@feugene/granularity 0.12.0 → 0.13.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/dist/GrBadge.css +1 -1
- package/dist/GrFormFile.css +1 -1
- package/dist/GrToaster.css +1 -1
- package/dist/GrTree.css +1 -1
- package/dist/chunks/{config-ClhKPJvg.js → config-23WtUiAL.js} +1 -1
- package/dist/chunks/config-23WtUiAL.js.map +1 -0
- package/dist/chunks/config-8Pcutu1j.js.map +1 -0
- package/dist/chunks/{config-1uSYl98Y2.js → config-B0i5r8kH.js} +1 -1
- package/dist/chunks/config-B0i5r8kH.js.map +1 -0
- package/dist/chunks/{config-BOlr7qw7.js → config-B5Rknzkd.js} +33 -39
- package/dist/chunks/config-B5Rknzkd.js.map +1 -0
- package/dist/chunks/config-B7W9VlZ7.js +5 -0
- package/dist/chunks/config-B7W9VlZ7.js.map +1 -0
- package/dist/chunks/config-BDSHekVC.js +84 -0
- package/dist/chunks/config-BDSHekVC.js.map +1 -0
- package/dist/chunks/config-BLHqZhy-.js.map +1 -0
- package/dist/chunks/{config-eYLZYOUS2.js → config-BMKNHFMD2.js} +15 -15
- package/dist/chunks/config-BMKNHFMD2.js.map +1 -0
- package/dist/chunks/config-BUHuGBik2.js.map +1 -0
- package/dist/chunks/config-BX1JTrkV.js.map +1 -0
- package/dist/chunks/config-BXtAmU3s.js.map +1 -0
- package/dist/chunks/config-BZFUM3Ky.js +75 -0
- package/dist/chunks/config-BZFUM3Ky.js.map +1 -0
- package/dist/chunks/{config-DUcu1D682.js → config-BmNT0Fmx.js} +2 -2
- package/dist/chunks/config-BmNT0Fmx.js.map +1 -0
- package/dist/chunks/{config-C49QUoJL.js → config-BvVq2gbd.js} +1 -1
- package/dist/chunks/{config-C49QUoJL.js.map → config-BvVq2gbd.js.map} +1 -1
- package/dist/chunks/{config-CrG1XiE72.js → config-C4hJxXDa.js} +5 -5
- package/dist/chunks/config-C4hJxXDa.js.map +1 -0
- package/dist/chunks/config-CB4RVt9M.js +66 -0
- package/dist/chunks/config-CB4RVt9M.js.map +1 -0
- package/dist/chunks/config-CGHLoBlH2.js.map +1 -0
- package/dist/chunks/config-COE_vZ-l.js +52 -0
- package/dist/chunks/config-COE_vZ-l.js.map +1 -0
- package/dist/chunks/{config-CziwTDDL.js → config-CPdmr7tC.js} +1 -1
- package/dist/chunks/{config-CziwTDDL.js.map → config-CPdmr7tC.js.map} +1 -1
- package/dist/chunks/{config-BIRO0vDJ.js → config-DPDFYzIa.js} +2 -2
- package/dist/chunks/config-DPDFYzIa.js.map +1 -0
- package/dist/chunks/{config-DnvPqu4g2.js → config-DRKXJ9PW2.js} +1 -1
- package/dist/chunks/{config-DnvPqu4g2.js.map → config-DRKXJ9PW2.js.map} +1 -1
- package/dist/chunks/config-DToHb81g.js +45 -0
- package/dist/chunks/config-DToHb81g.js.map +1 -0
- package/dist/chunks/{config-jBp9wVv-.js → config-D_myOZbA.js} +1 -1
- package/dist/chunks/{config-jBp9wVv-.js.map → config-D_myOZbA.js.map} +1 -1
- package/dist/chunks/{config-D_R56_gT.js → config-Dg_6FTvJ.js} +1 -1
- package/dist/chunks/config-Dg_6FTvJ.js.map +1 -0
- package/dist/chunks/config-Dqy0rPPO2.js.map +1 -0
- package/dist/chunks/config-Droqn55j.js +8 -0
- package/dist/chunks/config-Droqn55j.js.map +1 -0
- package/dist/chunks/config-JpHA4Xx0.js.map +1 -0
- package/dist/chunks/{config-C4snOIXg.js → config-KXuionN3.js} +1 -1
- package/dist/chunks/{config-C4snOIXg.js.map → config-KXuionN3.js.map} +1 -1
- package/dist/chunks/{config-DezDih8_.js → config-LqDC_rvp.js} +2 -2
- package/dist/chunks/config-LqDC_rvp.js.map +1 -0
- package/dist/chunks/config-QaIc_gRa2.js.map +1 -0
- package/dist/chunks/config-U4m9PSql2.js.map +1 -0
- package/dist/chunks/{config-B7IIWGt_2.js → config-XmTv4pnI.js} +2 -2
- package/dist/chunks/config-XmTv4pnI.js.map +1 -0
- package/dist/chunks/config-eXB87DOi.js.map +1 -0
- package/dist/chunks/{config-C7NpDrfO.js → config-gZWR75Bh2.js} +1 -1
- package/dist/chunks/config-gZWR75Bh2.js.map +1 -0
- package/dist/chunks/config-ipvU0lzP.js.map +1 -0
- package/dist/chunks/config-xR4XVmcy2.js.map +1 -0
- package/dist/chunks/context-Bfrgsluh.js +9 -0
- package/dist/chunks/context-Bfrgsluh.js.map +1 -0
- package/dist/chunks/context-DfWYCBB-.js +129 -0
- package/dist/chunks/context-DfWYCBB-.js.map +1 -0
- package/dist/chunks/{en-CfkDa4GX.js → en-Cr6EkG8c.js} +46 -4
- package/dist/chunks/en-Cr6EkG8c.js.map +1 -0
- package/dist/chunks/{es-CgaLnFYx.js → es-DuYb1Qju.js} +3 -3
- package/dist/chunks/{es-CgaLnFYx.js.map → es-DuYb1Qju.js.map} +1 -1
- package/dist/chunks/{es-FkgECuCm.js → es-i08e9Sdo.js} +46 -4
- package/dist/chunks/es-i08e9Sdo.js.map +1 -0
- package/dist/chunks/{grBadgeStyles-DrycBuKT.js → grBadgeStyles-D3dFjr_N.js} +12 -12
- package/dist/chunks/grBadgeStyles-D3dFjr_N.js.map +1 -0
- package/dist/chunks/{grButtonStyles-C7Yga_Q1.js → grButtonStyles-DRBgDmOp.js} +28 -28
- package/dist/chunks/grButtonStyles-DRBgDmOp.js.map +1 -0
- package/dist/chunks/{grDropdownStyles-B_-DKytw.js → grDropdownStyles-HBPkghVr.js} +2 -2
- package/dist/chunks/{grDropdownStyles-B_-DKytw.js.map → grDropdownStyles-HBPkghVr.js.map} +1 -1
- package/dist/chunks/{grModalStyles-DWd3i05Q.js → grModalStyles-D8-shx9A.js} +1 -1
- package/dist/chunks/grModalStyles-D8-shx9A.js.map +1 -0
- package/dist/chunks/{grSelectStyles-CLK5hRd3.js → grSelectStyles-CwMUQrBZ.js} +12 -12
- package/dist/chunks/grSelectStyles-CwMUQrBZ.js.map +1 -0
- package/dist/chunks/{grStyle-Blc9otAx.js → grStyle-CdvxTXPH.js} +2 -2
- package/dist/chunks/grStyle-CdvxTXPH.js.map +1 -0
- package/dist/chunks/{granularityI18n-DoV7Ca2m.js → granularityI18n-SH0I--GW.js} +1 -1
- package/dist/chunks/{granularityI18n-DoV7Ca2m.js.map → granularityI18n-SH0I--GW.js.map} +1 -1
- package/dist/chunks/{ru-Bl8CxpEa.js → ru-B5XOOYZt.js} +46 -4
- package/dist/chunks/ru-B5XOOYZt.js.map +1 -0
- package/dist/chunks/{safelist-Do2RtzLB.js → safelist-BvO8HPnE.js} +1 -1
- package/dist/chunks/{safelist-Do2RtzLB.js.map → safelist-BvO8HPnE.js.map} +1 -1
- package/dist/chunks/shared-D-v9lit0.js +188 -0
- package/dist/chunks/shared-D-v9lit0.js.map +1 -0
- package/dist/components/GrAlert/chunks/GrAlert-B9gmpoPC.js +251 -0
- package/dist/components/GrAlert/chunks/GrAlert-B9gmpoPC.js.map +1 -0
- package/dist/components/GrAlert/index.js +2 -2
- package/dist/components/GrAutocomplete/chunks/GrAutocomplete-BVLoQ5tZ.js +499 -0
- package/dist/components/GrAutocomplete/chunks/GrAutocomplete-BVLoQ5tZ.js.map +1 -0
- package/dist/components/GrAutocomplete/index.js +3 -0
- package/dist/components/GrAvatar/chunks/{GrAvatar-96CpTCq5.js → GrAvatar-CTOUVBF7.js} +1 -1
- package/dist/components/GrAvatar/chunks/GrAvatar-CTOUVBF7.js.map +1 -0
- package/dist/components/GrAvatar/index.js +1 -1
- package/dist/components/GrBadge/chunks/{GrBadge-B77XlaqE.js → GrBadge-D1jefy4S.js} +12 -8
- package/dist/components/GrBadge/chunks/GrBadge-D1jefy4S.js.map +1 -0
- package/dist/components/GrBadge/index.js +2 -2
- package/dist/components/GrBadgeWrap/chunks/{GrBadgeWrap-CcktMOdg.js → GrBadgeWrap-DWDxHdiQ.js} +1 -1
- package/dist/components/GrBadgeWrap/chunks/GrBadgeWrap-DWDxHdiQ.js.map +1 -0
- package/dist/components/GrBadgeWrap/index.js +1 -1
- package/dist/components/GrBottomNav/chunks/{GrBottomNav-usuMgG8_.js → GrBottomNav-vSE4LXmk.js} +2 -2
- package/dist/components/GrBottomNav/chunks/GrBottomNav-vSE4LXmk.js.map +1 -0
- package/dist/components/GrBottomNav/index.js +1 -1
- package/dist/components/GrButton/chunks/{GrButton-BlffdeJr.js → GrButton-DCi4CUpo.js} +18 -14
- package/dist/components/GrButton/chunks/GrButton-DCi4CUpo.js.map +1 -0
- package/dist/components/GrButton/index.js +4 -4
- package/dist/components/GrCard/chunks/{GrCard-DUNMkuHW.js → GrCard-CxCjyHMb.js} +1 -1
- package/dist/components/GrCard/chunks/GrCard-CxCjyHMb.js.map +1 -0
- package/dist/components/GrCard/index.js +1 -1
- package/dist/components/GrCheckbox/chunks/{GrCheckbox-DJhzZZdO.js → GrCheckbox-BbIDRXtl.js} +5 -5
- package/dist/components/GrCheckbox/chunks/GrCheckbox-BbIDRXtl.js.map +1 -0
- package/dist/components/GrCheckbox/index.js +1 -1
- package/dist/components/GrCollapse/chunks/{GrCollapse-CPPLh_xU.js → GrCollapse-DApXztn8.js} +6 -6
- package/dist/components/GrCollapse/chunks/GrCollapse-DApXztn8.js.map +1 -0
- package/dist/components/GrCollapse/index.js +2 -2
- package/dist/components/GrCommandPalette/chunks/GrCommandPalette-6OyvNbek.js +410 -0
- package/dist/components/GrCommandPalette/chunks/GrCommandPalette-6OyvNbek.js.map +1 -0
- package/dist/components/GrCommandPalette/index.js +3 -0
- package/dist/components/GrConfigProvider/chunks/GrConfigProvider-BtyeBGm8.js +57 -0
- package/dist/components/GrConfigProvider/chunks/GrConfigProvider-BtyeBGm8.js.map +1 -0
- package/dist/components/GrConfigProvider/index.js +4 -0
- package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-D8CkOtqv.js → GrConfirmDialog-e4120mWw.js} +5 -5
- package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-e4120mWw.js.map +1 -0
- package/dist/components/GrConfirmDialog/index.js +2 -2
- package/dist/components/GrDataTable/chunks/{GrDataTable-Ds5OeGat.js → GrDataTable-C1CzxV0p.js} +127 -25
- package/dist/components/GrDataTable/chunks/GrDataTable-C1CzxV0p.js.map +1 -0
- package/dist/components/GrDataTable/index.js +2 -2
- package/dist/components/GrDialog/chunks/{GrDialog-Ctucxju9.js → GrDialog-BPMvDHOz.js} +5 -5
- package/dist/components/GrDialog/chunks/GrDialog-BPMvDHOz.js.map +1 -0
- package/dist/components/GrDialog/index.js +1 -1
- package/dist/components/GrDialogService/chunks/{GrDialogService-CU1Fbonc.js → GrDialogService-CYXCTGm3.js} +36 -11
- package/dist/components/GrDialogService/chunks/GrDialogService-CYXCTGm3.js.map +1 -0
- package/dist/components/GrDialogService/index.js +2 -2
- package/dist/components/GrDivider/chunks/{GrDivider-5bcE-BB4.js → GrDivider-BdENZ1w0.js} +5 -5
- package/dist/components/GrDivider/chunks/GrDivider-BdENZ1w0.js.map +1 -0
- package/dist/components/GrDivider/index.js +1 -1
- package/dist/components/GrDrawer/chunks/{GrDrawer-SLGKCY2A.js → GrDrawer-KevdZ5BB.js} +5 -5
- package/dist/components/GrDrawer/chunks/GrDrawer-KevdZ5BB.js.map +1 -0
- package/dist/components/GrDrawer/index.js +2 -2
- package/dist/components/GrDropdown/chunks/{GrDropdown-BnDMYP8v.js → GrDropdown-BKoy8hm-.js} +1 -1
- package/dist/components/GrDropdown/chunks/{GrDropdown-BnDMYP8v.js.map → GrDropdown-BKoy8hm-.js.map} +1 -1
- package/dist/components/GrDropdown/index.js +2 -2
- package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu--g9Vofcq.js → GrDropdownMenu-zCatXzmt.js} +11 -11
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-zCatXzmt.js.map +1 -0
- package/dist/components/GrDropdownMenu/index.js +1 -1
- package/dist/components/GrEmptyState/chunks/{GrEmptyState-CA3BiTV7.js → GrEmptyState-CNb0BzjG.js} +3 -3
- package/dist/components/GrEmptyState/chunks/GrEmptyState-CNb0BzjG.js.map +1 -0
- package/dist/components/GrEmptyState/index.js +1 -1
- package/dist/components/GrFileUpload/chunks/{GrFileUpload-DvWPpiJS.js → GrFileUpload-CnLgUGDF.js} +12 -12
- package/dist/components/GrFileUpload/chunks/GrFileUpload-CnLgUGDF.js.map +1 -0
- package/dist/components/GrFileUpload/index.js +1 -1
- package/dist/components/GrForm/chunks/GrForm-CdaFjcyl.js +234 -0
- package/dist/components/GrForm/chunks/GrForm-CdaFjcyl.js.map +1 -0
- package/dist/components/GrForm/index.js +4 -0
- package/dist/components/GrFormField/chunks/{GrFormField-DnfMHx_U.js → GrFormField-CXCDBd99.js} +41 -14
- package/dist/components/GrFormField/chunks/GrFormField-CXCDBd99.js.map +1 -0
- package/dist/components/GrFormField/index.js +1 -1
- package/dist/components/GrFormFile/chunks/{GrFormFile-CXcqqdvV.js → GrFormFile-CqacSbUl.js} +9 -9
- package/dist/components/GrFormFile/chunks/GrFormFile-CqacSbUl.js.map +1 -0
- package/dist/components/GrFormFile/index.js +1 -1
- package/dist/components/GrFormSection/chunks/{GrFormSection-Ce21jcgo.js → GrFormSection-C3w9DQJf.js} +1 -1
- package/dist/components/GrFormSection/chunks/GrFormSection-C3w9DQJf.js.map +1 -0
- package/dist/components/GrFormSection/index.js +1 -1
- package/dist/components/GrImageViewer/chunks/{GrImageViewer-Dla9IBkd.js → GrImageViewer-DDLJkvIU.js} +1 -1
- package/dist/components/GrImageViewer/chunks/{GrImageViewer-Dla9IBkd.js.map → GrImageViewer-DDLJkvIU.js.map} +1 -1
- package/dist/components/GrImageViewer/index.js +1 -1
- package/dist/components/GrInput/chunks/{GrInput-B8dd3JaA.js → GrInput-C1VBL0dg.js} +18 -15
- package/dist/components/GrInput/chunks/GrInput-C1VBL0dg.js.map +1 -0
- package/dist/components/GrInput/index.js +2 -2
- package/dist/components/GrInputTag/chunks/{GrInputTag-zMgFqp2g.js → GrInputTag-BMk9jm42.js} +6 -6
- package/dist/components/GrInputTag/chunks/GrInputTag-BMk9jm42.js.map +1 -0
- package/dist/components/GrInputTag/index.js +2 -2
- package/dist/components/GrKbd/chunks/{GrKbd-BEoYxWhE.js → GrKbd-DTspwtoN.js} +1 -1
- package/dist/components/GrKbd/chunks/GrKbd-DTspwtoN.js.map +1 -0
- package/dist/components/GrKbd/index.js +1 -1
- package/dist/components/GrLink/chunks/{GrLink-CYUe-Q8k.js → GrLink-BP0YrnL9.js} +1 -1
- package/dist/components/GrLink/chunks/{GrLink-CYUe-Q8k.js.map → GrLink-BP0YrnL9.js.map} +1 -1
- package/dist/components/GrLink/index.js +2 -2
- package/dist/components/GrList/chunks/{GrList-Dx772Ns4.js → GrList-5RA-tZzE.js} +3 -3
- package/dist/components/GrList/chunks/GrList-5RA-tZzE.js.map +1 -0
- package/dist/components/GrList/index.js +1 -1
- package/dist/components/GrLoading/chunks/{GrLoading--X_7rdbb.js → GrLoading-fRDtVfi7.js} +3 -3
- package/dist/components/GrLoading/chunks/GrLoading-fRDtVfi7.js.map +1 -0
- package/dist/components/GrLoading/index.js +2 -2
- package/dist/components/GrModal/chunks/{GrModal-C0GZrHN3.js → GrModal-BTu1-5eY.js} +1 -1
- package/dist/components/GrModal/chunks/{GrModal-C0GZrHN3.js.map → GrModal-BTu1-5eY.js.map} +1 -1
- package/dist/components/GrModal/index.js +3 -3
- package/dist/components/GrNavbar/chunks/{GrNavbar-DW3MiIIf.js → GrNavbar-keKT_mIM.js} +3 -3
- package/dist/components/GrNavbar/chunks/GrNavbar-keKT_mIM.js.map +1 -0
- package/dist/components/GrNavbar/index.js +1 -1
- package/dist/components/GrNumberInput/chunks/{GrNumberInput-DxCEvL7V.js → GrNumberInput-l9ZOHG9D.js} +19 -17
- package/dist/components/GrNumberInput/chunks/GrNumberInput-l9ZOHG9D.js.map +1 -0
- package/dist/components/GrNumberInput/index.js +2 -2
- package/dist/components/GrPagination/chunks/{GrPagination-mlyfLjQY.js → GrPagination-C5Y69CuK.js} +59 -16
- package/dist/components/GrPagination/chunks/GrPagination-C5Y69CuK.js.map +1 -0
- package/dist/components/GrPagination/index.js +2 -2
- package/dist/components/GrProgressBar/chunks/{GrProgressBar-CC3z-Zqp.js → GrProgressBar-Dqg4Fj9S.js} +2 -2
- package/dist/components/GrProgressBar/chunks/GrProgressBar-Dqg4Fj9S.js.map +1 -0
- package/dist/components/GrProgressBar/index.js +2 -2
- package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-C-_BMNuY.js → GrPromptDialog-DNUjRVB9.js} +7 -7
- package/dist/components/GrPromptDialog/chunks/GrPromptDialog-DNUjRVB9.js.map +1 -0
- package/dist/components/GrPromptDialog/index.js +2 -2
- package/dist/components/GrRadio/chunks/{GrRadio-Dr-pvs_9.js → GrRadio-DlhxPGqf.js} +5 -7
- package/dist/components/GrRadio/chunks/GrRadio-DlhxPGqf.js.map +1 -0
- package/dist/components/GrRadio/index.js +2 -2
- package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-nOdvfV_g.js → GrRadioGroup-BXt9iw4q.js} +7 -5
- package/dist/components/GrRadioGroup/chunks/GrRadioGroup-BXt9iw4q.js.map +1 -0
- package/dist/components/GrRadioGroup/index.js +2 -2
- package/dist/components/GrRating/chunks/GrRating-Co-3Rk4h.js +241 -0
- package/dist/components/GrRating/chunks/GrRating-Co-3Rk4h.js.map +1 -0
- package/dist/components/GrRating/index.js +3 -0
- package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-BWJNe2gr.js → GrResponseErrorBanner-2CvM7Z08.js} +2 -2
- package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-BWJNe2gr.js.map → GrResponseErrorBanner-2CvM7Z08.js.map} +1 -1
- package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-Cdu9ekK9.js → GrResponseErrorBanner-C8NGx8pE.js} +3 -3
- package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-Cdu9ekK9.js.map → GrResponseErrorBanner-C8NGx8pE.js.map} +1 -1
- package/dist/components/GrResponseErrorBanner/index.js +2 -2
- package/dist/components/GrSegmented/chunks/{GrSegmented-C1y0UXpQ.js → GrSegmented-CTd3n4PA.js} +14 -11
- package/dist/components/GrSegmented/chunks/GrSegmented-CTd3n4PA.js.map +1 -0
- package/dist/components/GrSegmented/index.js +2 -2
- package/dist/components/GrSelect/chunks/{GrSelect-BVCmitqa.js → GrSelect-Dn3FgJ3Z.js} +161 -75
- package/dist/components/GrSelect/chunks/GrSelect-Dn3FgJ3Z.js.map +1 -0
- package/dist/components/GrSelect/index.js +2 -2
- package/dist/components/GrSidebar/chunks/{GrSidebar-DkWozzwA.js → GrSidebar-cvnzBfj3.js} +7 -7
- package/dist/components/GrSidebar/chunks/GrSidebar-cvnzBfj3.js.map +1 -0
- package/dist/components/GrSidebar/index.js +2 -2
- package/dist/components/GrSkeleton/chunks/{GrSkeleton-DsN-_CDZ.js → GrSkeleton-BucA5F4J.js} +1 -1
- package/dist/components/GrSkeleton/chunks/GrSkeleton-BucA5F4J.js.map +1 -0
- package/dist/components/GrSkeleton/index.js +2 -2
- package/dist/components/GrSlider/chunks/GrSlider-CzzJ3bD-.js +286 -0
- package/dist/components/GrSlider/chunks/GrSlider-CzzJ3bD-.js.map +1 -0
- package/dist/components/GrSlider/index.js +3 -0
- package/dist/components/GrStatistic/chunks/GrStatistic-gHiAwrX5.js +128 -0
- package/dist/components/GrStatistic/chunks/GrStatistic-gHiAwrX5.js.map +1 -0
- package/dist/components/GrStatistic/index.js +3 -0
- package/dist/components/GrSwitch/chunks/{GrSwitch-DAioyccZ.js → GrSwitch-CJdRvS0s.js} +16 -7
- package/dist/components/GrSwitch/chunks/GrSwitch-CJdRvS0s.js.map +1 -0
- package/dist/components/GrSwitch/index.js +2 -2
- package/dist/components/GrTabPanels/chunks/{GrTabPanels-DbKybwe-.js → GrTabPanels-DeEMgb_y.js} +1 -1
- package/dist/components/GrTabPanels/chunks/{GrTabPanels-DbKybwe-.js.map → GrTabPanels-DeEMgb_y.js.map} +1 -1
- package/dist/components/GrTabPanels/index.js +2 -2
- package/dist/components/GrTable/chunks/{GrTable-Db3hRnKA.js → GrTable-sNvsA8wa.js} +24 -11
- package/dist/components/GrTable/chunks/GrTable-sNvsA8wa.js.map +1 -0
- package/dist/components/GrTable/index.js +2 -2
- package/dist/components/GrTabs/chunks/{GrTabs-DsLwWoRz.js → GrTabs-BqTak0SR.js} +3 -3
- package/dist/components/GrTabs/chunks/GrTabs-BqTak0SR.js.map +1 -0
- package/dist/components/GrTabs/index.js +2 -2
- package/dist/components/GrTextarea/chunks/{GrTextarea-CKukGlNl.js → GrTextarea-DIYBAPpP.js} +2 -2
- package/dist/components/GrTextarea/chunks/GrTextarea-DIYBAPpP.js.map +1 -0
- package/dist/components/GrTextarea/index.js +2 -2
- package/dist/components/GrToaster/chunks/{GrToaster-L2cu6cSR.js → GrToaster-BVHjIHcM.js} +51 -10
- package/dist/components/GrToaster/chunks/GrToaster-BVHjIHcM.js.map +1 -0
- package/dist/components/GrToaster/index.js +1 -1
- package/dist/components/GrTooltip/chunks/{GrTooltip-BeyZ8ssR.js → GrTooltip-BMKH2lIx.js} +3 -3
- package/dist/components/GrTooltip/chunks/GrTooltip-BMKH2lIx.js.map +1 -0
- package/dist/components/GrTooltip/index.js +1 -1
- package/dist/components/GrTree/chunks/{GrTree-B2_yW6g1.js → GrTree-_12ChXRQ.js} +3 -3
- package/dist/components/GrTree/chunks/GrTree-_12ChXRQ.js.map +1 -0
- package/dist/components/GrTree/index.js +1 -1
- package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-0aM62xyu.js → GrTreeSelect-CdaLG7Xq.js} +10 -10
- package/dist/components/GrTreeSelect/chunks/GrTreeSelect-CdaLG7Xq.js.map +1 -0
- package/dist/components/GrTreeSelect/index.js +2 -2
- package/dist/composables/useToast.js +3 -1
- package/dist/composables/useToast.js.map +1 -1
- package/dist/directives/loading.js +1 -1
- package/dist/granular-provider-node.js +6 -6
- package/dist/granular-provider-node.js.map +1 -1
- package/dist/granular-provider.js +1 -1
- package/dist/i18n/all.js +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/index.js +111 -93
- package/dist/index.js.map +1 -1
- package/dist/styles/base.css +2 -2
- package/dist/styles/index.css +6 -3
- package/dist/styles/preflight.css +3 -3
- package/dist/styles/themes/dark.css +52 -40
- package/dist/styles/themes/light.css +70 -45
- package/dist/styles/tokens.css +20 -20
- package/dist/types/src/components/GrAlert/GrAlert.vue.d.ts +26 -14
- package/dist/types/src/components/GrAlert/defaults.d.ts +17 -0
- package/dist/types/src/components/GrAlert/grAlertStyles.d.ts +55 -0
- package/dist/types/src/components/GrAlert/index.d.ts +4 -1
- package/dist/types/src/components/GrAutocomplete/GrAutocomplete.vue.d.ts +153 -0
- package/dist/types/src/components/GrAutocomplete/config.d.ts +1 -0
- package/dist/types/src/components/GrAutocomplete/defaults.d.ts +15 -0
- package/dist/types/src/components/GrAutocomplete/grAutocompleteStyles.d.ts +27 -0
- package/dist/types/src/components/GrAutocomplete/index.d.ts +6 -0
- package/dist/types/src/components/GrAutocomplete/safelist.d.ts +1 -0
- package/dist/types/src/components/GrAvatar/GrAvatar.vue.d.ts +1 -1
- package/dist/types/src/components/GrBadge/GrBadge.vue.d.ts +7 -7
- package/dist/types/src/components/GrBadge/defaults.d.ts +15 -0
- package/dist/types/src/components/GrBadge/index.d.ts +1 -0
- package/dist/types/src/components/GrBadgeWrap/GrBadgeWrap.vue.d.ts +1 -1
- package/dist/types/src/components/GrButton/GrButton.vue.d.ts +12 -12
- package/dist/types/src/components/GrButton/defaults.d.ts +25 -0
- package/dist/types/src/components/GrButton/grButtonStyles.d.ts +2 -2
- package/dist/types/src/components/GrButton/index.d.ts +1 -0
- package/dist/types/src/components/GrCheckbox/GrCheckbox.vue.d.ts +4 -4
- package/dist/types/src/components/GrCollapse/GrCollapse.vue.d.ts +2 -2
- package/dist/types/src/components/GrCollapse/GrCollapseItem.vue.d.ts +1 -1
- package/dist/types/src/components/GrCommandPalette/GrCommandPalette.vue.d.ts +128 -0
- package/dist/types/src/components/GrCommandPalette/config.d.ts +1 -0
- package/dist/types/src/components/GrCommandPalette/filtering.d.ts +35 -0
- package/dist/types/src/components/GrCommandPalette/grCommandPaletteStyles.d.ts +20 -0
- package/dist/types/src/components/GrCommandPalette/hotkey.d.ts +23 -0
- package/dist/types/src/components/GrCommandPalette/index.d.ts +6 -0
- package/dist/types/src/components/GrCommandPalette/safelist.d.ts +1 -0
- package/dist/types/src/components/GrConfigProvider/GrConfigProvider.vue.d.ts +59 -0
- package/dist/types/src/components/GrConfigProvider/config.d.ts +1 -0
- package/dist/types/src/components/GrConfigProvider/context.d.ts +131 -0
- package/dist/types/src/components/GrConfigProvider/index.d.ts +5 -0
- package/dist/types/src/components/GrConfirmDialog/GrConfirmDialog.vue.d.ts +2 -2
- package/dist/types/src/components/GrDataTable/GrDataTable.vue.d.ts +20 -0
- package/dist/types/src/components/GrDialog/GrDialog.vue.d.ts +1 -1
- package/dist/types/src/components/GrDialogService/store.d.ts +18 -0
- package/dist/types/src/components/GrDrawer/GrDrawer.vue.d.ts +1 -1
- package/dist/types/src/components/GrDropdown/GrDropdown.vue.d.ts +1 -1
- package/dist/types/src/components/GrDropdownMenu/GrDropdownMenu.vue.d.ts +1 -1
- package/dist/types/src/components/GrDropdownMenu/GrDropdownMenuItem.vue.d.ts +1 -1
- package/dist/types/src/components/GrFileUpload/GrFileUpload.vue.d.ts +3 -3
- package/dist/types/src/components/GrForm/GrForm.vue.d.ts +93 -0
- package/dist/types/src/components/GrForm/config.d.ts +1 -0
- package/dist/types/src/components/GrForm/context.d.ts +27 -0
- package/dist/types/src/components/GrForm/index.d.ts +6 -0
- package/dist/types/src/components/GrForm/validation.d.ts +52 -0
- package/dist/types/src/components/GrFormField/GrFormField.vue.d.ts +11 -1
- package/dist/types/src/components/GrFormFile/GrFormFile.vue.d.ts +4 -4
- package/dist/types/src/components/GrImageViewer/GrImageViewer.vue.d.ts +3 -3
- package/dist/types/src/components/GrInput/GrInput.vue.d.ts +12 -12
- package/dist/types/src/components/GrInput/defaults.d.ts +18 -0
- package/dist/types/src/components/GrInput/grInputStyles.d.ts +1 -1
- package/dist/types/src/components/GrInput/index.d.ts +1 -0
- package/dist/types/src/components/GrInputTag/GrInputTag.vue.d.ts +3 -3
- package/dist/types/src/components/GrLink/GrLink.vue.d.ts +3 -3
- package/dist/types/src/components/GrLink/grLinkStyles.d.ts +3 -3
- package/dist/types/src/components/GrModal/grModalStyles.d.ts +1 -1
- package/dist/types/src/components/GrNumberInput/GrNumberInput.vue.d.ts +10 -10
- package/dist/types/src/components/GrNumberInput/defaults.d.ts +14 -0
- package/dist/types/src/components/GrNumberInput/index.d.ts +1 -0
- package/dist/types/src/components/GrPagination/GrPagination.vue.d.ts +18 -0
- package/dist/types/src/components/GrPromptDialog/GrPromptDialog.vue.d.ts +4 -4
- package/dist/types/src/components/GrRadio/GrRadio.vue.d.ts +5 -5
- package/dist/types/src/components/GrRadio/defaults.d.ts +14 -0
- package/dist/types/src/components/GrRadio/grRadioStyles.d.ts +3 -3
- package/dist/types/src/components/GrRadio/index.d.ts +1 -0
- package/dist/types/src/components/GrRadioGroup/GrRadioGroup.vue.d.ts +4 -4
- package/dist/types/src/components/GrRadioGroup/defaults.d.ts +14 -0
- package/dist/types/src/components/GrRadioGroup/index.d.ts +1 -0
- package/dist/types/src/components/GrRating/GrRating.vue.d.ts +124 -0
- package/dist/types/src/components/GrRating/config.d.ts +1 -0
- package/dist/types/src/components/GrRating/defaults.d.ts +14 -0
- package/dist/types/src/components/GrRating/grRatingStyles.d.ts +21 -0
- package/dist/types/src/components/GrRating/index.d.ts +6 -0
- package/dist/types/src/components/GrRating/safelist.d.ts +1 -0
- package/dist/types/src/components/GrResponseErrorBanner/GrUploadErrorBanner.vue.d.ts +1 -1
- package/dist/types/src/components/GrSegmented/GrSegmented.vue.d.ts +7 -7
- package/dist/types/src/components/GrSegmented/defaults.d.ts +15 -0
- package/dist/types/src/components/GrSegmented/grSegmentedStyles.d.ts +1 -1
- package/dist/types/src/components/GrSegmented/index.d.ts +1 -0
- package/dist/types/src/components/GrSelect/GrSelect.vue.d.ts +57 -17
- package/dist/types/src/components/GrSelect/defaults.d.ts +17 -0
- package/dist/types/src/components/GrSelect/grSelectStyles.d.ts +3 -3
- package/dist/types/src/components/GrSelect/index.d.ts +1 -0
- package/dist/types/src/components/GrSidebar/GrSidebarItem.vue.d.ts +2 -2
- package/dist/types/src/components/GrSkeleton/GrSkeleton.vue.d.ts +1 -1
- package/dist/types/src/components/GrSlider/GrSlider.vue.d.ts +88 -0
- package/dist/types/src/components/GrSlider/config.d.ts +1 -0
- package/dist/types/src/components/GrSlider/defaults.d.ts +14 -0
- package/dist/types/src/components/GrSlider/grSliderStyles.d.ts +36 -0
- package/dist/types/src/components/GrSlider/index.d.ts +6 -0
- package/dist/types/src/components/GrSlider/safelist.d.ts +1 -0
- package/dist/types/src/components/GrStatistic/GrStatistic.vue.d.ts +116 -0
- package/dist/types/src/components/GrStatistic/config.d.ts +1 -0
- package/dist/types/src/components/GrStatistic/formatStatisticValue.d.ts +16 -0
- package/dist/types/src/components/GrStatistic/grStatisticStyles.d.ts +24 -0
- package/dist/types/src/components/GrStatistic/index.d.ts +6 -0
- package/dist/types/src/components/GrStatistic/safelist.d.ts +1 -0
- package/dist/types/src/components/GrSwitch/GrSwitch.vue.d.ts +4 -4
- package/dist/types/src/components/GrSwitch/defaults.d.ts +14 -0
- package/dist/types/src/components/GrSwitch/grSwitchStyles.d.ts +2 -2
- package/dist/types/src/components/GrSwitch/index.d.ts +1 -0
- package/dist/types/src/components/GrTable/GrTable.vue.d.ts +16 -0
- package/dist/types/src/components/GrTextarea/GrTextarea.vue.d.ts +5 -5
- package/dist/types/src/components/GrToaster/GrToaster.vue.d.ts +19 -2
- package/dist/types/src/components/GrToaster/index.d.ts +1 -1
- package/dist/types/src/components/GrTooltip/GrTooltip.vue.d.ts +1 -1
- package/dist/types/src/components/GrTreeSelect/GrTreeSelect.vue.d.ts +1 -1
- package/dist/types/src/components/GrTreeSelect/grTreeSelectStyles.d.ts +1 -1
- package/dist/types/src/composables/useToast.d.ts +24 -0
- package/dist/types/src/granular-provider/shared.d.ts +7 -0
- package/dist/types/src/i18n/messages/en.d.ts +74 -0
- package/dist/types/src/i18n/messages/es.d.ts +74 -0
- package/dist/types/src/i18n/messages/ru.d.ts +74 -0
- package/dist/types/src/index.d.ts +7 -0
- package/dist/web-types.json +1308 -271
- package/package.json +29 -1
- package/dist/chunks/config-1uSYl98Y2.js.map +0 -1
- package/dist/chunks/config-8Pcutu1j2.js.map +0 -1
- package/dist/chunks/config-B7IIWGt_2.js.map +0 -1
- package/dist/chunks/config-BIRO0vDJ.js.map +0 -1
- package/dist/chunks/config-BLHqZhy-2.js.map +0 -1
- package/dist/chunks/config-BOlr7qw7.js.map +0 -1
- package/dist/chunks/config-BUHuGBik.js.map +0 -1
- package/dist/chunks/config-BX1JTrkV2.js.map +0 -1
- package/dist/chunks/config-BXtAmU3s2.js.map +0 -1
- package/dist/chunks/config-C7NpDrfO.js.map +0 -1
- package/dist/chunks/config-CGHLoBlH.js.map +0 -1
- package/dist/chunks/config-ClhKPJvg.js.map +0 -1
- package/dist/chunks/config-Cpi9Mh2J.js.map +0 -1
- package/dist/chunks/config-CrG1XiE72.js.map +0 -1
- package/dist/chunks/config-DUcu1D682.js.map +0 -1
- package/dist/chunks/config-D_R56_gT.js.map +0 -1
- package/dist/chunks/config-DezDih8_.js.map +0 -1
- package/dist/chunks/config-JpHA4Xx02.js.map +0 -1
- package/dist/chunks/config-QaIc_gRa.js.map +0 -1
- package/dist/chunks/config-U4m9PSql.js.map +0 -1
- package/dist/chunks/config-eXB87DOi2.js.map +0 -1
- package/dist/chunks/config-eYLZYOUS2.js.map +0 -1
- package/dist/chunks/config-ipvU0lzP2.js.map +0 -1
- package/dist/chunks/config-xR4XVmcy.js.map +0 -1
- package/dist/chunks/en-CfkDa4GX.js.map +0 -1
- package/dist/chunks/es-FkgECuCm.js.map +0 -1
- package/dist/chunks/grBadgeStyles-DrycBuKT.js.map +0 -1
- package/dist/chunks/grButtonStyles-C7Yga_Q1.js.map +0 -1
- package/dist/chunks/grModalStyles-DWd3i05Q.js.map +0 -1
- package/dist/chunks/grSelectStyles-CLK5hRd3.js.map +0 -1
- package/dist/chunks/grStyle-Blc9otAx.js.map +0 -1
- package/dist/chunks/ru-Bl8CxpEa.js.map +0 -1
- package/dist/chunks/shared-B6Ay2081.js +0 -174
- package/dist/chunks/shared-B6Ay2081.js.map +0 -1
- package/dist/components/GrAlert/chunks/GrAlert-DPJSU_fG.js +0 -163
- package/dist/components/GrAlert/chunks/GrAlert-DPJSU_fG.js.map +0 -1
- package/dist/components/GrAvatar/chunks/GrAvatar-96CpTCq5.js.map +0 -1
- package/dist/components/GrBadge/chunks/GrBadge-B77XlaqE.js.map +0 -1
- package/dist/components/GrBadgeWrap/chunks/GrBadgeWrap-CcktMOdg.js.map +0 -1
- package/dist/components/GrBottomNav/chunks/GrBottomNav-usuMgG8_.js.map +0 -1
- package/dist/components/GrButton/chunks/GrButton-BlffdeJr.js.map +0 -1
- package/dist/components/GrCard/chunks/GrCard-DUNMkuHW.js.map +0 -1
- package/dist/components/GrCheckbox/chunks/GrCheckbox-DJhzZZdO.js.map +0 -1
- package/dist/components/GrCollapse/chunks/GrCollapse-CPPLh_xU.js.map +0 -1
- package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-D8CkOtqv.js.map +0 -1
- package/dist/components/GrDataTable/chunks/GrDataTable-Ds5OeGat.js.map +0 -1
- package/dist/components/GrDialog/chunks/GrDialog-Ctucxju9.js.map +0 -1
- package/dist/components/GrDialogService/chunks/GrDialogService-CU1Fbonc.js.map +0 -1
- package/dist/components/GrDivider/chunks/GrDivider-5bcE-BB4.js.map +0 -1
- package/dist/components/GrDrawer/chunks/GrDrawer-SLGKCY2A.js.map +0 -1
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu--g9Vofcq.js.map +0 -1
- package/dist/components/GrEmptyState/chunks/GrEmptyState-CA3BiTV7.js.map +0 -1
- package/dist/components/GrFileUpload/chunks/GrFileUpload-DvWPpiJS.js.map +0 -1
- package/dist/components/GrFormField/chunks/GrFormField-DnfMHx_U.js.map +0 -1
- package/dist/components/GrFormFile/chunks/GrFormFile-CXcqqdvV.js.map +0 -1
- package/dist/components/GrFormSection/chunks/GrFormSection-Ce21jcgo.js.map +0 -1
- package/dist/components/GrInput/chunks/GrInput-B8dd3JaA.js.map +0 -1
- package/dist/components/GrInputTag/chunks/GrInputTag-zMgFqp2g.js.map +0 -1
- package/dist/components/GrKbd/chunks/GrKbd-BEoYxWhE.js.map +0 -1
- package/dist/components/GrList/chunks/GrList-Dx772Ns4.js.map +0 -1
- package/dist/components/GrLoading/chunks/GrLoading--X_7rdbb.js.map +0 -1
- package/dist/components/GrNavbar/chunks/GrNavbar-DW3MiIIf.js.map +0 -1
- package/dist/components/GrNumberInput/chunks/GrNumberInput-DxCEvL7V.js.map +0 -1
- package/dist/components/GrPagination/chunks/GrPagination-mlyfLjQY.js.map +0 -1
- package/dist/components/GrProgressBar/chunks/GrProgressBar-CC3z-Zqp.js.map +0 -1
- package/dist/components/GrPromptDialog/chunks/GrPromptDialog-C-_BMNuY.js.map +0 -1
- package/dist/components/GrRadio/chunks/GrRadio-Dr-pvs_9.js.map +0 -1
- package/dist/components/GrRadioGroup/chunks/GrRadioGroup-nOdvfV_g.js.map +0 -1
- package/dist/components/GrSegmented/chunks/GrSegmented-C1y0UXpQ.js.map +0 -1
- package/dist/components/GrSelect/chunks/GrSelect-BVCmitqa.js.map +0 -1
- package/dist/components/GrSidebar/chunks/GrSidebar-DkWozzwA.js.map +0 -1
- package/dist/components/GrSkeleton/chunks/GrSkeleton-DsN-_CDZ.js.map +0 -1
- package/dist/components/GrSwitch/chunks/GrSwitch-DAioyccZ.js.map +0 -1
- package/dist/components/GrTable/chunks/GrTable-Db3hRnKA.js.map +0 -1
- package/dist/components/GrTabs/chunks/GrTabs-DsLwWoRz.js.map +0 -1
- package/dist/components/GrTextarea/chunks/GrTextarea-CKukGlNl.js.map +0 -1
- package/dist/components/GrToaster/chunks/GrToaster-L2cu6cSR.js.map +0 -1
- package/dist/components/GrTooltip/chunks/GrTooltip-BeyZ8ssR.js.map +0 -1
- package/dist/components/GrTree/chunks/GrTree-B2_yW6g1.js.map +0 -1
- package/dist/components/GrTreeSelect/chunks/GrTreeSelect-0aM62xyu.js.map +0 -1
- package/dist/chunks/{config-8Pcutu1j2.js → config-8Pcutu1j.js} +0 -0
- package/dist/chunks/{config-BLHqZhy-2.js → config-BLHqZhy-.js} +0 -0
- package/dist/chunks/{config-BUHuGBik.js → config-BUHuGBik2.js} +0 -0
- package/dist/chunks/{config-BX1JTrkV2.js → config-BX1JTrkV.js} +0 -0
- package/dist/chunks/{config-BXtAmU3s2.js → config-BXtAmU3s.js} +0 -0
- package/dist/chunks/{config-CGHLoBlH.js → config-CGHLoBlH2.js} +0 -0
- package/dist/chunks/{config-Cpi9Mh2J.js → config-Dqy0rPPO2.js} +1 -1
- /package/dist/chunks/{config-JpHA4Xx02.js → config-JpHA4Xx0.js} +0 -0
- /package/dist/chunks/{config-QaIc_gRa.js → config-QaIc_gRa2.js} +0 -0
- /package/dist/chunks/{config-U4m9PSql.js → config-U4m9PSql2.js} +0 -0
- /package/dist/chunks/{config-eXB87DOi2.js → config-eXB87DOi.js} +0 -0
- /package/dist/chunks/{config-ipvU0lzP2.js → config-ipvU0lzP.js} +0 -0
- /package/dist/chunks/{config-xR4XVmcy.js → config-xR4XVmcy2.js} +0 -0
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
import { t as grAlertConfig } from "./config-BNu8lFQB.js";
|
|
2
|
-
import { t as grAvatarConfig } from "./config-QYGvEBu5.js";
|
|
3
|
-
import { t as grBadgeConfig } from "./config-jBp9wVv-.js";
|
|
4
|
-
import { t as grBadgeWrapConfig } from "./config-Dxuwwepq.js";
|
|
5
|
-
import { t as grBottomNavConfig } from "./config-C9AcVDkv.js";
|
|
6
|
-
import { t as grButtonConfig } from "./config-C4snOIXg.js";
|
|
7
|
-
import { t as grButtonGroupConfig } from "./config-DBmdgoVf.js";
|
|
8
|
-
import { t as grCardConfig } from "./config-CThzliFi.js";
|
|
9
|
-
import { t as grCheckboxConfig } from "./config-DICOd-2X.js";
|
|
10
|
-
import { t as grIconConfig } from "./config-BEegFP74.js";
|
|
11
|
-
import { t as grCollapseConfig } from "./config-xR4XVmcy.js";
|
|
12
|
-
import { t as grConfirmDialogConfig } from "./config-BXtAmU3s2.js";
|
|
13
|
-
import { t as grDataTableConfig } from "./config-U4m9PSql.js";
|
|
14
|
-
import { t as grDialogSafelist } from "./safelist-CkF4v7DC.js";
|
|
15
|
-
import { t as grDialogServiceConfig } from "./config-BX1JTrkV2.js";
|
|
16
|
-
import { t as grDividerConfig } from "./config-BWiPnygb.js";
|
|
17
|
-
import { t as grDrawerConfig } from "./config-DUcu1D682.js";
|
|
18
|
-
import { t as grDropdownConfig } from "./config-C49QUoJL.js";
|
|
19
|
-
import { t as grDropdownMenuConfig } from "./config-Cb2PAlSD.js";
|
|
20
|
-
import { t as grEmptyStateConfig } from "./config-Bah4oHwL.js";
|
|
21
|
-
import { t as grFileUploadConfig } from "./config-BWGGp7uV.js";
|
|
22
|
-
import { t as grFormFieldConfig } from "./config-PFg39mYo.js";
|
|
23
|
-
import { t as grFormFileConfig } from "./config-D7GZO-Dx.js";
|
|
24
|
-
import { t as grFormSectionConfig } from "./config-B0qIpo8m.js";
|
|
25
|
-
import { t as grImageViewerConfig } from "./config-HZto2PVy.js";
|
|
26
|
-
import { t as grInputConfig } from "./config-D_R56_gT.js";
|
|
27
|
-
import { t as grInputTagConfig } from "./config-ClhKPJvg.js";
|
|
28
|
-
import { t as grKbdConfig } from "./config-Dlm49Jp5.js";
|
|
29
|
-
import { t as grLinkConfig } from "./config-BOlr7qw7.js";
|
|
30
|
-
import { t as grListConfig } from "./config-C86UzUYf.js";
|
|
31
|
-
import { t as grLoadingConfig } from "./config-Cpi9Mh2J.js";
|
|
32
|
-
import { t as grModalConfig } from "./config-CziwTDDL.js";
|
|
33
|
-
import { t as grNavbarConfig } from "./config-ZiXWIRBX.js";
|
|
34
|
-
import { t as grNumberInputConfig } from "./config-C7NpDrfO.js";
|
|
35
|
-
import { t as grPaginationConfig } from "./config-JpHA4Xx02.js";
|
|
36
|
-
import { t as grProgressBarConfig } from "./config-DnvPqu4g2.js";
|
|
37
|
-
import { t as grPromptDialogConfig } from "./config-BUHuGBik.js";
|
|
38
|
-
import { t as grRadioConfig } from "./config-CrG1XiE72.js";
|
|
39
|
-
import { t as grRadioGroupConfig } from "./config-QaIc_gRa.js";
|
|
40
|
-
import { t as grSegmentedConfig } from "./config-eYLZYOUS2.js";
|
|
41
|
-
import { t as grSelectConfig } from "./config-B7IIWGt_2.js";
|
|
42
|
-
import { t as grSidebarConfig } from "./config-CGHLoBlH.js";
|
|
43
|
-
import { t as grSkeletonConfig } from "./config-8Pcutu1j2.js";
|
|
44
|
-
import { t as grSwitchConfig } from "./config-DezDih8_.js";
|
|
45
|
-
import { t as grTableConfig } from "./config-ipvU0lzP2.js";
|
|
46
|
-
import { t as grTabPanelsConfig } from "./config-eXB87DOi2.js";
|
|
47
|
-
import { t as grTabsConfig } from "./config-BLHqZhy-2.js";
|
|
48
|
-
import { t as grTextareaConfig } from "./config-1uSYl98Y2.js";
|
|
49
|
-
import { t as grToasterConfig } from "./config-LGrZIdaZ.js";
|
|
50
|
-
import { t as grTooltipConfig } from "./config-JOtB4mzs.js";
|
|
51
|
-
import { t as grTreeConfig } from "./config-DpqOnJiz.js";
|
|
52
|
-
import { t as grTreeSelectConfig } from "./config-BIRO0vDJ.js";
|
|
53
|
-
import { defineGranularComponent, defineGranularProvider } from "@feugene/unocss-preset-granular/contract";
|
|
54
|
-
//#region src/components/GrDialog/config.ts
|
|
55
|
-
var grDialogConfig = defineGranularComponent(import.meta.url, {
|
|
56
|
-
name: "GrDialog",
|
|
57
|
-
dependencies: ["GrButton", "GrModal"],
|
|
58
|
-
safelist: grDialogSafelist
|
|
59
|
-
});
|
|
60
|
-
//#endregion
|
|
61
|
-
//#region src/components/GrResponseErrorBanner/config.ts
|
|
62
|
-
var grResponseErrorBannerConfig = defineGranularComponent(import.meta.url, {
|
|
63
|
-
name: "GrResponseErrorBanner",
|
|
64
|
-
dependencies: ["GrAlert", "GrButton"]
|
|
65
|
-
});
|
|
66
|
-
//#endregion
|
|
67
|
-
//#region src/granular-provider/shared.ts
|
|
68
|
-
/** Идентификатор провайдера — совпадает с именем пакета. */
|
|
69
|
-
var GRANULARITY_PROVIDER_ID = "@feugene/granularity";
|
|
70
|
-
var packageBaseUrl = `${import.meta.url.slice(0, import.meta.url.lastIndexOf("/", import.meta.url.lastIndexOf("/") - 1) + 1)}`;
|
|
71
|
-
/** Встроенные темы пакета. Единственный источник правды о списке тем. */
|
|
72
|
-
var granularityThemeNames = ["light", "dark"];
|
|
73
|
-
/** Темы, активные по умолчанию, если окружение не переопределяет выбор. */
|
|
74
|
-
var granularityDefaultThemes = ["light"];
|
|
75
|
-
var theme = {
|
|
76
|
-
baseCssUrl: new URL("data:text/css;base64,LyoKICogR1It0LHQsNC30L7QstGL0Lkg0YHQu9C+0LkuCiAqCiAqINCT0LvQvtCx0LDQu9GM0L3Ri9C5INGB0LHRgNC+0YEg0YHRgtGA0LDQvdC40YbRiyAoYGJvZHlgLCBgYm94LXNpemluZ2ApINC/0YDQvtC00YPQsdC70LjRgNC+0LLQsNC9INC40LcKICogYHByZWZsaWdodC5jc3NgINCd0JDQn9Cg0K/QnNCj0K4gKNCwINC90LUg0YfQtdGA0LXQtyBgQGltcG9ydGApLiDQn9GA0LjRh9C40L3QsDogZ3JhbnVsYXItcHJvdmlkZXIKICog0LLRgdGC0YDQsNC40LLQsNC10YIg0YHQvtC00LXRgNC20LjQvNC+0LUgYGJhc2UuY3NzYCDQutCw0LogYmFzZTY0IGBkYXRhOmAtVVJMINC90LAg0Y3RgtCw0L/QtSDRgdCx0L7RgNC60Lgg0L/QsNC60LXRgtCwCiAqINC4INC+0YLQtNCw0ZHRgiDQtdCz0L4g0LIgVW5vQ1NTINC60LDQuiBwcmVmbGlnaHQt0YHRgtGA0L7QutGDLiDQktC70L7QttC10L3QvdGL0LkgYEBpbXBvcnRgINCyINGC0LDQutC+0Lkg0YHRgtGA0L7QutC1CiAqICjQsCkg0L3QtSDRgNC10LfQvtC70LLQuNGC0YHRjyAo0L7RgtC90L7RgdC40YLQtdC70YzQvdGL0Lkg0L/Rg9GC0Ywg0LLQvdGD0YLRgNC4IGRhdGEtVVJMKSDQuCAo0LEpINC+0LrQsNC30YvQstCw0LXRgtGB0Y8g0J3QlSDQsgogKiDQvdCw0YfQsNC70LUg0YTQuNC90LDQu9GM0L3QvtCz0L4gQ1NTIOKGkiBQb3N0Q1NTINC/0LDQtNCw0LXRgjogwqtAaW1wb3J0IG11c3QgcHJlY2VkZSBhbGwgb3RoZXIKICogc3RhdGVtZW50c8K7LiDQn9C+0Y3RgtC+0LzRgyByZXNldCDQuNC90LvQsNC50L3QuNGC0YHRjyDRgdGO0LTQsC4gYHByZWZsaWdodC5jc3NgINC+0YHRgtCw0ZHRgtGB0Y8g0L7RgtC00LXQu9GM0L3Ri9C8CiAqINC/0YPQsdC70LjRh9C90YvQvCDRhNCw0LnQu9C+0LwgKGAuL3N0eWxlcy9wcmVmbGlnaHQuY3NzYCkg0LTQu9GPIHN0YW5kYWxvbmUt0L/QvtGC0YDQtdCx0LjRgtC10LvQtdC5IOKAlAogKiDQtNC10YDQttC40YLQtSDQvtCx0LAg0LHQu9C+0LrQsCDRgdC40L3RhdGA0L7QvdC90YvQvNC4LgogKgogKiDQn9C+0YLRgNC10LHQuNGC0LXQu9GMLCDQutC+0YLQvtGA0L7QvNGDINCz0LvQvtCx0LDQu9GM0L3Ri9C1INGB0LDQudC0LdGN0YTRhNC10LrRgtGLINC90LUg0L3Rg9C20L3Riywg0LzQvtC20LXRgiDQv9C+0LTQutC70Y7Rh9C40YLRjAogKiBgdG9rZW5zLmNzc2AgKyDRgtC10LzRgyDQuCDQv9GA0L7Qv9GD0YHRgtC40YLRjCBgYmFzZS5jc3NgL2BwcmVmbGlnaHQuY3NzYC4KICoKICog0J3QuNC20LUsINC/0L7QvNC40LzQviByZXNldCwg4oCUINC90LjQt9C60L7RgdC/0LXRhtC40YTQuNGH0L3Ri9C1IChgOndoZXJlKClgKSDQtNC10YTQvtC70YLRiyDRgdCw0LzQvtC5IEdSLCDQutC+0YLQvtGA0YvQtQogKiDQsdC10LfQvtC/0LDRgdC90L4g0L3QsNC60LvQsNC00YvQstCw0Y7RgtGB0Y8g0L3QsCDQv9GA0LjQu9C+0LbQtdC90LjQtSDQuCDQu9C10LPQutC+INC/0LXRgNC10L7Qv9GA0LXQtNC10LvRj9GO0YLRgdGPLgogKi8KCi8qIC0tLSByZXNldCAo0YHQuNC90YXRgNC+0L3QuNC30LjRgNC+0LLQsNC90L4g0YEgcHJlZmxpZ2h0LmNzcykgLS0tICovCmh0bWwsCmJvZHkgewogICAgaGVpZ2h0OiAxMDAlOwp9Cgpib2R5IHsKICAgIG1hcmdpbjogMDsKICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1nci1mb250LXVpKTsKICAgIGJhY2tncm91bmQ6IHZhcigtLWJnKTsKICAgIGNvbG9yOiB2YXIoLS1mZyk7Cn0KCiogewogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoKLyoKICogVW5vQ1NTIHRhaWx3aW5kLWNvbXBhdCByZXNldCBpbnRlbnRpb25hbGx5IGRvZXMgbm90IGZvcmNlIGBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudGAgZm9yIGJ1dHRvbnMKICogKHRvIGF2b2lkIGJyZWFraW5nIGNvbXBvbmVudCBsaWJyYXJpZXMpLiBJbiBvdXIgR1Igd2Ugd2FudCBwbGFpbiBidXR0b25zL2xpbmtzIHRvIGJlIHRyYW5zcGFyZW50IGJ5IGRlZmF1bHQuCiAqLwo6d2hlcmUoYSwgYnV0dG9uKSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKOndoZXJlKGlucHV0W3R5cGU9J2J1dHRvbiddLCBpbnB1dFt0eXBlPSdzdWJtaXQnXSwgaW5wdXRbdHlwZT0ncmVzZXQnXSkgewogICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCmNvZGUsCnByZSwKa2JkIHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1nci1mb250LW1vbm8pOwp9Cg==", "" + import.meta.url).href,
|
|
77
|
-
tokensCssUrl: new URL("data:text/css;base64,OnJvb3QgewogIC8qIEZvdW5kYXRpb25zOiBuZXV0cmFsIHBhbGV0dGUgKi8KICAtLWdyLXNsYXRlLTA6ICNmZmZmZmY7CiAgLS1nci1zbGF0ZS01MDogI2Y4ZmFmYzsKICAtLWdyLXNsYXRlLTEwMDogI2YxZjVmOTsKICAtLWdyLXNsYXRlLTIwMDogI2UyZThmMDsKICAtLWdyLXNsYXRlLTMwMDogI2NiZDVlMTsKICAtLWdyLXNsYXRlLTQwMDogIzk0YTNiODsKICAtLWdyLXNsYXRlLTUwMDogIzY0NzQ4YjsKICAtLWdyLXNsYXRlLTYwMDogIzQ3NTU2OTsKICAtLWdyLXNsYXRlLTcwMDogIzMzNDE1NTsKICAtLWdyLXNsYXRlLTgwMDogIzFlMjkzYjsKICAtLWdyLXNsYXRlLTkwMDogIzBmMTcyYTsKCiAgLyogVHlwb2dyYXBoeTogZm9udCBmYW1pbGllcyAqLwogIC0tZ3ItZm9udC11aTogSW50ZXIsIFJvYm90bywgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgLS1nci1mb250LW1vbm86ICdKZXRCcmFpbnMgTW9ubycsIHVpLW1vbm9zcGFjZSwgU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAnTGliZXJhdGlvbiBNb25vJywgbW9ub3NwYWNlOwoKICAvKiBUeXBvZ3JhcGh5OiBmb250IHNpemVzICovCiAgLS1nci10ZXh0LXhzOiAxMnB4OwogIC0tZ3ItdGV4dC1zbTogMTRweDsKICAtLWdyLXRleHQtYmFzZTogMTZweDsKICAtLWdyLXRleHQtbGc6IDE4cHg7CiAgLS1nci10ZXh0LXhsOiAyMHB4OwogIC0tZ3ItdGV4dC0yeGw6IDI0cHg7CiAgLS1nci10ZXh0LTN4bDogMzBweDsKICAtLWdyLXRleHQtNHhsOiAzNnB4OwoKICAvKiBUeXBvZ3JhcGh5OiBsaW5lIGhlaWdodHMgKi8KICAtLWdyLWxlYWRpbmctdGlnaHQ6IDEuMjU7CiAgLS1nci1sZWFkaW5nLW5vcm1hbDogMS41OwogIC0tZ3ItbGVhZGluZy1yZWxheGVkOiAxLjYyNTsKCiAgLyogVHlwb2dyYXBoeTogZm9udCB3ZWlnaHRzICovCiAgLS1nci1mb250LXJlZ3VsYXI6IDQwMDsKICAtLWdyLWZvbnQtbWVkaXVtOiA1MDA7CiAgLS1nci1mb250LXNlbWlib2xkOiA2MDA7CiAgLS1nci1mb250LWJvbGQ6IDcwMDsKCiAgLyogTGF5b3V0OiBzcGFjaW5nIHNjYWxlICovCiAgLS1nci1zcGFjZS0wOiAwcHg7CiAgLS1nci1zcGFjZS0xOiA0cHg7CiAgLS1nci1zcGFjZS0yOiA4cHg7CiAgLS1nci1zcGFjZS0zOiAxMnB4OwogIC0tZ3Itc3BhY2UtNDogMTZweDsKICAtLWdyLXNwYWNlLTU6IDIwcHg7CiAgLS1nci1zcGFjZS02OiAyNHB4OwogIC0tZ3Itc3BhY2UtODogMzJweDsKICAtLWdyLXNwYWNlLTEwOiA0MHB4OwogIC0tZ3Itc3BhY2UtMTI6IDQ4cHg7CiAgLS1nci1zcGFjZS0xNjogNjRweDsKICAtLWdyLXNwYWNlLTIwOiA4MHB4OwogIC0tZ3Itc3BhY2UtMjQ6IDk2cHg7CiAgLS1nci1zcGFjZS0zMjogMTI4cHg7CiAgLS1nci1zcGFjZS00MDogMTYwcHg7CiAgLS1nci1zcGFjZS00ODogMTkycHg7CiAgLS1nci1zcGFjZS02NDogMjU2cHg7CgogIC8qIExheW91dDogY29udGFpbmVycyAqLwogIC0tZ3ItY29udGFpbmVyLW1heDogMTI4MHB4OwogIC0tZ3ItY29udGFpbmVyLW1heC0yeGw6IDE0NDBweDsKICAtLWdyLWNvbnRhaW5lci1wYWRkaW5nLW1vYmlsZTogMTZweDsKICAtLWdyLWNvbnRhaW5lci1wYWRkaW5nLXRhYmxldDogMjRweDsKICAtLWdyLWNvbnRhaW5lci1wYWRkaW5nLWRlc2t0b3A6IDMycHg7CgogIC8qIExheW91dDogYnJlYWtwb2ludHMgKi8KICAtLWdyLWJwLXNtOiA2NDBweDsKICAtLWdyLWJwLW1kOiA3NjhweDsKICAtLWdyLWJwLWxnOiAxMDI0cHg7CiAgLS1nci1icC14bDogMTI4MHB4OwogIC0tZ3ItYnAtMnhsOiAxNTM2cHg7CgogIC8qIFNoYXBlczogcmFkaWkgYW5kIGNvbXBhdGliaWxpdHkgYWxpYXNlcyAqLwogIC0tcmFkaXVzOiAwLjVyZW07CiAgLS1nci1yYWRpdXMtbm9uZTogMHB4OwogIC0tZ3ItcmFkaXVzLXNtOiA0cHg7CiAgLS1nci1yYWRpdXMtbWQ6IDhweDsKICAtLWdyLXJhZGl1cy1sZzogMTJweDsKICAtLWdyLXJhZGl1cy14bDogMTZweDsKICAtLWdyLXJhZGl1cy1mdWxsOiA5OTk5cHg7CgogIC8qIEVsZXZhdGlvbiAqLwogIC0tZ3Itc2hhZG93LTA6IG5vbmU7CiAgLS1nci1zaGFkb3ctMTogMCAxcHggMnB4IHJnYmEoMTUsIDIzLCA0MiwgMC4wOCk7CiAgLS1nci1zaGFkb3ctMjogMCA4cHggMjRweCByZ2JhKDE1LCAyMywgNDIsIDAuMTQpOwogIC0tZ3Itc2hhZG93LTM6IDAgMTZweCA0OHB4IHJnYmEoMTUsIDIzLCA0MiwgMC4yMCk7CgogIC8qIE1vdGlvbiAqLwogIC0tZ3ItZHVyYXRpb24tZmFzdDogMTUwbXM7CiAgLS1nci1kdXJhdGlvbi1iYXNlOiAyMDBtczsKICAtLWdyLWR1cmF0aW9uLXNsb3c6IDMwMG1zOwogIC0tZ3ItZWFzZS1vdXQ6IGN1YmljLWJlemllcigwLjE2LCAxLCAwLjMsIDEpOwogIC0tZ3ItZWFzZS1pbjogY3ViaWMtYmV6aWVyKDAuNywgMCwgMC44NCwgMCk7CgogIC8qCiAgICogWi1pbmRleCBsYXllcmluZyBzY2FsZS4KICAgKgogICAqINCV0LTQuNC90YvQuSDQuNGB0YLQvtGH0L3QuNC6INC40YHRgtC40L3RiyDQtNC70Y8g0YHQu9C+0ZHQsiDQstGB0LXRhSDQutC+0LzQv9C+0L3QtdC90YLQvtCyLCDQuNGB0L/QvtC70YzQt9GD0Y7RidC40YUgYHBvc2l0aW9uOiBmaXhlZGAKICAgKiDQv9C+0LLQtdGA0YUg0L7RgdGC0LDQu9GM0L3QvtCz0L4g0LrQvtC90YLQtdC90YLQsC4g0J/RgNCw0LLQuNC70L46INGH0LXQvCDQstGL0YjQtSDQsiBVSS3RgdGC0LXQutC1INGB0LvQvtC5INC+0LHRj9C30LDQvSDQvtC60LDQt9Cw0YLRjNGB0Y8sCiAgICog0YLQtdC8INCx0L7Qu9GM0YjQtSDQt9C90LDRh9C10L3QuNC1LiBGbG9hdGluZy3Qv9Cw0L3QtdC70LggKGRyb3Bkb3duL3NlbGVjdC90cmVlLXNlbGVjdC90b29sdGlwKSDRgdGC0L7Rj9GCCiAgICog0L3QuNC20LUg0LzQvtC00LDQu9C+0LosINGH0YLQvtCx0Ysg0L/QvtC/0L7QstC10YAsINC+0YLQutGA0YvRgtGL0Lkg0JLQndCj0KLQoNCYINC80L7QtNCw0LvQutC4LCDQvdC1INC/0L7RgtC10YDRj9C70YHRjyDQv9C+0LQg0L3QtdC5LCDQvdC+CiAgICog0YHQsNC8INGN0YLQvtGCINC/0L7Qv9C+0LLQtdGAINC90LUg0L7QsdGP0LfQsNC9INC/0LXRgNC10LrRgNGL0LLQsNGC0Ywg0LzQvtC00LDQu9C60YMg0YHQvdCw0YDRg9C20Lgg4oCUINC30LAg0L/RgNC10LTQtdC70Ysg0YHQstC+0LXQs9C+INC00LXRgNC10LLQsAogICAqIGZsb2F0aW5nLdC60L7QvNC/0L7QvdC10L3RgtGLINC90LUg0LLRi9GF0L7QtNGP0YIg0L/QviDQv9C+0YHRgtGA0L7QtdC90LjRjiAodi1jbGljay1vdXRzaWRlL3BvcnRhbCDRgNGP0LTQvtC8INGBINGC0YDQuNCz0LPQtdGA0L7QvCkuCiAgICog0KLQvtGB0YLRiyDigJQg0LXQtNC40L3RgdGC0LLQtdC90L3Ri9C5INGB0LvQvtC5LCDQutC+0YLQvtGA0YvQuSDQvtCx0Y/Qt9Cw0L0g0LHRi9GC0Ywg0LLQuNC00LXQvSDQv9C+0LLQtdGA0YUg0LDQsdGB0L7Qu9GO0YLQvdC+INCy0YHQtdCz0L4sCiAgICog0LLQutC70Y7Rh9Cw0Y8g0L7RgtC60YDRi9GC0YvQtSDQvNC+0LTQsNC70LrQuCAo0Y3RgtC+INGD0LLQtdC00L7QvNC70LXQvdC40LUg0YPRgNC+0LLQvdGPINC/0YDQuNC70L7QttC10L3QuNGPKS4KICAgKi8KICAtLWdyLXotZHJvcGRvd246IDEwMDA7CiAgLS1nci16LXRvb2x0aXA6IDEwNTA7CiAgLS1nci16LW1vZGFsOiAxMTAwOwogIC0tZ3Itei10b2FzdDogMTIwMDsKCiAgLyogRGVyaXZlZCBpbnRlcmFjdGlvbiBmb3JtdWxhczogYWN0aW9uIHJvbGVzICovCiAgLS1wcmltYXJ5LWhvdmVyOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tcHJpbWFyeSkgOTIlLCB2YXIoLS1mZykpOwogIC0tcHJpbWFyeS1hY3RpdmU6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1wcmltYXJ5KSA4NCUsIHZhcigtLWZnKSk7CiAgLS1zZWNvbmRhcnktaG92ZXI6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1zZWNvbmRhcnkpIDkyJSwgdmFyKC0tZmcpKTsKICAtLXNlY29uZGFyeS1hY3RpdmU6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1zZWNvbmRhcnkpIDg0JSwgdmFyKC0tZmcpKTsKICAtLWJyZC1ob3ZlcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWJyZCkgNzAlLCB2YXIoLS1mZykpOwogIC0tYnJkLWFjdGl2ZTogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWJyZCkgNTUlLCB2YXIoLS1mZykpOwogIC0tZGVzdHJ1Y3RpdmUtaG92ZXI6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1kZXN0cnVjdGl2ZSkgOTIlLCB2YXIoLS1mZykpOwogIC0tZGVzdHJ1Y3RpdmUtYWN0aXZlOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tZGVzdHJ1Y3RpdmUpIDg0JSwgdmFyKC0tZmcpKTsKCiAgLyogRGVyaXZlZCBpbnRlcmFjdGlvbiBmb3JtdWxhczogc3RhdHVzIHJvbGVzICovCiAgLS1nci1zdWNjZXNzLWhvdmVyOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tZ3Itc3VjY2VzcykgOTIlLCB2YXIoLS1mZykpOwogIC0tZ3Itc3VjY2Vzcy1hY3RpdmU6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1nci1zdWNjZXNzKSA4NCUsIHZhcigtLWZnKSk7CiAgLS1nci13YXJuaW5nLWhvdmVyOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tZ3Itd2FybmluZykgOTIlLCB2YXIoLS1mZykpOwogIC0tZ3Itd2FybmluZy1hY3RpdmU6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1nci13YXJuaW5nKSA4NCUsIHZhcigtLWZnKSk7CiAgLS1nci1kYW5nZXItaG92ZXI6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1nci1kYW5nZXIpIDkyJSwgdmFyKC0tZmcpKTsKICAtLWdyLWRhbmdlci1hY3RpdmU6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1nci1kYW5nZXIpIDg0JSwgdmFyKC0tZmcpKTsKICAtLWdyLWluZm8taG92ZXI6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1nci1pbmZvKSA5MiUsIHZhcigtLWZnKSk7CiAgLS1nci1pbmZvLWFjdGl2ZTogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWdyLWluZm8pIDg0JSwgdmFyKC0tZmcpKTsKICAtLWdyLXNsYXRlLWhvdmVyOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tZ3Itc2xhdGUpIDkyJSwgdmFyKC0tZmcpKTsKICAtLWdyLXNsYXRlLWFjdGl2ZTogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWdyLXNsYXRlKSA4NCUsIHZhcigtLWZnKSk7CiAgLS1nci1henVyZS1ob3ZlcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWdyLWF6dXJlKSA5MiUsIHZhcigtLWZnKSk7CiAgLS1nci1henVyZS1hY3RpdmU6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1nci1henVyZSkgODQlLCB2YXIoLS1mZykpOwp9Cg==", "" + import.meta.url).href,
|
|
78
|
-
themes: {
|
|
79
|
-
light: new URL("data:text/css;base64,OnJvb3QgewogIC8qIFN1cmZhY2Ugcm9sZXMgKi8KICAtLWJnOiAjZjhmYWZjOwogIC0tZmc6ICMwZjE3MmE7CiAgLS1jYXJkOiAjZmZmZmZmOwogIC0tY2FyZC1mZzogIzBmMTcyYTsKICAtLXBvcG92ZXI6ICNmZmZmZmY7CiAgLS1wb3BvdmVyLWZnOiAjMGYxNzJhOwogIC0tbXV0ZWQ6ICNmMWY1Zjk7CiAgLS1tdXRlZC1mZzogIzY0NzQ4YjsKICAtLXNlY29uZGFyeTogI2UyZThmMDsKICAtLXNlY29uZGFyeS1mZzogIzFlMjkzYjsKICAtLWJyZDogI2UyZThmMDsKICAtLWlucHV0OiAjZTJlOGYwOwogIC0tcmluZzogIzYzNjZmMTsKCiAgLyogQWN0aW9uIHJvbGVzICovCiAgLS1wcmltYXJ5OiAjNGY0NmU1OwogIC0tcHJpbWFyeS1mZzogI2ZmZmZmZjsKICAtLWFjY2VudDogI2VlZjJmZjsKICAtLWFjY2VudC1mZzogIzM3MzBhMzsKICAtLWRlc3RydWN0aXZlOiAjZGMyNjI2OwogIC0tZGVzdHJ1Y3RpdmUtZmc6ICNmZmZmZmY7CgogIC8qIFN0YXR1cyByb2xlcyAqLwogIC0tZ3Itc3VjY2VzczogIzEwYjk4MTsKICAtLWdyLXN1Y2Nlc3MtbGlnaHQ6ICNkMWZhZTU7CiAgLS1nci1zdWNjZXNzLWZnOiAjZmZmZmZmOwogIC0tZ3Itc3VjY2Vzcy10ZXh0OiAjMDY1ZjQ2OwogIC0tZ3Itd2FybmluZzogI2Y5NzMxNjsKICAtLWdyLXdhcm5pbmctbGlnaHQ6ICNmZmVkZDU7CiAgLS1nci13YXJuaW5nLWZnOiAjZmZmZmZmOwogIC0tZ3Itd2FybmluZy10ZXh0OiAjN2MyZDEyOwogIC0tZ3ItZGFuZ2VyOiAjZGMyNjI2OwogIC0tZ3ItZGFuZ2VyLWxpZ2h0OiAjZmVlMmUyOwogIC0tZ3ItZGFuZ2VyLWZnOiAjZmZmZmZmOwogIC0tZ3ItZGFuZ2VyLXRleHQ6ICM5OTFiMWI7CiAgLS1nci1pbmZvOiAjNTg1MGVjOwogIC0tZ3ItaW5mby1saWdodDogI2UwZTdmZjsKICAtLWdyLWluZm8tZmc6ICNmZmZmZmY7CiAgLS1nci1pbmZvLXRleHQ6ICMzNzMwYTM7CiAgLS1nci1zbGF0ZTogIzQ3NTU2OTsKICAtLWdyLXNsYXRlLWxpZ2h0OiAjZTJlOGYwOwogIC0tZ3Itc2xhdGUtZmc6ICNmZmZmZmY7CiAgLS1nci1zbGF0ZS10ZXh0OiAjMzM0MTU1OwogIC0tZ3ItYXp1cmU6ICMwZWE1ZTk7CiAgLS1nci1henVyZS1saWdodDogI2UwZjJmZTsKICAtLWdyLWF6dXJlLWZnOiAjZmZmZmZmOwogIC0tZ3ItYXp1cmUtdGV4dDogIzA3NTk4NTsKCiAgLyogRGF0YSB2aXN1YWxpemF0aW9uIHJvbGVzICovCiAgLS1jaGFydC0xOiAjNGY0NmU1OwogIC0tY2hhcnQtMjogIzEwYjk4MTsKICAtLWNoYXJ0LTM6ICNmOTczMTY7CiAgLS1jaGFydC00OiAjNjM2NmYxOwogIC0tY2hhcnQtNTogIzhiNWNmNjsKCiAgLyogTmF2aWdhdGlvbiByb2xlcyAqLwogIC0tc2lkZWJhcjogI2ZmZmZmZjsKICAtLXNpZGViYXItZmc6ICMwZjE3MmE7CiAgLS1zaWRlYmFyLXByaW1hcnk6ICM0ZjQ2ZTU7CiAgLS1zaWRlYmFyLXByaW1hcnktZmc6ICNmZmZmZmY7CiAgLS1zaWRlYmFyLWFjY2VudDogI2YxZjVmOTsKICAtLXNpZGViYXItYWNjZW50LWZnOiAjMWUyOTNiOwogIC0tc2lkZWJhci1icmQ6ICNlMmU4ZjA7CiAgLS1zaWRlYmFyLXJpbmc6ICM2MzY2ZjE7Cn0KCkBzdXBwb3J0cyBub3QgKGNvbG9yOiBjb2xvci1taXgoaW4gc3JnYiwgIzAwMCA1MCUsICNmZmYpKSB7CiAgOnJvb3QgewogICAgLyogQWN0aW9uIHJvbGUgZmFsbGJhY2tzICovCiAgICAtLXByaW1hcnktaG92ZXI6ICM0YTQyZDY7CiAgICAtLXByaW1hcnktYWN0aXZlOiAjNDUzZWM3OwogICAgLS1zZWNvbmRhcnktaG92ZXI6ICNkMWQ3ZTA7CiAgICAtLXNlY29uZGFyeS1hY3RpdmU6ICNjMGM3ZDA7CiAgICAtLWJyZC1ob3ZlcjogI2EzYTliNTsKICAgIC0tYnJkLWFjdGl2ZTogIzgzOGE5NzsKICAgIC0tZGVzdHJ1Y3RpdmUtaG92ZXI6ICNjYzI1MjY7CiAgICAtLWRlc3RydWN0aXZlLWFjdGl2ZTogI2JiMjQyNzsKCiAgICAvKiBTdGF0dXMgcm9sZSBmYWxsYmFja3MgKi8KICAgIC0tZ3Itc3VjY2Vzcy1ob3ZlcjogIzEwYWM3YTsKICAgIC0tZ3Itc3VjY2Vzcy1hY3RpdmU6ICMxMDlmNzM7CiAgICAtLWdyLXdhcm5pbmctaG92ZXI6ICNlNjZjMTg7CiAgICAtLWdyLXdhcm5pbmctYWN0aXZlOiAjZDQ2NDE5OwogICAgLS1nci1kYW5nZXItaG92ZXI6ICNjYzI1MjY7CiAgICAtLWdyLWRhbmdlci1hY3RpdmU6ICNiYjI0Mjc7CiAgICAtLWdyLWluZm8taG92ZXI6ICM1YzYwZTE7CiAgICAtLWdyLWluZm8tYWN0aXZlOiAjNTY1OWQxOwogICAgLS1nci1zbGF0ZS1ob3ZlcjogIzQzNTA2MjsKICAgIC0tZ3Itc2xhdGUtYWN0aXZlOiAjM2Q0YTViOwogICAgLS1nci1henVyZS1ob3ZlcjogIzAyODRjNzsKICAgIC0tZ3ItYXp1cmUtYWN0aXZlOiAjMDM2OWExOwoKICAgIC8qIENvbXBvbmVudCBzZW1hbnRpYyBmYWxsYmFja3MgKi8KICAgIC8qLS1nci1jYXRlZ29yeS10cmVlLWJyYW5jaC1saW5lLWFjdGl2ZS1jb2xvcjogI2M0Y2RmNzsqLwogIH0KfQo=", "" + import.meta.url).href,
|
|
80
|
-
dark: new URL("data:text/css;base64,LyoKICog0KLRkdC80L3QsNGPINGC0LXQvNCwLiDQmtCw0L3QvtC9IOKAlCDQsNGC0YDQuNCx0YPRgiBgW2RhdGEtdGhlbWU9J2RhcmsnXWAg0L3QsCBgPGh0bWw+YCAo0LXQs9C+INGB0YLQsNCy0LjRggogKiBgdXNlVGhlbWVgL2Bpbml0VGhlbWVFYXJseWApLiDQodC10LvQtdC60YLQvtGA0YsgYC50aGVtZS1kYXJrYCDQuCBgLmRhcmtgIOKAlCBERVBSRUNBVEVELdCw0LvQuNCw0YHRiwogKiDQtNC70Y8g0L7QsdGA0LDRgtC90L7QuSDRgdC+0LLQvNC10YHRgtC40LzQvtGB0YLQuDsg0LIg0L3QvtCy0L7QvCDQutC+0LTQtSDQuNGB0L/QvtC70YzQt9GD0LnRgtC1IGBbZGF0YS10aGVtZV1gLgogKi8KW2RhdGEtdGhlbWU9J2RhcmsnXSwKLnRoZW1lLWRhcmssCi5kYXJrIHsKICAvKiBTdXJmYWNlIHJvbGVzICovCiAgLS1iZzogIzBmMTcyYTsKICAtLWZnOiAjZjhmYWZjOwogIC0tY2FyZDogIzFlMjkzYjsKICAtLWNhcmQtZmc6ICNmOGZhZmM7CiAgLS1wb3BvdmVyOiAjMWUyOTNiOwogIC0tcG9wb3Zlci1mZzogI2Y4ZmFmYzsKICAtLW11dGVkOiAjMzM0MTU1OwogIC0tbXV0ZWQtZmc6ICM5NGEzYjg7CiAgLS1zZWNvbmRhcnk6ICMzMzQxNTU7CiAgLS1zZWNvbmRhcnktZmc6ICNmMWY1Zjk7CiAgLS1icmQ6ICMzMzQxNTU7CiAgLS1pbnB1dDogIzMzNDE1NTsKICAtLXJpbmc6ICM4MThjZjg7CgogIC8qIEFjdGlvbiByb2xlcyAqLwogIC0tcHJpbWFyeTogIzYzNjZmMTsKICAtLXByaW1hcnktZmc6ICNmZmZmZmY7CiAgLS1hY2NlbnQ6ICMxZTFiNGI7CiAgLS1hY2NlbnQtZmc6ICNjN2QyZmU7CiAgLS1kZXN0cnVjdGl2ZTogI2VmNDQ0NDsKICAtLWRlc3RydWN0aXZlLWZnOiAjZmZmZmZmOwoKICAvKiBTdGF0dXMgcm9sZXMgKi8KICAtLWdyLXN1Y2Nlc3M6ICMzNGQzOTk7CiAgLS1nci1zdWNjZXNzLWxpZ2h0OiAjMDY0ZTNiOwogIC0tZ3Itc3VjY2Vzcy1mZzogIzBmMTcyYTsKICAtLWdyLXN1Y2Nlc3MtdGV4dDogIzZlZTdiNzsKICAtLWdyLXdhcm5pbmc6ICNmYjkyM2M7CiAgLS1nci13YXJuaW5nLWxpZ2h0OiAjN2MyZDEyOwogIC0tZ3Itd2FybmluZy1mZzogIzBmMTcyYTsKICAtLWdyLXdhcm5pbmctdGV4dDogI2ZkYmE3NDsKICAtLWdyLWRhbmdlcjogI2Y4NzE3MTsKICAtLWdyLWRhbmdlci1saWdodDogIzdmMWQxZDsKICAtLWdyLWRhbmdlci1mZzogIzBmMTcyYTsKICAtLWdyLWRhbmdlci10ZXh0OiAjZmNhNWE1OwogIC0tZ3ItaW5mbzogIzgxOGNmODsKICAtLWdyLWluZm8tbGlnaHQ6ICMzMTJlODE7CiAgLS1nci1pbmZvLWZnOiAjMGYxNzJhOwogIC0tZ3ItaW5mby10ZXh0OiAjYzdkMmZlOwogIC0tZ3Itc2xhdGU6ICM5NGEzYjg7CiAgLS1nci1zbGF0ZS1saWdodDogIzMzNDE1NTsKICAtLWdyLXNsYXRlLWZnOiAjMGYxNzJhOwogIC0tZ3Itc2xhdGUtdGV4dDogI2NiZDVlMTsKICAtLWdyLWF6dXJlOiAjMzhiZGY4OwogIC0tZ3ItYXp1cmUtbGlnaHQ6ICMwYzRhNmU7CiAgLS1nci1henVyZS1mZzogIzBmMTcyYTsKICAtLWdyLWF6dXJlLXRleHQ6ICNiYWU2ZmQ7CgogIC8qIERhdGEgdmlzdWFsaXphdGlvbiByb2xlcyAqLwogIC0tY2hhcnQtMTogIzYzNjZmMTsKICAtLWNoYXJ0LTI6ICMzNGQzOTk7CiAgLS1jaGFydC0zOiAjZmI5MjNjOwogIC0tY2hhcnQtNDogIzgxOGNmODsKICAtLWNoYXJ0LTU6ICNhNzhiZmE7CgogIC8qIE5hdmlnYXRpb24gcm9sZXMgKi8KICAtLXNpZGViYXI6ICMxZTI5M2I7CiAgLS1zaWRlYmFyLWZnOiAjZjhmYWZjOwogIC0tc2lkZWJhci1wcmltYXJ5OiAjNjM2NmYxOwogIC0tc2lkZWJhci1wcmltYXJ5LWZnOiAjZmZmZmZmOwogIC0tc2lkZWJhci1hY2NlbnQ6ICMzMzQxNTU7CiAgLS1zaWRlYmFyLWFjY2VudC1mZzogI2YxZjVmOTsKICAtLXNpZGViYXItYnJkOiAjMzM0MTU1OwogIC0tc2lkZWJhci1yaW5nOiAjODE4Y2Y4Owp9CgpAc3VwcG9ydHMgbm90IChjb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsICMwMDAgNTAlLCAjZmZmKSkgewogIC50aGVtZS1kYXJrLAogIC5kYXJrLAogIFtkYXRhLXRoZW1lPSdkYXJrJ10gewogICAgLyogQWN0aW9uIHJvbGUgZmFsbGJhY2tzICovCiAgICAtLXByaW1hcnktaG92ZXI6ICM2ZjcyZjI7CiAgICAtLXByaW1hcnktYWN0aXZlOiAjN2I3ZWYzOwogICAgLS1zZWNvbmRhcnktaG92ZXI6ICM0MzUwNjI7CiAgICAtLXNlY29uZGFyeS1hY3RpdmU6ICM1MzVmNzA7CiAgICAtLWJyZC1ob3ZlcjogIzZlNzk4NzsKICAgIC0tYnJkLWFjdGl2ZTogIzhjOTRhMDsKICAgIC0tZGVzdHJ1Y3RpdmUtaG92ZXI6ICNmMDUzNTM7CiAgICAtLWRlc3RydWN0aXZlLWFjdGl2ZTogI2YwNjE2MTsKCiAgICAvKiBTdGF0dXMgcm9sZSBmYWxsYmFja3MgKi8KICAgIC0tZ3Itc3VjY2Vzcy1ob3ZlcjogIzQ0ZDZhMTsKICAgIC0tZ3Itc3VjY2Vzcy1hY3RpdmU6ICM1M2Q5YTk7CiAgICAtLWdyLXdhcm5pbmctaG92ZXI6ICNmYjlhNGI7CiAgICAtLWdyLXdhcm5pbmctYWN0aXZlOiAjZmJhMzViOwogICAgLS1nci1kYW5nZXItaG92ZXI6ICNmODdjN2M7CiAgICAtLWdyLWRhbmdlci1hY3RpdmU6ICNmODg3ODc7CiAgICAtLWdyLWluZm8taG92ZXI6ICM4Yjk1Zjg7CiAgICAtLWdyLWluZm8tYWN0aXZlOiAjOTQ5ZWY5OwogICAgLS1nci1zbGF0ZS1ob3ZlcjogIzlmYWVjMDsKICAgIC0tZ3Itc2xhdGUtYWN0aXZlOiAjYWFiN2M4OwogICAgLS1nci1henVyZS1ob3ZlcjogIzRiYzNmOTsKICAgIC0tZ3ItYXp1cmUtYWN0aXZlOiAjNWRjYmY5OwoKICAgIC8qIENvbXBvbmVudCBzZW1hbnRpYyBmYWxsYmFja3MgKi8KICAgIC8qLS1nci1jYXRlZ29yeS10cmVlLWJyYW5jaC1saW5lLWFjdGl2ZS1jb2xvcjogIzUwNWI4YzsqLwogIH0KfQo=", "" + import.meta.url).href
|
|
81
|
-
},
|
|
82
|
-
defaultThemes: granularityDefaultThemes
|
|
83
|
-
};
|
|
84
|
-
/**
|
|
85
|
-
* Полный реестр публичных компонентов пакета `@feugene/granularity`.
|
|
86
|
-
*
|
|
87
|
-
* Ключи — имена компонентов (совпадают с публичным subpath‑экспортом
|
|
88
|
-
* `@feugene/granularity/components/<Name>`). Значения — browser‑safe
|
|
89
|
-
* `ds<Name>Config` из `./config.ts` рядом с SFC.
|
|
90
|
-
*
|
|
91
|
-
* Для компонентов, у которых есть node-only вариант конфига
|
|
92
|
-
* (например, `GrButton` с `tokenDefinitionsFromCssSync`), browser‑конфиг
|
|
93
|
-
* остаётся здесь, а node‑вариант подставляется снаружи через
|
|
94
|
-
* `createGranularityProvider(overrides)` — см. `./index.ts` (browser)
|
|
95
|
-
* и `./node.ts` (node).
|
|
96
|
-
*/
|
|
97
|
-
var granularityComponentConfigs = {
|
|
98
|
-
GrAlert: grAlertConfig,
|
|
99
|
-
GrAvatar: grAvatarConfig,
|
|
100
|
-
GrBadge: grBadgeConfig,
|
|
101
|
-
GrBadgeWrap: grBadgeWrapConfig,
|
|
102
|
-
GrBottomNav: grBottomNavConfig,
|
|
103
|
-
GrButton: grButtonConfig,
|
|
104
|
-
GrButtonGroup: grButtonGroupConfig,
|
|
105
|
-
GrCard: grCardConfig,
|
|
106
|
-
GrCheckbox: grCheckboxConfig,
|
|
107
|
-
GrCollapse: grCollapseConfig,
|
|
108
|
-
GrConfirmDialog: grConfirmDialogConfig,
|
|
109
|
-
GrDataTable: grDataTableConfig,
|
|
110
|
-
GrDialog: grDialogConfig,
|
|
111
|
-
GrDialogService: grDialogServiceConfig,
|
|
112
|
-
GrDivider: grDividerConfig,
|
|
113
|
-
GrDrawer: grDrawerConfig,
|
|
114
|
-
GrDropdown: grDropdownConfig,
|
|
115
|
-
GrDropdownMenu: grDropdownMenuConfig,
|
|
116
|
-
GrEmptyState: grEmptyStateConfig,
|
|
117
|
-
GrFileUpload: grFileUploadConfig,
|
|
118
|
-
GrFormField: grFormFieldConfig,
|
|
119
|
-
GrFormFile: grFormFileConfig,
|
|
120
|
-
GrFormSection: grFormSectionConfig,
|
|
121
|
-
GrIcon: grIconConfig,
|
|
122
|
-
GrImageViewer: grImageViewerConfig,
|
|
123
|
-
GrInput: grInputConfig,
|
|
124
|
-
GrInputTag: grInputTagConfig,
|
|
125
|
-
GrKbd: grKbdConfig,
|
|
126
|
-
GrLink: grLinkConfig,
|
|
127
|
-
GrList: grListConfig,
|
|
128
|
-
GrLoading: grLoadingConfig,
|
|
129
|
-
GrModal: grModalConfig,
|
|
130
|
-
GrNavbar: grNavbarConfig,
|
|
131
|
-
GrNumberInput: grNumberInputConfig,
|
|
132
|
-
GrPagination: grPaginationConfig,
|
|
133
|
-
GrProgressBar: grProgressBarConfig,
|
|
134
|
-
GrPromptDialog: grPromptDialogConfig,
|
|
135
|
-
GrRadio: grRadioConfig,
|
|
136
|
-
GrRadioGroup: grRadioGroupConfig,
|
|
137
|
-
GrResponseErrorBanner: grResponseErrorBannerConfig,
|
|
138
|
-
GrSegmented: grSegmentedConfig,
|
|
139
|
-
GrSelect: grSelectConfig,
|
|
140
|
-
GrSidebar: grSidebarConfig,
|
|
141
|
-
GrSkeleton: grSkeletonConfig,
|
|
142
|
-
GrSwitch: grSwitchConfig,
|
|
143
|
-
GrTable: grTableConfig,
|
|
144
|
-
GrTabPanels: grTabPanelsConfig,
|
|
145
|
-
GrTabs: grTabsConfig,
|
|
146
|
-
GrTextarea: grTextareaConfig,
|
|
147
|
-
GrToaster: grToasterConfig,
|
|
148
|
-
GrTooltip: grTooltipConfig,
|
|
149
|
-
GrTree: grTreeConfig,
|
|
150
|
-
GrTreeSelect: grTreeSelectConfig
|
|
151
|
-
};
|
|
152
|
-
/** Базовый (browser-safe) набор компонентов в порядке реестра. */
|
|
153
|
-
var baseComponents = Object.values(granularityComponentConfigs);
|
|
154
|
-
/**
|
|
155
|
-
* Собирает granular-provider пакета `@feugene/granularity`.
|
|
156
|
-
*
|
|
157
|
-
* Принимает массив `GranularComponentDescriptor`'ов — это компоненты,
|
|
158
|
-
* у которых есть node-only вариант конфига (например, `GrButton` с
|
|
159
|
-
* `tokenDefinitionsFromCssSync`). Дескрипторы с именем, которое уже
|
|
160
|
-
* присутствует в базовом наборе, переопределяют его (побеждает
|
|
161
|
-
* переданный снаружи), остальные — добавляются в конец списка.
|
|
162
|
-
*/
|
|
163
|
-
function createGranularityProvider(overrides = []) {
|
|
164
|
-
const overrideByName = new Map(overrides.map((component) => [component.name, component]));
|
|
165
|
-
return defineGranularProvider({
|
|
166
|
-
id: GRANULARITY_PROVIDER_ID,
|
|
167
|
-
contractVersion: 1,
|
|
168
|
-
packageBaseUrl,
|
|
169
|
-
components: [...baseComponents.map((component) => overrideByName.get(component.name) ?? component), ...overrides.filter((component) => !baseComponents.some((base) => base.name === component.name))],
|
|
170
|
-
theme
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
//#endregion
|
|
174
|
-
export { granularityThemeNames as a, granularityDefaultThemes as i, createGranularityProvider as n, granularityComponentConfigs as r, GRANULARITY_PROVIDER_ID as t };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shared-B6Ay2081.js","names":[],"sources":["../../src/components/GrDialog/config.ts","../../src/components/GrResponseErrorBanner/config.ts","../../src/granular-provider/shared.ts"],"sourcesContent":["import {defineGranularComponent} from '@feugene/unocss-preset-granular/contract'\n\nimport { grDialogSafelist } from './safelist'\n\nexport const grDialogConfig = defineGranularComponent(import.meta.url, {\n name: 'GrDialog',\n dependencies: ['GrButton', 'GrModal'],\n safelist: grDialogSafelist,\n})\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nexport const grResponseErrorBannerConfig = defineGranularComponent(import.meta.url, {\n name: 'GrResponseErrorBanner',\n dependencies: ['GrAlert', 'GrButton'],\n})\n","// Общий код browser- и node-entry granular-provider'а.\n//\n// Оба entry (`./index.ts`, `./node.ts`) отличаются только списком\n// компонентов, у которых есть node-only вариант конфига (например,\n// `GrButton`, чей `config.node.ts` использует `tokenDefinitionsFromCssSync`\n// и тянет `node:fs`). Browser-вариант таких компонентов берёт облегчённый\n// `./config.ts`, node-вариант — `./config.node.ts`. Всё остальное — `id`,\n// `theme.*`, `packageBaseUrl` и полный список browser-safe компонентов —\n// живёт здесь.\n//\n// ВАЖНО: все `new URL('../styles/...', import.meta.url)` намеренно находятся\n// здесь — `shared.ts` лежит в той же директории, что и `index.ts` / `node.ts`,\n// поэтому относительные пути идентичны. Это ОК для браузера: бандлеры\n// транслируют такие конструкции в статические asset-URL и `node:*` в бандл\n// не утаскивают.\n//\n// `apps/showcase/scripts/generate-component-api.mjs` берёт список компонентов из\n// `Object.keys(granularityComponentConfigs)` (импорт модуля через vite SSR),\n// поэтому спецформат строк реестра больше не является API — можно свободно рефакторить.\nimport {\n defineGranularProvider,\n type GranularComponentDescriptor,\n type GranularProvider,\n} from '@feugene/unocss-preset-granular/contract'\nimport { grAlertConfig } from '../components/GrAlert/config'\nimport { grAvatarConfig } from '../components/GrAvatar/config'\nimport { grBadgeConfig } from '../components/GrBadge/config'\nimport { grBadgeWrapConfig } from '../components/GrBadgeWrap/config'\nimport { grBottomNavConfig } from '../components/GrBottomNav/config'\nimport { grButtonConfig } from '../components/GrButton/config'\nimport { grButtonGroupConfig } from '../components/GrButtonGroup/config'\nimport { grCardConfig } from '../components/GrCard/config'\nimport { grCheckboxConfig } from '../components/GrCheckbox/config'\nimport { grCollapseConfig } from '../components/GrCollapse/config'\nimport { grConfirmDialogConfig } from '../components/GrConfirmDialog/config'\nimport { grDataTableConfig } from '../components/GrDataTable/config'\nimport { grDialogConfig } from '../components/GrDialog/config'\nimport { grDialogServiceConfig } from '../components/GrDialogService/config'\nimport { grDividerConfig } from '../components/GrDivider/config'\nimport { grDrawerConfig } from '../components/GrDrawer/config'\nimport { grDropdownConfig } from '../components/GrDropdown/config'\nimport { grDropdownMenuConfig } from '../components/GrDropdownMenu/config'\nimport { grEmptyStateConfig } from '../components/GrEmptyState/config'\nimport { grFileUploadConfig } from '../components/GrFileUpload/config'\nimport { grFormFieldConfig } from '../components/GrFormField/config'\nimport { grFormFileConfig } from '../components/GrFormFile/config'\nimport { grFormSectionConfig } from '../components/GrFormSection/config'\nimport { grIconConfig } from '../components/GrIcon/config'\nimport { grImageViewerConfig } from '../components/GrImageViewer/config'\nimport { grInputConfig } from '../components/GrInput/config'\nimport { grInputTagConfig } from '../components/GrInputTag/config'\nimport { grKbdConfig } from '../components/GrKbd/config'\nimport { grLinkConfig } from '../components/GrLink/config'\nimport { grListConfig } from '../components/GrList/config'\nimport { grLoadingConfig } from '../components/GrLoading/config'\nimport { grModalConfig } from '../components/GrModal/config'\nimport { grNavbarConfig } from '../components/GrNavbar/config'\nimport { grNumberInputConfig } from '../components/GrNumberInput/config'\nimport { grPaginationConfig } from '../components/GrPagination/config'\nimport { grProgressBarConfig } from '../components/GrProgressBar/config'\nimport { grPromptDialogConfig } from '../components/GrPromptDialog/config'\nimport { grRadioConfig } from '../components/GrRadio/config'\nimport { grRadioGroupConfig } from '../components/GrRadioGroup/config'\nimport { grResponseErrorBannerConfig } from '../components/GrResponseErrorBanner/config'\nimport { grSegmentedConfig } from '../components/GrSegmented/config'\nimport { grSelectConfig } from '../components/GrSelect/config'\nimport { grSidebarConfig } from '../components/GrSidebar/config'\nimport { grSkeletonConfig } from '../components/GrSkeleton/config'\nimport { grSwitchConfig } from '../components/GrSwitch/config'\nimport { grTableConfig } from '../components/GrTable/config'\nimport { grTabPanelsConfig } from '../components/GrTabPanels/config'\nimport { grTabsConfig } from '../components/GrTabs/config'\nimport { grTextareaConfig } from '../components/GrTextarea/config'\nimport { grToasterConfig } from '../components/GrToaster/config'\nimport { grTooltipConfig } from '../components/GrTooltip/config'\nimport { grTreeConfig } from '../components/GrTree/config'\nimport { grTreeSelectConfig } from '../components/GrTreeSelect/config'\n\n/** Идентификатор провайдера — совпадает с именем пакета. */\nexport const GRANULARITY_PROVIDER_ID = '@feugene/granularity'\n\n// runtime-concat: литерал `new URL('..', import.meta.url)` rolldown заменяет\n// на `data:`-URL, поэтому собираем корень пакета из `import.meta.url` вручную\n// (отрезая два последних сегмента: имя файла и каталог `granular-provider/`).\nconst packageBaseUrl = `${import.meta.url.slice(\n 0,\n import.meta.url.lastIndexOf('/', import.meta.url.lastIndexOf('/') - 1) + 1,\n)}`\n\n/** Встроенные темы пакета. Единственный источник правды о списке тем. */\nexport const granularityThemeNames = ['light', 'dark'] as const\nexport type GranularityThemeName = (typeof granularityThemeNames)[number]\n\n/** Темы, активные по умолчанию, если окружение не переопределяет выбор. */\nexport const granularityDefaultThemes: readonly GranularityThemeName[] = ['light']\n\nconst theme = {\n baseCssUrl: new URL('../styles/base.css', import.meta.url).href,\n tokensCssUrl: new URL('../styles/tokens.css', import.meta.url).href,\n themes: {\n light: new URL('../styles/themes/light.css', import.meta.url).href,\n dark: new URL('../styles/themes/dark.css', import.meta.url).href,\n },\n defaultThemes: granularityDefaultThemes,\n} as const\n\n/**\n * Полный реестр публичных компонентов пакета `@feugene/granularity`.\n *\n * Ключи — имена компонентов (совпадают с публичным subpath‑экспортом\n * `@feugene/granularity/components/<Name>`). Значения — browser‑safe\n * `ds<Name>Config` из `./config.ts` рядом с SFC.\n *\n * Для компонентов, у которых есть node-only вариант конфига\n * (например, `GrButton` с `tokenDefinitionsFromCssSync`), browser‑конфиг\n * остаётся здесь, а node‑вариант подставляется снаружи через\n * `createGranularityProvider(overrides)` — см. `./index.ts` (browser)\n * и `./node.ts` (node).\n */\nexport const granularityComponentConfigs = {\n GrAlert: grAlertConfig,\n GrAvatar: grAvatarConfig,\n GrBadge: grBadgeConfig,\n GrBadgeWrap: grBadgeWrapConfig,\n GrBottomNav: grBottomNavConfig,\n GrButton: grButtonConfig,\n GrButtonGroup: grButtonGroupConfig,\n GrCard: grCardConfig,\n GrCheckbox: grCheckboxConfig,\n GrCollapse: grCollapseConfig,\n GrConfirmDialog: grConfirmDialogConfig,\n GrDataTable: grDataTableConfig,\n GrDialog: grDialogConfig,\n GrDialogService: grDialogServiceConfig,\n GrDivider: grDividerConfig,\n GrDrawer: grDrawerConfig,\n GrDropdown: grDropdownConfig,\n GrDropdownMenu: grDropdownMenuConfig,\n GrEmptyState: grEmptyStateConfig,\n GrFileUpload: grFileUploadConfig,\n GrFormField: grFormFieldConfig,\n GrFormFile: grFormFileConfig,\n GrFormSection: grFormSectionConfig,\n GrIcon: grIconConfig,\n GrImageViewer: grImageViewerConfig,\n GrInput: grInputConfig,\n GrInputTag: grInputTagConfig,\n GrKbd: grKbdConfig,\n GrLink: grLinkConfig,\n GrList: grListConfig,\n GrLoading: grLoadingConfig,\n GrModal: grModalConfig,\n GrNavbar: grNavbarConfig,\n GrNumberInput: grNumberInputConfig,\n GrPagination: grPaginationConfig,\n GrProgressBar: grProgressBarConfig,\n GrPromptDialog: grPromptDialogConfig,\n GrRadio: grRadioConfig,\n GrRadioGroup: grRadioGroupConfig,\n GrResponseErrorBanner: grResponseErrorBannerConfig,\n GrSegmented: grSegmentedConfig,\n GrSelect: grSelectConfig,\n GrSidebar: grSidebarConfig,\n GrSkeleton: grSkeletonConfig,\n GrSwitch: grSwitchConfig,\n GrTable: grTableConfig,\n GrTabPanels: grTabPanelsConfig,\n GrTabs: grTabsConfig,\n GrTextarea: grTextareaConfig,\n GrToaster: grToasterConfig,\n GrTooltip: grTooltipConfig,\n GrTree: grTreeConfig,\n GrTreeSelect: grTreeSelectConfig,\n}\n\nexport type GranularityComponentName = keyof typeof granularityComponentConfigs\n\n/** Базовый (browser-safe) набор компонентов в порядке реестра. */\nconst baseComponents: readonly GranularComponentDescriptor[] = Object.values(\n granularityComponentConfigs,\n)\n\n/**\n * Собирает granular-provider пакета `@feugene/granularity`.\n *\n * Принимает массив `GranularComponentDescriptor`'ов — это компоненты,\n * у которых есть node-only вариант конфига (например, `GrButton` с\n * `tokenDefinitionsFromCssSync`). Дескрипторы с именем, которое уже\n * присутствует в базовом наборе, переопределяют его (побеждает\n * переданный снаружи), остальные — добавляются в конец списка.\n */\nexport function createGranularityProvider(\n overrides: readonly GranularComponentDescriptor[] = [],\n): GranularProvider {\n const overrideByName = new Map(\n overrides.map(component => [component.name, component]),\n )\n const components: GranularComponentDescriptor[] = [\n ...baseComponents.map(component => overrideByName.get(component.name) ?? component),\n ...overrides.filter(component => !baseComponents.some(base => base.name === component.name)),\n ]\n\n return defineGranularProvider({\n id: GRANULARITY_PROVIDER_ID,\n contractVersion: 1,\n packageBaseUrl,\n components,\n theme,\n })\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAa,iBAAiB,wBAAwB,OAAO,KAAK,KAAK;CACrE,MAAM;CACN,cAAc,CAAC,YAAY,SAAS;CACpC,UAAU;AACZ,CAAC;;;ACND,IAAa,8BAA8B,wBAAwB,OAAO,KAAK,KAAK;CAClF,MAAM;CACN,cAAc,CAAC,WAAW,UAAU;AACtC,CAAC;;;;AC0ED,IAAa,0BAA0B;AAKvC,IAAM,iBAAiB,GAAG,OAAO,KAAK,IAAI,MACxC,GACA,OAAO,KAAK,IAAI,YAAY,KAAK,OAAO,KAAK,IAAI,YAAY,GAAG,IAAI,CAAC,IAAI,CAC3E;;AAGA,IAAa,wBAAwB,CAAC,SAAS,MAAM;;AAIrD,IAAa,2BAA4D,CAAC,OAAO;AAEjF,IAAM,QAAQ;CACZ,YAAY,IAAA,IAAA,64FAAA,KAAA,OAAA,KAAA,GAAA,CAA8C,CAAC;CAC3D,cAAc,IAAA,IAAA,y2NAAA,KAAA,OAAA,KAAA,GAAA,CAAgD,CAAC;CAC/D,QAAQ;EACN,OAAO,IAAA,IAAA,qrGAAA,KAAA,OAAA,KAAA,GAAA,CAAsD,CAAC;EAC9D,MAAM,IAAA,IAAA,6tHAAA,KAAA,OAAA,KAAA,GAAA,CAAqD,CAAC;CAC9D;CACA,eAAe;AACjB;;;;;;;;;;;;;;AAeA,IAAa,8BAA8B;CACzC,SAAS;CACT,UAAU;CACV,SAAS;CACT,aAAa;CACb,aAAa;CACb,UAAU;CACV,eAAe;CACf,QAAQ;CACR,YAAY;CACZ,YAAY;CACZ,iBAAiB;CACjB,aAAa;CACb,UAAU;CACV,iBAAiB;CACjB,WAAW;CACX,UAAU;CACV,YAAY;CACZ,gBAAgB;CAChB,cAAc;CACd,cAAc;CACd,aAAa;CACb,YAAY;CACZ,eAAe;CACf,QAAQ;CACR,eAAe;CACf,SAAS;CACT,YAAY;CACZ,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,WAAW;CACX,SAAS;CACT,UAAU;CACV,eAAe;CACf,cAAc;CACd,eAAe;CACf,gBAAgB;CAChB,SAAS;CACT,cAAc;CACd,uBAAuB;CACvB,aAAa;CACb,UAAU;CACV,WAAW;CACX,YAAY;CACZ,UAAU;CACV,SAAS;CACT,aAAa;CACb,QAAQ;CACR,YAAY;CACZ,WAAW;CACX,WAAW;CACX,QAAQ;CACR,cAAc;AAChB;;AAKA,IAAM,iBAAyD,OAAO,OACpE,2BACF;;;;;;;;;;AAWA,SAAgB,0BACd,YAAoD,CAAC,GACnC;CAClB,MAAM,iBAAiB,IAAI,IACzB,UAAU,KAAI,cAAa,CAAC,UAAU,MAAM,SAAS,CAAC,CACxD;CAMA,OAAO,uBAAuB;EAC5B,IAAI;EACJ,iBAAiB;EACjB;EACA,aARA,GAAG,eAAe,KAAI,cAAa,eAAe,IAAI,UAAU,IAAI,KAAK,SAAS,GAClF,GAAG,UAAU,QAAO,cAAa,CAAC,eAAe,MAAK,SAAQ,KAAK,SAAS,UAAU,IAAI,CAAC,CAO3F;EACA;CACF,CAAC;AACH"}
|
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
import { n as check_circle_default, r as alert_triangle_default, t as x_circle_default } from "../../../chunks/x-circle-BCBURwyX.js";
|
|
2
|
-
import { t as info_default } from "../../../chunks/info-Be2OccTu.js";
|
|
3
|
-
import { t as x_default } from "../../../chunks/x-2KXnqxiD.js";
|
|
4
|
-
import { t as useGranularityTranslations } from "../../../chunks/granularityI18n-DoV7Ca2m.js";
|
|
5
|
-
import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, normalizeStyle, openBlock, renderSlot, resolveDynamicComponent, toDisplayString, unref } from "vue";
|
|
6
|
-
//#region src/components/GrAlert/GrAlert.vue?vue&type=script&setup=true&lang.ts
|
|
7
|
-
var _hoisted_1 = { class: "flex items-start gap-3" };
|
|
8
|
-
var _hoisted_2 = { class: "min-w-0 flex-1" };
|
|
9
|
-
var _hoisted_3 = {
|
|
10
|
-
key: 0,
|
|
11
|
-
class: "text-[14px] font-700 text-[var(--gr-alert-title-color)]"
|
|
12
|
-
};
|
|
13
|
-
var _hoisted_4 = { class: "mt-0.5 text-[13px] text-[var(--gr-alert-text-color)]" };
|
|
14
|
-
var _hoisted_5 = ["aria-label"];
|
|
15
|
-
var WARNING_LIGHT_TEXT_COLOR = "#92400e";
|
|
16
|
-
//#endregion
|
|
17
|
-
//#region src/components/GrAlert/GrAlert.vue
|
|
18
|
-
var GrAlert_default = /* @__PURE__ */ defineComponent({
|
|
19
|
-
__name: "GrAlert",
|
|
20
|
-
props: {
|
|
21
|
-
tone: { default: "info" },
|
|
22
|
-
variant: { default: "soft" },
|
|
23
|
-
title: { default: void 0 },
|
|
24
|
-
closable: {
|
|
25
|
-
type: Boolean,
|
|
26
|
-
default: false
|
|
27
|
-
},
|
|
28
|
-
backgroundColor: { default: void 0 },
|
|
29
|
-
textColor: { default: void 0 },
|
|
30
|
-
borderColor: { default: void 0 }
|
|
31
|
-
},
|
|
32
|
-
emits: ["close"],
|
|
33
|
-
setup(__props, { emit: __emit }) {
|
|
34
|
-
const DEFAULT_TEXT_COLORS = {
|
|
35
|
-
title: "var(--fg)",
|
|
36
|
-
text: "var(--muted-fg)",
|
|
37
|
-
close: "var(--muted-fg)",
|
|
38
|
-
closeHover: "var(--fg)"
|
|
39
|
-
};
|
|
40
|
-
const emit = __emit;
|
|
41
|
-
const props = __props;
|
|
42
|
-
const { t } = useGranularityTranslations();
|
|
43
|
-
const getCustomColor = (value) => value?.trim() || void 0;
|
|
44
|
-
const SOFT_TONE_STYLES = {
|
|
45
|
-
primary: {
|
|
46
|
-
bg: "var(--accent)",
|
|
47
|
-
border: "color-mix(in srgb, var(--primary) 22%, var(--brd))",
|
|
48
|
-
icon: "var(--primary)",
|
|
49
|
-
...DEFAULT_TEXT_COLORS,
|
|
50
|
-
Icon: info_default
|
|
51
|
-
},
|
|
52
|
-
neutral: {
|
|
53
|
-
bg: "var(--muted)",
|
|
54
|
-
border: "var(--brd)",
|
|
55
|
-
icon: "var(--muted-fg)",
|
|
56
|
-
...DEFAULT_TEXT_COLORS,
|
|
57
|
-
Icon: info_default
|
|
58
|
-
},
|
|
59
|
-
info: {
|
|
60
|
-
bg: "var(--gr-info-light)",
|
|
61
|
-
border: "color-mix(in srgb, var(--gr-info) 22%, var(--brd))",
|
|
62
|
-
icon: "var(--gr-info)",
|
|
63
|
-
...DEFAULT_TEXT_COLORS,
|
|
64
|
-
Icon: info_default
|
|
65
|
-
},
|
|
66
|
-
success: {
|
|
67
|
-
bg: "var(--gr-success-light)",
|
|
68
|
-
border: "color-mix(in srgb, var(--gr-success) 22%, var(--brd))",
|
|
69
|
-
icon: "var(--gr-success)",
|
|
70
|
-
...DEFAULT_TEXT_COLORS,
|
|
71
|
-
Icon: check_circle_default
|
|
72
|
-
},
|
|
73
|
-
warning: {
|
|
74
|
-
bg: "var(--gr-warning-light)",
|
|
75
|
-
border: "color-mix(in srgb, var(--gr-warning) 22%, var(--brd))",
|
|
76
|
-
icon: "var(--gr-warning)",
|
|
77
|
-
...DEFAULT_TEXT_COLORS,
|
|
78
|
-
Icon: alert_triangle_default
|
|
79
|
-
},
|
|
80
|
-
danger: {
|
|
81
|
-
bg: "var(--gr-danger-light)",
|
|
82
|
-
border: "color-mix(in srgb, var(--gr-danger) 22%, var(--brd))",
|
|
83
|
-
icon: "var(--gr-danger)",
|
|
84
|
-
...DEFAULT_TEXT_COLORS,
|
|
85
|
-
Icon: x_circle_default
|
|
86
|
-
},
|
|
87
|
-
slate: {
|
|
88
|
-
bg: "var(--gr-slate-light)",
|
|
89
|
-
border: "color-mix(in srgb, var(--gr-slate) 22%, var(--brd))",
|
|
90
|
-
icon: "var(--gr-slate)",
|
|
91
|
-
...DEFAULT_TEXT_COLORS,
|
|
92
|
-
Icon: info_default
|
|
93
|
-
},
|
|
94
|
-
azure: {
|
|
95
|
-
bg: "var(--gr-azure-light)",
|
|
96
|
-
border: "color-mix(in srgb, var(--gr-azure) 22%, var(--brd))",
|
|
97
|
-
icon: "var(--gr-azure)",
|
|
98
|
-
...DEFAULT_TEXT_COLORS,
|
|
99
|
-
Icon: info_default
|
|
100
|
-
}
|
|
101
|
-
};
|
|
102
|
-
const LIGHT_TONE_STYLES = { warning: {
|
|
103
|
-
bg: "#fffbeb",
|
|
104
|
-
border: "#fcd34d",
|
|
105
|
-
icon: WARNING_LIGHT_TEXT_COLOR,
|
|
106
|
-
title: WARNING_LIGHT_TEXT_COLOR,
|
|
107
|
-
text: WARNING_LIGHT_TEXT_COLOR,
|
|
108
|
-
close: WARNING_LIGHT_TEXT_COLOR,
|
|
109
|
-
closeHover: WARNING_LIGHT_TEXT_COLOR,
|
|
110
|
-
Icon: alert_triangle_default
|
|
111
|
-
} };
|
|
112
|
-
const styles = computed(() => {
|
|
113
|
-
const base = (props.variant === "light" ? LIGHT_TONE_STYLES[props.tone] : void 0) ?? SOFT_TONE_STYLES[props.tone];
|
|
114
|
-
const customTextColor = getCustomColor(props.textColor);
|
|
115
|
-
return {
|
|
116
|
-
...base,
|
|
117
|
-
bg: getCustomColor(props.backgroundColor) ?? base.bg,
|
|
118
|
-
border: getCustomColor(props.borderColor) ?? base.border,
|
|
119
|
-
icon: customTextColor ?? base.icon,
|
|
120
|
-
title: customTextColor ?? base.title,
|
|
121
|
-
text: customTextColor ?? base.text,
|
|
122
|
-
close: customTextColor ?? base.close,
|
|
123
|
-
closeHover: customTextColor ?? base.closeHover
|
|
124
|
-
};
|
|
125
|
-
});
|
|
126
|
-
const rootStyle = computed(() => ({
|
|
127
|
-
"--gr-alert-bg": styles.value.bg,
|
|
128
|
-
"--gr-alert-brd": styles.value.border,
|
|
129
|
-
"--gr-alert-icon-color": styles.value.icon,
|
|
130
|
-
"--gr-alert-title-color": styles.value.title,
|
|
131
|
-
"--gr-alert-text-color": styles.value.text,
|
|
132
|
-
"--gr-alert-close-color": styles.value.close,
|
|
133
|
-
"--gr-alert-close-hover-color": styles.value.closeHover,
|
|
134
|
-
background: "var(--gr-alert-bg)",
|
|
135
|
-
borderColor: "var(--gr-alert-brd)"
|
|
136
|
-
}));
|
|
137
|
-
return (_ctx, _cache) => {
|
|
138
|
-
return openBlock(), createElementBlock("div", {
|
|
139
|
-
role: "alert",
|
|
140
|
-
class: "rounded-[var(--gr-radius-lg)] border px-4 py-3",
|
|
141
|
-
style: normalizeStyle(rootStyle.value)
|
|
142
|
-
}, [createElementVNode("div", _hoisted_1, [
|
|
143
|
-
(openBlock(), createBlock(resolveDynamicComponent(styles.value.Icon), {
|
|
144
|
-
class: "mt-0.5 h-5 w-5 text-[var(--gr-alert-icon-color)]",
|
|
145
|
-
"aria-hidden": "true"
|
|
146
|
-
})),
|
|
147
|
-
createElementVNode("div", _hoisted_2, [props.title ? (openBlock(), createElementBlock("div", _hoisted_3, toDisplayString(props.title), 1)) : createCommentVNode("", true), createElementVNode("div", _hoisted_4, [renderSlot(_ctx.$slots, "default")])]),
|
|
148
|
-
props.closable ? (openBlock(), createElementBlock("button", {
|
|
149
|
-
key: 0,
|
|
150
|
-
type: "button",
|
|
151
|
-
class: "-mr-1 -mt-1 rounded-[var(--gr-radius-md)] p-1 text-[var(--gr-alert-close-color)] transition-colors hover:text-[var(--gr-alert-close-hover-color)]",
|
|
152
|
-
"aria-label": unref(t)("gr.common.close", "Close"),
|
|
153
|
-
onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
|
|
154
|
-
}, [createVNode(unref(x_default), {
|
|
155
|
-
class: "h-4 w-4",
|
|
156
|
-
"aria-hidden": "true"
|
|
157
|
-
})], 8, _hoisted_5)) : createCommentVNode("", true)
|
|
158
|
-
])], 4);
|
|
159
|
-
};
|
|
160
|
-
}
|
|
161
|
-
});
|
|
162
|
-
//#endregion
|
|
163
|
-
export { GrAlert_default as t };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GrAlert-DPJSU_fG.js","names":[],"sources":["../../../../src/components/GrAlert/GrAlert.vue","../../../../src/components/GrAlert/GrAlert.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\nimport IconWarning from '~icons/lucide/alert-triangle'\nimport IconCheck from '~icons/lucide/check-circle'\nimport IconInfo from '~icons/lucide/info'\nimport IconClose from '~icons/lucide/x'\nimport IconError from '~icons/lucide/x-circle'\n\nimport type { GrTone } from '../shared/tones'\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\n\nexport type GrAlertTone = GrTone\nexport type GrAlertVariant = 'soft' | 'light'\n\ntype GrAlertResolvedStyles = {\n bg: string\n border: string\n icon: string\n title: string\n text: string\n close: string\n closeHover: string\n Icon: unknown\n}\n\nconst DEFAULT_TEXT_COLORS = {\n title: 'var(--fg)',\n text: 'var(--muted-fg)',\n close: 'var(--muted-fg)',\n closeHover: 'var(--fg)',\n} as const\n\nconst WARNING_LIGHT_TEXT_COLOR = '#92400e'\n\nconst emit = defineEmits<{\n (event: 'close'): void\n}>()\n\nconst props = withDefaults(defineProps<{\n tone?: GrAlertTone\n variant?: GrAlertVariant\n title?: string\n closable?: boolean\n backgroundColor?: string\n textColor?: string\n borderColor?: string\n}>(), {\n tone: 'info',\n variant: 'soft',\n title: undefined,\n closable: false,\n backgroundColor: undefined,\n textColor: undefined,\n borderColor: undefined,\n})\n\nconst { t } = useGranularityTranslations()\n\nconst getCustomColor = (value?: string) => value?.trim() || undefined\n\nconst SOFT_TONE_STYLES: Record<GrAlertTone, GrAlertResolvedStyles> = {\n primary: {\n bg: 'var(--accent)',\n border: 'color-mix(in srgb, var(--primary) 22%, var(--brd))',\n icon: 'var(--primary)',\n ...DEFAULT_TEXT_COLORS,\n Icon: IconInfo,\n },\n neutral: {\n bg: 'var(--muted)',\n border: 'var(--brd)',\n icon: 'var(--muted-fg)',\n ...DEFAULT_TEXT_COLORS,\n Icon: IconInfo,\n },\n info: {\n bg: 'var(--gr-info-light)',\n border: 'color-mix(in srgb, var(--gr-info) 22%, var(--brd))',\n icon: 'var(--gr-info)',\n ...DEFAULT_TEXT_COLORS,\n Icon: IconInfo,\n },\n success: {\n bg: 'var(--gr-success-light)',\n border: 'color-mix(in srgb, var(--gr-success) 22%, var(--brd))',\n icon: 'var(--gr-success)',\n ...DEFAULT_TEXT_COLORS,\n Icon: IconCheck,\n },\n warning: {\n bg: 'var(--gr-warning-light)',\n border: 'color-mix(in srgb, var(--gr-warning) 22%, var(--brd))',\n icon: 'var(--gr-warning)',\n ...DEFAULT_TEXT_COLORS,\n Icon: IconWarning,\n },\n danger: {\n bg: 'var(--gr-danger-light)',\n border: 'color-mix(in srgb, var(--gr-danger) 22%, var(--brd))',\n icon: 'var(--gr-danger)',\n ...DEFAULT_TEXT_COLORS,\n Icon: IconError,\n },\n slate: {\n bg: 'var(--gr-slate-light)',\n border: 'color-mix(in srgb, var(--gr-slate) 22%, var(--brd))',\n icon: 'var(--gr-slate)',\n ...DEFAULT_TEXT_COLORS,\n Icon: IconInfo,\n },\n azure: {\n bg: 'var(--gr-azure-light)',\n border: 'color-mix(in srgb, var(--gr-azure) 22%, var(--brd))',\n icon: 'var(--gr-azure)',\n ...DEFAULT_TEXT_COLORS,\n Icon: IconInfo,\n },\n}\n\nconst LIGHT_TONE_STYLES: Partial<Record<GrAlertTone, GrAlertResolvedStyles>> = {\n warning: {\n bg: '#fffbeb',\n border: '#fcd34d',\n icon: WARNING_LIGHT_TEXT_COLOR,\n title: WARNING_LIGHT_TEXT_COLOR,\n text: WARNING_LIGHT_TEXT_COLOR,\n close: WARNING_LIGHT_TEXT_COLOR,\n closeHover: WARNING_LIGHT_TEXT_COLOR,\n Icon: IconWarning,\n },\n}\n\nconst styles = computed<GrAlertResolvedStyles>(() => {\n const base = (props.variant === 'light' ? LIGHT_TONE_STYLES[props.tone] : undefined) ?? SOFT_TONE_STYLES[props.tone]\n const customTextColor = getCustomColor(props.textColor)\n\n return {\n ...base,\n bg: getCustomColor(props.backgroundColor) ?? base.bg,\n border: getCustomColor(props.borderColor) ?? base.border,\n icon: customTextColor ?? base.icon,\n title: customTextColor ?? base.title,\n text: customTextColor ?? base.text,\n close: customTextColor ?? base.close,\n closeHover: customTextColor ?? base.closeHover,\n }\n})\n\nconst rootStyle = computed(() => ({\n '--gr-alert-bg': styles.value.bg,\n '--gr-alert-brd': styles.value.border,\n '--gr-alert-icon-color': styles.value.icon,\n '--gr-alert-title-color': styles.value.title,\n '--gr-alert-text-color': styles.value.text,\n '--gr-alert-close-color': styles.value.close,\n '--gr-alert-close-hover-color': styles.value.closeHover,\n background: 'var(--gr-alert-bg)',\n borderColor: 'var(--gr-alert-brd)',\n}))\n</script>\n\n<template>\n <div\n role=\"alert\"\n class=\"rounded-[var(--gr-radius-lg)] border px-4 py-3\"\n :style=\"rootStyle\"\n >\n <div class=\"flex items-start gap-3\">\n <component :is=\"styles.Icon\" class=\"mt-0.5 h-5 w-5 text-[var(--gr-alert-icon-color)]\" aria-hidden=\"true\" />\n <div class=\"min-w-0 flex-1\">\n <div v-if=\"props.title\" class=\"text-[14px] font-700 text-[var(--gr-alert-title-color)]\">\n {{ props.title }}\n </div>\n <div class=\"mt-0.5 text-[13px] text-[var(--gr-alert-text-color)]\">\n <slot />\n </div>\n </div>\n\n <button\n v-if=\"props.closable\"\n type=\"button\"\n class=\"-mr-1 -mt-1 rounded-[var(--gr-radius-md)] p-1 text-[var(--gr-alert-close-color)] transition-colors hover:text-[var(--gr-alert-close-hover-color)]\"\n :aria-label=\"t('gr.common.close', 'Close')\"\n @click=\"emit('close')\"\n >\n <IconClose class=\"h-4 w-4\" aria-hidden=\"true\" />\n </button>\n </div>\n </div>\n</template>","<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\nimport IconWarning from '~icons/lucide/alert-triangle'\nimport IconCheck from '~icons/lucide/check-circle'\nimport IconInfo from '~icons/lucide/info'\nimport IconClose from '~icons/lucide/x'\nimport IconError from '~icons/lucide/x-circle'\n\nimport type { GrTone } from '../shared/tones'\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\n\nexport type GrAlertTone = GrTone\nexport type GrAlertVariant = 'soft' | 'light'\n\ntype GrAlertResolvedStyles = {\n bg: string\n border: string\n icon: string\n title: string\n text: string\n close: string\n closeHover: string\n Icon: unknown\n}\n\nconst DEFAULT_TEXT_COLORS = {\n title: 'var(--fg)',\n text: 'var(--muted-fg)',\n close: 'var(--muted-fg)',\n closeHover: 'var(--fg)',\n} as const\n\nconst WARNING_LIGHT_TEXT_COLOR = '#92400e'\n\nconst emit = defineEmits<{\n (event: 'close'): void\n}>()\n\nconst props = withDefaults(defineProps<{\n tone?: GrAlertTone\n variant?: GrAlertVariant\n title?: string\n closable?: boolean\n backgroundColor?: string\n textColor?: string\n borderColor?: string\n}>(), {\n tone: 'info',\n variant: 'soft',\n title: undefined,\n closable: false,\n backgroundColor: undefined,\n textColor: undefined,\n borderColor: undefined,\n})\n\nconst { t } = useGranularityTranslations()\n\nconst getCustomColor = (value?: string) => value?.trim() || undefined\n\nconst SOFT_TONE_STYLES: Record<GrAlertTone, GrAlertResolvedStyles> = {\n primary: {\n bg: 'var(--accent)',\n border: 'color-mix(in srgb, var(--primary) 22%, var(--brd))',\n icon: 'var(--primary)',\n ...DEFAULT_TEXT_COLORS,\n Icon: IconInfo,\n },\n neutral: {\n bg: 'var(--muted)',\n border: 'var(--brd)',\n icon: 'var(--muted-fg)',\n ...DEFAULT_TEXT_COLORS,\n Icon: IconInfo,\n },\n info: {\n bg: 'var(--gr-info-light)',\n border: 'color-mix(in srgb, var(--gr-info) 22%, var(--brd))',\n icon: 'var(--gr-info)',\n ...DEFAULT_TEXT_COLORS,\n Icon: IconInfo,\n },\n success: {\n bg: 'var(--gr-success-light)',\n border: 'color-mix(in srgb, var(--gr-success) 22%, var(--brd))',\n icon: 'var(--gr-success)',\n ...DEFAULT_TEXT_COLORS,\n Icon: IconCheck,\n },\n warning: {\n bg: 'var(--gr-warning-light)',\n border: 'color-mix(in srgb, var(--gr-warning) 22%, var(--brd))',\n icon: 'var(--gr-warning)',\n ...DEFAULT_TEXT_COLORS,\n Icon: IconWarning,\n },\n danger: {\n bg: 'var(--gr-danger-light)',\n border: 'color-mix(in srgb, var(--gr-danger) 22%, var(--brd))',\n icon: 'var(--gr-danger)',\n ...DEFAULT_TEXT_COLORS,\n Icon: IconError,\n },\n slate: {\n bg: 'var(--gr-slate-light)',\n border: 'color-mix(in srgb, var(--gr-slate) 22%, var(--brd))',\n icon: 'var(--gr-slate)',\n ...DEFAULT_TEXT_COLORS,\n Icon: IconInfo,\n },\n azure: {\n bg: 'var(--gr-azure-light)',\n border: 'color-mix(in srgb, var(--gr-azure) 22%, var(--brd))',\n icon: 'var(--gr-azure)',\n ...DEFAULT_TEXT_COLORS,\n Icon: IconInfo,\n },\n}\n\nconst LIGHT_TONE_STYLES: Partial<Record<GrAlertTone, GrAlertResolvedStyles>> = {\n warning: {\n bg: '#fffbeb',\n border: '#fcd34d',\n icon: WARNING_LIGHT_TEXT_COLOR,\n title: WARNING_LIGHT_TEXT_COLOR,\n text: WARNING_LIGHT_TEXT_COLOR,\n close: WARNING_LIGHT_TEXT_COLOR,\n closeHover: WARNING_LIGHT_TEXT_COLOR,\n Icon: IconWarning,\n },\n}\n\nconst styles = computed<GrAlertResolvedStyles>(() => {\n const base = (props.variant === 'light' ? LIGHT_TONE_STYLES[props.tone] : undefined) ?? SOFT_TONE_STYLES[props.tone]\n const customTextColor = getCustomColor(props.textColor)\n\n return {\n ...base,\n bg: getCustomColor(props.backgroundColor) ?? base.bg,\n border: getCustomColor(props.borderColor) ?? base.border,\n icon: customTextColor ?? base.icon,\n title: customTextColor ?? base.title,\n text: customTextColor ?? base.text,\n close: customTextColor ?? base.close,\n closeHover: customTextColor ?? base.closeHover,\n }\n})\n\nconst rootStyle = computed(() => ({\n '--gr-alert-bg': styles.value.bg,\n '--gr-alert-brd': styles.value.border,\n '--gr-alert-icon-color': styles.value.icon,\n '--gr-alert-title-color': styles.value.title,\n '--gr-alert-text-color': styles.value.text,\n '--gr-alert-close-color': styles.value.close,\n '--gr-alert-close-hover-color': styles.value.closeHover,\n background: 'var(--gr-alert-bg)',\n borderColor: 'var(--gr-alert-brd)',\n}))\n</script>\n\n<template>\n <div\n role=\"alert\"\n class=\"rounded-[var(--gr-radius-lg)] border px-4 py-3\"\n :style=\"rootStyle\"\n >\n <div class=\"flex items-start gap-3\">\n <component :is=\"styles.Icon\" class=\"mt-0.5 h-5 w-5 text-[var(--gr-alert-icon-color)]\" aria-hidden=\"true\" />\n <div class=\"min-w-0 flex-1\">\n <div v-if=\"props.title\" class=\"text-[14px] font-700 text-[var(--gr-alert-title-color)]\">\n {{ props.title }}\n </div>\n <div class=\"mt-0.5 text-[13px] text-[var(--gr-alert-text-color)]\">\n <slot />\n </div>\n </div>\n\n <button\n v-if=\"props.closable\"\n type=\"button\"\n class=\"-mr-1 -mt-1 rounded-[var(--gr-radius-md)] p-1 text-[var(--gr-alert-close-color)] transition-colors hover:text-[var(--gr-alert-close-hover-color)]\"\n :aria-label=\"t('gr.common.close', 'Close')\"\n @click=\"emit('close')\"\n >\n <IconClose class=\"h-4 w-4\" aria-hidden=\"true\" />\n </button>\n </div>\n </div>\n</template>"],"mappings":";;;;;;;;;;;;;;AAiCA,IAAM,2BAA2B;;;;;;;;;;;;;;;;;;;EAPjC,MAAM,sBAAsB;GAC1B,OAAO;GACP,MAAM;GACN,OAAO;GACP,YAAY;EACd;EAIA,MAAM,OAAO;EAIb,MAAM,QAAQ;EAkBd,MAAM,EAAE,MAAM,2BAA2B;EAEzC,MAAM,kBAAkB,UAAmB,OAAO,KAAK,KAAK,KAAA;EAE5D,MAAM,mBAA+D;GACnE,SAAS;IACP,IAAI;IACJ,QAAQ;IACR,MAAM;IACN,GAAG;IACH,MAAM;GACR;GACA,SAAS;IACP,IAAI;IACJ,QAAQ;IACR,MAAM;IACN,GAAG;IACH,MAAM;GACR;GACA,MAAM;IACJ,IAAI;IACJ,QAAQ;IACR,MAAM;IACN,GAAG;IACH,MAAM;GACR;GACA,SAAS;IACP,IAAI;IACJ,QAAQ;IACR,MAAM;IACN,GAAG;IACH,MAAM;GACR;GACA,SAAS;IACP,IAAI;IACJ,QAAQ;IACR,MAAM;IACN,GAAG;IACH,MAAM;GACR;GACA,QAAQ;IACN,IAAI;IACJ,QAAQ;IACR,MAAM;IACN,GAAG;IACH,MAAM;GACR;GACA,OAAO;IACL,IAAI;IACJ,QAAQ;IACR,MAAM;IACN,GAAG;IACH,MAAM;GACR;GACA,OAAO;IACL,IAAI;IACJ,QAAQ;IACR,MAAM;IACN,GAAG;IACH,MAAM;GACR;EACF;EAEA,MAAM,oBAAyE,EAC7E,SAAS;GACP,IAAI;GACJ,QAAQ;GACR,MAAM;GACN,OAAO;GACP,MAAM;GACN,OAAO;GACP,YAAY;GACZ,MAAM;EACR,EACF;EAEA,MAAM,SAAS,eAAsC;GACnD,MAAM,QAAQ,MAAM,YAAY,UAAU,kBAAkB,MAAM,QAAQ,KAAA,MAAc,iBAAiB,MAAM;GAC/G,MAAM,kBAAkB,eAAe,MAAM,SAAS;GAEtD,OAAO;IACL,GAAG;IACH,IAAI,eAAe,MAAM,eAAe,KAAK,KAAK;IAClD,QAAQ,eAAe,MAAM,WAAW,KAAK,KAAK;IAClD,MAAM,mBAAmB,KAAK;IAC9B,OAAO,mBAAmB,KAAK;IAC/B,MAAM,mBAAmB,KAAK;IAC9B,OAAO,mBAAmB,KAAK;IAC/B,YAAY,mBAAmB,KAAK;GACtC;EACF,CAAC;EAED,MAAM,YAAY,gBAAgB;GAChC,iBAAiB,OAAO,MAAM;GAC9B,kBAAkB,OAAO,MAAM;GAC/B,yBAAyB,OAAO,MAAM;GACtC,0BAA0B,OAAO,MAAM;GACvC,yBAAyB,OAAO,MAAM;GACtC,0BAA0B,OAAO,MAAM;GACvC,gCAAgC,OAAO,MAAM;GAC7C,YAAY;GACZ,aAAa;EACf,EAAE;;uBAIA,mBA0BM,OAAA;IAzBJ,MAAK;IACL,OAAM;IACL,OAAK,eAAE,UAAA,KAAS;OAEjB,mBAoBM,OApBN,YAoBM;kBAnBJ,YAA2G,wBAA3F,OAAA,MAAO,IAAI,GAAA;KAAE,OAAM;KAAmD,eAAY;;IAClG,mBAOM,OAPN,YAOM,CANO,MAAM,SAAA,UAAA,GAAjB,mBAEM,OAFN,YAEM,gBADD,MAAM,KAAK,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA,GAEhB,mBAEM,OAFN,YAEM,CADJ,WAAQ,KAAA,QAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAKJ,MAAM,YAAA,UAAA,GADd,mBAQS,UAAA;;KANP,MAAK;KACL,OAAM;KACL,cAAY,MAAA,CAAA,CAAC,CAAA,mBAAA,OAAA;KACb,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,OAAA;QAEZ,YAAgD,MAAA,SAAA,GAAA;KAArC,OAAM;KAAU,eAAY"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GrAvatar-96CpTCq5.js","names":[],"sources":["../../../../src/components/GrAvatar/GrAvatar.vue","../../../../src/components/GrAvatar/GrAvatar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\nimport { grAvatarClass } from './grAvatarStyles'\nimport type { GrAvatarShape } from './grAvatarStyles'\n\nconst props = withDefaults(defineProps<{\n size?: number\n src?: string\n alt?: string\n shape?: GrAvatarShape\n}>(), {\n size: 40,\n src: undefined,\n alt: '',\n shape: 'circle',\n})\n\nconst style = computed(() => {\n const px = `${props.size}px`\n\n return {\n width: px,\n height: px,\n }\n})\n\nconst className = computed(() => {\n return grAvatarClass(props.shape)\n})\n</script>\n\n<template>\n <span :style=\"style\" class=\"inline-flex items-center justify-center overflow-hidden border border-[var(--brd)] bg-[var(--muted)] text-[var(--muted-fg)] font-700\" :class=\"className\">\n <img v-if=\"props.src\" :src=\"props.src\" :alt=\"props.alt\" class=\"h-full w-full object-cover\">\n <slot v-else />\n </span>\n</template>","<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\nimport { grAvatarClass } from './grAvatarStyles'\nimport type { GrAvatarShape } from './grAvatarStyles'\n\nconst props = withDefaults(defineProps<{\n size?: number\n src?: string\n alt?: string\n shape?: GrAvatarShape\n}>(), {\n size: 40,\n src: undefined,\n alt: '',\n shape: 'circle',\n})\n\nconst style = computed(() => {\n const px = `${props.size}px`\n\n return {\n width: px,\n height: px,\n }\n})\n\nconst className = computed(() => {\n return grAvatarClass(props.shape)\n})\n</script>\n\n<template>\n <span :style=\"style\" class=\"inline-flex items-center justify-center overflow-hidden border border-[var(--brd)] bg-[var(--muted)] text-[var(--muted-fg)] font-700\" :class=\"className\">\n <img v-if=\"props.src\" :src=\"props.src\" :alt=\"props.alt\" class=\"h-full w-full object-cover\">\n <slot v-else />\n </span>\n</template>"],"mappings":";;;;;;;;;;;;;;;EAMA,MAAM,QAAQ;EAYd,MAAM,QAAQ,eAAe;GAC3B,MAAM,KAAK,GAAG,MAAM,KAAK;GAEzB,OAAO;IACL,OAAO;IACP,QAAQ;GACV;EACF,CAAC;EAED,MAAM,YAAY,eAAe;GAC/B,OAAO,cAAc,MAAM,KAAK;EAClC,CAAC;;uBAIC,mBAGO,QAAA;IAHA,OAAK,eAAE,MAAA,KAAK;IAAE,OAAK,eAAA,CAAC,wIAA+I,UAAA,KAAS,CAAA;OACtK,MAAM,OAAA,UAAA,GAAjB,mBAA2F,OAAA;;IAApE,KAAK,MAAM;IAAM,KAAK,MAAM;IAAK,OAAM;8BAC9D,WAAe,KAAA,QAAA,WAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,CAAA,GAAA,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GrBadge-B77XlaqE.js","names":[],"sources":["../../../../src/components/GrBadge/GrBadge.vue","../../../../src/components/GrBadge/GrBadge.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\nexport type { GrBadgeRadius, GrBadgeSize, GrBadgeTone } from './grBadgeStyles'\n\nimport {\n grBadgeClass,\n type GrBadgeRadius,\n type GrBadgeSize,\n type GrBadgeTone,\n} from './grBadgeStyles'\n\nconst props = withDefaults(\n defineProps<{\n tone?: GrBadgeTone\n dark?: boolean\n size?: GrBadgeSize\n radius?: GrBadgeRadius\n }>(),\n {\n tone: 'neutral',\n dark: false,\n size: 'sm',\n radius: 'round',\n },\n)\n\nconst className = computed(() => {\n return grBadgeClass({\n tone: props.tone,\n dark: props.dark,\n size: props.size,\n radius: props.radius,\n })\n})\n</script>\n\n<template>\n <span\n class=\"gr-badge inline-block border whitespace-nowrap leading-none\"\n :class=\"className\"\n >\n <span class=\"gr-badge__label\">\n <span class=\"gr-badge__text\">\n <slot />\n </span>\n </span>\n </span>\n</template>\n\n<style scoped>\n/*\n * Оптически центрируем текст по вертикали независимо от регистра,\n * не уменьшая высоту самого бейджа.\n *\n * Раньше `text-box-trim` висел прямо на тексте и обрезал line-box до\n * cap-height: текст центрировался корректно, но высота контента\n * падала до cap-height, из-за чего бейдж становился ниже.\n *\n * Теперь высоту держит обёртка `.gr-badge__label` (`min-height: 1lh` —\n * исходная высота line-box при `leading-none`), а сам текст\n * (`.gr-badge__text`) обрезается до cap-height/базовой линии и\n * центрируется внутри этой высоты через flex. В итоге высота бейджа\n * не меняется, а строчный/заглавный текст выглядит по центру.\n */\n.gr-badge__label {\n display: flex;\n align-items: center;\n min-height: 1lh;\n}\n\n.gr-badge__text {\n display: block;\n text-box-trim: trim-both;\n text-box-edge: cap alphabetic;\n /* Шорткат для браузеров с поддержкой нового синтаксиса. */\n text-box: trim-both cap alphabetic;\n}\n</style>","<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\nexport type { GrBadgeRadius, GrBadgeSize, GrBadgeTone } from './grBadgeStyles'\n\nimport {\n grBadgeClass,\n type GrBadgeRadius,\n type GrBadgeSize,\n type GrBadgeTone,\n} from './grBadgeStyles'\n\nconst props = withDefaults(\n defineProps<{\n tone?: GrBadgeTone\n dark?: boolean\n size?: GrBadgeSize\n radius?: GrBadgeRadius\n }>(),\n {\n tone: 'neutral',\n dark: false,\n size: 'sm',\n radius: 'round',\n },\n)\n\nconst className = computed(() => {\n return grBadgeClass({\n tone: props.tone,\n dark: props.dark,\n size: props.size,\n radius: props.radius,\n })\n})\n</script>\n\n<template>\n <span\n class=\"gr-badge inline-block border whitespace-nowrap leading-none\"\n :class=\"className\"\n >\n <span class=\"gr-badge__label\">\n <span class=\"gr-badge__text\">\n <slot />\n </span>\n </span>\n </span>\n</template>\n\n<style scoped>\n/*\n * Оптически центрируем текст по вертикали независимо от регистра,\n * не уменьшая высоту самого бейджа.\n *\n * Раньше `text-box-trim` висел прямо на тексте и обрезал line-box до\n * cap-height: текст центрировался корректно, но высота контента\n * падала до cap-height, из-за чего бейдж становился ниже.\n *\n * Теперь высоту держит обёртка `.gr-badge__label` (`min-height: 1lh` —\n * исходная высота line-box при `leading-none`), а сам текст\n * (`.gr-badge__text`) обрезается до cap-height/базовой линии и\n * центрируется внутри этой высоты через flex. В итоге высота бейджа\n * не меняется, а строчный/заглавный текст выглядит по центру.\n */\n.gr-badge__label {\n display: flex;\n align-items: center;\n min-height: 1lh;\n}\n\n.gr-badge__text {\n display: block;\n text-box-trim: trim-both;\n text-box-edge: cap alphabetic;\n /* Шорткат для браузеров с поддержкой нового синтаксиса. */\n text-box: trim-both cap alphabetic;\n}\n</style>"],"mappings":";;;;;;;;;;;;;;;;;;;;EAYA,MAAM,QAAQ;EAed,MAAM,YAAY,eAAe;GAC/B,OAAO,aAAa;IAClB,MAAM,MAAM;IACZ,MAAM,MAAM;IACZ,MAAM,MAAM;IACZ,QAAQ,MAAM;GAChB,CAAC;EACH,CAAC;;uBAIC,mBASO,QAAA,EARH,OAAK,eAAA,CAAC,+DACE,UAAA,KAAS,CAAA,EAAA,GAAA,CAEnB,mBAIO,QAJP,YAIO,CAHL,mBAEO,QAFP,YAEO,CADL,WAAQ,KAAA,QAAA,WAAA,CAAA,GAAA,KAAA,GAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GrBadgeWrap-CcktMOdg.js","names":[],"sources":["../../../../src/components/GrBadgeWrap/GrBadgeWrap.vue","../../../../src/components/GrBadgeWrap/GrBadgeWrap.vue"],"sourcesContent":["<script setup lang=\"ts\">\nconst props = withDefaults(defineProps<{\n value?: string | number\n dot?: boolean\n}>(), {\n value: undefined,\n dot: false,\n})\n</script>\n\n<template>\n <span class=\"relative inline-flex\">\n <slot />\n\n <span\n v-if=\"props.dot\"\n class=\"absolute -top-1 -right-1 h-2 w-2 rounded-full bg-[var(--gr-danger)]\"\n aria-hidden=\"true\"\n />\n\n <span\n v-else-if=\"props.value !== undefined\"\n class=\"absolute -top-2 -right-2 min-w-5 h-5 px-1 rounded-full bg-[var(--gr-danger)] text-[var(--destructive-fg)] text-[11px] font-700 inline-flex items-center justify-center\"\n aria-hidden=\"true\"\n >\n {{ props.value }}\n </span>\n </span>\n</template>","<script setup lang=\"ts\">\nconst props = withDefaults(defineProps<{\n value?: string | number\n dot?: boolean\n}>(), {\n value: undefined,\n dot: false,\n})\n</script>\n\n<template>\n <span class=\"relative inline-flex\">\n <slot />\n\n <span\n v-if=\"props.dot\"\n class=\"absolute -top-1 -right-1 h-2 w-2 rounded-full bg-[var(--gr-danger)]\"\n aria-hidden=\"true\"\n />\n\n <span\n v-else-if=\"props.value !== undefined\"\n class=\"absolute -top-2 -right-2 min-w-5 h-5 px-1 rounded-full bg-[var(--gr-danger)] text-[var(--destructive-fg)] text-[11px] font-700 inline-flex items-center justify-center\"\n aria-hidden=\"true\"\n >\n {{ props.value }}\n </span>\n </span>\n</template>"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;EACA,MAAM,QAAQ;;uBAUZ,mBAgBO,QAhBP,YAgBO,CAfL,WAAQ,KAAA,QAAA,SAAA,GAGA,MAAM,OAAA,UAAA,GADd,mBAIE,QAJF,UAIE,KAGW,MAAM,UAAU,KAAA,KAAA,UAAA,GAD7B,mBAMO,QANP,YAMO,gBADF,MAAM,KAAK,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA,CAAA,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GrBottomNav-usuMgG8_.js","names":[],"sources":["../../../../src/components/GrBottomNav/GrBottomNav.vue","../../../../src/components/GrBottomNav/GrBottomNav.vue"],"sourcesContent":["<script setup lang=\"ts\">\nexport type GrBottomNavItem = {\n label: string\n value: string\n}\n\nconst props = defineProps<{\n modelValue: string\n items: GrBottomNavItem[]\n}>()\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: string): void\n}>()\n</script>\n\n<template>\n <nav class=\"fixed bottom-0 left-0 right-0 border-t border-[var(--brd)] bg-[var(--bg)] px-2 pb-[env(safe-area-inset-bottom)] sm:hidden\">\n <div class=\"h-14 flex items-center justify-around\">\n <button\n v-for=\"it in props.items\"\n :key=\"it.value\"\n type=\"button\"\n class=\"min-w-[44px] min-h-[44px] px-3 rounded-md text-sm font-600 transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]\"\n :class=\"it.value === props.modelValue ? 'text-[var(--primary)]' : 'text-[var(--muted-fg)] hover:text-[var(--fg)]'\"\n @click=\"emit('update:modelValue', it.value)\"\n >\n {{ it.label }}\n </button>\n </div>\n </nav>\n</template>","<script setup lang=\"ts\">\nexport type GrBottomNavItem = {\n label: string\n value: string\n}\n\nconst props = defineProps<{\n modelValue: string\n items: GrBottomNavItem[]\n}>()\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: string): void\n}>()\n</script>\n\n<template>\n <nav class=\"fixed bottom-0 left-0 right-0 border-t border-[var(--brd)] bg-[var(--bg)] px-2 pb-[env(safe-area-inset-bottom)] sm:hidden\">\n <div class=\"h-14 flex items-center justify-around\">\n <button\n v-for=\"it in props.items\"\n :key=\"it.value\"\n type=\"button\"\n class=\"min-w-[44px] min-h-[44px] px-3 rounded-md text-sm font-600 transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]\"\n :class=\"it.value === props.modelValue ? 'text-[var(--primary)]' : 'text-[var(--muted-fg)] hover:text-[var(--fg)]'\"\n @click=\"emit('update:modelValue', it.value)\"\n >\n {{ it.label }}\n </button>\n </div>\n </nav>\n</template>"],"mappings":";;;;;;;;;;;;;;;EAMA,MAAM,QAAQ;EAKd,MAAM,OAAO;;uBAMX,mBAaM,OAbN,YAaM,CAZJ,mBAWM,OAXN,YAWM,EAAA,UAAA,IAAA,GAVJ,mBASS,UAAA,MAAA,WARM,MAAM,QAAZ,OAAE;wBADX,mBASS,UAAA;KAPN,KAAK,GAAG;KACT,MAAK;KACL,OAAK,eAAA,CAAC,yJACE,GAAG,UAAU,MAAM,aAAU,0BAAA,+CAAA,CAAA;KACpC,UAAK,WAAE,KAAI,qBAAsB,GAAG,KAAK;uBAEvC,GAAG,KAAK,GAAA,IAAA,UAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GrButton-BlffdeJr.js","names":[],"sources":["../../../../src/components/GrButton/GrButton.vue","../../../../src/components/GrButton/GrButton.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, markRaw, type Component } from 'vue'\n\nimport IconLoader from '~icons/lucide/loader-circle'\n\nexport type { GrButtonSize, GrButtonTone, GrButtonVariant } from './grButtonStyles'\n\nimport {\n grButtonBaseClass,\n grButtonClass,\n type GrButtonSize,\n type GrButtonTone,\n type GrButtonVariant,\n} from './grButtonStyles'\n\nconst props = withDefaults(\n defineProps<{\n variant?: GrButtonVariant\n tone?: GrButtonTone\n size?: GrButtonSize\n loading?: boolean\n disabled?: boolean\n square?: boolean\n type?: 'button' | 'submit' | 'reset'\n ariaLabel?: string\n /** Полиморфизм: кастомный корневой тег/компонент (например, RouterLink). */\n as?: string | Component\n /** Рендерит кнопку как `<a href>` (если не задан `as`). */\n href?: string\n target?: string\n rel?: string\n external?: boolean\n }>(),\n {\n variant: 'primary',\n tone: 'primary',\n size: 'md',\n loading: false,\n disabled: false,\n square: false,\n type: 'button',\n ariaLabel: undefined,\n as: undefined,\n href: undefined,\n target: undefined,\n rel: undefined,\n external: false,\n },\n)\n\nconst isSquare = computed(() => props.square)\n\n// Полиморфный корень: `as` → `<a href>` → `<button>`.\nconst isLink = computed(() => Boolean(props.as || props.href))\nconst renderAs = computed<string | Component>(() => {\n if (props.as) return typeof props.as === 'string' ? props.as : markRaw(props.as)\n return props.href ? 'a' : 'button'\n})\n\n// Неинтерактивно при явном `disabled` ИЛИ во время `loading`.\nconst blocked = computed(() => props.disabled || props.loading)\n\n// Ключевое: `loading` НЕ ставит нативный `disabled` (элемент бы выпал из фокуса и\n// скринридер потерял бы контекст) — вместо этого `aria-disabled` + перехват клика.\n// Нативный `disabled` (только у `<button>`) оставляем лишь для явного `disabled`.\nconst nativeDisabled = computed(() => (renderAs.value === 'button' && props.disabled) ? true : undefined)\nconst ariaDisabled = computed(() => (props.loading || (isLink.value && props.disabled)) ? 'true' : undefined)\n\nconst resolvedTarget = computed(() => props.target ?? (props.external ? '_blank' : undefined))\nconst resolvedRel = computed(() => props.rel ?? (resolvedTarget.value === '_blank' ? 'noopener noreferrer' : undefined))\n\nfunction onClickCapture(e: MouseEvent): void {\n // Блокируем и дефолт (submit/навигация), и внешние обработчики (в т.ч. по Enter/Space),\n // сохраняя фокус на элементе.\n if (blocked.value) {\n e.preventDefault()\n e.stopImmediatePropagation()\n }\n}\n\nconst squareStyle = computed(() => {\n if (!isSquare.value) return undefined\n\n const px = (() => {\n if (props.size === 'xs') return 28\n if (props.size === 'sm') return 32\n if (props.size === 'lg') return 44\n return 40\n })()\n\n const v = `${px}px`\n return {\n width: v,\n minWidth: v,\n height: v,\n padding: '0px',\n } as const\n})\n\nconst className = computed(() => {\n return grButtonClass({\n variant: props.variant,\n tone: props.tone,\n size: props.size,\n square: isSquare.value,\n })\n})\n</script>\n\n<template>\n <component\n :is=\"renderAs\"\n data-gr-button\n :data-gr-variant=\"props.variant\"\n :data-gr-tone=\"props.tone\"\n :type=\"renderAs === 'button' ? props.type : undefined\"\n :disabled=\"nativeDisabled\"\n :href=\"isLink && !props.disabled ? props.href : undefined\"\n :target=\"isLink && !props.disabled ? resolvedTarget : undefined\"\n :rel=\"isLink && !props.disabled ? resolvedRel : undefined\"\n :aria-busy=\"props.loading ? 'true' : undefined\"\n :aria-disabled=\"ariaDisabled\"\n :aria-label=\"props.ariaLabel\"\n :tabindex=\"isLink && props.disabled ? -1 : undefined\"\n :class=\"[grButtonBaseClass, className, blocked ? 'cursor-not-allowed' : '']\"\n :style=\"squareStyle\"\n @click.capture=\"onClickCapture\"\n >\n <IconLoader v-if=\"props.loading\" class=\"h-4 w-4 animate-spin\" aria-hidden=\"true\" />\n <slot />\n </component>\n</template>\n","<script setup lang=\"ts\">\nimport { computed, markRaw, type Component } from 'vue'\n\nimport IconLoader from '~icons/lucide/loader-circle'\n\nexport type { GrButtonSize, GrButtonTone, GrButtonVariant } from './grButtonStyles'\n\nimport {\n grButtonBaseClass,\n grButtonClass,\n type GrButtonSize,\n type GrButtonTone,\n type GrButtonVariant,\n} from './grButtonStyles'\n\nconst props = withDefaults(\n defineProps<{\n variant?: GrButtonVariant\n tone?: GrButtonTone\n size?: GrButtonSize\n loading?: boolean\n disabled?: boolean\n square?: boolean\n type?: 'button' | 'submit' | 'reset'\n ariaLabel?: string\n /** Полиморфизм: кастомный корневой тег/компонент (например, RouterLink). */\n as?: string | Component\n /** Рендерит кнопку как `<a href>` (если не задан `as`). */\n href?: string\n target?: string\n rel?: string\n external?: boolean\n }>(),\n {\n variant: 'primary',\n tone: 'primary',\n size: 'md',\n loading: false,\n disabled: false,\n square: false,\n type: 'button',\n ariaLabel: undefined,\n as: undefined,\n href: undefined,\n target: undefined,\n rel: undefined,\n external: false,\n },\n)\n\nconst isSquare = computed(() => props.square)\n\n// Полиморфный корень: `as` → `<a href>` → `<button>`.\nconst isLink = computed(() => Boolean(props.as || props.href))\nconst renderAs = computed<string | Component>(() => {\n if (props.as) return typeof props.as === 'string' ? props.as : markRaw(props.as)\n return props.href ? 'a' : 'button'\n})\n\n// Неинтерактивно при явном `disabled` ИЛИ во время `loading`.\nconst blocked = computed(() => props.disabled || props.loading)\n\n// Ключевое: `loading` НЕ ставит нативный `disabled` (элемент бы выпал из фокуса и\n// скринридер потерял бы контекст) — вместо этого `aria-disabled` + перехват клика.\n// Нативный `disabled` (только у `<button>`) оставляем лишь для явного `disabled`.\nconst nativeDisabled = computed(() => (renderAs.value === 'button' && props.disabled) ? true : undefined)\nconst ariaDisabled = computed(() => (props.loading || (isLink.value && props.disabled)) ? 'true' : undefined)\n\nconst resolvedTarget = computed(() => props.target ?? (props.external ? '_blank' : undefined))\nconst resolvedRel = computed(() => props.rel ?? (resolvedTarget.value === '_blank' ? 'noopener noreferrer' : undefined))\n\nfunction onClickCapture(e: MouseEvent): void {\n // Блокируем и дефолт (submit/навигация), и внешние обработчики (в т.ч. по Enter/Space),\n // сохраняя фокус на элементе.\n if (blocked.value) {\n e.preventDefault()\n e.stopImmediatePropagation()\n }\n}\n\nconst squareStyle = computed(() => {\n if (!isSquare.value) return undefined\n\n const px = (() => {\n if (props.size === 'xs') return 28\n if (props.size === 'sm') return 32\n if (props.size === 'lg') return 44\n return 40\n })()\n\n const v = `${px}px`\n return {\n width: v,\n minWidth: v,\n height: v,\n padding: '0px',\n } as const\n})\n\nconst className = computed(() => {\n return grButtonClass({\n variant: props.variant,\n tone: props.tone,\n size: props.size,\n square: isSquare.value,\n })\n})\n</script>\n\n<template>\n <component\n :is=\"renderAs\"\n data-gr-button\n :data-gr-variant=\"props.variant\"\n :data-gr-tone=\"props.tone\"\n :type=\"renderAs === 'button' ? props.type : undefined\"\n :disabled=\"nativeDisabled\"\n :href=\"isLink && !props.disabled ? props.href : undefined\"\n :target=\"isLink && !props.disabled ? resolvedTarget : undefined\"\n :rel=\"isLink && !props.disabled ? resolvedRel : undefined\"\n :aria-busy=\"props.loading ? 'true' : undefined\"\n :aria-disabled=\"ariaDisabled\"\n :aria-label=\"props.ariaLabel\"\n :tabindex=\"isLink && props.disabled ? -1 : undefined\"\n :class=\"[grButtonBaseClass, className, blocked ? 'cursor-not-allowed' : '']\"\n :style=\"squareStyle\"\n @click.capture=\"onClickCapture\"\n >\n <IconLoader v-if=\"props.loading\" class=\"h-4 w-4 animate-spin\" aria-hidden=\"true\" />\n <slot />\n </component>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAeA,MAAM,QAAQ;EAmCd,MAAM,WAAW,eAAe,MAAM,MAAM;EAG5C,MAAM,SAAS,eAAe,QAAQ,MAAM,MAAM,MAAM,IAAI,CAAC;EAC7D,MAAM,WAAW,eAAmC;GAClD,IAAI,MAAM,IAAI,OAAO,OAAO,MAAM,OAAO,WAAW,MAAM,KAAK,QAAQ,MAAM,EAAE;GAC/E,OAAO,MAAM,OAAO,MAAM;EAC5B,CAAC;EAGD,MAAM,UAAU,eAAe,MAAM,YAAY,MAAM,OAAO;EAK9D,MAAM,iBAAiB,eAAgB,SAAS,UAAU,YAAY,MAAM,WAAY,OAAO,KAAA,CAAS;EACxG,MAAM,eAAe,eAAgB,MAAM,WAAY,OAAO,SAAS,MAAM,WAAa,SAAS,KAAA,CAAS;EAE5G,MAAM,iBAAiB,eAAe,MAAM,WAAW,MAAM,WAAW,WAAW,KAAA,EAAU;EAC7F,MAAM,cAAc,eAAe,MAAM,QAAQ,eAAe,UAAU,WAAW,wBAAwB,KAAA,EAAU;EAEvH,SAAS,eAAe,GAAqB;GAG3C,IAAI,QAAQ,OAAO;IACjB,EAAE,eAAe;IACjB,EAAE,yBAAyB;GAC7B;EACF;EAEA,MAAM,cAAc,eAAe;GACjC,IAAI,CAAC,SAAS,OAAO,OAAO,KAAA;GAS5B,MAAM,IAAI,UAPQ;IAChB,IAAI,MAAM,SAAS,MAAM,OAAO;IAChC,IAAI,MAAM,SAAS,MAAM,OAAO;IAChC,IAAI,MAAM,SAAS,MAAM,OAAO;IAChC,OAAO;GACT,EAAA,CAEa,EAAG;GAChB,OAAO;IACL,OAAO;IACP,UAAU;IACV,QAAQ;IACR,SAAS;GACX;EACF,CAAC;EAED,MAAM,YAAY,eAAe;GAC/B,OAAO,cAAc;IACnB,SAAS,MAAM;IACf,MAAM,MAAM;IACZ,MAAM,MAAM;IACZ,QAAQ,SAAS;GACnB,CAAC;EACH,CAAC;;uBAIC,YAoBY,wBAnBL,SAAA,KAAQ,GAAA;IACb,kBAAA;IACC,mBAAiB,MAAM;IACvB,gBAAc,MAAM;IACpB,MAAM,SAAA,UAAQ,WAAgB,MAAM,OAAO,KAAA;IAC3C,UAAU,eAAA;IACV,MAAM,OAAA,SAAM,CAAK,MAAM,WAAW,MAAM,OAAO,KAAA;IAC/C,QAAQ,OAAA,SAAM,CAAK,MAAM,WAAW,eAAA,QAAiB,KAAA;IACrD,KAAK,OAAA,SAAM,CAAK,MAAM,WAAW,YAAA,QAAc,KAAA;IAC/C,aAAW,MAAM,UAAO,SAAY,KAAA;IACpC,iBAAe,aAAA;IACf,cAAY,MAAM;IAClB,UAAU,OAAA,SAAU,MAAM,WAAQ,KAAQ,KAAA;IAC1C,OAAK,eAAA;KAAG,MAAA,iBAAA;KAAmB,UAAA;KAAW,QAAA,QAAO,uBAAA;IAAA,CAAA;IAC7C,OAAK,eAAE,YAAA,KAAW;IACH;;2BAEmE,CAAjE,MAAM,WAAA,UAAA,GAAxB,YAAmF,MAAA,qBAAA,GAAA;;KAAlD,OAAM;KAAuB,eAAY;wCAC1E,WAAQ,KAAA,QAAA,SAAA,CAAA,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GrCard-DUNMkuHW.js","names":[],"sources":["../../../../src/components/GrCard/GrCard.vue"],"sourcesContent":["<template>\n <div\n class=\"rounded-[var(--gr-radius-lg)] border border-[var(--brd)] bg-[var(--card)] text-[var(--card-fg)] shadow-sm\"\n>\n <slot />\n </div>\n</template>"],"mappings":";;;;mBAEM,OAAM,4GAA2G;;qBADrH,mBAIM,OAJN,YAIM,CADJ,WAAQ,KAAA,QAAA,SAAA,CAAA,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GrCheckbox-DJhzZZdO.js","names":[],"sources":["../../../../src/components/GrCheckbox/GrCheckbox.vue","../../../../src/components/GrCheckbox/GrCheckbox.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * GrCheckbox — GR-примитив чекбокса с нативным скрытым `<input type=\"checkbox\">`\n * для интеграции с HTML-формами (`FormData`, `required`, `form`).\n *\n * Источник истины — нативный input: клик по нему (в т.ч. по внешнему\n * `<label for=\"...\">`) слушается через `@change` и эмитит модель. Клик по видимой\n * части компонента переключает через корневой обработчик.\n *\n * Клавиатура: `Space` переключает значение (Enter — намеренно нет, это нестандартно\n * для чекбоксов). Фокус — на корневом элементе.\n * A11y: `role=\"checkbox\"` + `aria-checked` (`true`/`false`/`mixed`) + `aria-disabled`.\n */\nimport { onMounted, ref, watch } from 'vue'\nimport IconCheck from '~icons/lucide/check'\nimport IconMinus from '~icons/lucide/minus'\n\nexport interface GrCheckboxProps {\n modelValue?: boolean\n disabled?: boolean\n name?: string\n value?: string\n required?: boolean\n form?: string\n /** Пробрасывается на скрытый нативный `<input>`, чтобы работал `<label for=\"...\">`. */\n id?: string\n /** Промежуточное («смешанное») состояние: `aria-checked=\"mixed\"`, индикатор — тире. */\n indeterminate?: boolean\n}\n\nconst hiddenInputStyle = {\n position: 'absolute',\n opacity: '0',\n width: '0',\n height: '0',\n pointerEvents: 'none',\n} as const\n\nconst props = withDefaults(defineProps<GrCheckboxProps>(), {\n modelValue: false,\n disabled: false,\n name: undefined,\n value: 'on',\n required: false,\n form: undefined,\n id: undefined,\n indeterminate: false,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n}>()\n\n// Держим `.checked` на нативном input синхронно с пропом — `:checked`-биндинг\n// на скрытом элементе иногда отстаёт при программных обновлениях.\nconst nativeInput = ref<HTMLInputElement | null>(null)\nwatch(\n () => props.modelValue,\n (value) => {\n if (nativeInput.value && nativeInput.value.checked !== value)\n nativeInput.value.checked = value\n },\n)\n\n// `indeterminate` можно выставить только через JS-свойство (не атрибут).\nfunction syncIndeterminate(): void {\n if (nativeInput.value)\n nativeInput.value.indeterminate = props.indeterminate\n}\nwatch(() => props.indeterminate, syncIndeterminate)\nonMounted(syncIndeterminate)\n\nfunction setChecked(next: boolean): void {\n if (props.disabled)\n return\n emit('update:modelValue', next)\n}\n\nfunction toggle(): void {\n // Из промежуточного состояния переключаемся во «включено» (стандартное поведение).\n setChecked(props.indeterminate ? true : !props.modelValue)\n}\n\n// Клик по нативному input (в т.ч. по внешнему `<label for=\"...\">`) уже переключил его\n// `.checked` — берём значение как источник истины и эмитим модель.\nfunction onNativeChange(e: Event): void {\n setChecked((e.target as HTMLInputElement).checked)\n}\n\nfunction isInteractiveTarget(target: EventTarget | null): boolean {\n const el = target as HTMLElement | null\n if (!el)\n return false\n return !!el.closest('a,button,input,select,textarea,label,[role=\"button\"],[role=\"link\"]')\n}\n\nfunction onClick(e: MouseEvent): void {\n if (isInteractiveTarget(e.target))\n return\n toggle()\n}\n</script>\n<template>\n <div\n data-gr-checkbox\n class=\"inline-flex items-center gap-2 select-none focus-visible:outline-none focus-visible:rounded-[8px] focus-visible:shadow-[0_0_0_2px_var(--ring),0_0_0_4px_var(--bg)]\"\n role=\"checkbox\"\n :aria-checked=\"indeterminate ? 'mixed' : (modelValue ? 'true' : 'false')\"\n :aria-disabled=\"disabled ? 'true' : undefined\"\n :tabindex=\"disabled ? -1 : 0\"\n :class=\"disabled ? 'cursor-not-allowed opacity-70' : 'cursor-pointer'\"\n @click=\"onClick\"\n @keydown.space.prevent=\"toggle\"\n >\n <input\n :id=\"id\"\n ref=\"nativeInput\"\n type=\"checkbox\"\n :checked=\"modelValue\"\n :disabled=\"disabled\"\n :name=\"name\"\n :value=\"value\"\n :required=\"required\"\n :form=\"form\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n :style=\"hiddenInputStyle\"\n @change=\"onNativeChange\"\n >\n <span\n data-gr-checkbox-indicator\n aria-hidden=\"true\"\n class=\"h-4 w-4 rounded border flex items-center justify-center transition-colors duration-150\"\n :class=\"(modelValue || indeterminate)\n ? 'border-[var(--primary)] bg-[var(--primary)]'\n : 'border-[var(--brd)] bg-[var(--bg)]'\"\n >\n <IconMinus\n v-if=\"indeterminate\"\n class=\"gr-checkbox-icon h-3.5 w-3.5 text-[var(--primary-fg)]\"\n />\n <IconCheck\n v-else\n class=\"gr-checkbox-icon h-3.5 w-3.5 transition-transform transition-opacity duration-150\"\n :class=\"modelValue\n ? 'opacity-100 scale-100 text-[var(--primary-fg)]'\n : 'opacity-0 scale-75 text-transparent'\"\n />\n </span>\n <span class=\"text-sm text-[var(--muted-fg)]\">\n <slot />\n </span>\n </div>\n</template>\n","<script setup lang=\"ts\">\n/**\n * GrCheckbox — GR-примитив чекбокса с нативным скрытым `<input type=\"checkbox\">`\n * для интеграции с HTML-формами (`FormData`, `required`, `form`).\n *\n * Источник истины — нативный input: клик по нему (в т.ч. по внешнему\n * `<label for=\"...\">`) слушается через `@change` и эмитит модель. Клик по видимой\n * части компонента переключает через корневой обработчик.\n *\n * Клавиатура: `Space` переключает значение (Enter — намеренно нет, это нестандартно\n * для чекбоксов). Фокус — на корневом элементе.\n * A11y: `role=\"checkbox\"` + `aria-checked` (`true`/`false`/`mixed`) + `aria-disabled`.\n */\nimport { onMounted, ref, watch } from 'vue'\nimport IconCheck from '~icons/lucide/check'\nimport IconMinus from '~icons/lucide/minus'\n\nexport interface GrCheckboxProps {\n modelValue?: boolean\n disabled?: boolean\n name?: string\n value?: string\n required?: boolean\n form?: string\n /** Пробрасывается на скрытый нативный `<input>`, чтобы работал `<label for=\"...\">`. */\n id?: string\n /** Промежуточное («смешанное») состояние: `aria-checked=\"mixed\"`, индикатор — тире. */\n indeterminate?: boolean\n}\n\nconst hiddenInputStyle = {\n position: 'absolute',\n opacity: '0',\n width: '0',\n height: '0',\n pointerEvents: 'none',\n} as const\n\nconst props = withDefaults(defineProps<GrCheckboxProps>(), {\n modelValue: false,\n disabled: false,\n name: undefined,\n value: 'on',\n required: false,\n form: undefined,\n id: undefined,\n indeterminate: false,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n}>()\n\n// Держим `.checked` на нативном input синхронно с пропом — `:checked`-биндинг\n// на скрытом элементе иногда отстаёт при программных обновлениях.\nconst nativeInput = ref<HTMLInputElement | null>(null)\nwatch(\n () => props.modelValue,\n (value) => {\n if (nativeInput.value && nativeInput.value.checked !== value)\n nativeInput.value.checked = value\n },\n)\n\n// `indeterminate` можно выставить только через JS-свойство (не атрибут).\nfunction syncIndeterminate(): void {\n if (nativeInput.value)\n nativeInput.value.indeterminate = props.indeterminate\n}\nwatch(() => props.indeterminate, syncIndeterminate)\nonMounted(syncIndeterminate)\n\nfunction setChecked(next: boolean): void {\n if (props.disabled)\n return\n emit('update:modelValue', next)\n}\n\nfunction toggle(): void {\n // Из промежуточного состояния переключаемся во «включено» (стандартное поведение).\n setChecked(props.indeterminate ? true : !props.modelValue)\n}\n\n// Клик по нативному input (в т.ч. по внешнему `<label for=\"...\">`) уже переключил его\n// `.checked` — берём значение как источник истины и эмитим модель.\nfunction onNativeChange(e: Event): void {\n setChecked((e.target as HTMLInputElement).checked)\n}\n\nfunction isInteractiveTarget(target: EventTarget | null): boolean {\n const el = target as HTMLElement | null\n if (!el)\n return false\n return !!el.closest('a,button,input,select,textarea,label,[role=\"button\"],[role=\"link\"]')\n}\n\nfunction onClick(e: MouseEvent): void {\n if (isInteractiveTarget(e.target))\n return\n toggle()\n}\n</script>\n<template>\n <div\n data-gr-checkbox\n class=\"inline-flex items-center gap-2 select-none focus-visible:outline-none focus-visible:rounded-[8px] focus-visible:shadow-[0_0_0_2px_var(--ring),0_0_0_4px_var(--bg)]\"\n role=\"checkbox\"\n :aria-checked=\"indeterminate ? 'mixed' : (modelValue ? 'true' : 'false')\"\n :aria-disabled=\"disabled ? 'true' : undefined\"\n :tabindex=\"disabled ? -1 : 0\"\n :class=\"disabled ? 'cursor-not-allowed opacity-70' : 'cursor-pointer'\"\n @click=\"onClick\"\n @keydown.space.prevent=\"toggle\"\n >\n <input\n :id=\"id\"\n ref=\"nativeInput\"\n type=\"checkbox\"\n :checked=\"modelValue\"\n :disabled=\"disabled\"\n :name=\"name\"\n :value=\"value\"\n :required=\"required\"\n :form=\"form\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n :style=\"hiddenInputStyle\"\n @change=\"onNativeChange\"\n >\n <span\n data-gr-checkbox-indicator\n aria-hidden=\"true\"\n class=\"h-4 w-4 rounded border flex items-center justify-center transition-colors duration-150\"\n :class=\"(modelValue || indeterminate)\n ? 'border-[var(--primary)] bg-[var(--primary)]'\n : 'border-[var(--brd)] bg-[var(--bg)]'\"\n >\n <IconMinus\n v-if=\"indeterminate\"\n class=\"gr-checkbox-icon h-3.5 w-3.5 text-[var(--primary-fg)]\"\n />\n <IconCheck\n v-else\n class=\"gr-checkbox-icon h-3.5 w-3.5 transition-transform transition-opacity duration-150\"\n :class=\"modelValue\n ? 'opacity-100 scale-100 text-[var(--primary-fg)]'\n : 'opacity-0 scale-75 text-transparent'\"\n />\n </span>\n <span class=\"text-sm text-[var(--muted-fg)]\">\n <slot />\n </span>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BA,MAAM,mBAAmB;GACvB,UAAU;GACV,SAAS;GACT,OAAO;GACP,QAAQ;GACR,eAAe;EACjB;EAEA,MAAM,QAAQ;EAWd,MAAM,OAAO;EAMb,MAAM,cAAc,IAA6B,IAAI;EACrD,YACQ,MAAM,aACX,UAAU;GACT,IAAI,YAAY,SAAS,YAAY,MAAM,YAAY,OACrD,YAAY,MAAM,UAAU;EAChC,CACF;EAGA,SAAS,oBAA0B;GACjC,IAAI,YAAY,OACd,YAAY,MAAM,gBAAgB,MAAM;EAC5C;EACA,YAAY,MAAM,eAAe,iBAAiB;EAClD,UAAU,iBAAiB;EAE3B,SAAS,WAAW,MAAqB;GACvC,IAAI,MAAM,UACR;GACF,KAAK,qBAAqB,IAAI;EAChC;EAEA,SAAS,SAAe;GAEtB,WAAW,MAAM,gBAAgB,OAAO,CAAC,MAAM,UAAU;EAC3D;EAIA,SAAS,eAAe,GAAgB;GACtC,WAAY,EAAE,OAA4B,OAAO;EACnD;EAEA,SAAS,oBAAoB,QAAqC;GAChE,MAAM,KAAK;GACX,IAAI,CAAC,IACH,OAAO;GACT,OAAO,CAAC,CAAC,GAAG,QAAQ,wEAAoE;EAC1F;EAEA,SAAS,QAAQ,GAAqB;GACpC,IAAI,oBAAoB,EAAE,MAAM,GAC9B;GACF,OAAO;EACT;;uBAGE,mBAiDM,OAAA;IAhDJ,oBAAA;IACA,OAAK,eAAA,CAAC,sKAKE,QAAA,WAAQ,kCAAA,gBAAA,CAAA;IAJhB,MAAK;IACJ,gBAAc,QAAA,gBAAa,UAAc,QAAA,aAAU,SAAA;IACnD,iBAAe,QAAA,WAAQ,SAAY,KAAA;IACnC,UAAU,QAAA,WAAQ,KAAA;IAEX;IACP,WAAO,SAAA,cAAgB,QAAM,CAAA,SAAA,CAAA,GAAA,CAAA,OAAA,CAAA;;IAE9B,mBAcC,SAAA;KAbE,IAAI,QAAA;cACD;KAAJ,KAAI;KACJ,MAAK;KACJ,SAAS,QAAA;KACT,UAAU,QAAA;KACV,MAAM,QAAA;KACN,OAAO,QAAA;KACP,UAAU,QAAA;KACV,MAAM,QAAA;KACP,UAAS;KACT,eAAY;KACX,OAAO;KACP,UAAQ;;IAEX,mBAmBO,QAAA;KAlBL,8BAAA;KACA,eAAY;KACZ,OAAK,eAAA,CAAC,0FACG,QAAA,cAAc,QAAA,gBAAA,gDAAA,oCAAA,CAAA;QAKf,QAAA,iBAAA,UAAA,GADR,YAGE,MAAA,aAAA,GAAA;;KADA,OAAM;wBAER,YAME,MAAA,aAAA,GAAA;;KAJA,OAAK,eAAA,CAAC,qFACE,QAAA,aAAA,mDAAA,qCAAA,CAAA;;IAKZ,mBAEO,QAFP,YAEO,CADL,WAAQ,KAAA,QAAA,SAAA,CAAA,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GrCollapse-CPPLh_xU.js","names":[],"sources":["../../../../src/components/GrCollapse/grCollapseContext.ts","../../../../src/components/GrCollapse/GrCollapse.vue","../../../../src/components/GrCollapse/GrCollapse.vue","../../../../src/components/GrCollapse/GrCollapseItem.vue","../../../../src/components/GrCollapse/GrCollapseItem.vue"],"sourcesContent":["import type { ComputedRef, InjectionKey } from 'vue'\n\nexport type GrCollapseValue = string | number\n\nexport type GrCollapseModelValue = GrCollapseValue | GrCollapseValue[] | undefined\n\nexport type GrCollapseContext = {\n accordion: ComputedRef<boolean>\n disabled: ComputedRef<boolean>\n isActive: (name: GrCollapseValue) => boolean\n toggle: (name: GrCollapseValue) => void\n}\n\nexport const GR_COLLAPSE_CONTEXT: InjectionKey<GrCollapseContext> = Symbol('GR_COLLAPSE_CONTEXT')","<script setup lang=\"ts\">\nimport { computed, provide } from 'vue'\n\nimport GrCard from '../GrCard'\n\nimport {\n GR_COLLAPSE_CONTEXT,\n type GrCollapseContext,\n type GrCollapseModelValue,\n type GrCollapseValue,\n} from './grCollapseContext'\n\n/**\n * GrCollapse — контейнер секций `GrCollapseItem`.\n *\n * @prop modelValue — открытые секции. В `accordion`-режиме — `string|number|undefined`, иначе — массив значений.\n * @prop accordion — режим, когда одновременно может быть открыта только одна секция.\n * @prop disabled — блокирует взаимодействие со всеми секциями.\n * @prop divided — разделители между секциями.\n */\nexport interface GrCollapseProps {\n modelValue?: GrCollapseModelValue\n accordion?: boolean\n disabled?: boolean\n divided?: boolean\n}\n\nconst props = withDefaults(defineProps<GrCollapseProps>(), {\n modelValue: undefined,\n accordion: false,\n disabled: false,\n divided: true,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: GrCollapseModelValue): void\n (e: 'change', value: GrCollapseModelValue): void\n}>()\n\nconst activeSet = computed(() => {\n const value = props.modelValue\n\n if (props.accordion) {\n if (typeof value === 'string' || typeof value === 'number') {\n return new Set<GrCollapseValue>([value])\n }\n\n return new Set<GrCollapseValue>()\n }\n\n if (Array.isArray(value)) {\n return new Set<GrCollapseValue>(value)\n }\n\n if (typeof value === 'string' || typeof value === 'number') {\n return new Set<GrCollapseValue>([value])\n }\n\n return new Set<GrCollapseValue>()\n})\n\nfunction setModelValue(next: GrCollapseModelValue): void {\n emit('update:modelValue', next)\n emit('change', next)\n}\n\nfunction toggle(name: GrCollapseValue): void {\n if (props.disabled)\n return\n\n if (props.accordion) {\n const next = activeSet.value.has(name) ? undefined : name\n setModelValue(next)\n return\n }\n\n const current = Array.isArray(props.modelValue)\n ? [...props.modelValue]\n : typeof props.modelValue === 'string' || typeof props.modelValue === 'number'\n ? [props.modelValue]\n : []\n\n const exists = current.includes(name)\n const next = exists\n ? current.filter(x => x !== name)\n : [...current, name]\n\n setModelValue(next)\n}\n\nconst context: GrCollapseContext = {\n accordion: computed(() => props.accordion),\n disabled: computed(() => props.disabled),\n isActive: name => activeSet.value.has(name),\n toggle,\n}\n\nprovide(GR_COLLAPSE_CONTEXT, context)\n</script>\n\n<template>\n <GrCard data-gr-collapse>\n <div :class=\"divided ? 'divide-y divide-[var(--brd)]' : ''\">\n <slot />\n </div>\n </GrCard>\n</template>","<script setup lang=\"ts\">\nimport { computed, provide } from 'vue'\n\nimport GrCard from '../GrCard'\n\nimport {\n GR_COLLAPSE_CONTEXT,\n type GrCollapseContext,\n type GrCollapseModelValue,\n type GrCollapseValue,\n} from './grCollapseContext'\n\n/**\n * GrCollapse — контейнер секций `GrCollapseItem`.\n *\n * @prop modelValue — открытые секции. В `accordion`-режиме — `string|number|undefined`, иначе — массив значений.\n * @prop accordion — режим, когда одновременно может быть открыта только одна секция.\n * @prop disabled — блокирует взаимодействие со всеми секциями.\n * @prop divided — разделители между секциями.\n */\nexport interface GrCollapseProps {\n modelValue?: GrCollapseModelValue\n accordion?: boolean\n disabled?: boolean\n divided?: boolean\n}\n\nconst props = withDefaults(defineProps<GrCollapseProps>(), {\n modelValue: undefined,\n accordion: false,\n disabled: false,\n divided: true,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: GrCollapseModelValue): void\n (e: 'change', value: GrCollapseModelValue): void\n}>()\n\nconst activeSet = computed(() => {\n const value = props.modelValue\n\n if (props.accordion) {\n if (typeof value === 'string' || typeof value === 'number') {\n return new Set<GrCollapseValue>([value])\n }\n\n return new Set<GrCollapseValue>()\n }\n\n if (Array.isArray(value)) {\n return new Set<GrCollapseValue>(value)\n }\n\n if (typeof value === 'string' || typeof value === 'number') {\n return new Set<GrCollapseValue>([value])\n }\n\n return new Set<GrCollapseValue>()\n})\n\nfunction setModelValue(next: GrCollapseModelValue): void {\n emit('update:modelValue', next)\n emit('change', next)\n}\n\nfunction toggle(name: GrCollapseValue): void {\n if (props.disabled)\n return\n\n if (props.accordion) {\n const next = activeSet.value.has(name) ? undefined : name\n setModelValue(next)\n return\n }\n\n const current = Array.isArray(props.modelValue)\n ? [...props.modelValue]\n : typeof props.modelValue === 'string' || typeof props.modelValue === 'number'\n ? [props.modelValue]\n : []\n\n const exists = current.includes(name)\n const next = exists\n ? current.filter(x => x !== name)\n : [...current, name]\n\n setModelValue(next)\n}\n\nconst context: GrCollapseContext = {\n accordion: computed(() => props.accordion),\n disabled: computed(() => props.disabled),\n isActive: name => activeSet.value.has(name),\n toggle,\n}\n\nprovide(GR_COLLAPSE_CONTEXT, context)\n</script>\n\n<template>\n <GrCard data-gr-collapse>\n <div :class=\"divided ? 'divide-y divide-[var(--brd)]' : ''\">\n <slot />\n </div>\n </GrCard>\n</template>","<script setup lang=\"ts\">\nimport ChevronDownIcon from '~icons/lucide/chevron-down'\nimport { computed, getCurrentInstance, inject, ref } from 'vue'\n\nimport GrIcon from '../GrIcon'\n\nimport { GR_COLLAPSE_CONTEXT, type GrCollapseValue } from './grCollapseContext'\n\n/**\n * GrCollapseItem — одна секция `GrCollapse`. Должна использоваться строго внутри `GrCollapse`.\n *\n * @prop name — уникальный идентификатор секции (для `v-model` у `GrCollapse`); по умолчанию генерируется из `uid`.\n * @prop title — текст заголовка; можно заменить слотом `#title`.\n * @prop disabled — запрещает раскрытие/сворачивание секции.\n */\nexport interface GrCollapseItemProps {\n name?: GrCollapseValue\n title?: string\n disabled?: boolean\n}\n\nconst props = withDefaults(defineProps<GrCollapseItemProps>(), {\n name: undefined,\n title: undefined,\n disabled: false,\n})\n\nconst collapse = inject(GR_COLLAPSE_CONTEXT)\n\nif (!collapse) {\n throw new Error('GrCollapseItem must be used inside GrCollapse')\n}\n\nconst collapseContext = collapse\n\nconst instance = getCurrentInstance()\nconst uid = instance?.uid ?? Math.random()\n\nconst resolvedName = computed<GrCollapseValue>(() => {\n if (typeof props.name === 'string' || typeof props.name === 'number')\n return props.name\n\n return uid\n})\n\nconst resolvedDisabled = computed(() => collapseContext.disabled.value || props.disabled)\nconst expanded = computed(() => collapseContext.isActive(resolvedName.value))\n\nconst headerId = `gr-collapse-header-${uid}`\nconst panelId = `gr-collapse-panel-${uid}`\n\nconst triggerEl = ref<HTMLElement | null>(null)\n\nfunction onToggle(): void {\n if (resolvedDisabled.value)\n return\n\n collapseContext.toggle(resolvedName.value)\n}\n\nfunction getAllTriggers(): HTMLElement[] {\n const root = triggerEl.value?.closest('[data-gr-collapse]')\n if (!root)\n return []\n\n return Array.prototype.slice.call(root.querySelectorAll<HTMLElement>('[data-gr-collapse-trigger]')) as HTMLElement[]\n}\n\nfunction focusRelative(direction: 1 | -1): void {\n const current = triggerEl.value\n if (!current)\n return\n\n const triggers = getAllTriggers()\n const index = triggers.indexOf(current)\n if (index === -1 || triggers.length === 0)\n return\n\n const nextIndex = (index + direction + triggers.length) % triggers.length\n triggers[nextIndex]?.focus()\n}\n\nfunction focusEdge(edge: 'start' | 'end'): void {\n const triggers = getAllTriggers()\n if (triggers.length === 0)\n return\n\n ;(edge === 'start' ? triggers[0] : triggers.at(-1))?.focus()\n}\n\nfunction onKeydown(event: KeyboardEvent): void {\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n focusRelative(1)\n return\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n focusRelative(-1)\n return\n }\n\n if (event.key === 'Home') {\n event.preventDefault()\n focusEdge('start')\n return\n }\n\n if (event.key === 'End') {\n event.preventDefault()\n focusEdge('end')\n return\n }\n\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault()\n onToggle()\n }\n}\n</script>\n\n<template>\n <div\n data-gr-collapse-item\n class=\"text-[var(--fg)]\"\n >\n <h3 class=\"m-0\">\n <button\n :id=\"headerId\"\n ref=\"triggerEl\"\n data-gr-collapse-trigger\n type=\"button\"\n :aria-expanded=\"expanded ? 'true' : 'false'\"\n :aria-controls=\"panelId\"\n :disabled=\"resolvedDisabled\"\n class=\"w-full px-4 py-3 flex items-center justify-between gap-4 text-left transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] disabled:opacity-50 disabled:cursor-not-allowed\"\n :class=\"resolvedDisabled ? '' : 'hover:bg-[var(--muted)]'\"\n @click=\"onToggle\"\n @keydown=\"onKeydown\"\n >\n <span class=\"min-w-0\">\n <slot name=\"title\">\n <span class=\"text-sm font-600\">\n {{ title }}\n </span>\n </slot>\n </span>\n\n <GrIcon\n size=\"sm\"\n aria-hidden=\"true\"\n data-gr-collapse-chevron\n class=\"shrink-0 transition-transform duration-150 text-[var(--muted-fg)]\"\n :class=\"expanded ? 'rotate-180' : ''\"\n >\n <ChevronDownIcon />\n </GrIcon>\n </button>\n </h3>\n\n <div\n :id=\"panelId\"\n role=\"region\"\n :aria-labelledby=\"headerId\"\n class=\"grid transition-[grid-template-rows] duration-200\"\n :class=\"expanded ? 'grid-rows-[1fr]' : 'grid-rows-[0fr]'\"\n >\n <div class=\"overflow-hidden\">\n <div class=\"px-4 pb-4 text-sm text-[var(--muted-fg)]\">\n <slot />\n </div>\n </div>\n </div>\n </div>\n</template>","<script setup lang=\"ts\">\nimport ChevronDownIcon from '~icons/lucide/chevron-down'\nimport { computed, getCurrentInstance, inject, ref } from 'vue'\n\nimport GrIcon from '../GrIcon'\n\nimport { GR_COLLAPSE_CONTEXT, type GrCollapseValue } from './grCollapseContext'\n\n/**\n * GrCollapseItem — одна секция `GrCollapse`. Должна использоваться строго внутри `GrCollapse`.\n *\n * @prop name — уникальный идентификатор секции (для `v-model` у `GrCollapse`); по умолчанию генерируется из `uid`.\n * @prop title — текст заголовка; можно заменить слотом `#title`.\n * @prop disabled — запрещает раскрытие/сворачивание секции.\n */\nexport interface GrCollapseItemProps {\n name?: GrCollapseValue\n title?: string\n disabled?: boolean\n}\n\nconst props = withDefaults(defineProps<GrCollapseItemProps>(), {\n name: undefined,\n title: undefined,\n disabled: false,\n})\n\nconst collapse = inject(GR_COLLAPSE_CONTEXT)\n\nif (!collapse) {\n throw new Error('GrCollapseItem must be used inside GrCollapse')\n}\n\nconst collapseContext = collapse\n\nconst instance = getCurrentInstance()\nconst uid = instance?.uid ?? Math.random()\n\nconst resolvedName = computed<GrCollapseValue>(() => {\n if (typeof props.name === 'string' || typeof props.name === 'number')\n return props.name\n\n return uid\n})\n\nconst resolvedDisabled = computed(() => collapseContext.disabled.value || props.disabled)\nconst expanded = computed(() => collapseContext.isActive(resolvedName.value))\n\nconst headerId = `gr-collapse-header-${uid}`\nconst panelId = `gr-collapse-panel-${uid}`\n\nconst triggerEl = ref<HTMLElement | null>(null)\n\nfunction onToggle(): void {\n if (resolvedDisabled.value)\n return\n\n collapseContext.toggle(resolvedName.value)\n}\n\nfunction getAllTriggers(): HTMLElement[] {\n const root = triggerEl.value?.closest('[data-gr-collapse]')\n if (!root)\n return []\n\n return Array.prototype.slice.call(root.querySelectorAll<HTMLElement>('[data-gr-collapse-trigger]')) as HTMLElement[]\n}\n\nfunction focusRelative(direction: 1 | -1): void {\n const current = triggerEl.value\n if (!current)\n return\n\n const triggers = getAllTriggers()\n const index = triggers.indexOf(current)\n if (index === -1 || triggers.length === 0)\n return\n\n const nextIndex = (index + direction + triggers.length) % triggers.length\n triggers[nextIndex]?.focus()\n}\n\nfunction focusEdge(edge: 'start' | 'end'): void {\n const triggers = getAllTriggers()\n if (triggers.length === 0)\n return\n\n ;(edge === 'start' ? triggers[0] : triggers.at(-1))?.focus()\n}\n\nfunction onKeydown(event: KeyboardEvent): void {\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n focusRelative(1)\n return\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n focusRelative(-1)\n return\n }\n\n if (event.key === 'Home') {\n event.preventDefault()\n focusEdge('start')\n return\n }\n\n if (event.key === 'End') {\n event.preventDefault()\n focusEdge('end')\n return\n }\n\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault()\n onToggle()\n }\n}\n</script>\n\n<template>\n <div\n data-gr-collapse-item\n class=\"text-[var(--fg)]\"\n >\n <h3 class=\"m-0\">\n <button\n :id=\"headerId\"\n ref=\"triggerEl\"\n data-gr-collapse-trigger\n type=\"button\"\n :aria-expanded=\"expanded ? 'true' : 'false'\"\n :aria-controls=\"panelId\"\n :disabled=\"resolvedDisabled\"\n class=\"w-full px-4 py-3 flex items-center justify-between gap-4 text-left transition-colors duration-150 focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] disabled:opacity-50 disabled:cursor-not-allowed\"\n :class=\"resolvedDisabled ? '' : 'hover:bg-[var(--muted)]'\"\n @click=\"onToggle\"\n @keydown=\"onKeydown\"\n >\n <span class=\"min-w-0\">\n <slot name=\"title\">\n <span class=\"text-sm font-600\">\n {{ title }}\n </span>\n </slot>\n </span>\n\n <GrIcon\n size=\"sm\"\n aria-hidden=\"true\"\n data-gr-collapse-chevron\n class=\"shrink-0 transition-transform duration-150 text-[var(--muted-fg)]\"\n :class=\"expanded ? 'rotate-180' : ''\"\n >\n <ChevronDownIcon />\n </GrIcon>\n </button>\n </h3>\n\n <div\n :id=\"panelId\"\n role=\"region\"\n :aria-labelledby=\"headerId\"\n class=\"grid transition-[grid-template-rows] duration-200\"\n :class=\"expanded ? 'grid-rows-[1fr]' : 'grid-rows-[0fr]'\"\n >\n <div class=\"overflow-hidden\">\n <div class=\"px-4 pb-4 text-sm text-[var(--muted-fg)]\">\n <slot />\n </div>\n </div>\n </div>\n </div>\n</template>"],"mappings":";;;;AAaA,IAAa,sBAAuD,OAAO,qBAAqB;;;;;;;;;;;;;;;;;;;;;;ECchG,MAAM,QAAQ;EAOd,MAAM,OAAO;EAKb,MAAM,YAAY,eAAe;GAC/B,MAAM,QAAQ,MAAM;GAEpB,IAAI,MAAM,WAAW;IACnB,IAAI,OAAO,UAAU,YAAY,OAAO,UAAU,UAChD,uBAAO,IAAI,IAAqB,CAAC,KAAK,CAAC;IAGzC,uBAAO,IAAI,IAAqB;GAClC;GAEA,IAAI,MAAM,QAAQ,KAAK,GACrB,OAAO,IAAI,IAAqB,KAAK;GAGvC,IAAI,OAAO,UAAU,YAAY,OAAO,UAAU,UAChD,uBAAO,IAAI,IAAqB,CAAC,KAAK,CAAC;GAGzC,uBAAO,IAAI,IAAqB;EAClC,CAAC;EAED,SAAS,cAAc,MAAkC;GACvD,KAAK,qBAAqB,IAAI;GAC9B,KAAK,UAAU,IAAI;EACrB;EAEA,SAAS,OAAO,MAA6B;GAC3C,IAAI,MAAM,UACR;GAEF,IAAI,MAAM,WAAW;IAEnB,cADa,UAAU,MAAM,IAAI,IAAI,IAAI,KAAA,IAAY,IACnC;IAClB;GACF;GAEA,MAAM,UAAU,MAAM,QAAQ,MAAM,UAAU,IAC1C,CAAC,GAAG,MAAM,UAAU,IACpB,OAAO,MAAM,eAAe,YAAY,OAAO,MAAM,eAAe,WAClE,CAAC,MAAM,UAAU,IACjB,CAAC;GAOP,cALe,QAAQ,SAAS,IACnB,IACT,QAAQ,QAAO,MAAK,MAAM,IAAI,IAC9B,CAAC,GAAG,SAAS,IAAI,CAEH;EACpB;EASA,QAAQ,qBAAqB;GAN3B,WAAW,eAAe,MAAM,SAAS;GACzC,UAAU,eAAe,MAAM,QAAQ;GACvC,WAAU,SAAQ,UAAU,MAAM,IAAI,IAAI;GAC1C;EAG2B,CAAO;;uBAIlC,YAIS,MAAA,cAAA,GAAA,EAJD,oBAAA,GAAgB,GAAA;2BAGhB,CAFN,mBAEM,OAAA,EAFA,OAAK,eAAE,QAAA,UAAO,iCAAA,EAAA,EAAA,GAAA,CAClB,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EElFd,MAAM,QAAQ;EAMd,MAAM,WAAW,OAAO,mBAAmB;EAE3C,IAAI,CAAC,UACH,MAAM,IAAI,MAAM,+CAA+C;EAGjE,MAAM,kBAAkB;EAGxB,MAAM,MADW,mBACL,CAAA,EAAU,OAAO,KAAK,OAAO;EAEzC,MAAM,eAAe,eAAgC;GACnD,IAAI,OAAO,MAAM,SAAS,YAAY,OAAO,MAAM,SAAS,UAC1D,OAAO,MAAM;GAEf,OAAO;EACT,CAAC;EAED,MAAM,mBAAmB,eAAe,gBAAgB,SAAS,SAAS,MAAM,QAAQ;EACxF,MAAM,WAAW,eAAe,gBAAgB,SAAS,aAAa,KAAK,CAAC;EAE5E,MAAM,WAAW,sBAAsB;EACvC,MAAM,UAAU,qBAAqB;EAErC,MAAM,YAAY,IAAwB,IAAI;EAE9C,SAAS,WAAiB;GACxB,IAAI,iBAAiB,OACnB;GAEF,gBAAgB,OAAO,aAAa,KAAK;EAC3C;EAEA,SAAS,iBAAgC;GACvC,MAAM,OAAO,UAAU,OAAO,QAAQ,oBAAoB;GAC1D,IAAI,CAAC,MACH,OAAO,CAAC;GAEV,OAAO,MAAM,UAAU,MAAM,KAAK,KAAK,iBAA8B,4BAA4B,CAAC;EACpG;EAEA,SAAS,cAAc,WAAyB;GAC9C,MAAM,UAAU,UAAU;GAC1B,IAAI,CAAC,SACH;GAEF,MAAM,WAAW,eAAe;GAChC,MAAM,QAAQ,SAAS,QAAQ,OAAO;GACtC,IAAI,UAAU,MAAM,SAAS,WAAW,GACtC;GAGF,UADmB,QAAQ,YAAY,SAAS,UAAU,SAAS,OAChD,EAAE,MAAM;EAC7B;EAEA,SAAS,UAAU,MAA6B;GAC9C,MAAM,WAAW,eAAe;GAChC,IAAI,SAAS,WAAW,GACtB;GAED,CAAC,SAAS,UAAU,SAAS,KAAK,SAAS,GAAG,EAAE,EAAA,EAAI,MAAM;EAC7D;EAEA,SAAS,UAAU,OAA4B;GAC7C,IAAI,MAAM,QAAQ,aAAa;IAC7B,MAAM,eAAe;IACrB,cAAc,CAAC;IACf;GACF;GAEA,IAAI,MAAM,QAAQ,WAAW;IAC3B,MAAM,eAAe;IACrB,cAAc,EAAE;IAChB;GACF;GAEA,IAAI,MAAM,QAAQ,QAAQ;IACxB,MAAM,eAAe;IACrB,UAAU,OAAO;IACjB;GACF;GAEA,IAAI,MAAM,QAAQ,OAAO;IACvB,MAAM,eAAe;IACrB,UAAU,KAAK;IACf;GACF;GAEA,IAAI,MAAM,QAAQ,OAAO,MAAM,QAAQ,SAAS;IAC9C,MAAM,eAAe;IACrB,SAAS;GACX;EACF;;uBAIE,mBAmDM,OAnDN,YAmDM,CA/CJ,mBAgCK,MAhCL,YAgCK,CA/BH,mBA8BS,UAAA;IA7BN,IAAI;aACD;IAAJ,KAAI;IACJ,4BAAA;IACA,MAAK;IACJ,iBAAe,SAAA,QAAQ,SAAA;IACvB,iBAAe;IACf,UAAU,iBAAA;IACX,OAAK,eAAA,CAAC,8NACE,iBAAA,QAAgB,KAAA,yBAAA,CAAA;IACvB,SAAO;IACE;OAEV,mBAMO,QANP,YAMO,CALL,WAIO,KAAA,QAAA,SAAA,CAAA,SAAA,CAHL,mBAEO,QAFP,YAEO,gBADF,QAAA,KAAK,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAKd,YAQS,MAAA,cAAA,GAAA;IAPP,MAAK;IACL,eAAY;IACZ,4BAAA;IACA,OAAK,eAAA,CAAC,qEACE,SAAA,QAAQ,eAAA,EAAA,CAAA;;2BAEG,CAAnB,YAAmB,MAAA,oBAAA,CAAA,CAAA,CAAA;;yCAKzB,mBAYM,OAAA;IAXH,IAAI;IACL,MAAK;IACJ,mBAAiB;IAClB,OAAK,eAAA,CAAC,qDACE,SAAA,QAAQ,oBAAA,iBAAA,CAAA;OAEhB,mBAIM,OAJN,YAIM,CAHJ,mBAEM,OAFN,YAEM,CADJ,WAAQ,KAAA,QAAA,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA"}
|