@fabio.caffarello/react-design-system 3.7.0 → 3.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (419) hide show
  1. package/README.md +4 -2
  2. package/dist/granular/index.js +445 -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/Form/Form.js +184 -0
  81. package/dist/granular/ui/components/Form/Form.js.map +1 -0
  82. package/dist/granular/ui/components/Form/FormContext.js +19 -0
  83. package/dist/granular/ui/components/Form/FormContext.js.map +1 -0
  84. package/dist/granular/ui/components/Form/FormField.js +66 -0
  85. package/dist/granular/ui/components/Form/FormField.js.map +1 -0
  86. package/dist/granular/ui/components/Form/FormProvider.js +17 -0
  87. package/dist/granular/ui/components/Form/FormProvider.js.map +1 -0
  88. package/dist/granular/ui/components/Form/useFormFieldArray.js +29 -0
  89. package/dist/granular/ui/components/Form/useFormFieldArray.js.map +1 -0
  90. package/dist/granular/ui/components/FormWizardPattern/FormWizardPattern.js +121 -0
  91. package/dist/granular/ui/components/FormWizardPattern/FormWizardPattern.js.map +1 -0
  92. package/dist/granular/ui/components/Header/Header.js +98 -0
  93. package/dist/granular/ui/components/Header/Header.js.map +1 -0
  94. package/dist/granular/ui/components/Header/components/HeaderActions.js +21 -0
  95. package/dist/granular/ui/components/Header/components/HeaderActions.js.map +1 -0
  96. package/dist/granular/ui/components/Header/components/HeaderHamburger.js +31 -0
  97. package/dist/granular/ui/components/Header/components/HeaderHamburger.js.map +1 -0
  98. package/dist/granular/ui/components/Header/components/HeaderLogo.js +50 -0
  99. package/dist/granular/ui/components/Header/components/HeaderLogo.js.map +1 -0
  100. package/dist/granular/ui/components/Header/components/HeaderMobileMenu.js +38 -0
  101. package/dist/granular/ui/components/Header/components/HeaderMobileMenu.js.map +1 -0
  102. package/dist/granular/ui/components/Header/components/HeaderNavigation.js +27 -0
  103. package/dist/granular/ui/components/Header/components/HeaderNavigation.js.map +1 -0
  104. package/dist/granular/ui/components/Header/contexts/HeaderContext.js +49 -0
  105. package/dist/granular/ui/components/Header/contexts/HeaderContext.js.map +1 -0
  106. package/dist/granular/ui/components/LoginBox/LoginBox.js +84 -0
  107. package/dist/granular/ui/components/LoginBox/LoginBox.js.map +1 -0
  108. package/dist/granular/ui/components/Menu/Menu.js +45 -0
  109. package/dist/granular/ui/components/Menu/Menu.js.map +1 -0
  110. package/dist/granular/ui/components/Menu/MenuContent.js +94 -0
  111. package/dist/granular/ui/components/Menu/MenuContent.js.map +1 -0
  112. package/dist/granular/ui/components/Menu/MenuContext.js +21 -0
  113. package/dist/granular/ui/components/Menu/MenuContext.js.map +1 -0
  114. package/dist/granular/ui/components/Menu/MenuItem.js +93 -0
  115. package/dist/granular/ui/components/Menu/MenuItem.js.map +1 -0
  116. package/dist/granular/ui/components/Menu/MenuSeparator.js +46 -0
  117. package/dist/granular/ui/components/Menu/MenuSeparator.js.map +1 -0
  118. package/dist/granular/ui/components/Menu/MenuTrigger.js +71 -0
  119. package/dist/granular/ui/components/Menu/MenuTrigger.js.map +1 -0
  120. package/dist/granular/ui/components/Modal/Modal.js +171 -0
  121. package/dist/granular/ui/components/Modal/Modal.js.map +1 -0
  122. package/dist/granular/ui/components/MultiSelect/MultiSelect.js +193 -0
  123. package/dist/granular/ui/components/MultiSelect/MultiSelect.js.map +1 -0
  124. package/dist/granular/ui/components/Navigation/Navigation.js +141 -0
  125. package/dist/granular/ui/components/Navigation/Navigation.js.map +1 -0
  126. package/dist/granular/ui/components/PageHeader/PageHeader.js +95 -0
  127. package/dist/granular/ui/components/PageHeader/PageHeader.js.map +1 -0
  128. package/dist/granular/ui/components/Pagination/Pagination.js +156 -0
  129. package/dist/granular/ui/components/Pagination/Pagination.js.map +1 -0
  130. package/dist/granular/ui/components/Popover/Popover.js +171 -0
  131. package/dist/granular/ui/components/Popover/Popover.js.map +1 -0
  132. package/dist/granular/ui/components/Rating/Rating.js +110 -0
  133. package/dist/granular/ui/components/Rating/Rating.js.map +1 -0
  134. package/dist/granular/ui/components/SearchAndFilterPattern/SearchAndFilterPattern.js +120 -0
  135. package/dist/granular/ui/components/SearchAndFilterPattern/SearchAndFilterPattern.js.map +1 -0
  136. package/dist/granular/ui/components/SearchInput/SearchInput.js +103 -0
  137. package/dist/granular/ui/components/SearchInput/SearchInput.js.map +1 -0
  138. package/dist/granular/ui/components/SideNavbar/SideNavbar.js +143 -0
  139. package/dist/granular/ui/components/SideNavbar/SideNavbar.js.map +1 -0
  140. package/dist/granular/ui/components/SideNavbar/components/Navbar/Navbar.js +173 -0
  141. package/dist/granular/ui/components/SideNavbar/components/Navbar/Navbar.js.map +1 -0
  142. package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarGroup.js +87 -0
  143. package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarGroup.js.map +1 -0
  144. package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarItem.js +242 -0
  145. package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarItem.js.map +1 -0
  146. package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarSeparator.js +66 -0
  147. package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarSeparator.js.map +1 -0
  148. package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarToggle.js +108 -0
  149. package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarToggle.js.map +1 -0
  150. package/dist/granular/ui/components/SideNavbar/components/SideNavbarBackdrop.js +63 -0
  151. package/dist/granular/ui/components/SideNavbar/components/SideNavbarBackdrop.js.map +1 -0
  152. package/dist/granular/ui/components/SideNavbar/components/SideNavbarResizeHandle.js +113 -0
  153. package/dist/granular/ui/components/SideNavbar/components/SideNavbarResizeHandle.js.map +1 -0
  154. package/dist/granular/ui/components/SideNavbar/components/SideNavbarRoot.js +150 -0
  155. package/dist/granular/ui/components/SideNavbar/components/SideNavbarRoot.js.map +1 -0
  156. package/dist/granular/ui/components/SideNavbar/components/SideNavbarToggle.js +197 -0
  157. package/dist/granular/ui/components/SideNavbar/components/SideNavbarToggle.js.map +1 -0
  158. package/dist/granular/ui/components/SideNavbar/components/Sidebar/Sidebar.js +108 -0
  159. package/dist/granular/ui/components/SideNavbar/components/Sidebar/Sidebar.js.map +1 -0
  160. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarContent.js +71 -0
  161. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarContent.js.map +1 -0
  162. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarFooter.js +64 -0
  163. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarFooter.js.map +1 -0
  164. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarGroup.js +141 -0
  165. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarGroup.js.map +1 -0
  166. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarHeader.js +90 -0
  167. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarHeader.js.map +1 -0
  168. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarSlot.js +12 -0
  169. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarSlot.js.map +1 -0
  170. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarSlotContent.js +13 -0
  171. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarSlotContent.js.map +1 -0
  172. package/dist/granular/ui/components/SideNavbar/contexts/NavbarContext.js +20 -0
  173. package/dist/granular/ui/components/SideNavbar/contexts/NavbarContext.js.map +1 -0
  174. package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarConfigContext.js +37 -0
  175. package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarConfigContext.js.map +1 -0
  176. package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarStateContext.js +20 -0
  177. package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarStateContext.js.map +1 -0
  178. package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarThemeContext.js +28 -0
  179. package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarThemeContext.js.map +1 -0
  180. package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarToggleContext.js +19 -0
  181. package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarToggleContext.js.map +1 -0
  182. package/dist/granular/ui/components/SideNavbar/contexts/SidebarContext.js +20 -0
  183. package/dist/granular/ui/components/SideNavbar/contexts/SidebarContext.js.map +1 -0
  184. package/dist/granular/ui/components/SideNavbar/contexts/SidebarSlotContext.js +22 -0
  185. package/dist/granular/ui/components/SideNavbar/contexts/SidebarSlotContext.js.map +1 -0
  186. package/dist/granular/ui/components/SideNavbar/hooks/useFocusManagement.js +43 -0
  187. package/dist/granular/ui/components/SideNavbar/hooks/useFocusManagement.js.map +1 -0
  188. package/dist/granular/ui/components/SideNavbar/hooks/useGroupState.js +59 -0
  189. package/dist/granular/ui/components/SideNavbar/hooks/useGroupState.js.map +1 -0
  190. package/dist/granular/ui/components/SideNavbar/hooks/useKeyboardShortcut.js +34 -0
  191. package/dist/granular/ui/components/SideNavbar/hooks/useKeyboardShortcut.js.map +1 -0
  192. package/dist/granular/ui/components/SideNavbar/hooks/useResize.js +58 -0
  193. package/dist/granular/ui/components/SideNavbar/hooks/useResize.js.map +1 -0
  194. package/dist/granular/ui/components/SideNavbar/hooks/useResponsiveSidebar.js +35 -0
  195. package/dist/granular/ui/components/SideNavbar/hooks/useResponsiveSidebar.js.map +1 -0
  196. package/dist/granular/ui/components/SideNavbar/hooks/useSideNavbar.js +21 -0
  197. package/dist/granular/ui/components/SideNavbar/hooks/useSideNavbar.js.map +1 -0
  198. package/dist/granular/ui/components/SideNavbar/hooks/useSideNavbarContent.js +19 -0
  199. package/dist/granular/ui/components/SideNavbar/hooks/useSideNavbarContent.js.map +1 -0
  200. package/dist/granular/ui/components/SideNavbar/hooks/useSideNavbarNavigation.js +21 -0
  201. package/dist/granular/ui/components/SideNavbar/hooks/useSideNavbarNavigation.js.map +1 -0
  202. package/dist/granular/ui/components/SideNavbar/providers/SideNavbarConfigProvider.js +61 -0
  203. package/dist/granular/ui/components/SideNavbar/providers/SideNavbarConfigProvider.js.map +1 -0
  204. package/dist/granular/ui/components/SideNavbar/providers/SideNavbarProvider.js +82 -0
  205. package/dist/granular/ui/components/SideNavbar/providers/SideNavbarProvider.js.map +1 -0
  206. package/dist/granular/ui/components/SideNavbar/providers/SideNavbarStateProvider.js +165 -0
  207. package/dist/granular/ui/components/SideNavbar/providers/SideNavbarStateProvider.js.map +1 -0
  208. package/dist/granular/ui/components/SideNavbar/providers/SideNavbarThemeProvider.js +34 -0
  209. package/dist/granular/ui/components/SideNavbar/providers/SideNavbarThemeProvider.js.map +1 -0
  210. package/dist/granular/ui/components/SideNavbar/providers/SidebarSlotProvider.js +28 -0
  211. package/dist/granular/ui/components/SideNavbar/providers/SidebarSlotProvider.js.map +1 -0
  212. package/dist/granular/ui/components/SideNavbar/utils/parseKeyboardShortcut.js +60 -0
  213. package/dist/granular/ui/components/SideNavbar/utils/parseKeyboardShortcut.js.map +1 -0
  214. package/dist/granular/ui/components/SideNavbar/utils/parseWidth.js +19 -0
  215. package/dist/granular/ui/components/SideNavbar/utils/parseWidth.js.map +1 -0
  216. package/dist/granular/ui/components/Stat/Stat.js +84 -0
  217. package/dist/granular/ui/components/Stat/Stat.js.map +1 -0
  218. package/dist/granular/ui/components/Stat/StatGroup.js +61 -0
  219. package/dist/granular/ui/components/Stat/StatGroup.js.map +1 -0
  220. package/dist/granular/ui/components/Stepper/Stepper.js +248 -0
  221. package/dist/granular/ui/components/Stepper/Stepper.js.map +1 -0
  222. package/dist/granular/ui/components/Table/Table.js +162 -0
  223. package/dist/granular/ui/components/Table/Table.js.map +1 -0
  224. package/dist/granular/ui/components/Table/TableActions/TableActions.js +67 -0
  225. package/dist/granular/ui/components/Table/TableActions/TableActions.js.map +1 -0
  226. package/dist/granular/ui/components/Table/TableActions.js +44 -0
  227. package/dist/granular/ui/components/Table/TableActions.js.map +1 -0
  228. package/dist/granular/ui/components/Table/TableBody.js +134 -0
  229. package/dist/granular/ui/components/Table/TableBody.js.map +1 -0
  230. package/dist/granular/ui/components/Table/TableCell.js +40 -0
  231. package/dist/granular/ui/components/Table/TableCell.js.map +1 -0
  232. package/dist/granular/ui/components/Table/TableContext.js +19 -0
  233. package/dist/granular/ui/components/Table/TableContext.js.map +1 -0
  234. package/dist/granular/ui/components/Table/TableEmptyState.js +62 -0
  235. package/dist/granular/ui/components/Table/TableEmptyState.js.map +1 -0
  236. package/dist/granular/ui/components/Table/TableFilters/TableFilters.js +189 -0
  237. package/dist/granular/ui/components/Table/TableFilters/TableFilters.js.map +1 -0
  238. package/dist/granular/ui/components/Table/TableFilters.js +48 -0
  239. package/dist/granular/ui/components/Table/TableFilters.js.map +1 -0
  240. package/dist/granular/ui/components/Table/TableHeader.js +45 -0
  241. package/dist/granular/ui/components/Table/TableHeader.js.map +1 -0
  242. package/dist/granular/ui/components/Table/TableHeaderCell.js +117 -0
  243. package/dist/granular/ui/components/Table/TableHeaderCell.js.map +1 -0
  244. package/dist/granular/ui/components/Table/TableHeaderRow.js +89 -0
  245. package/dist/granular/ui/components/Table/TableHeaderRow.js.map +1 -0
  246. package/dist/granular/ui/components/Table/TablePagination/TablePagination.js +216 -0
  247. package/dist/granular/ui/components/Table/TablePagination/TablePagination.js.map +1 -0
  248. package/dist/granular/ui/components/Table/TablePagination.js +56 -0
  249. package/dist/granular/ui/components/Table/TablePagination.js.map +1 -0
  250. package/dist/granular/ui/components/Table/TableProvider.js +244 -0
  251. package/dist/granular/ui/components/Table/TableProvider.js.map +1 -0
  252. package/dist/granular/ui/components/Table/TableRow.js +95 -0
  253. package/dist/granular/ui/components/Table/TableRow.js.map +1 -0
  254. package/dist/granular/ui/components/Table/useColumnResizing.js +71 -0
  255. package/dist/granular/ui/components/Table/useColumnResizing.js.map +1 -0
  256. package/dist/granular/ui/components/Table/useVirtualScrolling.js +50 -0
  257. package/dist/granular/ui/components/Table/useVirtualScrolling.js.map +1 -0
  258. package/dist/granular/ui/components/Tabs/Tabs.js +39 -0
  259. package/dist/granular/ui/components/Tabs/Tabs.js.map +1 -0
  260. package/dist/granular/ui/components/Tabs/TabsContent.js +59 -0
  261. package/dist/granular/ui/components/Tabs/TabsContent.js.map +1 -0
  262. package/dist/granular/ui/components/Tabs/TabsContext.js +18 -0
  263. package/dist/granular/ui/components/Tabs/TabsContext.js.map +1 -0
  264. package/dist/granular/ui/components/Tabs/TabsList.js +84 -0
  265. package/dist/granular/ui/components/Tabs/TabsList.js.map +1 -0
  266. package/dist/granular/ui/components/Tabs/TabsProvider.js +31 -0
  267. package/dist/granular/ui/components/Tabs/TabsProvider.js.map +1 -0
  268. package/dist/granular/ui/components/Tabs/TabsTrigger.js +103 -0
  269. package/dist/granular/ui/components/Tabs/TabsTrigger.js.map +1 -0
  270. package/dist/granular/ui/components/TimePicker/TimePicker.js +216 -0
  271. package/dist/granular/ui/components/TimePicker/TimePicker.js.map +1 -0
  272. package/dist/granular/ui/components/Timeline/Timeline.js +152 -0
  273. package/dist/granular/ui/components/Timeline/Timeline.js.map +1 -0
  274. package/dist/granular/ui/components/Toast/Toast.js +159 -0
  275. package/dist/granular/ui/components/Toast/Toast.js.map +1 -0
  276. package/dist/granular/ui/components/Toast/ToastContainer.js +41 -0
  277. package/dist/granular/ui/components/Toast/ToastContainer.js.map +1 -0
  278. package/dist/granular/ui/components/Toast/useToast.js +64 -0
  279. package/dist/granular/ui/components/Toast/useToast.js.map +1 -0
  280. package/dist/granular/ui/hooks/createGenericContext.js +27 -0
  281. package/dist/granular/ui/hooks/createGenericContext.js.map +1 -0
  282. package/dist/granular/ui/hooks/focusable.js +14 -0
  283. package/dist/granular/ui/hooks/focusable.js.map +1 -0
  284. package/dist/granular/ui/hooks/useAutoFocus.js +23 -0
  285. package/dist/granular/ui/hooks/useAutoFocus.js.map +1 -0
  286. package/dist/granular/ui/hooks/useCollapsible.js +37 -0
  287. package/dist/granular/ui/hooks/useCollapsible.js.map +1 -0
  288. package/dist/granular/ui/hooks/useFocusRestore.js +20 -0
  289. package/dist/granular/ui/hooks/useFocusRestore.js.map +1 -0
  290. package/dist/granular/ui/hooks/useFocusTrap.js +31 -0
  291. package/dist/granular/ui/hooks/useFocusTrap.js.map +1 -0
  292. package/dist/granular/ui/hooks/useScrollSpy.js +23 -0
  293. package/dist/granular/ui/hooks/useScrollSpy.js.map +1 -0
  294. package/dist/granular/ui/layouts/Container/Container.js +73 -0
  295. package/dist/granular/ui/layouts/Container/Container.js.map +1 -0
  296. package/dist/granular/ui/layouts/Stack/Stack.js +79 -0
  297. package/dist/granular/ui/layouts/Stack/Stack.js.map +1 -0
  298. package/dist/granular/ui/primitives/Avatar/Avatar.js +122 -0
  299. package/dist/granular/ui/primitives/Avatar/Avatar.js.map +1 -0
  300. package/dist/granular/ui/primitives/Avatar/AvatarGroup.js +97 -0
  301. package/dist/granular/ui/primitives/Avatar/AvatarGroup.js.map +1 -0
  302. package/dist/granular/ui/primitives/Badge/Badge.js +212 -0
  303. package/dist/granular/ui/primitives/Badge/Badge.js.map +1 -0
  304. package/dist/granular/ui/primitives/Button/Button.js +288 -0
  305. package/dist/granular/ui/primitives/Button/Button.js.map +1 -0
  306. package/dist/granular/ui/primitives/Checkbox/Checkbox.js +129 -0
  307. package/dist/granular/ui/primitives/Checkbox/Checkbox.js.map +1 -0
  308. package/dist/granular/ui/primitives/Chip/Chip.js +206 -0
  309. package/dist/granular/ui/primitives/Chip/Chip.js.map +1 -0
  310. package/dist/granular/ui/primitives/Collapsible/Collapsible.js +115 -0
  311. package/dist/granular/ui/primitives/Collapsible/Collapsible.js.map +1 -0
  312. package/dist/granular/ui/primitives/ErrorMessage/ErrorMessage.js +54 -0
  313. package/dist/granular/ui/primitives/ErrorMessage/ErrorMessage.js.map +1 -0
  314. package/dist/granular/ui/primitives/Info/Info.js +57 -0
  315. package/dist/granular/ui/primitives/Info/Info.js.map +1 -0
  316. package/dist/granular/ui/primitives/Input/Input.js +351 -0
  317. package/dist/granular/ui/primitives/Input/Input.js.map +1 -0
  318. package/dist/granular/ui/primitives/Label/Label.js +61 -0
  319. package/dist/granular/ui/primitives/Label/Label.js.map +1 -0
  320. package/dist/granular/ui/primitives/NavLink/NavLink.js +229 -0
  321. package/dist/granular/ui/primitives/NavLink/NavLink.js.map +1 -0
  322. package/dist/granular/ui/primitives/NavLink/hooks/useNavLink.js +15 -0
  323. package/dist/granular/ui/primitives/NavLink/hooks/useNavLink.js.map +1 -0
  324. package/dist/granular/ui/primitives/Progress/Progress.js +182 -0
  325. package/dist/granular/ui/primitives/Progress/Progress.js.map +1 -0
  326. package/dist/granular/ui/primitives/Radio/Radio.js +118 -0
  327. package/dist/granular/ui/primitives/Radio/Radio.js.map +1 -0
  328. package/dist/granular/ui/primitives/Select/Select.js +210 -0
  329. package/dist/granular/ui/primitives/Select/Select.js.map +1 -0
  330. package/dist/granular/ui/primitives/Separator/Separator.js +69 -0
  331. package/dist/granular/ui/primitives/Separator/Separator.js.map +1 -0
  332. package/dist/granular/ui/primitives/Skeleton/Skeleton.js +87 -0
  333. package/dist/granular/ui/primitives/Skeleton/Skeleton.js.map +1 -0
  334. package/dist/granular/ui/primitives/Slider/Slider.js +291 -0
  335. package/dist/granular/ui/primitives/Slider/Slider.js.map +1 -0
  336. package/dist/granular/ui/primitives/Spinner/Spinner.js +95 -0
  337. package/dist/granular/ui/primitives/Spinner/Spinner.js.map +1 -0
  338. package/dist/granular/ui/primitives/Switch/Switch.js +212 -0
  339. package/dist/granular/ui/primitives/Switch/Switch.js.map +1 -0
  340. package/dist/granular/ui/primitives/Text/Text.js +118 -0
  341. package/dist/granular/ui/primitives/Text/Text.js.map +1 -0
  342. package/dist/granular/ui/primitives/Textarea/Textarea.js +129 -0
  343. package/dist/granular/ui/primitives/Textarea/Textarea.js.map +1 -0
  344. package/dist/granular/ui/primitives/Tooltip/Tooltip.js +227 -0
  345. package/dist/granular/ui/primitives/Tooltip/Tooltip.js.map +1 -0
  346. package/dist/granular/ui/providers/AppProvider.js +50 -0
  347. package/dist/granular/ui/providers/AppProvider.js.map +1 -0
  348. package/dist/granular/ui/providers/ConfigProvider.js +95 -0
  349. package/dist/granular/ui/providers/ConfigProvider.js.map +1 -0
  350. package/dist/granular/ui/providers/DialogContext.js +20 -0
  351. package/dist/granular/ui/providers/DialogContext.js.map +1 -0
  352. package/dist/granular/ui/providers/DialogProvider.js +32 -0
  353. package/dist/granular/ui/providers/DialogProvider.js.map +1 -0
  354. package/dist/granular/ui/providers/ThemeProvider.js +56 -0
  355. package/dist/granular/ui/providers/ThemeProvider.js.map +1 -0
  356. package/dist/granular/ui/providers/ToastContext.js +20 -0
  357. package/dist/granular/ui/providers/ToastContext.js.map +1 -0
  358. package/dist/granular/ui/providers/ToastProvider.js +47 -0
  359. package/dist/granular/ui/providers/ToastProvider.js.map +1 -0
  360. package/dist/granular/ui/providers/providers-bundle.js +23 -0
  361. package/dist/granular/ui/providers/providers-bundle.js.map +1 -0
  362. package/dist/granular/ui/tokens/animations.js +106 -0
  363. package/dist/granular/ui/tokens/animations.js.map +1 -0
  364. package/dist/granular/ui/tokens/borders.js +54 -0
  365. package/dist/granular/ui/tokens/borders.js.map +1 -0
  366. package/dist/granular/ui/tokens/breakpoints.js +43 -0
  367. package/dist/granular/ui/tokens/breakpoints.js.map +1 -0
  368. package/dist/granular/ui/tokens/colors/brand.js +67 -0
  369. package/dist/granular/ui/tokens/colors/brand.js.map +1 -0
  370. package/dist/granular/ui/tokens/colors/index.js +25 -0
  371. package/dist/granular/ui/tokens/colors/index.js.map +1 -0
  372. package/dist/granular/ui/tokens/colors/primitives.js +320 -0
  373. package/dist/granular/ui/tokens/colors/primitives.js.map +1 -0
  374. package/dist/granular/ui/tokens/colors/semantic.js +212 -0
  375. package/dist/granular/ui/tokens/colors/semantic.js.map +1 -0
  376. package/dist/granular/ui/tokens/colors/types.js +18 -0
  377. package/dist/granular/ui/tokens/colors/types.js.map +1 -0
  378. package/dist/granular/ui/tokens/colors/utils.js +131 -0
  379. package/dist/granular/ui/tokens/colors/utils.js.map +1 -0
  380. package/dist/granular/ui/tokens/opacity.js +59 -0
  381. package/dist/granular/ui/tokens/opacity.js.map +1 -0
  382. package/dist/granular/ui/tokens/radius.js +76 -0
  383. package/dist/granular/ui/tokens/radius.js.map +1 -0
  384. package/dist/granular/ui/tokens/shadows.js +63 -0
  385. package/dist/granular/ui/tokens/shadows.js.map +1 -0
  386. package/dist/granular/ui/tokens/sidebar.js +92 -0
  387. package/dist/granular/ui/tokens/sidebar.js.map +1 -0
  388. package/dist/granular/ui/tokens/spacing.js +143 -0
  389. package/dist/granular/ui/tokens/spacing.js.map +1 -0
  390. package/dist/granular/ui/tokens/switch.js +51 -0
  391. package/dist/granular/ui/tokens/switch.js.map +1 -0
  392. package/dist/granular/ui/tokens/typography.js +146 -0
  393. package/dist/granular/ui/tokens/typography.js.map +1 -0
  394. package/dist/granular/ui/tokens/z-index.js +79 -0
  395. package/dist/granular/ui/tokens/z-index.js.map +1 -0
  396. package/dist/granular/ui/utils/cn.js +10 -0
  397. package/dist/granular/ui/utils/cn.js.map +1 -0
  398. package/dist/granular/ui/utils/cva.js +14 -0
  399. package/dist/granular/ui/utils/cva.js.map +1 -0
  400. package/dist/granular/ui/utils/mergeRefs.js +11 -0
  401. package/dist/granular/ui/utils/mergeRefs.js.map +1 -0
  402. package/dist/granular/vite.svg +1 -0
  403. package/dist/hooks/index.cjs +2 -0
  404. package/dist/hooks/index.cjs.map +1 -0
  405. package/dist/hooks/index.js +23 -0
  406. package/dist/hooks/index.js.map +1 -0
  407. package/dist/index.cjs +44 -70
  408. package/dist/index.cjs.map +1 -1
  409. package/dist/index.js +1900 -1885
  410. package/dist/index.js.map +1 -1
  411. package/dist/react-design-system.css +1 -1
  412. package/dist/server/index.cjs +23 -23
  413. package/dist/server/index.cjs.map +1 -1
  414. package/dist/server/index.js +863 -1180
  415. package/dist/server/index.js.map +1 -1
  416. package/dist/ui/components/Accordion/Accordion.d.ts +9 -1
  417. package/dist/ui/hooks-entry.d.ts +2 -0
  418. package/dist/ui/utils/tailwind-safelist.d.ts +3 -1
  419. package/package.json +24 -13
