@etus/ui 0.4.0-beta.17 → 0.4.0-beta.19
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/dist/{chunk-U2CXFKRK.js → chunk-2SUZS6GZ.js} +4 -4
- package/dist/{chunk-U2CXFKRK.js.map → chunk-2SUZS6GZ.js.map} +1 -1
- package/dist/{chunk-UPYT2XM5.js → chunk-2XNMKALT.js} +3 -3
- package/dist/{chunk-UPYT2XM5.js.map → chunk-2XNMKALT.js.map} +1 -1
- package/dist/{chunk-SM4AZOEP.js → chunk-3MOBFZJM.js} +4 -4
- package/dist/{chunk-SM4AZOEP.js.map → chunk-3MOBFZJM.js.map} +1 -1
- package/dist/{chunk-ZP4HYVDG.js → chunk-3R6MY3YJ.js} +4 -4
- package/dist/{chunk-ZP4HYVDG.js.map → chunk-3R6MY3YJ.js.map} +1 -1
- package/dist/{chunk-EVUHEBWX.js → chunk-447INBQP.js} +3 -3
- package/dist/{chunk-EVUHEBWX.js.map → chunk-447INBQP.js.map} +1 -1
- package/dist/{chunk-F7XARQUW.js → chunk-4LZ53BAG.js} +3 -3
- package/dist/{chunk-F7XARQUW.js.map → chunk-4LZ53BAG.js.map} +1 -1
- package/dist/{chunk-CYIFWQ5Y.js → chunk-4OWRNWHW.js} +3 -3
- package/dist/{chunk-CYIFWQ5Y.js.map → chunk-4OWRNWHW.js.map} +1 -1
- package/dist/{chunk-OQCGQG47.js → chunk-4RNPI3LU.js} +3 -3
- package/dist/{chunk-OQCGQG47.js.map → chunk-4RNPI3LU.js.map} +1 -1
- package/dist/{chunk-N4UTBJRY.js → chunk-4SFBDK4E.js} +4 -4
- package/dist/{chunk-N4UTBJRY.js.map → chunk-4SFBDK4E.js.map} +1 -1
- package/dist/{chunk-B7ZLPQSO.js → chunk-4XXAIWQ4.js} +3 -3
- package/dist/{chunk-B7ZLPQSO.js.map → chunk-4XXAIWQ4.js.map} +1 -1
- package/dist/{chunk-D2V2HKLX.js → chunk-5ETVWWA5.js} +3 -3
- package/dist/{chunk-D2V2HKLX.js.map → chunk-5ETVWWA5.js.map} +1 -1
- package/dist/{chunk-U4H3XHSI.js → chunk-5GV4LDX7.js} +4 -4
- package/dist/{chunk-U4H3XHSI.js.map → chunk-5GV4LDX7.js.map} +1 -1
- package/dist/{chunk-BFBGESUI.js → chunk-5MJQ5XSR.js} +4 -4
- package/dist/{chunk-BFBGESUI.js.map → chunk-5MJQ5XSR.js.map} +1 -1
- package/dist/{chunk-GKMR5SVC.js → chunk-5QDKJMUA.js} +3 -3
- package/dist/{chunk-GKMR5SVC.js.map → chunk-5QDKJMUA.js.map} +1 -1
- package/dist/{chunk-3NFQXZHO.js → chunk-5T7EKOJ5.js} +3 -3
- package/dist/{chunk-3NFQXZHO.js.map → chunk-5T7EKOJ5.js.map} +1 -1
- package/dist/{chunk-WBE6VQOO.js → chunk-5W3T767A.js} +3 -3
- package/dist/{chunk-WBE6VQOO.js.map → chunk-5W3T767A.js.map} +1 -1
- package/dist/{chunk-XYYOV5GW.js → chunk-5YUUE5JJ.js} +5 -5
- package/dist/{chunk-XYYOV5GW.js.map → chunk-5YUUE5JJ.js.map} +1 -1
- package/dist/{chunk-D6TH3EGA.js → chunk-627ZZ6HO.js} +6 -6
- package/dist/{chunk-D6TH3EGA.js.map → chunk-627ZZ6HO.js.map} +1 -1
- package/dist/{chunk-OXDWUKGP.js → chunk-6G5QK3SU.js} +5 -5
- package/dist/chunk-6G5QK3SU.js.map +1 -0
- package/dist/{chunk-U74PNG4S.js → chunk-6QVXMYKH.js} +4 -4
- package/dist/{chunk-U74PNG4S.js.map → chunk-6QVXMYKH.js.map} +1 -1
- package/dist/{chunk-NWVYQYKK.js → chunk-6VEQLD2P.js} +3 -3
- package/dist/{chunk-NWVYQYKK.js.map → chunk-6VEQLD2P.js.map} +1 -1
- package/dist/{chunk-S6ORCWM2.js → chunk-73DDLKBG.js} +3 -3
- package/dist/{chunk-S6ORCWM2.js.map → chunk-73DDLKBG.js.map} +1 -1
- package/dist/{chunk-E27SQ54A.js → chunk-7AR5QRRX.js} +3 -3
- package/dist/{chunk-E27SQ54A.js.map → chunk-7AR5QRRX.js.map} +1 -1
- package/dist/{chunk-3MJNJKAF.js → chunk-7IKX4AFY.js} +4 -4
- package/dist/{chunk-3MJNJKAF.js.map → chunk-7IKX4AFY.js.map} +1 -1
- package/dist/{chunk-A7YNTSVU.js → chunk-7PX3WBR3.js} +3 -3
- package/dist/{chunk-A7YNTSVU.js.map → chunk-7PX3WBR3.js.map} +1 -1
- package/dist/{chunk-EYSTEGV5.js → chunk-7QEFKWUR.js} +10 -10
- package/dist/{chunk-EYSTEGV5.js.map → chunk-7QEFKWUR.js.map} +1 -1
- package/dist/{chunk-Z4KW5VW6.js → chunk-7TX5X4EP.js} +6 -6
- package/dist/{chunk-Z4KW5VW6.js.map → chunk-7TX5X4EP.js.map} +1 -1
- package/dist/{chunk-BQMQULAC.js → chunk-7XJQYAGY.js} +4 -4
- package/dist/{chunk-BQMQULAC.js.map → chunk-7XJQYAGY.js.map} +1 -1
- package/dist/{chunk-2ROFZG3A.js → chunk-7Y325TBV.js} +4 -4
- package/dist/{chunk-2ROFZG3A.js.map → chunk-7Y325TBV.js.map} +1 -1
- package/dist/{chunk-4RSHPKHB.js → chunk-7YZ7HNXX.js} +4 -4
- package/dist/{chunk-4RSHPKHB.js.map → chunk-7YZ7HNXX.js.map} +1 -1
- package/dist/{chunk-YACIRNVP.js → chunk-AD4RW2JV.js} +3 -3
- package/dist/{chunk-YACIRNVP.js.map → chunk-AD4RW2JV.js.map} +1 -1
- package/dist/{chunk-YMYXWHDU.js → chunk-ADX6C3V7.js} +3 -3
- package/dist/{chunk-YMYXWHDU.js.map → chunk-ADX6C3V7.js.map} +1 -1
- package/dist/{chunk-CKD4UBV6.js → chunk-AJUOTABG.js} +4 -4
- package/dist/{chunk-CKD4UBV6.js.map → chunk-AJUOTABG.js.map} +1 -1
- package/dist/{chunk-G5TWK7L3.js → chunk-AP4ZM3DV.js} +3 -3
- package/dist/{chunk-G5TWK7L3.js.map → chunk-AP4ZM3DV.js.map} +1 -1
- package/dist/{chunk-U6EOAIPK.js → chunk-ARJAIH7Q.js} +4 -4
- package/dist/chunk-ARJAIH7Q.js.map +1 -0
- package/dist/{chunk-YCZ6M6EF.js → chunk-BBKDABQK.js} +3 -3
- package/dist/{chunk-YCZ6M6EF.js.map → chunk-BBKDABQK.js.map} +1 -1
- package/dist/{chunk-GPW57XOW.js → chunk-BSTUCHL4.js} +4 -4
- package/dist/{chunk-GPW57XOW.js.map → chunk-BSTUCHL4.js.map} +1 -1
- package/dist/{chunk-WKWLKGNI.js → chunk-BUCXPZYE.js} +6 -6
- package/dist/chunk-BUCXPZYE.js.map +1 -0
- package/dist/{chunk-ESLSPRYA.js → chunk-C2MAX4YK.js} +3 -3
- package/dist/{chunk-ESLSPRYA.js.map → chunk-C2MAX4YK.js.map} +1 -1
- package/dist/{chunk-2FJJOHHH.js → chunk-C34UNXMN.js} +3 -3
- package/dist/{chunk-2FJJOHHH.js.map → chunk-C34UNXMN.js.map} +1 -1
- package/dist/{chunk-AEHYYTFW.js → chunk-CV77MF4G.js} +3 -3
- package/dist/{chunk-AEHYYTFW.js.map → chunk-CV77MF4G.js.map} +1 -1
- package/dist/{chunk-MQ2446N7.js → chunk-DGOW65KM.js} +3 -3
- package/dist/{chunk-MQ2446N7.js.map → chunk-DGOW65KM.js.map} +1 -1
- package/dist/{chunk-U2R47SPY.js → chunk-DJHDCDU6.js} +4 -4
- package/dist/{chunk-U2R47SPY.js.map → chunk-DJHDCDU6.js.map} +1 -1
- package/dist/{chunk-5GE3BQA7.js → chunk-DQGBTZRX.js} +7 -7
- package/dist/chunk-DQGBTZRX.js.map +1 -0
- package/dist/{chunk-2IFYXJ3H.js → chunk-DRIEZH7R.js} +3 -3
- package/dist/{chunk-2IFYXJ3H.js.map → chunk-DRIEZH7R.js.map} +1 -1
- package/dist/{chunk-VWW3DJKI.js → chunk-E6SAO2CY.js} +3 -3
- package/dist/{chunk-VWW3DJKI.js.map → chunk-E6SAO2CY.js.map} +1 -1
- package/dist/{chunk-NCT5WXKG.js → chunk-EDSIOUUR.js} +4 -4
- package/dist/{chunk-NCT5WXKG.js.map → chunk-EDSIOUUR.js.map} +1 -1
- package/dist/{chunk-TAZPML2P.js → chunk-ELRIFGMN.js} +4 -4
- package/dist/{chunk-TAZPML2P.js.map → chunk-ELRIFGMN.js.map} +1 -1
- package/dist/{chunk-IMUBWKZC.js → chunk-EO4NGM5W.js} +4 -4
- package/dist/{chunk-IMUBWKZC.js.map → chunk-EO4NGM5W.js.map} +1 -1
- package/dist/{chunk-AFCSDND5.js → chunk-EQ4YAADN.js} +3 -3
- package/dist/{chunk-AFCSDND5.js.map → chunk-EQ4YAADN.js.map} +1 -1
- package/dist/{chunk-VBJ26PZJ.js → chunk-EZYXD2YI.js} +4 -4
- package/dist/{chunk-VBJ26PZJ.js.map → chunk-EZYXD2YI.js.map} +1 -1
- package/dist/{chunk-HJ4E6YPW.js → chunk-F3ETIDS7.js} +4 -4
- package/dist/{chunk-HJ4E6YPW.js.map → chunk-F3ETIDS7.js.map} +1 -1
- package/dist/{chunk-LNY2EXOV.js → chunk-F3WDMYZ4.js} +3 -3
- package/dist/{chunk-LNY2EXOV.js.map → chunk-F3WDMYZ4.js.map} +1 -1
- package/dist/{chunk-FPCRGFNY.js → chunk-FRKB4Z2P.js} +3 -3
- package/dist/{chunk-FPCRGFNY.js.map → chunk-FRKB4Z2P.js.map} +1 -1
- package/dist/{chunk-VAVE4ZJF.js → chunk-FVRSXJKS.js} +4 -4
- package/dist/chunk-FVRSXJKS.js.map +1 -0
- package/dist/{chunk-X3AXEE3S.js → chunk-FXFVFSG5.js} +5 -5
- package/dist/{chunk-X3AXEE3S.js.map → chunk-FXFVFSG5.js.map} +1 -1
- package/dist/{chunk-IFHF4UES.js → chunk-GDZECJFS.js} +12 -12
- package/dist/chunk-GDZECJFS.js.map +1 -0
- package/dist/{chunk-7J5OM4ZD.js → chunk-GLHKHYJY.js} +8 -8
- package/dist/{chunk-7J5OM4ZD.js.map → chunk-GLHKHYJY.js.map} +1 -1
- package/dist/{chunk-4KOJTZVU.js → chunk-GRODCJS4.js} +29 -29
- package/dist/chunk-GRODCJS4.js.map +1 -0
- package/dist/{chunk-TNDW52VZ.js → chunk-GVNG5ME6.js} +36 -18
- package/dist/chunk-GVNG5ME6.js.map +1 -0
- package/dist/{chunk-5J5OL4IV.js → chunk-GWSM2XNV.js} +3 -3
- package/dist/{chunk-5J5OL4IV.js.map → chunk-GWSM2XNV.js.map} +1 -1
- package/dist/{chunk-2NY6DDLO.js → chunk-H32A6UPL.js} +3 -3
- package/dist/{chunk-2NY6DDLO.js.map → chunk-H32A6UPL.js.map} +1 -1
- package/dist/{chunk-W7S7GPU5.js → chunk-HHWUROMA.js} +6 -6
- package/dist/{chunk-W7S7GPU5.js.map → chunk-HHWUROMA.js.map} +1 -1
- package/dist/{chunk-CNRV2IGH.js → chunk-HM6TEHA6.js} +3 -3
- package/dist/{chunk-CNRV2IGH.js.map → chunk-HM6TEHA6.js.map} +1 -1
- package/dist/{chunk-4GVOOXYD.js → chunk-HNQX6ZG7.js} +7 -7
- package/dist/chunk-HNQX6ZG7.js.map +1 -0
- package/dist/{chunk-HAEZLC7V.js → chunk-I5RDX6O3.js} +3 -3
- package/dist/{chunk-HAEZLC7V.js.map → chunk-I5RDX6O3.js.map} +1 -1
- package/dist/{chunk-P27ERD6W.js → chunk-IKLFWGFS.js} +70 -52
- package/dist/chunk-IKLFWGFS.js.map +1 -0
- package/dist/{chunk-DL7D5F7B.js → chunk-IPCT4YZT.js} +3 -3
- package/dist/{chunk-DL7D5F7B.js.map → chunk-IPCT4YZT.js.map} +1 -1
- package/dist/{chunk-BIUVOZQG.js → chunk-IPDAFW4F.js} +3 -3
- package/dist/{chunk-BIUVOZQG.js.map → chunk-IPDAFW4F.js.map} +1 -1
- package/dist/{chunk-G2MAGZHQ.js → chunk-IXZBH33I.js} +3 -3
- package/dist/{chunk-G2MAGZHQ.js.map → chunk-IXZBH33I.js.map} +1 -1
- package/dist/{chunk-XOGMDABS.js → chunk-JDETM3FL.js} +9 -9
- package/dist/chunk-JDETM3FL.js.map +1 -0
- package/dist/{chunk-R3HUGCGR.js → chunk-JE46MFMN.js} +6 -6
- package/dist/{chunk-R3HUGCGR.js.map → chunk-JE46MFMN.js.map} +1 -1
- package/dist/{chunk-3JCV72FO.js → chunk-JFV7CNBP.js} +4 -4
- package/dist/{chunk-3JCV72FO.js.map → chunk-JFV7CNBP.js.map} +1 -1
- package/dist/{chunk-7RTHGI6E.js → chunk-JPRHMMY6.js} +3 -3
- package/dist/{chunk-7RTHGI6E.js.map → chunk-JPRHMMY6.js.map} +1 -1
- package/dist/{chunk-G2V7D7VC.js → chunk-JUSPLVWO.js} +5 -5
- package/dist/{chunk-G2V7D7VC.js.map → chunk-JUSPLVWO.js.map} +1 -1
- package/dist/{chunk-FRDYXDAE.js → chunk-JUZ4JQWH.js} +3 -3
- package/dist/{chunk-FRDYXDAE.js.map → chunk-JUZ4JQWH.js.map} +1 -1
- package/dist/{chunk-6SHOL6WR.js → chunk-JVTB3NTP.js} +3 -3
- package/dist/{chunk-6SHOL6WR.js.map → chunk-JVTB3NTP.js.map} +1 -1
- package/dist/{chunk-XETKCF73.js → chunk-JXEIRIU4.js} +3 -3
- package/dist/{chunk-XETKCF73.js.map → chunk-JXEIRIU4.js.map} +1 -1
- package/dist/{chunk-7Y2UQMX6.js → chunk-JYYB6F5O.js} +37 -37
- package/dist/chunk-JYYB6F5O.js.map +1 -0
- package/dist/{chunk-V7WEN4SD.js → chunk-JZA45LEV.js} +3 -3
- package/dist/{chunk-V7WEN4SD.js.map → chunk-JZA45LEV.js.map} +1 -1
- package/dist/{chunk-FCSYPOHF.js → chunk-K44K3EHW.js} +3 -3
- package/dist/{chunk-FCSYPOHF.js.map → chunk-K44K3EHW.js.map} +1 -1
- package/dist/{chunk-PWCMCMDN.js → chunk-K4UCALQQ.js} +4 -4
- package/dist/{chunk-PWCMCMDN.js.map → chunk-K4UCALQQ.js.map} +1 -1
- package/dist/{chunk-OBRJXVWO.js → chunk-KBU4KJKC.js} +7 -7
- package/dist/{chunk-OBRJXVWO.js.map → chunk-KBU4KJKC.js.map} +1 -1
- package/dist/{chunk-JRWQHBJC.js → chunk-KDNTSZF5.js} +4 -4
- package/dist/{chunk-JRWQHBJC.js.map → chunk-KDNTSZF5.js.map} +1 -1
- package/dist/{chunk-3NSIUZGP.js → chunk-KHCHATTD.js} +5 -5
- package/dist/{chunk-3NSIUZGP.js.map → chunk-KHCHATTD.js.map} +1 -1
- package/dist/{chunk-57KTYE5H.js → chunk-KHJIUHHM.js} +3 -3
- package/dist/{chunk-57KTYE5H.js.map → chunk-KHJIUHHM.js.map} +1 -1
- package/dist/{chunk-TQBUBD3E.js → chunk-KLFYTLF3.js} +4 -4
- package/dist/{chunk-TQBUBD3E.js.map → chunk-KLFYTLF3.js.map} +1 -1
- package/dist/{chunk-W3QUVCRK.js → chunk-KXJ3SEW7.js} +3 -3
- package/dist/{chunk-W3QUVCRK.js.map → chunk-KXJ3SEW7.js.map} +1 -1
- package/dist/{chunk-7TF5PVEU.js → chunk-L4OQ6BJ5.js} +7 -7
- package/dist/chunk-L4OQ6BJ5.js.map +1 -0
- package/dist/{chunk-3L5G7VI2.js → chunk-LCBB3N5H.js} +4 -4
- package/dist/chunk-LCBB3N5H.js.map +1 -0
- package/dist/{chunk-BS5XDYOE.js → chunk-LDK6ADKM.js} +6 -6
- package/dist/{chunk-BS5XDYOE.js.map → chunk-LDK6ADKM.js.map} +1 -1
- package/dist/{chunk-K4MYVFWQ.js → chunk-LP6JYJQN.js} +4 -4
- package/dist/{chunk-K4MYVFWQ.js.map → chunk-LP6JYJQN.js.map} +1 -1
- package/dist/{chunk-G7PBPX3K.js → chunk-LRE3LJMW.js} +5 -5
- package/dist/{chunk-G7PBPX3K.js.map → chunk-LRE3LJMW.js.map} +1 -1
- package/dist/{chunk-LQVQ7SHG.js → chunk-LSRKDZW4.js} +4 -4
- package/dist/{chunk-LQVQ7SHG.js.map → chunk-LSRKDZW4.js.map} +1 -1
- package/dist/{chunk-H5N3VPBG.js → chunk-MGIGDALC.js} +4 -4
- package/dist/{chunk-H5N3VPBG.js.map → chunk-MGIGDALC.js.map} +1 -1
- package/dist/{chunk-WXBC3D2N.js → chunk-MNYU5MHO.js} +7 -7
- package/dist/{chunk-WXBC3D2N.js.map → chunk-MNYU5MHO.js.map} +1 -1
- package/dist/{chunk-6GWO7JNP.js → chunk-MXBDOYQL.js} +4 -4
- package/dist/{chunk-6GWO7JNP.js.map → chunk-MXBDOYQL.js.map} +1 -1
- package/dist/{chunk-37KLBMFQ.js → chunk-N2DAVD4Y.js} +3 -3
- package/dist/{chunk-37KLBMFQ.js.map → chunk-N2DAVD4Y.js.map} +1 -1
- package/dist/{chunk-3KOLK3OB.js → chunk-N5YGAESZ.js} +5 -5
- package/dist/{chunk-3KOLK3OB.js.map → chunk-N5YGAESZ.js.map} +1 -1
- package/dist/{chunk-W3JVNX35.js → chunk-N7VMQWM3.js} +15 -10
- package/dist/chunk-N7VMQWM3.js.map +1 -0
- package/dist/{chunk-5KTMPLDK.js → chunk-NAI3TX52.js} +3 -3
- package/dist/{chunk-5KTMPLDK.js.map → chunk-NAI3TX52.js.map} +1 -1
- package/dist/{chunk-QHKOBGLW.js → chunk-NGX3ITG4.js} +3 -3
- package/dist/{chunk-QHKOBGLW.js.map → chunk-NGX3ITG4.js.map} +1 -1
- package/dist/{chunk-5SUD32RK.js → chunk-NHUUSXBL.js} +3 -3
- package/dist/{chunk-5SUD32RK.js.map → chunk-NHUUSXBL.js.map} +1 -1
- package/dist/{chunk-IOWHM7ZY.js → chunk-NIRTZLZL.js} +4 -4
- package/dist/{chunk-IOWHM7ZY.js.map → chunk-NIRTZLZL.js.map} +1 -1
- package/dist/{chunk-GGUWEAYD.js → chunk-NLPVF34P.js} +4 -4
- package/dist/{chunk-GGUWEAYD.js.map → chunk-NLPVF34P.js.map} +1 -1
- package/dist/{chunk-ZPAWUKJI.js → chunk-NNWMBVCB.js} +4 -4
- package/dist/{chunk-ZPAWUKJI.js.map → chunk-NNWMBVCB.js.map} +1 -1
- package/dist/{chunk-H4ANCFZG.js → chunk-NUA54ABI.js} +4 -4
- package/dist/{chunk-H4ANCFZG.js.map → chunk-NUA54ABI.js.map} +1 -1
- package/dist/{chunk-ZPCELVWJ.js → chunk-NY2WZ4P2.js} +4 -4
- package/dist/{chunk-ZPCELVWJ.js.map → chunk-NY2WZ4P2.js.map} +1 -1
- package/dist/{chunk-BECPEVUL.js → chunk-O6LFU3KB.js} +3 -3
- package/dist/{chunk-BECPEVUL.js.map → chunk-O6LFU3KB.js.map} +1 -1
- package/dist/{chunk-HXHB2CK5.js → chunk-OAES72MK.js} +3 -3
- package/dist/{chunk-HXHB2CK5.js.map → chunk-OAES72MK.js.map} +1 -1
- package/dist/{chunk-NGR4HFVA.js → chunk-OCH7GGZF.js} +3 -3
- package/dist/{chunk-NGR4HFVA.js.map → chunk-OCH7GGZF.js.map} +1 -1
- package/dist/{chunk-Y4RKKQMB.js → chunk-ONN5XVYC.js} +4 -4
- package/dist/chunk-ONN5XVYC.js.map +1 -0
- package/dist/{chunk-GL56KIFL.js → chunk-OWZ3MZ5C.js} +4 -4
- package/dist/{chunk-GL56KIFL.js.map → chunk-OWZ3MZ5C.js.map} +1 -1
- package/dist/{chunk-MK6ID2HI.js → chunk-OXO6SKJO.js} +3 -3
- package/dist/{chunk-MK6ID2HI.js.map → chunk-OXO6SKJO.js.map} +1 -1
- package/dist/{chunk-T6XRYT6Q.js → chunk-P4WMDGAQ.js} +4 -4
- package/dist/{chunk-T6XRYT6Q.js.map → chunk-P4WMDGAQ.js.map} +1 -1
- package/dist/{chunk-NXQ25PKF.js → chunk-PBZI5XNV.js} +8 -8
- package/dist/chunk-PBZI5XNV.js.map +1 -0
- package/dist/{chunk-HI3T55XK.js → chunk-PEX7FCZC.js} +3 -3
- package/dist/{chunk-HI3T55XK.js.map → chunk-PEX7FCZC.js.map} +1 -1
- package/dist/{chunk-WMG2MMJF.js → chunk-PI4WGIPG.js} +3 -3
- package/dist/{chunk-WMG2MMJF.js.map → chunk-PI4WGIPG.js.map} +1 -1
- package/dist/{chunk-P7D6S6GX.js → chunk-PTXC4KPQ.js} +39 -5
- package/dist/chunk-PTXC4KPQ.js.map +1 -0
- package/dist/{chunk-UYC7M3FM.js → chunk-PVIIIQJI.js} +6 -6
- package/dist/{chunk-UYC7M3FM.js.map → chunk-PVIIIQJI.js.map} +1 -1
- package/dist/{chunk-E2TI5V67.js → chunk-PXR6CZIL.js} +4 -4
- package/dist/{chunk-E2TI5V67.js.map → chunk-PXR6CZIL.js.map} +1 -1
- package/dist/{chunk-KDJCZXLB.js → chunk-PZSKZFVO.js} +3 -3
- package/dist/{chunk-KDJCZXLB.js.map → chunk-PZSKZFVO.js.map} +1 -1
- package/dist/{chunk-DNAGXK2C.js → chunk-Q3JCNSPU.js} +4 -4
- package/dist/{chunk-DNAGXK2C.js.map → chunk-Q3JCNSPU.js.map} +1 -1
- package/dist/{chunk-JUTPDS4E.js → chunk-QD2ZS5DU.js} +4 -4
- package/dist/{chunk-JUTPDS4E.js.map → chunk-QD2ZS5DU.js.map} +1 -1
- package/dist/{chunk-3NLWCX2F.js → chunk-QJOWG2D4.js} +5 -5
- package/dist/{chunk-3NLWCX2F.js.map → chunk-QJOWG2D4.js.map} +1 -1
- package/dist/{chunk-Q43KJP5A.js → chunk-QLYH3GCV.js} +8 -8
- package/dist/{chunk-Q43KJP5A.js.map → chunk-QLYH3GCV.js.map} +1 -1
- package/dist/{chunk-IRIIK3BU.js → chunk-QO6TOE45.js} +11 -11
- package/dist/chunk-QO6TOE45.js.map +1 -0
- package/dist/{chunk-66TBTTZO.js → chunk-QWWA4FZP.js} +15 -15
- package/dist/chunk-QWWA4FZP.js.map +1 -0
- package/dist/{chunk-2YSZPUQZ.js → chunk-QXET2TML.js} +4 -4
- package/dist/{chunk-2YSZPUQZ.js.map → chunk-QXET2TML.js.map} +1 -1
- package/dist/{chunk-2VHARFMD.js → chunk-QZ7SGO7L.js} +3 -3
- package/dist/{chunk-2VHARFMD.js.map → chunk-QZ7SGO7L.js.map} +1 -1
- package/dist/{chunk-SUU3HNOX.js → chunk-R42LSLJL.js} +6 -6
- package/dist/{chunk-SUU3HNOX.js.map → chunk-R42LSLJL.js.map} +1 -1
- package/dist/{chunk-EVZ2GZU4.js → chunk-RMJVCJ6U.js} +3 -3
- package/dist/{chunk-EVZ2GZU4.js.map → chunk-RMJVCJ6U.js.map} +1 -1
- package/dist/{chunk-XLTSCY22.js → chunk-ROPW65RD.js} +5 -5
- package/dist/chunk-ROPW65RD.js.map +1 -0
- package/dist/{chunk-6ZAMTPGN.js → chunk-RQBYBBMP.js} +4 -4
- package/dist/{chunk-6ZAMTPGN.js.map → chunk-RQBYBBMP.js.map} +1 -1
- package/dist/chunk-RVAYDRMA.js +31 -0
- package/dist/chunk-RVAYDRMA.js.map +1 -0
- package/dist/{chunk-ARNVOHVW.js → chunk-S4P7JIQ2.js} +3 -3
- package/dist/{chunk-ARNVOHVW.js.map → chunk-S4P7JIQ2.js.map} +1 -1
- package/dist/{chunk-UPK5B2FL.js → chunk-S6BREP2G.js} +7 -7
- package/dist/chunk-S6BREP2G.js.map +1 -0
- package/dist/{chunk-Y5GO2F6P.js → chunk-SA3IQI3Y.js} +3 -3
- package/dist/{chunk-Y5GO2F6P.js.map → chunk-SA3IQI3Y.js.map} +1 -1
- package/dist/{chunk-3W7FXRO5.js → chunk-SKI25Q7O.js} +6 -6
- package/dist/{chunk-3W7FXRO5.js.map → chunk-SKI25Q7O.js.map} +1 -1
- package/dist/{chunk-LLI3JFJL.js → chunk-SSKSWSVO.js} +5 -5
- package/dist/{chunk-LLI3JFJL.js.map → chunk-SSKSWSVO.js.map} +1 -1
- package/dist/{chunk-VLDAHAG6.js → chunk-STADVFL2.js} +5 -5
- package/dist/{chunk-VLDAHAG6.js.map → chunk-STADVFL2.js.map} +1 -1
- package/dist/{chunk-UA3OQAHJ.js → chunk-SX63UD5X.js} +3 -3
- package/dist/{chunk-UA3OQAHJ.js.map → chunk-SX63UD5X.js.map} +1 -1
- package/dist/{chunk-YZY35OHQ.js → chunk-SXSR2VRG.js} +4 -4
- package/dist/{chunk-YZY35OHQ.js.map → chunk-SXSR2VRG.js.map} +1 -1
- package/dist/{chunk-DYDXGWH2.js → chunk-T3LWBCVR.js} +4 -4
- package/dist/chunk-T3LWBCVR.js.map +1 -0
- package/dist/{chunk-AR3OXNPL.js → chunk-TDANAN5A.js} +3 -3
- package/dist/{chunk-AR3OXNPL.js.map → chunk-TDANAN5A.js.map} +1 -1
- package/dist/{chunk-7ZJ32KRQ.js → chunk-TEVGCTUN.js} +3 -3
- package/dist/{chunk-7ZJ32KRQ.js.map → chunk-TEVGCTUN.js.map} +1 -1
- package/dist/{chunk-GAMOVEZD.js → chunk-TIPKU427.js} +3 -3
- package/dist/{chunk-GAMOVEZD.js.map → chunk-TIPKU427.js.map} +1 -1
- package/dist/{chunk-2Q4I4VDB.js → chunk-TK5WS675.js} +3 -3
- package/dist/{chunk-2Q4I4VDB.js.map → chunk-TK5WS675.js.map} +1 -1
- package/dist/{chunk-YUHPTV2A.js → chunk-TNSMTINE.js} +4 -4
- package/dist/{chunk-YUHPTV2A.js.map → chunk-TNSMTINE.js.map} +1 -1
- package/dist/{chunk-VT4IMHGE.js → chunk-TRTVYFOF.js} +5 -5
- package/dist/chunk-TRTVYFOF.js.map +1 -0
- package/dist/{chunk-46ESMCEQ.js → chunk-TSE3PKWQ.js} +6 -6
- package/dist/chunk-TSE3PKWQ.js.map +1 -0
- package/dist/{chunk-3BBOSSDG.js → chunk-U7TPJMGY.js} +4 -4
- package/dist/{chunk-3BBOSSDG.js.map → chunk-U7TPJMGY.js.map} +1 -1
- package/dist/{chunk-5I7AXWJU.js → chunk-UC5J6GWG.js} +5 -5
- package/dist/{chunk-5I7AXWJU.js.map → chunk-UC5J6GWG.js.map} +1 -1
- package/dist/{chunk-ZKK7L7H7.js → chunk-UNHPLKMR.js} +3 -3
- package/dist/{chunk-ZKK7L7H7.js.map → chunk-UNHPLKMR.js.map} +1 -1
- package/dist/{chunk-I7ZLEC7Y.js → chunk-UZEJ3ZVR.js} +3 -3
- package/dist/{chunk-I7ZLEC7Y.js.map → chunk-UZEJ3ZVR.js.map} +1 -1
- package/dist/{chunk-SXPBKGLT.js → chunk-UZZCEQH4.js} +4 -4
- package/dist/{chunk-SXPBKGLT.js.map → chunk-UZZCEQH4.js.map} +1 -1
- package/dist/{chunk-AEE5GDNA.js → chunk-V4NSLSCA.js} +4 -4
- package/dist/{chunk-AEE5GDNA.js.map → chunk-V4NSLSCA.js.map} +1 -1
- package/dist/{chunk-IZC5YFGO.js → chunk-V57DERRV.js} +14 -7
- package/dist/chunk-V57DERRV.js.map +1 -0
- package/dist/{chunk-VZZ3HP7G.js → chunk-VHJ6ALIE.js} +4 -4
- package/dist/{chunk-VZZ3HP7G.js.map → chunk-VHJ6ALIE.js.map} +1 -1
- package/dist/{chunk-N3I6GA4I.js → chunk-WG34IXUV.js} +3 -3
- package/dist/{chunk-N3I6GA4I.js.map → chunk-WG34IXUV.js.map} +1 -1
- package/dist/{chunk-OEXQ2MOY.js → chunk-WGKOYZRI.js} +4 -4
- package/dist/{chunk-OEXQ2MOY.js.map → chunk-WGKOYZRI.js.map} +1 -1
- package/dist/{chunk-6DN2UAIR.js → chunk-WGSVSZ7V.js} +3 -3
- package/dist/{chunk-6DN2UAIR.js.map → chunk-WGSVSZ7V.js.map} +1 -1
- package/dist/{chunk-X4YUWX7H.js → chunk-WK324C6D.js} +4 -4
- package/dist/{chunk-X4YUWX7H.js.map → chunk-WK324C6D.js.map} +1 -1
- package/dist/{chunk-N2WITPE2.js → chunk-WOP5OWLG.js} +3 -3
- package/dist/{chunk-N2WITPE2.js.map → chunk-WOP5OWLG.js.map} +1 -1
- package/dist/{chunk-JPA2VQRW.js → chunk-WSDWJX4Y.js} +4 -4
- package/dist/{chunk-JPA2VQRW.js.map → chunk-WSDWJX4Y.js.map} +1 -1
- package/dist/{chunk-2XJWE2XR.js → chunk-WUS45IZW.js} +4 -4
- package/dist/{chunk-2XJWE2XR.js.map → chunk-WUS45IZW.js.map} +1 -1
- package/dist/{chunk-B3BDIM4H.js → chunk-WVOZYDH3.js} +3 -3
- package/dist/{chunk-B3BDIM4H.js.map → chunk-WVOZYDH3.js.map} +1 -1
- package/dist/{chunk-K45MMHLA.js → chunk-WWK7UIKK.js} +5 -5
- package/dist/{chunk-K45MMHLA.js.map → chunk-WWK7UIKK.js.map} +1 -1
- package/dist/{chunk-NCLOPI6U.js → chunk-X2EMALTZ.js} +3 -3
- package/dist/{chunk-NCLOPI6U.js.map → chunk-X2EMALTZ.js.map} +1 -1
- package/dist/{chunk-PK5O62XD.js → chunk-X4CJFD6D.js} +3 -3
- package/dist/{chunk-PK5O62XD.js.map → chunk-X4CJFD6D.js.map} +1 -1
- package/dist/{chunk-JWXK4TMX.js → chunk-XEQGATVF.js} +3 -3
- package/dist/{chunk-JWXK4TMX.js.map → chunk-XEQGATVF.js.map} +1 -1
- package/dist/{chunk-B6KQKQ4S.js → chunk-XMUD3LG7.js} +3 -3
- package/dist/{chunk-B6KQKQ4S.js.map → chunk-XMUD3LG7.js.map} +1 -1
- package/dist/{chunk-5ZEYTBTU.js → chunk-XWBVIBN4.js} +3 -3
- package/dist/{chunk-5ZEYTBTU.js.map → chunk-XWBVIBN4.js.map} +1 -1
- package/dist/{chunk-7I6KK6QE.js → chunk-XXWCMY2G.js} +3 -3
- package/dist/{chunk-7I6KK6QE.js.map → chunk-XXWCMY2G.js.map} +1 -1
- package/dist/{chunk-LFN7UHDT.js → chunk-Y4FEW7SR.js} +3 -3
- package/dist/{chunk-LFN7UHDT.js.map → chunk-Y4FEW7SR.js.map} +1 -1
- package/dist/{chunk-PFVT27B5.js → chunk-YC5VVIZO.js} +3 -3
- package/dist/{chunk-PFVT27B5.js.map → chunk-YC5VVIZO.js.map} +1 -1
- package/dist/{chunk-7EGN7IGY.js → chunk-YMCKML6D.js} +7 -7
- package/dist/{chunk-7EGN7IGY.js.map → chunk-YMCKML6D.js.map} +1 -1
- package/dist/{chunk-7HT32DZG.js → chunk-YMQDTTO7.js} +6 -6
- package/dist/{chunk-7HT32DZG.js.map → chunk-YMQDTTO7.js.map} +1 -1
- package/dist/{chunk-ZARZYMBM.js → chunk-YNTS4GRT.js} +3 -3
- package/dist/{chunk-ZARZYMBM.js.map → chunk-YNTS4GRT.js.map} +1 -1
- package/dist/{chunk-6SZRWNPT.js → chunk-ZOHLZ4YL.js} +3 -3
- package/dist/{chunk-6SZRWNPT.js.map → chunk-ZOHLZ4YL.js.map} +1 -1
- package/dist/{chunk-4Y72SPNL.js → chunk-ZVSMLMMS.js} +5 -5
- package/dist/chunk-ZVSMLMMS.js.map +1 -0
- package/dist/{chunk-VKDN66VL.js → chunk-ZXWT4KWJ.js} +3 -3
- package/dist/{chunk-VKDN66VL.js.map → chunk-ZXWT4KWJ.js.map} +1 -1
- package/dist/components/advanced/AssetManager/index.js +2 -2
- package/dist/components/advanced/Calendar/index.js +7 -7
- package/dist/components/advanced/Command/index.js +3 -3
- package/dist/components/advanced/DragAndDrop/index.js +2 -2
- package/dist/components/advanced/ErrorBoundary/index.js +2 -2
- package/dist/components/advanced/EventCalendar/index.js +7 -7
- package/dist/components/advanced/FileDropzone/index.js +2 -2
- package/dist/components/advanced/FilePreview/index.js +2 -2
- package/dist/components/advanced/FileUpload/index.js +2 -2
- package/dist/components/advanced/FilterBuilder/index.js +10 -10
- package/dist/components/advanced/MarkdownEditor/index.js +6 -6
- package/dist/components/advanced/ReportBuilder/index.js +8 -8
- package/dist/components/advanced/RichTextEditor/index.js +4 -4
- package/dist/components/advanced/Search/index.js +2 -2
- package/dist/components/advanced/SortableList/index.js +2 -2
- package/dist/components/advanced/VersionControl/index.js +2 -2
- package/dist/components/advanced/index.js +31 -31
- package/dist/components/data-display/Accordion/index.js +2 -2
- package/dist/components/data-display/AreaChart/index.js +3 -3
- package/dist/components/data-display/Banner/index.js +2 -2
- package/dist/components/data-display/BarChart/index.js +3 -3
- package/dist/components/data-display/BarList/index.js +2 -2
- package/dist/components/data-display/Callout/index.js +2 -2
- package/dist/components/data-display/Carousel/index.js +7 -7
- package/dist/components/data-display/CategoryBar/index.js +3 -3
- package/dist/components/data-display/Chart/index.js +2 -2
- package/dist/components/data-display/ChartCard/index.js +5 -5
- package/dist/components/data-display/ChartLegend/index.js +2 -2
- package/dist/components/data-display/ComboChart/index.js +3 -3
- package/dist/components/data-display/DashboardCard/index.js +3 -3
- package/dist/components/data-display/DataTable/FilterBuilder/index.js +10 -10
- package/dist/components/data-display/DataTable/index.js +17 -17
- package/dist/components/data-display/DeltaBar/index.js +3 -3
- package/dist/components/data-display/EmptyState/index.js +2 -2
- package/dist/components/data-display/FeatureItem/index.js +3 -3
- package/dist/components/data-display/Feed/index.js +2 -2
- package/dist/components/data-display/FunnelChart/index.js +3 -3
- package/dist/components/data-display/GaugeChart/index.js +2 -2
- package/dist/components/data-display/Heatmap/index.js +3 -3
- package/dist/components/data-display/HoverCard/index.js +2 -2
- package/dist/components/data-display/ImageGallery/index.js +9 -9
- package/dist/components/data-display/Item/index.js +3 -3
- package/dist/components/data-display/KPICard/index.js +8 -8
- package/dist/components/data-display/Lightbox/index.js +2 -2
- package/dist/components/data-display/LineChart/index.js +3 -3
- package/dist/components/data-display/List/index.js +6 -6
- package/dist/components/data-display/MarkerBar/index.js +3 -3
- package/dist/components/data-display/PieChart/index.js +3 -3
- package/dist/components/data-display/RadarChart/index.js +3 -3
- package/dist/components/data-display/RadialChart/index.js +3 -3
- package/dist/components/data-display/ScatterChart/index.js +3 -3
- package/dist/components/data-display/SingleStat/index.js +3 -3
- package/dist/components/data-display/Sparkline/index.js +2 -2
- package/dist/components/data-display/Table/index.js +2 -2
- package/dist/components/data-display/Timeline/index.js +2 -2
- package/dist/components/data-display/Tracker/index.js +3 -3
- package/dist/components/data-display/VirtualTable/index.js +5 -5
- package/dist/components/data-display/index.js +57 -57
- package/dist/components/feedback/Alert/index.js +2 -2
- package/dist/components/feedback/AlertDialog/index.js +7 -7
- package/dist/components/feedback/ConfirmModal/index.js +8 -8
- package/dist/components/feedback/Dialog/index.js +2 -2
- package/dist/components/feedback/ErrorPage/index.js +2 -2
- package/dist/components/feedback/FocusTrap/index.js +2 -2
- package/dist/components/feedback/Message/index.js +2 -2
- package/dist/components/feedback/Modal/index.js +2 -2
- package/dist/components/feedback/Notification/index.js +4 -4
- package/dist/components/feedback/Popover/index.js +2 -2
- package/dist/components/feedback/Tooltip/index.js +2 -2
- package/dist/components/feedback/UpdatesWidget/index.js +2 -2
- package/dist/components/feedback/index.js +18 -18
- package/dist/components/forms/Autocomplete/index.js +2 -2
- package/dist/components/forms/Checkbox/index.js +2 -2
- package/dist/components/forms/CheckboxGroup/index.js +3 -3
- package/dist/components/forms/ColorPicker/index.js +3 -3
- package/dist/components/forms/Combobox/index.js +2 -2
- package/dist/components/forms/DatePicker/index.js +10 -10
- package/dist/components/forms/DateRangePicker/index.js +10 -10
- package/dist/components/forms/EmailInput/index.js +4 -4
- package/dist/components/forms/ErrorMessage/index.js +2 -2
- package/dist/components/forms/Field/index.js +4 -4
- package/dist/components/forms/FloatLabel/index.js +2 -2
- package/dist/components/forms/Form/index.js +3 -3
- package/dist/components/forms/FormValidation/index.js +2 -2
- package/dist/components/forms/HelpText/index.js +2 -2
- package/dist/components/forms/IftaLabel/index.js +2 -2
- package/dist/components/forms/InputGroup/index.js +10 -10
- package/dist/components/forms/InputOTP/index.js +2 -2
- package/dist/components/forms/InputOTPField/index.js +6 -6
- package/dist/components/forms/MultiSelect/index.js +3 -3
- package/dist/components/forms/NativeSelect/index.js +2 -2
- package/dist/components/forms/NumberInput/index.js +3 -3
- package/dist/components/forms/PasswordInput/index.js +4 -4
- package/dist/components/forms/PaymentInput/index.js +2 -2
- package/dist/components/forms/PhoneInput/index.js +2 -2
- package/dist/components/forms/RadioButton/index.js +2 -2
- package/dist/components/forms/RadioCardGroup/index.js +2 -2
- package/dist/components/forms/RadioGroup/index.js +2 -2
- package/dist/components/forms/Rating/index.js +2 -2
- package/dist/components/forms/SearchInput/index.js +4 -4
- package/dist/components/forms/Select/index.js +2 -2
- package/dist/components/forms/Slider/index.js +2 -2
- package/dist/components/forms/SuccessMessage/index.js +2 -2
- package/dist/components/forms/Switch/index.js +2 -2
- package/dist/components/forms/TagsInput/index.js +4 -4
- package/dist/components/forms/TextInput/index.js +3 -3
- package/dist/components/forms/Textarea/index.js +2 -2
- package/dist/components/forms/TextareaField/index.js +6 -6
- package/dist/components/forms/TimePicker/index.js +4 -4
- package/dist/components/forms/URLInput/index.js +4 -4
- package/dist/components/forms/index.js +51 -51
- package/dist/components/index.js +186 -186
- package/dist/components/layout/Card/index.js +2 -2
- package/dist/components/layout/Collapsible/index.js +2 -2
- package/dist/components/layout/Container/index.js +2 -2
- package/dist/components/layout/Flex/index.js +2 -2
- package/dist/components/layout/Grid/index.js +2 -2
- package/dist/components/layout/Panel/index.js +3 -3
- package/dist/components/layout/ResizablePanels/index.js +2 -2
- package/dist/components/layout/ResponsiveContainer/index.js +2 -2
- package/dist/components/layout/ScrollArea/index.js +2 -2
- package/dist/components/layout/Section/index.js +2 -2
- package/dist/components/layout/Sheet/index.js +2 -2
- package/dist/components/layout/Stack/index.js +2 -2
- package/dist/components/layout/index.js +13 -13
- package/dist/components/navigation/AccountSwitch/index.js +6 -6
- package/dist/components/navigation/Breadcrumb/index.js +2 -2
- package/dist/components/navigation/ContextMenu/index.js +2 -2
- package/dist/components/navigation/Drawer/index.js +2 -2
- package/dist/components/navigation/DropdownMenu/index.js +2 -2
- package/dist/components/navigation/FileTree/index.js +2 -2
- package/dist/components/navigation/Header/index.js +2 -2
- package/dist/components/navigation/LogoConta/index.js +2 -2
- package/dist/components/navigation/Menu/index.js +3 -3
- package/dist/components/navigation/Menubar/index.js +2 -2
- package/dist/components/navigation/Navbar/index.js +2 -2
- package/dist/components/navigation/NavigationMenu/index.js +2 -2
- package/dist/components/navigation/Pagination/index.js +7 -7
- package/dist/components/navigation/Sidebar/index.js +12 -12
- package/dist/components/navigation/SkipLinks/index.js +2 -2
- package/dist/components/navigation/SpeedDial/index.js +3 -3
- package/dist/components/navigation/TabNavigation/index.js +2 -2
- package/dist/components/navigation/TabPanel/index.js +2 -2
- package/dist/components/navigation/Tabs/index.js +2 -2
- package/dist/components/navigation/Toolbar/index.js +2 -2
- package/dist/components/navigation/Topbar/index.js +2 -2
- package/dist/components/navigation/index.js +33 -33
- package/dist/components/primitives/ArrowAnimated/index.js +2 -2
- package/dist/components/primitives/Avatar/index.js +3 -3
- package/dist/components/primitives/Badge/index.js +3 -3
- package/dist/components/primitives/Button/index.js +6 -6
- package/dist/components/primitives/ButtonGroup/index.js +3 -3
- package/dist/components/primitives/ConfirmButton/index.js +8 -8
- package/dist/components/primitives/Divider/index.js +2 -2
- package/dist/components/primitives/FeaturedIcon/index.js +2 -2
- package/dist/components/primitives/FolderStack/index.js +2 -2
- package/dist/components/primitives/Heading/index.js +2 -2
- package/dist/components/primitives/Icon/index.js +2 -2
- package/dist/components/primitives/Image/index.js +2 -2
- package/dist/components/primitives/Kbd/index.js +2 -2
- package/dist/components/primitives/Label/index.js +2 -2
- package/dist/components/primitives/Link/index.js +2 -2
- package/dist/components/primitives/Paragraph/index.js +2 -2
- package/dist/components/primitives/PaymentMethodIcon/index.js +2 -2
- package/dist/components/primitives/ProgressBar/index.js +3 -3
- package/dist/components/primitives/ProgressCircle/index.js +3 -3
- package/dist/components/primitives/SkeletonLoader/index.js +2 -2
- package/dist/components/primitives/Spacer/index.js +2 -2
- package/dist/components/primitives/Spinner/index.js +2 -2
- package/dist/components/primitives/SplitButton/index.js +3 -3
- package/dist/components/primitives/StatusIndicator/index.js +2 -2
- package/dist/components/primitives/Tag/index.js +2 -2
- package/dist/components/primitives/Text/index.js +2 -2
- package/dist/components/primitives/Thumbnail/index.js +3 -3
- package/dist/components/primitives/Toggle/index.js +2 -2
- package/dist/components/primitives/index.js +32 -32
- package/dist/components/workflow/ApprovalFlow/index.js +8 -8
- package/dist/components/workflow/ApprovalStatus/index.js +2 -2
- package/dist/components/workflow/CommentSystem/index.js +9 -9
- package/dist/components/workflow/Dashboard/index.js +7 -7
- package/dist/components/workflow/DashboardBuilder/index.js +10 -10
- package/dist/components/workflow/KanbanBoard/index.js +9 -9
- package/dist/components/workflow/ProgressSteps/index.js +2 -2
- package/dist/components/workflow/ReportGenerator/index.js +9 -9
- package/dist/components/workflow/Stepper/index.js +2 -2
- package/dist/components/workflow/TaskCard/index.js +2 -2
- package/dist/components/workflow/TaskList/index.js +2 -2
- package/dist/components/workflow/TaskStatus/index.js +3 -3
- package/dist/components/workflow/Wizard/index.js +8 -8
- package/dist/components/workflow/index.js +27 -27
- package/dist/index.d.ts +62 -14
- package/dist/index.js +186 -186
- package/dist/lib/utils.d.ts +2 -1
- package/dist/lib/utils.js +1 -1
- package/dist/styles.css +27 -703
- package/package.json +2 -2
- package/dist/chunk-3L5G7VI2.js.map +0 -1
- package/dist/chunk-46ESMCEQ.js.map +0 -1
- package/dist/chunk-4GVOOXYD.js.map +0 -1
- package/dist/chunk-4KOJTZVU.js.map +0 -1
- package/dist/chunk-4Y72SPNL.js.map +0 -1
- package/dist/chunk-5GE3BQA7.js.map +0 -1
- package/dist/chunk-66TBTTZO.js.map +0 -1
- package/dist/chunk-7TF5PVEU.js.map +0 -1
- package/dist/chunk-7Y2UQMX6.js.map +0 -1
- package/dist/chunk-DYDXGWH2.js.map +0 -1
- package/dist/chunk-HRNDJU7D.js +0 -11
- package/dist/chunk-HRNDJU7D.js.map +0 -1
- package/dist/chunk-IFHF4UES.js.map +0 -1
- package/dist/chunk-IRIIK3BU.js.map +0 -1
- package/dist/chunk-IZC5YFGO.js.map +0 -1
- package/dist/chunk-NXQ25PKF.js.map +0 -1
- package/dist/chunk-OXDWUKGP.js.map +0 -1
- package/dist/chunk-P27ERD6W.js.map +0 -1
- package/dist/chunk-P7D6S6GX.js.map +0 -1
- package/dist/chunk-TNDW52VZ.js.map +0 -1
- package/dist/chunk-U6EOAIPK.js.map +0 -1
- package/dist/chunk-UPK5B2FL.js.map +0 -1
- package/dist/chunk-VAVE4ZJF.js.map +0 -1
- package/dist/chunk-VT4IMHGE.js.map +0 -1
- package/dist/chunk-W3JVNX35.js.map +0 -1
- package/dist/chunk-WKWLKGNI.js.map +0 -1
- package/dist/chunk-XLTSCY22.js.map +0 -1
- package/dist/chunk-XOGMDABS.js.map +0 -1
- package/dist/chunk-Y4RKKQMB.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/data-display/ChartCard/ChartCard.variants.ts","../src/components/data-display/ChartCard/ChartCard.tsx"],"names":[],"mappings":"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","file":"chunk-3KOLK3OB.js","sourcesContent":["// ChartCard/ChartCard.variants.ts\nimport { cva } from \"class-variance-authority\"\n\n/**\n * ChartCard container variants.\n *\n * Consumes the `--chart-card-*` component tokens (DES-1253). The Figma container\n * is flat — background + radius + asymmetric padding, no border or shadow — so the\n * base styles render that container and `outlined` / `elevated` are code-only\n * extensions (documented in the README) layered on top.\n */\nexport const chartCardVariants = cva(\n \"rounded-[var(--chart-card-radius)] bg-[color:var(--chart-card-bg)] px-[var(--chart-card-padding-x)] pt-[var(--chart-card-padding-top)] pb-[var(--chart-card-padding-bottom)] text-[color:var(--chart-card-fg)] transition\",\n {\n variants: {\n variant: {\n default: \"\",\n outlined: \"border border-[color:var(--chart-card-border)]\",\n elevated: \"shadow-sm\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\n/**\n * ChartCard header (Title Row) — leading group (featured icon + title + badge)\n * and an optional trailing overflow action.\n */\nexport const chartCardHeaderVariants = cva(\n \"flex items-center justify-between gap-x-2\"\n)\n\n/**\n * ChartCard title — Figma Heading/H5 (18px / 24px / SemiBold), tokenised.\n */\nexport const chartCardTitleVariants = cva(\n \"text-[length:var(--chart-card-title-size)] font-[var(--chart-card-title-weight)] leading-[var(--chart-card-title-line-height)] text-[color:var(--chart-card-title-color)]\"\n)\n\n/**\n * ChartCard value container.\n */\nexport const chartCardValueContainerVariants = cva(\n \"mt-2 flex items-baseline justify-between\"\n)\n\n/**\n * ChartCard KPI value text — tokenised size + color.\n */\nexport const chartCardValueVariants = cva(\n \"text-[length:var(--chart-card-value-size)] text-[color:var(--chart-card-value-color)]\"\n)\n\n/**\n * ChartCard previous-value caption.\n */\nexport const chartCardPreviousValueVariants = cva(\n \"text-sm text-[color:var(--chart-card-previous-color)]\"\n)\n\n/**\n * ChartCard chart-slot wrapper — 24px row gap + tokenised area height\n * (`--chart-card-chart-height`). The injected chart fills the area via\n * `[&>*]:h-full`; the `chartHeight` prop overrides the height.\n */\nexport const chartCardChartVariants = cva(\n \"mt-[var(--chart-card-gap)] h-[var(--chart-card-chart-height)] [&>*]:h-full\"\n)\n","// ChartCard/ChartCard.tsx\n\"use client\"\n\nimport type { ChartCardProps, ChartCardValueFormatter } from \"./ChartCard.types\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Badge } from \"../../primitives/Badge\"\nimport { SkeletonLoader } from \"../../primitives/SkeletonLoader\"\nimport {\n chartCardChartVariants,\n chartCardHeaderVariants,\n chartCardPreviousValueVariants,\n chartCardTitleVariants,\n chartCardValueContainerVariants,\n chartCardValueVariants,\n chartCardVariants,\n} from \"./ChartCard.variants\"\n\n/**\n * Default value formatter (returns value as string)\n */\nconst defaultFormatter: ChartCardValueFormatter = (value) => String(value)\n\n/**\n * Get badge color based on evolution percentage\n */\nfunction getBadgeColor(value: number): \"destructive\" | \"muted\" | \"success\" | \"warning\" {\n if (value > 0) {\n return \"success\"\n } else if (value < 0) {\n if (value < -50) {\n return \"warning\"\n }\n return \"destructive\"\n }\n return \"muted\"\n}\n\n/**\n * Format percentage for display\n */\nfunction formatPercentage(value: number): string {\n const sign = value > 0 ? \"+\" : \"\"\n return `${sign}${(value * 100).toFixed(1)}%`\n}\n\n/**\n * ChartCard - Dashboard KPI widget with a chart-agnostic slot.\n *\n * Renders a KPI value with an auto evolution badge and optional comparison\n * period. The chart itself is **injected by the consumer** via the `chart`\n * slot — ChartCard ships no default chart (DES-1253). The Title Row exposes\n * `featuredIcon` + `headerAction` (overflow) slots, with optional `tabs` and\n * `footer` composition slots below.\n *\n * @example\n * ```tsx\n * const data = [\n * { formattedDate: \"01/01\", value: 1000, previousValue: 900 },\n * { formattedDate: \"02/01\", value: 1200, previousValue: 1100 },\n * ]\n *\n * <ChartCard\n * title=\"Revenue\"\n * data={data}\n * comparisonPeriod=\"previous-year\"\n * valueFormatter={(v) => `$${v.toLocaleString()}`}\n * chart={\n * <LineChart\n * className=\"h-full\"\n * data={data}\n * config={{ value: { label: \"Current\" } }}\n * series={[\"value\"]}\n * />\n * }\n * />\n * ```\n */\nfunction ChartCard({\n badge,\n chart,\n chartHeight,\n className,\n comparisonPeriod = \"no-comparison\",\n data,\n emptyMessage,\n featuredIcon,\n footer,\n headerAction,\n isThumbnail = false,\n loading = false,\n tabs,\n title,\n valueFormatter = defaultFormatter,\n variant,\n ...props\n}: ChartCardProps) {\n const isEmpty = !loading && data.length === 0\n\n // Calculate totals\n const totalValue = React.useMemo(() => {\n return data.reduce((acc, item) => acc + (item.value ?? 0), 0)\n }, [data])\n\n const totalPreviousValue = React.useMemo(() => {\n return data.reduce((acc, item) => acc + (item.previousValue ?? 0), 0)\n }, [data])\n\n // Calculate evolution percentage\n const evolution = React.useMemo(() => {\n if (comparisonPeriod === \"no-comparison\" || totalPreviousValue === 0) {\n return 0\n }\n return (totalValue - totalPreviousValue) / totalPreviousValue\n }, [comparisonPeriod, totalPreviousValue, totalValue])\n\n // Show comparison UI elements\n const showComparison = comparisonPeriod !== \"no-comparison\"\n\n // Title Row leading slots (featured icon + title), shared across states.\n const titleLead = (\n <div className=\"flex items-center gap-x-2\">\n {featuredIcon && (\n <span data-slot=\"chart-card-featured-icon\">{featuredIcon}</span>\n )}\n <h3 className={cn(chartCardTitleVariants())} data-slot=\"chart-card-title\">\n {title}\n </h3>\n </div>\n )\n\n // Empty state (DES-1254 item 3 — Figma Empty State)\n if (isEmpty) {\n return (\n <article\n aria-label={`${title}: empty`}\n className={cn(chartCardVariants({ variant }), className)}\n data-empty=\"true\"\n data-slot=\"chart-card\"\n {...props}\n >\n <div className={cn(chartCardHeaderVariants())} data-slot=\"chart-card-header\">\n {titleLead}\n {headerAction && (\n <span data-slot=\"chart-card-header-action\">{headerAction}</span>\n )}\n </div>\n <div\n className={cn(\n chartCardChartVariants(),\n chartHeight,\n \"flex items-center justify-center text-[length:var(--chart-card-empty-state-caption-size)] text-[color:var(--chart-card-empty-state-caption-color)]\"\n )}\n data-slot=\"chart-card-empty\"\n >\n {emptyMessage ?? \"No data available\"}\n </div>\n </article>\n )\n }\n\n // Loading state\n if (loading) {\n return (\n <article\n aria-busy=\"true\"\n className={cn(chartCardVariants({ variant }), className)}\n data-slot=\"chart-card\"\n {...props}\n >\n <div className={cn(chartCardHeaderVariants())} data-slot=\"chart-card-header\">\n <SkeletonLoader className=\"h-4 w-24\" />\n <SkeletonLoader className=\"h-5 w-12\" />\n </div>\n <div\n className={cn(chartCardValueContainerVariants())}\n data-slot=\"chart-card-value\"\n >\n <SkeletonLoader className=\"h-7 w-32\" />\n </div>\n <div className={cn(chartCardChartVariants(), chartHeight)}>\n <SkeletonLoader className=\"h-full w-full\" />\n </div>\n </article>\n )\n }\n\n return (\n <article\n aria-label={`${title}: ${valueFormatter(totalValue)}`}\n className={cn(chartCardVariants({ variant }), className)}\n data-slot=\"chart-card\"\n {...props}\n >\n {/* Title Row — featured icon + title + badge / overflow action */}\n <div className={cn(chartCardHeaderVariants())} data-slot=\"chart-card-header\">\n <div className=\"flex items-center gap-x-2\">\n {featuredIcon && (\n <span data-slot=\"chart-card-featured-icon\">{featuredIcon}</span>\n )}\n <h3 className={cn(chartCardTitleVariants())} data-slot=\"chart-card-title\">\n {title}\n </h3>\n {showComparison && (\n badge ?? (\n <Badge color={getBadgeColor(evolution)} size=\"sm\">\n {formatPercentage(evolution)}\n </Badge>\n )\n )}\n </div>\n {headerAction && (\n <span data-slot=\"chart-card-header-action\">{headerAction}</span>\n )}\n </div>\n\n {/* Value display */}\n <div\n className={cn(chartCardValueContainerVariants())}\n data-slot=\"chart-card-value\"\n >\n <p className={cn(chartCardValueVariants())}>\n {valueFormatter(totalValue)}\n </p>\n {showComparison && (\n <p className={cn(chartCardPreviousValueVariants())}>\n from {valueFormatter(totalPreviousValue)}\n </p>\n )}\n </div>\n\n {/* Tabs row slot (Figma showTabs) */}\n {tabs && (\n <div className=\"mt-[var(--chart-card-gap)]\" data-slot=\"chart-card-tabs\">\n {tabs}\n </div>\n )}\n\n {/* Chart slot — injected by the consumer (chart-agnostic) */}\n {!isThumbnail && chart && (\n <div\n className={cn(chartCardChartVariants(), chartHeight)}\n data-slot=\"chart-card-chart\"\n >\n {chart}\n </div>\n )}\n\n {/* Card Footer slot (Figma showCardFooter — trend + total) */}\n {footer && (\n <div className=\"mt-[var(--chart-card-gap)]\" data-slot=\"chart-card-footer\">\n {footer}\n </div>\n )}\n </article>\n )\n}\n\nChartCard.displayName = \"ChartCard\"\n\nexport { ChartCard }\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/data-display/ChartCard/ChartCard.variants.ts","../src/components/data-display/ChartCard/ChartCard.tsx"],"names":[],"mappings":"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","file":"chunk-N5YGAESZ.js","sourcesContent":["// ChartCard/ChartCard.variants.ts\nimport { cva } from \"class-variance-authority\"\n\n/**\n * ChartCard container variants.\n *\n * Consumes the `--chart-card-*` component tokens (DES-1253). The Figma container\n * is flat — background + radius + asymmetric padding, no border or shadow — so the\n * base styles render that container and `outlined` / `elevated` are code-only\n * extensions (documented in the README) layered on top.\n */\nexport const chartCardVariants = cva(\n \"rounded-[var(--chart-card-radius)] bg-[color:var(--chart-card-bg)] px-[var(--chart-card-padding-x)] pt-[var(--chart-card-padding-top)] pb-[var(--chart-card-padding-bottom)] text-[color:var(--chart-card-fg)] transition\",\n {\n variants: {\n variant: {\n default: \"\",\n outlined: \"border border-[color:var(--chart-card-border)]\",\n elevated: \"shadow-sm\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\n/**\n * ChartCard header (Title Row) — leading group (featured icon + title + badge)\n * and an optional trailing overflow action.\n */\nexport const chartCardHeaderVariants = cva(\n \"flex items-center justify-between gap-x-2\"\n)\n\n/**\n * ChartCard title — Figma Heading/H5 (18px / 24px / SemiBold), tokenised.\n */\nexport const chartCardTitleVariants = cva(\n \"text-[length:var(--chart-card-title-size)] font-[var(--chart-card-title-weight)] leading-[var(--chart-card-title-line-height)] text-[color:var(--chart-card-title-color)]\"\n)\n\n/**\n * ChartCard value container.\n */\nexport const chartCardValueContainerVariants = cva(\n \"mt-2 flex items-baseline justify-between\"\n)\n\n/**\n * ChartCard KPI value text — tokenised size + color.\n */\nexport const chartCardValueVariants = cva(\n \"text-[length:var(--chart-card-value-size)] text-[color:var(--chart-card-value-color)]\"\n)\n\n/**\n * ChartCard previous-value caption.\n */\nexport const chartCardPreviousValueVariants = cva(\n \"text-sm text-[color:var(--chart-card-previous-color)]\"\n)\n\n/**\n * ChartCard chart-slot wrapper — 24px row gap + tokenised area height\n * (`--chart-card-chart-height`). The injected chart fills the area via\n * `[&>*]:h-full`; the `chartHeight` prop overrides the height.\n */\nexport const chartCardChartVariants = cva(\n \"mt-[var(--chart-card-gap)] h-[var(--chart-card-chart-height)] [&>*]:h-full\"\n)\n","// ChartCard/ChartCard.tsx\n\"use client\"\n\nimport type { ChartCardProps, ChartCardValueFormatter } from \"./ChartCard.types\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Badge } from \"../../primitives/Badge\"\nimport { SkeletonLoader } from \"../../primitives/SkeletonLoader\"\nimport {\n chartCardChartVariants,\n chartCardHeaderVariants,\n chartCardPreviousValueVariants,\n chartCardTitleVariants,\n chartCardValueContainerVariants,\n chartCardValueVariants,\n chartCardVariants,\n} from \"./ChartCard.variants\"\n\n/**\n * Default value formatter (returns value as string)\n */\nconst defaultFormatter: ChartCardValueFormatter = (value) => String(value)\n\n/**\n * Get badge color based on evolution percentage\n */\nfunction getBadgeColor(value: number): \"destructive\" | \"muted\" | \"success\" | \"warning\" {\n if (value > 0) {\n return \"success\"\n } else if (value < 0) {\n if (value < -50) {\n return \"warning\"\n }\n return \"destructive\"\n }\n return \"muted\"\n}\n\n/**\n * Format percentage for display\n */\nfunction formatPercentage(value: number): string {\n const sign = value > 0 ? \"+\" : \"\"\n return `${sign}${(value * 100).toFixed(1)}%`\n}\n\n/**\n * ChartCard - Dashboard KPI widget with a chart-agnostic slot.\n *\n * Renders a KPI value with an auto evolution badge and optional comparison\n * period. The chart itself is **injected by the consumer** via the `chart`\n * slot — ChartCard ships no default chart (DES-1253). The Title Row exposes\n * `featuredIcon` + `headerAction` (overflow) slots, with optional `tabs` and\n * `footer` composition slots below.\n *\n * @example\n * ```tsx\n * const data = [\n * { formattedDate: \"01/01\", value: 1000, previousValue: 900 },\n * { formattedDate: \"02/01\", value: 1200, previousValue: 1100 },\n * ]\n *\n * <ChartCard\n * title=\"Revenue\"\n * data={data}\n * comparisonPeriod=\"previous-year\"\n * valueFormatter={(v) => `$${v.toLocaleString()}`}\n * chart={\n * <LineChart\n * className=\"h-full\"\n * data={data}\n * config={{ value: { label: \"Current\" } }}\n * series={[\"value\"]}\n * />\n * }\n * />\n * ```\n */\nfunction ChartCard({\n badge,\n chart,\n chartHeight,\n className,\n comparisonPeriod = \"no-comparison\",\n data,\n emptyMessage,\n featuredIcon,\n footer,\n headerAction,\n isThumbnail = false,\n loading = false,\n tabs,\n title,\n valueFormatter = defaultFormatter,\n variant,\n ...props\n}: ChartCardProps) {\n const isEmpty = !loading && data.length === 0\n\n // Calculate totals\n const totalValue = React.useMemo(() => {\n return data.reduce((acc, item) => acc + (item.value ?? 0), 0)\n }, [data])\n\n const totalPreviousValue = React.useMemo(() => {\n return data.reduce((acc, item) => acc + (item.previousValue ?? 0), 0)\n }, [data])\n\n // Calculate evolution percentage\n const evolution = React.useMemo(() => {\n if (comparisonPeriod === \"no-comparison\" || totalPreviousValue === 0) {\n return 0\n }\n return (totalValue - totalPreviousValue) / totalPreviousValue\n }, [comparisonPeriod, totalPreviousValue, totalValue])\n\n // Show comparison UI elements\n const showComparison = comparisonPeriod !== \"no-comparison\"\n\n // Title Row leading slots (featured icon + title), shared across states.\n const titleLead = (\n <div className=\"flex items-center gap-x-2\">\n {featuredIcon && (\n <span data-slot=\"chart-card-featured-icon\">{featuredIcon}</span>\n )}\n <h3 className={cn(chartCardTitleVariants())} data-slot=\"chart-card-title\">\n {title}\n </h3>\n </div>\n )\n\n // Empty state (DES-1254 item 3 — Figma Empty State)\n if (isEmpty) {\n return (\n <article\n aria-label={`${title}: empty`}\n className={cn(chartCardVariants({ variant }), className)}\n data-empty=\"true\"\n data-slot=\"chart-card\"\n {...props}\n >\n <div className={cn(chartCardHeaderVariants())} data-slot=\"chart-card-header\">\n {titleLead}\n {headerAction && (\n <span data-slot=\"chart-card-header-action\">{headerAction}</span>\n )}\n </div>\n <div\n className={cn(\n chartCardChartVariants(),\n chartHeight,\n \"flex items-center justify-center text-[length:var(--chart-card-empty-state-caption-size)] text-[color:var(--chart-card-empty-state-caption-color)]\"\n )}\n data-slot=\"chart-card-empty\"\n >\n {emptyMessage ?? \"No data available\"}\n </div>\n </article>\n )\n }\n\n // Loading state\n if (loading) {\n return (\n <article\n aria-busy=\"true\"\n className={cn(chartCardVariants({ variant }), className)}\n data-slot=\"chart-card\"\n {...props}\n >\n <div className={cn(chartCardHeaderVariants())} data-slot=\"chart-card-header\">\n <SkeletonLoader className=\"h-4 w-24\" />\n <SkeletonLoader className=\"h-5 w-12\" />\n </div>\n <div\n className={cn(chartCardValueContainerVariants())}\n data-slot=\"chart-card-value\"\n >\n <SkeletonLoader className=\"h-7 w-32\" />\n </div>\n <div className={cn(chartCardChartVariants(), chartHeight)}>\n <SkeletonLoader className=\"h-full w-full\" />\n </div>\n </article>\n )\n }\n\n return (\n <article\n aria-label={`${title}: ${valueFormatter(totalValue)}`}\n className={cn(chartCardVariants({ variant }), className)}\n data-slot=\"chart-card\"\n {...props}\n >\n {/* Title Row — featured icon + title + badge / overflow action */}\n <div className={cn(chartCardHeaderVariants())} data-slot=\"chart-card-header\">\n <div className=\"flex items-center gap-x-2\">\n {featuredIcon && (\n <span data-slot=\"chart-card-featured-icon\">{featuredIcon}</span>\n )}\n <h3 className={cn(chartCardTitleVariants())} data-slot=\"chart-card-title\">\n {title}\n </h3>\n {showComparison && (\n badge ?? (\n <Badge color={getBadgeColor(evolution)} size=\"sm\">\n {formatPercentage(evolution)}\n </Badge>\n )\n )}\n </div>\n {headerAction && (\n <span data-slot=\"chart-card-header-action\">{headerAction}</span>\n )}\n </div>\n\n {/* Value display */}\n <div\n className={cn(chartCardValueContainerVariants())}\n data-slot=\"chart-card-value\"\n >\n <p className={cn(chartCardValueVariants())}>\n {valueFormatter(totalValue)}\n </p>\n {showComparison && (\n <p className={cn(chartCardPreviousValueVariants())}>\n from {valueFormatter(totalPreviousValue)}\n </p>\n )}\n </div>\n\n {/* Tabs row slot (Figma showTabs) */}\n {tabs && (\n <div className=\"mt-[var(--chart-card-gap)]\" data-slot=\"chart-card-tabs\">\n {tabs}\n </div>\n )}\n\n {/* Chart slot — injected by the consumer (chart-agnostic) */}\n {!isThumbnail && chart && (\n <div\n className={cn(chartCardChartVariants(), chartHeight)}\n data-slot=\"chart-card-chart\"\n >\n {chart}\n </div>\n )}\n\n {/* Card Footer slot (Figma showCardFooter — trend + total) */}\n {footer && (\n <div className=\"mt-[var(--chart-card-gap)]\" data-slot=\"chart-card-footer\">\n {footer}\n </div>\n )}\n </article>\n )\n}\n\nChartCard.displayName = \"ChartCard\"\n\nexport { ChartCard }\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuSeparator, DropdownMenuLabel, DropdownMenuGroup, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent, DropdownMenuItem } from './chunk-
|
|
2
|
-
import { Avatar, AvatarImage, AvatarFallback } from './chunk-
|
|
3
|
-
import { Badge } from './chunk-
|
|
4
|
-
import { cn } from './chunk-
|
|
1
|
+
import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuSeparator, DropdownMenuLabel, DropdownMenuGroup, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent, DropdownMenuItem } from './chunk-6G5QK3SU.js';
|
|
2
|
+
import { Avatar, AvatarImage, AvatarFallback } from './chunk-U7TPJMGY.js';
|
|
3
|
+
import { Badge } from './chunk-HNQX6ZG7.js';
|
|
4
|
+
import { cn } from './chunk-RVAYDRMA.js';
|
|
5
5
|
import { ChevronsUpDown, Check } from 'lucide-react';
|
|
6
6
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
7
7
|
|
|
@@ -45,6 +45,7 @@ function AccountSwitch({
|
|
|
45
45
|
accounts,
|
|
46
46
|
triggerShape = "pill",
|
|
47
47
|
placement = "sidebar",
|
|
48
|
+
compact = false,
|
|
48
49
|
header,
|
|
49
50
|
footer,
|
|
50
51
|
onSelect,
|
|
@@ -116,15 +117,17 @@ function AccountSwitch({
|
|
|
116
117
|
{
|
|
117
118
|
className: cn(
|
|
118
119
|
"inline-flex min-w-0 items-center gap-2 h-[var(--input-size-md-h)] border transition-colors hover:bg-accent/50 focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none",
|
|
119
|
-
triggerShape === "pill" ? "rounded-full
|
|
120
|
+
triggerShape === "pill" ? ["rounded-full bg-card text-card-foreground", compact ? "p-1.5" : "pl-1.5 pr-3"] : [
|
|
120
121
|
// Figma 1138:2522 "Input" — bg background, border input, radius md;
|
|
121
122
|
// inside an icon-collapsed sidebar only the logo remains (2418:9772)
|
|
122
|
-
"rounded-[var(--radius-md)]
|
|
123
|
+
"rounded-[var(--radius-md)] bg-background text-foreground",
|
|
124
|
+
compact ? "px-2" : "px-3",
|
|
123
125
|
"border-[color:var(--input-border-default)]",
|
|
124
126
|
"group-data-[collapsible=icon]:px-2"
|
|
125
127
|
],
|
|
126
128
|
className
|
|
127
129
|
),
|
|
130
|
+
"data-compact": compact ? "" : void 0,
|
|
128
131
|
"data-placement": placement,
|
|
129
132
|
"data-slot": "account-switch-trigger",
|
|
130
133
|
type: "button",
|
|
@@ -147,7 +150,8 @@ function AccountSwitch({
|
|
|
147
150
|
className: cn(
|
|
148
151
|
"truncate max-w-[var(--account-switch-name-max-width)]",
|
|
149
152
|
// Figma 1138:2523 — rect/sidebar name is 16px regular muted-foreground
|
|
150
|
-
triggerShape === "pill" ? "text-sm font-medium" : "text-base font-normal text-muted-foreground group-data-[collapsible=icon]:hidden"
|
|
153
|
+
triggerShape === "pill" ? "text-sm font-medium" : "text-base font-normal text-muted-foreground group-data-[collapsible=icon]:hidden",
|
|
154
|
+
compact && "hidden"
|
|
151
155
|
),
|
|
152
156
|
children: currentAccount.name
|
|
153
157
|
}
|
|
@@ -158,7 +162,8 @@ function AccountSwitch({
|
|
|
158
162
|
{
|
|
159
163
|
className: cn(
|
|
160
164
|
"text-muted-foreground shrink-0 ml-auto",
|
|
161
|
-
triggerShape === "pill" ? "size-3.5" : "size-4 group-data-[collapsible=icon]:hidden"
|
|
165
|
+
triggerShape === "pill" ? "size-3.5" : "size-4 group-data-[collapsible=icon]:hidden",
|
|
166
|
+
compact && "hidden"
|
|
162
167
|
),
|
|
163
168
|
"aria-hidden": "true"
|
|
164
169
|
}
|
|
@@ -191,5 +196,5 @@ function AccountSwitch({
|
|
|
191
196
|
}
|
|
192
197
|
|
|
193
198
|
export { AccountSwitch };
|
|
194
|
-
//# sourceMappingURL=chunk-
|
|
195
|
-
//# sourceMappingURL=chunk-
|
|
199
|
+
//# sourceMappingURL=chunk-N7VMQWM3.js.map
|
|
200
|
+
//# sourceMappingURL=chunk-N7VMQWM3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/navigation/AccountSwitch/AccountSwitch.tsx"],"names":[],"mappings":"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","file":"chunk-N7VMQWM3.js","sourcesContent":["\"use client\";\n\nimport type {\n AccountSwitchAccount,\n AccountSwitchProps,\n} from \"./AccountSwitch.types\";\n\nimport { Check, ChevronsUpDown } from \"lucide-react\";\n\nimport { cn } from \"../../../lib/utils\";\nimport { Avatar, AvatarFallback, AvatarImage } from \"../../primitives/Avatar\";\nimport { Badge } from \"../../primitives/Badge\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from \"../DropdownMenu\";\n\nconst MAX_NAVIGATION_DEPTH = 3;\n\nfunction getCurrentAccount(\n accounts: AccountSwitchAccount[],\n): AccountSwitchAccount | undefined {\n for (const account of accounts) {\n if (account.isCurrent) {\n return account;\n }\n\n const currentChild = getCurrentAccount(account.children ?? []);\n if (currentChild) {\n return currentChild;\n }\n }\n\n return undefined;\n}\n\nfunction AccountSwitchItemContent({\n account,\n isCurrent,\n}: {\n account: AccountSwitchAccount;\n isCurrent: boolean;\n}) {\n return (\n <>\n {account.logo ?? (\n <Avatar size=\"xs\">\n {account.avatarSrc && (\n <AvatarImage alt={account.name} src={account.avatarSrc} />\n )}\n <AvatarFallback>\n {account.avatarFallback ?? account.name.charAt(0)}\n </AvatarFallback>\n </Avatar>\n )}\n <span className=\"min-w-0 flex-1 truncate\">{account.name}</span>\n {account.plan && (\n <Badge\n color={account.plan === \"PRO\" ? \"primary\" : \"muted\"}\n size=\"sm\"\n type=\"pill-color\"\n >\n {account.plan}\n </Badge>\n )}\n {isCurrent && (\n <Check aria-hidden=\"true\" className=\"size-3.5 text-primary\" />\n )}\n </>\n );\n}\n\nfunction AccountSwitch({\n className,\n accounts,\n triggerShape = \"pill\",\n placement = \"sidebar\",\n compact = false,\n header,\n footer,\n onSelect,\n ...props\n}: AccountSwitchProps) {\n const currentAccount = getCurrentAccount(accounts) ?? accounts[0];\n const contentAlign = placement === \"header\" ? \"end\" : \"start\";\n\n const handleSelect = (account: AccountSwitchAccount) => {\n if (!account.disabled && account.id !== currentAccount?.id) {\n onSelect?.(account);\n }\n };\n\n const renderAccountItem = (account: AccountSwitchAccount, depth: number) => {\n const children =\n depth < MAX_NAVIGATION_DEPTH ? (account.children ?? []) : [];\n const hasChildren = children.length > 0;\n const isCurrent = account.id === currentAccount?.id;\n const stateProps = {\n \"aria-current\": isCurrent ? (\"true\" as const) : undefined,\n \"data-selected\": isCurrent ? \"true\" : undefined,\n };\n\n if (hasChildren) {\n return (\n <DropdownMenuSub key={account.id}>\n <DropdownMenuSubTrigger\n className={cn(\n \"flex min-w-0 items-center gap-2\",\n isCurrent && \"bg-accent text-accent-foreground\",\n )}\n data-account-switch-level={depth}\n disabled={account.disabled}\n {...stateProps}\n >\n <AccountSwitchItemContent account={account} isCurrent={isCurrent} />\n </DropdownMenuSubTrigger>\n <DropdownMenuSubContent\n className=\"min-w-[var(--account-switch-content-min-width)]\"\n data-account-switch-level={depth + 1}\n >\n <DropdownMenuGroup>\n {children.map((childAccount) =>\n renderAccountItem(childAccount, depth + 1),\n )}\n </DropdownMenuGroup>\n </DropdownMenuSubContent>\n </DropdownMenuSub>\n );\n }\n\n return (\n <DropdownMenuItem\n key={account.id}\n className={cn(\n \"flex min-w-0 items-center gap-2\",\n isCurrent && \"bg-accent text-accent-foreground\",\n )}\n data-account-switch-level={depth}\n disabled={account.disabled}\n onClick={() => {\n handleSelect(account);\n }}\n {...stateProps}\n >\n <AccountSwitchItemContent account={account} isCurrent={isCurrent} />\n </DropdownMenuItem>\n );\n };\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <button\n className={cn(\n \"inline-flex min-w-0 items-center gap-2 h-[var(--input-size-md-h)] border transition-colors hover:bg-accent/50 focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none\",\n triggerShape === \"pill\"\n ? [\"rounded-full bg-card text-card-foreground\", compact ? \"p-1.5\" : \"pl-1.5 pr-3\"]\n : [\n // Figma 1138:2522 \"Input\" — bg background, border input, radius md;\n // inside an icon-collapsed sidebar only the logo remains (2418:9772)\n \"rounded-[var(--radius-md)] bg-background text-foreground\",\n compact ? \"px-2\" : \"px-3\",\n \"border-[color:var(--input-border-default)]\",\n \"group-data-[collapsible=icon]:px-2\",\n ],\n className,\n )}\n data-compact={compact ? \"\" : undefined}\n data-placement={placement}\n data-slot=\"account-switch-trigger\"\n type=\"button\"\n {...props}\n >\n {currentAccount && (\n <>\n {currentAccount.logo ?? (\n <Avatar size=\"xs\">\n {currentAccount.avatarSrc && (\n <AvatarImage\n alt={currentAccount.name}\n src={currentAccount.avatarSrc}\n />\n )}\n <AvatarFallback>\n {currentAccount.avatarFallback ??\n currentAccount.name.charAt(0)}\n </AvatarFallback>\n </Avatar>\n )}\n <span\n className={cn(\n \"truncate max-w-[var(--account-switch-name-max-width)]\",\n // Figma 1138:2523 — rect/sidebar name is 16px regular muted-foreground\n triggerShape === \"pill\"\n ? \"text-sm font-medium\"\n : \"text-base font-normal text-muted-foreground group-data-[collapsible=icon]:hidden\",\n compact && \"hidden\",\n )}\n >\n {currentAccount.name}\n </span>\n </>\n )}\n <ChevronsUpDown\n className={cn(\n \"text-muted-foreground shrink-0 ml-auto\",\n triggerShape === \"pill\"\n ? \"size-3.5\"\n : \"size-4 group-data-[collapsible=icon]:hidden\",\n compact && \"hidden\",\n )}\n aria-hidden=\"true\"\n />\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align={contentAlign}\n className=\"min-w-[var(--account-switch-content-min-width)]\"\n data-placement={placement}\n data-slot=\"account-switch-content\"\n >\n {header && (\n <>\n <div className=\"px-2 py-1.5\">{header}</div>\n <DropdownMenuSeparator />\n </>\n )}\n <DropdownMenuLabel className=\"text-xs font-medium text-muted-foreground uppercase tracking-wider\">\n Contas\n </DropdownMenuLabel>\n <DropdownMenuGroup>\n {accounts.map((account) => renderAccountItem(account, 1))}\n </DropdownMenuGroup>\n {footer && (\n <>\n <DropdownMenuSeparator />\n {footer}\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\nexport { AccountSwitch };\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { cn } from './chunk-
|
|
1
|
+
import { cn } from './chunk-RVAYDRMA.js';
|
|
2
2
|
import { cva } from 'class-variance-authority';
|
|
3
3
|
import 'react';
|
|
4
4
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
@@ -247,5 +247,5 @@ function GaugeChart({
|
|
|
247
247
|
}
|
|
248
248
|
|
|
249
249
|
export { GaugeChart, gaugeChartVariants };
|
|
250
|
-
//# sourceMappingURL=chunk-
|
|
251
|
-
//# sourceMappingURL=chunk-
|
|
250
|
+
//# sourceMappingURL=chunk-NAI3TX52.js.map
|
|
251
|
+
//# sourceMappingURL=chunk-NAI3TX52.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/data-display/GaugeChart/GaugeChart.tsx"],"names":[],"mappings":"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","file":"chunk-5KTMPLDK.js","sourcesContent":["import type { GaugeChartProps, GaugeSize, GaugeVariant, GaugeZone } from \"./GaugeChart.types\"\n\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\n\nconst gaugeChartVariants = cva(\"relative inline-flex items-center justify-center\", {\n variants: {\n size: {\n lg: \"\",\n md: \"\",\n sm: \"\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n})\n\n/** Size configurations for the gauge */\nconst SIZE_CONFIG: Record<GaugeSize, { fontSize: { label: string; minMax: string; value: string }; strokeWidth: number; width: number }> = {\n lg: { fontSize: { label: \"text-base\", minMax: \"text-sm\", value: \"text-3xl\" }, strokeWidth: 16, width: 240 },\n md: { fontSize: { label: \"text-sm\", minMax: \"text-xs\", value: \"text-2xl\" }, strokeWidth: 12, width: 180 },\n sm: { fontSize: { label: \"text-xs\", minMax: \"text-xs\", value: \"text-lg\" }, strokeWidth: 8, width: 120 },\n}\n\n/** Variant configurations for arc angles */\nconst VARIANT_CONFIG: Record<GaugeVariant, { endAngle: number; rotation: number; startAngle: number }> = {\n full: { endAngle: 450, rotation: 0, startAngle: 90 },\n semicircle: { endAngle: 0, rotation: 0, startAngle: 180 },\n \"three-quarters\": { endAngle: -45, rotation: 0, startAngle: 225 },\n}\n\n/** CSS variable for primary color */\nconst PRIMARY_COLOR_VAR = \"var(--primary)\"\n/** CSS variable for muted color */\nconst MUTED_COLOR_VAR = \"var(--muted)\"\n\n/**\n * Calculate SVG arc path\n */\nfunction describeArc(\n cx: number,\n cy: number,\n radius: number,\n startAngle: number,\n endAngle: number\n): string {\n const start = polarToCartesian(cx, cy, radius, endAngle)\n const end = polarToCartesian(cx, cy, radius, startAngle)\n const largeArcFlag = endAngle - startAngle <= 180 ? \"0\" : \"1\"\n\n return [\n \"M\", String(start.x), String(start.y),\n \"A\", String(radius), String(radius), \"0\", largeArcFlag, \"0\", String(end.x), String(end.y),\n ].join(\" \")\n}\n\n/**\n * Convert polar coordinates to cartesian\n */\nfunction polarToCartesian(\n cx: number,\n cy: number,\n radius: number,\n angleInDegrees: number\n): { x: number; y: number } {\n const angleInRadians = ((angleInDegrees - 90) * Math.PI) / 180\n return {\n x: cx + radius * Math.cos(angleInRadians),\n y: cy + radius * Math.sin(angleInRadians),\n }\n}\n\n/**\n * Get the color for a given value based on zones\n */\nfunction getZoneColor(value: number, zones: GaugeZone[] | undefined): string {\n if (!zones?.length) {\n return PRIMARY_COLOR_VAR\n }\n\n for (const zone of zones) {\n if (value >= zone.min && value < zone.max) {\n return zone.color\n }\n }\n\n // Check if value equals the max of the last zone\n const lastZone = zones.at(-1)\n if (lastZone && value >= lastZone.min && value <= lastZone.max) {\n return lastZone.color\n }\n\n return PRIMARY_COLOR_VAR\n}\n\n/**\n * GaugeChart - A speedometer-style gauge for displaying values on a scale\n * @example\n * <GaugeChart label=\"Score\" unit=\"%\" value={75} />\n * @example\n * <GaugeChart\n * max={100}\n * min={-100}\n * value={42}\n * zones={[\n * { color: \"var(--destructive)\", max: 0, min: -100 },\n * { color: \"var(--warning)\", max: 50, min: 0 },\n * { color: \"var(--success)\", max: 100, min: 50 },\n * ]}\n * />\n */\nfunction GaugeChart({\n animated = true,\n className,\n label,\n max = 100,\n min = 0,\n showLabels = true,\n showValue = true,\n size = \"md\",\n unit,\n value,\n variant = \"semicircle\",\n zones,\n}: GaugeChartProps) {\n // Clamp value to min/max range\n const clampedValue = Math.min(Math.max(value, min), max)\n\n // Calculate percentage\n const percentage = ((clampedValue - min) / (max - min)) * 100\n\n // Get configuration\n const sizeConfig = SIZE_CONFIG[size]\n const variantConfig = VARIANT_CONFIG[variant]\n\n // SVG dimensions\n const width = sizeConfig.width\n const height = variant === \"semicircle\"\n ? width / 2 + sizeConfig.strokeWidth * 2\n : variant === \"three-quarters\"\n ? width * 0.75 + sizeConfig.strokeWidth\n : width\n\n const cx = width / 2\n const cy = variant === \"semicircle\"\n ? width / 2\n : variant === \"three-quarters\"\n ? width * 0.5\n : width / 2\n\n const radius = (width - sizeConfig.strokeWidth * 2) / 2\n\n // Calculate arc angles\n const { endAngle, startAngle } = variantConfig\n const totalAngle = Math.abs(startAngle - endAngle)\n const valueAngle = startAngle - (percentage / 100) * totalAngle\n\n // Arc paths\n const backgroundPath = describeArc(cx, cy, radius, startAngle, endAngle)\n const valuePath = percentage > 0\n ? describeArc(cx, cy, radius, startAngle, valueAngle)\n : \"\"\n\n // Get color based on zones\n const fillColor = getZoneColor(clampedValue, zones)\n\n // Calculate arc length for animation\n const circumference = 2 * Math.PI * radius\n const arcLength = (totalAngle / 360) * circumference\n const valueArcLength = (percentage / 100) * arcLength\n\n // ARIA label\n const ariaLabel = label\n ? `${label}: ${String(clampedValue)}${unit ?? \"\"}`\n : `Value: ${String(clampedValue)}${unit ?? \"\"}`\n\n // Calculate label positions for min/max\n const minLabelPos = polarToCartesian(cx, cy, radius + sizeConfig.strokeWidth + 8, startAngle)\n const maxLabelPos = polarToCartesian(cx, cy, radius + sizeConfig.strokeWidth + 8, endAngle)\n\n // Common text class name\n const mutedTextClass = \"fill-muted-foreground\"\n\n return (\n <div\n aria-label={ariaLabel}\n aria-valuemax={max}\n aria-valuemin={min}\n aria-valuenow={clampedValue}\n className={cn(gaugeChartVariants({ size }), className)}\n role=\"meter\"\n >\n <svg\n className=\"overflow-visible\"\n height={height}\n viewBox={`0 0 ${String(width)} ${String(height)}`}\n width={width}\n >\n {/* Zone backgrounds if zones are provided */}\n {zones?.length ? (\n zones.map((zone) => {\n const zoneStartPercent = ((zone.min - min) / (max - min)) * 100\n const zoneEndPercent = ((zone.max - min) / (max - min)) * 100\n const zoneStartAngle = startAngle - (zoneStartPercent / 100) * totalAngle\n const zoneEndAngle = startAngle - (zoneEndPercent / 100) * totalAngle\n const zonePath = describeArc(cx, cy, radius, zoneStartAngle, zoneEndAngle)\n\n return (\n <path\n key={`zone-${String(zone.min)}-${String(zone.max)}`}\n d={zonePath}\n fill=\"none\"\n opacity={0.2}\n stroke={zone.color}\n strokeLinecap=\"round\"\n strokeWidth={sizeConfig.strokeWidth}\n />\n )\n })\n ) : (\n /* Default track background */\n <path\n d={backgroundPath}\n fill=\"none\"\n stroke={MUTED_COLOR_VAR}\n strokeLinecap=\"round\"\n strokeWidth={sizeConfig.strokeWidth}\n />\n )}\n\n {/* Value arc */}\n {valuePath && (\n <path\n style={animated ? {\n strokeDasharray: `${String(valueArcLength)} ${String(arcLength)}`,\n strokeDashoffset: 0,\n } : undefined}\n className={cn(animated && \"transition-all duration-500 ease-out\")}\n d={valuePath}\n fill=\"none\"\n stroke={fillColor}\n strokeLinecap=\"round\"\n strokeWidth={sizeConfig.strokeWidth}\n />\n )}\n\n {/* Center content */}\n <g className=\"pointer-events-none\">\n {showValue && (\n <text\n className={cn(\"fill-foreground font-bold\", sizeConfig.fontSize.value)}\n dominantBaseline={variant === \"semicircle\" ? \"auto\" : \"central\"}\n textAnchor=\"middle\"\n x={cx}\n y={variant === \"semicircle\" ? cy - 8 : cy}\n >\n {clampedValue}\n {unit && (\n <tspan className=\"text-muted-foreground font-normal\" fontSize=\"0.6em\">\n {unit}\n </tspan>\n )}\n </text>\n )}\n\n {label && (\n <text\n className={cn(mutedTextClass, sizeConfig.fontSize.label)}\n dominantBaseline={variant === \"semicircle\" ? \"hanging\" : \"central\"}\n textAnchor=\"middle\"\n x={cx}\n y={variant === \"semicircle\" ? cy + (showValue ? 8 : 0) : cy + (showValue ? 20 : 0)}\n >\n {label}\n </text>\n )}\n </g>\n\n {/* Min/Max labels */}\n {showLabels && variant === \"semicircle\" && (\n <>\n <text\n className={cn(mutedTextClass, sizeConfig.fontSize.minMax)}\n textAnchor=\"start\"\n x={sizeConfig.strokeWidth}\n y={cy + sizeConfig.strokeWidth + 12}\n >\n {min}\n </text>\n <text\n className={cn(mutedTextClass, sizeConfig.fontSize.minMax)}\n textAnchor=\"end\"\n x={width - sizeConfig.strokeWidth}\n y={cy + sizeConfig.strokeWidth + 12}\n >\n {max}\n </text>\n </>\n )}\n\n {showLabels && variant === \"three-quarters\" && (\n <>\n <text\n className={cn(mutedTextClass, sizeConfig.fontSize.minMax)}\n dominantBaseline=\"middle\"\n textAnchor=\"end\"\n x={minLabelPos.x}\n y={minLabelPos.y}\n >\n {min}\n </text>\n <text\n className={cn(mutedTextClass, sizeConfig.fontSize.minMax)}\n dominantBaseline=\"middle\"\n textAnchor=\"start\"\n x={maxLabelPos.x}\n y={maxLabelPos.y}\n >\n {max}\n </text>\n </>\n )}\n </svg>\n </div>\n )\n}\n\nexport { GaugeChart, gaugeChartVariants }\nexport type { VariantProps as GaugeChartVariantProps }\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/data-display/GaugeChart/GaugeChart.tsx"],"names":[],"mappings":"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","file":"chunk-NAI3TX52.js","sourcesContent":["import type { GaugeChartProps, GaugeSize, GaugeVariant, GaugeZone } from \"./GaugeChart.types\"\n\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\n\nconst gaugeChartVariants = cva(\"relative inline-flex items-center justify-center\", {\n variants: {\n size: {\n lg: \"\",\n md: \"\",\n sm: \"\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n})\n\n/** Size configurations for the gauge */\nconst SIZE_CONFIG: Record<GaugeSize, { fontSize: { label: string; minMax: string; value: string }; strokeWidth: number; width: number }> = {\n lg: { fontSize: { label: \"text-base\", minMax: \"text-sm\", value: \"text-3xl\" }, strokeWidth: 16, width: 240 },\n md: { fontSize: { label: \"text-sm\", minMax: \"text-xs\", value: \"text-2xl\" }, strokeWidth: 12, width: 180 },\n sm: { fontSize: { label: \"text-xs\", minMax: \"text-xs\", value: \"text-lg\" }, strokeWidth: 8, width: 120 },\n}\n\n/** Variant configurations for arc angles */\nconst VARIANT_CONFIG: Record<GaugeVariant, { endAngle: number; rotation: number; startAngle: number }> = {\n full: { endAngle: 450, rotation: 0, startAngle: 90 },\n semicircle: { endAngle: 0, rotation: 0, startAngle: 180 },\n \"three-quarters\": { endAngle: -45, rotation: 0, startAngle: 225 },\n}\n\n/** CSS variable for primary color */\nconst PRIMARY_COLOR_VAR = \"var(--primary)\"\n/** CSS variable for muted color */\nconst MUTED_COLOR_VAR = \"var(--muted)\"\n\n/**\n * Calculate SVG arc path\n */\nfunction describeArc(\n cx: number,\n cy: number,\n radius: number,\n startAngle: number,\n endAngle: number\n): string {\n const start = polarToCartesian(cx, cy, radius, endAngle)\n const end = polarToCartesian(cx, cy, radius, startAngle)\n const largeArcFlag = endAngle - startAngle <= 180 ? \"0\" : \"1\"\n\n return [\n \"M\", String(start.x), String(start.y),\n \"A\", String(radius), String(radius), \"0\", largeArcFlag, \"0\", String(end.x), String(end.y),\n ].join(\" \")\n}\n\n/**\n * Convert polar coordinates to cartesian\n */\nfunction polarToCartesian(\n cx: number,\n cy: number,\n radius: number,\n angleInDegrees: number\n): { x: number; y: number } {\n const angleInRadians = ((angleInDegrees - 90) * Math.PI) / 180\n return {\n x: cx + radius * Math.cos(angleInRadians),\n y: cy + radius * Math.sin(angleInRadians),\n }\n}\n\n/**\n * Get the color for a given value based on zones\n */\nfunction getZoneColor(value: number, zones: GaugeZone[] | undefined): string {\n if (!zones?.length) {\n return PRIMARY_COLOR_VAR\n }\n\n for (const zone of zones) {\n if (value >= zone.min && value < zone.max) {\n return zone.color\n }\n }\n\n // Check if value equals the max of the last zone\n const lastZone = zones.at(-1)\n if (lastZone && value >= lastZone.min && value <= lastZone.max) {\n return lastZone.color\n }\n\n return PRIMARY_COLOR_VAR\n}\n\n/**\n * GaugeChart - A speedometer-style gauge for displaying values on a scale\n * @example\n * <GaugeChart label=\"Score\" unit=\"%\" value={75} />\n * @example\n * <GaugeChart\n * max={100}\n * min={-100}\n * value={42}\n * zones={[\n * { color: \"var(--destructive)\", max: 0, min: -100 },\n * { color: \"var(--warning)\", max: 50, min: 0 },\n * { color: \"var(--success)\", max: 100, min: 50 },\n * ]}\n * />\n */\nfunction GaugeChart({\n animated = true,\n className,\n label,\n max = 100,\n min = 0,\n showLabels = true,\n showValue = true,\n size = \"md\",\n unit,\n value,\n variant = \"semicircle\",\n zones,\n}: GaugeChartProps) {\n // Clamp value to min/max range\n const clampedValue = Math.min(Math.max(value, min), max)\n\n // Calculate percentage\n const percentage = ((clampedValue - min) / (max - min)) * 100\n\n // Get configuration\n const sizeConfig = SIZE_CONFIG[size]\n const variantConfig = VARIANT_CONFIG[variant]\n\n // SVG dimensions\n const width = sizeConfig.width\n const height = variant === \"semicircle\"\n ? width / 2 + sizeConfig.strokeWidth * 2\n : variant === \"three-quarters\"\n ? width * 0.75 + sizeConfig.strokeWidth\n : width\n\n const cx = width / 2\n const cy = variant === \"semicircle\"\n ? width / 2\n : variant === \"three-quarters\"\n ? width * 0.5\n : width / 2\n\n const radius = (width - sizeConfig.strokeWidth * 2) / 2\n\n // Calculate arc angles\n const { endAngle, startAngle } = variantConfig\n const totalAngle = Math.abs(startAngle - endAngle)\n const valueAngle = startAngle - (percentage / 100) * totalAngle\n\n // Arc paths\n const backgroundPath = describeArc(cx, cy, radius, startAngle, endAngle)\n const valuePath = percentage > 0\n ? describeArc(cx, cy, radius, startAngle, valueAngle)\n : \"\"\n\n // Get color based on zones\n const fillColor = getZoneColor(clampedValue, zones)\n\n // Calculate arc length for animation\n const circumference = 2 * Math.PI * radius\n const arcLength = (totalAngle / 360) * circumference\n const valueArcLength = (percentage / 100) * arcLength\n\n // ARIA label\n const ariaLabel = label\n ? `${label}: ${String(clampedValue)}${unit ?? \"\"}`\n : `Value: ${String(clampedValue)}${unit ?? \"\"}`\n\n // Calculate label positions for min/max\n const minLabelPos = polarToCartesian(cx, cy, radius + sizeConfig.strokeWidth + 8, startAngle)\n const maxLabelPos = polarToCartesian(cx, cy, radius + sizeConfig.strokeWidth + 8, endAngle)\n\n // Common text class name\n const mutedTextClass = \"fill-muted-foreground\"\n\n return (\n <div\n aria-label={ariaLabel}\n aria-valuemax={max}\n aria-valuemin={min}\n aria-valuenow={clampedValue}\n className={cn(gaugeChartVariants({ size }), className)}\n role=\"meter\"\n >\n <svg\n className=\"overflow-visible\"\n height={height}\n viewBox={`0 0 ${String(width)} ${String(height)}`}\n width={width}\n >\n {/* Zone backgrounds if zones are provided */}\n {zones?.length ? (\n zones.map((zone) => {\n const zoneStartPercent = ((zone.min - min) / (max - min)) * 100\n const zoneEndPercent = ((zone.max - min) / (max - min)) * 100\n const zoneStartAngle = startAngle - (zoneStartPercent / 100) * totalAngle\n const zoneEndAngle = startAngle - (zoneEndPercent / 100) * totalAngle\n const zonePath = describeArc(cx, cy, radius, zoneStartAngle, zoneEndAngle)\n\n return (\n <path\n key={`zone-${String(zone.min)}-${String(zone.max)}`}\n d={zonePath}\n fill=\"none\"\n opacity={0.2}\n stroke={zone.color}\n strokeLinecap=\"round\"\n strokeWidth={sizeConfig.strokeWidth}\n />\n )\n })\n ) : (\n /* Default track background */\n <path\n d={backgroundPath}\n fill=\"none\"\n stroke={MUTED_COLOR_VAR}\n strokeLinecap=\"round\"\n strokeWidth={sizeConfig.strokeWidth}\n />\n )}\n\n {/* Value arc */}\n {valuePath && (\n <path\n style={animated ? {\n strokeDasharray: `${String(valueArcLength)} ${String(arcLength)}`,\n strokeDashoffset: 0,\n } : undefined}\n className={cn(animated && \"transition-all duration-500 ease-out\")}\n d={valuePath}\n fill=\"none\"\n stroke={fillColor}\n strokeLinecap=\"round\"\n strokeWidth={sizeConfig.strokeWidth}\n />\n )}\n\n {/* Center content */}\n <g className=\"pointer-events-none\">\n {showValue && (\n <text\n className={cn(\"fill-foreground font-bold\", sizeConfig.fontSize.value)}\n dominantBaseline={variant === \"semicircle\" ? \"auto\" : \"central\"}\n textAnchor=\"middle\"\n x={cx}\n y={variant === \"semicircle\" ? cy - 8 : cy}\n >\n {clampedValue}\n {unit && (\n <tspan className=\"text-muted-foreground font-normal\" fontSize=\"0.6em\">\n {unit}\n </tspan>\n )}\n </text>\n )}\n\n {label && (\n <text\n className={cn(mutedTextClass, sizeConfig.fontSize.label)}\n dominantBaseline={variant === \"semicircle\" ? \"hanging\" : \"central\"}\n textAnchor=\"middle\"\n x={cx}\n y={variant === \"semicircle\" ? cy + (showValue ? 8 : 0) : cy + (showValue ? 20 : 0)}\n >\n {label}\n </text>\n )}\n </g>\n\n {/* Min/Max labels */}\n {showLabels && variant === \"semicircle\" && (\n <>\n <text\n className={cn(mutedTextClass, sizeConfig.fontSize.minMax)}\n textAnchor=\"start\"\n x={sizeConfig.strokeWidth}\n y={cy + sizeConfig.strokeWidth + 12}\n >\n {min}\n </text>\n <text\n className={cn(mutedTextClass, sizeConfig.fontSize.minMax)}\n textAnchor=\"end\"\n x={width - sizeConfig.strokeWidth}\n y={cy + sizeConfig.strokeWidth + 12}\n >\n {max}\n </text>\n </>\n )}\n\n {showLabels && variant === \"three-quarters\" && (\n <>\n <text\n className={cn(mutedTextClass, sizeConfig.fontSize.minMax)}\n dominantBaseline=\"middle\"\n textAnchor=\"end\"\n x={minLabelPos.x}\n y={minLabelPos.y}\n >\n {min}\n </text>\n <text\n className={cn(mutedTextClass, sizeConfig.fontSize.minMax)}\n dominantBaseline=\"middle\"\n textAnchor=\"start\"\n x={maxLabelPos.x}\n y={maxLabelPos.y}\n >\n {max}\n </text>\n </>\n )}\n </svg>\n </div>\n )\n}\n\nexport { GaugeChart, gaugeChartVariants }\nexport type { VariantProps as GaugeChartVariantProps }\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { cn } from './chunk-
|
|
1
|
+
import { cn } from './chunk-RVAYDRMA.js';
|
|
2
2
|
import { cva } from 'class-variance-authority';
|
|
3
3
|
import { jsx } from 'react/jsx-runtime';
|
|
4
4
|
|
|
@@ -115,5 +115,5 @@ function SkeletonLoader({
|
|
|
115
115
|
}
|
|
116
116
|
|
|
117
117
|
export { SkeletonLoader, skeletonLoaderVariants };
|
|
118
|
-
//# sourceMappingURL=chunk-
|
|
119
|
-
//# sourceMappingURL=chunk-
|
|
118
|
+
//# sourceMappingURL=chunk-NGX3ITG4.js.map
|
|
119
|
+
//# sourceMappingURL=chunk-NGX3ITG4.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/primitives/SkeletonLoader/SkeletonLoader.variants.ts","../src/components/primitives/SkeletonLoader/SkeletonLoader.tsx"],"names":[],"mappings":"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","file":"chunk-QHKOBGLW.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * SkeletonLoader variants using CVA\n */\nexport const skeletonLoaderVariants = cva(\"bg-[color:var(--skeleton-bg)]\", {\n variants: {\n /**\n * Shape variant determines the skeleton's visual form\n */\n shape: {\n /** Rectangular shape with rounded corners (default) */\n rectangle: \"rounded-[var(--skeleton-shape-rectangle-border-radius)]\",\n /** Circular shape for avatars */\n circle: \"rounded-[var(--skeleton-shape-circle-border-radius)] aspect-[var(--skeleton-shape-circle-aspect-ratio)]\",\n /** Single line of text */\n text: \"h-[var(--skeleton-shape-text-height)] rounded-[var(--skeleton-shape-text-border-radius)]\",\n /** Heading text */\n heading: \"h-[var(--skeleton-shape-heading-height)] rounded-[var(--skeleton-shape-heading-border-radius)]\",\n /** Square shape */\n square: \"aspect-[var(--skeleton-shape-square-aspect-ratio)] rounded-[var(--skeleton-shape-square-border-radius)]\",\n /** Pill shape for tags/badges */\n pill: \"rounded-[var(--skeleton-shape-pill-border-radius)]\",\n },\n /**\n * Size preset for common use cases\n */\n size: {\n xs: \"\",\n sm: \"\",\n md: \"\",\n lg: \"\",\n xl: \"\",\n full: \"w-full\",\n },\n /**\n * Animation variant\n * - pulse: Subtle opacity fade (default)\n * - shimmer: Left-to-right shine effect\n * - wave: PrimeVue-style wave animation with gradient\n * - none: No animation\n */\n animation: {\n pulse: \"animate-pulse\",\n shimmer:\n \"relative overflow-hidden before:absolute before:inset-0 before:-translate-x-full before:animate-[shimmer_2s_infinite] before:bg-gradient-to-r before:from-transparent before:via-white/20 before:to-transparent\",\n wave: \"relative overflow-hidden before:absolute before:inset-0 before:animate-[wave_1.5s_ease-in-out_infinite] before:bg-gradient-to-r before:from-transparent before:via-[color:var(--skeleton-wave-color,rgba(255,255,255,0.4))] before:to-transparent\",\n none: \"animate-none\",\n },\n },\n compoundVariants: [\n // Rectangle sizes (default shape) — per Bowser audit SkeletonLoader: rectangle+md rendered 0x0 (no default dims)\n { shape: \"rectangle\", size: \"xs\", class: \"h-3 w-24\" },\n { shape: \"rectangle\", size: \"sm\", class: \"h-4 w-32\" },\n { shape: \"rectangle\", size: \"md\", class: \"h-5 w-48\" },\n { shape: \"rectangle\", size: \"lg\", class: \"h-8 w-64\" },\n { shape: \"rectangle\", size: \"xl\", class: \"h-12 w-80\" },\n // Circle sizes\n { shape: \"circle\", size: \"xs\", class: \"size-[var(--skeleton-size-circle-xs)]\" },\n { shape: \"circle\", size: \"sm\", class: \"size-[var(--skeleton-size-circle-sm)]\" },\n { shape: \"circle\", size: \"md\", class: \"size-[var(--skeleton-size-circle-md)]\" },\n { shape: \"circle\", size: \"lg\", class: \"size-[var(--skeleton-size-circle-lg)]\" },\n { shape: \"circle\", size: \"xl\", class: \"size-[var(--skeleton-size-circle-xl)]\" },\n // Square sizes\n // Reuse circle sizes for square since they are typically same dimensions\n { shape: \"square\", size: \"xs\", class: \"size-[var(--skeleton-size-circle-xs)]\" },\n { shape: \"square\", size: \"sm\", class: \"size-[var(--skeleton-size-circle-sm)]\" },\n { shape: \"square\", size: \"md\", class: \"size-[var(--skeleton-size-circle-md)]\" },\n { shape: \"square\", size: \"lg\", class: \"size-[var(--skeleton-size-circle-lg)]\" },\n { shape: \"square\", size: \"xl\", class: \"size-[var(--skeleton-size-circle-xl)]\" },\n // Text line sizes (width)\n { shape: \"text\", size: \"xs\", class: \"w-[var(--skeleton-size-text-xs)]\" },\n { shape: \"text\", size: \"sm\", class: \"w-[var(--skeleton-size-text-sm)]\" },\n { shape: \"text\", size: \"md\", class: \"w-[var(--skeleton-size-text-md)]\" },\n { shape: \"text\", size: \"lg\", class: \"w-[var(--skeleton-size-text-lg)]\" },\n { shape: \"text\", size: \"xl\", class: \"w-[var(--skeleton-size-text-xl)]\" },\n // Heading sizes (width) - reusing text widths but slightly adjusted or mapped if needed\n // For now mapping to text sizes but could be separate tokens if design demands\n { shape: \"heading\", size: \"xs\", class: \"w-[var(--skeleton-size-text-sm)]\" },\n { shape: \"heading\", size: \"sm\", class: \"w-[var(--skeleton-size-text-md)]\" },\n { shape: \"heading\", size: \"md\", class: \"w-[var(--skeleton-size-text-lg)]\" },\n { shape: \"heading\", size: \"lg\", class: \"w-[var(--skeleton-size-text-xl)]\" },\n { shape: \"heading\", size: \"xl\", class: \"w-full\" }, // fallback\n // Pill sizes\n { shape: \"pill\", size: \"xs\", class: \"h-[var(--skeleton-size-pill-xs-height)] w-[var(--skeleton-size-pill-xs-width)]\" },\n { shape: \"pill\", size: \"sm\", class: \"h-[var(--skeleton-size-pill-sm-height)] w-[var(--skeleton-size-pill-sm-width)]\" },\n { shape: \"pill\", size: \"md\", class: \"h-[var(--skeleton-size-pill-md-height)] w-[var(--skeleton-size-pill-md-width)]\" },\n { shape: \"pill\", size: \"lg\", class: \"h-[var(--skeleton-size-pill-lg-height)] w-[var(--skeleton-size-pill-lg-width)]\" },\n { shape: \"pill\", size: \"xl\", class: \"h-[var(--skeleton-size-pill-xl-height)] w-[var(--skeleton-size-pill-xl-width)]\" },\n ],\n defaultVariants: {\n shape: \"rectangle\",\n size: \"md\",\n animation: \"pulse\",\n },\n }\n)\n\nexport type SkeletonLoaderVariants = VariantProps<typeof skeletonLoaderVariants>\n","import type { SkeletonLoaderProps } from \"./SkeletonLoader.types\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { skeletonLoaderVariants } from \"./SkeletonLoader.variants\"\n\n/**\n * SkeletonLoader component for displaying placeholder loading states.\n *\n * Provides visual feedback during content loading with multiple shape\n * and animation variants.\n *\n * @example\n * ```tsx\n * // Text line placeholder\n * <SkeletonLoader shape=\"text\" size=\"md\" />\n *\n * // Avatar placeholder\n * <SkeletonLoader shape=\"circle\" size=\"lg\" />\n *\n * // Card content placeholder\n * <div className=\"space-y-2\">\n * <SkeletonLoader shape=\"heading\" size=\"lg\" />\n * <SkeletonLoader shape=\"text\" size=\"full\" />\n * <SkeletonLoader shape=\"text\" size=\"lg\" />\n * </div>\n * ```\n */\nfunction SkeletonLoader({\n className,\n shape,\n size,\n animation,\n ...props\n}: SkeletonLoaderProps) {\n return (\n <div\n aria-hidden=\"true\"\n className={cn(skeletonLoaderVariants({ shape, size, animation }), className)}\n data-slot=\"skeleton-loader\"\n {...props}\n />\n )\n}\n\nexport { SkeletonLoader, skeletonLoaderVariants }\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/primitives/SkeletonLoader/SkeletonLoader.variants.ts","../src/components/primitives/SkeletonLoader/SkeletonLoader.tsx"],"names":[],"mappings":"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","file":"chunk-NGX3ITG4.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * SkeletonLoader variants using CVA\n */\nexport const skeletonLoaderVariants = cva(\"bg-[color:var(--skeleton-bg)]\", {\n variants: {\n /**\n * Shape variant determines the skeleton's visual form\n */\n shape: {\n /** Rectangular shape with rounded corners (default) */\n rectangle: \"rounded-[var(--skeleton-shape-rectangle-border-radius)]\",\n /** Circular shape for avatars */\n circle: \"rounded-[var(--skeleton-shape-circle-border-radius)] aspect-[var(--skeleton-shape-circle-aspect-ratio)]\",\n /** Single line of text */\n text: \"h-[var(--skeleton-shape-text-height)] rounded-[var(--skeleton-shape-text-border-radius)]\",\n /** Heading text */\n heading: \"h-[var(--skeleton-shape-heading-height)] rounded-[var(--skeleton-shape-heading-border-radius)]\",\n /** Square shape */\n square: \"aspect-[var(--skeleton-shape-square-aspect-ratio)] rounded-[var(--skeleton-shape-square-border-radius)]\",\n /** Pill shape for tags/badges */\n pill: \"rounded-[var(--skeleton-shape-pill-border-radius)]\",\n },\n /**\n * Size preset for common use cases\n */\n size: {\n xs: \"\",\n sm: \"\",\n md: \"\",\n lg: \"\",\n xl: \"\",\n full: \"w-full\",\n },\n /**\n * Animation variant\n * - pulse: Subtle opacity fade (default)\n * - shimmer: Left-to-right shine effect\n * - wave: PrimeVue-style wave animation with gradient\n * - none: No animation\n */\n animation: {\n pulse: \"animate-pulse\",\n shimmer:\n \"relative overflow-hidden before:absolute before:inset-0 before:-translate-x-full before:animate-[shimmer_2s_infinite] before:bg-gradient-to-r before:from-transparent before:via-white/20 before:to-transparent\",\n wave: \"relative overflow-hidden before:absolute before:inset-0 before:animate-[wave_1.5s_ease-in-out_infinite] before:bg-gradient-to-r before:from-transparent before:via-[color:var(--skeleton-wave-color,rgba(255,255,255,0.4))] before:to-transparent\",\n none: \"animate-none\",\n },\n },\n compoundVariants: [\n // Rectangle sizes (default shape) — per Bowser audit SkeletonLoader: rectangle+md rendered 0x0 (no default dims)\n { shape: \"rectangle\", size: \"xs\", class: \"h-3 w-24\" },\n { shape: \"rectangle\", size: \"sm\", class: \"h-4 w-32\" },\n { shape: \"rectangle\", size: \"md\", class: \"h-5 w-48\" },\n { shape: \"rectangle\", size: \"lg\", class: \"h-8 w-64\" },\n { shape: \"rectangle\", size: \"xl\", class: \"h-12 w-80\" },\n // Circle sizes\n { shape: \"circle\", size: \"xs\", class: \"size-[var(--skeleton-size-circle-xs)]\" },\n { shape: \"circle\", size: \"sm\", class: \"size-[var(--skeleton-size-circle-sm)]\" },\n { shape: \"circle\", size: \"md\", class: \"size-[var(--skeleton-size-circle-md)]\" },\n { shape: \"circle\", size: \"lg\", class: \"size-[var(--skeleton-size-circle-lg)]\" },\n { shape: \"circle\", size: \"xl\", class: \"size-[var(--skeleton-size-circle-xl)]\" },\n // Square sizes\n // Reuse circle sizes for square since they are typically same dimensions\n { shape: \"square\", size: \"xs\", class: \"size-[var(--skeleton-size-circle-xs)]\" },\n { shape: \"square\", size: \"sm\", class: \"size-[var(--skeleton-size-circle-sm)]\" },\n { shape: \"square\", size: \"md\", class: \"size-[var(--skeleton-size-circle-md)]\" },\n { shape: \"square\", size: \"lg\", class: \"size-[var(--skeleton-size-circle-lg)]\" },\n { shape: \"square\", size: \"xl\", class: \"size-[var(--skeleton-size-circle-xl)]\" },\n // Text line sizes (width)\n { shape: \"text\", size: \"xs\", class: \"w-[var(--skeleton-size-text-xs)]\" },\n { shape: \"text\", size: \"sm\", class: \"w-[var(--skeleton-size-text-sm)]\" },\n { shape: \"text\", size: \"md\", class: \"w-[var(--skeleton-size-text-md)]\" },\n { shape: \"text\", size: \"lg\", class: \"w-[var(--skeleton-size-text-lg)]\" },\n { shape: \"text\", size: \"xl\", class: \"w-[var(--skeleton-size-text-xl)]\" },\n // Heading sizes (width) - reusing text widths but slightly adjusted or mapped if needed\n // For now mapping to text sizes but could be separate tokens if design demands\n { shape: \"heading\", size: \"xs\", class: \"w-[var(--skeleton-size-text-sm)]\" },\n { shape: \"heading\", size: \"sm\", class: \"w-[var(--skeleton-size-text-md)]\" },\n { shape: \"heading\", size: \"md\", class: \"w-[var(--skeleton-size-text-lg)]\" },\n { shape: \"heading\", size: \"lg\", class: \"w-[var(--skeleton-size-text-xl)]\" },\n { shape: \"heading\", size: \"xl\", class: \"w-full\" }, // fallback\n // Pill sizes\n { shape: \"pill\", size: \"xs\", class: \"h-[var(--skeleton-size-pill-xs-height)] w-[var(--skeleton-size-pill-xs-width)]\" },\n { shape: \"pill\", size: \"sm\", class: \"h-[var(--skeleton-size-pill-sm-height)] w-[var(--skeleton-size-pill-sm-width)]\" },\n { shape: \"pill\", size: \"md\", class: \"h-[var(--skeleton-size-pill-md-height)] w-[var(--skeleton-size-pill-md-width)]\" },\n { shape: \"pill\", size: \"lg\", class: \"h-[var(--skeleton-size-pill-lg-height)] w-[var(--skeleton-size-pill-lg-width)]\" },\n { shape: \"pill\", size: \"xl\", class: \"h-[var(--skeleton-size-pill-xl-height)] w-[var(--skeleton-size-pill-xl-width)]\" },\n ],\n defaultVariants: {\n shape: \"rectangle\",\n size: \"md\",\n animation: \"pulse\",\n },\n }\n)\n\nexport type SkeletonLoaderVariants = VariantProps<typeof skeletonLoaderVariants>\n","import type { SkeletonLoaderProps } from \"./SkeletonLoader.types\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { skeletonLoaderVariants } from \"./SkeletonLoader.variants\"\n\n/**\n * SkeletonLoader component for displaying placeholder loading states.\n *\n * Provides visual feedback during content loading with multiple shape\n * and animation variants.\n *\n * @example\n * ```tsx\n * // Text line placeholder\n * <SkeletonLoader shape=\"text\" size=\"md\" />\n *\n * // Avatar placeholder\n * <SkeletonLoader shape=\"circle\" size=\"lg\" />\n *\n * // Card content placeholder\n * <div className=\"space-y-2\">\n * <SkeletonLoader shape=\"heading\" size=\"lg\" />\n * <SkeletonLoader shape=\"text\" size=\"full\" />\n * <SkeletonLoader shape=\"text\" size=\"lg\" />\n * </div>\n * ```\n */\nfunction SkeletonLoader({\n className,\n shape,\n size,\n animation,\n ...props\n}: SkeletonLoaderProps) {\n return (\n <div\n aria-hidden=\"true\"\n className={cn(skeletonLoaderVariants({ shape, size, animation }), className)}\n data-slot=\"skeleton-loader\"\n {...props}\n />\n )\n}\n\nexport { SkeletonLoader, skeletonLoaderVariants }\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { cn } from './chunk-
|
|
1
|
+
import { cn } from './chunk-RVAYDRMA.js';
|
|
2
2
|
import 'react';
|
|
3
3
|
import { cva } from 'class-variance-authority';
|
|
4
4
|
import { jsx } from 'react/jsx-runtime';
|
|
@@ -232,5 +232,5 @@ function TableCaption({
|
|
|
232
232
|
}
|
|
233
233
|
|
|
234
234
|
export { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow };
|
|
235
|
-
//# sourceMappingURL=chunk-
|
|
236
|
-
//# sourceMappingURL=chunk-
|
|
235
|
+
//# sourceMappingURL=chunk-NHUUSXBL.js.map
|
|
236
|
+
//# sourceMappingURL=chunk-NHUUSXBL.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/data-display/Table/Table.variants.ts","../src/components/data-display/Table/Table.tsx"],"names":[],"mappings":";;;;;AAQO,IAAM,sBAAA,GAAyB,GAAA;AAAA;AAAA,EAEpC,iCAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,QAAA,EAAU;AAAA,QACR,IAAA,EAAM,mBAAA;AAAA,QACN,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,QAAA,EAAU;AAAA;AACZ;AAEJ,CAAA;AAKO,IAAM,aAAA,GAAgB,GAAA;AAAA;AAAA,EAE3B,4DAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,iGAAA;AAAA,QACT,OAAA,EAAS,iGAAA;AAAA,QACT,WAAA,EAAa;AAAA;AACf,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ,CAAA;AAKO,IAAM,gBAAA,GAAmB,GAAA;AAAA;AAAA,EAE9B,mEAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,SAAA,EAAW;AAAA,QACT,IAAA,EAAM,yCAAA;AAAA,QACN,KAAA,EAAO;AAAA,OACT;AAAA,MACA,QAAA,EAAU;AAAA,QACR,IAAA,EAAM,sCAAA;AAAA,QACN,KAAA,EAAO;AAAA,OACT;AAAA,MACA,OAAA,EAAS;AAAA,QACP,IAAA,EAAM,0CAAA;AAAA,QACN,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,SAAA,EAAW,IAAA;AAAA,MACX,QAAA,EAAU,KAAA;AAAA,MACV,OAAA,EAAS;AAAA;AACX;AAEJ,CAAA;AAKO,IAAM,iBAAA,GAAoB,GAAA;AAAA;AAAA,EAE/B,wMAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,QAAA,EAAU;AAAA,QACR,IAAA,EAAM,oEAAA;AAAA,QACN,KAAA,EAAO;AAAA,OACT;AAAA,MACA,MAAA,EAAQ;AAAA,QACN,IAAA,EAAM,gDAAA;AAAA,QACN,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,QAAA,EAAU,KAAA;AAAA,MACV,MAAA,EAAQ;AAAA;AACV;AAEJ,CAAA;AAKO,IAAM,iBAAA,GAAoB,GAAA;AAAA;AAAA,EAE/B,sGAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,KAAA,EAAO;AAAA,QACL,IAAA,EAAM,WAAA;AAAA,QACN,MAAA,EAAQ,aAAA;AAAA,QACR,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;AC7FA,SAAS,KAAA,CAAM;AAAA,EACb,SAAA;AAAA,EACA,GAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAe;AACb,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,sBAAA,CAAuB,EAAE,QAAA,EAAU,CAAA;AAAA,QACnC;AAAA,OACF;AAAA,MACA,WAAA,EAAU,iBAAA;AAAA,MAEV,QAAA,kBAAA,GAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,GAAA;AAAA,UACA,WAAW,EAAA,CAAG,aAAA,CAAc,EAAE,OAAA,EAAS,GAAG,SAAS,CAAA;AAAA,UACnD,WAAA,EAAU,OAAA;AAAA,UACT,GAAG;AAAA;AAAA;AACN;AAAA,GACF;AAEJ;AAEA,SAAS,WAAA,CAAY,EAAE,SAAA,EAAW,GAAG,OAAM,EAAkC;AAC3E,EAAA,uBACE,GAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,iBAAA,EAAmB,SAAS,CAAA;AAAA,MAC1C,WAAA,EAAU,cAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,SAAA,CAAU,EAAE,SAAA,EAAW,GAAG,OAAM,EAAkC;AACzE,EAAA,uBACE,GAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,4BAAA,EAA8B,SAAS,CAAA;AAAA,MACrD,WAAA,EAAU,YAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,WAAA,CAAY,EAAE,SAAA,EAAW,GAAG,OAAM,EAAkC;AAC3E,EAAA,uBACE,GAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,yHAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,WAAA,EAAU,cAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACN;AAEJ;AAIA,SAAS,QAAA,CAAS;AAAA,EAChB,SAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAkB;AAChB,EAAA,uBACE,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,gBAAA,CAAiB,EAAE,SAAA,EAAW,QAAA,EAAU,SAAS,CAAA;AAAA,QACjD;AAAA,OACF;AAAA,MACA,WAAA,EAAU,WAAA;AAAA,MACV,YAAA,EAAY,WAAW,UAAA,GAAa,MAAA;AAAA,MACnC,GAAG;AAAA;AAAA,GACN;AAEJ;AAQA,IAAM,WAAA,GAA+E;AAAA,EACnF,GAAA,EAAK,WAAA;AAAA,EACL,IAAA,EAAM,YAAA;AAAA,EACN,IAAA,EAAM;AACR,CAAA;AAEA,SAAS,SAAA,CAAU;AAAA,EACjB,SAAA;AAAA,EACA,KAAA,GAAQ,KAAA;AAAA,EACR,QAAA;AAAA,EACA,MAAA;AAAA,EACA,aAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAmB;AACjB,EAAA,uBACE,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,iBAAA,CAAkB,EAAE,QAAA,EAAU,MAAA,EAAQ,CAAA;AAAA,QACtC,qEAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,WAAA,EAAW,aAAA,GAAgB,WAAA,CAAY,aAAa,CAAA,GAAI,MAAA;AAAA,MACxD,WAAA,EAAU,YAAA;AAAA,MACV,KAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAKA,SAAS,UAAU,EAAE,SAAA,EAAW,KAAA,EAAO,GAAG,OAAM,EAAmB;AACjE,EAAA,uBACE,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,iBAAA,CAAkB,EAAE,KAAA,EAAO,CAAA;AAAA,QAC3B,qEAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,WAAA,EAAU,YAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,YAAA,CAAa;AAAA,EACpB,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAoC;AAClC,EAAA,uBACE,GAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,mHAAA,EAAqH,SAAS,CAAA;AAAA,MAC5I,WAAA,EAAU,eAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACN;AAEJ","file":"chunk-5SUD32RK.js","sourcesContent":["// Table/Table.variants.ts\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * Table container style variants using CVA\n *\n * @see https://cva.style/docs\n */\nexport const tableContainerVariants = cva(\n // Base styles (always applied)\n \"relative w-full overflow-x-auto\",\n {\n variants: {\n bordered: {\n true: \"rounded-md border\",\n false: \"\",\n },\n },\n defaultVariants: {\n bordered: false,\n },\n }\n)\n\n/**\n * Table style variants\n */\nexport const tableVariants = cva(\n // Base styles (always applied)\n \"w-full caption-bottom text-[length:var(--table-cell-text)]\",\n {\n variants: {\n density: {\n compact: \"[&_td]:py-[var(--table-cell-padding-compact-y)] [&_th]:py-[var(--table-cell-padding-compact-y)]\",\n default: \"[&_td]:py-[var(--table-cell-padding-default-y)] [&_th]:py-[var(--table-cell-padding-default-y)]\",\n comfortable: \"[&_td]:py-[var(--table-cell-padding-comfortable-y)] [&_th]:py-[var(--table-cell-padding-comfortable-y)]\",\n },\n },\n defaultVariants: {\n density: \"default\",\n },\n }\n)\n\n/**\n * Table row style variants\n */\nexport const tableRowVariants = cva(\n // Base styles (always applied)\n \"border-b border-[color:var(--table-row-border)] transition-colors\",\n {\n variants: {\n hoverable: {\n true: \"hover:bg-[color:var(--table-row-hover)]\",\n false: \"\",\n },\n selected: {\n true: \"bg-[color:var(--table-row-selected)]\",\n false: \"\",\n },\n striped: {\n true: \"even:bg-[color:var(--table-row-striped)]\",\n false: \"\",\n },\n },\n defaultVariants: {\n hoverable: true,\n selected: false,\n striped: false,\n },\n }\n)\n\n/**\n * Table header cell style variants\n */\nexport const tableHeadVariants = cva(\n // Base styles (always applied)\n \"text-[length:var(--text-size-sm-font-size)] h-[var(--table-header-height)] px-[var(--table-header-padding-x)] text-left align-middle font-medium text-[color:var(--table-header-fg)] whitespace-nowrap\",\n {\n variants: {\n sortable: {\n true: \"cursor-pointer select-none hover:bg-[color:var(--table-row-hover)]\",\n false: \"\",\n },\n sticky: {\n true: \"sticky top-0 bg-[color:var(--background)] z-10\",\n false: \"\",\n },\n },\n defaultVariants: {\n sortable: false,\n sticky: false,\n },\n }\n)\n\n/**\n * Table cell style variants\n */\nexport const tableCellVariants = cva(\n // Base styles (always applied)\n \"px-[var(--table-cell-padding-x)] align-middle whitespace-nowrap text-[length:var(--table-cell-text)]\",\n {\n variants: {\n align: {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n },\n },\n defaultVariants: {\n align: \"left\",\n },\n }\n)\n\n// Export variant prop types\nexport type TableContainerVariantProps = VariantProps<typeof tableContainerVariants>\nexport type TableVariantProps = VariantProps<typeof tableVariants>\nexport type TableRowVariantProps = VariantProps<typeof tableRowVariants>\nexport type TableHeadVariantProps = VariantProps<typeof tableHeadVariants>\nexport type TableCellVariantProps = VariantProps<typeof tableCellVariants>\n","import type { TableSortDirection } from \"./Table.types\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n type TableCellVariantProps,\n tableCellVariants,\n type TableContainerVariantProps,\n tableContainerVariants,\n type TableHeadVariantProps,\n tableHeadVariants,\n type TableRowVariantProps,\n tableRowVariants,\n type TableVariantProps,\n tableVariants,\n} from \"./Table.variants\"\n\ntype TableProps = React.ComponentProps<\"table\"> &\n TableContainerVariantProps &\n TableVariantProps\n\nfunction Table({\n className,\n ref,\n bordered,\n density,\n ...props\n}: TableProps) {\n return (\n <div\n className={cn(\n tableContainerVariants({ bordered }),\n \"w-full overflow-x-auto\"\n )}\n data-slot=\"table-container\"\n >\n <table\n ref={ref}\n className={cn(tableVariants({ density }), className)}\n data-slot=\"table\"\n {...props}\n />\n </div>\n )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n className={cn(\"[&_tr]:border-b\", className)}\n data-slot=\"table-header\"\n {...props}\n />\n )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n data-slot=\"table-body\"\n {...props}\n />\n )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n className={cn(\n \"bg-[color:var(--table-footer-bg)] border-[color:var(--table-footer-border)] border-t font-medium [&>tr]:last:border-b-0\",\n className\n )}\n data-slot=\"table-footer\"\n {...props}\n />\n )\n}\n\ntype TableRowProps = React.ComponentProps<\"tr\"> & TableRowVariantProps\n\nfunction TableRow({\n className,\n hoverable,\n selected,\n striped,\n ...props\n}: TableRowProps) {\n return (\n <tr\n className={cn(\n tableRowVariants({ hoverable, selected, striped }),\n className\n )}\n data-slot=\"table-row\"\n data-state={selected ? \"selected\" : undefined}\n {...props}\n />\n )\n}\n\ntype TableHeadProps = React.ComponentProps<\"th\"> &\n TableHeadVariantProps & {\n /** Drives the `aria-sort` attribute when the column is sorted. */\n sortDirection?: TableSortDirection\n }\n\nconst ariaSortMap: Record<TableSortDirection, \"ascending\" | \"descending\" | \"none\"> = {\n asc: \"ascending\",\n desc: \"descending\",\n none: \"none\",\n}\n\nfunction TableHead({\n className,\n scope = \"col\",\n sortable,\n sticky,\n sortDirection,\n ...props\n}: TableHeadProps) {\n return (\n <th\n className={cn(\n tableHeadVariants({ sortable, sticky }),\n \"[&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n aria-sort={sortDirection ? ariaSortMap[sortDirection] : undefined}\n data-slot=\"table-head\"\n scope={scope}\n {...props}\n />\n )\n}\n\ntype TableCellProps = Omit<React.ComponentProps<\"td\">, \"align\"> &\n TableCellVariantProps\n\nfunction TableCell({ className, align, ...props }: TableCellProps) {\n return (\n <td\n className={cn(\n tableCellVariants({ align }),\n \"[&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n data-slot=\"table-cell\"\n {...props}\n />\n )\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n className={cn(\"text-[color:var(--table-caption-fg)] mt-[var(--table-caption-margin-top)] text-[length:var(--table-caption-text)]\", className)}\n data-slot=\"table-caption\"\n {...props}\n />\n )\n}\n\nexport {\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/data-display/Table/Table.variants.ts","../src/components/data-display/Table/Table.tsx"],"names":[],"mappings":"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","file":"chunk-NHUUSXBL.js","sourcesContent":["// Table/Table.variants.ts\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * Table container style variants using CVA\n *\n * @see https://cva.style/docs\n */\nexport const tableContainerVariants = cva(\n // Base styles (always applied)\n \"relative w-full overflow-x-auto\",\n {\n variants: {\n bordered: {\n true: \"rounded-md border\",\n false: \"\",\n },\n },\n defaultVariants: {\n bordered: false,\n },\n }\n)\n\n/**\n * Table style variants\n */\nexport const tableVariants = cva(\n // Base styles (always applied)\n \"w-full caption-bottom text-[length:var(--table-cell-text)]\",\n {\n variants: {\n density: {\n compact: \"[&_td]:py-[var(--table-cell-padding-compact-y)] [&_th]:py-[var(--table-cell-padding-compact-y)]\",\n default: \"[&_td]:py-[var(--table-cell-padding-default-y)] [&_th]:py-[var(--table-cell-padding-default-y)]\",\n comfortable: \"[&_td]:py-[var(--table-cell-padding-comfortable-y)] [&_th]:py-[var(--table-cell-padding-comfortable-y)]\",\n },\n },\n defaultVariants: {\n density: \"default\",\n },\n }\n)\n\n/**\n * Table row style variants\n */\nexport const tableRowVariants = cva(\n // Base styles (always applied)\n \"border-b border-[color:var(--table-row-border)] transition-colors\",\n {\n variants: {\n hoverable: {\n true: \"hover:bg-[color:var(--table-row-hover)]\",\n false: \"\",\n },\n selected: {\n true: \"bg-[color:var(--table-row-selected)]\",\n false: \"\",\n },\n striped: {\n true: \"even:bg-[color:var(--table-row-striped)]\",\n false: \"\",\n },\n },\n defaultVariants: {\n hoverable: true,\n selected: false,\n striped: false,\n },\n }\n)\n\n/**\n * Table header cell style variants\n */\nexport const tableHeadVariants = cva(\n // Base styles (always applied)\n \"text-[length:var(--text-size-sm-font-size)] h-[var(--table-header-height)] px-[var(--table-header-padding-x)] text-left align-middle font-medium text-[color:var(--table-header-fg)] whitespace-nowrap\",\n {\n variants: {\n sortable: {\n true: \"cursor-pointer select-none hover:bg-[color:var(--table-row-hover)]\",\n false: \"\",\n },\n sticky: {\n true: \"sticky top-0 bg-[color:var(--background)] z-10\",\n false: \"\",\n },\n },\n defaultVariants: {\n sortable: false,\n sticky: false,\n },\n }\n)\n\n/**\n * Table cell style variants\n */\nexport const tableCellVariants = cva(\n // Base styles (always applied)\n \"px-[var(--table-cell-padding-x)] align-middle whitespace-nowrap text-[length:var(--table-cell-text)]\",\n {\n variants: {\n align: {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n },\n },\n defaultVariants: {\n align: \"left\",\n },\n }\n)\n\n// Export variant prop types\nexport type TableContainerVariantProps = VariantProps<typeof tableContainerVariants>\nexport type TableVariantProps = VariantProps<typeof tableVariants>\nexport type TableRowVariantProps = VariantProps<typeof tableRowVariants>\nexport type TableHeadVariantProps = VariantProps<typeof tableHeadVariants>\nexport type TableCellVariantProps = VariantProps<typeof tableCellVariants>\n","import type { TableSortDirection } from \"./Table.types\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n type TableCellVariantProps,\n tableCellVariants,\n type TableContainerVariantProps,\n tableContainerVariants,\n type TableHeadVariantProps,\n tableHeadVariants,\n type TableRowVariantProps,\n tableRowVariants,\n type TableVariantProps,\n tableVariants,\n} from \"./Table.variants\"\n\ntype TableProps = React.ComponentProps<\"table\"> &\n TableContainerVariantProps &\n TableVariantProps\n\nfunction Table({\n className,\n ref,\n bordered,\n density,\n ...props\n}: TableProps) {\n return (\n <div\n className={cn(\n tableContainerVariants({ bordered }),\n \"w-full overflow-x-auto\"\n )}\n data-slot=\"table-container\"\n >\n <table\n ref={ref}\n className={cn(tableVariants({ density }), className)}\n data-slot=\"table\"\n {...props}\n />\n </div>\n )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n className={cn(\"[&_tr]:border-b\", className)}\n data-slot=\"table-header\"\n {...props}\n />\n )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n data-slot=\"table-body\"\n {...props}\n />\n )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n className={cn(\n \"bg-[color:var(--table-footer-bg)] border-[color:var(--table-footer-border)] border-t font-medium [&>tr]:last:border-b-0\",\n className\n )}\n data-slot=\"table-footer\"\n {...props}\n />\n )\n}\n\ntype TableRowProps = React.ComponentProps<\"tr\"> & TableRowVariantProps\n\nfunction TableRow({\n className,\n hoverable,\n selected,\n striped,\n ...props\n}: TableRowProps) {\n return (\n <tr\n className={cn(\n tableRowVariants({ hoverable, selected, striped }),\n className\n )}\n data-slot=\"table-row\"\n data-state={selected ? \"selected\" : undefined}\n {...props}\n />\n )\n}\n\ntype TableHeadProps = React.ComponentProps<\"th\"> &\n TableHeadVariantProps & {\n /** Drives the `aria-sort` attribute when the column is sorted. */\n sortDirection?: TableSortDirection\n }\n\nconst ariaSortMap: Record<TableSortDirection, \"ascending\" | \"descending\" | \"none\"> = {\n asc: \"ascending\",\n desc: \"descending\",\n none: \"none\",\n}\n\nfunction TableHead({\n className,\n scope = \"col\",\n sortable,\n sticky,\n sortDirection,\n ...props\n}: TableHeadProps) {\n return (\n <th\n className={cn(\n tableHeadVariants({ sortable, sticky }),\n \"[&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n aria-sort={sortDirection ? ariaSortMap[sortDirection] : undefined}\n data-slot=\"table-head\"\n scope={scope}\n {...props}\n />\n )\n}\n\ntype TableCellProps = Omit<React.ComponentProps<\"td\">, \"align\"> &\n TableCellVariantProps\n\nfunction TableCell({ className, align, ...props }: TableCellProps) {\n return (\n <td\n className={cn(\n tableCellVariants({ align }),\n \"[&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n data-slot=\"table-cell\"\n {...props}\n />\n )\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n className={cn(\"text-[color:var(--table-caption-fg)] mt-[var(--table-caption-margin-top)] text-[length:var(--table-caption-text)]\", className)}\n data-slot=\"table-caption\"\n {...props}\n />\n )\n}\n\nexport {\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Checkbox } from './chunk-
|
|
2
|
-
import { cn } from './chunk-
|
|
1
|
+
import { Checkbox } from './chunk-JXEIRIU4.js';
|
|
2
|
+
import { cn } from './chunk-RVAYDRMA.js';
|
|
3
3
|
import * as PopoverPrimitive from '@radix-ui/react-popover';
|
|
4
4
|
import { Command } from 'cmdk';
|
|
5
5
|
import { XIcon, ChevronDownIcon, SearchIcon } from 'lucide-react';
|
|
@@ -333,5 +333,5 @@ function MultiSelect({
|
|
|
333
333
|
}
|
|
334
334
|
|
|
335
335
|
export { MultiSelect };
|
|
336
|
-
//# sourceMappingURL=chunk-
|
|
337
|
-
//# sourceMappingURL=chunk-
|
|
336
|
+
//# sourceMappingURL=chunk-NIRTZLZL.js.map
|
|
337
|
+
//# sourceMappingURL=chunk-NIRTZLZL.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/forms/MultiSelect/MultiSelect.variants.ts","../src/components/forms/MultiSelect/MultiSelect.tsx"],"names":["CommandPrimitive"],"mappings":"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","file":"chunk-IOWHM7ZY.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * MultiSelectTrigger variant styles using CVA\n */\nexport const multiSelectTriggerVariants = cva(\n // Base styles\n [\n \"flex w-full min-w-[var(--multiselect-trigger-width)] items-center justify-between gap-2 rounded-[var(--multiselect-trigger-radius)] border bg-transparent\",\n \"text-sm whitespace-normal shadow-xs transition-[color,box-shadow] outline-none\",\n \"data-[placeholder]:text-muted-foreground\",\n \"[&_svg:not([class*='text-'])]:text-muted-foreground\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n \"dark:bg-input/30 dark:hover:bg-input/50\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n ],\n {\n variants: {\n size: {\n sm: \"min-h-[var(--multiselect-trigger-min-height-sm)] px-[var(--multiselect-trigger-padding-x-sm)] py-[var(--multiselect-trigger-padding-y-sm)] text-[length:var(--multiselect-trigger-text-sm)]\",\n md: \"min-h-[var(--multiselect-trigger-min-height-md)] px-[var(--multiselect-trigger-padding-x-md)] py-[var(--multiselect-trigger-padding-y-md)] text-[length:var(--multiselect-trigger-text-md)]\",\n lg: \"min-h-[var(--multiselect-trigger-min-height-lg)] px-[var(--multiselect-trigger-padding-x-lg)] py-[var(--multiselect-trigger-padding-y-lg)] text-[length:var(--multiselect-trigger-text-lg)]\",\n },\n variant: {\n default: \"border-input shadow-xs\",\n filled: \"border-transparent bg-muted\",\n flushed: \"rounded-none border-x-0 border-t-0 border-b-input px-0 shadow-none\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"default\",\n },\n }\n)\n\n/**\n * MultiSelectContent variant styles using CVA\n */\nexport const multiSelectContentVariants = cva(\n // Base styles\n [\n \"bg-[color:var(--multiselect-content-bg)] text-[color:var(--multiselect-content-fg)]\",\n \"z-50 w-[var(--radix-popper-anchor-width)] min-w-[var(--multiselect-content-width)] overflow-hidden rounded-[var(--multiselect-content-radius)] border shadow-[var(--multiselect-content-shadow)] p-0\",\n // Animation classes\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n ],\n {\n variants: {},\n defaultVariants: {},\n }\n)\n\n/**\n * MultiSelectInput variant styles using CVA\n */\nexport const multiSelectInputVariants = cva(\n [\n \"flex h-[var(--multiselect-input-height)] w-full rounded-md bg-transparent py-[var(--multiselect-input-padding-y)] text-[length:var(--multiselect-input-text)] outline-none\",\n \"placeholder:text-muted-foreground\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n ],\n {\n variants: {},\n defaultVariants: {},\n }\n)\n\n/**\n * MultiSelectItem variant styles using CVA\n */\nexport const multiSelectItemVariants = cva(\n [\n \"relative flex cursor-default items-center gap-2 rounded-[var(--multiselect-item-radius)] px-[var(--multiselect-item-padding-x)] py-[var(--multiselect-item-padding-y)] text-[length:var(--multiselect-item-text)]\",\n \"outline-none select-none\",\n \"data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50\",\n \"data-[highlighted=true]:bg-accent data-[highlighted=true]:text-accent-foreground\",\n \"[&_svg:not([class*='text-'])]:text-muted-foreground\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n ],\n {\n variants: {},\n defaultVariants: {},\n }\n)\n\n/**\n * MultiSelectEmpty variant styles using CVA\n */\nexport const multiSelectEmptyVariants = cva(\n [\"py-[var(--multiselect-empty-padding-y)] text-center text-[length:var(--multiselect-empty-text)] text-[color:var(--multiselect-empty-fg)]\"],\n {\n variants: {},\n defaultVariants: {},\n }\n)\n\n/**\n * MultiSelectTag variant styles using CVA\n */\nexport const multiSelectTagVariants = cva(\n [\n \"inline-flex items-center gap-1 rounded-[var(--multiselect-tag-radius)] bg-[color:var(--multiselect-tag-bg)] text-[color:var(--multiselect-tag-fg)]\",\n \"font-medium shrink-0\",\n \"[&_svg]:size-3 [&_svg]:shrink-0\",\n ],\n {\n variants: {\n size: {\n sm: \"text-[length:var(--multiselect-tag-text-sm)] px-[var(--multiselect-tag-padding-x-sm)] py-[var(--multiselect-tag-padding-y-sm)]\",\n md: \"text-[length:var(--multiselect-tag-text-md)] px-[var(--multiselect-tag-padding-x-md)] py-[var(--multiselect-tag-padding-y-md)]\",\n lg: \"text-[length:var(--multiselect-tag-text-lg)] px-[var(--multiselect-tag-padding-x-lg)] py-[var(--multiselect-tag-padding-y-lg)]\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nexport type MultiSelectTriggerVariantProps = VariantProps<typeof multiSelectTriggerVariants>\nexport type MultiSelectContentVariantProps = VariantProps<typeof multiSelectContentVariants>\nexport type MultiSelectInputVariantProps = VariantProps<typeof multiSelectInputVariants>\nexport type MultiSelectItemVariantProps = VariantProps<typeof multiSelectItemVariants>\nexport type MultiSelectEmptyVariantProps = VariantProps<typeof multiSelectEmptyVariants>\nexport type MultiSelectTagVariantProps = VariantProps<typeof multiSelectTagVariants>\n","import type { MultiSelectProps } from \"./MultiSelect.types\"\n\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { ChevronDownIcon, SearchIcon, XIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Checkbox } from \"../Checkbox\"\nimport {\n multiSelectContentVariants,\n multiSelectEmptyVariants,\n multiSelectInputVariants,\n multiSelectItemVariants,\n multiSelectTagVariants,\n multiSelectTriggerVariants,\n} from \"./MultiSelect.variants\"\n\n/**\n * MultiSelect - A multi-selection component with tags display\n *\n * Uses Radix Popover for the dropdown container and cmdk (Command) for\n * search/filter functionality with full keyboard accessibility.\n * Selected items are displayed as removable tags.\n *\n * @example\n * ```tsx\n * <MultiSelect\n * options={[\n * { value: \"apple\", label: \"Apple\" },\n * { value: \"banana\", label: \"Banana\" },\n * ]}\n * placeholder=\"Select fruits...\"\n * onChange={(values) => console.log(values)}\n * />\n * ```\n */\nfunction MultiSelect({\n options,\n value: controlledValue,\n defaultValue = [],\n placeholder = \"Select options...\",\n searchPlaceholder = \"Search...\",\n emptyMessage = \"No results found.\",\n disabled = false,\n error = false,\n errorMessage: _errorMessage,\n icon,\n maxSelected,\n name,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n onChange,\n onSearch,\n required = false,\n size = \"md\",\n variant = \"default\",\n className,\n ...props\n}: MultiSelectProps) {\n // Handle controlled vs uncontrolled value\n const [internalValue, setInternalValue] = React.useState<string[]>(defaultValue)\n const values = controlledValue ?? internalValue\n\n // Handle controlled vs uncontrolled open state\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen)\n const open = controlledOpen ?? internalOpen\n\n // Search query state\n const [searchQuery, setSearchQuery] = React.useState(\"\")\n\n // Get labels for selected values\n const selectedLabels = React.useMemo(() => {\n return values\n .map((val) => {\n const option = options.find((opt) => opt.value === val)\n return option ? { value: val, label: option.label } : null\n })\n .filter((item): item is { label: string; value: string; } => item !== null)\n }, [values, options])\n\n // Check if max selected limit is reached\n const isMaxReached = maxSelected !== undefined && values.length >= maxSelected\n\n // Handle open state changes\n const handleOpenChange = React.useCallback(\n (newOpen: boolean) => {\n // Prevent opening when disabled\n if (disabled && newOpen) {\n return\n }\n\n if (controlledOpen === undefined) {\n setInternalOpen(newOpen)\n }\n onOpenChange?.(newOpen)\n\n // Clear search when closing\n if (!newOpen) {\n setSearchQuery(\"\")\n }\n },\n [controlledOpen, onOpenChange, disabled]\n )\n\n // Handle value toggle\n const handleToggle = React.useCallback(\n (selectedValue: string) => {\n const newValues = values.includes(selectedValue)\n ? values.filter((v) => v !== selectedValue)\n : isMaxReached\n ? values\n : [...values, selectedValue]\n\n if (controlledValue === undefined) {\n setInternalValue(newValues)\n }\n onChange?.(newValues)\n },\n [values, controlledValue, onChange, isMaxReached]\n )\n\n // Handle tag removal\n const handleRemove = React.useCallback(\n (valueToRemove: string, event?: React.MouseEvent) => {\n event?.stopPropagation()\n const newValues = values.filter((v) => v !== valueToRemove)\n if (controlledValue === undefined) {\n setInternalValue(newValues)\n }\n onChange?.(newValues)\n },\n [values, controlledValue, onChange]\n )\n\n // Handle search input changes\n const handleSearchChange = React.useCallback(\n (query: string) => {\n setSearchQuery(query)\n onSearch?.(query)\n },\n [onSearch]\n )\n\n return (\n <>\n {/* Hidden inputs for form submission */}\n {name &&\n values.map((val) => (\n <input key={val} name={name} type=\"hidden\" value={val} />\n ))}\n <PopoverPrimitive.Root open={open} onOpenChange={handleOpenChange}>\n <PopoverPrimitive.Trigger asChild disabled={disabled}>\n <div\n className={cn(\n multiSelectTriggerVariants({ size, variant }),\n \"cursor-pointer flex-wrap\",\n disabled && \"pointer-events-none\",\n className\n )}\n aria-disabled={disabled || undefined}\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n aria-invalid={error || undefined}\n aria-required={required || undefined}\n data-disabled={disabled || undefined}\n data-error={error || undefined}\n data-size={size}\n data-slot=\"multi-select\"\n data-variant={variant}\n role=\"combobox\"\n tabIndex={disabled ? -1 : 0}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault()\n if (!disabled) {\n handleOpenChange(!open)\n }\n }\n }}\n {...props}\n >\n <div\n className=\"flex flex-1 flex-wrap items-center gap-1\"\n data-slot=\"multi-select-trigger\"\n >\n {icon && (\n <span className=\"shrink-0\" data-slot=\"multi-select-icon\">\n {icon}\n </span>\n )}\n {selectedLabels.length === 0 ? (\n <span data-placeholder className=\"text-muted-foreground\">\n {placeholder}\n </span>\n ) : (\n selectedLabels.map((item) => (\n <span\n key={item.value}\n className={cn(multiSelectTagVariants({ size }))}\n data-slot=\"multi-select-tag\"\n data-value={item.value}\n >\n {item.label}\n <button\n aria-label={`Remove ${item.label}`}\n className=\"ml-0.5 rounded-sm hover:bg-foreground/10 focus:outline-none\"\n tabIndex={-1}\n type=\"button\"\n onClick={(e) => { handleRemove(item.value, e); }}\n >\n <XIcon className=\"size-3\" />\n </button>\n </span>\n ))\n )}\n </div>\n <ChevronDownIcon className=\"size-4 shrink-0 opacity-50\" />\n </div>\n </PopoverPrimitive.Trigger>\n\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n align=\"start\"\n className={cn(multiSelectContentVariants())}\n data-slot=\"multi-select-content\"\n sideOffset={4}\n >\n <CommandPrimitive\n className=\"flex h-full w-full flex-col overflow-hidden\"\n shouldFilter={!onSearch}\n >\n <div className=\"flex items-center border-b px-3\">\n <SearchIcon className=\"mr-2 size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n className={cn(multiSelectInputVariants())}\n data-slot=\"multi-select-input\"\n placeholder={searchPlaceholder}\n value={searchQuery}\n onValueChange={handleSearchChange}\n />\n </div>\n\n <CommandPrimitive.List className=\"max-h-72 overflow-y-auto overflow-x-hidden p-1\">\n <CommandPrimitive.Empty className={cn(multiSelectEmptyVariants())}>\n {emptyMessage}\n </CommandPrimitive.Empty>\n\n {options.map((option) => {\n const isSelected = values.includes(option.value)\n const isDisabled = option.disabled ?? (!isSelected && isMaxReached)\n\n return (\n <CommandPrimitive.Item\n key={option.value}\n className={cn(multiSelectItemVariants())}\n data-disabled={isDisabled || undefined}\n data-selected={isSelected || undefined}\n data-slot=\"multi-select-item\"\n disabled={isDisabled}\n value={option.label}\n onSelect={() => {\n if (!isDisabled) {\n handleToggle(option.value)\n }\n }}\n >\n <Checkbox\n aria-hidden\n checked={isSelected}\n className=\"pointer-events-none\"\n disabled={isDisabled}\n size=\"sm\"\n tabIndex={-1}\n />\n {option.label}\n </CommandPrimitive.Item>\n )\n })}\n </CommandPrimitive.List>\n </CommandPrimitive>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n </>\n )\n}\n\nexport { MultiSelect }\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/forms/MultiSelect/MultiSelect.variants.ts","../src/components/forms/MultiSelect/MultiSelect.tsx"],"names":["CommandPrimitive"],"mappings":"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","file":"chunk-NIRTZLZL.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * MultiSelectTrigger variant styles using CVA\n */\nexport const multiSelectTriggerVariants = cva(\n // Base styles\n [\n \"flex w-full min-w-[var(--multiselect-trigger-width)] items-center justify-between gap-2 rounded-[var(--multiselect-trigger-radius)] border bg-transparent\",\n \"text-sm whitespace-normal shadow-xs transition-[color,box-shadow] outline-none\",\n \"data-[placeholder]:text-muted-foreground\",\n \"[&_svg:not([class*='text-'])]:text-muted-foreground\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n \"dark:bg-input/30 dark:hover:bg-input/50\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n ],\n {\n variants: {\n size: {\n sm: \"min-h-[var(--multiselect-trigger-min-height-sm)] px-[var(--multiselect-trigger-padding-x-sm)] py-[var(--multiselect-trigger-padding-y-sm)] text-[length:var(--multiselect-trigger-text-sm)]\",\n md: \"min-h-[var(--multiselect-trigger-min-height-md)] px-[var(--multiselect-trigger-padding-x-md)] py-[var(--multiselect-trigger-padding-y-md)] text-[length:var(--multiselect-trigger-text-md)]\",\n lg: \"min-h-[var(--multiselect-trigger-min-height-lg)] px-[var(--multiselect-trigger-padding-x-lg)] py-[var(--multiselect-trigger-padding-y-lg)] text-[length:var(--multiselect-trigger-text-lg)]\",\n },\n variant: {\n default: \"border-input shadow-xs\",\n filled: \"border-transparent bg-muted\",\n flushed: \"rounded-none border-x-0 border-t-0 border-b-input px-0 shadow-none\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"default\",\n },\n }\n)\n\n/**\n * MultiSelectContent variant styles using CVA\n */\nexport const multiSelectContentVariants = cva(\n // Base styles\n [\n \"bg-[color:var(--multiselect-content-bg)] text-[color:var(--multiselect-content-fg)]\",\n \"z-50 w-[var(--radix-popper-anchor-width)] min-w-[var(--multiselect-content-width)] overflow-hidden rounded-[var(--multiselect-content-radius)] border shadow-[var(--multiselect-content-shadow)] p-0\",\n // Animation classes\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n ],\n {\n variants: {},\n defaultVariants: {},\n }\n)\n\n/**\n * MultiSelectInput variant styles using CVA\n */\nexport const multiSelectInputVariants = cva(\n [\n \"flex h-[var(--multiselect-input-height)] w-full rounded-md bg-transparent py-[var(--multiselect-input-padding-y)] text-[length:var(--multiselect-input-text)] outline-none\",\n \"placeholder:text-muted-foreground\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n ],\n {\n variants: {},\n defaultVariants: {},\n }\n)\n\n/**\n * MultiSelectItem variant styles using CVA\n */\nexport const multiSelectItemVariants = cva(\n [\n \"relative flex cursor-default items-center gap-2 rounded-[var(--multiselect-item-radius)] px-[var(--multiselect-item-padding-x)] py-[var(--multiselect-item-padding-y)] text-[length:var(--multiselect-item-text)]\",\n \"outline-none select-none\",\n \"data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50\",\n \"data-[highlighted=true]:bg-accent data-[highlighted=true]:text-accent-foreground\",\n \"[&_svg:not([class*='text-'])]:text-muted-foreground\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n ],\n {\n variants: {},\n defaultVariants: {},\n }\n)\n\n/**\n * MultiSelectEmpty variant styles using CVA\n */\nexport const multiSelectEmptyVariants = cva(\n [\"py-[var(--multiselect-empty-padding-y)] text-center text-[length:var(--multiselect-empty-text)] text-[color:var(--multiselect-empty-fg)]\"],\n {\n variants: {},\n defaultVariants: {},\n }\n)\n\n/**\n * MultiSelectTag variant styles using CVA\n */\nexport const multiSelectTagVariants = cva(\n [\n \"inline-flex items-center gap-1 rounded-[var(--multiselect-tag-radius)] bg-[color:var(--multiselect-tag-bg)] text-[color:var(--multiselect-tag-fg)]\",\n \"font-medium shrink-0\",\n \"[&_svg]:size-3 [&_svg]:shrink-0\",\n ],\n {\n variants: {\n size: {\n sm: \"text-[length:var(--multiselect-tag-text-sm)] px-[var(--multiselect-tag-padding-x-sm)] py-[var(--multiselect-tag-padding-y-sm)]\",\n md: \"text-[length:var(--multiselect-tag-text-md)] px-[var(--multiselect-tag-padding-x-md)] py-[var(--multiselect-tag-padding-y-md)]\",\n lg: \"text-[length:var(--multiselect-tag-text-lg)] px-[var(--multiselect-tag-padding-x-lg)] py-[var(--multiselect-tag-padding-y-lg)]\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nexport type MultiSelectTriggerVariantProps = VariantProps<typeof multiSelectTriggerVariants>\nexport type MultiSelectContentVariantProps = VariantProps<typeof multiSelectContentVariants>\nexport type MultiSelectInputVariantProps = VariantProps<typeof multiSelectInputVariants>\nexport type MultiSelectItemVariantProps = VariantProps<typeof multiSelectItemVariants>\nexport type MultiSelectEmptyVariantProps = VariantProps<typeof multiSelectEmptyVariants>\nexport type MultiSelectTagVariantProps = VariantProps<typeof multiSelectTagVariants>\n","import type { MultiSelectProps } from \"./MultiSelect.types\"\n\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { ChevronDownIcon, SearchIcon, XIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Checkbox } from \"../Checkbox\"\nimport {\n multiSelectContentVariants,\n multiSelectEmptyVariants,\n multiSelectInputVariants,\n multiSelectItemVariants,\n multiSelectTagVariants,\n multiSelectTriggerVariants,\n} from \"./MultiSelect.variants\"\n\n/**\n * MultiSelect - A multi-selection component with tags display\n *\n * Uses Radix Popover for the dropdown container and cmdk (Command) for\n * search/filter functionality with full keyboard accessibility.\n * Selected items are displayed as removable tags.\n *\n * @example\n * ```tsx\n * <MultiSelect\n * options={[\n * { value: \"apple\", label: \"Apple\" },\n * { value: \"banana\", label: \"Banana\" },\n * ]}\n * placeholder=\"Select fruits...\"\n * onChange={(values) => console.log(values)}\n * />\n * ```\n */\nfunction MultiSelect({\n options,\n value: controlledValue,\n defaultValue = [],\n placeholder = \"Select options...\",\n searchPlaceholder = \"Search...\",\n emptyMessage = \"No results found.\",\n disabled = false,\n error = false,\n errorMessage: _errorMessage,\n icon,\n maxSelected,\n name,\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n onChange,\n onSearch,\n required = false,\n size = \"md\",\n variant = \"default\",\n className,\n ...props\n}: MultiSelectProps) {\n // Handle controlled vs uncontrolled value\n const [internalValue, setInternalValue] = React.useState<string[]>(defaultValue)\n const values = controlledValue ?? internalValue\n\n // Handle controlled vs uncontrolled open state\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen)\n const open = controlledOpen ?? internalOpen\n\n // Search query state\n const [searchQuery, setSearchQuery] = React.useState(\"\")\n\n // Get labels for selected values\n const selectedLabels = React.useMemo(() => {\n return values\n .map((val) => {\n const option = options.find((opt) => opt.value === val)\n return option ? { value: val, label: option.label } : null\n })\n .filter((item): item is { label: string; value: string; } => item !== null)\n }, [values, options])\n\n // Check if max selected limit is reached\n const isMaxReached = maxSelected !== undefined && values.length >= maxSelected\n\n // Handle open state changes\n const handleOpenChange = React.useCallback(\n (newOpen: boolean) => {\n // Prevent opening when disabled\n if (disabled && newOpen) {\n return\n }\n\n if (controlledOpen === undefined) {\n setInternalOpen(newOpen)\n }\n onOpenChange?.(newOpen)\n\n // Clear search when closing\n if (!newOpen) {\n setSearchQuery(\"\")\n }\n },\n [controlledOpen, onOpenChange, disabled]\n )\n\n // Handle value toggle\n const handleToggle = React.useCallback(\n (selectedValue: string) => {\n const newValues = values.includes(selectedValue)\n ? values.filter((v) => v !== selectedValue)\n : isMaxReached\n ? values\n : [...values, selectedValue]\n\n if (controlledValue === undefined) {\n setInternalValue(newValues)\n }\n onChange?.(newValues)\n },\n [values, controlledValue, onChange, isMaxReached]\n )\n\n // Handle tag removal\n const handleRemove = React.useCallback(\n (valueToRemove: string, event?: React.MouseEvent) => {\n event?.stopPropagation()\n const newValues = values.filter((v) => v !== valueToRemove)\n if (controlledValue === undefined) {\n setInternalValue(newValues)\n }\n onChange?.(newValues)\n },\n [values, controlledValue, onChange]\n )\n\n // Handle search input changes\n const handleSearchChange = React.useCallback(\n (query: string) => {\n setSearchQuery(query)\n onSearch?.(query)\n },\n [onSearch]\n )\n\n return (\n <>\n {/* Hidden inputs for form submission */}\n {name &&\n values.map((val) => (\n <input key={val} name={name} type=\"hidden\" value={val} />\n ))}\n <PopoverPrimitive.Root open={open} onOpenChange={handleOpenChange}>\n <PopoverPrimitive.Trigger asChild disabled={disabled}>\n <div\n className={cn(\n multiSelectTriggerVariants({ size, variant }),\n \"cursor-pointer flex-wrap\",\n disabled && \"pointer-events-none\",\n className\n )}\n aria-disabled={disabled || undefined}\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n aria-invalid={error || undefined}\n aria-required={required || undefined}\n data-disabled={disabled || undefined}\n data-error={error || undefined}\n data-size={size}\n data-slot=\"multi-select\"\n data-variant={variant}\n role=\"combobox\"\n tabIndex={disabled ? -1 : 0}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault()\n if (!disabled) {\n handleOpenChange(!open)\n }\n }\n }}\n {...props}\n >\n <div\n className=\"flex flex-1 flex-wrap items-center gap-1\"\n data-slot=\"multi-select-trigger\"\n >\n {icon && (\n <span className=\"shrink-0\" data-slot=\"multi-select-icon\">\n {icon}\n </span>\n )}\n {selectedLabels.length === 0 ? (\n <span data-placeholder className=\"text-muted-foreground\">\n {placeholder}\n </span>\n ) : (\n selectedLabels.map((item) => (\n <span\n key={item.value}\n className={cn(multiSelectTagVariants({ size }))}\n data-slot=\"multi-select-tag\"\n data-value={item.value}\n >\n {item.label}\n <button\n aria-label={`Remove ${item.label}`}\n className=\"ml-0.5 rounded-sm hover:bg-foreground/10 focus:outline-none\"\n tabIndex={-1}\n type=\"button\"\n onClick={(e) => { handleRemove(item.value, e); }}\n >\n <XIcon className=\"size-3\" />\n </button>\n </span>\n ))\n )}\n </div>\n <ChevronDownIcon className=\"size-4 shrink-0 opacity-50\" />\n </div>\n </PopoverPrimitive.Trigger>\n\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n align=\"start\"\n className={cn(multiSelectContentVariants())}\n data-slot=\"multi-select-content\"\n sideOffset={4}\n >\n <CommandPrimitive\n className=\"flex h-full w-full flex-col overflow-hidden\"\n shouldFilter={!onSearch}\n >\n <div className=\"flex items-center border-b px-3\">\n <SearchIcon className=\"mr-2 size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n className={cn(multiSelectInputVariants())}\n data-slot=\"multi-select-input\"\n placeholder={searchPlaceholder}\n value={searchQuery}\n onValueChange={handleSearchChange}\n />\n </div>\n\n <CommandPrimitive.List className=\"max-h-72 overflow-y-auto overflow-x-hidden p-1\">\n <CommandPrimitive.Empty className={cn(multiSelectEmptyVariants())}>\n {emptyMessage}\n </CommandPrimitive.Empty>\n\n {options.map((option) => {\n const isSelected = values.includes(option.value)\n const isDisabled = option.disabled ?? (!isSelected && isMaxReached)\n\n return (\n <CommandPrimitive.Item\n key={option.value}\n className={cn(multiSelectItemVariants())}\n data-disabled={isDisabled || undefined}\n data-selected={isSelected || undefined}\n data-slot=\"multi-select-item\"\n disabled={isDisabled}\n value={option.label}\n onSelect={() => {\n if (!isDisabled) {\n handleToggle(option.value)\n }\n }}\n >\n <Checkbox\n aria-hidden\n checked={isSelected}\n className=\"pointer-events-none\"\n disabled={isDisabled}\n size=\"sm\"\n tabIndex={-1}\n />\n {option.label}\n </CommandPrimitive.Item>\n )\n })}\n </CommandPrimitive.List>\n </CommandPrimitive>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n </>\n )\n}\n\nexport { MultiSelect }\n"]}
|