@zentauri-ui/zentauri-components 1.4.5 → 1.4.7

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 (712) hide show
  1. package/README.md +196 -88
  2. package/cli/index.mjs +45 -26
  3. package/cli/registry.json +11 -2
  4. package/cli/rewrite-imports.mjs +8 -3
  5. package/dist/charts/area/Area.d.ts +6 -0
  6. package/dist/charts/area/Area.d.ts.map +1 -0
  7. package/dist/charts/area/index.d.ts +4 -0
  8. package/dist/charts/area/index.d.ts.map +1 -0
  9. package/dist/charts/area.js +119 -0
  10. package/dist/charts/area.js.map +1 -0
  11. package/dist/charts/area.mjs +106 -0
  12. package/dist/charts/area.mjs.map +1 -0
  13. package/dist/charts/bar/Bar.d.ts +6 -0
  14. package/dist/charts/bar/Bar.d.ts.map +1 -0
  15. package/dist/charts/bar/index.d.ts +4 -0
  16. package/dist/charts/bar/index.d.ts.map +1 -0
  17. package/dist/charts/bar.js +110 -0
  18. package/dist/charts/bar.js.map +1 -0
  19. package/dist/charts/bar.mjs +97 -0
  20. package/dist/charts/bar.mjs.map +1 -0
  21. package/dist/charts/bubble/Bubble.d.ts +6 -0
  22. package/dist/charts/bubble/Bubble.d.ts.map +1 -0
  23. package/dist/charts/bubble/index.d.ts +4 -0
  24. package/dist/charts/bubble/index.d.ts.map +1 -0
  25. package/dist/charts/bubble.js +122 -0
  26. package/dist/charts/bubble.js.map +1 -0
  27. package/dist/charts/bubble.mjs +109 -0
  28. package/dist/charts/bubble.mjs.map +1 -0
  29. package/dist/charts/line/Line.d.ts +6 -0
  30. package/dist/charts/line/Line.d.ts.map +1 -0
  31. package/dist/charts/line/index.d.ts +4 -0
  32. package/dist/charts/line/index.d.ts.map +1 -0
  33. package/dist/charts/line.js +113 -0
  34. package/dist/charts/line.js.map +1 -0
  35. package/dist/charts/line.mjs +100 -0
  36. package/dist/charts/line.mjs.map +1 -0
  37. package/dist/charts/shared/chart-frame.d.ts +32 -0
  38. package/dist/charts/shared/chart-frame.d.ts.map +1 -0
  39. package/dist/charts/shared/colors.d.ts +43 -0
  40. package/dist/charts/shared/colors.d.ts.map +1 -0
  41. package/dist/charts/shared/types.d.ts +43 -0
  42. package/dist/charts/shared/types.d.ts.map +1 -0
  43. package/dist/charts/shared/variants.d.ts +93 -0
  44. package/dist/charts/shared/variants.d.ts.map +1 -0
  45. package/dist/{chunk-IXDJ3IPG.mjs → chunk-2BAMNRAL.mjs} +40 -32
  46. package/dist/chunk-2BAMNRAL.mjs.map +1 -0
  47. package/dist/{chunk-JE3PD5ZA.js → chunk-2VUMVDR3.js} +8 -8
  48. package/dist/{chunk-JE3PD5ZA.js.map → chunk-2VUMVDR3.js.map} +1 -1
  49. package/dist/{chunk-DFEZH7TC.mjs → chunk-4D54YOL6.mjs} +2 -2
  50. package/dist/{chunk-DFEZH7TC.mjs.map → chunk-4D54YOL6.mjs.map} +1 -1
  51. package/dist/{chunk-BORK3BJO.mjs → chunk-5TV7EL3H.mjs} +19 -19
  52. package/dist/chunk-5TV7EL3H.mjs.map +1 -0
  53. package/dist/{chunk-BSWYZTYK.js → chunk-7DCFVPWN.js} +2 -2
  54. package/dist/chunk-7DCFVPWN.js.map +1 -0
  55. package/dist/{chunk-5QB2KNZQ.js → chunk-7TLKLMBM.js} +11 -9
  56. package/dist/chunk-7TLKLMBM.js.map +1 -0
  57. package/dist/{chunk-2P3UU2J3.mjs → chunk-A6KMZ5ZS.mjs} +12 -12
  58. package/dist/chunk-A6KMZ5ZS.mjs.map +1 -0
  59. package/dist/{chunk-U4YQCAXW.js → chunk-AD2LA3XN.js} +18 -18
  60. package/dist/chunk-AD2LA3XN.js.map +1 -0
  61. package/dist/{chunk-XLAFQ24R.js → chunk-AUGLZ3AN.js} +49 -41
  62. package/dist/chunk-AUGLZ3AN.js.map +1 -0
  63. package/dist/{chunk-OJ67PZ6N.js → chunk-BCZIYH53.js} +8 -8
  64. package/dist/{chunk-OJ67PZ6N.js.map → chunk-BCZIYH53.js.map} +1 -1
  65. package/dist/{chunk-UBFKTC2P.mjs → chunk-C5L465FW.mjs} +12 -12
  66. package/dist/chunk-C5L465FW.mjs.map +1 -0
  67. package/dist/chunk-CIN5JDN4.js +174 -0
  68. package/dist/chunk-CIN5JDN4.js.map +1 -0
  69. package/dist/{chunk-3OR47XMY.js → chunk-E4FZY7O2.js} +52 -33
  70. package/dist/chunk-E4FZY7O2.js.map +1 -0
  71. package/dist/{chunk-LVUPECBT.mjs → chunk-FQBMIZH2.mjs} +12 -12
  72. package/dist/chunk-FQBMIZH2.mjs.map +1 -0
  73. package/dist/{chunk-RDSPHBHK.mjs → chunk-G3LEYBRV.mjs} +50 -7
  74. package/dist/chunk-G3LEYBRV.mjs.map +1 -0
  75. package/dist/chunk-GBWGVNDA.js +160 -0
  76. package/dist/chunk-GBWGVNDA.js.map +1 -0
  77. package/dist/{chunk-XWM2S6VV.mjs → chunk-I6GR234Z.mjs} +22 -20
  78. package/dist/chunk-I6GR234Z.mjs.map +1 -0
  79. package/dist/{chunk-UXGHUBNJ.mjs → chunk-INMNX3HQ.mjs} +13 -13
  80. package/dist/{chunk-UXGHUBNJ.mjs.map → chunk-INMNX3HQ.mjs.map} +1 -1
  81. package/dist/chunk-IQZROQNJ.mjs +165 -0
  82. package/dist/chunk-IQZROQNJ.mjs.map +1 -0
  83. package/dist/{chunk-PGH27VTL.mjs → chunk-JBAUEGYD.mjs} +40 -32
  84. package/dist/chunk-JBAUEGYD.mjs.map +1 -0
  85. package/dist/{chunk-WZKGRU3U.js → chunk-JUDMPOCI.js} +103 -38
  86. package/dist/chunk-JUDMPOCI.js.map +1 -0
  87. package/dist/chunk-K6YI4FJO.mjs +158 -0
  88. package/dist/chunk-K6YI4FJO.mjs.map +1 -0
  89. package/dist/{chunk-WP7GYBRI.js → chunk-KC5LEZ6J.js} +2 -2
  90. package/dist/chunk-KC5LEZ6J.js.map +1 -0
  91. package/dist/{chunk-BVXTOEBI.mjs → chunk-LN77JJTY.mjs} +45 -26
  92. package/dist/chunk-LN77JJTY.mjs.map +1 -0
  93. package/dist/{chunk-E3DZNJAD.js → chunk-MCOQHXRW.js} +23 -21
  94. package/dist/chunk-MCOQHXRW.js.map +1 -0
  95. package/dist/{chunk-FLILFCQE.mjs → chunk-MTLLJFUI.mjs} +7 -8
  96. package/dist/chunk-MTLLJFUI.mjs.map +1 -0
  97. package/dist/{chunk-6I7X5BF2.js → chunk-N2OAI2HN.js} +18 -18
  98. package/dist/chunk-N2OAI2HN.js.map +1 -0
  99. package/dist/{chunk-BITDSQMR.js → chunk-OB4KJZK2.js} +19 -19
  100. package/dist/chunk-OB4KJZK2.js.map +1 -0
  101. package/dist/{chunk-PCK6LX3K.js → chunk-OLEMP2HL.js} +19 -19
  102. package/dist/{chunk-PCK6LX3K.js.map → chunk-OLEMP2HL.js.map} +1 -1
  103. package/dist/{chunk-2PQEXQVR.js → chunk-PWL5WD34.js} +76 -27
  104. package/dist/chunk-PWL5WD34.js.map +1 -0
  105. package/dist/{chunk-N4NO3SYL.js → chunk-Q5B44QW7.js} +48 -40
  106. package/dist/chunk-Q5B44QW7.js.map +1 -0
  107. package/dist/{chunk-FT2LMA66.mjs → chunk-QADZK5R7.mjs} +2 -2
  108. package/dist/chunk-QADZK5R7.mjs.map +1 -0
  109. package/dist/{chunk-WDCIZHXY.mjs → chunk-QZTEFGZF.mjs} +6 -4
  110. package/dist/chunk-QZTEFGZF.mjs.map +1 -0
  111. package/dist/{chunk-UOFTZKMM.js → chunk-S7WKFNPT.js} +18 -18
  112. package/dist/chunk-S7WKFNPT.js.map +1 -0
  113. package/dist/{chunk-XIXF7UVM.mjs → chunk-TINHLHCN.mjs} +12 -12
  114. package/dist/chunk-TINHLHCN.mjs.map +1 -0
  115. package/dist/{chunk-7HL3A4YF.mjs → chunk-TJUNN2PT.mjs} +73 -24
  116. package/dist/chunk-TJUNN2PT.mjs.map +1 -0
  117. package/dist/{chunk-4B7KGBQB.js → chunk-UWA23DUC.js} +12 -13
  118. package/dist/chunk-UWA23DUC.js.map +1 -0
  119. package/dist/{chunk-CY5BQKRZ.mjs → chunk-VXDEPZKH.mjs} +2 -2
  120. package/dist/chunk-VXDEPZKH.mjs.map +1 -0
  121. package/dist/{chunk-C2FCPQTO.js → chunk-Y745GQR2.js} +16 -16
  122. package/dist/chunk-Y745GQR2.js.map +1 -0
  123. package/dist/{chunk-TZ2JVWTZ.mjs → chunk-YNBJAFI2.mjs} +3 -3
  124. package/dist/{chunk-TZ2JVWTZ.mjs.map → chunk-YNBJAFI2.mjs.map} +1 -1
  125. package/dist/{chunk-P5HUBXUX.js → chunk-YTRGRHEB.js} +55 -12
  126. package/dist/chunk-YTRGRHEB.js.map +1 -0
  127. package/dist/{chunk-YNCD6TKE.mjs → chunk-ZBBFOMSJ.mjs} +103 -38
  128. package/dist/chunk-ZBBFOMSJ.mjs.map +1 -0
  129. package/dist/{chunk-UOZYPWDZ.js → chunk-ZS5756ZC.js} +2 -2
  130. package/dist/{chunk-UOZYPWDZ.js.map → chunk-ZS5756ZC.js.map} +1 -1
  131. package/dist/{chunk-W6PRMYUC.mjs → chunk-ZYZJ74XB.mjs} +3 -3
  132. package/dist/{chunk-W6PRMYUC.mjs.map → chunk-ZYZJ74XB.mjs.map} +1 -1
  133. package/dist/hooks/index.d.ts +2 -2
  134. package/dist/hooks/index.d.ts.map +1 -1
  135. package/dist/hooks/useClickOutside/useClickOutside.d.ts.map +1 -1
  136. package/dist/hooks/useClickOutside.js +2 -2
  137. package/dist/hooks/useClickOutside.mjs +1 -1
  138. package/dist/hooks/useClipboard/useClipboard.d.ts.map +1 -1
  139. package/dist/hooks/useClipboard.js.map +1 -1
  140. package/dist/hooks/useClipboard.mjs.map +1 -1
  141. package/dist/hooks/useFocusManagement/useFocusManagement.d.ts +5 -14
  142. package/dist/hooks/useFocusManagement/useFocusManagement.d.ts.map +1 -1
  143. package/dist/hooks/useFocusManagement.js +2 -2
  144. package/dist/hooks/useFocusManagement.mjs +1 -1
  145. package/dist/hooks/useLocalStorage/index.d.ts +1 -1
  146. package/dist/hooks/useLocalStorage/index.d.ts.map +1 -1
  147. package/dist/hooks/useLocalStorage.js +1 -3
  148. package/dist/hooks/useLocalStorage.js.map +1 -1
  149. package/dist/hooks/useLocalStorage.mjs +1 -3
  150. package/dist/hooks/useLocalStorage.mjs.map +1 -1
  151. package/dist/hooks/useMediaQuery/useMediaQuery.d.ts.map +1 -1
  152. package/dist/hooks/useMediaQuery.js +2 -2
  153. package/dist/hooks/useMediaQuery.mjs +1 -1
  154. package/dist/hooks/usePagination.js +4 -4
  155. package/dist/hooks/usePagination.mjs +2 -2
  156. package/dist/hooks/usePrefersColorScheme.js +2 -2
  157. package/dist/hooks/usePrefersColorScheme.mjs +1 -1
  158. package/dist/hooks/usePrefersReducedMotion.js +2 -2
  159. package/dist/hooks/usePrefersReducedMotion.mjs +1 -1
  160. package/dist/hooks/useResizeObserver/index.d.ts +1 -1
  161. package/dist/hooks/useResizeObserver/index.d.ts.map +1 -1
  162. package/dist/hooks/useSessionStorage/useSessionStorage.d.ts.map +1 -1
  163. package/dist/hooks/useSessionStorage.js.map +1 -1
  164. package/dist/hooks/useSessionStorage.mjs.map +1 -1
  165. package/dist/hooks/useThrottledCallback/useThrottledCallback.d.ts.map +1 -1
  166. package/dist/hooks/useThrottledCallback.js.map +1 -1
  167. package/dist/hooks/useThrottledCallback.mjs.map +1 -1
  168. package/dist/hooks/useWindowSize/useWindowSize.d.ts.map +1 -1
  169. package/dist/hooks/useWindowSize.js +4 -1
  170. package/dist/hooks/useWindowSize.js.map +1 -1
  171. package/dist/hooks/useWindowSize.mjs +4 -1
  172. package/dist/hooks/useWindowSize.mjs.map +1 -1
  173. package/dist/hooks/utils.js +5 -5
  174. package/dist/hooks/utils.mjs +1 -1
  175. package/dist/lib/utils.d.ts.map +1 -1
  176. package/dist/ui/accordion/accordion.d.ts.map +1 -1
  177. package/dist/ui/accordion/animated/accordion-content-animated.d.ts.map +1 -1
  178. package/dist/ui/accordion/animated/index.d.ts +1 -1
  179. package/dist/ui/accordion/animated/index.d.ts.map +1 -1
  180. package/dist/ui/accordion/animated/types.d.ts.map +1 -1
  181. package/dist/ui/accordion/animated.js +8 -11
  182. package/dist/ui/accordion/animated.js.map +1 -1
  183. package/dist/ui/accordion/animated.mjs +4 -7
  184. package/dist/ui/accordion/animated.mjs.map +1 -1
  185. package/dist/ui/accordion/variants.d.ts +2 -2
  186. package/dist/ui/accordion.js +10 -10
  187. package/dist/ui/accordion.js.map +1 -1
  188. package/dist/ui/accordion.mjs +3 -3
  189. package/dist/ui/accordion.mjs.map +1 -1
  190. package/dist/ui/alert/alert-base.d.ts.map +1 -1
  191. package/dist/ui/alert/alert.d.ts.map +1 -1
  192. package/dist/ui/alert/animated/index.d.ts.map +1 -1
  193. package/dist/ui/alert/animated.js +3 -3
  194. package/dist/ui/alert/animated.mjs +2 -2
  195. package/dist/ui/alert/types.d.ts.map +1 -1
  196. package/dist/ui/alert/variants.d.ts +1 -1
  197. package/dist/ui/alert.js +11 -11
  198. package/dist/ui/alert.js.map +1 -1
  199. package/dist/ui/alert.mjs +3 -3
  200. package/dist/ui/alert.mjs.map +1 -1
  201. package/dist/ui/avatar/animated/index.d.ts +1 -1
  202. package/dist/ui/avatar/animated/index.d.ts.map +1 -1
  203. package/dist/ui/avatar/animated.js +6 -6
  204. package/dist/ui/avatar/animated.mjs +3 -3
  205. package/dist/ui/avatar/avatar-base.d.ts.map +1 -1
  206. package/dist/ui/avatar/avatar.d.ts.map +1 -1
  207. package/dist/ui/avatar/variants.d.ts +1 -1
  208. package/dist/ui/avatar/variants.d.ts.map +1 -1
  209. package/dist/ui/avatar.js +10 -10
  210. package/dist/ui/avatar.js.map +1 -1
  211. package/dist/ui/avatar.mjs +3 -3
  212. package/dist/ui/avatar.mjs.map +1 -1
  213. package/dist/ui/badge/animated/index.d.ts +1 -1
  214. package/dist/ui/badge/animated/index.d.ts.map +1 -1
  215. package/dist/ui/badge/animated/types.d.ts.map +1 -1
  216. package/dist/ui/badge/animated.js +3 -3
  217. package/dist/ui/badge/animated.mjs +2 -2
  218. package/dist/ui/badge/badge-base.d.ts +1 -1
  219. package/dist/ui/badge/badge-base.d.ts.map +1 -1
  220. package/dist/ui/badge/types.d.ts +1 -0
  221. package/dist/ui/badge/types.d.ts.map +1 -1
  222. package/dist/ui/badge/variants.d.ts +18 -18
  223. package/dist/ui/badge/variants.d.ts.map +1 -1
  224. package/dist/ui/badge.js +5 -5
  225. package/dist/ui/badge.mjs +3 -3
  226. package/dist/ui/breadcrumb/breadcrumb.d.ts.map +1 -1
  227. package/dist/ui/breadcrumb/types.d.ts.map +1 -1
  228. package/dist/ui/breadcrumb/variants.d.ts +1 -1
  229. package/dist/ui/breadcrumb/variants.d.ts.map +1 -1
  230. package/dist/ui/breadcrumb.js +47 -43
  231. package/dist/ui/breadcrumb.js.map +1 -1
  232. package/dist/ui/breadcrumb.mjs +43 -39
  233. package/dist/ui/breadcrumb.mjs.map +1 -1
  234. package/dist/ui/buttons/animated/index.d.ts +1 -1
  235. package/dist/ui/buttons/animated/index.d.ts.map +1 -1
  236. package/dist/ui/buttons/animated/types.d.ts.map +1 -1
  237. package/dist/ui/buttons/animated.js +4 -4
  238. package/dist/ui/buttons/animated.mjs +2 -2
  239. package/dist/ui/buttons/types.d.ts.map +1 -1
  240. package/dist/ui/buttons/variants.d.ts +2 -2
  241. package/dist/ui/buttons.js +5 -5
  242. package/dist/ui/buttons.mjs +3 -3
  243. package/dist/ui/card/animated.js +8 -8
  244. package/dist/ui/card/animated.mjs +3 -3
  245. package/dist/ui/card/card-base.d.ts.map +1 -1
  246. package/dist/ui/card/card.d.ts.map +1 -1
  247. package/dist/ui/card/index.d.ts +2 -2
  248. package/dist/ui/card/index.d.ts.map +1 -1
  249. package/dist/ui/card/variants.d.ts +1 -1
  250. package/dist/ui/card.js +13 -13
  251. package/dist/ui/card.js.map +1 -1
  252. package/dist/ui/card.mjs +3 -3
  253. package/dist/ui/card.mjs.map +1 -1
  254. package/dist/ui/divider/animated/index.d.ts +1 -1
  255. package/dist/ui/divider/animated/index.d.ts.map +1 -1
  256. package/dist/ui/divider/animated/types.d.ts.map +1 -1
  257. package/dist/ui/divider/animated.js +3 -3
  258. package/dist/ui/divider/animated.mjs +2 -2
  259. package/dist/ui/divider/divider-base.d.ts.map +1 -1
  260. package/dist/ui/divider/variants.d.ts +2 -2
  261. package/dist/ui/divider.js +7 -7
  262. package/dist/ui/divider.mjs +3 -3
  263. package/dist/ui/drawer/animated/drawer-content-animated.d.ts.map +1 -1
  264. package/dist/ui/drawer/animated/index.d.ts +1 -1
  265. package/dist/ui/drawer/animated/index.d.ts.map +1 -1
  266. package/dist/ui/drawer/animated.js +19 -20
  267. package/dist/ui/drawer/animated.js.map +1 -1
  268. package/dist/ui/drawer/animated.mjs +9 -10
  269. package/dist/ui/drawer/animated.mjs.map +1 -1
  270. package/dist/ui/drawer/drawer-base.d.ts +1 -1
  271. package/dist/ui/drawer/drawer-base.d.ts.map +1 -1
  272. package/dist/ui/drawer/types.d.ts +1 -0
  273. package/dist/ui/drawer/types.d.ts.map +1 -1
  274. package/dist/ui/drawer/variants.d.ts +3 -3
  275. package/dist/ui/drawer.js +13 -13
  276. package/dist/ui/drawer.mjs +3 -3
  277. package/dist/ui/dropdown/dropdown.d.ts +1 -1
  278. package/dist/ui/dropdown/dropdown.d.ts.map +1 -1
  279. package/dist/ui/dropdown/types.d.ts +1 -0
  280. package/dist/ui/dropdown/types.d.ts.map +1 -1
  281. package/dist/ui/dropdown/variants.d.ts +4 -4
  282. package/dist/ui/dropdown.js +49 -31
  283. package/dist/ui/dropdown.js.map +1 -1
  284. package/dist/ui/dropdown.mjs +46 -28
  285. package/dist/ui/dropdown.mjs.map +1 -1
  286. package/dist/ui/empty-state/animated/empty-state-animated.d.ts.map +1 -1
  287. package/dist/ui/empty-state/animated/index.d.ts +2 -2
  288. package/dist/ui/empty-state/animated/index.d.ts.map +1 -1
  289. package/dist/ui/empty-state/animated.js +3 -3
  290. package/dist/ui/empty-state/animated.js.map +1 -1
  291. package/dist/ui/empty-state/animated.mjs +2 -2
  292. package/dist/ui/empty-state/animated.mjs.map +1 -1
  293. package/dist/ui/empty-state/empty-state-base.d.ts.map +1 -1
  294. package/dist/ui/empty-state/index.d.ts +1 -1
  295. package/dist/ui/empty-state/index.d.ts.map +1 -1
  296. package/dist/ui/empty-state/types.d.ts +1 -0
  297. package/dist/ui/empty-state/types.d.ts.map +1 -1
  298. package/dist/ui/empty-state.js +11 -11
  299. package/dist/ui/empty-state.mjs +3 -3
  300. package/dist/ui/file-upload/file-upload.d.ts.map +1 -1
  301. package/dist/ui/file-upload/variants.d.ts +1 -1
  302. package/dist/ui/file-upload/variants.d.ts.map +1 -1
  303. package/dist/ui/file-upload.js +4 -6
  304. package/dist/ui/file-upload.js.map +1 -1
  305. package/dist/ui/file-upload.mjs +2 -4
  306. package/dist/ui/file-upload.mjs.map +1 -1
  307. package/dist/ui/inputs/animated/index.d.ts +1 -1
  308. package/dist/ui/inputs/animated/index.d.ts.map +1 -1
  309. package/dist/ui/inputs/animated.js +3 -3
  310. package/dist/ui/inputs/animated.mjs +1 -1
  311. package/dist/ui/inputs/input-base.d.ts.map +1 -1
  312. package/dist/ui/inputs/types.d.ts +3 -1
  313. package/dist/ui/inputs/types.d.ts.map +1 -1
  314. package/dist/ui/inputs/variants.d.ts +2 -2
  315. package/dist/ui/inputs.js +49 -5
  316. package/dist/ui/inputs.js.map +1 -1
  317. package/dist/ui/inputs.mjs +47 -3
  318. package/dist/ui/inputs.mjs.map +1 -1
  319. package/dist/ui/modal/animated/index.d.ts +1 -1
  320. package/dist/ui/modal/animated/index.d.ts.map +1 -1
  321. package/dist/ui/modal/animated/modal-content-animated.d.ts.map +1 -1
  322. package/dist/ui/modal/animated.js +12 -13
  323. package/dist/ui/modal/animated.js.map +1 -1
  324. package/dist/ui/modal/animated.mjs +8 -9
  325. package/dist/ui/modal/animated.mjs.map +1 -1
  326. package/dist/ui/modal/index.d.ts +1 -1
  327. package/dist/ui/modal/index.d.ts.map +1 -1
  328. package/dist/ui/modal/modal-base.d.ts +4 -2
  329. package/dist/ui/modal/modal-base.d.ts.map +1 -1
  330. package/dist/ui/modal/types.d.ts.map +1 -1
  331. package/dist/ui/modal/variants.d.ts +2 -2
  332. package/dist/ui/modal.js +14 -14
  333. package/dist/ui/modal.js.map +1 -1
  334. package/dist/ui/modal.mjs +4 -4
  335. package/dist/ui/modal.mjs.map +1 -1
  336. package/dist/ui/pagination/pagination.d.ts +2 -2
  337. package/dist/ui/pagination/variants.d.ts +3 -3
  338. package/dist/ui/pagination.js +25 -25
  339. package/dist/ui/pagination.js.map +1 -1
  340. package/dist/ui/pagination.mjs +15 -15
  341. package/dist/ui/pagination.mjs.map +1 -1
  342. package/dist/ui/progress/animated/progress-animated.d.ts.map +1 -1
  343. package/dist/ui/progress/animated.js +52 -14
  344. package/dist/ui/progress/animated.js.map +1 -1
  345. package/dist/ui/progress/animated.mjs +45 -7
  346. package/dist/ui/progress/animated.mjs.map +1 -1
  347. package/dist/ui/progress/index.d.ts +2 -2
  348. package/dist/ui/progress/index.d.ts.map +1 -1
  349. package/dist/ui/progress/progress-base.d.ts.map +1 -1
  350. package/dist/ui/progress/progress.d.ts.map +1 -1
  351. package/dist/ui/progress/types.d.ts +3 -0
  352. package/dist/ui/progress/types.d.ts.map +1 -1
  353. package/dist/ui/progress/variants.d.ts +1 -1
  354. package/dist/ui/progress.js +10 -15
  355. package/dist/ui/progress.js.map +1 -1
  356. package/dist/ui/progress.mjs +4 -9
  357. package/dist/ui/progress.mjs.map +1 -1
  358. package/dist/ui/search/search-bar.d.ts +1 -1
  359. package/dist/ui/search/search-bar.d.ts.map +1 -1
  360. package/dist/ui/search/search-suggestion-list.d.ts.map +1 -1
  361. package/dist/ui/search/search-suggestion-utils.d.ts.map +1 -1
  362. package/dist/ui/search.js +25 -13
  363. package/dist/ui/search.js.map +1 -1
  364. package/dist/ui/search.mjs +21 -9
  365. package/dist/ui/search.mjs.map +1 -1
  366. package/dist/ui/select/select.d.ts +1 -1
  367. package/dist/ui/select/select.d.ts.map +1 -1
  368. package/dist/ui/select/types.d.ts +1 -0
  369. package/dist/ui/select/types.d.ts.map +1 -1
  370. package/dist/ui/select/variants.d.ts +4 -4
  371. package/dist/ui/select/variants.d.ts.map +1 -1
  372. package/dist/ui/select.js +145 -63
  373. package/dist/ui/select.js.map +1 -1
  374. package/dist/ui/select.mjs +141 -59
  375. package/dist/ui/select.mjs.map +1 -1
  376. package/dist/ui/skeleton/animated/skeleton-animated.d.ts.map +1 -1
  377. package/dist/ui/skeleton/animated/types.d.ts.map +1 -1
  378. package/dist/ui/skeleton/animated.js +34 -10
  379. package/dist/ui/skeleton/animated.js.map +1 -1
  380. package/dist/ui/skeleton/animated.mjs +29 -5
  381. package/dist/ui/skeleton/animated.mjs.map +1 -1
  382. package/dist/ui/skeleton/variants.d.ts +3 -3
  383. package/dist/ui/skeleton.js +10 -10
  384. package/dist/ui/skeleton.mjs +2 -2
  385. package/dist/ui/slider/slider.d.ts.map +1 -1
  386. package/dist/ui/slider/types.d.ts +8 -2
  387. package/dist/ui/slider/types.d.ts.map +1 -1
  388. package/dist/ui/slider/variants.d.ts +1 -1
  389. package/dist/ui/slider.js +53 -17
  390. package/dist/ui/slider.js.map +1 -1
  391. package/dist/ui/slider.mjs +45 -9
  392. package/dist/ui/slider.mjs.map +1 -1
  393. package/dist/ui/spinner/animated/spinner.d.ts.map +1 -1
  394. package/dist/ui/spinner/animated/variants.d.ts +1 -1
  395. package/dist/ui/spinner/animated.js +68 -56
  396. package/dist/ui/spinner/animated.js.map +1 -1
  397. package/dist/ui/spinner/animated.mjs +64 -52
  398. package/dist/ui/spinner/animated.mjs.map +1 -1
  399. package/dist/ui/stepper/stepper.d.ts +2 -7
  400. package/dist/ui/stepper/stepper.d.ts.map +1 -1
  401. package/dist/ui/stepper/types.d.ts +3 -3
  402. package/dist/ui/stepper/types.d.ts.map +1 -1
  403. package/dist/ui/stepper/variants.d.ts +1 -1
  404. package/dist/ui/stepper/variants.d.ts.map +1 -1
  405. package/dist/ui/stepper.js +12 -13
  406. package/dist/ui/stepper.js.map +1 -1
  407. package/dist/ui/stepper.mjs +9 -10
  408. package/dist/ui/stepper.mjs.map +1 -1
  409. package/dist/ui/table/animated/index.d.ts +2 -2
  410. package/dist/ui/table/animated/index.d.ts.map +1 -1
  411. package/dist/ui/table/animated.js +9 -9
  412. package/dist/ui/table/animated.mjs +3 -3
  413. package/dist/ui/table/table-base.d.ts +1 -1
  414. package/dist/ui/table/table-base.d.ts.map +1 -1
  415. package/dist/ui/table/types.d.ts +5 -1
  416. package/dist/ui/table/types.d.ts.map +1 -1
  417. package/dist/ui/table/variants.d.ts +3 -3
  418. package/dist/ui/table.js +15 -15
  419. package/dist/ui/table.mjs +2 -2
  420. package/dist/ui/tabs/animated/animations.d.ts.map +1 -1
  421. package/dist/ui/tabs/animated/index.d.ts +1 -1
  422. package/dist/ui/tabs/animated/index.d.ts.map +1 -1
  423. package/dist/ui/tabs/animated/types.d.ts.map +1 -1
  424. package/dist/ui/tabs/animated.js +4 -4
  425. package/dist/ui/tabs/animated.js.map +1 -1
  426. package/dist/ui/tabs/animated.mjs +2 -2
  427. package/dist/ui/tabs/animated.mjs.map +1 -1
  428. package/dist/ui/tabs/index.d.ts +1 -1
  429. package/dist/ui/tabs/index.d.ts.map +1 -1
  430. package/dist/ui/tabs/tabs-base.d.ts.map +1 -1
  431. package/dist/ui/tabs/tabs.d.ts +1 -1
  432. package/dist/ui/tabs/tabs.d.ts.map +1 -1
  433. package/dist/ui/tabs/types.d.ts +2 -1
  434. package/dist/ui/tabs/types.d.ts.map +1 -1
  435. package/dist/ui/tabs/variants.d.ts +1 -1
  436. package/dist/ui/tabs.js +10 -10
  437. package/dist/ui/tabs.mjs +2 -2
  438. package/dist/ui/toast/animated/toast-animated.d.ts.map +1 -1
  439. package/dist/ui/toast/animated.js +12 -10
  440. package/dist/ui/toast/animated.js.map +1 -1
  441. package/dist/ui/toast/animated.mjs +5 -3
  442. package/dist/ui/toast/animated.mjs.map +1 -1
  443. package/dist/ui/toast/types.d.ts.map +1 -1
  444. package/dist/ui/toast/variants.d.ts +1 -1
  445. package/dist/ui/toast.js +13 -13
  446. package/dist/ui/toast.mjs +2 -2
  447. package/dist/ui/toggle/animated/index.d.ts +2 -2
  448. package/dist/ui/toggle/animated/index.d.ts.map +1 -1
  449. package/dist/ui/toggle/animated/types.d.ts.map +1 -1
  450. package/dist/ui/toggle/animated.js +3 -3
  451. package/dist/ui/toggle/animated.mjs +1 -1
  452. package/dist/ui/toggle/index.d.ts +1 -1
  453. package/dist/ui/toggle/index.d.ts.map +1 -1
  454. package/dist/ui/toggle/toggle-base.d.ts.map +1 -1
  455. package/dist/ui/toggle/variants.d.ts +1 -1
  456. package/dist/ui/toggle.js +31 -6
  457. package/dist/ui/toggle.js.map +1 -1
  458. package/dist/ui/toggle.mjs +30 -5
  459. package/dist/ui/toggle.mjs.map +1 -1
  460. package/dist/ui/tooltip/animated/animations.d.ts.map +1 -1
  461. package/dist/ui/tooltip/animated/types.d.ts.map +1 -1
  462. package/dist/ui/tooltip/animated.js +5 -5
  463. package/dist/ui/tooltip/animated.js.map +1 -1
  464. package/dist/ui/tooltip/animated.mjs +2 -2
  465. package/dist/ui/tooltip/animated.mjs.map +1 -1
  466. package/dist/ui/tooltip/tooltip-base.d.ts.map +1 -1
  467. package/dist/ui/tooltip/types.d.ts +1 -0
  468. package/dist/ui/tooltip/types.d.ts.map +1 -1
  469. package/dist/ui/tooltip/variants.d.ts +1 -1
  470. package/dist/ui/tooltip/variants.d.ts.map +1 -1
  471. package/dist/ui/tooltip.js +8 -8
  472. package/dist/ui/tooltip.mjs +2 -2
  473. package/dist/ui/typography/blockquote-base.d.ts +6 -0
  474. package/dist/ui/typography/blockquote-base.d.ts.map +1 -0
  475. package/dist/ui/typography/blockquote.d.ts +6 -0
  476. package/dist/ui/typography/blockquote.d.ts.map +1 -0
  477. package/dist/ui/typography/code-block-base.d.ts +6 -0
  478. package/dist/ui/typography/code-block-base.d.ts.map +1 -0
  479. package/dist/ui/typography/code-block.d.ts +6 -0
  480. package/dist/ui/typography/code-block.d.ts.map +1 -0
  481. package/dist/ui/typography/heading-base.d.ts +6 -0
  482. package/dist/ui/typography/heading-base.d.ts.map +1 -0
  483. package/dist/ui/typography/heading.d.ts +6 -0
  484. package/dist/ui/typography/heading.d.ts.map +1 -0
  485. package/dist/ui/typography/index.d.ts +9 -0
  486. package/dist/ui/typography/index.d.ts.map +1 -0
  487. package/dist/ui/typography/inline-code-base.d.ts +6 -0
  488. package/dist/ui/typography/inline-code-base.d.ts.map +1 -0
  489. package/dist/ui/typography/inline-code.d.ts +6 -0
  490. package/dist/ui/typography/inline-code.d.ts.map +1 -0
  491. package/dist/ui/typography/list-base.d.ts +10 -0
  492. package/dist/ui/typography/list-base.d.ts.map +1 -0
  493. package/dist/ui/typography/list.d.ts +12 -0
  494. package/dist/ui/typography/list.d.ts.map +1 -0
  495. package/dist/ui/typography/text-base.d.ts +6 -0
  496. package/dist/ui/typography/text-base.d.ts.map +1 -0
  497. package/dist/ui/typography/text.d.ts +6 -0
  498. package/dist/ui/typography/text.d.ts.map +1 -0
  499. package/dist/ui/typography/types.d.ts +56 -0
  500. package/dist/ui/typography/types.d.ts.map +1 -0
  501. package/dist/ui/typography/variants.d.ts +16 -0
  502. package/dist/ui/typography/variants.d.ts.map +1 -0
  503. package/dist/ui/typography.js +312 -0
  504. package/dist/ui/typography.js.map +1 -0
  505. package/dist/ui/typography.mjs +299 -0
  506. package/dist/ui/typography.mjs.map +1 -0
  507. package/package.json +32 -12
  508. package/src/charts/area/Area.tsx +103 -0
  509. package/src/charts/area/index.ts +9 -0
  510. package/src/charts/bar/Bar.tsx +94 -0
  511. package/src/charts/bar/index.ts +9 -0
  512. package/src/charts/bubble/Bubble.tsx +113 -0
  513. package/src/charts/bubble/index.ts +9 -0
  514. package/src/charts/line/Line.tsx +97 -0
  515. package/src/charts/line/index.ts +9 -0
  516. package/src/charts/shared/chart-frame.tsx +107 -0
  517. package/src/charts/shared/colors.ts +31 -0
  518. package/src/charts/shared/types.ts +60 -0
  519. package/src/charts/shared/variants.ts +87 -0
  520. package/src/hooks/index.ts +8 -2
  521. package/src/hooks/useClickOutside/useClickOutside.ts +1 -4
  522. package/src/hooks/useClipboard/useClipboard.test.ts +3 -1
  523. package/src/hooks/useClipboard/useClipboard.ts +1 -2
  524. package/src/hooks/useDisclosure/useDisclosure.test.ts +1 -2
  525. package/src/hooks/useDocumentTitle/useDocumentTitle.test.ts +1 -3
  526. package/src/hooks/useFocusManagement/useFocusManagement.test.tsx +8 -0
  527. package/src/hooks/useFocusManagement/useFocusManagement.ts +162 -34
  528. package/src/hooks/useInView/useInView.test.ts +6 -1
  529. package/src/hooks/useLocalStorage/index.ts +1 -4
  530. package/src/hooks/useLocalStorage/useLocalStorage.test.ts +8 -20
  531. package/src/hooks/useLocalStorage/useLocalStorage.ts +4 -4
  532. package/src/hooks/useMediaQuery/useMediaQuery.ts +1 -4
  533. package/src/hooks/usePrefersReducedMotion/usePrefersReducedMotion.test.ts +3 -1
  534. package/src/hooks/useResizeObserver/index.ts +1 -4
  535. package/src/hooks/useSessionStorage/useSessionStorage.test.ts +2 -6
  536. package/src/hooks/useSessionStorage/useSessionStorage.ts +4 -2
  537. package/src/hooks/useThrottledCallback/useThrottledCallback.ts +4 -3
  538. package/src/hooks/useWindowSize/useWindowSize.ts +4 -1
  539. package/src/lib/utils.ts +3 -3
  540. package/src/ui/accordion/accordion.tsx +6 -1
  541. package/src/ui/accordion/animated/accordion-content-animated.tsx +1 -4
  542. package/src/ui/accordion/animated/index.ts +4 -1
  543. package/src/ui/accordion/animated/types.ts +6 -2
  544. package/src/ui/accordion/variants.ts +9 -9
  545. package/src/ui/alert/alert-base.tsx +6 -1
  546. package/src/ui/alert/alert.tsx +2 -2
  547. package/src/ui/alert/animated/index.ts +2 -2
  548. package/src/ui/alert/animated/types.ts +1 -1
  549. package/src/ui/alert/types.ts +1 -3
  550. package/src/ui/alert/variants.ts +9 -9
  551. package/src/ui/avatar/animated/index.ts +6 -2
  552. package/src/ui/avatar/avatar-base.tsx +2 -7
  553. package/src/ui/avatar/avatar.tsx +6 -1
  554. package/src/ui/avatar/variants.ts +23 -11
  555. package/src/ui/badge/animated/index.ts +6 -2
  556. package/src/ui/badge/animated/types.ts +1 -2
  557. package/src/ui/badge/badge-base.tsx +4 -1
  558. package/src/ui/badge/types.ts +1 -0
  559. package/src/ui/badge/variants.ts +16 -18
  560. package/src/ui/breadcrumb/breadcrumb.tsx +10 -2
  561. package/src/ui/breadcrumb/types.ts +20 -9
  562. package/src/ui/breadcrumb/variants.ts +34 -38
  563. package/src/ui/buttons/animated/index.ts +7 -1
  564. package/src/ui/buttons/animated/types.ts +0 -1
  565. package/src/ui/buttons/button.test.tsx +2 -2
  566. package/src/ui/buttons/types.ts +4 -5
  567. package/src/ui/buttons/variants.ts +17 -17
  568. package/src/ui/card/animated/types.ts +0 -1
  569. package/src/ui/card/card-base.tsx +1 -6
  570. package/src/ui/card/card.test.tsx +7 -3
  571. package/src/ui/card/card.tsx +1 -3
  572. package/src/ui/card/index.ts +7 -3
  573. package/src/ui/card/types.ts +1 -1
  574. package/src/ui/card/variants.ts +9 -9
  575. package/src/ui/divider/animated/index.ts +5 -1
  576. package/src/ui/divider/animated/types.ts +4 -2
  577. package/src/ui/divider/divider-base.tsx +0 -1
  578. package/src/ui/drawer/animated/drawer-content-animated.tsx +6 -11
  579. package/src/ui/drawer/animated/index.ts +6 -1
  580. package/src/ui/drawer/drawer-base.tsx +16 -8
  581. package/src/ui/drawer/types.ts +12 -3
  582. package/src/ui/drawer/variants.ts +18 -18
  583. package/src/ui/dropdown/dropdown.test.tsx +1 -3
  584. package/src/ui/dropdown/dropdown.tsx +30 -5
  585. package/src/ui/dropdown/types.ts +1 -0
  586. package/src/ui/dropdown/variants.ts +20 -20
  587. package/src/ui/empty-state/animated/empty-state-animated.tsx +2 -4
  588. package/src/ui/empty-state/animated/index.ts +8 -5
  589. package/src/ui/empty-state/empty-state-base.tsx +14 -2
  590. package/src/ui/empty-state/index.ts +7 -1
  591. package/src/ui/empty-state/types.ts +1 -0
  592. package/src/ui/file-upload/file-upload.tsx +3 -9
  593. package/src/ui/file-upload/variants.ts +18 -9
  594. package/src/ui/inputs/animated/index.ts +7 -1
  595. package/src/ui/inputs/input-base.tsx +60 -6
  596. package/src/ui/inputs/input.test.tsx +5 -1
  597. package/src/ui/inputs/types.ts +7 -2
  598. package/src/ui/modal/animated/index.ts +6 -1
  599. package/src/ui/modal/animated/modal-content-animated.tsx +4 -5
  600. package/src/ui/modal/index.ts +1 -1
  601. package/src/ui/modal/modal-base.tsx +19 -10
  602. package/src/ui/modal/modal.test.tsx +44 -4
  603. package/src/ui/modal/modal.tsx +1 -1
  604. package/src/ui/modal/types.ts +10 -2
  605. package/src/ui/modal/variants.ts +18 -18
  606. package/src/ui/pagination/pagination.tsx +2 -2
  607. package/src/ui/pagination/variants.ts +9 -9
  608. package/src/ui/progress/animated/progress-animated.tsx +43 -5
  609. package/src/ui/progress/animated/types.ts +1 -1
  610. package/src/ui/progress/index.ts +12 -2
  611. package/src/ui/progress/progress-base.tsx +61 -5
  612. package/src/ui/progress/progress.test.tsx +1 -3
  613. package/src/ui/progress/progress.tsx +2 -6
  614. package/src/ui/progress/types.ts +3 -0
  615. package/src/ui/search/filter-search-suggestions.test.ts +46 -12
  616. package/src/ui/search/filter-search-suggestions.ts +3 -3
  617. package/src/ui/search/search-bar.tsx +23 -23
  618. package/src/ui/search/search-suggestion-list.tsx +28 -11
  619. package/src/ui/search/search-suggestion-utils.ts +4 -1
  620. package/src/ui/select/select.tsx +96 -6
  621. package/src/ui/select/types.ts +1 -0
  622. package/src/ui/select/variants.ts +71 -68
  623. package/src/ui/skeleton/animated/skeleton-animated.tsx +25 -4
  624. package/src/ui/skeleton/animated/types.ts +0 -1
  625. package/src/ui/skeleton/skeleton-base.tsx +3 -3
  626. package/src/ui/skeleton/variants.ts +9 -9
  627. package/src/ui/slider/slider.test.tsx +23 -9
  628. package/src/ui/slider/slider.tsx +45 -4
  629. package/src/ui/slider/types.ts +9 -3
  630. package/src/ui/slider/variants.ts +1 -1
  631. package/src/ui/spinner/animated/spinner.tsx +6 -3
  632. package/src/ui/stepper/stepper.test.tsx +5 -6
  633. package/src/ui/stepper/stepper.tsx +12 -16
  634. package/src/ui/stepper/types.ts +11 -5
  635. package/src/ui/stepper/variants.ts +30 -15
  636. package/src/ui/table/animated/index.ts +6 -4
  637. package/src/ui/table/table-base.tsx +32 -11
  638. package/src/ui/table/types.ts +8 -1
  639. package/src/ui/tabs/animated/animations.ts +5 -1
  640. package/src/ui/tabs/animated/index.ts +7 -1
  641. package/src/ui/tabs/animated/types.ts +3 -3
  642. package/src/ui/tabs/index.ts +8 -1
  643. package/src/ui/tabs/tabs-base.tsx +71 -10
  644. package/src/ui/tabs/tabs.tsx +8 -1
  645. package/src/ui/tabs/types.ts +2 -1
  646. package/src/ui/tabs/variants.ts +10 -10
  647. package/src/ui/toast/animated/toast-animated.tsx +3 -1
  648. package/src/ui/toast/animated/types.ts +1 -1
  649. package/src/ui/toast/toast-base.tsx +1 -1
  650. package/src/ui/toast/types.ts +3 -1
  651. package/src/ui/toast/variants.ts +9 -9
  652. package/src/ui/toggle/animated/index.ts +7 -4
  653. package/src/ui/toggle/animated/types.ts +4 -2
  654. package/src/ui/toggle/index.ts +5 -1
  655. package/src/ui/toggle/toggle-base.tsx +36 -4
  656. package/src/ui/tooltip/animated/animations.ts +0 -1
  657. package/src/ui/tooltip/animated/types.ts +0 -1
  658. package/src/ui/tooltip/tooltip-base.tsx +118 -22
  659. package/src/ui/tooltip/types.ts +1 -0
  660. package/src/ui/tooltip/variants.ts +11 -13
  661. package/src/ui/typography/blockquote-base.tsx +32 -0
  662. package/src/ui/typography/blockquote.tsx +8 -0
  663. package/src/ui/typography/code-block-base.tsx +32 -0
  664. package/src/ui/typography/code-block.tsx +8 -0
  665. package/src/ui/typography/heading-base.tsx +56 -0
  666. package/src/ui/typography/heading.tsx +8 -0
  667. package/src/ui/typography/index.ts +28 -0
  668. package/src/ui/typography/inline-code-base.tsx +27 -0
  669. package/src/ui/typography/inline-code.tsx +8 -0
  670. package/src/ui/typography/list-base.tsx +80 -0
  671. package/src/ui/typography/list.tsx +15 -0
  672. package/src/ui/typography/text-base.tsx +43 -0
  673. package/src/ui/typography/text.tsx +8 -0
  674. package/src/ui/typography/types.ts +77 -0
  675. package/src/ui/typography/typography.test.tsx +82 -0
  676. package/src/ui/typography/variants.ts +80 -0
  677. package/dist/chunk-2P3UU2J3.mjs.map +0 -1
  678. package/dist/chunk-2PQEXQVR.js.map +0 -1
  679. package/dist/chunk-3OR47XMY.js.map +0 -1
  680. package/dist/chunk-4B7KGBQB.js.map +0 -1
  681. package/dist/chunk-5QB2KNZQ.js.map +0 -1
  682. package/dist/chunk-6I7X5BF2.js.map +0 -1
  683. package/dist/chunk-7HL3A4YF.mjs.map +0 -1
  684. package/dist/chunk-BITDSQMR.js.map +0 -1
  685. package/dist/chunk-BORK3BJO.mjs.map +0 -1
  686. package/dist/chunk-BSWYZTYK.js.map +0 -1
  687. package/dist/chunk-BVXTOEBI.mjs.map +0 -1
  688. package/dist/chunk-C2FCPQTO.js.map +0 -1
  689. package/dist/chunk-CY5BQKRZ.mjs.map +0 -1
  690. package/dist/chunk-E3DZNJAD.js.map +0 -1
  691. package/dist/chunk-FLILFCQE.mjs.map +0 -1
  692. package/dist/chunk-FT2LMA66.mjs.map +0 -1
  693. package/dist/chunk-IXDJ3IPG.mjs.map +0 -1
  694. package/dist/chunk-LVUPECBT.mjs.map +0 -1
  695. package/dist/chunk-N4NO3SYL.js.map +0 -1
  696. package/dist/chunk-P5HUBXUX.js.map +0 -1
  697. package/dist/chunk-PGH27VTL.mjs.map +0 -1
  698. package/dist/chunk-RDSPHBHK.mjs.map +0 -1
  699. package/dist/chunk-U4YQCAXW.js.map +0 -1
  700. package/dist/chunk-UBFKTC2P.mjs.map +0 -1
  701. package/dist/chunk-UOFTZKMM.js.map +0 -1
  702. package/dist/chunk-WDCIZHXY.mjs.map +0 -1
  703. package/dist/chunk-WL5I7RVS.mjs +0 -54
  704. package/dist/chunk-WL5I7RVS.mjs.map +0 -1
  705. package/dist/chunk-WP7GYBRI.js.map +0 -1
  706. package/dist/chunk-WZKGRU3U.js.map +0 -1
  707. package/dist/chunk-XIXF7UVM.mjs.map +0 -1
  708. package/dist/chunk-XLAFQ24R.js.map +0 -1
  709. package/dist/chunk-XWM2S6VV.mjs.map +0 -1
  710. package/dist/chunk-YNCD6TKE.mjs.map +0 -1
  711. package/dist/chunk-YPLVTUYL.js +0 -56
  712. package/dist/chunk-YPLVTUYL.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { cn } from '../chunk-DFEZH7TC.mjs';
