@zentauri-ui/zentauri-components 1.9.1 → 2.0.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 (1031) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +34 -5
  3. package/cli/registry.json +14 -0
  4. package/dist/animations/blur-in.js +1 -0
  5. package/dist/animations/blur-in.js.map +1 -1
  6. package/dist/animations/blur-in.mjs +1 -0
  7. package/dist/animations/blur-in.mjs.map +1 -1
  8. package/dist/animations/blur-out.js +1 -0
  9. package/dist/animations/blur-out.js.map +1 -1
  10. package/dist/animations/blur-out.mjs +1 -0
  11. package/dist/animations/blur-out.mjs.map +1 -1
  12. package/dist/animations/bounce.js +1 -0
  13. package/dist/animations/bounce.js.map +1 -1
  14. package/dist/animations/bounce.mjs +1 -0
  15. package/dist/animations/bounce.mjs.map +1 -1
  16. package/dist/animations/fade-down.js +1 -0
  17. package/dist/animations/fade-down.js.map +1 -1
  18. package/dist/animations/fade-down.mjs +1 -0
  19. package/dist/animations/fade-down.mjs.map +1 -1
  20. package/dist/animations/fade-in.js +1 -0
  21. package/dist/animations/fade-in.js.map +1 -1
  22. package/dist/animations/fade-in.mjs +1 -0
  23. package/dist/animations/fade-in.mjs.map +1 -1
  24. package/dist/animations/fade-left.js +1 -0
  25. package/dist/animations/fade-left.js.map +1 -1
  26. package/dist/animations/fade-left.mjs +1 -0
  27. package/dist/animations/fade-left.mjs.map +1 -1
  28. package/dist/animations/fade-out.js +1 -0
  29. package/dist/animations/fade-out.js.map +1 -1
  30. package/dist/animations/fade-out.mjs +1 -0
  31. package/dist/animations/fade-out.mjs.map +1 -1
  32. package/dist/animations/fade-right.js +1 -0
  33. package/dist/animations/fade-right.js.map +1 -1
  34. package/dist/animations/fade-right.mjs +1 -0
  35. package/dist/animations/fade-right.mjs.map +1 -1
  36. package/dist/animations/fade-up.js +1 -0
  37. package/dist/animations/fade-up.js.map +1 -1
  38. package/dist/animations/fade-up.mjs +1 -0
  39. package/dist/animations/fade-up.mjs.map +1 -1
  40. package/dist/animations/flip-in.js +1 -0
  41. package/dist/animations/flip-in.js.map +1 -1
  42. package/dist/animations/flip-in.mjs +1 -0
  43. package/dist/animations/flip-in.mjs.map +1 -1
  44. package/dist/animations/flip.js +1 -0
  45. package/dist/animations/flip.js.map +1 -1
  46. package/dist/animations/flip.mjs +1 -0
  47. package/dist/animations/flip.mjs.map +1 -1
  48. package/dist/animations/float.js +1 -0
  49. package/dist/animations/float.js.map +1 -1
  50. package/dist/animations/float.mjs +1 -0
  51. package/dist/animations/float.mjs.map +1 -1
  52. package/dist/animations/hover-lift.js +1 -0
  53. package/dist/animations/hover-lift.js.map +1 -1
  54. package/dist/animations/hover-lift.mjs +1 -0
  55. package/dist/animations/hover-lift.mjs.map +1 -1
  56. package/dist/animations/hover-scale.js +1 -0
  57. package/dist/animations/hover-scale.js.map +1 -1
  58. package/dist/animations/hover-scale.mjs +1 -0
  59. package/dist/animations/hover-scale.mjs.map +1 -1
  60. package/dist/animations/magnetic.js +1 -0
  61. package/dist/animations/magnetic.js.map +1 -1
  62. package/dist/animations/magnetic.mjs +1 -0
  63. package/dist/animations/magnetic.mjs.map +1 -1
  64. package/dist/animations/parallax.js +1 -0
  65. package/dist/animations/parallax.js.map +1 -1
  66. package/dist/animations/parallax.mjs +1 -0
  67. package/dist/animations/parallax.mjs.map +1 -1
  68. package/dist/animations/ping.js +1 -0
  69. package/dist/animations/ping.js.map +1 -1
  70. package/dist/animations/ping.mjs +1 -0
  71. package/dist/animations/ping.mjs.map +1 -1
  72. package/dist/animations/pop-in.js +1 -0
  73. package/dist/animations/pop-in.js.map +1 -1
  74. package/dist/animations/pop-in.mjs +1 -0
  75. package/dist/animations/pop-in.mjs.map +1 -1
  76. package/dist/animations/press.js +1 -0
  77. package/dist/animations/press.js.map +1 -1
  78. package/dist/animations/press.mjs +1 -0
  79. package/dist/animations/press.mjs.map +1 -1
  80. package/dist/animations/progress.js +1 -0
  81. package/dist/animations/progress.js.map +1 -1
  82. package/dist/animations/progress.mjs +1 -0
  83. package/dist/animations/progress.mjs.map +1 -1
  84. package/dist/animations/pulse.js +1 -0
  85. package/dist/animations/pulse.js.map +1 -1
  86. package/dist/animations/pulse.mjs +1 -0
  87. package/dist/animations/pulse.mjs.map +1 -1
  88. package/dist/animations/reorder.js +1 -0
  89. package/dist/animations/reorder.js.map +1 -1
  90. package/dist/animations/reorder.mjs +1 -0
  91. package/dist/animations/reorder.mjs.map +1 -1
  92. package/dist/animations/reveal-blur.js +1 -0
  93. package/dist/animations/reveal-blur.js.map +1 -1
  94. package/dist/animations/reveal-blur.mjs +1 -0
  95. package/dist/animations/reveal-blur.mjs.map +1 -1
  96. package/dist/animations/reveal-down.js +1 -0
  97. package/dist/animations/reveal-down.js.map +1 -1
  98. package/dist/animations/reveal-down.mjs +1 -0
  99. package/dist/animations/reveal-down.mjs.map +1 -1
  100. package/dist/animations/reveal-left.js +1 -0
  101. package/dist/animations/reveal-left.js.map +1 -1
  102. package/dist/animations/reveal-left.mjs +1 -0
  103. package/dist/animations/reveal-left.mjs.map +1 -1
  104. package/dist/animations/reveal-right.js +1 -0
  105. package/dist/animations/reveal-right.js.map +1 -1
  106. package/dist/animations/reveal-right.mjs +1 -0
  107. package/dist/animations/reveal-right.mjs.map +1 -1
  108. package/dist/animations/reveal-up.js +1 -0
  109. package/dist/animations/reveal-up.js.map +1 -1
  110. package/dist/animations/reveal-up.mjs +1 -0
  111. package/dist/animations/reveal-up.mjs.map +1 -1
  112. package/dist/animations/rotate-in.js +1 -0
  113. package/dist/animations/rotate-in.js.map +1 -1
  114. package/dist/animations/rotate-in.mjs +1 -0
  115. package/dist/animations/rotate-in.mjs.map +1 -1
  116. package/dist/animations/scale-in.js +1 -0
  117. package/dist/animations/scale-in.js.map +1 -1
  118. package/dist/animations/scale-in.mjs +1 -0
  119. package/dist/animations/scale-in.mjs.map +1 -1
  120. package/dist/animations/scale-out.js +1 -0
  121. package/dist/animations/scale-out.js.map +1 -1
  122. package/dist/animations/scale-out.mjs +1 -0
  123. package/dist/animations/scale-out.mjs.map +1 -1
  124. package/dist/animations/shake.js +1 -0
  125. package/dist/animations/shake.js.map +1 -1
  126. package/dist/animations/shake.mjs +1 -0
  127. package/dist/animations/shake.mjs.map +1 -1
  128. package/dist/animations/skeleton-shimmer.js +1 -0
  129. package/dist/animations/skeleton-shimmer.js.map +1 -1
  130. package/dist/animations/skeleton-shimmer.mjs +1 -0
  131. package/dist/animations/skeleton-shimmer.mjs.map +1 -1
  132. package/dist/animations/slide-down.js +1 -0
  133. package/dist/animations/slide-down.js.map +1 -1
  134. package/dist/animations/slide-down.mjs +1 -0
  135. package/dist/animations/slide-down.mjs.map +1 -1
  136. package/dist/animations/slide-left.js +1 -0
  137. package/dist/animations/slide-left.js.map +1 -1
  138. package/dist/animations/slide-left.mjs +1 -0
  139. package/dist/animations/slide-left.mjs.map +1 -1
  140. package/dist/animations/slide-right.js +1 -0
  141. package/dist/animations/slide-right.js.map +1 -1
  142. package/dist/animations/slide-right.mjs +1 -0
  143. package/dist/animations/slide-right.mjs.map +1 -1
  144. package/dist/animations/slide-up.js +1 -0
  145. package/dist/animations/slide-up.js.map +1 -1
  146. package/dist/animations/slide-up.mjs +1 -0
  147. package/dist/animations/slide-up.mjs.map +1 -1
  148. package/dist/animations/spin.js +1 -0
  149. package/dist/animations/spin.js.map +1 -1
  150. package/dist/animations/spin.mjs +1 -0
  151. package/dist/animations/spin.mjs.map +1 -1
  152. package/dist/animations/text-reveal.js +1 -0
  153. package/dist/animations/text-reveal.js.map +1 -1
  154. package/dist/animations/text-reveal.mjs +1 -0
  155. package/dist/animations/text-reveal.mjs.map +1 -1
  156. package/dist/animations/text-shimmer.js +1 -0
  157. package/dist/animations/text-shimmer.js.map +1 -1
  158. package/dist/animations/text-shimmer.mjs +1 -0
  159. package/dist/animations/text-shimmer.mjs.map +1 -1
  160. package/dist/animations/tilt.js +1 -0
  161. package/dist/animations/tilt.js.map +1 -1
  162. package/dist/animations/tilt.mjs +1 -0
  163. package/dist/animations/tilt.mjs.map +1 -1
  164. package/dist/animations/wiggle.js +1 -0
  165. package/dist/animations/wiggle.js.map +1 -1
  166. package/dist/animations/wiggle.mjs +1 -0
  167. package/dist/animations/wiggle.mjs.map +1 -1
  168. package/dist/charts/area.js +1 -0
  169. package/dist/charts/area.js.map +1 -1
  170. package/dist/charts/area.mjs +1 -0
  171. package/dist/charts/area.mjs.map +1 -1
  172. package/dist/charts/bar.js +1 -0
  173. package/dist/charts/bar.mjs +1 -0
  174. package/dist/charts/bubble.js +1 -0
  175. package/dist/charts/bubble.js.map +1 -1
  176. package/dist/charts/bubble.mjs +1 -0
  177. package/dist/charts/bubble.mjs.map +1 -1
  178. package/dist/charts/funnel.js +1 -0
  179. package/dist/charts/funnel.js.map +1 -1
  180. package/dist/charts/funnel.mjs +1 -0
  181. package/dist/charts/funnel.mjs.map +1 -1
  182. package/dist/charts/line.js +1 -0
  183. package/dist/charts/line.js.map +1 -1
  184. package/dist/charts/line.mjs +1 -0
  185. package/dist/charts/line.mjs.map +1 -1
  186. package/dist/charts/pie.js +1 -0
  187. package/dist/charts/pie.js.map +1 -1
  188. package/dist/charts/pie.mjs +1 -0
  189. package/dist/charts/pie.mjs.map +1 -1
  190. package/dist/charts/radar.js +1 -0
  191. package/dist/charts/radar.js.map +1 -1
  192. package/dist/charts/radar.mjs +1 -0
  193. package/dist/charts/radar.mjs.map +1 -1
  194. package/dist/charts/scatter.js +1 -0
  195. package/dist/charts/scatter.js.map +1 -1
  196. package/dist/charts/scatter.mjs +1 -0
  197. package/dist/charts/scatter.mjs.map +1 -1
  198. package/dist/charts/stacked-bar.js +1 -0
  199. package/dist/charts/stacked-bar.js.map +1 -1
  200. package/dist/charts/stacked-bar.mjs +1 -0
  201. package/dist/charts/stacked-bar.mjs.map +1 -1
  202. package/dist/{chunk-OY3YJGOX.mjs → chunk-22I54GJW.js} +7 -203
  203. package/dist/chunk-22I54GJW.js.map +1 -0
  204. package/dist/chunk-27PO2FY2.mjs +161 -0
  205. package/dist/chunk-27PO2FY2.mjs.map +1 -0
  206. package/dist/chunk-2PWT2MB5.mjs +73 -0
  207. package/dist/chunk-2PWT2MB5.mjs.map +1 -0
  208. package/dist/chunk-34OSFCSH.js +212 -0
  209. package/dist/chunk-34OSFCSH.js.map +1 -0
  210. package/dist/chunk-37YQUTKG.js +204 -0
  211. package/dist/chunk-37YQUTKG.js.map +1 -0
  212. package/dist/chunk-3HSFL4WA.mjs +191 -0
  213. package/dist/chunk-3HSFL4WA.mjs.map +1 -0
  214. package/dist/{chunk-EKLWWV3G.mjs → chunk-3I6XR7KN.js} +10 -72
  215. package/dist/chunk-3I6XR7KN.js.map +1 -0
  216. package/dist/chunk-3MK7CWEX.js +54 -0
  217. package/dist/chunk-3MK7CWEX.js.map +1 -0
  218. package/dist/{chunk-UNPKDNLA.js → chunk-3R6PQUG2.mjs} +3 -264
  219. package/dist/chunk-3R6PQUG2.mjs.map +1 -0
  220. package/dist/{chunk-AS34PVUG.mjs → chunk-3Z6L24ZK.js} +11 -221
  221. package/dist/{chunk-IW2E4MLG.js.map → chunk-3Z6L24ZK.js.map} +1 -1
  222. package/dist/{chunk-DBW25HOR.mjs → chunk-44G3U35C.js} +12 -413
  223. package/dist/chunk-44G3U35C.js.map +1 -0
  224. package/dist/chunk-44NX3DAZ.mjs +17 -0
  225. package/dist/chunk-44NX3DAZ.mjs.map +1 -0
  226. package/dist/chunk-456OEGUT.mjs +58 -0
  227. package/dist/chunk-456OEGUT.mjs.map +1 -0
  228. package/dist/{chunk-URXYF25P.mjs → chunk-45CGVW7S.js} +12 -205
  229. package/dist/chunk-45CGVW7S.js.map +1 -0
  230. package/dist/chunk-4FU6FDUT.mjs +202 -0
  231. package/dist/chunk-4FU6FDUT.mjs.map +1 -0
  232. package/dist/chunk-4LVEWKXF.mjs +258 -0
  233. package/dist/chunk-4LVEWKXF.mjs.map +1 -0
  234. package/dist/{chunk-3IBWZM52.js → chunk-4QLWSXXO.mjs} +3 -209
  235. package/dist/chunk-4QLWSXXO.mjs.map +1 -0
  236. package/dist/{chunk-DMDCXYNN.js → chunk-4U7CDEN7.mjs} +3 -51
  237. package/dist/chunk-4U7CDEN7.mjs.map +1 -0
  238. package/dist/{chunk-6GPUHFXI.mjs → chunk-56DECC6D.js} +16 -220
  239. package/dist/chunk-56DECC6D.js.map +1 -0
  240. package/dist/chunk-56KZVM5D.mjs +159 -0
  241. package/dist/chunk-56KZVM5D.mjs.map +1 -0
  242. package/dist/{chunk-VJSME7ML.js → chunk-5BSYGFN7.mjs} +3 -162
  243. package/dist/chunk-5BSYGFN7.mjs.map +1 -0
  244. package/dist/{chunk-XIG2QDVN.js → chunk-5QSYJHWL.mjs} +3 -73
  245. package/dist/chunk-5QSYJHWL.mjs.map +1 -0
  246. package/dist/{chunk-WVBFSJEB.js → chunk-5R6XJAXQ.mjs} +3 -574
  247. package/dist/chunk-5R6XJAXQ.mjs.map +1 -0
  248. package/dist/{chunk-KIAYTBS5.js → chunk-5WWD3TZ2.mjs} +3 -129
  249. package/dist/chunk-5WWD3TZ2.mjs.map +1 -0
  250. package/dist/{chunk-4GVMPQZS.js → chunk-63UE3BR4.mjs} +3 -77
  251. package/dist/chunk-63UE3BR4.mjs.map +1 -0
  252. package/dist/chunk-63YMCBGJ.js +217 -0
  253. package/dist/chunk-63YMCBGJ.js.map +1 -0
  254. package/dist/chunk-7GIL24GK.js +354 -0
  255. package/dist/chunk-7GIL24GK.js.map +1 -0
  256. package/dist/chunk-7JBQ3ZJN.mjs +250 -0
  257. package/dist/chunk-7JBQ3ZJN.mjs.map +1 -0
  258. package/dist/{chunk-4WRCXG5E.mjs → chunk-7LFRU6AW.js} +16 -704
  259. package/dist/{chunk-XYKDSHRG.js.map → chunk-7LFRU6AW.js.map} +1 -1
  260. package/dist/{chunk-6ONKAOI7.mjs → chunk-7M4TUP4I.js} +8 -190
  261. package/dist/chunk-7M4TUP4I.js.map +1 -0
  262. package/dist/{chunk-XOYCFLEZ.mjs → chunk-AADGUMYW.js} +12 -349
  263. package/dist/chunk-AADGUMYW.js.map +1 -0
  264. package/dist/chunk-ATMCT3A3.mjs +222 -0
  265. package/dist/chunk-ATMCT3A3.mjs.map +1 -0
  266. package/dist/chunk-BDBL4XXI.mjs +45 -0
  267. package/dist/chunk-BDBL4XXI.mjs.map +1 -0
  268. package/dist/{chunk-U7FZ5RMV.js → chunk-BTSCPOWZ.mjs} +3 -424
  269. package/dist/chunk-BTSCPOWZ.mjs.map +1 -0
  270. package/dist/chunk-BZZVO4GL.mjs +414 -0
  271. package/dist/chunk-BZZVO4GL.mjs.map +1 -0
  272. package/dist/chunk-C7F6OCGK.mjs +123 -0
  273. package/dist/chunk-C7F6OCGK.mjs.map +1 -0
  274. package/dist/chunk-D4B62J5C.js +128 -0
  275. package/dist/chunk-D4B62J5C.js.map +1 -0
  276. package/dist/{chunk-REDZL4DY.mjs → chunk-DWDDIG6R.js} +9 -160
  277. package/dist/chunk-DWDDIG6R.js.map +1 -0
  278. package/dist/{chunk-UMXCV5IT.mjs → chunk-E7BPOL74.js} +13 -249
  279. package/dist/chunk-E7BPOL74.js.map +1 -0
  280. package/dist/chunk-EIX26RKN.js +73 -0
  281. package/dist/chunk-EIX26RKN.js.map +1 -0
  282. package/dist/chunk-EKBSSKJQ.js +271 -0
  283. package/dist/chunk-EKBSSKJQ.js.map +1 -0
  284. package/dist/{chunk-2RBUROXJ.js → chunk-EP7WTIKH.mjs} +3 -238
  285. package/dist/chunk-EP7WTIKH.mjs.map +1 -0
  286. package/dist/chunk-F6V74YMW.js +71 -0
  287. package/dist/chunk-F6V74YMW.js.map +1 -0
  288. package/dist/chunk-FAMHSJTK.js +19 -0
  289. package/dist/chunk-FAMHSJTK.js.map +1 -0
  290. package/dist/{chunk-S4NQTWMW.mjs → chunk-FNNIH7R2.js} +10 -61
  291. package/dist/chunk-FNNIH7R2.js.map +1 -0
  292. package/dist/chunk-FXDHDQTH.js +79 -0
  293. package/dist/chunk-FXDHDQTH.js.map +1 -0
  294. package/dist/chunk-FZET7XQV.js +169 -0
  295. package/dist/chunk-FZET7XQV.js.map +1 -0
  296. package/dist/chunk-GDYSB7SB.js +78 -0
  297. package/dist/chunk-GDYSB7SB.js.map +1 -0
  298. package/dist/chunk-GPM2PRC5.js +61 -0
  299. package/dist/chunk-GPM2PRC5.js.map +1 -0
  300. package/dist/chunk-GVGKISKD.js +170 -0
  301. package/dist/chunk-GVGKISKD.js.map +1 -0
  302. package/dist/chunk-I42UYWYA.mjs +128 -0
  303. package/dist/chunk-I42UYWYA.mjs.map +1 -0
  304. package/dist/chunk-I4TGI6U3.mjs +558 -0
  305. package/dist/chunk-I4TGI6U3.mjs.map +1 -0
  306. package/dist/chunk-I55QC57T.js +47 -0
  307. package/dist/chunk-I55QC57T.js.map +1 -0
  308. package/dist/chunk-I5TREZO5.js +263 -0
  309. package/dist/chunk-I5TREZO5.js.map +1 -0
  310. package/dist/chunk-IKXO5SJ4.js +671 -0
  311. package/dist/chunk-IKXO5SJ4.js.map +1 -0
  312. package/dist/chunk-IPUQBMAB.mjs +205 -0
  313. package/dist/chunk-IPUQBMAB.mjs.map +1 -0
  314. package/dist/chunk-IQ6QVIZ3.mjs +69 -0
  315. package/dist/chunk-IQ6QVIZ3.mjs.map +1 -0
  316. package/dist/{chunk-CARQELOX.mjs → chunk-ISXAUMRW.js} +8 -46
  317. package/dist/chunk-ISXAUMRW.js.map +1 -0
  318. package/dist/{chunk-WRHUWKZS.js → chunk-IULYVARJ.mjs} +3 -130
  319. package/dist/chunk-IULYVARJ.mjs.map +1 -0
  320. package/dist/chunk-J5LGTIGS.mjs +9 -0
  321. package/dist/chunk-J5LGTIGS.mjs.map +1 -0
  322. package/dist/chunk-J6XKTPP5.js +61 -0
  323. package/dist/chunk-J6XKTPP5.js.map +1 -0
  324. package/dist/{chunk-HI54NLVM.js → chunk-JF4BRFOG.mjs} +3 -128
  325. package/dist/chunk-JF4BRFOG.mjs.map +1 -0
  326. package/dist/{chunk-JGSQZZHF.js → chunk-JI3IEKH6.mjs} +3 -212
  327. package/dist/chunk-JI3IEKH6.mjs.map +1 -0
  328. package/dist/{chunk-6VZGM4DI.mjs → chunk-JTMRSRYD.js} +11 -118
  329. package/dist/chunk-JTMRSRYD.js.map +1 -0
  330. package/dist/{chunk-NUYNJV5U.mjs → chunk-JXSM2EHC.mjs} +3 -3
  331. package/dist/{chunk-NUYNJV5U.mjs.map → chunk-JXSM2EHC.mjs.map} +1 -1
  332. package/dist/chunk-KEGOUZL5.js +209 -0
  333. package/dist/chunk-KEGOUZL5.js.map +1 -0
  334. package/dist/{chunk-B3LCKPBX.js → chunk-KXNMW4NV.mjs} +3 -170
  335. package/dist/chunk-KXNMW4NV.mjs.map +1 -0
  336. package/dist/{chunk-OEDD43IT.mjs → chunk-L67EJJFN.js} +9 -68
  337. package/dist/chunk-L67EJJFN.js.map +1 -0
  338. package/dist/{chunk-7XHWUEQR.mjs → chunk-L6AS5AVO.js} +10 -250
  339. package/dist/chunk-L6AS5AVO.js.map +1 -0
  340. package/dist/chunk-L6PSW7JE.mjs +206 -0
  341. package/dist/chunk-L6PSW7JE.mjs.map +1 -0
  342. package/dist/{chunk-IW2E4MLG.js → chunk-LL2UY6CD.mjs} +3 -231
  343. package/dist/chunk-LL2UY6CD.mjs.map +1 -0
  344. package/dist/chunk-LLNK24MM.js +67 -0
  345. package/dist/chunk-LLNK24MM.js.map +1 -0
  346. package/dist/{chunk-UOZZUWIX.js → chunk-LS4GY2ZQ.js} +6 -6
  347. package/dist/{chunk-UOZZUWIX.js.map → chunk-LS4GY2ZQ.js.map} +1 -1
  348. package/dist/{chunk-XJFDGKZO.mjs → chunk-LU6VEI4B.js} +12 -204
  349. package/dist/chunk-LU6VEI4B.js.map +1 -0
  350. package/dist/chunk-MCYFKM7T.js +62 -0
  351. package/dist/chunk-MCYFKM7T.js.map +1 -0
  352. package/dist/chunk-MUKI3OHH.js +215 -0
  353. package/dist/chunk-MUKI3OHH.js.map +1 -0
  354. package/dist/chunk-N2RUT33F.mjs +68 -0
  355. package/dist/chunk-N2RUT33F.mjs.map +1 -0
  356. package/dist/chunk-NAHHFB2M.js +77 -0
  357. package/dist/chunk-NAHHFB2M.js.map +1 -0
  358. package/dist/chunk-NMBSK44H.mjs +44 -0
  359. package/dist/chunk-NMBSK44H.mjs.map +1 -0
  360. package/dist/chunk-NVTV3EQB.js +49 -0
  361. package/dist/chunk-NVTV3EQB.js.map +1 -0
  362. package/dist/chunk-NWMSIYZP.js +574 -0
  363. package/dist/chunk-NWMSIYZP.js.map +1 -0
  364. package/dist/{chunk-AFBKMQMK.js → chunk-NXNL64Q7.mjs} +3 -354
  365. package/dist/chunk-NXNL64Q7.mjs.map +1 -0
  366. package/dist/chunk-O23PJPGM.mjs +251 -0
  367. package/dist/chunk-O23PJPGM.mjs.map +1 -0
  368. package/dist/chunk-O6R6OQXI.mjs +204 -0
  369. package/dist/chunk-O6R6OQXI.mjs.map +1 -0
  370. package/dist/chunk-ODT5TFIT.mjs +156 -0
  371. package/dist/chunk-ODT5TFIT.mjs.map +1 -0
  372. package/dist/{chunk-VX56EVPF.mjs → chunk-OGMIKRLJ.js} +8 -98
  373. package/dist/chunk-OGMIKRLJ.js.map +1 -0
  374. package/dist/chunk-OOBA2MDD.mjs +57 -0
  375. package/dist/chunk-OOBA2MDD.mjs.map +1 -0
  376. package/dist/chunk-OPACTZGV.js +231 -0
  377. package/dist/chunk-OPACTZGV.js.map +1 -0
  378. package/dist/{chunk-PZBTZGJE.js → chunk-OQCI2IVL.mjs} +3 -271
  379. package/dist/chunk-OQCI2IVL.mjs.map +1 -0
  380. package/dist/{chunk-7PIOCFV3.mjs → chunk-P25NI2HG.js} +9 -124
  381. package/dist/chunk-P25NI2HG.js.map +1 -0
  382. package/dist/chunk-P2DQP4J4.js +424 -0
  383. package/dist/chunk-P2DQP4J4.js.map +1 -0
  384. package/dist/{chunk-KC77BXBC.js → chunk-P43A2BPU.mjs} +3 -215
  385. package/dist/chunk-P43A2BPU.mjs.map +1 -0
  386. package/dist/chunk-P54PZ72L.mjs +65 -0
  387. package/dist/chunk-P54PZ72L.mjs.map +1 -0
  388. package/dist/chunk-PAJYNQR3.mjs +150 -0
  389. package/dist/chunk-PAJYNQR3.mjs.map +1 -0
  390. package/dist/chunk-PKXDRTC7.js +264 -0
  391. package/dist/chunk-PKXDRTC7.js.map +1 -0
  392. package/dist/chunk-PNAFXOZC.mjs +69 -0
  393. package/dist/chunk-PNAFXOZC.mjs.map +1 -0
  394. package/dist/chunk-PUSCPBT2.mjs +46 -0
  395. package/dist/chunk-PUSCPBT2.mjs.map +1 -0
  396. package/dist/chunk-PZ5AY32C.js +11 -0
  397. package/dist/chunk-PZ5AY32C.js.map +1 -0
  398. package/dist/chunk-Q2NE2UAO.mjs +119 -0
  399. package/dist/chunk-Q2NE2UAO.mjs.map +1 -0
  400. package/dist/chunk-QDHARZDN.js +129 -0
  401. package/dist/chunk-QDHARZDN.js.map +1 -0
  402. package/dist/chunk-QIUVXTLE.mjs +60 -0
  403. package/dist/chunk-QIUVXTLE.mjs.map +1 -0
  404. package/dist/chunk-QKZR2UTL.mjs +125 -0
  405. package/dist/chunk-QKZR2UTL.mjs.map +1 -0
  406. package/dist/{chunk-O233I5N7.mjs → chunk-QTFOUK4H.js} +15 -149
  407. package/dist/chunk-QTFOUK4H.js.map +1 -0
  408. package/dist/chunk-QW2ZHKPC.mjs +64 -0
  409. package/dist/chunk-QW2ZHKPC.mjs.map +1 -0
  410. package/dist/{chunk-RFBTMJ2Z.mjs → chunk-R2256VSD.js} +16 -557
  411. package/dist/chunk-R2256VSD.js.map +1 -0
  412. package/dist/chunk-RYJ5WEE3.js +101 -0
  413. package/dist/chunk-RYJ5WEE3.js.map +1 -0
  414. package/dist/{chunk-YFXGRV7X.mjs → chunk-S4OSJ4ZN.js} +9 -155
  415. package/dist/chunk-S4OSJ4ZN.js.map +1 -0
  416. package/dist/{chunk-SRLYXLUU.js → chunk-SWU5U5BB.mjs} +3 -217
  417. package/dist/chunk-SWU5U5BB.mjs.map +1 -0
  418. package/dist/chunk-SYFTQAZG.mjs +58 -0
  419. package/dist/chunk-SYFTQAZG.mjs.map +1 -0
  420. package/dist/{chunk-JRB22VVK.js → chunk-T5SPR27V.mjs} +3 -166
  421. package/dist/chunk-T5SPR27V.mjs.map +1 -0
  422. package/dist/{chunk-KLGB3FYE.js → chunk-TD4W3AHI.mjs} +3 -263
  423. package/dist/chunk-TD4W3AHI.mjs.map +1 -0
  424. package/dist/chunk-TMFXI5FH.mjs +52 -0
  425. package/dist/chunk-TMFXI5FH.mjs.map +1 -0
  426. package/dist/{chunk-QCHHXFJQ.js → chunk-UJBXDDHN.mjs} +4 -102
  427. package/dist/chunk-UJBXDDHN.mjs.map +1 -0
  428. package/dist/chunk-USLP5NY6.js +69 -0
  429. package/dist/chunk-USLP5NY6.js.map +1 -0
  430. package/dist/{chunk-W73CZFMA.mjs → chunk-UU34Q42Q.js} +7 -201
  431. package/dist/chunk-UU34Q42Q.js.map +1 -0
  432. package/dist/chunk-V4FFKIX3.js +166 -0
  433. package/dist/chunk-V4FFKIX3.js.map +1 -0
  434. package/dist/{chunk-VGVB5XZX.js → chunk-V4U6Q5NL.mjs} +3 -204
  435. package/dist/chunk-V4U6Q5NL.mjs.map +1 -0
  436. package/dist/chunk-VQQHVKEU.mjs +652 -0
  437. package/dist/chunk-VQQHVKEU.mjs.map +1 -0
  438. package/dist/chunk-VUIWYURS.js +162 -0
  439. package/dist/chunk-VUIWYURS.js.map +1 -0
  440. package/dist/chunk-VWHER5XN.js +65 -0
  441. package/dist/chunk-VWHER5XN.js.map +1 -0
  442. package/dist/chunk-WBRTXAKP.js +705 -0
  443. package/dist/chunk-WBRTXAKP.js.map +1 -0
  444. package/dist/chunk-WN7XWKAS.mjs +52 -0
  445. package/dist/chunk-WN7XWKAS.mjs.map +1 -0
  446. package/dist/{chunk-XYKDSHRG.js → chunk-X3N4EVF7.mjs} +3 -707
  447. package/dist/chunk-X3N4EVF7.mjs.map +1 -0
  448. package/dist/chunk-XPHD3X4L.mjs +98 -0
  449. package/dist/chunk-XPHD3X4L.mjs.map +1 -0
  450. package/dist/chunk-Y4YQSCNL.js +65 -0
  451. package/dist/chunk-Y4YQSCNL.js.map +1 -0
  452. package/dist/chunk-Y73U7C4T.js +238 -0
  453. package/dist/chunk-Y73U7C4T.js.map +1 -0
  454. package/dist/{chunk-ENV73575.mjs → chunk-Y7NRTCAT.js} +10 -122
  455. package/dist/chunk-Y7NRTCAT.js.map +1 -0
  456. package/dist/{chunk-ZZ53RJNH.js → chunk-YDKAE7RM.mjs} +3 -69
  457. package/dist/chunk-YDKAE7RM.mjs.map +1 -0
  458. package/dist/{chunk-VO7LNOC5.mjs → chunk-YN4ZS3R2.js} +10 -257
  459. package/dist/chunk-YN4ZS3R2.js.map +1 -0
  460. package/dist/chunk-ZCTSXNAE.mjs +221 -0
  461. package/dist/chunk-ZCTSXNAE.mjs.map +1 -0
  462. package/dist/chunk-ZFNVFMWG.mjs +703 -0
  463. package/dist/chunk-ZFNVFMWG.mjs.map +1 -0
  464. package/dist/chunk-ZITS2V53.js +130 -0
  465. package/dist/chunk-ZITS2V53.js.map +1 -0
  466. package/dist/chunk-ZVRGLG35.js +144 -0
  467. package/dist/chunk-ZVRGLG35.js.map +1 -0
  468. package/dist/chunk-ZY6O6Z2I.mjs +350 -0
  469. package/dist/chunk-ZY6O6Z2I.mjs.map +1 -0
  470. package/dist/design-system/button.d.ts +1 -1
  471. package/dist/design-system/combobox.d.ts +124 -0
  472. package/dist/design-system/combobox.d.ts.map +1 -0
  473. package/dist/design-system/copy-button.d.ts +1 -1
  474. package/dist/design-system/facade.js +404 -0
  475. package/dist/design-system/facade.js.map +1 -0
  476. package/dist/design-system/facade.mjs +402 -0
  477. package/dist/design-system/facade.mjs.map +1 -0
  478. package/dist/design-system/index.d.ts +1 -0
  479. package/dist/design-system/index.d.ts.map +1 -1
  480. package/dist/design-system/tokens.js +1 -0
  481. package/dist/design-system/tokens.mjs +1 -0
  482. package/dist/hooks/index.d.ts +13 -0
  483. package/dist/hooks/index.d.ts.map +1 -1
  484. package/dist/hooks/useBodyScrollLock.js +1 -0
  485. package/dist/hooks/useBodyScrollLock.mjs +1 -0
  486. package/dist/hooks/useClickOutside.js +1 -0
  487. package/dist/hooks/useClickOutside.mjs +1 -0
  488. package/dist/hooks/useClipboard.js +1 -0
  489. package/dist/hooks/useClipboard.mjs +1 -0
  490. package/dist/hooks/useControllableState.js +1 -0
  491. package/dist/hooks/useControllableState.mjs +1 -0
  492. package/dist/hooks/useCookie/index.d.ts +2 -0
  493. package/dist/hooks/useCookie/index.d.ts.map +1 -0
  494. package/dist/hooks/useCookie/useCookie.d.ts +36 -0
  495. package/dist/hooks/useCookie/useCookie.d.ts.map +1 -0
  496. package/dist/hooks/useCookie.js +82 -0
  497. package/dist/hooks/useCookie.js.map +1 -0
  498. package/dist/hooks/useCookie.mjs +80 -0
  499. package/dist/hooks/useCookie.mjs.map +1 -0
  500. package/dist/hooks/useCountdown/index.d.ts +2 -0
  501. package/dist/hooks/useCountdown/index.d.ts.map +1 -0
  502. package/dist/hooks/useCountdown/useCountdown.d.ts +40 -0
  503. package/dist/hooks/useCountdown/useCountdown.d.ts.map +1 -0
  504. package/dist/hooks/useCountdown.js +60 -0
  505. package/dist/hooks/useCountdown.js.map +1 -0
  506. package/dist/hooks/useCountdown.mjs +58 -0
  507. package/dist/hooks/useCountdown.mjs.map +1 -0
  508. package/dist/hooks/useDebouncedValue.js +1 -1
  509. package/dist/hooks/useDebouncedValue.mjs +1 -1
  510. package/dist/hooks/useDisclosure.js +1 -0
  511. package/dist/hooks/useDisclosure.js.map +1 -1
  512. package/dist/hooks/useDisclosure.mjs +1 -0
  513. package/dist/hooks/useDisclosure.mjs.map +1 -1
  514. package/dist/hooks/useDocumentTitle.js +1 -1
  515. package/dist/hooks/useDocumentTitle.mjs +1 -1
  516. package/dist/hooks/useDynamicStepper.js +1 -0
  517. package/dist/hooks/useDynamicStepper.mjs +1 -0
  518. package/dist/hooks/useEventListener/index.d.ts +2 -0
  519. package/dist/hooks/useEventListener/index.d.ts.map +1 -0
  520. package/dist/hooks/useEventListener/useEventListener.d.ts +22 -0
  521. package/dist/hooks/useEventListener/useEventListener.d.ts.map +1 -0
  522. package/dist/hooks/useEventListener.js +45 -0
  523. package/dist/hooks/useEventListener.js.map +1 -0
  524. package/dist/hooks/useEventListener.mjs +43 -0
  525. package/dist/hooks/useEventListener.mjs.map +1 -0
  526. package/dist/hooks/useFocusManagement.js +1 -0
  527. package/dist/hooks/useFocusManagement.mjs +1 -0
  528. package/dist/hooks/useGeolocation/index.d.ts +2 -0
  529. package/dist/hooks/useGeolocation/index.d.ts.map +1 -0
  530. package/dist/hooks/useGeolocation/useGeolocation.d.ts +48 -0
  531. package/dist/hooks/useGeolocation/useGeolocation.d.ts.map +1 -0
  532. package/dist/hooks/useGeolocation.js +111 -0
  533. package/dist/hooks/useGeolocation.js.map +1 -0
  534. package/dist/hooks/useGeolocation.mjs +109 -0
  535. package/dist/hooks/useGeolocation.mjs.map +1 -0
  536. package/dist/hooks/useHotkeys/index.d.ts +2 -0
  537. package/dist/hooks/useHotkeys/index.d.ts.map +1 -0
  538. package/dist/hooks/useHotkeys/useHotkeys.d.ts +24 -0
  539. package/dist/hooks/useHotkeys/useHotkeys.d.ts.map +1 -0
  540. package/dist/hooks/useHotkeys.js +86 -0
  541. package/dist/hooks/useHotkeys.js.map +1 -0
  542. package/dist/hooks/useHotkeys.mjs +84 -0
  543. package/dist/hooks/useHotkeys.mjs.map +1 -0
  544. package/dist/hooks/useHover.js +1 -1
  545. package/dist/hooks/useHover.mjs +1 -1
  546. package/dist/hooks/useIdleTimeout/index.d.ts +2 -0
  547. package/dist/hooks/useIdleTimeout/index.d.ts.map +1 -0
  548. package/dist/hooks/useIdleTimeout/useIdleTimeout.d.ts +31 -0
  549. package/dist/hooks/useIdleTimeout/useIdleTimeout.d.ts.map +1 -0
  550. package/dist/hooks/useIdleTimeout.js +77 -0
  551. package/dist/hooks/useIdleTimeout.js.map +1 -0
  552. package/dist/hooks/useIdleTimeout.mjs +75 -0
  553. package/dist/hooks/useIdleTimeout.mjs.map +1 -0
  554. package/dist/hooks/useInView.js +1 -0
  555. package/dist/hooks/useInView.js.map +1 -1
  556. package/dist/hooks/useInView.mjs +1 -0
  557. package/dist/hooks/useInView.mjs.map +1 -1
  558. package/dist/hooks/useIntersectionObserver.js +1 -0
  559. package/dist/hooks/useIntersectionObserver.mjs +1 -0
  560. package/dist/hooks/useInterval/index.d.ts +2 -0
  561. package/dist/hooks/useInterval/index.d.ts.map +1 -0
  562. package/dist/hooks/useInterval/useInterval.d.ts +12 -0
  563. package/dist/hooks/useInterval/useInterval.d.ts.map +1 -0
  564. package/dist/hooks/useInterval.js +27 -0
  565. package/dist/hooks/useInterval.js.map +1 -0
  566. package/dist/hooks/useInterval.mjs +25 -0
  567. package/dist/hooks/useInterval.mjs.map +1 -0
  568. package/dist/hooks/useIsMounted.js +1 -1
  569. package/dist/hooks/useIsMounted.mjs +1 -1
  570. package/dist/hooks/useIsomorphicLayoutEffect.js +1 -0
  571. package/dist/hooks/useIsomorphicLayoutEffect.mjs +1 -0
  572. package/dist/hooks/useKeyPress/index.d.ts +2 -0
  573. package/dist/hooks/useKeyPress/index.d.ts.map +1 -0
  574. package/dist/hooks/useKeyPress/useKeyPress.d.ts +15 -0
  575. package/dist/hooks/useKeyPress/useKeyPress.d.ts.map +1 -0
  576. package/dist/hooks/useKeyPress.js +47 -0
  577. package/dist/hooks/useKeyPress.js.map +1 -0
  578. package/dist/hooks/useKeyPress.mjs +45 -0
  579. package/dist/hooks/useKeyPress.mjs.map +1 -0
  580. package/dist/hooks/useLocalStorage.js +1 -1
  581. package/dist/hooks/useLocalStorage.mjs +1 -1
  582. package/dist/hooks/useLongPress/index.d.ts +2 -0
  583. package/dist/hooks/useLongPress/index.d.ts.map +1 -0
  584. package/dist/hooks/useLongPress/useLongPress.d.ts +46 -0
  585. package/dist/hooks/useLongPress/useLongPress.d.ts.map +1 -0
  586. package/dist/hooks/useLongPress.js +116 -0
  587. package/dist/hooks/useLongPress.js.map +1 -0
  588. package/dist/hooks/useLongPress.mjs +114 -0
  589. package/dist/hooks/useLongPress.mjs.map +1 -0
  590. package/dist/hooks/useMediaQuery.js +1 -0
  591. package/dist/hooks/useMediaQuery.mjs +1 -0
  592. package/dist/hooks/useNetworkStatus.js +1 -1
  593. package/dist/hooks/useNetworkStatus.mjs +1 -1
  594. package/dist/hooks/usePageVisibility.js +1 -1
  595. package/dist/hooks/usePageVisibility.mjs +1 -1
  596. package/dist/hooks/usePagination.js +1 -0
  597. package/dist/hooks/usePagination.mjs +1 -0
  598. package/dist/hooks/usePrefersColorScheme.js +1 -0
  599. package/dist/hooks/usePrefersColorScheme.js.map +1 -1
  600. package/dist/hooks/usePrefersColorScheme.mjs +1 -0
  601. package/dist/hooks/usePrefersColorScheme.mjs.map +1 -1
  602. package/dist/hooks/usePrefersReducedMotion.js +1 -0
  603. package/dist/hooks/usePrefersReducedMotion.js.map +1 -1
  604. package/dist/hooks/usePrefersReducedMotion.mjs +1 -0
  605. package/dist/hooks/usePrefersReducedMotion.mjs.map +1 -1
  606. package/dist/hooks/usePrevious/index.d.ts +2 -0
  607. package/dist/hooks/usePrevious/index.d.ts.map +1 -0
  608. package/dist/hooks/usePrevious/usePrevious.d.ts +13 -0
  609. package/dist/hooks/usePrevious/usePrevious.d.ts.map +1 -0
  610. package/dist/hooks/usePrevious.js +17 -0
  611. package/dist/hooks/usePrevious.js.map +1 -0
  612. package/dist/hooks/usePrevious.mjs +15 -0
  613. package/dist/hooks/usePrevious.mjs.map +1 -0
  614. package/dist/hooks/useResizeObserver.js +1 -0
  615. package/dist/hooks/useResizeObserver.mjs +1 -0
  616. package/dist/hooks/useScrollPosition/index.d.ts +2 -0
  617. package/dist/hooks/useScrollPosition/index.d.ts.map +1 -0
  618. package/dist/hooks/useScrollPosition/useScrollPosition.d.ts +37 -0
  619. package/dist/hooks/useScrollPosition/useScrollPosition.d.ts.map +1 -0
  620. package/dist/hooks/useScrollPosition.js +41 -0
  621. package/dist/hooks/useScrollPosition.js.map +1 -0
  622. package/dist/hooks/useScrollPosition.mjs +39 -0
  623. package/dist/hooks/useScrollPosition.mjs.map +1 -0
  624. package/dist/hooks/useSessionStorage.js +1 -1
  625. package/dist/hooks/useSessionStorage.mjs +1 -1
  626. package/dist/hooks/useTableFilter.js +1 -1
  627. package/dist/hooks/useTableFilter.mjs +1 -1
  628. package/dist/hooks/useTableSort.js +1 -1
  629. package/dist/hooks/useTableSort.mjs +1 -1
  630. package/dist/hooks/useThrottledCallback.js +1 -1
  631. package/dist/hooks/useThrottledCallback.mjs +1 -1
  632. package/dist/hooks/useTimeout/index.d.ts +2 -0
  633. package/dist/hooks/useTimeout/index.d.ts.map +1 -0
  634. package/dist/hooks/useTimeout/useTimeout.d.ts +19 -0
  635. package/dist/hooks/useTimeout/useTimeout.d.ts.map +1 -0
  636. package/dist/hooks/useTimeout.js +38 -0
  637. package/dist/hooks/useTimeout.js.map +1 -0
  638. package/dist/hooks/useTimeout.mjs +36 -0
  639. package/dist/hooks/useTimeout.mjs.map +1 -0
  640. package/dist/hooks/useToggle.js +1 -1
  641. package/dist/hooks/useToggle.mjs +1 -1
  642. package/dist/hooks/useVirtualList/index.d.ts +2 -0
  643. package/dist/hooks/useVirtualList/index.d.ts.map +1 -0
  644. package/dist/hooks/useVirtualList/useVirtualList.d.ts +47 -0
  645. package/dist/hooks/useVirtualList/useVirtualList.d.ts.map +1 -0
  646. package/dist/hooks/useVirtualList.js +87 -0
  647. package/dist/hooks/useVirtualList.js.map +1 -0
  648. package/dist/hooks/useVirtualList.mjs +85 -0
  649. package/dist/hooks/useVirtualList.mjs.map +1 -0
  650. package/dist/hooks/useWindowSize.js +1 -1
  651. package/dist/hooks/useWindowSize.mjs +1 -1
  652. package/dist/hooks/utils.js +1 -0
  653. package/dist/hooks/utils.mjs +1 -0
  654. package/dist/lib/facade.d.ts +53 -0
  655. package/dist/lib/facade.d.ts.map +1 -0
  656. package/dist/ui/accordion/animated.js +9 -7
  657. package/dist/ui/accordion/animated.js.map +1 -1
  658. package/dist/ui/accordion/animated.mjs +4 -2
  659. package/dist/ui/accordion/animated.mjs.map +1 -1
  660. package/dist/ui/accordion.js +11 -9
  661. package/dist/ui/accordion.js.map +1 -1
  662. package/dist/ui/accordion.mjs +4 -2
  663. package/dist/ui/accordion.mjs.map +1 -1
  664. package/dist/ui/alert/animated.js +4 -2
  665. package/dist/ui/alert/animated.js.map +1 -1
  666. package/dist/ui/alert/animated.mjs +3 -1
  667. package/dist/ui/alert/animated.mjs.map +1 -1
  668. package/dist/ui/alert.js +12 -10
  669. package/dist/ui/alert.js.map +1 -1
  670. package/dist/ui/alert.mjs +4 -2
  671. package/dist/ui/alert.mjs.map +1 -1
  672. package/dist/ui/animated-number.js +5 -58
  673. package/dist/ui/animated-number.js.map +1 -1
  674. package/dist/ui/animated-number.mjs +2 -55
  675. package/dist/ui/animated-number.mjs.map +1 -1
  676. package/dist/ui/avatar/animated.js +7 -5
  677. package/dist/ui/avatar/animated.js.map +1 -1
  678. package/dist/ui/avatar/animated.mjs +4 -2
  679. package/dist/ui/avatar/animated.mjs.map +1 -1
  680. package/dist/ui/avatar.js +11 -9
  681. package/dist/ui/avatar.js.map +1 -1
  682. package/dist/ui/avatar.mjs +4 -2
  683. package/dist/ui/avatar.mjs.map +1 -1
  684. package/dist/ui/badge/animated.js +4 -2
  685. package/dist/ui/badge/animated.js.map +1 -1
  686. package/dist/ui/badge/animated.mjs +3 -1
  687. package/dist/ui/badge/animated.mjs.map +1 -1
  688. package/dist/ui/badge.js +6 -4
  689. package/dist/ui/badge.js.map +1 -1
  690. package/dist/ui/badge.mjs +4 -2
  691. package/dist/ui/badge.mjs.map +1 -1
  692. package/dist/ui/breadcrumb.js +10 -58
  693. package/dist/ui/breadcrumb.js.map +1 -1
  694. package/dist/ui/breadcrumb.mjs +2 -50
  695. package/dist/ui/breadcrumb.mjs.map +1 -1
  696. package/dist/ui/buttons/animated.js +44 -3
  697. package/dist/ui/buttons/animated.js.map +1 -1
  698. package/dist/ui/buttons/animated.mjs +42 -1
  699. package/dist/ui/buttons/animated.mjs.map +1 -1
  700. package/dist/ui/buttons.js +45 -4
  701. package/dist/ui/buttons.mjs +43 -2
  702. package/dist/ui/card/animated.js +9 -7
  703. package/dist/ui/card/animated.js.map +1 -1
  704. package/dist/ui/card/animated.mjs +4 -2
  705. package/dist/ui/card/animated.mjs.map +1 -1
  706. package/dist/ui/card.js +14 -12
  707. package/dist/ui/card.js.map +1 -1
  708. package/dist/ui/card.mjs +4 -2
  709. package/dist/ui/card.mjs.map +1 -1
  710. package/dist/ui/checkbox/animated.js +6 -4
  711. package/dist/ui/checkbox/animated.js.map +1 -1
  712. package/dist/ui/checkbox/animated.mjs +3 -1
  713. package/dist/ui/checkbox/animated.mjs.map +1 -1
  714. package/dist/ui/checkbox.js +10 -8
  715. package/dist/ui/checkbox.js.map +1 -1
  716. package/dist/ui/checkbox.mjs +4 -2
  717. package/dist/ui/checkbox.mjs.map +1 -1
  718. package/dist/ui/combobox/combobox-base.d.ts +37 -0
  719. package/dist/ui/combobox/combobox-base.d.ts.map +1 -0
  720. package/dist/ui/combobox/combobox.d.ts +6 -0
  721. package/dist/ui/combobox/combobox.d.ts.map +1 -0
  722. package/dist/ui/combobox/index.d.ts +4 -0
  723. package/dist/ui/combobox/index.d.ts.map +1 -0
  724. package/dist/ui/combobox/types.d.ts +70 -0
  725. package/dist/ui/combobox/types.d.ts.map +1 -0
  726. package/dist/ui/combobox/variants.d.ts +17 -0
  727. package/dist/ui/combobox/variants.d.ts.map +1 -0
  728. package/dist/ui/combobox.js +510 -0
  729. package/dist/ui/combobox.js.map +1 -0
  730. package/dist/ui/combobox.mjs +495 -0
  731. package/dist/ui/combobox.mjs.map +1 -0
  732. package/dist/ui/command/animated.js +4 -2
  733. package/dist/ui/command/animated.js.map +1 -1
  734. package/dist/ui/command/animated.mjs +3 -1
  735. package/dist/ui/command/animated.mjs.map +1 -1
  736. package/dist/ui/command.js +17 -15
  737. package/dist/ui/command.js.map +1 -1
  738. package/dist/ui/command.mjs +4 -2
  739. package/dist/ui/command.mjs.map +1 -1
  740. package/dist/ui/context-menu.js +9 -59
  741. package/dist/ui/context-menu.js.map +1 -1
  742. package/dist/ui/context-menu.mjs +3 -53
  743. package/dist/ui/context-menu.mjs.map +1 -1
  744. package/dist/ui/copy-button/animated.js +4 -2
  745. package/dist/ui/copy-button/animated.js.map +1 -1
  746. package/dist/ui/copy-button/animated.mjs +3 -1
  747. package/dist/ui/copy-button/animated.mjs.map +1 -1
  748. package/dist/ui/copy-button.js +5 -3
  749. package/dist/ui/copy-button.js.map +1 -1
  750. package/dist/ui/copy-button.mjs +4 -2
  751. package/dist/ui/copy-button.mjs.map +1 -1
  752. package/dist/ui/divider/animated.js +4 -2
  753. package/dist/ui/divider/animated.js.map +1 -1
  754. package/dist/ui/divider/animated.mjs +3 -1
  755. package/dist/ui/divider/animated.mjs.map +1 -1
  756. package/dist/ui/divider.js +8 -6
  757. package/dist/ui/divider.js.map +1 -1
  758. package/dist/ui/divider.mjs +4 -2
  759. package/dist/ui/divider.mjs.map +1 -1
  760. package/dist/ui/drawer/animated.js +13 -11
  761. package/dist/ui/drawer/animated.js.map +1 -1
  762. package/dist/ui/drawer/animated.mjs +4 -2
  763. package/dist/ui/drawer/animated.mjs.map +1 -1
  764. package/dist/ui/drawer.js +13 -11
  765. package/dist/ui/drawer.mjs +3 -1
  766. package/dist/ui/dropdown.js +1 -0
  767. package/dist/ui/dropdown.js.map +1 -1
  768. package/dist/ui/dropdown.mjs +1 -0
  769. package/dist/ui/dropdown.mjs.map +1 -1
  770. package/dist/ui/dynamic-stepper.js +54 -132
  771. package/dist/ui/dynamic-stepper.js.map +1 -1
  772. package/dist/ui/dynamic-stepper.mjs +43 -121
  773. package/dist/ui/dynamic-stepper.mjs.map +1 -1
  774. package/dist/ui/empty-state/animated.js +4 -2
  775. package/dist/ui/empty-state/animated.js.map +1 -1
  776. package/dist/ui/empty-state/animated.mjs +3 -1
  777. package/dist/ui/empty-state/animated.mjs.map +1 -1
  778. package/dist/ui/empty-state.js +12 -10
  779. package/dist/ui/empty-state.js.map +1 -1
  780. package/dist/ui/empty-state.mjs +4 -2
  781. package/dist/ui/empty-state.mjs.map +1 -1
  782. package/dist/ui/file-upload.js +4 -44
  783. package/dist/ui/file-upload.js.map +1 -1
  784. package/dist/ui/file-upload.mjs +2 -42
  785. package/dist/ui/file-upload.mjs.map +1 -1
  786. package/dist/ui/inputs/animated.js +5 -3
  787. package/dist/ui/inputs/animated.js.map +1 -1
  788. package/dist/ui/inputs/animated.mjs +3 -1
  789. package/dist/ui/inputs/animated.mjs.map +1 -1
  790. package/dist/ui/inputs.js +6 -4
  791. package/dist/ui/inputs.js.map +1 -1
  792. package/dist/ui/inputs.mjs +4 -2
  793. package/dist/ui/inputs.mjs.map +1 -1
  794. package/dist/ui/kbd/animated.js +4 -2
  795. package/dist/ui/kbd/animated.js.map +1 -1
  796. package/dist/ui/kbd/animated.mjs +3 -1
  797. package/dist/ui/kbd/animated.mjs.map +1 -1
  798. package/dist/ui/kbd.js +6 -4
  799. package/dist/ui/kbd.js.map +1 -1
  800. package/dist/ui/kbd.mjs +4 -2
  801. package/dist/ui/kbd.mjs.map +1 -1
  802. package/dist/ui/marquee.js +7 -68
  803. package/dist/ui/marquee.js.map +1 -1
  804. package/dist/ui/marquee.mjs +2 -63
  805. package/dist/ui/marquee.mjs.map +1 -1
  806. package/dist/ui/modal/animated.js +6 -4
  807. package/dist/ui/modal/animated.js.map +1 -1
  808. package/dist/ui/modal/animated.mjs +3 -1
  809. package/dist/ui/modal/animated.mjs.map +1 -1
  810. package/dist/ui/modal.js +14 -12
  811. package/dist/ui/modal.js.map +1 -1
  812. package/dist/ui/modal.mjs +4 -2
  813. package/dist/ui/modal.mjs.map +1 -1
  814. package/dist/ui/otp-input.js +11 -57
  815. package/dist/ui/otp-input.js.map +1 -1
  816. package/dist/ui/otp-input.mjs +2 -48
  817. package/dist/ui/otp-input.mjs.map +1 -1
  818. package/dist/ui/pagination.js +50 -95
  819. package/dist/ui/pagination.js.map +1 -1
  820. package/dist/ui/pagination.mjs +42 -87
  821. package/dist/ui/pagination.mjs.map +1 -1
  822. package/dist/ui/popover/animated.js +6 -4
  823. package/dist/ui/popover/animated.js.map +1 -1
  824. package/dist/ui/popover/animated.mjs +3 -1
  825. package/dist/ui/popover/animated.mjs.map +1 -1
  826. package/dist/ui/popover.js +9 -7
  827. package/dist/ui/popover.mjs +3 -1
  828. package/dist/ui/progress/animated.js +10 -8
  829. package/dist/ui/progress/animated.js.map +1 -1
  830. package/dist/ui/progress/animated.mjs +4 -2
  831. package/dist/ui/progress/animated.mjs.map +1 -1
  832. package/dist/ui/progress/variants.d.ts +2 -2
  833. package/dist/ui/progress.js +11 -9
  834. package/dist/ui/progress.js.map +1 -1
  835. package/dist/ui/progress.mjs +4 -2
  836. package/dist/ui/progress.mjs.map +1 -1
  837. package/dist/ui/radio-group/animated.js +9 -7
  838. package/dist/ui/radio-group/animated.js.map +1 -1
  839. package/dist/ui/radio-group/animated.mjs +3 -1
  840. package/dist/ui/radio-group/animated.mjs.map +1 -1
  841. package/dist/ui/radio-group.js +13 -11
  842. package/dist/ui/radio-group.js.map +1 -1
  843. package/dist/ui/radio-group.mjs +4 -2
  844. package/dist/ui/radio-group.mjs.map +1 -1
  845. package/dist/ui/rating.js +12 -74
  846. package/dist/ui/rating.js.map +1 -1
  847. package/dist/ui/rating.mjs +2 -64
  848. package/dist/ui/rating.mjs.map +1 -1
  849. package/dist/ui/scroll-area.js +8 -62
  850. package/dist/ui/scroll-area.js.map +1 -1
  851. package/dist/ui/scroll-area.mjs +2 -56
  852. package/dist/ui/scroll-area.mjs.map +1 -1
  853. package/dist/ui/search.js +4 -2
  854. package/dist/ui/search.js.map +1 -1
  855. package/dist/ui/search.mjs +3 -1
  856. package/dist/ui/search.mjs.map +1 -1
  857. package/dist/ui/select.js +12 -167
  858. package/dist/ui/select.js.map +1 -1
  859. package/dist/ui/select.mjs +2 -157
  860. package/dist/ui/select.mjs.map +1 -1
  861. package/dist/ui/skeleton/animated.js +10 -8
  862. package/dist/ui/skeleton/animated.js.map +1 -1
  863. package/dist/ui/skeleton/animated.mjs +3 -1
  864. package/dist/ui/skeleton/animated.mjs.map +1 -1
  865. package/dist/ui/skeleton.js +11 -9
  866. package/dist/ui/skeleton.mjs +3 -1
  867. package/dist/ui/slider.js +10 -75
  868. package/dist/ui/slider.js.map +1 -1
  869. package/dist/ui/slider.mjs +2 -67
  870. package/dist/ui/slider.mjs.map +1 -1
  871. package/dist/ui/spinner/animated.js +6 -66
  872. package/dist/ui/spinner/animated.js.map +1 -1
  873. package/dist/ui/spinner/animated.mjs +2 -62
  874. package/dist/ui/spinner/animated.mjs.map +1 -1
  875. package/dist/ui/table/animated.js +10 -8
  876. package/dist/ui/table/animated.js.map +1 -1
  877. package/dist/ui/table/animated.mjs +4 -2
  878. package/dist/ui/table/animated.mjs.map +1 -1
  879. package/dist/ui/table.js +16 -14
  880. package/dist/ui/table.mjs +3 -1
  881. package/dist/ui/tabs/animated.js +4 -2
  882. package/dist/ui/tabs/animated.js.map +1 -1
  883. package/dist/ui/tabs/animated.mjs +3 -1
  884. package/dist/ui/tabs/animated.mjs.map +1 -1
  885. package/dist/ui/tabs.js +11 -9
  886. package/dist/ui/tabs.mjs +3 -1
  887. package/dist/ui/timeline/animated.js +13 -11
  888. package/dist/ui/timeline/animated.js.map +1 -1
  889. package/dist/ui/timeline/animated.mjs +4 -2
  890. package/dist/ui/timeline/animated.mjs.map +1 -1
  891. package/dist/ui/timeline.js +16 -14
  892. package/dist/ui/timeline.js.map +1 -1
  893. package/dist/ui/timeline.mjs +4 -2
  894. package/dist/ui/timeline.mjs.map +1 -1
  895. package/dist/ui/toast/animated.js +9 -7
  896. package/dist/ui/toast/animated.js.map +1 -1
  897. package/dist/ui/toast/animated.mjs +3 -1
  898. package/dist/ui/toast/animated.mjs.map +1 -1
  899. package/dist/ui/toast.js +14 -12
  900. package/dist/ui/toast.mjs +3 -1
  901. package/dist/ui/toggle/animated.js +6 -4
  902. package/dist/ui/toggle/animated.js.map +1 -1
  903. package/dist/ui/toggle/animated.mjs +3 -1
  904. package/dist/ui/toggle/animated.mjs.map +1 -1
  905. package/dist/ui/toggle.js +6 -4
  906. package/dist/ui/toggle.js.map +1 -1
  907. package/dist/ui/toggle.mjs +4 -2
  908. package/dist/ui/toggle.mjs.map +1 -1
  909. package/dist/ui/tooltip/animated.js +5 -3
  910. package/dist/ui/tooltip/animated.js.map +1 -1
  911. package/dist/ui/tooltip/animated.mjs +3 -1
  912. package/dist/ui/tooltip/animated.mjs.map +1 -1
  913. package/dist/ui/tooltip.js +9 -7
  914. package/dist/ui/tooltip.mjs +3 -1
  915. package/dist/ui/tree-view/animated.js +4 -2
  916. package/dist/ui/tree-view/animated.js.map +1 -1
  917. package/dist/ui/tree-view/animated.mjs +3 -1
  918. package/dist/ui/tree-view/animated.mjs.map +1 -1
  919. package/dist/ui/tree-view.js +7 -5
  920. package/dist/ui/tree-view.js.map +1 -1
  921. package/dist/ui/tree-view.mjs +4 -2
  922. package/dist/ui/tree-view.mjs.map +1 -1
  923. package/dist/ui/typography.js +9 -51
  924. package/dist/ui/typography.js.map +1 -1
  925. package/dist/ui/typography.mjs +2 -44
  926. package/dist/ui/typography.mjs.map +1 -1
  927. package/package.json +7 -2
  928. package/src/design-system/button.ts +1 -1
  929. package/src/design-system/combobox.ts +204 -0
  930. package/src/design-system/copy-button.ts +1 -1
  931. package/src/design-system/index.ts +1 -0
  932. package/src/hooks/index.ts +50 -0
  933. package/src/hooks/useCookie/index.ts +5 -0
  934. package/src/hooks/useCookie/useCookie.test.ts +57 -0
  935. package/src/hooks/useCookie/useCookie.ts +133 -0
  936. package/src/hooks/useCountdown/index.ts +5 -0
  937. package/src/hooks/useCountdown/useCountdown.test.ts +113 -0
  938. package/src/hooks/useCountdown/useCountdown.ts +106 -0
  939. package/src/hooks/useEventListener/index.ts +4 -0
  940. package/src/hooks/useEventListener/useEventListener.test.ts +60 -0
  941. package/src/hooks/useEventListener/useEventListener.ts +98 -0
  942. package/src/hooks/useGeolocation/index.ts +6 -0
  943. package/src/hooks/useGeolocation/useGeolocation.test.ts +108 -0
  944. package/src/hooks/useGeolocation/useGeolocation.ts +173 -0
  945. package/src/hooks/useHotkeys/index.ts +5 -0
  946. package/src/hooks/useHotkeys/useHotkeys.test.ts +82 -0
  947. package/src/hooks/useHotkeys/useHotkeys.ts +130 -0
  948. package/src/hooks/useIdleTimeout/index.ts +5 -0
  949. package/src/hooks/useIdleTimeout/useIdleTimeout.test.ts +97 -0
  950. package/src/hooks/useIdleTimeout/useIdleTimeout.ts +111 -0
  951. package/src/hooks/useInterval/index.ts +1 -0
  952. package/src/hooks/useInterval/useInterval.test.ts +56 -0
  953. package/src/hooks/useInterval/useInterval.ts +36 -0
  954. package/src/hooks/useKeyPress/index.ts +1 -0
  955. package/src/hooks/useKeyPress/useKeyPress.test.ts +67 -0
  956. package/src/hooks/useKeyPress/useKeyPress.ts +65 -0
  957. package/src/hooks/useLongPress/index.ts +5 -0
  958. package/src/hooks/useLongPress/useLongPress.test.ts +180 -0
  959. package/src/hooks/useLongPress/useLongPress.ts +177 -0
  960. package/src/hooks/usePrevious/index.ts +1 -0
  961. package/src/hooks/usePrevious/usePrevious.test.ts +33 -0
  962. package/src/hooks/usePrevious/usePrevious.ts +24 -0
  963. package/src/hooks/useScrollPosition/index.ts +5 -0
  964. package/src/hooks/useScrollPosition/useScrollPosition.test.ts +69 -0
  965. package/src/hooks/useScrollPosition/useScrollPosition.ts +88 -0
  966. package/src/hooks/useTimeout/index.ts +1 -0
  967. package/src/hooks/useTimeout/useTimeout.test.ts +63 -0
  968. package/src/hooks/useTimeout/useTimeout.ts +58 -0
  969. package/src/hooks/useVirtualList/index.ts +6 -0
  970. package/src/hooks/useVirtualList/useVirtualList.test.ts +102 -0
  971. package/src/hooks/useVirtualList/useVirtualList.ts +144 -0
  972. package/src/lib/facade.test.ts +182 -0
  973. package/src/lib/facade.ts +809 -0
  974. package/src/ui/combobox/combobox-base.tsx +552 -0
  975. package/src/ui/combobox/combobox.test.tsx +292 -0
  976. package/src/ui/combobox/combobox.tsx +8 -0
  977. package/src/ui/combobox/index.ts +33 -0
  978. package/src/ui/combobox/types.ts +91 -0
  979. package/src/ui/combobox/variants.ts +58 -0
  980. package/dist/chunk-2RBUROXJ.js.map +0 -1
  981. package/dist/chunk-3IBWZM52.js.map +0 -1
  982. package/dist/chunk-3RHJJZIT.js +0 -98
  983. package/dist/chunk-3RHJJZIT.js.map +0 -1
  984. package/dist/chunk-4GVMPQZS.js.map +0 -1
  985. package/dist/chunk-4WRCXG5E.mjs.map +0 -1
  986. package/dist/chunk-6GPUHFXI.mjs.map +0 -1
  987. package/dist/chunk-6ONKAOI7.mjs.map +0 -1
  988. package/dist/chunk-6VZGM4DI.mjs.map +0 -1
  989. package/dist/chunk-7PIOCFV3.mjs.map +0 -1
  990. package/dist/chunk-7XHWUEQR.mjs.map +0 -1
  991. package/dist/chunk-AFBKMQMK.js.map +0 -1
  992. package/dist/chunk-AS34PVUG.mjs.map +0 -1
  993. package/dist/chunk-B3LCKPBX.js.map +0 -1
  994. package/dist/chunk-CARQELOX.mjs.map +0 -1
  995. package/dist/chunk-CCVQ5KX6.mjs +0 -96
  996. package/dist/chunk-CCVQ5KX6.mjs.map +0 -1
  997. package/dist/chunk-DBW25HOR.mjs.map +0 -1
  998. package/dist/chunk-DMDCXYNN.js.map +0 -1
  999. package/dist/chunk-EKLWWV3G.mjs.map +0 -1
  1000. package/dist/chunk-ENV73575.mjs.map +0 -1
  1001. package/dist/chunk-HI54NLVM.js.map +0 -1
  1002. package/dist/chunk-JGSQZZHF.js.map +0 -1
  1003. package/dist/chunk-JRB22VVK.js.map +0 -1
  1004. package/dist/chunk-KC77BXBC.js.map +0 -1
  1005. package/dist/chunk-KIAYTBS5.js.map +0 -1
  1006. package/dist/chunk-KLGB3FYE.js.map +0 -1
  1007. package/dist/chunk-O233I5N7.mjs.map +0 -1
  1008. package/dist/chunk-OEDD43IT.mjs.map +0 -1
  1009. package/dist/chunk-OY3YJGOX.mjs.map +0 -1
  1010. package/dist/chunk-PZBTZGJE.js.map +0 -1
  1011. package/dist/chunk-QCHHXFJQ.js.map +0 -1
  1012. package/dist/chunk-REDZL4DY.mjs.map +0 -1
  1013. package/dist/chunk-RFBTMJ2Z.mjs.map +0 -1
  1014. package/dist/chunk-S4NQTWMW.mjs.map +0 -1
  1015. package/dist/chunk-SRLYXLUU.js.map +0 -1
  1016. package/dist/chunk-U7FZ5RMV.js.map +0 -1
  1017. package/dist/chunk-UMXCV5IT.mjs.map +0 -1
  1018. package/dist/chunk-UNPKDNLA.js.map +0 -1
  1019. package/dist/chunk-URXYF25P.mjs.map +0 -1
  1020. package/dist/chunk-VGVB5XZX.js.map +0 -1
  1021. package/dist/chunk-VJSME7ML.js.map +0 -1
  1022. package/dist/chunk-VO7LNOC5.mjs.map +0 -1
  1023. package/dist/chunk-VX56EVPF.mjs.map +0 -1
  1024. package/dist/chunk-W73CZFMA.mjs.map +0 -1
  1025. package/dist/chunk-WRHUWKZS.js.map +0 -1
  1026. package/dist/chunk-WVBFSJEB.js.map +0 -1
  1027. package/dist/chunk-XIG2QDVN.js.map +0 -1
  1028. package/dist/chunk-XJFDGKZO.mjs.map +0 -1
  1029. package/dist/chunk-XOYCFLEZ.mjs.map +0 -1
  1030. package/dist/chunk-YFXGRV7X.mjs.map +0 -1
  1031. package/dist/chunk-ZZ53RJNH.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/useEventListener/useEventListener.ts"],"names":["useRef","useEffect"],"mappings":";;;;;AAUA,SAAS,cACP,MAAA,EACoB;AACpB,EAAA,IAAI,WAAW,MAAA,EAAW;AAExB,IAAA,OAAO,OAAO,MAAA,KAAW,WAAA,GAAc,IAAA,GAAO,MAAA;AAAA,EAChD;AACA,EAAA,IAAI,WAAW,IAAA,EAAM;AAEnB,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,IAAI,kBAAkB,WAAA,EAAa;AACjC,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,OAAO,MAAA,CAAO,OAAA;AAChB;AAuCO,SAAS,gBAAA,CACd,SAAA,EACA,OAAA,EACA,MAAA,EACA,OAAA,EACM;AACN,EAAA,MAAM,UAAA,GAAaA,aAAO,OAAO,CAAA;AAEjC,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,UAAA,CAAW,OAAA,GAAU,OAAA;AAAA,EACvB,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAIZ,EAAA,MAAM,UACJ,OAAO,OAAA,KAAY,SAAA,GAAY,OAAA,GAAW,SAAS,OAAA,IAAW,KAAA;AAChE,EAAA,MAAM,UAAU,OAAO,OAAA,KAAY,QAAA,GAAY,OAAA,EAAS,WAAW,KAAA,GAAS,KAAA;AAC5E,EAAA,MAAM,OAAO,OAAO,OAAA,KAAY,QAAA,GAAY,OAAA,EAAS,QAAQ,KAAA,GAAS,KAAA;AAEtE,EAAAA,eAAA,CAAU,MAAM;AACd,IAAA,MAAM,IAAA,GAAO,cAAc,MAAM,CAAA;AACjC,IAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,eAAA,GAAkB,EAAE,OAAA,EAAS,OAAA,EAAS,IAAA,EAAK;AACjD,IAAA,MAAM,QAAA,GAAW,CAAC,KAAA,KAAiB;AACjC,MAAA,UAAA,CAAW,QAAQ,KAAK,CAAA;AAAA,IAC1B,CAAA;AACA,IAAA,IAAA,CAAK,gBAAA,CAAiB,SAAA,EAAW,QAAA,EAAU,eAAe,CAAA;AAC1D,IAAA,OAAO,MAAM;AACX,MAAA,IAAA,CAAK,mBAAA,CAAoB,SAAA,EAAW,QAAA,EAAU,eAAe,CAAA;AAAA,IAC/D,CAAA;AAAA,EACF,GAAG,CAAC,SAAA,EAAW,QAAQ,OAAA,EAAS,OAAA,EAAS,IAAI,CAAC,CAAA;AAChD","file":"useEventListener.js","sourcesContent":["\"use client\";\n\nimport type { RefObject } from \"react\";\nimport { useEffect, useRef } from \"react\";\n\nexport type UseEventListenerTarget =\n | EventTarget\n | RefObject<EventTarget | null>\n | null;\n\nfunction resolveTarget(\n target: UseEventListenerTarget | undefined,\n): EventTarget | null {\n if (target === undefined) {\n // No target specified — default to window.\n return typeof window === \"undefined\" ? null : window;\n }\n if (target === null) {\n // Explicit null — caller opts out; do not attach any listener.\n return null;\n }\n if (target instanceof EventTarget) {\n return target;\n }\n return target.current;\n}\n\n/**\n * Attaches a DOM event listener with automatic cleanup and a stable wrapper around the latest handler.\n *\n * - Defaults to `window`; pass an element, `document`, or a React ref object as `target`.\n * - Pass explicit `null` as `target` to skip attaching (useful for conditional subscriptions).\n * - The handler is kept in a ref, so passing a new inline function each render does not re-subscribe.\n * - Ref targets are resolved when the effect runs (after mount); if the ref is retargeted later,\n * re-render with a state-backed node (or key the component) to re-subscribe.\n * - Pass `options` as individual booleans or a stable object reference to avoid re-subscribing on\n * every render. Internally, `capture`, `passive`, and `once` are compared individually.\n *\n * @param eventName - DOM event name (typed against `WindowEventMap` / `DocumentEventMap` / `HTMLElementEventMap`).\n * @param handler - Listener invoked with the native event.\n * @param target - Event target, React ref to one, `undefined` for `window`, or `null` to skip.\n * @param options - Standard `addEventListener` options.\n */\nexport function useEventListener<K extends keyof WindowEventMap>(\n eventName: K,\n handler: (event: WindowEventMap[K]) => void,\n target?: Window | null,\n options?: boolean | AddEventListenerOptions,\n): void;\nexport function useEventListener<K extends keyof DocumentEventMap>(\n eventName: K,\n handler: (event: DocumentEventMap[K]) => void,\n target: Document | RefObject<Document | null>,\n options?: boolean | AddEventListenerOptions,\n): void;\nexport function useEventListener<\n K extends keyof HTMLElementEventMap,\n T extends HTMLElement = HTMLElement,\n>(\n eventName: K,\n handler: (event: HTMLElementEventMap[K]) => void,\n target: T | RefObject<T | null> | null,\n options?: boolean | AddEventListenerOptions,\n): void;\nexport function useEventListener(\n eventName: string,\n handler: (event: Event) => void,\n target?: UseEventListenerTarget,\n options?: boolean | AddEventListenerOptions,\n): void {\n const handlerRef = useRef(handler);\n\n useEffect(() => {\n handlerRef.current = handler;\n }, [handler]);\n\n // Destructure options to stable primitives so an inline `{ passive: true }` object literal\n // passed by callers does not cause the listener to be removed and re-added on every render.\n const capture =\n typeof options === \"boolean\" ? options : (options?.capture ?? false);\n const passive = typeof options === \"object\" ? (options?.passive ?? false) : false;\n const once = typeof options === \"object\" ? (options?.once ?? false) : false;\n\n useEffect(() => {\n const node = resolveTarget(target);\n if (node == null) {\n return;\n }\n const listenerOptions = { capture, passive, once };\n const listener = (event: Event) => {\n handlerRef.current(event);\n };\n node.addEventListener(eventName, listener, listenerOptions);\n return () => {\n node.removeEventListener(eventName, listener, listenerOptions);\n };\n }, [eventName, target, capture, passive, once]);\n}\n"]}
