@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,291 @@
1
+ "use client";
2
+ var fe = Object.defineProperty, ge = Object.defineProperties;
3
+ var pe = Object.getOwnPropertyDescriptors;
4
+ var S = Object.getOwnPropertySymbols;
5
+ var Z = Object.prototype.hasOwnProperty, _ = Object.prototype.propertyIsEnumerable;
6
+ var Y = (a, r, s) => r in a ? fe(a, r, { enumerable: !0, configurable: !0, writable: !0, value: s }) : a[r] = s, C = (a, r) => {
7
+ for (var s in r || (r = {}))
8
+ Z.call(r, s) && Y(a, s, r[s]);
9
+ if (S)
10
+ for (var s of S(r))
11
+ _.call(r, s) && Y(a, s, r[s]);
12
+ return a;
13
+ }, ee = (a, r) => ge(a, pe(r));
14
+ var ae = (a, r) => {
15
+ var s = {};
16
+ for (var e in a)
17
+ Z.call(a, e) && r.indexOf(e) < 0 && (s[e] = a[e]);
18
+ if (a != null && S)
19
+ for (var e of S(a))
20
+ r.indexOf(e) < 0 && _.call(a, e) && (s[e] = a[e]);
21
+ return s;
22
+ };
23
+ import { jsxs as w, jsx as c, Fragment as re } from "react/jsx-runtime";
24
+ import { forwardRef as ve, useRef as be, useId as E, useState as L } from "react";
25
+ import { getAnimationClass as te } from "../../tokens/animations.js";
26
+ import { getRadiusClass as h } from "../../tokens/radius.js";
27
+ import { getShadowClass as ye } from "../../tokens/shadows.js";
28
+ import { getSpacingClass as V } from "../../tokens/spacing.js";
29
+ import { getTypographyWeight as we, getTypographySize as se } from "../../tokens/typography.js";
30
+ import { cva as le } from "../../utils/cva.js";
31
+ import { cn as i } from "../../utils/cn.js";
32
+ const he = ve(function(xe, ce) {
33
+ var X = xe, {
34
+ value: r,
35
+ defaultValue: s,
36
+ min: e = 0,
37
+ max: u = 100,
38
+ step: j = 1,
39
+ variant: l = "single",
40
+ size: v = "md",
41
+ disabled: x = !1,
42
+ showValue: F = !1,
43
+ marks: ie = [],
44
+ onChange: g,
45
+ onValueChange: p,
46
+ label: Q,
47
+ className: ne = ""
48
+ } = X, oe = ae(X, [
49
+ "value",
50
+ "defaultValue",
51
+ "min",
52
+ "max",
53
+ "step",
54
+ "variant",
55
+ "size",
56
+ "disabled",
57
+ "showValue",
58
+ "marks",
59
+ "onChange",
60
+ "onValueChange",
61
+ "label",
62
+ "className"
63
+ ]);
64
+ const M = be(null), N = E(), z = E(), B = E(), [de, U] = L(
65
+ s || (l === "range" ? [e, u] : e)
66
+ ), [W, q] = L(!1), [G, H] = L(null), D = r !== void 0, d = D ? r : de, T = (t) => (t - e) / (u - e) * 100, J = (t) => {
67
+ if (!M.current) return e;
68
+ const n = M.current.getBoundingClientRect(), o = Math.max(
69
+ 0,
70
+ Math.min(1, (t - n.left) / n.width)
71
+ ), m = e + o * (u - e);
72
+ return Math.round(m / j) * j;
73
+ }, I = (t, n = "min") => {
74
+ if (x) return;
75
+ t.preventDefault(), q(!0), H(n);
76
+ const o = (A) => {
77
+ if (!M.current) return;
78
+ const f = J(A.clientX);
79
+ K(f, n);
80
+ }, m = () => {
81
+ q(!1), H(null), document.removeEventListener("mousemove", o), document.removeEventListener("mouseup", m);
82
+ };
83
+ document.addEventListener("mousemove", o), document.addEventListener("mouseup", m);
84
+ }, K = (t, n = "min") => {
85
+ const o = Math.max(e, Math.min(u, t));
86
+ if (l === "range") {
87
+ const [m, A] = Array.isArray(d) ? d : [e, u];
88
+ let f;
89
+ n === "min" ? f = [Math.min(o, A), A] : f = [m, Math.max(o, m)], D || U(f), g == null || g(f), p == null || p(f);
90
+ } else
91
+ D || U(o), g == null || g(o), p == null || p(o);
92
+ }, ue = (t) => {
93
+ if (x || W) return;
94
+ const n = J(t.clientX);
95
+ K(n);
96
+ }, me = () => "focus:ring-line-brand ring-offset-2", O = le(i("relative", "cursor-pointer"), {
97
+ variants: {
98
+ size: {
99
+ sm: "h-1",
100
+ md: "h-2",
101
+ lg: "h-3"
102
+ },
103
+ disabled: {
104
+ true: "opacity-50 cursor-not-allowed",
105
+ false: ""
106
+ }
107
+ },
108
+ defaultVariants: {
109
+ size: "md",
110
+ disabled: !1
111
+ }
112
+ }), R = le(
113
+ i(
114
+ "absolute",
115
+ "bg-surface-brand",
116
+ h("full"),
117
+ "border-2",
118
+ "border-white",
119
+ ye("md"),
120
+ "cursor-grab",
121
+ "active:cursor-grabbing",
122
+ te("base"),
123
+ "-translate-x-1/2",
124
+ "-translate-y-1/2",
125
+ "top-1/2"
126
+ ),
127
+ {
128
+ variants: {
129
+ size: {
130
+ sm: "w-3 h-3",
131
+ md: "w-4 h-4",
132
+ lg: "w-5 h-5"
133
+ },
134
+ active: {
135
+ true: me(),
136
+ false: ""
137
+ }
138
+ },
139
+ defaultVariants: {
140
+ size: "md",
141
+ active: !1
142
+ }
143
+ }
144
+ ), $ = typeof d == "number" ? d : d[0], b = Array.isArray(d) ? d[0] : e, y = Array.isArray(d) ? d[1] : $, k = T(b), P = T(y);
145
+ return /* @__PURE__ */ w("div", ee(C({ ref: ce, className: i("w-full", ne) }, oe), { children: [
146
+ /* @__PURE__ */ w(
147
+ "label",
148
+ {
149
+ id: N,
150
+ className: i(
151
+ "block",
152
+ se("bodySmall"),
153
+ we("label"),
154
+ "text-fg-primary",
155
+ V("sm", "mb")
156
+ ),
157
+ children: [
158
+ Q,
159
+ F && /* @__PURE__ */ c(
160
+ "span",
161
+ {
162
+ className: i(V("sm", "ml"), "text-fg-secondary"),
163
+ children: l === "range" ? `${b} - ${y}` : $
164
+ }
165
+ )
166
+ ]
167
+ }
168
+ ),
169
+ l === "range" && /* @__PURE__ */ w(re, { children: [
170
+ /* @__PURE__ */ c("span", { id: z, className: "sr-only", children: "minimum" }),
171
+ /* @__PURE__ */ c("span", { id: B, className: "sr-only", children: "maximum" })
172
+ ] }),
173
+ /* @__PURE__ */ w(
174
+ "div",
175
+ {
176
+ ref: M,
177
+ className: i(
178
+ O({ size: v, disabled: x }),
179
+ "bg-surface-muted",
180
+ h("full")
181
+ ),
182
+ onClick: ue,
183
+ role: l === "range" ? void 0 : "slider",
184
+ "aria-valuemin": l === "range" ? void 0 : e,
185
+ "aria-valuemax": l === "range" ? void 0 : u,
186
+ "aria-valuenow": l === "range" ? void 0 : $,
187
+ "aria-disabled": l === "range" ? void 0 : x,
188
+ "aria-labelledby": l === "range" ? void 0 : N,
189
+ children: [
190
+ /* @__PURE__ */ c(
191
+ "div",
192
+ {
193
+ className: i(
194
+ "absolute",
195
+ O({ size: v }),
196
+ "bg-surface-brand",
197
+ h("full"),
198
+ te("base")
199
+ ),
200
+ style: {
201
+ left: `${k}%`,
202
+ width: `${P - k}%`
203
+ }
204
+ }
205
+ ),
206
+ ie.map((t) => {
207
+ const n = T(t);
208
+ return /* @__PURE__ */ c(
209
+ "div",
210
+ {
211
+ className: i(
212
+ "absolute",
213
+ "w-1",
214
+ "h-1",
215
+ "bg-line-strong",
216
+ h("full"),
217
+ "-translate-x-1/2"
218
+ ),
219
+ style: {
220
+ left: `${n}%`,
221
+ top: "50%",
222
+ transform: "translate(-50%, -50%)"
223
+ }
224
+ },
225
+ t
226
+ );
227
+ }),
228
+ l === "range" ? /* @__PURE__ */ w(re, { children: [
229
+ /* @__PURE__ */ c(
230
+ "div",
231
+ {
232
+ className: i(
233
+ R({ size: v, active: G === "min" })
234
+ ),
235
+ style: { left: `${k}%` },
236
+ onMouseDown: (t) => I(t, "min"),
237
+ role: "slider",
238
+ "aria-valuemin": e,
239
+ "aria-valuemax": y,
240
+ "aria-valuenow": b,
241
+ "aria-labelledby": `${N} ${z}`
242
+ }
243
+ ),
244
+ /* @__PURE__ */ c(
245
+ "div",
246
+ {
247
+ className: i(
248
+ R({ size: v, active: G === "max" })
249
+ ),
250
+ style: { left: `${P}%` },
251
+ onMouseDown: (t) => I(t, "max"),
252
+ role: "slider",
253
+ "aria-valuemin": b,
254
+ "aria-valuemax": u,
255
+ "aria-valuenow": y,
256
+ "aria-labelledby": `${N} ${B}`
257
+ }
258
+ )
259
+ ] }) : /* @__PURE__ */ c(
260
+ "div",
261
+ {
262
+ className: i(R({ size: v, active: W })),
263
+ style: { left: `${P}%` },
264
+ onMouseDown: (t) => I(t)
265
+ }
266
+ ),
267
+ F && !Q && /* @__PURE__ */ c("div", { className: "absolute -top-6 left-0 right-0 flex justify-center", children: /* @__PURE__ */ c(
268
+ "span",
269
+ {
270
+ className: i(
271
+ se("caption"),
272
+ "text-fg-secondary",
273
+ "bg-surface-overlay",
274
+ V("sm", "px"),
275
+ V("xs", "py"),
276
+ h("md"),
277
+ "shadow"
278
+ ),
279
+ children: l === "range" ? `${b} - ${y}` : $
280
+ }
281
+ ) })
282
+ ]
283
+ }
284
+ )
285
+ ] }));
286
+ });
287
+ he.displayName = "Slider";
288
+ export {
289
+ he as default
290
+ };
291
+ //# sourceMappingURL=Slider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Slider.js","sources":["../../../../../src/ui/primitives/Slider/Slider.tsx"],"sourcesContent":["\"use client\";\n\nimport { useRef, useState, useId, forwardRef } from \"react\";\nimport type { HTMLAttributes } from \"react\";\nimport { getAnimationClass } from \"../../tokens/animations\";\nimport { getRadiusClass } from \"../../tokens/radius\";\nimport { getShadowClass } from \"../../tokens/shadows\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport {\n getTypographySize,\n getTypographyWeight,\n} from \"../../tokens/typography\";\nimport { cn, cva } from \"../../utils\";\n\nexport type SliderVariant = \"single\" | \"range\";\nexport type SliderSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface SliderProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onChange\" | \"defaultValue\"\n> {\n value?: number | [number, number];\n defaultValue?: number | [number, number];\n min?: number;\n max?: number;\n step?: number;\n variant?: SliderVariant;\n size?: SliderSize;\n disabled?: boolean;\n showValue?: boolean;\n marks?: number[];\n onChange?: (value: number | [number, number]) => void;\n onValueChange?: (value: number | [number, number]) => void;\n /**\n * Required label for the slider. Becomes the accessible name via\n * aria-labelledby — single variant references the rendered <label>\n * element directly; range variant references the same label plus a\n * sr-only qualifier (\"minimum\" / \"maximum\") so AT users can tell\n * which handle has focus. Make this a real domain term (\"Volume\",\n * \"Price range\"), not the element type (\"slider\").\n */\n label: string;\n}\n\n/**\n * Slider Component\n *\n * A range input component for selecting numeric values.\n * Supports single and dual thumb (range) modes.\n * Follows Atomic Design principles as an Atom component.\n *\n * @example\n * ```tsx\n * <Slider\n * value={50}\n * min={0}\n * max={100}\n * onChange={(value) => console.log(value)}\n * />\n *\n * <Slider\n * variant=\"range\"\n * value={[20, 80]}\n * min={0}\n * max={100}\n * onChange={(value) => console.log(value)}\n * />\n * ```\n */\nconst Slider = forwardRef<HTMLDivElement, SliderProps>(function Slider(\n {\n value: controlledValue,\n defaultValue,\n min = 0,\n max = 100,\n step = 1,\n variant = \"single\",\n size = \"md\",\n disabled = false,\n showValue = false,\n marks = [],\n onChange,\n onValueChange,\n label,\n className = \"\",\n ...props\n },\n ref,\n) {\n const sliderRef = useRef<HTMLDivElement>(null);\n // Stable IDs for the visible <label> and (for range) the sr-only\n // qualifier spans that distinguish min vs max handles. Range\n // accessible name = label + qualifier via aria-labelledby with two\n // ids (\"Price range minimum\" / \"Price range maximum\"), so the\n // visible label remains the single source of truth — changing\n // `label` propagates to both handles automatically.\n const labelId = useId();\n const minQualifierId = useId();\n const maxQualifierId = useId();\n const [internalValue, setInternalValue] = useState<number | [number, number]>(\n defaultValue || (variant === \"range\" ? [min, max] : min),\n );\n const [isDragging, setIsDragging] = useState(false);\n const [activeThumb, setActiveThumb] = useState<\"min\" | \"max\" | null>(null);\n\n const isControlled = controlledValue !== undefined;\n const currentValue = isControlled ? controlledValue : internalValue;\n\n const getPercentage = (val: number) => ((val - min) / (max - min)) * 100;\n\n const getValueFromPosition = (clientX: number): number => {\n if (!sliderRef.current) return min;\n const rect = sliderRef.current.getBoundingClientRect();\n const percentage = Math.max(\n 0,\n Math.min(1, (clientX - rect.left) / rect.width),\n );\n const rawValue = min + percentage * (max - min);\n return Math.round(rawValue / step) * step;\n };\n\n const handleMouseDown = (\n e: React.MouseEvent,\n thumb: \"min\" | \"max\" = \"min\",\n ) => {\n if (disabled) return;\n e.preventDefault();\n setIsDragging(true);\n setActiveThumb(thumb);\n\n const handleMouseMove = (moveEvent: MouseEvent) => {\n if (!sliderRef.current) return;\n const newValue = getValueFromPosition(moveEvent.clientX);\n updateValue(newValue, thumb);\n };\n\n const handleMouseUp = () => {\n setIsDragging(false);\n setActiveThumb(null);\n document.removeEventListener(\"mousemove\", handleMouseMove);\n document.removeEventListener(\"mouseup\", handleMouseUp);\n };\n\n document.addEventListener(\"mousemove\", handleMouseMove);\n document.addEventListener(\"mouseup\", handleMouseUp);\n };\n\n const updateValue = (newValue: number, thumb: \"min\" | \"max\" = \"min\") => {\n const clampedValue = Math.max(min, Math.min(max, newValue));\n\n if (variant === \"range\") {\n const [minVal, maxVal] = Array.isArray(currentValue)\n ? currentValue\n : [min, max];\n let updatedValue: [number, number];\n\n if (thumb === \"min\") {\n updatedValue = [Math.min(clampedValue, maxVal), maxVal];\n } else {\n updatedValue = [minVal, Math.max(clampedValue, minVal)];\n }\n\n if (!isControlled) {\n setInternalValue(updatedValue);\n }\n onChange?.(updatedValue);\n onValueChange?.(updatedValue);\n } else {\n if (!isControlled) {\n setInternalValue(clampedValue);\n }\n onChange?.(clampedValue);\n onValueChange?.(clampedValue);\n }\n };\n\n const handleTrackClick = (e: React.MouseEvent) => {\n if (disabled || isDragging) return;\n const newValue = getValueFromPosition(e.clientX);\n updateValue(newValue);\n };\n\n // Get focus ring color using design system helper\n const getFocusRingColor = (): string => {\n return \"focus:ring-line-brand\" + \" ring-offset-2\";\n };\n\n // Slider variants using CVA\n const sliderTrackVariants = cva(cn(\"relative\", \"cursor-pointer\"), {\n variants: {\n size: {\n sm: \"h-1\",\n md: \"h-2\",\n lg: \"h-3\",\n },\n disabled: {\n true: \"opacity-50 cursor-not-allowed\",\n false: \"\",\n },\n },\n defaultVariants: {\n size: \"md\",\n disabled: false,\n },\n });\n\n const sliderThumbVariants = cva(\n cn(\n \"absolute\",\n \"bg-surface-brand\",\n getRadiusClass(\"full\"),\n \"border-2\",\n \"border-white\",\n getShadowClass(\"md\"),\n \"cursor-grab\",\n \"active:cursor-grabbing\",\n getAnimationClass(\"base\"),\n \"-translate-x-1/2\",\n \"-translate-y-1/2\",\n \"top-1/2\",\n ),\n {\n variants: {\n size: {\n sm: \"w-3 h-3\",\n md: \"w-4 h-4\",\n lg: \"w-5 h-5\",\n },\n active: {\n true: getFocusRingColor(),\n false: \"\",\n },\n },\n defaultVariants: {\n size: \"md\",\n active: false,\n },\n },\n );\n\n // Configuration for styling variants\n // const _config = {\n // track: sliderTrackVariants({ size, disabled }),\n // thumb: sliderThumbVariants({ size }),\n // };\n const singleValue =\n typeof currentValue === \"number\" ? currentValue : currentValue[0];\n const minValue = Array.isArray(currentValue) ? currentValue[0] : min;\n const maxValue = Array.isArray(currentValue) ? currentValue[1] : singleValue;\n\n const minPercentage = getPercentage(minValue);\n const maxPercentage = getPercentage(maxValue);\n\n return (\n <div ref={ref} className={cn(\"w-full\", className)} {...props}>\n <label\n id={labelId}\n className={cn(\n \"block\",\n getTypographySize(\"bodySmall\"),\n getTypographyWeight(\"label\"),\n \"text-fg-primary\",\n getSpacingClass(\"sm\", \"mb\"),\n )}\n >\n {label}\n {showValue && (\n <span\n className={cn(getSpacingClass(\"sm\", \"ml\"), \"text-fg-secondary\")}\n >\n {variant === \"range\" ? `${minValue} - ${maxValue}` : singleValue}\n </span>\n )}\n </label>\n {variant === \"range\" && (\n <>\n <span id={minQualifierId} className=\"sr-only\">\n minimum\n </span>\n <span id={maxQualifierId} className=\"sr-only\">\n maximum\n </span>\n </>\n )}\n <div\n ref={sliderRef}\n className={cn(\n sliderTrackVariants({ size, disabled }),\n \"bg-surface-muted\",\n getRadiusClass(\"full\"),\n )}\n onClick={handleTrackClick}\n role={variant === \"range\" ? undefined : \"slider\"}\n aria-valuemin={variant === \"range\" ? undefined : min}\n aria-valuemax={variant === \"range\" ? undefined : max}\n aria-valuenow={variant === \"range\" ? undefined : singleValue}\n aria-disabled={variant === \"range\" ? undefined : disabled}\n aria-labelledby={variant === \"range\" ? undefined : labelId}\n >\n {/* Active track */}\n <div\n className={cn(\n \"absolute\",\n sliderTrackVariants({ size }),\n \"bg-surface-brand\",\n getRadiusClass(\"full\"),\n getAnimationClass(\"base\"),\n )}\n style={{\n left: `${minPercentage}%`,\n width: `${maxPercentage - minPercentage}%`,\n }}\n />\n\n {/* Marks */}\n {marks.map((mark) => {\n const markPercentage = getPercentage(mark);\n return (\n <div\n key={mark}\n className={cn(\n \"absolute\",\n \"w-1\",\n \"h-1\",\n \"bg-line-strong\",\n getRadiusClass(\"full\"),\n \"-translate-x-1/2\",\n )}\n style={{\n left: `${markPercentage}%`,\n top: \"50%\",\n transform: \"translate(-50%, -50%)\",\n }}\n />\n );\n })}\n\n {/* Thumbs */}\n {variant === \"range\" ? (\n <>\n <div\n className={cn(\n sliderThumbVariants({ size, active: activeThumb === \"min\" }),\n )}\n style={{ left: `${minPercentage}%` }}\n onMouseDown={(e) => handleMouseDown(e, \"min\")}\n role=\"slider\"\n aria-valuemin={min}\n aria-valuemax={maxValue}\n aria-valuenow={minValue}\n aria-labelledby={`${labelId} ${minQualifierId}`}\n />\n <div\n className={cn(\n sliderThumbVariants({ size, active: activeThumb === \"max\" }),\n )}\n style={{ left: `${maxPercentage}%` }}\n onMouseDown={(e) => handleMouseDown(e, \"max\")}\n role=\"slider\"\n aria-valuemin={minValue}\n aria-valuemax={max}\n aria-valuenow={maxValue}\n aria-labelledby={`${labelId} ${maxQualifierId}`}\n />\n </>\n ) : (\n <div\n className={cn(sliderThumbVariants({ size, active: isDragging }))}\n style={{ left: `${maxPercentage}%` }}\n onMouseDown={(e) => handleMouseDown(e)}\n />\n )}\n\n {showValue && !label && (\n <div className=\"absolute -top-6 left-0 right-0 flex justify-center\">\n <span\n className={cn(\n getTypographySize(\"caption\"),\n \"text-fg-secondary\",\n \"bg-surface-overlay\",\n getSpacingClass(\"sm\", \"px\"),\n getSpacingClass(\"xs\", \"py\"),\n getRadiusClass(\"md\"),\n \"shadow\",\n )}\n >\n {variant === \"range\" ? `${minValue} - ${maxValue}` : singleValue}\n </span>\n </div>\n )}\n </div>\n </div>\n );\n});\n\nSlider.displayName = \"Slider\";\n\nexport default Slider;\n"],"names":["Slider","forwardRef","_a","ref","_b","controlledValue","defaultValue","min","max","step","variant","size","disabled","showValue","marks","onChange","onValueChange","label","className","props","__objRest","sliderRef","useRef","labelId","useId","minQualifierId","maxQualifierId","internalValue","setInternalValue","useState","isDragging","setIsDragging","activeThumb","setActiveThumb","isControlled","currentValue","getPercentage","val","getValueFromPosition","clientX","rect","percentage","rawValue","handleMouseDown","e","thumb","handleMouseMove","moveEvent","newValue","updateValue","handleMouseUp","clampedValue","minVal","maxVal","updatedValue","handleTrackClick","getFocusRingColor","sliderTrackVariants","cva","cn","sliderThumbVariants","getRadiusClass","getShadowClass","getAnimationClass","singleValue","minValue","maxValue","minPercentage","maxPercentage","jsxs","getTypographySize","getTypographyWeight","getSpacingClass","jsx","Fragment","mark","markPercentage"],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ "use client";
2
+ var u = Object.defineProperty, x = Object.defineProperties;
3
+ var h = Object.getOwnPropertyDescriptors;
4
+ var n = Object.getOwnPropertySymbols;
5
+ var o = Object.prototype.hasOwnProperty, p = Object.prototype.propertyIsEnumerable;
6
+ var m = (r, a, e) => a in r ? u(r, a, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[a] = e, d = (r, a) => {
7
+ for (var e in a || (a = {}))
8
+ o.call(a, e) && m(r, e, a[e]);
9
+ if (n)
10
+ for (var e of n(a))
11
+ p.call(a, e) && m(r, e, a[e]);
12
+ return r;
13
+ }, l = (r, a) => x(r, h(a));
14
+ var c = (r, a) => {
15
+ var e = {};
16
+ for (var i in r)
17
+ o.call(r, i) && a.indexOf(i) < 0 && (e[i] = r[i]);
18
+ if (r != null && n)
19
+ for (var i of n(r))
20
+ a.indexOf(i) < 0 && p.call(r, i) && (e[i] = r[i]);
21
+ return e;
22
+ };
23
+ import { jsxs as v, jsx as f } from "react/jsx-runtime";
24
+ import { memo as S } from "react";
25
+ import { Loader2 as N } from "lucide-react";
26
+ import { getSpacingClass as w } from "../../tokens/spacing.js";
27
+ import { getTypographySize as z } from "../../tokens/typography.js";
28
+ import { cn as t } from "../../utils/cn.js";
29
+ import { cva as b } from "../../utils/cva.js";
30
+ const j = b("motion-safe:animate-spin", {
31
+ variants: {
32
+ size: {
33
+ sm: "h-4 w-4",
34
+ md: "h-5 w-5",
35
+ lg: "h-8 w-8"
36
+ },
37
+ variant: {
38
+ primary: "text-fg-brand",
39
+ secondary: "text-fg-brand-secondary",
40
+ neutral: "text-fg-secondary"
41
+ }
42
+ },
43
+ defaultVariants: {
44
+ size: "md",
45
+ variant: "primary"
46
+ }
47
+ }), L = S(function(V) {
48
+ var s = V, {
49
+ size: a = "md",
50
+ variant: e = "primary",
51
+ label: i,
52
+ className: y = ""
53
+ } = s, g = c(s, [
54
+ "size",
55
+ "variant",
56
+ "label",
57
+ "className"
58
+ ]);
59
+ return /* @__PURE__ */ v(
60
+ "div",
61
+ l(d({
62
+ className: t("inline-flex", "items-center", y),
63
+ role: "status",
64
+ "aria-label": i || "Loading",
65
+ "aria-live": "polite"
66
+ }, g), {
67
+ children: [
68
+ /* @__PURE__ */ f(
69
+ N,
70
+ {
71
+ className: t(j({ size: a, variant: e })),
72
+ "aria-hidden": "true"
73
+ }
74
+ ),
75
+ i && /* @__PURE__ */ f(
76
+ "span",
77
+ {
78
+ className: t(
79
+ w("sm", "ml"),
80
+ z("bodySmall"),
81
+ "text-fg-secondary",
82
+ "sr-only"
83
+ ),
84
+ children: i
85
+ }
86
+ )
87
+ ]
88
+ })
89
+ );
90
+ });
91
+ L.displayName = "Spinner";
92
+ export {
93
+ L as default
94
+ };
95
+ //# sourceMappingURL=Spinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Spinner.js","sources":["../../../../../src/ui/primitives/Spinner/Spinner.tsx"],"sourcesContent":["\"use client\";\n\nimport { memo } from \"react\";\nimport type { HTMLAttributes } from \"react\";\nimport { Loader2 } from \"lucide-react\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport { getTypographySize } from \"../../tokens/typography\";\nimport { cn, cva } from \"../../utils\";\n\nexport type SpinnerSize = \"sm\" | \"md\" | \"lg\";\nexport type SpinnerVariant = \"primary\" | \"secondary\" | \"neutral\";\n\nexport interface SpinnerProps extends HTMLAttributes<HTMLDivElement> {\n size?: SpinnerSize;\n variant?: SpinnerVariant;\n label?: string;\n}\n\n/**\n * Spinner Component\n *\n * A loading spinner component for indicating loading states.\n * Follows Atomic Design principles as an Atom component.\n * Uses Strategy Pattern for different size/variant combinations.\n *\n * @example\n * ```tsx\n * <Spinner size=\"md\" variant=\"primary\" label=\"Loading...\" />\n * ```\n */\n// Spinner variants using CVA\nconst spinnerVariants = cva(\"motion-safe:animate-spin\", {\n variants: {\n size: {\n sm: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-8 w-8\",\n },\n variant: {\n primary: \"text-fg-brand\",\n secondary: \"text-fg-brand-secondary\",\n neutral: \"text-fg-secondary\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"primary\",\n },\n});\n\nconst Spinner = memo(function Spinner({\n size = \"md\",\n variant = \"primary\",\n label,\n className = \"\",\n ...props\n}: SpinnerProps) {\n return (\n <div\n className={cn(\"inline-flex\", \"items-center\", className)}\n role=\"status\"\n aria-label={label || \"Loading\"}\n aria-live=\"polite\"\n {...props}\n >\n <Loader2\n className={cn(spinnerVariants({ size, variant }))}\n aria-hidden=\"true\"\n />\n {label && (\n <span\n className={cn(\n getSpacingClass(\"sm\", \"ml\"),\n getTypographySize(\"bodySmall\"),\n \"text-fg-secondary\",\n \"sr-only\",\n )}\n >\n {label}\n </span>\n )}\n </div>\n );\n});\n\nSpinner.displayName = \"Spinner\";\n\nexport default Spinner;\n"],"names":["spinnerVariants","cva","Spinner","memo","_a","_b","size","variant","label","className","props","__objRest","jsxs","__spreadProps","__spreadValues","cn","jsx","Loader2","getSpacingClass","getTypographySize"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,MAAMA,IAAkBC,EAAI,4BAA4B;AAAA,EACtD,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,IAEN,SAAS;AAAA,MACP,SAAS;AAAA,MACT,WAAW;AAAA,MACX,SAAS;AAAA,IAAA;AAAA,EACX;AAAA,EAEF,iBAAiB;AAAA,IACf,MAAM;AAAA,IACN,SAAS;AAAA,EAAA;AAEb,CAAC,GAEKC,IAAUC,EAAK,SAAiBC,GAMrB;AANqB,MAAAC,IAAAD,GACpC;AAAA,UAAAE,IAAO;AAAA,IACP,SAAAC,IAAU;AAAA,IACV,OAAAC;AAAA,IACA,WAAAC,IAAY;AAAA,MAJwBJ,GAKjCK,IAAAC,EALiCN,GAKjC;AAAA,IAJH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGA,SACE,gBAAAO;AAAA,IAAC;AAAA,IAAAC,EAAAC,EAAA;AAAA,MACC,WAAWC,EAAG,eAAe,gBAAgBN,CAAS;AAAA,MACtD,MAAK;AAAA,MACL,cAAYD,KAAS;AAAA,MACrB,aAAU;AAAA,OACNE,IALL;AAAA,MAOC,UAAA;AAAA,QAAA,gBAAAM;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,WAAWF,EAAGf,EAAgB,EAAE,MAAAM,GAAM,SAAAC,EAAA,CAAS,CAAC;AAAA,YAChD,eAAY;AAAA,UAAA;AAAA,QAAA;AAAA,QAEbC,KACC,gBAAAQ;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWD;AAAA,cACTG,EAAgB,MAAM,IAAI;AAAA,cAC1BC,EAAkB,WAAW;AAAA,cAC7B;AAAA,cACA;AAAA,YAAA;AAAA,YAGD,UAAAX;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA;AAIR,CAAC;AAEDN,EAAQ,cAAc;"}
@@ -0,0 +1,212 @@
1
+ "use client";
2
+ var P = Object.defineProperty, Q = Object.defineProperties;
3
+ var U = Object.getOwnPropertyDescriptors;
4
+ var h = Object.getOwnPropertySymbols;
5
+ var T = Object.prototype.hasOwnProperty, A = Object.prototype.propertyIsEnumerable;
6
+ var D = (r, e, t) => e in r ? P(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t, i = (r, e) => {
7
+ for (var t in e || (e = {}))
8
+ T.call(e, t) && D(r, t, e[t]);
9
+ if (h)
10
+ for (var t of h(e))
11
+ A.call(e, t) && D(r, t, e[t]);
12
+ return r;
13
+ }, f = (r, e) => Q(r, U(e));
14
+ var F = (r, e) => {
15
+ var t = {};
16
+ for (var s in r)
17
+ T.call(r, s) && e.indexOf(s) < 0 && (t[s] = r[s]);
18
+ if (r != null && h)
19
+ for (var s of h(r))
20
+ e.indexOf(s) < 0 && A.call(r, s) && (t[s] = r[s]);
21
+ return t;
22
+ };
23
+ import { jsxs as w, jsx as b } from "react/jsx-runtime";
24
+ import { memo as V, forwardRef as X, useState as Y, useId as Z, useMemo as d, useCallback as K } from "react";
25
+ import { getAnimationClass as M } from "../../tokens/animations.js";
26
+ import { getRadiusClass as W } from "../../tokens/radius.js";
27
+ import { getSpacingClass as q } from "../../tokens/spacing.js";
28
+ import { getSwitchClasses as _ } from "../../tokens/switch.js";
29
+ import { getTypographyWeight as tt, getTypographySize as z } from "../../tokens/typography.js";
30
+ import { cn as y } from "../../utils/cn.js";
31
+ const rt = V(
32
+ X(function(et, G) {
33
+ var I = et, {
34
+ size: e = "md",
35
+ label: t,
36
+ helperText: s,
37
+ error: p = !1,
38
+ success: k = !1,
39
+ className: S = "",
40
+ disabled: n = !1,
41
+ checked: N,
42
+ defaultChecked: x,
43
+ onChange: a,
44
+ id: B
45
+ } = I, C = F(I, [
46
+ "size",
47
+ "label",
48
+ "helperText",
49
+ "error",
50
+ "success",
51
+ "className",
52
+ "disabled",
53
+ "checked",
54
+ "defaultChecked",
55
+ "onChange",
56
+ "id"
57
+ ]);
58
+ const g = N !== void 0, [H, E] = Y(
59
+ x != null ? x : !1
60
+ ), c = g ? !!N : H, J = Z(), m = B || `switch-${J}`, R = d(
61
+ () => t ? `${m}-label` : void 0,
62
+ [t, m]
63
+ ), $ = d(
64
+ () => s ? `${m}-helper` : void 0,
65
+ [s, m]
66
+ ), u = d(() => _(e), [e]), j = d(
67
+ () => "focus:border-line-focus".replace("focus:border-", "focus:ring-"),
68
+ []
69
+ ), L = d(
70
+ () => y(
71
+ "relative",
72
+ "inline-flex",
73
+ "shrink-0",
74
+ "cursor-pointer",
75
+ W("full"),
76
+ "border-2",
77
+ "border-transparent",
78
+ M("base"),
79
+ "focus:outline-none",
80
+ "focus:ring-2",
81
+ j,
82
+ "focus:ring-offset-2",
83
+ u.track,
84
+ c ? "bg-surface-brand" : "bg-surface-muted",
85
+ // Border feedback only shows in the off state — the on-state
86
+ // brand background already saturates the track and overrides
87
+ // any colored outline visually. Error wins over success.
88
+ p && !c && "border-error",
89
+ !p && k && !c && "border-success",
90
+ n && "opacity-50 cursor-not-allowed",
91
+ S
92
+ ),
93
+ [
94
+ j,
95
+ u.track,
96
+ c,
97
+ p,
98
+ k,
99
+ n,
100
+ S
101
+ ]
102
+ ), O = d(
103
+ () => y(
104
+ "pointer-events-none",
105
+ "inline-block",
106
+ W("full"),
107
+ "bg-surface-base",
108
+ "shadow",
109
+ "transform",
110
+ M("base"),
111
+ u.thumb,
112
+ c ? u.translate : "translate-x-0"
113
+ ),
114
+ [u.thumb, u.translate, c]
115
+ );
116
+ return /* @__PURE__ */ w("div", { className: y("flex", "items-start", q("md", "gap")), children: [
117
+ /* @__PURE__ */ w("div", { className: "flex items-center", children: [
118
+ /* @__PURE__ */ b(
119
+ "button",
120
+ {
121
+ type: "button",
122
+ className: L,
123
+ role: "switch",
124
+ "aria-checked": c,
125
+ "aria-labelledby": R,
126
+ "aria-describedby": $,
127
+ disabled: n,
128
+ onClick: K(
129
+ (o) => {
130
+ if (n) return;
131
+ const l = !c;
132
+ if (g || E(l), a) {
133
+ const v = f(i({}, o), {
134
+ target: f(i({}, o.target), { checked: l }),
135
+ currentTarget: f(i({}, o.currentTarget), { checked: l })
136
+ });
137
+ a(v);
138
+ }
139
+ },
140
+ [n, a, c, g]
141
+ ),
142
+ onKeyDown: K(
143
+ (o) => {
144
+ if (n || o.key !== "Enter" && o.key !== " ") return;
145
+ o.preventDefault();
146
+ const l = !c;
147
+ if (g || E(l), a) {
148
+ const v = f(i({}, o), {
149
+ target: f(i({}, o.target), { checked: l }),
150
+ currentTarget: f(i({}, o.currentTarget), { checked: l })
151
+ });
152
+ a(v);
153
+ }
154
+ },
155
+ [n, a, c, g]
156
+ ),
157
+ children: /* @__PURE__ */ b("span", { className: O })
158
+ }
159
+ ),
160
+ /* @__PURE__ */ b(
161
+ "input",
162
+ i({
163
+ ref: G,
164
+ type: "checkbox",
165
+ id: m,
166
+ checked: c,
167
+ onChange: a != null ? a : (() => {
168
+ }),
169
+ disabled: n,
170
+ className: "sr-only",
171
+ "aria-hidden": "true",
172
+ tabIndex: -1
173
+ }, C)
174
+ )
175
+ ] }),
176
+ (t || s) && /* @__PURE__ */ w("div", { className: "flex-1", children: [
177
+ t && /* @__PURE__ */ b(
178
+ "label",
179
+ {
180
+ id: R,
181
+ htmlFor: m,
182
+ className: y(
183
+ "block",
184
+ z("bodySmall"),
185
+ tt("label"),
186
+ p ? "text-fg-error" : "text-fg-primary",
187
+ n ? "opacity-50" : "cursor-pointer"
188
+ ),
189
+ children: t
190
+ }
191
+ ),
192
+ s && /* @__PURE__ */ b(
193
+ "p",
194
+ {
195
+ id: $,
196
+ className: y(
197
+ q("xs", "mt"),
198
+ z("bodySmall"),
199
+ p ? "text-fg-error" : k ? "text-fg-success" : "text-fg-secondary"
200
+ ),
201
+ children: s
202
+ }
203
+ )
204
+ ] })
205
+ ] });
206
+ })
207
+ );
208
+ rt.displayName = "Switch";
209
+ export {
210
+ rt as default
211
+ };
212
+ //# sourceMappingURL=Switch.js.map