@zentauri-ui/zentauri-components 1.9.1 → 1.9.2

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 (853) hide show
  1. package/README.md +5 -3
  2. package/dist/animations/blur-in.js +1 -0
  3. package/dist/animations/blur-in.js.map +1 -1
  4. package/dist/animations/blur-in.mjs +1 -0
  5. package/dist/animations/blur-in.mjs.map +1 -1
  6. package/dist/animations/blur-out.js +1 -0
  7. package/dist/animations/blur-out.js.map +1 -1
  8. package/dist/animations/blur-out.mjs +1 -0
  9. package/dist/animations/blur-out.mjs.map +1 -1
  10. package/dist/animations/bounce.js +1 -0
  11. package/dist/animations/bounce.js.map +1 -1
  12. package/dist/animations/bounce.mjs +1 -0
  13. package/dist/animations/bounce.mjs.map +1 -1
  14. package/dist/animations/fade-down.js +1 -0
  15. package/dist/animations/fade-down.js.map +1 -1
  16. package/dist/animations/fade-down.mjs +1 -0
  17. package/dist/animations/fade-down.mjs.map +1 -1
  18. package/dist/animations/fade-in.js +1 -0
  19. package/dist/animations/fade-in.js.map +1 -1
  20. package/dist/animations/fade-in.mjs +1 -0
  21. package/dist/animations/fade-in.mjs.map +1 -1
  22. package/dist/animations/fade-left.js +1 -0
  23. package/dist/animations/fade-left.js.map +1 -1
  24. package/dist/animations/fade-left.mjs +1 -0
  25. package/dist/animations/fade-left.mjs.map +1 -1
  26. package/dist/animations/fade-out.js +1 -0
  27. package/dist/animations/fade-out.js.map +1 -1
  28. package/dist/animations/fade-out.mjs +1 -0
  29. package/dist/animations/fade-out.mjs.map +1 -1
  30. package/dist/animations/fade-right.js +1 -0
  31. package/dist/animations/fade-right.js.map +1 -1
  32. package/dist/animations/fade-right.mjs +1 -0
  33. package/dist/animations/fade-right.mjs.map +1 -1
  34. package/dist/animations/fade-up.js +1 -0
  35. package/dist/animations/fade-up.js.map +1 -1
  36. package/dist/animations/fade-up.mjs +1 -0
  37. package/dist/animations/fade-up.mjs.map +1 -1
  38. package/dist/animations/flip-in.js +1 -0
  39. package/dist/animations/flip-in.js.map +1 -1
  40. package/dist/animations/flip-in.mjs +1 -0
  41. package/dist/animations/flip-in.mjs.map +1 -1
  42. package/dist/animations/flip.js +1 -0
  43. package/dist/animations/flip.js.map +1 -1
  44. package/dist/animations/flip.mjs +1 -0
  45. package/dist/animations/flip.mjs.map +1 -1
  46. package/dist/animations/float.js +1 -0
  47. package/dist/animations/float.js.map +1 -1
  48. package/dist/animations/float.mjs +1 -0
  49. package/dist/animations/float.mjs.map +1 -1
  50. package/dist/animations/hover-lift.js +1 -0
  51. package/dist/animations/hover-lift.js.map +1 -1
  52. package/dist/animations/hover-lift.mjs +1 -0
  53. package/dist/animations/hover-lift.mjs.map +1 -1
  54. package/dist/animations/hover-scale.js +1 -0
  55. package/dist/animations/hover-scale.js.map +1 -1
  56. package/dist/animations/hover-scale.mjs +1 -0
  57. package/dist/animations/hover-scale.mjs.map +1 -1
  58. package/dist/animations/magnetic.js +1 -0
  59. package/dist/animations/magnetic.js.map +1 -1
  60. package/dist/animations/magnetic.mjs +1 -0
  61. package/dist/animations/magnetic.mjs.map +1 -1
  62. package/dist/animations/parallax.js +1 -0
  63. package/dist/animations/parallax.js.map +1 -1
  64. package/dist/animations/parallax.mjs +1 -0
  65. package/dist/animations/parallax.mjs.map +1 -1
  66. package/dist/animations/ping.js +1 -0
  67. package/dist/animations/ping.js.map +1 -1
  68. package/dist/animations/ping.mjs +1 -0
  69. package/dist/animations/ping.mjs.map +1 -1
  70. package/dist/animations/pop-in.js +1 -0
  71. package/dist/animations/pop-in.js.map +1 -1
  72. package/dist/animations/pop-in.mjs +1 -0
  73. package/dist/animations/pop-in.mjs.map +1 -1
  74. package/dist/animations/press.js +1 -0
  75. package/dist/animations/press.js.map +1 -1
  76. package/dist/animations/press.mjs +1 -0
  77. package/dist/animations/press.mjs.map +1 -1
  78. package/dist/animations/progress.js +1 -0
  79. package/dist/animations/progress.js.map +1 -1
  80. package/dist/animations/progress.mjs +1 -0
  81. package/dist/animations/progress.mjs.map +1 -1
  82. package/dist/animations/pulse.js +1 -0
  83. package/dist/animations/pulse.js.map +1 -1
  84. package/dist/animations/pulse.mjs +1 -0
  85. package/dist/animations/pulse.mjs.map +1 -1
  86. package/dist/animations/reorder.js +1 -0
  87. package/dist/animations/reorder.js.map +1 -1
  88. package/dist/animations/reorder.mjs +1 -0
  89. package/dist/animations/reorder.mjs.map +1 -1
  90. package/dist/animations/reveal-blur.js +1 -0
  91. package/dist/animations/reveal-blur.js.map +1 -1
  92. package/dist/animations/reveal-blur.mjs +1 -0
  93. package/dist/animations/reveal-blur.mjs.map +1 -1
  94. package/dist/animations/reveal-down.js +1 -0
  95. package/dist/animations/reveal-down.js.map +1 -1
  96. package/dist/animations/reveal-down.mjs +1 -0
  97. package/dist/animations/reveal-down.mjs.map +1 -1
  98. package/dist/animations/reveal-left.js +1 -0
  99. package/dist/animations/reveal-left.js.map +1 -1
  100. package/dist/animations/reveal-left.mjs +1 -0
  101. package/dist/animations/reveal-left.mjs.map +1 -1
  102. package/dist/animations/reveal-right.js +1 -0
  103. package/dist/animations/reveal-right.js.map +1 -1
  104. package/dist/animations/reveal-right.mjs +1 -0
  105. package/dist/animations/reveal-right.mjs.map +1 -1
  106. package/dist/animations/reveal-up.js +1 -0
  107. package/dist/animations/reveal-up.js.map +1 -1
  108. package/dist/animations/reveal-up.mjs +1 -0
  109. package/dist/animations/reveal-up.mjs.map +1 -1
  110. package/dist/animations/rotate-in.js +1 -0
  111. package/dist/animations/rotate-in.js.map +1 -1
  112. package/dist/animations/rotate-in.mjs +1 -0
  113. package/dist/animations/rotate-in.mjs.map +1 -1
  114. package/dist/animations/scale-in.js +1 -0
  115. package/dist/animations/scale-in.js.map +1 -1
  116. package/dist/animations/scale-in.mjs +1 -0
  117. package/dist/animations/scale-in.mjs.map +1 -1
  118. package/dist/animations/scale-out.js +1 -0
  119. package/dist/animations/scale-out.js.map +1 -1
  120. package/dist/animations/scale-out.mjs +1 -0
  121. package/dist/animations/scale-out.mjs.map +1 -1
  122. package/dist/animations/shake.js +1 -0
  123. package/dist/animations/shake.js.map +1 -1
  124. package/dist/animations/shake.mjs +1 -0
  125. package/dist/animations/shake.mjs.map +1 -1
  126. package/dist/animations/skeleton-shimmer.js +1 -0
  127. package/dist/animations/skeleton-shimmer.js.map +1 -1
  128. package/dist/animations/skeleton-shimmer.mjs +1 -0
  129. package/dist/animations/skeleton-shimmer.mjs.map +1 -1
  130. package/dist/animations/slide-down.js +1 -0
  131. package/dist/animations/slide-down.js.map +1 -1
  132. package/dist/animations/slide-down.mjs +1 -0
  133. package/dist/animations/slide-down.mjs.map +1 -1
  134. package/dist/animations/slide-left.js +1 -0
  135. package/dist/animations/slide-left.js.map +1 -1
  136. package/dist/animations/slide-left.mjs +1 -0
  137. package/dist/animations/slide-left.mjs.map +1 -1
  138. package/dist/animations/slide-right.js +1 -0
  139. package/dist/animations/slide-right.js.map +1 -1
  140. package/dist/animations/slide-right.mjs +1 -0
  141. package/dist/animations/slide-right.mjs.map +1 -1
  142. package/dist/animations/slide-up.js +1 -0
  143. package/dist/animations/slide-up.js.map +1 -1
  144. package/dist/animations/slide-up.mjs +1 -0
  145. package/dist/animations/slide-up.mjs.map +1 -1
  146. package/dist/animations/spin.js +1 -0
  147. package/dist/animations/spin.js.map +1 -1
  148. package/dist/animations/spin.mjs +1 -0
  149. package/dist/animations/spin.mjs.map +1 -1
  150. package/dist/animations/text-reveal.js +1 -0
  151. package/dist/animations/text-reveal.js.map +1 -1
  152. package/dist/animations/text-reveal.mjs +1 -0
  153. package/dist/animations/text-reveal.mjs.map +1 -1
  154. package/dist/animations/text-shimmer.js +1 -0
  155. package/dist/animations/text-shimmer.js.map +1 -1
  156. package/dist/animations/text-shimmer.mjs +1 -0
  157. package/dist/animations/text-shimmer.mjs.map +1 -1
  158. package/dist/animations/tilt.js +1 -0
  159. package/dist/animations/tilt.js.map +1 -1
  160. package/dist/animations/tilt.mjs +1 -0
  161. package/dist/animations/tilt.mjs.map +1 -1
  162. package/dist/animations/wiggle.js +1 -0
  163. package/dist/animations/wiggle.js.map +1 -1
  164. package/dist/animations/wiggle.mjs +1 -0
  165. package/dist/animations/wiggle.mjs.map +1 -1
  166. package/dist/charts/area.js +1 -0
  167. package/dist/charts/area.js.map +1 -1
  168. package/dist/charts/area.mjs +1 -0
  169. package/dist/charts/area.mjs.map +1 -1
  170. package/dist/charts/bar.js +1 -0
  171. package/dist/charts/bar.mjs +1 -0
  172. package/dist/charts/bubble.js +1 -0
  173. package/dist/charts/bubble.js.map +1 -1
  174. package/dist/charts/bubble.mjs +1 -0
  175. package/dist/charts/bubble.mjs.map +1 -1
  176. package/dist/charts/funnel.js +1 -0
  177. package/dist/charts/funnel.js.map +1 -1
  178. package/dist/charts/funnel.mjs +1 -0
  179. package/dist/charts/funnel.mjs.map +1 -1
  180. package/dist/charts/line.js +1 -0
  181. package/dist/charts/line.js.map +1 -1
  182. package/dist/charts/line.mjs +1 -0
  183. package/dist/charts/line.mjs.map +1 -1
  184. package/dist/charts/pie.js +1 -0
  185. package/dist/charts/pie.js.map +1 -1
  186. package/dist/charts/pie.mjs +1 -0
  187. package/dist/charts/pie.mjs.map +1 -1
  188. package/dist/charts/radar.js +1 -0
  189. package/dist/charts/radar.js.map +1 -1
  190. package/dist/charts/radar.mjs +1 -0
  191. package/dist/charts/radar.mjs.map +1 -1
  192. package/dist/charts/scatter.js +1 -0
  193. package/dist/charts/scatter.js.map +1 -1
  194. package/dist/charts/scatter.mjs +1 -0
  195. package/dist/charts/scatter.mjs.map +1 -1
  196. package/dist/charts/stacked-bar.js +1 -0
  197. package/dist/charts/stacked-bar.js.map +1 -1
  198. package/dist/charts/stacked-bar.mjs +1 -0
  199. package/dist/charts/stacked-bar.mjs.map +1 -1
  200. package/dist/{chunk-OY3YJGOX.mjs → chunk-22I54GJW.js} +7 -203
  201. package/dist/chunk-22I54GJW.js.map +1 -0
  202. package/dist/chunk-27PO2FY2.mjs +161 -0
  203. package/dist/chunk-27PO2FY2.mjs.map +1 -0
  204. package/dist/chunk-2PWT2MB5.mjs +73 -0
  205. package/dist/chunk-2PWT2MB5.mjs.map +1 -0
  206. package/dist/chunk-34OSFCSH.js +212 -0
  207. package/dist/chunk-34OSFCSH.js.map +1 -0
  208. package/dist/chunk-37YQUTKG.js +204 -0
  209. package/dist/chunk-37YQUTKG.js.map +1 -0
  210. package/dist/chunk-3HSFL4WA.mjs +191 -0
  211. package/dist/chunk-3HSFL4WA.mjs.map +1 -0
  212. package/dist/{chunk-EKLWWV3G.mjs → chunk-3I6XR7KN.js} +10 -72
  213. package/dist/chunk-3I6XR7KN.js.map +1 -0
  214. package/dist/chunk-3MK7CWEX.js +54 -0
  215. package/dist/chunk-3MK7CWEX.js.map +1 -0
  216. package/dist/{chunk-UNPKDNLA.js → chunk-3R6PQUG2.mjs} +3 -264
  217. package/dist/chunk-3R6PQUG2.mjs.map +1 -0
  218. package/dist/{chunk-AS34PVUG.mjs → chunk-3Z6L24ZK.js} +11 -221
  219. package/dist/{chunk-IW2E4MLG.js.map → chunk-3Z6L24ZK.js.map} +1 -1
  220. package/dist/{chunk-DBW25HOR.mjs → chunk-44G3U35C.js} +12 -413
  221. package/dist/chunk-44G3U35C.js.map +1 -0
  222. package/dist/chunk-456OEGUT.mjs +58 -0
  223. package/dist/chunk-456OEGUT.mjs.map +1 -0
  224. package/dist/{chunk-URXYF25P.mjs → chunk-45CGVW7S.js} +12 -205
  225. package/dist/chunk-45CGVW7S.js.map +1 -0
  226. package/dist/chunk-4FU6FDUT.mjs +202 -0
  227. package/dist/chunk-4FU6FDUT.mjs.map +1 -0
  228. package/dist/chunk-4LVEWKXF.mjs +258 -0
  229. package/dist/chunk-4LVEWKXF.mjs.map +1 -0
  230. package/dist/{chunk-3IBWZM52.js → chunk-4QLWSXXO.mjs} +3 -209
  231. package/dist/chunk-4QLWSXXO.mjs.map +1 -0
  232. package/dist/{chunk-DMDCXYNN.js → chunk-4U7CDEN7.mjs} +3 -51
  233. package/dist/chunk-4U7CDEN7.mjs.map +1 -0
  234. package/dist/{chunk-6GPUHFXI.mjs → chunk-56DECC6D.js} +16 -220
  235. package/dist/chunk-56DECC6D.js.map +1 -0
  236. package/dist/chunk-56KZVM5D.mjs +159 -0
  237. package/dist/chunk-56KZVM5D.mjs.map +1 -0
  238. package/dist/{chunk-VJSME7ML.js → chunk-5BSYGFN7.mjs} +3 -162
  239. package/dist/chunk-5BSYGFN7.mjs.map +1 -0
  240. package/dist/chunk-5J6QMTES.js +655 -0
  241. package/dist/chunk-5J6QMTES.js.map +1 -0
  242. package/dist/{chunk-XIG2QDVN.js → chunk-5QSYJHWL.mjs} +3 -73
  243. package/dist/chunk-5QSYJHWL.mjs.map +1 -0
  244. package/dist/{chunk-WVBFSJEB.js → chunk-5R6XJAXQ.mjs} +3 -574
  245. package/dist/chunk-5R6XJAXQ.mjs.map +1 -0
  246. package/dist/{chunk-KIAYTBS5.js → chunk-5WWD3TZ2.mjs} +3 -129
  247. package/dist/chunk-5WWD3TZ2.mjs.map +1 -0
  248. package/dist/{chunk-4GVMPQZS.js → chunk-63UE3BR4.mjs} +3 -77
  249. package/dist/chunk-63UE3BR4.mjs.map +1 -0
  250. package/dist/chunk-63YMCBGJ.js +217 -0
  251. package/dist/chunk-63YMCBGJ.js.map +1 -0
  252. package/dist/chunk-7GIL24GK.js +354 -0
  253. package/dist/chunk-7GIL24GK.js.map +1 -0
  254. package/dist/chunk-7JBQ3ZJN.mjs +250 -0
  255. package/dist/chunk-7JBQ3ZJN.mjs.map +1 -0
  256. package/dist/{chunk-4WRCXG5E.mjs → chunk-7LFRU6AW.js} +16 -704
  257. package/dist/{chunk-XYKDSHRG.js.map → chunk-7LFRU6AW.js.map} +1 -1
  258. package/dist/{chunk-6ONKAOI7.mjs → chunk-7M4TUP4I.js} +8 -190
  259. package/dist/chunk-7M4TUP4I.js.map +1 -0
  260. package/dist/{chunk-XOYCFLEZ.mjs → chunk-AADGUMYW.js} +12 -349
  261. package/dist/chunk-AADGUMYW.js.map +1 -0
  262. package/dist/chunk-AQHY4S33.js +19 -0
  263. package/dist/chunk-AQHY4S33.js.map +1 -0
  264. package/dist/chunk-ATMCT3A3.mjs +222 -0
  265. package/dist/chunk-ATMCT3A3.mjs.map +1 -0
  266. package/dist/chunk-BDBL4XXI.mjs +45 -0
  267. package/dist/chunk-BDBL4XXI.mjs.map +1 -0
  268. package/dist/{chunk-U7FZ5RMV.js → chunk-BTSCPOWZ.mjs} +3 -424
  269. package/dist/chunk-BTSCPOWZ.mjs.map +1 -0
  270. package/dist/chunk-BZZVO4GL.mjs +414 -0
  271. package/dist/chunk-BZZVO4GL.mjs.map +1 -0
  272. package/dist/chunk-C7F6OCGK.mjs +123 -0
  273. package/dist/chunk-C7F6OCGK.mjs.map +1 -0
  274. package/dist/chunk-D4B62J5C.js +128 -0
  275. package/dist/chunk-D4B62J5C.js.map +1 -0
  276. package/dist/{chunk-REDZL4DY.mjs → chunk-DWDDIG6R.js} +9 -160
  277. package/dist/chunk-DWDDIG6R.js.map +1 -0
  278. package/dist/{chunk-UMXCV5IT.mjs → chunk-E7BPOL74.js} +13 -249
  279. package/dist/chunk-E7BPOL74.js.map +1 -0
  280. package/dist/chunk-EIX26RKN.js +73 -0
  281. package/dist/chunk-EIX26RKN.js.map +1 -0
  282. package/dist/chunk-EKBSSKJQ.js +271 -0
  283. package/dist/chunk-EKBSSKJQ.js.map +1 -0
  284. package/dist/{chunk-2RBUROXJ.js → chunk-EP7WTIKH.mjs} +3 -238
  285. package/dist/chunk-EP7WTIKH.mjs.map +1 -0
  286. package/dist/chunk-F6V74YMW.js +71 -0
  287. package/dist/chunk-F6V74YMW.js.map +1 -0
  288. package/dist/{chunk-S4NQTWMW.mjs → chunk-FNNIH7R2.js} +10 -61
  289. package/dist/chunk-FNNIH7R2.js.map +1 -0
  290. package/dist/chunk-FXDHDQTH.js +79 -0
  291. package/dist/chunk-FXDHDQTH.js.map +1 -0
  292. package/dist/chunk-FZET7XQV.js +169 -0
  293. package/dist/chunk-FZET7XQV.js.map +1 -0
  294. package/dist/chunk-GDYSB7SB.js +78 -0
  295. package/dist/chunk-GDYSB7SB.js.map +1 -0
  296. package/dist/chunk-GPM2PRC5.js +61 -0
  297. package/dist/chunk-GPM2PRC5.js.map +1 -0
  298. package/dist/chunk-GVGKISKD.js +170 -0
  299. package/dist/chunk-GVGKISKD.js.map +1 -0
  300. package/dist/chunk-I4TGI6U3.mjs +558 -0
  301. package/dist/chunk-I4TGI6U3.mjs.map +1 -0
  302. package/dist/chunk-I55QC57T.js +47 -0
  303. package/dist/chunk-I55QC57T.js.map +1 -0
  304. package/dist/chunk-I5TREZO5.js +263 -0
  305. package/dist/chunk-I5TREZO5.js.map +1 -0
  306. package/dist/chunk-IPUQBMAB.mjs +205 -0
  307. package/dist/chunk-IPUQBMAB.mjs.map +1 -0
  308. package/dist/chunk-IQ6QVIZ3.mjs +69 -0
  309. package/dist/chunk-IQ6QVIZ3.mjs.map +1 -0
  310. package/dist/{chunk-CARQELOX.mjs → chunk-ISXAUMRW.js} +8 -46
  311. package/dist/chunk-ISXAUMRW.js.map +1 -0
  312. package/dist/{chunk-WRHUWKZS.js → chunk-IULYVARJ.mjs} +3 -130
  313. package/dist/chunk-IULYVARJ.mjs.map +1 -0
  314. package/dist/chunk-J5LGTIGS.mjs +9 -0
  315. package/dist/chunk-J5LGTIGS.mjs.map +1 -0
  316. package/dist/chunk-J6XKTPP5.js +61 -0
  317. package/dist/chunk-J6XKTPP5.js.map +1 -0
  318. package/dist/{chunk-HI54NLVM.js → chunk-JF4BRFOG.mjs} +3 -128
  319. package/dist/chunk-JF4BRFOG.mjs.map +1 -0
  320. package/dist/{chunk-JGSQZZHF.js → chunk-JI3IEKH6.mjs} +3 -212
  321. package/dist/chunk-JI3IEKH6.mjs.map +1 -0
  322. package/dist/{chunk-6VZGM4DI.mjs → chunk-JTMRSRYD.js} +11 -118
  323. package/dist/chunk-JTMRSRYD.js.map +1 -0
  324. package/dist/chunk-KEGOUZL5.js +209 -0
  325. package/dist/chunk-KEGOUZL5.js.map +1 -0
  326. package/dist/{chunk-B3LCKPBX.js → chunk-KXNMW4NV.mjs} +3 -170
  327. package/dist/chunk-KXNMW4NV.mjs.map +1 -0
  328. package/dist/chunk-L4PDJ6IB.mjs +17 -0
  329. package/dist/chunk-L4PDJ6IB.mjs.map +1 -0
  330. package/dist/{chunk-OEDD43IT.mjs → chunk-L67EJJFN.js} +9 -68
  331. package/dist/chunk-L67EJJFN.js.map +1 -0
  332. package/dist/{chunk-7XHWUEQR.mjs → chunk-L6AS5AVO.js} +10 -250
  333. package/dist/chunk-L6AS5AVO.js.map +1 -0
  334. package/dist/chunk-L6PSW7JE.mjs +206 -0
  335. package/dist/chunk-L6PSW7JE.mjs.map +1 -0
  336. package/dist/{chunk-IW2E4MLG.js → chunk-LL2UY6CD.mjs} +3 -231
  337. package/dist/chunk-LL2UY6CD.mjs.map +1 -0
  338. package/dist/chunk-LLNK24MM.js +67 -0
  339. package/dist/chunk-LLNK24MM.js.map +1 -0
  340. package/dist/{chunk-UOZZUWIX.js → chunk-LQPKZ5ZD.js} +6 -6
  341. package/dist/{chunk-UOZZUWIX.js.map → chunk-LQPKZ5ZD.js.map} +1 -1
  342. package/dist/{chunk-XJFDGKZO.mjs → chunk-LU6VEI4B.js} +12 -204
  343. package/dist/chunk-LU6VEI4B.js.map +1 -0
  344. package/dist/chunk-MCYFKM7T.js +62 -0
  345. package/dist/chunk-MCYFKM7T.js.map +1 -0
  346. package/dist/chunk-MUKI3OHH.js +215 -0
  347. package/dist/chunk-MUKI3OHH.js.map +1 -0
  348. package/dist/chunk-N2RUT33F.mjs +68 -0
  349. package/dist/chunk-N2RUT33F.mjs.map +1 -0
  350. package/dist/chunk-NAHHFB2M.js +77 -0
  351. package/dist/chunk-NAHHFB2M.js.map +1 -0
  352. package/dist/chunk-NMBSK44H.mjs +44 -0
  353. package/dist/chunk-NMBSK44H.mjs.map +1 -0
  354. package/dist/chunk-NVTV3EQB.js +49 -0
  355. package/dist/chunk-NVTV3EQB.js.map +1 -0
  356. package/dist/chunk-NWMSIYZP.js +574 -0
  357. package/dist/chunk-NWMSIYZP.js.map +1 -0
  358. package/dist/{chunk-AFBKMQMK.js → chunk-NXNL64Q7.mjs} +3 -354
  359. package/dist/chunk-NXNL64Q7.mjs.map +1 -0
  360. package/dist/chunk-O23PJPGM.mjs +251 -0
  361. package/dist/chunk-O23PJPGM.mjs.map +1 -0
  362. package/dist/chunk-O6R6OQXI.mjs +204 -0
  363. package/dist/chunk-O6R6OQXI.mjs.map +1 -0
  364. package/dist/chunk-ODT5TFIT.mjs +156 -0
  365. package/dist/chunk-ODT5TFIT.mjs.map +1 -0
  366. package/dist/{chunk-VX56EVPF.mjs → chunk-OGMIKRLJ.js} +8 -98
  367. package/dist/chunk-OGMIKRLJ.js.map +1 -0
  368. package/dist/chunk-OOBA2MDD.mjs +57 -0
  369. package/dist/chunk-OOBA2MDD.mjs.map +1 -0
  370. package/dist/chunk-OPACTZGV.js +231 -0
  371. package/dist/chunk-OPACTZGV.js.map +1 -0
  372. package/dist/{chunk-NUYNJV5U.mjs → chunk-OPUO55TO.mjs} +3 -3
  373. package/dist/{chunk-NUYNJV5U.mjs.map → chunk-OPUO55TO.mjs.map} +1 -1
  374. package/dist/{chunk-PZBTZGJE.js → chunk-OQCI2IVL.mjs} +3 -271
  375. package/dist/chunk-OQCI2IVL.mjs.map +1 -0
  376. package/dist/{chunk-7PIOCFV3.mjs → chunk-P25NI2HG.js} +9 -124
  377. package/dist/chunk-P25NI2HG.js.map +1 -0
  378. package/dist/chunk-P2DQP4J4.js +424 -0
  379. package/dist/chunk-P2DQP4J4.js.map +1 -0
  380. package/dist/{chunk-KC77BXBC.js → chunk-P43A2BPU.mjs} +3 -215
  381. package/dist/chunk-P43A2BPU.mjs.map +1 -0
  382. package/dist/chunk-P54PZ72L.mjs +65 -0
  383. package/dist/chunk-P54PZ72L.mjs.map +1 -0
  384. package/dist/chunk-PAJYNQR3.mjs +150 -0
  385. package/dist/chunk-PAJYNQR3.mjs.map +1 -0
  386. package/dist/chunk-PKXDRTC7.js +264 -0
  387. package/dist/chunk-PKXDRTC7.js.map +1 -0
  388. package/dist/chunk-PNAFXOZC.mjs +69 -0
  389. package/dist/chunk-PNAFXOZC.mjs.map +1 -0
  390. package/dist/chunk-PUSCPBT2.mjs +46 -0
  391. package/dist/chunk-PUSCPBT2.mjs.map +1 -0
  392. package/dist/chunk-PZ5AY32C.js +11 -0
  393. package/dist/chunk-PZ5AY32C.js.map +1 -0
  394. package/dist/chunk-Q2NE2UAO.mjs +119 -0
  395. package/dist/chunk-Q2NE2UAO.mjs.map +1 -0
  396. package/dist/chunk-QDHARZDN.js +129 -0
  397. package/dist/chunk-QDHARZDN.js.map +1 -0
  398. package/dist/chunk-QIUVXTLE.mjs +60 -0
  399. package/dist/chunk-QIUVXTLE.mjs.map +1 -0
  400. package/dist/chunk-QKZR2UTL.mjs +125 -0
  401. package/dist/chunk-QKZR2UTL.mjs.map +1 -0
  402. package/dist/{chunk-O233I5N7.mjs → chunk-QTFOUK4H.js} +15 -149
  403. package/dist/chunk-QTFOUK4H.js.map +1 -0
  404. package/dist/chunk-QW2ZHKPC.mjs +64 -0
  405. package/dist/chunk-QW2ZHKPC.mjs.map +1 -0
  406. package/dist/{chunk-RFBTMJ2Z.mjs → chunk-R2256VSD.js} +16 -557
  407. package/dist/chunk-R2256VSD.js.map +1 -0
  408. package/dist/chunk-RYJ5WEE3.js +101 -0
  409. package/dist/chunk-RYJ5WEE3.js.map +1 -0
  410. package/dist/{chunk-YFXGRV7X.mjs → chunk-S4OSJ4ZN.js} +9 -155
  411. package/dist/chunk-S4OSJ4ZN.js.map +1 -0
  412. package/dist/{chunk-SRLYXLUU.js → chunk-SWU5U5BB.mjs} +3 -217
  413. package/dist/chunk-SWU5U5BB.mjs.map +1 -0
  414. package/dist/chunk-SYFTQAZG.mjs +58 -0
  415. package/dist/chunk-SYFTQAZG.mjs.map +1 -0
  416. package/dist/{chunk-JRB22VVK.js → chunk-T5SPR27V.mjs} +3 -166
  417. package/dist/chunk-T5SPR27V.mjs.map +1 -0
  418. package/dist/{chunk-KLGB3FYE.js → chunk-TD4W3AHI.mjs} +3 -263
  419. package/dist/chunk-TD4W3AHI.mjs.map +1 -0
  420. package/dist/chunk-TMFXI5FH.mjs +52 -0
  421. package/dist/chunk-TMFXI5FH.mjs.map +1 -0
  422. package/dist/{chunk-QCHHXFJQ.js → chunk-UJBXDDHN.mjs} +4 -102
  423. package/dist/chunk-UJBXDDHN.mjs.map +1 -0
  424. package/dist/chunk-USLP5NY6.js +69 -0
  425. package/dist/chunk-USLP5NY6.js.map +1 -0
  426. package/dist/{chunk-W73CZFMA.mjs → chunk-UU34Q42Q.js} +7 -201
  427. package/dist/chunk-UU34Q42Q.js.map +1 -0
  428. package/dist/chunk-V4FFKIX3.js +166 -0
  429. package/dist/chunk-V4FFKIX3.js.map +1 -0
  430. package/dist/{chunk-VGVB5XZX.js → chunk-V4U6Q5NL.mjs} +3 -204
  431. package/dist/chunk-V4U6Q5NL.mjs.map +1 -0
  432. package/dist/chunk-VIKQGO4W.mjs +636 -0
  433. package/dist/chunk-VIKQGO4W.mjs.map +1 -0
  434. package/dist/chunk-VUIWYURS.js +162 -0
  435. package/dist/chunk-VUIWYURS.js.map +1 -0
  436. package/dist/chunk-VWHER5XN.js +65 -0
  437. package/dist/chunk-VWHER5XN.js.map +1 -0
  438. package/dist/chunk-WBRTXAKP.js +705 -0
  439. package/dist/chunk-WBRTXAKP.js.map +1 -0
  440. package/dist/chunk-WN7XWKAS.mjs +52 -0
  441. package/dist/chunk-WN7XWKAS.mjs.map +1 -0
  442. package/dist/{chunk-XYKDSHRG.js → chunk-X3N4EVF7.mjs} +3 -707
  443. package/dist/chunk-X3N4EVF7.mjs.map +1 -0
  444. package/dist/chunk-XPHD3X4L.mjs +98 -0
  445. package/dist/chunk-XPHD3X4L.mjs.map +1 -0
  446. package/dist/chunk-Y4YQSCNL.js +65 -0
  447. package/dist/chunk-Y4YQSCNL.js.map +1 -0
  448. package/dist/chunk-Y73U7C4T.js +238 -0
  449. package/dist/chunk-Y73U7C4T.js.map +1 -0
  450. package/dist/{chunk-ENV73575.mjs → chunk-Y7NRTCAT.js} +10 -122
  451. package/dist/chunk-Y7NRTCAT.js.map +1 -0
  452. package/dist/{chunk-ZZ53RJNH.js → chunk-YDKAE7RM.mjs} +3 -69
  453. package/dist/chunk-YDKAE7RM.mjs.map +1 -0
  454. package/dist/{chunk-VO7LNOC5.mjs → chunk-YN4ZS3R2.js} +10 -257
  455. package/dist/chunk-YN4ZS3R2.js.map +1 -0
  456. package/dist/chunk-ZCTSXNAE.mjs +221 -0
  457. package/dist/chunk-ZCTSXNAE.mjs.map +1 -0
  458. package/dist/chunk-ZFNVFMWG.mjs +703 -0
  459. package/dist/chunk-ZFNVFMWG.mjs.map +1 -0
  460. package/dist/chunk-ZITS2V53.js +130 -0
  461. package/dist/chunk-ZITS2V53.js.map +1 -0
  462. package/dist/chunk-ZY6O6Z2I.mjs +350 -0
  463. package/dist/chunk-ZY6O6Z2I.mjs.map +1 -0
  464. package/dist/design-system/button.d.ts +1 -1
  465. package/dist/design-system/copy-button.d.ts +1 -1
  466. package/dist/design-system/facade.js +403 -0
  467. package/dist/design-system/facade.js.map +1 -0
  468. package/dist/design-system/facade.mjs +401 -0
  469. package/dist/design-system/facade.mjs.map +1 -0
  470. package/dist/design-system/tokens.js +1 -0
  471. package/dist/design-system/tokens.mjs +1 -0
  472. package/dist/hooks/useBodyScrollLock.js +1 -0
  473. package/dist/hooks/useBodyScrollLock.mjs +1 -0
  474. package/dist/hooks/useClickOutside.js +1 -0
  475. package/dist/hooks/useClickOutside.mjs +1 -0
  476. package/dist/hooks/useClipboard.js +1 -0
  477. package/dist/hooks/useClipboard.mjs +1 -0
  478. package/dist/hooks/useControllableState.js +1 -0
  479. package/dist/hooks/useControllableState.mjs +1 -0
  480. package/dist/hooks/useDebouncedValue.js +1 -1
  481. package/dist/hooks/useDebouncedValue.mjs +1 -1
  482. package/dist/hooks/useDisclosure.js +1 -0
  483. package/dist/hooks/useDisclosure.js.map +1 -1
  484. package/dist/hooks/useDisclosure.mjs +1 -0
  485. package/dist/hooks/useDisclosure.mjs.map +1 -1
  486. package/dist/hooks/useDocumentTitle.js +1 -1
  487. package/dist/hooks/useDocumentTitle.mjs +1 -1
  488. package/dist/hooks/useDynamicStepper.js +1 -0
  489. package/dist/hooks/useDynamicStepper.mjs +1 -0
  490. package/dist/hooks/useFocusManagement.js +1 -0
  491. package/dist/hooks/useFocusManagement.mjs +1 -0
  492. package/dist/hooks/useHover.js +1 -1
  493. package/dist/hooks/useHover.mjs +1 -1
  494. package/dist/hooks/useInView.js +1 -0
  495. package/dist/hooks/useInView.js.map +1 -1
  496. package/dist/hooks/useInView.mjs +1 -0
  497. package/dist/hooks/useInView.mjs.map +1 -1
  498. package/dist/hooks/useIntersectionObserver.js +1 -0
  499. package/dist/hooks/useIntersectionObserver.mjs +1 -0
  500. package/dist/hooks/useIsMounted.js +1 -1
  501. package/dist/hooks/useIsMounted.mjs +1 -1
  502. package/dist/hooks/useIsomorphicLayoutEffect.js +1 -0
  503. package/dist/hooks/useIsomorphicLayoutEffect.mjs +1 -0
  504. package/dist/hooks/useLocalStorage.js +1 -1
  505. package/dist/hooks/useLocalStorage.mjs +1 -1
  506. package/dist/hooks/useMediaQuery.js +1 -0
  507. package/dist/hooks/useMediaQuery.mjs +1 -0
  508. package/dist/hooks/useNetworkStatus.js +1 -1
  509. package/dist/hooks/useNetworkStatus.mjs +1 -1
  510. package/dist/hooks/usePageVisibility.js +1 -1
  511. package/dist/hooks/usePageVisibility.mjs +1 -1
  512. package/dist/hooks/usePagination.js +1 -0
  513. package/dist/hooks/usePagination.mjs +1 -0
  514. package/dist/hooks/usePrefersColorScheme.js +1 -0
  515. package/dist/hooks/usePrefersColorScheme.js.map +1 -1
  516. package/dist/hooks/usePrefersColorScheme.mjs +1 -0
  517. package/dist/hooks/usePrefersColorScheme.mjs.map +1 -1
  518. package/dist/hooks/usePrefersReducedMotion.js +1 -0
  519. package/dist/hooks/usePrefersReducedMotion.js.map +1 -1
  520. package/dist/hooks/usePrefersReducedMotion.mjs +1 -0
  521. package/dist/hooks/usePrefersReducedMotion.mjs.map +1 -1
  522. package/dist/hooks/useResizeObserver.js +1 -0
  523. package/dist/hooks/useResizeObserver.mjs +1 -0
  524. package/dist/hooks/useSessionStorage.js +1 -1
  525. package/dist/hooks/useSessionStorage.mjs +1 -1
  526. package/dist/hooks/useTableFilter.js +1 -1
  527. package/dist/hooks/useTableFilter.mjs +1 -1
  528. package/dist/hooks/useTableSort.js +1 -1
  529. package/dist/hooks/useTableSort.mjs +1 -1
  530. package/dist/hooks/useThrottledCallback.js +1 -1
  531. package/dist/hooks/useThrottledCallback.mjs +1 -1
  532. package/dist/hooks/useToggle.js +1 -1
  533. package/dist/hooks/useToggle.mjs +1 -1
  534. package/dist/hooks/useWindowSize.js +1 -1
  535. package/dist/hooks/useWindowSize.mjs +1 -1
  536. package/dist/hooks/utils.js +1 -0
  537. package/dist/hooks/utils.mjs +1 -0
  538. package/dist/lib/facade.d.ts +53 -0
  539. package/dist/lib/facade.d.ts.map +1 -0
  540. package/dist/ui/accordion/animated.js +9 -7
  541. package/dist/ui/accordion/animated.js.map +1 -1
  542. package/dist/ui/accordion/animated.mjs +4 -2
  543. package/dist/ui/accordion/animated.mjs.map +1 -1
  544. package/dist/ui/accordion.js +11 -9
  545. package/dist/ui/accordion.js.map +1 -1
  546. package/dist/ui/accordion.mjs +4 -2
  547. package/dist/ui/accordion.mjs.map +1 -1
  548. package/dist/ui/alert/animated.js +4 -2
  549. package/dist/ui/alert/animated.js.map +1 -1
  550. package/dist/ui/alert/animated.mjs +3 -1
  551. package/dist/ui/alert/animated.mjs.map +1 -1
  552. package/dist/ui/alert.js +12 -10
  553. package/dist/ui/alert.js.map +1 -1
  554. package/dist/ui/alert.mjs +4 -2
  555. package/dist/ui/alert.mjs.map +1 -1
  556. package/dist/ui/animated-number.js +5 -58
  557. package/dist/ui/animated-number.js.map +1 -1
  558. package/dist/ui/animated-number.mjs +2 -55
  559. package/dist/ui/animated-number.mjs.map +1 -1
  560. package/dist/ui/avatar/animated.js +7 -5
  561. package/dist/ui/avatar/animated.js.map +1 -1
  562. package/dist/ui/avatar/animated.mjs +4 -2
  563. package/dist/ui/avatar/animated.mjs.map +1 -1
  564. package/dist/ui/avatar.js +11 -9
  565. package/dist/ui/avatar.js.map +1 -1
  566. package/dist/ui/avatar.mjs +4 -2
  567. package/dist/ui/avatar.mjs.map +1 -1
  568. package/dist/ui/badge/animated.js +4 -2
  569. package/dist/ui/badge/animated.js.map +1 -1
  570. package/dist/ui/badge/animated.mjs +3 -1
  571. package/dist/ui/badge/animated.mjs.map +1 -1
  572. package/dist/ui/badge.js +6 -4
  573. package/dist/ui/badge.js.map +1 -1
  574. package/dist/ui/badge.mjs +4 -2
  575. package/dist/ui/badge.mjs.map +1 -1
  576. package/dist/ui/breadcrumb.js +10 -58
  577. package/dist/ui/breadcrumb.js.map +1 -1
  578. package/dist/ui/breadcrumb.mjs +2 -50
  579. package/dist/ui/breadcrumb.mjs.map +1 -1
  580. package/dist/ui/buttons/animated.js +43 -3
  581. package/dist/ui/buttons/animated.js.map +1 -1
  582. package/dist/ui/buttons/animated.mjs +41 -1
  583. package/dist/ui/buttons/animated.mjs.map +1 -1
  584. package/dist/ui/buttons.js +44 -4
  585. package/dist/ui/buttons.mjs +42 -2
  586. package/dist/ui/card/animated.js +9 -7
  587. package/dist/ui/card/animated.js.map +1 -1
  588. package/dist/ui/card/animated.mjs +4 -2
  589. package/dist/ui/card/animated.mjs.map +1 -1
  590. package/dist/ui/card.js +14 -12
  591. package/dist/ui/card.js.map +1 -1
  592. package/dist/ui/card.mjs +4 -2
  593. package/dist/ui/card.mjs.map +1 -1
  594. package/dist/ui/checkbox/animated.js +6 -4
  595. package/dist/ui/checkbox/animated.js.map +1 -1
  596. package/dist/ui/checkbox/animated.mjs +3 -1
  597. package/dist/ui/checkbox/animated.mjs.map +1 -1
  598. package/dist/ui/checkbox.js +10 -8
  599. package/dist/ui/checkbox.js.map +1 -1
  600. package/dist/ui/checkbox.mjs +4 -2
  601. package/dist/ui/checkbox.mjs.map +1 -1
  602. package/dist/ui/command/animated.js +4 -2
  603. package/dist/ui/command/animated.js.map +1 -1
  604. package/dist/ui/command/animated.mjs +3 -1
  605. package/dist/ui/command/animated.mjs.map +1 -1
  606. package/dist/ui/command.js +17 -15
  607. package/dist/ui/command.js.map +1 -1
  608. package/dist/ui/command.mjs +4 -2
  609. package/dist/ui/command.mjs.map +1 -1
  610. package/dist/ui/context-menu.js +9 -59
  611. package/dist/ui/context-menu.js.map +1 -1
  612. package/dist/ui/context-menu.mjs +3 -53
  613. package/dist/ui/context-menu.mjs.map +1 -1
  614. package/dist/ui/copy-button/animated.js +4 -2
  615. package/dist/ui/copy-button/animated.js.map +1 -1
  616. package/dist/ui/copy-button/animated.mjs +3 -1
  617. package/dist/ui/copy-button/animated.mjs.map +1 -1
  618. package/dist/ui/copy-button.js +5 -3
  619. package/dist/ui/copy-button.js.map +1 -1
  620. package/dist/ui/copy-button.mjs +4 -2
  621. package/dist/ui/copy-button.mjs.map +1 -1
  622. package/dist/ui/divider/animated.js +4 -2
  623. package/dist/ui/divider/animated.js.map +1 -1
  624. package/dist/ui/divider/animated.mjs +3 -1
  625. package/dist/ui/divider/animated.mjs.map +1 -1
  626. package/dist/ui/divider.js +8 -6
  627. package/dist/ui/divider.js.map +1 -1
  628. package/dist/ui/divider.mjs +4 -2
  629. package/dist/ui/divider.mjs.map +1 -1
  630. package/dist/ui/drawer/animated.js +13 -11
  631. package/dist/ui/drawer/animated.js.map +1 -1
  632. package/dist/ui/drawer/animated.mjs +4 -2
  633. package/dist/ui/drawer/animated.mjs.map +1 -1
  634. package/dist/ui/drawer.js +13 -11
  635. package/dist/ui/drawer.mjs +3 -1
  636. package/dist/ui/dropdown.js +1 -0
  637. package/dist/ui/dropdown.js.map +1 -1
  638. package/dist/ui/dropdown.mjs +1 -0
  639. package/dist/ui/dropdown.mjs.map +1 -1
  640. package/dist/ui/dynamic-stepper.js +53 -132
  641. package/dist/ui/dynamic-stepper.js.map +1 -1
  642. package/dist/ui/dynamic-stepper.mjs +42 -121
  643. package/dist/ui/dynamic-stepper.mjs.map +1 -1
  644. package/dist/ui/empty-state/animated.js +4 -2
  645. package/dist/ui/empty-state/animated.js.map +1 -1
  646. package/dist/ui/empty-state/animated.mjs +3 -1
  647. package/dist/ui/empty-state/animated.mjs.map +1 -1
  648. package/dist/ui/empty-state.js +12 -10
  649. package/dist/ui/empty-state.js.map +1 -1
  650. package/dist/ui/empty-state.mjs +4 -2
  651. package/dist/ui/empty-state.mjs.map +1 -1
  652. package/dist/ui/file-upload.js +4 -44
  653. package/dist/ui/file-upload.js.map +1 -1
  654. package/dist/ui/file-upload.mjs +2 -42
  655. package/dist/ui/file-upload.mjs.map +1 -1
  656. package/dist/ui/inputs/animated.js +5 -3
  657. package/dist/ui/inputs/animated.js.map +1 -1
  658. package/dist/ui/inputs/animated.mjs +3 -1
  659. package/dist/ui/inputs/animated.mjs.map +1 -1
  660. package/dist/ui/inputs.js +6 -4
  661. package/dist/ui/inputs.js.map +1 -1
  662. package/dist/ui/inputs.mjs +4 -2
  663. package/dist/ui/inputs.mjs.map +1 -1
  664. package/dist/ui/kbd/animated.js +4 -2
  665. package/dist/ui/kbd/animated.js.map +1 -1
  666. package/dist/ui/kbd/animated.mjs +3 -1
  667. package/dist/ui/kbd/animated.mjs.map +1 -1
  668. package/dist/ui/kbd.js +6 -4
  669. package/dist/ui/kbd.js.map +1 -1
  670. package/dist/ui/kbd.mjs +4 -2
  671. package/dist/ui/kbd.mjs.map +1 -1
  672. package/dist/ui/marquee.js +7 -68
  673. package/dist/ui/marquee.js.map +1 -1
  674. package/dist/ui/marquee.mjs +2 -63
  675. package/dist/ui/marquee.mjs.map +1 -1
  676. package/dist/ui/modal/animated.js +6 -4
  677. package/dist/ui/modal/animated.js.map +1 -1
  678. package/dist/ui/modal/animated.mjs +3 -1
  679. package/dist/ui/modal/animated.mjs.map +1 -1
  680. package/dist/ui/modal.js +14 -12
  681. package/dist/ui/modal.js.map +1 -1
  682. package/dist/ui/modal.mjs +4 -2
  683. package/dist/ui/modal.mjs.map +1 -1
  684. package/dist/ui/otp-input.js +11 -57
  685. package/dist/ui/otp-input.js.map +1 -1
  686. package/dist/ui/otp-input.mjs +2 -48
  687. package/dist/ui/otp-input.mjs.map +1 -1
  688. package/dist/ui/pagination.js +49 -95
  689. package/dist/ui/pagination.js.map +1 -1
  690. package/dist/ui/pagination.mjs +41 -87
  691. package/dist/ui/pagination.mjs.map +1 -1
  692. package/dist/ui/popover/animated.js +6 -4
  693. package/dist/ui/popover/animated.js.map +1 -1
  694. package/dist/ui/popover/animated.mjs +3 -1
  695. package/dist/ui/popover/animated.mjs.map +1 -1
  696. package/dist/ui/popover.js +9 -7
  697. package/dist/ui/popover.mjs +3 -1
  698. package/dist/ui/progress/animated.js +10 -8
  699. package/dist/ui/progress/animated.js.map +1 -1
  700. package/dist/ui/progress/animated.mjs +4 -2
  701. package/dist/ui/progress/animated.mjs.map +1 -1
  702. package/dist/ui/progress/variants.d.ts +2 -2
  703. package/dist/ui/progress.js +11 -9
  704. package/dist/ui/progress.js.map +1 -1
  705. package/dist/ui/progress.mjs +4 -2
  706. package/dist/ui/progress.mjs.map +1 -1
  707. package/dist/ui/radio-group/animated.js +9 -7
  708. package/dist/ui/radio-group/animated.js.map +1 -1
  709. package/dist/ui/radio-group/animated.mjs +3 -1
  710. package/dist/ui/radio-group/animated.mjs.map +1 -1
  711. package/dist/ui/radio-group.js +13 -11
  712. package/dist/ui/radio-group.js.map +1 -1
  713. package/dist/ui/radio-group.mjs +4 -2
  714. package/dist/ui/radio-group.mjs.map +1 -1
  715. package/dist/ui/rating.js +12 -74
  716. package/dist/ui/rating.js.map +1 -1
  717. package/dist/ui/rating.mjs +2 -64
  718. package/dist/ui/rating.mjs.map +1 -1
  719. package/dist/ui/scroll-area.js +8 -62
  720. package/dist/ui/scroll-area.js.map +1 -1
  721. package/dist/ui/scroll-area.mjs +2 -56
  722. package/dist/ui/scroll-area.mjs.map +1 -1
  723. package/dist/ui/search.js +4 -2
  724. package/dist/ui/search.js.map +1 -1
  725. package/dist/ui/search.mjs +3 -1
  726. package/dist/ui/search.mjs.map +1 -1
  727. package/dist/ui/select.js +12 -167
  728. package/dist/ui/select.js.map +1 -1
  729. package/dist/ui/select.mjs +2 -157
  730. package/dist/ui/select.mjs.map +1 -1
  731. package/dist/ui/skeleton/animated.js +10 -8
  732. package/dist/ui/skeleton/animated.js.map +1 -1
  733. package/dist/ui/skeleton/animated.mjs +3 -1
  734. package/dist/ui/skeleton/animated.mjs.map +1 -1
  735. package/dist/ui/skeleton.js +11 -9
  736. package/dist/ui/skeleton.mjs +3 -1
  737. package/dist/ui/slider.js +10 -75
  738. package/dist/ui/slider.js.map +1 -1
  739. package/dist/ui/slider.mjs +2 -67
  740. package/dist/ui/slider.mjs.map +1 -1
  741. package/dist/ui/spinner/animated.js +6 -66
  742. package/dist/ui/spinner/animated.js.map +1 -1
  743. package/dist/ui/spinner/animated.mjs +2 -62
  744. package/dist/ui/spinner/animated.mjs.map +1 -1
  745. package/dist/ui/table/animated.js +10 -8
  746. package/dist/ui/table/animated.js.map +1 -1
  747. package/dist/ui/table/animated.mjs +4 -2
  748. package/dist/ui/table/animated.mjs.map +1 -1
  749. package/dist/ui/table.js +16 -14
  750. package/dist/ui/table.mjs +3 -1
  751. package/dist/ui/tabs/animated.js +4 -2
  752. package/dist/ui/tabs/animated.js.map +1 -1
  753. package/dist/ui/tabs/animated.mjs +3 -1
  754. package/dist/ui/tabs/animated.mjs.map +1 -1
  755. package/dist/ui/tabs.js +11 -9
  756. package/dist/ui/tabs.mjs +3 -1
  757. package/dist/ui/timeline/animated.js +13 -11
  758. package/dist/ui/timeline/animated.js.map +1 -1
  759. package/dist/ui/timeline/animated.mjs +4 -2
  760. package/dist/ui/timeline/animated.mjs.map +1 -1
  761. package/dist/ui/timeline.js +16 -14
  762. package/dist/ui/timeline.js.map +1 -1
  763. package/dist/ui/timeline.mjs +4 -2
  764. package/dist/ui/timeline.mjs.map +1 -1
  765. package/dist/ui/toast/animated.js +9 -7
  766. package/dist/ui/toast/animated.js.map +1 -1
  767. package/dist/ui/toast/animated.mjs +3 -1
  768. package/dist/ui/toast/animated.mjs.map +1 -1
  769. package/dist/ui/toast.js +14 -12
  770. package/dist/ui/toast.mjs +3 -1
  771. package/dist/ui/toggle/animated.js +6 -4
  772. package/dist/ui/toggle/animated.js.map +1 -1
  773. package/dist/ui/toggle/animated.mjs +3 -1
  774. package/dist/ui/toggle/animated.mjs.map +1 -1
  775. package/dist/ui/toggle.js +6 -4
  776. package/dist/ui/toggle.js.map +1 -1
  777. package/dist/ui/toggle.mjs +4 -2
  778. package/dist/ui/toggle.mjs.map +1 -1
  779. package/dist/ui/tooltip/animated.js +5 -3
  780. package/dist/ui/tooltip/animated.js.map +1 -1
  781. package/dist/ui/tooltip/animated.mjs +3 -1
  782. package/dist/ui/tooltip/animated.mjs.map +1 -1
  783. package/dist/ui/tooltip.js +9 -7
  784. package/dist/ui/tooltip.mjs +3 -1
  785. package/dist/ui/tree-view/animated.js +4 -2
  786. package/dist/ui/tree-view/animated.js.map +1 -1
  787. package/dist/ui/tree-view/animated.mjs +3 -1
  788. package/dist/ui/tree-view/animated.mjs.map +1 -1
  789. package/dist/ui/tree-view.js +7 -5
  790. package/dist/ui/tree-view.js.map +1 -1
  791. package/dist/ui/tree-view.mjs +4 -2
  792. package/dist/ui/tree-view.mjs.map +1 -1
  793. package/dist/ui/typography.js +9 -51
  794. package/dist/ui/typography.js.map +1 -1
  795. package/dist/ui/typography.mjs +2 -44
  796. package/dist/ui/typography.mjs.map +1 -1
  797. package/package.json +7 -2
  798. package/src/design-system/button.ts +1 -1
  799. package/src/design-system/copy-button.ts +1 -1
  800. package/src/lib/facade.test.ts +182 -0
  801. package/src/lib/facade.ts +805 -0
  802. package/dist/chunk-2RBUROXJ.js.map +0 -1
  803. package/dist/chunk-3IBWZM52.js.map +0 -1
  804. package/dist/chunk-3RHJJZIT.js +0 -98
  805. package/dist/chunk-3RHJJZIT.js.map +0 -1
  806. package/dist/chunk-4GVMPQZS.js.map +0 -1
  807. package/dist/chunk-4WRCXG5E.mjs.map +0 -1
  808. package/dist/chunk-6GPUHFXI.mjs.map +0 -1
  809. package/dist/chunk-6ONKAOI7.mjs.map +0 -1
  810. package/dist/chunk-6VZGM4DI.mjs.map +0 -1
  811. package/dist/chunk-7PIOCFV3.mjs.map +0 -1
  812. package/dist/chunk-7XHWUEQR.mjs.map +0 -1
  813. package/dist/chunk-AFBKMQMK.js.map +0 -1
  814. package/dist/chunk-AS34PVUG.mjs.map +0 -1
  815. package/dist/chunk-B3LCKPBX.js.map +0 -1
  816. package/dist/chunk-CARQELOX.mjs.map +0 -1
  817. package/dist/chunk-CCVQ5KX6.mjs +0 -96
  818. package/dist/chunk-CCVQ5KX6.mjs.map +0 -1
  819. package/dist/chunk-DBW25HOR.mjs.map +0 -1
  820. package/dist/chunk-DMDCXYNN.js.map +0 -1
  821. package/dist/chunk-EKLWWV3G.mjs.map +0 -1
  822. package/dist/chunk-ENV73575.mjs.map +0 -1
  823. package/dist/chunk-HI54NLVM.js.map +0 -1
  824. package/dist/chunk-JGSQZZHF.js.map +0 -1
  825. package/dist/chunk-JRB22VVK.js.map +0 -1
  826. package/dist/chunk-KC77BXBC.js.map +0 -1
  827. package/dist/chunk-KIAYTBS5.js.map +0 -1
  828. package/dist/chunk-KLGB3FYE.js.map +0 -1
  829. package/dist/chunk-O233I5N7.mjs.map +0 -1
  830. package/dist/chunk-OEDD43IT.mjs.map +0 -1
  831. package/dist/chunk-OY3YJGOX.mjs.map +0 -1
  832. package/dist/chunk-PZBTZGJE.js.map +0 -1
  833. package/dist/chunk-QCHHXFJQ.js.map +0 -1
  834. package/dist/chunk-REDZL4DY.mjs.map +0 -1
  835. package/dist/chunk-RFBTMJ2Z.mjs.map +0 -1
  836. package/dist/chunk-S4NQTWMW.mjs.map +0 -1
  837. package/dist/chunk-SRLYXLUU.js.map +0 -1
  838. package/dist/chunk-U7FZ5RMV.js.map +0 -1
  839. package/dist/chunk-UMXCV5IT.mjs.map +0 -1
  840. package/dist/chunk-UNPKDNLA.js.map +0 -1
  841. package/dist/chunk-URXYF25P.mjs.map +0 -1
  842. package/dist/chunk-VGVB5XZX.js.map +0 -1
  843. package/dist/chunk-VJSME7ML.js.map +0 -1
  844. package/dist/chunk-VO7LNOC5.mjs.map +0 -1
  845. package/dist/chunk-VX56EVPF.mjs.map +0 -1
  846. package/dist/chunk-W73CZFMA.mjs.map +0 -1
  847. package/dist/chunk-WRHUWKZS.js.map +0 -1
  848. package/dist/chunk-WVBFSJEB.js.map +0 -1
  849. package/dist/chunk-XIG2QDVN.js.map +0 -1
  850. package/dist/chunk-XJFDGKZO.mjs.map +0 -1
  851. package/dist/chunk-XOYCFLEZ.mjs.map +0 -1
  852. package/dist/chunk-YFXGRV7X.mjs.map +0 -1
  853. package/dist/chunk-ZZ53RJNH.js.map +0 -1
