@kamod-ch/ui 1.1.0 → 1.2.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 (330) hide show
  1. package/LICENSE.md +9 -0
  2. package/README.md +12 -0
  3. package/dist/{Accordion-D1PiNspd.d.ts → Accordion-BiCBkB8o.d.ts} +7 -1
  4. package/dist/{AlertDialog-GadhKjPC.d.ts → AlertDialog-CZ2taZg4.d.ts} +3 -3
  5. package/dist/Button-OI3VvO-J.d.ts +84 -0
  6. package/dist/{Collapsible-CW1hQwqV.d.ts → Collapsible-BdQqvk35.d.ts} +6 -1
  7. package/dist/{ComboboxValue-BGfXgtZt.d.ts → ComboboxValue-Cq6zoDkt.d.ts} +1 -1
  8. package/dist/{Dialog-BOIteLfe.d.ts → Dialog-DdD1sMwk.d.ts} +12 -1
  9. package/dist/{DialogContent-cQHSRQdT.d.ts → DialogContent-YWzwWdSv.d.ts} +6 -1
  10. package/dist/{Drawer-CdjXZxxK.d.ts → Drawer-8xfn9KLf.d.ts} +2 -2
  11. package/dist/{Dropdown-CVbWVKok.d.ts → Dropdown-CzDJJgXQ.d.ts} +32 -27
  12. package/dist/{FieldTitle-aSgThW-B.d.ts → FieldTitle-hsI0Y6Zm.d.ts} +13 -13
  13. package/dist/{HoverCard-aVEEtkyO.d.ts → HoverCard-CBBr-tT9.d.ts} +14 -14
  14. package/dist/{Input-Cem05el9.d.ts → Input-C_X0Xpn2.d.ts} +11 -11
  15. package/dist/{PopoverTrigger-CH_Kx2mn.d.ts → PopoverTrigger-CIPAh0h0.d.ts} +14 -14
  16. package/dist/{RadioGroup-BaElzLwa.d.ts → RadioGroup-BDF3NaXQ.d.ts} +8 -8
  17. package/dist/{Sheet-DZ-p-aHY.d.ts → Sheet-DVt5iTiK.d.ts} +1 -1
  18. package/dist/{SidebarProvider-Bx7-BdQn.d.ts → SidebarProvider-CoVCItNd.d.ts} +18 -18
  19. package/dist/{Switch-CTTkNdqF.d.ts → Switch-BcNJFeRY.d.ts} +8 -8
  20. package/dist/{Tabs-CR-thcs6.d.ts → Tabs-CrXH3YED.d.ts} +18 -9
  21. package/dist/{Textarea-DbKkduOG.d.ts → Textarea-CST17pYW.d.ts} +11 -11
  22. package/dist/Toggle-BgvkYUI8.d.ts +49 -0
  23. package/dist/{ToggleGroup-UeYHzQe7.d.ts → ToggleGroup-CqYICGsS.d.ts} +42 -42
  24. package/dist/Typography-Df9IVmw2.d.ts +64 -0
  25. package/dist/{chunk-ZM67EKZC.js → chunk-22G3DW5M.js} +4 -4
  26. package/dist/{chunk-ZM67EKZC.js.map → chunk-22G3DW5M.js.map} +1 -1
  27. package/dist/{chunk-BDK7CDEI.js → chunk-2F3PWEDR.js} +3 -3
  28. package/dist/{chunk-BDK7CDEI.js.map → chunk-2F3PWEDR.js.map} +1 -1
  29. package/dist/{chunk-ZHAGKFSO.js → chunk-2SPOI3MX.js} +3 -3
  30. package/dist/{chunk-ZHAGKFSO.js.map → chunk-2SPOI3MX.js.map} +1 -1
  31. package/dist/chunk-2UTJHQTS.js +162 -0
  32. package/dist/chunk-2UTJHQTS.js.map +1 -0
  33. package/dist/{chunk-NKKMM6CK.js → chunk-3AFRSB5R.js} +3 -3
  34. package/dist/{chunk-NKKMM6CK.js.map → chunk-3AFRSB5R.js.map} +1 -1
  35. package/dist/{chunk-LCMPFPBN.js → chunk-3ETRJPBL.js} +3 -3
  36. package/dist/{chunk-LCMPFPBN.js.map → chunk-3ETRJPBL.js.map} +1 -1
  37. package/dist/{chunk-WAPRVVDQ.js → chunk-3HBKDY64.js} +3 -3
  38. package/dist/{chunk-WAPRVVDQ.js.map → chunk-3HBKDY64.js.map} +1 -1
  39. package/dist/{chunk-PPYJQNE5.js → chunk-3XMFQKWB.js} +9 -5
  40. package/dist/chunk-3XMFQKWB.js.map +1 -0
  41. package/dist/{chunk-HCTZJYHK.js → chunk-4SQKSVBH.js} +6 -6
  42. package/dist/chunk-4SQKSVBH.js.map +1 -0
  43. package/dist/{chunk-ZVAW22GX.js → chunk-4ZFKDNSK.js} +3 -3
  44. package/dist/{chunk-ZVAW22GX.js.map → chunk-4ZFKDNSK.js.map} +1 -1
  45. package/dist/{chunk-IJ4ZRIR4.js → chunk-53FZEAOJ.js} +5 -5
  46. package/dist/{chunk-IJ4ZRIR4.js.map → chunk-53FZEAOJ.js.map} +1 -1
  47. package/dist/{chunk-BYG2ULS3.js → chunk-5ATODZ6L.js} +5 -7
  48. package/dist/chunk-5ATODZ6L.js.map +1 -0
  49. package/dist/{chunk-TXKPDNRD.js → chunk-5I7ULBDP.js} +3 -3
  50. package/dist/{chunk-TXKPDNRD.js.map → chunk-5I7ULBDP.js.map} +1 -1
  51. package/dist/{chunk-UEXTD7ZB.js → chunk-6HFTTHSY.js} +3 -3
  52. package/dist/{chunk-UEXTD7ZB.js.map → chunk-6HFTTHSY.js.map} +1 -1
  53. package/dist/{chunk-6RASPU5N.js → chunk-7LWAWZHM.js} +4 -11
  54. package/dist/chunk-7LWAWZHM.js.map +1 -0
  55. package/dist/{chunk-RHNI5UQO.js → chunk-A6ZZZFZN.js} +4 -4
  56. package/dist/{chunk-RHNI5UQO.js.map → chunk-A6ZZZFZN.js.map} +1 -1
  57. package/dist/{chunk-V63YIVKJ.js → chunk-APZXMU2X.js} +4 -4
  58. package/dist/{chunk-V63YIVKJ.js.map → chunk-APZXMU2X.js.map} +1 -1
  59. package/dist/{chunk-6FYSVMH7.js → chunk-AYLEWD77.js} +3 -3
  60. package/dist/{chunk-6FYSVMH7.js.map → chunk-AYLEWD77.js.map} +1 -1
  61. package/dist/{chunk-D3DQ4ICC.js → chunk-BZMD4EZC.js} +4 -11
  62. package/dist/chunk-BZMD4EZC.js.map +1 -0
  63. package/dist/{chunk-PU5J5EPY.js → chunk-C7TARE5T.js} +5 -5
  64. package/dist/{chunk-PU5J5EPY.js.map → chunk-C7TARE5T.js.map} +1 -1
  65. package/dist/{chunk-5FBD2NTR.js → chunk-DDRX6NNW.js} +6 -9
  66. package/dist/chunk-DDRX6NNW.js.map +1 -0
  67. package/dist/{chunk-HHLQYMPT.js → chunk-DUTKHOH3.js} +4 -4
  68. package/dist/{chunk-HHLQYMPT.js.map → chunk-DUTKHOH3.js.map} +1 -1
  69. package/dist/{chunk-24QD2FTA.js → chunk-EBXTNL52.js} +12 -15
  70. package/dist/chunk-EBXTNL52.js.map +1 -0
  71. package/dist/{chunk-STRBBF45.js → chunk-FOQ32NEP.js} +5 -5
  72. package/dist/chunk-FOQ32NEP.js.map +1 -0
  73. package/dist/{chunk-UIA74JVN.js → chunk-FXG53XY2.js} +5 -5
  74. package/dist/chunk-FXG53XY2.js.map +1 -0
  75. package/dist/{chunk-2KY7P27I.js → chunk-G7LTWXRN.js} +3 -3
  76. package/dist/{chunk-2KY7P27I.js.map → chunk-G7LTWXRN.js.map} +1 -1
  77. package/dist/{chunk-6BK3PIRX.js → chunk-GD3VBO44.js} +6 -6
  78. package/dist/{chunk-6BK3PIRX.js.map → chunk-GD3VBO44.js.map} +1 -1
  79. package/dist/{chunk-MD6HHORY.js → chunk-GPRE2VWB.js} +3 -3
  80. package/dist/{chunk-MD6HHORY.js.map → chunk-GPRE2VWB.js.map} +1 -1
  81. package/dist/{chunk-QZX3RFIC.js → chunk-HJF5AV4L.js} +11 -34
  82. package/dist/chunk-HJF5AV4L.js.map +1 -0
  83. package/dist/{chunk-QFDTG2ZJ.js → chunk-HWPROYKB.js} +3 -3
  84. package/dist/{chunk-QFDTG2ZJ.js.map → chunk-HWPROYKB.js.map} +1 -1
  85. package/dist/chunk-ISISDJ3Z.js +205 -0
  86. package/dist/chunk-ISISDJ3Z.js.map +1 -0
  87. package/dist/{chunk-3LIT5GWF.js → chunk-IW43BO47.js} +57 -19
  88. package/dist/chunk-IW43BO47.js.map +1 -0
  89. package/dist/{chunk-CLEC2RMU.js → chunk-JKEILBHG.js} +3 -3
  90. package/dist/{chunk-CLEC2RMU.js.map → chunk-JKEILBHG.js.map} +1 -1
  91. package/dist/{chunk-TFLSEEM4.js → chunk-KCN3GXRK.js} +3 -3
  92. package/dist/{chunk-TFLSEEM4.js.map → chunk-KCN3GXRK.js.map} +1 -1
  93. package/dist/{chunk-EMUPVA2F.js → chunk-KHV3WV6T.js} +4 -4
  94. package/dist/{chunk-EMUPVA2F.js.map → chunk-KHV3WV6T.js.map} +1 -1
  95. package/dist/{chunk-G6TV6TF7.js → chunk-KJ5PYCJG.js} +4 -12
  96. package/dist/chunk-KJ5PYCJG.js.map +1 -0
  97. package/dist/{chunk-5KS2VSX2.js → chunk-LAM4GIME.js} +4 -4
  98. package/dist/chunk-LAM4GIME.js.map +1 -0
  99. package/dist/{chunk-OCLVMKVC.js → chunk-MDXTENZ4.js} +8 -31
  100. package/dist/chunk-MDXTENZ4.js.map +1 -0
  101. package/dist/{chunk-CP55TVOV.js → chunk-MJUKNUFV.js} +3 -3
  102. package/dist/{chunk-CP55TVOV.js.map → chunk-MJUKNUFV.js.map} +1 -1
  103. package/dist/{chunk-GGTDJEE2.js → chunk-MTNLY7AY.js} +3 -3
  104. package/dist/{chunk-GGTDJEE2.js.map → chunk-MTNLY7AY.js.map} +1 -1
  105. package/dist/{chunk-67J4KBOW.js → chunk-NBIBBLP6.js} +10 -52
  106. package/dist/chunk-NBIBBLP6.js.map +1 -0
  107. package/dist/chunk-NBP4J2QF.js +200 -0
  108. package/dist/chunk-NBP4J2QF.js.map +1 -0
  109. package/dist/{chunk-NGKQBNZ5.js → chunk-NJYJCMKY.js} +3 -3
  110. package/dist/{chunk-NGKQBNZ5.js.map → chunk-NJYJCMKY.js.map} +1 -1
  111. package/dist/{chunk-COPT6I2D.js → chunk-NSEY5IC6.js} +9 -10
  112. package/dist/chunk-NSEY5IC6.js.map +1 -0
  113. package/dist/{chunk-UARVH66B.js → chunk-O4PHGLXF.js} +5 -5
  114. package/dist/{chunk-UARVH66B.js.map → chunk-O4PHGLXF.js.map} +1 -1
  115. package/dist/{chunk-J4DMQV64.js → chunk-OCZC4PDM.js} +3 -3
  116. package/dist/{chunk-J4DMQV64.js.map → chunk-OCZC4PDM.js.map} +1 -1
  117. package/dist/{chunk-IQH3XSOI.js → chunk-ODYHA3O5.js} +4 -4
  118. package/dist/{chunk-IQH3XSOI.js.map → chunk-ODYHA3O5.js.map} +1 -1
  119. package/dist/chunk-OJEZZVZB.js +9 -0
  120. package/dist/{chunk-CMBERB5B.js.map → chunk-OJEZZVZB.js.map} +1 -1
  121. package/dist/{chunk-7IOAIEIA.js → chunk-OTXP2QJ7.js} +6 -6
  122. package/dist/{chunk-7IOAIEIA.js.map → chunk-OTXP2QJ7.js.map} +1 -1
  123. package/dist/{chunk-JSHUWI3C.js → chunk-OUVUK3E7.js} +9 -9
  124. package/dist/chunk-OUVUK3E7.js.map +1 -0
  125. package/dist/{chunk-3KB54OYF.js → chunk-P6ICWO5B.js} +3 -3
  126. package/dist/{chunk-3KB54OYF.js.map → chunk-P6ICWO5B.js.map} +1 -1
  127. package/dist/{chunk-GIU6BZTW.js → chunk-P7PPE4P5.js} +8 -11
  128. package/dist/chunk-P7PPE4P5.js.map +1 -0
  129. package/dist/{chunk-XGFJJ2YB.js → chunk-PVQUVEZV.js} +4 -11
  130. package/dist/chunk-PVQUVEZV.js.map +1 -0
  131. package/dist/{chunk-LCWXIQKA.js → chunk-Q3RL7TOY.js} +4 -4
  132. package/dist/chunk-Q3RL7TOY.js.map +1 -0
  133. package/dist/{chunk-5Q4RBIMZ.js → chunk-Q5B6ROW6.js} +3 -3
  134. package/dist/{chunk-5Q4RBIMZ.js.map → chunk-Q5B6ROW6.js.map} +1 -1
  135. package/dist/{chunk-262EK2XT.js → chunk-Q7ZDP6DS.js} +9 -7
  136. package/dist/chunk-Q7ZDP6DS.js.map +1 -0
  137. package/dist/{chunk-4IBTERDG.js → chunk-QFTOABOJ.js} +3 -3
  138. package/dist/{chunk-4IBTERDG.js.map → chunk-QFTOABOJ.js.map} +1 -1
  139. package/dist/{chunk-JURNPBSW.js → chunk-QINEFXUA.js} +3 -3
  140. package/dist/{chunk-JURNPBSW.js.map → chunk-QINEFXUA.js.map} +1 -1
  141. package/dist/{chunk-FIOKWIJP.js → chunk-QWSD34JA.js} +4 -4
  142. package/dist/{chunk-FIOKWIJP.js.map → chunk-QWSD34JA.js.map} +1 -1
  143. package/dist/{chunk-Q5IUIA6B.js → chunk-RLBAA7WW.js} +3 -3
  144. package/dist/{chunk-Q5IUIA6B.js.map → chunk-RLBAA7WW.js.map} +1 -1
  145. package/dist/{chunk-MJQ6R345.js → chunk-SEC7UN45.js} +5 -5
  146. package/dist/chunk-SEC7UN45.js.map +1 -0
  147. package/dist/chunk-SIA46B4Q.js +9 -0
  148. package/dist/{chunk-RTIFG4XT.js.map → chunk-SIA46B4Q.js.map} +1 -1
  149. package/dist/{chunk-X4HPHMYW.js → chunk-TMPADU74.js} +4 -4
  150. package/dist/{chunk-X4HPHMYW.js.map → chunk-TMPADU74.js.map} +1 -1
  151. package/dist/{chunk-YTHUHPE5.js → chunk-USPWL4KC.js} +3 -3
  152. package/dist/{chunk-YTHUHPE5.js.map → chunk-USPWL4KC.js.map} +1 -1
  153. package/dist/{chunk-U2UNWXBC.js → chunk-VEQ7X2PO.js} +7 -6
  154. package/dist/chunk-VEQ7X2PO.js.map +1 -0
  155. package/dist/{chunk-YZLPO4B2.js → chunk-WRXXU5F6.js} +4 -11
  156. package/dist/chunk-WRXXU5F6.js.map +1 -0
  157. package/dist/{chunk-XNYAQZIB.js → chunk-X4B6I3M4.js} +4 -4
  158. package/dist/{chunk-XNYAQZIB.js.map → chunk-X4B6I3M4.js.map} +1 -1
  159. package/dist/{chunk-JNF7FDJO.js → chunk-XCYEWILH.js} +4 -4
  160. package/dist/{chunk-JNF7FDJO.js.map → chunk-XCYEWILH.js.map} +1 -1
  161. package/dist/{chunk-V2MG5Y5F.js → chunk-XGVQXRLA.js} +4 -4
  162. package/dist/chunk-XGVQXRLA.js.map +1 -0
  163. package/dist/chunk-XIANSPQO.js +11 -0
  164. package/dist/chunk-XIANSPQO.js.map +1 -0
  165. package/dist/{chunk-UNWEH4Z6.js → chunk-XOMPJYYA.js} +4 -4
  166. package/dist/chunk-XOMPJYYA.js.map +1 -0
  167. package/dist/{chunk-UXWUFNXY.js → chunk-XSYSV3R3.js} +3 -3
  168. package/dist/{chunk-UXWUFNXY.js.map → chunk-XSYSV3R3.js.map} +1 -1
  169. package/dist/{chunk-ERBGZZ2U.js → chunk-XZYJUJED.js} +4 -4
  170. package/dist/chunk-XZYJUJED.js.map +1 -0
  171. package/dist/{chunk-PFV7YIEP.js → chunk-Z4JNYSV3.js} +4 -4
  172. package/dist/{chunk-PFV7YIEP.js.map → chunk-Z4JNYSV3.js.map} +1 -1
  173. package/dist/{chunk-4V3WHQJE.js → chunk-ZLSCHWTN.js} +4 -4
  174. package/dist/{chunk-4V3WHQJE.js.map → chunk-ZLSCHWTN.js.map} +1 -1
  175. package/dist/chunk-ZQ2WOX4X.js +29 -0
  176. package/dist/chunk-ZQ2WOX4X.js.map +1 -0
  177. package/dist/{chunk-NILG56Z7.js → chunk-ZROHNZDC.js} +4 -4
  178. package/dist/{chunk-NILG56Z7.js.map → chunk-ZROHNZDC.js.map} +1 -1
  179. package/dist/{chunk-PGOCR4LG.js → chunk-ZVYCUG4N.js} +4 -4
  180. package/dist/chunk-ZVYCUG4N.js.map +1 -0
  181. package/dist/components/accordion/index.d.ts +2 -2
  182. package/dist/components/accordion/index.js +3 -2
  183. package/dist/components/alert/index.d.ts +26 -26
  184. package/dist/components/alert/index.js +2 -2
  185. package/dist/components/alert-dialog/index.d.ts +6 -5
  186. package/dist/components/alert-dialog/index.js +6 -6
  187. package/dist/components/aspect-ratio/index.js +2 -2
  188. package/dist/components/avatar/index.d.ts +11 -11
  189. package/dist/components/avatar/index.js +2 -2
  190. package/dist/components/badge/index.d.ts +112 -112
  191. package/dist/components/badge/index.js +2 -2
  192. package/dist/components/breadcrumb/index.js +2 -2
  193. package/dist/components/button/index.d.ts +51 -51
  194. package/dist/components/button/index.js +3 -3
  195. package/dist/components/button-group/index.js +2 -2
  196. package/dist/components/calendar/index.js +10 -10
  197. package/dist/components/card/index.d.ts +22 -22
  198. package/dist/components/card/index.js +2 -1
  199. package/dist/components/carousel/index.js +3 -3
  200. package/dist/components/chart/index.js +2 -2
  201. package/dist/components/checkbox/index.js +2 -2
  202. package/dist/components/collapsible/index.d.ts +2 -2
  203. package/dist/components/collapsible/index.js +3 -2
  204. package/dist/components/combobox/index.d.ts +2 -2
  205. package/dist/components/combobox/index.js +5 -5
  206. package/dist/components/command/index.js +7 -7
  207. package/dist/components/context-menu/index.d.ts +11 -11
  208. package/dist/components/context-menu/index.js +3 -3
  209. package/dist/components/data-table/index.js +3 -3
  210. package/dist/components/date-picker/index.js +6 -6
  211. package/dist/components/dialog/index.d.ts +26 -5
  212. package/dist/components/dialog/index.js +5 -5
  213. package/dist/components/direction/index.js +2 -2
  214. package/dist/components/drawer/index.d.ts +5 -4
  215. package/dist/components/drawer/index.js +5 -5
  216. package/dist/components/dropdown/index.d.ts +3 -3
  217. package/dist/components/dropdown/index.js +3 -3
  218. package/dist/components/dropzone/index.js +3 -3
  219. package/dist/components/empty/index.d.ts +6 -6
  220. package/dist/components/empty/index.js +2 -2
  221. package/dist/components/field/index.d.ts +2 -2
  222. package/dist/components/field/index.js +4 -4
  223. package/dist/components/hover-card/index.d.ts +2 -2
  224. package/dist/components/hover-card/index.js +2 -1
  225. package/dist/components/image/index.js +2 -2
  226. package/dist/components/input/index.d.ts +12 -12
  227. package/dist/components/input/index.js +3 -2
  228. package/dist/components/input-group/index.d.ts +56 -56
  229. package/dist/components/input-group/index.js +5 -5
  230. package/dist/components/input-otp/index.js +2 -2
  231. package/dist/components/item/index.d.ts +31 -31
  232. package/dist/components/item/index.js +3 -3
  233. package/dist/components/kbd/index.d.ts +8 -8
  234. package/dist/components/kbd/index.js +2 -2
  235. package/dist/components/label/index.d.ts +22 -22
  236. package/dist/components/label/index.js +3 -2
  237. package/dist/components/locale-segment-group/index.js +2 -2
  238. package/dist/components/menubar/index.js +3 -3
  239. package/dist/components/native-select/index.d.ts +34 -34
  240. package/dist/components/native-select/index.js +2 -1
  241. package/dist/components/navigation-menu/index.d.ts +2 -2
  242. package/dist/components/navigation-menu/index.js +3 -3
  243. package/dist/components/pagination/index.d.ts +1 -1
  244. package/dist/components/pagination/index.js +3 -3
  245. package/dist/components/popover/index.d.ts +22 -22
  246. package/dist/components/popover/index.js +4 -3
  247. package/dist/components/progress/index.js +2 -2
  248. package/dist/components/prose/index.js +2 -2
  249. package/dist/components/radio-group/index.d.ts +2 -2
  250. package/dist/components/radio-group/index.js +3 -3
  251. package/dist/components/scroll-area/index.js +2 -2
  252. package/dist/components/select/index.js +3 -3
  253. package/dist/components/selectable-card/index.js +3 -3
  254. package/dist/components/separator/index.d.ts +8 -8
  255. package/dist/components/separator/index.js +3 -2
  256. package/dist/components/sheet/index.d.ts +5 -4
  257. package/dist/components/sheet/index.js +5 -5
  258. package/dist/components/sidebar/index.d.ts +3 -3
  259. package/dist/components/sidebar/index.js +10 -10
  260. package/dist/components/skeleton/index.d.ts +22 -22
  261. package/dist/components/skeleton/index.js +2 -1
  262. package/dist/components/slider/index.js +2 -2
  263. package/dist/components/spinner/index.js +2 -2
  264. package/dist/components/switch/index.d.ts +1 -1
  265. package/dist/components/switch/index.js +2 -2
  266. package/dist/components/table/index.js +3 -3
  267. package/dist/components/tabs/index.d.ts +2 -2
  268. package/dist/components/tabs/index.js +3 -3
  269. package/dist/components/textarea/index.d.ts +12 -12
  270. package/dist/components/textarea/index.js +3 -2
  271. package/dist/components/theme-toggle/index.js +4 -4
  272. package/dist/components/toggle/index.d.ts +1 -1
  273. package/dist/components/toggle/index.js +2 -2
  274. package/dist/components/toggle-group/index.d.ts +2 -2
  275. package/dist/components/toggle-group/index.js +2 -2
  276. package/dist/components/typography/index.d.ts +2 -2
  277. package/dist/components/typography/index.js +2 -2
  278. package/dist/components/video/index.js +2 -2
  279. package/dist/index.d.ts +24 -24
  280. package/dist/index.js +79 -78
  281. package/dist/lib/interactive/index.js +1 -1
  282. package/dist/lib/utils.d.ts +2 -1
  283. package/dist/lib/utils.js +1 -1
  284. package/dist/{navigationMenuTriggerStyle-BWnESpon.d.ts → navigationMenuTriggerStyle-DUhqCYxO.d.ts} +1 -1
  285. package/dist/theme.css +16 -0
  286. package/dist/utils.d.ts +2 -0
  287. package/dist/utils.js +3 -0
  288. package/dist/utils.js.map +1 -0
  289. package/package.json +28 -25
  290. package/dist/Button-vQnkiVTI.d.ts +0 -84
  291. package/dist/Toggle-CseZl7XN.d.ts +0 -49
  292. package/dist/Typography-ccTtE182.d.ts +0 -64
  293. package/dist/chunk-24QD2FTA.js.map +0 -1
  294. package/dist/chunk-262EK2XT.js.map +0 -1
  295. package/dist/chunk-3LIT5GWF.js.map +0 -1
  296. package/dist/chunk-5FBD2NTR.js.map +0 -1
  297. package/dist/chunk-5KS2VSX2.js.map +0 -1
  298. package/dist/chunk-67J4KBOW.js.map +0 -1
  299. package/dist/chunk-6RASPU5N.js.map +0 -1
  300. package/dist/chunk-BYG2ULS3.js.map +0 -1
  301. package/dist/chunk-CMBERB5B.js +0 -9
  302. package/dist/chunk-COPT6I2D.js.map +0 -1
  303. package/dist/chunk-D3DQ4ICC.js.map +0 -1
  304. package/dist/chunk-ERBGZZ2U.js.map +0 -1
  305. package/dist/chunk-G6TV6TF7.js.map +0 -1
  306. package/dist/chunk-GIU6BZTW.js.map +0 -1
  307. package/dist/chunk-HCTZJYHK.js.map +0 -1
  308. package/dist/chunk-JSHUWI3C.js.map +0 -1
  309. package/dist/chunk-LCWXIQKA.js.map +0 -1
  310. package/dist/chunk-MJQ6R345.js.map +0 -1
  311. package/dist/chunk-MKG3UAP6.js +0 -347
  312. package/dist/chunk-MKG3UAP6.js.map +0 -1
  313. package/dist/chunk-MS2ZNYCJ.js +0 -9
  314. package/dist/chunk-MS2ZNYCJ.js.map +0 -1
  315. package/dist/chunk-OCLVMKVC.js.map +0 -1
  316. package/dist/chunk-PGOCR4LG.js.map +0 -1
  317. package/dist/chunk-PPYJQNE5.js.map +0 -1
  318. package/dist/chunk-QZX3RFIC.js.map +0 -1
  319. package/dist/chunk-RTIFG4XT.js +0 -9
  320. package/dist/chunk-STRBBF45.js.map +0 -1
  321. package/dist/chunk-U2UNWXBC.js.map +0 -1
  322. package/dist/chunk-UEGIKBX6.js +0 -385
  323. package/dist/chunk-UEGIKBX6.js.map +0 -1
  324. package/dist/chunk-UIA74JVN.js.map +0 -1
  325. package/dist/chunk-UNWEH4Z6.js.map +0 -1
  326. package/dist/chunk-V2MG5Y5F.js.map +0 -1
  327. package/dist/chunk-X2YUFNK7.js +0 -18
  328. package/dist/chunk-X2YUFNK7.js.map +0 -1
  329. package/dist/chunk-XGFJJ2YB.js.map +0 -1
  330. package/dist/chunk-YZLPO4B2.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/slider/Slider.tsx","../src/components/slider/index.ts"],"names":["isVertical","n"],"mappings":";;;;;AAqBA,IAAM,QAAA,GAAW,CAAC,KAAA,EAAgB,QAAA,KAAqB;AACrD,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,QAAA,CAAS,KAAK,GAAG,OAAO,KAAA;AAChE,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,MAAM,MAAA,GAAS,OAAO,KAAK,CAAA;AAC3B,IAAA,IAAI,MAAA,CAAO,QAAA,CAAS,MAAM,CAAA,EAAG,OAAO,MAAA;AAAA,EACtC;AACA,EAAA,OAAO,QAAA;AACT,CAAA;AAEA,IAAM,KAAA,GAAQ,CAAC,CAAA,EAAW,GAAA,EAAa,GAAA,KAAgB,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,CAAC,CAAC,CAAA;AAErF,IAAM,iBAAA,GAAoB,CACxB,GAAA,EACA,cAAA,EACA,KACA,GAAA,KACa;AACb,EAAA,IAAI,GAAA,KAAQ,QAAW,OAAO,CAAC,MAAM,cAAA,EAAgB,GAAA,EAAK,GAAG,CAAC,CAAA;AAC9D,EAAA,IAAI,MAAM,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,GAAI,GAAA,GAAM,CAAC,GAAG,CAAA;AACzC,EAAA,IAAI,GAAA,CAAI,WAAW,CAAA,EAAG,OAAO,CAAC,KAAA,CAAM,cAAA,EAAgB,GAAA,EAAK,GAAG,CAAC,CAAA;AAC7D,EAAA,IAAI,GAAA,CAAI,SAAS,CAAA,EAAG;AAClB,IAAA,GAAA,GAAM,CAAC,GAAG,GAAG,CAAA,CAAE,KAAK,CAAC,CAAA,EAAG,CAAA,KAAM,QAAA,CAAS,GAAG,GAAG,CAAA,GAAI,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA,EACnE;AACA,EAAA,OAAO,GAAA,CAAI,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,KAAM;AACvB,IAAA,MAAM,EAAA,GAAK,MAAM,CAAA,GAAI,cAAA,GAAiB,SAAS,GAAA,CAAI,CAAA,GAAI,CAAC,CAAA,EAAG,GAAG,CAAA;AAC9D,IAAA,OAAO,MAAM,QAAA,CAAS,CAAA,EAAG,EAAE,CAAA,EAAG,KAAK,GAAG,CAAA;AAAA,EACxC,CAAC,CAAA;AACH,CAAA;AAEA,IAAM,YAAA,GAAe,CAAC,IAAA,EAAgB,GAAA,EAAa,KAAa,IAAA,KAA2B;AACzF,EAAA,MAAM,IAAI,IAAA,CAAK,MAAA;AACf,EAAA,IAAI,CAAA,IAAK,GAAG,OAAO,IAAA;AACnB,EAAA,MAAM,GAAA,GAAM,CAAC,GAAG,IAAI,CAAA;AACpB,EAAA,GAAA,CAAI,CAAC,CAAA,GAAI,KAAA,CAAM,IAAI,CAAC,CAAA,EAAG,KAAK,GAAG,CAAA;AAC/B,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA,EAAA,EAAK;AAC1B,IAAA,MAAM,GAAA,GAAM,IAAA,GAAO,CAAA,GAAI,IAAA,GAAO,CAAA;AAC9B,IAAA,GAAA,CAAI,CAAC,CAAA,GAAI,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,EAAG,GAAA,CAAI,CAAA,GAAI,CAAC,CAAA,GAAI,GAAA,EAAK,GAAG,CAAA;AAAA,EAC9C;AACA,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,GAAI,CAAA,EAAG,CAAA,IAAK,GAAG,CAAA,EAAA,EAAK;AAC/B,IAAA,MAAM,GAAA,GAAM,IAAA,GAAO,CAAA,GAAI,IAAA,GAAO,CAAA;AAC9B,IAAA,GAAA,CAAI,CAAC,CAAA,GAAI,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,EAAG,GAAA,EAAK,GAAA,CAAI,CAAA,GAAI,CAAC,CAAA,GAAI,GAAG,CAAA;AAAA,EAC9C;AACA,EAAA,OAAO,GAAA;AACT,CAAA;AAGA,IAAM,iBAAA,GAAoB,UAAA;AAC1B,IAAM,iBAAA,GAAoB,SAAA;AAK1B,IAAM,kBAAA,GAAqB;AAAA,EACzB,mHAAA;AAAA;AAAA,EAEA,qCAAA;AAAA,EACA,kJAAA;AAAA,EACA,yDAAA;AAAA,EACA,kDAAA;AAAA,EACA,iEAAA;AAAA,EACA,yEAAA;AAAA,EACA,+HAAA;AAAA,EACA,iMAAA;AAAA,EACA,sDAAA;AAAA,EACA,uGAAA;AAAA,EACA,kIAAA;AAAA,EACA,qDAAA;AAAA,EACA,8CAAA;AAAA,EACA,6DAAA;AAAA,EACA,iEAAA;AAAA,EACA,mHAAA;AAAA,EACA,qLAAA;AAAA,EACA;AACF,CAAA,CAAE,KAAK,GAAG,CAAA;AAEV,IAAM,sBAAA,GAAyB,EAAA;AAAA,EAC7B,4HAAA;AAAA,EACA,+CAAA;AAAA,EACA,0DAAA;AAAA,EACA,0IAAA;AAAA,EACA,mGAAA;AAAA,EACA,4GAAA;AAAA,EACA;AACF,CAAA;AAMA,IAAM,oBAAA,GAAuB,EAAA;AAAA,EAC3B,+HAAA;AAAA,EACA,2EAAA;AAAA,EACA,+CAAA;AAAA,EACA,0DAAA;AAAA,EACA,oLAAA;AAAA,EACA,qCAAA;AAAA,EACA,gIAAA;AAAA,EACA,sEAAA;AAAA,EACA;AACF,CAAA;AAEA,IAAM,yBAAA,GAA4B,sBAAA;AAElC,IAAM,uBAAA,GAA0B,oBAAA;AAEhC,IAAM,GAAA,GAAM,CAAC,CAAA,EAAW,GAAA,EAAa,GAAA,KAAgB;AACnD,EAAA,MAAM,IAAA,GAAO,MAAM,GAAA,IAAO,CAAA;AAC1B,EAAA,OAAO,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,IAAA,CAAK,GAAA,CAAI,IAAK,CAAA,GAAI,GAAA,IAAO,IAAA,GAAQ,GAAG,CAAC,CAAA;AAC5D,CAAA;AAGA,SAAS,8BAAA,CAA+B,IAAiB,WAAA,EAAqB;AAC5E,EAAA,EAAA,CAAG,MAAM,IAAA,GAAO,iBAAA;AAChB,EAAA,EAAA,CAAG,KAAA,CAAM,QAAQ,CAAA,KAAA,EAAQ,iBAAiB,cAAc,iBAAiB,CAAA,IAAA,EAAA,CAAQ,GAAA,GAAM,WAAA,IAAe,GAAG,CAAA,CAAA,CAAA;AAC3G;AAEA,SAAS,4BAAA,CAA6B,IAAiB,WAAA,EAAqB;AAC1E,EAAA,EAAA,CAAG,MAAM,MAAA,GAAS,iBAAA;AAClB,EAAA,EAAA,CAAG,KAAA,CAAM,MAAA,GAAS,CAAA,aAAA,EAAgB,iBAAiB,OAAO,WAAW,CAAA,OAAA,CAAA;AACvE;AAEO,IAAM,SAAS,CAAC;AAAA,EACrB,YAAA,GAAe,EAAA;AAAA,EACf,KAAA,EAAO,eAAA;AAAA,EACP,OAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA,EAAU,YAAA;AAAA,EACV,aAAA,EAAe,eAAA;AAAA,EACf,KAAA,EAAO,SAAA;AAAA,EACP,GAAA,EAAK,OAAA;AAAA,EACL,GAAA,EAAK,OAAA;AAAA,EACL,IAAA,EAAM,QAAA;AAAA,EACN,QAAA;AAAA,EACA,WAAA,GAAc,YAAA;AAAA,EACd,EAAA;AAAA;AAAA,EAEA,KAAA,EAAO,cAAA;AAAA,EACP,GAAG;AACL,CAAA,KAAmB;AACjB,EAAA,MAAM,QAAA,GAAW,QAAA,CAAS,OAAA,EAAS,CAAC,CAAA;AACpC,EAAA,MAAM,QAAA,GAAW,QAAA,CAAS,OAAA,EAAS,GAAG,CAAA;AACtC,EAAA,MAAM,SAAA,GAAY,QAAA,CAAS,QAAA,EAAU,CAAC,CAAA;AAEtC,EAAA,MAAM,WAAA,GAAc,OAAA;AAAA,IAClB,MACE,MAAA;AAAA,MACE,YAAA;AAAA,QACE,iBAAA,CAAkB,YAAA,EAAc,EAAA,EAAI,QAAA,EAAU,QAAQ,CAAA;AAAA,QACtD,QAAA;AAAA,QACA,QAAA;AAAA,QACA;AAAA;AACF,KACF;AAAA,IACF;AAAC,GACH;AAEA,EAAA,MAAM,eAAe,eAAA,KAAoB,MAAA;AACzC,EAAA,MAAM,SAAS,YAAA,GACX,YAAA;AAAA,IACE,iBAAA,CAAkB,eAAA,EAAiB,EAAA,EAAI,QAAA,EAAU,QAAQ,CAAA;AAAA,IACzD,QAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,MAEF,WAAA,CAAY,KAAA;AAEhB,EAAA,MAAM,gBAAA,GAAmB,OAAO,aAAa,CAAA;AAC7C,EAAA,gBAAA,CAAiB,OAAA,GAAU,aAAA;AAC3B,EAAA,MAAM,cAAA,GAAiB,OAAO,WAAW,CAAA;AACzC,EAAA,cAAA,CAAe,OAAA,GAAU,WAAA;AACzB,EAAA,MAAM,eAAA,GAAkB,OAAO,YAAY,CAAA;AAC3C,EAAA,eAAA,CAAgB,OAAA,GAAU,YAAA;AAE1B,EAAA,MAAM,wBAAA,GAA2B,OAAwB,IAAI,CAAA;AAC7D,EAAA,MAAM,sBAAA,GAAyB,OAAwB,IAAI,CAAA;AAE3D,EAAA,MAAM,mBAAA,GAAsB,OAAgC,IAAI,CAAA;AAEhE,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAS,KAAK,CAAA;AAK9C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAwB,IAAI,CAAA;AAG9D,EAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,CAAC,OAAA,KAAsB;AACzD,IAAA,gBAAA,CAAiB,UAAU,OAAO,CAAA;AAAA,EACpC,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,QAAA,EAAU;AACf,IAAA,MAAM,MAAM,MAAM;AAChB,MAAA,WAAA,CAAY,KAAK,CAAA;AAAA,IACnB,CAAA;AACA,IAAA,MAAA,CAAO,gBAAA,CAAiB,aAAa,GAAG,CAAA;AACxC,IAAA,MAAA,CAAO,gBAAA,CAAiB,iBAAiB,GAAG,CAAA;AAC5C,IAAA,OAAO,MAAM;AACX,MAAA,MAAA,CAAO,mBAAA,CAAoB,aAAa,GAAG,CAAA;AAC3C,MAAA,MAAA,CAAO,mBAAA,CAAoB,iBAAiB,GAAG,CAAA;AAAA,IACjD,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,EAAA,MAAM,kBAAkB,MAAA,CAAO,MAAA,KAAW,CAAA,GAAI,MAAA,CAAO,CAAC,CAAA,GAAI,IAAA;AAC1D,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,IAAI,CAAC,YAAA,IAAgB,QAAA,IAAY,eAAA,KAAoB,IAAA,EAAM;AAC3D,IAAA,MAAM,KAAK,mBAAA,CAAoB,OAAA;AAC/B,IAAA,IAAI,CAAC,EAAA,IAAM,EAAA,CAAG,QAAA,EAAU;AACxB,IAAA,MAAM,IAAA,GAAO,OAAO,eAAe,CAAA;AACnC,IAAA,IAAI,EAAA,CAAG,KAAA,KAAU,IAAA,EAAM,EAAA,CAAG,KAAA,GAAQ,IAAA;AAAA,EACpC,CAAA,EAAG,CAAC,YAAA,EAAc,QAAA,EAAU,iBAAiB,QAAA,EAAU,QAAA,EAAU,SAAA,EAAW,QAAQ,CAAC,CAAA;AAErF,EAAA,MAAM,SAAA,GAAY,CAAC,IAAA,KAAmB;AACpC,IAAA,MAAM,OAAA,GAAU,YAAA,CAAa,IAAA,EAAM,QAAA,EAAU,UAAU,SAAS,CAAA;AAChE,IAAA,IAAI,CAAC,YAAA,EAAc,WAAA,CAAY,KAAA,GAAQ,OAAA;AACvC,IAAA,eAAA,CAAgB,OAAO,CAAA;AAAA,EACzB,CAAA;AAEA,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAS,CAAC,CAAA;AAE1C,EAAA,MAAM,aAAA,GAAgB,OAAwB,IAAI,CAAA;AAElD,EAAA,MAAM,6BAAA,GAAgC,WAAA;AAAA,IACpC,CAAC,SAAiB,OAAA,KAAoB;AACpC,MAAA,IAAI,YAAY,QAAA,EAAU;AAC1B,MAAA,IAAI,MAAA,CAAO,SAAS,CAAA,EAAG;AACvB,MAAA,MAAM,OAAO,aAAA,CAAc,OAAA;AAC3B,MAAA,IAAI,CAAC,IAAA,EAAM;AACX,MAAA,MAAM,IAAA,GAAO,KAAK,qBAAA,EAAsB;AACxC,MAAA,IAAI,IAAA,CAAK,KAAA,IAAS,CAAA,IAAK,IAAA,CAAK,UAAU,CAAA,EAAG;AACzC,MAAA,MAAM,IAAA,GAAO,WAAW,QAAA,IAAY,CAAA;AACpC,MAAA,IAAI,MAAA;AACJ,MAAA,IAAI,gBAAgB,UAAA,EAAY;AAC9B,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,CAAA,EAAA,CAAI,IAAA,CAAK,MAAA,GAAS,OAAA,IAAW,IAAA,CAAK,MAAM,CAAC,CAAA;AAC5E,QAAA,MAAA,GAAS,WAAW,KAAA,GAAQ,IAAA;AAAA,MAC9B,CAAA,MAAO;AACL,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,CAAA,EAAA,CAAI,OAAA,GAAU,IAAA,CAAK,IAAA,IAAQ,IAAA,CAAK,KAAK,CAAC,CAAA;AACzE,QAAA,MAAA,GAAS,WAAW,KAAA,GAAQ,IAAA;AAAA,MAC9B;AACA,MAAA,IAAI,OAAA,GAAU,CAAA;AACd,MAAA,IAAI,IAAA,GAAO,QAAA;AACX,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACtC,QAAA,MAAM,IAAI,IAAA,CAAK,GAAA,CAAI,MAAA,CAAO,CAAC,IAAI,MAAM,CAAA;AACrC,QAAA,IAAI,IAAI,IAAA,EAAM;AACZ,UAAA,IAAA,GAAO,CAAA;AACP,UAAA,OAAA,GAAU,CAAA;AAAA,QACZ;AAAA,MACF;AACA,MAAA,WAAA,CAAY,CAAC,IAAA,KAAU,IAAA,KAAS,OAAA,GAAU,OAAO,OAAQ,CAAA;AAAA,IAC3D,CAAA;AAAA,IACA,CAAC,QAAA,EAAU,QAAA,EAAU,WAAA,EAAa,QAAA,EAAU,UAAU,MAAM;AAAA,GAC9D;AAEA,EAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,IAAA,MAAM,aAAA,GAAgB,OAAO,CAAC,CAAA;AAC9B,IAAA,MAAM,YAAA,GAAe,YAAA,IAAgB,SAAA,KAAc,IAAA,GAAO,SAAA,GAAY,aAAA;AACtE,IAAA,MAAM,SAAA,GAAY,WAAW,QAAA,IAAY,CAAA;AACzC,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,IAAA,CAAK,GAAA,CAAI,CAAA,EAAA,CAAK,YAAA,GAAe,QAAA,IAAY,SAAA,GAAa,GAAG,CAAC,CAAA;AAC5F,IAAA,MAAMA,cAAa,WAAA,KAAgB,UAAA;AAEnC,IAAA,IAAIA,WAAAA,EAAY;AACd,MAAA,uBACE,IAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,WAAA,EAAU,QAAA;AAAA,UACV,GAAA,EAAI,KAAA;AAAA,UACJ,kBAAA,EAAiB,UAAA;AAAA,UACjB,eAAA,EAAe,QAAA;AAAA,UACf,eAAA,EAAe,WAAW,EAAA,GAAK,MAAA;AAAA,UAC/B,eAAA,EAAe,WAAW,EAAA,GAAK,MAAA;AAAA,UAC/B,KAAA,EAAO,EAAA;AAAA,YACL,gOAAA;AAAA,YACA;AAAA,WACF;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,WAAA,EAAU,cAAA;AAAA,gBACV,kBAAA,EAAiB,UAAA;AAAA,gBACjB,KAAA,EAAM,mHAAA;AAAA,gBACN,aAAA,EAAY;AAAA;AAAA,aACd;AAAA,4BACA,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,GAAA,EAAK,sBAAA;AAAA,gBACL,WAAA,EAAU,cAAA;AAAA,gBACV,kBAAA,EAAiB,UAAA;AAAA,gBACjB,KAAA,EAAM,+GAAA;AAAA,gBACN,KAAA,EAAO;AAAA,kBACL,MAAA,EAAQ,iBAAA;AAAA,kBACR,MAAA,EAAQ,CAAA,aAAA,EAAgB,iBAAiB,CAAA,IAAA,EAAO,WAAW,CAAA,OAAA;AAAA,iBAC7D;AAAA,gBACA,aAAA,EAAY;AAAA;AAAA,aACd;AAAA,4BACA,GAAA;AAAA,cAAC,OAAA;AAAA,cAAA;AAAA,gBACE,GAAG,IAAA;AAAA,gBACJ,GAAA,EAAK,mBAAA;AAAA,gBACL,IAAA,EAAK,OAAA;AAAA,gBACL,WAAA,EAAU,cAAA;AAAA,gBAEV,MAAA,EAAO,UAAA;AAAA,gBACP,EAAA;AAAA,gBACA,GAAA,EAAK,QAAA;AAAA,gBACL,GAAA,EAAK,QAAA;AAAA,gBACL,IAAA,EAAM,SAAA;AAAA,gBACN,QAAA;AAAA,gBACC,GAAI,CAAC,YAAA,GAAe,EAAE,KAAA,EAAO,YAAA,KAAiB,EAAC;AAAA,gBAChD,KAAA,EAAO,oBAAA;AAAA,gBACP,KAAA,EAAO,cAAA;AAAA,gBACP,aAAA,EAAe,CAAC,CAAA,KAAM;AACpB,kBAAA,IAAI,CAAC,QAAA,EAAU;AACb,oBAAA,WAAA,CAAY,IAAI,CAAA;AAChB,oBAAA,IAAI,YAAA,eAA2B,aAAa,CAAA;AAAA,kBAC9C;AACA,kBAAA,eAAA,GAAkB,CAAC,CAAA;AAAA,gBACrB,CAAA;AAAA,gBACA,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,kBAAA,MAAMC,EAAAA,GAAI,MAAA,CAAQ,KAAA,CAAM,aAAA,CAAmC,KAAK,CAAA;AAChE,kBAAA,MAAM,EAAA,GAAK,GAAA,CAAIA,EAAAA,EAAG,QAAA,EAAU,QAAQ,CAAA;AACpC,kBAAA,MAAM,KAAK,sBAAA,CAAuB,OAAA;AAClC,kBAAA,IAAI,EAAA,EAAI,4BAAA,CAA6B,EAAA,EAAI,EAAE,CAAA;AAC3C,kBAAA,IAAI,YAAA,eAA2BA,EAAC,CAAA;AAAA,uBAC3B,WAAA,CAAY,KAAA,GAAQ,CAACA,EAAC,CAAA;AAC3B,kBAAA,eAAA,CAAgB,CAACA,EAAC,CAAC,CAAA;AACnB,kBAAA,OAAA,GAAU,KAAK,CAAA;AAAA,gBACjB,CAAA;AAAA,gBACA,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,kBAAA,YAAA,GAAe,CAAC,CAAA;AAChB,kBAAA,MAAMA,EAAAA,GAAI,MAAA,CAAQ,CAAA,CAAE,aAAA,CAAmC,KAAK,CAAA;AAC5D,kBAAA,aAAA,GAAgB,CAACA,EAAC,CAAC,CAAA;AACnB,kBAAA,IAAI,YAAA,eAA2B,IAAI,CAAA;AAAA,gBACrC;AAAA;AAAA;AACF;AAAA;AAAA,OACF;AAAA,IAEJ;AAEA,IAAA,uBACE,IAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,WAAA,EAAU,QAAA;AAAA,QACV,GAAA,EAAI,KAAA;AAAA,QACJ,kBAAA,EAAiB,YAAA;AAAA,QACjB,eAAA,EAAe,QAAA;AAAA,QACf,eAAA,EAAe,WAAW,EAAA,GAAK,MAAA;AAAA,QAC/B,eAAA,EAAe,WAAW,EAAA,GAAK,MAAA;AAAA,QAC/B,KAAA,EAAO,EAAA;AAAA,UACL,wGAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,WAAA,EAAU,cAAA;AAAA,cACV,kBAAA,EAAiB,YAAA;AAAA,cACjB,KAAA,EAAM,kHAAA;AAAA,cACN,aAAA,EAAY;AAAA;AAAA,WACd;AAAA,0BACA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,wBAAA;AAAA,cACL,WAAA,EAAU,cAAA;AAAA,cACV,kBAAA,EAAiB,YAAA;AAAA,cACjB,KAAA,EAAM,8GAAA;AAAA,cACN,KAAA,EAAO;AAAA,gBACL,IAAA,EAAM,iBAAA;AAAA,gBACN,KAAA,EAAO,QAAQ,iBAAiB,CAAA,WAAA,EAAc,iBAAiB,CAAA,IAAA,EAAA,CAAQ,GAAA,GAAM,eAAe,GAAG,CAAA,CAAA;AAAA,eACjG;AAAA,cACA,aAAA,EAAY;AAAA;AAAA,WACd;AAAA,0BACA,GAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACE,GAAG,IAAA;AAAA,cACJ,GAAA,EAAK,mBAAA;AAAA,cACL,IAAA,EAAK,OAAA;AAAA,cACL,WAAA,EAAU,cAAA;AAAA,cACV,EAAA;AAAA,cACA,GAAA,EAAK,QAAA;AAAA,cACL,GAAA,EAAK,QAAA;AAAA,cACL,IAAA,EAAM,SAAA;AAAA,cACN,QAAA;AAAA,cACC,GAAI,CAAC,YAAA,GAAe,EAAE,KAAA,EAAO,YAAA,KAAiB,EAAC;AAAA,cAChD,KAAA,EAAO,sBAAA;AAAA,cACP,KAAA,EAAO,cAAA;AAAA,cACP,aAAA,EAAe,CAAC,CAAA,KAAM;AACpB,gBAAA,IAAI,CAAC,QAAA,EAAU;AACb,kBAAA,WAAA,CAAY,IAAI,CAAA;AAChB,kBAAA,IAAI,YAAA,eAA2B,aAAa,CAAA;AAAA,gBAC9C;AACA,gBAAA,eAAA,GAAkB,CAAC,CAAA;AAAA,cACrB,CAAA;AAAA,cACA,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,gBAAA,MAAMA,EAAAA,GAAI,MAAA,CAAQ,KAAA,CAAM,aAAA,CAAmC,KAAK,CAAA;AAChE,gBAAA,MAAM,EAAA,GAAK,GAAA,CAAIA,EAAAA,EAAG,QAAA,EAAU,QAAQ,CAAA;AACpC,gBAAA,MAAM,KAAK,wBAAA,CAAyB,OAAA;AACpC,gBAAA,IAAI,EAAA,EAAI,8BAAA,CAA+B,EAAA,EAAI,EAAE,CAAA;AAC7C,gBAAA,IAAI,YAAA,eAA2BA,EAAC,CAAA;AAAA,qBAC3B,WAAA,CAAY,KAAA,GAAQ,CAACA,EAAC,CAAA;AAC3B,gBAAA,eAAA,CAAgB,CAACA,EAAC,CAAC,CAAA;AACnB,gBAAA,OAAA,GAAU,KAAK,CAAA;AAAA,cACjB,CAAA;AAAA,cACA,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,gBAAA,YAAA,GAAe,CAAC,CAAA;AAChB,gBAAA,MAAMA,EAAAA,GAAI,MAAA,CAAQ,CAAA,CAAE,aAAA,CAAmC,KAAK,CAAA;AAC5D,gBAAA,aAAA,GAAgB,CAACA,EAAC,CAAC,CAAA;AACnB,gBAAA,IAAI,YAAA,eAA2B,IAAI,CAAA;AAAA,cACrC;AAAA;AAAA;AACF;AAAA;AAAA,KACF;AAAA,EAEJ;AAEA,EAAA,MAAM,aAAa,WAAA,KAAgB,UAAA;AACnC,EAAA,MAAM,IAAI,MAAA,CAAO,MAAA;AAOjB,EAAA,MAAM,YAAA,GAAe,CAAC,CAAA,EAAW,KAAA,KAAoD;AACnF,IAAA,MAAM,GAAA,GAAM,MAAA,CAAO,KAAA,CAAM,aAAA,CAAc,KAAK,CAAA;AAC5C,IAAA,MAAM,IAAA,GAAO,CAAC,GAAG,MAAM,CAAA;AACvB,IAAA,IAAA,CAAK,CAAC,CAAA,GAAI,GAAA;AACV,IAAA,SAAA,CAAU,IAAI,CAAA;AACd,IAAA,OAAA,GAAU,KAAK,CAAA;AAAA,EACjB,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,EAAW,KAAA,KAA+C;AAC/E,IAAA,IAAI,CAAA,KAAM,CAAA,EAAG,YAAA,GAAe,KAAiD,CAAA;AAC7E,IAAA,MAAM,GAAA,GAAM,MAAA,CAAQ,KAAA,CAAM,aAAA,CAAmC,KAAK,CAAA;AAClE,IAAA,MAAM,IAAA,GAAO,CAAC,GAAG,MAAM,CAAA;AACvB,IAAA,IAAA,CAAK,CAAC,CAAA,GAAI,GAAA;AACV,IAAA,aAAA,GAAgB,YAAA,CAAa,IAAA,EAAM,QAAA,EAAU,QAAA,EAAU,SAAS,CAAC,CAAA;AAAA,EACnE,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,6BACpB,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,WAAA,EAAU,cAAA;AAAA,QACV,kBAAA,EAAiB,UAAA;AAAA,QACjB,KAAA,EAAM,mHAAA;AAAA,QACN,aAAA,EAAY;AAAA;AAAA,KACd;AAAA,IACC,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,KAAM;AACpB,MAAA,IAAI,CAAA,KAAM,CAAA,GAAI,CAAA,EAAG,OAAO,IAAA;AACxB,MAAA,MAAM,EAAA,GAAK,CAAA;AACX,MAAA,MAAM,EAAA,GAAK,MAAA,CAAO,CAAA,GAAI,CAAC,CAAA;AACvB,MAAA,MAAM,GAAA,GAAM,GAAA,CAAI,EAAA,EAAI,QAAA,EAAU,QAAQ,CAAA;AACtC,MAAA,MAAM,GAAA,GAAM,GAAA,CAAI,EAAA,EAAI,QAAA,EAAU,QAAQ,CAAA;AACtC,MAAA,uBACE,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEC,WAAA,EAAU,cAAA;AAAA,UACV,kBAAA,EAAiB,UAAA;AAAA,UACjB,KAAA,EAAM,+GAAA;AAAA,UACN,KAAA,EAAO;AAAA,YACL,QAAQ,CAAA,KAAA,EAAQ,iBAAiB,CAAA,WAAA,EAAc,iBAAiB,OAAO,GAAG,CAAA,OAAA,CAAA;AAAA,YAC1E,MAAA,EAAQ,gBAAgB,iBAAiB,CAAA,IAAA,EAAO,KAAK,GAAA,CAAI,CAAA,EAAG,GAAA,GAAM,GAAG,CAAC,CAAA,OAAA;AAAA,WACxE;AAAA,UACA,aAAA,EAAY;AAAA,SAAA;AAAA,QARP,QAAQ,CAAC,CAAA;AAAA,OAShB;AAAA,IAEJ,CAAC;AAAA,GAAA,EACH,oBAEA,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,WAAA,EAAU,cAAA;AAAA,QACV,kBAAA,EAAiB,YAAA;AAAA,QACjB,KAAA,EAAM,kHAAA;AAAA,QACN,aAAA,EAAY;AAAA;AAAA,KACd;AAAA,IACC,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,KAAM;AACpB,MAAA,IAAI,CAAA,KAAM,CAAA,GAAI,CAAA,EAAG,OAAO,IAAA;AACxB,MAAA,MAAM,EAAA,GAAK,CAAA;AACX,MAAA,MAAM,EAAA,GAAK,MAAA,CAAO,CAAA,GAAI,CAAC,CAAA;AACvB,MAAA,MAAM,GAAA,GAAM,GAAA,CAAI,EAAA,EAAI,QAAA,EAAU,QAAQ,CAAA;AACtC,MAAA,MAAM,GAAA,GAAM,GAAA,CAAI,EAAA,EAAI,QAAA,EAAU,QAAQ,CAAA;AACtC,MAAA,uBACE,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEC,WAAA,EAAU,cAAA;AAAA,UACV,kBAAA,EAAiB,YAAA;AAAA,UACjB,KAAA,EAAM,8GAAA;AAAA,UACN,KAAA,EAAO;AAAA,YACL,MAAM,CAAA,KAAA,EAAQ,iBAAiB,CAAA,WAAA,EAAc,iBAAiB,OAAO,GAAG,CAAA,OAAA,CAAA;AAAA,YACxE,KAAA,EAAO,gBAAgB,iBAAiB,CAAA,IAAA,EAAO,KAAK,GAAA,CAAI,CAAA,EAAG,GAAA,GAAM,GAAG,CAAC,CAAA,OAAA;AAAA,WACvE;AAAA,UACA,aAAA,EAAY;AAAA,SAAA;AAAA,QARP,QAAQ,CAAC,CAAA;AAAA,OAShB;AAAA,IAEJ,CAAC;AAAA,GAAA,EACH,CAAA;AAGF,EAAA,MAAM,SAAA,GAAY,EAAA;AAAA,IAChB,kEAAA;AAAA,IACA,aACI,+JAAA,GACA,uCAAA;AAAA,IACJ;AAAA,GACF;AAEA,EAAA,MAAM,eAAA,GAAkB,kCAAA;AAExB,EAAA,MAAM,aAAA,GAAgB,MAAO,UAAA,GAAa,uBAAA,GAA0B,yBAAA;AAEpE,EAAA,uBACE,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,aAAA;AAAA,MACL,WAAA,EAAU,QAAA;AAAA,MACV,EAAA;AAAA,MACA,GAAA,EAAI,KAAA;AAAA,MACJ,kBAAA,EAAkB,aAAa,UAAA,GAAa,YAAA;AAAA,MAC5C,eAAA,EAAe,QAAA;AAAA,MACf,eAAA,EAAe,WAAW,EAAA,GAAK,MAAA;AAAA,MAC/B,eAAA,EAAe,WAAW,EAAA,GAAK,MAAA;AAAA,MAC/B,KAAA,EAAO,SAAA;AAAA,MACP,IAAA,EAAK,OAAA;AAAA,MACL,gBAAgB,CAAC,CAAA,KAAM,8BAA8B,CAAA,CAAE,OAAA,EAAS,EAAE,OAAO,CAAA;AAAA,MACzE,eAAe,CAAC,CAAA,KAAM,8BAA8B,CAAA,CAAE,OAAA,EAAS,EAAE,OAAO,CAAA;AAAA,MAEvE,QAAA,EAAA;AAAA,QAAA,aAAA;AAAA,wBACD,GAAA,CAAC,UAAK,KAAA,EAAO,eAAA,EACV,iBAAO,GAAA,CAAI,CAAC,GAAG,CAAA,qBACd,GAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YAEE,GAAI,CAAA,KAAM,CAAA,GAAI,IAAA,GAAO,EAAC;AAAA,YACvB,IAAA,EAAK,OAAA;AAAA,YACL,WAAA,EAAU,cAAA;AAAA,YAEV,MAAA,EAAQ,aAAa,UAAA,GAAa,MAAA;AAAA,YAClC,GAAA,EAAK,QAAA;AAAA,YACL,GAAA,EAAK,QAAA;AAAA,YACL,IAAA,EAAM,SAAA;AAAA,YACN,QAAA;AAAA,YACA,KAAA,EAAO,CAAA;AAAA,YACP,KAAA,EAAO;AAAA,cACL,GAAI,OAAO,cAAA,KAAmB,QAAA,IAC9B,cAAA,KAAmB,IAAA,IACnB,CAAC,KAAA,CAAM,OAAA,CAAQ,cAAc,CAAA,GACzB,cAAA,GACA,EAAC;AAAA,cACL,MAAA,EAAQ,QAAA,KAAa,CAAA,GAAI,CAAA,GAAI,CAAA;AAAA,cAC7B,aAAA,EAAe,QAAA,GAAW,MAAA,GAAY,QAAA,KAAa,IAAI,MAAA,GAAS;AAAA,aAClE;AAAA,YACA,OAAO,aAAA,EAAc;AAAA,YACrB,OAAA,EAAS,CAAC,CAAA,KAAM,YAAA,CAAa,GAAG,CAAC,CAAA;AAAA,YACjC,QAAA,EAAU,CAAC,CAAA,KAAM,aAAA,CAAc,GAAG,CAAC,CAAA;AAAA,YACnC,aAAA,EAAe,CAAC,CAAA,KAAM;AACpB,cAAA,IAAI,CAAC,QAAA,EAAU,WAAA,CAAY,IAAI,CAAA;AAC/B,cAAA,WAAA,CAAY,CAAC,CAAA;AACb,cAAA,IAAI,CAAA,KAAM,CAAA,EAAG,eAAA,GAAkB,CAAC,CAAA;AAAA,YAClC,CAAA;AAAA,YACA,OAAA,EAAS,MAAM,WAAA,CAAY,CAAC,CAAA;AAAA,YAC5B,YAAA,EAAY,IAAI,CAAA,GAAI,CAAA,MAAA,EAAS,IAAI,CAAC,CAAA,IAAA,EAAO,CAAC,CAAA,CAAA,GAAK;AAAA,WAAA;AAAA,UA7B1C;AAAA,SA+BR,CAAA,EACH;AAAA;AAAA;AAAA,GACF;AAEJ;;;AC5jBA,IAAO,cAAA,GAAQ","file":"chunk-MD6HHORY.js","sourcesContent":["import { signal } from \"@preact/signals\";\nimport type { JSX } from \"preact\";\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from \"preact/hooks\";\nimport { cn } from \"../../lib/utils\";\n\nexport type SliderPrimitiveValue = number | number[];\n\nexport type SliderProps = Omit<\n JSX.InputHTMLAttributes<HTMLInputElement>,\n \"value\" | \"defaultValue\" | \"type\"\n> & {\n defaultValue?: SliderPrimitiveValue;\n value?: SliderPrimitiveValue;\n /** Called with the current thumb values (always a sorted array, length ≥ 1). Matches shadcn/Radix-style callbacks. */\n onValueChange?: (value: number[]) => void;\n /** Fires when the user finishes a drag or commits via keyboard (native `change` event). Matches Radix `onValueCommit`. */\n onValueCommit?: (value: number[]) => void;\n orientation?: \"horizontal\" | \"vertical\";\n class?: string;\n};\n\nconst toNumber = (value: unknown, fallback: number) => {\n if (typeof value === \"number\" && Number.isFinite(value)) return value;\n if (typeof value === \"string\") {\n const parsed = Number(value);\n if (Number.isFinite(parsed)) return parsed;\n }\n return fallback;\n};\n\nconst clamp = (n: number, min: number, max: number) => Math.min(max, Math.max(min, n));\n\nconst normalizeIncoming = (\n raw: SliderPrimitiveValue | undefined,\n fallbackSingle: number,\n min: number,\n max: number,\n): number[] => {\n if (raw === undefined) return [clamp(fallbackSingle, min, max)];\n let arr = Array.isArray(raw) ? raw : [raw];\n if (arr.length === 0) return [clamp(fallbackSingle, min, max)];\n if (arr.length > 1) {\n arr = [...arr].sort((a, b) => toNumber(a, min) - toNumber(b, min));\n }\n return arr.map((v, i) => {\n const fb = i === 0 ? fallbackSingle : toNumber(arr[i - 1], min);\n return clamp(toNumber(v, fb), min, max);\n });\n};\n\nconst enforceOrder = (vals: number[], min: number, max: number, step: number): number[] => {\n const n = vals.length;\n if (n <= 1) return vals;\n const out = [...vals];\n out[0] = clamp(out[0], min, max);\n for (let i = 1; i < n; i++) {\n const gap = step > 0 ? step : 0;\n out[i] = clamp(out[i], out[i - 1] + gap, max);\n }\n for (let i = n - 2; i >= 0; i--) {\n const gap = step > 0 ? step : 0;\n out[i] = clamp(out[i], min, out[i + 1] - gap);\n }\n return out;\n};\n\n/** Matches `size-3` thumbs: centers fill/track on native thumb positions (inset at min/max). */\nconst SLIDER_THUMB_HALF = \"0.375rem\";\nconst SLIDER_THUMB_FULL = \"0.75rem\";\n\n/**\n * Radix/shadcn-style thumb: border-ring, ring-3, no shadow. `group-data-[dragging]` avoids transition lag while dragging.\n */\nconst overlayThumbStyles = [\n \"[&::-webkit-slider-thumb]:size-3 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full\",\n /* WebKit: vertically center thumb on h-1 track (thumb 12px, track 4px → -4px). */\n \"[&::-webkit-slider-thumb]:-mt-[4px]\",\n \"[&::-webkit-slider-thumb]:border [&::-webkit-slider-thumb]:border-ring [&::-webkit-slider-thumb]:bg-white [&::-webkit-slider-thumb]:dark:bg-card\",\n \"[&::-webkit-slider-thumb]:transition-[color,box-shadow]\",\n \"[&::-webkit-slider-thumb]:active:transition-none\",\n \"group-data-[dragging]:[&::-webkit-slider-thumb]:transition-none\",\n \"[&::-webkit-slider-thumb]:ring-1 [&::-webkit-slider-thumb]:ring-ring/50\",\n \"[&::-webkit-slider-thumb]:hover:ring-3 [&::-webkit-slider-thumb]:focus-visible:ring-3 [&::-webkit-slider-thumb]:active:ring-3\",\n \"group-data-[dragging]:[&::-webkit-slider-thumb]:hover:ring-1 group-data-[dragging]:[&::-webkit-slider-thumb]:focus-visible:ring-1 group-data-[dragging]:[&::-webkit-slider-thumb]:active:ring-1\",\n \"[&::-webkit-slider-thumb]:focus-visible:outline-none\",\n \"[&::-moz-range-thumb]:size-3 [&::-moz-range-thumb]:appearance-none [&::-moz-range-thumb]:rounded-full\",\n \"[&::-moz-range-thumb]:border [&::-moz-range-thumb]:border-ring [&::-moz-range-thumb]:bg-white [&::-moz-range-thumb]:dark:bg-card\",\n \"[&::-moz-range-thumb]:transition-[color,box-shadow]\",\n \"[&::-moz-range-thumb]:active:transition-none\",\n \"group-data-[dragging]:[&::-moz-range-thumb]:transition-none\",\n \"[&::-moz-range-thumb]:ring-1 [&::-moz-range-thumb]:ring-ring/50\",\n \"[&::-moz-range-thumb]:hover:ring-3 [&::-moz-range-thumb]:focus-visible:ring-3 [&::-moz-range-thumb]:active:ring-3\",\n \"group-data-[dragging]:[&::-moz-range-thumb]:hover:ring-1 group-data-[dragging]:[&::-moz-range-thumb]:focus-visible:ring-1 group-data-[dragging]:[&::-moz-range-thumb]:active:ring-1\",\n \"[&::-moz-range-thumb]:focus-visible:outline-none\",\n].join(\" \");\n\nconst overlayInputHorizontal = cn(\n \"absolute inset-0 m-0 h-6 max-h-none w-full min-w-0 cursor-pointer appearance-none border-0 bg-transparent p-0 outline-none\",\n \"focus:outline-none focus-visible:outline-none\",\n \"disabled:pointer-events-none disabled:cursor-not-allowed\",\n \"[&::-webkit-slider-runnable-track]:h-1 [&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:bg-transparent\",\n \"[&::-moz-range-track]:h-1 [&::-moz-range-track]:rounded-full [&::-moz-range-track]:bg-transparent\",\n \"[&::-moz-range-progress]:h-1 [&::-moz-range-progress]:rounded-full [&::-moz-range-progress]:bg-transparent\",\n overlayThumbStyles,\n);\n\n/**\n * Vertical native range: WebKit uses slider-vertical + bt-lr so min sits at the bottom (matches our fill).\n * Thumb centered on 4px track: (12 − 4) / 2 = 4px offset on the cross axis.\n */\nconst overlayInputVertical = cn(\n \"absolute inset-0 m-0 h-full max-h-none w-full min-w-0 cursor-pointer appearance-none border-0 bg-transparent p-0 outline-none\",\n \"[writing-mode:bt-lr] [-webkit-appearance:slider-vertical] appearance-none\",\n \"focus:outline-none focus-visible:outline-none\",\n \"disabled:pointer-events-none disabled:cursor-not-allowed\",\n \"[&::-webkit-slider-runnable-track]:w-1 [&::-webkit-slider-runnable-track]:h-full [&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:bg-transparent\",\n \"[&::-webkit-slider-thumb]:ml-[-4px]\",\n \"[&::-moz-range-track]:w-1 [&::-moz-range-track]:h-full [&::-moz-range-track]:rounded-full [&::-moz-range-track]:bg-transparent\",\n \"[&::-moz-range-progress]:w-1 [&::-moz-range-progress]:bg-transparent\",\n overlayThumbStyles,\n);\n\nconst multiThumbInputHorizontal = overlayInputHorizontal;\n\nconst multiThumbInputVertical = overlayInputVertical;\n\nconst pct = (v: number, min: number, max: number) => {\n const span = max - min || 1;\n return Math.min(100, Math.max(0, ((v - min) / span) * 100));\n};\n\n/** Sync primary range fill without waiting for React (smooth drag). */\nfunction applySingleHorizontalRangeFill(el: HTMLElement, fillPercent: number) {\n el.style.left = SLIDER_THUMB_HALF;\n el.style.right = `calc(${SLIDER_THUMB_HALF} + (100% - ${SLIDER_THUMB_FULL}) * ${(100 - fillPercent) / 100})`;\n}\n\nfunction applySingleVerticalRangeFill(el: HTMLElement, fillPercent: number) {\n el.style.bottom = SLIDER_THUMB_HALF;\n el.style.height = `calc((100% - ${SLIDER_THUMB_FULL}) * ${fillPercent} / 100)`;\n}\n\nexport const Slider = ({\n defaultValue = 50,\n value: controlledValue,\n onInput,\n onValueChange,\n onValueCommit,\n onChange: userOnChange,\n onPointerDown: userPointerDown,\n class: className,\n min: minProp,\n max: maxProp,\n step: stepProp,\n disabled,\n orientation = \"horizontal\",\n id,\n /** Applied to the native range input(s). Kept out of `rest` so `{...rest}` cannot wipe stacking/pointer rules on multi-thumb. */\n style: inputStyleProp,\n ...rest\n}: SliderProps) => {\n const minValue = toNumber(minProp, 0);\n const maxValue = toNumber(maxProp, 100);\n const stepValue = toNumber(stepProp, 1);\n\n const localValues = useMemo(\n () =>\n signal<number[]>(\n enforceOrder(\n normalizeIncoming(defaultValue, 50, minValue, maxValue),\n minValue,\n maxValue,\n stepValue,\n ),\n ),\n [],\n );\n\n const isControlled = controlledValue !== undefined;\n const values = isControlled\n ? enforceOrder(\n normalizeIncoming(controlledValue, 50, minValue, maxValue),\n minValue,\n maxValue,\n stepValue,\n )\n : localValues.value;\n\n const onValueChangeRef = useRef(onValueChange);\n onValueChangeRef.current = onValueChange;\n const localValuesRef = useRef(localValues);\n localValuesRef.current = localValues;\n const isControlledRef = useRef(isControlled);\n isControlledRef.current = isControlled;\n\n const singleRangeHorizontalRef = useRef<HTMLSpanElement>(null);\n const singleRangeVerticalRef = useRef<HTMLSpanElement>(null);\n /** Single-thumb controlled: do not pass `value=` (Preact would reset the native control every commit and block drag/click/keyboard). Sync via ref + layout effect instead. */\n const singleThumbInputRef = useRef<HTMLInputElement | null>(null);\n\n const [dragging, setDragging] = useState(false);\n /**\n * Controlled sliders: parent `value` often updates one frame late vs the native thumb, which feels janky.\n * While dragging, mirror the thumb in local state so `value` + decorative fill stay in sync with the input.\n */\n const [dragDraft, setDragDraft] = useState<number | null>(null);\n\n /** Fire `onValueChange` in the same turn as the native `input` so controlled `value` matches the DOM (single- and multi-thumb). */\n const emitValueChange = useCallback((payload: number[]) => {\n onValueChangeRef.current?.(payload);\n }, []);\n\n useEffect(() => {\n if (!dragging) return;\n const end = () => {\n setDragging(false);\n };\n window.addEventListener(\"pointerup\", end);\n window.addEventListener(\"pointercancel\", end);\n return () => {\n window.removeEventListener(\"pointerup\", end);\n window.removeEventListener(\"pointercancel\", end);\n };\n }, [dragging]);\n\n const singleThumbProp = values.length === 1 ? values[0] : null;\n useLayoutEffect(() => {\n if (!isControlled || dragging || singleThumbProp === null) return;\n const el = singleThumbInputRef.current;\n if (!el || el.disabled) return;\n const next = String(singleThumbProp);\n if (el.value !== next) el.value = next;\n }, [isControlled, dragging, singleThumbProp, minValue, maxValue, stepValue, disabled]);\n\n const setValues = (next: number[]) => {\n const ordered = enforceOrder(next, minValue, maxValue, stepValue);\n if (!isControlled) localValues.value = ordered;\n emitValueChange(ordered);\n };\n\n const [topIndex, setTopIndex] = useState(0);\n /** Multi-thumb: stacked full-width inputs would always hit the same layer; route pointer to the thumb nearest the cursor. */\n const sliderRootRef = useRef<HTMLSpanElement>(null);\n\n const updateClosestThumbFromPointer = useCallback(\n (clientX: number, clientY: number) => {\n if (disabled || dragging) return;\n if (values.length < 2) return;\n const root = sliderRootRef.current;\n if (!root) return;\n const rect = root.getBoundingClientRect();\n if (rect.width <= 0 || rect.height <= 0) return;\n const span = maxValue - minValue || 1;\n let approx: number;\n if (orientation === \"vertical\") {\n const ratio = Math.min(1, Math.max(0, (rect.bottom - clientY) / rect.height));\n approx = minValue + ratio * span;\n } else {\n const ratio = Math.min(1, Math.max(0, (clientX - rect.left) / rect.width));\n approx = minValue + ratio * span;\n }\n let closest = 0;\n let best = Infinity;\n for (let i = 0; i < values.length; i++) {\n const d = Math.abs(values[i] - approx);\n if (d < best) {\n best = d;\n closest = i;\n }\n }\n setTopIndex((prev) => (prev === closest ? prev : closest));\n },\n [disabled, dragging, orientation, minValue, maxValue, values],\n );\n\n if (values.length === 1) {\n const resolvedValue = values[0];\n const displayValue = isControlled && dragDraft !== null ? dragDraft : resolvedValue;\n const safeRange = maxValue - minValue || 1;\n const fillPercent = Math.min(100, Math.max(0, ((displayValue - minValue) / safeRange) * 100));\n const isVertical = orientation === \"vertical\";\n\n if (isVertical) {\n return (\n <span\n data-slot=\"slider\"\n dir=\"ltr\"\n data-orientation=\"vertical\"\n aria-disabled={disabled}\n data-disabled={disabled ? \"\" : undefined}\n data-dragging={dragging ? \"\" : undefined}\n class={cn(\n \"group relative inline-flex min-h-40 w-6 shrink-0 touch-none select-none justify-center data-[disabled]:opacity-50 data-[orientation=vertical]:min-h-40 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col\",\n className,\n )}\n >\n <span\n data-slot=\"slider-track\"\n data-orientation=\"vertical\"\n class=\"pointer-events-none absolute left-1/2 top-[0.375rem] bottom-[0.375rem] w-1 -translate-x-1/2 rounded-full bg-muted\"\n aria-hidden=\"true\"\n />\n <span\n ref={singleRangeVerticalRef}\n data-slot=\"slider-range\"\n data-orientation=\"vertical\"\n class=\"pointer-events-none absolute left-1/2 w-1 -translate-x-1/2 rounded-full bg-black select-none dark:bg-zinc-200\"\n style={{\n bottom: SLIDER_THUMB_HALF,\n height: `calc((100% - ${SLIDER_THUMB_FULL}) * ${fillPercent} / 100)`,\n }}\n aria-hidden=\"true\"\n />\n <input\n {...rest}\n ref={singleThumbInputRef}\n type=\"range\"\n data-slot=\"slider-thumb\"\n // @ts-expect-error Firefox-only; improves vertical range behavior\n orient=\"vertical\"\n id={id}\n min={minValue}\n max={maxValue}\n step={stepValue}\n disabled={disabled}\n {...(!isControlled ? { value: displayValue } : {})}\n class={overlayInputVertical}\n style={inputStyleProp}\n onPointerDown={(e) => {\n if (!disabled) {\n setDragging(true);\n if (isControlled) setDragDraft(resolvedValue);\n }\n userPointerDown?.(e);\n }}\n onInput={(event) => {\n const n = Number((event.currentTarget as HTMLInputElement).value);\n const fp = pct(n, minValue, maxValue);\n const el = singleRangeVerticalRef.current;\n if (el) applySingleVerticalRangeFill(el, fp);\n if (isControlled) setDragDraft(n);\n else localValues.value = [n];\n emitValueChange([n]);\n onInput?.(event);\n }}\n onChange={(e) => {\n userOnChange?.(e);\n const n = Number((e.currentTarget as HTMLInputElement).value);\n onValueCommit?.([n]);\n if (isControlled) setDragDraft(null);\n }}\n />\n </span>\n );\n }\n\n return (\n <span\n data-slot=\"slider\"\n dir=\"ltr\"\n data-orientation=\"horizontal\"\n aria-disabled={disabled}\n data-disabled={disabled ? \"\" : undefined}\n data-dragging={dragging ? \"\" : undefined}\n class={cn(\n \"group relative flex h-6 w-full shrink-0 touch-none select-none items-center data-[disabled]:opacity-50\",\n className,\n )}\n >\n <span\n data-slot=\"slider-track\"\n data-orientation=\"horizontal\"\n class=\"pointer-events-none absolute top-1/2 left-[0.375rem] right-[0.375rem] h-1 -translate-y-1/2 rounded-full bg-muted\"\n aria-hidden=\"true\"\n />\n <span\n ref={singleRangeHorizontalRef}\n data-slot=\"slider-range\"\n data-orientation=\"horizontal\"\n class=\"pointer-events-none absolute top-1/2 h-1 -translate-y-1/2 rounded-full bg-black select-none dark:bg-zinc-200\"\n style={{\n left: SLIDER_THUMB_HALF,\n right: `calc(${SLIDER_THUMB_HALF} + (100% - ${SLIDER_THUMB_FULL}) * ${(100 - fillPercent) / 100})`,\n }}\n aria-hidden=\"true\"\n />\n <input\n {...rest}\n ref={singleThumbInputRef}\n type=\"range\"\n data-slot=\"slider-thumb\"\n id={id}\n min={minValue}\n max={maxValue}\n step={stepValue}\n disabled={disabled}\n {...(!isControlled ? { value: displayValue } : {})}\n class={overlayInputHorizontal}\n style={inputStyleProp}\n onPointerDown={(e) => {\n if (!disabled) {\n setDragging(true);\n if (isControlled) setDragDraft(resolvedValue);\n }\n userPointerDown?.(e);\n }}\n onInput={(event) => {\n const n = Number((event.currentTarget as HTMLInputElement).value);\n const fp = pct(n, minValue, maxValue);\n const el = singleRangeHorizontalRef.current;\n if (el) applySingleHorizontalRangeFill(el, fp);\n if (isControlled) setDragDraft(n);\n else localValues.value = [n];\n emitValueChange([n]);\n onInput?.(event);\n }}\n onChange={(e) => {\n userOnChange?.(e);\n const n = Number((e.currentTarget as HTMLInputElement).value);\n onValueCommit?.([n]);\n if (isControlled) setDragDraft(null);\n }}\n />\n </span>\n );\n }\n\n const isVertical = orientation === \"vertical\";\n const n = values.length;\n\n /**\n * Every thumb uses the same min/max as the slider so native thumb position matches global\n * `(value - min) / (max - min)` along the track. Per-thumb min/max would scale thumbs to the\n * full track width incorrectly. Ordering is enforced via `enforceOrder` in `setValues`.\n */\n const onThumbInput = (i: number, event: JSX.TargetedInputEvent<HTMLInputElement>) => {\n const raw = Number(event.currentTarget.value);\n const next = [...values];\n next[i] = raw;\n setValues(next);\n onInput?.(event);\n };\n\n const onThumbChange = (i: number, event: JSX.TargetedEvent<HTMLInputElement>) => {\n if (i === 0) userOnChange?.(event as JSX.TargetedInputEvent<HTMLInputElement>);\n const raw = Number((event.currentTarget as HTMLInputElement).value);\n const next = [...values];\n next[i] = raw;\n onValueCommit?.(enforceOrder(next, minValue, maxValue, stepValue));\n };\n\n const trackAndFills = isVertical ? (\n <>\n <div\n data-slot=\"slider-track\"\n data-orientation=\"vertical\"\n class=\"pointer-events-none absolute left-1/2 top-[0.375rem] bottom-[0.375rem] w-1 -translate-x-1/2 rounded-full bg-muted\"\n aria-hidden=\"true\"\n />\n {values.map((v, i) => {\n if (i === n - 1) return null;\n const lo = v;\n const hi = values[i + 1];\n const pLo = pct(lo, minValue, maxValue);\n const pHi = pct(hi, minValue, maxValue);\n return (\n <div\n key={`fill-${i}`}\n data-slot=\"slider-range\"\n data-orientation=\"vertical\"\n class=\"pointer-events-none absolute left-1/2 w-1 -translate-x-1/2 rounded-full bg-black select-none dark:bg-zinc-200\"\n style={{\n bottom: `calc(${SLIDER_THUMB_HALF} + (100% - ${SLIDER_THUMB_FULL}) * ${pLo} / 100)`,\n height: `calc((100% - ${SLIDER_THUMB_FULL}) * ${Math.max(0, pHi - pLo)} / 100)`,\n }}\n aria-hidden=\"true\"\n />\n );\n })}\n </>\n ) : (\n <>\n <div\n data-slot=\"slider-track\"\n data-orientation=\"horizontal\"\n class=\"pointer-events-none absolute top-1/2 left-[0.375rem] right-[0.375rem] h-1 -translate-y-1/2 rounded-full bg-muted\"\n aria-hidden=\"true\"\n />\n {values.map((v, i) => {\n if (i === n - 1) return null;\n const lo = v;\n const hi = values[i + 1];\n const pLo = pct(lo, minValue, maxValue);\n const pHi = pct(hi, minValue, maxValue);\n return (\n <div\n key={`fill-${i}`}\n data-slot=\"slider-range\"\n data-orientation=\"horizontal\"\n class=\"pointer-events-none absolute top-1/2 h-1 -translate-y-1/2 rounded-full bg-black select-none dark:bg-zinc-200\"\n style={{\n left: `calc(${SLIDER_THUMB_HALF} + (100% - ${SLIDER_THUMB_FULL}) * ${pLo} / 100)`,\n width: `calc((100% - ${SLIDER_THUMB_FULL}) * ${Math.max(0, pHi - pLo)} / 100)`,\n }}\n aria-hidden=\"true\"\n />\n );\n })}\n </>\n );\n\n const rootClass = cn(\n \"group relative touch-none select-none data-[disabled]:opacity-50\",\n isVertical\n ? \"inline-flex min-h-40 w-6 shrink-0 justify-center data-[orientation=vertical]:min-h-40 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col\"\n : \"flex h-6 w-full shrink-0 items-center\",\n className,\n );\n\n const inputLayerClass = \"absolute inset-0 min-h-0 min-w-0\";\n\n const perInputClass = () => (isVertical ? multiThumbInputVertical : multiThumbInputHorizontal);\n\n return (\n <span\n ref={sliderRootRef}\n data-slot=\"slider\"\n id={id}\n dir=\"ltr\"\n data-orientation={isVertical ? \"vertical\" : \"horizontal\"}\n aria-disabled={disabled}\n data-disabled={disabled ? \"\" : undefined}\n data-dragging={dragging ? \"\" : undefined}\n class={rootClass}\n role=\"group\"\n onPointerEnter={(e) => updateClosestThumbFromPointer(e.clientX, e.clientY)}\n onPointerMove={(e) => updateClosestThumbFromPointer(e.clientX, e.clientY)}\n >\n {trackAndFills}\n <span class={inputLayerClass}>\n {values.map((v, i) => (\n <input\n key={i}\n {...(i === 0 ? rest : {})}\n type=\"range\"\n data-slot=\"slider-thumb\"\n // @ts-expect-error Firefox-only; improves vertical range behavior\n orient={isVertical ? \"vertical\" : undefined}\n min={minValue}\n max={maxValue}\n step={stepValue}\n disabled={disabled}\n value={v}\n style={{\n ...(typeof inputStyleProp === \"object\" &&\n inputStyleProp !== null &&\n !Array.isArray(inputStyleProp)\n ? inputStyleProp\n : {}),\n zIndex: topIndex === i ? 3 : 2,\n pointerEvents: disabled ? undefined : topIndex === i ? \"auto\" : \"none\",\n }}\n class={perInputClass()}\n onInput={(e) => onThumbInput(i, e)}\n onChange={(e) => onThumbChange(i, e)}\n onPointerDown={(e) => {\n if (!disabled) setDragging(true);\n setTopIndex(i);\n if (i === 0) userPointerDown?.(e);\n }}\n onFocus={() => setTopIndex(i)}\n aria-label={n > 1 ? `Value ${i + 1} of ${n}` : undefined}\n />\n ))}\n </span>\n </span>\n );\n};\n","import { Slider } from \"./Slider\";\n\nexport type { SliderPrimitiveValue, SliderProps } from \"./Slider\";\nexport { Slider };\n\nexport default Slider;\n"]}
