@zentauri-ui/zentauri-components 1.3.1 → 1.4.1

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 (736) hide show
  1. package/README.md +90 -0
  2. package/cli/cli.integration.test.ts +79 -0
  3. package/cli/index.mjs +718 -0
  4. package/cli/registry.json +63 -0
  5. package/cli/rewrite-imports.mjs +57 -0
  6. package/cli/rewrite-imports.test.ts +71 -0
  7. package/dist/ui/slider.js +21 -25
  8. package/dist/ui/slider.js.map +1 -1
  9. package/dist/ui/slider.mjs +21 -25
  10. package/dist/ui/slider.mjs.map +1 -1
  11. package/package.json +9 -3
  12. package/{dist/hooks/index.d.ts → src/hooks/index.ts} +28 -7
  13. package/{dist/hooks/useBodyScrollLock/index.d.ts → src/hooks/useBodyScrollLock/index.ts} +0 -1
  14. package/src/hooks/useBodyScrollLock/useBodyScrollLock.test.ts +51 -0
  15. package/src/hooks/useBodyScrollLock/useBodyScrollLock.ts +48 -0
  16. package/src/hooks/useClickOutside/index.ts +5 -0
  17. package/src/hooks/useClickOutside/useClickOutside.test.tsx +60 -0
  18. package/src/hooks/useClickOutside/useClickOutside.ts +52 -0
  19. package/{dist/hooks/useClipboard/index.d.ts → src/hooks/useClipboard/index.ts} +0 -1
  20. package/src/hooks/useClipboard/useClipboard.test.ts +101 -0
  21. package/src/hooks/useClipboard/useClipboard.ts +69 -0
  22. package/src/hooks/useControllableState/index.ts +4 -0
  23. package/src/hooks/useControllableState/useControllableState.test.ts +59 -0
  24. package/src/hooks/useControllableState/useControllableState.ts +49 -0
  25. package/{dist/hooks/useDebouncedValue/index.d.ts → src/hooks/useDebouncedValue/index.ts} +0 -1
  26. package/src/hooks/useDebouncedValue/useDebouncedValue.test.ts +74 -0
  27. package/{dist/hooks/useDebouncedValue/useDebouncedValue.d.ts → src/hooks/useDebouncedValue/useDebouncedValue.ts} +18 -2
  28. package/src/hooks/useDisclosure/index.ts +5 -0
  29. package/src/hooks/useDisclosure/useDisclosure.test.ts +64 -0
  30. package/src/hooks/useDisclosure/useDisclosure.ts +62 -0
  31. package/src/hooks/useDocumentTitle/index.ts +4 -0
  32. package/src/hooks/useDocumentTitle/useDocumentTitle.test.ts +40 -0
  33. package/src/hooks/useDocumentTitle/useDocumentTitle.ts +58 -0
  34. package/{dist/hooks/useFocusManagement/index.d.ts → src/hooks/useFocusManagement/index.ts} +0 -1
  35. package/src/hooks/useFocusManagement/useFocusManagement.test.tsx +45 -0
  36. package/src/hooks/useFocusManagement/useFocusManagement.ts +77 -0
  37. package/{dist/hooks/useHover/index.d.ts → src/hooks/useHover/index.ts} +0 -1
  38. package/src/hooks/useHover/useHover.test.ts +45 -0
  39. package/src/hooks/useHover/useHover.ts +45 -0
  40. package/{dist/hooks/useInView/index.d.ts → src/hooks/useInView/index.ts} +0 -1
  41. package/src/hooks/useInView/useInView.test.ts +43 -0
  42. package/{dist/hooks/useInView/useInView.d.ts → src/hooks/useInView/useInView.ts} +15 -4
  43. package/src/hooks/useIntersectionObserver/index.ts +4 -0
  44. package/src/hooks/useIntersectionObserver/useIntersectionObserver.test.ts +75 -0
  45. package/src/hooks/useIntersectionObserver/useIntersectionObserver.ts +54 -0
  46. package/{dist/hooks/useIsMounted/index.d.ts → src/hooks/useIsMounted/index.ts} +0 -1
  47. package/src/hooks/useIsMounted/useIsMounted.test.ts +25 -0
  48. package/{dist/hooks/useIsMounted/useIsMounted.d.ts → src/hooks/useIsMounted/useIsMounted.ts} +14 -2
  49. package/{dist/hooks/useIsomorphicLayoutEffect/index.d.ts → src/hooks/useIsomorphicLayoutEffect/index.ts} +0 -1
  50. package/src/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.test.ts +19 -0
  51. package/{dist/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.d.ts → src/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.ts} +6 -3
  52. package/src/hooks/useLocalStorage/index.ts +4 -0
  53. package/src/hooks/useLocalStorage/useLocalStorage.test.ts +99 -0
  54. package/src/hooks/useLocalStorage/useLocalStorage.ts +109 -0
  55. package/{dist/hooks/useMediaQuery/index.d.ts → src/hooks/useMediaQuery/index.ts} +0 -1
  56. package/src/hooks/useMediaQuery/useMediaQuery.test.ts +63 -0
  57. package/src/hooks/useMediaQuery/useMediaQuery.ts +37 -0
  58. package/{dist/hooks/useNetworkStatus/index.d.ts → src/hooks/useNetworkStatus/index.ts} +0 -1
  59. package/src/hooks/useNetworkStatus/useNetworkStatus.test.ts +53 -0
  60. package/src/hooks/useNetworkStatus/useNetworkStatus.ts +33 -0
  61. package/{dist/hooks/usePageVisibility/index.d.ts → src/hooks/usePageVisibility/index.ts} +0 -1
  62. package/src/hooks/usePageVisibility/usePageVisibility.test.ts +21 -0
  63. package/src/hooks/usePageVisibility/usePageVisibility.ts +31 -0
  64. package/src/hooks/usePagination/index.ts +6 -0
  65. package/src/hooks/usePagination/usePagination.test.ts +139 -0
  66. package/src/hooks/usePagination/usePagination.ts +153 -0
  67. package/src/hooks/usePrefersColorScheme/index.ts +4 -0
  68. package/src/hooks/usePrefersColorScheme/usePrefersColorScheme.test.ts +53 -0
  69. package/{dist/hooks/usePrefersColorScheme/usePrefersColorScheme.d.ts → src/hooks/usePrefersColorScheme/usePrefersColorScheme.ts} +14 -2
  70. package/{dist/hooks/usePrefersReducedMotion/index.d.ts → src/hooks/usePrefersReducedMotion/index.ts} +0 -1
  71. package/src/hooks/usePrefersReducedMotion/usePrefersReducedMotion.test.ts +27 -0
  72. package/{dist/hooks/usePrefersReducedMotion/usePrefersReducedMotion.d.ts → src/hooks/usePrefersReducedMotion/usePrefersReducedMotion.ts} +7 -2
  73. package/src/hooks/useResizeObserver/index.ts +4 -0
  74. package/src/hooks/useResizeObserver/useResizeObserver.test.ts +68 -0
  75. package/src/hooks/useResizeObserver/useResizeObserver.ts +58 -0
  76. package/src/hooks/useSessionStorage/index.ts +4 -0
  77. package/src/hooks/useSessionStorage/useSessionStorage.test.ts +54 -0
  78. package/src/hooks/useSessionStorage/useSessionStorage.ts +84 -0
  79. package/{dist/hooks/useThrottledCallback/index.d.ts → src/hooks/useThrottledCallback/index.ts} +0 -1
  80. package/src/hooks/useThrottledCallback/useThrottledCallback.test.ts +75 -0
  81. package/{dist/hooks/useThrottledCallback/useThrottledCallback.d.ts → src/hooks/useThrottledCallback/useThrottledCallback.ts} +25 -2
  82. package/{dist/hooks/useToggle/index.d.ts → src/hooks/useToggle/index.ts} +0 -1
  83. package/src/hooks/useToggle/useToggle.test.ts +40 -0
  84. package/src/hooks/useToggle/useToggle.ts +22 -0
  85. package/{dist/hooks/useWindowSize/index.d.ts → src/hooks/useWindowSize/index.ts} +0 -1
  86. package/src/hooks/useWindowSize/useWindowSize.test.ts +23 -0
  87. package/src/hooks/useWindowSize/useWindowSize.ts +39 -0
  88. package/src/lib/utils.ts +25 -0
  89. package/src/ui/accordion/accordion-base.tsx +223 -0
  90. package/src/ui/accordion/accordion.test.tsx +146 -0
  91. package/src/ui/accordion/accordion.tsx +11 -0
  92. package/src/ui/accordion/animated/accordion-content-animated.tsx +46 -0
  93. package/src/ui/accordion/animated/accordion-root-animated.tsx +10 -0
  94. package/src/ui/accordion/animated/animations.ts +16 -0
  95. package/{dist/ui/accordion/animated/index.d.ts → src/ui/accordion/animated/index.ts} +2 -1
  96. package/{dist/ui/accordion/animated/types.d.ts → src/ui/accordion/animated/types.ts} +4 -3
  97. package/src/ui/accordion/index.ts +23 -0
  98. package/{dist/ui/accordion/types.d.ts → src/ui/accordion/types.ts} +30 -21
  99. package/src/ui/accordion/variants.ts +115 -0
  100. package/src/ui/alert/alert-base.tsx +157 -0
  101. package/src/ui/alert/alert.test.tsx +150 -0
  102. package/src/ui/alert/alert.tsx +9 -0
  103. package/src/ui/alert/animated/alert-animated.tsx +20 -0
  104. package/src/ui/alert/animated/animations.ts +20 -0
  105. package/src/ui/alert/animated/index.ts +3 -0
  106. package/src/ui/alert/animated/types.ts +16 -0
  107. package/src/ui/alert/index.ts +22 -0
  108. package/{dist/ui/alert/types.d.ts → src/ui/alert/types.ts} +18 -11
  109. package/src/ui/alert/variants.ts +74 -0
  110. package/src/ui/avatar/animated/animations.ts +11 -0
  111. package/src/ui/avatar/animated/avatar-animated.tsx +25 -0
  112. package/{dist/ui/avatar/animated/index.d.ts → src/ui/avatar/animated/index.ts} +3 -2
  113. package/{dist/ui/avatar/animated/types.d.ts → src/ui/avatar/animated/types.ts} +11 -3
  114. package/src/ui/avatar/avatar-base.tsx +184 -0
  115. package/src/ui/avatar/avatar.test.tsx +51 -0
  116. package/src/ui/avatar/avatar.tsx +11 -0
  117. package/src/ui/avatar/index.ts +16 -0
  118. package/{dist/ui/avatar/types.d.ts → src/ui/avatar/types.ts} +22 -11
  119. package/src/ui/avatar/variants.ts +52 -0
  120. package/src/ui/badge/animated/animations.ts +20 -0
  121. package/src/ui/badge/animated/badge-animated.tsx +28 -0
  122. package/{dist/ui/badge/animated/index.d.ts → src/ui/badge/animated/index.ts} +3 -2
  123. package/src/ui/badge/animated/types.ts +18 -0
  124. package/src/ui/badge/badge-base.tsx +53 -0
  125. package/src/ui/badge/badge.test.tsx +48 -0
  126. package/src/ui/badge/badge.tsx +9 -0
  127. package/{dist/ui/badge/index.d.ts → src/ui/badge/index.ts} +2 -1
  128. package/src/ui/badge/types.ts +25 -0
  129. package/src/ui/badge/variants.ts +85 -0
  130. package/src/ui/breadcrumb/breadcrumb.test.tsx +62 -0
  131. package/src/ui/breadcrumb/breadcrumb.tsx +135 -0
  132. package/src/ui/breadcrumb/index.ts +28 -0
  133. package/{dist/ui/breadcrumb/types.d.ts → src/ui/breadcrumb/types.ts} +18 -15
  134. package/src/ui/breadcrumb/variants.ts +53 -0
  135. package/src/ui/buttons/animated/animations.ts +34 -0
  136. package/src/ui/buttons/animated/button-animated.tsx +70 -0
  137. package/{dist/ui/buttons/animated/index.d.ts → src/ui/buttons/animated/index.ts} +2 -1
  138. package/src/ui/buttons/animated/types.ts +29 -0
  139. package/src/ui/buttons/button-base.tsx +59 -0
  140. package/src/ui/buttons/button.test.tsx +480 -0
  141. package/src/ui/buttons/button.tsx +9 -0
  142. package/{dist/ui/buttons/index.d.ts → src/ui/buttons/index.ts} +2 -1
  143. package/{dist/ui/buttons/types.d.ts → src/ui/buttons/types.ts} +10 -6
  144. package/src/ui/buttons/variants.ts +77 -0
  145. package/src/ui/card/animated/animations.ts +32 -0
  146. package/src/ui/card/animated/card-animated.tsx +28 -0
  147. package/{dist/ui/card/animated/index.d.ts → src/ui/card/animated/index.ts} +9 -2
  148. package/{dist/ui/card/animated/types.d.ts → src/ui/card/animated/types.ts} +4 -2
  149. package/src/ui/card/card-base.tsx +146 -0
  150. package/src/ui/card/card.test.tsx +79 -0
  151. package/src/ui/card/card.tsx +11 -0
  152. package/src/ui/card/index.ts +21 -0
  153. package/src/ui/card/types.ts +42 -0
  154. package/src/ui/card/variants.ts +122 -0
  155. package/src/ui/divider/animated/animations.ts +27 -0
  156. package/src/ui/divider/animated/divider-animated.tsx +24 -0
  157. package/{dist/ui/divider/animated/index.d.ts → src/ui/divider/animated/index.ts} +2 -1
  158. package/{dist/ui/divider/animated/types.d.ts → src/ui/divider/animated/types.ts} +13 -3
  159. package/src/ui/divider/divider-base.tsx +80 -0
  160. package/src/ui/divider/divider.tsx +9 -0
  161. package/src/ui/divider/index.ts +14 -0
  162. package/{dist/ui/divider/types.d.ts → src/ui/divider/types.ts} +11 -8
  163. package/src/ui/divider/variants.ts +98 -0
  164. package/src/ui/drawer/animated/animations.ts +39 -0
  165. package/src/ui/drawer/animated/drawer-content-animated.tsx +101 -0
  166. package/{dist/ui/drawer/animated/index.d.ts → src/ui/drawer/animated/index.ts} +11 -2
  167. package/src/ui/drawer/animated/types.ts +18 -0
  168. package/src/ui/drawer/drawer-base.tsx +259 -0
  169. package/src/ui/drawer/drawer.test.tsx +132 -0
  170. package/src/ui/drawer/drawer.tsx +11 -0
  171. package/src/ui/drawer/index.ts +21 -0
  172. package/src/ui/drawer/types.ts +39 -0
  173. package/src/ui/drawer/variants.ts +122 -0
  174. package/src/ui/dropdown/dropdown.test.tsx +114 -0
  175. package/src/ui/dropdown/dropdown.tsx +179 -0
  176. package/src/ui/dropdown/index.ts +15 -0
  177. package/src/ui/dropdown/types.ts +68 -0
  178. package/src/ui/dropdown/variants.ts +138 -0
  179. package/src/ui/empty-state/animated/animations.ts +19 -0
  180. package/src/ui/empty-state/animated/empty-state-animated.tsx +23 -0
  181. package/src/ui/empty-state/animated/index.ts +7 -0
  182. package/{dist/ui/empty-state/animated/types.d.ts → src/ui/empty-state/animated/types.ts} +17 -5
  183. package/src/ui/empty-state/empty-state-base.tsx +114 -0
  184. package/src/ui/empty-state/empty-state.tsx +9 -0
  185. package/{dist/ui/empty-state/index.d.ts → src/ui/empty-state/index.ts} +7 -2
  186. package/{dist/ui/empty-state/types.d.ts → src/ui/empty-state/types.ts} +10 -6
  187. package/src/ui/empty-state/variants.ts +51 -0
  188. package/src/ui/file-upload/file-upload.test.tsx +36 -0
  189. package/src/ui/file-upload/file-upload.tsx +119 -0
  190. package/{dist/ui/file-upload/index.d.ts → src/ui/file-upload/index.ts} +2 -1
  191. package/{dist/ui/file-upload/types.d.ts → src/ui/file-upload/types.ts} +6 -3
  192. package/src/ui/file-upload/variants.ts +29 -0
  193. package/src/ui/inputs/animated/animations.ts +36 -0
  194. package/{dist/ui/inputs/animated/index.d.ts → src/ui/inputs/animated/index.ts} +2 -1
  195. package/src/ui/inputs/animated/input-animated.tsx +124 -0
  196. package/src/ui/inputs/animated/types.ts +40 -0
  197. package/{dist/ui/inputs/index.d.ts → src/ui/inputs/index.ts} +2 -1
  198. package/src/ui/inputs/input-base.tsx +114 -0
  199. package/src/ui/inputs/input.test.tsx +414 -0
  200. package/src/ui/inputs/input.tsx +8 -0
  201. package/src/ui/inputs/types.ts +18 -0
  202. package/src/ui/inputs/variants.ts +316 -0
  203. package/src/ui/modal/animated/animations.ts +29 -0
  204. package/{dist/ui/modal/animated/index.d.ts → src/ui/modal/animated/index.ts} +2 -1
  205. package/src/ui/modal/animated/modal-content-animated.tsx +96 -0
  206. package/src/ui/modal/animated/types.ts +23 -0
  207. package/src/ui/modal/index.ts +21 -0
  208. package/src/ui/modal/modal-base.tsx +279 -0
  209. package/src/ui/modal/modal.test.tsx +129 -0
  210. package/src/ui/modal/modal.tsx +8 -0
  211. package/src/ui/modal/types.ts +31 -0
  212. package/src/ui/modal/variants.ts +109 -0
  213. package/src/ui/pagination/index.ts +13 -0
  214. package/src/ui/pagination/pagination.test.tsx +165 -0
  215. package/src/ui/pagination/pagination.tsx +237 -0
  216. package/{dist/ui/pagination/types.d.ts → src/ui/pagination/types.ts} +37 -27
  217. package/src/ui/pagination/variants.ts +97 -0
  218. package/src/ui/progress/animated/animations.ts +9 -0
  219. package/src/ui/progress/animated/index.ts +17 -0
  220. package/src/ui/progress/animated/progress-animated.tsx +133 -0
  221. package/{dist/ui/progress/animated/types.d.ts → src/ui/progress/animated/types.ts} +20 -8
  222. package/{dist/ui/progress/index.d.ts → src/ui/progress/index.ts} +7 -2
  223. package/src/ui/progress/progress-base.tsx +151 -0
  224. package/src/ui/progress/progress.test.tsx +84 -0
  225. package/src/ui/progress/progress.tsx +12 -0
  226. package/src/ui/progress/types.ts +33 -0
  227. package/src/ui/progress/variants.ts +105 -0
  228. package/src/ui/select/index.ts +25 -0
  229. package/src/ui/select/select.test.tsx +128 -0
  230. package/src/ui/select/select.tsx +221 -0
  231. package/src/ui/select/types.ts +77 -0
  232. package/src/ui/select/variants.ts +163 -0
  233. package/src/ui/skeleton/animated/animations.ts +15 -0
  234. package/src/ui/skeleton/animated/index.ts +20 -0
  235. package/src/ui/skeleton/animated/skeleton-animated.tsx +119 -0
  236. package/{dist/ui/skeleton/animated/types.d.ts → src/ui/skeleton/animated/types.ts} +30 -11
  237. package/src/ui/skeleton/index.ts +24 -0
  238. package/src/ui/skeleton/skeleton-base.tsx +288 -0
  239. package/src/ui/skeleton/skeleton.tsx +8 -0
  240. package/{dist/ui/skeleton/types.d.ts → src/ui/skeleton/types.ts} +15 -7
  241. package/src/ui/skeleton/variants.ts +254 -0
  242. package/src/ui/slider/index.ts +22 -0
  243. package/src/ui/slider/slider.test.tsx +94 -0
  244. package/src/ui/slider/slider.tsx +728 -0
  245. package/src/ui/slider/types.ts +66 -0
  246. package/src/ui/slider/variants.ts +81 -0
  247. package/{dist/ui/spinner/animated/index.d.ts → src/ui/spinner/animated/index.ts} +2 -1
  248. package/src/ui/spinner/animated/spinner.test.tsx +41 -0
  249. package/src/ui/spinner/animated/spinner.tsx +143 -0
  250. package/{dist/ui/spinner/animated/types.d.ts → src/ui/spinner/animated/types.ts} +6 -4
  251. package/src/ui/spinner/animated/variants.ts +50 -0
  252. package/src/ui/stepper/index.ts +22 -0
  253. package/src/ui/stepper/stepper.test.tsx +183 -0
  254. package/src/ui/stepper/stepper.tsx +172 -0
  255. package/{dist/ui/stepper/types.d.ts → src/ui/stepper/types.ts} +18 -11
  256. package/src/ui/stepper/variants.ts +69 -0
  257. package/src/ui/table/animated/animations.ts +9 -0
  258. package/src/ui/table/animated/index.ts +15 -0
  259. package/src/ui/table/animated/table-animated.tsx +15 -0
  260. package/src/ui/table/animated/types.ts +16 -0
  261. package/src/ui/table/index.ts +22 -0
  262. package/src/ui/table/table-base.tsx +197 -0
  263. package/src/ui/table/table.tsx +13 -0
  264. package/src/ui/table/types.ts +47 -0
  265. package/src/ui/table/variants.ts +105 -0
  266. package/src/ui/tabs/animated/animations.ts +48 -0
  267. package/{dist/ui/tabs/animated/index.d.ts → src/ui/tabs/animated/index.ts} +6 -2
  268. package/src/ui/tabs/animated/tabs-content-animated.tsx +46 -0
  269. package/src/ui/tabs/animated/types.ts +24 -0
  270. package/{dist/ui/tabs/index.d.ts → src/ui/tabs/index.ts} +8 -2
  271. package/src/ui/tabs/tabs-base.tsx +185 -0
  272. package/src/ui/tabs/tabs.test.tsx +53 -0
  273. package/{dist/ui/tabs/tabs.d.ts → src/ui/tabs/tabs.tsx} +1 -1
  274. package/src/ui/tabs/types.ts +88 -0
  275. package/src/ui/tabs/variants.ts +70 -0
  276. package/src/ui/toast/animated/animations.ts +17 -0
  277. package/src/ui/toast/animated/index.ts +9 -0
  278. package/src/ui/toast/animated/toast-animated.tsx +96 -0
  279. package/src/ui/toast/animated/types.ts +13 -0
  280. package/src/ui/toast/index.ts +26 -0
  281. package/src/ui/toast/toast-base.tsx +231 -0
  282. package/src/ui/toast/toast.test.tsx +102 -0
  283. package/src/ui/toast/toast.tsx +13 -0
  284. package/{dist/ui/toast/types.d.ts → src/ui/toast/types.ts} +35 -23
  285. package/src/ui/toast/variants.ts +73 -0
  286. package/src/ui/toggle/animated/animations.ts +9 -0
  287. package/src/ui/toggle/animated/index.ts +7 -0
  288. package/src/ui/toggle/animated/toggle-animated.tsx +76 -0
  289. package/{dist/ui/toggle/animated/types.d.ts → src/ui/toggle/animated/types.ts} +6 -2
  290. package/{dist/ui/toggle/index.d.ts → src/ui/toggle/index.ts} +2 -1
  291. package/src/ui/toggle/toggle-base.tsx +70 -0
  292. package/src/ui/toggle/toggle.test.tsx +44 -0
  293. package/src/ui/toggle/toggle.tsx +9 -0
  294. package/{dist/ui/toggle/types.d.ts → src/ui/toggle/types.ts} +7 -3
  295. package/src/ui/toggle/variants.ts +84 -0
  296. package/src/ui/tooltip/animated/animations.ts +16 -0
  297. package/src/ui/tooltip/animated/index.ts +10 -0
  298. package/src/ui/tooltip/animated/tooltip-content-animated.tsx +47 -0
  299. package/src/ui/tooltip/animated/types.ts +19 -0
  300. package/src/ui/tooltip/index.ts +17 -0
  301. package/src/ui/tooltip/tooltip-base.tsx +152 -0
  302. package/src/ui/tooltip/tooltip.test.tsx +84 -0
  303. package/src/ui/tooltip/tooltip.tsx +8 -0
  304. package/src/ui/tooltip/types.ts +57 -0
  305. package/src/ui/tooltip/variants.ts +61 -0
  306. package/dist/hooks/index.d.ts.map +0 -1
  307. package/dist/hooks/useBodyScrollLock/index.d.ts.map +0 -1
  308. package/dist/hooks/useBodyScrollLock/useBodyScrollLock.d.ts +0 -13
  309. package/dist/hooks/useBodyScrollLock/useBodyScrollLock.d.ts.map +0 -1
  310. package/dist/hooks/useClickOutside/index.d.ts +0 -2
  311. package/dist/hooks/useClickOutside/index.d.ts.map +0 -1
  312. package/dist/hooks/useClickOutside/useClickOutside.d.ts +0 -22
  313. package/dist/hooks/useClickOutside/useClickOutside.d.ts.map +0 -1
  314. package/dist/hooks/useClipboard/index.d.ts.map +0 -1
  315. package/dist/hooks/useClipboard/useClipboard.d.ts +0 -21
  316. package/dist/hooks/useClipboard/useClipboard.d.ts.map +0 -1
  317. package/dist/hooks/useControllableState/index.d.ts +0 -2
  318. package/dist/hooks/useControllableState/index.d.ts.map +0 -1
  319. package/dist/hooks/useControllableState/useControllableState.d.ts +0 -21
  320. package/dist/hooks/useControllableState/useControllableState.d.ts.map +0 -1
  321. package/dist/hooks/useDebouncedValue/index.d.ts.map +0 -1
  322. package/dist/hooks/useDebouncedValue/useDebouncedValue.d.ts.map +0 -1
  323. package/dist/hooks/useDisclosure/index.d.ts +0 -2
  324. package/dist/hooks/useDisclosure/index.d.ts.map +0 -1
  325. package/dist/hooks/useDisclosure/useDisclosure.d.ts +0 -24
  326. package/dist/hooks/useDisclosure/useDisclosure.d.ts.map +0 -1
  327. package/dist/hooks/useDocumentTitle/index.d.ts +0 -2
  328. package/dist/hooks/useDocumentTitle/index.d.ts.map +0 -1
  329. package/dist/hooks/useDocumentTitle/useDocumentTitle.d.ts +0 -18
  330. package/dist/hooks/useDocumentTitle/useDocumentTitle.d.ts.map +0 -1
  331. package/dist/hooks/useFocusManagement/index.d.ts.map +0 -1
  332. package/dist/hooks/useFocusManagement/useFocusManagement.d.ts +0 -22
  333. package/dist/hooks/useFocusManagement/useFocusManagement.d.ts.map +0 -1
  334. package/dist/hooks/useHover/index.d.ts.map +0 -1
  335. package/dist/hooks/useHover/useHover.d.ts +0 -13
  336. package/dist/hooks/useHover/useHover.d.ts.map +0 -1
  337. package/dist/hooks/useInView/index.d.ts.map +0 -1
  338. package/dist/hooks/useInView/useInView.d.ts.map +0 -1
  339. package/dist/hooks/useIntersectionObserver/index.d.ts +0 -2
  340. package/dist/hooks/useIntersectionObserver/index.d.ts.map +0 -1
  341. package/dist/hooks/useIntersectionObserver/useIntersectionObserver.d.ts +0 -17
  342. package/dist/hooks/useIntersectionObserver/useIntersectionObserver.d.ts.map +0 -1
  343. package/dist/hooks/useIsMounted/index.d.ts.map +0 -1
  344. package/dist/hooks/useIsMounted/useIsMounted.d.ts.map +0 -1
  345. package/dist/hooks/useIsomorphicLayoutEffect/index.d.ts.map +0 -1
  346. package/dist/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.d.ts.map +0 -1
  347. package/dist/hooks/useLocalStorage/index.d.ts +0 -2
  348. package/dist/hooks/useLocalStorage/index.d.ts.map +0 -1
  349. package/dist/hooks/useLocalStorage/useLocalStorage.d.ts +0 -21
  350. package/dist/hooks/useLocalStorage/useLocalStorage.d.ts.map +0 -1
  351. package/dist/hooks/useMediaQuery/index.d.ts.map +0 -1
  352. package/dist/hooks/useMediaQuery/useMediaQuery.d.ts +0 -12
  353. package/dist/hooks/useMediaQuery/useMediaQuery.d.ts.map +0 -1
  354. package/dist/hooks/useNetworkStatus/index.d.ts.map +0 -1
  355. package/dist/hooks/useNetworkStatus/useNetworkStatus.d.ts +0 -9
  356. package/dist/hooks/useNetworkStatus/useNetworkStatus.d.ts.map +0 -1
  357. package/dist/hooks/usePageVisibility/index.d.ts.map +0 -1
  358. package/dist/hooks/usePageVisibility/usePageVisibility.d.ts +0 -9
  359. package/dist/hooks/usePageVisibility/usePageVisibility.d.ts.map +0 -1
  360. package/dist/hooks/usePagination/index.d.ts +0 -2
  361. package/dist/hooks/usePagination/index.d.ts.map +0 -1
  362. package/dist/hooks/usePagination/usePagination.d.ts +0 -30
  363. package/dist/hooks/usePagination/usePagination.d.ts.map +0 -1
  364. package/dist/hooks/usePrefersColorScheme/index.d.ts +0 -2
  365. package/dist/hooks/usePrefersColorScheme/index.d.ts.map +0 -1
  366. package/dist/hooks/usePrefersColorScheme/usePrefersColorScheme.d.ts.map +0 -1
  367. package/dist/hooks/usePrefersReducedMotion/index.d.ts.map +0 -1
  368. package/dist/hooks/usePrefersReducedMotion/usePrefersReducedMotion.d.ts.map +0 -1
  369. package/dist/hooks/useResizeObserver/index.d.ts +0 -2
  370. package/dist/hooks/useResizeObserver/index.d.ts.map +0 -1
  371. package/dist/hooks/useResizeObserver/useResizeObserver.d.ts +0 -21
  372. package/dist/hooks/useResizeObserver/useResizeObserver.d.ts.map +0 -1
  373. package/dist/hooks/useSessionStorage/index.d.ts +0 -2
  374. package/dist/hooks/useSessionStorage/index.d.ts.map +0 -1
  375. package/dist/hooks/useSessionStorage/useSessionStorage.d.ts +0 -21
  376. package/dist/hooks/useSessionStorage/useSessionStorage.d.ts.map +0 -1
  377. package/dist/hooks/useThrottledCallback/index.d.ts.map +0 -1
  378. package/dist/hooks/useThrottledCallback/useThrottledCallback.d.ts.map +0 -1
  379. package/dist/hooks/useToggle/index.d.ts.map +0 -1
  380. package/dist/hooks/useToggle/useToggle.d.ts +0 -8
  381. package/dist/hooks/useToggle/useToggle.d.ts.map +0 -1
  382. package/dist/hooks/useWindowSize/index.d.ts.map +0 -1
  383. package/dist/hooks/useWindowSize/useWindowSize.d.ts +0 -13
  384. package/dist/hooks/useWindowSize/useWindowSize.d.ts.map +0 -1
  385. package/dist/lib/utils.d.ts +0 -6
  386. package/dist/lib/utils.d.ts.map +0 -1
  387. package/dist/ui/accordion/accordion-base.d.ts +0 -20
  388. package/dist/ui/accordion/accordion-base.d.ts.map +0 -1
  389. package/dist/ui/accordion/accordion.d.ts +0 -8
  390. package/dist/ui/accordion/accordion.d.ts.map +0 -1
  391. package/dist/ui/accordion/animated/accordion-content-animated.d.ts +0 -6
  392. package/dist/ui/accordion/animated/accordion-content-animated.d.ts.map +0 -1
  393. package/dist/ui/accordion/animated/accordion-root-animated.d.ts +0 -6
  394. package/dist/ui/accordion/animated/accordion-root-animated.d.ts.map +0 -1
  395. package/dist/ui/accordion/animated/animations.d.ts +0 -6
  396. package/dist/ui/accordion/animated/animations.d.ts.map +0 -1
  397. package/dist/ui/accordion/animated/index.d.ts.map +0 -1
  398. package/dist/ui/accordion/animated/types.d.ts.map +0 -1
  399. package/dist/ui/accordion/index.d.ts +0 -5
  400. package/dist/ui/accordion/index.d.ts.map +0 -1
  401. package/dist/ui/accordion/types.d.ts.map +0 -1
  402. package/dist/ui/accordion/variants.d.ts +0 -14
  403. package/dist/ui/accordion/variants.d.ts.map +0 -1
  404. package/dist/ui/alert/alert-base.d.ts +0 -28
  405. package/dist/ui/alert/alert-base.d.ts.map +0 -1
  406. package/dist/ui/alert/alert.d.ts +0 -6
  407. package/dist/ui/alert/alert.d.ts.map +0 -1
  408. package/dist/ui/alert/animated/alert-animated.d.ts +0 -3
  409. package/dist/ui/alert/animated/alert-animated.d.ts.map +0 -1
  410. package/dist/ui/alert/animated/animations.d.ts +0 -3
  411. package/dist/ui/alert/animated/animations.d.ts.map +0 -1
  412. package/dist/ui/alert/animated/index.d.ts +0 -4
  413. package/dist/ui/alert/animated/index.d.ts.map +0 -1
  414. package/dist/ui/alert/animated/types.d.ts +0 -8
  415. package/dist/ui/alert/animated/types.d.ts.map +0 -1
  416. package/dist/ui/alert/index.d.ts +0 -5
  417. package/dist/ui/alert/index.d.ts.map +0 -1
  418. package/dist/ui/alert/types.d.ts.map +0 -1
  419. package/dist/ui/alert/variants.d.ts +0 -11
  420. package/dist/ui/alert/variants.d.ts.map +0 -1
  421. package/dist/ui/avatar/animated/animations.d.ts +0 -3
  422. package/dist/ui/avatar/animated/animations.d.ts.map +0 -1
  423. package/dist/ui/avatar/animated/avatar-animated.d.ts +0 -6
  424. package/dist/ui/avatar/animated/avatar-animated.d.ts.map +0 -1
  425. package/dist/ui/avatar/animated/index.d.ts.map +0 -1
  426. package/dist/ui/avatar/animated/types.d.ts.map +0 -1
  427. package/dist/ui/avatar/avatar-base.d.ts +0 -25
  428. package/dist/ui/avatar/avatar-base.d.ts.map +0 -1
  429. package/dist/ui/avatar/avatar.d.ts +0 -8
  430. package/dist/ui/avatar/avatar.d.ts.map +0 -1
  431. package/dist/ui/avatar/index.d.ts +0 -5
  432. package/dist/ui/avatar/index.d.ts.map +0 -1
  433. package/dist/ui/avatar/types.d.ts.map +0 -1
  434. package/dist/ui/avatar/variants.d.ts +0 -8
  435. package/dist/ui/avatar/variants.d.ts.map +0 -1
  436. package/dist/ui/badge/animated/animations.d.ts +0 -3
  437. package/dist/ui/badge/animated/animations.d.ts.map +0 -1
  438. package/dist/ui/badge/animated/badge-animated.d.ts +0 -6
  439. package/dist/ui/badge/animated/badge-animated.d.ts.map +0 -1
  440. package/dist/ui/badge/animated/index.d.ts.map +0 -1
  441. package/dist/ui/badge/animated/types.d.ts +0 -10
  442. package/dist/ui/badge/animated/types.d.ts.map +0 -1
  443. package/dist/ui/badge/badge-base.d.ts +0 -6
  444. package/dist/ui/badge/badge-base.d.ts.map +0 -1
  445. package/dist/ui/badge/badge.d.ts +0 -6
  446. package/dist/ui/badge/badge.d.ts.map +0 -1
  447. package/dist/ui/badge/index.d.ts.map +0 -1
  448. package/dist/ui/badge/types.d.ts +0 -17
  449. package/dist/ui/badge/types.d.ts.map +0 -1
  450. package/dist/ui/badge/variants.d.ts +0 -40
  451. package/dist/ui/badge/variants.d.ts.map +0 -1
  452. package/dist/ui/breadcrumb/breadcrumb.d.ts +0 -33
  453. package/dist/ui/breadcrumb/breadcrumb.d.ts.map +0 -1
  454. package/dist/ui/breadcrumb/index.d.ts +0 -4
  455. package/dist/ui/breadcrumb/index.d.ts.map +0 -1
  456. package/dist/ui/breadcrumb/types.d.ts.map +0 -1
  457. package/dist/ui/breadcrumb/variants.d.ts +0 -11
  458. package/dist/ui/breadcrumb/variants.d.ts.map +0 -1
  459. package/dist/ui/buttons/animated/animations.d.ts +0 -3
  460. package/dist/ui/buttons/animated/animations.d.ts.map +0 -1
  461. package/dist/ui/buttons/animated/button-animated.d.ts +0 -6
  462. package/dist/ui/buttons/animated/button-animated.d.ts.map +0 -1
  463. package/dist/ui/buttons/animated/index.d.ts.map +0 -1
  464. package/dist/ui/buttons/animated/types.d.ts +0 -16
  465. package/dist/ui/buttons/animated/types.d.ts.map +0 -1
  466. package/dist/ui/buttons/button-base.d.ts +0 -6
  467. package/dist/ui/buttons/button-base.d.ts.map +0 -1
  468. package/dist/ui/buttons/button.d.ts +0 -6
  469. package/dist/ui/buttons/button.d.ts.map +0 -1
  470. package/dist/ui/buttons/index.d.ts.map +0 -1
  471. package/dist/ui/buttons/types.d.ts.map +0 -1
  472. package/dist/ui/buttons/variants.d.ts +0 -5
  473. package/dist/ui/buttons/variants.d.ts.map +0 -1
  474. package/dist/ui/card/animated/animations.d.ts +0 -7
  475. package/dist/ui/card/animated/animations.d.ts.map +0 -1
  476. package/dist/ui/card/animated/card-animated.d.ts +0 -6
  477. package/dist/ui/card/animated/card-animated.d.ts.map +0 -1
  478. package/dist/ui/card/animated/index.d.ts.map +0 -1
  479. package/dist/ui/card/animated/types.d.ts.map +0 -1
  480. package/dist/ui/card/card-base.d.ts +0 -26
  481. package/dist/ui/card/card-base.d.ts.map +0 -1
  482. package/dist/ui/card/card.d.ts +0 -6
  483. package/dist/ui/card/card.d.ts.map +0 -1
  484. package/dist/ui/card/index.d.ts +0 -5
  485. package/dist/ui/card/index.d.ts.map +0 -1
  486. package/dist/ui/card/types.d.ts +0 -29
  487. package/dist/ui/card/types.d.ts.map +0 -1
  488. package/dist/ui/card/variants.d.ts +0 -18
  489. package/dist/ui/card/variants.d.ts.map +0 -1
  490. package/dist/ui/divider/animated/animations.d.ts +0 -6
  491. package/dist/ui/divider/animated/animations.d.ts.map +0 -1
  492. package/dist/ui/divider/animated/divider-animated.d.ts +0 -6
  493. package/dist/ui/divider/animated/divider-animated.d.ts.map +0 -1
  494. package/dist/ui/divider/animated/index.d.ts.map +0 -1
  495. package/dist/ui/divider/animated/types.d.ts.map +0 -1
  496. package/dist/ui/divider/divider-base.d.ts +0 -6
  497. package/dist/ui/divider/divider-base.d.ts.map +0 -1
  498. package/dist/ui/divider/divider.d.ts +0 -6
  499. package/dist/ui/divider/divider.d.ts.map +0 -1
  500. package/dist/ui/divider/index.d.ts +0 -4
  501. package/dist/ui/divider/index.d.ts.map +0 -1
  502. package/dist/ui/divider/types.d.ts.map +0 -1
  503. package/dist/ui/divider/variants.d.ts +0 -14
  504. package/dist/ui/divider/variants.d.ts.map +0 -1
  505. package/dist/ui/drawer/animated/animations.d.ts +0 -3
  506. package/dist/ui/drawer/animated/animations.d.ts.map +0 -1
  507. package/dist/ui/drawer/animated/drawer-content-animated.d.ts +0 -6
  508. package/dist/ui/drawer/animated/drawer-content-animated.d.ts.map +0 -1
  509. package/dist/ui/drawer/animated/index.d.ts.map +0 -1
  510. package/dist/ui/drawer/animated/types.d.ts +0 -9
  511. package/dist/ui/drawer/animated/types.d.ts.map +0 -1
  512. package/dist/ui/drawer/drawer-base.d.ts +0 -35
  513. package/dist/ui/drawer/drawer-base.d.ts.map +0 -1
  514. package/dist/ui/drawer/drawer.d.ts +0 -2
  515. package/dist/ui/drawer/drawer.d.ts.map +0 -1
  516. package/dist/ui/drawer/index.d.ts +0 -4
  517. package/dist/ui/drawer/index.d.ts.map +0 -1
  518. package/dist/ui/drawer/types.d.ts +0 -33
  519. package/dist/ui/drawer/types.d.ts.map +0 -1
  520. package/dist/ui/drawer/variants.d.ts +0 -10
  521. package/dist/ui/drawer/variants.d.ts.map +0 -1
  522. package/dist/ui/dropdown/dropdown.d.ts +0 -6
  523. package/dist/ui/dropdown/dropdown.d.ts.map +0 -1
  524. package/dist/ui/dropdown/index.d.ts +0 -4
  525. package/dist/ui/dropdown/index.d.ts.map +0 -1
  526. package/dist/ui/dropdown/types.d.ts +0 -38
  527. package/dist/ui/dropdown/types.d.ts.map +0 -1
  528. package/dist/ui/dropdown/variants.d.ts +0 -12
  529. package/dist/ui/dropdown/variants.d.ts.map +0 -1
  530. package/dist/ui/empty-state/animated/animations.d.ts +0 -3
  531. package/dist/ui/empty-state/animated/animations.d.ts.map +0 -1
  532. package/dist/ui/empty-state/animated/empty-state-animated.d.ts +0 -6
  533. package/dist/ui/empty-state/animated/empty-state-animated.d.ts.map +0 -1
  534. package/dist/ui/empty-state/animated/index.d.ts +0 -4
  535. package/dist/ui/empty-state/animated/index.d.ts.map +0 -1
  536. package/dist/ui/empty-state/animated/types.d.ts.map +0 -1
  537. package/dist/ui/empty-state/empty-state-base.d.ts +0 -23
  538. package/dist/ui/empty-state/empty-state-base.d.ts.map +0 -1
  539. package/dist/ui/empty-state/empty-state.d.ts +0 -6
  540. package/dist/ui/empty-state/empty-state.d.ts.map +0 -1
  541. package/dist/ui/empty-state/index.d.ts.map +0 -1
  542. package/dist/ui/empty-state/types.d.ts.map +0 -1
  543. package/dist/ui/empty-state/variants.d.ts +0 -12
  544. package/dist/ui/empty-state/variants.d.ts.map +0 -1
  545. package/dist/ui/file-upload/file-upload.d.ts +0 -8
  546. package/dist/ui/file-upload/file-upload.d.ts.map +0 -1
  547. package/dist/ui/file-upload/index.d.ts.map +0 -1
  548. package/dist/ui/file-upload/types.d.ts.map +0 -1
  549. package/dist/ui/file-upload/variants.d.ts +0 -4
  550. package/dist/ui/file-upload/variants.d.ts.map +0 -1
  551. package/dist/ui/inputs/animated/animations.d.ts +0 -3
  552. package/dist/ui/inputs/animated/animations.d.ts.map +0 -1
  553. package/dist/ui/inputs/animated/index.d.ts.map +0 -1
  554. package/dist/ui/inputs/animated/input-animated.d.ts +0 -6
  555. package/dist/ui/inputs/animated/input-animated.d.ts.map +0 -1
  556. package/dist/ui/inputs/animated/types.d.ts +0 -16
  557. package/dist/ui/inputs/animated/types.d.ts.map +0 -1
  558. package/dist/ui/inputs/index.d.ts.map +0 -1
  559. package/dist/ui/inputs/input-base.d.ts +0 -6
  560. package/dist/ui/inputs/input-base.d.ts.map +0 -1
  561. package/dist/ui/inputs/input.d.ts +0 -6
  562. package/dist/ui/inputs/input.d.ts.map +0 -1
  563. package/dist/ui/inputs/types.d.ts +0 -12
  564. package/dist/ui/inputs/types.d.ts.map +0 -1
  565. package/dist/ui/inputs/variants.d.ts +0 -7
  566. package/dist/ui/inputs/variants.d.ts.map +0 -1
  567. package/dist/ui/modal/animated/animations.d.ts +0 -3
  568. package/dist/ui/modal/animated/animations.d.ts.map +0 -1
  569. package/dist/ui/modal/animated/index.d.ts.map +0 -1
  570. package/dist/ui/modal/animated/modal-content-animated.d.ts +0 -6
  571. package/dist/ui/modal/animated/modal-content-animated.d.ts.map +0 -1
  572. package/dist/ui/modal/animated/types.d.ts +0 -9
  573. package/dist/ui/modal/animated/types.d.ts.map +0 -1
  574. package/dist/ui/modal/index.d.ts +0 -5
  575. package/dist/ui/modal/index.d.ts.map +0 -1
  576. package/dist/ui/modal/modal-base.d.ts +0 -47
  577. package/dist/ui/modal/modal-base.d.ts.map +0 -1
  578. package/dist/ui/modal/modal.d.ts +0 -6
  579. package/dist/ui/modal/modal.d.ts.map +0 -1
  580. package/dist/ui/modal/types.d.ts +0 -26
  581. package/dist/ui/modal/types.d.ts.map +0 -1
  582. package/dist/ui/modal/variants.d.ts +0 -10
  583. package/dist/ui/modal/variants.d.ts.map +0 -1
  584. package/dist/ui/pagination/index.d.ts +0 -5
  585. package/dist/ui/pagination/index.d.ts.map +0 -1
  586. package/dist/ui/pagination/pagination.d.ts +0 -17
  587. package/dist/ui/pagination/pagination.d.ts.map +0 -1
  588. package/dist/ui/pagination/types.d.ts.map +0 -1
  589. package/dist/ui/pagination/variants.d.ts +0 -12
  590. package/dist/ui/pagination/variants.d.ts.map +0 -1
  591. package/dist/ui/progress/animated/animations.d.ts +0 -3
  592. package/dist/ui/progress/animated/animations.d.ts.map +0 -1
  593. package/dist/ui/progress/animated/index.d.ts +0 -4
  594. package/dist/ui/progress/animated/index.d.ts.map +0 -1
  595. package/dist/ui/progress/animated/progress-animated.d.ts +0 -16
  596. package/dist/ui/progress/animated/progress-animated.d.ts.map +0 -1
  597. package/dist/ui/progress/animated/types.d.ts.map +0 -1
  598. package/dist/ui/progress/index.d.ts.map +0 -1
  599. package/dist/ui/progress/progress-base.d.ts +0 -23
  600. package/dist/ui/progress/progress-base.d.ts.map +0 -1
  601. package/dist/ui/progress/progress.d.ts +0 -6
  602. package/dist/ui/progress/progress.d.ts.map +0 -1
  603. package/dist/ui/progress/types.d.ts +0 -28
  604. package/dist/ui/progress/types.d.ts.map +0 -1
  605. package/dist/ui/progress/variants.d.ts +0 -15
  606. package/dist/ui/progress/variants.d.ts.map +0 -1
  607. package/dist/ui/select/index.d.ts +0 -4
  608. package/dist/ui/select/index.d.ts.map +0 -1
  609. package/dist/ui/select/select.d.ts +0 -10
  610. package/dist/ui/select/select.d.ts.map +0 -1
  611. package/dist/ui/select/types.d.ts +0 -48
  612. package/dist/ui/select/types.d.ts.map +0 -1
  613. package/dist/ui/select/variants.d.ts +0 -14
  614. package/dist/ui/select/variants.d.ts.map +0 -1
  615. package/dist/ui/skeleton/animated/animations.d.ts +0 -3
  616. package/dist/ui/skeleton/animated/animations.d.ts.map +0 -1
  617. package/dist/ui/skeleton/animated/index.d.ts +0 -4
  618. package/dist/ui/skeleton/animated/index.d.ts.map +0 -1
  619. package/dist/ui/skeleton/animated/skeleton-animated.d.ts +0 -22
  620. package/dist/ui/skeleton/animated/skeleton-animated.d.ts.map +0 -1
  621. package/dist/ui/skeleton/animated/types.d.ts.map +0 -1
  622. package/dist/ui/skeleton/index.d.ts +0 -5
  623. package/dist/ui/skeleton/index.d.ts.map +0 -1
  624. package/dist/ui/skeleton/skeleton-base.d.ts +0 -24
  625. package/dist/ui/skeleton/skeleton-base.d.ts.map +0 -1
  626. package/dist/ui/skeleton/skeleton.d.ts +0 -2
  627. package/dist/ui/skeleton/skeleton.d.ts.map +0 -1
  628. package/dist/ui/skeleton/types.d.ts.map +0 -1
  629. package/dist/ui/skeleton/variants.d.ts +0 -38
  630. package/dist/ui/skeleton/variants.d.ts.map +0 -1
  631. package/dist/ui/slider/index.d.ts +0 -4
  632. package/dist/ui/slider/index.d.ts.map +0 -1
  633. package/dist/ui/slider/slider.d.ts +0 -33
  634. package/dist/ui/slider/slider.d.ts.map +0 -1
  635. package/dist/ui/slider/types.d.ts +0 -49
  636. package/dist/ui/slider/types.d.ts.map +0 -1
  637. package/dist/ui/slider/variants.d.ts +0 -13
  638. package/dist/ui/slider/variants.d.ts.map +0 -1
  639. package/dist/ui/spinner/animated/index.d.ts.map +0 -1
  640. package/dist/ui/spinner/animated/spinner.d.ts +0 -6
  641. package/dist/ui/spinner/animated/spinner.d.ts.map +0 -1
  642. package/dist/ui/spinner/animated/types.d.ts.map +0 -1
  643. package/dist/ui/spinner/animated/variants.d.ts +0 -6
  644. package/dist/ui/spinner/animated/variants.d.ts.map +0 -1
  645. package/dist/ui/stepper/index.d.ts +0 -4
  646. package/dist/ui/stepper/index.d.ts.map +0 -1
  647. package/dist/ui/stepper/stepper.d.ts +0 -33
  648. package/dist/ui/stepper/stepper.d.ts.map +0 -1
  649. package/dist/ui/stepper/types.d.ts.map +0 -1
  650. package/dist/ui/stepper/variants.d.ts +0 -11
  651. package/dist/ui/stepper/variants.d.ts.map +0 -1
  652. package/dist/ui/table/animated/animations.d.ts +0 -3
  653. package/dist/ui/table/animated/animations.d.ts.map +0 -1
  654. package/dist/ui/table/animated/index.d.ts +0 -5
  655. package/dist/ui/table/animated/index.d.ts.map +0 -1
  656. package/dist/ui/table/animated/table-animated.d.ts +0 -5
  657. package/dist/ui/table/animated/table-animated.d.ts.map +0 -1
  658. package/dist/ui/table/animated/types.d.ts +0 -8
  659. package/dist/ui/table/animated/types.d.ts.map +0 -1
  660. package/dist/ui/table/index.d.ts +0 -4
  661. package/dist/ui/table/index.d.ts.map +0 -1
  662. package/dist/ui/table/table-base.d.ts +0 -38
  663. package/dist/ui/table/table-base.d.ts.map +0 -1
  664. package/dist/ui/table/table.d.ts +0 -2
  665. package/dist/ui/table/table.d.ts.map +0 -1
  666. package/dist/ui/table/types.d.ts +0 -33
  667. package/dist/ui/table/types.d.ts.map +0 -1
  668. package/dist/ui/table/variants.d.ts +0 -14
  669. package/dist/ui/table/variants.d.ts.map +0 -1
  670. package/dist/ui/tabs/animated/animations.d.ts +0 -5
  671. package/dist/ui/tabs/animated/animations.d.ts.map +0 -1
  672. package/dist/ui/tabs/animated/index.d.ts.map +0 -1
  673. package/dist/ui/tabs/animated/tabs-content-animated.d.ts +0 -6
  674. package/dist/ui/tabs/animated/tabs-content-animated.d.ts.map +0 -1
  675. package/dist/ui/tabs/animated/types.d.ts +0 -14
  676. package/dist/ui/tabs/animated/types.d.ts.map +0 -1
  677. package/dist/ui/tabs/index.d.ts.map +0 -1
  678. package/dist/ui/tabs/tabs-base.d.ts +0 -8
  679. package/dist/ui/tabs/tabs-base.d.ts.map +0 -1
  680. package/dist/ui/tabs/tabs.d.ts.map +0 -1
  681. package/dist/ui/tabs/types.d.ts +0 -40
  682. package/dist/ui/tabs/types.d.ts.map +0 -1
  683. package/dist/ui/tabs/variants.d.ts +0 -11
  684. package/dist/ui/tabs/variants.d.ts.map +0 -1
  685. package/dist/ui/toast/animated/animations.d.ts +0 -3
  686. package/dist/ui/toast/animated/animations.d.ts.map +0 -1
  687. package/dist/ui/toast/animated/index.d.ts +0 -4
  688. package/dist/ui/toast/animated/index.d.ts.map +0 -1
  689. package/dist/ui/toast/animated/toast-animated.d.ts +0 -10
  690. package/dist/ui/toast/animated/toast-animated.d.ts.map +0 -1
  691. package/dist/ui/toast/animated/types.d.ts +0 -5
  692. package/dist/ui/toast/animated/types.d.ts.map +0 -1
  693. package/dist/ui/toast/index.d.ts +0 -4
  694. package/dist/ui/toast/index.d.ts.map +0 -1
  695. package/dist/ui/toast/toast-base.d.ts +0 -35
  696. package/dist/ui/toast/toast-base.d.ts.map +0 -1
  697. package/dist/ui/toast/toast.d.ts +0 -2
  698. package/dist/ui/toast/toast.d.ts.map +0 -1
  699. package/dist/ui/toast/types.d.ts.map +0 -1
  700. package/dist/ui/toast/variants.d.ts +0 -8
  701. package/dist/ui/toast/variants.d.ts.map +0 -1
  702. package/dist/ui/toggle/animated/animations.d.ts +0 -3
  703. package/dist/ui/toggle/animated/animations.d.ts.map +0 -1
  704. package/dist/ui/toggle/animated/index.d.ts +0 -4
  705. package/dist/ui/toggle/animated/index.d.ts.map +0 -1
  706. package/dist/ui/toggle/animated/toggle-animated.d.ts +0 -6
  707. package/dist/ui/toggle/animated/toggle-animated.d.ts.map +0 -1
  708. package/dist/ui/toggle/animated/types.d.ts.map +0 -1
  709. package/dist/ui/toggle/index.d.ts.map +0 -1
  710. package/dist/ui/toggle/toggle-base.d.ts +0 -6
  711. package/dist/ui/toggle/toggle-base.d.ts.map +0 -1
  712. package/dist/ui/toggle/toggle.d.ts +0 -6
  713. package/dist/ui/toggle/toggle.d.ts.map +0 -1
  714. package/dist/ui/toggle/types.d.ts.map +0 -1
  715. package/dist/ui/toggle/variants.d.ts +0 -8
  716. package/dist/ui/toggle/variants.d.ts.map +0 -1
  717. package/dist/ui/tooltip/animated/animations.d.ts +0 -3
  718. package/dist/ui/tooltip/animated/animations.d.ts.map +0 -1
  719. package/dist/ui/tooltip/animated/index.d.ts +0 -4
  720. package/dist/ui/tooltip/animated/index.d.ts.map +0 -1
  721. package/dist/ui/tooltip/animated/tooltip-content-animated.d.ts +0 -3
  722. package/dist/ui/tooltip/animated/tooltip-content-animated.d.ts.map +0 -1
  723. package/dist/ui/tooltip/animated/types.d.ts +0 -9
  724. package/dist/ui/tooltip/animated/types.d.ts.map +0 -1
  725. package/dist/ui/tooltip/index.d.ts +0 -4
  726. package/dist/ui/tooltip/index.d.ts.map +0 -1
  727. package/dist/ui/tooltip/tooltip-base.d.ts +0 -7
  728. package/dist/ui/tooltip/tooltip-base.d.ts.map +0 -1
  729. package/dist/ui/tooltip/tooltip.d.ts +0 -2
  730. package/dist/ui/tooltip/tooltip.d.ts.map +0 -1
  731. package/dist/ui/tooltip/types.d.ts +0 -30
  732. package/dist/ui/tooltip/types.d.ts.map +0 -1
  733. package/dist/ui/tooltip/variants.d.ts +0 -6
  734. package/dist/ui/tooltip/variants.d.ts.map +0 -1
  735. package/dist/vitest-setup.d.ts +0 -2
  736. package/dist/vitest-setup.d.ts.map +0 -1