@@ -0,0 +1,43 @@
1
+ "use client";
2
+ import '../chunk-J5LGTIGS.mjs';
3
+ import { useRef, useEffect } from 'react';
4
+
5
+ function resolveTarget(target) {
6
+ if (target === void 0) {
7
+ return typeof window === "undefined" ? null : window;
8
+ }
9
+ if (target === null) {
10
+ return null;
11
+ }
12
+ if (target instanceof EventTarget) {
13
+ return target;
14
+ }
15
+ return target.current;
16
+ }
17
+ function useEventListener(eventName, handler, target, options) {
18
+ const handlerRef = useRef(handler);
19
+ useEffect(() => {
20
+ handlerRef.current = handler;
21
+ }, [handler]);
22
+ const capture = typeof options === "boolean" ? options : options?.capture ?? false;
23
+ const passive = typeof options === "object" ? options?.passive ?? false : false;
24
+ const once = typeof options === "object" ? options?.once ?? false : false;
25
+ useEffect(() => {
26
+ const node = resolveTarget(target);
27
+ if (node == null) {
28
+ return;
29
+ }
30
+ const listenerOptions = { capture, passive, once };
31
+ const listener = (event) => {
32
+ handlerRef.current(event);
33
+ };
34
+ node.addEventListener(eventName, listener, listenerOptions);
35
+ return () => {
36
+ node.removeEventListener(eventName, listener, listenerOptions);
37
+ };
38
+ }, [eventName, target, capture, passive, once]);
39
+ }
40
+
41
+ export { useEventListener };
42
+ //# sourceMappingURL=useEventListener.mjs.map
43
+ //# sourceMappingURL=useEventListener.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/useEventListener/useEventListener.ts"],"names":[],"mappings":";;;AAUA,SAAS,cACP,MAAA,EACoB;AACpB,EAAA,IAAI,WAAW,MAAA,EAAW;AAExB,IAAA,OAAO,OAAO,MAAA,KAAW,WAAA,GAAc,IAAA,GAAO,MAAA;AAAA,EAChD;AACA,EAAA,IAAI,WAAW,IAAA,EAAM;AAEnB,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,IAAI,kBAAkB,WAAA,EAAa;AACjC,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,OAAO,MAAA,CAAO,OAAA;AAChB;AAuCO,SAAS,gBAAA,CACd,SAAA,EACA,OAAA,EACA,MAAA,EACA,OAAA,EACM;AACN,EAAA,MAAM,UAAA,GAAa,OAAO,OAAO,CAAA;AAEjC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,UAAA,CAAW,OAAA,GAAU,OAAA;AAAA,EACvB,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAIZ,EAAA,MAAM,UACJ,OAAO,OAAA,KAAY,SAAA,GAAY,OAAA,GAAW,SAAS,OAAA,IAAW,KAAA;AAChE,EAAA,MAAM,UAAU,OAAO,OAAA,KAAY,QAAA,GAAY,OAAA,EAAS,WAAW,KAAA,GAAS,KAAA;AAC5E,EAAA,MAAM,OAAO,OAAO,OAAA,KAAY,QAAA,GAAY,OAAA,EAAS,QAAQ,KAAA,GAAS,KAAA;AAEtE,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,IAAA,GAAO,cAAc,MAAM,CAAA;AACjC,IAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,eAAA,GAAkB,EAAE,OAAA,EAAS,OAAA,EAAS,IAAA,EAAK;AACjD,IAAA,MAAM,QAAA,GAAW,CAAC,KAAA,KAAiB;AACjC,MAAA,UAAA,CAAW,QAAQ,KAAK,CAAA;AAAA,IAC1B,CAAA;AACA,IAAA,IAAA,CAAK,gBAAA,CAAiB,SAAA,EAAW,QAAA,EAAU,eAAe,CAAA;AAC1D,IAAA,OAAO,MAAM;AACX,MAAA,IAAA,CAAK,mBAAA,CAAoB,SAAA,EAAW,QAAA,EAAU,eAAe,CAAA;AAAA,IAC/D,CAAA;AAAA,EACF,GAAG,CAAC,SAAA,EAAW,QAAQ,OAAA,EAAS,OAAA,EAAS,IAAI,CAAC,CAAA;AAChD","file":"useEventListener.mjs","sourcesContent":["\"use client\";\n\nimport type { RefObject } from \"react\";\nimport { useEffect, useRef } from \"react\";\n\nexport type UseEventListenerTarget =\n | EventTarget\n | RefObject<EventTarget | null>\n | null;\n\nfunction resolveTarget(\n target: UseEventListenerTarget | undefined,\n): EventTarget | null {\n if (target === undefined) {\n // No target specified — default to window.\n return typeof window === \"undefined\" ? null : window;\n }\n if (target === null) {\n // Explicit null — caller opts out; do not attach any listener.\n return null;\n }\n if (target instanceof EventTarget) {\n return target;\n }\n return target.current;\n}\n\n/**\n * Attaches a DOM event listener with automatic cleanup and a stable wrapper around the latest handler.\n *\n * - Defaults to `window`; pass an element, `document`, or a React ref object as `target`.\n * - Pass explicit `null` as `target` to skip attaching (useful for conditional subscriptions).\n * - The handler is kept in a ref, so passing a new inline function each render does not re-subscribe.\n * - Ref targets are resolved when the effect runs (after mount); if the ref is retargeted later,\n * re-render with a state-backed node (or key the component) to re-subscribe.\n * - Pass `options` as individual booleans or a stable object reference to avoid re-subscribing on\n * every render. Internally, `capture`, `passive`, and `once` are compared individually.\n *\n * @param eventName - DOM event name (typed against `WindowEventMap` / `DocumentEventMap` / `HTMLElementEventMap`).\n * @param handler - Listener invoked with the native event.\n * @param target - Event target, React ref to one, `undefined` for `window`, or `null` to skip.\n * @param options - Standard `addEventListener` options.\n */\nexport function useEventListener<K extends keyof WindowEventMap>(\n eventName: K,\n handler: (event: WindowEventMap[K]) => void,\n target?: Window | null,\n options?: boolean | AddEventListenerOptions,\n): void;\nexport function useEventListener<K extends keyof DocumentEventMap>(\n eventName: K,\n handler: (event: DocumentEventMap[K]) => void,\n target: Document | RefObject<Document | null>,\n options?: boolean | AddEventListenerOptions,\n): void;\nexport function useEventListener<\n K extends keyof HTMLElementEventMap,\n T extends HTMLElement = HTMLElement,\n>(\n eventName: K,\n handler: (event: HTMLElementEventMap[K]) => void,\n target: T | RefObject<T | null> | null,\n options?: boolean | AddEventListenerOptions,\n): void;\nexport function useEventListener(\n eventName: string,\n handler: (event: Event) => void,\n target?: UseEventListenerTarget,\n options?: boolean | AddEventListenerOptions,\n): void {\n const handlerRef = useRef(handler);\n\n useEffect(() => {\n handlerRef.current = handler;\n }, [handler]);\n\n // Destructure options to stable primitives so an inline `{ passive: true }` object literal\n // passed by callers does not cause the listener to be removed and re-added on every render.\n const capture =\n typeof options === \"boolean\" ? options : (options?.capture ?? false);\n const passive = typeof options === \"object\" ? (options?.passive ?? false) : false;\n const once = typeof options === \"object\" ? (options?.once ?? false) : false;\n\n useEffect(() => {\n const node = resolveTarget(target);\n if (node == null) {\n return;\n }\n const listenerOptions = { capture, passive, once };\n const listener = (event: Event) => {\n handlerRef.current(event);\n };\n node.addEventListener(eventName, listener, listenerOptions);\n return () => {\n node.removeEventListener(eventName, listener, listenerOptions);\n };\n }, [eventName, target, capture, passive, once]);\n}\n"]}
@@ -3,6 +3,7 @@
3
3
 