1
+ {"version":3,"sources":["../src/components/slider/Slider.tsx","../src/components/slider/index.ts"],"names":["isVertical","n"],"mappings":"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","file":"chunk-GPRE2VWB.js","sourcesContent":["import { signal } from \"@preact/signals\";\nimport type { JSX } from \"preact\";\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from \"preact/hooks\";\nimport { cn } from \"../../lib/utils\";\n\nexport type SliderPrimitiveValue = number | number[];\n\nexport type SliderProps = Omit<\n JSX.InputHTMLAttributes<HTMLInputElement>,\n \"value\" | \"defaultValue\" | \"type\"\n> & {\n defaultValue?: SliderPrimitiveValue;\n value?: SliderPrimitiveValue;\n /** Called with the current thumb values (always a sorted array, length ≥ 1). Matches shadcn/Radix-style callbacks. */\n onValueChange?: (value: number[]) => void;\n /** Fires when the user finishes a drag or commits via keyboard (native `change` event). Matches Radix `onValueCommit`. */\n onValueCommit?: (value: number[]) => void;\n orientation?: \"horizontal\" | \"vertical\";\n class?: string;\n};\n\nconst toNumber = (value: unknown, fallback: number) => {\n if (typeof value === \"number\" && Number.isFinite(value)) return value;\n if (typeof value === \"string\") {\n const parsed = Number(value);\n if (Number.isFinite(parsed)) return parsed;\n }\n return fallback;\n};\n\nconst clamp = (n: number, min: number, max: number) => Math.min(max, Math.max(min, n));\n\nconst normalizeIncoming = (\n raw: SliderPrimitiveValue | undefined,\n fallbackSingle: number,\n min: number,\n max: number,\n): number[] => {\n if (raw === undefined) return [clamp(fallbackSingle, min, max)];\n let arr = Array.isArray(raw) ? raw : [raw];\n if (arr.length === 0) return [clamp(fallbackSingle, min, max)];\n if (arr.length > 1) {\n arr = [...arr].sort((a, b) => toNumber(a, min) - toNumber(b, min));\n }\n return arr.map((v, i) => {\n const fb = i === 0 ? fallbackSingle : toNumber(arr[i - 1], min);\n return clamp(toNumber(v, fb), min, max);\n });\n};\n\nconst enforceOrder = (vals: number[], min: number, max: number, step: number): number[] => {\n const n = vals.length;\n if (n <= 1) return vals;\n const out = [...vals];\n out[0] = clamp(out[0], min, max);\n for (let i = 1; i < n; i++) {\n const gap = step > 0 ? step : 0;\n out[i] = clamp(out[i], out[i - 1] + gap, max);\n }\n for (let i = n - 2; i >= 0; i--) {\n const gap = step > 0 ? step : 0;\n out[i] = clamp(out[i], min, out[i + 1] - gap);\n }\n return out;\n};\n\n/** Matches `size-3` thumbs: centers fill/track on native thumb positions (inset at min/max). */\nconst SLIDER_THUMB_HALF = \"0.375rem\";\nconst SLIDER_THUMB_FULL = \"0.75rem\";\n\n/**\n * Radix/shadcn-style thumb: border-ring, ring-3, no shadow. `group-data-[dragging]` avoids transition lag while dragging.\n */\nconst overlayThumbStyles = [\n \"[&::-webkit-slider-thumb]:size-3 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full\",\n /* WebKit: vertically center thumb on h-1 track (thumb 12px, track 4px → -4px). */\n \"[&::-webkit-slider-thumb]:-mt-[4px]\",\n \"[&::-webkit-slider-thumb]:border [&::-webkit-slider-thumb]:border-ring [&::-webkit-slider-thumb]:bg-white [&::-webkit-slider-thumb]:dark:bg-card\",\n \"[&::-webkit-slider-thumb]:transition-[color,box-shadow]\",\n \"[&::-webkit-slider-thumb]:active:transition-none\",\n \"group-data-[dragging]:[&::-webkit-slider-thumb]:transition-none\",\n \"[&::-webkit-slider-thumb]:ring-1 [&::-webkit-slider-thumb]:ring-ring/50\",\n \"[&::-webkit-slider-thumb]:hover:ring-3 [&::-webkit-slider-thumb]:focus-visible:ring-3 [&::-webkit-slider-thumb]:active:ring-3\",\n \"group-data-[dragging]:[&::-webkit-slider-thumb]:hover:ring-1 group-data-[dragging]:[&::-webkit-slider-thumb]:focus-visible:ring-1 group-data-[dragging]:[&::-webkit-slider-thumb]:active:ring-1\",\n \"[&::-webkit-slider-thumb]:focus-visible:outline-none\",\n \"[&::-moz-range-thumb]:size-3 [&::-moz-range-thumb]:appearance-none [&::-moz-range-thumb]:rounded-full\",\n \"[&::-moz-range-thumb]:border [&::-moz-range-thumb]:border-ring [&::-moz-range-thumb]:bg-white [&::-moz-range-thumb]:dark:bg-card\",\n \"[&::-moz-range-thumb]:transition-[color,box-shadow]\",\n \"[&::-moz-range-thumb]:active:transition-none\",\n \"group-data-[dragging]:[&::-moz-range-thumb]:transition-none\",\n \"[&::-moz-range-thumb]:ring-1 [&::-moz-range-thumb]:ring-ring/50\",\n \"[&::-moz-range-thumb]:hover:ring-3 [&::-moz-range-thumb]:focus-visible:ring-3 [&::-moz-range-thumb]:active:ring-3\",\n \"group-data-[dragging]:[&::-moz-range-thumb]:hover:ring-1 group-data-[dragging]:[&::-moz-range-thumb]:focus-visible:ring-1 group-data-[dragging]:[&::-moz-range-thumb]:active:ring-1\",\n \"[&::-moz-range-thumb]:focus-visible:outline-none\",\n].join(\" \");\n\nconst overlayInputHorizontal = cn(\n \"absolute inset-0 m-0 h-6 max-h-none w-full min-w-0 cursor-pointer appearance-none border-0 bg-transparent p-0 outline-none\",\n \"focus:outline-none focus-visible:outline-none\",\n \"disabled:pointer-events-none disabled:cursor-not-allowed\",\n \"[&::-webkit-slider-runnable-track]:h-1 [&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:bg-transparent\",\n \"[&::-moz-range-track]:h-1 [&::-moz-range-track]:rounded-full [&::-moz-range-track]:bg-transparent\",\n \"[&::-moz-range-progress]:h-1 [&::-moz-range-progress]:rounded-full [&::-moz-range-progress]:bg-transparent\",\n overlayThumbStyles,\n);\n\n/**\n * Vertical native range: WebKit uses slider-vertical + bt-lr so min sits at the bottom (matches our fill).\n * Thumb centered on 4px track: (12 − 4) / 2 = 4px offset on the cross axis.\n */\nconst overlayInputVertical = cn(\n \"absolute inset-0 m-0 h-full max-h-none w-full min-w-0 cursor-pointer appearance-none border-0 bg-transparent p-0 outline-none\",\n \"[writing-mode:bt-lr] [-webkit-appearance:slider-vertical] appearance-none\",\n \"focus:outline-none focus-visible:outline-none\",\n \"disabled:pointer-events-none disabled:cursor-not-allowed\",\n \"[&::-webkit-slider-runnable-track]:w-1 [&::-webkit-slider-runnable-track]:h-full [&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:bg-transparent\",\n \"[&::-webkit-slider-thumb]:ml-[-4px]\",\n \"[&::-moz-range-track]:w-1 [&::-moz-range-track]:h-full [&::-moz-range-track]:rounded-full [&::-moz-range-track]:bg-transparent\",\n \"[&::-moz-range-progress]:w-1 [&::-moz-range-progress]:bg-transparent\",\n overlayThumbStyles,\n);\n\nconst multiThumbInputHorizontal = overlayInputHorizontal;\n\nconst multiThumbInputVertical = overlayInputVertical;\n\nconst pct = (v: number, min: number, max: number) => {\n const span = max - min || 1;\n return Math.min(100, Math.max(0, ((v - min) / span) * 100));\n};\n\n/** Sync primary range fill without waiting for React (smooth drag). */\nfunction applySingleHorizontalRangeFill(el: HTMLElement, fillPercent: number) {\n el.style.left = SLIDER_THUMB_HALF;\n el.style.right = `calc(${SLIDER_THUMB_HALF} + (100% - ${SLIDER_THUMB_FULL}) * ${(100 - fillPercent) / 100})`;\n}\n\nfunction applySingleVerticalRangeFill(el: HTMLElement, fillPercent: number) {\n el.style.bottom = SLIDER_THUMB_HALF;\n el.style.height = `calc((100% - ${SLIDER_THUMB_FULL}) * ${fillPercent} / 100)`;\n}\n\nexport const Slider = ({\n defaultValue = 50,\n value: controlledValue,\n onInput,\n onValueChange,\n onValueCommit,\n onChange: userOnChange,\n onPointerDown: userPointerDown,\n class: className,\n min: minProp,\n max: maxProp,\n step: stepProp,\n disabled,\n orientation = \"horizontal\",\n id,\n /** Applied to the native range input(s). Kept out of `rest` so `{...rest}` cannot wipe stacking/pointer rules on multi-thumb. */\n style: inputStyleProp,\n ...rest\n}: SliderProps) => {\n const minValue = toNumber(minProp, 0);\n const maxValue = toNumber(maxProp, 100);\n const stepValue = toNumber(stepProp, 1);\n\n const localValues = useMemo(\n () =>\n signal<number[]>(\n enforceOrder(\n normalizeIncoming(defaultValue, 50, minValue, maxValue),\n minValue,\n maxValue,\n stepValue,\n ),\n ),\n [],\n );\n\n const isControlled = controlledValue !== undefined;\n const values = isControlled\n ? enforceOrder(\n normalizeIncoming(controlledValue, 50, minValue, maxValue),\n minValue,\n maxValue,\n stepValue,\n )\n : localValues.value;\n\n const onValueChangeRef = useRef(onValueChange);\n onValueChangeRef.current = onValueChange;\n const localValuesRef = useRef(localValues);\n localValuesRef.current = localValues;\n const isControlledRef = useRef(isControlled);\n isControlledRef.current = isControlled;\n\n const singleRangeHorizontalRef = useRef<HTMLSpanElement>(null);\n const singleRangeVerticalRef = useRef<HTMLSpanElement>(null);\n /** Single-thumb controlled: do not pass `value=` (Preact would reset the native control every commit and block drag/click/keyboard). Sync via ref + layout effect instead. */\n const singleThumbInputRef = useRef<HTMLInputElement | null>(null);\n\n const [dragging, setDragging] = useState(false);\n /**\n * Controlled sliders: parent `value` often updates one frame late vs the native thumb, which feels janky.\n * While dragging, mirror the thumb in local state so `value` + decorative fill stay in sync with the input.\n */\n const [dragDraft, setDragDraft] = useState<number | null>(null);\n\n /** Fire `onValueChange` in the same turn as the native `input` so controlled `value` matches the DOM (single- and multi-thumb). */\n const emitValueChange = useCallback((payload: number[]) => {\n onValueChangeRef.current?.(payload);\n }, []);\n\n useEffect(() => {\n if (!dragging) return;\n const end = () => {\n setDragging(false);\n };\n window.addEventListener(\"pointerup\", end);\n window.addEventListener(\"pointercancel\", end);\n return () => {\n window.removeEventListener(\"pointerup\", end);\n window.removeEventListener(\"pointercancel\", end);\n };\n }, [dragging]);\n\n const singleThumbProp = values.length === 1 ? values[0] : null;\n useLayoutEffect(() => {\n if (!isControlled || dragging || singleThumbProp === null) return;\n const el = singleThumbInputRef.current;\n if (!el || el.disabled) return;\n const next = String(singleThumbProp);\n if (el.value !== next) el.value = next;\n }, [isControlled, dragging, singleThumbProp, minValue, maxValue, stepValue, disabled]);\n\n const setValues = (next: number[]) => {\n const ordered = enforceOrder(next, minValue, maxValue, stepValue);\n if (!isControlled) localValues.value = ordered;\n emitValueChange(ordered);\n };\n\n const [topIndex, setTopIndex] = useState(0);\n /** Multi-thumb: stacked full-width inputs would always hit the same layer; route pointer to the thumb nearest the cursor. */\n const sliderRootRef = useRef<HTMLSpanElement>(null);\n\n const updateClosestThumbFromPointer = useCallback(\n (clientX: number, clientY: number) => {\n if (disabled || dragging) return;\n if (values.length < 2) return;\n const root = sliderRootRef.current;\n if (!root) return;\n const rect = root.getBoundingClientRect();\n if (rect.width <= 0 || rect.height <= 0) return;\n const span = maxValue - minValue || 1;\n let approx: number;\n if (orientation === \"vertical\") {\n const ratio = Math.min(1, Math.max(0, (rect.bottom - clientY) / rect.height));\n approx = minValue + ratio * span;\n } else {\n const ratio = Math.min(1, Math.max(0, (clientX - rect.left) / rect.width));\n approx = minValue + ratio * span;\n }\n let closest = 0;\n let best = Infinity;\n for (let i = 0; i < values.length; i++) {\n const d = Math.abs(values[i] - approx);\n if (d < best) {\n best = d;\n closest = i;\n }\n }\n setTopIndex((prev) => (prev === closest ? prev : closest));\n },\n [disabled, dragging, orientation, minValue, maxValue, values],\n );\n\n if (values.length === 1) {\n const resolvedValue = values[0];\n const displayValue = isControlled && dragDraft !== null ? dragDraft : resolvedValue;\n const safeRange = maxValue - minValue || 1;\n const fillPercent = Math.min(100, Math.max(0, ((displayValue - minValue) / safeRange) * 100));\n const isVertical = orientation === \"vertical\";\n\n if (isVertical) {\n return (\n <span\n data-slot=\"slider\"\n dir=\"ltr\"\n data-orientation=\"vertical\"\n aria-disabled={disabled}\n data-disabled={disabled ? \"\" : undefined}\n data-dragging={dragging ? \"\" : undefined}\n class={cn(\n \"group relative inline-flex min-h-40 w-6 shrink-0 touch-none select-none justify-center data-[disabled]:opacity-50 data-[orientation=vertical]:min-h-40 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col\",\n className,\n )}\n >\n <span\n data-slot=\"slider-track\"\n data-orientation=\"vertical\"\n class=\"pointer-events-none absolute left-1/2 top-[0.375rem] bottom-[0.375rem] w-1 -translate-x-1/2 rounded-full bg-muted\"\n aria-hidden=\"true\"\n />\n <span\n ref={singleRangeVerticalRef}\n data-slot=\"slider-range\"\n data-orientation=\"vertical\"\n class=\"pointer-events-none absolute left-1/2 w-1 -translate-x-1/2 rounded-full bg-black select-none dark:bg-zinc-200\"\n style={{\n bottom: SLIDER_THUMB_HALF,\n height: `calc((100% - ${SLIDER_THUMB_FULL}) * ${fillPercent} / 100)`,\n }}\n aria-hidden=\"true\"\n />\n <input\n {...rest}\n ref={singleThumbInputRef}\n type=\"range\"\n data-slot=\"slider-thumb\"\n // @ts-expect-error Firefox-only; improves vertical range behavior\n orient=\"vertical\"\n id={id}\n min={minValue}\n max={maxValue}\n step={stepValue}\n disabled={disabled}\n {...(!isControlled ? { value: displayValue } : {})}\n class={overlayInputVertical}\n style={inputStyleProp}\n onPointerDown={(e) => {\n if (!disabled) {\n setDragging(true);\n if (isControlled) setDragDraft(resolvedValue);\n }\n userPointerDown?.(e);\n }}\n onInput={(event) => {\n const n = Number((event.currentTarget as HTMLInputElement).value);\n const fp = pct(n, minValue, maxValue);\n const el = singleRangeVerticalRef.current;\n if (el) applySingleVerticalRangeFill(el, fp);\n if (isControlled) setDragDraft(n);\n else localValues.value = [n];\n emitValueChange([n]);\n onInput?.(event);\n }}\n onChange={(e) => {\n userOnChange?.(e);\n const n = Number((e.currentTarget as HTMLInputElement).value);\n onValueCommit?.([n]);\n if (isControlled) setDragDraft(null);\n }}\n />\n </span>\n );\n }\n\n return (\n <span\n data-slot=\"slider\"\n dir=\"ltr\"\n data-orientation=\"horizontal\"\n aria-disabled={disabled}\n data-disabled={disabled ? \"\" : undefined}\n data-dragging={dragging ? \"\" : undefined}\n class={cn(\n \"group relative flex h-6 w-full shrink-0 touch-none select-none items-center data-[disabled]:opacity-50\",\n className,\n )}\n >\n <span\n data-slot=\"slider-track\"\n data-orientation=\"horizontal\"\n class=\"pointer-events-none absolute top-1/2 left-[0.375rem] right-[0.375rem] h-1 -translate-y-1/2 rounded-full bg-muted\"\n aria-hidden=\"true\"\n />\n <span\n ref={singleRangeHorizontalRef}\n data-slot=\"slider-range\"\n data-orientation=\"horizontal\"\n class=\"pointer-events-none absolute top-1/2 h-1 -translate-y-1/2 rounded-full bg-black select-none dark:bg-zinc-200\"\n style={{\n left: SLIDER_THUMB_HALF,\n right: `calc(${SLIDER_THUMB_HALF} + (100% - ${SLIDER_THUMB_FULL}) * ${(100 - fillPercent) / 100})`,\n }}\n aria-hidden=\"true\"\n />\n <input\n {...rest}\n ref={singleThumbInputRef}\n type=\"range\"\n data-slot=\"slider-thumb\"\n id={id}\n min={minValue}\n max={maxValue}\n step={stepValue}\n disabled={disabled}\n {...(!isControlled ? { value: displayValue } : {})}\n class={overlayInputHorizontal}\n style={inputStyleProp}\n onPointerDown={(e) => {\n if (!disabled) {\n setDragging(true);\n if (isControlled) setDragDraft(resolvedValue);\n }\n userPointerDown?.(e);\n }}\n onInput={(event) => {\n const n = Number((event.currentTarget as HTMLInputElement).value);\n const fp = pct(n, minValue, maxValue);\n const el = singleRangeHorizontalRef.current;\n if (el) applySingleHorizontalRangeFill(el, fp);\n if (isControlled) setDragDraft(n);\n else localValues.value = [n];\n emitValueChange([n]);\n onInput?.(event);\n }}\n onChange={(e) => {\n userOnChange?.(e);\n const n = Number((e.currentTarget as HTMLInputElement).value);\n onValueCommit?.([n]);\n if (isControlled) setDragDraft(null);\n }}\n />\n </span>\n );\n }\n\n const isVertical = orientation === \"vertical\";\n const n = values.length;\n\n /**\n * Every thumb uses the same min/max as the slider so native thumb position matches global\n * `(value - min) / (max - min)` along the track. Per-thumb min/max would scale thumbs to the\n * full track width incorrectly. Ordering is enforced via `enforceOrder` in `setValues`.\n */\n const onThumbInput = (i: number, event: JSX.TargetedInputEvent<HTMLInputElement>) => {\n const raw = Number(event.currentTarget.value);\n const next = [...values];\n next[i] = raw;\n setValues(next);\n onInput?.(event);\n };\n\n const onThumbChange = (i: number, event: JSX.TargetedEvent<HTMLInputElement>) => {\n if (i === 0) userOnChange?.(event as JSX.TargetedInputEvent<HTMLInputElement>);\n const raw = Number((event.currentTarget as HTMLInputElement).value);\n const next = [...values];\n next[i] = raw;\n onValueCommit?.(enforceOrder(next, minValue, maxValue, stepValue));\n };\n\n const trackAndFills = isVertical ? (\n <>\n <div\n data-slot=\"slider-track\"\n data-orientation=\"vertical\"\n class=\"pointer-events-none absolute left-1/2 top-[0.375rem] bottom-[0.375rem] w-1 -translate-x-1/2 rounded-full bg-muted\"\n aria-hidden=\"true\"\n />\n {values.map((v, i) => {\n if (i === n - 1) return null;\n const lo = v;\n const hi = values[i + 1];\n const pLo = pct(lo, minValue, maxValue);\n const pHi = pct(hi, minValue, maxValue);\n return (\n <div\n key={`fill-${i}`}\n data-slot=\"slider-range\"\n data-orientation=\"vertical\"\n class=\"pointer-events-none absolute left-1/2 w-1 -translate-x-1/2 rounded-full bg-black select-none dark:bg-zinc-200\"\n style={{\n bottom: `calc(${SLIDER_THUMB_HALF} + (100% - ${SLIDER_THUMB_FULL}) * ${pLo} / 100)`,\n height: `calc((100% - ${SLIDER_THUMB_FULL}) * ${Math.max(0, pHi - pLo)} / 100)`,\n }}\n aria-hidden=\"true\"\n />\n );\n })}\n </>\n ) : (\n <>\n <div\n data-slot=\"slider-track\"\n data-orientation=\"horizontal\"\n class=\"pointer-events-none absolute top-1/2 left-[0.375rem] right-[0.375rem] h-1 -translate-y-1/2 rounded-full bg-muted\"\n aria-hidden=\"true\"\n />\n {values.map((v, i) => {\n if (i === n - 1) return null;\n const lo = v;\n const hi = values[i + 1];\n const pLo = pct(lo, minValue, maxValue);\n const pHi = pct(hi, minValue, maxValue);\n return (\n <div\n key={`fill-${i}`}\n data-slot=\"slider-range\"\n data-orientation=\"horizontal\"\n class=\"pointer-events-none absolute top-1/2 h-1 -translate-y-1/2 rounded-full bg-black select-none dark:bg-zinc-200\"\n style={{\n left: `calc(${SLIDER_THUMB_HALF} + (100% - ${SLIDER_THUMB_FULL}) * ${pLo} / 100)`,\n width: `calc((100% - ${SLIDER_THUMB_FULL}) * ${Math.max(0, pHi - pLo)} / 100)`,\n }}\n aria-hidden=\"true\"\n />\n );\n })}\n </>\n );\n\n const rootClass = cn(\n \"group relative touch-none select-none data-[disabled]:opacity-50\",\n isVertical\n ? \"inline-flex min-h-40 w-6 shrink-0 justify-center data-[orientation=vertical]:min-h-40 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col\"\n : \"flex h-6 w-full shrink-0 items-center\",\n className,\n );\n\n const inputLayerClass = \"absolute inset-0 min-h-0 min-w-0\";\n\n const perInputClass = () => (isVertical ? multiThumbInputVertical : multiThumbInputHorizontal);\n\n return (\n <span\n ref={sliderRootRef}\n data-slot=\"slider\"\n id={id}\n dir=\"ltr\"\n data-orientation={isVertical ? \"vertical\" : \"horizontal\"}\n aria-disabled={disabled}\n data-disabled={disabled ? \"\" : undefined}\n data-dragging={dragging ? \"\" : undefined}\n class={rootClass}\n role=\"group\"\n onPointerEnter={(e) => updateClosestThumbFromPointer(e.clientX, e.clientY)}\n onPointerMove={(e) => updateClosestThumbFromPointer(e.clientX, e.clientY)}\n >\n {trackAndFills}\n <span class={inputLayerClass}>\n {values.map((v, i) => (\n <input\n key={i}\n {...(i === 0 ? rest : {})}\n type=\"range\"\n data-slot=\"slider-thumb\"\n // @ts-expect-error Firefox-only; improves vertical range behavior\n orient={isVertical ? \"vertical\" : undefined}\n min={minValue}\n max={maxValue}\n step={stepValue}\n disabled={disabled}\n value={v}\n style={{\n ...(typeof inputStyleProp === \"object\" &&\n inputStyleProp !== null &&\n !Array.isArray(inputStyleProp)\n ? inputStyleProp\n : {}),\n zIndex: topIndex === i ? 3 : 2,\n pointerEvents: disabled ? undefined : topIndex === i ? \"auto\" : \"none\",\n }}\n class={perInputClass()}\n onInput={(e) => onThumbInput(i, e)}\n onChange={(e) => onThumbChange(i, e)}\n onPointerDown={(e) => {\n if (!disabled) setDragging(true);\n setTopIndex(i);\n if (i === 0) userPointerDown?.(e);\n }}\n onFocus={() => setTopIndex(i)}\n aria-label={n > 1 ? `Value ${i + 1} of ${n}` : undefined}\n />\n ))}\n </span>\n </span>\n );\n};\n","import { Slider } from \"./Slider\";\n\nexport type { SliderPrimitiveValue, SliderProps } from \"./Slider\";\nexport { Slider };\n\nexport default Slider;\n"]}
@@ -1,7 +1,7 @@
1
- import { Textarea } from './chunk-XGFJJ2YB.js';
2
- import { Input } from './chunk-6RASPU5N.js';
3
- import { button } from './chunk-5FBD2NTR.js';
4
- import { cn } from './chunk-MS2ZNYCJ.js';
1
+ import { Textarea } from './chunk-PVQUVEZV.js';
2
+ import { Input } from './chunk-7LWAWZHM.js';
3
+ import { button } from './chunk-DDRX6NNW.js';
4
+ import { cn } from './chunk-XIANSPQO.js';
5
5
  import { tv } from 'tailwind-variants';
