@zentauri-ui/zentauri-components 1.4.0 → 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 (501) hide show
  1. package/README.md +18 -6
  2. package/cli/cli.integration.test.ts +28 -0
  3. package/cli/index.mjs +60 -6
  4. package/cli/registry.json +28 -1
  5. package/package.json +2 -2
  6. package/dist/hooks/index.d.ts +0 -27
  7. package/dist/hooks/index.d.ts.map +0 -1
  8. package/dist/hooks/useBodyScrollLock/index.d.ts +0 -2
  9. package/dist/hooks/useBodyScrollLock/index.d.ts.map +0 -1
  10. package/dist/hooks/useBodyScrollLock/useBodyScrollLock.d.ts +0 -13
  11. package/dist/hooks/useBodyScrollLock/useBodyScrollLock.d.ts.map +0 -1
  12. package/dist/hooks/useClickOutside/index.d.ts +0 -2
  13. package/dist/hooks/useClickOutside/index.d.ts.map +0 -1
  14. package/dist/hooks/useClickOutside/useClickOutside.d.ts +0 -22
  15. package/dist/hooks/useClickOutside/useClickOutside.d.ts.map +0 -1
  16. package/dist/hooks/useClipboard/index.d.ts +0 -2
  17. package/dist/hooks/useClipboard/index.d.ts.map +0 -1
  18. package/dist/hooks/useClipboard/useClipboard.d.ts +0 -21
  19. package/dist/hooks/useClipboard/useClipboard.d.ts.map +0 -1
  20. package/dist/hooks/useControllableState/index.d.ts +0 -2
  21. package/dist/hooks/useControllableState/index.d.ts.map +0 -1
  22. package/dist/hooks/useControllableState/useControllableState.d.ts +0 -21
  23. package/dist/hooks/useControllableState/useControllableState.d.ts.map +0 -1
  24. package/dist/hooks/useDebouncedValue/index.d.ts +0 -2
  25. package/dist/hooks/useDebouncedValue/index.d.ts.map +0 -1
  26. package/dist/hooks/useDebouncedValue/useDebouncedValue.d.ts +0 -13
  27. package/dist/hooks/useDebouncedValue/useDebouncedValue.d.ts.map +0 -1
  28. package/dist/hooks/useDisclosure/index.d.ts +0 -2
  29. package/dist/hooks/useDisclosure/index.d.ts.map +0 -1
  30. package/dist/hooks/useDisclosure/useDisclosure.d.ts +0 -24
  31. package/dist/hooks/useDisclosure/useDisclosure.d.ts.map +0 -1
  32. package/dist/hooks/useDocumentTitle/index.d.ts +0 -2
  33. package/dist/hooks/useDocumentTitle/index.d.ts.map +0 -1
  34. package/dist/hooks/useDocumentTitle/useDocumentTitle.d.ts +0 -18
  35. package/dist/hooks/useDocumentTitle/useDocumentTitle.d.ts.map +0 -1
  36. package/dist/hooks/useFocusManagement/index.d.ts +0 -2
  37. package/dist/hooks/useFocusManagement/index.d.ts.map +0 -1
  38. package/dist/hooks/useFocusManagement/useFocusManagement.d.ts +0 -22
  39. package/dist/hooks/useFocusManagement/useFocusManagement.d.ts.map +0 -1
  40. package/dist/hooks/useHover/index.d.ts +0 -2
  41. package/dist/hooks/useHover/index.d.ts.map +0 -1
  42. package/dist/hooks/useHover/useHover.d.ts +0 -13
  43. package/dist/hooks/useHover/useHover.d.ts.map +0 -1
  44. package/dist/hooks/useInView/index.d.ts +0 -2
  45. package/dist/hooks/useInView/index.d.ts.map +0 -1
  46. package/dist/hooks/useInView/useInView.d.ts +0 -17
  47. package/dist/hooks/useInView/useInView.d.ts.map +0 -1
  48. package/dist/hooks/useIntersectionObserver/index.d.ts +0 -2
  49. package/dist/hooks/useIntersectionObserver/index.d.ts.map +0 -1
  50. package/dist/hooks/useIntersectionObserver/useIntersectionObserver.d.ts +0 -17
  51. package/dist/hooks/useIntersectionObserver/useIntersectionObserver.d.ts.map +0 -1
  52. package/dist/hooks/useIsMounted/index.d.ts +0 -2
  53. package/dist/hooks/useIsMounted/index.d.ts.map +0 -1
  54. package/dist/hooks/useIsMounted/useIsMounted.d.ts +0 -10
  55. package/dist/hooks/useIsMounted/useIsMounted.d.ts.map +0 -1
  56. package/dist/hooks/useIsomorphicLayoutEffect/index.d.ts +0 -2
  57. package/dist/hooks/useIsomorphicLayoutEffect/index.d.ts.map +0 -1
  58. package/dist/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.d.ts +0 -9
  59. package/dist/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.d.ts.map +0 -1
  60. package/dist/hooks/useLocalStorage/index.d.ts +0 -2
  61. package/dist/hooks/useLocalStorage/index.d.ts.map +0 -1
  62. package/dist/hooks/useLocalStorage/useLocalStorage.d.ts +0 -21
  63. package/dist/hooks/useLocalStorage/useLocalStorage.d.ts.map +0 -1
  64. package/dist/hooks/useMediaQuery/index.d.ts +0 -2
  65. package/dist/hooks/useMediaQuery/index.d.ts.map +0 -1
  66. package/dist/hooks/useMediaQuery/useMediaQuery.d.ts +0 -12
  67. package/dist/hooks/useMediaQuery/useMediaQuery.d.ts.map +0 -1
  68. package/dist/hooks/useNetworkStatus/index.d.ts +0 -2
  69. package/dist/hooks/useNetworkStatus/index.d.ts.map +0 -1
  70. package/dist/hooks/useNetworkStatus/useNetworkStatus.d.ts +0 -9
  71. package/dist/hooks/useNetworkStatus/useNetworkStatus.d.ts.map +0 -1
  72. package/dist/hooks/usePageVisibility/index.d.ts +0 -2
  73. package/dist/hooks/usePageVisibility/index.d.ts.map +0 -1
  74. package/dist/hooks/usePageVisibility/usePageVisibility.d.ts +0 -9
  75. package/dist/hooks/usePageVisibility/usePageVisibility.d.ts.map +0 -1
  76. package/dist/hooks/usePagination/index.d.ts +0 -2
  77. package/dist/hooks/usePagination/index.d.ts.map +0 -1
  78. package/dist/hooks/usePagination/usePagination.d.ts +0 -30
  79. package/dist/hooks/usePagination/usePagination.d.ts.map +0 -1
  80. package/dist/hooks/usePrefersColorScheme/index.d.ts +0 -2
  81. package/dist/hooks/usePrefersColorScheme/index.d.ts.map +0 -1
  82. package/dist/hooks/usePrefersColorScheme/usePrefersColorScheme.d.ts +0 -9
  83. package/dist/hooks/usePrefersColorScheme/usePrefersColorScheme.d.ts.map +0 -1
  84. package/dist/hooks/usePrefersReducedMotion/index.d.ts +0 -2
  85. package/dist/hooks/usePrefersReducedMotion/index.d.ts.map +0 -1
  86. package/dist/hooks/usePrefersReducedMotion/usePrefersReducedMotion.d.ts +0 -9
  87. package/dist/hooks/usePrefersReducedMotion/usePrefersReducedMotion.d.ts.map +0 -1
  88. package/dist/hooks/useResizeObserver/index.d.ts +0 -2
  89. package/dist/hooks/useResizeObserver/index.d.ts.map +0 -1
  90. package/dist/hooks/useResizeObserver/useResizeObserver.d.ts +0 -21
  91. package/dist/hooks/useResizeObserver/useResizeObserver.d.ts.map +0 -1
  92. package/dist/hooks/useSessionStorage/index.d.ts +0 -2
  93. package/dist/hooks/useSessionStorage/index.d.ts.map +0 -1
  94. package/dist/hooks/useSessionStorage/useSessionStorage.d.ts +0 -21
  95. package/dist/hooks/useSessionStorage/useSessionStorage.d.ts.map +0 -1
  96. package/dist/hooks/useThrottledCallback/index.d.ts +0 -2
  97. package/dist/hooks/useThrottledCallback/index.d.ts.map +0 -1
  98. package/dist/hooks/useThrottledCallback/useThrottledCallback.d.ts +0 -13
  99. package/dist/hooks/useThrottledCallback/useThrottledCallback.d.ts.map +0 -1
  100. package/dist/hooks/useToggle/index.d.ts +0 -2
  101. package/dist/hooks/useToggle/index.d.ts.map +0 -1
  102. package/dist/hooks/useToggle/useToggle.d.ts +0 -8
  103. package/dist/hooks/useToggle/useToggle.d.ts.map +0 -1
  104. package/dist/hooks/useWindowSize/index.d.ts +0 -2
  105. package/dist/hooks/useWindowSize/index.d.ts.map +0 -1
  106. package/dist/hooks/useWindowSize/useWindowSize.d.ts +0 -13
  107. package/dist/hooks/useWindowSize/useWindowSize.d.ts.map +0 -1
  108. package/dist/lib/utils.d.ts +0 -6
  109. package/dist/lib/utils.d.ts.map +0 -1
  110. package/dist/ui/accordion/accordion-base.d.ts +0 -20
  111. package/dist/ui/accordion/accordion-base.d.ts.map +0 -1
  112. package/dist/ui/accordion/accordion.d.ts +0 -8
  113. package/dist/ui/accordion/accordion.d.ts.map +0 -1
  114. package/dist/ui/accordion/animated/accordion-content-animated.d.ts +0 -6
  115. package/dist/ui/accordion/animated/accordion-content-animated.d.ts.map +0 -1
  116. package/dist/ui/accordion/animated/accordion-root-animated.d.ts +0 -6
  117. package/dist/ui/accordion/animated/accordion-root-animated.d.ts.map +0 -1
  118. package/dist/ui/accordion/animated/animations.d.ts +0 -6
  119. package/dist/ui/accordion/animated/animations.d.ts.map +0 -1
  120. package/dist/ui/accordion/animated/index.d.ts +0 -6
  121. package/dist/ui/accordion/animated/index.d.ts.map +0 -1
  122. package/dist/ui/accordion/animated/types.d.ts +0 -6
  123. package/dist/ui/accordion/animated/types.d.ts.map +0 -1
  124. package/dist/ui/accordion/index.d.ts +0 -5
  125. package/dist/ui/accordion/index.d.ts.map +0 -1
  126. package/dist/ui/accordion/types.d.ts +0 -39
  127. package/dist/ui/accordion/types.d.ts.map +0 -1
  128. package/dist/ui/accordion/variants.d.ts +0 -14
  129. package/dist/ui/accordion/variants.d.ts.map +0 -1
  130. package/dist/ui/alert/alert-base.d.ts +0 -28
  131. package/dist/ui/alert/alert-base.d.ts.map +0 -1
  132. package/dist/ui/alert/alert.d.ts +0 -6
  133. package/dist/ui/alert/alert.d.ts.map +0 -1
  134. package/dist/ui/alert/animated/alert-animated.d.ts +0 -3
  135. package/dist/ui/alert/animated/alert-animated.d.ts.map +0 -1
  136. package/dist/ui/alert/animated/animations.d.ts +0 -3
  137. package/dist/ui/alert/animated/animations.d.ts.map +0 -1
  138. package/dist/ui/alert/animated/index.d.ts +0 -4
  139. package/dist/ui/alert/animated/index.d.ts.map +0 -1
  140. package/dist/ui/alert/animated/types.d.ts +0 -8
  141. package/dist/ui/alert/animated/types.d.ts.map +0 -1
  142. package/dist/ui/alert/index.d.ts +0 -5
  143. package/dist/ui/alert/index.d.ts.map +0 -1
  144. package/dist/ui/alert/types.d.ts +0 -21
  145. package/dist/ui/alert/types.d.ts.map +0 -1
  146. package/dist/ui/alert/variants.d.ts +0 -11
  147. package/dist/ui/alert/variants.d.ts.map +0 -1
  148. package/dist/ui/avatar/animated/animations.d.ts +0 -3
  149. package/dist/ui/avatar/animated/animations.d.ts.map +0 -1
  150. package/dist/ui/avatar/animated/avatar-animated.d.ts +0 -6
  151. package/dist/ui/avatar/animated/avatar-animated.d.ts.map +0 -1
  152. package/dist/ui/avatar/animated/index.d.ts +0 -5
  153. package/dist/ui/avatar/animated/index.d.ts.map +0 -1
  154. package/dist/ui/avatar/animated/types.d.ts +0 -8
  155. package/dist/ui/avatar/animated/types.d.ts.map +0 -1
  156. package/dist/ui/avatar/avatar-base.d.ts +0 -25
  157. package/dist/ui/avatar/avatar-base.d.ts.map +0 -1
  158. package/dist/ui/avatar/avatar.d.ts +0 -8
  159. package/dist/ui/avatar/avatar.d.ts.map +0 -1
  160. package/dist/ui/avatar/index.d.ts +0 -5
  161. package/dist/ui/avatar/index.d.ts.map +0 -1
  162. package/dist/ui/avatar/types.d.ts +0 -25
  163. package/dist/ui/avatar/types.d.ts.map +0 -1
  164. package/dist/ui/avatar/variants.d.ts +0 -8
  165. package/dist/ui/avatar/variants.d.ts.map +0 -1
  166. package/dist/ui/badge/animated/animations.d.ts +0 -3
  167. package/dist/ui/badge/animated/animations.d.ts.map +0 -1
  168. package/dist/ui/badge/animated/badge-animated.d.ts +0 -6
  169. package/dist/ui/badge/animated/badge-animated.d.ts.map +0 -1
  170. package/dist/ui/badge/animated/index.d.ts +0 -4
  171. package/dist/ui/badge/animated/index.d.ts.map +0 -1
  172. package/dist/ui/badge/animated/types.d.ts +0 -10
  173. package/dist/ui/badge/animated/types.d.ts.map +0 -1
  174. package/dist/ui/badge/badge-base.d.ts +0 -6
  175. package/dist/ui/badge/badge-base.d.ts.map +0 -1
  176. package/dist/ui/badge/badge.d.ts +0 -6
  177. package/dist/ui/badge/badge.d.ts.map +0 -1
  178. package/dist/ui/badge/index.d.ts +0 -4
  179. package/dist/ui/badge/index.d.ts.map +0 -1
  180. package/dist/ui/badge/types.d.ts +0 -17
  181. package/dist/ui/badge/types.d.ts.map +0 -1
  182. package/dist/ui/badge/variants.d.ts +0 -40
  183. package/dist/ui/badge/variants.d.ts.map +0 -1
  184. package/dist/ui/breadcrumb/breadcrumb.d.ts +0 -33
  185. package/dist/ui/breadcrumb/breadcrumb.d.ts.map +0 -1
  186. package/dist/ui/breadcrumb/index.d.ts +0 -4
  187. package/dist/ui/breadcrumb/index.d.ts.map +0 -1
  188. package/dist/ui/breadcrumb/types.d.ts +0 -26
  189. package/dist/ui/breadcrumb/types.d.ts.map +0 -1
  190. package/dist/ui/breadcrumb/variants.d.ts +0 -11
  191. package/dist/ui/breadcrumb/variants.d.ts.map +0 -1
  192. package/dist/ui/buttons/animated/animations.d.ts +0 -3
  193. package/dist/ui/buttons/animated/animations.d.ts.map +0 -1
  194. package/dist/ui/buttons/animated/button-animated.d.ts +0 -6
  195. package/dist/ui/buttons/animated/button-animated.d.ts.map +0 -1
  196. package/dist/ui/buttons/animated/index.d.ts +0 -4
  197. package/dist/ui/buttons/animated/index.d.ts.map +0 -1
  198. package/dist/ui/buttons/animated/types.d.ts +0 -16
  199. package/dist/ui/buttons/animated/types.d.ts.map +0 -1
  200. package/dist/ui/buttons/button-base.d.ts +0 -6
  201. package/dist/ui/buttons/button-base.d.ts.map +0 -1
  202. package/dist/ui/buttons/button.d.ts +0 -6
  203. package/dist/ui/buttons/button.d.ts.map +0 -1
  204. package/dist/ui/buttons/index.d.ts +0 -4
  205. package/dist/ui/buttons/index.d.ts.map +0 -1
  206. package/dist/ui/buttons/types.d.ts +0 -10
  207. package/dist/ui/buttons/types.d.ts.map +0 -1
  208. package/dist/ui/buttons/variants.d.ts +0 -5
  209. package/dist/ui/buttons/variants.d.ts.map +0 -1
  210. package/dist/ui/card/animated/animations.d.ts +0 -7
  211. package/dist/ui/card/animated/animations.d.ts.map +0 -1
  212. package/dist/ui/card/animated/card-animated.d.ts +0 -6
  213. package/dist/ui/card/animated/card-animated.d.ts.map +0 -1
  214. package/dist/ui/card/animated/index.d.ts +0 -5
  215. package/dist/ui/card/animated/index.d.ts.map +0 -1
  216. package/dist/ui/card/animated/types.d.ts +0 -6
  217. package/dist/ui/card/animated/types.d.ts.map +0 -1
  218. package/dist/ui/card/card-base.d.ts +0 -26
  219. package/dist/ui/card/card-base.d.ts.map +0 -1
  220. package/dist/ui/card/card.d.ts +0 -6
  221. package/dist/ui/card/card.d.ts.map +0 -1
  222. package/dist/ui/card/index.d.ts +0 -5
  223. package/dist/ui/card/index.d.ts.map +0 -1
  224. package/dist/ui/card/types.d.ts +0 -29
  225. package/dist/ui/card/types.d.ts.map +0 -1
  226. package/dist/ui/card/variants.d.ts +0 -18
  227. package/dist/ui/card/variants.d.ts.map +0 -1
  228. package/dist/ui/divider/animated/animations.d.ts +0 -6
  229. package/dist/ui/divider/animated/animations.d.ts.map +0 -1
  230. package/dist/ui/divider/animated/divider-animated.d.ts +0 -6
  231. package/dist/ui/divider/animated/divider-animated.d.ts.map +0 -1
  232. package/dist/ui/divider/animated/index.d.ts +0 -3
  233. package/dist/ui/divider/animated/index.d.ts.map +0 -1
  234. package/dist/ui/divider/animated/types.d.ts +0 -8
  235. package/dist/ui/divider/animated/types.d.ts.map +0 -1
  236. package/dist/ui/divider/divider-base.d.ts +0 -6
  237. package/dist/ui/divider/divider-base.d.ts.map +0 -1
  238. package/dist/ui/divider/divider.d.ts +0 -6
  239. package/dist/ui/divider/divider.d.ts.map +0 -1
  240. package/dist/ui/divider/index.d.ts +0 -4
  241. package/dist/ui/divider/index.d.ts.map +0 -1
  242. package/dist/ui/divider/types.d.ts +0 -15
  243. package/dist/ui/divider/types.d.ts.map +0 -1
  244. package/dist/ui/divider/variants.d.ts +0 -14
  245. package/dist/ui/divider/variants.d.ts.map +0 -1
  246. package/dist/ui/drawer/animated/animations.d.ts +0 -3
  247. package/dist/ui/drawer/animated/animations.d.ts.map +0 -1
  248. package/dist/ui/drawer/animated/drawer-content-animated.d.ts +0 -6
  249. package/dist/ui/drawer/animated/drawer-content-animated.d.ts.map +0 -1
  250. package/dist/ui/drawer/animated/index.d.ts +0 -5
  251. package/dist/ui/drawer/animated/index.d.ts.map +0 -1
  252. package/dist/ui/drawer/animated/types.d.ts +0 -9
  253. package/dist/ui/drawer/animated/types.d.ts.map +0 -1
  254. package/dist/ui/drawer/drawer-base.d.ts +0 -35
  255. package/dist/ui/drawer/drawer-base.d.ts.map +0 -1
  256. package/dist/ui/drawer/drawer.d.ts +0 -2
  257. package/dist/ui/drawer/drawer.d.ts.map +0 -1
  258. package/dist/ui/drawer/index.d.ts +0 -4
  259. package/dist/ui/drawer/index.d.ts.map +0 -1
  260. package/dist/ui/drawer/types.d.ts +0 -33
  261. package/dist/ui/drawer/types.d.ts.map +0 -1
  262. package/dist/ui/drawer/variants.d.ts +0 -10
  263. package/dist/ui/drawer/variants.d.ts.map +0 -1
  264. package/dist/ui/dropdown/dropdown.d.ts +0 -6
  265. package/dist/ui/dropdown/dropdown.d.ts.map +0 -1
  266. package/dist/ui/dropdown/index.d.ts +0 -4
  267. package/dist/ui/dropdown/index.d.ts.map +0 -1
  268. package/dist/ui/dropdown/types.d.ts +0 -38
  269. package/dist/ui/dropdown/types.d.ts.map +0 -1
  270. package/dist/ui/dropdown/variants.d.ts +0 -12
  271. package/dist/ui/dropdown/variants.d.ts.map +0 -1
  272. package/dist/ui/empty-state/animated/animations.d.ts +0 -3
  273. package/dist/ui/empty-state/animated/animations.d.ts.map +0 -1
  274. package/dist/ui/empty-state/animated/empty-state-animated.d.ts +0 -6
  275. package/dist/ui/empty-state/animated/empty-state-animated.d.ts.map +0 -1
  276. package/dist/ui/empty-state/animated/index.d.ts +0 -4
  277. package/dist/ui/empty-state/animated/index.d.ts.map +0 -1
  278. package/dist/ui/empty-state/animated/types.d.ts +0 -14
  279. package/dist/ui/empty-state/animated/types.d.ts.map +0 -1
  280. package/dist/ui/empty-state/empty-state-base.d.ts +0 -23
  281. package/dist/ui/empty-state/empty-state-base.d.ts.map +0 -1
  282. package/dist/ui/empty-state/empty-state.d.ts +0 -6
  283. package/dist/ui/empty-state/empty-state.d.ts.map +0 -1
  284. package/dist/ui/empty-state/index.d.ts +0 -5
  285. package/dist/ui/empty-state/index.d.ts.map +0 -1
  286. package/dist/ui/empty-state/types.d.ts +0 -15
  287. package/dist/ui/empty-state/types.d.ts.map +0 -1
  288. package/dist/ui/empty-state/variants.d.ts +0 -12
  289. package/dist/ui/empty-state/variants.d.ts.map +0 -1
  290. package/dist/ui/file-upload/file-upload.d.ts +0 -8
  291. package/dist/ui/file-upload/file-upload.d.ts.map +0 -1
  292. package/dist/ui/file-upload/index.d.ts +0 -4
  293. package/dist/ui/file-upload/index.d.ts.map +0 -1
  294. package/dist/ui/file-upload/types.d.ts +0 -18
  295. package/dist/ui/file-upload/types.d.ts.map +0 -1
  296. package/dist/ui/file-upload/variants.d.ts +0 -4
  297. package/dist/ui/file-upload/variants.d.ts.map +0 -1
  298. package/dist/ui/inputs/animated/animations.d.ts +0 -3
  299. package/dist/ui/inputs/animated/animations.d.ts.map +0 -1
  300. package/dist/ui/inputs/animated/index.d.ts +0 -4
  301. package/dist/ui/inputs/animated/index.d.ts.map +0 -1
  302. package/dist/ui/inputs/animated/input-animated.d.ts +0 -6
  303. package/dist/ui/inputs/animated/input-animated.d.ts.map +0 -1
  304. package/dist/ui/inputs/animated/types.d.ts +0 -16
  305. package/dist/ui/inputs/animated/types.d.ts.map +0 -1
  306. package/dist/ui/inputs/index.d.ts +0 -4
  307. package/dist/ui/inputs/index.d.ts.map +0 -1
  308. package/dist/ui/inputs/input-base.d.ts +0 -6
  309. package/dist/ui/inputs/input-base.d.ts.map +0 -1
  310. package/dist/ui/inputs/input.d.ts +0 -6
  311. package/dist/ui/inputs/input.d.ts.map +0 -1
  312. package/dist/ui/inputs/types.d.ts +0 -12
  313. package/dist/ui/inputs/types.d.ts.map +0 -1
  314. package/dist/ui/inputs/variants.d.ts +0 -7
  315. package/dist/ui/inputs/variants.d.ts.map +0 -1
  316. package/dist/ui/modal/animated/animations.d.ts +0 -3
  317. package/dist/ui/modal/animated/animations.d.ts.map +0 -1
  318. package/dist/ui/modal/animated/index.d.ts +0 -4
  319. package/dist/ui/modal/animated/index.d.ts.map +0 -1
  320. package/dist/ui/modal/animated/modal-content-animated.d.ts +0 -6
  321. package/dist/ui/modal/animated/modal-content-animated.d.ts.map +0 -1
  322. package/dist/ui/modal/animated/types.d.ts +0 -9
  323. package/dist/ui/modal/animated/types.d.ts.map +0 -1
  324. package/dist/ui/modal/index.d.ts +0 -5
  325. package/dist/ui/modal/index.d.ts.map +0 -1
  326. package/dist/ui/modal/modal-base.d.ts +0 -47
  327. package/dist/ui/modal/modal-base.d.ts.map +0 -1
  328. package/dist/ui/modal/modal.d.ts +0 -6
  329. package/dist/ui/modal/modal.d.ts.map +0 -1
  330. package/dist/ui/modal/types.d.ts +0 -26
  331. package/dist/ui/modal/types.d.ts.map +0 -1
  332. package/dist/ui/modal/variants.d.ts +0 -10
  333. package/dist/ui/modal/variants.d.ts.map +0 -1
  334. package/dist/ui/pagination/index.d.ts +0 -5
  335. package/dist/ui/pagination/index.d.ts.map +0 -1
  336. package/dist/ui/pagination/pagination.d.ts +0 -17
  337. package/dist/ui/pagination/pagination.d.ts.map +0 -1
  338. package/dist/ui/pagination/types.d.ts +0 -56
  339. package/dist/ui/pagination/types.d.ts.map +0 -1
  340. package/dist/ui/pagination/variants.d.ts +0 -12
  341. package/dist/ui/pagination/variants.d.ts.map +0 -1
  342. package/dist/ui/progress/animated/animations.d.ts +0 -3
  343. package/dist/ui/progress/animated/animations.d.ts.map +0 -1
  344. package/dist/ui/progress/animated/index.d.ts +0 -4
  345. package/dist/ui/progress/animated/index.d.ts.map +0 -1
  346. package/dist/ui/progress/animated/progress-animated.d.ts +0 -16
  347. package/dist/ui/progress/animated/progress-animated.d.ts.map +0 -1
  348. package/dist/ui/progress/animated/types.d.ts +0 -23
  349. package/dist/ui/progress/animated/types.d.ts.map +0 -1
  350. package/dist/ui/progress/index.d.ts +0 -5
  351. package/dist/ui/progress/index.d.ts.map +0 -1
  352. package/dist/ui/progress/progress-base.d.ts +0 -23
  353. package/dist/ui/progress/progress-base.d.ts.map +0 -1
  354. package/dist/ui/progress/progress.d.ts +0 -6
  355. package/dist/ui/progress/progress.d.ts.map +0 -1
  356. package/dist/ui/progress/types.d.ts +0 -28
  357. package/dist/ui/progress/types.d.ts.map +0 -1
  358. package/dist/ui/progress/variants.d.ts +0 -15
  359. package/dist/ui/progress/variants.d.ts.map +0 -1
  360. package/dist/ui/select/index.d.ts +0 -4
  361. package/dist/ui/select/index.d.ts.map +0 -1
  362. package/dist/ui/select/select.d.ts +0 -10
  363. package/dist/ui/select/select.d.ts.map +0 -1
  364. package/dist/ui/select/types.d.ts +0 -48
  365. package/dist/ui/select/types.d.ts.map +0 -1
  366. package/dist/ui/select/variants.d.ts +0 -14
  367. package/dist/ui/select/variants.d.ts.map +0 -1
  368. package/dist/ui/skeleton/animated/animations.d.ts +0 -3
  369. package/dist/ui/skeleton/animated/animations.d.ts.map +0 -1
  370. package/dist/ui/skeleton/animated/index.d.ts +0 -4
  371. package/dist/ui/skeleton/animated/index.d.ts.map +0 -1
  372. package/dist/ui/skeleton/animated/skeleton-animated.d.ts +0 -22
  373. package/dist/ui/skeleton/animated/skeleton-animated.d.ts.map +0 -1
  374. package/dist/ui/skeleton/animated/types.d.ts +0 -30
  375. package/dist/ui/skeleton/animated/types.d.ts.map +0 -1
  376. package/dist/ui/skeleton/index.d.ts +0 -5
  377. package/dist/ui/skeleton/index.d.ts.map +0 -1
  378. package/dist/ui/skeleton/skeleton-base.d.ts +0 -24
  379. package/dist/ui/skeleton/skeleton-base.d.ts.map +0 -1
  380. package/dist/ui/skeleton/skeleton.d.ts +0 -2
  381. package/dist/ui/skeleton/skeleton.d.ts.map +0 -1
  382. package/dist/ui/skeleton/types.d.ts +0 -23
  383. package/dist/ui/skeleton/types.d.ts.map +0 -1
  384. package/dist/ui/skeleton/variants.d.ts +0 -38
  385. package/dist/ui/skeleton/variants.d.ts.map +0 -1
  386. package/dist/ui/slider/index.d.ts +0 -4
  387. package/dist/ui/slider/index.d.ts.map +0 -1
  388. package/dist/ui/slider/slider.d.ts +0 -51
  389. package/dist/ui/slider/slider.d.ts.map +0 -1
  390. package/dist/ui/slider/types.d.ts +0 -49
  391. package/dist/ui/slider/types.d.ts.map +0 -1
  392. package/dist/ui/slider/variants.d.ts +0 -13
  393. package/dist/ui/slider/variants.d.ts.map +0 -1
  394. package/dist/ui/spinner/animated/index.d.ts +0 -4
  395. package/dist/ui/spinner/animated/index.d.ts.map +0 -1
  396. package/dist/ui/spinner/animated/spinner.d.ts +0 -6
  397. package/dist/ui/spinner/animated/spinner.d.ts.map +0 -1
  398. package/dist/ui/spinner/animated/types.d.ts +0 -9
  399. package/dist/ui/spinner/animated/types.d.ts.map +0 -1
  400. package/dist/ui/spinner/animated/variants.d.ts +0 -6
  401. package/dist/ui/spinner/animated/variants.d.ts.map +0 -1
  402. package/dist/ui/stepper/index.d.ts +0 -4
  403. package/dist/ui/stepper/index.d.ts.map +0 -1
  404. package/dist/ui/stepper/stepper.d.ts +0 -33
  405. package/dist/ui/stepper/stepper.d.ts.map +0 -1
  406. package/dist/ui/stepper/types.d.ts +0 -25
  407. package/dist/ui/stepper/types.d.ts.map +0 -1
  408. package/dist/ui/stepper/variants.d.ts +0 -11
  409. package/dist/ui/stepper/variants.d.ts.map +0 -1
  410. package/dist/ui/table/animated/animations.d.ts +0 -3
  411. package/dist/ui/table/animated/animations.d.ts.map +0 -1
  412. package/dist/ui/table/animated/index.d.ts +0 -5
  413. package/dist/ui/table/animated/index.d.ts.map +0 -1
  414. package/dist/ui/table/animated/table-animated.d.ts +0 -5
  415. package/dist/ui/table/animated/table-animated.d.ts.map +0 -1
  416. package/dist/ui/table/animated/types.d.ts +0 -8
  417. package/dist/ui/table/animated/types.d.ts.map +0 -1
  418. package/dist/ui/table/index.d.ts +0 -4
  419. package/dist/ui/table/index.d.ts.map +0 -1
  420. package/dist/ui/table/table-base.d.ts +0 -38
  421. package/dist/ui/table/table-base.d.ts.map +0 -1
  422. package/dist/ui/table/table.d.ts +0 -2
  423. package/dist/ui/table/table.d.ts.map +0 -1
  424. package/dist/ui/table/types.d.ts +0 -33
  425. package/dist/ui/table/types.d.ts.map +0 -1
  426. package/dist/ui/table/variants.d.ts +0 -14
  427. package/dist/ui/table/variants.d.ts.map +0 -1
  428. package/dist/ui/tabs/animated/animations.d.ts +0 -5
  429. package/dist/ui/tabs/animated/animations.d.ts.map +0 -1
  430. package/dist/ui/tabs/animated/index.d.ts +0 -4
  431. package/dist/ui/tabs/animated/index.d.ts.map +0 -1
  432. package/dist/ui/tabs/animated/tabs-content-animated.d.ts +0 -6
  433. package/dist/ui/tabs/animated/tabs-content-animated.d.ts.map +0 -1
  434. package/dist/ui/tabs/animated/types.d.ts +0 -14
  435. package/dist/ui/tabs/animated/types.d.ts.map +0 -1
  436. package/dist/ui/tabs/index.d.ts +0 -4
  437. package/dist/ui/tabs/index.d.ts.map +0 -1
  438. package/dist/ui/tabs/tabs-base.d.ts +0 -8
  439. package/dist/ui/tabs/tabs-base.d.ts.map +0 -1
  440. package/dist/ui/tabs/tabs.d.ts +0 -2
  441. package/dist/ui/tabs/tabs.d.ts.map +0 -1
  442. package/dist/ui/tabs/types.d.ts +0 -40
  443. package/dist/ui/tabs/types.d.ts.map +0 -1
  444. package/dist/ui/tabs/variants.d.ts +0 -11
  445. package/dist/ui/tabs/variants.d.ts.map +0 -1
  446. package/dist/ui/toast/animated/animations.d.ts +0 -3
  447. package/dist/ui/toast/animated/animations.d.ts.map +0 -1
  448. package/dist/ui/toast/animated/index.d.ts +0 -4
  449. package/dist/ui/toast/animated/index.d.ts.map +0 -1
  450. package/dist/ui/toast/animated/toast-animated.d.ts +0 -10
  451. package/dist/ui/toast/animated/toast-animated.d.ts.map +0 -1
  452. package/dist/ui/toast/animated/types.d.ts +0 -5
  453. package/dist/ui/toast/animated/types.d.ts.map +0 -1
  454. package/dist/ui/toast/index.d.ts +0 -4
  455. package/dist/ui/toast/index.d.ts.map +0 -1
  456. package/dist/ui/toast/toast-base.d.ts +0 -35
  457. package/dist/ui/toast/toast-base.d.ts.map +0 -1
  458. package/dist/ui/toast/toast.d.ts +0 -2
  459. package/dist/ui/toast/toast.d.ts.map +0 -1
  460. package/dist/ui/toast/types.d.ts +0 -45
  461. package/dist/ui/toast/types.d.ts.map +0 -1
  462. package/dist/ui/toast/variants.d.ts +0 -8
  463. package/dist/ui/toast/variants.d.ts.map +0 -1
  464. package/dist/ui/toggle/animated/animations.d.ts +0 -3
  465. package/dist/ui/toggle/animated/animations.d.ts.map +0 -1
  466. package/dist/ui/toggle/animated/index.d.ts +0 -4
  467. package/dist/ui/toggle/animated/index.d.ts.map +0 -1
  468. package/dist/ui/toggle/animated/toggle-animated.d.ts +0 -6
  469. package/dist/ui/toggle/animated/toggle-animated.d.ts.map +0 -1
  470. package/dist/ui/toggle/animated/types.d.ts +0 -9
  471. package/dist/ui/toggle/animated/types.d.ts.map +0 -1
  472. package/dist/ui/toggle/index.d.ts +0 -4
  473. package/dist/ui/toggle/index.d.ts.map +0 -1
  474. package/dist/ui/toggle/toggle-base.d.ts +0 -6
  475. package/dist/ui/toggle/toggle-base.d.ts.map +0 -1
  476. package/dist/ui/toggle/toggle.d.ts +0 -6
  477. package/dist/ui/toggle/toggle.d.ts.map +0 -1
  478. package/dist/ui/toggle/types.d.ts +0 -14
  479. package/dist/ui/toggle/types.d.ts.map +0 -1
  480. package/dist/ui/toggle/variants.d.ts +0 -8
  481. package/dist/ui/toggle/variants.d.ts.map +0 -1
  482. package/dist/ui/tooltip/animated/animations.d.ts +0 -3
  483. package/dist/ui/tooltip/animated/animations.d.ts.map +0 -1
  484. package/dist/ui/tooltip/animated/index.d.ts +0 -4
  485. package/dist/ui/tooltip/animated/index.d.ts.map +0 -1
  486. package/dist/ui/tooltip/animated/tooltip-content-animated.d.ts +0 -3
  487. package/dist/ui/tooltip/animated/tooltip-content-animated.d.ts.map +0 -1
  488. package/dist/ui/tooltip/animated/types.d.ts +0 -9
  489. package/dist/ui/tooltip/animated/types.d.ts.map +0 -1
  490. package/dist/ui/tooltip/index.d.ts +0 -4
  491. package/dist/ui/tooltip/index.d.ts.map +0 -1
  492. package/dist/ui/tooltip/tooltip-base.d.ts +0 -7
  493. package/dist/ui/tooltip/tooltip-base.d.ts.map +0 -1
  494. package/dist/ui/tooltip/tooltip.d.ts +0 -2
  495. package/dist/ui/tooltip/tooltip.d.ts.map +0 -1
  496. package/dist/ui/tooltip/types.d.ts +0 -30
  497. package/dist/ui/tooltip/types.d.ts.map +0 -1
  498. package/dist/ui/tooltip/variants.d.ts +0 -6
  499. package/dist/ui/tooltip/variants.d.ts.map +0 -1
  500. package/dist/vitest-setup.d.ts +0 -2
  501. package/dist/vitest-setup.d.ts.map +0 -1
