@feugene/granularity 0.11.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-1uSYl98Y.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-BWiPnygb.js +5 -0
- package/dist/chunks/config-BWiPnygb.js.map +1 -0
- package/dist/chunks/config-BX1JTrkV.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-DUcu1D68.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-CrG1XiE7.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-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-BIRO0vDJ2.js → config-DPDFYzIa.js} +2 -2
- package/dist/chunks/config-DPDFYzIa.js.map +1 -0
- package/dist/chunks/{config-DnvPqu4g.js → config-DRKXJ9PW2.js} +1 -1
- package/dist/chunks/config-DRKXJ9PW2.js.map +1 -0
- 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-Dlm49Jp5.js +5 -0
- package/dist/chunks/config-Dlm49Jp5.js.map +1 -0
- package/dist/chunks/config-DpqOnJiz.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-C4snOIXg.js → config-KXuionN3.js} +1 -1
- package/dist/chunks/{config-C4snOIXg.js.map → config-KXuionN3.js.map} +1 -1
- package/dist/chunks/config-LGrZIdaZ.js.map +1 -0
- 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 +9 -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-DdNIxa1w.js +9 -0
- package/dist/chunks/context-DdNIxa1w.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-BdtiS2d3.js → en-Cr6EkG8c.js} +52 -4
- package/dist/chunks/en-Cr6EkG8c.js.map +1 -0
- package/dist/chunks/{es-DBhctWg-.js → es-DuYb1Qju.js} +3 -3
- package/dist/chunks/{es-DBhctWg-.js.map → es-DuYb1Qju.js.map} +1 -1
- package/dist/chunks/{es-BGRMZbe9.js → es-i08e9Sdo.js} +52 -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/grModalEscStack-BXk-9mv7.js +43 -0
- package/dist/chunks/grModalEscStack-BXk-9mv7.js.map +1 -0
- 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-BFCnOiML.js → ru-B5XOOYZt.js} +52 -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/chunks/{transition-TLFw4KBn.js → useScrollLock-K7kaP2Ud.js} +52 -1
- package/dist/chunks/useScrollLock-K7kaP2Ud.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-BWYKCsHd.js → GrConfirmDialog-e4120mWw.js} +5 -5
- package/dist/components/GrConfirmDialog/chunks/GrConfirmDialog-e4120mWw.js.map +1 -0
- package/dist/components/GrConfirmDialog/index.js +1 -1
- package/dist/components/GrDataTable/chunks/GrDataTable-C1CzxV0p.js +307 -0
- 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-5DAS-1Lb.js → GrDialog-BPMvDHOz.js} +6 -6
- 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-DY_fmaMu.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-BdENZ1w0.js +54 -0
- package/dist/components/GrDivider/chunks/GrDivider-BdENZ1w0.js.map +1 -0
- package/dist/components/GrDivider/index.js +3 -0
- package/dist/components/GrDrawer/chunks/{GrDrawer-D1kzsjXN.js → GrDrawer-KevdZ5BB.js} +41 -17
- 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-BXb5Cxxf.js → GrDropdown-BKoy8hm-.js} +91 -5
- package/dist/components/GrDropdown/chunks/GrDropdown-BKoy8hm-.js.map +1 -0
- package/dist/components/GrDropdown/index.js +2 -2
- package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-DFEJLPcV.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-CXCDBd99.js +100 -0
- package/dist/components/GrFormField/chunks/GrFormField-CXCDBd99.js.map +1 -0
- package/dist/components/GrFormField/index.js +3 -2
- 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-OCUIrNh2.js → GrImageViewer-DDLJkvIU.js} +312 -223
- package/dist/components/GrImageViewer/chunks/GrImageViewer-DDLJkvIU.js.map +1 -0
- package/dist/components/GrImageViewer/index.js +1 -1
- package/dist/components/GrInput/chunks/GrInput-C1VBL0dg.js +337 -0
- 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-DTspwtoN.js +22 -0
- package/dist/components/GrKbd/chunks/GrKbd-DTspwtoN.js.map +1 -0
- package/dist/components/GrKbd/index.js +3 -0
- 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-BkjW9jZS.js → GrModal-BTu1-5eY.js} +4 -57
- package/dist/components/GrModal/chunks/GrModal-BTu1-5eY.js.map +1 -0
- 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-CldPIWQx.js → GrNumberInput-l9ZOHG9D.js} +112 -28
- 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-Bu9wv6it.js → GrPagination-C5Y69CuK.js} +59 -16
- package/dist/components/GrPagination/chunks/GrPagination-C5Y69CuK.js.map +1 -0
- package/dist/components/GrPagination/index.js +1 -1
- 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-TmWXbpEP.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-CPTixXaY.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-vKZCbkCp.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-RShK21lK.js → GrSelect-Dn3FgJ3Z.js} +293 -87
- 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 +1 -1
- 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-DeEMgb_y.js +68 -0
- package/dist/components/GrTabPanels/chunks/GrTabPanels-DeEMgb_y.js.map +1 -0
- package/dist/components/GrTabPanels/index.js +3 -0
- 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-Z-FDJUr_.js → GrTabs-BqTak0SR.js} +9 -4
- 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-D56YxhKq.js → GrTextarea-DIYBAPpP.js} +16 -6
- 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-eI8YvnIo.js → GrToaster-BVHjIHcM.js} +52 -11
- package/dist/components/GrToaster/chunks/GrToaster-BVHjIHcM.js.map +1 -0
- package/dist/components/GrToaster/index.js +2 -2
- 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-D3ODe2dB.js → GrTree-_12ChXRQ.js} +108 -9
- package/dist/components/GrTree/chunks/GrTree-_12ChXRQ.js.map +1 -0
- package/dist/components/GrTree/index.js +2 -2
- package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-B2xBKs5Q.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 +112 -87
- package/dist/index.js.map +1 -1
- package/dist/styles/base.css +30 -8
- package/dist/styles/index.css +6 -3
- package/dist/styles/preflight.css +8 -4
- 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 +48 -4
- 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/GrDivider/GrDivider.vue.d.ts +58 -0
- package/dist/types/src/components/GrDivider/config.d.ts +1 -0
- package/dist/types/src/components/GrDivider/index.d.ts +4 -0
- package/dist/types/src/components/GrDrawer/GrDrawer.vue.d.ts +5 -5
- package/dist/types/src/components/GrDropdown/GrDropdown.vue.d.ts +8 -1
- package/dist/types/src/components/GrDropdownMenu/GrDropdownMenu.vue.d.ts +7 -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 +25 -2
- package/dist/types/src/components/GrFormField/context.d.ts +20 -0
- package/dist/types/src/components/GrFormField/index.d.ts +1 -0
- package/dist/types/src/components/GrFormFile/GrFormFile.vue.d.ts +4 -4
- package/dist/types/src/components/GrImageViewer/GrImageViewer.vue.d.ts +7 -3
- package/dist/types/src/components/GrImageViewer/composables/useViewerKeyboard.d.ts +20 -0
- package/dist/types/src/components/GrImageViewer/composables/useWheelGesture.d.ts +16 -0
- package/dist/types/src/components/GrImageViewer/composables/useZoomPan.d.ts +50 -0
- package/dist/types/src/components/GrInput/GrInput.vue.d.ts +49 -10
- 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/GrKbd/GrKbd.vue.d.ts +46 -0
- package/dist/types/src/components/GrKbd/config.d.ts +1 -0
- package/dist/types/src/components/GrKbd/index.d.ts +4 -0
- 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 +25 -9
- 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/GrTabPanels/GrTabPanel.vue.d.ts +46 -0
- package/dist/types/src/components/GrTabPanels/GrTabPanels.vue.d.ts +51 -0
- package/dist/types/src/components/GrTabPanels/config.d.ts +5 -0
- package/dist/types/src/components/GrTabPanels/context.d.ts +9 -0
- package/dist/types/src/components/GrTabPanels/index.d.ts +6 -0
- package/dist/types/src/components/GrTable/GrTable.vue.d.ts +16 -0
- package/dist/types/src/components/GrTabs/GrTabs.vue.d.ts +6 -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/GrTree/grTreeInteractionContext.d.ts +2 -0
- 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/internal/useScrollLock.d.ts +24 -0
- package/dist/types/src/composables/useToast.d.ts +24 -0
- package/dist/types/src/granular-provider/shared.d.ts +10 -0
- package/dist/types/src/i18n/messages/en.d.ts +84 -0
- package/dist/types/src/i18n/messages/es.d.ts +84 -0
- package/dist/types/src/i18n/messages/ru.d.ts +84 -0
- package/dist/types/src/index.d.ts +10 -0
- package/dist/web-types.json +1642 -356
- package/package.json +41 -1
- package/dist/chunks/config-1uSYl98Y.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-BIRO0vDJ2.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-C7NpDrfO.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-CrG1XiE7.js.map +0 -1
- package/dist/chunks/config-DUcu1D68.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-DnvPqu4g.js.map +0 -1
- package/dist/chunks/config-DpqOnJiz2.js.map +0 -1
- package/dist/chunks/config-LGrZIdaZ2.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-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-BdtiS2d3.js.map +0 -1
- package/dist/chunks/es-BGRMZbe9.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-BFCnOiML.js.map +0 -1
- package/dist/chunks/shared-ChvcQgDl.js +0 -168
- package/dist/chunks/shared-ChvcQgDl.js.map +0 -1
- package/dist/chunks/transition-TLFw4KBn.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-BWYKCsHd.js.map +0 -1
- package/dist/components/GrDataTable/chunks/GrDataTable-ptbARmJ3.js +0 -179
- package/dist/components/GrDataTable/chunks/GrDataTable-ptbARmJ3.js.map +0 -1
- package/dist/components/GrDialog/chunks/GrDialog-5DAS-1Lb.js.map +0 -1
- package/dist/components/GrDialogService/chunks/GrDialogService-DY_fmaMu.js.map +0 -1
- package/dist/components/GrDrawer/chunks/GrDrawer-D1kzsjXN.js.map +0 -1
- package/dist/components/GrDropdown/chunks/GrDropdown-BXb5Cxxf.js.map +0 -1
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-DFEJLPcV.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-BujNQrw8.js +0 -35
- package/dist/components/GrFormField/chunks/GrFormField-BujNQrw8.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/GrImageViewer/chunks/GrImageViewer-OCUIrNh2.js.map +0 -1
- package/dist/components/GrInput/chunks/GrInput-C8pOJgCi.js +0 -188
- package/dist/components/GrInput/chunks/GrInput-C8pOJgCi.js.map +0 -1
- package/dist/components/GrInputTag/chunks/GrInputTag-zMgFqp2g.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/GrModal/chunks/GrModal-BkjW9jZS.js.map +0 -1
- package/dist/components/GrNavbar/chunks/GrNavbar-DW3MiIIf.js.map +0 -1
- package/dist/components/GrNumberInput/chunks/GrNumberInput-CldPIWQx.js.map +0 -1
- package/dist/components/GrPagination/chunks/GrPagination-Bu9wv6it.js.map +0 -1
- package/dist/components/GrProgressBar/chunks/GrProgressBar-CC3z-Zqp.js.map +0 -1
- package/dist/components/GrPromptDialog/chunks/GrPromptDialog-TmWXbpEP.js.map +0 -1
- package/dist/components/GrRadio/chunks/GrRadio-CPTixXaY.js.map +0 -1
- package/dist/components/GrRadioGroup/chunks/GrRadioGroup-vKZCbkCp.js.map +0 -1
- package/dist/components/GrSegmented/chunks/GrSegmented-C1y0UXpQ.js.map +0 -1
- package/dist/components/GrSelect/chunks/GrSelect-RShK21lK.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-Z-FDJUr_.js.map +0 -1
- package/dist/components/GrTextarea/chunks/GrTextarea-D56YxhKq.js.map +0 -1
- package/dist/components/GrToaster/chunks/GrToaster-eI8YvnIo.js.map +0 -1
- package/dist/components/GrTooltip/chunks/GrTooltip-BeyZ8ssR.js.map +0 -1
- package/dist/components/GrTree/chunks/GrTree-D3ODe2dB.js.map +0 -1
- package/dist/components/GrTreeSelect/chunks/GrTreeSelect-B2xBKs5Q.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-DpqOnJiz2.js → config-DpqOnJiz.js} +0 -0
- package/dist/chunks/{config-Cpi9Mh2J.js → config-Dqy0rPPO2.js} +1 -1
- /package/dist/chunks/{config-LGrZIdaZ2.js → config-LGrZIdaZ.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-ipvU0lzP2.js → config-ipvU0lzP.js} +0 -0
- /package/dist/chunks/{config-xR4XVmcy.js → config-xR4XVmcy2.js} +0 -0
|
@@ -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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GrConfirmDialog-BWYKCsHd.js","names":[],"sources":["../../../../src/components/GrConfirmDialog/GrConfirmDialog.vue","../../../../src/components/GrConfirmDialog/GrConfirmDialog.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * GrConfirmDialog — GR-примитив диалога подтверждения поверх `GrDialog`.\n *\n * Синхронизирован с `GrDialog`/`GrPromptDialog` по набору проп-проксирования:\n * `size`, `closeOnBackdrop`, `closeOnEsc`, `showHeader`, `showCloseButton`,\n * `headerConfig`, `footerConfig`, `bodyConfig`, `closeLabel`.\n *\n * Клик по «Confirm»/«Cancel» эмитит одноимённое событие и закрывает диалог\n * через `update:modelValue`.\n */\nimport { computed } from 'vue'\n\nimport GrButton from '../GrButton/GrButton.vue'\nimport GrDialog from '../GrDialog/GrDialog.vue'\nimport GrResponseErrorBanner from '../GrResponseErrorBanner/GrResponseErrorBanner.vue'\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\nimport type { GrButtonSize, GrButtonTone, GrButtonVariant } from '../GrButton'\nimport type { GrDialogSectionConfig, GrDialogSize } from '../GrDialog'\nimport type { ResponseErrorInfo } from '../GrResponseErrorBanner'\n\nexport interface GrConfirmDialogProps {\n modelValue: boolean\n title?: string\n description?: string\n closeOnBackdrop?: boolean\n closeOnEsc?: boolean\n showHeader?: boolean\n showCloseButton?: boolean\n size?: GrDialogSize\n headerConfig?: GrDialogSectionConfig\n footerConfig?: GrDialogSectionConfig\n bodyConfig?: GrDialogSectionConfig\n /** A11y-лейбл кнопки закрытия (i18n). */\n closeLabel?: string\n buttonSize?: GrButtonSize\n confirmText?: string\n cancelText?: string\n confirmVariant?: GrButtonVariant\n confirmTone?: GrButtonTone\n /**\n * Структура ошибки ответа сервера для показа в теле диалога\n * (через `GrResponseErrorBanner`). Используется императивным\n * `useDialogService` для async-`onConfirm`. `null` — блок скрыт.\n */\n error?: ResponseErrorInfo | null\n /** Состояние загрузки кнопки Confirm (async-`onConfirm` in-flight). */\n confirmLoading?: boolean\n /** Принудительно дизейблит кнопку Confirm. */\n confirmDisabled?: boolean\n /**\n * Закрывать ли диалог автоматически по клику Confirm. По умолчанию `true`\n * (историческое поведение). `false` — отдаёт управление закрытием наружу\n * (нужно `useDialogService`, который ждёт результат async-`onConfirm`).\n */\n closeOnConfirm?: boolean\n}\n\nconst props = withDefaults(defineProps<GrConfirmDialogProps>(), {\n title: undefined,\n description: undefined,\n closeOnBackdrop: true,\n closeOnEsc: true,\n showHeader: true,\n showCloseButton: true,\n size: 'md',\n headerConfig: undefined,\n footerConfig: undefined,\n bodyConfig: undefined,\n closeLabel: undefined,\n buttonSize: undefined,\n confirmText: undefined,\n cancelText: undefined,\n confirmVariant: 'primary',\n confirmTone: 'primary',\n error: null,\n confirmLoading: false,\n confirmDisabled: false,\n closeOnConfirm: true,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'confirm'): void\n (e: 'cancel'): void\n}>()\n\n// Дефолты берём из общего i18n-блока пакета (fallback — англ.), а не хардкодим.\nconst { t } = useGranularityTranslations()\nconst resolvedTitle = computed(() => props.title ?? t('gr.dialog.confirm.title', 'Confirm'))\nconst resolvedCloseLabel = computed(() => props.closeLabel ?? t('gr.common.close', 'Close'))\nconst resolvedConfirmText = computed(() => props.confirmText ?? t('gr.common.confirm', 'Confirm'))\nconst resolvedCancelText = computed(() => props.cancelText ?? t('gr.common.cancel', 'Cancel'))\n\nconst open = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value),\n})\n\nfunction onCancel(): void {\n emit('cancel')\n emit('update:modelValue', false)\n}\n\nfunction onConfirm(): void {\n emit('confirm')\n if (props.closeOnConfirm)\n emit('update:modelValue', false)\n}\n</script>\n\n<template>\n <GrDialog\n v-model=\"open\"\n :title=\"resolvedTitle\"\n :size=\"size\"\n :close-on-backdrop=\"closeOnBackdrop\"\n :close-on-esc=\"closeOnEsc\"\n :show-header=\"showHeader\"\n :show-close-button=\"showCloseButton\"\n :header-config=\"headerConfig\"\n :footer-config=\"footerConfig\"\n :body-config=\"bodyConfig\"\n :close-label=\"resolvedCloseLabel\"\n >\n <div class=\"grid gap-4\">\n <slot>\n <div v-if=\"description\" class=\"text-[14px] text-[var(--muted-fg)]\">\n {{ description }}\n </div>\n </slot>\n\n <slot name=\"error\" :error=\"error\">\n <GrResponseErrorBanner v-if=\"error\" :error=\"error\" :can-dismiss=\"false\" />\n </slot>\n </div>\n\n <template #footer>\n <slot name=\"footer\">\n <div class=\"flex items-center justify-end gap-3\">\n <GrButton data-testid=\"gr-confirm-cancel\" variant=\"outline\" :size=\"buttonSize\" @click=\"onCancel\">\n {{ resolvedCancelText }}\n </GrButton>\n <GrButton\n data-testid=\"gr-confirm-confirm\"\n :variant=\"confirmVariant\"\n :tone=\"confirmTone\"\n :size=\"buttonSize\"\n :loading=\"confirmLoading\"\n :disabled=\"confirmDisabled\"\n @click=\"onConfirm\"\n >\n {{ resolvedConfirmText }}\n </GrButton>\n </div>\n </slot>\n </template>\n </GrDialog>\n</template>\n","<script setup lang=\"ts\">\n/**\n * GrConfirmDialog — GR-примитив диалога подтверждения поверх `GrDialog`.\n *\n * Синхронизирован с `GrDialog`/`GrPromptDialog` по набору проп-проксирования:\n * `size`, `closeOnBackdrop`, `closeOnEsc`, `showHeader`, `showCloseButton`,\n * `headerConfig`, `footerConfig`, `bodyConfig`, `closeLabel`.\n *\n * Клик по «Confirm»/«Cancel» эмитит одноимённое событие и закрывает диалог\n * через `update:modelValue`.\n */\nimport { computed } from 'vue'\n\nimport GrButton from '../GrButton/GrButton.vue'\nimport GrDialog from '../GrDialog/GrDialog.vue'\nimport GrResponseErrorBanner from '../GrResponseErrorBanner/GrResponseErrorBanner.vue'\nimport { useGranularityTranslations } from '../../internal/granularityI18n'\nimport type { GrButtonSize, GrButtonTone, GrButtonVariant } from '../GrButton'\nimport type { GrDialogSectionConfig, GrDialogSize } from '../GrDialog'\nimport type { ResponseErrorInfo } from '../GrResponseErrorBanner'\n\nexport interface GrConfirmDialogProps {\n modelValue: boolean\n title?: string\n description?: string\n closeOnBackdrop?: boolean\n closeOnEsc?: boolean\n showHeader?: boolean\n showCloseButton?: boolean\n size?: GrDialogSize\n headerConfig?: GrDialogSectionConfig\n footerConfig?: GrDialogSectionConfig\n bodyConfig?: GrDialogSectionConfig\n /** A11y-лейбл кнопки закрытия (i18n). */\n closeLabel?: string\n buttonSize?: GrButtonSize\n confirmText?: string\n cancelText?: string\n confirmVariant?: GrButtonVariant\n confirmTone?: GrButtonTone\n /**\n * Структура ошибки ответа сервера для показа в теле диалога\n * (через `GrResponseErrorBanner`). Используется императивным\n * `useDialogService` для async-`onConfirm`. `null` — блок скрыт.\n */\n error?: ResponseErrorInfo | null\n /** Состояние загрузки кнопки Confirm (async-`onConfirm` in-flight). */\n confirmLoading?: boolean\n /** Принудительно дизейблит кнопку Confirm. */\n confirmDisabled?: boolean\n /**\n * Закрывать ли диалог автоматически по клику Confirm. По умолчанию `true`\n * (историческое поведение). `false` — отдаёт управление закрытием наружу\n * (нужно `useDialogService`, который ждёт результат async-`onConfirm`).\n */\n closeOnConfirm?: boolean\n}\n\nconst props = withDefaults(defineProps<GrConfirmDialogProps>(), {\n title: undefined,\n description: undefined,\n closeOnBackdrop: true,\n closeOnEsc: true,\n showHeader: true,\n showCloseButton: true,\n size: 'md',\n headerConfig: undefined,\n footerConfig: undefined,\n bodyConfig: undefined,\n closeLabel: undefined,\n buttonSize: undefined,\n confirmText: undefined,\n cancelText: undefined,\n confirmVariant: 'primary',\n confirmTone: 'primary',\n error: null,\n confirmLoading: false,\n confirmDisabled: false,\n closeOnConfirm: true,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'confirm'): void\n (e: 'cancel'): void\n}>()\n\n// Дефолты берём из общего i18n-блока пакета (fallback — англ.), а не хардкодим.\nconst { t } = useGranularityTranslations()\nconst resolvedTitle = computed(() => props.title ?? t('gr.dialog.confirm.title', 'Confirm'))\nconst resolvedCloseLabel = computed(() => props.closeLabel ?? t('gr.common.close', 'Close'))\nconst resolvedConfirmText = computed(() => props.confirmText ?? t('gr.common.confirm', 'Confirm'))\nconst resolvedCancelText = computed(() => props.cancelText ?? t('gr.common.cancel', 'Cancel'))\n\nconst open = computed({\n get: () => props.modelValue,\n set: (value: boolean) => emit('update:modelValue', value),\n})\n\nfunction onCancel(): void {\n emit('cancel')\n emit('update:modelValue', false)\n}\n\nfunction onConfirm(): void {\n emit('confirm')\n if (props.closeOnConfirm)\n emit('update:modelValue', false)\n}\n</script>\n\n<template>\n <GrDialog\n v-model=\"open\"\n :title=\"resolvedTitle\"\n :size=\"size\"\n :close-on-backdrop=\"closeOnBackdrop\"\n :close-on-esc=\"closeOnEsc\"\n :show-header=\"showHeader\"\n :show-close-button=\"showCloseButton\"\n :header-config=\"headerConfig\"\n :footer-config=\"footerConfig\"\n :body-config=\"bodyConfig\"\n :close-label=\"resolvedCloseLabel\"\n >\n <div class=\"grid gap-4\">\n <slot>\n <div v-if=\"description\" class=\"text-[14px] text-[var(--muted-fg)]\">\n {{ description }}\n </div>\n </slot>\n\n <slot name=\"error\" :error=\"error\">\n <GrResponseErrorBanner v-if=\"error\" :error=\"error\" :can-dismiss=\"false\" />\n </slot>\n </div>\n\n <template #footer>\n <slot name=\"footer\">\n <div class=\"flex items-center justify-end gap-3\">\n <GrButton data-testid=\"gr-confirm-cancel\" variant=\"outline\" :size=\"buttonSize\" @click=\"onCancel\">\n {{ resolvedCancelText }}\n </GrButton>\n <GrButton\n data-testid=\"gr-confirm-confirm\"\n :variant=\"confirmVariant\"\n :tone=\"confirmTone\"\n :size=\"buttonSize\"\n :loading=\"confirmLoading\"\n :disabled=\"confirmDisabled\"\n @click=\"onConfirm\"\n >\n {{ resolvedConfirmText }}\n </GrButton>\n </div>\n </slot>\n </template>\n </GrDialog>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0DA,MAAM,QAAQ;EAuBd,MAAM,OAAO;EAOb,MAAM,EAAE,MAAM,2BAA2B;EACzC,MAAM,gBAAgB,eAAe,MAAM,SAAS,EAAE,2BAA2B,SAAS,CAAC;EAC3F,MAAM,qBAAqB,eAAe,MAAM,cAAc,EAAE,mBAAmB,OAAO,CAAC;EAC3F,MAAM,sBAAsB,eAAe,MAAM,eAAe,EAAE,qBAAqB,SAAS,CAAC;EACjG,MAAM,qBAAqB,eAAe,MAAM,cAAc,EAAE,oBAAoB,QAAQ,CAAC;EAE7F,MAAM,OAAO,SAAS;GACpB,WAAW,MAAM;GACjB,MAAM,UAAmB,KAAK,qBAAqB,KAAK;EAC1D,CAAC;EAED,SAAS,WAAiB;GACxB,KAAK,QAAQ;GACb,KAAK,qBAAqB,KAAK;EACjC;EAEA,SAAS,YAAkB;GACzB,KAAK,SAAS;GACd,IAAI,MAAM,gBACR,KAAK,qBAAqB,KAAK;EACnC;;uBAIE,YA6CW,kBAAA;gBA5CA,KAAA;sEAAI,QAAA;IACZ,OAAO,cAAA;IACP,MAAM,QAAA;IACN,qBAAmB,QAAA;IACnB,gBAAc,QAAA;IACd,eAAa,QAAA;IACb,qBAAmB,QAAA;IACnB,iBAAe,QAAA;IACf,iBAAe,QAAA;IACf,eAAa,QAAA;IACb,eAAa,mBAAA;;IAcH,QAAM,cAkBR,CAjBP,WAiBO,KAAA,QAAA,UAAA,CAAA,SAAA,CAhBL,mBAeM,OAfN,YAeM,CAdJ,YAEW,kBAAA;KAFD,eAAY;KAAoB,SAAQ;KAAW,MAAM,QAAA;KAAa,SAAO;;4BAC7D,CAAA,gBAAA,gBAArB,mBAAA,KAAkB,GAAA,CAAA,CAAA,CAAA;;qBAEvB,YAUW,kBAAA;KATT,eAAY;KACX,SAAS,QAAA;KACT,MAAM,QAAA;KACN,MAAM,QAAA;KACN,SAAS,QAAA;KACT,UAAU,QAAA;KACV,SAAO;;4BAEiB,CAAA,gBAAA,gBAAtB,oBAAA,KAAmB,GAAA,CAAA,CAAA,CAAA;;;;;;;;;2BAjBxB,CAVN,mBAUM,OAVN,YAUM,CATJ,WAIO,KAAA,QAAA,WAAA,CAAA,SAAA,CAHM,QAAA,eAAA,UAAA,GAAX,mBAEM,OAFN,YAEM,gBADD,QAAA,WAAW,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA,CAAA,CAAA,GAIlB,WAEO,KAAA,QAAA,SAAA,EAFa,OAAO,QAAA,MAAK,SAEzB,CADwB,QAAA,SAAA,UAAA,GAA7B,YAA0E,+BAAA;;KAArC,OAAO,QAAA;KAAQ,eAAa"}
|
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
import { t as GrIcon_default } from "../../GrIcon/chunks/GrIcon-D9AWQLk2.js";
|
|
2
|
-
import { t as GrTable_default } from "../../GrTable/chunks/GrTable-Db3hRnKA.js";
|
|
3
|
-
import { t as arrow_up_default } from "../../../chunks/arrow-up-C_G4jg8M.js";
|
|
4
|
-
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineComponent, markRaw, mergeProps, normalizeClass, openBlock, ref, renderList, renderSlot, toDisplayString, unref, withCtx } from "vue";
|
|
5
|
-
//#region ~icons/lucide/arrow-down
|
|
6
|
-
var _hoisted_1$1 = {
|
|
7
|
-
viewBox: "0 0 24 24",
|
|
8
|
-
width: "1.2em",
|
|
9
|
-
height: "1.2em"
|
|
10
|
-
};
|
|
11
|
-
function render$1(_ctx, _cache) {
|
|
12
|
-
return openBlock(), createElementBlock("svg", _hoisted_1$1, [..._cache[0] || (_cache[0] = [createElementVNode("path", {
|
|
13
|
-
fill: "none",
|
|
14
|
-
stroke: "currentColor",
|
|
15
|
-
"stroke-linecap": "round",
|
|
16
|
-
"stroke-linejoin": "round",
|
|
17
|
-
"stroke-width": "2",
|
|
18
|
-
d: "M12 5v14m7-7l-7 7l-7-7"
|
|
19
|
-
}, null, -1)])]);
|
|
20
|
-
}
|
|
21
|
-
var arrow_down_default = markRaw({
|
|
22
|
-
name: "lucide-arrow-down",
|
|
23
|
-
render: render$1
|
|
24
|
-
});
|
|
25
|
-
//#endregion
|
|
26
|
-
//#region src/components/GrDataTable/GrDataTable.vue?vue&type=script&setup=true&lang.ts
|
|
27
|
-
var _hoisted_1 = { "data-gr-datatable-header": "" };
|
|
28
|
-
var _hoisted_2 = ["aria-sort"];
|
|
29
|
-
var _hoisted_3 = { class: "inline-flex items-center gap-2" };
|
|
30
|
-
var _hoisted_4 = ["aria-label", "onClick"];
|
|
31
|
-
var _hoisted_5 = { class: "inline-flex" };
|
|
32
|
-
var _hoisted_6 = {
|
|
33
|
-
key: 1,
|
|
34
|
-
class: "text-[var(--muted-fg)]"
|
|
35
|
-
};
|
|
36
|
-
var _hoisted_7 = {
|
|
37
|
-
key: 0,
|
|
38
|
-
"data-gr-datatable-empty": ""
|
|
39
|
-
};
|
|
40
|
-
var _hoisted_8 = ["colspan"];
|
|
41
|
-
//#endregion
|
|
42
|
-
//#region src/components/GrDataTable/GrDataTable.vue
|
|
43
|
-
var GrDataTable_default = /* @__PURE__ */ defineComponent({
|
|
44
|
-
__name: "GrDataTable",
|
|
45
|
-
props: {
|
|
46
|
-
rows: {},
|
|
47
|
-
columns: {},
|
|
48
|
-
rowKey: {
|
|
49
|
-
type: [String, Function],
|
|
50
|
-
default: "id"
|
|
51
|
-
},
|
|
52
|
-
initialSortKey: { default: void 0 },
|
|
53
|
-
initialSortDir: { default: "asc" },
|
|
54
|
-
density: { default: "regular" },
|
|
55
|
-
caption: { default: void 0 },
|
|
56
|
-
ariaLabel: { default: void 0 },
|
|
57
|
-
ariaLabelledby: { default: void 0 },
|
|
58
|
-
regionLabel: { default: void 0 }
|
|
59
|
-
},
|
|
60
|
-
setup(__props) {
|
|
61
|
-
const props = __props;
|
|
62
|
-
const sortKey = ref(props.initialSortKey ?? "");
|
|
63
|
-
const sortDir = ref(props.initialSortDir);
|
|
64
|
-
const sortedRows = computed(() => {
|
|
65
|
-
const items = [...props.rows];
|
|
66
|
-
if (!sortKey.value) return items;
|
|
67
|
-
const key = sortKey.value;
|
|
68
|
-
const dir = sortDir.value;
|
|
69
|
-
items.sort((a, b) => {
|
|
70
|
-
const av = a[key];
|
|
71
|
-
const bv = b[key];
|
|
72
|
-
const aNum = typeof av === "number" ? av : Number(av);
|
|
73
|
-
const bNum = typeof bv === "number" ? bv : Number(bv);
|
|
74
|
-
const res = Number.isFinite(aNum) && Number.isFinite(bNum) ? aNum - bNum : String(av ?? "").localeCompare(String(bv ?? ""), void 0, { sensitivity: "base" });
|
|
75
|
-
return dir === "asc" ? res : -res;
|
|
76
|
-
});
|
|
77
|
-
return items;
|
|
78
|
-
});
|
|
79
|
-
function toggleSort(col) {
|
|
80
|
-
if (!col.sortable) return;
|
|
81
|
-
if (sortKey.value !== col.key) {
|
|
82
|
-
sortKey.value = col.key;
|
|
83
|
-
sortDir.value = "asc";
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
sortDir.value = sortDir.value === "asc" ? "desc" : "asc";
|
|
87
|
-
}
|
|
88
|
-
function cellAlign(col) {
|
|
89
|
-
if (col.align === "right") return "text-right";
|
|
90
|
-
if (col.align === "center") return "text-center";
|
|
91
|
-
return "text-left";
|
|
92
|
-
}
|
|
93
|
-
function rowKeyValue(row) {
|
|
94
|
-
const rk = props.rowKey;
|
|
95
|
-
if (typeof rk === "function") return rk(row);
|
|
96
|
-
const v = row[rk];
|
|
97
|
-
if (typeof v === "string" || typeof v === "number") return v;
|
|
98
|
-
return String(v ?? "");
|
|
99
|
-
}
|
|
100
|
-
function ariaSortFor(col) {
|
|
101
|
-
if (!col.sortable) return void 0;
|
|
102
|
-
if (sortKey.value !== col.key) return "none";
|
|
103
|
-
return sortDir.value === "asc" ? "ascending" : "descending";
|
|
104
|
-
}
|
|
105
|
-
function sortButtonLabel(col) {
|
|
106
|
-
if (sortKey.value !== col.key) return `Sort by ${col.label}`;
|
|
107
|
-
return sortDir.value === "asc" ? `Sorted by ${col.label} ascending, activate to sort descending` : `Sorted by ${col.label} descending, activate to sort ascending`;
|
|
108
|
-
}
|
|
109
|
-
const tableProps = computed(() => ({
|
|
110
|
-
density: props.density,
|
|
111
|
-
caption: props.caption,
|
|
112
|
-
ariaLabel: props.ariaLabel,
|
|
113
|
-
ariaLabelledby: props.ariaLabelledby,
|
|
114
|
-
regionLabel: props.regionLabel
|
|
115
|
-
}));
|
|
116
|
-
const isEmpty = computed(() => sortedRows.value.length === 0);
|
|
117
|
-
function cellValue(row, key) {
|
|
118
|
-
return row[key];
|
|
119
|
-
}
|
|
120
|
-
return (_ctx, _cache) => {
|
|
121
|
-
return openBlock(), createBlock(GrTable_default, mergeProps(tableProps.value, { "data-gr-datatable": "" }), createSlots({
|
|
122
|
-
head: withCtx(() => [createElementVNode("tr", _hoisted_1, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (col) => {
|
|
123
|
-
return openBlock(), createElementBlock("th", {
|
|
124
|
-
key: col.key,
|
|
125
|
-
class: normalizeClass(["font-700 text-xs px-4 py-3", cellAlign(col)]),
|
|
126
|
-
"aria-sort": ariaSortFor(col),
|
|
127
|
-
scope: "col"
|
|
128
|
-
}, [createElementVNode("div", _hoisted_3, [col.sortable ? (openBlock(), createElementBlock("button", {
|
|
129
|
-
key: 0,
|
|
130
|
-
type: "button",
|
|
131
|
-
class: "inline-flex items-center gap-2 text-[var(--muted-fg)] hover:text-[var(--fg)] transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] rounded",
|
|
132
|
-
"aria-label": sortButtonLabel(col),
|
|
133
|
-
onClick: ($event) => toggleSort(col)
|
|
134
|
-
}, [createElementVNode("span", null, toDisplayString(col.label), 1), createElementVNode("span", _hoisted_5, [sortKey.value === col.key && sortDir.value === "asc" ? (openBlock(), createBlock(GrIcon_default, {
|
|
135
|
-
key: 0,
|
|
136
|
-
size: "sm",
|
|
137
|
-
"aria-hidden": "true"
|
|
138
|
-
}, {
|
|
139
|
-
default: withCtx(() => [createVNode(unref(arrow_up_default))]),
|
|
140
|
-
_: 1
|
|
141
|
-
})) : sortKey.value === col.key && sortDir.value === "desc" ? (openBlock(), createBlock(GrIcon_default, {
|
|
142
|
-
key: 1,
|
|
143
|
-
size: "sm",
|
|
144
|
-
"aria-hidden": "true"
|
|
145
|
-
}, {
|
|
146
|
-
default: withCtx(() => [createVNode(unref(arrow_down_default))]),
|
|
147
|
-
_: 1
|
|
148
|
-
})) : createCommentVNode("", true)])], 8, _hoisted_4)) : (openBlock(), createElementBlock("span", _hoisted_6, toDisplayString(col.label), 1))])], 10, _hoisted_2);
|
|
149
|
-
}), 128))])]),
|
|
150
|
-
default: withCtx(() => [isEmpty.value ? (openBlock(), createElementBlock("tr", _hoisted_7, [createElementVNode("td", {
|
|
151
|
-
colspan: __props.columns.length,
|
|
152
|
-
class: "px-4 py-6 text-center text-[var(--muted-fg)]"
|
|
153
|
-
}, [renderSlot(_ctx.$slots, "empty", {}, () => [_cache[0] || (_cache[0] = createTextVNode(" Нет данных ", -1))])], 8, _hoisted_8)])) : (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(sortedRows.value, (row) => {
|
|
154
|
-
return openBlock(), createElementBlock("tr", {
|
|
155
|
-
key: rowKeyValue(row),
|
|
156
|
-
class: "border-t border-[var(--brd)]",
|
|
157
|
-
"data-gr-datatable-row": ""
|
|
158
|
-
}, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (col) => {
|
|
159
|
-
return openBlock(), createElementBlock("td", {
|
|
160
|
-
key: col.key,
|
|
161
|
-
class: normalizeClass(["px-4 py-3", cellAlign(col)])
|
|
162
|
-
}, [renderSlot(_ctx.$slots, `cell-${col.key}`, { row }, () => [createElementVNode("span", null, toDisplayString(cellValue(row, col.key)), 1)])], 2);
|
|
163
|
-
}), 128))]);
|
|
164
|
-
}), 128))]),
|
|
165
|
-
_: 2
|
|
166
|
-
}, [_ctx.$slots.caption ? {
|
|
167
|
-
name: "caption",
|
|
168
|
-
fn: withCtx(() => [renderSlot(_ctx.$slots, "caption")]),
|
|
169
|
-
key: "0"
|
|
170
|
-
} : void 0, _ctx.$slots.foot ? {
|
|
171
|
-
name: "foot",
|
|
172
|
-
fn: withCtx(() => [renderSlot(_ctx.$slots, "foot")]),
|
|
173
|
-
key: "1"
|
|
174
|
-
} : void 0]), 1040);
|
|
175
|
-
};
|
|
176
|
-
}
|
|
177
|
-
});
|
|
178
|
-
//#endregion
|
|
179
|
-
export { GrDataTable_default as t };
|