@kamod-ch/ui 1.1.0 → 1.3.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/README.md +12 -0
- package/dist/{Accordion-D1PiNspd.d.ts → Accordion-BiCBkB8o.d.ts} +7 -1
- package/dist/{AlertDialog-GadhKjPC.d.ts → AlertDialog-CZ2taZg4.d.ts} +3 -3
- package/dist/Button-OI3VvO-J.d.ts +84 -0
- package/dist/{Collapsible-CW1hQwqV.d.ts → Collapsible-BdQqvk35.d.ts} +6 -1
- package/dist/{ComboboxValue-BGfXgtZt.d.ts → ComboboxValue-Cq6zoDkt.d.ts} +1 -1
- package/dist/{Dialog-BOIteLfe.d.ts → Dialog-DdD1sMwk.d.ts} +12 -1
- package/dist/{DialogContent-cQHSRQdT.d.ts → DialogContent-YWzwWdSv.d.ts} +6 -1
- package/dist/{Drawer-CdjXZxxK.d.ts → Drawer-8xfn9KLf.d.ts} +2 -2
- package/dist/{Dropdown-CVbWVKok.d.ts → Dropdown-CzDJJgXQ.d.ts} +32 -27
- package/dist/{FieldTitle-aSgThW-B.d.ts → FieldTitle-hsI0Y6Zm.d.ts} +13 -13
- package/dist/{HoverCard-aVEEtkyO.d.ts → HoverCard-CBBr-tT9.d.ts} +14 -14
- package/dist/{Input-Cem05el9.d.ts → Input-C_X0Xpn2.d.ts} +11 -11
- package/dist/{PopoverTrigger-CH_Kx2mn.d.ts → PopoverTrigger-CIPAh0h0.d.ts} +14 -14
- package/dist/{RadioGroup-BaElzLwa.d.ts → RadioGroup-BDF3NaXQ.d.ts} +8 -8
- package/dist/{Sheet-DZ-p-aHY.d.ts → Sheet-DVt5iTiK.d.ts} +1 -1
- package/dist/{SidebarProvider-Bx7-BdQn.d.ts → SidebarProvider-CoVCItNd.d.ts} +18 -18
- package/dist/{Switch-CTTkNdqF.d.ts → Switch-BcNJFeRY.d.ts} +8 -8
- package/dist/{Tabs-CR-thcs6.d.ts → Tabs-CrXH3YED.d.ts} +18 -9
- package/dist/{Textarea-DbKkduOG.d.ts → Textarea-CST17pYW.d.ts} +11 -11
- package/dist/Toggle-BgvkYUI8.d.ts +49 -0
- package/dist/{ToggleGroup-UeYHzQe7.d.ts → ToggleGroup-CqYICGsS.d.ts} +42 -42
- package/dist/TreeProvider-Cpu8yo3y.d.ts +270 -0
- package/dist/Typography-Df9IVmw2.d.ts +64 -0
- package/dist/{chunk-ZM67EKZC.js → chunk-22G3DW5M.js} +4 -4
- package/dist/{chunk-ZM67EKZC.js.map → chunk-22G3DW5M.js.map} +1 -1
- package/dist/{chunk-BDK7CDEI.js → chunk-2F3PWEDR.js} +3 -3
- package/dist/{chunk-BDK7CDEI.js.map → chunk-2F3PWEDR.js.map} +1 -1
- package/dist/{chunk-ZHAGKFSO.js → chunk-2SPOI3MX.js} +3 -3
- package/dist/{chunk-ZHAGKFSO.js.map → chunk-2SPOI3MX.js.map} +1 -1
- package/dist/chunk-2UTJHQTS.js +162 -0
- package/dist/chunk-2UTJHQTS.js.map +1 -0
- package/dist/{chunk-NKKMM6CK.js → chunk-3AFRSB5R.js} +3 -3
- package/dist/{chunk-NKKMM6CK.js.map → chunk-3AFRSB5R.js.map} +1 -1
- package/dist/{chunk-LCMPFPBN.js → chunk-3ETRJPBL.js} +3 -3
- package/dist/{chunk-LCMPFPBN.js.map → chunk-3ETRJPBL.js.map} +1 -1
- package/dist/{chunk-WAPRVVDQ.js → chunk-3HBKDY64.js} +3 -3
- package/dist/{chunk-WAPRVVDQ.js.map → chunk-3HBKDY64.js.map} +1 -1
- package/dist/{chunk-PPYJQNE5.js → chunk-3XMFQKWB.js} +9 -5
- package/dist/chunk-3XMFQKWB.js.map +1 -0
- package/dist/{chunk-HCTZJYHK.js → chunk-4SQKSVBH.js} +6 -6
- package/dist/chunk-4SQKSVBH.js.map +1 -0
- package/dist/{chunk-ZVAW22GX.js → chunk-4ZFKDNSK.js} +3 -3
- package/dist/{chunk-ZVAW22GX.js.map → chunk-4ZFKDNSK.js.map} +1 -1
- package/dist/{chunk-IJ4ZRIR4.js → chunk-53FZEAOJ.js} +5 -5
- package/dist/{chunk-IJ4ZRIR4.js.map → chunk-53FZEAOJ.js.map} +1 -1
- package/dist/{chunk-BYG2ULS3.js → chunk-5ATODZ6L.js} +5 -7
- package/dist/chunk-5ATODZ6L.js.map +1 -0
- package/dist/{chunk-TXKPDNRD.js → chunk-5I7ULBDP.js} +3 -3
- package/dist/{chunk-TXKPDNRD.js.map → chunk-5I7ULBDP.js.map} +1 -1
- package/dist/{chunk-UEXTD7ZB.js → chunk-6HFTTHSY.js} +3 -3
- package/dist/{chunk-UEXTD7ZB.js.map → chunk-6HFTTHSY.js.map} +1 -1
- package/dist/{chunk-6RASPU5N.js → chunk-7LWAWZHM.js} +4 -11
- package/dist/chunk-7LWAWZHM.js.map +1 -0
- package/dist/{chunk-RHNI5UQO.js → chunk-A6ZZZFZN.js} +4 -4
- package/dist/{chunk-RHNI5UQO.js.map → chunk-A6ZZZFZN.js.map} +1 -1
- package/dist/{chunk-V63YIVKJ.js → chunk-APZXMU2X.js} +4 -4
- package/dist/{chunk-V63YIVKJ.js.map → chunk-APZXMU2X.js.map} +1 -1
- package/dist/{chunk-6FYSVMH7.js → chunk-AYLEWD77.js} +3 -3
- package/dist/{chunk-6FYSVMH7.js.map → chunk-AYLEWD77.js.map} +1 -1
- package/dist/{chunk-D3DQ4ICC.js → chunk-BZMD4EZC.js} +4 -11
- package/dist/chunk-BZMD4EZC.js.map +1 -0
- package/dist/{chunk-PU5J5EPY.js → chunk-C7TARE5T.js} +5 -5
- package/dist/{chunk-PU5J5EPY.js.map → chunk-C7TARE5T.js.map} +1 -1
- package/dist/{chunk-5FBD2NTR.js → chunk-DDRX6NNW.js} +6 -9
- package/dist/chunk-DDRX6NNW.js.map +1 -0
- package/dist/{chunk-HHLQYMPT.js → chunk-DUTKHOH3.js} +4 -4
- package/dist/{chunk-HHLQYMPT.js.map → chunk-DUTKHOH3.js.map} +1 -1
- package/dist/{chunk-24QD2FTA.js → chunk-EBXTNL52.js} +12 -15
- package/dist/chunk-EBXTNL52.js.map +1 -0
- package/dist/{chunk-STRBBF45.js → chunk-FOQ32NEP.js} +5 -5
- package/dist/chunk-FOQ32NEP.js.map +1 -0
- package/dist/{chunk-UIA74JVN.js → chunk-FXG53XY2.js} +5 -5
- package/dist/chunk-FXG53XY2.js.map +1 -0
- package/dist/{chunk-2KY7P27I.js → chunk-G7LTWXRN.js} +3 -3
- package/dist/{chunk-2KY7P27I.js.map → chunk-G7LTWXRN.js.map} +1 -1
- package/dist/{chunk-6BK3PIRX.js → chunk-GD3VBO44.js} +6 -6
- package/dist/{chunk-6BK3PIRX.js.map → chunk-GD3VBO44.js.map} +1 -1
- package/dist/{chunk-MD6HHORY.js → chunk-GPRE2VWB.js} +3 -3
- package/dist/{chunk-MD6HHORY.js.map → chunk-GPRE2VWB.js.map} +1 -1
- package/dist/{chunk-QZX3RFIC.js → chunk-HJF5AV4L.js} +11 -34
- package/dist/chunk-HJF5AV4L.js.map +1 -0
- package/dist/{chunk-QFDTG2ZJ.js → chunk-HWPROYKB.js} +3 -3
- package/dist/{chunk-QFDTG2ZJ.js.map → chunk-HWPROYKB.js.map} +1 -1
- package/dist/chunk-ISISDJ3Z.js +205 -0
- package/dist/chunk-ISISDJ3Z.js.map +1 -0
- package/dist/{chunk-3LIT5GWF.js → chunk-IW43BO47.js} +57 -19
- package/dist/chunk-IW43BO47.js.map +1 -0
- package/dist/{chunk-CLEC2RMU.js → chunk-JKEILBHG.js} +3 -3
- package/dist/{chunk-CLEC2RMU.js.map → chunk-JKEILBHG.js.map} +1 -1
- package/dist/{chunk-TFLSEEM4.js → chunk-KCN3GXRK.js} +3 -3
- package/dist/{chunk-TFLSEEM4.js.map → chunk-KCN3GXRK.js.map} +1 -1
- package/dist/{chunk-EMUPVA2F.js → chunk-KHV3WV6T.js} +4 -4
- package/dist/{chunk-EMUPVA2F.js.map → chunk-KHV3WV6T.js.map} +1 -1
- package/dist/{chunk-G6TV6TF7.js → chunk-KJ5PYCJG.js} +4 -12
- package/dist/chunk-KJ5PYCJG.js.map +1 -0
- package/dist/{chunk-5KS2VSX2.js → chunk-LAM4GIME.js} +4 -4
- package/dist/chunk-LAM4GIME.js.map +1 -0
- package/dist/{chunk-OCLVMKVC.js → chunk-MDXTENZ4.js} +8 -31
- package/dist/chunk-MDXTENZ4.js.map +1 -0
- package/dist/{chunk-CP55TVOV.js → chunk-MJUKNUFV.js} +3 -3
- package/dist/{chunk-CP55TVOV.js.map → chunk-MJUKNUFV.js.map} +1 -1
- package/dist/{chunk-GGTDJEE2.js → chunk-MTNLY7AY.js} +3 -3
- package/dist/{chunk-GGTDJEE2.js.map → chunk-MTNLY7AY.js.map} +1 -1
- package/dist/{chunk-67J4KBOW.js → chunk-NBIBBLP6.js} +10 -52
- package/dist/chunk-NBIBBLP6.js.map +1 -0
- package/dist/chunk-NBP4J2QF.js +200 -0
- package/dist/chunk-NBP4J2QF.js.map +1 -0
- package/dist/{chunk-NGKQBNZ5.js → chunk-NJYJCMKY.js} +3 -3
- package/dist/{chunk-NGKQBNZ5.js.map → chunk-NJYJCMKY.js.map} +1 -1
- package/dist/{chunk-COPT6I2D.js → chunk-NSEY5IC6.js} +9 -10
- package/dist/chunk-NSEY5IC6.js.map +1 -0
- package/dist/{chunk-UARVH66B.js → chunk-O4PHGLXF.js} +5 -5
- package/dist/{chunk-UARVH66B.js.map → chunk-O4PHGLXF.js.map} +1 -1
- package/dist/{chunk-J4DMQV64.js → chunk-OCZC4PDM.js} +3 -3
- package/dist/{chunk-J4DMQV64.js.map → chunk-OCZC4PDM.js.map} +1 -1
- package/dist/{chunk-IQH3XSOI.js → chunk-ODYHA3O5.js} +4 -4
- package/dist/{chunk-IQH3XSOI.js.map → chunk-ODYHA3O5.js.map} +1 -1
- package/dist/chunk-OJEZZVZB.js +9 -0
- package/dist/{chunk-CMBERB5B.js.map → chunk-OJEZZVZB.js.map} +1 -1
- package/dist/{chunk-7IOAIEIA.js → chunk-OTXP2QJ7.js} +6 -6
- package/dist/{chunk-7IOAIEIA.js.map → chunk-OTXP2QJ7.js.map} +1 -1
- package/dist/{chunk-JSHUWI3C.js → chunk-OUVUK3E7.js} +9 -9
- package/dist/chunk-OUVUK3E7.js.map +1 -0
- package/dist/{chunk-3KB54OYF.js → chunk-P6ICWO5B.js} +3 -3
- package/dist/{chunk-3KB54OYF.js.map → chunk-P6ICWO5B.js.map} +1 -1
- package/dist/{chunk-GIU6BZTW.js → chunk-P7PPE4P5.js} +8 -11
- package/dist/chunk-P7PPE4P5.js.map +1 -0
- package/dist/{chunk-XGFJJ2YB.js → chunk-PVQUVEZV.js} +4 -11
- package/dist/chunk-PVQUVEZV.js.map +1 -0
- package/dist/{chunk-LCWXIQKA.js → chunk-Q3RL7TOY.js} +4 -4
- package/dist/chunk-Q3RL7TOY.js.map +1 -0
- package/dist/{chunk-5Q4RBIMZ.js → chunk-Q5B6ROW6.js} +3 -3
- package/dist/{chunk-5Q4RBIMZ.js.map → chunk-Q5B6ROW6.js.map} +1 -1
- package/dist/{chunk-262EK2XT.js → chunk-Q7ZDP6DS.js} +9 -7
- package/dist/chunk-Q7ZDP6DS.js.map +1 -0
- package/dist/{chunk-4IBTERDG.js → chunk-QFTOABOJ.js} +3 -3
- package/dist/{chunk-4IBTERDG.js.map → chunk-QFTOABOJ.js.map} +1 -1
- package/dist/{chunk-JURNPBSW.js → chunk-QINEFXUA.js} +3 -3
- package/dist/{chunk-JURNPBSW.js.map → chunk-QINEFXUA.js.map} +1 -1
- package/dist/{chunk-FIOKWIJP.js → chunk-QWSD34JA.js} +4 -4
- package/dist/{chunk-FIOKWIJP.js.map → chunk-QWSD34JA.js.map} +1 -1
- package/dist/{chunk-Q5IUIA6B.js → chunk-RLBAA7WW.js} +3 -3
- package/dist/{chunk-Q5IUIA6B.js.map → chunk-RLBAA7WW.js.map} +1 -1
- package/dist/{chunk-MJQ6R345.js → chunk-SEC7UN45.js} +5 -5
- package/dist/chunk-SEC7UN45.js.map +1 -0
- package/dist/chunk-SIA46B4Q.js +9 -0
- package/dist/{chunk-RTIFG4XT.js.map → chunk-SIA46B4Q.js.map} +1 -1
- package/dist/{chunk-X4HPHMYW.js → chunk-TMPADU74.js} +4 -4
- package/dist/{chunk-X4HPHMYW.js.map → chunk-TMPADU74.js.map} +1 -1
- package/dist/{chunk-YTHUHPE5.js → chunk-USPWL4KC.js} +3 -3
- package/dist/{chunk-YTHUHPE5.js.map → chunk-USPWL4KC.js.map} +1 -1
- package/dist/{chunk-U2UNWXBC.js → chunk-VEQ7X2PO.js} +7 -6
- package/dist/chunk-VEQ7X2PO.js.map +1 -0
- package/dist/{chunk-YZLPO4B2.js → chunk-WRXXU5F6.js} +4 -11
- package/dist/chunk-WRXXU5F6.js.map +1 -0
- package/dist/{chunk-XNYAQZIB.js → chunk-X4B6I3M4.js} +4 -4
- package/dist/{chunk-XNYAQZIB.js.map → chunk-X4B6I3M4.js.map} +1 -1
- package/dist/{chunk-JNF7FDJO.js → chunk-XCYEWILH.js} +4 -4
- package/dist/{chunk-JNF7FDJO.js.map → chunk-XCYEWILH.js.map} +1 -1
- package/dist/{chunk-V2MG5Y5F.js → chunk-XGVQXRLA.js} +4 -4
- package/dist/chunk-XGVQXRLA.js.map +1 -0
- package/dist/chunk-XIANSPQO.js +11 -0
- package/dist/chunk-XIANSPQO.js.map +1 -0
- package/dist/{chunk-UNWEH4Z6.js → chunk-XOMPJYYA.js} +4 -4
- package/dist/chunk-XOMPJYYA.js.map +1 -0
- package/dist/{chunk-UXWUFNXY.js → chunk-XSYSV3R3.js} +3 -3
- package/dist/{chunk-UXWUFNXY.js.map → chunk-XSYSV3R3.js.map} +1 -1
- package/dist/{chunk-ERBGZZ2U.js → chunk-XZYJUJED.js} +4 -4
- package/dist/chunk-XZYJUJED.js.map +1 -0
- package/dist/chunk-YMKC3H55.js +921 -0
- package/dist/chunk-YMKC3H55.js.map +1 -0
- package/dist/{chunk-PFV7YIEP.js → chunk-Z4JNYSV3.js} +4 -4
- package/dist/{chunk-PFV7YIEP.js.map → chunk-Z4JNYSV3.js.map} +1 -1
- package/dist/{chunk-4V3WHQJE.js → chunk-ZLSCHWTN.js} +4 -4
- package/dist/{chunk-4V3WHQJE.js.map → chunk-ZLSCHWTN.js.map} +1 -1
- package/dist/chunk-ZQ2WOX4X.js +29 -0
- package/dist/chunk-ZQ2WOX4X.js.map +1 -0
- package/dist/{chunk-NILG56Z7.js → chunk-ZROHNZDC.js} +4 -4
- package/dist/{chunk-NILG56Z7.js.map → chunk-ZROHNZDC.js.map} +1 -1
- package/dist/{chunk-PGOCR4LG.js → chunk-ZVYCUG4N.js} +4 -4
- package/dist/chunk-ZVYCUG4N.js.map +1 -0
- package/dist/components/accordion/index.d.ts +2 -2
- package/dist/components/accordion/index.js +3 -2
- package/dist/components/alert/index.d.ts +26 -26
- package/dist/components/alert/index.js +2 -2
- package/dist/components/alert-dialog/index.d.ts +6 -5
- package/dist/components/alert-dialog/index.js +6 -6
- package/dist/components/aspect-ratio/index.js +2 -2
- package/dist/components/avatar/index.d.ts +11 -11
- package/dist/components/avatar/index.js +2 -2
- package/dist/components/badge/index.d.ts +112 -112
- package/dist/components/badge/index.js +2 -2
- package/dist/components/breadcrumb/index.js +2 -2
- package/dist/components/button/index.d.ts +51 -51
- package/dist/components/button/index.js +3 -3
- package/dist/components/button-group/index.js +2 -2
- package/dist/components/calendar/index.js +10 -10
- package/dist/components/card/index.d.ts +22 -22
- package/dist/components/card/index.js +2 -1
- package/dist/components/carousel/index.js +3 -3
- package/dist/components/chart/index.js +2 -2
- package/dist/components/checkbox/index.js +2 -2
- package/dist/components/collapsible/index.d.ts +2 -2
- package/dist/components/collapsible/index.js +3 -2
- package/dist/components/combobox/index.d.ts +2 -2
- package/dist/components/combobox/index.js +5 -5
- package/dist/components/command/index.js +7 -7
- package/dist/components/context-menu/index.d.ts +11 -11
- package/dist/components/context-menu/index.js +3 -3
- package/dist/components/data-table/index.js +3 -3
- package/dist/components/date-picker/index.js +6 -6
- package/dist/components/dialog/index.d.ts +26 -5
- package/dist/components/dialog/index.js +5 -5
- package/dist/components/direction/index.js +2 -2
- package/dist/components/drawer/index.d.ts +5 -4
- package/dist/components/drawer/index.js +5 -5
- package/dist/components/dropdown/index.d.ts +3 -3
- package/dist/components/dropdown/index.js +3 -3
- package/dist/components/dropzone/index.js +3 -3
- package/dist/components/empty/index.d.ts +6 -6
- package/dist/components/empty/index.js +2 -2
- package/dist/components/field/index.d.ts +2 -2
- package/dist/components/field/index.js +4 -4
- package/dist/components/hover-card/index.d.ts +2 -2
- package/dist/components/hover-card/index.js +2 -1
- package/dist/components/image/index.js +2 -2
- package/dist/components/input/index.d.ts +12 -12
- package/dist/components/input/index.js +3 -2
- package/dist/components/input-group/index.d.ts +56 -56
- package/dist/components/input-group/index.js +5 -5
- package/dist/components/input-otp/index.js +2 -2
- package/dist/components/item/index.d.ts +31 -31
- package/dist/components/item/index.js +3 -3
- package/dist/components/kbd/index.d.ts +8 -8
- package/dist/components/kbd/index.js +2 -2
- package/dist/components/label/index.d.ts +22 -22
- package/dist/components/label/index.js +3 -2
- package/dist/components/locale-segment-group/index.js +2 -2
- package/dist/components/menubar/index.js +3 -3
- package/dist/components/native-select/index.d.ts +34 -34
- package/dist/components/native-select/index.js +2 -1
- package/dist/components/navigation-menu/index.d.ts +2 -2
- package/dist/components/navigation-menu/index.js +3 -3
- package/dist/components/pagination/index.d.ts +1 -1
- package/dist/components/pagination/index.js +3 -3
- package/dist/components/popover/index.d.ts +22 -22
- package/dist/components/popover/index.js +4 -3
- package/dist/components/progress/index.js +2 -2
- package/dist/components/prose/index.js +2 -2
- package/dist/components/radio-group/index.d.ts +2 -2
- package/dist/components/radio-group/index.js +3 -3
- package/dist/components/scroll-area/index.js +2 -2
- package/dist/components/select/index.js +3 -3
- package/dist/components/selectable-card/index.js +3 -3
- package/dist/components/separator/index.d.ts +8 -8
- package/dist/components/separator/index.js +3 -2
- package/dist/components/sheet/index.d.ts +5 -4
- package/dist/components/sheet/index.js +5 -5
- package/dist/components/sidebar/index.d.ts +3 -3
- package/dist/components/sidebar/index.js +10 -10
- package/dist/components/skeleton/index.d.ts +22 -22
- package/dist/components/skeleton/index.js +2 -1
- package/dist/components/slider/index.js +2 -2
- package/dist/components/spinner/index.js +2 -2
- package/dist/components/switch/index.d.ts +1 -1
- package/dist/components/switch/index.js +2 -2
- package/dist/components/table/index.js +3 -3
- package/dist/components/tabs/index.d.ts +2 -2
- package/dist/components/tabs/index.js +3 -3
- package/dist/components/textarea/index.d.ts +12 -12
- package/dist/components/textarea/index.js +3 -2
- package/dist/components/theme-toggle/index.js +4 -4
- package/dist/components/toggle/index.d.ts +1 -1
- package/dist/components/toggle/index.js +2 -2
- package/dist/components/toggle-group/index.d.ts +2 -2
- package/dist/components/toggle-group/index.js +2 -2
- package/dist/components/tree/index.d.ts +24 -0
- package/dist/components/tree/index.js +5 -0
- package/dist/components/tree/index.js.map +1 -0
- package/dist/components/typography/index.d.ts +2 -2
- package/dist/components/typography/index.js +2 -2
- package/dist/components/video/index.js +2 -2
- package/dist/index.d.ts +25 -24
- package/dist/index.js +80 -78
- package/dist/lib/interactive/index.js +1 -1
- package/dist/lib/utils.d.ts +2 -1
- package/dist/lib/utils.js +1 -1
- package/dist/{navigationMenuTriggerStyle-BWnESpon.d.ts → navigationMenuTriggerStyle-DUhqCYxO.d.ts} +1 -1
- package/dist/theme.css +16 -0
- package/dist/utils.d.ts +2 -0
- package/dist/utils.js +3 -0
- package/dist/utils.js.map +1 -0
- package/package.json +34 -25
- package/dist/Button-vQnkiVTI.d.ts +0 -84
- package/dist/Toggle-CseZl7XN.d.ts +0 -49
- package/dist/Typography-ccTtE182.d.ts +0 -64
- package/dist/chunk-24QD2FTA.js.map +0 -1
- package/dist/chunk-262EK2XT.js.map +0 -1
- package/dist/chunk-3LIT5GWF.js.map +0 -1
- package/dist/chunk-5FBD2NTR.js.map +0 -1
- package/dist/chunk-5KS2VSX2.js.map +0 -1
- package/dist/chunk-67J4KBOW.js.map +0 -1
- package/dist/chunk-6RASPU5N.js.map +0 -1
- package/dist/chunk-BYG2ULS3.js.map +0 -1
- package/dist/chunk-CMBERB5B.js +0 -9
- package/dist/chunk-COPT6I2D.js.map +0 -1
- package/dist/chunk-D3DQ4ICC.js.map +0 -1
- package/dist/chunk-ERBGZZ2U.js.map +0 -1
- package/dist/chunk-G6TV6TF7.js.map +0 -1
- package/dist/chunk-GIU6BZTW.js.map +0 -1
- package/dist/chunk-HCTZJYHK.js.map +0 -1
- package/dist/chunk-JSHUWI3C.js.map +0 -1
- package/dist/chunk-LCWXIQKA.js.map +0 -1
- package/dist/chunk-MJQ6R345.js.map +0 -1
- package/dist/chunk-MKG3UAP6.js +0 -347
- package/dist/chunk-MKG3UAP6.js.map +0 -1
- package/dist/chunk-MS2ZNYCJ.js +0 -9
- package/dist/chunk-MS2ZNYCJ.js.map +0 -1
- package/dist/chunk-OCLVMKVC.js.map +0 -1
- package/dist/chunk-PGOCR4LG.js.map +0 -1
- package/dist/chunk-PPYJQNE5.js.map +0 -1
- package/dist/chunk-QZX3RFIC.js.map +0 -1
- package/dist/chunk-RTIFG4XT.js +0 -9
- package/dist/chunk-STRBBF45.js.map +0 -1
- package/dist/chunk-U2UNWXBC.js.map +0 -1
- package/dist/chunk-UEGIKBX6.js +0 -385
- package/dist/chunk-UEGIKBX6.js.map +0 -1
- package/dist/chunk-UIA74JVN.js.map +0 -1
- package/dist/chunk-UNWEH4Z6.js.map +0 -1
- package/dist/chunk-V2MG5Y5F.js.map +0 -1
- package/dist/chunk-X2YUFNK7.js +0 -18
- package/dist/chunk-X2YUFNK7.js.map +0 -1
- package/dist/chunk-XGFJJ2YB.js.map +0 -1
- package/dist/chunk-YZLPO4B2.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/navigation-menu/navigation-menu-context.tsx","../src/components/navigation-menu/NavigationMenu.tsx","../src/components/navigation-menu/NavigationMenuContent.tsx","../src/components/navigation-menu/NavigationMenuItem.tsx","../src/components/navigation-menu/NavigationMenuLink.tsx","../src/components/navigation-menu/NavigationMenuList.tsx","../src/components/navigation-menu/navigationMenuTriggerStyle.ts","../src/components/navigation-menu/NavigationMenuTrigger.tsx","../src/components/navigation-menu/index.ts"],"names":["jsx","useMemo"],"mappings":"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","file":"chunk-V63YIVKJ.js","sourcesContent":["import { type signal } from \"@preact/signals\";\nimport { createContext } from \"preact\";\nimport { useContext } from \"preact/hooks\";\n\nexport type NavigationMenuRootContextValue = {\n openValue: ReturnType<typeof signal<string | null>>;\n delayDuration: number;\n skipDelayDuration: number;\n rootRef: { current: HTMLElement | null };\n openTimerRef: { current: ReturnType<typeof setTimeout> | null };\n closeTimerRef: { current: ReturnType<typeof setTimeout> | null };\n lastOpenAtRef: { current: number };\n requestOpen: (itemValue: string) => void;\n requestClose: (delayMs?: number) => void;\n clearTimers: () => void;\n toggleItem: (itemValue: string) => void;\n};\n\nexport const NavigationMenuRootContext = createContext<NavigationMenuRootContextValue | null>(null);\n\nexport const useNavigationMenuRoot = () => {\n const ctx = useContext(NavigationMenuRootContext);\n if (!ctx) throw new Error(\"NavigationMenu subcomponents must be used within NavigationMenu\");\n return ctx;\n};\n\nexport type NavigationMenuItemContextValue = {\n value: string;\n};\n\nexport const NavigationMenuItemContext = createContext<NavigationMenuItemContextValue | null>(null);\n\nexport const useNavigationMenuItemCtx = () => {\n const ctx = useContext(NavigationMenuItemContext);\n if (!ctx)\n throw new Error(\n \"NavigationMenuTrigger and NavigationMenuContent must be inside NavigationMenuItem\",\n );\n return ctx;\n};\n","import { signal } from \"@preact/signals\";\nimport type { ComponentChildren, JSX } from \"preact\";\nimport { useEffect, useMemo, useRef } from \"preact/hooks\";\nimport { createDismissableLayer } from \"../../lib/interactive\";\nimport { cn } from \"../../lib/utils\";\nimport {\n NavigationMenuRootContext,\n type NavigationMenuRootContextValue,\n} from \"./navigation-menu-context\";\n\nexport type NavigationMenuProps = JSX.HTMLAttributes<HTMLElement> & {\n children?: ComponentChildren;\n /** Delay before opening a submenu on hover (ms). */\n delayDuration?: number;\n /** After opening, subsequent opens skip the delay for this many ms. */\n skipDelayDuration?: number;\n /** Passed to the root `nav` for RTL. */\n dir?: \"ltr\" | \"rtl\";\n};\n\nexport const NavigationMenu = ({\n class: className,\n children,\n delayDuration = 200,\n skipDelayDuration = 300,\n dir,\n ...rest\n}: NavigationMenuProps) => {\n const openValue = useMemo(() => signal<string | null>(null), []);\n const rootRef = useRef<HTMLElement | null>(null);\n const openTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const closeTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const lastOpenAtRef = useRef(0);\n\n const ctx = useMemo<NavigationMenuRootContextValue>(() => {\n const clearTimers = () => {\n if (openTimerRef.current) {\n clearTimeout(openTimerRef.current);\n openTimerRef.current = null;\n }\n if (closeTimerRef.current) {\n clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n }\n };\n\n return {\n openValue,\n delayDuration,\n skipDelayDuration,\n rootRef,\n openTimerRef,\n closeTimerRef,\n lastOpenAtRef,\n clearTimers,\n requestOpen: (itemValue: string) => {\n clearTimers();\n const now = Date.now();\n const skip = now - lastOpenAtRef.current < skipDelayDuration && lastOpenAtRef.current > 0;\n const run = () => {\n openValue.value = itemValue;\n lastOpenAtRef.current = Date.now();\n };\n if (skip || delayDuration <= 0) {\n run();\n } else {\n openTimerRef.current = setTimeout(run, delayDuration);\n }\n },\n requestClose: (delayMs = 120) => {\n clearTimers();\n closeTimerRef.current = setTimeout(() => {\n openValue.value = null;\n closeTimerRef.current = null;\n }, delayMs);\n },\n toggleItem: (itemValue: string) => {\n clearTimers();\n openValue.value = openValue.value === itemValue ? null : itemValue;\n if (openValue.value) lastOpenAtRef.current = Date.now();\n },\n };\n }, [openValue, delayDuration, skipDelayDuration]);\n\n useEffect(() => {\n ctx.delayDuration = delayDuration;\n ctx.skipDelayDuration = skipDelayDuration;\n }, [ctx, delayDuration, skipDelayDuration]);\n\n useEffect(() => {\n const layer = createDismissableLayer({\n root: () => rootRef.current,\n open: () => openValue.value != null,\n onDismiss: () => {\n openValue.value = null;\n },\n });\n return () => layer.dispose();\n }, [openValue]);\n\n return (\n <NavigationMenuRootContext.Provider value={ctx}>\n <nav\n ref={rootRef}\n data-slot=\"navigation-menu\"\n aria-label=\"Main\"\n dir={dir}\n class={cn(\"relative z-10 flex max-w-max flex-1 items-center justify-center\", className)}\n {...rest}\n >\n {children}\n </nav>\n </NavigationMenuRootContext.Provider>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { useNavigationMenuItemCtx, useNavigationMenuRoot } from \"./navigation-menu-context\";\n\nexport type NavigationMenuContentProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\nexport const NavigationMenuContent = ({\n class: className,\n children,\n onPointerEnter,\n onPointerLeave,\n ...rest\n}: NavigationMenuContentProps) => {\n const root = useNavigationMenuRoot();\n const { value } = useNavigationMenuItemCtx();\n const open = root.openValue.value === value;\n\n const handlePointerEnter = (e: JSX.TargetedPointerEvent<HTMLDivElement>) => {\n onPointerEnter?.(e);\n root.clearTimers();\n };\n\n const handlePointerLeave = (e: JSX.TargetedPointerEvent<HTMLDivElement>) => {\n onPointerLeave?.(e);\n if (e.defaultPrevented) return;\n root.requestClose();\n };\n\n return (\n <div\n data-slot=\"navigation-menu-content\"\n data-state={open ? \"open\" : \"closed\"}\n class={cn(\n \"absolute start-0 top-full z-50 mt-1.5 w-max origin-top-start overflow-hidden rounded-md border border-border bg-popover p-2 text-popover-foreground shadow-md outline-none\",\n \"transition-[opacity,transform] duration-200\",\n open\n ? \"pointer-events-auto visible opacity-100\"\n : \"pointer-events-none invisible opacity-0\",\n className,\n )}\n onPointerEnter={handlePointerEnter}\n onPointerLeave={handlePointerLeave}\n {...rest}\n >\n {children}\n </div>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { useMemo } from \"preact/hooks\";\nimport { createIdFactory } from \"../../lib/interactive\";\nimport { cn } from \"../../lib/utils\";\nimport { NavigationMenuItemContext } from \"./navigation-menu-context\";\n\nconst nextItemValue = createIdFactory(\"nm-item\");\n\nexport type NavigationMenuItemProps = JSX.HTMLAttributes<HTMLLIElement> & {\n children?: ComponentChildren;\n /** Stable id for this branch; auto-generated when omitted. */\n value?: string;\n};\n\nexport const NavigationMenuItem = ({\n class: className,\n children,\n value: valueProp,\n ...rest\n}: NavigationMenuItemProps) => {\n const value = useMemo(() => nextItemValue(valueProp), [valueProp]);\n\n return (\n <NavigationMenuItemContext.Provider value={{ value }}>\n <li data-slot=\"navigation-menu-item\" class={cn(\"relative\", className)} {...rest}>\n {children}\n </li>\n </NavigationMenuItemContext.Provider>\n );\n};\n","import { type ComponentChildren, cloneElement, isValidElement, type JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { useNavigationMenuItemCtx, useNavigationMenuRoot } from \"./navigation-menu-context\";\n\nexport type NavigationMenuLinkProps = JSX.AnchorHTMLAttributes<HTMLAnchorElement> & {\n active?: boolean;\n children?: ComponentChildren;\n asChild?: boolean;\n};\n\nconst callRef = <T extends HTMLElement>(ref: unknown, node: T | null) => {\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref && typeof ref === \"object\" && \"current\" in ref) {\n (ref as { current: T | null }).current = node;\n }\n};\n\nexport const NavigationMenuLink = ({\n class: className,\n active = false,\n asChild = false,\n children,\n onClick,\n ref: outerRef,\n ...rest\n}: NavigationMenuLinkProps) => {\n const root = useNavigationMenuRoot();\n const { value } = useNavigationMenuItemCtx();\n const open = root.openValue.value === value;\n\n const linkClass = cn(\n \"block select-none rounded-sm px-3 py-2 text-sm no-underline outline-none transition-colors\",\n \"hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground\",\n active ? \"bg-accent text-accent-foreground\" : \"\",\n className,\n );\n\n const handleClick = (event: JSX.TargetedMouseEvent<HTMLElement>) => {\n onClick?.(event as JSX.TargetedMouseEvent<HTMLAnchorElement>);\n if (event.defaultPrevented) return;\n root.clearTimers();\n root.openValue.value = null;\n };\n\n if (asChild) {\n if (!isValidElement(children)) return null;\n const childProps = (children.props ?? {}) as JSX.HTMLAttributes<HTMLElement> & {\n ref?: unknown;\n onClick?: (event: JSX.TargetedMouseEvent<HTMLElement>) => void;\n class?: string;\n className?: string;\n };\n const mergedClass = cn(linkClass, childProps.class, childProps.className);\n return cloneElement(children, {\n ...(childProps as Record<string, unknown>),\n ...(rest as Record<string, unknown>),\n \"data-slot\": \"navigation-menu-link\",\n \"data-active\": active ? \"\" : undefined,\n \"data-state\": open ? \"open\" : \"closed\",\n class: mergedClass,\n onClick: (event: JSX.TargetedMouseEvent<HTMLElement>) => {\n childProps.onClick?.(event);\n handleClick(event);\n },\n ref: (node: HTMLElement | null) => {\n callRef(childProps.ref, node);\n callRef(outerRef, node);\n },\n } as never);\n }\n\n return (\n <a\n ref={(node) => callRef(outerRef, node)}\n data-slot=\"navigation-menu-link\"\n data-active={active ? \"\" : undefined}\n data-state={open ? \"open\" : \"closed\"}\n aria-current={active ? \"page\" : undefined}\n class={linkClass}\n onClick={(e) => handleClick(e as unknown as JSX.TargetedMouseEvent<HTMLElement>)}\n {...rest}\n >\n {children}\n </a>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type NavigationMenuListProps = JSX.HTMLAttributes<HTMLUListElement> & {\n children?: ComponentChildren;\n};\n\nexport const NavigationMenuList = ({\n class: className,\n children,\n ...rest\n}: NavigationMenuListProps) => (\n <ul\n data-slot=\"navigation-menu-list\"\n class={cn(\"group flex flex-1 list-none items-center justify-center gap-1\", className)}\n {...rest}\n >\n {children}\n </ul>\n);\n","import { tv } from \"tailwind-variants\";\n\n/** Matches shadcn `navigationMenuTriggerStyle()` for use on `NavigationMenuLink` with `asChild`. */\nexport const navigationMenuTriggerStyle = tv({\n base: [\n \"group inline-flex h-9 w-max items-center justify-center gap-1 rounded-md bg-background px-4 py-2 text-sm font-medium outline-none\",\n \"transition-[color,box-shadow] hover:bg-accent hover:text-accent-foreground\",\n \"focus:bg-accent focus:text-accent-foreground focus-visible:ring-[3px] focus-visible:ring-outline/50 focus-visible:outline-1\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"data-[state=open]:bg-accent/50 data-[state=open]:text-accent-foreground data-[state=open]:hover:bg-accent data-[state=open]:focus:bg-accent\",\n ],\n});\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { useNavigationMenuItemCtx, useNavigationMenuRoot } from \"./navigation-menu-context\";\nimport { navigationMenuTriggerStyle } from \"./navigationMenuTriggerStyle\";\n\nconst ChevronDownIcon = ({ class: className }: { class?: string }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden\n class={cn(\n \"size-4 shrink-0 transition duration-200 group-data-[state=open]:rotate-180 rtl:-rotate-180 group-data-[state=open]:rtl:rotate-0\",\n className,\n )}\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n);\n\nexport type NavigationMenuTriggerProps = JSX.ButtonHTMLAttributes<HTMLButtonElement> & {\n children?: ComponentChildren;\n};\n\nexport const NavigationMenuTrigger = ({\n class: className,\n children,\n onClick,\n onPointerEnter,\n onPointerLeave,\n ...rest\n}: NavigationMenuTriggerProps) => {\n const root = useNavigationMenuRoot();\n const { value } = useNavigationMenuItemCtx();\n const open = root.openValue.value === value;\n\n const handlePointerEnter = (e: JSX.TargetedPointerEvent<HTMLButtonElement>) => {\n onPointerEnter?.(e);\n if (e.defaultPrevented) return;\n root.requestOpen(value);\n };\n\n const handlePointerLeave = (e: JSX.TargetedPointerEvent<HTMLButtonElement>) => {\n onPointerLeave?.(e);\n if (e.defaultPrevented) return;\n root.requestClose();\n };\n\n const handleClick = (e: JSX.TargetedMouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n root.toggleItem(value);\n };\n\n return (\n <button\n type=\"button\"\n data-slot=\"navigation-menu-trigger\"\n data-state={open ? \"open\" : \"closed\"}\n aria-expanded={open}\n class={cn(navigationMenuTriggerStyle(), \"group\", className)}\n onPointerEnter={handlePointerEnter}\n onPointerLeave={handlePointerLeave}\n onClick={handleClick}\n {...rest}\n >\n {children}\n <ChevronDownIcon />\n </button>\n );\n};\n","import { NavigationMenu } from \"./NavigationMenu\";\nimport { NavigationMenuContent } from \"./NavigationMenuContent\";\nimport { NavigationMenuItem } from \"./NavigationMenuItem\";\nimport { NavigationMenuLink } from \"./NavigationMenuLink\";\nimport { NavigationMenuList } from \"./NavigationMenuList\";\nimport { NavigationMenuTrigger } from \"./NavigationMenuTrigger\";\nimport { navigationMenuTriggerStyle } from \"./navigationMenuTriggerStyle\";\n\nexport type { NavigationMenuProps } from \"./NavigationMenu\";\nexport type { NavigationMenuContentProps } from \"./NavigationMenuContent\";\nexport type { NavigationMenuItemProps } from \"./NavigationMenuItem\";\nexport type { NavigationMenuLinkProps } from \"./NavigationMenuLink\";\nexport type { NavigationMenuListProps } from \"./NavigationMenuList\";\nexport type { NavigationMenuTriggerProps } from \"./NavigationMenuTrigger\";\nexport {\n NavigationMenu,\n NavigationMenuContent,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n NavigationMenuTrigger,\n navigationMenuTriggerStyle,\n};\n\nexport default {\n Root: NavigationMenu,\n List: NavigationMenuList,\n Item: NavigationMenuItem,\n Link: NavigationMenuLink,\n Trigger: NavigationMenuTrigger,\n Content: NavigationMenuContent,\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/navigation-menu/navigation-menu-context.tsx","../src/components/navigation-menu/NavigationMenu.tsx","../src/components/navigation-menu/NavigationMenuContent.tsx","../src/components/navigation-menu/NavigationMenuItem.tsx","../src/components/navigation-menu/NavigationMenuLink.tsx","../src/components/navigation-menu/NavigationMenuList.tsx","../src/components/navigation-menu/navigationMenuTriggerStyle.ts","../src/components/navigation-menu/NavigationMenuTrigger.tsx","../src/components/navigation-menu/index.ts"],"names":["jsx","useMemo"],"mappings":";;;;;;;;AAkBO,IAAM,yBAAA,GAA4B,cAAqD,IAAI,CAAA;AAE3F,IAAM,wBAAwB,MAAM;AACzC,EAAA,MAAM,GAAA,GAAM,WAAW,yBAAyB,CAAA;AAChD,EAAA,IAAI,CAAC,GAAA,EAAK,MAAM,IAAI,MAAM,iEAAiE,CAAA;AAC3F,EAAA,OAAO,GAAA;AACT,CAAA;AAMO,IAAM,yBAAA,GAA4B,cAAqD,IAAI,CAAA;AAE3F,IAAM,2BAA2B,MAAM;AAC5C,EAAA,MAAM,GAAA,GAAM,WAAW,yBAAyB,CAAA;AAChD,EAAA,IAAI,CAAC,GAAA;AACH,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AACF,EAAA,OAAO,GAAA;AACT,CAAA;ACnBO,IAAM,iBAAiB,CAAC;AAAA,EAC7B,KAAA,EAAO,SAAA;AAAA,EACP,QAAA;AAAA,EACA,aAAA,GAAgB,GAAA;AAAA,EAChB,iBAAA,GAAoB,GAAA;AAAA,EACpB,GAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA2B;AACzB,EAAA,MAAM,YAAY,OAAA,CAAQ,MAAM,OAAsB,IAAI,CAAA,EAAG,EAAE,CAAA;AAC/D,EAAA,MAAM,OAAA,GAAU,OAA2B,IAAI,CAAA;AAC/C,EAAA,MAAM,YAAA,GAAe,OAA6C,IAAI,CAAA;AACtE,EAAA,MAAM,aAAA,GAAgB,OAA6C,IAAI,CAAA;AACvE,EAAA,MAAM,aAAA,GAAgB,OAAO,CAAC,CAAA;AAE9B,EAAA,MAAM,GAAA,GAAM,QAAwC,MAAM;AACxD,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,IAAI,aAAa,OAAA,EAAS;AACxB,QAAA,YAAA,CAAa,aAAa,OAAO,CAAA;AACjC,QAAA,YAAA,CAAa,OAAA,GAAU,IAAA;AAAA,MACzB;AACA,MAAA,IAAI,cAAc,OAAA,EAAS;AACzB,QAAA,YAAA,CAAa,cAAc,OAAO,CAAA;AAClC,QAAA,aAAA,CAAc,OAAA,GAAU,IAAA;AAAA,MAC1B;AAAA,IACF,CAAA;AAEA,IAAA,OAAO;AAAA,MACL,SAAA;AAAA,MACA,aAAA;AAAA,MACA,iBAAA;AAAA,MACA,OAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA,EAAa,CAAC,SAAA,KAAsB;AAClC,QAAA,WAAA,EAAY;AACZ,QAAA,MAAM,GAAA,GAAM,KAAK,GAAA,EAAI;AACrB,QAAA,MAAM,OAAO,GAAA,GAAM,aAAA,CAAc,OAAA,GAAU,iBAAA,IAAqB,cAAc,OAAA,GAAU,CAAA;AACxF,QAAA,MAAM,MAAM,MAAM;AAChB,UAAA,SAAA,CAAU,KAAA,GAAQ,SAAA;AAClB,UAAA,aAAA,CAAc,OAAA,GAAU,KAAK,GAAA,EAAI;AAAA,QACnC,CAAA;AACA,QAAA,IAAI,IAAA,IAAQ,iBAAiB,CAAA,EAAG;AAC9B,UAAA,GAAA,EAAI;AAAA,QACN,CAAA,MAAO;AACL,UAAA,YAAA,CAAa,OAAA,GAAU,UAAA,CAAW,GAAA,EAAK,aAAa,CAAA;AAAA,QACtD;AAAA,MACF,CAAA;AAAA,MACA,YAAA,EAAc,CAAC,OAAA,GAAU,GAAA,KAAQ;AAC/B,QAAA,WAAA,EAAY;AACZ,QAAA,aAAA,CAAc,OAAA,GAAU,WAAW,MAAM;AACvC,UAAA,SAAA,CAAU,KAAA,GAAQ,IAAA;AAClB,UAAA,aAAA,CAAc,OAAA,GAAU,IAAA;AAAA,QAC1B,GAAG,OAAO,CAAA;AAAA,MACZ,CAAA;AAAA,MACA,UAAA,EAAY,CAAC,SAAA,KAAsB;AACjC,QAAA,WAAA,EAAY;AACZ,QAAA,SAAA,CAAU,KAAA,GAAQ,SAAA,CAAU,KAAA,KAAU,SAAA,GAAY,IAAA,GAAO,SAAA;AACzD,QAAA,IAAI,SAAA,CAAU,KAAA,EAAO,aAAA,CAAc,OAAA,GAAU,KAAK,GAAA,EAAI;AAAA,MACxD;AAAA,KACF;AAAA,EACF,CAAA,EAAG,CAAC,SAAA,EAAW,aAAA,EAAe,iBAAiB,CAAC,CAAA;AAEhD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,GAAA,CAAI,aAAA,GAAgB,aAAA;AACpB,IAAA,GAAA,CAAI,iBAAA,GAAoB,iBAAA;AAAA,EAC1B,CAAA,EAAG,CAAC,GAAA,EAAK,aAAA,EAAe,iBAAiB,CAAC,CAAA;AAE1C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,QAAQ,sBAAA,CAAuB;AAAA,MACnC,IAAA,EAAM,MAAM,OAAA,CAAQ,OAAA;AAAA,MACpB,IAAA,EAAM,MAAM,SAAA,CAAU,KAAA,IAAS,IAAA;AAAA,MAC/B,WAAW,MAAM;AACf,QAAA,SAAA,CAAU,KAAA,GAAQ,IAAA;AAAA,MACpB;AAAA,KACD,CAAA;AACD,IAAA,OAAO,MAAM,MAAM,OAAA,EAAQ;AAAA,EAC7B,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,uBACE,GAAA,CAAC,yBAAA,CAA0B,QAAA,EAA1B,EAAmC,OAAO,GAAA,EACzC,QAAA,kBAAA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,OAAA;AAAA,MACL,WAAA,EAAU,iBAAA;AAAA,MACV,YAAA,EAAW,MAAA;AAAA,MACX,GAAA;AAAA,MACA,KAAA,EAAO,EAAA,CAAG,iEAAA,EAAmE,SAAS,CAAA;AAAA,MACrF,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH,EACF,CAAA;AAEJ;AC1GO,IAAM,wBAAwB,CAAC;AAAA,EACpC,KAAA,EAAO,SAAA;AAAA,EACP,QAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAkC;AAChC,EAAA,MAAM,OAAO,qBAAA,EAAsB;AACnC,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,wBAAA,EAAyB;AAC3C,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,KAAA,KAAU,KAAA;AAEtC,EAAA,MAAM,kBAAA,GAAqB,CAAC,CAAA,KAAgD;AAC1E,IAAA,cAAA,GAAiB,CAAC,CAAA;AAClB,IAAA,IAAA,CAAK,WAAA,EAAY;AAAA,EACnB,CAAA;AAEA,EAAA,MAAM,kBAAA,GAAqB,CAAC,CAAA,KAAgD;AAC1E,IAAA,cAAA,GAAiB,CAAC,CAAA;AAClB,IAAA,IAAI,EAAE,gBAAA,EAAkB;AACxB,IAAA,IAAA,CAAK,YAAA,EAAa;AAAA,EACpB,CAAA;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,yBAAA;AAAA,MACV,YAAA,EAAY,OAAO,MAAA,GAAS,QAAA;AAAA,MAC5B,KAAA,EAAO,EAAA;AAAA,QACL,4KAAA;AAAA,QACA,6CAAA;AAAA,QACA,OACI,yCAAA,GACA,yCAAA;AAAA,QACJ;AAAA,OACF;AAAA,MACA,cAAA,EAAgB,kBAAA;AAAA,MAChB,cAAA,EAAgB,kBAAA;AAAA,MACf,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;AC3CA,IAAM,aAAA,GAAgB,gBAAgB,SAAS,CAAA;AAQxC,IAAM,qBAAqB,CAAC;AAAA,EACjC,KAAA,EAAO,SAAA;AAAA,EACP,QAAA;AAAA,EACA,KAAA,EAAO,SAAA;AAAA,EACP,GAAG;AACL,CAAA,KAA+B;AAC7B,EAAA,MAAM,KAAA,GAAQC,QAAQ,MAAM,aAAA,CAAc,SAAS,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEjE,EAAA,uBACED,IAAC,yBAAA,CAA0B,QAAA,EAA1B,EAAmC,KAAA,EAAO,EAAE,KAAA,EAAM,EACjD,QAAA,kBAAAA,GAAAA,CAAC,QAAG,WAAA,EAAU,sBAAA,EAAuB,OAAO,EAAA,CAAG,UAAA,EAAY,SAAS,CAAA,EAAI,GAAG,IAAA,EACxE,QAAA,EACH,CAAA,EACF,CAAA;AAEJ;ACnBA,IAAM,OAAA,GAAU,CAAwB,GAAA,EAAc,IAAA,KAAmB;AACvE,EAAA,IAAI,OAAO,QAAQ,UAAA,EAAY;AAC7B,IAAA,GAAA,CAAI,IAAI,CAAA;AAAA,EACV,WAAW,GAAA,IAAO,OAAO,GAAA,KAAQ,QAAA,IAAY,aAAa,GAAA,EAAK;AAC7D,IAAC,IAA8B,OAAA,GAAU,IAAA;AAAA,EAC3C;AACF,CAAA;AAEO,IAAM,qBAAqB,CAAC;AAAA,EACjC,KAAA,EAAO,SAAA;AAAA,EACP,MAAA,GAAS,KAAA;AAAA,EACT,OAAA,GAAU,KAAA;AAAA,EACV,QAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAA,EAAK,QAAA;AAAA,EACL,GAAG;AACL,CAAA,KAA+B;AAC7B,EAAA,MAAM,OAAO,qBAAA,EAAsB;AACnC,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,wBAAA,EAAyB;AAC3C,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,KAAA,KAAU,KAAA;AAEtC,EAAA,MAAM,SAAA,GAAY,EAAA;AAAA,IAChB,4FAAA;AAAA,IACA,2FAAA;AAAA,IACA,SAAS,kCAAA,GAAqC,EAAA;AAAA,IAC9C;AAAA,GACF;AAEA,EAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAA+C;AAClE,IAAA,OAAA,GAAU,KAAkD,CAAA;AAC5D,IAAA,IAAI,MAAM,gBAAA,EAAkB;AAC5B,IAAA,IAAA,CAAK,WAAA,EAAY;AACjB,IAAA,IAAA,CAAK,UAAU,KAAA,GAAQ,IAAA;AAAA,EACzB,CAAA;AAEA,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,IAAI,CAAC,cAAA,CAAe,QAAQ,CAAA,EAAG,OAAO,IAAA;AACtC,IAAA,MAAM,UAAA,GAAc,QAAA,CAAS,KAAA,IAAS,EAAC;AAMvC,IAAA,MAAM,cAAc,EAAA,CAAG,SAAA,EAAW,UAAA,CAAW,KAAA,EAAO,WAAW,SAAS,CAAA;AACxE,IAAA,OAAO,aAAa,QAAA,EAAU;AAAA,MAC5B,GAAI,UAAA;AAAA,MACJ,GAAI,IAAA;AAAA,MACJ,WAAA,EAAa,sBAAA;AAAA,MACb,aAAA,EAAe,SAAS,EAAA,GAAK,MAAA;AAAA,MAC7B,YAAA,EAAc,OAAO,MAAA,GAAS,QAAA;AAAA,MAC9B,KAAA,EAAO,WAAA;AAAA,MACP,OAAA,EAAS,CAAC,KAAA,KAA+C;AACvD,QAAA,UAAA,CAAW,UAAU,KAAK,CAAA;AAC1B,QAAA,WAAA,CAAY,KAAK,CAAA;AAAA,MACnB,CAAA;AAAA,MACA,GAAA,EAAK,CAAC,IAAA,KAA6B;AACjC,QAAA,OAAA,CAAQ,UAAA,CAAW,KAAK,IAAI,CAAA;AAC5B,QAAA,OAAA,CAAQ,UAAU,IAAI,CAAA;AAAA,MACxB;AAAA,KACQ,CAAA;AAAA,EACZ;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,CAAC,IAAA,KAAS,OAAA,CAAQ,UAAU,IAAI,CAAA;AAAA,MACrC,WAAA,EAAU,sBAAA;AAAA,MACV,aAAA,EAAa,SAAS,EAAA,GAAK,MAAA;AAAA,MAC3B,YAAA,EAAY,OAAO,MAAA,GAAS,QAAA;AAAA,MAC5B,cAAA,EAAc,SAAS,MAAA,GAAS,MAAA;AAAA,MAChC,KAAA,EAAO,SAAA;AAAA,MACP,OAAA,EAAS,CAAC,CAAA,KAAM,WAAA,CAAY,CAAmD,CAAA;AAAA,MAC9E,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;AC/EO,IAAM,qBAAqB,CAAC;AAAA,EACjC,KAAA,EAAO,SAAA;AAAA,EACP,QAAA;AAAA,EACA,GAAG;AACL,CAAA,qBACEA,GAAAA;AAAA,EAAC,IAAA;AAAA,EAAA;AAAA,IACC,WAAA,EAAU,sBAAA;AAAA,IACV,KAAA,EAAO,EAAA,CAAG,+DAAA,EAAiE,SAAS,CAAA;AAAA,IACnF,GAAG,IAAA;AAAA,IAEH;AAAA;AACH;ACfK,IAAM,6BAA6B,EAAA,CAAG;AAAA,EAC3C,IAAA,EAAM;AAAA,IACJ,mIAAA;AAAA,IACA,4EAAA;AAAA,IACA,6HAAA;AAAA,IACA,kDAAA;AAAA,IACA;AAAA;AAEJ,CAAC;ACND,IAAM,kBAAkB,CAAC,EAAE,KAAA,EAAO,SAAA,uBAChCA,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,KAAA,EAAM,4BAAA;AAAA,IACN,KAAA,EAAM,IAAA;AAAA,IACN,MAAA,EAAO,IAAA;AAAA,IACP,OAAA,EAAQ,WAAA;AAAA,IACR,IAAA,EAAK,MAAA;AAAA,IACL,MAAA,EAAO,cAAA;AAAA,IACP,cAAA,EAAa,GAAA;AAAA,IACb,gBAAA,EAAe,OAAA;AAAA,IACf,iBAAA,EAAgB,OAAA;AAAA,IAChB,aAAA,EAAW,IAAA;AAAA,IACX,KAAA,EAAO,EAAA;AAAA,MACL,iIAAA;AAAA,MACA;AAAA,KACF;AAAA,IAEA,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,cAAA,EAAe;AAAA;AACzB,CAAA;AAOK,IAAM,wBAAwB,CAAC;AAAA,EACpC,KAAA,EAAO,SAAA;AAAA,EACP,QAAA;AAAA,EACA,OAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAkC;AAChC,EAAA,MAAM,OAAO,qBAAA,EAAsB;AACnC,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,wBAAA,EAAyB;AAC3C,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,KAAA,KAAU,KAAA;AAEtC,EAAA,MAAM,kBAAA,GAAqB,CAAC,CAAA,KAAmD;AAC7E,IAAA,cAAA,GAAiB,CAAC,CAAA;AAClB,IAAA,IAAI,EAAE,gBAAA,EAAkB;AACxB,IAAA,IAAA,CAAK,YAAY,KAAK,CAAA;AAAA,EACxB,CAAA;AAEA,EAAA,MAAM,kBAAA,GAAqB,CAAC,CAAA,KAAmD;AAC7E,IAAA,cAAA,GAAiB,CAAC,CAAA;AAClB,IAAA,IAAI,EAAE,gBAAA,EAAkB;AACxB,IAAA,IAAA,CAAK,YAAA,EAAa;AAAA,EACpB,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAAiD;AACpE,IAAA,OAAA,GAAU,CAAC,CAAA;AACX,IAAA,IAAI,EAAE,gBAAA,EAAkB;AACxB,IAAA,IAAA,CAAK,WAAW,KAAK,CAAA;AAAA,EACvB,CAAA;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,WAAA,EAAU,yBAAA;AAAA,MACV,YAAA,EAAY,OAAO,MAAA,GAAS,QAAA;AAAA,MAC5B,eAAA,EAAe,IAAA;AAAA,MACf,KAAA,EAAO,EAAA,CAAG,0BAAA,EAA2B,EAAG,SAAS,SAAS,CAAA;AAAA,MAC1D,cAAA,EAAgB,kBAAA;AAAA,MAChB,cAAA,EAAgB,kBAAA;AAAA,MAChB,OAAA,EAAS,WAAA;AAAA,MACR,GAAG,IAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,wBACDA,IAAC,eAAA,EAAA,EAAgB;AAAA;AAAA;AAAA,GACnB;AAEJ;;;ACpDA,IAAO,uBAAA,GAAQ;AAAA,EACb,IAAA,EAAM,cAAA;AAAA,EACN,IAAA,EAAM,kBAAA;AAAA,EACN,IAAA,EAAM,kBAAA;AAAA,EACN,IAAA,EAAM,kBAAA;AAAA,EACN,OAAA,EAAS,qBAAA;AAAA,EACT,OAAA,EAAS;AACX","file":"chunk-APZXMU2X.js","sourcesContent":["import { type signal } from \"@preact/signals\";\nimport { createContext } from \"preact\";\nimport { useContext } from \"preact/hooks\";\n\nexport type NavigationMenuRootContextValue = {\n openValue: ReturnType<typeof signal<string | null>>;\n delayDuration: number;\n skipDelayDuration: number;\n rootRef: { current: HTMLElement | null };\n openTimerRef: { current: ReturnType<typeof setTimeout> | null };\n closeTimerRef: { current: ReturnType<typeof setTimeout> | null };\n lastOpenAtRef: { current: number };\n requestOpen: (itemValue: string) => void;\n requestClose: (delayMs?: number) => void;\n clearTimers: () => void;\n toggleItem: (itemValue: string) => void;\n};\n\nexport const NavigationMenuRootContext = createContext<NavigationMenuRootContextValue | null>(null);\n\nexport const useNavigationMenuRoot = () => {\n const ctx = useContext(NavigationMenuRootContext);\n if (!ctx) throw new Error(\"NavigationMenu subcomponents must be used within NavigationMenu\");\n return ctx;\n};\n\nexport type NavigationMenuItemContextValue = {\n value: string;\n};\n\nexport const NavigationMenuItemContext = createContext<NavigationMenuItemContextValue | null>(null);\n\nexport const useNavigationMenuItemCtx = () => {\n const ctx = useContext(NavigationMenuItemContext);\n if (!ctx)\n throw new Error(\n \"NavigationMenuTrigger and NavigationMenuContent must be inside NavigationMenuItem\",\n );\n return ctx;\n};\n","import { signal } from \"@preact/signals\";\nimport type { ComponentChildren, JSX } from \"preact\";\nimport { useEffect, useMemo, useRef } from \"preact/hooks\";\nimport { createDismissableLayer } from \"../../lib/interactive\";\nimport { cn } from \"../../lib/utils\";\nimport {\n NavigationMenuRootContext,\n type NavigationMenuRootContextValue,\n} from \"./navigation-menu-context\";\n\nexport type NavigationMenuProps = JSX.HTMLAttributes<HTMLElement> & {\n children?: ComponentChildren;\n /** Delay before opening a submenu on hover (ms). */\n delayDuration?: number;\n /** After opening, subsequent opens skip the delay for this many ms. */\n skipDelayDuration?: number;\n /** Passed to the root `nav` for RTL. */\n dir?: \"ltr\" | \"rtl\";\n};\n\nexport const NavigationMenu = ({\n class: className,\n children,\n delayDuration = 200,\n skipDelayDuration = 300,\n dir,\n ...rest\n}: NavigationMenuProps) => {\n const openValue = useMemo(() => signal<string | null>(null), []);\n const rootRef = useRef<HTMLElement | null>(null);\n const openTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const closeTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const lastOpenAtRef = useRef(0);\n\n const ctx = useMemo<NavigationMenuRootContextValue>(() => {\n const clearTimers = () => {\n if (openTimerRef.current) {\n clearTimeout(openTimerRef.current);\n openTimerRef.current = null;\n }\n if (closeTimerRef.current) {\n clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n }\n };\n\n return {\n openValue,\n delayDuration,\n skipDelayDuration,\n rootRef,\n openTimerRef,\n closeTimerRef,\n lastOpenAtRef,\n clearTimers,\n requestOpen: (itemValue: string) => {\n clearTimers();\n const now = Date.now();\n const skip = now - lastOpenAtRef.current < skipDelayDuration && lastOpenAtRef.current > 0;\n const run = () => {\n openValue.value = itemValue;\n lastOpenAtRef.current = Date.now();\n };\n if (skip || delayDuration <= 0) {\n run();\n } else {\n openTimerRef.current = setTimeout(run, delayDuration);\n }\n },\n requestClose: (delayMs = 120) => {\n clearTimers();\n closeTimerRef.current = setTimeout(() => {\n openValue.value = null;\n closeTimerRef.current = null;\n }, delayMs);\n },\n toggleItem: (itemValue: string) => {\n clearTimers();\n openValue.value = openValue.value === itemValue ? null : itemValue;\n if (openValue.value) lastOpenAtRef.current = Date.now();\n },\n };\n }, [openValue, delayDuration, skipDelayDuration]);\n\n useEffect(() => {\n ctx.delayDuration = delayDuration;\n ctx.skipDelayDuration = skipDelayDuration;\n }, [ctx, delayDuration, skipDelayDuration]);\n\n useEffect(() => {\n const layer = createDismissableLayer({\n root: () => rootRef.current,\n open: () => openValue.value != null,\n onDismiss: () => {\n openValue.value = null;\n },\n });\n return () => layer.dispose();\n }, [openValue]);\n\n return (\n <NavigationMenuRootContext.Provider value={ctx}>\n <nav\n ref={rootRef}\n data-slot=\"navigation-menu\"\n aria-label=\"Main\"\n dir={dir}\n class={cn(\"relative z-10 flex max-w-max flex-1 items-center justify-center\", className)}\n {...rest}\n >\n {children}\n </nav>\n </NavigationMenuRootContext.Provider>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { useNavigationMenuItemCtx, useNavigationMenuRoot } from \"./navigation-menu-context\";\n\nexport type NavigationMenuContentProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\nexport const NavigationMenuContent = ({\n class: className,\n children,\n onPointerEnter,\n onPointerLeave,\n ...rest\n}: NavigationMenuContentProps) => {\n const root = useNavigationMenuRoot();\n const { value } = useNavigationMenuItemCtx();\n const open = root.openValue.value === value;\n\n const handlePointerEnter = (e: JSX.TargetedPointerEvent<HTMLDivElement>) => {\n onPointerEnter?.(e);\n root.clearTimers();\n };\n\n const handlePointerLeave = (e: JSX.TargetedPointerEvent<HTMLDivElement>) => {\n onPointerLeave?.(e);\n if (e.defaultPrevented) return;\n root.requestClose();\n };\n\n return (\n <div\n data-slot=\"navigation-menu-content\"\n data-state={open ? \"open\" : \"closed\"}\n class={cn(\n \"absolute start-0 top-full z-50 mt-1.5 w-max origin-top-start overflow-hidden rounded-md border border-border bg-popover p-2 text-popover-foreground shadow-md outline-none\",\n \"transition-[opacity,transform] duration-200\",\n open\n ? \"pointer-events-auto visible opacity-100\"\n : \"pointer-events-none invisible opacity-0\",\n className,\n )}\n onPointerEnter={handlePointerEnter}\n onPointerLeave={handlePointerLeave}\n {...rest}\n >\n {children}\n </div>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { useMemo } from \"preact/hooks\";\nimport { createIdFactory } from \"../../lib/interactive\";\nimport { cn } from \"../../lib/utils\";\nimport { NavigationMenuItemContext } from \"./navigation-menu-context\";\n\nconst nextItemValue = createIdFactory(\"nm-item\");\n\nexport type NavigationMenuItemProps = JSX.HTMLAttributes<HTMLLIElement> & {\n children?: ComponentChildren;\n /** Stable id for this branch; auto-generated when omitted. */\n value?: string;\n};\n\nexport const NavigationMenuItem = ({\n class: className,\n children,\n value: valueProp,\n ...rest\n}: NavigationMenuItemProps) => {\n const value = useMemo(() => nextItemValue(valueProp), [valueProp]);\n\n return (\n <NavigationMenuItemContext.Provider value={{ value }}>\n <li data-slot=\"navigation-menu-item\" class={cn(\"relative\", className)} {...rest}>\n {children}\n </li>\n </NavigationMenuItemContext.Provider>\n );\n};\n","import { type ComponentChildren, cloneElement, isValidElement, type JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { useNavigationMenuItemCtx, useNavigationMenuRoot } from \"./navigation-menu-context\";\n\nexport type NavigationMenuLinkProps = JSX.AnchorHTMLAttributes<HTMLAnchorElement> & {\n active?: boolean;\n children?: ComponentChildren;\n asChild?: boolean;\n};\n\nconst callRef = <T extends HTMLElement>(ref: unknown, node: T | null) => {\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref && typeof ref === \"object\" && \"current\" in ref) {\n (ref as { current: T | null }).current = node;\n }\n};\n\nexport const NavigationMenuLink = ({\n class: className,\n active = false,\n asChild = false,\n children,\n onClick,\n ref: outerRef,\n ...rest\n}: NavigationMenuLinkProps) => {\n const root = useNavigationMenuRoot();\n const { value } = useNavigationMenuItemCtx();\n const open = root.openValue.value === value;\n\n const linkClass = cn(\n \"block select-none rounded-sm px-3 py-2 text-sm no-underline outline-none transition-colors\",\n \"hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground\",\n active ? \"bg-accent text-accent-foreground\" : \"\",\n className,\n );\n\n const handleClick = (event: JSX.TargetedMouseEvent<HTMLElement>) => {\n onClick?.(event as JSX.TargetedMouseEvent<HTMLAnchorElement>);\n if (event.defaultPrevented) return;\n root.clearTimers();\n root.openValue.value = null;\n };\n\n if (asChild) {\n if (!isValidElement(children)) return null;\n const childProps = (children.props ?? {}) as JSX.HTMLAttributes<HTMLElement> & {\n ref?: unknown;\n onClick?: (event: JSX.TargetedMouseEvent<HTMLElement>) => void;\n class?: string;\n className?: string;\n };\n const mergedClass = cn(linkClass, childProps.class, childProps.className);\n return cloneElement(children, {\n ...(childProps as Record<string, unknown>),\n ...(rest as Record<string, unknown>),\n \"data-slot\": \"navigation-menu-link\",\n \"data-active\": active ? \"\" : undefined,\n \"data-state\": open ? \"open\" : \"closed\",\n class: mergedClass,\n onClick: (event: JSX.TargetedMouseEvent<HTMLElement>) => {\n childProps.onClick?.(event);\n handleClick(event);\n },\n ref: (node: HTMLElement | null) => {\n callRef(childProps.ref, node);\n callRef(outerRef, node);\n },\n } as never);\n }\n\n return (\n <a\n ref={(node) => callRef(outerRef, node)}\n data-slot=\"navigation-menu-link\"\n data-active={active ? \"\" : undefined}\n data-state={open ? \"open\" : \"closed\"}\n aria-current={active ? \"page\" : undefined}\n class={linkClass}\n onClick={(e) => handleClick(e as unknown as JSX.TargetedMouseEvent<HTMLElement>)}\n {...rest}\n >\n {children}\n </a>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type NavigationMenuListProps = JSX.HTMLAttributes<HTMLUListElement> & {\n children?: ComponentChildren;\n};\n\nexport const NavigationMenuList = ({\n class: className,\n children,\n ...rest\n}: NavigationMenuListProps) => (\n <ul\n data-slot=\"navigation-menu-list\"\n class={cn(\"group flex flex-1 list-none items-center justify-center gap-1\", className)}\n {...rest}\n >\n {children}\n </ul>\n);\n","import { tv } from \"tailwind-variants\";\n\n/** Matches shadcn `navigationMenuTriggerStyle()` for use on `NavigationMenuLink` with `asChild`. */\nexport const navigationMenuTriggerStyle = tv({\n base: [\n \"group inline-flex h-9 w-max items-center justify-center gap-1 rounded-md bg-background px-4 py-2 text-sm font-medium outline-none\",\n \"transition-[color,box-shadow] hover:bg-accent hover:text-accent-foreground\",\n \"focus:bg-accent focus:text-accent-foreground focus-visible:ring-[3px] focus-visible:ring-outline/50 focus-visible:outline-1\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"data-[state=open]:bg-accent/50 data-[state=open]:text-accent-foreground data-[state=open]:hover:bg-accent data-[state=open]:focus:bg-accent\",\n ],\n});\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { useNavigationMenuItemCtx, useNavigationMenuRoot } from \"./navigation-menu-context\";\nimport { navigationMenuTriggerStyle } from \"./navigationMenuTriggerStyle\";\n\nconst ChevronDownIcon = ({ class: className }: { class?: string }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden\n class={cn(\n \"size-4 shrink-0 transition duration-200 group-data-[state=open]:rotate-180 rtl:-rotate-180 group-data-[state=open]:rtl:rotate-0\",\n className,\n )}\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n);\n\nexport type NavigationMenuTriggerProps = JSX.ButtonHTMLAttributes<HTMLButtonElement> & {\n children?: ComponentChildren;\n};\n\nexport const NavigationMenuTrigger = ({\n class: className,\n children,\n onClick,\n onPointerEnter,\n onPointerLeave,\n ...rest\n}: NavigationMenuTriggerProps) => {\n const root = useNavigationMenuRoot();\n const { value } = useNavigationMenuItemCtx();\n const open = root.openValue.value === value;\n\n const handlePointerEnter = (e: JSX.TargetedPointerEvent<HTMLButtonElement>) => {\n onPointerEnter?.(e);\n if (e.defaultPrevented) return;\n root.requestOpen(value);\n };\n\n const handlePointerLeave = (e: JSX.TargetedPointerEvent<HTMLButtonElement>) => {\n onPointerLeave?.(e);\n if (e.defaultPrevented) return;\n root.requestClose();\n };\n\n const handleClick = (e: JSX.TargetedMouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n root.toggleItem(value);\n };\n\n return (\n <button\n type=\"button\"\n data-slot=\"navigation-menu-trigger\"\n data-state={open ? \"open\" : \"closed\"}\n aria-expanded={open}\n class={cn(navigationMenuTriggerStyle(), \"group\", className)}\n onPointerEnter={handlePointerEnter}\n onPointerLeave={handlePointerLeave}\n onClick={handleClick}\n {...rest}\n >\n {children}\n <ChevronDownIcon />\n </button>\n );\n};\n","import { NavigationMenu } from \"./NavigationMenu\";\nimport { NavigationMenuContent } from \"./NavigationMenuContent\";\nimport { NavigationMenuItem } from \"./NavigationMenuItem\";\nimport { NavigationMenuLink } from \"./NavigationMenuLink\";\nimport { NavigationMenuList } from \"./NavigationMenuList\";\nimport { NavigationMenuTrigger } from \"./NavigationMenuTrigger\";\nimport { navigationMenuTriggerStyle } from \"./navigationMenuTriggerStyle\";\n\nexport type { NavigationMenuProps } from \"./NavigationMenu\";\nexport type { NavigationMenuContentProps } from \"./NavigationMenuContent\";\nexport type { NavigationMenuItemProps } from \"./NavigationMenuItem\";\nexport type { NavigationMenuLinkProps } from \"./NavigationMenuLink\";\nexport type { NavigationMenuListProps } from \"./NavigationMenuList\";\nexport type { NavigationMenuTriggerProps } from \"./NavigationMenuTrigger\";\nexport {\n NavigationMenu,\n NavigationMenuContent,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n NavigationMenuTrigger,\n navigationMenuTriggerStyle,\n};\n\nexport default {\n Root: NavigationMenu,\n List: NavigationMenuList,\n Item: NavigationMenuItem,\n Link: NavigationMenuLink,\n Trigger: NavigationMenuTrigger,\n Content: NavigationMenuContent,\n};\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { cn } from './chunk-
|
|
1
|
+
import { cn } from './chunk-XIANSPQO.js';
|
|
2
2
|
import { jsx } from 'preact/jsx-runtime';
|
|
3
3
|
|
|
4
4
|
var Video = ({ class: className, controls = true, children, ...rest }) => (
|
|
@@ -17,5 +17,5 @@ var Video = ({ class: className, controls = true, children, ...rest }) => (
|
|
|
17
17
|
);
|
|
18
18
|
|
|
19
19
|
export { Video };
|
|
20
|
-
//# sourceMappingURL=chunk-
|
|
21
|
-
//# sourceMappingURL=chunk-
|
|
20
|
+
//# sourceMappingURL=chunk-AYLEWD77.js.map
|
|
21
|
+
//# sourceMappingURL=chunk-AYLEWD77.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/video/Video.tsx"],"names":[],"mappings":";;;AAOO,IAAM,KAAA,GAAQ,CAAC,EAAE,KAAA,EAAO,WAAW,QAAA,GAAW,IAAA,EAAM,QAAA,EAAU,GAAG,IAAA,EAAK;AAAA;AAAA;AAAA,kBAG3E,GAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,OAAA;AAAA,MACV,KAAA,EAAO,EAAA,CAAG,gCAAA,EAAkC,SAAS,CAAA;AAAA,MACrD,QAAA;AAAA,MACC,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA;AACH","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/components/video/Video.tsx"],"names":[],"mappings":";;;AAOO,IAAM,KAAA,GAAQ,CAAC,EAAE,KAAA,EAAO,WAAW,QAAA,GAAW,IAAA,EAAM,QAAA,EAAU,GAAG,IAAA,EAAK;AAAA;AAAA;AAAA,kBAG3E,GAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,OAAA;AAAA,MACV,KAAA,EAAO,EAAA,CAAG,gCAAA,EAAkC,SAAS,CAAA;AAAA,MACrD,QAAA;AAAA,MACC,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA;AACH","file":"chunk-AYLEWD77.js","sourcesContent":["import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\n\nexport type VideoProps = JSX.VideoHTMLAttributes<HTMLVideoElement> & {\n children?: ComponentChildren;\n};\n\nexport const Video = ({ class: className, controls = true, children, ...rest }: VideoProps) => (\n // Captions are the consumer's responsibility (passed as <track> via children).\n // oxlint-disable-next-line jsx-a11y/media-has-caption\n <video\n data-slot=\"video\"\n class={cn(\"block w-full rounded-md border\", className)}\n controls={controls}\n {...rest}\n >\n {children}\n </video>\n);\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { cn } from './chunk-XIANSPQO.js';
|
|
1
2
|
import { tv } from 'tailwind-variants';
|
|
2
3
|
import { jsx } from 'preact/jsx-runtime';
|
|
3
4
|
|
|
4
|
-
// src/components/label/Label.tsx
|
|
5
5
|
var label = tv({
|
|
6
6
|
base: [
|
|
7
7
|
"text-foreground select-none font-medium leading-none",
|
|
@@ -11,15 +11,8 @@ var label = tv({
|
|
|
11
11
|
variants: { size: { sm: "text-sm", md: "text-base", lg: "text-lg" } },
|
|
12
12
|
defaultVariants: { size: "sm" }
|
|
13
13
|
});
|
|
14
|
-
var Label = ({ size, class: className, ...rest }) => /* @__PURE__ */ jsx(
|
|
15
|
-
"label",
|
|
16
|
-
{
|
|
17
|
-
class: label({ size, class: className }),
|
|
18
|
-
"data-slot": "label",
|
|
19
|
-
...rest
|
|
20
|
-
}
|
|
21
|
-
);
|
|
14
|
+
var Label = ({ size, class: className, ...rest }) => /* @__PURE__ */ jsx("label", { class: cn(label({ size }), className), "data-slot": "label", ...rest });
|
|
22
15
|
|
|
23
16
|
export { Label, label };
|
|
24
|
-
//# sourceMappingURL=chunk-
|
|
25
|
-
//# sourceMappingURL=chunk-
|
|
17
|
+
//# sourceMappingURL=chunk-BZMD4EZC.js.map
|
|
18
|
+
//# sourceMappingURL=chunk-BZMD4EZC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/label/Label.tsx"],"names":[],"mappings":";;;;AAIO,IAAM,QAAQ,EAAA,CAAG;AAAA,EACtB,IAAA,EAAM;AAAA,IACJ,sDAAA;AAAA,IACA,2DAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU,EAAE,IAAA,EAAM,EAAE,EAAA,EAAI,WAAW,EAAA,EAAI,WAAA,EAAa,EAAA,EAAI,SAAA,EAAU,EAAE;AAAA,EACpE,eAAA,EAAiB,EAAE,IAAA,EAAM,IAAA;AAC3B,CAAC;AAKM,IAAM,KAAA,GAAQ,CAAC,EAAE,IAAA,EAAM,OAAO,SAAA,EAAW,GAAG,IAAA,EAAK,qBACtD,GAAA,CAAC,OAAA,EAAA,EAAM,OAAO,EAAA,CAAG,KAAA,CAAM,EAAE,IAAA,EAAM,CAAA,EAAG,SAAS,CAAA,EAAG,WAAA,EAAU,OAAA,EAAS,GAAG,IAAA,EAAM","file":"chunk-BZMD4EZC.js","sourcesContent":["import type { JSX } from \"preact\";\nimport { tv, type VariantProps } from \"tailwind-variants\";\nimport { cn } from \"../../lib/utils\";\n\nexport const label = tv({\n base: [\n \"text-foreground select-none font-medium leading-none\",\n \"peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n \"has-[+:disabled]:cursor-not-allowed has-[+:disabled]:opacity-70\",\n ],\n variants: { size: { sm: \"text-sm\", md: \"text-base\", lg: \"text-lg\" } },\n defaultVariants: { size: \"sm\" },\n});\n\nexport type LabelProps = Omit<JSX.LabelHTMLAttributes<HTMLLabelElement>, \"size\"> &\n VariantProps<typeof label>;\n\nexport const Label = ({ size, class: className, ...rest }: LabelProps) => (\n <label class={cn(label({ size }), className)} data-slot=\"label\" {...rest} />\n);\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { cn } from './chunk-
|
|
1
|
+
import { Popover, PopoverTrigger, usePopover, PopoverContent } from './chunk-VEQ7X2PO.js';
|
|
2
|
+
import { Command, CommandInput, CommandItem, CommandList, CommandEmpty, useCommand } from './chunk-MJUKNUFV.js';
|
|
3
|
+
import { cn } from './chunk-XIANSPQO.js';
|
|
4
4
|
import { signal } from '@preact/signals';
|
|
5
5
|
import { createContext } from 'preact';
|
|
6
6
|
import { useContext, useMemo, useState, useRef, useCallback, useLayoutEffect } from 'preact/hooks';
|
|
@@ -729,5 +729,5 @@ var ComboboxSelect = ({
|
|
|
729
729
|
};
|
|
730
730
|
|
|
731
731
|
export { Combobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxClear, ComboboxCommand, ComboboxContent, ComboboxInlineInput, ComboboxInput, ComboboxItem, ComboboxList, ComboboxSelect, ComboboxTrigger, ComboboxValue, comboboxSelectionLabel, defaultComboboxItemKey, defaultComboboxItemString, flattenComboboxItems, useCombobox };
|
|
732
|
-
//# sourceMappingURL=chunk-
|
|
733
|
-
//# sourceMappingURL=chunk-
|
|
732
|
+
//# sourceMappingURL=chunk-C7TARE5T.js.map
|
|
733
|
+
//# sourceMappingURL=chunk-C7TARE5T.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/combobox/combobox-utils.ts","../src/components/combobox/combobox-context.tsx","../src/components/combobox/ComboboxChip.tsx","../src/components/combobox/ComboboxChips.tsx","../src/components/combobox/ComboboxChipsInput.tsx","../src/components/combobox/ComboboxClear.tsx","../src/components/combobox/ComboboxCommand.tsx","../src/components/combobox/ComboboxContent.tsx","../src/components/combobox/ComboboxInlineInput.tsx","../src/components/combobox/ComboboxInput.tsx","../src/components/combobox/ComboboxItem.tsx","../src/components/combobox/ComboboxList.tsx","../src/components/combobox/ComboboxTrigger.tsx","../src/components/combobox/ComboboxValue.tsx","../src/components/combobox/ComboboxSelect.tsx"],"names":["jsx","useLayoutEffect","jsxs","Fragment"],"mappings":"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","file":"chunk-PU5J5EPY.js","sourcesContent":["/** Flatten grouped `{ items: T[] }[]` shapes into leaf rows for selection lookup. */\nexport function flattenComboboxItems(items: readonly unknown[]): unknown[] {\n const out: unknown[] = [];\n for (const el of items) {\n if (el !== null && typeof el === \"object\" && \"items\" in el) {\n const sub = (el as { items: unknown }).items;\n if (Array.isArray(sub)) {\n out.push(...sub);\n continue;\n }\n }\n out.push(el);\n }\n return out;\n}\n\nexport function defaultComboboxItemKey(item: unknown): string {\n if (typeof item === \"string\" || typeof item === \"number\") return String(item);\n if (item && typeof item === \"object\" && \"value\" in item) {\n const v = (item as { value: unknown }).value;\n return v === undefined || v === null ? \"\" : String(v);\n }\n return JSON.stringify(item);\n}\n\nexport function defaultComboboxItemString(\n item: unknown,\n custom?: (item: unknown) => string,\n): string {\n if (custom) return custom(item);\n if (typeof item === \"string\") return item;\n if (item && typeof item === \"object\" && \"label\" in item) {\n const l = (item as { label: unknown }).label;\n return l === undefined || l === null ? \"\" : String(l);\n }\n return String(item);\n}\n","import { type Signal, signal } from \"@preact/signals\";\nimport type { ComponentChildren, JSX } from \"preact\";\nimport { createContext } from \"preact\";\nimport { useCallback, useContext, useLayoutEffect, useMemo, useRef, useState } from \"preact/hooks\";\nimport { cn } from \"../../lib/utils\";\nimport { Popover } from \"../popover/Popover\";\nimport {\n defaultComboboxItemKey,\n defaultComboboxItemString,\n flattenComboboxItems,\n} from \"./combobox-utils\";\n\nexport type ComboboxCommandNav = {\n moveHighlight: (delta: number) => void;\n activateHighlighted: () => void;\n};\n\nfunction normalizeInitialKeys(\n multiple: boolean,\n defaultValue: string | string[] | undefined,\n): string[] {\n if (defaultValue === undefined || defaultValue === \"\") return [];\n if (multiple) return Array.isArray(defaultValue) ? [...defaultValue] : [defaultValue];\n return typeof defaultValue === \"string\" ? [defaultValue] : [];\n}\n\nfunction keysFromValueProp(multiple: boolean, valueProp: string | string[] | undefined): string[] {\n if (valueProp === undefined) return [];\n if (multiple) return Array.isArray(valueProp) ? [...valueProp] : [];\n return typeof valueProp === \"string\" && valueProp ? [valueProp] : [];\n}\n\nexport type ComboboxContextValue = {\n items: readonly unknown[];\n leafItems: unknown[];\n itemToString: (item: unknown) => string;\n itemKey: (item: unknown) => string;\n selectedKeys: string[];\n /** First selected key; empty string if none (single-select ergonomics). */\n selectedKey: string;\n multiple: boolean;\n isSelected: (key: string) => boolean;\n selectByItem: (item: unknown) => void;\n toggleByItem: (item: unknown) => void;\n removeKey: (key: string) => void;\n clearSelection: () => void;\n placeholder: string;\n disabled: boolean;\n liftedFilter: boolean;\n filterQuery: Signal<string> | null;\n hasVisibleItems: Signal<boolean> | null;\n autoHighlight: boolean;\n showClear: boolean;\n closeOnSelect: boolean;\n comboboxListRef: { current: HTMLDivElement | null };\n commandNavRef: { current: ComboboxCommandNav | null };\n};\n\nconst ComboboxContext = createContext<ComboboxContextValue | null>(null);\n\nexport const useCombobox = () => {\n const ctx = useContext(ComboboxContext);\n if (!ctx) throw new Error(\"Combobox components must be used within Combobox\");\n return ctx;\n};\n\nexport function comboboxSelectionLabel(ctx: ComboboxContextValue): string {\n if (ctx.selectedKeys.length === 0) return \"\";\n const labels = ctx.selectedKeys.map((k) => {\n const it = ctx.leafItems.find((i) => ctx.itemKey(i) === k);\n return it !== undefined ? ctx.itemToString(it) : k;\n });\n return labels.join(\", \");\n}\n\nexport type ComboboxProps = Omit<JSX.HTMLAttributes<HTMLDivElement>, \"children\"> & {\n items?: readonly unknown[];\n itemToStringValue?: (item: unknown) => string;\n itemKey?: (item: unknown) => string;\n value?: string | string[];\n defaultValue?: string | string[];\n /** Emits `string` when `multiple` is false, else `string[]`. */\n onValueChange?: (value: string | string[]) => void;\n placeholder?: string;\n disabled?: boolean;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n multiple?: boolean;\n /** Share filter text between trigger input and `Command` (Base UI–style single input + list in popover). */\n liftedFilter?: boolean;\n /** Highlight first match and enable ArrowUp/Down + Enter in filter inputs (requires `ComboboxCommand autoHighlight` or preset). */\n autoHighlight?: boolean;\n showClear?: boolean;\n /** When `multiple`, defaults to `false`; when single, defaults to `true`. */\n closeOnSelect?: boolean;\n children?: ComponentChildren;\n};\n\nexport const Combobox = ({\n items = [],\n itemToStringValue,\n itemKey: itemKeyProp,\n value: valueProp,\n defaultValue,\n onValueChange,\n placeholder = \"Select…\",\n disabled = false,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n multiple: multipleProp = false,\n liftedFilter = false,\n autoHighlight = false,\n showClear = false,\n closeOnSelect: closeOnSelectProp,\n class: className,\n children,\n ...rest\n}: ComboboxProps) => {\n const multiple = Boolean(multipleProp);\n const closeOnSelect = closeOnSelectProp ?? !multiple;\n\n const itemToString = useMemo(\n () => (item: unknown) => defaultComboboxItemString(item, itemToStringValue),\n [itemToStringValue],\n );\n const itemKey = useMemo(\n () => (item: unknown) => (itemKeyProp ? itemKeyProp(item) : defaultComboboxItemKey(item)),\n [itemKeyProp],\n );\n const leafItems = useMemo(() => flattenComboboxItems(items), [items]);\n\n const isValueControlled = valueProp !== undefined;\n const [internalKeys, setInternalKeys] = useState<string[]>(() =>\n normalizeInitialKeys(multiple, defaultValue),\n );\n\n const selectedKeys = isValueControlled ? keysFromValueProp(multiple, valueProp) : internalKeys;\n const selectedKey = selectedKeys[0] ?? \"\";\n\n const filterQuery = useMemo(() => (liftedFilter ? signal(\"\") : null), [liftedFilter]);\n const hasVisibleItemsSig = useMemo(() => (liftedFilter ? signal(true) : null), [liftedFilter]);\n const comboboxListRef = useMemo(() => ({ current: null as HTMLDivElement | null }), []);\n const commandNavRef = useMemo(() => ({ current: null as ComboboxCommandNav | null }), []);\n\n const isOpenRef = useRef(false);\n const selectedKeysRef = useRef(selectedKeys);\n selectedKeysRef.current = selectedKeys;\n\n const emitKeys = useCallback(\n (next: string[]) => {\n if (!isValueControlled) setInternalKeys(next);\n if (multiple) onValueChange?.(next);\n else onValueChange?.(next[0] ?? \"\");\n },\n [isValueControlled, multiple, onValueChange],\n );\n\n const selectByItem = useCallback(\n (item: unknown) => {\n const key = itemKey(item);\n emitKeys(key ? [key] : []);\n },\n [itemKey, emitKeys],\n );\n\n const toggleByItem = useCallback(\n (item: unknown) => {\n const key = itemKey(item);\n const exists = selectedKeysRef.current.includes(key);\n const next = exists\n ? selectedKeysRef.current.filter((k) => k !== key)\n : [...selectedKeysRef.current, key];\n emitKeys(next);\n },\n [itemKey, emitKeys],\n );\n\n const removeKey = useCallback(\n (key: string) => {\n emitKeys(selectedKeysRef.current.filter((k) => k !== key));\n },\n [emitKeys],\n );\n\n const clearSelection = useCallback(() => {\n emitKeys([]);\n }, [emitKeys]);\n\n const isSelected = useCallback(\n (key: string) => {\n return selectedKeys.includes(key);\n },\n [selectedKeys],\n );\n\n const handleOpenChange = useCallback(\n (open: boolean) => {\n isOpenRef.current = open;\n onOpenChange?.(open);\n if (!liftedFilter || !filterQuery) return;\n if (open) {\n filterQuery.value = \"\";\n } else if (multiple) {\n filterQuery.value = \"\";\n } else {\n const k = selectedKeysRef.current[0];\n if (!k) filterQuery.value = \"\";\n else {\n const it = leafItems.find((i) => itemKey(i) === k);\n filterQuery.value = it !== undefined ? itemToString(it) : k;\n }\n }\n },\n [liftedFilter, filterQuery, onOpenChange, multiple, leafItems, itemKey, itemToString],\n );\n\n useLayoutEffect(() => {\n if (!liftedFilter || !filterQuery || multiple || isOpenRef.current) return;\n const k = selectedKeys[0];\n if (!k) {\n filterQuery.value = \"\";\n return;\n }\n const it = leafItems.find((i) => itemKey(i) === k);\n filterQuery.value = it !== undefined ? itemToString(it) : k;\n }, [liftedFilter, filterQuery, multiple, selectedKeys, leafItems, itemKey, itemToString]);\n\n const contextValue = useMemo<ComboboxContextValue>(\n () => ({\n items,\n leafItems,\n itemToString,\n itemKey,\n selectedKeys,\n selectedKey,\n multiple,\n isSelected,\n selectByItem,\n toggleByItem,\n removeKey,\n clearSelection,\n placeholder,\n disabled,\n liftedFilter,\n filterQuery,\n hasVisibleItems: hasVisibleItemsSig,\n autoHighlight,\n showClear,\n closeOnSelect,\n comboboxListRef,\n commandNavRef,\n }),\n [\n items,\n leafItems,\n itemToString,\n itemKey,\n selectedKeys,\n selectedKey,\n multiple,\n isSelected,\n selectByItem,\n toggleByItem,\n removeKey,\n clearSelection,\n placeholder,\n disabled,\n liftedFilter,\n filterQuery,\n hasVisibleItemsSig,\n autoHighlight,\n showClear,\n closeOnSelect,\n comboboxListRef,\n commandNavRef,\n ],\n );\n\n return (\n <ComboboxContext.Provider value={contextValue}>\n <div data-slot=\"combobox\" class={cn(\"relative\", className)} {...rest}>\n <Popover open={openProp} defaultOpen={defaultOpen} onOpenChange={handleOpenChange}>\n {children}\n </Popover>\n </div>\n </ComboboxContext.Provider>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { useCombobox } from \"./combobox-context\";\n\nexport type ComboboxChipProps = Omit<JSX.HTMLAttributes<HTMLSpanElement>, \"children\"> & {\n itemKey: string;\n children?: ComponentChildren;\n};\n\nexport const ComboboxChip = ({\n itemKey: chipKey,\n children,\n class: className,\n ...rest\n}: ComboboxChipProps) => {\n const ctx = useCombobox();\n return (\n <span\n data-slot=\"combobox-chip\"\n class={cn(\n \"bg-secondary text-secondary-foreground inline-flex max-w-full items-center gap-0.5 rounded-md px-2 py-0.5 text-xs\",\n className,\n )}\n {...rest}\n >\n <span class=\"min-w-0 truncate\">{children}</span>\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:text-foreground shrink-0 rounded p-0.5 outline-none focus-visible:ring-2 focus-visible:ring-ring/50\"\n aria-label=\"Remove\"\n onClick={(event) => {\n event.stopPropagation();\n ctx.removeKey(chipKey);\n }}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n </button>\n </span>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { PopoverTrigger } from \"../popover/PopoverTrigger\";\n\nexport type ComboboxChipsProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\n/** Multi-select trigger row: wrap chips + `ComboboxChipsInput` (with `liftedFilter`). */\nexport const ComboboxChips = ({ class: className, children, ...rest }: ComboboxChipsProps) => (\n <PopoverTrigger asChild>\n <div\n data-slot=\"combobox-chips\"\n class={cn(\n \"border-input bg-background flex min-h-8 w-full min-w-44 flex-wrap items-center gap-1 rounded-md border px-2 py-1 shadow-xs outline-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50\",\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n </PopoverTrigger>\n);\n","import type { JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { usePopover } from \"../popover/Popover\";\nimport { useCombobox } from \"./combobox-context\";\n\nexport type ComboboxChipsInputProps = JSX.InputHTMLAttributes<HTMLInputElement>;\n\n/** Filter field at the end of the chip row; requires `Combobox liftedFilter`. */\nexport const ComboboxChipsInput = ({\n class: className,\n onKeyDown,\n onInput,\n onFocus,\n ...rest\n}: ComboboxChipsInputProps) => {\n const ctx = useCombobox();\n const popover = usePopover();\n if (!ctx.filterQuery) {\n throw new Error(\"ComboboxChipsInput must be used with Combobox liftedFilter={true}\");\n }\n\n void ctx.filterQuery.value;\n void popover.open.value;\n\n return (\n <input\n {...rest}\n data-slot=\"combobox-chips-input\"\n class={cn(\n \"placeholder:text-muted-foreground min-w-[6rem] flex-1 border-0 bg-transparent px-1 py-1 text-sm outline-none\",\n className,\n )}\n value={ctx.filterQuery.value}\n onInput={(event) => {\n ctx.filterQuery!.value = event.currentTarget.value;\n popover.setOpen(true);\n onInput?.(event);\n }}\n onFocus={(event) => {\n onFocus?.(event);\n popover.setOpen(true);\n }}\n onKeyDown={(event) => {\n const nav = ctx.commandNavRef.current;\n if (ctx.autoHighlight && nav) {\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n popover.setOpen(true);\n nav.moveHighlight(1);\n return;\n }\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n popover.setOpen(true);\n nav.moveHighlight(-1);\n return;\n }\n if (event.key === \"Enter\") {\n event.preventDefault();\n if (popover.open.value) nav.activateHighlighted();\n return;\n }\n }\n onKeyDown?.(event);\n }}\n />\n );\n};\n","import type { JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { useCombobox } from \"./combobox-context\";\n\nexport type ComboboxClearProps = JSX.ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport const ComboboxClear = ({ class: className, onClick, ...rest }: ComboboxClearProps) => {\n const ctx = useCombobox();\n const has = ctx.selectedKeys.length > 0;\n if (!has || !ctx.showClear) return null;\n\n return (\n <button\n type=\"button\"\n data-slot=\"combobox-clear\"\n aria-label=\"Clear selection\"\n class={cn(\n \"text-muted-foreground hover:text-foreground inline-flex size-7 shrink-0 items-center justify-center rounded-md outline-none focus-visible:ring-2 focus-visible:ring-ring/50\",\n className,\n )}\n onClick={(event) => {\n onClick?.(event);\n if (event.defaultPrevented) return;\n ctx.clearSelection();\n if (ctx.filterQuery) ctx.filterQuery.value = \"\";\n }}\n {...rest}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n </button>\n );\n};\n","import { useLayoutEffect } from \"preact/hooks\";\nimport { cn } from \"../../lib/utils\";\nimport { Command, type CommandProps, useCommand } from \"../command/Command\";\nimport { useCombobox } from \"./combobox-context\";\n\nfunction CommandNavBridge() {\n const cmd = useCommand();\n const combo = useCombobox();\n const navRef = combo.commandNavRef;\n useLayoutEffect(() => {\n navRef.current = {\n moveHighlight: cmd.moveHighlight,\n activateHighlighted: cmd.activateHighlighted,\n };\n return () => {\n navRef.current = null;\n };\n }, [cmd.moveHighlight, cmd.activateHighlighted, navRef]);\n return null;\n}\n\nexport const ComboboxCommand = ({\n autoHighlight: autoHighlightProp,\n class: className,\n children,\n ...rest\n}: CommandProps) => {\n const ctx = useCombobox();\n const query = ctx.liftedFilter && ctx.filterQuery ? ctx.filterQuery : undefined;\n const hasVis = ctx.liftedFilter && ctx.hasVisibleItems ? ctx.hasVisibleItems : undefined;\n const autoHighlight = autoHighlightProp ?? ctx.autoHighlight;\n return (\n <Command\n {...rest}\n class={cn(\"rounded-lg border-0 bg-transparent shadow-none\", className)}\n autoHighlight={autoHighlight}\n query={query}\n hasVisibleItems={hasVis}\n >\n <CommandNavBridge />\n {children}\n </Command>\n );\n};\n\nexport type { CommandProps as ComboboxCommandProps };\n","import { cn } from \"../../lib/utils\";\nimport { usePopover } from \"../popover/Popover\";\nimport { PopoverContent, type PopoverContentProps } from \"../popover/PopoverContent\";\nimport { useCombobox } from \"./combobox-context\";\n\nexport const ComboboxContent = ({\n forceMount: forceMountProp,\n class: className,\n ...rest\n}: PopoverContentProps) => {\n const popover = usePopover();\n const ctx = useCombobox();\n const forceMount = forceMountProp ?? ctx.liftedFilter;\n return (\n <PopoverContent\n forceMount={forceMount}\n class={cn(\n \"w-64 max-w-[calc(100vw-1.5rem)] gap-0 overflow-hidden p-0\",\n ctx.liftedFilter &&\n !popover.open.value &&\n \"pointer-events-none invisible max-h-0 min-h-0 border-0 p-0 opacity-0 shadow-none\",\n className,\n )}\n {...rest}\n />\n );\n};\n\nexport type { PopoverContentProps as ComboboxContentProps };\n","import type { JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { usePopover } from \"../popover/Popover\";\nimport { useCombobox } from \"./combobox-context\";\n\nexport type ComboboxInlineInputProps = JSX.InputHTMLAttributes<HTMLInputElement>;\n\n/**\n * Base UI–style trigger: the visible field is the filter input; the list opens in `ComboboxContent`.\n * Requires `Combobox liftedFilter` (and usually `ComboboxTrigger asChild` wrapping a positioned container).\n */\nexport const ComboboxInlineInput = ({\n class: className,\n onKeyDown,\n onInput,\n onFocus,\n ...rest\n}: ComboboxInlineInputProps) => {\n const ctx = useCombobox();\n const popover = usePopover();\n if (!ctx.filterQuery) {\n throw new Error(\"ComboboxInlineInput must be used with Combobox liftedFilter={true}\");\n }\n\n void ctx.filterQuery.value;\n void popover.open.value;\n\n return (\n <input\n {...rest}\n data-slot=\"combobox-inline-input\"\n class={cn(\n \"border-input bg-background placeholder:text-muted-foreground flex h-10 w-full min-w-0 rounded-md border px-3 py-2 text-sm shadow-xs outline-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n value={ctx.filterQuery.value}\n onInput={(event) => {\n ctx.filterQuery!.value = event.currentTarget.value;\n popover.setOpen(true);\n onInput?.(event);\n }}\n onFocus={(event) => {\n onFocus?.(event);\n popover.setOpen(true);\n }}\n onKeyDown={(event) => {\n const nav = ctx.commandNavRef.current;\n if (ctx.autoHighlight && nav) {\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n popover.setOpen(true);\n nav.moveHighlight(1);\n return;\n }\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n popover.setOpen(true);\n nav.moveHighlight(-1);\n return;\n }\n if (event.key === \"Enter\") {\n event.preventDefault();\n if (popover.open.value) nav.activateHighlighted();\n return;\n }\n }\n onKeyDown?.(event);\n }}\n />\n );\n};\n","import { cn } from \"../../lib/utils\";\nimport { CommandInput, type CommandInputProps } from \"../command/CommandInput\";\n\nexport const ComboboxInput = ({ class: className, ...rest }: CommandInputProps) => (\n <CommandInput class={cn(className)} {...rest} />\n);\n\nexport type { CommandInputProps as ComboboxInputProps };\n","import { cn } from \"../../lib/utils\";\nimport { CommandItem, type CommandItemProps } from \"../command/CommandItem\";\nimport { usePopover } from \"../popover/Popover\";\nimport { useCombobox } from \"./combobox-context\";\n\nexport type ComboboxItemProps = Omit<CommandItemProps, \"value\" | \"onSelect\"> & {\n item: unknown;\n};\n\nexport const ComboboxItem = ({\n item,\n class: className,\n children,\n disabled,\n onClick,\n ...rest\n}: ComboboxItemProps) => {\n const ctx = useCombobox();\n const popover = usePopover();\n const filterValue = ctx.itemToString(item);\n const key = ctx.itemKey(item);\n const selected = ctx.multiple ? ctx.selectedKeys.includes(key) : ctx.selectedKey === key;\n\n return (\n <CommandItem\n value={filterValue}\n disabled={disabled}\n class={cn(selected && \"bg-accent/60\", className)}\n onSelect={() => {\n if (ctx.multiple) {\n ctx.toggleByItem(item);\n if (ctx.closeOnSelect) popover.setOpen(false);\n } else {\n ctx.selectByItem(item);\n popover.setOpen(false);\n }\n }}\n onClick={onClick}\n {...rest}\n >\n {children}\n </CommandItem>\n );\n};\n","import type { ComponentChildren } from \"preact\";\nimport { CommandList, type CommandListProps } from \"../command/CommandList\";\nimport { useCombobox } from \"./combobox-context\";\n\nexport type ComboboxListProps = Omit<CommandListProps, \"children\"> & {\n items?: readonly unknown[];\n children: ComponentChildren | ((item: unknown, index: number) => ComponentChildren);\n};\n\nexport const ComboboxList = ({\n items: itemsProp,\n children,\n onMount,\n ...rest\n}: ComboboxListProps) => {\n const ctx = useCombobox();\n const list = itemsProp !== undefined ? itemsProp : ctx.items;\n const body =\n typeof children === \"function\"\n ? list.map((item, index) =>\n (children as (i: unknown, idx: number) => ComponentChildren)(item, index),\n )\n : children;\n return (\n <CommandList\n {...rest}\n onMount={(el) => {\n ctx.comboboxListRef.current = el;\n onMount?.(el);\n }}\n >\n {body}\n </CommandList>\n );\n};\n","import { cn } from \"../../lib/utils\";\nimport { PopoverTrigger, type PopoverTriggerProps } from \"../popover/PopoverTrigger\";\nimport { useCombobox } from \"./combobox-context\";\n\nexport const ComboboxTrigger = ({ class: className, disabled, ...rest }: PopoverTriggerProps) => {\n const ctx = useCombobox();\n return (\n <PopoverTrigger\n class={cn(\n \"border-input bg-background hover:bg-muted/50 flex h-8 w-full min-w-44 items-center justify-between gap-2 rounded-md border px-3 py-1 text-start text-sm font-normal shadow-xs outline-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n disabled={disabled ?? ctx.disabled}\n {...rest}\n />\n );\n};\n\nexport type { PopoverTriggerProps as ComboboxTriggerProps };\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { comboboxSelectionLabel, useCombobox } from \"./combobox-context\";\n\nexport type ComboboxValueProps = Omit<JSX.HTMLAttributes<HTMLSpanElement>, \"children\"> & {\n placeholder?: string;\n children?:\n | ((state: { label: string; empty: boolean; keys: string[] }) => ComponentChildren)\n | ComponentChildren;\n};\n\nexport const ComboboxValue = ({\n placeholder: placeholderProp,\n children,\n class: className,\n ...rest\n}: ComboboxValueProps) => {\n const ctx = useCombobox();\n const label = comboboxSelectionLabel(ctx);\n const empty = ctx.selectedKeys.length === 0;\n\n if (typeof children === \"function\") {\n return <>{children({ label, empty, keys: ctx.selectedKeys })}</>;\n }\n\n return (\n <span\n data-slot=\"combobox-value\"\n class={cn(\"truncate\", empty && \"text-muted-foreground\", className)}\n {...rest}\n >\n {empty ? (placeholderProp ?? ctx.placeholder) : label}\n </span>\n );\n};\n","import { cn } from \"../../lib/utils\";\nimport { ComboboxChip } from \"./ComboboxChip\";\nimport { ComboboxChips } from \"./ComboboxChips\";\nimport { ComboboxChipsInput } from \"./ComboboxChipsInput\";\nimport { ComboboxClear } from \"./ComboboxClear\";\nimport { ComboboxCommand } from \"./ComboboxCommand\";\nimport { ComboboxContent } from \"./ComboboxContent\";\nimport { ComboboxEmpty } from \"./ComboboxEmpty\";\nimport { ComboboxInlineInput } from \"./ComboboxInlineInput\";\nimport { ComboboxInput } from \"./ComboboxInput\";\nimport { ComboboxItem } from \"./ComboboxItem\";\nimport { ComboboxList } from \"./ComboboxList\";\nimport { ComboboxTrigger } from \"./ComboboxTrigger\";\nimport { ComboboxValue } from \"./ComboboxValue\";\nimport { Combobox, type ComboboxProps } from \"./combobox-context\";\n\nexport type ComboboxOption = { label: string; value: string };\n\nconst ChevronDownIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden\n class=\"shrink-0 opacity-50\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n);\n\nexport type ComboboxSelectProps = Omit<\n ComboboxProps,\n \"items\" | \"children\" | \"itemKey\" | \"itemToStringValue\"\n> & {\n options: ComboboxOption[];\n searchPlaceholder?: string;\n emptyText?: string;\n triggerClass?: string;\n};\n\n/** Preset around `{ label, value }[]`: button trigger, inline input trigger, multi chips, clear, and auto-highlight. */\nexport const ComboboxSelect = ({\n options,\n searchPlaceholder = \"Search…\",\n emptyText = \"No results found.\",\n triggerClass,\n showClear = false,\n autoHighlight = false,\n liftedFilter = false,\n multiple = false,\n class: className,\n placeholder,\n ...rest\n}: ComboboxSelectProps) => {\n const useLifted = Boolean(liftedFilter || multiple);\n\n if (multiple) {\n return (\n <Combobox\n class={className}\n items={options}\n itemKey={(o) => (o as ComboboxOption).value}\n itemToStringValue={(o) => (o as ComboboxOption).label}\n multiple\n liftedFilter\n autoHighlight={autoHighlight}\n showClear={showClear}\n placeholder={placeholder}\n {...rest}\n >\n <ComboboxChips class={triggerClass}>\n <ComboboxValue placeholder={placeholder ?? \"Select…\"}>\n {({ keys, empty }) => (\n <>\n {keys.map((k) => {\n const o = options.find((x) => x.value === k);\n if (!o) return null;\n return (\n <ComboboxChip key={k} itemKey={k}>\n {o.label}\n </ComboboxChip>\n );\n })}\n {empty ? (\n <span class=\"text-muted-foreground px-1 py-0.5 text-sm\">\n {placeholder ?? \"Select…\"}\n </span>\n ) : null}\n </>\n )}\n </ComboboxValue>\n {showClear ? <ComboboxClear class=\"shrink-0\" /> : null}\n <ComboboxChipsInput placeholder={searchPlaceholder} />\n </ComboboxChips>\n <ComboboxContent>\n <ComboboxCommand>\n <ComboboxEmpty>{emptyText}</ComboboxEmpty>\n <ComboboxList>\n {(opt) => {\n const o = opt as ComboboxOption;\n return (\n <ComboboxItem key={o.value} item={o}>\n {o.label}\n </ComboboxItem>\n );\n }}\n </ComboboxList>\n </ComboboxCommand>\n </ComboboxContent>\n </Combobox>\n );\n }\n\n if (useLifted) {\n return (\n <Combobox\n class={className}\n items={options}\n itemKey={(o) => (o as ComboboxOption).value}\n itemToStringValue={(o) => (o as ComboboxOption).label}\n liftedFilter\n autoHighlight={autoHighlight}\n showClear={showClear}\n placeholder={placeholder}\n {...rest}\n >\n <ComboboxTrigger asChild>\n <div class={cn(\"relative flex w-full min-w-44 items-center\", triggerClass)}>\n <ComboboxInlineInput placeholder={searchPlaceholder} class=\"pe-16\" />\n {showClear ? (\n <ComboboxClear class=\"absolute end-9 top-1/2 z-10 -translate-y-1/2\" />\n ) : null}\n <span class=\"pointer-events-none absolute end-3 top-1/2 -translate-y-1/2\">\n <ChevronDownIcon />\n </span>\n </div>\n </ComboboxTrigger>\n <ComboboxContent>\n <ComboboxCommand>\n <ComboboxEmpty>{emptyText}</ComboboxEmpty>\n <ComboboxList>\n {(opt) => {\n const o = opt as ComboboxOption;\n return (\n <ComboboxItem key={o.value} item={o}>\n {o.label}\n </ComboboxItem>\n );\n }}\n </ComboboxList>\n </ComboboxCommand>\n </ComboboxContent>\n </Combobox>\n );\n }\n\n return (\n <Combobox\n class={className}\n items={options}\n itemKey={(o) => (o as ComboboxOption).value}\n itemToStringValue={(o) => (o as ComboboxOption).label}\n autoHighlight={autoHighlight}\n showClear={showClear}\n placeholder={placeholder}\n {...rest}\n >\n <ComboboxTrigger class={cn(triggerClass)}>\n <ComboboxValue />\n <span class=\"ms-auto flex shrink-0 items-center gap-0.5\">\n {showClear ? <ComboboxClear /> : null}\n <ChevronDownIcon />\n </span>\n </ComboboxTrigger>\n <ComboboxContent>\n <ComboboxCommand>\n <ComboboxInput placeholder={searchPlaceholder} />\n <ComboboxEmpty>{emptyText}</ComboboxEmpty>\n <ComboboxList>\n {(opt) => {\n const o = opt as ComboboxOption;\n return (\n <ComboboxItem key={o.value} item={o}>\n {o.label}\n </ComboboxItem>\n );\n }}\n </ComboboxList>\n </ComboboxCommand>\n </ComboboxContent>\n </Combobox>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/combobox/combobox-utils.ts","../src/components/combobox/combobox-context.tsx","../src/components/combobox/ComboboxChip.tsx","../src/components/combobox/ComboboxChips.tsx","../src/components/combobox/ComboboxChipsInput.tsx","../src/components/combobox/ComboboxClear.tsx","../src/components/combobox/ComboboxCommand.tsx","../src/components/combobox/ComboboxContent.tsx","../src/components/combobox/ComboboxInlineInput.tsx","../src/components/combobox/ComboboxInput.tsx","../src/components/combobox/ComboboxItem.tsx","../src/components/combobox/ComboboxList.tsx","../src/components/combobox/ComboboxTrigger.tsx","../src/components/combobox/ComboboxValue.tsx","../src/components/combobox/ComboboxSelect.tsx"],"names":["jsx","useLayoutEffect","jsxs","Fragment"],"mappings":"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","file":"chunk-C7TARE5T.js","sourcesContent":["/** Flatten grouped `{ items: T[] }[]` shapes into leaf rows for selection lookup. */\nexport function flattenComboboxItems(items: readonly unknown[]): unknown[] {\n const out: unknown[] = [];\n for (const el of items) {\n if (el !== null && typeof el === \"object\" && \"items\" in el) {\n const sub = (el as { items: unknown }).items;\n if (Array.isArray(sub)) {\n out.push(...sub);\n continue;\n }\n }\n out.push(el);\n }\n return out;\n}\n\nexport function defaultComboboxItemKey(item: unknown): string {\n if (typeof item === \"string\" || typeof item === \"number\") return String(item);\n if (item && typeof item === \"object\" && \"value\" in item) {\n const v = (item as { value: unknown }).value;\n return v === undefined || v === null ? \"\" : String(v);\n }\n return JSON.stringify(item);\n}\n\nexport function defaultComboboxItemString(\n item: unknown,\n custom?: (item: unknown) => string,\n): string {\n if (custom) return custom(item);\n if (typeof item === \"string\") return item;\n if (item && typeof item === \"object\" && \"label\" in item) {\n const l = (item as { label: unknown }).label;\n return l === undefined || l === null ? \"\" : String(l);\n }\n return String(item);\n}\n","import { type Signal, signal } from \"@preact/signals\";\nimport type { ComponentChildren, JSX } from \"preact\";\nimport { createContext } from \"preact\";\nimport { useCallback, useContext, useLayoutEffect, useMemo, useRef, useState } from \"preact/hooks\";\nimport { cn } from \"../../lib/utils\";\nimport { Popover } from \"../popover/Popover\";\nimport {\n defaultComboboxItemKey,\n defaultComboboxItemString,\n flattenComboboxItems,\n} from \"./combobox-utils\";\n\nexport type ComboboxCommandNav = {\n moveHighlight: (delta: number) => void;\n activateHighlighted: () => void;\n};\n\nfunction normalizeInitialKeys(\n multiple: boolean,\n defaultValue: string | string[] | undefined,\n): string[] {\n if (defaultValue === undefined || defaultValue === \"\") return [];\n if (multiple) return Array.isArray(defaultValue) ? [...defaultValue] : [defaultValue];\n return typeof defaultValue === \"string\" ? [defaultValue] : [];\n}\n\nfunction keysFromValueProp(multiple: boolean, valueProp: string | string[] | undefined): string[] {\n if (valueProp === undefined) return [];\n if (multiple) return Array.isArray(valueProp) ? [...valueProp] : [];\n return typeof valueProp === \"string\" && valueProp ? [valueProp] : [];\n}\n\nexport type ComboboxContextValue = {\n items: readonly unknown[];\n leafItems: unknown[];\n itemToString: (item: unknown) => string;\n itemKey: (item: unknown) => string;\n selectedKeys: string[];\n /** First selected key; empty string if none (single-select ergonomics). */\n selectedKey: string;\n multiple: boolean;\n isSelected: (key: string) => boolean;\n selectByItem: (item: unknown) => void;\n toggleByItem: (item: unknown) => void;\n removeKey: (key: string) => void;\n clearSelection: () => void;\n placeholder: string;\n disabled: boolean;\n liftedFilter: boolean;\n filterQuery: Signal<string> | null;\n hasVisibleItems: Signal<boolean> | null;\n autoHighlight: boolean;\n showClear: boolean;\n closeOnSelect: boolean;\n comboboxListRef: { current: HTMLDivElement | null };\n commandNavRef: { current: ComboboxCommandNav | null };\n};\n\nconst ComboboxContext = createContext<ComboboxContextValue | null>(null);\n\nexport const useCombobox = () => {\n const ctx = useContext(ComboboxContext);\n if (!ctx) throw new Error(\"Combobox components must be used within Combobox\");\n return ctx;\n};\n\nexport function comboboxSelectionLabel(ctx: ComboboxContextValue): string {\n if (ctx.selectedKeys.length === 0) return \"\";\n const labels = ctx.selectedKeys.map((k) => {\n const it = ctx.leafItems.find((i) => ctx.itemKey(i) === k);\n return it !== undefined ? ctx.itemToString(it) : k;\n });\n return labels.join(\", \");\n}\n\nexport type ComboboxProps = Omit<JSX.HTMLAttributes<HTMLDivElement>, \"children\"> & {\n items?: readonly unknown[];\n itemToStringValue?: (item: unknown) => string;\n itemKey?: (item: unknown) => string;\n value?: string | string[];\n defaultValue?: string | string[];\n /** Emits `string` when `multiple` is false, else `string[]`. */\n onValueChange?: (value: string | string[]) => void;\n placeholder?: string;\n disabled?: boolean;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n multiple?: boolean;\n /** Share filter text between trigger input and `Command` (Base UI–style single input + list in popover). */\n liftedFilter?: boolean;\n /** Highlight first match and enable ArrowUp/Down + Enter in filter inputs (requires `ComboboxCommand autoHighlight` or preset). */\n autoHighlight?: boolean;\n showClear?: boolean;\n /** When `multiple`, defaults to `false`; when single, defaults to `true`. */\n closeOnSelect?: boolean;\n children?: ComponentChildren;\n};\n\nexport const Combobox = ({\n items = [],\n itemToStringValue,\n itemKey: itemKeyProp,\n value: valueProp,\n defaultValue,\n onValueChange,\n placeholder = \"Select…\",\n disabled = false,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n multiple: multipleProp = false,\n liftedFilter = false,\n autoHighlight = false,\n showClear = false,\n closeOnSelect: closeOnSelectProp,\n class: className,\n children,\n ...rest\n}: ComboboxProps) => {\n const multiple = Boolean(multipleProp);\n const closeOnSelect = closeOnSelectProp ?? !multiple;\n\n const itemToString = useMemo(\n () => (item: unknown) => defaultComboboxItemString(item, itemToStringValue),\n [itemToStringValue],\n );\n const itemKey = useMemo(\n () => (item: unknown) => (itemKeyProp ? itemKeyProp(item) : defaultComboboxItemKey(item)),\n [itemKeyProp],\n );\n const leafItems = useMemo(() => flattenComboboxItems(items), [items]);\n\n const isValueControlled = valueProp !== undefined;\n const [internalKeys, setInternalKeys] = useState<string[]>(() =>\n normalizeInitialKeys(multiple, defaultValue),\n );\n\n const selectedKeys = isValueControlled ? keysFromValueProp(multiple, valueProp) : internalKeys;\n const selectedKey = selectedKeys[0] ?? \"\";\n\n const filterQuery = useMemo(() => (liftedFilter ? signal(\"\") : null), [liftedFilter]);\n const hasVisibleItemsSig = useMemo(() => (liftedFilter ? signal(true) : null), [liftedFilter]);\n const comboboxListRef = useMemo(() => ({ current: null as HTMLDivElement | null }), []);\n const commandNavRef = useMemo(() => ({ current: null as ComboboxCommandNav | null }), []);\n\n const isOpenRef = useRef(false);\n const selectedKeysRef = useRef(selectedKeys);\n selectedKeysRef.current = selectedKeys;\n\n const emitKeys = useCallback(\n (next: string[]) => {\n if (!isValueControlled) setInternalKeys(next);\n if (multiple) onValueChange?.(next);\n else onValueChange?.(next[0] ?? \"\");\n },\n [isValueControlled, multiple, onValueChange],\n );\n\n const selectByItem = useCallback(\n (item: unknown) => {\n const key = itemKey(item);\n emitKeys(key ? [key] : []);\n },\n [itemKey, emitKeys],\n );\n\n const toggleByItem = useCallback(\n (item: unknown) => {\n const key = itemKey(item);\n const exists = selectedKeysRef.current.includes(key);\n const next = exists\n ? selectedKeysRef.current.filter((k) => k !== key)\n : [...selectedKeysRef.current, key];\n emitKeys(next);\n },\n [itemKey, emitKeys],\n );\n\n const removeKey = useCallback(\n (key: string) => {\n emitKeys(selectedKeysRef.current.filter((k) => k !== key));\n },\n [emitKeys],\n );\n\n const clearSelection = useCallback(() => {\n emitKeys([]);\n }, [emitKeys]);\n\n const isSelected = useCallback(\n (key: string) => {\n return selectedKeys.includes(key);\n },\n [selectedKeys],\n );\n\n const handleOpenChange = useCallback(\n (open: boolean) => {\n isOpenRef.current = open;\n onOpenChange?.(open);\n if (!liftedFilter || !filterQuery) return;\n if (open) {\n filterQuery.value = \"\";\n } else if (multiple) {\n filterQuery.value = \"\";\n } else {\n const k = selectedKeysRef.current[0];\n if (!k) filterQuery.value = \"\";\n else {\n const it = leafItems.find((i) => itemKey(i) === k);\n filterQuery.value = it !== undefined ? itemToString(it) : k;\n }\n }\n },\n [liftedFilter, filterQuery, onOpenChange, multiple, leafItems, itemKey, itemToString],\n );\n\n useLayoutEffect(() => {\n if (!liftedFilter || !filterQuery || multiple || isOpenRef.current) return;\n const k = selectedKeys[0];\n if (!k) {\n filterQuery.value = \"\";\n return;\n }\n const it = leafItems.find((i) => itemKey(i) === k);\n filterQuery.value = it !== undefined ? itemToString(it) : k;\n }, [liftedFilter, filterQuery, multiple, selectedKeys, leafItems, itemKey, itemToString]);\n\n const contextValue = useMemo<ComboboxContextValue>(\n () => ({\n items,\n leafItems,\n itemToString,\n itemKey,\n selectedKeys,\n selectedKey,\n multiple,\n isSelected,\n selectByItem,\n toggleByItem,\n removeKey,\n clearSelection,\n placeholder,\n disabled,\n liftedFilter,\n filterQuery,\n hasVisibleItems: hasVisibleItemsSig,\n autoHighlight,\n showClear,\n closeOnSelect,\n comboboxListRef,\n commandNavRef,\n }),\n [\n items,\n leafItems,\n itemToString,\n itemKey,\n selectedKeys,\n selectedKey,\n multiple,\n isSelected,\n selectByItem,\n toggleByItem,\n removeKey,\n clearSelection,\n placeholder,\n disabled,\n liftedFilter,\n filterQuery,\n hasVisibleItemsSig,\n autoHighlight,\n showClear,\n closeOnSelect,\n comboboxListRef,\n commandNavRef,\n ],\n );\n\n return (\n <ComboboxContext.Provider value={contextValue}>\n <div data-slot=\"combobox\" class={cn(\"relative\", className)} {...rest}>\n <Popover open={openProp} defaultOpen={defaultOpen} onOpenChange={handleOpenChange}>\n {children}\n </Popover>\n </div>\n </ComboboxContext.Provider>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { useCombobox } from \"./combobox-context\";\n\nexport type ComboboxChipProps = Omit<JSX.HTMLAttributes<HTMLSpanElement>, \"children\"> & {\n itemKey: string;\n children?: ComponentChildren;\n};\n\nexport const ComboboxChip = ({\n itemKey: chipKey,\n children,\n class: className,\n ...rest\n}: ComboboxChipProps) => {\n const ctx = useCombobox();\n return (\n <span\n data-slot=\"combobox-chip\"\n class={cn(\n \"bg-secondary text-secondary-foreground inline-flex max-w-full items-center gap-0.5 rounded-md px-2 py-0.5 text-xs\",\n className,\n )}\n {...rest}\n >\n <span class=\"min-w-0 truncate\">{children}</span>\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:text-foreground shrink-0 rounded p-0.5 outline-none focus-visible:ring-2 focus-visible:ring-ring/50\"\n aria-label=\"Remove\"\n onClick={(event) => {\n event.stopPropagation();\n ctx.removeKey(chipKey);\n }}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n </button>\n </span>\n );\n};\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { PopoverTrigger } from \"../popover/PopoverTrigger\";\n\nexport type ComboboxChipsProps = JSX.HTMLAttributes<HTMLDivElement> & {\n children?: ComponentChildren;\n};\n\n/** Multi-select trigger row: wrap chips + `ComboboxChipsInput` (with `liftedFilter`). */\nexport const ComboboxChips = ({ class: className, children, ...rest }: ComboboxChipsProps) => (\n <PopoverTrigger asChild>\n <div\n data-slot=\"combobox-chips\"\n class={cn(\n \"border-input bg-background flex min-h-8 w-full min-w-44 flex-wrap items-center gap-1 rounded-md border px-2 py-1 shadow-xs outline-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50\",\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n </PopoverTrigger>\n);\n","import type { JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { usePopover } from \"../popover/Popover\";\nimport { useCombobox } from \"./combobox-context\";\n\nexport type ComboboxChipsInputProps = JSX.InputHTMLAttributes<HTMLInputElement>;\n\n/** Filter field at the end of the chip row; requires `Combobox liftedFilter`. */\nexport const ComboboxChipsInput = ({\n class: className,\n onKeyDown,\n onInput,\n onFocus,\n ...rest\n}: ComboboxChipsInputProps) => {\n const ctx = useCombobox();\n const popover = usePopover();\n if (!ctx.filterQuery) {\n throw new Error(\"ComboboxChipsInput must be used with Combobox liftedFilter={true}\");\n }\n\n void ctx.filterQuery.value;\n void popover.open.value;\n\n return (\n <input\n {...rest}\n data-slot=\"combobox-chips-input\"\n class={cn(\n \"placeholder:text-muted-foreground min-w-[6rem] flex-1 border-0 bg-transparent px-1 py-1 text-sm outline-none\",\n className,\n )}\n value={ctx.filterQuery.value}\n onInput={(event) => {\n ctx.filterQuery!.value = event.currentTarget.value;\n popover.setOpen(true);\n onInput?.(event);\n }}\n onFocus={(event) => {\n onFocus?.(event);\n popover.setOpen(true);\n }}\n onKeyDown={(event) => {\n const nav = ctx.commandNavRef.current;\n if (ctx.autoHighlight && nav) {\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n popover.setOpen(true);\n nav.moveHighlight(1);\n return;\n }\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n popover.setOpen(true);\n nav.moveHighlight(-1);\n return;\n }\n if (event.key === \"Enter\") {\n event.preventDefault();\n if (popover.open.value) nav.activateHighlighted();\n return;\n }\n }\n onKeyDown?.(event);\n }}\n />\n );\n};\n","import type { JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { useCombobox } from \"./combobox-context\";\n\nexport type ComboboxClearProps = JSX.ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport const ComboboxClear = ({ class: className, onClick, ...rest }: ComboboxClearProps) => {\n const ctx = useCombobox();\n const has = ctx.selectedKeys.length > 0;\n if (!has || !ctx.showClear) return null;\n\n return (\n <button\n type=\"button\"\n data-slot=\"combobox-clear\"\n aria-label=\"Clear selection\"\n class={cn(\n \"text-muted-foreground hover:text-foreground inline-flex size-7 shrink-0 items-center justify-center rounded-md outline-none focus-visible:ring-2 focus-visible:ring-ring/50\",\n className,\n )}\n onClick={(event) => {\n onClick?.(event);\n if (event.defaultPrevented) return;\n ctx.clearSelection();\n if (ctx.filterQuery) ctx.filterQuery.value = \"\";\n }}\n {...rest}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden\n >\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n </button>\n );\n};\n","import { useLayoutEffect } from \"preact/hooks\";\nimport { cn } from \"../../lib/utils\";\nimport { Command, type CommandProps, useCommand } from \"../command/Command\";\nimport { useCombobox } from \"./combobox-context\";\n\nfunction CommandNavBridge() {\n const cmd = useCommand();\n const combo = useCombobox();\n const navRef = combo.commandNavRef;\n useLayoutEffect(() => {\n navRef.current = {\n moveHighlight: cmd.moveHighlight,\n activateHighlighted: cmd.activateHighlighted,\n };\n return () => {\n navRef.current = null;\n };\n }, [cmd.moveHighlight, cmd.activateHighlighted, navRef]);\n return null;\n}\n\nexport const ComboboxCommand = ({\n autoHighlight: autoHighlightProp,\n class: className,\n children,\n ...rest\n}: CommandProps) => {\n const ctx = useCombobox();\n const query = ctx.liftedFilter && ctx.filterQuery ? ctx.filterQuery : undefined;\n const hasVis = ctx.liftedFilter && ctx.hasVisibleItems ? ctx.hasVisibleItems : undefined;\n const autoHighlight = autoHighlightProp ?? ctx.autoHighlight;\n return (\n <Command\n {...rest}\n class={cn(\"rounded-lg border-0 bg-transparent shadow-none\", className)}\n autoHighlight={autoHighlight}\n query={query}\n hasVisibleItems={hasVis}\n >\n <CommandNavBridge />\n {children}\n </Command>\n );\n};\n\nexport type { CommandProps as ComboboxCommandProps };\n","import { cn } from \"../../lib/utils\";\nimport { usePopover } from \"../popover/Popover\";\nimport { PopoverContent, type PopoverContentProps } from \"../popover/PopoverContent\";\nimport { useCombobox } from \"./combobox-context\";\n\nexport const ComboboxContent = ({\n forceMount: forceMountProp,\n class: className,\n ...rest\n}: PopoverContentProps) => {\n const popover = usePopover();\n const ctx = useCombobox();\n const forceMount = forceMountProp ?? ctx.liftedFilter;\n return (\n <PopoverContent\n forceMount={forceMount}\n class={cn(\n \"w-64 max-w-[calc(100vw-1.5rem)] gap-0 overflow-hidden p-0\",\n ctx.liftedFilter &&\n !popover.open.value &&\n \"pointer-events-none invisible max-h-0 min-h-0 border-0 p-0 opacity-0 shadow-none\",\n className,\n )}\n {...rest}\n />\n );\n};\n\nexport type { PopoverContentProps as ComboboxContentProps };\n","import type { JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { usePopover } from \"../popover/Popover\";\nimport { useCombobox } from \"./combobox-context\";\n\nexport type ComboboxInlineInputProps = JSX.InputHTMLAttributes<HTMLInputElement>;\n\n/**\n * Base UI–style trigger: the visible field is the filter input; the list opens in `ComboboxContent`.\n * Requires `Combobox liftedFilter` (and usually `ComboboxTrigger asChild` wrapping a positioned container).\n */\nexport const ComboboxInlineInput = ({\n class: className,\n onKeyDown,\n onInput,\n onFocus,\n ...rest\n}: ComboboxInlineInputProps) => {\n const ctx = useCombobox();\n const popover = usePopover();\n if (!ctx.filterQuery) {\n throw new Error(\"ComboboxInlineInput must be used with Combobox liftedFilter={true}\");\n }\n\n void ctx.filterQuery.value;\n void popover.open.value;\n\n return (\n <input\n {...rest}\n data-slot=\"combobox-inline-input\"\n class={cn(\n \"border-input bg-background placeholder:text-muted-foreground flex h-10 w-full min-w-0 rounded-md border px-3 py-2 text-sm shadow-xs outline-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n value={ctx.filterQuery.value}\n onInput={(event) => {\n ctx.filterQuery!.value = event.currentTarget.value;\n popover.setOpen(true);\n onInput?.(event);\n }}\n onFocus={(event) => {\n onFocus?.(event);\n popover.setOpen(true);\n }}\n onKeyDown={(event) => {\n const nav = ctx.commandNavRef.current;\n if (ctx.autoHighlight && nav) {\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n popover.setOpen(true);\n nav.moveHighlight(1);\n return;\n }\n if (event.key === \"ArrowUp\") {\n event.preventDefault();\n popover.setOpen(true);\n nav.moveHighlight(-1);\n return;\n }\n if (event.key === \"Enter\") {\n event.preventDefault();\n if (popover.open.value) nav.activateHighlighted();\n return;\n }\n }\n onKeyDown?.(event);\n }}\n />\n );\n};\n","import { cn } from \"../../lib/utils\";\nimport { CommandInput, type CommandInputProps } from \"../command/CommandInput\";\n\nexport const ComboboxInput = ({ class: className, ...rest }: CommandInputProps) => (\n <CommandInput class={cn(className)} {...rest} />\n);\n\nexport type { CommandInputProps as ComboboxInputProps };\n","import { cn } from \"../../lib/utils\";\nimport { CommandItem, type CommandItemProps } from \"../command/CommandItem\";\nimport { usePopover } from \"../popover/Popover\";\nimport { useCombobox } from \"./combobox-context\";\n\nexport type ComboboxItemProps = Omit<CommandItemProps, \"value\" | \"onSelect\"> & {\n item: unknown;\n};\n\nexport const ComboboxItem = ({\n item,\n class: className,\n children,\n disabled,\n onClick,\n ...rest\n}: ComboboxItemProps) => {\n const ctx = useCombobox();\n const popover = usePopover();\n const filterValue = ctx.itemToString(item);\n const key = ctx.itemKey(item);\n const selected = ctx.multiple ? ctx.selectedKeys.includes(key) : ctx.selectedKey === key;\n\n return (\n <CommandItem\n value={filterValue}\n disabled={disabled}\n class={cn(selected && \"bg-accent/60\", className)}\n onSelect={() => {\n if (ctx.multiple) {\n ctx.toggleByItem(item);\n if (ctx.closeOnSelect) popover.setOpen(false);\n } else {\n ctx.selectByItem(item);\n popover.setOpen(false);\n }\n }}\n onClick={onClick}\n {...rest}\n >\n {children}\n </CommandItem>\n );\n};\n","import type { ComponentChildren } from \"preact\";\nimport { CommandList, type CommandListProps } from \"../command/CommandList\";\nimport { useCombobox } from \"./combobox-context\";\n\nexport type ComboboxListProps = Omit<CommandListProps, \"children\"> & {\n items?: readonly unknown[];\n children: ComponentChildren | ((item: unknown, index: number) => ComponentChildren);\n};\n\nexport const ComboboxList = ({\n items: itemsProp,\n children,\n onMount,\n ...rest\n}: ComboboxListProps) => {\n const ctx = useCombobox();\n const list = itemsProp !== undefined ? itemsProp : ctx.items;\n const body =\n typeof children === \"function\"\n ? list.map((item, index) =>\n (children as (i: unknown, idx: number) => ComponentChildren)(item, index),\n )\n : children;\n return (\n <CommandList\n {...rest}\n onMount={(el) => {\n ctx.comboboxListRef.current = el;\n onMount?.(el);\n }}\n >\n {body}\n </CommandList>\n );\n};\n","import { cn } from \"../../lib/utils\";\nimport { PopoverTrigger, type PopoverTriggerProps } from \"../popover/PopoverTrigger\";\nimport { useCombobox } from \"./combobox-context\";\n\nexport const ComboboxTrigger = ({ class: className, disabled, ...rest }: PopoverTriggerProps) => {\n const ctx = useCombobox();\n return (\n <PopoverTrigger\n class={cn(\n \"border-input bg-background hover:bg-muted/50 flex h-8 w-full min-w-44 items-center justify-between gap-2 rounded-md border px-3 py-1 text-start text-sm font-normal shadow-xs outline-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n disabled={disabled ?? ctx.disabled}\n {...rest}\n />\n );\n};\n\nexport type { PopoverTriggerProps as ComboboxTriggerProps };\n","import type { ComponentChildren, JSX } from \"preact\";\nimport { cn } from \"../../lib/utils\";\nimport { comboboxSelectionLabel, useCombobox } from \"./combobox-context\";\n\nexport type ComboboxValueProps = Omit<JSX.HTMLAttributes<HTMLSpanElement>, \"children\"> & {\n placeholder?: string;\n children?:\n | ((state: { label: string; empty: boolean; keys: string[] }) => ComponentChildren)\n | ComponentChildren;\n};\n\nexport const ComboboxValue = ({\n placeholder: placeholderProp,\n children,\n class: className,\n ...rest\n}: ComboboxValueProps) => {\n const ctx = useCombobox();\n const label = comboboxSelectionLabel(ctx);\n const empty = ctx.selectedKeys.length === 0;\n\n if (typeof children === \"function\") {\n return <>{children({ label, empty, keys: ctx.selectedKeys })}</>;\n }\n\n return (\n <span\n data-slot=\"combobox-value\"\n class={cn(\"truncate\", empty && \"text-muted-foreground\", className)}\n {...rest}\n >\n {empty ? (placeholderProp ?? ctx.placeholder) : label}\n </span>\n );\n};\n","import { cn } from \"../../lib/utils\";\nimport { ComboboxChip } from \"./ComboboxChip\";\nimport { ComboboxChips } from \"./ComboboxChips\";\nimport { ComboboxChipsInput } from \"./ComboboxChipsInput\";\nimport { ComboboxClear } from \"./ComboboxClear\";\nimport { ComboboxCommand } from \"./ComboboxCommand\";\nimport { ComboboxContent } from \"./ComboboxContent\";\nimport { ComboboxEmpty } from \"./ComboboxEmpty\";\nimport { ComboboxInlineInput } from \"./ComboboxInlineInput\";\nimport { ComboboxInput } from \"./ComboboxInput\";\nimport { ComboboxItem } from \"./ComboboxItem\";\nimport { ComboboxList } from \"./ComboboxList\";\nimport { ComboboxTrigger } from \"./ComboboxTrigger\";\nimport { ComboboxValue } from \"./ComboboxValue\";\nimport { Combobox, type ComboboxProps } from \"./combobox-context\";\n\nexport type ComboboxOption = { label: string; value: string };\n\nconst ChevronDownIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden\n class=\"shrink-0 opacity-50\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n);\n\nexport type ComboboxSelectProps = Omit<\n ComboboxProps,\n \"items\" | \"children\" | \"itemKey\" | \"itemToStringValue\"\n> & {\n options: ComboboxOption[];\n searchPlaceholder?: string;\n emptyText?: string;\n triggerClass?: string;\n};\n\n/** Preset around `{ label, value }[]`: button trigger, inline input trigger, multi chips, clear, and auto-highlight. */\nexport const ComboboxSelect = ({\n options,\n searchPlaceholder = \"Search…\",\n emptyText = \"No results found.\",\n triggerClass,\n showClear = false,\n autoHighlight = false,\n liftedFilter = false,\n multiple = false,\n class: className,\n placeholder,\n ...rest\n}: ComboboxSelectProps) => {\n const useLifted = Boolean(liftedFilter || multiple);\n\n if (multiple) {\n return (\n <Combobox\n class={className}\n items={options}\n itemKey={(o) => (o as ComboboxOption).value}\n itemToStringValue={(o) => (o as ComboboxOption).label}\n multiple\n liftedFilter\n autoHighlight={autoHighlight}\n showClear={showClear}\n placeholder={placeholder}\n {...rest}\n >\n <ComboboxChips class={triggerClass}>\n <ComboboxValue placeholder={placeholder ?? \"Select…\"}>\n {({ keys, empty }) => (\n <>\n {keys.map((k) => {\n const o = options.find((x) => x.value === k);\n if (!o) return null;\n return (\n <ComboboxChip key={k} itemKey={k}>\n {o.label}\n </ComboboxChip>\n );\n })}\n {empty ? (\n <span class=\"text-muted-foreground px-1 py-0.5 text-sm\">\n {placeholder ?? \"Select…\"}\n </span>\n ) : null}\n </>\n )}\n </ComboboxValue>\n {showClear ? <ComboboxClear class=\"shrink-0\" /> : null}\n <ComboboxChipsInput placeholder={searchPlaceholder} />\n </ComboboxChips>\n <ComboboxContent>\n <ComboboxCommand>\n <ComboboxEmpty>{emptyText}</ComboboxEmpty>\n <ComboboxList>\n {(opt) => {\n const o = opt as ComboboxOption;\n return (\n <ComboboxItem key={o.value} item={o}>\n {o.label}\n </ComboboxItem>\n );\n }}\n </ComboboxList>\n </ComboboxCommand>\n </ComboboxContent>\n </Combobox>\n );\n }\n\n if (useLifted) {\n return (\n <Combobox\n class={className}\n items={options}\n itemKey={(o) => (o as ComboboxOption).value}\n itemToStringValue={(o) => (o as ComboboxOption).label}\n liftedFilter\n autoHighlight={autoHighlight}\n showClear={showClear}\n placeholder={placeholder}\n {...rest}\n >\n <ComboboxTrigger asChild>\n <div class={cn(\"relative flex w-full min-w-44 items-center\", triggerClass)}>\n <ComboboxInlineInput placeholder={searchPlaceholder} class=\"pe-16\" />\n {showClear ? (\n <ComboboxClear class=\"absolute end-9 top-1/2 z-10 -translate-y-1/2\" />\n ) : null}\n <span class=\"pointer-events-none absolute end-3 top-1/2 -translate-y-1/2\">\n <ChevronDownIcon />\n </span>\n </div>\n </ComboboxTrigger>\n <ComboboxContent>\n <ComboboxCommand>\n <ComboboxEmpty>{emptyText}</ComboboxEmpty>\n <ComboboxList>\n {(opt) => {\n const o = opt as ComboboxOption;\n return (\n <ComboboxItem key={o.value} item={o}>\n {o.label}\n </ComboboxItem>\n );\n }}\n </ComboboxList>\n </ComboboxCommand>\n </ComboboxContent>\n </Combobox>\n );\n }\n\n return (\n <Combobox\n class={className}\n items={options}\n itemKey={(o) => (o as ComboboxOption).value}\n itemToStringValue={(o) => (o as ComboboxOption).label}\n autoHighlight={autoHighlight}\n showClear={showClear}\n placeholder={placeholder}\n {...rest}\n >\n <ComboboxTrigger class={cn(triggerClass)}>\n <ComboboxValue />\n <span class=\"ms-auto flex shrink-0 items-center gap-0.5\">\n {showClear ? <ComboboxClear /> : null}\n <ChevronDownIcon />\n </span>\n </ComboboxTrigger>\n <ComboboxContent>\n <ComboboxCommand>\n <ComboboxInput placeholder={searchPlaceholder} />\n <ComboboxEmpty>{emptyText}</ComboboxEmpty>\n <ComboboxList>\n {(opt) => {\n const o = opt as ComboboxOption;\n return (\n <ComboboxItem key={o.value} item={o}>\n {o.label}\n </ComboboxItem>\n );\n }}\n </ComboboxList>\n </ComboboxCommand>\n </ComboboxContent>\n </Combobox>\n );\n};\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { cn } from './chunk-
|
|
1
|
+
import { cn } from './chunk-XIANSPQO.js';
|
|
2
2
|
import { isValidElement, cloneElement } from 'preact';
|
|
3
3
|
import { tv } from 'tailwind-variants';
|
|
4
4
|
import { jsx } from 'preact/jsx-runtime';
|
|
@@ -47,11 +47,8 @@ var Button = ({
|
|
|
47
47
|
}) => {
|
|
48
48
|
const resolvedVariant = variant ?? "default";
|
|
49
49
|
const resolvedSize = size ?? "default";
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
size: resolvedSize,
|
|
53
|
-
class: className
|
|
54
|
-
});
|
|
50
|
+
const variantClasses = button({ variant: resolvedVariant, size: resolvedSize });
|
|
51
|
+
const resolvedClassName = cn(variantClasses, className);
|
|
55
52
|
if (asChild) {
|
|
56
53
|
if (!isValidElement(children)) {
|
|
57
54
|
const env = globalThis.process?.env?.NODE_ENV;
|
|
@@ -66,7 +63,7 @@ var Button = ({
|
|
|
66
63
|
return cloneElement(children, {
|
|
67
64
|
...childProps,
|
|
68
65
|
...rest,
|
|
69
|
-
class: cn(childProps.class, childProps.className,
|
|
66
|
+
class: cn(variantClasses, childProps.class, childProps.className, className),
|
|
70
67
|
"data-slot": "button",
|
|
71
68
|
"data-variant": resolvedVariant,
|
|
72
69
|
"data-size": resolvedSize
|
|
@@ -99,5 +96,5 @@ var Button = ({
|
|
|
99
96
|
};
|
|
100
97
|
|
|
101
98
|
export { Button, button };
|
|
102
|
-
//# sourceMappingURL=chunk-
|
|
103
|
-
//# sourceMappingURL=chunk-
|
|
99
|
+
//# sourceMappingURL=chunk-DDRX6NNW.js.map
|
|
100
|
+
//# sourceMappingURL=chunk-DDRX6NNW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/button/Button.tsx"],"names":[],"mappings":"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","file":"chunk-DDRX6NNW.js","sourcesContent":["import { type ComponentChildren, cloneElement, isValidElement, type JSX } from \"preact\";\nimport { tv, type VariantProps } from \"tailwind-variants\";\nimport { cn } from \"../../lib/utils\";\n\nexport const button = tv({\n base: [\n \"group/button inline-flex shrink-0 cursor-pointer items-center justify-center rounded-lg bg-clip-padding text-sm font-medium whitespace-nowrap\",\n \"select-none transition-all outline-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50\",\n \"active:translate-y-px disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n \"aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20\",\n \"dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n \"has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n ],\n variants: {\n variant: {\n default: \"bg-primary text-background hover:bg-foreground/90 focus-visible:ring-outline/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/90 focus-visible:ring-secondary/50\",\n inverse: \"bg-foreground text-background hover:opacity-[0.85] focus-visible:ring-outline/50\",\n outline:\n \"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50 border\",\n ghost: \"hover:bg-muted hover:text-foreground focus-visible:ring-outline/50\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90 focus-visible:ring-outline/50\",\n link: \"h-auto p-0 text-primary underline-offset-4 hover:underline active:translate-y-0 focus-visible:ring-0\",\n },\n size: {\n xxs: \"h-5 gap-1 px-1.5 text-[10px]\",\n xs: \"h-6 gap-1 px-2 text-xs\",\n sm: \"h-7 gap-1.5 px-3\",\n default: \"h-8 gap-1.5 px-2.5\",\n lg: \"h-9 gap-2 px-5 text-base has-[>svg]:px-4 [&_svg:not([class*='size-'])]:size-4.5\",\n icon: \"size-8\",\n \"icon-xs\": \"size-6 [&_svg:not([class*='size-'])]:size-3.5\",\n \"icon-sm\": \"size-7 [&_svg:not([class*='size-'])]:size-4\",\n \"icon-lg\": \"size-9 [&_svg:not([class*='size-'])]:size-5\",\n },\n },\n defaultVariants: { variant: \"default\", size: \"default\" },\n});\n\ntype CommonProps = VariantProps<typeof button> & {\n class?: string;\n asChild?: boolean;\n children?: ComponentChildren;\n};\n\ntype ButtonAsButton = CommonProps &\n JSX.ButtonHTMLAttributes<HTMLButtonElement> & {\n href?: undefined;\n };\n\ntype ButtonAsAnchor = CommonProps &\n JSX.AnchorHTMLAttributes<HTMLAnchorElement> & {\n href: string;\n };\n\nexport type ButtonProps = ButtonAsButton | ButtonAsAnchor;\n\nexport const Button = ({\n variant,\n size,\n asChild = false,\n class: className,\n children,\n ...rest\n}: ButtonProps) => {\n const resolvedVariant = variant ?? \"default\";\n const resolvedSize = size ?? \"default\";\n const variantClasses = button({ variant: resolvedVariant, size: resolvedSize });\n const resolvedClassName = cn(variantClasses, className);\n\n if (asChild) {\n if (!isValidElement(children)) {\n const env = (globalThis as { process?: { env?: { NODE_ENV?: string } } }).process?.env\n ?.NODE_ENV;\n if (env !== \"production\") {\n console.warn(\n \"[kamod-ui] <Button asChild> expects a single valid element child. \" +\n \"Received: \" +\n typeof children +\n \". Falling back to rendering nothing.\",\n );\n }\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 ...(rest as JSX.HTMLAttributes<HTMLElement>),\n class: cn(variantClasses, childProps.class, childProps.className, className),\n \"data-slot\": \"button\",\n \"data-variant\": resolvedVariant,\n \"data-size\": resolvedSize,\n });\n }\n\n if (\"href\" in rest && typeof rest.href === \"string\") {\n return (\n <a\n class={resolvedClassName}\n data-slot=\"button\"\n data-variant={resolvedVariant}\n data-size={resolvedSize}\n {...rest}\n >\n {children}\n </a>\n );\n }\n\n return (\n <button\n class={resolvedClassName}\n data-slot=\"button\"\n data-variant={resolvedVariant}\n data-size={resolvedSize}\n {...rest}\n >\n {children}\n </button>\n );\n};\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createPortal } from './chunk-B47B6KK6.js';
|
|
2
2
|
import { createControllableSignal } from './chunk-C7WEQOUA.js';
|
|
3
|
-
import { createIdFactory, createDismissableLayer, trapFocus, isPointerWithinModalDialogPanelSlop } from './chunk-
|
|
4
|
-
import { cn } from './chunk-
|
|
3
|
+
import { createIdFactory, createDismissableLayer, trapFocus, isPointerWithinModalDialogPanelSlop } from './chunk-3XMFQKWB.js';
|
|
4
|
+
import { cn } from './chunk-XIANSPQO.js';
|
|
5
5
|
import { signal } from '@preact/signals';
|
|
6
6
|
import { createContext, isValidElement, cloneElement } from 'preact';
|
|
7
7
|
import { useContext, useRef, useMemo, useEffect, useLayoutEffect } from 'preact/hooks';
|
|
@@ -473,5 +473,5 @@ var DialogTrigger = ({
|
|
|
473
473
|
};
|
|
474
474
|
|
|
475
475
|
export { Dialog, DialogClose, DialogContent, DialogDescription, DialogTitle, DialogTrigger, dialogViewportBleedClass, useDialog, useModalPanelA11y };
|
|
476
|
-
//# sourceMappingURL=chunk-
|
|
477
|
-
//# sourceMappingURL=chunk-
|
|
476
|
+
//# sourceMappingURL=chunk-DUTKHOH3.js.map
|
|
477
|
+
//# sourceMappingURL=chunk-DUTKHOH3.js.map
|