@@ -0,0 +1,805 @@
1
+ // Introspection API over the design-system token strings.
2
+ //
3
+ // This is metadata-only: it reads the exported `zui*` style constants and
4
+ // surfaces the `--zui-*` CSS variable contract behind each component, variant,
5
+ // and slot. It is NOT the runtime styling path — components keep wiring tokens
6
+ // through `cva()` directly. Use this for token discovery, docs tables, theme
7
+ // editors, CLI validation, and (later) design-tool export.
8
+ //
9
+ // DesignSystem.getComponent("accordion")
10
+ // .getVariant("appearance", "blue")
11
+ // .variables();
12
+
13
+ import * as tokens from "../design-system/index";
14
+
15
+ export type TokenTheme = "light" | "dark" | "shared";
16
+
17
+ export type ZuiVariable = {
18
+ name: `--zui-${string}`;
19
+ fallback: string;
20
+ theme: TokenTheme;
21
+ pairName?: `--zui-${string}`;
22
+ };
23
+
24
+ export type VariantHandle = {
25
+ /** Normalized group, e.g. "appearance", "size", or "base". */
26
+ group: string;
27
+ /** Variant key within the group, e.g. "blue", "md". For base groups: "base". */
28
+ key: string;
29
+ /** Slot the variant belongs to, e.g. "root", "item", "trigger". */
30
+ slot: string;
31
+ /** Raw Tailwind class string for the variant. */
32
+ className: string;
33
+ /** `--zui-*` variables referenced by the variant, with light/dark pairing. */
34
+ variables: () => ZuiVariable[];
35
+ };
36
+
37
+ export type ComponentHandle = {
38
+ slug: string;
39
+ title: string;
40
+ /** All slots that expose tokens, e.g. ["root", "item", "trigger"]. */
41
+ slots: () => string[];
42
+ /** Variant group names available on the root slot, e.g. ["appearance", "size"]. */
43
+ groups: () => string[];
44
+ /** Appearance keys for a slot (defaults to the root slot). */
45
+ appearances: (slot?: string) => string[];
46
+ /** Size keys for a slot (defaults to the root slot). */
47
+ sizes: (slot?: string) => string[];
48
+ /** Resolve a single variant. `group` accepts "appearance", "size", "base", … */
49
+ getVariant: (
50
+ group: string,
51
+ key: string,
52
+ options?: { slot?: string },
53
+ ) => VariantHandle | undefined;
54
+ /** All variants for a group (defaults to the root slot). */
55
+ variants: (group: string, options?: { slot?: string }) => VariantHandle[];
56
+ /** Every `--zui-*` variable the component references, deduped and paired. */
57
+ variables: () => ZuiVariable[];
58
+ };
59
+
60
+ type ComponentSpec = {
61
+ slug: string;
62
+ title: string;
63
+ /** Identifier stem of the `zui<Stem>…` exports backing this component. */
64
+ exportPrefix: string;
65
+ /**
66
+ * Identifier stems whose exports contribute this component's variables.
67
+ * Defaults to `[exportPrefix]`. Components that reuse another component's
68
+ * recipe (e.g. SearchBar → Input) or spread their tokens across several
69
+ * stems (e.g. Typography → Heading/Text/lists) widen this list.
70
+ */
71
+ variableStems: string[];
72
+ };
73
+
74
+ const componentSlugs = [
75
+ "accordion",
76
+ "alert",
77
+ "animated-number",
78
+ "avatar",
79
+ "badge",
80
+ "breadcrumb",
81
+ "buttons",
82
+ "card",
83
+ "checkbox",
84
+ "command",
85
+ "context-menu",
86
+ "copy-button",
87
+ "divider",
88
+ "drawer",
89
+ "dropdown",
90
+ "dynamic-stepper",
91
+ "empty-state",
92
+ "file-upload",
93
+ "inputs",
94
+ "kbd",
95
+ "marquee",
96
+ "modal",
97
+ "otp-input",
98
+ "pagination",
99
+ "popover",
100
+ "progress",
101
+ "radio-group",
102
+ "rating",
103
+ "scroll-area",
104
+ "search",
105
+ "select",
106
+ "skeleton",
107
+ "slider",
108
+ "spinner",
109
+ "table",
110
+ "tabs",
111
+ "timeline",
112
+ "toast",
113
+ "toggle",
114
+ "tooltip",
115
+ "tree-view",
116
+ "typography",
117
+ ] as const;
118
+
119
+ // Shared "recipe" exports that no single component owns. They are spread into a
120
+ // component's own token export (e.g. `zuiButtonLikeSolidAppearances` →
121
+ // `zuiBadgeAppearances`), so the owning component already gets their classes
122
+ // through that spread. The standalone export must be ignored, otherwise its
123
+ // identifier prefix mis-attributes it: `zuiButtonLikeSolidAppearances` starts
124
+ // with the `Button` stem yet references only `--zui-badge-*` variables, which
125
+ // would leak badge tokens into the Buttons model (and add a phantom variant).
126
+ const sharedRecipeExports = new Set(["zuiButtonLikeSolidAppearances"]);
127
+
128
+ // Slugs whose export stem(s) or title diverge from the slug itself.
129
+ const overrides: Record<
130
+ string,
131
+ { exportPrefix?: string; title?: string; variableStems?: string[] }
132
+ > = {
133
+ buttons: { exportPrefix: "Button" },
134
+ inputs: { exportPrefix: "Input" },
135
+ "otp-input": { exportPrefix: "Otp" },
136
+ // SearchBar has no tokens of its own — it renders the Input recipe.
137
+ search: { exportPrefix: "Input", title: "Search" },
138
+ // Typography spreads its tokens across heading/text/list stems.
139
+ typography: {
140
+ variableStems: ["Typography", "Heading", "Text", "Ordered", "Unordered"],
141
+ },
142
+ };
143
+
144
+ // Identifier suffix → normalized variant group name. Plural forms precede the
145
+ // singular so the longer suffix wins when both could match.
146
+ const groupSuffixes: Array<[suffix: string, group: string]> = [
147
+ ["Appearances", "appearance"],
148
+ ["Appearance", "appearance"],
149
+ ["Sizes", "size"],
150
+ ["Size", "size"],
151
+ ["Orientations", "orientation"],
152
+ ["Orientation", "orientation"],
153
+ ["Alignments", "alignment"],
154
+ ["Alignment", "alignment"],
155
+ ["Levels", "level"],
156
+ ["Level", "level"],
157
+ ["Tones", "tone"],
158
+ ["Tone", "tone"],
159
+ ["Variants", "variant"],
160
+ ["Variant", "variant"],
161
+ ["Speeds", "speed"],
162
+ ["Speed", "speed"],
163
+ ["Placements", "placement"],
164
+ ["Placement", "placement"],
165
+ ["Positions", "position"],
166
+ ["Position", "position"],
167
+ ["Animations", "animation"],
168
+ ["Animation", "animation"],
169
+ ["Shapes", "shape"],
170
+ ["Shape", "shape"],
171
+ ["Shadows", "shadow"],
172
+ ["Sides", "side"],
173
+ ["Side", "side"],
174
+ ["Widths", "width"],
175
+ ["Width", "width"],
176
+ ["Colors", "color"],
177
+ ["Color", "color"],
178
+ ["Rounded", "rounded"],
179
+ ["Spacing", "spacing"],
180
+ ["Visibility", "visibility"],
181
+ ["Markers", "marker"],
182
+ ];
183
+
184
+ function pascalCase(slug: string) {
185
+ return slug
186
+ .split("-")
187
+ .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
188
+ .join("");
189
+ }
190
+
191
+ function titleCase(slug: string) {
192
+ return slug
193
+ .split("-")
194
+ .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
195
+ .join(" ");
196
+ }
197
+
198
+ function kebabCase(value: string) {
199
+ return value
200
+ .replace(/([a-z0-9])([A-Z])/g, "$1-$2")
201
+ .replace(/_/g, "-")
202
+ .toLowerCase();
203
+ }
204
+
205
+ const specs: ComponentSpec[] = componentSlugs.map((slug) => {
206
+ const override = overrides[slug] ?? {};
207
+ const exportPrefix = override.exportPrefix ?? pascalCase(slug);
208
+
209
+ return {
210
+ slug,
211
+ title: override.title ?? titleCase(slug),
212
+ exportPrefix,
213
+ variableStems: override.variableStems ?? [exportPrefix],
214
+ };
215
+ });
216
+
217
+ /**
218
+ * Does `name` belong to the `zui<stem>` export family? Uses the same uppercase
219
+ * boundary guard as {@link classifyExportName} so stem "Tab" doesn't claim
220
+ * "zuiTabsBase" (remainder "sBase" starts lowercase).
221
+ */
222
+ function nameMatchesStem(name: string, stem: string): boolean {
223
+ const full = `zui${stem}`;
224
+
225
+ if (!name.startsWith(full)) {
226
+ return false;
227
+ }
228
+
229
+ const remainder = name.slice(full.length);
230
+ return remainder.length === 0 || /^[A-Z]/.test(remainder);
231
+ }
232
+
233
+ // --- CSS variable parsing -------------------------------------------------
234
+
235
+ function readBalancedExpression(input: string, startIndex: number) {
236
+ let depth = 0;
237
+
238
+ for (let index = startIndex; index < input.length; index += 1) {
239
+ const char = input[index];
240
+
241
+ if (char === "(") {
242
+ depth += 1;
243
+ continue;
244
+ }
245
+
246
+ if (char === ")") {
247
+ depth -= 1;
248
+
249
+ if (depth === 0) {
250
+ return input.slice(startIndex + 1, index);
251
+ }
252
+ }
253
+ }
254
+
255
+ return "";
256
+ }
257
+
258
+ function findTopLevelComma(input: string) {
259
+ let depth = 0;
260
+
261
+ for (let index = 0; index < input.length; index += 1) {
262
+ const char = input[index];
263
+
264
+ if (char === "(") {
265
+ depth += 1;
266
+ continue;
267
+ }
268
+
269
+ if (char === ")") {
270
+ depth -= 1;
271
+ continue;
272
+ }
273
+
274
+ if (char === "," && depth === 0) {
275
+ return index;
276
+ }
277
+ }
278
+
279
+ return -1;
280
+ }
281
+
282
+ type RawVariable = { name: `--zui-${string}`; fallback: string };
283
+
284
+ /**
285
+ * Pull every `--zui-*` CSS variable (name + fallback) out of a Tailwind class
286
+ * string. A class string typically contains many `var(--name, fallback)`
287
+ * references mixed in with normal utility classes.
288
+ *
289
+ * It scans left-to-right for `var(` openings and, for each, reads the balanced
290
+ * parenthesised body so that nested `var()`/`oklch()` fallbacks don't confuse
291
+ * the parser. The body is split at the first *top-level* comma into name and
292
+ * fallback. Underscores in the fallback are converted to spaces because
293
+ * Tailwind's arbitrary-value syntax encodes spaces as `_`
294
+ * (e.g. `oklch(44.6%_0.043_257.281)`).
295
+ *
296
+ * Step by step:
297
+ * 1. Find the next `var(` from the current `searchIndex`; stop when none remain.
298
+ * 2. Read the balanced expression after `var` → the text inside the outermost
299
+ * parens (handles nested parens like `oklch(...)`).
300
+ * 3. Locate the first comma that sits at paren-depth 0 — the name/fallback split.
301
+ * 4. Slice out `name` (before the comma) and `fallback` (after it, `_`→space).
302
+ * No comma ⇒ the whole body is the name and the fallback is `""`.
303
+ * 5. Keep it only if `name` starts with `--zui-` (ignore non-design-system vars).
304
+ * 6. Advance `searchIndex` past this `var(` and loop.
305
+ *
306
+ * @param className - A Tailwind class string, e.g. a single variant's classes.
307
+ * @returns One entry per `--zui-*` reference, in source order. Duplicates are
308
+ * preserved here; deduping/pairing happens later in {@link classifyVariables}.
309
+ *
310
+ * @example
311
+ * parseRawVariables(
312
+ * "divide-[var(--zui-accordion-blue-divider,#2563eb)] " +
313
+ * "dark:divide-[var(--zui-accordion-blue-divider-dark,#3b82f6)]",
314
+ * );
315
+ * → [
316
+ * { name: "--zui-accordion-blue-divider", fallback: "#2563eb" },
317
+ * { name: "--zui-accordion-blue-divider-dark", fallback: "#3b82f6" },
318
+ * ]
319
+ *
320
+ * @example
321
+ * parseRawVariables("text-[color:var(--zui-x-fg,oklch(20.8%_0.04_265))]");
322
+ * → [{ name: "--zui-x-fg", fallback: "oklch(20.8% 0.04 265)" }]
323
+ * (note the underscores became spaces)
324
+ */
325
+ function parseRawVariables(className: string): RawVariable[] {
326
+ const variables: RawVariable[] = [];
327
+ let searchIndex = 0;
328
+
329
+ while (searchIndex < className.length) {
330
+ // 1. Find the next `var(` opening; bail out when there are none left.
331
+ const varIndex = className.indexOf("var(", searchIndex);
332
+
333
+ if (varIndex === -1) {
334
+ break;
335
+ }
336
+
337
+ // 2. Read the balanced body of this `var(...)`, tolerating nested parens.
338
+ const content = readBalancedExpression(className, varIndex + "var".length);
339
+ // 3. Split name vs. fallback at the first depth-0 comma.
340
+ const commaIndex = findTopLevelComma(content);
341
+ // 4. Extract the name and the (underscore-normalised) fallback.
342
+ const name =
343
+ commaIndex > -1 ? content.slice(0, commaIndex).trim() : content.trim();
344
+ const fallback =
345
+ commaIndex > -1
346
+ ? content
347
+ .slice(commaIndex + 1)
348
+ .trim()
349
+ .replace(/_/g, " ")
350
+ : "";
351
+
352
+ // 5. Keep only design-system variables.
353
+ if (name.startsWith("--zui-")) {
354
+ variables.push({ name: name as `--zui-${string}`, fallback });
355
+ }
356
+
357
+ // 6. Move past this `var(` and continue scanning.
358
+ searchIndex = varIndex + "var(".length;
359
+ }
360
+
361
+ return variables;
362
+ }
363
+
364
+ /**
365
+ * Turn a flat (possibly duplicated) list of raw variables into deduped
366
+ * {@link ZuiVariable}s annotated with theme + light/dark pairing.
367
+ *
368
+ * The library's token contract pairs a light variable with a `-dark` sibling
369
+ * inside the *same* class string (e.g. `--zui-x-bg` and `--zui-x-bg-dark`).
370
+ * This function detects those pairs so the docs/theme-editor can show "Light /
371
+ * Dark / Shared" badges and point each row at its counterpart.
372
+ *
373
+ * Step by step:
374
+ * 1. Dedupe by name into a Map, keeping the first sighting — but *upgrade* an
375
+ * empty fallback to a later non-empty one (different exports sometimes
376
+ * reference the same var with/without a fallback).
377
+ * 2. Build a Set of all surviving names so pair lookups are O(1).
378
+ * 3. For each variable, decide its base name: strip a trailing `-dark` if it is
379
+ * a dark token, otherwise the name is already the base.
380
+ * 4. Check whether the corresponding `${base}-dark` name exists in the set.
381
+ * 5. Assign a theme:
382
+ * - `dark` → the name ends in `-dark`.
383
+ * - `light` → not dark, but a `-dark` partner exists.
384
+ * - `shared` → not dark and no partner (a single theme-agnostic value).
385
+ * 6. Assign `pairName`: dark→its light base, light→its `-dark` partner,
386
+ * shared→`undefined`.
387
+ *
388
+ * @param raw - Output of {@link parseRawVariables} (order preserved, dupes ok).
389
+ * @returns Deduped variables with `theme` and optional `pairName`.
390
+ *
391
+ * @example
392
+ * classifyVariables([
393
+ * { name: "--zui-x-bg", fallback: "#fff" },
394
+ * { name: "--zui-x-bg-dark", fallback: "#000" },
395
+ * { name: "--zui-x-radius", fallback: "8px" },
396
+ * ]);
397
+ * → [
398
+ * { name: "--zui-x-bg", fallback: "#fff", theme: "light",
399
+ * pairName: "--zui-x-bg-dark" },
400
+ * { name: "--zui-x-bg-dark", fallback: "#000", theme: "dark",
401
+ * pairName: "--zui-x-bg" },
402
+ * { name: "--zui-x-radius", fallback: "8px", theme: "shared",
403
+ * pairName: undefined },
404
+ * ]
405
+ */
406
+ function classifyVariables(raw: RawVariable[]): ZuiVariable[] {
407
+ // 1. Dedupe by name; prefer a populated fallback over an empty one.
408
+ const byName = new Map<string, RawVariable>();
409
+
410
+ for (const variable of raw) {
411
+ const existing = byName.get(variable.name);
412
+
413
+ // Keep the first occurrence, but upgrade to a non-empty fallback.
414
+ if (!existing || (!existing.fallback && variable.fallback)) {
415
+ byName.set(variable.name, variable);
416
+ }
417
+ }
418
+
419
+ // 2. Index the names for fast pair lookups.
420
+ const names = new Set(byName.keys());
421
+
422
+ return [...byName.values()].map(({ name, fallback }) => {
423
+ // 3. Derive the light "base" name for this entry.
424
+ const isDark = name.endsWith("-dark");
425
+ const baseName = isDark
426
+ ? (name.replace(/-dark$/, "") as `--zui-${string}`)
427
+ : name;
428
+ // 4. Does the dark counterpart exist?
429
+ const darkName = `${baseName}-dark` as `--zui-${string}`;
430
+ const hasDarkPair = names.has(darkName);
431
+
432
+ // 5 + 6. Resolve theme and the paired variable name. A dark var only pairs
433
+ // back when its light base was actually parsed (dark-only refs stay
434
+ // unpaired rather than pointing at a non-existent variable).
435
+ const hasLightBase = names.has(baseName);
436
+
437
+ return {
438
+ name,
439
+ fallback,
440
+ theme: isDark ? "dark" : hasDarkPair ? "light" : "shared",
441
+ pairName: isDark
442
+ ? (names.has(baseName) ? baseName : undefined)
443
+ : (hasDarkPair ? darkName : undefined),
444
+ } satisfies ZuiVariable;
445
+ });
446
+ }
447
+
448
+ // --- token-string collection ---------------------------------------------
449
+
450
+ const tokenEntries = Object.entries(tokens as Record<string, unknown>) as Array<
451
+ [string, unknown]
452
+ >;
453
+
454
+ function flattenClassStrings(value: unknown): string[] {
455
+ if (typeof value === "string") {
456
+ return [value];
457
+ }
458
+
459
+ if (Array.isArray(value)) {
460
+ return value.flatMap(flattenClassStrings);
461
+ }
462
+
463
+ if (value && typeof value === "object") {
464
+ return Object.values(value).flatMap(flattenClassStrings);
465
+ }
466
+
467
+ return [];
468
+ }
469
+
470
+ /** Variant-map exports: `{ key: className }` objects of plain strings. */
471
+ function isVariantMap(value: unknown): value is Record<string, string> {
472
+ return (
473
+ !!value &&
474
+ typeof value === "object" &&
475
+ !Array.isArray(value) &&
476
+ Object.values(value).every((entry) => typeof entry === "string")
477
+ );
478
+ }
479
+
480
+ /**
481
+ * Decode a design-system export identifier into the `{ group, slot }` it
482
+ * describes, or `undefined` if the name does not belong to this component.
483
+ *
484
+ * Token files name their exports by convention:
485
+ * `zui<ExportPrefix><Slot?><Group>` — e.g. `zuiAccordionBase`,
486
+ * `zuiAccordionAppearances`, `zuiAccordionItemAppearances`. This function
487
+ * reverses that convention: it strips the `zui<ExportPrefix>` stem, then reads
488
+ * the trailing group word (`Base`/`Appearances`/`Sizes`/…) and treats whatever
489
+ * is left in the middle as the slot ("root" when empty).
490
+ *
491
+ * Step by step:
492
+ * 1. Build the stem `zui<ExportPrefix>` and bail unless `name` starts with it.
493
+ * 2. Slice off the stem to get the `remainder` (the slot + group part).
494
+ * 3. Boundary guard: if the remainder is non-empty it must start with an
495
+ * uppercase letter, so prefix "Tab" cannot claim "zuiTabsBase"
496
+ * (remainder "sBase" starts lowercase → rejected).
497
+ * 4. Exact `"Base"` (or empty remainder) ⇒ the component's base group at the
498
+ * root slot.
499
+ * 5. A remainder *ending* in `Base` (e.g. "ItemBase") ⇒ base group, with the
500
+ * leading text ("Item") kebab-cased into the slot.
501
+ * 6. Otherwise match the remainder's trailing word against {@link groupSuffixes}
502
+ * (Appearances→appearance, Sizes→size, …); the leading text becomes the slot.
503
+ * 7. No recognised suffix ⇒ `undefined` (not a classifiable export).
504
+ *
505
+ * @param exportPrefix - The component's PascalCase export prefix, e.g. "Accordion".
506
+ * @param name - A token export identifier, e.g. "zuiAccordionItemAppearances".
507
+ * @returns `{ group, slot }` describing the export, or `undefined`.
508
+ *
509
+ * @example
510
+ * classifyExportName("Accordion", "zuiAccordionBase");
511
+ * → { group: "base", slot: "root" }
512
+ *
513
+ * @example
514
+ * classifyExportName("Accordion", "zuiAccordionItemAppearances");
515
+ * → { group: "appearance", slot: "item" }
516
+ *
517
+ * @example
518
+ * classifyExportName("Tab", "zuiTabsBase");
519
+ * → undefined (remainder "sBase" fails the uppercase boundary guard)
520
+ */
521
+ function classifyExportName(exportPrefix: string, name: string) {
522
+ // 1. Only consider exports under this component's `zui<ExportPrefix>` stem.
523
+ const stem = `zui${exportPrefix}`;
524
+
525
+ if (!name.startsWith(stem)) {
526
+ return undefined;
527
+ }
528
+
529
+ // 2. The slot + group portion that follows the stem.
530
+ const remainder = name.slice(stem.length);
531
+
532
+ // 3. Boundary guard: avoid e.g. exportPrefix "Tab" claiming "zuiTabsBase".
533
+ if (remainder.length > 0 && !/^[A-Z]/.test(remainder)) {
534
+ return undefined;
535
+ }
536
+
537
+ // 4. Bare base export (`zui<Prefix>Base`, or the prefix alone) → root slot.
538
+ if (remainder === "Base" || remainder === "") {
539
+ const slotPart = remainder === "Base" ? "" : remainder;
540
+ return { group: "base", slot: slotPart ? kebabCase(slotPart) : "root" };
541
+ }
542
+
543
+ // 5. Slot-scoped base export (`zui<Prefix><Slot>Base`) → that slot's base.
544
+ if (remainder.endsWith("Base")) {
545
+ const slotPart = remainder.slice(0, -"Base".length);
546
+ return { group: "base", slot: slotPart ? kebabCase(slotPart) : "root" };
547
+ }
548
+
549
+ // 6. Variant export: match the trailing group word; leading text = slot.
550
+ for (const [suffix, group] of groupSuffixes) {
551
+ if (remainder.endsWith(suffix)) {
552
+ const slotPart = remainder.slice(0, -suffix.length);
553
+ return { group, slot: slotPart ? kebabCase(slotPart) : "root" };
554
+ }
555
+ }
556
+
557
+ // 7. Recognised stem but no recognised group word — not classifiable.
558
+ return undefined;
559
+ }
560
+
561
+ type GroupRecord = {
562
+ group: string;
563
+ slot: string;
564
+ /** key → className. Base groups use a single "base" key. */
565
+ entries: Record<string, string>;
566
+ };
567
+
568
+ // --- per-component models (built once, lazily) ----------------------------
569
+
570
+ type ComponentModel = {
571
+ spec: ComponentSpec;
572
+ groups: GroupRecord[];
573
+ variables: ZuiVariable[];
574
+ };
575
+
576
+ const models = new Map<string, ComponentModel>();
577
+ let initialized = false;
578
+
579
+ /**
580
+ * Build every component model in a single pass over the design-system exports.
581
+ *
582
+ * The earlier design rebuilt one component at a time, and each rebuild walked
583
+ * *all* token exports running the (relatively heavy) {@link parseRawVariables}
584
+ * over them — so listing 40+ components re-parsed the same strings 40+ times
585
+ * (`O(components × exports)`). This pass parses each export's class strings
586
+ * exactly once and fans the result out to whichever components claim it, which
587
+ * is `O(exports)` for the expensive parsing.
588
+ *
589
+ * Two things are derived per export, keyed differently:
590
+ * - **Variables** — collected from the exports whose identifier matches one of
591
+ * the component's {@link ComponentSpec.variableStems}. Scoping to the
592
+ * component's *own* exports (rather than a shared `--zui-*` value prefix)
593
+ * keeps ContextMenu from absorbing Dropdown's trigger tokens, and lets
594
+ * SearchBar borrow the Input recipe.
595
+ * - **Groups** — classified from the export *identifier* via
596
+ * {@link classifyExportName}, keyed off the primary `exportPrefix`.
597
+ *
598
+ * Step by step:
599
+ * 1. Seed an accumulator (groups + raw variables) for every spec.
600
+ * 2. For each export, flatten its class strings and parse their `--zui-*`
601
+ * variables a single time.
602
+ * 3. For each spec: if the export sits under one of its variable stems, add the
603
+ * parsed variables; independently, classify the identifier into a group.
604
+ * 4. A `base` classification ⇒ a single-entry group of the merged class string;
605
+ * a variant-map classification ⇒ a group keyed by variant name.
606
+ * 5. Freeze each accumulator into a model (variables deduped + light/dark
607
+ * paired via {@link classifyVariables}) and cache it.
608
+ */
609
+ function initializeModels(): void {
610
+ if (initialized) {
611
+ return;
612
+ }
613
+ initialized = true;
614
+
615
+ const accumulators = new Map<
616
+ string,
617
+ { groups: GroupRecord[]; rawVariables: RawVariable[] }
618
+ >();
619
+
620
+ // 1. One accumulator per component.
621
+ for (const spec of specs) {
622
+ accumulators.set(spec.slug, { groups: [], rawVariables: [] });
623
+ }
624
+
625
+ // 2. Parse each export's class strings exactly once.
626
+ for (const [name, value] of tokenEntries) {
627
+ // Shared recipes are already folded into their owner's export — skip the
628
+ // standalone copy so its prefix doesn't mis-attribute it (see above).
629
+ if (sharedRecipeExports.has(name)) {
630
+ continue;
631
+ }
632
+
633
+ const classNames = flattenClassStrings(value);
634
+ const parsedVariables = classNames.flatMap(parseRawVariables);
635
+
636
+ // 3. Distribute the parsed result to whichever components claim it.
637
+ for (const spec of specs) {
638
+ const accumulator = accumulators.get(spec.slug)!;
639
+
640
+ // Variables: any export under one of the component's stems contributes.
641
+ if (spec.variableStems.some((stem) => nameMatchesStem(name, stem))) {
642
+ accumulator.rawVariables.push(...parsedVariables);
643
+ }
644
+
645
+ // Groups: classify the identifier against the primary export prefix.
646
+ const classification = classifyExportName(spec.exportPrefix, name);
647
+
648
+ if (!classification) {
649
+ continue;
650
+ }
651
+
652
+ // 4. Base export → one merged-string group; variant map → keyed group.
653
+ if (classification.group === "base") {
654
+ accumulator.groups.push({
655
+ group: "base",
656
+ slot: classification.slot,
657
+ entries: { base: classNames.join(" ") },
658
+ });
659
+ } else if (isVariantMap(value)) {
660
+ accumulator.groups.push({
661
+ group: classification.group,
662
+ slot: classification.slot,
663
+ entries: { ...value },
664
+ });
665
+ }
666
+ }
667
+ }
668
+
669
+ // 5. Freeze each accumulator into a cached model.
670
+ for (const spec of specs) {
671
+ const accumulator = accumulators.get(spec.slug)!;
672
+ models.set(spec.slug, {
673
+ spec,
674
+ groups: accumulator.groups,
675
+ variables: classifyVariables(accumulator.rawVariables),
676
+ });
677
+ }
678
+ }
679
+
680
+ function getModel(slug: string): ComponentModel | undefined {
681
+ initializeModels();
682
+ return models.get(slug);
683
+ }
684
+
685
+ // --- public handles -------------------------------------------------------
686
+
687
+ function createVariantHandle(group: GroupRecord, key: string): VariantHandle {
688
+ const className = group.entries[key] ?? "";
689
+
690
+ return {
691
+ group: group.group,
692
+ key,
693
+ slot: group.slot,
694
+ className,
695
+ variables: () => classifyVariables(parseRawVariables(className)),
696
+ };
697
+ }
698
+
699
+ /**
700
+ * Wrap a built {@link ComponentModel} in the public {@link ComponentHandle} — the
701
+ * ergonomic, lazy query surface returned by `DesignSystem.getComponent(...)`.
702
+ * The handle holds no data of its own; every method is a thin lookup over the
703
+ * model's `groups`/`variables`, so handles are cheap to recreate.
704
+ *
705
+ * Step by step:
706
+ * 1. Destructure the model into `spec`, `groups`, and `variables`.
707
+ * 2. Define `findGroup(group, slot)` — locate the one group record matching both
708
+ * a group name ("appearance"/"size"/"base") and a slot ("root"/"item"/…).
709
+ * 3. Define `keysFor(group, slot)` — the variant keys of that record, or `[]`.
710
+ * 4. Return the handle:
711
+ * - `slug`/`title` come straight from the spec.
712
+ * - `slots()` → the unique slot names across all groups.
713
+ * - `groups()` → the group names available on the root slot.
714
+ * - `appearances(slot)`/`sizes(slot)` → variant keys (default slot "root").
715
+ * - `getVariant(group, key, opts)` → a {@link VariantHandle}, or `undefined`
716
+ * when the group/slot/key triple doesn't exist.
717
+ * - `variants(group, opts)` → handles for every key in that group ([] if none).
718
+ * - `variables()` → the component's deduped, theme-paired variables.
719
+ *
720
+ * @param model - The component's built model (see {@link initializeModels}).
721
+ * @returns A {@link ComponentHandle} exposing the lazy query methods.
722
+ *
723
+ * @example
724
+ * const accordion = DesignSystem.getComponent("accordion")!;
725
+ * accordion.slug; // → "accordion"
726
+ * accordion.slots(); // → ["root", "item", "trigger", "content"]
727
+ * accordion.appearances(); // → ["default", "blue", "outline"]
728
+ * accordion.appearances("item"); // → ["blue", …]
729
+ * accordion.getVariant("appearance", "blue");
730
+ * → VariantHandle { group: "appearance", key: "blue", slot: "root", className, variables() }
731
+ * accordion.getVariant("appearance", "nope"); // → undefined
732
+ */
733
+ function createComponentHandle(model: ComponentModel): ComponentHandle {
734
+ // 1. Pull the model apart; the methods below close over these.
735
+ const { spec, groups, variables } = model;
736
+
737
+ // 2. Find the single group record for a (group, slot) pair.
738
+ const findGroup = (group: string, slot: string) =>
739
+ groups.find((entry) => entry.group === group && entry.slot === slot);
740
+
741
+ // 3. The variant keys of that record (empty when the record is missing).
742
+ const keysFor = (group: string, slot: string) => {
743
+ const record = findGroup(group, slot);
744
+ return record ? Object.keys(record.entries) : [];
745
+ };
746
+
747
+ // 4. Assemble the lazy query surface.
748
+ return {
749
+ slug: spec.slug,
750
+ title: spec.title,
751
+ slots: () => [...new Set(groups.map((entry) => entry.slot))],
752
+ groups: () =>
753
+ groups
754
+ .filter((entry) => entry.slot === "root")
755
+ .map((entry) => entry.group),
756
+ appearances: (slot = "root") => keysFor("appearance", slot),
757
+ sizes: (slot = "root") => keysFor("size", slot),
758
+ getVariant: (group, key, options) => {
759
+ const record = findGroup(group, options?.slot ?? "root");
760
+
761
+ if (!record || !(key in record.entries)) {
762
+ return undefined;
763
+ }
764
+
765
+ return createVariantHandle(record, key);
766
+ },
767
+ variants: (group, options) => {
768
+ const record = findGroup(group, options?.slot ?? "root");
769
+
770
+ if (!record) {
771
+ return [];
772
+ }
773
+
774
+ return Object.keys(record.entries).map((key) =>
775
+ createVariantHandle(record, key),
776
+ );
777
+ },
778
+ variables: () => variables,
779
+ };
780
+ }
781
+
782
+ export const DesignSystem = {
783
+ /** All component slugs known to the design system. */
784
+ components(): string[] {
785
+ return specs.map((spec) => spec.slug);
786
+ },
787
+ /** Resolve a single component, or `undefined` if the slug is unknown. */
788
+ getComponent(slug: string): ComponentHandle | undefined {
789
+ const model = getModel(slug);
790
+ return model ? createComponentHandle(model) : undefined;
791
+ },
792
+ /** Every component handle, in registry order. */
793
+ listComponents(): ComponentHandle[] {
794
+ return specs
795
+ .map((spec) => getModel(spec.slug))
796
+ .filter((model): model is ComponentModel => Boolean(model))
797
+ .map(createComponentHandle);
798
+ },
799
+ /** Parse `--zui-*` variables out of an arbitrary class string. */
800
+ parse(className: string): ZuiVariable[] {
801
+ return classifyVariables(parseRawVariables(className));
802
+ },
803
+ };
804
+
805
+ export type DesignSystemFacade = typeof DesignSystem;