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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) hide show
  1. package/README.md +2 -1
  2. package/dist/granular/index.js +447 -0
  3. package/dist/granular/index.js.map +1 -0
  4. package/dist/granular/ui/components/Accordion/Accordion.js +105 -0
  5. package/dist/granular/ui/components/Accordion/Accordion.js.map +1 -0
  6. package/dist/granular/ui/components/Autocomplete/Autocomplete.js +133 -0
  7. package/dist/granular/ui/components/Autocomplete/Autocomplete.js.map +1 -0
  8. package/dist/granular/ui/components/Autocomplete/AutocompleteList.js +119 -0
  9. package/dist/granular/ui/components/Autocomplete/AutocompleteList.js.map +1 -0
  10. package/dist/granular/ui/components/Autocomplete/AutocompleteOption.js +42 -0
  11. package/dist/granular/ui/components/Autocomplete/AutocompleteOption.js.map +1 -0
  12. package/dist/granular/ui/components/Breadcrumb/Breadcrumb.js +100 -0
  13. package/dist/granular/ui/components/Breadcrumb/Breadcrumb.js.map +1 -0
  14. package/dist/granular/ui/components/Card/Card.js +113 -0
  15. package/dist/granular/ui/components/Card/Card.js.map +1 -0
  16. package/dist/granular/ui/components/Card/CardActions.js +51 -0
  17. package/dist/granular/ui/components/Card/CardActions.js.map +1 -0
  18. package/dist/granular/ui/components/Card/CardBody.js +32 -0
  19. package/dist/granular/ui/components/Card/CardBody.js.map +1 -0
  20. package/dist/granular/ui/components/Card/CardHeader.js +47 -0
  21. package/dist/granular/ui/components/Card/CardHeader.js.map +1 -0
  22. package/dist/granular/ui/components/Card/CardSubtitle.js +38 -0
  23. package/dist/granular/ui/components/Card/CardSubtitle.js.map +1 -0
  24. package/dist/granular/ui/components/Card/CardTitle.js +61 -0
  25. package/dist/granular/ui/components/Card/CardTitle.js.map +1 -0
  26. package/dist/granular/ui/components/ColorPicker/ColorPicker.js +250 -0
  27. package/dist/granular/ui/components/ColorPicker/ColorPicker.js.map +1 -0
  28. package/dist/granular/ui/components/CommandPalette/CommandPalette.js +274 -0
  29. package/dist/granular/ui/components/CommandPalette/CommandPalette.js.map +1 -0
  30. package/dist/granular/ui/components/DashboardLayout/DashboardLayout.js +37 -0
  31. package/dist/granular/ui/components/DashboardLayout/DashboardLayout.js.map +1 -0
  32. package/dist/granular/ui/components/DataGrid/DataGrid.js +155 -0
  33. package/dist/granular/ui/components/DataGrid/DataGrid.js.map +1 -0
  34. package/dist/granular/ui/components/DataTablePattern/DataTablePattern.js +113 -0
  35. package/dist/granular/ui/components/DataTablePattern/DataTablePattern.js.map +1 -0
  36. package/dist/granular/ui/components/DatePicker/DatePicker.js +126 -0
  37. package/dist/granular/ui/components/DatePicker/DatePicker.js.map +1 -0
  38. package/dist/granular/ui/components/DatePicker/DatePickerCalendar.js +294 -0
  39. package/dist/granular/ui/components/DatePicker/DatePickerCalendar.js.map +1 -0
  40. package/dist/granular/ui/components/DatePicker/DatePickerContext.js +16 -0
  41. package/dist/granular/ui/components/DatePicker/DatePickerContext.js.map +1 -0
  42. package/dist/granular/ui/components/DatePicker/DatePickerInput.js +119 -0
  43. package/dist/granular/ui/components/DatePicker/DatePickerInput.js.map +1 -0
  44. package/dist/granular/ui/components/DatePicker/DatePickerProvider.js +47 -0
  45. package/dist/granular/ui/components/DatePicker/DatePickerProvider.js.map +1 -0
  46. package/dist/granular/ui/components/Dialog/AlertDialog.js +48 -0
  47. package/dist/granular/ui/components/Dialog/AlertDialog.js.map +1 -0
  48. package/dist/granular/ui/components/Dialog/Dialog.js +36 -0
  49. package/dist/granular/ui/components/Dialog/Dialog.js.map +1 -0
  50. package/dist/granular/ui/components/Dialog/DialogClose.js +34 -0
  51. package/dist/granular/ui/components/Dialog/DialogClose.js.map +1 -0
  52. package/dist/granular/ui/components/Dialog/DialogContent.js +114 -0
  53. package/dist/granular/ui/components/Dialog/DialogContent.js.map +1 -0
  54. package/dist/granular/ui/components/Dialog/DialogDescription.js +51 -0
  55. package/dist/granular/ui/components/Dialog/DialogDescription.js.map +1 -0
  56. package/dist/granular/ui/components/Dialog/DialogFooter.js +45 -0
  57. package/dist/granular/ui/components/Dialog/DialogFooter.js.map +1 -0
  58. package/dist/granular/ui/components/Dialog/DialogHeader.js +45 -0
  59. package/dist/granular/ui/components/Dialog/DialogHeader.js.map +1 -0
  60. package/dist/granular/ui/components/Dialog/DialogTitle.js +53 -0
  61. package/dist/granular/ui/components/Dialog/DialogTitle.js.map +1 -0
  62. package/dist/granular/ui/components/Dialog/DialogTrigger.js +28 -0
  63. package/dist/granular/ui/components/Dialog/DialogTrigger.js.map +1 -0
  64. package/dist/granular/ui/components/Drawer/Drawer.js +47 -0
  65. package/dist/granular/ui/components/Drawer/Drawer.js.map +1 -0
  66. package/dist/granular/ui/components/Drawer/DrawerContent.js +140 -0
  67. package/dist/granular/ui/components/Drawer/DrawerContent.js.map +1 -0
  68. package/dist/granular/ui/components/Drawer/DrawerContext.js +21 -0
  69. package/dist/granular/ui/components/Drawer/DrawerContext.js.map +1 -0
  70. package/dist/granular/ui/components/Drawer/DrawerFooter.js +53 -0
  71. package/dist/granular/ui/components/Drawer/DrawerFooter.js.map +1 -0
  72. package/dist/granular/ui/components/Drawer/DrawerHeader.js +50 -0
  73. package/dist/granular/ui/components/Drawer/DrawerHeader.js.map +1 -0
  74. package/dist/granular/ui/components/Dropdown/Dropdown.js +243 -0
  75. package/dist/granular/ui/components/Dropdown/Dropdown.js.map +1 -0
  76. package/dist/granular/ui/components/EmptyState/EmptyState.js +102 -0
  77. package/dist/granular/ui/components/EmptyState/EmptyState.js.map +1 -0
  78. package/dist/granular/ui/components/FileUpload/FileUpload.js +342 -0
  79. package/dist/granular/ui/components/FileUpload/FileUpload.js.map +1 -0
  80. package/dist/granular/ui/components/FilterChips/FilterChips.js +67 -0
  81. package/dist/granular/ui/components/FilterChips/FilterChips.js.map +1 -0
  82. package/dist/granular/ui/components/Form/Form.js +184 -0
  83. package/dist/granular/ui/components/Form/Form.js.map +1 -0
  84. package/dist/granular/ui/components/Form/FormContext.js +19 -0
  85. package/dist/granular/ui/components/Form/FormContext.js.map +1 -0
  86. package/dist/granular/ui/components/Form/FormField.js +66 -0
  87. package/dist/granular/ui/components/Form/FormField.js.map +1 -0
  88. package/dist/granular/ui/components/Form/FormProvider.js +17 -0
  89. package/dist/granular/ui/components/Form/FormProvider.js.map +1 -0
  90. package/dist/granular/ui/components/Form/useFormFieldArray.js +29 -0
  91. package/dist/granular/ui/components/Form/useFormFieldArray.js.map +1 -0
  92. package/dist/granular/ui/components/FormWizardPattern/FormWizardPattern.js +121 -0
  93. package/dist/granular/ui/components/FormWizardPattern/FormWizardPattern.js.map +1 -0
  94. package/dist/granular/ui/components/Header/Header.js +98 -0
  95. package/dist/granular/ui/components/Header/Header.js.map +1 -0
  96. package/dist/granular/ui/components/Header/components/HeaderActions.js +21 -0
  97. package/dist/granular/ui/components/Header/components/HeaderActions.js.map +1 -0
  98. package/dist/granular/ui/components/Header/components/HeaderHamburger.js +31 -0
  99. package/dist/granular/ui/components/Header/components/HeaderHamburger.js.map +1 -0
  100. package/dist/granular/ui/components/Header/components/HeaderLogo.js +50 -0
  101. package/dist/granular/ui/components/Header/components/HeaderLogo.js.map +1 -0
  102. package/dist/granular/ui/components/Header/components/HeaderMobileMenu.js +38 -0
  103. package/dist/granular/ui/components/Header/components/HeaderMobileMenu.js.map +1 -0
  104. package/dist/granular/ui/components/Header/components/HeaderNavigation.js +27 -0
  105. package/dist/granular/ui/components/Header/components/HeaderNavigation.js.map +1 -0
  106. package/dist/granular/ui/components/Header/contexts/HeaderContext.js +49 -0
  107. package/dist/granular/ui/components/Header/contexts/HeaderContext.js.map +1 -0
  108. package/dist/granular/ui/components/LoginBox/LoginBox.js +84 -0
  109. package/dist/granular/ui/components/LoginBox/LoginBox.js.map +1 -0
  110. package/dist/granular/ui/components/Menu/Menu.js +45 -0
  111. package/dist/granular/ui/components/Menu/Menu.js.map +1 -0
  112. package/dist/granular/ui/components/Menu/MenuContent.js +94 -0
  113. package/dist/granular/ui/components/Menu/MenuContent.js.map +1 -0
  114. package/dist/granular/ui/components/Menu/MenuContext.js +21 -0
  115. package/dist/granular/ui/components/Menu/MenuContext.js.map +1 -0
  116. package/dist/granular/ui/components/Menu/MenuItem.js +93 -0
  117. package/dist/granular/ui/components/Menu/MenuItem.js.map +1 -0
  118. package/dist/granular/ui/components/Menu/MenuSeparator.js +46 -0
  119. package/dist/granular/ui/components/Menu/MenuSeparator.js.map +1 -0
  120. package/dist/granular/ui/components/Menu/MenuTrigger.js +71 -0
  121. package/dist/granular/ui/components/Menu/MenuTrigger.js.map +1 -0
  122. package/dist/granular/ui/components/Modal/Modal.js +171 -0
  123. package/dist/granular/ui/components/Modal/Modal.js.map +1 -0
  124. package/dist/granular/ui/components/MultiSelect/MultiSelect.js +193 -0
  125. package/dist/granular/ui/components/MultiSelect/MultiSelect.js.map +1 -0
  126. package/dist/granular/ui/components/Navigation/Navigation.js +141 -0
  127. package/dist/granular/ui/components/Navigation/Navigation.js.map +1 -0
  128. package/dist/granular/ui/components/PageHeader/PageHeader.js +95 -0
  129. package/dist/granular/ui/components/PageHeader/PageHeader.js.map +1 -0
  130. package/dist/granular/ui/components/Pagination/Pagination.js +156 -0
  131. package/dist/granular/ui/components/Pagination/Pagination.js.map +1 -0
  132. package/dist/granular/ui/components/Popover/Popover.js +171 -0
  133. package/dist/granular/ui/components/Popover/Popover.js.map +1 -0
  134. package/dist/granular/ui/components/Rating/Rating.js +110 -0
  135. package/dist/granular/ui/components/Rating/Rating.js.map +1 -0
  136. package/dist/granular/ui/components/SearchAndFilterPattern/SearchAndFilterPattern.js +120 -0
  137. package/dist/granular/ui/components/SearchAndFilterPattern/SearchAndFilterPattern.js.map +1 -0
  138. package/dist/granular/ui/components/SearchInput/SearchInput.js +103 -0
  139. package/dist/granular/ui/components/SearchInput/SearchInput.js.map +1 -0
  140. package/dist/granular/ui/components/SideNavbar/SideNavbar.js +143 -0
  141. package/dist/granular/ui/components/SideNavbar/SideNavbar.js.map +1 -0
  142. package/dist/granular/ui/components/SideNavbar/components/Navbar/Navbar.js +173 -0
  143. package/dist/granular/ui/components/SideNavbar/components/Navbar/Navbar.js.map +1 -0
  144. package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarGroup.js +87 -0
  145. package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarGroup.js.map +1 -0
  146. package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarItem.js +242 -0
  147. package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarItem.js.map +1 -0
  148. package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarSeparator.js +66 -0
  149. package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarSeparator.js.map +1 -0
  150. package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarToggle.js +108 -0
  151. package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarToggle.js.map +1 -0
  152. package/dist/granular/ui/components/SideNavbar/components/SideNavbarBackdrop.js +63 -0
  153. package/dist/granular/ui/components/SideNavbar/components/SideNavbarBackdrop.js.map +1 -0
  154. package/dist/granular/ui/components/SideNavbar/components/SideNavbarResizeHandle.js +113 -0
  155. package/dist/granular/ui/components/SideNavbar/components/SideNavbarResizeHandle.js.map +1 -0
  156. package/dist/granular/ui/components/SideNavbar/components/SideNavbarRoot.js +150 -0
  157. package/dist/granular/ui/components/SideNavbar/components/SideNavbarRoot.js.map +1 -0
  158. package/dist/granular/ui/components/SideNavbar/components/SideNavbarToggle.js +197 -0
  159. package/dist/granular/ui/components/SideNavbar/components/SideNavbarToggle.js.map +1 -0
  160. package/dist/granular/ui/components/SideNavbar/components/Sidebar/Sidebar.js +108 -0
  161. package/dist/granular/ui/components/SideNavbar/components/Sidebar/Sidebar.js.map +1 -0
  162. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarContent.js +71 -0
  163. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarContent.js.map +1 -0
  164. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarFooter.js +64 -0
  165. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarFooter.js.map +1 -0
  166. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarGroup.js +141 -0
  167. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarGroup.js.map +1 -0
  168. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarHeader.js +90 -0
  169. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarHeader.js.map +1 -0
  170. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarSlot.js +12 -0
  171. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarSlot.js.map +1 -0
  172. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarSlotContent.js +13 -0
  173. package/dist/granular/ui/components/SideNavbar/components/Sidebar/SidebarSlotContent.js.map +1 -0
  174. package/dist/granular/ui/components/SideNavbar/contexts/NavbarContext.js +20 -0
  175. package/dist/granular/ui/components/SideNavbar/contexts/NavbarContext.js.map +1 -0
  176. package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarConfigContext.js +37 -0
  177. package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarConfigContext.js.map +1 -0
  178. package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarStateContext.js +20 -0
  179. package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarStateContext.js.map +1 -0
  180. package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarThemeContext.js +28 -0
  181. package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarThemeContext.js.map +1 -0
  182. package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarToggleContext.js +19 -0
  183. package/dist/granular/ui/components/SideNavbar/contexts/SideNavbarToggleContext.js.map +1 -0
  184. package/dist/granular/ui/components/SideNavbar/contexts/SidebarContext.js +20 -0
  185. package/dist/granular/ui/components/SideNavbar/contexts/SidebarContext.js.map +1 -0
  186. package/dist/granular/ui/components/SideNavbar/contexts/SidebarSlotContext.js +22 -0
  187. package/dist/granular/ui/components/SideNavbar/contexts/SidebarSlotContext.js.map +1 -0
  188. package/dist/granular/ui/components/SideNavbar/hooks/useFocusManagement.js +43 -0
  189. package/dist/granular/ui/components/SideNavbar/hooks/useFocusManagement.js.map +1 -0
  190. package/dist/granular/ui/components/SideNavbar/hooks/useGroupState.js +59 -0
  191. package/dist/granular/ui/components/SideNavbar/hooks/useGroupState.js.map +1 -0
  192. package/dist/granular/ui/components/SideNavbar/hooks/useKeyboardShortcut.js +34 -0
  193. package/dist/granular/ui/components/SideNavbar/hooks/useKeyboardShortcut.js.map +1 -0
  194. package/dist/granular/ui/components/SideNavbar/hooks/useResize.js +58 -0
  195. package/dist/granular/ui/components/SideNavbar/hooks/useResize.js.map +1 -0
  196. package/dist/granular/ui/components/SideNavbar/hooks/useResponsiveSidebar.js +35 -0
  197. package/dist/granular/ui/components/SideNavbar/hooks/useResponsiveSidebar.js.map +1 -0
  198. package/dist/granular/ui/components/SideNavbar/hooks/useSideNavbar.js +21 -0
  199. package/dist/granular/ui/components/SideNavbar/hooks/useSideNavbar.js.map +1 -0
  200. package/dist/granular/ui/components/SideNavbar/hooks/useSideNavbarContent.js +19 -0
  201. package/dist/granular/ui/components/SideNavbar/hooks/useSideNavbarContent.js.map +1 -0
  202. package/dist/granular/ui/components/SideNavbar/hooks/useSideNavbarNavigation.js +21 -0
  203. package/dist/granular/ui/components/SideNavbar/hooks/useSideNavbarNavigation.js.map +1 -0
  204. package/dist/granular/ui/components/SideNavbar/providers/SideNavbarConfigProvider.js +61 -0
  205. package/dist/granular/ui/components/SideNavbar/providers/SideNavbarConfigProvider.js.map +1 -0
  206. package/dist/granular/ui/components/SideNavbar/providers/SideNavbarProvider.js +82 -0
  207. package/dist/granular/ui/components/SideNavbar/providers/SideNavbarProvider.js.map +1 -0
  208. package/dist/granular/ui/components/SideNavbar/providers/SideNavbarStateProvider.js +165 -0
  209. package/dist/granular/ui/components/SideNavbar/providers/SideNavbarStateProvider.js.map +1 -0
  210. package/dist/granular/ui/components/SideNavbar/providers/SideNavbarThemeProvider.js +34 -0
  211. package/dist/granular/ui/components/SideNavbar/providers/SideNavbarThemeProvider.js.map +1 -0
  212. package/dist/granular/ui/components/SideNavbar/providers/SidebarSlotProvider.js +28 -0
  213. package/dist/granular/ui/components/SideNavbar/providers/SidebarSlotProvider.js.map +1 -0
  214. package/dist/granular/ui/components/SideNavbar/utils/parseKeyboardShortcut.js +60 -0
  215. package/dist/granular/ui/components/SideNavbar/utils/parseKeyboardShortcut.js.map +1 -0
  216. package/dist/granular/ui/components/SideNavbar/utils/parseWidth.js +19 -0
  217. package/dist/granular/ui/components/SideNavbar/utils/parseWidth.js.map +1 -0
  218. package/dist/granular/ui/components/Stat/Stat.js +84 -0
  219. package/dist/granular/ui/components/Stat/Stat.js.map +1 -0
  220. package/dist/granular/ui/components/Stat/StatGroup.js +61 -0
  221. package/dist/granular/ui/components/Stat/StatGroup.js.map +1 -0
  222. package/dist/granular/ui/components/Stepper/Stepper.js +248 -0
  223. package/dist/granular/ui/components/Stepper/Stepper.js.map +1 -0
  224. package/dist/granular/ui/components/Table/Table.js +162 -0
  225. package/dist/granular/ui/components/Table/Table.js.map +1 -0
  226. package/dist/granular/ui/components/Table/TableActions/TableActions.js +67 -0
  227. package/dist/granular/ui/components/Table/TableActions/TableActions.js.map +1 -0
  228. package/dist/granular/ui/components/Table/TableActions.js +44 -0
  229. package/dist/granular/ui/components/Table/TableActions.js.map +1 -0
  230. package/dist/granular/ui/components/Table/TableBody.js +134 -0
  231. package/dist/granular/ui/components/Table/TableBody.js.map +1 -0
  232. package/dist/granular/ui/components/Table/TableCell.js +40 -0
  233. package/dist/granular/ui/components/Table/TableCell.js.map +1 -0
  234. package/dist/granular/ui/components/Table/TableContext.js +19 -0
  235. package/dist/granular/ui/components/Table/TableContext.js.map +1 -0
  236. package/dist/granular/ui/components/Table/TableEmptyState.js +62 -0
  237. package/dist/granular/ui/components/Table/TableEmptyState.js.map +1 -0
  238. package/dist/granular/ui/components/Table/TableFilters/TableFilters.js +189 -0
  239. package/dist/granular/ui/components/Table/TableFilters/TableFilters.js.map +1 -0
  240. package/dist/granular/ui/components/Table/TableFilters.js +48 -0
  241. package/dist/granular/ui/components/Table/TableFilters.js.map +1 -0
  242. package/dist/granular/ui/components/Table/TableHeader.js +45 -0
  243. package/dist/granular/ui/components/Table/TableHeader.js.map +1 -0
  244. package/dist/granular/ui/components/Table/TableHeaderCell.js +117 -0
  245. package/dist/granular/ui/components/Table/TableHeaderCell.js.map +1 -0
  246. package/dist/granular/ui/components/Table/TableHeaderRow.js +89 -0
  247. package/dist/granular/ui/components/Table/TableHeaderRow.js.map +1 -0
  248. package/dist/granular/ui/components/Table/TablePagination/TablePagination.js +216 -0
  249. package/dist/granular/ui/components/Table/TablePagination/TablePagination.js.map +1 -0
  250. package/dist/granular/ui/components/Table/TablePagination.js +56 -0
  251. package/dist/granular/ui/components/Table/TablePagination.js.map +1 -0
  252. package/dist/granular/ui/components/Table/TableProvider.js +244 -0
  253. package/dist/granular/ui/components/Table/TableProvider.js.map +1 -0
  254. package/dist/granular/ui/components/Table/TableRow.js +95 -0
  255. package/dist/granular/ui/components/Table/TableRow.js.map +1 -0
  256. package/dist/granular/ui/components/Table/useColumnResizing.js +71 -0
  257. package/dist/granular/ui/components/Table/useColumnResizing.js.map +1 -0
  258. package/dist/granular/ui/components/Table/useVirtualScrolling.js +50 -0
  259. package/dist/granular/ui/components/Table/useVirtualScrolling.js.map +1 -0
  260. package/dist/granular/ui/components/Tabs/Tabs.js +39 -0
  261. package/dist/granular/ui/components/Tabs/Tabs.js.map +1 -0
  262. package/dist/granular/ui/components/Tabs/TabsContent.js +59 -0
  263. package/dist/granular/ui/components/Tabs/TabsContent.js.map +1 -0
  264. package/dist/granular/ui/components/Tabs/TabsContext.js +18 -0
  265. package/dist/granular/ui/components/Tabs/TabsContext.js.map +1 -0
  266. package/dist/granular/ui/components/Tabs/TabsList.js +84 -0
  267. package/dist/granular/ui/components/Tabs/TabsList.js.map +1 -0
  268. package/dist/granular/ui/components/Tabs/TabsProvider.js +31 -0
  269. package/dist/granular/ui/components/Tabs/TabsProvider.js.map +1 -0
  270. package/dist/granular/ui/components/Tabs/TabsTrigger.js +103 -0
  271. package/dist/granular/ui/components/Tabs/TabsTrigger.js.map +1 -0
  272. package/dist/granular/ui/components/TimePicker/TimePicker.js +216 -0
  273. package/dist/granular/ui/components/TimePicker/TimePicker.js.map +1 -0
  274. package/dist/granular/ui/components/Timeline/Timeline.js +152 -0
  275. package/dist/granular/ui/components/Timeline/Timeline.js.map +1 -0
  276. package/dist/granular/ui/components/Toast/Toast.js +159 -0
  277. package/dist/granular/ui/components/Toast/Toast.js.map +1 -0
  278. package/dist/granular/ui/components/Toast/ToastContainer.js +41 -0
  279. package/dist/granular/ui/components/Toast/ToastContainer.js.map +1 -0
  280. package/dist/granular/ui/components/Toast/useToast.js +64 -0
  281. package/dist/granular/ui/components/Toast/useToast.js.map +1 -0
  282. package/dist/granular/ui/hooks/createGenericContext.js +27 -0
  283. package/dist/granular/ui/hooks/createGenericContext.js.map +1 -0
  284. package/dist/granular/ui/hooks/focusable.js +14 -0
  285. package/dist/granular/ui/hooks/focusable.js.map +1 -0
  286. package/dist/granular/ui/hooks/useAutoFocus.js +23 -0
  287. package/dist/granular/ui/hooks/useAutoFocus.js.map +1 -0
  288. package/dist/granular/ui/hooks/useCollapsible.js +37 -0
  289. package/dist/granular/ui/hooks/useCollapsible.js.map +1 -0
  290. package/dist/granular/ui/hooks/useFocusRestore.js +20 -0
  291. package/dist/granular/ui/hooks/useFocusRestore.js.map +1 -0
  292. package/dist/granular/ui/hooks/useFocusTrap.js +31 -0
  293. package/dist/granular/ui/hooks/useFocusTrap.js.map +1 -0
  294. package/dist/granular/ui/hooks/useScrollSpy.js +23 -0
  295. package/dist/granular/ui/hooks/useScrollSpy.js.map +1 -0
  296. package/dist/granular/ui/layouts/Container/Container.js +73 -0
  297. package/dist/granular/ui/layouts/Container/Container.js.map +1 -0
  298. package/dist/granular/ui/layouts/Stack/Stack.js +79 -0
  299. package/dist/granular/ui/layouts/Stack/Stack.js.map +1 -0
  300. package/dist/granular/ui/primitives/Avatar/Avatar.js +122 -0
  301. package/dist/granular/ui/primitives/Avatar/Avatar.js.map +1 -0
  302. package/dist/granular/ui/primitives/Avatar/AvatarGroup.js +97 -0
  303. package/dist/granular/ui/primitives/Avatar/AvatarGroup.js.map +1 -0
  304. package/dist/granular/ui/primitives/Badge/Badge.js +212 -0
  305. package/dist/granular/ui/primitives/Badge/Badge.js.map +1 -0
  306. package/dist/granular/ui/primitives/Button/Button.js +288 -0
  307. package/dist/granular/ui/primitives/Button/Button.js.map +1 -0
  308. package/dist/granular/ui/primitives/Checkbox/Checkbox.js +129 -0
  309. package/dist/granular/ui/primitives/Checkbox/Checkbox.js.map +1 -0
  310. package/dist/granular/ui/primitives/Chip/Chip.js +206 -0
  311. package/dist/granular/ui/primitives/Chip/Chip.js.map +1 -0
  312. package/dist/granular/ui/primitives/Collapsible/Collapsible.js +115 -0
  313. package/dist/granular/ui/primitives/Collapsible/Collapsible.js.map +1 -0
  314. package/dist/granular/ui/primitives/ErrorMessage/ErrorMessage.js +54 -0
  315. package/dist/granular/ui/primitives/ErrorMessage/ErrorMessage.js.map +1 -0
  316. package/dist/granular/ui/primitives/Info/Info.js +57 -0
  317. package/dist/granular/ui/primitives/Info/Info.js.map +1 -0
  318. package/dist/granular/ui/primitives/Input/Input.js +351 -0
  319. package/dist/granular/ui/primitives/Input/Input.js.map +1 -0
  320. package/dist/granular/ui/primitives/Label/Label.js +61 -0
  321. package/dist/granular/ui/primitives/Label/Label.js.map +1 -0
  322. package/dist/granular/ui/primitives/NavLink/NavLink.js +229 -0
  323. package/dist/granular/ui/primitives/NavLink/NavLink.js.map +1 -0
  324. package/dist/granular/ui/primitives/NavLink/hooks/useNavLink.js +15 -0
  325. package/dist/granular/ui/primitives/NavLink/hooks/useNavLink.js.map +1 -0
  326. package/dist/granular/ui/primitives/Progress/Progress.js +182 -0
  327. package/dist/granular/ui/primitives/Progress/Progress.js.map +1 -0
  328. package/dist/granular/ui/primitives/Radio/Radio.js +118 -0
  329. package/dist/granular/ui/primitives/Radio/Radio.js.map +1 -0
  330. package/dist/granular/ui/primitives/Select/Select.js +210 -0
  331. package/dist/granular/ui/primitives/Select/Select.js.map +1 -0
  332. package/dist/granular/ui/primitives/Separator/Separator.js +69 -0
  333. package/dist/granular/ui/primitives/Separator/Separator.js.map +1 -0
  334. package/dist/granular/ui/primitives/Skeleton/Skeleton.js +87 -0
  335. package/dist/granular/ui/primitives/Skeleton/Skeleton.js.map +1 -0
  336. package/dist/granular/ui/primitives/Slider/Slider.js +291 -0
  337. package/dist/granular/ui/primitives/Slider/Slider.js.map +1 -0
  338. package/dist/granular/ui/primitives/Spinner/Spinner.js +95 -0
  339. package/dist/granular/ui/primitives/Spinner/Spinner.js.map +1 -0
  340. package/dist/granular/ui/primitives/Switch/Switch.js +212 -0
  341. package/dist/granular/ui/primitives/Switch/Switch.js.map +1 -0
  342. package/dist/granular/ui/primitives/Text/Text.js +118 -0
  343. package/dist/granular/ui/primitives/Text/Text.js.map +1 -0
  344. package/dist/granular/ui/primitives/Textarea/Textarea.js +129 -0
  345. package/dist/granular/ui/primitives/Textarea/Textarea.js.map +1 -0
  346. package/dist/granular/ui/primitives/Tooltip/Tooltip.js +227 -0
  347. package/dist/granular/ui/primitives/Tooltip/Tooltip.js.map +1 -0
  348. package/dist/granular/ui/providers/AppProvider.js +50 -0
  349. package/dist/granular/ui/providers/AppProvider.js.map +1 -0
  350. package/dist/granular/ui/providers/ConfigProvider.js +95 -0
  351. package/dist/granular/ui/providers/ConfigProvider.js.map +1 -0
  352. package/dist/granular/ui/providers/DialogContext.js +20 -0
  353. package/dist/granular/ui/providers/DialogContext.js.map +1 -0
  354. package/dist/granular/ui/providers/DialogProvider.js +32 -0
  355. package/dist/granular/ui/providers/DialogProvider.js.map +1 -0
  356. package/dist/granular/ui/providers/ThemeProvider.js +56 -0
  357. package/dist/granular/ui/providers/ThemeProvider.js.map +1 -0
  358. package/dist/granular/ui/providers/ToastContext.js +20 -0
  359. package/dist/granular/ui/providers/ToastContext.js.map +1 -0
  360. package/dist/granular/ui/providers/ToastProvider.js +47 -0
  361. package/dist/granular/ui/providers/ToastProvider.js.map +1 -0
  362. package/dist/granular/ui/providers/providers-bundle.js +23 -0
  363. package/dist/granular/ui/providers/providers-bundle.js.map +1 -0
  364. package/dist/granular/ui/tokens/animations.js +106 -0
  365. package/dist/granular/ui/tokens/animations.js.map +1 -0
  366. package/dist/granular/ui/tokens/borders.js +54 -0
  367. package/dist/granular/ui/tokens/borders.js.map +1 -0
  368. package/dist/granular/ui/tokens/breakpoints.js +43 -0
  369. package/dist/granular/ui/tokens/breakpoints.js.map +1 -0
  370. package/dist/granular/ui/tokens/colors/brand.js +67 -0
  371. package/dist/granular/ui/tokens/colors/brand.js.map +1 -0
  372. package/dist/granular/ui/tokens/colors/index.js +25 -0
  373. package/dist/granular/ui/tokens/colors/index.js.map +1 -0
  374. package/dist/granular/ui/tokens/colors/primitives.js +320 -0
  375. package/dist/granular/ui/tokens/colors/primitives.js.map +1 -0
  376. package/dist/granular/ui/tokens/colors/semantic.js +212 -0
  377. package/dist/granular/ui/tokens/colors/semantic.js.map +1 -0
  378. package/dist/granular/ui/tokens/colors/types.js +18 -0
  379. package/dist/granular/ui/tokens/colors/types.js.map +1 -0
  380. package/dist/granular/ui/tokens/colors/utils.js +131 -0
  381. package/dist/granular/ui/tokens/colors/utils.js.map +1 -0
  382. package/dist/granular/ui/tokens/opacity.js +59 -0
  383. package/dist/granular/ui/tokens/opacity.js.map +1 -0
  384. package/dist/granular/ui/tokens/radius.js +76 -0
  385. package/dist/granular/ui/tokens/radius.js.map +1 -0
  386. package/dist/granular/ui/tokens/shadows.js +63 -0
  387. package/dist/granular/ui/tokens/shadows.js.map +1 -0
  388. package/dist/granular/ui/tokens/sidebar.js +92 -0
  389. package/dist/granular/ui/tokens/sidebar.js.map +1 -0
  390. package/dist/granular/ui/tokens/spacing.js +143 -0
  391. package/dist/granular/ui/tokens/spacing.js.map +1 -0
  392. package/dist/granular/ui/tokens/switch.js +51 -0
  393. package/dist/granular/ui/tokens/switch.js.map +1 -0
  394. package/dist/granular/ui/tokens/typography.js +146 -0
  395. package/dist/granular/ui/tokens/typography.js.map +1 -0
  396. package/dist/granular/ui/tokens/z-index.js +79 -0
  397. package/dist/granular/ui/tokens/z-index.js.map +1 -0
  398. package/dist/granular/ui/utils/cn.js +10 -0
  399. package/dist/granular/ui/utils/cn.js.map +1 -0
  400. package/dist/granular/ui/utils/cva.js +14 -0
  401. package/dist/granular/ui/utils/cva.js.map +1 -0
  402. package/dist/granular/ui/utils/mergeRefs.js +11 -0
  403. package/dist/granular/ui/utils/mergeRefs.js.map +1 -0
  404. package/dist/granular/vite.svg +1 -0
  405. package/dist/index.cjs +46 -46
  406. package/dist/index.cjs.map +1 -1
  407. package/dist/index.js +1172 -1135
  408. package/dist/index.js.map +1 -1
  409. package/dist/react-design-system.css +1 -1
  410. package/dist/server/index.cjs +23 -23
  411. package/dist/server/index.cjs.map +1 -1
  412. package/dist/server/index.js +882 -1179
  413. package/dist/server/index.js.map +1 -1
  414. package/dist/ui/components/FilterChips/FilterChips.d.ts +83 -0
  415. package/dist/ui/components/FilterChips/index.d.ts +2 -0
  416. package/dist/ui/components/index.d.ts +2 -0
  417. package/dist/ui/server.d.ts +2 -0
  418. package/package.json +9 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppProvider.js","sources":["../../../../src/ui/providers/AppProvider.tsx"],"sourcesContent":["\"use client\";\n\n/* eslint-disable react-refresh/only-export-components */\nimport { type ReactNode, useMemo } from \"react\";\n\n/**\n * STRUCTURAL SOLUTION: Module Boundary Isolation with Explicit Initialization\n *\n * This solution ensures providers are initialized in the correct order by:\n * 1. Using a single atomic function that references all providers\n * 2. Ensuring all providers are in the same module boundary (no code splitting)\n * 3. Using explicit initialization order that cannot be broken by bundler\n *\n * The key: All provider references are in a single function execution context,\n * creating a module boundary that the bundler cannot break.\n */\n\n/**\n * TURBOPACK COMPATIBILITY: Import all providers from a single bundle\n *\n * By importing all providers from providers-bundle.ts, we ensure they're\n * all in the same module boundary. This prevents Turbopack from code-splitting\n * them incorrectly, which causes initialization order issues.\n */\nimport {\n ProvidersBundle,\n type ThemeProviderProps,\n type ConfigProviderProps,\n type ToastProviderProps,\n type DialogProviderProps,\n} from \"./providers-bundle\";\n\n/**\n * Provider Initialization Guard\n *\n * Use ProvidersBundle to ensure all providers are in the same module boundary.\n * This prevents Turbopack from code-splitting providers incorrectly.\n */\nconst PROVIDER_INITIALIZATION_GUARD = ProvidersBundle;\n\n/**\n * AppProvider Configuration\n */\nexport interface AppProviderConfig {\n theme?: Omit<ThemeProviderProps, \"children\">;\n config?: Omit<ConfigProviderProps, \"children\">;\n toast?: Omit<ToastProviderProps, \"children\">;\n dialog?: Omit<DialogProviderProps, \"children\">;\n providers?: {\n theme?: boolean;\n config?: boolean;\n toast?: boolean;\n dialog?: boolean;\n };\n}\n\nexport interface AppProviderProps {\n children: ReactNode;\n config?: AppProviderConfig;\n}\n\n/**\n * Create provider stack with guaranteed initialization order\n *\n * This function uses the PROVIDER_INITIALIZATION_GUARD to ensure\n * all providers are initialized in the correct order. The guard object\n * creates a module boundary that prevents code splitting.\n */\nfunction createProviderStack(\n children: ReactNode,\n config: AppProviderConfig | undefined,\n): ReactNode {\n const {\n theme: themeConfig,\n config: configConfig,\n toast: toastConfig,\n dialog: dialogConfig,\n providers = {\n theme: true,\n config: true,\n toast: true,\n dialog: true,\n },\n } = config || {};\n\n // CRITICAL: Use providers from the guard object\n // This ensures they're all in the same module boundary\n // The bundler cannot code-split or reorder code within this function\n\n let content: ReactNode = children;\n\n // Step 1: DialogProvider (most specific, wraps content)\n if (providers.dialog) {\n content = (\n <PROVIDER_INITIALIZATION_GUARD.DialogProvider {...dialogConfig}>\n {content}\n </PROVIDER_INITIALIZATION_GUARD.DialogProvider>\n );\n }\n\n // Step 2: ToastProvider (component-level, wraps content)\n if (providers.toast) {\n content = (\n <PROVIDER_INITIALIZATION_GUARD.ToastProvider {...toastConfig}>\n {content}\n </PROVIDER_INITIALIZATION_GUARD.ToastProvider>\n );\n }\n\n // Step 3: ConfigProvider (design system config, wraps content)\n if (providers.config) {\n content = (\n <PROVIDER_INITIALIZATION_GUARD.ConfigProvider {...configConfig}>\n {content}\n </PROVIDER_INITIALIZATION_GUARD.ConfigProvider>\n );\n }\n\n // Step 4: ThemeProvider (foundation, wraps everything) - MUST BE LAST\n if (providers.theme) {\n content = (\n <PROVIDER_INITIALIZATION_GUARD.ThemeProvider {...themeConfig}>\n {content}\n </PROVIDER_INITIALIZATION_GUARD.ThemeProvider>\n );\n }\n\n return content;\n}\n\n/**\n * AppProvider Component\n *\n * Root provider that composes all global providers of the design system.\n * Uses module boundary isolation to ensure correct initialization order.\n *\n * Provider Hierarchy:\n * ```\n * AppProvider (Root)\n * ├── ThemeProvider (Design System Theme) - Foundation\n * ├── ConfigProvider (Design System Config)\n * └── ComponentProviders (optional, per feature)\n * ├── ToastProvider\n * └── DialogProvider\n * ```\n *\n * @example\n * ```tsx\n * <AppProvider>\n * <App />\n * </AppProvider>\n * ```\n *\n * @example With custom configuration\n * ```tsx\n * <AppProvider config={{\n * theme: { defaultTheme: 'dark' },\n * config: { config: { features: { debug: true } } },\n * toast: { maxToasts: 10 }\n * }}>\n * <App />\n * </AppProvider>\n * ```\n */\nexport function AppProvider({ children, config }: AppProviderProps) {\n // Use useMemo to ensure provider stack is created once\n // This prevents React from re-evaluating and ensures stable reference\n const providerStack = useMemo(\n () => createProviderStack(children, config),\n [children, config],\n );\n\n return <>{providerStack}</>;\n}\n\n/**\n * Hook to access AppProvider context\n *\n * This is a convenience hook that provides access to all provider contexts.\n * Individual hooks (useTheme, useConfig, etc.) should be used for specific contexts.\n */\nexport function useApp() {\n // This hook can be extended in the future to provide unified access\n // For now, use individual hooks: useTheme(), useConfig(), etc.\n return {\n // Placeholder for future unified API\n };\n}\n"],"names":["PROVIDER_INITIALIZATION_GUARD","ProvidersBundle","createProviderStack","children","config","themeConfig","configConfig","toastConfig","dialogConfig","providers","content","__spreadProps","__spreadValues","AppProvider","providerStack","useMemo","useApp"],"mappings":";;;;;;;;;;;;;;;;AAsCA,MAAMA,IAAgCC;AA8BtC,SAASC,EACPC,GACAC,GACW;AACX,QAAM;AAAA,IACJ,OAAOC;AAAA,IACP,QAAQC;AAAA,IACR,OAAOC;AAAA,IACP,QAAQC;AAAA,IACR,WAAAC,IAAY;AAAA,MACV,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,QAAQ;AAAA,IAAA;AAAA,EACV,IACEL,KAAU,CAAA;AAMd,MAAIM,IAAqBP;AAGzB,SAAIM,EAAU,WACZC,sBACGV,EAA8B,gBAA9BW,EAAAC,EAAA,IAAiDJ,IAAjD,EACE,UAAAE,IACH,IAKAD,EAAU,UACZC,sBACGV,EAA8B,eAA9BW,EAAAC,EAAA,IAAgDL,IAAhD,EACE,UAAAG,IACH,IAKAD,EAAU,WACZC,sBACGV,EAA8B,gBAA9BW,EAAAC,EAAA,IAAiDN,IAAjD,EACE,UAAAI,IACH,IAKAD,EAAU,UACZC,sBACGV,EAA8B,eAA9BW,EAAAC,EAAA,IAAgDP,IAAhD,EACE,UAAAK,IACH,IAIGA;AACT;AAoCO,SAASG,EAAY,EAAE,UAAAV,GAAU,QAAAC,KAA4B;AAGlE,QAAMU,IAAgBC;AAAA,IACpB,MAAMb,EAAoBC,GAAUC,CAAM;AAAA,IAC1C,CAACD,GAAUC,CAAM;AAAA,EAAA;AAGnB,gCAAU,UAAAU,EAAA,CAAc;AAC1B;AAQO,SAASE,IAAS;AAGvB,SAAO;AAAA;AAAA,EAAA;AAGT;"}
