@spark-ui/components 13.0.6 → 13.1.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 (827) hide show
  1. package/dist/Button-C3xHNaGl.js +2 -0
  2. package/dist/Button-C3xHNaGl.js.map +1 -0
  3. package/dist/{chunk-2YM6GKWW.mjs → Button-D32Avk2j.mjs} +130 -173
  4. package/dist/Button-D32Avk2j.mjs.map +1 -0
  5. package/dist/DialogContent.styles-BrhKaHc_.js +2 -0
  6. package/dist/DialogContent.styles-BrhKaHc_.js.map +1 -0
  7. package/dist/{chunk-XZ47F6TP.mjs → DialogContent.styles-WGWJS9dj.mjs} +6 -8
  8. package/dist/DialogContent.styles-WGWJS9dj.mjs.map +1 -0
  9. package/dist/Icon-Bf0XrmiR.js +2 -0
  10. package/dist/Icon-Bf0XrmiR.js.map +1 -0
  11. package/dist/Icon-D1RueiPY.mjs +58 -0
  12. package/dist/Icon-D1RueiPY.mjs.map +1 -0
  13. package/dist/IconButton-BY3gYXtU.mjs +43 -0
  14. package/dist/IconButton-BY3gYXtU.mjs.map +1 -0
  15. package/dist/IconButton-Bf-EDzpI.js +2 -0
  16. package/dist/IconButton-Bf-EDzpI.js.map +1 -0
  17. package/dist/Slot-C98rL4yy.mjs +14 -0
  18. package/dist/Slot-C98rL4yy.mjs.map +1 -0
  19. package/dist/Slot-ghrohQLA.js +2 -0
  20. package/dist/Slot-ghrohQLA.js.map +1 -0
  21. package/dist/{chunk-GAK4SC2F.mjs → Spinner-CYL5kyzM.mjs} +29 -40
  22. package/dist/Spinner-CYL5kyzM.mjs.map +1 -0
  23. package/dist/Spinner-DK8VEsaR.js +2 -0
  24. package/dist/Spinner-DK8VEsaR.js.map +1 -0
  25. package/dist/{chunk-RKPP7ZOK.mjs → TextLink-3MEVs3No.mjs} +27 -36
  26. package/dist/TextLink-3MEVs3No.mjs.map +1 -0
  27. package/dist/TextLink-DD0VO37q.js +2 -0
  28. package/dist/TextLink-DD0VO37q.js.map +1 -0
  29. package/dist/VisuallyHidden-AoRh4WRK.js +2 -0
  30. package/dist/VisuallyHidden-AoRh4WRK.js.map +1 -0
  31. package/dist/VisuallyHidden-ByNP7ZUI.mjs +28 -0
  32. package/dist/VisuallyHidden-ByNP7ZUI.mjs.map +1 -0
  33. package/dist/accordion/Accordion.d.ts +27 -0
  34. package/dist/accordion/AccordionItem.d.ts +12 -0
  35. package/dist/accordion/AccordionItemContent.d.ts +12 -0
  36. package/dist/accordion/AccordionItemHeader.d.ts +9 -0
  37. package/dist/accordion/AccordionItemTrigger.d.ts +12 -0
  38. package/dist/accordion/index.d.ts +10 -68
  39. package/dist/accordion/index.js +2 -325
  40. package/dist/accordion/index.js.map +1 -1
  41. package/dist/accordion/index.mjs +632 -154
  42. package/dist/accordion/index.mjs.map +1 -1
  43. package/dist/accordion/useRenderSlot.d.ts +3 -0
  44. package/dist/alert-dialog/AlertDialog.d.ts +29 -0
  45. package/dist/alert-dialog/AlertDialogAction.d.ts +13 -0
  46. package/dist/alert-dialog/AlertDialogBody.d.ts +12 -0
  47. package/dist/alert-dialog/AlertDialogCancel.d.ts +13 -0
  48. package/dist/alert-dialog/AlertDialogContent.d.ts +9 -0
  49. package/dist/alert-dialog/AlertDialogContext.d.ts +12 -0
  50. package/dist/alert-dialog/AlertDialogDescription.d.ts +9 -0
  51. package/dist/alert-dialog/AlertDialogFooter.d.ts +10 -0
  52. package/dist/alert-dialog/AlertDialogHeader.d.ts +10 -0
  53. package/dist/alert-dialog/AlertDialogOverlay.d.ts +9 -0
  54. package/dist/alert-dialog/AlertDialogPortal.d.ts +7 -0
  55. package/dist/alert-dialog/AlertDialogTitle.d.ts +9 -0
  56. package/dist/alert-dialog/AlertDialogTrigger.d.ts +13 -0
  57. package/dist/alert-dialog/index.d.ts +26 -147
  58. package/dist/alert-dialog/index.js +35 -405
  59. package/dist/alert-dialog/index.js.map +1 -1
  60. package/dist/alert-dialog/index.mjs +2513 -258
  61. package/dist/alert-dialog/index.mjs.map +1 -1
  62. package/dist/alert-dialog/useRenderSlot.d.ts +3 -0
  63. package/dist/avatar/Avatar.d.ts +3 -0
  64. package/dist/avatar/AvatarAction.d.ts +9 -0
  65. package/dist/avatar/AvatarImage.d.ts +7 -0
  66. package/dist/avatar/AvatarOnlineBadge.d.ts +9 -0
  67. package/dist/avatar/AvatarPlaceholder.d.ts +8 -0
  68. package/dist/avatar/AvatarUser.d.ts +7 -0
  69. package/dist/avatar/context.d.ts +5 -0
  70. package/dist/avatar/index.d.ts +8 -59
  71. package/dist/avatar/index.js +2 -1323
  72. package/dist/avatar/index.js.map +1 -1
  73. package/dist/avatar/index.mjs +149 -207
  74. package/dist/avatar/index.mjs.map +1 -1
  75. package/dist/avatar/types.d.ts +24 -0
  76. package/dist/badge/Badge.d.ts +9 -0
  77. package/dist/badge/BadgeItem.d.ts +31 -0
  78. package/dist/badge/BadgeItem.styles.d.ts +7 -0
  79. package/dist/badge/index.d.ts +1 -47
  80. package/dist/badge/index.js +2 -122
  81. package/dist/badge/index.js.map +1 -1
  82. package/dist/badge/index.mjs +32 -44
  83. package/dist/badge/index.mjs.map +1 -1
  84. package/dist/breadcrumb/Breadcrumb.d.ts +10 -0
  85. package/dist/breadcrumb/Breadcrumb.styles.d.ts +0 -0
  86. package/dist/breadcrumb/BreadcrumbCurrentPage.d.ts +11 -0
  87. package/dist/breadcrumb/BreadcrumbItem.d.ts +9 -0
  88. package/dist/breadcrumb/BreadcrumbLink.d.ts +12 -0
  89. package/dist/breadcrumb/BreadcrumbSeparator.d.ts +10 -0
  90. package/dist/breadcrumb/index.d.ts +7 -59
  91. package/dist/breadcrumb/index.js +2 -327
  92. package/dist/breadcrumb/index.js.map +1 -1
  93. package/dist/breadcrumb/index.mjs +106 -146
  94. package/dist/breadcrumb/index.mjs.map +1 -1
  95. package/dist/button/Button.d.ts +26 -0
  96. package/dist/button/Button.styles.d.ts +10 -0
  97. package/dist/button/index.d.ts +1 -41
  98. package/dist/button/index.js +2 -935
  99. package/dist/button/index.js.map +1 -1
  100. package/dist/button/index.mjs +3 -8
  101. package/dist/button/index.mjs.map +1 -1
  102. package/dist/button/variants/contrast.d.ts +45 -0
  103. package/dist/button/variants/filled.d.ts +45 -0
  104. package/dist/button/variants/ghost.d.ts +45 -0
  105. package/dist/button/variants/index.d.ts +5 -0
  106. package/dist/button/variants/outlined.d.ts +45 -0
  107. package/dist/button/variants/tinted.d.ts +45 -0
  108. package/dist/card/Backdrop.d.ts +14 -0
  109. package/dist/card/Card.d.ts +16 -0
  110. package/dist/card/Card.styles.d.ts +7 -0
  111. package/dist/card/Content.d.ts +15 -0
  112. package/dist/card/Content.styles.d.ts +8 -0
  113. package/dist/card/context.d.ts +11 -0
  114. package/dist/card/index.d.ts +5 -58
  115. package/dist/card/index.js +2 -502
  116. package/dist/card/index.js.map +1 -1
  117. package/dist/card/index.mjs +125 -178
  118. package/dist/card/index.mjs.map +1 -1
  119. package/dist/card/utils.d.ts +3 -0
  120. package/dist/carousel/Carousel.d.ts +12 -0
  121. package/dist/carousel/CarouselControls.d.ts +9 -0
  122. package/dist/carousel/CarouselNextButton.d.ts +5 -0
  123. package/dist/carousel/CarouselPageIndicator.d.ts +14 -0
  124. package/dist/carousel/CarouselPagePicker.d.ts +14 -0
  125. package/dist/carousel/CarouselPrevButton.d.ts +5 -0
  126. package/dist/carousel/CarouselSlide.d.ts +12 -0
  127. package/dist/carousel/CarouselSlides.d.ts +10 -0
  128. package/dist/carousel/CarouselViewport.d.ts +9 -0
  129. package/dist/carousel/index.d.ts +18 -263
  130. package/dist/carousel/index.js +2 -1882
  131. package/dist/carousel/index.js.map +1 -1
  132. package/dist/carousel/index.mjs +428 -650
  133. package/dist/carousel/index.mjs.map +1 -1
  134. package/dist/carousel/{index.d.mts → types.d.ts} +13 -112
  135. package/dist/carousel/useCarousel.d.ts +2 -0
  136. package/dist/carousel/useCarouselVisibility.d.ts +13 -0
  137. package/dist/carousel/useEvent.d.ts +7 -0
  138. package/dist/carousel/useIsMounted.d.ts +1 -0
  139. package/dist/carousel/useIsVisible.d.ts +6 -0
  140. package/dist/carousel/useResizeObserver.d.ts +2 -0
  141. package/dist/carousel/useScrollEnd.d.ts +3 -0
  142. package/dist/carousel/useSnapPoints.d.ts +10 -0
  143. package/dist/carousel/utils.d.ts +24 -0
  144. package/dist/checkbox/Checkbox.d.ts +10 -0
  145. package/dist/checkbox/CheckboxGroup.d.ts +18 -0
  146. package/dist/checkbox/CheckboxGroup.styles.d.ts +5 -0
  147. package/dist/checkbox/CheckboxGroupContext.d.ts +41 -0
  148. package/dist/checkbox/CheckboxIndicator.d.ts +9 -0
  149. package/dist/checkbox/CheckboxInput.d.ts +47 -0
  150. package/dist/checkbox/CheckboxInput.styles.d.ts +5 -0
  151. package/dist/checkbox/CheckboxLabel.d.ts +12 -0
  152. package/dist/checkbox/CheckboxLabel.styles.d.ts +5 -0
  153. package/dist/checkbox/index.d.ts +2 -120
  154. package/dist/checkbox/index.js +2 -511
  155. package/dist/checkbox/index.js.map +1 -1
  156. package/dist/checkbox/index.mjs +371 -226
  157. package/dist/checkbox/index.mjs.map +1 -1
  158. package/dist/chip/Chip.d.ts +34 -0
  159. package/dist/chip/Chip.styles.d.ts +8 -0
  160. package/dist/chip/ChipClearButton.d.ts +10 -0
  161. package/dist/chip/ChipClearButton.styles.d.ts +10 -0
  162. package/dist/chip/ChipContent.d.ts +8 -0
  163. package/dist/chip/ChipIcon.d.ts +8 -0
  164. package/dist/chip/ChipLeadingIcon.d.ts +9 -0
  165. package/dist/chip/ChipTrailingIcon.d.ts +9 -0
  166. package/dist/chip/index.d.ts +10 -92
  167. package/dist/chip/index.js +2 -908
  168. package/dist/chip/index.js.map +1 -1
  169. package/dist/chip/index.mjs +390 -322
  170. package/dist/chip/index.mjs.map +1 -1
  171. package/dist/chip/useChipContext.d.ts +4 -0
  172. package/dist/chip/useChipElement.d.ts +41 -0
  173. package/dist/chip/variants/dashed.d.ts +49 -0
  174. package/dist/chip/variants/index.d.ts +3 -0
  175. package/dist/chip/variants/outlined.d.ts +49 -0
  176. package/dist/chip/variants/tinted.d.ts +49 -0
  177. package/dist/collapsible/Content.d.ts +12 -0
  178. package/dist/collapsible/Root.d.ts +12 -0
  179. package/dist/collapsible/Trigger.d.ts +11 -0
  180. package/dist/collapsible/index.d.ts +4 -40
  181. package/dist/collapsible/index.js +2 -109
  182. package/dist/collapsible/index.js.map +1 -1
  183. package/dist/collapsible/index.mjs +214 -58
  184. package/dist/collapsible/index.mjs.map +1 -1
  185. package/dist/collapsible/useRenderSlot.d.ts +3 -0
  186. package/dist/combobox/Combobox.d.ts +6 -0
  187. package/dist/combobox/ComboboxClearButton.d.ts +9 -0
  188. package/dist/combobox/ComboboxContext.d.ts +108 -0
  189. package/dist/combobox/ComboboxDisclosure.d.ts +13 -0
  190. package/dist/combobox/ComboboxEmpty.d.ts +11 -0
  191. package/dist/combobox/ComboboxGroup.d.ts +11 -0
  192. package/dist/combobox/ComboboxInput.d.ts +15 -0
  193. package/dist/combobox/ComboboxItem.d.ts +12 -0
  194. package/dist/combobox/ComboboxItemContext.d.ts +17 -0
  195. package/dist/combobox/ComboboxItemIndicator.d.ts +11 -0
  196. package/dist/combobox/ComboboxItemText.d.ts +10 -0
  197. package/dist/combobox/ComboboxItems.d.ts +11 -0
  198. package/dist/combobox/ComboboxItemsGroupContext.d.ts +8 -0
  199. package/dist/combobox/ComboboxLabel.d.ts +11 -0
  200. package/dist/combobox/ComboboxLeadingIcon.d.ts +7 -0
  201. package/dist/combobox/ComboboxPopover.d.ts +10 -0
  202. package/dist/combobox/ComboboxPortal.d.ts +2 -0
  203. package/dist/combobox/ComboboxSelectedItems.d.ts +4 -0
  204. package/dist/combobox/ComboboxTrigger.d.ts +11 -0
  205. package/dist/combobox/ComboboxTrigger.styles.d.ts +6 -0
  206. package/dist/combobox/index.d.ts +19 -271
  207. package/dist/combobox/index.js +2 -2588
  208. package/dist/combobox/index.js.map +1 -1
  209. package/dist/combobox/index.mjs +623 -1017
  210. package/dist/combobox/index.mjs.map +1 -1
  211. package/dist/combobox/tests/test-utils.d.ts +8 -0
  212. package/dist/combobox/types.d.ts +8 -0
  213. package/dist/combobox/useCombobox/multipleSelectionReducer.d.ts +13 -0
  214. package/dist/combobox/useCombobox/singleSelectionReducer.d.ts +8 -0
  215. package/dist/combobox/utils/index.d.ts +14 -0
  216. package/dist/combobox/utils/useWidthIncreaseCallback.d.ts +2 -0
  217. package/dist/composite-Br3kM5N9.mjs +40 -0
  218. package/dist/composite-Br3kM5N9.mjs.map +1 -0
  219. package/dist/composite-fJD9R7R0.js +2 -0
  220. package/dist/composite-fJD9R7R0.js.map +1 -0
  221. package/dist/detectBrowser-Bc7rk5fI.mjs +44 -0
  222. package/dist/detectBrowser-Bc7rk5fI.mjs.map +1 -0
  223. package/dist/detectBrowser-DTbs_30X.js +2 -0
  224. package/dist/detectBrowser-DTbs_30X.js.map +1 -0
  225. package/dist/dialog/Dialog.d.ts +32 -0
  226. package/dist/dialog/DialogBody.d.ts +12 -0
  227. package/dist/dialog/DialogClose.d.ts +9 -0
  228. package/dist/dialog/DialogCloseButton.d.ts +9 -0
  229. package/dist/dialog/DialogContent.d.ts +14 -0
  230. package/dist/dialog/DialogContent.styles.d.ts +6 -0
  231. package/dist/dialog/DialogContext.d.ts +11 -0
  232. package/dist/dialog/DialogDescription.d.ts +9 -0
  233. package/dist/dialog/DialogFooter.d.ts +10 -0
  234. package/dist/dialog/DialogHeader.d.ts +10 -0
  235. package/dist/dialog/DialogOverlay.d.ts +9 -0
  236. package/dist/dialog/DialogPortal.d.ts +7 -0
  237. package/dist/dialog/DialogTitle.d.ts +9 -0
  238. package/dist/dialog/DialogTrigger.d.ts +17 -0
  239. package/dist/dialog/index.d.ts +25 -154
  240. package/dist/dialog/index.js +2 -1389
  241. package/dist/dialog/index.js.map +1 -1
  242. package/dist/dialog/index.mjs +163 -258
  243. package/dist/dialog/index.mjs.map +1 -1
  244. package/dist/divider/Divider.d.ts +30 -0
  245. package/dist/divider/Divider.styles.d.ts +9 -0
  246. package/dist/divider/DividerContent.d.ts +13 -0
  247. package/dist/divider/index.d.ts +4 -59
  248. package/dist/divider/index.js +2 -224
  249. package/dist/divider/index.js.map +1 -1
  250. package/dist/divider/index.mjs +97 -100
  251. package/dist/divider/index.mjs.map +1 -1
  252. package/dist/divider/variants/intents.d.ts +17 -0
  253. package/dist/downshift.esm-Ncwetv0s.mjs +3038 -0
  254. package/dist/downshift.esm-Ncwetv0s.mjs.map +1 -0
  255. package/dist/downshift.esm-PfCOUbxq.js +37 -0
  256. package/dist/downshift.esm-PfCOUbxq.js.map +1 -0
  257. package/dist/drawer/Drawer.d.ts +39 -0
  258. package/dist/drawer/DrawerBody.d.ts +11 -0
  259. package/dist/drawer/DrawerBody.styles.d.ts +5 -0
  260. package/dist/drawer/DrawerClose.d.ts +9 -0
  261. package/dist/drawer/DrawerCloseButton.d.ts +7 -0
  262. package/dist/drawer/DrawerContent.d.ts +10 -0
  263. package/dist/drawer/DrawerContent.styles.d.ts +6 -0
  264. package/dist/drawer/DrawerContext.d.ts +9 -0
  265. package/dist/drawer/DrawerDescription.d.ts +9 -0
  266. package/dist/drawer/DrawerFooter.d.ts +8 -0
  267. package/dist/drawer/DrawerHeader.d.ts +10 -0
  268. package/dist/drawer/DrawerOverlay.d.ts +9 -0
  269. package/dist/drawer/DrawerPortal.d.ts +7 -0
  270. package/dist/drawer/DrawerTitle.d.ts +9 -0
  271. package/dist/drawer/DrawerTrigger.d.ts +13 -0
  272. package/dist/drawer/index.d.ts +24 -141
  273. package/dist/drawer/index.js +2 -1400
  274. package/dist/drawer/index.js.map +1 -1
  275. package/dist/drawer/index.mjs +141 -230
  276. package/dist/drawer/index.mjs.map +1 -1
  277. package/dist/dropdown/Dropdown.d.ts +6 -0
  278. package/dist/dropdown/DropdownContext.d.ts +81 -0
  279. package/dist/dropdown/DropdownDivider.d.ts +10 -0
  280. package/dist/dropdown/DropdownGroup.d.ts +11 -0
  281. package/dist/dropdown/DropdownItem.d.ts +12 -0
  282. package/dist/dropdown/DropdownItemContext.d.ts +17 -0
  283. package/dist/dropdown/DropdownItemIndicator.d.ts +11 -0
  284. package/dist/dropdown/DropdownItemText.d.ts +9 -0
  285. package/dist/dropdown/DropdownItems.d.ts +21 -0
  286. package/dist/dropdown/DropdownItemsGroupContext.d.ts +8 -0
  287. package/dist/dropdown/DropdownLabel.d.ts +11 -0
  288. package/dist/dropdown/DropdownLeadingIcon.d.ts +7 -0
  289. package/dist/dropdown/DropdownPopover.d.ts +6 -0
  290. package/dist/dropdown/DropdownPortal.d.ts +2 -0
  291. package/dist/dropdown/DropdownTrigger.d.ts +12 -0
  292. package/dist/dropdown/DropdownTrigger.styles.d.ts +5 -0
  293. package/dist/dropdown/DropdownValue.d.ts +11 -0
  294. package/dist/dropdown/index.d.ts +16 -220
  295. package/dist/dropdown/index.js +2 -2051
  296. package/dist/dropdown/index.js.map +1 -1
  297. package/dist/dropdown/index.mjs +352 -584
  298. package/dist/dropdown/index.mjs.map +1 -1
  299. package/dist/dropdown/types.d.ts +8 -0
  300. package/dist/dropdown/useDropdown.d.ts +41 -0
  301. package/dist/dropdown/utils.d.ts +13 -0
  302. package/dist/file-upload/FileUpload.d.ts +130 -0
  303. package/dist/file-upload/FileUploadAcceptedFile.d.ts +25 -0
  304. package/dist/file-upload/FileUploadContext.d.ts +17 -0
  305. package/dist/file-upload/FileUploadDropzone.d.ts +10 -0
  306. package/dist/file-upload/FileUploadItemDeleteTrigger.d.ts +11 -0
  307. package/dist/file-upload/FileUploadPreviewImage.d.ts +17 -0
  308. package/dist/file-upload/FileUploadRejectedFile.d.ts +24 -0
  309. package/dist/file-upload/FileUploadRejectedFileDeleteTrigger.d.ts +12 -0
  310. package/dist/file-upload/FileUploadTrigger.d.ts +12 -0
  311. package/dist/file-upload/constants.d.ts +29 -0
  312. package/dist/file-upload/index.d.ts +14 -262
  313. package/dist/file-upload/index.js +2 -2255
  314. package/dist/file-upload/index.js.map +1 -1
  315. package/dist/file-upload/index.mjs +506 -834
  316. package/dist/file-upload/index.mjs.map +1 -1
  317. package/dist/file-upload/test-utils.d.ts +9 -0
  318. package/dist/file-upload/useFileUploadState.d.ts +88 -0
  319. package/dist/file-upload/utils.d.ts +40 -0
  320. package/dist/floating-ui.utils.dom-CCN4I08l.js +2 -0
  321. package/dist/floating-ui.utils.dom-CCN4I08l.js.map +1 -0
  322. package/dist/floating-ui.utils.dom-uiDUZc_y.mjs +136 -0
  323. package/dist/floating-ui.utils.dom-uiDUZc_y.mjs.map +1 -0
  324. package/dist/form-field/FormField.d.ts +21 -0
  325. package/dist/form-field/FormFieldAlertMessage.d.ts +9 -0
  326. package/dist/form-field/FormFieldCharactersCount.d.ts +26 -0
  327. package/dist/form-field/FormFieldContext.d.ts +49 -0
  328. package/dist/form-field/FormFieldControl.d.ts +12 -0
  329. package/dist/form-field/FormFieldErrorMessage.d.ts +9 -0
  330. package/dist/form-field/FormFieldHelperMessage.d.ts +9 -0
  331. package/dist/form-field/FormFieldLabel.d.ts +13 -0
  332. package/dist/form-field/FormFieldMessage.d.ts +8 -0
  333. package/dist/form-field/FormFieldProvider.d.ts +9 -0
  334. package/dist/form-field/FormFieldRequiredIndicator.d.ts +9 -0
  335. package/dist/form-field/FormFieldStateMessage.d.ts +10 -0
  336. package/dist/form-field/FormFieldSuccessMessage.d.ts +9 -0
  337. package/dist/form-field/index.d.ts +21 -176
  338. package/dist/form-field/index.js +2 -553
  339. package/dist/form-field/index.js.map +1 -1
  340. package/dist/form-field/index.mjs +246 -349
  341. package/dist/form-field/index.mjs.map +1 -1
  342. package/dist/icon/Icon.d.ts +17 -0
  343. package/dist/icon/Icon.styles.d.ts +6 -0
  344. package/dist/icon/index.d.ts +1 -28
  345. package/dist/icon/index.js +2 -127
  346. package/dist/icon/index.js.map +1 -1
  347. package/dist/icon/index.mjs +3 -7
  348. package/dist/icon/index.mjs.map +1 -1
  349. package/dist/icon-button/IconButton.d.ts +10 -0
  350. package/dist/icon-button/IconButton.styles.d.ts +5 -0
  351. package/dist/icon-button/index.d.ts +1 -16
  352. package/dist/icon-button/index.js +2 -980
  353. package/dist/icon-button/index.js.map +1 -1
  354. package/dist/icon-button/index.mjs +3 -9
  355. package/dist/icon-button/index.mjs.map +1 -1
  356. package/dist/index-0KYGKeVg.js +2 -0
  357. package/dist/index-0KYGKeVg.js.map +1 -0
  358. package/dist/index-1WIgmEZh.js +2 -0
  359. package/dist/index-1WIgmEZh.js.map +1 -0
  360. package/dist/index-BRi38DTc.mjs +21 -0
  361. package/dist/index-BRi38DTc.mjs.map +1 -0
  362. package/dist/index-BZAtNKwE.mjs +71 -0
  363. package/dist/index-BZAtNKwE.mjs.map +1 -0
  364. package/dist/index-BZPx6jYI.mjs +9 -0
  365. package/dist/index-BZPx6jYI.mjs.map +1 -0
  366. package/dist/index-BlkdpEIe.mjs +55 -0
  367. package/dist/index-BlkdpEIe.mjs.map +1 -0
  368. package/dist/index-BmAFn37q.mjs +49 -0
  369. package/dist/index-BmAFn37q.mjs.map +1 -0
  370. package/dist/index-C-J_tHdS.js +6 -0
  371. package/dist/index-C-J_tHdS.js.map +1 -0
  372. package/dist/index-C1qb0595.mjs +28 -0
  373. package/dist/index-C1qb0595.mjs.map +1 -0
  374. package/dist/index-C34GgsKQ.mjs +54 -0
  375. package/dist/index-C34GgsKQ.mjs.map +1 -0
  376. package/dist/index-CCKe-Mpx.mjs +7 -0
  377. package/dist/index-CCKe-Mpx.mjs.map +1 -0
  378. package/dist/index-CDBBjNXc.js +2 -0
  379. package/dist/index-CDBBjNXc.js.map +1 -0
  380. package/dist/index-CYjGhVvU.mjs +243 -0
  381. package/dist/index-CYjGhVvU.mjs.map +1 -0
  382. package/dist/index-ChLwd62c.js +2 -0
  383. package/dist/index-ChLwd62c.js.map +1 -0
  384. package/dist/index-Cjj_rUPu.js +2 -0
  385. package/dist/index-Cjj_rUPu.js.map +1 -0
  386. package/dist/index-CyMbLkj0.js +2 -0
  387. package/dist/index-CyMbLkj0.js.map +1 -0
  388. package/dist/index-DFZozV_h.mjs +69 -0
  389. package/dist/index-DFZozV_h.mjs.map +1 -0
  390. package/dist/index-DKuHkHFX.js +2 -0
  391. package/dist/index-DKuHkHFX.js.map +1 -0
  392. package/dist/index-DLHLIYPI.mjs +16 -0
  393. package/dist/index-DLHLIYPI.mjs.map +1 -0
  394. package/dist/index-DO-atGp-.js +2 -0
  395. package/dist/index-DO-atGp-.js.map +1 -0
  396. package/dist/index-DWlg8lkk.mjs +179 -0
  397. package/dist/index-DWlg8lkk.mjs.map +1 -0
  398. package/dist/index-DYxWvftI.js +2 -0
  399. package/dist/index-DYxWvftI.js.map +1 -0
  400. package/dist/index-D_lWkK39.mjs +803 -0
  401. package/dist/index-D_lWkK39.mjs.map +1 -0
  402. package/dist/index-DdkVj7D0.js +18 -0
  403. package/dist/index-DdkVj7D0.js.map +1 -0
  404. package/dist/index-De-6atSi.js +2 -0
  405. package/dist/index-De-6atSi.js.map +1 -0
  406. package/dist/index-DhGWNzsz.mjs +83 -0
  407. package/dist/index-DhGWNzsz.mjs.map +1 -0
  408. package/dist/index-Dkj4QRX8.js +2 -0
  409. package/dist/index-Dkj4QRX8.js.map +1 -0
  410. package/dist/index-DlIFg0Eu.mjs +60 -0
  411. package/dist/index-DlIFg0Eu.mjs.map +1 -0
  412. package/dist/index-DnaHaH_0.js +2 -0
  413. package/dist/index-DnaHaH_0.js.map +1 -0
  414. package/dist/index-MHF2-CYX.js +2 -0
  415. package/dist/index-MHF2-CYX.js.map +1 -0
  416. package/dist/index-MQ0c3ZX_.js +2 -0
  417. package/dist/index-MQ0c3ZX_.js.map +1 -0
  418. package/dist/index-MSR-vgWR.mjs +37 -0
  419. package/dist/index-MSR-vgWR.mjs.map +1 -0
  420. package/dist/index-VL0YEmOW.mjs +125 -0
  421. package/dist/index-VL0YEmOW.mjs.map +1 -0
  422. package/dist/index-tXqxYME3.js +42 -0
  423. package/dist/index-tXqxYME3.js.map +1 -0
  424. package/dist/inertValue-Bif5Sqs6.mjs +522 -0
  425. package/dist/inertValue-Bif5Sqs6.mjs.map +1 -0
  426. package/dist/inertValue-ShwihJSN.js +5 -0
  427. package/dist/inertValue-ShwihJSN.js.map +1 -0
  428. package/dist/input/Input.d.ts +14 -0
  429. package/dist/input/Input.styles.d.ts +11 -0
  430. package/dist/input/InputAddon.d.ts +9 -0
  431. package/dist/input/InputAddon.styles.d.ts +9 -0
  432. package/dist/input/InputClearButton.d.ts +12 -0
  433. package/dist/input/InputGroup.d.ts +17 -0
  434. package/dist/input/InputGroup.styles.d.ts +6 -0
  435. package/dist/input/InputGroupContext.d.ts +14 -0
  436. package/dist/input/InputIcon.d.ts +6 -0
  437. package/dist/input/InputLeadingAddon.d.ts +11 -0
  438. package/dist/input/InputLeadingIcon.d.ts +7 -0
  439. package/dist/input/InputTrailingAddon.d.ts +11 -0
  440. package/dist/input/InputTrailingIcon.d.ts +7 -0
  441. package/dist/input/index.d.ts +15 -72
  442. package/dist/input/index.js +2 -724
  443. package/dist/input/index.js.map +1 -1
  444. package/dist/input/index.mjs +453 -12
  445. package/dist/input/index.mjs.map +1 -1
  446. package/dist/input-otp/InputOTP.d.ts +85 -0
  447. package/dist/input-otp/InputOTP.styles.d.ts +10 -0
  448. package/dist/input-otp/InputOTPContext.d.ts +16 -0
  449. package/dist/input-otp/InputOTPGroup.d.ts +7 -0
  450. package/dist/input-otp/InputOTPSeparator.d.ts +7 -0
  451. package/dist/input-otp/InputOTPSlot.d.ts +12 -0
  452. package/dist/input-otp/index.d.ts +14 -0
  453. package/dist/input-otp/index.js +2 -0
  454. package/dist/input-otp/index.js.map +1 -0
  455. package/dist/input-otp/index.mjs +390 -0
  456. package/dist/input-otp/index.mjs.map +1 -0
  457. package/dist/input-otp/useInputOTP.d.ts +45 -0
  458. package/dist/kbd/Kbd.d.ts +5 -0
  459. package/dist/kbd/index.d.ts +1 -9
  460. package/dist/kbd/index.js +2 -47
  461. package/dist/kbd/index.js.map +1 -1
  462. package/dist/kbd/index.mjs +15 -18
  463. package/dist/kbd/index.mjs.map +1 -1
  464. package/dist/label/Label.d.ts +9 -0
  465. package/dist/label/LabelRequiredIndicator.d.ts +6 -0
  466. package/dist/label/index.d.ts +5 -9
  467. package/dist/label/index.js +2 -78
  468. package/dist/label/index.js.map +1 -1
  469. package/dist/label/index.mjs +3 -5
  470. package/dist/label/index.mjs.map +1 -1
  471. package/dist/link-box/LinkBox.d.ts +8 -0
  472. package/dist/link-box/LinkBoxLink.d.ts +8 -0
  473. package/dist/link-box/LinkBoxRaised.d.ts +9 -0
  474. package/dist/link-box/index.d.ts +6 -31
  475. package/dist/link-box/index.js +2 -92
  476. package/dist/link-box/index.js.map +1 -1
  477. package/dist/link-box/index.mjs +34 -56
  478. package/dist/link-box/index.mjs.map +1 -1
  479. package/dist/pagination/Pagination.d.ts +8 -0
  480. package/dist/pagination/PaginationContext.d.ts +43 -0
  481. package/dist/pagination/PaginationEllipsis.d.ts +9 -0
  482. package/dist/pagination/PaginationFirstPageTrigger.d.ts +16 -0
  483. package/dist/pagination/PaginationItem.d.ts +17 -0
  484. package/dist/pagination/PaginationLastPageTrigger.d.ts +16 -0
  485. package/dist/pagination/PaginationNextTrigger.d.ts +16 -0
  486. package/dist/pagination/PaginationPages.d.ts +16 -0
  487. package/dist/pagination/PaginationPrevTrigger.d.ts +16 -0
  488. package/dist/pagination/index.d.ts +10 -135
  489. package/dist/pagination/index.js +2 -1353
  490. package/dist/pagination/index.js.map +1 -1
  491. package/dist/pagination/index.mjs +893 -268
  492. package/dist/pagination/index.mjs.map +1 -1
  493. package/dist/pagination/utils.d.ts +1 -0
  494. package/dist/popover/Popover.d.ts +9 -0
  495. package/dist/popover/PopoverAnchor.d.ts +9 -0
  496. package/dist/popover/PopoverArrow.d.ts +9 -0
  497. package/dist/popover/PopoverCloseButton.d.ts +10 -0
  498. package/dist/popover/PopoverContent.d.ts +10 -0
  499. package/dist/popover/PopoverContent.styles.d.ts +9 -0
  500. package/dist/popover/PopoverContext.d.ts +15 -0
  501. package/dist/popover/PopoverHeader.d.ts +10 -0
  502. package/dist/popover/PopoverPortal.d.ts +7 -0
  503. package/dist/popover/PopoverTrigger.d.ts +9 -0
  504. package/dist/popover/index.d.ts +17 -6
  505. package/dist/popover/index.js +2 -1339
  506. package/dist/popover/index.js.map +1 -1
  507. package/dist/popover/index.mjs +1868 -11
  508. package/dist/popover/index.mjs.map +1 -1
  509. package/dist/portal/{index.d.mts → Portal.d.ts} +2 -5
  510. package/dist/portal/index.d.ts +1 -13
  511. package/dist/portal/index.js +2 -37
  512. package/dist/portal/index.js.map +1 -1
  513. package/dist/portal/index.mjs +5 -8
  514. package/dist/portal/index.mjs.map +1 -1
  515. package/dist/progress/Progress.d.ts +16 -0
  516. package/dist/progress/ProgressBar.d.ts +6 -0
  517. package/dist/progress/ProgressBar.styles.d.ts +5 -0
  518. package/dist/progress/ProgressContext.d.ts +13 -0
  519. package/dist/progress/ProgressIndicator.d.ts +6 -0
  520. package/dist/progress/ProgressIndicator.styles.d.ts +7 -0
  521. package/dist/progress/ProgressLabel.d.ts +6 -0
  522. package/dist/progress/index.d.ts +9 -48
  523. package/dist/progress/index.js +6 -239
  524. package/dist/progress/index.js.map +1 -1
  525. package/dist/progress/index.mjs +241 -5
  526. package/dist/progress/index.mjs.map +1 -1
  527. package/dist/progress-tracker/ProgressTracker.d.ts +27 -0
  528. package/dist/progress-tracker/ProgressTracker.styles.d.ts +1 -0
  529. package/dist/progress-tracker/ProgressTrackerContext.d.ts +15 -0
  530. package/dist/progress-tracker/ProgressTrackerStep.d.ts +12 -0
  531. package/dist/progress-tracker/ProgressTrackerStep.styles.d.ts +10 -0
  532. package/dist/progress-tracker/ProgressTrackerStepIndicator.d.ts +15 -0
  533. package/dist/progress-tracker/ProgressTrackerStepIndicator.styles.d.ts +7 -0
  534. package/dist/progress-tracker/ProgressTrackerStepLabel.d.ts +9 -0
  535. package/dist/progress-tracker/index.d.ts +10 -80
  536. package/dist/progress-tracker/index.js +2 -571
  537. package/dist/progress-tracker/index.js.map +1 -1
  538. package/dist/progress-tracker/index.mjs +115 -183
  539. package/dist/progress-tracker/index.mjs.map +1 -1
  540. package/dist/radio-group/Radio.d.ts +9 -0
  541. package/dist/radio-group/RadioGroup.d.ts +54 -0
  542. package/dist/radio-group/RadioGroup.styles.d.ts +5 -0
  543. package/dist/radio-group/RadioGroupContext.d.ts +5 -0
  544. package/dist/radio-group/RadioGroupProvider.d.ts +7 -0
  545. package/dist/radio-group/RadioIndicator.d.ts +18 -0
  546. package/dist/radio-group/RadioIndicator.styles.d.ts +5 -0
  547. package/dist/radio-group/RadioInput.d.ts +25 -0
  548. package/dist/radio-group/RadioInput.styles.d.ts +5 -0
  549. package/dist/radio-group/RadioLabel.d.ts +20 -0
  550. package/dist/radio-group/RadioLabel.styles.d.ts +5 -0
  551. package/dist/radio-group/index.d.ts +5 -98
  552. package/dist/radio-group/index.js +2 -318
  553. package/dist/radio-group/index.js.map +1 -1
  554. package/dist/radio-group/index.mjs +332 -174
  555. package/dist/radio-group/index.mjs.map +1 -1
  556. package/dist/rating/Rating.d.ts +52 -0
  557. package/dist/rating/RatingStar.d.ts +10 -0
  558. package/dist/rating/RatingStar.styles.d.ts +14 -0
  559. package/dist/rating/index.d.ts +1 -78
  560. package/dist/rating/index.js +2 -363
  561. package/dist/rating/index.js.map +1 -1
  562. package/dist/rating/index.mjs +125 -170
  563. package/dist/rating/index.mjs.map +1 -1
  564. package/dist/rating/types.d.ts +1 -0
  565. package/dist/rating/utils.d.ts +8 -0
  566. package/dist/scrolling-list/ScrollingList.d.ts +57 -0
  567. package/dist/scrolling-list/ScrollingListControls.d.ts +18 -0
  568. package/dist/scrolling-list/ScrollingListItem.d.ts +17 -0
  569. package/dist/scrolling-list/ScrollingListItems.d.ts +11 -0
  570. package/dist/scrolling-list/ScrollingListNextButton.d.ts +5 -0
  571. package/dist/scrolling-list/ScrollingListPrevButton.d.ts +5 -0
  572. package/dist/scrolling-list/ScrollingListSkipButton.d.ts +9 -0
  573. package/dist/scrolling-list/index.d.ts +14 -117
  574. package/dist/scrolling-list/index.js +2 -1428
  575. package/dist/scrolling-list/index.js.map +1 -1
  576. package/dist/scrolling-list/index.mjs +358 -325
  577. package/dist/scrolling-list/index.mjs.map +1 -1
  578. package/dist/scrolling-list/useFocusWithinScroll.d.ts +3 -0
  579. package/dist/segmented-gauge/{index.d.mts → SegmentedGauge.d.ts} +4 -43
  580. package/dist/segmented-gauge/SegmentedGaugeContext.d.ts +14 -0
  581. package/dist/segmented-gauge/SegmentedGaugeLabel.d.ts +9 -0
  582. package/dist/segmented-gauge/SegmentedGaugeSegment.d.ts +12 -0
  583. package/dist/segmented-gauge/SegmentedGaugeTrack.d.ts +8 -0
  584. package/dist/segmented-gauge/index.d.ts +9 -101
  585. package/dist/segmented-gauge/index.js +2 -274
  586. package/dist/segmented-gauge/index.js.map +1 -1
  587. package/dist/segmented-gauge/index.mjs +132 -178
  588. package/dist/segmented-gauge/index.mjs.map +1 -1
  589. package/dist/select/Select.d.ts +6 -0
  590. package/dist/select/SelectContext.d.ts +59 -0
  591. package/dist/select/SelectGroup.d.ts +11 -0
  592. package/dist/select/SelectItem.d.ts +11 -0
  593. package/dist/select/SelectItems.d.ts +10 -0
  594. package/dist/select/SelectItemsGroupContext.d.ts +9 -0
  595. package/dist/select/SelectLabel.d.ts +8 -0
  596. package/dist/select/SelectLeadingIcon.d.ts +7 -0
  597. package/dist/select/SelectPlaceholder.d.ts +10 -0
  598. package/dist/select/SelectTrigger.d.ts +16 -0
  599. package/dist/select/SelectTrigger.styles.d.ts +5 -0
  600. package/dist/select/SelectValue.d.ts +15 -0
  601. package/dist/select/index.d.ts +12 -158
  602. package/dist/select/index.js +2 -581
  603. package/dist/select/index.js.map +1 -1
  604. package/dist/select/index.mjs +207 -339
  605. package/dist/select/index.mjs.map +1 -1
  606. package/dist/select/types.d.ts +6 -0
  607. package/dist/select/utils.d.ts +4 -0
  608. package/dist/skeleton/Skeleton.d.ts +17 -0
  609. package/dist/skeleton/Skeleton.styles.d.ts +5 -0
  610. package/dist/skeleton/SkeletonItem.d.ts +31 -0
  611. package/dist/skeleton/SkeletonItem.styles.d.ts +8 -0
  612. package/dist/skeleton/index.d.ts +8 -67
  613. package/dist/skeleton/index.js +2 -206
  614. package/dist/skeleton/index.js.map +1 -1
  615. package/dist/skeleton/index.mjs +64 -96
  616. package/dist/skeleton/index.mjs.map +1 -1
  617. package/dist/slider/Slider.d.ts +55 -0
  618. package/dist/slider/Slider.styles.d.ts +1 -0
  619. package/dist/slider/SliderContext.d.ts +4 -0
  620. package/dist/slider/SliderThumb.d.ts +14 -0
  621. package/dist/slider/SliderThumb.styles.d.ts +5 -0
  622. package/dist/slider/SliderTrack.d.ts +14 -0
  623. package/dist/slider/SliderTrack.styles.d.ts +9 -0
  624. package/dist/slider/index.d.ts +8 -97
  625. package/dist/slider/index.js +2 -220
  626. package/dist/slider/index.js.map +1 -1
  627. package/dist/slider/index.mjs +490 -107
  628. package/dist/slider/index.mjs.map +1 -1
  629. package/dist/slot/Slot.d.ts +12 -0
  630. package/dist/slot/index.d.ts +1 -16
  631. package/dist/slot/index.js +2 -51
  632. package/dist/slot/index.js.map +1 -1
  633. package/dist/slot/index.mjs +5 -9
  634. package/dist/slot/index.mjs.map +1 -1
  635. package/dist/snackbar/Snackbar.d.ts +29 -0
  636. package/dist/snackbar/SnackbarItem.d.ts +49 -0
  637. package/dist/snackbar/SnackbarItem.styles.d.ts +10 -0
  638. package/dist/snackbar/SnackbarItemAction.d.ts +10 -0
  639. package/dist/snackbar/SnackbarItemClose.d.ts +9 -0
  640. package/dist/snackbar/SnackbarItemContext.d.ts +8 -0
  641. package/dist/snackbar/SnackbarItemIcon.d.ts +7 -0
  642. package/dist/snackbar/SnackbarRegion.d.ts +30 -0
  643. package/dist/snackbar/SnackbarRegion.styles.d.ts +5 -0
  644. package/dist/snackbar/index.d.ts +13 -158
  645. package/dist/snackbar/index.js +2 -1756
  646. package/dist/snackbar/index.js.map +1 -1
  647. package/dist/snackbar/index.mjs +1153 -429
  648. package/dist/snackbar/index.mjs.map +1 -1
  649. package/dist/snackbar/snackbarVariants.d.ts +82 -0
  650. package/dist/snackbar/useSnackbarGlobalStore.d.ts +18 -0
  651. package/dist/snackbar/useSwipe.d.ts +15 -0
  652. package/dist/spinner/Spinner.d.ts +9 -0
  653. package/dist/spinner/Spinner.styles.d.ts +7 -0
  654. package/dist/spinner/index.d.ts +1 -21
  655. package/dist/spinner/index.js +2 -139
  656. package/dist/spinner/index.js.map +1 -1
  657. package/dist/spinner/index.mjs +3 -7
  658. package/dist/spinner/index.mjs.map +1 -1
  659. package/dist/stepper/Stepper.d.ts +9 -0
  660. package/dist/stepper/StepperButton.d.ts +14 -0
  661. package/dist/stepper/StepperInput.d.ts +7 -0
  662. package/dist/stepper/index.d.ts +9 -81
  663. package/dist/stepper/index.js +8 -1847
  664. package/dist/stepper/index.js.map +1 -1
  665. package/dist/stepper/index.mjs +2325 -197
  666. package/dist/stepper/index.mjs.map +1 -1
  667. package/dist/stepper/types.d.ts +46 -0
  668. package/dist/stepper/useStepper.d.ts +2 -0
  669. package/dist/switch/Switch.d.ts +6 -0
  670. package/dist/switch/{index.d.mts → SwitchInput.d.ts} +4 -17
  671. package/dist/switch/SwitchInput.styles.d.ts +16 -0
  672. package/dist/switch/SwitchLabel.d.ts +17 -0
  673. package/dist/switch/SwitchLabel.styles.d.ts +5 -0
  674. package/dist/switch/index.d.ts +1 -64
  675. package/dist/switch/index.js +2 -327
  676. package/dist/switch/index.js.map +1 -1
  677. package/dist/switch/index.mjs +213 -130
  678. package/dist/switch/index.mjs.map +1 -1
  679. package/dist/tabs/Tabs.d.ts +24 -0
  680. package/dist/tabs/TabsContent.d.ts +22 -0
  681. package/dist/tabs/TabsContent.styles.d.ts +3 -0
  682. package/dist/tabs/TabsContext.d.ts +7 -0
  683. package/dist/tabs/TabsList.d.ts +20 -0
  684. package/dist/tabs/TabsList.styles.d.ts +3 -0
  685. package/dist/tabs/TabsPopover.d.ts +29 -0
  686. package/dist/tabs/TabsPopoverAbstraction.d.ts +27 -0
  687. package/dist/tabs/TabsRoot.styles.d.ts +1 -0
  688. package/dist/tabs/TabsTrigger.d.ts +41 -0
  689. package/dist/tabs/TabsTrigger.styles.d.ts +8 -0
  690. package/dist/tabs/index.d.ts +13 -137
  691. package/dist/tabs/index.js +2 -1830
  692. package/dist/tabs/index.js.map +1 -1
  693. package/dist/tabs/index.mjs +374 -350
  694. package/dist/tabs/index.mjs.map +1 -1
  695. package/dist/tabs/useResizeObserver.d.ts +8 -0
  696. package/dist/tag/Tag.d.ts +17 -0
  697. package/dist/tag/Tag.styles.d.ts +8 -0
  698. package/dist/tag/index.d.ts +1 -29
  699. package/dist/tag/index.js +2 -283
  700. package/dist/tag/index.js.map +1 -1
  701. package/dist/tag/index.mjs +66 -90
  702. package/dist/tag/index.mjs.map +1 -1
  703. package/dist/tag/variants/filled.d.ts +41 -0
  704. package/dist/tag/variants/index.d.ts +3 -0
  705. package/dist/tag/variants/outlined.d.ts +37 -0
  706. package/dist/tag/variants/tinted.d.ts +37 -0
  707. package/dist/text-link/TextLink.d.ts +16 -0
  708. package/dist/text-link/index.d.ts +1 -20
  709. package/dist/text-link/index.js +2 -100
  710. package/dist/text-link/index.js.map +1 -1
  711. package/dist/text-link/index.mjs +3 -6
  712. package/dist/text-link/index.mjs.map +1 -1
  713. package/dist/textarea/Textarea.d.ts +14 -0
  714. package/dist/textarea/TextareaClearButton.d.ts +10 -0
  715. package/dist/textarea/TextareaGroup.d.ts +6 -0
  716. package/dist/textarea/TextareaLeadingIcon.d.ts +7 -0
  717. package/dist/textarea/TextareaTrailingIcon.d.ts +7 -0
  718. package/dist/textarea/index.d.ts +10 -53
  719. package/dist/textarea/index.js +2 -797
  720. package/dist/textarea/index.js.map +1 -1
  721. package/dist/textarea/index.mjs +50 -83
  722. package/dist/textarea/index.mjs.map +1 -1
  723. package/dist/toast/Toast.d.ts +4 -0
  724. package/dist/toast/Toast.styles.d.ts +10 -0
  725. package/dist/toast/index.d.ts +10 -53
  726. package/dist/toast/index.js +2 -1454
  727. package/dist/toast/index.js.map +1 -1
  728. package/dist/toast/index.mjs +1016 -208
  729. package/dist/toast/index.mjs.map +1 -1
  730. package/dist/toast/types.d.ts +41 -0
  731. package/dist/toast/useRenderSlot.d.ts +3 -0
  732. package/dist/toast/useToastManager.d.ts +2 -0
  733. package/dist/useCollapsiblePanel-D1dCo0lf.js +4 -0
  734. package/dist/useCollapsiblePanel-D1dCo0lf.js.map +1 -0
  735. package/dist/useCollapsiblePanel-kbMNl4Z4.mjs +287 -0
  736. package/dist/useCollapsiblePanel-kbMNl4Z4.mjs.map +1 -0
  737. package/dist/useFocusWithin-CFNEka2I.js +2 -0
  738. package/dist/useFocusWithin-CFNEka2I.js.map +1 -0
  739. package/dist/useFocusWithin-CoL4390f.mjs +796 -0
  740. package/dist/useFocusWithin-CoL4390f.mjs.map +1 -0
  741. package/dist/useOpenChangeComplete-Dk-u_f2y.js +2 -0
  742. package/dist/useOpenChangeComplete-Dk-u_f2y.js.map +1 -0
  743. package/dist/useOpenChangeComplete-RUbg6RBw.mjs +582 -0
  744. package/dist/useOpenChangeComplete-RUbg6RBw.mjs.map +1 -0
  745. package/dist/useTransitionStatus-CktVVKxz.mjs +46 -0
  746. package/dist/useTransitionStatus-CktVVKxz.mjs.map +1 -0
  747. package/dist/useTransitionStatus-CqbEyvIj.js +2 -0
  748. package/dist/useTransitionStatus-CqbEyvIj.js.map +1 -0
  749. package/dist/visually-hidden/VisuallyHidden.d.ts +12 -0
  750. package/dist/visually-hidden/index.d.ts +1 -16
  751. package/dist/visually-hidden/index.js +2 -67
  752. package/dist/visually-hidden/index.js.map +1 -1
  753. package/dist/visually-hidden/index.mjs +3 -6
  754. package/dist/visually-hidden/index.mjs.map +1 -1
  755. package/package.json +8 -8
  756. package/dist/Input-N8AWWSmt.d.mts +0 -41
  757. package/dist/Input-N8AWWSmt.d.ts +0 -41
  758. package/dist/InputTrailingIcon-BBp7sE6D.d.mts +0 -20
  759. package/dist/InputTrailingIcon-ZZx8PoJy.d.ts +0 -20
  760. package/dist/LabelRequiredIndicator-DRnCzHMU.d.mts +0 -19
  761. package/dist/LabelRequiredIndicator-DRnCzHMU.d.ts +0 -19
  762. package/dist/accordion/index.d.mts +0 -73
  763. package/dist/alert-dialog/index.d.mts +0 -159
  764. package/dist/avatar/index.d.mts +0 -66
  765. package/dist/badge/index.d.mts +0 -47
  766. package/dist/breadcrumb/index.d.mts +0 -64
  767. package/dist/button/index.d.mts +0 -41
  768. package/dist/card/index.d.mts +0 -61
  769. package/dist/checkbox/index.d.mts +0 -120
  770. package/dist/chip/index.d.mts +0 -97
  771. package/dist/chunk-2YM6GKWW.mjs.map +0 -1
  772. package/dist/chunk-6QCEPQ3U.mjs +0 -26
  773. package/dist/chunk-6QCEPQ3U.mjs.map +0 -1
  774. package/dist/chunk-7EWSMIZU.mjs +0 -214
  775. package/dist/chunk-7EWSMIZU.mjs.map +0 -1
  776. package/dist/chunk-DCXWGQVZ.mjs +0 -53
  777. package/dist/chunk-DCXWGQVZ.mjs.map +0 -1
  778. package/dist/chunk-GAK4SC2F.mjs.map +0 -1
  779. package/dist/chunk-GPJMLIHC.mjs +0 -308
  780. package/dist/chunk-GPJMLIHC.mjs.map +0 -1
  781. package/dist/chunk-HLXYG643.mjs +0 -52
  782. package/dist/chunk-HLXYG643.mjs.map +0 -1
  783. package/dist/chunk-KEGAAGJW.mjs +0 -36
  784. package/dist/chunk-KEGAAGJW.mjs.map +0 -1
  785. package/dist/chunk-RKPP7ZOK.mjs.map +0 -1
  786. package/dist/chunk-UMUMFMFB.mjs +0 -68
  787. package/dist/chunk-UMUMFMFB.mjs.map +0 -1
  788. package/dist/chunk-VBX7BTNU.mjs +0 -614
  789. package/dist/chunk-VBX7BTNU.mjs.map +0 -1
  790. package/dist/chunk-XZ47F6TP.mjs.map +0 -1
  791. package/dist/collapsible/index.d.mts +0 -43
  792. package/dist/combobox/index.d.mts +0 -287
  793. package/dist/dialog/index.d.mts +0 -166
  794. package/dist/divider/index.d.mts +0 -61
  795. package/dist/docgen.json +0 -47767
  796. package/dist/drawer/index.d.mts +0 -152
  797. package/dist/dropdown/index.d.mts +0 -233
  798. package/dist/file-upload/index.d.mts +0 -270
  799. package/dist/form-field/index.d.mts +0 -186
  800. package/dist/icon/index.d.mts +0 -28
  801. package/dist/icon-button/index.d.mts +0 -16
  802. package/dist/index-Cno_GFuW.d.mts +0 -93
  803. package/dist/index-Cno_GFuW.d.ts +0 -93
  804. package/dist/input/index.d.mts +0 -78
  805. package/dist/kbd/index.d.mts +0 -9
  806. package/dist/label/index.d.mts +0 -11
  807. package/dist/link-box/index.d.mts +0 -34
  808. package/dist/pagination/index.d.mts +0 -143
  809. package/dist/popover/index.d.mts +0 -6
  810. package/dist/progress/index.d.mts +0 -52
  811. package/dist/progress-tracker/index.d.mts +0 -80
  812. package/dist/radio-group/index.d.mts +0 -100
  813. package/dist/rating/index.d.mts +0 -78
  814. package/dist/scrolling-list/index.d.mts +0 -118
  815. package/dist/select/index.d.mts +0 -167
  816. package/dist/skeleton/index.d.mts +0 -67
  817. package/dist/slider/index.d.mts +0 -97
  818. package/dist/slot/index.d.mts +0 -16
  819. package/dist/snackbar/index.d.mts +0 -158
  820. package/dist/spinner/index.d.mts +0 -21
  821. package/dist/stepper/index.d.mts +0 -81
  822. package/dist/tabs/index.d.mts +0 -137
  823. package/dist/tag/index.d.mts +0 -29
  824. package/dist/text-link/index.d.mts +0 -20
  825. package/dist/textarea/index.d.mts +0 -57
  826. package/dist/toast/index.d.mts +0 -63
  827. package/dist/visually-hidden/index.d.mts +0 -16
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/carousel/index.ts","../../src/carousel/Carousel.tsx","../../src/carousel/useCarousel.ts","../../src/carousel/useCarouselVisibility.ts","../../src/carousel/useEvent.ts","../../src/carousel/useIsMounted.ts","../../src/carousel/useScrollEnd.ts","../../src/carousel/useSnapPoints.ts","../../src/carousel/useResizeObserver.ts","../../src/carousel/utils.ts","../../src/carousel/CarouselControls.tsx","../../src/carousel/CarouselNextButton.tsx","../../src/icon/Icon.tsx","../../src/slot/Slot.tsx","../../src/visually-hidden/VisuallyHidden.tsx","../../src/icon/Icon.styles.tsx","../../src/button/Button.tsx","../../src/spinner/Spinner.styles.tsx","../../src/spinner/Spinner.tsx","../../src/button/Button.styles.tsx","../../src/button/variants/filled.ts","../../src/button/variants/ghost.ts","../../src/button/variants/outlined.ts","../../src/button/variants/tinted.ts","../../src/button/variants/contrast.ts","../../src/icon-button/IconButton.styles.tsx","../../src/icon-button/IconButton.tsx","../../src/carousel/CarouselPageIndicator.tsx","../../src/carousel/CarouselPagePicker.tsx","../../src/carousel/CarouselPrevButton.tsx","../../src/carousel/CarouselSlide.tsx","../../src/carousel/useIsVisible.ts","../../src/carousel/CarouselSlides.tsx","../../src/carousel/CarouselViewport.tsx"],"sourcesContent":["import { Carousel as Root } from './Carousel'\nimport { CarouselControls as Controls } from './CarouselControls'\nimport { CarouselNextButton as NextButton } from './CarouselNextButton'\nimport { CarouselPageIndicator as PageIndicator } from './CarouselPageIndicator'\nimport { CarouselPagePicker as PagePicker } from './CarouselPagePicker'\nimport { CarouselPrevButton as PrevButton } from './CarouselPrevButton'\nimport { CarouselSlide as Slide } from './CarouselSlide'\nimport { CarouselSlides as Slides } from './CarouselSlides'\nimport { CarouselViewport as Viewport } from './CarouselViewport'\n\nexport const Carousel: typeof Root & {\n Controls: typeof Controls\n NextButton: typeof NextButton\n PrevButton: typeof PrevButton\n Slide: typeof Slide\n Slides: typeof Slides\n Viewport: typeof Viewport\n PagePicker: typeof PagePicker\n PageIndicator: typeof PageIndicator\n} = Object.assign(Root, {\n Controls,\n NextButton,\n PrevButton,\n Slide,\n Slides,\n Viewport,\n PagePicker,\n PageIndicator,\n})\n\nCarousel.displayName = 'Carousel'\n","import { cx } from 'class-variance-authority'\nimport { ComponentProps, createContext, ReactNode, useContext } from 'react'\n\nimport { CarouselAPI, UseCarouselProps } from './types'\nimport { useCarousel } from './useCarousel'\n\ninterface Props extends UseCarouselProps, ComponentProps<'div'> {\n children?: ReactNode\n className?: string\n}\n\nconst CarouselContext = createContext<CarouselAPI | null>(null)\n\nexport const Carousel = ({\n className,\n snapType = 'mandatory',\n snapStop = 'always',\n scrollBehavior = 'smooth',\n slidesPerMove = 'auto',\n pagePickerInset = false,\n slidesPerPage = 1,\n loop = false,\n children,\n gap = 16,\n defaultPage,\n page,\n onPageChange,\n maxDots = 5,\n ...props\n}: Props) => {\n const carouselApi = useCarousel({\n defaultPage,\n slidesPerPage,\n slidesPerMove,\n loop,\n gap,\n scrollBehavior,\n snapStop,\n snapType,\n page,\n pagePickerInset,\n onPageChange,\n maxDots,\n })\n\n return (\n <CarouselContext.Provider\n value={{\n ...carouselApi,\n scrollBehavior,\n }}\n >\n <div\n data-spark-component=\"carousel\"\n className={cx('gap-lg relative box-border flex flex-col', className)}\n {...carouselApi.getRootProps()}\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n )\n}\n\nCarousel.displayName = 'Carousel'\n\nexport const useCarouselContext = () => {\n const context = useContext(CarouselContext)\n\n if (!context) {\n throw Error('useCarouselContext must be used within a Carousel provider')\n }\n\n return context\n}\n","/* eslint-disable max-lines-per-function */\nimport {\n KeyboardEvent,\n useCallback,\n useEffect,\n useId,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react'\n\nimport {\n CarouselAPI,\n ComputedControlProps,\n ComputedIndicatorGroupProps,\n ComputedIndicatorProps,\n ComputedRootProps,\n ComputedSlideGroupProps,\n ComputedSlideProps,\n ComputedTriggerProps,\n UseCarouselProps,\n} from './types'\nimport { useCarouselVisibility } from './useCarouselVisibility'\nimport { useEvent } from './useEvent'\nimport { useIsMounted } from './useIsMounted'\nimport { useScrollEnd } from './useScrollEnd'\nimport { useSnapPoints } from './useSnapPoints'\nimport { computeDotState, getSnapPositions, isSnapPoint } from './utils'\n\nconst DATA_SCOPE = 'carousel' as const\nconst DIRECTION = 'ltr' as const\n\nexport const useCarousel = ({\n defaultPage,\n gap = 16,\n snapType = 'mandatory',\n snapStop = 'always',\n scrollPadding = 0,\n slidesPerPage = 1,\n slidesPerMove = 'auto',\n scrollBehavior = 'smooth',\n loop = false,\n pagePickerInset = false,\n maxDots = 5,\n // state control\n page: controlledPage,\n onPageChange: onPageChangeProp,\n}: UseCarouselProps): CarouselAPI => {\n const carouselId = useId()\n const [pageState, setPageState] = useState(defaultPage || controlledPage || 0)\n\n const carouselRef = useRef<HTMLDivElement>(null)\n const pageIndicatorsRefs = useRef<(HTMLElement | null)[]>([])\n const isMountedRef = useIsMounted()\n const isMounted = isMountedRef.current\n const onPageChange = useEvent(onPageChangeProp)\n\n // Centralized visibility management with a single IntersectionObserver per carousel\n const { registerSlide, unregisterSlide, isSlideVisible } = useCarouselVisibility(carouselRef)\n\n const [pageSnapPoints] = useSnapPoints([], {\n carouselRef,\n slidesPerMove,\n slidesPerPage,\n })\n\n const canScrollPrev = useRef(loop || pageState > 0)\n const canScrollNext = useRef(loop || pageState < pageSnapPoints.length - 1)\n canScrollPrev.current = loop || pageState > 0\n canScrollNext.current = loop || pageState < pageSnapPoints.length - 1\n\n const handlePageChange = useCallback(\n (page: number) => {\n if (page !== pageState) {\n setPageState(page)\n onPageChange?.(page)\n }\n },\n [onPageChange, pageState]\n )\n\n const scrollTo = useCallback(\n (page: number, behavior: 'instant' | 'smooth') => {\n if (carouselRef.current) {\n carouselRef.current.scrollTo({\n left: pageSnapPoints[page],\n behavior: behavior === 'instant' ? 'auto' : 'smooth',\n })\n handlePageChange(page)\n }\n },\n [handlePageChange, pageSnapPoints]\n )\n\n const scrollPrev = useCallback(\n (cb?: (pageIndex: number) => void) => {\n if (canScrollPrev) {\n const targetPage =\n loop && pageState === 0 ? pageSnapPoints.length - 1 : Math.max(pageState - 1, 0)\n\n scrollTo(targetPage, scrollBehavior)\n cb?.(targetPage)\n }\n },\n [loop, pageSnapPoints, pageState, scrollBehavior, scrollTo]\n )\n\n const scrollNext = useCallback(\n (cb?: (pageIndex: number) => void) => {\n if (canScrollNext) {\n const targetPage =\n loop && pageState === pageSnapPoints.length - 1\n ? 0\n : Math.min(pageState + 1, pageSnapPoints.length - 1)\n\n scrollTo(targetPage, scrollBehavior)\n cb?.(targetPage)\n }\n },\n [loop, pageSnapPoints, pageState, scrollBehavior, scrollTo]\n )\n\n useEffect(() => {\n if (controlledPage != null) {\n scrollTo(controlledPage, scrollBehavior)\n }\n }, [controlledPage, scrollBehavior, scrollTo])\n\n /**\n * Set the default scroll position of the carousel based on `defaultPage`.\n * As this operation is done before the snap points are set in the state, we have to get them from the ref directly.\n */\n useLayoutEffect(() => {\n if (defaultPage != null && !isMounted && carouselRef.current) {\n const snapPositions = getSnapPositions({\n container: carouselRef.current,\n slidesPerMove,\n slidesPerPage,\n })\n\n carouselRef.current.scrollTo({\n left: snapPositions[defaultPage],\n behavior: 'instant',\n })\n }\n }, [defaultPage, isMounted, slidesPerMove, slidesPerPage])\n\n /**\n * Monitoring scrollend events inside the scrollable area to sync the carousel active page with current scroll position.\n * Scrollend has been chosen over \"scroll\" for performance reason.\n */\n const syncPageStateWithScrollPosition = useCallback(() => {\n if (!carouselRef.current || pageSnapPoints.length === 0) return\n\n const { scrollLeft } = carouselRef.current\n\n const distances = pageSnapPoints.map(pagePosition => Math.abs(scrollLeft - pagePosition))\n const pageInViewport = distances.indexOf(Math.min(...distances))\n\n if (pageInViewport !== -1) {\n handlePageChange(pageInViewport)\n }\n }, [pageSnapPoints, handlePageChange])\n\n useScrollEnd(carouselRef, syncPageStateWithScrollPosition)\n\n const contextValue: CarouselAPI = {\n ref: carouselRef,\n pageIndicatorsRefs,\n // props\n gap,\n snapType,\n snapStop,\n scrollPadding,\n slidesPerPage,\n slidesPerMove,\n scrollBehavior,\n loop,\n pagePickerInset,\n maxDots,\n // computed state\n page: pageState,\n pageSnapPoints,\n canScrollNext: canScrollNext.current,\n canScrollPrev: canScrollPrev.current,\n scrollTo,\n scrollPrev,\n scrollNext,\n // visibility management\n registerSlide,\n unregisterSlide,\n isSlideVisible,\n // anatomy\n getRootProps: (): ComputedRootProps => ({\n id: `carousel::${carouselId}:`,\n role: 'region',\n 'aria-roledescription': 'carousel',\n 'data-scope': DATA_SCOPE,\n 'data-part': 'root',\n 'data-orientation': 'horizontal',\n dir: DIRECTION,\n style: {\n '--slides-per-page': slidesPerPage,\n '--slide-spacing': `${gap}px`,\n '--slide-item-size':\n 'calc(100% / var(--slides-per-page) - var(--slide-spacing) * (var(--slides-per-page) - 1) / var(--slides-per-page))',\n },\n }),\n\n getControlProps: (): ComputedControlProps => ({\n 'data-scope': DATA_SCOPE,\n 'data-part': 'control',\n 'data-orientation': 'horizontal',\n }),\n\n getPrevTriggerProps: (): ComputedTriggerProps<'prev-trigger'> => ({\n id: `carousel::${carouselId}::prev-trigger`,\n 'aria-controls': `carousel::${carouselId}::item-group`,\n 'data-scope': DATA_SCOPE,\n 'data-part': 'prev-trigger',\n 'data-orientation': 'horizontal',\n type: 'button',\n dir: DIRECTION,\n disabled: !canScrollPrev.current,\n onClick: () => scrollPrev(),\n }),\n\n getNextTriggerProps: (): ComputedTriggerProps<'next-trigger'> => ({\n id: `carousel::${carouselId}::next-trigger`,\n 'aria-controls': `carousel::${carouselId}::item-group`,\n 'data-scope': DATA_SCOPE,\n 'data-part': 'next-trigger',\n 'data-orientation': 'horizontal',\n type: 'button',\n dir: DIRECTION,\n disabled: !canScrollNext.current,\n onClick: () => scrollNext(),\n }),\n\n getSlidesContainerProps: (): ComputedSlideGroupProps => ({\n id: `carousel::${carouselId}::item-group`,\n /**\n * The carousel pattern was originally designed for a single slide.\n * When there is more than one slide, the aria-live region is set to off to avoid announcing the whole list of slides.\n * This is not ideal but we keep it for backwards compatibility.\n *\n * @see https://www.w3.org/WAI/ARIA/apg/patterns/carousel/#wai-aria-attributes\n */\n 'aria-live': slidesPerPage > 1 ? 'off' : 'polite',\n 'data-scope': DATA_SCOPE,\n 'data-part': 'item-group',\n 'data-orientation': 'horizontal',\n dir: DIRECTION,\n tabIndex: 0,\n style: {\n display: 'grid',\n gap: 'var(--slide-spacing)',\n scrollSnapType: `x ${snapType}`,\n gridAutoFlow: 'column',\n scrollbarWidth: 'none',\n gridAutoColumns: 'var(--slide-item-size)',\n overflowX: 'auto',\n },\n ref: carouselRef,\n }),\n\n getSlideProps: ({ index }): ComputedSlideProps => {\n const isStopPoint = isSnapPoint(index, {\n container: carouselRef.current,\n slidesPerMove,\n slidesPerPage,\n })\n\n return {\n id: `carousel::${carouselId}::item:${index}`,\n role: 'group',\n 'aria-roledescription': 'slide',\n 'data-scope': DATA_SCOPE,\n 'data-part': 'item',\n 'data-index': index,\n 'data-orientation': 'horizontal',\n dir: DIRECTION,\n style: {\n ...(isStopPoint && {\n scrollSnapAlign: 'start',\n scrollSnapStop: snapStop,\n }),\n },\n }\n },\n\n getIndicatorGroupProps: (): ComputedIndicatorGroupProps => ({\n role: 'radiogroup',\n id: `carousel::${carouselId}::indicator-group`,\n 'data-scope': DATA_SCOPE,\n 'data-part': 'indicator-group',\n 'data-orientation': 'horizontal',\n dir: DIRECTION,\n }),\n\n getIndicatorProps: ({ index }): ComputedIndicatorProps => {\n const dotState = computeDotState({\n dotIndex: index,\n pageState,\n totalPages: pageSnapPoints.length,\n maxDots,\n })\n\n return {\n role: 'radio',\n id: `carousel::${carouselId}::indicator:${index}`,\n 'aria-checked': index === pageState,\n 'data-scope': DATA_SCOPE,\n 'data-part': 'indicator',\n 'data-orientation': 'horizontal',\n 'data-index': index,\n 'data-state': dotState,\n tabIndex: index === pageState ? 0 : -1,\n onClick: () => {\n scrollTo(index, scrollBehavior)\n },\n onKeyDown: (event: KeyboardEvent) => {\n const focusActiveIndicator = (page: number) => {\n pageIndicatorsRefs.current[page]?.focus()\n }\n\n if (event.key === 'ArrowRight' && canScrollNext) {\n scrollNext(focusActiveIndicator)\n } else if (event.key === 'ArrowLeft' && canScrollPrev) {\n scrollPrev(focusActiveIndicator)\n }\n },\n }\n },\n }\n\n return contextValue\n}\n","import { RefObject, useCallback, useEffect, useRef } from 'react'\n\n/**\n * Hook to manage slide visibility using a centralized IntersectionObserver.\n * This optimizes performance by using a single observer per carousel instead of one per slide.\n *\n * @param carouselRef - Reference to the carousel container element\n * @returns Object with functions to register/unregister slides and check visibility\n */\nexport function useCarouselVisibility(carouselRef: RefObject<HTMLDivElement | null>) {\n const slideVisibilityMap = useRef<Map<HTMLElement, boolean>>(new Map())\n const visibilityObserverRef = useRef<IntersectionObserver | null>(null)\n const visibilityCallbacksRef = useRef<Map<HTMLElement, (isVisible: boolean) => void>>(new Map())\n\n // Create the shared IntersectionObserver callback\n const createObserverCallback = useCallback(() => {\n return (entries: IntersectionObserverEntry[]) => {\n // Batch all visibility updates to minimize re-renders\n entries.forEach(entry => {\n const isVisible = entry.isIntersecting\n const element = entry.target as HTMLElement\n slideVisibilityMap.current.set(element, isVisible)\n\n // Notify the callback if it exists\n const callback = visibilityCallbacksRef.current.get(element)\n if (callback) {\n callback(isVisible)\n }\n })\n }\n }, [])\n\n // Initialize or get the shared IntersectionObserver\n const getOrCreateObserver = useCallback(() => {\n if (visibilityObserverRef.current) {\n return visibilityObserverRef.current\n }\n\n const container = carouselRef.current\n if (!container) return null\n\n const observer = new IntersectionObserver(createObserverCallback(), {\n root: container,\n threshold: 0.2,\n })\n\n visibilityObserverRef.current = observer\n\n return observer\n }, [carouselRef, createObserverCallback])\n\n // Initialize the shared IntersectionObserver when container is ready\n useEffect(() => {\n const observer = getOrCreateObserver()\n // Capture ref values to avoid stale closure warnings\n const visibilityMap = slideVisibilityMap.current\n const callbacksMap = visibilityCallbacksRef.current\n\n return () => {\n if (observer) {\n observer.disconnect()\n visibilityMap.clear()\n callbacksMap.clear()\n visibilityObserverRef.current = null\n }\n }\n }, [getOrCreateObserver])\n\n // Register a slide element with the observer\n const registerSlide = useCallback(\n (element: HTMLElement | null, callback: (isVisible: boolean) => void) => {\n if (!element) return\n\n const observer = getOrCreateObserver()\n if (!observer) {\n // If container is not ready yet, retry on next tick\n setTimeout(() => registerSlide(element, callback), 0)\n\n return\n }\n\n // Check initial visibility (default to true for slides that are already in view)\n const initialVisible = slideVisibilityMap.current.get(element) ?? true\n slideVisibilityMap.current.set(element, initialVisible)\n visibilityCallbacksRef.current.set(element, callback)\n observer.observe(element)\n\n // Call callback with initial state\n callback(initialVisible)\n },\n [getOrCreateObserver]\n )\n\n // Unregister a slide element from the observer\n const unregisterSlide = useCallback((element: HTMLElement | null) => {\n if (!element) return\n\n const observer = visibilityObserverRef.current\n if (observer) {\n observer.unobserve(element)\n }\n slideVisibilityMap.current.delete(element)\n visibilityCallbacksRef.current.delete(element)\n }, [])\n\n // Get current visibility state for a slide\n const isSlideVisible = useCallback((element: HTMLElement | null): boolean => {\n if (!element) return true\n\n return slideVisibilityMap.current.get(element) ?? true\n }, [])\n\n return {\n registerSlide,\n unregisterSlide,\n isSlideVisible,\n }\n}\n","import { useCallback, useLayoutEffect, useRef } from 'react'\n\ntype AnyFunction = (...args: any[]) => any\n\n/**\n * Directly from this gist: https://gist.github.com/diegohaz/695097a06f038a707c3a1b11e4e40195\n * Until React releases a native `useEvent` hook.\n */\nexport function useEvent<T extends AnyFunction>(callback?: T) {\n const ref = useRef<AnyFunction | undefined>(() => {\n throw new Error('Cannot call an event handler while rendering.')\n })\n\n useLayoutEffect(() => {\n ref.current = callback\n })\n\n return useCallback<AnyFunction>((...args) => ref.current?.(...args), []) as T\n}\n","import { useEffect, useRef } from 'react'\n\nexport const useIsMounted = () => {\n const isMounted = useRef(false)\n\n useEffect(() => {\n isMounted.current = true\n\n return () => {\n isMounted.current = false\n }\n }, [])\n\n return isMounted\n}\n","import { useEffect, useRef, RefObject } from 'react'\n\nexport function useScrollEnd(scrollRef: RefObject<HTMLDivElement | null>, callback: () => void) {\n const scrollLeft = useRef(0)\n\n /**\n * Safari (and some smaller browsers) to not yet support the `scrollend` event.\n * For those we must rely on the `scroll` event and and an idle state delay to trigger the \"scroll end\".\n *\n * Caveats:\n * - when using a trackpad or your fingers on a touch device, scrolling then holding the position might trigger the \"scrollend\" callback too early.\n */\n const safariTimeout = useRef<NodeJS.Timeout | null>(null)\n\n useEffect(() => {\n const element = scrollRef.current\n if (!element) return\n\n const supportsScrollend = 'onscrollend' in window\n\n const handleScrollEnd = () => {\n callback()\n }\n\n const handleSafariScroll = () => {\n if (safariTimeout.current) {\n clearTimeout(safariTimeout.current)\n }\n\n if (scrollRef.current) {\n scrollLeft.current = scrollRef.current.scrollLeft\n\n safariTimeout.current = setTimeout(() => {\n if (scrollRef.current) {\n handleScrollEnd()\n }\n }, 150)\n }\n }\n\n if (supportsScrollend) {\n element.addEventListener('scrollend', handleScrollEnd)\n } else {\n element.addEventListener('scroll', handleSafariScroll)\n }\n\n return () => {\n if (safariTimeout.current) {\n clearTimeout(safariTimeout.current)\n }\n\n if (supportsScrollend) {\n element.removeEventListener('scrollend', handleScrollEnd)\n } else {\n element.removeEventListener('scroll', handleSafariScroll)\n }\n }\n }, [callback, scrollRef])\n}\n\nexport default useScrollEnd\n","import { useMemo, useState, RefObject } from 'react'\n\nimport { useResizeObserver } from './useResizeObserver'\nimport { getSnapPositions } from './utils'\n\n/**\n * Get the scroll value of each slides that serves as the start of a page\n * The array is updated when resize event are caught in the carousel.\n */\nexport function useSnapPoints<T extends HTMLDivElement | null>(\n initialSnapPoints: number[] = [],\n {\n carouselRef,\n slidesPerMove,\n slidesPerPage,\n }: {\n carouselRef: RefObject<T>\n slidesPerMove: 'auto' | number\n slidesPerPage: number\n }\n) {\n const [pageSnapPoints, setPageSnapPoints] = useState(initialSnapPoints)\n\n const stableSnapPoints = useMemo(() => pageSnapPoints, [pageSnapPoints])\n\n /**\n * On resize, dimensions of the carousel might changes, which requires to update the snap points positions in the state.\n */\n useResizeObserver(carouselRef, () => {\n const newSnapPoints = getSnapPositions({\n slidesPerMove,\n slidesPerPage,\n container: carouselRef.current,\n })\n\n if (JSON.stringify(pageSnapPoints) !== JSON.stringify(newSnapPoints)) {\n setPageSnapPoints(newSnapPoints)\n }\n })\n\n return [stableSnapPoints, setPageSnapPoints] as const\n}\n","import { useLayoutEffect, RefObject } from 'react'\n\nexport function useResizeObserver<T extends HTMLElement | null>(\n ref: RefObject<T>,\n callback: (width: number) => void\n) {\n useLayoutEffect(() => {\n const element = ref.current\n if (!element) return\n\n const observer = new ResizeObserver(entries => {\n for (const entry of entries) {\n callback(entry.contentRect.width)\n }\n })\n\n observer.observe(element)\n\n return () => observer.disconnect() // Cleanup on unmount\n }, [ref, callback])\n}\n","/**\n * Get the indices of each slides that serves as the start of a page\n * @returns number[] (ex: [0, 2, 4])\n */\nfunction getSnapIndices({\n totalSlides,\n slidesPerMove,\n slidesPerPage,\n}: {\n totalSlides: number\n slidesPerMove: number | 'auto'\n slidesPerPage: number\n}) {\n const slideBy = slidesPerMove === 'auto' ? slidesPerPage : slidesPerMove\n const snapPoints: number[] = []\n\n const lastSnapIndex = Math.floor((totalSlides - slidesPerPage) / slideBy) * slideBy\n\n for (let i = 0; i <= lastSnapIndex; i += slideBy) {\n snapPoints.push(i)\n }\n\n // Adding final snap point if necessary\n if (snapPoints[snapPoints.length - 1] !== totalSlides - slidesPerPage) {\n snapPoints.push(totalSlides - slidesPerPage)\n }\n\n return snapPoints\n}\n\nexport function getSlideElements(container: HTMLDivElement | null): Element[] {\n return container ? Array.from(container.querySelectorAll('[data-part=\"item\"]')) : []\n}\n\nexport function isSnapPoint(\n slideIndex: number,\n {\n container,\n slidesPerMove,\n slidesPerPage,\n }: {\n container: HTMLDivElement | null\n slidesPerMove: number | 'auto'\n slidesPerPage: number\n }\n) {\n return getSnapIndices({\n totalSlides: getSlideElements(container).length,\n slidesPerPage,\n slidesPerMove,\n }).includes(slideIndex)\n}\n\n/**\n * Get the scroll value of each slides that serves as the start of a page\n * @returns number[] (ex for a 400px carousel with no gap: [400, 800, 1200])\n */\nexport function getSnapPositions({\n container,\n slidesPerMove,\n slidesPerPage,\n}: {\n container: HTMLDivElement | null\n slidesPerMove: number | 'auto'\n slidesPerPage: number\n}) {\n if (!container) return []\n\n return getSlideElements(container)\n .filter((_, index) => {\n return isSnapPoint(index, {\n slidesPerMove,\n slidesPerPage,\n container,\n })\n })\n .map(slide => (slide as HTMLElement).offsetLeft)\n}\n\n/**\n * Calculate the state of a dot indicator of a carousel depending on the current page and the total number of pages.\n */\nexport function computeDotState({\n dotIndex,\n pageState,\n totalPages,\n maxDots = 5,\n}: {\n dotIndex: number\n pageState: number\n totalPages: number\n maxDots?: number\n}): 'active' | 'edge' | 'idle' | 'hidden' {\n if (totalPages <= maxDots) {\n return dotIndex === pageState ? 'active' : 'idle'\n }\n\n if (pageState <= Math.floor(maxDots / 2)) {\n if (dotIndex > maxDots - 1) return 'hidden'\n if (dotIndex === pageState) return 'active'\n if (dotIndex === maxDots - 1) return 'edge'\n\n return 'idle'\n }\n\n if (pageState >= totalPages - Math.ceil(maxDots / 2)) {\n const startIndex = totalPages - maxDots\n if (dotIndex < startIndex) return 'hidden'\n if (dotIndex === pageState) return 'active'\n if (dotIndex === startIndex) return 'edge'\n\n return 'idle'\n }\n\n const startIndex = pageState - Math.floor(maxDots / 2)\n const endIndex = pageState + Math.floor(maxDots / 2)\n if (dotIndex < startIndex || dotIndex > endIndex) return 'hidden'\n if (dotIndex === pageState) return 'active'\n if (dotIndex === startIndex || dotIndex === endIndex) return 'edge'\n\n return 'idle'\n}\n","import { cx } from 'class-variance-authority'\nimport { HTMLAttributes, ReactNode } from 'react'\n\nimport { useCarouselContext } from './Carousel'\n\ninterface ControlsProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode\n}\n\nexport const CarouselControls = ({ children, className, ...props }: ControlsProps) => {\n const ctx = useCarouselContext()\n\n return (\n <div\n data-spark-component=\"carousel-controls\"\n className={cx(\n 'default:px-lg pointer-events-none absolute inset-0 flex flex-row items-center justify-between',\n className\n )}\n {...ctx.getControlProps()}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nCarouselControls.displayName = 'Carousel.Controls'\n","import { ArrowVerticalRight } from '@spark-ui/icons/ArrowVerticalRight'\n\nimport { Icon } from '../icon'\nimport { IconButton, IconButtonProps } from '../icon-button'\nimport { useCarouselContext } from './Carousel'\n\nexport const CarouselNextButton = ({\n 'aria-label': ariaLabel,\n ...buttonProps\n}: IconButtonProps) => {\n const ctx = useCarouselContext()\n\n return (\n <IconButton\n data-spark-component=\"carousel-next-button\"\n {...ctx.getNextTriggerProps()}\n intent=\"surface\"\n design=\"filled\"\n className=\"pointer-events-auto cursor-pointer shadow-sm disabled:invisible\"\n aria-label={ariaLabel}\n {...buttonProps}\n >\n <Icon>\n <ArrowVerticalRight />\n </Icon>\n </IconButton>\n )\n}\n\nCarouselNextButton.displayName = 'Carousel.NextButton'\n","import { Children, cloneElement, ComponentPropsWithoutRef, ReactElement, ReactNode } from 'react'\n\nimport { VisuallyHidden } from '../visually-hidden'\nimport { iconStyles, IconVariantsProps } from './Icon.styles'\n\nexport interface IconProps extends IconVariantsProps, ComponentPropsWithoutRef<'svg'> {\n /**\n * The svg icon that will be wrapped\n */\n children: ReactNode\n /**\n * The accessible label for the icon. This label will be visually hidden but announced to screen\n * reader users, similar to `alt` text for `img` tags.\n */\n label?: string\n}\n\nexport const Icon = ({\n label,\n className,\n size = 'current',\n intent = 'current',\n children,\n ...others\n}: IconProps) => {\n const child = Children.only(children)\n\n return (\n <>\n {cloneElement(child as ReactElement<Record<string, any>>, {\n className: iconStyles({ className, size, intent }),\n 'data-spark-component': 'icon',\n 'aria-hidden': 'true',\n focusable: 'false',\n ...others,\n })}\n\n {label && <VisuallyHidden>{label}</VisuallyHidden>}\n </>\n )\n}\n\nIcon.displayName = 'Icon'\n","import { Slot as RadixSlot } from 'radix-ui'\nimport {\n cloneElement,\n HTMLAttributes,\n isValidElement,\n PropsWithChildren,\n ReactNode,\n Ref,\n} from 'react'\n\nexport const Slottable: typeof RadixSlot.Slottable = RadixSlot.Slottable\n\nexport type SlotProps = PropsWithChildren<HTMLAttributes<HTMLElement>> & {\n ref?: Ref<HTMLElement>\n}\n\nexport const Slot = ({ ref, ...props }: SlotProps) => {\n return <RadixSlot.Root ref={ref} {...props} />\n}\n\n/**\n * When using Radix `Slot` component, it will consider its first child to merge its props with.\n * In some cases, you might need to wrap the top child with additional markup without breaking this behaviour.\n */\nexport const wrapPolymorphicSlot = (\n asChild: boolean | undefined,\n children: ReactNode,\n callback: (children: ReactNode) => ReactNode\n) => {\n if (!asChild) return callback(children) // If polymorphic behaviour is not used, we keep the original children\n\n return isValidElement(children)\n ? cloneElement(\n children,\n undefined,\n callback((children.props as { children: ReactNode }).children)\n )\n : null\n}\n","import { HTMLAttributes, PropsWithChildren, Ref } from 'react'\n\nimport { Slot } from '../slot'\n\nexport type VisuallyHiddenProps = PropsWithChildren<HTMLAttributes<HTMLElement>> & {\n /**\n * Change the default rendered element for the one passed as a child, merging their props and behavior.\n */\n asChild?: boolean\n ref?: Ref<HTMLElement>\n}\n\nexport const VisuallyHidden = ({ asChild = false, ref, ...props }: VisuallyHiddenProps) => {\n const Component = asChild ? Slot : 'span'\n\n return (\n <Component\n {...props}\n ref={ref}\n style={{\n // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss\n position: 'absolute',\n border: 0,\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n whiteSpace: 'nowrap',\n wordWrap: 'normal',\n ...props.style,\n }}\n />\n )\n}\n\nVisuallyHidden.displayName = 'VisuallyHidden'\n","import { makeVariants } from '@spark-ui/internal-utils'\nimport { cva, VariantProps } from 'class-variance-authority'\n\nexport const iconStyles = cva(['fill-current shrink-0'], {\n variants: {\n /**\n * Color scheme of the icon.\n */\n intent: makeVariants<\n 'intent',\n [\n 'current',\n 'main',\n 'support',\n 'accent',\n 'basic',\n 'success',\n 'alert',\n 'error',\n 'info',\n 'neutral',\n ]\n >({\n current: ['text-current'],\n main: ['text-main'],\n support: ['text-support'],\n accent: ['text-accent'],\n basic: ['text-basic'],\n success: ['text-success'],\n alert: ['text-alert'],\n error: ['text-error'],\n info: ['text-info'],\n neutral: ['text-neutral'],\n }),\n /**\n * Sets the size of the icon.\n */\n size: makeVariants<'size', ['current', 'sm', 'md', 'lg', 'xl']>({\n current: ['u-current-font-size'],\n sm: ['w-sz-16', 'h-sz-16'],\n md: ['w-sz-24', 'h-sz-24'],\n lg: ['w-sz-32', 'h-sz-32'],\n xl: ['w-sz-40', 'h-sz-40'],\n }),\n },\n})\n\nexport type IconVariantsProps = VariantProps<typeof iconStyles>\n","import { cx } from 'class-variance-authority'\nimport { ComponentPropsWithoutRef, type DOMAttributes, Ref, useMemo } from 'react'\n\nimport { Slot, wrapPolymorphicSlot } from '../slot'\nimport { Spinner, type SpinnerProps } from '../spinner'\nimport { buttonStyles, type ButtonStylesProps } from './Button.styles'\n\nexport interface ButtonProps\n extends Omit<ComponentPropsWithoutRef<'button'>, 'disabled'>,\n ButtonStylesProps {\n /**\n * Change the component to the HTML tag or custom component of the only child.\n */\n asChild?: boolean\n /**\n * Display a spinner to indicate to the user that the button is loading something after they interacted with it.\n */\n isLoading?: boolean\n /**\n * If your loading state should only display a spinner, it's better to specify a label for it (a11y).\n */\n loadingLabel?: string\n /**\n * If your loading state should also display a label, you can use this prop instead of `loadingLabel`.\n * **Please note that using this can result in layout shifting when the Button goes from loading state to normal state.**\n */\n loadingText?: string\n ref?: Ref<HTMLButtonElement>\n}\n\ntype DOMAttributesEventHandler = keyof Omit<\n DOMAttributes<HTMLButtonElement>,\n 'children' | 'dangerouslySetInnerHTML'\n>\n\nconst blockedEventHandlers: DOMAttributesEventHandler[] = [\n 'onClick',\n 'onMouseDown',\n 'onMouseUp',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseOver',\n 'onMouseOut',\n 'onKeyDown',\n 'onKeyPress',\n 'onKeyUp',\n 'onSubmit',\n]\n\nexport const Button = ({\n children,\n design = 'filled',\n disabled = false,\n intent = 'main',\n isLoading = false,\n loadingLabel,\n loadingText,\n shape = 'rounded',\n size = 'md',\n asChild,\n className,\n underline = false,\n ref,\n ...others\n}: ButtonProps) => {\n const Component = asChild ? Slot : 'button'\n\n const shouldNotInteract = !!disabled || isLoading\n\n const disabledEventHandlers = useMemo(() => {\n const result: Partial<Record<DOMAttributesEventHandler, () => void>> = {}\n\n if (shouldNotInteract) {\n blockedEventHandlers.forEach(eventHandler => (result[eventHandler] = undefined))\n }\n\n return result\n }, [shouldNotInteract])\n\n const spinnerProps = {\n size: 'current' as SpinnerProps['size'],\n className: loadingText ? 'inline-block' : 'absolute',\n ...(loadingLabel && { 'aria-label': loadingLabel }),\n }\n\n return (\n <Component\n data-spark-component=\"button\"\n {...(Component === 'button' && { type: 'button' })}\n ref={ref}\n className={buttonStyles({\n className,\n design,\n disabled: shouldNotInteract,\n intent,\n shape,\n size,\n underline,\n })}\n disabled={!!disabled}\n aria-busy={isLoading}\n aria-live={isLoading ? 'assertive' : 'off'}\n {...others}\n {...disabledEventHandlers}\n >\n {wrapPolymorphicSlot(asChild, children, slotted =>\n isLoading ? (\n <>\n <Spinner {...spinnerProps} />\n {loadingText && loadingText}\n\n <div\n aria-hidden\n className={cx('gap-md', loadingText ? 'hidden' : 'inline-flex opacity-0')}\n >\n {slotted}\n </div>\n </>\n ) : (\n slotted\n )\n )}\n </Component>\n )\n}\n\nButton.displayName = 'Button'\n","import { makeVariants } from '@spark-ui/internal-utils'\nimport { cva, VariantProps } from 'class-variance-authority'\n\nconst defaultVariants = {\n intent: 'current',\n size: 'current',\n isBackgroundVisible: false,\n} as const\n\nexport const spinnerStyles = cva(\n ['inline-block', 'border-solid', 'rounded-full', 'border-md', 'animate-spin'],\n {\n variants: {\n /**\n * Use `size` prop to set the size of the spinner. If you want to set the full size for the spinner, don't forget to add a wrapping container with its own size.\n */\n size: {\n current: ['u-current-font-size'],\n sm: ['w-sz-20', 'h-sz-20'],\n md: ['w-sz-28', 'h-sz-28'],\n full: ['w-full', 'h-full'],\n },\n /**\n * Color scheme of the spinner.\n */\n intent: makeVariants<\n 'intent',\n [\n 'current',\n 'main',\n 'support',\n 'accent',\n 'basic',\n 'success',\n 'alert',\n 'error',\n 'info',\n 'neutral',\n ]\n >({\n current: ['border-current'],\n main: ['border-main'],\n support: ['border-support'],\n accent: ['border-accent'],\n basic: ['border-basic'],\n success: ['border-success'],\n alert: ['border-alert'],\n error: ['border-error'],\n info: ['border-info'],\n neutral: ['border-neutral'],\n }),\n /**\n * Size of the button.\n */\n isBackgroundVisible: {\n true: ['border-b-neutral-container', 'border-l-neutral-container'],\n false: ['border-b-transparent', 'border-l-transparent'],\n },\n },\n defaultVariants,\n }\n)\n\nexport type SpinnerStylesProps = VariantProps<typeof spinnerStyles>\n","import { ComponentPropsWithRef, PropsWithChildren } from 'react'\n\nimport { VisuallyHidden } from '../visually-hidden'\nimport { spinnerStyles, SpinnerStylesProps } from './Spinner.styles'\n\nexport interface SpinnerProps extends ComponentPropsWithRef<'div'>, SpinnerStylesProps {\n /**\n * Use `label` prop for accessibility, it is important to add a fallback loading text. This text will be visible to screen readers.\n */\n label?: string\n}\n\nexport const Spinner = ({\n className,\n size = 'current',\n intent = 'current',\n label,\n isBackgroundVisible,\n ref,\n ...others\n}: PropsWithChildren<SpinnerProps>) => {\n return (\n <span\n role=\"status\"\n data-spark-component=\"spinner\"\n ref={ref}\n className={spinnerStyles({ className, size, intent, isBackgroundVisible })}\n {...others}\n >\n {label && <VisuallyHidden>{label}</VisuallyHidden>}\n </span>\n )\n}\n","import { makeVariants } from '@spark-ui/internal-utils'\nimport { cva, VariantProps } from 'class-variance-authority'\n\nimport {\n contrastVariants,\n filledVariants,\n ghostVariants,\n outlinedVariants,\n tintedVariants,\n} from './variants'\n\nexport const buttonStyles = cva(\n [\n 'u-shadow-border-transition',\n 'box-border inline-flex items-center justify-center gap-md whitespace-nowrap',\n 'default:px-lg',\n 'text-body-1 font-bold',\n 'focus-visible:u-outline',\n ],\n {\n variants: {\n /**\n * Main style of the button.\n *\n * - `filled`: Button will be plain.\n *\n * - `outlined`: Button will be transparent with an outline.\n *\n * - `tinted`: Button will be filled but using a lighter color scheme.\n *\n * - `ghost`: Button will look like a link. No borders, plain text.\n *\n * - `contrast`: Button will be surface filled. No borders, plain text.\n *\n */\n design: makeVariants<'design', ['filled', 'outlined', 'tinted', 'ghost', 'contrast']>({\n filled: [],\n outlined: ['bg-transparent', 'border-sm', 'border-current'],\n tinted: [],\n ghost: ['default:-mx-md px-md hover:bg-main/dim-5'],\n contrast: [],\n }),\n underline: {\n true: ['underline'],\n },\n /**\n * Color scheme of the button.\n */\n intent: makeVariants<\n 'intent',\n [\n 'main',\n 'support',\n 'accent',\n 'basic',\n 'success',\n 'alert',\n 'danger',\n 'info',\n 'neutral',\n 'surface',\n 'surfaceInverse',\n ]\n >({\n main: [],\n support: [],\n accent: [],\n basic: [],\n success: [],\n alert: [],\n danger: [],\n info: [],\n neutral: [],\n surface: [],\n surfaceInverse: [],\n }),\n /**\n * Size of the button.\n */\n size: makeVariants<'size', ['sm', 'md', 'lg']>({\n sm: ['min-w-sz-32', 'h-sz-32'],\n md: ['min-w-sz-44', 'h-sz-44'],\n lg: ['min-w-sz-56', 'h-sz-56'],\n }),\n /**\n * Shape of the button.\n */\n shape: makeVariants<'shape', ['rounded', 'square', 'pill']>({\n rounded: ['rounded-lg'],\n square: ['rounded-0'],\n pill: ['rounded-full'],\n }),\n /**\n * Disable the button, preventing user interaction and adding opacity.\n */\n disabled: {\n true: ['cursor-not-allowed', 'opacity-dim-3'],\n false: ['cursor-pointer'],\n },\n },\n compoundVariants: [\n ...filledVariants,\n ...outlinedVariants,\n ...tintedVariants,\n ...ghostVariants,\n ...contrastVariants,\n ],\n defaultVariants: {\n design: 'filled',\n intent: 'main',\n size: 'md',\n shape: 'rounded',\n },\n }\n)\n\nexport type ButtonStylesProps = VariantProps<typeof buttonStyles>\n","import { tw } from '@spark-ui/internal-utils'\n\nexport const filledVariants = [\n // Main\n {\n intent: 'main',\n design: 'filled',\n class: tw([\n 'bg-main',\n 'text-on-main',\n 'hover:bg-main-hovered',\n 'enabled:active:bg-main-hovered',\n 'focus-visible:bg-main-hovered',\n ]),\n },\n // Support\n {\n intent: 'support',\n design: 'filled',\n class: tw([\n 'bg-support',\n 'text-on-support',\n 'hover:bg-support-hovered',\n 'enabled:active:bg-support-hovered',\n 'focus-visible:bg-support-hovered',\n ]),\n },\n // Accent\n {\n intent: 'accent',\n design: 'filled',\n class: tw([\n 'bg-accent',\n 'text-on-accent',\n 'hover:bg-accent-hovered',\n 'enabled:active:bg-accent-hovered',\n 'focus-visible:bg-accent-hovered',\n ]),\n },\n // Basic\n {\n intent: 'basic',\n design: 'filled',\n class: tw([\n 'bg-basic',\n 'text-on-basic',\n 'hover:bg-basic-hovered',\n 'enabled:active:bg-basic-hovered',\n 'focus-visible:bg-basic-hovered',\n ]),\n },\n // Success\n {\n intent: 'success',\n design: 'filled',\n class: tw([\n 'bg-success',\n 'text-on-success',\n 'hover:bg-success-hovered',\n 'enabled:active:bg-success-hovered',\n 'focus-visible:bg-success-hovered',\n ]),\n },\n // Alert\n {\n intent: 'alert',\n design: 'filled',\n class: tw([\n 'bg-alert',\n 'text-on-alert',\n 'hover:bg-alert-hovered',\n 'enabled:active:bg-alert-hovered',\n 'focus-visible:bg-alert-hovered',\n ]),\n },\n // Danger\n {\n intent: 'danger',\n design: 'filled',\n class: tw([\n 'text-on-error bg-error',\n 'hover:bg-error-hovered enabled:active:bg-error-hovered',\n 'focus-visible:bg-error-hovered',\n ]),\n },\n // Info\n {\n intent: 'info',\n design: 'filled',\n class: tw([\n 'text-on-error bg-info',\n 'hover:bg-info-hovered enabled:active:bg-info-hovered',\n 'focus-visible:bg-info-hovered',\n ]),\n },\n // Neutral\n {\n intent: 'neutral',\n design: 'filled',\n class: tw([\n 'bg-neutral',\n 'text-on-neutral',\n 'hover:bg-neutral-hovered',\n 'enabled:active:bg-neutral-hovered',\n 'focus-visible:bg-neutral-hovered',\n ]),\n },\n // Surface\n {\n intent: 'surface',\n design: 'filled',\n class: tw([\n 'bg-surface',\n 'text-on-surface',\n 'hover:bg-surface-hovered',\n 'enabled:active:bg-surface-hovered',\n 'focus-visible:bg-surface-hovered',\n ]),\n },\n {\n intent: 'surfaceInverse',\n design: 'filled',\n class: tw([\n 'bg-surface-inverse',\n 'text-on-surface-inverse',\n 'hover:bg-surface-inverse-hovered',\n 'enabled:active:bg-surface-inverse-hovered',\n 'focus-visible:bg-surface-inverse-hovered',\n ]),\n },\n] as const\n","import { tw } from '@spark-ui/internal-utils'\n\nexport const ghostVariants = [\n {\n intent: 'main',\n design: 'ghost',\n class: tw([\n 'text-on-main-container',\n 'hover:bg-main/dim-5',\n 'enabled:active:bg-main/dim-5',\n 'focus-visible:bg-main/dim-5',\n ]),\n },\n {\n intent: 'support',\n design: 'ghost',\n class: tw([\n 'text-on-support-container',\n 'hover:bg-support/dim-5',\n 'enabled:active:bg-support/dim-5',\n 'focus-visible:bg-support/dim-5',\n ]),\n },\n {\n intent: 'accent',\n design: 'ghost',\n class: tw([\n 'text-on-accent-container',\n 'hover:bg-accent/dim-5',\n 'enabled:active:bg-accent/dim-5',\n 'focus-visible:bg-accent/dim-5',\n ]),\n },\n {\n intent: 'basic',\n design: 'ghost',\n class: tw([\n 'text-on-basic-container',\n 'hover:bg-basic/dim-5',\n 'enabled:active:bg-basic/dim-5',\n 'focus-visible:bg-basic/dim-5',\n ]),\n },\n {\n intent: 'success',\n design: 'ghost',\n class: tw([\n 'text-on-success-container',\n 'hover:bg-success/dim-5',\n 'enabled:active:bg-success/dim-5',\n 'focus-visible:bg-success/dim-5',\n ]),\n },\n {\n intent: 'alert',\n design: 'ghost',\n class: tw([\n 'text-on-alert-container',\n 'hover:bg-alert/dim-5',\n 'enabled:active:bg-alert/dim-5',\n 'focus-visible:bg-alert/dim-5',\n ]),\n },\n {\n intent: 'danger',\n design: 'ghost',\n class: tw([\n 'text-on-error-container',\n 'hover:bg-error/dim-5',\n 'enabled:active:bg-error/dim-5',\n 'focus-visible:bg-error/dim-5',\n ]),\n },\n {\n intent: 'info',\n design: 'ghost',\n class: tw([\n 'text-on-info-container',\n 'hover:bg-info/dim-5',\n 'enabled:active:bg-info/dim-5',\n 'focus-visible:bg-info/dim-5',\n ]),\n },\n {\n intent: 'neutral',\n design: 'ghost',\n class: tw([\n 'text-on-neutral-container',\n 'hover:bg-neutral/dim-5',\n 'enabled:active:bg-neutral/dim-5',\n 'focus-visible:bg-neutral/dim-5',\n ]),\n },\n {\n intent: 'surface',\n design: 'ghost',\n class: tw([\n 'text-surface',\n 'hover:bg-surface/dim-5',\n 'enabled:active:bg-surface/dim-5',\n 'focus-visible:bg-surface/dim-5',\n ]),\n },\n {\n intent: 'surfaceInverse',\n design: 'ghost',\n class: tw([\n 'text-surface-inverse',\n 'hover:bg-surface-inverse/dim-5',\n 'enabled:active:bg-surface-inverse/dim-5',\n 'focus-visible:bg-surface-inverse/dim-5',\n ]),\n },\n] as const\n","import { tw } from '@spark-ui/internal-utils'\n\nexport const outlinedVariants = [\n {\n intent: 'main',\n design: 'outlined',\n class: tw([\n 'hover:bg-main/dim-5',\n 'enabled:active:bg-main/dim-5',\n 'focus-visible:bg-main/dim-5',\n 'text-main',\n ]),\n },\n {\n intent: 'support',\n design: 'outlined',\n class: tw([\n 'hover:bg-support/dim-5',\n 'enabled:active:bg-support/dim-5',\n 'focus-visible:bg-support/dim-5',\n 'text-support',\n ]),\n },\n {\n intent: 'accent',\n design: 'outlined',\n class: tw([\n 'hover:bg-accent/dim-5',\n 'enabled:active:bg-accent/dim-5',\n 'focus-visible:bg-accent/dim-5',\n 'text-accent',\n ]),\n },\n {\n intent: 'basic',\n design: 'outlined',\n class: tw([\n 'hover:bg-basic/dim-5',\n 'enabled:active:bg-basic/dim-5',\n 'focus-visible:bg-basic/dim-5',\n 'text-basic',\n ]),\n },\n {\n intent: 'success',\n design: 'outlined',\n class: tw([\n 'hover:bg-success/dim-5',\n 'enabled:active:bg-success/dim-5',\n 'focus-visible:bg-success/dim-5',\n 'text-success',\n ]),\n },\n {\n intent: 'alert',\n design: 'outlined',\n class: tw([\n 'hover:bg-alert/dim-5',\n 'enabled:active:bg-alert/dim-5',\n 'focus-visible:bg-alert/dim-5',\n 'text-alert',\n ]),\n },\n {\n intent: 'danger',\n design: 'outlined',\n class: tw([\n 'hover:bg-error/dim-5',\n 'enabled:active:bg-error/dim-5',\n 'focus-visible:bg-error/dim-5',\n 'text-error',\n ]),\n },\n {\n intent: 'info',\n design: 'outlined',\n class: tw([\n 'hover:bg-info/dim-5',\n 'enabled:active:bg-info/dim-5',\n 'focus-visible:bg-info/dim-5',\n 'text-info',\n ]),\n },\n {\n intent: 'neutral',\n design: 'outlined',\n class: tw([\n 'hover:bg-neutral/dim-5',\n 'enabled:active:bg-neutral/dim-5',\n 'focus-visible:bg-neutral/dim-5',\n 'text-neutral',\n ]),\n },\n {\n intent: 'surface',\n design: 'outlined',\n class: tw([\n 'hover:bg-surface/dim-5',\n 'enabled:active:bg-surface/dim-5',\n 'focus-visible:bg-surface/dim-5',\n 'text-surface',\n ]),\n },\n {\n intent: 'surfaceInverse',\n design: 'outlined',\n class: tw([\n 'hover:bg-surface-inverse/dim-5',\n 'enabled:active:bg-surface-inverse/dim-5',\n 'focus-visible:bg-surface-inverse/dim-5',\n 'text-surface-inverse',\n ]),\n },\n] as const\n","import { tw } from '@spark-ui/internal-utils'\n\nexport const tintedVariants = [\n {\n intent: 'main',\n design: 'tinted',\n class: tw([\n 'bg-main-container',\n 'text-on-main-container',\n 'hover:bg-main-container-hovered',\n 'enabled:active:bg-main-container-hovered',\n 'focus-visible:bg-main-container-hovered',\n ]),\n },\n {\n intent: 'support',\n design: 'tinted',\n class: tw([\n 'bg-support-container',\n 'text-on-support-container',\n 'hover:bg-support-container-hovered',\n 'enabled:active:bg-support-container-hovered',\n 'focus-visible:bg-support-container-hovered',\n ]),\n },\n {\n intent: 'accent',\n design: 'tinted',\n class: tw([\n 'bg-accent-container',\n 'text-on-accent-container',\n 'hover:bg-accent-container-hovered',\n 'enabled:active:bg-accent-container-hovered',\n 'focus-visible:bg-accent-container-hovered',\n ]),\n },\n {\n intent: 'basic',\n design: 'tinted',\n class: tw([\n 'bg-basic-container',\n 'text-on-basic-container',\n 'hover:bg-basic-container-hovered',\n 'enabled:active:bg-basic-container-hovered',\n 'focus-visible:bg-basic-container-hovered',\n ]),\n },\n {\n intent: 'success',\n design: 'tinted',\n class: tw([\n 'bg-success-container',\n 'text-on-success-container',\n 'hover:bg-success-container-hovered',\n 'enabled:active:bg-success-container-hovered',\n 'focus-visible:bg-success-container-hovered',\n ]),\n },\n {\n intent: 'alert',\n design: 'tinted',\n class: tw([\n 'bg-alert-container',\n 'text-on-alert-container',\n 'hover:bg-alert-container-hovered',\n 'enabled:active:bg-alert-container-hovered',\n 'focus-visible:bg-alert-container-hovered',\n ]),\n },\n {\n intent: 'danger',\n design: 'tinted',\n class: tw([\n 'bg-error-container',\n 'text-on-error-container',\n 'hover:bg-error-container-hovered',\n 'enabled:active:bg-error-container-hovered',\n 'focus-visible:bg-error-container-hovered',\n ]),\n },\n {\n intent: 'info',\n design: 'tinted',\n class: tw([\n 'bg-info-container',\n 'text-on-info-container',\n 'hover:bg-info-container-hovered',\n 'enabled:active:bg-info-container-hovered',\n 'focus-visible:bg-info-container-hovered',\n ]),\n },\n {\n intent: 'neutral',\n design: 'tinted',\n class: tw([\n 'bg-neutral-container',\n 'text-on-neutral-container',\n 'hover:bg-neutral-container-hovered',\n 'enabled:active:bg-neutral-container-hovered',\n 'focus-visible:bg-neutral-container-hovered',\n ]),\n },\n {\n intent: 'surface',\n design: 'tinted',\n class: tw([\n 'bg-surface',\n 'text-on-surface',\n 'hover:bg-surface-hovered',\n 'enabled:active:bg-surface-hovered',\n 'focus-visible:bg-surface-hovered',\n ]),\n },\n {\n intent: 'surfaceInverse',\n design: 'tinted',\n class: tw([\n 'bg-surface-inverse',\n 'text-on-surface-inverse',\n 'hover:bg-surface-inverse-hovered',\n 'enabled:active:bg-surface-inverse-hovered',\n 'focus-visible:bg-surface-inverse-hovered',\n ]),\n },\n] as const\n","import { tw } from '@spark-ui/internal-utils'\n\nexport const contrastVariants = [\n {\n intent: 'main',\n design: 'contrast',\n class: tw([\n 'text-on-main-contaier bg-surface',\n 'hover:bg-main-container-hovered',\n 'enabled:active:bg-main-container-hovered',\n 'focus-visible:bg-main-container-hovered',\n ]),\n },\n {\n intent: 'support',\n design: 'contrast',\n class: tw([\n 'text-on-support-container bg-surface',\n 'hover:bg-support-container-hovered',\n 'enabled:active:bg-support-container-hovered',\n 'focus-visible:bg-support-container-hovered',\n ]),\n },\n {\n intent: 'accent',\n design: 'contrast',\n class: tw([\n 'text-on-accent-container bg-surface',\n 'hover:bg-accent-container-hovered',\n 'enabled:active:bg-accent-container-hovered',\n 'focus-visible:bg-accent-container-hovered',\n ]),\n },\n {\n intent: 'basic',\n design: 'contrast',\n class: tw([\n 'text-on-basic-container bg-surface',\n 'hover:bg-basic-container-hovered',\n 'enabled:active:bg-basic-container-hovered',\n 'focus-visible:bg-basic-container-hovered',\n ]),\n },\n {\n intent: 'success',\n design: 'contrast',\n class: tw([\n 'text-on-success-container bg-surface',\n 'hover:bg-success-container-hovered',\n 'enabled:active:bg-success-container-hovered',\n 'focus-visible:bg-success-container-hovered',\n ]),\n },\n {\n intent: 'alert',\n design: 'contrast',\n class: tw([\n 'text-on-alert-container bg-surface',\n 'hover:bg-alert-container-hovered',\n 'enabled:active:bg-alert-container-hovered',\n 'focus-visible:bg-alert-container-hovered',\n ]),\n },\n {\n intent: 'danger',\n design: 'contrast',\n class: tw([\n 'text-on-error-container bg-surface',\n 'hover:bg-error-container-hovered',\n 'enabled:active:bg-error-container-hovered',\n 'focus-visible:bg-error-container-hovered',\n ]),\n },\n {\n intent: 'info',\n design: 'contrast',\n class: tw([\n 'text-on-info-container bg-surface',\n 'hover:bg-info-container-hovered',\n 'enabled:active:bg-info-container-hovered',\n 'focus-visible:bg-info-container-hovered',\n ]),\n },\n {\n intent: 'neutral',\n design: 'contrast',\n class: tw([\n 'text-on-neutral-container bg-surface',\n 'hover:bg-neutral-container-hovered',\n 'enabled:active:bg-neutral-container-hovered',\n 'focus-visible:bg-neutral-container-hovered',\n ]),\n },\n {\n intent: 'surface',\n design: 'contrast',\n class: tw([\n 'text-on-surface bg-surface',\n 'hover:bg-surface-hovered',\n 'enabled:active:bg-surface-hovered',\n 'focus-visible:bg-surface-hovered',\n ]),\n },\n {\n intent: 'surfaceInverse',\n design: 'contrast',\n class: tw([\n 'text-on-surface-inverse bg-surface-inverse',\n 'hover:bg-surface-inverse-hovered',\n 'enabled:active:bg-surface-inverse-hovered',\n 'focus-visible:bg-surface-inverse-hovered',\n ]),\n },\n] as const\n","import { makeVariants } from '@spark-ui/internal-utils'\nimport { cva, VariantProps } from 'class-variance-authority'\n\n// override the Button component's px-lg padding by using a more specific class selector (pl-0 pr-0)\nexport const iconButtonStyles = cva(['pl-0 pr-0'], {\n variants: {\n /**\n * Sets the size of the icon.\n */\n size: makeVariants<'size', ['sm', 'md', 'lg']>({\n sm: ['text-body-1'],\n md: ['text-body-1'],\n lg: ['text-display-3'],\n }),\n },\n})\n\nexport type IconButtonStylesProps = VariantProps<typeof iconButtonStyles>\n","import { Ref } from 'react'\n\nimport { Button, ButtonProps } from '../button'\nimport { iconButtonStyles } from './IconButton.styles'\n\nexport interface IconButtonProps extends Omit<ButtonProps, 'loadingText'> {\n 'aria-label': string\n ref?: Ref<HTMLButtonElement>\n}\n\nexport const IconButton = ({\n design = 'filled',\n disabled = false,\n intent = 'main',\n shape = 'rounded',\n size = 'md',\n className,\n ref,\n ...others\n}: IconButtonProps) => {\n return (\n <Button\n data-spark-component=\"icon-button\"\n ref={ref}\n className={iconButtonStyles({ size, className })}\n design={design}\n disabled={disabled}\n intent={intent}\n shape={shape}\n size={size}\n {...others}\n />\n )\n}\n\nIconButton.displayName = 'IconButton'\n","import { cx } from 'class-variance-authority'\nimport { ReactNode, useEffect, useRef } from 'react'\n\nimport { useCarouselContext } from './Carousel'\n\ninterface Props {\n children?: ReactNode\n 'aria-label': string\n index: number\n className?: string\n unstyled?: boolean\n intent?: 'basic' | 'surface'\n}\n\nexport const CarouselPageIndicator = ({\n children,\n unstyled = false,\n index,\n 'aria-label': ariaLabel,\n className,\n intent = 'basic',\n}: Props) => {\n const ctx = useCarouselContext()\n\n const ref = useRef<HTMLButtonElement | null>(null)\n\n useEffect(() => {\n if (ctx.pageIndicatorsRefs.current) {\n ctx.pageIndicatorsRefs.current[index] = ref.current\n }\n })\n\n const indicatorProps = ctx.getIndicatorProps({ index })\n\n return (\n <button\n data-spark-component=\"carousel-page-indicator\"\n ref={ref}\n key={index}\n {...indicatorProps}\n aria-label={ariaLabel}\n className={cx(\n {\n [cx(\n 'border-outline group relative flex justify-center border-0 hover:cursor-pointer',\n 'm-sm rounded-sm transition-all duration-[200ms] ease-linear',\n 'w-sz-8 h-sz-8',\n 'data-[state=active]:w-sz-32 data-[state=active]:h-sz-8',\n 'data-[state=edge]:w-sz-4 data-[state=edge]:h-sz-4',\n 'data-[state=hidden]:m-0 data-[state=hidden]:size-0',\n intent === 'surface'\n ? 'data-[state=active]:bg-surface bg-surface/dim-2'\n : 'data-[state=active]:bg-basic bg-on-surface/dim-2'\n )]: !unstyled,\n // [dotsStyles]: !unstyled,\n },\n className\n )}\n >\n {children}\n </button>\n )\n}\n\nCarouselPageIndicator.displayName = 'Carousel.PageIndicator'\n","import { cx } from 'class-variance-authority'\nimport { ReactNode } from 'react'\n\nimport { useCarouselContext } from './Carousel'\nimport { CarouselAPI } from './types'\n\ninterface RenderProps extends CarouselAPI {\n pages: number[]\n}\n\ninterface Props {\n children: (renderProps: RenderProps) => ReactNode\n className?: string\n}\n\nexport const CarouselPagePicker = ({ children, className }: Props) => {\n const ctx = useCarouselContext()\n\n return (\n <>\n <div\n data-spark-component=\"carousel-page-picker\"\n {...ctx.getIndicatorGroupProps()}\n className={cx(\n 'flex-wrap items-center justify-center',\n 'default:min-h-sz-16 flex',\n ctx.pagePickerInset && 'bottom-sz-12 absolute inset-x-0',\n className\n )}\n >\n {ctx.pageSnapPoints.length <= 1\n ? null\n : children({\n ...ctx,\n pages: Array.from({ length: ctx.pageSnapPoints.length }, (_, i) => i),\n })}\n </div>\n </>\n )\n}\n\nCarouselPagePicker.displayName = 'Carousel.PagePicker'\n","import { ArrowVerticalLeft } from '@spark-ui/icons/ArrowVerticalLeft'\n\nimport { Icon } from '../icon'\nimport { IconButton, IconButtonProps } from '../icon-button'\nimport { useCarouselContext } from './Carousel'\n\nexport const CarouselPrevButton = ({\n 'aria-label': ariaLabel,\n ...buttonProps\n}: IconButtonProps) => {\n const ctx = useCarouselContext()\n\n return (\n <IconButton\n data-spark-component=\"carousel-prev-button\"\n {...ctx.getPrevTriggerProps()}\n intent=\"surface\"\n design=\"filled\"\n className=\"pointer-events-auto cursor-pointer shadow-sm disabled:invisible\"\n aria-label={ariaLabel}\n {...buttonProps}\n >\n <Icon>\n <ArrowVerticalLeft />\n </Icon>\n </IconButton>\n )\n}\n\nCarouselPrevButton.displayName = 'Carousel.PrevButton'\n","import { cx } from 'class-variance-authority'\nimport { ComponentProps, ReactNode, useRef } from 'react'\n\nimport { useCarouselContext } from './Carousel'\nimport { useIsVisible } from './useIsVisible'\n\nexport interface CarouselSlideProps extends ComponentProps<'div'> {\n isSnapPoint?: boolean\n children?: ReactNode\n index?: number\n totalSlides?: number\n className?: string\n}\n\nexport const CarouselSlide = ({\n children,\n index = 0,\n totalSlides,\n className = '',\n ...props\n}: CarouselSlideProps) => {\n const itemRef = useRef<HTMLDivElement>(null)\n const ctx = useCarouselContext()\n\n const isVisible = useIsVisible(itemRef, ctx.ref)\n\n return (\n <div\n data-spark-component=\"carousel-slide\"\n ref={itemRef}\n {...ctx.getSlideProps({ index, totalSlides: totalSlides as number })}\n className={cx('default:bg-surface relative overflow-hidden', className)}\n aria-hidden={!isVisible}\n inert={!isVisible}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nCarouselSlide.displayName = 'Carousel.Slide'\n","import { RefObject, useEffect, useState } from 'react'\n\nimport { useCarouselContext } from './Carousel'\n\n/**\n * Hook to track slide visibility using the centralized IntersectionObserver.\n * This optimizes performance by using a single observer per carousel instead of one per slide.\n */\nexport function useIsVisible(\n elementRef: RefObject<HTMLElement | null>,\n _parentRef: RefObject<HTMLElement | null>\n) {\n const [isVisible, setIsVisible] = useState(true)\n const ctx = useCarouselContext()\n\n useEffect(() => {\n const el = elementRef.current\n if (!el) return\n\n // Extract stable functions from context to avoid unnecessary re-renders\n const { registerSlide, unregisterSlide } = ctx\n\n // Register the slide with the centralized observer\n registerSlide(el, setIsVisible)\n\n // Cleanup: unregister when the component unmounts\n return () => {\n unregisterSlide(el)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [elementRef]) // Only depend on elementRef, registerSlide/unregisterSlide are stable callbacks\n\n return isVisible\n}\n","import { cx } from 'class-variance-authority'\nimport { Children, cloneElement, ComponentProps, isValidElement, ReactNode } from 'react'\n\nimport { useCarouselContext } from './Carousel'\nimport { CarouselSlideProps } from './CarouselSlide'\n\ninterface Props extends ComponentProps<'div'> {\n children?: ReactNode\n className?: string\n}\n\nexport const CarouselSlides = ({ children, className = '' }: Props) => {\n const ctx = useCarouselContext()\n\n const childrenElements = Children.toArray(children)\n\n return (\n <div\n data-spark-component=\"carousel-slides\"\n {...ctx.getSlidesContainerProps()}\n className={cx(\n 'focus-visible:u-outline relative w-full',\n '[-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden',\n className\n )}\n >\n {childrenElements.map((child, index) =>\n isValidElement<CarouselSlideProps>(child)\n ? cloneElement(child, {\n index,\n totalSlides: childrenElements.length,\n })\n : child\n )}\n </div>\n )\n}\n\nCarouselSlides.displayName = 'Carousel.Slides'\n","import { ReactNode } from 'react'\n\ninterface Props {\n children: ReactNode\n}\n\nexport const CarouselViewport = ({ children }: Props) => {\n return <div className=\"relative flex items-center justify-around p-0\">{children}</div>\n}\n\nCarouselViewport.displayName = 'Carousel.Viewport'\n"],"mappings":"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","names":["Carousel","import_react","import_react","import_react","import_react","import_react","import_react","import_react","startIndex","import_class_variance_authority","import_jsx_runtime","import_react","import_react","import_jsx_runtime","RadixSlot","import_jsx_runtime","import_class_variance_authority","import_jsx_runtime","import_class_variance_authority","import_react","import_internal_utils","import_class_variance_authority","import_jsx_runtime","import_internal_utils","import_class_variance_authority","import_internal_utils","import_internal_utils","import_internal_utils","import_internal_utils","import_internal_utils","import_jsx_runtime","import_internal_utils","import_class_variance_authority","import_jsx_runtime","import_jsx_runtime","import_class_variance_authority","import_react","import_jsx_runtime","import_class_variance_authority","import_jsx_runtime","import_jsx_runtime","import_class_variance_authority","import_react","import_react","import_jsx_runtime","import_class_variance_authority","import_react","import_jsx_runtime","import_jsx_runtime","Carousel"]}
1
+ {"version":3,"file":"index.js","sources":["../../src/carousel/useCarouselVisibility.ts","../../src/carousel/useEvent.ts","../../src/carousel/useIsMounted.ts","../../src/carousel/useScrollEnd.ts","../../src/carousel/useResizeObserver.ts","../../src/carousel/utils.ts","../../src/carousel/useSnapPoints.ts","../../src/carousel/useCarousel.ts","../../src/carousel/Carousel.tsx","../../src/carousel/CarouselControls.tsx","../../src/carousel/CarouselNextButton.tsx","../../src/carousel/CarouselPageIndicator.tsx","../../src/carousel/CarouselPagePicker.tsx","../../src/carousel/CarouselPrevButton.tsx","../../src/carousel/useIsVisible.ts","../../src/carousel/CarouselSlide.tsx","../../src/carousel/CarouselSlides.tsx","../../src/carousel/CarouselViewport.tsx","../../src/carousel/index.ts"],"sourcesContent":["import { RefObject, useCallback, useEffect, useRef } from 'react'\n\n/**\n * Hook to manage slide visibility using a centralized IntersectionObserver.\n * This optimizes performance by using a single observer per carousel instead of one per slide.\n *\n * @param carouselRef - Reference to the carousel container element\n * @returns Object with functions to register/unregister slides and check visibility\n */\nexport function useCarouselVisibility(carouselRef: RefObject<HTMLDivElement | null>) {\n const slideVisibilityMap = useRef<Map<HTMLElement, boolean>>(new Map())\n const visibilityObserverRef = useRef<IntersectionObserver | null>(null)\n const visibilityCallbacksRef = useRef<Map<HTMLElement, (isVisible: boolean) => void>>(new Map())\n\n // Create the shared IntersectionObserver callback\n const createObserverCallback = useCallback(() => {\n return (entries: IntersectionObserverEntry[]) => {\n // Batch all visibility updates to minimize re-renders\n entries.forEach(entry => {\n const isVisible = entry.isIntersecting\n const element = entry.target as HTMLElement\n slideVisibilityMap.current.set(element, isVisible)\n\n // Notify the callback if it exists\n const callback = visibilityCallbacksRef.current.get(element)\n if (callback) {\n callback(isVisible)\n }\n })\n }\n }, [])\n\n // Initialize or get the shared IntersectionObserver\n const getOrCreateObserver = useCallback(() => {\n if (visibilityObserverRef.current) {\n return visibilityObserverRef.current\n }\n\n const container = carouselRef.current\n if (!container) return null\n\n const observer = new IntersectionObserver(createObserverCallback(), {\n root: container,\n threshold: 0.2,\n })\n\n visibilityObserverRef.current = observer\n\n return observer\n }, [carouselRef, createObserverCallback])\n\n // Initialize the shared IntersectionObserver when container is ready\n useEffect(() => {\n const observer = getOrCreateObserver()\n // Capture ref values to avoid stale closure warnings\n const visibilityMap = slideVisibilityMap.current\n const callbacksMap = visibilityCallbacksRef.current\n\n return () => {\n if (observer) {\n observer.disconnect()\n visibilityMap.clear()\n callbacksMap.clear()\n visibilityObserverRef.current = null\n }\n }\n }, [getOrCreateObserver])\n\n // Register a slide element with the observer\n const registerSlide = useCallback(\n (element: HTMLElement | null, callback: (isVisible: boolean) => void) => {\n if (!element) return\n\n const observer = getOrCreateObserver()\n if (!observer) {\n // If container is not ready yet, retry on next tick\n setTimeout(() => registerSlide(element, callback), 0)\n\n return\n }\n\n // Check initial visibility (default to true for slides that are already in view)\n const initialVisible = slideVisibilityMap.current.get(element) ?? true\n slideVisibilityMap.current.set(element, initialVisible)\n visibilityCallbacksRef.current.set(element, callback)\n observer.observe(element)\n\n // Call callback with initial state\n callback(initialVisible)\n },\n [getOrCreateObserver]\n )\n\n // Unregister a slide element from the observer\n const unregisterSlide = useCallback((element: HTMLElement | null) => {\n if (!element) return\n\n const observer = visibilityObserverRef.current\n if (observer) {\n observer.unobserve(element)\n }\n slideVisibilityMap.current.delete(element)\n visibilityCallbacksRef.current.delete(element)\n }, [])\n\n // Get current visibility state for a slide\n const isSlideVisible = useCallback((element: HTMLElement | null): boolean => {\n if (!element) return true\n\n return slideVisibilityMap.current.get(element) ?? true\n }, [])\n\n return {\n registerSlide,\n unregisterSlide,\n isSlideVisible,\n }\n}\n","import { useCallback, useLayoutEffect, useRef } from 'react'\n\ntype AnyFunction = (...args: any[]) => any\n\n/**\n * Directly from this gist: https://gist.github.com/diegohaz/695097a06f038a707c3a1b11e4e40195\n * Until React releases a native `useEvent` hook.\n */\nexport function useEvent<T extends AnyFunction>(callback?: T) {\n const ref = useRef<AnyFunction | undefined>(() => {\n throw new Error('Cannot call an event handler while rendering.')\n })\n\n useLayoutEffect(() => {\n ref.current = callback\n })\n\n return useCallback<AnyFunction>((...args) => ref.current?.(...args), []) as T\n}\n","import { useEffect, useRef } from 'react'\n\nexport const useIsMounted = () => {\n const isMounted = useRef(false)\n\n useEffect(() => {\n isMounted.current = true\n\n return () => {\n isMounted.current = false\n }\n }, [])\n\n return isMounted\n}\n","import { useEffect, useRef, RefObject } from 'react'\n\nexport function useScrollEnd(scrollRef: RefObject<HTMLDivElement | null>, callback: () => void) {\n const scrollLeft = useRef(0)\n\n /**\n * Safari (and some smaller browsers) to not yet support the `scrollend` event.\n * For those we must rely on the `scroll` event and and an idle state delay to trigger the \"scroll end\".\n *\n * Caveats:\n * - when using a trackpad or your fingers on a touch device, scrolling then holding the position might trigger the \"scrollend\" callback too early.\n */\n const safariTimeout = useRef<NodeJS.Timeout | null>(null)\n\n useEffect(() => {\n const element = scrollRef.current\n if (!element) return\n\n const supportsScrollend = 'onscrollend' in window\n\n const handleScrollEnd = () => {\n callback()\n }\n\n const handleSafariScroll = () => {\n if (safariTimeout.current) {\n clearTimeout(safariTimeout.current)\n }\n\n if (scrollRef.current) {\n scrollLeft.current = scrollRef.current.scrollLeft\n\n safariTimeout.current = setTimeout(() => {\n if (scrollRef.current) {\n handleScrollEnd()\n }\n }, 150)\n }\n }\n\n if (supportsScrollend) {\n element.addEventListener('scrollend', handleScrollEnd)\n } else {\n element.addEventListener('scroll', handleSafariScroll)\n }\n\n return () => {\n if (safariTimeout.current) {\n clearTimeout(safariTimeout.current)\n }\n\n if (supportsScrollend) {\n element.removeEventListener('scrollend', handleScrollEnd)\n } else {\n element.removeEventListener('scroll', handleSafariScroll)\n }\n }\n }, [callback, scrollRef])\n}\n\nexport default useScrollEnd\n","import { useLayoutEffect, RefObject } from 'react'\n\nexport function useResizeObserver<T extends HTMLElement | null>(\n ref: RefObject<T>,\n callback: (width: number) => void\n) {\n useLayoutEffect(() => {\n const element = ref.current\n if (!element) return\n\n const observer = new ResizeObserver(entries => {\n for (const entry of entries) {\n callback(entry.contentRect.width)\n }\n })\n\n observer.observe(element)\n\n return () => observer.disconnect() // Cleanup on unmount\n }, [ref, callback])\n}\n","/**\n * Get the indices of each slides that serves as the start of a page\n * @returns number[] (ex: [0, 2, 4])\n */\nfunction getSnapIndices({\n totalSlides,\n slidesPerMove,\n slidesPerPage,\n}: {\n totalSlides: number\n slidesPerMove: number | 'auto'\n slidesPerPage: number\n}) {\n const slideBy = slidesPerMove === 'auto' ? slidesPerPage : slidesPerMove\n const snapPoints: number[] = []\n\n const lastSnapIndex = Math.floor((totalSlides - slidesPerPage) / slideBy) * slideBy\n\n for (let i = 0; i <= lastSnapIndex; i += slideBy) {\n snapPoints.push(i)\n }\n\n // Adding final snap point if necessary\n if (snapPoints[snapPoints.length - 1] !== totalSlides - slidesPerPage) {\n snapPoints.push(totalSlides - slidesPerPage)\n }\n\n return snapPoints\n}\n\nexport function getSlideElements(container: HTMLDivElement | null): Element[] {\n return container ? Array.from(container.querySelectorAll('[data-part=\"item\"]')) : []\n}\n\nexport function isSnapPoint(\n slideIndex: number,\n {\n container,\n slidesPerMove,\n slidesPerPage,\n }: {\n container: HTMLDivElement | null\n slidesPerMove: number | 'auto'\n slidesPerPage: number\n }\n) {\n return getSnapIndices({\n totalSlides: getSlideElements(container).length,\n slidesPerPage,\n slidesPerMove,\n }).includes(slideIndex)\n}\n\n/**\n * Get the scroll value of each slides that serves as the start of a page\n * @returns number[] (ex for a 400px carousel with no gap: [400, 800, 1200])\n */\nexport function getSnapPositions({\n container,\n slidesPerMove,\n slidesPerPage,\n}: {\n container: HTMLDivElement | null\n slidesPerMove: number | 'auto'\n slidesPerPage: number\n}) {\n if (!container) return []\n\n return getSlideElements(container)\n .filter((_, index) => {\n return isSnapPoint(index, {\n slidesPerMove,\n slidesPerPage,\n container,\n })\n })\n .map(slide => (slide as HTMLElement).offsetLeft)\n}\n\n/**\n * Calculate the state of a dot indicator of a carousel depending on the current page and the total number of pages.\n */\nexport function computeDotState({\n dotIndex,\n pageState,\n totalPages,\n maxDots = 5,\n}: {\n dotIndex: number\n pageState: number\n totalPages: number\n maxDots?: number\n}): 'active' | 'edge' | 'idle' | 'hidden' {\n if (totalPages <= maxDots) {\n return dotIndex === pageState ? 'active' : 'idle'\n }\n\n if (pageState <= Math.floor(maxDots / 2)) {\n if (dotIndex > maxDots - 1) return 'hidden'\n if (dotIndex === pageState) return 'active'\n if (dotIndex === maxDots - 1) return 'edge'\n\n return 'idle'\n }\n\n if (pageState >= totalPages - Math.ceil(maxDots / 2)) {\n const startIndex = totalPages - maxDots\n if (dotIndex < startIndex) return 'hidden'\n if (dotIndex === pageState) return 'active'\n if (dotIndex === startIndex) return 'edge'\n\n return 'idle'\n }\n\n const startIndex = pageState - Math.floor(maxDots / 2)\n const endIndex = pageState + Math.floor(maxDots / 2)\n if (dotIndex < startIndex || dotIndex > endIndex) return 'hidden'\n if (dotIndex === pageState) return 'active'\n if (dotIndex === startIndex || dotIndex === endIndex) return 'edge'\n\n return 'idle'\n}\n","import { useMemo, useState, RefObject } from 'react'\n\nimport { useResizeObserver } from './useResizeObserver'\nimport { getSnapPositions } from './utils'\n\n/**\n * Get the scroll value of each slides that serves as the start of a page\n * The array is updated when resize event are caught in the carousel.\n */\nexport function useSnapPoints<T extends HTMLDivElement | null>(\n initialSnapPoints: number[] = [],\n {\n carouselRef,\n slidesPerMove,\n slidesPerPage,\n }: {\n carouselRef: RefObject<T>\n slidesPerMove: 'auto' | number\n slidesPerPage: number\n }\n) {\n const [pageSnapPoints, setPageSnapPoints] = useState(initialSnapPoints)\n\n const stableSnapPoints = useMemo(() => pageSnapPoints, [pageSnapPoints])\n\n /**\n * On resize, dimensions of the carousel might changes, which requires to update the snap points positions in the state.\n */\n useResizeObserver(carouselRef, () => {\n const newSnapPoints = getSnapPositions({\n slidesPerMove,\n slidesPerPage,\n container: carouselRef.current,\n })\n\n if (JSON.stringify(pageSnapPoints) !== JSON.stringify(newSnapPoints)) {\n setPageSnapPoints(newSnapPoints)\n }\n })\n\n return [stableSnapPoints, setPageSnapPoints] as const\n}\n","/* eslint-disable max-lines-per-function */\nimport {\n KeyboardEvent,\n useCallback,\n useEffect,\n useId,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react'\n\nimport {\n CarouselAPI,\n ComputedControlProps,\n ComputedIndicatorGroupProps,\n ComputedIndicatorProps,\n ComputedRootProps,\n ComputedSlideGroupProps,\n ComputedSlideProps,\n ComputedTriggerProps,\n UseCarouselProps,\n} from './types'\nimport { useCarouselVisibility } from './useCarouselVisibility'\nimport { useEvent } from './useEvent'\nimport { useIsMounted } from './useIsMounted'\nimport { useScrollEnd } from './useScrollEnd'\nimport { useSnapPoints } from './useSnapPoints'\nimport { computeDotState, getSnapPositions, isSnapPoint } from './utils'\n\nconst DATA_SCOPE = 'carousel' as const\nconst DIRECTION = 'ltr' as const\n\nexport const useCarousel = ({\n defaultPage,\n gap = 16,\n snapType = 'mandatory',\n snapStop = 'always',\n scrollPadding = 0,\n slidesPerPage = 1,\n slidesPerMove = 'auto',\n scrollBehavior = 'smooth',\n loop = false,\n pagePickerInset = false,\n maxDots = 5,\n // state control\n page: controlledPage,\n onPageChange: onPageChangeProp,\n}: UseCarouselProps): CarouselAPI => {\n const carouselId = useId()\n const [pageState, setPageState] = useState(defaultPage || controlledPage || 0)\n\n const carouselRef = useRef<HTMLDivElement>(null)\n const pageIndicatorsRefs = useRef<(HTMLElement | null)[]>([])\n const isMountedRef = useIsMounted()\n const isMounted = isMountedRef.current\n const onPageChange = useEvent(onPageChangeProp)\n\n // Centralized visibility management with a single IntersectionObserver per carousel\n const { registerSlide, unregisterSlide, isSlideVisible } = useCarouselVisibility(carouselRef)\n\n const [pageSnapPoints] = useSnapPoints([], {\n carouselRef,\n slidesPerMove,\n slidesPerPage,\n })\n\n const canScrollPrev = useRef(loop || pageState > 0)\n const canScrollNext = useRef(loop || pageState < pageSnapPoints.length - 1)\n canScrollPrev.current = loop || pageState > 0\n canScrollNext.current = loop || pageState < pageSnapPoints.length - 1\n\n const handlePageChange = useCallback(\n (page: number) => {\n if (page !== pageState) {\n setPageState(page)\n onPageChange?.(page)\n }\n },\n [onPageChange, pageState]\n )\n\n const scrollTo = useCallback(\n (page: number, behavior: 'instant' | 'smooth') => {\n if (carouselRef.current) {\n carouselRef.current.scrollTo({\n left: pageSnapPoints[page],\n behavior: behavior === 'instant' ? 'auto' : 'smooth',\n })\n handlePageChange(page)\n }\n },\n [handlePageChange, pageSnapPoints]\n )\n\n const scrollPrev = useCallback(\n (cb?: (pageIndex: number) => void) => {\n if (canScrollPrev) {\n const targetPage =\n loop && pageState === 0 ? pageSnapPoints.length - 1 : Math.max(pageState - 1, 0)\n\n scrollTo(targetPage, scrollBehavior)\n cb?.(targetPage)\n }\n },\n [loop, pageSnapPoints, pageState, scrollBehavior, scrollTo]\n )\n\n const scrollNext = useCallback(\n (cb?: (pageIndex: number) => void) => {\n if (canScrollNext) {\n const targetPage =\n loop && pageState === pageSnapPoints.length - 1\n ? 0\n : Math.min(pageState + 1, pageSnapPoints.length - 1)\n\n scrollTo(targetPage, scrollBehavior)\n cb?.(targetPage)\n }\n },\n [loop, pageSnapPoints, pageState, scrollBehavior, scrollTo]\n )\n\n useEffect(() => {\n if (controlledPage != null) {\n scrollTo(controlledPage, scrollBehavior)\n }\n }, [controlledPage, scrollBehavior, scrollTo])\n\n /**\n * Set the default scroll position of the carousel based on `defaultPage`.\n * As this operation is done before the snap points are set in the state, we have to get them from the ref directly.\n */\n useLayoutEffect(() => {\n if (defaultPage != null && !isMounted && carouselRef.current) {\n const snapPositions = getSnapPositions({\n container: carouselRef.current,\n slidesPerMove,\n slidesPerPage,\n })\n\n carouselRef.current.scrollTo({\n left: snapPositions[defaultPage],\n behavior: 'instant',\n })\n }\n }, [defaultPage, isMounted, slidesPerMove, slidesPerPage])\n\n /**\n * Monitoring scrollend events inside the scrollable area to sync the carousel active page with current scroll position.\n * Scrollend has been chosen over \"scroll\" for performance reason.\n */\n const syncPageStateWithScrollPosition = useCallback(() => {\n if (!carouselRef.current || pageSnapPoints.length === 0) return\n\n const { scrollLeft } = carouselRef.current\n\n const distances = pageSnapPoints.map(pagePosition => Math.abs(scrollLeft - pagePosition))\n const pageInViewport = distances.indexOf(Math.min(...distances))\n\n if (pageInViewport !== -1) {\n handlePageChange(pageInViewport)\n }\n }, [pageSnapPoints, handlePageChange])\n\n useScrollEnd(carouselRef, syncPageStateWithScrollPosition)\n\n const contextValue: CarouselAPI = {\n ref: carouselRef,\n pageIndicatorsRefs,\n // props\n gap,\n snapType,\n snapStop,\n scrollPadding,\n slidesPerPage,\n slidesPerMove,\n scrollBehavior,\n loop,\n pagePickerInset,\n maxDots,\n // computed state\n page: pageState,\n pageSnapPoints,\n canScrollNext: canScrollNext.current,\n canScrollPrev: canScrollPrev.current,\n scrollTo,\n scrollPrev,\n scrollNext,\n // visibility management\n registerSlide,\n unregisterSlide,\n isSlideVisible,\n // anatomy\n getRootProps: (): ComputedRootProps => ({\n id: `carousel::${carouselId}:`,\n role: 'region',\n 'aria-roledescription': 'carousel',\n 'data-scope': DATA_SCOPE,\n 'data-part': 'root',\n 'data-orientation': 'horizontal',\n dir: DIRECTION,\n style: {\n '--slides-per-page': slidesPerPage,\n '--slide-spacing': `${gap}px`,\n '--slide-item-size':\n 'calc(100% / var(--slides-per-page) - var(--slide-spacing) * (var(--slides-per-page) - 1) / var(--slides-per-page))',\n },\n }),\n\n getControlProps: (): ComputedControlProps => ({\n 'data-scope': DATA_SCOPE,\n 'data-part': 'control',\n 'data-orientation': 'horizontal',\n }),\n\n getPrevTriggerProps: (): ComputedTriggerProps<'prev-trigger'> => ({\n id: `carousel::${carouselId}::prev-trigger`,\n 'aria-controls': `carousel::${carouselId}::item-group`,\n 'data-scope': DATA_SCOPE,\n 'data-part': 'prev-trigger',\n 'data-orientation': 'horizontal',\n type: 'button',\n dir: DIRECTION,\n disabled: !canScrollPrev.current,\n onClick: () => scrollPrev(),\n }),\n\n getNextTriggerProps: (): ComputedTriggerProps<'next-trigger'> => ({\n id: `carousel::${carouselId}::next-trigger`,\n 'aria-controls': `carousel::${carouselId}::item-group`,\n 'data-scope': DATA_SCOPE,\n 'data-part': 'next-trigger',\n 'data-orientation': 'horizontal',\n type: 'button',\n dir: DIRECTION,\n disabled: !canScrollNext.current,\n onClick: () => scrollNext(),\n }),\n\n getSlidesContainerProps: (): ComputedSlideGroupProps => ({\n id: `carousel::${carouselId}::item-group`,\n /**\n * The carousel pattern was originally designed for a single slide.\n * When there is more than one slide, the aria-live region is set to off to avoid announcing the whole list of slides.\n * This is not ideal but we keep it for backwards compatibility.\n *\n * @see https://www.w3.org/WAI/ARIA/apg/patterns/carousel/#wai-aria-attributes\n */\n 'aria-live': slidesPerPage > 1 ? 'off' : 'polite',\n 'data-scope': DATA_SCOPE,\n 'data-part': 'item-group',\n 'data-orientation': 'horizontal',\n dir: DIRECTION,\n tabIndex: 0,\n style: {\n display: 'grid',\n gap: 'var(--slide-spacing)',\n scrollSnapType: `x ${snapType}`,\n gridAutoFlow: 'column',\n scrollbarWidth: 'none',\n gridAutoColumns: 'var(--slide-item-size)',\n overflowX: 'auto',\n },\n ref: carouselRef,\n }),\n\n getSlideProps: ({ index }): ComputedSlideProps => {\n const isStopPoint = isSnapPoint(index, {\n container: carouselRef.current,\n slidesPerMove,\n slidesPerPage,\n })\n\n return {\n id: `carousel::${carouselId}::item:${index}`,\n role: 'group',\n 'aria-roledescription': 'slide',\n 'data-scope': DATA_SCOPE,\n 'data-part': 'item',\n 'data-index': index,\n 'data-orientation': 'horizontal',\n dir: DIRECTION,\n style: {\n ...(isStopPoint && {\n scrollSnapAlign: 'start',\n scrollSnapStop: snapStop,\n }),\n },\n }\n },\n\n getIndicatorGroupProps: (): ComputedIndicatorGroupProps => ({\n role: 'radiogroup',\n id: `carousel::${carouselId}::indicator-group`,\n 'data-scope': DATA_SCOPE,\n 'data-part': 'indicator-group',\n 'data-orientation': 'horizontal',\n dir: DIRECTION,\n }),\n\n getIndicatorProps: ({ index }): ComputedIndicatorProps => {\n const dotState = computeDotState({\n dotIndex: index,\n pageState,\n totalPages: pageSnapPoints.length,\n maxDots,\n })\n\n return {\n role: 'radio',\n id: `carousel::${carouselId}::indicator:${index}`,\n 'aria-checked': index === pageState,\n 'data-scope': DATA_SCOPE,\n 'data-part': 'indicator',\n 'data-orientation': 'horizontal',\n 'data-index': index,\n 'data-state': dotState,\n tabIndex: index === pageState ? 0 : -1,\n onClick: () => {\n scrollTo(index, scrollBehavior)\n },\n onKeyDown: (event: KeyboardEvent) => {\n const focusActiveIndicator = (page: number) => {\n pageIndicatorsRefs.current[page]?.focus()\n }\n\n if (event.key === 'ArrowRight' && canScrollNext) {\n scrollNext(focusActiveIndicator)\n } else if (event.key === 'ArrowLeft' && canScrollPrev) {\n scrollPrev(focusActiveIndicator)\n }\n },\n }\n },\n }\n\n return contextValue\n}\n","import { cx } from 'class-variance-authority'\nimport { ComponentProps, createContext, ReactNode, useContext } from 'react'\n\nimport { CarouselAPI, UseCarouselProps } from './types'\nimport { useCarousel } from './useCarousel'\n\ninterface Props extends UseCarouselProps, ComponentProps<'div'> {\n children?: ReactNode\n className?: string\n}\n\nconst CarouselContext = createContext<CarouselAPI | null>(null)\n\nexport const Carousel = ({\n className,\n snapType = 'mandatory',\n snapStop = 'always',\n scrollBehavior = 'smooth',\n slidesPerMove = 'auto',\n pagePickerInset = false,\n slidesPerPage = 1,\n loop = false,\n children,\n gap = 16,\n defaultPage,\n page,\n onPageChange,\n maxDots = 5,\n ...props\n}: Props) => {\n const carouselApi = useCarousel({\n defaultPage,\n slidesPerPage,\n slidesPerMove,\n loop,\n gap,\n scrollBehavior,\n snapStop,\n snapType,\n page,\n pagePickerInset,\n onPageChange,\n maxDots,\n })\n\n return (\n <CarouselContext.Provider\n value={{\n ...carouselApi,\n scrollBehavior,\n }}\n >\n <div\n data-spark-component=\"carousel\"\n className={cx('gap-lg relative box-border flex flex-col', className)}\n {...carouselApi.getRootProps()}\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n )\n}\n\nCarousel.displayName = 'Carousel'\n\nexport const useCarouselContext = () => {\n const context = useContext(CarouselContext)\n\n if (!context) {\n throw Error('useCarouselContext must be used within a Carousel provider')\n }\n\n return context\n}\n","import { cx } from 'class-variance-authority'\nimport { HTMLAttributes, ReactNode } from 'react'\n\nimport { useCarouselContext } from './Carousel'\n\ninterface ControlsProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode\n}\n\nexport const CarouselControls = ({ children, className, ...props }: ControlsProps) => {\n const ctx = useCarouselContext()\n\n return (\n <div\n data-spark-component=\"carousel-controls\"\n className={cx(\n 'default:px-lg pointer-events-none absolute inset-0 flex flex-row items-center justify-between',\n className\n )}\n {...ctx.getControlProps()}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nCarouselControls.displayName = 'Carousel.Controls'\n","import { ArrowVerticalRight } from '@spark-ui/icons/ArrowVerticalRight'\n\nimport { Icon } from '../icon'\nimport { IconButton, IconButtonProps } from '../icon-button'\nimport { useCarouselContext } from './Carousel'\n\nexport const CarouselNextButton = ({\n 'aria-label': ariaLabel,\n ...buttonProps\n}: IconButtonProps) => {\n const ctx = useCarouselContext()\n\n return (\n <IconButton\n data-spark-component=\"carousel-next-button\"\n {...ctx.getNextTriggerProps()}\n intent=\"surface\"\n design=\"filled\"\n className=\"pointer-events-auto cursor-pointer shadow-sm disabled:invisible\"\n aria-label={ariaLabel}\n {...buttonProps}\n >\n <Icon>\n <ArrowVerticalRight />\n </Icon>\n </IconButton>\n )\n}\n\nCarouselNextButton.displayName = 'Carousel.NextButton'\n","import { cx } from 'class-variance-authority'\nimport { ReactNode, useEffect, useRef } from 'react'\n\nimport { useCarouselContext } from './Carousel'\n\ninterface Props {\n children?: ReactNode\n 'aria-label': string\n index: number\n className?: string\n unstyled?: boolean\n intent?: 'basic' | 'surface'\n}\n\nexport const CarouselPageIndicator = ({\n children,\n unstyled = false,\n index,\n 'aria-label': ariaLabel,\n className,\n intent = 'basic',\n}: Props) => {\n const ctx = useCarouselContext()\n\n const ref = useRef<HTMLButtonElement | null>(null)\n\n useEffect(() => {\n if (ctx.pageIndicatorsRefs.current) {\n ctx.pageIndicatorsRefs.current[index] = ref.current\n }\n })\n\n const indicatorProps = ctx.getIndicatorProps({ index })\n\n return (\n <button\n data-spark-component=\"carousel-page-indicator\"\n ref={ref}\n key={index}\n {...indicatorProps}\n aria-label={ariaLabel}\n className={cx(\n {\n [cx(\n 'border-outline group relative flex justify-center border-0 hover:cursor-pointer',\n 'm-sm rounded-sm transition-all duration-[200ms] ease-linear',\n 'w-sz-8 h-sz-8',\n 'data-[state=active]:w-sz-32 data-[state=active]:h-sz-8',\n 'data-[state=edge]:w-sz-4 data-[state=edge]:h-sz-4',\n 'data-[state=hidden]:m-0 data-[state=hidden]:size-0',\n intent === 'surface'\n ? 'data-[state=active]:bg-surface bg-surface/dim-2'\n : 'data-[state=active]:bg-basic bg-on-surface/dim-2'\n )]: !unstyled,\n // [dotsStyles]: !unstyled,\n },\n className\n )}\n >\n {children}\n </button>\n )\n}\n\nCarouselPageIndicator.displayName = 'Carousel.PageIndicator'\n","import { cx } from 'class-variance-authority'\nimport { ReactNode } from 'react'\n\nimport { useCarouselContext } from './Carousel'\nimport { CarouselAPI } from './types'\n\ninterface RenderProps extends CarouselAPI {\n pages: number[]\n}\n\ninterface Props {\n children: (renderProps: RenderProps) => ReactNode\n className?: string\n}\n\nexport const CarouselPagePicker = ({ children, className }: Props) => {\n const ctx = useCarouselContext()\n\n return (\n <>\n <div\n data-spark-component=\"carousel-page-picker\"\n {...ctx.getIndicatorGroupProps()}\n className={cx(\n 'flex-wrap items-center justify-center',\n 'default:min-h-sz-16 flex',\n ctx.pagePickerInset && 'bottom-sz-12 absolute inset-x-0',\n className\n )}\n >\n {ctx.pageSnapPoints.length <= 1\n ? null\n : children({\n ...ctx,\n pages: Array.from({ length: ctx.pageSnapPoints.length }, (_, i) => i),\n })}\n </div>\n </>\n )\n}\n\nCarouselPagePicker.displayName = 'Carousel.PagePicker'\n","import { ArrowVerticalLeft } from '@spark-ui/icons/ArrowVerticalLeft'\n\nimport { Icon } from '../icon'\nimport { IconButton, IconButtonProps } from '../icon-button'\nimport { useCarouselContext } from './Carousel'\n\nexport const CarouselPrevButton = ({\n 'aria-label': ariaLabel,\n ...buttonProps\n}: IconButtonProps) => {\n const ctx = useCarouselContext()\n\n return (\n <IconButton\n data-spark-component=\"carousel-prev-button\"\n {...ctx.getPrevTriggerProps()}\n intent=\"surface\"\n design=\"filled\"\n className=\"pointer-events-auto cursor-pointer shadow-sm disabled:invisible\"\n aria-label={ariaLabel}\n {...buttonProps}\n >\n <Icon>\n <ArrowVerticalLeft />\n </Icon>\n </IconButton>\n )\n}\n\nCarouselPrevButton.displayName = 'Carousel.PrevButton'\n","import { RefObject, useEffect, useState } from 'react'\n\nimport { useCarouselContext } from './Carousel'\n\n/**\n * Hook to track slide visibility using the centralized IntersectionObserver.\n * This optimizes performance by using a single observer per carousel instead of one per slide.\n */\nexport function useIsVisible(\n elementRef: RefObject<HTMLElement | null>,\n _parentRef: RefObject<HTMLElement | null>\n) {\n const [isVisible, setIsVisible] = useState(true)\n const ctx = useCarouselContext()\n\n useEffect(() => {\n const el = elementRef.current\n if (!el) return\n\n // Extract stable functions from context to avoid unnecessary re-renders\n const { registerSlide, unregisterSlide } = ctx\n\n // Register the slide with the centralized observer\n registerSlide(el, setIsVisible)\n\n // Cleanup: unregister when the component unmounts\n return () => {\n unregisterSlide(el)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [elementRef]) // Only depend on elementRef, registerSlide/unregisterSlide are stable callbacks\n\n return isVisible\n}\n","import { cx } from 'class-variance-authority'\nimport { ComponentProps, ReactNode, useRef } from 'react'\n\nimport { useCarouselContext } from './Carousel'\nimport { useIsVisible } from './useIsVisible'\n\nexport interface CarouselSlideProps extends ComponentProps<'div'> {\n isSnapPoint?: boolean\n children?: ReactNode\n index?: number\n totalSlides?: number\n className?: string\n}\n\nexport const CarouselSlide = ({\n children,\n index = 0,\n totalSlides,\n className = '',\n ...props\n}: CarouselSlideProps) => {\n const itemRef = useRef<HTMLDivElement>(null)\n const ctx = useCarouselContext()\n\n const isVisible = useIsVisible(itemRef, ctx.ref)\n\n return (\n <div\n data-spark-component=\"carousel-slide\"\n ref={itemRef}\n {...ctx.getSlideProps({ index, totalSlides: totalSlides as number })}\n className={cx('default:bg-surface relative overflow-hidden', className)}\n aria-hidden={!isVisible}\n inert={!isVisible}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nCarouselSlide.displayName = 'Carousel.Slide'\n","import { cx } from 'class-variance-authority'\nimport { Children, cloneElement, ComponentProps, isValidElement, ReactNode } from 'react'\n\nimport { useCarouselContext } from './Carousel'\nimport { CarouselSlideProps } from './CarouselSlide'\n\ninterface Props extends ComponentProps<'div'> {\n children?: ReactNode\n className?: string\n}\n\nexport const CarouselSlides = ({ children, className = '' }: Props) => {\n const ctx = useCarouselContext()\n\n const childrenElements = Children.toArray(children)\n\n return (\n <div\n data-spark-component=\"carousel-slides\"\n {...ctx.getSlidesContainerProps()}\n className={cx(\n 'focus-visible:u-outline relative w-full',\n '[-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden',\n className\n )}\n >\n {childrenElements.map((child, index) =>\n isValidElement<CarouselSlideProps>(child)\n ? cloneElement(child, {\n index,\n totalSlides: childrenElements.length,\n })\n : child\n )}\n </div>\n )\n}\n\nCarouselSlides.displayName = 'Carousel.Slides'\n","import { ReactNode } from 'react'\n\ninterface Props {\n children: ReactNode\n}\n\nexport const CarouselViewport = ({ children }: Props) => {\n return <div className=\"relative flex items-center justify-around p-0\">{children}</div>\n}\n\nCarouselViewport.displayName = 'Carousel.Viewport'\n","import { Carousel as Root } from './Carousel'\nimport { CarouselControls as Controls } from './CarouselControls'\nimport { CarouselNextButton as NextButton } from './CarouselNextButton'\nimport { CarouselPageIndicator as PageIndicator } from './CarouselPageIndicator'\nimport { CarouselPagePicker as PagePicker } from './CarouselPagePicker'\nimport { CarouselPrevButton as PrevButton } from './CarouselPrevButton'\nimport { CarouselSlide as Slide } from './CarouselSlide'\nimport { CarouselSlides as Slides } from './CarouselSlides'\nimport { CarouselViewport as Viewport } from './CarouselViewport'\n\nexport const Carousel: typeof Root & {\n Controls: typeof Controls\n NextButton: typeof NextButton\n PrevButton: typeof PrevButton\n Slide: typeof Slide\n Slides: typeof Slides\n Viewport: typeof Viewport\n PagePicker: typeof PagePicker\n PageIndicator: typeof PageIndicator\n} = Object.assign(Root, {\n Controls,\n NextButton,\n PrevButton,\n Slide,\n Slides,\n Viewport,\n PagePicker,\n PageIndicator,\n})\n\nCarousel.displayName = 'Carousel'\n"],"names":["useCarouselVisibility","carouselRef","slideVisibilityMap","useRef","visibilityObserverRef","visibilityCallbacksRef","createObserverCallback","useCallback","entries","entry","isVisible","element","callback","getOrCreateObserver","container","observer","useEffect","visibilityMap","callbacksMap","registerSlide","initialVisible","unregisterSlide","isSlideVisible","useEvent","ref","useLayoutEffect","args","useIsMounted","isMounted","useScrollEnd","scrollRef","scrollLeft","safariTimeout","supportsScrollend","handleScrollEnd","handleSafariScroll","useResizeObserver","getSnapIndices","totalSlides","slidesPerMove","slidesPerPage","slideBy","snapPoints","lastSnapIndex","getSlideElements","isSnapPoint","slideIndex","getSnapPositions","_","index","slide","computeDotState","dotIndex","pageState","totalPages","maxDots","startIndex","endIndex","useSnapPoints","initialSnapPoints","pageSnapPoints","setPageSnapPoints","useState","stableSnapPoints","useMemo","newSnapPoints","DATA_SCOPE","DIRECTION","useCarousel","defaultPage","gap","snapType","snapStop","scrollPadding","scrollBehavior","loop","pagePickerInset","controlledPage","onPageChangeProp","carouselId","useId","setPageState","pageIndicatorsRefs","onPageChange","canScrollPrev","canScrollNext","handlePageChange","page","scrollTo","behavior","scrollPrev","cb","targetPage","scrollNext","snapPositions","syncPageStateWithScrollPosition","distances","pagePosition","pageInViewport","isStopPoint","dotState","event","focusActiveIndicator","CarouselContext","createContext","Carousel","className","children","props","carouselApi","jsx","cx","useCarouselContext","context","useContext","CarouselControls","ctx","CarouselNextButton","ariaLabel","buttonProps","IconButton","Icon","ArrowVerticalRight","CarouselPageIndicator","unstyled","intent","indicatorProps","CarouselPagePicker","Fragment","i","CarouselPrevButton","ArrowVerticalLeft","useIsVisible","elementRef","_parentRef","setIsVisible","el","CarouselSlide","itemRef","CarouselSlides","childrenElements","Children","child","isValidElement","cloneElement","CarouselViewport","Root","Controls","NextButton","PrevButton","Slide","Slides","Viewport","PagePicker","PageIndicator"],"mappings":"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"}