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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (411) hide show
  1. package/README.md +2 -1
  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/index.cjs +37 -37
  404. package/dist/index.cjs.map +1 -1
  405. package/dist/index.js +1052 -1053
  406. package/dist/index.js.map +1 -1
  407. package/dist/server/index.cjs +23 -23
  408. package/dist/server/index.cjs.map +1 -1
  409. package/dist/server/index.js +858 -1193
  410. package/dist/server/index.js.map +1 -1
  411. package/package.json +9 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Form.js","sources":["../../../../../src/ui/components/Form/Form.tsx"],"sourcesContent":["\"use client\";\n\nimport type { FormHTMLAttributes, ReactNode } from \"react\";\nimport { FormProvider } from \"./FormProvider\";\nimport type { FieldValues, UseFormReturn } from \"react-hook-form\";\nimport { cn } from \"../../utils\";\nimport {\n getSpacingClass,\n getRadiusClass,\n getTypographySizeFromFontSize,\n} from \"../../tokens\";\n\n// Simple Form Props\ninterface SimpleFormProps extends FormHTMLAttributes<HTMLFormElement> {\n children: ReactNode;\n onSubmit?: (e: React.FormEvent<HTMLFormElement>) => void;\n loading?: boolean;\n error?: string | null;\n success?: string | null;\n form?: never; // Cannot use form prop in simple mode\n}\n\n// React Hook Form Props\ninterface ReactHookFormProps<\n TFieldValues extends FieldValues = FieldValues,\n> extends Omit<FormHTMLAttributes<HTMLFormElement>, \"onSubmit\"> {\n children: ReactNode;\n form: UseFormReturn<TFieldValues>;\n onSubmit: (data: TFieldValues) => void | Promise<void>;\n loading?: boolean;\n error?: string | null;\n success?: string | null;\n onSubmitError?: (errors: unknown) => void;\n}\n\ntype FormProps<TFieldValues extends FieldValues = FieldValues> =\n | SimpleFormProps\n | ReactHookFormProps<TFieldValues>;\n\n/**\n * Form Component\n *\n * A flexible form component that supports both simple forms and react-hook-form integration.\n *\n * @example\n * ```tsx\n * // Simple form\n * <Form onSubmit={handleSubmit} loading={isSubmitting}>\n * <Input name=\"email\" />\n * <Button type=\"submit\">Submit</Button>\n * </Form>\n *\n * // With react-hook-form\n * const form = useForm({ resolver: zodResolver(schema) });\n * <Form form={form} onSubmit={handleSubmit}>\n * <FormField name=\"email\">\n * {({ register, error }) => (\n * <>\n * <Input {...register('email')} />\n * {error && <ErrorMessage>{error}</ErrorMessage>}\n * </>\n * )}\n * </FormField>\n * </Form>\n * ```\n */\nexport default function Form<TFieldValues extends FieldValues = FieldValues>({\n children,\n onSubmit,\n loading = false,\n error = null,\n success = null,\n className = \"\",\n ...props\n}: FormProps<TFieldValues>) {\n const classes = cn(\n getSpacingClass(\"lg\", \"gap\"),\n \"flex\",\n \"flex-col\",\n className,\n );\n\n // Check if using react-hook-form\n const isReactHookForm = \"form\" in props && props.form !== undefined;\n\n if (isReactHookForm) {\n const {\n form,\n onSubmit: onSubmitData,\n onSubmitError,\n ...formProps\n } = props as ReactHookFormProps<TFieldValues>;\n\n const handleSubmit = form.handleSubmit(\n async (data) => {\n try {\n await onSubmitData(data);\n } catch (err) {\n onSubmitError?.(err);\n }\n },\n (errors) => {\n onSubmitError?.(errors);\n },\n );\n\n return (\n <FormProvider form={form} loading={loading}>\n <form\n className={classes}\n onSubmit={handleSubmit}\n noValidate\n {...formProps}\n >\n {children}\n {error && (\n <div\n role=\"alert\"\n className={cn(\n getSpacingClass(\"md\", \"p\"),\n getTypographySizeFromFontSize(\"sm\"),\n \"text-error-dark\",\n \"bg-error-bg\",\n \"border\",\n \"border-error\",\n getRadiusClass(\"md\"),\n )}\n >\n {error}\n </div>\n )}\n {success && (\n <div\n role=\"alert\"\n className={cn(\n getSpacingClass(\"md\", \"p\"),\n getTypographySizeFromFontSize(\"sm\"),\n \"text-success-dark\",\n \"bg-success-bg\",\n \"border\",\n \"border-success\",\n getRadiusClass(\"md\"),\n )}\n >\n {success}\n </div>\n )}\n </form>\n </FormProvider>\n );\n }\n\n // Simple form mode\n // Use onSubmit from props or from direct prop\n const onSubmitSimple = (props as SimpleFormProps).onSubmit || onSubmit;\n const { onSubmit: _, ...simpleProps } = props as SimpleFormProps;\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n if (onSubmitSimple && !loading) {\n // Narrow the union: we're in the !isReactHookForm branch, so\n // onSubmit takes a FormEvent. TS sees the union member's intersected\n // parameter type and can't prove it; the cast names the branch.\n (onSubmitSimple as SimpleFormProps[\"onSubmit\"])?.(e);\n }\n };\n\n return (\n <form\n className={classes}\n onSubmit={handleSubmit}\n noValidate\n {...simpleProps}\n >\n {children}\n {error && (\n <div\n role=\"alert\"\n className={cn(\n getSpacingClass(\"md\", \"p\"),\n getTypographySizeFromFontSize(\"sm\"),\n \"text-error-dark\",\n \"bg-error-bg\",\n \"border\",\n \"border-error\",\n getRadiusClass(\"md\"),\n )}\n >\n {error}\n </div>\n )}\n {success && (\n <div\n role=\"alert\"\n className={cn(\n getSpacingClass(\"md\", \"p\"),\n getTypographySizeFromFontSize(\"sm\"),\n \"text-success-dark\",\n \"bg-success-bg\",\n \"border\",\n \"border-success\",\n getRadiusClass(\"md\"),\n )}\n >\n {success}\n </div>\n )}\n </form>\n );\n}\n"],"names":["Form","_a","_b","children","onSubmit","loading","error","success","className","props","__objRest","classes","cn","getSpacingClass","form","onSubmitData","onSubmitError","formProps","handleSubmit","data","__async","err","errors","jsx","FormProvider","jsxs","__spreadProps","__spreadValues","getTypographySizeFromFontSize","getRadiusClass","onSubmitSimple","_","simpleProps","e"],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ "use client";
