@particle-academy/react-fancy 5.21.0 → 5.22.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/dist/accordion-panel.cjs +8 -8
- package/dist/accordion-panel.js +2 -2
- package/dist/accordion.cjs +4 -4
- package/dist/accordion.js +2 -2
- package/dist/audio-viewer.cjs +3 -3
- package/dist/audio-viewer.js +2 -2
- package/dist/autocomplete.cjs +3 -3
- package/dist/autocomplete.js +2 -2
- package/dist/avatar.cjs +3 -3
- package/dist/avatar.js +2 -2
- package/dist/badge.cjs +3 -3
- package/dist/badge.js +2 -2
- package/dist/brand.cjs +4 -4
- package/dist/brand.js +2 -2
- package/dist/breadcrumbs.cjs +3 -3
- package/dist/breadcrumbs.js +2 -2
- package/dist/button.cjs +5 -5
- package/dist/button.js +3 -3
- package/dist/calendar.cjs +3 -3
- package/dist/calendar.js +2 -2
- package/dist/callout.cjs +3 -3
- package/dist/callout.js +2 -2
- package/dist/card.cjs +7 -7
- package/dist/card.js +2 -2
- package/dist/carousel.cjs +8 -8
- package/dist/carousel.js +2 -2
- package/dist/chart.cjs +3 -3
- package/dist/chart.js +2 -2
- package/dist/chat-drawer.cjs +4 -4
- package/dist/chat-drawer.js +3 -3
- package/dist/checkbox-group.cjs +5 -5
- package/dist/checkbox-group.js +4 -4
- package/dist/checkbox.cjs +3 -3
- package/dist/checkbox.js +2 -2
- package/dist/{chunk-ZLCVKYHY.js → chunk-25ZOOUFG.js} +3 -3
- package/dist/{chunk-ZLCVKYHY.js.map → chunk-25ZOOUFG.js.map} +1 -1
- package/dist/{chunk-UCYAHLGM.js → chunk-2LBRS6Z4.js} +3 -3
- package/dist/{chunk-UCYAHLGM.js.map → chunk-2LBRS6Z4.js.map} +1 -1
- package/dist/{chunk-E4LFD44D.js → chunk-35EN5AYE.js} +3 -3
- package/dist/{chunk-E4LFD44D.js.map → chunk-35EN5AYE.js.map} +1 -1
- package/dist/{chunk-AOOBRPTE.cjs → chunk-3EIB7RPD.cjs} +8 -8
- package/dist/{chunk-AOOBRPTE.cjs.map → chunk-3EIB7RPD.cjs.map} +1 -1
- package/dist/{chunk-GKGL7F36.js → chunk-3FG5K7A7.js} +3 -3
- package/dist/{chunk-GKGL7F36.js.map → chunk-3FG5K7A7.js.map} +1 -1
- package/dist/{chunk-WNIP443K.js → chunk-3LM47BME.js} +4 -4
- package/dist/{chunk-WNIP443K.js.map → chunk-3LM47BME.js.map} +1 -1
- package/dist/{chunk-NH7NRRII.js → chunk-4K4ECIKK.js} +3 -3
- package/dist/{chunk-NH7NRRII.js.map → chunk-4K4ECIKK.js.map} +1 -1
- package/dist/{chunk-KC6QBKKB.cjs → chunk-524TOKU3.cjs} +8 -8
- package/dist/{chunk-KC6QBKKB.cjs.map → chunk-524TOKU3.cjs.map} +1 -1
- package/dist/{chunk-6OSHAP6L.cjs → chunk-5CXJ5Z4C.cjs} +6 -6
- package/dist/{chunk-6OSHAP6L.cjs.map → chunk-5CXJ5Z4C.cjs.map} +1 -1
- package/dist/{chunk-AY3JABE3.cjs → chunk-5DSMOURR.cjs} +4 -4
- package/dist/{chunk-AY3JABE3.cjs.map → chunk-5DSMOURR.cjs.map} +1 -1
- package/dist/{chunk-VQ4M25U3.cjs → chunk-5P3PISAX.cjs} +4 -4
- package/dist/{chunk-VQ4M25U3.cjs.map → chunk-5P3PISAX.cjs.map} +1 -1
- package/dist/{chunk-P7AJAN62.js → chunk-5RLP77KK.js} +3 -3
- package/dist/{chunk-P7AJAN62.js.map → chunk-5RLP77KK.js.map} +1 -1
- package/dist/{chunk-FCAV5IFW.js → chunk-6GWOB2Z4.js} +3 -3
- package/dist/{chunk-FCAV5IFW.js.map → chunk-6GWOB2Z4.js.map} +1 -1
- package/dist/{chunk-JCOBDDHF.js → chunk-6KXAFP2T.js} +3 -3
- package/dist/{chunk-JCOBDDHF.js.map → chunk-6KXAFP2T.js.map} +1 -1
- package/dist/{chunk-E7PHL3TD.cjs → chunk-6LOV75CN.cjs} +5 -5
- package/dist/{chunk-E7PHL3TD.cjs.map → chunk-6LOV75CN.cjs.map} +1 -1
- package/dist/{chunk-CEEEENPW.js → chunk-6PF5ENWM.js} +3 -3
- package/dist/{chunk-CEEEENPW.js.map → chunk-6PF5ENWM.js.map} +1 -1
- package/dist/{chunk-2PELJ4VA.cjs → chunk-6SO2ZX3J.cjs} +15 -15
- package/dist/{chunk-2PELJ4VA.cjs.map → chunk-6SO2ZX3J.cjs.map} +1 -1
- package/dist/{chunk-AVR5P4GA.cjs → chunk-7B3HK6TY.cjs} +11 -11
- package/dist/{chunk-AVR5P4GA.cjs.map → chunk-7B3HK6TY.cjs.map} +1 -1
- package/dist/{chunk-YHXE274U.js → chunk-7CN7IHES.js} +3 -3
- package/dist/{chunk-YHXE274U.js.map → chunk-7CN7IHES.js.map} +1 -1
- package/dist/{chunk-7NLKXBZ2.cjs → chunk-7EZBMGEE.cjs} +8 -8
- package/dist/{chunk-7NLKXBZ2.cjs.map → chunk-7EZBMGEE.cjs.map} +1 -1
- package/dist/{chunk-ZFVSEO5Z.cjs → chunk-7HMEDY24.cjs} +6 -6
- package/dist/{chunk-ZFVSEO5Z.cjs.map → chunk-7HMEDY24.cjs.map} +1 -1
- package/dist/{chunk-YXC7QHNT.cjs → chunk-7VLRHXLQ.cjs} +6 -6
- package/dist/{chunk-YXC7QHNT.cjs.map → chunk-7VLRHXLQ.cjs.map} +1 -1
- package/dist/{chunk-GIDW3SUE.cjs → chunk-7Y2AENZD.cjs} +6 -6
- package/dist/{chunk-GIDW3SUE.cjs.map → chunk-7Y2AENZD.cjs.map} +1 -1
- package/dist/{chunk-ANEX75DF.cjs → chunk-AASQ6L6X.cjs} +4 -4
- package/dist/{chunk-ANEX75DF.cjs.map → chunk-AASQ6L6X.cjs.map} +1 -1
- package/dist/{chunk-ZWOEKDNI.js → chunk-AT5OG5N4.js} +3 -3
- package/dist/{chunk-ZWOEKDNI.js.map → chunk-AT5OG5N4.js.map} +1 -1
- package/dist/{chunk-TVRCOKJQ.cjs → chunk-ATJSHM6J.cjs} +4 -4
- package/dist/{chunk-TVRCOKJQ.cjs.map → chunk-ATJSHM6J.cjs.map} +1 -1
- package/dist/{chunk-A22T6DKO.cjs → chunk-AVCDGSXV.cjs} +13 -13
- package/dist/{chunk-A22T6DKO.cjs.map → chunk-AVCDGSXV.cjs.map} +1 -1
- package/dist/{chunk-MDUSUJWY.cjs → chunk-AVU4JOYM.cjs} +4 -4
- package/dist/{chunk-MDUSUJWY.cjs.map → chunk-AVU4JOYM.cjs.map} +1 -1
- package/dist/{chunk-AR2IBCX7.cjs → chunk-BZP4LOO5.cjs} +53 -53
- package/dist/{chunk-AR2IBCX7.cjs.map → chunk-BZP4LOO5.cjs.map} +1 -1
- package/dist/{chunk-HAOYXGGJ.js → chunk-CCG2L5EH.js} +3 -3
- package/dist/{chunk-HAOYXGGJ.js.map → chunk-CCG2L5EH.js.map} +1 -1
- package/dist/{chunk-Y5V5GBN4.cjs → chunk-CJVNO5YM.cjs} +6 -6
- package/dist/{chunk-Y5V5GBN4.cjs.map → chunk-CJVNO5YM.cjs.map} +1 -1
- package/dist/{chunk-PVWPZYTR.js → chunk-CK6LRROH.js} +3 -3
- package/dist/{chunk-PVWPZYTR.js.map → chunk-CK6LRROH.js.map} +1 -1
- package/dist/{chunk-LNWO23PU.cjs → chunk-COH45MGW.cjs} +7 -7
- package/dist/{chunk-LNWO23PU.cjs.map → chunk-COH45MGW.cjs.map} +1 -1
- package/dist/{chunk-EVXDG2XN.js → chunk-CRR3AMJ4.js} +3 -3
- package/dist/{chunk-EVXDG2XN.js.map → chunk-CRR3AMJ4.js.map} +1 -1
- package/dist/{chunk-BWT2L6XP.js → chunk-D7G53WOZ.js} +6 -6
- package/dist/{chunk-BWT2L6XP.js.map → chunk-D7G53WOZ.js.map} +1 -1
- package/dist/{chunk-JYKZKSZJ.js → chunk-DIHH75KD.js} +5 -5
- package/dist/{chunk-JYKZKSZJ.js.map → chunk-DIHH75KD.js.map} +1 -1
- package/dist/{chunk-ZT36VWIA.js → chunk-DKKU3VVJ.js} +5 -5
- package/dist/{chunk-ZT36VWIA.js.map → chunk-DKKU3VVJ.js.map} +1 -1
- package/dist/{chunk-PITWDKKY.js → chunk-EWRP6KCY.js} +3 -3
- package/dist/{chunk-PITWDKKY.js.map → chunk-EWRP6KCY.js.map} +1 -1
- package/dist/{chunk-HTKDPFLJ.cjs → chunk-F2VJEXN2.cjs} +16 -16
- package/dist/{chunk-HTKDPFLJ.cjs.map → chunk-F2VJEXN2.cjs.map} +1 -1
- package/dist/{chunk-DV4IMAQW.js → chunk-FA4IG5RB.js} +3 -3
- package/dist/{chunk-DV4IMAQW.js.map → chunk-FA4IG5RB.js.map} +1 -1
- package/dist/{chunk-FVV76TRF.js → chunk-FBWUXSKH.js} +3 -3
- package/dist/{chunk-FVV76TRF.js.map → chunk-FBWUXSKH.js.map} +1 -1
- package/dist/{chunk-XMBOZ73D.js → chunk-FCSR2WVS.js} +3 -3
- package/dist/{chunk-XMBOZ73D.js.map → chunk-FCSR2WVS.js.map} +1 -1
- package/dist/{chunk-3DJGPNUI.js → chunk-FERMW3YE.js} +3 -3
- package/dist/{chunk-3DJGPNUI.js.map → chunk-FERMW3YE.js.map} +1 -1
- package/dist/{chunk-M24NCWBU.js → chunk-FFWAY7F5.js} +3 -3
- package/dist/{chunk-M24NCWBU.js.map → chunk-FFWAY7F5.js.map} +1 -1
- package/dist/{chunk-SYXLPCQP.cjs → chunk-FQSSVOVQ.cjs} +4 -4
- package/dist/{chunk-SYXLPCQP.cjs.map → chunk-FQSSVOVQ.cjs.map} +1 -1
- package/dist/{chunk-RNHIDZLE.cjs → chunk-G7227RTY.cjs} +7 -7
- package/dist/{chunk-RNHIDZLE.cjs.map → chunk-G7227RTY.cjs.map} +1 -1
- package/dist/{chunk-KUKYJZIU.cjs → chunk-GBGJWAXZ.cjs} +8 -8
- package/dist/{chunk-KUKYJZIU.cjs.map → chunk-GBGJWAXZ.cjs.map} +1 -1
- package/dist/{chunk-IE4CM2SN.js → chunk-GIIGXAT4.js} +5 -5
- package/dist/{chunk-IE4CM2SN.js.map → chunk-GIIGXAT4.js.map} +1 -1
- package/dist/{chunk-SKI33QNW.js → chunk-GKEWT3DW.js} +3 -3
- package/dist/{chunk-SKI33QNW.js.map → chunk-GKEWT3DW.js.map} +1 -1
- package/dist/{chunk-X5VZRFQD.cjs → chunk-H5OPZEVQ.cjs} +5 -5
- package/dist/{chunk-X5VZRFQD.cjs.map → chunk-H5OPZEVQ.cjs.map} +1 -1
- package/dist/{chunk-CS4GQXYY.js → chunk-H6F6ZWAG.js} +3 -3
- package/dist/{chunk-CS4GQXYY.js.map → chunk-H6F6ZWAG.js.map} +1 -1
- package/dist/{chunk-T6IXZZBQ.cjs → chunk-HE3JJXIL.cjs} +4 -4
- package/dist/{chunk-T6IXZZBQ.cjs.map → chunk-HE3JJXIL.cjs.map} +1 -1
- package/dist/{chunk-ARSQY4P7.cjs → chunk-HIN6PHSE.cjs} +7 -7
- package/dist/{chunk-ARSQY4P7.cjs.map → chunk-HIN6PHSE.cjs.map} +1 -1
- package/dist/{chunk-WT72KW5M.cjs → chunk-HIOMHITU.cjs} +19 -19
- package/dist/{chunk-WT72KW5M.cjs.map → chunk-HIOMHITU.cjs.map} +1 -1
- package/dist/{chunk-B4JLRS5E.js → chunk-HOP3XXPV.js} +3 -3
- package/dist/{chunk-B4JLRS5E.js.map → chunk-HOP3XXPV.js.map} +1 -1
- package/dist/{chunk-CQWPMRYS.js → chunk-HYNED2OA.js} +5 -5
- package/dist/{chunk-CQWPMRYS.js.map → chunk-HYNED2OA.js.map} +1 -1
- package/dist/{chunk-IF5LOWUL.js → chunk-I3RPL3GE.js} +3 -3
- package/dist/{chunk-IF5LOWUL.js.map → chunk-I3RPL3GE.js.map} +1 -1
- package/dist/{chunk-6Y2QO7YV.cjs → chunk-ICT477LK.cjs} +8 -8
- package/dist/{chunk-6Y2QO7YV.cjs.map → chunk-ICT477LK.cjs.map} +1 -1
- package/dist/{chunk-VBZZ4CMM.cjs → chunk-ISPCXIJZ.cjs} +5 -5
- package/dist/{chunk-VBZZ4CMM.cjs.map → chunk-ISPCXIJZ.cjs.map} +1 -1
- package/dist/{chunk-M7EEQPE7.js → chunk-IVRYSSM7.js} +3 -3
- package/dist/{chunk-M7EEQPE7.js.map → chunk-IVRYSSM7.js.map} +1 -1
- package/dist/{chunk-D4WM23Y4.js → chunk-IWXP2YUP.js} +3 -3
- package/dist/{chunk-D4WM23Y4.js.map → chunk-IWXP2YUP.js.map} +1 -1
- package/dist/{chunk-6GC5DMOK.cjs → chunk-JFOORUUD.cjs} +8 -8
- package/dist/{chunk-6GC5DMOK.cjs.map → chunk-JFOORUUD.cjs.map} +1 -1
- package/dist/{chunk-MZIU27UY.js → chunk-JICO4LTT.js} +3 -3
- package/dist/{chunk-MZIU27UY.js.map → chunk-JICO4LTT.js.map} +1 -1
- package/dist/{chunk-ZNTEM7F2.js → chunk-JJBOKZWV.js} +3 -3
- package/dist/{chunk-ZNTEM7F2.js.map → chunk-JJBOKZWV.js.map} +1 -1
- package/dist/{chunk-FO4GCX67.cjs → chunk-JM2H642B.cjs} +9 -9
- package/dist/{chunk-FO4GCX67.cjs.map → chunk-JM2H642B.cjs.map} +1 -1
- package/dist/{chunk-7ZDIQOFH.cjs → chunk-JV6RDIA6.cjs} +13 -13
- package/dist/{chunk-7ZDIQOFH.cjs.map → chunk-JV6RDIA6.cjs.map} +1 -1
- package/dist/{chunk-K7JGOQJG.js → chunk-KKWNKBKR.js} +3 -3
- package/dist/{chunk-K7JGOQJG.js.map → chunk-KKWNKBKR.js.map} +1 -1
- package/dist/{chunk-QWSTG5MF.js → chunk-KO2HLNBB.js} +7 -7
- package/dist/{chunk-QWSTG5MF.js.map → chunk-KO2HLNBB.js.map} +1 -1
- package/dist/{chunk-5QL7XT3N.js → chunk-KQQA7JBC.js} +4 -4
- package/dist/{chunk-5QL7XT3N.js.map → chunk-KQQA7JBC.js.map} +1 -1
- package/dist/{chunk-DWRMC2FN.cjs → chunk-LMPPAQKP.cjs} +7 -7
- package/dist/{chunk-DWRMC2FN.cjs.map → chunk-LMPPAQKP.cjs.map} +1 -1
- package/dist/{chunk-JU5W65N3.cjs → chunk-LNFMT2CE.cjs} +18 -18
- package/dist/{chunk-JU5W65N3.cjs.map → chunk-LNFMT2CE.cjs.map} +1 -1
- package/dist/{chunk-M2S5GCXY.cjs → chunk-LY7PZEF4.cjs} +11 -11
- package/dist/{chunk-M2S5GCXY.cjs.map → chunk-LY7PZEF4.cjs.map} +1 -1
- package/dist/{chunk-AKIUDPJU.js → chunk-LYHQ4VBR.js} +3 -3
- package/dist/{chunk-AKIUDPJU.js.map → chunk-LYHQ4VBR.js.map} +1 -1
- package/dist/{chunk-MKFWFZVX.js → chunk-M6AONUIX.js} +3 -3
- package/dist/{chunk-MKFWFZVX.js.map → chunk-M6AONUIX.js.map} +1 -1
- package/dist/{chunk-KKYP5R3G.cjs → chunk-MCCE5RDB.cjs} +12 -12
- package/dist/{chunk-KKYP5R3G.cjs.map → chunk-MCCE5RDB.cjs.map} +1 -1
- package/dist/{chunk-X36ZGYTF.js → chunk-MEUR7C6X.js} +5 -5
- package/dist/{chunk-X36ZGYTF.js.map → chunk-MEUR7C6X.js.map} +1 -1
- package/dist/{chunk-RM4QWJS3.js → chunk-MIUSTEIV.js} +3 -3
- package/dist/{chunk-RM4QWJS3.js.map → chunk-MIUSTEIV.js.map} +1 -1
- package/dist/chunk-MMW2JGKZ.js +29 -0
- package/dist/chunk-MMW2JGKZ.js.map +1 -0
- package/dist/{chunk-RID7CYGD.js → chunk-MRRKDRZU.js} +5 -5
- package/dist/{chunk-RID7CYGD.js.map → chunk-MRRKDRZU.js.map} +1 -1
- package/dist/{chunk-A3CNYKT3.js → chunk-MUCXXYDN.js} +3 -3
- package/dist/{chunk-A3CNYKT3.js.map → chunk-MUCXXYDN.js.map} +1 -1
- package/dist/{chunk-CZZH45GQ.cjs → chunk-N4VHOTMK.cjs} +9 -9
- package/dist/{chunk-CZZH45GQ.cjs.map → chunk-N4VHOTMK.cjs.map} +1 -1
- package/dist/{chunk-6FBFE66M.cjs → chunk-N6K2CTSU.cjs} +5 -5
- package/dist/{chunk-6FBFE66M.cjs.map → chunk-N6K2CTSU.cjs.map} +1 -1
- package/dist/{chunk-DJ3YM72H.cjs → chunk-ND5D7GJB.cjs} +4 -4
- package/dist/{chunk-DJ3YM72H.cjs.map → chunk-ND5D7GJB.cjs.map} +1 -1
- package/dist/{chunk-YCZN4FWI.js → chunk-NDUEPDNS.js} +3 -3
- package/dist/{chunk-YCZN4FWI.js.map → chunk-NDUEPDNS.js.map} +1 -1
- package/dist/{chunk-6FYMMQ3G.cjs → chunk-NHTSQRAF.cjs} +10 -10
- package/dist/{chunk-6FYMMQ3G.cjs.map → chunk-NHTSQRAF.cjs.map} +1 -1
- package/dist/{chunk-PPLR2DNC.cjs → chunk-NP7SU2DF.cjs} +5 -5
- package/dist/{chunk-PPLR2DNC.cjs.map → chunk-NP7SU2DF.cjs.map} +1 -1
- package/dist/{chunk-POZZY3D5.cjs → chunk-NR346SKH.cjs} +5 -5
- package/dist/{chunk-POZZY3D5.cjs.map → chunk-NR346SKH.cjs.map} +1 -1
- package/dist/{chunk-TECFGOV2.js → chunk-NTMHP7FS.js} +3 -3
- package/dist/{chunk-TECFGOV2.js.map → chunk-NTMHP7FS.js.map} +1 -1
- package/dist/{chunk-7XDKIZQE.js → chunk-NUPQJ5SJ.js} +3 -3
- package/dist/{chunk-7XDKIZQE.js.map → chunk-NUPQJ5SJ.js.map} +1 -1
- package/dist/{chunk-M645OITZ.js → chunk-NYDR2VSA.js} +3 -3
- package/dist/{chunk-M645OITZ.js.map → chunk-NYDR2VSA.js.map} +1 -1
- package/dist/{chunk-3SQ34IQC.cjs → chunk-NZFJ4XMJ.cjs} +10 -10
- package/dist/{chunk-3SQ34IQC.cjs.map → chunk-NZFJ4XMJ.cjs.map} +1 -1
- package/dist/{chunk-YT42J4VQ.js → chunk-O6E2WC3J.js} +3 -3
- package/dist/{chunk-YT42J4VQ.js.map → chunk-O6E2WC3J.js.map} +1 -1
- package/dist/{chunk-5LHG7HEY.cjs → chunk-O6GTY53I.cjs} +4 -4
- package/dist/{chunk-5LHG7HEY.cjs.map → chunk-O6GTY53I.cjs.map} +1 -1
- package/dist/{chunk-ESKVRRVA.js → chunk-OFHO5SXA.js} +3 -3
- package/dist/{chunk-ESKVRRVA.js.map → chunk-OFHO5SXA.js.map} +1 -1
- package/dist/{chunk-SCPHSBBU.cjs → chunk-OGEE23SP.cjs} +4 -4
- package/dist/{chunk-SCPHSBBU.cjs.map → chunk-OGEE23SP.cjs.map} +1 -1
- package/dist/{chunk-RR7BWUVP.cjs → chunk-OS2QC3NE.cjs} +6 -6
- package/dist/{chunk-RR7BWUVP.cjs.map → chunk-OS2QC3NE.cjs.map} +1 -1
- package/dist/{chunk-F6SCZCJE.js → chunk-P7F32HIH.js} +3 -3
- package/dist/{chunk-F6SCZCJE.js.map → chunk-P7F32HIH.js.map} +1 -1
- package/dist/{chunk-WXADO5TS.cjs → chunk-PAESRUUH.cjs} +10 -10
- package/dist/{chunk-WXADO5TS.cjs.map → chunk-PAESRUUH.cjs.map} +1 -1
- package/dist/{chunk-PH3WGR5P.cjs → chunk-PFEFKLUV.cjs} +8 -8
- package/dist/{chunk-PH3WGR5P.cjs.map → chunk-PFEFKLUV.cjs.map} +1 -1
- package/dist/{chunk-5HOQ2PHR.cjs → chunk-PV5WDIGM.cjs} +9 -9
- package/dist/{chunk-5HOQ2PHR.cjs.map → chunk-PV5WDIGM.cjs.map} +1 -1
- package/dist/{chunk-DDRHCFUE.js → chunk-PVQBXEV3.js} +6 -6
- package/dist/{chunk-DDRHCFUE.js.map → chunk-PVQBXEV3.js.map} +1 -1
- package/dist/{chunk-D7NAXQ2N.js → chunk-PWEZCMIY.js} +3 -3
- package/dist/{chunk-D7NAXQ2N.js.map → chunk-PWEZCMIY.js.map} +1 -1
- package/dist/{chunk-LYFUPTLG.cjs → chunk-PWLBHNOA.cjs} +14 -14
- package/dist/{chunk-LYFUPTLG.cjs.map → chunk-PWLBHNOA.cjs.map} +1 -1
- package/dist/{chunk-BPBI3WWQ.cjs → chunk-QAFAPHAF.cjs} +8 -8
- package/dist/{chunk-BPBI3WWQ.cjs.map → chunk-QAFAPHAF.cjs.map} +1 -1
- package/dist/{chunk-AC7M7JDO.cjs → chunk-QDVDBUJM.cjs} +6 -6
- package/dist/{chunk-AC7M7JDO.cjs.map → chunk-QDVDBUJM.cjs.map} +1 -1
- package/dist/{chunk-2ICXWLKS.js → chunk-QJKWBU3I.js} +3 -3
- package/dist/{chunk-2ICXWLKS.js.map → chunk-QJKWBU3I.js.map} +1 -1
- package/dist/{chunk-JXIBUIEY.cjs → chunk-QKFOJKVE.cjs} +4 -4
- package/dist/{chunk-JXIBUIEY.cjs.map → chunk-QKFOJKVE.cjs.map} +1 -1
- package/dist/{chunk-NNSNANNY.cjs → chunk-QOGKO6JH.cjs} +5 -5
- package/dist/{chunk-NNSNANNY.cjs.map → chunk-QOGKO6JH.cjs.map} +1 -1
- package/dist/{chunk-B3HVWXIQ.cjs → chunk-QSFTWIUH.cjs} +8 -8
- package/dist/{chunk-B3HVWXIQ.cjs.map → chunk-QSFTWIUH.cjs.map} +1 -1
- package/dist/{chunk-3MHVFEIP.cjs → chunk-QW66UHWO.cjs} +4 -4
- package/dist/{chunk-3MHVFEIP.cjs.map → chunk-QW66UHWO.cjs.map} +1 -1
- package/dist/{chunk-IGYIMS6J.js → chunk-RA2VOQ46.js} +3 -3
- package/dist/{chunk-IGYIMS6J.js.map → chunk-RA2VOQ46.js.map} +1 -1
- package/dist/{chunk-HG6XUJOT.js → chunk-RFLPFQFF.js} +3 -3
- package/dist/{chunk-HG6XUJOT.js.map → chunk-RFLPFQFF.js.map} +1 -1
- package/dist/{chunk-KICZTIZL.cjs → chunk-RKG2Q2HT.cjs} +7 -7
- package/dist/{chunk-KICZTIZL.cjs.map → chunk-RKG2Q2HT.cjs.map} +1 -1
- package/dist/{chunk-PRJSEZ5F.cjs → chunk-RN2EW7CK.cjs} +12 -12
- package/dist/{chunk-PRJSEZ5F.cjs.map → chunk-RN2EW7CK.cjs.map} +1 -1
- package/dist/{chunk-EERAEPQO.cjs → chunk-RPVCMW64.cjs} +12 -12
- package/dist/{chunk-EERAEPQO.cjs.map → chunk-RPVCMW64.cjs.map} +1 -1
- package/dist/{chunk-ATFXU6R6.js → chunk-RSLZL6VP.js} +3 -3
- package/dist/{chunk-ATFXU6R6.js.map → chunk-RSLZL6VP.js.map} +1 -1
- package/dist/{chunk-HNITJ2UR.js → chunk-SAF5642F.js} +4 -4
- package/dist/{chunk-HNITJ2UR.js.map → chunk-SAF5642F.js.map} +1 -1
- package/dist/{chunk-4UA45GB4.js → chunk-SG3L4322.js} +6 -6
- package/dist/{chunk-4UA45GB4.js.map → chunk-SG3L4322.js.map} +1 -1
- package/dist/{chunk-PG3ILQIW.js → chunk-SLJD25VV.js} +3 -3
- package/dist/{chunk-PG3ILQIW.js.map → chunk-SLJD25VV.js.map} +1 -1
- package/dist/{chunk-EQGY3QDJ.cjs → chunk-SO4NNG26.cjs} +7 -7
- package/dist/{chunk-EQGY3QDJ.cjs.map → chunk-SO4NNG26.cjs.map} +1 -1
- package/dist/{chunk-DZD2RJVD.js → chunk-SOYORSLZ.js} +3 -3
- package/dist/{chunk-DZD2RJVD.js.map → chunk-SOYORSLZ.js.map} +1 -1
- package/dist/{chunk-MGZE2QEM.cjs → chunk-SUCBR6L5.cjs} +6 -6
- package/dist/{chunk-MGZE2QEM.cjs.map → chunk-SUCBR6L5.cjs.map} +1 -1
- package/dist/{chunk-NLJGNPNN.js → chunk-SWBF2BXA.js} +3 -3
- package/dist/{chunk-NLJGNPNN.js.map → chunk-SWBF2BXA.js.map} +1 -1
- package/dist/{chunk-6H6OYLMJ.js → chunk-SX4CSO6C.js} +3 -3
- package/dist/{chunk-6H6OYLMJ.js.map → chunk-SX4CSO6C.js.map} +1 -1
- package/dist/{chunk-ORFHF6PT.cjs → chunk-T5OCRKPD.cjs} +6 -6
- package/dist/{chunk-ORFHF6PT.cjs.map → chunk-T5OCRKPD.cjs.map} +1 -1
- package/dist/{chunk-AGDW5ENV.js → chunk-TB35HNBE.js} +3 -3
- package/dist/{chunk-AGDW5ENV.js.map → chunk-TB35HNBE.js.map} +1 -1
- package/dist/{chunk-RES2GOQQ.js → chunk-TDDWWAM5.js} +3 -3
- package/dist/{chunk-RES2GOQQ.js.map → chunk-TDDWWAM5.js.map} +1 -1
- package/dist/{chunk-6L6LI2RL.cjs → chunk-TGNQ5Y6F.cjs} +4 -4
- package/dist/{chunk-6L6LI2RL.cjs.map → chunk-TGNQ5Y6F.cjs.map} +1 -1
- package/dist/{chunk-I462NM2A.cjs → chunk-TH7VP4CL.cjs} +5 -5
- package/dist/{chunk-I462NM2A.cjs.map → chunk-TH7VP4CL.cjs.map} +1 -1
- package/dist/{chunk-PYRMH34E.js → chunk-TJJ63UJV.js} +3 -3
- package/dist/{chunk-PYRMH34E.js.map → chunk-TJJ63UJV.js.map} +1 -1
- package/dist/{chunk-I25RP6AM.js → chunk-TQFQUNV3.js} +3 -3
- package/dist/{chunk-I25RP6AM.js.map → chunk-TQFQUNV3.js.map} +1 -1
- package/dist/{chunk-RMFLRBUC.cjs → chunk-TWSPVX6X.cjs} +8 -8
- package/dist/{chunk-RMFLRBUC.cjs.map → chunk-TWSPVX6X.cjs.map} +1 -1
- package/dist/{chunk-UPVWN72I.cjs → chunk-TXCAIL5X.cjs} +7 -7
- package/dist/{chunk-UPVWN72I.cjs.map → chunk-TXCAIL5X.cjs.map} +1 -1
- package/dist/{chunk-LZL2KD4P.cjs → chunk-TZHK3LEW.cjs} +9 -9
- package/dist/{chunk-LZL2KD4P.cjs.map → chunk-TZHK3LEW.cjs.map} +1 -1
- package/dist/{chunk-74ZN5CNE.js → chunk-UIJR26YW.js} +3 -3
- package/dist/{chunk-74ZN5CNE.js.map → chunk-UIJR26YW.js.map} +1 -1
- package/dist/{chunk-CFBK5RIZ.js → chunk-UKUNWGL5.js} +3 -3
- package/dist/{chunk-CFBK5RIZ.js.map → chunk-UKUNWGL5.js.map} +1 -1
- package/dist/{chunk-IGU5YXRV.cjs → chunk-UMJ3JMDT.cjs} +9 -9
- package/dist/{chunk-IGU5YXRV.cjs.map → chunk-UMJ3JMDT.cjs.map} +1 -1
- package/dist/{chunk-JHEM6IGT.cjs → chunk-V35A6B7A.cjs} +4 -4
- package/dist/{chunk-JHEM6IGT.cjs.map → chunk-V35A6B7A.cjs.map} +1 -1
- package/dist/{chunk-PRDWJ4AR.js → chunk-VFIVF5YO.js} +3 -3
- package/dist/{chunk-PRDWJ4AR.js.map → chunk-VFIVF5YO.js.map} +1 -1
- package/dist/{chunk-Y6DK4CGY.js → chunk-VGAOLXTK.js} +14 -14
- package/dist/{chunk-Y6DK4CGY.js.map → chunk-VGAOLXTK.js.map} +1 -1
- package/dist/{chunk-IJ4I55QQ.cjs → chunk-VGBZWDMM.cjs} +4 -4
- package/dist/{chunk-IJ4I55QQ.cjs.map → chunk-VGBZWDMM.cjs.map} +1 -1
- package/dist/{chunk-DBJWHDWP.js → chunk-VKMPVFQK.js} +3 -3
- package/dist/{chunk-DBJWHDWP.js.map → chunk-VKMPVFQK.js.map} +1 -1
- package/dist/{chunk-5OC6DUYT.js → chunk-VME5743O.js} +3 -3
- package/dist/{chunk-5OC6DUYT.js.map → chunk-VME5743O.js.map} +1 -1
- package/dist/{chunk-YVDAXYHP.js → chunk-VOGI7GX3.js} +3 -3
- package/dist/{chunk-YVDAXYHP.js.map → chunk-VOGI7GX3.js.map} +1 -1
- package/dist/{chunk-R55HE5C5.js → chunk-VVL5LMLW.js} +3 -3
- package/dist/{chunk-R55HE5C5.js.map → chunk-VVL5LMLW.js.map} +1 -1
- package/dist/{chunk-2CYRAKWI.cjs → chunk-VW6WUXFR.cjs} +11 -11
- package/dist/{chunk-2CYRAKWI.cjs.map → chunk-VW6WUXFR.cjs.map} +1 -1
- package/dist/{chunk-6RYZ2MOE.js → chunk-VYQI4R6S.js} +4 -4
- package/dist/{chunk-6RYZ2MOE.js.map → chunk-VYQI4R6S.js.map} +1 -1
- package/dist/{chunk-HBFVOHQC.cjs → chunk-WCWZADR2.cjs} +7 -7
- package/dist/{chunk-HBFVOHQC.cjs.map → chunk-WCWZADR2.cjs.map} +1 -1
- package/dist/{chunk-IXHZVFHX.cjs → chunk-WKAEAGMT.cjs} +4 -4
- package/dist/{chunk-IXHZVFHX.cjs.map → chunk-WKAEAGMT.cjs.map} +1 -1
- package/dist/{chunk-PBXYU4EV.cjs → chunk-WKNVZUWZ.cjs} +5 -5
- package/dist/{chunk-PBXYU4EV.cjs.map → chunk-WKNVZUWZ.cjs.map} +1 -1
- package/dist/{chunk-6BW5BQMN.cjs → chunk-XKDW6B7X.cjs} +4 -4
- package/dist/{chunk-6BW5BQMN.cjs.map → chunk-XKDW6B7X.cjs.map} +1 -1
- package/dist/{chunk-23CLGUMT.cjs → chunk-XLFGWNW4.cjs} +4 -4
- package/dist/{chunk-23CLGUMT.cjs.map → chunk-XLFGWNW4.cjs.map} +1 -1
- package/dist/{chunk-PJ4TQ6YO.js → chunk-XLVYW5LK.js} +5 -5
- package/dist/{chunk-PJ4TQ6YO.js.map → chunk-XLVYW5LK.js.map} +1 -1
- package/dist/{chunk-MPDLL4X3.cjs → chunk-XQNYFXBY.cjs} +8 -8
- package/dist/{chunk-MPDLL4X3.cjs.map → chunk-XQNYFXBY.cjs.map} +1 -1
- package/dist/{chunk-I2JXK25I.js → chunk-XXBW4EUO.js} +3 -3
- package/dist/{chunk-I2JXK25I.js.map → chunk-XXBW4EUO.js.map} +1 -1
- package/dist/{chunk-RA3P63XW.cjs → chunk-Y3T7WMT6.cjs} +4 -4
- package/dist/{chunk-RA3P63XW.cjs.map → chunk-Y3T7WMT6.cjs.map} +1 -1
- package/dist/{chunk-LPQVXTKV.js → chunk-Y4UPKJN5.js} +3 -3
- package/dist/{chunk-LPQVXTKV.js.map → chunk-Y4UPKJN5.js.map} +1 -1
- package/dist/{chunk-47TFRODY.cjs → chunk-YAJYIRQL.cjs} +4 -4
- package/dist/{chunk-47TFRODY.cjs.map → chunk-YAJYIRQL.cjs.map} +1 -1
- package/dist/{chunk-DTPGJNOI.js → chunk-YCV43A7D.js} +3 -3
- package/dist/{chunk-DTPGJNOI.js.map → chunk-YCV43A7D.js.map} +1 -1
- package/dist/{chunk-YT6N44Z3.js → chunk-YF2EHBTV.js} +3 -3
- package/dist/{chunk-YT6N44Z3.js.map → chunk-YF2EHBTV.js.map} +1 -1
- package/dist/{chunk-4CM2VMLR.js → chunk-YLDYGT5O.js} +3 -3
- package/dist/{chunk-4CM2VMLR.js.map → chunk-YLDYGT5O.js.map} +1 -1
- package/dist/{chunk-JIYP73OJ.js → chunk-YQJWD53X.js} +3 -3
- package/dist/{chunk-JIYP73OJ.js.map → chunk-YQJWD53X.js.map} +1 -1
- package/dist/{chunk-O4MKOSU2.js → chunk-YTMQ2K64.js} +3 -3
- package/dist/{chunk-O4MKOSU2.js.map → chunk-YTMQ2K64.js.map} +1 -1
- package/dist/{chunk-IF25CE6S.cjs → chunk-YTXBU6QC.cjs} +6 -6
- package/dist/{chunk-IF25CE6S.cjs.map → chunk-YTXBU6QC.cjs.map} +1 -1
- package/dist/{chunk-F6NEPU67.cjs → chunk-Z43BI7CQ.cjs} +10 -10
- package/dist/{chunk-F6NEPU67.cjs.map → chunk-Z43BI7CQ.cjs.map} +1 -1
- package/dist/{chunk-BEGDL2CD.js → chunk-ZI7JP3TN.js} +3 -3
- package/dist/{chunk-BEGDL2CD.js.map → chunk-ZI7JP3TN.js.map} +1 -1
- package/dist/{chunk-3F66SAE7.js → chunk-ZKFFHIEW.js} +3 -3
- package/dist/{chunk-3F66SAE7.js.map → chunk-ZKFFHIEW.js.map} +1 -1
- package/dist/{chunk-QFFC2DKK.js → chunk-ZLWCZV7R.js} +3 -3
- package/dist/{chunk-QFFC2DKK.js.map → chunk-ZLWCZV7R.js.map} +1 -1
- package/dist/{chunk-BWTFK2GV.cjs → chunk-ZMD3PIYF.cjs} +12 -12
- package/dist/{chunk-BWTFK2GV.cjs.map → chunk-ZMD3PIYF.cjs.map} +1 -1
- package/dist/{chunk-5I4PR2KV.cjs → chunk-ZPHHKIFV.cjs} +10 -10
- package/dist/{chunk-5I4PR2KV.cjs.map → chunk-ZPHHKIFV.cjs.map} +1 -1
- package/dist/{chunk-JPTWZ3RF.cjs → chunk-ZTC3EQFZ.cjs} +8 -8
- package/dist/{chunk-JPTWZ3RF.cjs.map → chunk-ZTC3EQFZ.cjs.map} +1 -1
- package/dist/chunk-ZU5Q77OT.cjs +31 -0
- package/dist/chunk-ZU5Q77OT.cjs.map +1 -0
- package/dist/{chunk-ORPYY2MO.cjs → chunk-ZVDW2VX5.cjs} +4 -4
- package/dist/{chunk-ORPYY2MO.cjs.map → chunk-ZVDW2VX5.cjs.map} +1 -1
- package/dist/{chunk-4DQ6HX27.cjs → chunk-ZVRVOKXH.cjs} +7 -7
- package/dist/{chunk-4DQ6HX27.cjs.map → chunk-ZVRVOKXH.cjs.map} +1 -1
- package/dist/code-view.cjs +3 -3
- package/dist/code-view.js +2 -2
- package/dist/color-picker.cjs +3 -3
- package/dist/color-picker.js +2 -2
- package/dist/command.cjs +4 -4
- package/dist/command.js +2 -2
- package/dist/composer.cjs +3 -3
- package/dist/composer.js +2 -2
- package/dist/container.cjs +3 -3
- package/dist/container.js +2 -2
- package/dist/content-renderer.cjs +5 -5
- package/dist/content-renderer.js +2 -2
- package/dist/context-menu.cjs +4 -4
- package/dist/context-menu.js +2 -2
- package/dist/date-picker.cjs +5 -5
- package/dist/date-picker.js +4 -4
- package/dist/drawer.cjs +4 -4
- package/dist/drawer.js +2 -2
- package/dist/dropdown.cjs +4 -4
- package/dist/dropdown.js +2 -2
- package/dist/editor.cjs +6 -6
- package/dist/editor.js +4 -4
- package/dist/emoji-select.cjs +3 -3
- package/dist/emoji-select.js +2 -2
- package/dist/emoji.cjs +3 -3
- package/dist/emoji.js +2 -2
- package/dist/eyebrow.cjs +3 -3
- package/dist/eyebrow.js +2 -2
- package/dist/faux-client.cjs +3 -3
- package/dist/faux-client.js +2 -2
- package/dist/field.cjs +3 -3
- package/dist/field.js +2 -2
- package/dist/file-browser.cjs +6 -6
- package/dist/file-browser.js +2 -2
- package/dist/file-upload.cjs +4 -4
- package/dist/file-upload.js +2 -2
- package/dist/grid.cjs +3 -3
- package/dist/grid.js +2 -2
- package/dist/heading.cjs +3 -3
- package/dist/heading.js +2 -2
- package/dist/icon.cjs +8 -8
- package/dist/icon.js +2 -2
- package/dist/image-viewer.cjs +3 -3
- package/dist/image-viewer.js +2 -2
- package/dist/index-list.cjs +3 -3
- package/dist/index-list.js +2 -2
- package/dist/index.cjs +220 -220
- package/dist/index.d.cts +7 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.js +87 -87
- package/dist/input.cjs +6 -6
- package/dist/input.js +5 -5
- package/dist/inputs.cjs +26 -26
- package/dist/inputs.js +14 -14
- package/dist/json-editor.cjs +27 -27
- package/dist/json-editor.js +16 -16
- package/dist/kanban.cjs +4 -4
- package/dist/kanban.js +2 -2
- package/dist/kbd.cjs +3 -3
- package/dist/kbd.js +2 -2
- package/dist/magic-wand.cjs +10 -10
- package/dist/magic-wand.js +9 -9
- package/dist/marquee.cjs +3 -3
- package/dist/marquee.js +2 -2
- package/dist/media-viewer.cjs +7 -7
- package/dist/media-viewer.js +6 -6
- package/dist/menu.cjs +4 -4
- package/dist/menu.js +2 -2
- package/dist/mobile-menu.cjs +4 -4
- package/dist/mobile-menu.js +2 -2
- package/dist/modal.cjs +4 -4
- package/dist/modal.js +2 -2
- package/dist/mode.cjs +3 -3
- package/dist/mode.js +2 -2
- package/dist/multi-switch.cjs +5 -5
- package/dist/multi-switch.js +4 -4
- package/dist/navbar.cjs +4 -4
- package/dist/navbar.js +2 -2
- package/dist/otp-input.cjs +3 -3
- package/dist/otp-input.js +2 -2
- package/dist/pagination.cjs +3 -3
- package/dist/pagination.js +2 -2
- package/dist/pdf-viewer.cjs +3 -3
- package/dist/pdf-viewer.js +2 -2
- package/dist/pillbox.cjs +3 -3
- package/dist/pillbox.js +2 -2
- package/dist/popover.cjs +4 -4
- package/dist/popover.js +2 -2
- package/dist/profile.cjs +4 -4
- package/dist/profile.js +3 -3
- package/dist/progress.cjs +3 -3
- package/dist/progress.js +2 -2
- package/dist/prompt-input.cjs +6 -6
- package/dist/prompt-input.js +5 -5
- package/dist/pull-quote.cjs +3 -3
- package/dist/pull-quote.js +2 -2
- package/dist/radio-group.cjs +5 -5
- package/dist/radio-group.js +4 -4
- package/dist/reason-tag.cjs +6 -6
- package/dist/reason-tag.js +5 -5
- package/dist/section.cjs +3 -3
- package/dist/section.js +2 -2
- package/dist/select.cjs +6 -6
- package/dist/select.js +5 -5
- package/dist/separator.cjs +3 -3
- package/dist/separator.js +2 -2
- package/dist/sidebar.cjs +4 -4
- package/dist/sidebar.js +2 -2
- package/dist/skeleton.cjs +3 -3
- package/dist/skeleton.js +2 -2
- package/dist/slider.cjs +5 -5
- package/dist/slider.js +4 -4
- package/dist/stat-list.cjs +3 -3
- package/dist/stat-list.js +2 -2
- package/dist/stat.cjs +4 -4
- package/dist/stat.js +2 -2
- package/dist/sticky-note.cjs +3 -3
- package/dist/sticky-note.js +2 -2
- package/dist/switch.cjs +3 -3
- package/dist/switch.js +2 -2
- package/dist/table.cjs +12 -12
- package/dist/table.js +2 -2
- package/dist/tabs.cjs +4 -4
- package/dist/tabs.js +2 -2
- package/dist/text.cjs +3 -3
- package/dist/text.js +2 -2
- package/dist/textarea.cjs +6 -6
- package/dist/textarea.js +5 -5
- package/dist/time-grid.cjs +3 -3
- package/dist/time-grid.js +2 -2
- package/dist/time-picker.cjs +3 -3
- package/dist/time-picker.js +2 -2
- package/dist/timeline.cjs +5 -5
- package/dist/timeline.js +2 -2
- package/dist/toast.cjs +4 -4
- package/dist/toast.js +2 -2
- package/dist/tooltip.cjs +3 -3
- package/dist/tooltip.js +2 -2
- package/dist/tree-nav.cjs +4 -4
- package/dist/tree-nav.js +2 -2
- package/dist/video-viewer.cjs +3 -3
- package/dist/video-viewer.js +2 -2
- package/package.json +1 -2
- package/dist/chunk-3Z6ALUWP.cjs +0 -13
- package/dist/chunk-3Z6ALUWP.cjs.map +0 -1
- package/dist/chunk-DSUHZO6T.js +0 -11
- package/dist/chunk-DSUHZO6T.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ImageViewer/ImageViewer.tsx"],"names":["forwardRef","useRef","useState","useCallback","usePanZoom","jsxs","cn","jsx"],"mappings":"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","file":"chunk-AC7M7JDO.cjs","sourcesContent":["import {\n forwardRef,\n useCallback,\n useRef,\n useState,\n type CSSProperties,\n} from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { usePanZoom } from \"../../hooks/use-pan-zoom\";\nimport type { ImageViewerProps, ImageViewerViewport } from \"./ImageViewer.types\";\n\nconst DEFAULT_VIEWPORT: ImageViewerViewport = { panX: 0, panY: 0, zoom: 1 };\n\nconst fitClasses: Record<NonNullable<ImageViewerProps[\"fit\"]>, string> = {\n contain: \"h-full w-full object-contain\",\n cover: \"h-full w-full object-cover\",\n none: \"max-w-none object-none\",\n};\n\nfunction clamp(n: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, n));\n}\n\n/**\n * A standalone image viewer: fits the image to its container, with optional\n * Ctrl/⌘+wheel zoom, click-drag panning, and a transparency checkerboard. Works\n * anywhere on its own and is also what `<MediaViewer>` renders for images.\n *\n * The pan/zoom viewport is controllable (`viewport` + `onViewportChange`) so an\n * agent bridge can drive it; it's uncontrolled by default.\n *\n * ```tsx\n * <ImageViewer src=\"/logo.png\" alt=\"logo.png\" style={{ height: 320 }} />\n * ```\n */\nexport const ImageViewer = forwardRef<HTMLDivElement, ImageViewerProps>(\n (\n {\n src,\n alt = \"\",\n fit = \"contain\",\n zoomable = true,\n pannable = true,\n controls,\n minZoom = 0.25,\n maxZoom = 8,\n checkerboard = true,\n viewport,\n defaultViewport,\n onViewportChange,\n onLoad,\n onError,\n className,\n style,\n },\n ref,\n ) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [status, setStatus] = useState<\"loading\" | \"loaded\" | \"error\">(\"loading\");\n\n // Controllable viewport supporting functional updates (usePanZoom needs them).\n const isControlled = viewport !== undefined;\n const [internal, setInternal] = useState<ImageViewerViewport>(\n defaultViewport ?? DEFAULT_VIEWPORT,\n );\n const current = isControlled ? viewport! : internal;\n const currentRef = useRef(current);\n currentRef.current = current;\n\n const setViewport = useCallback(\n (\n next:\n | ImageViewerViewport\n | ((prev: ImageViewerViewport) => ImageViewerViewport),\n ) => {\n const resolved =\n typeof next === \"function\" ? next(currentRef.current) : next;\n if (!isControlled) setInternal(resolved);\n onViewportChange?.(resolved);\n },\n [isControlled, onViewportChange],\n );\n\n const interactive = status === \"loaded\";\n const { containerProps, isPanning } = usePanZoom({\n viewport: current,\n setViewport,\n minZoom,\n maxZoom,\n pannable: pannable && interactive,\n zoomable: zoomable && interactive,\n containerRef,\n });\n\n // Zoom about the container centre — used by the +/− buttons.\n const zoomBy = useCallback(\n (factor: number) => {\n const el = containerRef.current;\n if (!el) return;\n const rect = el.getBoundingClientRect();\n const cx = rect.width / 2;\n const cy = rect.height / 2;\n setViewport((prev) => {\n const newZoom = clamp(prev.zoom * factor, minZoom, maxZoom);\n const ratio = newZoom / prev.zoom;\n return {\n zoom: newZoom,\n panX: cx - (cx - prev.panX) * ratio,\n panY: cy - (cy - prev.panY) * ratio,\n };\n });\n },\n [setViewport, minZoom, maxZoom],\n );\n\n const reset = useCallback(() => setViewport(DEFAULT_VIEWPORT), [setViewport]);\n\n const showControls = (controls ?? zoomable) && interactive;\n const transform = `translate(${current.panX}px, ${current.panY}px) scale(${current.zoom})`;\n\n return (\n <div\n ref={ref}\n data-react-fancy-image-viewer=\"\"\n className={cn(\n \"relative isolate overflow-hidden rounded-md select-none\",\n checkerboard\n ? \"fancy-checkerboard\"\n : \"bg-zinc-100 dark:bg-zinc-900\",\n className,\n )}\n style={style}\n >\n <div\n ref={containerRef}\n data-canvas-bg=\"\"\n className={cn(\n \"absolute inset-0 flex items-center justify-center\",\n isPanning\n ? \"cursor-grabbing\"\n : pannable && interactive\n ? \"cursor-grab\"\n : \"\",\n )}\n style={\n {\n transform,\n transformOrigin: \"0 0\",\n willChange: \"transform\",\n touchAction: zoomable || pannable ? \"none\" : undefined,\n } as CSSProperties\n }\n onDoubleClick={zoomable ? reset : undefined}\n {...containerProps}\n >\n <img\n src={src}\n alt={alt}\n draggable={false}\n onLoad={() => {\n setStatus(\"loaded\");\n onLoad?.();\n }}\n onError={() => {\n setStatus(\"error\");\n onError?.();\n }}\n className={cn(\n \"pointer-events-none block\",\n status === \"error\" && \"hidden\",\n fitClasses[fit],\n )}\n />\n </div>\n\n {status === \"error\" && (\n <div\n data-react-fancy-image-viewer-error=\"\"\n className=\"absolute inset-0 flex flex-col items-center justify-center gap-1 p-4 text-center text-sm text-zinc-500 dark:text-zinc-400\"\n >\n <span className=\"font-medium\">Couldn't load image</span>\n <span className=\"max-w-full truncate text-xs opacity-70\">{alt || src}</span>\n </div>\n )}\n\n {showControls && (\n <div\n data-react-fancy-image-viewer-controls=\"\"\n className=\"absolute bottom-2 right-2 flex items-center gap-0.5 rounded-md border border-zinc-200 bg-white/90 p-0.5 text-zinc-700 shadow-sm backdrop-blur dark:border-zinc-700 dark:bg-zinc-900/90 dark:text-zinc-200\"\n >\n <button\n type=\"button\"\n aria-label=\"Zoom out\"\n onClick={() => zoomBy(1 / 1.25)}\n className=\"flex h-6 w-6 items-center justify-center rounded text-base leading-none hover:bg-zinc-100 dark:hover:bg-zinc-800\"\n >\n −\n </button>\n <button\n type=\"button\"\n aria-label=\"Reset zoom\"\n onClick={reset}\n className=\"min-w-[3rem] rounded px-1 text-center text-xs tabular-nums hover:bg-zinc-100 dark:hover:bg-zinc-800\"\n >\n {Math.round(current.zoom * 100)}%\n </button>\n <button\n type=\"button\"\n aria-label=\"Zoom in\"\n onClick={() => zoomBy(1.25)}\n className=\"flex h-6 w-6 items-center justify-center rounded text-base leading-none hover:bg-zinc-100 dark:hover:bg-zinc-800\"\n >\n +\n </button>\n </div>\n )}\n </div>\n );\n },\n);\n\nImageViewer.displayName = \"ImageViewer\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/ImageViewer/ImageViewer.tsx"],"names":["forwardRef","useRef","useState","useCallback","usePanZoom","jsxs","cn","jsx"],"mappings":"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","file":"chunk-QDVDBUJM.cjs","sourcesContent":["import {\n forwardRef,\n useCallback,\n useRef,\n useState,\n type CSSProperties,\n} from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { usePanZoom } from \"../../hooks/use-pan-zoom\";\nimport type { ImageViewerProps, ImageViewerViewport } from \"./ImageViewer.types\";\n\nconst DEFAULT_VIEWPORT: ImageViewerViewport = { panX: 0, panY: 0, zoom: 1 };\n\nconst fitClasses: Record<NonNullable<ImageViewerProps[\"fit\"]>, string> = {\n contain: \"h-full w-full object-contain\",\n cover: \"h-full w-full object-cover\",\n none: \"max-w-none object-none\",\n};\n\nfunction clamp(n: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, n));\n}\n\n/**\n * A standalone image viewer: fits the image to its container, with optional\n * Ctrl/⌘+wheel zoom, click-drag panning, and a transparency checkerboard. Works\n * anywhere on its own and is also what `<MediaViewer>` renders for images.\n *\n * The pan/zoom viewport is controllable (`viewport` + `onViewportChange`) so an\n * agent bridge can drive it; it's uncontrolled by default.\n *\n * ```tsx\n * <ImageViewer src=\"/logo.png\" alt=\"logo.png\" style={{ height: 320 }} />\n * ```\n */\nexport const ImageViewer = forwardRef<HTMLDivElement, ImageViewerProps>(\n (\n {\n src,\n alt = \"\",\n fit = \"contain\",\n zoomable = true,\n pannable = true,\n controls,\n minZoom = 0.25,\n maxZoom = 8,\n checkerboard = true,\n viewport,\n defaultViewport,\n onViewportChange,\n onLoad,\n onError,\n className,\n style,\n },\n ref,\n ) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [status, setStatus] = useState<\"loading\" | \"loaded\" | \"error\">(\"loading\");\n\n // Controllable viewport supporting functional updates (usePanZoom needs them).\n const isControlled = viewport !== undefined;\n const [internal, setInternal] = useState<ImageViewerViewport>(\n defaultViewport ?? DEFAULT_VIEWPORT,\n );\n const current = isControlled ? viewport! : internal;\n const currentRef = useRef(current);\n currentRef.current = current;\n\n const setViewport = useCallback(\n (\n next:\n | ImageViewerViewport\n | ((prev: ImageViewerViewport) => ImageViewerViewport),\n ) => {\n const resolved =\n typeof next === \"function\" ? next(currentRef.current) : next;\n if (!isControlled) setInternal(resolved);\n onViewportChange?.(resolved);\n },\n [isControlled, onViewportChange],\n );\n\n const interactive = status === \"loaded\";\n const { containerProps, isPanning } = usePanZoom({\n viewport: current,\n setViewport,\n minZoom,\n maxZoom,\n pannable: pannable && interactive,\n zoomable: zoomable && interactive,\n containerRef,\n });\n\n // Zoom about the container centre — used by the +/− buttons.\n const zoomBy = useCallback(\n (factor: number) => {\n const el = containerRef.current;\n if (!el) return;\n const rect = el.getBoundingClientRect();\n const cx = rect.width / 2;\n const cy = rect.height / 2;\n setViewport((prev) => {\n const newZoom = clamp(prev.zoom * factor, minZoom, maxZoom);\n const ratio = newZoom / prev.zoom;\n return {\n zoom: newZoom,\n panX: cx - (cx - prev.panX) * ratio,\n panY: cy - (cy - prev.panY) * ratio,\n };\n });\n },\n [setViewport, minZoom, maxZoom],\n );\n\n const reset = useCallback(() => setViewport(DEFAULT_VIEWPORT), [setViewport]);\n\n const showControls = (controls ?? zoomable) && interactive;\n const transform = `translate(${current.panX}px, ${current.panY}px) scale(${current.zoom})`;\n\n return (\n <div\n ref={ref}\n data-react-fancy-image-viewer=\"\"\n className={cn(\n \"relative isolate overflow-hidden rounded-md select-none\",\n checkerboard\n ? \"fancy-checkerboard\"\n : \"bg-zinc-100 dark:bg-zinc-900\",\n className,\n )}\n style={style}\n >\n <div\n ref={containerRef}\n data-canvas-bg=\"\"\n className={cn(\n \"absolute inset-0 flex items-center justify-center\",\n isPanning\n ? \"cursor-grabbing\"\n : pannable && interactive\n ? \"cursor-grab\"\n : \"\",\n )}\n style={\n {\n transform,\n transformOrigin: \"0 0\",\n willChange: \"transform\",\n touchAction: zoomable || pannable ? \"none\" : undefined,\n } as CSSProperties\n }\n onDoubleClick={zoomable ? reset : undefined}\n {...containerProps}\n >\n <img\n src={src}\n alt={alt}\n draggable={false}\n onLoad={() => {\n setStatus(\"loaded\");\n onLoad?.();\n }}\n onError={() => {\n setStatus(\"error\");\n onError?.();\n }}\n className={cn(\n \"pointer-events-none block\",\n status === \"error\" && \"hidden\",\n fitClasses[fit],\n )}\n />\n </div>\n\n {status === \"error\" && (\n <div\n data-react-fancy-image-viewer-error=\"\"\n className=\"absolute inset-0 flex flex-col items-center justify-center gap-1 p-4 text-center text-sm text-zinc-500 dark:text-zinc-400\"\n >\n <span className=\"font-medium\">Couldn't load image</span>\n <span className=\"max-w-full truncate text-xs opacity-70\">{alt || src}</span>\n </div>\n )}\n\n {showControls && (\n <div\n data-react-fancy-image-viewer-controls=\"\"\n className=\"absolute bottom-2 right-2 flex items-center gap-0.5 rounded-md border border-zinc-200 bg-white/90 p-0.5 text-zinc-700 shadow-sm backdrop-blur dark:border-zinc-700 dark:bg-zinc-900/90 dark:text-zinc-200\"\n >\n <button\n type=\"button\"\n aria-label=\"Zoom out\"\n onClick={() => zoomBy(1 / 1.25)}\n className=\"flex h-6 w-6 items-center justify-center rounded text-base leading-none hover:bg-zinc-100 dark:hover:bg-zinc-800\"\n >\n −\n </button>\n <button\n type=\"button\"\n aria-label=\"Reset zoom\"\n onClick={reset}\n className=\"min-w-[3rem] rounded px-1 text-center text-xs tabular-nums hover:bg-zinc-100 dark:hover:bg-zinc-800\"\n >\n {Math.round(current.zoom * 100)}%\n </button>\n <button\n type=\"button\"\n aria-label=\"Zoom in\"\n onClick={() => zoomBy(1.25)}\n className=\"flex h-6 w-6 items-center justify-center rounded text-base leading-none hover:bg-zinc-100 dark:hover:bg-zinc-800\"\n >\n +\n </button>\n </div>\n )}\n </div>\n );\n },\n);\n\nImageViewer.displayName = \"ImageViewer\";\n"]}
|
|
@@ -2,7 +2,7 @@ import { dirtyRingClasses } from './chunk-GFYSELJF.js';
|
|
|
2
2
|
import { useInlineEdit } from './chunk-OL53XYHF.js';
|
|
3
3
|
import { useFieldMode } from './chunk-NRXK42LO.js';
|
|
4
4
|
import { useControllableState } from './chunk-6FQGMVF2.js';
|
|
5
|
-
import { cn } from './chunk-
|
|
5
|
+
import { cn } from './chunk-MMW2JGKZ.js';
|
|
6
6
|
import { forwardRef, useId } from 'react';
|
|
7
7
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
8
8
|
|
|
@@ -160,5 +160,5 @@ var Switch = forwardRef(
|
|
|
160
160
|
Switch.displayName = "Switch";
|
|
161
161
|
|
|
162
162
|
export { Switch };
|
|
163
|
-
//# sourceMappingURL=chunk-
|
|
164
|
-
//# sourceMappingURL=chunk-
|
|
163
|
+
//# sourceMappingURL=chunk-QJKWBU3I.js.map
|
|
164
|
+
//# sourceMappingURL=chunk-QJKWBU3I.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/inputs/Switch/Switch.colors.ts","../src/components/inputs/Switch/Switch.tsx"],"names":[],"mappings":"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","file":"chunk-2ICXWLKS.js","sourcesContent":["// AUTO-GENERATED by scripts/gen-switch-colors — do not edit by hand.\n// Literal Tailwind class strings for every color in the v4 palette so the\n// scanner can detect them in the published dist (template-built names are\n// invisible to Tailwind's JIT). Regenerate after changing the palette.\nimport type { Color } from \"../../../utils/types\";\n\nexport const switchTrack: Record<Color, string> = {\n slate: \"bg-slate-500\",\n gray: \"bg-gray-500\",\n zinc: \"bg-zinc-500\",\n neutral: \"bg-neutral-500\",\n stone: \"bg-stone-500\",\n red: \"bg-red-500\",\n orange: \"bg-orange-500\",\n amber: \"bg-amber-500\",\n yellow: \"bg-yellow-500\",\n lime: \"bg-lime-500\",\n green: \"bg-green-500\",\n emerald: \"bg-emerald-500\",\n teal: \"bg-teal-500\",\n cyan: \"bg-cyan-500\",\n sky: \"bg-sky-500\",\n blue: \"bg-blue-500\",\n indigo: \"bg-indigo-500\",\n violet: \"bg-violet-500\",\n purple: \"bg-purple-500\",\n fuchsia: \"bg-fuchsia-500\",\n pink: \"bg-pink-500\",\n rose: \"bg-rose-500\",\n};\n","import { forwardRef, useId } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { useControllableState } from \"../../../hooks/use-controllable-state\";\nimport { useFieldMode } from \"../mode/FieldMode.context\";\nimport { useInlineEdit } from \"../mode/useInlineEdit\";\nimport { dirtyRingClasses } from \"../inputs.utils\";\nimport type { SwitchProps } from \"./Switch.types\";\nimport { switchTrack } from \"./Switch.colors\";\n\nexport const Switch = forwardRef<HTMLButtonElement, SwitchProps>(\n (\n {\n size = \"md\",\n dirty,\n error,\n label,\n description,\n required,\n disabled,\n className,\n id,\n name,\n checked: controlledChecked,\n defaultChecked = false,\n onCheckedChange,\n color = \"blue\",\n mode,\n ...rest\n },\n ref,\n ) => {\n const autoId = useId();\n const switchId = id ?? autoId;\n const resolvedMode = useFieldMode(mode);\n const { showControl, interactive, enterEdit, exitEdit } = useInlineEdit(resolvedMode, disabled);\n const [checked, setChecked] = useControllableState(\n controlledChecked,\n defaultChecked,\n onCheckedChange,\n );\n\n const trackSizes = {\n xs: \"h-3.5 w-6\",\n sm: \"h-4 w-7\",\n md: \"h-5 w-9\",\n lg: \"h-6 w-11\",\n xl: \"h-7 w-[52px]\",\n }[size];\n\n const knobSizes = {\n xs: \"h-2.5 w-2.5\",\n sm: \"h-3 w-3\",\n md: \"h-4 w-4\",\n lg: \"h-5 w-5\",\n xl: \"h-6 w-6\",\n }[size];\n\n const translateOn = {\n xs: \"translate-x-2.5\",\n sm: \"translate-x-3\",\n md: \"translate-x-4\",\n lg: \"translate-x-5\",\n xl: \"translate-x-6\",\n }[size];\n\n return (\n <div {...rest} data-react-fancy-switch=\"\" className={cn(\"flex items-start gap-2\", className)}>\n {!showControl ? (\n <span\n data-react-fancy-display=\"\"\n data-mode=\"view\"\n role={interactive ? \"button\" : undefined}\n tabIndex={interactive ? 0 : undefined}\n title={interactive ? \"Click to edit\" : undefined}\n onClick={interactive ? enterEdit : undefined}\n onKeyDown={\n interactive\n ? (e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n enterEdit();\n }\n }\n : undefined\n }\n className={cn(\n \"text-sm font-medium text-zinc-700 dark:text-zinc-200\",\n interactive &&\n \"cursor-pointer rounded-md outline-none transition-colors hover:text-zinc-900 focus-visible:ring-2 focus-visible:ring-blue-500/40 dark:hover:text-white\",\n )}\n >\n {checked ? \"On\" : \"Off\"}\n </span>\n ) : (\n <button\n ref={ref}\n id={switchId}\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n disabled={disabled}\n autoFocus={interactive}\n onBlur={() => {\n if (interactive) exitEdit();\n }}\n onClick={() => setChecked(!checked)}\n className={cn(\n \"relative inline-flex shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/40 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n trackSizes,\n checked ? switchTrack[color] : \"bg-zinc-200 dark:bg-zinc-600\",\n dirtyRingClasses(dirty),\n error && \"ring-2 ring-red-500/50\",\n )}\n >\n <span\n className={cn(\n \"pointer-events-none inline-block rounded-full bg-white shadow-sm transition-transform\",\n knobSizes,\n checked ? translateOn : \"translate-x-0\",\n )}\n />\n </button>\n )}\n {name && (\n <input type=\"hidden\" name={name} value={checked ? \"1\" : \"0\"} />\n )}\n {(label || description) && (\n <div className=\"flex flex-col\">\n {label && (\n <label\n htmlFor={switchId}\n className={cn(\n \"cursor-pointer text-sm text-zinc-700 dark:text-zinc-100\",\n disabled && \"cursor-not-allowed opacity-50\",\n )}\n >\n {label}\n {required && <span className=\"ml-0.5 text-red-500\">*</span>}\n </label>\n )}\n {description && (\n <span className=\"text-xs text-zinc-500 dark:text-zinc-400\">\n {description}\n </span>\n )}\n {error && <span className=\"text-xs text-red-500\">{error}</span>}\n </div>\n )}\n </div>\n );\n },\n);\n\nSwitch.displayName = \"Switch\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/inputs/Switch/Switch.colors.ts","../src/components/inputs/Switch/Switch.tsx"],"names":[],"mappings":"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","file":"chunk-QJKWBU3I.js","sourcesContent":["// AUTO-GENERATED by scripts/gen-switch-colors — do not edit by hand.\n// Literal Tailwind class strings for every color in the v4 palette so the\n// scanner can detect them in the published dist (template-built names are\n// invisible to Tailwind's JIT). Regenerate after changing the palette.\nimport type { Color } from \"../../../utils/types\";\n\nexport const switchTrack: Record<Color, string> = {\n slate: \"bg-slate-500\",\n gray: \"bg-gray-500\",\n zinc: \"bg-zinc-500\",\n neutral: \"bg-neutral-500\",\n stone: \"bg-stone-500\",\n red: \"bg-red-500\",\n orange: \"bg-orange-500\",\n amber: \"bg-amber-500\",\n yellow: \"bg-yellow-500\",\n lime: \"bg-lime-500\",\n green: \"bg-green-500\",\n emerald: \"bg-emerald-500\",\n teal: \"bg-teal-500\",\n cyan: \"bg-cyan-500\",\n sky: \"bg-sky-500\",\n blue: \"bg-blue-500\",\n indigo: \"bg-indigo-500\",\n violet: \"bg-violet-500\",\n purple: \"bg-purple-500\",\n fuchsia: \"bg-fuchsia-500\",\n pink: \"bg-pink-500\",\n rose: \"bg-rose-500\",\n};\n","import { forwardRef, useId } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { useControllableState } from \"../../../hooks/use-controllable-state\";\nimport { useFieldMode } from \"../mode/FieldMode.context\";\nimport { useInlineEdit } from \"../mode/useInlineEdit\";\nimport { dirtyRingClasses } from \"../inputs.utils\";\nimport type { SwitchProps } from \"./Switch.types\";\nimport { switchTrack } from \"./Switch.colors\";\n\nexport const Switch = forwardRef<HTMLButtonElement, SwitchProps>(\n (\n {\n size = \"md\",\n dirty,\n error,\n label,\n description,\n required,\n disabled,\n className,\n id,\n name,\n checked: controlledChecked,\n defaultChecked = false,\n onCheckedChange,\n color = \"blue\",\n mode,\n ...rest\n },\n ref,\n ) => {\n const autoId = useId();\n const switchId = id ?? autoId;\n const resolvedMode = useFieldMode(mode);\n const { showControl, interactive, enterEdit, exitEdit } = useInlineEdit(resolvedMode, disabled);\n const [checked, setChecked] = useControllableState(\n controlledChecked,\n defaultChecked,\n onCheckedChange,\n );\n\n const trackSizes = {\n xs: \"h-3.5 w-6\",\n sm: \"h-4 w-7\",\n md: \"h-5 w-9\",\n lg: \"h-6 w-11\",\n xl: \"h-7 w-[52px]\",\n }[size];\n\n const knobSizes = {\n xs: \"h-2.5 w-2.5\",\n sm: \"h-3 w-3\",\n md: \"h-4 w-4\",\n lg: \"h-5 w-5\",\n xl: \"h-6 w-6\",\n }[size];\n\n const translateOn = {\n xs: \"translate-x-2.5\",\n sm: \"translate-x-3\",\n md: \"translate-x-4\",\n lg: \"translate-x-5\",\n xl: \"translate-x-6\",\n }[size];\n\n return (\n <div {...rest} data-react-fancy-switch=\"\" className={cn(\"flex items-start gap-2\", className)}>\n {!showControl ? (\n <span\n data-react-fancy-display=\"\"\n data-mode=\"view\"\n role={interactive ? \"button\" : undefined}\n tabIndex={interactive ? 0 : undefined}\n title={interactive ? \"Click to edit\" : undefined}\n onClick={interactive ? enterEdit : undefined}\n onKeyDown={\n interactive\n ? (e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n enterEdit();\n }\n }\n : undefined\n }\n className={cn(\n \"text-sm font-medium text-zinc-700 dark:text-zinc-200\",\n interactive &&\n \"cursor-pointer rounded-md outline-none transition-colors hover:text-zinc-900 focus-visible:ring-2 focus-visible:ring-blue-500/40 dark:hover:text-white\",\n )}\n >\n {checked ? \"On\" : \"Off\"}\n </span>\n ) : (\n <button\n ref={ref}\n id={switchId}\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n disabled={disabled}\n autoFocus={interactive}\n onBlur={() => {\n if (interactive) exitEdit();\n }}\n onClick={() => setChecked(!checked)}\n className={cn(\n \"relative inline-flex shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/40 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n trackSizes,\n checked ? switchTrack[color] : \"bg-zinc-200 dark:bg-zinc-600\",\n dirtyRingClasses(dirty),\n error && \"ring-2 ring-red-500/50\",\n )}\n >\n <span\n className={cn(\n \"pointer-events-none inline-block rounded-full bg-white shadow-sm transition-transform\",\n knobSizes,\n checked ? translateOn : \"translate-x-0\",\n )}\n />\n </button>\n )}\n {name && (\n <input type=\"hidden\" name={name} value={checked ? \"1\" : \"0\"} />\n )}\n {(label || description) && (\n <div className=\"flex flex-col\">\n {label && (\n <label\n htmlFor={switchId}\n className={cn(\n \"cursor-pointer text-sm text-zinc-700 dark:text-zinc-100\",\n disabled && \"cursor-not-allowed opacity-50\",\n )}\n >\n {label}\n {required && <span className=\"ml-0.5 text-red-500\">*</span>}\n </label>\n )}\n {description && (\n <span className=\"text-xs text-zinc-500 dark:text-zinc-400\">\n {description}\n </span>\n )}\n {error && <span className=\"text-xs text-red-500\">{error}</span>}\n </div>\n )}\n </div>\n );\n },\n);\n\nSwitch.displayName = \"Switch\";\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkZU5Q77OT_cjs = require('./chunk-ZU5Q77OT.cjs');
|
|
4
4
|
var react = require('react');
|
|
5
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
|
|
@@ -121,7 +121,7 @@ var Icon = react.forwardRef(
|
|
|
121
121
|
ref,
|
|
122
122
|
"aria-hidden": "true",
|
|
123
123
|
"data-react-fancy-icon": "",
|
|
124
|
-
className:
|
|
124
|
+
className: chunkZU5Q77OT_cjs.cn(
|
|
125
125
|
"inline-flex items-center justify-center flex-shrink-0",
|
|
126
126
|
sizeClasses[size],
|
|
127
127
|
className
|
|
@@ -140,5 +140,5 @@ exports.registerIconAddendum = registerIconAddendum;
|
|
|
140
140
|
exports.registerIconSet = registerIconSet;
|
|
141
141
|
exports.registerIcons = registerIcons;
|
|
142
142
|
exports.resolveIcon = resolveIcon;
|
|
143
|
-
//# sourceMappingURL=chunk-
|
|
144
|
-
//# sourceMappingURL=chunk-
|
|
143
|
+
//# sourceMappingURL=chunk-QKFOJKVE.cjs.map
|
|
144
|
+
//# sourceMappingURL=chunk-QKFOJKVE.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Icon/icon-config.ts","../src/components/Icon/Icon.tsx"],"names":["map","forwardRef","useSyncExternalStore","jsx","cn"],"mappings":"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","file":"chunk-JXIBUIEY.cjs","sourcesContent":["import type { ComponentType } from \"react\";\nimport type { IconSet } from \"./icon-config.types\";\n\ntype IconComponent = ComponentType<{ className?: string; size?: number }>;\n\nconst registry = new Map<string, IconSet>();\nlet defaultSetName = \"lucide\";\n\n/**\n * Addendum layer — icon sets consulted across EVERY lookup, after the active\n * base set but before the lucide auto-fallback, regardless of `defaultSet`.\n * This is how a brand-icon pack (e.g. `@particle-academy/fancy-brand-icons`)\n * layers in: `<Icon name=\"github\" />` resolves the brand mark on top of Lucide\n * (or any swapped base) without a `set=` query. Base set still wins; addenda\n * supplement. Empty by default ⇒ behavior unchanged.\n */\nconst addenda: IconSet[] = [];\n\n/** Register an icon set as an addendum (supplements every base set). */\nexport function registerIconAddendum(set: IconSet): void {\n if (!addenda.includes(set)) addenda.push(set);\n}\n\nfunction resolveFromAddenda(name: string): IconComponent | null {\n for (const set of addenda) {\n const hit = set.resolve(name);\n if (hit) return hit as IconComponent;\n }\n return null;\n}\n\nfunction kebabToPascal(str: string): string {\n return str\n .split(\"-\")\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(\"\");\n}\n\n/**\n * Lazy lucide barrel. The auto-fallback (`<Icon name=\"…\" />` resolving ANY\n * lucide icon by kebab name) needs the whole namespace because names are\n * dynamic — un-tree-shakeable. Importing it eagerly forced all ~5400 icons\n * into react-fancy's main bundle for every consumer (~548KB). Instead we\n * dynamic-import it on first auto-resolve, so the barrel becomes a lazy chunk\n * loaded ONLY by apps that actually use `<Icon name>` with an unregistered\n * icon — never on the critical path. Consumers wanting sync resolution +\n * tree-shaking should `registerIcons({ ...named imports })` (those win and\n * never trigger the lazy load).\n */\nlet lucideModule: Record<string, IconComponent | undefined> | null = null;\nlet lucidePromise: Promise<unknown> | null = null;\nlet lucideVersion = 0;\nconst lucideListeners = new Set<() => void>();\n\nfunction ensureLucideLoaded(): void {\n if (lucideModule || lucidePromise) return;\n lucidePromise = import(\"lucide-react\")\n .then((mod) => {\n lucideModule = mod as unknown as Record<string, IconComponent | undefined>;\n lucideVersion++;\n for (const listener of lucideListeners) listener();\n })\n .catch(() => {\n // Leave lucidePromise set so we don't hammer a failed import.\n });\n}\n\n/** Subscribe to the lazy lucide load so `<Icon>` can re-render once it lands. */\nexport function subscribeIconResolution(listener: () => void): () => void {\n lucideListeners.add(listener);\n return () => lucideListeners.delete(listener);\n}\n\n/** Snapshot for useSyncExternalStore — bumps when the lucide barrel loads. */\nexport function getIconResolutionVersion(): number {\n return lucideVersion;\n}\n\n/**\n * Fallback resolver: look up any lucide-react icon by its kebab-case name\n * without requiring the consumer to call `registerIcons()` first. Returns null\n * until the lazy barrel has loaded (the first call kicks off the import; `<Icon>`\n * re-renders via `subscribeIconResolution` when it's ready). Overrides\n * registered via `registerIcons()` still win and resolve synchronously.\n */\nfunction resolveFromLucide(name: string): IconComponent | null {\n // SSR-deterministic: never resolve the lazily-imported lucide barrel on the\n // server. A long-running SSR process (e.g. Inertia's node SSR daemon) loads\n // the barrel after its first request, then renders auto-fallback lucide icons\n // that a fresh client (barrel not yet loaded) does NOT have at hydration →\n // React #418 (\"server HTML didn't match\"). Returning null on the server makes\n // the server render match the client's FIRST render; the icon then appears\n // once the client loads the barrel (via subscribeIconResolution). Registered\n // icons + addenda (brand packs) still resolve synchronously on both sides.\n if (typeof window === \"undefined\") return null;\n if (!lucideModule) {\n ensureLucideLoaded();\n return null;\n }\n const pascal = kebabToPascal(name);\n const icon = lucideModule[pascal];\n return typeof icon === \"function\" || (icon && typeof icon === \"object\") ? (icon as IconComponent) : null;\n}\n\n/**\n * Register individual icon components by their kebab-case name.\n *\n * ```tsx\n * import { registerIcons } from \"@particle-academy/react-fancy\";\n * import { Home, Settings, Mail } from \"lucide-react\";\n *\n * registerIcons({ Home, Settings, Mail });\n * ```\n *\n * Icons are registered into the default \"lucide\" icon set and resolved\n * by the `<Icon name=\"home\" />` component using kebab-case names.\n */\nexport function registerIcons(\n icons: Record<string, ComponentType<{ className?: string; size?: number }>>,\n): void {\n let set = registry.get(\"lucide\");\n if (!set) {\n const map = new Map<string, ComponentType<{ className?: string; size?: number }>>();\n set = {\n resolve: (name: string) => {\n const pascal = kebabToPascal(name);\n return map.get(pascal) ?? null;\n },\n _map: map,\n } as IconSet & { _map: Map<string, ComponentType<{ className?: string; size?: number }>> };\n registry.set(\"lucide\", set);\n }\n const map = (set as IconSet & { _map: Map<string, ComponentType<{ className?: string; size?: number }>> })._map;\n for (const [key, component] of Object.entries(icons)) {\n map.set(key, component);\n }\n}\n\nexport function registerIconSet(name: string, set: IconSet): void {\n registry.set(name, set);\n}\n\nexport function configureIcons(options: { defaultSet?: string }): void {\n if (options.defaultSet) {\n defaultSetName = options.defaultSet;\n }\n}\n\nexport function resolveIcon(\n name: string,\n setName?: string,\n): IconComponent | null {\n const resolvedSet = setName ?? defaultSetName;\n const set = registry.get(resolvedSet);\n const registered = set ? set.resolve(name) : null;\n if (registered) return registered;\n // Addenda fill gaps after the base set, before the lucide auto-fallback — so a\n // brand pack's `github` wins over lucide's auto-resolved one.\n const fromAddenda = resolveFromAddenda(name);\n if (fromAddenda) return fromAddenda;\n if (resolvedSet === \"lucide\") return resolveFromLucide(name);\n return null;\n}\n","import { forwardRef, useSyncExternalStore } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { resolveIcon, subscribeIconResolution, getIconResolutionVersion } from \"./icon-config\";\nimport type { IconProps } from \"./Icon.types\";\n\nconst sizeClasses: Record<NonNullable<IconProps[\"size\"]>, string> = {\n xs: \"h-3 w-3\",\n sm: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n xl: \"h-8 w-8\",\n};\n\nconst sizePixels: Record<NonNullable<IconProps[\"size\"]>, number> = {\n xs: 12,\n sm: 16,\n md: 20,\n lg: 24,\n xl: 32,\n};\n\nexport const Icon = forwardRef<HTMLSpanElement, IconProps>(\n ({ size = \"md\", className, children, name, iconSet, ...props }, ref) => {\n // Re-render when the lazy lucide barrel lands, so `<Icon name>` auto-resolved\n // from lucide appears once loaded. Registered icons resolve synchronously and\n // never trigger the lazy load. SSR snapshot is the same getter (version 0).\n useSyncExternalStore(\n subscribeIconResolution,\n getIconResolutionVersion,\n getIconResolutionVersion,\n );\n\n let content = children;\n\n if (name && !children) {\n const ResolvedIcon = resolveIcon(name, iconSet);\n if (ResolvedIcon) {\n content = <ResolvedIcon size={sizePixels[size]} />;\n }\n }\n\n return (\n <span\n ref={ref}\n aria-hidden=\"true\"\n data-react-fancy-icon=\"\"\n className={cn(\n \"inline-flex items-center justify-center flex-shrink-0\",\n sizeClasses[size],\n className,\n )}\n {...props}\n >\n {content}\n </span>\n );\n },\n);\n\nIcon.displayName = \"Icon\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/Icon/icon-config.ts","../src/components/Icon/Icon.tsx"],"names":["map","forwardRef","useSyncExternalStore","jsx","cn"],"mappings":"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","file":"chunk-QKFOJKVE.cjs","sourcesContent":["import type { ComponentType } from \"react\";\nimport type { IconSet } from \"./icon-config.types\";\n\ntype IconComponent = ComponentType<{ className?: string; size?: number }>;\n\nconst registry = new Map<string, IconSet>();\nlet defaultSetName = \"lucide\";\n\n/**\n * Addendum layer — icon sets consulted across EVERY lookup, after the active\n * base set but before the lucide auto-fallback, regardless of `defaultSet`.\n * This is how a brand-icon pack (e.g. `@particle-academy/fancy-brand-icons`)\n * layers in: `<Icon name=\"github\" />` resolves the brand mark on top of Lucide\n * (or any swapped base) without a `set=` query. Base set still wins; addenda\n * supplement. Empty by default ⇒ behavior unchanged.\n */\nconst addenda: IconSet[] = [];\n\n/** Register an icon set as an addendum (supplements every base set). */\nexport function registerIconAddendum(set: IconSet): void {\n if (!addenda.includes(set)) addenda.push(set);\n}\n\nfunction resolveFromAddenda(name: string): IconComponent | null {\n for (const set of addenda) {\n const hit = set.resolve(name);\n if (hit) return hit as IconComponent;\n }\n return null;\n}\n\nfunction kebabToPascal(str: string): string {\n return str\n .split(\"-\")\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(\"\");\n}\n\n/**\n * Lazy lucide barrel. The auto-fallback (`<Icon name=\"…\" />` resolving ANY\n * lucide icon by kebab name) needs the whole namespace because names are\n * dynamic — un-tree-shakeable. Importing it eagerly forced all ~5400 icons\n * into react-fancy's main bundle for every consumer (~548KB). Instead we\n * dynamic-import it on first auto-resolve, so the barrel becomes a lazy chunk\n * loaded ONLY by apps that actually use `<Icon name>` with an unregistered\n * icon — never on the critical path. Consumers wanting sync resolution +\n * tree-shaking should `registerIcons({ ...named imports })` (those win and\n * never trigger the lazy load).\n */\nlet lucideModule: Record<string, IconComponent | undefined> | null = null;\nlet lucidePromise: Promise<unknown> | null = null;\nlet lucideVersion = 0;\nconst lucideListeners = new Set<() => void>();\n\nfunction ensureLucideLoaded(): void {\n if (lucideModule || lucidePromise) return;\n lucidePromise = import(\"lucide-react\")\n .then((mod) => {\n lucideModule = mod as unknown as Record<string, IconComponent | undefined>;\n lucideVersion++;\n for (const listener of lucideListeners) listener();\n })\n .catch(() => {\n // Leave lucidePromise set so we don't hammer a failed import.\n });\n}\n\n/** Subscribe to the lazy lucide load so `<Icon>` can re-render once it lands. */\nexport function subscribeIconResolution(listener: () => void): () => void {\n lucideListeners.add(listener);\n return () => lucideListeners.delete(listener);\n}\n\n/** Snapshot for useSyncExternalStore — bumps when the lucide barrel loads. */\nexport function getIconResolutionVersion(): number {\n return lucideVersion;\n}\n\n/**\n * Fallback resolver: look up any lucide-react icon by its kebab-case name\n * without requiring the consumer to call `registerIcons()` first. Returns null\n * until the lazy barrel has loaded (the first call kicks off the import; `<Icon>`\n * re-renders via `subscribeIconResolution` when it's ready). Overrides\n * registered via `registerIcons()` still win and resolve synchronously.\n */\nfunction resolveFromLucide(name: string): IconComponent | null {\n // SSR-deterministic: never resolve the lazily-imported lucide barrel on the\n // server. A long-running SSR process (e.g. Inertia's node SSR daemon) loads\n // the barrel after its first request, then renders auto-fallback lucide icons\n // that a fresh client (barrel not yet loaded) does NOT have at hydration →\n // React #418 (\"server HTML didn't match\"). Returning null on the server makes\n // the server render match the client's FIRST render; the icon then appears\n // once the client loads the barrel (via subscribeIconResolution). Registered\n // icons + addenda (brand packs) still resolve synchronously on both sides.\n if (typeof window === \"undefined\") return null;\n if (!lucideModule) {\n ensureLucideLoaded();\n return null;\n }\n const pascal = kebabToPascal(name);\n const icon = lucideModule[pascal];\n return typeof icon === \"function\" || (icon && typeof icon === \"object\") ? (icon as IconComponent) : null;\n}\n\n/**\n * Register individual icon components by their kebab-case name.\n *\n * ```tsx\n * import { registerIcons } from \"@particle-academy/react-fancy\";\n * import { Home, Settings, Mail } from \"lucide-react\";\n *\n * registerIcons({ Home, Settings, Mail });\n * ```\n *\n * Icons are registered into the default \"lucide\" icon set and resolved\n * by the `<Icon name=\"home\" />` component using kebab-case names.\n */\nexport function registerIcons(\n icons: Record<string, ComponentType<{ className?: string; size?: number }>>,\n): void {\n let set = registry.get(\"lucide\");\n if (!set) {\n const map = new Map<string, ComponentType<{ className?: string; size?: number }>>();\n set = {\n resolve: (name: string) => {\n const pascal = kebabToPascal(name);\n return map.get(pascal) ?? null;\n },\n _map: map,\n } as IconSet & { _map: Map<string, ComponentType<{ className?: string; size?: number }>> };\n registry.set(\"lucide\", set);\n }\n const map = (set as IconSet & { _map: Map<string, ComponentType<{ className?: string; size?: number }>> })._map;\n for (const [key, component] of Object.entries(icons)) {\n map.set(key, component);\n }\n}\n\nexport function registerIconSet(name: string, set: IconSet): void {\n registry.set(name, set);\n}\n\nexport function configureIcons(options: { defaultSet?: string }): void {\n if (options.defaultSet) {\n defaultSetName = options.defaultSet;\n }\n}\n\nexport function resolveIcon(\n name: string,\n setName?: string,\n): IconComponent | null {\n const resolvedSet = setName ?? defaultSetName;\n const set = registry.get(resolvedSet);\n const registered = set ? set.resolve(name) : null;\n if (registered) return registered;\n // Addenda fill gaps after the base set, before the lucide auto-fallback — so a\n // brand pack's `github` wins over lucide's auto-resolved one.\n const fromAddenda = resolveFromAddenda(name);\n if (fromAddenda) return fromAddenda;\n if (resolvedSet === \"lucide\") return resolveFromLucide(name);\n return null;\n}\n","import { forwardRef, useSyncExternalStore } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { resolveIcon, subscribeIconResolution, getIconResolutionVersion } from \"./icon-config\";\nimport type { IconProps } from \"./Icon.types\";\n\nconst sizeClasses: Record<NonNullable<IconProps[\"size\"]>, string> = {\n xs: \"h-3 w-3\",\n sm: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n xl: \"h-8 w-8\",\n};\n\nconst sizePixels: Record<NonNullable<IconProps[\"size\"]>, number> = {\n xs: 12,\n sm: 16,\n md: 20,\n lg: 24,\n xl: 32,\n};\n\nexport const Icon = forwardRef<HTMLSpanElement, IconProps>(\n ({ size = \"md\", className, children, name, iconSet, ...props }, ref) => {\n // Re-render when the lazy lucide barrel lands, so `<Icon name>` auto-resolved\n // from lucide appears once loaded. Registered icons resolve synchronously and\n // never trigger the lazy load. SSR snapshot is the same getter (version 0).\n useSyncExternalStore(\n subscribeIconResolution,\n getIconResolutionVersion,\n getIconResolutionVersion,\n );\n\n let content = children;\n\n if (name && !children) {\n const ResolvedIcon = resolveIcon(name, iconSet);\n if (ResolvedIcon) {\n content = <ResolvedIcon size={sizePixels[size]} />;\n }\n }\n\n return (\n <span\n ref={ref}\n aria-hidden=\"true\"\n data-react-fancy-icon=\"\"\n className={cn(\n \"inline-flex items-center justify-center flex-shrink-0\",\n sizeClasses[size],\n className,\n )}\n {...props}\n >\n {content}\n </span>\n );\n },\n);\n\nIcon.displayName = \"Icon\";\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkZU5Q77OT_cjs = require('./chunk-ZU5Q77OT.cjs');
|
|
4
4
|
var react = require('react');
|
|
5
5
|
var lucideReact = require('lucide-react');
|
|
6
6
|
var jsxRuntime = require('react/jsx-runtime');
|
|
@@ -145,7 +145,7 @@ var Calendar = react.forwardRef(
|
|
|
145
145
|
{
|
|
146
146
|
"data-react-fancy-calendar": "",
|
|
147
147
|
ref,
|
|
148
|
-
className:
|
|
148
|
+
className: chunkZU5Q77OT_cjs.cn(
|
|
149
149
|
"inline-block w-72 rounded-xl border border-zinc-200 bg-white p-4 dark:border-zinc-700 dark:bg-zinc-900",
|
|
150
150
|
className
|
|
151
151
|
),
|
|
@@ -198,7 +198,7 @@ var Calendar = react.forwardRef(
|
|
|
198
198
|
disabled,
|
|
199
199
|
onClick: () => handleSelect(date),
|
|
200
200
|
onMouseEnter: () => mode === "range" && setRangeHover(date),
|
|
201
|
-
className:
|
|
201
|
+
className: chunkZU5Q77OT_cjs.cn(
|
|
202
202
|
btnBase,
|
|
203
203
|
!isCurrentMonth && "text-zinc-300 dark:text-zinc-600",
|
|
204
204
|
isCurrentMonth && !selected && !inRange && "text-zinc-700 hover:bg-zinc-100 dark:text-zinc-300 dark:hover:bg-zinc-800",
|
|
@@ -220,5 +220,5 @@ var Calendar = react.forwardRef(
|
|
|
220
220
|
Calendar.displayName = "Calendar";
|
|
221
221
|
|
|
222
222
|
exports.Calendar = Calendar;
|
|
223
|
-
//# sourceMappingURL=chunk-
|
|
224
|
-
//# sourceMappingURL=chunk-
|
|
223
|
+
//# sourceMappingURL=chunk-QOGKO6JH.cjs.map
|
|
224
|
+
//# sourceMappingURL=chunk-QOGKO6JH.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Calendar/Calendar.tsx"],"names":["forwardRef","Calendar","useMemo","useState","useCallback","jsxs","cn","jsx","ChevronLeft","ChevronRight"],"mappings":"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","file":"chunk-NNSNANNY.cjs","sourcesContent":["import { forwardRef, useCallback, useMemo, useState } from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport type { CalendarProps, DateRange } from \"./Calendar.types\";\n\nconst DAYS = [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"];\nconst MONTHS = [\n \"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\n \"July\", \"August\", \"September\", \"October\", \"November\", \"December\",\n];\n\nfunction isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nfunction getDaysInMonth(year: number, month: number): Date[] {\n const days: Date[] = [];\n const firstDay = new Date(year, month, 1);\n const startDayOfWeek = firstDay.getDay();\n\n // Fill leading days from previous month\n for (let i = startDayOfWeek - 1; i >= 0; i--) {\n days.push(new Date(year, month, -i));\n }\n\n // Fill current month\n const lastDate = new Date(year, month + 1, 0).getDate();\n for (let d = 1; d <= lastDate; d++) {\n days.push(new Date(year, month, d));\n }\n\n // Fill trailing days to complete 6 rows\n while (days.length < 42) {\n days.push(new Date(year, month + 1, days.length - startDayOfWeek - lastDate + 1));\n }\n\n return days;\n}\n\nexport const Calendar = forwardRef<HTMLDivElement, CalendarProps>(\n function Calendar(\n {\n mode = \"single\",\n value,\n onChange,\n minDate,\n maxDate,\n disabledDates = [],\n className,\n },\n ref,\n ) {\n const today = useMemo(() => new Date(), []);\n const [viewMonth, setViewMonth] = useState(today.getMonth());\n const [viewYear, setViewYear] = useState(today.getFullYear());\n const [rangeHover, setRangeHover] = useState<Date | null>(null);\n\n const days = useMemo(\n () => getDaysInMonth(viewYear, viewMonth),\n [viewYear, viewMonth],\n );\n\n const prevMonth = useCallback(() => {\n setViewMonth((m) => {\n if (m === 0) {\n setViewYear((y) => y - 1);\n return 11;\n }\n return m - 1;\n });\n }, []);\n\n const nextMonth = useCallback(() => {\n setViewMonth((m) => {\n if (m === 11) {\n setViewYear((y) => y + 1);\n return 0;\n }\n return m + 1;\n });\n }, []);\n\n const isDisabled = useCallback(\n (date: Date): boolean => {\n if (minDate && date < minDate) return true;\n if (maxDate && date > maxDate) return true;\n return disabledDates.some((d) => isSameDay(d, date));\n },\n [minDate, maxDate, disabledDates],\n );\n\n const isSelected = useCallback(\n (date: Date): boolean => {\n if (!value) return false;\n if (mode === \"single\" && value instanceof Date) {\n return isSameDay(date, value);\n }\n if (mode === \"multiple\" && Array.isArray(value)) {\n return value.some((v) => isSameDay(date, v));\n }\n if (mode === \"range\" && value && typeof value === \"object\" && \"start\" in value) {\n const range = value as DateRange;\n if (range.start && isSameDay(date, range.start)) return true;\n if (range.end && isSameDay(date, range.end)) return true;\n }\n return false;\n },\n [value, mode],\n );\n\n const isInRange = useCallback(\n (date: Date): boolean => {\n if (mode !== \"range\" || !value || typeof value !== \"object\" || !(\"start\" in value))\n return false;\n const range = value as DateRange;\n if (!range.start) return false;\n const end = range.end ?? rangeHover;\n if (!end) return false;\n const [s, e] = range.start <= end ? [range.start, end] : [end, range.start];\n return date > s && date < e;\n },\n [value, mode, rangeHover],\n );\n\n const handleSelect = useCallback(\n (date: Date) => {\n if (isDisabled(date)) return;\n\n if (mode === \"single\") {\n onChange?.(date);\n } else if (mode === \"multiple\") {\n const arr = (Array.isArray(value) ? value : []) as Date[];\n const exists = arr.findIndex((d) => isSameDay(d, date));\n if (exists >= 0) {\n onChange?.(arr.filter((_, i) => i !== exists));\n } else {\n onChange?.([...arr, date]);\n }\n } else if (mode === \"range\") {\n const range = (value && typeof value === \"object\" && \"start\" in value\n ? value\n : { start: null, end: null }) as DateRange;\n\n if (!range.start || range.end) {\n onChange?.({ start: date, end: null });\n } else {\n const [s, e] =\n date >= range.start ? [range.start, date] : [date, range.start];\n onChange?.({ start: s, end: e });\n }\n }\n },\n [mode, value, onChange, isDisabled],\n );\n\n const btnBase =\n \"flex h-8 w-8 items-center justify-center rounded-lg text-sm transition-colors\";\n\n return (\n <div\n data-react-fancy-calendar=\"\"\n ref={ref}\n className={cn(\n \"inline-block w-72 rounded-xl border border-zinc-200 bg-white p-4 dark:border-zinc-700 dark:bg-zinc-900\",\n className,\n )}\n >\n {/* Header */}\n <div className=\"mb-3 flex items-center justify-between\">\n <button\n type=\"button\"\n onClick={prevMonth}\n className=\"rounded-lg p-1 text-zinc-400 hover:bg-zinc-100 dark:hover:bg-zinc-800\"\n aria-label=\"Previous month\"\n >\n <ChevronLeft size={16} />\n </button>\n <span className=\"text-sm font-semibold\">\n {MONTHS[viewMonth]} {viewYear}\n </span>\n <button\n type=\"button\"\n onClick={nextMonth}\n className=\"rounded-lg p-1 text-zinc-400 hover:bg-zinc-100 dark:hover:bg-zinc-800\"\n aria-label=\"Next month\"\n >\n <ChevronRight size={16} />\n </button>\n </div>\n\n {/* Day headers */}\n <div className=\"mb-1 grid grid-cols-7 gap-1\">\n {DAYS.map((d) => (\n <div\n key={d}\n className=\"flex h-8 items-center justify-center text-xs font-medium text-zinc-400\"\n >\n {d}\n </div>\n ))}\n </div>\n\n {/* Day grid */}\n <div className=\"grid grid-cols-7 gap-1\">\n {days.map((date, i) => {\n const isCurrentMonth = date.getMonth() === viewMonth;\n const selected = isSelected(date);\n const inRange = isInRange(date);\n const disabled = isDisabled(date);\n const isToday = isSameDay(date, today);\n\n return (\n <button\n key={i}\n type=\"button\"\n disabled={disabled}\n onClick={() => handleSelect(date)}\n onMouseEnter={() =>\n mode === \"range\" && setRangeHover(date)\n }\n className={cn(\n btnBase,\n !isCurrentMonth && \"text-zinc-300 dark:text-zinc-600\",\n isCurrentMonth &&\n !selected &&\n !inRange &&\n \"text-zinc-700 hover:bg-zinc-100 dark:text-zinc-300 dark:hover:bg-zinc-800\",\n inRange &&\n \"bg-blue-50 text-blue-700 dark:bg-blue-950 dark:text-blue-300\",\n selected &&\n \"bg-zinc-900 text-white dark:bg-white dark:text-zinc-900\",\n isToday && !selected && \"font-bold\",\n disabled && \"cursor-not-allowed opacity-30\",\n )}\n >\n {date.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n );\n },\n);\n\nCalendar.displayName = \"Calendar\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/Calendar/Calendar.tsx"],"names":["forwardRef","Calendar","useMemo","useState","useCallback","jsxs","cn","jsx","ChevronLeft","ChevronRight"],"mappings":"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","file":"chunk-QOGKO6JH.cjs","sourcesContent":["import { forwardRef, useCallback, useMemo, useState } from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport type { CalendarProps, DateRange } from \"./Calendar.types\";\n\nconst DAYS = [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"];\nconst MONTHS = [\n \"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\n \"July\", \"August\", \"September\", \"October\", \"November\", \"December\",\n];\n\nfunction isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nfunction getDaysInMonth(year: number, month: number): Date[] {\n const days: Date[] = [];\n const firstDay = new Date(year, month, 1);\n const startDayOfWeek = firstDay.getDay();\n\n // Fill leading days from previous month\n for (let i = startDayOfWeek - 1; i >= 0; i--) {\n days.push(new Date(year, month, -i));\n }\n\n // Fill current month\n const lastDate = new Date(year, month + 1, 0).getDate();\n for (let d = 1; d <= lastDate; d++) {\n days.push(new Date(year, month, d));\n }\n\n // Fill trailing days to complete 6 rows\n while (days.length < 42) {\n days.push(new Date(year, month + 1, days.length - startDayOfWeek - lastDate + 1));\n }\n\n return days;\n}\n\nexport const Calendar = forwardRef<HTMLDivElement, CalendarProps>(\n function Calendar(\n {\n mode = \"single\",\n value,\n onChange,\n minDate,\n maxDate,\n disabledDates = [],\n className,\n },\n ref,\n ) {\n const today = useMemo(() => new Date(), []);\n const [viewMonth, setViewMonth] = useState(today.getMonth());\n const [viewYear, setViewYear] = useState(today.getFullYear());\n const [rangeHover, setRangeHover] = useState<Date | null>(null);\n\n const days = useMemo(\n () => getDaysInMonth(viewYear, viewMonth),\n [viewYear, viewMonth],\n );\n\n const prevMonth = useCallback(() => {\n setViewMonth((m) => {\n if (m === 0) {\n setViewYear((y) => y - 1);\n return 11;\n }\n return m - 1;\n });\n }, []);\n\n const nextMonth = useCallback(() => {\n setViewMonth((m) => {\n if (m === 11) {\n setViewYear((y) => y + 1);\n return 0;\n }\n return m + 1;\n });\n }, []);\n\n const isDisabled = useCallback(\n (date: Date): boolean => {\n if (minDate && date < minDate) return true;\n if (maxDate && date > maxDate) return true;\n return disabledDates.some((d) => isSameDay(d, date));\n },\n [minDate, maxDate, disabledDates],\n );\n\n const isSelected = useCallback(\n (date: Date): boolean => {\n if (!value) return false;\n if (mode === \"single\" && value instanceof Date) {\n return isSameDay(date, value);\n }\n if (mode === \"multiple\" && Array.isArray(value)) {\n return value.some((v) => isSameDay(date, v));\n }\n if (mode === \"range\" && value && typeof value === \"object\" && \"start\" in value) {\n const range = value as DateRange;\n if (range.start && isSameDay(date, range.start)) return true;\n if (range.end && isSameDay(date, range.end)) return true;\n }\n return false;\n },\n [value, mode],\n );\n\n const isInRange = useCallback(\n (date: Date): boolean => {\n if (mode !== \"range\" || !value || typeof value !== \"object\" || !(\"start\" in value))\n return false;\n const range = value as DateRange;\n if (!range.start) return false;\n const end = range.end ?? rangeHover;\n if (!end) return false;\n const [s, e] = range.start <= end ? [range.start, end] : [end, range.start];\n return date > s && date < e;\n },\n [value, mode, rangeHover],\n );\n\n const handleSelect = useCallback(\n (date: Date) => {\n if (isDisabled(date)) return;\n\n if (mode === \"single\") {\n onChange?.(date);\n } else if (mode === \"multiple\") {\n const arr = (Array.isArray(value) ? value : []) as Date[];\n const exists = arr.findIndex((d) => isSameDay(d, date));\n if (exists >= 0) {\n onChange?.(arr.filter((_, i) => i !== exists));\n } else {\n onChange?.([...arr, date]);\n }\n } else if (mode === \"range\") {\n const range = (value && typeof value === \"object\" && \"start\" in value\n ? value\n : { start: null, end: null }) as DateRange;\n\n if (!range.start || range.end) {\n onChange?.({ start: date, end: null });\n } else {\n const [s, e] =\n date >= range.start ? [range.start, date] : [date, range.start];\n onChange?.({ start: s, end: e });\n }\n }\n },\n [mode, value, onChange, isDisabled],\n );\n\n const btnBase =\n \"flex h-8 w-8 items-center justify-center rounded-lg text-sm transition-colors\";\n\n return (\n <div\n data-react-fancy-calendar=\"\"\n ref={ref}\n className={cn(\n \"inline-block w-72 rounded-xl border border-zinc-200 bg-white p-4 dark:border-zinc-700 dark:bg-zinc-900\",\n className,\n )}\n >\n {/* Header */}\n <div className=\"mb-3 flex items-center justify-between\">\n <button\n type=\"button\"\n onClick={prevMonth}\n className=\"rounded-lg p-1 text-zinc-400 hover:bg-zinc-100 dark:hover:bg-zinc-800\"\n aria-label=\"Previous month\"\n >\n <ChevronLeft size={16} />\n </button>\n <span className=\"text-sm font-semibold\">\n {MONTHS[viewMonth]} {viewYear}\n </span>\n <button\n type=\"button\"\n onClick={nextMonth}\n className=\"rounded-lg p-1 text-zinc-400 hover:bg-zinc-100 dark:hover:bg-zinc-800\"\n aria-label=\"Next month\"\n >\n <ChevronRight size={16} />\n </button>\n </div>\n\n {/* Day headers */}\n <div className=\"mb-1 grid grid-cols-7 gap-1\">\n {DAYS.map((d) => (\n <div\n key={d}\n className=\"flex h-8 items-center justify-center text-xs font-medium text-zinc-400\"\n >\n {d}\n </div>\n ))}\n </div>\n\n {/* Day grid */}\n <div className=\"grid grid-cols-7 gap-1\">\n {days.map((date, i) => {\n const isCurrentMonth = date.getMonth() === viewMonth;\n const selected = isSelected(date);\n const inRange = isInRange(date);\n const disabled = isDisabled(date);\n const isToday = isSameDay(date, today);\n\n return (\n <button\n key={i}\n type=\"button\"\n disabled={disabled}\n onClick={() => handleSelect(date)}\n onMouseEnter={() =>\n mode === \"range\" && setRangeHover(date)\n }\n className={cn(\n btnBase,\n !isCurrentMonth && \"text-zinc-300 dark:text-zinc-600\",\n isCurrentMonth &&\n !selected &&\n !inRange &&\n \"text-zinc-700 hover:bg-zinc-100 dark:text-zinc-300 dark:hover:bg-zinc-800\",\n inRange &&\n \"bg-blue-50 text-blue-700 dark:bg-blue-950 dark:text-blue-300\",\n selected &&\n \"bg-zinc-900 text-white dark:bg-white dark:text-zinc-900\",\n isToday && !selected && \"font-bold\",\n disabled && \"cursor-not-allowed opacity-30\",\n )}\n >\n {date.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n );\n },\n);\n\nCalendar.displayName = \"Calendar\";\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkZU5Q77OT_cjs = require('./chunk-ZU5Q77OT.cjs');
|
|
4
4
|
var react = require('react');
|
|
5
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
var lucideReact = require('lucide-react');
|
|
@@ -14,7 +14,7 @@ function useNavbar() {
|
|
|
14
14
|
return ctx;
|
|
15
15
|
}
|
|
16
16
|
function NavbarBrand({ children, className }) {
|
|
17
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { "data-react-fancy-navbar-brand": "", className:
|
|
17
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { "data-react-fancy-navbar-brand": "", className: chunkZU5Q77OT_cjs.cn("flex items-center", className), children });
|
|
18
18
|
}
|
|
19
19
|
NavbarBrand.displayName = "NavbarBrand";
|
|
20
20
|
function NavbarItems({ children, className }) {
|
|
@@ -23,7 +23,7 @@ function NavbarItems({ children, className }) {
|
|
|
23
23
|
"div",
|
|
24
24
|
{
|
|
25
25
|
"data-react-fancy-navbar-items": "",
|
|
26
|
-
className:
|
|
26
|
+
className: chunkZU5Q77OT_cjs.cn(
|
|
27
27
|
"items-center gap-1",
|
|
28
28
|
mobileOpen ? "flex flex-col border-t border-zinc-200 pt-4 dark:border-zinc-700" : "hidden md:flex md:flex-row",
|
|
29
29
|
className
|
|
@@ -41,7 +41,7 @@ function NavbarItem({
|
|
|
41
41
|
className,
|
|
42
42
|
...rest
|
|
43
43
|
}) {
|
|
44
|
-
const baseClass =
|
|
44
|
+
const baseClass = chunkZU5Q77OT_cjs.cn(
|
|
45
45
|
"rounded-lg px-3 py-2 text-sm font-medium transition-colors",
|
|
46
46
|
active ? "bg-zinc-100 text-zinc-900 dark:bg-zinc-800 dark:text-white" : "text-zinc-600 hover:bg-zinc-50 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-white",
|
|
47
47
|
className
|
|
@@ -70,7 +70,7 @@ function NavbarToggle({ className }) {
|
|
|
70
70
|
"data-react-fancy-navbar-toggle": "",
|
|
71
71
|
type: "button",
|
|
72
72
|
onClick: () => setMobileOpen(!mobileOpen),
|
|
73
|
-
className:
|
|
73
|
+
className: chunkZU5Q77OT_cjs.cn(
|
|
74
74
|
"inline-flex items-center rounded-lg p-2 text-zinc-500 hover:bg-zinc-100 md:hidden dark:hover:bg-zinc-800",
|
|
75
75
|
className
|
|
76
76
|
),
|
|
@@ -91,7 +91,7 @@ function NavbarRoot({ children, className }) {
|
|
|
91
91
|
"nav",
|
|
92
92
|
{
|
|
93
93
|
"data-react-fancy-navbar": "",
|
|
94
|
-
className:
|
|
94
|
+
className: chunkZU5Q77OT_cjs.cn(
|
|
95
95
|
"border-b border-zinc-200 bg-white px-4 py-3 dark:border-zinc-800 dark:bg-zinc-900",
|
|
96
96
|
className
|
|
97
97
|
),
|
|
@@ -108,5 +108,5 @@ var Navbar = Object.assign(NavbarRoot, {
|
|
|
108
108
|
|
|
109
109
|
exports.Navbar = Navbar;
|
|
110
110
|
exports.useNavbar = useNavbar;
|
|
111
|
-
//# sourceMappingURL=chunk-
|
|
112
|
-
//# sourceMappingURL=chunk-
|
|
111
|
+
//# sourceMappingURL=chunk-QSFTWIUH.cjs.map
|
|
112
|
+
//# sourceMappingURL=chunk-QSFTWIUH.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Navbar/Navbar.context.ts","../src/components/Navbar/NavbarBrand.tsx","../src/components/Navbar/NavbarItems.tsx","../src/components/Navbar/NavbarItem.tsx","../src/components/Navbar/NavbarToggle.tsx","../src/components/Navbar/Navbar.tsx"],"names":["createContext","useContext","jsx","cn","X","Menu","useState","useMemo"],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/components/Navbar/Navbar.context.ts","../src/components/Navbar/NavbarBrand.tsx","../src/components/Navbar/NavbarItems.tsx","../src/components/Navbar/NavbarItem.tsx","../src/components/Navbar/NavbarToggle.tsx","../src/components/Navbar/Navbar.tsx"],"names":["createContext","useContext","jsx","cn","X","Menu","useState","useMemo"],"mappings":"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","file":"chunk-QSFTWIUH.cjs","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { NavbarContextValue } from \"./Navbar.types\";\n\nexport const NavbarContext = createContext<NavbarContextValue | null>(null);\n\nexport function useNavbar(): NavbarContextValue {\n const ctx = useContext(NavbarContext);\n if (!ctx) {\n throw new Error(\"Navbar compound components must be used within <Navbar>\");\n }\n return ctx;\n}\n","import { cn } from \"../../utils/cn\";\nimport type { NavbarBrandProps } from \"./Navbar.types\";\n\nexport function NavbarBrand({ children, className }: NavbarBrandProps) {\n return (\n <div data-react-fancy-navbar-brand=\"\" className={cn(\"flex items-center\", className)}>{children}</div>\n );\n}\n\nNavbarBrand.displayName = \"NavbarBrand\";\n","import { cn } from \"../../utils/cn\";\nimport { useNavbar } from \"./Navbar.context\";\nimport type { NavbarItemsProps } from \"./Navbar.types\";\n\nexport function NavbarItems({ children, className }: NavbarItemsProps) {\n const { mobileOpen } = useNavbar();\n\n return (\n <div\n data-react-fancy-navbar-items=\"\"\n className={cn(\n \"items-center gap-1\",\n mobileOpen\n ? \"flex flex-col border-t border-zinc-200 pt-4 dark:border-zinc-700\"\n : \"hidden md:flex md:flex-row\",\n className,\n )}\n >\n {children}\n </div>\n );\n}\n\nNavbarItems.displayName = \"NavbarItems\";\n","import type { ElementType } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport type { NavbarItemProps } from \"./Navbar.types\";\n\nexport function NavbarItem({\n children,\n href,\n as: As,\n active = false,\n className,\n ...rest\n}: NavbarItemProps) {\n const baseClass = cn(\n \"rounded-lg px-3 py-2 text-sm font-medium transition-colors\",\n active\n ? \"bg-zinc-100 text-zinc-900 dark:bg-zinc-800 dark:text-white\"\n : \"text-zinc-600 hover:bg-zinc-50 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800 dark:hover:text-white\",\n className,\n );\n\n // Link mode engages on `href` OR `as`: a `to`-based router (TanStack Router,\n // React Router) passes no href, and without this the item fell through to the\n // inert <div> below — a nav entry that renders correctly and navigates nowhere.\n if (href || As) {\n const Link = (As ?? \"a\") as ElementType;\n\n // `href` is spread only when set. Passing `href={undefined}` to a `to`-based\n // router's Link overwrites the href it derives for itself, which renders an\n // anchor with no destination.\n return (\n <Link\n data-react-fancy-navbar-item=\"\"\n {...(href ? { href } : {})}\n className={baseClass}\n {...rest}\n >\n {children}\n </Link>\n );\n }\n\n return (\n <div data-react-fancy-navbar-item=\"\" className={baseClass} {...rest}>\n {children}\n </div>\n );\n}\n\nNavbarItem.displayName = \"NavbarItem\";\n","import { Menu, X } from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport { useNavbar } from \"./Navbar.context\";\nimport type { NavbarToggleProps } from \"./Navbar.types\";\n\nexport function NavbarToggle({ className }: NavbarToggleProps) {\n const { mobileOpen, setMobileOpen } = useNavbar();\n\n return (\n <button\n data-react-fancy-navbar-toggle=\"\"\n type=\"button\"\n onClick={() => setMobileOpen(!mobileOpen)}\n className={cn(\n \"inline-flex items-center rounded-lg p-2 text-zinc-500 hover:bg-zinc-100 md:hidden dark:hover:bg-zinc-800\",\n className,\n )}\n aria-label=\"Toggle navigation\"\n aria-expanded={mobileOpen}\n >\n {mobileOpen ? (\n <X size={20} />\n ) : (\n <Menu size={20} />\n )}\n </button>\n );\n}\n\nNavbarToggle.displayName = \"NavbarToggle\";\n","import { useMemo, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { NavbarContext } from \"./Navbar.context\";\nimport { NavbarBrand } from \"./NavbarBrand\";\nimport { NavbarItems } from \"./NavbarItems\";\nimport { NavbarItem } from \"./NavbarItem\";\nimport { NavbarToggle } from \"./NavbarToggle\";\nimport type { NavbarProps } from \"./Navbar.types\";\n\nfunction NavbarRoot({ children, className }: NavbarProps) {\n const [mobileOpen, setMobileOpen] = useState(false);\n\n const ctx = useMemo(\n () => ({ mobileOpen, setMobileOpen }),\n [mobileOpen],\n );\n\n return (\n <NavbarContext.Provider value={ctx}>\n <nav\n data-react-fancy-navbar=\"\"\n className={cn(\n \"border-b border-zinc-200 bg-white px-4 py-3 dark:border-zinc-800 dark:bg-zinc-900\",\n className,\n )}\n >\n <div className=\"flex items-center justify-between\">\n {children}\n </div>\n </nav>\n </NavbarContext.Provider>\n );\n}\n\nexport const Navbar = Object.assign(NavbarRoot, {\n Brand: NavbarBrand,\n Items: NavbarItems,\n Item: NavbarItem,\n Toggle: NavbarToggle,\n});\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkZU5Q77OT_cjs = require('./chunk-ZU5Q77OT.cjs');
|
|
4
4
|
var react = require('react');
|
|
5
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
|
|
@@ -22,7 +22,7 @@ var AudioViewer = react.forwardRef(
|
|
|
22
22
|
{
|
|
23
23
|
ref,
|
|
24
24
|
"data-react-fancy-audio-viewer": "",
|
|
25
|
-
className:
|
|
25
|
+
className: chunkZU5Q77OT_cjs.cn(
|
|
26
26
|
"flex flex-col gap-2 rounded-lg border border-zinc-200 bg-white p-4 dark:border-zinc-700 dark:bg-zinc-900",
|
|
27
27
|
className
|
|
28
28
|
),
|
|
@@ -52,5 +52,5 @@ var AudioViewer = react.forwardRef(
|
|
|
52
52
|
AudioViewer.displayName = "AudioViewer";
|
|
53
53
|
|
|
54
54
|
exports.AudioViewer = AudioViewer;
|
|
55
|
-
//# sourceMappingURL=chunk-
|
|
56
|
-
//# sourceMappingURL=chunk-
|
|
55
|
+
//# sourceMappingURL=chunk-QW66UHWO.cjs.map
|
|
56
|
+
//# sourceMappingURL=chunk-QW66UHWO.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/AudioViewer/AudioViewer.tsx"],"names":["forwardRef","useState","jsxs","cn","jsx"],"mappings":";;;;;;AAYO,IAAM,WAAA,GAAcA,gBAAA;AAAA,EACzB,CACE;AAAA,IACE,GAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA,GAAW,IAAA;AAAA,IACX,QAAA,GAAW,KAAA;AAAA,IACX,IAAA,GAAO,KAAA;AAAA,IACP,OAAA,GAAU,UAAA;AAAA,IACV,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,KAEF,GAAA,KACG;AACH,IAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIC,eAAS,KAAK,CAAA;AAE5C,IAAA,uBACEC,eAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,+BAAA,EAA8B,EAAA;AAAA,QAC9B,SAAA,EAAWC,oBAAA;AAAA,UACT,0GAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,KAAA;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,KAAA,oBACCC,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+DAAA,EACZ,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,UAED,0BACCA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0CAAA,EAA2C,kCAE1D,CAAA,mBAEAA,cAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,GAAA;AAAA,cACA,OAAA;AAAA,cACA,QAAA;AAAA,cACA,QAAA;AAAA,cACA,IAAA;AAAA,cACA,SAAS,MAAM;AACb,gBAAA,UAAA,CAAW,IAAI,CAAA;AACf,gBAAA,OAAA,IAAU;AAAA,cACZ,CAAA;AAAA,cACA,SAAA,EAAU;AAAA;AAAA;AACZ;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/components/AudioViewer/AudioViewer.tsx"],"names":["forwardRef","useState","jsxs","cn","jsx"],"mappings":";;;;;;AAYO,IAAM,WAAA,GAAcA,gBAAA;AAAA,EACzB,CACE;AAAA,IACE,GAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA,GAAW,IAAA;AAAA,IACX,QAAA,GAAW,KAAA;AAAA,IACX,IAAA,GAAO,KAAA;AAAA,IACP,OAAA,GAAU,UAAA;AAAA,IACV,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,KAEF,GAAA,KACG;AACH,IAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIC,eAAS,KAAK,CAAA;AAE5C,IAAA,uBACEC,eAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,+BAAA,EAA8B,EAAA;AAAA,QAC9B,SAAA,EAAWC,oBAAA;AAAA,UACT,0GAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,KAAA;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,KAAA,oBACCC,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+DAAA,EACZ,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,UAED,0BACCA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0CAAA,EAA2C,kCAE1D,CAAA,mBAEAA,cAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,GAAA;AAAA,cACA,OAAA;AAAA,cACA,QAAA;AAAA,cACA,QAAA;AAAA,cACA,IAAA;AAAA,cACA,SAAS,MAAM;AACb,gBAAA,UAAA,CAAW,IAAI,CAAA;AACf,gBAAA,OAAA,IAAU;AAAA,cACZ,CAAA;AAAA,cACA,SAAA,EAAU;AAAA;AAAA;AACZ;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA","file":"chunk-QW66UHWO.cjs","sourcesContent":["import { forwardRef, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport type { AudioViewerProps } from \"./AudioViewer.types\";\n\n/**\n * A standalone audio viewer — a themed card wrapping the native audio player,\n * with an optional title. Renders for audio sources inside `<MediaViewer>`.\n *\n * ```tsx\n * <AudioViewer src=\"/track.mp3\" title=\"track.mp3\" />\n * ```\n */\nexport const AudioViewer = forwardRef<HTMLDivElement, AudioViewerProps>(\n (\n {\n src,\n title,\n controls = true,\n autoPlay = false,\n loop = false,\n preload = \"metadata\",\n onError,\n className,\n style,\n },\n ref,\n ) => {\n const [errored, setErrored] = useState(false);\n\n return (\n <div\n ref={ref}\n data-react-fancy-audio-viewer=\"\"\n className={cn(\n \"flex flex-col gap-2 rounded-lg border border-zinc-200 bg-white p-4 dark:border-zinc-700 dark:bg-zinc-900\",\n className,\n )}\n style={style}\n >\n {title && (\n <div className=\"truncate text-sm font-medium text-zinc-700 dark:text-zinc-200\">\n {title}\n </div>\n )}\n {errored ? (\n <div className=\"text-sm text-zinc-500 dark:text-zinc-400\">\n Couldn't load audio.\n </div>\n ) : (\n <audio\n src={src}\n preload={preload}\n controls={controls}\n autoPlay={autoPlay}\n loop={loop}\n onError={() => {\n setErrored(true);\n onError?.();\n }}\n className=\"w-full\"\n />\n )}\n </div>\n );\n },\n);\n\nAudioViewer.displayName = \"AudioViewer\";\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { cn } from './chunk-
|
|
1
|
+
import { cn } from './chunk-MMW2JGKZ.js';
|
|
2
2
|
import { createContext, useState, useContext } from 'react';
|
|
3
3
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
4
4
|
import { ChevronDown } from 'lucide-react';
|
|
@@ -170,5 +170,5 @@ var Menu = Object.assign(MenuRoot, {
|
|
|
170
170
|
});
|
|
171
171
|
|
|
172
172
|
export { Menu, useMenu };
|
|
173
|
-
//# sourceMappingURL=chunk-
|
|
174
|
-
//# sourceMappingURL=chunk-
|
|
173
|
+
//# sourceMappingURL=chunk-RA2VOQ46.js.map
|
|
174
|
+
//# sourceMappingURL=chunk-RA2VOQ46.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Menu/Menu.context.ts","../src/components/Menu/MenuItem.tsx","../src/components/Menu/MenuSubmenu.tsx","../src/components/Menu/MenuGroup.tsx","../src/components/Menu/Menu.tsx"],"names":["jsxs","jsx"],"mappings":"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","file":"chunk-IGYIMS6J.js","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { MenuContextValue } from \"./Menu.types\";\n\nexport const MenuContext = createContext<MenuContextValue | null>(null);\n\nexport function useMenu(): MenuContextValue {\n const ctx = useContext(MenuContext);\n if (!ctx) {\n throw new Error(\"useMenu must be used within a <Menu> component\");\n }\n return ctx;\n}\n","import type { ElementType } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useMenu } from \"./Menu.context\";\nimport type { MenuItemProps } from \"./Menu.types\";\n\nexport function MenuItem({\n children,\n href,\n as: As,\n icon,\n active = false,\n disabled = false,\n badge,\n onClick,\n className,\n ...rest\n}: MenuItemProps) {\n const { orientation } = useMenu();\n const isVertical = orientation === \"vertical\";\n\n // See NavigableProps: link mode engages on `href` OR `as`, and `onClick`\n // survives into it rather than being dropped.\n const isLink = Boolean(href || As);\n const Tag = isLink ? ((As ?? \"a\") as ElementType) : \"button\";\n const tagProps = isLink\n ? { ...(href ? { href } : {}), onClick }\n : { type: \"button\" as const, onClick };\n\n return (\n <Tag\n {...tagProps}\n {...rest}\n data-react-fancy-menu-item=\"\"\n data-active={active || undefined}\n aria-current={active ? \"page\" : undefined}\n aria-disabled={disabled || undefined}\n className={cn(\n \"flex items-center gap-2 rounded-md text-sm font-medium transition-colors\",\n \"outline-none focus-visible:ring-2 focus-visible:ring-blue-500\",\n isVertical ? \"w-full px-3 py-2\" : \"px-3 py-2\",\n active\n ? \"bg-zinc-100 text-zinc-900 dark:bg-zinc-800 dark:text-zinc-100\"\n : \"text-zinc-600 hover:bg-zinc-50 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800/50 dark:hover:text-zinc-100\",\n disabled && \"pointer-events-none opacity-50\",\n className,\n )}\n >\n {icon && <span className=\"flex h-5 w-5 shrink-0 items-center justify-center\">{icon}</span>}\n <span className=\"flex-1 truncate text-left\">{children}</span>\n {badge && <span className=\"shrink-0\">{badge}</span>}\n </Tag>\n );\n}\n\nMenuItem.displayName = \"MenuItem\";\n","import { useState } from \"react\";\nimport { ChevronDown } from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport { useMenu } from \"./Menu.context\";\nimport type { MenuSubmenuProps } from \"./Menu.types\";\n\nexport function MenuSubmenu({\n children,\n label,\n icon,\n defaultOpen = false,\n className,\n}: MenuSubmenuProps) {\n const [open, setOpen] = useState(defaultOpen);\n const { orientation } = useMenu();\n const isVertical = orientation === \"vertical\";\n\n if (!isVertical) {\n // Horizontal submenus use a hover-based dropdown\n return (\n <div\n data-react-fancy-menu-submenu=\"\"\n className={cn(\"group relative\", className)}\n >\n <button\n type=\"button\"\n className={cn(\n \"flex items-center gap-2 rounded-md px-3 py-2 text-sm font-medium transition-colors\",\n \"text-zinc-600 hover:bg-zinc-50 hover:text-zinc-900\",\n \"dark:text-zinc-400 dark:hover:bg-zinc-800/50 dark:hover:text-zinc-100\",\n )}\n >\n {icon && <span className=\"flex h-5 w-5 shrink-0 items-center justify-center\">{icon}</span>}\n <span>{label}</span>\n <ChevronDown className=\"h-3.5 w-3.5 opacity-60\" />\n </button>\n <div\n className={cn(\n \"invisible absolute left-0 top-full z-50 min-w-[180px] pt-1 opacity-0 transition-all\",\n \"group-hover:visible group-hover:opacity-100\",\n )}\n >\n <div className=\"rounded-lg border border-zinc-200 bg-white py-1 shadow-lg dark:border-zinc-700 dark:bg-zinc-900\">\n {children}\n </div>\n </div>\n </div>\n );\n }\n\n // Vertical submenus use accordion-style expand/collapse\n return (\n <div data-react-fancy-menu-submenu=\"\" className={className}>\n <button\n type=\"button\"\n onClick={() => setOpen((v) => !v)}\n className={cn(\n \"flex w-full items-center gap-2 rounded-md px-3 py-2 text-sm font-medium transition-colors\",\n \"text-zinc-600 hover:bg-zinc-50 hover:text-zinc-900\",\n \"dark:text-zinc-400 dark:hover:bg-zinc-800/50 dark:hover:text-zinc-100\",\n )}\n >\n {icon && <span className=\"flex h-5 w-5 shrink-0 items-center justify-center\">{icon}</span>}\n <span className=\"flex-1 text-left\">{label}</span>\n <ChevronDown\n className={cn(\n \"h-3.5 w-3.5 opacity-60 transition-transform duration-200\",\n open && \"rotate-180\",\n )}\n />\n </button>\n <div\n className={cn(\n \"grid transition-[grid-template-rows] duration-200\",\n open ? \"grid-rows-[1fr]\" : \"grid-rows-[0fr]\",\n )}\n >\n <div className=\"overflow-hidden\">\n <div className=\"ml-4 border-l border-zinc-200 pl-2 pt-1 dark:border-zinc-700\">\n {children}\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nMenuSubmenu.displayName = \"MenuSubmenu\";\n","import { cn } from \"../../utils/cn\";\nimport type { MenuGroupProps } from \"./Menu.types\";\n\nexport function MenuGroup({ children, label, className }: MenuGroupProps) {\n return (\n <div data-react-fancy-menu-group=\"\" className={cn(\"py-1\", className)}>\n {label && (\n <p className=\"mb-1 px-3 text-xs font-semibold uppercase tracking-wider text-zinc-400 dark:text-zinc-500\">\n {label}\n </p>\n )}\n {children}\n </div>\n );\n}\n\nMenuGroup.displayName = \"MenuGroup\";\n","import { cn } from \"../../utils/cn\";\nimport { MenuContext } from \"./Menu.context\";\nimport { MenuItem } from \"./MenuItem\";\nimport { MenuSubmenu } from \"./MenuSubmenu\";\nimport { MenuGroup } from \"./MenuGroup\";\nimport type { MenuProps } from \"./Menu.types\";\n\nfunction MenuRoot({ children, orientation = \"vertical\", className }: MenuProps) {\n const isVertical = orientation === \"vertical\";\n\n return (\n <MenuContext.Provider value={{ orientation }}>\n <nav\n data-react-fancy-menu=\"\"\n data-orientation={orientation}\n className={cn(\n \"flex gap-0.5\",\n isVertical ? \"flex-col\" : \"flex-row items-center\",\n className,\n )}\n >\n {children}\n </nav>\n </MenuContext.Provider>\n );\n}\n\nexport const Menu = Object.assign(MenuRoot, {\n Item: MenuItem,\n Submenu: MenuSubmenu,\n Group: MenuGroup,\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/Menu/Menu.context.ts","../src/components/Menu/MenuItem.tsx","../src/components/Menu/MenuSubmenu.tsx","../src/components/Menu/MenuGroup.tsx","../src/components/Menu/Menu.tsx"],"names":["jsxs","jsx"],"mappings":"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","file":"chunk-RA2VOQ46.js","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { MenuContextValue } from \"./Menu.types\";\n\nexport const MenuContext = createContext<MenuContextValue | null>(null);\n\nexport function useMenu(): MenuContextValue {\n const ctx = useContext(MenuContext);\n if (!ctx) {\n throw new Error(\"useMenu must be used within a <Menu> component\");\n }\n return ctx;\n}\n","import type { ElementType } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useMenu } from \"./Menu.context\";\nimport type { MenuItemProps } from \"./Menu.types\";\n\nexport function MenuItem({\n children,\n href,\n as: As,\n icon,\n active = false,\n disabled = false,\n badge,\n onClick,\n className,\n ...rest\n}: MenuItemProps) {\n const { orientation } = useMenu();\n const isVertical = orientation === \"vertical\";\n\n // See NavigableProps: link mode engages on `href` OR `as`, and `onClick`\n // survives into it rather than being dropped.\n const isLink = Boolean(href || As);\n const Tag = isLink ? ((As ?? \"a\") as ElementType) : \"button\";\n const tagProps = isLink\n ? { ...(href ? { href } : {}), onClick }\n : { type: \"button\" as const, onClick };\n\n return (\n <Tag\n {...tagProps}\n {...rest}\n data-react-fancy-menu-item=\"\"\n data-active={active || undefined}\n aria-current={active ? \"page\" : undefined}\n aria-disabled={disabled || undefined}\n className={cn(\n \"flex items-center gap-2 rounded-md text-sm font-medium transition-colors\",\n \"outline-none focus-visible:ring-2 focus-visible:ring-blue-500\",\n isVertical ? \"w-full px-3 py-2\" : \"px-3 py-2\",\n active\n ? \"bg-zinc-100 text-zinc-900 dark:bg-zinc-800 dark:text-zinc-100\"\n : \"text-zinc-600 hover:bg-zinc-50 hover:text-zinc-900 dark:text-zinc-400 dark:hover:bg-zinc-800/50 dark:hover:text-zinc-100\",\n disabled && \"pointer-events-none opacity-50\",\n className,\n )}\n >\n {icon && <span className=\"flex h-5 w-5 shrink-0 items-center justify-center\">{icon}</span>}\n <span className=\"flex-1 truncate text-left\">{children}</span>\n {badge && <span className=\"shrink-0\">{badge}</span>}\n </Tag>\n );\n}\n\nMenuItem.displayName = \"MenuItem\";\n","import { useState } from \"react\";\nimport { ChevronDown } from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport { useMenu } from \"./Menu.context\";\nimport type { MenuSubmenuProps } from \"./Menu.types\";\n\nexport function MenuSubmenu({\n children,\n label,\n icon,\n defaultOpen = false,\n className,\n}: MenuSubmenuProps) {\n const [open, setOpen] = useState(defaultOpen);\n const { orientation } = useMenu();\n const isVertical = orientation === \"vertical\";\n\n if (!isVertical) {\n // Horizontal submenus use a hover-based dropdown\n return (\n <div\n data-react-fancy-menu-submenu=\"\"\n className={cn(\"group relative\", className)}\n >\n <button\n type=\"button\"\n className={cn(\n \"flex items-center gap-2 rounded-md px-3 py-2 text-sm font-medium transition-colors\",\n \"text-zinc-600 hover:bg-zinc-50 hover:text-zinc-900\",\n \"dark:text-zinc-400 dark:hover:bg-zinc-800/50 dark:hover:text-zinc-100\",\n )}\n >\n {icon && <span className=\"flex h-5 w-5 shrink-0 items-center justify-center\">{icon}</span>}\n <span>{label}</span>\n <ChevronDown className=\"h-3.5 w-3.5 opacity-60\" />\n </button>\n <div\n className={cn(\n \"invisible absolute left-0 top-full z-50 min-w-[180px] pt-1 opacity-0 transition-all\",\n \"group-hover:visible group-hover:opacity-100\",\n )}\n >\n <div className=\"rounded-lg border border-zinc-200 bg-white py-1 shadow-lg dark:border-zinc-700 dark:bg-zinc-900\">\n {children}\n </div>\n </div>\n </div>\n );\n }\n\n // Vertical submenus use accordion-style expand/collapse\n return (\n <div data-react-fancy-menu-submenu=\"\" className={className}>\n <button\n type=\"button\"\n onClick={() => setOpen((v) => !v)}\n className={cn(\n \"flex w-full items-center gap-2 rounded-md px-3 py-2 text-sm font-medium transition-colors\",\n \"text-zinc-600 hover:bg-zinc-50 hover:text-zinc-900\",\n \"dark:text-zinc-400 dark:hover:bg-zinc-800/50 dark:hover:text-zinc-100\",\n )}\n >\n {icon && <span className=\"flex h-5 w-5 shrink-0 items-center justify-center\">{icon}</span>}\n <span className=\"flex-1 text-left\">{label}</span>\n <ChevronDown\n className={cn(\n \"h-3.5 w-3.5 opacity-60 transition-transform duration-200\",\n open && \"rotate-180\",\n )}\n />\n </button>\n <div\n className={cn(\n \"grid transition-[grid-template-rows] duration-200\",\n open ? \"grid-rows-[1fr]\" : \"grid-rows-[0fr]\",\n )}\n >\n <div className=\"overflow-hidden\">\n <div className=\"ml-4 border-l border-zinc-200 pl-2 pt-1 dark:border-zinc-700\">\n {children}\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nMenuSubmenu.displayName = \"MenuSubmenu\";\n","import { cn } from \"../../utils/cn\";\nimport type { MenuGroupProps } from \"./Menu.types\";\n\nexport function MenuGroup({ children, label, className }: MenuGroupProps) {\n return (\n <div data-react-fancy-menu-group=\"\" className={cn(\"py-1\", className)}>\n {label && (\n <p className=\"mb-1 px-3 text-xs font-semibold uppercase tracking-wider text-zinc-400 dark:text-zinc-500\">\n {label}\n </p>\n )}\n {children}\n </div>\n );\n}\n\nMenuGroup.displayName = \"MenuGroup\";\n","import { cn } from \"../../utils/cn\";\nimport { MenuContext } from \"./Menu.context\";\nimport { MenuItem } from \"./MenuItem\";\nimport { MenuSubmenu } from \"./MenuSubmenu\";\nimport { MenuGroup } from \"./MenuGroup\";\nimport type { MenuProps } from \"./Menu.types\";\n\nfunction MenuRoot({ children, orientation = \"vertical\", className }: MenuProps) {\n const isVertical = orientation === \"vertical\";\n\n return (\n <MenuContext.Provider value={{ orientation }}>\n <nav\n data-react-fancy-menu=\"\"\n data-orientation={orientation}\n className={cn(\n \"flex gap-0.5\",\n isVertical ? \"flex-col\" : \"flex-row items-center\",\n className,\n )}\n >\n {children}\n </nav>\n </MenuContext.Provider>\n );\n}\n\nexport const Menu = Object.assign(MenuRoot, {\n Item: MenuItem,\n Submenu: MenuSubmenu,\n Group: MenuGroup,\n});\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useControllableState } from './chunk-6FQGMVF2.js';
|
|
2
|
-
import { cn } from './chunk-
|
|
2
|
+
import { cn } from './chunk-MMW2JGKZ.js';
|
|
3
3
|
import { createContext, forwardRef, Children, useRef, useState, useEffect, isValidElement, useCallback, useMemo, useContext } from 'react';
|
|
4
4
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
5
5
|
|
|
@@ -324,5 +324,5 @@ var Carousel = Object.assign(CarouselRoot, {
|
|
|
324
324
|
});
|
|
325
325
|
|
|
326
326
|
export { Carousel, CarouselControls, CarouselPanels, CarouselSlide, CarouselSteps, useCarousel };
|
|
327
|
-
//# sourceMappingURL=chunk-
|
|
328
|
-
//# sourceMappingURL=chunk-
|
|
327
|
+
//# sourceMappingURL=chunk-RFLPFQFF.js.map
|
|
328
|
+
//# sourceMappingURL=chunk-RFLPFQFF.js.map
|