@zentauri-ui/zentauri-components 1.9.2 → 2.1.0

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 (886) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +36 -8
  3. package/cli/cli.integration.test.ts +52 -0
  4. package/cli/index.mjs +288 -0
  5. package/cli/registry.json +14 -0
  6. package/dist/chunk-22FJROCI.js +70 -0
  7. package/dist/chunk-22FJROCI.js.map +1 -0
  8. package/dist/chunk-2NQKFH26.mjs +64 -0
  9. package/dist/chunk-2NQKFH26.mjs.map +1 -0
  10. package/dist/chunk-2VPXQ2LA.mjs +57 -0
  11. package/dist/chunk-2VPXQ2LA.mjs.map +1 -0
  12. package/dist/chunk-3453DQNL.js +63 -0
  13. package/dist/chunk-3453DQNL.js.map +1 -0
  14. package/dist/chunk-34LHS26H.mjs +240 -0
  15. package/dist/chunk-34LHS26H.mjs.map +1 -0
  16. package/dist/chunk-3CYJQ6KF.js +121 -0
  17. package/dist/chunk-3CYJQ6KF.js.map +1 -0
  18. package/dist/chunk-3EJCQXGV.js +169 -0
  19. package/dist/chunk-3EJCQXGV.js.map +1 -0
  20. package/dist/chunk-3VW4HMJT.mjs +58 -0
  21. package/dist/chunk-3VW4HMJT.mjs.map +1 -0
  22. package/dist/chunk-42ZSQNDF.mjs +64 -0
  23. package/dist/chunk-42ZSQNDF.mjs.map +1 -0
  24. package/dist/{chunk-V4FFKIX3.js → chunk-4LCH4OJ5.js} +10 -10
  25. package/dist/{chunk-V4FFKIX3.js.map → chunk-4LCH4OJ5.js.map} +1 -1
  26. package/dist/chunk-4TX7EQ5Y.js +19 -0
  27. package/dist/{chunk-AQHY4S33.js.map → chunk-4TX7EQ5Y.js.map} +1 -1
  28. package/dist/chunk-4WG3VNVL.mjs +69 -0
  29. package/dist/chunk-4WG3VNVL.mjs.map +1 -0
  30. package/dist/chunk-4ZBMDWWY.mjs +107 -0
  31. package/dist/chunk-4ZBMDWWY.mjs.map +1 -0
  32. package/dist/chunk-523VQLCW.mjs +62 -0
  33. package/dist/chunk-523VQLCW.mjs.map +1 -0
  34. package/dist/chunk-5AOVTY2X.mjs +68 -0
  35. package/dist/chunk-5AOVTY2X.mjs.map +1 -0
  36. package/dist/{chunk-GVGKISKD.js → chunk-5QLPZYWO.js} +9 -9
  37. package/dist/{chunk-GVGKISKD.js.map → chunk-5QLPZYWO.js.map} +1 -1
  38. package/dist/{chunk-VUIWYURS.js → chunk-6XVSACCS.js} +15 -15
  39. package/dist/{chunk-VUIWYURS.js.map → chunk-6XVSACCS.js.map} +1 -1
  40. package/dist/{chunk-7GIL24GK.js → chunk-7ARZ3MK2.js} +12 -12
  41. package/dist/{chunk-7GIL24GK.js.map → chunk-7ARZ3MK2.js.map} +1 -1
  42. package/dist/chunk-7DVECOO7.js +78 -0
  43. package/dist/chunk-7DVECOO7.js.map +1 -0
  44. package/dist/{chunk-O23PJPGM.mjs → chunk-7HQFFQSQ.mjs} +3 -3
  45. package/dist/{chunk-O23PJPGM.mjs.map → chunk-7HQFFQSQ.mjs.map} +1 -1
  46. package/dist/{chunk-2PWT2MB5.mjs → chunk-7KCX2FX2.mjs} +3 -3
  47. package/dist/{chunk-2PWT2MB5.mjs.map → chunk-7KCX2FX2.mjs.map} +1 -1
  48. package/dist/{chunk-ZCTSXNAE.mjs → chunk-7WQ5TWUO.mjs} +3 -3
  49. package/dist/{chunk-ZCTSXNAE.mjs.map → chunk-7WQ5TWUO.mjs.map} +1 -1
  50. package/dist/chunk-A7MU6SFI.js +254 -0
  51. package/dist/chunk-A7MU6SFI.js.map +1 -0
  52. package/dist/chunk-AOVZY2A3.js +80 -0
  53. package/dist/chunk-AOVZY2A3.js.map +1 -0
  54. package/dist/{chunk-D4B62J5C.js → chunk-APBQNYFN.js} +11 -11
  55. package/dist/{chunk-D4B62J5C.js.map → chunk-APBQNYFN.js.map} +1 -1
  56. package/dist/chunk-AZ26NZJV.mjs +66 -0
  57. package/dist/chunk-AZ26NZJV.mjs.map +1 -0
  58. package/dist/chunk-BBM4BKSN.js +65 -0
  59. package/dist/chunk-BBM4BKSN.js.map +1 -0
  60. package/dist/{chunk-I4TGI6U3.mjs → chunk-BGIWVTAU.mjs} +3 -3
  61. package/dist/{chunk-I4TGI6U3.mjs.map → chunk-BGIWVTAU.mjs.map} +1 -1
  62. package/dist/{chunk-OPUO55TO.mjs → chunk-BJRS5RXR.mjs} +3 -3
  63. package/dist/{chunk-OPUO55TO.mjs.map → chunk-BJRS5RXR.mjs.map} +1 -1
  64. package/dist/{chunk-RYJ5WEE3.js → chunk-BUBIH4LS.js} +9 -9
  65. package/dist/{chunk-RYJ5WEE3.js.map → chunk-BUBIH4LS.js.map} +1 -1
  66. package/dist/chunk-BUEI4RMR.mjs +82 -0
  67. package/dist/chunk-BUEI4RMR.mjs.map +1 -0
  68. package/dist/chunk-BVTYDGLM.mjs +68 -0
  69. package/dist/chunk-BVTYDGLM.mjs.map +1 -0
  70. package/dist/{chunk-7JBQ3ZJN.mjs → chunk-BYXFSXNG.mjs} +3 -3
  71. package/dist/{chunk-7JBQ3ZJN.mjs.map → chunk-BYXFSXNG.mjs.map} +1 -1
  72. package/dist/chunk-BZTAA3MK.js +62 -0
  73. package/dist/chunk-BZTAA3MK.js.map +1 -0
  74. package/dist/chunk-C6K2SWHC.mjs +74 -0
  75. package/dist/chunk-C6K2SWHC.mjs.map +1 -0
  76. package/dist/chunk-CJCOURVM.js +79 -0
  77. package/dist/chunk-CJCOURVM.js.map +1 -0
  78. package/dist/chunk-COVTMJIQ.mjs +171 -0
  79. package/dist/chunk-COVTMJIQ.mjs.map +1 -0
  80. package/dist/{chunk-ZY6O6Z2I.mjs → chunk-CQ2S43AD.mjs} +3 -3
  81. package/dist/{chunk-ZY6O6Z2I.mjs.map → chunk-CQ2S43AD.mjs.map} +1 -1
  82. package/dist/chunk-D7ATXPVI.js +70 -0
  83. package/dist/chunk-D7ATXPVI.js.map +1 -0
  84. package/dist/chunk-DOA4ESKS.mjs +58 -0
  85. package/dist/chunk-DOA4ESKS.mjs.map +1 -0
  86. package/dist/{chunk-QIUVXTLE.mjs → chunk-DSGPPYZ3.mjs} +3 -3
  87. package/dist/{chunk-QIUVXTLE.mjs.map → chunk-DSGPPYZ3.mjs.map} +1 -1
  88. package/dist/chunk-DYSXCJGL.js +47 -0
  89. package/dist/chunk-DYSXCJGL.js.map +1 -0
  90. package/dist/{chunk-P2DQP4J4.js → chunk-EDJ6TVL3.js} +117 -12
  91. package/dist/chunk-EDJ6TVL3.js.map +1 -0
  92. package/dist/chunk-EE53BIXR.mjs +112 -0
  93. package/dist/chunk-EE53BIXR.mjs.map +1 -0
  94. package/dist/chunk-EJ3UMMCS.mjs +65 -0
  95. package/dist/chunk-EJ3UMMCS.mjs.map +1 -0
  96. package/dist/chunk-ENYZGL4R.mjs +94 -0
  97. package/dist/chunk-ENYZGL4R.mjs.map +1 -0
  98. package/dist/{chunk-BZZVO4GL.mjs → chunk-F6W3GJJ2.mjs} +108 -3
  99. package/dist/chunk-F6W3GJJ2.mjs.map +1 -0
  100. package/dist/chunk-FBUY6K6S.js +69 -0
  101. package/dist/chunk-FBUY6K6S.js.map +1 -0
  102. package/dist/{chunk-QKZR2UTL.mjs → chunk-FEMXNI6E.mjs} +3 -3
  103. package/dist/{chunk-QKZR2UTL.mjs.map → chunk-FEMXNI6E.mjs.map} +1 -1
  104. package/dist/chunk-FX5KR2GP.mjs +81 -0
  105. package/dist/chunk-FX5KR2GP.mjs.map +1 -0
  106. package/dist/{chunk-3HSFL4WA.mjs → chunk-GENYOZN4.mjs} +3 -3
  107. package/dist/{chunk-3HSFL4WA.mjs.map → chunk-GENYOZN4.mjs.map} +1 -1
  108. package/dist/{chunk-C7F6OCGK.mjs → chunk-GFCT24TH.mjs} +3 -3
  109. package/dist/{chunk-C7F6OCGK.mjs.map → chunk-GFCT24TH.mjs.map} +1 -1
  110. package/dist/{chunk-IPUQBMAB.mjs → chunk-GH2GZFRD.mjs} +3 -3
  111. package/dist/{chunk-IPUQBMAB.mjs.map → chunk-GH2GZFRD.mjs.map} +1 -1
  112. package/dist/{chunk-NAHHFB2M.js → chunk-GICW4DH5.js} +9 -9
  113. package/dist/{chunk-NAHHFB2M.js.map → chunk-GICW4DH5.js.map} +1 -1
  114. package/dist/chunk-HFQJRAG7.mjs +116 -0
  115. package/dist/chunk-HFQJRAG7.mjs.map +1 -0
  116. package/dist/chunk-HNRCPZCK.js +107 -0
  117. package/dist/chunk-HNRCPZCK.js.map +1 -0
  118. package/dist/chunk-HOOZYA4N.js +92 -0
  119. package/dist/chunk-HOOZYA4N.js.map +1 -0
  120. package/dist/chunk-IEHY6KNM.js +122 -0
  121. package/dist/chunk-IEHY6KNM.js.map +1 -0
  122. package/dist/{chunk-BDBL4XXI.mjs → chunk-ILCT3P7D.mjs} +3 -3
  123. package/dist/{chunk-BDBL4XXI.mjs.map → chunk-ILCT3P7D.mjs.map} +1 -1
  124. package/dist/chunk-IR5SJ7AQ.js +87 -0
  125. package/dist/chunk-IR5SJ7AQ.js.map +1 -0
  126. package/dist/chunk-J2SUGU3X.js +63 -0
  127. package/dist/chunk-J2SUGU3X.js.map +1 -0
  128. package/dist/{chunk-4LVEWKXF.mjs → chunk-J7IATHJY.mjs} +3 -3
  129. package/dist/{chunk-4LVEWKXF.mjs.map → chunk-J7IATHJY.mjs.map} +1 -1
  130. package/dist/{chunk-EKBSSKJQ.js → chunk-JD7TCCMW.js} +10 -10
  131. package/dist/{chunk-EKBSSKJQ.js.map → chunk-JD7TCCMW.js.map} +1 -1
  132. package/dist/chunk-JEDMUBYI.mjs +75 -0
  133. package/dist/chunk-JEDMUBYI.mjs.map +1 -0
  134. package/dist/{chunk-L4PDJ6IB.mjs → chunk-JEZUMCJ6.mjs} +3 -3
  135. package/dist/{chunk-L4PDJ6IB.mjs.map → chunk-JEZUMCJ6.mjs.map} +1 -1
  136. package/dist/{chunk-KEGOUZL5.js → chunk-JGPG2D2Y.js} +7 -7
  137. package/dist/{chunk-KEGOUZL5.js.map → chunk-JGPG2D2Y.js.map} +1 -1
  138. package/dist/chunk-JOLSS7UY.mjs +61 -0
  139. package/dist/chunk-JOLSS7UY.mjs.map +1 -0
  140. package/dist/{chunk-ATMCT3A3.mjs → chunk-K2H6LIPQ.mjs} +3 -3
  141. package/dist/{chunk-ATMCT3A3.mjs.map → chunk-K2H6LIPQ.mjs.map} +1 -1
  142. package/dist/chunk-K7PR3XXT.mjs +128 -0
  143. package/dist/chunk-K7PR3XXT.mjs.map +1 -0
  144. package/dist/{chunk-LQPKZ5ZD.js → chunk-KCXTYTOY.js} +6 -6
  145. package/dist/{chunk-LQPKZ5ZD.js.map → chunk-KCXTYTOY.js.map} +1 -1
  146. package/dist/chunk-KJMW7S5X.js +78 -0
  147. package/dist/chunk-KJMW7S5X.js.map +1 -0
  148. package/dist/chunk-KOIXQXZB.js +49 -0
  149. package/dist/{chunk-NVTV3EQB.js.map → chunk-KOIXQXZB.js.map} +1 -1
  150. package/dist/{chunk-PKXDRTC7.js → chunk-KQZWTTY2.js} +13 -13
  151. package/dist/{chunk-PKXDRTC7.js.map → chunk-KQZWTTY2.js.map} +1 -1
  152. package/dist/chunk-KWBGLH7G.js +155 -0
  153. package/dist/chunk-KWBGLH7G.js.map +1 -0
  154. package/dist/chunk-L7W4NRK6.js +78 -0
  155. package/dist/chunk-L7W4NRK6.js.map +1 -0
  156. package/dist/chunk-LRYKMXKI.mjs +159 -0
  157. package/dist/chunk-LRYKMXKI.mjs.map +1 -0
  158. package/dist/chunk-MBEQ4GQ7.mjs +44 -0
  159. package/dist/chunk-MBEQ4GQ7.mjs.map +1 -0
  160. package/dist/{chunk-PAJYNQR3.mjs → chunk-MI3CVVNR.mjs} +3 -3
  161. package/dist/{chunk-PAJYNQR3.mjs.map → chunk-MI3CVVNR.mjs.map} +1 -1
  162. package/dist/{chunk-4FU6FDUT.mjs → chunk-MXYQOQJ4.mjs} +3 -3
  163. package/dist/{chunk-4FU6FDUT.mjs.map → chunk-MXYQOQJ4.mjs.map} +1 -1
  164. package/dist/chunk-N3FNN47Q.mjs +64 -0
  165. package/dist/chunk-N3FNN47Q.mjs.map +1 -0
  166. package/dist/chunk-NEFDIJ5N.js +672 -0
  167. package/dist/chunk-NEFDIJ5N.js.map +1 -0
  168. package/dist/chunk-NFUOJMNI.js +61 -0
  169. package/dist/chunk-NFUOJMNI.js.map +1 -0
  170. package/dist/chunk-NGZTAVQO.mjs +79 -0
  171. package/dist/chunk-NGZTAVQO.mjs.map +1 -0
  172. package/dist/chunk-NNGL2AFQ.js +181 -0
  173. package/dist/chunk-NNGL2AFQ.js.map +1 -0
  174. package/dist/{chunk-Q2NE2UAO.mjs → chunk-NXVSGMLI.mjs} +3 -3
  175. package/dist/{chunk-Q2NE2UAO.mjs.map → chunk-NXVSGMLI.mjs.map} +1 -1
  176. package/dist/chunk-NYO3W5GY.js +61 -0
  177. package/dist/chunk-NYO3W5GY.js.map +1 -0
  178. package/dist/{chunk-ZFNVFMWG.mjs → chunk-O22T5X4G.mjs} +3 -3
  179. package/dist/{chunk-ZFNVFMWG.mjs.map → chunk-O22T5X4G.mjs.map} +1 -1
  180. package/dist/{chunk-Y73U7C4T.js → chunk-OCKSRD6O.js} +16 -16
  181. package/dist/{chunk-Y73U7C4T.js.map → chunk-OCKSRD6O.js.map} +1 -1
  182. package/dist/{chunk-27PO2FY2.mjs → chunk-OO4IPM4F.mjs} +3 -3
  183. package/dist/{chunk-27PO2FY2.mjs.map → chunk-OO4IPM4F.mjs.map} +1 -1
  184. package/dist/chunk-PP3L6M62.js +126 -0
  185. package/dist/chunk-PP3L6M62.js.map +1 -0
  186. package/dist/{chunk-63YMCBGJ.js → chunk-PYNQZP4X.js} +12 -12
  187. package/dist/{chunk-63YMCBGJ.js.map → chunk-PYNQZP4X.js.map} +1 -1
  188. package/dist/{chunk-QDHARZDN.js → chunk-QGTLXKKB.js} +12 -12
  189. package/dist/{chunk-QDHARZDN.js.map → chunk-QGTLXKKB.js.map} +1 -1
  190. package/dist/chunk-QNRJT7R4.js +144 -0
  191. package/dist/chunk-QNRJT7R4.js.map +1 -0
  192. package/dist/chunk-QX6PPTWL.mjs +125 -0
  193. package/dist/chunk-QX6PPTWL.mjs.map +1 -0
  194. package/dist/{chunk-OPACTZGV.js → chunk-RRUVHDN6.js} +11 -11
  195. package/dist/{chunk-OPACTZGV.js.map → chunk-RRUVHDN6.js.map} +1 -1
  196. package/dist/{chunk-IQ6QVIZ3.mjs → chunk-RSMFWP5S.mjs} +3 -3
  197. package/dist/{chunk-IQ6QVIZ3.mjs.map → chunk-RSMFWP5S.mjs.map} +1 -1
  198. package/dist/chunk-SCOIRBML.js +705 -0
  199. package/dist/{chunk-WBRTXAKP.js.map → chunk-SCOIRBML.js.map} +1 -1
  200. package/dist/chunk-SCWQSQBJ.mjs +113 -0
  201. package/dist/chunk-SCWQSQBJ.mjs.map +1 -0
  202. package/dist/{chunk-LLNK24MM.js → chunk-SK24YZIC.js} +18 -18
  203. package/dist/{chunk-LLNK24MM.js.map → chunk-SK24YZIC.js.map} +1 -1
  204. package/dist/chunk-SRJCGSNX.js +74 -0
  205. package/dist/chunk-SRJCGSNX.js.map +1 -0
  206. package/dist/chunk-SRSRY5K2.js +71 -0
  207. package/dist/chunk-SRSRY5K2.js.map +1 -0
  208. package/dist/chunk-SS3T3BUL.mjs +70 -0
  209. package/dist/chunk-SS3T3BUL.mjs.map +1 -0
  210. package/dist/{chunk-L6PSW7JE.mjs → chunk-SUTFW53Y.mjs} +3 -3
  211. package/dist/{chunk-L6PSW7JE.mjs.map → chunk-SUTFW53Y.mjs.map} +1 -1
  212. package/dist/chunk-T4ZLTKV2.mjs +112 -0
  213. package/dist/chunk-T4ZLTKV2.mjs.map +1 -0
  214. package/dist/chunk-TCEGQIGW.mjs +653 -0
  215. package/dist/chunk-TCEGQIGW.mjs.map +1 -0
  216. package/dist/{chunk-MUKI3OHH.js → chunk-TDVHPNYI.js} +14 -14
  217. package/dist/{chunk-MUKI3OHH.js.map → chunk-TDVHPNYI.js.map} +1 -1
  218. package/dist/chunk-TKAOHMVA.mjs +120 -0
  219. package/dist/chunk-TKAOHMVA.mjs.map +1 -0
  220. package/dist/chunk-TT33BIIT.js +71 -0
  221. package/dist/chunk-TT33BIIT.js.map +1 -0
  222. package/dist/chunk-U64ISRUX.mjs +73 -0
  223. package/dist/chunk-U64ISRUX.mjs.map +1 -0
  224. package/dist/{chunk-O6R6OQXI.mjs → chunk-UFDJ5NIY.mjs} +3 -3
  225. package/dist/{chunk-O6R6OQXI.mjs.map → chunk-UFDJ5NIY.mjs.map} +1 -1
  226. package/dist/chunk-UG3GF2BD.js +120 -0
  227. package/dist/chunk-UG3GF2BD.js.map +1 -0
  228. package/dist/chunk-UJXFD4SK.js +65 -0
  229. package/dist/chunk-UJXFD4SK.js.map +1 -0
  230. package/dist/chunk-USLNTKVQ.js +114 -0
  231. package/dist/chunk-USLNTKVQ.js.map +1 -0
  232. package/dist/chunk-UT6QG35L.js +68 -0
  233. package/dist/chunk-UT6QG35L.js.map +1 -0
  234. package/dist/{chunk-37YQUTKG.js → chunk-VKEDTQY6.js} +8 -8
  235. package/dist/{chunk-37YQUTKG.js.map → chunk-VKEDTQY6.js.map} +1 -1
  236. package/dist/{chunk-I5TREZO5.js → chunk-VSD4KDZT.js} +10 -10
  237. package/dist/{chunk-I5TREZO5.js.map → chunk-VSD4KDZT.js.map} +1 -1
  238. package/dist/chunk-WGN2CBG6.js +82 -0
  239. package/dist/chunk-WGN2CBG6.js.map +1 -0
  240. package/dist/chunk-X7HK6RTF.js +83 -0
  241. package/dist/chunk-X7HK6RTF.js.map +1 -0
  242. package/dist/{chunk-34OSFCSH.js → chunk-XF3NHZZ3.js} +7 -7
  243. package/dist/{chunk-34OSFCSH.js.map → chunk-XF3NHZZ3.js.map} +1 -1
  244. package/dist/chunk-XUW42JAP.js +69 -0
  245. package/dist/chunk-XUW42JAP.js.map +1 -0
  246. package/dist/{chunk-EIX26RKN.js → chunk-XXGMFT6O.js} +9 -9
  247. package/dist/{chunk-EIX26RKN.js.map → chunk-XXGMFT6O.js.map} +1 -1
  248. package/dist/chunk-Y5JAQEBF.js +134 -0
  249. package/dist/chunk-Y5JAQEBF.js.map +1 -0
  250. package/dist/chunk-Y7BU5RC4.js +95 -0
  251. package/dist/chunk-Y7BU5RC4.js.map +1 -0
  252. package/dist/chunk-YH6MOKHR.mjs +65 -0
  253. package/dist/chunk-YH6MOKHR.mjs.map +1 -0
  254. package/dist/chunk-YKTANA3H.mjs +52 -0
  255. package/dist/chunk-YKTANA3H.mjs.map +1 -0
  256. package/dist/{chunk-NWMSIYZP.js → chunk-YNTUZCLI.js} +16 -16
  257. package/dist/{chunk-NWMSIYZP.js.map → chunk-YNTUZCLI.js.map} +1 -1
  258. package/dist/chunk-YPTHTFVF.mjs +144 -0
  259. package/dist/chunk-YPTHTFVF.mjs.map +1 -0
  260. package/dist/chunk-YPYPWALR.js +128 -0
  261. package/dist/chunk-YPYPWALR.js.map +1 -0
  262. package/dist/chunk-YXU2MJMT.mjs +52 -0
  263. package/dist/chunk-YXU2MJMT.mjs.map +1 -0
  264. package/dist/{chunk-ZITS2V53.js → chunk-ZIP7EX64.js} +9 -9
  265. package/dist/{chunk-ZITS2V53.js.map → chunk-ZIP7EX64.js.map} +1 -1
  266. package/dist/chunk-ZJWOSRAS.mjs +57 -0
  267. package/dist/chunk-ZJWOSRAS.mjs.map +1 -0
  268. package/dist/{chunk-ODT5TFIT.mjs → chunk-ZMFRJHO6.mjs} +3 -3
  269. package/dist/{chunk-ODT5TFIT.mjs.map → chunk-ZMFRJHO6.mjs.map} +1 -1
  270. package/dist/chunk-ZPGYR2UP.mjs +54 -0
  271. package/dist/chunk-ZPGYR2UP.mjs.map +1 -0
  272. package/dist/{chunk-XPHD3X4L.mjs → chunk-ZUQOQW5W.mjs} +3 -3
  273. package/dist/{chunk-XPHD3X4L.mjs.map → chunk-ZUQOQW5W.mjs.map} +1 -1
  274. package/dist/design-system/accordion.d.ts +85 -85
  275. package/dist/design-system/accordion.d.ts.map +1 -1
  276. package/dist/design-system/alert.d.ts +46 -46
  277. package/dist/design-system/alert.d.ts.map +1 -1
  278. package/dist/design-system/animated-number.d.ts +44 -44
  279. package/dist/design-system/avatar.d.ts +47 -47
  280. package/dist/design-system/avatar.d.ts.map +1 -1
  281. package/dist/design-system/badge.d.ts +92 -92
  282. package/dist/design-system/badge.d.ts.map +1 -1
  283. package/dist/design-system/breadcrumb.d.ts +38 -38
  284. package/dist/design-system/breadcrumb.d.ts.map +1 -1
  285. package/dist/design-system/button.d.ts +50 -50
  286. package/dist/design-system/button.d.ts.map +1 -1
  287. package/dist/design-system/card.d.ts +52 -52
  288. package/dist/design-system/card.d.ts.map +1 -1
  289. package/dist/design-system/checkbox.d.ts +32 -32
  290. package/dist/design-system/checkbox.d.ts.map +1 -1
  291. package/dist/design-system/combobox.d.ts +124 -0
  292. package/dist/design-system/combobox.d.ts.map +1 -0
  293. package/dist/design-system/command.d.ts +53 -53
  294. package/dist/design-system/command.d.ts.map +1 -1
  295. package/dist/design-system/context-menu.d.ts +51 -51
  296. package/dist/design-system/context-menu.d.ts.map +1 -1
  297. package/dist/design-system/copy-button.d.ts +49 -49
  298. package/dist/design-system/copy-button.d.ts.map +1 -1
  299. package/dist/design-system/divider.d.ts +47 -47
  300. package/dist/design-system/drawer.d.ts +90 -90
  301. package/dist/design-system/drawer.d.ts.map +1 -1
  302. package/dist/design-system/dropdown.d.ts +97 -97
  303. package/dist/design-system/dropdown.d.ts.map +1 -1
  304. package/dist/design-system/dynamic-stepper.d.ts +57 -57
  305. package/dist/design-system/empty-state.d.ts +25 -25
  306. package/dist/design-system/empty-state.d.ts.map +1 -1
  307. package/dist/design-system/facade.js +41 -40
  308. package/dist/design-system/facade.js.map +1 -1
  309. package/dist/design-system/facade.mjs +40 -39
  310. package/dist/design-system/facade.mjs.map +1 -1
  311. package/dist/design-system/file-upload.d.ts +36 -36
  312. package/dist/design-system/file-upload.d.ts.map +1 -1
  313. package/dist/design-system/index.d.ts +1 -0
  314. package/dist/design-system/index.d.ts.map +1 -1
  315. package/dist/design-system/inputs.d.ts +159 -159
  316. package/dist/design-system/inputs.d.ts.map +1 -1
  317. package/dist/design-system/kbd.d.ts +51 -51
  318. package/dist/design-system/kbd.d.ts.map +1 -1
  319. package/dist/design-system/marquee.d.ts +43 -43
  320. package/dist/design-system/marquee.d.ts.map +1 -1
  321. package/dist/design-system/modal.d.ts +90 -90
  322. package/dist/design-system/modal.d.ts.map +1 -1
  323. package/dist/design-system/otp-input.d.ts +38 -38
  324. package/dist/design-system/otp-input.d.ts.map +1 -1
  325. package/dist/design-system/pagination.d.ts +51 -51
  326. package/dist/design-system/pagination.d.ts.map +1 -1
  327. package/dist/design-system/popover.d.ts +44 -44
  328. package/dist/design-system/popover.d.ts.map +1 -1
  329. package/dist/design-system/progress.d.ts +47 -47
  330. package/dist/design-system/progress.d.ts.map +1 -1
  331. package/dist/design-system/radio-group.d.ts +32 -32
  332. package/dist/design-system/radio-group.d.ts.map +1 -1
  333. package/dist/design-system/rating.d.ts +54 -54
  334. package/dist/design-system/rating.d.ts.map +1 -1
  335. package/dist/design-system/scroll-area.d.ts +30 -30
  336. package/dist/design-system/scroll-area.d.ts.map +1 -1
  337. package/dist/design-system/select.d.ts +132 -132
  338. package/dist/design-system/select.d.ts.map +1 -1
  339. package/dist/design-system/skeleton.d.ts +67 -67
  340. package/dist/design-system/skeleton.d.ts.map +1 -1
  341. package/dist/design-system/slider.d.ts +45 -45
  342. package/dist/design-system/slider.d.ts.map +1 -1
  343. package/dist/design-system/spinner.d.ts +43 -43
  344. package/dist/design-system/table.d.ts +108 -108
  345. package/dist/design-system/table.d.ts.map +1 -1
  346. package/dist/design-system/tabs.d.ts +43 -43
  347. package/dist/design-system/tabs.d.ts.map +1 -1
  348. package/dist/design-system/timeline.d.ts +45 -45
  349. package/dist/design-system/timeline.d.ts.map +1 -1
  350. package/dist/design-system/toast.d.ts +47 -47
  351. package/dist/design-system/toast.d.ts.map +1 -1
  352. package/dist/design-system/toggle.d.ts +88 -88
  353. package/dist/design-system/toggle.d.ts.map +1 -1
  354. package/dist/design-system/tokens.d.ts +101 -0
  355. package/dist/design-system/tokens.d.ts.map +1 -1
  356. package/dist/design-system/tokens.js +11 -7
  357. package/dist/design-system/tokens.mjs +1 -1
  358. package/dist/design-system/tooltip.d.ts +44 -44
  359. package/dist/design-system/tooltip.d.ts.map +1 -1
  360. package/dist/design-system/tree-view.d.ts +92 -92
  361. package/dist/design-system/tree-view.d.ts.map +1 -1
  362. package/dist/hooks/index.d.ts +13 -0
  363. package/dist/hooks/index.d.ts.map +1 -1
  364. package/dist/hooks/useCookie/index.d.ts +2 -0
  365. package/dist/hooks/useCookie/index.d.ts.map +1 -0
  366. package/dist/hooks/useCookie/useCookie.d.ts +36 -0
  367. package/dist/hooks/useCookie/useCookie.d.ts.map +1 -0
  368. package/dist/hooks/useCookie.js +76 -0
  369. package/dist/hooks/useCookie.js.map +1 -0
  370. package/dist/hooks/useCookie.mjs +74 -0
  371. package/dist/hooks/useCookie.mjs.map +1 -0
  372. package/dist/hooks/useCountdown/index.d.ts +2 -0
  373. package/dist/hooks/useCountdown/index.d.ts.map +1 -0
  374. package/dist/hooks/useCountdown/useCountdown.d.ts +40 -0
  375. package/dist/hooks/useCountdown/useCountdown.d.ts.map +1 -0
  376. package/dist/hooks/useCountdown.js +60 -0
  377. package/dist/hooks/useCountdown.js.map +1 -0
  378. package/dist/hooks/useCountdown.mjs +58 -0
  379. package/dist/hooks/useCountdown.mjs.map +1 -0
  380. package/dist/hooks/useEventListener/index.d.ts +2 -0
  381. package/dist/hooks/useEventListener/index.d.ts.map +1 -0
  382. package/dist/hooks/useEventListener/useEventListener.d.ts +22 -0
  383. package/dist/hooks/useEventListener/useEventListener.d.ts.map +1 -0
  384. package/dist/hooks/useEventListener.js +45 -0
  385. package/dist/hooks/useEventListener.js.map +1 -0
  386. package/dist/hooks/useEventListener.mjs +43 -0
  387. package/dist/hooks/useEventListener.mjs.map +1 -0
  388. package/dist/hooks/useGeolocation/index.d.ts +2 -0
  389. package/dist/hooks/useGeolocation/index.d.ts.map +1 -0
  390. package/dist/hooks/useGeolocation/useGeolocation.d.ts +48 -0
  391. package/dist/hooks/useGeolocation/useGeolocation.d.ts.map +1 -0
  392. package/dist/hooks/useGeolocation.js +111 -0
  393. package/dist/hooks/useGeolocation.js.map +1 -0
  394. package/dist/hooks/useGeolocation.mjs +109 -0
  395. package/dist/hooks/useGeolocation.mjs.map +1 -0
  396. package/dist/hooks/useHotkeys/index.d.ts +2 -0
  397. package/dist/hooks/useHotkeys/index.d.ts.map +1 -0
  398. package/dist/hooks/useHotkeys/useHotkeys.d.ts +24 -0
  399. package/dist/hooks/useHotkeys/useHotkeys.d.ts.map +1 -0
  400. package/dist/hooks/useHotkeys.js +90 -0
  401. package/dist/hooks/useHotkeys.js.map +1 -0
  402. package/dist/hooks/useHotkeys.mjs +88 -0
  403. package/dist/hooks/useHotkeys.mjs.map +1 -0
  404. package/dist/hooks/useIdleTimeout/index.d.ts +2 -0
  405. package/dist/hooks/useIdleTimeout/index.d.ts.map +1 -0
  406. package/dist/hooks/useIdleTimeout/useIdleTimeout.d.ts +31 -0
  407. package/dist/hooks/useIdleTimeout/useIdleTimeout.d.ts.map +1 -0
  408. package/dist/hooks/useIdleTimeout.js +77 -0
  409. package/dist/hooks/useIdleTimeout.js.map +1 -0
  410. package/dist/hooks/useIdleTimeout.mjs +75 -0
  411. package/dist/hooks/useIdleTimeout.mjs.map +1 -0
  412. package/dist/hooks/useInterval/index.d.ts +2 -0
  413. package/dist/hooks/useInterval/index.d.ts.map +1 -0
  414. package/dist/hooks/useInterval/useInterval.d.ts +12 -0
  415. package/dist/hooks/useInterval/useInterval.d.ts.map +1 -0
  416. package/dist/hooks/useInterval.js +27 -0
  417. package/dist/hooks/useInterval.js.map +1 -0
  418. package/dist/hooks/useInterval.mjs +25 -0
  419. package/dist/hooks/useInterval.mjs.map +1 -0
  420. package/dist/hooks/useKeyPress/index.d.ts +2 -0
  421. package/dist/hooks/useKeyPress/index.d.ts.map +1 -0
  422. package/dist/hooks/useKeyPress/useKeyPress.d.ts +15 -0
  423. package/dist/hooks/useKeyPress/useKeyPress.d.ts.map +1 -0
  424. package/dist/hooks/useKeyPress.js +47 -0
  425. package/dist/hooks/useKeyPress.js.map +1 -0
  426. package/dist/hooks/useKeyPress.mjs +45 -0
  427. package/dist/hooks/useKeyPress.mjs.map +1 -0
  428. package/dist/hooks/useLongPress/index.d.ts +2 -0
  429. package/dist/hooks/useLongPress/index.d.ts.map +1 -0
  430. package/dist/hooks/useLongPress/useLongPress.d.ts +46 -0
  431. package/dist/hooks/useLongPress/useLongPress.d.ts.map +1 -0
  432. package/dist/hooks/useLongPress.js +116 -0
  433. package/dist/hooks/useLongPress.js.map +1 -0
  434. package/dist/hooks/useLongPress.mjs +114 -0
  435. package/dist/hooks/useLongPress.mjs.map +1 -0
  436. package/dist/hooks/usePrevious/index.d.ts +2 -0
  437. package/dist/hooks/usePrevious/index.d.ts.map +1 -0
  438. package/dist/hooks/usePrevious/usePrevious.d.ts +13 -0
  439. package/dist/hooks/usePrevious/usePrevious.d.ts.map +1 -0
  440. package/dist/hooks/usePrevious.js +17 -0
  441. package/dist/hooks/usePrevious.js.map +1 -0
  442. package/dist/hooks/usePrevious.mjs +15 -0
  443. package/dist/hooks/usePrevious.mjs.map +1 -0
  444. package/dist/hooks/useScrollPosition/index.d.ts +2 -0
  445. package/dist/hooks/useScrollPosition/index.d.ts.map +1 -0
  446. package/dist/hooks/useScrollPosition/useScrollPosition.d.ts +37 -0
  447. package/dist/hooks/useScrollPosition/useScrollPosition.d.ts.map +1 -0
  448. package/dist/hooks/useScrollPosition.js +41 -0
  449. package/dist/hooks/useScrollPosition.js.map +1 -0
  450. package/dist/hooks/useScrollPosition.mjs +39 -0
  451. package/dist/hooks/useScrollPosition.mjs.map +1 -0
  452. package/dist/hooks/useTimeout/index.d.ts +2 -0
  453. package/dist/hooks/useTimeout/index.d.ts.map +1 -0
  454. package/dist/hooks/useTimeout/useTimeout.d.ts +19 -0
  455. package/dist/hooks/useTimeout/useTimeout.d.ts.map +1 -0
  456. package/dist/hooks/useTimeout.js +38 -0
  457. package/dist/hooks/useTimeout.js.map +1 -0
  458. package/dist/hooks/useTimeout.mjs +36 -0
  459. package/dist/hooks/useTimeout.mjs.map +1 -0
  460. package/dist/hooks/useVirtualList/index.d.ts +2 -0
  461. package/dist/hooks/useVirtualList/index.d.ts.map +1 -0
  462. package/dist/hooks/useVirtualList/useVirtualList.d.ts +47 -0
  463. package/dist/hooks/useVirtualList/useVirtualList.d.ts.map +1 -0
  464. package/dist/hooks/useVirtualList.js +84 -0
  465. package/dist/hooks/useVirtualList.js.map +1 -0
  466. package/dist/hooks/useVirtualList.mjs +82 -0
  467. package/dist/hooks/useVirtualList.mjs.map +1 -0
  468. package/dist/lib/facade.d.ts.map +1 -1
  469. package/dist/ui/accordion/animated.js +8 -8
  470. package/dist/ui/accordion/animated.mjs +3 -3
  471. package/dist/ui/accordion.js +10 -10
  472. package/dist/ui/accordion.mjs +3 -3
  473. package/dist/ui/alert/animated.js +3 -3
  474. package/dist/ui/alert/animated.mjs +2 -2
  475. package/dist/ui/alert.js +11 -11
  476. package/dist/ui/alert.mjs +3 -3
  477. package/dist/ui/animated-number.js +4 -4
  478. package/dist/ui/animated-number.mjs +1 -1
  479. package/dist/ui/avatar/animated.js +6 -6
  480. package/dist/ui/avatar/animated.mjs +3 -3
  481. package/dist/ui/avatar.js +10 -10
  482. package/dist/ui/avatar.mjs +3 -3
  483. package/dist/ui/badge/animated.js +3 -3
  484. package/dist/ui/badge/animated.mjs +2 -2
  485. package/dist/ui/badge/variants.d.ts +45 -45
  486. package/dist/ui/badge.js +5 -5
  487. package/dist/ui/badge.mjs +3 -3
  488. package/dist/ui/breadcrumb.js +9 -9
  489. package/dist/ui/breadcrumb.mjs +1 -1
  490. package/dist/ui/buttons/animated.js +43 -42
  491. package/dist/ui/buttons/animated.js.map +1 -1
  492. package/dist/ui/buttons/animated.mjs +41 -40
  493. package/dist/ui/buttons/animated.mjs.map +1 -1
  494. package/dist/ui/buttons.js +44 -43
  495. package/dist/ui/buttons.mjs +42 -41
  496. package/dist/ui/card/animated.js +8 -8
  497. package/dist/ui/card/animated.mjs +3 -3
  498. package/dist/ui/card.js +13 -13
  499. package/dist/ui/card.mjs +3 -3
  500. package/dist/ui/checkbox/animated.js +5 -5
  501. package/dist/ui/checkbox/animated.mjs +2 -2
  502. package/dist/ui/checkbox.js +9 -9
  503. package/dist/ui/checkbox.mjs +3 -3
  504. package/dist/ui/combobox/combobox-base.d.ts +37 -0
  505. package/dist/ui/combobox/combobox-base.d.ts.map +1 -0
  506. package/dist/ui/combobox/combobox.d.ts +6 -0
  507. package/dist/ui/combobox/combobox.d.ts.map +1 -0
  508. package/dist/ui/combobox/index.d.ts +4 -0
  509. package/dist/ui/combobox/index.d.ts.map +1 -0
  510. package/dist/ui/combobox/types.d.ts +70 -0
  511. package/dist/ui/combobox/types.d.ts.map +1 -0
  512. package/dist/ui/combobox/variants.d.ts +17 -0
  513. package/dist/ui/combobox/variants.d.ts.map +1 -0
  514. package/dist/ui/combobox.js +510 -0
  515. package/dist/ui/combobox.js.map +1 -0
  516. package/dist/ui/combobox.mjs +495 -0
  517. package/dist/ui/combobox.mjs.map +1 -0
  518. package/dist/ui/command/animated.js +3 -3
  519. package/dist/ui/command/animated.mjs +2 -2
  520. package/dist/ui/command.js +16 -16
  521. package/dist/ui/command.mjs +3 -3
  522. package/dist/ui/context-menu.js +8 -8
  523. package/dist/ui/context-menu.mjs +2 -2
  524. package/dist/ui/copy-button/animated.js +3 -3
  525. package/dist/ui/copy-button/animated.mjs +2 -2
  526. package/dist/ui/copy-button.js +4 -4
  527. package/dist/ui/copy-button.mjs +3 -3
  528. package/dist/ui/divider/animated.js +3 -3
  529. package/dist/ui/divider/animated.mjs +2 -2
  530. package/dist/ui/divider.js +7 -7
  531. package/dist/ui/divider.mjs +3 -3
  532. package/dist/ui/drawer/animated.js +12 -12
  533. package/dist/ui/drawer/animated.mjs +3 -3
  534. package/dist/ui/drawer.js +12 -12
  535. package/dist/ui/drawer.mjs +2 -2
  536. package/dist/ui/dropdown.js +9 -9
  537. package/dist/ui/dropdown.mjs +1 -1
  538. package/dist/ui/dynamic-stepper/variants.d.ts +1 -1
  539. package/dist/ui/dynamic-stepper/variants.d.ts.map +1 -1
  540. package/dist/ui/dynamic-stepper.js +53 -52
  541. package/dist/ui/dynamic-stepper.js.map +1 -1
  542. package/dist/ui/dynamic-stepper.mjs +42 -41
  543. package/dist/ui/dynamic-stepper.mjs.map +1 -1
  544. package/dist/ui/empty-state/animated.js +3 -3
  545. package/dist/ui/empty-state/animated.mjs +2 -2
  546. package/dist/ui/empty-state.js +11 -11
  547. package/dist/ui/empty-state.mjs +3 -3
  548. package/dist/ui/file-upload.js +3 -3
  549. package/dist/ui/file-upload.mjs +1 -1
  550. package/dist/ui/inputs/animated.js +4 -4
  551. package/dist/ui/inputs/animated.mjs +2 -2
  552. package/dist/ui/inputs.js +5 -5
  553. package/dist/ui/inputs.mjs +3 -3
  554. package/dist/ui/kbd/animated.js +3 -3
  555. package/dist/ui/kbd/animated.mjs +2 -2
  556. package/dist/ui/kbd.js +5 -5
  557. package/dist/ui/kbd.mjs +3 -3
  558. package/dist/ui/marquee.js +6 -6
  559. package/dist/ui/marquee.mjs +1 -1
  560. package/dist/ui/modal/animated.js +5 -5
  561. package/dist/ui/modal/animated.mjs +2 -2
  562. package/dist/ui/modal.js +13 -13
  563. package/dist/ui/modal.mjs +3 -3
  564. package/dist/ui/otp-input.js +10 -10
  565. package/dist/ui/otp-input.mjs +1 -1
  566. package/dist/ui/pagination.js +49 -48
  567. package/dist/ui/pagination.js.map +1 -1
  568. package/dist/ui/pagination.mjs +41 -40
  569. package/dist/ui/pagination.mjs.map +1 -1
  570. package/dist/ui/popover/animated.js +5 -5
  571. package/dist/ui/popover/animated.mjs +2 -2
  572. package/dist/ui/popover.js +8 -8
  573. package/dist/ui/popover.mjs +2 -2
  574. package/dist/ui/progress/animated.js +9 -9
  575. package/dist/ui/progress/animated.mjs +3 -3
  576. package/dist/ui/progress.js +10 -10
  577. package/dist/ui/progress.mjs +3 -3
  578. package/dist/ui/radio-group/animated.js +8 -8
  579. package/dist/ui/radio-group/animated.mjs +2 -2
  580. package/dist/ui/radio-group.js +12 -12
  581. package/dist/ui/radio-group.mjs +3 -3
  582. package/dist/ui/rating.js +11 -11
  583. package/dist/ui/rating.mjs +1 -1
  584. package/dist/ui/scroll-area.js +7 -7
  585. package/dist/ui/scroll-area.mjs +1 -1
  586. package/dist/ui/search/search-suggestion-list.d.ts.map +1 -1
  587. package/dist/ui/search.js +12 -9
  588. package/dist/ui/search.js.map +1 -1
  589. package/dist/ui/search.mjs +11 -8
  590. package/dist/ui/search.mjs.map +1 -1
  591. package/dist/ui/select.js +11 -11
  592. package/dist/ui/select.mjs +1 -1
  593. package/dist/ui/skeleton/animated.js +9 -9
  594. package/dist/ui/skeleton/animated.mjs +2 -2
  595. package/dist/ui/skeleton/variants.d.ts +21 -21
  596. package/dist/ui/skeleton/variants.d.ts.map +1 -1
  597. package/dist/ui/skeleton.js +10 -10
  598. package/dist/ui/skeleton.mjs +2 -2
  599. package/dist/ui/slider.js +9 -9
  600. package/dist/ui/slider.mjs +1 -1
  601. package/dist/ui/spinner/animated.js +5 -5
  602. package/dist/ui/spinner/animated.mjs +1 -1
  603. package/dist/ui/table/animated.js +9 -9
  604. package/dist/ui/table/animated.mjs +3 -3
  605. package/dist/ui/table.js +15 -15
  606. package/dist/ui/table.mjs +2 -2
  607. package/dist/ui/tabs/animated.js +3 -3
  608. package/dist/ui/tabs/animated.mjs +2 -2
  609. package/dist/ui/tabs.js +10 -10
  610. package/dist/ui/tabs.mjs +2 -2
  611. package/dist/ui/timeline/animated.js +12 -12
  612. package/dist/ui/timeline/animated.mjs +3 -3
  613. package/dist/ui/timeline.js +15 -15
  614. package/dist/ui/timeline.mjs +3 -3
  615. package/dist/ui/toast/animated.js +8 -8
  616. package/dist/ui/toast/animated.mjs +2 -2
  617. package/dist/ui/toast.js +13 -13
  618. package/dist/ui/toast.mjs +2 -2
  619. package/dist/ui/toggle/animated.js +5 -5
  620. package/dist/ui/toggle/animated.mjs +2 -2
  621. package/dist/ui/toggle.js +5 -5
  622. package/dist/ui/toggle.mjs +3 -3
  623. package/dist/ui/tooltip/animated.js +4 -4
  624. package/dist/ui/tooltip/animated.mjs +2 -2
  625. package/dist/ui/tooltip.js +8 -8
  626. package/dist/ui/tooltip.mjs +2 -2
  627. package/dist/ui/tree-view/animated.js +3 -3
  628. package/dist/ui/tree-view/animated.mjs +2 -2
  629. package/dist/ui/tree-view.js +6 -6
  630. package/dist/ui/tree-view.mjs +3 -3
  631. package/package.json +2 -2
  632. package/src/design-system/accordion.ts +85 -85
  633. package/src/design-system/alert.ts +46 -46
  634. package/src/design-system/animated-number.ts +44 -44
  635. package/src/design-system/avatar.ts +47 -47
  636. package/src/design-system/badge.ts +50 -50
  637. package/src/design-system/breadcrumb.ts +38 -38
  638. package/src/design-system/button.ts +52 -52
  639. package/src/design-system/card.ts +54 -54
  640. package/src/design-system/checkbox.ts +32 -32
  641. package/src/design-system/combobox.ts +204 -0
  642. package/src/design-system/command.ts +53 -53
  643. package/src/design-system/context-menu.ts +24 -24
  644. package/src/design-system/copy-button.ts +51 -51
  645. package/src/design-system/divider.ts +47 -47
  646. package/src/design-system/drawer.ts +90 -90
  647. package/src/design-system/dropdown.ts +97 -97
  648. package/src/design-system/dynamic-stepper.ts +57 -57
  649. package/src/design-system/empty-state.ts +25 -25
  650. package/src/design-system/file-upload.ts +36 -36
  651. package/src/design-system/index.ts +1 -0
  652. package/src/design-system/inputs.ts +166 -166
  653. package/src/design-system/kbd.ts +52 -52
  654. package/src/design-system/marquee.ts +43 -43
  655. package/src/design-system/modal.ts +90 -90
  656. package/src/design-system/otp-input.ts +38 -38
  657. package/src/design-system/pagination.ts +51 -51
  658. package/src/design-system/popover.ts +44 -44
  659. package/src/design-system/progress.ts +47 -47
  660. package/src/design-system/radio-group.ts +32 -32
  661. package/src/design-system/rating.ts +54 -54
  662. package/src/design-system/scroll-area.ts +30 -30
  663. package/src/design-system/select.ts +132 -132
  664. package/src/design-system/skeleton.ts +67 -67
  665. package/src/design-system/slider.ts +45 -45
  666. package/src/design-system/spinner.ts +43 -43
  667. package/src/design-system/table.ts +108 -108
  668. package/src/design-system/tabs.ts +44 -43
  669. package/src/design-system/timeline.ts +45 -45
  670. package/src/design-system/toast.ts +47 -47
  671. package/src/design-system/toggle.ts +88 -88
  672. package/src/design-system/tokens.ts +102 -0
  673. package/src/design-system/tooltip.ts +44 -44
  674. package/src/design-system/tree-view.ts +92 -92
  675. package/src/hooks/index.ts +50 -0
  676. package/src/hooks/useCookie/index.ts +5 -0
  677. package/src/hooks/useCookie/useCookie.test.ts +57 -0
  678. package/src/hooks/useCookie/useCookie.ts +127 -0
  679. package/src/hooks/useCountdown/index.ts +5 -0
  680. package/src/hooks/useCountdown/useCountdown.test.ts +113 -0
  681. package/src/hooks/useCountdown/useCountdown.ts +106 -0
  682. package/src/hooks/useEventListener/index.ts +4 -0
  683. package/src/hooks/useEventListener/useEventListener.test.ts +60 -0
  684. package/src/hooks/useEventListener/useEventListener.ts +99 -0
  685. package/src/hooks/useGeolocation/index.ts +6 -0
  686. package/src/hooks/useGeolocation/useGeolocation.test.ts +110 -0
  687. package/src/hooks/useGeolocation/useGeolocation.ts +175 -0
  688. package/src/hooks/useHotkeys/index.ts +5 -0
  689. package/src/hooks/useHotkeys/useHotkeys.test.ts +82 -0
  690. package/src/hooks/useHotkeys/useHotkeys.ts +130 -0
  691. package/src/hooks/useIdleTimeout/index.ts +5 -0
  692. package/src/hooks/useIdleTimeout/useIdleTimeout.test.ts +95 -0
  693. package/src/hooks/useIdleTimeout/useIdleTimeout.ts +111 -0
  694. package/src/hooks/useInterval/index.ts +1 -0
  695. package/src/hooks/useInterval/useInterval.test.ts +56 -0
  696. package/src/hooks/useInterval/useInterval.ts +36 -0
  697. package/src/hooks/useKeyPress/index.ts +1 -0
  698. package/src/hooks/useKeyPress/useKeyPress.test.ts +67 -0
  699. package/src/hooks/useKeyPress/useKeyPress.ts +65 -0
  700. package/src/hooks/useLongPress/index.ts +5 -0
  701. package/src/hooks/useLongPress/useLongPress.test.ts +180 -0
  702. package/src/hooks/useLongPress/useLongPress.ts +177 -0
  703. package/src/hooks/usePrevious/index.ts +1 -0
  704. package/src/hooks/usePrevious/usePrevious.test.ts +33 -0
  705. package/src/hooks/usePrevious/usePrevious.ts +24 -0
  706. package/src/hooks/useScrollPosition/index.ts +5 -0
  707. package/src/hooks/useScrollPosition/useScrollPosition.test.ts +69 -0
  708. package/src/hooks/useScrollPosition/useScrollPosition.ts +88 -0
  709. package/src/hooks/useTimeout/index.ts +1 -0
  710. package/src/hooks/useTimeout/useTimeout.test.ts +63 -0
  711. package/src/hooks/useTimeout/useTimeout.ts +58 -0
  712. package/src/hooks/useVirtualList/index.ts +6 -0
  713. package/src/hooks/useVirtualList/useVirtualList.test.ts +102 -0
  714. package/src/hooks/useVirtualList/useVirtualList.ts +141 -0
  715. package/src/lib/facade.test.ts +29 -8
  716. package/src/lib/facade.ts +6 -2
  717. package/src/ui/combobox/combobox-base.tsx +552 -0
  718. package/src/ui/combobox/combobox.test.tsx +292 -0
  719. package/src/ui/combobox/combobox.tsx +8 -0
  720. package/src/ui/combobox/index.ts +33 -0
  721. package/src/ui/combobox/types.ts +91 -0
  722. package/src/ui/combobox/variants.ts +58 -0
  723. package/src/ui/search/search-suggestion-list.tsx +11 -6
  724. package/src/ui/skeleton/variants.ts +105 -0
  725. package/dist/chunk-22I54GJW.js +0 -69
  726. package/dist/chunk-22I54GJW.js.map +0 -1
  727. package/dist/chunk-3I6XR7KN.js +0 -87
  728. package/dist/chunk-3I6XR7KN.js.map +0 -1
  729. package/dist/chunk-3R6PQUG2.mjs +0 -144
  730. package/dist/chunk-3R6PQUG2.mjs.map +0 -1
  731. package/dist/chunk-3Z6L24ZK.js +0 -83
  732. package/dist/chunk-3Z6L24ZK.js.map +0 -1
  733. package/dist/chunk-44G3U35C.js +0 -181
  734. package/dist/chunk-44G3U35C.js.map +0 -1
  735. package/dist/chunk-456OEGUT.mjs +0 -58
  736. package/dist/chunk-456OEGUT.mjs.map +0 -1
  737. package/dist/chunk-45CGVW7S.js +0 -126
  738. package/dist/chunk-45CGVW7S.js.map +0 -1
  739. package/dist/chunk-4QLWSXXO.mjs +0 -65
  740. package/dist/chunk-4QLWSXXO.mjs.map +0 -1
  741. package/dist/chunk-4U7CDEN7.mjs +0 -57
  742. package/dist/chunk-4U7CDEN7.mjs.map +0 -1
  743. package/dist/chunk-4ZP444GA.mjs +0 -19
  744. package/dist/chunk-4ZP444GA.mjs.map +0 -1
  745. package/dist/chunk-56DECC6D.js +0 -95
  746. package/dist/chunk-56DECC6D.js.map +0 -1
  747. package/dist/chunk-56KZVM5D.mjs +0 -159
  748. package/dist/chunk-56KZVM5D.mjs.map +0 -1
  749. package/dist/chunk-5BSYGFN7.mjs +0 -94
  750. package/dist/chunk-5BSYGFN7.mjs.map +0 -1
  751. package/dist/chunk-5J6QMTES.js +0 -655
  752. package/dist/chunk-5J6QMTES.js.map +0 -1
  753. package/dist/chunk-5QSYJHWL.mjs +0 -75
  754. package/dist/chunk-5QSYJHWL.mjs.map +0 -1
  755. package/dist/chunk-5R6XJAXQ.mjs +0 -66
  756. package/dist/chunk-5R6XJAXQ.mjs.map +0 -1
  757. package/dist/chunk-5WWD3TZ2.mjs +0 -70
  758. package/dist/chunk-5WWD3TZ2.mjs.map +0 -1
  759. package/dist/chunk-63UE3BR4.mjs +0 -79
  760. package/dist/chunk-63UE3BR4.mjs.map +0 -1
  761. package/dist/chunk-7LFRU6AW.js +0 -254
  762. package/dist/chunk-7LFRU6AW.js.map +0 -1
  763. package/dist/chunk-7M4TUP4I.js +0 -74
  764. package/dist/chunk-7M4TUP4I.js.map +0 -1
  765. package/dist/chunk-AADGUMYW.js +0 -122
  766. package/dist/chunk-AADGUMYW.js.map +0 -1
  767. package/dist/chunk-AQHY4S33.js +0 -19
  768. package/dist/chunk-BTSCPOWZ.mjs +0 -171
  769. package/dist/chunk-BTSCPOWZ.mjs.map +0 -1
  770. package/dist/chunk-BZZVO4GL.mjs.map +0 -1
  771. package/dist/chunk-DWDDIG6R.js +0 -68
  772. package/dist/chunk-DWDDIG6R.js.map +0 -1
  773. package/dist/chunk-E7BPOL74.js +0 -155
  774. package/dist/chunk-E7BPOL74.js.map +0 -1
  775. package/dist/chunk-EP7WTIKH.mjs +0 -81
  776. package/dist/chunk-EP7WTIKH.mjs.map +0 -1
  777. package/dist/chunk-F6V74YMW.js +0 -71
  778. package/dist/chunk-F6V74YMW.js.map +0 -1
  779. package/dist/chunk-FNNIH7R2.js +0 -70
  780. package/dist/chunk-FNNIH7R2.js.map +0 -1
  781. package/dist/chunk-FWY22BZZ.js +0 -134
  782. package/dist/chunk-FWY22BZZ.js.map +0 -1
  783. package/dist/chunk-FXDHDQTH.js +0 -79
  784. package/dist/chunk-FXDHDQTH.js.map +0 -1
  785. package/dist/chunk-FZET7XQV.js +0 -169
  786. package/dist/chunk-FZET7XQV.js.map +0 -1
  787. package/dist/chunk-GDYSB7SB.js +0 -78
  788. package/dist/chunk-GDYSB7SB.js.map +0 -1
  789. package/dist/chunk-GPM2PRC5.js +0 -61
  790. package/dist/chunk-GPM2PRC5.js.map +0 -1
  791. package/dist/chunk-I55QC57T.js +0 -47
  792. package/dist/chunk-I55QC57T.js.map +0 -1
  793. package/dist/chunk-ISXAUMRW.js +0 -63
  794. package/dist/chunk-ISXAUMRW.js.map +0 -1
  795. package/dist/chunk-IULYVARJ.mjs +0 -107
  796. package/dist/chunk-IULYVARJ.mjs.map +0 -1
  797. package/dist/chunk-IZAQBJKT.mjs +0 -125
  798. package/dist/chunk-IZAQBJKT.mjs.map +0 -1
  799. package/dist/chunk-J6XKTPP5.js +0 -61
  800. package/dist/chunk-J6XKTPP5.js.map +0 -1
  801. package/dist/chunk-JF4BRFOG.mjs +0 -54
  802. package/dist/chunk-JF4BRFOG.mjs.map +0 -1
  803. package/dist/chunk-JI3IEKH6.mjs +0 -64
  804. package/dist/chunk-JI3IEKH6.mjs.map +0 -1
  805. package/dist/chunk-JTMRSRYD.js +0 -63
  806. package/dist/chunk-JTMRSRYD.js.map +0 -1
  807. package/dist/chunk-KXNMW4NV.mjs +0 -61
  808. package/dist/chunk-KXNMW4NV.mjs.map +0 -1
  809. package/dist/chunk-L67EJJFN.js +0 -82
  810. package/dist/chunk-L67EJJFN.js.map +0 -1
  811. package/dist/chunk-L6AS5AVO.js +0 -121
  812. package/dist/chunk-L6AS5AVO.js.map +0 -1
  813. package/dist/chunk-LL2UY6CD.mjs +0 -74
  814. package/dist/chunk-LL2UY6CD.mjs.map +0 -1
  815. package/dist/chunk-LU6VEI4B.js +0 -92
  816. package/dist/chunk-LU6VEI4B.js.map +0 -1
  817. package/dist/chunk-MCYFKM7T.js +0 -62
  818. package/dist/chunk-MCYFKM7T.js.map +0 -1
  819. package/dist/chunk-MUP7DVQR.js +0 -26
  820. package/dist/chunk-MUP7DVQR.js.map +0 -1
  821. package/dist/chunk-N2RUT33F.mjs +0 -68
  822. package/dist/chunk-N2RUT33F.mjs.map +0 -1
  823. package/dist/chunk-NMBSK44H.mjs +0 -44
  824. package/dist/chunk-NMBSK44H.mjs.map +0 -1
  825. package/dist/chunk-NVTV3EQB.js +0 -49
  826. package/dist/chunk-NXNL64Q7.mjs +0 -112
  827. package/dist/chunk-NXNL64Q7.mjs.map +0 -1
  828. package/dist/chunk-OGMIKRLJ.js +0 -78
  829. package/dist/chunk-OGMIKRLJ.js.map +0 -1
  830. package/dist/chunk-OOBA2MDD.mjs +0 -57
  831. package/dist/chunk-OOBA2MDD.mjs.map +0 -1
  832. package/dist/chunk-OQCI2IVL.mjs +0 -112
  833. package/dist/chunk-OQCI2IVL.mjs.map +0 -1
  834. package/dist/chunk-P25NI2HG.js +0 -114
  835. package/dist/chunk-P25NI2HG.js.map +0 -1
  836. package/dist/chunk-P2DQP4J4.js.map +0 -1
  837. package/dist/chunk-P43A2BPU.mjs +0 -82
  838. package/dist/chunk-P43A2BPU.mjs.map +0 -1
  839. package/dist/chunk-P54PZ72L.mjs +0 -65
  840. package/dist/chunk-P54PZ72L.mjs.map +0 -1
  841. package/dist/chunk-PNAFXOZC.mjs +0 -69
  842. package/dist/chunk-PNAFXOZC.mjs.map +0 -1
  843. package/dist/chunk-QTFOUK4H.js +0 -107
  844. package/dist/chunk-QTFOUK4H.js.map +0 -1
  845. package/dist/chunk-QW2ZHKPC.mjs +0 -64
  846. package/dist/chunk-QW2ZHKPC.mjs.map +0 -1
  847. package/dist/chunk-R2256VSD.js +0 -80
  848. package/dist/chunk-R2256VSD.js.map +0 -1
  849. package/dist/chunk-S4OSJ4ZN.js +0 -71
  850. package/dist/chunk-S4OSJ4ZN.js.map +0 -1
  851. package/dist/chunk-SWU5U5BB.mjs +0 -116
  852. package/dist/chunk-SWU5U5BB.mjs.map +0 -1
  853. package/dist/chunk-SYFTQAZG.mjs +0 -58
  854. package/dist/chunk-SYFTQAZG.mjs.map +0 -1
  855. package/dist/chunk-T5SPR27V.mjs +0 -64
  856. package/dist/chunk-T5SPR27V.mjs.map +0 -1
  857. package/dist/chunk-TD4W3AHI.mjs +0 -113
  858. package/dist/chunk-TD4W3AHI.mjs.map +0 -1
  859. package/dist/chunk-TMFXI5FH.mjs +0 -52
  860. package/dist/chunk-TMFXI5FH.mjs.map +0 -1
  861. package/dist/chunk-UJBXDDHN.mjs +0 -73
  862. package/dist/chunk-UJBXDDHN.mjs.map +0 -1
  863. package/dist/chunk-USLP5NY6.js +0 -69
  864. package/dist/chunk-USLP5NY6.js.map +0 -1
  865. package/dist/chunk-UU34Q42Q.js +0 -70
  866. package/dist/chunk-UU34Q42Q.js.map +0 -1
  867. package/dist/chunk-V4U6Q5NL.mjs +0 -68
  868. package/dist/chunk-V4U6Q5NL.mjs.map +0 -1
  869. package/dist/chunk-VIKQGO4W.mjs +0 -636
  870. package/dist/chunk-VIKQGO4W.mjs.map +0 -1
  871. package/dist/chunk-VWHER5XN.js +0 -65
  872. package/dist/chunk-VWHER5XN.js.map +0 -1
  873. package/dist/chunk-WBRTXAKP.js +0 -705
  874. package/dist/chunk-WN7XWKAS.mjs +0 -52
  875. package/dist/chunk-WN7XWKAS.mjs.map +0 -1
  876. package/dist/chunk-X3N4EVF7.mjs +0 -240
  877. package/dist/chunk-X3N4EVF7.mjs.map +0 -1
  878. package/dist/chunk-Y4YQSCNL.js +0 -65
  879. package/dist/chunk-Y4YQSCNL.js.map +0 -1
  880. package/dist/chunk-Y7NRTCAT.js +0 -78
  881. package/dist/chunk-Y7NRTCAT.js.map +0 -1
  882. package/dist/chunk-YDKAE7RM.mjs +0 -62
  883. package/dist/chunk-YDKAE7RM.mjs.map +0 -1
  884. package/dist/chunk-YN4ZS3R2.js +0 -120
  885. package/dist/chunk-YN4ZS3R2.js.map +0 -1
  886. package/src/ui/accessibility/axe-core.test.tsx +0 -139
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/useInterval/useInterval.ts"],"names":["useRef","useEffect"],"mappings":";;;;;AAcO,SAAS,WAAA,CACd,UACA,OAAA,EACM;AACN,EAAA,MAAM,WAAA,GAAcA,aAAO,QAAQ,CAAA;AAEnC,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,WAAA,CAAY,OAAA,GAAU,QAAA;AAAA,EACxB,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,EAAAA,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,WAAW,IAAA,EAAM;AACnB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,EAAA,GAAK,MAAA,CAAO,WAAA,CAAY,MAAM;AAClC,MAAA,WAAA,CAAY,OAAA,EAAQ;AAAA,IACtB,GAAG,OAAO,CAAA;AACV,IAAA,OAAO,MAAM;AACX,MAAA,MAAA,CAAO,cAAc,EAAE,CAAA;AAAA,IACzB,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AACd","file":"useInterval.js","sourcesContent":["\"use client\";\n\nimport { useEffect, useRef } from \"react\";\n\n/**\n * Declarative `setInterval`: runs `callback` every `delayMs` milliseconds with automatic cleanup.\n *\n * - The latest callback is kept in a ref, so a new inline function each render does not restart the timer.\n * - Pass `null` as the delay to pause the interval; pass a number again to resume.\n * - Changing `delayMs` clears the previous interval and starts a fresh one.\n *\n * @param callback - Function invoked on every tick.\n * @param delayMs - Interval in milliseconds, or `null` to pause.\n */\nexport function useInterval(\n callback: () => void,\n delayMs: number | null,\n): void {\n const callbackRef = useRef(callback);\n\n useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n useEffect(() => {\n if (delayMs == null) {\n return;\n }\n const id = window.setInterval(() => {\n callbackRef.current();\n }, delayMs);\n return () => {\n window.clearInterval(id);\n };\n }, [delayMs]);\n}\n"]}
@@ -0,0 +1,25 @@
1
+ "use client";
2
+ import '../chunk-J5LGTIGS.mjs';
3
+ import { useRef, useEffect } from 'react';
4
+
5
+ function useInterval(callback, delayMs) {
6
+ const callbackRef = useRef(callback);
7
+ useEffect(() => {
8
+ callbackRef.current = callback;
9
+ }, [callback]);
10
+ useEffect(() => {
11
+ if (delayMs == null) {
12
+ return;
13
+ }
14
+ const id = window.setInterval(() => {
15
+ callbackRef.current();
16
+ }, delayMs);
17
+ return () => {
18
+ window.clearInterval(id);
19
+ };
20
+ }, [delayMs]);
21
+ }
22
+
23
+ export { useInterval };
24
+ //# sourceMappingURL=useInterval.mjs.map
25
+ //# sourceMappingURL=useInterval.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/useInterval/useInterval.ts"],"names":[],"mappings":";;;AAcO,SAAS,WAAA,CACd,UACA,OAAA,EACM;AACN,EAAA,MAAM,WAAA,GAAc,OAAO,QAAQ,CAAA;AAEnC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,WAAA,CAAY,OAAA,GAAU,QAAA;AAAA,EACxB,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,WAAW,IAAA,EAAM;AACnB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,EAAA,GAAK,MAAA,CAAO,WAAA,CAAY,MAAM;AAClC,MAAA,WAAA,CAAY,OAAA,EAAQ;AAAA,IACtB,GAAG,OAAO,CAAA;AACV,IAAA,OAAO,MAAM;AACX,MAAA,MAAA,CAAO,cAAc,EAAE,CAAA;AAAA,IACzB,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AACd","file":"useInterval.mjs","sourcesContent":["\"use client\";\n\nimport { useEffect, useRef } from \"react\";\n\n/**\n * Declarative `setInterval`: runs `callback` every `delayMs` milliseconds with automatic cleanup.\n *\n * - The latest callback is kept in a ref, so a new inline function each render does not restart the timer.\n * - Pass `null` as the delay to pause the interval; pass a number again to resume.\n * - Changing `delayMs` clears the previous interval and starts a fresh one.\n *\n * @param callback - Function invoked on every tick.\n * @param delayMs - Interval in milliseconds, or `null` to pause.\n */\nexport function useInterval(\n callback: () => void,\n delayMs: number | null,\n): void {\n const callbackRef = useRef(callback);\n\n useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n useEffect(() => {\n if (delayMs == null) {\n return;\n }\n const id = window.setInterval(() => {\n callbackRef.current();\n }, delayMs);\n return () => {\n window.clearInterval(id);\n };\n }, [delayMs]);\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export { useKeyPress } from "./useKeyPress";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useKeyPress/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Tracks whether a keyboard key (or any of several keys) is currently held down.
3
+ *
4
+ * - Matches against `event.key`, case-insensitively (`"k"`, `"Escape"`, `"ArrowUp"`, …).
5
+ * - Listens on `window` for `keydown` / `keyup`, and clears on window `blur` so the
6
+ * state cannot get stuck when focus leaves the page mid-press.
7
+ * - When an array of keys is watched, `pressed` remains `true` as long as ANY of the
8
+ * target keys are still held — releasing one watched key while another is held does
9
+ * not reset the state.
10
+ *
11
+ * @param targetKey - A key name or array of key names to watch.
12
+ * @returns `true` while one of the target keys is pressed.
13
+ */
14
+ export declare function useKeyPress(targetKey: string | string[]): boolean;
15
+ //# sourceMappingURL=useKeyPress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useKeyPress.d.ts","sourceRoot":"","sources":["../../../src/hooks/useKeyPress/useKeyPress.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CA+CjE"}
@@ -0,0 +1,47 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ require('../chunk-PZ5AY32C.js');
5
+ var react = require('react');
6
+
7
+ function useKeyPress(targetKey) {
8
+ const [pressed, setPressed] = react.useState(false);
9
+ const normalizedKey = (Array.isArray(targetKey) ? targetKey : [targetKey]).map((k) => k.toLowerCase()).sort().join("\0");
10
+ react.useEffect(() => {
11
+ const keys = normalizedKey.split("\0");
12
+ const pressedKeys = /* @__PURE__ */ new Set();
13
+ const onKeyDown = (event) => {
14
+ const key = event.key.toLowerCase();
15
+ if (keys.includes(key)) {
16
+ pressedKeys.add(key);
17
+ setPressed(true);
18
+ }
19
+ };
20
+ const onKeyUp = (event) => {
21
+ const key = event.key.toLowerCase();
22
+ if (keys.includes(key)) {
23
+ pressedKeys.delete(key);
24
+ setPressed(pressedKeys.size > 0);
25
+ }
26
+ };
27
+ const onBlur = () => {
28
+ pressedKeys.clear();
29
+ setPressed(false);
30
+ };
31
+ window.addEventListener("keydown", onKeyDown);
32
+ window.addEventListener("keyup", onKeyUp);
33
+ window.addEventListener("blur", onBlur);
34
+ return () => {
35
+ pressedKeys.clear();
36
+ setPressed(false);
37
+ window.removeEventListener("keydown", onKeyDown);
38
+ window.removeEventListener("keyup", onKeyUp);
39
+ window.removeEventListener("blur", onBlur);
40
+ };
41
+ }, [normalizedKey]);
42
+ return pressed;
43
+ }
44
+
45
+ exports.useKeyPress = useKeyPress;
46
+ //# sourceMappingURL=useKeyPress.js.map
47
+ //# sourceMappingURL=useKeyPress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/useKeyPress/useKeyPress.ts"],"names":["useState","useEffect"],"mappings":";;;;;AAiBO,SAAS,YAAY,SAAA,EAAuC;AACjE,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,eAAS,KAAK,CAAA;AAI5C,EAAA,MAAM,iBAAiB,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA,GAAI,SAAA,GAAY,CAAC,SAAS,CAAA,EACrE,IAAI,CAAC,CAAA,KAAM,EAAE,WAAA,EAAa,EAC1B,IAAA,EAAK,CACL,KAAK,IAAM,CAAA;AAEd,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,MAAM,IAAA,GAAO,aAAA,CAAc,KAAA,CAAM,IAAM,CAAA;AAGvC,IAAA,MAAM,WAAA,uBAAkB,GAAA,EAAY;AAEpC,IAAA,MAAM,SAAA,GAAY,CAAC,KAAA,KAAyB;AAC1C,MAAA,MAAM,GAAA,GAAM,KAAA,CAAM,GAAA,CAAI,WAAA,EAAY;AAClC,MAAA,IAAI,IAAA,CAAK,QAAA,CAAS,GAAG,CAAA,EAAG;AACtB,QAAA,WAAA,CAAY,IAAI,GAAG,CAAA;AACnB,QAAA,UAAA,CAAW,IAAI,CAAA;AAAA,MACjB;AAAA,IACF,CAAA;AACA,IAAA,MAAM,OAAA,GAAU,CAAC,KAAA,KAAyB;AACxC,MAAA,MAAM,GAAA,GAAM,KAAA,CAAM,GAAA,CAAI,WAAA,EAAY;AAClC,MAAA,IAAI,IAAA,CAAK,QAAA,CAAS,GAAG,CAAA,EAAG;AACtB,QAAA,WAAA,CAAY,OAAO,GAAG,CAAA;AACtB,QAAA,UAAA,CAAW,WAAA,CAAY,OAAO,CAAC,CAAA;AAAA,MACjC;AAAA,IACF,CAAA;AACA,IAAA,MAAM,SAAS,MAAM;AACnB,MAAA,WAAA,CAAY,KAAA,EAAM;AAClB,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB,CAAA;AACA,IAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,SAAS,CAAA;AAC5C,IAAA,MAAA,CAAO,gBAAA,CAAiB,SAAS,OAAO,CAAA;AACxC,IAAA,MAAA,CAAO,gBAAA,CAAiB,QAAQ,MAAM,CAAA;AACtC,IAAA,OAAO,MAAM;AACX,MAAA,WAAA,CAAY,KAAA,EAAM;AAClB,MAAA,UAAA,CAAW,KAAK,CAAA;AAChB,MAAA,MAAA,CAAO,mBAAA,CAAoB,WAAW,SAAS,CAAA;AAC/C,MAAA,MAAA,CAAO,mBAAA,CAAoB,SAAS,OAAO,CAAA;AAC3C,MAAA,MAAA,CAAO,mBAAA,CAAoB,QAAQ,MAAM,CAAA;AAAA,IAC3C,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,aAAa,CAAC,CAAA;AAElB,EAAA,OAAO,OAAA;AACT","file":"useKeyPress.js","sourcesContent":["\"use client\";\n\nimport { useEffect, useState } from \"react\";\n\n/**\n * Tracks whether a keyboard key (or any of several keys) is currently held down.\n *\n * - Matches against `event.key`, case-insensitively (`\"k\"`, `\"Escape\"`, `\"ArrowUp\"`, …).\n * - Listens on `window` for `keydown` / `keyup`, and clears on window `blur` so the\n * state cannot get stuck when focus leaves the page mid-press.\n * - When an array of keys is watched, `pressed` remains `true` as long as ANY of the\n * target keys are still held — releasing one watched key while another is held does\n * not reset the state.\n *\n * @param targetKey - A key name or array of key names to watch.\n * @returns `true` while one of the target keys is pressed.\n */\nexport function useKeyPress(targetKey: string | string[]): boolean {\n const [pressed, setPressed] = useState(false);\n\n // Build a stable string key from the sorted target array.\n // Use \\x00 as separator (not \"|\") so the literal \"|\" key is handled correctly.\n const normalizedKey = (Array.isArray(targetKey) ? targetKey : [targetKey])\n .map((k) => k.toLowerCase())\n .sort()\n .join(\"\\x00\");\n\n useEffect(() => {\n const keys = normalizedKey.split(\"\\x00\");\n // Local Set tracks which target keys are currently pressed so that releasing\n // one key while another is still held does not incorrectly clear `pressed`.\n const pressedKeys = new Set<string>();\n\n const onKeyDown = (event: KeyboardEvent) => {\n const key = event.key.toLowerCase();\n if (keys.includes(key)) {\n pressedKeys.add(key);\n setPressed(true);\n }\n };\n const onKeyUp = (event: KeyboardEvent) => {\n const key = event.key.toLowerCase();\n if (keys.includes(key)) {\n pressedKeys.delete(key);\n setPressed(pressedKeys.size > 0);\n }\n };\n const onBlur = () => {\n pressedKeys.clear();\n setPressed(false);\n };\n window.addEventListener(\"keydown\", onKeyDown);\n window.addEventListener(\"keyup\", onKeyUp);\n window.addEventListener(\"blur\", onBlur);\n return () => {\n pressedKeys.clear();\n setPressed(false);\n window.removeEventListener(\"keydown\", onKeyDown);\n window.removeEventListener(\"keyup\", onKeyUp);\n window.removeEventListener(\"blur\", onBlur);\n };\n }, [normalizedKey]);\n\n return pressed;\n}\n"]}
@@ -0,0 +1,45 @@
1
+ "use client";
2
+ import '../chunk-J5LGTIGS.mjs';
3
+ import { useState, useEffect } from 'react';
4
+
5
+ function useKeyPress(targetKey) {
6
+ const [pressed, setPressed] = useState(false);
7
+ const normalizedKey = (Array.isArray(targetKey) ? targetKey : [targetKey]).map((k) => k.toLowerCase()).sort().join("\0");
8
+ useEffect(() => {
9
+ const keys = normalizedKey.split("\0");
10
+ const pressedKeys = /* @__PURE__ */ new Set();
11
+ const onKeyDown = (event) => {
12
+ const key = event.key.toLowerCase();
13
+ if (keys.includes(key)) {
14
+ pressedKeys.add(key);
15
+ setPressed(true);
16
+ }
17
+ };
18
+ const onKeyUp = (event) => {
19
+ const key = event.key.toLowerCase();
20
+ if (keys.includes(key)) {
21
+ pressedKeys.delete(key);
22
+ setPressed(pressedKeys.size > 0);
23
+ }
24
+ };
25
+ const onBlur = () => {
26
+ pressedKeys.clear();
27
+ setPressed(false);
28
+ };
29
+ window.addEventListener("keydown", onKeyDown);
30
+ window.addEventListener("keyup", onKeyUp);
31
+ window.addEventListener("blur", onBlur);
32
+ return () => {
33
+ pressedKeys.clear();
34
+ setPressed(false);
35
+ window.removeEventListener("keydown", onKeyDown);
36
+ window.removeEventListener("keyup", onKeyUp);
37
+ window.removeEventListener("blur", onBlur);
38
+ };
39
+ }, [normalizedKey]);
40
+ return pressed;
41
+ }
42
+
43
+ export { useKeyPress };
44
+ //# sourceMappingURL=useKeyPress.mjs.map
45
+ //# sourceMappingURL=useKeyPress.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/useKeyPress/useKeyPress.ts"],"names":[],"mappings":";;;AAiBO,SAAS,YAAY,SAAA,EAAuC;AACjE,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAI5C,EAAA,MAAM,iBAAiB,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA,GAAI,SAAA,GAAY,CAAC,SAAS,CAAA,EACrE,IAAI,CAAC,CAAA,KAAM,EAAE,WAAA,EAAa,EAC1B,IAAA,EAAK,CACL,KAAK,IAAM,CAAA;AAEd,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,IAAA,GAAO,aAAA,CAAc,KAAA,CAAM,IAAM,CAAA;AAGvC,IAAA,MAAM,WAAA,uBAAkB,GAAA,EAAY;AAEpC,IAAA,MAAM,SAAA,GAAY,CAAC,KAAA,KAAyB;AAC1C,MAAA,MAAM,GAAA,GAAM,KAAA,CAAM,GAAA,CAAI,WAAA,EAAY;AAClC,MAAA,IAAI,IAAA,CAAK,QAAA,CAAS,GAAG,CAAA,EAAG;AACtB,QAAA,WAAA,CAAY,IAAI,GAAG,CAAA;AACnB,QAAA,UAAA,CAAW,IAAI,CAAA;AAAA,MACjB;AAAA,IACF,CAAA;AACA,IAAA,MAAM,OAAA,GAAU,CAAC,KAAA,KAAyB;AACxC,MAAA,MAAM,GAAA,GAAM,KAAA,CAAM,GAAA,CAAI,WAAA,EAAY;AAClC,MAAA,IAAI,IAAA,CAAK,QAAA,CAAS,GAAG,CAAA,EAAG;AACtB,QAAA,WAAA,CAAY,OAAO,GAAG,CAAA;AACtB,QAAA,UAAA,CAAW,WAAA,CAAY,OAAO,CAAC,CAAA;AAAA,MACjC;AAAA,IACF,CAAA;AACA,IAAA,MAAM,SAAS,MAAM;AACnB,MAAA,WAAA,CAAY,KAAA,EAAM;AAClB,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB,CAAA;AACA,IAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,SAAS,CAAA;AAC5C,IAAA,MAAA,CAAO,gBAAA,CAAiB,SAAS,OAAO,CAAA;AACxC,IAAA,MAAA,CAAO,gBAAA,CAAiB,QAAQ,MAAM,CAAA;AACtC,IAAA,OAAO,MAAM;AACX,MAAA,WAAA,CAAY,KAAA,EAAM;AAClB,MAAA,UAAA,CAAW,KAAK,CAAA;AAChB,MAAA,MAAA,CAAO,mBAAA,CAAoB,WAAW,SAAS,CAAA;AAC/C,MAAA,MAAA,CAAO,mBAAA,CAAoB,SAAS,OAAO,CAAA;AAC3C,MAAA,MAAA,CAAO,mBAAA,CAAoB,QAAQ,MAAM,CAAA;AAAA,IAC3C,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,aAAa,CAAC,CAAA;AAElB,EAAA,OAAO,OAAA;AACT","file":"useKeyPress.mjs","sourcesContent":["\"use client\";\n\nimport { useEffect, useState } from \"react\";\n\n/**\n * Tracks whether a keyboard key (or any of several keys) is currently held down.\n *\n * - Matches against `event.key`, case-insensitively (`\"k\"`, `\"Escape\"`, `\"ArrowUp\"`, …).\n * - Listens on `window` for `keydown` / `keyup`, and clears on window `blur` so the\n * state cannot get stuck when focus leaves the page mid-press.\n * - When an array of keys is watched, `pressed` remains `true` as long as ANY of the\n * target keys are still held — releasing one watched key while another is held does\n * not reset the state.\n *\n * @param targetKey - A key name or array of key names to watch.\n * @returns `true` while one of the target keys is pressed.\n */\nexport function useKeyPress(targetKey: string | string[]): boolean {\n const [pressed, setPressed] = useState(false);\n\n // Build a stable string key from the sorted target array.\n // Use \\x00 as separator (not \"|\") so the literal \"|\" key is handled correctly.\n const normalizedKey = (Array.isArray(targetKey) ? targetKey : [targetKey])\n .map((k) => k.toLowerCase())\n .sort()\n .join(\"\\x00\");\n\n useEffect(() => {\n const keys = normalizedKey.split(\"\\x00\");\n // Local Set tracks which target keys are currently pressed so that releasing\n // one key while another is still held does not incorrectly clear `pressed`.\n const pressedKeys = new Set<string>();\n\n const onKeyDown = (event: KeyboardEvent) => {\n const key = event.key.toLowerCase();\n if (keys.includes(key)) {\n pressedKeys.add(key);\n setPressed(true);\n }\n };\n const onKeyUp = (event: KeyboardEvent) => {\n const key = event.key.toLowerCase();\n if (keys.includes(key)) {\n pressedKeys.delete(key);\n setPressed(pressedKeys.size > 0);\n }\n };\n const onBlur = () => {\n pressedKeys.clear();\n setPressed(false);\n };\n window.addEventListener(\"keydown\", onKeyDown);\n window.addEventListener(\"keyup\", onKeyUp);\n window.addEventListener(\"blur\", onBlur);\n return () => {\n pressedKeys.clear();\n setPressed(false);\n window.removeEventListener(\"keydown\", onKeyDown);\n window.removeEventListener(\"keyup\", onKeyUp);\n window.removeEventListener(\"blur\", onBlur);\n };\n }, [normalizedKey]);\n\n return pressed;\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export { useLongPress, type UseLongPressHandlers, type UseLongPressOptions, } from "./useLongPress";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useLongPress/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,GACzB,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,46 @@
1
+ import type { MouseEvent as ReactMouseEvent, PointerEvent as ReactPointerEvent } from "react";
2
+ export type UseLongPressOptions = {
3
+ /** Hold duration in milliseconds before the press counts as "long" (default `500`). */
4
+ thresholdMs?: number;
5
+ /** Pointer travel in pixels that cancels the press (default `10`). */
6
+ moveTolerancePx?: number;
7
+ /** Called when the pointer goes down (press attempt starts). */
8
+ onStart?: (event: ReactPointerEvent) => void;
9
+ /** Called on release after a long press fired. */
10
+ onFinish?: (event: ReactPointerEvent) => void;
11
+ /** Called when the press is released or cancelled before the threshold. */
12
+ onCancel?: (event: ReactPointerEvent) => void;
13
+ };
14
+ export type UseLongPressHandlers = {
15
+ onPointerDown: (event: ReactPointerEvent) => void;
16
+ onPointerMove: (event: ReactPointerEvent) => void;
17
+ onPointerUp: (event: ReactPointerEvent) => void;
18
+ onPointerLeave: (event: ReactPointerEvent) => void;
19
+ /** Handles browser-level pointer cancellation (e.g. system interruption, scroll takeover). */
20
+ onPointerCancel: (event: ReactPointerEvent) => void;
21
+ /**
22
+ * Suppresses the synthetic `click` event that fires after a successful long press.
23
+ * Spread alongside the other handlers to prevent unintended navigation or button actions.
24
+ */
25
+ onClick: (event: ReactMouseEvent) => void;
26
+ };
27
+ /**
28
+ * Long-press gesture detection built on pointer events, so it works for mouse, touch, and pen.
29
+ *
30
+ * Spread the returned handlers onto the target element. After the pointer is held
31
+ * `thresholdMs` without travelling more than `moveTolerancePx`, `callback` fires once;
32
+ * releasing afterwards calls `onFinish`, while early release / movement / leaving the
33
+ * element calls `onCancel`.
34
+ *
35
+ * Only the primary button (button 0 / left click / first touch contact) starts a long press;
36
+ * right and middle mouse buttons are ignored.
37
+ *
38
+ * Pair with `touch-action` / `select-none` CSS on touch targets to suppress native
39
+ * scrolling or text selection during the hold where needed.
40
+ *
41
+ * @param callback - Invoked once when the press crosses the threshold.
42
+ * @param options - {@link UseLongPressOptions}
43
+ * @returns Spreadable pointer handlers ({@link UseLongPressHandlers}).
44
+ */
45
+ export declare function useLongPress(callback: (event: ReactPointerEvent) => void, options?: UseLongPressOptions): UseLongPressHandlers;
46
+ //# sourceMappingURL=useLongPress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLongPress.d.ts","sourceRoot":"","sources":["../../../src/hooks/useLongPress/useLongPress.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,UAAU,IAAI,eAAe,EAC7B,YAAY,IAAI,iBAAiB,EAClC,MAAM,OAAO,CAAC;AAGf,MAAM,MAAM,mBAAmB,GAAG;IAChC,uFAAuF;IACvF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gEAAgE;IAChE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7C,kDAAkD;IAClD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9C,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,aAAa,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAClD,aAAa,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAClD,WAAW,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAChD,cAAc,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACnD,8FAA8F;IAC9F,eAAe,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACpD;;;OAGG;IACH,OAAO,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;CAC3C,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,EAC5C,OAAO,GAAE,mBAAwB,GAChC,oBAAoB,CAwHtB"}
@@ -0,0 +1,116 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ require('../chunk-PZ5AY32C.js');
5
+ var react = require('react');
6
+
7
+ function useLongPress(callback, options = {}) {
8
+ const {
9
+ thresholdMs = 500,
10
+ moveTolerancePx = 10,
11
+ onStart,
12
+ onFinish,
13
+ onCancel
14
+ } = options;
15
+ const callbackRef = react.useRef(callback);
16
+ const onStartRef = react.useRef(onStart);
17
+ const onFinishRef = react.useRef(onFinish);
18
+ const onCancelRef = react.useRef(onCancel);
19
+ react.useEffect(() => {
20
+ callbackRef.current = callback;
21
+ onStartRef.current = onStart;
22
+ onFinishRef.current = onFinish;
23
+ onCancelRef.current = onCancel;
24
+ }, [callback, onCancel, onFinish, onStart]);
25
+ const timeoutRef = react.useRef(void 0);
26
+ const triggeredRef = react.useRef(false);
27
+ const pressingRef = react.useRef(false);
28
+ const originRef = react.useRef({ x: 0, y: 0 });
29
+ const stopTimer = react.useCallback(() => {
30
+ if (timeoutRef.current !== void 0) {
31
+ window.clearTimeout(timeoutRef.current);
32
+ timeoutRef.current = void 0;
33
+ }
34
+ }, []);
35
+ react.useEffect(() => stopTimer, [stopTimer]);
36
+ const cancel = react.useCallback(
37
+ (event) => {
38
+ if (!pressingRef.current) {
39
+ return;
40
+ }
41
+ pressingRef.current = false;
42
+ stopTimer();
43
+ if (!triggeredRef.current) {
44
+ onCancelRef.current?.(event);
45
+ }
46
+ },
47
+ [stopTimer]
48
+ );
49
+ const onPointerDown = react.useCallback(
50
+ (event) => {
51
+ if (event.button > 0) {
52
+ return;
53
+ }
54
+ pressingRef.current = true;
55
+ triggeredRef.current = false;
56
+ originRef.current = { x: event.clientX, y: event.clientY };
57
+ onStartRef.current?.(event);
58
+ stopTimer();
59
+ timeoutRef.current = window.setTimeout(() => {
60
+ timeoutRef.current = void 0;
61
+ if (pressingRef.current) {
62
+ triggeredRef.current = true;
63
+ callbackRef.current(event);
64
+ }
65
+ }, thresholdMs);
66
+ },
67
+ [stopTimer, thresholdMs]
68
+ );
69
+ const onPointerMove = react.useCallback(
70
+ (event) => {
71
+ if (!pressingRef.current || triggeredRef.current) {
72
+ return;
73
+ }
74
+ const dx = event.clientX - originRef.current.x;
75
+ const dy = event.clientY - originRef.current.y;
76
+ if (Math.hypot(dx, dy) > moveTolerancePx) {
77
+ cancel(event);
78
+ }
79
+ },
80
+ [cancel, moveTolerancePx]
81
+ );
82
+ const onPointerUp = react.useCallback(
83
+ (event) => {
84
+ if (!pressingRef.current) {
85
+ return;
86
+ }
87
+ const triggered = triggeredRef.current;
88
+ pressingRef.current = false;
89
+ stopTimer();
90
+ if (triggered) {
91
+ onFinishRef.current?.(event);
92
+ } else {
93
+ onCancelRef.current?.(event);
94
+ }
95
+ },
96
+ [stopTimer]
97
+ );
98
+ const onClick = react.useCallback((event) => {
99
+ if (triggeredRef.current) {
100
+ event.preventDefault();
101
+ triggeredRef.current = false;
102
+ }
103
+ }, []);
104
+ return {
105
+ onPointerDown,
106
+ onPointerMove,
107
+ onPointerUp,
108
+ onPointerLeave: cancel,
109
+ onPointerCancel: cancel,
110
+ onClick
111
+ };
112
+ }
113
+
114
+ exports.useLongPress = useLongPress;
115
+ //# sourceMappingURL=useLongPress.js.map
116
+ //# sourceMappingURL=useLongPress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/useLongPress/useLongPress.ts"],"names":["useRef","useEffect","useCallback"],"mappings":"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","file":"useLongPress.js","sourcesContent":["\"use client\";\n\nimport type {\n MouseEvent as ReactMouseEvent,\n PointerEvent as ReactPointerEvent,\n} from \"react\";\nimport { useCallback, useEffect, useRef } from \"react\";\n\nexport type UseLongPressOptions = {\n /** Hold duration in milliseconds before the press counts as \"long\" (default `500`). */\n thresholdMs?: number;\n /** Pointer travel in pixels that cancels the press (default `10`). */\n moveTolerancePx?: number;\n /** Called when the pointer goes down (press attempt starts). */\n onStart?: (event: ReactPointerEvent) => void;\n /** Called on release after a long press fired. */\n onFinish?: (event: ReactPointerEvent) => void;\n /** Called when the press is released or cancelled before the threshold. */\n onCancel?: (event: ReactPointerEvent) => void;\n};\n\nexport type UseLongPressHandlers = {\n onPointerDown: (event: ReactPointerEvent) => void;\n onPointerMove: (event: ReactPointerEvent) => void;\n onPointerUp: (event: ReactPointerEvent) => void;\n onPointerLeave: (event: ReactPointerEvent) => void;\n /** Handles browser-level pointer cancellation (e.g. system interruption, scroll takeover). */\n onPointerCancel: (event: ReactPointerEvent) => void;\n /**\n * Suppresses the synthetic `click` event that fires after a successful long press.\n * Spread alongside the other handlers to prevent unintended navigation or button actions.\n */\n onClick: (event: ReactMouseEvent) => void;\n};\n\n/**\n * Long-press gesture detection built on pointer events, so it works for mouse, touch, and pen.\n *\n * Spread the returned handlers onto the target element. After the pointer is held\n * `thresholdMs` without travelling more than `moveTolerancePx`, `callback` fires once;\n * releasing afterwards calls `onFinish`, while early release / movement / leaving the\n * element calls `onCancel`.\n *\n * Only the primary button (button 0 / left click / first touch contact) starts a long press;\n * right and middle mouse buttons are ignored.\n *\n * Pair with `touch-action` / `select-none` CSS on touch targets to suppress native\n * scrolling or text selection during the hold where needed.\n *\n * @param callback - Invoked once when the press crosses the threshold.\n * @param options - {@link UseLongPressOptions}\n * @returns Spreadable pointer handlers ({@link UseLongPressHandlers}).\n */\nexport function useLongPress(\n callback: (event: ReactPointerEvent) => void,\n options: UseLongPressOptions = {},\n): UseLongPressHandlers {\n const {\n thresholdMs = 500,\n moveTolerancePx = 10,\n onStart,\n onFinish,\n onCancel,\n } = options;\n\n const callbackRef = useRef(callback);\n const onStartRef = useRef(onStart);\n const onFinishRef = useRef(onFinish);\n const onCancelRef = useRef(onCancel);\n\n useEffect(() => {\n callbackRef.current = callback;\n onStartRef.current = onStart;\n onFinishRef.current = onFinish;\n onCancelRef.current = onCancel;\n }, [callback, onCancel, onFinish, onStart]);\n\n const timeoutRef = useRef<number | undefined>(undefined);\n const triggeredRef = useRef(false);\n const pressingRef = useRef(false);\n const originRef = useRef({ x: 0, y: 0 });\n\n const stopTimer = useCallback(() => {\n if (timeoutRef.current !== undefined) {\n window.clearTimeout(timeoutRef.current);\n timeoutRef.current = undefined;\n }\n }, []);\n\n useEffect(() => stopTimer, [stopTimer]);\n\n const cancel = useCallback(\n (event: ReactPointerEvent) => {\n if (!pressingRef.current) {\n return;\n }\n pressingRef.current = false;\n stopTimer();\n if (!triggeredRef.current) {\n onCancelRef.current?.(event);\n }\n },\n [stopTimer],\n );\n\n const onPointerDown = useCallback(\n (event: ReactPointerEvent) => {\n // Only respond to the primary button (left click / first touch contact).\n // event.button > 0 catches right (2) and middle (1) mouse buttons.\n if (event.button > 0) {\n return;\n }\n pressingRef.current = true;\n triggeredRef.current = false;\n originRef.current = { x: event.clientX, y: event.clientY };\n onStartRef.current?.(event);\n stopTimer();\n timeoutRef.current = window.setTimeout(() => {\n timeoutRef.current = undefined;\n if (pressingRef.current) {\n triggeredRef.current = true;\n callbackRef.current(event);\n }\n }, thresholdMs);\n },\n [stopTimer, thresholdMs],\n );\n\n const onPointerMove = useCallback(\n (event: ReactPointerEvent) => {\n if (!pressingRef.current || triggeredRef.current) {\n return;\n }\n const dx = event.clientX - originRef.current.x;\n const dy = event.clientY - originRef.current.y;\n if (Math.hypot(dx, dy) > moveTolerancePx) {\n cancel(event);\n }\n },\n [cancel, moveTolerancePx],\n );\n\n const onPointerUp = useCallback(\n (event: ReactPointerEvent) => {\n if (!pressingRef.current) {\n return;\n }\n const triggered = triggeredRef.current;\n pressingRef.current = false;\n stopTimer();\n if (triggered) {\n onFinishRef.current?.(event);\n } else {\n onCancelRef.current?.(event);\n }\n },\n [stopTimer],\n );\n\n // After a successful long press the browser fires a synthetic `click` event on pointer up.\n // This handler suppresses it so navigation and button actions aren't triggered unexpectedly.\n const onClick = useCallback((event: ReactMouseEvent) => {\n if (triggeredRef.current) {\n event.preventDefault();\n triggeredRef.current = false;\n }\n }, []);\n\n return {\n onPointerDown,\n onPointerMove,\n onPointerUp,\n onPointerLeave: cancel,\n onPointerCancel: cancel,\n onClick,\n };\n}\n"]}
@@ -0,0 +1,114 @@
1
+ "use client";
2
+ import '../chunk-J5LGTIGS.mjs';
3
+ import { useRef, useEffect, useCallback } from 'react';
4
+
5
+ function useLongPress(callback, options = {}) {
6
+ const {
7
+ thresholdMs = 500,
8
+ moveTolerancePx = 10,
9
+ onStart,
10
+ onFinish,
11
+ onCancel
12
+ } = options;
13
+ const callbackRef = useRef(callback);
14
+ const onStartRef = useRef(onStart);
15
+ const onFinishRef = useRef(onFinish);
16
+ const onCancelRef = useRef(onCancel);
17
+ useEffect(() => {
18
+ callbackRef.current = callback;
19
+ onStartRef.current = onStart;
20
+ onFinishRef.current = onFinish;
21
+ onCancelRef.current = onCancel;
22
+ }, [callback, onCancel, onFinish, onStart]);
23
+ const timeoutRef = useRef(void 0);
24
+ const triggeredRef = useRef(false);
25
+ const pressingRef = useRef(false);
26
+ const originRef = useRef({ x: 0, y: 0 });
27
+ const stopTimer = useCallback(() => {
28
+ if (timeoutRef.current !== void 0) {
29
+ window.clearTimeout(timeoutRef.current);
30
+ timeoutRef.current = void 0;
31
+ }
32
+ }, []);
33
+ useEffect(() => stopTimer, [stopTimer]);
34
+ const cancel = useCallback(
35
+ (event) => {
36
+ if (!pressingRef.current) {
37
+ return;
38
+ }
39
+ pressingRef.current = false;
40
+ stopTimer();
41
+ if (!triggeredRef.current) {
42
+ onCancelRef.current?.(event);
43
+ }
44
+ },
45
+ [stopTimer]
46
+ );
47
+ const onPointerDown = useCallback(
48
+ (event) => {
49
+ if (event.button > 0) {
50
+ return;
51
+ }
52
+ pressingRef.current = true;
53
+ triggeredRef.current = false;
54
+ originRef.current = { x: event.clientX, y: event.clientY };
55
+ onStartRef.current?.(event);
56
+ stopTimer();
57
+ timeoutRef.current = window.setTimeout(() => {
58
+ timeoutRef.current = void 0;
59
+ if (pressingRef.current) {
60
+ triggeredRef.current = true;
61
+ callbackRef.current(event);
62
+ }
63
+ }, thresholdMs);
64
+ },
65
+ [stopTimer, thresholdMs]
66
+ );
67
+ const onPointerMove = useCallback(
68
+ (event) => {
69
+ if (!pressingRef.current || triggeredRef.current) {
70
+ return;
71
+ }
72
+ const dx = event.clientX - originRef.current.x;
73
+ const dy = event.clientY - originRef.current.y;
74
+ if (Math.hypot(dx, dy) > moveTolerancePx) {
75
+ cancel(event);
76
+ }
77
+ },
78
+ [cancel, moveTolerancePx]
79
+ );
80
+ const onPointerUp = useCallback(
81
+ (event) => {
82
+ if (!pressingRef.current) {
83
+ return;
84
+ }
85
+ const triggered = triggeredRef.current;
86
+ pressingRef.current = false;
87
+ stopTimer();
88
+ if (triggered) {
89
+ onFinishRef.current?.(event);
90
+ } else {
91
+ onCancelRef.current?.(event);
92
+ }
93
+ },
94
+ [stopTimer]
95
+ );
96
+ const onClick = useCallback((event) => {
97
+ if (triggeredRef.current) {
98
+ event.preventDefault();
99
+ triggeredRef.current = false;
100
+ }
101
+ }, []);
102
+ return {
103
+ onPointerDown,
104
+ onPointerMove,
105
+ onPointerUp,
106
+ onPointerLeave: cancel,
107
+ onPointerCancel: cancel,
108
+ onClick
109
+ };
110
+ }
111
+
112
+ export { useLongPress };
113
+ //# sourceMappingURL=useLongPress.mjs.map
114
+ //# sourceMappingURL=useLongPress.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/useLongPress/useLongPress.ts"],"names":[],"mappings":"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","file":"useLongPress.mjs","sourcesContent":["\"use client\";\n\nimport type {\n MouseEvent as ReactMouseEvent,\n PointerEvent as ReactPointerEvent,\n} from \"react\";\nimport { useCallback, useEffect, useRef } from \"react\";\n\nexport type UseLongPressOptions = {\n /** Hold duration in milliseconds before the press counts as \"long\" (default `500`). */\n thresholdMs?: number;\n /** Pointer travel in pixels that cancels the press (default `10`). */\n moveTolerancePx?: number;\n /** Called when the pointer goes down (press attempt starts). */\n onStart?: (event: ReactPointerEvent) => void;\n /** Called on release after a long press fired. */\n onFinish?: (event: ReactPointerEvent) => void;\n /** Called when the press is released or cancelled before the threshold. */\n onCancel?: (event: ReactPointerEvent) => void;\n};\n\nexport type UseLongPressHandlers = {\n onPointerDown: (event: ReactPointerEvent) => void;\n onPointerMove: (event: ReactPointerEvent) => void;\n onPointerUp: (event: ReactPointerEvent) => void;\n onPointerLeave: (event: ReactPointerEvent) => void;\n /** Handles browser-level pointer cancellation (e.g. system interruption, scroll takeover). */\n onPointerCancel: (event: ReactPointerEvent) => void;\n /**\n * Suppresses the synthetic `click` event that fires after a successful long press.\n * Spread alongside the other handlers to prevent unintended navigation or button actions.\n */\n onClick: (event: ReactMouseEvent) => void;\n};\n\n/**\n * Long-press gesture detection built on pointer events, so it works for mouse, touch, and pen.\n *\n * Spread the returned handlers onto the target element. After the pointer is held\n * `thresholdMs` without travelling more than `moveTolerancePx`, `callback` fires once;\n * releasing afterwards calls `onFinish`, while early release / movement / leaving the\n * element calls `onCancel`.\n *\n * Only the primary button (button 0 / left click / first touch contact) starts a long press;\n * right and middle mouse buttons are ignored.\n *\n * Pair with `touch-action` / `select-none` CSS on touch targets to suppress native\n * scrolling or text selection during the hold where needed.\n *\n * @param callback - Invoked once when the press crosses the threshold.\n * @param options - {@link UseLongPressOptions}\n * @returns Spreadable pointer handlers ({@link UseLongPressHandlers}).\n */\nexport function useLongPress(\n callback: (event: ReactPointerEvent) => void,\n options: UseLongPressOptions = {},\n): UseLongPressHandlers {\n const {\n thresholdMs = 500,\n moveTolerancePx = 10,\n onStart,\n onFinish,\n onCancel,\n } = options;\n\n const callbackRef = useRef(callback);\n const onStartRef = useRef(onStart);\n const onFinishRef = useRef(onFinish);\n const onCancelRef = useRef(onCancel);\n\n useEffect(() => {\n callbackRef.current = callback;\n onStartRef.current = onStart;\n onFinishRef.current = onFinish;\n onCancelRef.current = onCancel;\n }, [callback, onCancel, onFinish, onStart]);\n\n const timeoutRef = useRef<number | undefined>(undefined);\n const triggeredRef = useRef(false);\n const pressingRef = useRef(false);\n const originRef = useRef({ x: 0, y: 0 });\n\n const stopTimer = useCallback(() => {\n if (timeoutRef.current !== undefined) {\n window.clearTimeout(timeoutRef.current);\n timeoutRef.current = undefined;\n }\n }, []);\n\n useEffect(() => stopTimer, [stopTimer]);\n\n const cancel = useCallback(\n (event: ReactPointerEvent) => {\n if (!pressingRef.current) {\n return;\n }\n pressingRef.current = false;\n stopTimer();\n if (!triggeredRef.current) {\n onCancelRef.current?.(event);\n }\n },\n [stopTimer],\n );\n\n const onPointerDown = useCallback(\n (event: ReactPointerEvent) => {\n // Only respond to the primary button (left click / first touch contact).\n // event.button > 0 catches right (2) and middle (1) mouse buttons.\n if (event.button > 0) {\n return;\n }\n pressingRef.current = true;\n triggeredRef.current = false;\n originRef.current = { x: event.clientX, y: event.clientY };\n onStartRef.current?.(event);\n stopTimer();\n timeoutRef.current = window.setTimeout(() => {\n timeoutRef.current = undefined;\n if (pressingRef.current) {\n triggeredRef.current = true;\n callbackRef.current(event);\n }\n }, thresholdMs);\n },\n [stopTimer, thresholdMs],\n );\n\n const onPointerMove = useCallback(\n (event: ReactPointerEvent) => {\n if (!pressingRef.current || triggeredRef.current) {\n return;\n }\n const dx = event.clientX - originRef.current.x;\n const dy = event.clientY - originRef.current.y;\n if (Math.hypot(dx, dy) > moveTolerancePx) {\n cancel(event);\n }\n },\n [cancel, moveTolerancePx],\n );\n\n const onPointerUp = useCallback(\n (event: ReactPointerEvent) => {\n if (!pressingRef.current) {\n return;\n }\n const triggered = triggeredRef.current;\n pressingRef.current = false;\n stopTimer();\n if (triggered) {\n onFinishRef.current?.(event);\n } else {\n onCancelRef.current?.(event);\n }\n },\n [stopTimer],\n );\n\n // After a successful long press the browser fires a synthetic `click` event on pointer up.\n // This handler suppresses it so navigation and button actions aren't triggered unexpectedly.\n const onClick = useCallback((event: ReactMouseEvent) => {\n if (triggeredRef.current) {\n event.preventDefault();\n triggeredRef.current = false;\n }\n }, []);\n\n return {\n onPointerDown,\n onPointerMove,\n onPointerUp,\n onPointerLeave: cancel,\n onPointerCancel: cancel,\n onClick,\n };\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export { usePrevious } from "./usePrevious";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/usePrevious/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Returns the value passed in on the previous render (`undefined` on first render).
3
+ *
4
+ * The ref is updated in an effect after each committed render, so during a render
5
+ * you always see the value from the previous one — handy for diffing props/state,
6
+ * animation direction, or "changed since last render" checks.
7
+ *
8
+ * @typeParam T - Tracked value type.
9
+ * @param value - The current value to track.
10
+ * @returns The value from the previous render, or `undefined` before the first update.
11
+ */
12
+ export declare function usePrevious<T>(value: T): T | undefined;
13
+ //# sourceMappingURL=usePrevious.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePrevious.d.ts","sourceRoot":"","sources":["../../../src/hooks/usePrevious/usePrevious.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS,CAQtD"}
@@ -0,0 +1,17 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ require('../chunk-PZ5AY32C.js');
5
+ var react = require('react');
6
+
7
+ function usePrevious(value) {
8
+ const previousRef = react.useRef(void 0);
9
+ react.useEffect(() => {
10
+ previousRef.current = value;
11
+ }, [value]);
12
+ return previousRef.current;
13
+ }
14
+
15
+ exports.usePrevious = usePrevious;
16
+ //# sourceMappingURL=usePrevious.js.map
17
+ //# sourceMappingURL=usePrevious.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/usePrevious/usePrevious.ts"],"names":["useRef","useEffect"],"mappings":";;;;;AAeO,SAAS,YAAe,KAAA,EAAyB;AACtD,EAAA,MAAM,WAAA,GAAcA,aAAsB,MAAS,CAAA;AAEnD,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,WAAA,CAAY,OAAA,GAAU,KAAA;AAAA,EACxB,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAA,OAAO,WAAA,CAAY,OAAA;AACrB","file":"usePrevious.js","sourcesContent":["\"use client\";\n\nimport { useEffect, useRef } from \"react\";\n\n/**\n * Returns the value passed in on the previous render (`undefined` on first render).\n *\n * The ref is updated in an effect after each committed render, so during a render\n * you always see the value from the previous one — handy for diffing props/state,\n * animation direction, or \"changed since last render\" checks.\n *\n * @typeParam T - Tracked value type.\n * @param value - The current value to track.\n * @returns The value from the previous render, or `undefined` before the first update.\n */\nexport function usePrevious<T>(value: T): T | undefined {\n const previousRef = useRef<T | undefined>(undefined);\n\n useEffect(() => {\n previousRef.current = value;\n }, [value]);\n\n return previousRef.current;\n}\n"]}
@@ -0,0 +1,15 @@
1
+ "use client";
2
+ import '../chunk-J5LGTIGS.mjs';
3
+ import { useRef, useEffect } from 'react';
4
+
5
+ function usePrevious(value) {
6
+ const previousRef = useRef(void 0);
7
+ useEffect(() => {
8
+ previousRef.current = value;
9
+ }, [value]);
10
+ return previousRef.current;
11
+ }
12
+
13
+ export { usePrevious };
14
+ //# sourceMappingURL=usePrevious.mjs.map
15
+ //# sourceMappingURL=usePrevious.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/usePrevious/usePrevious.ts"],"names":[],"mappings":";;;AAeO,SAAS,YAAe,KAAA,EAAyB;AACtD,EAAA,MAAM,WAAA,GAAc,OAAsB,MAAS,CAAA;AAEnD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,WAAA,CAAY,OAAA,GAAU,KAAA;AAAA,EACxB,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAA,OAAO,WAAA,CAAY,OAAA;AACrB","file":"usePrevious.mjs","sourcesContent":["\"use client\";\n\nimport { useEffect, useRef } from \"react\";\n\n/**\n * Returns the value passed in on the previous render (`undefined` on first render).\n *\n * The ref is updated in an effect after each committed render, so during a render\n * you always see the value from the previous one — handy for diffing props/state,\n * animation direction, or \"changed since last render\" checks.\n *\n * @typeParam T - Tracked value type.\n * @param value - The current value to track.\n * @returns The value from the previous render, or `undefined` before the first update.\n */\nexport function usePrevious<T>(value: T): T | undefined {\n const previousRef = useRef<T | undefined>(undefined);\n\n useEffect(() => {\n previousRef.current = value;\n }, [value]);\n\n return previousRef.current;\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export { useScrollPosition, type ScrollPosition, type UseScrollPositionParams, } from "./useScrollPosition";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useScrollPosition/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,KAAK,cAAc,EACnB,KAAK,uBAAuB,GAC7B,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,37 @@
1
+ import type { RefCallback, RefObject } from "react";
2
+ export type ScrollPosition = {
3
+ x: number;
4
+ y: number;
5
+ };
6
+ export type UseScrollPositionParams<T extends HTMLElement = HTMLElement> = {
7
+ /**
8
+ * Scroll container to observe via a pre-populated RefObject.
9
+ * For elements that mount asynchronously, use the returned `setRef` callback ref instead.
10
+ */
11
+ target?: RefObject<T | null>;
12
+ };
13
+ export type UseScrollPositionResult<T extends HTMLElement = HTMLElement> = ScrollPosition & {
14
+ /**
15
+ * Callback ref to attach to a scroll container — works correctly with elements
16
+ * that are null on initial render (lazy / conditional mounts). Pass this as `ref`
17
+ * on the scrollable element when you cannot guarantee the ref is populated at mount.
18
+ */
19
+ setRef: RefCallback<T>;
20
+ };
21
+ /**
22
+ * Tracks the scroll offset of the window (default) or a scrollable element.
23
+ *
24
+ * - Window mode reads `scrollX` / `scrollY`; element mode reads `scrollLeft` / `scrollTop`.
25
+ * - Subscribes with a passive `scroll` listener and reads the initial position on mount.
26
+ * - Pass a pre-populated `target` RefObject **or** use the returned `setRef` callback ref on
27
+ * the scrollable element. Prefer `setRef` for elements that may be null on the first render
28
+ * (conditional mounts, portals) — it stores the element in state so the effect re-attaches
29
+ * correctly when the element becomes available.
30
+ * - For high-frequency consumers, derive throttled values downstream (e.g. with
31
+ * `useThrottledCallback`) rather than throttling the source of truth.
32
+ *
33
+ * @param params - {@link UseScrollPositionParams}
34
+ * @returns Latest `{ x, y }` scroll offset in pixels plus a `setRef` callback ref.
35
+ */
36
+ export declare function useScrollPosition<T extends HTMLElement = HTMLElement>(params?: UseScrollPositionParams<T>): UseScrollPositionResult<T>;
37
+ //# sourceMappingURL=useScrollPosition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useScrollPosition.d.ts","sourceRoot":"","sources":["../../../src/hooks/useScrollPosition/useScrollPosition.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGpD,MAAM,MAAM,cAAc,GAAG;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,uBAAuB,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,IAAI;IACzE;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,uBAAuB,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,IACrE,cAAc,GAAG;IACf;;;;OAIG;IACH,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;CACxB,CAAC;AAEJ;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,EACnE,MAAM,GAAE,uBAAuB,CAAC,CAAC,CAAM,GACtC,uBAAuB,CAAC,CAAC,CAAC,CA0C5B"}