@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.
Files changed (418) hide show
  1. package/README.md +2 -1
  2. package/dist/granular/index.js +447 -0
  3. package/dist/granular/index.js.map +1 -0
  4. package/dist/granular/ui/components/Accordion/Accordion.js +105 -0
  5. package/dist/granular/ui/components/Accordion/Accordion.js.map +1 -0
  6. package/dist/granular/ui/components/Autocomplete/Autocomplete.js +133 -0
  7. package/dist/granular/ui/components/Autocomplete/Autocomplete.js.map +1 -0
  8. package/dist/granular/ui/components/Autocomplete/AutocompleteList.js +119 -0
  9. package/dist/granular/ui/components/Autocomplete/AutocompleteList.js.map +1 -0
  10. package/dist/granular/ui/components/Autocomplete/AutocompleteOption.js +42 -0
  11. package/dist/granular/ui/components/Autocomplete/AutocompleteOption.js.map +1 -0
  12. package/dist/granular/ui/components/Breadcrumb/Breadcrumb.js +100 -0
  13. package/dist/granular/ui/components/Breadcrumb/Breadcrumb.js.map +1 -0
  14. package/dist/granular/ui/components/Card/Card.js +113 -0
  15. package/dist/granular/ui/components/Card/Card.js.map +1 -0
  16. package/dist/granular/ui/components/Card/CardActions.js +51 -0
  17. package/dist/granular/ui/components/Card/CardActions.js.map +1 -0
  18. package/dist/granular/ui/components/Card/CardBody.js +32 -0
  19. package/dist/granular/ui/components/Card/CardBody.js.map +1 -0
  20. package/dist/granular/ui/components/Card/CardHeader.js +47 -0
  21. package/dist/granular/ui/components/Card/CardHeader.js.map +1 -0
  22. package/dist/granular/ui/components/Card/CardSubtitle.js +38 -0
  23. package/dist/granular/ui/components/Card/CardSubtitle.js.map +1 -0
  24. package/dist/granular/ui/components/Card/CardTitle.js +61 -0
  25. package/dist/granular/ui/components/Card/CardTitle.js.map +1 -0
  26. package/dist/granular/ui/components/ColorPicker/ColorPicker.js +250 -0
  27. package/dist/granular/ui/components/ColorPicker/ColorPicker.js.map +1 -0
  28. package/dist/granular/ui/components/CommandPalette/CommandPalette.js +274 -0
  29. package/dist/granular/ui/components/CommandPalette/CommandPalette.js.map +1 -0
  30. package/dist/granular/ui/components/DashboardLayout/DashboardLayout.js +37 -0
  31. package/dist/granular/ui/components/DashboardLayout/DashboardLayout.js.map +1 -0
  32. package/dist/granular/ui/components/DataGrid/DataGrid.js +155 -0
  33. package/dist/granular/ui/components/DataGrid/DataGrid.js.map +1 -0
  34. package/dist/granular/ui/components/DataTablePattern/DataTablePattern.js +113 -0
  35. package/dist/granular/ui/components/DataTablePattern/DataTablePattern.js.map +1 -0
  36. package/dist/granular/ui/components/DatePicker/DatePicker.js +126 -0
  37. package/dist/granular/ui/components/DatePicker/DatePicker.js.map +1 -0
  38. package/dist/granular/ui/components/DatePicker/DatePickerCalendar.js +294 -0
  39. package/dist/granular/ui/components/DatePicker/DatePickerCalendar.js.map +1 -0
  40. package/dist/granular/ui/components/DatePicker/DatePickerContext.js +16 -0
  41. package/dist/granular/ui/components/DatePicker/DatePickerContext.js.map +1 -0
  42. package/dist/granular/ui/components/DatePicker/DatePickerInput.js +119 -0
  43. package/dist/granular/ui/components/DatePicker/DatePickerInput.js.map +1 -0
  44. package/dist/granular/ui/components/DatePicker/DatePickerProvider.js +47 -0
  45. package/dist/granular/ui/components/DatePicker/DatePickerProvider.js.map +1 -0
  46. package/dist/granular/ui/components/Dialog/AlertDialog.js +48 -0
  47. package/dist/granular/ui/components/Dialog/AlertDialog.js.map +1 -0
  48. package/dist/granular/ui/components/Dialog/Dialog.js +36 -0
  49. package/dist/granular/ui/components/Dialog/Dialog.js.map +1 -0
  50. package/dist/granular/ui/components/Dialog/DialogClose.js +34 -0
  51. package/dist/granular/ui/components/Dialog/DialogClose.js.map +1 -0
  52. package/dist/granular/ui/components/Dialog/DialogContent.js +114 -0
  53. package/dist/granular/ui/components/Dialog/DialogContent.js.map +1 -0
  54. package/dist/granular/ui/components/Dialog/DialogDescription.js +51 -0
  55. package/dist/granular/ui/components/Dialog/DialogDescription.js.map +1 -0
  56. package/dist/granular/ui/components/Dialog/DialogFooter.js +45 -0
  57. package/dist/granular/ui/components/Dialog/DialogFooter.js.map +1 -0
  58. package/dist/granular/ui/components/Dialog/DialogHeader.js +45 -0
  59. package/dist/granular/ui/components/Dialog/DialogHeader.js.map +1 -0
  60. package/dist/granular/ui/components/Dialog/DialogTitle.js +53 -0
  61. package/dist/granular/ui/components/Dialog/DialogTitle.js.map +1 -0
  62. package/dist/granular/ui/components/Dialog/DialogTrigger.js +28 -0
  63. package/dist/granular/ui/components/Dialog/DialogTrigger.js.map +1 -0
  64. package/dist/granular/ui/components/Drawer/Drawer.js +47 -0
  65. package/dist/granular/ui/components/Drawer/Drawer.js.map +1 -0
  66. package/dist/granular/ui/components/Drawer/DrawerContent.js +140 -0
  67. package/dist/granular/ui/components/Drawer/DrawerContent.js.map +1 -0
  68. package/dist/granular/ui/components/Drawer/DrawerContext.js +21 -0
  69. package/dist/granular/ui/components/Drawer/DrawerContext.js.map +1 -0
  70. package/dist/granular/ui/components/Drawer/DrawerFooter.js +53 -0
  71. package/dist/granular/ui/components/Drawer/DrawerFooter.js.map +1 -0
  72. package/dist/granular/ui/components/Drawer/DrawerHeader.js +50 -0
  73. package/dist/granular/ui/components/Drawer/DrawerHeader.js.map +1 -0
  74. package/dist/granular/ui/components/Dropdown/Dropdown.js +243 -0
  75. package/dist/granular/ui/components/Dropdown/Dropdown.js.map +1 -0
  76. package/dist/granular/ui/components/EmptyState/EmptyState.js +102 -0
  77. package/dist/granular/ui/components/EmptyState/EmptyState.js.map +1 -0
  78. package/dist/granular/ui/components/FileUpload/FileUpload.js +342 -0
  79. package/dist/granular/ui/components/FileUpload/FileUpload.js.map +1 -0
  80. package/dist/granular/ui/components/FilterChips/FilterChips.js +67 -0
  81. package/dist/granular/ui/components/FilterChips/FilterChips.js.map +1 -0
  82. package/dist/granular/ui/components/Form/Form.js +184 -0
  83. package/dist/granular/ui/components/Form/Form.js.map +1 -0
  84. package/dist/granular/ui/components/Form/FormContext.js +19 -0
  85. package/dist/granular/ui/components/Form/FormContext.js.map +1 -0
  86. package/dist/granular/ui/components/Form/FormField.js +66 -0
  87. package/dist/granular/ui/components/Form/FormField.js.map +1 -0
  88. package/dist/granular/ui/components/Form/FormProvider.js +17 -0
  89. package/dist/granular/ui/components/Form/FormProvider.js.map +1 -0
  90. package/dist/granular/ui/components/Form/useFormFieldArray.js +29 -0
  91. package/dist/granular/ui/components/Form/useFormFieldArray.js.map +1 -0
  92. package/dist/granular/ui/components/FormWizardPattern/FormWizardPattern.js +121 -0
  93. package/dist/granular/ui/components/FormWizardPattern/FormWizardPattern.js.map +1 -0
  94. package/dist/granular/ui/components/Header/Header.js +98 -0
  95. package/dist/granular/ui/components/Header/Header.js.map +1 -0
  96. package/dist/granular/ui/components/Header/components/HeaderActions.js +21 -0
  97. package/dist/granular/ui/components/Header/components/HeaderActions.js.map +1 -0
  98. package/dist/granular/ui/components/Header/components/HeaderHamburger.js +31 -0
  99. package/dist/granular/ui/components/Header/components/HeaderHamburger.js.map +1 -0
  100. package/dist/granular/ui/components/Header/components/HeaderLogo.js +50 -0
  101. package/dist/granular/ui/components/Header/components/HeaderLogo.js.map +1 -0
  102. package/dist/granular/ui/components/Header/components/HeaderMobileMenu.js +38 -0
  103. package/dist/granular/ui/components/Header/components/HeaderMobileMenu.js.map +1 -0
  104. package/dist/granular/ui/components/Header/components/HeaderNavigation.js +27 -0
  105. package/dist/granular/ui/components/Header/components/HeaderNavigation.js.map +1 -0
  106. package/dist/granular/ui/components/Header/contexts/HeaderContext.js +49 -0
  107. package/dist/granular/ui/components/Header/contexts/HeaderContext.js.map +1 -0
  108. package/dist/granular/ui/components/LoginBox/LoginBox.js +84 -0
  109. package/dist/granular/ui/components/LoginBox/LoginBox.js.map +1 -0
  110. package/dist/granular/ui/components/Menu/Menu.js +45 -0
  111. package/dist/granular/ui/components/Menu/Menu.js.map +1 -0
  112. package/dist/granular/ui/components/Menu/MenuContent.js +94 -0
  113. package/dist/granular/ui/components/Menu/MenuContent.js.map +1 -0
  114. package/dist/granular/ui/components/Menu/MenuContext.js +21 -0
  115. package/dist/granular/ui/components/Menu/MenuContext.js.map +1 -0
  116. package/dist/granular/ui/components/Menu/MenuItem.js +93 -0
  117. package/dist/granular/ui/components/Menu/MenuItem.js.map +1 -0
  118. package/dist/granular/ui/components/Menu/MenuSeparator.js +46 -0
  119. package/dist/granular/ui/components/Menu/MenuSeparator.js.map +1 -0
  120. package/dist/granular/ui/components/Menu/MenuTrigger.js +71 -0
  121. package/dist/granular/ui/components/Menu/MenuTrigger.js.map +1 -0
  122. package/dist/granular/ui/components/Modal/Modal.js +171 -0
  123. package/dist/granular/ui/components/Modal/Modal.js.map +1 -0
  124. package/dist/granular/ui/components/MultiSelect/MultiSelect.js +193 -0
  125. package/dist/granular/ui/components/MultiSelect/MultiSelect.js.map +1 -0
  126. package/dist/granular/ui/components/Navigation/Navigation.js +141 -0
  127. package/dist/granular/ui/components/Navigation/Navigation.js.map +1 -0
  128. package/dist/granular/ui/components/PageHeader/PageHeader.js +95 -0
  129. package/dist/granular/ui/components/PageHeader/PageHeader.js.map +1 -0
  130. package/dist/granular/ui/components/Pagination/Pagination.js +156 -0
  131. package/dist/granular/ui/components/Pagination/Pagination.js.map +1 -0
  132. package/dist/granular/ui/components/Popover/Popover.js +171 -0
  133. package/dist/granular/ui/components/Popover/Popover.js.map +1 -0
  134. package/dist/granular/ui/components/Rating/Rating.js +110 -0
  135. package/dist/granular/ui/components/Rating/Rating.js.map +1 -0
  136. package/dist/granular/ui/components/SearchAndFilterPattern/SearchAndFilterPattern.js +120 -0
  137. package/dist/granular/ui/components/SearchAndFilterPattern/SearchAndFilterPattern.js.map +1 -0
  138. package/dist/granular/ui/components/SearchInput/SearchInput.js +103 -0
  139. package/dist/granular/ui/components/SearchInput/SearchInput.js.map +1 -0
  140. package/dist/granular/ui/components/SideNavbar/SideNavbar.js +143 -0
  141. package/dist/granular/ui/components/SideNavbar/SideNavbar.js.map +1 -0
  142. package/dist/granular/ui/components/SideNavbar/components/Navbar/Navbar.js +173 -0
  143. package/dist/granular/ui/components/SideNavbar/components/Navbar/Navbar.js.map +1 -0
  144. package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarGroup.js +87 -0
  145. package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarGroup.js.map +1 -0
  146. package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarItem.js +242 -0
  147. package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarItem.js.map +1 -0
  148. package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarSeparator.js +66 -0
  149. package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarSeparator.js.map +1 -0
  150. package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarToggle.js +108 -0
  151. package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarToggle.js.map +1 -0
  152. package/dist/granular/ui/components/SideNavbar/components/SideNavbarBackdrop.js +63 -0
  153. package/dist/granular/ui/components/SideNavbar/components/SideNavbarBackdrop.js.map +1 -0
  154. package/dist/granular/ui/components/SideNavbar/components/SideNavbarResizeHandle.js +113 -0
  155. package/dist/granular/ui/components/SideNavbar/components/SideNavbarResizeHandle.js.map +1 -0
  156. package/dist/granular/ui/components/SideNavbar/components/SideNavbarRoot.js +150 -0
  157. package/dist/granular/ui/components/SideNavbar/components/SideNavbarRoot.js.map +1 -0
  158. package/dist/granular/ui/components/SideNavbar/components/SideNavbarToggle.js +197 -0
  159. package/dist/granular/ui/components/SideNavbar/components/SideNavbarToggle.js.map +1 -0
  160. package/dist/granular/ui/components/SideNavbar/components/Sidebar/Sidebar.js +108 -0
  161. package/dist/granular/ui/components/SideNavbar/components/Sidebar/Sidebar.js.map +1 -0
  162. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarContent.js +71 -0
  163. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarContent.js.map +1 -0
  164. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarFooter.js +64 -0
  165. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarFooter.js.map +1 -0
  166. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarGroup.js +141 -0
  167. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarGroup.js.map +1 -0
  168. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarHeader.js +90 -0
  169. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarHeader.js.map +1 -0
  170. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarSlot.js +12 -0
  171. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarSlot.js.map +1 -0
  172. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarSlotContent.js +13 -0
  173. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarSlotContent.js.map +1 -0
  174. package/dist/granular/ui/components/SideNavbar/contexts/NavbarContext.js +20 -0
  175. package/dist/granular/ui/components/SideNavbar/contexts/NavbarContext.js.map +1 -0
  176. package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarConfigContext.js +37 -0
  177. package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarConfigContext.js.map +1 -0
  178. package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarStateContext.js +20 -0
  179. package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarStateContext.js.map +1 -0
  180. package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarThemeContext.js +28 -0
  181. package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarThemeContext.js.map +1 -0
  182. package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarToggleContext.js +19 -0
  183. package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarToggleContext.js.map +1 -0
  184. package/dist/granular/ui/components/SideNavbar/contexts/SidebarContext.js +20 -0
  185. package/dist/granular/ui/components/SideNavbar/contexts/SidebarContext.js.map +1 -0
  186. package/dist/granular/ui/components/SideNavbar/contexts/SidebarSlotContext.js +22 -0
  187. package/dist/granular/ui/components/SideNavbar/contexts/SidebarSlotContext.js.map +1 -0
  188. package/dist/granular/ui/components/SideNavbar/hooks/useFocusManagement.js +43 -0
  189. package/dist/granular/ui/components/SideNavbar/hooks/useFocusManagement.js.map +1 -0
  190. package/dist/granular/ui/components/SideNavbar/hooks/useGroupState.js +59 -0
  191. package/dist/granular/ui/components/SideNavbar/hooks/useGroupState.js.map +1 -0
  192. package/dist/granular/ui/components/SideNavbar/hooks/useKeyboardShortcut.js +34 -0
  193. package/dist/granular/ui/components/SideNavbar/hooks/useKeyboardShortcut.js.map +1 -0
  194. package/dist/granular/ui/components/SideNavbar/hooks/useResize.js +58 -0
  195. package/dist/granular/ui/components/SideNavbar/hooks/useResize.js.map +1 -0
  196. package/dist/granular/ui/components/SideNavbar/hooks/useResponsiveSidebar.js +35 -0
  197. package/dist/granular/ui/components/SideNavbar/hooks/useResponsiveSidebar.js.map +1 -0
  198. package/dist/granular/ui/components/SideNavbar/hooks/useSideNavbar.js +21 -0
  199. package/dist/granular/ui/components/SideNavbar/hooks/useSideNavbar.js.map +1 -0
  200. package/dist/granular/ui/components/SideNavbar/hooks/useSideNavbarContent.js +19 -0
  201. package/dist/granular/ui/components/SideNavbar/hooks/useSideNavbarContent.js.map +1 -0
  202. package/dist/granular/ui/components/SideNavbar/hooks/useSideNavbarNavigation.js +21 -0
  203. package/dist/granular/ui/components/SideNavbar/hooks/useSideNavbarNavigation.js.map +1 -0
  204. package/dist/granular/ui/components/SideNavbar/providers/SideNavbarConfigProvider.js +61 -0
  205. package/dist/granular/ui/components/SideNavbar/providers/SideNavbarConfigProvider.js.map +1 -0
  206. package/dist/granular/ui/components/SideNavbar/providers/SideNavbarProvider.js +82 -0
  207. package/dist/granular/ui/components/SideNavbar/providers/SideNavbarProvider.js.map +1 -0
  208. package/dist/granular/ui/components/SideNavbar/providers/SideNavbarStateProvider.js +165 -0
  209. package/dist/granular/ui/components/SideNavbar/providers/SideNavbarStateProvider.js.map +1 -0
  210. package/dist/granular/ui/components/SideNavbar/providers/SideNavbarThemeProvider.js +34 -0
  211. package/dist/granular/ui/components/SideNavbar/providers/SideNavbarThemeProvider.js.map +1 -0
  212. package/dist/granular/ui/components/SideNavbar/providers/SidebarSlotProvider.js +28 -0
  213. package/dist/granular/ui/components/SideNavbar/providers/SidebarSlotProvider.js.map +1 -0
  214. package/dist/granular/ui/components/SideNavbar/utils/parseKeyboardShortcut.js +60 -0
  215. package/dist/granular/ui/components/SideNavbar/utils/parseKeyboardShortcut.js.map +1 -0
  216. package/dist/granular/ui/components/SideNavbar/utils/parseWidth.js +19 -0
  217. package/dist/granular/ui/components/SideNavbar/utils/parseWidth.js.map +1 -0
  218. package/dist/granular/ui/components/Stat/Stat.js +84 -0
  219. package/dist/granular/ui/components/Stat/Stat.js.map +1 -0
  220. package/dist/granular/ui/components/Stat/StatGroup.js +61 -0
  221. package/dist/granular/ui/components/Stat/StatGroup.js.map +1 -0
  222. package/dist/granular/ui/components/Stepper/Stepper.js +248 -0
  223. package/dist/granular/ui/components/Stepper/Stepper.js.map +1 -0
  224. package/dist/granular/ui/components/Table/Table.js +162 -0
  225. package/dist/granular/ui/components/Table/Table.js.map +1 -0
  226. package/dist/granular/ui/components/Table/TableActions/TableActions.js +67 -0
  227. package/dist/granular/ui/components/Table/TableActions/TableActions.js.map +1 -0
  228. package/dist/granular/ui/components/Table/TableActions.js +44 -0
  229. package/dist/granular/ui/components/Table/TableActions.js.map +1 -0
  230. package/dist/granular/ui/components/Table/TableBody.js +134 -0
  231. package/dist/granular/ui/components/Table/TableBody.js.map +1 -0
  232. package/dist/granular/ui/components/Table/TableCell.js +40 -0
  233. package/dist/granular/ui/components/Table/TableCell.js.map +1 -0
  234. package/dist/granular/ui/components/Table/TableContext.js +19 -0
  235. package/dist/granular/ui/components/Table/TableContext.js.map +1 -0
  236. package/dist/granular/ui/components/Table/TableEmptyState.js +62 -0
  237. package/dist/granular/ui/components/Table/TableEmptyState.js.map +1 -0
  238. package/dist/granular/ui/components/Table/TableFilters/TableFilters.js +189 -0
  239. package/dist/granular/ui/components/Table/TableFilters/TableFilters.js.map +1 -0
  240. package/dist/granular/ui/components/Table/TableFilters.js +48 -0
  241. package/dist/granular/ui/components/Table/TableFilters.js.map +1 -0
  242. package/dist/granular/ui/components/Table/TableHeader.js +45 -0
  243. package/dist/granular/ui/components/Table/TableHeader.js.map +1 -0
  244. package/dist/granular/ui/components/Table/TableHeaderCell.js +117 -0
  245. package/dist/granular/ui/components/Table/TableHeaderCell.js.map +1 -0
  246. package/dist/granular/ui/components/Table/TableHeaderRow.js +89 -0
  247. package/dist/granular/ui/components/Table/TableHeaderRow.js.map +1 -0
  248. package/dist/granular/ui/components/Table/TablePagination/TablePagination.js +216 -0
  249. package/dist/granular/ui/components/Table/TablePagination/TablePagination.js.map +1 -0
  250. package/dist/granular/ui/components/Table/TablePagination.js +56 -0
  251. package/dist/granular/ui/components/Table/TablePagination.js.map +1 -0
  252. package/dist/granular/ui/components/Table/TableProvider.js +244 -0
  253. package/dist/granular/ui/components/Table/TableProvider.js.map +1 -0
  254. package/dist/granular/ui/components/Table/TableRow.js +95 -0
  255. package/dist/granular/ui/components/Table/TableRow.js.map +1 -0
  256. package/dist/granular/ui/components/Table/useColumnResizing.js +71 -0
  257. package/dist/granular/ui/components/Table/useColumnResizing.js.map +1 -0
  258. package/dist/granular/ui/components/Table/useVirtualScrolling.js +50 -0
  259. package/dist/granular/ui/components/Table/useVirtualScrolling.js.map +1 -0
  260. package/dist/granular/ui/components/Tabs/Tabs.js +39 -0
  261. package/dist/granular/ui/components/Tabs/Tabs.js.map +1 -0
  262. package/dist/granular/ui/components/Tabs/TabsContent.js +59 -0
  263. package/dist/granular/ui/components/Tabs/TabsContent.js.map +1 -0
  264. package/dist/granular/ui/components/Tabs/TabsContext.js +18 -0
  265. package/dist/granular/ui/components/Tabs/TabsContext.js.map +1 -0
  266. package/dist/granular/ui/components/Tabs/TabsList.js +84 -0
  267. package/dist/granular/ui/components/Tabs/TabsList.js.map +1 -0
  268. package/dist/granular/ui/components/Tabs/TabsProvider.js +31 -0
  269. package/dist/granular/ui/components/Tabs/TabsProvider.js.map +1 -0
  270. package/dist/granular/ui/components/Tabs/TabsTrigger.js +103 -0
  271. package/dist/granular/ui/components/Tabs/TabsTrigger.js.map +1 -0
  272. package/dist/granular/ui/components/TimePicker/TimePicker.js +216 -0
  273. package/dist/granular/ui/components/TimePicker/TimePicker.js.map +1 -0
  274. package/dist/granular/ui/components/Timeline/Timeline.js +152 -0
  275. package/dist/granular/ui/components/Timeline/Timeline.js.map +1 -0
  276. package/dist/granular/ui/components/Toast/Toast.js +159 -0
  277. package/dist/granular/ui/components/Toast/Toast.js.map +1 -0
  278. package/dist/granular/ui/components/Toast/ToastContainer.js +41 -0
  279. package/dist/granular/ui/components/Toast/ToastContainer.js.map +1 -0
  280. package/dist/granular/ui/components/Toast/useToast.js +64 -0
  281. package/dist/granular/ui/components/Toast/useToast.js.map +1 -0
  282. package/dist/granular/ui/hooks/createGenericContext.js +27 -0
  283. package/dist/granular/ui/hooks/createGenericContext.js.map +1 -0
  284. package/dist/granular/ui/hooks/focusable.js +14 -0
  285. package/dist/granular/ui/hooks/focusable.js.map +1 -0
  286. package/dist/granular/ui/hooks/useAutoFocus.js +23 -0
  287. package/dist/granular/ui/hooks/useAutoFocus.js.map +1 -0
  288. package/dist/granular/ui/hooks/useCollapsible.js +37 -0
  289. package/dist/granular/ui/hooks/useCollapsible.js.map +1 -0
  290. package/dist/granular/ui/hooks/useFocusRestore.js +20 -0
  291. package/dist/granular/ui/hooks/useFocusRestore.js.map +1 -0
  292. package/dist/granular/ui/hooks/useFocusTrap.js +31 -0
  293. package/dist/granular/ui/hooks/useFocusTrap.js.map +1 -0
  294. package/dist/granular/ui/hooks/useScrollSpy.js +23 -0
  295. package/dist/granular/ui/hooks/useScrollSpy.js.map +1 -0
  296. package/dist/granular/ui/layouts/Container/Container.js +73 -0
  297. package/dist/granular/ui/layouts/Container/Container.js.map +1 -0
  298. package/dist/granular/ui/layouts/Stack/Stack.js +79 -0
  299. package/dist/granular/ui/layouts/Stack/Stack.js.map +1 -0
  300. package/dist/granular/ui/primitives/Avatar/Avatar.js +122 -0
  301. package/dist/granular/ui/primitives/Avatar/Avatar.js.map +1 -0
  302. package/dist/granular/ui/primitives/Avatar/AvatarGroup.js +97 -0
  303. package/dist/granular/ui/primitives/Avatar/AvatarGroup.js.map +1 -0
  304. package/dist/granular/ui/primitives/Badge/Badge.js +212 -0
  305. package/dist/granular/ui/primitives/Badge/Badge.js.map +1 -0
  306. package/dist/granular/ui/primitives/Button/Button.js +288 -0
  307. package/dist/granular/ui/primitives/Button/Button.js.map +1 -0
  308. package/dist/granular/ui/primitives/Checkbox/Checkbox.js +129 -0
  309. package/dist/granular/ui/primitives/Checkbox/Checkbox.js.map +1 -0
  310. package/dist/granular/ui/primitives/Chip/Chip.js +206 -0
  311. package/dist/granular/ui/primitives/Chip/Chip.js.map +1 -0
  312. package/dist/granular/ui/primitives/Collapsible/Collapsible.js +115 -0
  313. package/dist/granular/ui/primitives/Collapsible/Collapsible.js.map +1 -0
  314. package/dist/granular/ui/primitives/ErrorMessage/ErrorMessage.js +54 -0
  315. package/dist/granular/ui/primitives/ErrorMessage/ErrorMessage.js.map +1 -0
  316. package/dist/granular/ui/primitives/Info/Info.js +57 -0
  317. package/dist/granular/ui/primitives/Info/Info.js.map +1 -0
  318. package/dist/granular/ui/primitives/Input/Input.js +351 -0
  319. package/dist/granular/ui/primitives/Input/Input.js.map +1 -0
  320. package/dist/granular/ui/primitives/Label/Label.js +61 -0
  321. package/dist/granular/ui/primitives/Label/Label.js.map +1 -0
  322. package/dist/granular/ui/primitives/NavLink/NavLink.js +229 -0
  323. package/dist/granular/ui/primitives/NavLink/NavLink.js.map +1 -0
  324. package/dist/granular/ui/primitives/NavLink/hooks/useNavLink.js +15 -0
  325. package/dist/granular/ui/primitives/NavLink/hooks/useNavLink.js.map +1 -0
  326. package/dist/granular/ui/primitives/Progress/Progress.js +182 -0
  327. package/dist/granular/ui/primitives/Progress/Progress.js.map +1 -0
  328. package/dist/granular/ui/primitives/Radio/Radio.js +118 -0
  329. package/dist/granular/ui/primitives/Radio/Radio.js.map +1 -0
  330. package/dist/granular/ui/primitives/Select/Select.js +210 -0
  331. package/dist/granular/ui/primitives/Select/Select.js.map +1 -0
  332. package/dist/granular/ui/primitives/Separator/Separator.js +69 -0
  333. package/dist/granular/ui/primitives/Separator/Separator.js.map +1 -0
  334. package/dist/granular/ui/primitives/Skeleton/Skeleton.js +87 -0
  335. package/dist/granular/ui/primitives/Skeleton/Skeleton.js.map +1 -0
  336. package/dist/granular/ui/primitives/Slider/Slider.js +291 -0
  337. package/dist/granular/ui/primitives/Slider/Slider.js.map +1 -0
  338. package/dist/granular/ui/primitives/Spinner/Spinner.js +95 -0
  339. package/dist/granular/ui/primitives/Spinner/Spinner.js.map +1 -0
  340. package/dist/granular/ui/primitives/Switch/Switch.js +212 -0
  341. package/dist/granular/ui/primitives/Switch/Switch.js.map +1 -0
  342. package/dist/granular/ui/primitives/Text/Text.js +118 -0
  343. package/dist/granular/ui/primitives/Text/Text.js.map +1 -0
  344. package/dist/granular/ui/primitives/Textarea/Textarea.js +129 -0
  345. package/dist/granular/ui/primitives/Textarea/Textarea.js.map +1 -0
  346. package/dist/granular/ui/primitives/Tooltip/Tooltip.js +227 -0
  347. package/dist/granular/ui/primitives/Tooltip/Tooltip.js.map +1 -0
  348. package/dist/granular/ui/providers/AppProvider.js +50 -0
  349. package/dist/granular/ui/providers/AppProvider.js.map +1 -0
  350. package/dist/granular/ui/providers/ConfigProvider.js +95 -0
  351. package/dist/granular/ui/providers/ConfigProvider.js.map +1 -0
  352. package/dist/granular/ui/providers/DialogContext.js +20 -0
  353. package/dist/granular/ui/providers/DialogContext.js.map +1 -0
  354. package/dist/granular/ui/providers/DialogProvider.js +32 -0
  355. package/dist/granular/ui/providers/DialogProvider.js.map +1 -0
  356. package/dist/granular/ui/providers/ThemeProvider.js +56 -0
  357. package/dist/granular/ui/providers/ThemeProvider.js.map +1 -0
  358. package/dist/granular/ui/providers/ToastContext.js +20 -0
  359. package/dist/granular/ui/providers/ToastContext.js.map +1 -0
  360. package/dist/granular/ui/providers/ToastProvider.js +47 -0
  361. package/dist/granular/ui/providers/ToastProvider.js.map +1 -0
  362. package/dist/granular/ui/providers/providers-bundle.js +23 -0
  363. package/dist/granular/ui/providers/providers-bundle.js.map +1 -0
  364. package/dist/granular/ui/tokens/animations.js +106 -0
  365. package/dist/granular/ui/tokens/animations.js.map +1 -0
  366. package/dist/granular/ui/tokens/borders.js +54 -0
  367. package/dist/granular/ui/tokens/borders.js.map +1 -0
  368. package/dist/granular/ui/tokens/breakpoints.js +43 -0
  369. package/dist/granular/ui/tokens/breakpoints.js.map +1 -0
  370. package/dist/granular/ui/tokens/colors/brand.js +67 -0
  371. package/dist/granular/ui/tokens/colors/brand.js.map +1 -0
  372. package/dist/granular/ui/tokens/colors/index.js +25 -0
  373. package/dist/granular/ui/tokens/colors/index.js.map +1 -0
  374. package/dist/granular/ui/tokens/colors/primitives.js +320 -0
  375. package/dist/granular/ui/tokens/colors/primitives.js.map +1 -0
  376. package/dist/granular/ui/tokens/colors/semantic.js +212 -0
  377. package/dist/granular/ui/tokens/colors/semantic.js.map +1 -0
  378. package/dist/granular/ui/tokens/colors/types.js +18 -0
  379. package/dist/granular/ui/tokens/colors/types.js.map +1 -0
  380. package/dist/granular/ui/tokens/colors/utils.js +131 -0
  381. package/dist/granular/ui/tokens/colors/utils.js.map +1 -0
  382. package/dist/granular/ui/tokens/opacity.js +59 -0
  383. package/dist/granular/ui/tokens/opacity.js.map +1 -0
  384. package/dist/granular/ui/tokens/radius.js +76 -0
  385. package/dist/granular/ui/tokens/radius.js.map +1 -0
  386. package/dist/granular/ui/tokens/shadows.js +63 -0
  387. package/dist/granular/ui/tokens/shadows.js.map +1 -0
  388. package/dist/granular/ui/tokens/sidebar.js +92 -0
  389. package/dist/granular/ui/tokens/sidebar.js.map +1 -0
  390. package/dist/granular/ui/tokens/spacing.js +143 -0
  391. package/dist/granular/ui/tokens/spacing.js.map +1 -0
  392. package/dist/granular/ui/tokens/switch.js +51 -0
  393. package/dist/granular/ui/tokens/switch.js.map +1 -0
  394. package/dist/granular/ui/tokens/typography.js +146 -0
  395. package/dist/granular/ui/tokens/typography.js.map +1 -0
  396. package/dist/granular/ui/tokens/z-index.js +79 -0
  397. package/dist/granular/ui/tokens/z-index.js.map +1 -0
  398. package/dist/granular/ui/utils/cn.js +10 -0
  399. package/dist/granular/ui/utils/cn.js.map +1 -0
  400. package/dist/granular/ui/utils/cva.js +14 -0
  401. package/dist/granular/ui/utils/cva.js.map +1 -0
  402. package/dist/granular/ui/utils/mergeRefs.js +11 -0
  403. package/dist/granular/ui/utils/mergeRefs.js.map +1 -0
  404. package/dist/granular/vite.svg +1 -0
  405. package/dist/index.cjs +46 -46
  406. package/dist/index.cjs.map +1 -1
  407. package/dist/index.js +1172 -1135
  408. package/dist/index.js.map +1 -1
  409. package/dist/react-design-system.css +1 -1
  410. package/dist/server/index.cjs +23 -23
  411. package/dist/server/index.cjs.map +1 -1
  412. package/dist/server/index.js +882 -1179
  413. package/dist/server/index.js.map +1 -1
  414. package/dist/ui/components/FilterChips/FilterChips.d.ts +83 -0
  415. package/dist/ui/components/FilterChips/index.d.ts +2 -0
  416. package/dist/ui/components/index.d.ts +2 -0
  417. package/dist/ui/server.d.ts +2 -0
  418. 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;"}