@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.
- package/LICENSE.md +9 -0
- package/dist/Accordion-D1PiNspd.d.ts +39 -0
- package/dist/AlertDialog-CpnCfDdN.d.ts +64 -0
- package/dist/Button-tRKMr8-H.d.ts +84 -0
- package/dist/CalendarDateTimePanel-B3J8OlSc.d.ts +79 -0
- package/dist/Carousel-DvlcMPpB.d.ts +41 -0
- package/dist/Chart-Ax22S5_N.d.ts +10 -0
- package/dist/Checkbox-DBbLYq6Q.d.ts +12 -0
- package/dist/Collapsible-DSZCp0tm.d.ts +34 -0
- package/dist/ComboboxInlineInput-CB7CEXzy.d.ts +135 -0
- package/dist/CommandSeparator-pJQnB9Lu.d.ts +47 -0
- package/dist/DataTable-zNTTdYVU.d.ts +13 -0
- package/dist/DatePicker-AFAYh5Ca.d.ts +20 -0
- package/dist/Dialog-CqCI4s9U.d.ts +28 -0
- package/dist/DialogContent-9VJGDt5l.d.ts +24 -0
- package/dist/DialogHeader-CYT7iUDq.d.ts +13 -0
- package/dist/DialogTitle-CvcRlZ_Z.d.ts +13 -0
- package/dist/Direction-25ZOt0gW.d.ts +24 -0
- package/dist/Drawer-BOPihYBJ.d.ts +41 -0
- package/dist/Dropdown-uPFaMqkB.d.ts +143 -0
- package/dist/EmptyTitle-J8rVLcJ3.d.ts +59 -0
- package/dist/FieldTitle-aSgThW-B.d.ts +100 -0
- package/dist/HoverCard-OSnOE6pE.d.ts +52 -0
- package/dist/Input-Cem05el9.d.ts +27 -0
- package/dist/Menubar-DwYDW4w2.d.ts +88 -0
- package/dist/PopoverTrigger-B6kK73gh.d.ts +43 -0
- package/dist/Progress-BGij8Hob.d.ts +13 -0
- package/dist/RadioGroup-BaElzLwa.d.ts +40 -0
- package/dist/ScrollArea-B-vILe3g.d.ts +16 -0
- package/dist/Select-B_mNVh70.d.ts +51 -0
- package/dist/Separator-DCQYrnpB.d.ts +9 -0
- package/dist/Sheet-B41Emmis.d.ts +29 -0
- package/dist/SidebarProvider-IAihmyD7.d.ts +46 -0
- package/dist/Slider-BQLMBpYs.d.ts +16 -0
- package/dist/Switch-CTTkNdqF.d.ts +31 -0
- package/dist/Tabs-DFJR_P2D.d.ts +47 -0
- package/dist/Textarea-DbKkduOG.d.ts +27 -0
- package/dist/ThemeToggle-DfiEM1dZ.d.ts +9 -0
- package/dist/Toggle-CseZl7XN.d.ts +49 -0
- package/dist/ToggleGroup-UeYHzQe7.d.ts +137 -0
- package/dist/Tooltip-BtRWVyCA.d.ts +40 -0
- package/dist/Typography-ccTtE182.d.ts +64 -0
- package/dist/chunk-2UHCXHAX.js +119 -0
- package/dist/chunk-2UHCXHAX.js.map +1 -0
- package/dist/chunk-2XNWLXG2.js +12 -0
- package/dist/chunk-2XNWLXG2.js.map +1 -0
- package/dist/chunk-3EHH62ZA.js +175 -0
- package/dist/chunk-3EHH62ZA.js.map +1 -0
- package/dist/chunk-3GKUUTSA.js +586 -0
- package/dist/chunk-3GKUUTSA.js.map +1 -0
- package/dist/chunk-3IT2RVO6.js +151 -0
- package/dist/chunk-3IT2RVO6.js.map +1 -0
- package/dist/chunk-3WAPI4KR.js +36 -0
- package/dist/chunk-3WAPI4KR.js.map +1 -0
- package/dist/chunk-44YLIQIS.js +15 -0
- package/dist/chunk-44YLIQIS.js.map +1 -0
- package/dist/chunk-4AJM7IA4.js +9 -0
- package/dist/chunk-4AJM7IA4.js.map +1 -0
- package/dist/chunk-4HX6SEWP.js +24 -0
- package/dist/chunk-4HX6SEWP.js.map +1 -0
- package/dist/chunk-6FTWMOHU.js +478 -0
- package/dist/chunk-6FTWMOHU.js.map +1 -0
- package/dist/chunk-6ZXYDBPR.js +304 -0
- package/dist/chunk-6ZXYDBPR.js.map +1 -0
- package/dist/chunk-7E2ZPDVI.js +224 -0
- package/dist/chunk-7E2ZPDVI.js.map +1 -0
- package/dist/chunk-7HZUM5ZQ.js +85 -0
- package/dist/chunk-7HZUM5ZQ.js.map +1 -0
- package/dist/chunk-7MECYLKS.js +375 -0
- package/dist/chunk-7MECYLKS.js.map +1 -0
- package/dist/chunk-7TDS7TC6.js +49 -0
- package/dist/chunk-7TDS7TC6.js.map +1 -0
- package/dist/chunk-7ZXJRNJO.js +26 -0
- package/dist/chunk-7ZXJRNJO.js.map +1 -0
- package/dist/chunk-AVCG4W6D.js +122 -0
- package/dist/chunk-AVCG4W6D.js.map +1 -0
- package/dist/chunk-BF3F5SJX.js +89 -0
- package/dist/chunk-BF3F5SJX.js.map +1 -0
- package/dist/chunk-BHMKSFES.js +195 -0
- package/dist/chunk-BHMKSFES.js.map +1 -0
- package/dist/chunk-BMF5SGYP.js +45 -0
- package/dist/chunk-BMF5SGYP.js.map +1 -0
- package/dist/chunk-D25ZQ36E.js +273 -0
- package/dist/chunk-D25ZQ36E.js.map +1 -0
- package/dist/chunk-D5W5YHJZ.js +426 -0
- package/dist/chunk-D5W5YHJZ.js.map +1 -0
- package/dist/chunk-DHBILREV.js +70 -0
- package/dist/chunk-DHBILREV.js.map +1 -0
- package/dist/chunk-DJ4PFETN.js +17 -0
- package/dist/chunk-DJ4PFETN.js.map +1 -0
- package/dist/chunk-DKXUKLZT.js +342 -0
- package/dist/chunk-DKXUKLZT.js.map +1 -0
- package/dist/chunk-EL2HT25C.js +9 -0
- package/dist/chunk-EL2HT25C.js.map +1 -0
- package/dist/chunk-FDNPBI2Z.js +26 -0
- package/dist/chunk-FDNPBI2Z.js.map +1 -0
- package/dist/chunk-FWCN47RC.js +65 -0
- package/dist/chunk-FWCN47RC.js.map +1 -0
- package/dist/chunk-G6PBJZYF.js +114 -0
- package/dist/chunk-G6PBJZYF.js.map +1 -0
- package/dist/chunk-GFF5OT46.js +80 -0
- package/dist/chunk-GFF5OT46.js.map +1 -0
- package/dist/chunk-GLWYIUE5.js +242 -0
- package/dist/chunk-GLWYIUE5.js.map +1 -0
- package/dist/chunk-HEQRODRF.js +110 -0
- package/dist/chunk-HEQRODRF.js.map +1 -0
- package/dist/chunk-HGTFOOUL.js +61 -0
- package/dist/chunk-HGTFOOUL.js.map +1 -0
- package/dist/chunk-HNESOMVN.js +18 -0
- package/dist/chunk-HNESOMVN.js.map +1 -0
- package/dist/chunk-I2PR3HXC.js +51 -0
- package/dist/chunk-I2PR3HXC.js.map +1 -0
- package/dist/chunk-IGGEBO7K.js +8 -0
- package/dist/chunk-IGGEBO7K.js.map +1 -0
- package/dist/chunk-J2Z2LSXM.js +26 -0
- package/dist/chunk-J2Z2LSXM.js.map +1 -0
- package/dist/chunk-JC7JMWSH.js +109 -0
- package/dist/chunk-JC7JMWSH.js.map +1 -0
- package/dist/chunk-JZRMLE4X.js +77 -0
- package/dist/chunk-JZRMLE4X.js.map +1 -0
- package/dist/chunk-KBXDU3G4.js +382 -0
- package/dist/chunk-KBXDU3G4.js.map +1 -0
- package/dist/chunk-KF34SFFZ.js +18 -0
- package/dist/chunk-KF34SFFZ.js.map +1 -0
- package/dist/chunk-L42B6QZS.js +524 -0
- package/dist/chunk-L42B6QZS.js.map +1 -0
- package/dist/chunk-LGO5HXMG.js +592 -0
- package/dist/chunk-LGO5HXMG.js.map +1 -0
- package/dist/chunk-LVK44RMS.js +78 -0
- package/dist/chunk-LVK44RMS.js.map +1 -0
- package/dist/chunk-N2LRB6TA.js +8 -0
- package/dist/chunk-N2LRB6TA.js.map +1 -0
- package/dist/chunk-NHTY2HD2.js +8 -0
- package/dist/chunk-NHTY2HD2.js.map +1 -0
- package/dist/chunk-NJUXP5FM.js +392 -0
- package/dist/chunk-NJUXP5FM.js.map +1 -0
- package/dist/chunk-NPHECLV5.js +94 -0
- package/dist/chunk-NPHECLV5.js.map +1 -0
- package/dist/chunk-NXVAR6P2.js +79 -0
- package/dist/chunk-NXVAR6P2.js.map +1 -0
- package/dist/chunk-OMXWBB67.js +9 -0
- package/dist/chunk-OMXWBB67.js.map +1 -0
- package/dist/chunk-PE5QQIV5.js +69 -0
- package/dist/chunk-PE5QQIV5.js.map +1 -0
- package/dist/chunk-QAUGWXGJ.js +158 -0
- package/dist/chunk-QAUGWXGJ.js.map +1 -0
- package/dist/chunk-QCYFSBZ7.js +81 -0
- package/dist/chunk-QCYFSBZ7.js.map +1 -0
- package/dist/chunk-QJT5UAL2.js +714 -0
- package/dist/chunk-QJT5UAL2.js.map +1 -0
- package/dist/chunk-QRLVOM3E.js +83 -0
- package/dist/chunk-QRLVOM3E.js.map +1 -0
- package/dist/chunk-RBVGV7VO.js +26 -0
- package/dist/chunk-RBVGV7VO.js.map +1 -0
- package/dist/chunk-RD6VXGVY.js +340 -0
- package/dist/chunk-RD6VXGVY.js.map +1 -0
- package/dist/chunk-RSPI2A4W.js +106 -0
- package/dist/chunk-RSPI2A4W.js.map +1 -0
- package/dist/chunk-RT26RZ7W.js +79 -0
- package/dist/chunk-RT26RZ7W.js.map +1 -0
- package/dist/chunk-RXAIDZ33.js +522 -0
- package/dist/chunk-RXAIDZ33.js.map +1 -0
- package/dist/chunk-S6TO62GJ.js +53 -0
- package/dist/chunk-S6TO62GJ.js.map +1 -0
- package/dist/chunk-SJ5MYJ7L.js +283 -0
- package/dist/chunk-SJ5MYJ7L.js.map +1 -0
- package/dist/chunk-SZ2I2SRP.js +156 -0
- package/dist/chunk-SZ2I2SRP.js.map +1 -0
- package/dist/chunk-UGOQKTHL.js +23 -0
- package/dist/chunk-UGOQKTHL.js.map +1 -0
- package/dist/chunk-UGQ756Z6.js +92 -0
- package/dist/chunk-UGQ756Z6.js.map +1 -0
- package/dist/chunk-UNPCAFLS.js +22 -0
- package/dist/chunk-UNPCAFLS.js.map +1 -0
- package/dist/chunk-V27UIXBD.js +36 -0
- package/dist/chunk-V27UIXBD.js.map +1 -0
- package/dist/chunk-VB5LDR7C.js +97 -0
- package/dist/chunk-VB5LDR7C.js.map +1 -0
- package/dist/chunk-VJ26PA3U.js +9 -0
- package/dist/chunk-VJ26PA3U.js.map +1 -0
- package/dist/chunk-VKB4VUN7.js +164 -0
- package/dist/chunk-VKB4VUN7.js.map +1 -0
- package/dist/chunk-Y37OHTAO.js +208 -0
- package/dist/chunk-Y37OHTAO.js.map +1 -0
- package/dist/chunk-Y4OW24IS.js +18 -0
- package/dist/chunk-Y4OW24IS.js.map +1 -0
- package/dist/chunk-YDMMDO2W.js +141 -0
- package/dist/chunk-YDMMDO2W.js.map +1 -0
- package/dist/chunk-YENXORWK.js +9 -0
- package/dist/chunk-YENXORWK.js.map +1 -0
- package/dist/chunk-YLTIB224.js +76 -0
- package/dist/chunk-YLTIB224.js.map +1 -0
- package/dist/chunk-YVA6PAML.js +63 -0
- package/dist/chunk-YVA6PAML.js.map +1 -0
- package/dist/chunk-YWUMX4JR.js +9 -0
- package/dist/chunk-YWUMX4JR.js.map +1 -0
- package/dist/chunk-ZDXR2SWG.js +32 -0
- package/dist/chunk-ZDXR2SWG.js.map +1 -0
- package/dist/chunk-ZIFL6GXH.js +187 -0
- package/dist/chunk-ZIFL6GXH.js.map +1 -0
- package/dist/chunk-ZM4VJOGF.js +40 -0
- package/dist/chunk-ZM4VJOGF.js.map +1 -0
- package/dist/chunk-ZVKIJLNO.js +9 -0
- package/dist/chunk-ZVKIJLNO.js.map +1 -0
- package/dist/components/accordion/index.d.ts +12 -0
- package/dist/components/accordion/index.js +4 -0
- package/dist/components/accordion/index.js.map +1 -0
- package/dist/components/alert/index.d.ts +64 -0
- package/dist/components/alert/index.js +4 -0
- package/dist/components/alert/index.js.map +1 -0
- package/dist/components/alert-dialog/index.d.ts +22 -0
- package/dist/components/alert-dialog/index.js +9 -0
- package/dist/components/alert-dialog/index.js.map +1 -0
- package/dist/components/aspect-ratio/index.d.ts +11 -0
- package/dist/components/aspect-ratio/index.js +4 -0
- package/dist/components/aspect-ratio/index.js.map +1 -0
- package/dist/components/avatar/index.d.ts +53 -0
- package/dist/components/avatar/index.js +4 -0
- package/dist/components/avatar/index.js.map +1 -0
- package/dist/components/badge/index.d.ts +175 -0
- package/dist/components/badge/index.js +4 -0
- package/dist/components/badge/index.js.map +1 -0
- package/dist/components/breadcrumb/index.d.ts +38 -0
- package/dist/components/breadcrumb/index.js +4 -0
- package/dist/components/breadcrumb/index.js.map +1 -0
- package/dist/components/button/index.d.ts +72 -0
- package/dist/components/button/index.js +5 -0
- package/dist/components/button/index.js.map +1 -0
- package/dist/components/button-group/index.d.ts +21 -0
- package/dist/components/button-group/index.js +4 -0
- package/dist/components/button-group/index.js.map +1 -0
- package/dist/components/calendar/index.d.ts +7 -0
- package/dist/components/calendar/index.js +12 -0
- package/dist/components/calendar/index.js.map +1 -0
- package/dist/components/card/index.d.ts +80 -0
- package/dist/components/card/index.js +3 -0
- package/dist/components/card/index.js.map +1 -0
- package/dist/components/carousel/index.d.ts +14 -0
- package/dist/components/carousel/index.js +5 -0
- package/dist/components/carousel/index.js.map +1 -0
- package/dist/components/chart/index.d.ts +6 -0
- package/dist/components/chart/index.js +4 -0
- package/dist/components/chart/index.js.map +1 -0
- package/dist/components/checkbox/index.d.ts +7 -0
- package/dist/components/checkbox/index.js +4 -0
- package/dist/components/checkbox/index.js.map +1 -0
- package/dist/components/collapsible/index.d.ts +11 -0
- package/dist/components/collapsible/index.js +4 -0
- package/dist/components/collapsible/index.js.map +1 -0
- package/dist/components/combobox/index.d.ts +13 -0
- package/dist/components/combobox/index.js +7 -0
- package/dist/components/combobox/index.js.map +1 -0
- package/dist/components/command/index.d.ts +21 -0
- package/dist/components/command/index.js +10 -0
- package/dist/components/command/index.js.map +1 -0
- package/dist/components/context-menu/index.d.ts +114 -0
- package/dist/components/context-menu/index.js +5 -0
- package/dist/components/context-menu/index.js.map +1 -0
- package/dist/components/data-table/index.d.ts +6 -0
- package/dist/components/data-table/index.js +5 -0
- package/dist/components/data-table/index.js.map +1 -0
- package/dist/components/date-picker/index.d.ts +7 -0
- package/dist/components/date-picker/index.js +8 -0
- package/dist/components/date-picker/index.js.map +1 -0
- package/dist/components/dialog/index.d.ts +22 -0
- package/dist/components/dialog/index.js +8 -0
- package/dist/components/dialog/index.js.map +1 -0
- package/dist/components/direction/index.d.ts +7 -0
- package/dist/components/direction/index.js +4 -0
- package/dist/components/direction/index.js.map +1 -0
- package/dist/components/drawer/index.d.ts +19 -0
- package/dist/components/drawer/index.js +8 -0
- package/dist/components/drawer/index.js.map +1 -0
- package/dist/components/dropdown/index.d.ts +24 -0
- package/dist/components/dropdown/index.js +5 -0
- package/dist/components/dropdown/index.js.map +1 -0
- package/dist/components/dropzone/index.d.ts +26 -0
- package/dist/components/dropzone/index.js +5 -0
- package/dist/components/dropzone/index.js.map +1 -0
- package/dist/components/empty/index.d.ts +8 -0
- package/dist/components/empty/index.js +4 -0
- package/dist/components/empty/index.js.map +1 -0
- package/dist/components/field/index.d.ts +8 -0
- package/dist/components/field/index.js +6 -0
- package/dist/components/field/index.js.map +1 -0
- package/dist/components/hover-card/index.d.ts +12 -0
- package/dist/components/hover-card/index.js +3 -0
- package/dist/components/hover-card/index.js.map +1 -0
- package/dist/components/image/index.d.ts +6 -0
- package/dist/components/image/index.js +4 -0
- package/dist/components/image/index.js.map +1 -0
- package/dist/components/input/index.d.ts +27 -0
- package/dist/components/input/index.js +4 -0
- package/dist/components/input/index.js.map +1 -0
- package/dist/components/input-group/index.d.ts +132 -0
- package/dist/components/input-group/index.js +7 -0
- package/dist/components/input-group/index.js.map +1 -0
- package/dist/components/input-otp/index.d.ts +39 -0
- package/dist/components/input-otp/index.js +4 -0
- package/dist/components/input-otp/index.js.map +1 -0
- package/dist/components/item/index.d.ts +108 -0
- package/dist/components/item/index.js +5 -0
- package/dist/components/item/index.js.map +1 -0
- package/dist/components/kbd/index.d.ts +31 -0
- package/dist/components/kbd/index.js +4 -0
- package/dist/components/kbd/index.js.map +1 -0
- package/dist/components/label/index.d.ts +49 -0
- package/dist/components/label/index.js +4 -0
- package/dist/components/label/index.js.map +1 -0
- package/dist/components/locale-segment-group/index.d.ts +15 -0
- package/dist/components/locale-segment-group/index.js +4 -0
- package/dist/components/locale-segment-group/index.js.map +1 -0
- package/dist/components/menubar/index.d.ts +23 -0
- package/dist/components/menubar/index.js +5 -0
- package/dist/components/menubar/index.js.map +1 -0
- package/dist/components/native-select/index.d.ts +89 -0
- package/dist/components/native-select/index.js +3 -0
- package/dist/components/native-select/index.js.map +1 -0
- package/dist/components/navigation-menu/index.d.ts +15 -0
- package/dist/components/navigation-menu/index.js +5 -0
- package/dist/components/navigation-menu/index.js.map +1 -0
- package/dist/components/pagination/index.d.ts +44 -0
- package/dist/components/pagination/index.js +5 -0
- package/dist/components/pagination/index.js.map +1 -0
- package/dist/components/popover/index.d.ts +76 -0
- package/dist/components/popover/index.js +5 -0
- package/dist/components/popover/index.js.map +1 -0
- package/dist/components/progress/index.d.ts +6 -0
- package/dist/components/progress/index.js +4 -0
- package/dist/components/progress/index.js.map +1 -0
- package/dist/components/prose/index.d.ts +8 -0
- package/dist/components/prose/index.js +4 -0
- package/dist/components/prose/index.js.map +1 -0
- package/dist/components/radio-group/index.d.ts +11 -0
- package/dist/components/radio-group/index.js +5 -0
- package/dist/components/radio-group/index.js.map +1 -0
- package/dist/components/scroll-area/index.d.ts +11 -0
- package/dist/components/scroll-area/index.js +4 -0
- package/dist/components/scroll-area/index.js.map +1 -0
- package/dist/components/select/index.d.ts +17 -0
- package/dist/components/select/index.js +5 -0
- package/dist/components/select/index.js.map +1 -0
- package/dist/components/selectable-card/index.d.ts +11 -0
- package/dist/components/selectable-card/index.js +5 -0
- package/dist/components/selectable-card/index.js.map +1 -0
- package/dist/components/separator/index.d.ts +24 -0
- package/dist/components/separator/index.js +4 -0
- package/dist/components/separator/index.js.map +1 -0
- package/dist/components/sheet/index.d.ts +20 -0
- package/dist/components/sheet/index.js +8 -0
- package/dist/components/sheet/index.js.map +1 -0
- package/dist/components/sidebar/index.d.ts +16 -0
- package/dist/components/sidebar/index.js +3 -0
- package/dist/components/sidebar/index.js.map +1 -0
- package/dist/components/skeleton/index.d.ts +52 -0
- package/dist/components/skeleton/index.js +3 -0
- package/dist/components/skeleton/index.js.map +1 -0
- package/dist/components/slider/index.d.ts +7 -0
- package/dist/components/slider/index.js +4 -0
- package/dist/components/slider/index.js.map +1 -0
- package/dist/components/sonner/index.d.ts +7 -0
- package/dist/components/sonner/index.js +3 -0
- package/dist/components/sonner/index.js.map +1 -0
- package/dist/components/spinner/index.d.ts +10 -0
- package/dist/components/spinner/index.js +4 -0
- package/dist/components/spinner/index.js.map +1 -0
- package/dist/components/switch/index.d.ts +7 -0
- package/dist/components/switch/index.js +4 -0
- package/dist/components/switch/index.js.map +1 -0
- package/dist/components/table/index.d.ts +45 -0
- package/dist/components/table/index.js +5 -0
- package/dist/components/table/index.js.map +1 -0
- package/dist/components/tabs/index.d.ts +13 -0
- package/dist/components/tabs/index.js +4 -0
- package/dist/components/tabs/index.js.map +1 -0
- package/dist/components/textarea/index.d.ts +27 -0
- package/dist/components/textarea/index.js +4 -0
- package/dist/components/textarea/index.js.map +1 -0
- package/dist/components/theme-toggle/index.d.ts +6 -0
- package/dist/components/theme-toggle/index.js +6 -0
- package/dist/components/theme-toggle/index.js.map +1 -0
- package/dist/components/toast/index.d.ts +27 -0
- package/dist/components/toast/index.js +3 -0
- package/dist/components/toast/index.js.map +1 -0
- package/dist/components/toggle/index.d.ts +7 -0
- package/dist/components/toggle/index.js +4 -0
- package/dist/components/toggle/index.js.map +1 -0
- package/dist/components/toggle-group/index.d.ts +11 -0
- package/dist/components/toggle-group/index.js +4 -0
- package/dist/components/toggle-group/index.js.map +1 -0
- package/dist/components/tooltip/index.d.ts +12 -0
- package/dist/components/tooltip/index.js +3 -0
- package/dist/components/tooltip/index.js.map +1 -0
- package/dist/components/typography/index.d.ts +8 -0
- package/dist/components/typography/index.js +4 -0
- package/dist/components/typography/index.js.map +1 -0
- package/dist/components/video/index.d.ts +8 -0
- package/dist/components/video/index.js +4 -0
- package/dist/components/video/index.js.map +1 -0
- package/dist/index.d.ts +82 -0
- package/dist/index.js +83 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/interactive/index.d.ts +34 -0
- package/dist/lib/interactive/index.js +3 -0
- package/dist/lib/interactive/index.js.map +1 -0
- package/dist/lib/signals/index.d.ts +15 -0
- package/dist/lib/signals/index.js +3 -0
- package/dist/lib/signals/index.js.map +1 -0
- package/dist/lib/utils.d.ts +5 -0
- package/dist/lib/utils.js +3 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/navigationMenuTriggerStyle-MrMOOgmr.d.ts +48 -0
- package/dist/sonner-store-Dfdxy8ba.d.ts +11 -0
- package/dist/theme.css +81 -0
- 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":";;;;;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,UAEF,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,4BACE,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,IAAY,cAAA,KAAmB,IAAA,IAAQ,CAAC,KAAA,CAAM,OAAA,CAAQ,cAAc,CAAA,GAC9F,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,UA3B1C;AAAA,SA6BR,CAAA,EACH;AAAA;AAAA;AAAA,GACF;AAEJ;;;AC1jBA,IAAO,cAAA,GAAQ","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"]}
|