4
4
  var chunkGBWGVNDA_js = require('../chunk-GBWGVNDA.js');
5
5
  require('../chunk-UIYFEP3I.js');
6
+ require('../chunk-PZ5AY32C.js');
6
7
 
7
8
 
8
9
 
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  export { useFocusManagement } from '../chunk-K6YI4FJO.mjs';
3
3
  import '../chunk-PMAF6FBF.mjs';
4
+ import '../chunk-J5LGTIGS.mjs';
4
5
  //# sourceMappingURL=useFocusManagement.mjs.map
5
6
  //# sourceMappingURL=useFocusManagement.mjs.map
@@ -0,0 +1,2 @@
1
+ export { useGeolocation, type GeolocationCoordinatesSnapshot, type UseGeolocationParams, type UseGeolocationResult, } from "./useGeolocation";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useGeolocation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,KAAK,8BAA8B,EACnC,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,GAC1B,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,48 @@
1
+ export type GeolocationCoordinatesSnapshot = {
2
+ latitude: number;
3
+ longitude: number;
4
+ accuracy: number;
5
+ altitude: number | null;
6
+ altitudeAccuracy: number | null;
7
+ heading: number | null;
8
+ speed: number | null;
9
+ timestamp: number;
10
+ };
11
+ export type UseGeolocationParams = {
12
+ /** Start requesting the position (default `true`). Set `false` to defer the permission prompt. */
13
+ enabled?: boolean;
14
+ /** Keep watching for position updates instead of a one-shot read (default `true`). */
15
+ watch?: boolean;
16
+ /** `PositionOptions.enableHighAccuracy`. */
17
+ enableHighAccuracy?: boolean;
18
+ /** `PositionOptions.maximumAge` in milliseconds. */
19
+ maximumAge?: number;
20
+ /** `PositionOptions.timeout` in milliseconds. */
21
+ timeout?: number;
22
+ };
23
+ export type UseGeolocationResult = {
24
+ /** Whether `navigator.geolocation` exists in this browser. */
25
+ isSupported: boolean;
26
+ /** True while enabled and no position or error has arrived yet. */
27
+ loading: boolean;
28
+ /** Permission state from the Permissions API (`"unknown"` where unsupported or before resolution). */
29
+ permission: PermissionState | "unknown";
30
+ /** Latest position snapshot, or `null` before the first fix. */
31
+ position: GeolocationCoordinatesSnapshot | null;
32
+ /** Latest geolocation error, cleared when a new fix succeeds. */
33
+ error: GeolocationPositionError | null;
34
+ };
35
+ /**
36
+ * Browser geolocation with loading, error, and Permissions API state.
37
+ *
38
+ * - Requesting the position triggers the browser permission prompt; pass `enabled: false`
39
+ * and flip it from a user gesture to avoid prompting on mount.
40
+ * - `watch: true` (default) uses `watchPosition` for live updates; `false` reads once.
41
+ * - `permission` mirrors `navigator.permissions.query({ name: "geolocation" })` including
42
+ * change events, independent of whether a request is active.
43
+ *
44
+ * @param params - {@link UseGeolocationParams}
45
+ * @returns {@link UseGeolocationResult}
46
+ */
47
+ export declare function useGeolocation(params?: UseGeolocationParams): UseGeolocationResult;
48
+ //# sourceMappingURL=useGeolocation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGeolocation.d.ts","sourceRoot":"","sources":["../../../src/hooks/useGeolocation/useGeolocation.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,8BAA8B,GAAG;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,kGAAkG;IAClG,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sFAAsF;IACtF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4CAA4C;IAC5C,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,8DAA8D;IAC9D,WAAW,EAAE,OAAO,CAAC;IACrB,mEAAmE;IACnE,OAAO,EAAE,OAAO,CAAC;IACjB,sGAAsG;IACtG,UAAU,EAAE,eAAe,GAAG,SAAS,CAAC;IACxC,gEAAgE;IAChE,QAAQ,EAAE,8BAA8B,GAAG,IAAI,CAAC;IAChD,iEAAiE;IACjE,KAAK,EAAE,wBAAwB,GAAG,IAAI,CAAC;CACxC,CAAC;AAgBF;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAC5B,MAAM,GAAE,oBAAyB,GAChC,oBAAoB,CAuGtB"}
@@ -0,0 +1,111 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ require('../chunk-PZ5AY32C.js');
5
+ var react = require('react');
6
+
7
+ function toSnapshot(position) {
8
+ const { coords } = position;
9
+ return {
10
+ latitude: coords.latitude,
11
+ longitude: coords.longitude,
12
+ accuracy: coords.accuracy,
13
+ altitude: coords.altitude,
14
+ altitudeAccuracy: coords.altitudeAccuracy,
15
+ heading: coords.heading,
16
+ speed: coords.speed,
17
+ timestamp: position.timestamp
18
+ };
19
+ }
20
+ function useGeolocation(params = {}) {
21
+ const {
22
+ enabled = true,
23
+ watch = true,
24
+ enableHighAccuracy,
25
+ maximumAge,
26
+ timeout
27
+ } = params;
28
+ const isSupported = typeof navigator !== "undefined" && "geolocation" in navigator;
29
+ const [permission, setPermission] = react.useState(
30
+ "unknown"
31
+ );
32
+ const [position, setPosition] = react.useState(null);
33
+ const [error, setError] = react.useState(null);
34
+ const [settled, setSettled] = react.useState(false);
35
+ react.useEffect(() => {
36
+ if (typeof navigator === "undefined" || navigator.permissions?.query == null) {
37
+ return;
38
+ }
39
+ let active = true;
40
+ let status;
41
+ const onChange = () => {
42
+ if (active && status) {
43
+ setPermission(status.state);
44
+ }
45
+ };
46
+ navigator.permissions.query({ name: "geolocation" }).then((result) => {
47
+ if (!active) {
48
+ return;
49
+ }
50
+ status = result;
51
+ setPermission(result.state);
52
+ result.addEventListener("change", onChange);
53
+ }).catch(() => {
54
+ });
55
+ return () => {
56
+ active = false;
57
+ status?.removeEventListener("change", onChange);
58
+ };
59
+ }, []);
60
+ react.useEffect(() => {
61
+ if (!enabled || !isSupported) {
62
+ return;
63
+ }
64
+ const geolocation = navigator.geolocation;
65
+ let active = true;
66
+ setSettled(false);
67
+ const onSuccess = (next) => {
68
+ if (!active) {
69
+ return;
70
+ }
71
+ setPosition(toSnapshot(next));
72
+ setError(null);
73
+ setSettled(true);
74
+ };
75
+ const onError = (nextError) => {
76
+ if (!active) {
77
+ return;
78
+ }
79
+ setError(nextError);
80
+ setSettled(true);
81
+ };
82
+ const options = {
83
+ enableHighAccuracy,
84
+ maximumAge,
85
+ timeout
86
+ };
87
+ let watchId;
88
+ if (watch) {
89
+ watchId = geolocation.watchPosition(onSuccess, onError, options);
90
+ } else {
91
+ geolocation.getCurrentPosition(onSuccess, onError, options);
92
+ }
93
+ return () => {
94
+ active = false;
95
+ if (watchId !== void 0) {
96
+ geolocation.clearWatch(watchId);
97
+ }
98
+ };
99
+ }, [enableHighAccuracy, enabled, isSupported, maximumAge, timeout, watch]);
100
+ return {
101
+ isSupported,
102
+ loading: enabled && isSupported && !settled,
103
+ permission,
104
+ position,
105
+ error
106
+ };
107
+ }
108
+
109
+ exports.useGeolocation = useGeolocation;
110
+ //# sourceMappingURL=useGeolocation.js.map
111
+ //# sourceMappingURL=useGeolocation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/useGeolocation/useGeolocation.ts"],"names":["useState","useEffect"],"mappings":"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","file":"useGeolocation.js","sourcesContent":["\"use client\";\n\nimport { useEffect, useState } from \"react\";\n\nexport type GeolocationCoordinatesSnapshot = {\n latitude: number;\n longitude: number;\n accuracy: number;\n altitude: number | null;\n altitudeAccuracy: number | null;\n heading: number | null;\n speed: number | null;\n timestamp: number;\n};\n\nexport type UseGeolocationParams = {\n /** Start requesting the position (default `true`). Set `false` to defer the permission prompt. */\n enabled?: boolean;\n /** Keep watching for position updates instead of a one-shot read (default `true`). */\n watch?: boolean;\n /** `PositionOptions.enableHighAccuracy`. */\n enableHighAccuracy?: boolean;\n /** `PositionOptions.maximumAge` in milliseconds. */\n maximumAge?: number;\n /** `PositionOptions.timeout` in milliseconds. */\n timeout?: number;\n};\n\nexport type UseGeolocationResult = {\n /** Whether `navigator.geolocation` exists in this browser. */\n isSupported: boolean;\n /** True while enabled and no position or error has arrived yet. */\n loading: boolean;\n /** Permission state from the Permissions API (`\"unknown\"` where unsupported or before resolution). */\n permission: PermissionState | \"unknown\";\n /** Latest position snapshot, or `null` before the first fix. */\n position: GeolocationCoordinatesSnapshot | null;\n /** Latest geolocation error, cleared when a new fix succeeds. */\n error: GeolocationPositionError | null;\n};\n\nfunction toSnapshot(position: GeolocationPosition): GeolocationCoordinatesSnapshot {\n const { coords } = position;\n return {\n latitude: coords.latitude,\n longitude: coords.longitude,\n accuracy: coords.accuracy,\n altitude: coords.altitude,\n altitudeAccuracy: coords.altitudeAccuracy,\n heading: coords.heading,\n speed: coords.speed,\n timestamp: position.timestamp,\n };\n}\n\n/**\n * Browser geolocation with loading, error, and Permissions API state.\n *\n * - Requesting the position triggers the browser permission prompt; pass `enabled: false`\n * and flip it from a user gesture to avoid prompting on mount.\n * - `watch: true` (default) uses `watchPosition` for live updates; `false` reads once.\n * - `permission` mirrors `navigator.permissions.query({ name: \"geolocation\" })` including\n * change events, independent of whether a request is active.\n *\n * @param params - {@link UseGeolocationParams}\n * @returns {@link UseGeolocationResult}\n */\nexport function useGeolocation(\n params: UseGeolocationParams = {},\n): UseGeolocationResult {\n const {\n enabled = true,\n watch = true,\n enableHighAccuracy,\n maximumAge,\n timeout,\n } = params;\n\n const isSupported =\n typeof navigator !== \"undefined\" && \"geolocation\" in navigator;\n\n const [permission, setPermission] = useState<PermissionState | \"unknown\">(\n \"unknown\",\n );\n const [position, setPosition] =\n useState<GeolocationCoordinatesSnapshot | null>(null);\n const [error, setError] = useState<GeolocationPositionError | null>(null);\n const [settled, setSettled] = useState(false);\n\n useEffect(() => {\n if (\n typeof navigator === \"undefined\" ||\n navigator.permissions?.query == null\n ) {\n return;\n }\n let active = true;\n let status: PermissionStatus | undefined;\n const onChange = () => {\n if (active && status) {\n setPermission(status.state);\n }\n };\n navigator.permissions\n .query({ name: \"geolocation\" })\n .then((result) => {\n // Guard against the component unmounting before this promise resolves,\n // which would otherwise attach a listener that can never be cleaned up.\n if (!active) {\n return;\n }\n status = result;\n setPermission(result.state);\n result.addEventListener(\"change\", onChange);\n })\n .catch(() => {\n /* permissions API may reject for geolocation in some browsers */\n });\n return () => {\n active = false;\n status?.removeEventListener(\"change\", onChange);\n };\n }, []);\n\n useEffect(() => {\n if (!enabled || !isSupported) {\n return;\n }\n const geolocation = navigator.geolocation;\n let active = true;\n setSettled(false);\n const onSuccess = (next: GeolocationPosition) => {\n if (!active) {\n return;\n }\n setPosition(toSnapshot(next));\n setError(null);\n setSettled(true);\n };\n const onError = (nextError: GeolocationPositionError) => {\n if (!active) {\n return;\n }\n setError(nextError);\n setSettled(true);\n };\n const options: PositionOptions = {\n enableHighAccuracy,\n maximumAge,\n timeout,\n };\n let watchId: number | undefined;\n if (watch) {\n watchId = geolocation.watchPosition(onSuccess, onError, options);\n } else {\n geolocation.getCurrentPosition(onSuccess, onError, options);\n }\n return () => {\n active = false;\n if (watchId !== undefined) {\n geolocation.clearWatch(watchId);\n }\n };\n }, [enableHighAccuracy, enabled, isSupported, maximumAge, timeout, watch]);\n\n return {\n isSupported,\n loading: enabled && isSupported && !settled,\n permission,\n position,\n error,\n };\n}\n"]}
@@ -0,0 +1,109 @@
1
+ "use client";
2
+ import '../chunk-J5LGTIGS.mjs';
3
+ import { useState, useEffect } from 'react';
4
+
5
+ function toSnapshot(position) {
6
+ const { coords } = position;
7
+ return {
8
+ latitude: coords.latitude,
9
+ longitude: coords.longitude,
10
+ accuracy: coords.accuracy,
11
+ altitude: coords.altitude,
12
+ altitudeAccuracy: coords.altitudeAccuracy,
13
+ heading: coords.heading,
14
+ speed: coords.speed,
15
+ timestamp: position.timestamp
16
+ };
17
+ }
18
+ function useGeolocation(params = {}) {
19
+ const {
20
+ enabled = true,
21
+ watch = true,
22
+ enableHighAccuracy,
23
+ maximumAge,
24
+ timeout
25
+ } = params;
26
+ const isSupported = typeof navigator !== "undefined" && "geolocation" in navigator;
27
+ const [permission, setPermission] = useState(
28
+ "unknown"
29
+ );
30
+ const [position, setPosition] = useState(null);
31
+ const [error, setError] = useState(null);
32
+ const [settled, setSettled] = useState(false);
33
+ useEffect(() => {
34
+ if (typeof navigator === "undefined" || navigator.permissions?.query == null) {
35
+ return;
36
+ }
37
+ let active = true;
38
+ let status;
39
+ const onChange = () => {
40
+ if (active && status) {
41
+ setPermission(status.state);
42
+ }
43
+ };
44
+ navigator.permissions.query({ name: "geolocation" }).then((result) => {
45
+ if (!active) {
46
+ return;
47
+ }
48
+ status = result;
49
+ setPermission(result.state);
50
+ result.addEventListener("change", onChange);
51
+ }).catch(() => {
52
+ });
53
+ return () => {
54
+ active = false;
55
+ status?.removeEventListener("change", onChange);
56
+ };
57
+ }, []);
58
+ useEffect(() => {
59
+ if (!enabled || !isSupported) {
60
+ return;
61
+ }
62
+ const geolocation = navigator.geolocation;
63
+ let active = true;
64
+ setSettled(false);
65
+ const onSuccess = (next) => {
66
+ if (!active) {
67
+ return;
68
+ }
69
+ setPosition(toSnapshot(next));
70
+ setError(null);
71
+ setSettled(true);
72
+ };
73
+ const onError = (nextError) => {
74
+ if (!active) {
75
+ return;
76
+ }
77
+ setError(nextError);
78
+ setSettled(true);
79
+ };
80
+ const options = {
81
+ enableHighAccuracy,
82
+ maximumAge,
83
+ timeout
84
+ };
85
+ let watchId;
86
+ if (watch) {
87
+ watchId = geolocation.watchPosition(onSuccess, onError, options);
88
+ } else {
89
+ geolocation.getCurrentPosition(onSuccess, onError, options);
90
+ }
91
+ return () => {
92
+ active = false;
93
+ if (watchId !== void 0) {
94
+ geolocation.clearWatch(watchId);
95
+ }
96
+ };
97
+ }, [enableHighAccuracy, enabled, isSupported, maximumAge, timeout, watch]);
98
+ return {
99
+ isSupported,
100
+ loading: enabled && isSupported && !settled,
101
+ permission,
102
+ position,
103
+ error
104
+ };
105
+ }
106
+
107
+ export { useGeolocation };
108
+ //# sourceMappingURL=useGeolocation.mjs.map
109
+ //# sourceMappingURL=useGeolocation.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/useGeolocation/useGeolocation.ts"],"names":[],"mappings":"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","file":"useGeolocation.mjs","sourcesContent":["\"use client\";\n\nimport { useEffect, useState } from \"react\";\n\nexport type GeolocationCoordinatesSnapshot = {\n latitude: number;\n longitude: number;\n accuracy: number;\n altitude: number | null;\n altitudeAccuracy: number | null;\n heading: number | null;\n speed: number | null;\n timestamp: number;\n};\n\nexport type UseGeolocationParams = {\n /** Start requesting the position (default `true`). Set `false` to defer the permission prompt. */\n enabled?: boolean;\n /** Keep watching for position updates instead of a one-shot read (default `true`). */\n watch?: boolean;\n /** `PositionOptions.enableHighAccuracy`. */\n enableHighAccuracy?: boolean;\n /** `PositionOptions.maximumAge` in milliseconds. */\n maximumAge?: number;\n /** `PositionOptions.timeout` in milliseconds. */\n timeout?: number;\n};\n\nexport type UseGeolocationResult = {\n /** Whether `navigator.geolocation` exists in this browser. */\n isSupported: boolean;\n /** True while enabled and no position or error has arrived yet. */\n loading: boolean;\n /** Permission state from the Permissions API (`\"unknown\"` where unsupported or before resolution). */\n permission: PermissionState | \"unknown\";\n /** Latest position snapshot, or `null` before the first fix. */\n position: GeolocationCoordinatesSnapshot | null;\n /** Latest geolocation error, cleared when a new fix succeeds. */\n error: GeolocationPositionError | null;\n};\n\nfunction toSnapshot(position: GeolocationPosition): GeolocationCoordinatesSnapshot {\n const { coords } = position;\n return {\n latitude: coords.latitude,\n longitude: coords.longitude,\n accuracy: coords.accuracy,\n altitude: coords.altitude,\n altitudeAccuracy: coords.altitudeAccuracy,\n heading: coords.heading,\n speed: coords.speed,\n timestamp: position.timestamp,\n };\n}\n\n/**\n * Browser geolocation with loading, error, and Permissions API state.\n *\n * - Requesting the position triggers the browser permission prompt; pass `enabled: false`\n * and flip it from a user gesture to avoid prompting on mount.\n * - `watch: true` (default) uses `watchPosition` for live updates; `false` reads once.\n * - `permission` mirrors `navigator.permissions.query({ name: \"geolocation\" })` including\n * change events, independent of whether a request is active.\n *\n * @param params - {@link UseGeolocationParams}\n * @returns {@link UseGeolocationResult}\n */\nexport function useGeolocation(\n params: UseGeolocationParams = {},\n): UseGeolocationResult {\n const {\n enabled = true,\n watch = true,\n enableHighAccuracy,\n maximumAge,\n timeout,\n } = params;\n\n const isSupported =\n typeof navigator !== \"undefined\" && \"geolocation\" in navigator;\n\n const [permission, setPermission] = useState<PermissionState | \"unknown\">(\n \"unknown\",\n );\n const [position, setPosition] =\n useState<GeolocationCoordinatesSnapshot | null>(null);\n const [error, setError] = useState<GeolocationPositionError | null>(null);\n const [settled, setSettled] = useState(false);\n\n useEffect(() => {\n if (\n typeof navigator === \"undefined\" ||\n navigator.permissions?.query == null\n ) {\n return;\n }\n let active = true;\n let status: PermissionStatus | undefined;\n const onChange = () => {\n if (active && status) {\n setPermission(status.state);\n }\n };\n navigator.permissions\n .query({ name: \"geolocation\" })\n .then((result) => {\n // Guard against the component unmounting before this promise resolves,\n // which would otherwise attach a listener that can never be cleaned up.\n if (!active) {\n return;\n }\n status = result;\n setPermission(result.state);\n result.addEventListener(\"change\", onChange);\n })\n .catch(() => {\n /* permissions API may reject for geolocation in some browsers */\n });\n return () => {\n active = false;\n status?.removeEventListener(\"change\", onChange);\n };\n }, []);\n\n useEffect(() => {\n if (!enabled || !isSupported) {\n return;\n }\n const geolocation = navigator.geolocation;\n let active = true;\n setSettled(false);\n const onSuccess = (next: GeolocationPosition) => {\n if (!active) {\n return;\n }\n setPosition(toSnapshot(next));\n setError(null);\n setSettled(true);\n };\n const onError = (nextError: GeolocationPositionError) => {\n if (!active) {\n return;\n }\n setError(nextError);\n setSettled(true);\n };\n const options: PositionOptions = {\n enableHighAccuracy,\n maximumAge,\n timeout,\n };\n let watchId: number | undefined;\n if (watch) {\n watchId = geolocation.watchPosition(onSuccess, onError, options);\n } else {\n geolocation.getCurrentPosition(onSuccess, onError, options);\n }\n return () => {\n active = false;\n if (watchId !== undefined) {\n geolocation.clearWatch(watchId);\n }\n };\n }, [enableHighAccuracy, enabled, isSupported, maximumAge, timeout, watch]);\n\n return {\n isSupported,\n loading: enabled && isSupported && !settled,\n permission,\n position,\n error,\n };\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export { useHotkeys, type HotkeyHandler, type UseHotkeysOptions, } from "./useHotkeys";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useHotkeys/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,KAAK,aAAa,EAClB,KAAK,iBAAiB,GACvB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,24 @@
1
+ export type HotkeyHandler = (event: KeyboardEvent) => void;
2
+ export type UseHotkeysOptions = {
3
+ /** Disable all bindings without unmounting (default `true`). */
4
+ enabled?: boolean;
5
+ /** Call `event.preventDefault()` on a match (default `true`). */
6
+ preventDefault?: boolean;
7
+ /** Fire even when typing in inputs, textareas, selects, or contentEditable (default `false`). */
8
+ allowInInputs?: boolean;
9
+ };
10
+ /**
11
+ * Binds keyboard shortcut combos (e.g. `"mod+k"`, `"ctrl+shift+p"`, `"escape"`) to handlers on `window`.
12
+ *
13
+ * - Combo syntax: modifier tokens (`ctrl`/`control`, `meta`/`cmd`/`command`, `alt`/`option`, `shift`,
14
+ * `mod`) joined with `+` around a final key matched against `event.key` (use `space` for the spacebar).
15
+ * - `mod` matches Cmd on macOS *or* Ctrl elsewhere (it accepts either modifier).
16
+ * - Bindings are read from a ref on every keydown, so inline objects and closures stay fresh
17
+ * without re-subscribing.
18
+ * - Shortcuts are suppressed while typing in form fields or contentEditable unless `allowInInputs`.
19
+ *
20
+ * @param bindings - Map of combo string → handler. The first matching combo wins per event.
21
+ * @param options - {@link UseHotkeysOptions}
22
+ */
23
+ export declare function useHotkeys(bindings: Record<string, HotkeyHandler>, options?: UseHotkeysOptions): void;
24
+ //# sourceMappingURL=useHotkeys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHotkeys.d.ts","sourceRoot":"","sources":["../../../src/hooks/useHotkeys/useHotkeys.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;AAE3D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,gEAAgE;IAChE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iEAAiE;IACjE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iGAAiG;IACjG,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAoEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EACvC,OAAO,GAAE,iBAAsB,GAC9B,IAAI,CAgCN"}
@@ -0,0 +1,86 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ require('../chunk-PZ5AY32C.js');
5
+ var react = require('react');
6
+
7
+ function parseHotkey(combo) {
8
+ const parsed = {
9
+ key: "",
10
+ ctrl: false,
11
+ meta: false,
12
+ alt: false,
13
+ shift: false,
14
+ mod: false
15
+ };
16
+ for (const raw of combo.split("+")) {
17
+ const token = raw.trim().toLowerCase();
18
+ if (token === "ctrl" || token === "control") {
19
+ parsed.ctrl = true;
20
+ } else if (token === "meta" || token === "cmd" || token === "command") {
21
+ parsed.meta = true;
22
+ } else if (token === "alt" || token === "option") {
23
+ parsed.alt = true;
24
+ } else if (token === "shift") {
25
+ parsed.shift = true;
26
+ } else if (token === "mod") {
27
+ parsed.mod = true;
28
+ } else {
29
+ parsed.key = token === "space" ? " " : token;
30
+ }
31
+ }
32
+ return parsed;
33
+ }
34
+ function matchesHotkey(event, hotkey) {
35
+ if (hotkey.key !== event.key.toLowerCase()) {
36
+ return false;
37
+ }
38
+ if (hotkey.mod) {
39
+ if (!event.ctrlKey && !event.metaKey) {
40
+ return false;
41
+ }
42
+ } else if (hotkey.ctrl !== event.ctrlKey || hotkey.meta !== event.metaKey) {
43
+ return false;
44
+ }
45
+ return hotkey.alt === event.altKey && hotkey.shift === event.shiftKey;
46
+ }
47
+ function isEditableTarget(target) {
48
+ if (!(target instanceof HTMLElement)) {
49
+ return false;
50
+ }
51
+ return target.tagName === "INPUT" || target.tagName === "TEXTAREA" || target.tagName === "SELECT" || target.isContentEditable;
52
+ }
53
+ function useHotkeys(bindings, options = {}) {
54
+ const { enabled = true, preventDefault = true, allowInInputs = false } = options;
55
+ const bindingsRef = react.useRef(bindings);
56
+ react.useEffect(() => {
57
+ bindingsRef.current = bindings;
58
+ }, [bindings]);
59
+ react.useEffect(() => {
60
+ if (!enabled) {
61
+ return;
62
+ }
63
+ const onKeyDown = (event) => {
64
+ if (!allowInInputs && isEditableTarget(event.target)) {
65
+ return;
66
+ }
67
+ for (const [combo, handler] of Object.entries(bindingsRef.current)) {
68
+ if (matchesHotkey(event, parseHotkey(combo))) {
69
+ if (preventDefault) {
70
+ event.preventDefault();
71
+ }
72
+ handler(event);
73
+ return;
74
+ }
75
+ }
76
+ };
77
+ window.addEventListener("keydown", onKeyDown);
78
+ return () => {
79
+ window.removeEventListener("keydown", onKeyDown);
80
+ };
81
+ }, [allowInInputs, enabled, preventDefault]);
82
+ }
83
+
84
+ exports.useHotkeys = useHotkeys;
85
+ //# sourceMappingURL=useHotkeys.js.map
86
+ //# sourceMappingURL=useHotkeys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/useHotkeys/useHotkeys.ts"],"names":["useRef","useEffect"],"mappings":"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","file":"useHotkeys.js","sourcesContent":["\"use client\";\n\nimport { useEffect, useRef } from \"react\";\n\nexport type HotkeyHandler = (event: KeyboardEvent) => void;\n\nexport type UseHotkeysOptions = {\n /** Disable all bindings without unmounting (default `true`). */\n enabled?: boolean;\n /** Call `event.preventDefault()` on a match (default `true`). */\n preventDefault?: boolean;\n /** Fire even when typing in inputs, textareas, selects, or contentEditable (default `false`). */\n allowInInputs?: boolean;\n};\n\ntype ParsedHotkey = {\n key: string;\n ctrl: boolean;\n meta: boolean;\n alt: boolean;\n shift: boolean;\n mod: boolean;\n};\n\nfunction parseHotkey(combo: string): ParsedHotkey {\n const parsed: ParsedHotkey = {\n key: \"\",\n ctrl: false,\n meta: false,\n alt: false,\n shift: false,\n mod: false,\n };\n for (const raw of combo.split(\"+\")) {\n const token = raw.trim().toLowerCase();\n if (token === \"ctrl\" || token === \"control\") {\n parsed.ctrl = true;\n } else if (token === \"meta\" || token === \"cmd\" || token === \"command\") {\n parsed.meta = true;\n } else if (token === \"alt\" || token === \"option\") {\n parsed.alt = true;\n } else if (token === \"shift\") {\n parsed.shift = true;\n } else if (token === \"mod\") {\n parsed.mod = true;\n } else {\n parsed.key = token === \"space\" ? \" \" : token;\n }\n }\n return parsed;\n}\n\nfunction matchesHotkey(event: KeyboardEvent, hotkey: ParsedHotkey): boolean {\n if (hotkey.key !== event.key.toLowerCase()) {\n return false;\n }\n if (hotkey.mod) {\n if (!event.ctrlKey && !event.metaKey) {\n return false;\n }\n } else if (\n hotkey.ctrl !== event.ctrlKey ||\n hotkey.meta !== event.metaKey\n ) {\n return false;\n }\n return hotkey.alt === event.altKey && hotkey.shift === event.shiftKey;\n}\n\nfunction isEditableTarget(target: EventTarget | null): boolean {\n if (!(target instanceof HTMLElement)) {\n return false;\n }\n return (\n target.tagName === \"INPUT\" ||\n target.tagName === \"TEXTAREA\" ||\n target.tagName === \"SELECT\" ||\n target.isContentEditable\n );\n}\n\n/**\n * Binds keyboard shortcut combos (e.g. `\"mod+k\"`, `\"ctrl+shift+p\"`, `\"escape\"`) to handlers on `window`.\n *\n * - Combo syntax: modifier tokens (`ctrl`/`control`, `meta`/`cmd`/`command`, `alt`/`option`, `shift`,\n * `mod`) joined with `+` around a final key matched against `event.key` (use `space` for the spacebar).\n * - `mod` matches Cmd on macOS *or* Ctrl elsewhere (it accepts either modifier).\n * - Bindings are read from a ref on every keydown, so inline objects and closures stay fresh\n * without re-subscribing.\n * - Shortcuts are suppressed while typing in form fields or contentEditable unless `allowInInputs`.\n *\n * @param bindings - Map of combo string → handler. The first matching combo wins per event.\n * @param options - {@link UseHotkeysOptions}\n */\nexport function useHotkeys(\n bindings: Record<string, HotkeyHandler>,\n options: UseHotkeysOptions = {},\n): void {\n const { enabled = true, preventDefault = true, allowInInputs = false } =\n options;\n const bindingsRef = useRef(bindings);\n\n useEffect(() => {\n bindingsRef.current = bindings;\n }, [bindings]);\n\n useEffect(() => {\n if (!enabled) {\n return;\n }\n const onKeyDown = (event: KeyboardEvent) => {\n if (!allowInInputs && isEditableTarget(event.target)) {\n return;\n }\n for (const [combo, handler] of Object.entries(bindingsRef.current)) {\n if (matchesHotkey(event, parseHotkey(combo))) {\n if (preventDefault) {\n event.preventDefault();\n }\n handler(event);\n return;\n }\n }\n };\n window.addEventListener(\"keydown\", onKeyDown);\n return () => {\n window.removeEventListener(\"keydown\", onKeyDown);\n };\n }, [allowInInputs, enabled, preventDefault]);\n}\n"]}
@@ -0,0 +1,84 @@
1
+ "use client";
2
+ import '../chunk-J5LGTIGS.mjs';
3
+ import { useRef, useEffect } from 'react';
4
+
5
+ function parseHotkey(combo) {
6
+ const parsed = {
7
+ key: "",
8
+ ctrl: false,
9
+ meta: false,
10
+ alt: false,
11
+ shift: false,
12
+ mod: false
13
+ };
14
+ for (const raw of combo.split("+")) {
15
+ const token = raw.trim().toLowerCase();
16
+ if (token === "ctrl" || token === "control") {
17
+ parsed.ctrl = true;
18
+ } else if (token === "meta" || token === "cmd" || token === "command") {
19
+ parsed.meta = true;
20
+ } else if (token === "alt" || token === "option") {
21
+ parsed.alt = true;
22
+ } else if (token === "shift") {
23
+ parsed.shift = true;
24
+ } else if (token === "mod") {
25
+ parsed.mod = true;
26
+ } else {
27
+ parsed.key = token === "space" ? " " : token;
28
+ }
29
+ }
30
+ return parsed;
31
+ }
32
+ function matchesHotkey(event, hotkey) {
33
+ if (hotkey.key !== event.key.toLowerCase()) {
34
+ return false;
35
+ }
36
+ if (hotkey.mod) {
37
+ if (!event.ctrlKey && !event.metaKey) {
38
+ return false;
39
+ }
40
+ } else if (hotkey.ctrl !== event.ctrlKey || hotkey.meta !== event.metaKey) {
41
+ return false;
42
+ }
43
+ return hotkey.alt === event.altKey && hotkey.shift === event.shiftKey;
44
+ }
45
+ function isEditableTarget(target) {
46
+ if (!(target instanceof HTMLElement)) {
47
+ return false;
48
+ }
49
+ return target.tagName === "INPUT" || target.tagName === "TEXTAREA" || target.tagName === "SELECT" || target.isContentEditable;
50
+ }
51
+ function useHotkeys(bindings, options = {}) {
52
+ const { enabled = true, preventDefault = true, allowInInputs = false } = options;
53
+ const bindingsRef = useRef(bindings);
54
+ useEffect(() => {
55
+ bindingsRef.current = bindings;
56
+ }, [bindings]);
57
+ useEffect(() => {
58
+ if (!enabled) {
59
+ return;
60
+ }
61
+ const onKeyDown = (event) => {
62
+ if (!allowInInputs && isEditableTarget(event.target)) {
63
+ return;
64
+ }
65
+ for (const [combo, handler] of Object.entries(bindingsRef.current)) {
66
+ if (matchesHotkey(event, parseHotkey(combo))) {
67
+ if (preventDefault) {
68
+ event.preventDefault();
69
+ }
70
+ handler(event);
71
+ return;
72
+ }
73
+ }
74
+ };
75
+ window.addEventListener("keydown", onKeyDown);
76
+ return () => {
77
+ window.removeEventListener("keydown", onKeyDown);
78
+ };
79
+ }, [allowInInputs, enabled, preventDefault]);
80
+ }
81
+
82
+ export { useHotkeys };
83
+ //# sourceMappingURL=useHotkeys.mjs.map
84
+ //# sourceMappingURL=useHotkeys.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/useHotkeys/useHotkeys.ts"],"names":[],"mappings":"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","file":"useHotkeys.mjs","sourcesContent":["\"use client\";\n\nimport { useEffect, useRef } from \"react\";\n\nexport type HotkeyHandler = (event: KeyboardEvent) => void;\n\nexport type UseHotkeysOptions = {\n /** Disable all bindings without unmounting (default `true`). */\n enabled?: boolean;\n /** Call `event.preventDefault()` on a match (default `true`). */\n preventDefault?: boolean;\n /** Fire even when typing in inputs, textareas, selects, or contentEditable (default `false`). */\n allowInInputs?: boolean;\n};\n\ntype ParsedHotkey = {\n key: string;\n ctrl: boolean;\n meta: boolean;\n alt: boolean;\n shift: boolean;\n mod: boolean;\n};\n\nfunction parseHotkey(combo: string): ParsedHotkey {\n const parsed: ParsedHotkey = {\n key: \"\",\n ctrl: false,\n meta: false,\n alt: false,\n shift: false,\n mod: false,\n };\n for (const raw of combo.split(\"+\")) {\n const token = raw.trim().toLowerCase();\n if (token === \"ctrl\" || token === \"control\") {\n parsed.ctrl = true;\n } else if (token === \"meta\" || token === \"cmd\" || token === \"command\") {\n parsed.meta = true;\n } else if (token === \"alt\" || token === \"option\") {\n parsed.alt = true;\n } else if (token === \"shift\") {\n parsed.shift = true;\n } else if (token === \"mod\") {\n parsed.mod = true;\n } else {\n parsed.key = token === \"space\" ? \" \" : token;\n }\n }\n return parsed;\n}\n\nfunction matchesHotkey(event: KeyboardEvent, hotkey: ParsedHotkey): boolean {\n if (hotkey.key !== event.key.toLowerCase()) {\n return false;\n }\n if (hotkey.mod) {\n if (!event.ctrlKey && !event.metaKey) {\n return false;\n }\n } else if (\n hotkey.ctrl !== event.ctrlKey ||\n hotkey.meta !== event.metaKey\n ) {\n return false;\n }\n return hotkey.alt === event.altKey && hotkey.shift === event.shiftKey;\n}\n\nfunction isEditableTarget(target: EventTarget | null): boolean {\n if (!(target instanceof HTMLElement)) {\n return false;\n }\n return (\n target.tagName === \"INPUT\" ||\n target.tagName === \"TEXTAREA\" ||\n target.tagName === \"SELECT\" ||\n target.isContentEditable\n );\n}\n\n/**\n * Binds keyboard shortcut combos (e.g. `\"mod+k\"`, `\"ctrl+shift+p\"`, `\"escape\"`) to handlers on `window`.\n *\n * - Combo syntax: modifier tokens (`ctrl`/`control`, `meta`/`cmd`/`command`, `alt`/`option`, `shift`,\n * `mod`) joined with `+` around a final key matched against `event.key` (use `space` for the spacebar).\n * - `mod` matches Cmd on macOS *or* Ctrl elsewhere (it accepts either modifier).\n * - Bindings are read from a ref on every keydown, so inline objects and closures stay fresh\n * without re-subscribing.\n * - Shortcuts are suppressed while typing in form fields or contentEditable unless `allowInInputs`.\n *\n * @param bindings - Map of combo string → handler. The first matching combo wins per event.\n * @param options - {@link UseHotkeysOptions}\n */\nexport function useHotkeys(\n bindings: Record<string, HotkeyHandler>,\n options: UseHotkeysOptions = {},\n): void {\n const { enabled = true, preventDefault = true, allowInInputs = false } =\n options;\n const bindingsRef = useRef(bindings);\n\n useEffect(() => {\n bindingsRef.current = bindings;\n }, [bindings]);\n\n useEffect(() => {\n if (!enabled) {\n return;\n }\n const onKeyDown = (event: KeyboardEvent) => {\n if (!allowInInputs && isEditableTarget(event.target)) {\n return;\n }\n for (const [combo, handler] of Object.entries(bindingsRef.current)) {\n if (matchesHotkey(event, parseHotkey(combo))) {\n if (preventDefault) {\n event.preventDefault();\n }\n handler(event);\n return;\n }\n }\n };\n window.addEventListener(\"keydown\", onKeyDown);\n return () => {\n window.removeEventListener(\"keydown\", onKeyDown);\n };\n }, [allowInInputs, enabled, preventDefault]);\n}\n"]}