@particle-academy/react-fancy 6.8.0 → 6.9.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/CHANGELOG.md +32 -0
- package/dist/{Card-CuRZivBz.d.cts → Card-D0sp2T1V.d.cts} +6 -1
- package/dist/{Card-CuRZivBz.d.ts → Card-D0sp2T1V.d.ts} +6 -1
- package/dist/accordion-panel.cjs +7 -7
- package/dist/accordion-panel.js +1 -1
- package/dist/accordion.cjs +3 -3
- package/dist/accordion.js +1 -1
- package/dist/autocomplete.cjs +4 -3
- package/dist/autocomplete.js +3 -2
- package/dist/avatar.cjs +2 -2
- package/dist/avatar.js +1 -1
- package/dist/breadcrumbs.cjs +2 -2
- package/dist/breadcrumbs.js +1 -1
- package/dist/button.cjs +3 -3
- package/dist/button.d.cts +1 -1
- package/dist/button.d.ts +1 -1
- package/dist/button.js +1 -1
- package/dist/calendar.cjs +2 -2
- package/dist/calendar.js +1 -1
- package/dist/callout.cjs +2 -2
- package/dist/callout.js +1 -1
- package/dist/card.cjs +7 -7
- package/dist/card.d.cts +2 -2
- package/dist/card.d.ts +2 -2
- package/dist/card.js +1 -1
- package/dist/carousel.cjs +7 -7
- package/dist/carousel.js +1 -1
- package/dist/chart.cjs +2 -2
- package/dist/chart.js +1 -1
- package/dist/chat-drawer.cjs +2 -2
- package/dist/chat-drawer.js +1 -1
- package/dist/chat-thread.cjs +7 -7
- package/dist/chat-thread.js +5 -5
- 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-B4YV2V7G.cjs → chunk-2DX3PNXU.cjs} +3 -3
- package/dist/{chunk-B4YV2V7G.cjs.map → chunk-2DX3PNXU.cjs.map} +1 -1
- package/dist/{chunk-KPRSRWNM.js → chunk-2I7VNCBZ.js} +3 -3
- package/dist/{chunk-KPRSRWNM.js.map → chunk-2I7VNCBZ.js.map} +1 -1
- package/dist/{chunk-WMANILKC.cjs → chunk-2UYQ34RJ.cjs} +7 -7
- package/dist/chunk-2UYQ34RJ.cjs.map +1 -0
- package/dist/chunk-36IC3NDN.cjs +21 -0
- package/dist/chunk-36IC3NDN.cjs.map +1 -0
- package/dist/{chunk-LFC2DL6H.cjs → chunk-3BBEVHSP.cjs} +14 -9
- package/dist/chunk-3BBEVHSP.cjs.map +1 -0
- package/dist/{chunk-2O5UXH5R.cjs → chunk-3EZ6UPXS.cjs} +10 -10
- package/dist/chunk-3EZ6UPXS.cjs.map +1 -0
- package/dist/{chunk-XBFTO64U.cjs → chunk-3KJN3GTB.cjs} +4 -4
- package/dist/{chunk-XBFTO64U.cjs.map → chunk-3KJN3GTB.cjs.map} +1 -1
- package/dist/{chunk-37D5PYEF.js → chunk-3O3ZWWLG.js} +17 -4
- package/dist/chunk-3O3ZWWLG.js.map +1 -0
- package/dist/{chunk-5PHPJL7Z.js → chunk-4EQ336PQ.js} +4 -4
- package/dist/{chunk-5PHPJL7Z.js.map → chunk-4EQ336PQ.js.map} +1 -1
- package/dist/{chunk-EENHSMV2.js → chunk-4L3MGQAR.js} +6 -6
- package/dist/{chunk-EENHSMV2.js.map → chunk-4L3MGQAR.js.map} +1 -1
- package/dist/{chunk-QGY5FPVM.js → chunk-54NB3T3Q.js} +6 -4
- package/dist/chunk-54NB3T3Q.js.map +1 -0
- package/dist/{chunk-FRWOWDGX.js → chunk-5FA6V7JF.js} +3 -3
- package/dist/{chunk-FRWOWDGX.js.map → chunk-5FA6V7JF.js.map} +1 -1
- package/dist/{chunk-UUEAFG6V.js → chunk-5NJF7SQX.js} +6 -6
- package/dist/{chunk-UUEAFG6V.js.map → chunk-5NJF7SQX.js.map} +1 -1
- package/dist/{chunk-ZGDOWJKL.cjs → chunk-5NTFXQ4K.cjs} +6 -6
- package/dist/{chunk-ZGDOWJKL.cjs.map → chunk-5NTFXQ4K.cjs.map} +1 -1
- package/dist/{chunk-CQ7QXZLR.cjs → chunk-5SVZX6WF.cjs} +4 -4
- package/dist/chunk-5SVZX6WF.cjs.map +1 -0
- package/dist/{chunk-JY7HPFOE.cjs → chunk-6B2GMKE4.cjs} +5 -5
- package/dist/{chunk-JY7HPFOE.cjs.map → chunk-6B2GMKE4.cjs.map} +1 -1
- package/dist/{chunk-GSMD5NK5.js → chunk-6BCXGP2T.js} +7 -7
- package/dist/{chunk-GSMD5NK5.js.map → chunk-6BCXGP2T.js.map} +1 -1
- package/dist/{chunk-CVDL6C2O.cjs → chunk-6EPM5JG7.cjs} +3 -3
- package/dist/{chunk-CVDL6C2O.cjs.map → chunk-6EPM5JG7.cjs.map} +1 -1
- package/dist/{chunk-FVQO75KY.cjs → chunk-6GOPFKGC.cjs} +10 -4
- package/dist/chunk-6GOPFKGC.cjs.map +1 -0
- package/dist/{chunk-QTS4Q2NK.js → chunk-6RXEWM3V.js} +4 -3
- package/dist/chunk-6RXEWM3V.js.map +1 -0
- package/dist/{chunk-TLRFXSPA.cjs → chunk-73REG7KM.cjs} +13 -13
- package/dist/{chunk-TLRFXSPA.cjs.map → chunk-73REG7KM.cjs.map} +1 -1
- package/dist/{chunk-MI57NAKF.js → chunk-7B3Z4NVM.js} +6 -5
- package/dist/chunk-7B3Z4NVM.js.map +1 -0
- package/dist/{chunk-J2BWXCES.js → chunk-7GRIO5AZ.js} +3 -3
- package/dist/{chunk-J2BWXCES.js.map → chunk-7GRIO5AZ.js.map} +1 -1
- package/dist/{chunk-V5JTTLJP.cjs → chunk-7K2C744H.cjs} +3 -3
- package/dist/{chunk-V5JTTLJP.cjs.map → chunk-7K2C744H.cjs.map} +1 -1
- package/dist/{chunk-AJPYGRLA.cjs → chunk-7NRG77U5.cjs} +12 -4
- package/dist/chunk-7NRG77U5.cjs.map +1 -0
- package/dist/{chunk-GDF6XTHC.js → chunk-7OUBFO4D.js} +7 -5
- package/dist/chunk-7OUBFO4D.js.map +1 -0
- package/dist/{chunk-6H7ZN23X.cjs → chunk-7PK3OUKR.cjs} +6 -6
- package/dist/{chunk-6H7ZN23X.cjs.map → chunk-7PK3OUKR.cjs.map} +1 -1
- package/dist/{chunk-EUVWYDFN.js → chunk-AE6ICNJR.js} +14 -9
- package/dist/chunk-AE6ICNJR.js.map +1 -0
- package/dist/{chunk-YJXP6AOL.cjs → chunk-AF33UCTN.cjs} +4 -4
- package/dist/{chunk-YJXP6AOL.cjs.map → chunk-AF33UCTN.cjs.map} +1 -1
- package/dist/{chunk-PM5I5ZHK.cjs → chunk-AFFR7HHZ.cjs} +8 -7
- package/dist/chunk-AFFR7HHZ.cjs.map +1 -0
- package/dist/{chunk-F4OYQ2XZ.js → chunk-AR5DLM4K.js} +9 -6
- package/dist/chunk-AR5DLM4K.js.map +1 -0
- package/dist/{chunk-DJB3N4G3.cjs → chunk-AVGZ4PPC.cjs} +9 -9
- package/dist/{chunk-DJB3N4G3.cjs.map → chunk-AVGZ4PPC.cjs.map} +1 -1
- package/dist/{chunk-RANTYGKW.js → chunk-AXW55PQG.js} +3 -3
- package/dist/chunk-AXW55PQG.js.map +1 -0
- package/dist/{chunk-OASSZI6M.cjs → chunk-AZ5DWOQY.cjs} +5 -4
- package/dist/chunk-AZ5DWOQY.cjs.map +1 -0
- package/dist/{chunk-NSJBVV7R.js → chunk-BPTCMI3E.js} +21 -10
- package/dist/chunk-BPTCMI3E.js.map +1 -0
- package/dist/{chunk-PDVU2PXR.js → chunk-BQENLOEV.js} +10 -10
- package/dist/chunk-BQENLOEV.js.map +1 -0
- package/dist/{chunk-25HRO7HQ.cjs → chunk-BYMOPR7P.cjs} +7 -7
- package/dist/chunk-BYMOPR7P.cjs.map +1 -0
- package/dist/{chunk-FKZB27OM.cjs → chunk-C6EVRWXZ.cjs} +11 -8
- package/dist/chunk-C6EVRWXZ.cjs.map +1 -0
- package/dist/{chunk-GTS3QA7M.js → chunk-CO2NEUFK.js} +5 -5
- package/dist/chunk-CO2NEUFK.js.map +1 -0
- package/dist/{chunk-ESCIXKFT.js → chunk-D6NISIKV.js} +17 -7
- package/dist/chunk-D6NISIKV.js.map +1 -0
- package/dist/{chunk-MRZXTL46.cjs → chunk-DFROB5TW.cjs} +20 -20
- package/dist/{chunk-MRZXTL46.cjs.map → chunk-DFROB5TW.cjs.map} +1 -1
- package/dist/{chunk-KFA7B6WP.cjs → chunk-DPPDZOMY.cjs} +17 -7
- package/dist/chunk-DPPDZOMY.cjs.map +1 -0
- package/dist/{chunk-BXPLERIJ.js → chunk-DW2PHLOA.js} +5 -4
- package/dist/chunk-DW2PHLOA.js.map +1 -0
- package/dist/{chunk-BYO5RUDE.cjs → chunk-DXLPBLNC.cjs} +6 -5
- package/dist/chunk-DXLPBLNC.cjs.map +1 -0
- package/dist/{chunk-5WQ6FPSP.js → chunk-E2AEU5SP.js} +4 -4
- package/dist/{chunk-5WQ6FPSP.js.map → chunk-E2AEU5SP.js.map} +1 -1
- package/dist/{chunk-3QCAOD2W.cjs → chunk-EC4ZYZNK.cjs} +3 -3
- package/dist/{chunk-3QCAOD2W.cjs.map → chunk-EC4ZYZNK.cjs.map} +1 -1
- package/dist/{chunk-KXYMMNNV.js → chunk-EDIX6EXQ.js} +20 -20
- package/dist/{chunk-KXYMMNNV.js.map → chunk-EDIX6EXQ.js.map} +1 -1
- package/dist/{chunk-KOAMRCSC.cjs → chunk-ETUDUDSL.cjs} +14 -11
- package/dist/chunk-ETUDUDSL.cjs.map +1 -0
- package/dist/{chunk-LY3RQB3H.js → chunk-F3U4AVGF.js} +3 -3
- package/dist/{chunk-LY3RQB3H.js.map → chunk-F3U4AVGF.js.map} +1 -1
- package/dist/{chunk-CNWTYRZC.cjs → chunk-FF5G3E76.cjs} +4 -4
- package/dist/{chunk-CNWTYRZC.cjs.map → chunk-FF5G3E76.cjs.map} +1 -1
- package/dist/{chunk-WNWEC5OU.cjs → chunk-FKHYJ5IC.cjs} +3 -3
- package/dist/{chunk-WNWEC5OU.cjs.map → chunk-FKHYJ5IC.cjs.map} +1 -1
- package/dist/{chunk-QP6VNKLW.cjs → chunk-FNPII6TF.cjs} +9 -5
- package/dist/chunk-FNPII6TF.cjs.map +1 -0
- package/dist/{chunk-JY2RC6I4.js → chunk-FQCLJZZS.js} +13 -10
- package/dist/chunk-FQCLJZZS.js.map +1 -0
- package/dist/{chunk-EQ7G5F6K.js → chunk-FRUHEDZN.js} +3 -3
- package/dist/{chunk-EQ7G5F6K.js.map → chunk-FRUHEDZN.js.map} +1 -1
- package/dist/{chunk-BJL3VDRK.cjs → chunk-FY2WDVKF.cjs} +3 -3
- package/dist/{chunk-BJL3VDRK.cjs.map → chunk-FY2WDVKF.cjs.map} +1 -1
- package/dist/{chunk-SKMORSBO.cjs → chunk-FZQWFDUV.cjs} +5 -5
- package/dist/chunk-FZQWFDUV.cjs.map +1 -0
- package/dist/{chunk-HNJXBMHI.cjs → chunk-G5MDMQVQ.cjs} +40 -39
- package/dist/chunk-G5MDMQVQ.cjs.map +1 -0
- package/dist/{chunk-4DL2U23D.cjs → chunk-GE2ZGE3A.cjs} +21 -13
- package/dist/chunk-GE2ZGE3A.cjs.map +1 -0
- package/dist/{chunk-THMFLRDW.cjs → chunk-GE6TSA3M.cjs} +17 -17
- package/dist/{chunk-THMFLRDW.cjs.map → chunk-GE6TSA3M.cjs.map} +1 -1
- package/dist/{chunk-MQ6VGG62.js → chunk-GJWNZMJT.js} +14 -11
- package/dist/chunk-GJWNZMJT.js.map +1 -0
- package/dist/{chunk-5TP642UT.js → chunk-GODJVIIO.js} +12 -11
- package/dist/chunk-GODJVIIO.js.map +1 -0
- package/dist/{chunk-PIG3UTHU.js → chunk-GZSRKBYI.js} +3 -3
- package/dist/{chunk-PIG3UTHU.js.map → chunk-GZSRKBYI.js.map} +1 -1
- package/dist/{chunk-FR4RHVPR.js → chunk-H7IQVCTX.js} +6 -4
- package/dist/chunk-H7IQVCTX.js.map +1 -0
- package/dist/{chunk-KOTUFZJ6.cjs → chunk-H7OTLGRD.cjs} +14 -11
- package/dist/chunk-H7OTLGRD.cjs.map +1 -0
- package/dist/{chunk-K5MQZTDW.cjs → chunk-HKLBCA5X.cjs} +4 -4
- package/dist/{chunk-K5MQZTDW.cjs.map → chunk-HKLBCA5X.cjs.map} +1 -1
- package/dist/{chunk-5QKQXM5V.cjs → chunk-HYU46SOE.cjs} +5 -5
- package/dist/{chunk-5QKQXM5V.cjs.map → chunk-HYU46SOE.cjs.map} +1 -1
- package/dist/{chunk-X2A3NAJW.js → chunk-I65KXHYL.js} +4 -4
- package/dist/chunk-I65KXHYL.js.map +1 -0
- package/dist/{chunk-USWQAMI3.js → chunk-IF6EITB5.js} +3 -3
- package/dist/{chunk-USWQAMI3.js.map → chunk-IF6EITB5.js.map} +1 -1
- package/dist/{chunk-DXZCKDYS.js → chunk-IG2UDCBA.js} +9 -9
- package/dist/chunk-IG2UDCBA.js.map +1 -0
- package/dist/{chunk-YQZB5Z7C.cjs → chunk-INC35VEE.cjs} +3 -2
- package/dist/chunk-INC35VEE.cjs.map +1 -0
- package/dist/{chunk-AQ4DZT4Y.cjs → chunk-ISAHWGMD.cjs} +6 -6
- package/dist/{chunk-AQ4DZT4Y.cjs.map → chunk-ISAHWGMD.cjs.map} +1 -1
- package/dist/{chunk-PJNUGSKI.js → chunk-IYG436ZY.js} +26 -25
- package/dist/chunk-IYG436ZY.js.map +1 -0
- package/dist/{chunk-Z4UXLQSK.cjs → chunk-JDFJK5GO.cjs} +16 -16
- package/dist/chunk-JDFJK5GO.cjs.map +1 -0
- package/dist/{chunk-MAZEX4EZ.cjs → chunk-JQIFCWNZ.cjs} +13 -13
- package/dist/{chunk-MAZEX4EZ.cjs.map → chunk-JQIFCWNZ.cjs.map} +1 -1
- package/dist/{chunk-MKGWHSNV.cjs → chunk-JV2HEOCB.cjs} +5 -4
- package/dist/chunk-JV2HEOCB.cjs.map +1 -0
- package/dist/{chunk-GDH43QH6.js → chunk-KAKKZDCE.js} +6 -6
- package/dist/{chunk-GDH43QH6.js.map → chunk-KAKKZDCE.js.map} +1 -1
- package/dist/{chunk-DJYG7DXS.js → chunk-KDRBUF5S.js} +4 -4
- package/dist/chunk-KDRBUF5S.js.map +1 -0
- package/dist/{chunk-ZVDW2VX5.cjs → chunk-KGSL6SVX.cjs} +3 -3
- package/dist/chunk-KGSL6SVX.cjs.map +1 -0
- package/dist/{chunk-YAPGHVBZ.js → chunk-KRECSPD3.js} +4 -4
- package/dist/{chunk-YAPGHVBZ.js.map → chunk-KRECSPD3.js.map} +1 -1
- package/dist/{chunk-NPSKZ7ZB.cjs → chunk-L5NDZEL6.cjs} +12 -12
- package/dist/{chunk-NPSKZ7ZB.cjs.map → chunk-L5NDZEL6.cjs.map} +1 -1
- package/dist/{chunk-UE3QO7R3.js → chunk-LAQT5FFV.js} +3 -3
- package/dist/{chunk-UE3QO7R3.js.map → chunk-LAQT5FFV.js.map} +1 -1
- package/dist/{chunk-YH75G6SP.cjs → chunk-LHHELLMT.cjs} +3 -3
- package/dist/{chunk-YH75G6SP.cjs.map → chunk-LHHELLMT.cjs.map} +1 -1
- package/dist/{chunk-UK6BGM74.cjs → chunk-LREJ7AV2.cjs} +17 -4
- package/dist/chunk-LREJ7AV2.cjs.map +1 -0
- package/dist/{chunk-Y3QAEF2P.cjs → chunk-LVNCNMKD.cjs} +9 -7
- package/dist/chunk-LVNCNMKD.cjs.map +1 -0
- package/dist/{chunk-UZCR7DK5.js → chunk-LXEOBSEZ.js} +3 -3
- package/dist/{chunk-UZCR7DK5.js.map → chunk-LXEOBSEZ.js.map} +1 -1
- package/dist/{chunk-HLI6RB5V.cjs → chunk-M5ER3Y5I.cjs} +32 -31
- package/dist/chunk-M5ER3Y5I.cjs.map +1 -0
- package/dist/{chunk-CEFK54WP.cjs → chunk-MDAI54AG.cjs} +7 -5
- package/dist/chunk-MDAI54AG.cjs.map +1 -0
- package/dist/{chunk-WE5WGVVX.js → chunk-MKDTXMCE.js} +3 -3
- package/dist/{chunk-WE5WGVVX.js.map → chunk-MKDTXMCE.js.map} +1 -1
- package/dist/{chunk-SXXDTW7S.js → chunk-NETUI353.js} +10 -4
- package/dist/chunk-NETUI353.js.map +1 -0
- package/dist/{chunk-XHUV3VSM.cjs → chunk-NIFHAFKK.cjs} +3 -3
- package/dist/{chunk-XHUV3VSM.cjs.map → chunk-NIFHAFKK.cjs.map} +1 -1
- package/dist/{chunk-LKN7FYW6.js → chunk-NW2LQRUP.js} +4 -4
- package/dist/chunk-NW2LQRUP.js.map +1 -0
- package/dist/{chunk-ONHT2PDW.cjs → chunk-NWP5EGSR.cjs} +3 -3
- package/dist/{chunk-ONHT2PDW.cjs.map → chunk-NWP5EGSR.cjs.map} +1 -1
- package/dist/{chunk-RSLZL6VP.js → chunk-OBA2LR4I.js} +3 -3
- package/dist/chunk-OBA2LR4I.js.map +1 -0
- package/dist/{chunk-VSTUGU7W.js → chunk-PIYQPXLT.js} +8 -8
- package/dist/{chunk-VSTUGU7W.js.map → chunk-PIYQPXLT.js.map} +1 -1
- package/dist/{chunk-WX5XYDVN.js → chunk-PZTFGPQJ.js} +3 -3
- package/dist/{chunk-WX5XYDVN.js.map → chunk-PZTFGPQJ.js.map} +1 -1
- package/dist/{chunk-4GPH7HOR.js → chunk-Q4CNEHVN.js} +3 -3
- package/dist/{chunk-4GPH7HOR.js.map → chunk-Q4CNEHVN.js.map} +1 -1
- package/dist/{chunk-I2VAGZXY.cjs → chunk-Q62RDKRA.cjs} +11 -11
- package/dist/{chunk-I2VAGZXY.cjs.map → chunk-Q62RDKRA.cjs.map} +1 -1
- package/dist/{chunk-QF7CD4JH.cjs → chunk-Q7XL37T3.cjs} +5 -5
- package/dist/{chunk-QF7CD4JH.cjs.map → chunk-Q7XL37T3.cjs.map} +1 -1
- package/dist/{chunk-XZOBGKZL.cjs → chunk-QAM6N3VG.cjs} +6 -5
- package/dist/chunk-QAM6N3VG.cjs.map +1 -0
- package/dist/{chunk-BLOX7MRO.js → chunk-QE7KXMUZ.js} +3 -3
- package/dist/{chunk-BLOX7MRO.js.map → chunk-QE7KXMUZ.js.map} +1 -1
- package/dist/{chunk-ZPBKRJMH.js → chunk-QEJBMXRQ.js} +7 -7
- package/dist/chunk-QEJBMXRQ.js.map +1 -0
- package/dist/{chunk-PCNJJVTF.cjs → chunk-QMZK7SRS.cjs} +3 -3
- package/dist/chunk-QMZK7SRS.cjs.map +1 -0
- package/dist/{chunk-TFX4LL7V.js → chunk-QSRYTWQN.js} +3 -2
- package/dist/chunk-QSRYTWQN.js.map +1 -0
- package/dist/{chunk-Z7SQMQTF.cjs → chunk-QU6HZH6V.cjs} +21 -10
- package/dist/chunk-QU6HZH6V.cjs.map +1 -0
- package/dist/{chunk-GR2WKBER.js → chunk-QUZOGRZS.js} +4 -3
- package/dist/chunk-QUZOGRZS.js.map +1 -0
- package/dist/{chunk-WGRLNXNB.js → chunk-R3PCZSBQ.js} +3 -3
- package/dist/{chunk-WGRLNXNB.js.map → chunk-R3PCZSBQ.js.map} +1 -1
- package/dist/{chunk-EZZKHMR4.js → chunk-R6O6SLXK.js} +3 -3
- package/dist/{chunk-EZZKHMR4.js.map → chunk-R6O6SLXK.js.map} +1 -1
- package/dist/{chunk-5EW47IH7.js → chunk-RCTPN5QK.js} +9 -7
- package/dist/chunk-RCTPN5QK.js.map +1 -0
- package/dist/{chunk-JSD6IEBW.js → chunk-RFTDMQ56.js} +3 -3
- package/dist/{chunk-JSD6IEBW.js.map → chunk-RFTDMQ56.js.map} +1 -1
- package/dist/{chunk-6PRXG7L6.js → chunk-RSB2P3JK.js} +4 -4
- package/dist/{chunk-6PRXG7L6.js.map → chunk-RSB2P3JK.js.map} +1 -1
- package/dist/{chunk-2G6TIX5Q.cjs → chunk-RVBA4LEB.cjs} +13 -13
- package/dist/{chunk-2G6TIX5Q.cjs.map → chunk-RVBA4LEB.cjs.map} +1 -1
- package/dist/{chunk-UVUBV4VZ.js → chunk-S2ID4NNQ.js} +6 -6
- package/dist/{chunk-UVUBV4VZ.js.map → chunk-S2ID4NNQ.js.map} +1 -1
- package/dist/{chunk-TMQF2CRN.js → chunk-S4JQPOBR.js} +7 -7
- package/dist/chunk-S4JQPOBR.js.map +1 -0
- package/dist/{chunk-ETNQ4AEQ.cjs → chunk-S6TVSQDT.cjs} +5 -5
- package/dist/{chunk-ETNQ4AEQ.cjs.map → chunk-S6TVSQDT.cjs.map} +1 -1
- package/dist/{chunk-SSCW67KA.cjs → chunk-SD6YAMDH.cjs} +4 -4
- package/dist/chunk-SD6YAMDH.cjs.map +1 -0
- package/dist/{chunk-MLZGGAXQ.js → chunk-SOIGBPK6.js} +21 -13
- package/dist/chunk-SOIGBPK6.js.map +1 -0
- package/dist/{chunk-7QENPLOP.cjs → chunk-TQDZZIOW.cjs} +5 -5
- package/dist/{chunk-7QENPLOP.cjs.map → chunk-TQDZZIOW.cjs.map} +1 -1
- package/dist/{chunk-MPCZUZ4O.cjs → chunk-U4KUW3RK.cjs} +19 -15
- package/dist/chunk-U4KUW3RK.cjs.map +1 -0
- package/dist/{chunk-AZQXPI5S.js → chunk-UBLMYH6C.js} +3 -3
- package/dist/{chunk-AZQXPI5S.js.map → chunk-UBLMYH6C.js.map} +1 -1
- package/dist/{chunk-P53432AK.cjs → chunk-UIBAIWUR.cjs} +4 -4
- package/dist/{chunk-P53432AK.cjs.map → chunk-UIBAIWUR.cjs.map} +1 -1
- package/dist/{chunk-KKYILQTG.cjs → chunk-UORN3Z7R.cjs} +7 -7
- package/dist/{chunk-KKYILQTG.cjs.map → chunk-UORN3Z7R.cjs.map} +1 -1
- package/dist/{chunk-UXYFM2XT.cjs → chunk-UQABXIQV.cjs} +6 -4
- package/dist/chunk-UQABXIQV.cjs.map +1 -0
- package/dist/chunk-US5R36TQ.js +17 -0
- package/dist/chunk-US5R36TQ.js.map +1 -0
- package/dist/{chunk-CS2ZYMYP.js → chunk-UZZJJ3HJ.js} +3 -3
- package/dist/{chunk-CS2ZYMYP.js.map → chunk-UZZJJ3HJ.js.map} +1 -1
- package/dist/{chunk-Y7RGUUTS.cjs → chunk-V3EKI3VV.cjs} +3 -3
- package/dist/{chunk-Y7RGUUTS.cjs.map → chunk-V3EKI3VV.cjs.map} +1 -1
- package/dist/{chunk-U4Y7ZXME.js → chunk-V64XIPYG.js} +6 -6
- package/dist/{chunk-U4Y7ZXME.js.map → chunk-V64XIPYG.js.map} +1 -1
- package/dist/{chunk-RWU2MFUL.js → chunk-VGUAIFGE.js} +5 -4
- package/dist/chunk-VGUAIFGE.js.map +1 -0
- package/dist/{chunk-LIVC3WUU.cjs → chunk-VH34IZ7R.cjs} +3 -3
- package/dist/{chunk-LIVC3WUU.cjs.map → chunk-VH34IZ7R.cjs.map} +1 -1
- package/dist/{chunk-WNUAGRQN.cjs → chunk-VOAC5OKY.cjs} +4 -4
- package/dist/chunk-VOAC5OKY.cjs.map +1 -0
- package/dist/{chunk-H7ELUIF6.cjs → chunk-W53SZTPX.cjs} +10 -10
- package/dist/{chunk-H7ELUIF6.cjs.map → chunk-W53SZTPX.cjs.map} +1 -1
- package/dist/{chunk-4FH2JHUY.js → chunk-WAEOIEDI.js} +5 -5
- package/dist/{chunk-4FH2JHUY.js.map → chunk-WAEOIEDI.js.map} +1 -1
- package/dist/{chunk-ICMLLZKZ.js → chunk-WJE7UX2G.js} +4 -4
- package/dist/{chunk-ICMLLZKZ.js.map → chunk-WJE7UX2G.js.map} +1 -1
- package/dist/{chunk-DTOIO42M.js → chunk-WLRKE4HC.js} +9 -5
- package/dist/chunk-WLRKE4HC.js.map +1 -0
- package/dist/{chunk-7ZCNZUZK.cjs → chunk-WOURDD4U.cjs} +4 -4
- package/dist/{chunk-7ZCNZUZK.cjs.map → chunk-WOURDD4U.cjs.map} +1 -1
- package/dist/{chunk-OTM7RL2L.js → chunk-WSU36HJM.js} +4 -4
- package/dist/{chunk-OTM7RL2L.js.map → chunk-WSU36HJM.js.map} +1 -1
- package/dist/{chunk-TAYJSIOP.js → chunk-X4NXS42J.js} +5 -5
- package/dist/{chunk-TAYJSIOP.js.map → chunk-X4NXS42J.js.map} +1 -1
- package/dist/{chunk-2UTN3EFK.js → chunk-XALAQZCD.js} +5 -5
- package/dist/{chunk-2UTN3EFK.js.map → chunk-XALAQZCD.js.map} +1 -1
- package/dist/{chunk-RZUYCZ5D.cjs → chunk-XCFBMHQD.cjs} +6 -4
- package/dist/chunk-XCFBMHQD.cjs.map +1 -0
- package/dist/{chunk-NZHVDWOM.cjs → chunk-XEI5JG7C.cjs} +3 -3
- package/dist/{chunk-NZHVDWOM.cjs.map → chunk-XEI5JG7C.cjs.map} +1 -1
- package/dist/{chunk-O3F6DYWR.cjs → chunk-XG6J5MOK.cjs} +3 -3
- package/dist/{chunk-O3F6DYWR.cjs.map → chunk-XG6J5MOK.cjs.map} +1 -1
- package/dist/{chunk-J2DI6RMR.cjs → chunk-XGGAAG74.cjs} +14 -11
- package/dist/chunk-XGGAAG74.cjs.map +1 -0
- package/dist/{chunk-GVMWJ4NI.js → chunk-XH24BGEK.js} +6 -6
- package/dist/{chunk-GVMWJ4NI.js.map → chunk-XH24BGEK.js.map} +1 -1
- package/dist/{chunk-3S5ED522.js → chunk-XO4GHRA2.js} +11 -8
- package/dist/chunk-XO4GHRA2.js.map +1 -0
- package/dist/{chunk-O5ORO2RX.cjs → chunk-XQF4HCOV.cjs} +13 -11
- package/dist/chunk-XQF4HCOV.cjs.map +1 -0
- package/dist/{chunk-VZTXUYPM.cjs → chunk-XT4WBBCD.cjs} +20 -20
- package/dist/chunk-XT4WBBCD.cjs.map +1 -0
- package/dist/{chunk-Z44A7NPD.cjs → chunk-YBBBX5H2.cjs} +40 -39
- package/dist/chunk-YBBBX5H2.cjs.map +1 -0
- package/dist/{chunk-IUCYRQ4J.js → chunk-YPYZZLZ5.js} +5 -5
- package/dist/{chunk-IUCYRQ4J.js.map → chunk-YPYZZLZ5.js.map} +1 -1
- package/dist/{chunk-NVXTHTJI.js → chunk-YTWMIVRI.js} +10 -10
- package/dist/chunk-YTWMIVRI.js.map +1 -0
- package/dist/{chunk-WZAKEJDL.js → chunk-YZW7HQXH.js} +13 -11
- package/dist/chunk-YZW7HQXH.js.map +1 -0
- package/dist/{chunk-AYBKPAI2.cjs → chunk-Z5MNYYUJ.cjs} +3 -3
- package/dist/{chunk-AYBKPAI2.cjs.map → chunk-Z5MNYYUJ.cjs.map} +1 -1
- package/dist/{chunk-GOE36IXL.js → chunk-Z6M3UELD.js} +3 -3
- package/dist/{chunk-GOE36IXL.js.map → chunk-Z6M3UELD.js.map} +1 -1
- package/dist/{chunk-PXZRYL5I.js → chunk-ZBXJDQXN.js} +12 -4
- package/dist/chunk-ZBXJDQXN.js.map +1 -0
- package/dist/{chunk-M5SEYDSS.cjs → chunk-ZDHLEHYR.cjs} +6 -6
- package/dist/{chunk-M5SEYDSS.cjs.map → chunk-ZDHLEHYR.cjs.map} +1 -1
- package/dist/{chunk-SCGTO3PX.js → chunk-ZHTK4IPQ.js} +3 -3
- package/dist/{chunk-SCGTO3PX.js.map → chunk-ZHTK4IPQ.js.map} +1 -1
- package/dist/{chunk-QF2FODTG.js → chunk-ZL5QVNKG.js} +10 -6
- package/dist/chunk-ZL5QVNKG.js.map +1 -0
- package/dist/{chunk-6GVOW3UL.js → chunk-ZUJVGHFW.js} +12 -11
- package/dist/chunk-ZUJVGHFW.js.map +1 -0
- package/dist/code-block.cjs +4 -4
- package/dist/code-block.js +3 -3
- package/dist/code-view.cjs +2 -2
- package/dist/code-view.js +1 -1
- package/dist/command.cjs +3 -3
- package/dist/command.js +1 -1
- package/dist/composer.cjs +7 -6
- package/dist/composer.js +5 -4
- package/dist/content-renderer.cjs +6 -6
- package/dist/content-renderer.js +3 -3
- package/dist/context-menu.cjs +4 -3
- package/dist/context-menu.d.cts +2 -0
- package/dist/context-menu.d.ts +2 -0
- package/dist/context-menu.js +2 -1
- package/dist/date-picker.cjs +5 -5
- package/dist/date-picker.js +4 -4
- package/dist/drawer.cjs +3 -3
- package/dist/drawer.d.cts +10 -4
- package/dist/drawer.d.ts +10 -4
- package/dist/drawer.js +1 -1
- package/dist/dropdown.cjs +5 -4
- package/dist/dropdown.js +3 -2
- package/dist/editor.cjs +9 -8
- package/dist/editor.js +7 -6
- package/dist/emoji-select.cjs +2 -2
- package/dist/emoji-select.js +1 -1
- package/dist/eyebrow.cjs +2 -2
- package/dist/eyebrow.js +1 -1
- package/dist/faux-client.cjs +2 -2
- package/dist/faux-client.js +1 -1
- package/dist/field.cjs +3 -3
- package/dist/field.js +2 -2
- package/dist/file-browser.cjs +6 -5
- package/dist/file-browser.js +2 -1
- package/dist/file-upload.cjs +3 -3
- package/dist/file-upload.js +1 -1
- package/dist/image-viewer.cjs +3 -3
- package/dist/image-viewer.js +2 -2
- package/dist/index-list.cjs +2 -2
- package/dist/index-list.js +1 -1
- package/dist/index.cjs +213 -212
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +19 -1
- package/dist/index.d.ts +19 -1
- package/dist/index.js +78 -77
- package/dist/index.js.map +1 -1
- package/dist/input-tag.cjs +7 -6
- package/dist/input-tag.d.cts +6 -2
- package/dist/input-tag.d.ts +6 -2
- package/dist/input-tag.js +2 -1
- package/dist/input.cjs +10 -9
- package/dist/input.js +9 -8
- package/dist/inputs.cjs +32 -31
- package/dist/inputs.js +19 -18
- package/dist/json-editor.cjs +27 -26
- package/dist/json-editor.js +16 -15
- package/dist/magic-wand.cjs +8 -8
- package/dist/magic-wand.js +7 -7
- package/dist/marquee.cjs +2 -2
- package/dist/marquee.js +1 -1
- package/dist/media-viewer.cjs +5 -5
- package/dist/media-viewer.js +4 -4
- package/dist/menu.cjs +3 -3
- package/dist/menu.js +1 -1
- package/dist/mobile-menu.cjs +5 -4
- package/dist/mobile-menu.d.cts +2 -1
- package/dist/mobile-menu.d.ts +2 -1
- package/dist/mobile-menu.js +3 -2
- package/dist/mode.cjs +3 -3
- package/dist/mode.js +2 -2
- package/dist/multi-switch.cjs +6 -5
- package/dist/multi-switch.js +5 -4
- package/dist/number-field.cjs +11 -10
- package/dist/number-field.js +10 -9
- package/dist/otp-input.cjs +3 -2
- package/dist/otp-input.js +2 -1
- package/dist/pagination.cjs +2 -2
- package/dist/pagination.js +1 -1
- package/dist/paste-pills.cjs +17 -16
- package/dist/paste-pills.js +4 -3
- package/dist/pdf-viewer.cjs +3 -3
- package/dist/pdf-viewer.js +2 -2
- package/dist/popover.cjs +5 -4
- package/dist/popover.js +3 -2
- package/dist/profile.cjs +3 -3
- package/dist/profile.js +2 -2
- package/dist/progress.cjs +2 -2
- package/dist/progress.js +1 -1
- package/dist/prompt-input.cjs +10 -9
- package/dist/prompt-input.js +7 -6
- package/dist/qr-code.cjs +8 -8
- package/dist/qr-code.js +2 -2
- package/dist/radio-group.cjs +5 -5
- package/dist/radio-group.js +4 -4
- package/dist/reason-tag.cjs +6 -5
- package/dist/reason-tag.js +5 -4
- package/dist/reorderable-grid.cjs +4 -3
- package/dist/reorderable-grid.js +2 -1
- package/dist/resizable-panels.cjs +3 -2
- package/dist/resizable-panels.js +2 -1
- package/dist/select.cjs +8 -7
- package/dist/select.js +7 -6
- package/dist/separator.cjs +2 -2
- package/dist/separator.js +1 -1
- package/dist/sidebar.cjs +6 -5
- package/dist/sidebar.js +4 -3
- package/dist/slider.cjs +5 -5
- package/dist/slider.js +4 -4
- package/dist/stat-list.cjs +2 -2
- package/dist/stat-list.d.cts +5 -2
- package/dist/stat-list.d.ts +5 -2
- package/dist/stat-list.js +1 -1
- package/dist/stepper.cjs +3 -2
- package/dist/stepper.js +2 -1
- package/dist/styles.css +24 -0
- package/dist/styles.css.map +1 -1
- package/dist/switch.cjs +3 -3
- package/dist/switch.js +2 -2
- package/dist/table.cjs +11 -11
- package/dist/table.js +1 -1
- package/dist/tabs.cjs +4 -3
- package/dist/tabs.js +2 -1
- package/dist/textarea.cjs +6 -6
- package/dist/textarea.js +5 -5
- package/dist/time-grid.cjs +3 -2
- package/dist/time-grid.js +2 -1
- package/dist/time-picker.cjs +2 -2
- package/dist/time-picker.js +1 -1
- package/dist/timeline.cjs +4 -4
- package/dist/timeline.js +1 -1
- package/dist/toast.cjs +4 -3
- package/dist/toast.d.cts +6 -2
- package/dist/toast.d.ts +6 -2
- package/dist/toast.js +2 -1
- package/dist/tooltip.cjs +4 -3
- package/dist/tooltip.js +3 -2
- package/dist/tree-nav.cjs +3 -3
- package/dist/tree-nav.js +1 -1
- package/docs/Dropdown.md +1 -1
- package/docs/InputTag.md +1 -1
- package/docs/MobileMenu.md +2 -2
- package/docs/Popover.md +1 -1
- package/docs/ReorderableGrid.md +2 -0
- package/docs/ResizablePanels.md +2 -0
- package/docs/Toast.md +2 -2
- package/package.json +1 -1
- package/dist/chunk-25HRO7HQ.cjs.map +0 -1
- package/dist/chunk-2O5UXH5R.cjs.map +0 -1
- package/dist/chunk-37D5PYEF.js.map +0 -1
- package/dist/chunk-3S5ED522.js.map +0 -1
- package/dist/chunk-4DL2U23D.cjs.map +0 -1
- package/dist/chunk-5EW47IH7.js.map +0 -1
- package/dist/chunk-5TP642UT.js.map +0 -1
- package/dist/chunk-6GVOW3UL.js.map +0 -1
- package/dist/chunk-AJPYGRLA.cjs.map +0 -1
- package/dist/chunk-BXPLERIJ.js.map +0 -1
- package/dist/chunk-BYO5RUDE.cjs.map +0 -1
- package/dist/chunk-CEFK54WP.cjs.map +0 -1
- package/dist/chunk-CQ7QXZLR.cjs.map +0 -1
- package/dist/chunk-DJYG7DXS.js.map +0 -1
- package/dist/chunk-DTOIO42M.js.map +0 -1
- package/dist/chunk-DXZCKDYS.js.map +0 -1
- package/dist/chunk-ESCIXKFT.js.map +0 -1
- package/dist/chunk-EUVWYDFN.js.map +0 -1
- package/dist/chunk-F4OYQ2XZ.js.map +0 -1
- package/dist/chunk-FKZB27OM.cjs.map +0 -1
- package/dist/chunk-FR4RHVPR.js.map +0 -1
- package/dist/chunk-FVQO75KY.cjs.map +0 -1
- package/dist/chunk-GDF6XTHC.js.map +0 -1
- package/dist/chunk-GR2WKBER.js.map +0 -1
- package/dist/chunk-GTS3QA7M.js.map +0 -1
- package/dist/chunk-HLI6RB5V.cjs.map +0 -1
- package/dist/chunk-HNJXBMHI.cjs.map +0 -1
- package/dist/chunk-J2DI6RMR.cjs.map +0 -1
- package/dist/chunk-JY2RC6I4.js.map +0 -1
- package/dist/chunk-KFA7B6WP.cjs.map +0 -1
- package/dist/chunk-KOAMRCSC.cjs.map +0 -1
- package/dist/chunk-KOTUFZJ6.cjs.map +0 -1
- package/dist/chunk-LFC2DL6H.cjs.map +0 -1
- package/dist/chunk-LKN7FYW6.js.map +0 -1
- package/dist/chunk-MI57NAKF.js.map +0 -1
- package/dist/chunk-MKGWHSNV.cjs.map +0 -1
- package/dist/chunk-MLZGGAXQ.js.map +0 -1
- package/dist/chunk-MPCZUZ4O.cjs.map +0 -1
- package/dist/chunk-MQ6VGG62.js.map +0 -1
- package/dist/chunk-NSJBVV7R.js.map +0 -1
- package/dist/chunk-NVXTHTJI.js.map +0 -1
- package/dist/chunk-O5ORO2RX.cjs.map +0 -1
- package/dist/chunk-OASSZI6M.cjs.map +0 -1
- package/dist/chunk-PCNJJVTF.cjs.map +0 -1
- package/dist/chunk-PDVU2PXR.js.map +0 -1
- package/dist/chunk-PJNUGSKI.js.map +0 -1
- package/dist/chunk-PM5I5ZHK.cjs.map +0 -1
- package/dist/chunk-PXZRYL5I.js.map +0 -1
- package/dist/chunk-QF2FODTG.js.map +0 -1
- package/dist/chunk-QGY5FPVM.js.map +0 -1
- package/dist/chunk-QP6VNKLW.cjs.map +0 -1
- package/dist/chunk-QTS4Q2NK.js.map +0 -1
- package/dist/chunk-RANTYGKW.js.map +0 -1
- package/dist/chunk-RSLZL6VP.js.map +0 -1
- package/dist/chunk-RWU2MFUL.js.map +0 -1
- package/dist/chunk-RZUYCZ5D.cjs.map +0 -1
- package/dist/chunk-SKMORSBO.cjs.map +0 -1
- package/dist/chunk-SSCW67KA.cjs.map +0 -1
- package/dist/chunk-SXXDTW7S.js.map +0 -1
- package/dist/chunk-TFX4LL7V.js.map +0 -1
- package/dist/chunk-TMQF2CRN.js.map +0 -1
- package/dist/chunk-UK6BGM74.cjs.map +0 -1
- package/dist/chunk-UXYFM2XT.cjs.map +0 -1
- package/dist/chunk-VZTXUYPM.cjs.map +0 -1
- package/dist/chunk-WMANILKC.cjs.map +0 -1
- package/dist/chunk-WNUAGRQN.cjs.map +0 -1
- package/dist/chunk-WZAKEJDL.js.map +0 -1
- package/dist/chunk-X2A3NAJW.js.map +0 -1
- package/dist/chunk-XZOBGKZL.cjs.map +0 -1
- package/dist/chunk-Y3QAEF2P.cjs.map +0 -1
- package/dist/chunk-YQZB5Z7C.cjs.map +0 -1
- package/dist/chunk-Z44A7NPD.cjs.map +0 -1
- package/dist/chunk-Z4UXLQSK.cjs.map +0 -1
- package/dist/chunk-Z7SQMQTF.cjs.map +0 -1
- package/dist/chunk-ZPBKRJMH.js.map +0 -1
- package/dist/chunk-ZVDW2VX5.cjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Breadcrumbs/BreadcrumbsItem.tsx","../src/components/Breadcrumbs/BreadcrumbsDropdown.tsx","../src/components/Breadcrumbs/Breadcrumbs.tsx"],"names":["jsx","useState","jsxs","Fragment"],"mappings":"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","file":"chunk-CO2NEUFK.js","sourcesContent":["import type { ElementType } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport type { BreadcrumbsItemProps } from \"./Breadcrumbs.types\";\n\nexport function BreadcrumbsItem({\n children,\n href,\n as: As,\n active = false,\n onClick,\n className,\n ...rest\n}: BreadcrumbsItemProps) {\n const baseClass = cn(\n \"text-sm\",\n active\n ? \"font-medium text-zinc-900 dark:text-white\"\n : \"text-[color:var(--fancy-text-muted,var(--color-zinc-500))] hover:text-[color:var(--fancy-text-soft,var(--color-zinc-700))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))] dark:hover:text-[color:var(--fancy-text-soft-dark,var(--color-zinc-300))]\",\n className,\n );\n\n // The CURRENT crumb stays a <span> even with `as`: it is the page you are on,\n // so a link to it is a link to nowhere, and `aria-current=\"page\"` is the point.\n if ((href || As) && !active) {\n const Link = (As ?? \"a\") as ElementType;\n\n return (\n <Link\n data-react-fancy-breadcrumbs-item=\"\"\n {...(href ? { href } : {})}\n onClick={onClick}\n className={baseClass}\n {...rest}\n >\n {children}\n </Link>\n );\n }\n\n // A crumb that navigates through a callback rather than a URL. Controlled\n // components own their navigation and have no href to give — a repository\n // browser walking directories, a wizard stepping back — and until this\n // existed the only way to make such a crumb clickable was to nest a button\n // inside the span below, which is interactive content inside a non-\n // interactive element.\n if (onClick && !active) {\n return (\n <button\n type=\"button\"\n data-react-fancy-breadcrumbs-item=\"\"\n onClick={onClick}\n className={cn(baseClass, \"cursor-pointer border-0 bg-transparent p-0\")}\n {...rest}\n >\n {children}\n </button>\n );\n }\n\n return (\n <span data-react-fancy-breadcrumbs-item=\"\" className={baseClass} aria-current={active ? \"page\" : undefined} {...rest}>\n {children}\n </span>\n );\n}\n\nBreadcrumbsItem.displayName = \"BreadcrumbsItem\";\n","import { useState, useRef, type ElementType, type ReactNode } from \"react\";\nimport { ChevronDown } from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport { useOutsideClick } from \"../../hooks/use-outside-click\";\nimport { useEscapeKey } from \"../../hooks/use-escape-key\";\n\ninterface BreadcrumbsDropdownItem {\n label: ReactNode;\n href?: string;\n as?: ElementType;\n onClick?: () => void;\n active?: boolean;\n title?: string;\n}\n\ninterface BreadcrumbsDropdownProps {\n items: BreadcrumbsDropdownItem[];\n activeLabel: ReactNode;\n}\n\nexport function BreadcrumbsDropdown({ items, activeLabel }: BreadcrumbsDropdownProps) {\n const [open, setOpen] = useState(false);\n const ref = useRef<HTMLDivElement>(null);\n\n useOutsideClick(ref, () => setOpen(false), open);\n useEscapeKey(() => setOpen(false), open);\n\n return (\n <div ref={ref} data-react-fancy-breadcrumbs-dropdown=\"\" className=\"relative flex md:hidden\">\n <button\n type=\"button\"\n onClick={() => setOpen((v) => !v)}\n className=\"flex items-center gap-1 rounded-lg px-2 py-1 text-sm font-medium text-zinc-900 hover:bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] dark:text-white dark:hover:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]\"\n >\n {activeLabel}\n <ChevronDown size={14} className={cn(\"transition-transform\", open && \"rotate-180\")} />\n </button>\n {open && (\n <div className=\"absolute top-full start-0 z-50 mt-1 min-w-[180px] rounded-lg border border-[color:var(--fancy-border,var(--color-zinc-200))] bg-[color:var(--fancy-surface,var(--color-white))] py-1 shadow-lg dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))] dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))]\">\n {items.map((item, i) => {\n const cls = cn(\n \"block w-full px-3 py-1.5 text-start text-sm\",\n item.active\n ? \"font-medium text-zinc-900 dark:text-white\"\n : \"text-[color:var(--fancy-text-muted,var(--color-zinc-500))] hover:bg-zinc-50 hover:text-[color:var(--fancy-text-soft,var(--color-zinc-700))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))] dark:hover:bg-zinc-800 dark:hover:text-[color:var(--fancy-text-soft-dark,var(--color-zinc-300))]\",\n );\n\n // Mirrors BreadcrumbsItem: href / `as` wins, then onClick, and the\n // active crumb stays inert whatever it carries.\n if ((item.href || item.as) && !item.active) {\n const Link = (item.as ?? \"a\") as ElementType;\n return (\n <Link\n key={i}\n {...(item.href ? { href: item.href } : {})}\n title={item.title}\n className={cls}\n onClick={() => {\n item.onClick?.();\n setOpen(false);\n }}\n >\n {item.label}\n </Link>\n );\n }\n\n if (item.onClick && !item.active) {\n const onClick = item.onClick;\n return (\n <button\n key={i}\n type=\"button\"\n title={item.title}\n className={cn(cls, \"cursor-pointer border-0 bg-transparent\")}\n onClick={() => {\n onClick();\n setOpen(false);\n }}\n >\n {item.label}\n </button>\n );\n }\n\n return (\n <span key={i} title={item.title} className={cls}>\n {item.label}\n </span>\n );\n })}\n </div>\n )}\n </div>\n );\n}\n\nBreadcrumbsDropdown.displayName = \"BreadcrumbsDropdown\";\n","import { Children, Fragment, useState, type ReactElement } from \"react\";\nimport { ChevronRight } from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport { BreadcrumbsItem } from \"./BreadcrumbsItem\";\nimport { BreadcrumbsDropdown } from \"./BreadcrumbsDropdown\";\nimport type { BreadcrumbsProps, BreadcrumbsItemProps } from \"./Breadcrumbs.types\";\n\nfunction BreadcrumbsRoot({\n children,\n separator,\n shrink,\n className,\n}: BreadcrumbsProps) {\n const items = Children.toArray(children);\n const [expanded, setExpanded] = useState(false);\n\n const sep = separator ?? (\n <ChevronRight size={12} className=\"text-zinc-400 rtl:-scale-x-100\" />\n );\n\n const lastItem = items[items.length - 1];\n\n // Extract info from children for mobile dropdown\n const dropdownItems = items.map((child) => {\n const el = child as ReactElement<BreadcrumbsItemProps>;\n return {\n label: el.props?.children,\n href: el.props?.href,\n as: el.props?.as,\n onClick: el.props?.onClick,\n active: el.props?.active,\n // Only `title` crosses into the menu. It is the full text of a crumb the\n // consumer truncated, and the narrow menu is where labels get cut. Other\n // attributes stay on the trail: both trails are in the DOM at once (CSS\n // hides one), so an `id` or a `data-*` handle would be duplicated.\n title: el.props?.title,\n };\n });\n\n const activeLabel = dropdownItems[dropdownItems.length - 1]?.label ?? \"Menu\";\n\n const showShrunk = shrink && !expanded && items.length > 1;\n\n return (\n <>\n {/* Desktop trail */}\n <nav\n data-react-fancy-breadcrumbs=\"\"\n aria-label=\"Breadcrumb\"\n className={cn(\"hidden items-center gap-2 md:flex\", className)}\n onMouseLeave={() => shrink && setExpanded(false)}\n >\n {showShrunk ? (\n <>\n <button\n type=\"button\"\n onClick={() => setExpanded(true)}\n onMouseEnter={() => setExpanded(true)}\n className=\"text-sm text-zinc-400 hover:text-zinc-600 dark:hover:text-zinc-300\"\n >\n ...\n </button>\n <span aria-hidden=\"true\">{sep}</span>\n {lastItem}\n </>\n ) : (\n items.map((child, i) => (\n <Fragment key={i}>\n {i > 0 && <span aria-hidden=\"true\">{sep}</span>}\n {child}\n </Fragment>\n ))\n )}\n </nav>\n\n {/* Mobile dropdown */}\n <BreadcrumbsDropdown items={dropdownItems} activeLabel={activeLabel} />\n </>\n );\n}\n\nexport const Breadcrumbs = Object.assign(BreadcrumbsRoot, {\n Item: BreadcrumbsItem,\n});\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { inlineStep } from './chunk-US5R36TQ.js';
|
|
1
2
|
import { Portal } from './chunk-RBCMKPBX.js';
|
|
2
3
|
import { Badge } from './chunk-OZ4QFJ7N.js';
|
|
3
4
|
import { useControllableState } from './chunk-EDYAXGUM.js';
|
|
@@ -87,6 +88,10 @@ function ToastItem({ data, onDismiss }) {
|
|
|
87
88
|
}
|
|
88
89
|
ToastItem.displayName = "ToastItem";
|
|
89
90
|
var POSITION_STYLES = {
|
|
91
|
+
"top-start": "top-4 start-4",
|
|
92
|
+
"top-end": "top-4 end-4",
|
|
93
|
+
"bottom-start": "bottom-4 start-4",
|
|
94
|
+
"bottom-end": "bottom-4 end-4",
|
|
90
95
|
"top-right": "top-4 right-4",
|
|
91
96
|
"top-left": "top-4 left-4",
|
|
92
97
|
"bottom-right": "bottom-4 right-4",
|
|
@@ -112,7 +117,7 @@ function ToastStack({
|
|
|
112
117
|
frontIndex: controlledFront,
|
|
113
118
|
defaultFrontIndex = 0,
|
|
114
119
|
onFrontIndexChange,
|
|
115
|
-
position = "bottom-
|
|
120
|
+
position = "bottom-end",
|
|
116
121
|
label = "Notifications",
|
|
117
122
|
cardClassName,
|
|
118
123
|
className
|
|
@@ -197,10 +202,11 @@ function ToastStack({
|
|
|
197
202
|
tabIndex: 0,
|
|
198
203
|
onKeyDown: (e) => {
|
|
199
204
|
if (isTextField(e.target)) return;
|
|
200
|
-
|
|
205
|
+
const inline = inlineStep(e.key, e.currentTarget);
|
|
206
|
+
if (e.key === "ArrowDown" || inline === 1) {
|
|
201
207
|
e.preventDefault();
|
|
202
208
|
step(1);
|
|
203
|
-
} else if (e.key === "ArrowUp" ||
|
|
209
|
+
} else if (e.key === "ArrowUp" || inline === -1) {
|
|
204
210
|
e.preventDefault();
|
|
205
211
|
step(-1);
|
|
206
212
|
}
|
|
@@ -232,7 +238,7 @@ function ToastStack({
|
|
|
232
238
|
size: "sm",
|
|
233
239
|
variant: "soft",
|
|
234
240
|
color: "zinc",
|
|
235
|
-
className: "absolute -top-2
|
|
241
|
+
className: "absolute -top-2 end-2 z-20 shadow-sm ring-1 ring-[color:var(--fancy-border,var(--color-zinc-200))] dark:bg-zinc-800 dark:text-zinc-100 dark:ring-[color:var(--fancy-border-dark,var(--color-zinc-700))]",
|
|
236
242
|
children: [
|
|
237
243
|
"+",
|
|
238
244
|
hidden
|
|
@@ -255,6 +261,10 @@ function ToastStack({
|
|
|
255
261
|
}
|
|
256
262
|
ToastStack.displayName = "ToastStack";
|
|
257
263
|
var POSITION_STYLES2 = {
|
|
264
|
+
"top-start": "top-4 start-4",
|
|
265
|
+
"top-end": "top-4 end-4",
|
|
266
|
+
"bottom-start": "bottom-4 start-4",
|
|
267
|
+
"bottom-end": "bottom-4 end-4",
|
|
258
268
|
"top-right": "top-4 right-4",
|
|
259
269
|
"top-left": "top-4 left-4",
|
|
260
270
|
"bottom-right": "bottom-4 right-4",
|
|
@@ -262,7 +272,7 @@ var POSITION_STYLES2 = {
|
|
|
262
272
|
};
|
|
263
273
|
function ToastProvider({
|
|
264
274
|
children,
|
|
265
|
-
position = "bottom-
|
|
275
|
+
position = "bottom-end",
|
|
266
276
|
maxToasts = 5
|
|
267
277
|
}) {
|
|
268
278
|
const [toasts, setToasts] = useState([]);
|
|
@@ -301,5 +311,5 @@ var Toast = {
|
|
|
301
311
|
};
|
|
302
312
|
|
|
303
313
|
export { Toast, useToast };
|
|
304
|
-
//# sourceMappingURL=chunk-
|
|
305
|
-
//# sourceMappingURL=chunk-
|
|
314
|
+
//# sourceMappingURL=chunk-D6NISIKV.js.map
|
|
315
|
+
//# sourceMappingURL=chunk-D6NISIKV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Toast/Toast.context.ts","../src/components/Toast/ToastItem.tsx","../src/components/Toast/ToastStack.tsx","../src/components/Toast/Toast.tsx"],"names":["useEffect","jsx","jsxs","POSITION_STYLES","useRef"],"mappings":";;;;;;;;;AAGO,IAAM,YAAA,GAAe,cAAwC,IAAI,CAAA;AAEjE,SAAS,QAAA,GAA8B;AAC5C,EAAA,MAAM,GAAA,GAAM,WAAW,YAAY,CAAA;AACnC,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,MAAM,iDAAiD,CAAA;AAAA,EACnE;AACA,EAAA,OAAO,GAAA;AACT;ACNA,IAAM,cAAA,GAAiB;AAAA,EACrB,OAAA,EACE,gPAAA;AAAA,EACF,OAAA,EACE,8EAAA;AAAA,EACF,KAAA,EACE,8DAAA;AAAA,EACF,OAAA,EACE,sEAAA;AAAA,EACF,IAAA,EAAM;AACR,CAAA;AAEA,IAAM,mBAAA,GAAsB;AAAA,EAC1B,OAAA,EAAS,eAAA;AAAA,EACT,OAAA,EAAS,kBAAA;AAAA,EACT,KAAA,EAAO,cAAA;AAAA,EACP,OAAA,EAAS,gBAAA;AAAA,EACT,IAAA,EAAM;AACR,CAAA;AAEO,SAAS,SAAA,CAAU,EAAE,IAAA,EAAM,SAAA,EAAU,EAAmB;AAC7D,EAAA,MAAM,EAAE,EAAA,EAAI,KAAA,EAAO,aAAa,OAAA,GAAU,SAAA,EAAW,QAAO,GAAI,IAAA;AAEhE,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,QAAA,KAAa,MAAA,GAAS,CAAA,GAAI,GAAA,CAAA;AAEhD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,YAAY,CAAA,EAAG;AACnB,IAAA,MAAM,QAAQ,UAAA,CAAW,MAAM,SAAA,CAAU,EAAE,GAAG,QAAQ,CAAA;AACtD,IAAA,OAAO,MAAM,aAAa,KAAK,CAAA;AAAA,EACjC,CAAA,EAAG,CAAC,EAAA,EAAI,QAAA,EAAU,SAAS,CAAC,CAAA;AAE5B,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,6BAAA,EAA4B,EAAA;AAAA,MAC5B,IAAA,EAAK,OAAA;AAAA,MAGL,SAAA,EAAW,CAAC,CAAA,KAAM;AAChB,QAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,QAAA,EAAU,SAAA,CAAU,EAAE,CAAA;AAAA,MACtC,CAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,yEAAA;AAAA,QACA,eAAe,OAAO;AAAA,OACxB;AAAA,MAEA,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EACb,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,SAAI,SAAA,EAAW,EAAA,CAAG,mBAAmB,mBAAA,CAAoB,OAAO,CAAC,CAAA,EAC/D,QAAA,EAAA;AAAA,UAAA,OAAA,KAAY,SAAA,oBAAa,GAAA,CAAC,KAAA,EAAA,EAAM,IAAA,EAAM,EAAA,EAAI,CAAA;AAAA,UAC1C,OAAA,KAAY,OAAA,oBAAW,GAAA,CAAC,OAAA,EAAA,EAAQ,MAAM,EAAA,EAAI,CAAA;AAAA,UAC1C,OAAA,KAAY,SAAA,oBAAa,GAAA,CAAC,aAAA,EAAA,EAAc,MAAM,EAAA,EAAI,CAAA;AAAA,UAClD,OAAA,KAAY,MAAA,oBAAU,GAAA,CAAC,IAAA,EAAA,EAAK,MAAM,EAAA,EAAI;AAAA,SAAA,EACzC,CAAA;AAAA,wBACA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,yIAAA,EAA2I,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,UAC7J,WAAA,oBACC,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,gJACV,QAAA,EAAA,WAAA,EACH;AAAA,SAAA,EAEJ,CAAA;AAAA,QACC,MAAA,oBACC,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,SAAS,MAAM;AACb,cAAA,MAAA,CAAO,OAAA,EAAQ;AAGf,cAAA,SAAA,CAAU,EAAE,CAAA;AAAA,YACd,CAAA;AAAA,YACA,SAAA,EAAU,mSAAA;AAAA,YAET,QAAA,EAAA,MAAA,CAAO;AAAA;AAAA,SACV;AAAA,wBAEF,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAS,MAAM,SAAA,CAAU,EAAE,CAAA;AAAA,YAC3B,SAAA,EAAU,qGAAA;AAAA,YACV,YAAA,EAAW,SAAA;AAAA,YAEX,QAAA,kBAAA,GAAA,CAAC,CAAA,EAAA,EAAE,IAAA,EAAM,EAAA,EAAI;AAAA;AAAA;AACf,OAAA,EACF;AAAA;AAAA,GACF;AAEJ;AAEA,SAAA,CAAU,WAAA,GAAc,WAAA;ACvDxB,IAAM,eAAA,GAAiD;AAAA,EACrD,WAAA,EAAa,eAAA;AAAA,EACb,SAAA,EAAW,aAAA;AAAA,EACX,cAAA,EAAgB,kBAAA;AAAA,EAChB,YAAA,EAAc,gBAAA;AAAA,EACd,WAAA,EAAa,eAAA;AAAA,EACb,UAAA,EAAY,cAAA;AAAA,EACZ,cAAA,EAAgB,kBAAA;AAAA,EAChB,aAAA,EAAe;AACjB,CAAA;AAGA,IAAM,UAAA,GAAa,EAAA;AAEnB,IAAM,IAAA,GACJ,gRAAA;AAEF,SAAS,UAAA,CAAW,MAAe,KAAA,EAAuB;AACxD,EAAA,MAAM,KAAM,IAAA,EAAkC,EAAA;AAC9C,EAAA,OAAO,OAAO,EAAA,KAAO,QAAA,IAAY,OAAO,EAAA,KAAO,WAAW,MAAA,CAAO,EAAE,CAAA,GAAI,MAAA,CAAO,KAAK,CAAA;AACrF;AAEA,SAAS,YAAY,MAAA,EAAqC;AACxD,EAAA,IAAI,EAAE,MAAA,YAAkB,WAAA,CAAA,EAAc,OAAO,KAAA;AAC7C,EAAA,OACE,MAAA,CAAO,iBAAA,IACP,MAAA,CAAO,YAAA,CAAa,iBAAiB,MAAM,MAAA,IAC3C,2BAAA,CAA4B,IAAA,CAAK,MAAA,CAAO,OAAO,CAAA;AAEnD;AAaO,SAAS,UAAA,CAAc;AAAA,EAC5B,KAAA;AAAA,EACA,UAAA;AAAA,EACA,MAAA,GAAS,UAAA;AAAA,EACT,KAAA,GAAQ,CAAA;AAAA,EACR,MAAA,GAAS,CAAA;AAAA,EACT,SAAA,GAAY,IAAA;AAAA,EACZ,UAAA,EAAY,eAAA;AAAA,EACZ,iBAAA,GAAoB,CAAA;AAAA,EACpB,kBAAA;AAAA,EACA,QAAA,GAAW,YAAA;AAAA,EACX,KAAA,GAAQ,eAAA;AAAA,EACR,aAAA;AAAA,EACA;AACF,CAAA,EAAuB;AACrB,EAAA,MAAM,CAAC,QAAA,EAAU,QAAQ,CAAA,GAAI,oBAAA;AAAA,IAC3B,eAAA;AAAA,IACA,iBAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,MAAM,QAAQ,KAAA,CAAM,MAAA;AAGpB,EAAA,MAAM,QAAQ,KAAA,KAAU,CAAA,GAAI,CAAA,GAAA,CAAM,QAAA,GAAW,QAAS,KAAA,IAAS,KAAA;AAE/D,EAAA,MAAM,QAAA,GAAW,OAAuB,IAAI,CAAA;AAC5C,EAAA,MAAM,WAAA,GAAc,OAAO,CAAC,CAAA;AAC5B,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,EAAE,KAAA,EAAO,OAAO,CAAA;AACpC,EAAA,IAAA,CAAK,OAAA,GAAU,EAAE,KAAA,EAAO,KAAA,EAAM;AAE9B,EAAA,MAAM,IAAA,GAAO,CAAC,EAAA,KAAe;AAC3B,IAAA,MAAM,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,CAAA,KAAM,IAAA,CAAK,OAAA;AAC1C,IAAA,IAAI,IAAI,CAAA,EAAG;AACX,IAAA,QAAA,CAAA,CAAA,CAAY,OAAA,GAAU,EAAA,IAAM,CAAA,GAAK,CAAA,IAAK,CAAC,CAAA;AAAA,EACzC,CAAA;AACA,EAAA,MAAM,OAAA,GAAU,OAAO,IAAI,CAAA;AAC3B,EAAA,OAAA,CAAQ,OAAA,GAAU,IAAA;AAOlB,EAAAA,UAAU,MAAM;AACd,IAAA,MAAM,KAAK,QAAA,CAAS,OAAA;AACpB,IAAA,IAAI,CAAC,EAAA,EAAI;AAET,IAAA,MAAM,OAAA,GAAU,CAAC,CAAA,KAAkB;AACjC,MAAA,IAAI,KAAK,OAAA,CAAQ,KAAA,GAAQ,CAAA,IAAK,CAAA,CAAE,WAAW,CAAA,EAAG;AAC9C,MAAA,CAAA,CAAE,cAAA,EAAe;AAGjB,MAAA,IAAI,CAAA,CAAE,cAAc,CAAA,EAAG;AACrB,QAAA,WAAA,CAAY,OAAA,GAAU,CAAA;AACtB,QAAA,OAAA,CAAQ,OAAA,CAAQ,IAAA,CAAK,IAAA,CAAK,CAAA,CAAE,MAAM,CAAC,CAAA;AACnC,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,IAAA,CAAK,GAAA,CAAI,CAAA,CAAE,MAAM,KAAK,UAAA,EAAY;AACpC,QAAA,WAAA,CAAY,OAAA,GAAU,CAAA;AACtB,QAAA,OAAA,CAAQ,OAAA,CAAQ,IAAA,CAAK,IAAA,CAAK,CAAA,CAAE,MAAM,CAAC,CAAA;AACnC,QAAA;AAAA,MACF;AACA,MAAA,WAAA,CAAY,WAAW,CAAA,CAAE,MAAA;AACzB,MAAA,IAAI,IAAA,CAAK,GAAA,CAAI,WAAA,CAAY,OAAO,KAAK,UAAA,EAAY;AAC/C,QAAA,OAAA,CAAQ,OAAA,CAAQ,IAAA,CAAK,IAAA,CAAK,WAAA,CAAY,OAAO,CAAC,CAAA;AAC9C,QAAA,WAAA,CAAY,OAAA,GAAU,CAAA;AAAA,MACxB;AAAA,IACF,CAAA;AAEA,IAAA,EAAA,CAAG,iBAAiB,OAAA,EAAS,OAAA,EAAS,EAAE,OAAA,EAAS,OAAO,CAAA;AACxD,IAAA,OAAO,MAAM,EAAA,CAAG,mBAAA,CAAoB,OAAA,EAAS,OAAO,CAAA;AAAA,EAGtD,CAAA,EAAG,CAAC,KAAA,GAAQ,CAAA,EAAG,QAAQ,CAAC,CAAA;AAExB,EAAA,IAAI,KAAA,KAAU,GAAG,OAAO,IAAA;AAExB,EAAA,MAAM,aAAA,GAAgB,KAAK,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA,EAAG,KAAK,CAAA,EAAG,KAAA,GAAQ,CAAC,CAAA;AAC5D,EAAA,MAAM,MAAA,GAAS,QAAQ,CAAA,GAAI,aAAA;AAE3B,EAAA,MAAM,IAAA,GAAO,CAAC,KAAA,EAAe,CAAA,KAAc;AACzC,IAAA,MAAM,IAAA,GAAO,MAAM,KAAK,CAAA;AACxB,IAAA,MAAM,UAAU,CAAA,KAAM,CAAA;AACtB,IAAA,uBACEC,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QAEC,mCAAA,EAAmC,UAAU,OAAA,GAAU,QAAA;AAAA,QACvD,aAAA,EAAa,UAAU,MAAA,GAAY,IAAA;AAAA,QACnC,KAAA,EAAO,UAAU,MAAA,GAAY,IAAA;AAAA,QAC7B,SAAA,EAAW,EAAA;AAAA,UACT,IAAA;AAAA,UACA,8CAAA;AAAA,UACA,UAAU,UAAA,GAAa,sDAAA;AAAA,UACvB;AAAA,SACF;AAAA,QACA,KAAA,EAAO;AAAA,UACL,MAAA,EAAQ,QAAQ,CAAA,GAAI,CAAA;AAAA,UACpB,SAAA,EAAW,UAAU,MAAA,GAAY,CAAA,YAAA,EAAe,IAAI,MAAM,CAAA,UAAA,EAAa,CAAA,GAAI,CAAA,GAAI,SAAS,CAAA,CAAA;AAAA,SAC1F;AAAA,QAEC,QAAA,EAAA,UAAA,CAAW,IAAA,EAAM,EAAE,KAAA,EAAO,SAAS;AAAA,OAAA;AAAA,MAf/B,MAAA,CAAO,MAAM,KAAK;AAAA,KAgBzB;AAAA,EAEJ,CAAA;AAEA,EAAA,MAAM,0BACJC,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,QAAA;AAAA,MACL,8BAAA,EAA6B,EAAA;AAAA,MAC7B,IAAA,EAAK,QAAA;AAAA,MACL,YAAA,EAAY,KAAA;AAAA,MACZ,QAAA,EAAU,CAAA;AAAA,MACV,SAAA,EAAW,CAAC,CAAA,KAAM;AAChB,QAAA,IAAI,WAAA,CAAY,CAAA,CAAE,MAAM,CAAA,EAAG;AAE3B,QAAA,MAAM,MAAA,GAAS,UAAA,CAAW,CAAA,CAAE,GAAA,EAAK,EAAE,aAAa,CAAA;AAChD,QAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,WAAA,IAAe,MAAA,KAAW,CAAA,EAAG;AACzC,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,IAAA,CAAK,CAAC,CAAA;AAAA,QACR,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,SAAA,IAAa,WAAW,EAAA,EAAI;AAC/C,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,IAAA,CAAK,EAAE,CAAA;AAAA,QACT;AAAA,MACF,CAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,0IAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,KAAA,EAAO,EAAE,UAAA,EAAY,aAAA,GAAgB,MAAA,EAAO;AAAA,MAE5C,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,UAAA,EAQZ,QAAA,EAAA;AAAA,UAAA,IAAA,CAAK,OAAO,CAAC,CAAA;AAAA,UACb,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,aAAA,EAAc,EAAG,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,GAAI,CAAC,CAAA,CAAE,GAAA;AAAA,YAAI,CAAC,CAAA,KAC3D,IAAA,CAAA,CAAM,KAAA,GAAQ,CAAA,IAAK,OAAO,CAAC;AAAA;AAC7B,SAAA,EACF,CAAA;AAAA,QACC,MAAA,GAAS,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBASRA,IAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,mCAAA,EAAkC,EAAA;AAAA,YAClC,IAAA,EAAK,IAAA;AAAA,YACL,OAAA,EAAQ,MAAA;AAAA,YACR,KAAA,EAAM,MAAA;AAAA,YACN,SAAA,EAAU,yMAAA;AAAA,YACX,QAAA,EAAA;AAAA,cAAA,GAAA;AAAA,cACG;AAAA;AAAA;AAAA,SACJ;AAAA,wBAEFD,GAAAA,CAAC,MAAA,EAAA,EAAK,qCAAA,EAAoC,EAAA,EAAG,aAAU,QAAA,EAAS,SAAA,EAAU,SAAA,EACvE,QAAA,EAAA,KAAA,GAAQ,IAAI,CAAA,EAAG,KAAA,GAAQ,CAAC,CAAA,IAAA,EAAO,KAAK,KAAK,EAAA,EAC5C;AAAA;AAAA;AAAA,GACF;AAGF,EAAA,IAAI,QAAA,KAAa,UAAU,OAAO,OAAA;AAElC,EAAA,uBACEA,GAAAA,CAAC,MAAA,EAAA,EACC,QAAA,kBAAAA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,uCAAA,EAAuC,QAAA;AAAA,MACvC,SAAA,EAAW,EAAA,CAAG,mCAAA,EAAqC,eAAA,CAAgB,QAAQ,CAAC,CAAA;AAAA,MAE3E,QAAA,EAAA;AAAA;AAAA,GACH,EACF,CAAA;AAEJ;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;AC9PzB,IAAME,gBAAAA,GAAkB;AAAA,EACtB,WAAA,EAAa,eAAA;AAAA,EACb,SAAA,EAAW,aAAA;AAAA,EACX,cAAA,EAAgB,kBAAA;AAAA,EAChB,YAAA,EAAc,gBAAA;AAAA,EACd,WAAA,EAAa,eAAA;AAAA,EACb,UAAA,EAAY,cAAA;AAAA,EACZ,cAAA,EAAgB,kBAAA;AAAA,EAChB,aAAA,EAAe;AACjB,CAAA;AAEA,SAAS,aAAA,CAAc;AAAA,EACrB,QAAA;AAAA,EACA,QAAA,GAAW,YAAA;AAAA,EACX,SAAA,GAAY;AACd,CAAA,EAAuB;AACrB,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,QAAA,CAAsB,EAAE,CAAA;AACpD,EAAA,MAAM,SAAA,GAAYC,OAAO,CAAC,CAAA;AAE1B,EAAA,MAAM,KAAA,GAAQ,WAAA;AAAA,IACZ,CAAC,IAAA,KAAgC;AAC/B,MAAA,MAAM,EAAA,GAAK,CAAA,MAAA,EAAS,EAAE,SAAA,CAAU,OAAO,CAAA,CAAA;AACvC,MAAA,SAAA,CAAU,CAAC,IAAA,KAAS,CAAC,GAAG,KAAK,KAAA,CAAM,EAAE,SAAA,GAAY,CAAA,CAAE,GAAG,EAAE,GAAG,IAAA,EAAM,EAAA,EAAI,CAAC,CAAA;AACtE,MAAA,OAAO,EAAA;AAAA,IACT,CAAA;AAAA,IACA,CAAC,SAAS;AAAA,GACZ;AAEA,EAAA,MAAM,OAAA,GAAU,WAAA,CAAY,CAAC,EAAA,KAAe;AAC1C,IAAA,SAAA,CAAU,CAAC,SAAS,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO,EAAE,CAAC,CAAA;AAAA,EACrD,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,OAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,OAAA,EAAQ,CAAA,EAAI,CAAC,MAAA,EAAQ,KAAA,EAAO,OAAO,CAAC,CAAA;AAEhF,EAAA,uBACEF,IAAAA,CAAC,YAAA,CAAa,QAAA,EAAb,EAAsB,OAAO,GAAA,EAC3B,QAAA,EAAA;AAAA,IAAA,QAAA;AAAA,oBACDD,GAAAA,CAAC,MAAA,EAAA,EACC,QAAA,kBAAAA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,wBAAA,EAAuB,EAAA;AAAA,QACvB,SAAA,EAAW,EAAA;AAAA,UACT,uDAAA;AAAA,UACAE,iBAAgB,QAAQ;AAAA,SAC1B;AAAA,QAEC,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,qBACXF,GAAAA,CAAC,SAAA,EAAA,EAAqB,IAAA,EAAM,CAAA,EAAG,SAAA,EAAW,OAAA,EAAA,EAA1B,CAAA,CAAE,EAAiC,CACpD;AAAA;AAAA,KACH,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AAEO,IAAM,KAAA,GAAQ;AAAA,EACnB,QAAA,EAAU,aAAA;AAAA,EACV,KAAA,EAAO,UAAA;AAAA,EACP,IAAA,EAAM;AACR","file":"chunk-D6NISIKV.js","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { ToastContextValue } from \"./Toast.types\";\n\nexport const ToastContext = createContext<ToastContextValue | null>(null);\n\nexport function useToast(): ToastContextValue {\n const ctx = useContext(ToastContext);\n if (!ctx) {\n throw new Error(\"useToast must be used within a <Toast.Provider>\");\n }\n return ctx;\n}\n","import { useEffect } from \"react\";\nimport { AlertTriangle, Check, Info, X, XCircle } from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport type { ToastItemProps } from \"./Toast.types\";\n\nconst VARIANT_STYLES = {\n default:\n \"border-[color:var(--fancy-border,var(--color-zinc-200))] bg-[color:var(--fancy-surface,var(--color-white))] dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))] dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))]\",\n success:\n \"border-emerald-200 bg-emerald-50 dark:border-emerald-800 dark:bg-emerald-950\",\n error:\n \"border-red-200 bg-red-50 dark:border-red-800 dark:bg-red-950\",\n warning:\n \"border-amber-200 bg-amber-50 dark:border-amber-800 dark:bg-amber-950\",\n info: \"border-blue-200 bg-blue-50 dark:border-blue-800 dark:bg-blue-950\",\n} as const;\n\nconst VARIANT_ICON_COLORS = {\n default: \"text-zinc-400\",\n success: \"text-emerald-500\",\n error: \"text-red-500\",\n warning: \"text-amber-500\",\n info: \"text-blue-500\",\n} as const;\n\nexport function ToastItem({ data, onDismiss }: ToastItemProps) {\n const { id, title, description, variant = \"default\", action } = data;\n // An action toast does not expire by default.\n const duration = data.duration ?? (action ? 0 : 5000);\n\n useEffect(() => {\n if (duration <= 0) return;\n const timer = setTimeout(() => onDismiss(id), duration);\n return () => clearTimeout(timer);\n }, [id, duration, onDismiss]);\n\n return (\n <div\n data-react-fancy-toast-item=\"\"\n role=\"alert\"\n // Scoped to the toast rather than the document: a global Escape handler\n // would fight whatever modal or drawer is already listening.\n onKeyDown={(e) => {\n if (e.key === \"Escape\") onDismiss(id);\n }}\n className={cn(\n \"fancy-toast-in pointer-events-auto w-80 rounded-xl border p-4 shadow-lg\",\n VARIANT_STYLES[variant],\n )}\n >\n <div className=\"flex items-start gap-3\">\n <div className={cn(\"mt-0.5 shrink-0\", VARIANT_ICON_COLORS[variant])}>\n {variant === \"success\" && <Check size={16} />}\n {variant === \"error\" && <XCircle size={16} />}\n {variant === \"warning\" && <AlertTriangle size={16} />}\n {variant === \"info\" && <Info size={16} />}\n </div>\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium text-[color:var(--fancy-text,var(--color-zinc-900))] dark:text-[color:var(--fancy-text-dark,var(--color-zinc-100))]\">{title}</p>\n {description && (\n <p className=\"mt-1 text-xs text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]\">\n {description}\n </p>\n )}\n </div>\n {action && (\n <button\n type=\"button\"\n onClick={() => {\n action.onClick();\n // The offer is consumed; leaving it up invites undoing an\n // already-undone action.\n onDismiss(id);\n }}\n className=\"shrink-0 self-center rounded-md px-2 py-1 text-xs font-medium text-zinc-700 underline-offset-2 transition-colors hover:bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] hover:underline dark:text-zinc-200 dark:hover:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]\"\n >\n {action.label}\n </button>\n )}\n <button\n type=\"button\"\n onClick={() => onDismiss(id)}\n className=\"shrink-0 rounded p-0.5 text-zinc-400 transition-colors hover:text-zinc-600 dark:hover:text-zinc-300\"\n aria-label=\"Dismiss\"\n >\n <X size={14} />\n </button>\n </div>\n </div>\n );\n}\n\nToastItem.displayName = \"ToastItem\";\n","import { useEffect, useRef, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { inlineStep } from \"../../utils/direction\";\nimport { useControllableState } from \"../../hooks/use-controllable-state\";\nimport { Portal } from \"../Portal\";\nimport { Badge } from \"../Badge\";\nimport type { ToastPosition } from \"./Toast.types\";\n\nexport interface ToastStackProps<T> {\n /**\n * Everything to show — the stack is a VIEW of this list and owns none of it.\n * There is no limit and no timer: an item leaves only when you remove it.\n */\n items: readonly T[];\n /** One card's content, actions included. Only the front card is interactive. */\n renderItem: (item: T, state: { index: number; isFront: boolean }) => ReactNode;\n /** A stable key per item. Defaults to `item.id`, then the index. */\n getKey?: (item: T, index: number) => string;\n /** How many cards show behind the front one. Default 2. */\n depth?: number;\n /** How far each card behind peeks out above the one in front, in px. Default 8. */\n offset?: number;\n /** How much smaller each card behind is than the one in front. Default 0.05. */\n scaleStep?: number;\n /** Which item is in front, if you want to own it. Wraps; out-of-range values are clamped. */\n frontIndex?: number;\n defaultFrontIndex?: number;\n onFrontIndexChange?: (index: number) => void;\n /** A screen corner, or `\"inline\"` to render where it is placed. Default `\"bottom-end\"`: the right in LTR, the left in RTL. */\n position?: ToastPosition | \"inline\";\n /** The stack's accessible name. Default \"Notifications\". */\n label?: string;\n /** Classes for each card's shell, merged onto the defaults. */\n cardClassName?: string;\n className?: string;\n}\n\nconst POSITION_STYLES: Record<ToastPosition, string> = {\n \"top-start\": \"top-4 start-4\",\n \"top-end\": \"top-4 end-4\",\n \"bottom-start\": \"bottom-4 start-4\",\n \"bottom-end\": \"bottom-4 end-4\",\n \"top-right\": \"top-4 right-4\",\n \"top-left\": \"top-4 left-4\",\n \"bottom-right\": \"bottom-4 right-4\",\n \"bottom-left\": \"bottom-4 left-4\",\n};\n\n/** Pixels of wheel travel that count as one step. A mouse notch is ~100; a trackpad sends many small ones. */\nconst WHEEL_STEP = 50;\n\nconst CARD =\n \"rounded-xl border border-[color:var(--fancy-border,var(--color-zinc-200))] bg-[color:var(--fancy-surface,var(--color-white))] p-4 shadow-lg dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))] dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))]\";\n\nfunction defaultKey(item: unknown, index: number): string {\n const id = (item as { id?: unknown } | null)?.id;\n return typeof id === \"string\" || typeof id === \"number\" ? String(id) : String(index);\n}\n\nfunction isTextField(target: EventTarget | null): boolean {\n if (!(target instanceof HTMLElement)) return false;\n return (\n target.isContentEditable ||\n target.getAttribute(\"contenteditable\") === \"true\" ||\n /^(INPUT|TEXTAREA|SELECT)$/.test(target.tagName)\n );\n}\n\n/**\n * A controlled stack of actionable toasts — approval requests, say — that the\n * person walks through rather than races.\n *\n * Built for react-fancy#33. The owner's requirements were that requests stack\n * behind each other with a slight top offset, that scrolling over the stack\n * walks through them, and that a pending request NEVER expires or disappears.\n * The last is why this is a view of the caller's list rather than a queue it\n * keeps: there is nothing here that can drop an item, because nothing here owns\n * one. (The imperative provider's `maxToasts` silently drops the oldest.)\n */\nexport function ToastStack<T>({\n items,\n renderItem,\n getKey = defaultKey,\n depth = 2,\n offset = 8,\n scaleStep = 0.05,\n frontIndex: controlledFront,\n defaultFrontIndex = 0,\n onFrontIndexChange,\n position = \"bottom-end\",\n label = \"Notifications\",\n cardClassName,\n className,\n}: ToastStackProps<T>) {\n const [rawFront, setFront] = useControllableState(\n controlledFront,\n defaultFrontIndex,\n onFrontIndexChange,\n );\n const count = items.length;\n // Clamped for display rather than corrected through onChange: a list that\n // shrinks under a far-forward index must not make render report a change.\n const front = count === 0 ? 0 : ((rawFront % count) + count) % count;\n\n const stackRef = useRef<HTMLDivElement>(null);\n const wheelTravel = useRef(0);\n const live = useRef({ front, count });\n live.current = { front, count };\n\n const step = (by: number) => {\n const { front: current, count: n } = live.current;\n if (n < 2) return;\n setFront((((current + by) % n) + n) % n);\n };\n const stepRef = useRef(step);\n stepRef.current = step;\n\n /*\n * A native listener, because React's wheel listener is passive and cannot stop\n * the page scrolling underneath — and a stack that cycles AND scrolls the page\n * moves two things at once under the person's hand.\n */\n useEffect(() => {\n const el = stackRef.current;\n if (!el) return;\n\n const onWheel = (e: WheelEvent) => {\n if (live.current.count < 2 || e.deltaY === 0) return;\n e.preventDefault();\n\n // Line or page mode: every event is a notch.\n if (e.deltaMode !== 0) {\n wheelTravel.current = 0;\n stepRef.current(Math.sign(e.deltaY));\n return;\n }\n // A notch-sized event steps at once; small trackpad deltas add up first.\n if (Math.abs(e.deltaY) >= WHEEL_STEP) {\n wheelTravel.current = 0;\n stepRef.current(Math.sign(e.deltaY));\n return;\n }\n wheelTravel.current += e.deltaY;\n if (Math.abs(wheelTravel.current) >= WHEEL_STEP) {\n stepRef.current(Math.sign(wheelTravel.current));\n wheelTravel.current = 0;\n }\n };\n\n el.addEventListener(\"wheel\", onWheel, { passive: false });\n return () => el.removeEventListener(\"wheel\", onWheel);\n // Re-bound when the element can change: it appears with the first item, and\n // moving between a corner and inline remounts it.\n }, [count > 0, position]);\n\n if (count === 0) return null;\n\n const visibleBehind = Math.min(Math.max(0, depth), count - 1);\n const hidden = count - 1 - visibleBehind;\n\n const card = (index: number, k: number) => {\n const item = items[index];\n const isFront = k === 0;\n return (\n <div\n key={getKey(item, index)}\n data-react-fancy-toast-stack-card={isFront ? \"front\" : \"behind\"}\n aria-hidden={isFront ? undefined : true}\n inert={isFront ? undefined : true}\n className={cn(\n CARD,\n \"origin-top transition-transform duration-200\",\n isFront ? \"relative\" : \"pointer-events-none absolute inset-0 overflow-hidden\",\n cardClassName,\n )}\n style={{\n zIndex: depth + 1 - k,\n transform: isFront ? undefined : `translateY(-${k * offset}px) scale(${1 - k * scaleStep})`,\n }}\n >\n {renderItem(item, { index, isFront })}\n </div>\n );\n };\n\n const stackEl = (\n <div\n ref={stackRef}\n data-react-fancy-toast-stack=\"\"\n role=\"region\"\n aria-label={label}\n tabIndex={0}\n onKeyDown={(e) => {\n if (isTextField(e.target)) return;\n // Left / right follow the reading direction: ArrowLeft is \"next\" in RTL.\n const inline = inlineStep(e.key, e.currentTarget);\n if (e.key === \"ArrowDown\" || inline === 1) {\n e.preventDefault();\n step(1);\n } else if (e.key === \"ArrowUp\" || inline === -1) {\n e.preventDefault();\n step(-1);\n }\n }}\n className={cn(\n \"pointer-events-auto relative w-80 rounded-xl outline-none focus-visible:ring-2 focus-visible:ring-violet-500 focus-visible:ring-offset-2\",\n className,\n )}\n style={{ paddingTop: visibleBehind * offset }}\n >\n <div className=\"relative\">\n {/*\n * z-index decides what paints on top; the front card sizes the box.\n * The front card comes FIRST in the DOM, then the cards behind in walk\n * order: the ones behind are absolutely positioned against this box, so\n * their place in the source changes nothing visible -- but it is what\n * a DOM query, `textContent` and copy-paste read.\n */}\n {card(front, 0)}\n {Array.from({ length: visibleBehind }, (_, i) => i + 1).map((k) =>\n card((front + k) % count, k),\n )}\n </div>\n {hidden > 0 && (\n /*\n * Opaque in BOTH themes, because it sits over the cards peeking out\n * behind the front one -- often a light image header. The soft zinc\n * Badge is `dark:bg-zinc-900/30`, which let that image through and left\n * zinc-300 text on a light screenshot (fancy-app-update#1). The dark\n * pair is overridden here, not in Badge, so every other soft badge\n * keeps its look; the ring separates it from a zinc-900 card edge.\n */\n <Badge\n data-react-fancy-toast-stack-more=\"\"\n size=\"sm\"\n variant=\"soft\"\n color=\"zinc\"\n className=\"absolute -top-2 end-2 z-20 shadow-sm ring-1 ring-[color:var(--fancy-border,var(--color-zinc-200))] dark:bg-zinc-800 dark:text-zinc-100 dark:ring-[color:var(--fancy-border-dark,var(--color-zinc-700))]\"\n >\n +{hidden}\n </Badge>\n )}\n <span data-react-fancy-toast-stack-status=\"\" aria-live=\"polite\" className=\"sr-only\">\n {count > 1 ? `${front + 1} of ${count}` : \"\"}\n </span>\n </div>\n );\n\n if (position === \"inline\") return stackEl;\n\n return (\n <Portal>\n <div\n data-react-fancy-toast-stack-position={position}\n className={cn(\"pointer-events-none fixed z-[100]\", POSITION_STYLES[position])}\n >\n {stackEl}\n </div>\n </Portal>\n );\n}\n\nToastStack.displayName = \"ToastStack\";\n","import { useCallback, useMemo, useRef, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { Portal } from \"../Portal\";\nimport { ToastContext } from \"./Toast.context\";\nimport { ToastItem } from \"./ToastItem\";\nimport { ToastStack } from \"./ToastStack\";\nimport type { ToastData, ToastProviderProps } from \"./Toast.types\";\n\nconst POSITION_STYLES = {\n \"top-start\": \"top-4 start-4\",\n \"top-end\": \"top-4 end-4\",\n \"bottom-start\": \"bottom-4 start-4\",\n \"bottom-end\": \"bottom-4 end-4\",\n \"top-right\": \"top-4 right-4\",\n \"top-left\": \"top-4 left-4\",\n \"bottom-right\": \"bottom-4 right-4\",\n \"bottom-left\": \"bottom-4 left-4\",\n} as const;\n\nfunction ToastProvider({\n children,\n position = \"bottom-end\",\n maxToasts = 5,\n}: ToastProviderProps) {\n const [toasts, setToasts] = useState<ToastData[]>([]);\n const idCounter = useRef(0);\n\n const toast = useCallback(\n (data: Omit<ToastData, \"id\">) => {\n const id = `toast-${++idCounter.current}`;\n setToasts((prev) => [...prev.slice(-(maxToasts - 1)), { ...data, id }]);\n return id;\n },\n [maxToasts],\n );\n\n const dismiss = useCallback((id: string) => {\n setToasts((prev) => prev.filter((t) => t.id !== id));\n }, []);\n\n const ctx = useMemo(() => ({ toasts, toast, dismiss }), [toasts, toast, dismiss]);\n\n return (\n <ToastContext.Provider value={ctx}>\n {children}\n <Portal>\n <div\n data-react-fancy-toast=\"\"\n className={cn(\n \"fixed z-[100] flex flex-col gap-2 pointer-events-none\",\n POSITION_STYLES[position],\n )}\n >\n {toasts.map((t) => (\n <ToastItem key={t.id} data={t} onDismiss={dismiss} />\n ))}\n </div>\n </Portal>\n </ToastContext.Provider>\n );\n}\n\nexport const Toast = {\n Provider: ToastProvider,\n Stack: ToastStack,\n Item: ToastItem,\n};\n"]}
|
|
@@ -4,18 +4,18 @@ var chunkZU5Q77OT_cjs = require('./chunk-ZU5Q77OT.cjs');
|
|
|
4
4
|
var jsxRuntime = require('react/jsx-runtime');
|
|
5
5
|
|
|
6
6
|
var insidePaddingLeft = {
|
|
7
|
-
xs: "[&_input]:
|
|
8
|
-
sm: "[&_input]:
|
|
9
|
-
md: "[&_input]:
|
|
10
|
-
lg: "[&_input]:
|
|
11
|
-
xl: "[&_input]:
|
|
7
|
+
xs: "[&_input]:ps-7 [&_select]:ps-7 [&_textarea]:ps-7",
|
|
8
|
+
sm: "[&_input]:ps-8 [&_select]:ps-8 [&_textarea]:ps-8",
|
|
9
|
+
md: "[&_input]:ps-9 [&_select]:ps-9 [&_textarea]:ps-9",
|
|
10
|
+
lg: "[&_input]:ps-10 [&_select]:ps-10 [&_textarea]:ps-10",
|
|
11
|
+
xl: "[&_input]:ps-11 [&_select]:ps-11 [&_textarea]:ps-11"
|
|
12
12
|
};
|
|
13
13
|
var insidePaddingRight = {
|
|
14
|
-
xs: "[&_input]:
|
|
15
|
-
sm: "[&_input]:
|
|
16
|
-
md: "[&_input]:
|
|
17
|
-
lg: "[&_input]:
|
|
18
|
-
xl: "[&_input]:
|
|
14
|
+
xs: "[&_input]:pe-7 [&_select]:pe-7 [&_textarea]:pe-7",
|
|
15
|
+
sm: "[&_input]:pe-8 [&_select]:pe-8 [&_textarea]:pe-8",
|
|
16
|
+
md: "[&_input]:pe-9 [&_select]:pe-9 [&_textarea]:pe-9",
|
|
17
|
+
lg: "[&_input]:pe-10 [&_select]:pe-10 [&_textarea]:pe-10",
|
|
18
|
+
xl: "[&_input]:pe-11 [&_select]:pe-11 [&_textarea]:pe-11"
|
|
19
19
|
};
|
|
20
20
|
var affixOutsideClasses = "inline-flex items-center border border-[color:var(--fancy-border-strong,var(--color-zinc-300))] bg-zinc-50 px-3 text-sm text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:border-[color:var(--fancy-border-strong-dark,var(--color-zinc-700))] dark:bg-zinc-800 dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]";
|
|
21
21
|
function InputWrapper({
|
|
@@ -36,7 +36,7 @@ function InputWrapper({
|
|
|
36
36
|
}
|
|
37
37
|
if (hasOutside) {
|
|
38
38
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-react-fancy-input-wrapper": "", className: "flex", children: [
|
|
39
|
-
hasOutsidePrefix && /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkZU5Q77OT_cjs.cn(affixOutsideClasses, "rounded-
|
|
39
|
+
hasOutsidePrefix && /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkZU5Q77OT_cjs.cn(affixOutsideClasses, "rounded-s-lg border-e-0"), children: prefix }),
|
|
40
40
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
41
41
|
"div",
|
|
42
42
|
{
|
|
@@ -45,29 +45,29 @@ function InputWrapper({
|
|
|
45
45
|
hasInsidePrefix && "relative"
|
|
46
46
|
),
|
|
47
47
|
children: [
|
|
48
|
-
hasInsidePrefix && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "pointer-events-none absolute
|
|
48
|
+
hasInsidePrefix && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "pointer-events-none absolute start-3 z-10 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]", children: prefix }),
|
|
49
49
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
50
50
|
"div",
|
|
51
51
|
{
|
|
52
52
|
className: chunkZU5Q77OT_cjs.cn(
|
|
53
53
|
"w-full [&>*]:w-full",
|
|
54
|
-
hasOutsidePrefix && !hasOutsideSuffix && "[&_input]:rounded-
|
|
55
|
-
!hasOutsidePrefix && hasOutsideSuffix && "[&_input]:rounded-
|
|
54
|
+
hasOutsidePrefix && !hasOutsideSuffix && "[&_input]:rounded-s-none [&_select]:rounded-s-none [&_textarea]:rounded-s-none",
|
|
55
|
+
!hasOutsidePrefix && hasOutsideSuffix && "[&_input]:rounded-e-none [&_select]:rounded-e-none [&_textarea]:rounded-e-none",
|
|
56
56
|
hasOutsidePrefix && hasOutsideSuffix && "[&_input]:rounded-none [&_select]:rounded-none [&_textarea]:rounded-none",
|
|
57
57
|
hasInsidePrefix && insidePaddingLeft[size]
|
|
58
58
|
),
|
|
59
59
|
children
|
|
60
60
|
}
|
|
61
61
|
),
|
|
62
|
-
hasInsideSuffix && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "pointer-events-none absolute
|
|
62
|
+
hasInsideSuffix && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "pointer-events-none absolute end-3 z-10 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]", children: suffix })
|
|
63
63
|
]
|
|
64
64
|
}
|
|
65
65
|
),
|
|
66
|
-
hasOutsideSuffix && /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkZU5Q77OT_cjs.cn(affixOutsideClasses, "rounded-
|
|
66
|
+
hasOutsideSuffix && /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkZU5Q77OT_cjs.cn(affixOutsideClasses, "rounded-e-lg border-s-0"), children: suffix })
|
|
67
67
|
] });
|
|
68
68
|
}
|
|
69
69
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-react-fancy-input-wrapper": "", className: "relative flex items-center", children: [
|
|
70
|
-
hasInsidePrefix && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "pointer-events-none absolute
|
|
70
|
+
hasInsidePrefix && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "pointer-events-none absolute start-3 z-10 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]", children: prefix }),
|
|
71
71
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
72
72
|
"div",
|
|
73
73
|
{
|
|
@@ -79,10 +79,10 @@ function InputWrapper({
|
|
|
79
79
|
children
|
|
80
80
|
}
|
|
81
81
|
),
|
|
82
|
-
hasInsideSuffix && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "pointer-events-none absolute
|
|
82
|
+
hasInsideSuffix && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "pointer-events-none absolute end-3 z-10 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]", children: suffix })
|
|
83
83
|
] });
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
exports.InputWrapper = InputWrapper;
|
|
87
|
-
//# sourceMappingURL=chunk-
|
|
88
|
-
//# sourceMappingURL=chunk-
|
|
87
|
+
//# sourceMappingURL=chunk-DFROB5TW.cjs.map
|
|
88
|
+
//# sourceMappingURL=chunk-DFROB5TW.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/inputs/InputWrapper.tsx"],"names":["jsxs","cn","jsx"],"mappings":";;;;;AAsBA,IAAM,iBAAA,GAA0C;AAAA,EAC9C,EAAA,EAAI,kDAAA;AAAA,EACJ,EAAA,EAAI,kDAAA;AAAA,EACJ,EAAA,EAAI,kDAAA;AAAA,EACJ,EAAA,EAAI,qDAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,kBAAA,GAA2C;AAAA,EAC/C,EAAA,EAAI,kDAAA;AAAA,EACJ,EAAA,EAAI,kDAAA;AAAA,EACJ,EAAA,EAAI,kDAAA;AAAA,EACJ,EAAA,EAAI,qDAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,mBAAA,GACJ,oVAAA;AAEK,SAAS,YAAA,CAAa;AAAA,EAC3B,QAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,cAAA,GAAiB,QAAA;AAAA,EACjB,cAAA,GAAiB,QAAA;AAAA,EACjB,IAAA,GAAO;AACT,CAAA,EAAsB;AACpB,EAAA,MAAM,eAAA,GAAkB,UAAU,cAAA,KAAmB,QAAA;AACrD,EAAA,MAAM,eAAA,GAAkB,UAAU,cAAA,KAAmB,QAAA;AACrD,EAAA,MAAM,gBAAA,GAAmB,UAAU,cAAA,KAAmB,SAAA;AACtD,EAAA,MAAM,gBAAA,GAAmB,UAAU,cAAA,KAAmB,SAAA;AACtD,EAAA,MAAM,aAAa,gBAAA,IAAoB,gBAAA;AAEvC,EAAA,IAAI,CAAC,MAAA,IAAU,CAAC,MAAA,EAAQ;AACtB,IAAA,6DAAU,QAAA,EAAS,CAAA;AAAA,EACrB;AAEA,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,uBACEA,eAAA,CAAC,KAAA,EAAA,EAAI,gCAAA,EAA+B,EAAA,EAAG,WAAU,MAAA,EAC9C,QAAA,EAAA;AAAA,MAAA,gBAAA,mCACE,MAAA,EAAA,EAAK,SAAA,EAAWC,qBAAG,mBAAA,EAAqB,yBAAyB,GAC/D,QAAA,EAAA,MAAA,EACH,CAAA;AAAA,sBAEFD,eAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAWC,oBAAA;AAAA,YACT,mCAAA;AAAA,YACA,eAAA,IAAmB;AAAA,WACrB;AAAA,UAEC,QAAA,EAAA;AAAA,YAAA,eAAA,oBACCC,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,
|
|
1
|
+
{"version":3,"sources":["../src/components/inputs/InputWrapper.tsx"],"names":["jsxs","cn","jsx"],"mappings":";;;;;AAsBA,IAAM,iBAAA,GAA0C;AAAA,EAC9C,EAAA,EAAI,kDAAA;AAAA,EACJ,EAAA,EAAI,kDAAA;AAAA,EACJ,EAAA,EAAI,kDAAA;AAAA,EACJ,EAAA,EAAI,qDAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,kBAAA,GAA2C;AAAA,EAC/C,EAAA,EAAI,kDAAA;AAAA,EACJ,EAAA,EAAI,kDAAA;AAAA,EACJ,EAAA,EAAI,kDAAA;AAAA,EACJ,EAAA,EAAI,qDAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,mBAAA,GACJ,oVAAA;AAEK,SAAS,YAAA,CAAa;AAAA,EAC3B,QAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,cAAA,GAAiB,QAAA;AAAA,EACjB,cAAA,GAAiB,QAAA;AAAA,EACjB,IAAA,GAAO;AACT,CAAA,EAAsB;AACpB,EAAA,MAAM,eAAA,GAAkB,UAAU,cAAA,KAAmB,QAAA;AACrD,EAAA,MAAM,eAAA,GAAkB,UAAU,cAAA,KAAmB,QAAA;AACrD,EAAA,MAAM,gBAAA,GAAmB,UAAU,cAAA,KAAmB,SAAA;AACtD,EAAA,MAAM,gBAAA,GAAmB,UAAU,cAAA,KAAmB,SAAA;AACtD,EAAA,MAAM,aAAa,gBAAA,IAAoB,gBAAA;AAEvC,EAAA,IAAI,CAAC,MAAA,IAAU,CAAC,MAAA,EAAQ;AACtB,IAAA,6DAAU,QAAA,EAAS,CAAA;AAAA,EACrB;AAEA,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,uBACEA,eAAA,CAAC,KAAA,EAAA,EAAI,gCAAA,EAA+B,EAAA,EAAG,WAAU,MAAA,EAC9C,QAAA,EAAA;AAAA,MAAA,gBAAA,mCACE,MAAA,EAAA,EAAK,SAAA,EAAWC,qBAAG,mBAAA,EAAqB,yBAAyB,GAC/D,QAAA,EAAA,MAAA,EACH,CAAA;AAAA,sBAEFD,eAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAWC,oBAAA;AAAA,YACT,mCAAA;AAAA,YACA,eAAA,IAAmB;AAAA,WACrB;AAAA,UAEC,QAAA,EAAA;AAAA,YAAA,eAAA,oBACCC,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2KAAA,EACb,QAAA,EAAA,MAAA,EACH,CAAA;AAAA,4BAEFA,cAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAWD,oBAAA;AAAA,kBACT,qBAAA;AAAA,kBACA,gBAAA,IAAoB,CAAC,gBAAA,IAAoB,gFAAA;AAAA,kBACzC,CAAC,oBAAoB,gBAAA,IAAoB,gFAAA;AAAA,kBACzC,oBAAoB,gBAAA,IAAoB,0EAAA;AAAA,kBACxC,eAAA,IAAmB,kBAAkB,IAAI;AAAA,iBAC3C;AAAA,gBAEC;AAAA;AAAA,aACH;AAAA,YACC,eAAA,oBACCC,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2KACb,QAAA,EAAA,MAAA,EACH;AAAA;AAAA;AAAA,OAEJ;AAAA,MACC,gBAAA,mCACE,MAAA,EAAA,EAAK,SAAA,EAAWD,qBAAG,mBAAA,EAAqB,yBAAyB,GAC/D,QAAA,EAAA,MAAA,EACH;AAAA,KAAA,EAEJ,CAAA;AAAA,EAEJ;AAGA,EAAA,uBACED,eAAA,CAAC,KAAA,EAAA,EAAI,gCAAA,EAA+B,EAAA,EAAG,WAAU,4BAAA,EAC9C,QAAA,EAAA;AAAA,IAAA,eAAA,oBACCE,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2KAAA,EACb,QAAA,EAAA,MAAA,EACH,CAAA;AAAA,oBAEFA,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAWD,oBAAA;AAAA,UACT,QAAA;AAAA,UACA,eAAA,IAAmB,kBAAkB,IAAI,CAAA;AAAA,UACzC,eAAA,IAAmB,mBAAmB,IAAI;AAAA,SAC5C;AAAA,QAEC;AAAA;AAAA,KACH;AAAA,IACC,eAAA,oBACCC,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2KACb,QAAA,EAAA,MAAA,EACH;AAAA,GAAA,EAEJ,CAAA;AAEJ","file":"chunk-DFROB5TW.cjs","sourcesContent":["import type { ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport type { AffixPosition } from \"./inputs.types\";\nimport type { Size } from \"../../utils/types\";\n\ninterface InputWrapperProps {\n children: ReactNode;\n prefix?: ReactNode;\n suffix?: ReactNode;\n prefixPosition?: AffixPosition;\n suffixPosition?: AffixPosition;\n size?: Size;\n /** Extra padding className to apply to the input when affixes are \"inside\" */\n insidePrefixPadding?: string;\n insideSuffixPadding?: string;\n}\n\n// NOTE: these must be COMPLETE, static class strings. Tailwind only detects\n// utilities it can see verbatim in the source — building the arbitrary variant\n// at runtime (e.g. `[&_input]:${\"pl-9\"}`) means `[&_input]:ps-9` is never\n// emitted to CSS, so the inside affix gets no padding and overlaps the text\n// (issue #6). Keep input/select/textarea spelled out here.\nconst insidePaddingLeft: Record<Size, string> = {\n xs: \"[&_input]:ps-7 [&_select]:ps-7 [&_textarea]:ps-7\",\n sm: \"[&_input]:ps-8 [&_select]:ps-8 [&_textarea]:ps-8\",\n md: \"[&_input]:ps-9 [&_select]:ps-9 [&_textarea]:ps-9\",\n lg: \"[&_input]:ps-10 [&_select]:ps-10 [&_textarea]:ps-10\",\n xl: \"[&_input]:ps-11 [&_select]:ps-11 [&_textarea]:ps-11\",\n};\n\nconst insidePaddingRight: Record<Size, string> = {\n xs: \"[&_input]:pe-7 [&_select]:pe-7 [&_textarea]:pe-7\",\n sm: \"[&_input]:pe-8 [&_select]:pe-8 [&_textarea]:pe-8\",\n md: \"[&_input]:pe-9 [&_select]:pe-9 [&_textarea]:pe-9\",\n lg: \"[&_input]:pe-10 [&_select]:pe-10 [&_textarea]:pe-10\",\n xl: \"[&_input]:pe-11 [&_select]:pe-11 [&_textarea]:pe-11\",\n};\n\nconst affixOutsideClasses =\n \"inline-flex items-center border border-[color:var(--fancy-border-strong,var(--color-zinc-300))] bg-zinc-50 px-3 text-sm text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:border-[color:var(--fancy-border-strong-dark,var(--color-zinc-700))] dark:bg-zinc-800 dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]\";\n\nexport function InputWrapper({\n children,\n prefix,\n suffix,\n prefixPosition = \"inside\",\n suffixPosition = \"inside\",\n size = \"md\",\n}: InputWrapperProps) {\n const hasInsidePrefix = prefix && prefixPosition === \"inside\";\n const hasInsideSuffix = suffix && suffixPosition === \"inside\";\n const hasOutsidePrefix = prefix && prefixPosition === \"outside\";\n const hasOutsideSuffix = suffix && suffixPosition === \"outside\";\n const hasOutside = hasOutsidePrefix || hasOutsideSuffix;\n\n if (!prefix && !suffix) {\n return <>{children}</>;\n }\n\n if (hasOutside) {\n return (\n <div data-react-fancy-input-wrapper=\"\" className=\"flex\">\n {hasOutsidePrefix && (\n <span className={cn(affixOutsideClasses, \"rounded-s-lg border-e-0\")}>\n {prefix}\n </span>\n )}\n <div\n className={cn(\n \"relative flex flex-1 items-center\",\n hasInsidePrefix && \"relative\",\n )}\n >\n {hasInsidePrefix && (\n <span className=\"pointer-events-none absolute start-3 z-10 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]\">\n {prefix}\n </span>\n )}\n <div\n className={cn(\n \"w-full [&>*]:w-full\",\n hasOutsidePrefix && !hasOutsideSuffix && \"[&_input]:rounded-s-none [&_select]:rounded-s-none [&_textarea]:rounded-s-none\",\n !hasOutsidePrefix && hasOutsideSuffix && \"[&_input]:rounded-e-none [&_select]:rounded-e-none [&_textarea]:rounded-e-none\",\n hasOutsidePrefix && hasOutsideSuffix && \"[&_input]:rounded-none [&_select]:rounded-none [&_textarea]:rounded-none\",\n hasInsidePrefix && insidePaddingLeft[size],\n )}\n >\n {children}\n </div>\n {hasInsideSuffix && (\n <span className=\"pointer-events-none absolute end-3 z-10 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]\">\n {suffix}\n </span>\n )}\n </div>\n {hasOutsideSuffix && (\n <span className={cn(affixOutsideClasses, \"rounded-e-lg border-s-0\")}>\n {suffix}\n </span>\n )}\n </div>\n );\n }\n\n // Both inside\n return (\n <div data-react-fancy-input-wrapper=\"\" className=\"relative flex items-center\">\n {hasInsidePrefix && (\n <span className=\"pointer-events-none absolute start-3 z-10 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]\">\n {prefix}\n </span>\n )}\n <div\n className={cn(\n \"w-full\",\n hasInsidePrefix && insidePaddingLeft[size],\n hasInsideSuffix && insidePaddingRight[size],\n )}\n >\n {children}\n </div>\n {hasInsideSuffix && (\n <span className=\"pointer-events-none absolute end-3 z-10 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]\">\n {suffix}\n </span>\n )}\n </div>\n );\n}\n"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var chunk36IC3NDN_cjs = require('./chunk-36IC3NDN.cjs');
|
|
3
4
|
var chunkTI7D4QDM_cjs = require('./chunk-TI7D4QDM.cjs');
|
|
4
5
|
var chunkOCHUZ7J3_cjs = require('./chunk-OCHUZ7J3.cjs');
|
|
5
6
|
var chunkSNHU2AI4_cjs = require('./chunk-SNHU2AI4.cjs');
|
|
@@ -89,6 +90,10 @@ function ToastItem({ data, onDismiss }) {
|
|
|
89
90
|
}
|
|
90
91
|
ToastItem.displayName = "ToastItem";
|
|
91
92
|
var POSITION_STYLES = {
|
|
93
|
+
"top-start": "top-4 start-4",
|
|
94
|
+
"top-end": "top-4 end-4",
|
|
95
|
+
"bottom-start": "bottom-4 start-4",
|
|
96
|
+
"bottom-end": "bottom-4 end-4",
|
|
92
97
|
"top-right": "top-4 right-4",
|
|
93
98
|
"top-left": "top-4 left-4",
|
|
94
99
|
"bottom-right": "bottom-4 right-4",
|
|
@@ -114,7 +119,7 @@ function ToastStack({
|
|
|
114
119
|
frontIndex: controlledFront,
|
|
115
120
|
defaultFrontIndex = 0,
|
|
116
121
|
onFrontIndexChange,
|
|
117
|
-
position = "bottom-
|
|
122
|
+
position = "bottom-end",
|
|
118
123
|
label = "Notifications",
|
|
119
124
|
cardClassName,
|
|
120
125
|
className
|
|
@@ -199,10 +204,11 @@ function ToastStack({
|
|
|
199
204
|
tabIndex: 0,
|
|
200
205
|
onKeyDown: (e) => {
|
|
201
206
|
if (isTextField(e.target)) return;
|
|
202
|
-
|
|
207
|
+
const inline = chunk36IC3NDN_cjs.inlineStep(e.key, e.currentTarget);
|
|
208
|
+
if (e.key === "ArrowDown" || inline === 1) {
|
|
203
209
|
e.preventDefault();
|
|
204
210
|
step(1);
|
|
205
|
-
} else if (e.key === "ArrowUp" ||
|
|
211
|
+
} else if (e.key === "ArrowUp" || inline === -1) {
|
|
206
212
|
e.preventDefault();
|
|
207
213
|
step(-1);
|
|
208
214
|
}
|
|
@@ -234,7 +240,7 @@ function ToastStack({
|
|
|
234
240
|
size: "sm",
|
|
235
241
|
variant: "soft",
|
|
236
242
|
color: "zinc",
|
|
237
|
-
className: "absolute -top-2
|
|
243
|
+
className: "absolute -top-2 end-2 z-20 shadow-sm ring-1 ring-[color:var(--fancy-border,var(--color-zinc-200))] dark:bg-zinc-800 dark:text-zinc-100 dark:ring-[color:var(--fancy-border-dark,var(--color-zinc-700))]",
|
|
238
244
|
children: [
|
|
239
245
|
"+",
|
|
240
246
|
hidden
|
|
@@ -257,6 +263,10 @@ function ToastStack({
|
|
|
257
263
|
}
|
|
258
264
|
ToastStack.displayName = "ToastStack";
|
|
259
265
|
var POSITION_STYLES2 = {
|
|
266
|
+
"top-start": "top-4 start-4",
|
|
267
|
+
"top-end": "top-4 end-4",
|
|
268
|
+
"bottom-start": "bottom-4 start-4",
|
|
269
|
+
"bottom-end": "bottom-4 end-4",
|
|
260
270
|
"top-right": "top-4 right-4",
|
|
261
271
|
"top-left": "top-4 left-4",
|
|
262
272
|
"bottom-right": "bottom-4 right-4",
|
|
@@ -264,7 +274,7 @@ var POSITION_STYLES2 = {
|
|
|
264
274
|
};
|
|
265
275
|
function ToastProvider({
|
|
266
276
|
children,
|
|
267
|
-
position = "bottom-
|
|
277
|
+
position = "bottom-end",
|
|
268
278
|
maxToasts = 5
|
|
269
279
|
}) {
|
|
270
280
|
const [toasts, setToasts] = react.useState([]);
|
|
@@ -304,5 +314,5 @@ var Toast = {
|
|
|
304
314
|
|
|
305
315
|
exports.Toast = Toast;
|
|
306
316
|
exports.useToast = useToast;
|
|
307
|
-
//# sourceMappingURL=chunk-
|
|
308
|
-
//# sourceMappingURL=chunk-
|
|
317
|
+
//# sourceMappingURL=chunk-DPPDZOMY.cjs.map
|
|
318
|
+
//# sourceMappingURL=chunk-DPPDZOMY.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Toast/Toast.context.ts","../src/components/Toast/ToastItem.tsx","../src/components/Toast/ToastStack.tsx","../src/components/Toast/Toast.tsx"],"names":["createContext","useContext","useEffect","jsx","cn","jsxs","Check","XCircle","AlertTriangle","Info","X","useControllableState","useRef","inlineStep","Badge","Portal","POSITION_STYLES","useState","useCallback","useMemo"],"mappings":"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","file":"chunk-DPPDZOMY.cjs","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { ToastContextValue } from \"./Toast.types\";\n\nexport const ToastContext = createContext<ToastContextValue | null>(null);\n\nexport function useToast(): ToastContextValue {\n const ctx = useContext(ToastContext);\n if (!ctx) {\n throw new Error(\"useToast must be used within a <Toast.Provider>\");\n }\n return ctx;\n}\n","import { useEffect } from \"react\";\nimport { AlertTriangle, Check, Info, X, XCircle } from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport type { ToastItemProps } from \"./Toast.types\";\n\nconst VARIANT_STYLES = {\n default:\n \"border-[color:var(--fancy-border,var(--color-zinc-200))] bg-[color:var(--fancy-surface,var(--color-white))] dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))] dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))]\",\n success:\n \"border-emerald-200 bg-emerald-50 dark:border-emerald-800 dark:bg-emerald-950\",\n error:\n \"border-red-200 bg-red-50 dark:border-red-800 dark:bg-red-950\",\n warning:\n \"border-amber-200 bg-amber-50 dark:border-amber-800 dark:bg-amber-950\",\n info: \"border-blue-200 bg-blue-50 dark:border-blue-800 dark:bg-blue-950\",\n} as const;\n\nconst VARIANT_ICON_COLORS = {\n default: \"text-zinc-400\",\n success: \"text-emerald-500\",\n error: \"text-red-500\",\n warning: \"text-amber-500\",\n info: \"text-blue-500\",\n} as const;\n\nexport function ToastItem({ data, onDismiss }: ToastItemProps) {\n const { id, title, description, variant = \"default\", action } = data;\n // An action toast does not expire by default.\n const duration = data.duration ?? (action ? 0 : 5000);\n\n useEffect(() => {\n if (duration <= 0) return;\n const timer = setTimeout(() => onDismiss(id), duration);\n return () => clearTimeout(timer);\n }, [id, duration, onDismiss]);\n\n return (\n <div\n data-react-fancy-toast-item=\"\"\n role=\"alert\"\n // Scoped to the toast rather than the document: a global Escape handler\n // would fight whatever modal or drawer is already listening.\n onKeyDown={(e) => {\n if (e.key === \"Escape\") onDismiss(id);\n }}\n className={cn(\n \"fancy-toast-in pointer-events-auto w-80 rounded-xl border p-4 shadow-lg\",\n VARIANT_STYLES[variant],\n )}\n >\n <div className=\"flex items-start gap-3\">\n <div className={cn(\"mt-0.5 shrink-0\", VARIANT_ICON_COLORS[variant])}>\n {variant === \"success\" && <Check size={16} />}\n {variant === \"error\" && <XCircle size={16} />}\n {variant === \"warning\" && <AlertTriangle size={16} />}\n {variant === \"info\" && <Info size={16} />}\n </div>\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium text-[color:var(--fancy-text,var(--color-zinc-900))] dark:text-[color:var(--fancy-text-dark,var(--color-zinc-100))]\">{title}</p>\n {description && (\n <p className=\"mt-1 text-xs text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]\">\n {description}\n </p>\n )}\n </div>\n {action && (\n <button\n type=\"button\"\n onClick={() => {\n action.onClick();\n // The offer is consumed; leaving it up invites undoing an\n // already-undone action.\n onDismiss(id);\n }}\n className=\"shrink-0 self-center rounded-md px-2 py-1 text-xs font-medium text-zinc-700 underline-offset-2 transition-colors hover:bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] hover:underline dark:text-zinc-200 dark:hover:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]\"\n >\n {action.label}\n </button>\n )}\n <button\n type=\"button\"\n onClick={() => onDismiss(id)}\n className=\"shrink-0 rounded p-0.5 text-zinc-400 transition-colors hover:text-zinc-600 dark:hover:text-zinc-300\"\n aria-label=\"Dismiss\"\n >\n <X size={14} />\n </button>\n </div>\n </div>\n );\n}\n\nToastItem.displayName = \"ToastItem\";\n","import { useEffect, useRef, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { inlineStep } from \"../../utils/direction\";\nimport { useControllableState } from \"../../hooks/use-controllable-state\";\nimport { Portal } from \"../Portal\";\nimport { Badge } from \"../Badge\";\nimport type { ToastPosition } from \"./Toast.types\";\n\nexport interface ToastStackProps<T> {\n /**\n * Everything to show — the stack is a VIEW of this list and owns none of it.\n * There is no limit and no timer: an item leaves only when you remove it.\n */\n items: readonly T[];\n /** One card's content, actions included. Only the front card is interactive. */\n renderItem: (item: T, state: { index: number; isFront: boolean }) => ReactNode;\n /** A stable key per item. Defaults to `item.id`, then the index. */\n getKey?: (item: T, index: number) => string;\n /** How many cards show behind the front one. Default 2. */\n depth?: number;\n /** How far each card behind peeks out above the one in front, in px. Default 8. */\n offset?: number;\n /** How much smaller each card behind is than the one in front. Default 0.05. */\n scaleStep?: number;\n /** Which item is in front, if you want to own it. Wraps; out-of-range values are clamped. */\n frontIndex?: number;\n defaultFrontIndex?: number;\n onFrontIndexChange?: (index: number) => void;\n /** A screen corner, or `\"inline\"` to render where it is placed. Default `\"bottom-end\"`: the right in LTR, the left in RTL. */\n position?: ToastPosition | \"inline\";\n /** The stack's accessible name. Default \"Notifications\". */\n label?: string;\n /** Classes for each card's shell, merged onto the defaults. */\n cardClassName?: string;\n className?: string;\n}\n\nconst POSITION_STYLES: Record<ToastPosition, string> = {\n \"top-start\": \"top-4 start-4\",\n \"top-end\": \"top-4 end-4\",\n \"bottom-start\": \"bottom-4 start-4\",\n \"bottom-end\": \"bottom-4 end-4\",\n \"top-right\": \"top-4 right-4\",\n \"top-left\": \"top-4 left-4\",\n \"bottom-right\": \"bottom-4 right-4\",\n \"bottom-left\": \"bottom-4 left-4\",\n};\n\n/** Pixels of wheel travel that count as one step. A mouse notch is ~100; a trackpad sends many small ones. */\nconst WHEEL_STEP = 50;\n\nconst CARD =\n \"rounded-xl border border-[color:var(--fancy-border,var(--color-zinc-200))] bg-[color:var(--fancy-surface,var(--color-white))] p-4 shadow-lg dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))] dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))]\";\n\nfunction defaultKey(item: unknown, index: number): string {\n const id = (item as { id?: unknown } | null)?.id;\n return typeof id === \"string\" || typeof id === \"number\" ? String(id) : String(index);\n}\n\nfunction isTextField(target: EventTarget | null): boolean {\n if (!(target instanceof HTMLElement)) return false;\n return (\n target.isContentEditable ||\n target.getAttribute(\"contenteditable\") === \"true\" ||\n /^(INPUT|TEXTAREA|SELECT)$/.test(target.tagName)\n );\n}\n\n/**\n * A controlled stack of actionable toasts — approval requests, say — that the\n * person walks through rather than races.\n *\n * Built for react-fancy#33. The owner's requirements were that requests stack\n * behind each other with a slight top offset, that scrolling over the stack\n * walks through them, and that a pending request NEVER expires or disappears.\n * The last is why this is a view of the caller's list rather than a queue it\n * keeps: there is nothing here that can drop an item, because nothing here owns\n * one. (The imperative provider's `maxToasts` silently drops the oldest.)\n */\nexport function ToastStack<T>({\n items,\n renderItem,\n getKey = defaultKey,\n depth = 2,\n offset = 8,\n scaleStep = 0.05,\n frontIndex: controlledFront,\n defaultFrontIndex = 0,\n onFrontIndexChange,\n position = \"bottom-end\",\n label = \"Notifications\",\n cardClassName,\n className,\n}: ToastStackProps<T>) {\n const [rawFront, setFront] = useControllableState(\n controlledFront,\n defaultFrontIndex,\n onFrontIndexChange,\n );\n const count = items.length;\n // Clamped for display rather than corrected through onChange: a list that\n // shrinks under a far-forward index must not make render report a change.\n const front = count === 0 ? 0 : ((rawFront % count) + count) % count;\n\n const stackRef = useRef<HTMLDivElement>(null);\n const wheelTravel = useRef(0);\n const live = useRef({ front, count });\n live.current = { front, count };\n\n const step = (by: number) => {\n const { front: current, count: n } = live.current;\n if (n < 2) return;\n setFront((((current + by) % n) + n) % n);\n };\n const stepRef = useRef(step);\n stepRef.current = step;\n\n /*\n * A native listener, because React's wheel listener is passive and cannot stop\n * the page scrolling underneath — and a stack that cycles AND scrolls the page\n * moves two things at once under the person's hand.\n */\n useEffect(() => {\n const el = stackRef.current;\n if (!el) return;\n\n const onWheel = (e: WheelEvent) => {\n if (live.current.count < 2 || e.deltaY === 0) return;\n e.preventDefault();\n\n // Line or page mode: every event is a notch.\n if (e.deltaMode !== 0) {\n wheelTravel.current = 0;\n stepRef.current(Math.sign(e.deltaY));\n return;\n }\n // A notch-sized event steps at once; small trackpad deltas add up first.\n if (Math.abs(e.deltaY) >= WHEEL_STEP) {\n wheelTravel.current = 0;\n stepRef.current(Math.sign(e.deltaY));\n return;\n }\n wheelTravel.current += e.deltaY;\n if (Math.abs(wheelTravel.current) >= WHEEL_STEP) {\n stepRef.current(Math.sign(wheelTravel.current));\n wheelTravel.current = 0;\n }\n };\n\n el.addEventListener(\"wheel\", onWheel, { passive: false });\n return () => el.removeEventListener(\"wheel\", onWheel);\n // Re-bound when the element can change: it appears with the first item, and\n // moving between a corner and inline remounts it.\n }, [count > 0, position]);\n\n if (count === 0) return null;\n\n const visibleBehind = Math.min(Math.max(0, depth), count - 1);\n const hidden = count - 1 - visibleBehind;\n\n const card = (index: number, k: number) => {\n const item = items[index];\n const isFront = k === 0;\n return (\n <div\n key={getKey(item, index)}\n data-react-fancy-toast-stack-card={isFront ? \"front\" : \"behind\"}\n aria-hidden={isFront ? undefined : true}\n inert={isFront ? undefined : true}\n className={cn(\n CARD,\n \"origin-top transition-transform duration-200\",\n isFront ? \"relative\" : \"pointer-events-none absolute inset-0 overflow-hidden\",\n cardClassName,\n )}\n style={{\n zIndex: depth + 1 - k,\n transform: isFront ? undefined : `translateY(-${k * offset}px) scale(${1 - k * scaleStep})`,\n }}\n >\n {renderItem(item, { index, isFront })}\n </div>\n );\n };\n\n const stackEl = (\n <div\n ref={stackRef}\n data-react-fancy-toast-stack=\"\"\n role=\"region\"\n aria-label={label}\n tabIndex={0}\n onKeyDown={(e) => {\n if (isTextField(e.target)) return;\n // Left / right follow the reading direction: ArrowLeft is \"next\" in RTL.\n const inline = inlineStep(e.key, e.currentTarget);\n if (e.key === \"ArrowDown\" || inline === 1) {\n e.preventDefault();\n step(1);\n } else if (e.key === \"ArrowUp\" || inline === -1) {\n e.preventDefault();\n step(-1);\n }\n }}\n className={cn(\n \"pointer-events-auto relative w-80 rounded-xl outline-none focus-visible:ring-2 focus-visible:ring-violet-500 focus-visible:ring-offset-2\",\n className,\n )}\n style={{ paddingTop: visibleBehind * offset }}\n >\n <div className=\"relative\">\n {/*\n * z-index decides what paints on top; the front card sizes the box.\n * The front card comes FIRST in the DOM, then the cards behind in walk\n * order: the ones behind are absolutely positioned against this box, so\n * their place in the source changes nothing visible -- but it is what\n * a DOM query, `textContent` and copy-paste read.\n */}\n {card(front, 0)}\n {Array.from({ length: visibleBehind }, (_, i) => i + 1).map((k) =>\n card((front + k) % count, k),\n )}\n </div>\n {hidden > 0 && (\n /*\n * Opaque in BOTH themes, because it sits over the cards peeking out\n * behind the front one -- often a light image header. The soft zinc\n * Badge is `dark:bg-zinc-900/30`, which let that image through and left\n * zinc-300 text on a light screenshot (fancy-app-update#1). The dark\n * pair is overridden here, not in Badge, so every other soft badge\n * keeps its look; the ring separates it from a zinc-900 card edge.\n */\n <Badge\n data-react-fancy-toast-stack-more=\"\"\n size=\"sm\"\n variant=\"soft\"\n color=\"zinc\"\n className=\"absolute -top-2 end-2 z-20 shadow-sm ring-1 ring-[color:var(--fancy-border,var(--color-zinc-200))] dark:bg-zinc-800 dark:text-zinc-100 dark:ring-[color:var(--fancy-border-dark,var(--color-zinc-700))]\"\n >\n +{hidden}\n </Badge>\n )}\n <span data-react-fancy-toast-stack-status=\"\" aria-live=\"polite\" className=\"sr-only\">\n {count > 1 ? `${front + 1} of ${count}` : \"\"}\n </span>\n </div>\n );\n\n if (position === \"inline\") return stackEl;\n\n return (\n <Portal>\n <div\n data-react-fancy-toast-stack-position={position}\n className={cn(\"pointer-events-none fixed z-[100]\", POSITION_STYLES[position])}\n >\n {stackEl}\n </div>\n </Portal>\n );\n}\n\nToastStack.displayName = \"ToastStack\";\n","import { useCallback, useMemo, useRef, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { Portal } from \"../Portal\";\nimport { ToastContext } from \"./Toast.context\";\nimport { ToastItem } from \"./ToastItem\";\nimport { ToastStack } from \"./ToastStack\";\nimport type { ToastData, ToastProviderProps } from \"./Toast.types\";\n\nconst POSITION_STYLES = {\n \"top-start\": \"top-4 start-4\",\n \"top-end\": \"top-4 end-4\",\n \"bottom-start\": \"bottom-4 start-4\",\n \"bottom-end\": \"bottom-4 end-4\",\n \"top-right\": \"top-4 right-4\",\n \"top-left\": \"top-4 left-4\",\n \"bottom-right\": \"bottom-4 right-4\",\n \"bottom-left\": \"bottom-4 left-4\",\n} as const;\n\nfunction ToastProvider({\n children,\n position = \"bottom-end\",\n maxToasts = 5,\n}: ToastProviderProps) {\n const [toasts, setToasts] = useState<ToastData[]>([]);\n const idCounter = useRef(0);\n\n const toast = useCallback(\n (data: Omit<ToastData, \"id\">) => {\n const id = `toast-${++idCounter.current}`;\n setToasts((prev) => [...prev.slice(-(maxToasts - 1)), { ...data, id }]);\n return id;\n },\n [maxToasts],\n );\n\n const dismiss = useCallback((id: string) => {\n setToasts((prev) => prev.filter((t) => t.id !== id));\n }, []);\n\n const ctx = useMemo(() => ({ toasts, toast, dismiss }), [toasts, toast, dismiss]);\n\n return (\n <ToastContext.Provider value={ctx}>\n {children}\n <Portal>\n <div\n data-react-fancy-toast=\"\"\n className={cn(\n \"fixed z-[100] flex flex-col gap-2 pointer-events-none\",\n POSITION_STYLES[position],\n )}\n >\n {toasts.map((t) => (\n <ToastItem key={t.id} data={t} onDismiss={dismiss} />\n ))}\n </div>\n </Portal>\n </ToastContext.Provider>\n );\n}\n\nexport const Toast = {\n Provider: ToastProvider,\n Stack: ToastStack,\n Item: ToastItem,\n};\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useAnimation } from './chunk-3K2CEAI7.js';
|
|
2
|
-
import { useFloatingPosition } from './chunk-
|
|
2
|
+
import { useFloatingPosition } from './chunk-GJWNZMJT.js';
|
|
3
3
|
import { Portal } from './chunk-RBCMKPBX.js';
|
|
4
4
|
import { useOutsideClick } from './chunk-RGANGU7X.js';
|
|
5
5
|
import { useEscapeKey } from './chunk-YX6FTJ6N.js';
|
|
@@ -193,6 +193,7 @@ function DropdownItems({ children, className }) {
|
|
|
193
193
|
animClass,
|
|
194
194
|
className
|
|
195
195
|
),
|
|
196
|
+
dir: position.dir,
|
|
196
197
|
style: { left: position.x, top: position.y },
|
|
197
198
|
children
|
|
198
199
|
}
|
|
@@ -216,7 +217,7 @@ function DropdownItem({
|
|
|
216
217
|
disabled,
|
|
217
218
|
"aria-disabled": disabled,
|
|
218
219
|
className: cn(
|
|
219
|
-
"flex w-full items-center rounded-lg px-3 py-2 text-
|
|
220
|
+
"flex w-full items-center rounded-lg px-3 py-2 text-start text-sm transition-colors",
|
|
220
221
|
danger ? "text-red-600 hover:bg-red-50 dark:text-red-400 dark:hover:bg-red-950" : "text-[color:var(--fancy-text-soft,var(--color-zinc-700))] hover:bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] dark:text-[color:var(--fancy-text-soft-dark,var(--color-zinc-300))] dark:hover:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]",
|
|
221
222
|
disabled && "cursor-not-allowed opacity-50",
|
|
222
223
|
className
|
|
@@ -289,5 +290,5 @@ var Dropdown = Object.assign(DropdownRoot, {
|
|
|
289
290
|
});
|
|
290
291
|
|
|
291
292
|
export { Dropdown, useDropdown };
|
|
292
|
-
//# sourceMappingURL=chunk-
|
|
293
|
-
//# sourceMappingURL=chunk-
|
|
293
|
+
//# sourceMappingURL=chunk-DW2PHLOA.js.map
|
|
294
|
+
//# sourceMappingURL=chunk-DW2PHLOA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Dropdown/Dropdown.context.ts","../src/components/Dropdown/dropdown-focus.ts","../src/components/Dropdown/DropdownTrigger.tsx","../src/components/Dropdown/DropdownItems.tsx","../src/components/Dropdown/DropdownItem.tsx","../src/components/Dropdown/DropdownSeparator.tsx","../src/components/Dropdown/Dropdown.tsx"],"names":["jsx","useState","useRef","useCallback"],"mappings":"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","file":"chunk-DW2PHLOA.js","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { DropdownContextValue } from \"./Dropdown.types\";\n\nexport const DropdownContext = createContext<DropdownContextValue | null>(null);\n\nexport function useDropdown(): DropdownContextValue {\n const ctx = useContext(DropdownContext);\n if (!ctx) {\n throw new Error(\n \"Dropdown compound components must be used within <Dropdown>\",\n );\n }\n return ctx;\n}\n","/** Enabled menu items, in DOM order. Disabled items are skipped. */\nexport function menuItems(menu: HTMLElement | null): HTMLElement[] {\n if (!menu) return [];\n return Array.from(\n menu.querySelectorAll<HTMLElement>('[role=\"menuitem\"]:not([aria-disabled=\"true\"]):not([disabled])'),\n );\n}\n\nexport type FocusMove = \"first\" | \"last\" | \"next\" | \"prev\";\n\n/**\n * Focus an item relative to the one that currently has focus, wrapping at both\n * ends. Returns the index focused, or -1 when the menu has no enabled item.\n */\nexport function focusMenuItem(menu: HTMLElement | null, move: FocusMove): number {\n const items = menuItems(menu);\n if (items.length === 0) return -1;\n const current = items.indexOf(document.activeElement as HTMLElement);\n let next: number;\n if (move === \"first\") next = 0;\n else if (move === \"last\") next = items.length - 1;\n else if (current === -1) next = move === \"next\" ? 0 : items.length - 1;\n else next = (current + (move === \"next\" ? 1 : -1) + items.length) % items.length;\n items[next]!.focus();\n return next;\n}\n\n/**\n * Typeahead: focus the next enabled item (after the focused one, wrapping)\n * whose text starts with `char`. Returns the index focused, or -1 for no match.\n */\nexport function focusByChar(menu: HTMLElement | null, char: string): number {\n const items = menuItems(menu);\n if (items.length === 0) return -1;\n const needle = char.toLowerCase();\n const start = items.indexOf(document.activeElement as HTMLElement);\n for (let step = 1; step <= items.length; step++) {\n const i = (start + step + items.length) % items.length;\n if ((items[i]!.textContent ?? \"\").trim().toLowerCase().startsWith(needle)) {\n items[i]!.focus();\n return i;\n }\n }\n return -1;\n}\n","import type { KeyboardEvent, MouseEvent } from \"react\";\nimport { useDropdown } from \"./Dropdown.context\";\nimport { focusMenuItem } from \"./dropdown-focus\";\nimport type { DropdownTriggerProps } from \"./Dropdown.types\";\n\n/**\n * Elements the browser itself turns Enter / Space into a click on. For these\n * the trigger lets the native click open the menu; for anything else (an\n * avatar span with `tabIndex`) it opens the menu itself.\n */\nfunction activatesNatively(el: EventTarget | null): boolean {\n if (!(el instanceof HTMLElement)) return false;\n const tag = el.tagName;\n if (tag === \"BUTTON\" || tag === \"SUMMARY\") return true;\n if (tag === \"A\") return el.hasAttribute(\"href\");\n if (tag === \"INPUT\") {\n const type = (el as HTMLInputElement).type;\n return type === \"button\" || type === \"submit\" || type === \"reset\" || type === \"image\";\n }\n return false;\n}\n\nexport function DropdownTrigger({ children }: DropdownTriggerProps) {\n const { setOpen, open, anchorRef, pendingFocusRef, menuRef } = useDropdown();\n\n // WAI-ARIA menu button: Enter / Space / ArrowDown open the menu on its first\n // item, ArrowUp on its last.\n const onKeyDown = (e: KeyboardEvent<HTMLSpanElement>) => {\n if (e.defaultPrevented) return;\n\n if (e.key === \"ArrowDown\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n const target = e.key === \"ArrowDown\" ? \"first\" : \"last\";\n if (open && menuRef.current) {\n focusMenuItem(menuRef.current, target);\n return;\n }\n pendingFocusRef.current = target;\n setOpen(true);\n return;\n }\n\n if (e.key === \"Enter\" || e.key === \" \") {\n if (!open) pendingFocusRef.current = \"first\";\n if (activatesNatively(e.target)) return; // its click toggles the menu\n e.preventDefault();\n if (open) pendingFocusRef.current = null;\n setOpen(!open);\n }\n };\n\n const onClick = (_e: MouseEvent<HTMLSpanElement>) => {\n if (open) pendingFocusRef.current = null;\n setOpen(!open);\n };\n\n return (\n <span\n ref={anchorRef as React.RefObject<HTMLSpanElement>}\n data-react-fancy-dropdown-trigger=\"\"\n className=\"inline-flex\"\n onClick={onClick}\n onKeyDown={onKeyDown}\n aria-expanded={open}\n aria-haspopup=\"menu\"\n >\n {children}\n </span>\n );\n}\n\nDropdownTrigger.displayName = \"DropdownTrigger\";\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { focusByChar, focusMenuItem, type FocusMove } from \"./dropdown-focus\";\nimport { cn } from \"../../utils/cn\";\nimport { Portal } from \"../Portal\";\nimport { useDropdown } from \"./Dropdown.context\";\nimport { useFloatingPosition } from \"../../hooks/use-floating-position\";\nimport { useOutsideClick } from \"../../hooks/use-outside-click\";\nimport { useEscapeKey } from \"../../hooks/use-escape-key\";\nimport { useAnimation } from \"../../hooks/use-animation\";\nimport type { DropdownItemsProps } from \"./Dropdown.types\";\n\nexport function DropdownItems({ children, className }: DropdownItemsProps) {\n const {\n open,\n setOpen,\n anchorRef,\n setActiveIndex,\n placement,\n offset,\n pendingFocusRef,\n menuRef,\n focusTrigger,\n } = useDropdown();\n const floatingRef = useRef<HTMLDivElement>(null);\n const outsideRef = useRef<HTMLDivElement>(null);\n\n const position = useFloatingPosition(anchorRef, floatingRef, {\n placement,\n offset,\n enabled: open,\n });\n\n const close = useCallback(() => {\n pendingFocusRef.current = null;\n setOpen(false);\n setActiveIndex(-1);\n }, [setOpen, setActiveIndex, pendingFocusRef]);\n\n useOutsideClick(outsideRef, close, open, anchorRef);\n // Escape closes THIS menu (the innermost layer) and returns focus to where\n // the menu came from. An outside click does not move focus: the user put it\n // somewhere already.\n useEscapeKey(() => {\n close();\n focusTrigger();\n }, open);\n\n const { mounted, className: animClass, ref: animRef } = useAnimation({\n open,\n enterClass: \"fancy-scale-in\",\n exitClass: \"fancy-fade-out\",\n });\n\n // The menu element, as STATE. It does not exist when `open` first turns true:\n // `useAnimation` mounts it a render later and `Portal` a render after that.\n // Before 5.64.1 the key handler lived in an effect keyed on `open` that\n // returned early while the element was null and never re-ran, so the arrow\n // keys did nothing in any Dropdown. Keying on the element itself fixes the\n // timing for good.\n const [menuEl, setMenuEl] = useState<HTMLDivElement | null>(null);\n\n const setMenuRef = useCallback(\n (node: HTMLDivElement | null) => {\n outsideRef.current = node;\n floatingRef.current = node;\n (animRef as React.MutableRefObject<HTMLElement | null>).current = node;\n menuRef.current = node;\n setMenuEl(node);\n },\n [animRef, menuRef],\n );\n\n // Opened from the keyboard: focus the first / last item once it exists.\n useEffect(() => {\n if (!open || !menuEl) return;\n const target = pendingFocusRef.current;\n if (!target) return;\n pendingFocusRef.current = null;\n setActiveIndex(focusMenuItem(menuEl, target));\n }, [open, menuEl, pendingFocusRef, setActiveIndex]);\n\n // Keys are handled on the menu itself: focus is inside it while it is driven\n // from the keyboard, and React delivers the event through the portal.\n const onKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n const menu = e.currentTarget;\n const moves: Record<string, FocusMove> = {\n ArrowDown: \"next\",\n ArrowUp: \"prev\",\n Home: \"first\",\n End: \"last\",\n };\n const move = moves[e.key];\n if (move) {\n e.preventDefault();\n setActiveIndex(focusMenuItem(menu, move));\n return;\n }\n if (e.key === \"Tab\") {\n // Close, and put focus back on the trigger WITHOUT preventing the\n // default: the browser's own Tab then moves on from the trigger's place\n // in the tab order rather than from the end of <body>, where the\n // portalled menu lives.\n close();\n focusTrigger();\n return;\n }\n if (e.key.length === 1 && e.key !== \" \" && !e.ctrlKey && !e.metaKey && !e.altKey) {\n const i = focusByChar(menu, e.key);\n if (i >= 0) setActiveIndex(i);\n }\n };\n\n if (!mounted) return null;\n\n return (\n <Portal>\n <div\n ref={setMenuRef}\n data-react-fancy-dropdown=\"\"\n role=\"menu\"\n onKeyDown={onKeyDown}\n className={cn(\n \"fixed z-50 min-w-[8rem] rounded-xl border border-[color:var(--fancy-border,var(--color-zinc-200))] bg-[color:var(--fancy-surface,var(--color-white))] p-1 shadow-lg dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))] dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))]\",\n animClass,\n className,\n )}\n dir={position.dir}\n style={{ left: position.x, top: position.y }}\n >\n {children}\n </div>\n </Portal>\n );\n}\n\nDropdownItems.displayName = \"DropdownItems\";\n","import { cn } from \"../../utils/cn\";\nimport { useDropdown } from \"./Dropdown.context\";\nimport type { DropdownItemProps } from \"./Dropdown.types\";\n\nexport function DropdownItem({\n children,\n onClick,\n disabled = false,\n danger = false,\n className,\n}: DropdownItemProps) {\n const { setOpen, focusTrigger } = useDropdown();\n\n return (\n <button\n data-react-fancy-dropdown-item=\"\"\n type=\"button\"\n role=\"menuitem\"\n disabled={disabled}\n aria-disabled={disabled}\n className={cn(\n \"flex w-full items-center rounded-lg px-3 py-2 text-start text-sm transition-colors\",\n danger\n ? \"text-red-600 hover:bg-red-50 dark:text-red-400 dark:hover:bg-red-950\"\n : \"text-[color:var(--fancy-text-soft,var(--color-zinc-700))] hover:bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] dark:text-[color:var(--fancy-text-soft-dark,var(--color-zinc-300))] dark:hover:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]\",\n disabled && \"cursor-not-allowed opacity-50\",\n className,\n )}\n onClick={(e) => {\n if (disabled) return;\n const hadFocus = document.activeElement === e.currentTarget;\n onClick?.();\n setOpen(false);\n // The item is about to unmount; without this, focus falls to <body>.\n // Only when the item held focus, and only if onClick did not move it.\n if (hadFocus && document.activeElement === e.currentTarget) focusTrigger();\n }}\n >\n {children}\n </button>\n );\n}\n\nDropdownItem.displayName = \"DropdownItem\";\n","import { cn } from \"../../utils/cn\";\nimport type { DropdownSeparatorProps } from \"./Dropdown.types\";\n\nexport function DropdownSeparator({ className }: DropdownSeparatorProps) {\n return (\n <div\n data-react-fancy-dropdown-separator=\"\"\n role=\"separator\"\n className={cn(\n \"my-1 h-px bg-[color:var(--fancy-border,var(--color-zinc-200))] dark:bg-[color:var(--fancy-border-dark,var(--color-zinc-700))]\",\n className,\n )}\n />\n );\n}\n\nDropdownSeparator.displayName = \"DropdownSeparator\";\n","import { useCallback, useMemo, useRef, useState } from \"react\";\nimport { DropdownContext } from \"./Dropdown.context\";\nimport { DropdownTrigger } from \"./DropdownTrigger\";\nimport { DropdownItems } from \"./DropdownItems\";\nimport { DropdownItem } from \"./DropdownItem\";\nimport { DropdownSeparator } from \"./DropdownSeparator\";\nimport type { DropdownProps } from \"./Dropdown.types\";\n\nconst TRIGGER_FOCUSABLE =\n 'button:not([disabled]), a[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\nfunction DropdownRoot({\n children,\n placement = \"bottom-start\",\n offset = 4,\n}: DropdownProps) {\n const [open, setOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState(-1);\n const anchorRef = useRef<HTMLElement>(null);\n const pendingFocusRef = useRef<\"first\" | \"last\" | null>(null);\n const menuRef = useRef<HTMLElement | null>(null);\n\n const focusTrigger = useCallback(() => {\n const anchor = anchorRef.current;\n if (!anchor) return;\n const target =\n anchor.querySelector<HTMLElement>(TRIGGER_FOCUSABLE) ?? (anchor.tabIndex >= 0 ? anchor : null);\n target?.focus();\n }, []);\n\n const ctx = useMemo(\n () => ({\n open,\n setOpen,\n anchorRef,\n activeIndex,\n setActiveIndex,\n placement,\n offset,\n pendingFocusRef,\n menuRef,\n focusTrigger,\n }),\n [open, anchorRef, activeIndex, placement, offset, focusTrigger],\n );\n\n return (\n <DropdownContext.Provider value={ctx}>{children}</DropdownContext.Provider>\n );\n}\n\nexport const Dropdown = Object.assign(DropdownRoot, {\n Trigger: DropdownTrigger,\n Items: DropdownItems,\n Item: DropdownItem,\n Separator: DropdownSeparator,\n});\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunk6V44RRSB_cjs = require('./chunk-6V44RRSB.cjs');
|
|
4
|
-
var
|
|
4
|
+
var chunkXGGAAG74_cjs = require('./chunk-XGGAAG74.cjs');
|
|
5
5
|
var chunkTI7D4QDM_cjs = require('./chunk-TI7D4QDM.cjs');
|
|
6
6
|
var chunkKJ22KE56_cjs = require('./chunk-KJ22KE56.cjs');
|
|
7
7
|
var chunkL3V3BYVS_cjs = require('./chunk-L3V3BYVS.cjs');
|
|
@@ -39,7 +39,7 @@ var Autocomplete = react.forwardRef(
|
|
|
39
39
|
const anchorRef = react.useRef(null);
|
|
40
40
|
const listRef = react.useRef(null);
|
|
41
41
|
const wrapperRef = react.useRef(null);
|
|
42
|
-
const position =
|
|
42
|
+
const position = chunkXGGAAG74_cjs.useFloatingPosition(anchorRef, listRef, {
|
|
43
43
|
placement: "bottom-start",
|
|
44
44
|
offset: 4,
|
|
45
45
|
enabled: open
|
|
@@ -156,6 +156,7 @@ var Autocomplete = react.forwardRef(
|
|
|
156
156
|
{
|
|
157
157
|
ref: listRef,
|
|
158
158
|
role: "listbox",
|
|
159
|
+
dir: position.dir,
|
|
159
160
|
className: "fixed z-50 max-h-60 min-w-[8rem] overflow-y-auto rounded-xl border border-[color:var(--fancy-border,var(--color-zinc-200))] bg-[color:var(--fancy-surface,var(--color-white))] p-1 shadow-lg dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))] dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))] dark:shadow-zinc-950/50 fancy-scale-in",
|
|
160
161
|
style: {
|
|
161
162
|
left: position.x,
|
|
@@ -171,7 +172,7 @@ var Autocomplete = react.forwardRef(
|
|
|
171
172
|
disabled: option.disabled,
|
|
172
173
|
onClick: () => select(option.value),
|
|
173
174
|
className: chunkZU5Q77OT_cjs.cn(
|
|
174
|
-
"flex w-full items-center rounded-lg px-3 py-2 text-
|
|
175
|
+
"flex w-full items-center rounded-lg px-3 py-2 text-start text-sm text-zinc-700 transition-colors dark:text-zinc-200",
|
|
175
176
|
i === activeIndex ? "bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] dark:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]" : "hover:bg-[color:var(--fancy-surface-hover,var(--color-zinc-50))] dark:hover:bg-[color:var(--fancy-surface-hover-dark,color-mix(in_oklab,var(--color-zinc-800)_50%,transparent))]",
|
|
176
177
|
option.disabled && "cursor-not-allowed opacity-50"
|
|
177
178
|
),
|
|
@@ -199,5 +200,5 @@ function HighlightMatch({ text, query }) {
|
|
|
199
200
|
Autocomplete.displayName = "Autocomplete";
|
|
200
201
|
|
|
201
202
|
exports.Autocomplete = Autocomplete;
|
|
202
|
-
//# sourceMappingURL=chunk-
|
|
203
|
-
//# sourceMappingURL=chunk-
|
|
203
|
+
//# sourceMappingURL=chunk-DXLPBLNC.cjs.map
|
|
204
|
+
//# sourceMappingURL=chunk-DXLPBLNC.cjs.map
|