// Layout
export { default as AdminLayout } from "../Layouts/AdminLayout.vue";
export { default as AuthLayout } from "../Layouts/AuthLayout.vue";

// shadcn-vue components
export { default as UiButton } from "../components/ui/Button.vue";
export { default as Input } from "../components/ui/Input.vue";
export { default as Label } from "../components/ui/Label.vue";
export { default as Card } from "../components/ui/Card.vue";
export { default as CardHeader } from "../components/ui/CardHeader.vue";
export { default as CardTitle } from "../components/ui/CardTitle.vue";
export { default as CardDescription } from "../components/ui/CardDescription.vue";
export { default as CardContent } from "../components/ui/CardContent.vue";
export { default as CardFooter } from "../components/ui/CardFooter.vue";
export { default as DropdownMenu } from "../components/ui/DropdownMenu.vue";
export { default as DropdownMenuTrigger } from "../components/ui/DropdownMenuTrigger.vue";
export { default as DropdownMenuContent } from "../components/ui/DropdownMenuContent.vue";
export { default as DropdownMenuItem } from "../components/ui/DropdownMenuItem.vue";
export { default as DropdownMenuSeparator } from "../components/ui/DropdownMenuSeparator.vue";
export { default as DropdownMenuLabel } from "../components/ui/DropdownMenuLabel.vue";
export { default as Avatar } from "../components/ui/Avatar.vue";
export { default as AvatarImage } from "../components/ui/AvatarImage.vue";
export { default as AvatarFallback } from "../components/ui/AvatarFallback.vue";
export { default as Separator } from "../components/ui/Separator.vue";
export { default as Badge } from "../components/ui/Badge.vue";
export { default as Dialog } from "../components/ui/Dialog.vue";
export { default as DialogTrigger } from "../components/ui/DialogTrigger.vue";
export { default as DialogContent } from "../components/ui/DialogContent.vue";
export { default as DialogHeader } from "../components/ui/DialogHeader.vue";
export { default as DialogFooter } from "../components/ui/DialogFooter.vue";
export { default as DialogTitle } from "../components/ui/DialogTitle.vue";
export { default as DialogDescription } from "../components/ui/DialogDescription.vue";
export { default as Alert } from "../components/ui/Alert.vue";
export { default as BadgeCell } from "../components/ui/BadgeCell.vue";
export { default as InputGroup } from "../components/ui/InputGroup.vue";
export { default as Kbd } from "../components/ui/Kbd.vue";
export { default as Sonner } from "../components/ui/Sonner.vue";
export { default as AlertTitle } from "../components/ui/AlertTitle.vue";
export { default as AlertDescription } from "../components/ui/AlertDescription.vue";
export { default as InputOtp } from "../components/ui/InputOtp.vue";
export { default as InputOtpGroup } from "../components/ui/InputOtpGroup.vue";
export { default as InputOtpSlot } from "../components/ui/InputOtpSlot.vue";
export { default as FormItem } from "../components/ui/FormItem.vue";
export { default as FormLabel } from "../components/ui/FormLabel.vue";
export { default as FormControl } from "../components/ui/FormControl.vue";
export { default as FormMessage } from "../components/ui/FormMessage.vue";
export { default as FormDescription } from "../components/ui/FormDescription.vue";

// Sheet
export { default as Sheet } from "../components/ui/sheet/Sheet.vue";
export { default as SheetClose } from "../components/ui/sheet/SheetClose.vue";
export { default as SheetContent } from "../components/ui/sheet/SheetContent.vue";
export { default as SheetDescription } from "../components/ui/sheet/SheetDescription.vue";
export { default as SheetFooter } from "../components/ui/sheet/SheetFooter.vue";
export { default as SheetHeader } from "../components/ui/sheet/SheetHeader.vue";
export { default as SheetTitle } from "../components/ui/sheet/SheetTitle.vue";
export { default as SheetTrigger } from "../components/ui/sheet/SheetTrigger.vue";

// Select
export { default as Select } from "../components/ui/Select.vue";
export { default as SelectTrigger } from "../components/ui/SelectTrigger.vue";
export { default as SelectValue } from "../components/ui/SelectValue.vue";
export { default as SelectContent } from "../components/ui/SelectContent.vue";
export { default as SelectItem } from "../components/ui/SelectItem.vue";
export { default as SelectItemText } from "../components/ui/SelectItemText.vue";
export { default as SelectGroup } from "../components/ui/SelectGroup.vue";
export { default as SelectLabel } from "../components/ui/SelectLabel.vue";
export { default as SelectSeparator } from "../components/ui/SelectSeparator.vue";
export { default as SelectScrollUpButton } from "../components/ui/SelectScrollUpButton.vue";
export { default as SelectScrollDownButton } from "../components/ui/SelectScrollDownButton.vue";

