@fabio.caffarello/react-design-system 3.8.0 → 3.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/dist/granular/index.js +445 -0
- package/dist/granular/index.js.map +1 -0
- package/dist/granular/ui/components/Accordion/Accordion.js +105 -0
- package/dist/granular/ui/components/Accordion/Accordion.js.map +1 -0
- package/dist/granular/ui/components/Autocomplete/Autocomplete.js +133 -0
- package/dist/granular/ui/components/Autocomplete/Autocomplete.js.map +1 -0
- package/dist/granular/ui/components/Autocomplete/AutocompleteList.js +119 -0
- package/dist/granular/ui/components/Autocomplete/AutocompleteList.js.map +1 -0
- package/dist/granular/ui/components/Autocomplete/AutocompleteOption.js +42 -0
- package/dist/granular/ui/components/Autocomplete/AutocompleteOption.js.map +1 -0
- package/dist/granular/ui/components/Breadcrumb/Breadcrumb.js +100 -0
- package/dist/granular/ui/components/Breadcrumb/Breadcrumb.js.map +1 -0
- package/dist/granular/ui/components/Card/Card.js +113 -0
- package/dist/granular/ui/components/Card/Card.js.map +1 -0
- package/dist/granular/ui/components/Card/CardActions.js +51 -0
- package/dist/granular/ui/components/Card/CardActions.js.map +1 -0
- package/dist/granular/ui/components/Card/CardBody.js +32 -0
- package/dist/granular/ui/components/Card/CardBody.js.map +1 -0
- package/dist/granular/ui/components/Card/CardHeader.js +47 -0
- package/dist/granular/ui/components/Card/CardHeader.js.map +1 -0
- package/dist/granular/ui/components/Card/CardSubtitle.js +38 -0
- package/dist/granular/ui/components/Card/CardSubtitle.js.map +1 -0
- package/dist/granular/ui/components/Card/CardTitle.js +61 -0
- package/dist/granular/ui/components/Card/CardTitle.js.map +1 -0
- package/dist/granular/ui/components/ColorPicker/ColorPicker.js +250 -0
- package/dist/granular/ui/components/ColorPicker/ColorPicker.js.map +1 -0
- package/dist/granular/ui/components/CommandPalette/CommandPalette.js +274 -0
- package/dist/granular/ui/components/CommandPalette/CommandPalette.js.map +1 -0
- package/dist/granular/ui/components/DashboardLayout/DashboardLayout.js +37 -0
- package/dist/granular/ui/components/DashboardLayout/DashboardLayout.js.map +1 -0
- package/dist/granular/ui/components/DataGrid/DataGrid.js +155 -0
- package/dist/granular/ui/components/DataGrid/DataGrid.js.map +1 -0
- package/dist/granular/ui/components/DataTablePattern/DataTablePattern.js +113 -0
- package/dist/granular/ui/components/DataTablePattern/DataTablePattern.js.map +1 -0
- package/dist/granular/ui/components/DatePicker/DatePicker.js +126 -0
- package/dist/granular/ui/components/DatePicker/DatePicker.js.map +1 -0
- package/dist/granular/ui/components/DatePicker/DatePickerCalendar.js +294 -0
- package/dist/granular/ui/components/DatePicker/DatePickerCalendar.js.map +1 -0
- package/dist/granular/ui/components/DatePicker/DatePickerContext.js +16 -0
- package/dist/granular/ui/components/DatePicker/DatePickerContext.js.map +1 -0
- package/dist/granular/ui/components/DatePicker/DatePickerInput.js +119 -0
- package/dist/granular/ui/components/DatePicker/DatePickerInput.js.map +1 -0
- package/dist/granular/ui/components/DatePicker/DatePickerProvider.js +47 -0
- package/dist/granular/ui/components/DatePicker/DatePickerProvider.js.map +1 -0
- package/dist/granular/ui/components/Dialog/AlertDialog.js +48 -0
- package/dist/granular/ui/components/Dialog/AlertDialog.js.map +1 -0
- package/dist/granular/ui/components/Dialog/Dialog.js +36 -0
- package/dist/granular/ui/components/Dialog/Dialog.js.map +1 -0
- package/dist/granular/ui/components/Dialog/DialogClose.js +34 -0
- package/dist/granular/ui/components/Dialog/DialogClose.js.map +1 -0
- package/dist/granular/ui/components/Dialog/DialogContent.js +114 -0
- package/dist/granular/ui/components/Dialog/DialogContent.js.map +1 -0
- package/dist/granular/ui/components/Dialog/DialogDescription.js +51 -0
- package/dist/granular/ui/components/Dialog/DialogDescription.js.map +1 -0
- package/dist/granular/ui/components/Dialog/DialogFooter.js +45 -0
- package/dist/granular/ui/components/Dialog/DialogFooter.js.map +1 -0
- package/dist/granular/ui/components/Dialog/DialogHeader.js +45 -0
- package/dist/granular/ui/components/Dialog/DialogHeader.js.map +1 -0
- package/dist/granular/ui/components/Dialog/DialogTitle.js +53 -0
- package/dist/granular/ui/components/Dialog/DialogTitle.js.map +1 -0
- package/dist/granular/ui/components/Dialog/DialogTrigger.js +28 -0
- package/dist/granular/ui/components/Dialog/DialogTrigger.js.map +1 -0
- package/dist/granular/ui/components/Drawer/Drawer.js +47 -0
- package/dist/granular/ui/components/Drawer/Drawer.js.map +1 -0
- package/dist/granular/ui/components/Drawer/DrawerContent.js +140 -0
- package/dist/granular/ui/components/Drawer/DrawerContent.js.map +1 -0
- package/dist/granular/ui/components/Drawer/DrawerContext.js +21 -0
- package/dist/granular/ui/components/Drawer/DrawerContext.js.map +1 -0
- package/dist/granular/ui/components/Drawer/DrawerFooter.js +53 -0
- package/dist/granular/ui/components/Drawer/DrawerFooter.js.map +1 -0
- package/dist/granular/ui/components/Drawer/DrawerHeader.js +50 -0
- package/dist/granular/ui/components/Drawer/DrawerHeader.js.map +1 -0
- package/dist/granular/ui/components/Dropdown/Dropdown.js +243 -0
- package/dist/granular/ui/components/Dropdown/Dropdown.js.map +1 -0
- package/dist/granular/ui/components/EmptyState/EmptyState.js +102 -0
- package/dist/granular/ui/components/EmptyState/EmptyState.js.map +1 -0
- package/dist/granular/ui/components/FileUpload/FileUpload.js +342 -0
- package/dist/granular/ui/components/FileUpload/FileUpload.js.map +1 -0
- package/dist/granular/ui/components/Form/Form.js +184 -0
- package/dist/granular/ui/components/Form/Form.js.map +1 -0
- package/dist/granular/ui/components/Form/FormContext.js +19 -0
- package/dist/granular/ui/components/Form/FormContext.js.map +1 -0
- package/dist/granular/ui/components/Form/FormField.js +66 -0
- package/dist/granular/ui/components/Form/FormField.js.map +1 -0
- package/dist/granular/ui/components/Form/FormProvider.js +17 -0
- package/dist/granular/ui/components/Form/FormProvider.js.map +1 -0
- package/dist/granular/ui/components/Form/useFormFieldArray.js +29 -0
- package/dist/granular/ui/components/Form/useFormFieldArray.js.map +1 -0
- package/dist/granular/ui/components/FormWizardPattern/FormWizardPattern.js +121 -0
- package/dist/granular/ui/components/FormWizardPattern/FormWizardPattern.js.map +1 -0
- package/dist/granular/ui/components/Header/Header.js +98 -0
- package/dist/granular/ui/components/Header/Header.js.map +1 -0
- package/dist/granular/ui/components/Header/components/HeaderActions.js +21 -0
- package/dist/granular/ui/components/Header/components/HeaderActions.js.map +1 -0
- package/dist/granular/ui/components/Header/components/HeaderHamburger.js +31 -0
- package/dist/granular/ui/components/Header/components/HeaderHamburger.js.map +1 -0
- package/dist/granular/ui/components/Header/components/HeaderLogo.js +50 -0
- package/dist/granular/ui/components/Header/components/HeaderLogo.js.map +1 -0
- package/dist/granular/ui/components/Header/components/HeaderMobileMenu.js +38 -0
- package/dist/granular/ui/components/Header/components/HeaderMobileMenu.js.map +1 -0
- package/dist/granular/ui/components/Header/components/HeaderNavigation.js +27 -0
- package/dist/granular/ui/components/Header/components/HeaderNavigation.js.map +1 -0
- package/dist/granular/ui/components/Header/contexts/HeaderContext.js +49 -0
- package/dist/granular/ui/components/Header/contexts/HeaderContext.js.map +1 -0
- package/dist/granular/ui/components/LoginBox/LoginBox.js +84 -0
- package/dist/granular/ui/components/LoginBox/LoginBox.js.map +1 -0
- package/dist/granular/ui/components/Menu/Menu.js +45 -0
- package/dist/granular/ui/components/Menu/Menu.js.map +1 -0
- package/dist/granular/ui/components/Menu/MenuContent.js +94 -0
- package/dist/granular/ui/components/Menu/MenuContent.js.map +1 -0
- package/dist/granular/ui/components/Menu/MenuContext.js +21 -0
- package/dist/granular/ui/components/Menu/MenuContext.js.map +1 -0
- package/dist/granular/ui/components/Menu/MenuItem.js +93 -0
- package/dist/granular/ui/components/Menu/MenuItem.js.map +1 -0
- package/dist/granular/ui/components/Menu/MenuSeparator.js +46 -0
- package/dist/granular/ui/components/Menu/MenuSeparator.js.map +1 -0
- package/dist/granular/ui/components/Menu/MenuTrigger.js +71 -0
- package/dist/granular/ui/components/Menu/MenuTrigger.js.map +1 -0
- package/dist/granular/ui/components/Modal/Modal.js +171 -0
- package/dist/granular/ui/components/Modal/Modal.js.map +1 -0
- package/dist/granular/ui/components/MultiSelect/MultiSelect.js +193 -0
- package/dist/granular/ui/components/MultiSelect/MultiSelect.js.map +1 -0
- package/dist/granular/ui/components/Navigation/Navigation.js +141 -0
- package/dist/granular/ui/components/Navigation/Navigation.js.map +1 -0
- package/dist/granular/ui/components/PageHeader/PageHeader.js +95 -0
- package/dist/granular/ui/components/PageHeader/PageHeader.js.map +1 -0
- package/dist/granular/ui/components/Pagination/Pagination.js +156 -0
- package/dist/granular/ui/components/Pagination/Pagination.js.map +1 -0
- package/dist/granular/ui/components/Popover/Popover.js +171 -0
- package/dist/granular/ui/components/Popover/Popover.js.map +1 -0
- package/dist/granular/ui/components/Rating/Rating.js +110 -0
- package/dist/granular/ui/components/Rating/Rating.js.map +1 -0
- package/dist/granular/ui/components/SearchAndFilterPattern/SearchAndFilterPattern.js +120 -0
- package/dist/granular/ui/components/SearchAndFilterPattern/SearchAndFilterPattern.js.map +1 -0
- package/dist/granular/ui/components/SearchInput/SearchInput.js +103 -0
- package/dist/granular/ui/components/SearchInput/SearchInput.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/SideNavbar.js +143 -0
- package/dist/granular/ui/components/SideNavbar/SideNavbar.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/components/Navbar/Navbar.js +173 -0
- package/dist/granular/ui/components/SideNavbar/components/Navbar/Navbar.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarGroup.js +87 -0
- package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarGroup.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarItem.js +242 -0
- package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarItem.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarSeparator.js +66 -0
- package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarSeparator.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarToggle.js +108 -0
- package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarToggle.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/components/SideNavbarBackdrop.js +63 -0
- package/dist/granular/ui/components/SideNavbar/components/SideNavbarBackdrop.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/components/SideNavbarResizeHandle.js +113 -0
- package/dist/granular/ui/components/SideNavbar/components/SideNavbarResizeHandle.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/components/SideNavbarRoot.js +150 -0
- package/dist/granular/ui/components/SideNavbar/components/SideNavbarRoot.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/components/SideNavbarToggle.js +197 -0
- package/dist/granular/ui/components/SideNavbar/components/SideNavbarToggle.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/components/Sidebar/Sidebar.js +108 -0
- package/dist/granular/ui/components/SideNavbar/components/Sidebar/Sidebar.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarContent.js +71 -0
- package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarContent.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarFooter.js +64 -0
- package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarFooter.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarGroup.js +141 -0
- package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarGroup.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarHeader.js +90 -0
- package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarHeader.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarSlot.js +12 -0
- package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarSlot.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarSlotContent.js +13 -0
- package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarSlotContent.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/contexts/NavbarContext.js +20 -0
- package/dist/granular/ui/components/SideNavbar/contexts/NavbarContext.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarConfigContext.js +37 -0
- package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarConfigContext.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarStateContext.js +20 -0
- package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarStateContext.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarThemeContext.js +28 -0
- package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarThemeContext.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarToggleContext.js +19 -0
- package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarToggleContext.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/contexts/SidebarContext.js +20 -0
- package/dist/granular/ui/components/SideNavbar/contexts/SidebarContext.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/contexts/SidebarSlotContext.js +22 -0
- package/dist/granular/ui/components/SideNavbar/contexts/SidebarSlotContext.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/hooks/useFocusManagement.js +43 -0
- package/dist/granular/ui/components/SideNavbar/hooks/useFocusManagement.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/hooks/useGroupState.js +59 -0
- package/dist/granular/ui/components/SideNavbar/hooks/useGroupState.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/hooks/useKeyboardShortcut.js +34 -0
- package/dist/granular/ui/components/SideNavbar/hooks/useKeyboardShortcut.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/hooks/useResize.js +58 -0
- package/dist/granular/ui/components/SideNavbar/hooks/useResize.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/hooks/useResponsiveSidebar.js +35 -0
- package/dist/granular/ui/components/SideNavbar/hooks/useResponsiveSidebar.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/hooks/useSideNavbar.js +21 -0
- package/dist/granular/ui/components/SideNavbar/hooks/useSideNavbar.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/hooks/useSideNavbarContent.js +19 -0
- package/dist/granular/ui/components/SideNavbar/hooks/useSideNavbarContent.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/hooks/useSideNavbarNavigation.js +21 -0
- package/dist/granular/ui/components/SideNavbar/hooks/useSideNavbarNavigation.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/providers/SideNavbarConfigProvider.js +61 -0
- package/dist/granular/ui/components/SideNavbar/providers/SideNavbarConfigProvider.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/providers/SideNavbarProvider.js +82 -0
- package/dist/granular/ui/components/SideNavbar/providers/SideNavbarProvider.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/providers/SideNavbarStateProvider.js +165 -0
- package/dist/granular/ui/components/SideNavbar/providers/SideNavbarStateProvider.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/providers/SideNavbarThemeProvider.js +34 -0
- package/dist/granular/ui/components/SideNavbar/providers/SideNavbarThemeProvider.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/providers/SidebarSlotProvider.js +28 -0
- package/dist/granular/ui/components/SideNavbar/providers/SidebarSlotProvider.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/utils/parseKeyboardShortcut.js +60 -0
- package/dist/granular/ui/components/SideNavbar/utils/parseKeyboardShortcut.js.map +1 -0
- package/dist/granular/ui/components/SideNavbar/utils/parseWidth.js +19 -0
- package/dist/granular/ui/components/SideNavbar/utils/parseWidth.js.map +1 -0
- package/dist/granular/ui/components/Stat/Stat.js +84 -0
- package/dist/granular/ui/components/Stat/Stat.js.map +1 -0
- package/dist/granular/ui/components/Stat/StatGroup.js +61 -0
- package/dist/granular/ui/components/Stat/StatGroup.js.map +1 -0
- package/dist/granular/ui/components/Stepper/Stepper.js +248 -0
- package/dist/granular/ui/components/Stepper/Stepper.js.map +1 -0
- package/dist/granular/ui/components/Table/Table.js +162 -0
- package/dist/granular/ui/components/Table/Table.js.map +1 -0
- package/dist/granular/ui/components/Table/TableActions/TableActions.js +67 -0
- package/dist/granular/ui/components/Table/TableActions/TableActions.js.map +1 -0
- package/dist/granular/ui/components/Table/TableActions.js +44 -0
- package/dist/granular/ui/components/Table/TableActions.js.map +1 -0
- package/dist/granular/ui/components/Table/TableBody.js +134 -0
- package/dist/granular/ui/components/Table/TableBody.js.map +1 -0
- package/dist/granular/ui/components/Table/TableCell.js +40 -0
- package/dist/granular/ui/components/Table/TableCell.js.map +1 -0
- package/dist/granular/ui/components/Table/TableContext.js +19 -0
- package/dist/granular/ui/components/Table/TableContext.js.map +1 -0
- package/dist/granular/ui/components/Table/TableEmptyState.js +62 -0
- package/dist/granular/ui/components/Table/TableEmptyState.js.map +1 -0
- package/dist/granular/ui/components/Table/TableFilters/TableFilters.js +189 -0
- package/dist/granular/ui/components/Table/TableFilters/TableFilters.js.map +1 -0
- package/dist/granular/ui/components/Table/TableFilters.js +48 -0
- package/dist/granular/ui/components/Table/TableFilters.js.map +1 -0
- package/dist/granular/ui/components/Table/TableHeader.js +45 -0
- package/dist/granular/ui/components/Table/TableHeader.js.map +1 -0
- package/dist/granular/ui/components/Table/TableHeaderCell.js +117 -0
- package/dist/granular/ui/components/Table/TableHeaderCell.js.map +1 -0
- package/dist/granular/ui/components/Table/TableHeaderRow.js +89 -0
- package/dist/granular/ui/components/Table/TableHeaderRow.js.map +1 -0
- package/dist/granular/ui/components/Table/TablePagination/TablePagination.js +216 -0
- package/dist/granular/ui/components/Table/TablePagination/TablePagination.js.map +1 -0
- package/dist/granular/ui/components/Table/TablePagination.js +56 -0
- package/dist/granular/ui/components/Table/TablePagination.js.map +1 -0
- package/dist/granular/ui/components/Table/TableProvider.js +244 -0
- package/dist/granular/ui/components/Table/TableProvider.js.map +1 -0
- package/dist/granular/ui/components/Table/TableRow.js +95 -0
- package/dist/granular/ui/components/Table/TableRow.js.map +1 -0
- package/dist/granular/ui/components/Table/useColumnResizing.js +71 -0
- package/dist/granular/ui/components/Table/useColumnResizing.js.map +1 -0
- package/dist/granular/ui/components/Table/useVirtualScrolling.js +50 -0
- package/dist/granular/ui/components/Table/useVirtualScrolling.js.map +1 -0
- package/dist/granular/ui/components/Tabs/Tabs.js +39 -0
- package/dist/granular/ui/components/Tabs/Tabs.js.map +1 -0
- package/dist/granular/ui/components/Tabs/TabsContent.js +59 -0
- package/dist/granular/ui/components/Tabs/TabsContent.js.map +1 -0
- package/dist/granular/ui/components/Tabs/TabsContext.js +18 -0
- package/dist/granular/ui/components/Tabs/TabsContext.js.map +1 -0
- package/dist/granular/ui/components/Tabs/TabsList.js +84 -0
- package/dist/granular/ui/components/Tabs/TabsList.js.map +1 -0
- package/dist/granular/ui/components/Tabs/TabsProvider.js +31 -0
- package/dist/granular/ui/components/Tabs/TabsProvider.js.map +1 -0
- package/dist/granular/ui/components/Tabs/TabsTrigger.js +103 -0
- package/dist/granular/ui/components/Tabs/TabsTrigger.js.map +1 -0
- package/dist/granular/ui/components/TimePicker/TimePicker.js +216 -0
- package/dist/granular/ui/components/TimePicker/TimePicker.js.map +1 -0
- package/dist/granular/ui/components/Timeline/Timeline.js +152 -0
- package/dist/granular/ui/components/Timeline/Timeline.js.map +1 -0
- package/dist/granular/ui/components/Toast/Toast.js +159 -0
- package/dist/granular/ui/components/Toast/Toast.js.map +1 -0
- package/dist/granular/ui/components/Toast/ToastContainer.js +41 -0
- package/dist/granular/ui/components/Toast/ToastContainer.js.map +1 -0
- package/dist/granular/ui/components/Toast/useToast.js +64 -0
- package/dist/granular/ui/components/Toast/useToast.js.map +1 -0
- package/dist/granular/ui/hooks/createGenericContext.js +27 -0
- package/dist/granular/ui/hooks/createGenericContext.js.map +1 -0
- package/dist/granular/ui/hooks/focusable.js +14 -0
- package/dist/granular/ui/hooks/focusable.js.map +1 -0
- package/dist/granular/ui/hooks/useAutoFocus.js +23 -0
- package/dist/granular/ui/hooks/useAutoFocus.js.map +1 -0
- package/dist/granular/ui/hooks/useCollapsible.js +37 -0
- package/dist/granular/ui/hooks/useCollapsible.js.map +1 -0
- package/dist/granular/ui/hooks/useFocusRestore.js +20 -0
- package/dist/granular/ui/hooks/useFocusRestore.js.map +1 -0
- package/dist/granular/ui/hooks/useFocusTrap.js +31 -0
- package/dist/granular/ui/hooks/useFocusTrap.js.map +1 -0
- package/dist/granular/ui/hooks/useScrollSpy.js +23 -0
- package/dist/granular/ui/hooks/useScrollSpy.js.map +1 -0
- package/dist/granular/ui/layouts/Container/Container.js +73 -0
- package/dist/granular/ui/layouts/Container/Container.js.map +1 -0
- package/dist/granular/ui/layouts/Stack/Stack.js +79 -0
- package/dist/granular/ui/layouts/Stack/Stack.js.map +1 -0
- package/dist/granular/ui/primitives/Avatar/Avatar.js +122 -0
- package/dist/granular/ui/primitives/Avatar/Avatar.js.map +1 -0
- package/dist/granular/ui/primitives/Avatar/AvatarGroup.js +97 -0
- package/dist/granular/ui/primitives/Avatar/AvatarGroup.js.map +1 -0
- package/dist/granular/ui/primitives/Badge/Badge.js +212 -0
- package/dist/granular/ui/primitives/Badge/Badge.js.map +1 -0
- package/dist/granular/ui/primitives/Button/Button.js +288 -0
- package/dist/granular/ui/primitives/Button/Button.js.map +1 -0
- package/dist/granular/ui/primitives/Checkbox/Checkbox.js +129 -0
- package/dist/granular/ui/primitives/Checkbox/Checkbox.js.map +1 -0
- package/dist/granular/ui/primitives/Chip/Chip.js +206 -0
- package/dist/granular/ui/primitives/Chip/Chip.js.map +1 -0
- package/dist/granular/ui/primitives/Collapsible/Collapsible.js +115 -0
- package/dist/granular/ui/primitives/Collapsible/Collapsible.js.map +1 -0
- package/dist/granular/ui/primitives/ErrorMessage/ErrorMessage.js +54 -0
- package/dist/granular/ui/primitives/ErrorMessage/ErrorMessage.js.map +1 -0
- package/dist/granular/ui/primitives/Info/Info.js +57 -0
- package/dist/granular/ui/primitives/Info/Info.js.map +1 -0
- package/dist/granular/ui/primitives/Input/Input.js +351 -0
- package/dist/granular/ui/primitives/Input/Input.js.map +1 -0
- package/dist/granular/ui/primitives/Label/Label.js +61 -0
- package/dist/granular/ui/primitives/Label/Label.js.map +1 -0
- package/dist/granular/ui/primitives/NavLink/NavLink.js +229 -0
- package/dist/granular/ui/primitives/NavLink/NavLink.js.map +1 -0
- package/dist/granular/ui/primitives/NavLink/hooks/useNavLink.js +15 -0
- package/dist/granular/ui/primitives/NavLink/hooks/useNavLink.js.map +1 -0
- package/dist/granular/ui/primitives/Progress/Progress.js +182 -0
- package/dist/granular/ui/primitives/Progress/Progress.js.map +1 -0
- package/dist/granular/ui/primitives/Radio/Radio.js +118 -0
- package/dist/granular/ui/primitives/Radio/Radio.js.map +1 -0
- package/dist/granular/ui/primitives/Select/Select.js +210 -0
- package/dist/granular/ui/primitives/Select/Select.js.map +1 -0
- package/dist/granular/ui/primitives/Separator/Separator.js +69 -0
- package/dist/granular/ui/primitives/Separator/Separator.js.map +1 -0
- package/dist/granular/ui/primitives/Skeleton/Skeleton.js +87 -0
- package/dist/granular/ui/primitives/Skeleton/Skeleton.js.map +1 -0
- package/dist/granular/ui/primitives/Slider/Slider.js +291 -0
- package/dist/granular/ui/primitives/Slider/Slider.js.map +1 -0
- package/dist/granular/ui/primitives/Spinner/Spinner.js +95 -0
- package/dist/granular/ui/primitives/Spinner/Spinner.js.map +1 -0
- package/dist/granular/ui/primitives/Switch/Switch.js +212 -0
- package/dist/granular/ui/primitives/Switch/Switch.js.map +1 -0
- package/dist/granular/ui/primitives/Text/Text.js +118 -0
- package/dist/granular/ui/primitives/Text/Text.js.map +1 -0
- package/dist/granular/ui/primitives/Textarea/Textarea.js +129 -0
- package/dist/granular/ui/primitives/Textarea/Textarea.js.map +1 -0
- package/dist/granular/ui/primitives/Tooltip/Tooltip.js +227 -0
- package/dist/granular/ui/primitives/Tooltip/Tooltip.js.map +1 -0
- package/dist/granular/ui/providers/AppProvider.js +50 -0
- package/dist/granular/ui/providers/AppProvider.js.map +1 -0
- package/dist/granular/ui/providers/ConfigProvider.js +95 -0
- package/dist/granular/ui/providers/ConfigProvider.js.map +1 -0
- package/dist/granular/ui/providers/DialogContext.js +20 -0
- package/dist/granular/ui/providers/DialogContext.js.map +1 -0
- package/dist/granular/ui/providers/DialogProvider.js +32 -0
- package/dist/granular/ui/providers/DialogProvider.js.map +1 -0
- package/dist/granular/ui/providers/ThemeProvider.js +56 -0
- package/dist/granular/ui/providers/ThemeProvider.js.map +1 -0
- package/dist/granular/ui/providers/ToastContext.js +20 -0
- package/dist/granular/ui/providers/ToastContext.js.map +1 -0
- package/dist/granular/ui/providers/ToastProvider.js +47 -0
- package/dist/granular/ui/providers/ToastProvider.js.map +1 -0
- package/dist/granular/ui/providers/providers-bundle.js +23 -0
- package/dist/granular/ui/providers/providers-bundle.js.map +1 -0
- package/dist/granular/ui/tokens/animations.js +106 -0
- package/dist/granular/ui/tokens/animations.js.map +1 -0
- package/dist/granular/ui/tokens/borders.js +54 -0
- package/dist/granular/ui/tokens/borders.js.map +1 -0
- package/dist/granular/ui/tokens/breakpoints.js +43 -0
- package/dist/granular/ui/tokens/breakpoints.js.map +1 -0
- package/dist/granular/ui/tokens/colors/brand.js +67 -0
- package/dist/granular/ui/tokens/colors/brand.js.map +1 -0
- package/dist/granular/ui/tokens/colors/index.js +25 -0
- package/dist/granular/ui/tokens/colors/index.js.map +1 -0
- package/dist/granular/ui/tokens/colors/primitives.js +320 -0
- package/dist/granular/ui/tokens/colors/primitives.js.map +1 -0
- package/dist/granular/ui/tokens/colors/semantic.js +212 -0
- package/dist/granular/ui/tokens/colors/semantic.js.map +1 -0
- package/dist/granular/ui/tokens/colors/types.js +18 -0
- package/dist/granular/ui/tokens/colors/types.js.map +1 -0
- package/dist/granular/ui/tokens/colors/utils.js +131 -0
- package/dist/granular/ui/tokens/colors/utils.js.map +1 -0
- package/dist/granular/ui/tokens/opacity.js +59 -0
- package/dist/granular/ui/tokens/opacity.js.map +1 -0
- package/dist/granular/ui/tokens/radius.js +76 -0
- package/dist/granular/ui/tokens/radius.js.map +1 -0
- package/dist/granular/ui/tokens/shadows.js +63 -0
- package/dist/granular/ui/tokens/shadows.js.map +1 -0
- package/dist/granular/ui/tokens/sidebar.js +92 -0
- package/dist/granular/ui/tokens/sidebar.js.map +1 -0
- package/dist/granular/ui/tokens/spacing.js +143 -0
- package/dist/granular/ui/tokens/spacing.js.map +1 -0
- package/dist/granular/ui/tokens/switch.js +51 -0
- package/dist/granular/ui/tokens/switch.js.map +1 -0
- package/dist/granular/ui/tokens/typography.js +146 -0
- package/dist/granular/ui/tokens/typography.js.map +1 -0
- package/dist/granular/ui/tokens/z-index.js +79 -0
- package/dist/granular/ui/tokens/z-index.js.map +1 -0
- package/dist/granular/ui/utils/cn.js +10 -0
- package/dist/granular/ui/utils/cn.js.map +1 -0
- package/dist/granular/ui/utils/cva.js +14 -0
- package/dist/granular/ui/utils/cva.js.map +1 -0
- package/dist/granular/ui/utils/mergeRefs.js +11 -0
- package/dist/granular/ui/utils/mergeRefs.js.map +1 -0
- package/dist/granular/vite.svg +1 -0
- package/dist/index.cjs +37 -37
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1052 -1053
- package/dist/index.js.map +1 -1
- package/dist/server/index.cjs +23 -23
- package/dist/server/index.cjs.map +1 -1
- package/dist/server/index.js +858 -1193
- package/dist/server/index.js.map +1 -1
- package/package.json +9 -2
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
var v = Object.defineProperty, w = Object.defineProperties;
|
|
3
|
+
var R = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var o = Object.getOwnPropertySymbols;
|
|
5
|
+
var l = Object.prototype.hasOwnProperty, u = Object.prototype.propertyIsEnumerable;
|
|
6
|
+
var c = (e, r, t) => r in e ? v(e, r, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[r] = t, p = (e, r) => {
|
|
7
|
+
for (var t in r || (r = {}))
|
|
8
|
+
l.call(r, t) && c(e, t, r[t]);
|
|
9
|
+
if (o)
|
|
10
|
+
for (var t of o(r))
|
|
11
|
+
u.call(r, t) && c(e, t, r[t]);
|
|
12
|
+
return e;
|
|
13
|
+
}, d = (e, r) => w(e, R(r));
|
|
14
|
+
var f = (e, r) => {
|
|
15
|
+
var t = {};
|
|
16
|
+
for (var i in e)
|
|
17
|
+
l.call(e, i) && r.indexOf(i) < 0 && (t[i] = e[i]);
|
|
18
|
+
if (e != null && o)
|
|
19
|
+
for (var i of o(e))
|
|
20
|
+
r.indexOf(i) < 0 && u.call(e, i) && (t[i] = e[i]);
|
|
21
|
+
return t;
|
|
22
|
+
};
|
|
23
|
+
import { jsxs as z, jsx as b } from "react/jsx-runtime";
|
|
24
|
+
import { GripVertical as x } from "lucide-react";
|
|
25
|
+
import { useSideNavbarStateRequired as N } from "../contexts/SideNavbarStateContext.js";
|
|
26
|
+
import { useSideNavbarConfigRequired as $ } from "../contexts/SideNavbarConfigContext.js";
|
|
27
|
+
import { getRadiusClass as S } from "../../../tokens/radius.js";
|
|
28
|
+
function L(t) {
|
|
29
|
+
var i = t, {
|
|
30
|
+
className: e = ""
|
|
31
|
+
} = i, r = f(i, [
|
|
32
|
+
"className"
|
|
33
|
+
]);
|
|
34
|
+
const { currentWidth: n, setWidth: m, isResizing: s, startResize: g } = N(), { resizable: h } = $();
|
|
35
|
+
return h ? (
|
|
36
|
+
// micro-z: resize handle above sidebar border for grab affordance (see z-10 below)
|
|
37
|
+
/* @__PURE__ */ z(
|
|
38
|
+
"div",
|
|
39
|
+
d(p({
|
|
40
|
+
className: `
|
|
41
|
+
group
|
|
42
|
+
absolute
|
|
43
|
+
top-0
|
|
44
|
+
right-0
|
|
45
|
+
w-1
|
|
46
|
+
h-full
|
|
47
|
+
cursor-col-resize
|
|
48
|
+
hover:bg-surface-brand/50
|
|
49
|
+
active:bg-surface-brand-emphasis
|
|
50
|
+
transition-colors
|
|
51
|
+
duration-150
|
|
52
|
+
z-10
|
|
53
|
+
flex
|
|
54
|
+
items-center
|
|
55
|
+
justify-center
|
|
56
|
+
${s ? "bg-surface-brand-emphasis" : ""}
|
|
57
|
+
${e}
|
|
58
|
+
`,
|
|
59
|
+
onMouseDown: g,
|
|
60
|
+
role: "separator",
|
|
61
|
+
"aria-orientation": "vertical",
|
|
62
|
+
"aria-label": "Resize sidebar",
|
|
63
|
+
"aria-valuenow": n,
|
|
64
|
+
tabIndex: 0,
|
|
65
|
+
onKeyDown: (a) => {
|
|
66
|
+
if (a.key === "ArrowLeft" || a.key === "ArrowRight") {
|
|
67
|
+
a.preventDefault();
|
|
68
|
+
const y = a.key === "ArrowLeft" ? -10 : 10;
|
|
69
|
+
m(n + y);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}, r), {
|
|
73
|
+
children: [
|
|
74
|
+
/* @__PURE__ */ b(
|
|
75
|
+
"div",
|
|
76
|
+
{
|
|
77
|
+
className: `
|
|
78
|
+
w-0.5
|
|
79
|
+
h-8
|
|
80
|
+
bg-line-strong
|
|
81
|
+
${S("full")}
|
|
82
|
+
opacity-0
|
|
83
|
+
group-hover:opacity-100
|
|
84
|
+
transition-opacity
|
|
85
|
+
${s ? "opacity-100" : ""}
|
|
86
|
+
`
|
|
87
|
+
}
|
|
88
|
+
),
|
|
89
|
+
/* @__PURE__ */ b(
|
|
90
|
+
x,
|
|
91
|
+
{
|
|
92
|
+
className: `
|
|
93
|
+
h-4
|
|
94
|
+
w-4
|
|
95
|
+
text-fg-tertiary
|
|
96
|
+
opacity-0
|
|
97
|
+
group-hover:opacity-100
|
|
98
|
+
transition-opacity
|
|
99
|
+
absolute
|
|
100
|
+
${s ? "opacity-100" : ""}
|
|
101
|
+
`,
|
|
102
|
+
"aria-hidden": "true"
|
|
103
|
+
}
|
|
104
|
+
)
|
|
105
|
+
]
|
|
106
|
+
})
|
|
107
|
+
)
|
|
108
|
+
) : null;
|
|
109
|
+
}
|
|
110
|
+
export {
|
|
111
|
+
L as default
|
|
112
|
+
};
|
|
113
|
+
//# sourceMappingURL=SideNavbarResizeHandle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SideNavbarResizeHandle.js","sources":["../../../../../../src/ui/components/SideNavbar/components/SideNavbarResizeHandle.tsx"],"sourcesContent":["\"use client\";\n\nimport { type HTMLAttributes } from \"react\";\nimport { GripVertical } from \"lucide-react\";\nimport { useSideNavbarStateRequired } from \"../contexts/SideNavbarStateContext\";\nimport { useSideNavbarConfigRequired } from \"../contexts/SideNavbarConfigContext\";\nimport { getRadiusClass } from \"../../../tokens/radius\";\n\nexport type SideNavbarResizeHandleProps = HTMLAttributes<HTMLDivElement>;\n\n/**\n * SideNavbar Resize Handle Component\n *\n * Drag handle for resizing the sidebar width.\n * Uses context for state management - no props needed for resize configuration.\n *\n * @example\n * ```tsx\n * <SideNavbar resizable minWidth={200} maxWidth={600}>\n * <SideNavbar.ResizeHandle />\n * ...\n * </SideNavbar>\n * ```\n */\nexport default function SideNavbarResizeHandle({\n className = \"\",\n ...props\n}: SideNavbarResizeHandleProps) {\n const { currentWidth, setWidth, isResizing, startResize } =\n useSideNavbarStateRequired();\n const { resizable } = useSideNavbarConfigRequired();\n\n if (!resizable) {\n return null;\n }\n\n return (\n // micro-z: resize handle above sidebar border for grab affordance (see z-10 below)\n <div\n className={`\n group\n absolute\n top-0\n right-0\n w-1\n h-full\n cursor-col-resize\n hover:bg-surface-brand/50\n active:bg-surface-brand-emphasis\n transition-colors\n duration-150\n z-10\n flex\n items-center\n justify-center\n ${isResizing ? \"bg-surface-brand-emphasis\" : \"\"}\n ${className}\n `}\n onMouseDown={startResize}\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label=\"Resize sidebar\"\n aria-valuenow={currentWidth}\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === \"ArrowLeft\" || e.key === \"ArrowRight\") {\n e.preventDefault();\n const delta = e.key === \"ArrowLeft\" ? -10 : 10;\n setWidth(currentWidth + delta);\n }\n }}\n {...props}\n >\n <div\n className={`\n w-0.5\n h-8\n bg-line-strong\n ${getRadiusClass(\"full\")}\n opacity-0\n group-hover:opacity-100\n transition-opacity\n ${isResizing ? \"opacity-100\" : \"\"}\n `}\n />\n <GripVertical\n className={`\n h-4\n w-4\n text-fg-tertiary\n opacity-0\n group-hover:opacity-100\n transition-opacity\n absolute\n ${isResizing ? \"opacity-100\" : \"\"}\n `}\n aria-hidden=\"true\"\n />\n </div>\n );\n}\n"],"names":["SideNavbarResizeHandle","_a","_b","className","props","__objRest","currentWidth","setWidth","isResizing","startResize","useSideNavbarStateRequired","resizable","useSideNavbarConfigRequired","jsxs","__spreadProps","__spreadValues","e","delta","jsx","getRadiusClass","GripVertical"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,SAAwBA,EAAuBC,GAGf;AAHe,MAAAC,IAAAD,GAC7C;AAAA,eAAAE,IAAY;AAAA,MADiCD,GAE1CE,IAAAC,EAF0CH,GAE1C;AAAA,IADH;AAAA;AAGA,QAAM,EAAE,cAAAI,GAAc,UAAAC,GAAU,YAAAC,GAAY,aAAAC,EAAA,IAC1CC,EAAA,GACI,EAAE,WAAAC,EAAA,IAAcC,EAAA;AAEtB,SAAKD;AAAA;AAAA,IAMH,gBAAAE;AAAA,MAAC;AAAA,MAAAC,EAAAC,EAAA;AAAA,QACC,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAgBPP,IAAa,8BAA8B,EAAE;AAAA,UAC7CL,CAAS;AAAA;AAAA,QAEb,aAAaM;AAAA,QACb,MAAK;AAAA,QACL,oBAAiB;AAAA,QACjB,cAAW;AAAA,QACX,iBAAeH;AAAA,QACf,UAAU;AAAA,QACV,WAAW,CAACU,MAAM;AAChB,cAAIA,EAAE,QAAQ,eAAeA,EAAE,QAAQ,cAAc;AACnD,YAAAA,EAAE,eAAA;AACF,kBAAMC,IAAQD,EAAE,QAAQ,cAAc,MAAM;AAC5C,YAAAT,EAASD,IAAeW,CAAK;AAAA,UAC/B;AAAA,QACF;AAAA,SACIb,IAjCL;AAAA,QAmCC,UAAA;AAAA,UAAA,gBAAAc;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAW;AAAA;AAAA;AAAA;AAAA,YAIPC,EAAe,MAAM,CAAC;AAAA;AAAA;AAAA;AAAA,YAItBX,IAAa,gBAAgB,EAAE;AAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAGrC,gBAAAU;AAAA,YAACE;AAAA,YAAA;AAAA,cACC,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAQPZ,IAAa,gBAAgB,EAAE;AAAA;AAAA,cAEnC,eAAY;AAAA,YAAA;AAAA,UAAA;AAAA,QACd;AAAA,MAAA;AAAA,IAAA;AAAA,MAhEK;AAmEX;"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
var L = Object.defineProperty, Q = Object.defineProperties;
|
|
3
|
+
var X = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var u = Object.getOwnPropertySymbols;
|
|
5
|
+
var M = Object.prototype.hasOwnProperty, O = Object.prototype.propertyIsEnumerable;
|
|
6
|
+
var W = (e, o, i) => o in e ? L(e, o, { enumerable: !0, configurable: !0, writable: !0, value: i }) : e[o] = i, b = (e, o) => {
|
|
7
|
+
for (var i in o || (o = {}))
|
|
8
|
+
M.call(o, i) && W(e, i, o[i]);
|
|
9
|
+
if (u)
|
|
10
|
+
for (var i of u(o))
|
|
11
|
+
O.call(o, i) && W(e, i, o[i]);
|
|
12
|
+
return e;
|
|
13
|
+
}, P = (e, o) => Q(e, X(o));
|
|
14
|
+
var _ = (e, o) => {
|
|
15
|
+
var i = {};
|
|
16
|
+
for (var t in e)
|
|
17
|
+
M.call(e, t) && o.indexOf(t) < 0 && (i[t] = e[t]);
|
|
18
|
+
if (e != null && u)
|
|
19
|
+
for (var t of u(e))
|
|
20
|
+
o.indexOf(t) < 0 && O.call(e, t) && (i[t] = e[t]);
|
|
21
|
+
return i;
|
|
22
|
+
};
|
|
23
|
+
import { jsxs as E, Fragment as Y, jsx as v } from "react/jsx-runtime";
|
|
24
|
+
import { useState as ee, useEffect as oe, Children as V, isValidElement as k } from "react";
|
|
25
|
+
import { useSideNavbarStateRequired as ie } from "../contexts/SideNavbarStateContext.js";
|
|
26
|
+
import { useSideNavbarThemeRequired as te } from "../contexts/SideNavbarThemeContext.js";
|
|
27
|
+
import { useSideNavbarConfigRequired as re } from "../contexts/SideNavbarConfigContext.js";
|
|
28
|
+
import { useSideNavbarToggleContextRequired as ae } from "../contexts/SideNavbarToggleContext.js";
|
|
29
|
+
import { getShadowClass as ne } from "../../../tokens/shadows.js";
|
|
30
|
+
import { getZIndexClass as se } from "../../../tokens/z-index.js";
|
|
31
|
+
import le from "./SideNavbarResizeHandle.js";
|
|
32
|
+
import de from "./SideNavbarBackdrop.js";
|
|
33
|
+
import ce from "./SideNavbarToggle.js";
|
|
34
|
+
import { cn as fe } from "../../../utils/cn.js";
|
|
35
|
+
function $(e) {
|
|
36
|
+
return !k(e) || typeof e.type == "string" ? !1 : e.type.__SIDENAVBAR_KIND__ === "navbar";
|
|
37
|
+
}
|
|
38
|
+
function ue(e) {
|
|
39
|
+
let o, i, t = 0, c = !1;
|
|
40
|
+
for (const s of V.toArray(e)) {
|
|
41
|
+
if ($(s)) {
|
|
42
|
+
const { showMainToggle: r, mainTogglePosition: a } = s.props;
|
|
43
|
+
if (!(r !== void 0 || a !== void 0)) continue;
|
|
44
|
+
t++, t === 1 && (o = r, i = a);
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
if (!k(s)) continue;
|
|
48
|
+
const l = s.props;
|
|
49
|
+
if (l.children !== void 0)
|
|
50
|
+
for (const r of V.toArray(l.children)) {
|
|
51
|
+
if (!$(r)) continue;
|
|
52
|
+
const { showMainToggle: a, mainTogglePosition: f } = r.props;
|
|
53
|
+
if (a !== void 0 || f !== void 0) {
|
|
54
|
+
c = !0;
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
show: o,
|
|
61
|
+
position: i,
|
|
62
|
+
overrideCount: t,
|
|
63
|
+
wrappedNavbarWithOverride: c
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
const ve = {
|
|
67
|
+
default: "",
|
|
68
|
+
compact: "text-sm",
|
|
69
|
+
elevated: ne("lg"),
|
|
70
|
+
minimal: "border-0",
|
|
71
|
+
bordered: "border-2"
|
|
72
|
+
};
|
|
73
|
+
function Oe(s) {
|
|
74
|
+
var l = s, {
|
|
75
|
+
children: e,
|
|
76
|
+
className: o = "",
|
|
77
|
+
style: i,
|
|
78
|
+
"aria-label": t
|
|
79
|
+
} = l, c = _(l, [
|
|
80
|
+
"children",
|
|
81
|
+
"className",
|
|
82
|
+
"style",
|
|
83
|
+
"aria-label"
|
|
84
|
+
]);
|
|
85
|
+
var T, R;
|
|
86
|
+
const r = ie(), a = te(), f = re(), h = ae(), x = ue(e), q = (T = x.show) != null ? T : h.showMainToggle, A = (R = x.position) != null ? R : h.mainTogglePosition, {
|
|
87
|
+
collapsed: n,
|
|
88
|
+
setCollapsed: me,
|
|
89
|
+
currentWidth: D,
|
|
90
|
+
isResizing: I,
|
|
91
|
+
sidebarRef: z,
|
|
92
|
+
isMobile: B
|
|
93
|
+
} = r, {
|
|
94
|
+
variant: F,
|
|
95
|
+
navigationWidth: m,
|
|
96
|
+
contentWidth: p,
|
|
97
|
+
animationDuration: j,
|
|
98
|
+
animationEasing: H
|
|
99
|
+
} = a, { mode: d, resizable: w, mobileVariant: K, overlayBackdrop: U } = f, N = typeof m == "number" ? `${m}px` : m, Z = typeof p == "number" ? `${p}px` : p, S = d === "navigation" || n ? N : w ? `${D}px` : Z, [y, G] = ee(!1);
|
|
100
|
+
oe(() => {
|
|
101
|
+
G(!0);
|
|
102
|
+
}, []);
|
|
103
|
+
const C = B && K === "overlay", g = y && C, J = g ? `fixed left-0 top-0 ${se("fixed")}` : "relative";
|
|
104
|
+
return /* @__PURE__ */ E(Y, { children: [
|
|
105
|
+
y && C && U && !n && /* @__PURE__ */ v(de, {}),
|
|
106
|
+
/* @__PURE__ */ E(
|
|
107
|
+
"aside",
|
|
108
|
+
P(b({
|
|
109
|
+
ref: z,
|
|
110
|
+
id: "side-navbar-sidebar",
|
|
111
|
+
className: fe(
|
|
112
|
+
J,
|
|
113
|
+
"flex",
|
|
114
|
+
"h-full",
|
|
115
|
+
"overflow-visible",
|
|
116
|
+
ve[F],
|
|
117
|
+
g && n ? "-translate-x-full" : "translate-x-0",
|
|
118
|
+
o
|
|
119
|
+
),
|
|
120
|
+
style: b({
|
|
121
|
+
// Em desktop: sempre 'relative' para ficar no mesmo plano do conteúdo
|
|
122
|
+
// Em mobile overlay: 'fixed' para sobrepor o conteúdo
|
|
123
|
+
position: g ? "fixed" : "relative",
|
|
124
|
+
backgroundColor: "var(--color-surface-subtle)",
|
|
125
|
+
borderRight: "1px solid var(--color-line-default)",
|
|
126
|
+
width: S,
|
|
127
|
+
minWidth: S,
|
|
128
|
+
transitionProperty: I ? "none" : "width, min-width, transform",
|
|
129
|
+
transitionDuration: `${j}ms`,
|
|
130
|
+
transitionTimingFunction: H
|
|
131
|
+
}, i),
|
|
132
|
+
role: "complementary",
|
|
133
|
+
"aria-label": t || "Sidebar navigation",
|
|
134
|
+
"aria-expanded": d !== "navigation" ? !n : void 0,
|
|
135
|
+
"data-mode": d,
|
|
136
|
+
"data-collapsed": n
|
|
137
|
+
}, c), {
|
|
138
|
+
children: [
|
|
139
|
+
w && d !== "navigation" && !n && /* @__PURE__ */ v(le, {}),
|
|
140
|
+
q && d !== "navigation" && /* @__PURE__ */ v(ce, { position: A }),
|
|
141
|
+
/* @__PURE__ */ v("div", { className: "flex h-full w-full overflow-visible", children: e })
|
|
142
|
+
]
|
|
143
|
+
})
|
|
144
|
+
)
|
|
145
|
+
] });
|
|
146
|
+
}
|
|
147
|
+
export {
|
|
148
|
+
Oe as default
|
|
149
|
+
};
|
|
150
|
+
//# sourceMappingURL=SideNavbarRoot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SideNavbarRoot.js","sources":["../../../../../../src/ui/components/SideNavbar/components/SideNavbarRoot.tsx"],"sourcesContent":["\"use client\";\n\nimport React, {\n Children,\n isValidElement,\n useState,\n useEffect,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport { useSideNavbarStateRequired } from \"../contexts/SideNavbarStateContext\";\nimport { useSideNavbarThemeRequired } from \"../contexts/SideNavbarThemeContext\";\nimport { useSideNavbarConfigRequired } from \"../contexts/SideNavbarConfigContext\";\nimport { useSideNavbarToggleContextRequired } from \"../contexts/SideNavbarToggleContext\";\nimport { cn } from \"../../../utils\";\nimport { getShadowClass } from \"../../../tokens/shadows\";\nimport { getZIndexClass } from \"../../../tokens/z-index\";\nimport SideNavbarResizeHandle from \"./SideNavbarResizeHandle\";\nimport SideNavbarBackdrop from \"./SideNavbarBackdrop\";\nimport SideNavbarToggle from \"./SideNavbarToggle\";\nimport type {\n SideNavbarRootProps,\n SideNavbarTogglePosition,\n NavbarProps,\n} from \"../types\";\n\n// ---------------------------------------------------------------------------\n// Per-Navbar override resolution (render-driven, see Phase 2C Treatment 2)\n// ---------------------------------------------------------------------------\n\n/**\n * Type guard: is `child` a `<SideNavbar.Navbar>` element?\n *\n * Uses the static `__SIDENAVBAR_KIND__ === \"navbar\"` marker attached to\n * the Navbar component (set in Navbar.tsx). String tag is resilient to\n * React DevTools displayName mutations and survives function-identity\n * wrapping better than `element.type === Navbar` reference comparison.\n * The single `as` cast is confined to this guard with a `typeof !==\n * \"string\"` short-circuit guarding against host elements (which would\n * otherwise satisfy `isValidElement` but never carry our marker).\n */\nfunction isNavbarElement(\n child: ReactNode,\n): child is ReactElement<\n Pick<NavbarProps, \"showMainToggle\" | \"mainTogglePosition\">\n> {\n if (!isValidElement(child)) return false;\n if (typeof child.type === \"string\") return false;\n return (\n (child.type as { __SIDENAVBAR_KIND__?: string }).__SIDENAVBAR_KIND__ ===\n \"navbar\"\n );\n}\n\n/**\n * Walk the direct `children` of SideNavbarRoot and return the first\n * `<SideNavbar.Navbar>` override (`showMainToggle` / `mainTogglePosition`)\n * in tree order, plus the count of overrides seen and a hint about\n * wrapper-nesting.\n *\n * Scope is deliberately ONLY direct children — deeper levels aren't\n * inspected (predictable behaviour; matches the documented compound\n * pattern of <SideNavbar><SideNavbar.Navbar/><SideNavbar.Sidebar/>...).\n *\n * The wrapper-nesting hint is a SHALLOW one-level peek: if a direct\n * child is NOT a Navbar but is an element with children that include\n * a Navbar carrying an override, we surface the fact so the caller\n * can warn the dev (Treatment 2 directive: silent failure is the\n * same defect class as the DataGrid dead button).\n *\n * Synchronous and pure — no effects, no state, no context. Correct on\n * the first render (including SSR), no hydration mismatch.\n */\nfunction resolveNavbarOverride(children: ReactNode): {\n show?: boolean;\n position?: SideNavbarTogglePosition;\n overrideCount: number;\n wrappedNavbarWithOverride: boolean;\n} {\n let firstShow: boolean | undefined = undefined;\n let firstPosition: SideNavbarTogglePosition | undefined = undefined;\n let count = 0;\n let wrappedHit = false;\n\n for (const child of Children.toArray(children)) {\n if (isNavbarElement(child)) {\n const { showMainToggle, mainTogglePosition } = child.props;\n const hasOverride =\n showMainToggle !== undefined || mainTogglePosition !== undefined;\n if (!hasOverride) continue;\n count++;\n if (count === 1) {\n firstShow = showMainToggle;\n firstPosition = mainTogglePosition;\n }\n continue;\n }\n // Wrapper-nesting peek: only one level deep, only if the direct\n // child is itself an element with children. Cheap and bounded.\n if (!isValidElement(child)) continue;\n const props = child.props as { children?: ReactNode };\n if (props.children === undefined) continue;\n for (const grandchild of Children.toArray(props.children)) {\n if (!isNavbarElement(grandchild)) continue;\n const { showMainToggle, mainTogglePosition } = grandchild.props;\n if (showMainToggle !== undefined || mainTogglePosition !== undefined) {\n wrappedHit = true;\n break;\n }\n }\n }\n\n return {\n show: firstShow,\n position: firstPosition,\n overrideCount: count,\n wrappedNavbarWithOverride: wrappedHit,\n };\n}\n\nconst variantClasses = {\n default: \"\",\n compact: \"text-sm\",\n elevated: getShadowClass(\"lg\"),\n minimal: \"border-0\",\n bordered: \"border-2\",\n};\n\n/**\n * SideNavbar Root Component\n *\n * The inner container component that renders the sidebar structure.\n * Uses all three contexts (Theme, Config, State) for rendering.\n *\n * This component is typically used internally by SideNavbar,\n * but can be used directly with individual providers for advanced customization.\n *\n * @example\n * ```tsx\n * // Usually wrapped by SideNavbar\n * <SideNavbar>\n * <SideNavbar.Navbar>...</SideNavbar.Navbar>\n * <SideNavbar.Sidebar>\n * <SideNavbar.Sidebar.Content>...</SideNavbar.Sidebar.Content>\n * </SideNavbar.Sidebar>\n * </SideNavbar>\n *\n * // Or with individual providers\n * <SideNavbar.ThemeProvider variant=\"elevated\">\n * <SideNavbar.ConfigProvider mode=\"full\" resizable>\n * <SideNavbar.StateProvider>\n * <SideNavbarRoot>...</SideNavbarRoot>\n * </SideNavbar.StateProvider>\n * </SideNavbar.ConfigProvider>\n * </SideNavbar.ThemeProvider>\n * ```\n */\nexport default function SideNavbarRoot({\n children,\n className = \"\",\n style,\n \"aria-label\": ariaLabel,\n ...props\n}: SideNavbarRootProps) {\n // Get context values\n const state = useSideNavbarStateRequired();\n const theme = useSideNavbarThemeRequired();\n const config = useSideNavbarConfigRequired();\n const toggleContext = useSideNavbarToggleContextRequired();\n\n // Resolve per-Navbar main-toggle override synchronously from the\n // children of this Root render. Render-driven (no effect, no state,\n // no context roundtrip) so it's correct on the first commit and on\n // SSR — see resolveNavbarOverride header for the design rationale.\n const navbarOverride = resolveNavbarOverride(children);\n\n // Dev warnings, both synchronous in render so they fire identically\n // on SSR and client. Two distinct cases:\n // - Multi-Navbar with overrides: tree-order-first wins; the rest are\n // silently dropped. Warn so the dev sees the conflict instead of\n // having to debug why only the first override applies.\n // - Wrapper-nested Navbar: only DIRECT children are inspected. If a\n // wrapper hides a Navbar that carries an override, it falls back\n // to the global toggle context with no visible signal — same\n // silent-failure class the DataGrid dead button had. Warn.\n if (import.meta.env.DEV) {\n if (navbarOverride.overrideCount > 1) {\n console.error(\n \"SideNavbar: multiple <SideNavbar.Navbar> children set \" +\n \"main-toggle overrides (showMainToggle / mainTogglePosition). \" +\n \"Only the first in tree order applies; the rest are ignored. \" +\n \"Override is a single-Navbar feature — pass these props on at \" +\n \"most one <SideNavbar.Navbar>.\",\n );\n }\n if (navbarOverride.wrappedNavbarWithOverride) {\n console.error(\n \"SideNavbar: a <SideNavbar.Navbar> with a main-toggle override \" +\n \"appears nested inside a wrapper element. Overrides are only \" +\n \"read from DIRECT <SideNavbar.Navbar> children — move the \" +\n \"props up to the Navbar at the SideNavbar root, or remove the \" +\n \"wrapper.\",\n );\n }\n }\n\n // First override (if any) wins; otherwise fall back to the global\n // toggle context (the existing pre-override behaviour).\n const resolvedShowMainToggle =\n navbarOverride.show ?? toggleContext.showMainToggle;\n const resolvedMainTogglePosition =\n navbarOverride.position ?? toggleContext.mainTogglePosition;\n\n const {\n collapsed,\n setCollapsed: _setCollapsed,\n currentWidth,\n isResizing,\n sidebarRef,\n isMobile,\n } = state;\n\n const {\n variant,\n navigationWidth,\n contentWidth,\n animationDuration,\n animationEasing,\n } = theme;\n\n const { mode, resizable, mobileVariant, overlayBackdrop } = config;\n\n // Parse widths\n const navWidthValue =\n typeof navigationWidth === \"number\"\n ? `${navigationWidth}px`\n : navigationWidth;\n\n const contentWidthValue =\n typeof contentWidth === \"number\" ? `${contentWidth}px` : contentWidth;\n\n // Calculate displayed width based on mode\n const calculateWidth = () => {\n if (mode === \"navigation\") {\n // Navigation-only mode: always show just navigation\n return navWidthValue;\n }\n\n if (collapsed) {\n return navWidthValue;\n }\n\n // Use resize width if resizable, otherwise configured width\n return resizable ? `${currentWidth}px` : contentWidthValue;\n };\n\n const displayedWidth = calculateWidth();\n\n // Mobile overlay mode\n // Usar estado para evitar hydration mismatch - só renderizar backdrop após mount\n const [isMounted, setIsMounted] = useState(false);\n\n useEffect(() => {\n setIsMounted(true);\n }, []);\n\n const isMobileOverlay = isMobile && mobileVariant === \"overlay\";\n\n // Durante SSR e antes do mount, sempre usar 'relative' para evitar hydration mismatch\n // Após mount, usar a classe correta baseada em isMobileOverlay\n // IMPORTANTE: Em desktop, sempre usar 'relative' para ficar no mesmo plano do conteúdo\n // Apenas em mobile overlay usar 'fixed' para sobrepor o conteúdo\n const shouldUseFixed = isMounted && isMobileOverlay;\n const positionClass = shouldUseFixed\n ? `fixed left-0 top-0 ${getZIndexClass(\"fixed\")}`\n : \"relative\";\n\n return (\n <>\n {/* Mobile overlay backdrop - só renderizar após mount para evitar hydration mismatch */}\n {isMounted && isMobileOverlay && overlayBackdrop && !collapsed && (\n <SideNavbarBackdrop />\n )}\n\n <aside\n ref={sidebarRef as React.RefObject<HTMLElement>}\n // SideNavbarToggle's `aria-controls=\"side-navbar-sidebar\"` must\n // resolve to an element that is ALWAYS in the DOM whenever the\n // toggle is rendered — independent of whether the consumer\n // composes in `<SideNavbar.Sidebar>` (the collapsible content\n // area) or only `<SideNavbar.Navbar>` (the icon strip, the\n // pattern DashboardLayout uses). The outer `<aside>` is that\n // anchor: it always renders, and structurally the toggle DOES\n // control this region's collapsed state. Previously the id\n // lived on Sidebar.tsx's inner `<div>`, which is conditional —\n // when Sidebar wasn't composed, the toggle's aria-controls was\n // a dangling reference (axe `aria-valid-attr-value`, critical).\n id=\"side-navbar-sidebar\"\n className={cn(\n positionClass,\n \"flex\",\n \"h-full\",\n \"overflow-visible\",\n variantClasses[variant],\n shouldUseFixed && collapsed ? \"-translate-x-full\" : \"translate-x-0\",\n className,\n )}\n style={\n {\n // Em desktop: sempre 'relative' para ficar no mesmo plano do conteúdo\n // Em mobile overlay: 'fixed' para sobrepor o conteúdo\n position: shouldUseFixed ? \"fixed\" : \"relative\",\n backgroundColor: \"var(--color-surface-subtle)\",\n borderRight: \"1px solid var(--color-line-default)\",\n width: displayedWidth,\n minWidth: displayedWidth,\n transitionProperty: isResizing\n ? \"none\"\n : \"width, min-width, transform\",\n transitionDuration: `${animationDuration}ms`,\n transitionTimingFunction: animationEasing,\n ...style,\n } as React.CSSProperties\n }\n role=\"complementary\"\n aria-label={ariaLabel || \"Sidebar navigation\"}\n aria-expanded={mode !== \"navigation\" ? !collapsed : undefined}\n data-mode={mode}\n data-collapsed={collapsed}\n {...props}\n >\n {/* Resize handle */}\n {resizable && mode !== \"navigation\" && !collapsed && (\n <SideNavbarResizeHandle />\n )}\n\n {/* Main toggle button at right edge of sidebar — show/position\n resolved synchronously from children-inspected override OR\n (when no override) the global toggle context. Always\n rendered here at the <aside> level; per-Navbar override\n does NOT relocate the DOM. */}\n {resolvedShowMainToggle && mode !== \"navigation\" && (\n <SideNavbarToggle position={resolvedMainTogglePosition} />\n )}\n\n {/* Content wrapper */}\n <div className=\"flex h-full w-full overflow-visible\">{children}</div>\n </aside>\n </>\n );\n}\n"],"names":["isNavbarElement","child","isValidElement","resolveNavbarOverride","children","firstShow","firstPosition","count","wrappedHit","Children","showMainToggle","mainTogglePosition","props","grandchild","variantClasses","getShadowClass","SideNavbarRoot","_a","_b","className","style","ariaLabel","__objRest","state","useSideNavbarStateRequired","theme","useSideNavbarThemeRequired","config","useSideNavbarConfigRequired","toggleContext","useSideNavbarToggleContextRequired","navbarOverride","resolvedShowMainToggle","resolvedMainTogglePosition","collapsed","_setCollapsed","currentWidth","isResizing","sidebarRef","isMobile","variant","navigationWidth","contentWidth","animationDuration","animationEasing","mode","resizable","mobileVariant","overlayBackdrop","navWidthValue","contentWidthValue","displayedWidth","isMounted","setIsMounted","useState","useEffect","isMobileOverlay","shouldUseFixed","positionClass","getZIndexClass","jsxs","Fragment","SideNavbarBackdrop","__spreadProps","__spreadValues","cn","SideNavbarResizeHandle","jsx","SideNavbarToggle"],"mappings":"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"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
var k = Object.defineProperty, G = Object.defineProperties;
|
|
3
|
+
var H = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var f = Object.getOwnPropertySymbols;
|
|
5
|
+
var S = Object.prototype.hasOwnProperty, z = Object.prototype.propertyIsEnumerable;
|
|
6
|
+
var y = (t, o, e) => o in t ? k(t, o, { enumerable: !0, configurable: !0, writable: !0, value: e }) : t[o] = e, r = (t, o) => {
|
|
7
|
+
for (var e in o || (o = {}))
|
|
8
|
+
S.call(o, e) && y(t, e, o[e]);
|
|
9
|
+
if (f)
|
|
10
|
+
for (var e of f(o))
|
|
11
|
+
z.call(o, e) && y(t, e, o[e]);
|
|
12
|
+
return t;
|
|
13
|
+
}, N = (t, o) => G(t, H(o));
|
|
14
|
+
var E = (t, o) => {
|
|
15
|
+
var e = {};
|
|
16
|
+
for (var a in t)
|
|
17
|
+
S.call(t, a) && o.indexOf(a) < 0 && (e[a] = t[a]);
|
|
18
|
+
if (t != null && f)
|
|
19
|
+
for (var a of f(t))
|
|
20
|
+
o.indexOf(a) < 0 && z.call(t, a) && (e[a] = t[a]);
|
|
21
|
+
return e;
|
|
22
|
+
};
|
|
23
|
+
import { jsx as s } from "react/jsx-runtime";
|
|
24
|
+
import { PanelLeftOpen as J, PanelLeftClose as K } from "lucide-react";
|
|
25
|
+
import { useSideNavbarStateRequired as Q } from "../contexts/SideNavbarStateContext.js";
|
|
26
|
+
import { useSideNavbarThemeRequired as U } from "../contexts/SideNavbarThemeContext.js";
|
|
27
|
+
import { useSideNavbarConfigRequired as V } from "../contexts/SideNavbarConfigContext.js";
|
|
28
|
+
import { getRadiusClass as W } from "../../../tokens/radius.js";
|
|
29
|
+
import { getShadowClass as O } from "../../../tokens/shadows.js";
|
|
30
|
+
import { getSpacingClass as I } from "../../../tokens/spacing.js";
|
|
31
|
+
import { Z_INDEX_TOKENS as R, getZIndexClass as tt } from "../../../tokens/z-index.js";
|
|
32
|
+
import q from "../../../primitives/Tooltip/Tooltip.js";
|
|
33
|
+
const ot = {
|
|
34
|
+
xs: "w-5 h-5",
|
|
35
|
+
sm: "w-6 h-6",
|
|
36
|
+
md: "w-8 h-8",
|
|
37
|
+
lg: "w-10 h-10"
|
|
38
|
+
}, et = {
|
|
39
|
+
xs: "w-3 h-3",
|
|
40
|
+
sm: "w-4 h-4",
|
|
41
|
+
md: "w-5 h-5",
|
|
42
|
+
lg: "w-6 h-6"
|
|
43
|
+
}, at = {
|
|
44
|
+
floating: `absolute ${tt("fixed")}`,
|
|
45
|
+
// Right edge of navbar, vertically centered - position set via style
|
|
46
|
+
// micro-z: toggle above adjacent siblings in absolute corner position
|
|
47
|
+
top: "absolute top-2 right-2 z-10",
|
|
48
|
+
// micro-z: toggle above adjacent siblings in absolute corner position
|
|
49
|
+
bottom: "absolute bottom-2 right-2 z-10",
|
|
50
|
+
// micro-z: toggle above sibling content in relative inside position
|
|
51
|
+
inside: "relative z-10",
|
|
52
|
+
// micro-z: toggle above sibling content in relative inside position
|
|
53
|
+
"navigation-top": `relative ${I("sm", "mt")} mx-auto z-10`,
|
|
54
|
+
// micro-z: toggle above sibling content in relative inside position
|
|
55
|
+
"navigation-bottom": `relative mt-auto ${I("sm", "mb")} mx-auto z-10`
|
|
56
|
+
}, nt = {
|
|
57
|
+
default: `bg-surface-raised border border-line-default ${O("sm")} hover:bg-surface-hover hover:shadow`,
|
|
58
|
+
ghost: "bg-transparent hover:bg-surface-hover border-0",
|
|
59
|
+
outline: "bg-transparent border border-line-default hover:bg-surface-hover"
|
|
60
|
+
}, rt = {
|
|
61
|
+
floating: "right",
|
|
62
|
+
top: "bottom",
|
|
63
|
+
bottom: "top",
|
|
64
|
+
inside: "right",
|
|
65
|
+
"navigation-top": "right",
|
|
66
|
+
"navigation-bottom": "right"
|
|
67
|
+
};
|
|
68
|
+
function xt(st) {
|
|
69
|
+
var p = st, {
|
|
70
|
+
position: t = "floating",
|
|
71
|
+
offset: o,
|
|
72
|
+
icon: e,
|
|
73
|
+
expandIcon: a,
|
|
74
|
+
collapseIcon: d,
|
|
75
|
+
size: b = "sm",
|
|
76
|
+
variant: L = "default",
|
|
77
|
+
showTooltip: g = !0,
|
|
78
|
+
tooltipPosition: u,
|
|
79
|
+
keyboardShortcut: m,
|
|
80
|
+
enableKeyboardShortcut: c,
|
|
81
|
+
className: j = "",
|
|
82
|
+
style: D,
|
|
83
|
+
"aria-label": P
|
|
84
|
+
} = p, T = E(p, [
|
|
85
|
+
"position",
|
|
86
|
+
"offset",
|
|
87
|
+
"icon",
|
|
88
|
+
"expandIcon",
|
|
89
|
+
"collapseIcon",
|
|
90
|
+
"size",
|
|
91
|
+
"variant",
|
|
92
|
+
"showTooltip",
|
|
93
|
+
"tooltipPosition",
|
|
94
|
+
"keyboardShortcut",
|
|
95
|
+
"enableKeyboardShortcut",
|
|
96
|
+
"className",
|
|
97
|
+
"style",
|
|
98
|
+
"aria-label"
|
|
99
|
+
]);
|
|
100
|
+
var C, v;
|
|
101
|
+
const { collapsed: n, toggle: Y } = Q(), { animationDuration: Z, animationEasing: _ } = U(), h = V(), A = m != null ? m : h.keyboardShortcut, B = c != null ? c : h.enableKeyboardShortcut, F = () => typeof e == "function" ? e(n) : e || (n && a ? a : !n && d ? d : /* @__PURE__ */ s(
|
|
102
|
+
n ? J : K,
|
|
103
|
+
{
|
|
104
|
+
className: et[b],
|
|
105
|
+
style: {
|
|
106
|
+
transition: "none",
|
|
107
|
+
transform: "none",
|
|
108
|
+
willChange: "auto"
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
)), M = n ? "Expand sidebar" : "Collapse sidebar", x = u != null ? u : rt[t], i = g ? `${n ? "Expand" : "Collapse"} sidebar${B ? ` (${A})` : ""}` : void 0, $ = o ? {
|
|
112
|
+
transform: `translate(${(C = o.x) != null ? C : 0}px, ${(v = o.y) != null ? v : 0}px)`
|
|
113
|
+
} : {}, X = t === "floating" ? r({
|
|
114
|
+
// Toggle sempre na borda direita da sidebar completa (<aside>)
|
|
115
|
+
// O <aside> é o container pai, então right: -12px sempre posiciona na borda direita da sidebar
|
|
116
|
+
// Isso faz o toggle acompanhar o resize da sidebar automaticamente
|
|
117
|
+
right: "-12px",
|
|
118
|
+
// Posicionar na mesma altura do primeiro ícone (home)
|
|
119
|
+
// Usando 1rem (16px) para melhor alinhamento com o primeiro item
|
|
120
|
+
// Considerando p-2 (8px) + gap-2 (8px) + metade do primeiro item = ~16px
|
|
121
|
+
top: "1rem",
|
|
122
|
+
transform: "translateY(-50%)",
|
|
123
|
+
// Transição suave para acompanhar o resize da sidebar
|
|
124
|
+
transition: `right ${Z}ms ${_}`
|
|
125
|
+
}, $) : $, l = /* @__PURE__ */ s(
|
|
126
|
+
"button",
|
|
127
|
+
N(r({
|
|
128
|
+
type: "button",
|
|
129
|
+
onClick: Y,
|
|
130
|
+
className: `
|
|
131
|
+
${ot[b]}
|
|
132
|
+
${nt[L]}
|
|
133
|
+
${W("full")}
|
|
134
|
+
flex items-center justify-center
|
|
135
|
+
text-fg-secondary hover:text-fg-primary
|
|
136
|
+
focus:outline-none focus:ring-2 focus:ring-line-focus focus:ring-offset-1
|
|
137
|
+
${t === "floating" ? "" : at[t]}
|
|
138
|
+
${j}
|
|
139
|
+
`,
|
|
140
|
+
style: r(r(r(r({}, t === "floating" ? {
|
|
141
|
+
position: "absolute",
|
|
142
|
+
// Absolute within the floating wrapper
|
|
143
|
+
// The custom wrapper is at sidebar's content edge (right: 0 = 319px, sidebar has 1px border)
|
|
144
|
+
// The Tooltip wrapper (div.static.inline-block) is inside the custom wrapper and doesn't interfere
|
|
145
|
+
// Position button so its RIGHT edge is 12px outside sidebar's border edge
|
|
146
|
+
// Sidebar border edge: 320px, desired right edge: 320 - 12 = 308px
|
|
147
|
+
// Button width: 24px, so left edge should be: 308 - 24 = 284px
|
|
148
|
+
// Wrapper is at content edge (319px), so button right should be: 319 - (320 - 308) = 307px
|
|
149
|
+
// But we want right edge at 308px, so: right = -12px - 1px (border) = -13px
|
|
150
|
+
// Actually, if wrapper is at 319px and we want button right at 308px: 319 - 308 = 11px offset
|
|
151
|
+
// So: right = -11px (but this positions right edge at 319 - 11 = 308px ✓)
|
|
152
|
+
right: "-11px",
|
|
153
|
+
// Position button's right edge 11px outside wrapper (319px) = 308px (12px outside sidebar border)
|
|
154
|
+
left: "auto"
|
|
155
|
+
// Ensure left doesn't interfere
|
|
156
|
+
} : {}), t !== "floating" ? X : {}), t === "floating" ? { zIndex: R.fixed.value } : {}), D),
|
|
157
|
+
"aria-label": P || M,
|
|
158
|
+
"aria-expanded": !n,
|
|
159
|
+
"aria-controls": "side-navbar-sidebar",
|
|
160
|
+
"data-position": t
|
|
161
|
+
}, T), {
|
|
162
|
+
children: F()
|
|
163
|
+
})
|
|
164
|
+
);
|
|
165
|
+
if (t === "floating") {
|
|
166
|
+
const w = g && i ? /* @__PURE__ */ s(
|
|
167
|
+
q,
|
|
168
|
+
{
|
|
169
|
+
content: i,
|
|
170
|
+
position: x,
|
|
171
|
+
preservePositioning: !0,
|
|
172
|
+
children: l
|
|
173
|
+
}
|
|
174
|
+
) : l;
|
|
175
|
+
return /* @__PURE__ */ s(
|
|
176
|
+
"div",
|
|
177
|
+
{
|
|
178
|
+
style: {
|
|
179
|
+
position: "absolute",
|
|
180
|
+
right: "0",
|
|
181
|
+
// Align to sidebar's content edge (319px with 1px border)
|
|
182
|
+
// Note: sidebar has box-sizing: border-box, so right: 0 positions at content edge
|
|
183
|
+
// We compensate by adjusting the button's right value
|
|
184
|
+
top: "1rem",
|
|
185
|
+
transform: "translateY(-50%)",
|
|
186
|
+
zIndex: R.fixed.value
|
|
187
|
+
},
|
|
188
|
+
children: w
|
|
189
|
+
}
|
|
190
|
+
);
|
|
191
|
+
}
|
|
192
|
+
return g && i ? /* @__PURE__ */ s(q, { content: i, position: x, children: l }) : l;
|
|
193
|
+
}
|
|
194
|
+
export {
|
|
195
|
+
xt as default
|
|
196
|
+
};
|
|
197
|
+
//# sourceMappingURL=SideNavbarToggle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SideNavbarToggle.js","sources":["../../../../../../src/ui/components/SideNavbar/components/SideNavbarToggle.tsx"],"sourcesContent":["\"use client\";\n\nimport { PanelLeftClose, PanelLeftOpen } from \"lucide-react\";\nimport { useSideNavbarStateRequired } from \"../contexts/SideNavbarStateContext\";\nimport { useSideNavbarThemeRequired } from \"../contexts/SideNavbarThemeContext\";\nimport { useSideNavbarConfigRequired } from \"../contexts/SideNavbarConfigContext\";\nimport { getRadiusClass } from \"../../../tokens/radius\";\nimport { getShadowClass } from \"../../../tokens/shadows\";\nimport { getSpacingClass } from \"../../../tokens/spacing\";\nimport { getZIndexClass, Z_INDEX_TOKENS } from \"../../../tokens/z-index\";\nimport Tooltip from \"../../../primitives/Tooltip/Tooltip\";\nimport type {\n SideNavbarToggleProps,\n SideNavbarTogglePosition,\n SideNavbarToggleVariant,\n} from \"../types\";\n\nconst sizeClasses = {\n xs: \"w-5 h-5\",\n sm: \"w-6 h-6\",\n md: \"w-8 h-8\",\n lg: \"w-10 h-10\",\n};\n\nconst iconSizeClasses = {\n xs: \"w-3 h-3\",\n sm: \"w-4 h-4\",\n md: \"w-5 h-5\",\n lg: \"w-6 h-6\",\n};\n\nconst positionClasses: Record<SideNavbarTogglePosition, string> = {\n floating: `absolute ${getZIndexClass(\"fixed\")}`, // Right edge of navbar, vertically centered - position set via style\n // micro-z: toggle above adjacent siblings in absolute corner position\n top: \"absolute top-2 right-2 z-10\",\n // micro-z: toggle above adjacent siblings in absolute corner position\n bottom: \"absolute bottom-2 right-2 z-10\",\n // micro-z: toggle above sibling content in relative inside position\n inside: \"relative z-10\",\n // micro-z: toggle above sibling content in relative inside position\n \"navigation-top\": `relative ${getSpacingClass(\"sm\", \"mt\")} mx-auto z-10`,\n // micro-z: toggle above sibling content in relative inside position\n \"navigation-bottom\": `relative mt-auto ${getSpacingClass(\"sm\", \"mb\")} mx-auto z-10`,\n};\n\nconst variantClasses: Record<SideNavbarToggleVariant, string> = {\n default: `bg-surface-raised border border-line-default ${getShadowClass(\"sm\")} hover:bg-surface-hover hover:shadow`,\n ghost: \"bg-transparent hover:bg-surface-hover border-0\",\n outline: \"bg-transparent border border-line-default hover:bg-surface-hover\",\n};\n\nconst tooltipPositionMap: Record<\n SideNavbarTogglePosition,\n \"top\" | \"right\" | \"bottom\" | \"left\"\n> = {\n floating: \"right\",\n top: \"bottom\",\n bottom: \"top\",\n inside: \"right\",\n \"navigation-top\": \"right\",\n \"navigation-bottom\": \"right\",\n};\n\n/**\n * SideNavbarToggle Component\n *\n * A flexible toggle button for collapsing/expanding the SideNavbar.\n * Supports custom icons, multiple positions, and variants.\n *\n * @example\n * ```tsx\n * // Default usage (with PanelLeft icons)\n * <SideNavbar.Toggle />\n *\n * // Custom icons\n * <SideNavbar.Toggle\n * icon={(collapsed) => collapsed ? <ChevronRight /> : <ChevronLeft />}\n * />\n *\n * // Or separate icons\n * <SideNavbar.Toggle\n * expandIcon={<ChevronRight />}\n * collapseIcon={<ChevronLeft />}\n * />\n *\n * // Inside navigation\n * <SideNavbar.Navbar>\n * <NavItems />\n * <SideNavbar.Toggle position=\"navigation-bottom\" variant=\"ghost\" />\n * </SideNavbar.Navbar>\n * ```\n */\nexport default function SideNavbarToggle({\n position = \"floating\",\n offset,\n icon,\n expandIcon,\n collapseIcon,\n size = \"sm\",\n variant = \"default\",\n showTooltip = true,\n tooltipPosition: tooltipPositionOverride,\n keyboardShortcut: keyboardShortcutOverride,\n enableKeyboardShortcut: enableKeyboardShortcutOverride,\n className = \"\",\n style,\n \"aria-label\": ariaLabel,\n ...props\n}: SideNavbarToggleProps) {\n const { collapsed, toggle } = useSideNavbarStateRequired();\n const { animationDuration, animationEasing } = useSideNavbarThemeRequired();\n const config = useSideNavbarConfigRequired();\n\n // Use config values as defaults, allow prop overrides\n const keyboardShortcut = keyboardShortcutOverride ?? config.keyboardShortcut;\n const enableKeyboardShortcut =\n enableKeyboardShortcutOverride ?? config.enableKeyboardShortcut;\n\n // Render icon logic\n const renderIcon = () => {\n // Custom render function\n if (typeof icon === \"function\") {\n return icon(collapsed);\n }\n\n // Static custom icon\n if (icon) {\n return icon;\n }\n\n // Separate expand/collapse icons\n if (collapsed && expandIcon) {\n return expandIcon;\n }\n if (!collapsed && collapseIcon) {\n return collapseIcon;\n }\n\n // Default Lucide icons - sem animação de transform\n const Icon = collapsed ? PanelLeftOpen : PanelLeftClose;\n return (\n <Icon\n className={iconSizeClasses[size]}\n style={{\n transition: \"none\",\n transform: \"none\",\n willChange: \"auto\",\n }}\n />\n );\n };\n\n const defaultAriaLabel = collapsed ? \"Expand sidebar\" : \"Collapse sidebar\";\n const tooltipPosition =\n tooltipPositionOverride ?? tooltipPositionMap[position];\n\n const tooltipContent = showTooltip\n ? `${collapsed ? \"Expand\" : \"Collapse\"} sidebar${enableKeyboardShortcut ? ` (${keyboardShortcut})` : \"\"}`\n : undefined;\n\n // Calculate offset styles\n const offsetStyle = offset\n ? {\n transform: `translate(${offset.x ?? 0}px, ${offset.y ?? 0}px)`,\n }\n : {};\n\n // Edge-following toggle positioning (right edge of sidebar)\n // The toggle is now positioned in SideNavbarRoot (at <aside> level), not in <nav>\n // This means it's positioned relative to the entire sidebar, not just the navbar\n // When collapsed: sidebar width = nav width, toggle at right edge\n // When expanded: sidebar width = nav + content, toggle at right edge of full sidebar\n // Position: right edge of sidebar, aligned with first navbar item (home icon)\n // The toggle will automatically follow the sidebar's width when resized\n const edgeFollowingStyle =\n position === \"floating\"\n ? {\n // Toggle sempre na borda direita da sidebar completa (<aside>)\n // O <aside> é o container pai, então right: -12px sempre posiciona na borda direita da sidebar\n // Isso faz o toggle acompanhar o resize da sidebar automaticamente\n right: \"-12px\",\n // Posicionar na mesma altura do primeiro ícone (home)\n // Usando 1rem (16px) para melhor alinhamento com o primeiro item\n // Considerando p-2 (8px) + gap-2 (8px) + metade do primeiro item = ~16px\n top: \"1rem\",\n transform: \"translateY(-50%)\",\n // Transição suave para acompanhar o resize da sidebar\n transition: `right ${animationDuration}ms ${animationEasing}`,\n ...offsetStyle,\n }\n : offsetStyle;\n\n const button = (\n <button\n type=\"button\"\n onClick={toggle}\n className={`\n ${sizeClasses[size]}\n ${variantClasses[variant]}\n ${getRadiusClass(\"full\")}\n flex items-center justify-center\n text-fg-secondary hover:text-fg-primary\n focus:outline-none focus:ring-2 focus:ring-line-focus focus:ring-offset-1\n ${position === \"floating\" ? \"\" : positionClasses[position]}\n ${className}\n `}\n style={{\n ...(position === \"floating\"\n ? {\n position: \"absolute\", // Absolute within the floating wrapper\n // The custom wrapper is at sidebar's content edge (right: 0 = 319px, sidebar has 1px border)\n // The Tooltip wrapper (div.static.inline-block) is inside the custom wrapper and doesn't interfere\n // Position button so its RIGHT edge is 12px outside sidebar's border edge\n // Sidebar border edge: 320px, desired right edge: 320 - 12 = 308px\n // Button width: 24px, so left edge should be: 308 - 24 = 284px\n // Wrapper is at content edge (319px), so button right should be: 319 - (320 - 308) = 307px\n // But we want right edge at 308px, so: right = -12px - 1px (border) = -13px\n // Actually, if wrapper is at 319px and we want button right at 308px: 319 - 308 = 11px offset\n // So: right = -11px (but this positions right edge at 319 - 11 = 308px ✓)\n right: \"-11px\", // Position button's right edge 11px outside wrapper (319px) = 308px (12px outside sidebar border)\n left: \"auto\", // Ensure left doesn't interfere\n }\n : {}),\n ...(position !== \"floating\" ? edgeFollowingStyle : {}),\n ...(position === \"floating\"\n ? { zIndex: Z_INDEX_TOKENS.fixed.value }\n : {}), // Ensure z-index is applied inline for floating position\n ...style,\n }}\n aria-label={ariaLabel || defaultAriaLabel}\n aria-expanded={!collapsed}\n aria-controls=\"side-navbar-sidebar\"\n data-position={position}\n {...props}\n >\n {renderIcon()}\n </button>\n );\n\n // For floating position, wrap in a container positioned relative to the sidebar (<aside>)\n // This ensures the toggle is always at the right edge of the entire sidebar, not just the nav\n // The toggle will automatically follow the sidebar's width when resized\n // The toggle should be positioned 12px outside the sidebar edge (half button width for visual balance)\n if (position === \"floating\") {\n // Create a wrapper that positions the toggle at the sidebar's right edge\n // The wrapper is positioned at sidebar's right edge (<aside>), and the button is positioned 12px outside\n const floatingButton =\n showTooltip && tooltipContent ? (\n <Tooltip\n content={tooltipContent}\n position={tooltipPosition}\n preservePositioning={true}\n >\n {button}\n </Tooltip>\n ) : (\n button\n );\n\n return (\n <div\n style={{\n position: \"absolute\",\n right: \"0\", // Align to sidebar's content edge (319px with 1px border)\n // Note: sidebar has box-sizing: border-box, so right: 0 positions at content edge\n // We compensate by adjusting the button's right value\n top: \"1rem\",\n transform: \"translateY(-50%)\",\n zIndex: Z_INDEX_TOKENS.fixed.value,\n }}\n >\n {floatingButton}\n </div>\n );\n }\n\n if (showTooltip && tooltipContent) {\n return (\n <Tooltip content={tooltipContent} position={tooltipPosition}>\n {button}\n </Tooltip>\n );\n }\n\n return button;\n}\n"],"names":["sizeClasses","iconSizeClasses","positionClasses","getZIndexClass","getSpacingClass","variantClasses","getShadowClass","tooltipPositionMap","SideNavbarToggle","_a","_b","position","offset","icon","expandIcon","collapseIcon","size","variant","showTooltip","tooltipPositionOverride","keyboardShortcutOverride","enableKeyboardShortcutOverride","className","style","ariaLabel","props","__objRest","collapsed","toggle","useSideNavbarStateRequired","animationDuration","animationEasing","useSideNavbarThemeRequired","config","useSideNavbarConfigRequired","keyboardShortcut","enableKeyboardShortcut","renderIcon","jsx","PanelLeftOpen","PanelLeftClose","defaultAriaLabel","tooltipPosition","tooltipContent","offsetStyle","edgeFollowingStyle","__spreadValues","button","__spreadProps","getRadiusClass","Z_INDEX_TOKENS","floatingButton","Tooltip"],"mappings":"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"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
var k = Object.defineProperty, A = Object.defineProperties;
|
|
3
|
+
var E = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var n = Object.getOwnPropertySymbols;
|
|
5
|
+
var y = Object.prototype.hasOwnProperty, C = Object.prototype.propertyIsEnumerable;
|
|
6
|
+
var F = (e, t, o) => t in e ? k(e, t, { enumerable: !0, configurable: !0, writable: !0, value: o }) : e[t] = o, c = (e, t) => {
|
|
7
|
+
for (var o in t || (t = {}))
|
|
8
|
+
y.call(t, o) && F(e, o, t[o]);
|
|
9
|
+
if (n)
|
|
10
|
+
for (var o of n(t))
|
|
11
|
+
C.call(t, o) && F(e, o, t[o]);
|
|
12
|
+
return e;
|
|
13
|
+
}, P = (e, t) => A(e, E(t));
|
|
14
|
+
var G = (e, t) => {
|
|
15
|
+
var o = {};
|
|
16
|
+
for (var r in e)
|
|
17
|
+
y.call(e, r) && t.indexOf(r) < 0 && (o[r] = e[r]);
|
|
18
|
+
if (e != null && n)
|
|
19
|
+
for (var r of n(e))
|
|
20
|
+
t.indexOf(r) < 0 && C.call(e, r) && (o[r] = e[r]);
|
|
21
|
+
return o;
|
|
22
|
+
};
|
|
23
|
+
import { jsx as M } from "react/jsx-runtime";
|
|
24
|
+
import { useRef as V, useState as l, useCallback as d, useMemo as $ } from "react";
|
|
25
|
+
import { SidebarContext as z } from "../../contexts/SidebarContext.js";
|
|
26
|
+
import { useSideNavbarStateRequired as B } from "../../contexts/SideNavbarStateContext.js";
|
|
27
|
+
import { useSideNavbarThemeRequired as I } from "../../contexts/SideNavbarThemeContext.js";
|
|
28
|
+
import J from "./SidebarHeader.js";
|
|
29
|
+
import K from "./SidebarContent.js";
|
|
30
|
+
import L from "./SidebarFooter.js";
|
|
31
|
+
import O from "./SidebarGroup.js";
|
|
32
|
+
import { SidebarSlot as Q } from "./SidebarSlot.js";
|
|
33
|
+
import { SidebarSlotContent as U } from "./SidebarSlotContent.js";
|
|
34
|
+
import { parseWidthToPixels as R } from "../../utils/parseWidth.js";
|
|
35
|
+
import { cn as X } from "../../../../utils/cn.js";
|
|
36
|
+
function s(Y) {
|
|
37
|
+
var m = Y, { children: e, className: t = "", style: o } = m, r = G(m, ["children", "className", "style"]);
|
|
38
|
+
const i = B(), a = I(), u = V(null), [p, T] = l(0), [f, b] = l(!1), [h, S] = l(!1), [v, w] = l(null), W = d(() => b(!0), []), g = d(() => b(!1), []), H = d(() => S(!0), []), x = d(() => S(!1), []), N = $(
|
|
39
|
+
() => ({
|
|
40
|
+
// Inherited from root
|
|
41
|
+
collapsed: i.collapsed,
|
|
42
|
+
currentWidth: i.currentWidth,
|
|
43
|
+
isMobile: i.isMobile,
|
|
44
|
+
// Sidebar-specific
|
|
45
|
+
sidebarRef: u,
|
|
46
|
+
scrollPosition: p,
|
|
47
|
+
setScrollPosition: T,
|
|
48
|
+
hasHeader: f,
|
|
49
|
+
hasFooter: h,
|
|
50
|
+
registerHeader: W,
|
|
51
|
+
unregisterHeader: g,
|
|
52
|
+
registerFooter: H,
|
|
53
|
+
unregisterFooter: x,
|
|
54
|
+
activeGroup: v,
|
|
55
|
+
setActiveGroup: w
|
|
56
|
+
}),
|
|
57
|
+
[
|
|
58
|
+
i.collapsed,
|
|
59
|
+
i.currentWidth,
|
|
60
|
+
i.isMobile,
|
|
61
|
+
p,
|
|
62
|
+
f,
|
|
63
|
+
h,
|
|
64
|
+
W,
|
|
65
|
+
g,
|
|
66
|
+
H,
|
|
67
|
+
x,
|
|
68
|
+
v
|
|
69
|
+
]
|
|
70
|
+
), q = R(a.contentWidth), D = R(a.navigationWidth), j = q - D;
|
|
71
|
+
return /* @__PURE__ */ M(z.Provider, { value: N, children: /* @__PURE__ */ M(
|
|
72
|
+
"div",
|
|
73
|
+
P(c({
|
|
74
|
+
ref: u,
|
|
75
|
+
className: X(
|
|
76
|
+
"flex",
|
|
77
|
+
"flex-col",
|
|
78
|
+
"h-full",
|
|
79
|
+
"bg-surface-subtle",
|
|
80
|
+
"border-r",
|
|
81
|
+
"border-line-default",
|
|
82
|
+
"overflow-hidden",
|
|
83
|
+
t
|
|
84
|
+
),
|
|
85
|
+
style: c({
|
|
86
|
+
width: i.collapsed ? 0 : j,
|
|
87
|
+
opacity: i.collapsed ? 0 : 1,
|
|
88
|
+
visibility: i.collapsed ? "hidden" : "visible",
|
|
89
|
+
transitionProperty: "width, opacity, visibility",
|
|
90
|
+
transitionDuration: `${a.animationDuration}ms`,
|
|
91
|
+
transitionTimingFunction: a.animationEasing
|
|
92
|
+
}, o),
|
|
93
|
+
"aria-hidden": i.collapsed
|
|
94
|
+
}, r), {
|
|
95
|
+
children: e
|
|
96
|
+
})
|
|
97
|
+
) });
|
|
98
|
+
}
|
|
99
|
+
s.Header = J;
|
|
100
|
+
s.Content = K;
|
|
101
|
+
s.Footer = L;
|
|
102
|
+
s.Group = O;
|
|
103
|
+
s.Slot = Q;
|
|
104
|
+
s.SlotContent = U;
|
|
105
|
+
export {
|
|
106
|
+
s as default
|
|
107
|
+
};
|
|
108
|
+
//# sourceMappingURL=Sidebar.js.map
|