package/README.md CHANGED
@@ -280,16 +280,25 @@ Which UI folders are valid for `add` is driven by **`cli/registry.json`**: a gen
280
280
 
281
281
  ### Commands
282
282
 
283
+ Call the published binary by name after the package (recommended so `npx` does not treat the first word as a shell command):
284
+
285
+ ```bash
286
+ npx @zentauri-ui/zentauri-components zentauri-components init
287
+ npx @zentauri-ui/zentauri-components zentauri-components add buttons inputs
288
+ ```
289
+
290
+ **Hooks only** (copy `src/hooks/<name>` into your app, plus sibling hook dependencies such as `useMediaQuery` when needed):
291
+
283
292
  ```bash
284
- npx @zentauri-ui/zentauri-components init
285
- npx @zentauri-ui/zentauri-components add buttons inputs
293
+ npx @zentauri-ui/zentauri-components zentauri-components add hook useWindowSize
294
+ npx @zentauri-ui/zentauri-components zentauri-components add hook useToggle useDebouncedValue
286
295
  ```
287
296
 
288
- The **`zentauri-ui`** command is the same script as **`zentauri-components`** (`package.json` → `bin`). If `npx` does not resolve the binary you expect, pin the package explicitly:
297
+ The **`zentauri-ui`** binary is the same entry as **`zentauri-components`**. If `npx` still mis-resolves, pin the package:
289
298
 
