@zentauri-ui/zentauri-components 1.7.4 → 1.7.6

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 (370) hide show
  1. package/README.md +9 -4
  2. package/cli/registry.json +3 -0
  3. package/dist/{chunk-CL55KGDF.js → chunk-3W224B3M.js} +22 -22
  4. package/dist/chunk-3W224B3M.js.map +1 -0
  5. package/dist/{chunk-NZDHSIIC.js → chunk-4OCTFG3W.js} +3 -3
  6. package/dist/chunk-4OCTFG3W.js.map +1 -0
  7. package/dist/{chunk-4ZKBLVQX.js → chunk-5565GZ4T.js} +19 -19
  8. package/dist/chunk-5565GZ4T.js.map +1 -0
  9. package/dist/{chunk-BTJYXKCW.js → chunk-6HPS3ZOP.js} +15 -15
  10. package/dist/chunk-6HPS3ZOP.js.map +1 -0
  11. package/dist/chunk-7XCUMSCJ.mjs +80 -0
  12. package/dist/chunk-7XCUMSCJ.mjs.map +1 -0
  13. package/dist/{chunk-QAJOE3HJ.js → chunk-BU2MPXPZ.js} +6 -6
  14. package/dist/chunk-BU2MPXPZ.js.map +1 -0
  15. package/dist/{chunk-BC6M42HQ.mjs → chunk-CL3VH223.mjs} +21 -21
  16. package/dist/chunk-CL3VH223.mjs.map +1 -0
  17. package/dist/{chunk-QXHS3HHZ.mjs → chunk-D3VZKUMH.mjs} +15 -15
  18. package/dist/chunk-D3VZKUMH.mjs.map +1 -0
  19. package/dist/chunk-DEZRB6DS.mjs +83 -0
  20. package/dist/chunk-DEZRB6DS.mjs.map +1 -0
  21. package/dist/{chunk-EDARAO7X.js → chunk-DFCDLVZA.js} +7 -7
  22. package/dist/chunk-DFCDLVZA.js.map +1 -0
  23. package/dist/{chunk-ACGVDY5J.mjs → chunk-EZCYSFML.mjs} +4 -4
  24. package/dist/chunk-EZCYSFML.mjs.map +1 -0
  25. package/dist/{chunk-ZYKJC5HH.js → chunk-G66SXATZ.js} +15 -15
  26. package/dist/chunk-G66SXATZ.js.map +1 -0
  27. package/dist/{chunk-QBPVJH4P.mjs → chunk-H7WDA6U6.mjs} +5 -5
  28. package/dist/chunk-H7WDA6U6.mjs.map +1 -0
  29. package/dist/{chunk-OZMSE44N.mjs → chunk-HLG2YJFZ.mjs} +19 -19
  30. package/dist/chunk-HLG2YJFZ.mjs.map +1 -0
  31. package/dist/{chunk-QYLTKBH7.js → chunk-INXWZ4DS.js} +3 -3
  32. package/dist/chunk-INXWZ4DS.js.map +1 -0
  33. package/dist/{chunk-QSPXPU72.js → chunk-KTLJEPLF.js} +21 -21
  34. package/dist/chunk-KTLJEPLF.js.map +1 -0
  35. package/dist/chunk-LMIL2R4R.js +197 -0
  36. package/dist/chunk-LMIL2R4R.js.map +1 -0
  37. package/dist/{chunk-PR4QXFJT.js → chunk-LNYCEPW5.js} +5 -5
  38. package/dist/chunk-LNYCEPW5.js.map +1 -0
  39. package/dist/chunk-MEAVYU2Y.mjs +192 -0
  40. package/dist/chunk-MEAVYU2Y.mjs.map +1 -0
  41. package/dist/{chunk-P5WLYJ2C.mjs → chunk-NNZXBL7R.mjs} +6 -6
  42. package/dist/chunk-NNZXBL7R.mjs.map +1 -0
  43. package/dist/{chunk-HMNIH3KJ.mjs → chunk-ORFI4BCJ.mjs} +3 -3
  44. package/dist/chunk-ORFI4BCJ.mjs.map +1 -0
  45. package/dist/{chunk-K7TCW5PJ.js → chunk-PMALYOPA.js} +3 -3
  46. package/dist/chunk-PMALYOPA.js.map +1 -0
  47. package/dist/{chunk-WPXQHWPV.js → chunk-PYUZOVLY.js} +4 -4
  48. package/dist/chunk-PYUZOVLY.js.map +1 -0
  49. package/dist/{chunk-ITVMSCOJ.mjs → chunk-R2JJTREQ.mjs} +22 -22
  50. package/dist/chunk-R2JJTREQ.mjs.map +1 -0
  51. package/dist/chunk-RIHJAEOL.js +107 -0
  52. package/dist/chunk-RIHJAEOL.js.map +1 -0
  53. package/dist/{chunk-FHLZH3PB.mjs → chunk-SFRS4EZ5.mjs} +3 -3
  54. package/dist/chunk-SFRS4EZ5.mjs.map +1 -0
  55. package/dist/{chunk-KTGV76M3.mjs → chunk-SSJXWD2M.mjs} +3 -3
  56. package/dist/chunk-SSJXWD2M.mjs.map +1 -0
  57. package/dist/{chunk-YAO62VH2.js → chunk-UGH23TAH.js} +15 -15
  58. package/dist/chunk-UGH23TAH.js.map +1 -0
  59. package/dist/chunk-UPZ5XGUD.mjs +100 -0
  60. package/dist/chunk-UPZ5XGUD.mjs.map +1 -0
  61. package/dist/{chunk-4XVNQ7IY.mjs → chunk-UR7TNW45.mjs} +15 -15
  62. package/dist/chunk-UR7TNW45.mjs.map +1 -0
  63. package/dist/{chunk-HCGSEPOD.mjs → chunk-UROKWFPX.mjs} +7 -7
  64. package/dist/chunk-UROKWFPX.mjs.map +1 -0
  65. package/dist/chunk-V5JTDRV5.mjs +278 -0
  66. package/dist/chunk-V5JTDRV5.mjs.map +1 -0
  67. package/dist/{chunk-XRDVD2EN.js → chunk-X3O45MPI.js} +3 -3
  68. package/dist/{chunk-XRDVD2EN.js.map → chunk-X3O45MPI.js.map} +1 -1
  69. package/dist/{chunk-KEKMMNL5.mjs → chunk-XXRDLZW7.mjs} +3 -3
  70. package/dist/chunk-XXRDLZW7.mjs.map +1 -0
  71. package/dist/chunk-Z4KHAD6Y.js +295 -0
  72. package/dist/chunk-Z4KHAD6Y.js.map +1 -0
  73. package/dist/{chunk-NHQ3S4Y6.mjs → chunk-ZIFMIS7D.mjs} +15 -15
  74. package/dist/chunk-ZIFMIS7D.mjs.map +1 -0
  75. package/dist/chunk-ZUT7ZUM7.js +84 -0
  76. package/dist/chunk-ZUT7ZUM7.js.map +1 -0
  77. package/dist/chunk-ZX2IBIZT.js +92 -0
  78. package/dist/chunk-ZX2IBIZT.js.map +1 -0
  79. package/dist/design-system/accordion.d.ts +1 -1
  80. package/dist/design-system/alert.d.ts +5 -5
  81. package/dist/design-system/badge.d.ts +3 -3
  82. package/dist/design-system/card.d.ts +2 -2
  83. package/dist/design-system/checkbox.d.ts +10 -10
  84. package/dist/design-system/checkbox.d.ts.map +1 -1
  85. package/dist/design-system/command.d.ts +1 -1
  86. package/dist/design-system/command.d.ts.map +1 -1
  87. package/dist/design-system/context-menu.d.ts +41 -0
  88. package/dist/design-system/context-menu.d.ts.map +1 -0
  89. package/dist/design-system/drawer.d.ts +1 -1
  90. package/dist/design-system/dropdown.d.ts +31 -31
  91. package/dist/design-system/dropdown.d.ts.map +1 -1
  92. package/dist/design-system/file-upload.d.ts +15 -15
  93. package/dist/design-system/file-upload.d.ts.map +1 -1
  94. package/dist/design-system/index.d.ts +3 -0
  95. package/dist/design-system/index.d.ts.map +1 -1
  96. package/dist/design-system/inputs.d.ts +13 -13
  97. package/dist/design-system/inputs.d.ts.map +1 -1
  98. package/dist/design-system/modal.d.ts +1 -1
  99. package/dist/design-system/modal.d.ts.map +1 -1
  100. package/dist/design-system/pagination.d.ts +25 -25
  101. package/dist/design-system/popover.d.ts +19 -19
  102. package/dist/design-system/popover.d.ts.map +1 -1
  103. package/dist/design-system/radio-group.d.ts +10 -10
  104. package/dist/design-system/radio-group.d.ts.map +1 -1
  105. package/dist/design-system/scroll-area.d.ts +33 -0
  106. package/dist/design-system/scroll-area.d.ts.map +1 -0
  107. package/dist/design-system/select.d.ts +35 -35
  108. package/dist/design-system/select.d.ts.map +1 -1
  109. package/dist/design-system/skeleton.d.ts +13 -13
  110. package/dist/design-system/skeleton.d.ts.map +1 -1
  111. package/dist/design-system/slider.d.ts +23 -23
  112. package/dist/design-system/slider.d.ts.map +1 -1
  113. package/dist/design-system/stepper.d.ts +22 -22
  114. package/dist/design-system/table.d.ts +13 -13
  115. package/dist/design-system/tabs.d.ts +4 -4
  116. package/dist/design-system/tabs.d.ts.map +1 -1
  117. package/dist/design-system/timeline.d.ts +56 -0
  118. package/dist/design-system/timeline.d.ts.map +1 -0
  119. package/dist/design-system/toast.d.ts +17 -17
  120. package/dist/design-system/toast.d.ts.map +1 -1
  121. package/dist/design-system/toggle.d.ts +54 -54
  122. package/dist/design-system/toggle.d.ts.map +1 -1
  123. package/dist/design-system/tooltip.d.ts +20 -20
  124. package/dist/design-system/typography.d.ts +15 -15
  125. package/dist/ui/accordion/animated.js +7 -7
  126. package/dist/ui/accordion/animated.mjs +2 -2
  127. package/dist/ui/accordion.js +9 -9
  128. package/dist/ui/accordion.mjs +2 -2
  129. package/dist/ui/alert/animated/alert-animated.d.ts.map +1 -1
  130. package/dist/ui/alert/animated.js +2 -2
  131. package/dist/ui/alert/animated.js.map +1 -1
  132. package/dist/ui/alert/animated.mjs +1 -1
  133. package/dist/ui/alert/animated.mjs.map +1 -1
  134. package/dist/ui/alert.js +10 -10
  135. package/dist/ui/alert.mjs +2 -2
  136. package/dist/ui/badge/animated.js +2 -2
  137. package/dist/ui/badge/animated.mjs +1 -1
  138. package/dist/ui/badge/variants.d.ts +1 -1
  139. package/dist/ui/badge.js +4 -4
  140. package/dist/ui/badge.mjs +2 -2
  141. package/dist/ui/card/animated.js +7 -7
  142. package/dist/ui/card/animated.mjs +2 -2
  143. package/dist/ui/card.js +12 -12
  144. package/dist/ui/card.mjs +2 -2
  145. package/dist/ui/checkbox/animated.js +4 -4
  146. package/dist/ui/checkbox/animated.mjs +1 -1
  147. package/dist/ui/checkbox.js +8 -8
  148. package/dist/ui/checkbox.mjs +2 -2
  149. package/dist/ui/command/animated.js +2 -2
  150. package/dist/ui/command/animated.mjs +1 -1
  151. package/dist/ui/command.js +15 -15
  152. package/dist/ui/command.mjs +2 -2
  153. package/dist/ui/context-menu/context-menu.d.ts +11 -0
  154. package/dist/ui/context-menu/context-menu.d.ts.map +1 -0
  155. package/dist/ui/context-menu/index.d.ts +4 -0
  156. package/dist/ui/context-menu/index.d.ts.map +1 -0
  157. package/dist/ui/context-menu/types.d.ts +81 -0
  158. package/dist/ui/context-menu/types.d.ts.map +1 -0
  159. package/dist/ui/context-menu/variants.d.ts +7 -0
  160. package/dist/ui/context-menu/variants.d.ts.map +1 -0
  161. package/dist/ui/context-menu.js +500 -0
  162. package/dist/ui/context-menu.js.map +1 -0
  163. package/dist/ui/context-menu.mjs +488 -0
  164. package/dist/ui/context-menu.mjs.map +1 -0
  165. package/dist/ui/drawer/animated.js +11 -11
  166. package/dist/ui/drawer/animated.mjs +2 -2
  167. package/dist/ui/drawer.js +11 -11
  168. package/dist/ui/drawer.mjs +1 -1
  169. package/dist/ui/dropdown.js +9 -89
  170. package/dist/ui/dropdown.js.map +1 -1
  171. package/dist/ui/dropdown.mjs +1 -81
  172. package/dist/ui/dropdown.mjs.map +1 -1
  173. package/dist/ui/dynamic-stepper.js +47 -47
  174. package/dist/ui/dynamic-stepper.js.map +1 -1
  175. package/dist/ui/dynamic-stepper.mjs +47 -47
  176. package/dist/ui/dynamic-stepper.mjs.map +1 -1
  177. package/dist/ui/file-upload.js +15 -15
  178. package/dist/ui/file-upload.js.map +1 -1
  179. package/dist/ui/file-upload.mjs +15 -15
  180. package/dist/ui/file-upload.mjs.map +1 -1
  181. package/dist/ui/inputs/animated.js +3 -3
  182. package/dist/ui/inputs/animated.mjs +1 -1
  183. package/dist/ui/inputs.js +4 -4
  184. package/dist/ui/inputs.mjs +2 -2
  185. package/dist/ui/modal/animated.js +4 -4
  186. package/dist/ui/modal/animated.mjs +1 -1
  187. package/dist/ui/modal.js +12 -12
  188. package/dist/ui/modal.mjs +2 -2
  189. package/dist/ui/pagination.js +25 -25
  190. package/dist/ui/pagination.js.map +1 -1
  191. package/dist/ui/pagination.mjs +25 -25
  192. package/dist/ui/pagination.mjs.map +1 -1
  193. package/dist/ui/popover/animated.js +4 -4
  194. package/dist/ui/popover/animated.mjs +1 -1
  195. package/dist/ui/popover.js +7 -7
  196. package/dist/ui/popover.mjs +1 -1
  197. package/dist/ui/radio-group/animated.js +7 -7
  198. package/dist/ui/radio-group/animated.mjs +1 -1
  199. package/dist/ui/radio-group.js +11 -11
  200. package/dist/ui/radio-group.mjs +2 -2
  201. package/dist/ui/scroll-area/index.d.ts +4 -0
  202. package/dist/ui/scroll-area/index.d.ts.map +1 -0
  203. package/dist/ui/scroll-area/scroll-area.d.ts +6 -0
  204. package/dist/ui/scroll-area/scroll-area.d.ts.map +1 -0
  205. package/dist/ui/scroll-area/types.d.ts +8 -0
  206. package/dist/ui/scroll-area/types.d.ts.map +1 -0
  207. package/dist/ui/scroll-area/variants.d.ts +8 -0
  208. package/dist/ui/scroll-area/variants.d.ts.map +1 -0
  209. package/dist/ui/scroll-area.js +123 -0
  210. package/dist/ui/scroll-area.js.map +1 -0
  211. package/dist/ui/scroll-area.mjs +120 -0
  212. package/dist/ui/scroll-area.mjs.map +1 -0
  213. package/dist/ui/search.js +2 -2
  214. package/dist/ui/search.mjs +1 -1
  215. package/dist/ui/select.js +35 -35
  216. package/dist/ui/select.js.map +1 -1
  217. package/dist/ui/select.mjs +35 -35
  218. package/dist/ui/select.mjs.map +1 -1
  219. package/dist/ui/skeleton/animated.js +8 -8
  220. package/dist/ui/skeleton/animated.mjs +1 -1
  221. package/dist/ui/skeleton.js +9 -9
  222. package/dist/ui/skeleton.mjs +1 -1
  223. package/dist/ui/slider.js +23 -23
  224. package/dist/ui/slider.js.map +1 -1
  225. package/dist/ui/slider.mjs +23 -23
  226. package/dist/ui/slider.mjs.map +1 -1
  227. package/dist/ui/stepper.js +22 -22
  228. package/dist/ui/stepper.js.map +1 -1
  229. package/dist/ui/stepper.mjs +22 -22
  230. package/dist/ui/stepper.mjs.map +1 -1
  231. package/dist/ui/table/animated.js +8 -8
  232. package/dist/ui/table/animated.mjs +2 -2
  233. package/dist/ui/table.js +14 -14
  234. package/dist/ui/table.mjs +1 -1
  235. package/dist/ui/tabs/animated.js +2 -2
  236. package/dist/ui/tabs/animated.mjs +1 -1
  237. package/dist/ui/tabs.js +9 -9
  238. package/dist/ui/tabs.mjs +1 -1
  239. package/dist/ui/timeline/animated/animations.d.ts +8 -0
  240. package/dist/ui/timeline/animated/animations.d.ts.map +1 -0
  241. package/dist/ui/timeline/animated/index.d.ts +6 -0
  242. package/dist/ui/timeline/animated/index.d.ts.map +1 -0
  243. package/dist/ui/timeline/animated/timeline-item-animated.d.ts +8 -0
  244. package/dist/ui/timeline/animated/timeline-item-animated.d.ts.map +1 -0
  245. package/dist/ui/timeline/animated/types.d.ts +12 -0
  246. package/dist/ui/timeline/animated/types.d.ts.map +1 -0
  247. package/dist/ui/timeline/animated.js +94 -0
  248. package/dist/ui/timeline/animated.js.map +1 -0
  249. package/dist/ui/timeline/animated.mjs +71 -0
  250. package/dist/ui/timeline/animated.mjs.map +1 -0
  251. package/dist/ui/timeline/index.d.ts +4 -0
  252. package/dist/ui/timeline/index.d.ts.map +1 -0
  253. package/dist/ui/timeline/timeline-base.d.ts +37 -0
  254. package/dist/ui/timeline/timeline-base.d.ts.map +1 -0
  255. package/dist/ui/timeline/timeline.d.ts +8 -0
  256. package/dist/ui/timeline/timeline.d.ts.map +1 -0
  257. package/dist/ui/timeline/types.d.ts +38 -0
  258. package/dist/ui/timeline/types.d.ts.map +1 -0
  259. package/dist/ui/timeline/variants.d.ts +19 -0
  260. package/dist/ui/timeline/variants.d.ts.map +1 -0
  261. package/dist/ui/timeline.js +63 -0
  262. package/dist/ui/timeline.js.map +1 -0
  263. package/dist/ui/timeline.mjs +14 -0
  264. package/dist/ui/timeline.mjs.map +1 -0
  265. package/dist/ui/toast/animated.js +7 -7
  266. package/dist/ui/toast/animated.mjs +1 -1
  267. package/dist/ui/toast.js +12 -12
  268. package/dist/ui/toast.mjs +1 -1
  269. package/dist/ui/toggle/animated.js +4 -4
  270. package/dist/ui/toggle/animated.mjs +1 -1
  271. package/dist/ui/toggle.js +4 -4
  272. package/dist/ui/toggle.mjs +2 -2
  273. package/dist/ui/tooltip/animated.js +3 -3
  274. package/dist/ui/tooltip/animated.mjs +1 -1
  275. package/dist/ui/tooltip.js +7 -7
  276. package/dist/ui/tooltip.mjs +1 -1
  277. package/dist/ui/typography.js +15 -15
  278. package/dist/ui/typography.js.map +1 -1
  279. package/dist/ui/typography.mjs +15 -15
  280. package/dist/ui/typography.mjs.map +1 -1
  281. package/package.json +1 -1
  282. package/src/design-system/accordion.ts +1 -1
  283. package/src/design-system/alert.ts +5 -5
  284. package/src/design-system/badge.ts +3 -3
  285. package/src/design-system/card.ts +2 -2
  286. package/src/design-system/checkbox.ts +10 -12
  287. package/src/design-system/command.ts +1 -1
  288. package/src/design-system/context-menu.ts +44 -0
  289. package/src/design-system/drawer.ts +1 -1
  290. package/src/design-system/dropdown.ts +31 -31
  291. package/src/design-system/dynamic-stepper.ts +47 -47
  292. package/src/design-system/file-upload.ts +15 -15
  293. package/src/design-system/index.ts +3 -0
  294. package/src/design-system/inputs.ts +13 -13
  295. package/src/design-system/modal.ts +1 -1
  296. package/src/design-system/pagination.ts +25 -25
  297. package/src/design-system/popover.ts +19 -23
  298. package/src/design-system/radio-group.ts +10 -12
  299. package/src/design-system/scroll-area.ts +47 -0
  300. package/src/design-system/select.ts +36 -35
  301. package/src/design-system/skeleton.ts +20 -13
  302. package/src/design-system/slider.ts +23 -23
  303. package/src/design-system/stepper.ts +22 -22
  304. package/src/design-system/table.ts +13 -13
  305. package/src/design-system/tabs.ts +5 -4
  306. package/src/design-system/timeline.ts +87 -0
  307. package/src/design-system/toast.ts +17 -17
  308. package/src/design-system/toggle.ts +55 -54
  309. package/src/design-system/tooltip.ts +20 -20
  310. package/src/design-system/typography.ts +15 -15
  311. package/src/ui/alert/animated/alert-animated.tsx +1 -0
  312. package/src/ui/context-menu/context-menu.test.tsx +176 -0
  313. package/src/ui/context-menu/context-menu.tsx +536 -0
  314. package/src/ui/context-menu/index.ts +29 -0
  315. package/src/ui/context-menu/types.ts +110 -0
  316. package/src/ui/context-menu/variants.ts +26 -0
  317. package/src/ui/scroll-area/index.ts +5 -0
  318. package/src/ui/scroll-area/scroll-area.test.tsx +116 -0
  319. package/src/ui/scroll-area/scroll-area.tsx +62 -0
  320. package/src/ui/scroll-area/types.ts +11 -0
  321. package/src/ui/scroll-area/variants.ts +44 -0
  322. package/src/ui/timeline/animated/animations.ts +16 -0
  323. package/src/ui/timeline/animated/index.ts +22 -0
  324. package/src/ui/timeline/animated/timeline-item-animated.tsx +76 -0
  325. package/src/ui/timeline/animated/types.ts +21 -0
  326. package/src/ui/timeline/index.ts +30 -0
  327. package/src/ui/timeline/timeline-base.tsx +232 -0
  328. package/src/ui/timeline/timeline.test.tsx +262 -0
  329. package/src/ui/timeline/timeline.tsx +24 -0
  330. package/src/ui/timeline/types.ts +61 -0
  331. package/src/ui/timeline/variants.ts +60 -0
  332. package/dist/chunk-4XVNQ7IY.mjs.map +0 -1
  333. package/dist/chunk-4ZKBLVQX.js.map +0 -1
  334. package/dist/chunk-6QQUQLPB.js +0 -107
  335. package/dist/chunk-6QQUQLPB.js.map +0 -1
  336. package/dist/chunk-ACGVDY5J.mjs.map +0 -1
  337. package/dist/chunk-BC6M42HQ.mjs.map +0 -1
  338. package/dist/chunk-BTJYXKCW.js.map +0 -1
  339. package/dist/chunk-CL55KGDF.js.map +0 -1
  340. package/dist/chunk-EDARAO7X.js.map +0 -1
  341. package/dist/chunk-EN4VLNBF.js +0 -197
  342. package/dist/chunk-EN4VLNBF.js.map +0 -1
  343. package/dist/chunk-FHLZH3PB.mjs.map +0 -1
  344. package/dist/chunk-HCGSEPOD.mjs.map +0 -1
  345. package/dist/chunk-HMNIH3KJ.mjs.map +0 -1
  346. package/dist/chunk-ITVMSCOJ.mjs.map +0 -1
  347. package/dist/chunk-K6IZANTI.mjs +0 -80
  348. package/dist/chunk-K6IZANTI.mjs.map +0 -1
  349. package/dist/chunk-K7TCW5PJ.js.map +0 -1
  350. package/dist/chunk-KEKMMNL5.mjs.map +0 -1
  351. package/dist/chunk-KTGV76M3.mjs.map +0 -1
  352. package/dist/chunk-MTTXLC2V.mjs +0 -100
  353. package/dist/chunk-MTTXLC2V.mjs.map +0 -1
  354. package/dist/chunk-NHQ3S4Y6.mjs.map +0 -1
  355. package/dist/chunk-NZDHSIIC.js.map +0 -1
  356. package/dist/chunk-OZMSE44N.mjs.map +0 -1
  357. package/dist/chunk-P5WLYJ2C.mjs.map +0 -1
  358. package/dist/chunk-PHEUJ4EF.js +0 -84
  359. package/dist/chunk-PHEUJ4EF.js.map +0 -1
  360. package/dist/chunk-PMWRJ2KS.mjs +0 -192
  361. package/dist/chunk-PMWRJ2KS.mjs.map +0 -1
  362. package/dist/chunk-PR4QXFJT.js.map +0 -1
  363. package/dist/chunk-QAJOE3HJ.js.map +0 -1
  364. package/dist/chunk-QBPVJH4P.mjs.map +0 -1
  365. package/dist/chunk-QSPXPU72.js.map +0 -1
  366. package/dist/chunk-QXHS3HHZ.mjs.map +0 -1
  367. package/dist/chunk-QYLTKBH7.js.map +0 -1
  368. package/dist/chunk-WPXQHWPV.js.map +0 -1
  369. package/dist/chunk-YAO62VH2.js.map +0 -1
  370. package/dist/chunk-ZYKJC5HH.js.map +0 -1
