@kamod-ui/core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (415) hide show
  1. package/LICENSE.md +9 -0
  2. package/dist/Accordion-D1PiNspd.d.ts +39 -0
  3. package/dist/AlertDialog-CpnCfDdN.d.ts +64 -0
  4. package/dist/Button-tRKMr8-H.d.ts +84 -0
  5. package/dist/CalendarDateTimePanel-B3J8OlSc.d.ts +79 -0
  6. package/dist/Carousel-DvlcMPpB.d.ts +41 -0
  7. package/dist/Chart-Ax22S5_N.d.ts +10 -0
  8. package/dist/Checkbox-DBbLYq6Q.d.ts +12 -0
  9. package/dist/Collapsible-DSZCp0tm.d.ts +34 -0
  10. package/dist/ComboboxInlineInput-CB7CEXzy.d.ts +135 -0
  11. package/dist/CommandSeparator-pJQnB9Lu.d.ts +47 -0
  12. package/dist/DataTable-zNTTdYVU.d.ts +13 -0
  13. package/dist/DatePicker-AFAYh5Ca.d.ts +20 -0
  14. package/dist/Dialog-CqCI4s9U.d.ts +28 -0
  15. package/dist/DialogContent-9VJGDt5l.d.ts +24 -0
  16. package/dist/DialogHeader-CYT7iUDq.d.ts +13 -0
  17. package/dist/DialogTitle-CvcRlZ_Z.d.ts +13 -0
  18. package/dist/Direction-25ZOt0gW.d.ts +24 -0
  19. package/dist/Drawer-BOPihYBJ.d.ts +41 -0
  20. package/dist/Dropdown-uPFaMqkB.d.ts +143 -0
  21. package/dist/EmptyTitle-J8rVLcJ3.d.ts +59 -0
  22. package/dist/FieldTitle-aSgThW-B.d.ts +100 -0
  23. package/dist/HoverCard-OSnOE6pE.d.ts +52 -0
  24. package/dist/Input-Cem05el9.d.ts +27 -0
  25. package/dist/Menubar-DwYDW4w2.d.ts +88 -0
  26. package/dist/PopoverTrigger-B6kK73gh.d.ts +43 -0
  27. package/dist/Progress-BGij8Hob.d.ts +13 -0
  28. package/dist/RadioGroup-BaElzLwa.d.ts +40 -0
  29. package/dist/ScrollArea-B-vILe3g.d.ts +16 -0
  30. package/dist/Select-B_mNVh70.d.ts +51 -0
  31. package/dist/Separator-DCQYrnpB.d.ts +9 -0
  32. package/dist/Sheet-B41Emmis.d.ts +29 -0
  33. package/dist/SidebarProvider-IAihmyD7.d.ts +46 -0
  34. package/dist/Slider-BQLMBpYs.d.ts +16 -0
  35. package/dist/Switch-CTTkNdqF.d.ts +31 -0
  36. package/dist/Tabs-DFJR_P2D.d.ts +47 -0
  37. package/dist/Textarea-DbKkduOG.d.ts +27 -0
  38. package/dist/ThemeToggle-DfiEM1dZ.d.ts +9 -0
  39. package/dist/Toggle-CseZl7XN.d.ts +49 -0
  40. package/dist/ToggleGroup-UeYHzQe7.d.ts +137 -0
  41. package/dist/Tooltip-BtRWVyCA.d.ts +40 -0
  42. package/dist/Typography-ccTtE182.d.ts +64 -0
  43. package/dist/chunk-2UHCXHAX.js +119 -0
  44. package/dist/chunk-2UHCXHAX.js.map +1 -0
  45. package/dist/chunk-2XNWLXG2.js +12 -0
  46. package/dist/chunk-2XNWLXG2.js.map +1 -0
  47. package/dist/chunk-3EHH62ZA.js +175 -0
  48. package/dist/chunk-3EHH62ZA.js.map +1 -0
  49. package/dist/chunk-3GKUUTSA.js +586 -0
  50. package/dist/chunk-3GKUUTSA.js.map +1 -0
  51. package/dist/chunk-3IT2RVO6.js +151 -0
  52. package/dist/chunk-3IT2RVO6.js.map +1 -0
  53. package/dist/chunk-3WAPI4KR.js +36 -0
  54. package/dist/chunk-3WAPI4KR.js.map +1 -0
  55. package/dist/chunk-44YLIQIS.js +15 -0
  56. package/dist/chunk-44YLIQIS.js.map +1 -0
  57. package/dist/chunk-4AJM7IA4.js +9 -0
  58. package/dist/chunk-4AJM7IA4.js.map +1 -0
  59. package/dist/chunk-4HX6SEWP.js +24 -0
  60. package/dist/chunk-4HX6SEWP.js.map +1 -0
  61. package/dist/chunk-6FTWMOHU.js +478 -0
  62. package/dist/chunk-6FTWMOHU.js.map +1 -0
  63. package/dist/chunk-6ZXYDBPR.js +304 -0
  64. package/dist/chunk-6ZXYDBPR.js.map +1 -0
  65. package/dist/chunk-7E2ZPDVI.js +224 -0
  66. package/dist/chunk-7E2ZPDVI.js.map +1 -0
  67. package/dist/chunk-7HZUM5ZQ.js +85 -0
  68. package/dist/chunk-7HZUM5ZQ.js.map +1 -0
  69. package/dist/chunk-7MECYLKS.js +375 -0
  70. package/dist/chunk-7MECYLKS.js.map +1 -0
  71. package/dist/chunk-7TDS7TC6.js +49 -0
  72. package/dist/chunk-7TDS7TC6.js.map +1 -0
  73. package/dist/chunk-7ZXJRNJO.js +26 -0
  74. package/dist/chunk-7ZXJRNJO.js.map +1 -0
  75. package/dist/chunk-AVCG4W6D.js +122 -0
  76. package/dist/chunk-AVCG4W6D.js.map +1 -0
  77. package/dist/chunk-BF3F5SJX.js +89 -0
  78. package/dist/chunk-BF3F5SJX.js.map +1 -0
  79. package/dist/chunk-BHMKSFES.js +195 -0
  80. package/dist/chunk-BHMKSFES.js.map +1 -0
  81. package/dist/chunk-BMF5SGYP.js +45 -0
  82. package/dist/chunk-BMF5SGYP.js.map +1 -0
  83. package/dist/chunk-D25ZQ36E.js +273 -0
  84. package/dist/chunk-D25ZQ36E.js.map +1 -0
  85. package/dist/chunk-D5W5YHJZ.js +426 -0
  86. package/dist/chunk-D5W5YHJZ.js.map +1 -0
  87. package/dist/chunk-DHBILREV.js +70 -0
  88. package/dist/chunk-DHBILREV.js.map +1 -0
  89. package/dist/chunk-DJ4PFETN.js +17 -0
  90. package/dist/chunk-DJ4PFETN.js.map +1 -0
  91. package/dist/chunk-DKXUKLZT.js +342 -0
  92. package/dist/chunk-DKXUKLZT.js.map +1 -0
  93. package/dist/chunk-EL2HT25C.js +9 -0
  94. package/dist/chunk-EL2HT25C.js.map +1 -0
  95. package/dist/chunk-FDNPBI2Z.js +26 -0
  96. package/dist/chunk-FDNPBI2Z.js.map +1 -0
  97. package/dist/chunk-FWCN47RC.js +65 -0
  98. package/dist/chunk-FWCN47RC.js.map +1 -0
  99. package/dist/chunk-G6PBJZYF.js +114 -0
  100. package/dist/chunk-G6PBJZYF.js.map +1 -0
  101. package/dist/chunk-GFF5OT46.js +80 -0
  102. package/dist/chunk-GFF5OT46.js.map +1 -0
  103. package/dist/chunk-GLWYIUE5.js +242 -0
  104. package/dist/chunk-GLWYIUE5.js.map +1 -0
  105. package/dist/chunk-HEQRODRF.js +110 -0
  106. package/dist/chunk-HEQRODRF.js.map +1 -0
  107. package/dist/chunk-HGTFOOUL.js +61 -0
  108. package/dist/chunk-HGTFOOUL.js.map +1 -0
  109. package/dist/chunk-HNESOMVN.js +18 -0
  110. package/dist/chunk-HNESOMVN.js.map +1 -0
  111. package/dist/chunk-I2PR3HXC.js +51 -0
  112. package/dist/chunk-I2PR3HXC.js.map +1 -0
  113. package/dist/chunk-IGGEBO7K.js +8 -0
  114. package/dist/chunk-IGGEBO7K.js.map +1 -0
  115. package/dist/chunk-J2Z2LSXM.js +26 -0
  116. package/dist/chunk-J2Z2LSXM.js.map +1 -0
  117. package/dist/chunk-JC7JMWSH.js +109 -0
  118. package/dist/chunk-JC7JMWSH.js.map +1 -0
  119. package/dist/chunk-JZRMLE4X.js +77 -0
  120. package/dist/chunk-JZRMLE4X.js.map +1 -0
  121. package/dist/chunk-KBXDU3G4.js +382 -0
  122. package/dist/chunk-KBXDU3G4.js.map +1 -0
  123. package/dist/chunk-KF34SFFZ.js +18 -0
  124. package/dist/chunk-KF34SFFZ.js.map +1 -0
  125. package/dist/chunk-L42B6QZS.js +524 -0
  126. package/dist/chunk-L42B6QZS.js.map +1 -0
  127. package/dist/chunk-LGO5HXMG.js +592 -0
  128. package/dist/chunk-LGO5HXMG.js.map +1 -0
  129. package/dist/chunk-LVK44RMS.js +78 -0
  130. package/dist/chunk-LVK44RMS.js.map +1 -0
  131. package/dist/chunk-N2LRB6TA.js +8 -0
  132. package/dist/chunk-N2LRB6TA.js.map +1 -0
  133. package/dist/chunk-NHTY2HD2.js +8 -0
  134. package/dist/chunk-NHTY2HD2.js.map +1 -0
  135. package/dist/chunk-NJUXP5FM.js +392 -0
  136. package/dist/chunk-NJUXP5FM.js.map +1 -0
  137. package/dist/chunk-NPHECLV5.js +94 -0
  138. package/dist/chunk-NPHECLV5.js.map +1 -0
  139. package/dist/chunk-NXVAR6P2.js +79 -0
  140. package/dist/chunk-NXVAR6P2.js.map +1 -0
  141. package/dist/chunk-OMXWBB67.js +9 -0
  142. package/dist/chunk-OMXWBB67.js.map +1 -0
  143. package/dist/chunk-PE5QQIV5.js +69 -0
  144. package/dist/chunk-PE5QQIV5.js.map +1 -0
  145. package/dist/chunk-QAUGWXGJ.js +158 -0
  146. package/dist/chunk-QAUGWXGJ.js.map +1 -0
  147. package/dist/chunk-QCYFSBZ7.js +81 -0
  148. package/dist/chunk-QCYFSBZ7.js.map +1 -0
  149. package/dist/chunk-QJT5UAL2.js +714 -0
  150. package/dist/chunk-QJT5UAL2.js.map +1 -0
  151. package/dist/chunk-QRLVOM3E.js +83 -0
  152. package/dist/chunk-QRLVOM3E.js.map +1 -0
  153. package/dist/chunk-RBVGV7VO.js +26 -0
  154. package/dist/chunk-RBVGV7VO.js.map +1 -0
  155. package/dist/chunk-RD6VXGVY.js +340 -0
  156. package/dist/chunk-RD6VXGVY.js.map +1 -0
  157. package/dist/chunk-RSPI2A4W.js +106 -0
  158. package/dist/chunk-RSPI2A4W.js.map +1 -0
  159. package/dist/chunk-RT26RZ7W.js +79 -0
  160. package/dist/chunk-RT26RZ7W.js.map +1 -0
  161. package/dist/chunk-RXAIDZ33.js +522 -0
  162. package/dist/chunk-RXAIDZ33.js.map +1 -0
  163. package/dist/chunk-S6TO62GJ.js +53 -0
  164. package/dist/chunk-S6TO62GJ.js.map +1 -0
  165. package/dist/chunk-SJ5MYJ7L.js +283 -0
  166. package/dist/chunk-SJ5MYJ7L.js.map +1 -0
  167. package/dist/chunk-SZ2I2SRP.js +156 -0
  168. package/dist/chunk-SZ2I2SRP.js.map +1 -0
  169. package/dist/chunk-UGOQKTHL.js +23 -0
  170. package/dist/chunk-UGOQKTHL.js.map +1 -0
  171. package/dist/chunk-UGQ756Z6.js +92 -0
  172. package/dist/chunk-UGQ756Z6.js.map +1 -0
  173. package/dist/chunk-UNPCAFLS.js +22 -0
  174. package/dist/chunk-UNPCAFLS.js.map +1 -0
  175. package/dist/chunk-V27UIXBD.js +36 -0
  176. package/dist/chunk-V27UIXBD.js.map +1 -0
  177. package/dist/chunk-VB5LDR7C.js +97 -0
  178. package/dist/chunk-VB5LDR7C.js.map +1 -0
  179. package/dist/chunk-VJ26PA3U.js +9 -0
  180. package/dist/chunk-VJ26PA3U.js.map +1 -0
  181. package/dist/chunk-VKB4VUN7.js +164 -0
  182. package/dist/chunk-VKB4VUN7.js.map +1 -0
  183. package/dist/chunk-Y37OHTAO.js +208 -0
  184. package/dist/chunk-Y37OHTAO.js.map +1 -0
  185. package/dist/chunk-Y4OW24IS.js +18 -0
  186. package/dist/chunk-Y4OW24IS.js.map +1 -0
  187. package/dist/chunk-YDMMDO2W.js +141 -0
  188. package/dist/chunk-YDMMDO2W.js.map +1 -0
  189. package/dist/chunk-YENXORWK.js +9 -0
  190. package/dist/chunk-YENXORWK.js.map +1 -0
  191. package/dist/chunk-YLTIB224.js +76 -0
  192. package/dist/chunk-YLTIB224.js.map +1 -0
  193. package/dist/chunk-YVA6PAML.js +63 -0
  194. package/dist/chunk-YVA6PAML.js.map +1 -0
  195. package/dist/chunk-YWUMX4JR.js +9 -0
  196. package/dist/chunk-YWUMX4JR.js.map +1 -0
  197. package/dist/chunk-ZDXR2SWG.js +32 -0
  198. package/dist/chunk-ZDXR2SWG.js.map +1 -0
  199. package/dist/chunk-ZIFL6GXH.js +187 -0
  200. package/dist/chunk-ZIFL6GXH.js.map +1 -0
  201. package/dist/chunk-ZM4VJOGF.js +40 -0
  202. package/dist/chunk-ZM4VJOGF.js.map +1 -0
  203. package/dist/chunk-ZVKIJLNO.js +9 -0
  204. package/dist/chunk-ZVKIJLNO.js.map +1 -0
  205. package/dist/components/accordion/index.d.ts +12 -0
  206. package/dist/components/accordion/index.js +4 -0
  207. package/dist/components/accordion/index.js.map +1 -0
  208. package/dist/components/alert/index.d.ts +64 -0
  209. package/dist/components/alert/index.js +4 -0
  210. package/dist/components/alert/index.js.map +1 -0
  211. package/dist/components/alert-dialog/index.d.ts +22 -0
  212. package/dist/components/alert-dialog/index.js +9 -0
  213. package/dist/components/alert-dialog/index.js.map +1 -0
  214. package/dist/components/aspect-ratio/index.d.ts +11 -0
  215. package/dist/components/aspect-ratio/index.js +4 -0
  216. package/dist/components/aspect-ratio/index.js.map +1 -0
  217. package/dist/components/avatar/index.d.ts +53 -0
  218. package/dist/components/avatar/index.js +4 -0
  219. package/dist/components/avatar/index.js.map +1 -0
  220. package/dist/components/badge/index.d.ts +175 -0
  221. package/dist/components/badge/index.js +4 -0
  222. package/dist/components/badge/index.js.map +1 -0
  223. package/dist/components/breadcrumb/index.d.ts +38 -0
  224. package/dist/components/breadcrumb/index.js +4 -0
  225. package/dist/components/breadcrumb/index.js.map +1 -0
  226. package/dist/components/button/index.d.ts +72 -0
  227. package/dist/components/button/index.js +5 -0
  228. package/dist/components/button/index.js.map +1 -0
  229. package/dist/components/button-group/index.d.ts +21 -0
  230. package/dist/components/button-group/index.js +4 -0
  231. package/dist/components/button-group/index.js.map +1 -0
  232. package/dist/components/calendar/index.d.ts +7 -0
  233. package/dist/components/calendar/index.js +12 -0
  234. package/dist/components/calendar/index.js.map +1 -0
  235. package/dist/components/card/index.d.ts +80 -0
  236. package/dist/components/card/index.js +3 -0
  237. package/dist/components/card/index.js.map +1 -0
  238. package/dist/components/carousel/index.d.ts +14 -0
  239. package/dist/components/carousel/index.js +5 -0
  240. package/dist/components/carousel/index.js.map +1 -0
  241. package/dist/components/chart/index.d.ts +6 -0
  242. package/dist/components/chart/index.js +4 -0
  243. package/dist/components/chart/index.js.map +1 -0
  244. package/dist/components/checkbox/index.d.ts +7 -0
  245. package/dist/components/checkbox/index.js +4 -0
  246. package/dist/components/checkbox/index.js.map +1 -0
  247. package/dist/components/collapsible/index.d.ts +11 -0
  248. package/dist/components/collapsible/index.js +4 -0
  249. package/dist/components/collapsible/index.js.map +1 -0
  250. package/dist/components/combobox/index.d.ts +13 -0
  251. package/dist/components/combobox/index.js +7 -0
  252. package/dist/components/combobox/index.js.map +1 -0
  253. package/dist/components/command/index.d.ts +21 -0
  254. package/dist/components/command/index.js +10 -0
  255. package/dist/components/command/index.js.map +1 -0
  256. package/dist/components/context-menu/index.d.ts +114 -0
  257. package/dist/components/context-menu/index.js +5 -0
  258. package/dist/components/context-menu/index.js.map +1 -0
  259. package/dist/components/data-table/index.d.ts +6 -0
  260. package/dist/components/data-table/index.js +5 -0
  261. package/dist/components/data-table/index.js.map +1 -0
  262. package/dist/components/date-picker/index.d.ts +7 -0
  263. package/dist/components/date-picker/index.js +8 -0
  264. package/dist/components/date-picker/index.js.map +1 -0
  265. package/dist/components/dialog/index.d.ts +22 -0
  266. package/dist/components/dialog/index.js +8 -0
  267. package/dist/components/dialog/index.js.map +1 -0
  268. package/dist/components/direction/index.d.ts +7 -0
  269. package/dist/components/direction/index.js +4 -0
  270. package/dist/components/direction/index.js.map +1 -0
  271. package/dist/components/drawer/index.d.ts +19 -0
  272. package/dist/components/drawer/index.js +8 -0
  273. package/dist/components/drawer/index.js.map +1 -0
  274. package/dist/components/dropdown/index.d.ts +24 -0
  275. package/dist/components/dropdown/index.js +5 -0
  276. package/dist/components/dropdown/index.js.map +1 -0
  277. package/dist/components/dropzone/index.d.ts +26 -0
  278. package/dist/components/dropzone/index.js +5 -0
  279. package/dist/components/dropzone/index.js.map +1 -0
  280. package/dist/components/empty/index.d.ts +8 -0
  281. package/dist/components/empty/index.js +4 -0
  282. package/dist/components/empty/index.js.map +1 -0
  283. package/dist/components/field/index.d.ts +8 -0
  284. package/dist/components/field/index.js +6 -0
  285. package/dist/components/field/index.js.map +1 -0
  286. package/dist/components/hover-card/index.d.ts +12 -0
  287. package/dist/components/hover-card/index.js +3 -0
  288. package/dist/components/hover-card/index.js.map +1 -0
  289. package/dist/components/image/index.d.ts +6 -0
  290. package/dist/components/image/index.js +4 -0
  291. package/dist/components/image/index.js.map +1 -0
  292. package/dist/components/input/index.d.ts +27 -0
  293. package/dist/components/input/index.js +4 -0
  294. package/dist/components/input/index.js.map +1 -0
  295. package/dist/components/input-group/index.d.ts +132 -0
  296. package/dist/components/input-group/index.js +7 -0
  297. package/dist/components/input-group/index.js.map +1 -0
  298. package/dist/components/input-otp/index.d.ts +39 -0
  299. package/dist/components/input-otp/index.js +4 -0
  300. package/dist/components/input-otp/index.js.map +1 -0
  301. package/dist/components/item/index.d.ts +108 -0
  302. package/dist/components/item/index.js +5 -0
  303. package/dist/components/item/index.js.map +1 -0
  304. package/dist/components/kbd/index.d.ts +31 -0
  305. package/dist/components/kbd/index.js +4 -0
  306. package/dist/components/kbd/index.js.map +1 -0
  307. package/dist/components/label/index.d.ts +49 -0
  308. package/dist/components/label/index.js +4 -0
  309. package/dist/components/label/index.js.map +1 -0
  310. package/dist/components/locale-segment-group/index.d.ts +15 -0
  311. package/dist/components/locale-segment-group/index.js +4 -0
  312. package/dist/components/locale-segment-group/index.js.map +1 -0
  313. package/dist/components/menubar/index.d.ts +23 -0
  314. package/dist/components/menubar/index.js +5 -0
  315. package/dist/components/menubar/index.js.map +1 -0
  316. package/dist/components/native-select/index.d.ts +89 -0
  317. package/dist/components/native-select/index.js +3 -0
  318. package/dist/components/native-select/index.js.map +1 -0
  319. package/dist/components/navigation-menu/index.d.ts +15 -0
  320. package/dist/components/navigation-menu/index.js +5 -0
  321. package/dist/components/navigation-menu/index.js.map +1 -0
  322. package/dist/components/pagination/index.d.ts +44 -0
  323. package/dist/components/pagination/index.js +5 -0
  324. package/dist/components/pagination/index.js.map +1 -0
  325. package/dist/components/popover/index.d.ts +76 -0
  326. package/dist/components/popover/index.js +5 -0
  327. package/dist/components/popover/index.js.map +1 -0
  328. package/dist/components/progress/index.d.ts +6 -0
  329. package/dist/components/progress/index.js +4 -0
  330. package/dist/components/progress/index.js.map +1 -0
  331. package/dist/components/prose/index.d.ts +8 -0
  332. package/dist/components/prose/index.js +4 -0
  333. package/dist/components/prose/index.js.map +1 -0
  334. package/dist/components/radio-group/index.d.ts +11 -0
  335. package/dist/components/radio-group/index.js +5 -0
  336. package/dist/components/radio-group/index.js.map +1 -0
  337. package/dist/components/scroll-area/index.d.ts +11 -0
  338. package/dist/components/scroll-area/index.js +4 -0
  339. package/dist/components/scroll-area/index.js.map +1 -0
  340. package/dist/components/select/index.d.ts +17 -0
  341. package/dist/components/select/index.js +5 -0
  342. package/dist/components/select/index.js.map +1 -0
  343. package/dist/components/selectable-card/index.d.ts +11 -0
  344. package/dist/components/selectable-card/index.js +5 -0
  345. package/dist/components/selectable-card/index.js.map +1 -0
  346. package/dist/components/separator/index.d.ts +24 -0
  347. package/dist/components/separator/index.js +4 -0
  348. package/dist/components/separator/index.js.map +1 -0
  349. package/dist/components/sheet/index.d.ts +20 -0
  350. package/dist/components/sheet/index.js +8 -0
  351. package/dist/components/sheet/index.js.map +1 -0
  352. package/dist/components/sidebar/index.d.ts +16 -0
  353. package/dist/components/sidebar/index.js +3 -0
  354. package/dist/components/sidebar/index.js.map +1 -0
  355. package/dist/components/skeleton/index.d.ts +52 -0
  356. package/dist/components/skeleton/index.js +3 -0
  357. package/dist/components/skeleton/index.js.map +1 -0
  358. package/dist/components/slider/index.d.ts +7 -0
  359. package/dist/components/slider/index.js +4 -0
  360. package/dist/components/slider/index.js.map +1 -0
  361. package/dist/components/sonner/index.d.ts +7 -0
  362. package/dist/components/sonner/index.js +3 -0
  363. package/dist/components/sonner/index.js.map +1 -0
  364. package/dist/components/spinner/index.d.ts +10 -0
  365. package/dist/components/spinner/index.js +4 -0
  366. package/dist/components/spinner/index.js.map +1 -0
  367. package/dist/components/switch/index.d.ts +7 -0
  368. package/dist/components/switch/index.js +4 -0
  369. package/dist/components/switch/index.js.map +1 -0
  370. package/dist/components/table/index.d.ts +45 -0
  371. package/dist/components/table/index.js +5 -0
  372. package/dist/components/table/index.js.map +1 -0
  373. package/dist/components/tabs/index.d.ts +13 -0
  374. package/dist/components/tabs/index.js +4 -0
  375. package/dist/components/tabs/index.js.map +1 -0
  376. package/dist/components/textarea/index.d.ts +27 -0
  377. package/dist/components/textarea/index.js +4 -0
  378. package/dist/components/textarea/index.js.map +1 -0
  379. package/dist/components/theme-toggle/index.d.ts +6 -0
  380. package/dist/components/theme-toggle/index.js +6 -0
  381. package/dist/components/theme-toggle/index.js.map +1 -0
  382. package/dist/components/toast/index.d.ts +27 -0
  383. package/dist/components/toast/index.js +3 -0
  384. package/dist/components/toast/index.js.map +1 -0
  385. package/dist/components/toggle/index.d.ts +7 -0
  386. package/dist/components/toggle/index.js +4 -0
  387. package/dist/components/toggle/index.js.map +1 -0
  388. package/dist/components/toggle-group/index.d.ts +11 -0
  389. package/dist/components/toggle-group/index.js +4 -0
  390. package/dist/components/toggle-group/index.js.map +1 -0
  391. package/dist/components/tooltip/index.d.ts +12 -0
  392. package/dist/components/tooltip/index.js +3 -0
  393. package/dist/components/tooltip/index.js.map +1 -0
  394. package/dist/components/typography/index.d.ts +8 -0
  395. package/dist/components/typography/index.js +4 -0
  396. package/dist/components/typography/index.js.map +1 -0
  397. package/dist/components/video/index.d.ts +8 -0
  398. package/dist/components/video/index.js +4 -0
  399. package/dist/components/video/index.js.map +1 -0
  400. package/dist/index.d.ts +82 -0
  401. package/dist/index.js +83 -0
  402. package/dist/index.js.map +1 -0
  403. package/dist/lib/interactive/index.d.ts +34 -0
  404. package/dist/lib/interactive/index.js +3 -0
  405. package/dist/lib/interactive/index.js.map +1 -0
  406. package/dist/lib/signals/index.d.ts +15 -0
  407. package/dist/lib/signals/index.js +3 -0
  408. package/dist/lib/signals/index.js.map +1 -0
  409. package/dist/lib/utils.d.ts +5 -0
  410. package/dist/lib/utils.js +3 -0
  411. package/dist/lib/utils.js.map +1 -0
  412. package/dist/navigationMenuTriggerStyle-MrMOOgmr.d.ts +48 -0
  413. package/dist/sonner-store-Dfdxy8ba.d.ts +11 -0
  414. package/dist/theme.css +81 -0
  415. package/package.json +360 -0
