silver-ui 0.7.3 → 0.8.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/README.md +14 -4
- package/dist/{chunk-KEPCKSDE.js → chunk-2AY74YXP.js} +3 -2
- package/dist/chunk-2AY74YXP.js.map +1 -0
- package/dist/{chunk-PGBYMBGH.js → chunk-2FR4VA32.js} +18 -17
- package/dist/chunk-2FR4VA32.js.map +1 -0
- package/dist/{chunk-OUUG4RHO.js → chunk-2I6BJICE.js} +7 -6
- package/dist/chunk-2I6BJICE.js.map +1 -0
- package/dist/{chunk-FUU3I22W.js → chunk-35MIAFP2.js} +4 -3
- package/dist/{chunk-FUU3I22W.js.map → chunk-35MIAFP2.js.map} +1 -1
- package/dist/{chunk-5FQKELP6.js → chunk-3IX2FJWH.js} +3 -2
- package/dist/chunk-3IX2FJWH.js.map +1 -0
- package/dist/{chunk-H7LOOHWU.cjs → chunk-3JCYTBXI.cjs} +3 -2
- package/dist/chunk-3JCYTBXI.cjs.map +1 -0
- package/dist/{chunk-FTNEAX24.js → chunk-3MNRY6XK.js} +5 -4
- package/dist/chunk-3MNRY6XK.js.map +1 -0
- package/dist/{chunk-LTHPJRFK.cjs → chunk-3PHJWXBO.cjs} +10 -9
- package/dist/{chunk-LTHPJRFK.cjs.map → chunk-3PHJWXBO.cjs.map} +1 -1
- package/dist/{chunk-3W3ST5Y3.cjs → chunk-3USKXV4M.cjs} +7 -6
- package/dist/chunk-3USKXV4M.cjs.map +1 -0
- package/dist/{chunk-S4IHNNA2.js → chunk-3UYPIVBY.js} +3 -2
- package/dist/{chunk-S4IHNNA2.js.map → chunk-3UYPIVBY.js.map} +1 -1
- package/dist/{chunk-3PCXFOOS.js → chunk-42KJXH3P.js} +7 -6
- package/dist/chunk-42KJXH3P.js.map +1 -0
- package/dist/{chunk-XUCLNECV.js → chunk-446LQC5C.js} +4 -3
- package/dist/chunk-446LQC5C.js.map +1 -0
- package/dist/{chunk-CQYBC3RJ.cjs → chunk-4GT65SRC.cjs} +10 -9
- package/dist/chunk-4GT65SRC.cjs.map +1 -0
- package/dist/{chunk-MN2NCSQQ.js → chunk-4MX4DKWA.js} +3 -2
- package/dist/{chunk-MN2NCSQQ.js.map → chunk-4MX4DKWA.js.map} +1 -1
- package/dist/{chunk-6KGF66TR.js → chunk-57GO7S77.js} +4 -3
- package/dist/{chunk-6KGF66TR.js.map → chunk-57GO7S77.js.map} +1 -1
- package/dist/{chunk-RLIBY7XB.cjs → chunk-5AUBRSYO.cjs} +3 -2
- package/dist/chunk-5AUBRSYO.cjs.map +1 -0
- package/dist/{chunk-3PEK2Q54.cjs → chunk-5FNYOPUL.cjs} +3 -2
- package/dist/chunk-5FNYOPUL.cjs.map +1 -0
- package/dist/{chunk-YQIDUJW2.cjs → chunk-5HMAMGEL.cjs} +6 -5
- package/dist/{chunk-YQIDUJW2.cjs.map → chunk-5HMAMGEL.cjs.map} +1 -1
- package/dist/{chunk-Y2GYPMLW.cjs → chunk-5OHIMYY7.cjs} +6 -5
- package/dist/{chunk-Y2GYPMLW.cjs.map → chunk-5OHIMYY7.cjs.map} +1 -1
- package/dist/{chunk-6SKIBUCY.js → chunk-5PW34XKA.js} +5 -4
- package/dist/chunk-5PW34XKA.js.map +1 -0
- package/dist/{chunk-OCYZKZ24.cjs → chunk-6VY3VM5W.cjs} +4 -4
- package/dist/{chunk-OCYZKZ24.cjs.map → chunk-6VY3VM5W.cjs.map} +1 -1
- package/dist/{chunk-QQCEGAUQ.cjs → chunk-6WMG7TU2.cjs} +12 -11
- package/dist/chunk-6WMG7TU2.cjs.map +1 -0
- package/dist/{chunk-AC4E3WQA.cjs → chunk-7275FFQA.cjs} +13 -12
- package/dist/chunk-7275FFQA.cjs.map +1 -0
- package/dist/{chunk-YAQB3UMC.js → chunk-74B6CLZK.js} +5 -4
- package/dist/{chunk-YAQB3UMC.js.map → chunk-74B6CLZK.js.map} +1 -1
- package/dist/{chunk-VCM4MR7N.cjs → chunk-7IBLSZ7G.cjs} +53 -52
- package/dist/{chunk-VCM4MR7N.cjs.map → chunk-7IBLSZ7G.cjs.map} +1 -1
- package/dist/{chunk-GJZAGTPV.cjs → chunk-7KUEWO4T.cjs} +6 -5
- package/dist/chunk-7KUEWO4T.cjs.map +1 -0
- package/dist/{chunk-X2P5SPGB.js → chunk-7SGBGPZW.js} +3 -3
- package/dist/{chunk-X2P5SPGB.js.map → chunk-7SGBGPZW.js.map} +1 -1
- package/dist/{chunk-UNS7OCEA.cjs → chunk-7SUCVCOC.cjs} +6 -5
- package/dist/{chunk-UNS7OCEA.cjs.map → chunk-7SUCVCOC.cjs.map} +1 -1
- package/dist/{chunk-HPNY32G6.js → chunk-7TYZLVLZ.js} +3 -2
- package/dist/{chunk-HPNY32G6.js.map → chunk-7TYZLVLZ.js.map} +1 -1
- package/dist/{chunk-GA77PPVL.cjs → chunk-A36BE56K.cjs} +8 -7
- package/dist/{chunk-GA77PPVL.cjs.map → chunk-A36BE56K.cjs.map} +1 -1
- package/dist/{chunk-ESWYWWY2.js → chunk-A377P2JF.js} +5 -4
- package/dist/chunk-A377P2JF.js.map +1 -0
- package/dist/{chunk-5RFHYDQY.js → chunk-AUXMMTKN.js} +3 -2
- package/dist/chunk-AUXMMTKN.js.map +1 -0
- package/dist/{chunk-6SMVH3ON.cjs → chunk-B333LIQQ.cjs} +9 -8
- package/dist/chunk-B333LIQQ.cjs.map +1 -0
- package/dist/{chunk-NGNVNRAZ.cjs → chunk-BMJ4AK5X.cjs} +18 -17
- package/dist/chunk-BMJ4AK5X.cjs.map +1 -0
- package/dist/{chunk-KLPVBJGZ.cjs → chunk-BSOYEVZW.cjs} +6 -5
- package/dist/{chunk-KLPVBJGZ.cjs.map → chunk-BSOYEVZW.cjs.map} +1 -1
- package/dist/{chunk-PG4CZRTU.js → chunk-CRYF4JDH.js} +3 -2
- package/dist/chunk-CRYF4JDH.js.map +1 -0
- package/dist/{chunk-GKYGZWSQ.js → chunk-CTXAQNQI.js} +6 -5
- package/dist/{chunk-GKYGZWSQ.js.map → chunk-CTXAQNQI.js.map} +1 -1
- package/dist/{chunk-HEF53COU.js → chunk-CWDZJH7A.js} +4 -3
- package/dist/{chunk-HEF53COU.js.map → chunk-CWDZJH7A.js.map} +1 -1
- package/dist/{chunk-EZFQCREN.cjs → chunk-CZAKWWZE.cjs} +10 -9
- package/dist/chunk-CZAKWWZE.cjs.map +1 -0
- package/dist/{chunk-UJDHRILS.cjs → chunk-D2JOFRA3.cjs} +7 -6
- package/dist/chunk-D2JOFRA3.cjs.map +1 -0
- package/dist/{chunk-BUYZZOOU.js → chunk-D57CFXDZ.js} +3 -2
- package/dist/{chunk-BUYZZOOU.js.map → chunk-D57CFXDZ.js.map} +1 -1
- package/dist/{chunk-IU2YRN35.cjs → chunk-DUZBTPSH.cjs} +3 -2
- package/dist/{chunk-IU2YRN35.cjs.map → chunk-DUZBTPSH.cjs.map} +1 -1
- package/dist/{chunk-FHUOUARL.js → chunk-DXUFYSNR.js} +5 -4
- package/dist/{chunk-FHUOUARL.js.map → chunk-DXUFYSNR.js.map} +1 -1
- package/dist/{chunk-AXTX3IOR.js → chunk-DZYO3YLL.js} +4 -3
- package/dist/{chunk-AXTX3IOR.js.map → chunk-DZYO3YLL.js.map} +1 -1
- package/dist/{chunk-VK7DXUGH.cjs → chunk-E5TRE2YG.cjs} +3 -2
- package/dist/chunk-E5TRE2YG.cjs.map +1 -0
- package/dist/{chunk-ARUOMLOJ.cjs → chunk-ECVWXA4H.cjs} +3 -2
- package/dist/chunk-ECVWXA4H.cjs.map +1 -0
- package/dist/{chunk-NYTSAO5I.cjs → chunk-EFYWVWSL.cjs} +3 -2
- package/dist/{chunk-NYTSAO5I.cjs.map → chunk-EFYWVWSL.cjs.map} +1 -1
- package/dist/{chunk-OPBELSKN.js → chunk-ENBVF5OB.js} +8 -7
- package/dist/chunk-ENBVF5OB.js.map +1 -0
- package/dist/{chunk-CKDB7QNT.cjs → chunk-EPQKIFGY.cjs} +10 -9
- package/dist/{chunk-CKDB7QNT.cjs.map → chunk-EPQKIFGY.cjs.map} +1 -1
- package/dist/{chunk-VWG54F6X.cjs → chunk-FE3ZOSFJ.cjs} +9 -8
- package/dist/{chunk-VWG54F6X.cjs.map → chunk-FE3ZOSFJ.cjs.map} +1 -1
- package/dist/{chunk-O3UT5D57.js → chunk-FL53ZLSY.js} +15 -14
- package/dist/{chunk-O3UT5D57.js.map → chunk-FL53ZLSY.js.map} +1 -1
- package/dist/{chunk-6KG76KUZ.js → chunk-FP6EP2CX.js} +4 -3
- package/dist/{chunk-6KG76KUZ.js.map → chunk-FP6EP2CX.js.map} +1 -1
- package/dist/{chunk-KWZMXX4F.js → chunk-FPKXEI3W.js} +4 -3
- package/dist/chunk-FPKXEI3W.js.map +1 -0
- package/dist/{chunk-4MIIXRZN.cjs → chunk-G2RX3FZ7.cjs} +21 -20
- package/dist/chunk-G2RX3FZ7.cjs.map +1 -0
- package/dist/{chunk-6SFMORQF.cjs → chunk-GIGV6XFT.cjs} +8 -7
- package/dist/chunk-GIGV6XFT.cjs.map +1 -0
- package/dist/{chunk-UW3KCCBT.cjs → chunk-GIOMLAL2.cjs} +5 -4
- package/dist/{chunk-UW3KCCBT.cjs.map → chunk-GIOMLAL2.cjs.map} +1 -1
- package/dist/{chunk-5MCI3ILK.cjs → chunk-GKYJZNJQ.cjs} +44 -43
- package/dist/{chunk-5MCI3ILK.cjs.map → chunk-GKYJZNJQ.cjs.map} +1 -1
- package/dist/{chunk-5K3C3INR.cjs → chunk-GOAIWDHB.cjs} +11 -10
- package/dist/chunk-GOAIWDHB.cjs.map +1 -0
- package/dist/{chunk-O4PO6AMS.cjs → chunk-HAUMZ357.cjs} +3 -2
- package/dist/{chunk-O4PO6AMS.cjs.map → chunk-HAUMZ357.cjs.map} +1 -1
- package/dist/{chunk-RX2FXCIH.cjs → chunk-HIFJC2HY.cjs} +8 -8
- package/dist/{chunk-RX2FXCIH.cjs.map → chunk-HIFJC2HY.cjs.map} +1 -1
- package/dist/{chunk-ACGPBJIS.js → chunk-HRXPB4YH.js} +6 -5
- package/dist/chunk-HRXPB4YH.js.map +1 -0
- package/dist/{chunk-QM7NQK2K.js → chunk-I2X76NIY.js} +5 -4
- package/dist/{chunk-QM7NQK2K.js.map → chunk-I2X76NIY.js.map} +1 -1
- package/dist/{chunk-BF2DUOC3.cjs → chunk-IA4TPVHR.cjs} +15 -14
- package/dist/{chunk-BF2DUOC3.cjs.map → chunk-IA4TPVHR.cjs.map} +1 -1
- package/dist/{chunk-JIF5TZHC.cjs → chunk-IFRIXTF5.cjs} +3 -2
- package/dist/chunk-IFRIXTF5.cjs.map +1 -0
- package/dist/{chunk-JMVYWHJ7.js → chunk-IJWWTBJ6.js} +5 -4
- package/dist/chunk-IJWWTBJ6.js.map +1 -0
- package/dist/{chunk-JTPVAZE6.cjs → chunk-IVDCRMY3.cjs} +12 -11
- package/dist/{chunk-JTPVAZE6.cjs.map → chunk-IVDCRMY3.cjs.map} +1 -1
- package/dist/{chunk-Q6YOSQAM.js → chunk-J52N3BTJ.js} +8 -7
- package/dist/chunk-J52N3BTJ.js.map +1 -0
- package/dist/{chunk-HENIVDYQ.cjs → chunk-J6XNDFK7.cjs} +15 -14
- package/dist/chunk-J6XNDFK7.cjs.map +1 -0
- package/dist/{chunk-3NIDAKCF.cjs → chunk-J6XRX6DD.cjs} +3 -2
- package/dist/chunk-J6XRX6DD.cjs.map +1 -0
- package/dist/{chunk-HC57X3U4.js → chunk-JASZ7XTT.js} +6 -5
- package/dist/chunk-JASZ7XTT.js.map +1 -0
- package/dist/{chunk-EBV3EX3J.js → chunk-JJ32AVLU.js} +8 -7
- package/dist/chunk-JJ32AVLU.js.map +1 -0
- package/dist/{chunk-2N3PIXZ5.cjs → chunk-JLDYPQIB.cjs} +8 -7
- package/dist/chunk-JLDYPQIB.cjs.map +1 -0
- package/dist/{chunk-NSWKBWPP.js → chunk-JQHJJAX3.js} +6 -5
- package/dist/{chunk-NSWKBWPP.js.map → chunk-JQHJJAX3.js.map} +1 -1
- package/dist/{chunk-ZDZ7FW6V.cjs → chunk-K2KOXVGA.cjs} +10 -9
- package/dist/chunk-K2KOXVGA.cjs.map +1 -0
- package/dist/{chunk-GQ73VKKN.js → chunk-K57TGBAB.js} +9 -8
- package/dist/{chunk-GQ73VKKN.js.map → chunk-K57TGBAB.js.map} +1 -1
- package/dist/{chunk-BYV7NXC5.cjs → chunk-KGLCG2W5.cjs} +8 -7
- package/dist/chunk-KGLCG2W5.cjs.map +1 -0
- package/dist/{chunk-DTNIUZ3C.cjs → chunk-KGVNCMUT.cjs} +8 -7
- package/dist/{chunk-DTNIUZ3C.cjs.map → chunk-KGVNCMUT.cjs.map} +1 -1
- package/dist/{chunk-V5XVXQWE.js → chunk-KJRFBFBP.js} +6 -5
- package/dist/{chunk-V5XVXQWE.js.map → chunk-KJRFBFBP.js.map} +1 -1
- package/dist/{chunk-6ZPHID26.cjs → chunk-KNXDDKGK.cjs} +10 -9
- package/dist/chunk-KNXDDKGK.cjs.map +1 -0
- package/dist/{chunk-5GSRIOXE.js → chunk-KPAOAYDY.js} +5 -4
- package/dist/{chunk-5GSRIOXE.js.map → chunk-KPAOAYDY.js.map} +1 -1
- package/dist/{chunk-L747HIHG.js → chunk-KSDY2S25.js} +5 -4
- package/dist/chunk-KSDY2S25.js.map +1 -0
- package/dist/{chunk-BIKVMVWF.js → chunk-LHQM533G.js} +3 -2
- package/dist/{chunk-BIKVMVWF.js.map → chunk-LHQM533G.js.map} +1 -1
- package/dist/{chunk-KVJ27734.cjs → chunk-LIDE7FVO.cjs} +5 -4
- package/dist/{chunk-KVJ27734.cjs.map → chunk-LIDE7FVO.cjs.map} +1 -1
- package/dist/{chunk-EIJSWHG7.js → chunk-LT4P67TG.js} +6 -5
- package/dist/{chunk-EIJSWHG7.js.map → chunk-LT4P67TG.js.map} +1 -1
- package/dist/{chunk-D7TT4HUI.cjs → chunk-LT7DJ7FN.cjs} +17 -16
- package/dist/{chunk-D7TT4HUI.cjs.map → chunk-LT7DJ7FN.cjs.map} +1 -1
- package/dist/{chunk-GLFWSLJB.cjs → chunk-M3DVXO4U.cjs} +11 -10
- package/dist/{chunk-GLFWSLJB.cjs.map → chunk-M3DVXO4U.cjs.map} +1 -1
- package/dist/{chunk-YQVWDHP4.cjs → chunk-M7ADKAJB.cjs} +8 -7
- package/dist/{chunk-YQVWDHP4.cjs.map → chunk-M7ADKAJB.cjs.map} +1 -1
- package/dist/{chunk-BQWUTDTN.js → chunk-MCCOQSSC.js} +3 -2
- package/dist/{chunk-BQWUTDTN.js.map → chunk-MCCOQSSC.js.map} +1 -1
- package/dist/{chunk-ZW2ZOEYM.cjs → chunk-MCVMBH7P.cjs} +11 -10
- package/dist/chunk-MCVMBH7P.cjs.map +1 -0
- package/dist/{chunk-PK3NJSHQ.js → chunk-MNQFCWT7.js} +8 -7
- package/dist/{chunk-PK3NJSHQ.js.map → chunk-MNQFCWT7.js.map} +1 -1
- package/dist/{chunk-5HPXPF3F.js → chunk-MQUO663S.js} +6 -5
- package/dist/chunk-MQUO663S.js.map +1 -0
- package/dist/{chunk-6OWEKKOC.js → chunk-N26PQY3D.js} +6 -5
- package/dist/chunk-N26PQY3D.js.map +1 -0
- package/dist/{chunk-KLCEDPJ4.cjs → chunk-NKQAHJBB.cjs} +19 -18
- package/dist/chunk-NKQAHJBB.cjs.map +1 -0
- package/dist/{chunk-J242UTPO.cjs → chunk-NQD46M2L.cjs} +12 -11
- package/dist/chunk-NQD46M2L.cjs.map +1 -0
- package/dist/{chunk-56PY2CD7.js → chunk-NSA33LOE.js} +6 -5
- package/dist/chunk-NSA33LOE.js.map +1 -0
- package/dist/{chunk-KVEXSDEM.js → chunk-OI4GH7DO.js} +5 -4
- package/dist/{chunk-KVEXSDEM.js.map → chunk-OI4GH7DO.js.map} +1 -1
- package/dist/{chunk-AKAXQ4RL.js → chunk-OLJIILEI.js} +4 -3
- package/dist/{chunk-AKAXQ4RL.js.map → chunk-OLJIILEI.js.map} +1 -1
- package/dist/{chunk-S4WWBV4N.js → chunk-ONOKHFK3.js} +6 -5
- package/dist/chunk-ONOKHFK3.js.map +1 -0
- package/dist/{chunk-BSXUNRET.cjs → chunk-ONRLHP46.cjs} +3 -2
- package/dist/chunk-ONRLHP46.cjs.map +1 -0
- package/dist/{chunk-NYOZQE6P.js → chunk-OQL6XRT7.js} +6 -5
- package/dist/chunk-OQL6XRT7.js.map +1 -0
- package/dist/{chunk-WLWSQKWI.js → chunk-ORBYW3LT.js} +9 -8
- package/dist/{chunk-WLWSQKWI.js.map → chunk-ORBYW3LT.js.map} +1 -1
- package/dist/{chunk-5UGHDUMO.js → chunk-OXBBLHTC.js} +3 -2
- package/dist/chunk-OXBBLHTC.js.map +1 -0
- package/dist/{chunk-HN4W6TM6.cjs → chunk-PB7LE5VJ.cjs} +10 -9
- package/dist/chunk-PB7LE5VJ.cjs.map +1 -0
- package/dist/{chunk-N6C37HXD.js → chunk-PER4RJRF.js} +8 -7
- package/dist/chunk-PER4RJRF.js.map +1 -0
- package/dist/{chunk-PQXPYN23.js → chunk-PLQDNBCW.js} +8 -7
- package/dist/chunk-PLQDNBCW.js.map +1 -0
- package/dist/{chunk-DE7JLNSO.js → chunk-PTDBPRZD.js} +3 -2
- package/dist/chunk-PTDBPRZD.js.map +1 -0
- package/dist/{chunk-USEA7DB5.js → chunk-PZBY3JI7.js} +4 -4
- package/dist/{chunk-USEA7DB5.js.map → chunk-PZBY3JI7.js.map} +1 -1
- package/dist/{chunk-PZHRFASW.js → chunk-Q4UI2MP4.js} +3 -2
- package/dist/chunk-Q4UI2MP4.js.map +1 -0
- package/dist/{chunk-I2DXEPDF.js → chunk-Q4UMGL6Z.js} +7 -6
- package/dist/chunk-Q4UMGL6Z.js.map +1 -0
- package/dist/{chunk-BPAZTKMC.cjs → chunk-QEYGPANV.cjs} +11 -10
- package/dist/{chunk-BPAZTKMC.cjs.map → chunk-QEYGPANV.cjs.map} +1 -1
- package/dist/{chunk-FQSVY4QB.js → chunk-QMFPPGSZ.js} +4 -3
- package/dist/chunk-QMFPPGSZ.js.map +1 -0
- package/dist/{chunk-2AOR4EVA.cjs → chunk-QTR5LIUW.cjs} +9 -8
- package/dist/chunk-QTR5LIUW.cjs.map +1 -0
- package/dist/{chunk-LBOWHXOF.js → chunk-R3B46QJO.js} +5 -4
- package/dist/chunk-R3B46QJO.js.map +1 -0
- package/dist/{chunk-EEOUWM2F.cjs → chunk-RCRUFF6F.cjs} +5 -4
- package/dist/{chunk-EEOUWM2F.cjs.map → chunk-RCRUFF6F.cjs.map} +1 -1
- package/dist/{chunk-AO4RVSCG.js → chunk-RZ52RCTU.js} +6 -5
- package/dist/{chunk-AO4RVSCG.js.map → chunk-RZ52RCTU.js.map} +1 -1
- package/dist/{chunk-54B36CSW.js → chunk-S3UQUP3Q.js} +6 -5
- package/dist/{chunk-54B36CSW.js.map → chunk-S3UQUP3Q.js.map} +1 -1
- package/dist/{chunk-WOVSJHY6.cjs → chunk-S5FJ3FHH.cjs} +15 -14
- package/dist/chunk-S5FJ3FHH.cjs.map +1 -0
- package/dist/{chunk-TACO5IWI.cjs → chunk-SEELGNIC.cjs} +20 -19
- package/dist/chunk-SEELGNIC.cjs.map +1 -0
- package/dist/{chunk-JWMS6LHN.cjs → chunk-SG2ZHIDQ.cjs} +9 -8
- package/dist/{chunk-JWMS6LHN.cjs.map → chunk-SG2ZHIDQ.cjs.map} +1 -1
- package/dist/{chunk-WTCH3QCQ.js → chunk-SHJNMFEV.js} +3 -2
- package/dist/chunk-SHJNMFEV.js.map +1 -0
- package/dist/{chunk-DDMUYVSV.cjs → chunk-SQUWNP5G.cjs} +17 -16
- package/dist/{chunk-DDMUYVSV.cjs.map → chunk-SQUWNP5G.cjs.map} +1 -1
- package/dist/{chunk-E6AKSBSP.js → chunk-SXLGTRY7.js} +7 -6
- package/dist/{chunk-E6AKSBSP.js.map → chunk-SXLGTRY7.js.map} +1 -1
- package/dist/{chunk-PYN75QAG.js → chunk-TS3FMP6Z.js} +4 -3
- package/dist/chunk-TS3FMP6Z.js.map +1 -0
- package/dist/{chunk-QB2BSOM4.cjs → chunk-TT65RNBY.cjs} +3 -2
- package/dist/{chunk-QB2BSOM4.cjs.map → chunk-TT65RNBY.cjs.map} +1 -1
- package/dist/{chunk-GTZQT6MK.js → chunk-TUUYGOLQ.js} +6 -5
- package/dist/chunk-TUUYGOLQ.js.map +1 -0
- package/dist/{chunk-BNGYGCT2.js → chunk-UCSMB46R.js} +4 -3
- package/dist/{chunk-BNGYGCT2.js.map → chunk-UCSMB46R.js.map} +1 -1
- package/dist/{chunk-UUVI3TYW.js → chunk-USZQJXPE.js} +8 -7
- package/dist/chunk-USZQJXPE.js.map +1 -0
- package/dist/{chunk-CWZCBYVZ.cjs → chunk-UTUX5WM7.cjs} +14 -13
- package/dist/chunk-UTUX5WM7.cjs.map +1 -0
- package/dist/{chunk-BBLAZNCC.js → chunk-UUNVNLQN.js} +9 -8
- package/dist/chunk-UUNVNLQN.js.map +1 -0
- package/dist/{chunk-PXTTIAC4.cjs → chunk-VCEPRU6Y.cjs} +9 -8
- package/dist/chunk-VCEPRU6Y.cjs.map +1 -0
- package/dist/{chunk-63QPCV4F.cjs → chunk-VISYC2ZD.cjs} +38 -37
- package/dist/chunk-VISYC2ZD.cjs.map +1 -0
- package/dist/{chunk-DVCDAKPK.cjs → chunk-VSTO7LZJ.cjs} +7 -6
- package/dist/chunk-VSTO7LZJ.cjs.map +1 -0
- package/dist/{chunk-CPDWUT2H.cjs → chunk-W6UBDEMN.cjs} +3 -2
- package/dist/{chunk-CPDWUT2H.cjs.map → chunk-W6UBDEMN.cjs.map} +1 -1
- package/dist/{chunk-DXUFDJHA.cjs → chunk-WBVSDRWB.cjs} +11 -10
- package/dist/{chunk-DXUFDJHA.cjs.map → chunk-WBVSDRWB.cjs.map} +1 -1
- package/dist/{chunk-U7QJJ3NR.cjs → chunk-WPP3FZLW.cjs} +9 -8
- package/dist/{chunk-U7QJJ3NR.cjs.map → chunk-WPP3FZLW.cjs.map} +1 -1
- package/dist/{chunk-6R2UZNVE.js → chunk-WQU2M64E.js} +7 -6
- package/dist/chunk-WQU2M64E.js.map +1 -0
- package/dist/{chunk-YGESCFX2.js → chunk-WZGS7FX6.js} +4 -3
- package/dist/chunk-WZGS7FX6.js.map +1 -0
- package/dist/{chunk-MDQSVB2Y.js → chunk-XBQKPRWG.js} +3 -2
- package/dist/chunk-XBQKPRWG.js.map +1 -0
- package/dist/{chunk-MYSLJWCW.cjs → chunk-XOJ5HGIP.cjs} +11 -10
- package/dist/chunk-XOJ5HGIP.cjs.map +1 -0
- package/dist/{chunk-CVT7JW6C.cjs → chunk-XY5GXS62.cjs} +5 -4
- package/dist/{chunk-CVT7JW6C.cjs.map → chunk-XY5GXS62.cjs.map} +1 -1
- package/dist/{chunk-PKZSJX53.cjs → chunk-Y3TUHGI2.cjs} +3 -2
- package/dist/chunk-Y3TUHGI2.cjs.map +1 -0
- package/dist/{chunk-WG4NNC3P.js → chunk-YKUNVCXP.js} +6 -5
- package/dist/{chunk-WG4NNC3P.js.map → chunk-YKUNVCXP.js.map} +1 -1
- package/dist/{chunk-BKKLUIIU.js → chunk-YNGDGY2J.js} +3 -2
- package/dist/chunk-YNGDGY2J.js.map +1 -0
- package/dist/{chunk-2K4I2MB3.cjs → chunk-YPTBGFPT.cjs} +3 -2
- package/dist/{chunk-2K4I2MB3.cjs.map → chunk-YPTBGFPT.cjs.map} +1 -1
- package/dist/{chunk-LWB2CTX6.cjs → chunk-YSLDYF2F.cjs} +5 -4
- package/dist/{chunk-LWB2CTX6.cjs.map → chunk-YSLDYF2F.cjs.map} +1 -1
- package/dist/{chunk-MJHEPDDX.cjs → chunk-YV4AL52O.cjs} +21 -20
- package/dist/chunk-YV4AL52O.cjs.map +1 -0
- package/dist/{chunk-IREOTHD3.cjs → chunk-Z2KSHRDD.cjs} +6 -5
- package/dist/chunk-Z2KSHRDD.cjs.map +1 -0
- package/dist/{chunk-VPWNRWNO.cjs → chunk-Z5EY2GRO.cjs} +3 -2
- package/dist/chunk-Z5EY2GRO.cjs.map +1 -0
- package/dist/{chunk-TP6RGZ6A.js → chunk-ZEBWF24G.js} +14 -13
- package/dist/{chunk-TP6RGZ6A.js.map → chunk-ZEBWF24G.js.map} +1 -1
- package/dist/{chunk-NIKT7XSO.js → chunk-ZF522WPX.js} +7 -6
- package/dist/chunk-ZF522WPX.js.map +1 -0
- package/dist/{chunk-OX2FNKIV.cjs → chunk-ZKSEIA5Q.cjs} +11 -10
- package/dist/{chunk-OX2FNKIV.cjs.map → chunk-ZKSEIA5Q.cjs.map} +1 -1
- package/dist/{chunk-D3CHBU46.js → chunk-ZLJOIPTJ.js} +4 -3
- package/dist/{chunk-D3CHBU46.js.map → chunk-ZLJOIPTJ.js.map} +1 -1
- package/dist/components/Accordion/Accordion.d.ts.map +1 -1
- package/dist/components/Accordion/AccordionContext.d.ts.map +1 -1
- package/dist/components/Accordion/AccordionItem.d.ts.map +1 -1
- package/dist/components/Accordion/index.cjs +4 -4
- package/dist/components/Accordion/index.js +1 -1
- package/dist/components/Accordion/useAccordionDevWarning.d.ts.map +1 -1
- package/dist/components/Accordion/useCollapsible.d.ts.map +1 -1
- package/dist/components/Alert/Alert.d.ts.map +1 -1
- package/dist/components/Alert/index.cjs +10 -10
- package/dist/components/Alert/index.js +9 -9
- package/dist/components/AlertDialog/AlertDialog.d.ts.map +1 -1
- package/dist/components/AlertDialog/index.cjs +16 -16
- package/dist/components/AlertDialog/index.js +14 -14
- package/dist/components/AlertDialog/useAlertDialog.d.ts.map +1 -1
- package/dist/components/AppShell/AppShell.d.ts.map +1 -1
- package/dist/components/AppShell/AppShellMobileContext.d.ts.map +1 -1
- package/dist/components/AppShell/index.cjs +21 -21
- package/dist/components/AppShell/index.js +18 -18
- package/dist/components/AppShell/useSlotPresence.d.ts.map +1 -1
- package/dist/components/AutocompleteInput/AutocompleteInput.d.ts.map +1 -1
- package/dist/components/AutocompleteInput/BaseAutocompleteInput.d.ts.map +1 -1
- package/dist/components/AutocompleteInput/index.cjs +17 -17
- package/dist/components/AutocompleteInput/index.js +13 -13
- package/dist/components/Avatar/Avatar.d.ts.map +1 -1
- package/dist/components/Avatar/AvatarSizeContext.d.ts.map +1 -1
- package/dist/components/Avatar/AvatarStatusDot.d.ts.map +1 -1
- package/dist/components/Avatar/index.cjs +4 -4
- package/dist/components/Avatar/index.js +1 -1
- package/dist/components/AvatarGroup/AvatarGroup.d.ts.map +1 -1
- package/dist/components/AvatarGroup/AvatarGroupContext.d.ts.map +1 -1
- package/dist/components/AvatarGroup/AvatarGroupOverflow.d.ts.map +1 -1
- package/dist/components/AvatarGroup/index.cjs +4 -4
- package/dist/components/AvatarGroup/index.js +2 -2
- package/dist/components/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts.map +1 -1
- package/dist/components/Breadcrumbs/BreadcrumbsContext.d.ts.map +1 -1
- package/dist/components/Breadcrumbs/index.cjs +5 -5
- package/dist/components/Breadcrumbs/index.js +2 -2
- package/dist/components/Button/Button.d.ts.map +1 -1
- package/dist/components/Button/index.cjs +9 -9
- package/dist/components/Button/index.js +8 -8
- package/dist/components/ButtonGroup/ButtonGroup.d.ts.map +1 -1
- package/dist/components/ButtonGroup/ButtonGroupContext.d.ts.map +1 -1
- package/dist/components/ButtonGroup/index.cjs +3 -3
- package/dist/components/ButtonGroup/index.js +2 -2
- package/dist/components/Calendar/Calendar.d.ts.map +1 -1
- package/dist/components/Calendar/index.cjs +10 -10
- package/dist/components/Calendar/index.js +9 -9
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts.map +1 -1
- package/dist/components/CheckboxGroup/CheckboxGroupContext.d.ts.map +1 -1
- package/dist/components/CheckboxGroup/CheckboxGroupItem.d.ts.map +1 -1
- package/dist/components/CheckboxGroup/index.cjs +12 -12
- package/dist/components/CheckboxGroup/index.js +10 -10
- package/dist/components/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/components/CheckboxInput/index.cjs +9 -9
- package/dist/components/CheckboxInput/index.js +8 -8
- package/dist/components/CodeBlock/index.cjs +11 -11
- package/dist/components/CodeBlock/index.js +10 -10
- package/dist/components/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/components/ContextMenu/index.cjs +15 -15
- package/dist/components/ContextMenu/index.js +13 -13
- package/dist/components/DateInput/DateInput.d.ts.map +1 -1
- package/dist/components/DateInput/index.cjs +13 -13
- package/dist/components/DateInput/index.js +12 -12
- package/dist/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/components/DateRangeInput/index.cjs +13 -13
- package/dist/components/DateRangeInput/index.js +12 -12
- package/dist/components/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/components/DateTimeInput/index.cjs +15 -15
- package/dist/components/DateTimeInput/index.js +14 -14
- package/dist/components/Dialog/Dialog.d.ts.map +1 -1
- package/dist/components/Dialog/DialogContext.d.ts.map +1 -1
- package/dist/components/Dialog/index.cjs +8 -8
- package/dist/components/Dialog/index.js +4 -4
- package/dist/components/Dialog/useDialog.d.ts.map +1 -1
- package/dist/components/Divider/Divider.d.ts.map +1 -1
- package/dist/components/Divider/index.cjs +2 -2
- package/dist/components/Divider/index.js +1 -1
- package/dist/components/Drawer/Drawer.d.ts.map +1 -1
- package/dist/components/Drawer/index.cjs +5 -5
- package/dist/components/Drawer/index.js +3 -3
- package/dist/components/Drawer/useDrawer.d.ts.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenuContext.d.ts.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
- package/dist/components/DropdownMenu/index.cjs +16 -16
- package/dist/components/DropdownMenu/index.js +12 -12
- package/dist/components/DropdownMenu/menuUtils.d.ts.map +1 -1
- package/dist/components/EmptyState/EmptyState.d.ts.map +1 -1
- package/dist/components/EmptyState/index.cjs +5 -5
- package/dist/components/EmptyState/index.js +4 -4
- package/dist/components/Field/index.cjs +6 -6
- package/dist/components/Field/index.js +4 -4
- package/dist/components/FileInput/FileInput.d.ts.map +1 -1
- package/dist/components/FileInput/index.cjs +11 -11
- package/dist/components/FileInput/index.js +10 -10
- package/dist/components/HoverCard/HoverCard.d.ts.map +1 -1
- package/dist/components/HoverCard/index.cjs +4 -4
- package/dist/components/HoverCard/index.js +2 -2
- package/dist/components/HoverCard/useHoverCard.d.ts.map +1 -1
- package/dist/components/InputGroup/InputGroup.d.ts.map +1 -1
- package/dist/components/InputGroup/InputGroupContext.d.ts.map +1 -1
- package/dist/components/InputGroup/index.cjs +9 -9
- package/dist/components/InputGroup/index.js +5 -5
- package/dist/components/Item/Item.d.ts.map +1 -1
- package/dist/components/Item/index.cjs +7 -7
- package/dist/components/Item/index.js +6 -6
- package/dist/components/Kbd/Kbd.d.ts.map +1 -1
- package/dist/components/Kbd/index.cjs +2 -2
- package/dist/components/Kbd/index.js +1 -1
- package/dist/components/Layout/Layout.d.ts.map +1 -1
- package/dist/components/Layout/LayoutContext.d.ts.map +1 -1
- package/dist/components/Layout/LayoutFooter.d.ts.map +1 -1
- package/dist/components/Layout/LayoutHeader.d.ts.map +1 -1
- package/dist/components/Layout/LayoutPanel.d.ts.map +1 -1
- package/dist/components/Layout/index.cjs +15 -15
- package/dist/components/Layout/index.js +10 -10
- package/dist/components/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/components/Lightbox/index.cjs +12 -12
- package/dist/components/Lightbox/index.js +10 -10
- package/dist/components/Lightbox/useLightbox.d.ts.map +1 -1
- package/dist/components/Link/Link.d.ts.map +1 -1
- package/dist/components/Link/LinkContext.d.ts.map +1 -1
- package/dist/components/Link/LinkProvider.d.ts.map +1 -1
- package/dist/components/Link/index.cjs +8 -8
- package/dist/components/Link/index.js +5 -5
- package/dist/components/Link/useLinkComponent.d.ts.map +1 -1
- package/dist/components/List/List.d.ts.map +1 -1
- package/dist/components/List/ListContext.d.ts.map +1 -1
- package/dist/components/List/ListItem.d.ts.map +1 -1
- package/dist/components/List/index.cjs +9 -9
- package/dist/components/List/index.js +7 -7
- package/dist/components/MetadataList/MetadataList.d.ts.map +1 -1
- package/dist/components/MetadataList/MetadataListContext.d.ts.map +1 -1
- package/dist/components/MetadataList/MetadataListItem.d.ts.map +1 -1
- package/dist/components/MetadataList/index.cjs +6 -6
- package/dist/components/MetadataList/index.js +4 -4
- package/dist/components/MultiSelect/MultiSelect.d.ts.map +1 -1
- package/dist/components/MultiSelect/index.cjs +13 -13
- package/dist/components/MultiSelect/index.js +12 -12
- package/dist/components/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/components/NumberInput/index.cjs +12 -12
- package/dist/components/NumberInput/index.js +11 -11
- package/dist/components/Pagination/Pagination.d.ts.map +1 -1
- package/dist/components/Pagination/index.cjs +10 -10
- package/dist/components/Pagination/index.js +9 -9
- package/dist/components/PasswordInput/PasswordInput.d.ts.map +1 -1
- package/dist/components/PasswordInput/index.cjs +13 -13
- package/dist/components/PasswordInput/index.js +12 -12
- package/dist/components/Popover/Popover.d.ts.map +1 -1
- package/dist/components/Popover/index.cjs +11 -11
- package/dist/components/Popover/index.js +9 -9
- package/dist/components/Popover/usePopover.d.ts.map +1 -1
- package/dist/components/Progress/Progress.d.ts.map +1 -1
- package/dist/components/Progress/index.cjs +2 -2
- package/dist/components/Progress/index.js +1 -1
- package/dist/components/RadioGroup/RadioGroup.d.ts.map +1 -1
- package/dist/components/RadioGroup/RadioGroupContext.d.ts.map +1 -1
- package/dist/components/RadioGroup/RadioGroupItem.d.ts.map +1 -1
- package/dist/components/RadioGroup/index.cjs +10 -10
- package/dist/components/RadioGroup/index.js +8 -8
- package/dist/components/Rating/Rating.d.ts.map +1 -1
- package/dist/components/Rating/index.cjs +2 -2
- package/dist/components/Rating/index.js +1 -1
- package/dist/components/Schedule/DayView.d.ts.map +1 -1
- package/dist/components/Schedule/ListView.d.ts.map +1 -1
- package/dist/components/Schedule/MonthlyView.d.ts.map +1 -1
- package/dist/components/Schedule/Schedule.d.ts.map +1 -1
- package/dist/components/Schedule/TimeGridView.d.ts.map +1 -1
- package/dist/components/Schedule/WeeklyView.d.ts.map +1 -1
- package/dist/components/Schedule/context.d.ts.map +1 -1
- package/dist/components/Schedule/index.cjs +34 -34
- package/dist/components/Schedule/index.js +19 -19
- package/dist/components/Schedule/plugins/EventMovePlugin.d.ts.map +1 -1
- package/dist/components/Schedule/plugins/EventPopoverPlugin.d.ts.map +1 -1
- package/dist/components/Schedule/plugins/EventResizePlugin.d.ts.map +1 -1
- package/dist/components/Schedule/plugins/PaginationPlugin.d.ts.map +1 -1
- package/dist/components/Schedule/plugins/ScheduleEventPopoverContent.d.ts.map +1 -1
- package/dist/components/Schedule/plugins/ViewSelectorPlugin.d.ts.map +1 -1
- package/dist/components/Schedule/shared.d.ts.map +1 -1
- package/dist/components/Schedule/useCurrentTime.d.ts.map +1 -1
- package/dist/components/SearchFilterInput/SearchFilterInput.d.ts.map +1 -1
- package/dist/components/SearchFilterInput/SearchFilterInputEditPopover.d.ts.map +1 -1
- package/dist/components/SearchFilterInput/SearchFilterInputFilterEditor.d.ts.map +1 -1
- package/dist/components/SearchFilterInput/SearchFilterInputTag.d.ts.map +1 -1
- package/dist/components/SearchFilterInput/SearchFilterInputValueEditor.d.ts.map +1 -1
- package/dist/components/SearchFilterInput/index.cjs +32 -32
- package/dist/components/SearchFilterInput/index.js +24 -24
- package/dist/components/SearchFilterInput/internalConfig.d.ts.map +1 -1
- package/dist/components/SearchFilterInput/useSearchFilterInputConfig.d.ts.map +1 -1
- package/dist/components/SearchFilterInput/useSearchFilterInputSource.d.ts.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControl.d.ts.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControlContext.d.ts.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
- package/dist/components/SegmentedControl/index.cjs +3 -3
- package/dist/components/SegmentedControl/index.js +1 -1
- package/dist/components/Select/Select.d.ts.map +1 -1
- package/dist/components/Select/index.cjs +15 -15
- package/dist/components/Select/index.js +13 -13
- package/dist/components/SideNav/SideNav.d.ts.map +1 -1
- package/dist/components/SideNav/SideNavContext.d.ts.map +1 -1
- package/dist/components/SideNav/SideNavHeading.d.ts.map +1 -1
- package/dist/components/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/components/SideNav/SideNavSection.d.ts.map +1 -1
- package/dist/components/SideNav/index.cjs +19 -19
- package/dist/components/SideNav/index.js +13 -13
- package/dist/components/SideNav/internal/SideNavCollapseButton.d.ts.map +1 -1
- package/dist/components/Slider/Slider.d.ts.map +1 -1
- package/dist/components/Slider/index.cjs +6 -6
- package/dist/components/Slider/index.js +5 -5
- package/dist/components/Spinner/index.cjs +5 -5
- package/dist/components/Spinner/index.js +4 -4
- package/dist/components/SplitButton/SplitButton.d.ts.map +1 -1
- package/dist/components/SplitButton/index.cjs +15 -15
- package/dist/components/SplitButton/index.js +14 -14
- package/dist/components/Stepper/Stepper.d.ts.map +1 -1
- package/dist/components/Stepper/index.cjs +5 -5
- package/dist/components/Stepper/index.js +4 -4
- package/dist/components/Stepper/internal/Step.d.ts.map +1 -1
- package/dist/components/Switch/Switch.d.ts.map +1 -1
- package/dist/components/Switch/index.cjs +6 -6
- package/dist/components/Switch/index.js +5 -5
- package/dist/components/Table/Table.d.ts.map +1 -1
- package/dist/components/Table/TableCell.d.ts.map +1 -1
- package/dist/components/Table/TableContext.d.ts.map +1 -1
- package/dist/components/Table/TableHeaderCell.d.ts.map +1 -1
- package/dist/components/Table/TableRow.d.ts.map +1 -1
- package/dist/components/Table/index.cjs +54 -54
- package/dist/components/Table/index.js +28 -28
- package/dist/components/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
- package/dist/components/Table/plugins/columnSettings/useTableColumnSettings.d.ts.map +1 -1
- package/dist/components/Table/plugins/columnSettings/useTableColumnSettingsState.d.ts.map +1 -1
- package/dist/components/Table/plugins/filtering/useTableFilterState.d.ts.map +1 -1
- package/dist/components/Table/plugins/filtering/useTableFiltering.d.ts.map +1 -1
- package/dist/components/Table/plugins/pagination/useTablePagination.d.ts.map +1 -1
- package/dist/components/Table/plugins/selection/useTableSelection.d.ts.map +1 -1
- package/dist/components/Table/plugins/selection/useTableSelectionState.d.ts.map +1 -1
- package/dist/components/Table/plugins/sortable/useTableSortable.d.ts.map +1 -1
- package/dist/components/Table/plugins/sortable/useTableSortableState.d.ts.map +1 -1
- package/dist/components/Table/useBaseTablePlugins.d.ts.map +1 -1
- package/dist/components/Tabs/Tab.d.ts.map +1 -1
- package/dist/components/Tabs/TabMenu.d.ts.map +1 -1
- package/dist/components/Tabs/Tabs.d.ts.map +1 -1
- package/dist/components/Tabs/TabsContext.d.ts.map +1 -1
- package/dist/components/Tabs/index.cjs +15 -15
- package/dist/components/Tabs/index.js +10 -10
- package/dist/components/Tag/Tag.d.ts.map +1 -1
- package/dist/components/Tag/index.cjs +7 -7
- package/dist/components/Tag/index.js +6 -6
- package/dist/components/TagsInput/TagsInput.d.ts.map +1 -1
- package/dist/components/TagsInput/index.cjs +15 -15
- package/dist/components/TagsInput/index.js +14 -14
- package/dist/components/Text/Heading.d.ts.map +1 -1
- package/dist/components/Text/Text.d.ts.map +1 -1
- package/dist/components/Text/index.cjs +5 -5
- package/dist/components/Text/index.js +3 -3
- package/dist/components/Text/useTruncation.d.ts.map +1 -1
- package/dist/components/TextArea/TextArea.d.ts.map +1 -1
- package/dist/components/TextArea/index.cjs +7 -7
- package/dist/components/TextArea/index.js +6 -6
- package/dist/components/TextInput/TextInput.d.ts.map +1 -1
- package/dist/components/TextInput/index.cjs +12 -12
- package/dist/components/TextInput/index.js +11 -11
- package/dist/components/Theme/Theme.d.ts.map +1 -1
- package/dist/components/Theme/index.cjs +2 -2
- package/dist/components/Theme/index.js +1 -1
- package/dist/components/Thumbnail/Thumbnail.d.ts.map +1 -1
- package/dist/components/Thumbnail/index.cjs +10 -10
- package/dist/components/Thumbnail/index.js +9 -9
- package/dist/components/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/components/TimeInput/index.cjs +11 -11
- package/dist/components/TimeInput/index.js +10 -10
- package/dist/components/Toast/Toast.d.ts.map +1 -1
- package/dist/components/Toast/ToastContext.d.ts.map +1 -1
- package/dist/components/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/components/Toast/index.cjs +12 -12
- package/dist/components/Toast/index.js +9 -9
- package/dist/components/Toast/useToast.d.ts.map +1 -1
- package/dist/components/ToggleButton/ToggleButton.d.ts.map +1 -1
- package/dist/components/ToggleButton/ToggleButtonGroup.d.ts.map +1 -1
- package/dist/components/ToggleButton/index.cjs +7 -7
- package/dist/components/ToggleButton/index.js +5 -5
- package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/components/Tooltip/index.cjs +4 -4
- package/dist/components/Tooltip/index.js +2 -2
- package/dist/components/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/components/TopNav/TopNav.d.ts.map +1 -1
- package/dist/components/TopNav/TopNavContext.d.ts.map +1 -1
- package/dist/components/TopNav/TopNavHeading.d.ts.map +1 -1
- package/dist/components/TopNav/TopNavItem.d.ts.map +1 -1
- package/dist/components/TopNav/index.cjs +18 -18
- package/dist/components/TopNav/index.js +13 -13
- package/dist/components/TreeView/TreeView.d.ts.map +1 -1
- package/dist/components/TreeView/TreeViewItem.d.ts.map +1 -1
- package/dist/components/TreeView/index.cjs +3 -3
- package/dist/components/TreeView/index.js +2 -2
- package/dist/index.cjs +246 -246
- package/dist/index.js +76 -76
- package/dist/internal/ActionElement.d.ts.map +1 -1
- package/dist/internal/HoverLayerTrigger.d.ts.map +1 -1
- package/dist/internal/MobileNav/MobileNav.d.ts.map +1 -1
- package/dist/internal/MobileNav/MobileNavToggle.d.ts.map +1 -1
- package/dist/internal/OverflowList.d.ts.map +1 -1
- package/dist/internal/linkAccessibility.d.ts.map +1 -1
- package/dist/internal/useBackdropDismiss.d.ts.map +1 -1
- package/dist/internal/useConstant.d.ts.map +1 -1
- package/dist/internal/useFocusTrap.d.ts.map +1 -1
- package/dist/internal/useGridFocus.d.ts.map +1 -1
- package/dist/internal/useHoverLayer.d.ts.map +1 -1
- package/dist/internal/useLatest.d.ts.map +1 -1
- package/dist/internal/useLayer.d.ts.map +1 -1
- package/dist/internal/useListboxNavigation.d.ts.map +1 -1
- package/dist/internal/useMediaQuery.d.ts.map +1 -1
- package/dist/internal/useScrollLock.d.ts.map +1 -1
- package/dist/internal/useSelectListbox.d.ts.map +1 -1
- package/dist/internal/useShallowEqualMemo.d.ts.map +1 -1
- package/package.json +3 -2
- package/dist/chunk-2AOR4EVA.cjs.map +0 -1
- package/dist/chunk-2N3PIXZ5.cjs.map +0 -1
- package/dist/chunk-3NIDAKCF.cjs.map +0 -1
- package/dist/chunk-3PCXFOOS.js.map +0 -1
- package/dist/chunk-3PEK2Q54.cjs.map +0 -1
- package/dist/chunk-3W3ST5Y3.cjs.map +0 -1
- package/dist/chunk-4MIIXRZN.cjs.map +0 -1
- package/dist/chunk-56PY2CD7.js.map +0 -1
- package/dist/chunk-5FQKELP6.js.map +0 -1
- package/dist/chunk-5HPXPF3F.js.map +0 -1
- package/dist/chunk-5K3C3INR.cjs.map +0 -1
- package/dist/chunk-5RFHYDQY.js.map +0 -1
- package/dist/chunk-5UGHDUMO.js.map +0 -1
- package/dist/chunk-63QPCV4F.cjs.map +0 -1
- package/dist/chunk-6OWEKKOC.js.map +0 -1
- package/dist/chunk-6R2UZNVE.js.map +0 -1
- package/dist/chunk-6SFMORQF.cjs.map +0 -1
- package/dist/chunk-6SKIBUCY.js.map +0 -1
- package/dist/chunk-6SMVH3ON.cjs.map +0 -1
- package/dist/chunk-6ZPHID26.cjs.map +0 -1
- package/dist/chunk-AC4E3WQA.cjs.map +0 -1
- package/dist/chunk-ACGPBJIS.js.map +0 -1
- package/dist/chunk-ARUOMLOJ.cjs.map +0 -1
- package/dist/chunk-BBLAZNCC.js.map +0 -1
- package/dist/chunk-BKKLUIIU.js.map +0 -1
- package/dist/chunk-BSXUNRET.cjs.map +0 -1
- package/dist/chunk-BYV7NXC5.cjs.map +0 -1
- package/dist/chunk-CQYBC3RJ.cjs.map +0 -1
- package/dist/chunk-CWZCBYVZ.cjs.map +0 -1
- package/dist/chunk-DE7JLNSO.js.map +0 -1
- package/dist/chunk-DVCDAKPK.cjs.map +0 -1
- package/dist/chunk-EBV3EX3J.js.map +0 -1
- package/dist/chunk-ESWYWWY2.js.map +0 -1
- package/dist/chunk-EZFQCREN.cjs.map +0 -1
- package/dist/chunk-FQSVY4QB.js.map +0 -1
- package/dist/chunk-FTNEAX24.js.map +0 -1
- package/dist/chunk-GJZAGTPV.cjs.map +0 -1
- package/dist/chunk-GTZQT6MK.js.map +0 -1
- package/dist/chunk-H7LOOHWU.cjs.map +0 -1
- package/dist/chunk-HC57X3U4.js.map +0 -1
- package/dist/chunk-HENIVDYQ.cjs.map +0 -1
- package/dist/chunk-HN4W6TM6.cjs.map +0 -1
- package/dist/chunk-I2DXEPDF.js.map +0 -1
- package/dist/chunk-IREOTHD3.cjs.map +0 -1
- package/dist/chunk-J242UTPO.cjs.map +0 -1
- package/dist/chunk-JIF5TZHC.cjs.map +0 -1
- package/dist/chunk-JMVYWHJ7.js.map +0 -1
- package/dist/chunk-KEPCKSDE.js.map +0 -1
- package/dist/chunk-KLCEDPJ4.cjs.map +0 -1
- package/dist/chunk-KWZMXX4F.js.map +0 -1
- package/dist/chunk-L747HIHG.js.map +0 -1
- package/dist/chunk-LBOWHXOF.js.map +0 -1
- package/dist/chunk-MDQSVB2Y.js.map +0 -1
- package/dist/chunk-MJHEPDDX.cjs.map +0 -1
- package/dist/chunk-MYSLJWCW.cjs.map +0 -1
- package/dist/chunk-N6C37HXD.js.map +0 -1
- package/dist/chunk-NGNVNRAZ.cjs.map +0 -1
- package/dist/chunk-NIKT7XSO.js.map +0 -1
- package/dist/chunk-NYOZQE6P.js.map +0 -1
- package/dist/chunk-OPBELSKN.js.map +0 -1
- package/dist/chunk-OUUG4RHO.js.map +0 -1
- package/dist/chunk-PG4CZRTU.js.map +0 -1
- package/dist/chunk-PGBYMBGH.js.map +0 -1
- package/dist/chunk-PKZSJX53.cjs.map +0 -1
- package/dist/chunk-PQXPYN23.js.map +0 -1
- package/dist/chunk-PXTTIAC4.cjs.map +0 -1
- package/dist/chunk-PYN75QAG.js.map +0 -1
- package/dist/chunk-PZHRFASW.js.map +0 -1
- package/dist/chunk-Q6YOSQAM.js.map +0 -1
- package/dist/chunk-QQCEGAUQ.cjs.map +0 -1
- package/dist/chunk-RLIBY7XB.cjs.map +0 -1
- package/dist/chunk-S4WWBV4N.js.map +0 -1
- package/dist/chunk-TACO5IWI.cjs.map +0 -1
- package/dist/chunk-UJDHRILS.cjs.map +0 -1
- package/dist/chunk-UUVI3TYW.js.map +0 -1
- package/dist/chunk-VK7DXUGH.cjs.map +0 -1
- package/dist/chunk-VPWNRWNO.cjs.map +0 -1
- package/dist/chunk-WOVSJHY6.cjs.map +0 -1
- package/dist/chunk-WTCH3QCQ.js.map +0 -1
- package/dist/chunk-XUCLNECV.js.map +0 -1
- package/dist/chunk-YGESCFX2.js.map +0 -1
- package/dist/chunk-ZDZ7FW6V.cjs.map +0 -1
- package/dist/chunk-ZW2ZOEYM.cjs.map +0 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
1
|
+
'use client';
|
|
2
|
+
import { useScrollLock } from './chunk-Q4UI2MP4.js';
|
|
3
|
+
import { Button } from './chunk-JJ32AVLU.js';
|
|
3
4
|
import { mergeRefs } from './chunk-SGLIDI6R.js';
|
|
4
5
|
import { cva } from './chunk-FMEIPGUP.js';
|
|
5
6
|
import { css } from './chunk-OD4DHHZH.js';
|
|
@@ -236,5 +237,5 @@ function MobileNavToggle({
|
|
|
236
237
|
MobileNavToggle.displayName = "MobileNavToggle";
|
|
237
238
|
|
|
238
239
|
export { AppShellMobileContext, MobileNav, MobileNavToggle, useAppShellMobile };
|
|
239
|
-
//# sourceMappingURL=chunk-
|
|
240
|
-
//# sourceMappingURL=chunk-
|
|
240
|
+
//# sourceMappingURL=chunk-3MNRY6XK.js.map
|
|
241
|
+
//# sourceMappingURL=chunk-3MNRY6XK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/AppShell/AppShellMobileContext.tsx","../src/internal/MobileNav/MobileNav.recipe.ts","../src/internal/MobileNav/MobileNav.tsx","../src/internal/MobileNav/MobileNavToggle.tsx"],"names":["jsx"],"mappings":";;;;;;;;;;AAcA,IAAM,YAAA,GAA2C;AAAA,EAC/C,gBAAgB,MAAM;AAAA,EAAC,CAAA;AAAA,EACvB,aAAA,EAAe,IAAA;AAAA,EACf,QAAA,EAAU,KAAA;AAAA,EACV,kBAAA,EAAoB,KAAA;AAAA,EACpB,eAAA,EAAiB,KAAA;AAAA,EACjB,eAAe,MAAM;AAAA,EAAC,CAAA;AAAA,EACtB,iBAAiB,MAAM;AAAA,EAAC;AAC1B,CAAA;AAEO,IAAM,qBAAA,GACX,cAA0C,YAAY;AACxD,qBAAA,CAAsB,WAAA,GAAc,uBAAA;AAE7B,SAAS,iBAAA,GAAgD;AAC9D,EAAA,OAAO,IAAI,qBAAqB,CAAA;AAClC;;;AC5BO,IAAM,kBAAkB,GAAA,CAAI;AAAA,EACjC,IAAA,EAAM;AAAA,IACJ,QAAA,EAAU,OAAA;AAAA,IACV,KAAA,EAAO,CAAA;AAAA,IACP,CAAA,EAAG,CAAA;AAAA,IACH,CAAA,EAAG,CAAA;AAAA,IACH,WAAA,EAAa,CAAA;AAAA,IACb,IAAA,EAAM,MAAA;AAAA,IACN,IAAA,EAAM,MAAA;AAAA,IACN,CAAA,EAAG,OAAA;AAAA,IACH,CAAA,EAAG,QAAA;AAAA,IACH,EAAA,EAAI,aAAA;AAAA,IACJ,QAAA,EAAU,QAAA;AAAA,IACV,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe;AAAA,MACb,EAAA,EAAI,eAAA;AAAA,MACJ,cAAA,EAAgB;AAAA;AAClB,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,MAAA,EAAQ;AAAA,MACN,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS;AAAA,OACX;AAAA,MACA,OAAO;AAAC;AACV,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,MAAA,EAAQ;AAAA;AAEZ,CAAC,CAAA;ACmCD,SAAS,WAAW,KAAA,EAAgC;AAClD,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,GAAW,CAAA,EAAG,KAAK,CAAA,EAAA,CAAA,GAAO,KAAA;AACpD;AAEA,IAAM,qBAAA,GAAwB,iCAAA;AAE9B,IAAM,MAAA,GAAS;AAAA,EACb,QAAQ,GAAA,CAAI;AAAA,IACV,QAAA,EAAU,UAAA;AAAA,IACV,UAAA,EAAY,CAAA;AAAA,IACZ,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,QAAA;AAAA,IACf,EAAA,EAAI,IAAA;AAAA,IACJ,WAAA,EAAa,QAAA;AAAA,IACb,QAAA,EAAU,QAAA;AAAA,IACV,kBAAA,EAAoB,WAAA;AAAA,IACpB,kBAAA,EAAoB,MAAA;AAAA,IACpB,wBAAA,EAA0B,SAAA;AAAA,IAC1B,yCAAA,EAA2C;AAAA,MACzC,kBAAA,EAAoB;AAAA;AACtB,GACD,CAAA;AAAA,EACD,aAAa,GAAA,CAAI;AAAA,IACf,gBAAA,EAAkB,CAAA;AAAA,IAClB,oBAAA,EAAsB,SAAA;AAAA,IACtB,SAAA,EAAW,mBAAA;AAAA,IACX,IAAA,EAAM,EAAC,SAAA,EAAW,kBAAA;AAAkB,GACrC,CAAA;AAAA,EACD,WAAW,GAAA,CAAI;AAAA,IACb,cAAA,EAAgB,CAAA;AAAA,IAChB,sBAAA,EAAwB,SAAA;AAAA,IACxB,SAAA,EAAW,kBAAA;AAAA,IACX,IAAA,EAAM,EAAC,SAAA,EAAW,mBAAA;AAAmB,GACtC,CAAA;AAAA,EACD,YAAY,GAAA,CAAI;AAAA,IACd,SAAA,EAAW;AAAA,GACZ,CAAA;AAAA,EACD,QAAQ,GAAA,CAAI;AAAA,IACV,CAAA,EAAG,IAAA;AAAA,IACH,EAAA,EAAI,GAAA;AAAA,IACJ,OAAA,EAAS,MAAA;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,eAAA;AAAA,IAChB,mBAAA,EAAqB,SAAA;AAAA,IACrB,mBAAA,EAAqB,OAAA;AAAA,IACrB,mBAAA,EAAqB,QAAA;AAAA,IACrB,UAAA,EAAY;AAAA,GACb,CAAA;AAAA,EACD,MAAM,GAAA,CAAI;AAAA,IACR,IAAA,EAAM,CAAA;AAAA,IACN,SAAA,EAAW,MAAA;AAAA,IACX,SAAA,EAAW,QAAA;AAAA,IACX,CAAA,EAAG;AAAA,GACJ;AACH,CAAA;AAEO,SAAS,SAAA,CAAU;AAAA,EACxB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,aAAA,EAAe,UAAA;AAAA,EACf,MAAA;AAAA,EACA,MAAA,EAAQ,eAAA;AAAA,EACR,KAAA;AAAA,EACA,YAAA,EAAc,qBAAA;AAAA,EACd,GAAA;AAAA,EACA,IAAA,GAAO,KAAA;AAAA,EACP,IAAA,GAAO,GAAA;AAAA,EACP;AACF,CAAA,EAAsC;AACpC,EAAA,MAAM,iBAAiB,iBAAA,EAAkB;AACzC,EAAA,MAAM,MAAA,GAAS,mBAAmB,cAAA,CAAe,eAAA;AACjD,EAAA,MAAM,EAAC,aAAA,EAAe,cAAA,EAAc,GAAI,cAAA;AACxC,EAAA,MAAM,YAAA,GAAe,WAAA;AAAA,IACnB,CAAC,UAAA,KAAwB;AACvB,MAAA,IAAI,yBAAyB,IAAA,EAAM;AACjC,QAAA,qBAAA,CAAsB,UAAU,CAAA;AAAA,MAClC,WAAW,UAAA,EAAY;AACrB,QAAA,aAAA,EAAc;AAAA,MAChB,CAAA,MAAO;AACL,QAAA,cAAA,EAAe;AAAA,MACjB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,aAAA,EAAe,cAAA,EAAgB,qBAAqB;AAAA,GACvD;AACA,EAAA,MAAM,SAAA,GAAY,OAA0B,IAAI,CAAA;AAEhD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,SAAS,SAAA,CAAU,OAAA;AAEzB,IAAA,IAAI,UAAU,IAAA,EAAM;AAClB,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,MAAA,IAAU,CAAC,MAAA,CAAO,IAAA,EAAM;AAC1B,MAAA,MAAA,CAAO,SAAA,EAAU;AAEjB,MAAA,MAAM,iBAAiB,MAAA,CAAO,aAAA;AAAA,QAC5B,uBAAuB,qBAAqB,CAAA,iBAAA;AAAA,OAC9C;AACA,MAAA,IAAI,kBAAkB,IAAA,EAAM;AAC1B,QAAA,cAAA,CAAe,KAAA,EAAM;AAAA,MACvB;AAAA,IACF,CAAA,MAAA,IAAW,CAAC,MAAA,IAAU,MAAA,CAAO,IAAA,EAAM;AACjC,MAAA,MAAA,CAAO,KAAA,EAAM;AAAA,IACf;AAAA,EACF,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,aAAA,CAAc,MAAM,CAAA;AAEpB,EAAA,MAAM,aAAA,GAAgB,WAAW,IAAI,CAAA;AAErC,EAAA,uBACE,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAY,KAAA,KAAU,OAAO,MAAA,KAAW,WAAW,MAAA,GAAS,YAAA,CAAA;AAAA,MAC5D,WAAW,EAAA,CAAG,eAAA,CAAgB,EAAC,MAAA,EAAO,GAAG,SAAS,CAAA;AAAA,MAClD,aAAA,EAAa,UAAA;AAAA,MACb,UAAU,CAAA,KAAA,KAAS;AACjB,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,YAAA,CAAa,KAAK,CAAA;AAAA,MACpB,CAAA;AAAA,MACA,SAAS,CAAA,KAAA,KAAS;AAChB,QAAA,IAAI,KAAA,CAAM,MAAA,KAAW,KAAA,CAAM,aAAA,EAAe;AACxC,UAAA,YAAA,CAAa,KAAK,CAAA;AAAA,QACpB;AAAA,MACF,CAAA;AAAA,MACA,GAAA,EAAK,SAAA,CAAU,GAAA,EAAK,SAAS,CAAA;AAAA,MAC7B,KAAA;AAAA,MACA,QAAA,kBAAA,IAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,EAAA;AAAA,YACT,MAAA,CAAO,MAAA;AAAA,YACP,IAAA,KAAS,OAAA,GAAU,MAAA,CAAO,WAAA,GAAc,MAAA,CAAO,SAAA;AAAA,YAC/C,UAAU,MAAA,CAAO;AAAA,WACnB;AAAA,UACA,KAAA,EAAO,EAAC,QAAA,EAAU,aAAA,EAAe,OAAO,OAAA,EAAO;AAAA,UAC/C,QAAA,EAAA;AAAA,4BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,MAAA,EACpB,QAAA,EAAA;AAAA,cAAA,MAAA,wBAAW,MAAA,EAAA,EAAK,CAAA;AAAA,8BACjB,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAM,CAAA;AAAA,kBACN,UAAA,EAAU,IAAA;AAAA,kBACV,KAAA,EAAM,kBAAA;AAAA,kBACN,OAAA,EAAS,MAAM,YAAA,CAAa,KAAK,CAAA;AAAA,kBACjC,OAAA,EAAQ;AAAA;AAAA;AACV,aAAA,EACF,CAAA;AAAA,4BACA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,MAAO,QAAA,EAAS;AAAA;AAAA;AAAA;AACzC;AAAA,GACF;AAEJ;AAEA,SAAA,CAAU,WAAA,GAAc,WAAA;AClLjB,SAAS,eAAA,CAAgB;AAAA,EAC9B,SAAA;AAAA,EACA,aAAA,EAAe,UAAA;AAAA,EACf,KAAA,GAAQ,iBAAA;AAAA,EACR,GAAA;AAAA,EACA;AACF,CAAA,EAAmD;AACjD,EAAA,MAAM,EAAC,QAAA,EAAU,kBAAA,EAAoB,eAAA,KAAmB,iBAAA,EAAkB;AAE1E,EAAA,IAAI,CAAC,QAAA,IAAY,CAAC,kBAAA,EAAoB;AACpC,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,aAAA,EAAa,UAAA;AAAA,MACb,IAAA,EAAM,IAAA;AAAA,MACN,UAAA,EAAU,IAAA;AAAA,MACV,KAAA;AAAA,MACA,OAAA,EAAS,eAAA;AAAA,MACT,GAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA,EAAQ;AAAA;AAAA,GACV;AAEJ;AAEA,eAAA,CAAgB,WAAA,GAAc,iBAAA","file":"chunk-3MNRY6XK.js","sourcesContent":["'use client';\n\nimport {createContext, use} from 'react';\n\nexport interface AppShellMobileContextValue {\n closeMobileNav: () => void;\n hasAutoToggle: boolean;\n isMobile: boolean;\n isMobileNavEnabled: boolean;\n isMobileNavOpen: boolean;\n openMobileNav: () => void;\n toggleMobileNav: () => void;\n}\n\nconst defaultValue: AppShellMobileContextValue = {\n closeMobileNav: () => {},\n hasAutoToggle: true,\n isMobile: false,\n isMobileNavEnabled: false,\n isMobileNavOpen: false,\n openMobileNav: () => {},\n toggleMobileNav: () => {},\n};\n\nexport const AppShellMobileContext =\n createContext<AppShellMobileContextValue>(defaultValue);\nAppShellMobileContext.displayName = 'AppShellMobileContext';\n\nexport function useAppShellMobile(): AppShellMobileContextValue {\n return use(AppShellMobileContext);\n}\n","import {cva, type RecipeVariantProps} from 'styled-system/css';\n\nexport const mobileNavRecipe = cva({\n base: {\n position: 'fixed',\n inset: 0,\n m: 0,\n p: 0,\n borderWidth: 0,\n maxW: 'none',\n maxH: 'none',\n w: '100vw',\n h: '100dvh',\n bg: 'transparent',\n overflow: 'hidden',\n display: 'none',\n '&::backdrop': {\n bg: 'overlay.scrim',\n backdropFilter: 'blur(2px)',\n },\n },\n variants: {\n isOpen: {\n true: {\n display: 'flex',\n },\n false: {},\n },\n },\n defaultVariants: {\n isOpen: false,\n },\n});\n\nexport type MobileNavVariants = RecipeVariantProps<typeof mobileNavRecipe>;\n","'use client';\n\nimport {X} from 'lucide-react';\nimport type {CSSProperties, ReactNode, Ref} from 'react';\nimport {useCallback, useEffect, useRef} from 'react';\nimport {useAppShellMobile} from 'components/AppShell/AppShellMobileContext';\nimport {Button} from 'components/Button';\nimport {mobileNavRecipe} from 'internal/MobileNav/MobileNav.recipe';\nimport {cx} from 'internal/cx';\nimport {mergeRefs} from 'internal/mergeRefs';\nimport {useScrollLock} from 'internal/useScrollLock';\nimport {css} from 'styled-system/css';\n\nexport type MobileNavSide = 'start' | 'end';\n\n/**\n * Slide-out drawer for mobile navigation.\n */\nexport interface MobileNavProps {\n /**\n * Drawer body content.\n */\n children: ReactNode;\n /**\n * Additional CSS class names applied to the dialog element.\n */\n className?: string;\n /**\n * Test ID applied to the dialog element.\n */\n 'data-testid'?: string;\n /**\n * Content rendered in the drawer header bar.\n */\n header?: ReactNode;\n /**\n * Whether the drawer is open.\n */\n isOpen?: boolean;\n /**\n * Accessible label for the dialog.\n */\n label?: string;\n /**\n * Called when the drawer requests an open-state change.\n */\n onOpenChange?: (isOpen: boolean) => void;\n /**\n * Ref forwarded to the dialog element.\n */\n ref?: Ref<HTMLDialogElement>;\n /**\n * Which edge of the viewport the drawer slides from.\n * @default 'end'\n */\n side?: MobileNavSide;\n /**\n * Maximum drawer width.\n * @default 320\n */\n size?: number | string;\n /**\n * Inline styles applied to the dialog element.\n */\n style?: CSSProperties;\n}\n\nfunction formatSize(value: number | string): string {\n return typeof value === 'number' ? `${value}px` : value;\n}\n\nconst CLOSE_BUTTON_SELECTOR = '[aria-label=\"Close navigation\"]';\n\nconst styles = {\n drawer: css({\n position: 'absolute',\n insetBlock: 0,\n display: 'flex',\n flexDirection: 'column',\n bg: 'bg',\n borderColor: 'border',\n overflow: 'hidden',\n transitionProperty: 'transform',\n transitionDuration: 'fast',\n transitionTimingFunction: 'default',\n '@media (prefers-reduced-motion: reduce)': {\n transitionDuration: '0.01s',\n },\n }),\n drawerStart: css({\n insetInlineStart: 0,\n borderInlineEndWidth: 'default',\n transform: 'translateX(-100%)',\n _rtl: {transform: 'translateX(100%)'},\n }),\n drawerEnd: css({\n insetInlineEnd: 0,\n borderInlineStartWidth: 'default',\n transform: 'translateX(100%)',\n _rtl: {transform: 'translateX(-100%)'},\n }),\n drawerOpen: css({\n transform: 'translateX(0)',\n }),\n header: css({\n h: '12',\n px: '2',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n borderBlockEndWidth: 'default',\n borderBlockEndStyle: 'solid',\n borderBlockEndColor: 'border',\n flexShrink: 0,\n }),\n body: css({\n flex: 1,\n overflowY: 'auto',\n overflowX: 'hidden',\n p: '2',\n }),\n};\n\nexport function MobileNav({\n children,\n className,\n 'data-testid': dataTestId,\n header,\n isOpen: isOpenFromProps,\n label,\n onOpenChange: onOpenChangeFromProps,\n ref,\n side = 'end',\n size = 320,\n style,\n}: MobileNavProps): React.JSX.Element {\n const appShellMobile = useAppShellMobile();\n const isOpen = isOpenFromProps ?? appShellMobile.isMobileNavOpen;\n const {openMobileNav, closeMobileNav} = appShellMobile;\n const onOpenChange = useCallback(\n (isNextOpen: boolean) => {\n if (onOpenChangeFromProps != null) {\n onOpenChangeFromProps(isNextOpen);\n } else if (isNextOpen) {\n openMobileNav();\n } else {\n closeMobileNav();\n }\n },\n [openMobileNav, closeMobileNav, onOpenChangeFromProps],\n );\n const dialogRef = useRef<HTMLDialogElement>(null);\n\n useEffect(() => {\n const dialog = dialogRef.current;\n\n if (dialog == null) {\n return;\n }\n\n if (isOpen && !dialog.open) {\n dialog.showModal();\n\n const firstFocusable = dialog.querySelector<HTMLElement>(\n `a[href], button:not(${CLOSE_BUTTON_SELECTOR}):not([disabled])`,\n );\n if (firstFocusable != null) {\n firstFocusable.focus();\n }\n } else if (!isOpen && dialog.open) {\n dialog.close();\n }\n }, [isOpen]);\n\n useScrollLock(isOpen);\n\n const formattedSize = formatSize(size);\n\n return (\n <dialog\n aria-label={label ?? (typeof header === 'string' ? header : 'Navigation')}\n className={cx(mobileNavRecipe({isOpen}), className)}\n data-testid={dataTestId}\n onCancel={event => {\n event.preventDefault();\n onOpenChange(false);\n }}\n onClick={event => {\n if (event.target === event.currentTarget) {\n onOpenChange(false);\n }\n }}\n ref={mergeRefs(ref, dialogRef)}\n style={style}>\n <div\n className={cx(\n styles.drawer,\n side === 'start' ? styles.drawerStart : styles.drawerEnd,\n isOpen && styles.drawerOpen,\n )}\n style={{maxWidth: formattedSize, width: '100vw'}}>\n <div className={styles.header}>\n {header ?? <span />}\n <Button\n icon={X}\n isIconOnly\n label=\"Close navigation\"\n onClick={() => onOpenChange(false)}\n variant=\"ghost\"\n />\n </div>\n <div className={styles.body}>{children}</div>\n </div>\n </dialog>\n );\n}\n\nMobileNav.displayName = 'MobileNav';\n","'use client';\n\nimport {Menu} from 'lucide-react';\nimport type {CSSProperties, Ref} from 'react';\nimport {useAppShellMobile} from 'components/AppShell/AppShellMobileContext';\nimport {Button} from 'components/Button';\n\n/**\n * Props for {@link MobileNavToggle}.\n */\nexport interface MobileNavToggleProps {\n /**\n * Additional CSS class names applied to the toggle button.\n */\n className?: string;\n /**\n * Test ID applied to the toggle button.\n */\n 'data-testid'?: string;\n /**\n * Accessible label for the toggle button.\n * @default 'Open navigation'\n */\n label?: string;\n /**\n * Ref forwarded to the toggle button.\n */\n ref?: Ref<HTMLElement>;\n /**\n * Inline styles applied to the toggle button.\n */\n style?: CSSProperties;\n}\n\n/**\n * Hamburger-style button that toggles the mobile navigation drawer.\n * Renders nothing when the viewport is above the mobile breakpoint or\n * mobile navigation is disabled.\n */\nexport function MobileNavToggle({\n className,\n 'data-testid': dataTestId,\n label = 'Open navigation',\n ref,\n style,\n}: MobileNavToggleProps): React.JSX.Element | null {\n const {isMobile, isMobileNavEnabled, toggleMobileNav} = useAppShellMobile();\n\n if (!isMobile || !isMobileNavEnabled) {\n return null;\n }\n\n return (\n <Button\n className={className}\n data-testid={dataTestId}\n icon={Menu}\n isIconOnly\n label={label}\n onClick={toggleMobileNav}\n ref={ref}\n style={style}\n variant=\"ghost\"\n />\n );\n}\n\nMobileNavToggle.displayName = 'MobileNavToggle';\n"]}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
'use client';
|
|
1
2
|
'use strict';
|
|
2
3
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
4
|
+
var chunk3JCYTBXI_cjs = require('./chunk-3JCYTBXI.cjs');
|
|
5
|
+
var chunkS5FJ3FHH_cjs = require('./chunk-S5FJ3FHH.cjs');
|
|
6
|
+
var chunkEPQKIFGY_cjs = require('./chunk-EPQKIFGY.cjs');
|
|
6
7
|
var chunkQAO6QMNQ_cjs = require('./chunk-QAO6QMNQ.cjs');
|
|
7
8
|
var chunkZ6RT3WPE_cjs = require('./chunk-Z6RT3WPE.cjs');
|
|
8
9
|
var chunkJRBQKFVO_cjs = require('./chunk-JRBQKFVO.cjs');
|
|
@@ -371,12 +372,12 @@ function LayoutHeader({
|
|
|
371
372
|
title
|
|
372
373
|
}) {
|
|
373
374
|
const dividerContext = useLayoutDivider();
|
|
374
|
-
const dialogContext =
|
|
375
|
+
const dialogContext = chunk3JCYTBXI_cjs.useDialogContext();
|
|
375
376
|
const hasDivider = dividerContext?.hasDividers ?? false;
|
|
376
377
|
const rootStyle = { height, ...style };
|
|
377
378
|
const classes = layoutHeaderRecipe({ align, hasDivider });
|
|
378
379
|
const closeButton = dialogContext != null ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
379
|
-
|
|
380
|
+
chunkS5FJ3FHH_cjs.Button,
|
|
380
381
|
{
|
|
381
382
|
className: classes.closeButton,
|
|
382
383
|
icon: lucideReact.X,
|
|
@@ -399,7 +400,7 @@ function LayoutHeader({
|
|
|
399
400
|
chunkQAO6QMNQ_cjs.isReactNode(startContent) ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: classes.actions, children: startContent }) : null,
|
|
400
401
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: classes.titleArea, children: [
|
|
401
402
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
402
|
-
|
|
403
|
+
chunkEPQKIFGY_cjs.Heading,
|
|
403
404
|
{
|
|
404
405
|
"data-dialog-autofocus": dialogContext != null ? "true" : void 0,
|
|
405
406
|
id: dialogContext?.titleId,
|
|
@@ -408,7 +409,7 @@ function LayoutHeader({
|
|
|
408
409
|
children: title
|
|
409
410
|
}
|
|
410
411
|
),
|
|
411
|
-
subtitle != null ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
412
|
+
subtitle != null ? /* @__PURE__ */ jsxRuntime.jsx(chunkEPQKIFGY_cjs.Text, { as: "p", color: "secondary", type: "supporting", children: subtitle }) : null
|
|
412
413
|
] }),
|
|
413
414
|
hasEnd ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: classes.actions, children: [
|
|
414
415
|
endContent,
|
|
@@ -461,5 +462,5 @@ exports.LayoutContent = LayoutContent;
|
|
|
461
462
|
exports.LayoutFooter = LayoutFooter;
|
|
462
463
|
exports.LayoutHeader = LayoutHeader;
|
|
463
464
|
exports.LayoutPanel = LayoutPanel;
|
|
464
|
-
//# sourceMappingURL=chunk-
|
|
465
|
-
//# sourceMappingURL=chunk-
|
|
465
|
+
//# sourceMappingURL=chunk-3PHJWXBO.cjs.map
|
|
466
|
+
//# sourceMappingURL=chunk-3PHJWXBO.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Layout/Layout.recipe.ts","../src/components/Layout/LayoutContext.ts","../src/components/Layout/Layout.tsx","../src/components/Layout/LayoutContent.tsx","../src/components/Layout/LayoutFooter.tsx","../src/components/Layout/LayoutHeader.tsx","../src/components/Layout/LayoutPanel.tsx"],"names":["sva","cva","createContext","use","isReactNode","jsx","useMemo","jsxs","cx","Fragment","useDialogContext","Button","X","Heading","Text"],"mappings":"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","file":"chunk-LTHPJRFK.cjs","sourcesContent":["import {cva, sva, type RecipeVariantProps} from 'styled-system/css';\n\nconst paddingVariants = {\n 0: {p: '0'},\n 0.5: {p: '0.5'},\n 1: {p: '1'},\n 1.5: {p: '1.5'},\n 2: {p: '2'},\n 3: {p: '3'},\n 4: {p: '4'},\n 5: {p: '5'},\n 6: {p: '6'},\n 8: {p: '8'},\n 10: {p: '10'},\n};\n\n// Same padding scale as `paddingVariants`, scoped to the `root` slot so it can\n// be used as an `sva` variant on the Layout shell.\nconst rootPaddingVariants = {\n 0: {root: {p: '0'}},\n 0.5: {root: {p: '0.5'}},\n 1: {root: {p: '1'}},\n 1.5: {root: {p: '1.5'}},\n 2: {root: {p: '2'}},\n 3: {root: {p: '3'}},\n 4: {root: {p: '4'}},\n 5: {root: {p: '5'}},\n 6: {root: {p: '6'}},\n 8: {root: {p: '8'}},\n 10: {root: {p: '10'}},\n};\n\nexport const layoutRecipe = sva({\n slots: ['root', 'middle', 'content'],\n base: {\n root: {\n display: 'flex',\n flexDirection: 'column',\n minW: 0,\n },\n middle: {\n display: 'flex',\n flex: 1,\n minH: 0,\n minW: 0,\n },\n content: {\n flex: 1,\n minW: 0,\n display: 'flex',\n flexDirection: 'column',\n },\n },\n variants: {\n height: {\n fill: {\n root: {h: '100%', minH: 0},\n },\n auto: {\n root: {minH: '100%'},\n },\n },\n padding: rootPaddingVariants,\n },\n defaultVariants: {\n height: 'fill',\n },\n});\n\nexport const layoutPanelRecipe = cva({\n base: {\n flexShrink: 0,\n overflow: 'clip',\n },\n variants: {\n isScrollable: {\n true: {overflow: 'auto'},\n },\n divider: {\n none: {},\n // Border on the edge adjacent to the content area: inline-end for a start\n // panel, inline-start for an end panel.\n start: {\n borderInlineEndWidth: 'default',\n borderInlineEndStyle: 'solid',\n borderInlineEndColor: 'border',\n },\n end: {\n borderInlineStartWidth: 'default',\n borderInlineStartStyle: 'solid',\n borderInlineStartColor: 'border',\n },\n },\n },\n defaultVariants: {\n isScrollable: true,\n divider: 'none',\n },\n});\n\nexport const layoutContentRecipe = cva({\n base: {\n flex: 1,\n minH: 0,\n minW: 0,\n overflow: 'clip',\n },\n variants: {\n isScrollable: {\n true: {overflow: 'auto'},\n },\n },\n defaultVariants: {\n isScrollable: true,\n },\n});\n\nexport const layoutHeaderRecipe = sva({\n slots: ['root', 'inner', 'titleArea', 'actions', 'closeButton'],\n base: {\n root: {\n flexShrink: 0,\n },\n inner: {\n display: 'flex',\n justifyContent: 'space-between',\n gap: '3',\n },\n titleArea: {\n flex: 1,\n minW: 0,\n '& > :focus': {\n outline: 'none',\n },\n },\n actions: {\n display: 'flex',\n alignItems: 'center',\n gap: '2',\n flexShrink: 0,\n },\n closeButton: {\n marginInlineEnd: '-2',\n marginBlockStart: '-2',\n },\n },\n variants: {\n // Cross-axis alignment of the start/title/end slots within the header row.\n align: {\n start: {inner: {alignItems: 'flex-start'}},\n center: {inner: {alignItems: 'center'}},\n end: {inner: {alignItems: 'flex-end'}},\n },\n hasDivider: {\n true: {\n root: {\n borderBlockEndWidth: 'default',\n borderBlockEndStyle: 'solid',\n borderBlockEndColor: 'border',\n },\n },\n },\n },\n defaultVariants: {\n align: 'start',\n hasDivider: false,\n },\n});\n\nexport const layoutFooterRecipe = sva({\n slots: ['root', 'inner', 'start', 'actions'],\n base: {\n root: {\n flexShrink: 0,\n },\n start: {\n display: 'flex',\n alignItems: 'center',\n gap: '2',\n flex: 1,\n minW: 0,\n marginInlineEnd: 'auto',\n },\n actions: {\n display: 'flex',\n alignItems: 'center',\n gap: '2',\n flexShrink: 0,\n },\n },\n variants: {\n hasDivider: {\n true: {\n root: {\n borderBlockStartWidth: 'default',\n borderBlockStartStyle: 'solid',\n borderBlockStartColor: 'border',\n },\n },\n },\n // Custom footers render arbitrary children, so the inner element drops the\n // action-row flex layout.\n isCustom: {\n false: {\n inner: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: '3',\n },\n },\n true: {},\n },\n },\n defaultVariants: {\n hasDivider: false,\n isCustom: false,\n },\n});\n\nexport const layoutRegionRecipe = cva({\n variants: {\n padding: paddingVariants,\n },\n defaultVariants: {\n padding: 4,\n },\n});\n\nexport type LayoutVariants = RecipeVariantProps<typeof layoutRecipe>;\nexport type LayoutRegionVariants = RecipeVariantProps<\n typeof layoutRegionRecipe\n>;\n","import {createContext, use} from 'react';\n\nexport type LayoutArea = 'header' | 'content' | 'start' | 'end' | 'footer';\n\nexport interface LayoutDividerContextValue {\n hasDividers: boolean;\n}\n\nexport const LayoutAreaContext = createContext<LayoutArea>('content');\nLayoutAreaContext.displayName = 'LayoutAreaContext';\nexport const LayoutDividerContext =\n createContext<LayoutDividerContextValue | null>(null);\nLayoutDividerContext.displayName = 'LayoutDividerContext';\n\nexport function useLayoutArea(): LayoutArea {\n return use(LayoutAreaContext);\n}\n\nexport function useLayoutDivider(): LayoutDividerContextValue | null {\n return use(LayoutDividerContext);\n}\n","import type {CSSProperties, ReactNode, Ref} from 'react';\nimport {useMemo} from 'react';\nimport {layoutRecipe} from 'components/Layout/Layout.recipe';\nimport {\n LayoutAreaContext,\n LayoutDividerContext,\n type LayoutArea,\n} from 'components/Layout/LayoutContext';\nimport type {LayoutHeight} from 'components/Layout/types';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport type {SpacingToken} from 'internal/spacingTokens';\n\n/**\n * Shell with header, side panels, content, and footer slots.\n */\nexport interface LayoutProps {\n /**\n * Additional CSS class names applied to the root element.\n */\n className?: string;\n /**\n * Main content slot.\n */\n content?: ReactNode;\n /**\n * Test ID applied to the root element.\n */\n 'data-testid'?: string;\n /**\n * End panel slot.\n */\n end?: ReactNode;\n /**\n * Footer slot.\n */\n footer?: ReactNode;\n /**\n * Whether child layout regions should show dividers.\n */\n hasDividers?: boolean;\n /**\n * Header slot.\n */\n header?: ReactNode;\n /**\n * Layout height behavior. Default is `fill`.\n */\n height?: LayoutHeight;\n /**\n * Outer padding for layout edges.\n */\n padding?: SpacingToken;\n /**\n * Ref forwarded to the root element.\n */\n ref?: Ref<HTMLDivElement>;\n /**\n * Start panel slot.\n */\n start?: ReactNode;\n /**\n * Inline styles applied to the root element.\n */\n style?: CSSProperties;\n}\n\nfunction AreaProvider({\n area,\n children,\n}: {\n area: LayoutArea;\n children?: ReactNode;\n}): React.JSX.Element | null {\n if (!isReactNode(children)) {\n return null;\n }\n\n return <LayoutAreaContext value={area}>{children}</LayoutAreaContext>;\n}\n\nexport function Layout({\n className,\n content,\n 'data-testid': dataTestId,\n hasDividers = true,\n end,\n footer,\n header,\n height = 'fill',\n padding,\n ref,\n start,\n style,\n}: LayoutProps): React.JSX.Element {\n const dividerValue = useMemo(() => ({hasDividers}), [hasDividers]);\n const classes = layoutRecipe({height, padding});\n\n return (\n <LayoutDividerContext value={dividerValue}>\n <div\n className={cx(classes.root, className)}\n data-testid={dataTestId}\n ref={ref}\n style={style}>\n <AreaProvider area=\"header\">{header}</AreaProvider>\n <div className={classes.middle}>\n <AreaProvider area=\"start\">{start}</AreaProvider>\n <div className={classes.content}>\n <AreaProvider area=\"content\">{content}</AreaProvider>\n </div>\n <AreaProvider area=\"end\">{end}</AreaProvider>\n </div>\n <AreaProvider area=\"footer\">{footer}</AreaProvider>\n </div>\n </LayoutDividerContext>\n );\n}\n\nLayout.displayName = 'Layout';\n","import type {ComponentPropsWithRef, ElementType} from 'react';\nimport {\n layoutContentRecipe,\n layoutRegionRecipe,\n} from 'components/Layout/Layout.recipe';\nimport {cx} from 'internal/cx';\nimport type {SpacingToken} from 'internal/spacingTokens';\n\n/**\n * Scrollable main content area within a Layout. Fills the remaining space\n * between panels and stretches to fill the available height.\n */\nexport interface LayoutContentProps extends ComponentPropsWithRef<'div'> {\n /**\n * HTML element to render. Default is `div`.\n */\n as?: ElementType;\n /**\n * Test ID applied to the root element.\n */\n 'data-testid'?: string;\n /**\n * Whether the content area scrolls when it overflows.\n */\n isScrollable?: boolean;\n /**\n * Accessible label. Automatically sets role=\"region\" when provided.\n */\n label?: string;\n /**\n * Inner padding.\n */\n padding?: SpacingToken;\n}\n\n/**\n * Scrollable main content area within a Layout. Fills the remaining space\n * between panels and stretches to fill the available height.\n */\nexport function LayoutContent({\n as: Element = 'div',\n children,\n className,\n 'data-testid': dataTestId,\n isScrollable = true,\n label,\n padding = 4,\n ref,\n role,\n style,\n ...rest\n}: LayoutContentProps): React.JSX.Element {\n return (\n <Element\n {...rest}\n aria-label={label}\n className={cx(\n layoutContentRecipe({isScrollable}),\n layoutRegionRecipe({padding}),\n className,\n )}\n data-testid={dataTestId}\n ref={ref}\n role={role ?? (label != null ? 'region' : undefined)}\n style={style}>\n {children}\n </Element>\n );\n}\n\nLayoutContent.displayName = 'LayoutContent';\n","import type {CSSProperties, ReactNode, Ref} from 'react';\nimport {\n layoutFooterRecipe,\n layoutRegionRecipe,\n} from 'components/Layout/Layout.recipe';\nimport {useLayoutDivider} from 'components/Layout/LayoutContext';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport type {SpacingToken} from 'internal/spacingTokens';\n\ninterface LayoutFooterBaseProps {\n /**\n * Additional CSS class names applied to the footer.\n */\n className?: string;\n /**\n * Test ID applied to the root element.\n */\n 'data-testid'?: string;\n /**\n * Fixed height for the footer.\n */\n height?: number | string;\n /**\n * Accessible label for the footer landmark.\n */\n label?: string;\n /**\n * Inner padding.\n */\n padding?: SpacingToken;\n /**\n * Ref forwarded to the footer element.\n */\n ref?: Ref<HTMLElement>;\n /**\n * Inline styles applied to the footer.\n */\n style?: CSSProperties;\n}\n\ninterface LayoutFooterCustomProps extends LayoutFooterBaseProps {\n /**\n * Custom footer content rendered inside the footer shell.\n */\n children: ReactNode;\n primaryButton?: never;\n secondaryButton?: never;\n startContent?: never;\n}\n\ninterface LayoutFooterActionsProps extends LayoutFooterBaseProps {\n children?: never;\n /**\n * Primary action button, rendered rightmost.\n */\n primaryButton?: ReactNode;\n /**\n * Secondary action button, rendered left of the primary button.\n */\n secondaryButton?: ReactNode;\n /**\n * Content rendered at the start (left) of the footer.\n */\n startContent?: ReactNode;\n}\n\n/**\n * Footer landmark region within a Layout. Use action slots for the standard\n * footer layout, or children for a custom footer inside the same shell.\n */\nexport type LayoutFooterProps =\n | LayoutFooterActionsProps\n | LayoutFooterCustomProps;\n\n/**\n * Footer landmark region within a Layout.\n */\nexport function LayoutFooter({\n children,\n className,\n 'data-testid': dataTestId,\n height,\n label,\n padding = 4,\n primaryButton,\n ref,\n secondaryButton,\n startContent,\n style,\n}: LayoutFooterProps): React.JSX.Element {\n const dividerContext = useLayoutDivider();\n const hasDivider = dividerContext?.hasDividers ?? false;\n const rootStyle: CSSProperties = {height, ...style};\n const isCustom = isReactNode(children);\n const hasActions = isReactNode(primaryButton) || isReactNode(secondaryButton);\n const classes = layoutFooterRecipe({hasDivider, isCustom});\n\n return (\n <footer\n aria-label={label}\n className={cx(classes.root, className)}\n data-divider={hasDivider || undefined}\n data-testid={dataTestId}\n ref={ref}\n style={rootStyle}>\n <div className={cx(classes.inner, layoutRegionRecipe({padding}))}>\n {isCustom ? (\n children\n ) : (\n <>\n {isReactNode(startContent) ? (\n <div className={classes.start}>{startContent}</div>\n ) : null}\n {hasActions ? (\n <div className={classes.actions}>\n {secondaryButton}\n {primaryButton}\n </div>\n ) : null}\n </>\n )}\n </div>\n </footer>\n );\n}\n\nLayoutFooter.displayName = 'LayoutFooter';\n","import {X} from 'lucide-react';\nimport type {CSSProperties, ReactNode, Ref} from 'react';\nimport {Button} from 'components/Button';\nimport {useDialogContext} from 'components/Dialog/DialogContext';\nimport {\n layoutHeaderRecipe,\n layoutRegionRecipe,\n} from 'components/Layout/Layout.recipe';\nimport {useLayoutDivider} from 'components/Layout/LayoutContext';\nimport {Heading, Text, type HeadingLevel} from 'components/Text';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport type {SpacingToken} from 'internal/spacingTokens';\n\n/**\n * Header landmark region within a Layout with a structured title,\n * optional subtitle, and start/end content slots.\n *\n * When rendered inside a Dialog, a close button is automatically\n * appended after `endContent`. The button calls `onOpenChange(false)`\n * on the parent Dialog and the title receives initial focus.\n */\nexport interface LayoutHeaderProps {\n /**\n * Cross-axis alignment of the start content, title, and end content within\n * the header row. Default is `start`.\n */\n align?: 'start' | 'center' | 'end';\n /**\n * Additional CSS class names applied to the header.\n */\n className?: string;\n /**\n * Test ID applied to the header.\n */\n 'data-testid'?: string;\n /**\n * Content rendered after the title area.\n */\n endContent?: ReactNode;\n /**\n * Fixed height for the header.\n */\n height?: number | string;\n /**\n * Accessible label for the header landmark.\n */\n label?: string;\n /**\n * Semantic heading level used for the title.\n * @default 4\n */\n level?: HeadingLevel;\n /**\n * Inner padding.\n */\n padding?: SpacingToken;\n /**\n * Ref forwarded to the header element.\n */\n ref?: Ref<HTMLElement>;\n /**\n * Content rendered before the title area.\n */\n startContent?: ReactNode;\n /**\n * Inline styles applied to the header.\n */\n style?: CSSProperties;\n /**\n * Supporting text displayed below the title.\n */\n subtitle?: string;\n /**\n * Primary header title.\n */\n title: string;\n}\n\n/**\n * Header landmark region within a Layout with a structured title,\n * optional subtitle, and start/end content slots.\n *\n * When rendered inside a Dialog, a close button is automatically\n * appended after `endContent`. The button calls `onOpenChange(false)`\n * on the parent Dialog and the title receives initial focus.\n */\nexport function LayoutHeader({\n align = 'start',\n className,\n 'data-testid': dataTestId,\n endContent,\n height,\n label,\n level = 4,\n padding = 4,\n ref,\n startContent,\n style,\n subtitle,\n title,\n}: LayoutHeaderProps): React.JSX.Element {\n const dividerContext = useLayoutDivider();\n const dialogContext = useDialogContext();\n const hasDivider = dividerContext?.hasDividers ?? false;\n const rootStyle: CSSProperties = {height, ...style};\n const classes = layoutHeaderRecipe({align, hasDivider});\n\n const closeButton =\n dialogContext != null ? (\n <Button\n className={classes.closeButton}\n icon={X}\n isIconOnly\n label=\"Close\"\n onClick={() => dialogContext.onOpenChange(false)}\n variant=\"ghost\"\n />\n ) : null;\n const hasEnd = isReactNode(endContent) || closeButton != null;\n\n return (\n <header\n aria-label={label}\n className={cx(classes.root, className)}\n data-testid={dataTestId}\n ref={ref}\n style={rootStyle}>\n <div className={cx(classes.inner, layoutRegionRecipe({padding}))}>\n {isReactNode(startContent) ? (\n <div className={classes.actions}>{startContent}</div>\n ) : null}\n <div className={classes.titleArea}>\n <Heading\n data-dialog-autofocus={dialogContext != null ? 'true' : undefined}\n id={dialogContext?.titleId}\n level={level}\n tabIndex={dialogContext != null ? -1 : undefined}>\n {title}\n </Heading>\n {subtitle != null ? (\n <Text as=\"p\" color=\"secondary\" type=\"supporting\">\n {subtitle}\n </Text>\n ) : null}\n </div>\n {hasEnd ? (\n <div className={classes.actions}>\n {endContent}\n {closeButton}\n </div>\n ) : null}\n </div>\n </header>\n );\n}\n\nLayoutHeader.displayName = 'LayoutHeader';\n","import type {ComponentPropsWithRef} from 'react';\nimport {\n layoutPanelRecipe,\n layoutRegionRecipe,\n} from 'components/Layout/Layout.recipe';\nimport {useLayoutArea, useLayoutDivider} from 'components/Layout/LayoutContext';\nimport {cx} from 'internal/cx';\nimport type {SpacingToken} from 'internal/spacingTokens';\n\n/**\n * Side panel region within a Layout. Placed in the start or end slot,\n * with optional dividers and scrolling.\n */\nexport interface LayoutPanelProps extends ComponentPropsWithRef<'div'> {\n /**\n * Test ID applied to the root element.\n */\n 'data-testid'?: string;\n /**\n * Whether the panel scrolls when it overflows.\n */\n isScrollable?: boolean;\n /**\n * Accessible label. Automatically sets role=\"region\" when provided.\n */\n label?: string;\n /**\n * Inner padding.\n */\n padding?: SpacingToken;\n /**\n * Fixed width for the panel.\n */\n width?: number | string;\n}\n\n/**\n * Side panel region within a Layout. Placed in the start or end slot,\n * with optional dividers and scrolling.\n */\nexport function LayoutPanel({\n children,\n className,\n 'data-testid': dataTestId,\n isScrollable = true,\n label,\n padding = 4,\n ref,\n role,\n style,\n width,\n ...rest\n}: LayoutPanelProps): React.JSX.Element {\n const area = useLayoutArea();\n const dividerContext = useLayoutDivider();\n const hasDivider = dividerContext?.hasDividers ?? false;\n const divider =\n hasDivider && (area === 'start' || area === 'end') ? area : 'none';\n\n return (\n <div\n {...rest}\n aria-label={label}\n className={cx(\n layoutPanelRecipe({isScrollable, divider}),\n layoutRegionRecipe({padding}),\n className,\n )}\n data-testid={dataTestId}\n ref={ref}\n role={role ?? (label != null ? 'region' : undefined)}\n style={{width, ...style}}>\n {children}\n </div>\n );\n}\n\nLayoutPanel.displayName = 'LayoutPanel';\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/Layout/Layout.recipe.ts","../src/components/Layout/LayoutContext.ts","../src/components/Layout/Layout.tsx","../src/components/Layout/LayoutContent.tsx","../src/components/Layout/LayoutFooter.tsx","../src/components/Layout/LayoutHeader.tsx","../src/components/Layout/LayoutPanel.tsx"],"names":["sva","cva","createContext","use","isReactNode","jsx","useMemo","jsxs","cx","Fragment","useDialogContext","Button","X","Heading","Text"],"mappings":"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","file":"chunk-3PHJWXBO.cjs","sourcesContent":["import {cva, sva, type RecipeVariantProps} from 'styled-system/css';\n\nconst paddingVariants = {\n 0: {p: '0'},\n 0.5: {p: '0.5'},\n 1: {p: '1'},\n 1.5: {p: '1.5'},\n 2: {p: '2'},\n 3: {p: '3'},\n 4: {p: '4'},\n 5: {p: '5'},\n 6: {p: '6'},\n 8: {p: '8'},\n 10: {p: '10'},\n};\n\n// Same padding scale as `paddingVariants`, scoped to the `root` slot so it can\n// be used as an `sva` variant on the Layout shell.\nconst rootPaddingVariants = {\n 0: {root: {p: '0'}},\n 0.5: {root: {p: '0.5'}},\n 1: {root: {p: '1'}},\n 1.5: {root: {p: '1.5'}},\n 2: {root: {p: '2'}},\n 3: {root: {p: '3'}},\n 4: {root: {p: '4'}},\n 5: {root: {p: '5'}},\n 6: {root: {p: '6'}},\n 8: {root: {p: '8'}},\n 10: {root: {p: '10'}},\n};\n\nexport const layoutRecipe = sva({\n slots: ['root', 'middle', 'content'],\n base: {\n root: {\n display: 'flex',\n flexDirection: 'column',\n minW: 0,\n },\n middle: {\n display: 'flex',\n flex: 1,\n minH: 0,\n minW: 0,\n },\n content: {\n flex: 1,\n minW: 0,\n display: 'flex',\n flexDirection: 'column',\n },\n },\n variants: {\n height: {\n fill: {\n root: {h: '100%', minH: 0},\n },\n auto: {\n root: {minH: '100%'},\n },\n },\n padding: rootPaddingVariants,\n },\n defaultVariants: {\n height: 'fill',\n },\n});\n\nexport const layoutPanelRecipe = cva({\n base: {\n flexShrink: 0,\n overflow: 'clip',\n },\n variants: {\n isScrollable: {\n true: {overflow: 'auto'},\n },\n divider: {\n none: {},\n // Border on the edge adjacent to the content area: inline-end for a start\n // panel, inline-start for an end panel.\n start: {\n borderInlineEndWidth: 'default',\n borderInlineEndStyle: 'solid',\n borderInlineEndColor: 'border',\n },\n end: {\n borderInlineStartWidth: 'default',\n borderInlineStartStyle: 'solid',\n borderInlineStartColor: 'border',\n },\n },\n },\n defaultVariants: {\n isScrollable: true,\n divider: 'none',\n },\n});\n\nexport const layoutContentRecipe = cva({\n base: {\n flex: 1,\n minH: 0,\n minW: 0,\n overflow: 'clip',\n },\n variants: {\n isScrollable: {\n true: {overflow: 'auto'},\n },\n },\n defaultVariants: {\n isScrollable: true,\n },\n});\n\nexport const layoutHeaderRecipe = sva({\n slots: ['root', 'inner', 'titleArea', 'actions', 'closeButton'],\n base: {\n root: {\n flexShrink: 0,\n },\n inner: {\n display: 'flex',\n justifyContent: 'space-between',\n gap: '3',\n },\n titleArea: {\n flex: 1,\n minW: 0,\n '& > :focus': {\n outline: 'none',\n },\n },\n actions: {\n display: 'flex',\n alignItems: 'center',\n gap: '2',\n flexShrink: 0,\n },\n closeButton: {\n marginInlineEnd: '-2',\n marginBlockStart: '-2',\n },\n },\n variants: {\n // Cross-axis alignment of the start/title/end slots within the header row.\n align: {\n start: {inner: {alignItems: 'flex-start'}},\n center: {inner: {alignItems: 'center'}},\n end: {inner: {alignItems: 'flex-end'}},\n },\n hasDivider: {\n true: {\n root: {\n borderBlockEndWidth: 'default',\n borderBlockEndStyle: 'solid',\n borderBlockEndColor: 'border',\n },\n },\n },\n },\n defaultVariants: {\n align: 'start',\n hasDivider: false,\n },\n});\n\nexport const layoutFooterRecipe = sva({\n slots: ['root', 'inner', 'start', 'actions'],\n base: {\n root: {\n flexShrink: 0,\n },\n start: {\n display: 'flex',\n alignItems: 'center',\n gap: '2',\n flex: 1,\n minW: 0,\n marginInlineEnd: 'auto',\n },\n actions: {\n display: 'flex',\n alignItems: 'center',\n gap: '2',\n flexShrink: 0,\n },\n },\n variants: {\n hasDivider: {\n true: {\n root: {\n borderBlockStartWidth: 'default',\n borderBlockStartStyle: 'solid',\n borderBlockStartColor: 'border',\n },\n },\n },\n // Custom footers render arbitrary children, so the inner element drops the\n // action-row flex layout.\n isCustom: {\n false: {\n inner: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: '3',\n },\n },\n true: {},\n },\n },\n defaultVariants: {\n hasDivider: false,\n isCustom: false,\n },\n});\n\nexport const layoutRegionRecipe = cva({\n variants: {\n padding: paddingVariants,\n },\n defaultVariants: {\n padding: 4,\n },\n});\n\nexport type LayoutVariants = RecipeVariantProps<typeof layoutRecipe>;\nexport type LayoutRegionVariants = RecipeVariantProps<\n typeof layoutRegionRecipe\n>;\n","'use client';\n\nimport {createContext, use} from 'react';\n\nexport type LayoutArea = 'header' | 'content' | 'start' | 'end' | 'footer';\n\nexport interface LayoutDividerContextValue {\n hasDividers: boolean;\n}\n\nexport const LayoutAreaContext = createContext<LayoutArea>('content');\nLayoutAreaContext.displayName = 'LayoutAreaContext';\nexport const LayoutDividerContext =\n createContext<LayoutDividerContextValue | null>(null);\nLayoutDividerContext.displayName = 'LayoutDividerContext';\n\nexport function useLayoutArea(): LayoutArea {\n return use(LayoutAreaContext);\n}\n\nexport function useLayoutDivider(): LayoutDividerContextValue | null {\n return use(LayoutDividerContext);\n}\n","'use client';\n\nimport type {CSSProperties, ReactNode, Ref} from 'react';\nimport {useMemo} from 'react';\nimport {layoutRecipe} from 'components/Layout/Layout.recipe';\nimport {\n LayoutAreaContext,\n LayoutDividerContext,\n type LayoutArea,\n} from 'components/Layout/LayoutContext';\nimport type {LayoutHeight} from 'components/Layout/types';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport type {SpacingToken} from 'internal/spacingTokens';\n\n/**\n * Shell with header, side panels, content, and footer slots.\n */\nexport interface LayoutProps {\n /**\n * Additional CSS class names applied to the root element.\n */\n className?: string;\n /**\n * Main content slot.\n */\n content?: ReactNode;\n /**\n * Test ID applied to the root element.\n */\n 'data-testid'?: string;\n /**\n * End panel slot.\n */\n end?: ReactNode;\n /**\n * Footer slot.\n */\n footer?: ReactNode;\n /**\n * Whether child layout regions should show dividers.\n */\n hasDividers?: boolean;\n /**\n * Header slot.\n */\n header?: ReactNode;\n /**\n * Layout height behavior. Default is `fill`.\n */\n height?: LayoutHeight;\n /**\n * Outer padding for layout edges.\n */\n padding?: SpacingToken;\n /**\n * Ref forwarded to the root element.\n */\n ref?: Ref<HTMLDivElement>;\n /**\n * Start panel slot.\n */\n start?: ReactNode;\n /**\n * Inline styles applied to the root element.\n */\n style?: CSSProperties;\n}\n\nfunction AreaProvider({\n area,\n children,\n}: {\n area: LayoutArea;\n children?: ReactNode;\n}): React.JSX.Element | null {\n if (!isReactNode(children)) {\n return null;\n }\n\n return <LayoutAreaContext value={area}>{children}</LayoutAreaContext>;\n}\n\nexport function Layout({\n className,\n content,\n 'data-testid': dataTestId,\n hasDividers = true,\n end,\n footer,\n header,\n height = 'fill',\n padding,\n ref,\n start,\n style,\n}: LayoutProps): React.JSX.Element {\n const dividerValue = useMemo(() => ({hasDividers}), [hasDividers]);\n const classes = layoutRecipe({height, padding});\n\n return (\n <LayoutDividerContext value={dividerValue}>\n <div\n className={cx(classes.root, className)}\n data-testid={dataTestId}\n ref={ref}\n style={style}>\n <AreaProvider area=\"header\">{header}</AreaProvider>\n <div className={classes.middle}>\n <AreaProvider area=\"start\">{start}</AreaProvider>\n <div className={classes.content}>\n <AreaProvider area=\"content\">{content}</AreaProvider>\n </div>\n <AreaProvider area=\"end\">{end}</AreaProvider>\n </div>\n <AreaProvider area=\"footer\">{footer}</AreaProvider>\n </div>\n </LayoutDividerContext>\n );\n}\n\nLayout.displayName = 'Layout';\n","import type {ComponentPropsWithRef, ElementType} from 'react';\nimport {\n layoutContentRecipe,\n layoutRegionRecipe,\n} from 'components/Layout/Layout.recipe';\nimport {cx} from 'internal/cx';\nimport type {SpacingToken} from 'internal/spacingTokens';\n\n/**\n * Scrollable main content area within a Layout. Fills the remaining space\n * between panels and stretches to fill the available height.\n */\nexport interface LayoutContentProps extends ComponentPropsWithRef<'div'> {\n /**\n * HTML element to render. Default is `div`.\n */\n as?: ElementType;\n /**\n * Test ID applied to the root element.\n */\n 'data-testid'?: string;\n /**\n * Whether the content area scrolls when it overflows.\n */\n isScrollable?: boolean;\n /**\n * Accessible label. Automatically sets role=\"region\" when provided.\n */\n label?: string;\n /**\n * Inner padding.\n */\n padding?: SpacingToken;\n}\n\n/**\n * Scrollable main content area within a Layout. Fills the remaining space\n * between panels and stretches to fill the available height.\n */\nexport function LayoutContent({\n as: Element = 'div',\n children,\n className,\n 'data-testid': dataTestId,\n isScrollable = true,\n label,\n padding = 4,\n ref,\n role,\n style,\n ...rest\n}: LayoutContentProps): React.JSX.Element {\n return (\n <Element\n {...rest}\n aria-label={label}\n className={cx(\n layoutContentRecipe({isScrollable}),\n layoutRegionRecipe({padding}),\n className,\n )}\n data-testid={dataTestId}\n ref={ref}\n role={role ?? (label != null ? 'region' : undefined)}\n style={style}>\n {children}\n </Element>\n );\n}\n\nLayoutContent.displayName = 'LayoutContent';\n","'use client';\n\nimport type {CSSProperties, ReactNode, Ref} from 'react';\nimport {\n layoutFooterRecipe,\n layoutRegionRecipe,\n} from 'components/Layout/Layout.recipe';\nimport {useLayoutDivider} from 'components/Layout/LayoutContext';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport type {SpacingToken} from 'internal/spacingTokens';\n\ninterface LayoutFooterBaseProps {\n /**\n * Additional CSS class names applied to the footer.\n */\n className?: string;\n /**\n * Test ID applied to the root element.\n */\n 'data-testid'?: string;\n /**\n * Fixed height for the footer.\n */\n height?: number | string;\n /**\n * Accessible label for the footer landmark.\n */\n label?: string;\n /**\n * Inner padding.\n */\n padding?: SpacingToken;\n /**\n * Ref forwarded to the footer element.\n */\n ref?: Ref<HTMLElement>;\n /**\n * Inline styles applied to the footer.\n */\n style?: CSSProperties;\n}\n\ninterface LayoutFooterCustomProps extends LayoutFooterBaseProps {\n /**\n * Custom footer content rendered inside the footer shell.\n */\n children: ReactNode;\n primaryButton?: never;\n secondaryButton?: never;\n startContent?: never;\n}\n\ninterface LayoutFooterActionsProps extends LayoutFooterBaseProps {\n children?: never;\n /**\n * Primary action button, rendered rightmost.\n */\n primaryButton?: ReactNode;\n /**\n * Secondary action button, rendered left of the primary button.\n */\n secondaryButton?: ReactNode;\n /**\n * Content rendered at the start (left) of the footer.\n */\n startContent?: ReactNode;\n}\n\n/**\n * Footer landmark region within a Layout. Use action slots for the standard\n * footer layout, or children for a custom footer inside the same shell.\n */\nexport type LayoutFooterProps =\n | LayoutFooterActionsProps\n | LayoutFooterCustomProps;\n\n/**\n * Footer landmark region within a Layout.\n */\nexport function LayoutFooter({\n children,\n className,\n 'data-testid': dataTestId,\n height,\n label,\n padding = 4,\n primaryButton,\n ref,\n secondaryButton,\n startContent,\n style,\n}: LayoutFooterProps): React.JSX.Element {\n const dividerContext = useLayoutDivider();\n const hasDivider = dividerContext?.hasDividers ?? false;\n const rootStyle: CSSProperties = {height, ...style};\n const isCustom = isReactNode(children);\n const hasActions = isReactNode(primaryButton) || isReactNode(secondaryButton);\n const classes = layoutFooterRecipe({hasDivider, isCustom});\n\n return (\n <footer\n aria-label={label}\n className={cx(classes.root, className)}\n data-divider={hasDivider || undefined}\n data-testid={dataTestId}\n ref={ref}\n style={rootStyle}>\n <div className={cx(classes.inner, layoutRegionRecipe({padding}))}>\n {isCustom ? (\n children\n ) : (\n <>\n {isReactNode(startContent) ? (\n <div className={classes.start}>{startContent}</div>\n ) : null}\n {hasActions ? (\n <div className={classes.actions}>\n {secondaryButton}\n {primaryButton}\n </div>\n ) : null}\n </>\n )}\n </div>\n </footer>\n );\n}\n\nLayoutFooter.displayName = 'LayoutFooter';\n","'use client';\n\nimport {X} from 'lucide-react';\nimport type {CSSProperties, ReactNode, Ref} from 'react';\nimport {Button} from 'components/Button';\nimport {useDialogContext} from 'components/Dialog/DialogContext';\nimport {\n layoutHeaderRecipe,\n layoutRegionRecipe,\n} from 'components/Layout/Layout.recipe';\nimport {useLayoutDivider} from 'components/Layout/LayoutContext';\nimport {Heading, Text, type HeadingLevel} from 'components/Text';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport type {SpacingToken} from 'internal/spacingTokens';\n\n/**\n * Header landmark region within a Layout with a structured title,\n * optional subtitle, and start/end content slots.\n *\n * When rendered inside a Dialog, a close button is automatically\n * appended after `endContent`. The button calls `onOpenChange(false)`\n * on the parent Dialog and the title receives initial focus.\n */\nexport interface LayoutHeaderProps {\n /**\n * Cross-axis alignment of the start content, title, and end content within\n * the header row. Default is `start`.\n */\n align?: 'start' | 'center' | 'end';\n /**\n * Additional CSS class names applied to the header.\n */\n className?: string;\n /**\n * Test ID applied to the header.\n */\n 'data-testid'?: string;\n /**\n * Content rendered after the title area.\n */\n endContent?: ReactNode;\n /**\n * Fixed height for the header.\n */\n height?: number | string;\n /**\n * Accessible label for the header landmark.\n */\n label?: string;\n /**\n * Semantic heading level used for the title.\n * @default 4\n */\n level?: HeadingLevel;\n /**\n * Inner padding.\n */\n padding?: SpacingToken;\n /**\n * Ref forwarded to the header element.\n */\n ref?: Ref<HTMLElement>;\n /**\n * Content rendered before the title area.\n */\n startContent?: ReactNode;\n /**\n * Inline styles applied to the header.\n */\n style?: CSSProperties;\n /**\n * Supporting text displayed below the title.\n */\n subtitle?: string;\n /**\n * Primary header title.\n */\n title: string;\n}\n\n/**\n * Header landmark region within a Layout with a structured title,\n * optional subtitle, and start/end content slots.\n *\n * When rendered inside a Dialog, a close button is automatically\n * appended after `endContent`. The button calls `onOpenChange(false)`\n * on the parent Dialog and the title receives initial focus.\n */\nexport function LayoutHeader({\n align = 'start',\n className,\n 'data-testid': dataTestId,\n endContent,\n height,\n label,\n level = 4,\n padding = 4,\n ref,\n startContent,\n style,\n subtitle,\n title,\n}: LayoutHeaderProps): React.JSX.Element {\n const dividerContext = useLayoutDivider();\n const dialogContext = useDialogContext();\n const hasDivider = dividerContext?.hasDividers ?? false;\n const rootStyle: CSSProperties = {height, ...style};\n const classes = layoutHeaderRecipe({align, hasDivider});\n\n const closeButton =\n dialogContext != null ? (\n <Button\n className={classes.closeButton}\n icon={X}\n isIconOnly\n label=\"Close\"\n onClick={() => dialogContext.onOpenChange(false)}\n variant=\"ghost\"\n />\n ) : null;\n const hasEnd = isReactNode(endContent) || closeButton != null;\n\n return (\n <header\n aria-label={label}\n className={cx(classes.root, className)}\n data-testid={dataTestId}\n ref={ref}\n style={rootStyle}>\n <div className={cx(classes.inner, layoutRegionRecipe({padding}))}>\n {isReactNode(startContent) ? (\n <div className={classes.actions}>{startContent}</div>\n ) : null}\n <div className={classes.titleArea}>\n <Heading\n data-dialog-autofocus={dialogContext != null ? 'true' : undefined}\n id={dialogContext?.titleId}\n level={level}\n tabIndex={dialogContext != null ? -1 : undefined}>\n {title}\n </Heading>\n {subtitle != null ? (\n <Text as=\"p\" color=\"secondary\" type=\"supporting\">\n {subtitle}\n </Text>\n ) : null}\n </div>\n {hasEnd ? (\n <div className={classes.actions}>\n {endContent}\n {closeButton}\n </div>\n ) : null}\n </div>\n </header>\n );\n}\n\nLayoutHeader.displayName = 'LayoutHeader';\n","'use client';\n\nimport type {ComponentPropsWithRef} from 'react';\nimport {\n layoutPanelRecipe,\n layoutRegionRecipe,\n} from 'components/Layout/Layout.recipe';\nimport {useLayoutArea, useLayoutDivider} from 'components/Layout/LayoutContext';\nimport {cx} from 'internal/cx';\nimport type {SpacingToken} from 'internal/spacingTokens';\n\n/**\n * Side panel region within a Layout. Placed in the start or end slot,\n * with optional dividers and scrolling.\n */\nexport interface LayoutPanelProps extends ComponentPropsWithRef<'div'> {\n /**\n * Test ID applied to the root element.\n */\n 'data-testid'?: string;\n /**\n * Whether the panel scrolls when it overflows.\n */\n isScrollable?: boolean;\n /**\n * Accessible label. Automatically sets role=\"region\" when provided.\n */\n label?: string;\n /**\n * Inner padding.\n */\n padding?: SpacingToken;\n /**\n * Fixed width for the panel.\n */\n width?: number | string;\n}\n\n/**\n * Side panel region within a Layout. Placed in the start or end slot,\n * with optional dividers and scrolling.\n */\nexport function LayoutPanel({\n children,\n className,\n 'data-testid': dataTestId,\n isScrollable = true,\n label,\n padding = 4,\n ref,\n role,\n style,\n width,\n ...rest\n}: LayoutPanelProps): React.JSX.Element {\n const area = useLayoutArea();\n const dividerContext = useLayoutDivider();\n const hasDivider = dividerContext?.hasDividers ?? false;\n const divider =\n hasDivider && (area === 'start' || area === 'end') ? area : 'none';\n\n return (\n <div\n {...rest}\n aria-label={label}\n className={cx(\n layoutPanelRecipe({isScrollable, divider}),\n layoutRegionRecipe({padding}),\n className,\n )}\n data-testid={dataTestId}\n ref={ref}\n role={role ?? (label != null ? 'region' : undefined)}\n style={{width, ...style}}>\n {children}\n </div>\n );\n}\n\nLayoutPanel.displayName = 'LayoutPanel';\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
'use client';
|
|
1
2
|
'use strict';
|
|
2
3
|
|
|
3
|
-
var
|
|
4
|
+
var chunkONRLHP46_cjs = require('./chunk-ONRLHP46.cjs');
|
|
4
5
|
var chunkJRBQKFVO_cjs = require('./chunk-JRBQKFVO.cjs');
|
|
5
6
|
var chunkRU6JG3FS_cjs = require('./chunk-RU6JG3FS.cjs');
|
|
6
7
|
var chunkSPDVNY2Z_cjs = require('./chunk-SPDVNY2Z.cjs');
|
|
@@ -25,7 +26,7 @@ function AvatarGroup({
|
|
|
25
26
|
size = "small",
|
|
26
27
|
style
|
|
27
28
|
}) {
|
|
28
|
-
const numericSize =
|
|
29
|
+
const numericSize = chunkONRLHP46_cjs.resolveAvatarSize(size);
|
|
29
30
|
const overlap = Math.round(numericSize * OVERLAP_RATIO);
|
|
30
31
|
const contextValue = react.useMemo(
|
|
31
32
|
() => ({ numericSize, overlap, size }),
|
|
@@ -35,7 +36,7 @@ function AvatarGroup({
|
|
|
35
36
|
"--avatar-group-overlap": `${-overlap}px`,
|
|
36
37
|
...style
|
|
37
38
|
};
|
|
38
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
39
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkONRLHP46_cjs.AvatarGroupContext, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
39
40
|
"div",
|
|
40
41
|
{
|
|
41
42
|
"aria-label": ariaLabel,
|
|
@@ -92,7 +93,7 @@ function AvatarGroupOverflow({
|
|
|
92
93
|
ref,
|
|
93
94
|
style
|
|
94
95
|
}) {
|
|
95
|
-
const group =
|
|
96
|
+
const group = chunkONRLHP46_cjs.useAvatarGroup();
|
|
96
97
|
if (count <= 0) {
|
|
97
98
|
return null;
|
|
98
99
|
}
|
|
@@ -137,5 +138,5 @@ AvatarGroupOverflow.displayName = "AvatarGroupOverflow";
|
|
|
137
138
|
|
|
138
139
|
exports.AvatarGroup = AvatarGroup;
|
|
139
140
|
exports.AvatarGroupOverflow = AvatarGroupOverflow;
|
|
140
|
-
//# sourceMappingURL=chunk-
|
|
141
|
-
//# sourceMappingURL=chunk-
|
|
141
|
+
//# sourceMappingURL=chunk-3USKXV4M.cjs.map
|
|
142
|
+
//# sourceMappingURL=chunk-3USKXV4M.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/AvatarGroup/AvatarGroup.recipe.ts","../src/components/AvatarGroup/AvatarGroup.tsx","../src/components/AvatarGroup/AvatarGroupOverflow.tsx"],"names":["cva","resolveAvatarSize","useMemo","jsx","AvatarGroupContext","cx","css","useAvatarGroup"],"mappings":"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","file":"chunk-3USKXV4M.cjs","sourcesContent":["import {cva} from 'styled-system/css';\n\nexport const avatarGroupRecipe = cva({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n verticalAlign: 'middle',\n },\n});\n","'use client';\n\nimport type {CSSProperties, ReactNode, Ref} from 'react';\nimport {useMemo} from 'react';\nimport {resolveAvatarSize, type AvatarSize} from 'components/Avatar';\nimport {avatarGroupRecipe} from 'components/AvatarGroup/AvatarGroup.recipe';\nimport {AvatarGroupContext} from 'components/AvatarGroup/AvatarGroupContext';\nimport {cx} from 'internal/cx';\n\nconst OVERLAP_RATIO = 0.25;\n\n/**\n * Displays a stacked group of Avatars with shared size and overlap.\n */\nexport interface AvatarGroupProps {\n /**\n * Accessible label for the group. Default is \"Avatars\".\n */\n 'aria-label'?: string;\n /**\n * Avatar and AvatarGroupOverflow children.\n */\n children: ReactNode;\n /**\n * Additional CSS class names applied to the root element.\n */\n className?: string;\n /**\n * Test ID applied to the root element.\n */\n 'data-testid'?: string;\n /**\n * Ref forwarded to the root element.\n */\n ref?: Ref<HTMLDivElement>;\n /**\n * Size applied to child Avatars. Individual Avatar size props are ignored\n * while inside the group so the stack remains visually consistent.\n */\n size?: AvatarSize;\n /**\n * Inline styles applied to the root element.\n */\n style?: CSSProperties;\n}\n\ntype AvatarGroupStyle = CSSProperties & {\n '--avatar-group-overlap': string;\n};\n\n/**\n * Displays a stacked group of Avatars with shared size and overlap.\n */\nexport function AvatarGroup({\n 'aria-label': ariaLabel = 'Avatars',\n children,\n className,\n 'data-testid': dataTestId,\n ref,\n size = 'small',\n style,\n}: AvatarGroupProps): React.JSX.Element {\n const numericSize = resolveAvatarSize(size);\n const overlap = Math.round(numericSize * OVERLAP_RATIO);\n const contextValue = useMemo(\n () => ({numericSize, overlap, size}),\n [numericSize, overlap, size],\n );\n const rootStyle: AvatarGroupStyle = {\n '--avatar-group-overlap': `${-overlap}px`,\n ...style,\n };\n\n return (\n <AvatarGroupContext value={contextValue}>\n <div\n aria-label={ariaLabel}\n className={cx(avatarGroupRecipe(), className)}\n data-testid={dataTestId}\n ref={ref}\n role=\"group\"\n style={rootStyle}>\n {children}\n </div>\n </AvatarGroupContext>\n );\n}\n\nAvatarGroup.displayName = 'AvatarGroup';\n","'use client';\n\nimport type {CSSProperties, MouseEventHandler, ReactNode, Ref} from 'react';\nimport {useAvatarGroup} from 'components/AvatarGroup/AvatarGroupContext';\nimport {cx} from 'internal/cx';\nimport {css} from 'styled-system/css';\n\nconst DEFAULT_SIZE = 36;\nconst BORDER_WIDTH = 2;\nconst OVERFLOW_FONT_RATIO = 0.35;\n\n/**\n * Overflow indicator for AvatarGroup.\n */\nexport interface AvatarGroupOverflowProps {\n /**\n * Custom content rendered instead of the default \"+N\" text.\n */\n children?: ReactNode;\n /**\n * Additional CSS class names applied to the root element.\n */\n className?: string;\n /**\n * Number of hidden avatars represented by the overflow indicator.\n */\n count: number;\n /**\n * Test ID applied to the root element.\n */\n 'data-testid'?: string;\n /**\n * Click handler. When set, the overflow indicator renders as a button.\n */\n onClick?: MouseEventHandler<HTMLButtonElement>;\n /**\n * Ref forwarded to the root element.\n */\n ref?: Ref<HTMLElement>;\n /**\n * Inline styles applied to the root element.\n */\n style?: CSSProperties;\n}\n\nconst styles = {\n root: css({\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 'full',\n borderWidth: `${BORDER_WIDTH}px`,\n borderStyle: 'solid',\n borderColor: 'bg',\n boxSizing: 'content-box',\n bg: 'bg.subtle',\n color: 'fg.muted',\n fontFamily: 'body',\n fontWeight: 'medium',\n userSelect: 'none',\n '&:not(:first-child)': {\n marginInlineStart: 'var(--avatar-group-overlap)',\n },\n }),\n button: css({\n cursor: 'pointer',\n p: 0,\n _focusVisible: {\n outlineWidth: 'focus',\n outlineStyle: 'solid',\n outlineColor: 'primary',\n outlineOffset: 'focusOffset',\n },\n }),\n};\n\n/**\n * Overflow indicator showing the count of hidden avatars in an AvatarGroup.\n */\nexport function AvatarGroupOverflow({\n children,\n className,\n count,\n 'data-testid': dataTestId,\n onClick,\n ref,\n style,\n}: AvatarGroupOverflowProps): React.JSX.Element | null {\n const group = useAvatarGroup();\n\n if (count <= 0) {\n return null;\n }\n\n const numericSize = group?.numericSize ?? DEFAULT_SIZE;\n const label = `${count} more`;\n const content = children ?? `+${count}`;\n const rootStyle: CSSProperties = {\n width: numericSize,\n height: numericSize,\n fontSize: numericSize * OVERFLOW_FONT_RATIO,\n ...style,\n };\n\n if (onClick != null) {\n return (\n <button\n aria-label={label}\n className={cx(styles.root, styles.button, className)}\n data-testid={dataTestId}\n onClick={onClick}\n ref={ref as Ref<HTMLButtonElement>}\n style={rootStyle}\n type=\"button\">\n {content}\n </button>\n );\n }\n\n return (\n <span\n aria-label={label}\n className={cx(styles.root, className)}\n data-testid={dataTestId}\n ref={ref}\n role=\"status\"\n style={rootStyle}>\n {content}\n </span>\n );\n}\n\nAvatarGroupOverflow.displayName = 'AvatarGroupOverflow';\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
'use client';
|
|
1
2
|
import { VisuallyHidden } from './chunk-V2V5TTTL.js';
|
|
2
3
|
import { mergeRefs } from './chunk-SGLIDI6R.js';
|
|
3
4
|
import { Icon } from './chunk-IUW777WZ.js';
|
|
@@ -254,5 +255,5 @@ function SegmentedControlItem({
|
|
|
254
255
|
SegmentedControlItem.displayName = "SegmentedControlItem";
|
|
255
256
|
|
|
256
257
|
export { SegmentedControl, SegmentedControlItem };
|
|
257
|
-
//# sourceMappingURL=chunk-
|
|
258
|
-
//# sourceMappingURL=chunk-
|
|
258
|
+
//# sourceMappingURL=chunk-3UYPIVBY.js.map
|
|
259
|
+
//# sourceMappingURL=chunk-3UYPIVBY.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/SegmentedControl/SegmentedControl.recipe.ts","../src/components/SegmentedControl/SegmentedControlContext.ts","../src/components/SegmentedControl/SegmentedControl.tsx","../src/components/SegmentedControl/SegmentedControlItem.tsx"],"names":["jsx"],"mappings":"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","file":"chunk-S4IHNNA2.js","sourcesContent":["import {sva, type RecipeVariantProps} from 'styled-system/css';\n\nexport const segmentedControlRecipe = sva({\n slots: ['root', 'item', 'icon'],\n base: {\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '0.5',\n p: '0.5',\n bg: 'surface.gray',\n borderRadius: 'md',\n },\n item: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '1',\n borderWidth: 0,\n borderStyle: 'none',\n bg: 'transparent',\n color: 'fg.muted',\n cursor: 'pointer',\n fontFamily: 'body',\n fontWeight: 'medium',\n lineHeight: 'normal',\n transitionProperty: 'background-color, color, box-shadow',\n transitionDuration: 'fast',\n transitionTimingFunction: 'default',\n _hover: {\n bg: 'bg.subtle',\n },\n _focusVisible: {\n outlineWidth: 'focus',\n outlineStyle: 'solid',\n outlineColor: 'primary',\n outlineOffset: 'focusOffset',\n },\n },\n icon: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n },\n },\n variants: {\n size: {\n sm: {item: {h: '7', px: '2', borderRadius: 'sm', fontSize: 'sm'}},\n md: {item: {h: '9', px: '3', borderRadius: 'sm', fontSize: 'sm'}},\n lg: {item: {h: '11', px: '3', borderRadius: 'md', fontSize: 'md'}},\n },\n layout: {\n hug: {},\n fill: {\n root: {display: 'flex', w: 'full'},\n item: {flex: 1},\n },\n },\n isSelected: {\n true: {\n item: {\n bg: 'bg',\n color: 'fg',\n fontWeight: 'semibold',\n boxShadow: 'sm',\n _hover: {\n bg: 'bg',\n },\n },\n },\n false: {},\n },\n isDisabled: {\n true: {\n root: {\n opacity: 0.5,\n pointerEvents: 'none',\n },\n item: {\n color: 'fg.disabled',\n cursor: 'default',\n _hover: {\n bg: 'transparent',\n },\n },\n },\n false: {},\n },\n },\n defaultVariants: {\n size: 'md',\n layout: 'hug',\n isSelected: false,\n isDisabled: false,\n },\n});\n\nexport type SegmentedControlVariants = RecipeVariantProps<\n typeof segmentedControlRecipe\n>;\n","import {createContext, use} from 'react';\n\nexport type SegmentedControlLayout = 'fill' | 'hug';\nexport type SegmentedControlSize = 'lg' | 'md' | 'sm';\n\nexport interface SegmentedControlContextValue {\n isDisabled: boolean;\n layout: SegmentedControlLayout;\n onChange: (value: string) => void;\n size: SegmentedControlSize;\n value: string;\n}\n\nexport const SegmentedControlContext =\n createContext<SegmentedControlContextValue | null>(null);\n\nSegmentedControlContext.displayName = 'SegmentedControlContext';\n\nexport function useSegmentedControlContext(): SegmentedControlContextValue {\n const context = use(SegmentedControlContext);\n if (context == null) {\n throw new Error(\n 'SegmentedControlItem must be used within a SegmentedControl.',\n );\n }\n return context;\n}\n","import {\n useCallback,\n useMemo,\n useRef,\n type CSSProperties,\n type KeyboardEvent,\n type ReactNode,\n type Ref,\n} from 'react';\nimport {segmentedControlRecipe} from 'components/SegmentedControl/SegmentedControl.recipe';\nimport {\n SegmentedControlContext,\n type SegmentedControlLayout,\n type SegmentedControlSize,\n} from 'components/SegmentedControl/SegmentedControlContext';\nimport {cx} from 'internal/cx';\nimport {mergeRefs} from 'internal/mergeRefs';\n\nexport interface SegmentedControlProps<TValue extends string = string> {\n /**\n * SegmentedControlItem children.\n */\n children: ReactNode;\n /**\n * Additional CSS class names applied to the root element.\n */\n className?: string;\n /**\n * Test ID applied to the root element.\n */\n 'data-testid'?: string;\n /**\n * Whether the entire control is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Accessible label for the radio group.\n */\n label: string;\n /**\n * Segment layout mode.\n * @default 'hug'\n */\n layout?: SegmentedControlLayout;\n /**\n * Called when a segment is selected.\n */\n onChange: (value: TValue) => void;\n /**\n * Ref forwarded to the root element.\n */\n ref?: Ref<HTMLDivElement>;\n /**\n * Control size.\n * @default 'md'\n */\n size?: SegmentedControlSize;\n /**\n * Inline styles applied to the root element.\n */\n style?: CSSProperties;\n /**\n * Current selected value.\n */\n value: TValue;\n}\n\n/**\n * Segmented toggle control for selecting one option from a small set.\n *\n * Rendered as a radio group (`role=\"radiogroup\"`), so reach for it when picking\n * a value — filters, settings, or view modes whose content you render yourself.\n * If selecting an option should show or hide associated content panels, use\n * {@link Tabs} instead.\n */\nexport function SegmentedControl<TValue extends string = string>({\n children,\n className,\n 'data-testid': dataTestId,\n isDisabled = false,\n label,\n layout = 'hug',\n onChange,\n ref,\n size = 'md',\n style,\n value,\n}: SegmentedControlProps<TValue>): React.JSX.Element {\n const containerRef = useRef<HTMLDivElement>(null);\n const handleChange = useCallback(\n (nextValue: string) => {\n onChange(nextValue as TValue);\n },\n [onChange],\n );\n const contextValue = useMemo(\n () => ({isDisabled, layout, onChange: handleChange, size, value}),\n [handleChange, isDisabled, layout, size, value],\n );\n const classes = segmentedControlRecipe({isDisabled, layout});\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (isDisabled) {\n return;\n }\n\n const container = containerRef.current;\n if (container == null) {\n return;\n }\n\n const items = Array.from(\n container.querySelectorAll<HTMLButtonElement>(\n '[role=\"radio\"]:not([aria-disabled=\"true\"])',\n ),\n );\n\n if (items.length === 0) {\n return;\n }\n\n const currentIndex = items.findIndex(\n item => item === document.activeElement,\n );\n let nextIndex: number;\n\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowDown':\n nextIndex =\n currentIndex === -1 ? 0 : (currentIndex + 1) % items.length;\n break;\n case 'ArrowLeft':\n case 'ArrowUp':\n nextIndex =\n currentIndex === -1\n ? items.length - 1\n : (currentIndex - 1 + items.length) % items.length;\n break;\n case 'Home':\n nextIndex = 0;\n break;\n case 'End':\n nextIndex = items.length - 1;\n break;\n default:\n return;\n }\n\n event.preventDefault();\n const nextItem = items[nextIndex];\n nextItem.focus();\n const nextValue = nextItem.dataset.value;\n if (nextValue != null) {\n handleChange(nextValue);\n }\n },\n [handleChange, isDisabled],\n );\n\n return (\n <SegmentedControlContext value={contextValue}>\n <div\n aria-disabled={isDisabled || undefined}\n aria-label={label}\n aria-orientation=\"horizontal\"\n className={cx(classes.root, className)}\n data-testid={dataTestId}\n onKeyDown={handleKeyDown}\n ref={mergeRefs(ref, containerRef)}\n role=\"radiogroup\"\n style={style}\n tabIndex={-1}>\n {children}\n </div>\n </SegmentedControlContext>\n );\n}\n\nSegmentedControl.displayName = 'SegmentedControl';\n","import type {CSSProperties, Ref} from 'react';\nimport {Icon, type IconComponent} from 'components/Icon';\nimport {segmentedControlRecipe} from 'components/SegmentedControl/SegmentedControl.recipe';\nimport {useSegmentedControlContext} from 'components/SegmentedControl/SegmentedControlContext';\nimport {VisuallyHidden} from 'internal/VisuallyHidden';\nimport {cx} from 'internal/cx';\n\nexport interface SegmentedControlItemProps<TValue extends string = string> {\n /**\n * Additional CSS class names applied to the segment.\n */\n className?: string;\n /**\n * Test ID applied to the segment.\n */\n 'data-testid'?: string;\n /**\n * Icon element displayed before the label.\n */\n icon?: IconComponent;\n /**\n * Whether this segment is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Whether to visually hide the label.\n * @default false\n */\n isLabelHidden?: boolean;\n /**\n * Accessible and visible label for the segment.\n */\n label: string;\n /**\n * Ref forwarded to the segment button.\n */\n ref?: Ref<HTMLButtonElement>;\n /**\n * Inline styles applied to the segment.\n */\n style?: CSSProperties;\n /**\n * Unique value represented by this segment.\n */\n value: TValue;\n}\n\n/**\n * Individual segment within a `SegmentedControl`.\n */\nexport function SegmentedControlItem<TValue extends string = string>({\n className,\n 'data-testid': dataTestId,\n icon,\n isDisabled = false,\n isLabelHidden = false,\n label,\n ref,\n style,\n value,\n}: SegmentedControlItemProps<TValue>): React.JSX.Element {\n const context = useSegmentedControlContext();\n const isSelected = context.value === value;\n const isItemDisabled = context.isDisabled || isDisabled;\n const classes = segmentedControlRecipe({\n size: context.size,\n layout: context.layout,\n isSelected,\n isDisabled: isItemDisabled,\n });\n\n return (\n <button\n aria-checked={isSelected}\n aria-disabled={isItemDisabled || undefined}\n aria-label={isLabelHidden ? label : undefined}\n className={cx(classes.item, className)}\n data-testid={dataTestId}\n data-value={value}\n onClick={() => {\n if (!isItemDisabled && !isSelected) {\n context.onChange(value);\n }\n }}\n ref={ref}\n role=\"radio\"\n style={style}\n tabIndex={isSelected ? 0 : -1}\n type=\"button\">\n {icon != null ? (\n <span className={classes.icon}>\n <Icon icon={icon} size={context.size} />\n </span>\n ) : null}\n {isLabelHidden ? <VisuallyHidden>{label}</VisuallyHidden> : label}\n </button>\n );\n}\n\nSegmentedControlItem.displayName = 'SegmentedControlItem';\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/SegmentedControl/SegmentedControl.recipe.ts","../src/components/SegmentedControl/SegmentedControlContext.ts","../src/components/SegmentedControl/SegmentedControl.tsx","../src/components/SegmentedControl/SegmentedControlItem.tsx"],"names":["jsx"],"mappings":"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","file":"chunk-3UYPIVBY.js","sourcesContent":["import {sva, type RecipeVariantProps} from 'styled-system/css';\n\nexport const segmentedControlRecipe = sva({\n slots: ['root', 'item', 'icon'],\n base: {\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '0.5',\n p: '0.5',\n bg: 'surface.gray',\n borderRadius: 'md',\n },\n item: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '1',\n borderWidth: 0,\n borderStyle: 'none',\n bg: 'transparent',\n color: 'fg.muted',\n cursor: 'pointer',\n fontFamily: 'body',\n fontWeight: 'medium',\n lineHeight: 'normal',\n transitionProperty: 'background-color, color, box-shadow',\n transitionDuration: 'fast',\n transitionTimingFunction: 'default',\n _hover: {\n bg: 'bg.subtle',\n },\n _focusVisible: {\n outlineWidth: 'focus',\n outlineStyle: 'solid',\n outlineColor: 'primary',\n outlineOffset: 'focusOffset',\n },\n },\n icon: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n },\n },\n variants: {\n size: {\n sm: {item: {h: '7', px: '2', borderRadius: 'sm', fontSize: 'sm'}},\n md: {item: {h: '9', px: '3', borderRadius: 'sm', fontSize: 'sm'}},\n lg: {item: {h: '11', px: '3', borderRadius: 'md', fontSize: 'md'}},\n },\n layout: {\n hug: {},\n fill: {\n root: {display: 'flex', w: 'full'},\n item: {flex: 1},\n },\n },\n isSelected: {\n true: {\n item: {\n bg: 'bg',\n color: 'fg',\n fontWeight: 'semibold',\n boxShadow: 'sm',\n _hover: {\n bg: 'bg',\n },\n },\n },\n false: {},\n },\n isDisabled: {\n true: {\n root: {\n opacity: 0.5,\n pointerEvents: 'none',\n },\n item: {\n color: 'fg.disabled',\n cursor: 'default',\n _hover: {\n bg: 'transparent',\n },\n },\n },\n false: {},\n },\n },\n defaultVariants: {\n size: 'md',\n layout: 'hug',\n isSelected: false,\n isDisabled: false,\n },\n});\n\nexport type SegmentedControlVariants = RecipeVariantProps<\n typeof segmentedControlRecipe\n>;\n","'use client';\n\nimport {createContext, use} from 'react';\n\nexport type SegmentedControlLayout = 'fill' | 'hug';\nexport type SegmentedControlSize = 'lg' | 'md' | 'sm';\n\nexport interface SegmentedControlContextValue {\n isDisabled: boolean;\n layout: SegmentedControlLayout;\n onChange: (value: string) => void;\n size: SegmentedControlSize;\n value: string;\n}\n\nexport const SegmentedControlContext =\n createContext<SegmentedControlContextValue | null>(null);\n\nSegmentedControlContext.displayName = 'SegmentedControlContext';\n\nexport function useSegmentedControlContext(): SegmentedControlContextValue {\n const context = use(SegmentedControlContext);\n if (context == null) {\n throw new Error(\n 'SegmentedControlItem must be used within a SegmentedControl.',\n );\n }\n return context;\n}\n","'use client';\n\nimport {\n useCallback,\n useMemo,\n useRef,\n type CSSProperties,\n type KeyboardEvent,\n type ReactNode,\n type Ref,\n} from 'react';\nimport {segmentedControlRecipe} from 'components/SegmentedControl/SegmentedControl.recipe';\nimport {\n SegmentedControlContext,\n type SegmentedControlLayout,\n type SegmentedControlSize,\n} from 'components/SegmentedControl/SegmentedControlContext';\nimport {cx} from 'internal/cx';\nimport {mergeRefs} from 'internal/mergeRefs';\n\nexport interface SegmentedControlProps<TValue extends string = string> {\n /**\n * SegmentedControlItem children.\n */\n children: ReactNode;\n /**\n * Additional CSS class names applied to the root element.\n */\n className?: string;\n /**\n * Test ID applied to the root element.\n */\n 'data-testid'?: string;\n /**\n * Whether the entire control is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Accessible label for the radio group.\n */\n label: string;\n /**\n * Segment layout mode.\n * @default 'hug'\n */\n layout?: SegmentedControlLayout;\n /**\n * Called when a segment is selected.\n */\n onChange: (value: TValue) => void;\n /**\n * Ref forwarded to the root element.\n */\n ref?: Ref<HTMLDivElement>;\n /**\n * Control size.\n * @default 'md'\n */\n size?: SegmentedControlSize;\n /**\n * Inline styles applied to the root element.\n */\n style?: CSSProperties;\n /**\n * Current selected value.\n */\n value: TValue;\n}\n\n/**\n * Segmented toggle control for selecting one option from a small set.\n *\n * Rendered as a radio group (`role=\"radiogroup\"`), so reach for it when picking\n * a value — filters, settings, or view modes whose content you render yourself.\n * If selecting an option should show or hide associated content panels, use\n * {@link Tabs} instead.\n */\nexport function SegmentedControl<TValue extends string = string>({\n children,\n className,\n 'data-testid': dataTestId,\n isDisabled = false,\n label,\n layout = 'hug',\n onChange,\n ref,\n size = 'md',\n style,\n value,\n}: SegmentedControlProps<TValue>): React.JSX.Element {\n const containerRef = useRef<HTMLDivElement>(null);\n const handleChange = useCallback(\n (nextValue: string) => {\n onChange(nextValue as TValue);\n },\n [onChange],\n );\n const contextValue = useMemo(\n () => ({isDisabled, layout, onChange: handleChange, size, value}),\n [handleChange, isDisabled, layout, size, value],\n );\n const classes = segmentedControlRecipe({isDisabled, layout});\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (isDisabled) {\n return;\n }\n\n const container = containerRef.current;\n if (container == null) {\n return;\n }\n\n const items = Array.from(\n container.querySelectorAll<HTMLButtonElement>(\n '[role=\"radio\"]:not([aria-disabled=\"true\"])',\n ),\n );\n\n if (items.length === 0) {\n return;\n }\n\n const currentIndex = items.findIndex(\n item => item === document.activeElement,\n );\n let nextIndex: number;\n\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowDown':\n nextIndex =\n currentIndex === -1 ? 0 : (currentIndex + 1) % items.length;\n break;\n case 'ArrowLeft':\n case 'ArrowUp':\n nextIndex =\n currentIndex === -1\n ? items.length - 1\n : (currentIndex - 1 + items.length) % items.length;\n break;\n case 'Home':\n nextIndex = 0;\n break;\n case 'End':\n nextIndex = items.length - 1;\n break;\n default:\n return;\n }\n\n event.preventDefault();\n const nextItem = items[nextIndex];\n nextItem.focus();\n const nextValue = nextItem.dataset.value;\n if (nextValue != null) {\n handleChange(nextValue);\n }\n },\n [handleChange, isDisabled],\n );\n\n return (\n <SegmentedControlContext value={contextValue}>\n <div\n aria-disabled={isDisabled || undefined}\n aria-label={label}\n aria-orientation=\"horizontal\"\n className={cx(classes.root, className)}\n data-testid={dataTestId}\n onKeyDown={handleKeyDown}\n ref={mergeRefs(ref, containerRef)}\n role=\"radiogroup\"\n style={style}\n tabIndex={-1}>\n {children}\n </div>\n </SegmentedControlContext>\n );\n}\n\nSegmentedControl.displayName = 'SegmentedControl';\n","'use client';\n\nimport type {CSSProperties, Ref} from 'react';\nimport {Icon, type IconComponent} from 'components/Icon';\nimport {segmentedControlRecipe} from 'components/SegmentedControl/SegmentedControl.recipe';\nimport {useSegmentedControlContext} from 'components/SegmentedControl/SegmentedControlContext';\nimport {VisuallyHidden} from 'internal/VisuallyHidden';\nimport {cx} from 'internal/cx';\n\nexport interface SegmentedControlItemProps<TValue extends string = string> {\n /**\n * Additional CSS class names applied to the segment.\n */\n className?: string;\n /**\n * Test ID applied to the segment.\n */\n 'data-testid'?: string;\n /**\n * Icon element displayed before the label.\n */\n icon?: IconComponent;\n /**\n * Whether this segment is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Whether to visually hide the label.\n * @default false\n */\n isLabelHidden?: boolean;\n /**\n * Accessible and visible label for the segment.\n */\n label: string;\n /**\n * Ref forwarded to the segment button.\n */\n ref?: Ref<HTMLButtonElement>;\n /**\n * Inline styles applied to the segment.\n */\n style?: CSSProperties;\n /**\n * Unique value represented by this segment.\n */\n value: TValue;\n}\n\n/**\n * Individual segment within a `SegmentedControl`.\n */\nexport function SegmentedControlItem<TValue extends string = string>({\n className,\n 'data-testid': dataTestId,\n icon,\n isDisabled = false,\n isLabelHidden = false,\n label,\n ref,\n style,\n value,\n}: SegmentedControlItemProps<TValue>): React.JSX.Element {\n const context = useSegmentedControlContext();\n const isSelected = context.value === value;\n const isItemDisabled = context.isDisabled || isDisabled;\n const classes = segmentedControlRecipe({\n size: context.size,\n layout: context.layout,\n isSelected,\n isDisabled: isItemDisabled,\n });\n\n return (\n <button\n aria-checked={isSelected}\n aria-disabled={isItemDisabled || undefined}\n aria-label={isLabelHidden ? label : undefined}\n className={cx(classes.item, className)}\n data-testid={dataTestId}\n data-value={value}\n onClick={() => {\n if (!isItemDisabled && !isSelected) {\n context.onChange(value);\n }\n }}\n ref={ref}\n role=\"radio\"\n style={style}\n tabIndex={isSelected ? 0 : -1}\n type=\"button\">\n {icon != null ? (\n <span className={classes.icon}>\n <Icon icon={icon} size={context.size} />\n </span>\n ) : null}\n {isLabelHidden ? <VisuallyHidden>{label}</VisuallyHidden> : label}\n </button>\n );\n}\n\nSegmentedControlItem.displayName = 'SegmentedControlItem';\n"]}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
'use client';
|
|
2
|
+
import { Item } from './chunk-CTXAQNQI.js';
|
|
2
3
|
import { getStatusMessageID, getDescribedBy } from './chunk-G6HS52US.js';
|
|
3
4
|
import { fieldRecipe } from './chunk-U7ALNPFJ.js';
|
|
4
|
-
import { Spinner } from './chunk-
|
|
5
|
+
import { Spinner } from './chunk-7SGBGPZW.js';
|
|
5
6
|
import { VisuallyHidden } from './chunk-V2V5TTTL.js';
|
|
6
|
-
import { Text } from './chunk-
|
|
7
|
-
import { Tooltip } from './chunk-
|
|
7
|
+
import { Text } from './chunk-KPAOAYDY.js';
|
|
8
|
+
import { Tooltip } from './chunk-FPKXEI3W.js';
|
|
8
9
|
import { mergeRefs } from './chunk-SGLIDI6R.js';
|
|
9
10
|
import { isReactNode } from './chunk-2PSZAWLC.js';
|
|
10
11
|
import { Icon } from './chunk-IUW777WZ.js';
|
|
@@ -244,5 +245,5 @@ function CheckboxInput({
|
|
|
244
245
|
CheckboxInput.displayName = "CheckboxInput";
|
|
245
246
|
|
|
246
247
|
export { CheckboxInput };
|
|
247
|
-
//# sourceMappingURL=chunk-
|
|
248
|
-
//# sourceMappingURL=chunk-
|
|
248
|
+
//# sourceMappingURL=chunk-42KJXH3P.js.map
|
|
249
|
+
//# sourceMappingURL=chunk-42KJXH3P.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/CheckboxInput/CheckboxInput.recipe.ts","../src/components/CheckboxInput/CheckboxInput.tsx"],"names":[],"mappings":"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","file":"chunk-42KJXH3P.js","sourcesContent":["import {sva, type RecipeVariantProps} from 'styled-system/css';\n\nexport const checkboxInputRecipe = sva({\n slots: [\n 'root',\n 'boxWrap',\n 'input',\n 'box',\n 'icon',\n 'label',\n 'indicator',\n 'tooltipIcon',\n ],\n base: {\n root: {\n display: 'flex',\n flexDirection: 'column',\n },\n boxWrap: {\n position: 'relative',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n },\n input: {\n position: 'absolute',\n inset: 0,\n opacity: 0,\n cursor: 'pointer',\n _disabled: {\n cursor: 'not-allowed',\n },\n },\n box: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderWidth: 'default',\n borderStyle: 'solid',\n borderColor: 'border.emphasized',\n borderRadius: 'sm',\n bg: 'bg',\n color: 'fg.onPrimary',\n pointerEvents: 'none',\n _peerFocusVisible: {\n outlineWidth: 'focus',\n outlineStyle: 'solid',\n outlineColor: 'primary',\n outlineOffset: 'focusOffset',\n },\n },\n icon: {\n w: '70%',\n h: '70%',\n mt: '1px',\n },\n label: {\n cursor: 'pointer',\n },\n indicator: {\n fontWeight: 'normal',\n color: 'fg.muted',\n },\n tooltipIcon: {\n display: 'inline-flex',\n color: 'fg.muted',\n },\n },\n variants: {\n size: {\n sm: {box: {w: '4.5', h: '4.5'}},\n md: {box: {w: '5.5', h: '5.5'}},\n lg: {box: {w: '6.5', h: '6.5'}},\n },\n isChecked: {\n true: {box: {bg: 'primary', borderColor: 'primary'}},\n false: {},\n },\n isDisabled: {\n true: {\n box: {opacity: 0.55},\n label: {cursor: 'not-allowed'},\n },\n false: {},\n },\n },\n defaultVariants: {\n size: 'md',\n isChecked: false,\n isDisabled: false,\n },\n});\n\nexport type CheckboxInputVariants = RecipeVariantProps<\n typeof checkboxInputRecipe\n>;\n","'use client';\n\nimport {Check, Info, Minus} from 'lucide-react';\nimport {\n useEffect,\n useId,\n useRef,\n type ChangeEvent,\n type CSSProperties,\n type FocusEvent,\n type ReactNode,\n type Ref,\n} from 'react';\nimport {checkboxInputRecipe} from 'components/CheckboxInput/CheckboxInput.recipe';\nimport type {FieldNecessity, InputStatus} from 'components/Field';\nimport {fieldRecipe} from 'components/Field/Field.recipe';\nimport {getDescribedBy, getStatusMessageID} from 'components/Field/inputUtils';\nimport {Icon, type IconComponent} from 'components/Icon';\nimport {Item} from 'components/Item';\nimport {Spinner} from 'components/Spinner';\nimport {Text} from 'components/Text';\nimport {Tooltip} from 'components/Tooltip';\nimport {VisuallyHidden} from 'internal/VisuallyHidden';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport {mergeRefs} from 'internal/mergeRefs';\n\nexport type CheckboxInputSize = 'sm' | 'md' | 'lg';\nexport type CheckboxInputValue = boolean | 'indeterminate';\n\nexport type CheckboxInputProps = {\n /**\n * Additional CSS class names applied to the root element.\n */\n className?: string;\n /**\n * Test ID applied to the input element.\n */\n 'data-testid'?: string;\n /**\n * Supporting text rendered below the label.\n */\n description?: ReactNode;\n /**\n * Content rendered after the label.\n */\n endContent?: ReactNode;\n /**\n * Where to place `endContent` within the item.\n * `'end'` pushes it to the trailing edge; `'inline'` keeps it next to the label.\n * @default 'inline'\n */\n endContentPosition?: 'end' | 'inline';\n /**\n * HTML name attribute for native form submission.\n */\n htmlName?: string;\n /**\n * HTML value attribute for native form submission.\n */\n htmlValue?: string;\n /**\n * Whether the checkbox is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Whether to visually hide the label.\n * @default false\n */\n isLabelHidden?: boolean;\n /**\n * Whether the checkbox is in a loading state.\n * @default false\n */\n isLoading?: boolean;\n /**\n * Whether the checkbox is read-only.\n * @default false\n */\n isReadOnly?: boolean;\n /**\n * Field label text.\n */\n label: string;\n /**\n * Optional content shown before the label.\n */\n labelIcon?: IconComponent;\n /**\n * Tooltip content shown next to the label.\n */\n labelTooltip?: ReactNode;\n /**\n * Called when the input loses focus.\n */\n onBlur?: (event: FocusEvent<HTMLInputElement>) => void;\n /**\n * Called when the checked state changes.\n */\n onChange: (checked: boolean, event: ChangeEvent<HTMLInputElement>) => void;\n /**\n * Called when the input receives focus.\n */\n onFocus?: (event: FocusEvent<HTMLInputElement>) => void;\n /**\n * Ref forwarded to the input element.\n */\n ref?: Ref<HTMLInputElement>;\n /**\n * Visual size of the checkbox.\n * @default 'md'\n */\n size?: CheckboxInputSize;\n /**\n * Content rendered after the checkbox control and before the label.\n */\n startContent?: ReactNode;\n /**\n * Validation status displayed below the checkbox.\n */\n status?: InputStatus;\n /**\n * Inline styles applied to the root element.\n */\n style?: CSSProperties;\n /**\n * Current checked state: true, false, or 'indeterminate'.\n */\n value: CheckboxInputValue;\n /**\n * Width of the checkbox item.\n * @default 'full'\n */\n width?: 'auto' | 'full';\n} & FieldNecessity;\n\n/**\n * A checkbox input with label, description, and validation support.\n */\nexport function CheckboxInput({\n label,\n value,\n onChange,\n description,\n endContent,\n endContentPosition = 'inline',\n htmlName,\n htmlValue,\n isLabelHidden = false,\n isOptional,\n isRequired,\n isDisabled = false,\n isReadOnly = false,\n isLoading = false,\n status,\n labelIcon,\n labelTooltip,\n size = 'md',\n startContent,\n onFocus,\n onBlur,\n className,\n 'data-testid': dataTestId,\n style,\n ref,\n width = 'full',\n}: CheckboxInputProps): React.JSX.Element {\n const inputId = useId();\n const descriptionId = useId();\n const inputRef = useRef<HTMLInputElement>(null);\n const statusMessageID = getStatusMessageID(inputId, status);\n const describedBy = getDescribedBy(\n isReactNode(description) ? descriptionId : undefined,\n statusMessageID,\n );\n const isIndeterminate = value === 'indeterminate';\n const isChecked = value === true;\n const isCheckedOrIndeterminate = isChecked || isIndeterminate;\n const classes = checkboxInputRecipe({\n size,\n isChecked: isCheckedOrIndeterminate,\n isDisabled,\n });\n\n useEffect(() => {\n if (inputRef.current != null) {\n inputRef.current.indeterminate = isIndeterminate;\n }\n }, [isIndeterminate]);\n\n const statusText = isOptional ? 'Optional' : isRequired ? 'Required' : null;\n\n const control = (\n <span className={classes.boxWrap}>\n <input\n aria-busy={isLoading || undefined}\n aria-checked={isIndeterminate ? 'mixed' : undefined}\n aria-describedby={describedBy}\n aria-invalid={status?.type === 'error' || undefined}\n aria-readonly={isReadOnly || undefined}\n checked={isChecked}\n // `peer` is the marker class Panda's `_peerFocusVisible` selector on\n // the box targets (`.peer:is(:focus-visible,…) ~ &`); without it the\n // box's keyboard focus ring never renders.\n className={cx('peer', classes.input)}\n data-testid={dataTestId}\n disabled={isDisabled}\n id={inputId}\n name={htmlName}\n onBlur={onBlur}\n onChange={event => {\n if (isReadOnly) {\n event.preventDefault();\n return;\n }\n onChange(event.target.checked, event);\n }}\n onClick={event => {\n // For checkboxes the native toggle happens during `click`, before\n // `change` fires, so blocking only `onChange` lets the box flip\n // momentarily until React resets it. Preventing the click stops the\n // toggle outright — and covers label clicks and Space-key activation,\n // which both dispatch a click on the input.\n if (isReadOnly) {\n event.preventDefault();\n }\n }}\n onFocus={onFocus}\n readOnly={isReadOnly}\n ref={mergeRefs(ref, inputRef)}\n required={isRequired}\n type=\"checkbox\"\n value={htmlValue}\n />\n <span aria-hidden=\"true\" className={classes.box}>\n {isLoading ? (\n <Spinner\n size=\"sm\"\n variant={isCheckedOrIndeterminate ? 'onMedia' : 'default'}\n />\n ) : isIndeterminate ? (\n <Icon className={classes.icon} icon={Minus} />\n ) : isChecked ? (\n <Icon className={classes.icon} icon={Check} />\n ) : null}\n </span>\n </span>\n );\n\n const labelContent = (\n <>\n {labelIcon != null ? (\n <Icon color=\"secondary\" icon={labelIcon} size=\"sm\" />\n ) : null}\n {label}\n {statusText != null ? (\n <Text as=\"span\" className={classes.indicator} type=\"supporting\">\n <span aria-hidden=\"true\"> · </span>\n {statusText}\n </Text>\n ) : null}\n {isReactNode(labelTooltip) ? (\n <Tooltip content={labelTooltip}>\n <span className={classes.tooltipIcon}>\n <Icon icon={Info} size=\"sm\" />\n </span>\n </Tooltip>\n ) : null}\n </>\n );\n\n const labelNode = (\n <label className={classes.label} htmlFor={inputId}>\n {isLabelHidden ? (\n <VisuallyHidden>{labelContent}</VisuallyHidden>\n ) : (\n labelContent\n )}\n </label>\n );\n\n const statusNode =\n status?.message != null ? (\n <div\n aria-live={status.type === 'error' ? 'assertive' : 'polite'}\n className={\n fieldRecipe({\n statusType: status.type,\n statusVariant: 'detached',\n }).status\n }\n id={statusMessageID}\n role={status.type === 'error' ? 'alert' : 'status'}>\n {status.message}\n </div>\n ) : null;\n\n const item = (\n <Item\n description={\n isReactNode(description) ? (\n <span id={descriptionId}>{description}</span>\n ) : undefined\n }\n endContent={endContent}\n endContentPosition={endContentPosition}\n isDisabled={isDisabled}\n label={labelNode}\n leadingContent={control}\n startContent={startContent}\n width={width}\n />\n );\n\n return (\n <div className={cx(classes.root, className)} style={style}>\n {item}\n {statusNode}\n </div>\n );\n}\n\nCheckboxInput.displayName = 'CheckboxInput';\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
'use client';
|
|
2
|
+
import { DropdownMenuItem, useMenuKeyboard, renderMenuItems, DropdownMenuContext, formatMenuWidth } from './chunk-PLQDNBCW.js';
|
|
2
3
|
import { css } from './chunk-OD4DHHZH.js';
|
|
3
4
|
import { cx } from './chunk-PPNETWIP.js';
|
|
4
5
|
import { useId, useRef, useState, useCallback, useEffect, useImperativeHandle, useMemo } from 'react';
|
|
@@ -202,5 +203,5 @@ function ContextMenu({
|
|
|
202
203
|
ContextMenu.displayName = "ContextMenu";
|
|
203
204
|
|
|
204
205
|
export { ContextMenu, ContextMenuItem };
|
|
205
|
-
//# sourceMappingURL=chunk-
|
|
206
|
-
//# sourceMappingURL=chunk-
|
|
206
|
+
//# sourceMappingURL=chunk-446LQC5C.js.map
|
|
207
|
+
//# sourceMappingURL=chunk-446LQC5C.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ContextMenu/ContextMenu.tsx"],"names":[],"mappings":"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","file":"chunk-446LQC5C.js","sourcesContent":["'use client';\n\nimport {\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type KeyboardEvent,\n type MouseEvent,\n type ReactNode,\n type Ref,\n} from 'react';\nimport type {ButtonSize} from 'components/Button';\nimport {\n DropdownMenuContext,\n DropdownMenuItem,\n type DropdownMenuDivider,\n type DropdownMenuItemData,\n type DropdownMenuItemProps,\n type DropdownMenuOption,\n type DropdownMenuSection,\n} from 'components/DropdownMenu';\nimport {\n formatMenuWidth,\n renderMenuItems,\n useMenuKeyboard,\n} from 'components/DropdownMenu/menuUtils';\nimport {cx} from 'internal/cx';\nimport {css} from 'styled-system/css';\n\nexport type ContextMenuSize = ButtonSize;\nexport type ContextMenuItemData = DropdownMenuItemData;\nexport type ContextMenuItemProps = DropdownMenuItemProps;\nexport type ContextMenuDivider = DropdownMenuDivider;\nexport type ContextMenuSection = DropdownMenuSection;\nexport type ContextMenuOption = DropdownMenuOption;\nexport const ContextMenuItem = DropdownMenuItem;\n\ninterface ContextMenuBaseProps {\n /**\n * The region that triggers the context menu on right-click.\n */\n children: ReactNode;\n /**\n * Additional CSS class names applied to the menu surface.\n */\n className?: string;\n /**\n * Test ID applied to the trigger wrapper.\n */\n 'data-testid'?: string;\n /**\n * Whether to auto-focus the first menu item on open.\n * @default true\n */\n hasAutoFocus?: boolean;\n /**\n * Whether the context menu is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Width of the menu surface.\n * @default 160\n */\n menuWidth?: number | string;\n /**\n * Called when the menu open state changes.\n */\n onOpenChange?: (isOpen: boolean) => void;\n /**\n * Ref forwarded to the trigger wrapper.\n */\n ref?: Ref<HTMLDivElement>;\n /**\n * Menu item size.\n * @default 'md'\n */\n size?: ContextMenuSize;\n /**\n * Inline styles applied to the menu surface.\n */\n style?: CSSProperties;\n}\n\ninterface ContextMenuDataProps extends ContextMenuBaseProps {\n items: ReadonlyArray<ContextMenuOption>;\n menuContent?: never;\n}\n\ninterface ContextMenuCompoundProps extends ContextMenuBaseProps {\n items?: never;\n menuContent: ReactNode;\n}\n\nexport type ContextMenuProps = ContextMenuDataProps | ContextMenuCompoundProps;\n\nconst styles = {\n trigger: css({\n display: 'contents',\n }),\n menu: css({\n display: 'none',\n flexDirection: 'column',\n gap: '0.5',\n maxH: '80',\n minW: '40',\n m: 0,\n overflowY: 'auto',\n p: '1',\n borderWidth: 0,\n borderRadius: 'md',\n _open: {\n display: 'flex',\n },\n bg: 'bg',\n boxShadow: 'lg',\n borderStyle: 'solid',\n borderColor: 'border',\n }),\n} as const;\n\nfunction isPopoverOpen(element: HTMLElement | null): boolean {\n if (element == null) {\n return false;\n }\n if (element.hasAttribute('popover-open')) {\n return true;\n }\n try {\n return element.matches(':popover-open');\n } catch {\n return false;\n }\n}\n\n/**\n * Right-click context menu for contextual actions on a region.\n */\nexport function ContextMenu({\n children,\n className,\n 'data-testid': dataTestId,\n hasAutoFocus = true,\n isDisabled = false,\n menuWidth = 160,\n onOpenChange,\n ref,\n size = 'md',\n style,\n ...props\n}: ContextMenuProps): React.JSX.Element {\n const menuId = useId();\n const menuRef = useRef<HTMLDivElement | null>(null);\n const triggerRef = useRef<HTMLDivElement | null>(null);\n const [isOpen, setIsOpen] = useState(false);\n const [position, setPosition] = useState({x: 0, y: 0});\n const items = 'items' in props ? props.items : undefined;\n const menuContent = 'menuContent' in props ? props.menuContent : undefined;\n\n const hide = useCallback(() => {\n if (!isOpen) {\n return;\n }\n menuRef.current?.hidePopover();\n setIsOpen(false);\n onOpenChange?.(false);\n }, [isOpen, onOpenChange]);\n\n const focusFirstItem = useCallback(() => {\n const firstItem = menuRef.current?.querySelector<HTMLElement>(\n '[role=\"menuitem\"]:not(:disabled):not([aria-disabled=\"true\"])',\n );\n firstItem?.focus();\n }, []);\n\n const show = useCallback(\n (x: number, y: number) => {\n setPosition({x, y});\n if (isPopoverOpen(menuRef.current)) {\n menuRef.current?.hidePopover();\n }\n menuRef.current?.showPopover();\n setIsOpen(true);\n onOpenChange?.(true);\n requestAnimationFrame(() => {\n if (menuRef.current != null) {\n const rect = menuRef.current.getBoundingClientRect();\n const margin = 4;\n const clampedX = Math.min(x, window.innerWidth - rect.width - margin);\n const clampedY = Math.min(\n y,\n window.innerHeight - rect.height - margin,\n );\n setPosition({\n x: Math.max(0, clampedX),\n y: Math.max(0, clampedY),\n });\n }\n if (hasAutoFocus) {\n focusFirstItem();\n }\n });\n },\n [focusFirstItem, hasAutoFocus, onOpenChange],\n );\n\n useEffect(() => {\n if (!isOpen) {\n return;\n }\n\n const handleMouseDown = (event: globalThis.MouseEvent) => {\n const target = event.target;\n if (\n target instanceof Node &&\n (menuRef.current?.contains(target) === true ||\n triggerRef.current?.contains(target) === true)\n ) {\n return;\n }\n hide();\n };\n\n document.addEventListener('mousedown', handleMouseDown);\n return () => {\n document.removeEventListener('mousedown', handleMouseDown);\n };\n }, [hide, isOpen]);\n\n useImperativeHandle(ref, () => triggerRef.current as HTMLDivElement);\n\n const contextValue = useMemo(\n () => ({\n closeMenu: hide,\n menuSize: size,\n }),\n [hide, size],\n );\n\n const handleContextMenu = useCallback(\n (event: MouseEvent<HTMLDivElement>) => {\n if (isDisabled) {\n return;\n }\n event.preventDefault();\n show(event.clientX, event.clientY);\n },\n [isDisabled, show],\n );\n\n const handleTriggerKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (isDisabled) {\n return;\n }\n if (\n event.key !== 'ContextMenu' &&\n !(event.shiftKey && event.key === 'F10')\n ) {\n return;\n }\n event.preventDefault();\n const rect = event.currentTarget.getBoundingClientRect();\n show(rect.left, rect.bottom);\n },\n [isDisabled, show],\n );\n\n const handleMenuKeyDown = useMenuKeyboard(menuRef, hide);\n\n const menuNode = useMemo(\n (): ReactNode => (items == null ? menuContent : renderMenuItems(items)),\n [items, menuContent],\n );\n\n return (\n <>\n <div\n aria-controls={isOpen ? menuId : undefined}\n aria-expanded={isOpen}\n aria-haspopup=\"menu\"\n className={styles.trigger}\n data-testid={dataTestId}\n onContextMenu={handleContextMenu}\n onKeyDown={handleTriggerKeyDown}\n ref={triggerRef}\n role=\"button\"\n tabIndex={0}>\n {children}\n </div>\n <div\n aria-label=\"Context menu\"\n className={cx(styles.menu, className)}\n id={menuId}\n onKeyDown={handleMenuKeyDown}\n popover=\"manual\"\n ref={menuRef}\n role=\"menu\"\n style={{\n left: position.x,\n position: 'fixed',\n top: position.y,\n width: formatMenuWidth(menuWidth),\n ...style,\n }}\n tabIndex={-1}>\n <DropdownMenuContext value={contextValue}>\n {menuNode}\n </DropdownMenuContext>\n </div>\n </>\n );\n}\n\nContextMenu.displayName = 'ContextMenu';\n"]}
|