@@ -0,0 +1,116 @@
1
+ import { render, screen } from "@testing-library/react";
2
+ import { describe, expect, it } from "vitest";
3
+
4
+ import { ScrollArea } from "./scroll-area";
5
+
6
+ describe("ScrollArea", () => {
7
+ it("exposes a display name", () => {
8
+ expect(ScrollArea.displayName).toBe("ScrollArea");
9
+ });
10
+
11
+ it("renders children in the viewport slot", () => {
12
+ render(
13
+ <ScrollArea>
14
+ <p>Scrollable content</p>
15
+ </ScrollArea>,
16
+ );
17
+
18
+ expect(document.querySelector('[data-slot="scroll-area"]')).toBeTruthy();
19
+ expect(
20
+ document.querySelector('[data-slot="scroll-area-viewport"]'),
21
+ ).toBeTruthy();
22
+ expect(screen.getByText("Scrollable content")).toBeInTheDocument();
23
+ });
24
+
25
+ it("applies horizontal orientation metadata and overflow classes", () => {
26
+ render(
27
+ <ScrollArea orientation="horizontal" data-testid="scroll-area">
28
+ Wide content
29
+ </ScrollArea>,
30
+ );
31
+
32
+ const area = screen.getByTestId("scroll-area");
33
+ expect(area).toHaveAttribute("data-orientation", "horizontal");
34
+ expect(area.className).toContain("overflow-x-auto");
35
+ expect(area.className).toContain("overflow-y-hidden");
36
+ });
37
+
38
+ it("applies both-axis orientation metadata and overflow classes", () => {
39
+ render(
40
+ <ScrollArea orientation="both" data-testid="scroll-area">
41
+ Wide and tall content
42
+ </ScrollArea>,
43
+ );
44
+
45
+ const area = screen.getByTestId("scroll-area");
46
+ expect(area).toHaveAttribute("data-orientation", "both");
47
+ expect(area.className).toContain("overflow-auto");
48
+ });
49
+
50
+ it("uses named regions as keyboard-focusable scroll containers", () => {
51
+ render(
52
+ <ScrollArea aria-label="Notifications" data-testid="scroll-area">
53
+ Notifications
54
+ </ScrollArea>,
55
+ );
56
+
57
+ const area = screen.getByTestId("scroll-area");
58
+ expect(area).toHaveAttribute("role", "region");
59
+ expect(area).toHaveAttribute("tabindex", "0");
60
+ });
61
+
62
+ it("respects explicit role and tabIndex values", () => {
63
+ render(
64
+ <ScrollArea
65
+ aria-label="Activity"
66
+ data-testid="scroll-area"
67
+ role="group"
68
+ tabIndex={-1}
69
+ >
70
+ Activity
71
+ </ScrollArea>,
72
+ );
73
+
74
+ const area = screen.getByTestId("scroll-area");
75
+ expect(area).toHaveAttribute("role", "group");
76
+ expect(area).toHaveAttribute("tabindex", "-1");
77
+ });
78
+
79
+ it("applies viewport class names", () => {
80
+ render(
81
+ <ScrollArea viewportClassName="min-w-max" data-testid="scroll-area">
82
+ Content
83
+ </ScrollArea>,
84
+ );
85
+
86
+ expect(
87
+ document.querySelector('[data-slot="scroll-area-viewport"]'),
88
+ ).toHaveClass("min-w-max");
89
+ });
90
+
91
+ it("applies appearance, size, scrollbar, shadow, and className variants", () => {
92
+ render(
93
+ <ScrollArea
94
+ appearance="sky"
95
+ className="h-32"
96
+ data-testid="scroll-area"
97
+ scrollbar="hover"
98
+ shadow
99
+ size="lg"
100
+ >
101
+ Content
102
+ </ScrollArea>,
103
+ );
104
+
105
+ const area = screen.getByTestId("scroll-area");
106
+ expect(area).toHaveAttribute("data-scrollbar", "hover");
107
+ expect(area.className).toContain("h-32");
108
+ expect(area.className).toContain("[--zui-scroll-area-size:0.875rem]");
109
+ expect(area.className).toContain(
110
+ "[box-shadow:inset_0_2px_12px_rgb(15_23_42_/_0.08)]",
111
+ );
112
+ expect(area.className).toContain(
113
+ "[--zui-scroll-area-thumb:oklch(54.6%_0.245_262.881)]",
114
+ );
115
+ });
116
+ });
@@ -0,0 +1,62 @@
1
+ "use client";
2
+
3
+ import { cn } from "../../lib/utils";
4
+
5
+ import type { ScrollAreaProps } from "./types";
6
+ import { scrollAreaVariants } from "./variants";
7
+
8
+ export function ScrollArea(props: ScrollAreaProps) {
9
+ const {
10
+ appearance,
11
+ children,
12
+ className,
13
+ orientation,
14
+ ref,
15
+ role,
16
+ scrollbar,
17
+ shadow,
18
+ size,
19
+ tabIndex,
20
+ viewportClassName,
21
+ ...rest
22
+ } = props;
23
+ const ariaLabel = rest["aria-label"];
24
+ const ariaLabelledBy = rest["aria-labelledby"];
25
+ const isNamedRegion =
26
+ role === "region" ||
27
+ ariaLabel !== undefined ||
28
+ ariaLabelledBy !== undefined;
29
+
30
+ return (
31
+ <div
32
+ ref={ref}
33
+ data-orientation={orientation ?? "vertical"}
34
+ data-scrollbar={scrollbar ?? "auto"}
35
+ data-slot="scroll-area"
36
+ role={
37
+ role ??
38
+ (ariaLabel !== undefined || ariaLabelledBy !== undefined
39
+ ? "region"
40
+ : undefined)
41
+ }
42
+ tabIndex={tabIndex ?? (isNamedRegion ? 0 : undefined)}
43
+ className={cn(
44
+ scrollAreaVariants({
45
+ appearance,
46
+ orientation,
47
+ scrollbar,
48
+ shadow,
49
+ size,
50
+ }),
51
+ className,
52
+ )}
53
+ {...rest}
54
+ >
55
+ <div data-slot="scroll-area-viewport" className={viewportClassName}>
56
+ {children}
57
+ </div>
58
+ </div>
59
+ );
60
+ }
61
+
62
+ ScrollArea.displayName = "ScrollArea";
@@ -0,0 +1,11 @@
1
+ import type { VariantProps } from "class-variance-authority";
2
+ import type { ComponentPropsWithRef } from "react";
3
+
4
+ import type { scrollAreaVariants } from "./variants";
5
+
6
+ export type ScrollAreaVariantProps = VariantProps<typeof scrollAreaVariants>;
7
+
8
+ export type ScrollAreaProps = ScrollAreaVariantProps &
9
+ ComponentPropsWithRef<"div"> & {
10
+ viewportClassName?: string;
11
+ };
@@ -0,0 +1,44 @@
1
+ import { cva } from "class-variance-authority";
2
+
3
+ import {
4
+ zuiScrollAreaAppearances,
5
+ zuiScrollAreaBase,
6
+ zuiScrollAreaOrientations,
7
+ zuiScrollAreaShadows,
8
+ zuiScrollAreaSizes,
9
+ zuiScrollAreaVisibility,
10
+ } from "../../design-system/scroll-area";
11
+
12
+ export const scrollAreaVariants = cva(zuiScrollAreaBase, {
13
+ variants: {
14
+ appearance: zuiScrollAreaAppearances,
15
+ orientation: zuiScrollAreaOrientations,
16
+ scrollbar: zuiScrollAreaVisibility,
17
+ shadow: zuiScrollAreaShadows,
18
+ size: zuiScrollAreaSizes,
19
+ },
20
+ compoundVariants: [
21
+ {
22
+ scrollbar: "always",
23
+ orientation: "vertical",
24
+ class: "overflow-x-hidden overflow-y-scroll",
25
+ },
26
+ {
27
+ scrollbar: "always",
28
+ orientation: "horizontal",
29
+ class: "overflow-x-scroll overflow-y-hidden",
30
+ },
31
+ {
32
+ scrollbar: "always",
33
+ orientation: "both",
34
+ class: "overflow-scroll",
35
+ },
36
+ ],
37
+ defaultVariants: {
38
+ appearance: "default",
39
+ orientation: "vertical",
40
+ scrollbar: "auto",
41
+ shadow: false,
42
+ size: "md",
43
+ },
44
+ });
@@ -0,0 +1,16 @@
1
+ import type { Transition } from "framer-motion";
2
+
3
+ /** Entrance presets for animated timeline items (fade + slide, connector draw). */
4
+ export type TimelineTransition = "none" | "default" | "smooth" | "slow";
5
+
6
+ export type TimelineTransitionPresets = Record<TimelineTransition, Transition>;
7
+
8
+ export const timelineItemTransitionPresets: TimelineTransitionPresets = {
9
+ none: { duration: 0 },
10
+ default: { duration: 0.4, ease: [0.22, 1, 0.36, 1] },
11
+ smooth: { duration: 0.55, ease: [0.22, 1, 0.36, 1] },
12
+ slow: { duration: 0.8, ease: [0.4, 0, 0.2, 1] },
13
+ };
14
+
15
+ /** Default per-item entrance delay multiplier (seconds) for staggered reveals. */
16
+ export const TIMELINE_DEFAULT_STAGGER = 0.08;
@@ -0,0 +1,22 @@
1
+ "use client";
2
+
3
+ export {
4
+ Timeline,
5
+ TimelineContent,
6
+ TimelineDescription,
7
+ TimelineIndicator,
8
+ TimelineTitle,
9
+ } from "../timeline-base";
10
+ export { TimelineItem } from "./timeline-item-animated";
11
+ export type {
12
+ TimelineAnimatedProps,
13
+ TimelineItemAnimatedProps,
14
+ } from "./types";
15
+ export {
16
+ TIMELINE_DEFAULT_STAGGER,
17
+ timelineItemTransitionPresets,
18
+ } from "./animations";
19
+ export type {
20
+ TimelineTransition,
21
+ TimelineTransitionPresets,
22
+ } from "./animations";
@@ -0,0 +1,76 @@
1
+ "use client";
2
+
3
+ import { useMemo } from "react";
4
+ import { motion, useReducedMotion } from "framer-motion";
5
+
6
+ import { cn } from "../../../lib/utils";
7
+
8
+ import {
9
+ TimelineItemContext,
10
+ useTimelineContext,
11
+ useTimelineIndex,
12
+ } from "../timeline-base";
13
+ import type { TimelineItemCtx } from "../types";
14
+ import {
15
+ timelineConnectorVariants,
16
+ timelineItemVariants,
17
+ } from "../variants";
18
+ import {
19
+ TIMELINE_DEFAULT_STAGGER,
20
+ timelineItemTransitionPresets,
21
+ } from "./animations";
22
+ import type { TimelineItemAnimatedProps } from "./types";
23
+
24
+ export function TimelineItem({
25
+ className,
26
+ children,
27
+ transitionVariant = "default",
28
+ stagger = TIMELINE_DEFAULT_STAGGER,
29
+ ref,
30
+ ...rest
31
+ }: TimelineItemAnimatedProps & { ref?: React.Ref<HTMLLIElement> }) {
32
+ const { size, total } = useTimelineContext("TimelineItem");
33
+ const index = useTimelineIndex("TimelineItem");
34
+ const isLast = index === total - 1;
35
+ const itemCtx = useMemo<TimelineItemCtx>(
36
+ () => ({ index, isLast }),
37
+ [index, isLast],
38
+ );
39
+
40
+ const reducedMotion = useReducedMotion();
41
+ const motionless = transitionVariant === "none" || Boolean(reducedMotion);
42
+ const transition = timelineItemTransitionPresets[transitionVariant];
43
+ const delay = index * stagger;
44
+
45
+ return (
46
+ <TimelineItemContext.Provider value={itemCtx}>
47
+ <motion.li
48
+ ref={ref}
49
+ data-slot="timeline-item"
50
+ data-last={isLast ? "" : undefined}
51
+ className={cn(timelineItemVariants(), className)}
52
+ initial={motionless ? false : { opacity: 0, y: 12 }}
53
+ whileInView={motionless ? undefined : { opacity: 1, y: 0 }}
54
+ viewport={{ once: true, amount: 0.35 }}
55
+ transition={{ ...transition, delay }}
56
+ {...rest}
57
+ >
58
+ {!isLast ? (
59
+ <motion.span
60
+ aria-hidden="true"
61
+ data-slot="timeline-connector"
62
+ className={timelineConnectorVariants({ size })}
63
+ style={{ originY: 0 }}
64
+ initial={motionless ? false : { scaleY: 0, x: "-50%" }}
65
+ whileInView={motionless ? undefined : { scaleY: 1, x: "-50%" }}
66
+ viewport={{ once: true, amount: 0.35 }}
67
+ transition={{ ...transition, delay: delay + 0.12 }}
68
+ />
69
+ ) : null}
70
+ {children}
71
+ </motion.li>
72
+ </TimelineItemContext.Provider>
73
+ );
74
+ }
75
+
76
+ TimelineItem.displayName = "TimelineItem";
@@ -0,0 +1,21 @@
1
+ import type { TimelineItemProps, TimelineProps } from "../types";
2
+ import type { TimelineTransition } from "./animations";
3
+
4
+ export type TimelineAnimatedProps = TimelineProps;
5
+
6
+ /** Motion `li` uses different handler types than some React DOM events. */
7
+ export type TimelineItemMotionConflictProps =
8
+ | "onAnimationStart"
9
+ | "onDrag"
10
+ | "onDragEnd"
11
+ | "onDragStart";
12
+
13
+ export type TimelineItemAnimatedProps = Omit<
14
+ TimelineItemProps,
15
+ TimelineItemMotionConflictProps
16
+ > & {
17
+ /** Entrance easing/duration preset. `none` renders without motion. */
18
+ transitionVariant?: TimelineTransition;
19
+ /** Per-item entrance delay multiplier in seconds (index × stagger). */
20
+ stagger?: number;
21
+ };
@@ -0,0 +1,30 @@
1
+ "use client";
2
+
3
+ export {
4
+ Timeline,
5
+ TimelineContent,
6
+ TimelineDescription,
7
+ TimelineIndicator,
8
+ TimelineItem,
9
+ TimelineTitle,
10
+ } from "./timeline";
11
+ export type {
12
+ TimelineAppearance,
13
+ TimelineContentProps,
14
+ TimelineDescriptionProps,
15
+ TimelineIndicatorProps,
16
+ TimelineItemProps,
17
+ TimelineProps,
18
+ TimelineSize,
19
+ TimelineTitleProps,
20
+ TimelineTransition,
21
+ } from "./types";
22
+ export {
23
+ timelineConnectorVariants,
24
+ timelineContentVariants,
25
+ timelineDescriptionVariants,
26
+ timelineIndicatorVariants,
27
+ timelineItemVariants,
28
+ timelineTitleVariants,
29
+ timelineVariants,
30
+ } from "./variants";
@@ -0,0 +1,232 @@
1
+ "use client";
2
+
3
+ import {
4
+ Children,
5
+ createContext,
6
+ isValidElement,
7
+ useContext,
8
+ useMemo,
9
+ } from "react";
10
+
11
+ import { cn } from "../../lib/utils";
12
+
13
+ import type {
14
+ TimelineContentProps,
15
+ TimelineCtx,
16
+ TimelineDescriptionProps,
17
+ TimelineIndicatorProps,
18
+ TimelineItemCtx,
19
+ TimelineItemProps,
20
+ TimelineProps,
21
+ TimelineSize,
22
+ TimelineTitleProps,
23
+ } from "./types";
24
+ import {
25
+ timelineConnectorVariants,
26
+ timelineContentVariants,
27
+ timelineDescriptionVariants,
28
+ timelineIndicatorVariants,
29
+ timelineItemVariants,
30
+ timelineTitleVariants,
31
+ timelineVariants,
32
+ } from "./variants";
33
+
34
+ const TimelineContext = createContext<TimelineCtx | null>(null);
35
+
36
+ const TimelineIndexContext = createContext<number | null>(null);
37
+
38
+ export const TimelineItemContext = createContext<TimelineItemCtx | null>(null);
39
+
40
+ export function useTimelineContext(component: string): TimelineCtx {
41
+ const ctx = useContext(TimelineContext);
42
+ if (!ctx) {
43
+ throw new Error(`${component} must be used within <Timeline>`);
44
+ }
45
+ return ctx;
46
+ }
47
+
48
+ export function useTimelineIndex(component: string): number {
49
+ const index = useContext(TimelineIndexContext);
50
+ if (index === null) {
51
+ throw new Error(`${component} must be used within <Timeline>`);
52
+ }
53
+ return index;
54
+ }
55
+
56
+ function useTimelineSize(): TimelineSize {
57
+ return useContext(TimelineContext)?.size ?? "md";
58
+ }
59
+
60
+ function useTimelineIsLast(): boolean {
61
+ return useContext(TimelineItemContext)?.isLast ?? false;
62
+ }
63
+
64
+ export function Timeline({
65
+ appearance = "default",
66
+ size = "md",
67
+ className,
68
+ children,
69
+ ref,
70
+ ...rest
71
+ }: TimelineProps) {
72
+ const items = useMemo(
73
+ () => Children.toArray(children).filter(isValidElement),
74
+ [children],
75
+ );
76
+ const ctx = useMemo<TimelineCtx>(
77
+ () => ({
78
+ appearance: appearance ?? "default",
79
+ size: size ?? "md",
80
+ total: items.length,
81
+ }),
82
+ [appearance, size, items.length],
83
+ );
84
+
85
+ return (
86
+ <TimelineContext.Provider value={ctx}>
87
+ <ol
88
+ ref={ref}
89
+ data-slot="timeline"
90
+ className={cn(timelineVariants(), "m-0 list-none p-0", className)}
91
+ {...rest}
92
+ >
93
+ {items.map((child, index) => (
94
+ <TimelineIndexContext.Provider key={child.key} value={index}>
95
+ {child}
96
+ </TimelineIndexContext.Provider>
97
+ ))}
98
+ </ol>
99
+ </TimelineContext.Provider>
100
+ );
101
+ }
102
+
103
+ Timeline.displayName = "Timeline";
104
+
105
+ export function TimelineItem({
106
+ className,
107
+ children,
108
+ ref,
109
+ ...rest
110
+ }: TimelineItemProps) {
111
+ const { size, total } = useTimelineContext("TimelineItem");
112
+ const index = useTimelineIndex("TimelineItem");
113
+ const isLast = index === total - 1;
114
+ const itemCtx = useMemo<TimelineItemCtx>(
115
+ () => ({ index, isLast }),
116
+ [index, isLast],
117
+ );
118
+
119
+ return (
120
+ <TimelineItemContext.Provider value={itemCtx}>
121
+ <li
122
+ ref={ref}
123
+ data-slot="timeline-item"
124
+ data-last={isLast ? "" : undefined}
125
+ className={cn(timelineItemVariants(), className)}
126
+ {...rest}
127
+ >
128
+ {!isLast ? (
129
+ <span
130
+ aria-hidden="true"
131
+ data-slot="timeline-connector"
132
+ className={timelineConnectorVariants({ size })}
133
+ />
134
+ ) : null}
135
+ {children}
136
+ </li>
137
+ </TimelineItemContext.Provider>
138
+ );
139
+ }
140
+
141
+ TimelineItem.displayName = "TimelineItem";
142
+
143
+ export function TimelineIndicator({
144
+ className,
145
+ appearance,
146
+ children,
147
+ ref,
148
+ ...rest
149
+ }: TimelineIndicatorProps & { ref?: React.Ref<HTMLDivElement> }) {
150
+ const { appearance: rootAppearance, size } =
151
+ useTimelineContext("TimelineIndicator");
152
+ return (
153
+ <div
154
+ ref={ref}
155
+ data-slot="timeline-indicator"
156
+ className={cn(
157
+ timelineIndicatorVariants({
158
+ appearance: appearance ?? rootAppearance,
159
+ size,
160
+ }),
161
+ className,
162
+ )}
163
+ {...rest}
164
+ >
165
+ {children}
166
+ </div>
167
+ );
168
+ }
169
+
170
+ TimelineIndicator.displayName = "TimelineIndicator";
171
+
172
+ export function TimelineContent({
173
+ className,
174
+ children,
175
+ ref,
176
+ ...rest
177
+ }: TimelineContentProps & { ref?: React.Ref<HTMLDivElement> }) {
178
+ const size = useTimelineSize();
179
+ const isLast = useTimelineIsLast();
180
+ return (
181
+ <div
182
+ ref={ref}
183
+ data-slot="timeline-content"
184
+ className={cn(
185
+ timelineContentVariants({ size }),
186
+ isLast && "pb-0",
187
+ className,
188
+ )}
189
+ {...rest}
190
+ >
191
+ {children}
192
+ </div>
193
+ );
194
+ }
195
+
196
+ TimelineContent.displayName = "TimelineContent";
197
+
198
+ export function TimelineTitle({
199
+ className,
200
+ ref,
201
+ ...rest
202
+ }: TimelineTitleProps & { ref?: React.Ref<HTMLDivElement> }) {
203
+ const size = useTimelineSize();
204
+ return (
205
+ <div
206
+ ref={ref}
207
+ data-slot="timeline-title"
208
+ className={cn(timelineTitleVariants({ size }), className)}
209
+ {...rest}
210
+ />
211
+ );
212
+ }
213
+
214
+ TimelineTitle.displayName = "TimelineTitle";
215
+
216
+ export function TimelineDescription({
217
+ className,
218
+ ref,
219
+ ...rest
220
+ }: TimelineDescriptionProps & { ref?: React.Ref<HTMLParagraphElement> }) {
221
+ const size = useTimelineSize();
222
+ return (
223
+ <p
224
+ ref={ref}
225
+ data-slot="timeline-description"
226
+ className={cn(timelineDescriptionVariants({ size }), className)}
227
+ {...rest}
228
+ />
229
+ );
230
+ }
231
+
232
+ TimelineDescription.displayName = "TimelineDescription";