// Popover
export { default as Popover } from "../components/ui/Popover.vue";
export { default as PopoverTrigger } from "../components/ui/PopoverTrigger.vue";
export { default as PopoverContent } from "../components/ui/PopoverContent.vue";
export { default as PopoverAnchor } from "../components/ui/PopoverAnchor.vue";

// NativeSelect
export { default as NativeSelect } from "../components/ui/NativeSelect.vue";
export { default as NativeSelectOption } from "../components/ui/NativeSelectOption.vue";

// ContextMenu
export { default as ContextMenu } from "../components/ui/context-menu/ContextMenu.vue";
export { default as ContextMenuTrigger } from "../components/ui/context-menu/ContextMenuTrigger.vue";
export { default as ContextMenuContent } from "../components/ui/context-menu/ContextMenuContent.vue";
export { default as ContextMenuItem } from "../components/ui/context-menu/ContextMenuItem.vue";
export { default as ContextMenuSeparator } from "../components/ui/context-menu/ContextMenuSeparator.vue";
export { default as ContextMenuLabel } from "../components/ui/context-menu/ContextMenuLabel.vue";

// Calendar
export {
  Calendar,
  CalendarCell,
  CalendarCellTrigger,
  CalendarGrid,
  CalendarGridBody,
  CalendarGridHead,
  CalendarGridRow,
  CalendarHeadCell,
  CalendarHeader,
  CalendarHeading,
  CalendarNextButton,
  CalendarPrevButton,
} from "../components/ui/calendar";

// Skeleton
export { default as Skeleton } from "../components/ui/Skeleton.vue";

// Switch
export { default as Switch } from "../components/ui/Switch.vue";

// RadioGroup (used by core's FieldRadioInput; also useful for any module form)
export { default as RadioGroup } from "../components/ui/RadioGroup.vue";
export { default as RadioGroupItem } from "../components/ui/RadioGroupItem.vue";

// Tabs
export { default as Tabs } from "../components/ui/Tabs.vue";
export { default as TabsList } from "../components/ui/TabsList.vue";
export { default as TabsTrigger } from "../components/ui/TabsTrigger.vue";
export { default as TabsContent } from "../components/ui/TabsContent.vue";

// Sidebar
export { default as Sidebar } from "../components/ui/sidebar/Sidebar.vue";
export { default as SidebarContent } from "../components/ui/sidebar/SidebarContent.vue";
export { default as SidebarFooter } from "../components/ui/sidebar/SidebarFooter.vue";
export { default as SidebarGroup } from "../components/ui/sidebar/SidebarGroup.vue";
export { default as SidebarGroupContent } from "../components/ui/sidebar/SidebarGroupContent.vue";
export { default as SidebarGroupLabel } from "../components/ui/sidebar/SidebarGroupLabel.vue";
export { default as SidebarHeader } from "../components/ui/sidebar/SidebarHeader.vue";
export { default as SidebarInset } from "../components/ui/sidebar/SidebarInset.vue";
export { default as SidebarMenu } from "../components/ui/sidebar/SidebarMenu.vue";
export { default as SidebarMenuButton } from "../components/ui/sidebar/SidebarMenuButton.vue";
export { default as SidebarMenuItem } from "../components/ui/sidebar/SidebarMenuItem.vue";
export { default as SidebarMenuSub } from "../components/ui/sidebar/SidebarMenuSub.vue";
export { default as SidebarMenuSubButton } from "../components/ui/sidebar/SidebarMenuSubButton.vue";
export { default as SidebarMenuSubItem } from "../components/ui/sidebar/SidebarMenuSubItem.vue";
export { default as SidebarProvider } from "../components/ui/sidebar/SidebarProvider.vue";
export { default as SidebarSeparator } from "../components/ui/sidebar/SidebarSeparator.vue";
export { default as SidebarTrigger } from "../components/ui/sidebar/SidebarTrigger.vue";
export { default as SidebarGroupAction } from "../components/ui/sidebar/SidebarGroupAction.vue";
export { default as SidebarInput } from "../components/ui/sidebar/SidebarInput.vue";
export { default as SidebarMenuAction } from "../components/ui/sidebar/SidebarMenuAction.vue";
export { default as SidebarMenuBadge } from "../components/ui/sidebar/SidebarMenuBadge.vue";
export { default as SidebarMenuSkeleton } from "../components/ui/sidebar/SidebarMenuSkeleton.vue";

