@feugene/granularity 0.9.4 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -45
- package/dist/GrButtonGroup.css +1 -1
- package/dist/GrFormFile.css +1 -1
- package/dist/GrIcon.css +1 -1
- package/dist/GrLoading.css +1 -1
- package/dist/GrSkeleton.css +1 -1
- package/dist/GrToaster.css +1 -0
- package/dist/GrTree.css +1 -1
- package/dist/chunks/{adapter-BqqjEZGU.js.map → adapter-CAOxmn2G.js.map} +1 -1
- package/dist/chunks/arrow-up-C_G4jg8M.js.map +1 -0
- package/dist/chunks/{classTokens-BPeBXNzu.js.map → classTokens-BzazaERD.js.map} +1 -1
- package/dist/chunks/{config-B_nSBc7W.js → config-1uSYl98Y.js} +5 -5
- package/dist/chunks/{config-B_nSBc7W.js.map → config-1uSYl98Y.js.map} +1 -1
- package/dist/chunks/{config-DaHI5bD_2.js.map → config-8Pcutu1j2.js.map} +1 -1
- package/dist/chunks/{config-DoBk_CzG.js.map → config-B0qIpo8m.js.map} +1 -1
- package/dist/chunks/{config-BY81UKv0.js → config-B7IIWGt_2.js} +3 -3
- package/dist/chunks/config-B7IIWGt_2.js.map +1 -0
- package/dist/chunks/{config-DbghHyY_.js.map → config-BEegFP74.js.map} +1 -1
- package/dist/chunks/{config-72sW9Bag2.js → config-BIRO0vDJ2.js} +6 -6
- package/dist/chunks/{config-72sW9Bag2.js.map → config-BIRO0vDJ2.js.map} +1 -1
- package/dist/chunks/{config-Dzd6BzIN2.js.map → config-BLHqZhy-2.js.map} +1 -1
- package/dist/chunks/{config-BV4vBzdm.js.map → config-BNu8lFQB.js.map} +1 -1
- package/dist/chunks/config-BOlr7qw7.js +106 -0
- package/dist/chunks/config-BOlr7qw7.js.map +1 -0
- package/dist/chunks/{config-B1kFmhpM.js.map → config-BUHuGBik.js.map} +1 -1
- package/dist/chunks/{config-DF_RlCIO.js.map → config-BWGGp7uV.js.map} +1 -1
- package/dist/chunks/config-BX1JTrkV2.js +14 -0
- package/dist/chunks/config-BX1JTrkV2.js.map +1 -0
- package/dist/chunks/{config-BduXEXjt.js.map → config-BXtAmU3s.js.map} +1 -1
- package/dist/chunks/{config-O1_FTqD3.js.map → config-Bah4oHwL.js.map} +1 -1
- package/dist/chunks/{config-Br_qI3Za.js → config-C49QUoJL.js} +3 -3
- package/dist/chunks/config-C49QUoJL.js.map +1 -0
- package/dist/chunks/{config-3I3vqDW4.js → config-C4snOIXg.js} +1 -1
- package/dist/chunks/{config-3I3vqDW4.js.map → config-C4snOIXg.js.map} +1 -1
- package/dist/chunks/{config-CdJpnjDj.js → config-C7NpDrfO.js} +5 -5
- package/dist/chunks/{config-CdJpnjDj.js.map → config-C7NpDrfO.js.map} +1 -1
- package/dist/chunks/{config-DSBlHQVa.js.map → config-C86UzUYf.js.map} +1 -1
- package/dist/chunks/{config-BgBWt9-A.js.map → config-C9AcVDkv.js.map} +1 -1
- package/dist/chunks/{config-BeQuykDk2.js.map → config-CGHLoBlH2.js.map} +1 -1
- package/dist/chunks/{config-ChQxl75m.js.map → config-CThzliFi.js.map} +1 -1
- package/dist/chunks/{config-DmjwIqx1.js.map → config-Cb2PAlSD.js.map} +1 -1
- package/dist/chunks/{config-BnWSHTEU.js → config-ClhKPJvg.js} +5 -5
- package/dist/chunks/{config-BnWSHTEU.js.map → config-ClhKPJvg.js.map} +1 -1
- package/dist/chunks/{config-d386uO3O.js → config-Cpi9Mh2J.js} +3 -3
- package/dist/chunks/{config-d386uO3O.js.map → config-Cpi9Mh2J.js.map} +1 -1
- package/dist/chunks/{config-Cp_XHsze.js → config-CrG1XiE7.js} +4 -4
- package/dist/chunks/{config-Cp_XHsze.js.map → config-CrG1XiE7.js.map} +1 -1
- package/dist/chunks/{config-C5OwJM3-.js → config-CziwTDDL.js} +3 -3
- package/dist/chunks/{config-C5OwJM3-.js.map → config-CziwTDDL.js.map} +1 -1
- package/dist/chunks/{config-BbKroFtR.js.map → config-D7GZO-Dx.js.map} +1 -1
- package/dist/chunks/{config-CUwF4E4R.js.map → config-DBmdgoVf.js.map} +1 -1
- package/dist/chunks/{config-C9MblwGq.js.map → config-DICOd-2X.js.map} +1 -1
- package/dist/chunks/{config-C6zT56Jc2.js → config-DUcu1D68.js} +3 -3
- package/dist/chunks/config-DUcu1D68.js.map +1 -0
- package/dist/chunks/{config-D4s_QWVP.js → config-D_R56_gT.js} +5 -5
- package/dist/chunks/{config-D4s_QWVP.js.map → config-D_R56_gT.js.map} +1 -1
- package/dist/chunks/{config-_3De4HFf.js → config-DezDih8_.js} +4 -4
- package/dist/chunks/config-DezDih8_.js.map +1 -0
- package/dist/chunks/{config-CFf7xaG1.js → config-DnvPqu4g.js} +3 -3
- package/dist/chunks/{config-CFf7xaG1.js.map → config-DnvPqu4g.js.map} +1 -1
- package/dist/chunks/{config-D6Oe3blW2.js.map → config-DpqOnJiz2.js.map} +1 -1
- package/dist/chunks/{config-V3LF-b_F.js.map → config-Dxuwwepq.js.map} +1 -1
- package/dist/chunks/{config-CvGdaXvH.js.map → config-HZto2PVy.js.map} +1 -1
- package/dist/chunks/{config-BOdu-O_B.js.map → config-JOtB4mzs.js.map} +1 -1
- package/dist/chunks/{config-iuMz79Mg.js.map → config-JpHA4Xx0.js.map} +1 -1
- package/dist/chunks/{config-CetsgpaZ2.js → config-LGrZIdaZ2.js} +1 -1
- package/dist/chunks/{config-CetsgpaZ2.js.map → config-LGrZIdaZ2.js.map} +1 -1
- package/dist/chunks/{config-Dcb7xK-C.js.map → config-PFg39mYo.js.map} +1 -1
- package/dist/chunks/{config-CU_CBd0k.js → config-QYGvEBu5.js} +2 -2
- package/dist/chunks/{config-CU_CBd0k.js.map → config-QYGvEBu5.js.map} +1 -1
- package/dist/chunks/{config-BU0olrvr.js.map → config-QaIc_gRa.js.map} +1 -1
- package/dist/chunks/{config-vcDVCYXo.js.map → config-U4m9PSql.js.map} +1 -1
- package/dist/chunks/{config-Ci9nXGUV.js.map → config-ZiXWIRBX.js.map} +1 -1
- package/dist/chunks/{config-B2YTEe_h.js → config-eYLZYOUS2.js} +63 -63
- package/dist/chunks/config-eYLZYOUS2.js.map +1 -0
- package/dist/chunks/{config-Bcf-8XlK2.js.map → config-ipvU0lzP2.js.map} +1 -1
- package/dist/chunks/{config-B61cX08u.js → config-jBp9wVv-.js} +4 -4
- package/dist/chunks/{config-B61cX08u.js.map → config-jBp9wVv-.js.map} +1 -1
- package/dist/chunks/{config-D5ek7VSi.js.map → config-xR4XVmcy.js.map} +1 -1
- package/dist/chunks/{dialogShared-BtXUk6Zc.js.map → dialogShared-CxW62PQE.js.map} +1 -1
- package/dist/chunks/en-BdtiS2d3.js +138 -0
- package/dist/chunks/en-BdtiS2d3.js.map +1 -0
- package/dist/chunks/es-BGRMZbe9.js +138 -0
- package/dist/chunks/es-BGRMZbe9.js.map +1 -0
- package/dist/chunks/{es-Bx3Kuy6z.js → es-DBhctWg-.js} +3 -3
- package/dist/chunks/{es-Bx3Kuy6z.js.map → es-DBhctWg-.js.map} +1 -1
- package/dist/chunks/{fileValidation-c_iBg74s.js → fileValidation-C3WFaWU2.js} +2 -1
- package/dist/chunks/{fileValidation-c_iBg74s.js.map → fileValidation-C3WFaWU2.js.map} +1 -1
- package/dist/chunks/{grBadgeStyles-Cq0hH2Ls.js → grBadgeStyles-DrycBuKT.js} +13 -13
- package/dist/chunks/grBadgeStyles-DrycBuKT.js.map +1 -0
- package/dist/chunks/grButtonStyles-C7Yga_Q1.js +191 -0
- package/dist/chunks/grButtonStyles-C7Yga_Q1.js.map +1 -0
- package/dist/chunks/grDropdownStyles-B_-DKytw.js +35 -0
- package/dist/chunks/grDropdownStyles-B_-DKytw.js.map +1 -0
- package/dist/chunks/{grLoadingStyles-DmI-SJ3i.js.map → grLoadingStyles-R5sreH__.js.map} +1 -1
- package/dist/chunks/{grModalStyles-DS1Vl6EW.js → grModalStyles-DWd3i05Q.js} +7 -7
- package/dist/chunks/grModalStyles-DWd3i05Q.js.map +1 -0
- package/dist/chunks/{grSelectStyles-pUt19VGy.js → grSelectStyles-CLK5hRd3.js} +3 -3
- package/dist/chunks/grSelectStyles-CLK5hRd3.js.map +1 -0
- package/dist/chunks/{grStyle-CUaTmpyW.js → grStyle-Blc9otAx.js} +6 -6
- package/dist/chunks/grStyle-Blc9otAx.js.map +1 -0
- package/dist/chunks/{granularityI18n-LcJ88Vce.js → granularityI18n-DoV7Ca2m.js} +18 -3
- package/dist/chunks/granularityI18n-DoV7Ca2m.js.map +1 -0
- package/dist/chunks/info-Be2OccTu.js.map +1 -0
- package/dist/chunks/loader-circle-CfVLz7lb.js.map +1 -0
- package/dist/chunks/ru-BFCnOiML.js +138 -0
- package/dist/chunks/ru-BFCnOiML.js.map +1 -0
- package/dist/chunks/{safelist-_UVzJrgE2.js → safelist-CkF4v7DC.js} +3 -3
- package/dist/chunks/safelist-CkF4v7DC.js.map +1 -0
- package/dist/chunks/{safelist-DccvJqCE.js → safelist-Do2RtzLB.js} +3 -3
- package/dist/chunks/{safelist-DccvJqCE.js.map → safelist-Do2RtzLB.js.map} +1 -1
- package/dist/chunks/shared-ChvcQgDl.js +168 -0
- package/dist/chunks/shared-ChvcQgDl.js.map +1 -0
- package/dist/chunks/{transition-mJ3PZCHH.js → transition-TLFw4KBn.js} +26 -12
- package/dist/chunks/{transition-mJ3PZCHH.js.map → transition-TLFw4KBn.js.map} +1 -1
- package/dist/chunks/useAddonMeasurement-DM0akF4C.js +65 -0
- package/dist/chunks/useAddonMeasurement-DM0akF4C.js.map +1 -0
- package/dist/chunks/useEscapeToClose-C2t_S1gh.js +27 -0
- package/dist/chunks/useEscapeToClose-C2t_S1gh.js.map +1 -0
- package/dist/chunks/useFloating-DtM6TyE4.js +1249 -0
- package/dist/chunks/useFloating-DtM6TyE4.js.map +1 -0
- package/dist/chunks/x-2KXnqxiD.js.map +1 -0
- package/dist/chunks/x-circle-BCBURwyX.js.map +1 -0
- package/dist/components/GrAlert/chunks/{GrAlert-HyCjYJeL.js → GrAlert-DPJSU_fG.js} +40 -37
- package/dist/components/GrAlert/chunks/GrAlert-DPJSU_fG.js.map +1 -0
- package/dist/components/GrAlert/index.js +2 -2
- package/dist/components/GrAvatar/chunks/{GrAvatar-BjnPKNAL.js → GrAvatar-96CpTCq5.js} +2 -2
- package/dist/components/GrAvatar/chunks/{GrAvatar-BjnPKNAL.js.map → GrAvatar-96CpTCq5.js.map} +1 -1
- package/dist/components/GrAvatar/index.js +2 -2
- package/dist/components/GrBadge/chunks/{GrBadge-Cs_cVfuO.js → GrBadge-B77XlaqE.js} +3 -3
- package/dist/components/GrBadge/chunks/{GrBadge-Cs_cVfuO.js.map → GrBadge-B77XlaqE.js.map} +1 -1
- package/dist/components/GrBadge/index.js +2 -2
- package/dist/components/GrBadgeWrap/chunks/{GrBadgeWrap-BEnE9DyJ.js → GrBadgeWrap-CcktMOdg.js} +2 -2
- package/dist/components/GrBadgeWrap/chunks/{GrBadgeWrap-BEnE9DyJ.js.map → GrBadgeWrap-CcktMOdg.js.map} +1 -1
- package/dist/components/GrBadgeWrap/index.js +2 -2
- package/dist/components/GrBottomNav/chunks/{GrBottomNav-XPHwd7UQ.js.map → GrBottomNav-usuMgG8_.js.map} +1 -1
- package/dist/components/GrBottomNav/index.js +2 -2
- package/dist/components/GrButton/chunks/GrButton-BlffdeJr.js +124 -0
- package/dist/components/GrButton/chunks/GrButton-BlffdeJr.js.map +1 -0
- package/dist/components/GrButton/index.js +4 -4
- package/dist/components/GrButtonGroup/chunks/{GrButtonGroup-CPOH6V-P.js → GrButtonGroup-Bs9dEKfA.js} +1 -1
- package/dist/components/GrButtonGroup/chunks/GrButtonGroup-Bs9dEKfA.js.map +1 -0
- package/dist/components/GrButtonGroup/index.js +2 -2
- package/dist/components/GrCard/chunks/{GrCard-6yk1RRAQ.js → GrCard-DUNMkuHW.js} +3 -3
- package/dist/components/GrCard/chunks/GrCard-DUNMkuHW.js.map +1 -0
- package/dist/components/GrCard/index.js +2 -2
- package/dist/components/GrCheckbox/chunks/{GrCheckbox-Bt3d7ckE.js → GrCheckbox-DJhzZZdO.js} +66 -18
- package/dist/components/GrCheckbox/chunks/GrCheckbox-DJhzZZdO.js.map +1 -0
- package/dist/components/GrCheckbox/index.js +2 -2
- package/dist/components/GrCollapse/chunks/{GrCollapse-CU94BTAR.js → GrCollapse-CPPLh_xU.js} +12 -12
- package/dist/components/GrCollapse/chunks/{GrCollapse-CU94BTAR.js.map → GrCollapse-CPPLh_xU.js.map} +1 -1
- package/dist/components/GrCollapse/index.js +2 -2
- package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-Br6WJkLE.js → GrConfirmDialog-BWYKCsHd.js} +20 -14
- package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-BWYKCsHd.js.map +1 -0
- package/dist/components/GrConfirmDialog/index.js +2 -2
- package/dist/components/GrDataTable/chunks/{GrDataTable-ClcYiyc8.js → GrDataTable-ptbARmJ3.js} +7 -7
- package/dist/components/GrDataTable/chunks/{GrDataTable-ClcYiyc8.js.map → GrDataTable-ptbARmJ3.js.map} +1 -1
- package/dist/components/GrDataTable/index.js +2 -2
- package/dist/components/GrDialog/chunks/{GrDialog-C7XLxp8e.js → GrDialog-5DAS-1Lb.js} +14 -12
- package/dist/components/GrDialog/chunks/GrDialog-5DAS-1Lb.js.map +1 -0
- package/dist/components/GrDialog/index.js +3 -3
- package/dist/components/GrDialogService/chunks/GrDialogService-DY_fmaMu.js +425 -0
- package/dist/components/GrDialogService/chunks/GrDialogService-DY_fmaMu.js.map +1 -0
- package/dist/components/GrDialogService/index.js +3 -0
- package/dist/components/GrDrawer/chunks/{GrDrawer-BW3wtI7h.js → GrDrawer-D1kzsjXN.js} +19 -15
- package/dist/components/GrDrawer/chunks/GrDrawer-D1kzsjXN.js.map +1 -0
- package/dist/components/GrDrawer/index.js +2 -2
- package/dist/components/GrDropdown/chunks/GrDropdown-BXb5Cxxf.js +95 -0
- package/dist/components/GrDropdown/chunks/GrDropdown-BXb5Cxxf.js.map +1 -0
- package/dist/components/GrDropdown/index.js +2 -2
- package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-CLPwbiyG.js → GrDropdownMenu-DFEJLPcV.js} +10 -10
- package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-CLPwbiyG.js.map → GrDropdownMenu-DFEJLPcV.js.map} +1 -1
- package/dist/components/GrDropdownMenu/index.js +2 -2
- package/dist/components/GrEmptyState/chunks/{GrEmptyState-Dj2V5GaX.js → GrEmptyState-CA3BiTV7.js} +3 -3
- package/dist/components/GrEmptyState/chunks/{GrEmptyState-Dj2V5GaX.js.map → GrEmptyState-CA3BiTV7.js.map} +1 -1
- package/dist/components/GrEmptyState/index.js +2 -2
- package/dist/components/GrFileUpload/chunks/{GrFileUpload-BEKNB1RM.js → GrFileUpload-DvWPpiJS.js} +26 -23
- package/dist/components/GrFileUpload/chunks/GrFileUpload-DvWPpiJS.js.map +1 -0
- package/dist/components/GrFileUpload/index.js +3 -3
- package/dist/components/GrFormField/chunks/{GrFormField-U7c_aDPJ.js → GrFormField-BujNQrw8.js} +1 -1
- package/dist/components/GrFormField/chunks/{GrFormField-U7c_aDPJ.js.map → GrFormField-BujNQrw8.js.map} +1 -1
- package/dist/components/GrFormField/index.js +2 -2
- package/dist/components/GrFormFile/chunks/{GrFormFile-CIleXnfr.js → GrFormFile-CXcqqdvV.js} +38 -31
- package/dist/components/GrFormFile/chunks/GrFormFile-CXcqqdvV.js.map +1 -0
- package/dist/components/GrFormFile/index.js +2 -2
- package/dist/components/GrFormSection/chunks/{GrFormSection-DpGhY7MX.js → GrFormSection-Ce21jcgo.js} +1 -1
- package/dist/components/GrFormSection/chunks/{GrFormSection-DpGhY7MX.js.map → GrFormSection-Ce21jcgo.js.map} +1 -1
- package/dist/components/GrFormSection/index.js +2 -2
- package/dist/components/GrIcon/chunks/{GrIcon-BV7RBU_0.js → GrIcon-D9AWQLk2.js} +3 -3
- package/dist/components/GrIcon/chunks/{GrIcon-BV7RBU_0.js.map → GrIcon-D9AWQLk2.js.map} +1 -1
- package/dist/components/GrIcon/index.js +2 -2
- package/dist/components/GrImageViewer/chunks/{GrImageViewer-CsvXQHM9.js → GrImageViewer-OCUIrNh2.js} +44 -33
- package/dist/components/GrImageViewer/chunks/GrImageViewer-OCUIrNh2.js.map +1 -0
- package/dist/components/GrImageViewer/index.js +2 -2
- package/dist/components/GrInput/chunks/{GrInput-gwFQ1sk4.js → GrInput-C8pOJgCi.js} +43 -66
- package/dist/components/GrInput/chunks/GrInput-C8pOJgCi.js.map +1 -0
- package/dist/components/GrInput/index.js +2 -2
- package/dist/components/GrInputTag/chunks/{GrInputTag-Dcj3F6rQ.js → GrInputTag-zMgFqp2g.js} +27 -24
- package/dist/components/GrInputTag/chunks/GrInputTag-zMgFqp2g.js.map +1 -0
- package/dist/components/GrInputTag/index.js +2 -2
- package/dist/components/GrLink/chunks/{GrLink-BMwn2iJ9.js → GrLink-CYUe-Q8k.js} +14 -7
- package/dist/components/GrLink/chunks/GrLink-CYUe-Q8k.js.map +1 -0
- package/dist/components/GrLink/index.js +2 -2
- package/dist/components/GrList/chunks/{GrList-D8nM1FuV.js → GrList-Dx772Ns4.js} +1 -1
- package/dist/components/GrList/chunks/{GrList-D8nM1FuV.js.map → GrList-Dx772Ns4.js.map} +1 -1
- package/dist/components/GrList/index.js +2 -2
- package/dist/components/GrLoading/chunks/{GrLoading-mfyfghxs.js → GrLoading--X_7rdbb.js} +7 -7
- package/dist/components/GrLoading/chunks/{GrLoading-mfyfghxs.js.map → GrLoading--X_7rdbb.js.map} +1 -1
- package/dist/components/GrLoading/index.js +2 -2
- package/dist/components/GrModal/chunks/{GrModal-lh0lOmoi.js → GrModal-BkjW9jZS.js} +7 -7
- package/dist/components/GrModal/chunks/{GrModal-lh0lOmoi.js.map → GrModal-BkjW9jZS.js.map} +1 -1
- package/dist/components/GrModal/index.js +3 -3
- package/dist/components/GrNavbar/chunks/{GrNavbar-BH7XiF9q.js → GrNavbar-DW3MiIIf.js} +6 -6
- package/dist/components/GrNavbar/chunks/{GrNavbar-BH7XiF9q.js.map → GrNavbar-DW3MiIIf.js.map} +1 -1
- package/dist/components/GrNavbar/index.js +2 -2
- package/dist/components/GrNumberInput/chunks/{GrNumberInput-YIWhV85S.js → GrNumberInput-CldPIWQx.js} +51 -61
- package/dist/components/GrNumberInput/chunks/GrNumberInput-CldPIWQx.js.map +1 -0
- package/dist/components/GrNumberInput/index.js +2 -2
- package/dist/components/GrPagination/chunks/GrPagination-Bu9wv6it.js +165 -0
- package/dist/components/GrPagination/chunks/GrPagination-Bu9wv6it.js.map +1 -0
- package/dist/components/GrPagination/index.js +2 -2
- package/dist/components/GrProgressBar/chunks/{GrProgressBar-C2HdYjp4.js → GrProgressBar-CC3z-Zqp.js} +3 -3
- package/dist/components/GrProgressBar/chunks/{GrProgressBar-C2HdYjp4.js.map → GrProgressBar-CC3z-Zqp.js.map} +1 -1
- package/dist/components/GrProgressBar/index.js +2 -2
- package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-BV4EW3XO.js → GrPromptDialog-TmWXbpEP.js} +31 -23
- package/dist/components/GrPromptDialog/chunks/GrPromptDialog-TmWXbpEP.js.map +1 -0
- package/dist/components/GrPromptDialog/index.js +2 -2
- package/dist/components/GrRadio/chunks/{GrRadio-IFU9Hiu2.js → GrRadio-CPTixXaY.js} +6 -6
- package/dist/components/GrRadio/chunks/{GrRadio-IFU9Hiu2.js.map → GrRadio-CPTixXaY.js.map} +1 -1
- package/dist/components/GrRadio/index.js +2 -2
- package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-C8IcJuuF.js → GrRadioGroup-vKZCbkCp.js} +3 -3
- package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-C8IcJuuF.js.map → GrRadioGroup-vKZCbkCp.js.map} +1 -1
- package/dist/components/GrRadioGroup/index.js +2 -2
- package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-BMvXREcv.js → GrResponseErrorBanner-BWJNe2gr.js} +21 -18
- package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-BWJNe2gr.js.map +1 -0
- package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-CzdTh4gd.js → GrResponseErrorBanner-Cdu9ekK9.js} +5 -5
- package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-CzdTh4gd.js.map → GrResponseErrorBanner-Cdu9ekK9.js.map} +1 -1
- package/dist/components/GrResponseErrorBanner/index.js +2 -2
- package/dist/components/GrSegmented/chunks/{GrSegmented-BRmwBsEG.js → GrSegmented-C1y0UXpQ.js} +5 -5
- package/dist/components/GrSegmented/chunks/{GrSegmented-BRmwBsEG.js.map → GrSegmented-C1y0UXpQ.js.map} +1 -1
- package/dist/components/GrSegmented/index.js +2 -2
- package/dist/components/GrSelect/chunks/{GrSelect-CnHdbPlf.js → GrSelect-RShK21lK.js} +106 -112
- package/dist/components/GrSelect/chunks/GrSelect-RShK21lK.js.map +1 -0
- package/dist/components/GrSelect/index.js +2 -2
- package/dist/components/GrSidebar/chunks/GrSidebar-DkWozzwA.js +238 -0
- package/dist/components/GrSidebar/chunks/GrSidebar-DkWozzwA.js.map +1 -0
- package/dist/components/GrSidebar/index.js +3 -3
- package/dist/components/GrSkeleton/chunks/{GrSkeleton-URyMkBqI.js → GrSkeleton-DsN-_CDZ.js} +1 -1
- package/dist/components/GrSkeleton/chunks/{GrSkeleton-URyMkBqI.js.map → GrSkeleton-DsN-_CDZ.js.map} +1 -1
- package/dist/components/GrSkeleton/index.js +2 -2
- package/dist/components/GrSwitch/chunks/{GrSwitch-29h0QhMO.js → GrSwitch-DAioyccZ.js} +10 -10
- package/dist/components/GrSwitch/chunks/{GrSwitch-29h0QhMO.js.map → GrSwitch-DAioyccZ.js.map} +1 -1
- package/dist/components/GrSwitch/index.js +2 -2
- package/dist/components/GrTable/chunks/{GrTable-dTWUxzRm.js → GrTable-Db3hRnKA.js} +3 -3
- package/dist/components/GrTable/chunks/{GrTable-dTWUxzRm.js.map → GrTable-Db3hRnKA.js.map} +1 -1
- package/dist/components/GrTable/index.js +2 -2
- package/dist/components/GrTabs/chunks/{GrTabs-D3ntDdtg.js → GrTabs-Z-FDJUr_.js} +3 -3
- package/dist/components/GrTabs/chunks/{GrTabs-D3ntDdtg.js.map → GrTabs-Z-FDJUr_.js.map} +1 -1
- package/dist/components/GrTabs/index.js +2 -2
- package/dist/components/GrTextarea/chunks/{GrTextarea-Cv6r2GuC.js → GrTextarea-D56YxhKq.js} +3 -3
- package/dist/components/GrTextarea/chunks/{GrTextarea-Cv6r2GuC.js.map → GrTextarea-D56YxhKq.js.map} +1 -1
- package/dist/components/GrTextarea/index.js +2 -2
- package/dist/components/GrToaster/chunks/GrToaster-eI8YvnIo.js +189 -0
- package/dist/components/GrToaster/chunks/GrToaster-eI8YvnIo.js.map +1 -0
- package/dist/components/GrToaster/index.js +2 -2
- package/dist/components/GrTooltip/chunks/GrTooltip-BeyZ8ssR.js +109 -0
- package/dist/components/GrTooltip/chunks/GrTooltip-BeyZ8ssR.js.map +1 -0
- package/dist/components/GrTooltip/index.js +2 -2
- package/dist/components/GrTree/chunks/{GrTree-B2SMU5Py.js → GrTree-D3ODe2dB.js} +40 -35
- package/dist/components/GrTree/chunks/GrTree-D3ODe2dB.js.map +1 -0
- package/dist/components/GrTree/index.js +2 -2
- package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-C1abr5uH.js → GrTreeSelect-B2xBKs5Q.js} +21 -49
- package/dist/components/GrTreeSelect/chunks/GrTreeSelect-B2xBKs5Q.js.map +1 -0
- package/dist/components/GrTreeSelect/index.js +2 -2
- package/dist/composables/useTheme.js +48 -8
- package/dist/composables/useTheme.js.map +1 -1
- package/dist/composables/useToast.js +88 -26
- package/dist/composables/useToast.js.map +1 -1
- package/dist/directives/autofocus.js.map +1 -1
- package/dist/directives/autosize.js.map +1 -1
- package/dist/directives/clickOutside.js.map +1 -1
- package/dist/directives/dropzone.js +6 -5
- package/dist/directives/dropzone.js.map +1 -1
- package/dist/directives/hotkey.js +24 -7
- package/dist/directives/hotkey.js.map +1 -1
- package/dist/directives/loading.js +2 -2
- package/dist/directives/loading.js.map +1 -1
- package/dist/fileValidation/index.js +1 -1
- package/dist/granular-provider-node.js +7 -7
- package/dist/granular-provider-node.js.map +1 -1
- package/dist/granular-provider.js +1 -1
- package/dist/granular-provider.js.map +1 -1
- package/dist/i18n/all.js +1 -1
- package/dist/i18n/all.js.map +1 -1
- package/dist/i18n/index.js +2 -2
- package/dist/index.js +109 -534
- package/dist/index.js.map +1 -1
- package/dist/styles/base.css +32 -0
- package/dist/styles/index.css +15 -0
- package/dist/styles/preflight.css +29 -0
- package/dist/styles/themes/dark.css +107 -0
- package/dist/styles/themes/light.css +98 -0
- package/dist/styles/tokens.css +135 -0
- package/dist/types/src/components/GrButton/GrButton.vue.d.ts +25 -2
- package/dist/types/src/components/GrCheckbox/GrCheckbox.vue.d.ts +7 -2
- package/dist/types/src/components/GrConfirmDialog/GrConfirmDialog.vue.d.ts +8 -8
- package/dist/types/src/components/GrDataTable/GrDataTable.vue.d.ts +1 -1
- package/dist/types/src/components/GrDialog/GrDialog.vue.d.ts +2 -2
- package/dist/types/src/components/GrDialog/GrDialogHeader.vue.d.ts +2 -2
- package/dist/types/src/components/GrDrawer/GrDrawer.vue.d.ts +2 -2
- package/dist/types/src/components/GrDropdown/grDropdownStyles.d.ts +3 -2
- package/dist/types/src/components/GrDropdownMenu/GrDropdownMenu.vue.d.ts +2 -2
- package/dist/types/src/components/GrDropdownMenu/GrDropdownMenuGroup.vue.d.ts +1 -1
- package/dist/types/src/components/GrDropdownMenu/GrDropdownMenuList.vue.d.ts +2 -2
- package/dist/types/src/components/GrFileUpload/GrFileUpload.vue.d.ts +5 -5
- package/dist/types/src/components/GrFormFile/GrFormFile.vue.d.ts +11 -11
- package/dist/types/src/components/GrImageViewer/GrImageViewer.vue.d.ts +18 -18
- package/dist/types/src/components/GrInput/GrInput.vue.d.ts +14 -0
- package/dist/types/src/components/GrInput/grInputStyles.d.ts +3 -3
- package/dist/types/src/components/GrInputTag/GrInputTag.vue.d.ts +2 -2
- package/dist/types/src/components/GrLink/GrLink.vue.d.ts +11 -5
- package/dist/types/src/components/GrLink/grLinkStyles.d.ts +31 -3
- package/dist/types/src/components/GrLink/index.d.ts +1 -1
- package/dist/types/src/components/GrLoading/GrLoading.vue.d.ts +1 -1
- package/dist/types/src/components/GrModal/grModalStyles.d.ts +2 -2
- package/dist/types/src/components/GrNumberInput/GrNumberInput.vue.d.ts +17 -4
- package/dist/types/src/components/GrPagination/GrPagination.vue.d.ts +13 -1
- package/dist/types/src/components/GrPromptDialog/GrPromptDialog.vue.d.ts +12 -12
- package/dist/types/src/components/GrSegmented/GrSegmented.vue.d.ts +2 -2
- package/dist/types/src/components/GrSegmented/grSegmentedStyles.d.ts +5 -5
- package/dist/types/src/components/GrSelect/GrSelect.vue.d.ts +7 -7
- package/dist/types/src/components/GrSelect/grSelectStyles.d.ts +2 -1
- package/dist/types/src/components/GrSidebar/GrSidebar.vue.d.ts +33 -10
- package/dist/types/src/components/GrSidebar/GrSidebarItem.vue.d.ts +64 -0
- package/dist/types/src/components/GrSidebar/index.d.ts +1 -0
- package/dist/types/src/components/GrSidebar/sidebarContext.d.ts +9 -0
- package/dist/types/src/components/GrSwitch/GrSwitch.vue.d.ts +1 -1
- package/dist/types/src/components/GrSwitch/grSwitchStyles.d.ts +2 -2
- package/dist/types/src/components/GrToaster/GrToaster.vue.d.ts +9 -4
- package/dist/types/src/components/GrTree/GrTree.vue.d.ts +1 -1
- package/dist/types/src/components/GrTreeSelect/GrTreeSelect.vue.d.ts +2 -2
- package/dist/types/src/components/GrTreeSelect/grTreeSelectStyles.d.ts +1 -1
- package/dist/types/src/components/GrTreeSelect/grTreeSelectTypes.d.ts +1 -1
- package/dist/types/src/composables/internal/useAddonMeasurement.d.ts +18 -0
- package/dist/types/src/composables/internal/useEscapeToClose.d.ts +11 -0
- package/dist/types/src/composables/internal/useFloating.d.ts +53 -0
- package/dist/types/src/composables/useTheme.d.ts +5 -2
- package/dist/types/src/composables/useToast.d.ts +33 -1
- package/dist/types/src/directives/hotkey.d.ts +14 -0
- package/dist/types/src/granular-provider/shared.d.ts +1 -3
- package/dist/types/src/i18n/messages/en.d.ts +132 -0
- package/dist/types/src/i18n/messages/es.d.ts +132 -0
- package/dist/types/src/i18n/messages/ru.d.ts +132 -0
- package/dist/types/src/index.d.ts +2 -2
- package/dist/vue/index.js.map +1 -1
- package/dist/web-types.json +4673 -0
- package/package.json +33 -19
- package/dist/chunks/arrow-up-DZdIrpaF.js.map +0 -1
- package/dist/chunks/config-B2YTEe_h.js.map +0 -1
- package/dist/chunks/config-BY81UKv0.js.map +0 -1
- package/dist/chunks/config-Br_qI3Za.js.map +0 -1
- package/dist/chunks/config-C6zT56Jc2.js.map +0 -1
- package/dist/chunks/config-CpMYmvVT.js +0 -59
- package/dist/chunks/config-CpMYmvVT.js.map +0 -1
- package/dist/chunks/config-_3De4HFf.js.map +0 -1
- package/dist/chunks/en-foQA8imU.js +0 -65
- package/dist/chunks/en-foQA8imU.js.map +0 -1
- package/dist/chunks/es-DZFSojYL.js +0 -65
- package/dist/chunks/es-DZFSojYL.js.map +0 -1
- package/dist/chunks/grBadgeStyles-Cq0hH2Ls.js.map +0 -1
- package/dist/chunks/grButtonStyles-DKuXUemw.js +0 -191
- package/dist/chunks/grButtonStyles-DKuXUemw.js.map +0 -1
- package/dist/chunks/grDropdownStyles-B41mVR1H.js +0 -32
- package/dist/chunks/grDropdownStyles-B41mVR1H.js.map +0 -1
- package/dist/chunks/grModalStyles-DS1Vl6EW.js.map +0 -1
- package/dist/chunks/grSelectStyles-pUt19VGy.js.map +0 -1
- package/dist/chunks/grStyle-CUaTmpyW.js.map +0 -1
- package/dist/chunks/granularityI18n-LcJ88Vce.js.map +0 -1
- package/dist/chunks/info-C0bHmdZq.js.map +0 -1
- package/dist/chunks/loader-circle-BUntgosj.js.map +0 -1
- package/dist/chunks/ru-LhkPpPIl.js +0 -65
- package/dist/chunks/ru-LhkPpPIl.js.map +0 -1
- package/dist/chunks/safelist-_UVzJrgE2.js.map +0 -1
- package/dist/chunks/shared-BiqXd5MW.js +0 -169
- package/dist/chunks/shared-BiqXd5MW.js.map +0 -1
- package/dist/chunks/x-Pa6C2hwi.js.map +0 -1
- package/dist/chunks/x-circle-DQSlBLmX.js.map +0 -1
- package/dist/components/GrAlert/chunks/GrAlert-HyCjYJeL.js.map +0 -1
- package/dist/components/GrButton/chunks/GrButton-CPDKonoB.js +0 -83
- package/dist/components/GrButton/chunks/GrButton-CPDKonoB.js.map +0 -1
- package/dist/components/GrButtonGroup/chunks/GrButtonGroup-CPOH6V-P.js.map +0 -1
- package/dist/components/GrCard/chunks/GrCard-6yk1RRAQ.js.map +0 -1
- package/dist/components/GrCheckbox/chunks/GrCheckbox-Bt3d7ckE.js.map +0 -1
- package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-Br6WJkLE.js.map +0 -1
- package/dist/components/GrDialog/chunks/GrDialog-C7XLxp8e.js.map +0 -1
- package/dist/components/GrDrawer/chunks/GrDrawer-BW3wtI7h.js.map +0 -1
- package/dist/components/GrDropdown/chunks/GrDropdown-DOvHKnih.js +0 -151
- package/dist/components/GrDropdown/chunks/GrDropdown-DOvHKnih.js.map +0 -1
- package/dist/components/GrFileUpload/chunks/GrFileUpload-BEKNB1RM.js.map +0 -1
- package/dist/components/GrFormFile/chunks/GrFormFile-CIleXnfr.js.map +0 -1
- package/dist/components/GrImageViewer/chunks/GrImageViewer-CsvXQHM9.js.map +0 -1
- package/dist/components/GrInput/chunks/GrInput-gwFQ1sk4.js.map +0 -1
- package/dist/components/GrInputTag/chunks/GrInputTag-Dcj3F6rQ.js.map +0 -1
- package/dist/components/GrLink/chunks/GrLink-BMwn2iJ9.js.map +0 -1
- package/dist/components/GrNumberInput/chunks/GrNumberInput-YIWhV85S.js.map +0 -1
- package/dist/components/GrPagination/chunks/GrPagination-BNDEqM8_.js +0 -114
- package/dist/components/GrPagination/chunks/GrPagination-BNDEqM8_.js.map +0 -1
- package/dist/components/GrPromptDialog/chunks/GrPromptDialog-BV4EW3XO.js.map +0 -1
- package/dist/components/GrResponseErrorBanner/chunks/GrResponseErrorBanner-BMvXREcv.js.map +0 -1
- package/dist/components/GrSelect/chunks/GrSelect-CnHdbPlf.js.map +0 -1
- package/dist/components/GrSidebar/chunks/GrSidebar-BpBtAGBs.js +0 -44
- package/dist/components/GrSidebar/chunks/GrSidebar-BpBtAGBs.js.map +0 -1
- package/dist/components/GrToaster/chunks/GrToaster-DluJmR5D.js +0 -171
- package/dist/components/GrToaster/chunks/GrToaster-DluJmR5D.js.map +0 -1
- package/dist/components/GrTooltip/chunks/GrTooltip-B7I1AVIC.js +0 -55
- package/dist/components/GrTooltip/chunks/GrTooltip-B7I1AVIC.js.map +0 -1
- package/dist/components/GrTree/chunks/GrTree-B2SMU5Py.js.map +0 -1
- package/dist/components/GrTreeSelect/chunks/GrTreeSelect-C1abr5uH.js.map +0 -1
- /package/dist/chunks/{_plugin-vue_export-helper-DQR7Sy7Q.js → _plugin-vue_export-helper-BOaGB7Aw.js} +0 -0
- /package/dist/chunks/{adapter-BqqjEZGU.js → adapter-CAOxmn2G.js} +0 -0
- /package/dist/chunks/{arrow-up-DZdIrpaF.js → arrow-up-C_G4jg8M.js} +0 -0
- /package/dist/chunks/{classTokens-BPeBXNzu.js → classTokens-BzazaERD.js} +0 -0
- /package/dist/chunks/{config-DaHI5bD_2.js → config-8Pcutu1j2.js} +0 -0
- /package/dist/chunks/{config-DoBk_CzG.js → config-B0qIpo8m.js} +0 -0
- /package/dist/chunks/{config-DbghHyY_.js → config-BEegFP74.js} +0 -0
- /package/dist/chunks/{config-Dzd6BzIN2.js → config-BLHqZhy-2.js} +0 -0
- /package/dist/chunks/{config-BV4vBzdm.js → config-BNu8lFQB.js} +0 -0
- /package/dist/chunks/{config-B1kFmhpM.js → config-BUHuGBik.js} +0 -0
- /package/dist/chunks/{config-DF_RlCIO.js → config-BWGGp7uV.js} +0 -0
- /package/dist/chunks/{config-BduXEXjt.js → config-BXtAmU3s.js} +0 -0
- /package/dist/chunks/{config-O1_FTqD3.js → config-Bah4oHwL.js} +0 -0
- /package/dist/chunks/{config-DSBlHQVa.js → config-C86UzUYf.js} +0 -0
- /package/dist/chunks/{config-BgBWt9-A.js → config-C9AcVDkv.js} +0 -0
- /package/dist/chunks/{config-BeQuykDk2.js → config-CGHLoBlH2.js} +0 -0
- /package/dist/chunks/{config-ChQxl75m.js → config-CThzliFi.js} +0 -0
- /package/dist/chunks/{config-DmjwIqx1.js → config-Cb2PAlSD.js} +0 -0
- /package/dist/chunks/{config-BbKroFtR.js → config-D7GZO-Dx.js} +0 -0
- /package/dist/chunks/{config-CUwF4E4R.js → config-DBmdgoVf.js} +0 -0
- /package/dist/chunks/{config-C9MblwGq.js → config-DICOd-2X.js} +0 -0
- /package/dist/chunks/{config-D6Oe3blW2.js → config-DpqOnJiz2.js} +0 -0
- /package/dist/chunks/{config-V3LF-b_F.js → config-Dxuwwepq.js} +0 -0
- /package/dist/chunks/{config-CvGdaXvH.js → config-HZto2PVy.js} +0 -0
- /package/dist/chunks/{config-BOdu-O_B.js → config-JOtB4mzs.js} +0 -0
- /package/dist/chunks/{config-iuMz79Mg.js → config-JpHA4Xx0.js} +0 -0
- /package/dist/chunks/{config-Dcb7xK-C.js → config-PFg39mYo.js} +0 -0
- /package/dist/chunks/{config-BU0olrvr.js → config-QaIc_gRa.js} +0 -0
- /package/dist/chunks/{config-vcDVCYXo.js → config-U4m9PSql.js} +0 -0
- /package/dist/chunks/{config-Ci9nXGUV.js → config-ZiXWIRBX.js} +0 -0
- /package/dist/chunks/{config-Bcf-8XlK2.js → config-ipvU0lzP2.js} +0 -0
- /package/dist/chunks/{config-D5ek7VSi.js → config-xR4XVmcy.js} +0 -0
- /package/dist/chunks/{dialogShared-BtXUk6Zc.js → dialogShared-CxW62PQE.js} +0 -0
- /package/dist/chunks/{grLoadingStyles-DmI-SJ3i.js → grLoadingStyles-R5sreH__.js} +0 -0
- /package/dist/chunks/{info-C0bHmdZq.js → info-Be2OccTu.js} +0 -0
- /package/dist/chunks/{loader-circle-BUntgosj.js → loader-circle-CfVLz7lb.js} +0 -0
- /package/dist/chunks/{x-Pa6C2hwi.js → x-2KXnqxiD.js} +0 -0
- /package/dist/chunks/{x-circle-DQSlBLmX.js → x-circle-BCBURwyX.js} +0 -0
- /package/dist/components/GrBottomNav/chunks/{GrBottomNav-XPHwd7UQ.js → GrBottomNav-usuMgG8_.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileValidation-c_iBg74s.js","names":[],"sources":["../../src/fileValidation/FileValidationError.ts","../../src/fileValidation/runFileValidators.ts","../../src/fileValidation/matchAccept.ts","../../src/fileValidation/acceptValidator.ts","../../src/fileValidation/allowedExtensionsValidator.ts","../../src/fileValidation/allowedMimeTypesValidator.ts","../../src/fileValidation/maxFileSizeBytesValidator.ts","../../src/fileValidation/maxSizeMbValidator.ts","../../src/fileValidation/maxTotalSizeBytesValidator.ts"],"sourcesContent":["import type { FileValidationIssue, FileValidationIssueCode } from './types'\n\nexport class FileValidationError extends Error {\n code: FileValidationIssueCode\n file?: File\n issues: FileValidationIssue[]\n\n constructor(issues: FileValidationIssue[], files?: File[], message?: string) {\n super(message ?? issues[0]?.message ?? 'File validation failed')\n this.name = 'FileValidationError'\n\n this.issues = issues\n this.code = issues[0]?.code ?? 'accept'\n\n const firstFileName = issues[0]?.fileName\n const byName = firstFileName && files ? files.find(f => f.name === firstFileName) : undefined\n // Fallback to the first file if the named one isn't present in `files`\n // (e.g. aggregate issue like `maxTotalSize` has no `fileName`, or names diverged).\n this.file = byName ?? files?.[0]\n }\n}","import type { FileValidationIssue, FileValidator, FileValidatorContext } from './types'\n\nexport function normalizeFiles(files: File[], multiple: boolean): File[] {\n const list = [...files]\n return multiple ? list : list.slice(0, 1)\n}\n\nfunction isPromiseLike<T>(value: unknown): value is PromiseLike<T> {\n return !!value && typeof (value as any).then === 'function'\n}\n\nexport type RunFileValidatorsResult = { files: File[]; issues: FileValidationIssue[] }\n\nexport function runFileValidators(\n files: File[],\n validators: FileValidator[] | undefined,\n context: FileValidatorContext,\n): RunFileValidatorsResult | Promise<RunFileValidatorsResult> {\n const picked = normalizeFiles(files, context.multiple)\n\n const issues: FileValidationIssue[] = []\n\n const list = validators ?? []\n for (let i = 0; i < list.length; i++) {\n const validator = list[i]\n if (!validator) continue\n\n const res = validator({ files: picked, context })\n\n if (isPromiseLike<FileValidationIssue[]>(res)) {\n return (async () => {\n const first = await res\n if (Array.isArray(first) && first.length > 0) issues.push(...first)\n\n for (let j = i + 1; j < list.length; j++) {\n const nextValidator = list[j]\n if (!nextValidator) continue\n\n const nextRes = nextValidator({ files: picked, context })\n const next = isPromiseLike<FileValidationIssue[]>(nextRes) ? await nextRes : nextRes\n if (Array.isArray(next) && next.length > 0) issues.push(...next)\n }\n\n return { files: picked, issues }\n })()\n }\n\n if (Array.isArray(res) && res.length > 0) issues.push(...res)\n }\n\n return { files: picked, issues }\n}","function parseAccept(accept: string | undefined): string[] {\n if (!accept) return []\n\n return accept\n .split(',')\n .map(s => s.trim())\n .filter(Boolean)\n}\n\nexport function matchAccept(file: File, accept: string | undefined): boolean {\n const tokens = parseAccept(accept)\n if (!tokens.length) return true\n\n const fileName = file.name.toLowerCase()\n const fileType = (file.type || '').toLowerCase()\n\n for (const rawToken of tokens) {\n const token = rawToken.toLowerCase()\n\n // Extension match, e.g. \".png\".\n if (token.startsWith('.')) {\n if (fileName.endsWith(token)) return true\n continue\n }\n\n // Mime group match, e.g. \"image/*\".\n if (token.endsWith('/*')) {\n if (!fileType) continue\n const prefix = token.slice(0, -1) // keep trailing '/'\n if (fileType.startsWith(prefix)) return true\n continue\n }\n\n // Exact mime match, e.g. \"image/png\".\n if (!fileType) continue\n if (fileType === token) return true\n }\n\n return false\n}","import type { FileValidationIssue, FileValidator } from './types'\n\nimport { matchAccept } from './matchAccept'\n\nexport function acceptValidator(accept: string | undefined): FileValidator {\n if (!accept) return () => []\n\n return ({ files }): FileValidationIssue[] => {\n const issues: FileValidationIssue[] = []\n\n for (const file of files) {\n if (matchAccept(file, accept)) continue\n\n issues.push({\n fileName: file.name,\n code: 'accept',\n message: `File \"${file.name}\" does not match accept=\"${accept}\"`,\n })\n }\n\n return issues\n }\n}","import type { FileValidationIssue, FileValidator } from './types'\n\nfunction normalizeExtensions(exts: string[] | undefined): string[] {\n return (exts ?? [])\n .map(s => s.trim().toLowerCase())\n .filter(Boolean)\n .map(s => (s.startsWith('.') ? s.slice(1) : s))\n}\n\nfunction fileExtensionLower(fileName: string): string {\n const i = fileName.lastIndexOf('.')\n if (i < 0) return ''\n return fileName.slice(i + 1).toLowerCase()\n}\n\nexport function allowedExtensionsValidator(exts: string[]): FileValidator {\n const allowedExt = normalizeExtensions(exts)\n if (allowedExt.length === 0) return () => []\n\n return ({ files }): FileValidationIssue[] => {\n const issues: FileValidationIssue[] = []\n\n for (const file of files) {\n const ext = fileExtensionLower(file.name)\n if (!ext) continue\n\n if (!allowedExt.includes(ext)) {\n issues.push({\n fileName: file.name,\n code: 'extension',\n message: `File \"${file.name}\" has disallowed extension \".${ext}\"`,\n })\n }\n }\n\n return issues\n }\n}","import type { FileValidationIssue, FileValidator } from './types'\n\nexport type AllowedMimeTypesValidatorOptions = {\n /**\n * Если `true`, то для fallback-типа (`''`/`application/octet-stream`) валидация по MIME пропускается,\n * предполагая проверку расширения отдельным валидатором.\n */\n allowFallbackByExtension?: boolean\n}\n\nfunction isFallbackType(type: string): boolean {\n return type === '' || type === 'application/octet-stream'\n}\n\nexport function allowedMimeTypesValidator(\n allowed: string[],\n options: AllowedMimeTypesValidatorOptions = {},\n): FileValidator {\n const allowedMime = (allowed ?? []).map(s => s.trim().toLowerCase()).filter(Boolean)\n if (allowedMime.length === 0) return () => []\n\n return ({ files }): FileValidationIssue[] => {\n const issues: FileValidationIssue[] = []\n\n for (const file of files) {\n const fileType = (file.type || '').toLowerCase()\n\n if (isFallbackType(fileType)) {\n // Legacy behavior in DS: fallback types are not rejected by MIME allow-list.\n // If consumer needs strictness, it can explicitly forbid fallback types.\n if (options.allowFallbackByExtension === false) {\n issues.push({\n fileName: file.name,\n code: 'mimeType',\n message: `File \"${file.name}\" has fallback mime type \"${fileType}\"`,\n })\n }\n\n continue\n }\n\n if (!allowedMime.includes(fileType)) {\n issues.push({\n fileName: file.name,\n code: 'mimeType',\n message: `File \"${file.name}\" has disallowed mime type \"${fileType}\"`,\n })\n }\n }\n\n return issues\n }\n}","import type { FileValidationIssue, FileValidator } from './types'\n\nexport function maxFileSizeBytesValidator(maxBytes: number | undefined): FileValidator {\n if (typeof maxBytes !== 'number' || !Number.isFinite(maxBytes) || maxBytes <= 0) return () => []\n\n return ({ files }): FileValidationIssue[] => {\n const issues: FileValidationIssue[] = []\n\n for (const file of files) {\n if (file.size <= maxBytes) continue\n\n issues.push({\n fileName: file.name,\n code: 'maxFileSize',\n message: `File \"${file.name}\" is too large (${file.size} bytes), maxBytes=${maxBytes}`,\n meta: { maxBytes },\n })\n }\n\n return issues\n }\n}","import type { FileValidationIssue, FileValidator } from './types'\n\nexport function maxSizeMbValidator(maxSizeMb: number | undefined): FileValidator {\n if (typeof maxSizeMb !== 'number' || !Number.isFinite(maxSizeMb) || maxSizeMb <= 0) return () => []\n const maxBytes = maxSizeMb * 1024 * 1024\n\n return ({ files }): FileValidationIssue[] => {\n const issues: FileValidationIssue[] = []\n\n for (const file of files) {\n if (file.size <= maxBytes) continue\n\n issues.push({\n fileName: file.name,\n code: 'maxSize',\n message: `File \"${file.name}\" is too large (${file.size} bytes), maxBytes=${maxBytes}`,\n meta: { maxBytes, maxSizeMb },\n })\n }\n\n return issues\n }\n}","import type { FileValidationIssue, FileValidator } from './types'\n\nexport function maxTotalSizeBytesValidator(maxBytes: number | undefined): FileValidator {\n if (typeof maxBytes !== 'number' || !Number.isFinite(maxBytes) || maxBytes <= 0) return () => []\n\n return ({ files }): FileValidationIssue[] => {\n const total = files.reduce((acc, f) => acc + (Number(f.size) || 0), 0)\n if (total <= maxBytes) return []\n\n const issue: FileValidationIssue = {\n code: 'maxTotalSize',\n message: `Total files size is too large (${total} bytes), maxTotalSizeBytes=${maxBytes}`,\n meta: { total, maxBytes },\n }\n\n return [issue]\n }\n}"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fileValidation-C3WFaWU2.js","names":[],"sources":["../../src/fileValidation/FileValidationError.ts","../../src/fileValidation/runFileValidators.ts","../../src/fileValidation/matchAccept.ts","../../src/fileValidation/acceptValidator.ts","../../src/fileValidation/allowedExtensionsValidator.ts","../../src/fileValidation/allowedMimeTypesValidator.ts","../../src/fileValidation/maxFileSizeBytesValidator.ts","../../src/fileValidation/maxSizeMbValidator.ts","../../src/fileValidation/maxTotalSizeBytesValidator.ts"],"sourcesContent":["import type { FileValidationIssue, FileValidationIssueCode } from './types'\n\nexport class FileValidationError extends Error {\n code: FileValidationIssueCode\n file?: File\n issues: FileValidationIssue[]\n\n constructor(issues: FileValidationIssue[], files?: File[], message?: string) {\n super(message ?? issues[0]?.message ?? 'File validation failed')\n this.name = 'FileValidationError'\n\n this.issues = issues\n this.code = issues[0]?.code ?? 'accept'\n\n const firstFileName = issues[0]?.fileName\n const byName = firstFileName && files ? files.find(f => f.name === firstFileName) : undefined\n // Fallback to the first file if the named one isn't present in `files`\n // (e.g. aggregate issue like `maxTotalSize` has no `fileName`, or names diverged).\n this.file = byName ?? files?.[0]\n }\n}","import type { FileValidationIssue, FileValidator, FileValidatorContext } from './types'\n\nexport function normalizeFiles(files: File[], multiple: boolean): File[] {\n const list = [...files]\n return multiple ? list : list.slice(0, 1)\n}\n\nfunction isPromiseLike<T>(value: unknown): value is PromiseLike<T> {\n return !!value && typeof (value as any).then === 'function'\n}\n\nexport type RunFileValidatorsResult = { files: File[]; issues: FileValidationIssue[] }\n\nexport function runFileValidators(\n files: File[],\n validators: FileValidator[] | undefined,\n context: FileValidatorContext,\n): RunFileValidatorsResult | Promise<RunFileValidatorsResult> {\n const picked = normalizeFiles(files, context.multiple)\n\n const issues: FileValidationIssue[] = []\n\n const list = validators ?? []\n for (let i = 0; i < list.length; i++) {\n const validator = list[i]\n if (!validator) continue\n\n const res = validator({ files: picked, context })\n\n if (isPromiseLike<FileValidationIssue[]>(res)) {\n return (async () => {\n const first = await res\n if (Array.isArray(first) && first.length > 0) issues.push(...first)\n\n for (let j = i + 1; j < list.length; j++) {\n const nextValidator = list[j]\n if (!nextValidator) continue\n\n const nextRes = nextValidator({ files: picked, context })\n const next = isPromiseLike<FileValidationIssue[]>(nextRes) ? await nextRes : nextRes\n if (Array.isArray(next) && next.length > 0) issues.push(...next)\n }\n\n return { files: picked, issues }\n })()\n }\n\n if (Array.isArray(res) && res.length > 0) issues.push(...res)\n }\n\n return { files: picked, issues }\n}","function parseAccept(accept: string | undefined): string[] {\n if (!accept) return []\n\n return accept\n .split(',')\n .map(s => s.trim())\n .filter(Boolean)\n}\n\nexport function matchAccept(file: File, accept: string | undefined): boolean {\n const tokens = parseAccept(accept)\n if (!tokens.length) return true\n\n const fileName = file.name.toLowerCase()\n const fileType = (file.type || '').toLowerCase()\n\n for (const rawToken of tokens) {\n const token = rawToken.toLowerCase()\n\n // Extension match, e.g. \".png\".\n if (token.startsWith('.')) {\n if (fileName.endsWith(token)) return true\n continue\n }\n\n // Mime group match, e.g. \"image/*\".\n if (token.endsWith('/*')) {\n if (!fileType) continue\n const prefix = token.slice(0, -1) // keep trailing '/'\n if (fileType.startsWith(prefix)) return true\n continue\n }\n\n // Exact mime match, e.g. \"image/png\".\n if (!fileType) continue\n if (fileType === token) return true\n }\n\n return false\n}","import type { FileValidationIssue, FileValidator } from './types'\n\nimport { matchAccept } from './matchAccept'\n\nexport function acceptValidator(accept: string | undefined): FileValidator {\n if (!accept) return () => []\n\n return ({ files }): FileValidationIssue[] => {\n const issues: FileValidationIssue[] = []\n\n for (const file of files) {\n if (matchAccept(file, accept)) continue\n\n issues.push({\n fileName: file.name,\n code: 'accept',\n message: `File \"${file.name}\" does not match accept=\"${accept}\"`,\n })\n }\n\n return issues\n }\n}","import type { FileValidationIssue, FileValidator } from './types'\n\nfunction normalizeExtensions(exts: string[] | undefined): string[] {\n return (exts ?? [])\n .map(s => s.trim().toLowerCase())\n .filter(Boolean)\n .map(s => (s.startsWith('.') ? s.slice(1) : s))\n}\n\nfunction fileExtensionLower(fileName: string): string {\n const i = fileName.lastIndexOf('.')\n if (i < 0) return ''\n return fileName.slice(i + 1).toLowerCase()\n}\n\nexport function allowedExtensionsValidator(exts: string[]): FileValidator {\n const allowedExt = normalizeExtensions(exts)\n if (allowedExt.length === 0) return () => []\n\n return ({ files }): FileValidationIssue[] => {\n const issues: FileValidationIssue[] = []\n\n for (const file of files) {\n const ext = fileExtensionLower(file.name)\n if (!ext) continue\n\n if (!allowedExt.includes(ext)) {\n issues.push({\n fileName: file.name,\n code: 'extension',\n message: `File \"${file.name}\" has disallowed extension \".${ext}\"`,\n })\n }\n }\n\n return issues\n }\n}","import type { FileValidationIssue, FileValidator } from './types'\n\nexport type AllowedMimeTypesValidatorOptions = {\n /**\n * Если `true`, то для fallback-типа (`''`/`application/octet-stream`) валидация по MIME пропускается,\n * предполагая проверку расширения отдельным валидатором.\n */\n allowFallbackByExtension?: boolean\n}\n\nfunction isFallbackType(type: string): boolean {\n return type === '' || type === 'application/octet-stream'\n}\n\nexport function allowedMimeTypesValidator(\n allowed: string[],\n options: AllowedMimeTypesValidatorOptions = {},\n): FileValidator {\n const allowedMime = (allowed ?? []).map(s => s.trim().toLowerCase()).filter(Boolean)\n if (allowedMime.length === 0) return () => []\n\n return ({ files }): FileValidationIssue[] => {\n const issues: FileValidationIssue[] = []\n\n for (const file of files) {\n const fileType = (file.type || '').toLowerCase()\n\n if (isFallbackType(fileType)) {\n // Legacy behavior in GR: fallback types are not rejected by MIME allow-list.\n // If consumer needs strictness, it can explicitly forbid fallback types.\n if (options.allowFallbackByExtension === false) {\n issues.push({\n fileName: file.name,\n code: 'mimeType',\n message: `File \"${file.name}\" has fallback mime type \"${fileType}\"`,\n })\n }\n\n continue\n }\n\n if (!allowedMime.includes(fileType)) {\n issues.push({\n fileName: file.name,\n code: 'mimeType',\n message: `File \"${file.name}\" has disallowed mime type \"${fileType}\"`,\n })\n }\n }\n\n return issues\n }\n}","import type { FileValidationIssue, FileValidator } from './types'\n\nexport function maxFileSizeBytesValidator(maxBytes: number | undefined): FileValidator {\n if (typeof maxBytes !== 'number' || !Number.isFinite(maxBytes) || maxBytes <= 0) return () => []\n\n return ({ files }): FileValidationIssue[] => {\n const issues: FileValidationIssue[] = []\n\n for (const file of files) {\n if (file.size <= maxBytes) continue\n\n issues.push({\n fileName: file.name,\n code: 'maxFileSize',\n message: `File \"${file.name}\" is too large (${file.size} bytes), maxBytes=${maxBytes}`,\n meta: { maxBytes },\n })\n }\n\n return issues\n }\n}","import type { FileValidationIssue, FileValidator } from './types'\n\nexport function maxSizeMbValidator(maxSizeMb: number | undefined): FileValidator {\n if (typeof maxSizeMb !== 'number' || !Number.isFinite(maxSizeMb) || maxSizeMb <= 0) return () => []\n const maxBytes = maxSizeMb * 1024 * 1024\n\n return ({ files }): FileValidationIssue[] => {\n const issues: FileValidationIssue[] = []\n\n for (const file of files) {\n if (file.size <= maxBytes) continue\n\n issues.push({\n fileName: file.name,\n code: 'maxSize',\n message: `File \"${file.name}\" is too large (${file.size} bytes), maxBytes=${maxBytes}`,\n meta: { maxBytes, maxSizeMb },\n })\n }\n\n return issues\n }\n}","import type { FileValidationIssue, FileValidator } from './types'\n\nexport function maxTotalSizeBytesValidator(maxBytes: number | undefined): FileValidator {\n if (typeof maxBytes !== 'number' || !Number.isFinite(maxBytes) || maxBytes <= 0) return () => []\n\n return ({ files }): FileValidationIssue[] => {\n const total = files.reduce((acc, f) => acc + (Number(f.size) || 0), 0)\n if (total <= maxBytes) return []\n\n const issue: FileValidationIssue = {\n code: 'maxTotalSize',\n message: `Total files size is too large (${total} bytes), maxTotalSizeBytes=${maxBytes}`,\n meta: { total, maxBytes },\n }\n\n return [issue]\n }\n}"],"mappings":"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"}
|
|
@@ -14,25 +14,25 @@ var semiRadiusClassBySize = {
|
|
|
14
14
|
var lightToneClassByTone = {
|
|
15
15
|
neutral: "bg-[var(--muted)] text-[var(--fg)] border-[var(--brd)]",
|
|
16
16
|
primary: "bg-[var(--accent)] text-[var(--accent-fg)] border-[color-mix(in_srgb,var(--primary)_30%,var(--accent))]",
|
|
17
|
-
success: "bg-[var(--
|
|
18
|
-
warning: "bg-[var(--
|
|
19
|
-
danger: "bg-[var(--
|
|
20
|
-
info: "bg-[var(--
|
|
21
|
-
slate: "bg-[var(--
|
|
22
|
-
azure: "bg-[var(--
|
|
17
|
+
success: "bg-[var(--gr-success-light)] text-[var(--gr-success)] border-[color-mix(in_srgb,var(--gr-success)_30%,var(--gr-success-light))]",
|
|
18
|
+
warning: "bg-[var(--gr-warning-light)] text-[var(--gr-warning)] border-[color-mix(in_srgb,var(--gr-warning)_30%,var(--gr-warning-light))]",
|
|
19
|
+
danger: "bg-[var(--gr-danger-light)] text-[var(--gr-danger)] border-[color-mix(in_srgb,var(--gr-danger)_30%,var(--gr-danger-light))]",
|
|
20
|
+
info: "bg-[var(--gr-info-light)] text-[var(--gr-info)] border-[color-mix(in_srgb,var(--gr-info)_30%,var(--gr-info-light))]",
|
|
21
|
+
slate: "bg-[var(--gr-slate-light)] text-[var(--gr-slate-text)] border-[color-mix(in_srgb,var(--gr-slate)_30%,var(--gr-slate-light))]",
|
|
22
|
+
azure: "bg-[var(--gr-azure-light)] text-[var(--gr-azure-text)] border-[color-mix(in_srgb,var(--gr-azure)_30%,var(--gr-azure-light))]"
|
|
23
23
|
};
|
|
24
24
|
var darkToneClassByTone = {
|
|
25
25
|
neutral: "bg-[var(--fg)] text-[var(--bg)] border-[color-mix(in_srgb,var(--fg)_35%,var(--brd))]",
|
|
26
26
|
primary: "bg-[var(--primary)] text-[var(--primary-fg)] border-[var(--primary)]",
|
|
27
|
-
success: "bg-[var(--
|
|
28
|
-
warning: "bg-[var(--
|
|
29
|
-
danger: "bg-[var(--
|
|
30
|
-
info: "bg-[var(--
|
|
31
|
-
slate: "bg-[var(--
|
|
32
|
-
azure: "bg-[var(--
|
|
27
|
+
success: "bg-[var(--gr-success)] text-white border-[var(--gr-success)]",
|
|
28
|
+
warning: "bg-[var(--gr-warning)] text-white border-[var(--gr-warning)]",
|
|
29
|
+
danger: "bg-[var(--gr-danger)] text-white border-[var(--gr-danger)]",
|
|
30
|
+
info: "bg-[var(--gr-info)] text-white border-[var(--gr-info)]",
|
|
31
|
+
slate: "bg-[var(--gr-slate)] text-[var(--gr-slate-fg)] border-[var(--gr-slate)]",
|
|
32
|
+
azure: "bg-[var(--gr-azure)] text-[var(--gr-azure-fg)] border-[var(--gr-azure)]"
|
|
33
33
|
};
|
|
34
34
|
function radiusClass(radius, size) {
|
|
35
|
-
if (radius === "square") return "rounded-[var(--
|
|
35
|
+
if (radius === "square") return "rounded-[var(--gr-radius-none)]";
|
|
36
36
|
if (radius === "semi") return semiRadiusClassBySize[size];
|
|
37
37
|
return "rounded-full";
|
|
38
38
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grBadgeStyles-DrycBuKT.js","names":[],"sources":["../../src/components/GrBadge/grBadgeStyles.ts"],"sourcesContent":["import type { GrTone } from '../shared/tones'\n\nexport type GrBadgeTone = GrTone\nexport type GrBadgeSize = 'xs' | 'sm' | 'md' | 'lg'\nexport type GrBadgeRadius = 'square' | 'semi' | 'round'\nexport const sizeClassBySize: Record<GrBadgeSize, string> = {\n xs: 'px-2 py-0.4 text-[11px]',\n sm: 'px-2.5 py-0.5 text-[12px]',\n md: 'px-3 py-1 text-[13px]',\n lg: 'px-3.5 py-1.5 text-[14px]',\n}\nexport const semiRadiusClassBySize: Record<GrBadgeSize, string> = {\n xs: 'rounded-[3px]',\n sm: 'rounded-[3px]',\n md: 'rounded-[5px]',\n lg: 'rounded-[7px]',\n}\nexport const lightToneClassByTone: Record<GrBadgeTone, string> = {\n neutral: 'bg-[var(--muted)] text-[var(--fg)] border-[var(--brd)]',\n primary:\n 'bg-[var(--accent)] text-[var(--accent-fg)] border-[color-mix(in_srgb,var(--primary)_30%,var(--accent))]',\n success: 'bg-[var(--gr-success-light)] text-[var(--gr-success)] border-[color-mix(in_srgb,var(--gr-success)_30%,var(--gr-success-light))]',\n warning: 'bg-[var(--gr-warning-light)] text-[var(--gr-warning)] border-[color-mix(in_srgb,var(--gr-warning)_30%,var(--gr-warning-light))]',\n danger: 'bg-[var(--gr-danger-light)] text-[var(--gr-danger)] border-[color-mix(in_srgb,var(--gr-danger)_30%,var(--gr-danger-light))]',\n info: 'bg-[var(--gr-info-light)] text-[var(--gr-info)] border-[color-mix(in_srgb,var(--gr-info)_30%,var(--gr-info-light))]',\n slate: 'bg-[var(--gr-slate-light)] text-[var(--gr-slate-text)] border-[color-mix(in_srgb,var(--gr-slate)_30%,var(--gr-slate-light))]',\n azure: 'bg-[var(--gr-azure-light)] text-[var(--gr-azure-text)] border-[color-mix(in_srgb,var(--gr-azure)_30%,var(--gr-azure-light))]',\n}\nexport const darkToneClassByTone: Record<GrBadgeTone, string> = {\n neutral: 'bg-[var(--fg)] text-[var(--bg)] border-[color-mix(in_srgb,var(--fg)_35%,var(--brd))]',\n primary: 'bg-[var(--primary)] text-[var(--primary-fg)] border-[var(--primary)]',\n success: 'bg-[var(--gr-success)] text-white border-[var(--gr-success)]',\n warning: 'bg-[var(--gr-warning)] text-white border-[var(--gr-warning)]',\n danger: 'bg-[var(--gr-danger)] text-white border-[var(--gr-danger)]',\n info: 'bg-[var(--gr-info)] text-white border-[var(--gr-info)]',\n slate: 'bg-[var(--gr-slate)] text-[var(--gr-slate-fg)] border-[var(--gr-slate)]',\n azure: 'bg-[var(--gr-azure)] text-[var(--gr-azure-fg)] border-[var(--gr-azure)]',\n}\nfunction radiusClass(radius: GrBadgeRadius, size: GrBadgeSize): string {\n if (radius === 'square') return 'rounded-[var(--gr-radius-none)]'\n if (radius === 'semi') return semiRadiusClassBySize[size]\n return 'rounded-full'\n}\nfunction toneClass(tone: GrBadgeTone, dark: boolean): string {\n return dark ? darkToneClassByTone[tone] : lightToneClassByTone[tone]\n}\nexport function grBadgeClass(options: { tone: GrBadgeTone, dark: boolean, size: GrBadgeSize, radius: GrBadgeRadius }): string {\n return [\n radiusClass(options.radius, options.size),\n sizeClassBySize[options.size],\n toneClass(options.tone, options.dark),\n ].join(' ')\n}\n"],"mappings":";AAKA,IAAa,kBAA+C;CAC1D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AACA,IAAa,wBAAqD;CAChE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AACA,IAAa,uBAAoD;CAC/D,SAAS;CACT,SACE;CACF,SAAS;CACT,SAAS;CACT,QAAQ;CACR,MAAM;CACN,OAAO;CACP,OAAO;AACT;AACA,IAAa,sBAAmD;CAC9D,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,QAAQ;CACR,MAAM;CACN,OAAO;CACP,OAAO;AACT;AACA,SAAS,YAAY,QAAuB,MAA2B;CACrE,IAAI,WAAW,UAAU,OAAO;CAChC,IAAI,WAAW,QAAQ,OAAO,sBAAsB;CACpD,OAAO;AACT;AACA,SAAS,UAAU,MAAmB,MAAuB;CAC3D,OAAO,OAAO,oBAAoB,QAAQ,qBAAqB;AACjE;AACA,SAAgB,aAAa,SAAiG;CAC5H,OAAO;EACL,YAAY,QAAQ,QAAQ,QAAQ,IAAI;EACxC,gBAAgB,QAAQ;EACxB,UAAU,QAAQ,MAAM,QAAQ,IAAI;CACtC,CAAC,CAAC,KAAK,GAAG;AACZ"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
//#region src/components/GrButton/grButtonStyles.ts
|
|
2
|
+
var base = "inline-flex items-center justify-center gap-2 select-none whitespace-nowrap rounded-md transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] disabled:opacity-50 disabled:cursor-not-allowed";
|
|
3
|
+
var grButtonBaseClass = base;
|
|
4
|
+
var sizes = {
|
|
5
|
+
xs: "h-7 text-xs px-2.5",
|
|
6
|
+
sm: "h-8 text-sm px-3",
|
|
7
|
+
md: "h-10 text-sm px-4",
|
|
8
|
+
lg: "h-11 text-base px-5"
|
|
9
|
+
};
|
|
10
|
+
var squareSizes = {
|
|
11
|
+
xs: "h-7 w-7 p-0",
|
|
12
|
+
sm: "h-8 w-8 p-0",
|
|
13
|
+
md: "h-10 w-10 p-0",
|
|
14
|
+
lg: "h-11 w-11 p-0"
|
|
15
|
+
};
|
|
16
|
+
var tones = {
|
|
17
|
+
primary: {
|
|
18
|
+
solidBackground: "var(--gr-button-primary-bg,var(--primary))",
|
|
19
|
+
solidBackgroundHover: "var(--gr-button-primary-bg-hover,var(--primary-hover))",
|
|
20
|
+
solidBackgroundActive: "var(--gr-button-primary-bg-active,var(--primary-active))",
|
|
21
|
+
solidForeground: "var(--gr-button-primary-fg,var(--primary-fg))",
|
|
22
|
+
accentText: "var(--accent-fg)",
|
|
23
|
+
softBackground: "var(--gr-button-primary-soft-bg)",
|
|
24
|
+
softBackgroundHover: "var(--gr-button-primary-soft-bg-hover)",
|
|
25
|
+
softBackgroundActive: "var(--gr-button-primary-soft-bg-active)",
|
|
26
|
+
softForeground: "var(--accent-fg)",
|
|
27
|
+
border: "var(--primary)",
|
|
28
|
+
borderHover: "var(--primary-hover)",
|
|
29
|
+
borderActive: "var(--primary-active)"
|
|
30
|
+
},
|
|
31
|
+
neutral: {
|
|
32
|
+
solidBackground: "var(--secondary)",
|
|
33
|
+
solidBackgroundHover: "var(--secondary-hover)",
|
|
34
|
+
solidBackgroundActive: "var(--secondary-active)",
|
|
35
|
+
solidForeground: "var(--secondary-fg)",
|
|
36
|
+
accentText: "var(--fg)",
|
|
37
|
+
softBackground: "var(--secondary)",
|
|
38
|
+
softBackgroundHover: "var(--secondary-hover)",
|
|
39
|
+
softBackgroundActive: "var(--secondary-active)",
|
|
40
|
+
softForeground: "var(--secondary-fg)",
|
|
41
|
+
border: "var(--brd)",
|
|
42
|
+
borderHover: "var(--brd-hover,var(--brd))",
|
|
43
|
+
borderActive: "var(--brd-active,var(--brd))"
|
|
44
|
+
},
|
|
45
|
+
success: {
|
|
46
|
+
solidBackground: "var(--gr-button-success-bg,var(--gr-success))",
|
|
47
|
+
solidBackgroundHover: "var(--gr-button-success-bg-hover,var(--gr-success-hover))",
|
|
48
|
+
solidBackgroundActive: "var(--gr-button-success-bg-active,var(--gr-success-active))",
|
|
49
|
+
solidForeground: "var(--gr-button-success-fg,var(--gr-success-fg,var(--fg)))",
|
|
50
|
+
accentText: "var(--gr-success-text,var(--gr-success))",
|
|
51
|
+
softBackground: "var(--gr-button-success-soft-bg)",
|
|
52
|
+
softBackgroundHover: "var(--gr-button-success-soft-bg-hover)",
|
|
53
|
+
softBackgroundActive: "var(--gr-button-success-soft-bg-active)",
|
|
54
|
+
softForeground: "var(--gr-success-text,var(--gr-success))",
|
|
55
|
+
border: "var(--gr-success)",
|
|
56
|
+
borderHover: "var(--gr-success-hover)",
|
|
57
|
+
borderActive: "var(--gr-success-active)"
|
|
58
|
+
},
|
|
59
|
+
warning: {
|
|
60
|
+
solidBackground: "var(--gr-button-warning-bg,var(--gr-warning))",
|
|
61
|
+
solidBackgroundHover: "var(--gr-button-warning-bg-hover,var(--gr-warning-hover))",
|
|
62
|
+
solidBackgroundActive: "var(--gr-button-warning-bg-active,var(--gr-warning-active))",
|
|
63
|
+
solidForeground: "var(--gr-button-warning-fg,var(--gr-warning-fg,var(--fg)))",
|
|
64
|
+
accentText: "var(--gr-warning-text,var(--gr-warning))",
|
|
65
|
+
softBackground: "var(--gr-button-warning-soft-bg)",
|
|
66
|
+
softBackgroundHover: "var(--gr-button-warning-soft-bg-hover)",
|
|
67
|
+
softBackgroundActive: "var(--gr-button-warning-soft-bg-active)",
|
|
68
|
+
softForeground: "var(--gr-warning-text,var(--gr-warning))",
|
|
69
|
+
border: "var(--gr-warning)",
|
|
70
|
+
borderHover: "var(--gr-warning-hover)",
|
|
71
|
+
borderActive: "var(--gr-warning-active)"
|
|
72
|
+
},
|
|
73
|
+
danger: {
|
|
74
|
+
solidBackground: "var(--gr-button-danger-bg,var(--gr-danger))",
|
|
75
|
+
solidBackgroundHover: "var(--gr-button-danger-bg-hover,var(--gr-danger-hover))",
|
|
76
|
+
solidBackgroundActive: "var(--gr-button-danger-bg-active,var(--gr-danger-active))",
|
|
77
|
+
solidForeground: "var(--gr-button-danger-fg,var(--gr-danger-fg,var(--fg)))",
|
|
78
|
+
accentText: "var(--gr-danger-text,var(--gr-danger))",
|
|
79
|
+
softBackground: "var(--gr-button-danger-soft-bg)",
|
|
80
|
+
softBackgroundHover: "var(--gr-button-danger-soft-bg-hover)",
|
|
81
|
+
softBackgroundActive: "var(--gr-button-danger-soft-bg-active)",
|
|
82
|
+
softForeground: "var(--gr-danger-text,var(--gr-danger))",
|
|
83
|
+
border: "var(--gr-danger)",
|
|
84
|
+
borderHover: "var(--gr-danger-hover)",
|
|
85
|
+
borderActive: "var(--gr-danger-active)"
|
|
86
|
+
},
|
|
87
|
+
info: {
|
|
88
|
+
solidBackground: "var(--gr-button-info-bg,var(--gr-info))",
|
|
89
|
+
solidBackgroundHover: "var(--gr-button-info-bg-hover,var(--gr-info-hover))",
|
|
90
|
+
solidBackgroundActive: "var(--gr-button-info-bg-active,var(--gr-info-active))",
|
|
91
|
+
solidForeground: "var(--gr-button-info-fg,var(--gr-info-fg,var(--fg)))",
|
|
92
|
+
accentText: "var(--gr-info-text,var(--gr-info))",
|
|
93
|
+
softBackground: "var(--gr-button-info-soft-bg)",
|
|
94
|
+
softBackgroundHover: "var(--gr-button-info-soft-bg-hover)",
|
|
95
|
+
softBackgroundActive: "var(--gr-button-info-soft-bg-active)",
|
|
96
|
+
softForeground: "var(--gr-info-text,var(--gr-info))",
|
|
97
|
+
border: "var(--gr-info)",
|
|
98
|
+
borderHover: "var(--gr-info-hover)",
|
|
99
|
+
borderActive: "var(--gr-info-active)"
|
|
100
|
+
},
|
|
101
|
+
slate: {
|
|
102
|
+
solidBackground: "var(--gr-button-slate-bg,var(--gr-slate))",
|
|
103
|
+
solidBackgroundHover: "var(--gr-button-slate-bg-hover,var(--gr-slate-hover))",
|
|
104
|
+
solidBackgroundActive: "var(--gr-button-slate-bg-active,var(--gr-slate-active))",
|
|
105
|
+
solidForeground: "var(--gr-button-slate-fg,var(--gr-slate-fg,var(--fg)))",
|
|
106
|
+
accentText: "var(--gr-slate-text,var(--gr-slate))",
|
|
107
|
+
softBackground: "var(--gr-button-slate-soft-bg)",
|
|
108
|
+
softBackgroundHover: "var(--gr-button-slate-soft-bg-hover)",
|
|
109
|
+
softBackgroundActive: "var(--gr-button-slate-soft-bg-active)",
|
|
110
|
+
softForeground: "var(--gr-slate-text,var(--gr-slate))",
|
|
111
|
+
border: "var(--gr-slate)",
|
|
112
|
+
borderHover: "var(--gr-slate-hover)",
|
|
113
|
+
borderActive: "var(--gr-slate-active)"
|
|
114
|
+
},
|
|
115
|
+
azure: {
|
|
116
|
+
solidBackground: "var(--gr-button-azure-bg,var(--gr-azure))",
|
|
117
|
+
solidBackgroundHover: "var(--gr-button-azure-bg-hover,var(--gr-azure-hover))",
|
|
118
|
+
solidBackgroundActive: "var(--gr-button-azure-bg-active,var(--gr-azure-active))",
|
|
119
|
+
solidForeground: "var(--gr-button-azure-fg,var(--gr-azure-fg,var(--fg)))",
|
|
120
|
+
accentText: "var(--gr-azure-text,var(--gr-azure))",
|
|
121
|
+
softBackground: "var(--gr-button-azure-soft-bg)",
|
|
122
|
+
softBackgroundHover: "var(--gr-button-azure-soft-bg-hover)",
|
|
123
|
+
softBackgroundActive: "var(--gr-button-azure-soft-bg-active)",
|
|
124
|
+
softForeground: "var(--gr-azure-text,var(--gr-azure))",
|
|
125
|
+
border: "var(--gr-azure)",
|
|
126
|
+
borderHover: "var(--gr-azure-hover)",
|
|
127
|
+
borderActive: "var(--gr-azure-active)"
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
function withVar(token) {
|
|
131
|
+
return `[${token}]`;
|
|
132
|
+
}
|
|
133
|
+
function variantClass(variant, tone) {
|
|
134
|
+
const tokens = tones[tone];
|
|
135
|
+
if (variant === "primary") return [
|
|
136
|
+
`bg-${withVar(tokens.solidBackground)}`,
|
|
137
|
+
`text-${withVar(tokens.solidForeground)}`,
|
|
138
|
+
`border border-${withVar(tokens.solidBackground)}`,
|
|
139
|
+
`hover:bg-${withVar(tokens.solidBackgroundHover)}`,
|
|
140
|
+
`hover:border-${withVar(tokens.solidBackgroundHover)}`,
|
|
141
|
+
`active:bg-${withVar(tokens.solidBackgroundActive)}`,
|
|
142
|
+
`hover:active:bg-${withVar(tokens.solidBackgroundActive)}`,
|
|
143
|
+
`active:border-${withVar(tokens.solidBackgroundActive)}`,
|
|
144
|
+
`hover:active:border-${withVar(tokens.solidBackgroundActive)}`
|
|
145
|
+
].join(" ");
|
|
146
|
+
if (variant === "secondary") return [
|
|
147
|
+
`bg-${withVar(tokens.softBackground)}`,
|
|
148
|
+
`text-${withVar(tokens.softForeground)}`,
|
|
149
|
+
`border border-${withVar(tokens.border)}`,
|
|
150
|
+
`hover:bg-${withVar(tokens.softBackgroundHover)}`,
|
|
151
|
+
`hover:border-${withVar(tokens.borderHover)}`,
|
|
152
|
+
`active:bg-${withVar(tokens.softBackgroundActive)}`,
|
|
153
|
+
`hover:active:bg-${withVar(tokens.softBackgroundActive)}`,
|
|
154
|
+
`active:border-${withVar(tokens.borderActive)}`,
|
|
155
|
+
`hover:active:border-${withVar(tokens.borderActive)}`
|
|
156
|
+
].join(" ");
|
|
157
|
+
if (variant === "outline") return [
|
|
158
|
+
"bg-transparent",
|
|
159
|
+
`text-${withVar(tokens.accentText)}`,
|
|
160
|
+
`border border-${withVar(tokens.border)}`,
|
|
161
|
+
`hover:bg-${withVar(tokens.softBackgroundHover)}`,
|
|
162
|
+
`hover:border-${withVar(tokens.borderHover)}`,
|
|
163
|
+
`active:bg-${withVar(tokens.softBackgroundActive)}`,
|
|
164
|
+
`hover:active:bg-${withVar(tokens.softBackgroundActive)}`,
|
|
165
|
+
`active:border-${withVar(tokens.borderActive)}`,
|
|
166
|
+
`hover:active:border-${withVar(tokens.borderActive)}`
|
|
167
|
+
].join(" ");
|
|
168
|
+
if (variant === "ghost") return [
|
|
169
|
+
"bg-transparent",
|
|
170
|
+
`text-${withVar(tokens.accentText)}`,
|
|
171
|
+
`hover:bg-${withVar(tokens.softBackgroundHover)}`,
|
|
172
|
+
`active:bg-${withVar(tokens.softBackgroundActive)}`,
|
|
173
|
+
`hover:active:bg-${withVar(tokens.softBackgroundActive)}`
|
|
174
|
+
].join(" ");
|
|
175
|
+
return [
|
|
176
|
+
"bg-transparent",
|
|
177
|
+
`text-${withVar(tokens.accentText)}`,
|
|
178
|
+
"border border-transparent",
|
|
179
|
+
`hover:bg-${withVar(tokens.softBackgroundHover)}`,
|
|
180
|
+
`hover:border-${withVar(tokens.borderHover)}`,
|
|
181
|
+
`active:bg-${withVar(tokens.softBackgroundActive)}`,
|
|
182
|
+
`hover:active:bg-${withVar(tokens.softBackgroundActive)}`,
|
|
183
|
+
`active:border-${withVar(tokens.borderActive)}`,
|
|
184
|
+
`hover:active:border-${withVar(tokens.borderActive)}`
|
|
185
|
+
].join(" ");
|
|
186
|
+
}
|
|
187
|
+
function grButtonClass(options) {
|
|
188
|
+
return [options.square ? squareSizes[options.size] : sizes[options.size], variantClass(options.variant, options.tone)].join(" ");
|
|
189
|
+
}
|
|
190
|
+
//#endregion
|
|
191
|
+
export { squareSizes as a, sizes as i, grButtonBaseClass as n, tones as o, grButtonClass as r, variantClass as s, base as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grButtonStyles-C7Yga_Q1.js","names":[],"sources":["../../src/components/GrButton/grButtonStyles.ts"],"sourcesContent":["import type { GrTone } from '../shared/tones'\n\nexport type GrButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'ghost-border'\nexport type GrButtonTone = GrTone\nexport type GrButtonSize = 'xs' | 'sm' | 'md' | 'lg'\n\nexport type GrButtonClassOptions = {\n variant: GrButtonVariant\n tone: GrButtonTone\n size: GrButtonSize\n square: boolean\n}\n\nexport type GrButtonToneTokens = {\n solidBackground: string\n solidBackgroundHover: string\n solidBackgroundActive: string\n solidForeground: string\n accentText: string\n softBackground: string\n softBackgroundHover: string\n softBackgroundActive: string\n softForeground: string\n border: string\n borderHover: string\n borderActive: string\n}\n\nexport const base =\n 'inline-flex items-center justify-center gap-2 select-none whitespace-nowrap rounded-md transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] disabled:opacity-50 disabled:cursor-not-allowed'\n\nexport const grButtonBaseClass = base\n\nexport const sizes: Record<GrButtonSize, string> = {\n xs: 'h-7 text-xs px-2.5',\n sm: 'h-8 text-sm px-3',\n md: 'h-10 text-sm px-4',\n lg: 'h-11 text-base px-5',\n}\n\nexport const squareSizes: Record<GrButtonSize, string> = {\n xs: 'h-7 w-7 p-0',\n sm: 'h-8 w-8 p-0',\n md: 'h-10 w-10 p-0',\n lg: 'h-11 w-11 p-0',\n}\n\nexport const tones: Record<GrButtonTone, GrButtonToneTokens> = {\n primary: {\n solidBackground: 'var(--gr-button-primary-bg,var(--primary))',\n solidBackgroundHover: 'var(--gr-button-primary-bg-hover,var(--primary-hover))',\n solidBackgroundActive: 'var(--gr-button-primary-bg-active,var(--primary-active))',\n solidForeground: 'var(--gr-button-primary-fg,var(--primary-fg))',\n accentText: 'var(--accent-fg)',\n softBackground: 'var(--gr-button-primary-soft-bg)',\n softBackgroundHover: 'var(--gr-button-primary-soft-bg-hover)',\n softBackgroundActive: 'var(--gr-button-primary-soft-bg-active)',\n softForeground: 'var(--accent-fg)',\n border: 'var(--primary)',\n borderHover: 'var(--primary-hover)',\n borderActive: 'var(--primary-active)',\n },\n neutral: {\n solidBackground: 'var(--secondary)',\n solidBackgroundHover: 'var(--secondary-hover)',\n solidBackgroundActive: 'var(--secondary-active)',\n solidForeground: 'var(--secondary-fg)',\n accentText: 'var(--fg)',\n softBackground: 'var(--secondary)',\n softBackgroundHover: 'var(--secondary-hover)',\n softBackgroundActive: 'var(--secondary-active)',\n softForeground: 'var(--secondary-fg)',\n border: 'var(--brd)',\n borderHover: 'var(--brd-hover,var(--brd))',\n borderActive: 'var(--brd-active,var(--brd))',\n },\n success: {\n solidBackground: 'var(--gr-button-success-bg,var(--gr-success))',\n solidBackgroundHover: 'var(--gr-button-success-bg-hover,var(--gr-success-hover))',\n solidBackgroundActive: 'var(--gr-button-success-bg-active,var(--gr-success-active))',\n solidForeground: 'var(--gr-button-success-fg,var(--gr-success-fg,var(--fg)))',\n accentText: 'var(--gr-success-text,var(--gr-success))',\n softBackground: 'var(--gr-button-success-soft-bg)',\n softBackgroundHover: 'var(--gr-button-success-soft-bg-hover)',\n softBackgroundActive: 'var(--gr-button-success-soft-bg-active)',\n softForeground: 'var(--gr-success-text,var(--gr-success))',\n border: 'var(--gr-success)',\n borderHover: 'var(--gr-success-hover)',\n borderActive: 'var(--gr-success-active)',\n },\n warning: {\n solidBackground: 'var(--gr-button-warning-bg,var(--gr-warning))',\n solidBackgroundHover: 'var(--gr-button-warning-bg-hover,var(--gr-warning-hover))',\n solidBackgroundActive: 'var(--gr-button-warning-bg-active,var(--gr-warning-active))',\n solidForeground: 'var(--gr-button-warning-fg,var(--gr-warning-fg,var(--fg)))',\n accentText: 'var(--gr-warning-text,var(--gr-warning))',\n softBackground: 'var(--gr-button-warning-soft-bg)',\n softBackgroundHover: 'var(--gr-button-warning-soft-bg-hover)',\n softBackgroundActive: 'var(--gr-button-warning-soft-bg-active)',\n softForeground: 'var(--gr-warning-text,var(--gr-warning))',\n border: 'var(--gr-warning)',\n borderHover: 'var(--gr-warning-hover)',\n borderActive: 'var(--gr-warning-active)',\n },\n danger: {\n solidBackground: 'var(--gr-button-danger-bg,var(--gr-danger))',\n solidBackgroundHover: 'var(--gr-button-danger-bg-hover,var(--gr-danger-hover))',\n solidBackgroundActive: 'var(--gr-button-danger-bg-active,var(--gr-danger-active))',\n solidForeground: 'var(--gr-button-danger-fg,var(--gr-danger-fg,var(--fg)))',\n accentText: 'var(--gr-danger-text,var(--gr-danger))',\n softBackground: 'var(--gr-button-danger-soft-bg)',\n softBackgroundHover: 'var(--gr-button-danger-soft-bg-hover)',\n softBackgroundActive: 'var(--gr-button-danger-soft-bg-active)',\n softForeground: 'var(--gr-danger-text,var(--gr-danger))',\n border: 'var(--gr-danger)',\n borderHover: 'var(--gr-danger-hover)',\n borderActive: 'var(--gr-danger-active)',\n },\n info: {\n solidBackground: 'var(--gr-button-info-bg,var(--gr-info))',\n solidBackgroundHover: 'var(--gr-button-info-bg-hover,var(--gr-info-hover))',\n solidBackgroundActive: 'var(--gr-button-info-bg-active,var(--gr-info-active))',\n solidForeground: 'var(--gr-button-info-fg,var(--gr-info-fg,var(--fg)))',\n accentText: 'var(--gr-info-text,var(--gr-info))',\n softBackground: 'var(--gr-button-info-soft-bg)',\n softBackgroundHover: 'var(--gr-button-info-soft-bg-hover)',\n softBackgroundActive: 'var(--gr-button-info-soft-bg-active)',\n softForeground: 'var(--gr-info-text,var(--gr-info))',\n border: 'var(--gr-info)',\n borderHover: 'var(--gr-info-hover)',\n borderActive: 'var(--gr-info-active)',\n },\n slate: {\n solidBackground: 'var(--gr-button-slate-bg,var(--gr-slate))',\n solidBackgroundHover: 'var(--gr-button-slate-bg-hover,var(--gr-slate-hover))',\n solidBackgroundActive: 'var(--gr-button-slate-bg-active,var(--gr-slate-active))',\n solidForeground: 'var(--gr-button-slate-fg,var(--gr-slate-fg,var(--fg)))',\n accentText: 'var(--gr-slate-text,var(--gr-slate))',\n softBackground: 'var(--gr-button-slate-soft-bg)',\n softBackgroundHover: 'var(--gr-button-slate-soft-bg-hover)',\n softBackgroundActive: 'var(--gr-button-slate-soft-bg-active)',\n softForeground: 'var(--gr-slate-text,var(--gr-slate))',\n border: 'var(--gr-slate)',\n borderHover: 'var(--gr-slate-hover)',\n borderActive: 'var(--gr-slate-active)',\n },\n azure: {\n solidBackground: 'var(--gr-button-azure-bg,var(--gr-azure))',\n solidBackgroundHover: 'var(--gr-button-azure-bg-hover,var(--gr-azure-hover))',\n solidBackgroundActive: 'var(--gr-button-azure-bg-active,var(--gr-azure-active))',\n solidForeground: 'var(--gr-button-azure-fg,var(--gr-azure-fg,var(--fg)))',\n accentText: 'var(--gr-azure-text,var(--gr-azure))',\n softBackground: 'var(--gr-button-azure-soft-bg)',\n softBackgroundHover: 'var(--gr-button-azure-soft-bg-hover)',\n softBackgroundActive: 'var(--gr-button-azure-soft-bg-active)',\n softForeground: 'var(--gr-azure-text,var(--gr-azure))',\n border: 'var(--gr-azure)',\n borderHover: 'var(--gr-azure-hover)',\n borderActive: 'var(--gr-azure-active)',\n },\n}\n\nfunction withVar(token: string): string {\n return `[${token}]`\n}\n\nexport function variantClass(variant: GrButtonVariant, tone: GrButtonTone): string {\n const tokens = tones[tone]\n\n if (variant === 'primary') {\n return [\n `bg-${withVar(tokens.solidBackground)}`,\n `text-${withVar(tokens.solidForeground)}`,\n `border border-${withVar(tokens.solidBackground)}`,\n `hover:bg-${withVar(tokens.solidBackgroundHover)}`,\n `hover:border-${withVar(tokens.solidBackgroundHover)}`,\n `active:bg-${withVar(tokens.solidBackgroundActive)}`,\n `hover:active:bg-${withVar(tokens.solidBackgroundActive)}`,\n `active:border-${withVar(tokens.solidBackgroundActive)}`,\n `hover:active:border-${withVar(tokens.solidBackgroundActive)}`,\n ].join(' ')\n }\n\n if (variant === 'secondary') {\n return [\n `bg-${withVar(tokens.softBackground)}`,\n `text-${withVar(tokens.softForeground)}`,\n `border border-${withVar(tokens.border)}`,\n `hover:bg-${withVar(tokens.softBackgroundHover)}`,\n `hover:border-${withVar(tokens.borderHover)}`,\n `active:bg-${withVar(tokens.softBackgroundActive)}`,\n `hover:active:bg-${withVar(tokens.softBackgroundActive)}`,\n `active:border-${withVar(tokens.borderActive)}`,\n `hover:active:border-${withVar(tokens.borderActive)}`,\n ].join(' ')\n }\n\n if (variant === 'outline') {\n return [\n 'bg-transparent',\n `text-${withVar(tokens.accentText)}`,\n `border border-${withVar(tokens.border)}`,\n `hover:bg-${withVar(tokens.softBackgroundHover)}`,\n `hover:border-${withVar(tokens.borderHover)}`,\n `active:bg-${withVar(tokens.softBackgroundActive)}`,\n `hover:active:bg-${withVar(tokens.softBackgroundActive)}`,\n `active:border-${withVar(tokens.borderActive)}`,\n `hover:active:border-${withVar(tokens.borderActive)}`,\n ].join(' ')\n }\n\n if (variant === 'ghost') {\n return [\n 'bg-transparent',\n `text-${withVar(tokens.accentText)}`,\n `hover:bg-${withVar(tokens.softBackgroundHover)}`,\n `active:bg-${withVar(tokens.softBackgroundActive)}`,\n `hover:active:bg-${withVar(tokens.softBackgroundActive)}`,\n ].join(' ')\n }\n\n return [\n 'bg-transparent',\n `text-${withVar(tokens.accentText)}`,\n 'border border-transparent',\n `hover:bg-${withVar(tokens.softBackgroundHover)}`,\n `hover:border-${withVar(tokens.borderHover)}`,\n `active:bg-${withVar(tokens.softBackgroundActive)}`,\n `hover:active:bg-${withVar(tokens.softBackgroundActive)}`,\n `active:border-${withVar(tokens.borderActive)}`,\n `hover:active:border-${withVar(tokens.borderActive)}`,\n ].join(' ')\n}\n\nexport function grButtonClass(options: GrButtonClassOptions): string {\n return [\n options.square ? squareSizes[options.size] : sizes[options.size],\n variantClass(options.variant, options.tone),\n ].join(' ')\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
//#region src/components/GrDropdown/grDropdownStyles.ts
|
|
2
|
+
var widthClassByWidth = {
|
|
3
|
+
auto: "",
|
|
4
|
+
20: "w-20",
|
|
5
|
+
48: "w-48",
|
|
6
|
+
60: "w-60",
|
|
7
|
+
64: "w-64",
|
|
8
|
+
80: "w-80"
|
|
9
|
+
};
|
|
10
|
+
var originClassByPlacement = {
|
|
11
|
+
"bottom-start": "origin-top-left",
|
|
12
|
+
"bottom-end": "origin-top-right",
|
|
13
|
+
"bottom": "origin-top",
|
|
14
|
+
"top-start": "origin-bottom-left",
|
|
15
|
+
"top-end": "origin-bottom-right",
|
|
16
|
+
"top": "origin-bottom"
|
|
17
|
+
};
|
|
18
|
+
function grDropdownWidthClass(width) {
|
|
19
|
+
return widthClassByWidth[width];
|
|
20
|
+
}
|
|
21
|
+
function grDropdownOriginClass(placement) {
|
|
22
|
+
return originClassByPlacement[placement] ?? "origin-top";
|
|
23
|
+
}
|
|
24
|
+
function grDropdownContentClass(contentClass) {
|
|
25
|
+
return [
|
|
26
|
+
"rounded-[var(--gr-radius-xl)]",
|
|
27
|
+
"border border-[var(--brd)]",
|
|
28
|
+
"bg-[var(--card)] text-[var(--card-fg)]",
|
|
29
|
+
"shadow-[var(--gr-shadow-2)]",
|
|
30
|
+
"p-1",
|
|
31
|
+
contentClass
|
|
32
|
+
].filter(Boolean).join(" ");
|
|
33
|
+
}
|
|
34
|
+
//#endregion
|
|
35
|
+
export { widthClassByWidth as a, originClassByPlacement as i, grDropdownOriginClass as n, grDropdownWidthClass as r, grDropdownContentClass as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grDropdownStyles-B_-DKytw.js","names":[],"sources":["../../src/components/GrDropdown/grDropdownStyles.ts"],"sourcesContent":["import type { Placement } from '@floating-ui/dom'\n\nexport type GrDropdownAlign = 'left' | 'right' | 'center'\nexport type GrDropdownWidth = 'auto' | '20' | '48' | '60' | '64' | '80'\n\nexport const widthClassByWidth: Record<GrDropdownWidth, string> = {\n auto: '',\n 20: 'w-20',\n 48: 'w-48',\n 60: 'w-60',\n 64: 'w-64',\n 80: 'w-80',\n}\n\n// `transform-origin` для scale-transition — координата x/y уже приходит от\n// `useFloating` (см. `floatingStyle`), здесь остаётся только направление\n// \"роста\" панели относительно триггера. Ключи — это `resolvedPlacement` ПОСЛЕ\n// применения `flip`, поэтому origin остаётся верным и когда панели не хватило\n// места снизу и её перевернуло вверх.\nexport const originClassByPlacement: Partial<Record<Placement, string>> = {\n 'bottom-start': 'origin-top-left',\n 'bottom-end': 'origin-top-right',\n 'bottom': 'origin-top',\n 'top-start': 'origin-bottom-left',\n 'top-end': 'origin-bottom-right',\n 'top': 'origin-bottom',\n}\n\nexport function grDropdownWidthClass(width: GrDropdownWidth): string {\n return widthClassByWidth[width]\n}\n\nexport function grDropdownOriginClass(placement: Placement): string {\n return originClassByPlacement[placement] ?? 'origin-top'\n}\n\nexport function grDropdownContentClass(contentClass?: string): string {\n return [\n 'rounded-[var(--gr-radius-xl)]',\n 'border border-[var(--brd)]',\n 'bg-[var(--card)] text-[var(--card-fg)]',\n 'shadow-[var(--gr-shadow-2)]',\n 'p-1',\n contentClass,\n ].filter(Boolean).join(' ')\n}\n"],"mappings":";AAKA,IAAa,oBAAqD;CAChE,MAAM;CACN,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAOA,IAAa,yBAA6D;CACxE,gBAAgB;CAChB,cAAc;CACd,UAAU;CACV,aAAa;CACb,WAAW;CACX,OAAO;AACT;AAEA,SAAgB,qBAAqB,OAAgC;CACnE,OAAO,kBAAkB;AAC3B;AAEA,SAAgB,sBAAsB,WAA8B;CAClE,OAAO,uBAAuB,cAAc;AAC9C;AAEA,SAAgB,uBAAuB,cAA+B;CACpE,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;CACF,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;AAC5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grLoadingStyles-
|
|
1
|
+
{"version":3,"file":"grLoadingStyles-R5sreH__.js","names":[],"sources":["../../src/components/GrLoading/grLoadingStyles.ts"],"sourcesContent":["export const rootModeClass = {\n fullscreen: 'fixed inset-0 z-50',\n inline: 'absolute inset-0 z-10',\n} as const\nexport const rootBackgroundClass = 'bg-black/25'\nexport const rootBackdropBlurClass = 'backdrop-blur-sm'\n\nexport function grLoadingRootClass(options: {\n fullscreen: boolean,\n hasBackground: boolean,\n customClass?: string\n}): string {\n return [\n options.fullscreen ? rootModeClass.fullscreen : rootModeClass.inline,\n !options.hasBackground ? rootBackgroundClass : '',\n rootBackdropBlurClass,\n options.customClass,\n ]\n .filter(Boolean)\n .join(' ')\n}\n"],"mappings":";AAAA,IAAa,gBAAgB;CACzB,YAAY;CACZ,QAAQ;AACZ;AACA,IAAa,sBAAsB;AACnC,IAAa,wBAAwB;AAErC,SAAgB,mBAAmB,SAIxB;CACP,OAAO;EACH,QAAQ,aAAa,cAAc,aAAa,cAAc;EAC9D,CAAC,QAAQ,gBAAgB,sBAAsB;EAC/C;EACA,QAAQ;CACZ,CAAC,CACI,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;AACjB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region src/components/GrModal/grModalStyles.ts
|
|
2
|
-
var root = "fixed inset-0 z-
|
|
2
|
+
var root = "fixed inset-0 z-[var(--gr-z-modal)]";
|
|
3
3
|
var shell = "fixed inset-0 overflow-y-auto p-4 sm:p-6";
|
|
4
4
|
var layout = "min-h-full flex items-center justify-center";
|
|
5
5
|
var overlay = "fixed inset-0 z-0 bg-black/40";
|
|
@@ -19,7 +19,7 @@ var panelTransition = {
|
|
|
19
19
|
leaveFrom: "opacity-100 translate-y-0 sm:scale-100",
|
|
20
20
|
leaveTo: "opacity-0 translate-y-2 sm:translate-y-0 sm:scale-95"
|
|
21
21
|
};
|
|
22
|
-
var panelBase = "w-full overflow-hidden relative z-10 border border-[var(--brd)] bg-[var(--card)] text-[var(--card-fg)] shadow-[var(--
|
|
22
|
+
var panelBase = "w-full overflow-hidden relative z-10 border border-[var(--brd)] bg-[var(--card)] text-[var(--card-fg)] shadow-[var(--gr-shadow-2)] outline-none";
|
|
23
23
|
var panelWidthBySize = {
|
|
24
24
|
sm: "max-w-[420px]",
|
|
25
25
|
md: "max-w-[560px]",
|
|
@@ -28,11 +28,11 @@ var panelWidthBySize = {
|
|
|
28
28
|
full: "max-w-none"
|
|
29
29
|
};
|
|
30
30
|
var panelRadiusBySize = {
|
|
31
|
-
sm: "rounded-[var(--
|
|
32
|
-
md: "rounded-[var(--
|
|
33
|
-
lg: "rounded-[var(--
|
|
34
|
-
xl: "rounded-[var(--
|
|
35
|
-
full: "rounded-none sm:rounded-[var(--
|
|
31
|
+
sm: "rounded-[var(--gr-radius-xl)]",
|
|
32
|
+
md: "rounded-[var(--gr-radius-xl)]",
|
|
33
|
+
lg: "rounded-[var(--gr-radius-xl)]",
|
|
34
|
+
xl: "rounded-[var(--gr-radius-xl)]",
|
|
35
|
+
full: "rounded-none sm:rounded-[var(--gr-radius-xl)]"
|
|
36
36
|
};
|
|
37
37
|
var panelHeightBySize = { full: "h-[100svh] sm:h-auto" };
|
|
38
38
|
function getGrModalPanelClass(size) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grModalStyles-DWd3i05Q.js","names":[],"sources":["../../src/components/GrModal/grModalStyles.ts"],"sourcesContent":["export type GrModalSize = 'sm' | 'md' | 'lg' | 'xl' | 'full'\n\n// Корневые утилитарные классы, используемые шаблоном `GrModal.vue`.\n// Они же являются единственным источником истины для safelist.\nexport const root = 'fixed inset-0 z-[var(--gr-z-modal)]'\nexport const shell = 'fixed inset-0 overflow-y-auto p-4 sm:p-6'\nexport const layout = 'min-h-full flex items-center justify-center'\nexport const overlay = 'fixed inset-0 z-0 bg-black/40'\n\n// Классы для `<TransitionChild :enter=\"...\" :enter-from=\"...\" ...>`.\n// Разбиты по фазам транзишна, чтобы не склеивать их в «мешок токенов».\nexport const overlayTransition = {\n enter: 'duration-200 ease-out',\n enterFrom: 'opacity-0',\n enterTo: 'opacity-100',\n leave: 'duration-150 ease-in',\n leaveFrom: 'opacity-100',\n leaveTo: 'opacity-0',\n} as const\n\nexport const panelTransition = {\n enter: 'duration-200 ease-out',\n enterFrom: 'opacity-0 translate-y-2 sm:translate-y-0 sm:scale-95',\n enterTo: 'opacity-100 translate-y-0 sm:scale-100',\n leave: 'duration-150 ease-in',\n leaveFrom: 'opacity-100 translate-y-0 sm:scale-100',\n leaveTo: 'opacity-0 translate-y-2 sm:translate-y-0 sm:scale-95',\n} as const\n\nexport const panelBase\n = 'w-full overflow-hidden relative z-10 border border-[var(--brd)] bg-[var(--card)] text-[var(--card-fg)] shadow-[var(--gr-shadow-2)] outline-none'\n\nexport const panelWidthBySize: Record<GrModalSize, string> = {\n sm: 'max-w-[420px]',\n md: 'max-w-[560px]',\n lg: 'max-w-[720px]',\n xl: 'max-w-[920px]',\n full: 'max-w-none',\n}\n\nexport const panelRadiusBySize: Record<GrModalSize, string> = {\n sm: 'rounded-[var(--gr-radius-xl)]',\n md: 'rounded-[var(--gr-radius-xl)]',\n lg: 'rounded-[var(--gr-radius-xl)]',\n xl: 'rounded-[var(--gr-radius-xl)]',\n full: 'rounded-none sm:rounded-[var(--gr-radius-xl)]',\n}\n\n// Для большинства размеров высота не задаётся — `Partial` + фильтрация пустых\n// значений в `getGrModalPanelClass` избавляют от двойных пробелов.\nexport const panelHeightBySize: Partial<Record<GrModalSize, string>> = {\n full: 'h-[100svh] sm:h-auto',\n}\n\nexport function getGrModalPanelClass(size: GrModalSize): string {\n return [\n panelBase,\n panelWidthBySize[size],\n panelHeightBySize[size],\n panelRadiusBySize[size],\n ]\n .filter(Boolean)\n .join(' ')\n}\n"],"mappings":";AAIA,IAAa,OAAO;AACpB,IAAa,QAAQ;AACrB,IAAa,SAAS;AACtB,IAAa,UAAU;AAIvB,IAAa,oBAAoB;CAC/B,OAAO;CACP,WAAW;CACX,SAAS;CACT,OAAO;CACP,WAAW;CACX,SAAS;AACX;AAEA,IAAa,kBAAkB;CAC7B,OAAO;CACP,WAAW;CACX,SAAS;CACT,OAAO;CACP,WAAW;CACX,SAAS;AACX;AAEA,IAAa,YACT;AAEJ,IAAa,mBAAgD;CAC3D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,MAAM;AACR;AAEA,IAAa,oBAAiD;CAC5D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,MAAM;AACR;AAIA,IAAa,oBAA0D,EACrE,MAAM,uBACR;AAEA,SAAgB,qBAAqB,MAA2B;CAC9D,OAAO;EACL;EACA,iBAAiB;EACjB,kBAAkB;EAClB,kBAAkB;CACpB,CAAC,CACE,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;AACb"}
|
|
@@ -17,7 +17,7 @@ var selectLinkVariantClassByVariant = {
|
|
|
17
17
|
primary: "text-[var(--primary)] hover:text-[var(--primary-hover)] active:text-[var(--primary-active)]",
|
|
18
18
|
default: "text-[var(--fg)] hover:text-[var(--primary)] active:text-[var(--primary-active)]",
|
|
19
19
|
muted: "text-[var(--muted-fg)] hover:text-[var(--fg)] active:text-[var(--fg)]",
|
|
20
|
-
danger: "text-[var(--
|
|
20
|
+
danger: "text-[var(--gr-danger)] hover:text-[var(--gr-danger-hover)] active:text-[var(--gr-danger-active)]"
|
|
21
21
|
};
|
|
22
22
|
/**
|
|
23
23
|
* Variant-классы для видимой метки в `view="link"` + `optionsView="native"`.
|
|
@@ -28,7 +28,7 @@ var selectLinkNativeLabelVariantClassByVariant = {
|
|
|
28
28
|
primary: "text-[var(--primary)] peer-hover:text-[var(--primary-hover)] peer-active:text-[var(--primary-active)]",
|
|
29
29
|
default: "text-[var(--fg)] peer-hover:text-[var(--primary)] peer-active:text-[var(--primary-active)]",
|
|
30
30
|
muted: "text-[var(--muted-fg)] peer-hover:text-[var(--fg)] peer-active:text-[var(--fg)]",
|
|
31
|
-
danger: "text-[var(--
|
|
31
|
+
danger: "text-[var(--gr-danger)] peer-hover:text-[var(--gr-danger-hover)] peer-active:text-[var(--gr-danger-active)]"
|
|
32
32
|
};
|
|
33
33
|
function selectLinkUnderlineClass(options) {
|
|
34
34
|
if (options.disabled) return "no-underline";
|
|
@@ -92,6 +92,6 @@ function grSelectTriggerClass(options) {
|
|
|
92
92
|
if (options.view === "link") return [grSelectClass(options), "inline-flex items-center gap-1 text-left"].join(" ");
|
|
93
93
|
return [grSelectClass(options), "flex items-center justify-between text-left"].join(" ");
|
|
94
94
|
}
|
|
95
|
-
var grSelectPanelClasses = "rounded-[var(--
|
|
95
|
+
var grSelectPanelClasses = "rounded-[var(--gr-radius-xl)] border border-[var(--brd)] bg-[var(--card)] text-[var(--card-fg)] shadow-[var(--gr-shadow-2)] overflow-hidden";
|
|
96
96
|
//#endregion
|
|
97
97
|
export { grSelectPanelClasses as a, selectLinkNativeLabelVariantClassByVariant as c, selectSizeClassBySize as d, grSelectNativeClass as i, selectLinkSizeClassBySize as l, grSelectLinkNativeLabelClass as n, grSelectTriggerClass as o, grSelectLinkNativeOverlayClass as r, linkBaseClass as s, defaultBaseClass as t, selectLinkVariantClassByVariant as u };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grSelectStyles-CLK5hRd3.js","names":[],"sources":["../../src/components/GrSelect/grSelectStyles.ts"],"sourcesContent":["export type GrSelectView = 'default' | 'link'\nexport type GrSelectSize = 'xs' | 'sm' | 'md' | 'lg'\nexport type GrSelectVariant = 'primary' | 'default' | 'muted' | 'danger'\nexport type GrSelectUnderline = 'auto' | 'always' | 'none'\nexport type GrSelectOptionsView = 'native' | 'panel'\nexport type GrSelectOption = { value: string, label: string, disabled?: boolean }\n/** Группа опций: заголовок `label` + вложенные опции `options`. */\nexport type GrSelectOptionGroup = { label: string, options: GrSelectOption[] }\n/** Элемент списка опций: либо одиночная опция, либо группа опций. */\nexport type GrSelectOptionOrGroup = GrSelectOption | GrSelectOptionGroup\nexport type GrSelectModelValue = string | string[]\n\nexport const defaultBaseClass = 'w-full rounded-md border border-[var(--brd)] bg-[var(--bg)] text-[var(--fg)] transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]'\nexport const linkBaseClass = 'cursor-pointer inline-block w-auto align-baseline appearance-none bg-transparent border border-transparent px-0 py-0 rounded-[6px] transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]'\n\n\nexport const selectSizeClassBySize: Record<GrSelectSize, string> = {\n xs: 'h-7 px-2.5 text-[12px]',\n sm: 'h-8 px-3 text-[13px]',\n md: 'h-10 px-3 text-[14px]',\n lg: 'h-11 px-4 text-[16px]',\n}\n\nexport const selectLinkSizeClassBySize: Record<GrSelectSize, string> = {\n xs: 'text-[12px]',\n sm: 'text-[13px]',\n md: 'text-[14px]',\n lg: 'text-[16px]',\n}\n\nexport const selectLinkVariantClassByVariant: Record<GrSelectVariant, string> = {\n primary: 'text-[var(--primary)] hover:text-[var(--primary-hover)] active:text-[var(--primary-active)]',\n default: 'text-[var(--fg)] hover:text-[var(--primary)] active:text-[var(--primary-active)]',\n muted: 'text-[var(--muted-fg)] hover:text-[var(--fg)] active:text-[var(--fg)]',\n danger: 'text-[var(--gr-danger)] hover:text-[var(--gr-danger-hover)] active:text-[var(--gr-danger-active)]',\n}\n\n/**\n * Variant-классы для видимой метки в `view=\"link\"` + `optionsView=\"native\"`.\n * Hover-цвет приходит через `peer-hover:` от прозрачного `<select>`-overlay,\n * т.к. видимая метка имеет `pointer-events-none` и не получает hover напрямую.\n */\nexport const selectLinkNativeLabelVariantClassByVariant: Record<GrSelectVariant, string> = {\n primary: 'text-[var(--primary)] peer-hover:text-[var(--primary-hover)] peer-active:text-[var(--primary-active)]',\n default: 'text-[var(--fg)] peer-hover:text-[var(--primary)] peer-active:text-[var(--primary-active)]',\n muted: 'text-[var(--muted-fg)] peer-hover:text-[var(--fg)] peer-active:text-[var(--fg)]',\n danger: 'text-[var(--gr-danger)] peer-hover:text-[var(--gr-danger-hover)] peer-active:text-[var(--gr-danger-active)]',\n}\n\nfunction selectLinkUnderlineClass(options: { underline: GrSelectUnderline, disabled: boolean }): string {\n if (options.disabled) return 'no-underline'\n if (options.underline === 'always') return 'underline underline-offset-4'\n if (options.underline === 'none') return 'no-underline'\n return 'no-underline hover:underline hover:underline-offset-4'\n}\n\n/**\n * Underline-классы для видимой метки в `view=\"link\"` + `optionsView=\"native\"`.\n * Видимая метка имеет `pointer-events-none`, а hover получает прозрачный\n * `<select>`-overlay (peer), поэтому для `underline=\"auto\"` используем\n * `peer-hover:underline` вместо `hover:underline`.\n */\nfunction selectLinkNativeLabelUnderlineClass(options: { underline: GrSelectUnderline, disabled: boolean }): string {\n if (options.disabled) return 'no-underline'\n if (options.underline === 'always') return 'underline underline-offset-4'\n if (options.underline === 'none') return 'no-underline'\n return 'no-underline peer-hover:underline peer-hover:underline-offset-4'\n}\n\n/**\n * Классы прозрачного `<select>`-overlay для `view=\"link\"` + `optionsView=\"native\"`.\n * Нативный селект растягивается на всю обёртку, но визуально невидим — ширину обёртки\n * задаёт видимый `<span>` с выбранной меткой, благодаря чему компонент в закрытом\n * состоянии занимает столько места, сколько нужно текущей опции (а не самой длинной).\n */\nexport const grSelectLinkNativeOverlayClass = 'peer absolute inset-0 w-full h-full m-0 p-0 border-0 bg-transparent text-transparent appearance-none opacity-0 cursor-pointer disabled:cursor-not-allowed focus:outline-none'\n\n/**\n * Классы видимой метки для `view=\"link\"` + `optionsView=\"native\"` (поверх прозрачного `<select>`).\n * Получает все link-стили (size/variant/underline), а также focus-ring через `peer-focus-visible`.\n */\nexport function grSelectLinkNativeLabelClass(options: {\n size: GrSelectSize\n variant: GrSelectVariant\n underline: GrSelectUnderline\n disabled: boolean\n}): string {\n return [\n 'pointer-events-none inline-block whitespace-nowrap align-baseline rounded-[6px] transition-colors duration-150',\n selectLinkSizeClassBySize[options.size],\n selectLinkNativeLabelUnderlineClass({ underline: options.underline, disabled: options.disabled }),\n selectLinkNativeLabelVariantClassByVariant[options.variant],\n options.disabled ? 'opacity-60 text-[var(--muted-fg)] no-underline' : '',\n 'peer-focus-visible:outline-none peer-focus-visible:ring-2 peer-focus-visible:ring-[var(--ring)]',\n ]\n .filter(Boolean)\n .join(' ')\n}\n\nexport function grSelectClass(options: {\n view: GrSelectView\n size: GrSelectSize\n disabled: boolean\n variant: GrSelectVariant\n underline: GrSelectUnderline\n}): string {\n if (options.view === 'link') {\n return [\n selectLinkSizeClassBySize[options.size],\n selectLinkUnderlineClass({ underline: options.underline, disabled: options.disabled }),\n selectLinkVariantClassByVariant[options.variant],\n 'disabled:opacity-60 disabled:cursor-not-allowed disabled:text-[var(--muted-fg)] disabled:no-underline',\n ].join(' ')\n }\n\n return [\n selectSizeClassBySize[options.size],\n 'disabled:opacity-50 disabled:cursor-not-allowed',\n ].join(' ')\n}\n\nexport function grSelectNativeClass(options: {\n view: GrSelectView\n size: GrSelectSize\n disabled: boolean\n variant: GrSelectVariant\n underline: GrSelectUnderline\n showNativeChevron: boolean\n}): string {\n return [\n grSelectClass(options),\n options.showNativeChevron ? 'appearance-none pr-9' : '',\n ]\n .filter(Boolean)\n .join(' ')\n}\n\nexport function grSelectTriggerClass(options: {\n view: GrSelectView\n optionsView: GrSelectOptionsView\n size: GrSelectSize\n disabled: boolean\n variant: GrSelectVariant\n underline: GrSelectUnderline\n}): string {\n if (options.optionsView !== 'panel') {\n return grSelectClass(options)\n }\n\n if (options.view === 'link') {\n return [\n grSelectClass(options),\n 'inline-flex items-center gap-1 text-left',\n ].join(' ')\n }\n\n return [\n grSelectClass(options),\n 'flex items-center justify-between text-left',\n ].join(' ')\n}\n\nexport const grSelectPanelClasses = 'rounded-[var(--gr-radius-xl)] border border-[var(--brd)] bg-[var(--card)] text-[var(--card-fg)] shadow-[var(--gr-shadow-2)] overflow-hidden'\n"],"mappings":";AAYA,IAAa,mBAAmB;AAChC,IAAa,gBAAgB;AAG7B,IAAa,wBAAsD;CACjE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,4BAA0D;CACrE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,kCAAmE;CAC9E,SAAS;CACT,SAAS;CACT,OAAO;CACP,QAAQ;AACV;;;;;;AAOA,IAAa,6CAA8E;CACzF,SAAS;CACT,SAAS;CACT,OAAO;CACP,QAAQ;AACV;AAEA,SAAS,yBAAyB,SAAsE;CACtG,IAAI,QAAQ,UAAU,OAAO;CAC7B,IAAI,QAAQ,cAAc,UAAU,OAAO;CAC3C,IAAI,QAAQ,cAAc,QAAQ,OAAO;CACzC,OAAO;AACT;;;;;;;AAQA,SAAS,oCAAoC,SAAsE;CACjH,IAAI,QAAQ,UAAU,OAAO;CAC7B,IAAI,QAAQ,cAAc,UAAU,OAAO;CAC3C,IAAI,QAAQ,cAAc,QAAQ,OAAO;CACzC,OAAO;AACT;;;;;;;AAQA,IAAa,iCAAiC;;;;;AAM9C,SAAgB,6BAA6B,SAKlC;CACT,OAAO;EACL;EACA,0BAA0B,QAAQ;EAClC,oCAAoC;GAAE,WAAW,QAAQ;GAAW,UAAU,QAAQ;EAAS,CAAC;EAChG,2CAA2C,QAAQ;EACnD,QAAQ,WAAW,mDAAmD;EACtE;CACF,CAAC,CACE,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;AACb;AAEA,SAAgB,cAAc,SAMnB;CACT,IAAI,QAAQ,SAAS,QACnB,OAAO;EACL,0BAA0B,QAAQ;EAClC,yBAAyB;GAAE,WAAW,QAAQ;GAAW,UAAU,QAAQ;EAAS,CAAC;EACrF,gCAAgC,QAAQ;EACxC;CACF,CAAC,CAAC,KAAK,GAAG;CAGZ,OAAO,CACL,sBAAsB,QAAQ,OAC9B,iDACF,CAAC,CAAC,KAAK,GAAG;AACZ;AAEA,SAAgB,oBAAoB,SAOzB;CACT,OAAO,CACL,cAAc,OAAO,GACrB,QAAQ,oBAAoB,yBAAyB,EACvD,CAAC,CACE,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;AACb;AAEA,SAAgB,qBAAqB,SAO1B;CACT,IAAI,QAAQ,gBAAgB,SAC1B,OAAO,cAAc,OAAO;CAG9B,IAAI,QAAQ,SAAS,QACnB,OAAO,CACL,cAAc,OAAO,GACrB,0CACF,CAAC,CAAC,KAAK,GAAG;CAGZ,OAAO,CACL,cAAc,OAAO,GACrB,6CACF,CAAC,CAAC,KAAK,GAAG;AACZ;AAEA,IAAa,uBAAuB"}
|
|
@@ -5,12 +5,12 @@ function withVar(token) {
|
|
|
5
5
|
var toneVars = {
|
|
6
6
|
primary: "var(--pb-bg,var(--primary))",
|
|
7
7
|
neutral: "var(--pb-neutral-bg,var(--secondary))",
|
|
8
|
-
success: "var(--pb-success-bg,var(--
|
|
9
|
-
warning: "var(--pb-warning-bg,var(--
|
|
10
|
-
danger: "var(--pb-danger-bg,var(--
|
|
11
|
-
info: "var(--pb-info-bg,var(--
|
|
12
|
-
slate: "var(--pb-slate-bg,var(--
|
|
13
|
-
azure: "var(--pb-azure-bg,var(--
|
|
8
|
+
success: "var(--pb-success-bg,var(--gr-success))",
|
|
9
|
+
warning: "var(--pb-warning-bg,var(--gr-warning))",
|
|
10
|
+
danger: "var(--pb-danger-bg,var(--gr-danger))",
|
|
11
|
+
info: "var(--pb-info-bg,var(--gr-info))",
|
|
12
|
+
slate: "var(--pb-slate-bg,var(--gr-slate))",
|
|
13
|
+
azure: "var(--pb-azure-bg,var(--gr-azure))"
|
|
14
14
|
};
|
|
15
15
|
function grProgressBarFillClass(tone) {
|
|
16
16
|
return `bg-${withVar(toneVars[tone])}`;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grStyle-Blc9otAx.js","names":[],"sources":["../../src/components/GrProgressBar/grStyle.ts"],"sourcesContent":["import type { GrTone } from '../shared/tones'\n\nexport type GrProgressBarTone = GrTone\n\nfunction withVar(token: string): string {\n return `[${token}]`\n}\n\nconst toneVars: Record<GrProgressBarTone, string> = {\n primary: 'var(--pb-bg,var(--primary))',\n neutral: 'var(--pb-neutral-bg,var(--secondary))',\n success: 'var(--pb-success-bg,var(--gr-success))',\n warning: 'var(--pb-warning-bg,var(--gr-warning))',\n danger: 'var(--pb-danger-bg,var(--gr-danger))',\n info: 'var(--pb-info-bg,var(--gr-info))',\n slate: 'var(--pb-slate-bg,var(--gr-slate))',\n azure: 'var(--pb-azure-bg,var(--gr-azure))',\n}\n\nexport function grProgressBarFillClass(tone: GrProgressBarTone): string {\n return `bg-${withVar(toneVars[tone])}`\n}\n"],"mappings":";AAIA,SAAS,QAAQ,OAAuB;CACtC,OAAO,IAAI,MAAM;AACnB;AAEA,IAAM,WAA8C;CAClD,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,QAAQ;CACR,MAAM;CACN,OAAO;CACP,OAAO;AACT;AAEA,SAAgB,uBAAuB,MAAiC;CACtE,OAAO,MAAM,QAAQ,SAAS,KAAK;AACrC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as GRANULARITY_I18N_KEY } from "./adapter-
|
|
1
|
+
import { t as GRANULARITY_I18N_KEY } from "./adapter-CAOxmn2G.js";
|
|
2
2
|
import { getCurrentInstance, inject } from "vue";
|
|
3
3
|
//#region src/internal/granularityI18n.ts
|
|
4
4
|
/**
|
|
@@ -30,12 +30,27 @@ function resolveGranularityI18n(context) {
|
|
|
30
30
|
if (isGranularityI18nLike(fromFint)) return fromFint;
|
|
31
31
|
return null;
|
|
32
32
|
}
|
|
33
|
+
var FALLBACK_PLACEHOLDER_RE = /\{\{|\}\}|\{([a-zA-Z0-9_.-]+)\}/g;
|
|
34
|
+
/**
|
|
35
|
+
* Интерполирует `{name}`-плейсхолдеры во fallback-строке. Нужен, чтобы `t(key, fallback,
|
|
36
|
+
* params)` корректно подставлял параметры и тогда, когда i18n не подключён (или ключ не
|
|
37
|
+
* найден) — иначе вызывающий код получил бы сырой `'Add "{value}"'` вместо `'Add "foo"'`.
|
|
38
|
+
*/
|
|
39
|
+
function interpolateFallback(template, params) {
|
|
40
|
+
return template.replace(FALLBACK_PLACEHOLDER_RE, (match, name) => {
|
|
41
|
+
if (match === "{{") return "{";
|
|
42
|
+
if (match === "}}") return "}";
|
|
43
|
+
if (name === void 0) return match;
|
|
44
|
+
const value = params?.[name];
|
|
45
|
+
return value == null ? match : String(value);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
33
48
|
function useGranularityTranslations(context) {
|
|
34
49
|
const i18n = resolveGranularityI18n(context);
|
|
35
50
|
const t = (key, fallback, params) => {
|
|
36
|
-
if (!i18n) return fallback;
|
|
51
|
+
if (!i18n) return interpolateFallback(fallback, params);
|
|
37
52
|
const result = i18n.t(key, params);
|
|
38
|
-
return result === key ? fallback : result;
|
|
53
|
+
return result === key ? interpolateFallback(fallback, params) : result;
|
|
39
54
|
};
|
|
40
55
|
return {
|
|
41
56
|
i18n,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"granularityI18n-DoV7Ca2m.js","names":[],"sources":["../../src/internal/granularityI18n.ts"],"sourcesContent":["import { getCurrentInstance, inject, type AppContext } from 'vue'\n\nimport { GRANULARITY_I18N_KEY, type GranularityI18nAdapter } from '../i18n/adapter'\n\nexport type GranularityI18nLike = GranularityI18nAdapter\n\n/**\n * Ключ provide/inject из `@feugene/fint-i18n` (`Symbol.for(\"FintI18n\")`).\n *\n * Дублируем константу здесь, чтобы не делать `@feugene/fint-i18n` обязательной\n * runtime-зависимостью пакета: достаточно, чтобы приложение само установило\n * fint-i18n через `installI18n(app, i18n)` — символ глобальный (Symbol.for),\n * поэтому ключи будут совпадать без прямого импорта.\n */\nconst FINT_I18N_KEY: symbol = Symbol.for('FintI18n')\n\nfunction isGranularityI18nLike(value: unknown): value is GranularityI18nLike {\n return typeof (value as GranularityI18nLike | null)?.t === 'function'\n}\n\nexport function resolveGranularityI18n(context?: AppContext | GranularityI18nLike | null): GranularityI18nLike | null {\n if (isGranularityI18nLike(context)) {\n return context\n }\n\n const provides = context?.provides\n\n if (provides) {\n const fromGranularity = provides[GRANULARITY_I18N_KEY as symbol] as GranularityI18nLike | null | undefined\n if (isGranularityI18nLike(fromGranularity)) {\n return fromGranularity\n }\n\n const fromFint = provides[FINT_I18N_KEY] as GranularityI18nLike | null | undefined\n if (isGranularityI18nLike(fromFint)) {\n return fromFint\n }\n\n return null\n }\n\n if (!getCurrentInstance()) {\n return null\n }\n\n const fromGranularity = inject<GranularityI18nLike | null>(GRANULARITY_I18N_KEY, null)\n if (isGranularityI18nLike(fromGranularity)) {\n return fromGranularity\n }\n\n const fromFint = inject<GranularityI18nLike | null>(FINT_I18N_KEY, null)\n if (isGranularityI18nLike(fromFint)) {\n return fromFint\n }\n\n return null\n}\n\n// Совпадает с синтаксисом плейсхолдеров `@feugene/fint-i18n` (`{name}`, экранирование\n// `{{`/`}}` — см. docs/en/api.md → \"Template Interpolation\"), чтобы fallback-текст вёл\n// себя идентично реальному переводу, когда параметры переданы.\nconst FALLBACK_PLACEHOLDER_RE = /\\{\\{|\\}\\}|\\{([a-zA-Z0-9_.-]+)\\}/g\n\n/**\n * Интерполирует `{name}`-плейсхолдеры во fallback-строке. Нужен, чтобы `t(key, fallback,\n * params)` корректно подставлял параметры и тогда, когда i18n не подключён (или ключ не\n * найден) — иначе вызывающий код получил бы сырой `'Add \"{value}\"'` вместо `'Add \"foo\"'`.\n */\nfunction interpolateFallback(template: string, params?: Record<string, any>): string {\n // `{{`/`}}`-экранирование обязано работать независимо от того, переданы ли `params`\n // (совпадает с fint-i18n: `t('literal')` без параметров тоже разэкранирует `{{name}}`).\n // Ранний выход по `!params` здесь недопустим.\n return template.replace(FALLBACK_PLACEHOLDER_RE, (match, name: string | undefined) => {\n if (match === '{{') return '{'\n if (match === '}}') return '}'\n if (name === undefined) return match\n\n const value = params?.[name]\n return value == null ? match : String(value)\n })\n}\n\nexport function useGranularityTranslations(context?: AppContext | GranularityI18nLike | null) {\n const i18n = resolveGranularityI18n(context)\n\n const t = (key: string, fallback: string, params?: Record<string, any>): string => {\n if (!i18n) {\n return interpolateFallback(fallback, params)\n }\n\n const result = i18n.t(key, params)\n return result === key ? interpolateFallback(fallback, params) : result\n }\n\n return {\n i18n,\n t,\n }\n}"],"mappings":";;;;;;;;;;;AAcA,IAAM,gBAAwB,OAAO,IAAI,UAAU;AAEnD,SAAS,sBAAsB,OAA8C;CAC3E,OAAO,OAAQ,OAAsC,MAAM;AAC7D;AAEA,SAAgB,uBAAuB,SAA+E;CACpH,IAAI,sBAAsB,OAAO,GAC/B,OAAO;CAGT,MAAM,WAAW,SAAS;CAE1B,IAAI,UAAU;EACZ,MAAM,kBAAkB,SAAS;EACjC,IAAI,sBAAsB,eAAe,GACvC,OAAO;EAGT,MAAM,WAAW,SAAS;EAC1B,IAAI,sBAAsB,QAAQ,GAChC,OAAO;EAGT,OAAO;CACT;CAEA,IAAI,CAAC,mBAAmB,GACtB,OAAO;CAGT,MAAM,kBAAkB,OAAmC,sBAAsB,IAAI;CACrF,IAAI,sBAAsB,eAAe,GACvC,OAAO;CAGT,MAAM,WAAW,OAAmC,eAAe,IAAI;CACvE,IAAI,sBAAsB,QAAQ,GAChC,OAAO;CAGT,OAAO;AACT;AAKA,IAAM,0BAA0B;;;;;;AAOhC,SAAS,oBAAoB,UAAkB,QAAsC;CAInF,OAAO,SAAS,QAAQ,0BAA0B,OAAO,SAA6B;EACpF,IAAI,UAAU,MAAM,OAAO;EAC3B,IAAI,UAAU,MAAM,OAAO;EAC3B,IAAI,SAAS,KAAA,GAAW,OAAO;EAE/B,MAAM,QAAQ,SAAS;EACvB,OAAO,SAAS,OAAO,QAAQ,OAAO,KAAK;CAC7C,CAAC;AACH;AAEA,SAAgB,2BAA2B,SAAmD;CAC5F,MAAM,OAAO,uBAAuB,OAAO;CAE3C,MAAM,KAAK,KAAa,UAAkB,WAAyC;EACjF,IAAI,CAAC,MACH,OAAO,oBAAoB,UAAU,MAAM;EAG7C,MAAM,SAAS,KAAK,EAAE,KAAK,MAAM;EACjC,OAAO,WAAW,MAAM,oBAAoB,UAAU,MAAM,IAAI;CAClE;CAEA,OAAO;EACL;EACA;CACF;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info-Be2OccTu.js","names":[],"sources":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader-circle-CfVLz7lb.js","names":[],"sources":[],"mappings":""}
|