@@ -0,0 +1,129 @@
1
+ "use client";
2
+ var B = Object.defineProperty;
3
+ var d = Object.getOwnPropertySymbols;
4
+ var N = Object.prototype.hasOwnProperty, w = Object.prototype.propertyIsEnumerable;
5
+ var I = (c, e, s) => e in c ? B(c, e, { enumerable: !0, configurable: !0, writable: !0, value: s }) : c[e] = s, F = (c, e) => {
6
+ for (var s in e || (e = {}))
7
+ N.call(e, s) && I(c, s, e[s]);
8
+ if (d)
9
+ for (var s of d(e))
10
+ w.call(e, s) && I(c, s, e[s]);
11
+ return c;
12
+ };
13
+ var $ = (c, e) => {
14
+ var s = {};
15
+ for (var o in c)
16
+ N.call(c, o) && e.indexOf(o) < 0 && (s[o] = c[o]);
17
+ if (c != null && d)
18
+ for (var o of d(c))
19
+ e.indexOf(o) < 0 && w.call(c, o) && (s[o] = c[o]);
20
+ return s;
21
+ };
22
+ import { jsxs as j, jsx as p } from "react/jsx-runtime";
23
+ import { memo as D, forwardRef as G, useId as H, useMemo as r, useRef as J, useCallback as K, useEffect as L } from "react";
24
+ import { getTypographyClasses as E } from "../../tokens/typography.js";
25
+ import { getRadiusClass as O } from "../../tokens/radius.js";
26
+ import { getSpacingClass as g } from "../../tokens/spacing.js";
27
+ import { cn as u } from "../../utils/cn.js";
28
+ const P = D(
29
+ G(function(Q, n) {
30
+ var x = Q, {
31
+ id: e,
32
+ label: s,
33
+ error: o = !1,
34
+ success: a = !1,
35
+ helperText: t,
36
+ className: h = "",
37
+ disabled: m = !1,
38
+ indeterminate: f = !1
39
+ } = x, M = $(x, [
40
+ "id",
41
+ "label",
42
+ "error",
43
+ "success",
44
+ "helperText",
45
+ "className",
46
+ "disabled",
47
+ "indeterminate"
48
+ ]);
49
+ const S = H(), i = e || `checkbox-${S}`, y = r(
50
+ () => o ? `${i}-error` : void 0,
51
+ [o, i]
52
+ ), C = r(
53
+ () => t ? `${i}-helper` : void 0,
54
+ [t, i]
55
+ ), k = r(() => "focus:border-line-focus", []), v = r(() => "focus:border-error", []), R = r(
56
+ () => o ? v.replace("focus:border-", "focus:ring-") : k.replace("focus:border-", "focus:ring-"),
57
+ [o, v, k]
58
+ ), q = r(
59
+ () => u(
60
+ "h-4",
61
+ "w-4",
62
+ O("sm"),
63
+ "border",
64
+ "border-line-default",
65
+ "text-fg-brand",
66
+ "focus:ring-2",
67
+ R,
68
+ "focus:ring-offset-2",
69
+ "disabled:opacity-50",
70
+ "disabled:cursor-not-allowed",
71
+ "cursor-pointer",
72
+ o && "border-error",
73
+ !o && a && "border-success",
74
+ h
75
+ ),
76
+ [R, o, a, h]
77
+ ), z = r(
78
+ () => u(
79
+ E("label"),
80
+ g("sm", "ml"),
81
+ m ? "opacity-50 cursor-not-allowed" : "cursor-pointer"
82
+ ),
83
+ [m]
84
+ ), b = J(null), A = K(
85
+ (l) => {
86
+ b.current = l, typeof n == "function" ? n(l) : n && (n.current = l), l && (l.indeterminate = f);
87
+ },
88
+ [n, f]
89
+ );
90
+ return L(() => {
91
+ b.current && (b.current.indeterminate = f);
92
+ }, [f]), /* @__PURE__ */ j("div", { className: u("flex", "flex-col", g("sm", "my")), children: [
93
+ /* @__PURE__ */ j("div", { className: "flex items-center", children: [
94
+ /* @__PURE__ */ p(
95
+ "input",
96
+ F({
97
+ type: "checkbox",
98
+ id: i,
99
+ ref: A,
100
+ className: q,
101
+ disabled: m,
102
+ "aria-invalid": o,
103
+ "aria-describedby": y || C || void 0,
104
+ "aria-label": s ? void 0 : "Checkbox"
105
+ }, M)
106
+ ),
107
+ s && /* @__PURE__ */ p("label", { htmlFor: i, className: z, children: s })
108
+ ] }),
109
+ (o || a || t) && /* @__PURE__ */ p(
110
+ "div",
111
+ {
112
+ id: y || C,
113
+ className: u(
114
+ g("xs", "mt"),
115
+ E("caption"),
116
+ o ? "text-fg-error" : a ? "text-fg-success" : "text-fg-secondary"
117
+ ),
118
+ role: o || a ? "alert" : void 0,
119
+ children: o ? t || "This field has an error" : t
120
+ }
121
+ )
122
+ ] });
123
+ })
124
+ );
125
+ P.displayName = "Checkbox";
126
+ export {
127
+ P as default
128
+ };
129
+ //# sourceMappingURL=Checkbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Checkbox.js","sources":["../../../../../src/ui/primitives/Checkbox/Checkbox.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n useRef,\n useEffect,\n forwardRef,\n memo,\n useId,\n useMemo,\n useCallback,\n} from \"react\";\nimport type { InputHTMLAttributes, ReactNode } from \"react\";\nimport { getTypographyClasses } from \"../../tokens/typography\";\nimport { getRadiusClass } from \"../../tokens/radius\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport { cn } from \"../../utils\";\n\nexport interface CheckboxProps extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"type\"\n> {\n label?: ReactNode;\n error?: boolean;\n /**\n * Validation success state — paints the border and (when\n * `helperText` is also set) the helper-text color green. Matches\n * the Input + Select + Radio + Switch + Textarea convention; the\n * three feedback flags (`error`, `success`, `helperText`) cover\n * every form primitive in the DS. Error takes precedence when\n * both `error` and `success` are set.\n */\n success?: boolean;\n helperText?: string;\n indeterminate?: boolean;\n}\n\n/**\n * Checkbox Component\n *\n * A styled checkbox input component.\n * Follows Atomic Design principles as an Atom component.\n * Uses Composite Pattern when combined with Label and ErrorMessage.\n *\n * @example\n * ```tsx\n * <Checkbox\n * id=\"terms\"\n * label=\"I agree to the terms\"\n * checked={checked}\n * onChange={handleChange}\n * />\n * ```\n */\nconst Checkbox = memo(\n forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(\n {\n id,\n label,\n error = false,\n success = false,\n helperText,\n className = \"\",\n disabled = false,\n indeterminate = false,\n ...props\n },\n ref,\n ) {\n // Stable fallback id when the consumer doesn't provide one. useId\n // is SSR-safe and stable across renders, replacing the deprecated\n // Math.random().substr() pattern.\n const reactId = useId();\n const checkboxId = id || `checkbox-${reactId}`;\n\n const errorId = useMemo(\n () => (error ? `${checkboxId}-error` : undefined),\n [error, checkboxId],\n );\n\n const helperId = useMemo(\n () => (helperText ? `${checkboxId}-helper` : undefined),\n [helperText, checkboxId],\n );\n\n // Memoize focus ring colors\n const primaryFocusRing = useMemo(() => \"focus:border-line-focus\", []);\n\n const errorFocusRing = useMemo(() => \"focus:border-error\", []);\n\n const focusRingColor = useMemo(\n () =>\n error\n ? errorFocusRing.replace(\"focus:border-\", \"focus:ring-\")\n : primaryFocusRing.replace(\"focus:border-\", \"focus:ring-\"),\n [error, errorFocusRing, primaryFocusRing],\n );\n\n // Memoize classes — error wins over success when both flags are\n // set (a field cannot be valid AND invalid; treat it as invalid).\n const checkboxClasses = useMemo(\n () =>\n cn(\n \"h-4\",\n \"w-4\",\n getRadiusClass(\"sm\"),\n \"border\",\n \"border-line-default\",\n \"text-fg-brand\",\n \"focus:ring-2\",\n focusRingColor,\n \"focus:ring-offset-2\",\n \"disabled:opacity-50\",\n \"disabled:cursor-not-allowed\",\n \"cursor-pointer\",\n error && \"border-error\",\n !error && success && \"border-success\",\n className,\n ),\n [focusRingColor, error, success, className],\n );\n\n const labelClasses = useMemo(\n () =>\n cn(\n getTypographyClasses(\"label\"),\n getSpacingClass(\"sm\", \"ml\"),\n disabled ? \"opacity-50 cursor-not-allowed\" : \"cursor-pointer\",\n ),\n [disabled],\n );\n\n // Set indeterminate state via ref\n const internalRef = useRef<HTMLInputElement>(null);\n\n // Memoize callback ref\n const setRef = useCallback(\n (element: HTMLInputElement | null) => {\n internalRef.current = element;\n\n // Handle forwarded ref (can be function or object)\n if (typeof ref === \"function\") {\n ref(element);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLInputElement | null>).current =\n element;\n }\n\n // Set indeterminate state\n if (element) {\n element.indeterminate = indeterminate;\n }\n },\n [ref, indeterminate],\n );\n\n useEffect(() => {\n if (internalRef.current) {\n internalRef.current.indeterminate = indeterminate;\n }\n }, [indeterminate]);\n\n return (\n <div className={cn(\"flex\", \"flex-col\", getSpacingClass(\"sm\", \"my\"))}>\n <div className=\"flex items-center\">\n <input\n type=\"checkbox\"\n id={checkboxId}\n ref={setRef}\n className={checkboxClasses}\n disabled={disabled}\n aria-invalid={error}\n aria-describedby={errorId || helperId || undefined}\n aria-label={!label ? \"Checkbox\" : undefined}\n {...props}\n />\n {label && (\n <label htmlFor={checkboxId} className={labelClasses}>\n {label}\n </label>\n )}\n </div>\n {(error || success || helperText) && (\n <div\n id={errorId || helperId}\n className={cn(\n getSpacingClass(\"xs\", \"mt\"),\n getTypographyClasses(\"caption\"),\n error\n ? \"text-fg-error\"\n : success\n ? \"text-fg-success\"\n : \"text-fg-secondary\",\n )}\n role={error || success ? \"alert\" : undefined}\n >\n {error ? helperText || \"This field has an error\" : helperText}\n </div>\n )}\n </div>\n );\n }),\n);\n\nCheckbox.displayName = \"Checkbox\";\n\nexport default Checkbox;\n"],"names":["Checkbox","memo","forwardRef","_a","ref","_b","id","label","error","success","helperText","className","disabled","indeterminate","props","__objRest","reactId","useId","checkboxId","errorId","useMemo","helperId","primaryFocusRing","errorFocusRing","focusRingColor","checkboxClasses","cn","getRadiusClass","labelClasses","getTypographyClasses","getSpacingClass","internalRef","useRef","setRef","useCallback","element","useEffect","jsxs","jsx","__spreadValues"],"mappings":"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"}
@@ -0,0 +1,206 @@
1
+ "use client";
2
+ import { jsx as n, jsxs as L } from "react/jsx-runtime";
3
+ import { forwardRef as z } from "react";
4
+ import { X as R } from "lucide-react";
5
+ import { Slot as S } from "@radix-ui/react-slot";
6
+ import { getRadiusClass as u } from "../../tokens/radius.js";
7
+ import { getSpacingClass as r } from "../../tokens/spacing.js";
8
+ import { getTypographySize as c } from "../../tokens/typography.js";
9
+ import { cn as e } from "../../utils/cn.js";
10
+ import { cva as j } from "../../utils/cva.js";
11
+ const h = j(
12
+ // Base classes
13
+ e(
14
+ "inline-flex",
15
+ "items-center",
16
+ "font-medium",
17
+ u("full"),
18
+ r("xs", "gap")
19
+ ),
20
+ {
21
+ variants: {
22
+ variant: {
23
+ default: e(
24
+ "bg-surface-muted",
25
+ "text-fg-primary",
26
+ "border",
27
+ "border-line-default"
28
+ ),
29
+ outlined: e(
30
+ "bg-transparent",
31
+ "text-fg-primary",
32
+ "border",
33
+ "border-line-default"
34
+ ),
35
+ filled: e(
36
+ "bg-surface-brand-strong",
37
+ "text-fg-inverse",
38
+ "border",
39
+ "border-transparent"
40
+ )
41
+ },
42
+ size: {
43
+ sm: e(
44
+ r("xs", "px"),
45
+ r("xs", "py"),
46
+ c("caption")
47
+ ),
48
+ md: e(
49
+ r("sm", "px"),
50
+ r("xs", "py"),
51
+ c("bodySmall")
52
+ ),
53
+ lg: e(
54
+ r("md", "px"),
55
+ r("sm", "py"),
56
+ c("body")
57
+ )
58
+ },
59
+ selected: {
60
+ true: e(
61
+ "bg-surface-brand-strong",
62
+ "text-fg-inverse",
63
+ "border",
64
+ "border-line-brand"
65
+ ),
66
+ false: ""
67
+ },
68
+ disabled: {
69
+ true: "opacity-50 cursor-not-allowed",
70
+ false: ""
71
+ }
72
+ },
73
+ compoundVariants: [
74
+ {
75
+ selected: !0,
76
+ variant: "default",
77
+ class: ""
78
+ // Override variant when selected
79
+ },
80
+ {
81
+ selected: !0,
82
+ variant: "outlined",
83
+ class: ""
84
+ // Override variant when selected
85
+ },
86
+ {
87
+ selected: !0,
88
+ variant: "filled",
89
+ class: ""
90
+ // Override variant when selected
91
+ }
92
+ ],
93
+ defaultVariants: {
94
+ variant: "default",
95
+ size: "md",
96
+ selected: !1,
97
+ disabled: !1
98
+ }
99
+ }
100
+ ), k = z(function(p, b) {
101
+ const {
102
+ children: a,
103
+ variant: m = "default",
104
+ size: g = "md",
105
+ selected: l = !1,
106
+ disabled: s = !1,
107
+ className: v = "",
108
+ "aria-label": o,
109
+ tabIndex: d,
110
+ asChild: C = !1
111
+ } = p, x = (() => {
112
+ if (o) return o;
113
+ if (typeof a == "string") return a;
114
+ if (typeof a == "object" && a !== null && "props" in a) {
115
+ const t = a.props;
116
+ if (t != null && t.children && typeof t.children == "string")
117
+ return t.children;
118
+ }
119
+ })();
120
+ if (C)
121
+ return /* @__PURE__ */ n(
122
+ S,
123
+ {
124
+ ref: b,
125
+ className: e(
126
+ h({ variant: m, size: g, selected: l, disabled: s }),
127
+ v
128
+ ),
129
+ "aria-label": o,
130
+ "aria-disabled": s || void 0,
131
+ tabIndex: d,
132
+ children: a
133
+ }
134
+ );
135
+ const { onRemove: f, onClick: i } = p, y = i !== void 0, N = y && !s, w = (t) => {
136
+ s || (t.key === "Enter" || t.key === " ") && (t.preventDefault(), i == null || i());
137
+ };
138
+ return /* @__PURE__ */ L(
139
+ "div",
140
+ {
141
+ ref: b,
142
+ className: e(
143
+ h({ variant: m, size: g, selected: l, disabled: s }),
144
+ f && r("xs", "pr"),
145
+ v
146
+ ),
147
+ "aria-disabled": s,
148
+ children: [
149
+ y ? /* @__PURE__ */ n(
150
+ "button",
151
+ {
152
+ type: "button",
153
+ onClick: s ? void 0 : i,
154
+ onKeyDown: w,
155
+ disabled: s,
156
+ "aria-pressed": l ? !0 : void 0,
157
+ "aria-label": o || x,
158
+ tabIndex: d !== void 0 ? d : N ? 0 : void 0,
159
+ className: e(
160
+ "flex-1",
161
+ "bg-transparent",
162
+ "border-0",
163
+ r("none", "p"),
164
+ "text-inherit",
165
+ "text-left",
166
+ "cursor-pointer",
167
+ "focus:outline-none",
168
+ "focus:ring-2",
169
+ "focus:ring-line-focus",
170
+ "focus:ring-offset-2",
171
+ u("full")
172
+ ),
173
+ children: a
174
+ }
175
+ ) : /* @__PURE__ */ n("span", { children: a }),
176
+ f && !s && /* @__PURE__ */ n(
177
+ "button",
178
+ {
179
+ type: "button",
180
+ onClick: (t) => {
181
+ t.stopPropagation(), f();
182
+ },
183
+ className: e(
184
+ r("xs", "ml"),
185
+ "hover:bg-tint-hover",
186
+ u("full"),
187
+ r("xs", "p"),
188
+ "transition-colors",
189
+ "focus:outline-none",
190
+ "focus:ring-2",
191
+ "focus:ring-line-focus",
192
+ "focus:ring-offset-1"
193
+ ),
194
+ "aria-label": `Remove ${x || "chip"}`,
195
+ children: /* @__PURE__ */ n(R, { className: "h-3 w-3", "aria-hidden": "true" })
196
+ }
197
+ )
198
+ ]
199
+ }
200
+ );
201
+ });
202
+ k.displayName = "Chip";
203
+ export {
204
+ k as default
205
+ };
206
+ //# sourceMappingURL=Chip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Chip.js","sources":["../../../../../src/ui/primitives/Chip/Chip.tsx"],"sourcesContent":["\"use client\";\n\nimport { forwardRef, type ReactNode } from \"react\";\nimport { X } from \"lucide-react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { getRadiusClass } from \"../../tokens/radius\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport { getTypographySize } from \"../../tokens/typography\";\nimport { cn, cva } from \"../../utils\";\n\nexport type ChipVariant = \"default\" | \"outlined\" | \"filled\";\nexport type ChipSize = \"sm\" | \"md\" | \"lg\";\n\ninterface ChipBaseProps {\n children: ReactNode;\n variant?: ChipVariant;\n size?: ChipSize;\n selected?: boolean;\n disabled?: boolean;\n className?: string;\n \"aria-label\"?: string;\n tabIndex?: number;\n}\n\ninterface ChipStandardProps extends ChipBaseProps {\n asChild?: false;\n onRemove?: () => void;\n onClick?: () => void;\n}\n\n/**\n * `asChild` collapses the chip into a single node provided by the\n * consumer (typically `<Link>`). The non-interactive frame + inner\n * label-button + X structure is intentionally NOT rendered — the child\n * IS the chip. As a consequence:\n *\n * - `onClick` and `onRemove` are forbidden at the type level. The\n * child's own click handler (and `href`) is what fires; consumers\n * who need a removable selected filter use the standard\n * (non-asChild) form.\n * - `selected` still applies the visual classes via `chipVariants`,\n * but NO `aria-pressed` is emitted. Toggle-button semantics on\n * `<a>` would lie — a link isn't a two-state control. Consumers\n * that need the selected route surfaced to AT users should pass\n * `aria-current=\"page\"` (or similar) directly on the child Link.\n *\n * @see `.claude/rules/components.md` and the inline a11y notes below.\n */\ninterface ChipAsChildProps extends ChipBaseProps {\n asChild: true;\n /**\n * `onClick` is forbidden when `asChild` is true — the child element\n * owns interaction. Pass the handler (or `href`) on the child.\n */\n onClick?: never;\n /**\n * `onRemove` is forbidden when `asChild` is true — the collapsed\n * node has no slot for an X button. Use the standard (non-asChild)\n * form when removal is required.\n */\n onRemove?: never;\n}\n\nexport type ChipProps = ChipStandardProps | ChipAsChildProps;\n\n/**\n * Chip Component\n *\n * A chip/tag for labels, filters, or selected items.\n *\n * Standard form: an outer `<div>` frame (never interactive) with an\n * inner `<button>` label (when `onClick`) and a sibling X `<button>`\n * (when `onRemove`). This shape closes two axe violations the older\n * implementation hit — `aria-required-parent` (role=option without a\n * listbox) and `nested-interactive` (clickable outer + clickable X).\n *\n * `asChild` form: a single node provided by the consumer (e.g.\n * `<Link>`), with the chip's classes projected via Radix `Slot`. See\n * the `ChipAsChildProps` JSDoc for the a11y responsibility transfer\n * — the consumer's child carries `href`, focus behavior, and any\n * route-state ARIA (`aria-current`). Forbidden in this form:\n * `onClick`, `onRemove` (TS-level).\n *\n * @example\n * ```tsx\n * <Chip>Tag</Chip>\n * <Chip onRemove={() => console.log('removed')}>Removable</Chip>\n *\n * // Navigation chip — server-rendered, zero-JS-friendly.\n * <Chip asChild variant=\"filled\">\n * <Link href=\"/filtros/ativo\" prefetch aria-current=\"page\">Active</Link>\n * </Chip>\n * ```\n */\n// Chip variants using CVA\nconst chipVariants = cva(\n // Base classes\n cn(\n \"inline-flex\",\n \"items-center\",\n \"font-medium\",\n getRadiusClass(\"full\"),\n getSpacingClass(\"xs\", \"gap\"),\n ),\n {\n variants: {\n variant: {\n default: cn(\n \"bg-surface-muted\",\n \"text-fg-primary\",\n \"border\",\n \"border-line-default\",\n ),\n outlined: cn(\n \"bg-transparent\",\n \"text-fg-primary\",\n \"border\",\n \"border-line-default\",\n ),\n filled: cn(\n \"bg-surface-brand-strong\",\n \"text-fg-inverse\",\n \"border\",\n \"border-transparent\",\n ),\n },\n size: {\n sm: cn(\n getSpacingClass(\"xs\", \"px\"),\n getSpacingClass(\"xs\", \"py\"),\n getTypographySize(\"caption\"),\n ),\n md: cn(\n getSpacingClass(\"sm\", \"px\"),\n getSpacingClass(\"xs\", \"py\"),\n getTypographySize(\"bodySmall\"),\n ),\n lg: cn(\n getSpacingClass(\"md\", \"px\"),\n getSpacingClass(\"sm\", \"py\"),\n getTypographySize(\"body\"),\n ),\n },\n selected: {\n true: cn(\n \"bg-surface-brand-strong\",\n \"text-fg-inverse\",\n \"border\",\n \"border-line-brand\",\n ),\n false: \"\",\n },\n disabled: {\n true: \"opacity-50 cursor-not-allowed\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n selected: true,\n variant: \"default\",\n class: \"\", // Override variant when selected\n },\n {\n selected: true,\n variant: \"outlined\",\n class: \"\", // Override variant when selected\n },\n {\n selected: true,\n variant: \"filled\",\n class: \"\", // Override variant when selected\n },\n ],\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n selected: false,\n disabled: false,\n },\n },\n);\n\nconst Chip = forwardRef<HTMLDivElement, ChipProps>(function Chip(props, ref) {\n const {\n children,\n variant = \"default\",\n size = \"md\",\n selected = false,\n disabled = false,\n className = \"\",\n \"aria-label\": ariaLabel,\n tabIndex,\n asChild = false,\n } = props;\n\n // Generate accessible label\n const getAccessibleLabel = (): string | undefined => {\n if (ariaLabel) return ariaLabel;\n if (typeof children === \"string\") return children;\n // For non-string children, try to extract text content\n if (\n typeof children === \"object\" &&\n children !== null &&\n \"props\" in children\n ) {\n const childProps = (children as { props?: { children?: unknown } }).props;\n if (childProps?.children && typeof childProps.children === \"string\") {\n return childProps.children;\n }\n }\n return undefined;\n };\n\n const accessibleLabel = getAccessibleLabel();\n\n // asChild path: collapse the entire chip structure (frame + label\n // button + X) into the single consumer-provided node. The frame's\n // visual classes are projected onto the child via Slot.\n //\n // A11Y RESPONSIBILITY TRANSFER. The child element owns:\n // - focus (its native focus ring, or its own focus utilities)\n // - activation (its own click handler / href for navigation)\n // - route-state semantics: `aria-current=\"page\"` on a selected\n // Link is the right tool. `aria-pressed` is intentionally NOT\n // emitted here — a link is not a toggle button.\n // - disabled semantics: `aria-disabled` is set when `disabled` is\n // true, but it does NOT block navigation. Consumers that must\n // truly disable navigation should also gate `href` upstream.\n //\n // TS forbids `onClick` / `onRemove` in this form (see ChipAsChildProps).\n if (asChild) {\n return (\n <Slot\n ref={ref}\n className={cn(\n chipVariants({ variant, size, selected, disabled }),\n className,\n )}\n aria-label={ariaLabel}\n aria-disabled={disabled || undefined}\n tabIndex={tabIndex}\n >\n {children}\n </Slot>\n );\n }\n\n // Standard form below. Narrow `props` so the union picks up\n // onClick/onRemove handlers (forbidden when asChild=true at TS level).\n const { onRemove, onClick } = props as ChipStandardProps;\n\n // Architecture:\n // The label is a real `<button>` whenever the chip is meant to be\n // activated (`onClick` provided). The X is a sibling `<button>` when\n // `onRemove` is provided. The outer `<div>` is NEVER interactive —\n // no `role`, no `tabIndex`, no event handlers. This unifies what\n // used to be three structural variants:\n // - `onClick` only → outer `role=\"button\"` [old]\n // - `onClick` + `onRemove` (no selected) → label-button [PR68]\n // - `selected` → outer `role=\"option\"` [old, axe-flagged]\n // into one consistent shape: label is the actor, outer is the chip\n // chrome (visual frame).\n //\n // Why this matters for a11y:\n // - `role=\"option\"` outside `role=\"listbox\"` violates `aria-required-\n // parent`. The old `selected` path failed axe in every standalone\n // chip. Moving the action to a native `<button>` with\n // `aria-pressed={selected}` (toggle button pattern) communicates\n // state correctly without requiring a listbox parent.\n // - The interactive outer + inner X button produced nested-interactive\n // whenever the consumer combined `selected` (or `onClick`) with\n // `onRemove`. Outer non-interactive + sibling buttons fixes both\n // cases at once.\n //\n // `selected` with no `onClick` is decorative only — the chip CANNOT\n // toggle, so it gets no `aria-pressed` (which would lie) and no role.\n // The visual `selected` styling (chipVariants.selected) applies, but\n // AT users read it as static text. Consumers who want the state\n // communicated must also pass `onClick` to make it a real toggle.\n const useLabelButton = onClick !== undefined;\n const interactive = useLabelButton && !disabled;\n\n // Keyboard handler for the label-button. Native `<button>` activates on\n // Enter/Space in real browsers, but JSDOM does NOT simulate Enter → click,\n // so this preserves the previous test-friendly behavior AND adds explicit\n // `preventDefault` (the original outer-as-button needed it; on a native\n // button this is mostly belt-and-suspenders but harmless).\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (disabled) return;\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onClick?.();\n }\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n chipVariants({ variant, size, selected, disabled }),\n onRemove && getSpacingClass(\"xs\", \"pr\"),\n className,\n )}\n aria-disabled={disabled}\n >\n {useLabelButton ? (\n <button\n type=\"button\"\n onClick={disabled ? undefined : onClick}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n aria-pressed={selected ? true : undefined}\n aria-label={ariaLabel || accessibleLabel}\n tabIndex={\n tabIndex !== undefined ? tabIndex : interactive ? 0 : undefined\n }\n className={cn(\n \"flex-1\",\n \"bg-transparent\",\n \"border-0\",\n getSpacingClass(\"none\", \"p\"),\n \"text-inherit\",\n \"text-left\",\n \"cursor-pointer\",\n \"focus:outline-none\",\n \"focus:ring-2\",\n \"focus:ring-line-focus\",\n \"focus:ring-offset-2\",\n getRadiusClass(\"full\"),\n )}\n >\n {children}\n </button>\n ) : (\n <span>{children}</span>\n )}\n {onRemove && !disabled && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onRemove();\n }}\n className={cn(\n getSpacingClass(\"xs\", \"ml\"),\n \"hover:bg-tint-hover\",\n getRadiusClass(\"full\"),\n getSpacingClass(\"xs\", \"p\"),\n \"transition-colors\",\n \"focus:outline-none\",\n \"focus:ring-2\",\n \"focus:ring-line-focus\",\n \"focus:ring-offset-1\",\n )}\n aria-label={`Remove ${accessibleLabel || \"chip\"}`}\n >\n <X className=\"h-3 w-3\" aria-hidden=\"true\" />\n </button>\n )}\n </div>\n );\n});\n\nChip.displayName = \"Chip\";\n\nexport default Chip;\n"],"names":["chipVariants","cva","cn","getRadiusClass","getSpacingClass","getTypographySize","Chip","forwardRef","props","ref","children","variant","size","selected","disabled","className","ariaLabel","tabIndex","asChild","accessibleLabel","childProps","jsx","Slot","onRemove","onClick","useLabelButton","interactive","handleKeyDown","e","jsxs","X"],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ "use client";
2
+ var z = Object.defineProperty, D = Object.defineProperties;
3
+ var E = Object.getOwnPropertyDescriptors;
4
+ var l = Object.getOwnPropertySymbols;
5
+ var b = Object.prototype.hasOwnProperty, g = Object.prototype.propertyIsEnumerable;
6
+ var h = (e, t, r) => t in e ? z(e, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[t] = r, v = (e, t) => {
7
+ for (var r in t || (t = {}))
8
+ b.call(t, r) && h(e, r, t[r]);
9
+ if (l)
10
+ for (var r of l(t))
11
+ g.call(t, r) && h(e, r, t[r]);
12
+ return e;
13
+ }, y = (e, t) => D(e, E(t));
14
+ var x = (e, t) => {
15
+ var r = {};
16
+ for (var n in e)
17
+ b.call(e, n) && t.indexOf(n) < 0 && (r[n] = e[n]);
18
+ if (e != null && l)
19
+ for (var n of l(e))
20
+ t.indexOf(n) < 0 && g.call(e, n) && (r[n] = e[n]);
21
+ return r;
22
+ };
23
+ import { jsxs as I, jsx as a } from "react/jsx-runtime";
24
+ import { forwardRef as N, useRef as K, useState as S, useEffect as C, useId as q } from "react";
25
+ import { useCollapsible as A } from "../../hooks/useCollapsible.js";
26
+ import { getRadiusClass as B } from "../../tokens/radius.js";
27
+ import { cn as F } from "../../utils/cn.js";
28
+ const G = N(
29
+ function(J, j) {
30
+ var d = J, {
31
+ children: t,
32
+ trigger: r,
33
+ defaultOpen: n = !0,
34
+ open: w,
35
+ onOpenChange: R,
36
+ disabled: c = !1,
37
+ duration: k = 200,
38
+ storageKey: H,
39
+ className: O = ""
40
+ } = d, $ = x(d, [
41
+ "children",
42
+ "trigger",
43
+ "defaultOpen",
44
+ "open",
45
+ "onOpenChange",
46
+ "disabled",
47
+ "duration",
48
+ "storageKey",
49
+ "className"
50
+ ]);
51
+ const { isOpen: o, toggle: p } = A({
52
+ defaultOpen: n,
53
+ open: w,
54
+ onOpenChange: R,
55
+ storageKey: H
56
+ }), i = K(null), [u, f] = S(o ? "auto" : 0);
57
+ C(() => {
58
+ i.current && f(o ? i.current.scrollHeight : 0);
59
+ }, [o, t]), C(() => {
60
+ if (!o || !i.current) return;
61
+ const s = new ResizeObserver(() => {
62
+ i.current && o && f(i.current.scrollHeight);
63
+ });
64
+ return s.observe(i.current), () => {
65
+ s.disconnect();
66
+ };
67
+ }, [o]);
68
+ const m = `collapsible-content-${q()}`;
69
+ return /* @__PURE__ */ I("div", y(v({ ref: j, className: O }, $), { children: [
70
+ r !== void 0 && /* @__PURE__ */ a(
71
+ "button",
72
+ {
73
+ type: "button",
74
+ onClick: p,
75
+ onKeyDown: (s) => {
76
+ (s.key === "Enter" || s.key === " ") && (s.preventDefault(), c || p());
77
+ },
78
+ disabled: c,
79
+ "aria-expanded": o,
80
+ "aria-controls": m,
81
+ "aria-disabled": c,
82
+ className: F(
83
+ "w-full",
84
+ "text-left",
85
+ "focus:outline-none",
86
+ "focus:ring-2",
87
+ "focus:ring-line-brand",
88
+ "focus:ring-offset-2",
89
+ B("md")
90
+ ),
91
+ children: r
92
+ }
93
+ ),
94
+ /* @__PURE__ */ a(
95
+ "div",
96
+ {
97
+ id: m,
98
+ ref: i,
99
+ style: {
100
+ height: typeof u == "number" ? `${u}px` : u,
101
+ overflow: "hidden",
102
+ transition: `height ${k}ms ease-in-out`
103
+ },
104
+ "aria-hidden": !o,
105
+ children: /* @__PURE__ */ a("div", { children: t })
106
+ }
107
+ )
108
+ ] }));
109
+ }
110
+ );
111
+ G.displayName = "Collapsible";
112
+ export {
113
+ G as default
114
+ };
115
+ //# sourceMappingURL=Collapsible.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Collapsible.js","sources":["../../../../../src/ui/primitives/Collapsible/Collapsible.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n forwardRef,\n useEffect,\n useId,\n useRef,\n useState,\n type HTMLAttributes,\n type ReactNode,\n type KeyboardEvent,\n} from \"react\";\nimport {\n useCollapsible,\n type UseCollapsibleOptions,\n} from \"../../hooks/useCollapsible\";\nimport { getRadiusClass } from \"../../tokens/radius\";\nimport { cn } from \"../../utils\";\n\nexport interface CollapsibleProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onChange\"\n> {\n children: ReactNode;\n /**\n * Content for the toggle button. When omitted, Collapsible renders only\n * the animated content panel — the caller is responsible for its own\n * trigger and `open`-state wiring (SidebarGroup/SideNavbarGroup pattern).\n */\n trigger?: ReactNode;\n defaultOpen?: boolean;\n open?: boolean; // Controlled mode\n onOpenChange?: (open: boolean) => void;\n disabled?: boolean;\n duration?: number; // Animation duration in ms\n storageKey?: string; // For localStorage persistence\n}\n\n/**\n * Collapsible Component\n *\n * A generic, reusable collapsible component for any content.\n * Supports both controlled and uncontrolled modes.\n * Includes smooth animations and full ARIA support.\n *\n * @example\n * ```tsx\n * <Collapsible\n * trigger={<button>Toggle</button>}\n * defaultOpen={true}\n * >\n * <div>Collapsible content</div>\n * </Collapsible>\n * ```\n */\nconst Collapsible = forwardRef<HTMLDivElement, CollapsibleProps>(\n function Collapsible(\n {\n children,\n trigger,\n defaultOpen = true,\n open,\n onOpenChange,\n disabled = false,\n duration = 200,\n storageKey,\n className = \"\",\n ...props\n },\n ref,\n ) {\n const { isOpen, toggle } = useCollapsible({\n defaultOpen,\n open,\n onOpenChange,\n storageKey,\n } as UseCollapsibleOptions);\n\n const contentRef = useRef<HTMLDivElement>(null);\n const [height, setHeight] = useState<number | \"auto\">(isOpen ? \"auto\" : 0);\n\n // Update height when content changes or isOpen changes\n useEffect(() => {\n if (!contentRef.current) return;\n\n if (isOpen) {\n // Set to actual height for animation\n setHeight(contentRef.current.scrollHeight);\n } else {\n // Set to 0 for collapse animation\n setHeight(0);\n }\n }, [isOpen, children]);\n\n // Handle resize to recalculate height\n useEffect(() => {\n if (!isOpen || !contentRef.current) return;\n\n const resizeObserver = new ResizeObserver(() => {\n if (contentRef.current && isOpen) {\n setHeight(contentRef.current.scrollHeight);\n }\n });\n\n resizeObserver.observe(contentRef.current);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [isOpen]);\n\n // Stable per-instance ID for the collapsible content panel —\n // referenced by aria-controls on the toggle button. The previous\n // Math.random() approach regenerated the ID on every render, so\n // toggle/content pairing was technically inconsistent across\n // re-renders. useId is SSR-safe and stable.\n const contentId = `collapsible-content-${useId()}`;\n\n return (\n <div ref={ref} className={className} {...props}>\n {trigger !== undefined && (\n <button\n type=\"button\"\n onClick={toggle}\n onKeyDown={(e: KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n if (!disabled) {\n toggle();\n }\n }\n }}\n disabled={disabled}\n aria-expanded={isOpen}\n aria-controls={contentId}\n aria-disabled={disabled}\n className={cn(\n \"w-full\",\n \"text-left\",\n \"focus:outline-none\",\n \"focus:ring-2\",\n \"focus:ring-line-brand\",\n \"focus:ring-offset-2\",\n getRadiusClass(\"md\"),\n )}\n >\n {trigger}\n </button>\n )}\n <div\n id={contentId}\n ref={contentRef}\n style={{\n height: typeof height === \"number\" ? `${height}px` : height,\n overflow: \"hidden\",\n transition: `height ${duration}ms ease-in-out`,\n }}\n aria-hidden={!isOpen}\n >\n <div>{children}</div>\n </div>\n </div>\n );\n },\n);\n\nCollapsible.displayName = \"Collapsible\";\n\nexport default Collapsible;\n"],"names":["Collapsible","forwardRef","_a","ref","_b","children","trigger","defaultOpen","open","onOpenChange","disabled","duration","storageKey","className","props","__objRest","isOpen","toggle","useCollapsible","contentRef","useRef","height","setHeight","useState","useEffect","resizeObserver","contentId","useId","jsxs","__spreadProps","__spreadValues","jsx","e","cn","getRadiusClass"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAuDA,MAAMA,IAAcC;AAAA,EAClB,SACEC,GAYAC,GACA;AAbA,QAAAC,IAAAF,GACE;AAAA,gBAAAG;AAAA,MACA,SAAAC;AAAA,MACA,aAAAC,IAAc;AAAA,MACd,MAAAC;AAAA,MACA,cAAAC;AAAA,MACA,UAAAC,IAAW;AAAA,MACX,UAAAC,IAAW;AAAA,MACX,YAAAC;AAAA,MACA,WAAAC,IAAY;AAAA,QATdT,GAUKU,IAAAC,EAVLX,GAUK;AAAA,MATH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAKF,UAAM,EAAE,QAAAY,GAAQ,QAAAC,EAAA,IAAWC,EAAe;AAAA,MACxC,aAAAX;AAAA,MACA,MAAAC;AAAA,MACA,cAAAC;AAAA,MACA,YAAAG;AAAA,IAAA,CACwB,GAEpBO,IAAaC,EAAuB,IAAI,GACxC,CAACC,GAAQC,CAAS,IAAIC,EAA0BP,IAAS,SAAS,CAAC;AAGzE,IAAAQ,EAAU,MAAM;AACd,MAAKL,EAAW,WAIdG,EAFEN,IAEQG,EAAW,QAAQ,eAGnB,CAH+B;AAAA,IAK7C,GAAG,CAACH,GAAQX,CAAQ,CAAC,GAGrBmB,EAAU,MAAM;AACd,UAAI,CAACR,KAAU,CAACG,EAAW,QAAS;AAEpC,YAAMM,IAAiB,IAAI,eAAe,MAAM;AAC9C,QAAIN,EAAW,WAAWH,KACxBM,EAAUH,EAAW,QAAQ,YAAY;AAAA,MAE7C,CAAC;AAED,aAAAM,EAAe,QAAQN,EAAW,OAAO,GAElC,MAAM;AACX,QAAAM,EAAe,WAAA;AAAA,MACjB;AAAA,IACF,GAAG,CAACT,CAAM,CAAC;AAOX,UAAMU,IAAY,uBAAuBC,EAAA,CAAO;AAEhD,WACE,gBAAAC,EAAC,OAAAC,EAAAC,EAAA,EAAI,KAAA3B,GAAU,WAAAU,KAA0BC,IAAxC,EACE,UAAA;AAAA,MAAAR,MAAY,UACX,gBAAAyB;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,SAASd;AAAA,UACT,WAAW,CAACe,MAAwC;AAClD,aAAIA,EAAE,QAAQ,WAAWA,EAAE,QAAQ,SACjCA,EAAE,eAAA,GACGtB,KACHO,EAAA;AAAA,UAGN;AAAA,UACA,UAAAP;AAAA,UACA,iBAAeM;AAAA,UACf,iBAAeU;AAAA,UACf,iBAAehB;AAAA,UACf,WAAWuB;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACAC,EAAe,IAAI;AAAA,UAAA;AAAA,UAGpB,UAAA5B;AAAA,QAAA;AAAA,MAAA;AAAA,MAGL,gBAAAyB;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,IAAIL;AAAA,UACJ,KAAKP;AAAA,UACL,OAAO;AAAA,YACL,QAAQ,OAAOE,KAAW,WAAW,GAAGA,CAAM,OAAOA;AAAA,YACrD,UAAU;AAAA,YACV,YAAY,UAAUV,CAAQ;AAAA,UAAA;AAAA,UAEhC,eAAa,CAACK;AAAA,UAEd,UAAA,gBAAAe,EAAC,SAAK,UAAA1B,EAAA,CAAS;AAAA,QAAA;AAAA,MAAA;AAAA,IACjB,IACF;AAAA,EAEJ;AACF;AAEAL,EAAY,cAAc;"}
@@ -0,0 +1,54 @@
1
+ "use client";
2
+ var h = Object.defineProperty, u = Object.defineProperties;
3
+ var y = Object.getOwnPropertyDescriptors;
4
+ var a = Object.getOwnPropertySymbols;
5
+ var l = Object.prototype.hasOwnProperty, m = Object.prototype.propertyIsEnumerable;
6
+ var o = (e, r, s) => r in e ? h(e, r, { enumerable: !0, configurable: !0, writable: !0, value: s }) : e[r] = s, n = (e, r) => {
7
+ for (var s in r || (r = {}))
8
+ l.call(r, s) && o(e, s, r[s]);
9
+ if (a)
10
+ for (var s of a(r))
11
+ m.call(r, s) && o(e, s, r[s]);
12
+ return e;
13
+ }, c = (e, r) => u(e, y(r));
14
+ var p = (e, r) => {
15
+ var s = {};
16
+ for (var t in e)
17
+ l.call(e, t) && r.indexOf(t) < 0 && (s[t] = e[t]);
18
+ if (e != null && a)
19
+ for (var t of a(e))
20
+ r.indexOf(t) < 0 && m.call(e, t) && (s[t] = e[t]);
21
+ return s;
22
+ };
23
+ import { jsxs as C, jsx as f } from "react/jsx-runtime";
24
+ import { AlertCircle as S } from "lucide-react";
25
+ import { getTypographySize as b } from "../../tokens/typography.js";
26
+ import { getSpacingClass as d } from "../../tokens/spacing.js";
27
+ import { cn as j } from "../../utils/cn.js";
28
+ function M(v) {
29
+ var i = v, {
30
+ message: e,
31
+ id: r,
32
+ className: s = ""
33
+ } = i, t = p(i, [
34
+ "message",
35
+ "id",
36
+ "className"
37
+ ]);
38
+ const g = [
39
+ d("xs", "mt"),
40
+ b("bodySmall"),
41
+ "text-fg-error",
42
+ "flex",
43
+ "items-center",
44
+ d("xs", "gap")
45
+ ], x = j(...g, s);
46
+ return /* @__PURE__ */ C("div", c(n({ role: "alert", id: r, className: x, "aria-live": "polite" }, t), { children: [
47
+ /* @__PURE__ */ f(S, { className: "h-4 w-4 shrink-0", "aria-hidden": "true" }),
48
+ /* @__PURE__ */ f("span", { children: e })
49
+ ] }));
50
+ }
51
+ export {
52
+ M as default
53
+ };
54
+ //# sourceMappingURL=ErrorMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorMessage.js","sources":["../../../../../src/ui/primitives/ErrorMessage/ErrorMessage.tsx"],"sourcesContent":["import type { HTMLAttributes } from \"react\";\nimport { AlertCircle } from \"lucide-react\";\nimport { getTypographySize } from \"../../tokens/typography\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport { cn } from \"../../utils\";\n\nexport interface ErrorMessageProps extends HTMLAttributes<HTMLDivElement> {\n message: string;\n id?: string;\n}\n\n/**\n * ErrorMessage Component\n *\n * A component for displaying validation error messages.\n * Follows Atomic Design principles as an Atom component.\n *\n * @example\n * ```tsx\n * <ErrorMessage message=\"This field is required\" id=\"email-error\" />\n * ```\n */\nexport default function ErrorMessage({\n message,\n id,\n className = \"\",\n ...props\n}: ErrorMessageProps) {\n const baseClasses = [\n getSpacingClass(\"xs\", \"mt\"),\n getTypographySize(\"bodySmall\"),\n \"text-fg-error\",\n \"flex\",\n \"items-center\",\n getSpacingClass(\"xs\", \"gap\"),\n ];\n\n const classes = cn(...baseClasses, className);\n\n return (\n <div role=\"alert\" id={id} className={classes} aria-live=\"polite\" {...props}>\n <AlertCircle className=\"h-4 w-4 shrink-0\" aria-hidden=\"true\" />\n <span>{message}</span>\n </div>\n );\n}\n"],"names":["ErrorMessage","_a","_b","message","id","className","props","__objRest","baseClasses","getSpacingClass","getTypographySize","classes","cn","jsxs","__spreadProps","__spreadValues","jsx","AlertCircle"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBA,SAAwBA,EAAaC,GAKf;AALe,MAAAC,IAAAD,GACnC;AAAA,aAAAE;AAAA,IACA,IAAAC;AAAA,IACA,WAAAC,IAAY;AAAA,MAHuBH,GAIhCI,IAAAC,EAJgCL,GAIhC;AAAA,IAHH;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAMM,IAAc;AAAA,IAClBC,EAAgB,MAAM,IAAI;AAAA,IAC1BC,EAAkB,WAAW;AAAA,IAC7B;AAAA,IACA;AAAA,IACA;AAAA,IACAD,EAAgB,MAAM,KAAK;AAAA,EAAA,GAGvBE,IAAUC,EAAG,GAAGJ,GAAaH,CAAS;AAE5C,SACE,gBAAAQ,EAAC,OAAAC,EAAAC,EAAA,EAAI,MAAK,SAAQ,IAAAX,GAAQ,WAAWO,GAAS,aAAU,YAAaL,IAApE,EACC,UAAA;AAAA,IAAA,gBAAAU,EAACC,GAAA,EAAY,WAAU,oBAAmB,eAAY,QAAO;AAAA,IAC7D,gBAAAD,EAAC,UAAM,UAAAb,EAAA,CAAQ;AAAA,EAAA,IACjB;AAEJ;"}
@@ -0,0 +1,57 @@
1
+ "use client";
2
+ var p = Object.defineProperty;
3
+ var a = Object.getOwnPropertySymbols;
4
+ var g = Object.prototype.hasOwnProperty, f = Object.prototype.propertyIsEnumerable;
5
+ var s = (r, e, o) => e in r ? p(r, e, { enumerable: !0, configurable: !0, writable: !0, value: o }) : r[e] = o, b = (r, e) => {
6
+ for (var o in e || (e = {}))
7
+ g.call(e, o) && s(r, o, e[o]);
8
+ if (a)
9
+ for (var o of a(e))
10
+ f.call(e, o) && s(r, o, e[o]);
11
+ return r;
12
+ };
13
+ var d = (r, e) => {
14
+ var o = {};
15
+ for (var n in r)
16
+ g.call(r, n) && e.indexOf(n) < 0 && (o[n] = r[n]);
17
+ if (r != null && a)
18
+ for (var n of a(r))
19
+ e.indexOf(n) < 0 && f.call(r, n) && (o[n] = r[n]);
20
+ return o;
21
+ };
22
+ import { jsx as c } from "react/jsx-runtime";
23
+ import { getRadiusClass as x } from "../../tokens/radius.js";
24
+ import { getSpacingClass as m } from "../../tokens/spacing.js";
25
+ import { cn as t } from "../../utils/cn.js";
26
+ function j(n) {
27
+ var i = n, {
28
+ variant: r = "info",
29
+ className: e
30
+ } = i, o = d(i, [
31
+ "variant",
32
+ "className"
33
+ ]);
34
+ const l = {
35
+ warning: t("bg-warning-bg", "text-warning-dark", "border-warning"),
36
+ error: t("bg-error-bg", "text-error-dark", "border-error"),
37
+ info: t("bg-info-bg", "text-info-dark", "border-info")
38
+ };
39
+ return /* @__PURE__ */ c(
40
+ "div",
41
+ b({
42
+ role: "alert",
43
+ className: t(
44
+ "border",
45
+ m("base", "px"),
46
+ m("sm", "py"),
47
+ x("lg"),
48
+ l[r],
49
+ e
50
+ )
51
+ }, o)
52
+ );
53
+ }
54
+ export {
55
+ j as default
56
+ };
57
+ //# sourceMappingURL=Info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Info.js","sources":["../../../../../src/ui/primitives/Info/Info.tsx"],"sourcesContent":["import type { HTMLAttributes } from \"react\";\nimport { getRadiusClass } from \"../../tokens/radius\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport { cn } from \"../../utils\";\n\nexport interface InfoProps extends HTMLAttributes<HTMLDivElement> {\n variant?: \"info\" | \"warning\" | \"error\";\n}\n\nexport default function Info({\n variant = \"info\",\n className,\n ...props\n}: InfoProps) {\n const variantClasses = {\n warning: cn(\"bg-warning-bg\", \"text-warning-dark\", \"border-warning\"),\n error: cn(\"bg-error-bg\", \"text-error-dark\", \"border-error\"),\n info: cn(\"bg-info-bg\", \"text-info-dark\", \"border-info\"),\n };\n\n return (\n <div\n role=\"alert\"\n className={cn(\n \"border\",\n getSpacingClass(\"base\", \"px\"),\n getSpacingClass(\"sm\", \"py\"),\n getRadiusClass(\"lg\"),\n variantClasses[variant],\n className,\n )}\n {...props}\n />\n );\n}\n"],"names":["Info","_a","_b","variant","className","props","__objRest","variantClasses","cn","jsx","__spreadValues","getSpacingClass","getRadiusClass"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AASA,SAAwBA,EAAKC,GAIf;AAJe,MAAAC,IAAAD,GAC3B;AAAA,aAAAE,IAAU;AAAA,IACV,WAAAC;AAAA,MAF2BF,GAGxBG,IAAAC,EAHwBJ,GAGxB;AAAA,IAFH;AAAA,IACA;AAAA;AAGA,QAAMK,IAAiB;AAAA,IACrB,SAASC,EAAG,iBAAiB,qBAAqB,gBAAgB;AAAA,IAClE,OAAOA,EAAG,eAAe,mBAAmB,cAAc;AAAA,IAC1D,MAAMA,EAAG,cAAc,kBAAkB,aAAa;AAAA,EAAA;AAGxD,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAAC,EAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAWF;AAAA,QACT;AAAA,QACAG,EAAgB,QAAQ,IAAI;AAAA,QAC5BA,EAAgB,MAAM,IAAI;AAAA,QAC1BC,EAAe,IAAI;AAAA,QACnBL,EAAeJ,CAAO;AAAA,QACtBC;AAAA,MAAA;AAAA,OAEEC;AAAA,EAAA;AAGV;"}