@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
package/cli/index.mjs ADDED
@@ -0,0 +1,718 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * @file Zentauri UI Components CLI — `zentauri-components` / `zentauri-ui`
4
+ *
5
+ * ## Purpose
6
+ *
7
+ * This executable copies **selected** UI component source from the
8
+ * `@zentauri-ui/zentauri-components` package into a consumer app’s tree, so you own the files, paths are configurable, and
9
+ * imports are rewritten to match your `components.json` aliases.
10
+ *
11
+ * ## How it fits together
12
+ *
13
+ * ```
14
+ * [Your app repo]
15
+ * │
16
+ * ├── components.json ← `init` creates this; `add` reads it
17
+ * └── src/...
18
+ *
19
+ * [This package @ packages/components]
20
+ * ├── cli/index.mjs ← this file (entry when run via bin)
21
+ * ├── cli/registry.json ← list of installable component folder names
22
+ * └── src/ui/<name>/ ← source copied by `add`
23
+ * └── src/hooks/<name>/ ← hooks pulled in as dependencies
24
+ * └── src/lib/utils.ts ← template for `cn()` etc. if missing in app
25
+ * ```
26
+ *
27
+ * - **packageRoot**: directory of the published `components` package (parent of
28
+ * `cli/`). Used to read `registry.json`, `src/ui`, `src/hooks`, `src/lib`.
29
+ * - **configDir**: directory containing `components.json` (may differ from
30
+ * `--cwd` when the config is found by walking up from `cwd`).
31
+ *
32
+ * ## Commands (see also `printHelp()`)
33
+ *
34
+ * | Command | Role |
35
+ * |-----------|------|
36
+ * | `init` | Writes `components.json` with default `aliases` + `resolvedPaths` if none exists. |
37
+ * | `add` … | Resolves names via registry, copies UI folders, discovers hooks, copies hook transitive closure, ensures `utils` file. |
38
+ * | `--help` | Prints usage text. |
39
+ * | `--version` | Prints `version` from this package’s `package.json`. |
40
+ *
41
+ * ## Example sessions (terminal)
42
+ *
43
+ * ```bash
44
+ * # From your Next.js app root (after init once):
45
+ * npx zentauri-components init
46
+ * ```
47
+ *
48
+ * Example stdout:
49
+ * ```
50
+ * Wrote /path/to/your-app/components.json
51
+ * ```
52
+ *
53
+ * ```bash
54
+ * npx zentauri-components add button
55
+ * ```
56
+ *
57
+ * Example stdout (paths depend on your `resolvedPaths`):
58
+ * ```
59
+ * Created src/lib/utils.ts
60
+ * Adding button…
61
+ * Adding hook useMediaQuery…
62
+ * Done.
63
+ * ```
64
+ *
65
+ * ```bash
66
+ * npx zentauri-components add accordion buttons inputs
67
+ * ```
68
+ *
69
+ * Multiple components in one run: each line `Adding <name>…`, then hooks, then `Done.`
70
+ *
71
+ * ## Import rewriting
72
+ *
73
+ * TypeScript/JSX files are passed through `rewrite-imports.mjs` so internal
74
+ * package paths become the consumer’s `@/…` (or whatever you set in
75
+ * `components.json`). Non-code assets are copied byte-for-byte.
76
+ *
77
+ * ## Exit codes
78
+ *
79
+ * - Sets `process.exitCode = 1` on validation errors, missing config, unknown
80
+ * command, or refused `init` overwrite. Successful runs leave default exit 0.
81
+ */
82
+
83
+ import { existsSync, readFileSync } from "node:fs";
84
+ import {
85
+ readFile,
86
+ writeFile,
87
+ mkdir,
88
+ copyFile,
89
+ readdir,
90
+ } from "node:fs/promises";
91
+ import { dirname, join, relative } from "node:path";
92
+ import { fileURLToPath } from "node:url";
93
+ import { parseArgs } from "node:util";
94
+
95
+ import {
96
+ extractSiblingHookImports,
97
+ rewriteImports,
98
+ } from "./rewrite-imports.mjs";
99
+
100
+ /** Directory containing this script (`…/packages/components/cli`). */
101
+ const __dirname = dirname(fileURLToPath(import.meta.url));
102
+
103
+ /**
104
+ * Root of the components package (`…/packages/components`), i.e. parent of `cli/`.
105
+ * All reads from `src/ui`, `src/hooks`, `registry.json`, and `package.json` are
106
+ * relative to this path — not the consumer’s project root.
107
+ */
108
+ const packageRoot = join(__dirname, "..");
109
+
110
+ /**
111
+ * Loads the static registry of component folder names and optional aliases.
112
+ *
113
+ * @returns {object} Parsed `cli/registry.json` — expect at least
114
+ * `{ components: string[], nameAliases?: Record<string, string> }`.
115
+ *
116
+ * @example
117
+ * // registry.json (conceptual)
118
+ * // { "components": ["buttons", "inputs"], "nameAliases": { "btn": "buttons" } }
119
+ */
120
+ function loadRegistry() {
121
+ const path = join(packageRoot, "cli", "registry.json");
122
+ return JSON.parse(readFileSync(path, "utf8"));
123
+ }
124
+
125
+ /**
126
+ * Prints human-readable help to **stdout** (not stderr), for `-h` / `--help`.
127
+ * Side effect only; no return value.
128
+ *
129
+ * @example
130
+ * // User runs: zentauri-components --help
131
+ * // Terminal shows multi-line Usage / Options / examples (see string below).
132
+ */
133
+ function printHelp() {
134
+ console.log(`Zentauri UI — copy component source into your app (shadcn-style)
135
+
136
+ Usage:
137
+ zentauri-components init [options] Create components.json with defaults
138
+ zentauri-components add <component> [...] Copy UI components (and their hooks)
139
+ zentauri-components add hook <hook> [...] Copy hook source only (plus transitive hook deps)
140
+
141
+ List of components:
142
+ ${registry.components.join("\n")}
143
+
144
+ List of hooks:
145
+ ${registry.hooks.join("\n")}
146
+
147
+ (The zentauri-ui binary name works the same if your PATH exposes it.)
148
+
149
+ Options:
150
+ --cwd <dir> Working directory (default: process.cwd())
151
+ -h, --help Show help
152
+ -v, --version Show package version
153
+
154
+ Local (no npm publish): cd to your app root, then run Node with a path to this CLI (yours may differ):
155
+ node ../../packages/components/cli/index.mjs init
156
+ node ../../packages/components/cli/index.mjs add button
157
+ node ../../packages/components/cli/index.mjs add hook useWindowSize
158
+ Only copies the requested trees; not the whole monorepo.
159
+
160
+ Use hooks from the package without copying (after npm install):
161
+ import { useWindowSize } from "@zentauri-ui/zentauri-components/hooks/useWindowSize";
162
+
163
+ Published package:
164
+ npx @zentauri-ui/zentauri-components init
165
+ npx @zentauri-ui/zentauri-components add accordion buttons inputs
166
+
167
+ If npx does not pick the right binary:
168
+ npx --yes --package=@zentauri-ui/zentauri-components zentauri-components init
169
+ npx --yes --package=@zentauri-ui/zentauri-components zentauri-ui init
170
+ `);
171
+ }
172
+
173
+ /**
174
+ * Whether a path segment should be skipped when copying into a consumer app.
175
+ * Test files are not shipped so apps do not inherit package test suites.
176
+ *
177
+ * @param {string} name — file name or relative path (e.g. `Button.test.tsx`)
178
+ * @returns {boolean}
179
+ *
180
+ * @example
181
+ * isTestFile("Button.spec.tsx"); // true
182
+ * @example
183
+ * isTestFile("index.ts"); // false
184
+ * @example
185
+ * isTestFile("foo.test.utils.ts"); // true (substring ".test.")
186
+ */
187
+ function isTestFile(name) {
188
+ return /\.(?:test|spec)\.(?:tsx?|jsx?)$/.test(name) || name.includes(".test.");
189
+ }
190
+
191
+ /**
192
+ * Recursively lists every **file** path under `dir` (directories are traversed,
193
+ * not included in the result).
194
+ *
195
+ * @param {string} dir — absolute path to a directory under the package
196
+ * @returns {Promise<string[]>} — flat list of absolute file paths
197
+ *
198
+ * @example
199
+ * // Given src/ui/buttons/index.ts and src/ui/buttons/Button.tsx
200
+ * // await walkFiles("/pkg/src/ui/buttons")
201
+ * // => ["/pkg/src/ui/buttons/Button.tsx", "/pkg/src/ui/buttons/index.ts"]
202
+ * // (order depends on filesystem; not sorted)
203
+ */
204
+ async function walkFiles(dir) {
205
+ const entries = await readdir(dir, { withFileTypes: true });
206
+ const out = [];
207
+ for (const e of entries) {
208
+ const p = join(dir, e.name);
209
+ if (e.isDirectory()) {
210
+ out.push(...(await walkFiles(p)));
211
+ } else {
212
+ out.push(p);
213
+ }
214
+ }
215
+ return out;
216
+ }
217
+
218
+ /**
219
+ * Walks upward from `startDir` toward the filesystem root until `components.json`
220
+ * exists, or returns `undefined` if none found (e.g. user forgot `init`).
221
+ *
222
+ * @param {string} startDir — typically `process.cwd()` or `--cwd` resolved path
223
+ * @returns {string | undefined} — absolute path to `components.json` if found
224
+ *
225
+ * @example
226
+ * // startDir = "/app/apps/web", file at "/app/components.json"
227
+ * // => "/app/components.json"
228
+ * @example
229
+ * // No components.json in startDir or any parent
230
+ * // => undefined
231
+ */
232
+ async function findComponentsJson(startDir) {
233
+ let d = startDir;
234
+ for (;;) {
235
+ const p = join(d, "components.json");
236
+ if (existsSync(p)) {
237
+ return p;
238
+ }
239
+ const parent = dirname(d);
240
+ if (parent === d) {
241
+ return undefined;
242
+ }
243
+ d = parent;
244
+ }
245
+ }
246
+
247
+ /**
248
+ * Default shape written by `init`. Consumers may edit paths to match their
249
+ * bundler/tsconfig path aliases (`@/…`).
250
+ *
251
+ * @returns {{ aliases: Record<string, string>, resolvedPaths: Record<string, string> }}
252
+ *
253
+ * @example
254
+ * // JSON written to disk (pretty-printed):
255
+ * // {
256
+ * // "aliases": {
257
+ * // "ui": "@/components/ui",
258
+ * // "utils": "@/lib/utils",
259
+ * // "hooks": "@/hooks"
260
+ * // },
261
+ * // "resolvedPaths": {
262
+ * // "ui": "src/components/ui",
263
+ * // "utils": "src/lib/utils.ts",
264
+ * // "hooks": "src/hooks"
265
+ * // }
266
+ * // }
267
+ */
268
+ function defaultConfig() {
269
+ return {
270
+ aliases: {
271
+ ui: "@/components/ui",
272
+ utils: "@/lib/utils",
273
+ hooks: "@/hooks",
274
+ },
275
+ resolvedPaths: {
276
+ ui: "src/components/ui",
277
+ utils: "src/lib/utils.ts",
278
+ hooks: "src/hooks",
279
+ },
280
+ };
281
+ }
282
+
283
+ /**
284
+ * Ensures `add` has everything it needs to compute destination paths and rewrite
285
+ * imports. Throws a single clear error if the config is incomplete.
286
+ *
287
+ * @param {object} cfg — parsed `components.json`
288
+ * @throws {Error} if any of `aliases.{utils,hooks,ui}` or
289
+ * `resolvedPaths.{ui,utils,hooks}` is missing
290
+ *
291
+ * @example
292
+ * // validateConfig({ aliases: {}, resolvedPaths: {} });
293
+ * // throws:
294
+ * // Error: components.json must define aliases.utils, aliases.hooks, and aliases.ui
295
+ */
296
+ function validateConfig(cfg) {
297
+ if (!cfg.aliases?.utils || !cfg.aliases?.hooks || !cfg.aliases?.ui) {
298
+ throw new Error(
299
+ "components.json must define aliases.utils, aliases.hooks, and aliases.ui",
300
+ );
301
+ }
302
+ if (!cfg.resolvedPaths?.ui || !cfg.resolvedPaths?.utils || !cfg.resolvedPaths?.hooks) {
303
+ throw new Error(
304
+ "components.json must define resolvedPaths.ui, resolvedPaths.utils, and resolvedPaths.hooks",
305
+ );
306
+ }
307
+ }
308
+
309
+ /**
310
+ * Maps CLI input (any casing, optional registry alias) to a canonical folder name
311
+ * under `src/ui/<name>` in the package.
312
+ *
313
+ * Resolution order:
314
+ * 1. Exact key in `registry.nameAliases`
315
+ * 2. Case-insensitive key match in `nameAliases`
316
+ * 3. Exact match in `registry.components`
317
+ * 4. Case-insensitive match in `registry.components`
318
+ * 5. Otherwise throws
319
+ *
320
+ * @param {string} input — argv token from user, e.g. `"Btn"` or `"buttons"`
321
+ * @param {object} registry — from `loadRegistry()`
322
+ * @returns {string} — canonical component directory name
323
+ * @throws {Error} when the name is unknown
324
+ *
325
+ * @example
326
+ * // registry.components = ["buttons"], nameAliases = { "btn": "buttons" }
327
+ * resolveComponentName("btn", registry); // "buttons"
328
+ * resolveComponentName("BUTTONS", registry); // "buttons"
329
+ * @example
330
+ * // resolveComponentName("typo", registry);
331
+ * // throws: Unknown component "typo". Valid names include: ...
332
+ */
333
+ function resolveComponentName(input, registry) {
334
+ const aliases = registry.nameAliases ?? {};
335
+ if (aliases[input]) {
336
+ return aliases[input];
337
+ }
338
+ const lower = input.toLowerCase();
339
+ const aliasKey = Object.keys(aliases).find((k) => k.toLowerCase() === lower);
340
+ if (aliasKey) {
341
+ return aliases[aliasKey];
342
+ }
343
+ if (registry.components.includes(input)) {
344
+ return input;
345
+ }
346
+ const found = registry.components.find((c) => c.toLowerCase() === lower);
347
+ if (found) {
348
+ return found;
349
+ }
350
+ throw new Error(
351
+ `Unknown component "${input}". Valid names include: ${registry.components.join(", ")}`,
352
+ );
353
+ }
354
+
355
+ /**
356
+ * @param {string} input — argv token, e.g. `useWindowSize`
357
+ * @param {object} registry — must include `hooks` string array
358
+ * @returns {string} — canonical hook folder name under `src/hooks`
359
+ */
360
+ function resolveHookName(input, registry) {
361
+ const list = registry.hooks ?? [];
362
+ if (list.includes(input)) {
363
+ return input;
364
+ }
365
+ const found = list.find((h) => h.toLowerCase() === input.toLowerCase());
366
+ if (found) {
367
+ return found;
368
+ }
369
+ throw new Error(
370
+ `Unknown hook "${input}". Valid hooks include: ${list.join(", ")}`,
371
+ );
372
+ }
373
+
374
+ /**
375
+ * Starting from hook folder names discovered in UI code, expands the set to
376
+ * include every hook that those hooks import from **sibling** hook packages
377
+ * (parsed via `extractSiblingHookImports`). Ensures `add` copies a consistent
378
+ * dependency graph, not only direct imports.
379
+ *
380
+ * @param {string} packageRoot — components package root
381
+ * @param {string[]} seedHooks — e.g. `["useToggle", "useMediaQuery"]`
382
+ * @returns {Promise<string[]>} — deduplicated list of hook folder names
383
+ *
384
+ * @example
385
+ * // seedHooks = ["useA"]; useA imports useB; useB imports useC
386
+ * // => ["useA", "useB", "useC"] (order depends on BFS/stack pop order)
387
+ */
388
+ async function collectHookTransitiveClosure(packageRoot, seedHooks) {
389
+ const closure = new Set(seedHooks);
390
+ const queue = [...seedHooks];
391
+ while (queue.length > 0) {
392
+ const h = queue.pop();
393
+ const hookDir = join(packageRoot, "src", "hooks", h);
394
+ if (!existsSync(hookDir)) {
395
+ continue;
396
+ }
397
+ const files = await walkFiles(hookDir);
398
+ for (const file of files) {
399
+ if (!/\.(tsx?|jsx?)$/.test(file)) {
400
+ continue;
401
+ }
402
+ const source = await readFile(file, "utf8");
403
+ for (const dep of extractSiblingHookImports(source)) {
404
+ if (!closure.has(dep)) {
405
+ closure.add(dep);
406
+ queue.push(dep);
407
+ }
408
+ }
409
+ }
410
+ }
411
+ return [...closure];
412
+ }
413
+
414
+ /**
415
+ * Copies `packageRoot/src/ui/<componentName>` into
416
+ * `<configDir>/<resolvedPaths.ui>/<componentName>`, skipping tests, rewriting
417
+ * imports in TS/JS files, and collecting hook folder names referenced by those
418
+ * files for later copying.
419
+ *
420
+ * @param {string} componentName — resolved registry name (directory under `src/ui`)
421
+ * @param {object} config — validated `components.json`
422
+ * @param {string} configDir — dirname(components.json)
423
+ * @param {string} packageRoot — package containing source
424
+ * @returns {Promise<string[]>} — hook names used by copied UI files (not yet transitive)
425
+ * @throws {Error} if source folder is missing in the package
426
+ *
427
+ * @example
428
+ * // After copy, consumer might have:
429
+ * // src/components/ui/buttons/Button.tsx
430
+ * // with imports pointing at @/lib/utils, @/hooks/useX, etc.
431
+ */
432
+ async function copyUiComponent(
433
+ componentName,
434
+ config,
435
+ configDir,
436
+ packageRoot,
437
+ ) {
438
+ const srcRoot = join(packageRoot, "src", "ui", componentName);
439
+ if (!existsSync(srcRoot)) {
440
+ throw new Error(`Missing package source: ${relative(packageRoot, srcRoot)}`);
441
+ }
442
+ const destRoot = join(configDir, config.resolvedPaths.ui, componentName);
443
+ const files = await walkFiles(srcRoot);
444
+ const usedHooks = new Set();
445
+
446
+ for (const absSrc of files) {
447
+ const rel = relative(srcRoot, absSrc);
448
+ if (isTestFile(rel)) {
449
+ continue;
450
+ }
451
+ const absDest = join(destRoot, rel);
452
+ await mkdir(dirname(absDest), { recursive: true });
453
+ if (/\.(tsx?|jsx?)$/.test(absSrc)) {
454
+ const raw = await readFile(absSrc, "utf8");
455
+ const { code, usedHooks: uh } = rewriteImports(raw, {
456
+ utilsAlias: config.aliases.utils,
457
+ hooksAlias: config.aliases.hooks,
458
+ uiAlias: config.aliases.ui,
459
+ });
460
+ for (const h of uh) {
461
+ usedHooks.add(h);
462
+ }
463
+ await writeFile(absDest, code, "utf8");
464
+ } else {
465
+ await copyFile(absSrc, absDest);
466
+ }
467
+ }
468
+ return [...usedHooks];
469
+ }
470
+
471
+ /**
472
+ * Same traversal rules as {@link copyUiComponent}, but for `src/hooks/<hookName>`.
473
+ * Used after UI copy so shared hooks land under the consumer’s `resolvedPaths.hooks`.
474
+ *
475
+ * @param {string} hookName — folder name under `src/hooks`
476
+ *
477
+ * @example
478
+ * // Source: package src/hooks/useToggle/useToggle.ts
479
+ * // Dest: <configDir>/src/hooks/useToggle/useToggle.ts
480
+ */
481
+ async function copyHookFolder(hookName, config, configDir, packageRoot) {
482
+ const srcRoot = join(packageRoot, "src", "hooks", hookName);
483
+ if (!existsSync(srcRoot)) {
484
+ throw new Error(`Missing hook source: hooks/${hookName}`);
485
+ }
486
+ const destRoot = join(configDir, config.resolvedPaths.hooks, hookName);
487
+ const files = await walkFiles(srcRoot);
488
+ for (const absSrc of files) {
489
+ const rel = relative(srcRoot, absSrc);
490
+ if (isTestFile(rel)) {
491
+ continue;
492
+ }
493
+ const absDest = join(destRoot, rel);
494
+ await mkdir(dirname(absDest), { recursive: true });
495
+ if (/\.(tsx?|jsx?)$/.test(absSrc)) {
496
+ const raw = await readFile(absSrc, "utf8");
497
+ const { code } = rewriteImports(raw, {
498
+ utilsAlias: config.aliases.utils,
499
+ hooksAlias: config.aliases.hooks,
500
+ uiAlias: config.aliases.ui,
501
+ });
502
+ await writeFile(absDest, code, "utf8");
503
+ } else {
504
+ await copyFile(absSrc, absDest);
505
+ }
506
+ }
507
+ }
508
+
509
+ /**
510
+ * If the target utils file from config does not exist, copies the package default
511
+ * `src/lib/utils.ts` (with import paths rewritten) and logs creation.
512
+ *
513
+ * @example
514
+ * // First `add` in a fresh app prints:
515
+ * // Created src/lib/utils.ts
516
+ * // Second `add` prints nothing here (file already exists).
517
+ */
518
+ async function ensureUtilsFile(config, configDir, packageRoot) {
519
+ const dest = join(configDir, config.resolvedPaths.utils);
520
+ if (existsSync(dest)) {
521
+ return;
522
+ }
523
+ await mkdir(dirname(dest), { recursive: true });
524
+ const src = join(packageRoot, "src", "lib", "utils.ts");
525
+ const raw = await readFile(src, "utf8");
526
+ const { code } = rewriteImports(raw, {
527
+ utilsAlias: config.aliases.utils,
528
+ hooksAlias: config.aliases.hooks,
529
+ uiAlias: config.aliases.ui,
530
+ });
531
+ await writeFile(dest, code, "utf8");
532
+ console.log(`Created ${relative(configDir, dest)}`);
533
+ }
534
+
535
+ /**
536
+ * `zentauri-components init` — writes default `components.json` next to `--cwd`.
537
+ *
538
+ * @param {string} cwd — resolved working directory
539
+ *
540
+ * @example
541
+ * // Success stdout:
542
+ * // Wrote /Users/me/my-app/components.json
543
+ *
544
+ * @example
545
+ * // If file exists — stderr + exitCode 1, no overwrite:
546
+ * // Refusing to overwrite existing /Users/me/my-app/components.json
547
+ */
548
+ async function cmdInit(cwd) {
549
+ const target = join(cwd, "components.json");
550
+ if (existsSync(target)) {
551
+ console.error(`Refusing to overwrite existing ${target}`);
552
+ process.exitCode = 1;
553
+ return;
554
+ }
555
+ const body = `${JSON.stringify(defaultConfig(), null, 2)}\n`;
556
+ await writeFile(target, body, "utf8");
557
+ console.log(`Wrote ${target}`);
558
+ }
559
+
560
+ /**
561
+ * `zentauri-components add a b c` — full pipeline: find config, validate, utils,
562
+ * copy each UI component, compute hook closure, copy each hook, finish.
563
+ *
564
+ * @param {string[]} names — positional args after `add`
565
+ * @param {string} cwd — resolved working directory (starting point for config search)
566
+ *
567
+ * @example
568
+ * // Typical stdout:
569
+ * // Created src/lib/utils.ts
570
+ * // Adding buttons…
571
+ * // Adding inputs…
572
+ * // Adding hook useMediaQuery…
573
+ * // Done.
574
+ *
575
+ * @example
576
+ * // No components.json in cwd or parents — stderr:
577
+ * // No components.json found. Run: zentauri-components init (or: zentauri-ui init)
578
+ */
579
+ async function cmdAdd(names, cwd) {
580
+ const configPath = await findComponentsJson(cwd);
581
+ if (!configPath) {
582
+ console.error(
583
+ "No components.json found. Run: zentauri-components init (or: zentauri-ui init)",
584
+ );
585
+ process.exitCode = 1;
586
+ return;
587
+ }
588
+ const configDir = dirname(configPath);
589
+ const config = JSON.parse(await readFile(configPath, "utf8"));
590
+ validateConfig(config);
591
+
592
+ const registry = loadRegistry();
593
+ const hookMode =
594
+ names.length > 0 && names[0].toLowerCase() === "hook";
595
+ const payload = hookMode ? names.slice(1) : names;
596
+
597
+ if (hookMode && payload.length === 0) {
598
+ console.error(
599
+ "Usage: zentauri-components add hook <hookName> [more...] (e.g. add hook useWindowSize)",
600
+ );
601
+ process.exitCode = 1;
602
+ return;
603
+ }
604
+
605
+ if (hookMode) {
606
+ const resolvedHooks = payload.map((n) => resolveHookName(n, registry));
607
+ const finalHooks = await collectHookTransitiveClosure(
608
+ packageRoot,
609
+ resolvedHooks,
610
+ );
611
+ for (const h of finalHooks) {
612
+ console.log(`Adding hook ${h}…`);
613
+ await copyHookFolder(h, config, configDir, packageRoot);
614
+ }
615
+ console.log("Done.");
616
+ return;
617
+ }
618
+
619
+ const resolvedNames = payload.map((n) => resolveComponentName(n, registry));
620
+
621
+ const allHooks = new Set();
622
+ for (const name of resolvedNames) {
623
+ console.log(`Adding ${name}…`);
624
+ const uh = await copyUiComponent(name, config, configDir, packageRoot);
625
+ for (const h of uh) {
626
+ allHooks.add(h);
627
+ }
628
+ }
629
+
630
+ const finalHooks = await collectHookTransitiveClosure(
631
+ packageRoot,
632
+ [...allHooks],
633
+ );
634
+
635
+ for (const h of finalHooks) {
636
+ console.log(`Adding hook ${h}…`);
637
+ await copyHookFolder(h, config, configDir, packageRoot);
638
+ }
639
+
640
+ console.log("Done.");
641
+ }
642
+
643
+ /**
644
+ * Parses `process.argv` with `node:util.parseArgs`, dispatches `init` / `add`,
645
+ * or prints help / version. Sets `process.exitCode` for recoverable CLI errors
646
+ * instead of always calling `process.exit()` (except unhandled rejections
647
+ * caught in the outer `.catch`).
648
+ *
649
+ * @example
650
+ * // argv: ["node", "index.mjs", "add", "button"]
651
+ * // => cmdAdd(["button"], cwd)
652
+ *
653
+ * @example
654
+ * // argv: ["node", "index.mjs"]
655
+ * // => printHelp(), exitCode 1
656
+ *
657
+ * @example
658
+ * // argv: ["node", "index.mjs", "-v"]
659
+ * // => "1.2.3" (whatever version is in package.json)
660
+ */
661
+ async function main() {
662
+ const { values, positionals } = parseArgs({
663
+ args: process.argv.slice(2),
664
+ allowPositionals: true,
665
+ options: {
666
+ help: { type: "boolean", short: "h" },
667
+ version: { type: "boolean", short: "v" },
668
+ cwd: { type: "string" },
669
+ },
670
+ });
671
+
672
+ if (values.help) {
673
+ printHelp();
674
+ return;
675
+ }
676
+ if (values.version) {
677
+ const pkg = JSON.parse(
678
+ readFileSync(join(packageRoot, "package.json"), "utf8"),
679
+ );
680
+ console.log(pkg.version);
681
+ return;
682
+ }
683
+
684
+ const cwd = values.cwd ? join(process.cwd(), values.cwd) : process.cwd();
685
+ const cmd = positionals[0];
686
+ const rest = positionals.slice(1);
687
+
688
+ if (!cmd) {
689
+ printHelp();
690
+ process.exitCode = 1;
691
+ return;
692
+ }
693
+
694
+ if (cmd === "init") {
695
+ await cmdInit(cwd);
696
+ return;
697
+ }
698
+ if (cmd === "add") {
699
+ if (rest.length === 0) {
700
+ console.error(
701
+ "Usage: zentauri-components add <component> [more...] | add hook <hookName> [more...]",
702
+ );
703
+ process.exitCode = 1;
704
+ return;
705
+ }
706
+ await cmdAdd(rest, cwd);
707
+ return;
708
+ }
709
+
710
+ console.error(`Unknown command: ${cmd}`);
711
+ printHelp();
712
+ process.exitCode = 1;
713
+ }
714
+
715
+ main().catch((err) => {
716
+ console.error(err instanceof Error ? err.message : err);
717
+ process.exitCode = 1;
718
+ });