290
299
  ```bash
291
300
  npx --yes --package=@zentauri-ui/zentauri-components zentauri-components init
292
- npx --yes --package=@zentauri-ui/zentauri-components zentauri-ui add button
301
+ npx --yes --package=@zentauri-ui/zentauri-components zentauri-components add button
293
302
  ```
294
303
 
295
304
  From a monorepo checkout you can run the script by path instead of `npx`:
@@ -297,12 +306,14 @@ From a monorepo checkout you can run the script by path instead of `npx`:
297
306
  ```bash
298
307
  node node_modules/@zentauri-ui/zentauri-components/cli/index.mjs init
299
308
  node node_modules/@zentauri-ui/zentauri-components/cli/index.mjs add accordion
309
+ node node_modules/@zentauri-ui/zentauri-components/cli/index.mjs add hook useWindowSize
300
310
  ```
301
311
 
302
312
  | Command | What it does |
303
313
  | ------- | -------------- |
304
314
  | `init` | Writes **`components.json`** in the current working directory (or `--cwd`) with default `aliases` and `resolvedPaths`. Refuses to overwrite an existing file. |
305
- | `add <names...>` | Walks up from `--cwd` (default `.`) to find `components.json`, then copies each resolved UI folder, pulls in hooks those files depend on (including transitive hook imports), and creates **`src/lib/utils.ts`** from the package template if it is missing. |
315
+ | `add <names...>` | Walks up from `--cwd` (default `.`) to find `components.json`, then copies each resolved **UI** folder under `src/ui`, pulls in hooks those files depend on (including transitive hook imports), and creates **`lib/utils`** at `resolvedPaths.utils` from the package template if it is missing. |
316
+ | `add hook <names...>` | Same config lookup; copies only **hook** folders listed under `registry.hooks` (from `hooksEntryNames` in `tsup.config.ts`), including transitive sibling-hook imports. Does not copy UI unless a hook’s imports require you to add a component separately (for example `usePagination` imports types from `ui/pagination`). |
306
317
 