@@ -0,0 +1,95 @@
1
+ "use client";
2
+ var y = Object.defineProperty, v = Object.defineProperties;
3
+ var E = Object.getOwnPropertyDescriptors;
4
+ var u = Object.getOwnPropertySymbols;
5
+ var C = Object.prototype.hasOwnProperty, P = Object.prototype.propertyIsEnumerable;
6
+ var f = (n, e, r) => e in n ? y(n, e, { enumerable: !0, configurable: !0, writable: !0, value: r }) : n[e] = r, i = (n, e) => {
7
+ for (var r in e || (e = {}))
8
+ C.call(e, r) && f(n, r, e[r]);
9
+ if (u)
10
+ for (var r of u(e))
11
+ P.call(e, r) && f(n, r, e[r]);
12
+ return n;
13
+ }, d = (n, e) => v(n, E(e));
14
+ import { jsx as N } from "react/jsx-runtime";
15
+ import { useMemo as a, useEffect as c, useContext as T, createContext as k } from "react";
16
+ import { SPACING_TOKENS as O } from "../tokens/spacing.js";
17
+ import { TYPOGRAPHY_TOKENS as x } from "../tokens/typography.js";
18
+ import { BREAKPOINT_TOKENS as A } from "../tokens/breakpoints.js";
19
+ import { ANIMATION_TOKENS as S } from "../tokens/animations.js";
20
+ const _ = {
21
+ breakpoints: A,
22
+ spacing: O,
23
+ typography: x,
24
+ animations: S,
25
+ features: {
26
+ reducedMotion: !1,
27
+ highContrast: !1,
28
+ debug: !1
29
+ },
30
+ behavior: {
31
+ defaultAnimationDuration: 200,
32
+ defaultTransitionDuration: 150,
33
+ focusVisible: !0
34
+ }
35
+ }, p = k(void 0);
36
+ function L({
37
+ children: n,
38
+ config: e,
39
+ strategy: r = "default"
40
+ }) {
41
+ const o = a(() => {
42
+ const t = i({}, _);
43
+ return e ? d(i(i({}, t), e), {
44
+ breakpoints: e.breakpoints || t.breakpoints,
45
+ spacing: e.spacing || t.spacing,
46
+ typography: e.typography || t.typography,
47
+ animations: e.animations || t.animations,
48
+ features: i(i({}, t.features), e.features),
49
+ behavior: i(i({}, t.behavior), e.behavior)
50
+ }) : t;
51
+ }, [e]);
52
+ c(() => {
53
+ typeof document != "undefined" && (o.features.reducedMotion ? document.documentElement.style.setProperty("--motion-reduce", "1") : document.documentElement.style.removeProperty("--motion-reduce"));
54
+ }, [o.features.reducedMotion]), c(() => {
55
+ typeof document != "undefined" && (o.features.highContrast ? document.documentElement.classList.add("high-contrast") : document.documentElement.classList.remove("high-contrast"));
56
+ }, [o.features.highContrast]);
57
+ const m = a(
58
+ () => (t) => o.spacing[t],
59
+ [o.spacing]
60
+ ), g = a(
61
+ () => (t) => o.breakpoints[t],
62
+ [o.breakpoints]
63
+ ), l = a(
64
+ () => (t) => {
65
+ var s;
66
+ return (s = o.features[t]) != null ? s : !1;
67
+ },
68
+ [o.features]
69
+ ), h = a(
70
+ () => (t) => {
71
+ console.warn(
72
+ "ConfigProvider: updateConfig called but config is immutable. Consider using state management for dynamic updates."
73
+ );
74
+ },
75
+ []
76
+ ), b = {
77
+ config: o,
78
+ getSpacing: m,
79
+ getBreakpoint: g,
80
+ isFeatureEnabled: l,
81
+ updateConfig: h
82
+ };
83
+ return /* @__PURE__ */ N(p.Provider, { value: b, children: n });
84
+ }
85
+ function R() {
86
+ const n = T(p);
87
+ if (n === void 0)
88
+ throw new Error("useConfig must be used within a ConfigProvider");
89
+ return n;
90
+ }
91
+ export {
92
+ L as ConfigProvider,
93
+ R as useConfig
94
+ };
95
+ //# sourceMappingURL=ConfigProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigProvider.js","sources":["../../../../src/ui/providers/ConfigProvider.tsx"],"sourcesContent":["\"use client\";\n\n/* eslint-disable react-refresh/only-export-components */\nimport {\n createContext,\n useContext,\n useMemo,\n useEffect,\n type ReactNode,\n} from \"react\";\nimport { SPACING_TOKENS } from \"../tokens/spacing\";\nimport { TYPOGRAPHY_TOKENS } from \"../tokens/typography\";\nimport { BREAKPOINT_TOKENS } from \"../tokens/breakpoints\";\nimport { ANIMATION_TOKENS } from \"../tokens/animations\";\nimport type { BreakpointName, BreakpointToken } from \"../tokens/breakpoints\";\nimport type { SpacingToken } from \"../tokens/spacing\";\n\n/**\n * Design System Configuration\n *\n * Centralizes all design system configuration including:\n * - Breakpoints for responsive design\n * - Design tokens (spacing, typography, colors)\n * - Behavior configurations (animations, transitions)\n * - Feature flags\n */\nexport interface DesignSystemConfig {\n /**\n * Responsive breakpoints\n */\n breakpoints: Record<\n BreakpointName,\n {\n name: BreakpointName;\n minWidth: number;\n px: string;\n rem: string;\n tailwind: string;\n }\n >;\n\n /**\n * Spacing tokens\n */\n spacing: typeof SPACING_TOKENS;\n\n /**\n * Typography tokens\n */\n typography: typeof TYPOGRAPHY_TOKENS;\n\n /**\n * Animation tokens\n */\n animations: typeof ANIMATION_TOKENS;\n\n /**\n * Feature flags\n */\n features: {\n /**\n * Enable reduced motion for accessibility\n */\n reducedMotion?: boolean;\n\n /**\n * Enable high contrast mode\n */\n highContrast?: boolean;\n\n /**\n * Enable debug mode\n */\n debug?: boolean;\n };\n\n /**\n * Behavior configurations\n */\n behavior: {\n /**\n * Default animation duration in ms\n */\n defaultAnimationDuration?: number;\n\n /**\n * Default transition duration in ms\n */\n defaultTransitionDuration?: number;\n\n /**\n * Enable focus visible outline\n */\n focusVisible?: boolean;\n };\n}\n\n/**\n * Default design system configuration\n */\nconst defaultConfig: DesignSystemConfig = {\n breakpoints: BREAKPOINT_TOKENS,\n spacing: SPACING_TOKENS,\n typography: TYPOGRAPHY_TOKENS,\n animations: ANIMATION_TOKENS,\n features: {\n reducedMotion: false,\n highContrast: false,\n debug: false,\n },\n behavior: {\n defaultAnimationDuration: 200,\n defaultTransitionDuration: 150,\n focusVisible: true,\n },\n};\n\nexport interface ConfigContextValue {\n config: DesignSystemConfig;\n /**\n * Get spacing token by scale\n */\n getSpacing: (scale: keyof typeof SPACING_TOKENS) => SpacingToken;\n /**\n * Get breakpoint value\n */\n getBreakpoint: (name: BreakpointName) => BreakpointToken;\n /**\n * Check if feature is enabled\n */\n isFeatureEnabled: (feature: keyof DesignSystemConfig[\"features\"]) => boolean;\n /**\n * Update configuration (for runtime updates)\n */\n updateConfig: (updates: Partial<DesignSystemConfig>) => void;\n}\n\nconst ConfigContext = createContext<ConfigContextValue | undefined>(undefined);\n\nexport interface ConfigProviderProps {\n children: ReactNode;\n /**\n * Custom configuration to override defaults\n */\n config?: Partial<DesignSystemConfig>;\n /**\n * Strategy for configuration (default, custom, theme-based)\n */\n strategy?: \"default\" | \"custom\" | \"theme-based\";\n}\n\n/**\n * ConfigProvider Component\n *\n * Provides design system configuration context to the application.\n * Uses Strategy Pattern for different configuration strategies.\n *\n * @example\n * ```tsx\n * <ConfigProvider config={{ features: { debug: true } }}>\n * <App />\n * </ConfigProvider>\n * ```\n */\nexport function ConfigProvider({\n children,\n config: customConfig,\n strategy: _strategy = \"default\",\n}: ConfigProviderProps) {\n // Merge custom config with defaults\n const config = useMemo<DesignSystemConfig>(() => {\n const baseConfig = { ...defaultConfig };\n\n if (customConfig) {\n return {\n ...baseConfig,\n ...customConfig,\n breakpoints: customConfig.breakpoints || baseConfig.breakpoints,\n spacing: customConfig.spacing || baseConfig.spacing,\n typography: customConfig.typography || baseConfig.typography,\n animations: customConfig.animations || baseConfig.animations,\n features: {\n ...baseConfig.features,\n ...customConfig.features,\n },\n behavior: {\n ...baseConfig.behavior,\n ...customConfig.behavior,\n },\n };\n }\n\n return baseConfig;\n }, [customConfig]);\n\n // Apply reduced motion if enabled (SSR-safe)\n useEffect(() => {\n if (typeof document === \"undefined\") {\n return;\n }\n\n if (config.features.reducedMotion) {\n document.documentElement.style.setProperty(\"--motion-reduce\", \"1\");\n } else {\n document.documentElement.style.removeProperty(\"--motion-reduce\");\n }\n }, [config.features.reducedMotion]);\n\n // Apply high contrast if enabled (SSR-safe)\n useEffect(() => {\n if (typeof document === \"undefined\") {\n return;\n }\n\n if (config.features.highContrast) {\n document.documentElement.classList.add(\"high-contrast\");\n } else {\n document.documentElement.classList.remove(\"high-contrast\");\n }\n }, [config.features.highContrast]);\n\n const getSpacing = useMemo(\n () => (scale: keyof typeof SPACING_TOKENS) => {\n return config.spacing[scale];\n },\n [config.spacing],\n );\n\n const getBreakpoint = useMemo(\n () => (name: BreakpointName) => {\n return config.breakpoints[name];\n },\n [config.breakpoints],\n );\n\n const isFeatureEnabled = useMemo(\n () => (feature: keyof DesignSystemConfig[\"features\"]) => {\n return config.features[feature] ?? false;\n },\n [config.features],\n );\n\n const updateConfig = useMemo(\n () => (_updates: Partial<DesignSystemConfig>) => {\n // This is a placeholder - in a real implementation, you'd use state\n // For now, config is immutable. Future enhancement could add state management.\n console.warn(\n \"ConfigProvider: updateConfig called but config is immutable. Consider using state management for dynamic updates.\",\n );\n },\n [],\n );\n\n const value: ConfigContextValue = {\n config,\n getSpacing,\n getBreakpoint,\n isFeatureEnabled,\n updateConfig,\n };\n\n return (\n <ConfigContext.Provider value={value}>{children}</ConfigContext.Provider>\n );\n}\n\n/**\n * Hook to use config context\n *\n * @throws Error if used outside ConfigProvider\n */\nexport function useConfig(): ConfigContextValue {\n const context = useContext(ConfigContext);\n if (context === undefined) {\n throw new Error(\"useConfig must be used within a ConfigProvider\");\n }\n return context;\n}\n"],"names":["defaultConfig","BREAKPOINT_TOKENS","SPACING_TOKENS","TYPOGRAPHY_TOKENS","ANIMATION_TOKENS","ConfigContext","createContext","ConfigProvider","children","customConfig","_strategy","config","useMemo","baseConfig","__spreadValues","__spreadProps","useEffect","getSpacing","scale","getBreakpoint","name","isFeatureEnabled","feature","_a","updateConfig","_updates","value","jsx","useConfig","context","useContext"],"mappings":";;;;;;;;;;;;;;;;;;;AAoGA,MAAMA,IAAoC;AAAA,EACxC,aAAaC;AAAA,EACb,SAASC;AAAA,EACT,YAAYC;AAAA,EACZ,YAAYC;AAAA,EACZ,UAAU;AAAA,IACR,eAAe;AAAA,IACf,cAAc;AAAA,IACd,OAAO;AAAA,EAAA;AAAA,EAET,UAAU;AAAA,IACR,0BAA0B;AAAA,IAC1B,2BAA2B;AAAA,IAC3B,cAAc;AAAA,EAAA;AAElB,GAsBMC,IAAgBC,EAA8C,MAAS;AA2BtE,SAASC,EAAe;AAAA,EAC7B,UAAAC;AAAA,EACA,QAAQC;AAAA,EACR,UAAUC,IAAY;AACxB,GAAwB;AAEtB,QAAMC,IAASC,EAA4B,MAAM;AAC/C,UAAMC,IAAaC,EAAA,IAAKd;AAExB,WAAIS,IACKM,EAAAD,IAAA,IACFD,IACAJ,IAFE;AAAA,MAGL,aAAaA,EAAa,eAAeI,EAAW;AAAA,MACpD,SAASJ,EAAa,WAAWI,EAAW;AAAA,MAC5C,YAAYJ,EAAa,cAAcI,EAAW;AAAA,MAClD,YAAYJ,EAAa,cAAcI,EAAW;AAAA,MAClD,UAAUC,IAAA,IACLD,EAAW,WACXJ,EAAa;AAAA,MAElB,UAAUK,IAAA,IACLD,EAAW,WACXJ,EAAa;AAAA,IAClB,KAIGI;AAAA,EACT,GAAG,CAACJ,CAAY,CAAC;AAGjB,EAAAO,EAAU,MAAM;AACd,IAAI,OAAO,YAAa,gBAIpBL,EAAO,SAAS,gBAClB,SAAS,gBAAgB,MAAM,YAAY,mBAAmB,GAAG,IAEjE,SAAS,gBAAgB,MAAM,eAAe,iBAAiB;AAAA,EAEnE,GAAG,CAACA,EAAO,SAAS,aAAa,CAAC,GAGlCK,EAAU,MAAM;AACd,IAAI,OAAO,YAAa,gBAIpBL,EAAO,SAAS,eAClB,SAAS,gBAAgB,UAAU,IAAI,eAAe,IAEtD,SAAS,gBAAgB,UAAU,OAAO,eAAe;AAAA,EAE7D,GAAG,CAACA,EAAO,SAAS,YAAY,CAAC;AAEjC,QAAMM,IAAaL;AAAA,IACjB,MAAM,CAACM,MACEP,EAAO,QAAQO,CAAK;AAAA,IAE7B,CAACP,EAAO,OAAO;AAAA,EAAA,GAGXQ,IAAgBP;AAAA,IACpB,MAAM,CAACQ,MACET,EAAO,YAAYS,CAAI;AAAA,IAEhC,CAACT,EAAO,WAAW;AAAA,EAAA,GAGfU,IAAmBT;AAAA,IACvB,MAAM,CAACU,MAAkD;;AACvD,cAAOC,IAAAZ,EAAO,SAASW,CAAO,MAAvB,OAAAC,IAA4B;AAAA,IACrC;AAAA,IACA,CAACZ,EAAO,QAAQ;AAAA,EAAA,GAGZa,IAAeZ;AAAA,IACnB,MAAM,CAACa,MAA0C;AAG/C,cAAQ;AAAA,QACN;AAAA,MAAA;AAAA,IAEJ;AAAA,IACA,CAAA;AAAA,EAAC,GAGGC,IAA4B;AAAA,IAChC,QAAAf;AAAA,IACA,YAAAM;AAAA,IACA,eAAAE;AAAA,IACA,kBAAAE;AAAA,IACA,cAAAG;AAAA,EAAA;AAGF,SACE,gBAAAG,EAACtB,EAAc,UAAd,EAAuB,OAAAqB,GAAe,UAAAlB,EAAA,CAAS;AAEpD;AAOO,SAASoB,IAAgC;AAC9C,QAAMC,IAAUC,EAAWzB,CAAa;AACxC,MAAIwB,MAAY;AACd,UAAM,IAAI,MAAM,gDAAgD;AAElE,SAAOA;AACT;"}
@@ -0,0 +1,20 @@
1
+ "use client";
2
+ import { createContext as e, useContext as o } from "react";
3
+ const n = e(
4
+ void 0
5
+ );
6
+ function r() {
7
+ const t = o(n);
8
+ if (!t)
9
+ throw new Error("Dialog components must be used within a Dialog component");
10
+ return t;
11
+ }
12
+ function u() {
13
+ return o(n);
14
+ }
15
+ export {
16
+ n as DialogContext,
17
+ r as useDialogContext,
18
+ u as useDialogContextOptional
19
+ };
20
+ //# sourceMappingURL=DialogContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DialogContext.js","sources":["../../../../src/ui/providers/DialogContext.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, useContext } from \"react\";\n\nexport interface DialogContextValue {\n isOpen: boolean;\n onOpenChange: (open: boolean) => void;\n onClose: () => void;\n titleId?: string;\n descriptionId?: string;\n}\n\nexport const DialogContext = createContext<DialogContextValue | undefined>(\n undefined,\n);\n\nexport function useDialogContext(): DialogContextValue {\n const context = useContext(DialogContext);\n if (!context) {\n throw new Error(\"Dialog components must be used within a Dialog component\");\n }\n return context;\n}\n\nexport function useDialogContextOptional(): DialogContextValue | undefined {\n return useContext(DialogContext);\n}\n"],"names":["DialogContext","createContext","useDialogContext","context","useContext","useDialogContextOptional"],"mappings":";;AAYO,MAAMA,IAAgBC;AAAA,EAC3B;AACF;AAEO,SAASC,IAAuC;AACrD,QAAMC,IAAUC,EAAWJ,CAAa;AACxC,MAAI,CAACG;AACH,UAAM,IAAI,MAAM,0DAA0D;AAE5E,SAAOA;AACT;AAEO,SAASE,IAA2D;AACzE,SAAOD,EAAWJ,CAAa;AACjC;"}
@@ -0,0 +1,32 @@
1
+ "use client";
2
+ import { jsx as n } from "react/jsx-runtime";
3
+ import { useState as v, useEffect as y } from "react";
4
+ import { DialogContext as a } from "./DialogContext.js";
5
+ import { useFocusRestore as p } from "../hooks/useFocusRestore.js";
6
+ function P({
7
+ children: i,
8
+ open: e,
9
+ defaultOpen: l = !1,
10
+ onOpenChange: t,
11
+ titleId: f,
12
+ descriptionId: u
13
+ }) {
14
+ const [c, d] = v(l), o = e !== void 0 ? e : c, s = (r) => {
15
+ e === void 0 && d(r), t == null || t(r);
16
+ };
17
+ p(o), y(() => (o ? document.body.style.overflow = "hidden" : document.body.style.overflow = "", () => {
18
+ document.body.style.overflow = "";
19
+ }), [o]);
20
+ const m = {
21
+ isOpen: o,
22
+ onOpenChange: s,
23
+ onClose: () => s(!1),
24
+ titleId: f,
25
+ descriptionId: u
26
+ };
27
+ return /* @__PURE__ */ n(a.Provider, { value: m, children: i });
28
+ }
29
+ export {
30
+ P as DialogProvider
31
+ };
32
+ //# sourceMappingURL=DialogProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DialogProvider.js","sources":["../../../../src/ui/providers/DialogProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState, useEffect, type ReactNode } from \"react\";\nimport { DialogContext, type DialogContextValue } from \"./DialogContext\";\nimport { useFocusRestore } from \"../hooks/useFocusRestore\";\n\nexport interface DialogProviderProps {\n children: ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n titleId?: string;\n descriptionId?: string;\n}\n\nexport function DialogProvider({\n children,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n titleId,\n descriptionId,\n}: DialogProviderProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n\n // Use controlled or uncontrolled state\n const isOpen =\n controlledOpen !== undefined ? controlledOpen : uncontrolledOpen;\n const setIsOpen = (newOpen: boolean) => {\n if (controlledOpen === undefined) {\n setUncontrolledOpen(newOpen);\n }\n onOpenChange?.(newOpen);\n };\n\n // Modal focus restore — consumed from the shared hook introduced in\n // Phase 3 PR 1. Replaces an inline `previousActiveElement` ref +\n // `setTimeout(0)` block that this hook now owns. Timing identity is\n // preserved (the hook uses setTimeout(0)), so Dialog.test.tsx's\n // restore tests do not need to change.\n useFocusRestore(isOpen);\n\n // Prevent body scroll when dialog is open\n useEffect(() => {\n if (isOpen) {\n document.body.style.overflow = \"hidden\";\n } else {\n document.body.style.overflow = \"\";\n }\n return () => {\n document.body.style.overflow = \"\";\n };\n }, [isOpen]);\n\n const contextValue: DialogContextValue = {\n isOpen,\n onOpenChange: setIsOpen,\n onClose: () => setIsOpen(false),\n titleId,\n descriptionId,\n };\n\n return (\n <DialogContext.Provider value={contextValue}>\n {children}\n </DialogContext.Provider>\n );\n}\n"],"names":["DialogProvider","children","controlledOpen","defaultOpen","onOpenChange","titleId","descriptionId","uncontrolledOpen","setUncontrolledOpen","useState","isOpen","setIsOpen","newOpen","useFocusRestore","useEffect","contextValue","DialogContext"],"mappings":";;;;;AAeO,SAASA,EAAe;AAAA,EAC7B,UAAAC;AAAA,EACA,MAAMC;AAAA,EACN,aAAAC,IAAc;AAAA,EACd,cAAAC;AAAA,EACA,SAAAC;AAAA,EACA,eAAAC;AACF,GAAwB;AACtB,QAAM,CAACC,GAAkBC,CAAmB,IAAIC,EAASN,CAAW,GAG9DO,IACJR,MAAmB,SAAYA,IAAiBK,GAC5CI,IAAY,CAACC,MAAqB;AACtC,IAAIV,MAAmB,UACrBM,EAAoBI,CAAO,GAE7BR,KAAA,QAAAA,EAAeQ;AAAA,EACjB;AAOA,EAAAC,EAAgBH,CAAM,GAGtBI,EAAU,OACJJ,IACF,SAAS,KAAK,MAAM,WAAW,WAE/B,SAAS,KAAK,MAAM,WAAW,IAE1B,MAAM;AACX,aAAS,KAAK,MAAM,WAAW;AAAA,EACjC,IACC,CAACA,CAAM,CAAC;AAEX,QAAMK,IAAmC;AAAA,IACvC,QAAAL;AAAA,IACA,cAAcC;AAAA,IACd,SAAS,MAAMA,EAAU,EAAK;AAAA,IAC9B,SAAAN;AAAA,IACA,eAAAC;AAAA,EAAA;AAGF,2BACGU,EAAc,UAAd,EAAuB,OAAOD,GAC5B,UAAAd,GACH;AAEJ;"}
@@ -0,0 +1,56 @@
1
+ "use client";
2
+ import { jsx as m } from "react/jsx-runtime";
3
+ import { useState as d, useEffect as l, useContext as a, createContext as u } from "react";
4
+ import { SEMANTIC_COLORS_LIGHT as h, SEMANTIC_COLORS_DARK as f } from "../tokens/colors/semantic.js";
5
+ const c = u(void 0);
6
+ function C({
7
+ children: o,
8
+ defaultTheme: n = "light",
9
+ storageKey: r = "theme"
10
+ }) {
11
+ const [t, i] = d(() => {
12
+ if (typeof window == "undefined")
13
+ return n;
14
+ try {
15
+ const e = localStorage.getItem(r);
16
+ if (e === "light" || e === "dark")
17
+ return e;
18
+ } catch (e) {
19
+ console.warn("Failed to read theme from localStorage:", e);
20
+ }
21
+ return n;
22
+ });
23
+ l(() => {
24
+ if (typeof window != "undefined") {
25
+ try {
26
+ localStorage.setItem(r, t);
27
+ } catch (e) {
28
+ console.warn("Failed to save theme to localStorage:", e);
29
+ }
30
+ typeof document != "undefined" && (document.documentElement.classList.remove("light", "dark"), document.documentElement.classList.add(t));
31
+ }
32
+ }, [t, r]);
33
+ const s = {
34
+ theme: t,
35
+ toggleTheme: () => {
36
+ i((e) => e === "light" ? "dark" : "light");
37
+ },
38
+ setTheme: (e) => {
39
+ i(e);
40
+ },
41
+ colors: t === "light" ? h : f,
42
+ isDark: t === "dark"
43
+ };
44
+ return /* @__PURE__ */ m(c.Provider, { value: s, children: o });
45
+ }
46
+ function x() {
47
+ const o = a(c);
48
+ if (o === void 0)
49
+ throw new Error("useTheme must be used within a ThemeProvider");
50
+ return o;
51
+ }
52
+ export {
53
+ C as ThemeProvider,
54
+ x as useTheme
55
+ };
56
+ //# sourceMappingURL=ThemeProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeProvider.js","sources":["../../../../src/ui/providers/ThemeProvider.tsx"],"sourcesContent":["\"use client\";\n\n/* eslint-disable react-refresh/only-export-components */\nimport {\n createContext,\n useContext,\n useEffect,\n useState,\n type ReactNode,\n} from \"react\";\nimport {\n SEMANTIC_COLORS_LIGHT,\n SEMANTIC_COLORS_DARK,\n type SemanticColorName,\n type SemanticColor,\n} from \"../tokens/colors/index\";\nimport type { ThemeMode } from \"../tokens\";\n\nexport interface ThemeContextValue {\n theme: ThemeMode;\n toggleTheme: () => void;\n setTheme: (theme: ThemeMode) => void;\n colors: Record<SemanticColorName, SemanticColor>;\n isDark: boolean;\n}\n\nconst ThemeContext = createContext<ThemeContextValue | undefined>(undefined);\n\nexport interface ThemeProviderProps {\n children: ReactNode;\n defaultTheme?: ThemeMode;\n storageKey?: string;\n}\n\n/**\n * ThemeProvider Component\n *\n * Provides theme context to the application.\n * Uses Strategy Pattern for different theme strategies (light, dark).\n * Uses Observer Pattern to notify components about theme changes.\n *\n * @example\n * ```tsx\n * <ThemeProvider defaultTheme=\"light\">\n * <App />\n * </ThemeProvider>\n * ```\n */\nexport function ThemeProvider({\n children,\n defaultTheme = \"light\",\n storageKey = \"theme\",\n}: ThemeProviderProps) {\n const [theme, setThemeState] = useState<ThemeMode>(() => {\n if (typeof window === \"undefined\") {\n return defaultTheme;\n }\n\n try {\n const stored = localStorage.getItem(storageKey);\n if (stored === \"light\" || stored === \"dark\") {\n return stored;\n }\n } catch (error) {\n console.warn(\"Failed to read theme from localStorage:\", error);\n }\n\n return defaultTheme;\n });\n\n useEffect(() => {\n // Only run in browser (SSR-safe)\n if (typeof window === \"undefined\") {\n return;\n }\n\n try {\n localStorage.setItem(storageKey, theme);\n } catch (error) {\n console.warn(\"Failed to save theme to localStorage:\", error);\n }\n\n // Apply theme class to document root\n if (typeof document !== \"undefined\") {\n document.documentElement.classList.remove(\"light\", \"dark\");\n document.documentElement.classList.add(theme);\n }\n }, [theme, storageKey]);\n\n const toggleTheme = () => {\n setThemeState((prev) => (prev === \"light\" ? \"dark\" : \"light\"));\n };\n\n const setTheme = (newTheme: ThemeMode) => {\n setThemeState(newTheme);\n };\n\n const colors =\n theme === \"light\" ? SEMANTIC_COLORS_LIGHT : SEMANTIC_COLORS_DARK;\n\n const value: ThemeContextValue = {\n theme,\n toggleTheme,\n setTheme,\n colors,\n isDark: theme === \"dark\",\n };\n\n return (\n <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>\n );\n}\n\n/**\n * Hook to use theme context\n */\nexport function useTheme(): ThemeContextValue {\n const context = useContext(ThemeContext);\n if (context === undefined) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n}\n"],"names":["ThemeContext","createContext","ThemeProvider","children","defaultTheme","storageKey","theme","setThemeState","useState","stored","error","useEffect","value","prev","newTheme","SEMANTIC_COLORS_LIGHT","SEMANTIC_COLORS_DARK","jsx","useTheme","context","useContext"],"mappings":";;;;AA0BA,MAAMA,IAAeC,EAA6C,MAAS;AAsBpE,SAASC,EAAc;AAAA,EAC5B,UAAAC;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,YAAAC,IAAa;AACf,GAAuB;AACrB,QAAM,CAACC,GAAOC,CAAa,IAAIC,EAAoB,MAAM;AACvD,QAAI,OAAO,UAAW;AACpB,aAAOJ;AAGT,QAAI;AACF,YAAMK,IAAS,aAAa,QAAQJ,CAAU;AAC9C,UAAII,MAAW,WAAWA,MAAW;AACnC,eAAOA;AAAA,IAEX,SAASC,GAAO;AACd,cAAQ,KAAK,2CAA2CA,CAAK;AAAA,IAC/D;AAEA,WAAON;AAAA,EACT,CAAC;AAED,EAAAO,EAAU,MAAM;AAEd,QAAI,OAAO,UAAW,aAItB;AAAA,UAAI;AACF,qBAAa,QAAQN,GAAYC,CAAK;AAAA,MACxC,SAASI,GAAO;AACd,gBAAQ,KAAK,yCAAyCA,CAAK;AAAA,MAC7D;AAGA,MAAI,OAAO,YAAa,gBACtB,SAAS,gBAAgB,UAAU,OAAO,SAAS,MAAM,GACzD,SAAS,gBAAgB,UAAU,IAAIJ,CAAK;AAAA;AAAA,EAEhD,GAAG,CAACA,GAAOD,CAAU,CAAC;AAatB,QAAMO,IAA2B;AAAA,IAC/B,OAAAN;AAAA,IACA,aAbkB,MAAM;AACxB,MAAAC,EAAc,CAACM,MAAUA,MAAS,UAAU,SAAS,OAAQ;AAAA,IAC/D;AAAA,IAYE,UAVe,CAACC,MAAwB;AACxC,MAAAP,EAAcO,CAAQ;AAAA,IACxB;AAAA,IASE,QANAR,MAAU,UAAUS,IAAwBC;AAAA,IAO5C,QAAQV,MAAU;AAAA,EAAA;AAGpB,SACE,gBAAAW,EAACjB,EAAa,UAAb,EAAsB,OAAAY,GAAe,UAAAT,EAAA,CAAS;AAEnD;AAKO,SAASe,IAA8B;AAC5C,QAAMC,IAAUC,EAAWpB,CAAY;AACvC,MAAImB,MAAY;AACd,UAAM,IAAI,MAAM,8CAA8C;AAEhE,SAAOA;AACT;"}
@@ -0,0 +1,20 @@
1
+ "use client";
2
+ import { createContext as n, useContext as o } from "react";
3
+ const e = n(
4
+ void 0
5
+ );
6
+ function s() {
7
+ const t = o(e);
8
+ if (!t)
9
+ throw new Error("Toast components must be used within a ToastProvider");
10
+ return t;
11
+ }
12
+ function i() {
13
+ return o(e);
14
+ }
15
+ export {
16
+ e as ToastContext,
17
+ s as useToastContext,
18
+ i as useToastContextOptional
19
+ };
20
+ //# sourceMappingURL=ToastContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToastContext.js","sources":["../../../../src/ui/providers/ToastContext.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, useContext } from \"react\";\n\nexport type ToastVariant = \"success\" | \"error\" | \"warning\" | \"info\";\n\nexport interface Toast {\n id: string;\n title: string;\n description?: string;\n variant: ToastVariant;\n duration?: number; // in milliseconds, undefined = no auto-dismiss\n action?: {\n label: string;\n onClick: () => void;\n };\n}\n\nexport interface ToastContextValue {\n toasts: Toast[];\n addToast: (toast: Omit<Toast, \"id\">) => string;\n removeToast: (id: string) => void;\n clearAll: () => void;\n}\n\nexport const ToastContext = createContext<ToastContextValue | undefined>(\n undefined,\n);\n\nexport function useToastContext(): ToastContextValue {\n const context = useContext(ToastContext);\n if (!context) {\n throw new Error(\"Toast components must be used within a ToastProvider\");\n }\n return context;\n}\n\nexport function useToastContextOptional(): ToastContextValue | undefined {\n return useContext(ToastContext);\n}\n"],"names":["ToastContext","createContext","useToastContext","context","useContext","useToastContextOptional"],"mappings":";;AAyBO,MAAMA,IAAeC;AAAA,EAC1B;AACF;AAEO,SAASC,IAAqC;AACnD,QAAMC,IAAUC,EAAWJ,CAAY;AACvC,MAAI,CAACG;AACH,UAAM,IAAI,MAAM,sDAAsD;AAExE,SAAOA;AACT;AAEO,SAASE,IAAyD;AACvE,SAAOD,EAAWJ,CAAY;AAChC;"}
@@ -0,0 +1,47 @@
1
+ "use client";
2
+ var C = Object.defineProperty, P = Object.defineProperties;
3
+ var S = Object.getOwnPropertyDescriptors;
4
+ var d = Object.getOwnPropertySymbols;
5
+ var $ = Object.prototype.hasOwnProperty, b = Object.prototype.propertyIsEnumerable;
6
+ var u = (e, t, o) => t in e ? C(e, t, { enumerable: !0, configurable: !0, writable: !0, value: o }) : e[t] = o, l = (e, t) => {
7
+ for (var o in t || (t = {}))
8
+ $.call(t, o) && u(e, o, t[o]);
9
+ if (d)
10
+ for (var o of d(t))
11
+ b.call(t, o) && u(e, o, t[o]);
12
+ return e;
13
+ }, m = (e, t) => P(e, S(t));
14
+ import { jsx as g } from "react/jsx-runtime";
15
+ import { useState as h, useCallback as c } from "react";
16
+ import { ToastContext as j } from "./ToastContext.js";
17
+ function y({
18
+ children: e,
19
+ defaultDuration: t = 5e3,
20
+ maxToasts: o = 5
21
+ }) {
22
+ const [p, n] = h([]), T = c(
23
+ (r) => {
24
+ var i;
25
+ const s = `toast-${Date.now()}-${Math.random().toString(36).slice(2, 11)}`, a = m(l({}, r), {
26
+ id: s,
27
+ duration: (i = r.duration) != null ? i : t
28
+ });
29
+ return n((w) => [a, ...w].slice(0, o)), s;
30
+ },
31
+ [t, o]
32
+ ), f = c((r) => {
33
+ n((s) => s.filter((a) => a.id !== r));
34
+ }, []), v = c(() => {
35
+ n([]);
36
+ }, []), x = {
37
+ toasts: p,
38
+ addToast: T,
39
+ removeToast: f,
40
+ clearAll: v
41
+ };
42
+ return /* @__PURE__ */ g(j.Provider, { value: x, children: e });
43
+ }
44
+ export {
45
+ y as ToastProvider
46
+ };
47
+ //# sourceMappingURL=ToastProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToastProvider.js","sources":["../../../../src/ui/providers/ToastProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState, useCallback, type ReactNode } from \"react\";\nimport {\n ToastContext,\n type Toast,\n type ToastContextValue,\n} from \"./ToastContext\";\n\nexport interface ToastProviderProps {\n children: ReactNode;\n defaultDuration?: number; // Default auto-dismiss duration in ms\n maxToasts?: number; // Maximum number of toasts to show\n}\n\nexport function ToastProvider({\n children,\n defaultDuration = 5000,\n maxToasts = 5,\n}: ToastProviderProps) {\n const [toasts, setToasts] = useState<Toast[]>([]);\n\n const addToast = useCallback(\n (toast: Omit<Toast, \"id\">): string => {\n const id = `toast-${Date.now()}-${Math.random().toString(36).slice(2, 11)}`;\n const newToast: Toast = {\n ...toast,\n id,\n duration: toast.duration ?? defaultDuration,\n };\n\n setToasts((prev) => {\n const updated = [newToast, ...prev];\n // Limit number of toasts\n return updated.slice(0, maxToasts);\n });\n\n return id;\n },\n [defaultDuration, maxToasts],\n );\n\n const removeToast = useCallback((id: string) => {\n setToasts((prev) => prev.filter((toast) => toast.id !== id));\n }, []);\n\n const clearAll = useCallback(() => {\n setToasts([]);\n }, []);\n\n const contextValue: ToastContextValue = {\n toasts,\n addToast,\n removeToast,\n clearAll,\n };\n\n return (\n <ToastContext.Provider value={contextValue}>\n {children}\n </ToastContext.Provider>\n );\n}\n"],"names":["ToastProvider","children","defaultDuration","maxToasts","toasts","setToasts","useState","addToast","useCallback","toast","id","newToast","__spreadProps","__spreadValues","_a","prev","removeToast","clearAll","contextValue","ToastContext"],"mappings":";;;;;;;;;;;;;;;;AAeO,SAASA,EAAc;AAAA,EAC5B,UAAAC;AAAA,EACA,iBAAAC,IAAkB;AAAA,EAClB,WAAAC,IAAY;AACd,GAAuB;AACrB,QAAM,CAACC,GAAQC,CAAS,IAAIC,EAAkB,CAAA,CAAE,GAE1CC,IAAWC;AAAA,IACf,CAACC,MAAqC;;AACpC,YAAMC,IAAK,SAAS,KAAK,IAAA,CAAK,IAAI,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,MAAM,GAAG,EAAE,CAAC,IACnEC,IAAkBC,EAAAC,EAAA,IACnBJ,IADmB;AAAA,QAEtB,IAAAC;AAAA,QACA,WAAUI,IAAAL,EAAM,aAAN,OAAAK,IAAkBZ;AAAA,MAAA;AAG9B,aAAAG,EAAU,CAACU,MACO,CAACJ,GAAU,GAAGI,CAAI,EAEnB,MAAM,GAAGZ,CAAS,CAClC,GAEMO;AAAA,IACT;AAAA,IACA,CAACR,GAAiBC,CAAS;AAAA,EAAA,GAGvBa,IAAcR,EAAY,CAACE,MAAe;AAC9C,IAAAL,EAAU,CAACU,MAASA,EAAK,OAAO,CAACN,MAAUA,EAAM,OAAOC,CAAE,CAAC;AAAA,EAC7D,GAAG,CAAA,CAAE,GAECO,IAAWT,EAAY,MAAM;AACjC,IAAAH,EAAU,CAAA,CAAE;AAAA,EACd,GAAG,CAAA,CAAE,GAECa,IAAkC;AAAA,IACtC,QAAAd;AAAA,IACA,UAAAG;AAAA,IACA,aAAAS;AAAA,IACA,UAAAC;AAAA,EAAA;AAGF,2BACGE,EAAa,UAAb,EAAsB,OAAOD,GAC3B,UAAAjB,GACH;AAEJ;"}
@@ -0,0 +1,23 @@
1
+ "use client";
2
+ import { ThemeProvider as o } from "./ThemeProvider.js";
3
+ import { useTheme as v } from "./ThemeProvider.js";
4
+ import { ConfigProvider as r } from "./ConfigProvider.js";
5
+ import { useConfig as u } from "./ConfigProvider.js";
6
+ import { ToastProvider as e } from "./ToastProvider.js";
7
+ import { DialogProvider as i } from "./DialogProvider.js";
8
+ const d = {
9
+ ThemeProvider: o,
10
+ ConfigProvider: r,
11
+ ToastProvider: e,
12
+ DialogProvider: i
13
+ };
14
+ export {
15
+ r as ConfigProvider,
16
+ i as DialogProvider,
17
+ d as ProvidersBundle,
18
+ o as ThemeProvider,
19
+ e as ToastProvider,
20
+ u as useConfig,
21
+ v as useTheme
22
+ };
23
+ //# sourceMappingURL=providers-bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers-bundle.js","sources":["../../../../src/ui/providers/providers-bundle.ts"],"sourcesContent":["/**\n * PROVIDERS BUNDLE - Turbopack Compatibility\n *\n * This file creates a single module boundary for all providers to prevent\n * Turbopack from code-splitting them incorrectly. All providers are imported\n * and re-exported from this single file, ensuring they're in the same chunk.\n *\n * CRITICAL: This file must be imported before any provider is used to ensure\n * correct initialization order in Turbopack builds.\n */\n\n// Import all providers in dependency order\nimport {\n ThemeProvider,\n type ThemeProviderProps,\n type ThemeContextValue,\n} from \"./ThemeProvider\";\nimport {\n ConfigProvider,\n type ConfigProviderProps,\n type DesignSystemConfig,\n type ConfigContextValue,\n} from \"./ConfigProvider\";\nimport { ToastProvider, type ToastProviderProps } from \"./ToastProvider\";\nimport { DialogProvider, type DialogProviderProps } from \"./DialogProvider\";\nimport { useTheme } from \"./ThemeProvider\";\nimport { useConfig } from \"./ConfigProvider\";\nimport {\n useToastContext,\n useToastContextOptional,\n type Toast,\n type ToastContextValue,\n type ToastVariant,\n} from \"./ToastContext\";\nimport {\n useDialogContext,\n useDialogContextOptional,\n type DialogContextValue,\n} from \"./DialogContext\";\nimport { ToastContext } from \"./ToastContext\";\nimport { DialogContext } from \"./DialogContext\";\n\n/**\n * Providers Bundle Object\n *\n * This object ensures all providers are referenced together, creating a\n * module boundary that Turbopack cannot break. By accessing providers\n * through this object, we guarantee they're all in the same chunk.\n */\nexport const ProvidersBundle = {\n ThemeProvider,\n ConfigProvider,\n ToastProvider,\n DialogProvider,\n // Contexts\n ToastContext,\n DialogContext,\n // Hooks\n useTheme,\n useConfig,\n useToastContext,\n useToastContextOptional,\n useDialogContext,\n useDialogContextOptional,\n} as const;\n\n// Re-export all providers individually for convenience\nexport {\n ThemeProvider,\n ConfigProvider,\n ToastProvider,\n DialogProvider,\n useTheme,\n useConfig,\n useToastContext,\n useToastContextOptional,\n useDialogContext,\n useDialogContextOptional,\n ToastContext,\n DialogContext,\n};\n\n// Re-export types\nexport type {\n ThemeProviderProps,\n ThemeContextValue,\n ConfigProviderProps,\n DesignSystemConfig,\n ConfigContextValue,\n ToastProviderProps,\n DialogProviderProps,\n Toast,\n ToastContextValue,\n ToastVariant,\n DialogContextValue,\n};\n"],"names":["ProvidersBundle","ThemeProvider","ConfigProvider","ToastProvider","DialogProvider"],"mappings":";;;;;;;AAiDO,MAAMA,IAAkB;AAAA,EAC7B,eAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,gBAAAC;AAWF;"}
@@ -0,0 +1,106 @@
1
+ "use client";
2
+ class a {
3
+ /**
4
+ * Create an animation token
5
+ */
6
+ static create(i, e = "ease-in-out") {
7
+ const s = {
8
+ fast: {
9
+ value: "150ms",
10
+ ms: 150,
11
+ tailwind: "duration-150"
12
+ },
13
+ base: {
14
+ value: "200ms",
15
+ ms: 200,
16
+ tailwind: "duration-200"
17
+ },
18
+ slow: {
19
+ value: "300ms",
20
+ ms: 300,
21
+ tailwind: "duration-300"
22
+ },
23
+ slower: {
24
+ value: "500ms",
25
+ ms: 500,
26
+ tailwind: "duration-500"
27
+ }
28
+ }, n = {
29
+ "ease-in": {
30
+ value: "cubic-bezier(0.4, 0, 1, 1)",
31
+ tailwind: "ease-in",
32
+ description: "Slow start, fast end"
33
+ },
34
+ "ease-out": {
35
+ value: "cubic-bezier(0, 0, 0.2, 1)",
36
+ tailwind: "ease-out",
37
+ description: "Fast start, slow end"
38
+ },
39
+ "ease-in-out": {
40
+ value: "cubic-bezier(0.4, 0, 0.2, 1)",
41
+ tailwind: "ease-in-out",
42
+ description: "Slow start and end, fast middle"
43
+ },
44
+ spring: {
45
+ value: "cubic-bezier(0.68, -0.55, 0.265, 1.55)",
46
+ tailwind: "ease-[cubic-bezier(0.68,-0.55,0.265,1.55)]",
47
+ description: "Spring-like bounce effect"
48
+ }
49
+ };
50
+ return {
51
+ duration: s[i],
52
+ easing: n[e]
53
+ };
54
+ }
55
+ /**
56
+ * Create a transition token
57
+ */
58
+ static createTransition(i, e = "base", s = "ease-in-out") {
59
+ const n = this.create(e, s), o = Array.isArray(i) ? i.join(", ") : i, r = [
60
+ n.duration.tailwind,
61
+ n.easing.tailwind
62
+ ].join(" ");
63
+ return {
64
+ property: o,
65
+ duration: n.duration.value,
66
+ timingFunction: n.easing.value,
67
+ tailwind: r
68
+ };
69
+ }
70
+ }
71
+ const c = {
72
+ fast: a.create("fast"),
73
+ base: a.create("base"),
74
+ slow: a.create("slow"),
75
+ slower: a.create("slower"),
76
+ // Common transitions
77
+ colors: a.createTransition(
78
+ ["color", "background-color", "border-color"],
79
+ "base"
80
+ ),
81
+ opacity: a.createTransition("opacity", "fast"),
82
+ transform: a.createTransition("transform", "base"),
83
+ all: a.createTransition("all", "base")
84
+ };
85
+ function l(t, i) {
86
+ return a.create(t, i);
87
+ }
88
+ function u(t, i = "ease-in-out") {
89
+ const e = a.create(t, i);
90
+ return `${e.duration.tailwind} ${e.easing.tailwind}`;
91
+ }
92
+ function d(t, i = "base", e = "ease-in-out") {
93
+ return a.createTransition(
94
+ t,
95
+ i,
96
+ e
97
+ ).tailwind;
98
+ }
99
+ export {
100
+ c as ANIMATION_TOKENS,
101
+ a as AnimationTokenFactory,
102
+ l as getAnimation,
103
+ u as getAnimationClass,
104
+ d as getTransitionClass
105
+ };
106
+ //# sourceMappingURL=animations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animations.js","sources":["../../../../src/ui/tokens/animations.ts"],"sourcesContent":["/**\n * Animation Tokens\n *\n * Centralized animation and transition system for consistent timing and easing.\n * Uses Factory Pattern for type-safe token creation.\n */\n\nexport type AnimationDuration = \"fast\" | \"base\" | \"slow\" | \"slower\";\nexport type EasingFunction = \"ease-in\" | \"ease-out\" | \"ease-in-out\" | \"spring\";\n\nexport interface AnimationToken {\n duration: {\n value: string;\n ms: number;\n tailwind: string;\n };\n easing: {\n value: string;\n tailwind: string;\n description: string;\n };\n}\n\nexport interface TransitionToken {\n property: string;\n duration: string;\n timingFunction: string;\n tailwind: string;\n}\n\n/**\n * Animation Token Factory\n * Creates animation tokens with consistent timing and easing\n */\nexport class AnimationTokenFactory {\n /**\n * Create an animation token\n */\n static create(\n duration: AnimationDuration,\n easing: EasingFunction = \"ease-in-out\",\n ): AnimationToken {\n const durationMap: Record<\n AnimationDuration,\n { value: string; ms: number; tailwind: string }\n > = {\n fast: {\n value: \"150ms\",\n ms: 150,\n tailwind: \"duration-150\",\n },\n base: {\n value: \"200ms\",\n ms: 200,\n tailwind: \"duration-200\",\n },\n slow: {\n value: \"300ms\",\n ms: 300,\n tailwind: \"duration-300\",\n },\n slower: {\n value: \"500ms\",\n ms: 500,\n tailwind: \"duration-500\",\n },\n };\n\n const easingMap: Record<\n EasingFunction,\n { value: string; tailwind: string; description: string }\n > = {\n \"ease-in\": {\n value: \"cubic-bezier(0.4, 0, 1, 1)\",\n tailwind: \"ease-in\",\n description: \"Slow start, fast end\",\n },\n \"ease-out\": {\n value: \"cubic-bezier(0, 0, 0.2, 1)\",\n tailwind: \"ease-out\",\n description: \"Fast start, slow end\",\n },\n \"ease-in-out\": {\n value: \"cubic-bezier(0.4, 0, 0.2, 1)\",\n tailwind: \"ease-in-out\",\n description: \"Slow start and end, fast middle\",\n },\n spring: {\n value: \"cubic-bezier(0.68, -0.55, 0.265, 1.55)\",\n tailwind: \"ease-[cubic-bezier(0.68,-0.55,0.265,1.55)]\",\n description: \"Spring-like bounce effect\",\n },\n };\n\n return {\n duration: durationMap[duration],\n easing: easingMap[easing],\n };\n }\n\n /**\n * Create a transition token\n */\n static createTransition(\n property: string | string[],\n duration: AnimationDuration = \"base\",\n easing: EasingFunction = \"ease-in-out\",\n ): TransitionToken {\n const durationToken = this.create(duration, easing);\n const properties = Array.isArray(property) ? property.join(\", \") : property;\n const tailwindClasses = [\n durationToken.duration.tailwind,\n durationToken.easing.tailwind,\n ].join(\" \");\n\n return {\n property: properties,\n duration: durationToken.duration.value,\n timingFunction: durationToken.easing.value,\n tailwind: tailwindClasses,\n };\n }\n}\n\n/**\n * Pre-defined animation tokens\n */\nexport const ANIMATION_TOKENS = {\n fast: AnimationTokenFactory.create(\"fast\"),\n base: AnimationTokenFactory.create(\"base\"),\n slow: AnimationTokenFactory.create(\"slow\"),\n slower: AnimationTokenFactory.create(\"slower\"),\n\n // Common transitions\n colors: AnimationTokenFactory.createTransition(\n [\"color\", \"background-color\", \"border-color\"],\n \"base\",\n ),\n opacity: AnimationTokenFactory.createTransition(\"opacity\", \"fast\"),\n transform: AnimationTokenFactory.createTransition(\"transform\", \"base\"),\n all: AnimationTokenFactory.createTransition(\"all\", \"base\"),\n} as const;\n\n/**\n * Helper function to get animation token\n */\nexport function getAnimation(\n duration: AnimationDuration,\n easing?: EasingFunction,\n): AnimationToken {\n return AnimationTokenFactory.create(duration, easing);\n}\n\n/**\n * Helper function to get animation classes\n */\nexport function getAnimationClass(\n duration: AnimationDuration,\n easing: EasingFunction = \"ease-in-out\",\n): string {\n const token = AnimationTokenFactory.create(duration, easing);\n return `${token.duration.tailwind} ${token.easing.tailwind}`;\n}\n\n/**\n * Helper function to get transition classes\n */\nexport function getTransitionClass(\n property: string | string[],\n duration: AnimationDuration = \"base\",\n easing: EasingFunction = \"ease-in-out\",\n): string {\n const transition = AnimationTokenFactory.createTransition(\n property,\n duration,\n easing,\n );\n return transition.tailwind;\n}\n"],"names":["AnimationTokenFactory","duration","easing","durationMap","easingMap","property","durationToken","properties","tailwindClasses","ANIMATION_TOKENS","getAnimation","getAnimationClass","token","getTransitionClass"],"mappings":";AAkCO,MAAMA,EAAsB;AAAA;AAAA;AAAA;AAAA,EAIjC,OAAO,OACLC,GACAC,IAAyB,eACT;AAChB,UAAMC,IAGF;AAAA,MACF,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,IAAI;AAAA,QACJ,UAAU;AAAA,MAAA;AAAA,MAEZ,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,IAAI;AAAA,QACJ,UAAU;AAAA,MAAA;AAAA,MAEZ,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,IAAI;AAAA,QACJ,UAAU;AAAA,MAAA;AAAA,MAEZ,QAAQ;AAAA,QACN,OAAO;AAAA,QACP,IAAI;AAAA,QACJ,UAAU;AAAA,MAAA;AAAA,IACZ,GAGIC,IAGF;AAAA,MACF,WAAW;AAAA,QACT,OAAO;AAAA,QACP,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,MAEf,YAAY;AAAA,QACV,OAAO;AAAA,QACP,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,MAEf,eAAe;AAAA,QACb,OAAO;AAAA,QACP,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,MAEf,QAAQ;AAAA,QACN,OAAO;AAAA,QACP,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,IACf;AAGF,WAAO;AAAA,MACL,UAAUD,EAAYF,CAAQ;AAAA,MAC9B,QAAQG,EAAUF,CAAM;AAAA,IAAA;AAAA,EAE5B;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,iBACLG,GACAJ,IAA8B,QAC9BC,IAAyB,eACR;AACjB,UAAMI,IAAgB,KAAK,OAAOL,GAAUC,CAAM,GAC5CK,IAAa,MAAM,QAAQF,CAAQ,IAAIA,EAAS,KAAK,IAAI,IAAIA,GAC7DG,IAAkB;AAAA,MACtBF,EAAc,SAAS;AAAA,MACvBA,EAAc,OAAO;AAAA,IAAA,EACrB,KAAK,GAAG;AAEV,WAAO;AAAA,MACL,UAAUC;AAAA,MACV,UAAUD,EAAc,SAAS;AAAA,MACjC,gBAAgBA,EAAc,OAAO;AAAA,MACrC,UAAUE;AAAA,IAAA;AAAA,EAEd;AACF;AAKO,MAAMC,IAAmB;AAAA,EAC9B,MAAMT,EAAsB,OAAO,MAAM;AAAA,EACzC,MAAMA,EAAsB,OAAO,MAAM;AAAA,EACzC,MAAMA,EAAsB,OAAO,MAAM;AAAA,EACzC,QAAQA,EAAsB,OAAO,QAAQ;AAAA;AAAA,EAG7C,QAAQA,EAAsB;AAAA,IAC5B,CAAC,SAAS,oBAAoB,cAAc;AAAA,IAC5C;AAAA,EAAA;AAAA,EAEF,SAASA,EAAsB,iBAAiB,WAAW,MAAM;AAAA,EACjE,WAAWA,EAAsB,iBAAiB,aAAa,MAAM;AAAA,EACrE,KAAKA,EAAsB,iBAAiB,OAAO,MAAM;AAC3D;AAKO,SAASU,EACdT,GACAC,GACgB;AAChB,SAAOF,EAAsB,OAAOC,GAAUC,CAAM;AACtD;AAKO,SAASS,EACdV,GACAC,IAAyB,eACjB;AACR,QAAMU,IAAQZ,EAAsB,OAAOC,GAAUC,CAAM;AAC3D,SAAO,GAAGU,EAAM,SAAS,QAAQ,IAAIA,EAAM,OAAO,QAAQ;AAC5D;AAKO,SAASC,EACdR,GACAJ,IAA8B,QAC9BC,IAAyB,eACjB;AAMR,SALmBF,EAAsB;AAAA,IACvCK;AAAA,IACAJ;AAAA,IACAC;AAAA,EAAA,EAEgB;AACpB;"}
@@ -0,0 +1,54 @@
1
+ "use client";
2
+ class e {
3
+ /**
4
+ * Create a border width token
5
+ */
6
+ static createWidth(t) {
7
+ const a = {
8
+ none: {
9
+ px: 0,
10
+ tailwind: "border-0"
11
+ },
12
+ thin: {
13
+ px: 1,
14
+ tailwind: "border"
15
+ },
16
+ base: {
17
+ px: 1,
18
+ tailwind: "border"
19
+ },
20
+ medium: {
21
+ px: 2,
22
+ tailwind: "border-2"
23
+ },
24
+ thick: {
25
+ px: 4,
26
+ tailwind: "border-4"
27
+ }
28
+ }[t];
29
+ return {
30
+ value: a.px,
31
+ px: `${a.px}px`,
32
+ tailwind: a.tailwind
33
+ };
34
+ }
35
+ /**
36
+ * Create a complete border token
37
+ */
38
+ static create(t, i = "solid") {
39
+ return {
40
+ width: this.createWidth(t),
41
+ style: i,
42
+ description: `${t} ${i} border`
43
+ };
44
+ }
45
+ }
46
+ e.create("none"), e.create("thin"), e.create("base"), e.create("medium"), e.create("thick"), e.create("thin", "dashed"), e.create("base", "dashed"), e.create("thin", "dotted"), e.create("base", "dotted");
47
+ function r(d) {
48
+ return e.createWidth(d).tailwind;
49
+ }
50
+ export {
51
+ e as BorderTokenFactory,
52
+ r as getBorderWidthClass
53
+ };
54
+ //# sourceMappingURL=borders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"borders.js","sources":["../../../../src/ui/tokens/borders.ts"],"sourcesContent":["/**\n * Border Tokens\n *\n * Centralized border system for consistent borders and dividers.\n * Uses Factory Pattern for type-safe token creation.\n */\n\nexport type BorderWidth = \"none\" | \"thin\" | \"base\" | \"medium\" | \"thick\";\nexport type BorderStyle = \"solid\" | \"dashed\" | \"dotted\";\n\nexport interface BorderToken {\n width: {\n value: number;\n px: string;\n tailwind: string;\n };\n style: BorderStyle;\n description: string;\n}\n\n/**\n * Border Token Factory\n * Creates border tokens with consistent values\n */\nexport class BorderTokenFactory {\n /**\n * Create a border width token\n */\n static createWidth(width: BorderWidth): BorderToken[\"width\"] {\n const widthMap: Record<BorderWidth, { px: number; tailwind: string }> = {\n none: {\n px: 0,\n tailwind: \"border-0\",\n },\n thin: {\n px: 1,\n tailwind: \"border\",\n },\n base: {\n px: 1,\n tailwind: \"border\",\n },\n medium: {\n px: 2,\n tailwind: \"border-2\",\n },\n thick: {\n px: 4,\n tailwind: \"border-4\",\n },\n };\n\n const config = widthMap[width];\n return {\n value: config.px,\n px: `${config.px}px`,\n tailwind: config.tailwind,\n };\n }\n\n /**\n * Create a complete border token\n */\n static create(width: BorderWidth, style: BorderStyle = \"solid\"): BorderToken {\n return {\n width: this.createWidth(width),\n style,\n description: `${width} ${style} border`,\n };\n }\n}\n\n/**\n * Pre-defined border tokens\n */\nexport const BORDER_TOKENS = {\n none: BorderTokenFactory.create(\"none\"),\n thin: BorderTokenFactory.create(\"thin\"),\n base: BorderTokenFactory.create(\"base\"),\n medium: BorderTokenFactory.create(\"medium\"),\n thick: BorderTokenFactory.create(\"thick\"),\n // Dashed variants\n thinDashed: BorderTokenFactory.create(\"thin\", \"dashed\"),\n baseDashed: BorderTokenFactory.create(\"base\", \"dashed\"),\n // Dotted variants\n thinDotted: BorderTokenFactory.create(\"thin\", \"dotted\"),\n baseDotted: BorderTokenFactory.create(\"base\", \"dotted\"),\n} as const;\n\n/**\n * Helper function to get border token\n */\nexport function getBorder(size: keyof typeof BORDER_TOKENS): BorderToken {\n return BORDER_TOKENS[size];\n}\n\n/**\n * Helper function to get border width as Tailwind class\n */\nexport function getBorderWidthClass(width: BorderWidth): string {\n return BorderTokenFactory.createWidth(width).tailwind;\n}\n\n/**\n * Helper function to get border style as Tailwind class\n */\nexport function getBorderStyleClass(style: BorderStyle): string {\n const styleMap: Record<BorderStyle, string> = {\n solid: \"border-solid\",\n dashed: \"border-dashed\",\n dotted: \"border-dotted\",\n };\n return styleMap[style];\n}\n\n/**\n * Helper function to get complete border classes\n */\nexport function getBorderClasses(\n width: BorderWidth,\n style: BorderStyle = \"solid\",\n): string {\n return `${getBorderWidthClass(width)} ${getBorderStyleClass(style)}`;\n}\n"],"names":["BorderTokenFactory","width","config","style","getBorderWidthClass"],"mappings":";AAwBO,MAAMA,EAAmB;AAAA;AAAA;AAAA;AAAA,EAI9B,OAAO,YAAYC,GAA0C;AAwB3D,UAAMC,IAvBkE;AAAA,MACtE,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,UAAU;AAAA,MAAA;AAAA,MAEZ,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,UAAU;AAAA,MAAA;AAAA,MAEZ,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,UAAU;AAAA,MAAA;AAAA,MAEZ,QAAQ;AAAA,QACN,IAAI;AAAA,QACJ,UAAU;AAAA,MAAA;AAAA,MAEZ,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,UAAU;AAAA,MAAA;AAAA,IACZ,EAGsBD,CAAK;AAC7B,WAAO;AAAA,MACL,OAAOC,EAAO;AAAA,MACd,IAAI,GAAGA,EAAO,EAAE;AAAA,MAChB,UAAUA,EAAO;AAAA,IAAA;AAAA,EAErB;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,OAAOD,GAAoBE,IAAqB,SAAsB;AAC3E,WAAO;AAAA,MACL,OAAO,KAAK,YAAYF,CAAK;AAAA,MAC7B,OAAAE;AAAA,MACA,aAAa,GAAGF,CAAK,IAAIE,CAAK;AAAA,IAAA;AAAA,EAElC;AACF;AAMQH,EAAmB,OAAO,MAAM,GAChCA,EAAmB,OAAO,MAAM,GAChCA,EAAmB,OAAO,MAAM,GAC9BA,EAAmB,OAAO,QAAQ,GACnCA,EAAmB,OAAO,OAAO,GAE5BA,EAAmB,OAAO,QAAQ,QAAQ,GAC1CA,EAAmB,OAAO,QAAQ,QAAQ,GAE1CA,EAAmB,OAAO,QAAQ,QAAQ,GAC1CA,EAAmB,OAAO,QAAQ,QAAQ;AAajD,SAASI,EAAoBH,GAA4B;AAC9D,SAAOD,EAAmB,YAAYC,CAAK,EAAE;AAC/C;"}
@@ -0,0 +1,43 @@
1
+ "use client";
2
+ class t {
3
+ /**
4
+ * Create breakpoint token
5
+ */
6
+ static create(e) {
7
+ const i = {
8
+ sm: { minWidth: 640, tailwind: "sm" },
9
+ md: { minWidth: 768, tailwind: "md" },
10
+ lg: { minWidth: 1024, tailwind: "lg" },
11
+ xl: { minWidth: 1280, tailwind: "xl" },
12
+ "2xl": { minWidth: 1536, tailwind: "2xl" }
13
+ }[e];
14
+ return {
15
+ name: e,
16
+ minWidth: i.minWidth,
17
+ px: `${i.minWidth}px`,
18
+ rem: `${i.minWidth / 16}rem`,
19
+ tailwind: i.tailwind
20
+ };
21
+ }
22
+ }
23
+ const r = {
24
+ sm: t.create("sm"),
25
+ md: t.create("md"),
26
+ lg: t.create("lg"),
27
+ xl: t.create("xl"),
28
+ "2xl": t.create("2xl")
29
+ };
30
+ function d(n) {
31
+ return r[n];
32
+ }
33
+ function m(n, e = "min") {
34
+ const a = r[n];
35
+ return `@media (${e === "min" ? "min-width" : "max-width"}: ${a.px})`;
36
+ }
37
+ export {
38
+ r as BREAKPOINT_TOKENS,
39
+ t as BreakpointTokenFactory,
40
+ d as getBreakpoint,
41
+ m as getMediaQuery
42
+ };
43
+ //# sourceMappingURL=breakpoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breakpoints.js","sources":["../../../../src/ui/tokens/breakpoints.ts"],"sourcesContent":["/**\n * Breakpoint Tokens\n *\n * Responsive breakpoints for consistent media queries.\n * Uses Factory Pattern for type-safe breakpoint creation.\n */\n\nexport type BreakpointName = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\n\nexport interface BreakpointToken {\n name: BreakpointName;\n minWidth: number;\n px: string;\n rem: string;\n tailwind: string;\n}\n\n/**\n * Breakpoint Token Factory\n * Creates breakpoint tokens with consistent values\n */\nexport class BreakpointTokenFactory {\n /**\n * Create breakpoint token\n */\n static create(name: BreakpointName): BreakpointToken {\n const breakpointMap: Record<\n BreakpointName,\n { minWidth: number; tailwind: string }\n > = {\n sm: { minWidth: 640, tailwind: \"sm\" },\n md: { minWidth: 768, tailwind: \"md\" },\n lg: { minWidth: 1024, tailwind: \"lg\" },\n xl: { minWidth: 1280, tailwind: \"xl\" },\n \"2xl\": { minWidth: 1536, tailwind: \"2xl\" },\n };\n\n const config = breakpointMap[name];\n return {\n name,\n minWidth: config.minWidth,\n px: `${config.minWidth}px`,\n rem: `${config.minWidth / 16}rem`,\n tailwind: config.tailwind,\n };\n }\n}\n\n/**\n * Pre-defined breakpoint tokens\n */\nexport const BREAKPOINT_TOKENS: Record<BreakpointName, BreakpointToken> = {\n sm: BreakpointTokenFactory.create(\"sm\"),\n md: BreakpointTokenFactory.create(\"md\"),\n lg: BreakpointTokenFactory.create(\"lg\"),\n xl: BreakpointTokenFactory.create(\"xl\"),\n \"2xl\": BreakpointTokenFactory.create(\"2xl\"),\n} as const;\n\n/**\n * Helper function to get breakpoint token\n */\nexport function getBreakpoint(name: BreakpointName): BreakpointToken {\n return BREAKPOINT_TOKENS[name];\n}\n\n/**\n * Helper function to create media query string\n */\nexport function getMediaQuery(\n name: BreakpointName,\n direction: \"min\" | \"max\" = \"min\",\n): string {\n const breakpoint = BREAKPOINT_TOKENS[name];\n const operator = direction === \"min\" ? \"min-width\" : \"max-width\";\n return `@media (${operator}: ${breakpoint.px})`;\n}\n"],"names":["BreakpointTokenFactory","name","config","BREAKPOINT_TOKENS","getBreakpoint","getMediaQuery","direction","breakpoint"],"mappings":";AAqBO,MAAMA,EAAuB;AAAA;AAAA;AAAA;AAAA,EAIlC,OAAO,OAAOC,GAAuC;AAYnD,UAAMC,IARF;AAAA,MACF,IAAI,EAAE,UAAU,KAAK,UAAU,KAAA;AAAA,MAC/B,IAAI,EAAE,UAAU,KAAK,UAAU,KAAA;AAAA,MAC/B,IAAI,EAAE,UAAU,MAAM,UAAU,KAAA;AAAA,MAChC,IAAI,EAAE,UAAU,MAAM,UAAU,KAAA;AAAA,MAChC,OAAO,EAAE,UAAU,MAAM,UAAU,MAAA;AAAA,IAAM,EAGdD,CAAI;AACjC,WAAO;AAAA,MACL,MAAAA;AAAA,MACA,UAAUC,EAAO;AAAA,MACjB,IAAI,GAAGA,EAAO,QAAQ;AAAA,MACtB,KAAK,GAAGA,EAAO,WAAW,EAAE;AAAA,MAC5B,UAAUA,EAAO;AAAA,IAAA;AAAA,EAErB;AACF;AAKO,MAAMC,IAA6D;AAAA,EACxE,IAAIH,EAAuB,OAAO,IAAI;AAAA,EACtC,IAAIA,EAAuB,OAAO,IAAI;AAAA,EACtC,IAAIA,EAAuB,OAAO,IAAI;AAAA,EACtC,IAAIA,EAAuB,OAAO,IAAI;AAAA,EACtC,OAAOA,EAAuB,OAAO,KAAK;AAC5C;AAKO,SAASI,EAAcH,GAAuC;AACnE,SAAOE,EAAkBF,CAAI;AAC/B;AAKO,SAASI,EACdJ,GACAK,IAA2B,OACnB;AACR,QAAMC,IAAaJ,EAAkBF,CAAI;AAEzC,SAAO,WADUK,MAAc,QAAQ,cAAc,WAC3B,KAAKC,EAAW,EAAE;AAC9C;"}