@fabio.caffarello/react-design-system 3.8.0 → 3.10.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 +447 -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/FilterChips/FilterChips.js +67 -0
- package/dist/granular/ui/components/FilterChips/FilterChips.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 +46 -46
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1172 -1135
- package/dist/index.js.map +1 -1
- package/dist/react-design-system.css +1 -1
- package/dist/server/index.cjs +23 -23
- package/dist/server/index.cjs.map +1 -1
- package/dist/server/index.js +882 -1179
- package/dist/server/index.js.map +1 -1
- package/dist/ui/components/FilterChips/FilterChips.d.ts +83 -0
- package/dist/ui/components/FilterChips/index.d.ts +2 -0
- package/dist/ui/components/index.d.ts +2 -0
- package/dist/ui/server.d.ts +2 -0
- package/package.json +9 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useResize.js","sources":["../../../../../../src/ui/components/SideNavbar/hooks/useResize.ts"],"sourcesContent":["\"use client\";\n\nimport { useState, useCallback, useRef, useEffect } from \"react\";\nimport { clampWidth, validateWidthBounds } from \"../utils\";\n\nexport interface UseResizeOptions {\n /**\n * Initial width\n */\n initialWidth: number;\n\n /**\n * Minimum width constraint\n */\n minWidth?: number;\n\n /**\n * Maximum width constraint\n */\n maxWidth?: number;\n\n /**\n * Snap points (widths to snap to when dragging)\n */\n snapPoints?: number[];\n\n /**\n * Snap threshold in pixels\n * @default 20\n */\n snapThreshold?: number;\n\n /**\n * Callback when width changes\n */\n onWidthChange?: (width: number) => void;\n\n /**\n * Whether resize is enabled\n * @default true\n */\n enabled?: boolean;\n}\n\nexport interface UseResizeReturn {\n /**\n * Current width\n */\n width: number;\n\n /**\n * Whether currently resizing\n */\n isResizing: boolean;\n\n /**\n * Start resize handler (attach to mousedown)\n */\n startResize: (event: React.MouseEvent) => void;\n\n /**\n * Set width programmatically\n */\n setWidth: (width: number) => void;\n}\n\n/**\n * Hook for drag-to-resize functionality\n *\n * Provides resize state and handlers for drag-to-resize interactions.\n * Supports snap points and min/max constraints.\n *\n * @example\n * ```tsx\n * const { width, isResizing, startResize } = useResize({\n * initialWidth: 320,\n * minWidth: 200,\n * maxWidth: 600,\n * snapPoints: [200, 320, 480],\n * onWidthChange: (width) => console.log('Width:', width)\n * });\n * ```\n */\nexport function useResize({\n initialWidth,\n minWidth,\n maxWidth,\n snapPoints,\n snapThreshold = 20,\n onWidthChange,\n enabled = true,\n}: UseResizeOptions): UseResizeReturn {\n // Validate bounds on first render\n if (import.meta.env.DEV) {\n if (!validateWidthBounds(minWidth, maxWidth)) {\n console.warn(\n \"[useResize] Invalid bounds: minWidth must be less than maxWidth\",\n { minWidth, maxWidth },\n );\n }\n }\n\n // Clamp initial width to valid bounds\n const clampedInitialWidth = clampWidth(initialWidth, minWidth, maxWidth);\n const [width, setWidthState] = useState(clampedInitialWidth);\n const [isResizing, setIsResizing] = useState(false);\n const startXRef = useRef<number>(0);\n const startWidthRef = useRef<number>(clampedInitialWidth);\n\n const setWidth = useCallback(\n (newWidth: number) => {\n // Use utility function to clamp width\n let constrainedWidth = clampWidth(newWidth, minWidth, maxWidth);\n\n // Check snap points\n if (snapPoints && snapPoints.length > 0) {\n const closestSnap = snapPoints.reduce((closest, snap) => {\n const distanceToSnap = Math.abs(constrainedWidth - snap);\n const distanceToClosest = Math.abs(constrainedWidth - closest);\n return distanceToSnap < distanceToClosest ? snap : closest;\n }, snapPoints[0]);\n\n if (Math.abs(constrainedWidth - closestSnap) <= snapThreshold) {\n constrainedWidth = closestSnap;\n }\n }\n\n setWidthState(constrainedWidth);\n onWidthChange?.(constrainedWidth);\n },\n [minWidth, maxWidth, snapPoints, snapThreshold, onWidthChange],\n );\n\n const handleMouseMove = useCallback(\n (event: MouseEvent) => {\n if (!enabled || !isResizing) return;\n\n const deltaX = event.clientX - startXRef.current;\n const newWidth = startWidthRef.current + deltaX;\n setWidth(newWidth);\n },\n [enabled, isResizing, setWidth],\n );\n\n const handleMouseUp = useCallback(() => {\n if (!enabled) return;\n\n setIsResizing(false);\n startXRef.current = 0;\n startWidthRef.current = width;\n }, [enabled, width]);\n\n const startResize = useCallback(\n (event: React.MouseEvent) => {\n if (!enabled) return;\n\n event.preventDefault();\n event.stopPropagation();\n\n setIsResizing(true);\n startXRef.current = event.clientX;\n startWidthRef.current = width;\n },\n [enabled, width],\n );\n\n useEffect(() => {\n if (!isResizing) return;\n\n document.addEventListener(\"mousemove\", handleMouseMove);\n document.addEventListener(\"mouseup\", handleMouseUp);\n\n // Prevent text selection while resizing\n document.body.style.userSelect = \"none\";\n document.body.style.cursor = \"col-resize\";\n\n return () => {\n document.removeEventListener(\"mousemove\", handleMouseMove);\n document.removeEventListener(\"mouseup\", handleMouseUp);\n document.body.style.userSelect = \"\";\n document.body.style.cursor = \"\";\n };\n }, [isResizing, handleMouseMove, handleMouseUp]);\n\n // Update width when initialWidth changes externally\n useEffect(() => {\n if (!isResizing) {\n setWidthState(clampWidth(initialWidth, minWidth, maxWidth));\n }\n }, [initialWidth, minWidth, maxWidth, isResizing]);\n\n return {\n width,\n isResizing,\n startResize,\n setWidth,\n };\n}\n"],"names":["useResize","initialWidth","minWidth","maxWidth","snapPoints","snapThreshold","onWidthChange","enabled","clampedInitialWidth","clampWidth","width","setWidthState","useState","isResizing","setIsResizing","startXRef","useRef","startWidthRef","setWidth","useCallback","newWidth","constrainedWidth","closestSnap","closest","snap","distanceToSnap","distanceToClosest","handleMouseMove","event","deltaX","handleMouseUp","startResize","useEffect"],"mappings":";;;AAmFO,SAASA,EAAU;AAAA,EACxB,cAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC,IAAgB;AAAA,EAChB,eAAAC;AAAA,EACA,SAAAC,IAAU;AACZ,GAAsC;AAYpC,QAAMC,IAAsBC,EAAWR,GAAcC,GAAUC,CAAQ,GACjE,CAACO,GAAOC,CAAa,IAAIC,EAASJ,CAAmB,GACrD,CAACK,GAAYC,CAAa,IAAIF,EAAS,EAAK,GAC5CG,IAAYC,EAAe,CAAC,GAC5BC,IAAgBD,EAAeR,CAAmB,GAElDU,IAAWC;AAAA,IACf,CAACC,MAAqB;AAEpB,UAAIC,IAAmBZ,EAAWW,GAAUlB,GAAUC,CAAQ;AAG9D,UAAIC,KAAcA,EAAW,SAAS,GAAG;AACvC,cAAMkB,IAAclB,EAAW,OAAO,CAACmB,GAASC,MAAS;AACvD,gBAAMC,IAAiB,KAAK,IAAIJ,IAAmBG,CAAI,GACjDE,IAAoB,KAAK,IAAIL,IAAmBE,CAAO;AAC7D,iBAAOE,IAAiBC,IAAoBF,IAAOD;AAAA,QACrD,GAAGnB,EAAW,CAAC,CAAC;AAEhB,QAAI,KAAK,IAAIiB,IAAmBC,CAAW,KAAKjB,MAC9CgB,IAAmBC;AAAA,MAEvB;AAEA,MAAAX,EAAcU,CAAgB,GAC9Bf,KAAA,QAAAA,EAAgBe;AAAA,IAClB;AAAA,IACA,CAACnB,GAAUC,GAAUC,GAAYC,GAAeC,CAAa;AAAA,EAAA,GAGzDqB,IAAkBR;AAAA,IACtB,CAACS,MAAsB;AACrB,UAAI,CAACrB,KAAW,CAACM,EAAY;AAE7B,YAAMgB,IAASD,EAAM,UAAUb,EAAU,SACnCK,IAAWH,EAAc,UAAUY;AACzC,MAAAX,EAASE,CAAQ;AAAA,IACnB;AAAA,IACA,CAACb,GAASM,GAAYK,CAAQ;AAAA,EAAA,GAG1BY,IAAgBX,EAAY,MAAM;AACtC,IAAKZ,MAELO,EAAc,EAAK,GACnBC,EAAU,UAAU,GACpBE,EAAc,UAAUP;AAAA,EAC1B,GAAG,CAACH,GAASG,CAAK,CAAC,GAEbqB,IAAcZ;AAAA,IAClB,CAACS,MAA4B;AAC3B,MAAKrB,MAELqB,EAAM,eAAA,GACNA,EAAM,gBAAA,GAENd,EAAc,EAAI,GAClBC,EAAU,UAAUa,EAAM,SAC1BX,EAAc,UAAUP;AAAA,IAC1B;AAAA,IACA,CAACH,GAASG,CAAK;AAAA,EAAA;AAGjB,SAAAsB,EAAU,MAAM;AACd,QAAKnB;AAEL,sBAAS,iBAAiB,aAAac,CAAe,GACtD,SAAS,iBAAiB,WAAWG,CAAa,GAGlD,SAAS,KAAK,MAAM,aAAa,QACjC,SAAS,KAAK,MAAM,SAAS,cAEtB,MAAM;AACX,iBAAS,oBAAoB,aAAaH,CAAe,GACzD,SAAS,oBAAoB,WAAWG,CAAa,GACrD,SAAS,KAAK,MAAM,aAAa,IACjC,SAAS,KAAK,MAAM,SAAS;AAAA,MAC/B;AAAA,EACF,GAAG,CAACjB,GAAYc,GAAiBG,CAAa,CAAC,GAG/CE,EAAU,MAAM;AACd,IAAKnB,KACHF,EAAcF,EAAWR,GAAcC,GAAUC,CAAQ,CAAC;AAAA,EAE9D,GAAG,CAACF,GAAcC,GAAUC,GAAUU,CAAU,CAAC,GAE1C;AAAA,IACL,OAAAH;AAAA,IACA,YAAAG;AAAA,IACA,aAAAkB;AAAA,IACA,UAAAb;AAAA,EAAA;AAEJ;"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useState as u, useCallback as W, useEffect as v } from "react";
|
|
3
|
+
function y({
|
|
4
|
+
mobileBreakpoint: e = 768,
|
|
5
|
+
onMobileChange: d,
|
|
6
|
+
enabled: s = !0
|
|
7
|
+
} = {}) {
|
|
8
|
+
const [c, o] = u(
|
|
9
|
+
typeof window != "undefined" ? window.innerWidth : 1024
|
|
10
|
+
), [r, f] = u(
|
|
11
|
+
typeof window != "undefined" ? window.innerWidth < e : !1
|
|
12
|
+
), w = W(() => {
|
|
13
|
+
if (!s || typeof window == "undefined") return;
|
|
14
|
+
const i = window.innerWidth, t = i < e;
|
|
15
|
+
o(i), t !== r && (f(t), d == null || d(t));
|
|
16
|
+
}, [s, e, r, d]);
|
|
17
|
+
return v(() => {
|
|
18
|
+
if (!s || typeof window == "undefined") return;
|
|
19
|
+
const i = window.innerWidth, t = i < e;
|
|
20
|
+
o(i), f(t), window.addEventListener("resize", w);
|
|
21
|
+
let n = null;
|
|
22
|
+
return window.ResizeObserver && (n = new ResizeObserver(() => {
|
|
23
|
+
w();
|
|
24
|
+
}), n.observe(document.body)), () => {
|
|
25
|
+
window.removeEventListener("resize", w), n == null || n.disconnect();
|
|
26
|
+
};
|
|
27
|
+
}, [s, e, w]), {
|
|
28
|
+
isMobile: r,
|
|
29
|
+
viewportWidth: c
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export {
|
|
33
|
+
y as useResponsiveSidebar
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=useResponsiveSidebar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useResponsiveSidebar.js","sources":["../../../../../../src/ui/components/SideNavbar/hooks/useResponsiveSidebar.ts"],"sourcesContent":["\"use client\";\n\nimport { useState, useEffect, useCallback } from \"react\";\n\nexport interface UseResponsiveSidebarOptions {\n /**\n * Breakpoint in pixels for mobile detection\n * @default 768\n */\n mobileBreakpoint?: number;\n\n /**\n * Callback when mobile state changes\n */\n onMobileChange?: (isMobile: boolean) => void;\n\n /**\n * Whether responsive behavior is enabled\n * @default true\n */\n enabled?: boolean;\n}\n\nexport interface UseResponsiveSidebarReturn {\n /**\n * Whether current viewport is mobile\n */\n isMobile: boolean;\n\n /**\n * Current viewport width\n */\n viewportWidth: number;\n}\n\n/**\n * Hook for responsive sidebar behavior\n *\n * Detects mobile breakpoints and provides responsive state.\n *\n * @example\n * ```tsx\n * const { isMobile, viewportWidth } = useResponsiveSidebar({\n * mobileBreakpoint: 768,\n * onMobileChange: (isMobile) => console.log('Mobile:', isMobile)\n * });\n * ```\n */\nexport function useResponsiveSidebar({\n mobileBreakpoint = 768,\n onMobileChange,\n enabled = true,\n}: UseResponsiveSidebarOptions = {}): UseResponsiveSidebarReturn {\n const [viewportWidth, setViewportWidth] = useState<number>(\n typeof window !== \"undefined\" ? window.innerWidth : 1024,\n );\n const [isMobile, setIsMobile] = useState<boolean>(\n typeof window !== \"undefined\"\n ? window.innerWidth < mobileBreakpoint\n : false,\n );\n\n const handleResize = useCallback(() => {\n if (!enabled || typeof window === \"undefined\") return;\n\n const newWidth = window.innerWidth;\n const newIsMobile = newWidth < mobileBreakpoint;\n\n setViewportWidth(newWidth);\n\n if (newIsMobile !== isMobile) {\n setIsMobile(newIsMobile);\n onMobileChange?.(newIsMobile);\n }\n }, [enabled, mobileBreakpoint, isMobile, onMobileChange]);\n\n useEffect(() => {\n if (!enabled || typeof window === \"undefined\") return;\n\n // Set initial state\n const initialWidth = window.innerWidth;\n const initialIsMobile = initialWidth < mobileBreakpoint;\n setViewportWidth(initialWidth);\n setIsMobile(initialIsMobile);\n\n // Listen for resize events\n window.addEventListener(\"resize\", handleResize);\n\n // Use ResizeObserver for more accurate detection\n let resizeObserver: ResizeObserver | null = null;\n if (window.ResizeObserver) {\n resizeObserver = new ResizeObserver(() => {\n handleResize();\n });\n resizeObserver.observe(document.body);\n }\n\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n resizeObserver?.disconnect();\n };\n }, [enabled, mobileBreakpoint, handleResize]);\n\n return {\n isMobile,\n viewportWidth,\n };\n}\n"],"names":["useResponsiveSidebar","mobileBreakpoint","onMobileChange","enabled","viewportWidth","setViewportWidth","useState","isMobile","setIsMobile","handleResize","useCallback","newWidth","newIsMobile","useEffect","initialWidth","initialIsMobile","resizeObserver"],"mappings":";;AAgDO,SAASA,EAAqB;AAAA,EACnC,kBAAAC,IAAmB;AAAA,EACnB,gBAAAC;AAAA,EACA,SAAAC,IAAU;AACZ,IAAiC,IAAgC;AAC/D,QAAM,CAACC,GAAeC,CAAgB,IAAIC;AAAA,IACxC,OAAO,UAAW,cAAc,OAAO,aAAa;AAAA,EAAA,GAEhD,CAACC,GAAUC,CAAW,IAAIF;AAAA,IAC9B,OAAO,UAAW,cACd,OAAO,aAAaL,IACpB;AAAA,EAAA,GAGAQ,IAAeC,EAAY,MAAM;AACrC,QAAI,CAACP,KAAW,OAAO,UAAW,YAAa;AAE/C,UAAMQ,IAAW,OAAO,YAClBC,IAAcD,IAAWV;AAE/B,IAAAI,EAAiBM,CAAQ,GAErBC,MAAgBL,MAClBC,EAAYI,CAAW,GACvBV,KAAA,QAAAA,EAAiBU;AAAA,EAErB,GAAG,CAACT,GAASF,GAAkBM,GAAUL,CAAc,CAAC;AAExD,SAAAW,EAAU,MAAM;AACd,QAAI,CAACV,KAAW,OAAO,UAAW,YAAa;AAG/C,UAAMW,IAAe,OAAO,YACtBC,IAAkBD,IAAeb;AACvC,IAAAI,EAAiBS,CAAY,GAC7BN,EAAYO,CAAe,GAG3B,OAAO,iBAAiB,UAAUN,CAAY;AAG9C,QAAIO,IAAwC;AAC5C,WAAI,OAAO,mBACTA,IAAiB,IAAI,eAAe,MAAM;AACxC,MAAAP,EAAA;AAAA,IACF,CAAC,GACDO,EAAe,QAAQ,SAAS,IAAI,IAG/B,MAAM;AACX,aAAO,oBAAoB,UAAUP,CAAY,GACjDO,KAAA,QAAAA,EAAgB;AAAA,IAClB;AAAA,EACF,GAAG,CAACb,GAASF,GAAkBQ,CAAY,CAAC,GAErC;AAAA,IACL,UAAAF;AAAA,IACA,eAAAH;AAAA,EAAA;AAEJ;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useSideNavbarThemeRequired as t } from "../contexts/SideNavbarThemeContext.js";
|
|
3
|
+
import { useSideNavbarTheme as S } from "../contexts/SideNavbarThemeContext.js";
|
|
4
|
+
import { useSideNavbarConfigRequired as i } from "../contexts/SideNavbarConfigContext.js";
|
|
5
|
+
import { useSideNavbarConfig as p } from "../contexts/SideNavbarConfigContext.js";
|
|
6
|
+
import { useSideNavbarStateRequired as a } from "../contexts/SideNavbarStateContext.js";
|
|
7
|
+
import { useSideNavbarState as N } from "../contexts/SideNavbarStateContext.js";
|
|
8
|
+
function d() {
|
|
9
|
+
const e = t(), r = i(), o = a();
|
|
10
|
+
return { theme: e, config: r, state: o };
|
|
11
|
+
}
|
|
12
|
+
export {
|
|
13
|
+
d as useSideNavbarCombined,
|
|
14
|
+
p as useSideNavbarConfig,
|
|
15
|
+
i as useSideNavbarConfigRequired,
|
|
16
|
+
N as useSideNavbarState,
|
|
17
|
+
a as useSideNavbarStateRequired,
|
|
18
|
+
S as useSideNavbarTheme,
|
|
19
|
+
t as useSideNavbarThemeRequired
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=useSideNavbar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSideNavbar.js","sources":["../../../../../../src/ui/components/SideNavbar/hooks/useSideNavbar.ts"],"sourcesContent":["\"use client\";\n\nimport { useSideNavbarThemeRequired } from \"../contexts/SideNavbarThemeContext\";\nimport { useSideNavbarConfigRequired } from \"../contexts/SideNavbarConfigContext\";\nimport { useSideNavbarStateRequired } from \"../contexts/SideNavbarStateContext\";\n\n// Layered context hooks\nexport {\n useSideNavbarTheme,\n useSideNavbarThemeRequired,\n} from \"../contexts/SideNavbarThemeContext\";\n\nexport {\n useSideNavbarConfig,\n useSideNavbarConfigRequired,\n} from \"../contexts/SideNavbarConfigContext\";\n\nexport {\n useSideNavbarState,\n useSideNavbarStateRequired,\n} from \"../contexts/SideNavbarStateContext\";\n\n// Subcomponent hooks\nexport { useNavbar, useNavbarRequired } from \"./useNavbar\";\nexport { useSidebar, useSidebarRequired } from \"./useSidebar\";\n\n// Utility hooks\nexport { useResize } from \"./useResize\";\nexport type { UseResizeOptions, UseResizeReturn } from \"./useResize\";\n\nexport { useResponsiveSidebar } from \"./useResponsiveSidebar\";\nexport type {\n UseResponsiveSidebarOptions,\n UseResponsiveSidebarReturn,\n} from \"./useResponsiveSidebar\";\n\nexport { useKeyboardShortcut } from \"./useKeyboardShortcut\";\nexport type { UseKeyboardShortcutOptions } from \"./useKeyboardShortcut\";\n\nexport { useFocusManagement } from \"./useFocusManagement\";\nexport type { UseFocusManagementOptions } from \"./useFocusManagement\";\n\nexport { useGroupState } from \"./useGroupState\";\nexport type { UseGroupStateOptions, UseGroupStateReturn } from \"../types\";\n\n// Navigation and content hooks\nexport { useSideNavbarNavigation } from \"./useSideNavbarNavigation\";\nexport { useSideNavbarContent } from \"./useSideNavbarContent\";\n\n/**\n * Combined hook to access all root contexts\n *\n * Returns an object with theme, config, and state contexts.\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const { theme, config, state } = useSideNavbarCombined();\n * // Access theme.variant, config.mode, state.collapsed, etc.\n * }\n * ```\n */\nexport function useSideNavbarCombined() {\n // Import here to avoid circular dependencies\n const theme = useSideNavbarThemeRequired();\n const config = useSideNavbarConfigRequired();\n const state = useSideNavbarStateRequired();\n\n return { theme, config, state };\n}\n"],"names":["useSideNavbarCombined","theme","useSideNavbarThemeRequired","config","useSideNavbarConfigRequired","state","useSideNavbarStateRequired"],"mappings":";;;;;;;AA8DO,SAASA,IAAwB;AAEtC,QAAMC,IAAQC,EAAA,GACRC,IAASC,EAAA,GACTC,IAAQC,EAAA;AAEd,SAAO,EAAE,OAAAL,GAAO,QAAAE,GAAQ,OAAAE,EAAA;AAC1B;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useSidebarSlot as e } from "../contexts/SidebarSlotContext.js";
|
|
3
|
+
import { useSidebar as s } from "../contexts/SidebarContext.js";
|
|
4
|
+
function u() {
|
|
5
|
+
var l, c, t, r;
|
|
6
|
+
const o = e(), i = s();
|
|
7
|
+
return {
|
|
8
|
+
activeSlot: (l = o == null ? void 0 : o.activeSlot) != null ? l : null,
|
|
9
|
+
setActiveSlot: (c = o == null ? void 0 : o.setActiveSlot) != null ? c : (() => {
|
|
10
|
+
}),
|
|
11
|
+
scrollPosition: (t = i == null ? void 0 : i.scrollPosition) != null ? t : 0,
|
|
12
|
+
setScrollPosition: (r = i == null ? void 0 : i.setScrollPosition) != null ? r : (() => {
|
|
13
|
+
})
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export {
|
|
17
|
+
u as useSideNavbarContent
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=useSideNavbarContent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSideNavbarContent.js","sources":["../../../../../../src/ui/components/SideNavbar/hooks/useSideNavbarContent.ts"],"sourcesContent":["\"use client\";\n\nimport { useSidebarSlot } from \"../contexts/SidebarSlotContext\";\nimport { useSidebar } from \"../contexts/SidebarContext\";\n\n/**\n * Hook for content/slot management\n *\n * Provides access to sidebar slot state and scroll position.\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const { activeSlot, setActiveSlot, scrollPosition } = useSideNavbarContent();\n *\n * return (\n * <div>\n * <p>Active slot: {activeSlot}</p>\n * <p>Scroll position: {scrollPosition}px</p>\n * </div>\n * );\n * }\n * ```\n */\nexport function useSideNavbarContent() {\n const slotContext = useSidebarSlot();\n const sidebarContext = useSidebar();\n\n return {\n activeSlot: slotContext?.activeSlot ?? null,\n setActiveSlot: slotContext?.setActiveSlot ?? (() => {}),\n scrollPosition: sidebarContext?.scrollPosition ?? 0,\n setScrollPosition: sidebarContext?.setScrollPosition ?? (() => {}),\n };\n}\n"],"names":["useSideNavbarContent","slotContext","useSidebarSlot","sidebarContext","useSidebar","_a","_b","_c","_d"],"mappings":";;;AAwBO,SAASA,IAAuB;;AACrC,QAAMC,IAAcC,EAAA,GACdC,IAAiBC,EAAA;AAEvB,SAAO;AAAA,IACL,aAAYC,IAAAJ,KAAA,gBAAAA,EAAa,eAAb,OAAAI,IAA2B;AAAA,IACvC,gBAAeC,IAAAL,KAAA,gBAAAA,EAAa,kBAAb,OAAAK,KAA+B,MAAM;AAAA,IAAC;AAAA,IACrD,iBAAgBC,IAAAJ,KAAA,gBAAAA,EAAgB,mBAAhB,OAAAI,IAAkC;AAAA,IAClD,oBAAmBC,IAAAL,KAAA,gBAAAA,EAAgB,sBAAhB,OAAAK,KAAsC,MAAM;AAAA,IAAC;AAAA,EAAA;AAEpE;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useCallback as c } from "react";
|
|
3
|
+
import { useNavbarRequired as s } from "../contexts/NavbarContext.js";
|
|
4
|
+
import { useSidebarSlot as m } from "../contexts/SidebarSlotContext.js";
|
|
5
|
+
function f() {
|
|
6
|
+
const { activeItem: r, setActiveItem: t } = s(), e = m(), a = c(
|
|
7
|
+
(o, i) => {
|
|
8
|
+
t(o), i && (e != null && e.setActiveSlot) && e.setActiveSlot(i);
|
|
9
|
+
},
|
|
10
|
+
[t, e]
|
|
11
|
+
);
|
|
12
|
+
return {
|
|
13
|
+
activeItem: r,
|
|
14
|
+
setActiveItem: t,
|
|
15
|
+
navigate: a
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export {
|
|
19
|
+
f as useSideNavbarNavigation
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=useSideNavbarNavigation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSideNavbarNavigation.js","sources":["../../../../../../src/ui/components/SideNavbar/hooks/useSideNavbarNavigation.ts"],"sourcesContent":["\"use client\";\n\nimport { useCallback } from \"react\";\nimport { useNavbarRequired } from \"../contexts/NavbarContext\";\nimport { useSidebarSlot } from \"../contexts/SidebarSlotContext\";\n\n/**\n * Hook for navigation-related state and actions\n *\n * Provides convenience methods for navigating between navbar items\n * and managing associated sidebar slots.\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const { activeItem, navigate } = useSideNavbarNavigation();\n *\n * return (\n * <button onClick={() => navigate('dashboard', 'dashboard-content')}>\n * Go to Dashboard\n * </button>\n * );\n * }\n * ```\n */\nexport function useSideNavbarNavigation() {\n const { activeItem, setActiveItem } = useNavbarRequired();\n const slotContext = useSidebarSlot();\n\n const navigate = useCallback(\n (itemId: string, slotId?: string) => {\n setActiveItem(itemId);\n if (slotId && slotContext?.setActiveSlot) {\n slotContext.setActiveSlot(slotId);\n }\n },\n [setActiveItem, slotContext],\n );\n\n return {\n activeItem,\n setActiveItem,\n navigate,\n };\n}\n"],"names":["useSideNavbarNavigation","activeItem","setActiveItem","useNavbarRequired","slotContext","useSidebarSlot","navigate","useCallback","itemId","slotId"],"mappings":";;;;AAyBO,SAASA,IAA0B;AACxC,QAAM,EAAE,YAAAC,GAAY,eAAAC,EAAA,IAAkBC,EAAA,GAChCC,IAAcC,EAAA,GAEdC,IAAWC;AAAA,IACf,CAACC,GAAgBC,MAAoB;AACnC,MAAAP,EAAcM,CAAM,GAChBC,MAAUL,KAAA,QAAAA,EAAa,kBACzBA,EAAY,cAAcK,CAAM;AAAA,IAEpC;AAAA,IACA,CAACP,GAAeE,CAAW;AAAA,EAAA;AAG7B,SAAO;AAAA,IACL,YAAAH;AAAA,IACA,eAAAC;AAAA,IACA,UAAAI;AAAA,EAAA;AAEJ;"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as g } from "react/jsx-runtime";
|
|
3
|
+
import { useMemo as x } from "react";
|
|
4
|
+
import { defaultConfigValues as o, SideNavbarConfigContext as b } from "../contexts/SideNavbarConfigContext.js";
|
|
5
|
+
function j({
|
|
6
|
+
children: C,
|
|
7
|
+
mode: r = o.mode,
|
|
8
|
+
resizable: e = o.resizable,
|
|
9
|
+
minWidth: i = o.minWidth,
|
|
10
|
+
maxWidth: t = o.maxWidth,
|
|
11
|
+
snapPoints: n = o.snapPoints,
|
|
12
|
+
responsive: f = o.responsive,
|
|
13
|
+
mobileBreakpoint: a = o.mobileBreakpoint,
|
|
14
|
+
mobileVariant: m = o.mobileVariant,
|
|
15
|
+
overlayBackdrop: u = o.overlayBackdrop,
|
|
16
|
+
persistState: d = o.persistState,
|
|
17
|
+
persistWidth: s = o.persistWidth,
|
|
18
|
+
storageKey: v = o.storageKey,
|
|
19
|
+
keyboardShortcut: l = o.keyboardShortcut,
|
|
20
|
+
enableKeyboardShortcut: p = o.enableKeyboardShortcut
|
|
21
|
+
}) {
|
|
22
|
+
const c = x(
|
|
23
|
+
() => ({
|
|
24
|
+
mode: r,
|
|
25
|
+
resizable: e,
|
|
26
|
+
minWidth: i,
|
|
27
|
+
maxWidth: t,
|
|
28
|
+
snapPoints: n,
|
|
29
|
+
responsive: f,
|
|
30
|
+
mobileBreakpoint: a,
|
|
31
|
+
mobileVariant: m,
|
|
32
|
+
overlayBackdrop: u,
|
|
33
|
+
persistState: d,
|
|
34
|
+
persistWidth: s,
|
|
35
|
+
storageKey: v,
|
|
36
|
+
keyboardShortcut: l,
|
|
37
|
+
enableKeyboardShortcut: p
|
|
38
|
+
}),
|
|
39
|
+
[
|
|
40
|
+
r,
|
|
41
|
+
e,
|
|
42
|
+
i,
|
|
43
|
+
t,
|
|
44
|
+
n,
|
|
45
|
+
f,
|
|
46
|
+
a,
|
|
47
|
+
m,
|
|
48
|
+
u,
|
|
49
|
+
d,
|
|
50
|
+
s,
|
|
51
|
+
v,
|
|
52
|
+
l,
|
|
53
|
+
p
|
|
54
|
+
]
|
|
55
|
+
);
|
|
56
|
+
return /* @__PURE__ */ g(b.Provider, { value: c, children: C });
|
|
57
|
+
}
|
|
58
|
+
export {
|
|
59
|
+
j as SideNavbarConfigProvider
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=SideNavbarConfigProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SideNavbarConfigProvider.js","sources":["../../../../../../src/ui/components/SideNavbar/providers/SideNavbarConfigProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport { useMemo } from \"react\";\nimport {\n SideNavbarConfigContext,\n defaultConfigValues,\n} from \"../contexts/SideNavbarConfigContext\";\nimport type { SideNavbarConfigProviderProps } from \"../types\";\n\n/**\n * Config Provider for SideNavbar\n *\n * Provides behavioral configuration context for the sidebar.\n * Config values are typically set once and don't change during runtime.\n *\n * @example\n * ```tsx\n * <SideNavbarConfigProvider mode=\"full\" resizable responsive>\n * <SideNavbarStateProvider>\n * <SideNavbarRoot>...</SideNavbarRoot>\n * </SideNavbarStateProvider>\n * </SideNavbarConfigProvider>\n * ```\n */\nexport function SideNavbarConfigProvider({\n children,\n mode = defaultConfigValues.mode,\n resizable = defaultConfigValues.resizable,\n minWidth = defaultConfigValues.minWidth,\n maxWidth = defaultConfigValues.maxWidth,\n snapPoints = defaultConfigValues.snapPoints,\n responsive = defaultConfigValues.responsive,\n mobileBreakpoint = defaultConfigValues.mobileBreakpoint,\n mobileVariant = defaultConfigValues.mobileVariant,\n overlayBackdrop = defaultConfigValues.overlayBackdrop,\n persistState = defaultConfigValues.persistState,\n persistWidth = defaultConfigValues.persistWidth,\n storageKey = defaultConfigValues.storageKey,\n keyboardShortcut = defaultConfigValues.keyboardShortcut,\n enableKeyboardShortcut = defaultConfigValues.enableKeyboardShortcut,\n}: SideNavbarConfigProviderProps) {\n const value = useMemo(\n () => ({\n mode,\n resizable,\n minWidth,\n maxWidth,\n snapPoints,\n responsive,\n mobileBreakpoint,\n mobileVariant,\n overlayBackdrop,\n persistState,\n persistWidth,\n storageKey,\n keyboardShortcut,\n enableKeyboardShortcut,\n }),\n [\n mode,\n resizable,\n minWidth,\n maxWidth,\n snapPoints,\n responsive,\n mobileBreakpoint,\n mobileVariant,\n overlayBackdrop,\n persistState,\n persistWidth,\n storageKey,\n keyboardShortcut,\n enableKeyboardShortcut,\n ],\n );\n\n return (\n <SideNavbarConfigContext.Provider value={value}>\n {children}\n </SideNavbarConfigContext.Provider>\n );\n}\n\nexport default SideNavbarConfigProvider;\n"],"names":["SideNavbarConfigProvider","children","mode","defaultConfigValues","resizable","minWidth","maxWidth","snapPoints","responsive","mobileBreakpoint","mobileVariant","overlayBackdrop","persistState","persistWidth","storageKey","keyboardShortcut","enableKeyboardShortcut","value","useMemo","jsx","SideNavbarConfigContext"],"mappings":";;;;AAwBO,SAASA,EAAyB;AAAA,EACvC,UAAAC;AAAA,EACA,MAAAC,IAAOC,EAAoB;AAAA,EAC3B,WAAAC,IAAYD,EAAoB;AAAA,EAChC,UAAAE,IAAWF,EAAoB;AAAA,EAC/B,UAAAG,IAAWH,EAAoB;AAAA,EAC/B,YAAAI,IAAaJ,EAAoB;AAAA,EACjC,YAAAK,IAAaL,EAAoB;AAAA,EACjC,kBAAAM,IAAmBN,EAAoB;AAAA,EACvC,eAAAO,IAAgBP,EAAoB;AAAA,EACpC,iBAAAQ,IAAkBR,EAAoB;AAAA,EACtC,cAAAS,IAAeT,EAAoB;AAAA,EACnC,cAAAU,IAAeV,EAAoB;AAAA,EACnC,YAAAW,IAAaX,EAAoB;AAAA,EACjC,kBAAAY,IAAmBZ,EAAoB;AAAA,EACvC,wBAAAa,IAAyBb,EAAoB;AAC/C,GAAkC;AAChC,QAAMc,IAAQC;AAAA,IACZ,OAAO;AAAA,MACL,MAAAhB;AAAA,MACA,WAAAE;AAAA,MACA,UAAAC;AAAA,MACA,UAAAC;AAAA,MACA,YAAAC;AAAA,MACA,YAAAC;AAAA,MACA,kBAAAC;AAAA,MACA,eAAAC;AAAA,MACA,iBAAAC;AAAA,MACA,cAAAC;AAAA,MACA,cAAAC;AAAA,MACA,YAAAC;AAAA,MACA,kBAAAC;AAAA,MACA,wBAAAC;AAAA,IAAA;AAAA,IAEF;AAAA,MACEd;AAAA,MACAE;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,IAAA;AAAA,EACF;AAGF,SACE,gBAAAG,EAACC,EAAwB,UAAxB,EAAiC,OAAAH,GAC/B,UAAAhB,EAAA,CACH;AAEJ;"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as r } from "react/jsx-runtime";
|
|
3
|
+
import { SideNavbarThemeProvider as q } from "./SideNavbarThemeProvider.js";
|
|
4
|
+
import { SideNavbarConfigProvider as w } from "./SideNavbarConfigProvider.js";
|
|
5
|
+
import { SideNavbarStateProvider as y } from "./SideNavbarStateProvider.js";
|
|
6
|
+
function E({
|
|
7
|
+
children: e,
|
|
8
|
+
// Theme props
|
|
9
|
+
variant: i,
|
|
10
|
+
navigationWidth: o,
|
|
11
|
+
contentWidth: d,
|
|
12
|
+
animationDuration: t,
|
|
13
|
+
animationEasing: a,
|
|
14
|
+
// Config props
|
|
15
|
+
mode: m,
|
|
16
|
+
resizable: v,
|
|
17
|
+
minWidth: n,
|
|
18
|
+
maxWidth: f,
|
|
19
|
+
snapPoints: p,
|
|
20
|
+
responsive: S,
|
|
21
|
+
mobileBreakpoint: b,
|
|
22
|
+
mobileVariant: c,
|
|
23
|
+
overlayBackdrop: N,
|
|
24
|
+
persistState: P,
|
|
25
|
+
persistWidth: h,
|
|
26
|
+
storageKey: l,
|
|
27
|
+
keyboardShortcut: u,
|
|
28
|
+
enableKeyboardShortcut: s,
|
|
29
|
+
// State props
|
|
30
|
+
defaultCollapsed: x,
|
|
31
|
+
collapsed: g,
|
|
32
|
+
onCollapseChange: j,
|
|
33
|
+
onWidthChange: C,
|
|
34
|
+
onMobileChange: T,
|
|
35
|
+
exclusiveGroups: k
|
|
36
|
+
}) {
|
|
37
|
+
return /* @__PURE__ */ r(
|
|
38
|
+
q,
|
|
39
|
+
{
|
|
40
|
+
variant: i,
|
|
41
|
+
navigationWidth: o,
|
|
42
|
+
contentWidth: d,
|
|
43
|
+
animationDuration: t,
|
|
44
|
+
animationEasing: a,
|
|
45
|
+
children: /* @__PURE__ */ r(
|
|
46
|
+
w,
|
|
47
|
+
{
|
|
48
|
+
mode: m,
|
|
49
|
+
resizable: v,
|
|
50
|
+
minWidth: n,
|
|
51
|
+
maxWidth: f,
|
|
52
|
+
snapPoints: p,
|
|
53
|
+
responsive: S,
|
|
54
|
+
mobileBreakpoint: b,
|
|
55
|
+
mobileVariant: c,
|
|
56
|
+
overlayBackdrop: N,
|
|
57
|
+
persistState: P,
|
|
58
|
+
persistWidth: h,
|
|
59
|
+
storageKey: l,
|
|
60
|
+
keyboardShortcut: u,
|
|
61
|
+
enableKeyboardShortcut: s,
|
|
62
|
+
children: /* @__PURE__ */ r(
|
|
63
|
+
y,
|
|
64
|
+
{
|
|
65
|
+
defaultCollapsed: x,
|
|
66
|
+
collapsed: g,
|
|
67
|
+
onCollapseChange: j,
|
|
68
|
+
onWidthChange: C,
|
|
69
|
+
onMobileChange: T,
|
|
70
|
+
exclusiveGroups: k,
|
|
71
|
+
children: e
|
|
72
|
+
}
|
|
73
|
+
)
|
|
74
|
+
}
|
|
75
|
+
)
|
|
76
|
+
}
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
export {
|
|
80
|
+
E as SideNavbarProvider
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=SideNavbarProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SideNavbarProvider.js","sources":["../../../../../../src/ui/components/SideNavbar/providers/SideNavbarProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport { SideNavbarThemeProvider } from \"./SideNavbarThemeProvider\";\nimport { SideNavbarConfigProvider } from \"./SideNavbarConfigProvider\";\nimport { SideNavbarStateProvider } from \"./SideNavbarStateProvider\";\nimport type { SideNavbarProviderProps } from \"../types\";\n\n/**\n * Combined Provider for SideNavbar\n *\n * Convenience component that wraps all three context providers\n * (Theme, Config, State) with a single component.\n *\n * For most use cases, use this combined provider.\n * For advanced customization, use individual providers.\n *\n * @example\n * ```tsx\n * <SideNavbarProvider\n * variant=\"elevated\"\n * mode=\"full\"\n * resizable\n * responsive\n * defaultCollapsed\n * onCollapseChange={handleChange}\n * >\n * <SideNavbarRoot>...</SideNavbarRoot>\n * </SideNavbarProvider>\n * ```\n */\nexport function SideNavbarProvider({\n children,\n // Theme props\n variant,\n navigationWidth,\n contentWidth,\n animationDuration,\n animationEasing,\n // Config props\n mode,\n resizable,\n minWidth,\n maxWidth,\n snapPoints,\n responsive,\n mobileBreakpoint,\n mobileVariant,\n overlayBackdrop,\n persistState,\n persistWidth,\n storageKey,\n keyboardShortcut,\n enableKeyboardShortcut,\n // State props\n defaultCollapsed,\n collapsed,\n onCollapseChange,\n onWidthChange,\n onMobileChange,\n exclusiveGroups,\n}: SideNavbarProviderProps) {\n return (\n <SideNavbarThemeProvider\n variant={variant}\n navigationWidth={navigationWidth}\n contentWidth={contentWidth}\n animationDuration={animationDuration}\n animationEasing={animationEasing}\n >\n <SideNavbarConfigProvider\n mode={mode}\n resizable={resizable}\n minWidth={minWidth}\n maxWidth={maxWidth}\n snapPoints={snapPoints}\n responsive={responsive}\n mobileBreakpoint={mobileBreakpoint}\n mobileVariant={mobileVariant}\n overlayBackdrop={overlayBackdrop}\n persistState={persistState}\n persistWidth={persistWidth}\n storageKey={storageKey}\n keyboardShortcut={keyboardShortcut}\n enableKeyboardShortcut={enableKeyboardShortcut}\n >\n <SideNavbarStateProvider\n defaultCollapsed={defaultCollapsed}\n collapsed={collapsed}\n onCollapseChange={onCollapseChange}\n onWidthChange={onWidthChange}\n onMobileChange={onMobileChange}\n exclusiveGroups={exclusiveGroups}\n >\n {children}\n </SideNavbarStateProvider>\n </SideNavbarConfigProvider>\n </SideNavbarThemeProvider>\n );\n}\n\nexport default SideNavbarProvider;\n"],"names":["SideNavbarProvider","children","variant","navigationWidth","contentWidth","animationDuration","animationEasing","mode","resizable","minWidth","maxWidth","snapPoints","responsive","mobileBreakpoint","mobileVariant","overlayBackdrop","persistState","persistWidth","storageKey","keyboardShortcut","enableKeyboardShortcut","defaultCollapsed","collapsed","onCollapseChange","onWidthChange","onMobileChange","exclusiveGroups","jsx","SideNavbarThemeProvider","SideNavbarConfigProvider","SideNavbarStateProvider"],"mappings":";;;;;AA8BO,SAASA,EAAmB;AAAA,EACjC,UAAAC;AAAA;AAAA,EAEA,SAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,iBAAAC;AAAA;AAAA,EAEA,MAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,cAAAC;AAAA,EACA,YAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,wBAAAC;AAAA;AAAA,EAEA,kBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,iBAAAC;AACF,GAA4B;AAC1B,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,SAAA1B;AAAA,MACA,iBAAAC;AAAA,MACA,cAAAC;AAAA,MACA,mBAAAC;AAAA,MACA,iBAAAC;AAAA,MAEA,UAAA,gBAAAqB;AAAA,QAACE;AAAA,QAAA;AAAA,UACC,MAAAtB;AAAA,UACA,WAAAC;AAAA,UACA,UAAAC;AAAA,UACA,UAAAC;AAAA,UACA,YAAAC;AAAA,UACA,YAAAC;AAAA,UACA,kBAAAC;AAAA,UACA,eAAAC;AAAA,UACA,iBAAAC;AAAA,UACA,cAAAC;AAAA,UACA,cAAAC;AAAA,UACA,YAAAC;AAAA,UACA,kBAAAC;AAAA,UACA,wBAAAC;AAAA,UAEA,UAAA,gBAAAO;AAAA,YAACG;AAAA,YAAA;AAAA,cACC,kBAAAT;AAAA,cACA,WAAAC;AAAA,cACA,kBAAAC;AAAA,cACA,eAAAC;AAAA,cACA,gBAAAC;AAAA,cACA,iBAAAC;AAAA,cAEC,UAAAzB;AAAA,YAAA;AAAA,UAAA;AAAA,QACH;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN;"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
var J = Object.defineProperty, L = Object.defineProperties;
|
|
3
|
+
var M = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var j = Object.getOwnPropertySymbols;
|
|
5
|
+
var Q = Object.prototype.hasOwnProperty, U = Object.prototype.propertyIsEnumerable;
|
|
6
|
+
var q = (i, s, r) => s in i ? J(i, s, { enumerable: !0, configurable: !0, writable: !0, value: r }) : i[s] = r, K = (i, s) => {
|
|
7
|
+
for (var r in s || (s = {}))
|
|
8
|
+
Q.call(s, r) && q(i, r, s[r]);
|
|
9
|
+
if (j)
|
|
10
|
+
for (var r of j(s))
|
|
11
|
+
U.call(s, r) && q(i, r, s[r]);
|
|
12
|
+
return i;
|
|
13
|
+
}, W = (i, s) => L(i, M(s));
|
|
14
|
+
import { jsx as X } from "react/jsx-runtime";
|
|
15
|
+
import { useRef as Y, useState as B, useCallback as f, useEffect as F, useMemo as Z } from "react";
|
|
16
|
+
import { SideNavbarStateContext as _ } from "../contexts/SideNavbarStateContext.js";
|
|
17
|
+
import { useSideNavbarThemeRequired as C } from "../contexts/SideNavbarThemeContext.js";
|
|
18
|
+
import { useSideNavbarConfigRequired as tt } from "../contexts/SideNavbarConfigContext.js";
|
|
19
|
+
import { useResize as et } from "../hooks/useResize.js";
|
|
20
|
+
import { useResponsiveSidebar as rt } from "../hooks/useResponsiveSidebar.js";
|
|
21
|
+
import { useFocusManagement as st } from "../hooks/useFocusManagement.js";
|
|
22
|
+
import { useKeyboardShortcut as it } from "../hooks/useKeyboardShortcut.js";
|
|
23
|
+
import { parseKeyboardShortcut as ot } from "../utils/parseKeyboardShortcut.js";
|
|
24
|
+
import { parseWidthToPixels as at } from "../utils/parseWidth.js";
|
|
25
|
+
function ht({
|
|
26
|
+
children: i,
|
|
27
|
+
defaultCollapsed: s = !1,
|
|
28
|
+
collapsed: r,
|
|
29
|
+
onCollapseChange: d,
|
|
30
|
+
onWidthChange: S,
|
|
31
|
+
onMobileChange: y,
|
|
32
|
+
exclusiveGroups: R = !1
|
|
33
|
+
}) {
|
|
34
|
+
const O = C(), t = tt(), v = Y(null), a = r !== void 0, V = () => {
|
|
35
|
+
if (a) return r;
|
|
36
|
+
if (t.storageKey && t.persistState && typeof window != "undefined") {
|
|
37
|
+
const e = localStorage.getItem(`${t.storageKey}-collapsed`);
|
|
38
|
+
if (e !== null)
|
|
39
|
+
return e === "true";
|
|
40
|
+
}
|
|
41
|
+
return s;
|
|
42
|
+
}, A = () => {
|
|
43
|
+
if (t.storageKey && t.persistWidth && typeof window != "undefined") {
|
|
44
|
+
const e = localStorage.getItem(`${t.storageKey}-width`);
|
|
45
|
+
if (e !== null) {
|
|
46
|
+
const o = parseInt(e, 10);
|
|
47
|
+
if (!isNaN(o)) return o;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return at(O.contentWidth);
|
|
51
|
+
}, [n, b] = B(
|
|
52
|
+
V
|
|
53
|
+
), [k, g] = B({}), { isMobile: u } = rt({
|
|
54
|
+
mobileBreakpoint: t.mobileBreakpoint,
|
|
55
|
+
onMobileChange: (e) => {
|
|
56
|
+
y == null || y(e), e && t.mobileVariant === "collapse" && !a && b(!0);
|
|
57
|
+
},
|
|
58
|
+
enabled: t.responsive
|
|
59
|
+
}), {
|
|
60
|
+
width: z,
|
|
61
|
+
isResizing: N,
|
|
62
|
+
startResize: x,
|
|
63
|
+
setWidth: I
|
|
64
|
+
} = et({
|
|
65
|
+
initialWidth: A(),
|
|
66
|
+
minWidth: t.minWidth,
|
|
67
|
+
maxWidth: t.maxWidth,
|
|
68
|
+
snapPoints: t.snapPoints,
|
|
69
|
+
onWidthChange: (e) => {
|
|
70
|
+
S == null || S(e), t.storageKey && t.persistWidth && typeof window != "undefined" && localStorage.setItem(`${t.storageKey}-width`, String(e));
|
|
71
|
+
},
|
|
72
|
+
enabled: t.resizable && !u
|
|
73
|
+
});
|
|
74
|
+
st({
|
|
75
|
+
isActive: u && t.mobileVariant === "overlay" && !n,
|
|
76
|
+
containerRef: v,
|
|
77
|
+
restoreFocus: !0
|
|
78
|
+
});
|
|
79
|
+
const m = a ? r : n, l = f(
|
|
80
|
+
(e) => {
|
|
81
|
+
a || b(e), d == null || d(e);
|
|
82
|
+
},
|
|
83
|
+
[a, d]
|
|
84
|
+
), h = f(() => {
|
|
85
|
+
l(!m);
|
|
86
|
+
}, [m, l]), c = ot(t.keyboardShortcut);
|
|
87
|
+
it({
|
|
88
|
+
key: c.key,
|
|
89
|
+
ctrl: c.ctrl,
|
|
90
|
+
shift: c.shift,
|
|
91
|
+
alt: c.alt,
|
|
92
|
+
meta: c.meta,
|
|
93
|
+
onTrigger: h,
|
|
94
|
+
enabled: t.enableKeyboardShortcut
|
|
95
|
+
});
|
|
96
|
+
const P = f(
|
|
97
|
+
(e) => {
|
|
98
|
+
I(e);
|
|
99
|
+
},
|
|
100
|
+
[I]
|
|
101
|
+
), $ = f(
|
|
102
|
+
(e) => {
|
|
103
|
+
g(R ? (o) => {
|
|
104
|
+
const H = o[e] === !1, w = {}, T = /* @__PURE__ */ new Set([...Object.keys(o), e]);
|
|
105
|
+
return H ? T.forEach((p) => {
|
|
106
|
+
w[p] = !0;
|
|
107
|
+
}) : T.forEach((p) => {
|
|
108
|
+
w[p] = p !== e;
|
|
109
|
+
}), w;
|
|
110
|
+
} : (o) => W(K({}, o), {
|
|
111
|
+
[e]: !o[e]
|
|
112
|
+
}));
|
|
113
|
+
},
|
|
114
|
+
[R]
|
|
115
|
+
), E = f(
|
|
116
|
+
(e, o) => {
|
|
117
|
+
g((G) => W(K({}, G), {
|
|
118
|
+
[e]: o
|
|
119
|
+
}));
|
|
120
|
+
},
|
|
121
|
+
[]
|
|
122
|
+
);
|
|
123
|
+
F(() => {
|
|
124
|
+
a && r !== n && b(r);
|
|
125
|
+
}, [a, r, n]), F(() => {
|
|
126
|
+
t.storageKey && t.persistState && typeof window != "undefined" && !a && localStorage.setItem(
|
|
127
|
+
`${t.storageKey}-collapsed`,
|
|
128
|
+
String(n)
|
|
129
|
+
);
|
|
130
|
+
}, [t.storageKey, t.persistState, n, a]);
|
|
131
|
+
const D = Z(
|
|
132
|
+
() => ({
|
|
133
|
+
collapsed: m,
|
|
134
|
+
toggle: h,
|
|
135
|
+
setCollapsed: l,
|
|
136
|
+
currentWidth: z,
|
|
137
|
+
setWidth: P,
|
|
138
|
+
isMobile: u,
|
|
139
|
+
isResizing: N,
|
|
140
|
+
startResize: x,
|
|
141
|
+
groupStates: k,
|
|
142
|
+
toggleGroup: $,
|
|
143
|
+
setGroupCollapsed: E,
|
|
144
|
+
sidebarRef: v
|
|
145
|
+
}),
|
|
146
|
+
[
|
|
147
|
+
m,
|
|
148
|
+
h,
|
|
149
|
+
l,
|
|
150
|
+
z,
|
|
151
|
+
P,
|
|
152
|
+
u,
|
|
153
|
+
N,
|
|
154
|
+
x,
|
|
155
|
+
k,
|
|
156
|
+
$,
|
|
157
|
+
E
|
|
158
|
+
]
|
|
159
|
+
);
|
|
160
|
+
return /* @__PURE__ */ X(_.Provider, { value: D, children: i });
|
|
161
|
+
}
|
|
162
|
+
export {
|
|
163
|
+
ht as SideNavbarStateProvider
|
|
164
|
+
};
|
|
165
|
+
//# sourceMappingURL=SideNavbarStateProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SideNavbarStateProvider.js","sources":["../../../../../../src/ui/components/SideNavbar/providers/SideNavbarStateProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState, useCallback, useEffect, useRef, useMemo } from \"react\";\nimport { SideNavbarStateContext } from \"../contexts/SideNavbarStateContext\";\nimport { useSideNavbarThemeRequired } from \"../contexts/SideNavbarThemeContext\";\nimport { useSideNavbarConfigRequired } from \"../contexts/SideNavbarConfigContext\";\nimport { useResize } from \"../hooks/useResize\";\nimport { useResponsiveSidebar } from \"../hooks/useResponsiveSidebar\";\nimport { useFocusManagement } from \"../hooks/useFocusManagement\";\nimport { useKeyboardShortcut } from \"../hooks/useKeyboardShortcut\";\nimport { parseWidthToPixels, parseKeyboardShortcut } from \"../utils\";\nimport type {\n SideNavbarStateProviderProps,\n SideNavbarStateContextValue,\n} from \"../types\";\n\n/**\n * State Provider for SideNavbar\n *\n * Provides runtime state management for the sidebar.\n * Manages collapse state, resize, responsive behavior, and group states.\n *\n * Must be nested inside SideNavbarThemeProvider and SideNavbarConfigProvider.\n *\n * @example\n * ```tsx\n * <SideNavbarThemeProvider>\n * <SideNavbarConfigProvider>\n * <SideNavbarStateProvider defaultCollapsed onCollapseChange={handleChange}>\n * <SideNavbarRoot>...</SideNavbarRoot>\n * </SideNavbarStateProvider>\n * </SideNavbarConfigProvider>\n * </SideNavbarThemeProvider>\n * ```\n */\nexport function SideNavbarStateProvider({\n children,\n defaultCollapsed = false,\n collapsed: controlledCollapsed,\n onCollapseChange,\n onWidthChange,\n onMobileChange,\n exclusiveGroups = false,\n}: SideNavbarStateProviderProps) {\n const theme = useSideNavbarThemeRequired();\n const config = useSideNavbarConfigRequired();\n const sidebarRef = useRef<HTMLElement | null>(null);\n\n // Determine if component is controlled\n const isControlled = controlledCollapsed !== undefined;\n\n // Initialize collapsed state from storage or default\n const getInitialCollapsedState = (): boolean => {\n if (isControlled) return controlledCollapsed;\n if (\n config.storageKey &&\n config.persistState &&\n typeof window !== \"undefined\"\n ) {\n const stored = localStorage.getItem(`${config.storageKey}-collapsed`);\n if (stored !== null) {\n return stored === \"true\";\n }\n }\n return defaultCollapsed;\n };\n\n // Initialize width state from storage or default\n const getInitialWidth = (): number => {\n if (\n config.storageKey &&\n config.persistWidth &&\n typeof window !== \"undefined\"\n ) {\n const stored = localStorage.getItem(`${config.storageKey}-width`);\n if (stored !== null) {\n const parsedWidth = parseInt(stored, 10);\n if (!isNaN(parsedWidth)) return parsedWidth;\n }\n }\n return parseWidthToPixels(theme.contentWidth);\n };\n\n const [internalCollapsed, setInternalCollapsed] = useState<boolean>(\n getInitialCollapsedState,\n );\n const [groupStates, setGroupStates] = useState<Record<string, boolean>>({});\n\n // Responsive sidebar\n const { isMobile } = useResponsiveSidebar({\n mobileBreakpoint: config.mobileBreakpoint,\n onMobileChange: (mobile) => {\n onMobileChange?.(mobile);\n // Auto-collapse on mobile if using collapse variant\n if (mobile && config.mobileVariant === \"collapse\" && !isControlled) {\n setInternalCollapsed(true);\n }\n },\n enabled: config.responsive,\n });\n\n // Resize functionality\n const {\n width: resizeWidth,\n isResizing,\n startResize,\n setWidth: setResizeWidth,\n } = useResize({\n initialWidth: getInitialWidth(),\n minWidth: config.minWidth,\n maxWidth: config.maxWidth,\n snapPoints: config.snapPoints,\n onWidthChange: (newWidth) => {\n onWidthChange?.(newWidth);\n // Persist width if enabled\n if (\n config.storageKey &&\n config.persistWidth &&\n typeof window !== \"undefined\"\n ) {\n localStorage.setItem(`${config.storageKey}-width`, String(newWidth));\n }\n },\n enabled: config.resizable && !isMobile,\n });\n\n // Focus management for mobile overlay\n useFocusManagement({\n isActive:\n isMobile && config.mobileVariant === \"overlay\" && !internalCollapsed,\n containerRef: sidebarRef,\n restoreFocus: true,\n });\n\n // Derived collapsed state\n const collapsed = isControlled ? controlledCollapsed : internalCollapsed;\n\n // Set collapsed handler\n const setCollapsed = useCallback(\n (value: boolean) => {\n if (!isControlled) {\n setInternalCollapsed(value);\n }\n onCollapseChange?.(value);\n },\n [isControlled, onCollapseChange],\n );\n\n // Toggle handler\n const toggle = useCallback(() => {\n setCollapsed(!collapsed);\n }, [collapsed, setCollapsed]);\n\n // Keyboard shortcut\n const shortcut = parseKeyboardShortcut(config.keyboardShortcut);\n useKeyboardShortcut({\n key: shortcut.key,\n ctrl: shortcut.ctrl,\n shift: shortcut.shift,\n alt: shortcut.alt,\n meta: shortcut.meta,\n onTrigger: toggle,\n enabled: config.enableKeyboardShortcut,\n });\n\n // Set width handler\n const setWidth = useCallback(\n (newWidth: number) => {\n setResizeWidth(newWidth);\n },\n [setResizeWidth],\n );\n\n // Group state handlers\n const toggleGroup = useCallback(\n (groupId: string) => {\n if (exclusiveGroups) {\n // Exclusive behavior: only one group open at a time (like ButtonGroup)\n // When clicking a group:\n // - If it's open (false = expanded), close it (all groups closed)\n // - If it's closed (true = collapsed or undefined), open it and close all others\n // - After closing, user can click any group (including the same one) to open it again\n setGroupStates((prev) => {\n const currentState = prev[groupId];\n const isCurrentlyOpen = currentState === false; // false means expanded (not collapsed)\n const newStates: Record<string, boolean> = {};\n\n // Get all group IDs (from current state and the one being toggled)\n const allGroupIds = new Set([...Object.keys(prev), groupId]);\n\n if (isCurrentlyOpen) {\n // Group is currently open, close it (and all others remain closed)\n allGroupIds.forEach((id) => {\n newStates[id] = true; // true = collapsed\n });\n } else {\n // Group is currently closed, open it and close all others\n allGroupIds.forEach((id) => {\n newStates[id] = id !== groupId; // true = collapsed, false = expanded\n });\n }\n\n return newStates;\n });\n } else {\n // Default behavior: toggle individual group state\n setGroupStates((prev) => ({\n ...prev,\n [groupId]: !prev[groupId],\n }));\n }\n },\n [exclusiveGroups],\n );\n\n const setGroupCollapsed = useCallback(\n (groupId: string, isCollapsed: boolean) => {\n setGroupStates((prev) => ({\n ...prev,\n [groupId]: isCollapsed,\n }));\n },\n [],\n );\n\n // Sync with controlled value\n useEffect(() => {\n if (isControlled && controlledCollapsed !== internalCollapsed) {\n setInternalCollapsed(controlledCollapsed);\n }\n }, [isControlled, controlledCollapsed, internalCollapsed]);\n\n // Persist collapsed state to storage\n useEffect(() => {\n if (\n config.storageKey &&\n config.persistState &&\n typeof window !== \"undefined\" &&\n !isControlled\n ) {\n localStorage.setItem(\n `${config.storageKey}-collapsed`,\n String(internalCollapsed),\n );\n }\n }, [config.storageKey, config.persistState, internalCollapsed, isControlled]);\n\n const value: SideNavbarStateContextValue = useMemo(\n () => ({\n collapsed,\n toggle,\n setCollapsed,\n currentWidth: resizeWidth,\n setWidth,\n isMobile,\n isResizing,\n startResize,\n groupStates,\n toggleGroup,\n setGroupCollapsed,\n sidebarRef,\n }),\n [\n collapsed,\n toggle,\n setCollapsed,\n resizeWidth,\n setWidth,\n isMobile,\n isResizing,\n startResize,\n groupStates,\n toggleGroup,\n setGroupCollapsed,\n ],\n );\n\n return (\n <SideNavbarStateContext.Provider value={value}>\n {children}\n </SideNavbarStateContext.Provider>\n );\n}\n\nexport default SideNavbarStateProvider;\n"],"names":["SideNavbarStateProvider","children","defaultCollapsed","controlledCollapsed","onCollapseChange","onWidthChange","onMobileChange","exclusiveGroups","theme","useSideNavbarThemeRequired","config","useSideNavbarConfigRequired","sidebarRef","useRef","isControlled","getInitialCollapsedState","stored","getInitialWidth","parsedWidth","parseWidthToPixels","internalCollapsed","setInternalCollapsed","useState","groupStates","setGroupStates","isMobile","useResponsiveSidebar","mobile","resizeWidth","isResizing","startResize","setResizeWidth","useResize","newWidth","useFocusManagement","collapsed","setCollapsed","useCallback","value","toggle","shortcut","parseKeyboardShortcut","useKeyboardShortcut","setWidth","toggleGroup","groupId","prev","isCurrentlyOpen","newStates","allGroupIds","id","__spreadProps","__spreadValues","setGroupCollapsed","isCollapsed","useEffect","useMemo","jsx","SideNavbarStateContext"],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as n } from "react/jsx-runtime";
|
|
3
|
+
import { useMemo as d } from "react";
|
|
4
|
+
import { defaultThemeValues as e, SideNavbarThemeContext as f } from "../contexts/SideNavbarThemeContext.js";
|
|
5
|
+
function p({
|
|
6
|
+
children: a,
|
|
7
|
+
variant: r = e.variant,
|
|
8
|
+
navigationWidth: o = e.navigationWidth,
|
|
9
|
+
contentWidth: t = e.contentWidth,
|
|
10
|
+
animationDuration: m = e.animationDuration,
|
|
11
|
+
animationEasing: i = e.animationEasing
|
|
12
|
+
}) {
|
|
13
|
+
const u = d(
|
|
14
|
+
() => ({
|
|
15
|
+
variant: r,
|
|
16
|
+
navigationWidth: o,
|
|
17
|
+
contentWidth: t,
|
|
18
|
+
animationDuration: m,
|
|
19
|
+
animationEasing: i
|
|
20
|
+
}),
|
|
21
|
+
[
|
|
22
|
+
r,
|
|
23
|
+
o,
|
|
24
|
+
t,
|
|
25
|
+
m,
|
|
26
|
+
i
|
|
27
|
+
]
|
|
28
|
+
);
|
|
29
|
+
return /* @__PURE__ */ n(f.Provider, { value: u, children: a });
|
|
30
|
+
}
|
|
31
|
+
export {
|
|
32
|
+
p as SideNavbarThemeProvider
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=SideNavbarThemeProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SideNavbarThemeProvider.js","sources":["../../../../../../src/ui/components/SideNavbar/providers/SideNavbarThemeProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport { useMemo } from \"react\";\nimport {\n SideNavbarThemeContext,\n defaultThemeValues,\n} from \"../contexts/SideNavbarThemeContext\";\nimport type { SideNavbarThemeProviderProps } from \"../types\";\n\n/**\n * Theme Provider for SideNavbar\n *\n * Provides visual customization context for the sidebar.\n * Theme values are typically set once and don't change during runtime.\n *\n * @example\n * ```tsx\n * <SideNavbarThemeProvider variant=\"elevated\" animationDuration={200}>\n * <SideNavbarConfigProvider>\n * <SideNavbarStateProvider>\n * <SideNavbarRoot>...</SideNavbarRoot>\n * </SideNavbarStateProvider>\n * </SideNavbarConfigProvider>\n * </SideNavbarThemeProvider>\n * ```\n */\nexport function SideNavbarThemeProvider({\n children,\n variant = defaultThemeValues.variant,\n navigationWidth = defaultThemeValues.navigationWidth,\n contentWidth = defaultThemeValues.contentWidth,\n animationDuration = defaultThemeValues.animationDuration,\n animationEasing = defaultThemeValues.animationEasing,\n}: SideNavbarThemeProviderProps) {\n const value = useMemo(\n () => ({\n variant,\n navigationWidth,\n contentWidth,\n animationDuration,\n animationEasing,\n }),\n [\n variant,\n navigationWidth,\n contentWidth,\n animationDuration,\n animationEasing,\n ],\n );\n\n return (\n <SideNavbarThemeContext.Provider value={value}>\n {children}\n </SideNavbarThemeContext.Provider>\n );\n}\n\nexport default SideNavbarThemeProvider;\n"],"names":["SideNavbarThemeProvider","children","variant","defaultThemeValues","navigationWidth","contentWidth","animationDuration","animationEasing","value","useMemo","jsx","SideNavbarThemeContext"],"mappings":";;;;AA0BO,SAASA,EAAwB;AAAA,EACtC,UAAAC;AAAA,EACA,SAAAC,IAAUC,EAAmB;AAAA,EAC7B,iBAAAC,IAAkBD,EAAmB;AAAA,EACrC,cAAAE,IAAeF,EAAmB;AAAA,EAClC,mBAAAG,IAAoBH,EAAmB;AAAA,EACvC,iBAAAI,IAAkBJ,EAAmB;AACvC,GAAiC;AAC/B,QAAMK,IAAQC;AAAA,IACZ,OAAO;AAAA,MACL,SAAAP;AAAA,MACA,iBAAAE;AAAA,MACA,cAAAC;AAAA,MACA,mBAAAC;AAAA,MACA,iBAAAC;AAAA,IAAA;AAAA,IAEF;AAAA,MACEL;AAAA,MACAE;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,IAAA;AAAA,EACF;AAGF,SACE,gBAAAG,EAACC,EAAuB,UAAvB,EAAgC,OAAAH,GAC9B,UAAAP,EAAA,CACH;AAEJ;"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as S } from "react/jsx-runtime";
|
|
3
|
+
import { useState as m, useRef as f, useCallback as n, useMemo as d } from "react";
|
|
4
|
+
import { SidebarSlotContext as p } from "../contexts/SidebarSlotContext.js";
|
|
5
|
+
function g({
|
|
6
|
+
children: l,
|
|
7
|
+
defaultSlot: c = null
|
|
8
|
+
}) {
|
|
9
|
+
const [o, u] = m(c), t = f(/* @__PURE__ */ new Map()), r = n((e, a) => {
|
|
10
|
+
t.current.set(e, a);
|
|
11
|
+
}, []), s = n((e) => {
|
|
12
|
+
t.current.delete(e);
|
|
13
|
+
}, []), i = d(
|
|
14
|
+
() => ({
|
|
15
|
+
activeSlot: o,
|
|
16
|
+
setActiveSlot: u,
|
|
17
|
+
slots: t.current,
|
|
18
|
+
registerSlot: r,
|
|
19
|
+
unregisterSlot: s
|
|
20
|
+
}),
|
|
21
|
+
[o, r, s]
|
|
22
|
+
);
|
|
23
|
+
return /* @__PURE__ */ S(p.Provider, { value: i, children: l });
|
|
24
|
+
}
|
|
25
|
+
export {
|
|
26
|
+
g as SidebarSlotProvider
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=SidebarSlotProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SidebarSlotProvider.js","sources":["../../../../../../src/ui/components/SideNavbar/providers/SidebarSlotProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState, useRef, useCallback, useMemo, type ReactNode } from \"react\";\nimport { SidebarSlotContext } from \"../contexts/SidebarSlotContext\";\nimport type {\n SidebarSlotContextValue,\n SidebarSlotProviderProps,\n} from \"../types\";\n\n/**\n * Sidebar Slot Provider\n *\n * **Important: Slots are exclusive to the Sidebar component, not the Navbar.**\n *\n * Manages slot registration and active slot state for dynamic content switching\n * within the Sidebar. This provider should wrap the Sidebar content where slots\n * will be used.\n *\n * @example\n * ```tsx\n * <SideNavbar>\n * <SideNavbar.Navbar>\n * <SideNavbar.Navbar.Item icon={<Home />} label=\"Home\" />\n * </SideNavbar.Navbar>\n *\n * <SidebarSlotProvider defaultSlot=\"dashboard\">\n * <SideNavbar.Sidebar>\n * <SideNavbar.Sidebar.Content>\n * <SidebarSlot id=\"dashboard\">\n * <DashboardContent />\n * </SidebarSlot>\n * <SidebarSlot id=\"settings\">\n * <SettingsContent />\n * </SidebarSlot>\n * <SidebarSlotContent />\n * </SideNavbar.Sidebar.Content>\n * </SideNavbar.Sidebar>\n * </SidebarSlotProvider>\n * </SideNavbar>\n * ```\n */\nexport function SidebarSlotProvider({\n children,\n defaultSlot = null,\n}: SidebarSlotProviderProps) {\n const [activeSlot, setActiveSlot] = useState<string | null>(defaultSlot);\n const slotsRef = useRef(new Map<string, ReactNode>());\n\n const registerSlot = useCallback((id: string, content: ReactNode) => {\n slotsRef.current.set(id, content);\n }, []);\n\n const unregisterSlot = useCallback((id: string) => {\n slotsRef.current.delete(id);\n }, []);\n\n const contextValue: SidebarSlotContextValue = useMemo(\n () => ({\n activeSlot,\n setActiveSlot,\n slots: slotsRef.current,\n registerSlot,\n unregisterSlot,\n }),\n [activeSlot, registerSlot, unregisterSlot],\n );\n\n return (\n <SidebarSlotContext.Provider value={contextValue}>\n {children}\n </SidebarSlotContext.Provider>\n );\n}\n"],"names":["SidebarSlotProvider","children","defaultSlot","activeSlot","setActiveSlot","useState","slotsRef","useRef","registerSlot","useCallback","id","content","unregisterSlot","contextValue","useMemo","SidebarSlotContext"],"mappings":";;;;AAyCO,SAASA,EAAoB;AAAA,EAClC,UAAAC;AAAA,EACA,aAAAC,IAAc;AAChB,GAA6B;AAC3B,QAAM,CAACC,GAAYC,CAAa,IAAIC,EAAwBH,CAAW,GACjEI,IAAWC,EAAO,oBAAI,KAAwB,GAE9CC,IAAeC,EAAY,CAACC,GAAYC,MAAuB;AACnE,IAAAL,EAAS,QAAQ,IAAII,GAAIC,CAAO;AAAA,EAClC,GAAG,CAAA,CAAE,GAECC,IAAiBH,EAAY,CAACC,MAAe;AACjD,IAAAJ,EAAS,QAAQ,OAAOI,CAAE;AAAA,EAC5B,GAAG,CAAA,CAAE,GAECG,IAAwCC;AAAA,IAC5C,OAAO;AAAA,MACL,YAAAX;AAAA,MACA,eAAAC;AAAA,MACA,OAAOE,EAAS;AAAA,MAChB,cAAAE;AAAA,MACA,gBAAAI;AAAA,IAAA;AAAA,IAEF,CAACT,GAAYK,GAAcI,CAAc;AAAA,EAAA;AAG3C,2BACGG,EAAmB,UAAnB,EAA4B,OAAOF,GACjC,UAAAZ,GACH;AAEJ;"}
|