307
318
  Global flags: `-h` / `--help`, `-v` / `--version`, `--cwd <dir>` (relative to `process.cwd()`).
308
319
 
@@ -328,6 +339,7 @@ Defaults look like this; edit `resolvedPaths` and `aliases` so they match your a
328
339
  ### Registry (`cli/registry.json`)
329
340
 
330
341
  - **`components`**: sorted list of folder names under **`src/ui/`** that `add` may copy. The file is **generated**; the canonical build list lives in **`tsup.config.ts`** as `uiComponentNames`, and the generator always ensures **`spinner`** is included so the CLI stays aligned with the animated-only spinner bundle.
342
+ - **`hooks`**: sorted list of folder names under **`src/hooks/`** that `add hook` may copy; generated from **`hooksEntryNames`** in **`tsup.config.ts`** (same entries as published `…/hooks/<name>` subpaths).
331
343
  - **`nameAliases`**: optional map from a CLI token to a real folder name. Today: `button` → `buttons`, `input` → `inputs` (matching common singular names while folders stay plural).
332
344
 
333
345
  Example: these are equivalent when `nameAliases` is configured:
@@ -359,7 +371,7 @@ From this package directory in the monorepo:
359
371
  - `pnpm build` (or `npm run build`) — production bundle via `tsup` (Rollup treeshake + `scripts/prepend-use-client.mjs` via `onSuccess` so each UI entry under `dist/ui/`, including `dist/ui/<name>/animated.*`, starts with `"use client"` where needed)