// Field components
export { default as FieldTextInput } from "../components/fields/TextInput.vue";
export { default as FieldEmailInput } from "../components/fields/EmailInput.vue";
export { default as FieldTelInput } from "../components/fields/TelInput.vue";
export { default as FieldUrlInput } from "../components/fields/UrlInput.vue";
export { default as FieldNumberInput } from "../components/fields/NumberInput.vue";
export { default as FieldPasswordInput } from "../components/fields/PasswordInput.vue";
export { default as FieldTextareaInput } from "../components/fields/TextareaInput.vue";
export { default as FieldSelectInput } from "../components/fields/SelectInput.vue";
export { default as FieldRadioInput } from "../components/fields/RadioInput.vue";
export { default as FieldCheckboxInput } from "../components/fields/CheckboxInput.vue";
export { default as FieldToggleInput } from "../components/fields/ToggleInput.vue";
export { default as FieldHiddenInput } from "../components/fields/HiddenInput.vue";
export { default as FieldDatepickerInput } from "../components/fields/DatepickerInput.vue";
export { default as FieldMfaSettings } from "../components/fields/MfaSettings.vue";
export { default as FieldWysiwygInput } from "../components/fields/WysiwygInput.vue";
export { default as FieldRelatedInput } from "../components/fields/RelatedInput.vue";
export { default as FieldRepeaterInput } from "../components/fields/RepeaterInput.vue";
export { default as FieldNestedResourceEditor } from "../components/fields/NestedResourceEditor.vue";
export { default as NestedResourceSheet } from "../components/fields/NestedResourceSheet.vue";
export type { FieldDefinition } from "../components/fields/types";

// Widget components
export { default as StatsWidget } from "../components/widgets/StatsWidget.vue";
export { default as CounterWidget } from "../components/widgets/CounterWidget.vue";
export { default as TextWidget } from "../components/widgets/TextWidget.vue";
export { default as ChartWidget } from "../components/widgets/ChartWidget.vue";
export { default as SystemInfoWidget } from "../components/widgets/SystemInfoWidget.vue";

// Icons (re-exported so external packages don't need lucide-vue-next directly)
export { Settings2, FolderOpen, Upload, File } from "lucide-vue-next";

// Layout components
export { default as PageHeader } from "../components/PageHeader.vue";
export { default as Breadcrumbs } from "../components/Breadcrumbs.vue";
export { default as HorizontalTabNavigation } from "../components/HorizontalTabNavigation.vue";
export { default as ContextNavigation } from "../components/ContextNavigation.vue";
export { default as FormActionBar } from "../components/FormActionBar.vue";
export { default as FormSection } from "../components/FormSection.vue";

// Dynamic field resolver
export { default as DynamicField } from "../components/DynamicField.vue";

// Command palette
export { default as CommandPalette } from "../components/CommandPalette.vue";

// Search
export { default as SearchBar } from "../components/SearchBar.vue";

// Pagination
export { default as Pagination } from "../components/Pagination.vue";

// Composables
export { useBuilderPrefix } from "../composables/useBuilderPrefix";
export { useBuilderRoutes } from "../composables/useBuilderRoutes";
export type { BuilderRoutes } from "../composables/useBuilderRoutes";
export { useNavigation } from "../composables/useNavigation";
export { useFlashToast } from "../composables/useFlashToast";
export { useValidationErrorToast } from "../composables/useValidationErrorToast";
export { useTableState } from "../composables/useTableState";
export type { TableState } from "../composables/useTableState";
export { useBulkSelection } from "../composables/useBulkSelection";
export type { BulkSelectionState } from "../composables/useBulkSelection";
export { useColumnVisibility } from "../composables/useColumnVisibility";
export type { ColumnVisibilityState } from "../composables/useColumnVisibility";
export { useCsrfToken } from "../composables/useCsrfToken";
export { useTranslations } from "../composables/useTranslations";
export { useBreadcrumbs } from "../composables/useBreadcrumbs";
export type { Crumb, BreadcrumbsState } from "../composables/useBreadcrumbs";
export { useBulkEdit } from "../composables/useBulkEdit";
export type { BulkEditState } from "../composables/useBulkEdit";

// Utilities
export { cn } from "../lib/utils";

// Registry
export { registry } from "../registry";
export type { NavigationItem, ModuleInfo } from "../registry";

// Shared types
export type {
  Language,
  Column,
  Filter,
  Paginator,
  PaginationLink,
  BulkAction,
  RowAction,
  ResourceDefinition,
} from "../types";

// Resource index components
export { default as ResourceIndexToolbar } from "../components/ResourceIndexToolbar.vue";
export { default as BulkEditSheet } from "../components/BulkEditSheet.vue";

// Revision
export { default as RevisionDiffTable } from "../components/RevisionDiffTable.vue";