@@ -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\nfunction clamp(value: number, min: number, max: number) {\n return Math.min(max, Math.max(min, value));\n}\n\nfunction 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\nfunction 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\nfunction computeValueFromPointer(\n clientX: number,\n track: HTMLDivElement,\n min: number,\n max: number,\n step: number,\n) {\n const rect = track.getBoundingClientRect();\n const ratio = rect.width === 0 ? 0 : (clientX - rect.left) / rect.width;\n const raw = min + ratio * (max - min);\n return snapToStep(clamp(raw, min, max), min, step);\n}\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 const [uncontrolled, setUncontrolled] = useState(\n defaultValue ?? min,\n );\n const value = isControlled ? (valueProp as number) : uncontrolled;\n\n const setValue = useCallback(\n (next: number) => {\n const clamped = clamp(snapToStep(next, min, step), min, max);\n if (!isControlled) {\n setUncontrolled(clamped);\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 value: clamp(snapToStep(value, min, step), min, max),\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\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\nexport function SliderRange({\n className,\n ref,\n ...rest\n}: SliderRangeProps & { ref?: Ref<HTMLDivElement> }) {\n const { min, max, value, appearance } = useSliderContext(\"SliderRange\");\n const pct = max === min ? 0 : ((value - min) / (max - min)) * 100;\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\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 const pct = max === min ? 0 : ((value - min) / (max - min)) * 100;\n\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 event.currentTarget.setPointerCapture(event.pointerId);\n const move = (e: PointerEvent) => {\n setValue(computeValueFromPointer(e.clientX, track, min, max, step));\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, max, min, setValue, step, trackRef],\n );\n\n const onKeyDown = useCallback(\n (event: ReactKeyboardEvent<HTMLDivElement>) => {\n if (disabled) {\n return;\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 setValue(min);\n return;\n } else if (event.key === \"End\") {\n event.preventDefault();\n setValue(max);\n return;\n } else {\n return;\n }\n event.preventDefault();\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\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 const lo = clamp(snapToStep(seed[0], min, step), min, max);\n const hi = clamp(snapToStep(seed[1], min, step), min, max);\n return lo <= hi ? [lo, hi] : [hi, lo];\n });\n\n const value = isControlled ? (valueProp as [number, number]) : uncontrolled;\n const [lo, hi] =\n value[0] <= value[1]\n ? [value[0], value[1]]\n : [value[1], value[0]];\n\n const setPair = useCallback(\n (next: [number, number]) => {\n const a = clamp(snapToStep(next[0], min, step), min, max);\n const b = clamp(snapToStep(next[1], min, step), min, max);\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) {\n return;\n }\n const raw = computeValueFromPointer(clientX, track, min, max, step);\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 const loPct = max === min ? 0 : ((lo - min) / (max - min)) * 100;\n const hiPct = max === min ? 0 : ((hi - min) / (max - min)) * 100;\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 onMoveClientX: (clientX: number) => void;\n onNudge: (delta: number) => void;\n};\n\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 event.currentTarget.setPointerCapture(event.pointerId);\n const move = (e: PointerEvent) => {\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 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-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"]}
package/package.json CHANGED
@@ -1,10 +1,14 @@
1
1
  {
2
2
  "name": "@zentauri-ui/zentauri-components",
3
- "version": "1.3.1",
4
- "description": "A UI component library built with React and Tailwind CSS",
3
+ "version": "1.4.1",
4
+ "description": "React + Tailwind UI kit with ESM/CJS builds, per-entry exports, and a zentauri-components / zentauri-ui CLI to vendor UI or hook source into your app",
5
5
  "license": "MIT",
6
- "files": ["dist"],
6
+ "files": ["dist", "src/ui", "src/lib", "src/hooks", "cli"],
7
7
  "sideEffects": false,
8
+ "bin": {
9
+ "zentauri-components": "cli/index.mjs",
10
+ "zentauri-ui": "cli/index.mjs"
11
+ },
8
12
  "publishConfig": {
9
13
  "access": "public"
10
14
  },
@@ -35,6 +39,8 @@
35
39
  "build:js": "NODE_OPTIONS=--max-old-space-size=8192 tsup",
36
40
  "build:types": "tsc -p tsconfig.emit-types.json",
37
41
  "build": "pnpm run build:js && pnpm run build:types",
42
+ "generate:registry": "node scripts/generate-registry.mjs",
43
+ "prepack": "node scripts/generate-registry.mjs",
38
44
  "test": "vitest run",
39
45
  "test:watch": "vitest"
40
46
  },
@@ -1,27 +1,48 @@
1
1
  export { cn, clampPage, range } from "../lib/utils";
2
2
  export { useBodyScrollLock } from "./useBodyScrollLock";
3
- export { useClickOutside, type ClickOutsideEventType, type UseClickOutsideParams, } from "./useClickOutside";
3
+ export {
4
+ useClickOutside,
5
+ type ClickOutsideEventType,
6
+ type UseClickOutsideParams,
7
+ } from "./useClickOutside";
4
8
  export { useFocusManagement } from "./useFocusManagement";
5
- export { buildPaginationItems, usePagination, type BuildPaginationItemsParams, type PaginationPageItem, } from "./usePagination";
9
+ export {
10
+ buildPaginationItems,
11
+ usePagination,
12
+ type BuildPaginationItemsParams,
13
+ type PaginationPageItem,
14
+ } from "./usePagination";
6
15
  export { useClipboard, type UseClipboardResult } from "./useClipboard";
7
- export { useControllableState, type UseControllableStateParams, } from "./useControllableState";
16
+ export {
17
+ useControllableState,
18
+ type UseControllableStateParams,
19
+ } from "./useControllableState";
8
20
  export { useDebouncedValue } from "./useDebouncedValue";
9
- export { useDisclosure, type UseDisclosureParams, type UseDisclosureResult, } from "./useDisclosure";
21
+ export {
22
+ useDisclosure,
23
+ type UseDisclosureParams,
24
+ type UseDisclosureResult,
25
+ } from "./useDisclosure";
10
26
  export { useDocumentTitle, type UseDocumentTitleParams } from "./useDocumentTitle";
11
27
  export { useHover } from "./useHover";
12
28
  export { useInView, type UseInViewParams } from "./useInView";
13
- export { useIntersectionObserver, type UseIntersectionObserverParams, } from "./useIntersectionObserver";
29
+ export {
30
+ useIntersectionObserver,
31
+ type UseIntersectionObserverParams,
32
+ } from "./useIntersectionObserver";
14
33
  export { useIsomorphicLayoutEffect } from "./useIsomorphicLayoutEffect";
15
34
  export { useIsMounted } from "./useIsMounted";
16
35
  export { useLocalStorage, type UseLocalStorageResult } from "./useLocalStorage";
17
36
  export { useMediaQuery } from "./useMediaQuery";
18
37
  export { useNetworkStatus } from "./useNetworkStatus";
19
38
  export { usePageVisibility } from "./usePageVisibility";
20
- export { usePrefersColorScheme, type ColorSchemePreference, } from "./usePrefersColorScheme";
39
+ export {
40
+ usePrefersColorScheme,
41
+ type ColorSchemePreference,
42
+ } from "./usePrefersColorScheme";
21
43
  export { usePrefersReducedMotion } from "./usePrefersReducedMotion";
22
44
  export { useResizeObserver, type ElementSize } from "./useResizeObserver";
23
45
  export { useSessionStorage, type UseSessionStorageResult } from "./useSessionStorage";
24
46
  export { useThrottledCallback } from "./useThrottledCallback";
25
47
  export { useToggle } from "./useToggle";
26
48
  export { useWindowSize, type WindowSize } from "./useWindowSize";
27
- //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1 @@
1
1
  export { useBodyScrollLock } from "./useBodyScrollLock";
2
- //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,51 @@
1
+ import { act, renderHook } from "@testing-library/react";
2
+ import { afterEach, describe, expect, it } from "vitest";
3
+
4
+ import { useBodyScrollLock } from "./useBodyScrollLock";
5
+
6
+ describe("useBodyScrollLock", () => {
7
+ afterEach(() => {
8
+ document.body.style.overflow = "";
9
+ });
10
+
11
+ it("should not change overflow when locked is false", () => {
12
+ document.body.style.overflow = "auto";
13
+ const { unmount } = renderHook(() => useBodyScrollLock(false));
14
+ expect(document.body.style.overflow).toBe("auto");
15
+ unmount();
16
+ });
17
+
18
+ it("should set overflow hidden while locked and restore on unmount", () => {
19
+ document.body.style.overflow = "scroll";
20
+ const { unmount } = renderHook(() => useBodyScrollLock(true));
21
+ expect(document.body.style.overflow).toBe("hidden");
22
+ unmount();
23
+ expect(document.body.style.overflow).toBe("scroll");
24
+ });
25
+
26
+ it("should ref-count nested locks and restore only after last release", () => {
27
+ document.body.style.overflow = "";
28
+ const first = renderHook(() => useBodyScrollLock(true));
29
+ expect(document.body.style.overflow).toBe("hidden");
30
+ const second = renderHook(() => useBodyScrollLock(true));
31
+ expect(document.body.style.overflow).toBe("hidden");
32
+ first.unmount();
33
+ expect(document.body.style.overflow).toBe("hidden");
34
+ second.unmount();
35
+ expect(document.body.style.overflow).toBe("");
36
+ });
37
+
38
+ it("should release lock when locked toggles from true to false", () => {
39
+ document.body.style.overflow = "visible";
40
+ const { rerender, unmount } = renderHook(
41
+ ({ locked }: { locked: boolean }) => useBodyScrollLock(locked),
42
+ { initialProps: { locked: true } },
43
+ );
44
+ expect(document.body.style.overflow).toBe("hidden");
45
+ act(() => {
46
+ rerender({ locked: false });
47
+ });
48
+ expect(document.body.style.overflow).toBe("visible");
49
+ unmount();
50
+ });
51
+ });
@@ -0,0 +1,48 @@
1
+ "use client";
2
+
3
+ import { useEffect } from "react";
4
+
5
+ let activeLockCount = 0;
6
+ let storedOverflow: string | undefined;
7
+
8
+ const acquireBodyScrollLock = () => {
9
+ if (activeLockCount === 0) {
10
+ storedOverflow = document.body.style.overflow;
11
+ document.body.style.overflow = "hidden";
12
+ }
13
+ activeLockCount += 1;
14
+ };
15
+
16
+ const releaseBodyScrollLock = () => {
17
+ if (activeLockCount <= 0) {
18
+ return;
19
+ }
20
+ activeLockCount -= 1;
21
+ if (activeLockCount === 0) {
22
+ document.body.style.overflow = storedOverflow ?? "";
23
+ storedOverflow = undefined;
24
+ }
25
+ };
26
+
27
+ /**
28
+ * Locks the document body scroll while `locked` is true by setting `document.body.style.overflow`
29
+ * to `"hidden"`. Uses a module-level lock count so multiple concurrent callers (nested modals,
30
+ * drawer + modal, several hook instances) only restore the original inline `overflow` after the
31
+ * last lock releases.
32
+ *
33
+ * Typical use: modals, drawers, and full-screen overlays where background content must not scroll.
34
+ *
35
+ * @param locked - When `true`, body scroll is hidden; when `false`, this instance releases its
36
+ * lock; the prior overflow is restored only when no instance still holds a lock.
37
+ */
38
+ export const useBodyScrollLock = (locked: boolean) => {
39
+ useEffect(() => {
40
+ if (!locked) {
41
+ return;
42
+ }
43
+ acquireBodyScrollLock();
44
+ return () => {
45
+ releaseBodyScrollLock();
46
+ };
47
+ }, [locked]);
48
+ };
@@ -0,0 +1,5 @@
1
+ export {
2
+ useClickOutside,
3
+ type ClickOutsideEventType,
4
+ type UseClickOutsideParams,
5
+ } from "./useClickOutside";
@@ -0,0 +1,60 @@
1
+ import { createRef } from "react";
2
+ import { fireEvent, render, screen } from "@testing-library/react";
3
+ import { describe, expect, it, vi } from "vitest";
4
+
5
+ import { useClickOutside } from "./useClickOutside";
6
+
7
+ describe("useClickOutside", () => {
8
+ it("should call setOpen false on mousedown outside ref", () => {
9
+ const setOpen = vi.fn();
10
+ const ref = createRef<HTMLDivElement>();
11
+ function Single() {
12
+ useClickOutside({ ref, setOpen });
13
+ return <div ref={ref} data-testid="inside" />;
14
+ }
15
+ render(
16
+ <div>
17
+ <Single />
18
+ <span data-testid="outside">x</span>
19
+ </div>,
20
+ );
21
+ fireEvent.mouseDown(screen.getByTestId("outside"));
22
+ expect(setOpen).toHaveBeenCalledWith(false);
23
+ });
24
+
25
+ it("should not call setOpen when mousedown is inside ref", () => {
26
+ const setOpen = vi.fn();
27
+ const ref = createRef<HTMLDivElement>();
28
+ function Single() {
29
+ useClickOutside({ ref, setOpen });
30
+ return <div ref={ref} data-testid="inside" />;
31
+ }
32
+ render(<Single />);
33
+ fireEvent.mouseDown(screen.getByTestId("inside"));
34
+ expect(setOpen).not.toHaveBeenCalled();
35
+ });
36
+
37
+ it("should register multiple event types when listenEvents provided", () => {
38
+ const setOpen = vi.fn();
39
+ const ref = createRef<HTMLDivElement>();
40
+ function Multi() {
41
+ useClickOutside({
42
+ ref,
43
+ setOpen,
44
+ listenEvents: ["pointerdown", "touchstart"],
45
+ });
46
+ return <div ref={ref} data-testid="inside" />;
47
+ }
48
+ render(
49
+ <div>
50
+ <Multi />
51
+ <span data-testid="outside">x</span>
52
+ </div>,
53
+ );
54
+ fireEvent.pointerDown(screen.getByTestId("outside"));
55
+ expect(setOpen).toHaveBeenCalledTimes(1);
56
+ setOpen.mockClear();
57
+ fireEvent.touchStart(screen.getByTestId("outside"));
58
+ expect(setOpen).toHaveBeenCalledTimes(1);
59
+ });
60
+ });
@@ -0,0 +1,52 @@
1
+ "use client";
2
+
3
+ import type { RefObject } from "react";
4
+ import { Dispatch, SetStateAction, useEffect } from "react";
5
+
6
+ /** DOM events that can represent an “outside” press for closing overlays. */
7
+ export type ClickOutsideEventType =
8
+ | "mousedown"
9
+ | "pointerdown"
10
+ | "touchstart";
11
+
12
+ export type UseClickOutsideParams = {
13
+ /** Called with `false` when a qualifying event target is outside `ref.current`. */
14
+ setOpen: (open: boolean) => void | Dispatch<SetStateAction<boolean>>;
15
+ /** Root element of the floating UI; clicks inside this node do not close. */
16
+ ref: RefObject<HTMLElement | null>;
17
+ /** Defaults to `["mousedown"]` for backward compatibility */
18
+ listenEvents?: ClickOutsideEventType[];
19
+ };
20
+
21
+ /**
22
+ * Registers document-level listeners so that when the user activates outside of `ref`, `setOpen(false)`
23
+ * runs. Useful for dropdowns, popovers, and menus paired with `open` state.
24
+ *
25
+ * @param params.setOpen - State setter or callback that closes the surface.
26
+ * @param params.ref - Container ref; outside is determined with `contains()` on the event target.
27
+ * @param params.listenEvents - Which events to listen for; default is `mousedown` only.
28
+ */
29
+ export const useClickOutside = ({
30
+ setOpen,
31
+ ref,
32
+ listenEvents,
33
+ }: UseClickOutsideParams) => {
34
+ useEffect(() => {
35
+ const events =
36
+ listenEvents && listenEvents.length > 0 ? listenEvents : ["mousedown"];
37
+ const handleClickOutside = (event: Event) => {
38
+ if (ref.current && !ref.current.contains(event.target as Node)) {
39
+ setOpen(false);
40
+ }
41
+ };
42
+
43
+ for (const eventName of events) {
44
+ document.addEventListener(eventName, handleClickOutside);
45
+ }
46
+ return () => {
47
+ for (const eventName of events) {
48
+ document.removeEventListener(eventName, handleClickOutside);
49
+ }
50
+ };
51
+ }, [listenEvents, ref, setOpen]);
52
+ };
@@ -1,2 +1 @@
1
1
  export { useClipboard, type UseClipboardResult } from "./useClipboard";
2
- //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,101 @@
1
+ import { act, renderHook } from "@testing-library/react";
2
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
3
+
4
+ import { useClipboard } from "./useClipboard";
5
+
6
+ describe("useClipboard", () => {
7
+ const originalClipboard = navigator.clipboard;
8
+
9
+ beforeEach(() => {
10
+ Object.defineProperty(navigator, "clipboard", {
11
+ configurable: true,
12
+ writable: true,
13
+ value: { writeText: vi.fn().mockResolvedValue(undefined) },
14
+ });
15
+ });
16
+
17
+ afterEach(() => {
18
+ Object.defineProperty(navigator, "clipboard", {
19
+ configurable: true,
20
+ writable: true,
21
+ value: originalClipboard,
22
+ });
23
+ vi.useRealTimers();
24
+ });
25
+
26
+ it("should copy text and set copied true", async () => {
27
+ const { result } = renderHook(() => useClipboard(0));
28
+ await act(async () => {
29
+ const ok = await result.current.copy("hello");
30
+ expect(ok).toBe(true);
31
+ });
32
+ expect(result.current.copied).toBe(true);
33
+ expect(result.current.error).toBeUndefined();
34
+ expect(navigator.clipboard.writeText).toHaveBeenCalledWith("hello");
35
+ });
36
+
37
+ it("should clear copied after resetDelay with fake timers", async () => {
38
+ vi.useFakeTimers();
39
+ const { result } = renderHook(() => useClipboard(1000));
40
+ await act(async () => {
41
+ await result.current.copy("x");
42
+ });
43
+ expect(result.current.copied).toBe(true);
44
+ act(() => {
45
+ vi.advanceTimersByTime(1000);
46
+ });
47
+ expect(result.current.copied).toBe(false);
48
+ });
49
+
50
+ it("should keep copied true when resetDelay is 0", async () => {
51
+ const { result } = renderHook(() => useClipboard(0));
52
+ await act(async () => {
53
+ await result.current.copy("y");
54
+ });
55
+ expect(result.current.copied).toBe(true);
56
+ });
57
+
58
+ it("should set error when clipboard API is missing", async () => {
59
+ Object.defineProperty(navigator, "clipboard", {
60
+ configurable: true,
61
+ writable: true,
62
+ value: undefined,
63
+ });
64
+ const { result } = renderHook(() => useClipboard());
65
+ await act(async () => {
66
+ const ok = await result.current.copy("z");
67
+ expect(ok).toBe(false);
68
+ });
69
+ expect(result.current.error?.message).toBe("Clipboard API is not available");
70
+ expect(result.current.copied).toBe(false);
71
+ });
72
+
73
+ it("should set error when writeText rejects", async () => {
74
+ vi.mocked(navigator.clipboard.writeText).mockRejectedValueOnce(
75
+ new Error("denied"),
76
+ );
77
+ const { result } = renderHook(() => useClipboard());
78
+ await act(async () => {
79
+ const ok = await result.current.copy("a");
80
+ expect(ok).toBe(false);
81
+ });
82
+ expect(result.current.error?.message).toBe("denied");
83
+ });
84
+
85
+ it("should reset copied error and pending timeout", async () => {
86
+ vi.useFakeTimers();
87
+ const { result } = renderHook(() => useClipboard(5000));
88
+ await act(async () => {
89
+ await result.current.copy("b");
90
+ });
91
+ act(() => {
92
+ result.current.reset();
93
+ });
94
+ expect(result.current.copied).toBe(false);
95
+ expect(result.current.error).toBeUndefined();
96
+ act(() => {
97
+ vi.advanceTimersByTime(5000);
98
+ });
99
+ expect(result.current.copied).toBe(false);
100
+ });
101
+ });