6
6
  import { jsx } from 'preact/jsx-runtime';
7
7
 
@@ -20,16 +20,7 @@ var inputGroup = tv({
20
20
  "has-[>[data-align=inline-start]]:[&>[data-slot=input-group-control]]:pl-1.5"
21
21
  ]
22
22
  });
23
- var InputGroup = ({ class: className, children, ...rest }) => /* @__PURE__ */ jsx(
24
- "div",
25
- {
26
- role: "group",
27
- class: inputGroup({ class: className }),
28
- "data-slot": "input-group",
29
- ...rest,
30
- children
31
- }
32
- );
23
+ var InputGroup = ({ class: className, children, ...rest }) => /* @__PURE__ */ jsx("div", { role: "group", class: cn(inputGroup(), className), "data-slot": "input-group", ...rest, children });
33
24
  var inputGroupAddon = tv({
34
25
  base: [
35
26
  "text-muted-foreground flex cursor-text items-center justify-center gap-2 text-sm font-medium select-none",
@@ -58,7 +49,7 @@ var InputGroupAddon = ({
58
49
  {
59
50
  role: "group",
60
51
  "data-align": align,
61
- class: inputGroupAddon({ align, class: className }),
52
+ class: cn(inputGroupAddon({ align }), className),
62
53
  "data-slot": "input-group-addon",
63
54
  onClick: (event) => {
64
55
  const target = event.target;
@@ -99,7 +90,7 @@ var InputGroupButton = ({
99
90
  "button",
100
91
  {
101
92
  type,
102
- class: `${button({ variant, size, class: className })} ${inputGroupButton({ size })}`,
93
+ class: cn(button({ variant, size }), inputGroupButton({ size }), className),
103
94
  "data-slot": "input-group-button",
104
95
  ...rest,
105
96
  children
@@ -111,14 +102,7 @@ var inputGroupInput = tv({
111
102
  "disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent"
112
103
  ]
113
104
  });
114
- var InputGroupInput = ({ class: className, ...rest }) => /* @__PURE__ */ jsx(
115
- Input,
116
- {
117
- class: inputGroupInput({ class: className }),
118
- "data-slot": "input-group-control",
119
- ...rest
120
- }
121
- );
105
+ var InputGroupInput = ({ class: className, ...rest }) => /* @__PURE__ */ jsx(Input, { class: cn(inputGroupInput(), className), "data-slot": "input-group-control", ...rest });
122
106
  var InputGroupText = ({ class: className, children, ...rest }) => /* @__PURE__ */ jsx(
123
107
  "span",
124
108
  {
@@ -134,14 +118,7 @@ var inputGroupTextarea = tv({
134
118
  "disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent"
135
119
  ]
136
120
  });
137
- var InputGroupTextarea = ({ class: className, ...rest }) => /* @__PURE__ */ jsx(
138
- Textarea,
139
- {
140
- class: inputGroupTextarea({ class: className }),
141
- "data-slot": "input-group-control",
142
- ...rest
143
- }
144
- );
121
+ var InputGroupTextarea = ({ class: className, ...rest }) => /* @__PURE__ */ jsx(Textarea, { class: cn(inputGroupTextarea(), className), "data-slot": "input-group-control", ...rest });
145
122
 
146
123
  // src/components/input-group/index.ts
147
124
  var InputGroupVariants = {
@@ -161,5 +138,5 @@ var input_group_default = {
161
138
  };
162
139
 
163
140
  export { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputGroupVariants, input_group_default };
164
- //# sourceMappingURL=chunk-QZX3RFIC.js.map
165
- //# sourceMappingURL=chunk-QZX3RFIC.js.map
141
+ //# sourceMappingURL=chunk-HJF5AV4L.js.map
142
+ //# sourceMappingURL=chunk-HJF5AV4L.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/input-group/InputGroup.tsx","../src/components/input-group/InputGroupAddon.tsx","../src/components/input-group/InputGroupButton.tsx","../src/components/input-group/InputGroupInput.tsx","../src/components/input-group/InputGroupText.tsx","../src/components/input-group/InputGroupTextarea.tsx","../src/components/input-group/index.ts"],"names":["tv","jsx"],"mappings":";;;;;;;AAIO,IAAM,aAAa,EAAA,CAAG;AAAA,EAC3B,IAAA,EAAM;AAAA,IACJ,gJAAA;AAAA,IACA,mMAAA;AAAA,IACA,kJAAA;AAAA,IACA,kDAAA;AAAA,IACA,wBAAA;AAAA,IACA,6EAAA;AAAA,IACA,iFAAA;AAAA,IACA,wEAAA;AAAA,IACA,0EAAA;AAAA,IACA,2EAAA;AAAA,IACA;AAAA;AAEJ,CAAC,CAAA;AAMM,IAAM,UAAA,GAAa,CAAC,EAAE,KAAA,EAAO,WAAW,QAAA,EAAU,GAAG,IAAA,EAAK,qBAC/D,GAAA,CAAC,KAAA,EAAA,EAAI,MAAK,OAAA,EAAQ,KAAA,EAAO,EAAA,CAAG,UAAA,EAAW,EAAG,SAAS,GAAG,WAAA,EAAU,aAAA,EAAe,GAAG,IAAA,EAC/E,QAAA,EACH;ACvBK,IAAM,kBAAkBA,EAAAA,CAAG;AAAA,EAChC,IAAA,EAAM;AAAA,IACJ,0GAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,KAAA,EAAO;AAAA,MACL,cAAA,EAAgB,+CAAA;AAAA,MAChB,YAAA,EAAc,8CAAA;AAAA,MACd,aAAA,EACE,qGAAA;AAAA,MACF,WAAA,EACE;AAAA;AACJ,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,KAAA,EAAO;AAAA;AAEX,CAAC,CAAA;AAOM,IAAM,kBAAkB,CAAC;AAAA,EAC9B,KAAA;AAAA,EACA,KAAA,EAAO,SAAA;AAAA,EACP,QAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEC,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,IAAA,EAAK,OAAA;AAAA,IACL,YAAA,EAAY,KAAA;AAAA,IACZ,OAAO,EAAA,CAAG,eAAA,CAAgB,EAAE,KAAA,EAAO,GAAG,SAAS,CAAA;AAAA,IAC/C,WAAA,EAAU,mBAAA;AAAA,IACV,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,MAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,MAAA,IAAI,MAAA,EAAQ,OAAA,CAAQ,QAAQ,CAAA,EAAG;AAC7B,QAAA,OAAA,GAAU,KAAK,CAAA;AACf,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,IAAA,GAAO,MAAM,aAAA,CAAc,aAAA;AACjC,MAAA,MAAM,OAAA,GAAU,IAAA,EAAM,aAAA,CAAc,iBAAiB,CAAA;AAIrD,MAAA,OAAA,EAAS,KAAA,EAAM;AACf,MAAA,OAAA,GAAU,KAAK,CAAA;AAAA,IACjB,CAAA;AAAA,IACC,GAAG,IAAA;AAAA,IAEH;AAAA;AACH;ACtDK,IAAM,mBAAmBD,EAAAA,CAAG;AAAA,EACjC,IAAA,EAAM,mBAAA;AAAA,EACN,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,EAAA,EAAI,UAAA;AAAA,MACJ,SAAA,EAAW,wCAAA;AAAA,MACX,SAAA,EAAW;AAAA;AACb,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM;AAAA;AAEV,CAAC,CAAA;AAQM,IAAM,mBAAmB,CAAC;AAAA,EAC/B,IAAA,GAAO,QAAA;AAAA,EACP,OAAA,GAAU,OAAA;AAAA,EACV,IAAA;AAAA,EACA,KAAA,EAAO,SAAA;AAAA,EACP,QAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEC,GAAAA;AAAA,EAAC,QAAA;AAAA,EAAA;AAAA,IACC,IAAA;AAAA,IACA,KAAA,EAAO,EAAA,CAAG,MAAA,CAAO,EAAE,OAAA,EAAS,IAAA,EAAM,CAAA,EAAG,gBAAA,CAAiB,EAAE,IAAA,EAAM,GAAG,SAAS,CAAA;AAAA,IAC1E,WAAA,EAAU,oBAAA;AAAA,IACT,GAAG,IAAA;AAAA,IAEH;AAAA;AACH;ACpCK,IAAM,kBAAkBD,EAAAA,CAAG;AAAA,EAChC,IAAA,EAAM;AAAA,IACJ,0FAAA;AAAA,IACA;AAAA;AAEJ,CAAC,CAAA;AAIM,IAAM,eAAA,GAAkB,CAAC,EAAE,KAAA,EAAO,WAAW,GAAG,IAAA,uBACrDC,GAAAA,CAAC,SAAM,KAAA,EAAO,EAAA,CAAG,iBAAgB,EAAG,SAAS,GAAG,WAAA,EAAU,qBAAA,EAAuB,GAAG,IAAA,EAAM;ACPrF,IAAM,cAAA,GAAiB,CAAC,EAAE,KAAA,EAAO,WAAW,QAAA,EAAU,GAAG,IAAA,EAAK,qBACnEA,GAAAA;AAAA,EAAC,MAAA;AAAA,EAAA;AAAA,IACC,WAAA,EAAU,kBAAA;AAAA,IACV,KAAA,EAAO,EAAA,CAAG,+BAAA,EAAiC,SAAS,CAAA;AAAA,IACnD,GAAG,IAAA;AAAA,IAEH;AAAA;AACH;ACVK,IAAM,qBAAqBD,EAAAA,CAAG;AAAA,EACnC,IAAA,EAAM;AAAA,IACJ,sGAAA;AAAA,IACA;AAAA;AAEJ,CAAC,CAAA;AAIM,IAAM,kBAAA,GAAqB,CAAC,EAAE,KAAA,EAAO,WAAW,GAAG,IAAA,uBACxDC,GAAAA,CAAC,YAAS,KAAA,EAAO,EAAA,CAAG,oBAAmB,EAAG,SAAS,GAAG,WAAA,EAAU,qBAAA,EAAuB,GAAG,IAAA,EAAM;;;ACPlG,IAAM,kBAAA,GAAqB;AAAA,EACzB,UAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF;AAYA,IAAO,mBAAA,GAAQ;AAAA,EACb,IAAA,EAAM,UAAA;AAAA,EACN,KAAA,EAAO,eAAA;AAAA,EACP,MAAA,EAAQ,gBAAA;AAAA,EACR,KAAA,EAAO,eAAA;AAAA,EACP,IAAA,EAAM,cAAA;AAAA,EACN,QAAA,EAAU;AACZ","file":"chunk-HJF5AV4L.js","sourcesContent":["import type { ComponentChildren, JSX } from \"preact\";\nimport { tv } from \"tailwind-variants\";\nimport { cn } from \"../../lib/utils\";\n\nexport const inputGroup = tv({\n base: [\n \"border-input dark:bg-input/30 group/input-group relative flex h-8 w-full min-w-0 items-center rounded-lg border transition-colors outline-none\",\n \"has-[[data-slot=input-group-control]:focus-visible]:border-outline has-[[data-slot=input-group-control]:focus-visible]:ring-outline/50 has-[[data-slot=input-group-control]:focus-visible]:ring-3\",\n \"has-[[data-slot][aria-invalid=true]]:border-error has-[[data-slot][aria-invalid=true]]:ring-error/40 has-[[data-slot][aria-invalid=true]]:ring-3\",\n \"has-disabled:bg-input/50 has-disabled:opacity-50\",\n \"has-[>textarea]:h-auto\",\n \"has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col\",\n \"has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col\",\n \"has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:pt-3\",\n \"has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:pb-3\",\n \"has-[>[data-align=inline-end]]:[&>[data-slot=input-group-control]]:pr-1.5\",\n \"has-[>[data-align=inline-start]]:[&>[data-slot=input-group-control]]:pl-1.5\",\n ],\n});\n\nexport type InputGroupProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\nexport const InputGroup = ({ class: className, children, ...rest }: InputGroupProps) => (\n <div role=\"group\" class={cn(inputGroup(), className)} data-slot=\"input-group\" {...rest}>\n {children}\n </div>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { tv, type VariantProps } from \"tailwind-variants\";\nimport { cn } from \"../../lib/utils\";\n\nexport const inputGroupAddon = tv({\n base: [\n \"text-muted-foreground flex cursor-text items-center justify-center gap-2 text-sm font-medium select-none\",\n \"group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-xs [&>svg:not([class*='size-'])]:size-4\",\n ],\n variants: {\n align: {\n \"inline-start\": \"order-first pl-2.5 has-[>button]:ml-[-0.3rem]\",\n \"inline-end\": \"order-last pr-2.5 has-[>button]:mr-[-0.3rem]\",\n \"block-start\":\n \"order-first w-full justify-start px-3 pt-2 group-has-[>input]/input-group:pt-2.5 [.border-b]:pb-2.5\",\n \"block-end\":\n \"order-last w-full justify-start px-3 pb-2 group-has-[>input]/input-group:pb-2.5 [.border-t]:pt-2.5\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n});\n\nexport type InputGroupAddonProps = JSX.HTMLAttributes<HTMLDivElement> &\n VariantProps<typeof inputGroupAddon> & {\n children?: ComponentChildren;\n };\n\nexport const InputGroupAddon = ({\n align,\n class: className,\n children,\n onClick,\n ...rest\n}: InputGroupAddonProps) => (\n <div\n role=\"group\"\n data-align={align}\n class={cn(inputGroupAddon({ align }), className)}\n data-slot=\"input-group-addon\"\n onClick={(event) => {\n const target = event.target as HTMLElement | null;\n if (target?.closest(\"button\")) {\n onClick?.(event);\n return;\n }\n\n const root = event.currentTarget.parentElement;\n const control = root?.querySelector(\"input, textarea\") as\n | HTMLInputElement\n | HTMLTextAreaElement\n | null;\n control?.focus();\n onClick?.(event);\n }}\n {...rest}\n >\n {children}\n </div>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { tv, type VariantProps } from \"tailwind-variants\";\nimport { cn } from \"../../lib/utils\";\nimport { button } from \"../button/Button\";\n\nexport const inputGroupButton = tv({\n base: \"gap-2 shadow-none\",\n variants: {\n size: {\n sm: \"h-8 px-2\",\n \"icon-xs\": \"size-6 rounded-full p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 rounded-full p-0 has-[>svg]:p-0\",\n },\n },\n defaultVariants: {\n size: \"sm\",\n },\n});\n\nexport type InputGroupButtonProps = JSX.ButtonHTMLAttributes<HTMLButtonElement> &\n VariantProps<typeof button> &\n VariantProps<typeof inputGroupButton> & {\n children?: ComponentChildren;\n };\n\nexport const InputGroupButton = ({\n type = \"button\",\n variant = \"ghost\",\n size,\n class: className,\n children,\n ...rest\n}: InputGroupButtonProps) => (\n <button\n type={type}\n class={cn(button({ variant, size }), inputGroupButton({ size }), className)}\n data-slot=\"input-group-button\"\n {...rest}\n >\n {children}\n </button>\n);\n","import { tv } from \"tailwind-variants\";\nimport { cn } from \"../../lib/utils\";\nimport { Input, type InputProps } from \"../input/Input\";\n\nexport const inputGroupInput = tv({\n base: [\n \"h-full flex-1 rounded-none border-0 shadow-none ring-0 outline-none focus-visible:ring-0\",\n \"disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\",\n ],\n});\n\nexport type InputGroupInputProps = InputProps;\n\nexport const InputGroupInput = ({ class: className, ...rest }: InputGroupInputProps) => (\n <Input class={cn(inputGroupInput(), className)} data-slot=\"input-group-control\" {...rest} />\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type InputGroupTextProps = JSX.HTMLAttributes<HTMLSpanElement> & {\n children?: ComponentChildren;\n};\n\nexport const InputGroupText = ({ class: className, children, ...rest }: InputGroupTextProps) => (\n <span\n data-slot=\"input-group-text\"\n class={cn(\"text-muted-foreground text-sm\", className)}\n {...rest}\n >\n {children}\n </span>\n);\n","import { tv } from \"tailwind-variants\";\nimport { cn } from \"../../lib/utils\";\nimport { Textarea, type TextareaProps } from \"../textarea/Textarea\";\n\nexport const inputGroupTextarea = tv({\n base: [\n \"h-full flex-1 resize-none rounded-none border-0 shadow-none ring-0 outline-none focus-visible:ring-0\",\n \"disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent\",\n ],\n});\n\nexport type InputGroupTextareaProps = TextareaProps;\n\nexport const InputGroupTextarea = ({ class: className, ...rest }: InputGroupTextareaProps) => (\n <Textarea class={cn(inputGroupTextarea(), className)} data-slot=\"input-group-control\" {...rest} />\n);\n","import { InputGroup, inputGroup } from \"./InputGroup\";\nimport { InputGroupAddon, inputGroupAddon } from \"./InputGroupAddon\";\nimport { InputGroupButton, inputGroupButton } from \"./InputGroupButton\";\nimport { InputGroupInput, inputGroupInput } from \"./InputGroupInput\";\nimport { InputGroupText } from \"./InputGroupText\";\nimport { InputGroupTextarea, inputGroupTextarea } from \"./InputGroupTextarea\";\n\nconst InputGroupVariants = {\n inputGroup,\n inputGroupAddon,\n inputGroupButton,\n inputGroupInput,\n inputGroupTextarea,\n};\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n InputGroupText,\n InputGroupTextarea,\n InputGroupVariants,\n};\n\nexport default {\n Root: InputGroup,\n Addon: InputGroupAddon,\n Button: InputGroupButton,\n Input: InputGroupInput,\n Text: InputGroupText,\n Textarea: InputGroupTextarea,\n};\n"]}
@@ -1,4 +1,4 @@
1
- import { cn } from './chunk-MS2ZNYCJ.js';
1
+ import { cn } from './chunk-XIANSPQO.js';
2
2
  import { signal } from '@preact/signals';
3
3
  import { useMemo, useRef, useContext } from 'preact/hooks';
4
4
  import { createContext } from 'preact';
@@ -172,5 +172,5 @@ var InputOTPSlot = ({ index, class: className, ...rest }) => {
172
172
  };
173
173
 
174
174
  export { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS, filterOtpValue };
175
- //# sourceMappingURL=chunk-QFDTG2ZJ.js.map
176
- //# sourceMappingURL=chunk-QFDTG2ZJ.js.map
175
+ //# sourceMappingURL=chunk-HWPROYKB.js.map
176
+ //# sourceMappingURL=chunk-HWPROYKB.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/input-otp/input-otp-context.tsx","../src/components/input-otp/patterns.ts","../src/components/input-otp/InputOTP.tsx","../src/components/input-otp/InputOTPGroup.tsx","../src/components/input-otp/InputOTPSeparator.tsx","../src/components/input-otp/InputOTPSlot.tsx"],"names":["jsx"],"mappings":"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","file":"chunk-QFDTG2ZJ.js","sourcesContent":["import { createContext } from \"preact\";\nimport { useContext } from \"preact/hooks\";\nexport type InputOTPContextValue = {\n value: string;\n maxLength: number;\n disabled: boolean;\n focused: boolean;\n activeIndex: number;\n inputRef: { current: HTMLInputElement | null };\n};\n\nexport const InputOTPContext = createContext<InputOTPContextValue | null>(null);\n\nexport const useInputOTP = () => {\n const ctx = useContext(InputOTPContext);\n if (!ctx) throw new Error(\"InputOTPSlot and InputOTPGroup must be used within InputOTP\");\n return ctx;\n};\n","/** Digits only (0–9), for PIN / SMS codes. */\nexport const REGEXP_ONLY_DIGITS = /^[0-9]*$/;\n\n/** Letters and digits (ASCII), for alphanumeric OTPs. */\nexport const REGEXP_ONLY_DIGITS_AND_CHARS = /^[a-zA-Z0-9]*$/;\n\nexport const filterOtpValue = (raw: string, pattern?: RegExp): string => {\n if (!pattern) return raw;\n if (pattern === REGEXP_ONLY_DIGITS) return raw.replace(/\\D/g, \"\");\n if (pattern === REGEXP_ONLY_DIGITS_AND_CHARS) return raw.replace(/[^a-zA-Z0-9]/g, \"\");\n let out = \"\";\n for (const ch of raw) {\n const next = out + ch;\n if (pattern.test(next)) out = next;\n }\n return out;\n};\n","import { signal } from \"@preact/signals\";\nimport type { ComponentChildren, JSX } from \"preact\";\nimport { useMemo, useRef } from \"preact/hooks\";\nimport { cn } from \"../../lib/utils\";\nimport { InputOTPContext } from \"./input-otp-context\";\nimport { filterOtpValue, REGEXP_ONLY_DIGITS } from \"./patterns\";\n\nexport type InputOTPProps = Omit<JSX.HTMLAttributes<HTMLDivElement>, \"onInput\" | \"onChange\"> & {\n maxLength?: number;\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n onValueChange?: (value: string) => void;\n pattern?: RegExp;\n disabled?: boolean;\n id?: string;\n name?: string;\n autoComplete?: string;\n children?: ComponentChildren;\n};\n\nconst activeSlotIndex = (focused: boolean, caret: number, len: number, max: number): number => {\n if (!focused) return -1;\n if (len >= max) return max - 1;\n return Math.min(Math.max(caret, 0), len, max - 1);\n};\n\nexport const InputOTP = ({\n maxLength = 6,\n value: controlledValue,\n defaultValue = \"\",\n onChange,\n onValueChange,\n pattern,\n disabled = false,\n id,\n name,\n autoComplete = \"one-time-code\",\n class: className,\n children,\n dir,\n \"aria-label\": ariaLabel,\n ...rest\n}: InputOTPProps) => {\n const isControlled = controlledValue !== undefined;\n const internal = useMemo(() => signal(defaultValue), []);\n const focused = useMemo(() => signal(false), []);\n const caretStart = useMemo(() => signal(0), []);\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const displayValue = isControlled ? (controlledValue ?? \"\") : internal.value;\n\n const bumpCaret = () => {\n requestAnimationFrame(() => {\n const el = inputRef.current;\n const len = displayValue.length;\n caretStart.value =\n el != null && typeof el.selectionStart === \"number\" ? el.selectionStart : len;\n });\n };\n\n const emit = (next: string) => {\n if (!isControlled) internal.value = next;\n onChange?.(next);\n onValueChange?.(next);\n };\n\n const handleInput = (event: JSX.TargetedEvent<HTMLInputElement>) => {\n let next = filterOtpValue(event.currentTarget.value, pattern);\n if (next.length > maxLength) next = next.slice(0, maxLength);\n emit(next);\n bumpCaret();\n };\n\n const activeIndex = activeSlotIndex(\n focused.value,\n caretStart.value,\n displayValue.length,\n maxLength,\n );\n\n return (\n <InputOTPContext.Provider\n value={{\n value: displayValue,\n maxLength,\n disabled,\n focused: focused.value,\n activeIndex,\n inputRef,\n }}\n >\n <div data-slot=\"input-otp\" dir={dir} class={cn(\"relative inline-flex\", className)} {...rest}>\n <div class=\"relative inline-flex items-center\">\n <div class=\"pointer-events-none flex items-center gap-1\">{children}</div>\n <input\n ref={inputRef}\n id={id}\n name={name}\n type=\"text\"\n autoComplete={autoComplete}\n inputMode={pattern === REGEXP_ONLY_DIGITS ? \"numeric\" : \"text\"}\n disabled={disabled}\n value={displayValue}\n maxLength={maxLength}\n aria-label={ariaLabel ?? \"One-time password\"}\n class={cn(\n \"absolute inset-0 z-20 h-full w-full cursor-default border-0 bg-transparent p-0 opacity-0 outline-none\",\n \"focus-visible:outline-none\",\n )}\n style={{ caretColor: \"transparent\" }}\n onInput={handleInput}\n onKeyDown={() => bumpCaret()}\n onKeyUp={() => bumpCaret()}\n onSelect={() => bumpCaret()}\n onFocus={() => {\n focused.value = true;\n bumpCaret();\n }}\n onBlur={() => {\n focused.value = false;\n }}\n onClick={() => bumpCaret()}\n />\n </div>\n </div>\n </InputOTPContext.Provider>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type InputOTPGroupProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\nexport const InputOTPGroup = ({ class: className, children, ...rest }: InputOTPGroupProps) => (\n <div\n role=\"group\"\n data-slot=\"input-otp-group\"\n class={cn(\"inline-flex items-center gap-1\", className)}\n {...rest}\n >\n {children}\n </div>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type InputOTPSeparatorProps = JSX.HTMLAttributes<HTMLSpanElement> & {\n children?: ComponentChildren;\n};\n\nexport const InputOTPSeparator = ({\n class: className,\n children,\n ...rest\n}: InputOTPSeparatorProps) => (\n <span\n role=\"presentation\"\n data-slot=\"input-otp-separator\"\n class={cn(\"text-muted-foreground select-none\", className)}\n {...rest}\n >\n {children ?? \"-\"}\n </span>\n);\n","import type { JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { useInputOTP } from \"./input-otp-context\";\n\nexport type InputOTPSlotProps = JSX.HTMLAttributes<HTMLSpanElement> & {\n index: number;\n};\n\nexport const InputOTPSlot = ({ index, class: className, ...rest }: InputOTPSlotProps) => {\n const ctx = useInputOTP();\n const char = ctx.value[index] ?? \"\";\n const active = !ctx.disabled && ctx.focused && index === ctx.activeIndex;\n\n return (\n <span\n data-slot=\"input-otp-slot\"\n data-active={active ? \"true\" : \"false\"}\n class={cn(\n \"relative flex size-10 items-center justify-center rounded-md border border-input bg-background font-mono text-sm tabular-nums shadow-xs transition-[box-shadow,border-color]\",\n \"data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-[3px] data-[active=true]:ring-ring/50\",\n ctx.disabled && \"opacity-50\",\n className,\n )}\n {...rest}\n >\n {char}\n </span>\n );\n};\n"]}
1
+ {"version":3,"sources":["../src/components/input-otp/input-otp-context.tsx","../src/components/input-otp/patterns.ts","../src/components/input-otp/InputOTP.tsx","../src/components/input-otp/InputOTPGroup.tsx","../src/components/input-otp/InputOTPSeparator.tsx","../src/components/input-otp/InputOTPSlot.tsx"],"names":["jsx"],"mappings":"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","file":"chunk-HWPROYKB.js","sourcesContent":["import { createContext } from \"preact\";\nimport { useContext } from \"preact/hooks\";\nexport type InputOTPContextValue = {\n value: string;\n maxLength: number;\n disabled: boolean;\n focused: boolean;\n activeIndex: number;\n inputRef: { current: HTMLInputElement | null };\n};\n\nexport const InputOTPContext = createContext<InputOTPContextValue | null>(null);\n\nexport const useInputOTP = () => {\n const ctx = useContext(InputOTPContext);\n if (!ctx) throw new Error(\"InputOTPSlot and InputOTPGroup must be used within InputOTP\");\n return ctx;\n};\n","/** Digits only (0–9), for PIN / SMS codes. */\nexport const REGEXP_ONLY_DIGITS = /^[0-9]*$/;\n\n/** Letters and digits (ASCII), for alphanumeric OTPs. */\nexport const REGEXP_ONLY_DIGITS_AND_CHARS = /^[a-zA-Z0-9]*$/;\n\nexport const filterOtpValue = (raw: string, pattern?: RegExp): string => {\n if (!pattern) return raw;\n if (pattern === REGEXP_ONLY_DIGITS) return raw.replace(/\\D/g, \"\");\n if (pattern === REGEXP_ONLY_DIGITS_AND_CHARS) return raw.replace(/[^a-zA-Z0-9]/g, \"\");\n let out = \"\";\n for (const ch of raw) {\n const next = out + ch;\n if (pattern.test(next)) out = next;\n }\n return out;\n};\n","import { signal } from \"@preact/signals\";\nimport type { ComponentChildren, JSX } from \"preact\";\nimport { useMemo, useRef } from \"preact/hooks\";\nimport { cn } from \"../../lib/utils\";\nimport { InputOTPContext } from \"./input-otp-context\";\nimport { filterOtpValue, REGEXP_ONLY_DIGITS } from \"./patterns\";\n\nexport type InputOTPProps = Omit<JSX.HTMLAttributes<HTMLDivElement>, \"onInput\" | \"onChange\"> & {\n maxLength?: number;\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n onValueChange?: (value: string) => void;\n pattern?: RegExp;\n disabled?: boolean;\n id?: string;\n name?: string;\n autoComplete?: string;\n children?: ComponentChildren;\n};\n\nconst activeSlotIndex = (focused: boolean, caret: number, len: number, max: number): number => {\n if (!focused) return -1;\n if (len >= max) return max - 1;\n return Math.min(Math.max(caret, 0), len, max - 1);\n};\n\nexport const InputOTP = ({\n maxLength = 6,\n value: controlledValue,\n defaultValue = \"\",\n onChange,\n onValueChange,\n pattern,\n disabled = false,\n id,\n name,\n autoComplete = \"one-time-code\",\n class: className,\n children,\n dir,\n \"aria-label\": ariaLabel,\n ...rest\n}: InputOTPProps) => {\n const isControlled = controlledValue !== undefined;\n const internal = useMemo(() => signal(defaultValue), []);\n const focused = useMemo(() => signal(false), []);\n const caretStart = useMemo(() => signal(0), []);\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const displayValue = isControlled ? (controlledValue ?? \"\") : internal.value;\n\n const bumpCaret = () => {\n requestAnimationFrame(() => {\n const el = inputRef.current;\n const len = displayValue.length;\n caretStart.value =\n el != null && typeof el.selectionStart === \"number\" ? el.selectionStart : len;\n });\n };\n\n const emit = (next: string) => {\n if (!isControlled) internal.value = next;\n onChange?.(next);\n onValueChange?.(next);\n };\n\n const handleInput = (event: JSX.TargetedEvent<HTMLInputElement>) => {\n let next = filterOtpValue(event.currentTarget.value, pattern);\n if (next.length > maxLength) next = next.slice(0, maxLength);\n emit(next);\n bumpCaret();\n };\n\n const activeIndex = activeSlotIndex(\n focused.value,\n caretStart.value,\n displayValue.length,\n maxLength,\n );\n\n return (\n <InputOTPContext.Provider\n value={{\n value: displayValue,\n maxLength,\n disabled,\n focused: focused.value,\n activeIndex,\n inputRef,\n }}\n >\n <div data-slot=\"input-otp\" dir={dir} class={cn(\"relative inline-flex\", className)} {...rest}>\n <div class=\"relative inline-flex items-center\">\n <div class=\"pointer-events-none flex items-center gap-1\">{children}</div>\n <input\n ref={inputRef}\n id={id}\n name={name}\n type=\"text\"\n autoComplete={autoComplete}\n inputMode={pattern === REGEXP_ONLY_DIGITS ? \"numeric\" : \"text\"}\n disabled={disabled}\n value={displayValue}\n maxLength={maxLength}\n aria-label={ariaLabel ?? \"One-time password\"}\n class={cn(\n \"absolute inset-0 z-20 h-full w-full cursor-default border-0 bg-transparent p-0 opacity-0 outline-none\",\n \"focus-visible:outline-none\",\n )}\n style={{ caretColor: \"transparent\" }}\n onInput={handleInput}\n onKeyDown={() => bumpCaret()}\n onKeyUp={() => bumpCaret()}\n onSelect={() => bumpCaret()}\n onFocus={() => {\n focused.value = true;\n bumpCaret();\n }}\n onBlur={() => {\n focused.value = false;\n }}\n onClick={() => bumpCaret()}\n />\n </div>\n </div>\n </InputOTPContext.Provider>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type InputOTPGroupProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\nexport const InputOTPGroup = ({ class: className, children, ...rest }: InputOTPGroupProps) => (\n <div\n role=\"group\"\n data-slot=\"input-otp-group\"\n class={cn(\"inline-flex items-center gap-1\", className)}\n {...rest}\n >\n {children}\n </div>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type InputOTPSeparatorProps = JSX.HTMLAttributes<HTMLSpanElement> & {\n children?: ComponentChildren;\n};\n\nexport const InputOTPSeparator = ({\n class: className,\n children,\n ...rest\n}: InputOTPSeparatorProps) => (\n <span\n role=\"presentation\"\n data-slot=\"input-otp-separator\"\n class={cn(\"text-muted-foreground select-none\", className)}\n {...rest}\n >\n {children ?? \"-\"}\n </span>\n);\n","import type { JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { useInputOTP } from \"./input-otp-context\";\n\nexport type InputOTPSlotProps = JSX.HTMLAttributes<HTMLSpanElement> & {\n index: number;\n};\n\nexport const InputOTPSlot = ({ index, class: className, ...rest }: InputOTPSlotProps) => {\n const ctx = useInputOTP();\n const char = ctx.value[index] ?? \"\";\n const active = !ctx.disabled && ctx.focused && index === ctx.activeIndex;\n\n return (\n <span\n data-slot=\"input-otp-slot\"\n data-active={active ? \"true\" : \"false\"}\n class={cn(\n \"relative flex size-10 items-center justify-center rounded-md border border-input bg-background font-mono text-sm tabular-nums shadow-xs transition-[box-shadow,border-color]\",\n \"data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-[3px] data-[active=true]:ring-ring/50\",\n ctx.disabled && \"opacity-50\",\n className,\n )}\n {...rest}\n >\n {char}\n </span>\n );\n};\n"]}
@@ -0,0 +1,205 @@
1
+ import { useRef, useState, useLayoutEffect } from 'preact/hooks';
2
+
3
+ // src/lib/disclosure/use-height-disclosure-content.ts
4
+ function measureExpandedHeight(inner) {
5
+ const contentHeight = inner.getBoundingClientRect().height;
6
+ const computed = window.getComputedStyle(inner);
7
+ const marginTop = Number.parseFloat(computed.marginTop || "0") || 0;
8
+ const marginBottom = Number.parseFloat(computed.marginBottom || "0") || 0;
9
+ return Math.ceil(contentHeight + marginTop + marginBottom);
10
+ }
11
+ function cancelRaf(rafRef) {
12
+ if (rafRef.current !== null) {
13
+ cancelAnimationFrame(rafRef.current);
14
+ rafRef.current = null;
15
+ }
16
+ }
17
+ function useHeightDisclosureContent({
18
+ open,
19
+ forceMount = false,
20
+ duration = "320ms",
21
+ timingFunction = "cubic-bezier(0.22, 1, 0.36, 1)",
22
+ largeContentThreshold = 560
23
+ }) {
24
+ const innerRef = useRef(null);
25
+ const outerRef = useRef(null);
26
+ const openRef = useRef(open);
27
+ openRef.current = open;
28
+ const hasInitializedRef = useRef(false);
29
+ const isSettledOpenRef = useRef(open);
30
+ const [mounted, setMounted] = useState(() => open || forceMount);
31
+ const [isAnimatingClose, setIsAnimatingClose] = useState(false);
32
+ const [isAnimatingOpen, setIsAnimatingOpen] = useState(false);
33
+ const prefersReducedMotionRef = useRef(false);
34
+ const rafRef = useRef(null);
35
+ const rafSecondRef = useRef(null);
36
+ const usesMaxHeightRef = useRef(false);
37
+ useLayoutEffect(() => {
38
+ if (typeof window !== "undefined" && typeof window.matchMedia === "function") {
39
+ prefersReducedMotionRef.current = window.matchMedia(
40
+ "(prefers-reduced-motion: reduce)"
41
+ ).matches;
42
+ }
43
+ if (open && !mounted) {
44
+ setMounted(true);
45
+ return;
46
+ }
47
+ const outer = outerRef.current;
48
+ const inner = innerRef.current;
49
+ if (!outer || !inner) return;
50
+ cancelRaf(rafRef);
51
+ cancelRaf(rafSecondRef);
52
+ const syncOpenStyles = () => {
53
+ outer.style.transition = "none";
54
+ outer.style.height = "auto";
55
+ outer.style.maxHeight = "none";
56
+ outer.style.overflow = "";
57
+ outer.style.willChange = "";
58
+ isSettledOpenRef.current = true;
59
+ setIsAnimatingOpen(false);
60
+ };
61
+ const syncClosedStyles = () => {
62
+ outer.style.transition = "none";
63
+ outer.style.height = "0px";
64
+ outer.style.maxHeight = "0px";
65
+ outer.style.overflow = "hidden";
66
+ outer.style.willChange = "";
67
+ isSettledOpenRef.current = false;
68
+ };
69
+ if (!hasInitializedRef.current) {
70
+ hasInitializedRef.current = true;
71
+ if (open) {
72
+ syncOpenStyles();
73
+ } else {
74
+ syncClosedStyles();
75
+ }
76
+ return;
77
+ }
78
+ if (open) {
79
+ if (isSettledOpenRef.current) {
80
+ setIsAnimatingClose(false);
81
+ return;
82
+ }
83
+ setIsAnimatingClose(false);
84
+ isSettledOpenRef.current = false;
85
+ const endHeight = measureExpandedHeight(inner);
86
+ const measuredStart = outer.getBoundingClientRect().height;
87
+ const startHeight2 = measuredStart < 1 ? 0 : measuredStart;
88
+ usesMaxHeightRef.current = endHeight >= largeContentThreshold;
89
+ const animateProperty2 = usesMaxHeightRef.current ? "max-height" : "height";
90
+ const transitionValue2 = `${animateProperty2} ${duration} ${timingFunction}`;
91
+ if (prefersReducedMotionRef.current || endHeight < 1 || Math.abs(endHeight - startHeight2) < 1) {
92
+ syncOpenStyles();
93
+ return;
94
+ }
95
+ setIsAnimatingOpen(true);
96
+ outer.style.transition = "none";
97
+ outer.style.overflow = "hidden";
98
+ outer.style.willChange = animateProperty2;
99
+ outer.style.height = usesMaxHeightRef.current ? "auto" : `${startHeight2}px`;
100
+ outer.style.maxHeight = `${startHeight2}px`;
101
+ rafRef.current = requestAnimationFrame(() => {
102
+ rafRef.current = null;
103
+ rafSecondRef.current = requestAnimationFrame(() => {
104
+ rafSecondRef.current = null;
105
+ if (!openRef.current) return;
106
+ outer.style.transition = transitionValue2;
107
+ if (usesMaxHeightRef.current) {
108
+ outer.style.maxHeight = `${endHeight}px`;
109
+ } else {
110
+ outer.style.height = `${endHeight}px`;
111
+ outer.style.maxHeight = `${endHeight}px`;
112
+ }
113
+ });
114
+ });
115
+ return () => {
116
+ cancelRaf(rafRef);
117
+ cancelRaf(rafSecondRef);
118
+ };
119
+ }
120
+ if (!mounted) {
121
+ if (forceMount) syncClosedStyles();
122
+ return;
123
+ }
124
+ isSettledOpenRef.current = false;
125
+ const startHeight = outer.getBoundingClientRect().height || measureExpandedHeight(inner);
126
+ usesMaxHeightRef.current = startHeight >= largeContentThreshold;
127
+ const animateProperty = usesMaxHeightRef.current ? "max-height" : "height";
128
+ const transitionValue = `${animateProperty} ${duration} ${timingFunction}`;
129
+ if (prefersReducedMotionRef.current || startHeight < 1) {
130
+ setIsAnimatingOpen(false);
131
+ setIsAnimatingClose(false);
132
+ if (!forceMount) {
133
+ setMounted(false);
134
+ } else {
135
+ syncClosedStyles();
136
+ }
137
+ return;
138
+ }
139
+ setIsAnimatingOpen(false);
140
+ setIsAnimatingClose(true);
141
+ outer.style.transition = "none";
142
+ outer.style.overflow = "hidden";
143
+ outer.style.willChange = animateProperty;
144
+ outer.style.height = usesMaxHeightRef.current ? "auto" : `${startHeight}px`;
145
+ outer.style.maxHeight = `${startHeight}px`;
146
+ rafRef.current = requestAnimationFrame(() => {
147
+ rafRef.current = null;
148
+ rafSecondRef.current = requestAnimationFrame(() => {
149
+ rafSecondRef.current = null;
150
+ if (openRef.current) return;
151
+ outer.style.transition = transitionValue;
152
+ if (usesMaxHeightRef.current) {
153
+ outer.style.maxHeight = "0px";
154
+ } else {
155
+ outer.style.height = "0px";
156
+ outer.style.maxHeight = "0px";
157
+ }
158
+ });
159
+ });
160
+ return () => {
161
+ cancelRaf(rafRef);
162
+ cancelRaf(rafSecondRef);
163
+ };
164
+ }, [forceMount, open, mounted, timingFunction, duration, largeContentThreshold]);
165
+ const handleTransitionEnd = (e) => {
166
+ if (e.target !== outerRef.current) return;
167
+ if (e.propertyName !== "height" && e.propertyName !== "max-height") return;
168
+ const outer = outerRef.current;
169
+ if (!outer) return;
170
+ if (openRef.current) {
171
+ setIsAnimatingOpen(false);
172
+ outer.style.transition = "none";
173
+ outer.style.height = "auto";
174
+ outer.style.maxHeight = "none";
175
+ outer.style.overflow = "";
176
+ outer.style.willChange = "";
177
+ isSettledOpenRef.current = true;
178
+ return;
179
+ }
180
+ setIsAnimatingClose(false);
181
+ if (!forceMount) {
182
+ outer.style.willChange = "";
183
+ setMounted(false);
184
+ } else {
185
+ outer.style.transition = "none";
186
+ outer.style.height = "0px";
187
+ outer.style.maxHeight = "0px";
188
+ outer.style.overflow = "hidden";
189
+ outer.style.willChange = "";
190
+ }
191
+ };
192
+ const allowRender = mounted || forceMount;
193
+ return {
194
+ allowRender,
195
+ isAnimatingClose,
196
+ isAnimatingOpen,
197
+ outerRef,
198
+ innerRef,
199
+ handleTransitionEnd
200
+ };
201
+ }
202
+
203
+ export { useHeightDisclosureContent };
204
+ //# sourceMappingURL=chunk-ISISDJ3Z.js.map
205
+ //# sourceMappingURL=chunk-ISISDJ3Z.js.map