@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,20 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useContext as t, createContext as n } from "react";
|
|
3
|
+
const r = n(null);
|
|
4
|
+
function o() {
|
|
5
|
+
return t(r);
|
|
6
|
+
}
|
|
7
|
+
function u() {
|
|
8
|
+
const e = t(r);
|
|
9
|
+
if (!e)
|
|
10
|
+
throw new Error(
|
|
11
|
+
"useSidebarRequired must be used within a SideNavbar.Sidebar component"
|
|
12
|
+
);
|
|
13
|
+
return e;
|
|
14
|
+
}
|
|
15
|
+
export {
|
|
16
|
+
r as SidebarContext,
|
|
17
|
+
o as useSidebar,
|
|
18
|
+
u as useSidebarRequired
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=SidebarContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SidebarContext.js","sources":["../../../../../../src/ui/components/SideNavbar/contexts/SidebarContext.tsx"],"sourcesContent":["\"use client\";\n\n/* eslint-disable react-refresh/only-export-components */\nimport { createContext, useContext } from \"react\";\nimport type { SidebarContextValue } from \"../types\";\n\n/**\n * Context for the Sidebar subcomponent\n *\n * Provides sidebar-specific state that inherits from the root SideNavbar context.\n * Must be used within a Sidebar component.\n */\nexport const SidebarContext = createContext<SidebarContextValue | null>(null);\n\n/**\n * Hook to access Sidebar context (returns null if outside Sidebar)\n */\nexport function useSidebar(): SidebarContextValue | null {\n return useContext(SidebarContext);\n}\n\n/**\n * Hook to access Sidebar context (throws if outside Sidebar)\n * @throws Error if used outside of Sidebar component\n */\nexport function useSidebarRequired(): SidebarContextValue {\n const context = useContext(SidebarContext);\n if (!context) {\n throw new Error(\n \"useSidebarRequired must be used within a SideNavbar.Sidebar component\",\n );\n }\n return context;\n}\n\nexport default SidebarContext;\n"],"names":["SidebarContext","createContext","useSidebar","useContext","useSidebarRequired","context"],"mappings":";;AAYO,MAAMA,IAAiBC,EAA0C,IAAI;AAKrE,SAASC,IAAyC;AACvD,SAAOC,EAAWH,CAAc;AAClC;AAMO,SAASI,IAA0C;AACxD,QAAMC,IAAUF,EAAWH,CAAc;AACzC,MAAI,CAACK;AACH,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAGJ,SAAOA;AACT;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { createContext as o, useContext as t } from "react";
|
|
3
|
+
const r = o(
|
|
4
|
+
null
|
|
5
|
+
);
|
|
6
|
+
function i() {
|
|
7
|
+
return t(r);
|
|
8
|
+
}
|
|
9
|
+
function u() {
|
|
10
|
+
const e = t(r);
|
|
11
|
+
if (!e)
|
|
12
|
+
throw new Error(
|
|
13
|
+
"useSidebarSlotRequired must be used within SidebarSlotProvider"
|
|
14
|
+
);
|
|
15
|
+
return e;
|
|
16
|
+
}
|
|
17
|
+
export {
|
|
18
|
+
r as SidebarSlotContext,
|
|
19
|
+
i as useSidebarSlot,
|
|
20
|
+
u as useSidebarSlotRequired
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=SidebarSlotContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SidebarSlotContext.js","sources":["../../../../../../src/ui/components/SideNavbar/contexts/SidebarSlotContext.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, useContext } from \"react\";\nimport type { SidebarSlotContextValue } from \"../types\";\n\n/**\n * Sidebar Slot Context\n *\n * Provides slot management for dynamic sidebar content.\n * Allows registering and switching between different content slots.\n */\nexport const SidebarSlotContext = createContext<SidebarSlotContextValue | null>(\n null,\n);\n\n/**\n * Hook to access sidebar slot context\n * Returns null if used outside provider\n */\nexport function useSidebarSlot(): SidebarSlotContextValue | null {\n return useContext(SidebarSlotContext);\n}\n\n/**\n * Hook to access sidebar slot context (required)\n * Throws error if used outside provider\n */\nexport function useSidebarSlotRequired(): SidebarSlotContextValue {\n const context = useContext(SidebarSlotContext);\n if (!context) {\n throw new Error(\n \"useSidebarSlotRequired must be used within SidebarSlotProvider\",\n );\n }\n return context;\n}\n"],"names":["SidebarSlotContext","createContext","useSidebarSlot","useContext","useSidebarSlotRequired","context"],"mappings":";;AAWO,MAAMA,IAAqBC;AAAA,EAChC;AACF;AAMO,SAASC,IAAiD;AAC/D,SAAOC,EAAWH,CAAkB;AACtC;AAMO,SAASI,IAAkD;AAChE,QAAMC,IAAUF,EAAWH,CAAkB;AAC7C,MAAI,CAACK;AACH,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAGJ,SAAOA;AACT;"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useRef as s, useEffect as m, useCallback as E } from "react";
|
|
3
|
+
function x({
|
|
4
|
+
isActive: t,
|
|
5
|
+
containerRef: n,
|
|
6
|
+
restoreFocus: f = !0,
|
|
7
|
+
initialFocusRef: r
|
|
8
|
+
}) {
|
|
9
|
+
const u = s(null);
|
|
10
|
+
m(() => {
|
|
11
|
+
if (t) {
|
|
12
|
+
if (u.current = document.activeElement, r != null && r.current)
|
|
13
|
+
r.current.focus();
|
|
14
|
+
else if (n.current) {
|
|
15
|
+
const e = n.current.querySelector(
|
|
16
|
+
'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
|
|
17
|
+
);
|
|
18
|
+
e == null || e.focus();
|
|
19
|
+
}
|
|
20
|
+
} else f && u.current && (u.current.focus(), u.current = null);
|
|
21
|
+
}, [t, n, r, f]);
|
|
22
|
+
const l = E(
|
|
23
|
+
(e) => {
|
|
24
|
+
if (!(!t || !n.current) && e.key === "Tab") {
|
|
25
|
+
const d = n.current.querySelectorAll(
|
|
26
|
+
'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
|
|
27
|
+
), c = d[0], o = d[d.length - 1];
|
|
28
|
+
e.shiftKey ? document.activeElement === c && (e.preventDefault(), o == null || o.focus()) : document.activeElement === o && (e.preventDefault(), c == null || c.focus());
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
[t, n]
|
|
32
|
+
);
|
|
33
|
+
m(() => {
|
|
34
|
+
if (t)
|
|
35
|
+
return document.addEventListener("keydown", l), () => {
|
|
36
|
+
document.removeEventListener("keydown", l);
|
|
37
|
+
};
|
|
38
|
+
}, [t, l]);
|
|
39
|
+
}
|
|
40
|
+
export {
|
|
41
|
+
x as useFocusManagement
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=useFocusManagement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFocusManagement.js","sources":["../../../../../../src/ui/components/SideNavbar/hooks/useFocusManagement.ts"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useRef, useCallback } from \"react\";\n\nexport interface UseFocusManagementOptions {\n /**\n * Whether focus trap is active\n */\n isActive: boolean;\n\n /**\n * Container element to trap focus within\n */\n containerRef: React.RefObject<HTMLElement | null>;\n\n /**\n * Whether to restore focus to previous element when deactivated\n * @default true\n */\n restoreFocus?: boolean;\n\n /**\n * Initial element to focus when activated\n */\n initialFocusRef?: React.RefObject<HTMLElement | null>;\n}\n\n/**\n * Hook for managing focus within a container (focus trap)\n *\n * Traps focus within a container element, useful for modals and overlays.\n * Supports restoring focus when deactivated.\n *\n * @example\n * ```tsx\n * const containerRef = useRef<HTMLDivElement>(null);\n * useFocusManagement({\n * isActive: isOpen,\n * containerRef,\n * restoreFocus: true\n * });\n * ```\n */\nexport function useFocusManagement({\n isActive,\n containerRef,\n restoreFocus = true,\n initialFocusRef,\n}: UseFocusManagementOptions) {\n const previousActiveElementRef = useRef<HTMLElement | null>(null);\n\n // Save previous focus when activating\n useEffect(() => {\n if (isActive) {\n previousActiveElementRef.current = document.activeElement as HTMLElement;\n\n // Focus initial element if provided\n if (initialFocusRef?.current) {\n initialFocusRef.current.focus();\n } else if (containerRef.current) {\n // Otherwise focus first focusable element in container\n const firstFocusable = containerRef.current.querySelector(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n ) as HTMLElement;\n firstFocusable?.focus();\n }\n } else if (restoreFocus && previousActiveElementRef.current) {\n // Restore focus when deactivating\n previousActiveElementRef.current.focus();\n previousActiveElementRef.current = null;\n }\n }, [isActive, containerRef, initialFocusRef, restoreFocus]);\n\n // Trap focus within container\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (!isActive || !containerRef.current) return;\n\n // Handle Tab key\n if (event.key === \"Tab\") {\n const focusableElements = containerRef.current.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n );\n\n const firstFocusable = focusableElements[0] as HTMLElement;\n const lastFocusable = focusableElements[\n focusableElements.length - 1\n ] as HTMLElement;\n\n if (event.shiftKey) {\n // Shift + Tab\n if (document.activeElement === firstFocusable) {\n event.preventDefault();\n lastFocusable?.focus();\n }\n } else {\n // Tab\n if (document.activeElement === lastFocusable) {\n event.preventDefault();\n firstFocusable?.focus();\n }\n }\n }\n },\n [isActive, containerRef],\n );\n\n useEffect(() => {\n if (!isActive) return;\n\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [isActive, handleKeyDown]);\n}\n"],"names":["useFocusManagement","isActive","containerRef","restoreFocus","initialFocusRef","previousActiveElementRef","useRef","useEffect","firstFocusable","handleKeyDown","useCallback","event","focusableElements","lastFocusable"],"mappings":";;AA2CO,SAASA,EAAmB;AAAA,EACjC,UAAAC;AAAA,EACA,cAAAC;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,iBAAAC;AACF,GAA8B;AAC5B,QAAMC,IAA2BC,EAA2B,IAAI;AAGhE,EAAAC,EAAU,MAAM;AACd,QAAIN;AAIF,UAHAI,EAAyB,UAAU,SAAS,eAGxCD,KAAA,QAAAA,EAAiB;AACnB,QAAAA,EAAgB,QAAQ,MAAA;AAAA,eACfF,EAAa,SAAS;AAE/B,cAAMM,IAAiBN,EAAa,QAAQ;AAAA,UAC1C;AAAA,QAAA;AAEF,QAAAM,KAAA,QAAAA,EAAgB;AAAA,MAClB;AAAA,UACF,CAAWL,KAAgBE,EAAyB,YAElDA,EAAyB,QAAQ,MAAA,GACjCA,EAAyB,UAAU;AAAA,EAEvC,GAAG,CAACJ,GAAUC,GAAcE,GAAiBD,CAAY,CAAC;AAG1D,QAAMM,IAAgBC;AAAA,IACpB,CAACC,MAAyB;AACxB,UAAI,GAACV,KAAY,CAACC,EAAa,YAG3BS,EAAM,QAAQ,OAAO;AACvB,cAAMC,IAAoBV,EAAa,QAAQ;AAAA,UAC7C;AAAA,QAAA,GAGIM,IAAiBI,EAAkB,CAAC,GACpCC,IAAgBD,EACpBA,EAAkB,SAAS,CAC7B;AAEA,QAAID,EAAM,WAEJ,SAAS,kBAAkBH,MAC7BG,EAAM,eAAA,GACNE,KAAA,QAAAA,EAAe,WAIb,SAAS,kBAAkBA,MAC7BF,EAAM,eAAA,GACNH,KAAA,QAAAA,EAAgB;AAAA,MAGtB;AAAA,IACF;AAAA,IACA,CAACP,GAAUC,CAAY;AAAA,EAAA;AAGzB,EAAAK,EAAU,MAAM;AACd,QAAKN;AAEL,sBAAS,iBAAiB,WAAWQ,CAAa,GAC3C,MAAM;AACX,iBAAS,oBAAoB,WAAWA,CAAa;AAAA,MACvD;AAAA,EACF,GAAG,CAACR,GAAUQ,CAAa,CAAC;AAC9B;"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
var m = Object.defineProperty, w = Object.defineProperties;
|
|
3
|
+
var C = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var f = Object.getOwnPropertySymbols;
|
|
5
|
+
var I = Object.prototype.hasOwnProperty, J = Object.prototype.propertyIsEnumerable;
|
|
6
|
+
var l = (e, t, o) => t in e ? m(e, t, { enumerable: !0, configurable: !0, writable: !0, value: o }) : e[t] = o, s = (e, t) => {
|
|
7
|
+
for (var o in t || (t = {}))
|
|
8
|
+
I.call(t, o) && l(e, o, t[o]);
|
|
9
|
+
if (f)
|
|
10
|
+
for (var o of f(t))
|
|
11
|
+
J.call(t, o) && l(e, o, t[o]);
|
|
12
|
+
return e;
|
|
13
|
+
}, i = (e, t) => w(e, C(t));
|
|
14
|
+
import { useState as N, useEffect as O, useCallback as p } from "react";
|
|
15
|
+
function h({
|
|
16
|
+
defaultStates: e = {},
|
|
17
|
+
persist: t = !1,
|
|
18
|
+
storageKey: o
|
|
19
|
+
} = {}) {
|
|
20
|
+
const a = () => {
|
|
21
|
+
if (t && o && typeof window != "undefined") {
|
|
22
|
+
const n = localStorage.getItem(`${o}-groups`);
|
|
23
|
+
if (n)
|
|
24
|
+
try {
|
|
25
|
+
const r = JSON.parse(n);
|
|
26
|
+
return s(s({}, e), r);
|
|
27
|
+
} catch (r) {
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return e;
|
|
31
|
+
}, [c, u] = N(a);
|
|
32
|
+
O(() => {
|
|
33
|
+
t && o && typeof window != "undefined" && localStorage.setItem(`${o}-groups`, JSON.stringify(c));
|
|
34
|
+
}, [t, o, c]);
|
|
35
|
+
const S = p((n) => {
|
|
36
|
+
u((r) => i(s({}, r), {
|
|
37
|
+
[n]: !r[n]
|
|
38
|
+
}));
|
|
39
|
+
}, []), d = p(
|
|
40
|
+
(n, r) => {
|
|
41
|
+
u((G) => i(s({}, G), {
|
|
42
|
+
[n]: r
|
|
43
|
+
}));
|
|
44
|
+
},
|
|
45
|
+
[]
|
|
46
|
+
), g = p(() => {
|
|
47
|
+
u(e);
|
|
48
|
+
}, [e]);
|
|
49
|
+
return {
|
|
50
|
+
groupStates: c,
|
|
51
|
+
toggleGroup: S,
|
|
52
|
+
setGroupCollapsed: d,
|
|
53
|
+
resetGroups: g
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
export {
|
|
57
|
+
h as useGroupState
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=useGroupState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGroupState.js","sources":["../../../../../../src/ui/components/SideNavbar/hooks/useGroupState.ts"],"sourcesContent":["\"use client\";\n\nimport { useState, useCallback, useEffect } from \"react\";\nimport type { UseGroupStateOptions, UseGroupStateReturn } from \"../types\";\n\n/**\n * Hook for managing collapsible group states\n *\n * Manages collapsed/expanded state for multiple groups with optional persistence.\n * Used internally by SideNavbarStateProvider, but can be used standalone.\n *\n * @example\n * ```tsx\n * const { groupStates, toggleGroup, setGroupCollapsed } = useGroupState({\n * defaultStates: { filters: false, settings: true },\n * persist: true,\n * storageKey: 'my-sidebar-groups',\n * });\n *\n * // Check if group is collapsed\n * const isFiltersCollapsed = groupStates['filters'] ?? false;\n *\n * // Toggle a group\n * toggleGroup('filters');\n *\n * // Set specific state\n * setGroupCollapsed('settings', false);\n * ```\n */\nexport function useGroupState({\n defaultStates = {},\n persist = false,\n storageKey,\n}: UseGroupStateOptions = {}): UseGroupStateReturn {\n // Initialize state from storage or defaults\n const getInitialStates = (): Record<string, boolean> => {\n if (persist && storageKey && typeof window !== \"undefined\") {\n const stored = localStorage.getItem(`${storageKey}-groups`);\n if (stored) {\n try {\n const parsed = JSON.parse(stored);\n return { ...defaultStates, ...parsed };\n } catch {\n // Invalid JSON, use defaults\n }\n }\n }\n return defaultStates;\n };\n\n const [groupStates, setGroupStates] =\n useState<Record<string, boolean>>(getInitialStates);\n\n // Persist state changes\n useEffect(() => {\n if (persist && storageKey && typeof window !== \"undefined\") {\n localStorage.setItem(`${storageKey}-groups`, JSON.stringify(groupStates));\n }\n }, [persist, storageKey, groupStates]);\n\n const toggleGroup = useCallback((groupId: string) => {\n setGroupStates((prev) => ({\n ...prev,\n [groupId]: !prev[groupId],\n }));\n }, []);\n\n const setGroupCollapsed = useCallback(\n (groupId: string, collapsed: boolean) => {\n setGroupStates((prev) => ({\n ...prev,\n [groupId]: collapsed,\n }));\n },\n [],\n );\n\n const resetGroups = useCallback(() => {\n setGroupStates(defaultStates);\n }, [defaultStates]);\n\n return {\n groupStates,\n toggleGroup,\n setGroupCollapsed,\n resetGroups,\n };\n}\n\nexport default useGroupState;\n"],"names":["useGroupState","defaultStates","persist","storageKey","getInitialStates","stored","parsed","__spreadValues","e","groupStates","setGroupStates","useState","useEffect","toggleGroup","useCallback","groupId","prev","__spreadProps","setGroupCollapsed","collapsed","resetGroups"],"mappings":";;;;;;;;;;;;;;AA6BO,SAASA,EAAc;AAAA,EAC5B,eAAAC,IAAgB,CAAA;AAAA,EAChB,SAAAC,IAAU;AAAA,EACV,YAAAC;AACF,IAA0B,IAAyB;AAEjD,QAAMC,IAAmB,MAA+B;AACtD,QAAIF,KAAWC,KAAc,OAAO,UAAW,aAAa;AAC1D,YAAME,IAAS,aAAa,QAAQ,GAAGF,CAAU,SAAS;AAC1D,UAAIE;AACF,YAAI;AACF,gBAAMC,IAAS,KAAK,MAAMD,CAAM;AAChC,iBAAOE,IAAA,IAAKN,IAAkBK;AAAA,QAChC,SAAQE,GAAA;AAAA,QAER;AAAA,IAEJ;AACA,WAAOP;AAAA,EACT,GAEM,CAACQ,GAAaC,CAAc,IAChCC,EAAkCP,CAAgB;AAGpD,EAAAQ,EAAU,MAAM;AACd,IAAIV,KAAWC,KAAc,OAAO,UAAW,eAC7C,aAAa,QAAQ,GAAGA,CAAU,WAAW,KAAK,UAAUM,CAAW,CAAC;AAAA,EAE5E,GAAG,CAACP,GAASC,GAAYM,CAAW,CAAC;AAErC,QAAMI,IAAcC,EAAY,CAACC,MAAoB;AACnD,IAAAL,EAAe,CAACM,MAAUC,EAAAV,EAAA,IACrBS,IADqB;AAAA,MAExB,CAACD,CAAO,GAAG,CAACC,EAAKD,CAAO;AAAA,IAAA,EACxB;AAAA,EACJ,GAAG,CAAA,CAAE,GAECG,IAAoBJ;AAAA,IACxB,CAACC,GAAiBI,MAAuB;AACvC,MAAAT,EAAe,CAACM,MAAUC,EAAAV,EAAA,IACrBS,IADqB;AAAA,QAExB,CAACD,CAAO,GAAGI;AAAA,MAAA,EACX;AAAA,IACJ;AAAA,IACA,CAAA;AAAA,EAAC,GAGGC,IAAcN,EAAY,MAAM;AACpC,IAAAJ,EAAeT,CAAa;AAAA,EAC9B,GAAG,CAACA,CAAa,CAAC;AAElB,SAAO;AAAA,IACL,aAAAQ;AAAA,IACA,aAAAI;AAAA,IACA,mBAAAK;AAAA,IACA,aAAAE;AAAA,EAAA;AAEJ;"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useCallback as w, useEffect as k } from "react";
|
|
3
|
+
function M({
|
|
4
|
+
key: o,
|
|
5
|
+
ctrl: s = !1,
|
|
6
|
+
shift: e = !1,
|
|
7
|
+
alt: y = !1,
|
|
8
|
+
meta: a = !1,
|
|
9
|
+
onTrigger: f,
|
|
10
|
+
enabled: i = !0,
|
|
11
|
+
preventDefault: u = !0
|
|
12
|
+
}) {
|
|
13
|
+
const c = w(
|
|
14
|
+
(t) => {
|
|
15
|
+
if (!i) return;
|
|
16
|
+
const r = t.target;
|
|
17
|
+
if ((r.tagName === "INPUT" || r.tagName === "TEXTAREA" || r.isContentEditable) && !s && !a)
|
|
18
|
+
return;
|
|
19
|
+
const l = o.length === 1 ? t.key.toLowerCase() === o.toLowerCase() : t.key === o, n = s ? t.ctrlKey || t.metaKey : !t.ctrlKey && !t.metaKey, h = e ? t.shiftKey : !t.shiftKey, K = y ? t.altKey : !t.altKey, d = a ? t.metaKey : !t.metaKey, m = s ? (t.ctrlKey || t.metaKey) && !a : n && d;
|
|
20
|
+
l && m && h && K && (u && (t.preventDefault(), t.stopPropagation()), f());
|
|
21
|
+
},
|
|
22
|
+
[i, o, s, e, y, a, f, u]
|
|
23
|
+
);
|
|
24
|
+
k(() => {
|
|
25
|
+
if (i)
|
|
26
|
+
return window.addEventListener("keydown", c), () => {
|
|
27
|
+
window.removeEventListener("keydown", c);
|
|
28
|
+
};
|
|
29
|
+
}, [i, c]);
|
|
30
|
+
}
|
|
31
|
+
export {
|
|
32
|
+
M as useKeyboardShortcut
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=useKeyboardShortcut.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useKeyboardShortcut.js","sources":["../../../../../../src/ui/components/SideNavbar/hooks/useKeyboardShortcut.ts"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useCallback } from \"react\";\n\nexport interface UseKeyboardShortcutOptions {\n /**\n * Key to listen for (e.g., 'b', 'Escape', 'Enter')\n */\n key: string;\n\n /**\n * Whether Ctrl/Cmd key should be pressed\n * @default false\n */\n ctrl?: boolean;\n\n /**\n * Whether Shift key should be pressed\n * @default false\n */\n shift?: boolean;\n\n /**\n * Whether Alt key should be pressed\n * @default false\n */\n alt?: boolean;\n\n /**\n * Whether Meta key should be pressed (Cmd on Mac)\n * @default false\n */\n meta?: boolean;\n\n /**\n * Callback when shortcut is triggered\n */\n onTrigger: () => void;\n\n /**\n * Whether the shortcut is enabled\n * @default true\n */\n enabled?: boolean;\n\n /**\n * Whether to prevent default behavior\n * @default true\n */\n preventDefault?: boolean;\n}\n\n/**\n * Hook for keyboard shortcuts\n *\n * Listens for keyboard combinations and triggers callbacks.\n * Automatically ignores input fields unless explicitly allowed.\n *\n * @example\n * ```tsx\n * useKeyboardShortcut({\n * key: 'b',\n * ctrl: true,\n * onTrigger: () => toggleSidebar(),\n * });\n * ```\n */\nexport function useKeyboardShortcut({\n key: targetKey,\n ctrl = false,\n shift = false,\n alt = false,\n meta = false,\n onTrigger,\n enabled = true,\n preventDefault = true,\n}: UseKeyboardShortcutOptions) {\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (!enabled) return;\n\n // Don't trigger in input fields (unless it's a system shortcut)\n const target = event.target as HTMLElement;\n const isInputField =\n target.tagName === \"INPUT\" ||\n target.tagName === \"TEXTAREA\" ||\n target.isContentEditable;\n\n // Allow Ctrl/Cmd shortcuts in inputs (like Ctrl+B)\n if (isInputField && !ctrl && !meta) {\n return;\n }\n\n // Check key match (case-insensitive for letter keys)\n const keyMatch =\n targetKey.length === 1\n ? event.key.toLowerCase() === targetKey.toLowerCase()\n : event.key === targetKey;\n\n // Check modifier keys\n const ctrlMatch = ctrl\n ? event.ctrlKey || event.metaKey\n : !event.ctrlKey && !event.metaKey;\n const shiftMatch = shift ? event.shiftKey : !event.shiftKey;\n const altMatch = alt ? event.altKey : !event.altKey;\n const metaMatch = meta ? event.metaKey : !event.metaKey;\n\n // If ctrl is true, allow either Ctrl or Meta (Cmd on Mac)\n const modifierMatch = ctrl\n ? (event.ctrlKey || event.metaKey) && !meta\n : ctrlMatch && metaMatch;\n\n if (keyMatch && modifierMatch && shiftMatch && altMatch) {\n if (preventDefault) {\n event.preventDefault();\n event.stopPropagation();\n }\n onTrigger();\n }\n },\n [enabled, targetKey, ctrl, shift, alt, meta, onTrigger, preventDefault],\n );\n\n useEffect(() => {\n if (!enabled) return;\n\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n window.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [enabled, handleKeyDown]);\n}\n"],"names":["useKeyboardShortcut","targetKey","ctrl","shift","alt","meta","onTrigger","enabled","preventDefault","handleKeyDown","useCallback","event","target","keyMatch","ctrlMatch","shiftMatch","altMatch","metaMatch","modifierMatch","useEffect"],"mappings":";;AAmEO,SAASA,EAAoB;AAAA,EAClC,KAAKC;AAAA,EACL,MAAAC,IAAO;AAAA,EACP,OAAAC,IAAQ;AAAA,EACR,KAAAC,IAAM;AAAA,EACN,MAAAC,IAAO;AAAA,EACP,WAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,gBAAAC,IAAiB;AACnB,GAA+B;AAC7B,QAAMC,IAAgBC;AAAA,IACpB,CAACC,MAAyB;AACxB,UAAI,CAACJ,EAAS;AAGd,YAAMK,IAASD,EAAM;AAOrB,WALEC,EAAO,YAAY,WACnBA,EAAO,YAAY,cACnBA,EAAO,sBAGW,CAACV,KAAQ,CAACG;AAC5B;AAIF,YAAMQ,IACJZ,EAAU,WAAW,IACjBU,EAAM,IAAI,YAAA,MAAkBV,EAAU,YAAA,IACtCU,EAAM,QAAQV,GAGda,IAAYZ,IACdS,EAAM,WAAWA,EAAM,UACvB,CAACA,EAAM,WAAW,CAACA,EAAM,SACvBI,IAAaZ,IAAQQ,EAAM,WAAW,CAACA,EAAM,UAC7CK,IAAWZ,IAAMO,EAAM,SAAS,CAACA,EAAM,QACvCM,IAAYZ,IAAOM,EAAM,UAAU,CAACA,EAAM,SAG1CO,IAAgBhB,KACjBS,EAAM,WAAWA,EAAM,YAAY,CAACN,IACrCS,KAAaG;AAEjB,MAAIJ,KAAYK,KAAiBH,KAAcC,MACzCR,MACFG,EAAM,eAAA,GACNA,EAAM,gBAAA,IAERL,EAAA;AAAA,IAEJ;AAAA,IACA,CAACC,GAASN,GAAWC,GAAMC,GAAOC,GAAKC,GAAMC,GAAWE,CAAc;AAAA,EAAA;AAGxE,EAAAW,EAAU,MAAM;AACd,QAAKZ;AAEL,oBAAO,iBAAiB,WAAWE,CAAa,GACzC,MAAM;AACX,eAAO,oBAAoB,WAAWA,CAAa;AAAA,MACrD;AAAA,EACF,GAAG,CAACF,GAASE,CAAa,CAAC;AAC7B;"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useState as b, useRef as w, useCallback as m, useEffect as I } from "react";
|
|
3
|
+
import { clampWidth as R } from "../utils/parseWidth.js";
|
|
4
|
+
function q({
|
|
5
|
+
initialWidth: d,
|
|
6
|
+
minWidth: c,
|
|
7
|
+
maxWidth: o,
|
|
8
|
+
snapPoints: u,
|
|
9
|
+
snapThreshold: M = 20,
|
|
10
|
+
onWidthChange: f,
|
|
11
|
+
enabled: s = !0
|
|
12
|
+
}) {
|
|
13
|
+
const S = R(d, c, o), [n, z] = b(S), [t, E] = b(!1), i = w(0), a = w(S), v = m(
|
|
14
|
+
(r) => {
|
|
15
|
+
let e = R(r, c, o);
|
|
16
|
+
if (u && u.length > 0) {
|
|
17
|
+
const l = u.reduce((L, X) => {
|
|
18
|
+
const D = Math.abs(e - X), T = Math.abs(e - L);
|
|
19
|
+
return D < T ? X : L;
|
|
20
|
+
}, u[0]);
|
|
21
|
+
Math.abs(e - l) <= M && (e = l);
|
|
22
|
+
}
|
|
23
|
+
z(e), f == null || f(e);
|
|
24
|
+
},
|
|
25
|
+
[c, o, u, M, f]
|
|
26
|
+
), y = m(
|
|
27
|
+
(r) => {
|
|
28
|
+
if (!s || !t) return;
|
|
29
|
+
const e = r.clientX - i.current, l = a.current + e;
|
|
30
|
+
v(l);
|
|
31
|
+
},
|
|
32
|
+
[s, t, v]
|
|
33
|
+
), p = m(() => {
|
|
34
|
+
s && (E(!1), i.current = 0, a.current = n);
|
|
35
|
+
}, [s, n]), k = m(
|
|
36
|
+
(r) => {
|
|
37
|
+
s && (r.preventDefault(), r.stopPropagation(), E(!0), i.current = r.clientX, a.current = n);
|
|
38
|
+
},
|
|
39
|
+
[s, n]
|
|
40
|
+
);
|
|
41
|
+
return I(() => {
|
|
42
|
+
if (t)
|
|
43
|
+
return document.addEventListener("mousemove", y), document.addEventListener("mouseup", p), document.body.style.userSelect = "none", document.body.style.cursor = "col-resize", () => {
|
|
44
|
+
document.removeEventListener("mousemove", y), document.removeEventListener("mouseup", p), document.body.style.userSelect = "", document.body.style.cursor = "";
|
|
45
|
+
};
|
|
46
|
+
}, [t, y, p]), I(() => {
|
|
47
|
+
t || z(R(d, c, o));
|
|
48
|
+
}, [d, c, o, t]), {
|
|
49
|
+
width: n,
|
|
50
|
+
isResizing: t,
|
|
51
|
+
startResize: k,
|
|
52
|
+
setWidth: v
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export {
|
|
56
|
+
q as useResize
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=useResize.js.map
|
|
@@ -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;"}
|