@@ -0,0 +1,524 @@
1
+ import { cn } from './chunk-OMXWBB67.js';
2
+ import { signal } from '@preact/signals';
3
+ import { useMemo, useRef, useState, useCallback, useEffect, useLayoutEffect } from 'preact/hooks';
4
+ import { jsxs, jsx, Fragment } from 'preact/jsx-runtime';
5
+
6
+ var toNumber = (value, fallback) => {
7
+ if (typeof value === "number" && Number.isFinite(value)) return value;
8
+ if (typeof value === "string") {
9
+ const parsed = Number(value);
10
+ if (Number.isFinite(parsed)) return parsed;
11
+ }
12
+ return fallback;
13
+ };
14
+ var clamp = (n, min, max) => Math.min(max, Math.max(min, n));
15
+ var normalizeIncoming = (raw, fallbackSingle, min, max) => {
16
+ if (raw === void 0) return [clamp(fallbackSingle, min, max)];
17
+ let arr = Array.isArray(raw) ? raw : [raw];
18
+ if (arr.length === 0) return [clamp(fallbackSingle, min, max)];
19
+ if (arr.length > 1) {
20
+ arr = [...arr].sort((a, b) => toNumber(a, min) - toNumber(b, min));
21
+ }
22
+ return arr.map((v, i) => {
23
+ const fb = i === 0 ? fallbackSingle : toNumber(arr[i - 1], min);
24
+ return clamp(toNumber(v, fb), min, max);
25
+ });
26
+ };
27
+ var enforceOrder = (vals, min, max, step) => {
28
+ const n = vals.length;
29
+ if (n <= 1) return vals;
30
+ const out = [...vals];
31
+ out[0] = clamp(out[0], min, max);
32
+ for (let i = 1; i < n; i++) {
33
+ const gap = step > 0 ? step : 0;
34
+ out[i] = clamp(out[i], out[i - 1] + gap, max);
35
+ }
36
+ for (let i = n - 2; i >= 0; i--) {
37
+ const gap = step > 0 ? step : 0;
38
+ out[i] = clamp(out[i], min, out[i + 1] - gap);
39
+ }
40
+ return out;
41
+ };
42
+ var SLIDER_THUMB_HALF = "0.375rem";
43
+ var SLIDER_THUMB_FULL = "0.75rem";
44
+ var overlayThumbStyles = [
45
+ "[&::-webkit-slider-thumb]:size-3 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full",
46
+ /* WebKit: vertically center thumb on h-1 track (thumb 12px, track 4px → -4px). */
47
+ "[&::-webkit-slider-thumb]:-mt-[4px]",
48
+ "[&::-webkit-slider-thumb]:border [&::-webkit-slider-thumb]:border-ring [&::-webkit-slider-thumb]:bg-white [&::-webkit-slider-thumb]:dark:bg-card",
49
+ "[&::-webkit-slider-thumb]:transition-[color,box-shadow]",
50
+ "[&::-webkit-slider-thumb]:active:transition-none",
51
+ "group-data-[dragging]:[&::-webkit-slider-thumb]:transition-none",
52
+ "[&::-webkit-slider-thumb]:ring-1 [&::-webkit-slider-thumb]:ring-ring/50",
53
+ "[&::-webkit-slider-thumb]:hover:ring-3 [&::-webkit-slider-thumb]:focus-visible:ring-3 [&::-webkit-slider-thumb]:active:ring-3",
54
+ "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",
55
+ "[&::-webkit-slider-thumb]:focus-visible:outline-none",
56
+ "[&::-moz-range-thumb]:size-3 [&::-moz-range-thumb]:appearance-none [&::-moz-range-thumb]:rounded-full",
57
+ "[&::-moz-range-thumb]:border [&::-moz-range-thumb]:border-ring [&::-moz-range-thumb]:bg-white [&::-moz-range-thumb]:dark:bg-card",
58
+ "[&::-moz-range-thumb]:transition-[color,box-shadow]",
59
+ "[&::-moz-range-thumb]:active:transition-none",
60
+ "group-data-[dragging]:[&::-moz-range-thumb]:transition-none",
61
+ "[&::-moz-range-thumb]:ring-1 [&::-moz-range-thumb]:ring-ring/50",
62
+ "[&::-moz-range-thumb]:hover:ring-3 [&::-moz-range-thumb]:focus-visible:ring-3 [&::-moz-range-thumb]:active:ring-3",
63
+ "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",
64
+ "[&::-moz-range-thumb]:focus-visible:outline-none"
65
+ ].join(" ");
66
+ var overlayInputHorizontal = cn(
67
+ "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",
68
+ "focus:outline-none focus-visible:outline-none",
69
+ "disabled:pointer-events-none disabled:cursor-not-allowed",
70
+ "[&::-webkit-slider-runnable-track]:h-1 [&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:bg-transparent",
71
+ "[&::-moz-range-track]:h-1 [&::-moz-range-track]:rounded-full [&::-moz-range-track]:bg-transparent",
72
+ "[&::-moz-range-progress]:h-1 [&::-moz-range-progress]:rounded-full [&::-moz-range-progress]:bg-transparent",
73
+ overlayThumbStyles
74
+ );
75
+ var overlayInputVertical = cn(
76
+ "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",
77
+ "[writing-mode:bt-lr] [-webkit-appearance:slider-vertical] appearance-none",
78
+ "focus:outline-none focus-visible:outline-none",
79
+ "disabled:pointer-events-none disabled:cursor-not-allowed",
80
+ "[&::-webkit-slider-runnable-track]:w-1 [&::-webkit-slider-runnable-track]:h-full [&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:bg-transparent",
81
+ "[&::-webkit-slider-thumb]:ml-[-4px]",
82
+ "[&::-moz-range-track]:w-1 [&::-moz-range-track]:h-full [&::-moz-range-track]:rounded-full [&::-moz-range-track]:bg-transparent",
83
+ "[&::-moz-range-progress]:w-1 [&::-moz-range-progress]:bg-transparent",
84
+ overlayThumbStyles
85
+ );
86
+ var multiThumbInputHorizontal = overlayInputHorizontal;
87
+ var multiThumbInputVertical = overlayInputVertical;
88
+ var pct = (v, min, max) => {
89
+ const span = max - min || 1;
90
+ return Math.min(100, Math.max(0, (v - min) / span * 100));
91
+ };
92
+ function applySingleHorizontalRangeFill(el, fillPercent) {
93
+ el.style.left = SLIDER_THUMB_HALF;
94
+ el.style.right = `calc(${SLIDER_THUMB_HALF} + (100% - ${SLIDER_THUMB_FULL}) * ${(100 - fillPercent) / 100})`;
95
+ }
96
+ function applySingleVerticalRangeFill(el, fillPercent) {
97
+ el.style.bottom = SLIDER_THUMB_HALF;
98
+ el.style.height = `calc((100% - ${SLIDER_THUMB_FULL}) * ${fillPercent} / 100)`;
99
+ }
100
+ var Slider = ({
101
+ defaultValue = 50,
102
+ value: controlledValue,
103
+ onInput,
104
+ onValueChange,
105
+ onValueCommit,
106
+ onChange: userOnChange,
107
+ onPointerDown: userPointerDown,
108
+ class: className,
109
+ min: minProp,
110
+ max: maxProp,
111
+ step: stepProp,
112
+ disabled,
113
+ orientation = "horizontal",
114
+ id,
115
+ /** Applied to the native range input(s). Kept out of `rest` so `{...rest}` cannot wipe stacking/pointer rules on multi-thumb. */
116
+ style: inputStyleProp,
117
+ ...rest
118
+ }) => {
119
+ const minValue = toNumber(minProp, 0);
120
+ const maxValue = toNumber(maxProp, 100);
121
+ const stepValue = toNumber(stepProp, 1);
122
+ const localValues = useMemo(
123
+ () => signal(
124
+ enforceOrder(
125
+ normalizeIncoming(defaultValue, 50, minValue, maxValue),
126
+ minValue,
127
+ maxValue,
128
+ stepValue
129
+ )
130
+ ),
131
+ []
132
+ );
133
+ const isControlled = controlledValue !== void 0;
134
+ const values = isControlled ? enforceOrder(
135
+ normalizeIncoming(controlledValue, 50, minValue, maxValue),
136
+ minValue,
137
+ maxValue,
138
+ stepValue
139
+ ) : localValues.value;
140
+ const onValueChangeRef = useRef(onValueChange);
141
+ onValueChangeRef.current = onValueChange;
142
+ const localValuesRef = useRef(localValues);
143
+ localValuesRef.current = localValues;
144
+ const isControlledRef = useRef(isControlled);
145
+ isControlledRef.current = isControlled;
146
+ const singleRangeHorizontalRef = useRef(null);
147
+ const singleRangeVerticalRef = useRef(null);
148
+ const singleThumbInputRef = useRef(null);
149
+ const [dragging, setDragging] = useState(false);
150
+ const [dragDraft, setDragDraft] = useState(null);
151
+ const emitValueChange = useCallback((payload) => {
152
+ onValueChangeRef.current?.(payload);
153
+ }, []);
154
+ useEffect(() => {
155
+ if (!dragging) return;
156
+ const end = () => {
157
+ setDragging(false);
158
+ };
159
+ window.addEventListener("pointerup", end);
160
+ window.addEventListener("pointercancel", end);
161
+ return () => {
162
+ window.removeEventListener("pointerup", end);
163
+ window.removeEventListener("pointercancel", end);
164
+ };
165
+ }, [dragging]);
166
+ const singleThumbProp = values.length === 1 ? values[0] : null;
167
+ useLayoutEffect(() => {
168
+ if (!isControlled || dragging || singleThumbProp === null) return;
169
+ const el = singleThumbInputRef.current;
170
+ if (!el || el.disabled) return;
171
+ const next = String(singleThumbProp);
172
+ if (el.value !== next) el.value = next;
173
+ }, [isControlled, dragging, singleThumbProp, minValue, maxValue, stepValue, disabled]);
174
+ const setValues = (next) => {
175
+ const ordered = enforceOrder(next, minValue, maxValue, stepValue);
176
+ if (!isControlled) localValues.value = ordered;
177
+ emitValueChange(ordered);
178
+ };
179
+ const [topIndex, setTopIndex] = useState(0);
180
+ const sliderRootRef = useRef(null);
181
+ const updateClosestThumbFromPointer = useCallback(
182
+ (clientX, clientY) => {
183
+ if (disabled || dragging) return;
184
+ if (values.length < 2) return;
185
+ const root = sliderRootRef.current;
186
+ if (!root) return;
187
+ const rect = root.getBoundingClientRect();
188
+ if (rect.width <= 0 || rect.height <= 0) return;
189
+ const span = maxValue - minValue || 1;
190
+ let approx;
191
+ if (orientation === "vertical") {
192
+ const ratio = Math.min(1, Math.max(0, (rect.bottom - clientY) / rect.height));
193
+ approx = minValue + ratio * span;
194
+ } else {
195
+ const ratio = Math.min(1, Math.max(0, (clientX - rect.left) / rect.width));
196
+ approx = minValue + ratio * span;
197
+ }
198
+ let closest = 0;
199
+ let best = Infinity;
200
+ for (let i = 0; i < values.length; i++) {
201
+ const d = Math.abs(values[i] - approx);
202
+ if (d < best) {
203
+ best = d;
204
+ closest = i;
205
+ }
206
+ }
207
+ setTopIndex((prev) => prev === closest ? prev : closest);
208
+ },
209
+ [disabled, dragging, orientation, minValue, maxValue, values]
210
+ );
211
+ if (values.length === 1) {
212
+ const resolvedValue = values[0];
213
+ const displayValue = isControlled && dragDraft !== null ? dragDraft : resolvedValue;
214
+ const safeRange = maxValue - minValue || 1;
215
+ const fillPercent = Math.min(100, Math.max(0, (displayValue - minValue) / safeRange * 100));
216
+ const isVertical2 = orientation === "vertical";
217
+ if (isVertical2) {
218
+ return /* @__PURE__ */ jsxs(
219
+ "span",
220
+ {
221
+ "data-slot": "slider",
222
+ dir: "ltr",
223
+ "data-orientation": "vertical",
224
+ "aria-disabled": disabled,
225
+ "data-disabled": disabled ? "" : void 0,
226
+ "data-dragging": dragging ? "" : void 0,
227
+ class: cn(
228
+ "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",
229
+ className
230
+ ),
231
+ children: [
232
+ /* @__PURE__ */ jsx(
233
+ "span",
234
+ {
235
+ "data-slot": "slider-track",
236
+ "data-orientation": "vertical",
237
+ class: "pointer-events-none absolute left-1/2 top-[0.375rem] bottom-[0.375rem] w-1 -translate-x-1/2 rounded-full bg-muted",
238
+ "aria-hidden": "true"
239
+ }
240
+ ),
241
+ /* @__PURE__ */ jsx(
242
+ "span",
243
+ {
244
+ ref: singleRangeVerticalRef,
245
+ "data-slot": "slider-range",
246
+ "data-orientation": "vertical",
247
+ class: "pointer-events-none absolute left-1/2 w-1 -translate-x-1/2 rounded-full bg-black select-none dark:bg-zinc-200",
248
+ style: {
249
+ bottom: SLIDER_THUMB_HALF,
250
+ height: `calc((100% - ${SLIDER_THUMB_FULL}) * ${fillPercent} / 100)`
251
+ },
252
+ "aria-hidden": "true"
253
+ }
254
+ ),
255
+ /* @__PURE__ */ jsx(
256
+ "input",
257
+ {
258
+ ...rest,
259
+ ref: singleThumbInputRef,
260
+ type: "range",
261
+ "data-slot": "slider-thumb",
262
+ orient: "vertical",
263
+ id,
264
+ min: minValue,
265
+ max: maxValue,
266
+ step: stepValue,
267
+ disabled,
268
+ ...!isControlled ? { value: displayValue } : {},
269
+ class: overlayInputVertical,
270
+ style: inputStyleProp,
271
+ onPointerDown: (e) => {
272
+ if (!disabled) {
273
+ setDragging(true);
274
+ if (isControlled) setDragDraft(resolvedValue);
275
+ }
276
+ userPointerDown?.(e);
277
+ },
278
+ onInput: (event) => {
279
+ const n2 = Number(event.currentTarget.value);
280
+ const fp = pct(n2, minValue, maxValue);
281
+ const el = singleRangeVerticalRef.current;
282
+ if (el) applySingleVerticalRangeFill(el, fp);
283
+ if (isControlled) setDragDraft(n2);
284
+ else localValues.value = [n2];
285
+ emitValueChange([n2]);
286
+ onInput?.(event);
287
+ },
288
+ onChange: (e) => {
289
+ userOnChange?.(e);
290
+ const n2 = Number(e.currentTarget.value);
291
+ onValueCommit?.([n2]);
292
+ if (isControlled) setDragDraft(null);
293
+ }
294
+ }
295
+ )
296
+ ]
297
+ }
298
+ );
299
+ }
300
+ return /* @__PURE__ */ jsxs(
301
+ "span",
302
+ {
303
+ "data-slot": "slider",
304
+ dir: "ltr",
305
+ "data-orientation": "horizontal",
306
+ "aria-disabled": disabled,
307
+ "data-disabled": disabled ? "" : void 0,
308
+ "data-dragging": dragging ? "" : void 0,
309
+ class: cn(
310
+ "group relative flex h-6 w-full shrink-0 touch-none select-none items-center data-[disabled]:opacity-50",
311
+ className
312
+ ),
313
+ children: [
314
+ /* @__PURE__ */ jsx(
315
+ "span",
316
+ {
317
+ "data-slot": "slider-track",
318
+ "data-orientation": "horizontal",
319
+ class: "pointer-events-none absolute top-1/2 left-[0.375rem] right-[0.375rem] h-1 -translate-y-1/2 rounded-full bg-muted",
320
+ "aria-hidden": "true"
321
+ }
322
+ ),
323
+ /* @__PURE__ */ jsx(
324
+ "span",
325
+ {
326
+ ref: singleRangeHorizontalRef,
327
+ "data-slot": "slider-range",
328
+ "data-orientation": "horizontal",
329
+ class: "pointer-events-none absolute top-1/2 h-1 -translate-y-1/2 rounded-full bg-black select-none dark:bg-zinc-200",
330
+ style: {
331
+ left: SLIDER_THUMB_HALF,
332
+ right: `calc(${SLIDER_THUMB_HALF} + (100% - ${SLIDER_THUMB_FULL}) * ${(100 - fillPercent) / 100})`
333
+ },
334
+ "aria-hidden": "true"
335
+ }
336
+ ),
337
+ /* @__PURE__ */ jsx(
338
+ "input",
339
+ {
340
+ ...rest,
341
+ ref: singleThumbInputRef,
342
+ type: "range",
343
+ "data-slot": "slider-thumb",
344
+ id,
345
+ min: minValue,
346
+ max: maxValue,
347
+ step: stepValue,
348
+ disabled,
349
+ ...!isControlled ? { value: displayValue } : {},
350
+ class: overlayInputHorizontal,
351
+ style: inputStyleProp,
352
+ onPointerDown: (e) => {
353
+ if (!disabled) {
354
+ setDragging(true);
355
+ if (isControlled) setDragDraft(resolvedValue);
356
+ }
357
+ userPointerDown?.(e);
358
+ },
359
+ onInput: (event) => {
360
+ const n2 = Number(event.currentTarget.value);
361
+ const fp = pct(n2, minValue, maxValue);
362
+ const el = singleRangeHorizontalRef.current;
363
+ if (el) applySingleHorizontalRangeFill(el, fp);
364
+ if (isControlled) setDragDraft(n2);
365
+ else localValues.value = [n2];
366
+ emitValueChange([n2]);
367
+ onInput?.(event);
368
+ },
369
+ onChange: (e) => {
370
+ userOnChange?.(e);
371
+ const n2 = Number(e.currentTarget.value);
372
+ onValueCommit?.([n2]);
373
+ if (isControlled) setDragDraft(null);
374
+ }
375
+ }
376
+ )
377
+ ]
378
+ }
379
+ );
380
+ }
381
+ const isVertical = orientation === "vertical";
382
+ const n = values.length;
383
+ const onThumbInput = (i, event) => {
384
+ const raw = Number(event.currentTarget.value);
385
+ const next = [...values];
386
+ next[i] = raw;
387
+ setValues(next);
388
+ onInput?.(event);
389
+ };
390
+ const onThumbChange = (i, event) => {
391
+ if (i === 0) userOnChange?.(event);
392
+ const raw = Number(event.currentTarget.value);
393
+ const next = [...values];
394
+ next[i] = raw;
395
+ onValueCommit?.(enforceOrder(next, minValue, maxValue, stepValue));
396
+ };
397
+ const trackAndFills = isVertical ? /* @__PURE__ */ jsxs(Fragment, { children: [
398
+ /* @__PURE__ */ jsx(
399
+ "div",
400
+ {
401
+ "data-slot": "slider-track",
402
+ "data-orientation": "vertical",
403
+ class: "pointer-events-none absolute left-1/2 top-[0.375rem] bottom-[0.375rem] w-1 -translate-x-1/2 rounded-full bg-muted",
404
+ "aria-hidden": "true"
405
+ }
406
+ ),
407
+ values.map((v, i) => {
408
+ if (i === n - 1) return null;
409
+ const lo = v;
410
+ const hi = values[i + 1];
411
+ const pLo = pct(lo, minValue, maxValue);
412
+ const pHi = pct(hi, minValue, maxValue);
413
+ return /* @__PURE__ */ jsx(
414
+ "div",
415
+ {
416
+ "data-slot": "slider-range",
417
+ "data-orientation": "vertical",
418
+ class: "pointer-events-none absolute left-1/2 w-1 -translate-x-1/2 rounded-full bg-black select-none dark:bg-zinc-200",
419
+ style: {
420
+ bottom: `calc(${SLIDER_THUMB_HALF} + (100% - ${SLIDER_THUMB_FULL}) * ${pLo} / 100)`,
421
+ height: `calc((100% - ${SLIDER_THUMB_FULL}) * ${Math.max(0, pHi - pLo)} / 100)`
422
+ },
423
+ "aria-hidden": "true"
424
+ },
425
+ `fill-${i}`
426
+ );
427
+ })
428
+ ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
429
+ /* @__PURE__ */ jsx(
430
+ "div",
431
+ {
432
+ "data-slot": "slider-track",
433
+ "data-orientation": "horizontal",
434
+ class: "pointer-events-none absolute top-1/2 left-[0.375rem] right-[0.375rem] h-1 -translate-y-1/2 rounded-full bg-muted",
435
+ "aria-hidden": "true"
436
+ }
437
+ ),
438
+ values.map((v, i) => {
439
+ if (i === n - 1) return null;
440
+ const lo = v;
441
+ const hi = values[i + 1];
442
+ const pLo = pct(lo, minValue, maxValue);
443
+ const pHi = pct(hi, minValue, maxValue);
444
+ return /* @__PURE__ */ jsx(
445
+ "div",
446
+ {
447
+ "data-slot": "slider-range",
448
+ "data-orientation": "horizontal",
449
+ class: "pointer-events-none absolute top-1/2 h-1 -translate-y-1/2 rounded-full bg-black select-none dark:bg-zinc-200",
450
+ style: {
451
+ left: `calc(${SLIDER_THUMB_HALF} + (100% - ${SLIDER_THUMB_FULL}) * ${pLo} / 100)`,
452
+ width: `calc((100% - ${SLIDER_THUMB_FULL}) * ${Math.max(0, pHi - pLo)} / 100)`
453
+ },
454
+ "aria-hidden": "true"
455
+ },
456
+ `fill-${i}`
457
+ );
458
+ })
459
+ ] });
460
+ const rootClass = cn(
461
+ "group relative touch-none select-none data-[disabled]:opacity-50",
462
+ isVertical ? "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" : "flex h-6 w-full shrink-0 items-center",
463
+ className
464
+ );
465
+ const inputLayerClass = "absolute inset-0 min-h-0 min-w-0";
466
+ const perInputClass = () => isVertical ? multiThumbInputVertical : multiThumbInputHorizontal;
467
+ return /* @__PURE__ */ jsxs(
468
+ "span",
469
+ {
470
+ ref: sliderRootRef,
471
+ "data-slot": "slider",
472
+ id,
473
+ dir: "ltr",
474
+ "data-orientation": isVertical ? "vertical" : "horizontal",
475
+ "aria-disabled": disabled,
476
+ "data-disabled": disabled ? "" : void 0,
477
+ "data-dragging": dragging ? "" : void 0,
478
+ class: rootClass,
479
+ role: "group",
480
+ onPointerEnter: (e) => updateClosestThumbFromPointer(e.clientX, e.clientY),
481
+ onPointerMove: (e) => updateClosestThumbFromPointer(e.clientX, e.clientY),
482
+ children: [
483
+ trackAndFills,
484
+ /* @__PURE__ */ jsx("span", { class: inputLayerClass, children: values.map((v, i) => /* @__PURE__ */ jsx(
485
+ "input",
486
+ {
487
+ ...i === 0 ? rest : {},
488
+ type: "range",
489
+ "data-slot": "slider-thumb",
490
+ orient: isVertical ? "vertical" : void 0,
491
+ min: minValue,
492
+ max: maxValue,
493
+ step: stepValue,
494
+ disabled,
495
+ value: v,
496
+ style: {
497
+ ...typeof inputStyleProp === "object" && inputStyleProp !== null && !Array.isArray(inputStyleProp) ? inputStyleProp : {},
498
+ zIndex: topIndex === i ? 3 : 2,
499
+ pointerEvents: disabled ? void 0 : topIndex === i ? "auto" : "none"
500
+ },
501
+ class: perInputClass(),
502
+ onInput: (e) => onThumbInput(i, e),
503
+ onChange: (e) => onThumbChange(i, e),
504
+ onPointerDown: (e) => {
505
+ if (!disabled) setDragging(true);
506
+ setTopIndex(i);
507
+ if (i === 0) userPointerDown?.(e);
508
+ },
509
+ onFocus: () => setTopIndex(i),
510
+ "aria-label": n > 1 ? `Value ${i + 1} of ${n}` : void 0
511
+ },
512
+ i
513
+ )) })
514
+ ]
515
+ }
516
+ );
517
+ };
518
+
519
+ // src/components/slider/index.ts
520
+ var slider_default = Slider;
521
+
522
+ export { Slider, slider_default };
523
+ //# sourceMappingURL=chunk-L42B6QZS.js.map
524
+ //# sourceMappingURL=chunk-L42B6QZS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/slider/Slider.tsx","../src/components/slider/index.ts"],"names":["isVertical","n"],"mappings":"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","file":"chunk-L42B6QZS.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\" && inputStyleProp !== null && !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"]}