360
372
  - `pnpm dev` — `tsup` watch mode (same `onSuccess` hook after each rebuild)
361
373
  - `pnpm test` / `pnpm test:watch` — **Vitest** and **Testing Library** unit tests
362
- - **`pnpm run generate:registry`** — runs `scripts/generate-registry.mjs`, which reads **`uiComponentNames`** from `tsup.config.ts`, merges in **`spinner`**, applies fixed **`nameAliases`**, and writes **`cli/registry.json`**. Run this after adding or renaming UI areas so the CLI’s addable list stays in sync (the script prints how many components were written).
374
+ - **`pnpm run generate:registry`** — runs `scripts/generate-registry.mjs`, which reads **`uiComponentNames`** and **`hooksEntryNames`** from `tsup.config.ts`, merges in **`spinner`**, applies fixed **`nameAliases`**, and writes **`cli/registry.json`** (`components` + `hooks`). Run this after adding or renaming UI areas or hook entries so the CLI stays in sync (the script prints counts).
363
375
  - **`prepack`** — invokes `generate:registry` automatically before `npm pack` / publish so the published tarball always ships an up-to-date registry alongside `cli/index.mjs`.
364
376
 
365
377
  ## Github Release log
@@ -48,4 +48,32 @@ describe("zentauri-ui CLI", () => {
48
48
  rmSync(dir, { recursive: true, force: true });
49
49
  }
50
50
  });
