silver-ui 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -65
- package/dist/{chunk-FNRYGCO3.js → chunk-2SN3KVWF.js} +4 -4
- package/dist/{chunk-FNRYGCO3.js.map → chunk-2SN3KVWF.js.map} +1 -1
- package/dist/{chunk-BSPWX2OZ.cjs → chunk-3IDT3PZC.cjs} +10 -10
- package/dist/{chunk-BSPWX2OZ.cjs.map → chunk-3IDT3PZC.cjs.map} +1 -1
- package/dist/chunk-3PEK2Q54.cjs +31 -0
- package/dist/chunk-3PEK2Q54.cjs.map +1 -0
- package/dist/{chunk-4SUQFPWH.js → chunk-45OSUS5A.js} +6 -6
- package/dist/{chunk-4SUQFPWH.js.map → chunk-45OSUS5A.js.map} +1 -1
- package/dist/{chunk-L7XJZJCM.js → chunk-4EUUZQAM.js} +5 -5
- package/dist/{chunk-L7XJZJCM.js.map → chunk-4EUUZQAM.js.map} +1 -1
- package/dist/{chunk-Q3HMGFGI.js → chunk-4JJFQZVY.js} +98 -77
- package/dist/chunk-4JJFQZVY.js.map +1 -0
- package/dist/chunk-5FQKELP6.js +28 -0
- package/dist/chunk-5FQKELP6.js.map +1 -0
- package/dist/{chunk-TTDNCN5G.cjs → chunk-5JROXZBG.cjs} +13 -39
- package/dist/chunk-5JROXZBG.cjs.map +1 -0
- package/dist/{chunk-OUZX7STE.cjs → chunk-5K3C3INR.cjs} +25 -53
- package/dist/chunk-5K3C3INR.cjs.map +1 -0
- package/dist/{chunk-AEYJ6PWC.js → chunk-5RFHYDQY.js} +16 -11
- package/dist/chunk-5RFHYDQY.js.map +1 -0
- package/dist/{chunk-PGTOVMP7.cjs → chunk-6FC5YF2O.cjs} +10 -10
- package/dist/{chunk-PGTOVMP7.cjs.map → chunk-6FC5YF2O.cjs.map} +1 -1
- package/dist/{chunk-6EYLEVC6.js → chunk-6I5QWA6A.js} +13 -6
- package/dist/chunk-6I5QWA6A.js.map +1 -0
- package/dist/{chunk-F7BFO3SD.cjs → chunk-6ZV7HGZT.cjs} +24 -8
- package/dist/chunk-6ZV7HGZT.cjs.map +1 -0
- package/dist/{chunk-2WTHSGDP.cjs → chunk-7EE6DCRP.cjs} +14 -14
- package/dist/{chunk-2WTHSGDP.cjs.map → chunk-7EE6DCRP.cjs.map} +1 -1
- package/dist/{chunk-HIH6MS5D.js → chunk-7TJ2O56S.js} +4 -4
- package/dist/{chunk-HIH6MS5D.js.map → chunk-7TJ2O56S.js.map} +1 -1
- package/dist/chunk-A2AC6WL5.cjs +4 -0
- package/dist/chunk-A2AC6WL5.cjs.map +1 -0
- package/dist/{chunk-BIJ6YDWJ.cjs → chunk-AFJEAYR4.cjs} +15 -8
- package/dist/chunk-AFJEAYR4.cjs.map +1 -0
- package/dist/chunk-AFXU6XIS.js +3 -0
- package/dist/chunk-AFXU6XIS.js.map +1 -0
- package/dist/{chunk-L5PJCLV6.js → chunk-AKAXQ4RL.js} +16 -25
- package/dist/chunk-AKAXQ4RL.js.map +1 -0
- package/dist/{chunk-OTQAREYU.js → chunk-ATK3F3MC.js} +4 -4
- package/dist/{chunk-OTQAREYU.js.map → chunk-ATK3F3MC.js.map} +1 -1
- package/dist/{chunk-2VL66QBX.js → chunk-B5QX6KGJ.js} +3 -3
- package/dist/{chunk-2VL66QBX.js.map → chunk-B5QX6KGJ.js.map} +1 -1
- package/dist/{chunk-TOQ4MGM5.js → chunk-BDFNEQR3.js} +6 -6
- package/dist/{chunk-TOQ4MGM5.js.map → chunk-BDFNEQR3.js.map} +1 -1
- package/dist/{chunk-UARQIMPS.js → chunk-BGLT7XH6.js} +5 -5
- package/dist/{chunk-UARQIMPS.js.map → chunk-BGLT7XH6.js.map} +1 -1
- package/dist/{chunk-2AWSJF22.js → chunk-BNGYGCT2.js} +8 -8
- package/dist/chunk-BNGYGCT2.js.map +1 -0
- package/dist/{chunk-TH537HOM.js → chunk-C6EWA3H2.js} +6 -6
- package/dist/{chunk-TH537HOM.js.map → chunk-C6EWA3H2.js.map} +1 -1
- package/dist/{chunk-2F5TDBRT.cjs → chunk-CABYRYVA.cjs} +8 -8
- package/dist/{chunk-2F5TDBRT.cjs.map → chunk-CABYRYVA.cjs.map} +1 -1
- package/dist/{chunk-7CTHD4G6.cjs → chunk-CNDUYO7I.cjs} +5 -5
- package/dist/{chunk-7CTHD4G6.cjs.map → chunk-CNDUYO7I.cjs.map} +1 -1
- package/dist/{chunk-3VJIUZAY.cjs → chunk-CVT7JW6C.cjs} +16 -25
- package/dist/chunk-CVT7JW6C.cjs.map +1 -0
- package/dist/{chunk-GSTINE4X.js → chunk-CZUMVOPH.js} +1771 -575
- package/dist/chunk-CZUMVOPH.js.map +1 -0
- package/dist/{chunk-MGJLBHPJ.js → chunk-DAO4UXR4.js} +4 -4
- package/dist/{chunk-MGJLBHPJ.js.map → chunk-DAO4UXR4.js.map} +1 -1
- package/dist/{chunk-HWD4HDQ5.cjs → chunk-DFEAB7Z3.cjs} +10 -10
- package/dist/{chunk-HWD4HDQ5.cjs.map → chunk-DFEAB7Z3.cjs.map} +1 -1
- package/dist/{chunk-GY2ZZR4Z.cjs → chunk-DK6USFZP.cjs} +18 -18
- package/dist/{chunk-GY2ZZR4Z.cjs.map → chunk-DK6USFZP.cjs.map} +1 -1
- package/dist/{chunk-WPMWHKJX.js → chunk-DPSAPA6B.js} +5 -5
- package/dist/{chunk-WPMWHKJX.js.map → chunk-DPSAPA6B.js.map} +1 -1
- package/dist/{chunk-AV7D3SXF.js → chunk-DWZR2AGT.js} +4 -4
- package/dist/{chunk-AV7D3SXF.js.map → chunk-DWZR2AGT.js.map} +1 -1
- package/dist/{chunk-2RZNX26F.cjs → chunk-DXUFDJHA.cjs} +12 -13
- package/dist/chunk-DXUFDJHA.cjs.map +1 -0
- package/dist/{chunk-67UUGI3M.cjs → chunk-DYMZ4DLN.cjs} +8 -8
- package/dist/{chunk-67UUGI3M.cjs.map → chunk-DYMZ4DLN.cjs.map} +1 -1
- package/dist/{chunk-JM4Q7ZQH.cjs → chunk-EEOUWM2F.cjs} +8 -8
- package/dist/chunk-EEOUWM2F.cjs.map +1 -0
- package/dist/{chunk-KC4EKXGF.js → chunk-EIJSWHG7.js} +9 -10
- package/dist/chunk-EIJSWHG7.js.map +1 -0
- package/dist/{chunk-FCUUGJTM.cjs → chunk-ENVDR66N.cjs} +132 -160
- package/dist/chunk-ENVDR66N.cjs.map +1 -0
- package/dist/{chunk-J2YKUHQM.js → chunk-ERVWZILR.js} +14 -23
- package/dist/chunk-ERVWZILR.js.map +1 -0
- package/dist/{chunk-IX26TMZD.cjs → chunk-EVCQCZMM.cjs} +5 -5
- package/dist/{chunk-IX26TMZD.cjs.map → chunk-EVCQCZMM.cjs.map} +1 -1
- package/dist/{chunk-E42WOTIC.js → chunk-FIOCTAXT.js} +3 -3
- package/dist/{chunk-E42WOTIC.js.map → chunk-FIOCTAXT.js.map} +1 -1
- package/dist/{chunk-LW3DJOF4.cjs → chunk-FLDTPAG4.cjs} +6 -6
- package/dist/{chunk-LW3DJOF4.cjs.map → chunk-FLDTPAG4.cjs.map} +1 -1
- package/dist/{chunk-XHJRAEGW.js → chunk-FQN22DO5.js} +5 -5
- package/dist/{chunk-XHJRAEGW.js.map → chunk-FQN22DO5.js.map} +1 -1
- package/dist/{chunk-XPGIWOJO.cjs → chunk-FWBYCTUB.cjs} +18 -18
- package/dist/chunk-FWBYCTUB.cjs.map +1 -0
- package/dist/{chunk-UXGHFKLA.js → chunk-G5PU2EL2.js} +4 -4
- package/dist/{chunk-UXGHFKLA.js.map → chunk-G5PU2EL2.js.map} +1 -1
- package/dist/{chunk-UXQSSRBQ.cjs → chunk-GJKRSQEA.cjs} +1781 -581
- package/dist/chunk-GJKRSQEA.cjs.map +1 -0
- package/dist/{chunk-JSAYTQTJ.cjs → chunk-GJZAGTPV.cjs} +7 -7
- package/dist/chunk-GJZAGTPV.cjs.map +1 -0
- package/dist/{chunk-BSI4BQEX.cjs → chunk-GU65FGY6.cjs} +4 -4
- package/dist/{chunk-BSI4BQEX.cjs.map → chunk-GU65FGY6.cjs.map} +1 -1
- package/dist/{chunk-W5F7PYT2.js → chunk-GUUCIG7U.js} +6 -6
- package/dist/{chunk-W5F7PYT2.js.map → chunk-GUUCIG7U.js.map} +1 -1
- package/dist/{chunk-XZZI3JYK.cjs → chunk-H5VMHDRD.cjs} +6 -6
- package/dist/{chunk-XZZI3JYK.cjs.map → chunk-H5VMHDRD.cjs.map} +1 -1
- package/dist/{chunk-ZPJW3PP7.cjs → chunk-H7VK36SZ.cjs} +16 -9
- package/dist/chunk-H7VK36SZ.cjs.map +1 -0
- package/dist/{chunk-2Y7ULSEU.js → chunk-HKGFMJFK.js} +17 -17
- package/dist/{chunk-2Y7ULSEU.js.map → chunk-HKGFMJFK.js.map} +1 -1
- package/dist/{chunk-THTVYP5V.js → chunk-HMJINNXZ.js} +21 -32
- package/dist/chunk-HMJINNXZ.js.map +1 -0
- package/dist/{chunk-VV72PGKH.cjs → chunk-HPOURAKV.cjs} +27 -27
- package/dist/chunk-HPOURAKV.cjs.map +1 -0
- package/dist/{chunk-I2NG2P5K.cjs → chunk-INQ34SVW.cjs} +5 -5
- package/dist/{chunk-I2NG2P5K.cjs.map → chunk-INQ34SVW.cjs.map} +1 -1
- package/dist/{chunk-D5OX6II7.cjs → chunk-IREOTHD3.cjs} +8 -8
- package/dist/chunk-IREOTHD3.cjs.map +1 -0
- package/dist/{chunk-GW6P4FJ4.cjs → chunk-ISWZQUVA.cjs} +25 -40
- package/dist/chunk-ISWZQUVA.cjs.map +1 -0
- package/dist/{chunk-J3X465QT.cjs → chunk-J4LJXCXB.cjs} +9 -9
- package/dist/{chunk-J3X465QT.cjs.map → chunk-J4LJXCXB.cjs.map} +1 -1
- package/dist/{chunk-PBQMHXVO.js → chunk-JC66FRQX.js} +3 -3
- package/dist/{chunk-PBQMHXVO.js.map → chunk-JC66FRQX.js.map} +1 -1
- package/dist/{chunk-S5CMLG2E.js → chunk-JHMUMJF3.js} +9 -5
- package/dist/chunk-JHMUMJF3.js.map +1 -0
- package/dist/{chunk-CUHJDV6K.js → chunk-JR353MN5.js} +6 -6
- package/dist/{chunk-CUHJDV6K.js.map → chunk-JR353MN5.js.map} +1 -1
- package/dist/{chunk-JS6MRT6M.js → chunk-K2V3IOAX.js} +4 -4
- package/dist/{chunk-JS6MRT6M.js.map → chunk-K2V3IOAX.js.map} +1 -1
- package/dist/{chunk-VH3G4IUX.js → chunk-K2WT7A64.js} +12 -38
- package/dist/chunk-K2WT7A64.js.map +1 -0
- package/dist/{chunk-OERNLR2P.js → chunk-KCI4I42U.js} +8 -8
- package/dist/{chunk-OERNLR2P.js.map → chunk-KCI4I42U.js.map} +1 -1
- package/dist/{chunk-EBJPUXFQ.js → chunk-KEPCKSDE.js} +31 -11
- package/dist/chunk-KEPCKSDE.js.map +1 -0
- package/dist/{chunk-OF5NULAO.js → chunk-KG7RHDVX.js} +7 -7
- package/dist/{chunk-OF5NULAO.js.map → chunk-KG7RHDVX.js.map} +1 -1
- package/dist/{chunk-6PIVWNUR.js → chunk-KWZMXX4F.js} +5 -5
- package/dist/chunk-KWZMXX4F.js.map +1 -0
- package/dist/{chunk-DZZEJY3J.js → chunk-LDYUVGD4.js} +120 -148
- package/dist/chunk-LDYUVGD4.js.map +1 -0
- package/dist/{chunk-VD52FLHL.js → chunk-LF6I2B7G.js} +9 -9
- package/dist/{chunk-VD52FLHL.js.map → chunk-LF6I2B7G.js.map} +1 -1
- package/dist/{chunk-3IYM5MAC.js → chunk-LLSWAAFH.js} +4 -4
- package/dist/{chunk-3IYM5MAC.js.map → chunk-LLSWAAFH.js.map} +1 -1
- package/dist/{chunk-LBGC6EC5.js → chunk-M64WMYYV.js} +15 -15
- package/dist/chunk-M64WMYYV.js.map +1 -0
- package/dist/{chunk-3Z5PF75J.cjs → chunk-MHAXS4GO.cjs} +17 -19
- package/dist/chunk-MHAXS4GO.cjs.map +1 -0
- package/dist/{chunk-TKTCN4JE.cjs → chunk-MHEPDHL5.cjs} +9 -9
- package/dist/{chunk-TKTCN4JE.cjs.map → chunk-MHEPDHL5.cjs.map} +1 -1
- package/dist/{chunk-Z7OUMVR5.cjs → chunk-NFEL5GNX.cjs} +9 -9
- package/dist/{chunk-Z7OUMVR5.cjs.map → chunk-NFEL5GNX.cjs.map} +1 -1
- package/dist/{chunk-X4I5YARV.cjs → chunk-NG2H3PYA.cjs} +11 -11
- package/dist/{chunk-X4I5YARV.cjs.map → chunk-NG2H3PYA.cjs.map} +1 -1
- package/dist/{chunk-VO4FG3L2.cjs → chunk-NW36BN7N.cjs} +17 -17
- package/dist/{chunk-VO4FG3L2.cjs.map → chunk-NW36BN7N.cjs.map} +1 -1
- package/dist/{chunk-RJEZBOSH.js → chunk-NXTDP6AX.js} +12 -14
- package/dist/chunk-NXTDP6AX.js.map +1 -0
- package/dist/{chunk-N77K3NQY.cjs → chunk-P5LMEANN.cjs} +7 -7
- package/dist/{chunk-N77K3NQY.cjs.map → chunk-P5LMEANN.cjs.map} +1 -1
- package/dist/{chunk-4HXNBLCJ.js → chunk-P7TSM63O.js} +3 -3
- package/dist/{chunk-4HXNBLCJ.js.map → chunk-P7TSM63O.js.map} +1 -1
- package/dist/chunk-PG4CZRTU.js +77 -0
- package/dist/chunk-PG4CZRTU.js.map +1 -0
- package/dist/{chunk-SUT35RHA.cjs → chunk-PHFJBQXU.cjs} +8 -8
- package/dist/{chunk-SUT35RHA.cjs.map → chunk-PHFJBQXU.cjs.map} +1 -1
- package/dist/{chunk-YJEX32HZ.cjs → chunk-PNM7MPUX.cjs} +8 -8
- package/dist/{chunk-YJEX32HZ.cjs.map → chunk-PNM7MPUX.cjs.map} +1 -1
- package/dist/{chunk-MEXR5ONE.js → chunk-PU4PBI3H.js} +5 -5
- package/dist/{chunk-MEXR5ONE.js.map → chunk-PU4PBI3H.js.map} +1 -1
- package/dist/{chunk-2GMDMZKI.cjs → chunk-PYJX2SBC.cjs} +5 -5
- package/dist/{chunk-2GMDMZKI.cjs.map → chunk-PYJX2SBC.cjs.map} +1 -1
- package/dist/{chunk-U5M4JZBX.js → chunk-PYN75QAG.js} +6 -6
- package/dist/chunk-PYN75QAG.js.map +1 -0
- package/dist/{chunk-2VAUVJVG.js → chunk-QHXI2QDK.js} +3 -3
- package/dist/{chunk-2VAUVJVG.js.map → chunk-QHXI2QDK.js.map} +1 -1
- package/dist/{chunk-RRXOSNCX.cjs → chunk-QTOFQB26.cjs} +11 -11
- package/dist/{chunk-RRXOSNCX.cjs.map → chunk-QTOFQB26.cjs.map} +1 -1
- package/dist/{chunk-DV4K35UC.cjs → chunk-QYZXTIB2.cjs} +4 -4
- package/dist/{chunk-DV4K35UC.cjs.map → chunk-QYZXTIB2.cjs.map} +1 -1
- package/dist/{chunk-FFF57VHO.cjs → chunk-R3ZS6FU6.cjs} +8 -8
- package/dist/{chunk-FFF57VHO.cjs.map → chunk-R3ZS6FU6.cjs.map} +1 -1
- package/dist/{chunk-L5JS6P62.cjs → chunk-RAMDISDK.cjs} +14 -10
- package/dist/chunk-RAMDISDK.cjs.map +1 -0
- package/dist/{chunk-SUWRSJAN.cjs → chunk-RLIBY7XB.cjs} +16 -11
- package/dist/chunk-RLIBY7XB.cjs.map +1 -0
- package/dist/{chunk-I47WOF6E.js → chunk-RU7JPU7V.js} +3 -3
- package/dist/{chunk-I47WOF6E.js.map → chunk-RU7JPU7V.js.map} +1 -1
- package/dist/{chunk-HNDDNW52.js → chunk-RXKDRZF3.js} +3 -3
- package/dist/{chunk-HNDDNW52.js.map → chunk-RXKDRZF3.js.map} +1 -1
- package/dist/{chunk-EFBSEJBD.js → chunk-S4WWBV4N.js} +22 -47
- package/dist/chunk-S4WWBV4N.js.map +1 -0
- package/dist/{chunk-6J326CN6.js → chunk-SEDUAMDW.js} +4 -4
- package/dist/{chunk-6J326CN6.js.map → chunk-SEDUAMDW.js.map} +1 -1
- package/dist/{chunk-TSKFGLGQ.cjs → chunk-SKZNSOB7.cjs} +18 -27
- package/dist/chunk-SKZNSOB7.cjs.map +1 -0
- package/dist/{chunk-YDNEAHVK.cjs → chunk-TNYAYXKC.cjs} +37 -37
- package/dist/{chunk-YDNEAHVK.cjs.map → chunk-TNYAYXKC.cjs.map} +1 -1
- package/dist/{chunk-JJNXQ7EL.js → chunk-TQDJVPHP.js} +3 -3
- package/dist/{chunk-JJNXQ7EL.js.map → chunk-TQDJVPHP.js.map} +1 -1
- package/dist/{chunk-MEUELWGO.cjs → chunk-TVWU4XBL.cjs} +8 -8
- package/dist/{chunk-MEUELWGO.cjs.map → chunk-TVWU4XBL.cjs.map} +1 -1
- package/dist/{chunk-HWP2UGOC.cjs → chunk-U4L75VA4.cjs} +126 -105
- package/dist/chunk-U4L75VA4.cjs.map +1 -0
- package/dist/{chunk-6DAZ2ZOW.cjs → chunk-U5HW5P7Q.cjs} +11 -11
- package/dist/{chunk-6DAZ2ZOW.cjs.map → chunk-U5HW5P7Q.cjs.map} +1 -1
- package/dist/{chunk-R4DGCQTA.cjs → chunk-UMS46KF4.cjs} +7 -7
- package/dist/{chunk-R4DGCQTA.cjs.map → chunk-UMS46KF4.cjs.map} +1 -1
- package/dist/{chunk-75KSHZTV.js → chunk-UT45YVPI.js} +7 -7
- package/dist/{chunk-75KSHZTV.js.map → chunk-UT45YVPI.js.map} +1 -1
- package/dist/{chunk-LKGHYNLH.js → chunk-UYZQGHFI.js} +10 -10
- package/dist/chunk-UYZQGHFI.js.map +1 -0
- package/dist/{chunk-IGJEZLHP.cjs → chunk-UZGPFPIV.cjs} +17 -17
- package/dist/{chunk-IGJEZLHP.cjs.map → chunk-UZGPFPIV.cjs.map} +1 -1
- package/dist/{chunk-Q4HAXT5C.cjs → chunk-VK7DXUGH.cjs} +31 -11
- package/dist/chunk-VK7DXUGH.cjs.map +1 -0
- package/dist/chunk-VPWNRWNO.cjs +81 -0
- package/dist/chunk-VPWNRWNO.cjs.map +1 -0
- package/dist/{chunk-K4K4FU3D.cjs → chunk-VREW3BK6.cjs} +11 -11
- package/dist/{chunk-K4K4FU3D.cjs.map → chunk-VREW3BK6.cjs.map} +1 -1
- package/dist/{chunk-ANACERIO.cjs → chunk-VRQ66IBW.cjs} +6 -6
- package/dist/{chunk-ANACERIO.cjs.map → chunk-VRQ66IBW.cjs.map} +1 -1
- package/dist/{chunk-HXIU3SIQ.cjs → chunk-VW52NVGM.cjs} +5 -5
- package/dist/{chunk-HXIU3SIQ.cjs.map → chunk-VW52NVGM.cjs.map} +1 -1
- package/dist/{chunk-5XMWGK3O.cjs → chunk-VXOIOPGZ.cjs} +25 -36
- package/dist/chunk-VXOIOPGZ.cjs.map +1 -0
- package/dist/{chunk-4RDA4W4N.js → chunk-WAWHHXSR.js} +23 -7
- package/dist/chunk-WAWHHXSR.js.map +1 -0
- package/dist/{chunk-65MJZYO6.js → chunk-WEXTGWRE.js} +14 -29
- package/dist/chunk-WEXTGWRE.js.map +1 -0
- package/dist/{chunk-ECDYAZ2R.js → chunk-WHDDBOJN.js} +5 -5
- package/dist/{chunk-ECDYAZ2R.js.map → chunk-WHDDBOJN.js.map} +1 -1
- package/dist/{chunk-ESRDHDYN.cjs → chunk-WINDLDH3.cjs} +9 -9
- package/dist/{chunk-ESRDHDYN.cjs.map → chunk-WINDLDH3.cjs.map} +1 -1
- package/dist/{chunk-ADSG24VE.js → chunk-WM7NEOME.js} +6 -6
- package/dist/{chunk-ADSG24VE.js.map → chunk-WM7NEOME.js.map} +1 -1
- package/dist/{chunk-H4L456EW.js → chunk-XTLNUYCK.js} +12 -5
- package/dist/chunk-XTLNUYCK.js.map +1 -0
- package/dist/{chunk-QO5C7TIV.js → chunk-ZSB43DEI.js} +5 -5
- package/dist/{chunk-QO5C7TIV.js.map → chunk-ZSB43DEI.js.map} +1 -1
- package/dist/{chunk-V4ZH2H2P.cjs → chunk-ZUAWNT66.cjs} +14 -14
- package/dist/{chunk-V4ZH2H2P.cjs.map → chunk-ZUAWNT66.cjs.map} +1 -1
- package/dist/components/Alert/index.cjs +10 -8
- package/dist/components/Alert/index.js +9 -7
- package/dist/components/AlertDialog/index.cjs +12 -10
- package/dist/components/AlertDialog/index.js +10 -8
- package/dist/components/AppShell/index.cjs +18 -15
- package/dist/components/AppShell/index.js +15 -12
- package/dist/components/AutocompleteInput/index.cjs +17 -14
- package/dist/components/AutocompleteInput/index.js +13 -10
- package/dist/components/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
- package/dist/components/Breadcrumbs/index.cjs +5 -10
- package/dist/components/Breadcrumbs/index.js +2 -7
- package/dist/components/Button/Button.d.ts +5 -3
- package/dist/components/Button/Button.d.ts.map +1 -1
- package/dist/components/Button/index.cjs +9 -7
- package/dist/components/Button/index.js +8 -6
- package/dist/components/Calendar/index.cjs +10 -8
- package/dist/components/Calendar/index.js +9 -7
- package/dist/components/CheckboxInput/index.cjs +9 -8
- package/dist/components/CheckboxInput/index.js +8 -7
- package/dist/components/CodeBlock/index.cjs +10 -8
- package/dist/components/CodeBlock/index.js +9 -7
- package/dist/components/ContextMenu/index.cjs +14 -12
- package/dist/components/ContextMenu/index.js +12 -10
- package/dist/components/DateInput/index.cjs +13 -11
- package/dist/components/DateInput/index.js +12 -10
- package/dist/components/DateRangeInput/index.cjs +13 -11
- package/dist/components/DateRangeInput/index.js +12 -10
- package/dist/components/DateTimeInput/index.cjs +15 -13
- package/dist/components/DateTimeInput/index.js +14 -12
- package/dist/components/DropdownMenu/index.cjs +15 -13
- package/dist/components/DropdownMenu/index.js +11 -9
- package/dist/components/EmptyState/index.cjs +5 -5
- package/dist/components/EmptyState/index.js +4 -4
- package/dist/components/Field/index.cjs +6 -6
- package/dist/components/Field/index.js +4 -4
- package/dist/components/FileInput/index.cjs +11 -9
- package/dist/components/FileInput/index.js +10 -8
- package/dist/components/HoverCard/HoverCard.d.ts +6 -6
- package/dist/components/HoverCard/HoverCard.d.ts.map +1 -1
- package/dist/components/HoverCard/index.cjs +4 -4
- package/dist/components/HoverCard/index.js +2 -2
- package/dist/components/InputGroup/index.cjs +9 -9
- package/dist/components/InputGroup/index.js +5 -5
- package/dist/components/Item/Item.d.ts.map +1 -1
- package/dist/components/Item/index.cjs +7 -8
- package/dist/components/Item/index.js +6 -7
- package/dist/components/Layout/Layout.recipe.d.ts +17 -0
- package/dist/components/Layout/Layout.recipe.d.ts.map +1 -1
- package/dist/components/Layout/LayoutHeader.d.ts +6 -1
- package/dist/components/Layout/LayoutHeader.d.ts.map +1 -1
- package/dist/components/Layout/index.cjs +14 -12
- package/dist/components/Layout/index.js +9 -7
- package/dist/components/Lightbox/index.cjs +11 -9
- package/dist/components/Lightbox/index.js +9 -7
- package/dist/components/Link/Link.d.ts +4 -5
- package/dist/components/Link/Link.d.ts.map +1 -1
- package/dist/components/Link/Link.recipe.d.ts.map +1 -1
- package/dist/components/Link/index.cjs +9 -6
- package/dist/components/Link/index.js +6 -3
- package/dist/components/List/index.cjs +9 -10
- package/dist/components/List/index.js +7 -8
- package/dist/components/MetadataList/MetadataList.recipe.d.ts +9 -1
- package/dist/components/MetadataList/MetadataList.recipe.d.ts.map +1 -1
- package/dist/components/MetadataList/MetadataListItem.d.ts +6 -1
- package/dist/components/MetadataList/MetadataListItem.d.ts.map +1 -1
- package/dist/components/MetadataList/index.cjs +9 -6
- package/dist/components/MetadataList/index.js +7 -4
- package/dist/components/MultiSelect/index.cjs +13 -11
- package/dist/components/MultiSelect/index.js +12 -10
- package/dist/components/NumberInput/index.cjs +12 -10
- package/dist/components/NumberInput/index.js +11 -9
- package/dist/components/Pagination/index.cjs +10 -8
- package/dist/components/Pagination/index.js +9 -7
- package/dist/components/PasswordInput/index.cjs +13 -11
- package/dist/components/PasswordInput/index.js +12 -10
- package/dist/components/Popover/Popover.d.ts +13 -1
- package/dist/components/Popover/Popover.d.ts.map +1 -1
- package/dist/components/Popover/index.cjs +11 -9
- package/dist/components/Popover/index.js +9 -7
- package/dist/components/RadioGroup/index.cjs +10 -9
- package/dist/components/RadioGroup/index.js +8 -7
- package/dist/components/Schedule/CalendarEvent.d.ts +18 -4
- package/dist/components/Schedule/CalendarEvent.d.ts.map +1 -1
- package/dist/components/Schedule/DayView.d.ts +7 -1
- package/dist/components/Schedule/DayView.d.ts.map +1 -1
- package/dist/components/Schedule/ListView.d.ts.map +1 -1
- package/dist/components/Schedule/ListView.recipe.d.ts +56 -0
- package/dist/components/Schedule/ListView.recipe.d.ts.map +1 -0
- package/dist/components/Schedule/MonthlyView.d.ts.map +1 -1
- package/dist/components/Schedule/MonthlyView.recipe.d.ts +47 -0
- package/dist/components/Schedule/MonthlyView.recipe.d.ts.map +1 -0
- package/dist/components/Schedule/ScheduleEvent.recipe.d.ts +17 -0
- package/dist/components/Schedule/ScheduleEvent.recipe.d.ts.map +1 -1
- package/dist/components/Schedule/TimeGridView.d.ts +7 -1
- package/dist/components/Schedule/TimeGridView.d.ts.map +1 -1
- package/dist/components/Schedule/TimeGridView.recipe.d.ts +43 -0
- package/dist/components/Schedule/TimeGridView.recipe.d.ts.map +1 -0
- package/dist/components/Schedule/WeeklyView.d.ts +7 -1
- package/dist/components/Schedule/WeeklyView.d.ts.map +1 -1
- package/dist/components/Schedule/index.cjs +44 -21
- package/dist/components/Schedule/index.d.ts +6 -2
- package/dist/components/Schedule/index.d.ts.map +1 -1
- package/dist/components/Schedule/index.js +17 -10
- package/dist/components/Schedule/plugins/EventMovePlugin.d.ts +23 -0
- package/dist/components/Schedule/plugins/EventMovePlugin.d.ts.map +1 -0
- package/dist/components/Schedule/plugins/EventPopoverPlugin.d.ts +31 -0
- package/dist/components/Schedule/plugins/EventPopoverPlugin.d.ts.map +1 -0
- package/dist/components/Schedule/plugins/EventResizePlugin.d.ts +24 -0
- package/dist/components/Schedule/plugins/EventResizePlugin.d.ts.map +1 -0
- package/dist/components/Schedule/plugins/ScheduleEventPopoverContent.d.ts +39 -0
- package/dist/components/Schedule/plugins/ScheduleEventPopoverContent.d.ts.map +1 -0
- package/dist/components/Schedule/plugins/index.d.ts +4 -0
- package/dist/components/Schedule/plugins/index.d.ts.map +1 -1
- package/dist/components/Schedule/shared.d.ts +58 -3
- package/dist/components/Schedule/shared.d.ts.map +1 -1
- package/dist/components/Schedule/types.d.ts +47 -1
- package/dist/components/Schedule/types.d.ts.map +1 -1
- package/dist/components/SearchFilterInput/SearchFilterInputEditPopover.d.ts.map +1 -1
- package/dist/components/SearchFilterInput/SearchFilterInputEditPopover.recipe.d.ts +4 -0
- package/dist/components/SearchFilterInput/SearchFilterInputEditPopover.recipe.d.ts.map +1 -0
- package/dist/components/SearchFilterInput/index.cjs +32 -29
- package/dist/components/SearchFilterInput/index.js +24 -21
- package/dist/components/Select/index.cjs +15 -13
- package/dist/components/Select/index.js +13 -11
- package/dist/components/SideNav/SideNav.d.ts.map +1 -1
- package/dist/components/SideNav/SideNav.recipe.d.ts +26 -7
- package/dist/components/SideNav/SideNav.recipe.d.ts.map +1 -1
- package/dist/components/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/components/SideNav/index.cjs +18 -15
- package/dist/components/SideNav/index.js +12 -9
- package/dist/components/Slider/index.cjs +6 -6
- package/dist/components/Slider/index.js +5 -5
- package/dist/components/Spinner/index.cjs +5 -5
- package/dist/components/Spinner/index.js +4 -4
- package/dist/components/SplitButton/index.cjs +13 -11
- package/dist/components/SplitButton/index.js +12 -10
- package/dist/components/Stepper/index.cjs +5 -5
- package/dist/components/Stepper/index.js +4 -4
- package/dist/components/Switch/index.cjs +6 -6
- package/dist/components/Switch/index.js +5 -5
- package/dist/components/Table/index.cjs +54 -51
- package/dist/components/Table/index.js +28 -25
- package/dist/components/Tabs/Tab.d.ts.map +1 -1
- package/dist/components/Tabs/index.cjs +15 -13
- package/dist/components/Tabs/index.js +10 -8
- package/dist/components/Tag/Tag.d.ts.map +1 -1
- package/dist/components/Tag/index.cjs +8 -5
- package/dist/components/Tag/index.js +7 -4
- package/dist/components/TagsInput/index.cjs +15 -12
- package/dist/components/TagsInput/index.js +14 -11
- package/dist/components/Text/Heading.d.ts +5 -5
- package/dist/components/Text/Heading.d.ts.map +1 -1
- package/dist/components/Text/Text.d.ts +5 -5
- package/dist/components/Text/Text.d.ts.map +1 -1
- package/dist/components/Text/index.cjs +5 -5
- package/dist/components/Text/index.js +3 -3
- package/dist/components/TextArea/index.cjs +7 -7
- package/dist/components/TextArea/index.js +6 -6
- package/dist/components/TextInput/index.cjs +12 -10
- package/dist/components/TextInput/index.js +11 -9
- package/dist/components/Thumbnail/index.cjs +10 -8
- package/dist/components/Thumbnail/index.js +9 -7
- package/dist/components/TimeInput/index.cjs +11 -9
- package/dist/components/TimeInput/index.js +10 -8
- package/dist/components/Toast/index.cjs +12 -10
- package/dist/components/Toast/index.js +9 -7
- package/dist/components/ToggleButton/ToggleButton.recipe.d.ts.map +1 -1
- package/dist/components/ToggleButton/index.cjs +7 -7
- package/dist/components/ToggleButton/index.js +5 -5
- package/dist/components/Tooltip/Tooltip.d.ts +6 -6
- package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/components/Tooltip/index.cjs +4 -4
- package/dist/components/Tooltip/index.js +2 -2
- package/dist/components/TopNav/TopNavItem.d.ts.map +1 -1
- package/dist/components/TopNav/index.cjs +16 -13
- package/dist/components/TopNav/index.js +11 -8
- package/dist/components/TreeView/TreeViewItem.d.ts.map +1 -1
- package/dist/components/TreeView/index.cjs +3 -2
- package/dist/components/TreeView/index.js +2 -1
- package/dist/index.cjs +233 -214
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +60 -57
- package/dist/index.js.map +1 -1
- package/dist/internal/ActionElement.d.ts +45 -0
- package/dist/internal/ActionElement.d.ts.map +1 -0
- package/dist/internal/HoverLayerTrigger.d.ts +3 -4
- package/dist/internal/HoverLayerTrigger.d.ts.map +1 -1
- package/dist/internal/useLayer.d.ts +12 -0
- package/dist/internal/useLayer.d.ts.map +1 -1
- package/dist/internal/useSelectListbox.d.ts +5 -5
- package/dist/internal/useSelectListbox.d.ts.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/dist/chunk-2AWSJF22.js.map +0 -1
- package/dist/chunk-2RZNX26F.cjs.map +0 -1
- package/dist/chunk-3VJIUZAY.cjs.map +0 -1
- package/dist/chunk-3Z5PF75J.cjs.map +0 -1
- package/dist/chunk-4RDA4W4N.js.map +0 -1
- package/dist/chunk-5XMWGK3O.cjs.map +0 -1
- package/dist/chunk-65MJZYO6.js.map +0 -1
- package/dist/chunk-6EYLEVC6.js.map +0 -1
- package/dist/chunk-6PIVWNUR.js.map +0 -1
- package/dist/chunk-AEYJ6PWC.js.map +0 -1
- package/dist/chunk-BIJ6YDWJ.cjs.map +0 -1
- package/dist/chunk-D5OX6II7.cjs.map +0 -1
- package/dist/chunk-DZZEJY3J.js.map +0 -1
- package/dist/chunk-EBJPUXFQ.js.map +0 -1
- package/dist/chunk-EFBSEJBD.js.map +0 -1
- package/dist/chunk-F7BFO3SD.cjs.map +0 -1
- package/dist/chunk-FCUUGJTM.cjs.map +0 -1
- package/dist/chunk-GSTINE4X.js.map +0 -1
- package/dist/chunk-GW6P4FJ4.cjs.map +0 -1
- package/dist/chunk-H4L456EW.js.map +0 -1
- package/dist/chunk-HWP2UGOC.cjs.map +0 -1
- package/dist/chunk-J2YKUHQM.js.map +0 -1
- package/dist/chunk-JM4Q7ZQH.cjs.map +0 -1
- package/dist/chunk-JSAYTQTJ.cjs.map +0 -1
- package/dist/chunk-KC4EKXGF.js.map +0 -1
- package/dist/chunk-L5JS6P62.cjs.map +0 -1
- package/dist/chunk-L5PJCLV6.js.map +0 -1
- package/dist/chunk-LBGC6EC5.js.map +0 -1
- package/dist/chunk-LKGHYNLH.js.map +0 -1
- package/dist/chunk-OUZX7STE.cjs.map +0 -1
- package/dist/chunk-Q3HMGFGI.js.map +0 -1
- package/dist/chunk-Q4HAXT5C.cjs.map +0 -1
- package/dist/chunk-RJEZBOSH.js.map +0 -1
- package/dist/chunk-S5CMLG2E.js.map +0 -1
- package/dist/chunk-SUWRSJAN.cjs.map +0 -1
- package/dist/chunk-THTVYP5V.js.map +0 -1
- package/dist/chunk-TSKFGLGQ.cjs.map +0 -1
- package/dist/chunk-TTDNCN5G.cjs.map +0 -1
- package/dist/chunk-U5M4JZBX.js.map +0 -1
- package/dist/chunk-UXQSSRBQ.cjs.map +0 -1
- package/dist/chunk-VH3G4IUX.js.map +0 -1
- package/dist/chunk-VV72PGKH.cjs.map +0 -1
- package/dist/chunk-XPGIWOJO.cjs.map +0 -1
- package/dist/chunk-ZPJW3PP7.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/TimeInput/TimeInput.tsx"],"names":["css","Temporal","useId","isReactNode","getStatusMessageID","getDescribedBy","getNecessity","jsx","Field","jsxs","inputRecipe","inputStyles","Icon","Clock","cx","Button","X","Spinner","getStatusIcon"],"mappings":"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","file":"chunk-TKTCN4JE.cjs","sourcesContent":["import {Temporal} from '@js-temporal/polyfill';\nimport {Clock, X} from 'lucide-react';\nimport {\n useId,\n type CSSProperties,\n type FocusEvent,\n type ReactNode,\n type Ref,\n} from 'react';\nimport {Button} from 'components/Button';\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 {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport {css} from 'styled-system/css';\n\nconst styles = {\n input: css({\n '&::-webkit-calendar-picker-indicator': {\n display: 'none',\n },\n }),\n} as const;\n\nexport type PlainTime = Temporal.PlainTime;\n\nexport type TimeInputProps = {\n /**\n * Additional CSS class names applied to the input wrapper.\n */\n className?: string;\n /**\n * Test ID applied to the input element.\n */\n 'data-testid'?: string;\n /**\n * Supporting text displayed below the label.\n */\n description?: ReactNode;\n /**\n * Whether to focus the input on mount.\n * @default false\n */\n hasAutoFocus?: boolean;\n /**\n * Whether to show a clear button when a value is set.\n * @default false\n */\n hasClear?: boolean;\n /**\n * Whether the input includes a seconds field.\n * @default false\n */\n hasSeconds?: boolean;\n /**\n * HTML name attribute.\n */\n htmlName?: string;\n /**\n * Whether the input 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 input 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 * Latest allowed time.\n */\n max?: PlainTime;\n /**\n * Earliest allowed time.\n */\n min?: PlainTime;\n /**\n * Called when the input loses focus.\n */\n onBlur?: (event: FocusEvent<HTMLInputElement>) => void;\n /**\n * Called when the time value changes.\n */\n onChange: (value: PlainTime | null) => void;\n /**\n * Called when the input gains focus.\n */\n onFocus?: (event: FocusEvent<HTMLInputElement>) => void;\n /**\n * Placeholder text.\n * @default 'Select a time'\n */\n placeholder?: string;\n /**\n * Ref forwarded to the input element.\n */\n ref?: Ref<HTMLInputElement>;\n /**\n * Visual size.\n * @default 'md'\n */\n size?: InputSize;\n /**\n * Validation status displayed below the input.\n */\n status?: InputStatus;\n /**\n * Step increment in seconds for the time picker.\n */\n step?: number;\n /**\n * Inline styles applied to the input wrapper.\n */\n style?: CSSProperties;\n /**\n * Controlled time value. Pass `null` for an empty input.\n */\n value: PlainTime | null;\n} & FieldNecessity;\n\nfunction toInputString(\n time: PlainTime | null | undefined,\n hasSeconds: boolean,\n): string {\n if (time == null) {\n return '';\n }\n return time.toString({\n smallestUnit: hasSeconds ? 'second' : 'minute',\n });\n}\n\nfunction fromInputString(value: string): PlainTime | null {\n if (value === '') {\n return null;\n }\n try {\n return Temporal.PlainTime.from(value);\n } catch {\n return null;\n }\n}\n\n/**\n * Time picker input field with optional seconds granularity.\n */\nexport function TimeInput({\n label,\n value,\n onBlur,\n onChange,\n onFocus,\n hasSeconds = false,\n hasClear = false,\n hasAutoFocus = false,\n min,\n max,\n step,\n size = 'md',\n description,\n isLabelHidden = false,\n isOptional,\n isRequired,\n isDisabled = false,\n isLoading = false,\n htmlName,\n status,\n labelIcon,\n labelTooltip,\n placeholder = 'Select a time',\n className,\n 'data-testid': dataTestId,\n style,\n ref,\n}: TimeInputProps): 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 describedBy = getDescribedBy(descriptionID, statusMessageID);\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={inputRecipe({\n size,\n status: status?.type,\n isDisabled,\n })}>\n <span className={inputStyles.iconSlot}>\n <Icon icon={Clock} size=\"sm\" />\n </span>\n <input\n aria-busy={isLoading || undefined}\n aria-describedby={describedBy}\n aria-invalid={status?.type === 'error' || 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.input)}\n data-autofocus={hasAutoFocus || undefined}\n data-testid={dataTestId}\n disabled={isDisabled}\n id={inputId}\n max={toInputString(max, hasSeconds)}\n min={toInputString(min, hasSeconds)}\n name={htmlName}\n onBlur={onBlur}\n onChange={event => onChange(fromInputString(event.target.value))}\n onFocus={onFocus}\n placeholder={placeholder}\n ref={ref}\n step={step ?? (hasSeconds ? 1 : 60)}\n type=\"time\"\n value={toInputString(value, hasSeconds)}\n />\n {hasClear && value != null && !isDisabled ? (\n <Button\n icon={X}\n isIconOnly\n label={`Clear ${label}`}\n onClick={() => onChange(null)}\n size=\"sm\"\n variant=\"ghost\"\n />\n ) : null}\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 </Field>\n );\n}\n\nTimeInput.displayName = 'TimeInput';\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/TimeInput/TimeInput.tsx"],"names":["css","Temporal","useId","isReactNode","getStatusMessageID","getDescribedBy","getNecessity","jsx","Field","jsxs","inputRecipe","inputStyles","Icon","Clock","cx","Button","X","Spinner","getStatusIcon"],"mappings":"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","file":"chunk-MHEPDHL5.cjs","sourcesContent":["import {Temporal} from '@js-temporal/polyfill';\nimport {Clock, X} from 'lucide-react';\nimport {\n useId,\n type CSSProperties,\n type FocusEvent,\n type ReactNode,\n type Ref,\n} from 'react';\nimport {Button} from 'components/Button';\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 {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport {css} from 'styled-system/css';\n\nconst styles = {\n input: css({\n '&::-webkit-calendar-picker-indicator': {\n display: 'none',\n },\n }),\n} as const;\n\nexport type PlainTime = Temporal.PlainTime;\n\nexport type TimeInputProps = {\n /**\n * Additional CSS class names applied to the input wrapper.\n */\n className?: string;\n /**\n * Test ID applied to the input element.\n */\n 'data-testid'?: string;\n /**\n * Supporting text displayed below the label.\n */\n description?: ReactNode;\n /**\n * Whether to focus the input on mount.\n * @default false\n */\n hasAutoFocus?: boolean;\n /**\n * Whether to show a clear button when a value is set.\n * @default false\n */\n hasClear?: boolean;\n /**\n * Whether the input includes a seconds field.\n * @default false\n */\n hasSeconds?: boolean;\n /**\n * HTML name attribute.\n */\n htmlName?: string;\n /**\n * Whether the input 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 input 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 * Latest allowed time.\n */\n max?: PlainTime;\n /**\n * Earliest allowed time.\n */\n min?: PlainTime;\n /**\n * Called when the input loses focus.\n */\n onBlur?: (event: FocusEvent<HTMLInputElement>) => void;\n /**\n * Called when the time value changes.\n */\n onChange: (value: PlainTime | null) => void;\n /**\n * Called when the input gains focus.\n */\n onFocus?: (event: FocusEvent<HTMLInputElement>) => void;\n /**\n * Placeholder text.\n * @default 'Select a time'\n */\n placeholder?: string;\n /**\n * Ref forwarded to the input element.\n */\n ref?: Ref<HTMLInputElement>;\n /**\n * Visual size.\n * @default 'md'\n */\n size?: InputSize;\n /**\n * Validation status displayed below the input.\n */\n status?: InputStatus;\n /**\n * Step increment in seconds for the time picker.\n */\n step?: number;\n /**\n * Inline styles applied to the input wrapper.\n */\n style?: CSSProperties;\n /**\n * Controlled time value. Pass `null` for an empty input.\n */\n value: PlainTime | null;\n} & FieldNecessity;\n\nfunction toInputString(\n time: PlainTime | null | undefined,\n hasSeconds: boolean,\n): string {\n if (time == null) {\n return '';\n }\n return time.toString({\n smallestUnit: hasSeconds ? 'second' : 'minute',\n });\n}\n\nfunction fromInputString(value: string): PlainTime | null {\n if (value === '') {\n return null;\n }\n try {\n return Temporal.PlainTime.from(value);\n } catch {\n return null;\n }\n}\n\n/**\n * Time picker input field with optional seconds granularity.\n */\nexport function TimeInput({\n label,\n value,\n onBlur,\n onChange,\n onFocus,\n hasSeconds = false,\n hasClear = false,\n hasAutoFocus = false,\n min,\n max,\n step,\n size = 'md',\n description,\n isLabelHidden = false,\n isOptional,\n isRequired,\n isDisabled = false,\n isLoading = false,\n htmlName,\n status,\n labelIcon,\n labelTooltip,\n placeholder = 'Select a time',\n className,\n 'data-testid': dataTestId,\n style,\n ref,\n}: TimeInputProps): 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 describedBy = getDescribedBy(descriptionID, statusMessageID);\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={inputRecipe({\n size,\n status: status?.type,\n isDisabled,\n })}>\n <span className={inputStyles.iconSlot}>\n <Icon icon={Clock} size=\"sm\" />\n </span>\n <input\n aria-busy={isLoading || undefined}\n aria-describedby={describedBy}\n aria-invalid={status?.type === 'error' || 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.input)}\n data-autofocus={hasAutoFocus || undefined}\n data-testid={dataTestId}\n disabled={isDisabled}\n id={inputId}\n max={toInputString(max, hasSeconds)}\n min={toInputString(min, hasSeconds)}\n name={htmlName}\n onBlur={onBlur}\n onChange={event => onChange(fromInputString(event.target.value))}\n onFocus={onFocus}\n placeholder={placeholder}\n ref={ref}\n step={step ?? (hasSeconds ? 1 : 60)}\n type=\"time\"\n value={toInputString(value, hasSeconds)}\n />\n {hasClear && value != null && !isDisabled ? (\n <Button\n icon={X}\n isIconOnly\n label={`Clear ${label}`}\n onClick={() => onChange(null)}\n size=\"sm\"\n variant=\"ghost\"\n />\n ) : null}\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 </Field>\n );\n}\n\nTimeInput.displayName = 'TimeInput';\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunkVXBVSYPA_cjs = require('./chunk-VXBVSYPA.cjs');
|
|
4
|
-
var
|
|
4
|
+
var chunkR3ZS6FU6_cjs = require('./chunk-R3ZS6FU6.cjs');
|
|
5
5
|
var chunkXPHXAZCE_cjs = require('./chunk-XPHXAZCE.cjs');
|
|
6
|
-
var
|
|
7
|
-
var
|
|
6
|
+
var chunkGU65FGY6_cjs = require('./chunk-GU65FGY6.cjs');
|
|
7
|
+
var chunkMHAXS4GO_cjs = require('./chunk-MHAXS4GO.cjs');
|
|
8
8
|
var chunkQAO6QMNQ_cjs = require('./chunk-QAO6QMNQ.cjs');
|
|
9
9
|
var chunkJ4PIYOWT_cjs = require('./chunk-J4PIYOWT.cjs');
|
|
10
10
|
var chunkRU6JG3FS_cjs = require('./chunk-RU6JG3FS.cjs');
|
|
@@ -64,9 +64,9 @@ function TextArea({
|
|
|
64
64
|
const counterID = maxLength != null ? `${inputId}-counter` : void 0;
|
|
65
65
|
const describedBy = chunkXPHXAZCE_cjs.getDescribedBy(descriptionID, statusMessageID, counterID);
|
|
66
66
|
const isOverLimit = maxLength != null && value.length > maxLength;
|
|
67
|
-
const necessity =
|
|
67
|
+
const necessity = chunkR3ZS6FU6_cjs.getNecessity(isOptional, isRequired);
|
|
68
68
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
69
|
-
|
|
69
|
+
chunkR3ZS6FU6_cjs.Field,
|
|
70
70
|
{
|
|
71
71
|
className,
|
|
72
72
|
description,
|
|
@@ -120,13 +120,13 @@ function TextArea({
|
|
|
120
120
|
value
|
|
121
121
|
}
|
|
122
122
|
),
|
|
123
|
-
isLoading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
123
|
+
isLoading ? /* @__PURE__ */ jsxRuntime.jsx(chunkGU65FGY6_cjs.Spinner, { size: "sm" }) : null,
|
|
124
124
|
status != null ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkVXBVSYPA_cjs.inputStyles.iconSlot, children: chunkXPHXAZCE_cjs.getStatusIcon(status.type) }) : null
|
|
125
125
|
]
|
|
126
126
|
}
|
|
127
127
|
),
|
|
128
128
|
maxLength != null ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
129
|
-
|
|
129
|
+
chunkMHAXS4GO_cjs.Text,
|
|
130
130
|
{
|
|
131
131
|
as: "span",
|
|
132
132
|
className: chunkSPDVNY2Z_cjs.cx(
|
|
@@ -150,5 +150,5 @@ function TextArea({
|
|
|
150
150
|
TextArea.displayName = "TextArea";
|
|
151
151
|
|
|
152
152
|
exports.TextArea = TextArea;
|
|
153
|
-
//# sourceMappingURL=chunk-
|
|
154
|
-
//# sourceMappingURL=chunk-
|
|
153
|
+
//# sourceMappingURL=chunk-NFEL5GNX.cjs.map
|
|
154
|
+
//# sourceMappingURL=chunk-NFEL5GNX.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/TextArea/TextArea.tsx"],"names":["css","useId","isReactNode","getStatusMessageID","getDescribedBy","getNecessity","jsxs","Field","cx","inputRecipe","jsx","inputStyles","Icon","Spinner","getStatusIcon","Text"],"mappings":"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","file":"chunk-Z7OUMVR5.cjs","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":["css","useId","isReactNode","getStatusMessageID","getDescribedBy","getNecessity","jsxs","Field","cx","inputRecipe","jsx","inputStyles","Icon","Spinner","getStatusIcon","Text"],"mappings":";;;;;;;;;;;;;;AA2IA,IAAM,MAAA,GAAS;AAAA,EACb,SAASA,qBAAA,CAAI;AAAA,IACX,UAAA,EAAY,YAAA;AAAA,IACZ,EAAA,EAAI;AAAA,GACL,CAAA;AAAA,EACD,UAAUA,qBAAA,CAAI;AAAA,IACZ,MAAA,EAAQ,UAAA;AAAA,IACR,IAAA,EAAM;AAAA,GACP,CAAA;AAAA,EACD,SAASA,qBAAA,CAAI;AAAA,IACX,SAAA,EAAW,UAAA;AAAA,IACX,EAAA,EAAI;AAAA,GACL,CAAA;AAAA,EACD,kBAAkBA,qBAAA,CAAI;AAAA,IACpB,KAAA,EAAO;AAAA,GACR;AACH,CAAA;AAKO,SAAS,QAAA,CAAS;AAAA,EACvB,KAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA,GAAO,CAAA;AAAA,EACP,IAAA,GAAO,IAAA;AAAA,EACP,WAAA;AAAA,EACA,aAAA,GAAgB,KAAA;AAAA,EAChB,UAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA,GAAa,KAAA;AAAA,EACb,SAAA,GAAY,KAAA;AAAA,EACZ,aAAA,GAAgB,IAAA;AAAA,EAChB,YAAA,GAAe,KAAA;AAAA,EACf,QAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,aAAA,EAAe,UAAA;AAAA,EACf,KAAA;AAAA,EACA;AACF,CAAA,EAAqC;AACnC,EAAA,MAAM,UAAUC,WAAA,EAAM;AACtB,EAAA,MAAM,gBAAgBC,6BAAA,CAAY,WAAW,CAAA,GACzC,CAAA,EAAG,OAAO,CAAA,YAAA,CAAA,GACV,MAAA;AACJ,EAAA,MAAM,eAAA,GAAkBC,oCAAA,CAAmB,OAAA,EAAS,MAAM,CAAA;AAC1D,EAAA,MAAM,SAAA,GAAY,SAAA,IAAa,IAAA,GAAO,CAAA,EAAG,OAAO,CAAA,QAAA,CAAA,GAAa,MAAA;AAC7D,EAAA,MAAM,WAAA,GAAcC,gCAAA,CAAe,aAAA,EAAe,eAAA,EAAiB,SAAS,CAAA;AAC5E,EAAA,MAAM,WAAA,GAAc,SAAA,IAAa,IAAA,IAAQ,KAAA,CAAM,MAAA,GAAS,SAAA;AAExD,EAAA,MAAM,SAAA,GAAYC,8BAAA,CAAa,UAAA,EAAY,UAAU,CAAA;AAErD,EAAA,uBACEC,eAAA;AAAA,IAACC,uBAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA,aAAA;AAAA,MACC,GAAG,SAAA;AAAA,MACJ,KAAA;AAAA,MACA,SAAA;AAAA,MACA,YAAA;AAAA,MACA,MAAA,EACE,UAAU,IAAA,GAAO,MAAA,GAAY,EAAC,GAAG,MAAA,EAAQ,WAAW,eAAA,EAAe;AAAA,MAErE,KAAA;AAAA,MACA,QAAA,EAAA;AAAA,wBAAAD,eAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAWE,oBAAA;AAAA,cACTC,6BAAA,CAAY;AAAA,gBACV,IAAA;AAAA,gBACA,QAAQ,MAAA,EAAQ,IAAA;AAAA,gBAChB;AAAA,eACD,CAAA;AAAA,cACD,MAAA,CAAO;AAAA,aACT;AAAA,YACC,QAAA,EAAA;AAAA,cAAA,SAAA,IAAa,IAAA,mBACZC,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAWC,8BAAY,QAAA,EAC3B,QAAA,kBAAAD,cAAA,CAACE,sBAAA,EAAA,EAAK,KAAA,EAAM,aAAY,IAAA,EAAM,SAAA,EAAW,IAAA,EAAK,IAAA,EAAK,GACrD,CAAA,GACE,IAAA;AAAA,8BACJF,cAAA;AAAA,gBAAC,UAAA;AAAA,gBAAA;AAAA,kBACC,aAAW,SAAA,IAAa,MAAA;AAAA,kBACxB,kBAAA,EAAkB,WAAA;AAAA,kBAClB,cAAA,EAAc,MAAA,EAAQ,IAAA,KAAS,OAAA,IAAW,WAAA,IAAe,MAAA;AAAA,kBACzD,iBAAe,UAAA,IAAc,MAAA;AAAA,kBAE7B,SAAA,EAAW,YAAA;AAAA,kBACX,SAAA,EAAWF,oBAAA,CAAGG,6BAAA,CAAY,OAAA,EAAS,OAAO,QAAQ,CAAA;AAAA,kBAClD,kBAAgB,YAAA,IAAgB,MAAA;AAAA,kBAChC,aAAA,EAAa,UAAA;AAAA,kBACb,QAAA,EAAU,UAAA;AAAA,kBACV,EAAA,EAAI,OAAA;AAAA,kBACJ,SAAA;AAAA,kBACA,IAAA,EAAM,QAAA;AAAA,kBACN,MAAA;AAAA,kBACA,UAAU,CAAA,KAAA,KAAS,QAAA,CAAS,KAAA,CAAM,MAAA,CAAO,OAAO,KAAK,CAAA;AAAA,kBACrD,OAAA;AAAA,kBACA,OAAA;AAAA,kBACA,WAAA;AAAA,kBACA,GAAA;AAAA,kBACA,IAAA;AAAA,kBACA,UAAA,EAAY,aAAA;AAAA,kBACZ;AAAA;AAAA,eACF;AAAA,cACC,SAAA,mBAAYD,cAAA,CAACG,yBAAA,EAAA,EAAQ,IAAA,EAAK,MAAK,CAAA,GAAK,IAAA;AAAA,cACpC,MAAA,IAAU,IAAA,mBACTH,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAWC,6BAAA,CAAY,QAAA,EAC1B,QAAA,EAAAG,+BAAA,CAAc,MAAA,CAAO,IAAI,CAAA,EAC5B,CAAA,GACE;AAAA;AAAA;AAAA,SACN;AAAA,QACC,aAAa,IAAA,mBACZR,eAAA;AAAA,UAACS,sBAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAG,MAAA;AAAA,YACH,SAAA,EAAWP,oBAAA;AAAA,cACT,MAAA,CAAO,OAAA;AAAA,cACP,WAAA,GAAc,OAAO,gBAAA,GAAmB;AAAA,aAC1C;AAAA,YACA,KAAA,EAAM,WAAA;AAAA,YACN,EAAA,EAAI,SAAA;AAAA,YACJ,IAAA,EAAK,YAAA;AAAA,YACJ,QAAA,EAAA;AAAA,cAAA,KAAA,CAAM,MAAA;AAAA,cAAO,GAAA;AAAA,cAAE;AAAA;AAAA;AAAA,SAClB,GACE;AAAA;AAAA;AAAA,GACN;AAEJ;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA","file":"chunk-NFEL5GNX.cjs","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,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkPYJX2SBC_cjs = require('./chunk-PYJX2SBC.cjs');
|
|
4
4
|
var chunkVXBVSYPA_cjs = require('./chunk-VXBVSYPA.cjs');
|
|
5
|
-
var
|
|
5
|
+
var chunkR3ZS6FU6_cjs = require('./chunk-R3ZS6FU6.cjs');
|
|
6
6
|
var chunkXPHXAZCE_cjs = require('./chunk-XPHXAZCE.cjs');
|
|
7
|
-
var
|
|
8
|
-
var
|
|
7
|
+
var chunkVXOIOPGZ_cjs = require('./chunk-VXOIOPGZ.cjs');
|
|
8
|
+
var chunkGU65FGY6_cjs = require('./chunk-GU65FGY6.cjs');
|
|
9
9
|
var chunkQAO6QMNQ_cjs = require('./chunk-QAO6QMNQ.cjs');
|
|
10
10
|
var chunkJ4PIYOWT_cjs = require('./chunk-J4PIYOWT.cjs');
|
|
11
11
|
var chunkSPDVNY2Z_cjs = require('./chunk-SPDVNY2Z.cjs');
|
|
@@ -48,7 +48,7 @@ function TextInput({
|
|
|
48
48
|
const descriptionID = chunkQAO6QMNQ_cjs.isReactNode(description) ? `${inputId}-description` : void 0;
|
|
49
49
|
const statusMessageID = chunkXPHXAZCE_cjs.getStatusMessageID(inputId, status);
|
|
50
50
|
const describedBy = chunkXPHXAZCE_cjs.getDescribedBy(descriptionID, statusMessageID);
|
|
51
|
-
const inputGroup =
|
|
51
|
+
const inputGroup = chunkPYJX2SBC_cjs.useInputGroup();
|
|
52
52
|
const effectiveDisabled = isDisabled || inputGroup?.isDisabled === true;
|
|
53
53
|
const size = inputGroup?.size ?? sizeProp;
|
|
54
54
|
const effectiveStatusType = status?.type ?? inputGroup?.statusType;
|
|
@@ -99,7 +99,7 @@ function TextInput({
|
|
|
99
99
|
}
|
|
100
100
|
),
|
|
101
101
|
hasClear && value !== "" && !effectiveDisabled ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
102
|
-
|
|
102
|
+
chunkVXOIOPGZ_cjs.Button,
|
|
103
103
|
{
|
|
104
104
|
icon: lucideReact.X,
|
|
105
105
|
isIconOnly: true,
|
|
@@ -110,7 +110,7 @@ function TextInput({
|
|
|
110
110
|
}
|
|
111
111
|
) : null,
|
|
112
112
|
endContent,
|
|
113
|
-
isLoading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
113
|
+
isLoading ? /* @__PURE__ */ jsxRuntime.jsx(chunkGU65FGY6_cjs.Spinner, { size: "sm" }) : null,
|
|
114
114
|
status != null ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkVXBVSYPA_cjs.inputStyles.iconSlot, children: chunkXPHXAZCE_cjs.getStatusIcon(status.type) }) : null
|
|
115
115
|
]
|
|
116
116
|
}
|
|
@@ -119,7 +119,7 @@ function TextInput({
|
|
|
119
119
|
return inputWrapper;
|
|
120
120
|
}
|
|
121
121
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
122
|
-
|
|
122
|
+
chunkR3ZS6FU6_cjs.Field,
|
|
123
123
|
{
|
|
124
124
|
className,
|
|
125
125
|
description,
|
|
@@ -127,7 +127,7 @@ function TextInput({
|
|
|
127
127
|
inputId,
|
|
128
128
|
isDisabled,
|
|
129
129
|
isLabelHidden,
|
|
130
|
-
...
|
|
130
|
+
...chunkR3ZS6FU6_cjs.getNecessity(isOptional, isRequired),
|
|
131
131
|
label,
|
|
132
132
|
labelIcon,
|
|
133
133
|
labelTooltip,
|
|
@@ -140,5 +140,5 @@ function TextInput({
|
|
|
140
140
|
TextInput.displayName = "TextInput";
|
|
141
141
|
|
|
142
142
|
exports.TextInput = TextInput;
|
|
143
|
-
//# sourceMappingURL=chunk-
|
|
144
|
-
//# sourceMappingURL=chunk-
|
|
143
|
+
//# sourceMappingURL=chunk-NG2H3PYA.cjs.map
|
|
144
|
+
//# sourceMappingURL=chunk-NG2H3PYA.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/TextInput/TextInput.tsx"],"names":["useId","isReactNode","getStatusMessageID","getDescribedBy","useInputGroup","jsxs","cx","inputRecipe","jsx","inputStyles","Icon","Button","X","Spinner","getStatusIcon","Field","getNecessity"],"mappings":"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","file":"chunk-X4I5YARV.cjs","sourcesContent":["import {X} from 'lucide-react';\nimport {\n useId,\n type ChangeEvent,\n type CSSProperties,\n type FocusEvent,\n type KeyboardEvent,\n type ReactNode,\n type Ref,\n} from 'react';\nimport {Button} from 'components/Button';\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 {useInputGroup} from 'components/InputGroup';\nimport {Spinner} from 'components/Spinner';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\n\nexport type TextInputType = 'email' | 'password' | 'text';\n\nexport type TextInputProps = {\n /**\n * HTML autocomplete hint for the browser.\n */\n autoComplete?: string;\n /**\n * Additional CSS class names applied to the input wrapper.\n */\n className?: string;\n /**\n * Test ID applied to the input element.\n */\n 'data-testid'?: string;\n /**\n * Supporting text rendered below the label.\n */\n description?: ReactNode;\n /**\n * Content rendered after the input, before the status icon.\n */\n endContent?: ReactNode;\n /**\n * Whether to focus the input on mount.\n * @default false\n */\n hasAutoFocus?: boolean;\n /**\n * Whether to show a clear button when the input has a value.\n * @default false\n */\n hasClear?: boolean;\n /**\n * HTML name attribute.\n */\n htmlName?: string;\n /**\n * Whether the input 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 input 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 shown beside the label.\n */\n labelTooltip?: ReactNode;\n /**\n * Called when the input loses focus.\n */\n onBlur?: (event: FocusEvent<HTMLInputElement>) => void;\n /**\n * Called with the next string value.\n */\n onChange: (\n value: string,\n event: ChangeEvent<HTMLInputElement> | null,\n ) => void;\n /**\n * Called when Enter is pressed.\n */\n onEnter?: () => void;\n /**\n * Called when the input gains focus.\n */\n onFocus?: (event: FocusEvent<HTMLInputElement>) => void;\n /**\n * Keyboard event handler for the input.\n */\n onKeyDown?: (event: KeyboardEvent<HTMLInputElement>) => void;\n /**\n * Placeholder text.\n */\n placeholder?: string;\n /**\n * Ref forwarded to the input element.\n */\n ref?: Ref<HTMLInputElement>;\n /**\n * Visual size.\n */\n size?: InputSize;\n /**\n * Icon shown before the input.\n */\n startIcon?: IconComponent;\n /**\n * Status displayed on the field.\n */\n status?: InputStatus;\n /**\n * Inline styles applied to the wrapper.\n */\n style?: CSSProperties;\n /**\n * HTML input type.\n */\n type?: TextInputType;\n /**\n * Controlled input value.\n */\n value: string;\n} & FieldNecessity;\n\n/**\n * Single-line text input field.\n */\nexport function TextInput({\n autoComplete,\n label,\n value,\n onChange,\n onBlur,\n onFocus,\n type = 'text',\n size: sizeProp = 'md',\n placeholder,\n description,\n endContent,\n isLabelHidden = false,\n isOptional,\n isRequired,\n isDisabled = false,\n isLoading = false,\n hasClear = false,\n hasAutoFocus = false,\n htmlName,\n status,\n labelIcon,\n labelTooltip,\n startIcon,\n onEnter,\n onKeyDown,\n className,\n 'data-testid': dataTestId,\n style,\n ref,\n}: TextInputProps): 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 describedBy = getDescribedBy(descriptionID, statusMessageID);\n const inputGroup = useInputGroup();\n const effectiveDisabled = isDisabled || inputGroup?.isDisabled === true;\n const size = inputGroup?.size ?? sizeProp;\n const effectiveStatusType = status?.type ?? inputGroup?.statusType;\n\n const inputWrapper = (\n <div\n className={cx(\n inputRecipe({\n size,\n status: effectiveStatusType,\n isDisabled: effectiveDisabled,\n }),\n inputGroup != null ? className : undefined,\n )}\n style={inputGroup != null ? style : undefined}>\n {startIcon != null ? (\n <span className={inputStyles.iconSlot}>\n <Icon color=\"secondary\" icon={startIcon} size=\"sm\" />\n </span>\n ) : null}\n <input\n aria-busy={isLoading || undefined}\n aria-describedby={describedBy}\n aria-invalid={status?.type === 'error' || undefined}\n aria-label={inputGroup != null ? label : undefined}\n aria-required={isRequired ?? undefined}\n autoComplete={autoComplete}\n // eslint-disable-next-line jsx-a11y-x/no-autofocus\n autoFocus={hasAutoFocus}\n className={inputStyles.control}\n data-autofocus={hasAutoFocus || undefined}\n data-testid={dataTestId}\n disabled={effectiveDisabled}\n id={inputId}\n name={htmlName}\n onBlur={onBlur}\n onChange={event => onChange(event.target.value, event)}\n onFocus={onFocus}\n onKeyDown={event => {\n if (event.key === 'Enter' && !event.nativeEvent.isComposing) {\n onEnter?.();\n }\n onKeyDown?.(event);\n }}\n placeholder={placeholder}\n ref={ref}\n required={isRequired ?? undefined}\n type={type}\n value={value}\n />\n {hasClear && value !== '' && !effectiveDisabled ? (\n <Button\n icon={X}\n isIconOnly\n label={`Clear ${label}`}\n onClick={() => onChange('', null)}\n size=\"sm\"\n variant=\"ghost\"\n />\n ) : null}\n {endContent}\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 );\n\n if (inputGroup != null) {\n return inputWrapper;\n }\n\n return (\n <Field\n className={className}\n description={description}\n descriptionID={descriptionID}\n inputId={inputId}\n isDisabled={isDisabled}\n isLabelHidden={isLabelHidden}\n {...getNecessity(isOptional, isRequired)}\n label={label}\n labelIcon={labelIcon}\n labelTooltip={labelTooltip}\n status={\n status == null ? undefined : {...status, messageID: statusMessageID}\n }\n style={style}>\n {inputWrapper}\n </Field>\n );\n}\n\nTextInput.displayName = 'TextInput';\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/TextInput/TextInput.tsx"],"names":["useId","isReactNode","getStatusMessageID","getDescribedBy","useInputGroup","jsxs","cx","inputRecipe","jsx","inputStyles","Icon","Button","X","Spinner","getStatusIcon","Field","getNecessity"],"mappings":"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","file":"chunk-NG2H3PYA.cjs","sourcesContent":["import {X} from 'lucide-react';\nimport {\n useId,\n type ChangeEvent,\n type CSSProperties,\n type FocusEvent,\n type KeyboardEvent,\n type ReactNode,\n type Ref,\n} from 'react';\nimport {Button} from 'components/Button';\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 {useInputGroup} from 'components/InputGroup';\nimport {Spinner} from 'components/Spinner';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\n\nexport type TextInputType = 'email' | 'password' | 'text';\n\nexport type TextInputProps = {\n /**\n * HTML autocomplete hint for the browser.\n */\n autoComplete?: string;\n /**\n * Additional CSS class names applied to the input wrapper.\n */\n className?: string;\n /**\n * Test ID applied to the input element.\n */\n 'data-testid'?: string;\n /**\n * Supporting text rendered below the label.\n */\n description?: ReactNode;\n /**\n * Content rendered after the input, before the status icon.\n */\n endContent?: ReactNode;\n /**\n * Whether to focus the input on mount.\n * @default false\n */\n hasAutoFocus?: boolean;\n /**\n * Whether to show a clear button when the input has a value.\n * @default false\n */\n hasClear?: boolean;\n /**\n * HTML name attribute.\n */\n htmlName?: string;\n /**\n * Whether the input 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 input 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 shown beside the label.\n */\n labelTooltip?: ReactNode;\n /**\n * Called when the input loses focus.\n */\n onBlur?: (event: FocusEvent<HTMLInputElement>) => void;\n /**\n * Called with the next string value.\n */\n onChange: (\n value: string,\n event: ChangeEvent<HTMLInputElement> | null,\n ) => void;\n /**\n * Called when Enter is pressed.\n */\n onEnter?: () => void;\n /**\n * Called when the input gains focus.\n */\n onFocus?: (event: FocusEvent<HTMLInputElement>) => void;\n /**\n * Keyboard event handler for the input.\n */\n onKeyDown?: (event: KeyboardEvent<HTMLInputElement>) => void;\n /**\n * Placeholder text.\n */\n placeholder?: string;\n /**\n * Ref forwarded to the input element.\n */\n ref?: Ref<HTMLInputElement>;\n /**\n * Visual size.\n */\n size?: InputSize;\n /**\n * Icon shown before the input.\n */\n startIcon?: IconComponent;\n /**\n * Status displayed on the field.\n */\n status?: InputStatus;\n /**\n * Inline styles applied to the wrapper.\n */\n style?: CSSProperties;\n /**\n * HTML input type.\n */\n type?: TextInputType;\n /**\n * Controlled input value.\n */\n value: string;\n} & FieldNecessity;\n\n/**\n * Single-line text input field.\n */\nexport function TextInput({\n autoComplete,\n label,\n value,\n onChange,\n onBlur,\n onFocus,\n type = 'text',\n size: sizeProp = 'md',\n placeholder,\n description,\n endContent,\n isLabelHidden = false,\n isOptional,\n isRequired,\n isDisabled = false,\n isLoading = false,\n hasClear = false,\n hasAutoFocus = false,\n htmlName,\n status,\n labelIcon,\n labelTooltip,\n startIcon,\n onEnter,\n onKeyDown,\n className,\n 'data-testid': dataTestId,\n style,\n ref,\n}: TextInputProps): 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 describedBy = getDescribedBy(descriptionID, statusMessageID);\n const inputGroup = useInputGroup();\n const effectiveDisabled = isDisabled || inputGroup?.isDisabled === true;\n const size = inputGroup?.size ?? sizeProp;\n const effectiveStatusType = status?.type ?? inputGroup?.statusType;\n\n const inputWrapper = (\n <div\n className={cx(\n inputRecipe({\n size,\n status: effectiveStatusType,\n isDisabled: effectiveDisabled,\n }),\n inputGroup != null ? className : undefined,\n )}\n style={inputGroup != null ? style : undefined}>\n {startIcon != null ? (\n <span className={inputStyles.iconSlot}>\n <Icon color=\"secondary\" icon={startIcon} size=\"sm\" />\n </span>\n ) : null}\n <input\n aria-busy={isLoading || undefined}\n aria-describedby={describedBy}\n aria-invalid={status?.type === 'error' || undefined}\n aria-label={inputGroup != null ? label : undefined}\n aria-required={isRequired ?? undefined}\n autoComplete={autoComplete}\n // eslint-disable-next-line jsx-a11y-x/no-autofocus\n autoFocus={hasAutoFocus}\n className={inputStyles.control}\n data-autofocus={hasAutoFocus || undefined}\n data-testid={dataTestId}\n disabled={effectiveDisabled}\n id={inputId}\n name={htmlName}\n onBlur={onBlur}\n onChange={event => onChange(event.target.value, event)}\n onFocus={onFocus}\n onKeyDown={event => {\n if (event.key === 'Enter' && !event.nativeEvent.isComposing) {\n onEnter?.();\n }\n onKeyDown?.(event);\n }}\n placeholder={placeholder}\n ref={ref}\n required={isRequired ?? undefined}\n type={type}\n value={value}\n />\n {hasClear && value !== '' && !effectiveDisabled ? (\n <Button\n icon={X}\n isIconOnly\n label={`Clear ${label}`}\n onClick={() => onChange('', null)}\n size=\"sm\"\n variant=\"ghost\"\n />\n ) : null}\n {endContent}\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 );\n\n if (inputGroup != null) {\n return inputWrapper;\n }\n\n return (\n <Field\n className={className}\n description={description}\n descriptionID={descriptionID}\n inputId={inputId}\n isDisabled={isDisabled}\n isLabelHidden={isLabelHidden}\n {...getNecessity(isOptional, isRequired)}\n label={label}\n labelIcon={labelIcon}\n labelTooltip={labelTooltip}\n status={\n status == null ? undefined : {...status, messageID: statusMessageID}\n }\n style={style}>\n {inputWrapper}\n </Field>\n );\n}\n\nTextInput.displayName = 'TextInput';\n"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var
|
|
3
|
+
var chunkISWZQUVA_cjs = require('./chunk-ISWZQUVA.cjs');
|
|
4
|
+
var chunkENVDR66N_cjs = require('./chunk-ENVDR66N.cjs');
|
|
5
|
+
var chunkCNDUYO7I_cjs = require('./chunk-CNDUYO7I.cjs');
|
|
6
|
+
var chunkH7VK36SZ_cjs = require('./chunk-H7VK36SZ.cjs');
|
|
7
7
|
var chunk6SHL7FYO_cjs = require('./chunk-6SHL7FYO.cjs');
|
|
8
8
|
var chunkQAO6QMNQ_cjs = require('./chunk-QAO6QMNQ.cjs');
|
|
9
9
|
var chunkJRBQKFVO_cjs = require('./chunk-JRBQKFVO.cjs');
|
|
@@ -270,9 +270,9 @@ function AppShell({
|
|
|
270
270
|
}),
|
|
271
271
|
[isBelowBreakpoint, isMobileNavOpen, mobileNavEnabled]
|
|
272
272
|
);
|
|
273
|
-
const mobileContentValue = hasSideNavContent ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
274
|
-
const drawerMobileContentValue = hasSideNavContent ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
275
|
-
const topNavContent = hasTopNav && isBelowBreakpoint && !isMobileNavDisabled ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
273
|
+
const mobileContentValue = hasSideNavContent ? /* @__PURE__ */ jsxRuntime.jsx(chunkENVDR66N_cjs.SideNavRenderContext, { value: "drawer-content", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.slotContents, ref: sideNavPresenceRef, children: sideNav }) }) : null;
|
|
274
|
+
const drawerMobileContentValue = hasSideNavContent ? /* @__PURE__ */ jsxRuntime.jsx(chunkENVDR66N_cjs.SideNavRenderContext, { value: "drawer-content", children: sideNav }) : null;
|
|
275
|
+
const topNavContent = hasTopNav && isBelowBreakpoint && !isMobileNavDisabled ? /* @__PURE__ */ jsxRuntime.jsx(chunkISWZQUVA_cjs.TopNavMobileContentContext, { value: mobileContentValue, children: /* @__PURE__ */ jsxRuntime.jsx(chunkISWZQUVA_cjs.TopNavRenderContext, { value: "mobile-bar", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.slotContents, ref: topNavPresenceRef, children: topNav }) }) }) : topNav;
|
|
276
276
|
const headerContent = hasTopNav || chunkQAO6QMNQ_cjs.isReactNode(banner) ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkSPDVNY2Z_cjs.cx(isAuto && styles.headerSticky), ref: headerRef, children: /* @__PURE__ */ jsxRuntime.jsxs("header", { style: { flexShrink: 0 }, children: [
|
|
277
277
|
chunkQAO6QMNQ_cjs.isReactNode(banner) ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.banner, children: banner }) : null,
|
|
278
278
|
hasTopNav ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.slotContents, ref: topNavPresenceRef, children: topNavContent }) : null
|
|
@@ -284,16 +284,16 @@ function AppShell({
|
|
|
284
284
|
className: styles.autoMobileTopBar,
|
|
285
285
|
role: "navigation",
|
|
286
286
|
children: [
|
|
287
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
288
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
287
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkENVDR66N_cjs.SideNavRenderContext, { value: "topbar", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.slotContents, ref: sideNavPresenceRef, children: sideNav }) }),
|
|
288
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkCNDUYO7I_cjs.MobileNavToggle, {})
|
|
289
289
|
]
|
|
290
290
|
}
|
|
291
291
|
) }) : void 0;
|
|
292
|
-
const sideNavPanel = showSideNavInline ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
292
|
+
const sideNavPanel = showSideNavInline ? /* @__PURE__ */ jsxRuntime.jsx(chunkH7VK36SZ_cjs.LayoutPanel, { isScrollable: isFill, padding: 0, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.slotContents, ref: sideNavPresenceRef, children: sideNav }) }) : void 0;
|
|
293
293
|
const sideNavContent = sideNavPanel != null && isAuto ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles.sideNavSticky, children: sideNavPanel }) : sideNavPanel;
|
|
294
294
|
const contentClassName = variant === "default" && hasTopNavContent && showSideNavInline ? styles.contentTransparent : variant === "default" ? styles.contentSurface : void 0;
|
|
295
295
|
const mainInner = /* @__PURE__ */ jsxRuntime.jsx(
|
|
296
|
-
|
|
296
|
+
chunkH7VK36SZ_cjs.LayoutContent,
|
|
297
297
|
{
|
|
298
298
|
as: "main",
|
|
299
299
|
className: contentClassName,
|
|
@@ -309,7 +309,7 @@ function AppShell({
|
|
|
309
309
|
mainInner
|
|
310
310
|
] }) : mainInner;
|
|
311
311
|
const rootStyle = { ...style };
|
|
312
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
312
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkCNDUYO7I_cjs.AppShellMobileContext, { value: mobileContextValue, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
313
313
|
"div",
|
|
314
314
|
{
|
|
315
315
|
className: chunkSPDVNY2Z_cjs.cx(appShellRecipe({ height, variant }), className),
|
|
@@ -327,7 +327,7 @@ function AppShell({
|
|
|
327
327
|
}
|
|
328
328
|
),
|
|
329
329
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
330
|
-
|
|
330
|
+
chunkH7VK36SZ_cjs.Layout,
|
|
331
331
|
{
|
|
332
332
|
content: mainContent,
|
|
333
333
|
hasDividers: navHasDividers,
|
|
@@ -341,8 +341,8 @@ function AppShell({
|
|
|
341
341
|
}
|
|
342
342
|
),
|
|
343
343
|
isBelowBreakpoint && !isMobileNavDisabled ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
344
|
-
hasSideNav && !hasTopNavContent ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
345
|
-
hasTopNav && hasTopNavContent ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
344
|
+
hasSideNav && !hasTopNavContent ? /* @__PURE__ */ jsxRuntime.jsx(chunkENVDR66N_cjs.SideNavRenderContext, { value: "drawer", children: sideNav }) : null,
|
|
345
|
+
hasTopNav && hasTopNavContent ? /* @__PURE__ */ jsxRuntime.jsx(chunkISWZQUVA_cjs.TopNavMobileContentContext, { value: drawerMobileContentValue, children: /* @__PURE__ */ jsxRuntime.jsx(chunkISWZQUVA_cjs.TopNavRenderContext, { value: "drawer", children: topNav }) }) : null
|
|
346
346
|
] }) : null
|
|
347
347
|
]
|
|
348
348
|
}
|
|
@@ -351,5 +351,5 @@ function AppShell({
|
|
|
351
351
|
AppShell.displayName = "AppShell";
|
|
352
352
|
|
|
353
353
|
exports.AppShell = AppShell;
|
|
354
|
-
//# sourceMappingURL=chunk-
|
|
355
|
-
//# sourceMappingURL=chunk-
|
|
354
|
+
//# sourceMappingURL=chunk-NW36BN7N.cjs.map
|
|
355
|
+
//# sourceMappingURL=chunk-NW36BN7N.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/AppShell/AppShell.recipe.ts","../src/components/AppShell/useSlotPresence.tsx","../src/internal/sharedResizeObserver.ts","../src/internal/useMediaQuery.ts","../src/components/AppShell/AppShell.tsx"],"names":["cva","useState","useRef","useCallback","observer","useEffect","useSyncExternalStore","css","useId","isReactNode","useMemo","jsx","SideNavRenderContext","TopNavMobileContentContext","TopNavRenderContext","cx","jsxs","MobileNavToggle","LayoutPanel","LayoutContent","AppShellMobileContext","mergeRefs","Layout","Fragment"],"mappings":"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","file":"chunk-VO4FG3L2.cjs","sourcesContent":["import {cva, type RecipeVariantProps} from 'styled-system/css';\n\nexport const appShellRecipe = cva({\n base: {\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n },\n variants: {\n height: {\n fill: {\n h: '100dvh',\n },\n auto: {\n minH: '100dvh',\n },\n },\n variant: {\n default: {\n bg: 'bg.subtle',\n },\n section: {\n bg: 'bg',\n },\n },\n },\n defaultVariants: {\n height: 'fill',\n variant: 'default',\n },\n});\n\nexport type AppShellVariants = RecipeVariantProps<typeof appShellRecipe>;\n","import {useCallback, useEffect, useRef, useState} from 'react';\n\nfunction hasChildContent(element: HTMLElement): boolean {\n for (const node of element.childNodes) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n return true;\n }\n\n if (node.nodeType === Node.TEXT_NODE && node.textContent?.trim() !== '') {\n return true;\n }\n }\n\n return false;\n}\n\nexport function useSlotPresence(initialValue = false): {\n hasContent: boolean;\n ref: (node: HTMLDivElement | null) => void;\n} {\n const [hasContent, setHasContent] = useState(initialValue);\n const observerRef = useRef<MutationObserver | null>(null);\n\n const ref = useCallback((node: HTMLDivElement | null) => {\n observerRef.current?.disconnect();\n observerRef.current = null;\n\n if (node == null) {\n setHasContent(false);\n return;\n }\n\n setHasContent(hasChildContent(node));\n\n const observer = new MutationObserver(() => {\n setHasContent(hasChildContent(node));\n });\n observer.observe(node, {childList: true});\n observerRef.current = observer;\n }, []);\n\n useEffect(() => {\n return () => observerRef.current?.disconnect();\n }, []);\n\n return {hasContent, ref};\n}\n","type ResizeCallback = (entry: ResizeObserverEntry) => void;\n\nlet observer: ResizeObserver | null = null;\nconst callbacks = new Map<Element, ResizeCallback>();\n\nfunction getObserver(): ResizeObserver {\n observer ??= new ResizeObserver(entries => {\n for (const entry of entries) {\n callbacks.get(entry.target)?.(entry);\n }\n });\n\n return observer;\n}\n\nexport function observeResize(\n element: Element,\n callback: ResizeCallback,\n): void {\n callbacks.set(element, callback);\n getObserver().observe(element);\n}\n\nexport function unobserveResize(element: Element): void {\n callbacks.delete(element);\n\n if (observer == null) {\n return;\n }\n\n observer.unobserve(element);\n\n if (callbacks.size === 0) {\n observer.disconnect();\n observer = null;\n }\n}\n","import {useCallback, useSyncExternalStore} from 'react';\n\nfunction getServerSnapshot(): boolean {\n return false;\n}\n\n/**\n * Subscribe to a browser media query using React's external-store API.\n */\nexport function useMediaQuery(query: string): boolean {\n const subscribe = useCallback(\n (onStoreChange: () => void) => {\n const mediaQueryList = window.matchMedia(query);\n mediaQueryList.addEventListener('change', onStoreChange);\n return () => mediaQueryList.removeEventListener('change', onStoreChange);\n },\n [query],\n );\n\n const getSnapshot = useCallback(() => {\n return window.matchMedia(query).matches;\n }, [query]);\n\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n","import type {CSSProperties, ReactNode, Ref} from 'react';\nimport {useEffect, useId, useMemo, useRef, useState} from 'react';\nimport {appShellRecipe} from 'components/AppShell/AppShell.recipe';\nimport {\n AppShellMobileContext,\n type AppShellMobileContextValue,\n} from 'components/AppShell/AppShellMobileContext';\nimport {useSlotPresence} from 'components/AppShell/useSlotPresence';\nimport {Layout, LayoutContent, LayoutPanel} from 'components/Layout';\nimport {SideNavRenderContext} from 'components/SideNav';\nimport {\n TopNavMobileContentContext,\n TopNavRenderContext,\n} from 'components/TopNav';\nimport {MobileNavToggle} from 'internal/MobileNav';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport {mergeRefs} from 'internal/mergeRefs';\nimport {observeResize, unobserveResize} from 'internal/sharedResizeObserver';\nimport type {SpacingToken} from 'internal/spacingTokens';\nimport {useMediaQuery} from 'internal/useMediaQuery';\nimport {css} from 'styled-system/css';\n\nexport type AppShellBreakpoint = 'sm' | 'md' | 'lg' | 'none';\nexport type AppShellVariant = 'default' | 'section';\nexport type AppShellHeight = 'fill' | 'auto';\n\n/**\n * Application-level layout shell with top navigation, side navigation,\n * banner, skip-to-content support, and responsive mobile navigation.\n */\nexport interface AppShellProps {\n /**\n * System-wide content rendered above the top navigation.\n */\n banner?: ReactNode;\n /**\n * Main content rendered inside the shell's `<main>` landmark.\n */\n children: ReactNode;\n /**\n * Additional CSS class names applied to the root element.\n */\n className?: string;\n /**\n * Padding applied to the main content area. Default is `0`.\n */\n contentPadding?: SpacingToken;\n /**\n * Test ID applied to the root element.\n */\n 'data-testid'?: string;\n /**\n * Height behavior. `fill` keeps scrolling inside the shell; `auto` lets the\n * page grow with content.\n */\n height?: AppShellHeight;\n /**\n * Disable generated mobile navigation.\n */\n isMobileNavDisabled?: boolean;\n /**\n * Breakpoint below which mobile navigation is used.\n * @default 'md'\n */\n mobileBreakpoint?: AppShellBreakpoint;\n /**\n * Ref forwarded to the root element.\n */\n ref?: Ref<HTMLDivElement>;\n /**\n * Side navigation slot, typically a SideNav.\n */\n sideNav?: ReactNode;\n /**\n * Inline styles applied to the root element.\n */\n style?: CSSProperties;\n /**\n * Top navigation slot, typically a TopNav.\n */\n topNav?: ReactNode;\n /**\n * Background and divider style for the shell.\n */\n variant?: AppShellVariant;\n}\n\nconst BREAKPOINT_VALUES: Record<AppShellBreakpoint, number> = {\n sm: 640,\n md: 768,\n lg: 1024,\n none: 0,\n};\n\nconst styles = {\n skipLink: css({\n position: 'absolute',\n top: 0,\n insetInlineStart: 0,\n w: '1px',\n h: '1px',\n p: 0,\n m: '-1px',\n overflow: 'hidden',\n clipPath: 'inset(50%)',\n whiteSpace: 'nowrap',\n borderWidth: 0,\n zIndex: 9999,\n bg: 'bg',\n color: 'primary',\n textDecoration: 'none',\n fontWeight: 'semibold',\n _focus: {\n position: 'fixed',\n top: '2',\n insetInlineStart: '2',\n w: 'auto',\n h: 'auto',\n p: '2',\n m: 0,\n overflow: 'visible',\n clipPath: 'none',\n whiteSpace: 'normal',\n outlineWidth: 'focus',\n outlineStyle: 'solid',\n outlineColor: 'primary',\n outlineOffset: 'focusOffset',\n },\n }),\n headerSticky: css({\n position: 'sticky',\n top: 0,\n zIndex: 1,\n }),\n banner: css({\n flexShrink: 0,\n }),\n autoMobileTopBar: css({\n display: 'flex',\n alignItems: 'center',\n h: '12',\n px: '2',\n }),\n sideNavSticky: css({\n flexShrink: 0,\n overflow: 'clip',\n position: 'sticky',\n top: 'var(--appshell-header-height, 0px)',\n h: 'calc(100dvh - var(--appshell-header-height, 0px))',\n display: 'flex',\n flexDirection: 'column',\n }),\n elevatedWrapper: css({\n position: 'relative',\n display: 'flex',\n flex: 1,\n minH: 0,\n h: '100%',\n }),\n elevatedBackdrop: css({\n position: 'absolute',\n inset: 0,\n bg: 'bg',\n borderStartStartRadius: '2xl',\n pointerEvents: 'none',\n }),\n contentSurface: css({\n bg: 'bg',\n }),\n contentTransparent: css({\n bg: 'transparent',\n isolation: 'isolate',\n }),\n slotContents: css({\n display: 'contents',\n }),\n};\n\ntype AppShellRootStyle = CSSProperties & {\n '--appshell-header-height'?: string;\n};\n\n/**\n * Application-level layout shell with top navigation, side navigation,\n * banner, skip-to-content support, and responsive mobile navigation.\n */\nexport function AppShell({\n banner,\n children,\n className,\n contentPadding,\n 'data-testid': dataTestId,\n height = 'fill',\n isMobileNavDisabled = false,\n mobileBreakpoint = 'md',\n ref,\n sideNav,\n style,\n topNav,\n variant = 'default',\n}: AppShellProps): React.JSX.Element {\n const mainContentId = useId();\n const breakpointQuery =\n mobileBreakpoint === 'none'\n ? '(max-width: 0px)'\n : `(max-width: ${BREAKPOINT_VALUES[mobileBreakpoint]}px)`;\n const isBelowBreakpoint = useMediaQuery(breakpointQuery);\n const [isMobileNavOpen, setIsMobileNavOpen] = useState(false);\n const {ref: topNavPresenceRef, hasContent: hasTopNavContent} =\n useSlotPresence(isReactNode(topNav));\n const {ref: sideNavPresenceRef, hasContent: hasSideNavContent} =\n useSlotPresence(isReactNode(sideNav));\n const hasTopNav = isReactNode(topNav);\n const hasSideNav = isReactNode(sideNav);\n const hasNavContent = hasTopNavContent || hasSideNavContent;\n const mobileNavEnabled = !isMobileNavDisabled && hasNavContent;\n const showSideNavInline = hasSideNav && !isBelowBreakpoint;\n const isAuto = height === 'auto';\n const isFill = height === 'fill';\n const navHasDividers = variant === 'section';\n const headerRef = useRef<HTMLDivElement>(null);\n const shellRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!isAuto || headerRef.current == null || shellRef.current == null) {\n return;\n }\n\n const headerElement = headerRef.current;\n const shellElement = shellRef.current;\n const updateHeight = () => {\n shellElement.style.setProperty(\n '--appshell-header-height',\n `${headerElement.getBoundingClientRect().height}px`,\n );\n };\n\n observeResize(headerElement, updateHeight);\n return () => unobserveResize(headerElement);\n }, [isAuto]);\n\n const mobileContextValue = useMemo<AppShellMobileContextValue>(\n () => ({\n closeMobileNav: () => setIsMobileNavOpen(false),\n hasAutoToggle: true,\n isMobile: isBelowBreakpoint,\n isMobileNavEnabled: mobileNavEnabled,\n isMobileNavOpen,\n openMobileNav: () => mobileNavEnabled && setIsMobileNavOpen(true),\n toggleMobileNav: () => {\n if (mobileNavEnabled) {\n setIsMobileNavOpen(prev => !prev);\n }\n },\n }),\n [isBelowBreakpoint, isMobileNavOpen, mobileNavEnabled],\n );\n\n /* eslint-disable @eslint-react/no-unstable-context-value -- sideNav ReactNode prop prevents stable memoization */\n const mobileContentValue = hasSideNavContent ? (\n <SideNavRenderContext value=\"drawer-content\">\n <div className={styles.slotContents} ref={sideNavPresenceRef}>\n {sideNav}\n </div>\n </SideNavRenderContext>\n ) : null;\n const drawerMobileContentValue = hasSideNavContent ? (\n <SideNavRenderContext value=\"drawer-content\">\n {sideNav}\n </SideNavRenderContext>\n ) : null;\n /* eslint-enable @eslint-react/no-unstable-context-value */\n const topNavContent =\n hasTopNav && isBelowBreakpoint && !isMobileNavDisabled ? (\n <TopNavMobileContentContext value={mobileContentValue}>\n <TopNavRenderContext value=\"mobile-bar\">\n <div className={styles.slotContents} ref={topNavPresenceRef}>\n {topNav}\n </div>\n </TopNavRenderContext>\n </TopNavMobileContentContext>\n ) : (\n topNav\n );\n const headerContent =\n hasTopNav || isReactNode(banner) ? (\n <div className={cx(isAuto && styles.headerSticky)} ref={headerRef}>\n <header style={{flexShrink: 0}}>\n {isReactNode(banner) ? (\n <div className={styles.banner}>{banner}</div>\n ) : null}\n {hasTopNav ? (\n <div className={styles.slotContents} ref={topNavPresenceRef}>\n {topNavContent}\n </div>\n ) : null}\n </header>\n </div>\n ) : undefined;\n const autoMobileTopBar =\n !isMobileNavDisabled &&\n isBelowBreakpoint &&\n !hasTopNavContent &&\n hasSideNav ? (\n <header style={{flexShrink: 0}}>\n <div\n aria-label=\"Mobile navigation\"\n className={styles.autoMobileTopBar}\n role=\"navigation\">\n <SideNavRenderContext value=\"topbar\">\n <div className={styles.slotContents} ref={sideNavPresenceRef}>\n {sideNav}\n </div>\n </SideNavRenderContext>\n <MobileNavToggle />\n </div>\n </header>\n ) : undefined;\n const sideNavPanel = showSideNavInline ? (\n <LayoutPanel isScrollable={isFill} padding={0}>\n <div className={styles.slotContents} ref={sideNavPresenceRef}>\n {sideNav}\n </div>\n </LayoutPanel>\n ) : undefined;\n const sideNavContent =\n sideNavPanel != null && isAuto ? (\n <div className={styles.sideNavSticky}>{sideNavPanel}</div>\n ) : (\n sideNavPanel\n );\n const contentClassName =\n variant === 'default' && hasTopNavContent && showSideNavInline\n ? styles.contentTransparent\n : variant === 'default'\n ? styles.contentSurface\n : undefined;\n const mainInner = (\n <LayoutContent\n as=\"main\"\n className={contentClassName}\n id={mainContentId}\n isScrollable={isFill}\n padding={contentPadding ?? 0}>\n {children}\n </LayoutContent>\n );\n const shouldElevateWithCorner =\n variant === 'default' && hasTopNavContent && showSideNavInline;\n const mainContent = shouldElevateWithCorner ? (\n <div className={styles.elevatedWrapper}>\n <div className={styles.elevatedBackdrop} />\n {mainInner}\n </div>\n ) : (\n mainInner\n );\n const rootStyle: AppShellRootStyle = {...style};\n\n return (\n <AppShellMobileContext value={mobileContextValue}>\n <div\n className={cx(appShellRecipe({height, variant}), className)}\n data-testid={dataTestId}\n ref={mergeRefs(ref, shellRef)}\n style={rootStyle}>\n <a\n className={styles.skipLink}\n data-testid=\"skip-to-content\"\n href={`#${mainContentId}`}>\n Skip to content\n </a>\n <Layout\n content={mainContent}\n hasDividers={navHasDividers}\n header={\n <>\n {headerContent}\n {autoMobileTopBar}\n </>\n }\n height={height}\n padding={0}\n start={sideNavContent}\n />\n {isBelowBreakpoint && !isMobileNavDisabled ? (\n <>\n {hasSideNav && !hasTopNavContent ? (\n <SideNavRenderContext value=\"drawer\">\n {sideNav}\n </SideNavRenderContext>\n ) : null}\n {hasTopNav && hasTopNavContent ? (\n <TopNavMobileContentContext value={drawerMobileContentValue}>\n <TopNavRenderContext value=\"drawer\">\n {topNav}\n </TopNavRenderContext>\n </TopNavMobileContentContext>\n ) : null}\n </>\n ) : null}\n </div>\n </AppShellMobileContext>\n );\n}\n\nAppShell.displayName = 'AppShell';\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/AppShell/AppShell.recipe.ts","../src/components/AppShell/useSlotPresence.tsx","../src/internal/sharedResizeObserver.ts","../src/internal/useMediaQuery.ts","../src/components/AppShell/AppShell.tsx"],"names":["cva","useState","useRef","useCallback","observer","useEffect","useSyncExternalStore","css","useId","isReactNode","useMemo","jsx","SideNavRenderContext","TopNavMobileContentContext","TopNavRenderContext","cx","jsxs","MobileNavToggle","LayoutPanel","LayoutContent","AppShellMobileContext","mergeRefs","Layout","Fragment"],"mappings":";;;;;;;;;;;;;;;AAEO,IAAM,iBAAiBA,qBAAA,CAAI;AAAA,EAChC,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,QAAA;AAAA,IACf,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,QAAA,EAAU;AAAA,IACR,MAAA,EAAQ;AAAA,MACN,IAAA,EAAM;AAAA,QACJ,CAAA,EAAG;AAAA,OACL;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,OAAA,EAAS;AAAA,MACP,OAAA,EAAS;AAAA,QACP,EAAA,EAAI;AAAA,OACN;AAAA,MACA,OAAA,EAAS;AAAA,QACP,EAAA,EAAI;AAAA;AACN;AACF,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,MAAA,EAAQ,MAAA;AAAA,IACR,OAAA,EAAS;AAAA;AAEb,CAAC,CAAA;AC5BD,SAAS,gBAAgB,OAAA,EAA+B;AACtD,EAAA,KAAA,MAAW,IAAA,IAAQ,QAAQ,UAAA,EAAY;AACrC,IAAA,IAAI,IAAA,CAAK,QAAA,KAAa,IAAA,CAAK,YAAA,EAAc;AACvC,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,IAAI,IAAA,CAAK,aAAa,IAAA,CAAK,SAAA,IAAa,KAAK,WAAA,EAAa,IAAA,OAAW,EAAA,EAAI;AACvE,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,EACF;AAEA,EAAA,OAAO,KAAA;AACT;AAEO,SAAS,eAAA,CAAgB,eAAe,KAAA,EAG7C;AACA,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIC,eAAS,YAAY,CAAA;AACzD,EAAA,MAAM,WAAA,GAAcC,aAAgC,IAAI,CAAA;AAExD,EAAA,MAAM,GAAA,GAAMC,iBAAA,CAAY,CAAC,IAAA,KAAgC;AACvD,IAAA,WAAA,CAAY,SAAS,UAAA,EAAW;AAChC,IAAA,WAAA,CAAY,OAAA,GAAU,IAAA;AAEtB,IAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,MAAA,aAAA,CAAc,KAAK,CAAA;AACnB,MAAA;AAAA,IACF;AAEA,IAAA,aAAA,CAAc,eAAA,CAAgB,IAAI,CAAC,CAAA;AAEnC,IAAA,MAAMC,SAAAA,GAAW,IAAI,gBAAA,CAAiB,MAAM;AAC1C,MAAA,aAAA,CAAc,eAAA,CAAgB,IAAI,CAAC,CAAA;AAAA,IACrC,CAAC,CAAA;AACD,IAAAA,UAAS,OAAA,CAAQ,IAAA,EAAM,EAAC,SAAA,EAAW,MAAK,CAAA;AACxC,IAAA,WAAA,CAAY,OAAA,GAAUA,SAAAA;AAAA,EACxB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,OAAO,MAAM,WAAA,CAAY,OAAA,EAAS,UAAA,EAAW;AAAA,EAC/C,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO,EAAC,YAAY,GAAA,EAAG;AACzB;;;AC5CA,IAAI,QAAA,GAAkC,IAAA;AACtC,IAAM,SAAA,uBAAgB,GAAA,EAA6B;AAEnD,SAAS,WAAA,GAA8B;AACrC,EAAA,QAAA,KAAA,QAAA,GAAa,IAAI,eAAe,CAAA,OAAA,KAAW;AACzC,IAAA,KAAA,MAAW,SAAS,OAAA,EAAS;AAC3B,MAAA,SAAA,CAAU,GAAA,CAAI,KAAA,CAAM,MAAM,CAAA,GAAI,KAAK,CAAA;AAAA,IACrC;AAAA,EACF,CAAC,CAAA,CAAA;AAED,EAAA,OAAO,QAAA;AACT;AAEO,SAAS,aAAA,CACd,SACA,QAAA,EACM;AACN,EAAA,SAAA,CAAU,GAAA,CAAI,SAAS,QAAQ,CAAA;AAC/B,EAAA,WAAA,EAAY,CAAE,QAAQ,OAAO,CAAA;AAC/B;AAEO,SAAS,gBAAgB,OAAA,EAAwB;AACtD,EAAA,SAAA,CAAU,OAAO,OAAO,CAAA;AAExB,EAAA,IAAI,YAAY,IAAA,EAAM;AACpB,IAAA;AAAA,EACF;AAEA,EAAA,QAAA,CAAS,UAAU,OAAO,CAAA;AAE1B,EAAA,IAAI,SAAA,CAAU,SAAS,CAAA,EAAG;AACxB,IAAA,QAAA,CAAS,UAAA,EAAW;AACpB,IAAA,QAAA,GAAW,IAAA;AAAA,EACb;AACF;AClCA,SAAS,iBAAA,GAA6B;AACpC,EAAA,OAAO,KAAA;AACT;AAKO,SAAS,cAAc,KAAA,EAAwB;AACpD,EAAA,MAAM,SAAA,GAAYF,iBAAAA;AAAA,IAChB,CAAC,aAAA,KAA8B;AAC7B,MAAA,MAAM,cAAA,GAAiB,MAAA,CAAO,UAAA,CAAW,KAAK,CAAA;AAC9C,MAAA,cAAA,CAAe,gBAAA,CAAiB,UAAU,aAAa,CAAA;AACvD,MAAA,OAAO,MAAM,cAAA,CAAe,mBAAA,CAAoB,QAAA,EAAU,aAAa,CAAA;AAAA,IACzE,CAAA;AAAA,IACA,CAAC,KAAK;AAAA,GACR;AAEA,EAAA,MAAM,WAAA,GAAcA,kBAAY,MAAM;AACpC,IAAA,OAAO,MAAA,CAAO,UAAA,CAAW,KAAK,CAAA,CAAE,OAAA;AAAA,EAClC,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAA,OAAOG,0BAAA,CAAqB,SAAA,EAAW,WAAA,EAAa,iBAAiB,CAAA;AACvE;ACgEA,IAAM,iBAAA,GAAwD;AAAA,EAC5D,EAAA,EAAI,GAAA;AAAA,EACJ,EAAA,EAAI,GAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,IAAA,EAAM;AACR,CAAA;AAEA,IAAM,MAAA,GAAS;AAAA,EACb,UAAUC,qBAAA,CAAI;AAAA,IACZ,QAAA,EAAU,UAAA;AAAA,IACV,GAAA,EAAK,CAAA;AAAA,IACL,gBAAA,EAAkB,CAAA;AAAA,IAClB,CAAA,EAAG,KAAA;AAAA,IACH,CAAA,EAAG,KAAA;AAAA,IACH,CAAA,EAAG,CAAA;AAAA,IACH,CAAA,EAAG,MAAA;AAAA,IACH,QAAA,EAAU,QAAA;AAAA,IACV,QAAA,EAAU,YAAA;AAAA,IACV,UAAA,EAAY,QAAA;AAAA,IACZ,WAAA,EAAa,CAAA;AAAA,IACb,MAAA,EAAQ,IAAA;AAAA,IACR,EAAA,EAAI,IAAA;AAAA,IACJ,KAAA,EAAO,SAAA;AAAA,IACP,cAAA,EAAgB,MAAA;AAAA,IAChB,UAAA,EAAY,UAAA;AAAA,IACZ,MAAA,EAAQ;AAAA,MACN,QAAA,EAAU,OAAA;AAAA,MACV,GAAA,EAAK,GAAA;AAAA,MACL,gBAAA,EAAkB,GAAA;AAAA,MAClB,CAAA,EAAG,MAAA;AAAA,MACH,CAAA,EAAG,MAAA;AAAA,MACH,CAAA,EAAG,GAAA;AAAA,MACH,CAAA,EAAG,CAAA;AAAA,MACH,QAAA,EAAU,SAAA;AAAA,MACV,QAAA,EAAU,MAAA;AAAA,MACV,UAAA,EAAY,QAAA;AAAA,MACZ,YAAA,EAAc,OAAA;AAAA,MACd,YAAA,EAAc,OAAA;AAAA,MACd,YAAA,EAAc,SAAA;AAAA,MACd,aAAA,EAAe;AAAA;AACjB,GACD,CAAA;AAAA,EACD,cAAcA,qBAAA,CAAI;AAAA,IAChB,QAAA,EAAU,QAAA;AAAA,IACV,GAAA,EAAK,CAAA;AAAA,IACL,MAAA,EAAQ;AAAA,GACT,CAAA;AAAA,EACD,QAAQA,qBAAA,CAAI;AAAA,IACV,UAAA,EAAY;AAAA,GACb,CAAA;AAAA,EACD,kBAAkBA,qBAAA,CAAI;AAAA,IACpB,OAAA,EAAS,MAAA;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,CAAA,EAAG,IAAA;AAAA,IACH,EAAA,EAAI;AAAA,GACL,CAAA;AAAA,EACD,eAAeA,qBAAA,CAAI;AAAA,IACjB,UAAA,EAAY,CAAA;AAAA,IACZ,QAAA,EAAU,MAAA;AAAA,IACV,QAAA,EAAU,QAAA;AAAA,IACV,GAAA,EAAK,oCAAA;AAAA,IACL,CAAA,EAAG,mDAAA;AAAA,IACH,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe;AAAA,GAChB,CAAA;AAAA,EACD,iBAAiBA,qBAAA,CAAI;AAAA,IACnB,QAAA,EAAU,UAAA;AAAA,IACV,OAAA,EAAS,MAAA;AAAA,IACT,IAAA,EAAM,CAAA;AAAA,IACN,IAAA,EAAM,CAAA;AAAA,IACN,CAAA,EAAG;AAAA,GACJ,CAAA;AAAA,EACD,kBAAkBA,qBAAA,CAAI;AAAA,IACpB,QAAA,EAAU,UAAA;AAAA,IACV,KAAA,EAAO,CAAA;AAAA,IACP,EAAA,EAAI,IAAA;AAAA,IACJ,sBAAA,EAAwB,KAAA;AAAA,IACxB,aAAA,EAAe;AAAA,GAChB,CAAA;AAAA,EACD,gBAAgBA,qBAAA,CAAI;AAAA,IAClB,EAAA,EAAI;AAAA,GACL,CAAA;AAAA,EACD,oBAAoBA,qBAAA,CAAI;AAAA,IACtB,EAAA,EAAI,aAAA;AAAA,IACJ,SAAA,EAAW;AAAA,GACZ,CAAA;AAAA,EACD,cAAcA,qBAAA,CAAI;AAAA,IAChB,OAAA,EAAS;AAAA,GACV;AACH,CAAA;AAUO,SAAS,QAAA,CAAS;AAAA,EACvB,MAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA,EAAe,UAAA;AAAA,EACf,MAAA,GAAS,MAAA;AAAA,EACT,mBAAA,GAAsB,KAAA;AAAA,EACtB,gBAAA,GAAmB,IAAA;AAAA,EACnB,GAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA,GAAU;AACZ,CAAA,EAAqC;AACnC,EAAA,MAAM,gBAAgBC,WAAA,EAAM;AAC5B,EAAA,MAAM,kBACJ,gBAAA,KAAqB,MAAA,GACjB,qBACA,CAAA,YAAA,EAAe,iBAAA,CAAkB,gBAAgB,CAAC,CAAA,GAAA,CAAA;AACxD,EAAA,MAAM,iBAAA,GAAoB,cAAc,eAAe,CAAA;AACvD,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAIP,eAAS,KAAK,CAAA;AAC5D,EAAA,MAAM,EAAC,KAAK,iBAAA,EAAmB,UAAA,EAAY,kBAAgB,GACzD,eAAA,CAAgBQ,6BAAA,CAAY,MAAM,CAAC,CAAA;AACrC,EAAA,MAAM,EAAC,KAAK,kBAAA,EAAoB,UAAA,EAAY,mBAAiB,GAC3D,eAAA,CAAgBA,6BAAA,CAAY,OAAO,CAAC,CAAA;AACtC,EAAA,MAAM,SAAA,GAAYA,8BAAY,MAAM,CAAA;AACpC,EAAA,MAAM,UAAA,GAAaA,8BAAY,OAAO,CAAA;AACtC,EAAA,MAAM,gBAAgB,gBAAA,IAAoB,iBAAA;AAC1C,EAAA,MAAM,gBAAA,GAAmB,CAAC,mBAAA,IAAuB,aAAA;AACjD,EAAA,MAAM,iBAAA,GAAoB,cAAc,CAAC,iBAAA;AACzC,EAAA,MAAM,SAAS,MAAA,KAAW,MAAA;AAC1B,EAAA,MAAM,SAAS,MAAA,KAAW,MAAA;AAC1B,EAAA,MAAM,iBAAiB,OAAA,KAAY,SAAA;AACnC,EAAA,MAAM,SAAA,GAAYP,aAAuB,IAAI,CAAA;AAC7C,EAAA,MAAM,QAAA,GAAWA,aAAuB,IAAI,CAAA;AAE5C,EAAAG,gBAAU,MAAM;AACd,IAAA,IAAI,CAAC,MAAA,IAAU,SAAA,CAAU,WAAW,IAAA,IAAQ,QAAA,CAAS,WAAW,IAAA,EAAM;AACpE,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,gBAAgB,SAAA,CAAU,OAAA;AAChC,IAAA,MAAM,eAAe,QAAA,CAAS,OAAA;AAC9B,IAAA,MAAM,eAAe,MAAM;AACzB,MAAA,YAAA,CAAa,KAAA,CAAM,WAAA;AAAA,QACjB,0BAAA;AAAA,QACA,CAAA,EAAG,aAAA,CAAc,qBAAA,EAAsB,CAAE,MAAM,CAAA,EAAA;AAAA,OACjD;AAAA,IACF,CAAA;AAEA,IAAA,aAAA,CAAc,eAAe,YAAY,CAAA;AACzC,IAAA,OAAO,MAAM,gBAAgB,aAAa,CAAA;AAAA,EAC5C,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,MAAM,kBAAA,GAAqBK,aAAA;AAAA,IACzB,OAAO;AAAA,MACL,cAAA,EAAgB,MAAM,kBAAA,CAAmB,KAAK,CAAA;AAAA,MAC9C,aAAA,EAAe,IAAA;AAAA,MACf,QAAA,EAAU,iBAAA;AAAA,MACV,kBAAA,EAAoB,gBAAA;AAAA,MACpB,eAAA;AAAA,MACA,aAAA,EAAe,MAAM,gBAAA,IAAoB,kBAAA,CAAmB,IAAI,CAAA;AAAA,MAChE,iBAAiB,MAAM;AACrB,QAAA,IAAI,gBAAA,EAAkB;AACpB,UAAA,kBAAA,CAAmB,CAAA,IAAA,KAAQ,CAAC,IAAI,CAAA;AAAA,QAClC;AAAA,MACF;AAAA,KACF,CAAA;AAAA,IACA,CAAC,iBAAA,EAAmB,eAAA,EAAiB,gBAAgB;AAAA,GACvD;AAGA,EAAA,MAAM,kBAAA,GAAqB,iBAAA,mBACzBC,cAAA,CAACC,sCAAA,EAAA,EAAqB,OAAM,gBAAA,EAC1B,QAAA,kBAAAD,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAO,YAAA,EAAc,GAAA,EAAK,kBAAA,EACvC,QAAA,EAAA,OAAA,EACH,GACF,CAAA,GACE,IAAA;AACJ,EAAA,MAAM,2BAA2B,iBAAA,mBAC/BA,cAAA,CAACC,0CAAqB,KAAA,EAAM,gBAAA,EACzB,mBACH,CAAA,GACE,IAAA;AAEJ,EAAA,MAAM,aAAA,GACJ,aAAa,iBAAA,IAAqB,CAAC,sCACjCD,cAAA,CAACE,4CAAA,EAAA,EAA2B,KAAA,EAAO,kBAAA,EACjC,QAAA,kBAAAF,cAAA,CAACG,qCAAA,EAAA,EAAoB,OAAM,YAAA,EACzB,QAAA,kBAAAH,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,YAAA,EAAc,KAAK,iBAAA,EACvC,QAAA,EAAA,MAAA,EACH,CAAA,EACF,CAAA,EACF,CAAA,GAEA,MAAA;AAEJ,EAAA,MAAM,aAAA,GACJ,aAAaF,6BAAA,CAAY,MAAM,oBAC7BE,cAAA,CAAC,KAAA,EAAA,EAAI,WAAWI,oBAAA,CAAG,MAAA,IAAU,OAAO,YAAY,CAAA,EAAG,KAAK,SAAA,EACtD,QAAA,kBAAAC,eAAA,CAAC,YAAO,KAAA,EAAO,EAAC,UAAA,EAAY,CAAA,EAAC,EAC1B,QAAA,EAAA;AAAA,IAAAP,6BAAA,CAAY,MAAM,oBACjBE,cAAA,CAAC,KAAA,EAAA,EAAI,WAAW,MAAA,CAAO,MAAA,EAAS,kBAAO,CAAA,GACrC,IAAA;AAAA,IACH,SAAA,kCACE,KAAA,EAAA,EAAI,SAAA,EAAW,OAAO,YAAA,EAAc,GAAA,EAAK,iBAAA,EACvC,QAAA,EAAA,aAAA,EACH,CAAA,GACE;AAAA,GAAA,EACN,GACF,CAAA,GACE,MAAA;AACN,EAAA,MAAM,gBAAA,GACJ,CAAC,mBAAA,IACD,iBAAA,IACA,CAAC,gBAAA,IACD,UAAA,mBACEA,cAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAO,EAAC,UAAA,EAAY,GAAC,EAC3B,QAAA,kBAAAK,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAW,mBAAA;AAAA,MACX,WAAW,MAAA,CAAO,gBAAA;AAAA,MAClB,IAAA,EAAK,YAAA;AAAA,MACL,QAAA,EAAA;AAAA,wBAAAL,cAAA,CAACC,sCAAA,EAAA,EAAqB,KAAA,EAAM,QAAA,EAC1B,QAAA,kBAAAD,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,YAAA,EAAc,GAAA,EAAK,kBAAA,EACvC,QAAA,EAAA,OAAA,EACH,CAAA,EACF,CAAA;AAAA,uCACCM,iCAAA,EAAA,EAAgB;AAAA;AAAA;AAAA,KAErB,CAAA,GACE,MAAA;AACN,EAAA,MAAM,eAAe,iBAAA,mBACnBN,cAAA,CAACO,6BAAA,EAAA,EAAY,YAAA,EAAc,QAAQ,OAAA,EAAS,CAAA,EAC1C,QAAA,kBAAAP,cAAA,CAAC,KAAA,EAAA,EAAI,WAAW,MAAA,CAAO,YAAA,EAAc,KAAK,kBAAA,EACvC,QAAA,EAAA,OAAA,EACH,GACF,CAAA,GACE,MAAA;AACJ,EAAA,MAAM,cAAA,GACJ,YAAA,IAAgB,IAAA,IAAQ,MAAA,mBACtBA,cAAA,CAAC,SAAI,SAAA,EAAW,MAAA,CAAO,aAAA,EAAgB,QAAA,EAAA,YAAA,EAAa,CAAA,GAEpD,YAAA;AAEJ,EAAA,MAAM,gBAAA,GACJ,OAAA,KAAY,SAAA,IAAa,gBAAA,IAAoB,iBAAA,GACzC,OAAO,kBAAA,GACP,OAAA,KAAY,SAAA,GACV,MAAA,CAAO,cAAA,GACP,MAAA;AACR,EAAA,MAAM,SAAA,mBACJA,cAAA;AAAA,IAACQ,+BAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAG,MAAA;AAAA,MACH,SAAA,EAAW,gBAAA;AAAA,MACX,EAAA,EAAI,aAAA;AAAA,MACJ,YAAA,EAAc,MAAA;AAAA,MACd,SAAS,cAAA,IAAkB,CAAA;AAAA,MAC1B;AAAA;AAAA,GACH;AAEF,EAAA,MAAM,uBAAA,GACJ,OAAA,KAAY,SAAA,IAAa,gBAAA,IAAoB,iBAAA;AAC/C,EAAA,MAAM,cAAc,uBAAA,mBAClBH,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAO,eAAA,EACrB,QAAA,EAAA;AAAA,oBAAAL,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,gBAAA,EAAkB,CAAA;AAAA,IACxC;AAAA,GAAA,EACH,CAAA,GAEA,SAAA;AAEF,EAAA,MAAM,SAAA,GAA+B,EAAC,GAAG,KAAA,EAAK;AAE9C,EAAA,uBACEA,cAAA,CAACS,uCAAA,EAAA,EAAsB,KAAA,EAAO,kBAAA,EAC5B,QAAA,kBAAAJ,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWD,qBAAG,cAAA,CAAe,EAAC,QAAQ,OAAA,EAAQ,GAAG,SAAS,CAAA;AAAA,MAC1D,aAAA,EAAa,UAAA;AAAA,MACb,GAAA,EAAKM,2BAAA,CAAU,GAAA,EAAK,QAAQ,CAAA;AAAA,MAC5B,KAAA,EAAO,SAAA;AAAA,MACP,QAAA,EAAA;AAAA,wBAAAV,cAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACC,WAAW,MAAA,CAAO,QAAA;AAAA,YAClB,aAAA,EAAY,iBAAA;AAAA,YACZ,IAAA,EAAM,IAAI,aAAa,CAAA,CAAA;AAAA,YAAI,QAAA,EAAA;AAAA;AAAA,SAE7B;AAAA,wBACAA,cAAA;AAAA,UAACW,wBAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,WAAA;AAAA,YACT,WAAA,EAAa,cAAA;AAAA,YACb,wBACEN,eAAA,CAAAO,mBAAA,EAAA,EACG,QAAA,EAAA;AAAA,cAAA,aAAA;AAAA,cACA;AAAA,aAAA,EACH,CAAA;AAAA,YAEF,MAAA;AAAA,YACA,OAAA,EAAS,CAAA;AAAA,YACT,KAAA,EAAO;AAAA;AAAA,SACT;AAAA,QACC,iBAAA,IAAqB,CAAC,mBAAA,mBACrBP,eAAA,CAAAO,mBAAA,EAAA,EACG,QAAA,EAAA;AAAA,UAAA,UAAA,IAAc,CAAC,gBAAA,mBACdZ,cAAA,CAACC,0CAAqB,KAAA,EAAM,QAAA,EACzB,mBACH,CAAA,GACE,IAAA;AAAA,UACH,SAAA,IAAa,gBAAA,mBACZD,cAAA,CAACE,4CAAA,EAAA,EAA2B,KAAA,EAAO,wBAAA,EACjC,QAAA,kBAAAF,cAAA,CAACG,qCAAA,EAAA,EAAoB,KAAA,EAAM,QAAA,EACxB,QAAA,EAAA,MAAA,EACH,CAAA,EACF,CAAA,GACE;AAAA,SAAA,EACN,CAAA,GACE;AAAA;AAAA;AAAA,GACN,EACF,CAAA;AAEJ;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA","file":"chunk-NW36BN7N.cjs","sourcesContent":["import {cva, type RecipeVariantProps} from 'styled-system/css';\n\nexport const appShellRecipe = cva({\n base: {\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n },\n variants: {\n height: {\n fill: {\n h: '100dvh',\n },\n auto: {\n minH: '100dvh',\n },\n },\n variant: {\n default: {\n bg: 'bg.subtle',\n },\n section: {\n bg: 'bg',\n },\n },\n },\n defaultVariants: {\n height: 'fill',\n variant: 'default',\n },\n});\n\nexport type AppShellVariants = RecipeVariantProps<typeof appShellRecipe>;\n","import {useCallback, useEffect, useRef, useState} from 'react';\n\nfunction hasChildContent(element: HTMLElement): boolean {\n for (const node of element.childNodes) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n return true;\n }\n\n if (node.nodeType === Node.TEXT_NODE && node.textContent?.trim() !== '') {\n return true;\n }\n }\n\n return false;\n}\n\nexport function useSlotPresence(initialValue = false): {\n hasContent: boolean;\n ref: (node: HTMLDivElement | null) => void;\n} {\n const [hasContent, setHasContent] = useState(initialValue);\n const observerRef = useRef<MutationObserver | null>(null);\n\n const ref = useCallback((node: HTMLDivElement | null) => {\n observerRef.current?.disconnect();\n observerRef.current = null;\n\n if (node == null) {\n setHasContent(false);\n return;\n }\n\n setHasContent(hasChildContent(node));\n\n const observer = new MutationObserver(() => {\n setHasContent(hasChildContent(node));\n });\n observer.observe(node, {childList: true});\n observerRef.current = observer;\n }, []);\n\n useEffect(() => {\n return () => observerRef.current?.disconnect();\n }, []);\n\n return {hasContent, ref};\n}\n","type ResizeCallback = (entry: ResizeObserverEntry) => void;\n\nlet observer: ResizeObserver | null = null;\nconst callbacks = new Map<Element, ResizeCallback>();\n\nfunction getObserver(): ResizeObserver {\n observer ??= new ResizeObserver(entries => {\n for (const entry of entries) {\n callbacks.get(entry.target)?.(entry);\n }\n });\n\n return observer;\n}\n\nexport function observeResize(\n element: Element,\n callback: ResizeCallback,\n): void {\n callbacks.set(element, callback);\n getObserver().observe(element);\n}\n\nexport function unobserveResize(element: Element): void {\n callbacks.delete(element);\n\n if (observer == null) {\n return;\n }\n\n observer.unobserve(element);\n\n if (callbacks.size === 0) {\n observer.disconnect();\n observer = null;\n }\n}\n","import {useCallback, useSyncExternalStore} from 'react';\n\nfunction getServerSnapshot(): boolean {\n return false;\n}\n\n/**\n * Subscribe to a browser media query using React's external-store API.\n */\nexport function useMediaQuery(query: string): boolean {\n const subscribe = useCallback(\n (onStoreChange: () => void) => {\n const mediaQueryList = window.matchMedia(query);\n mediaQueryList.addEventListener('change', onStoreChange);\n return () => mediaQueryList.removeEventListener('change', onStoreChange);\n },\n [query],\n );\n\n const getSnapshot = useCallback(() => {\n return window.matchMedia(query).matches;\n }, [query]);\n\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n","import type {CSSProperties, ReactNode, Ref} from 'react';\nimport {useEffect, useId, useMemo, useRef, useState} from 'react';\nimport {appShellRecipe} from 'components/AppShell/AppShell.recipe';\nimport {\n AppShellMobileContext,\n type AppShellMobileContextValue,\n} from 'components/AppShell/AppShellMobileContext';\nimport {useSlotPresence} from 'components/AppShell/useSlotPresence';\nimport {Layout, LayoutContent, LayoutPanel} from 'components/Layout';\nimport {SideNavRenderContext} from 'components/SideNav';\nimport {\n TopNavMobileContentContext,\n TopNavRenderContext,\n} from 'components/TopNav';\nimport {MobileNavToggle} from 'internal/MobileNav';\nimport {cx} from 'internal/cx';\nimport isReactNode from 'internal/isReactNode';\nimport {mergeRefs} from 'internal/mergeRefs';\nimport {observeResize, unobserveResize} from 'internal/sharedResizeObserver';\nimport type {SpacingToken} from 'internal/spacingTokens';\nimport {useMediaQuery} from 'internal/useMediaQuery';\nimport {css} from 'styled-system/css';\n\nexport type AppShellBreakpoint = 'sm' | 'md' | 'lg' | 'none';\nexport type AppShellVariant = 'default' | 'section';\nexport type AppShellHeight = 'fill' | 'auto';\n\n/**\n * Application-level layout shell with top navigation, side navigation,\n * banner, skip-to-content support, and responsive mobile navigation.\n */\nexport interface AppShellProps {\n /**\n * System-wide content rendered above the top navigation.\n */\n banner?: ReactNode;\n /**\n * Main content rendered inside the shell's `<main>` landmark.\n */\n children: ReactNode;\n /**\n * Additional CSS class names applied to the root element.\n */\n className?: string;\n /**\n * Padding applied to the main content area. Default is `0`.\n */\n contentPadding?: SpacingToken;\n /**\n * Test ID applied to the root element.\n */\n 'data-testid'?: string;\n /**\n * Height behavior. `fill` keeps scrolling inside the shell; `auto` lets the\n * page grow with content.\n */\n height?: AppShellHeight;\n /**\n * Disable generated mobile navigation.\n */\n isMobileNavDisabled?: boolean;\n /**\n * Breakpoint below which mobile navigation is used.\n * @default 'md'\n */\n mobileBreakpoint?: AppShellBreakpoint;\n /**\n * Ref forwarded to the root element.\n */\n ref?: Ref<HTMLDivElement>;\n /**\n * Side navigation slot, typically a SideNav.\n */\n sideNav?: ReactNode;\n /**\n * Inline styles applied to the root element.\n */\n style?: CSSProperties;\n /**\n * Top navigation slot, typically a TopNav.\n */\n topNav?: ReactNode;\n /**\n * Background and divider style for the shell.\n */\n variant?: AppShellVariant;\n}\n\nconst BREAKPOINT_VALUES: Record<AppShellBreakpoint, number> = {\n sm: 640,\n md: 768,\n lg: 1024,\n none: 0,\n};\n\nconst styles = {\n skipLink: css({\n position: 'absolute',\n top: 0,\n insetInlineStart: 0,\n w: '1px',\n h: '1px',\n p: 0,\n m: '-1px',\n overflow: 'hidden',\n clipPath: 'inset(50%)',\n whiteSpace: 'nowrap',\n borderWidth: 0,\n zIndex: 9999,\n bg: 'bg',\n color: 'primary',\n textDecoration: 'none',\n fontWeight: 'semibold',\n _focus: {\n position: 'fixed',\n top: '2',\n insetInlineStart: '2',\n w: 'auto',\n h: 'auto',\n p: '2',\n m: 0,\n overflow: 'visible',\n clipPath: 'none',\n whiteSpace: 'normal',\n outlineWidth: 'focus',\n outlineStyle: 'solid',\n outlineColor: 'primary',\n outlineOffset: 'focusOffset',\n },\n }),\n headerSticky: css({\n position: 'sticky',\n top: 0,\n zIndex: 1,\n }),\n banner: css({\n flexShrink: 0,\n }),\n autoMobileTopBar: css({\n display: 'flex',\n alignItems: 'center',\n h: '12',\n px: '2',\n }),\n sideNavSticky: css({\n flexShrink: 0,\n overflow: 'clip',\n position: 'sticky',\n top: 'var(--appshell-header-height, 0px)',\n h: 'calc(100dvh - var(--appshell-header-height, 0px))',\n display: 'flex',\n flexDirection: 'column',\n }),\n elevatedWrapper: css({\n position: 'relative',\n display: 'flex',\n flex: 1,\n minH: 0,\n h: '100%',\n }),\n elevatedBackdrop: css({\n position: 'absolute',\n inset: 0,\n bg: 'bg',\n borderStartStartRadius: '2xl',\n pointerEvents: 'none',\n }),\n contentSurface: css({\n bg: 'bg',\n }),\n contentTransparent: css({\n bg: 'transparent',\n isolation: 'isolate',\n }),\n slotContents: css({\n display: 'contents',\n }),\n};\n\ntype AppShellRootStyle = CSSProperties & {\n '--appshell-header-height'?: string;\n};\n\n/**\n * Application-level layout shell with top navigation, side navigation,\n * banner, skip-to-content support, and responsive mobile navigation.\n */\nexport function AppShell({\n banner,\n children,\n className,\n contentPadding,\n 'data-testid': dataTestId,\n height = 'fill',\n isMobileNavDisabled = false,\n mobileBreakpoint = 'md',\n ref,\n sideNav,\n style,\n topNav,\n variant = 'default',\n}: AppShellProps): React.JSX.Element {\n const mainContentId = useId();\n const breakpointQuery =\n mobileBreakpoint === 'none'\n ? '(max-width: 0px)'\n : `(max-width: ${BREAKPOINT_VALUES[mobileBreakpoint]}px)`;\n const isBelowBreakpoint = useMediaQuery(breakpointQuery);\n const [isMobileNavOpen, setIsMobileNavOpen] = useState(false);\n const {ref: topNavPresenceRef, hasContent: hasTopNavContent} =\n useSlotPresence(isReactNode(topNav));\n const {ref: sideNavPresenceRef, hasContent: hasSideNavContent} =\n useSlotPresence(isReactNode(sideNav));\n const hasTopNav = isReactNode(topNav);\n const hasSideNav = isReactNode(sideNav);\n const hasNavContent = hasTopNavContent || hasSideNavContent;\n const mobileNavEnabled = !isMobileNavDisabled && hasNavContent;\n const showSideNavInline = hasSideNav && !isBelowBreakpoint;\n const isAuto = height === 'auto';\n const isFill = height === 'fill';\n const navHasDividers = variant === 'section';\n const headerRef = useRef<HTMLDivElement>(null);\n const shellRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!isAuto || headerRef.current == null || shellRef.current == null) {\n return;\n }\n\n const headerElement = headerRef.current;\n const shellElement = shellRef.current;\n const updateHeight = () => {\n shellElement.style.setProperty(\n '--appshell-header-height',\n `${headerElement.getBoundingClientRect().height}px`,\n );\n };\n\n observeResize(headerElement, updateHeight);\n return () => unobserveResize(headerElement);\n }, [isAuto]);\n\n const mobileContextValue = useMemo<AppShellMobileContextValue>(\n () => ({\n closeMobileNav: () => setIsMobileNavOpen(false),\n hasAutoToggle: true,\n isMobile: isBelowBreakpoint,\n isMobileNavEnabled: mobileNavEnabled,\n isMobileNavOpen,\n openMobileNav: () => mobileNavEnabled && setIsMobileNavOpen(true),\n toggleMobileNav: () => {\n if (mobileNavEnabled) {\n setIsMobileNavOpen(prev => !prev);\n }\n },\n }),\n [isBelowBreakpoint, isMobileNavOpen, mobileNavEnabled],\n );\n\n /* eslint-disable @eslint-react/no-unstable-context-value -- sideNav ReactNode prop prevents stable memoization */\n const mobileContentValue = hasSideNavContent ? (\n <SideNavRenderContext value=\"drawer-content\">\n <div className={styles.slotContents} ref={sideNavPresenceRef}>\n {sideNav}\n </div>\n </SideNavRenderContext>\n ) : null;\n const drawerMobileContentValue = hasSideNavContent ? (\n <SideNavRenderContext value=\"drawer-content\">\n {sideNav}\n </SideNavRenderContext>\n ) : null;\n /* eslint-enable @eslint-react/no-unstable-context-value */\n const topNavContent =\n hasTopNav && isBelowBreakpoint && !isMobileNavDisabled ? (\n <TopNavMobileContentContext value={mobileContentValue}>\n <TopNavRenderContext value=\"mobile-bar\">\n <div className={styles.slotContents} ref={topNavPresenceRef}>\n {topNav}\n </div>\n </TopNavRenderContext>\n </TopNavMobileContentContext>\n ) : (\n topNav\n );\n const headerContent =\n hasTopNav || isReactNode(banner) ? (\n <div className={cx(isAuto && styles.headerSticky)} ref={headerRef}>\n <header style={{flexShrink: 0}}>\n {isReactNode(banner) ? (\n <div className={styles.banner}>{banner}</div>\n ) : null}\n {hasTopNav ? (\n <div className={styles.slotContents} ref={topNavPresenceRef}>\n {topNavContent}\n </div>\n ) : null}\n </header>\n </div>\n ) : undefined;\n const autoMobileTopBar =\n !isMobileNavDisabled &&\n isBelowBreakpoint &&\n !hasTopNavContent &&\n hasSideNav ? (\n <header style={{flexShrink: 0}}>\n <div\n aria-label=\"Mobile navigation\"\n className={styles.autoMobileTopBar}\n role=\"navigation\">\n <SideNavRenderContext value=\"topbar\">\n <div className={styles.slotContents} ref={sideNavPresenceRef}>\n {sideNav}\n </div>\n </SideNavRenderContext>\n <MobileNavToggle />\n </div>\n </header>\n ) : undefined;\n const sideNavPanel = showSideNavInline ? (\n <LayoutPanel isScrollable={isFill} padding={0}>\n <div className={styles.slotContents} ref={sideNavPresenceRef}>\n {sideNav}\n </div>\n </LayoutPanel>\n ) : undefined;\n const sideNavContent =\n sideNavPanel != null && isAuto ? (\n <div className={styles.sideNavSticky}>{sideNavPanel}</div>\n ) : (\n sideNavPanel\n );\n const contentClassName =\n variant === 'default' && hasTopNavContent && showSideNavInline\n ? styles.contentTransparent\n : variant === 'default'\n ? styles.contentSurface\n : undefined;\n const mainInner = (\n <LayoutContent\n as=\"main\"\n className={contentClassName}\n id={mainContentId}\n isScrollable={isFill}\n padding={contentPadding ?? 0}>\n {children}\n </LayoutContent>\n );\n const shouldElevateWithCorner =\n variant === 'default' && hasTopNavContent && showSideNavInline;\n const mainContent = shouldElevateWithCorner ? (\n <div className={styles.elevatedWrapper}>\n <div className={styles.elevatedBackdrop} />\n {mainInner}\n </div>\n ) : (\n mainInner\n );\n const rootStyle: AppShellRootStyle = {...style};\n\n return (\n <AppShellMobileContext value={mobileContextValue}>\n <div\n className={cx(appShellRecipe({height, variant}), className)}\n data-testid={dataTestId}\n ref={mergeRefs(ref, shellRef)}\n style={rootStyle}>\n <a\n className={styles.skipLink}\n data-testid=\"skip-to-content\"\n href={`#${mainContentId}`}>\n Skip to content\n </a>\n <Layout\n content={mainContent}\n hasDividers={navHasDividers}\n header={\n <>\n {headerContent}\n {autoMobileTopBar}\n </>\n }\n height={height}\n padding={0}\n start={sideNavContent}\n />\n {isBelowBreakpoint && !isMobileNavDisabled ? (\n <>\n {hasSideNav && !hasTopNavContent ? (\n <SideNavRenderContext value=\"drawer\">\n {sideNav}\n </SideNavRenderContext>\n ) : null}\n {hasTopNav && hasTopNavContent ? (\n <TopNavMobileContentContext value={drawerMobileContentValue}>\n <TopNavRenderContext value=\"drawer\">\n {topNav}\n </TopNavRenderContext>\n </TopNavMobileContentContext>\n ) : null}\n </>\n ) : null}\n </div>\n </AppShellMobileContext>\n );\n}\n\nAppShell.displayName = 'AppShell';\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { useTooltip } from './chunk-
|
|
2
|
-
import { useIsomorphicLayoutEffect } from './chunk-
|
|
1
|
+
import { useTooltip } from './chunk-KWZMXX4F.js';
|
|
2
|
+
import { useIsomorphicLayoutEffect } from './chunk-KEPCKSDE.js';
|
|
3
3
|
import { mergeRefs } from './chunk-SGLIDI6R.js';
|
|
4
4
|
import { cva } from './chunk-FMEIPGUP.js';
|
|
5
5
|
import { cx } from './chunk-PPNETWIP.js';
|
|
@@ -3239,7 +3239,7 @@ function BaseHeading({
|
|
|
3239
3239
|
color = "primary",
|
|
3240
3240
|
display = "block",
|
|
3241
3241
|
maxLines: _maxLines,
|
|
3242
|
-
|
|
3242
|
+
truncateTooltip: _truncateTooltip,
|
|
3243
3243
|
wordBreak: _wordBreak,
|
|
3244
3244
|
textWrap,
|
|
3245
3245
|
hasStrikethrough = false,
|
|
@@ -3281,7 +3281,7 @@ function TruncatedHeading({
|
|
|
3281
3281
|
color = "primary",
|
|
3282
3282
|
display: _display,
|
|
3283
3283
|
maxLines = 1,
|
|
3284
|
-
|
|
3284
|
+
truncateTooltip = "above",
|
|
3285
3285
|
wordBreak,
|
|
3286
3286
|
textWrap,
|
|
3287
3287
|
hasStrikethrough = false,
|
|
@@ -3295,10 +3295,9 @@ function TruncatedHeading({
|
|
|
3295
3295
|
const headingRef = useRef(null);
|
|
3296
3296
|
const truncation = useTruncation({ maxLines });
|
|
3297
3297
|
const resolvedWordBreak = wordBreak ?? "break-word";
|
|
3298
|
-
const
|
|
3299
|
-
const isTooltipEnabled = hasTruncateTooltip !== false && truncation.isTruncated;
|
|
3298
|
+
const isTooltipEnabled = truncateTooltip !== false && truncation.isTruncated;
|
|
3300
3299
|
const tooltip = useTooltip({
|
|
3301
|
-
placement:
|
|
3300
|
+
placement: truncateTooltip === false ? "above" : truncateTooltip,
|
|
3302
3301
|
isEnabled: isTooltipEnabled
|
|
3303
3302
|
});
|
|
3304
3303
|
const tooltipRef = tooltip.ref;
|
|
@@ -3391,7 +3390,7 @@ function BaseText({
|
|
|
3391
3390
|
weight,
|
|
3392
3391
|
display = "inline",
|
|
3393
3392
|
maxLines: _maxLines,
|
|
3394
|
-
|
|
3393
|
+
truncateTooltip: _truncateTooltip,
|
|
3395
3394
|
wordBreak: _wordBreak,
|
|
3396
3395
|
textWrap,
|
|
3397
3396
|
hasStrikethrough = false,
|
|
@@ -3437,7 +3436,7 @@ function TruncatedText({
|
|
|
3437
3436
|
weight,
|
|
3438
3437
|
display: _display,
|
|
3439
3438
|
maxLines = 1,
|
|
3440
|
-
|
|
3439
|
+
truncateTooltip = "above",
|
|
3441
3440
|
wordBreak,
|
|
3442
3441
|
textWrap,
|
|
3443
3442
|
hasStrikethrough = false,
|
|
@@ -3454,10 +3453,9 @@ function TruncatedText({
|
|
|
3454
3453
|
const truncation = useTruncation({ maxLines });
|
|
3455
3454
|
const resolvedColor = color ?? defaultColorByType[type];
|
|
3456
3455
|
const resolvedWordBreak = wordBreak ?? "break-word";
|
|
3457
|
-
const
|
|
3458
|
-
const isTooltipEnabled = hasTruncateTooltip !== false && truncation.isTruncated;
|
|
3456
|
+
const isTooltipEnabled = truncateTooltip !== false && truncation.isTruncated;
|
|
3459
3457
|
const tooltip = useTooltip({
|
|
3460
|
-
placement:
|
|
3458
|
+
placement: truncateTooltip === false ? "above" : truncateTooltip,
|
|
3461
3459
|
isEnabled: isTooltipEnabled
|
|
3462
3460
|
});
|
|
3463
3461
|
const tooltipRef = tooltip.ref;
|
|
@@ -3534,5 +3532,5 @@ function Text(props) {
|
|
|
3534
3532
|
Text.displayName = "Text";
|
|
3535
3533
|
|
|
3536
3534
|
export { Heading, Text, token };
|
|
3537
|
-
//# sourceMappingURL=chunk-
|
|
3538
|
-
//# sourceMappingURL=chunk-
|
|
3535
|
+
//# sourceMappingURL=chunk-NXTDP6AX.js.map
|
|
3536
|
+
//# sourceMappingURL=chunk-NXTDP6AX.js.map
|