@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,108 @@
1
+ "use client";
2
+ var x = Object.defineProperty, w = Object.defineProperties;
3
+ var y = Object.getOwnPropertyDescriptors;
4
+ var n = Object.getOwnPropertySymbols;
5
+ var f = Object.prototype.hasOwnProperty, c = Object.prototype.propertyIsEnumerable;
6
+ var l = (e, o, r) => o in e ? x(e, o, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[o] = r, u = (e, o) => {
7
+ for (var r in o || (o = {}))
8
+ f.call(o, r) && l(e, r, o[r]);
9
+ if (n)
10
+ for (var r of n(o))
11
+ c.call(o, r) && l(e, r, o[r]);
12
+ return e;
13
+ }, m = (e, o) => w(e, y(o));
14
+ var d = (e, o) => {
15
+ var r = {};
16
+ for (var s in e)
17
+ f.call(e, s) && o.indexOf(s) < 0 && (r[s] = e[s]);
18
+ if (e != null && n)
19
+ for (var s of n(e))
20
+ o.indexOf(s) < 0 && c.call(e, s) && (r[s] = e[s]);
21
+ return r;
22
+ };
23
+ import { jsx as a } from "react/jsx-runtime";
24
+ import { ChevronRight as $, ChevronLeft as N } from "lucide-react";
25
+ import { useNavbarRequired as I } from "../../contexts/NavbarContext.js";
26
+ import R from "../../../../primitives/Tooltip/Tooltip.js";
27
+ import { getRadiusClass as j } from "../../../../tokens/radius.js";
28
+ import { getShadowClass as E } from "../../../../tokens/shadows.js";
29
+ function F(S) {
30
+ var i = S, {
31
+ icon: e,
32
+ size: o = "sm",
33
+ variant: r = "ghost",
34
+ className: s = ""
35
+ } = i, h = d(i, [
36
+ "icon",
37
+ "size",
38
+ "variant",
39
+ "className"
40
+ ]);
41
+ const { collapsed: t, toggle: g } = I(), p = () => e ? typeof e == "function" ? e(t) : e : /* @__PURE__ */ a(
42
+ t ? $ : N,
43
+ {
44
+ className: v[o],
45
+ style: {
46
+ transition: "none",
47
+ transform: "none",
48
+ willChange: "auto"
49
+ }
50
+ }
51
+ ), b = {
52
+ xs: "w-6 h-6",
53
+ sm: "w-8 h-8",
54
+ md: "w-10 h-10"
55
+ }, v = {
56
+ xs: "w-3 h-3",
57
+ sm: "w-4 h-4",
58
+ md: "w-5 h-5"
59
+ }, C = {
60
+ default: `bg-surface-base border border-line-default ${E("sm")} hover:bg-surface-hover`,
61
+ ghost: "hover:bg-surface-active",
62
+ outline: "border border-line-emphasis hover:bg-surface-hover"
63
+ };
64
+ return /* @__PURE__ */ a(
65
+ R,
66
+ {
67
+ content: t ? "Expand sidebar" : "Collapse sidebar",
68
+ position: "right",
69
+ children: /* @__PURE__ */ a(
70
+ "button",
71
+ m(u({
72
+ type: "button",
73
+ onClick: g,
74
+ className: `
75
+ flex
76
+ items-center
77
+ justify-center
78
+ ${j("md")}
79
+ text-fg-secondary
80
+ hover:text-fg-primary
81
+ focus:outline-none
82
+ focus:ring-2
83
+ focus:ring-line-focus
84
+ focus:ring-offset-1
85
+ ${b[o]}
86
+ ${C[r]}
87
+ [&:hover]:!transform-none
88
+ ${s}
89
+ `,
90
+ style: {
91
+ // Remover transições que possam causar movimento
92
+ willChange: "auto",
93
+ transform: "none",
94
+ transition: "none"
95
+ },
96
+ "aria-label": t ? "Expand sidebar" : "Collapse sidebar",
97
+ "aria-expanded": !t
98
+ }, h), {
99
+ children: p()
100
+ })
101
+ )
102
+ }
103
+ );
104
+ }
105
+ export {
106
+ F as default
107
+ };
108
+ //# sourceMappingURL=NavbarToggle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NavbarToggle.js","sources":["../../../../../../../src/ui/components/SideNavbar/components/Navbar/NavbarToggle.tsx"],"sourcesContent":["\"use client\";\n\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { useNavbarRequired } from \"../../contexts/NavbarContext\";\nimport Tooltip from \"../../../../primitives/Tooltip/Tooltip\";\nimport { getRadiusClass } from \"../../../../tokens/radius\";\nimport { getShadowClass } from \"../../../../tokens/shadows\";\nimport type { NavbarToggleProps } from \"../../types\";\n\n/**\n * Toggle button for the Navbar subcomponent\n *\n * Uses the NavbarContext to control the sidebar collapse state.\n * Can be customized with different icons, sizes, and variants.\n *\n * @example\n * ```tsx\n * <SideNavbar.Navbar.Toggle\n * variant=\"ghost\"\n * icon={(collapsed) => collapsed ? <ChevronRight /> : <ChevronLeft />}\n * />\n * ```\n */\nexport default function NavbarToggle({\n icon,\n size = \"sm\",\n variant = \"ghost\",\n className = \"\",\n ...props\n}: NavbarToggleProps) {\n const { collapsed, toggle } = useNavbarRequired();\n\n // Render the icon\n const renderIcon = () => {\n if (icon) {\n return typeof icon === \"function\" ? icon(collapsed) : icon;\n }\n const Icon = collapsed ? ChevronRight : ChevronLeft;\n return (\n <Icon\n className={iconSizeClasses[size]}\n style={{\n transition: \"none\",\n transform: \"none\",\n willChange: \"auto\",\n }}\n />\n );\n };\n\n const sizeClasses = {\n xs: \"w-6 h-6\",\n sm: \"w-8 h-8\",\n md: \"w-10 h-10\",\n };\n\n const iconSizeClasses = {\n xs: \"w-3 h-3\",\n sm: \"w-4 h-4\",\n md: \"w-5 h-5\",\n };\n\n const variantClasses = {\n default: `bg-surface-base border border-line-default ${getShadowClass(\"sm\")} hover:bg-surface-hover`,\n ghost: \"hover:bg-surface-active\",\n outline: \"border border-line-emphasis hover:bg-surface-hover\",\n };\n\n return (\n <Tooltip\n content={collapsed ? \"Expand sidebar\" : \"Collapse sidebar\"}\n position=\"right\"\n >\n <button\n type=\"button\"\n onClick={toggle}\n className={`\n flex\n items-center\n justify-center\n ${getRadiusClass(\"md\")}\n text-fg-secondary\n hover:text-fg-primary\n focus:outline-none\n focus:ring-2\n focus:ring-line-focus\n focus:ring-offset-1\n ${sizeClasses[size]}\n ${variantClasses[variant]}\n [&:hover]:!transform-none\n ${className}\n `}\n style={{\n // Remover transições que possam causar movimento\n willChange: \"auto\",\n transform: \"none\",\n transition: \"none\",\n }}\n aria-label={collapsed ? \"Expand sidebar\" : \"Collapse sidebar\"}\n aria-expanded={!collapsed}\n {...props}\n >\n {renderIcon()}\n </button>\n </Tooltip>\n );\n}\n"],"names":["NavbarToggle","_a","_b","icon","size","variant","className","props","__objRest","collapsed","toggle","useNavbarRequired","renderIcon","jsx","ChevronRight","ChevronLeft","iconSizeClasses","sizeClasses","variantClasses","getShadowClass","Tooltip","__spreadProps","__spreadValues","getRadiusClass"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,SAAwBA,EAAaC,GAMf;AANe,MAAAC,IAAAD,GACnC;AAAA,UAAAE;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,SAAAC,IAAU;AAAA,IACV,WAAAC,IAAY;AAAA,MAJuBJ,GAKhCK,IAAAC,EALgCN,GAKhC;AAAA,IAJH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAM,EAAE,WAAAO,GAAW,QAAAC,EAAA,IAAWC,EAAA,GAGxBC,IAAa,MACbT,IACK,OAAOA,KAAS,aAAaA,EAAKM,CAAS,IAAIN,IAItD,gBAAAU;AAAA,IAFWJ,IAAYK,IAAeC;AAAA,IAErC;AAAA,MACC,WAAWC,EAAgBZ,CAAI;AAAA,MAC/B,OAAO;AAAA,QACL,YAAY;AAAA,QACZ,WAAW;AAAA,QACX,YAAY;AAAA,MAAA;AAAA,IACd;AAAA,EAAA,GAKAa,IAAc;AAAA,IAClB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EAAA,GAGAD,IAAkB;AAAA,IACtB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EAAA,GAGAE,IAAiB;AAAA,IACrB,SAAS,8CAA8CC,EAAe,IAAI,CAAC;AAAA,IAC3E,OAAO;AAAA,IACP,SAAS;AAAA,EAAA;AAGX,SACE,gBAAAN;AAAA,IAACO;AAAA,IAAA;AAAA,MACC,SAASX,IAAY,mBAAmB;AAAA,MACxC,UAAS;AAAA,MAET,UAAA,gBAAAI;AAAA,QAAC;AAAA,QAAAQ,EAAAC,EAAA;AAAA,UACC,MAAK;AAAA,UACL,SAASZ;AAAA,UACT,WAAW;AAAA;AAAA;AAAA;AAAA,YAIPa,EAAe,IAAI,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAOpBN,EAAYb,CAAI,CAAC;AAAA,YACjBc,EAAeb,CAAO,CAAC;AAAA;AAAA,YAEvBC,CAAS;AAAA;AAAA,UAEb,OAAO;AAAA;AAAA,YAEL,YAAY;AAAA,YACZ,WAAW;AAAA,YACX,YAAY;AAAA,UAAA;AAAA,UAEd,cAAYG,IAAY,mBAAmB;AAAA,UAC3C,iBAAe,CAACA;AAAA,WACZF,IA3BL;AAAA,UA6BE,UAAAK,EAAA;AAAA,QAAW;AAAA,MAAA;AAAA,IACd;AAAA,EAAA;AAGN;"}
@@ -0,0 +1,63 @@
1
+ "use client";
2
+ var y = Object.defineProperty;
3
+ var i = Object.getOwnPropertySymbols;
4
+ var d = Object.prototype.hasOwnProperty, l = Object.prototype.propertyIsEnumerable;
5
+ var n = (a, e, o) => e in a ? y(a, e, { enumerable: !0, configurable: !0, writable: !0, value: o }) : a[e] = o, r = (a, e) => {
6
+ for (var o in e || (e = {}))
7
+ d.call(e, o) && n(a, o, e[o]);
8
+ if (i)
9
+ for (var o of i(e))
10
+ l.call(e, o) && n(a, o, e[o]);
11
+ return a;
12
+ };
13
+ var m = (a, e) => {
14
+ var o = {};
15
+ for (var t in a)
16
+ d.call(a, t) && e.indexOf(t) < 0 && (o[t] = a[t]);
17
+ if (a != null && i)
18
+ for (var t of i(a))
19
+ e.indexOf(t) < 0 && l.call(a, t) && (o[t] = a[t]);
20
+ return o;
21
+ };
22
+ import { jsx as C } from "react/jsx-runtime";
23
+ import { useSideNavbarStateRequired as g } from "../contexts/SideNavbarStateContext.js";
24
+ import { useSideNavbarThemeRequired as q } from "../contexts/SideNavbarThemeContext.js";
25
+ import { useSideNavbarConfigRequired as R } from "../contexts/SideNavbarConfigContext.js";
26
+ import { getZIndexClass as $ } from "../../../tokens/z-index.js";
27
+ function T(v) {
28
+ var s = v, {
29
+ visible: a,
30
+ onBackdropClick: e,
31
+ className: o = "",
32
+ style: t
33
+ } = s, u = m(s, [
34
+ "visible",
35
+ "onBackdropClick",
36
+ "className",
37
+ "style"
38
+ ]);
39
+ const { collapsed: c, setCollapsed: f, isMobile: p } = g(), { animationDuration: b } = q(), { mobileVariant: S, overlayBackdrop: h } = R(), N = p && S === "overlay", k = a != null ? a : N && h && !c, x = () => {
40
+ e ? e() : f(!0);
41
+ };
42
+ return k ? /* @__PURE__ */ C(
43
+ "div",
44
+ r({
45
+ className: `
46
+ fixed inset-0
47
+ bg-scrim
48
+ ${$("modal-backdrop")}
49
+ ${o}
50
+ `,
51
+ style: r({
52
+ animation: `fadeIn ${b}ms ease-in-out`
53
+ }, t),
54
+ onClick: x,
55
+ "aria-hidden": "true",
56
+ "data-testid": "side-navbar-backdrop"
57
+ }, u)
58
+ ) : null;
59
+ }
60
+ export {
61
+ T as default
62
+ };
63
+ //# sourceMappingURL=SideNavbarBackdrop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SideNavbarBackdrop.js","sources":["../../../../../../src/ui/components/SideNavbar/components/SideNavbarBackdrop.tsx"],"sourcesContent":["\"use client\";\n\nimport { type HTMLAttributes } from \"react\";\nimport { useSideNavbarStateRequired } from \"../contexts/SideNavbarStateContext\";\nimport { useSideNavbarThemeRequired } from \"../contexts/SideNavbarThemeContext\";\nimport { useSideNavbarConfigRequired } from \"../contexts/SideNavbarConfigContext\";\nimport { getZIndexClass } from \"../../../tokens/z-index\";\n\nexport interface SideNavbarBackdropProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Override visibility (uses context by default)\n */\n visible?: boolean;\n\n /**\n * Click handler override\n */\n onBackdropClick?: () => void;\n}\n\n/**\n * SideNavbar Backdrop Component\n *\n * Semi-transparent overlay for mobile overlay mode.\n * Automatically manages visibility based on sidebar state.\n *\n * @example\n * ```tsx\n * // Usually rendered automatically by SideNavbarRoot\n * <SideNavbar.Backdrop />\n *\n * // Or with custom click handler\n * <SideNavbar.Backdrop onBackdropClick={() => console.log('clicked')} />\n * ```\n */\nexport default function SideNavbarBackdrop({\n visible: visibleOverride,\n onBackdropClick,\n className = \"\",\n style,\n ...props\n}: SideNavbarBackdropProps) {\n const { collapsed, setCollapsed, isMobile } = useSideNavbarStateRequired();\n const { animationDuration } = useSideNavbarThemeRequired();\n const { mobileVariant, overlayBackdrop } = useSideNavbarConfigRequired();\n\n // Determine visibility\n const isOverlayMode = isMobile && mobileVariant === \"overlay\";\n const shouldShow =\n visibleOverride ?? (isOverlayMode && overlayBackdrop && !collapsed);\n\n const handleClick = () => {\n if (onBackdropClick) {\n onBackdropClick();\n } else {\n setCollapsed(true);\n }\n };\n\n if (!shouldShow) {\n return null;\n }\n\n return (\n <div\n className={`\n fixed inset-0\n bg-scrim\n ${getZIndexClass(\"modal-backdrop\")}\n ${className}\n `}\n style={{\n animation: `fadeIn ${animationDuration}ms ease-in-out`,\n ...style,\n }}\n onClick={handleClick}\n aria-hidden=\"true\"\n data-testid=\"side-navbar-backdrop\"\n {...props}\n />\n );\n}\n"],"names":["SideNavbarBackdrop","_a","_b","visibleOverride","onBackdropClick","className","style","props","__objRest","collapsed","setCollapsed","isMobile","useSideNavbarStateRequired","animationDuration","useSideNavbarThemeRequired","mobileVariant","overlayBackdrop","useSideNavbarConfigRequired","isOverlayMode","shouldShow","handleClick","jsx","__spreadValues","getZIndexClass"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAmCA,SAAwBA,EAAmBC,GAMf;AANe,MAAAC,IAAAD,GACzC;AAAA,aAASE;AAAA,IACT,iBAAAC;AAAA,IACA,WAAAC,IAAY;AAAA,IACZ,OAAAC;AAAA,MAJyCJ,GAKtCK,IAAAC,EALsCN,GAKtC;AAAA,IAJH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAM,EAAE,WAAAO,GAAW,cAAAC,GAAc,UAAAC,EAAA,IAAaC,EAAA,GACxC,EAAE,mBAAAC,EAAA,IAAsBC,EAAA,GACxB,EAAE,eAAAC,GAAe,iBAAAC,EAAA,IAAoBC,EAAA,GAGrCC,IAAgBP,KAAYI,MAAkB,WAC9CI,IACJhB,KAAA,OAAAA,IAAoBe,KAAiBF,KAAmB,CAACP,GAErDW,IAAc,MAAM;AACxB,IAAIhB,IACFA,EAAA,IAEAM,EAAa,EAAI;AAAA,EAErB;AAEA,SAAKS,IAKH,gBAAAE;AAAA,IAAC;AAAA,IAAAC,EAAA;AAAA,MACC,WAAW;AAAA;AAAA;AAAA,UAGPC,EAAe,gBAAgB,CAAC;AAAA,UAChClB,CAAS;AAAA;AAAA,MAEb,OAAOiB,EAAA;AAAA,QACL,WAAW,UAAUT,CAAiB;AAAA,SACnCP;AAAA,MAEL,SAASc;AAAA,MACT,eAAY;AAAA,MACZ,eAAY;AAAA,OACRb;AAAA,EAAA,IAlBC;AAqBX;"}
@@ -0,0 +1,113 @@
1
+ "use client";
2
+ var v = Object.defineProperty, w = Object.defineProperties;
3
+ var R = Object.getOwnPropertyDescriptors;
4
+ var o = Object.getOwnPropertySymbols;
5
+ var l = Object.prototype.hasOwnProperty, u = Object.prototype.propertyIsEnumerable;
6
+ var c = (e, r, t) => r in e ? v(e, r, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[r] = t, p = (e, r) => {
7
+ for (var t in r || (r = {}))
8
+ l.call(r, t) && c(e, t, r[t]);
9
+ if (o)
10
+ for (var t of o(r))
11
+ u.call(r, t) && c(e, t, r[t]);
12
+ return e;
13
+ }, d = (e, r) => w(e, R(r));
14
+ var f = (e, r) => {
15
+ var t = {};
16
+ for (var i in e)
17
+ l.call(e, i) && r.indexOf(i) < 0 && (t[i] = e[i]);
18
+ if (e != null && o)
19
+ for (var i of o(e))
20
+ r.indexOf(i) < 0 && u.call(e, i) && (t[i] = e[i]);
21
+ return t;
22
+ };
23
+ import { jsxs as z, jsx as b } from "react/jsx-runtime";
24
+ import { GripVertical as x } from "lucide-react";
25
+ import { useSideNavbarStateRequired as N } from "../contexts/SideNavbarStateContext.js";
26
+ import { useSideNavbarConfigRequired as $ } from "../contexts/SideNavbarConfigContext.js";
27
+ import { getRadiusClass as S } from "../../../tokens/radius.js";
28
+ function L(t) {
29
+ var i = t, {
30
+ className: e = ""
31
+ } = i, r = f(i, [
32
+ "className"
33
+ ]);
34
+ const { currentWidth: n, setWidth: m, isResizing: s, startResize: g } = N(), { resizable: h } = $();
35
+ return h ? (
36
+ // micro-z: resize handle above sidebar border for grab affordance (see z-10 below)
37
+ /* @__PURE__ */ z(
38
+ "div",
39
+ d(p({
40
+ className: `
41
+ group
42
+ absolute
43
+ top-0
44
+ right-0
45
+ w-1
46
+ h-full
47
+ cursor-col-resize
48
+ hover:bg-surface-brand/50
49
+ active:bg-surface-brand-emphasis
50
+ transition-colors
51
+ duration-150
52
+ z-10
53
+ flex
54
+ items-center
55
+ justify-center
56
+ ${s ? "bg-surface-brand-emphasis" : ""}
57
+ ${e}
58
+ `,
59
+ onMouseDown: g,
60
+ role: "separator",
61
+ "aria-orientation": "vertical",
62
+ "aria-label": "Resize sidebar",
63
+ "aria-valuenow": n,
64
+ tabIndex: 0,
65
+ onKeyDown: (a) => {
66
+ if (a.key === "ArrowLeft" || a.key === "ArrowRight") {
67
+ a.preventDefault();
68
+ const y = a.key === "ArrowLeft" ? -10 : 10;
69
+ m(n + y);
70
+ }
71
+ }
72
+ }, r), {
73
+ children: [
74
+ /* @__PURE__ */ b(
75
+ "div",
76
+ {
77
+ className: `
78
+ w-0.5
79
+ h-8
80
+ bg-line-strong
81
+ ${S("full")}
82
+ opacity-0
83
+ group-hover:opacity-100
84
+ transition-opacity
85
+ ${s ? "opacity-100" : ""}
86
+ `
87
+ }
88
+ ),
89
+ /* @__PURE__ */ b(
90
+ x,
91
+ {
92
+ className: `
93
+ h-4
94
+ w-4
95
+ text-fg-tertiary
96
+ opacity-0
97
+ group-hover:opacity-100
98
+ transition-opacity
99
+ absolute
100
+ ${s ? "opacity-100" : ""}
101
+ `,
102
+ "aria-hidden": "true"
103
+ }
104
+ )
105
+ ]
106
+ })
107
+ )
108
+ ) : null;
109
+ }
110
+ export {
111
+ L as default
112
+ };
113
+ //# sourceMappingURL=SideNavbarResizeHandle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SideNavbarResizeHandle.js","sources":["../../../../../../src/ui/components/SideNavbar/components/SideNavbarResizeHandle.tsx"],"sourcesContent":["\"use client\";\n\nimport { type HTMLAttributes } from \"react\";\nimport { GripVertical } from \"lucide-react\";\nimport { useSideNavbarStateRequired } from \"../contexts/SideNavbarStateContext\";\nimport { useSideNavbarConfigRequired } from \"../contexts/SideNavbarConfigContext\";\nimport { getRadiusClass } from \"../../../tokens/radius\";\n\nexport type SideNavbarResizeHandleProps = HTMLAttributes<HTMLDivElement>;\n\n/**\n * SideNavbar Resize Handle Component\n *\n * Drag handle for resizing the sidebar width.\n * Uses context for state management - no props needed for resize configuration.\n *\n * @example\n * ```tsx\n * <SideNavbar resizable minWidth={200} maxWidth={600}>\n * <SideNavbar.ResizeHandle />\n * ...\n * </SideNavbar>\n * ```\n */\nexport default function SideNavbarResizeHandle({\n className = \"\",\n ...props\n}: SideNavbarResizeHandleProps) {\n const { currentWidth, setWidth, isResizing, startResize } =\n useSideNavbarStateRequired();\n const { resizable } = useSideNavbarConfigRequired();\n\n if (!resizable) {\n return null;\n }\n\n return (\n // micro-z: resize handle above sidebar border for grab affordance (see z-10 below)\n <div\n className={`\n group\n absolute\n top-0\n right-0\n w-1\n h-full\n cursor-col-resize\n hover:bg-surface-brand/50\n active:bg-surface-brand-emphasis\n transition-colors\n duration-150\n z-10\n flex\n items-center\n justify-center\n ${isResizing ? \"bg-surface-brand-emphasis\" : \"\"}\n ${className}\n `}\n onMouseDown={startResize}\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label=\"Resize sidebar\"\n aria-valuenow={currentWidth}\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === \"ArrowLeft\" || e.key === \"ArrowRight\") {\n e.preventDefault();\n const delta = e.key === \"ArrowLeft\" ? -10 : 10;\n setWidth(currentWidth + delta);\n }\n }}\n {...props}\n >\n <div\n className={`\n w-0.5\n h-8\n bg-line-strong\n ${getRadiusClass(\"full\")}\n opacity-0\n group-hover:opacity-100\n transition-opacity\n ${isResizing ? \"opacity-100\" : \"\"}\n `}\n />\n <GripVertical\n className={`\n h-4\n w-4\n text-fg-tertiary\n opacity-0\n group-hover:opacity-100\n transition-opacity\n absolute\n ${isResizing ? \"opacity-100\" : \"\"}\n `}\n aria-hidden=\"true\"\n />\n </div>\n );\n}\n"],"names":["SideNavbarResizeHandle","_a","_b","className","props","__objRest","currentWidth","setWidth","isResizing","startResize","useSideNavbarStateRequired","resizable","useSideNavbarConfigRequired","jsxs","__spreadProps","__spreadValues","e","delta","jsx","getRadiusClass","GripVertical"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,SAAwBA,EAAuBC,GAGf;AAHe,MAAAC,IAAAD,GAC7C;AAAA,eAAAE,IAAY;AAAA,MADiCD,GAE1CE,IAAAC,EAF0CH,GAE1C;AAAA,IADH;AAAA;AAGA,QAAM,EAAE,cAAAI,GAAc,UAAAC,GAAU,YAAAC,GAAY,aAAAC,EAAA,IAC1CC,EAAA,GACI,EAAE,WAAAC,EAAA,IAAcC,EAAA;AAEtB,SAAKD;AAAA;AAAA,IAMH,gBAAAE;AAAA,MAAC;AAAA,MAAAC,EAAAC,EAAA;AAAA,QACC,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAgBPP,IAAa,8BAA8B,EAAE;AAAA,UAC7CL,CAAS;AAAA;AAAA,QAEb,aAAaM;AAAA,QACb,MAAK;AAAA,QACL,oBAAiB;AAAA,QACjB,cAAW;AAAA,QACX,iBAAeH;AAAA,QACf,UAAU;AAAA,QACV,WAAW,CAACU,MAAM;AAChB,cAAIA,EAAE,QAAQ,eAAeA,EAAE,QAAQ,cAAc;AACnD,YAAAA,EAAE,eAAA;AACF,kBAAMC,IAAQD,EAAE,QAAQ,cAAc,MAAM;AAC5C,YAAAT,EAASD,IAAeW,CAAK;AAAA,UAC/B;AAAA,QACF;AAAA,SACIb,IAjCL;AAAA,QAmCC,UAAA;AAAA,UAAA,gBAAAc;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAW;AAAA;AAAA;AAAA;AAAA,YAIPC,EAAe,MAAM,CAAC;AAAA;AAAA;AAAA;AAAA,YAItBX,IAAa,gBAAgB,EAAE;AAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAGrC,gBAAAU;AAAA,YAACE;AAAA,YAAA;AAAA,cACC,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAQPZ,IAAa,gBAAgB,EAAE;AAAA;AAAA,cAEnC,eAAY;AAAA,YAAA;AAAA,UAAA;AAAA,QACd;AAAA,MAAA;AAAA,IAAA;AAAA,MAhEK;AAmEX;"}
@@ -0,0 +1,150 @@
1
+ "use client";
2
+ var L = Object.defineProperty, Q = Object.defineProperties;
3
+ var X = Object.getOwnPropertyDescriptors;
4
+ var u = Object.getOwnPropertySymbols;
5
+ var M = Object.prototype.hasOwnProperty, O = Object.prototype.propertyIsEnumerable;
6
+ var W = (e, o, i) => o in e ? L(e, o, { enumerable: !0, configurable: !0, writable: !0, value: i }) : e[o] = i, b = (e, o) => {
7
+ for (var i in o || (o = {}))
8
+ M.call(o, i) && W(e, i, o[i]);
9
+ if (u)
10
+ for (var i of u(o))
11
+ O.call(o, i) && W(e, i, o[i]);
12
+ return e;
13
+ }, P = (e, o) => Q(e, X(o));
14
+ var _ = (e, o) => {
15
+ var i = {};
16
+ for (var t in e)
17
+ M.call(e, t) && o.indexOf(t) < 0 && (i[t] = e[t]);
18
+ if (e != null && u)
19
+ for (var t of u(e))
20
+ o.indexOf(t) < 0 && O.call(e, t) && (i[t] = e[t]);
21
+ return i;
22
+ };
23
+ import { jsxs as E, Fragment as Y, jsx as v } from "react/jsx-runtime";
24
+ import { useState as ee, useEffect as oe, Children as V, isValidElement as k } from "react";
25
+ import { useSideNavbarStateRequired as ie } from "../contexts/SideNavbarStateContext.js";
26
+ import { useSideNavbarThemeRequired as te } from "../contexts/SideNavbarThemeContext.js";
27
+ import { useSideNavbarConfigRequired as re } from "../contexts/SideNavbarConfigContext.js";
28
+ import { useSideNavbarToggleContextRequired as ae } from "../contexts/SideNavbarToggleContext.js";
29
+ import { getShadowClass as ne } from "../../../tokens/shadows.js";
30
+ import { getZIndexClass as se } from "../../../tokens/z-index.js";
31
+ import le from "./SideNavbarResizeHandle.js";
32
+ import de from "./SideNavbarBackdrop.js";
33
+ import ce from "./SideNavbarToggle.js";
34
+ import { cn as fe } from "../../../utils/cn.js";
35
+ function $(e) {
36
+ return !k(e) || typeof e.type == "string" ? !1 : e.type.__SIDENAVBAR_KIND__ === "navbar";
37
+ }
38
+ function ue(e) {
39
+ let o, i, t = 0, c = !1;
40
+ for (const s of V.toArray(e)) {
41
+ if ($(s)) {
42
+ const { showMainToggle: r, mainTogglePosition: a } = s.props;
43
+ if (!(r !== void 0 || a !== void 0)) continue;
44
+ t++, t === 1 && (o = r, i = a);
45
+ continue;
46
+ }
47
+ if (!k(s)) continue;
48
+ const l = s.props;
49
+ if (l.children !== void 0)
50
+ for (const r of V.toArray(l.children)) {
51
+ if (!$(r)) continue;
52
+ const { showMainToggle: a, mainTogglePosition: f } = r.props;
53
+ if (a !== void 0 || f !== void 0) {
54
+ c = !0;
55
+ break;
56
+ }
57
+ }
58
+ }
59
+ return {
60
+ show: o,
61
+ position: i,
62
+ overrideCount: t,
63
+ wrappedNavbarWithOverride: c
64
+ };
65
+ }
66
+ const ve = {
67
+ default: "",
68
+ compact: "text-sm",
69
+ elevated: ne("lg"),
70
+ minimal: "border-0",
71
+ bordered: "border-2"
72
+ };
73
+ function Oe(s) {
74
+ var l = s, {
75
+ children: e,
76
+ className: o = "",
77
+ style: i,
78
+ "aria-label": t
79
+ } = l, c = _(l, [
80
+ "children",
81
+ "className",
82
+ "style",
83
+ "aria-label"
84
+ ]);
85
+ var T, R;
86
+ const r = ie(), a = te(), f = re(), h = ae(), x = ue(e), q = (T = x.show) != null ? T : h.showMainToggle, A = (R = x.position) != null ? R : h.mainTogglePosition, {
87
+ collapsed: n,
88
+ setCollapsed: me,
89
+ currentWidth: D,
90
+ isResizing: I,
91
+ sidebarRef: z,
92
+ isMobile: B
93
+ } = r, {
94
+ variant: F,
95
+ navigationWidth: m,
96
+ contentWidth: p,
97
+ animationDuration: j,
98
+ animationEasing: H
99
+ } = a, { mode: d, resizable: w, mobileVariant: K, overlayBackdrop: U } = f, N = typeof m == "number" ? `${m}px` : m, Z = typeof p == "number" ? `${p}px` : p, S = d === "navigation" || n ? N : w ? `${D}px` : Z, [y, G] = ee(!1);
100
+ oe(() => {
101
+ G(!0);
102
+ }, []);
103
+ const C = B && K === "overlay", g = y && C, J = g ? `fixed left-0 top-0 ${se("fixed")}` : "relative";
104
+ return /* @__PURE__ */ E(Y, { children: [
105
+ y && C && U && !n && /* @__PURE__ */ v(de, {}),
106
+ /* @__PURE__ */ E(
107
+ "aside",
108
+ P(b({
109
+ ref: z,
110
+ id: "side-navbar-sidebar",
111
+ className: fe(
112
+ J,
113
+ "flex",
114
+ "h-full",
115
+ "overflow-visible",
116
+ ve[F],
117
+ g && n ? "-translate-x-full" : "translate-x-0",
118
+ o
119
+ ),
120
+ style: b({
121
+ // Em desktop: sempre 'relative' para ficar no mesmo plano do conteúdo
122
+ // Em mobile overlay: 'fixed' para sobrepor o conteúdo
123
+ position: g ? "fixed" : "relative",
124
+ backgroundColor: "var(--color-surface-subtle)",
125
+ borderRight: "1px solid var(--color-line-default)",
126
+ width: S,
127
+ minWidth: S,
128
+ transitionProperty: I ? "none" : "width, min-width, transform",
129
+ transitionDuration: `${j}ms`,
130
+ transitionTimingFunction: H
131
+ }, i),
132
+ role: "complementary",
133
+ "aria-label": t || "Sidebar navigation",
134
+ "aria-expanded": d !== "navigation" ? !n : void 0,
135
+ "data-mode": d,
136
+ "data-collapsed": n
137
+ }, c), {
138
+ children: [
139
+ w && d !== "navigation" && !n && /* @__PURE__ */ v(le, {}),
140
+ q && d !== "navigation" && /* @__PURE__ */ v(ce, { position: A }),
141
+ /* @__PURE__ */ v("div", { className: "flex h-full w-full overflow-visible", children: e })
142
+ ]
143
+ })
144
+ )
145
+ ] });
146
+ }
147
+ export {
148
+ Oe as default
149
+ };
150
+ //# sourceMappingURL=SideNavbarRoot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SideNavbarRoot.js","sources":["../../../../../../src/ui/components/SideNavbar/components/SideNavbarRoot.tsx"],"sourcesContent":["\"use client\";\n\nimport React, {\n Children,\n isValidElement,\n useState,\n useEffect,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport { useSideNavbarStateRequired } from \"../contexts/SideNavbarStateContext\";\nimport { useSideNavbarThemeRequired } from \"../contexts/SideNavbarThemeContext\";\nimport { useSideNavbarConfigRequired } from \"../contexts/SideNavbarConfigContext\";\nimport { useSideNavbarToggleContextRequired } from \"../contexts/SideNavbarToggleContext\";\nimport { cn } from \"../../../utils\";\nimport { getShadowClass } from \"../../../tokens/shadows\";\nimport { getZIndexClass } from \"../../../tokens/z-index\";\nimport SideNavbarResizeHandle from \"./SideNavbarResizeHandle\";\nimport SideNavbarBackdrop from \"./SideNavbarBackdrop\";\nimport SideNavbarToggle from \"./SideNavbarToggle\";\nimport type {\n SideNavbarRootProps,\n SideNavbarTogglePosition,\n NavbarProps,\n} from \"../types\";\n\n// ---------------------------------------------------------------------------\n// Per-Navbar override resolution (render-driven, see Phase 2C Treatment 2)\n// ---------------------------------------------------------------------------\n\n/**\n * Type guard: is `child` a `<SideNavbar.Navbar>` element?\n *\n * Uses the static `__SIDENAVBAR_KIND__ === \"navbar\"` marker attached to\n * the Navbar component (set in Navbar.tsx). String tag is resilient to\n * React DevTools displayName mutations and survives function-identity\n * wrapping better than `element.type === Navbar` reference comparison.\n * The single `as` cast is confined to this guard with a `typeof !==\n * \"string\"` short-circuit guarding against host elements (which would\n * otherwise satisfy `isValidElement` but never carry our marker).\n */\nfunction isNavbarElement(\n child: ReactNode,\n): child is ReactElement<\n Pick<NavbarProps, \"showMainToggle\" | \"mainTogglePosition\">\n> {\n if (!isValidElement(child)) return false;\n if (typeof child.type === \"string\") return false;\n return (\n (child.type as { __SIDENAVBAR_KIND__?: string }).__SIDENAVBAR_KIND__ ===\n \"navbar\"\n );\n}\n\n/**\n * Walk the direct `children` of SideNavbarRoot and return the first\n * `<SideNavbar.Navbar>` override (`showMainToggle` / `mainTogglePosition`)\n * in tree order, plus the count of overrides seen and a hint about\n * wrapper-nesting.\n *\n * Scope is deliberately ONLY direct children — deeper levels aren't\n * inspected (predictable behaviour; matches the documented compound\n * pattern of <SideNavbar><SideNavbar.Navbar/><SideNavbar.Sidebar/>...).\n *\n * The wrapper-nesting hint is a SHALLOW one-level peek: if a direct\n * child is NOT a Navbar but is an element with children that include\n * a Navbar carrying an override, we surface the fact so the caller\n * can warn the dev (Treatment 2 directive: silent failure is the\n * same defect class as the DataGrid dead button).\n *\n * Synchronous and pure — no effects, no state, no context. Correct on\n * the first render (including SSR), no hydration mismatch.\n */\nfunction resolveNavbarOverride(children: ReactNode): {\n show?: boolean;\n position?: SideNavbarTogglePosition;\n overrideCount: number;\n wrappedNavbarWithOverride: boolean;\n} {\n let firstShow: boolean | undefined = undefined;\n let firstPosition: SideNavbarTogglePosition | undefined = undefined;\n let count = 0;\n let wrappedHit = false;\n\n for (const child of Children.toArray(children)) {\n if (isNavbarElement(child)) {\n const { showMainToggle, mainTogglePosition } = child.props;\n const hasOverride =\n showMainToggle !== undefined || mainTogglePosition !== undefined;\n if (!hasOverride) continue;\n count++;\n if (count === 1) {\n firstShow = showMainToggle;\n firstPosition = mainTogglePosition;\n }\n continue;\n }\n // Wrapper-nesting peek: only one level deep, only if the direct\n // child is itself an element with children. Cheap and bounded.\n if (!isValidElement(child)) continue;\n const props = child.props as { children?: ReactNode };\n if (props.children === undefined) continue;\n for (const grandchild of Children.toArray(props.children)) {\n if (!isNavbarElement(grandchild)) continue;\n const { showMainToggle, mainTogglePosition } = grandchild.props;\n if (showMainToggle !== undefined || mainTogglePosition !== undefined) {\n wrappedHit = true;\n break;\n }\n }\n }\n\n return {\n show: firstShow,\n position: firstPosition,\n overrideCount: count,\n wrappedNavbarWithOverride: wrappedHit,\n };\n}\n\nconst variantClasses = {\n default: \"\",\n compact: \"text-sm\",\n elevated: getShadowClass(\"lg\"),\n minimal: \"border-0\",\n bordered: \"border-2\",\n};\n\n/**\n * SideNavbar Root Component\n *\n * The inner container component that renders the sidebar structure.\n * Uses all three contexts (Theme, Config, State) for rendering.\n *\n * This component is typically used internally by SideNavbar,\n * but can be used directly with individual providers for advanced customization.\n *\n * @example\n * ```tsx\n * // Usually wrapped by SideNavbar\n * <SideNavbar>\n * <SideNavbar.Navbar>...</SideNavbar.Navbar>\n * <SideNavbar.Sidebar>\n * <SideNavbar.Sidebar.Content>...</SideNavbar.Sidebar.Content>\n * </SideNavbar.Sidebar>\n * </SideNavbar>\n *\n * // Or with individual providers\n * <SideNavbar.ThemeProvider variant=\"elevated\">\n * <SideNavbar.ConfigProvider mode=\"full\" resizable>\n * <SideNavbar.StateProvider>\n * <SideNavbarRoot>...</SideNavbarRoot>\n * </SideNavbar.StateProvider>\n * </SideNavbar.ConfigProvider>\n * </SideNavbar.ThemeProvider>\n * ```\n */\nexport default function SideNavbarRoot({\n children,\n className = \"\",\n style,\n \"aria-label\": ariaLabel,\n ...props\n}: SideNavbarRootProps) {\n // Get context values\n const state = useSideNavbarStateRequired();\n const theme = useSideNavbarThemeRequired();\n const config = useSideNavbarConfigRequired();\n const toggleContext = useSideNavbarToggleContextRequired();\n\n // Resolve per-Navbar main-toggle override synchronously from the\n // children of this Root render. Render-driven (no effect, no state,\n // no context roundtrip) so it's correct on the first commit and on\n // SSR — see resolveNavbarOverride header for the design rationale.\n const navbarOverride = resolveNavbarOverride(children);\n\n // Dev warnings, both synchronous in render so they fire identically\n // on SSR and client. Two distinct cases:\n // - Multi-Navbar with overrides: tree-order-first wins; the rest are\n // silently dropped. Warn so the dev sees the conflict instead of\n // having to debug why only the first override applies.\n // - Wrapper-nested Navbar: only DIRECT children are inspected. If a\n // wrapper hides a Navbar that carries an override, it falls back\n // to the global toggle context with no visible signal — same\n // silent-failure class the DataGrid dead button had. Warn.\n if (import.meta.env.DEV) {\n if (navbarOverride.overrideCount > 1) {\n console.error(\n \"SideNavbar: multiple <SideNavbar.Navbar> children set \" +\n \"main-toggle overrides (showMainToggle / mainTogglePosition). \" +\n \"Only the first in tree order applies; the rest are ignored. \" +\n \"Override is a single-Navbar feature — pass these props on at \" +\n \"most one <SideNavbar.Navbar>.\",\n );\n }\n if (navbarOverride.wrappedNavbarWithOverride) {\n console.error(\n \"SideNavbar: a <SideNavbar.Navbar> with a main-toggle override \" +\n \"appears nested inside a wrapper element. Overrides are only \" +\n \"read from DIRECT <SideNavbar.Navbar> children — move the \" +\n \"props up to the Navbar at the SideNavbar root, or remove the \" +\n \"wrapper.\",\n );\n }\n }\n\n // First override (if any) wins; otherwise fall back to the global\n // toggle context (the existing pre-override behaviour).\n const resolvedShowMainToggle =\n navbarOverride.show ?? toggleContext.showMainToggle;\n const resolvedMainTogglePosition =\n navbarOverride.position ?? toggleContext.mainTogglePosition;\n\n const {\n collapsed,\n setCollapsed: _setCollapsed,\n currentWidth,\n isResizing,\n sidebarRef,\n isMobile,\n } = state;\n\n const {\n variant,\n navigationWidth,\n contentWidth,\n animationDuration,\n animationEasing,\n } = theme;\n\n const { mode, resizable, mobileVariant, overlayBackdrop } = config;\n\n // Parse widths\n const navWidthValue =\n typeof navigationWidth === \"number\"\n ? `${navigationWidth}px`\n : navigationWidth;\n\n const contentWidthValue =\n typeof contentWidth === \"number\" ? `${contentWidth}px` : contentWidth;\n\n // Calculate displayed width based on mode\n const calculateWidth = () => {\n if (mode === \"navigation\") {\n // Navigation-only mode: always show just navigation\n return navWidthValue;\n }\n\n if (collapsed) {\n return navWidthValue;\n }\n\n // Use resize width if resizable, otherwise configured width\n return resizable ? `${currentWidth}px` : contentWidthValue;\n };\n\n const displayedWidth = calculateWidth();\n\n // Mobile overlay mode\n // Usar estado para evitar hydration mismatch - só renderizar backdrop após mount\n const [isMounted, setIsMounted] = useState(false);\n\n useEffect(() => {\n setIsMounted(true);\n }, []);\n\n const isMobileOverlay = isMobile && mobileVariant === \"overlay\";\n\n // Durante SSR e antes do mount, sempre usar 'relative' para evitar hydration mismatch\n // Após mount, usar a classe correta baseada em isMobileOverlay\n // IMPORTANTE: Em desktop, sempre usar 'relative' para ficar no mesmo plano do conteúdo\n // Apenas em mobile overlay usar 'fixed' para sobrepor o conteúdo\n const shouldUseFixed = isMounted && isMobileOverlay;\n const positionClass = shouldUseFixed\n ? `fixed left-0 top-0 ${getZIndexClass(\"fixed\")}`\n : \"relative\";\n\n return (\n <>\n {/* Mobile overlay backdrop - só renderizar após mount para evitar hydration mismatch */}\n {isMounted && isMobileOverlay && overlayBackdrop && !collapsed && (\n <SideNavbarBackdrop />\n )}\n\n <aside\n ref={sidebarRef as React.RefObject<HTMLElement>}\n // SideNavbarToggle's `aria-controls=\"side-navbar-sidebar\"` must\n // resolve to an element that is ALWAYS in the DOM whenever the\n // toggle is rendered — independent of whether the consumer\n // composes in `<SideNavbar.Sidebar>` (the collapsible content\n // area) or only `<SideNavbar.Navbar>` (the icon strip, the\n // pattern DashboardLayout uses). The outer `<aside>` is that\n // anchor: it always renders, and structurally the toggle DOES\n // control this region's collapsed state. Previously the id\n // lived on Sidebar.tsx's inner `<div>`, which is conditional —\n // when Sidebar wasn't composed, the toggle's aria-controls was\n // a dangling reference (axe `aria-valid-attr-value`, critical).\n id=\"side-navbar-sidebar\"\n className={cn(\n positionClass,\n \"flex\",\n \"h-full\",\n \"overflow-visible\",\n variantClasses[variant],\n shouldUseFixed && collapsed ? \"-translate-x-full\" : \"translate-x-0\",\n className,\n )}\n style={\n {\n // Em desktop: sempre 'relative' para ficar no mesmo plano do conteúdo\n // Em mobile overlay: 'fixed' para sobrepor o conteúdo\n position: shouldUseFixed ? \"fixed\" : \"relative\",\n backgroundColor: \"var(--color-surface-subtle)\",\n borderRight: \"1px solid var(--color-line-default)\",\n width: displayedWidth,\n minWidth: displayedWidth,\n transitionProperty: isResizing\n ? \"none\"\n : \"width, min-width, transform\",\n transitionDuration: `${animationDuration}ms`,\n transitionTimingFunction: animationEasing,\n ...style,\n } as React.CSSProperties\n }\n role=\"complementary\"\n aria-label={ariaLabel || \"Sidebar navigation\"}\n aria-expanded={mode !== \"navigation\" ? !collapsed : undefined}\n data-mode={mode}\n data-collapsed={collapsed}\n {...props}\n >\n {/* Resize handle */}\n {resizable && mode !== \"navigation\" && !collapsed && (\n <SideNavbarResizeHandle />\n )}\n\n {/* Main toggle button at right edge of sidebar — show/position\n resolved synchronously from children-inspected override OR\n (when no override) the global toggle context. Always\n rendered here at the <aside> level; per-Navbar override\n does NOT relocate the DOM. */}\n {resolvedShowMainToggle && mode !== \"navigation\" && (\n <SideNavbarToggle position={resolvedMainTogglePosition} />\n )}\n\n {/* Content wrapper */}\n <div className=\"flex h-full w-full overflow-visible\">{children}</div>\n </aside>\n </>\n );\n}\n"],"names":["isNavbarElement","child","isValidElement","resolveNavbarOverride","children","firstShow","firstPosition","count","wrappedHit","Children","showMainToggle","mainTogglePosition","props","grandchild","variantClasses","getShadowClass","SideNavbarRoot","_a","_b","className","style","ariaLabel","__objRest","state","useSideNavbarStateRequired","theme","useSideNavbarThemeRequired","config","useSideNavbarConfigRequired","toggleContext","useSideNavbarToggleContextRequired","navbarOverride","resolvedShowMainToggle","resolvedMainTogglePosition","collapsed","_setCollapsed","currentWidth","isResizing","sidebarRef","isMobile","variant","navigationWidth","contentWidth","animationDuration","animationEasing","mode","resizable","mobileVariant","overlayBackdrop","navWidthValue","contentWidthValue","displayedWidth","isMounted","setIsMounted","useState","useEffect","isMobileOverlay","shouldUseFixed","positionClass","getZIndexClass","jsxs","Fragment","SideNavbarBackdrop","__spreadProps","__spreadValues","cn","SideNavbarResizeHandle","jsx","SideNavbarToggle"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA,SAASA,EACPC,GAGA;AAEA,SADI,CAACC,EAAeD,CAAK,KACrB,OAAOA,EAAM,QAAS,WAAiB,KAExCA,EAAM,KAA0C,wBACjD;AAEJ;AAqBA,SAASE,GAAsBC,GAK7B;AACA,MAAIC,GACAC,GACAC,IAAQ,GACRC,IAAa;AAEjB,aAAWP,KAASQ,EAAS,QAAQL,CAAQ,GAAG;AAC9C,QAAIJ,EAAgBC,CAAK,GAAG;AAC1B,YAAM,EAAE,gBAAAS,GAAgB,oBAAAC,EAAA,IAAuBV,EAAM;AAGrD,UAAI,EADFS,MAAmB,UAAaC,MAAuB,QACvC;AAClB,MAAAJ,KACIA,MAAU,MACZF,IAAYK,GACZJ,IAAgBK;AAElB;AAAA,IACF;AAGA,QAAI,CAACT,EAAeD,CAAK,EAAG;AAC5B,UAAMW,IAAQX,EAAM;AACpB,QAAIW,EAAM,aAAa;AACvB,iBAAWC,KAAcJ,EAAS,QAAQG,EAAM,QAAQ,GAAG;AACzD,YAAI,CAACZ,EAAgBa,CAAU,EAAG;AAClC,cAAM,EAAE,gBAAAH,GAAgB,oBAAAC,EAAA,IAAuBE,EAAW;AAC1D,YAAIH,MAAmB,UAAaC,MAAuB,QAAW;AACpE,UAAAH,IAAa;AACb;AAAA,QACF;AAAA,MACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAMH;AAAA,IACN,UAAUC;AAAA,IACV,eAAeC;AAAA,IACf,2BAA2BC;AAAA,EAAA;AAE/B;AAEA,MAAMM,KAAiB;AAAA,EACrB,SAAS;AAAA,EACT,SAAS;AAAA,EACT,UAAUC,GAAe,IAAI;AAAA,EAC7B,SAAS;AAAA,EACT,UAAU;AACZ;AA+BA,SAAwBC,GAAeC,GAMf;AANe,MAAAC,IAAAD,GACrC;AAAA,cAAAb;AAAA,IACA,WAAAe,IAAY;AAAA,IACZ,OAAAC;AAAA,IACA,cAAcC;AAAA,MAJuBH,GAKlCN,IAAAU,EALkCJ,GAKlC;AAAA,IAJH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;;AAIA,QAAMK,IAAQC,GAAA,GACRC,IAAQC,GAAA,GACRC,IAASC,GAAA,GACTC,IAAgBC,GAAA,GAMhBC,IAAiB5B,GAAsBC,CAAQ,GAkC/C4B,KACJf,IAAAc,EAAe,SAAf,OAAAd,IAAuBY,EAAc,gBACjCI,KACJf,IAAAa,EAAe,aAAf,OAAAb,IAA2BW,EAAc,oBAErC;AAAA,IACJ,WAAAK;AAAA,IACA,cAAcC;AAAA,IACd,cAAAC;AAAA,IACA,YAAAC;AAAA,IACA,YAAAC;AAAA,IACA,UAAAC;AAAA,EAAA,IACEhB,GAEE;AAAA,IACJ,SAAAiB;AAAA,IACA,iBAAAC;AAAA,IACA,cAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,iBAAAC;AAAA,EAAA,IACEnB,GAEE,EAAE,MAAAoB,GAAM,WAAAC,GAAW,eAAAC,GAAe,iBAAAC,MAAoBrB,GAGtDsB,IACJ,OAAOR,KAAoB,WACvB,GAAGA,CAAe,OAClBA,GAEAS,IACJ,OAAOR,KAAiB,WAAW,GAAGA,CAAY,OAAOA,GAiBrDS,IAbAN,MAAS,gBAKTX,IACKe,IAIFH,IAAY,GAAGV,CAAY,OAAOc,GAOrC,CAACE,GAAWC,CAAY,IAAIC,GAAS,EAAK;AAEhD,EAAAC,GAAU,MAAM;AACd,IAAAF,EAAa,EAAI;AAAA,EACnB,GAAG,CAAA,CAAE;AAEL,QAAMG,IAAkBjB,KAAYQ,MAAkB,WAMhDU,IAAiBL,KAAaI,GAC9BE,IAAgBD,IAClB,sBAAsBE,GAAe,OAAO,CAAC,KAC7C;AAEJ,SACE,gBAAAC,EAAAC,GAAA,EAEG,UAAA;AAAA,IAAAT,KAAaI,KAAmBR,KAAmB,CAACd,uBAClD4B,IAAA,EAAmB;AAAA,IAGtB,gBAAAF;AAAA,MAAC;AAAA,MAAAG,EAAAC,EAAA;AAAA,QACC,KAAK1B;AAAA,QAYL,IAAG;AAAA,QACH,WAAW2B;AAAA,UACTP;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA5C,GAAe0B,CAAO;AAAA,UACtBiB,KAAkBvB,IAAY,sBAAsB;AAAA,UACpDf;AAAA,QAAA;AAAA,QAEF,OACE6C,EAAA;AAAA;AAAA;AAAA,UAGE,UAAUP,IAAiB,UAAU;AAAA,UACrC,iBAAiB;AAAA,UACjB,aAAa;AAAA,UACb,OAAON;AAAA,UACP,UAAUA;AAAA,UACV,oBAAoBd,IAChB,SACA;AAAA,UACJ,oBAAoB,GAAGM,CAAiB;AAAA,UACxC,0BAA0BC;AAAA,WACvBxB;AAAA,QAGP,MAAK;AAAA,QACL,cAAYC,KAAa;AAAA,QACzB,iBAAewB,MAAS,eAAe,CAACX,IAAY;AAAA,QACpD,aAAWW;AAAA,QACX,kBAAgBX;AAAA,SACZtB,IA7CL;AAAA,QAgDE,UAAA;AAAA,UAAAkC,KAAaD,MAAS,gBAAgB,CAACX,uBACrCgC,IAAA,EAAuB;AAAA,UAQzBlC,KAA0Ba,MAAS,gBAClC,gBAAAsB,EAACC,IAAA,EAAiB,UAAUnC,GAA4B;AAAA,4BAIzD,OAAA,EAAI,WAAU,uCAAuC,UAAA7B,GAAS;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EACjE,GACF;AAEJ;"}