2
+ import { cn } from '../chunk-4D54YOL6.mjs';
3
3
  import { createContext, useRef, useState, useCallback, useMemo, useContext } from 'react';
4
4
  import { cva } from 'class-variance-authority';
5
5
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -32,7 +32,7 @@ var sliderTrackVariants = cva(
32
32
  }
33
33
  );
34
34
  var sliderRangeVariants = cva(
35
- "absolute h-full rounded-full bg-gradient-to-r from-violet-500 to-indigo-400",
35
+ "absolute h-full rounded-full bg-linear-to-r from-violet-500 to-indigo-400",
36
36
  {
37
37
  variants: {
38
38
  appearance: {
@@ -148,9 +148,22 @@ function Slider({
148
148
  disabled,
149
149
  size: size ?? "md",
150
150
  appearance: appearance ?? "default",
151
- trackRef
151
+ trackRef,
152
+ "aria-label": ariaLabel,
153
+ "aria-labelledby": ariaLabelledBy
152
154
  }),
153
- [appearance, disabled, max, min, setValue, size, step, value]
155
+ [
156
+ appearance,
157
+ ariaLabel,
158
+ ariaLabelledBy,
159
+ disabled,
160
+ max,
161
+ min,
162
+ setValue,
163
+ size,
164
+ step,
165
+ value
166
+ ]
154
167
  );
155
168
  return /* @__PURE__ */ jsx(SliderContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx(
156
169
  "div",
@@ -215,7 +228,18 @@ function SliderThumb({
215
228
  ref: refProp,
216
229
  ...rest
217
230
  }) {
218
- const { min, max, value, step, setValue, disabled, size, trackRef } = useSliderContext("SliderThumb");
231
+ const {
232
+ min,
233
+ max,
234
+ value,
235
+ step,
236
+ setValue,
237
+ disabled,
238
+ size,
239
+ trackRef,
240
+ "aria-label": sliderAriaLabel,
241
+ "aria-labelledby": sliderAriaLabelledBy
242
+ } = useSliderContext("SliderThumb");
219
243
  const pct = max === min ? 0 : (value - min) / (max - min) * 100;
220
244
  const onPointerDown = useCallback(
221
245
  (event) => {
@@ -278,6 +302,8 @@ function SliderThumb({
278
302
  role: "slider",
279
303
  tabIndex: disabled ? -1 : 0,
280
304
  "data-slot": "slider-thumb",
305
+ "aria-label": sliderAriaLabel,
306
+ "aria-labelledby": sliderAriaLabelledBy,
281
307
  "aria-valuemin": min,
282
308
  "aria-valuemax": max,
283
309
  "aria-valuenow": value,
@@ -349,6 +375,9 @@ function RangeSlider({
349
375
  const loPct = (lo - min) / (max - min) * 100;
350
376
  const hiPct = (hi - min) / (max - min) * 100;
351
377
  const resolvedSize = size ?? "md";
378
+ const lowThumbAriaLabel = ariaLabel !== void 0 ? `${ariaLabel}, minimum` : void 0;
379
+ const highThumbAriaLabel = ariaLabel !== void 0 ? `${ariaLabel}, maximum` : void 0;
380
+ const thumbAriaLabelledBy = ariaLabel === void 0 ? ariaLabelledBy : void 0;
352
381
  return /* @__PURE__ */ jsx(
353
382
  "div",
354
383
  {
@@ -357,7 +386,6 @@ function RangeSlider({
357
386
  role: "group",
358
387
  "aria-label": ariaLabel,
359
388
  "aria-labelledby": ariaLabelledBy,
360
- "aria-valuetext": `${lo} \u2013 ${hi}`,
361
389
  className: cn(sliderRootVariants({ size: resolvedSize }), className),
362
390
  ...rest,
363
391
  children: /* @__PURE__ */ jsxs(
@@ -390,7 +418,9 @@ function RangeSlider({
390
418
  positionPct: loPct,
391
419
  trackRef,
392
420
  onMoveClientX: (x) => moveThumb(0, x),
393
- onNudge: (delta) => setPair([lo + delta, hi])
421
+ onNudge: (delta) => setPair([lo + delta, hi]),
422
+ "aria-label": lowThumbAriaLabel,
423
+ "aria-labelledby": thumbAriaLabelledBy
394
424
  }
395
425
  ),
396
426
  /* @__PURE__ */ jsx(
@@ -405,7 +435,9 @@ function RangeSlider({
405
435
  positionPct: hiPct,
406
436
  trackRef,
407
437
  onMoveClientX: (x) => moveThumb(1, x),
408
- onNudge: (delta) => setPair([lo, hi + delta])
438
+ onNudge: (delta) => setPair([lo, hi + delta]),
439
+ "aria-label": highThumbAriaLabel,
440
+ "aria-labelledby": thumbAriaLabelledBy
409
441
  }
410
442
  )
411
443
  ]
@@ -425,7 +457,9 @@ function RangeThumb({
425
457
  positionPct,
426
458
  trackRef,
427
459
  onMoveClientX,
428
- onNudge
460
+ onNudge,
461
+ "aria-label": thumbAriaLabel,
462
+ "aria-labelledby": thumbAriaLabelledBy
429
463
  }) {
430
464
  const onPointerDown = useCallback(
431
465
  (event) => {
@@ -487,6 +521,8 @@ function RangeThumb({
487
521
  role: "slider",
488
522
  tabIndex: disabled ? -1 : 0,
489
523
  "data-slot": "range-slider-thumb",
524
+ "aria-label": thumbAriaLabel,
525
+ "aria-labelledby": thumbAriaLabelledBy,
490
526
  "aria-valuemin": min,
491
527
  "aria-valuemax": max,
492
528
  "aria-valuenow": value,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ui/slider/variants.ts","../../src/ui/slider/slider.tsx"],"names":["lo","hi"],"mappings":"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","file":"slider.mjs","sourcesContent":["import { cva } from \"class-variance-authority\";\n\nexport const sliderRootVariants = cva(\"w-full select-none touch-none\", {\n variants: {\n size: {\n sm: \"py-2\",\n md: \"py-2.5\",\n lg: \"py-3\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n\nexport const sliderTrackVariants = cva(\n \"relative h-2 w-full shrink-0 overflow-hidden rounded-full bg-white/10\",\n {\n variants: {\n size: {\n sm: \"h-1.5\",\n md: \"h-2\",\n lg: \"h-2.5\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n },\n);\n\nexport const sliderRangeVariants = cva(\n \"absolute h-full rounded-full bg-gradient-to-r from-violet-500 to-indigo-400\",\n {\n variants: {\n appearance: {\n default: \"from-violet-500 to-indigo-400\",\n sky: \"from-sky-500 to-indigo-400\",\n rose: \"from-rose-500 to-indigo-400\",\n purple: \"from-purple-500 to-indigo-400\",\n pink: \"from-pink-500 to-indigo-400\",\n orange: \"from-orange-500 to-indigo-400\",\n yellow: \"from-yellow-500 to-indigo-400\",\n teal: \"from-teal-500 to-indigo-400\",\n indigo: \"from-indigo-500 to-indigo-400\",\n emerald: \"from-emerald-500 to-teal-400\",\n amber: \"from-amber-500 to-orange-400\",\n gray: \"from-gray-500 to-indigo-400\",\n violet: \"from-violet-500 to-indigo-400\",\n \"gradient-blue\": \"from-blue-500 to-indigo-400\",\n \"gradient-green\": \"from-green-500 to-indigo-400\",\n \"gradient-red\": \"from-red-500 to-indigo-400\",\n \"gradient-yellow\": \"from-yellow-500 to-indigo-400\",\n \"gradient-purple\": \"from-purple-500 to-indigo-400\",\n \"gradient-teal\": \"from-teal-500 to-indigo-400\",\n \"gradient-indigo\": \"from-indigo-500 to-indigo-400\",\n \"gradient-pink\": \"from-pink-500 to-indigo-400\",\n \"gradient-orange\": \"from-orange-500 to-indigo-400\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n },\n },\n);\n\nexport const sliderThumbVariants = cva(\n \"block size-4 rounded-full border border-white/20 bg-white shadow-md ring-offset-2 ring-offset-slate-950 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/40 disabled:pointer-events-none disabled:opacity-40\",\n {\n variants: {\n size: {\n sm: \"size-3.5\",\n md: \"size-4\",\n lg: \"size-5\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n },\n);\n","\"use client\";\n\nimport {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n type KeyboardEvent as ReactKeyboardEvent,\n type PointerEvent as ReactPointerEvent,\n type Ref,\n type RefObject,\n} from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport type {\n RangeSliderProps,\n SliderCtx,\n SliderProps,\n SliderRangeProps,\n SliderThumbProps,\n SliderTrackProps,\n} from \"./types\";\nimport {\n sliderRangeVariants,\n sliderRootVariants,\n sliderThumbVariants,\n sliderTrackVariants,\n} from \"./variants\";\n\n/**\n * Restricts a numeric value to the inclusive interval [min, max].\n *\n * Values below `min` become `min`; values above `max` become `max`.\n * This is used after pointer math and keyboard deltas so the slider\n * never reports values outside the configured domain.\n *\n * Examples (min = 0, max = 100):\n * - clamp(120, 0, 100) → 100 (capped at max)\n * - clamp(-10, 0, 100) → 0 (raised to min)\n * - clamp(42, 0, 100) → 42 (unchanged)\n */\nconst clamp = (value: number, min: number, max: number) => {\n return Math.min(max, Math.max(min, value));\n};\n\n/**\n * Maps an arbitrary number to the closest value aligned with `step`\n * relative to `min` (the “anchor” of the step grid).\n *\n * How it works:\n * 1. Measure how far `value` is from `min` in “step units”:\n * (value - min) / step\n * 2. Round to the nearest whole number of steps.\n * 3. Reconstruct: min + (rounded steps) * step\n *\n * Example: min = 0, step = 10, value = 23\n * - steps = round((23 - 0) / 10) = round(2.3) = 2\n * - result = 0 + 2 * 10 = 20\n *\n * Note: This does not enforce [min, max]; pair with `clamp` when needed.\n */\nconst snapToStep = (value: number, min: number, step: number) => {\n const steps = Math.round((value - min) / step);\n return min + steps * step;\n};\n\nconst SliderContext = createContext<SliderCtx | null>(null);\n\n/**\n * Reads slider context; throws a descriptive error if a sub-part is used\n * outside `<Slider>` (helps catch invalid composition early).\n */\nconst useSliderContext = (component: string): SliderCtx => {\n const ctx = useContext(SliderContext);\n if (!ctx) {\n throw new Error(`${component} must be used within <Slider>`);\n }\n return ctx;\n};\n\n/**\n * Converts a horizontal pointer position (viewport X) into a slider value\n * in [min, max], snapped to `step`.\n *\n * Pipeline:\n * 1. Read the track’s bounding box so all math uses the same coordinate\n * space as `clientX` (viewport coordinates from pointer events).\n * 2. Compute how far along the track the pointer sits as a ratio in [0, 1]:\n * (clientX - trackLeft) / trackWidth. If width is 0, ratio is 0 to avoid\n * division by zero.\n * 3. Linearly interpolate that ratio into the value domain:\n * raw = min + ratio * (max - min).\n * 4. Clamp `raw` to [min, max], then snap to the nearest valid step so the\n * result always matches discrete thumb positions.\n *\n * Worked example: track left = 100px, width = 200px, min = 0, max = 100,\n * pointer clientX = 150px\n * - ratio = (150 - 100) / 200 = 0.25\n * - raw = 0 + 0.25 * (100 - 0) = 25\n * - After clamp + snap (e.g. step 1), result stays 25\n */\nconst computeValueFromPointer = (\n clientX: number,\n track: HTMLDivElement,\n min: number,\n max: number,\n step: number,\n) => {\n const rect = track.getBoundingClientRect();\n\n const ratio = rect.width === 0 ? 0 : (clientX - rect.left) / rect.width;\n\n const raw = min + ratio * (max - min);\n\n return snapToStep(clamp(raw, min, max), min, step);\n};\n\n/**\n * Root primitive for a single-value slider. Provides context (bounds, value,\n * disabled state, track ref) to `SliderTrack`, `SliderRange`, and `SliderThumb`.\n */\nexport function Slider({\n className,\n size = \"md\",\n min = 0,\n max = 100,\n step = 1,\n value: valueProp,\n defaultValue,\n onValueChange,\n disabled = false,\n appearance = \"default\",\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n children,\n ref,\n ...rest\n}: SliderProps & { ref?: Ref<HTMLDivElement> }) {\n const trackRef = useRef<HTMLDivElement | null>(null);\n const isControlled = valueProp !== undefined;\n\n /**\n * Mode selection (React’s standard controlled/uncontrolled pattern):\n *\n * - Controlled: `value` is passed from the parent. The parent is the source\n * of truth; local state is not updated on drag. Use `onValueChange` to\n * persist updates upward (e.g. into React state or a form library).\n *\n * - Uncontrolled: `value` is omitted. `defaultValue` (or `min` if absent)\n * seeds internal state; drags and keyboard updates write to that state\n * directly. `onValueChange` is still optional for side effects.\n *\n * Examples:\n * - Controlled: `<Slider value={50} onValueChange={setX} />`\n * - Uncontrolled: `<Slider defaultValue={50} />`\n */\n\n const [uncontrolled, setUncontrolled] = useState(defaultValue ?? min);\n\n const value = isControlled ? (valueProp as number) : uncontrolled;\n\n const setValue = useCallback(\n (next: number) => {\n /**\n * Normalizes a candidate value before committing it:\n * 1. Snap to the nearest step anchored at `min`.\n * 2. Clamp into [min, max] so overshoots from keyboard or programmatic\n * calls cannot escape the domain.\n * 3. If uncontrolled, mirror the result into local state so the thumb\n * and range visuals stay in sync.\n * 4. Always invoke `onValueChange` when provided so parents receive the\n * canonical value (even in controlled mode, after normalization).\n *\n * Example: min = 0, max = 100, step = 10, next = 27\n * → snap to 30 → clamp still 30 → emitted value 30\n */\n\n const clamped = clamp(snapToStep(next, min, step), min, max);\n\n if (!isControlled) {\n setUncontrolled(clamped);\n }\n\n onValueChange?.(clamped);\n },\n [isControlled, max, min, onValueChange, step],\n );\n\n const ctx = useMemo(\n () => ({\n min,\n max,\n step,\n\n /**\n * Context consumers always see a value that is on-step and in-range.\n * If a controlled parent passes an out-of-band number (e.g. stale props\n * or a bug), we still render thumbs and ARIA attributes consistently\n * with the same snap/clamp rules as pointer and keyboard input.\n */\n value: clamp(snapToStep(value, min, step), min, max),\n\n setValue,\n disabled,\n size: size ?? \"md\",\n appearance: appearance ?? \"default\",\n trackRef,\n }),\n [appearance, disabled, max, min, setValue, size, step, value],\n );\n\n return (\n <SliderContext.Provider value={ctx}>\n <div\n ref={ref}\n data-slot=\"slider\"\n role=\"group\"\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n className={cn(sliderRootVariants({ size }), className)}\n {...rest}\n >\n {children}\n </div>\n </SliderContext.Provider>\n );\n}\n\nSlider.displayName = \"Slider\";\n\n/**\n * The interactive rail whose geometry defines how pointer X maps to values.\n * Assigns the DOM node to context `trackRef` so thumbs can measure it.\n */\nexport function SliderTrack({\n className,\n ref: refProp,\n ...rest\n}: SliderTrackProps & { ref?: Ref<HTMLDivElement> }) {\n const { size, trackRef } = useSliderContext(\"SliderTrack\");\n\n return (\n <div\n ref={(node) => {\n trackRef.current = node;\n if (typeof refProp === \"function\") {\n refProp(node);\n } else if (refProp) {\n (refProp as RefObject<HTMLDivElement | null>).current = node;\n }\n }}\n data-slot=\"slider-track\"\n className={cn(sliderTrackVariants({ size }), className)}\n {...rest}\n />\n );\n}\n\nSliderTrack.displayName = \"SliderTrack\";\n\n/** Filled portion from the start of the track up to the current value (width %). */\nexport function SliderRange({\n className,\n ref,\n ...rest\n}: SliderRangeProps & { ref?: Ref<HTMLDivElement> }) {\n const { min, max, value, appearance } = useSliderContext(\"SliderRange\");\n\n /**\n * Percentage along the track (0–100) representing the current value.\n *\n * Formula: ((value - min) / (max - min)) * 100. When min === max the range\n * is degenerate; we treat the percentage as 0 to avoid NaN.\n *\n * For the single-thumb slider, this percentage becomes the **width** of\n * the filled range segment (from the start of the track to the thumb).\n * The thumb itself uses the same mapping in `SliderThumb` for `left`.\n */\n const pct = max === min ? 0 : ((value - min) / (max - min)) * 100;\n\n return (\n <div\n ref={ref}\n data-slot=\"slider-range\"\n className={cn(sliderRangeVariants({ appearance }), className)}\n style={{ width: `${pct}%` }}\n {...rest}\n />\n );\n}\n\nSliderRange.displayName = \"SliderRange\";\n\n/**\n * Draggable thumb with ARIA `role=\"slider\"`. Handles pointer drag (via window\n * listeners) and keyboard increments consistent with `min` / `max` / `step`.\n */\nexport function SliderThumb({\n className,\n ref: refProp,\n ...rest\n}: SliderThumbProps & { ref?: Ref<HTMLDivElement> }) {\n const { min, max, value, step, setValue, disabled, size, trackRef } =\n useSliderContext(\"SliderThumb\");\n /** Horizontal thumb position; same mapping as `SliderRange` width uses. */\n const pct = max === min ? 0 : ((value - min) / (max - min)) * 100;\n\n const onPointerDown = useCallback(\n (event: ReactPointerEvent<HTMLDivElement>) => {\n if (disabled) return;\n\n event.preventDefault();\n\n const track = trackRef.current;\n if (!track) return;\n\n /**\n * Keep receiving pointer events for this pointer id even when the\n * cursor leaves the thumb. Without capture, dragging quickly could\n * “drop” the thumb when the pointer exits the small hit target.\n */\n event.currentTarget.setPointerCapture(event.pointerId);\n\n const move = (e: PointerEvent) => {\n /**\n * On each move, project the pointer X onto the track geometry, then\n * run the same snap/clamp pipeline as a click would. `setValue`\n * deduplicates invalid states for controlled parents.\n */\n setValue(computeValueFromPointer(e.clientX, track, min, max, step));\n };\n\n const up = () => {\n /** Tear down window listeners once the gesture ends (any button). */\n window.removeEventListener(\"pointermove\", move);\n window.removeEventListener(\"pointerup\", up);\n };\n\n window.addEventListener(\"pointermove\", move);\n window.addEventListener(\"pointerup\", up);\n },\n [disabled, max, min, setValue, step, trackRef],\n );\n\n const onKeyDown = useCallback(\n (event: ReactKeyboardEvent<HTMLDivElement>) => {\n if (disabled) return;\n\n /**\n * Page Up / Page Down move by one tenth of the value span (not one\n * tenth of the thumb travel). This scales with custom min/max ranges.\n */\n const big = (max - min) / 10;\n\n let delta = 0;\n\n /**\n * Keyboard model (WAI-ARIA slider conventions, adapted to our step):\n * - Arrow Right / Up: increase by one `step`.\n * - Arrow Left / Down: decrease by one `step`.\n * - Page Up / Down: coarse adjust by `big` (±10% of range).\n * - Home / End: jump to min or max (bypasses incremental delta).\n * Unrecognized keys are ignored without calling `preventDefault`.\n */\n if (event.key === \"ArrowRight\" || event.key === \"ArrowUp\") {\n delta = step;\n } else if (event.key === \"ArrowLeft\" || event.key === \"ArrowDown\") {\n delta = -step;\n } else if (event.key === \"PageUp\") {\n delta = big;\n } else if (event.key === \"PageDown\") {\n delta = -big;\n } else if (event.key === \"Home\") {\n event.preventDefault();\n setValue(min);\n return;\n } else if (event.key === \"End\") {\n event.preventDefault();\n setValue(max);\n return;\n } else {\n return;\n }\n\n event.preventDefault();\n\n /**\n * Apply the accumulated delta on top of the current value; `setValue`\n * performs snap + clamp so the outcome is always valid.\n *\n * Illustration with min = 0, max = 100, step = 10, value = 40:\n * - ArrowRight: delta +10 → candidate 50 → stays 50\n * - ArrowLeft: delta -10 → candidate 30\n * - PageUp: delta +10 (when big = 10) → 50; PageDown → 30\n * - Home / End handled above with direct `setValue(min|max)`\n */\n setValue(value + delta);\n },\n [disabled, max, min, setValue, step, value],\n );\n\n return (\n <div\n ref={(node) => {\n if (typeof refProp === \"function\") {\n refProp(node);\n } else if (refProp) {\n (refProp as RefObject<HTMLDivElement | null>).current = node;\n }\n }}\n role=\"slider\"\n tabIndex={disabled ? -1 : 0}\n data-slot=\"slider-thumb\"\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-disabled={disabled || undefined}\n className={cn(\n \"absolute top-1/2 z-10 -translate-x-1/2 -translate-y-1/2\",\n sliderThumbVariants({ size }),\n className,\n )}\n style={{ left: `${pct}%` }}\n onPointerDown={onPointerDown}\n onKeyDown={onKeyDown}\n {...rest}\n />\n );\n}\n\nSliderThumb.displayName = \"SliderThumb\";\n\n/**\n * Two-thumb range control on one track. Inlines track/range for layout speed;\n * thumbs delegate drag math through `moveThumb` / `setPair` to keep ordering\n * and snapping identical to the single slider helpers.\n */\nexport function RangeSlider({\n className,\n size = \"md\",\n min = 0,\n max = 100,\n step = 1,\n value: valueProp,\n defaultValue,\n onValueChange,\n disabled = false,\n appearance = \"default\",\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n ref,\n ...rest\n}: RangeSliderProps & { ref?: Ref<HTMLDivElement> }) {\n const trackRef = useRef<HTMLDivElement | null>(null);\n const isControlled = valueProp !== undefined;\n const [uncontrolled, setUncontrolled] = useState<[number, number]>(() => {\n const seed = defaultValue ?? [min, max];\n\n /**\n * Initial pair: normalize each endpoint independently so both ends sit\n * on the step grid and respect [min, max] before any ordering logic runs.\n *\n * Example: min = 0, max = 100, step = 10, seed[0] = 85\n * → snap to 80 → clamp still 80.\n */\n const lo = clamp(snapToStep(seed[0], min, step), min, max);\n const hi = clamp(snapToStep(seed[1], min, step), min, max);\n\n /**\n * Canonical order is always [lower, higher]. If the consumer passes\n * reversed defaults (e.g. [80, 20]), we swap so downstream math assumes\n * lo ≤ hi for range width and thumb assignment.\n */\n return lo <= hi ? [lo, hi] : [hi, lo];\n });\n\n const value = isControlled ? (valueProp as [number, number]) : uncontrolled;\n\n /**\n * Derive ordered endpoints for rendering and hit-testing math. Controlled\n * parents might briefly pass reversed tuples; we normalize every render so\n * `lo` is the left/low thumb and `hi` is the right/high thumb.\n */\n const [lo, hi] =\n value[0] <= value[1] ? [value[0], value[1]] : [value[1], value[0]];\n\n /**\n * Commits a new [low, high] pair: used by drags, keyboard nudges, and\n * internal clamping. Each thumb only mutates its own side, but we always\n * pass through here so both values stay snapped and ordered.\n *\n * Example: current [20, 80], dragging the low thumb\n * → calls like setPair([newLow, 80]); the high endpoint is preserved until\n * the other thumb moves.\n */\n const setPair = useCallback(\n (next: [number, number]) => {\n /**\n * Per-endpoint snap + clamp, same rules as the single slider. Handles\n * overshoot from pointer projection or programmatic updates.\n *\n * Example: min = 0, max = 100, step = 10, next = [27, 85]\n * → [30, 80] after snap/clamp (85 cannot exceed max but also snaps down).\n */\n const a = clamp(snapToStep(next[0], min, step), min, max);\n const b = clamp(snapToStep(next[1], min, step), min, max);\n\n /**\n * Re-order after independent normalization so the tuple is always\n * [smaller, larger], keeping the range bar width non-negative.\n */\n const ordered: [number, number] = a <= b ? [a, b] : [b, a];\n if (!isControlled) {\n setUncontrolled(ordered);\n }\n onValueChange?.(ordered);\n },\n [isControlled, max, min, onValueChange, step],\n );\n\n const moveThumb = useCallback(\n (index: 0 | 1, clientX: number) => {\n const track = trackRef.current;\n if (!track) return;\n\n const raw = computeValueFromPointer(clientX, track, min, max, step);\n\n /**\n * Which thumb is active is explicit (`index`), so we only replace that\n * side of the pair and keep the opposite endpoint fixed. `setPair` will\n * still snap/clamp and may collapse the range if thumbs cross (handled\n * by ordering inside `setPair`).\n *\n * index 0: low thumb → `[raw, hi]`\n * index 1: high thumb → `[lo, raw]`\n */\n if (index === 0) {\n setPair([raw, hi]);\n } else {\n setPair([lo, raw]);\n }\n },\n [hi, lo, max, min, setPair, step],\n );\n\n /**\n * Map both endpoints to percentages along the track for layout:\n * - `left` on the range fill uses `loPct` (where the selected interval starts).\n * - `width` uses `hiPct - loPct` (how wide the interval is), floored at 0\n * if the thumbs coincide.\n *\n * Example: min = 0, max = 100, lo = 20, hi = 80\n * - loPct = 20%, hiPct = 80%\n * - Range bar: left 20%, width 60%\n */\n const loPct = ((lo - min) / (max - min)) * 100;\n const hiPct = ((hi - min) / (max - min)) * 100;\n\n const resolvedSize = size ?? \"md\";\n\n return (\n <div\n ref={ref}\n data-slot=\"range-slider\"\n role=\"group\"\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-valuetext={`${lo} – ${hi}`}\n className={cn(sliderRootVariants({ size: resolvedSize }), className)}\n {...rest}\n >\n <div\n ref={trackRef}\n data-slot=\"slider-track\"\n className={cn(sliderTrackVariants({ size: resolvedSize }), \"relative\")}\n >\n <div\n data-slot=\"slider-range\"\n className={cn(sliderRangeVariants({ appearance }), \"absolute\")}\n style={{\n left: `${loPct}%`,\n width: `${Math.max(hiPct - loPct, 0)}%`,\n }}\n />\n <RangeThumb\n disabled={disabled}\n size={resolvedSize}\n value={lo}\n min={min}\n max={max}\n step={step}\n positionPct={loPct}\n trackRef={trackRef}\n onMoveClientX={(x) => moveThumb(0, x)}\n onNudge={(delta) => setPair([lo + delta, hi])}\n />\n <RangeThumb\n disabled={disabled}\n size={resolvedSize}\n value={hi}\n min={min}\n max={max}\n step={step}\n positionPct={hiPct}\n trackRef={trackRef}\n onMoveClientX={(x) => moveThumb(1, x)}\n onNudge={(delta) => setPair([lo, hi + delta])}\n />\n </div>\n </div>\n );\n}\n\nRangeSlider.displayName = \"RangeSlider\";\n\ntype RangeThumbProps = {\n disabled: boolean;\n size: \"sm\" | \"md\" | \"lg\";\n value: number;\n min: number;\n max: number;\n step: number;\n positionPct: number;\n trackRef: RefObject<HTMLDivElement | null>;\n /** Called on pointer move with viewport X; parent decides which bound updates. */\n onMoveClientX: (clientX: number) => void;\n /** Relative keyboard adjustment in value units; parent merges into the pair. */\n onNudge: (delta: number) => void;\n};\n\n/** Private thumb implementation shared by the low and high endpoints. */\nfunction RangeThumb({\n disabled,\n size,\n value,\n min,\n max,\n step,\n positionPct,\n trackRef,\n onMoveClientX,\n onNudge,\n}: RangeThumbProps) {\n const onPointerDown = useCallback(\n (event: ReactPointerEvent<HTMLDivElement>) => {\n if (disabled) {\n return;\n }\n event.preventDefault();\n const track = trackRef.current;\n if (!track) {\n return;\n }\n /** Same capture strategy as `SliderThumb` for reliable dragging. */\n event.currentTarget.setPointerCapture(event.pointerId);\n const move = (e: PointerEvent) => {\n /** Parent maps X → new value for this thumb only. */\n onMoveClientX(e.clientX);\n };\n const up = () => {\n window.removeEventListener(\"pointermove\", move);\n window.removeEventListener(\"pointerup\", up);\n };\n window.addEventListener(\"pointermove\", move);\n window.addEventListener(\"pointerup\", up);\n },\n [disabled, onMoveClientX, trackRef],\n );\n\n const onKeyDown = useCallback(\n (event: ReactKeyboardEvent<HTMLDivElement>) => {\n if (disabled) {\n return;\n }\n /**\n * Keyboard deltas mirror the single-thumb slider, but we express jumps\n * as `onNudge(min - value)` / `onNudge(max - value)` so Home/End move\n * **this** thumb to the domain edge without hardcoding sibling values.\n */\n const big = (max - min) / 10;\n let delta = 0;\n if (event.key === \"ArrowRight\" || event.key === \"ArrowUp\") {\n delta = step;\n } else if (event.key === \"ArrowLeft\" || event.key === \"ArrowDown\") {\n delta = -step;\n } else if (event.key === \"PageUp\") {\n delta = big;\n } else if (event.key === \"PageDown\") {\n delta = -big;\n } else if (event.key === \"Home\") {\n event.preventDefault();\n onNudge(min - value);\n return;\n } else if (event.key === \"End\") {\n event.preventDefault();\n onNudge(max - value);\n return;\n } else {\n return;\n }\n event.preventDefault();\n onNudge(delta);\n },\n [disabled, max, min, onNudge, step, value],\n );\n\n return (\n <div\n role=\"slider\"\n tabIndex={disabled ? -1 : 0}\n data-slot=\"range-slider-thumb\"\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-disabled={disabled || undefined}\n className={cn(\n \"absolute top-1/2 z-10 -translate-x-1/2 -translate-y-1/2\",\n sliderThumbVariants({ size }),\n )}\n style={{ left: `${positionPct}%` }}\n onPointerDown={onPointerDown}\n onKeyDown={onKeyDown}\n />\n );\n}\n"]}
1
+ {"version":3,"sources":["../../src/ui/slider/variants.ts","../../src/ui/slider/slider.tsx"],"names":["lo","hi"],"mappings":"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","file":"slider.mjs","sourcesContent":["import { cva } from \"class-variance-authority\";\n\nexport const sliderRootVariants = cva(\"w-full select-none touch-none\", {\n variants: {\n size: {\n sm: \"py-2\",\n md: \"py-2.5\",\n lg: \"py-3\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n\nexport const sliderTrackVariants = cva(\n \"relative h-2 w-full shrink-0 overflow-hidden rounded-full bg-white/10\",\n {\n variants: {\n size: {\n sm: \"h-1.5\",\n md: \"h-2\",\n lg: \"h-2.5\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n },\n);\n\nexport const sliderRangeVariants = cva(\n \"absolute h-full rounded-full bg-linear-to-r from-violet-500 to-indigo-400\",\n {\n variants: {\n appearance: {\n default: \"from-violet-500 to-indigo-400\",\n sky: \"from-sky-500 to-indigo-400\",\n rose: \"from-rose-500 to-indigo-400\",\n purple: \"from-purple-500 to-indigo-400\",\n pink: \"from-pink-500 to-indigo-400\",\n orange: \"from-orange-500 to-indigo-400\",\n yellow: \"from-yellow-500 to-indigo-400\",\n teal: \"from-teal-500 to-indigo-400\",\n indigo: \"from-indigo-500 to-indigo-400\",\n emerald: \"from-emerald-500 to-teal-400\",\n amber: \"from-amber-500 to-orange-400\",\n gray: \"from-gray-500 to-indigo-400\",\n violet: \"from-violet-500 to-indigo-400\",\n \"gradient-blue\": \"from-blue-500 to-indigo-400\",\n \"gradient-green\": \"from-green-500 to-indigo-400\",\n \"gradient-red\": \"from-red-500 to-indigo-400\",\n \"gradient-yellow\": \"from-yellow-500 to-indigo-400\",\n \"gradient-purple\": \"from-purple-500 to-indigo-400\",\n \"gradient-teal\": \"from-teal-500 to-indigo-400\",\n \"gradient-indigo\": \"from-indigo-500 to-indigo-400\",\n \"gradient-pink\": \"from-pink-500 to-indigo-400\",\n \"gradient-orange\": \"from-orange-500 to-indigo-400\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n },\n },\n);\n\nexport const sliderThumbVariants = cva(\n \"block size-4 rounded-full border border-white/20 bg-white shadow-md ring-offset-2 ring-offset-slate-950 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/40 disabled:pointer-events-none disabled:opacity-40\",\n {\n variants: {\n size: {\n sm: \"size-3.5\",\n md: \"size-4\",\n lg: \"size-5\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n },\n);\n","\"use client\";\n\nimport {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n type KeyboardEvent as ReactKeyboardEvent,\n type PointerEvent as ReactPointerEvent,\n type Ref,\n type RefObject,\n} from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport type {\n RangeSliderProps,\n SliderCtx,\n SliderProps,\n SliderRangeProps,\n SliderThumbProps,\n SliderTrackProps,\n} from \"./types\";\nimport {\n sliderRangeVariants,\n sliderRootVariants,\n sliderThumbVariants,\n sliderTrackVariants,\n} from \"./variants\";\n\n/**\n * Restricts a numeric value to the inclusive interval [min, max].\n *\n * Values below `min` become `min`; values above `max` become `max`.\n * This is used after pointer math and keyboard deltas so the slider\n * never reports values outside the configured domain.\n *\n * Examples (min = 0, max = 100):\n * - clamp(120, 0, 100) → 100 (capped at max)\n * - clamp(-10, 0, 100) → 0 (raised to min)\n * - clamp(42, 0, 100) → 42 (unchanged)\n */\nconst clamp = (value: number, min: number, max: number) => {\n return Math.min(max, Math.max(min, value));\n};\n\n/**\n * Maps an arbitrary number to the closest value aligned with `step`\n * relative to `min` (the “anchor” of the step grid).\n *\n * How it works:\n * 1. Measure how far `value` is from `min` in “step units”:\n * (value - min) / step\n * 2. Round to the nearest whole number of steps.\n * 3. Reconstruct: min + (rounded steps) * step\n *\n * Example: min = 0, step = 10, value = 23\n * - steps = round((23 - 0) / 10) = round(2.3) = 2\n * - result = 0 + 2 * 10 = 20\n *\n * Note: This does not enforce [min, max]; pair with `clamp` when needed.\n */\nconst snapToStep = (value: number, min: number, step: number) => {\n const steps = Math.round((value - min) / step);\n return min + steps * step;\n};\n\nconst SliderContext = createContext<SliderCtx | null>(null);\n\n/**\n * Reads slider context; throws a descriptive error if a sub-part is used\n * outside `<Slider>` (helps catch invalid composition early).\n */\nconst useSliderContext = (component: string): SliderCtx => {\n const ctx = useContext(SliderContext);\n if (!ctx) {\n throw new Error(`${component} must be used within <Slider>`);\n }\n return ctx;\n};\n\n/**\n * Converts a horizontal pointer position (viewport X) into a slider value\n * in [min, max], snapped to `step`.\n *\n * Pipeline:\n * 1. Read the track’s bounding box so all math uses the same coordinate\n * space as `clientX` (viewport coordinates from pointer events).\n * 2. Compute how far along the track the pointer sits as a ratio in [0, 1]:\n * (clientX - trackLeft) / trackWidth. If width is 0, ratio is 0 to avoid\n * division by zero.\n * 3. Linearly interpolate that ratio into the value domain:\n * raw = min + ratio * (max - min).\n * 4. Clamp `raw` to [min, max], then snap to the nearest valid step so the\n * result always matches discrete thumb positions.\n *\n * Worked example: track left = 100px, width = 200px, min = 0, max = 100,\n * pointer clientX = 150px\n * - ratio = (150 - 100) / 200 = 0.25\n * - raw = 0 + 0.25 * (100 - 0) = 25\n * - After clamp + snap (e.g. step 1), result stays 25\n */\nconst computeValueFromPointer = (\n clientX: number,\n track: HTMLDivElement,\n min: number,\n max: number,\n step: number,\n) => {\n const rect = track.getBoundingClientRect();\n\n const ratio = rect.width === 0 ? 0 : (clientX - rect.left) / rect.width;\n\n const raw = min + ratio * (max - min);\n\n return snapToStep(clamp(raw, min, max), min, step);\n};\n\n/**\n * Root primitive for a single-value slider. Provides context (bounds, value,\n * disabled state, track ref) to `SliderTrack`, `SliderRange`, and `SliderThumb`.\n */\nexport function Slider({\n className,\n size = \"md\",\n min = 0,\n max = 100,\n step = 1,\n value: valueProp,\n defaultValue,\n onValueChange,\n disabled = false,\n appearance = \"default\",\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n children,\n ref,\n ...rest\n}: SliderProps & { ref?: Ref<HTMLDivElement> }) {\n const trackRef = useRef<HTMLDivElement | null>(null);\n const isControlled = valueProp !== undefined;\n\n /**\n * Mode selection (React’s standard controlled/uncontrolled pattern):\n *\n * - Controlled: `value` is passed from the parent. The parent is the source\n * of truth; local state is not updated on drag. Use `onValueChange` to\n * persist updates upward (e.g. into React state or a form library).\n *\n * - Uncontrolled: `value` is omitted. `defaultValue` (or `min` if absent)\n * seeds internal state; drags and keyboard updates write to that state\n * directly. `onValueChange` is still optional for side effects.\n *\n * Examples:\n * - Controlled: `<Slider value={50} onValueChange={setX} />`\n * - Uncontrolled: `<Slider defaultValue={50} />`\n */\n\n const [uncontrolled, setUncontrolled] = useState(defaultValue ?? min);\n\n const value = isControlled ? (valueProp as number) : uncontrolled;\n\n const setValue = useCallback(\n (next: number) => {\n /**\n * Normalizes a candidate value before committing it:\n * 1. Snap to the nearest step anchored at `min`.\n * 2. Clamp into [min, max] so overshoots from keyboard or programmatic\n * calls cannot escape the domain.\n * 3. If uncontrolled, mirror the result into local state so the thumb\n * and range visuals stay in sync.\n * 4. Always invoke `onValueChange` when provided so parents receive the\n * canonical value (even in controlled mode, after normalization).\n *\n * Example: min = 0, max = 100, step = 10, next = 27\n * → snap to 30 → clamp still 30 → emitted value 30\n */\n\n const clamped = clamp(snapToStep(next, min, step), min, max);\n\n if (!isControlled) {\n setUncontrolled(clamped);\n }\n\n onValueChange?.(clamped);\n },\n [isControlled, max, min, onValueChange, step],\n );\n\n const ctx = useMemo(\n () => ({\n min,\n max,\n step,\n\n /**\n * Context consumers always see a value that is on-step and in-range.\n * If a controlled parent passes an out-of-band number (e.g. stale props\n * or a bug), we still render thumbs and ARIA attributes consistently\n * with the same snap/clamp rules as pointer and keyboard input.\n */\n value: clamp(snapToStep(value, min, step), min, max),\n\n setValue,\n disabled,\n size: size ?? \"md\",\n appearance: appearance ?? \"default\",\n trackRef,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n }),\n [\n appearance,\n ariaLabel,\n ariaLabelledBy,\n disabled,\n max,\n min,\n setValue,\n size,\n step,\n value,\n ],\n );\n\n return (\n <SliderContext.Provider value={ctx}>\n <div\n ref={ref}\n data-slot=\"slider\"\n role=\"group\"\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n className={cn(sliderRootVariants({ size }), className)}\n {...rest}\n >\n {children}\n </div>\n </SliderContext.Provider>\n );\n}\n\nSlider.displayName = \"Slider\";\n\n/**\n * The interactive rail whose geometry defines how pointer X maps to values.\n * Assigns the DOM node to context `trackRef` so thumbs can measure it.\n */\nexport function SliderTrack({\n className,\n ref: refProp,\n ...rest\n}: SliderTrackProps & { ref?: Ref<HTMLDivElement> }) {\n const { size, trackRef } = useSliderContext(\"SliderTrack\");\n\n return (\n <div\n ref={(node) => {\n trackRef.current = node;\n if (typeof refProp === \"function\") {\n refProp(node);\n } else if (refProp) {\n (refProp as RefObject<HTMLDivElement | null>).current = node;\n }\n }}\n data-slot=\"slider-track\"\n className={cn(sliderTrackVariants({ size }), className)}\n {...rest}\n />\n );\n}\n\nSliderTrack.displayName = \"SliderTrack\";\n\n/** Filled portion from the start of the track up to the current value (width %). */\nexport function SliderRange({\n className,\n ref,\n ...rest\n}: SliderRangeProps & { ref?: Ref<HTMLDivElement> }) {\n const { min, max, value, appearance } = useSliderContext(\"SliderRange\");\n\n /**\n * Percentage along the track (0–100) representing the current value.\n *\n * Formula: ((value - min) / (max - min)) * 100. When min === max the range\n * is degenerate; we treat the percentage as 0 to avoid NaN.\n *\n * For the single-thumb slider, this percentage becomes the **width** of\n * the filled range segment (from the start of the track to the thumb).\n * The thumb itself uses the same mapping in `SliderThumb` for `left`.\n */\n const pct = max === min ? 0 : ((value - min) / (max - min)) * 100;\n\n return (\n <div\n ref={ref}\n data-slot=\"slider-range\"\n className={cn(sliderRangeVariants({ appearance }), className)}\n style={{ width: `${pct}%` }}\n {...rest}\n />\n );\n}\n\nSliderRange.displayName = \"SliderRange\";\n\n/**\n * Draggable thumb with ARIA `role=\"slider\"`. Handles pointer drag (via window\n * listeners) and keyboard increments consistent with `min` / `max` / `step`.\n */\nexport function SliderThumb({\n className,\n ref: refProp,\n ...rest\n}: SliderThumbProps & { ref?: Ref<HTMLDivElement> }) {\n const {\n min,\n max,\n value,\n step,\n setValue,\n disabled,\n size,\n trackRef,\n \"aria-label\": sliderAriaLabel,\n \"aria-labelledby\": sliderAriaLabelledBy,\n } = useSliderContext(\"SliderThumb\");\n /** Horizontal thumb position; same mapping as `SliderRange` width uses. */\n const pct = max === min ? 0 : ((value - min) / (max - min)) * 100;\n\n const onPointerDown = useCallback(\n (event: ReactPointerEvent<HTMLDivElement>) => {\n if (disabled) return;\n\n event.preventDefault();\n\n const track = trackRef.current;\n if (!track) return;\n\n /**\n * Keep receiving pointer events for this pointer id even when the\n * cursor leaves the thumb. Without capture, dragging quickly could\n * “drop” the thumb when the pointer exits the small hit target.\n */\n event.currentTarget.setPointerCapture(event.pointerId);\n\n const move = (e: PointerEvent) => {\n /**\n * On each move, project the pointer X onto the track geometry, then\n * run the same snap/clamp pipeline as a click would. `setValue`\n * deduplicates invalid states for controlled parents.\n */\n setValue(computeValueFromPointer(e.clientX, track, min, max, step));\n };\n\n const up = () => {\n /** Tear down window listeners once the gesture ends (any button). */\n window.removeEventListener(\"pointermove\", move);\n window.removeEventListener(\"pointerup\", up);\n };\n\n window.addEventListener(\"pointermove\", move);\n window.addEventListener(\"pointerup\", up);\n },\n [disabled, max, min, setValue, step, trackRef],\n );\n\n const onKeyDown = useCallback(\n (event: ReactKeyboardEvent<HTMLDivElement>) => {\n if (disabled) return;\n\n /**\n * Page Up / Page Down move by one tenth of the value span (not one\n * tenth of the thumb travel). This scales with custom min/max ranges.\n */\n const big = (max - min) / 10;\n\n let delta = 0;\n\n /**\n * Keyboard model (WAI-ARIA slider conventions, adapted to our step):\n * - Arrow Right / Up: increase by one `step`.\n * - Arrow Left / Down: decrease by one `step`.\n * - Page Up / Down: coarse adjust by `big` (±10% of range).\n * - Home / End: jump to min or max (bypasses incremental delta).\n * Unrecognized keys are ignored without calling `preventDefault`.\n */\n if (event.key === \"ArrowRight\" || event.key === \"ArrowUp\") {\n delta = step;\n } else if (event.key === \"ArrowLeft\" || event.key === \"ArrowDown\") {\n delta = -step;\n } else if (event.key === \"PageUp\") {\n delta = big;\n } else if (event.key === \"PageDown\") {\n delta = -big;\n } else if (event.key === \"Home\") {\n event.preventDefault();\n setValue(min);\n return;\n } else if (event.key === \"End\") {\n event.preventDefault();\n setValue(max);\n return;\n } else {\n return;\n }\n\n event.preventDefault();\n\n /**\n * Apply the accumulated delta on top of the current value; `setValue`\n * performs snap + clamp so the outcome is always valid.\n *\n * Illustration with min = 0, max = 100, step = 10, value = 40:\n * - ArrowRight: delta +10 → candidate 50 → stays 50\n * - ArrowLeft: delta -10 → candidate 30\n * - PageUp: delta +10 (when big = 10) → 50; PageDown → 30\n * - Home / End handled above with direct `setValue(min|max)`\n */\n setValue(value + delta);\n },\n [disabled, max, min, setValue, step, value],\n );\n\n return (\n <div\n ref={(node) => {\n if (typeof refProp === \"function\") {\n refProp(node);\n } else if (refProp) {\n (refProp as RefObject<HTMLDivElement | null>).current = node;\n }\n }}\n role=\"slider\"\n tabIndex={disabled ? -1 : 0}\n data-slot=\"slider-thumb\"\n aria-label={sliderAriaLabel}\n aria-labelledby={sliderAriaLabelledBy}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-disabled={disabled || undefined}\n className={cn(\n \"absolute top-1/2 z-10 -translate-x-1/2 -translate-y-1/2\",\n sliderThumbVariants({ size }),\n className,\n )}\n style={{ left: `${pct}%` }}\n onPointerDown={onPointerDown}\n onKeyDown={onKeyDown}\n {...rest}\n />\n );\n}\n\nSliderThumb.displayName = \"SliderThumb\";\n\n/**\n * Two-thumb range control on one track. Inlines track/range for layout speed;\n * thumbs delegate drag math through `moveThumb` / `setPair` to keep ordering\n * and snapping identical to the single slider helpers.\n */\nexport function RangeSlider({\n className,\n size = \"md\",\n min = 0,\n max = 100,\n step = 1,\n value: valueProp,\n defaultValue,\n onValueChange,\n disabled = false,\n appearance = \"default\",\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n ref,\n ...rest\n}: RangeSliderProps & { ref?: Ref<HTMLDivElement> }) {\n const trackRef = useRef<HTMLDivElement | null>(null);\n const isControlled = valueProp !== undefined;\n const [uncontrolled, setUncontrolled] = useState<[number, number]>(() => {\n const seed = defaultValue ?? [min, max];\n\n /**\n * Initial pair: normalize each endpoint independently so both ends sit\n * on the step grid and respect [min, max] before any ordering logic runs.\n *\n * Example: min = 0, max = 100, step = 10, seed[0] = 85\n * → snap to 80 → clamp still 80.\n */\n const lo = clamp(snapToStep(seed[0], min, step), min, max);\n const hi = clamp(snapToStep(seed[1], min, step), min, max);\n\n /**\n * Canonical order is always [lower, higher]. If the consumer passes\n * reversed defaults (e.g. [80, 20]), we swap so downstream math assumes\n * lo ≤ hi for range width and thumb assignment.\n */\n return lo <= hi ? [lo, hi] : [hi, lo];\n });\n\n const value = isControlled ? (valueProp as [number, number]) : uncontrolled;\n\n /**\n * Derive ordered endpoints for rendering and hit-testing math. Controlled\n * parents might briefly pass reversed tuples; we normalize every render so\n * `lo` is the left/low thumb and `hi` is the right/high thumb.\n */\n const [lo, hi] =\n value[0] <= value[1] ? [value[0], value[1]] : [value[1], value[0]];\n\n /**\n * Commits a new [low, high] pair: used by drags, keyboard nudges, and\n * internal clamping. Each thumb only mutates its own side, but we always\n * pass through here so both values stay snapped and ordered.\n *\n * Example: current [20, 80], dragging the low thumb\n * → calls like setPair([newLow, 80]); the high endpoint is preserved until\n * the other thumb moves.\n */\n const setPair = useCallback(\n (next: [number, number]) => {\n /**\n * Per-endpoint snap + clamp, same rules as the single slider. Handles\n * overshoot from pointer projection or programmatic updates.\n *\n * Example: min = 0, max = 100, step = 10, next = [27, 85]\n * → [30, 80] after snap/clamp (85 cannot exceed max but also snaps down).\n */\n const a = clamp(snapToStep(next[0], min, step), min, max);\n const b = clamp(snapToStep(next[1], min, step), min, max);\n\n /**\n * Re-order after independent normalization so the tuple is always\n * [smaller, larger], keeping the range bar width non-negative.\n */\n const ordered: [number, number] = a <= b ? [a, b] : [b, a];\n if (!isControlled) {\n setUncontrolled(ordered);\n }\n onValueChange?.(ordered);\n },\n [isControlled, max, min, onValueChange, step],\n );\n\n const moveThumb = useCallback(\n (index: 0 | 1, clientX: number) => {\n const track = trackRef.current;\n if (!track) return;\n\n const raw = computeValueFromPointer(clientX, track, min, max, step);\n\n /**\n * Which thumb is active is explicit (`index`), so we only replace that\n * side of the pair and keep the opposite endpoint fixed. `setPair` will\n * still snap/clamp and may collapse the range if thumbs cross (handled\n * by ordering inside `setPair`).\n *\n * index 0: low thumb → `[raw, hi]`\n * index 1: high thumb → `[lo, raw]`\n */\n if (index === 0) {\n setPair([raw, hi]);\n } else {\n setPair([lo, raw]);\n }\n },\n [hi, lo, max, min, setPair, step],\n );\n\n /**\n * Map both endpoints to percentages along the track for layout:\n * - `left` on the range fill uses `loPct` (where the selected interval starts).\n * - `width` uses `hiPct - loPct` (how wide the interval is), floored at 0\n * if the thumbs coincide.\n *\n * Example: min = 0, max = 100, lo = 20, hi = 80\n * - loPct = 20%, hiPct = 80%\n * - Range bar: left 20%, width 60%\n */\n const loPct = ((lo - min) / (max - min)) * 100;\n const hiPct = ((hi - min) / (max - min)) * 100;\n\n const resolvedSize = size ?? \"md\";\n\n const lowThumbAriaLabel =\n ariaLabel !== undefined ? `${ariaLabel}, minimum` : undefined;\n const highThumbAriaLabel =\n ariaLabel !== undefined ? `${ariaLabel}, maximum` : undefined;\n const thumbAriaLabelledBy =\n ariaLabel === undefined ? ariaLabelledBy : undefined;\n\n return (\n <div\n ref={ref}\n data-slot=\"range-slider\"\n role=\"group\"\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n className={cn(sliderRootVariants({ size: resolvedSize }), className)}\n {...rest}\n >\n <div\n ref={trackRef}\n data-slot=\"slider-track\"\n className={cn(sliderTrackVariants({ size: resolvedSize }), \"relative\")}\n >\n <div\n data-slot=\"slider-range\"\n className={cn(sliderRangeVariants({ appearance }), \"absolute\")}\n style={{\n left: `${loPct}%`,\n width: `${Math.max(hiPct - loPct, 0)}%`,\n }}\n />\n <RangeThumb\n disabled={disabled}\n size={resolvedSize}\n value={lo}\n min={min}\n max={max}\n step={step}\n positionPct={loPct}\n trackRef={trackRef}\n onMoveClientX={(x) => moveThumb(0, x)}\n onNudge={(delta) => setPair([lo + delta, hi])}\n aria-label={lowThumbAriaLabel}\n aria-labelledby={thumbAriaLabelledBy}\n />\n <RangeThumb\n disabled={disabled}\n size={resolvedSize}\n value={hi}\n min={min}\n max={max}\n step={step}\n positionPct={hiPct}\n trackRef={trackRef}\n onMoveClientX={(x) => moveThumb(1, x)}\n onNudge={(delta) => setPair([lo, hi + delta])}\n aria-label={highThumbAriaLabel}\n aria-labelledby={thumbAriaLabelledBy}\n />\n </div>\n </div>\n );\n}\n\nRangeSlider.displayName = \"RangeSlider\";\n\ntype RangeThumbProps = {\n disabled: boolean;\n size: \"sm\" | \"md\" | \"lg\";\n value: number;\n min: number;\n max: number;\n step: number;\n positionPct: number;\n trackRef: RefObject<HTMLDivElement | null>;\n /** Called on pointer move with viewport X; parent decides which bound updates. */\n onMoveClientX: (clientX: number) => void;\n /** Relative keyboard adjustment in value units; parent merges into the pair. */\n onNudge: (delta: number) => void;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n};\n\n/** Private thumb implementation shared by the low and high endpoints. */\nfunction RangeThumb({\n disabled,\n size,\n value,\n min,\n max,\n step,\n positionPct,\n trackRef,\n onMoveClientX,\n onNudge,\n \"aria-label\": thumbAriaLabel,\n \"aria-labelledby\": thumbAriaLabelledBy,\n}: RangeThumbProps) {\n const onPointerDown = useCallback(\n (event: ReactPointerEvent<HTMLDivElement>) => {\n if (disabled) {\n return;\n }\n event.preventDefault();\n const track = trackRef.current;\n if (!track) {\n return;\n }\n /** Same capture strategy as `SliderThumb` for reliable dragging. */\n event.currentTarget.setPointerCapture(event.pointerId);\n const move = (e: PointerEvent) => {\n /** Parent maps X → new value for this thumb only. */\n onMoveClientX(e.clientX);\n };\n const up = () => {\n window.removeEventListener(\"pointermove\", move);\n window.removeEventListener(\"pointerup\", up);\n };\n window.addEventListener(\"pointermove\", move);\n window.addEventListener(\"pointerup\", up);\n },\n [disabled, onMoveClientX, trackRef],\n );\n\n const onKeyDown = useCallback(\n (event: ReactKeyboardEvent<HTMLDivElement>) => {\n if (disabled) {\n return;\n }\n /**\n * Keyboard deltas mirror the single-thumb slider, but we express jumps\n * as `onNudge(min - value)` / `onNudge(max - value)` so Home/End move\n * **this** thumb to the domain edge without hardcoding sibling values.\n */\n const big = (max - min) / 10;\n let delta = 0;\n if (event.key === \"ArrowRight\" || event.key === \"ArrowUp\") {\n delta = step;\n } else if (event.key === \"ArrowLeft\" || event.key === \"ArrowDown\") {\n delta = -step;\n } else if (event.key === \"PageUp\") {\n delta = big;\n } else if (event.key === \"PageDown\") {\n delta = -big;\n } else if (event.key === \"Home\") {\n event.preventDefault();\n onNudge(min - value);\n return;\n } else if (event.key === \"End\") {\n event.preventDefault();\n onNudge(max - value);\n return;\n } else {\n return;\n }\n event.preventDefault();\n onNudge(delta);\n },\n [disabled, max, min, onNudge, step, value],\n );\n\n return (\n <div\n role=\"slider\"\n tabIndex={disabled ? -1 : 0}\n data-slot=\"range-slider-thumb\"\n aria-label={thumbAriaLabel}\n aria-labelledby={thumbAriaLabelledBy}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-disabled={disabled || undefined}\n className={cn(\n \"absolute top-1/2 z-10 -translate-x-1/2 -translate-y-1/2\",\n sliderThumbVariants({ size }),\n )}\n style={{ left: `${positionPct}%` }}\n onPointerDown={onPointerDown}\n onKeyDown={onKeyDown}\n />\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../../../src/ui/spinner/animated/spinner.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,2CAmI1C;yBAnIe,OAAO"}
1
+ {"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../../../src/ui/spinner/animated/spinner.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,2CAsI1C;yBAtIe,OAAO"}
@@ -1,5 +1,5 @@
1
1
  export declare const spinnerVariants: (props?: ({
2
- appearance?: "default" | "secondary" | "destructive" | "ghost" | "emerald" | "indigo" | "purple" | "pink" | "rose" | "sky" | "teal" | "yellow" | "orange" | "gradient-blue" | "gradient-green" | "gradient-red" | "gradient-yellow" | "gradient-purple" | "gradient-teal" | "gradient-indigo" | "gradient-pink" | "gradient-orange" | null | undefined;
2
+ appearance?: "default" | "sky" | "emerald" | "rose" | "indigo" | "orange" | "pink" | "purple" | "teal" | "yellow" | "secondary" | "destructive" | "ghost" | "gradient-blue" | "gradient-green" | "gradient-red" | "gradient-yellow" | "gradient-purple" | "gradient-teal" | "gradient-indigo" | "gradient-pink" | "gradient-orange" | null | undefined;
3
3
  size?: "sm" | "md" | "lg" | "xl" | "xs" | null | undefined;
4
4
  variant?: "ring" | "pulse" | "dots" | "bars" | null | undefined;
5
5
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkUOZYPWDZ_js = require('../../chunk-UOZYPWDZ.js');
4
+ var chunkZS5756ZC_js = require('../../chunk-ZS5756ZC.js');
5
5
  var framerMotion = require('framer-motion');
6
6
  var classVarianceAuthority = require('class-variance-authority');
7
7
  var jsxRuntime = require('react/jsx-runtime');
@@ -63,30 +63,33 @@ function Spinner(props) {
63
63
  "aria-label": ariaLabel = "Loading",
64
64
  ...rest
65
65
  } = props;
66
- const rootClass = chunkUOZYPWDZ_js.cn(
66
+ const rootClass = chunkZS5756ZC_js.cn(
67
67
  spinnerVariants({ appearance, size, variant }),
68
68
  className
69
69
  );
70
70
  if (variant === "ring") {
71
- return /* @__PURE__ */ jsxRuntime.jsx(
71
+ return /* @__PURE__ */ jsxRuntime.jsxs(
72
72
  framerMotion.motion.span,
73
73
  {
74
74
  ref,
75
75
  role: "status",
76
76
  "data-slot": "spinner",
77
77
  "aria-label": ariaLabel,
78
- className: chunkUOZYPWDZ_js.cn(rootClass, "relative"),
78
+ className: chunkZS5756ZC_js.cn(rootClass, "relative"),
79
79
  initial: false,
80
80
  ...rest,
81
- children: /* @__PURE__ */ jsxRuntime.jsx(
82
- framerMotion.motion.span,
83
- {
84
- className: "block size-full rounded-full border-2 border-current border-t-transparent",
85
- animate: { rotate: 360 },
86
- transition: { repeat: Infinity, ease: "linear", duration: 0.85 },
87
- "aria-hidden": true
88
- }
89
- )
81
+ children: [
82
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: ariaLabel }),
83
+ /* @__PURE__ */ jsxRuntime.jsx(
84
+ framerMotion.motion.span,
85
+ {
86
+ className: "block size-full rounded-full border-2 border-current border-t-transparent",
87
+ animate: { rotate: 360 },
88
+ transition: { repeat: Infinity, ease: "linear", duration: 0.85 },
89
+ "aria-hidden": true
90
+ }
91
+ )
92
+ ]
90
93
  }
91
94
  );
92
95
  }
@@ -99,54 +102,60 @@ function Spinner(props) {
99
102
  xl: "size-3"
100
103
  };
101
104
  const dotSize = dotSizes[size];
102
- return /* @__PURE__ */ jsxRuntime.jsx(
105
+ return /* @__PURE__ */ jsxRuntime.jsxs(
103
106
  framerMotion.motion.span,
104
107
  {
105
108
  ref,
106
109
  role: "status",
107
110
  "data-slot": "spinner",
108
111
  "aria-label": ariaLabel,
109
- className: chunkUOZYPWDZ_js.cn(rootClass, "gap-1"),
112
+ className: chunkZS5756ZC_js.cn(rootClass, "gap-1"),
110
113
  initial: false,
111
114
  ...rest,
112
- children: [0, 1, 2].map((index) => /* @__PURE__ */ jsxRuntime.jsx(
113
- framerMotion.motion.span,
114
- {
115
- className: chunkUOZYPWDZ_js.cn("rounded-full bg-current", dotSize),
116
- animate: { y: [0, -5, 0], opacity: [0.45, 1, 0.45] },
117
- transition: {
118
- repeat: Infinity,
119
- duration: 0.55,
120
- ease: "easeInOut",
121
- delay: index * 0.12
115
+ children: [
116
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: ariaLabel }),
117
+ [0, 1, 2].map((index) => /* @__PURE__ */ jsxRuntime.jsx(
118
+ framerMotion.motion.span,
119
+ {
120
+ className: chunkZS5756ZC_js.cn("rounded-full bg-current", dotSize),
121
+ animate: { y: [0, -5, 0], opacity: [0.45, 1, 0.45] },
122
+ transition: {
123
+ repeat: Infinity,
124
+ duration: 0.55,
125
+ ease: "easeInOut",
126
+ delay: index * 0.12
127
+ },
128
+ "aria-hidden": true
122
129
  },
123
- "aria-hidden": true
124
- },
125
- index
126
- ))
130
+ index
131
+ ))
132
+ ]
127
133
  }
128
134
  );
129
135
  }
130
136
  if (variant === "pulse") {
131
- return /* @__PURE__ */ jsxRuntime.jsx(
137
+ return /* @__PURE__ */ jsxRuntime.jsxs(
132
138
  framerMotion.motion.span,
133
139
  {
134
140
  ref,
135
141
  role: "status",
136
142
  "data-slot": "spinner",
137
143
  "aria-label": ariaLabel,
138
- className: chunkUOZYPWDZ_js.cn(rootClass),
144
+ className: chunkZS5756ZC_js.cn(rootClass),
139
145
  initial: false,
140
146
  ...rest,
141
- children: /* @__PURE__ */ jsxRuntime.jsx(
142
- framerMotion.motion.span,
143
- {
144
- className: "block size-full rounded-full bg-current",
145
- animate: { scale: [0.75, 1, 0.75], opacity: [0.45, 1, 0.45] },
146
- transition: { repeat: Infinity, duration: 0.9, ease: "easeInOut" },
147
- "aria-hidden": true
148
- }
149
- )
147
+ children: [
148
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: ariaLabel }),
149
+ /* @__PURE__ */ jsxRuntime.jsx(
150
+ framerMotion.motion.span,
151
+ {
152
+ className: "block size-full rounded-full bg-current",
153
+ animate: { scale: [0.75, 1, 0.75], opacity: [0.45, 1, 0.45] },
154
+ transition: { repeat: Infinity, duration: 0.9, ease: "easeInOut" },
155
+ "aria-hidden": true
156
+ }
157
+ )
158
+ ]
150
159
  }
151
160
  );
152
161
  }
@@ -158,31 +167,34 @@ function Spinner(props) {
158
167
  xl: "w-2"
159
168
  };
160
169
  const barWidth = barWidths[size];
161
- return /* @__PURE__ */ jsxRuntime.jsx(
170
+ return /* @__PURE__ */ jsxRuntime.jsxs(
162
171
  framerMotion.motion.span,
163
172
  {
164
173
  ref,
165
174
  role: "status",
166
175
  "data-slot": "spinner",
167
176
  "aria-label": ariaLabel,
168
- className: chunkUOZYPWDZ_js.cn(rootClass, "gap-1"),
177
+ className: chunkZS5756ZC_js.cn(rootClass, "gap-1"),
169
178
  initial: false,
170
179
  ...rest,
171
- children: [0, 1, 2, 3].map((index) => /* @__PURE__ */ jsxRuntime.jsx(
172
- framerMotion.motion.span,
173
- {
174
- className: chunkUOZYPWDZ_js.cn("h-full max-h-[70%] rounded-full bg-current", barWidth),
175
- animate: { scaleY: [0.35, 1, 0.35] },
176
- transition: {
177
- repeat: Infinity,
178
- duration: 0.65,
179
- ease: "easeInOut",
180
- delay: index * 0.1
180
+ children: [
181
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: ariaLabel }),
182
+ [0, 1, 2, 3].map((index) => /* @__PURE__ */ jsxRuntime.jsx(
183
+ framerMotion.motion.span,
184
+ {
185
+ className: chunkZS5756ZC_js.cn("h-full max-h-[70%] rounded-full bg-current", barWidth),
186
+ animate: { scaleY: [0.35, 1, 0.35] },
187
+ transition: {
188
+ repeat: Infinity,
189
+ duration: 0.65,
190
+ ease: "easeInOut",
191
+ delay: index * 0.1
192
+ },
193
+ "aria-hidden": true
181
194
  },
182
- "aria-hidden": true
183
- },
184
- index
185
- ))
195
+ index
196
+ ))
197
+ ]
186
198
  }
187
199
  );
188
200
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/ui/spinner/animated/variants.ts","../../../src/ui/spinner/animated/spinner.tsx"],"names":["cva","cn","jsx","motion"],"mappings":"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","file":"animated.js","sourcesContent":["import { cva } from \"class-variance-authority\";\n\nconst spinnerAppearances = {\n default: \"text-slate-50\",\n secondary: \"text-slate-300\",\n destructive: \"text-rose-400\",\n ghost: \"text-slate-300\",\n emerald: \"text-emerald-400\",\n indigo: \"text-indigo-400\",\n purple: \"text-purple-400\",\n pink: \"text-pink-400\",\n rose: \"text-rose-400\",\n sky: \"text-sky-400\",\n teal: \"text-teal-400\",\n yellow: \"text-yellow-400\",\n orange: \"text-orange-400\",\n \"gradient-blue\": \"text-blue-400\",\n \"gradient-green\": \"text-green-400\",\n \"gradient-red\": \"text-red-400\",\n \"gradient-yellow\": \"text-yellow-400\",\n \"gradient-purple\": \"text-purple-400\",\n \"gradient-teal\": \"text-teal-400\",\n \"gradient-indigo\": \"text-indigo-400\",\n \"gradient-pink\": \"text-pink-400\",\n \"gradient-orange\": \"text-orange-400\",\n} as const;\n\nexport const spinnerVariants = cva(\"inline-flex items-center justify-center\", {\n variants: {\n appearance: spinnerAppearances,\n size: {\n xs: \"size-3\",\n sm: \"size-4\",\n md: \"size-6\",\n lg: \"size-8\",\n xl: \"size-10\",\n },\n variant: {\n ring: \"\",\n dots: \"\",\n pulse: \"\",\n bars: \"\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n variant: \"ring\",\n },\n});\n","\"use client\";\n\nimport { motion } from \"framer-motion\";\n\nimport { cn } from \"../../../lib/utils\";\n\nimport type { SpinnerProps } from \"./types\";\nimport { spinnerVariants } from \"./variants\";\n\nexport function Spinner(props: SpinnerProps) {\n const {\n className,\n appearance,\n size,\n variant = \"ring\",\n ref,\n \"aria-label\": ariaLabel = \"Loading\",\n ...rest\n } = props;\n const rootClass = cn(\n spinnerVariants({ appearance, size, variant }),\n className,\n );\n\n if (variant === \"ring\") {\n return (\n <motion.span\n ref={ref}\n role=\"status\"\n data-slot=\"spinner\"\n aria-label={ariaLabel}\n className={cn(rootClass, \"relative\")}\n initial={false}\n {...rest}\n >\n <motion.span\n className=\"block size-full rounded-full border-2 border-current border-t-transparent\"\n animate={{ rotate: 360 }}\n transition={{ repeat: Infinity, ease: \"linear\", duration: 0.85 }}\n aria-hidden\n />\n </motion.span>\n );\n }\n\n if (variant === \"dots\") {\n const dotSizes = {\n xs: \"size-1\",\n sm: \"size-1.5\",\n md: \"size-2\",\n lg: \"size-2.5\",\n xl: \"size-3\",\n };\n const dotSize = dotSizes[size as keyof typeof dotSizes];\n return (\n <motion.span\n ref={ref}\n role=\"status\"\n data-slot=\"spinner\"\n aria-label={ariaLabel}\n className={cn(rootClass, \"gap-1\")}\n initial={false}\n {...rest}\n >\n {[0, 1, 2].map((index) => (\n <motion.span\n key={index}\n className={cn(\"rounded-full bg-current\", dotSize)}\n animate={{ y: [0, -5, 0], opacity: [0.45, 1, 0.45] }}\n transition={{\n repeat: Infinity,\n duration: 0.55,\n ease: \"easeInOut\",\n delay: index * 0.12,\n }}\n aria-hidden\n />\n ))}\n </motion.span>\n );\n }\n\n if (variant === \"pulse\") {\n return (\n <motion.span\n ref={ref}\n role=\"status\"\n data-slot=\"spinner\"\n aria-label={ariaLabel}\n className={cn(rootClass)}\n initial={false}\n {...rest}\n >\n <motion.span\n className=\"block size-full rounded-full bg-current\"\n animate={{ scale: [0.75, 1, 0.75], opacity: [0.45, 1, 0.45] }}\n transition={{ repeat: Infinity, duration: 0.9, ease: \"easeInOut\" }}\n aria-hidden\n />\n </motion.span>\n );\n }\n\n const barWidths = {\n xs: \"w-0.5\",\n sm: \"w-0.5\",\n md: \"w-1\",\n lg: \"w-1.5\",\n xl: \"w-2\",\n };\n\n const barWidth =\n barWidths[size as keyof typeof barWidths];\n \n return (\n <motion.span\n ref={ref}\n role=\"status\"\n data-slot=\"spinner\"\n aria-label={ariaLabel}\n className={cn(rootClass, \"gap-1\")}\n initial={false}\n {...rest}\n >\n {[0, 1, 2, 3].map((index) => (\n <motion.span\n key={index}\n className={cn(\"h-full max-h-[70%] rounded-full bg-current\", barWidth)}\n animate={{ scaleY: [0.35, 1, 0.35] }}\n transition={{\n repeat: Infinity,\n duration: 0.65,\n ease: \"easeInOut\",\n delay: index * 0.1,\n }}\n aria-hidden\n />\n ))}\n </motion.span>\n );\n}\n\nSpinner.displayName = \"Spinner\";\n"]}
1
+ {"version":3,"sources":["../../../src/ui/spinner/animated/variants.ts","../../../src/ui/spinner/animated/spinner.tsx"],"names":["cva","cn","jsxs","motion","jsx"],"mappings":"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","file":"animated.js","sourcesContent":["import { cva } from \"class-variance-authority\";\n\nconst spinnerAppearances = {\n default: \"text-slate-50\",\n secondary: \"text-slate-300\",\n destructive: \"text-rose-400\",\n ghost: \"text-slate-300\",\n emerald: \"text-emerald-400\",\n indigo: \"text-indigo-400\",\n purple: \"text-purple-400\",\n pink: \"text-pink-400\",\n rose: \"text-rose-400\",\n sky: \"text-sky-400\",\n teal: \"text-teal-400\",\n yellow: \"text-yellow-400\",\n orange: \"text-orange-400\",\n \"gradient-blue\": \"text-blue-400\",\n \"gradient-green\": \"text-green-400\",\n \"gradient-red\": \"text-red-400\",\n \"gradient-yellow\": \"text-yellow-400\",\n \"gradient-purple\": \"text-purple-400\",\n \"gradient-teal\": \"text-teal-400\",\n \"gradient-indigo\": \"text-indigo-400\",\n \"gradient-pink\": \"text-pink-400\",\n \"gradient-orange\": \"text-orange-400\",\n} as const;\n\nexport const spinnerVariants = cva(\"inline-flex items-center justify-center\", {\n variants: {\n appearance: spinnerAppearances,\n size: {\n xs: \"size-3\",\n sm: \"size-4\",\n md: \"size-6\",\n lg: \"size-8\",\n xl: \"size-10\",\n },\n variant: {\n ring: \"\",\n dots: \"\",\n pulse: \"\",\n bars: \"\",\n },\n },\n defaultVariants: {\n appearance: \"default\",\n size: \"md\",\n variant: \"ring\",\n },\n});\n","\"use client\";\n\nimport { motion } from \"framer-motion\";\n\nimport { cn } from \"../../../lib/utils\";\n\nimport type { SpinnerProps } from \"./types\";\nimport { spinnerVariants } from \"./variants\";\n\nexport function Spinner(props: SpinnerProps) {\n const {\n className,\n appearance,\n size,\n variant = \"ring\",\n ref,\n \"aria-label\": ariaLabel = \"Loading\",\n ...rest\n } = props;\n const rootClass = cn(\n spinnerVariants({ appearance, size, variant }),\n className,\n );\n\n if (variant === \"ring\") {\n return (\n <motion.span\n ref={ref}\n role=\"status\"\n data-slot=\"spinner\"\n aria-label={ariaLabel}\n className={cn(rootClass, \"relative\")}\n initial={false}\n {...rest}\n >\n <span className=\"sr-only\">{ariaLabel}</span>\n <motion.span\n className=\"block size-full rounded-full border-2 border-current border-t-transparent\"\n animate={{ rotate: 360 }}\n transition={{ repeat: Infinity, ease: \"linear\", duration: 0.85 }}\n aria-hidden\n />\n </motion.span>\n );\n }\n\n if (variant === \"dots\") {\n const dotSizes = {\n xs: \"size-1\",\n sm: \"size-1.5\",\n md: \"size-2\",\n lg: \"size-2.5\",\n xl: \"size-3\",\n };\n const dotSize = dotSizes[size as keyof typeof dotSizes];\n return (\n <motion.span\n ref={ref}\n role=\"status\"\n data-slot=\"spinner\"\n aria-label={ariaLabel}\n className={cn(rootClass, \"gap-1\")}\n initial={false}\n {...rest}\n >\n <span className=\"sr-only\">{ariaLabel}</span>\n {[0, 1, 2].map((index) => (\n <motion.span\n key={index}\n className={cn(\"rounded-full bg-current\", dotSize)}\n animate={{ y: [0, -5, 0], opacity: [0.45, 1, 0.45] }}\n transition={{\n repeat: Infinity,\n duration: 0.55,\n ease: \"easeInOut\",\n delay: index * 0.12,\n }}\n aria-hidden\n />\n ))}\n </motion.span>\n );\n }\n\n if (variant === \"pulse\") {\n return (\n <motion.span\n ref={ref}\n role=\"status\"\n data-slot=\"spinner\"\n aria-label={ariaLabel}\n className={cn(rootClass)}\n initial={false}\n {...rest}\n >\n <span className=\"sr-only\">{ariaLabel}</span>\n <motion.span\n className=\"block size-full rounded-full bg-current\"\n animate={{ scale: [0.75, 1, 0.75], opacity: [0.45, 1, 0.45] }}\n transition={{ repeat: Infinity, duration: 0.9, ease: \"easeInOut\" }}\n aria-hidden\n />\n </motion.span>\n );\n }\n\n const barWidths = {\n xs: \"w-0.5\",\n sm: \"w-0.5\",\n md: \"w-1\",\n lg: \"w-1.5\",\n xl: \"w-2\",\n };\n\n const barWidth = barWidths[size as keyof typeof barWidths];\n\n return (\n <motion.span\n ref={ref}\n role=\"status\"\n data-slot=\"spinner\"\n aria-label={ariaLabel}\n className={cn(rootClass, \"gap-1\")}\n initial={false}\n {...rest}\n >\n <span className=\"sr-only\">{ariaLabel}</span>\n {[0, 1, 2, 3].map((index) => (\n <motion.span\n key={index}\n className={cn(\"h-full max-h-[70%] rounded-full bg-current\", barWidth)}\n animate={{ scaleY: [0.35, 1, 0.35] }}\n transition={{\n repeat: Infinity,\n duration: 0.65,\n ease: \"easeInOut\",\n delay: index * 0.1,\n }}\n aria-hidden\n />\n ))}\n </motion.span>\n );\n}\n\nSpinner.displayName = \"Spinner\";\n"]}