@particle-academy/react-fancy 6.8.0 → 6.10.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 +42 -0
- package/README.md +1 -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-6GVOW3UL.js → chunk-24RWB7Q3.js} +12 -11
- package/dist/chunk-24RWB7Q3.js.map +1 -0
- 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-37D5PYEF.js → chunk-3O3ZWWLG.js} +17 -4
- package/dist/chunk-3O3ZWWLG.js.map +1 -0
- package/dist/{chunk-5TP642UT.js → chunk-3W6BKQVZ.js} +12 -11
- package/dist/chunk-3W6BKQVZ.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-OASSZI6M.cjs → chunk-6B43ARGW.cjs} +5 -4
- package/dist/chunk-6B43ARGW.cjs.map +1 -0
- 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-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-I2VAGZXY.cjs → chunk-7N7XVBH7.cjs} +11 -11
- package/dist/{chunk-I2VAGZXY.cjs.map → chunk-7N7XVBH7.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-NSJBVV7R.js → chunk-BPTCMI3E.js} +21 -10
- package/dist/chunk-BPTCMI3E.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-RWU2MFUL.js → chunk-C2VGO375.js} +5 -4
- package/dist/chunk-C2VGO375.js.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-KOTUFZJ6.cjs → chunk-DQWAG7YY.cjs} +14 -11
- package/dist/chunk-DQWAG7YY.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-XBFTO64U.cjs → chunk-EDIB6V6Y.cjs} +4 -4
- package/dist/{chunk-XBFTO64U.cjs.map → chunk-EDIB6V6Y.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-HNJXBMHI.cjs → chunk-EEFU5BVM.cjs} +40 -39
- package/dist/chunk-EEFU5BVM.cjs.map +1 -0
- package/dist/{chunk-KOAMRCSC.cjs → chunk-ETUDUDSL.cjs} +14 -11
- package/dist/chunk-ETUDUDSL.cjs.map +1 -0
- package/dist/{chunk-PJNUGSKI.js → chunk-EW2N52FD.js} +26 -25
- package/dist/chunk-EW2N52FD.js.map +1 -0
- package/dist/{chunk-6PRXG7L6.js → chunk-FECD3WKN.js} +4 -4
- package/dist/{chunk-6PRXG7L6.js.map → chunk-FECD3WKN.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-QTS4Q2NK.js → chunk-FNHKZMMI.js} +4 -3
- package/dist/chunk-FNHKZMMI.js.map +1 -0
- package/dist/{chunk-QP6VNKLW.cjs → chunk-FNPII6TF.cjs} +9 -5
- package/dist/chunk-FNPII6TF.cjs.map +1 -0
- package/dist/{chunk-HLI6RB5V.cjs → chunk-FR3V5IAJ.cjs} +32 -31
- package/dist/chunk-FR3V5IAJ.cjs.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-BYO5RUDE.cjs → chunk-FSLEFL4U.cjs} +6 -5
- package/dist/chunk-FSLEFL4U.cjs.map +1 -0
- package/dist/{chunk-JY2RC6I4.js → chunk-FX37P4KR.js} +13 -10
- package/dist/chunk-FX37P4KR.js.map +1 -0
- 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-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-PIG3UTHU.js → chunk-GZSRKBYI.js} +3 -3
- package/dist/{chunk-PIG3UTHU.js.map → chunk-GZSRKBYI.js.map} +1 -1
- package/dist/{chunk-BXPLERIJ.js → chunk-H5LJFN7D.js} +5 -4
- package/dist/chunk-H5LJFN7D.js.map +1 -0
- package/dist/{chunk-FR4RHVPR.js → chunk-H7IQVCTX.js} +6 -4
- package/dist/chunk-H7IQVCTX.js.map +1 -0
- package/dist/{chunk-LY3RQB3H.js → chunk-HCIEXBEB.js} +3 -3
- package/dist/{chunk-LY3RQB3H.js.map → chunk-HCIEXBEB.js.map} +1 -1
- package/dist/{chunk-XZOBGKZL.cjs → chunk-HEGM5LMZ.cjs} +6 -5
- package/dist/chunk-HEGM5LMZ.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-GDH43QH6.js → chunk-J57JSHDC.js} +6 -6
- package/dist/{chunk-GDH43QH6.js.map → chunk-J57JSHDC.js.map} +1 -1
- package/dist/{chunk-Z4UXLQSK.cjs → chunk-JDFJK5GO.cjs} +16 -16
- package/dist/chunk-JDFJK5GO.cjs.map +1 -0
- package/dist/{chunk-GSMD5NK5.js → chunk-JN5DHZ6I.js} +7 -7
- package/dist/{chunk-GSMD5NK5.js.map → chunk-JN5DHZ6I.js.map} +1 -1
- 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-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-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-LJCQI6ZS.js +1212 -0
- package/dist/chunk-LJCQI6ZS.js.map +1 -0
- 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-MKGWHSNV.cjs → chunk-MAY4NMRI.cjs} +5 -4
- package/dist/chunk-MAY4NMRI.cjs.map +1 -0
- package/dist/{chunk-PDVU2PXR.js → chunk-MD7HUHJB.js} +10 -10
- package/dist/chunk-MD7HUHJB.js.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-GR2WKBER.js → chunk-OE4AIUAN.js} +4 -3
- package/dist/chunk-OE4AIUAN.js.map +1 -0
- package/dist/chunk-OP7A4SZZ.cjs +1216 -0
- package/dist/chunk-OP7A4SZZ.cjs.map +1 -0
- package/dist/{chunk-Z44A7NPD.cjs → chunk-OUPHLIXV.cjs} +40 -39
- package/dist/chunk-OUPHLIXV.cjs.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-QF7CD4JH.cjs → chunk-Q7XL37T3.cjs} +5 -5
- package/dist/{chunk-QF7CD4JH.cjs.map → chunk-Q7XL37T3.cjs.map} +1 -1
- 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-J2DI6RMR.cjs → chunk-QQKWI7QP.cjs} +19 -12
- package/dist/chunk-QQKWI7QP.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-WGRLNXNB.js → chunk-R3PCZSBQ.js} +3 -3
- package/dist/{chunk-WGRLNXNB.js.map → chunk-R3PCZSBQ.js.map} +1 -1
- package/dist/{chunk-VZTXUYPM.cjs → chunk-R4SANV3G.cjs} +20 -20
- package/dist/chunk-R4SANV3G.cjs.map +1 -0
- 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-MQ6VGG62.js → chunk-RUEDMYBF.js} +19 -12
- package/dist/chunk-RUEDMYBF.js.map +1 -0
- 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-KKYILQTG.cjs → chunk-TBLKVTJC.cjs} +7 -7
- package/dist/{chunk-KKYILQTG.cjs.map → chunk-TBLKVTJC.cjs.map} +1 -1
- 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-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-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-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-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-NPSKZ7ZB.cjs → chunk-ZFXCZ2QO.cjs} +12 -12
- package/dist/{chunk-NPSKZ7ZB.cjs.map → chunk-ZFXCZ2QO.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/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 +252 -238
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +20 -1
- package/dist/index.d.ts +20 -1
- package/dist/index.js +83 -81
- 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 +42 -41
- package/dist/inputs.js +21 -20
- 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/phone-input.cjs +39 -0
- package/dist/phone-input.cjs.map +1 -0
- package/dist/phone-input.d.cts +139 -0
- package/dist/phone-input.d.ts +139 -0
- package/dist/phone-input.js +22 -0
- package/dist/phone-input.js.map +1 -0
- 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/PhoneInput.md +104 -0
- 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 +11 -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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/inputs/Select/Select.tsx"],"names":["label","opt"],"mappings":";;;;;;;;;;;;;;;AAsBA,SAAS,cACP,IAAA,EAC0B;AAC1B,EAAA,OAAO,OAAO,IAAA,KAAS,QAAA,IAAY,SAAA,IAAa,IAAA;AAClD;AAEA,SAAS,eAAe,IAAA,EAAyD;AAC/E,EAAA,MAAM,OAAsB,EAAC;AAC7B,EAAA,KAAA,MAAW,QAAQ,IAAA,EAAM;AACvB,IAAA,IAAI,aAAA,CAAc,IAAI,CAAA,EAAG;AACvB,MAAA,IAAA,CAAK,IAAA,CAAK,GAAG,IAAA,CAAK,OAAO,CAAA;AAAA,IAC3B,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,KAAK,IAAI,CAAA;AAAA,IAChB;AAAA,EACF;AACA,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,kBAAA,CAAmB,QAAqB,KAAA,EAAe;AAC9D,EAAA,MAAM,QAAA,GAAW,cAAc,MAAM,CAAA;AACrC,EAAA,uBACE,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MAEC,OAAO,QAAA,CAAS,KAAA;AAAA,MAChB,UAAU,QAAA,CAAS,QAAA;AAAA,MAElB,QAAA,EAAA,QAAA,CAAS;AAAA,KAAA;AAAA,IAJL,CAAA,EAAG,QAAA,CAAS,KAAK,CAAA,CAAA,EAAI,KAAK,CAAA;AAAA,GAKjC;AAEJ;AAIA,IAAM,YAAA,GAAe,UAAA;AAAA,EACnB,CACE;AAAA,IACE,IAAA,GAAO,IAAA;AAAA,IACP,KAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,EAAA;AAAA,IACA,IAAA;AAAA,IACA,WAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,IAAA;AAAA,IACA,aAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA,YAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,KACG;AACH,IAAA,MAAM,SAAS,KAAA,EAAM;AACrB,IAAA,MAAM,WAAW,EAAA,IAAM,MAAA;AACvB,IAAA,MAAM,YAAA,GAAe,aAAa,IAAI,CAAA;AACtC,IAAA,MAAM,EAAE,aAAa,WAAA,EAAa,SAAA,EAAW,UAAS,GAAI,aAAA,CAAc,cAAc,QAAQ,CAAA;AAE9F,IAAA,IAAI,CAAC,WAAA,EAAa;AAChB,MAAA,MAAM,UAAW,KAAA,IAAS,YAAA;AAC1B,MAAA,MAAM,MAAM,cAAA,CAAe,IAAI,CAAA,CAC5B,GAAA,CAAI,CAAC,CAAA,KAAM,aAAA,CAAc,CAAC,CAAC,EAC3B,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,UAAU,OAAO,CAAA;AAClC,MAAA,MAAM,OAAA,mBACJ,GAAA;AAAA,QAAC,YAAA;AAAA,QAAA;AAAA,UACC,IAAA;AAAA,UACA,OAAA,EAAS,MAAA;AAAA,UACT,QAAA,EAAU,MAAA;AAAA,UACV,WAAA;AAAA,UACA,UAAA,EAAY,SAAA;AAAA,UAEX,eAAK,KAAA,IAAS;AAAA;AAAA,OACjB;AAEF,MAAA,IAAI,KAAA,IAAS,SAAS,WAAA,EAAa;AACjC,QAAA,uBACE,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA;AAAA,YACA,WAAA;AAAA,YACA,WAAA;AAAA,YACA,KAAA;AAAA,YACA,QAAA;AAAA,YACA,OAAA,EAAS,QAAA;AAAA,YACT,IAAA;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,MAEJ;AACA,MAAA,OAAO,OAAA;AAAA,IACT;AAKA,IAAA,MAAM,eAAe,KAAA,KAAU,MAAA;AAC/B,IAAA,MAAM,kBACJ,CAAC,YAAA,IAAgB,YAAA,KAAiB,MAAA,IAAa,cAAc,EAAA,GAAK,YAAA;AAEpE,IAAA,MAAM,MAAA,mBACJ,GAAA;AAAA,MAAC,YAAA;AAAA,MAAA;AAAA,QACC,MAAA;AAAA,QACA,MAAA;AAAA,QACA,cAAA;AAAA,QACA,cAAA;AAAA,QACA,IAAA;AAAA,QAEA,QAAA,kBAAA,IAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,yBAAA,EAAwB,EAAA;AAAA,YACxB,GAAA;AAAA,YACA,EAAA,EAAI,QAAA;AAAA,YACJ,QAAA;AAAA,YACA,QAAA;AAAA,YACA,SAAA,EAAW,EAAA;AAAA,cACT,gBAAA;AAAA,cACA,iBAAiB,IAAI,CAAA;AAAA,cACrB,aAAa,KAAK,CAAA;AAAA,cAClB,aAAa,KAAK,CAAA;AAAA,cAClB,4EAAA;AAAA,cACA,maAAA;AAAA,cACA,MAAA;AAAA,cACA;AAAA,aACF;AAAA,YACA,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,cAAA,QAAA,GAAW,CAAC,CAAA;AACZ,cAAA,aAAA,GAAgB,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,YAChC,CAAA;AAAA,YACC,GAAG,KAAA;AAAA,YACH,GAAI,YAAA,GAAe,EAAE,OAAM,GAAI,EAAE,cAAc,eAAA,EAAgB;AAAA,YAChE,SAAA,EAAW,eAAe,KAAA,CAAM,SAAA;AAAA,YAChC,MAAA,EAAQ,CAAC,CAAA,KAAM;AACb,cAAA,KAAA,CAAM,SAAS,CAAC,CAAA;AAChB,cAAA,IAAI,aAAa,QAAA,EAAS;AAAA,YAC5B,CAAA;AAAA,YAEC,QAAA,EAAA;AAAA,cAAA,WAAA,wBACE,QAAA,EAAA,EAAO,KAAA,EAAM,EAAA,EAAG,QAAA,EAAQ,MACtB,QAAA,EAAA,WAAA,EACH,CAAA;AAAA,cAED,IAAA,CAAK,GAAA;AAAA,gBAAI,CAAC,IAAA,EAAM,KAAA,KACf,aAAA,CAAc,IAAI,CAAA,mBAChB,GAAA,CAAC,UAAA,EAAA,EAAgC,KAAA,EAAO,IAAA,CAAK,KAAA,EAC1C,QAAA,EAAA,IAAA,CAAK,OAAA,CAAQ,GAAA;AAAA,kBAAI,CAAC,GAAA,EAAK,QAAA,KACtB,kBAAA,CAAmB,KAAK,QAAQ;AAAA,qBAFrB,CAAA,MAAA,EAAS,KAAK,EAI7B,CAAA,GAEA,kBAAA,CAAmB,MAAM,KAAK;AAAA;AAElC;AAAA;AAAA;AACF;AAAA,KACF;AAGF,IAAA,IAAI,KAAA,IAAS,SAAS,WAAA,EAAa;AACjC,MAAA,uBACE,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,KAAA;AAAA,UACA,WAAA;AAAA,UACA,WAAA;AAAA,UACA,KAAA;AAAA,UACA,QAAA;AAAA,UACA,OAAA,EAAS,QAAA;AAAA,UACT,IAAA;AAAA,UAEC,QAAA,EAAA;AAAA;AAAA,OACH;AAAA,IAEJ;AAEA,IAAA,OAAO,MAAA;AAAA,EACT;AACF,CAAA;AAEA,YAAA,CAAa,WAAA,GAAc,cAAA;AAI3B,IAAM,aAAA,GAAgB,UAAA;AAAA,EACpB,CACE;AAAA,IACE,IAAA,GAAO,IAAA;AAAA,IACP,KAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,EAAA;AAAA,IACA,IAAA;AAAA,IACA,WAAA,GAAc,WAAA;AAAA,IACd,QAAA,GAAW,KAAA;AAAA,IACX,MAAA,EAAQ,gBAAA;AAAA,IACR,aAAA;AAAA,IACA,aAAA;AAAA,IACA,cAAA;AAAA,IACA,UAAA,GAAa,KAAA;AAAA,IACb,SAAA,GAAY,KAAA;AAAA,IACZ,QAAA;AAAA,IACA,WAAA,GAAc,QAAA;AAAA,IACd,cAAA,GAAiB,UAAA;AAAA,IACjB,SAAA,GAAY,OAAA;AAAA,IACZ,IAAA;AAAA,IACA,KAAA,EAAO,qBAAA;AAAA,IACP,YAAA,EAAc;AAAA,KAEhB,IAAA,KACG;AACH,IAAA,MAAM,SAAS,KAAA,EAAM;AACrB,IAAA,MAAM,WAAW,EAAA,IAAM,MAAA;AACvB,IAAA,MAAM,YAAA,GAAe,aAAa,IAAI,CAAA;AACtC,IAAA,MAAM,EAAE,aAAa,WAAA,EAAa,SAAA,EAAW,UAAS,GAAI,aAAA,CAAc,cAAc,QAAQ,CAAA;AAG9F,IAAA,MAAM,mBAAmB,UAAA,IAAc,SAAA;AAGvC,IAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAAS,KAAK,CAAA;AACtC,IAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAAS,EAAE,CAAA;AACvC,IAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAS,EAAE,CAAA;AACjD,IAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAI,QAAA,CAAwB,EAAE,CAAA;AAGtE,IAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,QAAA;AAAA,MACnC,yBAAqC,kBAAA,IAAiC;AAAA,KACzE;AACA,IAAA,MAAM,gBAAiB,qBAAA,IAAoC,WAAA;AAG3D,IAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,QAAA;AAAA,MACpC,gBAAA,IAAoB,iBAAiB;AAAC,KACxC;AACA,IAAA,MAAM,eAAe,gBAAA,IAAoB,WAAA;AAGzC,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,gBAAA,iBAAiC,gBAAgB,CAAA;AAAA,IACvD,CAAA,EAAG,CAAC,gBAAgB,CAAC,CAAA;AACrB,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,qBAAA,KAA0B,MAAA,EAAW,cAAA,CAAe,qBAA+B,CAAA;AAAA,IACzF,CAAA,EAAG,CAAC,qBAAqB,CAAC,CAAA;AAG1B,IAAA,MAAM,SAAA,GAAY,OAA0B,IAAI,CAAA;AAChD,IAAA,MAAM,OAAA,GAAU,OAAuB,IAAI,CAAA;AAC3C,IAAA,MAAM,SAAA,GAAY,OAAyB,IAAI,CAAA;AAE/C,IAAA,MAAM,QAAA,GAAW,mBAAA,CAAoB,SAAA,EAAW,OAAA,EAAS;AAAA,MACvD,SAAA,EAAW,cAAA;AAAA,MACX,MAAA,EAAQ,CAAA;AAAA,MACR,OAAA,EAAS;AAAA,KACV,CAAA;AAED,IAAA,MAAM,KAAA,GAAQ,YAAY,MAAM;AAC9B,MAAA,OAAA,CAAQ,KAAK,CAAA;AACb,MAAA,SAAA,CAAU,EAAE,CAAA;AACZ,MAAA,cAAA,CAAe,EAAE,CAAA;AAAA,IACnB,CAAA,EAAG,EAAE,CAAA;AAIL,IAAA,eAAA,CAAgB,OAAA,EAAS,KAAA,EAAO,IAAA,EAAM,SAAS,CAAA;AAC/C,IAAA,YAAA,CAAa,OAAO,IAAI,CAAA;AAGxB,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,QAAQ,gBAAA,EAAkB;AAC5B,QAAA,qBAAA,CAAsB,MAAM,SAAA,CAAU,OAAA,EAAS,KAAA,EAAO,CAAA;AAAA,MACxD;AAAA,IACF,CAAA,EAAG,CAAC,IAAA,EAAM,gBAAgB,CAAC,CAAA;AAG3B,IAAA,MAAM,eAAA,GAAkB,QAAQ,MAAM;AACpC,MAAA,MAAM,IAAA,GAAO,cAAA,CAAe,IAAI,CAAA,CAAE,IAAI,aAAa,CAAA;AACnD,MAAA,MAAM,OAAA,GAAU,cAAA,CAAe,GAAA,CAAI,aAAa,CAAA;AAChD,MAAA,OAAO,CAAC,GAAG,IAAA,EAAM,GAAG,OAAO,CAAA;AAAA,IAC7B,CAAA,EAAG,CAAC,IAAA,EAAM,cAAc,CAAC,CAAA;AAEzB,IAAA,MAAM,QAAA,GAAW,SACb,eAAA,CAAgB,MAAA;AAAA,MAAO,CAAC,MACtB,CAAA,CAAE,KAAA,CAAM,aAAY,CAAE,QAAA,CAAS,MAAA,CAAO,WAAA,EAAa;AAAA,KACrD,GACA,eAAA;AAGJ,IAAA,MAAM,SAAA,GACJ,aACA,MAAA,CAAO,IAAA,GAAO,MAAA,GAAS,CAAA,IACvB,CAAC,eAAA,CAAgB,IAAA;AAAA,MACf,CAAC,CAAA,KACC,CAAA,CAAE,KAAA,CAAM,aAAY,KAAM,MAAA,CAAO,IAAA,EAAK,CAAE,WAAA,EAAY,IACpD,CAAA,CAAE,KAAA,KAAU,OAAO,IAAA;AAAK,KAC5B;AAGF,IAAA,MAAM,UAAA,GAAa,CAAC,KAAA,KAA2B;AAC7C,MAAA,IAAI,QAAA,EAAU,OAAO,YAAA,CAAa,QAAA,CAAS,KAAK,CAAA;AAChD,MAAA,OAAO,aAAA,KAAkB,KAAA;AAAA,IAC3B,CAAA;AAEA,IAAA,MAAM,YAAA,GAAe,WAAA;AAAA,MACnB,CAAC,KAAA,KAAkB;AACjB,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,MAAM,IAAA,GAAO,YAAA,CAAa,QAAA,CAAS,KAAK,IACpC,YAAA,CAAa,MAAA,CAAO,CAAC,CAAA,KAAM,MAAM,KAAK,CAAA,GACtC,CAAC,GAAG,cAAc,KAAK,CAAA;AAC3B,UAAA,cAAA,CAAe,IAAI,CAAA;AACnB,UAAA,cAAA,GAAiB,IAAI,CAAA;AAAA,QACvB,CAAA,MAAO;AACL,UAAA,cAAA,CAAe,KAAK,CAAA;AACpB,UAAA,aAAA,GAAgB,KAAK,CAAA;AACrB,UAAA,KAAA,EAAM;AAAA,QACR;AAAA,MACF,CAAA;AAAA,MACA,CAAC,QAAA,EAAU,YAAA,EAAc,cAAA,EAAgB,eAAe,KAAK;AAAA,KAC/D;AAEA,IAAA,MAAM,YAAA,GAAe,YAAY,MAAM;AACrC,MAAA,MAAMA,MAAAA,GAAQ,OAAO,IAAA,EAAK;AAC1B,MAAA,IAAI,CAACA,MAAAA,EAAO;AACZ,MAAA,MAAM,KAAA,GAAQA,MAAAA;AACd,MAAA,MAAM,SAAA,GAAyB,EAAE,KAAA,EAAO,KAAA,EAAAA,MAAAA,EAAM;AAC9C,MAAA,iBAAA,CAAkB,CAAC,IAAA,KAAS,CAAC,GAAG,IAAA,EAAM,SAAS,CAAC,CAAA;AAChD,MAAA,QAAA,GAAWA,MAAK,CAAA;AAChB,MAAA,SAAA,CAAU,EAAE,CAAA;AACZ,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,MAAM,IAAA,GAAO,CAAC,GAAG,YAAA,EAAc,KAAK,CAAA;AACpC,QAAA,cAAA,CAAe,IAAI,CAAA;AACnB,QAAA,cAAA,GAAiB,IAAI,CAAA;AAErB,QAAA,qBAAA,CAAsB,MAAM,SAAA,CAAU,OAAA,EAAS,KAAA,EAAO,CAAA;AAAA,MACxD,CAAA,MAAO;AACL,QAAA,cAAA,CAAe,KAAK,CAAA;AACpB,QAAA,aAAA,GAAgB,KAAK,CAAA;AACrB,QAAA,KAAA,EAAM;AAAA,MACR;AAAA,IACF,CAAA,EAAG,CAAC,MAAA,EAAQ,QAAA,EAAU,cAAc,QAAA,EAAU,cAAA,EAAgB,aAAA,EAAe,KAAK,CAAC,CAAA;AAGnF,IAAA,MAAM,iBAAiB,MAAc;AACnC,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,IAAI,YAAA,CAAa,MAAA,KAAW,CAAA,EAAG,OAAO,WAAA;AACtC,QAAA,IAAI,YAAA,CAAa,WAAW,CAAA,EAAG;AAC7B,UAAA,MAAMC,IAAAA,GAAM,gBAAgB,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,KAAA,KAAU,YAAA,CAAa,CAAC,CAAC,CAAA;AACnE,UAAA,OAAOA,IAAAA,EAAK,KAAA,IAAS,YAAA,CAAa,CAAC,CAAA;AAAA,QACrC;AACA,QAAA,OAAO,CAAA,EAAG,YAAA,CAAa,MAAM,CAAA,CAAA,EAAI,cAAc,CAAA,CAAA;AAAA,MACjD;AACA,MAAA,IAAI,CAAC,eAAe,OAAO,WAAA;AAC3B,MAAA,MAAM,MAAM,eAAA,CAAgB,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,UAAU,aAAa,CAAA;AACjE,MAAA,OAAO,KAAK,KAAA,IAAS,aAAA;AAAA,IACvB,CAAA;AAEA,IAAA,MAAM,WAAW,QAAA,GAAW,YAAA,CAAa,MAAA,GAAS,CAAA,GAAI,CAAC,CAAC,aAAA;AAGxD,IAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAA2B;AAChD,MAAA,IAAI,CAAC,IAAA,EAAM;AACT,QAAA,IAAI,CAAA,CAAE,QAAQ,WAAA,IAAe,CAAA,CAAE,QAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,EAAK;AAC/D,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,QACd;AACA,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,CAAA,CAAE,QAAQ,WAAA,EAAa;AACzB,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,cAAA,CAAe,CAAC,MAAM,IAAA,CAAK,GAAA,CAAI,IAAI,CAAA,EAAG,QAAA,CAAS,MAAA,GAAS,CAAC,CAAC,CAAA;AAAA,MAC5D,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,SAAA,EAAW;AAC9B,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,cAAA,CAAe,CAAC,CAAA,KAAM,IAAA,CAAK,IAAI,CAAA,GAAI,CAAA,EAAG,CAAC,CAAC,CAAA;AAAA,MAC1C,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,OAAA,EAAS;AAE5B,QAAA,IAAI,cAAA,CAAe,CAAC,CAAA,EAAG;AACvB,QAAA,IAAI,eAAe,CAAA,EAAG;AACpB,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,MAAM,IAAA,GAAO,SAAS,WAAW,CAAA;AACjC,UAAA,IAAI,QAAQ,CAAC,IAAA,CAAK,QAAA,EAAU,YAAA,CAAa,KAAK,KAAe,CAAA;AAAA,QAC/D,WAAW,SAAA,EAAW;AACpB,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,YAAA,EAAa;AAAA,QACf;AAAA,MACF;AAAA,IACF,CAAA;AAGA,IAAA,IAAI,CAAC,WAAA,EAAa;AAChB,MAAA,MAAM,MAAA,GAAS,WACX,YAAA,CAAa,GAAA;AAAA,QACX,CAAC,CAAA,KAAM,eAAA,CAAgB,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,KAAA,KAAU,CAAC,CAAA,EAAG,KAAA,IAAS;AAAA,OAC9D,GACA,aAAA,GACE,CAAC,eAAA,CAAgB,KAAK,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,KAAU,aAAa,CAAA,EAAG,KAAA,IAAS,aAAa,IAC/E,EAAC;AACP,MAAA,MAAM,OAAA,mBACJ,GAAA,CAAC,YAAA,EAAA,EAAa,IAAA,EAAY,WAAA,EAA0B,YAAY,SAAA,EAC7D,QAAA,EAAA,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,EACnB,CAAA;AAEF,MAAA,IAAI,KAAA,IAAS,SAAS,WAAA,EAAa;AACjC,QAAA,uBACE,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA;AAAA,YACA,WAAA;AAAA,YACA,WAAA;AAAA,YACA,KAAA;AAAA,YACA,QAAA;AAAA,YACA,OAAA,EAAS,QAAA;AAAA,YACT,IAAA;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,MAEJ;AACA,MAAA,OAAO,OAAA;AAAA,IACT;AAGA,IAAA,MAAM,OAAA,mBACJ,IAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,SAAA;AAAA,QACL,IAAA,EAAK,QAAA;AAAA,QACL,EAAA,EAAI,QAAA;AAAA,QACJ,QAAA;AAAA,QACA,SAAA,EAAW,WAAA;AAAA,QACX,SAAS,MAAM,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA;AAAA,QAChC,SAAA,EAAW,aAAA;AAAA,QACX,IAAA,EAAK,UAAA;AAAA,QACL,eAAA,EAAe,IAAA;AAAA,QACf,eAAA,EAAc,SAAA;AAAA,QACd,yBAAA,EAAwB,EAAA;AAAA,QACxB,cAAA,EAAa,SAAA;AAAA,QACb,SAAA,EAAW,EAAA;AAAA,UACT,gBAAA;AAAA,UACA,iBAAiB,IAAI,CAAA;AAAA,UACrB,aAAa,KAAK,CAAA;AAAA,UAClB,aAAa,KAAK,CAAA;AAAA,UAClB,yEAAA;AAAA,UACA,CAAC,QAAA,IAAY,iIAAA;AAAA,UACb;AAAA,SACF;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,UAAA,EAAY,QAAA,EAAA,cAAA,EAAe,EAAE,CAAA;AAAA,0BAC7C,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA,CAAG,qDAAA,EAAuD,IAAA,IAAQ,YAAY,CAAA;AAAA,cACzF,OAAA,EAAQ,WAAA;AAAA,cACR,IAAA,EAAK,cAAA;AAAA,cAEL,QAAA,kBAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,QAAA,EAAS,SAAA;AAAA,kBACT,CAAA,EAAE,qIAAA;AAAA,kBACF,QAAA,EAAS;AAAA;AAAA;AACX;AAAA;AACF;AAAA;AAAA,KACF;AAGF,IAAA,MAAM,QAAA,GAAW,IAAA,oBACf,GAAA,CAAC,MAAA,EAAA,EACC,QAAA,kBAAA,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,OAAA;AAAA,QACL,IAAA,EAAK,SAAA;AAAA,QACL,wBAAsB,QAAA,IAAY,MAAA;AAAA,QAClC,SAAA,EAAU,wWAAA;AAAA,QACV,KAAA,EAAO;AAAA,UACL,MAAM,QAAA,CAAS,CAAA;AAAA,UACf,KAAK,QAAA,CAAS,CAAA;AAAA,UACd,KAAA,EAAO,UAAU,OAAA,EAAS;AAAA,SAC5B;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,gBAAA,oBACC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,kBAAA,GAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,SAAA;AAAA,cACL,IAAA,EAAK,MAAA;AAAA,cACL,KAAA,EAAO,MAAA;AAAA,cACP,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,gBAAA,SAAA,CAAU,CAAA,CAAE,OAAO,KAAK,CAAA;AACxB,gBAAA,cAAA,CAAe,EAAE,CAAA;AAAA,cACnB,CAAA;AAAA,cACA,SAAA,EAAW,aAAA;AAAA,cACX,WAAA,EAAa,SAAA,IAAa,CAAC,UAAA,GAAa,mBAAA,GAAiB,cAAA;AAAA,cACzD,SAAA,EAAU;AAAA;AAAA,WACZ,EACF,CAAA;AAAA,UAGD,SAAA,oBACC,IAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAS,YAAA;AAAA,cACT,SAAA,EAAU,mJAAA;AAAA,cAEV,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBAAA,EAAmB,OAAA,EAAQ,aAAY,IAAA,EAAK,cAAA,EACzD,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,UAAS,SAAA,EAAU,CAAA,EAAE,kIAAA,EAAmI,QAAA,EAAS,WAAU,CAAA,EACnL,CAAA;AAAA,gCACA,IAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,UAAA,EAAY,QAAA,EAAA;AAAA,kBAAA,WAAA;AAAA,kBAAY,IAAA;AAAA,kBAAQ,OAAO,IAAA,EAAK;AAAA,kBAAE;AAAA,iBAAA,EAAM;AAAA;AAAA;AAAA,WACtE;AAAA,UAGD,SAAS,MAAA,KAAW,CAAA,IAAK,CAAC,SAAA,mBACzB,GAAA,CAAC,SAAI,SAAA,EAAU,iCAAA,EAAkC,8BAAgB,CAAA,GAC/D,QAAA,CAAS,WAAW,CAAA,GAAI,IAAA,GAC1B,SAAS,GAAA,CAAI,CAAC,QAAQ,CAAA,KAAM;AAC1B,YAAA,MAAM,QAAA,GAAW,UAAA,CAAW,MAAA,CAAO,KAAe,CAAA;AAClD,YAAA,uBACE,IAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBAEC,IAAA,EAAK,QAAA;AAAA,gBACL,IAAA,EAAK,QAAA;AAAA,gBACL,eAAA,EAAe,QAAA;AAAA,gBACf,UAAU,MAAA,CAAO,QAAA;AAAA,gBACjB,OAAA,EAAS,MAAM,YAAA,CAAa,MAAA,CAAO,KAAe,CAAA;AAAA,gBAClD,SAAA,EAAW,EAAA;AAAA,kBACT,yFAAA;AAAA,kBACA,CAAA,KAAM,cACF,mIAAA,GACA,kLAAA;AAAA,kBACJ,WACI,qHAAA,GACA,+HAAA;AAAA,kBACJ,OAAO,QAAA,IAAY;AAAA,iBACrB;AAAA,gBAGC,QAAA,EAAA;AAAA,kBAAA,SAAA,KAAc,UAAA,mBACb,GAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAW,EAAA;AAAA,wBACT,oFAAA;AAAA,wBACA,WACI,8EAAA,GACA;AAAA,uBACN;AAAA,sBAEC,QAAA,EAAA,QAAA,wBACE,KAAA,EAAA,EAAI,SAAA,EAAU,WAAU,OAAA,EAAQ,WAAA,EAAY,MAAK,MAAA,EAAO,MAAA,EAAO,gBAAe,WAAA,EAAY,GAAA,EAAI,eAAc,OAAA,EAAQ,cAAA,EAAe,SAClI,QAAA,kBAAA,GAAA,CAAC,UAAA,EAAA,EAAS,MAAA,EAAO,qBAAA,EAAsB,CAAA,EACzC;AAAA;AAAA,mBAEJ,uBAEC,MAAA,EAAA,EAAK,SAAA,EAAU,qDACb,QAAA,EAAA,QAAA,oBACC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0CAAA,EAA2C,OAAA,EAAQ,aAAY,IAAA,EAAK,cAAA,EACjF,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAS,SAAA,EAAU,GAAE,8IAAA,EAA+I,QAAA,EAAS,SAAA,EAAU,CAAA,EAC/L,CAAA,EAEJ,CAAA;AAAA,kCAIF,IAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gBAAA,EACd,QAAA,EAAA;AAAA,oCAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gBAAA,EAAkB,QAAA,EAAA,MAAA,CAAO,KAAA,EAAM,CAAA;AAAA,oBAC9C,OAAO,WAAA,oBACN,GAAA,CAAC,UAAK,SAAA,EAAU,wJAAA,EAA0J,iBAAO,WAAA,EAAY;AAAA,mBAAA,EAEjM;AAAA;AAAA,eAAA;AAAA,cAjDK,MAAA,CAAO;AAAA,aAkDd;AAAA,UAEJ,CAAC;AAAA;AAAA;AAAA,KAEL,EACF,CAAA;AAGF,IAAA,MAAM,OAAA,mBACJ,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,UAAA;AAAA,QACV,MAAA,EAAQ,CAAC,CAAA,KAAM;AAGb,UAAA,IAAI,WAAA,IAAe,CAAC,IAAA,IAAQ,CAAC,EAAE,aAAA,CAAc,QAAA,CAAS,CAAA,CAAE,aAAqB,CAAA,EAAG;AAC9E,YAAA,QAAA,EAAS;AAAA,UACX;AAAA,QACF,CAAA;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,OAAA;AAAA,UACA;AAAA;AAAA;AAAA,KACH;AAGF,IAAA,IAAI,KAAA,IAAS,SAAS,WAAA,EAAa;AACjC,MAAA,uBACE,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,KAAA;AAAA,UACA,WAAA;AAAA,UACA,WAAA;AAAA,UACA,KAAA;AAAA,UACA,QAAA;AAAA,UACA,OAAA,EAAS,QAAA;AAAA,UACT,IAAA;AAAA,UAEC,QAAA,EAAA;AAAA;AAAA,OACH;AAAA,IAEJ;AAEA,IAAA,OAAO,OAAA;AAAA,EACT;AACF,CAAA;AAEA,aAAA,CAAc,WAAA,GAAc,eAAA;AAIrB,IAAM,MAAA,GAAS,UAAA;AAAA,EACpB,CAAC,OAAO,GAAA,KAAQ;AACd,IAAA,MAAM,OAAA,GAAU,KAAA,CAAM,OAAA,KAAY,KAAA,CAAM,WAAW,SAAA,GAAY,QAAA,CAAA;AAE/D,IAAA,IAAI,YAAY,SAAA,EAAW;AACzB,MAAA,uBAAO,GAAA,CAAC,aAAA,EAAA,EAAe,GAAG,KAAA,EAAO,GAAA,EAAU,CAAA;AAAA,IAC7C;AACA,IAAA,uBAAO,GAAA,CAAC,YAAA,EAAA,EAAc,GAAG,KAAA,EAAO,GAAA,EAAU,CAAA;AAAA,EAC5C;AACF;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA","file":"chunk-6GVOW3UL.js","sourcesContent":["import { forwardRef, useCallback, useEffect, useId, useMemo, useRef, useState } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { isImeComposing } from \"../../../utils/ime\";\nimport { Field } from \"../Field\";\nimport { InputWrapper } from \"../InputWrapper\";\nimport { Portal } from \"../../Portal\";\nimport { useFloatingPosition } from \"../../../hooks/use-floating-position\";\nimport { useOutsideClick } from \"../../../hooks/use-outside-click\";\nimport { useEscapeKey } from \"../../../hooks/use-escape-key\";\nimport {\n dirtyClasses,\n errorClasses,\n inputBaseClasses,\n inputSizeClasses,\n resolveOption,\n} from \"../inputs.utils\";\nimport { useFieldMode } from \"../mode/FieldMode.context\";\nimport { DisplayValue } from \"../mode/DisplayValue\";\nimport { useInlineEdit } from \"../mode/useInlineEdit\";\nimport type { InputOption, InputOptionGroup } from \"../inputs.types\";\nimport type { SelectProps } from \"./Select.types\";\n\nfunction isOptionGroup(\n item: InputOption | InputOptionGroup,\n): item is InputOptionGroup {\n return typeof item === \"object\" && \"options\" in item;\n}\n\nfunction flattenOptions(list: (InputOption | InputOptionGroup)[]): InputOption[] {\n const flat: InputOption[] = [];\n for (const item of list) {\n if (isOptionGroup(item)) {\n flat.push(...item.options);\n } else {\n flat.push(item);\n }\n }\n return flat;\n}\n\nfunction renderNativeOption(option: InputOption, index: number) {\n const resolved = resolveOption(option);\n return (\n <option\n key={`${resolved.value}-${index}`}\n value={resolved.value as string}\n disabled={resolved.disabled}\n >\n {resolved.label}\n </option>\n );\n}\n\n// ── Native variant ──────────────────────────────────────────────────────\n\nconst NativeSelect = forwardRef<HTMLSelectElement, SelectProps>(\n (\n {\n size = \"md\",\n dirty,\n error,\n label,\n labelHidden,\n description,\n required,\n disabled,\n className,\n id,\n list,\n placeholder,\n prefix,\n suffix,\n prefixPosition,\n suffixPosition,\n mode,\n onValueChange,\n onChange,\n value,\n defaultValue,\n ...props\n },\n ref,\n ) => {\n const autoId = useId();\n const selectId = id ?? autoId;\n const resolvedMode = useFieldMode(mode);\n const { showControl, interactive, enterEdit, exitEdit } = useInlineEdit(resolvedMode, disabled);\n\n if (!showControl) {\n const current = (value ?? defaultValue) as string | undefined;\n const opt = flattenOptions(list)\n .map((o) => resolveOption(o))\n .find((o) => o.value === current);\n const display = (\n <DisplayValue\n size={size}\n leading={prefix}\n trailing={suffix}\n interactive={interactive}\n onActivate={enterEdit}\n >\n {opt?.label ?? current}\n </DisplayValue>\n );\n if (label || error || description) {\n return (\n <Field\n label={label}\n labelHidden={labelHidden}\n description={description}\n error={error}\n required={required}\n htmlFor={selectId}\n size={size}\n >\n {display}\n </Field>\n );\n }\n return display;\n }\n\n // When a placeholder is provided but no value/defaultValue, default to \"\"\n // so the disabled placeholder <option> is the initial selection instead of\n // the browser auto-picking the first real option.\n const isControlled = value !== undefined;\n const resolvedDefault =\n !isControlled && defaultValue === undefined && placeholder ? \"\" : defaultValue;\n\n const select = (\n <InputWrapper\n prefix={prefix}\n suffix={suffix}\n prefixPosition={prefixPosition}\n suffixPosition={suffixPosition}\n size={size}\n >\n <select\n data-react-fancy-select=\"\"\n ref={ref}\n id={selectId}\n disabled={disabled}\n required={required}\n className={cn(\n inputBaseClasses,\n inputSizeClasses[size],\n dirtyClasses(dirty),\n errorClasses(error),\n \"w-full appearance-none bg-no-repeat bg-[length:16px] bg-[right_8px_center]\",\n \"bg-[url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2020%2020%22%20fill%3D%22%236b7280%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20d%3D%22M5.23%207.21a.75.75%200%20011.06.02L10%2011.168l3.71-3.938a.75.75%200%20111.08%201.04l-4.25%204.5a.75.75%200%2001-1.08%200l-4.25-4.5a.75.75%200%2001.02-1.06z%22%20clip-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E')]\",\n \"pr-8\",\n className,\n )}\n onChange={(e) => {\n onChange?.(e);\n onValueChange?.(e.target.value);\n }}\n {...props}\n {...(isControlled ? { value } : { defaultValue: resolvedDefault })}\n autoFocus={interactive || props.autoFocus}\n onBlur={(e) => {\n props.onBlur?.(e);\n if (interactive) exitEdit();\n }}\n >\n {placeholder && (\n <option value=\"\" disabled>\n {placeholder}\n </option>\n )}\n {list.map((item, index) =>\n isOptionGroup(item) ? (\n <optgroup key={`group-${index}`} label={item.label}>\n {item.options.map((opt, optIndex) =>\n renderNativeOption(opt, optIndex),\n )}\n </optgroup>\n ) : (\n renderNativeOption(item, index)\n ),\n )}\n </select>\n </InputWrapper>\n );\n\n if (label || error || description) {\n return (\n <Field\n label={label}\n labelHidden={labelHidden}\n description={description}\n error={error}\n required={required}\n htmlFor={selectId}\n size={size}\n >\n {select}\n </Field>\n );\n }\n\n return select;\n },\n);\n\nNativeSelect.displayName = \"NativeSelect\";\n\n// ── Listbox variant ─────────────────────────────────────────────────────\n\nconst ListboxSelect = forwardRef<HTMLSelectElement, SelectProps>(\n (\n {\n size = \"md\",\n dirty,\n error,\n label,\n labelHidden,\n description,\n required,\n disabled,\n className,\n id,\n list,\n placeholder = \"Select...\",\n multiple = false,\n values: controlledValues,\n defaultValues,\n onValueChange,\n onValuesChange,\n searchable = false,\n creatable = false,\n onCreate,\n createLabel = \"Create\",\n selectedSuffix = \"selected\",\n indicator = \"check\",\n mode,\n value: controlledSingleValue,\n defaultValue: defaultSingleValue,\n },\n _ref,\n ) => {\n const autoId = useId();\n const selectId = id ?? autoId;\n const resolvedMode = useFieldMode(mode);\n const { showControl, interactive, enterEdit, exitEdit } = useInlineEdit(resolvedMode, disabled);\n\n // Creatable implies a text input, which is also the search input.\n const textInputEnabled = searchable || creatable;\n\n // ── State ──────────────────────────────────────────────\n const [open, setOpen] = useState(false);\n const [search, setSearch] = useState(\"\");\n const [activeIndex, setActiveIndex] = useState(-1);\n const [createdOptions, setCreatedOptions] = useState<InputOption[]>([]);\n\n // Single-select state\n const [singleValue, setSingleValue] = useState<string>(\n (controlledSingleValue as string) ?? (defaultSingleValue as string) ?? \"\",\n );\n const currentSingle = (controlledSingleValue as string) ?? singleValue;\n\n // Multi-select state\n const [multiValues, setMultiValues] = useState<string[]>(\n controlledValues ?? defaultValues ?? [],\n );\n const currentMulti = controlledValues ?? multiValues;\n\n // Sync controlled values\n useEffect(() => {\n if (controlledValues) setMultiValues(controlledValues);\n }, [controlledValues]);\n useEffect(() => {\n if (controlledSingleValue !== undefined) setSingleValue(controlledSingleValue as string);\n }, [controlledSingleValue]);\n\n // ── Refs ───────────────────────────────────────────────\n const anchorRef = useRef<HTMLButtonElement>(null);\n const listRef = useRef<HTMLDivElement>(null);\n const searchRef = useRef<HTMLInputElement>(null);\n\n const position = useFloatingPosition(anchorRef, listRef, {\n placement: \"bottom-start\",\n offset: 4,\n enabled: open,\n });\n\n const close = useCallback(() => {\n setOpen(false);\n setSearch(\"\");\n setActiveIndex(-1);\n }, []);\n\n // Outside-click guards the dropdown (in a Portal) against its own clicks,\n // with the trigger button ignored since it toggles open/closed itself.\n useOutsideClick(listRef, close, open, anchorRef);\n useEscapeKey(close, open);\n\n // Focus text input on open\n useEffect(() => {\n if (open && textInputEnabled) {\n requestAnimationFrame(() => searchRef.current?.focus());\n }\n }, [open, textInputEnabled]);\n\n // ── Options ────────────────────────────────────────────\n const resolvedOptions = useMemo(() => {\n const base = flattenOptions(list).map(resolveOption);\n const created = createdOptions.map(resolveOption);\n return [...base, ...created];\n }, [list, createdOptions]);\n\n const filtered = search\n ? resolvedOptions.filter((o) =>\n o.label.toLowerCase().includes(search.toLowerCase()),\n )\n : resolvedOptions;\n\n // Exact-match check to decide whether to show the \"Create X\" row\n const canCreate =\n creatable &&\n search.trim().length > 0 &&\n !resolvedOptions.some(\n (o) =>\n o.label.toLowerCase() === search.trim().toLowerCase() ||\n o.value === search.trim(),\n );\n\n // ── Selection ──────────────────────────────────────────\n const isSelected = (value: string): boolean => {\n if (multiple) return currentMulti.includes(value);\n return currentSingle === value;\n };\n\n const toggleOption = useCallback(\n (value: string) => {\n if (multiple) {\n const next = currentMulti.includes(value)\n ? currentMulti.filter((v) => v !== value)\n : [...currentMulti, value];\n setMultiValues(next);\n onValuesChange?.(next);\n } else {\n setSingleValue(value);\n onValueChange?.(value);\n close();\n }\n },\n [multiple, currentMulti, onValuesChange, onValueChange, close],\n );\n\n const handleCreate = useCallback(() => {\n const label = search.trim();\n if (!label) return;\n const value = label;\n const newOption: InputOption = { value, label };\n setCreatedOptions((prev) => [...prev, newOption]);\n onCreate?.(label);\n setSearch(\"\");\n if (multiple) {\n const next = [...currentMulti, value];\n setMultiValues(next);\n onValuesChange?.(next);\n // Keep dropdown open for multi-select; refocus input\n requestAnimationFrame(() => searchRef.current?.focus());\n } else {\n setSingleValue(value);\n onValueChange?.(value);\n close();\n }\n }, [search, multiple, currentMulti, onCreate, onValuesChange, onValueChange, close]);\n\n // ── Display text ───────────────────────────────────────\n const getDisplayText = (): string => {\n if (multiple) {\n if (currentMulti.length === 0) return placeholder;\n if (currentMulti.length === 1) {\n const opt = resolvedOptions.find((o) => o.value === currentMulti[0]);\n return opt?.label ?? currentMulti[0];\n }\n return `${currentMulti.length} ${selectedSuffix}`;\n }\n if (!currentSingle) return placeholder;\n const opt = resolvedOptions.find((o) => o.value === currentSingle);\n return opt?.label ?? currentSingle;\n };\n\n const hasValue = multiple ? currentMulti.length > 0 : !!currentSingle;\n\n // ── Keyboard ───────────────────────────────────────────\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (!open) {\n if (e.key === \"ArrowDown\" || e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n setOpen(true);\n }\n return;\n }\n\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setActiveIndex((i) => Math.min(i + 1, filtered.length - 1));\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n setActiveIndex((i) => Math.max(i - 1, 0));\n } else if (e.key === \"Enter\") {\n // Confirming an IME composition in the search box is not a pick.\n if (isImeComposing(e)) return;\n if (activeIndex >= 0) {\n e.preventDefault();\n const item = filtered[activeIndex];\n if (item && !item.disabled) toggleOption(item.value as string);\n } else if (canCreate) {\n e.preventDefault();\n handleCreate();\n }\n }\n };\n\n // ── View mode ──────────────────────────────────────────\n if (!showControl) {\n const labels = multiple\n ? currentMulti.map(\n (v) => resolvedOptions.find((o) => o.value === v)?.label ?? v,\n )\n : currentSingle\n ? [resolvedOptions.find((o) => o.value === currentSingle)?.label ?? currentSingle]\n : [];\n const display = (\n <DisplayValue size={size} interactive={interactive} onActivate={enterEdit}>\n {labels.join(\", \")}\n </DisplayValue>\n );\n if (label || error || description) {\n return (\n <Field\n label={label}\n labelHidden={labelHidden}\n description={description}\n error={error}\n required={required}\n htmlFor={selectId}\n size={size}\n >\n {display}\n </Field>\n );\n }\n return display;\n }\n\n // ── Render ─────────────────────────────────────────────\n const trigger = (\n <button\n ref={anchorRef}\n type=\"button\"\n id={selectId}\n disabled={disabled}\n autoFocus={interactive}\n onClick={() => setOpen((o) => !o)}\n onKeyDown={handleKeyDown}\n role=\"combobox\"\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n data-react-fancy-select=\"\"\n data-variant=\"listbox\"\n className={cn(\n inputBaseClasses,\n inputSizeClasses[size],\n dirtyClasses(dirty),\n errorClasses(error),\n \"flex w-full cursor-pointer items-center justify-between gap-2 text-left\",\n !hasValue && \"text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]\",\n className,\n )}\n >\n <span className=\"truncate\">{getDisplayText()}</span>\n <svg\n className={cn(\"h-4 w-4 shrink-0 text-zinc-400 transition-transform\", open && \"rotate-180\")}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </button>\n );\n\n const dropdown = open && (\n <Portal>\n <div\n ref={listRef}\n role=\"listbox\"\n aria-multiselectable={multiple || undefined}\n 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\"\n style={{\n left: position.x,\n top: position.y,\n width: anchorRef.current?.offsetWidth,\n }}\n >\n {textInputEnabled && (\n <div className=\"px-2 pb-1 pt-1\">\n <input\n ref={searchRef}\n type=\"text\"\n value={search}\n onChange={(e) => {\n setSearch(e.target.value);\n setActiveIndex(-1);\n }}\n onKeyDown={handleKeyDown}\n placeholder={creatable && !searchable ? \"Type to add…\" : \"Search…\"}\n className=\"w-full rounded-md border-0 bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] px-2.5 py-1.5 text-sm text-[color:var(--fancy-text,var(--color-zinc-900))] placeholder:text-[color:var(--fancy-text-faint,var(--color-zinc-400))] outline-none dark:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))] dark:text-[color:var(--fancy-text-dark,var(--color-zinc-100))] dark:placeholder:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]\"\n />\n </div>\n )}\n\n {canCreate && (\n <button\n type=\"button\"\n onClick={handleCreate}\n className=\"flex w-full items-center gap-2 rounded-lg px-3 py-2 text-left text-sm text-blue-600 hover:bg-blue-50 dark:text-blue-400 dark:hover:bg-blue-500/10\"\n >\n <svg className=\"h-4 w-4 shrink-0\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path fillRule=\"evenodd\" d=\"M10 3a.75.75 0 01.75.75v5.5h5.5a.75.75 0 010 1.5h-5.5v5.5a.75.75 0 01-1.5 0v-5.5h-5.5a.75.75 0 010-1.5h5.5v-5.5A.75.75 0 0110 3z\" clipRule=\"evenodd\" />\n </svg>\n <span className=\"truncate\">{createLabel} "{search.trim()}"</span>\n </button>\n )}\n\n {filtered.length === 0 && !canCreate ? (\n <div className=\"px-3 py-2 text-sm text-zinc-400\">No results found</div>\n ) : filtered.length === 0 ? null : (\n filtered.map((option, i) => {\n const selected = isSelected(option.value as string);\n return (\n <button\n key={option.value as string}\n type=\"button\"\n role=\"option\"\n aria-selected={selected}\n disabled={option.disabled}\n onClick={() => toggleOption(option.value as string)}\n className={cn(\n \"flex w-full items-center gap-2 rounded-lg px-3 py-2 text-left text-sm transition-colors\",\n i === activeIndex\n ? \"bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] dark:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]\"\n : \"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))]\",\n selected\n ? \"text-[color:var(--fancy-text,var(--color-zinc-900))] dark:text-[color:var(--fancy-text-dark,var(--color-zinc-100))]\"\n : \"text-[color:var(--fancy-text-soft,var(--color-zinc-700))] dark:text-[color:var(--fancy-text-soft-dark,var(--color-zinc-300))]\",\n option.disabled && \"cursor-not-allowed opacity-50\",\n )}\n >\n {/* Indicator */}\n {indicator === \"checkbox\" ? (\n <span\n className={cn(\n \"flex h-4 w-4 shrink-0 items-center justify-center rounded border transition-colors\",\n selected\n ? \"border-blue-500 bg-blue-500 text-white dark:border-blue-400 dark:bg-blue-400\"\n : \"border-zinc-300 dark:border-zinc-600\",\n )}\n >\n {selected && (\n <svg className=\"h-3 w-3\" viewBox=\"0 0 12 12\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"2.5 6 5 8.5 9.5 3.5\" />\n </svg>\n )}\n </span>\n ) : (\n <span className=\"flex h-4 w-4 shrink-0 items-center justify-center\">\n {selected && (\n <svg className=\"h-4 w-4 text-blue-500 dark:text-blue-400\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path fillRule=\"evenodd\" d=\"M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z\" clipRule=\"evenodd\" />\n </svg>\n )}\n </span>\n )}\n\n {/* Label + description */}\n <span className=\"min-w-0 flex-1\">\n <span className=\"block truncate\">{option.label}</span>\n {option.description && (\n <span className=\"block truncate text-xs text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]\">{option.description}</span>\n )}\n </span>\n </button>\n );\n })\n )}\n </div>\n </Portal>\n );\n\n const content = (\n <div\n className=\"relative\"\n onBlur={(e) => {\n // The popover is portaled (focus moves out of this wrapper), so only\n // exit edit when the dropdown is closed and focus has truly left.\n if (interactive && !open && !e.currentTarget.contains(e.relatedTarget as Node)) {\n exitEdit();\n }\n }}\n >\n {trigger}\n {dropdown}\n </div>\n );\n\n if (label || error || description) {\n return (\n <Field\n label={label}\n labelHidden={labelHidden}\n description={description}\n error={error}\n required={required}\n htmlFor={selectId}\n size={size}\n >\n {content}\n </Field>\n );\n }\n\n return content;\n },\n);\n\nListboxSelect.displayName = \"ListboxSelect\";\n\n// ── Public component ────────────────────────────────────────────────────\n\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(\n (props, ref) => {\n const variant = props.variant ?? (props.multiple ? \"listbox\" : \"native\");\n\n if (variant === \"listbox\") {\n return <ListboxSelect {...props} ref={ref} />;\n }\n return <NativeSelect {...props} ref={ref} />;\n },\n);\n\nSelect.displayName = \"Select\";\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Drawer/Drawer.context.ts","../src/components/Drawer/DrawerHeader.tsx","../src/components/Drawer/DrawerBody.tsx","../src/components/Drawer/DrawerFooter.tsx","../src/components/Drawer/DrawerContainer.tsx","../src/components/Drawer/Drawer.tsx"],"names":["createContext","useContext","jsxs","cn","jsx","X","useRef","useCallback","useEscapeKey","useFocusTrap","useEffect","useAnimation","useMemo","Portal"],"mappings":"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","file":"chunk-AJPYGRLA.cjs","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { DrawerContextValue } from \"./Drawer.types\";\n\nexport const DrawerContext = createContext<DrawerContextValue | null>(null);\n\nexport function useDrawer(): DrawerContextValue {\n const ctx = useContext(DrawerContext);\n if (!ctx) {\n throw new Error(\"Drawer compound components must be used within <Drawer>\");\n }\n return ctx;\n}\n","import { X } from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport { useDrawer } from \"./Drawer.context\";\nimport type { DrawerHeaderProps } from \"./Drawer.types\";\n\nexport function DrawerHeader({ children, closable = true, className }: DrawerHeaderProps) {\n const { close } = useDrawer();\n\n return (\n <div\n data-react-fancy-drawer-header=\"\"\n className={cn(\n \"flex shrink-0 items-center justify-between border-b border-[color:var(--fancy-border,var(--color-zinc-200))] px-4 py-3 dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))]\",\n className,\n )}\n >\n <div className=\"text-sm font-semibold text-[color:var(--fancy-text,var(--color-zinc-900))] dark:text-[color:var(--fancy-text-dark,var(--color-zinc-100))]\">{children}</div>\n {closable ? (\n <button\n type=\"button\"\n onClick={close}\n className=\"rounded-lg p-1 text-zinc-400 transition-colors hover:bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] hover:text-zinc-600 dark:hover:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))] dark:hover:text-zinc-300\"\n aria-label=\"Close\"\n >\n <X size={18} />\n </button>\n ) : null}\n </div>\n );\n}\n\nDrawerHeader.displayName = \"DrawerHeader\";\n","import { cn } from \"../../utils/cn\";\nimport type { DrawerBodyProps } from \"./Drawer.types\";\n\nexport function DrawerBody({ children, className }: DrawerBodyProps) {\n return (\n <div\n data-react-fancy-drawer-body=\"\"\n className={cn(\"min-h-0 flex-1 overflow-auto px-4 py-3 text-[color:var(--fancy-text-soft,var(--color-zinc-700))] dark:text-[color:var(--fancy-text-soft-dark,var(--color-zinc-300))]\", className)}\n >\n {children}\n </div>\n );\n}\n\nDrawerBody.displayName = \"DrawerBody\";\n","import { cn } from \"../../utils/cn\";\nimport type { DrawerFooterProps } from \"./Drawer.types\";\n\nexport function DrawerFooter({ children, className }: DrawerFooterProps) {\n return (\n <div\n data-react-fancy-drawer-footer=\"\"\n className={cn(\n \"flex shrink-0 items-center justify-end gap-2 border-t border-[color:var(--fancy-border,var(--color-zinc-200))] px-4 py-3 dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))]\",\n className,\n )}\n >\n {children}\n </div>\n );\n}\n\nDrawerFooter.displayName = \"DrawerFooter\";\n","import { cn } from \"../../utils/cn\";\nimport type { DrawerContainerProps } from \"./Drawer.types\";\n\n/**\n * The anchor for `<Drawer attach=\"container\">`.\n *\n * A container-attached drawer positions itself `absolute`, which resolves\n * against the nearest *positioned* ancestor — so without `relative` somewhere\n * above it, the drawer silently escapes to the viewport and looks like it\n * ignored `attach` entirely. This wrapper supplies `relative` + `overflow-hidden`\n * so the panel slides within the box rather than out of it.\n *\n * <Drawer.Container className=\"h-80 rounded-xl border\">\n * <YourContent />\n * <Drawer attach=\"container\" side=\"bottom\" open={open} onClose={close}>\n * <Drawer.Body>Filters</Drawer.Body>\n * </Drawer>\n * </Drawer.Container>\n *\n * Any element works as long as it is positioned — this is the shortcut, not a\n * requirement. Wrapping a Card, a layout pane, or a prompt-input shell in\n * `relative overflow-hidden` does the same job.\n */\nexport function DrawerContainer({ children, className, ...rest }: DrawerContainerProps) {\n return (\n <div\n data-react-fancy-drawer-container=\"\"\n {...rest}\n className={cn(\"relative overflow-hidden\", className)}\n >\n {children}\n </div>\n );\n}\n\nDrawerContainer.displayName = \"DrawerContainer\";\n","import { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { Portal } from \"../Portal\";\nimport { DrawerContext } from \"./Drawer.context\";\nimport { DrawerHeader } from \"./DrawerHeader\";\nimport { DrawerBody } from \"./DrawerBody\";\nimport { DrawerFooter } from \"./DrawerFooter\";\nimport { DrawerContainer } from \"./DrawerContainer\";\nimport { useFocusTrap } from \"../../hooks/use-focus-trap\";\nimport { useEscapeKey } from \"../../hooks/use-escape-key\";\nimport { useAnimation } from \"../../hooks/use-animation\";\nimport type { DrawerProps, DrawerSide } from \"./Drawer.types\";\n\n/**\n * `size` addresses the drawer's own axis: width on the horizontal edges,\n * height on the vertical ones. Keeping one scale across both means `size=\"lg\"`\n * does not have to be re-learned when a drawer moves from the side to the\n * bottom.\n */\nconst WIDTH = {\n sm: \"w-64\",\n md: \"w-80\",\n lg: \"w-96\",\n xl: \"w-[32rem]\",\n full: \"w-full\",\n} as const;\n\nconst HEIGHT = {\n sm: \"h-32\",\n md: \"h-64\",\n lg: \"h-96\",\n xl: \"h-[32rem]\",\n full: \"h-full\",\n} as const;\n\nconst ANCHOR: Record<DrawerSide, string> = {\n left: \"inset-y-0 left-0\",\n right: \"inset-y-0 right-0\",\n top: \"inset-x-0 top-0\",\n bottom: \"inset-x-0 bottom-0\",\n};\n\nconst ENTER: Record<DrawerSide, string> = {\n left: \"fancy-slide-in-left\",\n right: \"fancy-slide-in-right\",\n top: \"fancy-slide-in-top\",\n bottom: \"fancy-slide-in-bottom\",\n};\n\nconst EXIT: Record<DrawerSide, string> = {\n left: \"fancy-slide-out-left\",\n right: \"fancy-slide-out-right\",\n top: \"fancy-slide-out-top\",\n bottom: \"fancy-slide-out-bottom\",\n};\n\n/** The panel's edge shadow reads as depth away from the anchored edge. */\nconst EDGE: Record<DrawerSide, string> = {\n left: \"border-r\",\n right: \"border-l\",\n top: \"border-b\",\n bottom: \"border-t\",\n};\n\nfunction DrawerRoot({\n children,\n open,\n onClose,\n side = \"right\",\n size = \"md\",\n attach = \"viewport\",\n backdrop = true,\n dismissOnBackdrop = true,\n dismissOnEscape = true,\n className,\n ...rest\n}: DrawerProps) {\n const panelRef = useRef<HTMLDivElement>(null);\n const horizontal = side === \"left\" || side === \"right\";\n const isViewport = attach === \"viewport\";\n\n const close = useCallback(() => onClose(), [onClose]);\n useEscapeKey(close, open && dismissOnEscape);\n\n // A container-attached drawer is a panel, not a dialog — trapping focus in it\n // would strand keyboard users inside a Card. Only the viewport form is modal.\n useFocusTrap(panelRef, open && isViewport);\n\n useEffect(() => {\n if (!open || !isViewport) return;\n const original = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => {\n document.body.style.overflow = original;\n };\n }, [open, isViewport]);\n\n const { mounted, className: animClass, ref: animRef } = useAnimation({\n open,\n enterClass: ENTER[side],\n exitClass: EXIT[side],\n });\n\n const ctx = useMemo(() => ({ open, close, side }), [open, close, side]);\n\n if (!mounted) return null;\n\n const frame = (\n <div\n data-react-fancy-drawer-frame=\"\"\n className={cn(isViewport ? \"fixed inset-0 z-50\" : \"absolute inset-0 z-20\", !backdrop && \"pointer-events-none\")}\n >\n {backdrop ? (\n <div\n data-react-fancy-drawer-backdrop=\"\"\n className={cn(\n \"absolute inset-0 bg-black/40 transition-opacity\",\n isViewport && \"backdrop-blur-sm\",\n open ? \"opacity-100\" : \"opacity-0\",\n )}\n onClick={dismissOnBackdrop ? close : undefined}\n aria-hidden=\"true\"\n />\n ) : null}\n\n <div\n ref={(node) => {\n panelRef.current = node;\n (animRef as React.MutableRefObject<HTMLElement | null>).current = node;\n }}\n data-react-fancy-drawer=\"\"\n data-side={side}\n role=\"dialog\"\n aria-modal={isViewport || undefined}\n {...rest}\n className={cn(\n \"pointer-events-auto absolute flex flex-col border-[color:var(--fancy-border,var(--color-zinc-200))] bg-[color:var(--fancy-surface,var(--color-white))] shadow-xl dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))] dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))]\",\n ANCHOR[side],\n EDGE[side],\n horizontal ? WIDTH[size] : HEIGHT[size],\n // Cross-axis fills the anchor; the main axis is capped so a viewport\n // drawer can never grow past the screen on a small device.\n horizontal ? \"h-full\" : \"w-full\",\n isViewport && (horizontal ? \"max-w-[90vw]\" : \"max-h-[90vh]\"),\n !isViewport && (horizontal ? \"max-w-full\" : \"max-h-full\"),\n animClass,\n className,\n )}\n >\n {children}\n </div>\n </div>\n );\n\n return (\n <DrawerContext.Provider value={ctx}>\n {isViewport ? <Portal>{frame}</Portal> : frame}\n </DrawerContext.Provider>\n );\n}\n\nexport const Drawer = Object.assign(DrawerRoot, {\n Header: DrawerHeader,\n Body: DrawerBody,\n Footer: DrawerFooter,\n Container: DrawerContainer,\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
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-BXPLERIJ.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 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-left 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 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Autocomplete/Autocomplete.tsx"],"names":["forwardRef","Autocomplete","useControllableState","useFieldMode","useInlineEdit","useState","useRef","useFloatingPosition","useCallback","useOutsideClick","useEscapeKey","useEffect","isImeComposing","jsx","cn","jsxs","Portal","Fragment"],"mappings":"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","file":"chunk-BYO5RUDE.cjs","sourcesContent":["import { forwardRef, useCallback, useEffect, useRef, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { isImeComposing } from \"../../utils/ime\";\nimport { Portal } from \"../Portal\";\nimport { useControllableState } from \"../../hooks/use-controllable-state\";\nimport { useFloatingPosition } from \"../../hooks/use-floating-position\";\nimport { useOutsideClick } from \"../../hooks/use-outside-click\";\nimport { useEscapeKey } from \"../../hooks/use-escape-key\";\nimport { useFieldMode } from \"../inputs/mode/FieldMode.context\";\nimport { useInlineEdit } from \"../inputs/mode/useInlineEdit\";\nimport type { AutocompleteProps } from \"./Autocomplete.types\";\n\nexport const Autocomplete = forwardRef<HTMLInputElement, AutocompleteProps>(\n function Autocomplete(\n {\n value: controlledValue,\n defaultValue = \"\",\n onChange,\n onSearch,\n options,\n placeholder,\n loading = false,\n emptyMessage = \"No results found.\",\n disabled = false,\n className,\n mode,\n },\n ref,\n ) {\n const [value, setValue] = useControllableState(\n controlledValue,\n defaultValue,\n onChange,\n );\n const resolvedMode = useFieldMode(mode);\n const { showControl, interactive, enterEdit, exitEdit } = useInlineEdit(resolvedMode, disabled);\n const [query, setQuery] = useState(value);\n const [open, setOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState(-1);\n\n const anchorRef = useRef<HTMLInputElement>(null);\n const listRef = useRef<HTMLDivElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const position = useFloatingPosition(anchorRef, listRef, {\n placement: \"bottom-start\",\n offset: 4,\n enabled: open,\n });\n\n const close = useCallback(() => {\n setOpen(false);\n setActiveIndex(-1);\n }, []);\n\n useOutsideClick(wrapperRef, close, open);\n useEscapeKey(close, open);\n\n const filtered = options.filter((o) =>\n o.label.toLowerCase().includes(query.toLowerCase()),\n );\n\n const select = useCallback(\n (val: string) => {\n setValue(val);\n const opt = options.find((o) => o.value === val);\n setQuery(opt?.label ?? val);\n close();\n },\n [setValue, options, close],\n );\n\n useEffect(() => {\n onSearch?.(query);\n }, [query, onSearch]);\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (!open) {\n if (e.key === \"ArrowDown\") {\n setOpen(true);\n return;\n }\n return;\n }\n\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setActiveIndex((i) => Math.min(i + 1, filtered.length - 1));\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n setActiveIndex((i) => Math.max(i - 1, 0));\n } else if (e.key === \"Enter\" && activeIndex >= 0 && !isImeComposing(e)) {\n e.preventDefault();\n const item = filtered[activeIndex];\n if (item && !item.disabled) select(item.value);\n }\n };\n\n if (!showControl) {\n const matched = options.find((o) => o.value === value);\n return (\n <div\n data-react-fancy-autocomplete=\"\"\n data-mode=\"view\"\n ref={wrapperRef}\n role={interactive ? \"button\" : undefined}\n tabIndex={interactive ? 0 : undefined}\n title={interactive ? \"Click to edit\" : undefined}\n onClick={interactive ? enterEdit : undefined}\n onKeyDown={\n interactive\n ? (e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n enterEdit();\n }\n }\n : undefined\n }\n className={cn(\n \"text-sm text-[color:var(--fancy-text,var(--color-zinc-900))] dark:text-[color:var(--fancy-text-dark,var(--color-zinc-100))]\",\n !value && \"text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]\",\n interactive &&\n \"cursor-pointer rounded-md outline-none transition-colors hover:bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] focus-visible:ring-2 focus-visible:ring-blue-500/40 dark:hover:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]\",\n className,\n )}\n >\n {matched?.label ?? value ?? \"—\"}\n </div>\n );\n }\n\n return (\n <div\n data-react-fancy-autocomplete=\"\"\n ref={wrapperRef}\n className={cn(\"relative\", className)}\n onBlur={(e) => {\n // Options live in a Portal; only exit when closed and focus left.\n if (interactive && !open && !e.currentTarget.contains(e.relatedTarget as Node)) {\n exitEdit();\n }\n }}\n >\n <input\n ref={(node) => {\n (anchorRef as React.MutableRefObject<HTMLInputElement | null>).current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLInputElement | null>).current = node;\n }}\n type=\"text\"\n value={query}\n onChange={(e) => {\n setQuery(e.target.value);\n setOpen(true);\n setActiveIndex(-1);\n }}\n onFocus={() => setOpen(true)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={disabled}\n autoFocus={interactive}\n role=\"combobox\"\n aria-expanded={open}\n aria-autocomplete=\"list\"\n className=\"w-full rounded-lg border border-[color:var(--fancy-border,var(--color-zinc-200))] bg-[color:var(--fancy-input,var(--color-white))] px-3 py-2 text-sm text-[color:var(--fancy-text,var(--color-zinc-900))] placeholder:text-[color:var(--fancy-text-faint,var(--color-zinc-400))] outline-none transition-[border-color,box-shadow] duration-150 focus:border-[color:var(--fancy-focus,var(--color-blue-500))] focus:ring-2 focus:ring-[color:var(--fancy-focus,var(--color-blue-500))]/40 dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))] dark:bg-[color:var(--fancy-input-dark,#1e1e24)] dark:text-[color:var(--fancy-text-dark,var(--color-zinc-100))] dark:placeholder:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))] dark:focus:border-[color:var(--fancy-focus-dark,var(--color-blue-400))] dark:focus:ring-[color:var(--fancy-focus-dark,var(--color-blue-400))]/20\"\n />\n {open && (\n <Portal>\n <div\n ref={listRef}\n role=\"listbox\"\n 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\"\n style={{\n left: position.x,\n top: position.y,\n width: anchorRef.current?.offsetWidth,\n }}\n >\n {loading ? (\n <div className=\"px-3 py-2 text-sm text-zinc-400\">Loading...</div>\n ) : filtered.length === 0 ? (\n <div className=\"px-3 py-2 text-sm text-zinc-400\">\n {emptyMessage}\n </div>\n ) : (\n filtered.map((option, i) => (\n <button\n key={option.value}\n type=\"button\"\n role=\"option\"\n aria-selected={i === activeIndex}\n disabled={option.disabled}\n onClick={() => select(option.value)}\n className={cn(\n \"flex w-full items-center rounded-lg px-3 py-2 text-left text-sm text-zinc-700 transition-colors dark:text-zinc-200\",\n i === activeIndex\n ? \"bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] dark:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]\"\n : \"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))]\",\n option.disabled && \"cursor-not-allowed opacity-50\",\n )}\n >\n <HighlightMatch text={option.label} query={query} />\n </button>\n ))\n )}\n </div>\n </Portal>\n )}\n </div>\n );\n },\n);\n\nfunction HighlightMatch({ text, query }: { text: string; query: string }) {\n if (!query) return <>{text}</>;\n\n const idx = text.toLowerCase().indexOf(query.toLowerCase());\n if (idx === -1) return <>{text}</>;\n\n return (\n <>\n {text.slice(0, idx)}\n <span className=\"font-semibold text-zinc-900 dark:text-white\">\n {text.slice(idx, idx + query.length)}\n </span>\n {text.slice(idx + query.length)}\n </>\n );\n}\n\nAutocomplete.displayName = \"Autocomplete\";\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ResizablePanels/ResizablePanels.tsx"],"names":["forwardRef","useState","useRef","useCallback","useId","Children","jsxs","cn","jsx"],"mappings":"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","file":"chunk-CEFK54WP.cjs","sourcesContent":["import { Children, forwardRef, useCallback, useId, useRef, useState } from \"react\";\nimport type { KeyboardEvent, PointerEvent } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport type { ResizablePanelsProps } from \"./ResizablePanels.types\";\n\nfunction clamp(n: number, lo: number, hi: number): number {\n return Math.min(hi, Math.max(lo, n));\n}\n\n/** Two decimals: precise enough for a pixel on a 4K row, tidy in JSON. */\nfunction tidy(n: number): number {\n return Math.round(n * 100) / 100;\n}\n\nconst SEPARATOR_BASE =\n \"relative shrink-0 touch-none select-none outline-none transition-colors \" +\n \"bg-[color:var(--fancy-border,var(--color-zinc-200))] dark:bg-[color:var(--fancy-border-dark,var(--color-zinc-700))] \" +\n \"focus-visible:bg-[color:var(--fancy-focus,var(--color-blue-500))] dark:focus-visible:bg-[color:var(--fancy-focus-dark,var(--color-blue-400))] \" +\n \"focus-visible:ring-2 focus-visible:ring-[color:var(--fancy-focus,var(--color-blue-500))]/40 dark:focus-visible:ring-[color:var(--fancy-focus-dark,var(--color-blue-400))]/40\";\n\nconst SEPARATOR_ACTIVE =\n \"hover:bg-[color:var(--fancy-focus,var(--color-blue-500))] dark:hover:bg-[color:var(--fancy-focus-dark,var(--color-blue-400))]\";\n\n/**\n * Two panels and a draggable, keyboard-operable separator between them — the\n * W3C window-splitter pattern\n * (https://www.w3.org/WAI/ARIA/apg/patterns/windowsplitter/).\n *\n * `value` is the PRIMARY (first) panel's share of the container, as a\n * percentage. The separator is `role=\"separator\"` with `aria-valuenow/min/max`,\n * `aria-controls` pointing at the primary panel, and a tab stop. Arrow keys\n * along the drag axis move it by `step`, Shift + Arrow by `largeStep`, Home /\n * End jump to `min` / `max`. Pointer and touch drags use pointer capture, so a\n * fast drag that leaves the bar keeps resizing.\n *\n * `onValueChange` fires continuously; `onValueCommit` fires once per gesture\n * (pointer release, key release) so a host can persist a per-user size without\n * writing on every frame. The host owns persistence.\n */\nexport const ResizablePanels = forwardRef<HTMLDivElement, ResizablePanelsProps>(\n (\n {\n children,\n value,\n defaultValue = 50,\n onValueChange,\n onValueCommit,\n min = 10,\n max = 90,\n orientation = \"horizontal\",\n step = 5,\n largeStep = 20,\n label = \"Resize panels\",\n disabled = false,\n className,\n ...props\n },\n forwardedRef,\n ) => {\n // Never past the container, whatever min/max say.\n const lo = clamp(min, 0, 100);\n const hi = Math.max(lo, clamp(max, 0, 100));\n\n const [internal, setInternal] = useState(defaultValue);\n const controlled = value !== undefined;\n const current = tidy(clamp(controlled ? value : internal, lo, hi));\n\n /*\n * The value most recently ASKED FOR, re-synced to what is rendered on every\n * render. Several key repeats can land before React re-renders; reading the\n * render-time value would make each of them compute from the same start.\n */\n const latest = useRef(current);\n latest.current = current;\n\n const rootRef = useRef<HTMLDivElement | null>(null);\n const setRefs = useCallback(\n (node: HTMLDivElement | null) => {\n rootRef.current = node;\n if (typeof forwardedRef === \"function\") forwardedRef(node);\n else if (forwardedRef) forwardedRef.current = node;\n },\n [forwardedRef],\n );\n\n const firstId = useId();\n const horizontal = orientation === \"horizontal\";\n\n const request = useCallback(\n (next: number) => {\n const v = tidy(clamp(next, lo, hi));\n if (v === latest.current) return;\n latest.current = v;\n if (!controlled) setInternal(v);\n onValueChange?.(v);\n },\n [controlled, hi, lo, onValueChange],\n );\n\n // --- keyboard -----------------------------------------------------------\n\n const keyChanged = useRef(false);\n\n const onKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n if (disabled) return;\n const dec = horizontal ? \"ArrowLeft\" : \"ArrowUp\";\n const inc = horizontal ? \"ArrowRight\" : \"ArrowDown\";\n const by = e.shiftKey ? largeStep : step;\n let next: number;\n if (e.key === dec) next = latest.current - by;\n else if (e.key === inc) next = latest.current + by;\n else if (e.key === \"Home\") next = lo;\n else if (e.key === \"End\") next = hi;\n else return;\n e.preventDefault();\n const before = latest.current;\n request(next);\n if (latest.current !== before) keyChanged.current = true;\n };\n\n const onKeyUp = () => {\n if (!keyChanged.current) return;\n keyChanged.current = false;\n onValueCommit?.(latest.current);\n };\n\n // --- pointer ------------------------------------------------------------\n\n const drag = useRef<{ pointerId: number; start: number } | null>(null);\n const [dragging, setDragging] = useState(false);\n\n const valueAt = (clientX: number, clientY: number): number | null => {\n const rect = rootRef.current?.getBoundingClientRect();\n if (!rect) return null;\n const size = horizontal ? rect.width : rect.height;\n if (!size) return null;\n const offset = horizontal ? clientX - rect.left : clientY - rect.top;\n return (offset / size) * 100;\n };\n\n const onPointerDown = (e: PointerEvent<HTMLDivElement>) => {\n if (disabled || e.button !== 0) return;\n e.preventDefault();\n e.currentTarget.setPointerCapture?.(e.pointerId);\n drag.current = { pointerId: e.pointerId, start: latest.current };\n setDragging(true);\n };\n\n const onPointerMove = (e: PointerEvent<HTMLDivElement>) => {\n if (!drag.current || drag.current.pointerId !== e.pointerId) return;\n const v = valueAt(e.clientX, e.clientY);\n if (v !== null) request(v);\n };\n\n const endDrag = (e: PointerEvent<HTMLDivElement>) => {\n const d = drag.current;\n if (!d || d.pointerId !== e.pointerId) return;\n drag.current = null;\n setDragging(false);\n if (e.currentTarget.hasPointerCapture?.(e.pointerId)) {\n e.currentTarget.releasePointerCapture?.(e.pointerId);\n }\n if (latest.current !== d.start) onValueCommit?.(latest.current);\n };\n\n const items = Children.toArray(children);\n\n return (\n <div\n ref={setRefs}\n {...props}\n data-react-fancy-resizable-panels=\"\"\n data-orientation={orientation}\n data-dragging={dragging ? \"\" : undefined}\n data-disabled={disabled ? \"\" : undefined}\n className={cn(\n \"flex h-full w-full min-h-0 min-w-0 overflow-hidden\",\n horizontal ? \"flex-row\" : \"flex-col\",\n dragging && (horizontal ? \"cursor-col-resize select-none\" : \"cursor-row-resize select-none\"),\n className,\n )}\n >\n <div\n id={firstId}\n data-react-fancy-resizable-panels-panel=\"first\"\n className=\"min-h-0 min-w-0 overflow-auto\"\n style={{ flexBasis: `${current}%`, flexGrow: 0, flexShrink: 0 }}\n >\n {items[0]}\n </div>\n <div\n role=\"separator\"\n data-react-fancy-resizable-panels-separator=\"\"\n aria-orientation={horizontal ? \"vertical\" : \"horizontal\"}\n aria-valuenow={current}\n aria-valuemin={lo}\n aria-valuemax={hi}\n aria-controls={firstId}\n aria-label={label}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : 0}\n onKeyDown={onKeyDown}\n onKeyUp={onKeyUp}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={endDrag}\n onPointerCancel={endDrag}\n onLostPointerCapture={endDrag}\n className={cn(\n SEPARATOR_BASE,\n // A 1px line with a 12px hit area, so it is easy to grab by touch.\n horizontal\n ? \"w-px before:absolute before:inset-y-0 before:-left-1.5 before:-right-1.5\"\n : \"h-px before:absolute before:inset-x-0 before:-top-1.5 before:-bottom-1.5\",\n disabled\n ? \"cursor-default opacity-50\"\n : cn(SEPARATOR_ACTIVE, horizontal ? \"cursor-col-resize\" : \"cursor-row-resize\"),\n )}\n />\n <div\n data-react-fancy-resizable-panels-panel=\"second\"\n className=\"min-h-0 min-w-0 flex-1 overflow-auto\"\n >\n {items[1]}\n </div>\n </div>\n );\n },\n);\n\nResizablePanels.displayName = \"ResizablePanels\";\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Calendar/Calendar.tsx"],"names":["forwardRef","Calendar","useMemo","useState","useCallback","jsxs","cn","jsx","ChevronLeft","ChevronRight"],"mappings":"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","file":"chunk-CQ7QXZLR.cjs","sourcesContent":["import { forwardRef, useCallback, useMemo, useState } from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport type { CalendarDayContext, CalendarProps, DateRange } from \"./Calendar.types\";\n\nconst DAYS = [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"];\nconst MONTHS = [\n \"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\n \"July\", \"August\", \"September\", \"October\", \"November\", \"December\",\n];\n\nfunction isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nconst pad2 = (n: number) => (n < 10 ? `0${n}` : String(n));\n\n/** `YYYY-MM-DD` in LOCAL time — never `toISOString()`, which shifts the day east of UTC. */\nfunction defaultDateId(date: Date): string {\n return `${date.getFullYear()}-${pad2(date.getMonth() + 1)}-${pad2(date.getDate())}`;\n}\n\nfunction getDaysInMonth(year: number, month: number): Date[] {\n const days: Date[] = [];\n const firstDay = new Date(year, month, 1);\n const startDayOfWeek = firstDay.getDay();\n\n // Fill leading days from previous month\n for (let i = startDayOfWeek - 1; i >= 0; i--) {\n days.push(new Date(year, month, -i));\n }\n\n // Fill current month\n const lastDate = new Date(year, month + 1, 0).getDate();\n for (let d = 1; d <= lastDate; d++) {\n days.push(new Date(year, month, d));\n }\n\n // Fill trailing days to complete 6 rows\n while (days.length < 42) {\n days.push(new Date(year, month + 1, days.length - startDayOfWeek - lastDate + 1));\n }\n\n return days;\n}\n\nexport const Calendar = forwardRef<HTMLDivElement, CalendarProps>(\n function Calendar(\n {\n mode = \"single\",\n value,\n onChange,\n minDate,\n maxDate,\n disabledDates = [],\n className,\n dateId = defaultDateId,\n renderDay,\n dayClassName,\n dayAriaLabel,\n visibleMonth,\n onVisibleMonthChange,\n },\n ref,\n ) {\n const today = useMemo(() => new Date(), []);\n const [innerMonth, setInnerMonth] = useState(\n () => new Date(today.getFullYear(), today.getMonth(), 1),\n );\n const [rangeHover, setRangeHover] = useState<Date | null>(null);\n\n const shown = visibleMonth ?? innerMonth;\n const viewMonth = shown.getMonth();\n const viewYear = shown.getFullYear();\n\n const days = useMemo(\n () => getDaysInMonth(viewYear, viewMonth),\n [viewYear, viewMonth],\n );\n\n const goToMonth = useCallback(\n (delta: number) => {\n const next = new Date(viewYear, viewMonth + delta, 1);\n if (visibleMonth === undefined) setInnerMonth(next);\n onVisibleMonthChange?.(next);\n },\n [viewYear, viewMonth, visibleMonth, onVisibleMonthChange],\n );\n const prevMonth = useCallback(() => goToMonth(-1), [goToMonth]);\n const nextMonth = useCallback(() => goToMonth(1), [goToMonth]);\n\n const isDisabled = useCallback(\n (date: Date): boolean => {\n if (minDate && date < minDate) return true;\n if (maxDate && date > maxDate) return true;\n return disabledDates.some((d) => isSameDay(d, date));\n },\n [minDate, maxDate, disabledDates],\n );\n\n const isSelected = useCallback(\n (date: Date): boolean => {\n if (!value) return false;\n if (mode === \"single\" && value instanceof Date) {\n return isSameDay(date, value);\n }\n if (mode === \"multiple\" && Array.isArray(value)) {\n return value.some((v) => isSameDay(date, v));\n }\n if (mode === \"range\" && value && typeof value === \"object\" && \"start\" in value) {\n const range = value as DateRange;\n if (range.start && isSameDay(date, range.start)) return true;\n if (range.end && isSameDay(date, range.end)) return true;\n }\n return false;\n },\n [value, mode],\n );\n\n const isInRange = useCallback(\n (date: Date): boolean => {\n if (mode !== \"range\" || !value || typeof value !== \"object\" || !(\"start\" in value))\n return false;\n const range = value as DateRange;\n if (!range.start) return false;\n const end = range.end ?? rangeHover;\n if (!end) return false;\n const [s, e] = range.start <= end ? [range.start, end] : [end, range.start];\n return date > s && date < e;\n },\n [value, mode, rangeHover],\n );\n\n const handleSelect = useCallback(\n (date: Date) => {\n if (isDisabled(date)) return;\n\n if (mode === \"single\") {\n onChange?.(date);\n } else if (mode === \"multiple\") {\n const arr = (Array.isArray(value) ? value : []) as Date[];\n const exists = arr.findIndex((d) => isSameDay(d, date));\n if (exists >= 0) {\n onChange?.(arr.filter((_, i) => i !== exists));\n } else {\n onChange?.([...arr, date]);\n }\n } else if (mode === \"range\") {\n const range = (value && typeof value === \"object\" && \"start\" in value\n ? value\n : { start: null, end: null }) as DateRange;\n\n if (!range.start || range.end) {\n onChange?.({ start: date, end: null });\n } else {\n const [s, e] =\n date >= range.start ? [range.start, date] : [date, range.start];\n onChange?.({ start: s, end: e });\n }\n }\n },\n [mode, value, onChange, isDisabled],\n );\n\n const btnBase =\n \"flex h-8 w-8 items-center justify-center rounded-lg text-sm transition-colors\";\n\n return (\n <div\n data-react-fancy-calendar=\"\"\n ref={ref}\n className={cn(\n \"inline-block w-72 rounded-xl border border-[color:var(--fancy-border,var(--color-zinc-200))] bg-[color:var(--fancy-surface,var(--color-white))] p-4 dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))] dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))]\",\n className,\n )}\n >\n {/* Header */}\n <div className=\"mb-3 flex items-center justify-between\">\n <button\n type=\"button\"\n onClick={prevMonth}\n className=\"rounded-lg p-1 text-zinc-400 hover:bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] dark:hover:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]\"\n aria-label=\"Previous month\"\n >\n <ChevronLeft size={16} />\n </button>\n <span className=\"text-sm font-semibold\" data-react-fancy-calendar-month=\"\">\n {MONTHS[viewMonth]} {viewYear}\n </span>\n <button\n type=\"button\"\n onClick={nextMonth}\n className=\"rounded-lg p-1 text-zinc-400 hover:bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] dark:hover:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]\"\n aria-label=\"Next month\"\n >\n <ChevronRight size={16} />\n </button>\n </div>\n\n {/* Day headers */}\n <div className=\"mb-1 grid grid-cols-7 gap-1\">\n {DAYS.map((d) => (\n <div\n key={d}\n className=\"flex h-8 items-center justify-center text-xs font-medium text-zinc-400\"\n >\n {d}\n </div>\n ))}\n </div>\n\n {/* Day grid */}\n <div className=\"grid grid-cols-7 gap-1\">\n {days.map((date, i) => {\n const isCurrentMonth = date.getMonth() === viewMonth;\n const selected = isSelected(date);\n const inRange = isInRange(date);\n const disabled = isDisabled(date);\n const isToday = isSameDay(date, today);\n const ctx: CalendarDayContext = {\n date,\n id: dateId(date),\n selected,\n disabled,\n inRange,\n outsideMonth: !isCurrentMonth,\n today: isToday,\n };\n\n return (\n <button\n key={i}\n type=\"button\"\n disabled={disabled}\n data-react-fancy-calendar-day={ctx.id}\n data-outside-month={isCurrentMonth ? undefined : \"\"}\n aria-label={dayAriaLabel?.(ctx) || undefined}\n onClick={() => handleSelect(date)}\n onMouseEnter={() =>\n mode === \"range\" && setRangeHover(date)\n }\n className={cn(\n btnBase,\n !isCurrentMonth && \"text-zinc-300 dark:text-zinc-600\",\n isCurrentMonth &&\n !selected &&\n !inRange &&\n \"text-[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 inRange &&\n \"bg-blue-50 text-blue-700 dark:bg-blue-950 dark:text-blue-300\",\n selected &&\n \"bg-zinc-900 text-white dark:bg-white dark:text-zinc-900\",\n isToday && !selected && \"font-bold\",\n disabled && \"cursor-not-allowed opacity-30\",\n dayClassName?.(ctx),\n )}\n >\n {renderDay ? renderDay(ctx) : date.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n );\n },\n);\n\nCalendar.displayName = \"Calendar\";\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Carousel/Carousel.context.ts","../src/components/Carousel/CarouselPanels.tsx","../src/components/Carousel/CarouselSlide.tsx","../src/components/Carousel/CarouselControls.tsx","../src/components/Carousel/CarouselSteps.tsx","../src/components/Carousel/Carousel.tsx"],"names":["forwardRef","jsx","jsxs","useState","useRef","useEffect"],"mappings":"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","file":"chunk-DJYG7DXS.js","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { CarouselContextValue } from \"./Carousel.types\";\n\nexport const CarouselContext = createContext<CarouselContextValue | null>(null);\nCarouselContext.displayName = \"CarouselContext\";\n\nexport function useCarousel(): CarouselContextValue {\n const ctx = useContext(CarouselContext);\n if (!ctx) {\n throw new Error(\"Carousel compound components must be used within <Carousel>\");\n }\n return ctx;\n}\n","import { Children, forwardRef, isValidElement, useEffect, useRef, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useCarousel } from \"./Carousel.context\";\nimport type { CarouselPanelsProps, CarouselSlideProps } from \"./Carousel.types\";\n\nexport const CarouselPanels = forwardRef<HTMLDivElement, CarouselPanelsProps>(\n ({ children, className, transition = \"none\" }, ref) => {\n const { activeIndex, registerSlides, registerSlideNames } = useCarousel();\n const slides = Children.toArray(children);\n const prevIndexRef = useRef(activeIndex);\n const [transitionState, setTransitionState] = useState<\"enter\" | \"idle\">(\"idle\");\n\n // Register slide count\n useEffect(() => {\n registerSlides(slides.length);\n }, [slides.length, registerSlides]);\n\n // Register slide names from the `name` prop on each Carousel.Slide\n useEffect(() => {\n const names = slides.map((slide) => {\n if (isValidElement<CarouselSlideProps>(slide) && slide.props.name) {\n return slide.props.name;\n }\n return \"\";\n });\n registerSlideNames(names);\n }, [slides.length, registerSlideNames]); // eslint-disable-line react-hooks/exhaustive-deps\n\n // Handle fade transition when activeIndex changes\n useEffect(() => {\n if (transition !== \"fade\") {\n return;\n }\n\n if (prevIndexRef.current !== activeIndex) {\n setTransitionState(\"enter\");\n const timer = setTimeout(() => {\n setTransitionState(\"idle\");\n }, 300);\n prevIndexRef.current = activeIndex;\n return () => clearTimeout(timer);\n }\n }, [activeIndex, transition]);\n\n if (transition === \"fade\") {\n return (\n <div ref={ref} data-react-fancy-carousel-panels=\"\" className={cn(\"relative overflow-hidden\", className)}>\n <div\n key={activeIndex}\n className={cn(\n transitionState === \"enter\" && \"fancy-fade-in\",\n )}\n style={{\n animationDuration: transitionState === \"enter\" ? \"300ms\" : undefined,\n }}\n >\n {slides[activeIndex]}\n </div>\n </div>\n );\n }\n\n return (\n <div ref={ref} data-react-fancy-carousel-panels=\"\" className={cn(\"relative overflow-hidden\", className)}>\n {slides[activeIndex]}\n </div>\n );\n },\n);\n\nCarouselPanels.displayName = \"CarouselPanels\";\n","import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport type { CarouselSlideProps } from \"./Carousel.types\";\n\nexport const CarouselSlide = forwardRef<HTMLDivElement, CarouselSlideProps>(\n ({ children, className, name: _name }, ref) => {\n return (\n <div ref={ref} data-react-fancy-carousel-slide=\"\" className={cn(\"w-full\", className)}>\n {children}\n </div>\n );\n },\n);\n\nCarouselSlide.displayName = \"CarouselSlide\";\n","import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useCarousel } from \"./Carousel.context\";\nimport type { CarouselControlsProps } from \"./Carousel.types\";\n\nexport const CarouselControls = forwardRef<HTMLDivElement, CarouselControlsProps>(\n (\n {\n className,\n prevLabel,\n nextLabel,\n finishLabel,\n },\n ref,\n ) => {\n const { prev, next, activeIndex, totalSlides, variant, loop, onFinish, headless } = useCarousel();\n\n if (headless) {\n return null;\n }\n\n const isFirst = activeIndex === 0;\n const isLast = activeIndex === totalSlides - 1;\n\n if (variant === \"wizard\") {\n return (\n <div ref={ref} data-react-fancy-carousel-controls=\"\" className={cn(\"flex items-center gap-2\", className)}>\n <button\n type=\"button\"\n onClick={prev}\n disabled={isFirst}\n className=\"rounded-lg border px-3 py-1 text-sm disabled:opacity-50 dark:border-zinc-600\"\n >\n {prevLabel ?? \"Back\"}\n </button>\n {isLast ? (\n <button\n type=\"button\"\n onClick={onFinish}\n className=\"rounded-lg border border-blue-500 bg-blue-500 px-3 py-1 text-sm text-white hover:bg-blue-600\"\n >\n {finishLabel ?? \"Finish\"}\n </button>\n ) : (\n <button\n type=\"button\"\n onClick={next}\n className=\"rounded-lg border px-3 py-1 text-sm disabled:opacity-50 dark:border-zinc-600\"\n >\n {nextLabel ?? \"Next\"}\n </button>\n )}\n </div>\n );\n }\n\n // Directional variant (default)\n const prevDisabled = !loop && isFirst;\n const nextDisabled = !loop && isLast;\n\n return (\n <div ref={ref} data-react-fancy-carousel-controls=\"\" className={cn(\"flex items-center gap-2\", className)}>\n <button\n type=\"button\"\n onClick={prev}\n disabled={prevDisabled}\n className=\"rounded-lg border px-3 py-1 text-sm disabled:opacity-50 dark:border-zinc-600\"\n >\n {prevLabel ?? \"\\u2190\"}\n </button>\n <button\n type=\"button\"\n onClick={next}\n disabled={nextDisabled}\n className=\"rounded-lg border px-3 py-1 text-sm disabled:opacity-50 dark:border-zinc-600\"\n >\n {nextLabel ?? \"\\u2192\"}\n </button>\n </div>\n );\n },\n);\n\nCarouselControls.displayName = \"CarouselControls\";\n","import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useCarousel } from \"./Carousel.context\";\nimport type { CarouselStepsProps } from \"./Carousel.types\";\n\nexport const CarouselSteps = forwardRef<HTMLDivElement, CarouselStepsProps>(\n ({ className }, ref) => {\n const { activeIndex, totalSlides, goTo, variant, slideNames, headless } = useCarousel();\n\n if (headless) {\n return null;\n }\n\n if (variant === \"wizard\") {\n return (\n <div ref={ref} data-react-fancy-carousel-steps=\"\" className={cn(\"flex items-center gap-3\", className)}>\n {Array.from({ length: totalSlides }, (_, i) => {\n const isActive = i === activeIndex;\n const isCompleted = i < activeIndex;\n const name = slideNames[i];\n\n return (\n <button\n key={i}\n type=\"button\"\n onClick={() => goTo(i)}\n className={cn(\n \"flex items-center gap-1.5 text-sm font-medium transition-colors\",\n isActive && \"text-blue-600 dark:text-blue-400\",\n isCompleted && \"text-green-600 dark:text-green-400\",\n !isActive && !isCompleted && \"text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]\",\n )}\n aria-label={name || `Step ${i + 1}`}\n aria-current={isActive ? \"step\" : undefined}\n >\n <span\n className={cn(\n \"flex h-6 w-6 items-center justify-center rounded-full text-xs\",\n isActive && \"bg-blue-100 text-blue-700 dark:bg-blue-900 dark:text-blue-300\",\n isCompleted && \"bg-green-100 text-green-700 dark:bg-green-900 dark:text-green-300\",\n !isActive && !isCompleted && \"bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] text-zinc-500 dark:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))] dark:text-zinc-500\",\n )}\n >\n {isCompleted ? \"\\u2713\" : i + 1}\n </span>\n {name && <span>{name}</span>}\n </button>\n );\n })}\n </div>\n );\n }\n\n // Directional variant: dot indicators (default)\n return (\n <div ref={ref} data-react-fancy-carousel-steps=\"\" className={cn(\"flex items-center gap-1.5\", className)}>\n {Array.from({ length: totalSlides }, (_, i) => (\n <button\n key={i}\n type=\"button\"\n onClick={() => goTo(i)}\n className={cn(\n \"h-2 w-2 rounded-full transition-colors\",\n i === activeIndex ? \"bg-zinc-800 dark:bg-white\" : \"bg-zinc-300 dark:bg-zinc-600\",\n )}\n aria-label={`Go to slide ${i + 1}`}\n />\n ))}\n </div>\n );\n },\n);\n\nCarouselSteps.displayName = \"CarouselSteps\";\n","import { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useControllableState } from \"../../hooks/use-controllable-state\";\nimport { CarouselContext } from \"./Carousel.context\";\nimport { CarouselPanels } from \"./CarouselPanels\";\nimport { CarouselSlide } from \"./CarouselSlide\";\nimport { CarouselControls } from \"./CarouselControls\";\nimport { CarouselSteps } from \"./CarouselSteps\";\nimport type { CarouselProps, CarouselContextValue } from \"./Carousel.types\";\n\nconst CarouselRoot = forwardRef<HTMLDivElement, CarouselProps>(\n (\n {\n children,\n defaultIndex = 0,\n activeIndex: controlledIndex,\n onIndexChange,\n className,\n autoPlay = false,\n interval = 5000,\n loop = false,\n variant = \"directional\",\n headless = false,\n onFinish,\n },\n ref,\n ) => {\n const [activeIndex, setActiveIndex] = useControllableState<number>(\n controlledIndex,\n defaultIndex,\n onIndexChange,\n );\n const [totalSlides, setTotalSlides] = useState(0);\n const [slideNames, setSlideNames] = useState<string[]>([]);\n const [isPaused, setIsPaused] = useState(false);\n const onFinishRef = useRef(onFinish);\n onFinishRef.current = onFinish;\n\n const registerSlides = useCallback((count: number) => {\n setTotalSlides(count);\n }, []);\n\n const registerSlideNames = useCallback((names: string[]) => {\n setSlideNames(names);\n }, []);\n\n const next = useCallback(() => {\n setActiveIndex((i: number) => {\n if (i >= totalSlides - 1) {\n return loop ? 0 : i;\n }\n return i + 1;\n });\n }, [totalSlides, loop, setActiveIndex]);\n\n const prev = useCallback(() => {\n setActiveIndex((i: number) => {\n if (i <= 0) {\n return loop ? totalSlides - 1 : i;\n }\n return i - 1;\n });\n }, [totalSlides, loop, setActiveIndex]);\n\n const goTo = useCallback(\n (index: number) => setActiveIndex(index),\n [setActiveIndex],\n );\n\n // AutoPlay\n useEffect(() => {\n if (!autoPlay || isPaused || totalSlides <= 1) {\n return;\n }\n\n const id = setInterval(() => {\n setActiveIndex((i: number) => {\n if (i >= totalSlides - 1) {\n return loop ? 0 : i;\n }\n return i + 1;\n });\n }, interval);\n\n return () => clearInterval(id);\n }, [autoPlay, interval, isPaused, totalSlides, loop, setActiveIndex]);\n\n const ctx = useMemo<CarouselContextValue>(\n () => ({\n activeIndex,\n totalSlides,\n next,\n prev,\n goTo,\n registerSlides,\n variant,\n loop,\n slideNames,\n registerSlideNames,\n onFinish: onFinishRef.current,\n headless,\n }),\n [\n activeIndex,\n totalSlides,\n next,\n prev,\n goTo,\n registerSlides,\n variant,\n loop,\n slideNames,\n registerSlideNames,\n headless,\n ],\n );\n\n const handleMouseEnter = useCallback(() => {\n if (autoPlay) {\n setIsPaused(true);\n }\n }, [autoPlay]);\n\n const handleMouseLeave = useCallback(() => {\n if (autoPlay) {\n setIsPaused(false);\n }\n }, [autoPlay]);\n\n return (\n <CarouselContext.Provider value={ctx}>\n <div\n data-react-fancy-carousel=\"\"\n ref={ref}\n className={cn(\"relative\", className)}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n },\n);\n\nCarouselRoot.displayName = \"Carousel\";\n\nexport const Carousel = Object.assign(CarouselRoot, {\n Panels: CarouselPanels,\n Slide: CarouselSlide,\n Controls: CarouselControls,\n Steps: CarouselSteps,\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ReorderableGrid/move-item.ts","../src/components/ReorderableGrid/ReorderableGrid.tsx"],"names":["moved","total","t"],"mappings":"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","file":"chunk-DTOIO42M.js","sourcesContent":["export interface MoveItemOptions<T> {\n /**\n * Pinned entries. A locked entry keeps its absolute index: it cannot be\n * moved, nothing can be dropped onto its slot, and the other entries flow\n * around it. Either the locked ids themselves or a predicate.\n */\n locked?: Iterable<T> | ((id: T) => boolean);\n}\n\nfunction lockPredicate<T>(locked: MoveItemOptions<T>[\"locked\"]): ((id: T) => boolean) | null {\n if (!locked) return null;\n if (typeof locked === \"function\") return locked;\n const set = new Set(locked);\n return set.size ? (id: T) => set.has(id) : null;\n}\n\n/**\n * Move the entry at `fromIndex` so that it ends up at `toIndex`, row-major,\n * and return a NEW array. The input is never mutated.\n *\n * This is the whole reorder rule of `ReorderableGrid`, with no DOM: the grid's\n * pointer drags and arrow keys both go through it, and an agent bridge can call\n * it directly to reorder from a tool call.\n *\n * - `toIndex` is the entry's index in the RESULT, so `moveItem(ids, 0, ids.length - 1)`\n * moves the first entry to the end.\n * - An index outside the list (or not an integer) throws `RangeError`. That is\n * a caller bug, and a silent no-op would hide it.\n * - With `locked`: a locked entry keeps its absolute index and the move happens\n * among the free slots only. Moving a locked entry, or onto a locked slot,\n * returns the order unchanged: that is the rule doing its job, not an error.\n */\nexport function moveItem<T>(\n ids: readonly T[],\n fromIndex: number,\n toIndex: number,\n options: MoveItemOptions<T> = {},\n): T[] {\n const n = ids.length;\n for (const [name, i] of [\n [\"fromIndex\", fromIndex],\n [\"toIndex\", toIndex],\n ] as const) {\n if (!Number.isInteger(i) || i < 0 || i >= n) {\n throw new RangeError(`moveItem: ${name} ${i} is outside 0..${n - 1}`);\n }\n }\n\n const out = ids.slice();\n if (fromIndex === toIndex) return out;\n\n const isLocked = lockPredicate(options.locked);\n if (!isLocked) {\n const [moved] = out.splice(fromIndex, 1);\n out.splice(toIndex, 0, moved as T);\n return out;\n }\n\n if (isLocked(ids[fromIndex] as T) || isLocked(ids[toIndex] as T)) return out;\n\n // Move within the free slots only; locked entries never leave theirs.\n const slots: number[] = [];\n for (let i = 0; i < n; i++) if (!isLocked(ids[i] as T)) slots.push(i);\n const free = slots.map((i) => ids[i] as T);\n const [moved] = free.splice(slots.indexOf(fromIndex), 1);\n free.splice(slots.indexOf(toIndex), 0, moved as T);\n slots.forEach((slot, k) => {\n out[slot] = free[k] as T;\n });\n return out;\n}\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type {\n KeyboardEvent as ReactKeyboardEvent,\n PointerEvent as ReactPointerEvent,\n ReactElement,\n Ref,\n} from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { composeRefs } from \"../../utils/compose-refs\";\nimport { useControllableState } from \"../../hooks/use-controllable-state\";\nimport { useEscapeKey } from \"../../hooks/use-escape-key\";\nimport { moveItem } from \"./move-item\";\nimport type {\n ReorderableGridAnnouncementContext,\n ReorderableGridItem,\n ReorderableGridLabels,\n ReorderableGridProps,\n} from \"./ReorderableGrid.types\";\n\n/*\n * Literal class names, not `grid-cols-${n}`: Tailwind only generates classes it\n * can read in source, and the consumer's build scans this file's dist. That is\n * also why the column count is not an inline style, as Grid's is.\n */\nconst COLUMN_CLASSES = [\n \"grid-cols-1\",\n \"grid-cols-2\",\n \"grid-cols-3\",\n \"grid-cols-4\",\n \"grid-cols-5\",\n \"grid-cols-6\",\n \"grid-cols-7\",\n \"grid-cols-8\",\n \"grid-cols-9\",\n \"grid-cols-10\",\n \"grid-cols-11\",\n \"grid-cols-12\",\n] as const;\n\nconst GAP_CLASSES = { none: \"gap-0\", sm: \"gap-3\", md: \"gap-6\", lg: \"gap-10\" } as const;\n\nconst FOCUS_RING =\n \"ring-[color:var(--fancy-focus,var(--color-blue-500))] dark:ring-[color:var(--fancy-focus-dark,var(--color-blue-400))]\";\n\nconst CELL_BASE =\n \"relative min-w-0 select-none touch-none outline-none \" +\n \"focus-visible:ring-2 focus-visible:ring-[color:var(--fancy-focus,var(--color-blue-500))] dark:focus-visible:ring-[color:var(--fancy-focus-dark,var(--color-blue-400))]\";\n\nconst CELL_STYLED =\n \"rounded-lg border p-3 text-sm \" +\n \"border-[color:var(--fancy-border,var(--color-zinc-200))] dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))] \" +\n \"bg-[color:var(--fancy-surface,var(--color-white))] dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))] \" +\n \"text-[color:var(--fancy-text,var(--color-zinc-900))] dark:text-[color:var(--fancy-text-dark,var(--color-zinc-100))]\";\n\nconst CELL_LOCKED_STYLED =\n \"border-dashed bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] dark:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]\";\n\n/** Movement before a press becomes a drag, so clicks inside a cell still click. */\nconst DRAG_THRESHOLD = 4;\n/** Distance from a scroll container's edge at which a drag starts scrolling it. */\nconst EDGE = 48;\nconst MAX_SCROLL_STEP = 18;\nconst SHIFT_MS = 150;\n\n/** A press on one of these inside a cell is the element's, not a drag (unless it is the handle). */\nconst INTERACTIVE = \"input, textarea, select, button, a[href], [contenteditable=''], [contenteditable='true']\";\n\nconst DEFAULT_LABELS: ReorderableGridLabels = {\n instructions:\n \"Press Space or Enter to pick up. Use the arrow keys to move, Space or Enter to drop, Escape to cancel.\",\n roleDescription: \"reorderable item\",\n pickedUp: (c) =>\n `Picked up ${c.label} at position ${c.position} of ${c.total}, row ${c.row} column ${c.column}. ` +\n \"Arrow keys move it, Space or Enter drops it, Escape cancels\",\n moved: (c) => `Moved to position ${c.position} of ${c.total}, row ${c.row} column ${c.column}`,\n dropped: (c) => `Dropped ${c.label} at position ${c.position} of ${c.total}, row ${c.row} column ${c.column}`,\n cancelled: (c) =>\n `Cancelled. ${c.label} returned to position ${c.position} of ${c.total}, row ${c.row} column ${c.column}`,\n locked: (c) => `${c.label} is locked and cannot be moved`,\n};\n\n/**\n * The order to show: `order`'s known ids first, then any item it does not\n * mention, in `items` order. A stale or partial order can never hide a cell.\n */\nfunction resolveOrder(order: readonly string[] | undefined, items: readonly ReorderableGridItem[]): string[] {\n const ids = items.map((i) => i.id);\n const known = new Set(ids);\n const seen = new Set<string>();\n const out: string[] = [];\n for (const id of order ?? []) {\n if (known.has(id) && !seen.has(id)) {\n seen.add(id);\n out.push(id);\n }\n }\n for (const id of ids) {\n if (!seen.has(id)) {\n seen.add(id);\n out.push(id);\n }\n }\n return out;\n}\n\nfunction sameOrder(a: readonly string[], b: readonly string[]): boolean {\n return a.length === b.length && a.every((id, i) => id === b[i]);\n}\n\nfunction prefersReducedMotion(): boolean {\n return typeof matchMedia === \"function\" && matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n}\n\ntype Mode = \"pointer\" | \"keyboard\";\n\ninterface Session {\n id: string;\n mode: Mode;\n /** The committed order when the interaction began. Cancel returns here. */\n origin: string[];\n originIndex: number;\n /** Where the item would land. `null`: the pointer is outside the grid, and a release cancels. */\n target: number | null;\n}\n\ninterface PointerDrag {\n id: string;\n pointerId: number;\n /** The cell's layout offset when the drag began. */\n startOffset: { x: number; y: number };\n /** Pointer, in the grid's coordinates, when the drag began. */\n startPos: { x: number; y: number };\n clientX: number;\n clientY: number;\n scroller: HTMLElement | null;\n}\n\n/** Nearest ancestor that can scroll, else the document's scroller. */\nfunction scrollParent(el: HTMLElement): HTMLElement | null {\n for (let p = el.parentElement; p; p = p.parentElement) {\n const s = getComputedStyle(p);\n if (/(auto|scroll)/.test(s.overflowY + s.overflowX)) {\n if (p.scrollHeight > p.clientHeight || p.scrollWidth > p.clientWidth) return p;\n }\n }\n return (document.scrollingElement as HTMLElement | null) ?? null;\n}\n\nfunction ReorderableGridInner<T extends ReorderableGridItem>(\n {\n items,\n value,\n defaultValue,\n onReorder,\n renderItem,\n columns = 2,\n gap = \"sm\",\n disabled = false,\n label,\n getItemLabel,\n labels: labelOverrides,\n unstyled = false,\n cellClassName,\n className,\n ...props\n }: ReorderableGridProps<T>,\n forwardedRef: Ref<HTMLDivElement>,\n) {\n const cols = Math.min(12, Math.max(1, Math.round(columns) || 1));\n const labels = useMemo(() => ({ ...DEFAULT_LABELS, ...labelOverrides }), [labelOverrides]);\n\n // ── order ────────────────────────────────────────────────────────────────\n const [stored, setStored] = useControllableState<string[] | undefined>(value, defaultValue, (next) => {\n if (next) onReorder?.(next);\n });\n const committed = useMemo(() => resolveOrder(stored, items), [stored, items]);\n\n const byId = useMemo(() => new Map(items.map((i) => [i.id, i])), [items]);\n const lockedIds = useMemo(() => items.filter((i) => i.locked).map((i) => i.id), [items]);\n const isLocked = useCallback((id: string) => byId.get(id)?.locked === true, [byId]);\n\n const [session, setSessionState] = useState<Session | null>(null);\n const sessionRef = useRef<Session | null>(null);\n const setSession = useCallback((s: Session | null) => {\n sessionRef.current = s;\n setSessionState(s);\n }, []);\n\n const previewOf = useCallback(\n (s: Session): string[] =>\n s.target === null || s.target === s.originIndex\n ? s.origin\n : moveItem(s.origin, s.originIndex, s.target, { locked: lockedIds }),\n [lockedIds],\n );\n\n const shown = useMemo(\n () => (session ? resolveOrder(previewOf(session), items) : committed),\n [session, previewOf, items, committed],\n );\n const shownRef = useRef(shown);\n shownRef.current = shown;\n\n // ── announcements ────────────────────────────────────────────────────────\n const [announcement, setAnnouncement] = useState(\"\");\n const labelOf = useCallback(\n (id: string) => {\n const item = byId.get(id);\n if (!item) return id;\n if (getItemLabel) return getItemLabel(item);\n const l = (item as { label?: unknown }).label;\n return typeof l === \"string\" ? l : id;\n },\n [byId, getItemLabel],\n );\n const ctxAt = useCallback(\n (id: string, index: number, total: number): ReorderableGridAnnouncementContext => ({\n id,\n label: labelOf(id),\n position: index + 1,\n total,\n row: Math.floor(index / cols) + 1,\n column: (index % cols) + 1,\n }),\n [labelOf, cols],\n );\n\n // ── elements ─────────────────────────────────────────────────────────────\n const rootRef = useRef<HTMLDivElement | null>(null);\n const cellRefs = useRef(new Map<string, HTMLDivElement>());\n const cellRef = useCallback(\n (id: string) => (el: HTMLDivElement | null) => {\n if (el) cellRefs.current.set(id, el);\n else cellRefs.current.delete(id);\n },\n [],\n );\n\n const instructionsId = useId();\n const [activeId, setActiveId] = useState<string | null>(null);\n const tabStop = activeId !== null && shown.includes(activeId) ? activeId : shown[0];\n /** Focus to put back after a drop or cancel moves the focused node. */\n const refocus = useRef<string | null>(null);\n\n // ── commit / cancel ──────────────────────────────────────────────────────\n const drag = useRef<PointerDrag | null>(null);\n const pending = useRef<{ id: string; pointerId: number; clientX: number; clientY: number } | null>(null);\n const scrollFrame = useRef<number | null>(null);\n\n const settle = useCallback((id: string) => {\n const el = cellRefs.current.get(id);\n if (!el) return;\n if (el.style.transform && !prefersReducedMotion()) {\n el.style.transition = `transform ${SHIFT_MS}ms ease`;\n window.setTimeout(() => {\n if (!el.style.transform) el.style.transition = \"\";\n }, SHIFT_MS + 50);\n }\n el.style.transform = \"\";\n }, []);\n\n const endPointer = useCallback(() => {\n const d = drag.current;\n drag.current = null;\n pending.current = null;\n if (scrollFrame.current !== null) {\n cancelAnimationFrame(scrollFrame.current);\n scrollFrame.current = null;\n }\n if (!d) return;\n const root = rootRef.current;\n if (root?.hasPointerCapture?.(d.pointerId)) root.releasePointerCapture?.(d.pointerId);\n settle(d.id);\n }, [settle]);\n\n const cancel = useCallback(() => {\n const s = sessionRef.current;\n if (!s) return;\n endPointer();\n setSession(null);\n if (s.mode === \"keyboard\") refocus.current = s.id;\n setAnnouncement(labels.cancelled(ctxAt(s.id, s.originIndex, s.origin.length)));\n }, [ctxAt, endPointer, labels, setSession]);\n\n const drop = useCallback(() => {\n const s = sessionRef.current;\n if (!s) return;\n if (s.target === null) {\n cancel();\n return;\n }\n const final = previewOf(s);\n endPointer();\n setSession(null);\n if (s.mode === \"keyboard\") refocus.current = s.id;\n setAnnouncement(labels.dropped(ctxAt(s.id, s.target, final.length)));\n if (!sameOrder(final, s.origin)) setStored(final);\n }, [cancel, ctxAt, endPointer, labels, previewOf, setSession, setStored]);\n\n // Escape joins the kit's layer stack, so inside a Modal or a full-screen\n // surface it cancels the pick-up before it closes anything else.\n useEscapeKey(cancel, session !== null);\n\n useEffect(() => {\n if (disabled) cancel();\n }, [disabled, cancel]);\n\n useEffect(() => () => endPointer(), [endPointer]);\n\n const begin = useCallback(\n (id: string, mode: Mode): boolean => {\n const origin = shownRef.current;\n const index = origin.indexOf(id);\n if (index < 0) return false;\n if (isLocked(id)) {\n setAnnouncement(labels.locked(ctxAt(id, index, origin.length)));\n return false;\n }\n setSession({ id, mode, origin, originIndex: index, target: index });\n setAnnouncement(labels.pickedUp(ctxAt(id, index, origin.length)));\n return true;\n },\n [ctxAt, isLocked, labels, setSession],\n );\n\n const retarget = useCallback(\n (target: number | null) => {\n const s = sessionRef.current;\n if (!s || target === s.target) return;\n setSession({ ...s, target });\n if (target !== null) setAnnouncement(labels.moved(ctxAt(s.id, target, s.origin.length)));\n },\n [ctxAt, labels, setSession],\n );\n\n // ── keyboard ─────────────────────────────────────────────────────────────\n\n /**\n * The slot an arrow key leads to from `from`, or null for none. Left/Right\n * step one slot, Up/Down one row. When `skipLocked`, a pinned slot is passed\n * over: Left/Right go on to the next free slot that way; Up/Down take the\n * nearest free slot after the pinned one in reading order (forward for Down,\n * backward for Up). Down from a row above a short last row lands on the last\n * slot.\n */\n const step = useCallback(\n (order: string[], from: number, key: string, skipLocked: boolean): number | null => {\n const n = order.length;\n const free = (i: number) => !skipLocked || !isLocked(order[i] as string);\n const scan = (start: number, dir: 1 | -1) => {\n for (let i = start; i >= 0 && i < n; i += dir) if (free(i)) return i;\n return null;\n };\n switch (key) {\n case \"ArrowRight\":\n return scan(from + 1, 1);\n case \"ArrowLeft\":\n return scan(from - 1, -1);\n case \"ArrowDown\": {\n let t = from + cols;\n if (t > n - 1) {\n if (Math.floor(from / cols) >= Math.floor((n - 1) / cols)) return null;\n t = n - 1;\n }\n return scan(t, 1);\n }\n case \"ArrowUp\":\n return from - cols < 0 ? null : scan(from - cols, -1);\n case \"Home\":\n return scan(0, 1);\n case \"End\":\n return scan(n - 1, -1);\n default:\n return null;\n }\n },\n [cols, isLocked],\n );\n\n const onCellKeyDown = (e: ReactKeyboardEvent<HTMLDivElement>, id: string) => {\n // Keys typed into a field inside the cell belong to the field.\n if (disabled || e.target !== e.currentTarget) return;\n const s = sessionRef.current;\n\n if (e.key === \" \" || e.key === \"Enter\") {\n e.preventDefault();\n if (s?.mode === \"keyboard\") drop();\n else if (!s) begin(id, \"keyboard\");\n return;\n }\n\n if (![\"ArrowRight\", \"ArrowLeft\", \"ArrowDown\", \"ArrowUp\", \"Home\", \"End\"].includes(e.key)) return;\n e.preventDefault();\n\n if (s?.mode === \"keyboard\") {\n if (s.target === null) return;\n const t = step(shownRef.current, s.target, e.key, true);\n if (t !== null) retarget(t);\n return;\n }\n if (s) return;\n\n const order = shownRef.current;\n const t = step(order, order.indexOf(id), e.key, false);\n if (t === null) return;\n const next = order[t] as string;\n setActiveId(next);\n cellRefs.current.get(next)?.focus();\n };\n\n // ── pointer ──────────────────────────────────────────────────────────────\n\n /** Client point to the grid's own coordinates (the space cell offsets are in). */\n const toLocal = (clientX: number, clientY: number) => {\n const root = rootRef.current!;\n const r = root.getBoundingClientRect();\n return { x: clientX - r.left - root.clientLeft, y: clientY - r.top - root.clientTop, rect: r };\n };\n\n /**\n * The slot under the pointer. Kanban's rule (compare the pointer with each\n * card's box) extended to two dimensions: the nearest cell box wins, so a\n * point in a gutter belongs to the closer neighbour. Boxes are layout\n * offsets, which ignore transforms, so cells mid-animation do not move the\n * target. Outside the grid is `null`: a release there cancels. A pinned cell\n * is not a target; the current target stands.\n */\n const hitTest = (clientX: number, clientY: number): number | null => {\n const s = sessionRef.current;\n if (!s) return null;\n const { x, y, rect } = toLocal(clientX, clientY);\n if (clientX < rect.left || clientX > rect.right || clientY < rect.top || clientY > rect.bottom) return null;\n\n const order = shownRef.current;\n let best = -1;\n let bestDist = Infinity;\n order.forEach((id, i) => {\n const el = cellRefs.current.get(id);\n if (!el) return;\n const l = el.offsetLeft;\n const t = el.offsetTop;\n const dx = Math.max(l - x, 0, x - (l + el.offsetWidth));\n const dy = Math.max(t - y, 0, y - (t + el.offsetHeight));\n const dist = dx * dx + dy * dy;\n if (dist < bestDist) {\n bestDist = dist;\n best = i;\n }\n });\n if (best < 0) return s.target;\n if (isLocked(order[best] as string)) return s.target ?? s.originIndex;\n return best;\n };\n\n /** The dragged cell follows the pointer from where it STARTED, whatever slot it now has. */\n const applyDragTransform = useCallback(() => {\n const d = drag.current;\n const root = rootRef.current;\n if (!d || !root) return;\n const el = cellRefs.current.get(d.id);\n if (!el) return;\n const r = root.getBoundingClientRect();\n const px = d.clientX - r.left - root.clientLeft;\n const py = d.clientY - r.top - root.clientTop;\n const tx = d.startOffset.x + (px - d.startPos.x) - el.offsetLeft;\n const ty = d.startOffset.y + (py - d.startPos.y) - el.offsetTop;\n el.style.transition = \"\";\n el.style.transform = `translate3d(${tx}px, ${ty}px, 0)`;\n }, []);\n\n const track = () => {\n const d = drag.current;\n if (!d) return;\n retarget(hitTest(d.clientX, d.clientY));\n applyDragTransform();\n };\n\n /** Scroll the nearest scroller while the pointer is near its edge. */\n const autoScroll = () => {\n const d = drag.current;\n if (!d?.scroller || typeof requestAnimationFrame !== \"function\") return;\n const sc = d.scroller;\n const isDoc = sc === document.scrollingElement;\n const box = isDoc\n ? { top: 0, left: 0, bottom: window.innerHeight, right: window.innerWidth }\n : sc.getBoundingClientRect();\n const speed = (dist: number) => (dist < EDGE ? Math.ceil(((EDGE - dist) / EDGE) * MAX_SCROLL_STEP) : 0);\n let vy = speed(d.clientY - box.top) ? -speed(d.clientY - box.top) : speed(box.bottom - d.clientY);\n let vx = speed(d.clientX - box.left) ? -speed(d.clientX - box.left) : speed(box.right - d.clientX);\n // Only where it can actually go.\n if ((vy < 0 && sc.scrollTop <= 0) || (vy > 0 && sc.scrollTop + sc.clientHeight >= sc.scrollHeight)) vy = 0;\n if ((vx < 0 && sc.scrollLeft <= 0) || (vx > 0 && sc.scrollLeft + sc.clientWidth >= sc.scrollWidth)) vx = 0;\n if (!vx && !vy) {\n scrollFrame.current = null;\n return;\n }\n if (scrollFrame.current !== null) return;\n scrollFrame.current = requestAnimationFrame(() => {\n scrollFrame.current = null;\n if (!drag.current) return;\n sc.scrollTop += vy;\n sc.scrollLeft += vx;\n track();\n autoScroll();\n });\n };\n\n const onCellPointerDown = (e: ReactPointerEvent<HTMLDivElement>, id: string) => {\n if (disabled || e.button !== 0 || sessionRef.current || isLocked(id)) return;\n const cellEl = e.currentTarget;\n const target = e.target as Element;\n const handle = target.closest(\"[data-reorderable-handle]\");\n if (handle && cellEl.contains(handle)) {\n // The handle: always a drag.\n } else if (cellEl.querySelector(\"[data-reorderable-handle]\")) {\n return; // This cell has a handle and the press was elsewhere.\n } else {\n const interactive = target.closest(INTERACTIVE);\n if (interactive && interactive !== cellEl && cellEl.contains(interactive)) return;\n }\n pending.current = { id, pointerId: e.pointerId, clientX: e.clientX, clientY: e.clientY };\n };\n\n const onRootPointerMove = (e: ReactPointerEvent<HTMLDivElement>) => {\n const p = pending.current;\n if (p && p.pointerId === e.pointerId && !drag.current) {\n if (Math.hypot(e.clientX - p.clientX, e.clientY - p.clientY) < DRAG_THRESHOLD) return;\n const root = rootRef.current;\n const el = cellRefs.current.get(p.id);\n pending.current = null;\n if (!root || !el || !begin(p.id, \"pointer\")) return;\n // Capture on the ROOT, never the cell: the live preview moves the cell's\n // DOM node, and moving a node can drop a capture held on it.\n root.setPointerCapture?.(e.pointerId);\n window.getSelection?.()?.removeAllRanges();\n const start = toLocal(p.clientX, p.clientY);\n drag.current = {\n id: p.id,\n pointerId: e.pointerId,\n startOffset: { x: el.offsetLeft, y: el.offsetTop },\n startPos: { x: start.x, y: start.y },\n clientX: e.clientX,\n clientY: e.clientY,\n scroller: scrollParent(root),\n };\n }\n const d = drag.current;\n if (!d || d.pointerId !== e.pointerId) return;\n d.clientX = e.clientX;\n d.clientY = e.clientY;\n track();\n autoScroll();\n };\n\n const onRootPointerUp = (e: ReactPointerEvent<HTMLDivElement>) => {\n if (pending.current?.pointerId === e.pointerId) {\n pending.current = null;\n return;\n }\n const d = drag.current;\n if (!d || d.pointerId !== e.pointerId) return;\n d.clientX = e.clientX;\n d.clientY = e.clientY;\n const target = hitTest(e.clientX, e.clientY);\n const s = sessionRef.current;\n if (s && target !== s.target) {\n // Commit what the release point says, not the last move event.\n sessionRef.current = { ...s, target };\n }\n drop();\n };\n\n const onRootPointerCancel = (e: ReactPointerEvent<HTMLDivElement>) => {\n if (pending.current?.pointerId === e.pointerId) pending.current = null;\n if (drag.current?.pointerId === e.pointerId) cancel();\n };\n\n // ── layout effects: follow the pointer, shift the others, keep focus ──────\n\n const offsets = useRef(new Map<string, { x: number; y: number }>());\n const shiftTimers = useRef(new Map<string, number>());\n const shownKey = shown.join(\"\\u0000\");\n\n useLayoutEffect(() => {\n const prev = offsets.current;\n const next = new Map<string, { x: number; y: number }>();\n for (const [id, el] of cellRefs.current) next.set(id, { x: el.offsetLeft, y: el.offsetTop });\n offsets.current = next;\n\n // FLIP: cells the preview displaced slide from where they were.\n if (prev.size && !prefersReducedMotion()) {\n for (const [id, el] of cellRefs.current) {\n if (id === drag.current?.id) continue;\n const a = prev.get(id);\n const b = next.get(id);\n if (!a || !b || (a.x === b.x && a.y === b.y)) continue;\n el.style.transition = \"none\";\n el.style.transform = `translate3d(${a.x - b.x}px, ${a.y - b.y}px, 0)`;\n void el.offsetWidth;\n el.style.transition = `transform ${SHIFT_MS}ms ease`;\n el.style.transform = \"\";\n const old = shiftTimers.current.get(id);\n if (old !== undefined) window.clearTimeout(old);\n shiftTimers.current.set(\n id,\n window.setTimeout(() => {\n shiftTimers.current.delete(id);\n if (!el.style.transform) el.style.transition = \"\";\n }, SHIFT_MS + 50),\n );\n }\n }\n\n applyDragTransform();\n\n // React moves DOM nodes to reorder them, and a moved node can lose focus.\n const s = sessionRef.current;\n const keep = s?.mode === \"keyboard\" ? s.id : refocus.current;\n refocus.current = null;\n if (keep) {\n const el = cellRefs.current.get(keep);\n if (el && document.activeElement !== el) el.focus();\n }\n }, [shownKey, session, applyDragTransform]);\n\n useEffect(() => {\n const timers = shiftTimers.current;\n return () => {\n for (const t of timers.values()) window.clearTimeout(t);\n };\n }, []);\n\n // ── render ───────────────────────────────────────────────────────────────\n\n const state = session ? (session.mode === \"pointer\" ? \"dragging\" : \"picked-up\") : \"idle\";\n const dropIndex = session && session.target !== null ? session.target : undefined;\n const total = shown.length;\n\n return (\n <div\n {...props}\n ref={composeRefs(rootRef, forwardedRef)}\n data-react-fancy-reorderable-grid=\"\"\n data-columns={cols}\n data-state={state}\n data-drop-index={dropIndex}\n data-disabled={disabled ? \"\" : undefined}\n role=\"group\"\n aria-label={label}\n aria-disabled={disabled || undefined}\n onPointerMove={onRootPointerMove}\n onPointerUp={onRootPointerUp}\n onPointerCancel={onRootPointerCancel}\n onLostPointerCapture={(e) => {\n if (drag.current?.pointerId === e.pointerId) cancel();\n }}\n className={cn(\n \"relative grid\",\n COLUMN_CLASSES[cols - 1],\n GAP_CLASSES[gap],\n session?.mode === \"pointer\" && \"cursor-grabbing select-none\",\n disabled && \"opacity-60\",\n className,\n )}\n >\n {shown.map((id, index) => {\n const item = byId.get(id);\n if (!item) return null;\n const locked = item.locked === true;\n const active = session?.id === id;\n const dragging = active && session?.mode === \"pointer\";\n const pickedUp = active && session?.mode === \"keyboard\";\n const dropTarget = active && dropIndex === index;\n const outside = active && session?.target === null;\n const itemState = {\n index,\n position: index + 1,\n row: Math.floor(index / cols) + 1,\n column: (index % cols) + 1,\n total,\n dragging,\n pickedUp,\n dropTarget,\n locked,\n disabled,\n handleProps: { \"data-reorderable-handle\": \"\" as const },\n };\n return (\n <div\n key={id}\n ref={cellRef(id)}\n data-react-fancy-reorderable-grid-item=\"\"\n data-reorderable-id={id}\n data-index={index}\n data-state={dragging ? \"dragging\" : pickedUp ? \"picked-up\" : \"idle\"}\n data-locked={locked ? \"true\" : undefined}\n data-drop-target={dropTarget ? \"\" : undefined}\n role=\"button\"\n aria-roledescription={labels.roleDescription}\n aria-describedby={instructionsId}\n aria-pressed={active}\n aria-disabled={disabled || locked || undefined}\n tabIndex={disabled ? -1 : id === tabStop ? 0 : -1}\n onFocus={(e) => {\n if (e.target === e.currentTarget) setActiveId(id);\n }}\n onKeyDown={(e) => onCellKeyDown(e, id)}\n onPointerDown={(e) => onCellPointerDown(e, id)}\n className={cn(\n CELL_BASE,\n !unstyled && CELL_STYLED,\n !unstyled && locked && CELL_LOCKED_STYLED,\n locked || disabled ? \"cursor-default\" : \"cursor-grab\",\n dragging && cn(\"z-10 cursor-grabbing shadow-lg ring-2\", FOCUS_RING),\n pickedUp && cn(\"z-10 shadow-md ring-2\", FOCUS_RING),\n outside && \"opacity-60\",\n cellClassName,\n )}\n >\n {renderItem ? renderItem(item, itemState) : labelOf(id)}\n </div>\n );\n })}\n <div id={instructionsId} className=\"sr-only\">\n {labels.instructions}\n </div>\n <div data-react-fancy-reorderable-grid-live=\"\" aria-live=\"assertive\" aria-atomic=\"true\" className=\"sr-only\">\n {announcement}\n </div>\n </div>\n );\n}\n\n/**\n * A grid of cells reordered in place, row-major, by pointer or keyboard.\n *\n * Built for field-order designers: the grid looks like the grid it designs.\n * Order is a list of ids (`value` / `defaultValue` / `onReorder`); the pure\n * `moveItem(ids, from, to, { locked })` is the same rule without a DOM, for\n * agents.\n */\nexport const ReorderableGrid = forwardRef(ReorderableGridInner) as (<T extends ReorderableGridItem>(\n props: ReorderableGridProps<T> & { ref?: Ref<HTMLDivElement> },\n) => ReactElement) & { displayName?: string };\n\nReorderableGrid.displayName = \"ReorderableGrid\";\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/inputs/Switch/Switch.colors.ts","../src/components/inputs/Switch/Switch.tsx"],"names":[],"mappings":"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","file":"chunk-DXZCKDYS.js","sourcesContent":["// AUTO-GENERATED by scripts/gen-switch-colors — do not edit by hand.\n// Literal Tailwind class strings for every color in the v4 palette so the\n// scanner can detect them in the published dist (template-built names are\n// invisible to Tailwind's JIT). Regenerate after changing the palette.\nimport type { Color } from \"../../../utils/types\";\n\nexport const switchTrack: Record<Color, string> = {\n // The host's colour, from CSS variables -- no dark: variant, because a\n // host that themes per mode scopes the variables themselves.\n brand: \"bg-brand\",\n slate: \"bg-slate-500\",\n gray: \"bg-gray-500\",\n zinc: \"bg-zinc-500\",\n neutral: \"bg-neutral-500\",\n stone: \"bg-stone-500\",\n red: \"bg-red-500\",\n orange: \"bg-orange-500\",\n amber: \"bg-amber-500\",\n yellow: \"bg-yellow-500\",\n lime: \"bg-lime-500\",\n green: \"bg-green-500\",\n emerald: \"bg-emerald-500\",\n teal: \"bg-teal-500\",\n cyan: \"bg-cyan-500\",\n sky: \"bg-sky-500\",\n blue: \"bg-blue-500\",\n indigo: \"bg-indigo-500\",\n violet: \"bg-violet-500\",\n purple: \"bg-purple-500\",\n fuchsia: \"bg-fuchsia-500\",\n pink: \"bg-pink-500\",\n rose: \"bg-rose-500\",\n};\n","import { forwardRef, useId } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { useControllableState } from \"../../../hooks/use-controllable-state\";\nimport { useFieldMode } from \"../mode/FieldMode.context\";\nimport { useInlineEdit } from \"../mode/useInlineEdit\";\nimport { dirtyRingClasses } from \"../inputs.utils\";\nimport type { SwitchProps } from \"./Switch.types\";\nimport { switchTrack } from \"./Switch.colors\";\n\nexport const Switch = forwardRef<HTMLButtonElement, SwitchProps>(\n (\n {\n size = \"md\",\n dirty,\n error,\n label,\n labelHidden,\n description,\n required,\n disabled,\n className,\n id,\n name,\n checked: controlledChecked,\n defaultChecked = false,\n onCheckedChange,\n color = \"blue\",\n mode,\n ...rest\n },\n ref,\n ) => {\n // `aria-*` names and describes the CONTROL, so it goes on the role=\"switch\"\n // button; everything else (className, style, data-*, handlers) stays on the\n // wrapper, where it has always gone. On the wrapper, an `aria-label` named a\n // div and left the switch itself unnamed.\n const wrapperProps: Record<string, unknown> = {};\n const controlAria: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(rest)) {\n if (key.startsWith(\"aria-\")) controlAria[key] = value;\n else wrapperProps[key] = value;\n }\n\n const autoId = useId();\n const switchId = id ?? autoId;\n const resolvedMode = useFieldMode(mode);\n const { showControl, interactive, enterEdit, exitEdit } = useInlineEdit(resolvedMode, disabled);\n const [checked, setChecked] = useControllableState(\n controlledChecked,\n defaultChecked,\n onCheckedChange,\n );\n\n const trackSizes = {\n xs: \"h-3.5 w-6\",\n sm: \"h-4 w-7\",\n md: \"h-5 w-9\",\n lg: \"h-6 w-11\",\n xl: \"h-7 w-[52px]\",\n }[size];\n\n const knobSizes = {\n xs: \"h-2.5 w-2.5\",\n sm: \"h-3 w-3\",\n md: \"h-4 w-4\",\n lg: \"h-5 w-5\",\n xl: \"h-6 w-6\",\n }[size];\n\n const translateOn = {\n xs: \"translate-x-2.5\",\n sm: \"translate-x-3\",\n md: \"translate-x-4\",\n lg: \"translate-x-5\",\n xl: \"translate-x-6\",\n }[size];\n\n return (\n <div\n {...wrapperProps}\n // View mode has no switch to name, so its aria-* stay on the wrapper.\n {...(showControl ? undefined : controlAria)}\n data-react-fancy-switch=\"\" className={cn(\"flex items-start gap-2\", className)}>\n {!showControl ? (\n <span\n data-react-fancy-display=\"\"\n data-mode=\"view\"\n role={interactive ? \"button\" : undefined}\n tabIndex={interactive ? 0 : undefined}\n title={interactive ? \"Click to edit\" : undefined}\n onClick={interactive ? enterEdit : undefined}\n onKeyDown={\n interactive\n ? (e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n enterEdit();\n }\n }\n : undefined\n }\n className={cn(\n \"text-sm font-medium text-zinc-700 dark:text-zinc-200\",\n interactive &&\n \"cursor-pointer rounded-md outline-none transition-colors hover:text-zinc-900 focus-visible:ring-2 focus-visible:ring-blue-500/40 dark:hover:text-white\",\n )}\n >\n {checked ? \"On\" : \"Off\"}\n </span>\n ) : (\n <button\n {...controlAria}\n ref={ref}\n id={switchId}\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n disabled={disabled}\n autoFocus={interactive}\n onBlur={() => {\n if (interactive) exitEdit();\n }}\n onClick={() => setChecked(!checked)}\n className={cn(\n \"relative inline-flex shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/40 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n trackSizes,\n // The unchecked track is the `border` role (\"tracks\"). The dark\n // fallback stays zinc-600, today's colour, not the role's zinc-700\n // default — set nothing, see no change.\n checked\n ? switchTrack[color]\n : \"bg-[color:var(--fancy-border,var(--color-zinc-200))] dark:bg-[color:var(--fancy-border-dark,var(--color-zinc-600))]\",\n dirtyRingClasses(dirty),\n error && \"ring-2 ring-red-500/50\",\n )}\n >\n <span\n className={cn(\n \"pointer-events-none inline-block rounded-full bg-white shadow-sm transition-transform\",\n knobSizes,\n checked ? translateOn : \"translate-x-0\",\n )}\n />\n </button>\n )}\n {name && (\n <input type=\"hidden\" name={name} value={checked ? \"1\" : \"0\"} />\n )}\n {(label || description) && (\n <div className=\"flex flex-col\">\n {label && (\n <label\n htmlFor={switchId}\n className={cn(\n \"cursor-pointer text-sm text-zinc-700 dark:text-zinc-100\",\n disabled && \"cursor-not-allowed opacity-50\",\n // Not drawn, still the accessible name (it labels the button).\n labelHidden && \"sr-only\",\n )}\n >\n {label}\n {required && <span className=\"ml-0.5 text-red-500\">*</span>}\n </label>\n )}\n {description && (\n <span className=\"text-xs text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]\">\n {description}\n </span>\n )}\n {error && <span className=\"text-xs text-red-500\">{error}</span>}\n </div>\n )}\n </div>\n );\n },\n);\n\nSwitch.displayName = \"Switch\";\n"]}
|