2
+ import { createGenericContext as e } from "../../hooks/createGenericContext.js";
3
+ const t = e({
4
+ displayName: "FormContext",
5
+ errorMessage: "useFormContext must be used within a Form component with react-hook-form integration"
6
+ }), n = t.Context, r = t.Provider;
7
+ function i() {
8
+ return t.useContextRequired();
9
+ }
10
+ function m() {
11
+ return t.useContextOptional();
12
+ }
13
+ export {
14
+ n as FormContext,
15
+ r as FormContextProvider,
16
+ i as useFormContext,
17
+ m as useFormContextOptional
18
+ };
19
+ //# sourceMappingURL=FormContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormContext.js","sources":["../../../../../src/ui/components/Form/FormContext.tsx"],"sourcesContent":["\"use client\";\n\n/* eslint-disable react-refresh/only-export-components */\nimport type { FieldValues, UseFormReturn } from \"react-hook-form\";\nimport { createGenericContext } from \"../../hooks/createGenericContext\";\n\nexport interface FormContextValue<\n TFieldValues extends FieldValues = FieldValues,\n> {\n form?: UseFormReturn<TFieldValues>;\n loading?: boolean;\n}\n\nconst formContext = createGenericContext<FormContextValue>({\n displayName: \"FormContext\",\n errorMessage:\n \"useFormContext must be used within a Form component with react-hook-form integration\",\n});\n\n/**\n * Raw React Context object. Exposed so `useContextSelector(FormContext, …)`\n * keeps working. Prefer the typed hooks below for direct reads.\n */\nexport const FormContext = formContext.Context;\n\n/**\n * Internal Provider — consumed by `FormProvider.tsx` only. Not re-exported\n * from `Form/index.ts`; keeps the public surface unchanged.\n */\nexport const FormContextProvider = formContext.Provider;\n\n/**\n * Hook to access Form context.\n *\n * @throws Error if used outside of Form component with react-hook-form\n */\nexport function useFormContext<\n TFieldValues extends FieldValues = FieldValues,\n>(): FormContextValue<TFieldValues> {\n return formContext.useContextRequired<FormContextValue<TFieldValues>>();\n}\n\n/**\n * Hook to access Form context (optional, returns undefined if not in Form).\n */\nexport function useFormContextOptional<\n TFieldValues extends FieldValues = FieldValues,\n>(): FormContextValue<TFieldValues> | undefined {\n return formContext.useContextOptional<FormContextValue<TFieldValues>>();\n}\n"],"names":["formContext","createGenericContext","FormContext","FormContextProvider","useFormContext","useFormContextOptional"],"mappings":";;AAaA,MAAMA,IAAcC,EAAuC;AAAA,EACzD,aAAa;AAAA,EACb,cACE;AACJ,CAAC,GAMYC,IAAcF,EAAY,SAM1BG,IAAsBH,EAAY;AAOxC,SAASI,IAEoB;AAClC,SAAOJ,EAAY,mBAAA;AACrB;AAKO,SAASK,IAEgC;AAC9C,SAAOL,EAAY,mBAAA;AACrB;"}
@@ -0,0 +1,66 @@
1
+ "use client";
2
+ import { jsxs as u, jsx as g } from "react/jsx-runtime";
3
+ import { useFormContext as d } from "./FormContext.js";
4
+ import x from "../../primitives/Label/Label.js";
5
+ import { cn as c } from "../../utils/cn.js";
6
+ import { getTypographyWeightFromFontWeight as w, getTypographySizeFromFontSize as y } from "../../tokens/typography.js";
7
+ import C from "../../primitives/ErrorMessage/ErrorMessage.js";
8
+ import { getSpacingClass as S } from "../../tokens/spacing.js";
9
+ function N({
10
+ name: r,
11
+ label: e,
12
+ children: a,
13
+ rules: t,
14
+ className: f = ""
15
+ }) {
16
+ var n;
17
+ const { form: i } = d();
18
+ if (!i)
19
+ throw new Error(
20
+ "FormField must be used within a Form component with react-hook-form integration"
21
+ );
22
+ const {
23
+ register: m,
24
+ formState: { errors: p },
25
+ watch: l
26
+ } = i, s = m(r, t), o = (n = p[r]) == null ? void 0 : n.message, h = l(r);
27
+ return /* @__PURE__ */ u(
28
+ "div",
29
+ {
30
+ className: c(
31
+ "flex",
32
+ "flex-col",
33
+ S("sm", "gap"),
34
+ f
35
+ ),
36
+ children: [
37
+ e && /* @__PURE__ */ g(
38
+ x,
39
+ {
40
+ htmlFor: r,
41
+ className: c(
42
+ "block",
43
+ y("sm"),
44
+ w("medium"),
45
+ "text-fg-primary"
46
+ ),
47
+ children: e
48
+ }
49
+ ),
50
+ a({
51
+ name: r,
52
+ register: (F) => m(F, t),
53
+ error: o,
54
+ value: h,
55
+ onChange: s.onChange,
56
+ onBlur: s.onBlur
57
+ }),
58
+ o && /* @__PURE__ */ g(C, { message: o })
59
+ ]
60
+ }
61
+ );
62
+ }
63
+ export {
64
+ N as FormField
65
+ };
66
+ //# sourceMappingURL=FormField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormField.js","sources":["../../../../../src/ui/components/Form/FormField.tsx"],"sourcesContent":["\"use client\";\n\nimport { useFormContext } from \"./FormContext\";\nimport { ErrorMessage, Label } from \"../../primitives\";\nimport { cn } from \"../../utils\";\nimport {\n getSpacingClass,\n getTypographySizeFromFontSize,\n getTypographyWeightFromFontWeight,\n} from \"../../tokens\";\nimport type { FieldValues, Path, RegisterOptions } from \"react-hook-form\";\nimport type { ReactNode } from \"react\";\nimport type { UseFormReturn } from \"react-hook-form\";\n\nexport interface FormFieldProps<\n TFieldValues extends FieldValues = FieldValues,\n> {\n name: Path<TFieldValues>;\n label?: string;\n children: (props: {\n name: string;\n register: (\n fieldName: Path<TFieldValues>,\n ) => ReturnType<UseFormReturn<TFieldValues>[\"register\"]>;\n error?: string;\n value?: unknown;\n onChange?: ReturnType<UseFormReturn<TFieldValues>[\"register\"]>[\"onChange\"];\n onBlur?: ReturnType<UseFormReturn<TFieldValues>[\"register\"]>[\"onBlur\"];\n }) => ReactNode;\n rules?: RegisterOptions<TFieldValues>;\n className?: string;\n}\n\n/**\n * FormField Component\n *\n * A wrapper component for form fields that integrates with react-hook-form.\n * Provides register, error, and validation state to children.\n *\n * @example\n * ```tsx\n * <FormField name=\"email\" label=\"Email\">\n * {({ register, error }) => (\n * <>\n * <Label htmlFor=\"email\">Email</Label>\n * <Input id=\"email\" {...register('email')} />\n * {error && <ErrorMessage>{error}</ErrorMessage>}\n * </>\n * )}\n * </FormField>\n * ```\n */\nexport function FormField<TFieldValues extends FieldValues = FieldValues>({\n name,\n label,\n children,\n rules,\n className = \"\",\n}: FormFieldProps<TFieldValues>) {\n const { form } = useFormContext<TFieldValues>();\n\n if (!form) {\n throw new Error(\n \"FormField must be used within a Form component with react-hook-form integration\",\n );\n }\n\n const {\n register,\n formState: { errors },\n watch,\n } = form;\n\n const fieldRegister = register(name, rules);\n const error = errors[name]?.message as string | undefined;\n const value = watch(name);\n\n return (\n <div\n className={cn(\n \"flex\",\n \"flex-col\",\n getSpacingClass(\"sm\", \"gap\"),\n className,\n )}\n >\n {label && (\n <Label\n htmlFor={name}\n className={cn(\n \"block\",\n getTypographySizeFromFontSize(\"sm\"),\n getTypographyWeightFromFontWeight(\"medium\"),\n \"text-fg-primary\",\n )}\n >\n {label}\n </Label>\n )}\n {children({\n name,\n register: (fieldName: Path<TFieldValues>) => register(fieldName, rules),\n error,\n value,\n onChange: fieldRegister.onChange,\n onBlur: fieldRegister.onBlur,\n })}\n {error && <ErrorMessage message={error} />}\n </div>\n );\n}\n"],"names":["FormField","name","label","children","rules","className","form","useFormContext","register","errors","watch","fieldRegister","error","_a","value","jsxs","cn","getSpacingClass","jsx","Label","getTypographySizeFromFontSize","getTypographyWeightFromFontWeight","fieldName","ErrorMessage"],"mappings":";;;;;;;;AAoDO,SAASA,EAA0D;AAAA,EACxE,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC,IAAY;AACd,GAAiC;;AAC/B,QAAM,EAAE,MAAAC,EAAA,IAASC,EAAA;AAEjB,MAAI,CAACD;AACH,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAIJ,QAAM;AAAA,IACJ,UAAAE;AAAA,IACA,WAAW,EAAE,QAAAC,EAAA;AAAA,IACb,OAAAC;AAAA,EAAA,IACEJ,GAEEK,IAAgBH,EAASP,GAAMG,CAAK,GACpCQ,KAAQC,IAAAJ,EAAOR,CAAI,MAAX,gBAAAY,EAAc,SACtBC,IAAQJ,EAAMT,CAAI;AAExB,SACE,gBAAAc;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACA;AAAA,QACAC,EAAgB,MAAM,KAAK;AAAA,QAC3BZ;AAAA,MAAA;AAAA,MAGD,UAAA;AAAA,QAAAH,KACC,gBAAAgB;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,SAASlB;AAAA,YACT,WAAWe;AAAA,cACT;AAAA,cACAI,EAA8B,IAAI;AAAA,cAClCC,EAAkC,QAAQ;AAAA,cAC1C;AAAA,YAAA;AAAA,YAGD,UAAAnB;AAAA,UAAA;AAAA,QAAA;AAAA,QAGJC,EAAS;AAAA,UACR,MAAAF;AAAA,UACA,UAAU,CAACqB,MAAkCd,EAASc,GAAWlB,CAAK;AAAA,UACtE,OAAAQ;AAAA,UACA,OAAAE;AAAA,UACA,UAAUH,EAAc;AAAA,UACxB,QAAQA,EAAc;AAAA,QAAA,CACvB;AAAA,QACAC,KAAS,gBAAAM,EAACK,GAAA,EAAa,SAASX,EAAA,CAAO;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG9C;"}
@@ -0,0 +1,17 @@
1
+ "use client";
2
+ import { jsx as t } from "react/jsx-runtime";
3
+ import { FormContextProvider as n } from "./FormContext.js";
4
+ function c({
5
+ form: o,
6
+ loading: e = !1,
7
+ children: r
8
+ }) {
9
+ return /* @__PURE__ */ t(n, { value: {
10
+ form: o,
11
+ loading: e
12
+ }, children: r });
13
+ }
14
+ export {
15
+ c as FormProvider
16
+ };
17
+ //# sourceMappingURL=FormProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormProvider.js","sources":["../../../../../src/ui/components/Form/FormProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport { FormContextProvider, type FormContextValue } from \"./FormContext\";\nimport type { ReactNode } from \"react\";\nimport type { FieldValues, UseFormReturn } from \"react-hook-form\";\n\nexport interface FormProviderProps<\n TFieldValues extends FieldValues = FieldValues,\n> {\n form?: UseFormReturn<TFieldValues>;\n loading?: boolean;\n children: ReactNode;\n}\n\n/**\n * FormProvider Component\n *\n * Provides react-hook-form context to form children.\n * Used internally by Form component when react-hook-form is integrated.\n */\nexport function FormProvider<TFieldValues extends FieldValues = FieldValues>({\n form,\n loading = false,\n children,\n}: FormProviderProps<TFieldValues>) {\n const contextValue: FormContextValue<TFieldValues> = {\n form,\n loading,\n };\n\n return (\n <FormContextProvider value={contextValue}>{children}</FormContextProvider>\n );\n}\n"],"names":["FormProvider","form","loading","children","jsx","FormContextProvider"],"mappings":";;;AAoBO,SAASA,EAA6D;AAAA,EAC3E,MAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,UAAAC;AACF,GAAoC;AAMlC,SACE,gBAAAC,EAACC,GAAA,EAAoB,OAN8B;AAAA,IACnD,MAAAJ;AAAA,IACA,SAAAC;AAAA,EAAA,GAI2C,UAAAC,EAAA,CAAS;AAExD;"}
@@ -0,0 +1,29 @@
1
+ "use client";
2
+ var u = Object.defineProperty, s = Object.defineProperties;
3
+ var c = Object.getOwnPropertyDescriptors;
4
+ var e = Object.getOwnPropertySymbols;
5
+ var F = Object.prototype.hasOwnProperty, a = Object.prototype.propertyIsEnumerable;
6
+ var n = (o, r, t) => r in o ? u(o, r, { enumerable: !0, configurable: !0, writable: !0, value: t }) : o[r] = t, i = (o, r) => {
7
+ for (var t in r || (r = {}))
8
+ F.call(r, t) && n(o, t, r[t]);
9
+ if (e)
10
+ for (var t of e(r))
11
+ a.call(r, t) && n(o, t, r[t]);
12
+ return o;
13
+ }, m = (o, r) => s(o, c(r));
14
+ import { useFormContext as f } from "./FormContext.js";
15
+ import { useFieldArray as l } from "react-hook-form";
16
+ function w(o) {
17
+ const { form: r } = f();
18
+ if (!r)
19
+ throw new Error(
20
+ "useFormFieldArray must be used within a Form component with react-hook-form integration"
21
+ );
22
+ return l(m(i({}, o), {
23
+ control: r.control
24
+ }));
25
+ }
26
+ export {
27
+ w as useFormFieldArray
28
+ };
29
+ //# sourceMappingURL=useFormFieldArray.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormFieldArray.js","sources":["../../../../../src/ui/components/Form/useFormFieldArray.ts"],"sourcesContent":["\"use client\";\n\nimport { useFormContext } from \"./FormContext\";\nimport { useFieldArray } from \"react-hook-form\";\nimport type {\n ArrayPath,\n FieldValues,\n UseFieldArrayProps,\n} from \"react-hook-form\";\n\n/**\n * Hook for managing field arrays in forms\n *\n * Wrapper around react-hook-form's useFieldArray that integrates with Form context.\n *\n * @example\n * ```tsx\n * const { fields, append, remove } = useFormFieldArray({\n * name: 'items',\n * });\n *\n * return (\n * <>\n * {fields.map((field, index) => (\n * <div key={field.id}>\n * <FormField name={`items.${index}.name`}>\n * {({ register }) => <Input {...register(`items.${index}.name`)} />}\n * </FormField>\n * <Button onClick={() => remove(index)}>Remove</Button>\n * </div>\n * ))}\n * <Button onClick={() => append({ name: '' })}>Add Item</Button>\n * </>\n * );\n * ```\n */\nexport function useFormFieldArray<\n TFieldValues extends FieldValues = FieldValues,\n TFieldArrayName extends ArrayPath<TFieldValues> = ArrayPath<TFieldValues>,\n>(props: Omit<UseFieldArrayProps<TFieldValues, TFieldArrayName>, \"control\">) {\n const { form } = useFormContext<TFieldValues>();\n\n if (!form) {\n throw new Error(\n \"useFormFieldArray must be used within a Form component with react-hook-form integration\",\n );\n }\n\n return useFieldArray<TFieldValues, TFieldArrayName>({\n ...props,\n control: form.control,\n });\n}\n"],"names":["useFormFieldArray","props","form","useFormContext","useFieldArray","__spreadProps","__spreadValues"],"mappings":";;;;;;;;;;;;;;;AAoCO,SAASA,EAGdC,GAA2E;AAC3E,QAAM,EAAE,MAAAC,EAAA,IAASC,EAAA;AAEjB,MAAI,CAACD;AACH,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAIJ,SAAOE,EAA6CC,EAAAC,EAAA,IAC/CL,IAD+C;AAAA,IAElD,SAASC,EAAK;AAAA,EAAA,EACf;AACH;"}
@@ -0,0 +1,121 @@
1
+ "use client";
2
+ var E = Object.defineProperty, F = Object.defineProperties;
3
+ var P = Object.getOwnPropertyDescriptors;
4
+ var N = Object.getOwnPropertySymbols;
5
+ var V = Object.prototype.hasOwnProperty, W = Object.prototype.propertyIsEnumerable;
6
+ var v = (t, i, e) => i in t ? E(t, i, { enumerable: !0, configurable: !0, writable: !0, value: e }) : t[i] = e, p = (t, i) => {
7
+ for (var e in i || (i = {}))
8
+ V.call(i, e) && v(t, e, i[e]);
9
+ if (N)
10
+ for (var e of N(i))
11
+ W.call(i, e) && v(t, e, i[e]);
12
+ return t;
13
+ }, f = (t, i) => F(t, P(i));
14
+ var C = (t, i, e) => new Promise((S, r) => {
15
+ var c = (n) => {
16
+ try {
17
+ l(e.next(n));
18
+ } catch (s) {
19
+ r(s);
20
+ }
21
+ }, d = (n) => {
22
+ try {
23
+ l(e.throw(n));
24
+ } catch (s) {
25
+ r(s);
26
+ }
27
+ }, l = (n) => n.done ? S(n.value) : Promise.resolve(n.value).then(c, d);
28
+ l((e = e.apply(t, i)).next());
29
+ });
30
+ import { jsx as o, jsxs as h } from "react/jsx-runtime";
31
+ import { useState as b } from "react";
32
+ import { Container as _ } from "../../layouts/Container/Container.js";
33
+ import { Stack as $ } from "../../layouts/Stack/Stack.js";
34
+ import { getRadiusClass as z } from "../../tokens/radius.js";
35
+ import { getSpacingClass as u } from "../../tokens/spacing.js";
36
+ import B from "../Stepper/Stepper.js";
37
+ import { Button as k } from "../../primitives/Button/Button.js";
38
+ function K({
39
+ steps: t,
40
+ onComplete: i,
41
+ allowBackNavigation: e = !0,
42
+ showStepNumbers: S = !0
43
+ }) {
44
+ const [r, c] = b(0), [d, l] = b({}), [n, s] = b({}), w = () => C(null, null, function* () {
45
+ const a = t[r];
46
+ if (a.validate && !(yield a.validate())) {
47
+ s(f(p({}, n), { [r]: !0 }));
48
+ return;
49
+ }
50
+ s(f(p({}, n), { [r]: !1 })), a.onSubmit && (yield a.onSubmit(d)), r < t.length - 1 ? c(r + 1) : i && i(d);
51
+ }), y = () => {
52
+ r > 0 && e && (c(r - 1), s(f(p({}, n), { [r - 1]: !1 })));
53
+ }, j = (a) => {
54
+ e && a < r && c(a);
55
+ }, m = t[r], D = r === t.length - 1, x = n[r] === !0;
56
+ return /* @__PURE__ */ o(_, { maxWidth: "lg", paddingX: "base", paddingY: "lg", children: /* @__PURE__ */ h($, { spacing: "lg", children: [
57
+ /* @__PURE__ */ o(
58
+ B,
59
+ {
60
+ steps: t.map((a, g) => ({
61
+ id: a.id,
62
+ title: a.title,
63
+ content: a.content,
64
+ description: a.description,
65
+ status: g < r ? "completed" : g === r ? x ? "error" : "active" : "pending"
66
+ })),
67
+ currentStep: r,
68
+ onStepChange: j,
69
+ allowNavigation: e
70
+ }
71
+ ),
72
+ /* @__PURE__ */ o(
73
+ "div",
74
+ {
75
+ className: `bg-surface-base ${z("lg")} border ${u("lg", "p")}`,
76
+ children: /* @__PURE__ */ h($, { spacing: "md", children: [
77
+ /* @__PURE__ */ h("div", { children: [
78
+ /* @__PURE__ */ o("h2", { className: "text-2xl font-semibold", children: m.title }),
79
+ m.description && /* @__PURE__ */ o(
80
+ "p",
81
+ {
82
+ className: `text-fg-secondary ${u("xs", "mt")}`,
83
+ children: m.description
84
+ }
85
+ )
86
+ ] }),
87
+ x && /* @__PURE__ */ o(
88
+ "div",
89
+ {
90
+ className: `bg-error-bg border border-error-border rounded ${u("md", "p")}`,
91
+ children: /* @__PURE__ */ o("p", { className: "text-sm text-fg-error", children: "Please fix the errors before proceeding." })
92
+ }
93
+ ),
94
+ /* @__PURE__ */ o("div", { className: "min-h-48", children: m.fields }),
95
+ /* @__PURE__ */ h(
96
+ "div",
97
+ {
98
+ className: `flex justify-between ${u("base", "pt")} border-t`,
99
+ children: [
100
+ /* @__PURE__ */ o(
101
+ k,
102
+ {
103
+ variant: "outline",
104
+ onClick: y,
105
+ disabled: r === 0,
106
+ children: "Back"
107
+ }
108
+ ),
109
+ /* @__PURE__ */ o(k, { variant: "primary", onClick: w, children: D ? "Complete" : "Next" })
110
+ ]
111
+ }
112
+ )
113
+ ] })
114
+ }
115
+ )
116
+ ] }) });
117
+ }
118
+ export {
119
+ K as FormWizardPattern
120
+ };
121
+ //# sourceMappingURL=FormWizardPattern.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormWizardPattern.js","sources":["../../../../../src/ui/components/FormWizardPattern/FormWizardPattern.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport { Stepper } from \"../../components\";\nimport { Container } from \"../../layouts/Container/Container\";\nimport { Stack } from \"../../layouts/Stack/Stack\";\nimport { Button } from \"../../primitives\";\nimport { getRadiusClass } from \"../../tokens/radius\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport type { StepperStep } from \"../../components\";\n\nexport interface FormWizardStep extends StepperStep {\n /**\n * Form fields for this step\n */\n fields: React.ReactNode;\n /**\n * Validation function for this step\n */\n validate?: () => boolean | Promise<boolean>;\n /**\n * Submit handler for this step\n */\n onSubmit?: (data: unknown) => void | Promise<void>;\n}\n\nexport interface FormWizardPatternProps {\n /**\n * Steps configuration\n */\n steps: FormWizardStep[];\n /**\n * Callback when wizard is completed\n */\n onComplete?: (data: Record<string, unknown>) => void;\n /**\n * Allow navigation to previous steps\n * @default true\n */\n allowBackNavigation?: boolean;\n /**\n * Show step numbers\n * @default true\n */\n showStepNumbers?: boolean;\n}\n\n/**\n * FormWizardPattern - A complete form wizard pattern combining Stepper and Form\n *\n * This pattern solves the common UX problem of multi-step forms with validation.\n * It combines Stepper for navigation and Form for data collection.\n *\n * @example\n * ```tsx\n * <FormWizardPattern\n * steps={steps}\n * onComplete={(data) => console.log(data)}\n * />\n * ```\n */\nexport function FormWizardPattern({\n steps,\n onComplete,\n allowBackNavigation = true,\n showStepNumbers: _showStepNumbers = true,\n}: FormWizardPatternProps) {\n const [currentStep, setCurrentStep] = useState(0);\n const [formData, _setFormData] = useState<Record<string, unknown>>({});\n const [errors, setErrors] = useState<Record<number, boolean>>({});\n\n const handleNext = async () => {\n const step = steps[currentStep];\n\n // Validate current step if validation function exists\n if (step.validate) {\n const isValid = await step.validate();\n if (!isValid) {\n setErrors({ ...errors, [currentStep]: true });\n return;\n }\n }\n\n // Clear error for current step\n setErrors({ ...errors, [currentStep]: false });\n\n // Submit current step if handler exists\n if (step.onSubmit) {\n await step.onSubmit(formData);\n }\n\n // Move to next step\n if (currentStep < steps.length - 1) {\n setCurrentStep(currentStep + 1);\n } else {\n // Wizard completed\n if (onComplete) {\n onComplete(formData);\n }\n }\n };\n\n const handleBack = () => {\n if (currentStep > 0 && allowBackNavigation) {\n setCurrentStep(currentStep - 1);\n // Clear error when going back\n setErrors({ ...errors, [currentStep - 1]: false });\n }\n };\n\n const handleStepClick = (stepIndex: number) => {\n if (allowBackNavigation && stepIndex < currentStep) {\n setCurrentStep(stepIndex);\n }\n };\n\n const currentStepData = steps[currentStep];\n const isLastStep = currentStep === steps.length - 1;\n const hasError = errors[currentStep] === true;\n\n return (\n <Container maxWidth=\"lg\" paddingX=\"base\" paddingY=\"lg\">\n <Stack spacing=\"lg\">\n {/* Stepper */}\n <Stepper\n steps={steps.map((step, index) => ({\n id: step.id,\n title: step.title,\n content: step.content,\n description: step.description,\n status:\n index < currentStep\n ? \"completed\"\n : index === currentStep\n ? hasError\n ? \"error\"\n : \"active\"\n : \"pending\",\n }))}\n currentStep={currentStep}\n onStepChange={handleStepClick}\n allowNavigation={allowBackNavigation}\n />\n\n {/* Form Content */}\n <div\n className={`bg-surface-base ${getRadiusClass(\"lg\")} border ${getSpacingClass(\"lg\", \"p\")}`}\n >\n <Stack spacing=\"md\">\n <div>\n <h2 className=\"text-2xl font-semibold\">\n {currentStepData.title}\n </h2>\n {currentStepData.description && (\n <p\n className={`text-fg-secondary ${getSpacingClass(\"xs\", \"mt\")}`}\n >\n {currentStepData.description}\n </p>\n )}\n </div>\n\n {hasError && (\n <div\n className={`bg-error-bg border border-error-border rounded ${getSpacingClass(\"md\", \"p\")}`}\n >\n <p className=\"text-sm text-fg-error\">\n Please fix the errors before proceeding.\n </p>\n </div>\n )}\n\n <div className=\"min-h-48\">{currentStepData.fields}</div>\n\n {/* Navigation Buttons */}\n <div\n className={`flex justify-between ${getSpacingClass(\"base\", \"pt\")} border-t`}\n >\n <Button\n variant=\"outline\"\n onClick={handleBack}\n disabled={currentStep === 0}\n >\n Back\n </Button>\n <Button variant=\"primary\" onClick={handleNext}>\n {isLastStep ? \"Complete\" : \"Next\"}\n </Button>\n </div>\n </Stack>\n </div>\n </Stack>\n </Container>\n );\n}\n"],"names":["FormWizardPattern","steps","onComplete","allowBackNavigation","_showStepNumbers","currentStep","setCurrentStep","useState","formData","_setFormData","errors","setErrors","handleNext","__async","step","__spreadProps","__spreadValues","handleBack","handleStepClick","stepIndex","currentStepData","isLastStep","hasError","jsx","Container","jsxs","Stack","Stepper","index","getRadiusClass","getSpacingClass","Button"],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ "use client";
2
+ var w = Object.defineProperty, x = Object.defineProperties;
3
+ var C = Object.getOwnPropertyDescriptors;
4
+ var n = Object.getOwnPropertySymbols;
5
+ var b = Object.prototype.hasOwnProperty, g = Object.prototype.propertyIsEnumerable;
6
+ var p = (e, r, a) => r in e ? w(e, r, { enumerable: !0, configurable: !0, writable: !0, value: a }) : e[r] = a, d = (e, r) => {
7
+ for (var a in r || (r = {}))
8
+ b.call(r, a) && p(e, a, r[a]);
9
+ if (n)
10
+ for (var a of n(r))
11
+ g.call(r, a) && p(e, a, r[a]);
12
+ return e;
13
+ }, m = (e, r) => x(e, C(r));
14
+ var v = (e, r) => {
15
+ var a = {};
16
+ for (var o in e)
17
+ b.call(e, o) && r.indexOf(o) < 0 && (a[o] = e[o]);
18
+ if (e != null && n)
19
+ for (var o of n(e))
20
+ r.indexOf(o) < 0 && g.call(e, o) && (a[o] = e[o]);
21
+ return a;
22
+ };
23
+ import { jsx as t } from "react/jsx-runtime";
24
+ import { HeaderProvider as h } from "./contexts/HeaderContext.js";
25
+ import { HeaderLogo as M } from "./components/HeaderLogo.js";
26
+ import { HeaderNavigation as N } from "./components/HeaderNavigation.js";
27
+ import { HeaderActions as j } from "./components/HeaderActions.js";
28
+ import { HeaderHamburger as k } from "./components/HeaderHamburger.js";
29
+ import { HeaderMobileMenu as y } from "./components/HeaderMobileMenu.js";
30
+ import { getShadowClass as A } from "../../tokens/shadows.js";
31
+ import { getSpacingClass as L } from "../../tokens/spacing.js";
32
+ import { getZIndexClass as S } from "../../tokens/z-index.js";
33
+ import { cn as s } from "../../utils/cn.js";
34
+ import { Container as V } from "../../layouts/Container/Container.js";
35
+ import { cva as $ } from "../../utils/cva.js";
36
+ const I = $(
37
+ // Base classes
38
+ s("w-full", "bg-surface-base", "transition-shadow", "transition-colors"),
39
+ {
40
+ variants: {
41
+ variant: {
42
+ default: "",
43
+ elevated: A("sm"),
44
+ bordered: s("border-b", "border-line-muted")
45
+ }
46
+ },
47
+ defaultVariants: {
48
+ variant: "default"
49
+ }
50
+ }
51
+ );
52
+ function i(P) {
53
+ var c = P, {
54
+ children: e,
55
+ variant: r = "default",
56
+ sticky: a = !1,
57
+ maxWidth: o = "full",
58
+ bare: H = !1,
59
+ className: l
60
+ } = c, f = v(c, [
61
+ "children",
62
+ "variant",
63
+ "sticky",
64
+ "maxWidth",
65
+ "bare",
66
+ "className"
67
+ ]);
68
+ const u = /* @__PURE__ */ t(
69
+ "div",
70
+ {
71
+ className: `flex items-center justify-between ${L("base", "gap")}`,
72
+ children: e
73
+ }
74
+ );
75
+ return H ? /* @__PURE__ */ t(h, { children: /* @__PURE__ */ t("div", m(d({ className: s(l) }, f), { children: u })) }) : /* @__PURE__ */ t(h, { children: /* @__PURE__ */ t(
76
+ "header",
77
+ m(d({
78
+ className: s(
79
+ I({ variant: r }),
80
+ a && `sticky top-0 ${S("sticky")}`,
81
+ a && "backdrop-blur-sm bg-surface-base/95",
82
+ l
83
+ )
84
+ }, f), {
85
+ children: /* @__PURE__ */ t(V, { maxWidth: o, paddingX: "base", paddingY: "sm", children: u })
86
+ })
87
+ ) });
88
+ }
89
+ i.Logo = M;
90
+ i.Navigation = N;
91
+ i.Actions = j;
92
+ i.Hamburger = k;
93
+ i.MobileMenu = y;
94
+ export {
95
+ i as Header,
96
+ i as default
97
+ };
98
+ //# sourceMappingURL=Header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Header.js","sources":["../../../../../src/ui/components/Header/Header.tsx"],"sourcesContent":["/**\n * Header Component\n *\n * Horizontal header component with logo, navigation, and actions slots.\n * Uses compound components pattern for maximum flexibility.\n *\n * @see EPIC-002: Header Component (Molecule)\n * @see RFC-003: Header Composition Pattern (APPROVED)\n * @see ADR-002: Header + SideNavbar Compatibility (ACCEPTED)\n */\n\n\"use client\";\n\nimport { HeaderProvider } from \"./contexts/HeaderContext\";\nimport { HeaderLogo } from \"./components/HeaderLogo\";\nimport { HeaderNavigation } from \"./components/HeaderNavigation\";\nimport { HeaderActions } from \"./components/HeaderActions\";\nimport { HeaderHamburger } from \"./components/HeaderHamburger\";\nimport { HeaderMobileMenu } from \"./components/HeaderMobileMenu\";\nimport { getShadowClass } from \"../../tokens/shadows\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport { getZIndexClass } from \"../../tokens/z-index\";\nimport type { HeaderProps } from \"./types\";\nimport { cn, cva } from \"../../utils\";\nimport { Container } from \"../../layouts\";\n\n/**\n * Header Variants using CVA\n * Type-safe variant system for Header component\n */\nconst headerVariants = cva(\n // Base classes\n cn(\"w-full\", \"bg-surface-base\", \"transition-shadow\", \"transition-colors\"),\n {\n variants: {\n variant: {\n default: \"\",\n elevated: getShadowClass(\"sm\"),\n bordered: cn(\"border-b\", \"border-line-muted\"),\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\n/**\n * Header Component\n *\n * Horizontal header with compound components pattern.\n *\n * @example\n * ```tsx\n * <Header>\n * <Header.Logo href=\"/\">MyApp</Header.Logo>\n * <Header.Navigation>\n * <NavLink href=\"/home\">Home</NavLink>\n * <NavLink href=\"/about\">About</NavLink>\n * </Header.Navigation>\n * <Header.Actions>\n * <Button>Sign In</Button>\n * </Header.Actions>\n * </Header>\n * ```\n */\nexport function Header({\n children,\n variant = \"default\",\n sticky = false,\n maxWidth = \"full\",\n bare = false,\n className,\n ...props\n}: HeaderProps) {\n const content = (\n <div\n className={`flex items-center justify-between ${getSpacingClass(\"base\", \"gap\")}`}\n >\n {/* Children are rendered here - compound components handle their own layout */}\n {children}\n </div>\n );\n\n // Bare mode: Just render content without header/Container wrapper\n // Useful when used inside DashboardLayout which provides the wrapper\n if (bare) {\n return (\n <HeaderProvider>\n <div className={cn(className)} {...props}>\n {content}\n </div>\n </HeaderProvider>\n );\n }\n\n // Normal mode: Create header element with Container\n return (\n <HeaderProvider>\n <header\n className={cn(\n headerVariants({ variant }),\n sticky && `sticky top-0 ${getZIndexClass(\"sticky\")}`,\n sticky && \"backdrop-blur-sm bg-surface-base/95\",\n className,\n )}\n {...props}\n >\n <Container maxWidth={maxWidth} paddingX=\"base\" paddingY=\"sm\">\n {content}\n </Container>\n </header>\n </HeaderProvider>\n );\n}\n\n// Compound Components\nHeader.Logo = HeaderLogo;\nHeader.Navigation = HeaderNavigation;\nHeader.Actions = HeaderActions;\nHeader.Hamburger = HeaderHamburger;\nHeader.MobileMenu = HeaderMobileMenu;\n\nexport default Header;\n"],"names":["headerVariants","cva","cn","getShadowClass","Header","_a","_b","children","variant","sticky","maxWidth","bare","className","props","__objRest","content","jsx","getSpacingClass","HeaderProvider","__spreadProps","__spreadValues","getZIndexClass","Container","HeaderLogo","HeaderNavigation","HeaderActions","HeaderHamburger","HeaderMobileMenu"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,MAAMA,IAAiBC;AAAA;AAAA,EAErBC,EAAG,UAAU,mBAAmB,qBAAqB,mBAAmB;AAAA,EACxE;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,UAAUC,EAAe,IAAI;AAAA,QAC7B,UAAUD,EAAG,YAAY,mBAAmB;AAAA,MAAA;AAAA,IAC9C;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ;AAqBO,SAASE,EAAOC,GAQP;AARO,MAAAC,IAAAD,GACrB;AAAA,cAAAE;AAAA,IACA,SAAAC,IAAU;AAAA,IACV,QAAAC,IAAS;AAAA,IACT,UAAAC,IAAW;AAAA,IACX,MAAAC,IAAO;AAAA,IACP,WAAAC;AAAA,MANqBN,GAOlBO,IAAAC,EAPkBR,GAOlB;AAAA,IANH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,QAAMS,IACJ,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,qCAAqCC,EAAgB,QAAQ,KAAK,CAAC;AAAA,MAG7E,UAAAV;AAAA,IAAA;AAAA,EAAA;AAML,SAAII,IAEA,gBAAAK,EAACE,GAAA,EACC,UAAA,gBAAAF,EAAC,OAAAG,EAAAC,EAAA,EAAI,WAAWlB,EAAGU,CAAS,KAAOC,IAAlC,EACE,UAAAE,EAAA,EACH,GACF,sBAMDG,GAAA,EACC,UAAA,gBAAAF;AAAA,IAAC;AAAA,IAAAG,EAAAC,EAAA;AAAA,MACC,WAAWlB;AAAA,QACTF,EAAe,EAAE,SAAAQ,GAAS;AAAA,QAC1BC,KAAU,gBAAgBY,EAAe,QAAQ,CAAC;AAAA,QAClDZ,KAAU;AAAA,QACVG;AAAA,MAAA;AAAA,OAEEC,IAPL;AAAA,MASC,4BAACS,GAAA,EAAU,UAAAZ,GAAoB,UAAS,QAAO,UAAS,MACrD,UAAAK,EAAA,CACH;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ;AAGAX,EAAO,OAAOmB;AACdnB,EAAO,aAAaoB;AACpBpB,EAAO,UAAUqB;AACjBrB,EAAO,YAAYsB;AACnBtB,EAAO,aAAauB;"}
@@ -0,0 +1,21 @@
1
+ "use client";
2
+ import { jsx as t } from "react/jsx-runtime";
3
+ import { getSpacingClass as i } from "../../../tokens/spacing.js";
4
+ import { cn as s } from "../../../utils/cn.js";
5
+ function c({ children: e, className: r }) {
6
+ return /* @__PURE__ */ t(
7
+ "div",
8
+ {
9
+ className: s(
10
+ "flex-shrink-0 flex items-center",
11
+ i("sm", "gap"),
12
+ r
13
+ ),
14
+ children: e
15
+ }
16
+ );
17
+ }
18
+ export {
19
+ c as HeaderActions
20
+ };
21
+ //# sourceMappingURL=HeaderActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeaderActions.js","sources":["../../../../../../src/ui/components/Header/components/HeaderActions.tsx"],"sourcesContent":["/**\n * HeaderActions Component\n *\n * Actions slot component for Header (typically buttons, user menu, etc.).\n *\n * @see EPIC-002: Header Component (Molecule)\n * @see RFC-003: Header Composition Pattern (APPROVED)\n */\n\n\"use client\";\n\nimport { type ReactNode } from \"react\";\nimport { cn } from \"../../../utils\";\nimport { getSpacingClass } from \"../../../tokens/spacing\";\n\nexport interface HeaderActionsProps {\n /**\n * Actions content (typically Button components)\n */\n children: ReactNode;\n\n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\n/**\n * HeaderActions Component\n *\n * Actions slot for Header. Typically contains Button components or user menu.\n *\n * @example\n * ```tsx\n * <Header.Actions>\n * <Button variant=\"outline\">Sign In</Button>\n * <Button variant=\"primary\">Sign Up</Button>\n * </Header.Actions>\n * ```\n */\nexport function HeaderActions({ children, className }: HeaderActionsProps) {\n return (\n <div\n className={cn(\n \"flex-shrink-0 flex items-center\",\n getSpacingClass(\"sm\", \"gap\"),\n className,\n )}\n >\n {children}\n </div>\n );\n}\n"],"names":["HeaderActions","children","className","jsx","cn","getSpacingClass"],"mappings":";;;;AAwCO,SAASA,EAAc,EAAE,UAAAC,GAAU,WAAAC,KAAiC;AACzE,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAC,EAAgB,MAAM,KAAK;AAAA,QAC3BH;AAAA,MAAA;AAAA,MAGD,UAAAD;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -0,0 +1,31 @@
1
+ "use client";
2
+ import { jsx as o } from "react/jsx-runtime";
3
+ import { X as l, Menu as u } from "lucide-react";
4
+ import { Button as d } from "../../../primitives/Button/Button.js";
5
+ import { useHeaderContext as p } from "../contexts/HeaderContext.js";
6
+ import { cn as f } from "../../../utils/cn.js";
7
+ function C({
8
+ className: n,
9
+ icon: r,
10
+ closeIcon: m,
11
+ variant: t = "ghost",
12
+ size: s = "md"
13
+ }) {
14
+ const { isMobileMenuOpen: e, toggleMobileMenu: a } = p(), i = r || /* @__PURE__ */ o(u, { className: "h-5 w-5" }), c = m || /* @__PURE__ */ o(l, { className: "h-5 w-5" });
15
+ return /* @__PURE__ */ o(
16
+ d,
17
+ {
18
+ variant: t,
19
+ size: s,
20
+ onClick: a,
21
+ className: f("md:hidden", n),
22
+ "aria-label": e ? "Close menu" : "Open menu",
23
+ "aria-expanded": e,
24
+ children: e ? c : i
25
+ }
26
+ );
27
+ }
28
+ export {
29
+ C as HeaderHamburger
30
+ };
31
+ //# sourceMappingURL=HeaderHamburger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeaderHamburger.js","sources":["../../../../../../src/ui/components/Header/components/HeaderHamburger.tsx"],"sourcesContent":["/**\n * HeaderHamburger Component\n *\n * Hamburger button for toggling mobile menu.\n *\n * @see EPIC-002: Header Component (Molecule)\n * @see TASK-027: Hamburger Button\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport { Menu, X } from \"lucide-react\";\nimport { Button } from \"../../../primitives/Button/Button\";\nimport { useHeaderContext } from \"../contexts/HeaderContext\";\nimport { cn } from \"../../../utils\";\n\nexport interface HeaderHamburgerProps {\n /**\n * Additional CSS classes\n */\n className?: string;\n\n /**\n * Custom icon component\n */\n icon?: React.ReactNode;\n\n /**\n * Custom close icon component\n */\n closeIcon?: React.ReactNode;\n\n /**\n * Button variant\n * @default 'ghost'\n */\n variant?: \"ghost\" | \"outline\";\n\n /**\n * Button size\n * @default 'md'\n */\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\n/**\n * HeaderHamburger Component\n *\n * Hamburger button that toggles the mobile menu.\n * Only visible on mobile devices.\n *\n * @example\n * ```tsx\n * <Header>\n * <Header.Hamburger />\n * <Header.Logo href=\"/\">MyApp</Header.Logo>\n * </Header>\n * ```\n */\nexport function HeaderHamburger({\n className,\n icon,\n closeIcon,\n variant = \"ghost\",\n size = \"md\",\n}: HeaderHamburgerProps) {\n const { isMobileMenuOpen, toggleMobileMenu } = useHeaderContext();\n\n const MenuIcon = icon || <Menu className=\"h-5 w-5\" />;\n const CloseIcon = closeIcon || <X className=\"h-5 w-5\" />;\n\n return (\n <Button\n variant={variant}\n size={size}\n onClick={toggleMobileMenu}\n className={cn(\"md:hidden\", className)}\n aria-label={isMobileMenuOpen ? \"Close menu\" : \"Open menu\"}\n aria-expanded={isMobileMenuOpen}\n >\n {isMobileMenuOpen ? CloseIcon : MenuIcon}\n </Button>\n );\n}\n"],"names":["HeaderHamburger","className","icon","closeIcon","variant","size","isMobileMenuOpen","toggleMobileMenu","useHeaderContext","MenuIcon","jsx","Menu","CloseIcon","X","Button","cn"],"mappings":";;;;;;AA4DO,SAASA,EAAgB;AAAA,EAC9B,WAAAC;AAAA,EACA,MAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,MAAAC,IAAO;AACT,GAAyB;AACvB,QAAM,EAAE,kBAAAC,GAAkB,kBAAAC,EAAA,IAAqBC,EAAA,GAEzCC,IAAWP,KAAQ,gBAAAQ,EAACC,GAAA,EAAK,WAAU,WAAU,GAC7CC,IAAYT,KAAa,gBAAAO,EAACG,GAAA,EAAE,WAAU,WAAU;AAEtD,SACE,gBAAAH;AAAA,IAACI;AAAA,IAAA;AAAA,MACC,SAAAV;AAAA,MACA,MAAAC;AAAA,MACA,SAASE;AAAA,MACT,WAAWQ,EAAG,aAAad,CAAS;AAAA,MACpC,cAAYK,IAAmB,eAAe;AAAA,MAC9C,iBAAeA;AAAA,MAEd,cAAmBM,IAAYH;AAAA,IAAA;AAAA,EAAA;AAGtC;"}
@@ -0,0 +1,50 @@
1
+ "use client";
2
+ var x = Object.defineProperty, p = Object.defineProperties;
3
+ var u = Object.getOwnPropertyDescriptors;
4
+ var o = Object.getOwnPropertySymbols;
5
+ var a = Object.prototype.hasOwnProperty, f = Object.prototype.propertyIsEnumerable;
6
+ var m = (e, r, t) => r in e ? x(e, r, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[r] = t, l = (e, r) => {
7
+ for (var t in r || (r = {}))
8
+ a.call(r, t) && m(e, t, r[t]);
9
+ if (o)
10
+ for (var t of o(r))
11
+ f.call(r, t) && m(e, t, r[t]);
12
+ return e;
13
+ }, s = (e, r) => p(e, u(r));
14
+ var c = (e, r) => {
15
+ var t = {};
16
+ for (var i in e)
17
+ a.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 && f.call(e, i) && (t[i] = e[i]);
21
+ return t;
22
+ };
23
+ import { jsx as d } from "react/jsx-runtime";
24
+ import { NavLink as h } from "../../../primitives/NavLink/NavLink.js";
25
+ import { cn as v } from "../../../utils/cn.js";
26
+ function j(N) {
27
+ var n = N, {
28
+ children: e,
29
+ className: r,
30
+ href: t
31
+ } = n, i = c(n, [
32
+ "children",
33
+ "className",
34
+ "href"
35
+ ]);
36
+ return /* @__PURE__ */ d("div", { className: "flex-shrink-0", children: /* @__PURE__ */ d(
37
+ h,
38
+ s(l({
39
+ href: t || "/",
40
+ variant: "default",
41
+ className: v("flex items-center font-semibold text-lg", r)
42
+ }, i), {
43
+ children: e
44
+ })
45
+ ) });
46
+ }
47
+ export {
48
+ j as HeaderLogo
49
+ };
50
+ //# sourceMappingURL=HeaderLogo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeaderLogo.js","sources":["../../../../../../src/ui/components/Header/components/HeaderLogo.tsx"],"sourcesContent":["/**\n * HeaderLogo Component\n *\n * Logo slot component for Header.\n *\n * @see EPIC-002: Header Component (Molecule)\n * @see RFC-003: Header Composition Pattern (APPROVED)\n */\n\n\"use client\";\n\nimport { type ReactNode } from \"react\";\nimport { cn } from \"../../../utils\";\nimport type { NavLinkProps } from \"../../../primitives/NavLink\";\nimport { NavLink } from \"../../../primitives/NavLink\";\n\nexport interface HeaderLogoProps extends Omit<NavLinkProps, \"children\"> {\n /**\n * Logo content (text, image, or component)\n */\n children: ReactNode;\n\n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\n/**\n * HeaderLogo Component\n *\n * Logo slot for Header. Renders as a NavLink by default.\n *\n * @example\n * ```tsx\n * <Header.Logo href=\"/\">MyApp</Header.Logo>\n * <Header.Logo href=\"/\">\n * <img src=\"/logo.png\" alt=\"Logo\" />\n * </Header.Logo>\n * ```\n */\nexport function HeaderLogo({\n children,\n className,\n href,\n ...props\n}: HeaderLogoProps) {\n return (\n <div className=\"flex-shrink-0\">\n <NavLink\n href={href || \"/\"}\n variant=\"default\"\n className={cn(\"flex items-center font-semibold text-lg\", className)}\n {...props}\n >\n {children}\n </NavLink>\n </div>\n );\n}\n"],"names":["HeaderLogo","_a","_b","children","className","href","props","__objRest","jsx","NavLink","__spreadProps","__spreadValues","cn"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAyCO,SAASA,EAAWC,GAKP;AALO,MAAAC,IAAAD,GACzB;AAAA,cAAAE;AAAA,IACA,WAAAC;AAAA,IACA,MAAAC;AAAA,MAHyBH,GAItBI,IAAAC,EAJsBL,GAItB;AAAA,IAHH;AAAA,IACA;AAAA,IACA;AAAA;AAGA,SACE,gBAAAM,EAAC,OAAA,EAAI,WAAU,iBACb,UAAA,gBAAAA;AAAA,IAACC;AAAA,IAAAC,EAAAC,EAAA;AAAA,MACC,MAAMN,KAAQ;AAAA,MACd,SAAQ;AAAA,MACR,WAAWO,EAAG,2CAA2CR,CAAS;AAAA,OAC9DE,IAJL;AAAA,MAME,UAAAH;AAAA,IAAA;AAAA,EAAA,GAEL;AAEJ;"}
@@ -0,0 +1,38 @@
1
+ "use client";
2
+ import { jsx as e } from "react/jsx-runtime";
3
+ import { useHeaderContext as t } from "../contexts/HeaderContext.js";
4
+ import { getSpacingClass as o } from "../../../tokens/spacing.js";
5
+ import s from "../../Drawer/Drawer.js";
6
+ import m from "../../Drawer/DrawerContent.js";
7
+ import { cn as c } from "../../../utils/cn.js";
8
+ function x({
9
+ children: r,
10
+ className: n
11
+ }) {
12
+ const { isMobileMenuOpen: i, closeMobileMenu: a } = t();
13
+ return /* @__PURE__ */ e(
14
+ s,
15
+ {
16
+ open: i,
17
+ onOpenChange: (l) => {
18
+ l || a();
19
+ },
20
+ position: "left",
21
+ size: "sm",
22
+ closeOnOverlayClick: !0,
23
+ closeOnEscape: !0,
24
+ children: /* @__PURE__ */ e(m, { className: c(o("base", "p"), n), children: /* @__PURE__ */ e(
25
+ "nav",
26
+ {
27
+ className: `flex flex-col ${o("sm", "gap")}`,
28
+ "aria-label": "Mobile navigation",
29
+ children: r
30
+ }
31
+ ) })
32
+ }
33
+ );
34
+ }
35
+ export {
36
+ x as HeaderMobileMenu
37
+ };
38
+ //# sourceMappingURL=HeaderMobileMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeaderMobileMenu.js","sources":["../../../../../../src/ui/components/Header/components/HeaderMobileMenu.tsx"],"sourcesContent":["/**\n * HeaderMobileMenu Component\n *\n * Mobile menu drawer for Header navigation.\n *\n * @see EPIC-002: Header Component (Molecule)\n * @see TASK-028: Mobile Menu (Drawer)\n */\n\n\"use client\";\n\nimport React from \"react\";\nimport { Drawer, DrawerContent } from \"../../Drawer\";\nimport { useHeaderContext } from \"../contexts/HeaderContext\";\nimport { cn } from \"../../../utils\";\nimport { getSpacingClass } from \"../../../tokens/spacing\";\n\nexport interface HeaderMobileMenuProps {\n /**\n * Menu content (typically navigation links)\n */\n children: React.ReactNode;\n\n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\n/**\n * HeaderMobileMenu Component\n *\n * Mobile menu drawer that slides in from the side.\n * Uses Drawer component from design system.\n *\n * @example\n * ```tsx\n * <Header>\n * <Header.MobileMenu>\n * <NavLink href=\"/home\">Home</NavLink>\n * <NavLink href=\"/about\">About</NavLink>\n * </Header.MobileMenu>\n * </Header>\n * ```\n */\nexport function HeaderMobileMenu({\n children,\n className,\n}: HeaderMobileMenuProps) {\n const { isMobileMenuOpen, closeMobileMenu } = useHeaderContext();\n\n return (\n <Drawer\n open={isMobileMenuOpen}\n onOpenChange={(open) => {\n if (!open) {\n closeMobileMenu();\n }\n }}\n position=\"left\"\n size=\"sm\"\n closeOnOverlayClick\n closeOnEscape\n >\n <DrawerContent className={cn(getSpacingClass(\"base\", \"p\"), className)}>\n <nav\n className={`flex flex-col ${getSpacingClass(\"sm\", \"gap\")}`}\n aria-label=\"Mobile navigation\"\n >\n {children}\n </nav>\n </DrawerContent>\n </Drawer>\n );\n}\n"],"names":["HeaderMobileMenu","children","className","isMobileMenuOpen","closeMobileMenu","useHeaderContext","jsx","Drawer","open","DrawerContent","cn","getSpacingClass"],"mappings":";;;;;;;AA6CO,SAASA,EAAiB;AAAA,EAC/B,UAAAC;AAAA,EACA,WAAAC;AACF,GAA0B;AACxB,QAAM,EAAE,kBAAAC,GAAkB,iBAAAC,EAAA,IAAoBC,EAAA;AAE9C,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAMJ;AAAA,MACN,cAAc,CAACK,MAAS;AACtB,QAAKA,KACHJ,EAAA;AAAA,MAEJ;AAAA,MACA,UAAS;AAAA,MACT,MAAK;AAAA,MACL,qBAAmB;AAAA,MACnB,eAAa;AAAA,MAEb,UAAA,gBAAAE,EAACG,KAAc,WAAWC,EAAGC,EAAgB,QAAQ,GAAG,GAAGT,CAAS,GAClE,UAAA,gBAAAI;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAW,iBAAiBK,EAAgB,MAAM,KAAK,CAAC;AAAA,UACxD,cAAW;AAAA,UAEV,UAAAV;AAAA,QAAA;AAAA,MAAA,EACH,CACF;AAAA,IAAA;AAAA,EAAA;AAGN;"}