51
+
52
+ it("should add hook-only mode for useWindowSize", () => {
53
+ const dir = mkdtempSync(join(tmpdir(), "zentauri-cli-hook-"));
54
+ try {
55
+ runCli(dir, ["init"]);
56
+ runCli(dir, ["add", "hook", "useWindowSize"]);
57
+ const hookFile = join(dir, "src/hooks/useWindowSize/useWindowSize.ts");
58
+ expect(existsSync(hookFile)).toBe(true);
59
+ const src = readFileSync(hookFile, "utf8");
60
+ expect(src).toContain("useWindowSize");
61
+ expect(src).toContain('"use client"');
62
+ } finally {
63
+ rmSync(dir, { recursive: true, force: true });
64
+ }
65
+ });
66
+
67
+ it("should pull transitive hook deps for usePrefersReducedMotion", () => {
68
+ const dir = mkdtempSync(join(tmpdir(), "zentauri-cli-hook-trans-"));
69
+ try {
70
+ runCli(dir, ["init"]);
71
+ runCli(dir, ["add", "hook", "usePrefersReducedMotion"]);
72
+ expect(
73
+ existsSync(join(dir, "src/hooks/useMediaQuery/useMediaQuery.ts")),
74
+ ).toBe(true);
75
+ } finally {
76
+ rmSync(dir, { recursive: true, force: true });
77
+ }
78
+ });
51
79
  });
