silver-ui 0.6.0 → 0.7.1
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 +1 -0
- package/dist/{chunk-FQN22DO5.js → chunk-223UOU3H.js} +5 -5
- package/dist/{chunk-FQN22DO5.js.map → chunk-223UOU3H.js.map} +1 -1
- package/dist/{chunk-DYMZ4DLN.cjs → chunk-2AOR4EVA.cjs} +8 -8
- package/dist/{chunk-DYMZ4DLN.cjs.map → chunk-2AOR4EVA.cjs.map} +1 -1
- package/dist/{chunk-UT45YVPI.js → chunk-2KLTODOC.js} +7 -7
- package/dist/{chunk-UT45YVPI.js.map → chunk-2KLTODOC.js.map} +1 -1
- package/dist/chunk-2N3PIXZ5.cjs +165 -0
- package/dist/chunk-2N3PIXZ5.cjs.map +1 -0
- package/dist/{chunk-GUUCIG7U.js → chunk-3PCXFOOS.js} +16 -10
- package/dist/chunk-3PCXFOOS.js.map +1 -0
- package/dist/{chunk-ISWZQUVA.cjs → chunk-4MIIXRZN.cjs} +12 -12
- package/dist/{chunk-ISWZQUVA.cjs.map → chunk-4MIIXRZN.cjs.map} +1 -1
- package/dist/{chunk-JR353MN5.js → chunk-4NPVIEWF.js} +6 -6
- package/dist/{chunk-JR353MN5.js.map → chunk-4NPVIEWF.js.map} +1 -1
- package/dist/{chunk-WM7NEOME.js → chunk-4UYMGEBF.js} +6 -6
- package/dist/{chunk-WM7NEOME.js.map → chunk-4UYMGEBF.js.map} +1 -1
- package/dist/{chunk-WHDDBOJN.js → chunk-54B36CSW.js} +4 -4
- package/dist/{chunk-WHDDBOJN.js.map → chunk-54B36CSW.js.map} +1 -1
- package/dist/{chunk-NXTDP6AX.js → chunk-5GSRIOXE.js} +14 -2
- package/dist/chunk-5GSRIOXE.js.map +1 -0
- package/dist/{chunk-FIOCTAXT.js → chunk-6KG76KUZ.js} +3 -3
- package/dist/{chunk-FIOCTAXT.js.map → chunk-6KG76KUZ.js.map} +1 -1
- package/dist/{chunk-RU7JPU7V.js → chunk-6KGF66TR.js} +3 -3
- package/dist/{chunk-RU7JPU7V.js.map → chunk-6KGF66TR.js.map} +1 -1
- package/dist/{chunk-BDFNEQR3.js → chunk-6R2UZNVE.js} +6 -6
- package/dist/{chunk-BDFNEQR3.js.map → chunk-6R2UZNVE.js.map} +1 -1
- package/dist/{chunk-AFJEAYR4.cjs → chunk-6SFMORQF.cjs} +5 -5
- package/dist/{chunk-AFJEAYR4.cjs.map → chunk-6SFMORQF.cjs.map} +1 -1
- package/dist/{chunk-XTLNUYCK.js → chunk-6SKIBUCY.js} +3 -3
- package/dist/{chunk-XTLNUYCK.js.map → chunk-6SKIBUCY.js.map} +1 -1
- package/dist/{chunk-VRQ66IBW.cjs → chunk-6SMVH3ON.cjs} +6 -6
- package/dist/{chunk-VRQ66IBW.cjs.map → chunk-6SMVH3ON.cjs.map} +1 -1
- package/dist/{chunk-WINDLDH3.cjs → chunk-6ZPHID26.cjs} +9 -9
- package/dist/{chunk-WINDLDH3.cjs.map → chunk-6ZPHID26.cjs.map} +1 -1
- package/dist/{chunk-PHFJBQXU.cjs → chunk-76GVUEFH.cjs} +8 -8
- package/dist/{chunk-PHFJBQXU.cjs.map → chunk-76GVUEFH.cjs.map} +1 -1
- package/dist/chunk-7VUDE5BI.js +91 -0
- package/dist/chunk-7VUDE5BI.js.map +1 -0
- package/dist/{chunk-4JJFQZVY.js → chunk-7WQW7H3D.js} +12 -12
- package/dist/{chunk-4JJFQZVY.js.map → chunk-7WQW7H3D.js.map} +1 -1
- package/dist/{chunk-HKGFMJFK.js → chunk-A4QLLTMD.js} +16 -16
- package/dist/{chunk-HKGFMJFK.js.map → chunk-A4QLLTMD.js.map} +1 -1
- package/dist/{chunk-DFEAB7Z3.cjs → chunk-AC4E3WQA.cjs} +10 -10
- package/dist/{chunk-DFEAB7Z3.cjs.map → chunk-AC4E3WQA.cjs.map} +1 -1
- package/dist/{chunk-DWZR2AGT.js → chunk-AO4RVSCG.js} +4 -4
- package/dist/{chunk-DWZR2AGT.js.map → chunk-AO4RVSCG.js.map} +1 -1
- package/dist/{chunk-KCI4I42U.js → chunk-AX653SYJ.js} +7 -7
- package/dist/{chunk-KCI4I42U.js.map → chunk-AX653SYJ.js.map} +1 -1
- package/dist/{chunk-P7TSM63O.js → chunk-AXTX3IOR.js} +3 -3
- package/dist/{chunk-P7TSM63O.js.map → chunk-AXTX3IOR.js.map} +1 -1
- package/dist/{chunk-6FC5YF2O.cjs → chunk-BPAZTKMC.cjs} +8 -8
- package/dist/{chunk-6FC5YF2O.cjs.map → chunk-BPAZTKMC.cjs.map} +1 -1
- package/dist/{chunk-CNDUYO7I.cjs → chunk-BYV7NXC5.cjs} +5 -5
- package/dist/{chunk-CNDUYO7I.cjs.map → chunk-BYV7NXC5.cjs.map} +1 -1
- package/dist/{chunk-MHAXS4GO.cjs → chunk-CKDB7QNT.cjs} +14 -2
- package/dist/chunk-CKDB7QNT.cjs.map +1 -0
- package/dist/{chunk-U5HW5P7Q.cjs → chunk-CWZCBYVZ.cjs} +11 -11
- package/dist/{chunk-U5HW5P7Q.cjs.map → chunk-CWZCBYVZ.cjs.map} +1 -1
- package/dist/{chunk-P5LMEANN.cjs → chunk-DTNIUZ3C.cjs} +5 -5
- package/dist/{chunk-P5LMEANN.cjs.map → chunk-DTNIUZ3C.cjs.map} +1 -1
- package/dist/{chunk-NG2H3PYA.cjs → chunk-DUGGZUJP.cjs} +11 -11
- package/dist/{chunk-NG2H3PYA.cjs.map → chunk-DUGGZUJP.cjs.map} +1 -1
- package/dist/{chunk-5JROXZBG.cjs → chunk-DVCDAKPK.cjs} +4 -4
- package/dist/{chunk-5JROXZBG.cjs.map → chunk-DVCDAKPK.cjs.map} +1 -1
- package/dist/{chunk-45OSUS5A.js → chunk-E6AKSBSP.js} +6 -6
- package/dist/{chunk-45OSUS5A.js.map → chunk-E6AKSBSP.js.map} +1 -1
- package/dist/{chunk-HMJINNXZ.js → chunk-EBV3EX3J.js} +3 -3
- package/dist/{chunk-HMJINNXZ.js.map → chunk-EBV3EX3J.js.map} +1 -1
- package/dist/{chunk-UZGPFPIV.cjs → chunk-EQFSDFV2.cjs} +15 -15
- package/dist/{chunk-UZGPFPIV.cjs.map → chunk-EQFSDFV2.cjs.map} +1 -1
- package/dist/chunk-ESWYWWY2.js +162 -0
- package/dist/chunk-ESWYWWY2.js.map +1 -0
- package/dist/{chunk-G5PU2EL2.js → chunk-FHUOUARL.js} +4 -4
- package/dist/{chunk-G5PU2EL2.js.map → chunk-FHUOUARL.js.map} +1 -1
- package/dist/{chunk-RXKDRZF3.js → chunk-FTNEAX24.js} +3 -3
- package/dist/{chunk-RXKDRZF3.js.map → chunk-FTNEAX24.js.map} +1 -1
- package/dist/{chunk-TQDJVPHP.js → chunk-FUU3I22W.js} +3 -3
- package/dist/{chunk-TQDJVPHP.js.map → chunk-FUU3I22W.js.map} +1 -1
- package/dist/{chunk-KG7RHDVX.js → chunk-GFMQIR5U.js} +7 -7
- package/dist/{chunk-KG7RHDVX.js.map → chunk-GFMQIR5U.js.map} +1 -1
- package/dist/{chunk-ERVWZILR.js → chunk-GKYGZWSQ.js} +3 -3
- package/dist/{chunk-ERVWZILR.js.map → chunk-GKYGZWSQ.js.map} +1 -1
- package/dist/{chunk-CABYRYVA.cjs → chunk-GLFWSLJB.cjs} +6 -6
- package/dist/{chunk-CABYRYVA.cjs.map → chunk-GLFWSLJB.cjs.map} +1 -1
- package/dist/{chunk-JHMUMJF3.js → chunk-GTZQT6MK.js} +4 -4
- package/dist/{chunk-JHMUMJF3.js.map → chunk-GTZQT6MK.js.map} +1 -1
- package/dist/{chunk-WAWHHXSR.js → chunk-HEF53COU.js} +3 -3
- package/dist/{chunk-WAWHHXSR.js.map → chunk-HEF53COU.js.map} +1 -1
- package/dist/{chunk-DPSAPA6B.js → chunk-I2DXEPDF.js} +5 -5
- package/dist/{chunk-DPSAPA6B.js.map → chunk-I2DXEPDF.js.map} +1 -1
- package/dist/{chunk-NFEL5GNX.cjs → chunk-I4XYOJJS.cjs} +9 -9
- package/dist/{chunk-NFEL5GNX.cjs.map → chunk-I4XYOJJS.cjs.map} +1 -1
- package/dist/{chunk-U4L75VA4.cjs → chunk-IE7GWY4E.cjs} +40 -40
- package/dist/{chunk-U4L75VA4.cjs.map → chunk-IE7GWY4E.cjs.map} +1 -1
- package/dist/{chunk-TNYAYXKC.cjs → chunk-IH6DJWYH.cjs} +35 -35
- package/dist/{chunk-TNYAYXKC.cjs.map → chunk-IH6DJWYH.cjs.map} +1 -1
- package/dist/{chunk-4EUUZQAM.js → chunk-J4MQQ4K5.js} +5 -5
- package/dist/{chunk-4EUUZQAM.js.map → chunk-J4MQQ4K5.js.map} +1 -1
- package/dist/{chunk-BGLT7XH6.js → chunk-JFLU2X5Q.js} +5 -5
- package/dist/{chunk-BGLT7XH6.js.map → chunk-JFLU2X5Q.js.map} +1 -1
- package/dist/{chunk-K2WT7A64.js → chunk-JMVYWHJ7.js} +3 -3
- package/dist/{chunk-K2WT7A64.js.map → chunk-JMVYWHJ7.js.map} +1 -1
- package/dist/{chunk-VREW3BK6.cjs → chunk-JTPVAZE6.cjs} +11 -11
- package/dist/{chunk-VREW3BK6.cjs.map → chunk-JTPVAZE6.cjs.map} +1 -1
- package/dist/{chunk-FLDTPAG4.cjs → chunk-JWMS6LHN.cjs} +6 -6
- package/dist/{chunk-FLDTPAG4.cjs.map → chunk-JWMS6LHN.cjs.map} +1 -1
- package/dist/{chunk-INQ34SVW.cjs → chunk-KLPVBJGZ.cjs} +5 -5
- package/dist/{chunk-INQ34SVW.cjs.map → chunk-KLPVBJGZ.cjs.map} +1 -1
- package/dist/{chunk-LLSWAAFH.js → chunk-L747HIHG.js} +4 -4
- package/dist/{chunk-LLSWAAFH.js.map → chunk-L747HIHG.js.map} +1 -1
- package/dist/{chunk-7TJ2O56S.js → chunk-LBOWHXOF.js} +23 -5
- package/dist/chunk-LBOWHXOF.js.map +1 -0
- package/dist/{chunk-H7VK36SZ.cjs → chunk-LTHPJRFK.cjs} +9 -8
- package/dist/chunk-LTHPJRFK.cjs.map +1 -0
- package/dist/{chunk-6ZV7HGZT.cjs → chunk-LWB2CTX6.cjs} +4 -4
- package/dist/{chunk-6ZV7HGZT.cjs.map → chunk-LWB2CTX6.cjs.map} +1 -1
- package/dist/{chunk-ENVDR66N.cjs → chunk-MJHEPDDX.cjs} +17 -17
- package/dist/{chunk-ENVDR66N.cjs.map → chunk-MJHEPDDX.cjs.map} +1 -1
- package/dist/{chunk-ZSB43DEI.js → chunk-MUXUHIIV.js} +5 -5
- package/dist/{chunk-ZSB43DEI.js.map → chunk-MUXUHIIV.js.map} +1 -1
- package/dist/{chunk-RAMDISDK.cjs → chunk-MYSLJWCW.cjs} +6 -6
- package/dist/{chunk-RAMDISDK.cjs.map → chunk-MYSLJWCW.cjs.map} +1 -1
- package/dist/{chunk-WEXTGWRE.js → chunk-N6C37HXD.js} +4 -4
- package/dist/{chunk-WEXTGWRE.js.map → chunk-N6C37HXD.js.map} +1 -1
- package/dist/{chunk-NW36BN7N.cjs → chunk-NGNVNRAZ.cjs} +17 -17
- package/dist/{chunk-NW36BN7N.cjs.map → chunk-NGNVNRAZ.cjs.map} +1 -1
- package/dist/{chunk-7EE6DCRP.cjs → chunk-NMC7QG2X.cjs} +14 -14
- package/dist/{chunk-7EE6DCRP.cjs.map → chunk-NMC7QG2X.cjs.map} +1 -1
- package/dist/{chunk-6I5QWA6A.js → chunk-NSWKBWPP.js} +6 -5
- package/dist/chunk-NSWKBWPP.js.map +1 -0
- package/dist/{chunk-2SN3KVWF.js → chunk-NYOZQE6P.js} +4 -4
- package/dist/{chunk-2SN3KVWF.js.map → chunk-NYOZQE6P.js.map} +1 -1
- package/dist/{chunk-CZUMVOPH.js → chunk-O3UT5D57.js} +19 -15
- package/dist/chunk-O3UT5D57.js.map +1 -0
- package/dist/{chunk-GU65FGY6.cjs → chunk-OCYZKZ24.cjs} +4 -4
- package/dist/{chunk-GU65FGY6.cjs.map → chunk-OCYZKZ24.cjs.map} +1 -1
- package/dist/{chunk-M64WMYYV.js → chunk-OP6WQYYP.js} +5 -5
- package/dist/{chunk-M64WMYYV.js.map → chunk-OP6WQYYP.js.map} +1 -1
- package/dist/{chunk-SKZNSOB7.cjs → chunk-OX2FNKIV.cjs} +6 -6
- package/dist/{chunk-SKZNSOB7.cjs.map → chunk-OX2FNKIV.cjs.map} +1 -1
- package/dist/{chunk-C6EWA3H2.js → chunk-PQXPYN23.js} +6 -6
- package/dist/{chunk-C6EWA3H2.js.map → chunk-PQXPYN23.js.map} +1 -1
- package/dist/{chunk-K2V3IOAX.js → chunk-QM7NQK2K.js} +3 -3
- package/dist/{chunk-K2V3IOAX.js.map → chunk-QM7NQK2K.js.map} +1 -1
- package/dist/chunk-RNUQWYJJ.cjs +93 -0
- package/dist/chunk-RNUQWYJJ.cjs.map +1 -0
- package/dist/{chunk-DK6USFZP.cjs → chunk-RUQODCTW.cjs} +16 -16
- package/dist/{chunk-DK6USFZP.cjs.map → chunk-RUQODCTW.cjs.map} +1 -1
- package/dist/{chunk-R3ZS6FU6.cjs → chunk-RX2FXCIH.cjs} +6 -6
- package/dist/{chunk-R3ZS6FU6.cjs.map → chunk-RX2FXCIH.cjs.map} +1 -1
- package/dist/{chunk-J4LJXCXB.cjs → chunk-SY2A4K6P.cjs} +9 -9
- package/dist/{chunk-J4LJXCXB.cjs.map → chunk-SY2A4K6P.cjs.map} +1 -1
- package/dist/{chunk-PNM7MPUX.cjs → chunk-U7QJJ3NR.cjs} +8 -8
- package/dist/{chunk-PNM7MPUX.cjs.map → chunk-U7QJJ3NR.cjs.map} +1 -1
- package/dist/{chunk-H5VMHDRD.cjs → chunk-UJDHRILS.cjs} +24 -6
- package/dist/chunk-UJDHRILS.cjs.map +1 -0
- package/dist/{chunk-EVCQCZMM.cjs → chunk-UNS7OCEA.cjs} +5 -5
- package/dist/{chunk-EVCQCZMM.cjs.map → chunk-UNS7OCEA.cjs.map} +1 -1
- package/dist/{chunk-QTOFQB26.cjs → chunk-UR5EWWWL.cjs} +11 -11
- package/dist/{chunk-QTOFQB26.cjs.map → chunk-UR5EWWWL.cjs.map} +1 -1
- package/dist/{chunk-SEDUAMDW.js → chunk-USEA7DB5.js} +3 -3
- package/dist/{chunk-SEDUAMDW.js.map → chunk-USEA7DB5.js.map} +1 -1
- package/dist/{chunk-LDYUVGD4.js → chunk-UUVI3TYW.js} +6 -6
- package/dist/{chunk-LDYUVGD4.js.map → chunk-UUVI3TYW.js.map} +1 -1
- package/dist/{chunk-QYZXTIB2.cjs → chunk-UW3KCCBT.cjs} +4 -4
- package/dist/{chunk-QYZXTIB2.cjs.map → chunk-UW3KCCBT.cjs.map} +1 -1
- package/dist/{chunk-PU4PBI3H.js → chunk-V5XVXQWE.js} +4 -4
- package/dist/{chunk-PU4PBI3H.js.map → chunk-V5XVXQWE.js.map} +1 -1
- package/dist/{chunk-GJKRSQEA.cjs → chunk-VCM4MR7N.cjs} +51 -47
- package/dist/chunk-VCM4MR7N.cjs.map +1 -0
- package/dist/{chunk-LF6I2B7G.js → chunk-VEQ5H765.js} +8 -8
- package/dist/{chunk-LF6I2B7G.js.map → chunk-VEQ5H765.js.map} +1 -1
- package/dist/{chunk-HPOURAKV.cjs → chunk-VULMEKZZ.cjs} +9 -9
- package/dist/{chunk-HPOURAKV.cjs.map → chunk-VULMEKZZ.cjs.map} +1 -1
- package/dist/{chunk-TVWU4XBL.cjs → chunk-VWG54F6X.cjs} +6 -6
- package/dist/{chunk-TVWU4XBL.cjs.map → chunk-VWG54F6X.cjs.map} +1 -1
- package/dist/{chunk-DAO4UXR4.js → chunk-WG4NNC3P.js} +3 -3
- package/dist/{chunk-DAO4UXR4.js.map → chunk-WG4NNC3P.js.map} +1 -1
- package/dist/{chunk-ZUAWNT66.cjs → chunk-WIFMXZIN.cjs} +14 -14
- package/dist/{chunk-ZUAWNT66.cjs.map → chunk-WIFMXZIN.cjs.map} +1 -1
- package/dist/{chunk-VXOIOPGZ.cjs → chunk-WOVSJHY6.cjs} +5 -5
- package/dist/{chunk-VXOIOPGZ.cjs.map → chunk-WOVSJHY6.cjs.map} +1 -1
- package/dist/{chunk-QHXI2QDK.js → chunk-X2P5SPGB.js} +3 -3
- package/dist/{chunk-QHXI2QDK.js.map → chunk-X2P5SPGB.js.map} +1 -1
- package/dist/{chunk-JC66FRQX.js → chunk-XUCLNECV.js} +3 -3
- package/dist/{chunk-JC66FRQX.js.map → chunk-XUCLNECV.js.map} +1 -1
- package/dist/{chunk-VW52NVGM.cjs → chunk-Y2GYPMLW.cjs} +5 -5
- package/dist/{chunk-VW52NVGM.cjs.map → chunk-Y2GYPMLW.cjs.map} +1 -1
- package/dist/{chunk-ATK3F3MC.js → chunk-YAQB3UMC.js} +4 -4
- package/dist/{chunk-ATK3F3MC.js.map → chunk-YAQB3UMC.js.map} +1 -1
- package/dist/{chunk-B5QX6KGJ.js → chunk-YGESCFX2.js} +3 -3
- package/dist/{chunk-B5QX6KGJ.js.map → chunk-YGESCFX2.js.map} +1 -1
- package/dist/{chunk-FWBYCTUB.cjs → chunk-YOAFVMEN.cjs} +13 -13
- package/dist/{chunk-FWBYCTUB.cjs.map → chunk-YOAFVMEN.cjs.map} +1 -1
- package/dist/{chunk-PYJX2SBC.cjs → chunk-YQIDUJW2.cjs} +5 -5
- package/dist/{chunk-PYJX2SBC.cjs.map → chunk-YQIDUJW2.cjs.map} +1 -1
- package/dist/{chunk-UMS46KF4.cjs → chunk-YQVWDHP4.cjs} +7 -7
- package/dist/{chunk-UMS46KF4.cjs.map → chunk-YQVWDHP4.cjs.map} +1 -1
- package/dist/{chunk-UYZQGHFI.js → chunk-YRJYWTVG.js} +7 -7
- package/dist/{chunk-UYZQGHFI.js.map → chunk-YRJYWTVG.js.map} +1 -1
- package/dist/{chunk-MHEPDHL5.cjs → chunk-ZNAGK36T.cjs} +9 -9
- package/dist/{chunk-MHEPDHL5.cjs.map → chunk-ZNAGK36T.cjs.map} +1 -1
- package/dist/{chunk-3IDT3PZC.cjs → chunk-ZW2ZOEYM.cjs} +19 -13
- package/dist/chunk-ZW2ZOEYM.cjs.map +1 -0
- package/dist/components/Alert/index.cjs +5 -5
- package/dist/components/Alert/index.js +4 -4
- package/dist/components/AlertDialog/index.cjs +7 -7
- package/dist/components/AlertDialog/index.js +5 -5
- package/dist/components/AppShell/index.cjs +12 -12
- package/dist/components/AppShell/index.js +9 -9
- package/dist/components/AutocompleteInput/index.cjs +10 -10
- package/dist/components/AutocompleteInput/index.js +6 -6
- package/dist/components/Badge/Badge.d.ts.map +1 -1
- package/dist/components/Badge/Badge.recipe.d.ts +75 -41
- package/dist/components/Badge/Badge.recipe.d.ts.map +1 -1
- package/dist/components/Badge/index.cjs +3 -2
- package/dist/components/Badge/index.js +2 -1
- package/dist/components/Button/index.cjs +4 -4
- package/dist/components/Button/index.js +3 -3
- package/dist/components/Calendar/index.cjs +5 -5
- package/dist/components/Calendar/index.js +4 -4
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +83 -0
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts.map +1 -0
- package/dist/components/CheckboxGroup/CheckboxGroup.recipe.d.ts +17 -0
- package/dist/components/CheckboxGroup/CheckboxGroup.recipe.d.ts.map +1 -0
- package/dist/components/CheckboxGroup/CheckboxGroupContext.d.ts +13 -0
- package/dist/components/CheckboxGroup/CheckboxGroupContext.d.ts.map +1 -0
- package/dist/components/CheckboxGroup/CheckboxGroupItem.d.ts +58 -0
- package/dist/components/CheckboxGroup/CheckboxGroupItem.d.ts.map +1 -0
- package/dist/components/CheckboxGroup/index.cjs +35 -0
- package/dist/components/CheckboxGroup/index.cjs.map +1 -0
- package/dist/components/CheckboxGroup/index.d.ts +4 -0
- package/dist/components/CheckboxGroup/index.d.ts.map +1 -0
- package/dist/components/CheckboxGroup/index.js +22 -0
- package/dist/components/CheckboxGroup/index.js.map +1 -0
- package/dist/components/CheckboxInput/CheckboxInput.d.ts +11 -2
- package/dist/components/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/components/CheckboxInput/CheckboxInput.recipe.d.ts +6 -0
- package/dist/components/CheckboxInput/CheckboxInput.recipe.d.ts.map +1 -1
- package/dist/components/CheckboxInput/index.cjs +5 -5
- package/dist/components/CheckboxInput/index.js +4 -4
- package/dist/components/CodeBlock/index.cjs +5 -5
- package/dist/components/CodeBlock/index.js +4 -4
- package/dist/components/ContextMenu/index.cjs +9 -9
- package/dist/components/ContextMenu/index.js +7 -7
- package/dist/components/DateInput/index.cjs +8 -8
- package/dist/components/DateInput/index.js +7 -7
- package/dist/components/DateRangeInput/index.cjs +8 -8
- package/dist/components/DateRangeInput/index.js +7 -7
- package/dist/components/DateTimeInput/index.cjs +10 -10
- package/dist/components/DateTimeInput/index.js +9 -9
- package/dist/components/DropdownMenu/index.cjs +10 -10
- package/dist/components/DropdownMenu/index.js +6 -6
- package/dist/components/EmptyState/index.cjs +3 -3
- package/dist/components/EmptyState/index.js +2 -2
- package/dist/components/Field/index.cjs +4 -4
- package/dist/components/Field/index.js +2 -2
- package/dist/components/FileInput/index.cjs +6 -6
- package/dist/components/FileInput/index.js +5 -5
- package/dist/components/InputGroup/index.cjs +7 -7
- package/dist/components/InputGroup/index.js +3 -3
- package/dist/components/Item/index.cjs +3 -3
- package/dist/components/Item/index.js +2 -2
- package/dist/components/Layout/LayoutHeader.d.ts +7 -1
- package/dist/components/Layout/LayoutHeader.d.ts.map +1 -1
- package/dist/components/Layout/index.cjs +9 -9
- package/dist/components/Layout/index.js +4 -4
- package/dist/components/Lightbox/index.cjs +6 -6
- package/dist/components/Lightbox/index.js +4 -4
- package/dist/components/List/index.cjs +5 -5
- package/dist/components/List/index.js +3 -3
- package/dist/components/MetadataList/index.cjs +4 -4
- package/dist/components/MetadataList/index.js +2 -2
- package/dist/components/MultiSelect/index.cjs +8 -8
- package/dist/components/MultiSelect/index.js +7 -7
- package/dist/components/NumberInput/index.cjs +7 -7
- package/dist/components/NumberInput/index.js +6 -6
- package/dist/components/Pagination/index.cjs +5 -5
- package/dist/components/Pagination/index.js +4 -4
- package/dist/components/PasswordInput/index.cjs +8 -8
- package/dist/components/PasswordInput/index.js +7 -7
- package/dist/components/Popover/index.cjs +6 -6
- package/dist/components/Popover/index.js +4 -4
- package/dist/components/RadioGroup/index.cjs +6 -6
- package/dist/components/RadioGroup/index.js +4 -4
- package/dist/components/Schedule/TimeGridView.d.ts.map +1 -1
- package/dist/components/Schedule/index.cjs +25 -25
- package/dist/components/Schedule/index.js +10 -10
- package/dist/components/SearchFilterInput/index.cjs +24 -24
- package/dist/components/SearchFilterInput/index.js +16 -16
- package/dist/components/Select/index.cjs +9 -9
- package/dist/components/Select/index.js +7 -7
- package/dist/components/SideNav/index.cjs +12 -12
- package/dist/components/SideNav/index.js +6 -6
- package/dist/components/Slider/index.cjs +4 -4
- package/dist/components/Slider/index.js +3 -3
- package/dist/components/Spinner/index.cjs +3 -3
- package/dist/components/Spinner/index.js +2 -2
- package/dist/components/SplitButton/index.cjs +8 -8
- package/dist/components/SplitButton/index.js +7 -7
- package/dist/components/Stepper/index.cjs +3 -3
- package/dist/components/Stepper/index.js +2 -2
- package/dist/components/Switch/index.cjs +4 -4
- package/dist/components/Switch/index.js +3 -3
- package/dist/components/Table/index.cjs +47 -47
- package/dist/components/Table/index.js +21 -21
- package/dist/components/Tabs/index.cjs +10 -10
- package/dist/components/Tabs/index.js +5 -5
- package/dist/components/TagsInput/index.cjs +8 -8
- package/dist/components/TagsInput/index.js +7 -7
- package/dist/components/Text/index.cjs +3 -3
- package/dist/components/Text/index.js +1 -1
- package/dist/components/TextArea/index.cjs +5 -5
- package/dist/components/TextArea/index.js +4 -4
- package/dist/components/TextInput/index.cjs +7 -7
- package/dist/components/TextInput/index.js +6 -6
- package/dist/components/Thumbnail/index.cjs +5 -5
- package/dist/components/Thumbnail/index.js +4 -4
- package/dist/components/TimeInput/index.cjs +6 -6
- package/dist/components/TimeInput/index.js +5 -5
- package/dist/components/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/components/Toast/index.cjs +7 -7
- package/dist/components/Toast/index.js +4 -4
- package/dist/components/ToggleButton/index.cjs +5 -5
- package/dist/components/ToggleButton/index.js +3 -3
- package/dist/components/TopNav/index.cjs +10 -10
- package/dist/components/TopNav/index.js +5 -5
- package/dist/index.cjs +215 -206
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +51 -50
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/dist/chunk-3IDT3PZC.cjs.map +0 -1
- package/dist/chunk-6I5QWA6A.js.map +0 -1
- package/dist/chunk-7TJ2O56S.js.map +0 -1
- package/dist/chunk-CZUMVOPH.js.map +0 -1
- package/dist/chunk-GJKRSQEA.cjs.map +0 -1
- package/dist/chunk-GUUCIG7U.js.map +0 -1
- package/dist/chunk-H2EMKCWT.js +0 -78
- package/dist/chunk-H2EMKCWT.js.map +0 -1
- package/dist/chunk-H5VMHDRD.cjs.map +0 -1
- package/dist/chunk-H7VK36SZ.cjs.map +0 -1
- package/dist/chunk-KUXFEAT4.cjs +0 -80
- package/dist/chunk-KUXFEAT4.cjs.map +0 -1
- package/dist/chunk-MHAXS4GO.cjs.map +0 -1
- package/dist/chunk-NXTDP6AX.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/SideNav/SideNav.recipe.ts","../src/components/SideNav/SideNavContext.ts","../src/components/SideNav/internal/SideNavCollapseButton.tsx","../src/components/SideNav/SideNav.tsx","../src/components/SideNav/SideNavHeading.tsx","../src/components/SideNav/SideNavItem.recipe.ts","../src/components/SideNav/SideNavItem.tsx","../src/components/SideNav/SideNavSection.tsx"],"names":["sva","createContext","use","css","jsx","Button","ChevronRight","ChevronLeft","useState","useCallback","useMemo","classes","jsxs","cx","MobileNav","Fragment","isReactNode","styles","useLinkComponent","Text","useAppShellMobile","useId","Icon","ActionElement","ChevronDown","Item","VisuallyHidden"],"mappings":"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","file":"chunk-ENVDR66N.cjs","sourcesContent":["import {sva, type RecipeVariantProps} from 'styled-system/css';\n\nexport const sideNavRecipe = sva({\n slots: [\n 'root',\n 'stickyTop',\n 'scrollable',\n 'stickyBottom',\n 'footerRow',\n 'footerIcons',\n 'topbarIcons',\n ],\n base: {\n root: {\n display: 'flex',\n flexDirection: 'column',\n h: '100%',\n w: '260px',\n bg: 'inherit',\n overflow: 'hidden',\n },\n stickyTop: {\n display: 'flex',\n flexDirection: 'column',\n flexShrink: 0,\n p: '2',\n gap: '2',\n },\n scrollable: {\n flex: 1,\n overflowY: 'auto',\n overflowX: 'hidden',\n px: '2',\n },\n stickyBottom: {\n display: 'flex',\n flexDirection: 'column',\n flexShrink: 0,\n mt: 'auto',\n p: '2',\n gap: '2',\n borderBlockStartWidth: 'default',\n borderBlockStartStyle: 'solid',\n borderBlockStartColor: 'border',\n },\n footerRow: {\n display: 'flex',\n alignItems: 'center',\n gap: '1',\n },\n footerIcons: {\n display: 'flex',\n alignItems: 'center',\n gap: '1',\n ms: 'auto',\n },\n topbarIcons: {\n display: 'flex',\n alignItems: 'center',\n gap: '1',\n ms: 'auto',\n },\n },\n variants: {\n isCollapsed: {\n true: {\n root: {\n w: '12',\n },\n scrollable: {\n flex: 'none',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n },\n footerRow: {\n flexDirection: 'column-reverse',\n alignItems: 'center',\n },\n footerIcons: {\n flexDirection: 'column',\n alignItems: 'center',\n ms: '0',\n },\n },\n false: {},\n },\n mode: {\n default: {},\n topbar: {\n root: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n h: '12',\n w: '100%',\n },\n },\n },\n },\n defaultVariants: {\n isCollapsed: false,\n mode: 'default',\n },\n});\n\nexport type SideNavVariants = RecipeVariantProps<typeof sideNavRecipe>;\n","import {createContext, use} from 'react';\n\nexport type SideNavRenderMode =\n | 'default'\n | 'topbar'\n | 'drawer'\n | 'drawer-content';\n\nexport interface SideNavCollapseState {\n isCollapsed: boolean;\n isCollapsible: boolean;\n toggle: () => void;\n}\n\nexport const SideNavRenderContext = createContext<SideNavRenderMode>('default');\nSideNavRenderContext.displayName = 'SideNavRenderContext';\nexport const SideNavCollapseContext = createContext<SideNavCollapseState>({\n isCollapsed: false,\n isCollapsible: false,\n toggle: () => {},\n});\nSideNavCollapseContext.displayName = 'SideNavCollapseContext';\n\nexport function useSideNavRenderMode(): SideNavRenderMode {\n return use(SideNavRenderContext);\n}\n\nexport function useSideNavCollapse(): SideNavCollapseState {\n return use(SideNavCollapseContext);\n}\n","import {ChevronLeft, ChevronRight} from 'lucide-react';\nimport {Button} from 'components/Button';\nimport {useSideNavCollapse} from 'components/SideNav/SideNavContext';\nimport {css} from 'styled-system/css';\n\nconst styles = {\n expanded: css({\n ms: '-2',\n }),\n};\n\n/**\n * Toggle button for collapsing and expanding the SideNav.\n * Reads collapse state from context when placed inside a SideNav.\n */\nexport function SideNavCollapseButton(): React.JSX.Element | null {\n const {isCollapsed, isCollapsible, toggle} = useSideNavCollapse();\n\n if (!isCollapsible) {\n return null;\n }\n\n const tooltipLabel = isCollapsed ? 'Expand sidebar' : 'Collapse sidebar';\n\n return (\n <Button\n className={isCollapsed ? undefined : styles.expanded}\n icon={isCollapsed ? ChevronRight : ChevronLeft}\n isIconOnly\n label={tooltipLabel}\n onClick={toggle}\n size=\"sm\"\n tooltip={tooltipLabel}\n variant=\"ghost\"\n />\n );\n}\n\nSideNavCollapseButton.displayName = 'SideNavCollapseButton';\n","import type {CSSProperties, ReactNode, Ref} from 'react';\nimport {useCallback, useMemo, useState} from 'react';\nimport {sideNavRecipe} from 'components/SideNav/SideNav.recipe';\nimport {\n SideNavCollapseContext,\n useSideNavRenderMode,\n} from 'components/SideNav/SideNavContext';\nimport {SideNavCollapseButton} from 'components/SideNav/internal/SideNavCollapseButton';\nimport {MobileNav} from 'internal/MobileNav';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\n\nexport interface SideNavProps {\n /**\n * Navigation item children rendered in the scrollable area.\n */\n children: ReactNode;\n /**\n * Additional CSS class names applied to the nav element.\n */\n className?: string;\n /**\n * Test ID applied to the nav element.\n */\n 'data-testid'?: string;\n /**\n * Content rendered in the sticky bottom section.\n */\n footer?: ReactNode;\n /**\n * Icon actions rendered alongside the footer.\n */\n footerIcons?: ReactNode;\n /**\n * Content rendered at the top of the nav (e.g. a logo or title).\n */\n header?: ReactNode;\n /**\n * Whether the nav can be collapsed to an icon-only toolbar.\n * @default false\n */\n isCollapsible?: boolean;\n /**\n * Ref forwarded to the nav element.\n */\n ref?: Ref<HTMLElement>;\n /**\n * Inline styles applied to the nav element.\n */\n style?: CSSProperties;\n /**\n * Non-scrollable content rendered below the header.\n */\n topContent?: ReactNode;\n}\n\n/**\n * Vertical side navigation panel with optional collapsing support.\n * Adapts to AppShell render modes (inline, drawer, topbar).\n */\nexport function SideNav({\n children,\n className,\n isCollapsible = false,\n 'data-testid': dataTestId,\n footer,\n footerIcons,\n header,\n ref,\n style,\n topContent,\n}: SideNavProps): React.JSX.Element {\n const renderMode = useSideNavRenderMode();\n const [isCollapsed, setIsCollapsed] = useState(false);\n const toggle = useCallback(() => {\n setIsCollapsed(prev => !prev);\n }, []);\n const collapseContext = useMemo(\n () => ({isCollapsed, isCollapsible, toggle}),\n [isCollapsed, isCollapsible, toggle],\n );\n\n if (renderMode === 'topbar') {\n const classes = sideNavRecipe({mode: 'topbar'});\n\n return (\n <div\n className={cx(classes.root, className)}\n data-testid={dataTestId}\n ref={ref as Ref<HTMLDivElement>}\n style={style}>\n {header}\n <div className={classes.topbarIcons}>{footerIcons}</div>\n </div>\n );\n }\n\n if (renderMode === 'drawer') {\n return (\n <MobileNav\n data-testid={dataTestId}\n header={header}\n ref={ref as Ref<HTMLDialogElement>}>\n {topContent}\n {children}\n {footer}\n {footerIcons}\n </MobileNav>\n );\n }\n\n if (renderMode === 'drawer-content') {\n return (\n <>\n {topContent}\n {children}\n {footer}\n {footerIcons}\n </>\n );\n }\n\n const classes = sideNavRecipe({isCollapsed});\n\n return (\n <SideNavCollapseContext value={collapseContext}>\n <nav\n aria-label=\"Side navigation\"\n className={cx(classes.root, className)}\n data-testid={dataTestId}\n ref={ref}\n style={style}>\n {isReactNode(header) || (!isCollapsed && isReactNode(topContent)) ? (\n <div className={classes.stickyTop}>\n {header}\n {!isCollapsed ? topContent : null}\n </div>\n ) : null}\n <div className={classes.scrollable}>{children}</div>\n {isReactNode(footer) || isReactNode(footerIcons) || isCollapsible ? (\n <div className={classes.stickyBottom}>\n {footer}\n <div className={classes.footerRow}>\n {isCollapsible ? <SideNavCollapseButton /> : null}\n {isReactNode(footerIcons) ? (\n <div className={classes.footerIcons}>{footerIcons}</div>\n ) : null}\n </div>\n </div>\n ) : null}\n </nav>\n </SideNavCollapseContext>\n );\n}\n\nSideNav.displayName = 'SideNav';\n","/* eslint-disable @eslint-react/static-components -- intentional polymorphism via as prop */\n\nimport type {CSSProperties, ReactNode, Ref} from 'react';\nimport {useLinkComponent} from 'components/Link';\nimport type {LinkComponent} from 'components/Link';\nimport {useSideNavCollapse} from 'components/SideNav/SideNavContext';\nimport {Text} from 'components/Text';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport {css} from 'styled-system/css';\n\nexport interface SideNavHeadingProps {\n as?: LinkComponent;\n className?: string;\n 'data-testid'?: string;\n headerEndContent?: ReactNode;\n heading?: string;\n headingHref?: string;\n href?: string;\n logo?: ReactNode;\n ref?: Ref<HTMLElement>;\n style?: CSSProperties;\n subheading?: string;\n superheading?: string;\n}\n\nconst styles = {\n root: css({\n display: 'flex',\n alignItems: 'center',\n gap: '2',\n minH: '8',\n px: '2',\n color: 'fg',\n textDecoration: 'none',\n }),\n collapsed: css({\n justifyContent: 'center',\n px: 0,\n }),\n logo: css({\n flexShrink: 0,\n display: 'inline-flex',\n alignItems: 'center',\n }),\n text: css({\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n minW: 0,\n }),\n endContent: css({\n ms: 'auto',\n flexShrink: 0,\n }),\n};\n\nexport function SideNavHeading({\n as,\n className,\n 'data-testid': dataTestId,\n headerEndContent,\n heading,\n headingHref,\n href,\n logo,\n ref,\n style,\n subheading,\n superheading,\n}: SideNavHeadingProps): React.JSX.Element | null {\n const LinkComponent = useLinkComponent(as);\n const {isCollapsed} = useSideNavCollapse();\n const resolvedHref = headingHref ?? href;\n const Element = resolvedHref != null ? LinkComponent : 'div';\n\n if (isCollapsed && !isReactNode(logo)) {\n return null;\n }\n\n return (\n <Element\n aria-label={isCollapsed && resolvedHref != null ? heading : undefined}\n className={cx(styles.root, isCollapsed && styles.collapsed, className)}\n data-testid={dataTestId}\n href={resolvedHref}\n ref={ref as Ref<HTMLAnchorElement & HTMLDivElement>}\n style={style}\n to={Element === 'a' ? undefined : resolvedHref}>\n {isReactNode(logo) ? <span className={styles.logo}>{logo}</span> : null}\n {!isCollapsed ? (\n <span className={styles.text}>\n {superheading != null ? (\n <Text color=\"secondary\" type=\"supporting\">\n {superheading}\n </Text>\n ) : null}\n {heading != null ? (\n <Text type=\"large\" weight=\"semibold\">\n {heading}\n </Text>\n ) : null}\n {subheading != null ? (\n <Text color=\"secondary\" type=\"supporting\">\n {subheading}\n </Text>\n ) : null}\n </span>\n ) : null}\n {!isCollapsed && isReactNode(headerEndContent) ? (\n <span className={styles.endContent}>{headerEndContent}</span>\n ) : null}\n </Element>\n );\n}\n\nSideNavHeading.displayName = 'SideNavHeading';\n","import {sva, type RecipeVariantProps} from 'styled-system/css';\n\n// Shared text/layout styling for the expanded-row label. `item` is the row\n// itself (leaf and split-action branches) and additionally carries the selected\n// highlight; `toggleLabel` is the inner content of the toggle-row button, which\n// stays base-only because the highlight lives on the wrapping button instead.\nconst expandedLabelBase = {\n color: 'fg.muted',\n fontSize: 'sm',\n fontWeight: 'medium',\n minH: '8',\n py: '0.5',\n // Override Item's default `bg.subtle` hover, which is invisible when the\n // SideNav sits on the AppShell's `bg.subtle` surface. Match TopNavItem's\n // darker `bg.hover` so the hover is visible in both navs.\n _hover: {bg: 'bg.hover'},\n} as const;\n\nexport const sideNavItemRecipe = sva({\n slots: [\n 'item',\n 'icon',\n 'collapsed',\n 'toggleRow',\n 'toggleLabel',\n 'toggleButton',\n 'chevron',\n 'childrenContainer',\n 'childrenInner',\n ],\n base: {\n item: expandedLabelBase,\n toggleLabel: expandedLabelBase,\n icon: {\n flexShrink: 0,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: 'var(--silver-sizes-icon-md)',\n },\n collapsed: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n w: '10',\n minH: '8',\n px: 0,\n py: '1.5',\n borderRadius: 'md',\n color: 'fg.muted',\n textDecoration: 'none',\n bg: 'transparent',\n borderWidth: 0,\n cursor: 'pointer',\n _hover: {bg: 'bg.hover'},\n _focusVisible: {\n outlineWidth: 'focus',\n outlineStyle: 'solid',\n outlineColor: 'primary',\n outlineOffset: 'focusOffset',\n },\n },\n toggleRow: {\n display: 'flex',\n w: '100%',\n cursor: 'pointer',\n borderRadius: 'md',\n _hover: {bg: 'bg.hover'},\n _focusVisible: {\n outlineWidth: 'focus',\n outlineStyle: 'solid',\n outlineColor: 'primary',\n outlineOffset: 'focusOffset',\n },\n },\n toggleButton: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n w: '7',\n h: '7',\n borderRadius: 'md',\n cursor: 'pointer',\n color: 'fg.muted',\n _hover: {bg: 'bg.hover'},\n _focusVisible: {\n outlineWidth: 'focus',\n outlineStyle: 'solid',\n outlineColor: 'primary',\n outlineOffset: 'focusOffset',\n },\n },\n chevron: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n transitionProperty: 'transform',\n transitionDuration: 'fast',\n transitionTimingFunction: 'default',\n },\n childrenContainer: {\n display: 'grid',\n gridTemplateRows: '1fr',\n transitionProperty: 'grid-template-rows',\n transitionDuration: 'fast',\n transitionTimingFunction: 'default',\n },\n childrenInner: {\n overflow: 'hidden',\n ps: '6',\n },\n },\n variants: {\n isSelected: {\n true: {\n item: {bg: 'bg.hover', color: 'fg', fontWeight: 'semibold'},\n toggleRow: {bg: 'bg.hover', color: 'fg', fontWeight: 'semibold'},\n collapsed: {bg: 'bg.hover', color: 'fg'},\n },\n false: {},\n },\n isDisabled: {\n true: {\n collapsed: {\n opacity: 0.5,\n cursor: 'not-allowed',\n pointerEvents: 'none',\n },\n toggleRow: {\n opacity: 0.5,\n cursor: 'not-allowed',\n pointerEvents: 'none',\n },\n },\n false: {},\n },\n isExpanded: {\n true: {\n chevron: {transform: 'rotate(180deg)'},\n },\n false: {\n childrenContainer: {gridTemplateRows: '0fr'},\n },\n },\n },\n defaultVariants: {\n isSelected: false,\n isDisabled: false,\n isExpanded: true,\n },\n});\n\nexport type SideNavItemVariants = RecipeVariantProps<typeof sideNavItemRecipe>;\n","import {ChevronDown} from 'lucide-react';\nimport type {CSSProperties, MouseEventHandler, ReactNode, Ref} from 'react';\nimport {useCallback, useId, useState} from 'react';\nimport {useAppShellMobile} from 'components/AppShell/AppShellMobileContext';\nimport {Icon, type IconComponent} from 'components/Icon';\nimport {Item} from 'components/Item';\nimport type {LinkComponent} from 'components/Link';\nimport {useSideNavCollapse} from 'components/SideNav/SideNavContext';\nimport {sideNavItemRecipe} from 'components/SideNav/SideNavItem.recipe';\nimport {ActionElement} from 'internal/ActionElement';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\n\nexport interface SideNavItemProps {\n /**\n * Custom link component used when href is set.\n */\n as?: LinkComponent;\n /**\n * Nested sub-items rendered below this item.\n */\n children?: ReactNode;\n /**\n * Additional CSS class names applied to the item.\n */\n className?: string;\n /**\n * Test ID applied to the item.\n */\n 'data-testid'?: string;\n /**\n * Content rendered at the end of the item (e.g. a badge).\n */\n endContent?: ReactNode;\n /**\n * Link destination. When set, the item renders as a link.\n */\n href?: string;\n /**\n * Icon rendered before the label.\n */\n icon?: IconComponent;\n /**\n * Whether the item can expand/collapse its children.\n * @default false\n */\n isCollapsible?: boolean;\n /**\n * Whether the item's children are initially expanded.\n * @default true\n */\n isDefaultExpanded?: boolean;\n /**\n * Whether the item is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Whether the item is currently selected.\n * @default false\n */\n isSelected?: boolean;\n /**\n * Accessible item label, also used as visible text.\n */\n label: string;\n /**\n * Click handler for the item.\n */\n onClick?: MouseEventHandler<HTMLElement>;\n /**\n * Ref forwarded to the root element.\n */\n ref?: Ref<HTMLElement>;\n /**\n * Inline styles applied to the item.\n */\n style?: CSSProperties;\n}\n\n/**\n * A single navigation item inside a SideNav. Renders as a link when\n * `href` is provided, or a button otherwise. Supports nested sub-items\n * via `children` with optional expand/collapse behavior.\n */\nexport function SideNavItem({\n as,\n children,\n className,\n 'data-testid': dataTestId,\n endContent,\n href,\n icon,\n isCollapsible: isItemCollapsible = false,\n isDefaultExpanded = true,\n isDisabled = false,\n isSelected = false,\n label,\n onClick,\n ref,\n style,\n}: SideNavItemProps): React.JSX.Element {\n const {closeMobileNav, isMobileNavOpen} = useAppShellMobile();\n const {isCollapsed} = useSideNavCollapse();\n const [isExpanded, setIsExpanded] = useState(isDefaultExpanded);\n const childrenId = useId();\n\n const hasChildren = isReactNode(children);\n const isExpandable = hasChildren && isItemCollapsible;\n const hasPrimaryAction = href != null || onClick != null;\n\n const classes = sideNavItemRecipe({\n isSelected,\n isDisabled,\n // Only expandable items animate their children open/closed and rotate a\n // chevron; non-expandable items keep their children fully shown.\n isExpanded: !isExpandable || isExpanded,\n });\n\n const toggleExpanded = useCallback(() => {\n setIsExpanded(prev => !prev);\n }, []);\n\n const handleClick: MouseEventHandler<HTMLElement> = event => {\n if (isDisabled) {\n event.preventDefault();\n return;\n }\n onClick?.(event);\n // Dismiss the mobile drawer after navigating, but only when it is actually\n // open so non-mobile render modes don't fire a no-op close on every click.\n if (isMobileNavOpen) {\n closeMobileNav();\n }\n };\n\n const iconSlot =\n icon != null ? (\n <span aria-hidden=\"true\" className={classes.icon}>\n <Icon icon={icon} size=\"sm\" />\n </span>\n ) : undefined;\n\n // --- Collapsed sidebar: icon-only rendering ---\n if (isCollapsed) {\n const collapsedClassNames = cx(classes.collapsed, className);\n\n return (\n <ActionElement\n aria-current={isSelected ? 'page' : undefined}\n aria-label={label}\n as={as}\n className={collapsedClassNames}\n data-testid={dataTestId}\n href={isDisabled ? undefined : href}\n isDisabled={href == null || isDisabled ? isDisabled : undefined}\n isLink={href != null && !isDisabled}\n onClick={handleClick}\n ref={ref}\n style={style}\n type=\"button\">\n {iconSlot}\n </ActionElement>\n );\n }\n\n // --- Expanded sidebar ---\n\n const chevronSlot = isExpandable ? (\n <span className={classes.chevron}>\n <Icon icon={ChevronDown} size=\"sm\" />\n </span>\n ) : null;\n\n const childrenContainer = isReactNode(children) ? (\n <div className={classes.childrenContainer} id={childrenId} role=\"group\">\n <div className={classes.childrenInner}>{children}</div>\n </div>\n ) : null;\n\n // Collapsible WITHOUT primary action: whole row toggles\n if (isExpandable && !hasPrimaryAction) {\n return (\n <>\n <button\n aria-controls={childrenId}\n aria-expanded={isExpanded}\n className={cx(classes.toggleRow, className)}\n data-testid={dataTestId}\n disabled={isDisabled}\n onClick={toggleExpanded}\n ref={ref as Ref<HTMLButtonElement>}\n style={style}\n type=\"button\">\n <Item\n as=\"span\"\n className={classes.toggleLabel}\n endContent={chevronSlot}\n label={label}\n startContent={iconSlot}\n />\n </button>\n {childrenContainer}\n </>\n );\n }\n\n // Collapsible WITH primary action: split-action (link + chevron)\n if (isExpandable && hasPrimaryAction) {\n return (\n <>\n <Item\n aria-current={isSelected ? 'page' : undefined}\n className={cx(classes.item, className)}\n data-testid={dataTestId}\n endContent={endContent}\n href={isDisabled ? undefined : href}\n isDisabled={isDisabled}\n label={label}\n linkComponent={as}\n onClick={handleClick}\n ref={ref}\n startContent={iconSlot}\n style={style}\n trailingContent={\n <button\n aria-controls={childrenId}\n aria-expanded={isExpanded}\n aria-label={isExpanded ? `Collapse ${label}` : `Expand ${label}`}\n className={classes.toggleButton}\n onClick={toggleExpanded}\n type=\"button\">\n {chevronSlot}\n </button>\n }\n />\n {childrenContainer}\n </>\n );\n }\n\n // Leaf item (no collapsible children): compose Item directly\n return (\n <>\n <Item\n aria-current={isSelected ? 'page' : undefined}\n className={cx(classes.item, className)}\n data-testid={dataTestId}\n endContent={endContent}\n href={isDisabled ? undefined : href}\n isDisabled={isDisabled}\n label={label}\n linkComponent={as}\n onClick={handleClick}\n ref={ref}\n startContent={iconSlot}\n style={style}\n />\n {childrenContainer}\n </>\n );\n}\n\nSideNavItem.displayName = 'SideNavItem';\n","import type {CSSProperties, ReactNode, Ref} from 'react';\nimport {useId} from 'react';\nimport {useSideNavCollapse} from 'components/SideNav/SideNavContext';\nimport {Text} from 'components/Text';\nimport {VisuallyHidden} from 'internal';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport {css} from 'styled-system/css';\n\nexport interface SideNavSectionProps {\n children: ReactNode;\n className?: string;\n 'data-testid'?: string;\n endContent?: ReactNode;\n isHeaderHidden?: boolean;\n ref?: Ref<HTMLDivElement>;\n style?: CSSProperties;\n subtitle?: string;\n title: string;\n}\n\nconst styles = {\n root: css({\n display: 'flex',\n flexDirection: 'column',\n py: '1',\n }),\n rootCollapsed: css({\n py: '0',\n }),\n header: css({\n display: 'flex',\n alignItems: 'center',\n gap: '2',\n px: '2',\n py: '1',\n }),\n titleContainer: css({\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n minW: 0,\n }),\n endContent: css({\n flexShrink: 0,\n display: 'flex',\n alignItems: 'center',\n }),\n items: css({\n display: 'flex',\n flexDirection: 'column',\n gap: '0.5',\n }),\n};\n\nexport function SideNavSection({\n children,\n className,\n 'data-testid': dataTestId,\n endContent,\n isHeaderHidden = false,\n ref,\n style,\n subtitle,\n title,\n}: SideNavSectionProps): React.JSX.Element {\n const {isCollapsed} = useSideNavCollapse();\n const id = useId();\n const titleId = `${id}-title`;\n const shouldHideHeader = isHeaderHidden || isCollapsed;\n const header = (\n <div className={styles.header}>\n <span className={styles.titleContainer}>\n <Text\n as=\"span\"\n color=\"secondary\"\n id={titleId}\n type=\"supporting\"\n weight=\"semibold\">\n {title}\n </Text>\n {subtitle != null ? (\n <Text as=\"span\" color=\"secondary\" type=\"supporting\">\n {subtitle}\n </Text>\n ) : null}\n </span>\n {isReactNode(endContent) ? (\n <span className={styles.endContent}>{endContent}</span>\n ) : null}\n </div>\n );\n\n return (\n <div\n aria-labelledby={titleId}\n className={cx(\n styles.root,\n isCollapsed && styles.rootCollapsed,\n className,\n )}\n data-testid={dataTestId}\n ref={ref}\n role=\"group\"\n style={style}>\n {shouldHideHeader ? <VisuallyHidden>{header}</VisuallyHidden> : header}\n <div className={styles.items}>{children}</div>\n </div>\n );\n}\n\nSideNavSection.displayName = 'SideNavSection';\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/SideNav/SideNav.recipe.ts","../src/components/SideNav/SideNavContext.ts","../src/components/SideNav/internal/SideNavCollapseButton.tsx","../src/components/SideNav/SideNav.tsx","../src/components/SideNav/SideNavHeading.tsx","../src/components/SideNav/SideNavItem.recipe.ts","../src/components/SideNav/SideNavItem.tsx","../src/components/SideNav/SideNavSection.tsx"],"names":["sva","createContext","use","css","jsx","Button","ChevronRight","ChevronLeft","useState","useCallback","useMemo","classes","jsxs","cx","MobileNav","Fragment","isReactNode","styles","useLinkComponent","Text","useAppShellMobile","useId","Icon","ActionElement","ChevronDown","Item","VisuallyHidden"],"mappings":"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","file":"chunk-MJHEPDDX.cjs","sourcesContent":["import {sva, type RecipeVariantProps} from 'styled-system/css';\n\nexport const sideNavRecipe = sva({\n slots: [\n 'root',\n 'stickyTop',\n 'scrollable',\n 'stickyBottom',\n 'footerRow',\n 'footerIcons',\n 'topbarIcons',\n ],\n base: {\n root: {\n display: 'flex',\n flexDirection: 'column',\n h: '100%',\n w: '260px',\n bg: 'inherit',\n overflow: 'hidden',\n },\n stickyTop: {\n display: 'flex',\n flexDirection: 'column',\n flexShrink: 0,\n p: '2',\n gap: '2',\n },\n scrollable: {\n flex: 1,\n overflowY: 'auto',\n overflowX: 'hidden',\n px: '2',\n },\n stickyBottom: {\n display: 'flex',\n flexDirection: 'column',\n flexShrink: 0,\n mt: 'auto',\n p: '2',\n gap: '2',\n borderBlockStartWidth: 'default',\n borderBlockStartStyle: 'solid',\n borderBlockStartColor: 'border',\n },\n footerRow: {\n display: 'flex',\n alignItems: 'center',\n gap: '1',\n },\n footerIcons: {\n display: 'flex',\n alignItems: 'center',\n gap: '1',\n ms: 'auto',\n },\n topbarIcons: {\n display: 'flex',\n alignItems: 'center',\n gap: '1',\n ms: 'auto',\n },\n },\n variants: {\n isCollapsed: {\n true: {\n root: {\n w: '12',\n },\n scrollable: {\n flex: 'none',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n },\n footerRow: {\n flexDirection: 'column-reverse',\n alignItems: 'center',\n },\n footerIcons: {\n flexDirection: 'column',\n alignItems: 'center',\n ms: '0',\n },\n },\n false: {},\n },\n mode: {\n default: {},\n topbar: {\n root: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n h: '12',\n w: '100%',\n },\n },\n },\n },\n defaultVariants: {\n isCollapsed: false,\n mode: 'default',\n },\n});\n\nexport type SideNavVariants = RecipeVariantProps<typeof sideNavRecipe>;\n","import {createContext, use} from 'react';\n\nexport type SideNavRenderMode =\n | 'default'\n | 'topbar'\n | 'drawer'\n | 'drawer-content';\n\nexport interface SideNavCollapseState {\n isCollapsed: boolean;\n isCollapsible: boolean;\n toggle: () => void;\n}\n\nexport const SideNavRenderContext = createContext<SideNavRenderMode>('default');\nSideNavRenderContext.displayName = 'SideNavRenderContext';\nexport const SideNavCollapseContext = createContext<SideNavCollapseState>({\n isCollapsed: false,\n isCollapsible: false,\n toggle: () => {},\n});\nSideNavCollapseContext.displayName = 'SideNavCollapseContext';\n\nexport function useSideNavRenderMode(): SideNavRenderMode {\n return use(SideNavRenderContext);\n}\n\nexport function useSideNavCollapse(): SideNavCollapseState {\n return use(SideNavCollapseContext);\n}\n","import {ChevronLeft, ChevronRight} from 'lucide-react';\nimport {Button} from 'components/Button';\nimport {useSideNavCollapse} from 'components/SideNav/SideNavContext';\nimport {css} from 'styled-system/css';\n\nconst styles = {\n expanded: css({\n ms: '-2',\n }),\n};\n\n/**\n * Toggle button for collapsing and expanding the SideNav.\n * Reads collapse state from context when placed inside a SideNav.\n */\nexport function SideNavCollapseButton(): React.JSX.Element | null {\n const {isCollapsed, isCollapsible, toggle} = useSideNavCollapse();\n\n if (!isCollapsible) {\n return null;\n }\n\n const tooltipLabel = isCollapsed ? 'Expand sidebar' : 'Collapse sidebar';\n\n return (\n <Button\n className={isCollapsed ? undefined : styles.expanded}\n icon={isCollapsed ? ChevronRight : ChevronLeft}\n isIconOnly\n label={tooltipLabel}\n onClick={toggle}\n size=\"sm\"\n tooltip={tooltipLabel}\n variant=\"ghost\"\n />\n );\n}\n\nSideNavCollapseButton.displayName = 'SideNavCollapseButton';\n","import type {CSSProperties, ReactNode, Ref} from 'react';\nimport {useCallback, useMemo, useState} from 'react';\nimport {sideNavRecipe} from 'components/SideNav/SideNav.recipe';\nimport {\n SideNavCollapseContext,\n useSideNavRenderMode,\n} from 'components/SideNav/SideNavContext';\nimport {SideNavCollapseButton} from 'components/SideNav/internal/SideNavCollapseButton';\nimport {MobileNav} from 'internal/MobileNav';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\n\nexport interface SideNavProps {\n /**\n * Navigation item children rendered in the scrollable area.\n */\n children: ReactNode;\n /**\n * Additional CSS class names applied to the nav element.\n */\n className?: string;\n /**\n * Test ID applied to the nav element.\n */\n 'data-testid'?: string;\n /**\n * Content rendered in the sticky bottom section.\n */\n footer?: ReactNode;\n /**\n * Icon actions rendered alongside the footer.\n */\n footerIcons?: ReactNode;\n /**\n * Content rendered at the top of the nav (e.g. a logo or title).\n */\n header?: ReactNode;\n /**\n * Whether the nav can be collapsed to an icon-only toolbar.\n * @default false\n */\n isCollapsible?: boolean;\n /**\n * Ref forwarded to the nav element.\n */\n ref?: Ref<HTMLElement>;\n /**\n * Inline styles applied to the nav element.\n */\n style?: CSSProperties;\n /**\n * Non-scrollable content rendered below the header.\n */\n topContent?: ReactNode;\n}\n\n/**\n * Vertical side navigation panel with optional collapsing support.\n * Adapts to AppShell render modes (inline, drawer, topbar).\n */\nexport function SideNav({\n children,\n className,\n isCollapsible = false,\n 'data-testid': dataTestId,\n footer,\n footerIcons,\n header,\n ref,\n style,\n topContent,\n}: SideNavProps): React.JSX.Element {\n const renderMode = useSideNavRenderMode();\n const [isCollapsed, setIsCollapsed] = useState(false);\n const toggle = useCallback(() => {\n setIsCollapsed(prev => !prev);\n }, []);\n const collapseContext = useMemo(\n () => ({isCollapsed, isCollapsible, toggle}),\n [isCollapsed, isCollapsible, toggle],\n );\n\n if (renderMode === 'topbar') {\n const classes = sideNavRecipe({mode: 'topbar'});\n\n return (\n <div\n className={cx(classes.root, className)}\n data-testid={dataTestId}\n ref={ref as Ref<HTMLDivElement>}\n style={style}>\n {header}\n <div className={classes.topbarIcons}>{footerIcons}</div>\n </div>\n );\n }\n\n if (renderMode === 'drawer') {\n return (\n <MobileNav\n data-testid={dataTestId}\n header={header}\n ref={ref as Ref<HTMLDialogElement>}>\n {topContent}\n {children}\n {footer}\n {footerIcons}\n </MobileNav>\n );\n }\n\n if (renderMode === 'drawer-content') {\n return (\n <>\n {topContent}\n {children}\n {footer}\n {footerIcons}\n </>\n );\n }\n\n const classes = sideNavRecipe({isCollapsed});\n\n return (\n <SideNavCollapseContext value={collapseContext}>\n <nav\n aria-label=\"Side navigation\"\n className={cx(classes.root, className)}\n data-testid={dataTestId}\n ref={ref}\n style={style}>\n {isReactNode(header) || (!isCollapsed && isReactNode(topContent)) ? (\n <div className={classes.stickyTop}>\n {header}\n {!isCollapsed ? topContent : null}\n </div>\n ) : null}\n <div className={classes.scrollable}>{children}</div>\n {isReactNode(footer) || isReactNode(footerIcons) || isCollapsible ? (\n <div className={classes.stickyBottom}>\n {footer}\n <div className={classes.footerRow}>\n {isCollapsible ? <SideNavCollapseButton /> : null}\n {isReactNode(footerIcons) ? (\n <div className={classes.footerIcons}>{footerIcons}</div>\n ) : null}\n </div>\n </div>\n ) : null}\n </nav>\n </SideNavCollapseContext>\n );\n}\n\nSideNav.displayName = 'SideNav';\n","/* eslint-disable @eslint-react/static-components -- intentional polymorphism via as prop */\n\nimport type {CSSProperties, ReactNode, Ref} from 'react';\nimport {useLinkComponent} from 'components/Link';\nimport type {LinkComponent} from 'components/Link';\nimport {useSideNavCollapse} from 'components/SideNav/SideNavContext';\nimport {Text} from 'components/Text';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport {css} from 'styled-system/css';\n\nexport interface SideNavHeadingProps {\n as?: LinkComponent;\n className?: string;\n 'data-testid'?: string;\n headerEndContent?: ReactNode;\n heading?: string;\n headingHref?: string;\n href?: string;\n logo?: ReactNode;\n ref?: Ref<HTMLElement>;\n style?: CSSProperties;\n subheading?: string;\n superheading?: string;\n}\n\nconst styles = {\n root: css({\n display: 'flex',\n alignItems: 'center',\n gap: '2',\n minH: '8',\n px: '2',\n color: 'fg',\n textDecoration: 'none',\n }),\n collapsed: css({\n justifyContent: 'center',\n px: 0,\n }),\n logo: css({\n flexShrink: 0,\n display: 'inline-flex',\n alignItems: 'center',\n }),\n text: css({\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n minW: 0,\n }),\n endContent: css({\n ms: 'auto',\n flexShrink: 0,\n }),\n};\n\nexport function SideNavHeading({\n as,\n className,\n 'data-testid': dataTestId,\n headerEndContent,\n heading,\n headingHref,\n href,\n logo,\n ref,\n style,\n subheading,\n superheading,\n}: SideNavHeadingProps): React.JSX.Element | null {\n const LinkComponent = useLinkComponent(as);\n const {isCollapsed} = useSideNavCollapse();\n const resolvedHref = headingHref ?? href;\n const Element = resolvedHref != null ? LinkComponent : 'div';\n\n if (isCollapsed && !isReactNode(logo)) {\n return null;\n }\n\n return (\n <Element\n aria-label={isCollapsed && resolvedHref != null ? heading : undefined}\n className={cx(styles.root, isCollapsed && styles.collapsed, className)}\n data-testid={dataTestId}\n href={resolvedHref}\n ref={ref as Ref<HTMLAnchorElement & HTMLDivElement>}\n style={style}\n to={Element === 'a' ? undefined : resolvedHref}>\n {isReactNode(logo) ? <span className={styles.logo}>{logo}</span> : null}\n {!isCollapsed ? (\n <span className={styles.text}>\n {superheading != null ? (\n <Text color=\"secondary\" type=\"supporting\">\n {superheading}\n </Text>\n ) : null}\n {heading != null ? (\n <Text type=\"large\" weight=\"semibold\">\n {heading}\n </Text>\n ) : null}\n {subheading != null ? (\n <Text color=\"secondary\" type=\"supporting\">\n {subheading}\n </Text>\n ) : null}\n </span>\n ) : null}\n {!isCollapsed && isReactNode(headerEndContent) ? (\n <span className={styles.endContent}>{headerEndContent}</span>\n ) : null}\n </Element>\n );\n}\n\nSideNavHeading.displayName = 'SideNavHeading';\n","import {sva, type RecipeVariantProps} from 'styled-system/css';\n\n// Shared text/layout styling for the expanded-row label. `item` is the row\n// itself (leaf and split-action branches) and additionally carries the selected\n// highlight; `toggleLabel` is the inner content of the toggle-row button, which\n// stays base-only because the highlight lives on the wrapping button instead.\nconst expandedLabelBase = {\n color: 'fg.muted',\n fontSize: 'sm',\n fontWeight: 'medium',\n minH: '8',\n py: '0.5',\n // Override Item's default `bg.subtle` hover, which is invisible when the\n // SideNav sits on the AppShell's `bg.subtle` surface. Match TopNavItem's\n // darker `bg.hover` so the hover is visible in both navs.\n _hover: {bg: 'bg.hover'},\n} as const;\n\nexport const sideNavItemRecipe = sva({\n slots: [\n 'item',\n 'icon',\n 'collapsed',\n 'toggleRow',\n 'toggleLabel',\n 'toggleButton',\n 'chevron',\n 'childrenContainer',\n 'childrenInner',\n ],\n base: {\n item: expandedLabelBase,\n toggleLabel: expandedLabelBase,\n icon: {\n flexShrink: 0,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: 'var(--silver-sizes-icon-md)',\n },\n collapsed: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n w: '10',\n minH: '8',\n px: 0,\n py: '1.5',\n borderRadius: 'md',\n color: 'fg.muted',\n textDecoration: 'none',\n bg: 'transparent',\n borderWidth: 0,\n cursor: 'pointer',\n _hover: {bg: 'bg.hover'},\n _focusVisible: {\n outlineWidth: 'focus',\n outlineStyle: 'solid',\n outlineColor: 'primary',\n outlineOffset: 'focusOffset',\n },\n },\n toggleRow: {\n display: 'flex',\n w: '100%',\n cursor: 'pointer',\n borderRadius: 'md',\n _hover: {bg: 'bg.hover'},\n _focusVisible: {\n outlineWidth: 'focus',\n outlineStyle: 'solid',\n outlineColor: 'primary',\n outlineOffset: 'focusOffset',\n },\n },\n toggleButton: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n w: '7',\n h: '7',\n borderRadius: 'md',\n cursor: 'pointer',\n color: 'fg.muted',\n _hover: {bg: 'bg.hover'},\n _focusVisible: {\n outlineWidth: 'focus',\n outlineStyle: 'solid',\n outlineColor: 'primary',\n outlineOffset: 'focusOffset',\n },\n },\n chevron: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n transitionProperty: 'transform',\n transitionDuration: 'fast',\n transitionTimingFunction: 'default',\n },\n childrenContainer: {\n display: 'grid',\n gridTemplateRows: '1fr',\n transitionProperty: 'grid-template-rows',\n transitionDuration: 'fast',\n transitionTimingFunction: 'default',\n },\n childrenInner: {\n overflow: 'hidden',\n ps: '6',\n },\n },\n variants: {\n isSelected: {\n true: {\n item: {bg: 'bg.hover', color: 'fg', fontWeight: 'semibold'},\n toggleRow: {bg: 'bg.hover', color: 'fg', fontWeight: 'semibold'},\n collapsed: {bg: 'bg.hover', color: 'fg'},\n },\n false: {},\n },\n isDisabled: {\n true: {\n collapsed: {\n opacity: 0.5,\n cursor: 'not-allowed',\n pointerEvents: 'none',\n },\n toggleRow: {\n opacity: 0.5,\n cursor: 'not-allowed',\n pointerEvents: 'none',\n },\n },\n false: {},\n },\n isExpanded: {\n true: {\n chevron: {transform: 'rotate(180deg)'},\n },\n false: {\n childrenContainer: {gridTemplateRows: '0fr'},\n },\n },\n },\n defaultVariants: {\n isSelected: false,\n isDisabled: false,\n isExpanded: true,\n },\n});\n\nexport type SideNavItemVariants = RecipeVariantProps<typeof sideNavItemRecipe>;\n","import {ChevronDown} from 'lucide-react';\nimport type {CSSProperties, MouseEventHandler, ReactNode, Ref} from 'react';\nimport {useCallback, useId, useState} from 'react';\nimport {useAppShellMobile} from 'components/AppShell/AppShellMobileContext';\nimport {Icon, type IconComponent} from 'components/Icon';\nimport {Item} from 'components/Item';\nimport type {LinkComponent} from 'components/Link';\nimport {useSideNavCollapse} from 'components/SideNav/SideNavContext';\nimport {sideNavItemRecipe} from 'components/SideNav/SideNavItem.recipe';\nimport {ActionElement} from 'internal/ActionElement';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\n\nexport interface SideNavItemProps {\n /**\n * Custom link component used when href is set.\n */\n as?: LinkComponent;\n /**\n * Nested sub-items rendered below this item.\n */\n children?: ReactNode;\n /**\n * Additional CSS class names applied to the item.\n */\n className?: string;\n /**\n * Test ID applied to the item.\n */\n 'data-testid'?: string;\n /**\n * Content rendered at the end of the item (e.g. a badge).\n */\n endContent?: ReactNode;\n /**\n * Link destination. When set, the item renders as a link.\n */\n href?: string;\n /**\n * Icon rendered before the label.\n */\n icon?: IconComponent;\n /**\n * Whether the item can expand/collapse its children.\n * @default false\n */\n isCollapsible?: boolean;\n /**\n * Whether the item's children are initially expanded.\n * @default true\n */\n isDefaultExpanded?: boolean;\n /**\n * Whether the item is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Whether the item is currently selected.\n * @default false\n */\n isSelected?: boolean;\n /**\n * Accessible item label, also used as visible text.\n */\n label: string;\n /**\n * Click handler for the item.\n */\n onClick?: MouseEventHandler<HTMLElement>;\n /**\n * Ref forwarded to the root element.\n */\n ref?: Ref<HTMLElement>;\n /**\n * Inline styles applied to the item.\n */\n style?: CSSProperties;\n}\n\n/**\n * A single navigation item inside a SideNav. Renders as a link when\n * `href` is provided, or a button otherwise. Supports nested sub-items\n * via `children` with optional expand/collapse behavior.\n */\nexport function SideNavItem({\n as,\n children,\n className,\n 'data-testid': dataTestId,\n endContent,\n href,\n icon,\n isCollapsible: isItemCollapsible = false,\n isDefaultExpanded = true,\n isDisabled = false,\n isSelected = false,\n label,\n onClick,\n ref,\n style,\n}: SideNavItemProps): React.JSX.Element {\n const {closeMobileNav, isMobileNavOpen} = useAppShellMobile();\n const {isCollapsed} = useSideNavCollapse();\n const [isExpanded, setIsExpanded] = useState(isDefaultExpanded);\n const childrenId = useId();\n\n const hasChildren = isReactNode(children);\n const isExpandable = hasChildren && isItemCollapsible;\n const hasPrimaryAction = href != null || onClick != null;\n\n const classes = sideNavItemRecipe({\n isSelected,\n isDisabled,\n // Only expandable items animate their children open/closed and rotate a\n // chevron; non-expandable items keep their children fully shown.\n isExpanded: !isExpandable || isExpanded,\n });\n\n const toggleExpanded = useCallback(() => {\n setIsExpanded(prev => !prev);\n }, []);\n\n const handleClick: MouseEventHandler<HTMLElement> = event => {\n if (isDisabled) {\n event.preventDefault();\n return;\n }\n onClick?.(event);\n // Dismiss the mobile drawer after navigating, but only when it is actually\n // open so non-mobile render modes don't fire a no-op close on every click.\n if (isMobileNavOpen) {\n closeMobileNav();\n }\n };\n\n const iconSlot =\n icon != null ? (\n <span aria-hidden=\"true\" className={classes.icon}>\n <Icon icon={icon} size=\"sm\" />\n </span>\n ) : undefined;\n\n // --- Collapsed sidebar: icon-only rendering ---\n if (isCollapsed) {\n const collapsedClassNames = cx(classes.collapsed, className);\n\n return (\n <ActionElement\n aria-current={isSelected ? 'page' : undefined}\n aria-label={label}\n as={as}\n className={collapsedClassNames}\n data-testid={dataTestId}\n href={isDisabled ? undefined : href}\n isDisabled={href == null || isDisabled ? isDisabled : undefined}\n isLink={href != null && !isDisabled}\n onClick={handleClick}\n ref={ref}\n style={style}\n type=\"button\">\n {iconSlot}\n </ActionElement>\n );\n }\n\n // --- Expanded sidebar ---\n\n const chevronSlot = isExpandable ? (\n <span className={classes.chevron}>\n <Icon icon={ChevronDown} size=\"sm\" />\n </span>\n ) : null;\n\n const childrenContainer = isReactNode(children) ? (\n <div className={classes.childrenContainer} id={childrenId} role=\"group\">\n <div className={classes.childrenInner}>{children}</div>\n </div>\n ) : null;\n\n // Collapsible WITHOUT primary action: whole row toggles\n if (isExpandable && !hasPrimaryAction) {\n return (\n <>\n <button\n aria-controls={childrenId}\n aria-expanded={isExpanded}\n className={cx(classes.toggleRow, className)}\n data-testid={dataTestId}\n disabled={isDisabled}\n onClick={toggleExpanded}\n ref={ref as Ref<HTMLButtonElement>}\n style={style}\n type=\"button\">\n <Item\n as=\"span\"\n className={classes.toggleLabel}\n endContent={chevronSlot}\n label={label}\n startContent={iconSlot}\n />\n </button>\n {childrenContainer}\n </>\n );\n }\n\n // Collapsible WITH primary action: split-action (link + chevron)\n if (isExpandable && hasPrimaryAction) {\n return (\n <>\n <Item\n aria-current={isSelected ? 'page' : undefined}\n className={cx(classes.item, className)}\n data-testid={dataTestId}\n endContent={endContent}\n href={isDisabled ? undefined : href}\n isDisabled={isDisabled}\n label={label}\n linkComponent={as}\n onClick={handleClick}\n ref={ref}\n startContent={iconSlot}\n style={style}\n trailingContent={\n <button\n aria-controls={childrenId}\n aria-expanded={isExpanded}\n aria-label={isExpanded ? `Collapse ${label}` : `Expand ${label}`}\n className={classes.toggleButton}\n onClick={toggleExpanded}\n type=\"button\">\n {chevronSlot}\n </button>\n }\n />\n {childrenContainer}\n </>\n );\n }\n\n // Leaf item (no collapsible children): compose Item directly\n return (\n <>\n <Item\n aria-current={isSelected ? 'page' : undefined}\n className={cx(classes.item, className)}\n data-testid={dataTestId}\n endContent={endContent}\n href={isDisabled ? undefined : href}\n isDisabled={isDisabled}\n label={label}\n linkComponent={as}\n onClick={handleClick}\n ref={ref}\n startContent={iconSlot}\n style={style}\n />\n {childrenContainer}\n </>\n );\n}\n\nSideNavItem.displayName = 'SideNavItem';\n","import type {CSSProperties, ReactNode, Ref} from 'react';\nimport {useId} from 'react';\nimport {useSideNavCollapse} from 'components/SideNav/SideNavContext';\nimport {Text} from 'components/Text';\nimport {VisuallyHidden} from 'internal';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport {css} from 'styled-system/css';\n\nexport interface SideNavSectionProps {\n children: ReactNode;\n className?: string;\n 'data-testid'?: string;\n endContent?: ReactNode;\n isHeaderHidden?: boolean;\n ref?: Ref<HTMLDivElement>;\n style?: CSSProperties;\n subtitle?: string;\n title: string;\n}\n\nconst styles = {\n root: css({\n display: 'flex',\n flexDirection: 'column',\n py: '1',\n }),\n rootCollapsed: css({\n py: '0',\n }),\n header: css({\n display: 'flex',\n alignItems: 'center',\n gap: '2',\n px: '2',\n py: '1',\n }),\n titleContainer: css({\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n minW: 0,\n }),\n endContent: css({\n flexShrink: 0,\n display: 'flex',\n alignItems: 'center',\n }),\n items: css({\n display: 'flex',\n flexDirection: 'column',\n gap: '0.5',\n }),\n};\n\nexport function SideNavSection({\n children,\n className,\n 'data-testid': dataTestId,\n endContent,\n isHeaderHidden = false,\n ref,\n style,\n subtitle,\n title,\n}: SideNavSectionProps): React.JSX.Element {\n const {isCollapsed} = useSideNavCollapse();\n const id = useId();\n const titleId = `${id}-title`;\n const shouldHideHeader = isHeaderHidden || isCollapsed;\n const header = (\n <div className={styles.header}>\n <span className={styles.titleContainer}>\n <Text\n as=\"span\"\n color=\"secondary\"\n id={titleId}\n type=\"supporting\"\n weight=\"semibold\">\n {title}\n </Text>\n {subtitle != null ? (\n <Text as=\"span\" color=\"secondary\" type=\"supporting\">\n {subtitle}\n </Text>\n ) : null}\n </span>\n {isReactNode(endContent) ? (\n <span className={styles.endContent}>{endContent}</span>\n ) : null}\n </div>\n );\n\n return (\n <div\n aria-labelledby={titleId}\n className={cx(\n styles.root,\n isCollapsed && styles.rootCollapsed,\n className,\n )}\n data-testid={dataTestId}\n ref={ref}\n role=\"group\"\n style={style}>\n {shouldHideHeader ? <VisuallyHidden>{header}</VisuallyHidden> : header}\n <div className={styles.items}>{children}</div>\n </div>\n );\n}\n\nSideNavSection.displayName = 'SideNavSection';\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { inputStyles, inputRecipe } from './chunk-3M23WX6K.js';
|
|
2
|
-
import { getNecessity, Field } from './chunk-
|
|
2
|
+
import { getNecessity, Field } from './chunk-USEA7DB5.js';
|
|
3
3
|
import { getStatusMessageID, getDescribedBy, getStatusIcon } from './chunk-G6HS52US.js';
|
|
4
|
-
import { Spinner } from './chunk-
|
|
5
|
-
import { Text } from './chunk-
|
|
4
|
+
import { Spinner } from './chunk-X2P5SPGB.js';
|
|
5
|
+
import { Text } from './chunk-5GSRIOXE.js';
|
|
6
6
|
import { isReactNode } from './chunk-2PSZAWLC.js';
|
|
7
7
|
import { Icon } from './chunk-IUW777WZ.js';
|
|
8
8
|
import { css } from './chunk-OD4DHHZH.js';
|
|
@@ -148,5 +148,5 @@ function TextArea({
|
|
|
148
148
|
TextArea.displayName = "TextArea";
|
|
149
149
|
|
|
150
150
|
export { TextArea };
|
|
151
|
-
//# sourceMappingURL=chunk-
|
|
152
|
-
//# sourceMappingURL=chunk-
|
|
151
|
+
//# sourceMappingURL=chunk-MUXUHIIV.js.map
|
|
152
|
+
//# sourceMappingURL=chunk-MUXUHIIV.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/TextArea/TextArea.tsx"],"names":[],"mappings":"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","file":"chunk-ZSB43DEI.js","sourcesContent":["import {\n useId,\n type ChangeEvent,\n type CSSProperties,\n type ClipboardEvent,\n type FocusEvent,\n type ReactNode,\n type Ref,\n} from 'react';\nimport {\n Field,\n getNecessity,\n type FieldNecessity,\n type InputSize,\n type InputStatus,\n} from 'components/Field';\nimport {inputRecipe, inputStyles} from 'components/Field/inputStyles';\nimport {\n getDescribedBy,\n getStatusIcon,\n getStatusMessageID,\n} from 'components/Field/inputUtils';\nimport {Icon, type IconComponent} from 'components/Icon';\nimport {Spinner} from 'components/Spinner';\nimport {Text} from 'components/Text';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport {css} from 'styled-system/css';\n\nexport type TextAreaProps = {\n /**\n * Additional CSS class names applied to the textarea wrapper.\n */\n className?: string;\n /**\n * Test ID applied to the textarea element.\n */\n 'data-testid'?: string;\n /**\n * Supporting text displayed below the label.\n */\n description?: ReactNode;\n /**\n * Whether to focus the textarea on mount.\n * @default false\n */\n hasAutoFocus?: boolean;\n /**\n * Whether the browser spellcheck is enabled.\n * @default true\n */\n hasSpellCheck?: boolean;\n /**\n * HTML name attribute.\n */\n htmlName?: string;\n /**\n * Whether the textarea 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 textarea is loading.\n * @default false\n */\n isLoading?: boolean;\n /**\n * Field label.\n */\n label: string;\n /**\n * Icon shown before the label.\n */\n labelIcon?: IconComponent;\n /**\n * Tooltip content shown next to the label.\n */\n labelTooltip?: ReactNode;\n /**\n * Maximum character count. Displays a counter when set.\n */\n maxLength?: number;\n /**\n * Called when the textarea loses focus.\n */\n onBlur?: (event: FocusEvent<HTMLTextAreaElement>) => void;\n /**\n * Called with the next string value.\n */\n onChange: (value: string, event: ChangeEvent<HTMLTextAreaElement>) => void;\n /**\n * Called when the textarea receives focus.\n */\n onFocus?: (event: FocusEvent<HTMLTextAreaElement>) => void;\n /**\n * Called when content is pasted into the textarea.\n */\n onPaste?: (event: ClipboardEvent<HTMLTextAreaElement>) => void;\n /**\n * Placeholder text.\n */\n placeholder?: string;\n /**\n * Ref forwarded to the textarea element.\n */\n ref?: Ref<HTMLTextAreaElement>;\n /**\n * Number of visible text rows.\n * @default 3\n */\n rows?: number;\n /**\n * Visual size.\n * @default 'md'\n */\n size?: InputSize;\n /**\n * Icon shown before the textarea.\n */\n startIcon?: IconComponent;\n /**\n * Validation status displayed below the textarea.\n */\n status?: InputStatus;\n /**\n * Inline styles applied to the textarea wrapper.\n */\n style?: CSSProperties;\n /**\n * Controlled textarea value.\n */\n value: string;\n} & FieldNecessity;\n\nconst styles = {\n wrapper: css({\n alignItems: 'flex-start',\n py: '2',\n }),\n textarea: css({\n resize: 'vertical',\n minH: '20',\n }),\n counter: css({\n alignSelf: 'flex-end',\n mt: '1',\n }),\n counterOverLimit: css({\n color: 'status.error.fg',\n }),\n} as const;\n\n/**\n * Multi-line text input field with optional character counter.\n */\nexport function TextArea({\n label,\n value,\n onChange,\n rows = 3,\n size = 'md',\n description,\n isLabelHidden = false,\n isOptional,\n isRequired,\n isDisabled = false,\n isLoading = false,\n hasSpellCheck = true,\n hasAutoFocus = false,\n htmlName,\n status,\n labelIcon,\n labelTooltip,\n startIcon,\n placeholder,\n maxLength,\n onPaste,\n onFocus,\n onBlur,\n className,\n 'data-testid': dataTestId,\n style,\n ref,\n}: TextAreaProps): React.JSX.Element {\n const inputId = useId();\n const descriptionID = isReactNode(description)\n ? `${inputId}-description`\n : undefined;\n const statusMessageID = getStatusMessageID(inputId, status);\n const counterID = maxLength != null ? `${inputId}-counter` : undefined;\n const describedBy = getDescribedBy(descriptionID, statusMessageID, counterID);\n const isOverLimit = maxLength != null && value.length > maxLength;\n\n const necessity = getNecessity(isOptional, isRequired);\n\n return (\n <Field\n className={className}\n description={description}\n descriptionID={descriptionID}\n inputId={inputId}\n isDisabled={isDisabled}\n isLabelHidden={isLabelHidden}\n {...necessity}\n label={label}\n labelIcon={labelIcon}\n labelTooltip={labelTooltip}\n status={\n status == null ? undefined : {...status, messageID: statusMessageID}\n }\n style={style}>\n <div\n className={cx(\n inputRecipe({\n size,\n status: status?.type,\n isDisabled,\n }),\n styles.wrapper,\n )}>\n {startIcon != null ? (\n <span className={inputStyles.iconSlot}>\n <Icon color=\"secondary\" icon={startIcon} size=\"sm\" />\n </span>\n ) : null}\n <textarea\n aria-busy={isLoading || undefined}\n aria-describedby={describedBy}\n aria-invalid={status?.type === 'error' || isOverLimit || undefined}\n aria-required={isRequired ?? undefined}\n // eslint-disable-next-line jsx-a11y-x/no-autofocus\n autoFocus={hasAutoFocus}\n className={cx(inputStyles.control, styles.textarea)}\n data-autofocus={hasAutoFocus || undefined}\n data-testid={dataTestId}\n disabled={isDisabled}\n id={inputId}\n maxLength={maxLength}\n name={htmlName}\n onBlur={onBlur}\n onChange={event => onChange(event.target.value, event)}\n onFocus={onFocus}\n onPaste={onPaste}\n placeholder={placeholder}\n ref={ref}\n rows={rows}\n spellCheck={hasSpellCheck}\n value={value}\n />\n {isLoading ? <Spinner size=\"sm\" /> : null}\n {status != null ? (\n <span className={inputStyles.iconSlot}>\n {getStatusIcon(status.type)}\n </span>\n ) : null}\n </div>\n {maxLength != null ? (\n <Text\n as=\"span\"\n className={cx(\n styles.counter,\n isOverLimit ? styles.counterOverLimit : undefined,\n )}\n color=\"secondary\"\n id={counterID}\n type=\"supporting\">\n {value.length}/{maxLength}\n </Text>\n ) : null}\n </Field>\n );\n}\n\nTextArea.displayName = 'TextArea';\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/TextArea/TextArea.tsx"],"names":[],"mappings":"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","file":"chunk-MUXUHIIV.js","sourcesContent":["import {\n useId,\n type ChangeEvent,\n type CSSProperties,\n type ClipboardEvent,\n type FocusEvent,\n type ReactNode,\n type Ref,\n} from 'react';\nimport {\n Field,\n getNecessity,\n type FieldNecessity,\n type InputSize,\n type InputStatus,\n} from 'components/Field';\nimport {inputRecipe, inputStyles} from 'components/Field/inputStyles';\nimport {\n getDescribedBy,\n getStatusIcon,\n getStatusMessageID,\n} from 'components/Field/inputUtils';\nimport {Icon, type IconComponent} from 'components/Icon';\nimport {Spinner} from 'components/Spinner';\nimport {Text} from 'components/Text';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport {css} from 'styled-system/css';\n\nexport type TextAreaProps = {\n /**\n * Additional CSS class names applied to the textarea wrapper.\n */\n className?: string;\n /**\n * Test ID applied to the textarea element.\n */\n 'data-testid'?: string;\n /**\n * Supporting text displayed below the label.\n */\n description?: ReactNode;\n /**\n * Whether to focus the textarea on mount.\n * @default false\n */\n hasAutoFocus?: boolean;\n /**\n * Whether the browser spellcheck is enabled.\n * @default true\n */\n hasSpellCheck?: boolean;\n /**\n * HTML name attribute.\n */\n htmlName?: string;\n /**\n * Whether the textarea 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 textarea is loading.\n * @default false\n */\n isLoading?: boolean;\n /**\n * Field label.\n */\n label: string;\n /**\n * Icon shown before the label.\n */\n labelIcon?: IconComponent;\n /**\n * Tooltip content shown next to the label.\n */\n labelTooltip?: ReactNode;\n /**\n * Maximum character count. Displays a counter when set.\n */\n maxLength?: number;\n /**\n * Called when the textarea loses focus.\n */\n onBlur?: (event: FocusEvent<HTMLTextAreaElement>) => void;\n /**\n * Called with the next string value.\n */\n onChange: (value: string, event: ChangeEvent<HTMLTextAreaElement>) => void;\n /**\n * Called when the textarea receives focus.\n */\n onFocus?: (event: FocusEvent<HTMLTextAreaElement>) => void;\n /**\n * Called when content is pasted into the textarea.\n */\n onPaste?: (event: ClipboardEvent<HTMLTextAreaElement>) => void;\n /**\n * Placeholder text.\n */\n placeholder?: string;\n /**\n * Ref forwarded to the textarea element.\n */\n ref?: Ref<HTMLTextAreaElement>;\n /**\n * Number of visible text rows.\n * @default 3\n */\n rows?: number;\n /**\n * Visual size.\n * @default 'md'\n */\n size?: InputSize;\n /**\n * Icon shown before the textarea.\n */\n startIcon?: IconComponent;\n /**\n * Validation status displayed below the textarea.\n */\n status?: InputStatus;\n /**\n * Inline styles applied to the textarea wrapper.\n */\n style?: CSSProperties;\n /**\n * Controlled textarea value.\n */\n value: string;\n} & FieldNecessity;\n\nconst styles = {\n wrapper: css({\n alignItems: 'flex-start',\n py: '2',\n }),\n textarea: css({\n resize: 'vertical',\n minH: '20',\n }),\n counter: css({\n alignSelf: 'flex-end',\n mt: '1',\n }),\n counterOverLimit: css({\n color: 'status.error.fg',\n }),\n} as const;\n\n/**\n * Multi-line text input field with optional character counter.\n */\nexport function TextArea({\n label,\n value,\n onChange,\n rows = 3,\n size = 'md',\n description,\n isLabelHidden = false,\n isOptional,\n isRequired,\n isDisabled = false,\n isLoading = false,\n hasSpellCheck = true,\n hasAutoFocus = false,\n htmlName,\n status,\n labelIcon,\n labelTooltip,\n startIcon,\n placeholder,\n maxLength,\n onPaste,\n onFocus,\n onBlur,\n className,\n 'data-testid': dataTestId,\n style,\n ref,\n}: TextAreaProps): React.JSX.Element {\n const inputId = useId();\n const descriptionID = isReactNode(description)\n ? `${inputId}-description`\n : undefined;\n const statusMessageID = getStatusMessageID(inputId, status);\n const counterID = maxLength != null ? `${inputId}-counter` : undefined;\n const describedBy = getDescribedBy(descriptionID, statusMessageID, counterID);\n const isOverLimit = maxLength != null && value.length > maxLength;\n\n const necessity = getNecessity(isOptional, isRequired);\n\n return (\n <Field\n className={className}\n description={description}\n descriptionID={descriptionID}\n inputId={inputId}\n isDisabled={isDisabled}\n isLabelHidden={isLabelHidden}\n {...necessity}\n label={label}\n labelIcon={labelIcon}\n labelTooltip={labelTooltip}\n status={\n status == null ? undefined : {...status, messageID: statusMessageID}\n }\n style={style}>\n <div\n className={cx(\n inputRecipe({\n size,\n status: status?.type,\n isDisabled,\n }),\n styles.wrapper,\n )}>\n {startIcon != null ? (\n <span className={inputStyles.iconSlot}>\n <Icon color=\"secondary\" icon={startIcon} size=\"sm\" />\n </span>\n ) : null}\n <textarea\n aria-busy={isLoading || undefined}\n aria-describedby={describedBy}\n aria-invalid={status?.type === 'error' || isOverLimit || undefined}\n aria-required={isRequired ?? undefined}\n // eslint-disable-next-line jsx-a11y-x/no-autofocus\n autoFocus={hasAutoFocus}\n className={cx(inputStyles.control, styles.textarea)}\n data-autofocus={hasAutoFocus || undefined}\n data-testid={dataTestId}\n disabled={isDisabled}\n id={inputId}\n maxLength={maxLength}\n name={htmlName}\n onBlur={onBlur}\n onChange={event => onChange(event.target.value, event)}\n onFocus={onFocus}\n onPaste={onPaste}\n placeholder={placeholder}\n ref={ref}\n rows={rows}\n spellCheck={hasSpellCheck}\n value={value}\n />\n {isLoading ? <Spinner size=\"sm\" /> : null}\n {status != null ? (\n <span className={inputStyles.iconSlot}>\n {getStatusIcon(status.type)}\n </span>\n ) : null}\n </div>\n {maxLength != null ? (\n <Text\n as=\"span\"\n className={cx(\n styles.counter,\n isOverLimit ? styles.counterOverLimit : undefined,\n )}\n color=\"secondary\"\n id={counterID}\n type=\"supporting\">\n {value.length}/{maxLength}\n </Text>\n ) : null}\n </Field>\n );\n}\n\nTextArea.displayName = 'TextArea';\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkWOVSJHY6_cjs = require('./chunk-WOVSJHY6.cjs');
|
|
4
4
|
var chunk2MXK2SDR_cjs = require('./chunk-2MXK2SDR.cjs');
|
|
5
|
-
var
|
|
5
|
+
var chunkCKDB7QNT_cjs = require('./chunk-CKDB7QNT.cjs');
|
|
6
6
|
var chunkVK7DXUGH_cjs = require('./chunk-VK7DXUGH.cjs');
|
|
7
7
|
var chunkQAO6QMNQ_cjs = require('./chunk-QAO6QMNQ.cjs');
|
|
8
8
|
var chunkRU6JG3FS_cjs = require('./chunk-RU6JG3FS.cjs');
|
|
@@ -151,7 +151,7 @@ function usePopover({
|
|
|
151
151
|
children: [
|
|
152
152
|
children,
|
|
153
153
|
hasCloseButton ? /* @__PURE__ */ jsxRuntime.jsx(chunk2MXK2SDR_cjs.VisuallyHidden, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
154
|
-
|
|
154
|
+
chunkWOVSJHY6_cjs.Button,
|
|
155
155
|
{
|
|
156
156
|
icon: lucideReact.X,
|
|
157
157
|
isIconOnly: true,
|
|
@@ -347,7 +347,7 @@ function Popover({
|
|
|
347
347
|
}
|
|
348
348
|
}, [isControlled, isOpen, popover]);
|
|
349
349
|
const widthStyle = width == null ? void 0 : { width: typeof width === "number" ? `${width}px` : width };
|
|
350
|
-
const paddingStyle = padding != null && padding !== 0 ? { padding:
|
|
350
|
+
const paddingStyle = padding != null && padding !== 0 ? { padding: chunkCKDB7QNT_cjs.token(`spacing.${padding}`) } : void 0;
|
|
351
351
|
const popoverContent = popover.render(
|
|
352
352
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
353
353
|
"div",
|
|
@@ -380,5 +380,5 @@ Popover.displayName = "Popover";
|
|
|
380
380
|
|
|
381
381
|
exports.Popover = Popover;
|
|
382
382
|
exports.usePopover = usePopover;
|
|
383
|
-
//# sourceMappingURL=chunk-
|
|
384
|
-
//# sourceMappingURL=chunk-
|
|
383
|
+
//# sourceMappingURL=chunk-MYSLJWCW.cjs.map
|
|
384
|
+
//# sourceMappingURL=chunk-MYSLJWCW.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/internal/useFocusTrap.ts","../src/components/Popover/usePopover.tsx","../src/components/Popover/Popover.tsx"],"names":["useRef","useCallback","useEffect","css","useLayer","jsxs","VisuallyHidden","jsx","Button","X","useMemo","styles","useIsomorphicLayoutEffect","token","cx","isReactNode","Fragment"],"mappings":"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","file":"chunk-RAMDISDK.cjs","sourcesContent":["import {useCallback, useEffect, useRef} from 'react';\n\nconst FOCUSABLE_SELECTOR =\n 'button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"]):not([disabled])';\n\nexport interface UseFocusTrapOptions {\n isActive: boolean;\n onEscape?: () => void;\n}\n\nexport interface UseFocusTrapReturn<T extends HTMLElement = HTMLElement> {\n containerRef: React.RefObject<T | null>;\n focusFirst: () => void;\n}\n\nfunction getFocusableElements(container: HTMLElement): HTMLElement[] {\n return Array.from(\n container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR),\n );\n}\n\nfunction focusFirstDescendant(container: HTMLElement): void {\n getFocusableElements(container)[0]?.focus();\n}\n\nfunction focusLastDescendant(container: HTMLElement): void {\n const elements = getFocusableElements(container);\n elements.at(-1)?.focus();\n}\n\nexport function useFocusTrap<T extends HTMLElement = HTMLElement>({\n isActive,\n onEscape,\n}: UseFocusTrapOptions): UseFocusTrapReturn<T> {\n const containerRef = useRef<T>(null);\n\n const focusFirst = useCallback(() => {\n if (containerRef.current != null) {\n focusFirstDescendant(containerRef.current);\n }\n }, []);\n\n useEffect(() => {\n if (!isActive) {\n return;\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n const container = containerRef.current;\n if (container == null) {\n return;\n }\n\n if (event.key === 'Escape') {\n event.preventDefault();\n onEscape?.();\n return;\n }\n\n if (event.key !== 'Tab') {\n return;\n }\n\n const focusable = getFocusableElements(container);\n if (focusable.length === 0) {\n return;\n }\n\n const first = focusable[0];\n const last = focusable.at(-1);\n if (event.shiftKey && document.activeElement === first) {\n event.preventDefault();\n focusLastDescendant(container);\n } else if (!event.shiftKey && document.activeElement === last) {\n event.preventDefault();\n focusFirstDescendant(container);\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [isActive, onEscape]);\n\n return {containerRef, focusFirst};\n}\n","import {X} from 'lucide-react';\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n type ReactNode,\n type RefCallback,\n} from 'react';\nimport {Button} from 'components/Button';\nimport {VisuallyHidden} from 'internal';\nimport {useFocusTrap} from 'internal/useFocusTrap';\nimport {useLayer, type ContextRenderProps} from 'internal/useLayer';\nimport {css} from 'styled-system/css';\n\nexport type {LayerAlignment, LayerPlacement} from 'internal/useLayer';\n\nexport interface UsePopoverOptions {\n /**\n * Accessible label for the close button rendered when `hasCloseButton` is\n * `true`. Defaults to `'Close popover'`.\n */\n closeButtonLabel?: string;\n /**\n * When `true`, focus moves to the first focusable element inside the popover\n * when it opens. Defaults to `true`.\n */\n hasAutoFocus?: boolean;\n /**\n * When `true`, renders a visually hidden close button inside the popover so\n * assistive technology users can dismiss it. Defaults to `true`.\n */\n hasCloseButton?: boolean;\n /**\n * When `true`, wraps the content in a styled surface (background, border,\n * shadow). Set to `false` to render unstyled content. Defaults to `true`.\n */\n hasSurface?: boolean;\n /**\n * When `true`, the popover can be dismissed by clicking outside or pressing\n * Escape. Defaults to `true`.\n */\n isDismissable?: boolean;\n /**\n * Accessible label applied to the popover content via `aria-label`.\n */\n label?: string;\n /**\n * Id applied to the underlying layer element. Falls back to a generated id.\n * Supply this when another element needs a stable `aria-controls` reference\n * to the popover.\n */\n layerId?: string;\n /**\n * Called after the popover is hidden, including via light dismiss.\n */\n onHide?: () => void;\n /**\n * Called after the popover is shown.\n */\n onShow?: () => void;\n /**\n * ARIA role for the popover content. Defaults to `'dialog'`; use `'menu'` for\n * menu-style popovers.\n */\n role?: 'dialog' | 'menu';\n}\n\nexport interface UsePopoverReturn {\n /**\n * CSS anchor name tying the popover content to the trigger for positioning.\n */\n anchorId: string;\n /**\n * Ref attached to the popover content element.\n */\n contentRef: React.RefObject<HTMLDivElement | null>;\n /**\n * Hides the popover.\n */\n hide: () => void;\n /**\n * Id of the underlying layer element, matching `triggerProps['aria-controls']`.\n */\n id: string;\n /**\n * Whether the popover is currently open.\n */\n isOpen: boolean;\n /**\n * Renders the given children inside the popover layer.\n */\n render: (children: ReactNode, props?: ContextRenderProps) => ReactNode;\n /**\n * Shows the popover. Pass `isAutoFocusSkipped` to suppress moving focus into\n * the content for this open.\n */\n show: (options?: {isAutoFocusSkipped?: boolean}) => void;\n /**\n * Toggles the popover between open and closed.\n */\n toggle: () => void;\n /**\n * ARIA props to spread onto the trigger element.\n */\n triggerProps: {\n 'aria-controls': string;\n 'aria-expanded': boolean;\n 'aria-haspopup': 'dialog' | 'menu';\n };\n /**\n * Ref callback to attach to the trigger element for anchor positioning.\n */\n triggerRef: RefCallback<HTMLElement>;\n}\n\nconst styles = {\n surface: css({\n position: 'relative',\n bg: 'bg',\n borderRadius: 'md',\n boxShadow: 'lg',\n borderWidth: 'default',\n borderStyle: 'solid',\n borderColor: 'border',\n }),\n} as const;\n\nexport function usePopover({\n onShow,\n onHide,\n isDismissable = true,\n hasAutoFocus = true,\n hasSurface = true,\n hasCloseButton = true,\n closeButtonLabel = 'Close popover',\n label,\n role = 'dialog',\n layerId,\n}: UsePopoverOptions = {}): UsePopoverReturn {\n const skipAutoFocusRef = useRef(false);\n // Guards against a light-dismiss close immediately re-opening the popover.\n // When the trigger is clicked while the popover is open, the browser's native\n // light dismiss closes it (firing `onHide`) *before* the trigger's own click\n // handler runs `toggle()` — which would otherwise re-open it. The flag is\n // cleared on the next animation frame: the browser never paints mid-gesture,\n // so it is reliably still set when the spurious click arrives, yet cleared\n // before any genuine later click.\n const isDismissingRef = useRef(false);\n\n const handleHide = useCallback(() => {\n isDismissingRef.current = true;\n requestAnimationFrame(() => {\n isDismissingRef.current = false;\n });\n onHide?.();\n }, [onHide]);\n\n const layer = useLayer({\n isDismissable,\n id: layerId,\n onShow,\n onHide: handleHide,\n });\n const {containerRef: contentRef, focusFirst} = useFocusTrap<HTMLDivElement>({\n isActive: layer.isOpen,\n onEscape: layer.hide,\n });\n\n useEffect(() => {\n if (!layer.isOpen) {\n skipAutoFocusRef.current = false;\n return;\n }\n\n if (hasAutoFocus && !skipAutoFocusRef.current) {\n requestAnimationFrame(() => focusFirst());\n }\n }, [focusFirst, hasAutoFocus, layer.isOpen]);\n\n const show = useCallback(\n (options?: {isAutoFocusSkipped?: boolean}) => {\n skipAutoFocusRef.current = options?.isAutoFocusSkipped ?? false;\n layer.show();\n },\n [layer],\n );\n\n const toggle = useCallback(() => {\n if (isDismissingRef.current) {\n return;\n }\n\n if (layer.isOpen) {\n layer.hide();\n return;\n }\n\n show();\n }, [layer, show]);\n\n const render = useCallback(\n (children: ReactNode, props?: ContextRenderProps): ReactNode => {\n return layer.render(\n <div\n aria-label={label}\n className={hasSurface ? styles.surface : undefined}\n ref={contentRef}\n role={role}>\n {children}\n {hasCloseButton ? (\n <VisuallyHidden>\n <Button\n icon={X}\n isIconOnly\n label={closeButtonLabel}\n onClick={layer.hide}\n size=\"sm\"\n variant=\"ghost\"\n />\n </VisuallyHidden>\n ) : null}\n </div>,\n {\n ...props,\n className: props?.className,\n },\n );\n },\n [\n closeButtonLabel,\n contentRef,\n hasCloseButton,\n hasSurface,\n label,\n layer,\n role,\n ],\n );\n\n const triggerProps = useMemo(\n () => ({\n 'aria-controls': layer.id,\n 'aria-expanded': layer.isOpen,\n 'aria-haspopup': role,\n }),\n [layer.id, layer.isOpen, role],\n );\n\n return useMemo(\n () => ({\n anchorId: layer.anchorId,\n contentRef,\n hide: layer.hide,\n id: layer.id,\n isOpen: layer.isOpen,\n render,\n show,\n toggle,\n triggerProps,\n triggerRef: layer.ref,\n }),\n [\n contentRef,\n layer.anchorId,\n layer.hide,\n layer.id,\n layer.isOpen,\n layer.ref,\n render,\n show,\n toggle,\n triggerProps,\n ],\n );\n}\n","import {\n useCallback,\n useRef,\n type CSSProperties,\n type ReactNode,\n type Ref,\n type RefObject,\n} from 'react';\nimport {usePopover} from 'components/Popover/usePopover';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport type {SpacingToken} from 'internal/spacingTokens';\nimport {useIsomorphicLayoutEffect} from 'internal/useIsomorphicLayoutEffect';\nimport type {LayerAlignment, LayerPlacement} from 'internal/useLayer';\nimport {css} from 'styled-system/css';\nimport {token} from 'styled-system/tokens';\n\nexport interface PopoverProps {\n /**\n * Alignment along the placement axis.\n * @default 'start'\n */\n alignment?: LayerAlignment;\n /**\n * External trigger element. When provided without children, Popover attaches\n * click and ARIA behavior directly to this element.\n */\n anchorRef?: RefObject<HTMLElement | null>;\n /**\n * Trigger content. Must contain a `<button>` or `[role=\"button\"]`.\n */\n children?: ReactNode;\n /**\n * Additional CSS class names applied to the popover content.\n */\n className?: string;\n /**\n * Label for the hidden close button.\n * @default 'Close popover'\n */\n closeButtonLabel?: string;\n /**\n * Content displayed inside the popover dialog.\n */\n content: ReactNode;\n /**\n * Test ID applied to the popover content.\n */\n 'data-testid'?: string;\n /**\n * Whether to focus the first focusable item after opening.\n * @default true\n */\n hasAutoFocus?: boolean;\n /**\n * Whether to include a keyboard-accessible close button.\n * @default true\n */\n hasCloseButton?: boolean;\n /**\n * Id applied to the popover content element. Falls back to a generated id.\n * Supply this when another element needs a stable `aria-controls` reference\n * to the popover.\n */\n id?: string;\n /**\n * Whether clicking outside or pressing Escape closes the popover.\n * @default true\n */\n isDismissable?: boolean;\n /**\n * Whether trigger interactions open the popover.\n * @default true\n */\n isEnabled?: boolean;\n /**\n * Controlled open state.\n */\n isOpen?: boolean;\n /**\n * Accessible label for the popover dialog.\n */\n label?: string;\n /**\n * Gap in pixels between the popover and its trigger along the inline axis\n * (for `start`/`end` placements). Applied as a logical margin so it stays on\n * the trigger-facing side even when the popover flips.\n */\n offsetX?: number;\n /**\n * Gap in pixels between the popover and its trigger along the block axis (for\n * `above`/`below` placements). Applied as a logical margin so it stays on the\n * trigger-facing side even when the popover flips.\n */\n offsetY?: number;\n /**\n * Callback fired when open state changes.\n */\n onOpenChange?: (isOpen: boolean) => void;\n /**\n * Inner padding of the popover content.\n * @default 0\n */\n padding?: SpacingToken;\n /**\n * Position relative to the trigger.\n * @default 'below'\n */\n placement?: LayerPlacement;\n /**\n * Ref forwarded to the popover content element.\n */\n ref?: Ref<HTMLDivElement>;\n /**\n * ARIA role for the floating content.\n * @default 'dialog'\n */\n role?: 'dialog' | 'menu';\n /**\n * Inline styles applied to the popover content.\n */\n style?: CSSProperties;\n /**\n * Width of the popover content.\n */\n width?: number | string;\n}\n\nconst BUTTON_SELECTOR = 'button, [role=\"button\"]';\n\nconst styles = {\n anchor: css({\n display: 'inline-flex',\n }),\n content: css({}),\n gap: {\n above: css({mb: '1'}),\n below: css({mt: '1'}),\n start: css({mr: '1'}),\n end: css({ml: '1'}),\n },\n} as const;\n\nfunction findTriggerButton(element: HTMLElement): HTMLElement | null {\n if (element.matches(BUTTON_SELECTOR)) {\n return element;\n }\n\n return element.querySelector<HTMLElement>(BUTTON_SELECTOR);\n}\n\n/**\n * A click-triggered floating dialog anchored to a trigger element.\n */\nexport function Popover({\n anchorRef,\n children,\n content,\n placement = 'below',\n alignment = 'start',\n isOpen,\n onOpenChange,\n offsetX,\n offsetY,\n isEnabled = true,\n width,\n label,\n hasCloseButton,\n isDismissable,\n closeButtonLabel,\n padding,\n ref,\n hasAutoFocus,\n className,\n style,\n role,\n id,\n 'data-testid': dataTestId,\n}: PopoverProps): React.JSX.Element {\n const wrapperRef = useRef<HTMLDivElement>(null);\n const isControlled = isOpen !== undefined;\n\n const popover = usePopover({\n closeButtonLabel,\n hasAutoFocus,\n hasCloseButton,\n isDismissable,\n label,\n layerId: id,\n onHide: () => onOpenChange?.(false),\n onShow: () => onOpenChange?.(true),\n role,\n });\n\n const handleTriggerClick = useCallback(() => {\n if (!isEnabled) {\n return;\n }\n\n popover.toggle();\n }, [isEnabled, popover]);\n\n const handleTriggerKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n handleTriggerClick();\n }\n },\n [handleTriggerClick],\n );\n\n // ARIA and listeners are applied imperatively because the trigger button can\n // be any element the consumer renders — nested anywhere inside `children`, or\n // an entirely external element via `anchorRef` — so Popover cannot inject\n // props through JSX. This is safe: React only reconciles attributes present\n // in its own virtual DOM, so it never clobbers these imperatively-set ones on\n // re-render. The only dynamic attribute, `aria-expanded`, stays in sync\n // because `popover.triggerProps` is memoized on the open state, so this\n // callback (and the effect below that re-runs it) re-applies the fresh value\n // on every toggle. Keep `triggerProps` in the dep arrays or that sync breaks.\n const attachTrigger = useCallback(\n (button: HTMLElement) => {\n button.setAttribute(\n 'aria-haspopup',\n popover.triggerProps['aria-haspopup'],\n );\n button.setAttribute(\n 'aria-expanded',\n String(popover.triggerProps['aria-expanded']),\n );\n button.setAttribute(\n 'aria-controls',\n popover.triggerProps['aria-controls'],\n );\n button.addEventListener('click', handleTriggerClick);\n\n const needsKeyDown =\n button.tagName !== 'BUTTON' && button.getAttribute('role') === 'button';\n if (needsKeyDown) {\n button.addEventListener('keydown', handleTriggerKeyDown);\n }\n\n return () => {\n button.removeAttribute('aria-haspopup');\n button.removeAttribute('aria-expanded');\n button.removeAttribute('aria-controls');\n button.removeEventListener('click', handleTriggerClick);\n if (needsKeyDown) {\n button.removeEventListener('keydown', handleTriggerKeyDown);\n }\n };\n },\n [handleTriggerClick, handleTriggerKeyDown, popover.triggerProps],\n );\n\n useIsomorphicLayoutEffect(() => {\n const anchor = anchorRef?.current ?? wrapperRef.current;\n if (anchor == null) {\n return;\n }\n\n popover.triggerRef(anchor);\n const trigger = findTriggerButton(anchor);\n if (trigger == null || !isEnabled) {\n return () => {\n popover.triggerRef(null);\n };\n }\n\n const detach = attachTrigger(trigger);\n return () => {\n popover.triggerRef(null);\n detach();\n };\n }, [anchorRef, attachTrigger, isEnabled, popover]);\n\n useIsomorphicLayoutEffect(() => {\n if (!isControlled) {\n return;\n }\n\n if (isOpen === true && !popover.isOpen) {\n popover.show();\n } else if (isOpen === false && popover.isOpen) {\n popover.hide();\n }\n }, [isControlled, isOpen, popover]);\n\n const widthStyle =\n width == null\n ? undefined\n : {width: typeof width === 'number' ? `${width}px` : width};\n\n const paddingStyle =\n padding != null && padding !== 0\n ? {padding: token(`spacing.${padding}`)}\n : undefined;\n\n const popoverContent = popover.render(\n <div\n className={cx(styles.content, className)}\n data-testid={dataTestId}\n ref={ref}\n style={{...paddingStyle, ...widthStyle, ...style}}>\n {content}\n </div>,\n {\n placement,\n alignment,\n offsetX,\n offsetY,\n className: styles.gap[placement],\n style: {minWidth: 'anchor-size(width)'},\n },\n );\n\n if (anchorRef != null && !isReactNode(children)) {\n return <>{popoverContent}</>;\n }\n\n return (\n <>\n <div className={styles.anchor} ref={wrapperRef}>\n {children}\n </div>\n {popoverContent}\n </>\n );\n}\n\nPopover.displayName = 'Popover';\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/internal/useFocusTrap.ts","../src/components/Popover/usePopover.tsx","../src/components/Popover/Popover.tsx"],"names":["useRef","useCallback","useEffect","css","useLayer","jsxs","VisuallyHidden","jsx","Button","X","useMemo","styles","useIsomorphicLayoutEffect","token","cx","isReactNode","Fragment"],"mappings":"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","file":"chunk-MYSLJWCW.cjs","sourcesContent":["import {useCallback, useEffect, useRef} from 'react';\n\nconst FOCUSABLE_SELECTOR =\n 'button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"]):not([disabled])';\n\nexport interface UseFocusTrapOptions {\n isActive: boolean;\n onEscape?: () => void;\n}\n\nexport interface UseFocusTrapReturn<T extends HTMLElement = HTMLElement> {\n containerRef: React.RefObject<T | null>;\n focusFirst: () => void;\n}\n\nfunction getFocusableElements(container: HTMLElement): HTMLElement[] {\n return Array.from(\n container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR),\n );\n}\n\nfunction focusFirstDescendant(container: HTMLElement): void {\n getFocusableElements(container)[0]?.focus();\n}\n\nfunction focusLastDescendant(container: HTMLElement): void {\n const elements = getFocusableElements(container);\n elements.at(-1)?.focus();\n}\n\nexport function useFocusTrap<T extends HTMLElement = HTMLElement>({\n isActive,\n onEscape,\n}: UseFocusTrapOptions): UseFocusTrapReturn<T> {\n const containerRef = useRef<T>(null);\n\n const focusFirst = useCallback(() => {\n if (containerRef.current != null) {\n focusFirstDescendant(containerRef.current);\n }\n }, []);\n\n useEffect(() => {\n if (!isActive) {\n return;\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n const container = containerRef.current;\n if (container == null) {\n return;\n }\n\n if (event.key === 'Escape') {\n event.preventDefault();\n onEscape?.();\n return;\n }\n\n if (event.key !== 'Tab') {\n return;\n }\n\n const focusable = getFocusableElements(container);\n if (focusable.length === 0) {\n return;\n }\n\n const first = focusable[0];\n const last = focusable.at(-1);\n if (event.shiftKey && document.activeElement === first) {\n event.preventDefault();\n focusLastDescendant(container);\n } else if (!event.shiftKey && document.activeElement === last) {\n event.preventDefault();\n focusFirstDescendant(container);\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [isActive, onEscape]);\n\n return {containerRef, focusFirst};\n}\n","import {X} from 'lucide-react';\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n type ReactNode,\n type RefCallback,\n} from 'react';\nimport {Button} from 'components/Button';\nimport {VisuallyHidden} from 'internal';\nimport {useFocusTrap} from 'internal/useFocusTrap';\nimport {useLayer, type ContextRenderProps} from 'internal/useLayer';\nimport {css} from 'styled-system/css';\n\nexport type {LayerAlignment, LayerPlacement} from 'internal/useLayer';\n\nexport interface UsePopoverOptions {\n /**\n * Accessible label for the close button rendered when `hasCloseButton` is\n * `true`. Defaults to `'Close popover'`.\n */\n closeButtonLabel?: string;\n /**\n * When `true`, focus moves to the first focusable element inside the popover\n * when it opens. Defaults to `true`.\n */\n hasAutoFocus?: boolean;\n /**\n * When `true`, renders a visually hidden close button inside the popover so\n * assistive technology users can dismiss it. Defaults to `true`.\n */\n hasCloseButton?: boolean;\n /**\n * When `true`, wraps the content in a styled surface (background, border,\n * shadow). Set to `false` to render unstyled content. Defaults to `true`.\n */\n hasSurface?: boolean;\n /**\n * When `true`, the popover can be dismissed by clicking outside or pressing\n * Escape. Defaults to `true`.\n */\n isDismissable?: boolean;\n /**\n * Accessible label applied to the popover content via `aria-label`.\n */\n label?: string;\n /**\n * Id applied to the underlying layer element. Falls back to a generated id.\n * Supply this when another element needs a stable `aria-controls` reference\n * to the popover.\n */\n layerId?: string;\n /**\n * Called after the popover is hidden, including via light dismiss.\n */\n onHide?: () => void;\n /**\n * Called after the popover is shown.\n */\n onShow?: () => void;\n /**\n * ARIA role for the popover content. Defaults to `'dialog'`; use `'menu'` for\n * menu-style popovers.\n */\n role?: 'dialog' | 'menu';\n}\n\nexport interface UsePopoverReturn {\n /**\n * CSS anchor name tying the popover content to the trigger for positioning.\n */\n anchorId: string;\n /**\n * Ref attached to the popover content element.\n */\n contentRef: React.RefObject<HTMLDivElement | null>;\n /**\n * Hides the popover.\n */\n hide: () => void;\n /**\n * Id of the underlying layer element, matching `triggerProps['aria-controls']`.\n */\n id: string;\n /**\n * Whether the popover is currently open.\n */\n isOpen: boolean;\n /**\n * Renders the given children inside the popover layer.\n */\n render: (children: ReactNode, props?: ContextRenderProps) => ReactNode;\n /**\n * Shows the popover. Pass `isAutoFocusSkipped` to suppress moving focus into\n * the content for this open.\n */\n show: (options?: {isAutoFocusSkipped?: boolean}) => void;\n /**\n * Toggles the popover between open and closed.\n */\n toggle: () => void;\n /**\n * ARIA props to spread onto the trigger element.\n */\n triggerProps: {\n 'aria-controls': string;\n 'aria-expanded': boolean;\n 'aria-haspopup': 'dialog' | 'menu';\n };\n /**\n * Ref callback to attach to the trigger element for anchor positioning.\n */\n triggerRef: RefCallback<HTMLElement>;\n}\n\nconst styles = {\n surface: css({\n position: 'relative',\n bg: 'bg',\n borderRadius: 'md',\n boxShadow: 'lg',\n borderWidth: 'default',\n borderStyle: 'solid',\n borderColor: 'border',\n }),\n} as const;\n\nexport function usePopover({\n onShow,\n onHide,\n isDismissable = true,\n hasAutoFocus = true,\n hasSurface = true,\n hasCloseButton = true,\n closeButtonLabel = 'Close popover',\n label,\n role = 'dialog',\n layerId,\n}: UsePopoverOptions = {}): UsePopoverReturn {\n const skipAutoFocusRef = useRef(false);\n // Guards against a light-dismiss close immediately re-opening the popover.\n // When the trigger is clicked while the popover is open, the browser's native\n // light dismiss closes it (firing `onHide`) *before* the trigger's own click\n // handler runs `toggle()` — which would otherwise re-open it. The flag is\n // cleared on the next animation frame: the browser never paints mid-gesture,\n // so it is reliably still set when the spurious click arrives, yet cleared\n // before any genuine later click.\n const isDismissingRef = useRef(false);\n\n const handleHide = useCallback(() => {\n isDismissingRef.current = true;\n requestAnimationFrame(() => {\n isDismissingRef.current = false;\n });\n onHide?.();\n }, [onHide]);\n\n const layer = useLayer({\n isDismissable,\n id: layerId,\n onShow,\n onHide: handleHide,\n });\n const {containerRef: contentRef, focusFirst} = useFocusTrap<HTMLDivElement>({\n isActive: layer.isOpen,\n onEscape: layer.hide,\n });\n\n useEffect(() => {\n if (!layer.isOpen) {\n skipAutoFocusRef.current = false;\n return;\n }\n\n if (hasAutoFocus && !skipAutoFocusRef.current) {\n requestAnimationFrame(() => focusFirst());\n }\n }, [focusFirst, hasAutoFocus, layer.isOpen]);\n\n const show = useCallback(\n (options?: {isAutoFocusSkipped?: boolean}) => {\n skipAutoFocusRef.current = options?.isAutoFocusSkipped ?? false;\n layer.show();\n },\n [layer],\n );\n\n const toggle = useCallback(() => {\n if (isDismissingRef.current) {\n return;\n }\n\n if (layer.isOpen) {\n layer.hide();\n return;\n }\n\n show();\n }, [layer, show]);\n\n const render = useCallback(\n (children: ReactNode, props?: ContextRenderProps): ReactNode => {\n return layer.render(\n <div\n aria-label={label}\n className={hasSurface ? styles.surface : undefined}\n ref={contentRef}\n role={role}>\n {children}\n {hasCloseButton ? (\n <VisuallyHidden>\n <Button\n icon={X}\n isIconOnly\n label={closeButtonLabel}\n onClick={layer.hide}\n size=\"sm\"\n variant=\"ghost\"\n />\n </VisuallyHidden>\n ) : null}\n </div>,\n {\n ...props,\n className: props?.className,\n },\n );\n },\n [\n closeButtonLabel,\n contentRef,\n hasCloseButton,\n hasSurface,\n label,\n layer,\n role,\n ],\n );\n\n const triggerProps = useMemo(\n () => ({\n 'aria-controls': layer.id,\n 'aria-expanded': layer.isOpen,\n 'aria-haspopup': role,\n }),\n [layer.id, layer.isOpen, role],\n );\n\n return useMemo(\n () => ({\n anchorId: layer.anchorId,\n contentRef,\n hide: layer.hide,\n id: layer.id,\n isOpen: layer.isOpen,\n render,\n show,\n toggle,\n triggerProps,\n triggerRef: layer.ref,\n }),\n [\n contentRef,\n layer.anchorId,\n layer.hide,\n layer.id,\n layer.isOpen,\n layer.ref,\n render,\n show,\n toggle,\n triggerProps,\n ],\n );\n}\n","import {\n useCallback,\n useRef,\n type CSSProperties,\n type ReactNode,\n type Ref,\n type RefObject,\n} from 'react';\nimport {usePopover} from 'components/Popover/usePopover';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport type {SpacingToken} from 'internal/spacingTokens';\nimport {useIsomorphicLayoutEffect} from 'internal/useIsomorphicLayoutEffect';\nimport type {LayerAlignment, LayerPlacement} from 'internal/useLayer';\nimport {css} from 'styled-system/css';\nimport {token} from 'styled-system/tokens';\n\nexport interface PopoverProps {\n /**\n * Alignment along the placement axis.\n * @default 'start'\n */\n alignment?: LayerAlignment;\n /**\n * External trigger element. When provided without children, Popover attaches\n * click and ARIA behavior directly to this element.\n */\n anchorRef?: RefObject<HTMLElement | null>;\n /**\n * Trigger content. Must contain a `<button>` or `[role=\"button\"]`.\n */\n children?: ReactNode;\n /**\n * Additional CSS class names applied to the popover content.\n */\n className?: string;\n /**\n * Label for the hidden close button.\n * @default 'Close popover'\n */\n closeButtonLabel?: string;\n /**\n * Content displayed inside the popover dialog.\n */\n content: ReactNode;\n /**\n * Test ID applied to the popover content.\n */\n 'data-testid'?: string;\n /**\n * Whether to focus the first focusable item after opening.\n * @default true\n */\n hasAutoFocus?: boolean;\n /**\n * Whether to include a keyboard-accessible close button.\n * @default true\n */\n hasCloseButton?: boolean;\n /**\n * Id applied to the popover content element. Falls back to a generated id.\n * Supply this when another element needs a stable `aria-controls` reference\n * to the popover.\n */\n id?: string;\n /**\n * Whether clicking outside or pressing Escape closes the popover.\n * @default true\n */\n isDismissable?: boolean;\n /**\n * Whether trigger interactions open the popover.\n * @default true\n */\n isEnabled?: boolean;\n /**\n * Controlled open state.\n */\n isOpen?: boolean;\n /**\n * Accessible label for the popover dialog.\n */\n label?: string;\n /**\n * Gap in pixels between the popover and its trigger along the inline axis\n * (for `start`/`end` placements). Applied as a logical margin so it stays on\n * the trigger-facing side even when the popover flips.\n */\n offsetX?: number;\n /**\n * Gap in pixels between the popover and its trigger along the block axis (for\n * `above`/`below` placements). Applied as a logical margin so it stays on the\n * trigger-facing side even when the popover flips.\n */\n offsetY?: number;\n /**\n * Callback fired when open state changes.\n */\n onOpenChange?: (isOpen: boolean) => void;\n /**\n * Inner padding of the popover content.\n * @default 0\n */\n padding?: SpacingToken;\n /**\n * Position relative to the trigger.\n * @default 'below'\n */\n placement?: LayerPlacement;\n /**\n * Ref forwarded to the popover content element.\n */\n ref?: Ref<HTMLDivElement>;\n /**\n * ARIA role for the floating content.\n * @default 'dialog'\n */\n role?: 'dialog' | 'menu';\n /**\n * Inline styles applied to the popover content.\n */\n style?: CSSProperties;\n /**\n * Width of the popover content.\n */\n width?: number | string;\n}\n\nconst BUTTON_SELECTOR = 'button, [role=\"button\"]';\n\nconst styles = {\n anchor: css({\n display: 'inline-flex',\n }),\n content: css({}),\n gap: {\n above: css({mb: '1'}),\n below: css({mt: '1'}),\n start: css({mr: '1'}),\n end: css({ml: '1'}),\n },\n} as const;\n\nfunction findTriggerButton(element: HTMLElement): HTMLElement | null {\n if (element.matches(BUTTON_SELECTOR)) {\n return element;\n }\n\n return element.querySelector<HTMLElement>(BUTTON_SELECTOR);\n}\n\n/**\n * A click-triggered floating dialog anchored to a trigger element.\n */\nexport function Popover({\n anchorRef,\n children,\n content,\n placement = 'below',\n alignment = 'start',\n isOpen,\n onOpenChange,\n offsetX,\n offsetY,\n isEnabled = true,\n width,\n label,\n hasCloseButton,\n isDismissable,\n closeButtonLabel,\n padding,\n ref,\n hasAutoFocus,\n className,\n style,\n role,\n id,\n 'data-testid': dataTestId,\n}: PopoverProps): React.JSX.Element {\n const wrapperRef = useRef<HTMLDivElement>(null);\n const isControlled = isOpen !== undefined;\n\n const popover = usePopover({\n closeButtonLabel,\n hasAutoFocus,\n hasCloseButton,\n isDismissable,\n label,\n layerId: id,\n onHide: () => onOpenChange?.(false),\n onShow: () => onOpenChange?.(true),\n role,\n });\n\n const handleTriggerClick = useCallback(() => {\n if (!isEnabled) {\n return;\n }\n\n popover.toggle();\n }, [isEnabled, popover]);\n\n const handleTriggerKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n handleTriggerClick();\n }\n },\n [handleTriggerClick],\n );\n\n // ARIA and listeners are applied imperatively because the trigger button can\n // be any element the consumer renders — nested anywhere inside `children`, or\n // an entirely external element via `anchorRef` — so Popover cannot inject\n // props through JSX. This is safe: React only reconciles attributes present\n // in its own virtual DOM, so it never clobbers these imperatively-set ones on\n // re-render. The only dynamic attribute, `aria-expanded`, stays in sync\n // because `popover.triggerProps` is memoized on the open state, so this\n // callback (and the effect below that re-runs it) re-applies the fresh value\n // on every toggle. Keep `triggerProps` in the dep arrays or that sync breaks.\n const attachTrigger = useCallback(\n (button: HTMLElement) => {\n button.setAttribute(\n 'aria-haspopup',\n popover.triggerProps['aria-haspopup'],\n );\n button.setAttribute(\n 'aria-expanded',\n String(popover.triggerProps['aria-expanded']),\n );\n button.setAttribute(\n 'aria-controls',\n popover.triggerProps['aria-controls'],\n );\n button.addEventListener('click', handleTriggerClick);\n\n const needsKeyDown =\n button.tagName !== 'BUTTON' && button.getAttribute('role') === 'button';\n if (needsKeyDown) {\n button.addEventListener('keydown', handleTriggerKeyDown);\n }\n\n return () => {\n button.removeAttribute('aria-haspopup');\n button.removeAttribute('aria-expanded');\n button.removeAttribute('aria-controls');\n button.removeEventListener('click', handleTriggerClick);\n if (needsKeyDown) {\n button.removeEventListener('keydown', handleTriggerKeyDown);\n }\n };\n },\n [handleTriggerClick, handleTriggerKeyDown, popover.triggerProps],\n );\n\n useIsomorphicLayoutEffect(() => {\n const anchor = anchorRef?.current ?? wrapperRef.current;\n if (anchor == null) {\n return;\n }\n\n popover.triggerRef(anchor);\n const trigger = findTriggerButton(anchor);\n if (trigger == null || !isEnabled) {\n return () => {\n popover.triggerRef(null);\n };\n }\n\n const detach = attachTrigger(trigger);\n return () => {\n popover.triggerRef(null);\n detach();\n };\n }, [anchorRef, attachTrigger, isEnabled, popover]);\n\n useIsomorphicLayoutEffect(() => {\n if (!isControlled) {\n return;\n }\n\n if (isOpen === true && !popover.isOpen) {\n popover.show();\n } else if (isOpen === false && popover.isOpen) {\n popover.hide();\n }\n }, [isControlled, isOpen, popover]);\n\n const widthStyle =\n width == null\n ? undefined\n : {width: typeof width === 'number' ? `${width}px` : width};\n\n const paddingStyle =\n padding != null && padding !== 0\n ? {padding: token(`spacing.${padding}`)}\n : undefined;\n\n const popoverContent = popover.render(\n <div\n className={cx(styles.content, className)}\n data-testid={dataTestId}\n ref={ref}\n style={{...paddingStyle, ...widthStyle, ...style}}>\n {content}\n </div>,\n {\n placement,\n alignment,\n offsetX,\n offsetY,\n className: styles.gap[placement],\n style: {minWidth: 'anchor-size(width)'},\n },\n );\n\n if (anchorRef != null && !isReactNode(children)) {\n return <>{popoverContent}</>;\n }\n\n return (\n <>\n <div className={styles.anchor} ref={wrapperRef}>\n {children}\n </div>\n {popoverContent}\n </>\n );\n}\n\nPopover.displayName = 'Popover';\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { useAppShellMobile, MobileNavToggle, MobileNav } from './chunk-
|
|
1
|
+
import { useAppShellMobile, MobileNavToggle, MobileNav } from './chunk-FTNEAX24.js';
|
|
2
2
|
import { Divider } from './chunk-BQWUTDTN.js';
|
|
3
3
|
import { useRel, getAriaLabel } from './chunk-5FQKELP6.js';
|
|
4
4
|
import { VisuallyHidden } from './chunk-V2V5TTTL.js';
|
|
5
|
-
import { Text } from './chunk-
|
|
5
|
+
import { Text } from './chunk-5GSRIOXE.js';
|
|
6
6
|
import { useLinkComponent, ActionElement } from './chunk-PG4CZRTU.js';
|
|
7
7
|
import { isReactNode } from './chunk-2PSZAWLC.js';
|
|
8
8
|
import { Icon } from './chunk-IUW777WZ.js';
|
|
@@ -399,5 +399,5 @@ function TopNavItem({
|
|
|
399
399
|
TopNavItem.displayName = "TopNavItem";
|
|
400
400
|
|
|
401
401
|
export { TopNav, TopNavHeading, TopNavItem, TopNavMobileContentContext, TopNavRenderContext };
|
|
402
|
-
//# sourceMappingURL=chunk-
|
|
403
|
-
//# sourceMappingURL=chunk-
|
|
402
|
+
//# sourceMappingURL=chunk-N6C37HXD.js.map
|
|
403
|
+
//# sourceMappingURL=chunk-N6C37HXD.js.map
|