@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 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/tooltip/Tooltip.tsx","../src/components/tooltip/TooltipContent.tsx","../src/components/tooltip/TooltipTrigger.tsx","../src/components/tooltip/index.ts"],"names":["useRef","useEffect","jsx","isValidElement","cloneElement"],"mappings":"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","file":"chunk-NJUXP5FM.js","sourcesContent":["import { signal } from \"@preact/signals\";\nimport { createContext } from \"preact\";\nimport { useContext, useEffect, useMemo, useRef } from \"preact/hooks\";\nimport type { ComponentChildren, JSX } from \"preact\";\n\ntype TooltipProviderContextValue = {\n delayDuration: number;\n closeDelayDuration: number;\n disableHoverableContent: boolean;\n};\n\nconst TooltipProviderContext = createContext<TooltipProviderContextValue | null>(null);\n\ntype TooltipContextValue = {\n open: ReturnType<typeof signal<boolean>>;\n contentId: ReturnType<typeof signal<string | undefined>>;\n disableHoverableContent: boolean;\n setOpen: (next: boolean) => void;\n openWithDelay: () => void;\n closeWithDelay: () => void;\n setContentId: (id: string | undefined) => void;\n cancelTimers: () => void;\n};\n\nconst TooltipContext = createContext<TooltipContextValue | null>(null);\n\nexport const useTooltip = () => {\n const context = useContext(TooltipContext);\n if (!context) throw new Error(\"Tooltip subcomponents must be used within Tooltip\");\n return context;\n};\n\nexport type TooltipProps = JSX.HTMLAttributes<HTMLDivElement> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (next: boolean) => void;\n delayDuration?: number;\n closeDelayDuration?: number;\n disableHoverableContent?: boolean;\n children?: ComponentChildren;\n};\n\nexport type TooltipProviderProps = {\n delayDuration?: number;\n closeDelayDuration?: number;\n disableHoverableContent?: boolean;\n children?: ComponentChildren;\n};\n\nexport const TooltipProvider = ({\n delayDuration = 250,\n closeDelayDuration = 120,\n disableHoverableContent = false,\n children\n}: TooltipProviderProps) => (\n <TooltipProviderContext.Provider value={{ delayDuration, closeDelayDuration, disableHoverableContent }}>\n {children}\n </TooltipProviderContext.Provider>\n);\n\nexport const Tooltip = ({\n defaultOpen = false,\n open: controlledOpen,\n onOpenChange,\n delayDuration,\n closeDelayDuration,\n disableHoverableContent,\n children,\n ...rest\n}: TooltipProps) => {\n const provider = useContext(TooltipProviderContext);\n const resolvedDelayDuration = delayDuration ?? provider?.delayDuration ?? 250;\n const resolvedCloseDelayDuration = closeDelayDuration ?? provider?.closeDelayDuration ?? 120;\n const resolvedDisableHoverableContent = disableHoverableContent ?? provider?.disableHoverableContent ?? false;\n const open = useMemo(() => signal(defaultOpen), []);\n const contentId = useMemo(() => signal<string | undefined>(undefined), []);\n const openTimerRef = useRef<number | null>(null);\n const closeTimerRef = useRef<number | null>(null);\n const { style, ...remainingProps } = rest;\n const isControlled = typeof controlledOpen === \"boolean\";\n\n useEffect(() => {\n if (isControlled) {\n open.value = controlledOpen;\n }\n }, [controlledOpen, isControlled, open]);\n\n const cancelTimers = () => {\n if (openTimerRef.current !== null) {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = null;\n }\n if (closeTimerRef.current !== null) {\n window.clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n }\n };\n\n const setOpen = (next: boolean) => {\n cancelTimers();\n if (isControlled) {\n onOpenChange?.(next);\n return;\n }\n open.value = next;\n onOpenChange?.(next);\n };\n\n const setContentId = (id: string | undefined) => {\n contentId.value = id;\n };\n\n const openWithDelay = () => {\n if (open.value) return;\n if (closeTimerRef.current !== null) {\n window.clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n }\n if (openTimerRef.current !== null) return;\n openTimerRef.current = window.setTimeout(() => {\n setOpen(true);\n openTimerRef.current = null;\n }, resolvedDelayDuration);\n };\n\n const closeWithDelay = () => {\n if (!open.value) return;\n if (openTimerRef.current !== null) {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = null;\n }\n if (closeTimerRef.current !== null) return;\n closeTimerRef.current = window.setTimeout(() => {\n setOpen(false);\n closeTimerRef.current = null;\n }, resolvedCloseDelayDuration);\n };\n\n useEffect(() => cancelTimers, []);\n\n const resolvedStyle =\n typeof style === \"object\" && style && !(\"value\" in style) ? (style as JSX.CSSProperties) : {};\n\n const mergedStyle: JSX.CSSProperties = {\n position: \"relative\",\n display: \"inline-flex\",\n ...resolvedStyle\n };\n\n return (\n <TooltipContext.Provider\n value={{\n open,\n contentId,\n disableHoverableContent: resolvedDisableHoverableContent,\n setOpen,\n openWithDelay,\n closeWithDelay,\n setContentId,\n cancelTimers\n }}\n >\n <div\n data-slot=\"tooltip\"\n data-state={open.value ? \"open\" : \"closed\"}\n data-delay-duration={resolvedDelayDuration}\n style={mergedStyle}\n onKeyDown={(event) => {\n if (event.key === \"Escape\") {\n setOpen(false);\n event.stopPropagation();\n }\n }}\n {...remainingProps}\n >\n {children}\n </div>\n </TooltipContext.Provider>\n );\n};\n\n","import { cloneElement, isValidElement, type ComponentChildren, type JSX } from \"preact\";\nimport { useEffect, useId, useLayoutEffect, useRef, useState } from \"preact/hooks\";\nimport { useTooltip } from \"./Tooltip\";\n\nexport type TooltipContentProps = JSX.HTMLAttributes<HTMLDivElement> & {\n asChild?: boolean;\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n align?: \"start\" | \"center\" | \"end\";\n sideOffset?: number;\n alignOffset?: number;\n collisionPadding?: number;\n forceMount?: boolean;\n children?: ComponentChildren;\n};\n\ntype TooltipContentCommonProps = JSX.HTMLAttributes<HTMLDivElement> & {\n \"data-slot\"?: string;\n \"data-state\"?: \"open\" | \"closed\";\n \"data-side\"?: NonNullable<TooltipContentProps[\"side\"]>;\n \"data-align\"?: NonNullable<TooltipContentProps[\"align\"]>;\n \"data-flip-animating\"?: \"true\" | \"false\";\n};\n\nexport const TooltipContent = ({\n asChild = false,\n side = \"top\",\n align = \"center\",\n sideOffset = 8,\n alignOffset = 0,\n collisionPadding = 8,\n forceMount = false,\n children,\n ...rest\n}: TooltipContentProps) => {\n const tooltip = useTooltip();\n const contentId = useId();\n const contentRef = useRef<HTMLElement | null>(null);\n const [resolvedSide, setResolvedSide] = useState(side);\n const prevSideRef = useRef(side);\n const flipTimerRef = useRef<number | null>(null);\n const [isFlipAnimating, setIsFlipAnimating] = useState(false);\n const [dynamicClamp, setDynamicClamp] = useState<JSX.CSSProperties>({});\n const [arrowStyle, setArrowStyle] = useState<JSX.CSSProperties>({});\n const { onMouseEnter, onMouseLeave, style, ...remainingProps } = rest;\n\n useEffect(() => {\n tooltip.setContentId(contentId);\n return () => {\n tooltip.setContentId(undefined);\n };\n }, [contentId, tooltip]);\n\n useEffect(() => {\n setResolvedSide(side);\n }, [side, tooltip.open.value]);\n\n useEffect(\n () => () => {\n if (flipTimerRef.current !== null) {\n window.clearTimeout(flipTimerRef.current);\n flipTimerRef.current = null;\n }\n },\n []\n );\n\n useLayoutEffect(() => {\n if (!tooltip.open.value || !contentRef.current) return;\n const contentEl = contentRef.current;\n const triggerRect = contentEl.parentElement?.getBoundingClientRect();\n const contentRect = contentEl.getBoundingClientRect();\n if (!triggerRect) return;\n\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n const fitsTop = triggerRect.top >= contentRect.height + sideOffset + collisionPadding;\n const fitsBottom = viewportHeight - triggerRect.bottom >= contentRect.height + sideOffset + collisionPadding;\n const fitsLeft = triggerRect.left >= contentRect.width + sideOffset + collisionPadding;\n const fitsRight = viewportWidth - triggerRect.right >= contentRect.width + sideOffset + collisionPadding;\n\n let nextSide = side;\n if (side === \"top\" && !fitsTop && fitsBottom) nextSide = \"bottom\";\n if (side === \"bottom\" && !fitsBottom && fitsTop) nextSide = \"top\";\n if (side === \"left\" && !fitsLeft && fitsRight) nextSide = \"right\";\n if (side === \"right\" && !fitsRight && fitsLeft) nextSide = \"left\";\n if (nextSide !== resolvedSide) {\n setResolvedSide(nextSide);\n }\n if (tooltip.open.value && nextSide !== prevSideRef.current) {\n setIsFlipAnimating(true);\n if (flipTimerRef.current !== null) {\n window.clearTimeout(flipTimerRef.current);\n }\n flipTimerRef.current = window.setTimeout(() => {\n setIsFlipAnimating(false);\n flipTimerRef.current = null;\n }, 140);\n prevSideRef.current = nextSide;\n }\n\n const nextClamp: JSX.CSSProperties = {};\n if (nextSide === \"top\" || nextSide === \"bottom\") {\n const left = contentRect.left;\n const right = contentRect.right;\n if (left < collisionPadding) {\n nextClamp.left = `${collisionPadding}px`;\n nextClamp.transform = \"none\";\n } else if (right > viewportWidth - collisionPadding) {\n nextClamp.right = `${collisionPadding}px`;\n nextClamp.left = \"auto\";\n nextClamp.transform = \"none\";\n }\n } else {\n const top = contentRect.top;\n const bottom = contentRect.bottom;\n if (top < collisionPadding) {\n nextClamp.top = `${collisionPadding}px`;\n nextClamp.transform = \"none\";\n } else if (bottom > viewportHeight - collisionPadding) {\n nextClamp.bottom = `${collisionPadding}px`;\n nextClamp.top = \"auto\";\n nextClamp.transform = \"none\";\n }\n }\n setDynamicClamp(nextClamp);\n\n const arrowInset = 12;\n const nextArrowStyle: JSX.CSSProperties = {};\n if (nextSide === \"top\" || nextSide === \"bottom\") {\n const triggerCenterX = triggerRect.left + triggerRect.width / 2;\n const desired = triggerCenterX - contentRect.left;\n const clamped = Math.max(arrowInset, Math.min(contentRect.width - arrowInset, desired));\n nextArrowStyle[\"--tooltip-arrow-x\"] = `${clamped}px`;\n nextArrowStyle[\"--tooltip-arrow-y\"] = undefined;\n } else {\n const triggerCenterY = triggerRect.top + triggerRect.height / 2;\n const desired = triggerCenterY - contentRect.top;\n const clamped = Math.max(arrowInset, Math.min(contentRect.height - arrowInset, desired));\n nextArrowStyle[\"--tooltip-arrow-y\"] = `${clamped}px`;\n nextArrowStyle[\"--tooltip-arrow-x\"] = undefined;\n }\n setArrowStyle(nextArrowStyle);\n }, [align, collisionPadding, resolvedSide, side, sideOffset, tooltip.open.value]);\n\n if (!tooltip.open.value && !forceMount) return null;\n\n const baseSideStyles: Record<NonNullable<TooltipContentProps[\"side\"]>, JSX.CSSProperties> = {\n top: { bottom: `calc(100% + ${sideOffset}px)` },\n right: { left: `calc(100% + ${sideOffset}px)` },\n bottom: { top: `calc(100% + ${sideOffset}px)` },\n left: { right: `calc(100% + ${sideOffset}px)` }\n };\n\n const alignStyles: Record<NonNullable<TooltipContentProps[\"align\"]>, JSX.CSSProperties> = {\n start:\n resolvedSide === \"top\" || resolvedSide === \"bottom\"\n ? { left: `${alignOffset}px` }\n : { top: `${alignOffset}px` },\n center:\n resolvedSide === \"top\" || resolvedSide === \"bottom\"\n ? { left: `calc(50% + ${alignOffset}px)`, transform: \"translateX(-50%)\" }\n : { top: `calc(50% + ${alignOffset}px)`, transform: \"translateY(-50%)\" },\n end:\n resolvedSide === \"top\" || resolvedSide === \"bottom\"\n ? { right: `${alignOffset}px` }\n : { bottom: `${alignOffset}px` }\n };\n\n const resolvedStyle =\n typeof style === \"object\" && style && !(\"value\" in style) ? (style as JSX.CSSProperties) : {};\n\n const mergedStyle: JSX.CSSProperties = {\n position: \"absolute\",\n zIndex: 50,\n maxWidth: \"min(22rem, 92vw)\",\n ...baseSideStyles[resolvedSide],\n ...alignStyles[align],\n ...dynamicClamp,\n ...arrowStyle,\n ...resolvedStyle\n };\n\n const commonProps: TooltipContentCommonProps = {\n id: contentId,\n role: \"tooltip\",\n \"data-slot\": \"tooltip-content\",\n \"data-state\": tooltip.open.value ? \"open\" : \"closed\",\n \"data-side\": resolvedSide,\n \"data-align\": align,\n \"data-flip-animating\": isFlipAnimating ? \"true\" : \"false\",\n onMouseEnter: (event) => {\n if (!tooltip.disableHoverableContent) {\n tooltip.cancelTimers();\n tooltip.setOpen(true);\n }\n onMouseEnter?.(event);\n },\n onMouseLeave: (event) => {\n tooltip.closeWithDelay();\n onMouseLeave?.(event);\n },\n style: mergedStyle\n };\n\n if (asChild) {\n if (!isValidElement(children)) {\n return null;\n }\n\n const childProps = (children.props ?? {}) as JSX.HTMLAttributes<HTMLElement>;\n const nextChildren = (\n <>\n {childProps.children}\n <span aria-hidden=\"true\" data-slot=\"tooltip-arrow\" />\n </>\n );\n\n return cloneElement(children, {\n ...(childProps ?? {}),\n ...commonProps,\n ...remainingProps,\n children: nextChildren\n });\n }\n\n return (\n <div\n {...commonProps}\n {...remainingProps}\n ref={(element) => {\n contentRef.current = element;\n }}\n >\n {children}\n <span aria-hidden=\"true\" data-slot=\"tooltip-arrow\" />\n </div>\n );\n};\n\n","import { cloneElement, isValidElement, type ComponentChildren, type JSX } from \"preact\";\nimport { useTooltip } from \"./Tooltip\";\n\nexport type TooltipTriggerProps = JSX.HTMLAttributes<HTMLSpanElement> & {\n asChild?: boolean;\n children?: ComponentChildren;\n};\n\ntype TooltipTriggerCommonProps = JSX.HTMLAttributes<HTMLElement> & {\n \"data-slot\"?: string;\n \"data-state\"?: \"open\" | \"closed\";\n};\n\nexport const TooltipTrigger = ({ asChild = false, children, ...rest }: TooltipTriggerProps) => {\n const tooltip = useTooltip();\n const {\n onMouseEnter,\n onMouseLeave,\n onPointerEnter,\n onPointerLeave,\n onFocus,\n onBlur,\n \"aria-describedby\": ariaDescribedBy,\n ...remainingProps\n } = rest;\n const describedBy = tooltip.open.value ? tooltip.contentId.value : undefined;\n const commonProps: TooltipTriggerCommonProps = {\n \"data-slot\": \"tooltip-trigger\",\n \"aria-describedby\": describedBy ?? ariaDescribedBy,\n \"data-state\": tooltip.open.value ? \"open\" : \"closed\",\n onPointerEnter: (event) => {\n tooltip.openWithDelay();\n onPointerEnter?.(event as unknown as JSX.TargetedPointerEvent<HTMLElement>);\n },\n onPointerLeave: (event) => {\n tooltip.closeWithDelay();\n onPointerLeave?.(event as unknown as JSX.TargetedPointerEvent<HTMLElement>);\n },\n onMouseEnter: (event) => {\n tooltip.openWithDelay();\n onMouseEnter?.(event as unknown as JSX.TargetedMouseEvent<HTMLElement>);\n },\n onMouseLeave: (event) => {\n tooltip.closeWithDelay();\n onMouseLeave?.(event as unknown as JSX.TargetedMouseEvent<HTMLElement>);\n },\n onFocus: (event) => {\n tooltip.setOpen(true);\n onFocus?.(event as unknown as JSX.TargetedFocusEvent<HTMLElement>);\n },\n onBlur: (event) => {\n tooltip.setOpen(false);\n onBlur?.(event as unknown as JSX.TargetedFocusEvent<HTMLElement>);\n }\n };\n\n if (asChild) {\n if (!isValidElement(children)) {\n return null;\n }\n\n const childProps = (children.props ?? {}) as JSX.HTMLAttributes<HTMLElement> & {\n class?: string;\n className?: string;\n };\n\n return cloneElement(children, {\n ...(childProps ?? {}),\n ...commonProps,\n ...remainingProps\n });\n }\n\n return (\n <span\n // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n tabIndex={0}\n {...commonProps}\n {...remainingProps}\n >\n {children}\n </span>\n );\n};\n\n","import { Tooltip, TooltipProvider } from \"./Tooltip\";\nimport { TooltipContent } from \"./TooltipContent\";\nimport { TooltipTrigger } from \"./TooltipTrigger\";\n\nexport { Tooltip, TooltipProvider, TooltipContent, TooltipTrigger };\n\nexport default {\n Provider: TooltipProvider,\n Root: Tooltip,\n Trigger: TooltipTrigger,\n Content: TooltipContent\n};\n"]}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { cn } from './chunk-OMXWBB67.js';
|
|
2
|
+
import { useState } from 'preact/hooks';
|
|
3
|
+
import { tv } from 'tailwind-variants';
|
|
4
|
+
import { jsxs, jsx } from 'preact/jsx-runtime';
|
|
5
|
+
|
|
6
|
+
var switchRoot = tv({
|
|
7
|
+
base: [
|
|
8
|
+
"peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-xs",
|
|
9
|
+
"outline-none transition-all",
|
|
10
|
+
"focus-visible:ring-3 focus-visible:ring-ring/50",
|
|
11
|
+
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
12
|
+
"data-[state=checked]:bg-primary data-[state=checked]:saturate-125 data-[state=unchecked]:bg-input dark:data-[state=unchecked]:bg-input/80",
|
|
13
|
+
"aria-invalid:ring-destructive/20 aria-invalid:border-destructive"
|
|
14
|
+
],
|
|
15
|
+
variants: {
|
|
16
|
+
size: {
|
|
17
|
+
default: "h-6 w-11",
|
|
18
|
+
sm: "h-5 w-9"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
defaultVariants: {
|
|
22
|
+
size: "default"
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
var switchThumb = tv({
|
|
26
|
+
base: [
|
|
27
|
+
"pointer-events-none block rounded-full bg-background",
|
|
28
|
+
"shadow-sm ring-0 transition-transform",
|
|
29
|
+
"data-[state=unchecked]:translate-x-0"
|
|
30
|
+
],
|
|
31
|
+
variants: {
|
|
32
|
+
size: {
|
|
33
|
+
default: "size-5 data-[state=checked]:translate-x-5",
|
|
34
|
+
sm: "size-4 data-[state=checked]:translate-x-4"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
defaultVariants: {
|
|
38
|
+
size: "default"
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
var Switch = ({
|
|
42
|
+
defaultChecked = false,
|
|
43
|
+
checked,
|
|
44
|
+
onCheckedChange,
|
|
45
|
+
size,
|
|
46
|
+
class: className,
|
|
47
|
+
children,
|
|
48
|
+
onClick,
|
|
49
|
+
...rest
|
|
50
|
+
}) => {
|
|
51
|
+
const [localChecked, setLocalChecked] = useState(defaultChecked);
|
|
52
|
+
const isControlled = typeof checked === "boolean";
|
|
53
|
+
const nextChecked = isControlled ? checked : localChecked;
|
|
54
|
+
return /* @__PURE__ */ jsxs("span", { "data-slot": "switch-root", class: "inline-flex items-center gap-2", children: [
|
|
55
|
+
/* @__PURE__ */ jsx(
|
|
56
|
+
"button",
|
|
57
|
+
{
|
|
58
|
+
type: "button",
|
|
59
|
+
role: "switch",
|
|
60
|
+
"aria-checked": nextChecked,
|
|
61
|
+
"data-slot": "switch",
|
|
62
|
+
"data-state": nextChecked ? "checked" : "unchecked",
|
|
63
|
+
"data-size": size ?? "default",
|
|
64
|
+
class: cn(switchRoot({ size, class: className })),
|
|
65
|
+
onClick: (event) => {
|
|
66
|
+
const updated = !nextChecked;
|
|
67
|
+
if (!isControlled) {
|
|
68
|
+
setLocalChecked(updated);
|
|
69
|
+
}
|
|
70
|
+
onCheckedChange?.(updated);
|
|
71
|
+
onClick?.(event);
|
|
72
|
+
},
|
|
73
|
+
...rest,
|
|
74
|
+
children: /* @__PURE__ */ jsx(
|
|
75
|
+
"span",
|
|
76
|
+
{
|
|
77
|
+
"data-slot": "switch-thumb",
|
|
78
|
+
"data-size": size ?? "default",
|
|
79
|
+
"data-state": nextChecked ? "checked" : "unchecked",
|
|
80
|
+
class: cn(switchThumb({ size }))
|
|
81
|
+
}
|
|
82
|
+
)
|
|
83
|
+
}
|
|
84
|
+
),
|
|
85
|
+
children ? /* @__PURE__ */ jsx("span", { "data-slot": "switch-label", children }) : null
|
|
86
|
+
] });
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
// src/components/switch/index.ts
|
|
90
|
+
var switch_default = Switch;
|
|
91
|
+
|
|
92
|
+
export { Switch, switch_default };
|
|
93
|
+
//# sourceMappingURL=chunk-NPHECLV5.js.map
|
|
94
|
+
//# sourceMappingURL=chunk-NPHECLV5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/switch/Switch.tsx","../src/components/switch/index.ts"],"names":[],"mappings":";;;;;AAKA,IAAM,aAAa,EAAA,CAAG;AAAA,EACpB,IAAA,EAAM;AAAA,IACJ,0GAAA;AAAA,IACA,6BAAA;AAAA,IACA,iDAAA;AAAA,IACA,iDAAA;AAAA,IACA,2IAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,OAAA,EAAS,UAAA;AAAA,MACT,EAAA,EAAI;AAAA;AACN,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM;AAAA;AAEV,CAAC,CAAA;AAED,IAAM,cAAc,EAAA,CAAG;AAAA,EACrB,IAAA,EAAM;AAAA,IACJ,sDAAA;AAAA,IACA,uCAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,OAAA,EAAS,2CAAA;AAAA,MACT,EAAA,EAAI;AAAA;AACN,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM;AAAA;AAEV,CAAC,CAAA;AAaM,IAAM,SAAS,CAAC;AAAA,EACrB,cAAA,GAAiB,KAAA;AAAA,EACjB,OAAA;AAAA,EACA,eAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA,EAAO,SAAA;AAAA,EACP,QAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAmB;AACjB,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAS,cAAc,CAAA;AAC/D,EAAA,MAAM,YAAA,GAAe,OAAO,OAAA,KAAY,SAAA;AACxC,EAAA,MAAM,WAAA,GAAc,eAAe,OAAA,GAAU,YAAA;AAE7C,EAAA,uBACE,IAAA,CAAC,MAAA,EAAA,EAAK,WAAA,EAAU,aAAA,EAAc,OAAM,gCAAA,EAClC,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,IAAA,EAAK,QAAA;AAAA,QACL,cAAA,EAAc,WAAA;AAAA,QACd,WAAA,EAAU,QAAA;AAAA,QACV,YAAA,EAAY,cAAc,SAAA,GAAY,WAAA;AAAA,QACtC,aAAW,IAAA,IAAQ,SAAA;AAAA,QACnB,KAAA,EAAO,GAAG,UAAA,CAAW,EAAE,MAAM,KAAA,EAAO,SAAA,EAAW,CAAC,CAAA;AAAA,QAChD,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,UAAA,MAAM,UAAU,CAAC,WAAA;AACjB,UAAA,IAAI,CAAC,YAAA,EAAc;AACjB,YAAA,eAAA,CAAgB,OAAO,CAAA;AAAA,UACzB;AACA,UAAA,eAAA,GAAkB,OAAO,CAAA;AACzB,UAAA,OAAA,GAAU,KAAK,CAAA;AAAA,QACjB,CAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEJ,QAAA,kBAAA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,WAAA,EAAU,cAAA;AAAA,YACV,aAAW,IAAA,IAAQ,SAAA;AAAA,YACnB,YAAA,EAAY,cAAc,SAAA,GAAY,WAAA;AAAA,YACtC,OAAO,EAAA,CAAG,WAAA,CAAY,EAAE,IAAA,EAAM,CAAC;AAAA;AAAA;AACjC;AAAA,KACF;AAAA,IACC,2BAAW,GAAA,CAAC,MAAA,EAAA,EAAK,WAAA,EAAU,cAAA,EAAgB,UAAS,CAAA,GAAU;AAAA,GAAA,EACjE,CAAA;AAEJ;;;AC7FA,IAAO,cAAA,GAAQ","file":"chunk-NPHECLV5.js","sourcesContent":["import { useState } from \"preact/hooks\";\nimport type { ComponentChildren, JSX } from \"preact\";\nimport { tv, type VariantProps } from \"tailwind-variants\";\nimport { cn } from \"../../lib/utils\";\n\nconst switchRoot = tv({\n base: [\n \"peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-xs\",\n \"outline-none transition-all\",\n \"focus-visible:ring-3 focus-visible:ring-ring/50\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"data-[state=checked]:bg-primary data-[state=checked]:saturate-125 data-[state=unchecked]:bg-input dark:data-[state=unchecked]:bg-input/80\",\n \"aria-invalid:ring-destructive/20 aria-invalid:border-destructive\"\n ],\n variants: {\n size: {\n default: \"h-6 w-11\",\n sm: \"h-5 w-9\"\n }\n },\n defaultVariants: {\n size: \"default\"\n }\n});\n\nconst switchThumb = tv({\n base: [\n \"pointer-events-none block rounded-full bg-background\",\n \"shadow-sm ring-0 transition-transform\",\n \"data-[state=unchecked]:translate-x-0\"\n ],\n variants: {\n size: {\n default: \"size-5 data-[state=checked]:translate-x-5\",\n sm: \"size-4 data-[state=checked]:translate-x-4\"\n }\n },\n defaultVariants: {\n size: \"default\"\n }\n});\n\ntype SwitchVariants = VariantProps<typeof switchRoot>;\n\nexport type SwitchProps = Omit<JSX.ButtonHTMLAttributes<HTMLButtonElement>, \"class\"> &\n SwitchVariants & {\n class?: string;\n defaultChecked?: boolean;\n checked?: boolean;\n onCheckedChange?: (next: boolean) => void;\n children?: ComponentChildren;\n};\n\nexport const Switch = ({\n defaultChecked = false,\n checked,\n onCheckedChange,\n size,\n class: className,\n children,\n onClick,\n ...rest\n}: SwitchProps) => {\n const [localChecked, setLocalChecked] = useState(defaultChecked);\n const isControlled = typeof checked === \"boolean\";\n const nextChecked = isControlled ? checked : localChecked;\n\n return (\n <span data-slot=\"switch-root\" class=\"inline-flex items-center gap-2\">\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={nextChecked}\n data-slot=\"switch\"\n data-state={nextChecked ? \"checked\" : \"unchecked\"}\n data-size={size ?? \"default\"}\n class={cn(switchRoot({ size, class: className }))}\n onClick={(event) => {\n const updated = !nextChecked;\n if (!isControlled) {\n setLocalChecked(updated);\n }\n onCheckedChange?.(updated);\n onClick?.(event);\n }}\n {...rest}\n >\n <span\n data-slot=\"switch-thumb\"\n data-size={size ?? \"default\"}\n data-state={nextChecked ? \"checked\" : \"unchecked\"}\n class={cn(switchThumb({ size }))}\n />\n </button>\n {children ? <span data-slot=\"switch-label\">{children}</span> : null}\n </span>\n );\n};\n\n","import { Switch } from \"./Switch\";\n\nexport { Switch };\n\nexport default Switch;\n"]}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { cn } from './chunk-OMXWBB67.js';
|
|
2
|
+
import { jsx } from 'preact/jsx-runtime';
|
|
3
|
+
|
|
4
|
+
// src/components/progress/progress-indeterminate-styles.ts
|
|
5
|
+
var STYLE_ID = "kamod-ui-progress-indeterminate";
|
|
6
|
+
var indeterminateKeyframesCss = `@keyframes kamod-progress-indeterminate{0%{transform:translateX(-100%)}100%{transform:translateX(270%)}}[data-slot="progress"][data-state="indeterminate"] [data-slot="progress-indicator"]{animation:kamod-progress-indeterminate 1.2s ease-in-out infinite}@media (prefers-reduced-motion:reduce){[data-slot="progress"][data-state="indeterminate"] [data-slot="progress-indicator"]{animation:none}}`;
|
|
7
|
+
function injectProgressIndeterminateStyles() {
|
|
8
|
+
if (typeof document === "undefined") return;
|
|
9
|
+
if (document.getElementById(STYLE_ID)) return;
|
|
10
|
+
const style = document.createElement("style");
|
|
11
|
+
style.id = STYLE_ID;
|
|
12
|
+
style.textContent = indeterminateKeyframesCss;
|
|
13
|
+
document.head.appendChild(style);
|
|
14
|
+
}
|
|
15
|
+
injectProgressIndeterminateStyles();
|
|
16
|
+
var progressRootClass = [
|
|
17
|
+
"relative h-2.5 w-full overflow-hidden rounded-full bg-muted",
|
|
18
|
+
"ring-1 ring-inset ring-border/55 dark:ring-border/45",
|
|
19
|
+
"shadow-[inset_0_1px_2px_color-mix(in_oklab,var(--foreground)_6%,transparent)]",
|
|
20
|
+
"dark:shadow-[inset_0_1px_2px_color-mix(in_oklab,black_28%,transparent)]"
|
|
21
|
+
].join(" ");
|
|
22
|
+
var progressIndicatorShared = [
|
|
23
|
+
"rounded-full bg-primary",
|
|
24
|
+
"shadow-[inset_0_-1px_0_color-mix(in_oklab,var(--primary-foreground)_22%,transparent)]"
|
|
25
|
+
].join(" ");
|
|
26
|
+
var progressIndicatorDeterminateClass = [
|
|
27
|
+
"h-full w-full flex-1",
|
|
28
|
+
"transition-transform duration-300 ease-out motion-reduce:transition-none",
|
|
29
|
+
progressIndicatorShared
|
|
30
|
+
].join(" ");
|
|
31
|
+
var progressIndicatorIndeterminateClass = ["absolute inset-y-0 left-0 w-[38%]", progressIndicatorShared].join(" ");
|
|
32
|
+
var Progress = ({
|
|
33
|
+
value = 0,
|
|
34
|
+
max = 100,
|
|
35
|
+
class: className,
|
|
36
|
+
indicatorClass,
|
|
37
|
+
indeterminate: indeterminateProp,
|
|
38
|
+
...rest
|
|
39
|
+
}) => {
|
|
40
|
+
const safeMax = max > 0 ? max : 100;
|
|
41
|
+
const isIndeterminate = indeterminateProp === true || value === null;
|
|
42
|
+
const numericValue = value === null || value === void 0 ? 0 : value;
|
|
43
|
+
const current = Math.max(0, Math.min(safeMax, numericValue));
|
|
44
|
+
const percent = Math.max(0, Math.min(100, current / safeMax * 100));
|
|
45
|
+
return /* @__PURE__ */ jsx(
|
|
46
|
+
"div",
|
|
47
|
+
{
|
|
48
|
+
role: "progressbar",
|
|
49
|
+
"data-slot": "progress",
|
|
50
|
+
"data-state": isIndeterminate ? "indeterminate" : "determinate",
|
|
51
|
+
...!isIndeterminate ? {
|
|
52
|
+
"aria-valuemin": 0,
|
|
53
|
+
"aria-valuemax": safeMax,
|
|
54
|
+
"aria-valuenow": current,
|
|
55
|
+
"data-value": current,
|
|
56
|
+
"data-max": safeMax
|
|
57
|
+
} : {
|
|
58
|
+
"aria-valuetext": "Indeterminate"
|
|
59
|
+
},
|
|
60
|
+
class: cn(progressRootClass, className),
|
|
61
|
+
...rest,
|
|
62
|
+
children: isIndeterminate ? /* @__PURE__ */ jsx("div", { "data-slot": "progress-indicator", class: cn(progressIndicatorIndeterminateClass, indicatorClass) }) : /* @__PURE__ */ jsx(
|
|
63
|
+
"div",
|
|
64
|
+
{
|
|
65
|
+
"data-slot": "progress-indicator",
|
|
66
|
+
class: cn(progressIndicatorDeterminateClass, indicatorClass),
|
|
67
|
+
style: { transform: `translateX(-${100 - percent}%)` }
|
|
68
|
+
}
|
|
69
|
+
)
|
|
70
|
+
}
|
|
71
|
+
);
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
// src/components/progress/index.ts
|
|
75
|
+
var progress_default = Progress;
|
|
76
|
+
|
|
77
|
+
export { Progress, progress_default };
|
|
78
|
+
//# sourceMappingURL=chunk-NXVAR6P2.js.map
|
|
79
|
+
//# sourceMappingURL=chunk-NXVAR6P2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/progress/progress-indeterminate-styles.ts","../src/components/progress/Progress.tsx","../src/components/progress/index.ts"],"names":[],"mappings":"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","file":"chunk-NXVAR6P2.js","sourcesContent":["const STYLE_ID = \"kamod-ui-progress-indeterminate\";\n\nconst indeterminateKeyframesCss = `@keyframes kamod-progress-indeterminate{0%{transform:translateX(-100%)}100%{transform:translateX(270%)}}[data-slot=\"progress\"][data-state=\"indeterminate\"] [data-slot=\"progress-indicator\"]{animation:kamod-progress-indeterminate 1.2s ease-in-out infinite}@media (prefers-reduced-motion:reduce){[data-slot=\"progress\"][data-state=\"indeterminate\"] [data-slot=\"progress-indicator\"]{animation:none}}`;\n\nfunction injectProgressIndeterminateStyles(): void {\n if (typeof document === \"undefined\") return;\n if (document.getElementById(STYLE_ID)) return;\n const style = document.createElement(\"style\");\n style.id = STYLE_ID;\n style.textContent = indeterminateKeyframesCss;\n document.head.appendChild(style);\n}\n\ninjectProgressIndeterminateStyles();\n","import type { JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport \"./progress-indeterminate-styles\";\n\nexport type ProgressProps = JSX.HTMLAttributes<HTMLDivElement> & {\n /** Set to `null` for an indeterminate bar (Radix-style). Ignored when `indeterminate` is true. */\n value?: number | null;\n max?: number;\n indicatorClass?: string;\n /** When true, shows an animated indeterminate bar regardless of `value`. */\n indeterminate?: boolean;\n};\n\nconst progressRootClass = [\n \"relative h-2.5 w-full overflow-hidden rounded-full bg-muted\",\n \"ring-1 ring-inset ring-border/55 dark:ring-border/45\",\n \"shadow-[inset_0_1px_2px_color-mix(in_oklab,var(--foreground)_6%,transparent)]\",\n \"dark:shadow-[inset_0_1px_2px_color-mix(in_oklab,black_28%,transparent)]\"\n].join(\" \");\n\nconst progressIndicatorShared = [\n \"rounded-full bg-primary\",\n \"shadow-[inset_0_-1px_0_color-mix(in_oklab,var(--primary-foreground)_22%,transparent)]\"\n].join(\" \");\n\nconst progressIndicatorDeterminateClass = [\n \"h-full w-full flex-1\",\n \"transition-transform duration-300 ease-out motion-reduce:transition-none\",\n progressIndicatorShared\n].join(\" \");\n\nconst progressIndicatorIndeterminateClass = [\"absolute inset-y-0 left-0 w-[38%]\", progressIndicatorShared].join(\" \");\n\nexport const Progress = ({\n value = 0,\n max = 100,\n class: className,\n indicatorClass,\n indeterminate: indeterminateProp,\n ...rest\n}: ProgressProps) => {\n const safeMax = max > 0 ? max : 100;\n const isIndeterminate = indeterminateProp === true || value === null;\n const numericValue = value === null || value === undefined ? 0 : value;\n const current = Math.max(0, Math.min(safeMax, numericValue));\n const percent = Math.max(0, Math.min(100, (current / safeMax) * 100));\n\n return (\n <div\n role=\"progressbar\"\n data-slot=\"progress\"\n data-state={isIndeterminate ? \"indeterminate\" : \"determinate\"}\n {...(!isIndeterminate\n ? {\n \"aria-valuemin\": 0,\n \"aria-valuemax\": safeMax,\n \"aria-valuenow\": current,\n \"data-value\": current,\n \"data-max\": safeMax\n }\n : {\n \"aria-valuetext\": \"Indeterminate\"\n })}\n class={cn(progressRootClass, className)}\n {...rest}\n >\n {isIndeterminate ? (\n <div data-slot=\"progress-indicator\" class={cn(progressIndicatorIndeterminateClass, indicatorClass)} />\n ) : (\n <div\n data-slot=\"progress-indicator\"\n class={cn(progressIndicatorDeterminateClass, indicatorClass)}\n style={{ transform: `translateX(-${100 - percent}%)` }}\n />\n )}\n </div>\n );\n};\n","import { Progress } from \"./Progress\";\n\nexport { Progress };\n\nexport default Progress;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/utils.ts"],"names":[],"mappings":";;;;AAGO,IAAM,KAAK,CAAA,GAAI,MAAA,KAAyB,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC","file":"chunk-OMXWBB67.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport const cn = (...inputs: ClassValue[]) => twMerge(clsx(inputs));\n"]}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { cn } from './chunk-OMXWBB67.js';
|
|
2
|
+
import { tv } from 'tailwind-variants';
|
|
3
|
+
import { jsxs, jsx } from 'preact/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
var emptyRoot = tv({
|
|
6
|
+
base: "group/empty flex w-full flex-col items-center justify-center gap-6 text-balance text-center"
|
|
7
|
+
});
|
|
8
|
+
var emptyMedia = tv({
|
|
9
|
+
base: "mb-0 flex shrink-0 justify-center",
|
|
10
|
+
variants: {
|
|
11
|
+
variant: {
|
|
12
|
+
default: "",
|
|
13
|
+
icon: [
|
|
14
|
+
"mb-2 flex size-10 items-center justify-center rounded-md border bg-muted text-muted-foreground",
|
|
15
|
+
"[&_svg:not([class*='size-'])]:size-6"
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
defaultVariants: {
|
|
20
|
+
variant: "default"
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
var Empty = ({ class: className, title, description, children, ...rest }) => {
|
|
24
|
+
const legacy = title != null || description != null;
|
|
25
|
+
if (legacy) {
|
|
26
|
+
return /* @__PURE__ */ jsxs(
|
|
27
|
+
"div",
|
|
28
|
+
{
|
|
29
|
+
...rest,
|
|
30
|
+
"data-slot": "empty",
|
|
31
|
+
class: cn(
|
|
32
|
+
"flex min-h-40 flex-col items-center justify-center gap-2 rounded-lg border border-dashed p-6 text-center",
|
|
33
|
+
className
|
|
34
|
+
),
|
|
35
|
+
children: [
|
|
36
|
+
title != null ? /* @__PURE__ */ jsx("h3", { "data-slot": "empty-title", class: "text-base font-semibold", children: title }) : null,
|
|
37
|
+
description != null ? /* @__PURE__ */ jsx("p", { "data-slot": "empty-description", class: "text-muted-foreground text-sm", children: description }) : null,
|
|
38
|
+
children
|
|
39
|
+
]
|
|
40
|
+
}
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
return /* @__PURE__ */ jsx("div", { ...rest, "data-slot": "empty", class: cn(emptyRoot(), className), children });
|
|
44
|
+
};
|
|
45
|
+
var EmptyContent = ({ class: className, children, ...rest }) => /* @__PURE__ */ jsx(
|
|
46
|
+
"div",
|
|
47
|
+
{
|
|
48
|
+
class: cn("flex w-full max-w-sm flex-col items-center justify-center gap-2", className),
|
|
49
|
+
"data-slot": "empty-content",
|
|
50
|
+
...rest,
|
|
51
|
+
children
|
|
52
|
+
}
|
|
53
|
+
);
|
|
54
|
+
var EmptyDescription = ({ class: className, children, ...rest }) => /* @__PURE__ */ jsx("p", { class: cn("text-muted-foreground max-w-sm text-sm leading-normal", className), "data-slot": "empty-description", ...rest, children });
|
|
55
|
+
var EmptyHeader = ({ class: className, children, ...rest }) => /* @__PURE__ */ jsx("div", { class: cn("flex flex-col items-center gap-2", className), "data-slot": "empty-header", ...rest, children });
|
|
56
|
+
var EmptyMedia = ({
|
|
57
|
+
class: className,
|
|
58
|
+
variant,
|
|
59
|
+
children,
|
|
60
|
+
...rest
|
|
61
|
+
}) => /* @__PURE__ */ jsx("div", { class: cn(emptyMedia({ variant }), className), "data-slot": "empty-media", ...rest, children });
|
|
62
|
+
var EmptyTitle = ({ class: className, children, ...rest }) => /* @__PURE__ */ jsx("h3", { class: cn("text-lg font-semibold tracking-tight", className), "data-slot": "empty-title", ...rest, children });
|
|
63
|
+
|
|
64
|
+
// src/components/empty/index.ts
|
|
65
|
+
var empty_default = Empty;
|
|
66
|
+
|
|
67
|
+
export { Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, emptyMedia, emptyRoot, empty_default };
|
|
68
|
+
//# sourceMappingURL=chunk-PE5QQIV5.js.map
|
|
69
|
+
//# sourceMappingURL=chunk-PE5QQIV5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/empty/empty-variants.ts","../src/components/empty/Empty.tsx","../src/components/empty/EmptyContent.tsx","../src/components/empty/EmptyDescription.tsx","../src/components/empty/EmptyHeader.tsx","../src/components/empty/EmptyMedia.tsx","../src/components/empty/EmptyTitle.tsx","../src/components/empty/index.ts"],"names":["jsx"],"mappings":"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","file":"chunk-PE5QQIV5.js","sourcesContent":["import { tv, type VariantProps } from \"tailwind-variants\";\n\n/** Composable Empty root (shadcn-aligned). */\nexport const emptyRoot = tv({\n base: \"group/empty flex w-full flex-col items-center justify-center gap-6 text-balance text-center\"\n});\n\nexport type EmptyRootVariants = VariantProps<typeof emptyRoot>;\n\nexport const emptyMedia = tv({\n base: \"mb-0 flex shrink-0 justify-center\",\n variants: {\n variant: {\n default: \"\",\n icon: [\n \"mb-2 flex size-10 items-center justify-center rounded-md border bg-muted text-muted-foreground\",\n \"[&_svg:not([class*='size-'])]:size-6\"\n ]\n }\n },\n defaultVariants: {\n variant: \"default\"\n }\n});\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { emptyRoot } from \"./empty-variants\";\n\nexport type EmptyProps = JSX.HTMLAttributes<HTMLDivElement> & {\n /** Legacy: render title inside dashed card (use EmptyTitle when composing). */\n title?: ComponentChildren;\n /** Legacy: description line. */\n description?: ComponentChildren;\n children?: ComponentChildren;\n};\n\nexport const Empty = ({ class: className, title, description, children, ...rest }: EmptyProps) => {\n const legacy = title != null || description != null;\n\n if (legacy) {\n return (\n <div\n {...rest}\n data-slot=\"empty\"\n class={cn(\n \"flex min-h-40 flex-col items-center justify-center gap-2 rounded-lg border border-dashed p-6 text-center\",\n className\n )}\n >\n {title != null ? (\n <h3 data-slot=\"empty-title\" class=\"text-base font-semibold\">\n {title}\n </h3>\n ) : null}\n {description != null ? (\n <p data-slot=\"empty-description\" class=\"text-muted-foreground text-sm\">\n {description}\n </p>\n ) : null}\n {children}\n </div>\n );\n }\n\n return (\n <div {...rest} data-slot=\"empty\" class={cn(emptyRoot(), className)}>\n {children}\n </div>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type EmptyContentProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\nexport const EmptyContent = ({ class: className, children, ...rest }: EmptyContentProps) => (\n <div\n class={cn(\"flex w-full max-w-sm flex-col items-center justify-center gap-2\", className)}\n data-slot=\"empty-content\"\n {...rest}\n >\n {children}\n </div>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type EmptyDescriptionProps = JSX.HTMLAttributes<HTMLParagraphElement> & {\n children?: ComponentChildren;\n};\n\nexport const EmptyDescription = ({ class: className, children, ...rest }: EmptyDescriptionProps) => (\n <p class={cn(\"text-muted-foreground max-w-sm text-sm leading-normal\", className)} data-slot=\"empty-description\" {...rest}>\n {children}\n </p>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type EmptyHeaderProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\nexport const EmptyHeader = ({ class: className, children, ...rest }: EmptyHeaderProps) => (\n <div class={cn(\"flex flex-col items-center gap-2\", className)} data-slot=\"empty-header\" {...rest}>\n {children}\n </div>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport type { VariantProps } from \"tailwind-variants\";\nimport { cn } from \"../../lib/utils\";\nimport { emptyMedia } from \"./empty-variants\";\n\nexport type EmptyMediaProps = JSX.HTMLAttributes<HTMLDivElement> &\n VariantProps<typeof emptyMedia> & {\n children?: ComponentChildren;\n };\n\nexport const EmptyMedia = ({\n class: className,\n variant,\n children,\n ...rest\n}: EmptyMediaProps) => (\n <div class={cn(emptyMedia({ variant }), className)} data-slot=\"empty-media\" {...rest}>\n {children}\n </div>\n);\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type EmptyTitleProps = JSX.HTMLAttributes<HTMLHeadingElement> & {\n children?: ComponentChildren;\n};\n\nexport const EmptyTitle = ({ class: className, children, ...rest }: EmptyTitleProps) => (\n <h3 class={cn(\"text-lg font-semibold tracking-tight\", className)} data-slot=\"empty-title\" {...rest}>\n {children}\n </h3>\n);\n","import { Empty } from \"./Empty\";\n\nexport { Empty } from \"./Empty\";\nexport { emptyMedia, emptyRoot } from \"./empty-variants\";\nexport type { EmptyRootVariants } from \"./empty-variants\";\nexport { EmptyContent } from \"./EmptyContent\";\nexport { EmptyDescription } from \"./EmptyDescription\";\nexport { EmptyHeader } from \"./EmptyHeader\";\nexport { EmptyMedia } from \"./EmptyMedia\";\nexport { EmptyTitle } from \"./EmptyTitle\";\n\nexport default Empty;\n"]}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { cn } from './chunk-OMXWBB67.js';
|
|
2
|
+
import { signal } from '@preact/signals';
|
|
3
|
+
import { useMemo, useRef, useContext } from 'preact/hooks';
|
|
4
|
+
import { createContext } from 'preact';
|
|
5
|
+
import { jsx, jsxs } from 'preact/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
var InputOTPContext = createContext(null);
|
|
8
|
+
var useInputOTP = () => {
|
|
9
|
+
const ctx = useContext(InputOTPContext);
|
|
10
|
+
if (!ctx) throw new Error("InputOTPSlot and InputOTPGroup must be used within InputOTP");
|
|
11
|
+
return ctx;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
// src/components/input-otp/patterns.ts
|
|
15
|
+
var REGEXP_ONLY_DIGITS = /^[0-9]*$/;
|
|
16
|
+
var REGEXP_ONLY_DIGITS_AND_CHARS = /^[a-zA-Z0-9]*$/;
|
|
17
|
+
var filterOtpValue = (raw, pattern) => {
|
|
18
|
+
if (!pattern) return raw;
|
|
19
|
+
if (pattern === REGEXP_ONLY_DIGITS) return raw.replace(/\D/g, "");
|
|
20
|
+
if (pattern === REGEXP_ONLY_DIGITS_AND_CHARS) return raw.replace(/[^a-zA-Z0-9]/g, "");
|
|
21
|
+
let out = "";
|
|
22
|
+
for (const ch of raw) {
|
|
23
|
+
const next = out + ch;
|
|
24
|
+
if (pattern.test(next)) out = next;
|
|
25
|
+
}
|
|
26
|
+
return out;
|
|
27
|
+
};
|
|
28
|
+
var activeSlotIndex = (focused, caret, len, max) => {
|
|
29
|
+
if (!focused) return -1;
|
|
30
|
+
if (len >= max) return max - 1;
|
|
31
|
+
return Math.min(Math.max(caret, 0), len, max - 1);
|
|
32
|
+
};
|
|
33
|
+
var InputOTP = ({
|
|
34
|
+
maxLength = 6,
|
|
35
|
+
value: controlledValue,
|
|
36
|
+
defaultValue = "",
|
|
37
|
+
onChange,
|
|
38
|
+
onValueChange,
|
|
39
|
+
pattern,
|
|
40
|
+
disabled = false,
|
|
41
|
+
id,
|
|
42
|
+
name,
|
|
43
|
+
autoComplete = "one-time-code",
|
|
44
|
+
class: className,
|
|
45
|
+
children,
|
|
46
|
+
dir,
|
|
47
|
+
"aria-label": ariaLabel,
|
|
48
|
+
...rest
|
|
49
|
+
}) => {
|
|
50
|
+
const isControlled = controlledValue !== void 0;
|
|
51
|
+
const internal = useMemo(() => signal(defaultValue), []);
|
|
52
|
+
const focused = useMemo(() => signal(false), []);
|
|
53
|
+
const caretStart = useMemo(() => signal(0), []);
|
|
54
|
+
const inputRef = useRef(null);
|
|
55
|
+
const displayValue = isControlled ? controlledValue ?? "" : internal.value;
|
|
56
|
+
const bumpCaret = () => {
|
|
57
|
+
requestAnimationFrame(() => {
|
|
58
|
+
const el = inputRef.current;
|
|
59
|
+
const len = displayValue.length;
|
|
60
|
+
caretStart.value = el != null && typeof el.selectionStart === "number" ? el.selectionStart : len;
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
const emit = (next) => {
|
|
64
|
+
if (!isControlled) internal.value = next;
|
|
65
|
+
onChange?.(next);
|
|
66
|
+
onValueChange?.(next);
|
|
67
|
+
};
|
|
68
|
+
const handleInput = (event) => {
|
|
69
|
+
let next = filterOtpValue(event.currentTarget.value, pattern);
|
|
70
|
+
if (next.length > maxLength) next = next.slice(0, maxLength);
|
|
71
|
+
emit(next);
|
|
72
|
+
bumpCaret();
|
|
73
|
+
};
|
|
74
|
+
const activeIndex = activeSlotIndex(focused.value, caretStart.value, displayValue.length, maxLength);
|
|
75
|
+
return /* @__PURE__ */ jsx(
|
|
76
|
+
InputOTPContext.Provider,
|
|
77
|
+
{
|
|
78
|
+
value: {
|
|
79
|
+
value: displayValue,
|
|
80
|
+
maxLength,
|
|
81
|
+
disabled,
|
|
82
|
+
focused: focused.value,
|
|
83
|
+
activeIndex,
|
|
84
|
+
inputRef
|
|
85
|
+
},
|
|
86
|
+
children: /* @__PURE__ */ jsx("div", { "data-slot": "input-otp", dir, class: cn("relative inline-flex", className), ...rest, children: /* @__PURE__ */ jsxs("div", { class: "relative inline-flex items-center", children: [
|
|
87
|
+
/* @__PURE__ */ jsx("div", { class: "pointer-events-none flex items-center gap-1", children }),
|
|
88
|
+
/* @__PURE__ */ jsx(
|
|
89
|
+
"input",
|
|
90
|
+
{
|
|
91
|
+
ref: inputRef,
|
|
92
|
+
id,
|
|
93
|
+
name,
|
|
94
|
+
type: "text",
|
|
95
|
+
autoComplete,
|
|
96
|
+
inputMode: pattern === REGEXP_ONLY_DIGITS ? "numeric" : "text",
|
|
97
|
+
disabled,
|
|
98
|
+
value: displayValue,
|
|
99
|
+
maxLength,
|
|
100
|
+
"aria-label": ariaLabel ?? "One-time password",
|
|
101
|
+
class: cn(
|
|
102
|
+
"absolute inset-0 z-20 h-full w-full cursor-default border-0 bg-transparent p-0 opacity-0 outline-none",
|
|
103
|
+
"focus-visible:outline-none"
|
|
104
|
+
),
|
|
105
|
+
style: { caretColor: "transparent" },
|
|
106
|
+
onInput: handleInput,
|
|
107
|
+
onKeyDown: () => bumpCaret(),
|
|
108
|
+
onKeyUp: () => bumpCaret(),
|
|
109
|
+
onSelect: () => bumpCaret(),
|
|
110
|
+
onFocus: () => {
|
|
111
|
+
focused.value = true;
|
|
112
|
+
bumpCaret();
|
|
113
|
+
},
|
|
114
|
+
onBlur: () => {
|
|
115
|
+
focused.value = false;
|
|
116
|
+
},
|
|
117
|
+
onClick: () => bumpCaret()
|
|
118
|
+
}
|
|
119
|
+
)
|
|
120
|
+
] }) })
|
|
121
|
+
}
|
|
122
|
+
);
|
|
123
|
+
};
|
|
124
|
+
var InputOTPGroup = ({ class: className, children, ...rest }) => /* @__PURE__ */ jsx("div", { role: "group", "data-slot": "input-otp-group", class: cn("inline-flex items-center gap-1", className), ...rest, children });
|
|
125
|
+
var InputOTPSeparator = ({ class: className, children, ...rest }) => /* @__PURE__ */ jsx(
|
|
126
|
+
"span",
|
|
127
|
+
{
|
|
128
|
+
role: "presentation",
|
|
129
|
+
"data-slot": "input-otp-separator",
|
|
130
|
+
class: cn("text-muted-foreground select-none", className),
|
|
131
|
+
...rest,
|
|
132
|
+
children: children ?? "-"
|
|
133
|
+
}
|
|
134
|
+
);
|
|
135
|
+
var InputOTPSlot = ({ index, class: className, ...rest }) => {
|
|
136
|
+
const ctx = useInputOTP();
|
|
137
|
+
const char = ctx.value[index] ?? "";
|
|
138
|
+
const active = !ctx.disabled && ctx.focused && index === ctx.activeIndex;
|
|
139
|
+
return /* @__PURE__ */ jsx(
|
|
140
|
+
"span",
|
|
141
|
+
{
|
|
142
|
+
"data-slot": "input-otp-slot",
|
|
143
|
+
"data-active": active ? "true" : "false",
|
|
144
|
+
class: cn(
|
|
145
|
+
"relative flex size-10 items-center justify-center rounded-md border border-input bg-background font-mono text-sm tabular-nums shadow-xs transition-[box-shadow,border-color]",
|
|
146
|
+
"data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-[3px] data-[active=true]:ring-ring/50",
|
|
147
|
+
ctx.disabled && "opacity-50",
|
|
148
|
+
className
|
|
149
|
+
),
|
|
150
|
+
...rest,
|
|
151
|
+
children: char
|
|
152
|
+
}
|
|
153
|
+
);
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
export { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS, filterOtpValue };
|
|
157
|
+
//# sourceMappingURL=chunk-QAUGWXGJ.js.map
|
|
158
|
+
//# sourceMappingURL=chunk-QAUGWXGJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/input-otp/input-otp-context.tsx","../src/components/input-otp/patterns.ts","../src/components/input-otp/InputOTP.tsx","../src/components/input-otp/InputOTPGroup.tsx","../src/components/input-otp/InputOTPSeparator.tsx","../src/components/input-otp/InputOTPSlot.tsx"],"names":["jsx"],"mappings":";;;;;;AAWO,IAAM,eAAA,GAAkB,cAA2C,IAAI,CAAA;AAEvE,IAAM,cAAc,MAAM;AAC/B,EAAA,MAAM,GAAA,GAAM,WAAW,eAAe,CAAA;AACtC,EAAA,IAAI,CAAC,GAAA,EAAK,MAAM,IAAI,MAAM,6DAA6D,CAAA;AACvF,EAAA,OAAO,GAAA;AACT,CAAA;;;AChBO,IAAM,kBAAA,GAAqB;AAG3B,IAAM,4BAAA,GAA+B;AAErC,IAAM,cAAA,GAAiB,CAAC,GAAA,EAAa,OAAA,KAA6B;AACvE,EAAA,IAAI,CAAC,SAAS,OAAO,GAAA;AACrB,EAAA,IAAI,YAAY,kBAAA,EAAoB,OAAO,GAAA,CAAI,OAAA,CAAQ,OAAO,EAAE,CAAA;AAChE,EAAA,IAAI,YAAY,4BAAA,EAA8B,OAAO,GAAA,CAAI,OAAA,CAAQ,iBAAiB,EAAE,CAAA;AACpF,EAAA,IAAI,GAAA,GAAM,EAAA;AACV,EAAA,KAAA,MAAW,MAAM,GAAA,EAAK;AACpB,IAAA,MAAM,OAAO,GAAA,GAAM,EAAA;AACnB,IAAA,IAAI,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,EAAG,GAAA,GAAM,IAAA;AAAA,EAChC;AACA,EAAA,OAAO,GAAA;AACT;ACKA,IAAM,eAAA,GAAkB,CAAC,OAAA,EAAkB,KAAA,EAAe,KAAa,GAAA,KAAwB;AAC7F,EAAA,IAAI,CAAC,SAAS,OAAO,EAAA;AACrB,EAAA,IAAI,GAAA,IAAO,GAAA,EAAK,OAAO,GAAA,GAAM,CAAA;AAC7B,EAAA,OAAO,IAAA,CAAK,IAAI,IAAA,CAAK,GAAA,CAAI,OAAO,CAAC,CAAA,EAAG,GAAA,EAAK,GAAA,GAAM,CAAC,CAAA;AAClD,CAAA;AAEO,IAAM,WAAW,CAAC;AAAA,EACvB,SAAA,GAAY,CAAA;AAAA,EACZ,KAAA,EAAO,eAAA;AAAA,EACP,YAAA,GAAe,EAAA;AAAA,EACf,QAAA;AAAA,EACA,aAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,EAAA;AAAA,EACA,IAAA;AAAA,EACA,YAAA,GAAe,eAAA;AAAA,EACf,KAAA,EAAO,SAAA;AAAA,EACP,QAAA;AAAA,EACA,GAAA;AAAA,EACA,YAAA,EAAc,SAAA;AAAA,EACd,GAAG;AACL,CAAA,KAAqB;AACnB,EAAA,MAAM,eAAe,eAAA,KAAoB,MAAA;AACzC,EAAA,MAAM,WAAW,OAAA,CAAQ,MAAM,OAAO,YAAY,CAAA,EAAG,EAAE,CAAA;AACvD,EAAA,MAAM,UAAU,OAAA,CAAQ,MAAM,OAAO,KAAK,CAAA,EAAG,EAAE,CAAA;AAC/C,EAAA,MAAM,aAAa,OAAA,CAAQ,MAAM,OAAO,CAAC,CAAA,EAAG,EAAE,CAAA;AAC9C,EAAA,MAAM,QAAA,GAAW,OAAgC,IAAI,CAAA;AAErD,EAAA,MAAM,YAAA,GAAe,YAAA,GAAgB,eAAA,IAAmB,EAAA,GAAM,QAAA,CAAS,KAAA;AAEvE,EAAA,MAAM,YAAY,MAAM;AACtB,IAAA,qBAAA,CAAsB,MAAM;AAC1B,MAAA,MAAM,KAAK,QAAA,CAAS,OAAA;AACpB,MAAA,MAAM,MAAM,YAAA,CAAa,MAAA;AACzB,MAAA,UAAA,CAAW,KAAA,GAAQ,MAAM,IAAA,IAAQ,OAAO,GAAG,cAAA,KAAmB,QAAA,GAAW,GAAG,cAAA,GAAiB,GAAA;AAAA,IAC/F,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,IAAA,GAAO,CAAC,IAAA,KAAiB;AAC7B,IAAA,IAAI,CAAC,YAAA,EAAc,QAAA,CAAS,KAAA,GAAQ,IAAA;AACpC,IAAA,QAAA,GAAW,IAAI,CAAA;AACf,IAAA,aAAA,GAAgB,IAAI,CAAA;AAAA,EACtB,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAA+C;AAClE,IAAA,IAAI,IAAA,GAAO,cAAA,CAAe,KAAA,CAAM,aAAA,CAAc,OAAO,OAAO,CAAA;AAC5D,IAAA,IAAI,KAAK,MAAA,GAAS,SAAA,SAAkB,IAAA,CAAK,KAAA,CAAM,GAAG,SAAS,CAAA;AAC3D,IAAA,IAAA,CAAK,IAAI,CAAA;AACT,IAAA,SAAA,EAAU;AAAA,EACZ,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,gBAAgB,OAAA,CAAQ,KAAA,EAAO,WAAW,KAAA,EAAO,YAAA,CAAa,QAAQ,SAAS,CAAA;AAEnG,EAAA,uBACE,GAAA;AAAA,IAAC,eAAA,CAAgB,QAAA;AAAA,IAAhB;AAAA,MACC,KAAA,EAAO;AAAA,QACL,KAAA,EAAO,YAAA;AAAA,QACP,SAAA;AAAA,QACA,QAAA;AAAA,QACA,SAAS,OAAA,CAAQ,KAAA;AAAA,QACjB,WAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEA,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,WAAA,EAAY,KAAU,KAAA,EAAO,EAAA,CAAG,sBAAA,EAAwB,SAAS,GAAI,GAAG,IAAA,EACrF,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,OAAM,mCAAA,EACT,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAM,6CAAA,EAA+C,QAAA,EAAS,CAAA;AAAA,wBACnE,GAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,QAAA;AAAA,YACL,EAAA;AAAA,YACA,IAAA;AAAA,YACA,IAAA,EAAK,MAAA;AAAA,YACL,YAAA;AAAA,YACA,SAAA,EAAW,OAAA,KAAY,kBAAA,GAAqB,SAAA,GAAY,MAAA;AAAA,YACxD,QAAA;AAAA,YACA,KAAA,EAAO,YAAA;AAAA,YACP,SAAA;AAAA,YACA,cAAY,SAAA,IAAa,mBAAA;AAAA,YACzB,KAAA,EAAO,EAAA;AAAA,cACL,uGAAA;AAAA,cACA;AAAA,aACF;AAAA,YACA,KAAA,EAAO,EAAE,UAAA,EAAY,aAAA,EAAc;AAAA,YACnC,OAAA,EAAS,WAAA;AAAA,YACT,SAAA,EAAW,MAAM,SAAA,EAAU;AAAA,YAC3B,OAAA,EAAS,MAAM,SAAA,EAAU;AAAA,YACzB,QAAA,EAAU,MAAM,SAAA,EAAU;AAAA,YAC1B,SAAS,MAAM;AACb,cAAA,OAAA,CAAQ,KAAA,GAAQ,IAAA;AAChB,cAAA,SAAA,EAAU;AAAA,YACZ,CAAA;AAAA,YACA,QAAQ,MAAM;AACZ,cAAA,OAAA,CAAQ,KAAA,GAAQ,KAAA;AAAA,YAClB,CAAA;AAAA,YACA,OAAA,EAAS,MAAM,SAAA;AAAU;AAAA;AAC3B,OAAA,EACF,CAAA,EACF;AAAA;AAAA,GACF;AAEJ;ACnHO,IAAM,aAAA,GAAgB,CAAC,EAAE,KAAA,EAAO,WAAW,QAAA,EAAU,GAAG,IAAA,EAAK,qBAClEA,GAAAA,CAAC,SAAI,IAAA,EAAK,OAAA,EAAQ,WAAA,EAAU,iBAAA,EAAkB,KAAA,EAAO,EAAA,CAAG,kCAAkC,SAAS,CAAA,EAAI,GAAG,IAAA,EACvG,QAAA,EACH;ACHK,IAAM,iBAAA,GAAoB,CAAC,EAAE,KAAA,EAAO,WAAW,QAAA,EAAU,GAAG,IAAA,EAAK,qBACtEA,GAAAA;AAAA,EAAC,MAAA;AAAA,EAAA;AAAA,IACC,IAAA,EAAK,cAAA;AAAA,IACL,WAAA,EAAU,qBAAA;AAAA,IACV,KAAA,EAAO,EAAA,CAAG,mCAAA,EAAqC,SAAS,CAAA;AAAA,IACvD,GAAG,IAAA;AAAA,IAEH,QAAA,EAAA,QAAA,IAAY;AAAA;AACf;ACPK,IAAM,YAAA,GAAe,CAAC,EAAE,KAAA,EAAO,OAAO,SAAA,EAAW,GAAG,MAAK,KAAyB;AACvF,EAAA,MAAM,MAAM,WAAA,EAAY;AACxB,EAAA,MAAM,IAAA,GAAO,GAAA,CAAI,KAAA,CAAM,KAAK,CAAA,IAAK,EAAA;AACjC,EAAA,MAAM,SAAS,CAAC,GAAA,CAAI,YAAY,GAAA,CAAI,OAAA,IAAW,UAAU,GAAA,CAAI,WAAA;AAE7D,EAAA,uBACEA,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,gBAAA;AAAA,MACV,aAAA,EAAa,SAAS,MAAA,GAAS,OAAA;AAAA,MAC/B,KAAA,EAAO,EAAA;AAAA,QACL,8KAAA;AAAA,QACA,sHAAA;AAAA,QACA,IAAI,QAAA,IAAY,YAAA;AAAA,QAChB;AAAA,OACF;AAAA,MACC,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ","file":"chunk-QAUGWXGJ.js","sourcesContent":["import { createContext } from \"preact\";\nimport { useContext } from \"preact/hooks\";\nexport type InputOTPContextValue = {\n value: string;\n maxLength: number;\n disabled: boolean;\n focused: boolean;\n activeIndex: number;\n inputRef: { current: HTMLInputElement | null };\n};\n\nexport const InputOTPContext = createContext<InputOTPContextValue | null>(null);\n\nexport const useInputOTP = () => {\n const ctx = useContext(InputOTPContext);\n if (!ctx) throw new Error(\"InputOTPSlot and InputOTPGroup must be used within InputOTP\");\n return ctx;\n};\n","/** Digits only (0–9), for PIN / SMS codes. */\nexport const REGEXP_ONLY_DIGITS = /^[0-9]*$/;\n\n/** Letters and digits (ASCII), for alphanumeric OTPs. */\nexport const REGEXP_ONLY_DIGITS_AND_CHARS = /^[a-zA-Z0-9]*$/;\n\nexport const filterOtpValue = (raw: string, pattern?: RegExp): string => {\n if (!pattern) return raw;\n if (pattern === REGEXP_ONLY_DIGITS) return raw.replace(/\\D/g, \"\");\n if (pattern === REGEXP_ONLY_DIGITS_AND_CHARS) return raw.replace(/[^a-zA-Z0-9]/g, \"\");\n let out = \"\";\n for (const ch of raw) {\n const next = out + ch;\n if (pattern.test(next)) out = next;\n }\n return out;\n};\n","import { signal } from \"@preact/signals\";\nimport type { ComponentChildren, JSX } from \"preact\";\nimport { useMemo, useRef } from \"preact/hooks\";\nimport { cn } from \"../../lib/utils\";\nimport { InputOTPContext } from \"./input-otp-context\";\nimport { filterOtpValue, REGEXP_ONLY_DIGITS } from \"./patterns\";\n\nexport type InputOTPProps = Omit<JSX.HTMLAttributes<HTMLDivElement>, \"onInput\" | \"onChange\"> & {\n maxLength?: number;\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n onValueChange?: (value: string) => void;\n pattern?: RegExp;\n disabled?: boolean;\n id?: string;\n name?: string;\n autoComplete?: string;\n children?: ComponentChildren;\n};\n\nconst activeSlotIndex = (focused: boolean, caret: number, len: number, max: number): number => {\n if (!focused) return -1;\n if (len >= max) return max - 1;\n return Math.min(Math.max(caret, 0), len, max - 1);\n};\n\nexport const InputOTP = ({\n maxLength = 6,\n value: controlledValue,\n defaultValue = \"\",\n onChange,\n onValueChange,\n pattern,\n disabled = false,\n id,\n name,\n autoComplete = \"one-time-code\",\n class: className,\n children,\n dir,\n \"aria-label\": ariaLabel,\n ...rest\n}: InputOTPProps) => {\n const isControlled = controlledValue !== undefined;\n const internal = useMemo(() => signal(defaultValue), []);\n const focused = useMemo(() => signal(false), []);\n const caretStart = useMemo(() => signal(0), []);\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const displayValue = isControlled ? (controlledValue ?? \"\") : internal.value;\n\n const bumpCaret = () => {\n requestAnimationFrame(() => {\n const el = inputRef.current;\n const len = displayValue.length;\n caretStart.value = el != null && typeof el.selectionStart === \"number\" ? el.selectionStart : len;\n });\n };\n\n const emit = (next: string) => {\n if (!isControlled) internal.value = next;\n onChange?.(next);\n onValueChange?.(next);\n };\n\n const handleInput = (event: JSX.TargetedEvent<HTMLInputElement>) => {\n let next = filterOtpValue(event.currentTarget.value, pattern);\n if (next.length > maxLength) next = next.slice(0, maxLength);\n emit(next);\n bumpCaret();\n };\n\n const activeIndex = activeSlotIndex(focused.value, caretStart.value, displayValue.length, maxLength);\n\n return (\n <InputOTPContext.Provider\n value={{\n value: displayValue,\n maxLength,\n disabled,\n focused: focused.value,\n activeIndex,\n inputRef\n }}\n >\n <div data-slot=\"input-otp\" dir={dir} class={cn(\"relative inline-flex\", className)} {...rest}>\n <div class=\"relative inline-flex items-center\">\n <div class=\"pointer-events-none flex items-center gap-1\">{children}</div>\n <input\n ref={inputRef}\n id={id}\n name={name}\n type=\"text\"\n autoComplete={autoComplete}\n inputMode={pattern === REGEXP_ONLY_DIGITS ? \"numeric\" : \"text\"}\n disabled={disabled}\n value={displayValue}\n maxLength={maxLength}\n aria-label={ariaLabel ?? \"One-time password\"}\n class={cn(\n \"absolute inset-0 z-20 h-full w-full cursor-default border-0 bg-transparent p-0 opacity-0 outline-none\",\n \"focus-visible:outline-none\"\n )}\n style={{ caretColor: \"transparent\" }}\n onInput={handleInput}\n onKeyDown={() => bumpCaret()}\n onKeyUp={() => bumpCaret()}\n onSelect={() => bumpCaret()}\n onFocus={() => {\n focused.value = true;\n bumpCaret();\n }}\n onBlur={() => {\n focused.value = false;\n }}\n onClick={() => bumpCaret()}\n />\n </div>\n </div>\n </InputOTPContext.Provider>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type InputOTPGroupProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\nexport const InputOTPGroup = ({ class: className, children, ...rest }: InputOTPGroupProps) => (\n <div role=\"group\" data-slot=\"input-otp-group\" class={cn(\"inline-flex items-center gap-1\", className)} {...rest}>\n {children}\n </div>\n);\n\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type InputOTPSeparatorProps = JSX.HTMLAttributes<HTMLSpanElement> & {\n children?: ComponentChildren;\n};\n\nexport const InputOTPSeparator = ({ class: className, children, ...rest }: InputOTPSeparatorProps) => (\n <span\n role=\"presentation\"\n data-slot=\"input-otp-separator\"\n class={cn(\"text-muted-foreground select-none\", className)}\n {...rest}\n >\n {children ?? \"-\"}\n </span>\n);\n","import type { JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { useInputOTP } from \"./input-otp-context\";\n\nexport type InputOTPSlotProps = JSX.HTMLAttributes<HTMLSpanElement> & {\n index: number;\n};\n\nexport const InputOTPSlot = ({ index, class: className, ...rest }: InputOTPSlotProps) => {\n const ctx = useInputOTP();\n const char = ctx.value[index] ?? \"\";\n const active = !ctx.disabled && ctx.focused && index === ctx.activeIndex;\n\n return (\n <span\n data-slot=\"input-otp-slot\"\n data-active={active ? \"true\" : \"false\"}\n class={cn(\n \"relative flex size-10 items-center justify-center rounded-md border border-input bg-background font-mono text-sm tabular-nums shadow-xs transition-[box-shadow,border-color]\",\n \"data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-[3px] data-[active=true]:ring-ring/50\",\n ctx.disabled && \"opacity-50\",\n className\n )}\n {...rest}\n >\n {char}\n </span>\n );\n};\n"]}
|