package/cli/index.mjs CHANGED
@@ -134,8 +134,15 @@ function printHelp() {
134
134
  console.log(`Zentauri UI — copy component source into your app (shadcn-style)
135
135
 
136
136
  Usage:
137
- zentauri-components init [options] Create components.json with defaults
138
- zentauri-components add <names...> Copy one or more components (and deps)
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")}
139
146
 
140
147
  (The zentauri-ui binary name works the same if your PATH exposes it.)
141
148
 
@@ -147,7 +154,11 @@ Options:
147
154
  Local (no npm publish): cd to your app root, then run Node with a path to this CLI (yours may differ):
148
155
  node ../../packages/components/cli/index.mjs init
149
156
  node ../../packages/components/cli/index.mjs add button
150
- Only copies that component’s folder (here: ui/buttons) and creates lib/utils.ts if missing—not the whole monorepo.
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";
151
162
 
152
163
  Published package:
153
164
  npx @zentauri-ui/zentauri-components init
@@ -341,6 +352,25 @@ function resolveComponentName(input, registry) {
341
352
  );
342
353
  }
343
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
+
344
374
  /**
345
375
  * Starting from hook folder names discovered in UI code, expands the set to
346
376
  * include every hook that those hooks import from **sibling** hook packages
@@ -560,9 +590,33 @@ async function cmdAdd(names, cwd) {
560
590
  validateConfig(config);
561
591
 
562
592
  const registry = loadRegistry();
563
- const resolvedNames = names.map((n) => resolveComponentName(n, registry));
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
+ }
564
618
 
565
- await ensureUtilsFile(config, configDir, packageRoot);
619
+ const resolvedNames = payload.map((n) => resolveComponentName(n, registry));
566
620
 
567
621
  const allHooks = new Set();
568
622
  for (const name of resolvedNames) {
@@ -644,7 +698,7 @@ async function main() {
644
698
  if (cmd === "add") {
645
699
  if (rest.length === 0) {
646
700
  console.error(
647
- "Usage: zentauri-components add <component> [more...] (or: zentauri-ui add …)",
701
+ "Usage: zentauri-components add <component> [more...] | add hook <hookName> [more...]",
648
702
  );
649
703
  process.exitCode = 1;
650
704
  return;
package/cli/registry.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "description": "Addable UI component folder names under src/ui. Generated by scripts/generate-registry.mjs.",
3
+ "description": "Addable UI components (src/ui) and hooks (src/hooks). Generated by scripts/generate-registry.mjs.",
4
4
  "components": [
5
5
  "accordion",
6
6
  "alert",
@@ -29,6 +29,33 @@
29
29
  "toggle",
30
30
  "tooltip"
31
31
  ],
32
+ "hooks": [
33
+ "useBodyScrollLock",
34
+ "useClickOutside",
35
+ "useClipboard",
36
+ "useControllableState",
37
+ "useDebouncedValue",
38
+ "useDisclosure",
39
+ "useDocumentTitle",
40
+ "useFocusManagement",
41
+ "useHover",
42
+ "useInView",
43
+ "useIntersectionObserver",
44
+ "useIsMounted",
45
+ "useIsomorphicLayoutEffect",
46
+ "useLocalStorage",
47
+ "useMediaQuery",
48
+ "useNetworkStatus",
49
+ "usePageVisibility",
50
+ "usePagination",
51
+ "usePrefersColorScheme",
52
+ "usePrefersReducedMotion",
53
+ "useResizeObserver",
54
+ "useSessionStorage",
55
+ "useThrottledCallback",
56
+ "useToggle",
57
+ "useWindowSize"
58
+ ],
32
59
  "nameAliases": {
33
60
  "button": "buttons",
34
61
  "input": "inputs"
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@zentauri-ui/zentauri-components",
3
- "version": "1.4.0",
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
6
  "files": ["dist", "src/ui", "src/lib", "src/hooks", "cli"],
7
7
  "sideEffects": false,
@@ -1,27 +0,0 @@
1
- export { cn, clampPage, range } from "../lib/utils";
2
- export { useBodyScrollLock } from "./useBodyScrollLock";
3
- export { useClickOutside, type ClickOutsideEventType, type UseClickOutsideParams, } from "./useClickOutside";
4
- export { useFocusManagement } from "./useFocusManagement";
5
- export { buildPaginationItems, usePagination, type BuildPaginationItemsParams, type PaginationPageItem, } from "./usePagination";
6
- export { useClipboard, type UseClipboardResult } from "./useClipboard";
7
- export { useControllableState, type UseControllableStateParams, } from "./useControllableState";
8
- export { useDebouncedValue } from "./useDebouncedValue";
9
- export { useDisclosure, type UseDisclosureParams, type UseDisclosureResult, } from "./useDisclosure";
10
- export { useDocumentTitle, type UseDocumentTitleParams } from "./useDocumentTitle";
11
- export { useHover } from "./useHover";
12
- export { useInView, type UseInViewParams } from "./useInView";
13
- export { useIntersectionObserver, type UseIntersectionObserverParams, } from "./useIntersectionObserver";
14
- export { useIsomorphicLayoutEffect } from "./useIsomorphicLayoutEffect";
15
- export { useIsMounted } from "./useIsMounted";
16
- export { useLocalStorage, type UseLocalStorageResult } from "./useLocalStorage";
17
- export { useMediaQuery } from "./useMediaQuery";
18
- export { useNetworkStatus } from "./useNetworkStatus";
19
- export { usePageVisibility } from "./usePageVisibility";
20
- export { usePrefersColorScheme, type ColorSchemePreference, } from "./usePrefersColorScheme";
21
- export { usePrefersReducedMotion } from "./usePrefersReducedMotion";
22
- export { useResizeObserver, type ElementSize } from "./useResizeObserver";
23
- export { useSessionStorage, type UseSessionStorageResult } from "./useSessionStorage";
24
- export { useThrottledCallback } from "./useThrottledCallback";
25
- export { useToggle } from "./useToggle";
26
- export { useWindowSize, type WindowSize } from "./useWindowSize";
27
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACL,eAAe,EACf,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,KAAK,0BAA0B,EAC/B,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EACL,oBAAoB,EACpB,KAAK,0BAA0B,GAChC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACL,aAAa,EACb,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,KAAK,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EACL,uBAAuB,EACvB,KAAK,6BAA6B,GACnC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACL,qBAAqB,EACrB,KAAK,qBAAqB,GAC3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,KAAK,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1,2 +0,0 @@
1
- export { useBodyScrollLock } from "./useBodyScrollLock";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useBodyScrollLock/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,13 +0,0 @@
1
- /**
2
- * Locks the document body scroll while `locked` is true by setting `document.body.style.overflow`
3
- * to `"hidden"`. Uses a module-level lock count so multiple concurrent callers (nested modals,
4
- * drawer + modal, several hook instances) only restore the original inline `overflow` after the
5
- * last lock releases.
6
- *
7
- * Typical use: modals, drawers, and full-screen overlays where background content must not scroll.
8
- *
9
- * @param locked - When `true`, body scroll is hidden; when `false`, this instance releases its
10
- * lock; the prior overflow is restored only when no instance still holds a lock.
11
- */
12
- export declare const useBodyScrollLock: (locked: boolean) => void;
13
- //# sourceMappingURL=useBodyScrollLock.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useBodyScrollLock.d.ts","sourceRoot":"","sources":["../../../src/hooks/useBodyScrollLock/useBodyScrollLock.ts"],"names":[],"mappings":"AA0BA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,GAAI,QAAQ,OAAO,SAUhD,CAAC"}
@@ -1,2 +0,0 @@
1
- export { useClickOutside, type ClickOutsideEventType, type UseClickOutsideParams, } from "./useClickOutside";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useClickOutside/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,GAC3B,MAAM,mBAAmB,CAAC"}
@@ -1,22 +0,0 @@
1
- import type { RefObject } from "react";
2
- import { Dispatch, SetStateAction } from "react";
3
- /** DOM events that can represent an “outside” press for closing overlays. */
4
- export type ClickOutsideEventType = "mousedown" | "pointerdown" | "touchstart";
5
- export type UseClickOutsideParams = {
6
- /** Called with `false` when a qualifying event target is outside `ref.current`. */
7
- setOpen: (open: boolean) => void | Dispatch<SetStateAction<boolean>>;
8
- /** Root element of the floating UI; clicks inside this node do not close. */
9
- ref: RefObject<HTMLElement | null>;
10
- /** Defaults to `["mousedown"]` for backward compatibility */
11
- listenEvents?: ClickOutsideEventType[];
12
- };
13
- /**
14
- * Registers document-level listeners so that when the user activates outside of `ref`, `setOpen(false)`
15
- * runs. Useful for dropdowns, popovers, and menus paired with `open` state.
16
- *
17
- * @param params.setOpen - State setter or callback that closes the surface.
18
- * @param params.ref - Container ref; outside is determined with `contains()` on the event target.
19
- * @param params.listenEvents - Which events to listen for; default is `mousedown` only.
20
- */
21
- export declare const useClickOutside: ({ setOpen, ref, listenEvents, }: UseClickOutsideParams) => void;
22
- //# sourceMappingURL=useClickOutside.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useClickOutside.d.ts","sourceRoot":"","sources":["../../../src/hooks/useClickOutside/useClickOutside.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAa,MAAM,OAAO,CAAC;AAE5D,6EAA6E;AAC7E,MAAM,MAAM,qBAAqB,GAC7B,WAAW,GACX,aAAa,GACb,YAAY,CAAC;AAEjB,MAAM,MAAM,qBAAqB,GAAG;IAClC,mFAAmF;IACnF,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,6EAA6E;IAC7E,GAAG,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACnC,6DAA6D;IAC7D,YAAY,CAAC,EAAE,qBAAqB,EAAE,CAAC;CACxC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAAI,iCAI7B,qBAAqB,SAmBvB,CAAC"}
@@ -1,2 +0,0 @@
1
- export { useClipboard, type UseClipboardResult } from "./useClipboard";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useClipboard/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1,21 +0,0 @@
1
- export type UseClipboardResult = {
2
- /** `true` after a successful `copy` until the reset delay elapses or `reset` is called. */
3
- copied: boolean;
4
- /** Set when the Clipboard API is missing or `writeText` rejects (e.g. permission denied). */
5
- error: Error | undefined;
6
- /** Writes `text` via `navigator.clipboard.writeText`; returns whether the write succeeded. */
7
- copy: (text: string) => Promise<boolean>;
8
- /** Clears `copied`/`error` and cancels any pending auto-reset timeout. */
9
- reset: () => void;
10
- };
11
- /**
12
- * Wraps the async Clipboard API with React state for UX feedback (“Copied!”) and error surfacing.
13
- *
14
- * After a successful copy, `copied` flips to `true` for `resetDelay` ms (or stays true if `resetDelay` is 0).
15
- * SSR-safe: `copy` resolves `false` with an error when `navigator.clipboard` is unavailable.
16
- *
17
- * @param resetDelay - Milliseconds before `copied` auto-clears after success; `0` disables auto-clear.
18
- * @returns `{ copied, error, copy, reset }` for rendering and handlers.
19
- */
20
- export declare function useClipboard(resetDelay?: number): UseClipboardResult;
21
- //# sourceMappingURL=useClipboard.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useClipboard.d.ts","sourceRoot":"","sources":["../../../src/hooks/useClipboard/useClipboard.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,2FAA2F;IAC3F,MAAM,EAAE,OAAO,CAAC;IAChB,6FAA6F;IAC7F,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,8FAA8F;IAC9F,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,0EAA0E;IAC1E,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,UAAU,SAAO,GAAG,kBAAkB,CA4ClE"}
@@ -1,2 +0,0 @@
1
- export { useControllableState, type UseControllableStateParams, } from "./useControllableState";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useControllableState/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,KAAK,0BAA0B,GAChC,MAAM,wBAAwB,CAAC"}
@@ -1,21 +0,0 @@
1
- export type UseControllableStateParams<T> = {
2
- /** When defined, the hook is controlled and this value is returned as state. */
3
- value?: T;
4
- /** Initial / fallback value when uncontrolled (`value` is `undefined`). */
5
- defaultValue: T;
6
- /** Notified on every `setValue` with the resolved next value (controlled and uncontrolled). */
7
- onChange?: (next: T) => void;
8
- };
9
- /**
10
- * Implements the React “controlled vs uncontrolled” pattern as a single state tuple.
11
- *
12
- * - If `value` is `undefined`, internal state mirrors `defaultValue` and updates on `setValue`.
13
- * - If `value` is defined, returned state follows `value`; `setValue` still calls `onChange` so the parent can update.
14
- * - `setValue` accepts either the next value or an updater `(prev) => next` (updater uses the current `value` in controlled mode).
15
- *
16
- * @typeParam T - State value type.
17
- * @param params - `value`, `defaultValue`, and optional `onChange`.
18
- * @returns `[value, setValue]` compatible with `useState`-style usage.
19
- */
20
- export declare function useControllableState<T>({ value: valueProp, defaultValue, onChange, }: UseControllableStateParams<T>): [T, (next: T | ((prev: T) => T)) => void];
21
- //# sourceMappingURL=useControllableState.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useControllableState.d.ts","sourceRoot":"","sources":["../../../src/hooks/useControllableState/useControllableState.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,0BAA0B,CAAC,CAAC,IAAI;IAC1C,gFAAgF;IAChF,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,2EAA2E;IAC3E,YAAY,EAAE,CAAC,CAAC;IAChB,+FAA+F;IAC/F,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;CAC9B,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,EACtC,KAAK,EAAE,SAAS,EAChB,YAAY,EACZ,QAAQ,GACT,EAAE,0BAA0B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAoB3E"}
@@ -1,2 +0,0 @@
1
- export { useDebouncedValue } from "./useDebouncedValue";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDebouncedValue/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,13 +0,0 @@
1
- /**
2
- * Returns a lagged copy of `value` that only updates after `value` has been stable for `delayMs`.
3
- * Each change to `value` or `delayMs` resets the timer; rapid updates collapse into one committed update.
4
- *
5
- * Common uses: search inputs, resize-driven layout, or any expensive work that should not run on every keystroke.
6
- *
7
- * @typeParam T - Value type (any JSON-serializable or referential type).
8
- * @param value - Live value from props or state.
9
- * @param delayMs - Debounce interval in milliseconds.
10
- * @returns The last value that survived the full delay without a newer `value` arriving.
11
- */
12
- export declare function useDebouncedValue<T>(value: T, delayMs: number): T;
13
- //# sourceMappingURL=useDebouncedValue.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useDebouncedValue.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDebouncedValue/useDebouncedValue.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC,CAajE"}
@@ -1,2 +0,0 @@
1
- export { useDisclosure, type UseDisclosureParams, type UseDisclosureResult, } from "./useDisclosure";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDisclosure/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,GACzB,MAAM,iBAAiB,CAAC"}
@@ -1,24 +0,0 @@
1
- export type UseDisclosureParams = {
2
- /** Controlled open flag; omit for uncontrolled usage with `defaultOpen`. */
3
- open?: boolean;
4
- /** Initial open state when uncontrolled. */
5
- defaultOpen?: boolean;
6
- /** Fired whenever open state changes from user-driven `setOpen` / `open` / `close` / `toggle`. */
7
- onOpenChange?: (open: boolean) => void;
8
- };
9
- export type UseDisclosureResult = {
10
- isOpen: boolean;
11
- open: () => void;
12
- close: () => void;
13
- toggle: () => void;
14
- setOpen: (open: boolean) => void;
15
- };
16
- /**
17
- * Boolean open/close state for overlays (dialogs, menus, collapsible regions) with optional control from the parent.
18
- * Built on {@link useControllableState}; semantics match common headless UI libraries.
19
- *
20
- * @param params - Optional `open`, `defaultOpen`, and `onOpenChange`.
21
- * @returns Helpers `open`, `close`, `toggle`, `setOpen`, and the current `isOpen` flag.
22
- */
23
- export declare function useDisclosure({ open: openProp, defaultOpen, onOpenChange, }?: UseDisclosureParams): UseDisclosureResult;
24
- //# sourceMappingURL=useDisclosure.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useDisclosure.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDisclosure/useDisclosure.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,mBAAmB,GAAG;IAChC,4EAA4E;IAC5E,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,4CAA4C;IAC5C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kGAAkG;IAClG,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CAClC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EAAE,QAAQ,EACd,WAAmB,EACnB,YAAY,GACb,GAAE,mBAAwB,GAAG,mBAAmB,CA2BhD"}
@@ -1,2 +0,0 @@
1
- export { useDocumentTitle, type UseDocumentTitleParams, } from "./useDocumentTitle";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDocumentTitle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,KAAK,sBAAsB,GAC5B,MAAM,oBAAoB,CAAC"}
@@ -1,18 +0,0 @@
1
- export type UseDocumentTitleParams = {
2
- title: string;
3
- /** When true (default), restores the document title from before this hook mounted when the component unmounts */
4
- restoreOnUnmount?: boolean;
5
- };
6
- /**
7
- * Keeps `document.title` in sync with `title` for the lifetime of the component.
8
- *
9
- * On first mount in the browser, the current title is captured. When `title` changes, the document title updates.
10
- * If `restoreOnUnmount` is true when the component unmounts, the captured title is restored so nested routes or
11
- * modals do not leak titles. Changing `restoreOnUnmount` while mounted does not run restore; only unmount does.
12
- *
13
- * @param params.title - Desired `document.title` string.
14
- * @param params.restoreOnUnmount - Whether to restore the pre-mount title on unmount (default `true`). The value
15
- * read at unmount time determines behavior, not mid-mount prop changes.
16
- */
17
- export declare function useDocumentTitle({ title, restoreOnUnmount, }: UseDocumentTitleParams): void;
18
- //# sourceMappingURL=useDocumentTitle.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useDocumentTitle.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDocumentTitle/useDocumentTitle.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,iHAAiH;IACjH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,gBAAuB,GACxB,EAAE,sBAAsB,GAAG,IAAI,CAiC/B"}
@@ -1,2 +0,0 @@
1
- export { useFocusManagement } from "./useFocusManagement";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useFocusManagement/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1,22 +0,0 @@
1
- import type { RefObject } from "react";
2
- /**
3
- * Composes modal-like behavior for an open overlay: body scroll lock, Escape to close, and focus trapping.
4
- *
5
- * - Delegates scroll locking to {@link useBodyScrollLock} while `open` is true.
6
- * - Listens for `Escape` on `window` and calls `setOpen(false)`.
7
- * - When `open` becomes true, focuses the first visible focusable inside `contentRef`, or the container itself.
8
- * - Traps focus within `contentRef` via a capturing `focusin` listener on `document` that redirects focus back inside.
9
- * - On close/unmount of the open effect, restores focus to the element that was focused before the trap ran.
10
- *
11
- * @param params.open - Whether the overlay is visible.
12
- * @param params.setOpen - Setter used for Escape and cleanup paths.
13
- * @param params.contentRef - Root of the dialog/drawer content (must point at a focusable container or include focusables).
14
- * @param params.focusableSelector - Query selector for tabbable elements; defaults to a common interactive set.
15
- */
16
- export declare const useFocusManagement: ({ open, setOpen, contentRef, focusableSelector, }: {
17
- open: boolean;
18
- setOpen: (open: boolean) => void;
19
- contentRef: RefObject<HTMLDivElement | null>;
20
- focusableSelector?: string;
21
- }) => void;
22
- //# sourceMappingURL=useFocusManagement.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useFocusManagement.d.ts","sourceRoot":"","sources":["../../../src/hooks/useFocusManagement/useFocusManagement.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAOvC;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,kBAAkB,GAAI,mDAKhC;IACD,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACjC,UAAU,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,SA2CA,CAAC"}
@@ -1,2 +0,0 @@
1
- export { useHover } from "./useHover";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useHover/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
@@ -1,13 +0,0 @@
1
- import type { RefCallback } from "react";
2
- /**
3
- * Tracks pointer hover state for a single DOM node using `pointerenter` / `pointerleave`.
4
- *
5
- * When the ref target changes (or unmounts), hover is cleared so state does not stay `true` after
6
- * retargeting without a `pointerleave` on the previous node.
7
- *
8
- * @typeParam T - HTMLElement subtype for the ref callback (e.g. `HTMLDivElement`).
9
- * @returns A tuple `[setRef, hovered]` where `setRef` is a callback ref to attach to the target element
10
- * and `hovered` is `true` while the pointer is over that element (primary button agnostic).
11
- */
12
- export declare function useHover<T extends HTMLElement>(): [RefCallback<T>, boolean];
13
- //# sourceMappingURL=useHover.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useHover.d.ts","sourceRoot":"","sources":["../../../src/hooks/useHover/useHover.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAGzC;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,WAAW,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CA6B3E"}
@@ -1,2 +0,0 @@
1
- export { useInView, type UseInViewParams } from "./useInView";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useInView/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC"}
@@ -1,17 +0,0 @@
1
- import type { RefCallback } from "react";
2
- export type UseInViewParams = IntersectionObserverInit & {
3
- /** When `false`, no observer is attached (useful to pause work when off-screen lists are virtualized). */
4
- enabled?: boolean;
5
- };
6
- /**
7
- * Convenience wrapper around {@link useIntersectionObserver} that exposes only a boolean `inView` flag.
8
- *
9
- * `inView` is `true` when the latest `IntersectionObserverEntry.isIntersecting` is truthy; otherwise `false`.
10
- * Accepts the same `root`, `rootMargin`, `threshold`, and `enabled` options as the underlying observer.
11
- *
12
- * @typeParam T - Observed element type.
13
- * @param params - IntersectionObserver options plus optional `enabled` flag.
14
- * @returns `[setRef, inView]` callback ref and intersection boolean.
15
- */
16
- export declare function useInView<T extends Element>(params?: UseInViewParams): [RefCallback<T>, boolean];
17
- //# sourceMappingURL=useInView.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useInView.d.ts","sourceRoot":"","sources":["../../../src/hooks/useInView/useInView.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAIzC,MAAM,MAAM,eAAe,GAAG,wBAAwB,GAAG;IACvD,0GAA0G;IAC1G,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,OAAO,EACzC,MAAM,GAAE,eAAoB,GAC3B,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAI3B"}
@@ -1,2 +0,0 @@
1
- export { useIntersectionObserver, type UseIntersectionObserverParams, } from "./useIntersectionObserver";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useIntersectionObserver/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,KAAK,6BAA6B,GACnC,MAAM,2BAA2B,CAAC"}