@feugene/granularity 0.35.0 → 0.37.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/chunks/config-2ZHRsdOc.js.map +1 -1
- package/dist/chunks/config-2vrOFn2f.js.map +1 -1
- package/dist/chunks/config-3bQeQvqd.js.map +1 -1
- package/dist/chunks/config-87fszqnD.js.map +1 -1
- package/dist/chunks/config-8Pcutu1j.js.map +1 -1
- package/dist/chunks/config-A-bBiotF.js.map +1 -1
- package/dist/chunks/config-B0uvcTPH.js.map +1 -1
- package/dist/chunks/config-B3J0alyY.js.map +1 -1
- package/dist/chunks/config-B5SBUa6u.js.map +1 -1
- package/dist/chunks/config-B7W9VlZ7.js.map +1 -1
- package/dist/chunks/config-BDSaD-5p.js.map +1 -1
- package/dist/chunks/config-BEO7brpO.js.map +1 -1
- package/dist/chunks/config-BNu8lFQB.js.map +1 -1
- package/dist/chunks/config-BRESvs9g.js.map +1 -1
- package/dist/chunks/config-BTmfQFwi.js.map +1 -1
- package/dist/chunks/{config-CuQmUkMw2.js → config-BUNxHnEz.js} +1 -1
- package/dist/chunks/config-BUNxHnEz.js.map +1 -0
- package/dist/chunks/config-BaWANzzB.js.map +1 -1
- package/dist/chunks/config-BcXX7S7B.js.map +1 -1
- package/dist/chunks/config-Bd7QfiGj.js.map +1 -1
- package/dist/chunks/config-BhfNgyWL.js.map +1 -1
- package/dist/chunks/config-Bjn30smH.js.map +1 -1
- package/dist/chunks/config-BlJa1Mj9.js.map +1 -1
- package/dist/chunks/config-BoUI0t-t.js.map +1 -1
- package/dist/chunks/config-BqT6PMzO.js.map +1 -1
- package/dist/chunks/config-BscVxZR3.js.map +1 -1
- package/dist/chunks/config-BuGlNPE9.js.map +1 -1
- package/dist/chunks/config-C0Ea9ePP.js.map +1 -1
- package/dist/chunks/config-C0Eu8jpG.js.map +1 -1
- package/dist/chunks/config-CDat1wXf.js.map +1 -1
- package/dist/chunks/config-CIkdsWUk.js.map +1 -1
- package/dist/chunks/config-CJzmDHfI.js.map +1 -1
- package/dist/chunks/config-CLjjjPZj.js.map +1 -1
- package/dist/chunks/config-CMNfZO7S.js.map +1 -1
- package/dist/chunks/config-CQLNjc9X.js.map +1 -0
- package/dist/chunks/config-CT4lP6S4.js.map +1 -1
- package/dist/chunks/config-CWtfxkM9.js.map +1 -1
- package/dist/chunks/config-CYthTVK2.js.map +1 -1
- package/dist/chunks/config-CZPDPJlg.js.map +1 -1
- package/dist/chunks/config-CbEbLyDE.js.map +1 -1
- package/dist/chunks/config-ChPg-BQv.js.map +1 -1
- package/dist/chunks/config-CjKpUcmy.js.map +1 -1
- package/dist/chunks/config-CjWOTgLL.js.map +1 -1
- package/dist/chunks/config-CjXjhphs.js.map +1 -1
- package/dist/chunks/config-CnYdE3HZ.js.map +1 -0
- package/dist/chunks/config-CsCUuukB.js.map +1 -1
- package/dist/chunks/config-CvbVM4ep.js.map +1 -1
- package/dist/chunks/config-D0NzGYaE.js.map +1 -1
- package/dist/chunks/config-D0W8mGFD.js.map +1 -1
- package/dist/chunks/config-D82r782v.js.map +1 -1
- package/dist/chunks/{config-mlheIMtV.js → config-DBi0GVce.js} +2 -2
- package/dist/chunks/config-DBi0GVce.js.map +1 -0
- package/dist/chunks/config-DBmdgoVf.js.map +1 -0
- package/dist/chunks/config-DCq4JySZ.js.map +1 -1
- package/dist/chunks/config-DGC00bTp.js.map +1 -1
- package/dist/chunks/config-DIDz_E5m.js.map +1 -1
- package/dist/chunks/config-DM0lsduD.js.map +1 -1
- package/dist/chunks/config-DNDgp9bB.js.map +1 -1
- package/dist/chunks/config-DOYz_SVK.js.map +1 -1
- package/dist/chunks/config-DRbojEzO.js.map +1 -1
- package/dist/chunks/config-DUNH02Fg.js.map +1 -1
- package/dist/chunks/config-DUbbGcfw.js.map +1 -1
- package/dist/chunks/config-DVCNvhIG.js.map +1 -0
- package/dist/chunks/config-DWL81-aM.js.map +1 -1
- package/dist/chunks/config-DZCUPHPU.js.map +1 -1
- package/dist/chunks/config-DeyT9dJl.js.map +1 -1
- package/dist/chunks/config-DolULhjJ.js.map +1 -1
- package/dist/chunks/config-DpAYidyY.js.map +1 -0
- package/dist/chunks/config-Droqn55j.js.map +1 -1
- package/dist/chunks/config-DwABJHEo.js.map +1 -1
- package/dist/chunks/config-E1cTyRVV.js.map +1 -1
- package/dist/chunks/config-MmPym-Z7.js.map +1 -0
- package/dist/chunks/config-QaIc_gRa.js.map +1 -1
- package/dist/chunks/config-Yy67uWHY.js.map +1 -1
- package/dist/chunks/config-Z5LeUXys.js.map +1 -1
- package/dist/chunks/config-_jbgsFpw.js.map +1 -1
- package/dist/chunks/config-eXB87DOi.js.map +1 -1
- package/dist/chunks/config-rLkc9Zn2.js.map +1 -1
- package/dist/chunks/{context-CTbuwcYs.js → context-CPMRfwVr.js} +1 -1
- package/dist/chunks/{context-CTbuwcYs.js.map → context-CPMRfwVr.js.map} +1 -1
- package/dist/chunks/{grModalStyles-EZfuEiw_.js → grModalStyles-BEkiFal_.js} +10 -1
- package/dist/chunks/grModalStyles-BEkiFal_.js.map +1 -0
- package/dist/chunks/{grRadioStyles-DGL2QLy6.js → grRadioStyles-BwRyCjQQ.js} +4 -2
- package/dist/chunks/{grRadioStyles-DGL2QLy6.js.map → grRadioStyles-BwRyCjQQ.js.map} +1 -1
- package/dist/chunks/{granular-provider-DCn6fgEs.js → granular-provider-DP2gk0oa.js} +10 -9
- package/dist/chunks/{granular-provider-DCn6fgEs.js.map → granular-provider-DP2gk0oa.js.map} +1 -1
- package/dist/chunks/{overlayStack-0CZS99Da.js → overlayStack-B_UFaFzk.js} +65 -24
- package/dist/chunks/overlayStack-B_UFaFzk.js.map +1 -0
- package/dist/chunks/{renamedProp-BwcN-SJg.js → renamedProp-Dy96tT-F.js} +1 -1
- package/dist/chunks/{renamedProp-BwcN-SJg.js.map → renamedProp-Dy96tT-F.js.map} +1 -1
- package/dist/chunks/{useModalOverlay-BnAGZpcI.js → useModalOverlay-BwX8WEcI.js} +3 -3
- package/dist/chunks/{useModalOverlay-BnAGZpcI.js.map → useModalOverlay-BwX8WEcI.js.map} +1 -1
- package/dist/chunks/{usePortalTarget-C0p-mhaM.js → usePortalTarget-BhrRgdqW.js} +1 -1
- package/dist/chunks/{usePortalTarget-C0p-mhaM.js.map → usePortalTarget-BhrRgdqW.js.map} +1 -1
- package/dist/chunks/{validation-5HhpanPP.js → validation-BDjqsuGB.js} +1 -1
- package/dist/chunks/{validation-5HhpanPP.js.map → validation-BDjqsuGB.js.map} +1 -1
- package/dist/components/GrAlert/chunks/{GrAlert-FAVf-ksH.js → GrAlert-D72y1IEh.js} +1 -1
- package/dist/components/GrAlert/chunks/{GrAlert-FAVf-ksH.js.map → GrAlert-D72y1IEh.js.map} +1 -1
- package/dist/components/GrAlert/index.js +1 -1
- package/dist/components/GrAutocomplete/chunks/{GrAutocomplete-BQsSE7sj.js → GrAutocomplete-BpmFmpKs.js} +4 -6
- package/dist/components/GrAutocomplete/chunks/{GrAutocomplete-BQsSE7sj.js.map → GrAutocomplete-BpmFmpKs.js.map} +1 -1
- package/dist/components/GrAutocomplete/index.js +1 -1
- package/dist/components/GrAvatar/chunks/{GrAvatar-CNmLmgcr.js → GrAvatar-dWEXiCJG.js} +1 -1
- package/dist/components/GrAvatar/chunks/{GrAvatar-CNmLmgcr.js.map → GrAvatar-dWEXiCJG.js.map} +1 -1
- package/dist/components/GrAvatar/index.js +1 -1
- package/dist/components/GrBadge/chunks/{GrBadge-DpUDXKbq.js → GrBadge-DBeQXEir.js} +2 -2
- package/dist/components/GrBadge/chunks/{GrBadge-DpUDXKbq.js.map → GrBadge-DBeQXEir.js.map} +1 -1
- package/dist/components/GrBadge/index.js +1 -1
- package/dist/components/GrBadgeWrap/chunks/{GrBadgeWrap-B-A3PRkE.js → GrBadgeWrap-wdfxaXiu.js} +3 -1
- package/dist/components/GrBadgeWrap/chunks/{GrBadgeWrap-B-A3PRkE.js.map → GrBadgeWrap-wdfxaXiu.js.map} +1 -1
- package/dist/components/GrBadgeWrap/index.js +1 -1
- package/dist/components/GrBottomNav/chunks/{GrBottomNav-wtFatLjB.js → GrBottomNav-nE08pVUJ.js} +1 -1
- package/dist/components/GrBottomNav/chunks/{GrBottomNav-wtFatLjB.js.map → GrBottomNav-nE08pVUJ.js.map} +1 -1
- package/dist/components/GrBottomNav/index.js +1 -1
- package/dist/components/GrBreadcrumbs/chunks/{GrBreadcrumbs-DRDNan_n.js → GrBreadcrumbs-DOpwY2EF.js} +3 -3
- package/dist/components/GrBreadcrumbs/chunks/{GrBreadcrumbs-DRDNan_n.js.map → GrBreadcrumbs-DOpwY2EF.js.map} +1 -1
- package/dist/components/GrBreadcrumbs/index.js +1 -1
- package/dist/components/GrButton/chunks/{GrButton-7GP0zObj.js → GrButton-CS4TqMtG.js} +1 -1
- package/dist/components/GrButton/chunks/{GrButton-7GP0zObj.js.map → GrButton-CS4TqMtG.js.map} +1 -1
- package/dist/components/GrButton/index.js +1 -1
- package/dist/components/GrButtonGroup/chunks/GrButtonGroup-CKyiAV8K.js.map +1 -1
- package/dist/components/GrButtonGroup/index.js +1 -1
- package/dist/components/GrCard/chunks/{GrCard-BttXz1pQ.js → GrCard-Ck5--lMF.js} +2 -2
- package/dist/components/GrCard/chunks/{GrCard-BttXz1pQ.js.map → GrCard-Ck5--lMF.js.map} +1 -1
- package/dist/components/GrCard/index.js +1 -1
- package/dist/components/GrCheckbox/chunks/{GrCheckbox-CEcHIsXM.js → GrCheckbox-Dp201frb.js} +1 -1
- package/dist/components/GrCheckbox/chunks/{GrCheckbox-CEcHIsXM.js.map → GrCheckbox-Dp201frb.js.map} +1 -1
- package/dist/components/GrCheckbox/index.js +1 -1
- package/dist/components/GrCheckboxGroup/chunks/{GrCheckboxGroup-BOwrVcFr.js → GrCheckboxGroup-IpqG5qwm.js} +2 -2
- package/dist/components/GrCheckboxGroup/chunks/{GrCheckboxGroup-BOwrVcFr.js.map → GrCheckboxGroup-IpqG5qwm.js.map} +1 -1
- package/dist/components/GrCheckboxGroup/index.js +1 -1
- package/dist/components/GrChip/chunks/{GrChip-BTivtwff.js → GrChip-CKqyzYcv.js} +10 -7
- package/dist/components/GrChip/chunks/{GrChip-BTivtwff.js.map → GrChip-CKqyzYcv.js.map} +1 -1
- package/dist/components/GrChip/index.js +1 -1
- package/dist/components/GrChipGroup/chunks/{GrChipGroup-C78Vcwos.js → GrChipGroup-dDGwnC04.js} +1 -1
- package/dist/components/GrChipGroup/chunks/{GrChipGroup-C78Vcwos.js.map → GrChipGroup-dDGwnC04.js.map} +1 -1
- package/dist/components/GrChipGroup/index.js +1 -1
- package/dist/components/GrCodeBlock/chunks/{GrCodeBlock-Dp0eEBTZ.js → GrCodeBlock-BUOwKwQE.js} +2 -2
- package/dist/components/GrCodeBlock/chunks/{GrCodeBlock-Dp0eEBTZ.js.map → GrCodeBlock-BUOwKwQE.js.map} +1 -1
- package/dist/components/GrCodeBlock/index.js +1 -1
- package/dist/components/GrCollapse/chunks/{GrCollapse-BlW6ybdL.js → GrCollapse-DWH3QAnU.js} +6 -5
- package/dist/components/GrCollapse/chunks/{GrCollapse-BlW6ybdL.js.map → GrCollapse-DWH3QAnU.js.map} +1 -1
- package/dist/components/GrCollapse/index.js +1 -1
- package/dist/components/GrColorPicker/chunks/{GrColorPicker-CIgdPXHn.js → GrColorPicker-BNtpj_P6.js} +4 -4
- package/dist/components/GrColorPicker/chunks/{GrColorPicker-CIgdPXHn.js.map → GrColorPicker-BNtpj_P6.js.map} +1 -1
- package/dist/components/GrColorPicker/index.js +1 -1
- package/dist/components/GrCommandPalette/chunks/{GrCommandPalette-BZHUKlux.js → GrCommandPalette-BVZEd4yy.js} +7 -7
- package/dist/components/GrCommandPalette/chunks/{GrCommandPalette-BZHUKlux.js.map → GrCommandPalette-BVZEd4yy.js.map} +1 -1
- package/dist/components/GrCommandPalette/index.js +1 -1
- package/dist/components/GrConfigProvider/chunks/{GrConfigProvider-BF7R3hgg.js → GrConfigProvider-t9x2UToH.js} +13 -12
- package/dist/components/GrConfigProvider/chunks/{GrConfigProvider-BF7R3hgg.js.map → GrConfigProvider-t9x2UToH.js.map} +1 -1
- package/dist/components/GrConfigProvider/index.js +2 -2
- package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-jRDs_E6C.js → GrConfirmDialog-K5ht2cYq.js} +4 -4
- package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-jRDs_E6C.js.map → GrConfirmDialog-K5ht2cYq.js.map} +1 -1
- package/dist/components/GrConfirmDialog/index.js +1 -1
- package/dist/components/GrContextMenu/chunks/{GrContextMenu-DlFWm0eW.js → GrContextMenu-Dd2tgMoL.js} +1 -1
- package/dist/components/GrContextMenu/chunks/{GrContextMenu-DlFWm0eW.js.map → GrContextMenu-Dd2tgMoL.js.map} +1 -1
- package/dist/components/GrContextMenu/index.js +1 -1
- package/dist/components/GrDataTable/chunks/{GrDataTable-4JAgOQ-7.js → GrDataTable-BYYG_XZA.js} +5 -5
- package/dist/components/GrDataTable/chunks/{GrDataTable-4JAgOQ-7.js.map → GrDataTable-BYYG_XZA.js.map} +1 -1
- package/dist/components/GrDataTable/index.js +1 -1
- package/dist/components/GrDelta/chunks/{GrDelta-BZwkgQW-.js → GrDelta-BpfqebEV.js} +0 -0
- package/dist/components/GrDelta/chunks/{GrDelta-BZwkgQW-.js.map → GrDelta-BpfqebEV.js.map} +1 -1
- package/dist/components/GrDelta/index.js +1 -1
- package/dist/components/GrDescriptionList/chunks/{GrDescriptionList-BMeCgFV3.js → GrDescriptionList-D8ANFpn_.js} +2 -2
- package/dist/components/GrDescriptionList/chunks/{GrDescriptionList-BMeCgFV3.js.map → GrDescriptionList-D8ANFpn_.js.map} +1 -1
- package/dist/components/GrDescriptionList/index.js +2 -2
- package/dist/components/GrDialog/chunks/{GrDialog-C01Hhk6G.js → GrDialog-CeJubnKJ.js} +3 -3
- package/dist/components/GrDialog/chunks/{GrDialog-C01Hhk6G.js.map → GrDialog-CeJubnKJ.js.map} +1 -1
- package/dist/components/GrDialog/index.js +1 -1
- package/dist/components/GrDialogService/chunks/{GrDialogService-CmsJNUmM.js → GrDialogService-BArvw1DV.js} +9 -8
- package/dist/components/GrDialogService/chunks/{GrDialogService-CmsJNUmM.js.map → GrDialogService-BArvw1DV.js.map} +1 -1
- package/dist/components/GrDialogService/index.js +1 -1
- package/dist/components/GrDivider/chunks/{GrDivider-BXavGcMX.js → GrDivider-DxA-zV25.js} +1 -1
- package/dist/components/GrDivider/chunks/{GrDivider-BXavGcMX.js.map → GrDivider-DxA-zV25.js.map} +1 -1
- package/dist/components/GrDivider/index.js +1 -1
- package/dist/components/GrDrawer/chunks/{GrDrawer-xfoy-MCj.js → GrDrawer-BBHNgeH0.js} +5 -5
- package/dist/components/GrDrawer/chunks/{GrDrawer-xfoy-MCj.js.map → GrDrawer-BBHNgeH0.js.map} +1 -1
- package/dist/components/GrDrawer/index.js +1 -1
- package/dist/components/GrDropdown/chunks/{GrDropdown-7r772-Cq.js → GrDropdown-CUlviqMi.js} +6 -8
- package/dist/components/GrDropdown/chunks/{GrDropdown-7r772-Cq.js.map → GrDropdown-CUlviqMi.js.map} +1 -1
- package/dist/components/GrDropdown/index.js +1 -1
- package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-DNurbsWc.js → GrDropdownMenu-COOR1LCs.js} +1 -1
- package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-DNurbsWc.js.map → GrDropdownMenu-COOR1LCs.js.map} +1 -1
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenuList-B33ZzwfB.js.map +1 -1
- package/dist/components/GrDropdownMenu/index.js +1 -1
- package/dist/components/GrEmptyState/chunks/{GrEmptyState-RqsWvgI9.js → GrEmptyState-BbvwE-E0.js} +2 -2
- package/dist/components/GrEmptyState/chunks/{GrEmptyState-RqsWvgI9.js.map → GrEmptyState-BbvwE-E0.js.map} +1 -1
- package/dist/components/GrEmptyState/index.js +1 -1
- package/dist/components/GrFilePreview/chunks/{GrFilePreview-C9Z7hMK8.js → GrFilePreview-PabkLgYX.js} +1 -1
- package/dist/components/GrFilePreview/chunks/{GrFilePreview-C9Z7hMK8.js.map → GrFilePreview-PabkLgYX.js.map} +1 -1
- package/dist/components/GrFilePreview/index.js +1 -1
- package/dist/components/GrFileUpload/chunks/{GrFileUpload-LL8RZvC0.js → GrFileUpload-BwMR71zN.js} +4 -4
- package/dist/components/GrFileUpload/chunks/{GrFileUpload-LL8RZvC0.js.map → GrFileUpload-BwMR71zN.js.map} +1 -1
- package/dist/components/GrFileUpload/index.js +1 -1
- package/dist/components/GrForm/chunks/{GrForm-CrnfCsgj.js → GrForm-xTtavR-K.js} +1 -1
- package/dist/components/GrForm/chunks/{GrForm-CrnfCsgj.js.map → GrForm-xTtavR-K.js.map} +1 -1
- package/dist/components/GrForm/index.js +2 -2
- package/dist/components/GrFormField/chunks/{GrFormField-DSylU7IU.js → GrFormField-DO61vxpS.js} +2 -2
- package/dist/components/GrFormField/chunks/{GrFormField-DSylU7IU.js.map → GrFormField-DO61vxpS.js.map} +1 -1
- package/dist/components/GrFormField/index.js +1 -1
- package/dist/components/GrFormFile/chunks/{GrFormFile-B1jGZyIj.js → GrFormFile-Dlxx-9zi.js} +3 -3
- package/dist/components/GrFormFile/chunks/{GrFormFile-B1jGZyIj.js.map → GrFormFile-Dlxx-9zi.js.map} +1 -1
- package/dist/components/GrFormFile/index.js +1 -1
- package/dist/components/GrFormSection/chunks/{GrFormSection-ejieOg9H.js → GrFormSection-DV1S6R_N.js} +1 -1
- package/dist/components/GrFormSection/chunks/{GrFormSection-ejieOg9H.js.map → GrFormSection-DV1S6R_N.js.map} +1 -1
- package/dist/components/GrFormSection/index.js +1 -1
- package/dist/components/GrIcon/chunks/{GrIcon-Dmf0c9ba.js → GrIcon-DTZIgmje.js} +1 -1
- package/dist/components/GrIcon/chunks/{GrIcon-Dmf0c9ba.js.map → GrIcon-DTZIgmje.js.map} +1 -1
- package/dist/components/GrIcon/index.js +1 -1
- package/dist/components/GrImageViewer/chunks/{GrImageViewer--BU8yrfx.js → GrImageViewer-BjYw-uTF.js} +2 -4
- package/dist/components/GrImageViewer/chunks/{GrImageViewer--BU8yrfx.js.map → GrImageViewer-BjYw-uTF.js.map} +1 -1
- package/dist/components/GrImageViewer/index.js +1 -1
- package/dist/components/GrInput/chunks/{GrInput-BLywRZUN.js → GrInput-TFeBm3gQ.js} +2 -1
- package/dist/components/GrInput/chunks/{GrInput-BLywRZUN.js.map → GrInput-TFeBm3gQ.js.map} +1 -1
- package/dist/components/GrInput/index.js +1 -1
- package/dist/components/GrInputTag/chunks/{GrInputTag-ByD9NugQ.js → GrInputTag-DhfUNOA5.js} +3 -3
- package/dist/components/GrInputTag/chunks/{GrInputTag-ByD9NugQ.js.map → GrInputTag-DhfUNOA5.js.map} +1 -1
- package/dist/components/GrInputTag/index.js +1 -1
- package/dist/components/GrJsonViewer/chunks/{GrJsonViewer-BCZ7lE2k.js → GrJsonViewer-CdtmUpZ3.js} +6 -6
- package/dist/components/GrJsonViewer/chunks/{GrJsonViewer-BCZ7lE2k.js.map → GrJsonViewer-CdtmUpZ3.js.map} +1 -1
- package/dist/components/GrJsonViewer/index.js +2 -2
- package/dist/components/GrKbd/chunks/{GrKbd-D2ga1H9i.js → GrKbd-D_a1mPLe.js} +1 -1
- package/dist/components/GrKbd/chunks/{GrKbd-D2ga1H9i.js.map → GrKbd-D_a1mPLe.js.map} +1 -1
- package/dist/components/GrKbd/index.js +1 -1
- package/dist/components/GrLink/chunks/{GrLink-DYXw3W9w.js → GrLink-DwWErumU.js} +2 -2
- package/dist/components/GrLink/chunks/{GrLink-DYXw3W9w.js.map → GrLink-DwWErumU.js.map} +1 -1
- package/dist/components/GrLink/index.js +2 -2
- package/dist/components/GrList/chunks/{GrList-B_CRJB4c.js → GrList-Unya-LXb.js} +3 -3
- package/dist/components/GrList/chunks/{GrList-B_CRJB4c.js.map → GrList-Unya-LXb.js.map} +1 -1
- package/dist/components/GrList/index.js +1 -1
- package/dist/components/GrLoading/chunks/{GrLoading-CMD3Ri9P.js → GrLoading-BDrlrup_.js} +1 -1
- package/dist/components/GrLoading/chunks/{GrLoading-CMD3Ri9P.js.map → GrLoading-BDrlrup_.js.map} +1 -1
- package/dist/components/GrLoading/index.js +1 -1
- package/dist/components/GrModal/chunks/{GrModal-_JrDhon-.js → GrModal-xIWaJozo.js} +7 -6
- package/dist/components/GrModal/chunks/GrModal-xIWaJozo.js.map +1 -0
- package/dist/components/GrModal/index.js +2 -2
- package/dist/components/GrNavbar/chunks/{GrNavbar-Dr8e5kW-.js → GrNavbar-BRGuksiy.js} +3 -3
- package/dist/components/GrNavbar/chunks/{GrNavbar-Dr8e5kW-.js.map → GrNavbar-BRGuksiy.js.map} +1 -1
- package/dist/components/GrNavbar/index.js +1 -1
- package/dist/components/GrNumberInput/chunks/{GrNumberInput-DQ59YICu.js → GrNumberInput-BqPydXpK.js} +7 -9
- package/dist/components/GrNumberInput/chunks/{GrNumberInput-DQ59YICu.js.map → GrNumberInput-BqPydXpK.js.map} +1 -1
- package/dist/components/GrNumberInput/index.js +2 -2
- package/dist/components/GrPagination/chunks/{GrPagination-gBoWVHk6.js → GrPagination-DhbNZHEF.js} +26 -11
- package/dist/components/GrPagination/chunks/GrPagination-DhbNZHEF.js.map +1 -0
- package/dist/components/GrPagination/index.js +1 -1
- package/dist/components/GrPopover/chunks/{GrPopover-DEFxDffj.js → GrPopover-BakLcWkX.js} +3 -3
- package/dist/components/GrPopover/chunks/{GrPopover-DEFxDffj.js.map → GrPopover-BakLcWkX.js.map} +1 -1
- package/dist/components/GrPopover/index.js +2 -2
- package/dist/components/GrProgressBar/chunks/{GrProgressBar-hszUOC8f.js → GrProgressBar-C3NRBqIP.js} +6 -3
- package/dist/components/GrProgressBar/chunks/GrProgressBar-C3NRBqIP.js.map +1 -0
- package/dist/components/GrProgressBar/index.js +1 -1
- package/dist/components/GrProgressCircle/chunks/{GrProgressCircle-D3yWXYDa.js → GrProgressCircle-CdvbINQc.js} +2 -2
- package/dist/components/GrProgressCircle/chunks/{GrProgressCircle-D3yWXYDa.js.map → GrProgressCircle-CdvbINQc.js.map} +1 -1
- package/dist/components/GrProgressCircle/index.js +1 -1
- package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-CailXSqW.js → GrPromptDialog-C9Y1ifE_.js} +8 -8
- package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-CailXSqW.js.map → GrPromptDialog-C9Y1ifE_.js.map} +1 -1
- package/dist/components/GrPromptDialog/index.js +1 -1
- package/dist/components/GrRadio/chunks/{GrRadio-Aq3v8XgG.js → GrRadio-B1776V9D.js} +2 -2
- package/dist/components/GrRadio/chunks/{GrRadio-Aq3v8XgG.js.map → GrRadio-B1776V9D.js.map} +1 -1
- package/dist/components/GrRadio/index.js +2 -2
- package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-y9LVdTWh.js → GrRadioGroup-UgitrBFl.js} +2 -2
- package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-y9LVdTWh.js.map → GrRadioGroup-UgitrBFl.js.map} +1 -1
- package/dist/components/GrRadioGroup/index.js +1 -1
- package/dist/components/GrRating/chunks/{GrRating-IEiTOdnF.js → GrRating-DTriyyqG.js} +1 -1
- package/dist/components/GrRating/chunks/{GrRating-IEiTOdnF.js.map → GrRating-DTriyyqG.js.map} +1 -1
- package/dist/components/GrRating/index.js +1 -1
- package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-DMeOWlzj.js → GrResponseErrorBanner-NEEJZ8zi.js} +2 -2
- package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-DMeOWlzj.js.map → GrResponseErrorBanner-NEEJZ8zi.js.map} +1 -1
- package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-CBVRpgIG.js → GrResponseErrorBanner-ZvBvEQDZ.js} +1 -1
- package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-CBVRpgIG.js.map → GrResponseErrorBanner-ZvBvEQDZ.js.map} +1 -1
- package/dist/components/GrResponseErrorBanner/index.js +2 -2
- package/dist/components/GrSegmented/chunks/{GrSegmented-CB-VR-yL.js → GrSegmented-NKTi9bMG.js} +1 -1
- package/dist/components/GrSegmented/chunks/{GrSegmented-CB-VR-yL.js.map → GrSegmented-NKTi9bMG.js.map} +1 -1
- package/dist/components/GrSegmented/index.js +1 -1
- package/dist/components/GrSelect/chunks/{GrSelect-CZqV1Eg4.js → GrSelect-Do1iAyp1.js} +8 -12
- package/dist/components/GrSelect/chunks/GrSelect-Do1iAyp1.js.map +1 -0
- package/dist/components/GrSelect/index.js +1 -1
- package/dist/components/GrSelect/styles.css +1 -1
- package/dist/components/GrSidebar/chunks/{GrSidebar-alkwBUzL.js → GrSidebar-DoKLlHSw.js} +2 -2
- package/dist/components/GrSidebar/chunks/{GrSidebar-alkwBUzL.js.map → GrSidebar-DoKLlHSw.js.map} +1 -1
- package/dist/components/GrSidebar/index.js +1 -1
- package/dist/components/GrSkeleton/chunks/GrSkeleton-CgfXxPQ2.js.map +1 -1
- package/dist/components/GrSlider/chunks/{GrSlider-DTTrZTHK.js → GrSlider-Db-jACXz.js} +14 -6
- package/dist/components/GrSlider/chunks/GrSlider-Db-jACXz.js.map +1 -0
- package/dist/components/GrSlider/index.js +1 -1
- package/dist/components/GrSortableList/chunks/{GrSortableList-HyKX--rO.js → GrSortableList-CQCaWivn.js} +1 -1
- package/dist/components/GrSortableList/chunks/{GrSortableList-HyKX--rO.js.map → GrSortableList-CQCaWivn.js.map} +1 -1
- package/dist/components/GrSortableList/index.js +1 -1
- package/dist/components/GrSplitter/chunks/{GrSplitter-MltjaADn.js → GrSplitter-C-XQzq7q.js} +1 -1
- package/dist/components/GrSplitter/chunks/{GrSplitter-MltjaADn.js.map → GrSplitter-C-XQzq7q.js.map} +1 -1
- package/dist/components/GrSplitter/index.js +1 -1
- package/dist/components/GrStatistic/chunks/{GrStatistic-qHVasK37.js → GrStatistic-C1_nY4Gc.js} +8 -4
- package/dist/components/GrStatistic/chunks/GrStatistic-C1_nY4Gc.js.map +1 -0
- package/dist/components/GrStatistic/index.js +1 -1
- package/dist/components/GrSteps/chunks/{GrSteps-C2jxpZoN.js → GrSteps-DXj7m-WO.js} +2 -2
- package/dist/components/GrSteps/chunks/{GrSteps-C2jxpZoN.js.map → GrSteps-DXj7m-WO.js.map} +1 -1
- package/dist/components/GrSteps/index.js +1 -1
- package/dist/components/GrSwitch/chunks/{GrSwitch-7Oe5QfQZ.js → GrSwitch-CriHWT2A.js} +1 -1
- package/dist/components/GrSwitch/chunks/{GrSwitch-7Oe5QfQZ.js.map → GrSwitch-CriHWT2A.js.map} +1 -1
- package/dist/components/GrSwitch/index.js +1 -1
- package/dist/components/GrTabPanels/chunks/{GrTabPanels-BZQS8-JM.js → GrTabPanels-5zsbqS1v.js} +1 -1
- package/dist/components/GrTabPanels/chunks/{GrTabPanels-BZQS8-JM.js.map → GrTabPanels-5zsbqS1v.js.map} +1 -1
- package/dist/components/GrTabPanels/index.js +1 -1
- package/dist/components/GrTable/chunks/{GrTable-jhUTczjv.js → GrTable-iwzHvlMC.js} +1 -1
- package/dist/components/GrTable/chunks/{GrTable-jhUTczjv.js.map → GrTable-iwzHvlMC.js.map} +1 -1
- package/dist/components/GrTable/index.js +1 -1
- package/dist/components/GrTabs/chunks/{GrTabs-CT2nk_HV.js → GrTabs-DHfv67cp.js} +1 -1
- package/dist/components/GrTabs/chunks/{GrTabs-CT2nk_HV.js.map → GrTabs-DHfv67cp.js.map} +1 -1
- package/dist/components/GrTabs/index.js +1 -1
- package/dist/components/GrTextarea/chunks/{GrTextarea-DinXG12-.js → GrTextarea-BII3w61K.js} +1 -1
- package/dist/components/GrTextarea/chunks/{GrTextarea-DinXG12-.js.map → GrTextarea-BII3w61K.js.map} +1 -1
- package/dist/components/GrTextarea/index.js +1 -1
- package/dist/components/GrTimeline/chunks/{GrTimeline-BiHpArsg.js → GrTimeline-Bs60huw0.js} +2 -2
- package/dist/components/GrTimeline/chunks/{GrTimeline-BiHpArsg.js.map → GrTimeline-Bs60huw0.js.map} +1 -1
- package/dist/components/GrTimeline/index.js +1 -1
- package/dist/components/GrToaster/chunks/{GrToaster-COXIBKzq.js → GrToaster-D-sV-9of.js} +4 -4
- package/dist/components/GrToaster/chunks/{GrToaster-COXIBKzq.js.map → GrToaster-D-sV-9of.js.map} +1 -1
- package/dist/components/GrToaster/index.js +1 -1
- package/dist/components/GrTooltip/chunks/{GrTooltip-uYETdbCD.js → GrTooltip-BUiTbROv.js} +3 -3
- package/dist/components/GrTooltip/chunks/{GrTooltip-uYETdbCD.js.map → GrTooltip-BUiTbROv.js.map} +1 -1
- package/dist/components/GrTooltip/index.js +1 -1
- package/dist/components/GrTree/chunks/{GrTree-Ci6CZfKR.js → GrTree-CkELQwR8.js} +1 -2
- package/dist/components/GrTree/chunks/{GrTree-Ci6CZfKR.js.map → GrTree-CkELQwR8.js.map} +1 -1
- package/dist/components/GrTree/index.js +1 -1
- package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-DOXcpWq2.js → GrTreeSelect-DurwZ7Cz.js} +4 -4
- package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-DOXcpWq2.js.map → GrTreeSelect-DurwZ7Cz.js.map} +1 -1
- package/dist/components/GrTreeSelect/index.js +1 -1
- package/dist/components/GrValue/chunks/GrValue-ezkQM05Q.js.map +1 -1
- package/dist/composables/useFloating.js +1 -1
- package/dist/composables/useGrComponentConfig.js +1 -1
- package/dist/composables/useOverlayLayer.js +1 -1
- package/dist/composables/usePortalTarget.js +1 -1
- package/dist/composables/useTheme.js +1 -1
- package/dist/composables/useTheme.js.map +1 -1
- package/dist/composables/useToast.js +1 -1
- package/dist/composables/useToast.js.map +1 -1
- package/dist/composables/useVirtualList.js +3 -5
- package/dist/composables/useVirtualList.js.map +1 -1
- package/dist/directives/loading.js +1 -1
- package/dist/granular-provider-node.js +1 -1
- package/dist/granular-provider.js +1 -1
- package/dist/index.js +87 -87
- package/dist/testing.js +1 -1
- package/dist/testing.js.map +1 -1
- package/dist/types/components/GrDialog/GrDialog.vue.d.ts +1 -1
- package/dist/types/components/GrDrawer/GrDrawer.vue.d.ts +1 -1
- package/dist/types/components/GrModal/GrModal.vue.d.ts +1 -1
- package/dist/types/components/GrModal/grModalStyles.d.ts +9 -0
- package/dist/types/components/GrProgressBar/GrProgressBar.vue.d.ts +1 -1
- package/dist/types/internal/devHook.d.ts +53 -0
- package/dist/vue/index.js +2 -2
- package/dist/vue/index.js.map +1 -1
- package/dist/web-types.json +2 -2
- package/package.json +17 -17
- package/dist/chunks/config-CQLNjc9X2.js.map +0 -1
- package/dist/chunks/config-CnYdE3HZ2.js.map +0 -1
- package/dist/chunks/config-CuQmUkMw2.js.map +0 -1
- package/dist/chunks/config-DBmdgoVf2.js.map +0 -1
- package/dist/chunks/config-DVCNvhIG2.js.map +0 -1
- package/dist/chunks/config-DpAYidyY2.js.map +0 -1
- package/dist/chunks/config-MmPym-Z72.js.map +0 -1
- package/dist/chunks/config-mlheIMtV.js.map +0 -1
- package/dist/chunks/grModalStyles-EZfuEiw_.js.map +0 -1
- package/dist/chunks/overlayStack-0CZS99Da.js.map +0 -1
- package/dist/components/GrModal/chunks/GrModal-_JrDhon-.js.map +0 -1
- package/dist/components/GrPagination/chunks/GrPagination-gBoWVHk6.js.map +0 -1
- package/dist/components/GrProgressBar/chunks/GrProgressBar-hszUOC8f.js.map +0 -1
- package/dist/components/GrSelect/chunks/GrSelect-CZqV1Eg4.js.map +0 -1
- package/dist/components/GrSlider/chunks/GrSlider-DTTrZTHK.js.map +0 -1
- package/dist/components/GrStatistic/chunks/GrStatistic-qHVasK37.js.map +0 -1
- /package/dist/chunks/{config-CQLNjc9X2.js → config-CQLNjc9X.js} +0 -0
- /package/dist/chunks/{config-CnYdE3HZ2.js → config-CnYdE3HZ.js} +0 -0
- /package/dist/chunks/{config-DBmdgoVf2.js → config-DBmdgoVf.js} +0 -0
- /package/dist/chunks/{config-DVCNvhIG2.js → config-DVCNvhIG.js} +0 -0
- /package/dist/chunks/{config-DpAYidyY2.js → config-DpAYidyY.js} +0 -0
- /package/dist/chunks/{config-MmPym-Z72.js → config-MmPym-Z7.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-D0NzGYaE.js","names":[],"sources":["../../src/components/GrCommandPalette/grCommandPaletteStyles.ts","../../src/components/GrCommandPalette/safelist.ts","../../src/components/GrCommandPalette/config.ts"],"sourcesContent":["import type { GrOverlaySize } from '../shared/sizes'\n\nexport type GrCommandPaletteSize = GrOverlaySize\n\n/**\n * Кастомизация через CSS-переменные:\n *\n * - `--gr-command-active-bg` — фон активной (подсвеченной) команды.\n * - `--gr-command-match-bg` — фон совпавшего с запросом фрагмента.\n * - `--gr-command-list-max-height` — максимальная высота списка (иначе — проп `maxHeight`).\n */\n\n// Размер палитры ложится на размеры панели `GrModal` — палитра не изобретает свои ширины.\nexport const commandPaletteModalSizeBySize: Record<GrCommandPaletteSize, GrOverlaySize> = {\n sm: 'sm',\n md: 'md',\n lg: 'lg',\n xl: 'xl',\n full: 'full',\n}\n\nexport const commandSearchRowClass = 'flex items-center gap-2 border-b border-[var(--gr-brd)] px-4'\nexport const commandSearchInputClass = 'min-w-0 flex-1 bg-transparent py-3.5 text-[length:var(--gr-command-input-font-size,15px)] text-[var(--gr-fg)] placeholder:text-[var(--gr-muted-fg)] focus:outline-none'\n\nexport const commandGroupLabelClass = 'px-3 pb-1 pt-3 text-[length:var(--gr-control-text-2xs)] leading-[var(--gr-control-leading-2xs)] font-medium uppercase tracking-wide text-[var(--gr-muted-fg)]'\n\n/** Описание под меткой команды. Цвет приходит из `commandItemMutedClass`. */\nexport const commandItemDescriptionClass = 'block truncate text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]'\n\nexport const commandItemMutedEnabledClass = 'text-[var(--gr-muted-fg)]'\nexport const commandItemMutedDisabledClass = 'text-[var(--gr-disabled-fg)]'\n\n/**\n * Приглушённые части команды — иконка и описание.\n *\n * Гаснут вместе со строкой: свой `--gr-muted-fg` оставил бы у выключенной\n * команды иконку темнее её же метки.\n */\nexport function commandItemMutedClass(disabled: boolean): string {\n return disabled ? commandItemMutedDisabledClass : commandItemMutedEnabledClass\n}\n\n/** Совпавший с запросом фрагмент. Фон — тот же токен подсветки, что у активной строки. */\nexport const commandMatchClass = 'rounded-[var(--gr-radius-xs)] bg-[var(--gr-command-match-bg,color-mix(in_srgb,var(--gr-primary)_22%,transparent))] text-[var(--gr-fg)]'\n\n/**\n * Цвета текста в базе нет намеренно: два `text-[…]` в одном списке классов\n * разрешаются порядком правил в сгенерированном CSS, а не порядком в атрибуте, —\n * и цвет выключенной команды молча проигрывал бы базовому.\n */\nexport const commandItemBaseClass = 'flex w-full items-center gap-3 rounded-[var(--gr-command-item-radius,10px)] px-3 py-2 text-left text-[length:var(--gr-control-text-md)] leading-[var(--gr-control-leading-md)]'\nexport const commandItemEnabledClass = 'cursor-pointer text-[var(--gr-fg)]'\nexport const commandItemActiveClass = 'bg-[var(--gr-command-active-bg,color-mix(in_srgb,var(--gr-muted)_45%,transparent))]'\n/**\n * Выключенная команда гасится токенами состояния, а не `opacity`: прозрачность\n * разбавляет выверенные на AA токены текста и роняет контраст.\n */\nexport const commandItemDisabledClass = 'cursor-not-allowed bg-[var(--gr-disabled-bg)] text-[var(--gr-disabled-fg)]'\n\nexport function commandItemClass(options: { active: boolean, disabled: boolean }): string {\n return [\n commandItemBaseClass,\n options.disabled ? commandItemDisabledClass : commandItemEnabledClass,\n options.active && !options.disabled ? commandItemActiveClass : '',\n ]\n .filter(Boolean)\n .join(' ')\n}\n\nexport const commandEmptyClass = 'px-4 py-10 text-center text-[length:var(--gr-control-text-sm)] leading-[var(--gr-control-leading-sm)] text-[var(--gr-muted-fg)]'\nexport const commandFooterClass = 'flex items-center gap-3 border-t border-[var(--gr-brd)] px-4 py-2 text-[length:var(--gr-control-text-2xs)] leading-[var(--gr-control-leading-2xs)] text-[var(--gr-muted-fg)]'\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n commandEmptyClass,\n commandFooterClass,\n commandGroupLabelClass,\n commandItemActiveClass,\n commandItemBaseClass,\n commandItemDescriptionClass,\n commandItemDisabledClass,\n commandItemEnabledClass,\n commandItemMutedDisabledClass,\n commandItemMutedEnabledClass,\n commandMatchClass,\n commandSearchInputClass,\n commandSearchRowClass,\n} from './grCommandPaletteStyles'\n\n// Вся вёрстка палитры живёт строковыми литералами в grCommandPaletteStyles.ts —\n// на сборке они уезжают в общий dist-чанк, который granularContent не сканирует.\n// Поэтому перечисляем явно (docs/gotchas.md §2).\nexport const grCommandPaletteSafelist = [...new Set([\n ...splitClassTokens(commandSearchRowClass),\n ...splitClassTokens(commandSearchInputClass),\n ...splitClassTokens(commandGroupLabelClass),\n ...splitClassTokens(commandItemBaseClass),\n ...splitClassTokens(commandItemActiveClass),\n ...splitClassTokens(commandItemDisabledClass),\n ...splitClassTokens(commandItemEnabledClass),\n ...splitClassTokens(commandItemMutedEnabledClass),\n ...splitClassTokens(commandItemMutedDisabledClass),\n ...splitClassTokens(commandItemDescriptionClass),\n ...splitClassTokens(commandMatchClass),\n ...splitClassTokens(commandEmptyClass),\n ...splitClassTokens(commandFooterClass),\n // Иконки поля поиска и индикатора загрузки.\n ...splitClassTokens('animate-spin'),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grCommandPaletteSafelist } from './safelist'\n\nexport const grCommandPaletteConfig = defineGranularComponent(import.meta.url, {\n name: 'GrCommandPalette',\n safelist: grCommandPaletteSafelist,\n dependencies: ['GrKbd', 'GrModal'],\n})\n"],"mappings":";;;;;;;;;;AAaA,IAAa,gCAA6E;CACxF,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,MAAM;AACR;AAEA,IAAa,wBAAwB;AACrC,IAAa,0BAA0B;AAEvC,IAAa,yBAAyB;;AAGtC,IAAa,8BAA8B;AAE3C,IAAa,+BAA+B;AAC5C,IAAa,gCAAgC;;;;;;;AAQ7C,SAAgB,sBAAsB,UAA2B;CAC/D,OAAO,WAAW,gCAAgC;AACpD;;AAGA,IAAa,oBAAoB;;;;;;AAOjC,IAAa,uBAAuB;AACpC,IAAa,0BAA0B;AACvC,IAAa,yBAAyB;;;;;AAKtC,IAAa,2BAA2B;AAExC,SAAgB,iBAAiB,SAAyD;CACxF,OAAO;EACL;EACA,QAAQ,WAAW,2BAA2B;EAC9C,QAAQ,UAAU,CAAC,QAAQ,WAAW,yBAAyB;CACjE,CAAC,CACE,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;AACb;AAEA,IAAa,oBAAoB;AACjC,IAAa,qBAAqB;;;AClDlC,IAAa,2BAA2B,CAAC,mBAAG,IAAI,IAAI;CAClD,GAAG,iBAAiB,qBAAqB;CACzC,GAAG,iBAAiB,uBAAuB;CAC3C,GAAG,iBAAiB,sBAAsB;CAC1C,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,sBAAsB;CAC1C,GAAG,iBAAiB,wBAAwB;CAC5C,GAAG,iBAAiB,uBAAuB;CAC3C,GAAG,iBAAiB,4BAA4B;CAChD,GAAG,iBAAiB,6BAA6B;CACjD,GAAG,iBAAiB,2BAA2B;CAC/C,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,kBAAkB;CAEtC,GAAG,iBAAiB,cAAc;AACpC,CAAC,CAAC;;;AChCF,IAAa,yBAAyB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"config-D0NzGYaE.js","names":[],"sources":["../../src/components/GrCommandPalette/grCommandPaletteStyles.ts","../../src/components/GrCommandPalette/safelist.ts","../../src/components/GrCommandPalette/config.ts"],"sourcesContent":["import type { GrOverlaySize } from '../shared/sizes'\n\nexport type GrCommandPaletteSize = GrOverlaySize\n\n/**\n * Кастомизация через CSS-переменные:\n *\n * - `--gr-command-active-bg` — фон активной (подсвеченной) команды.\n * - `--gr-command-match-bg` — фон совпавшего с запросом фрагмента.\n * - `--gr-command-list-max-height` — максимальная высота списка (иначе — проп `maxHeight`).\n */\n\n// Размер палитры ложится на размеры панели `GrModal` — палитра не изобретает свои ширины.\nexport const commandPaletteModalSizeBySize: Record<GrCommandPaletteSize, GrOverlaySize> = {\n sm: 'sm',\n md: 'md',\n lg: 'lg',\n xl: 'xl',\n full: 'full',\n}\n\nexport const commandSearchRowClass = 'flex items-center gap-2 border-b border-[var(--gr-brd)] px-4'\nexport const commandSearchInputClass = 'min-w-0 flex-1 bg-transparent py-3.5 text-[length:var(--gr-command-input-font-size,15px)] text-[var(--gr-fg)] placeholder:text-[var(--gr-muted-fg)] focus:outline-none'\n\nexport const commandGroupLabelClass = 'px-3 pb-1 pt-3 text-[length:var(--gr-control-text-2xs)] leading-[var(--gr-control-leading-2xs)] font-medium uppercase tracking-wide text-[var(--gr-muted-fg)]'\n\n/** Описание под меткой команды. Цвет приходит из `commandItemMutedClass`. */\nexport const commandItemDescriptionClass = 'block truncate text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]'\n\nexport const commandItemMutedEnabledClass = 'text-[var(--gr-muted-fg)]'\nexport const commandItemMutedDisabledClass = 'text-[var(--gr-disabled-fg)]'\n\n/**\n * Приглушённые части команды — иконка и описание.\n *\n * Гаснут вместе со строкой: свой `--gr-muted-fg` оставил бы у выключенной\n * команды иконку темнее её же метки.\n */\nexport function commandItemMutedClass(disabled: boolean): string {\n return disabled ? commandItemMutedDisabledClass : commandItemMutedEnabledClass\n}\n\n/** Совпавший с запросом фрагмент. Фон — тот же токен подсветки, что у активной строки. */\nexport const commandMatchClass = 'rounded-[var(--gr-radius-xs)] bg-[var(--gr-command-match-bg,color-mix(in_srgb,var(--gr-primary)_22%,transparent))] text-[var(--gr-fg)]'\n\n/**\n * Цвета текста в базе нет намеренно: два `text-[…]` в одном списке классов\n * разрешаются порядком правил в сгенерированном CSS, а не порядком в атрибуте, —\n * и цвет выключенной команды молча проигрывал бы базовому.\n */\nexport const commandItemBaseClass = 'flex w-full items-center gap-3 rounded-[var(--gr-command-item-radius,10px)] px-3 py-2 text-left text-[length:var(--gr-control-text-md)] leading-[var(--gr-control-leading-md)]'\nexport const commandItemEnabledClass = 'cursor-pointer text-[var(--gr-fg)]'\nexport const commandItemActiveClass = 'bg-[var(--gr-command-active-bg,color-mix(in_srgb,var(--gr-muted)_45%,transparent))]'\n/**\n * Выключенная команда гасится токенами состояния, а не `opacity`: прозрачность\n * разбавляет выверенные на AA токены текста и роняет контраст.\n */\nexport const commandItemDisabledClass = 'cursor-not-allowed bg-[var(--gr-disabled-bg)] text-[var(--gr-disabled-fg)]'\n\nexport function commandItemClass(options: { active: boolean, disabled: boolean }): string {\n return [\n commandItemBaseClass,\n options.disabled ? commandItemDisabledClass : commandItemEnabledClass,\n options.active && !options.disabled ? commandItemActiveClass : '',\n ]\n .filter(Boolean)\n .join(' ')\n}\n\nexport const commandEmptyClass = 'px-4 py-10 text-center text-[length:var(--gr-control-text-sm)] leading-[var(--gr-control-leading-sm)] text-[var(--gr-muted-fg)]'\nexport const commandFooterClass = 'flex items-center gap-3 border-t border-[var(--gr-brd)] px-4 py-2 text-[length:var(--gr-control-text-2xs)] leading-[var(--gr-control-leading-2xs)] text-[var(--gr-muted-fg)]'\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n commandEmptyClass,\n commandFooterClass,\n commandGroupLabelClass,\n commandItemActiveClass,\n commandItemBaseClass,\n commandItemDescriptionClass,\n commandItemDisabledClass,\n commandItemEnabledClass,\n commandItemMutedDisabledClass,\n commandItemMutedEnabledClass,\n commandMatchClass,\n commandSearchInputClass,\n commandSearchRowClass,\n} from './grCommandPaletteStyles'\n\n// Вся вёрстка палитры живёт строковыми литералами в grCommandPaletteStyles.ts —\n// на сборке они уезжают в общий dist-чанк, который granularContent не сканирует.\n// Поэтому перечисляем явно (docs/gotchas.md §2).\nexport const grCommandPaletteSafelist = [...new Set([\n ...splitClassTokens(commandSearchRowClass),\n ...splitClassTokens(commandSearchInputClass),\n ...splitClassTokens(commandGroupLabelClass),\n ...splitClassTokens(commandItemBaseClass),\n ...splitClassTokens(commandItemActiveClass),\n ...splitClassTokens(commandItemDisabledClass),\n ...splitClassTokens(commandItemEnabledClass),\n ...splitClassTokens(commandItemMutedEnabledClass),\n ...splitClassTokens(commandItemMutedDisabledClass),\n ...splitClassTokens(commandItemDescriptionClass),\n ...splitClassTokens(commandMatchClass),\n ...splitClassTokens(commandEmptyClass),\n ...splitClassTokens(commandFooterClass),\n // Иконки поля поиска и индикатора загрузки.\n ...splitClassTokens('animate-spin'),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grCommandPaletteSafelist } from './safelist'\n\nexport const grCommandPaletteConfig = defineGranularComponent(import.meta.url, {\n name: 'GrCommandPalette',\n safelist: grCommandPaletteSafelist,\n dependencies: ['GrKbd', 'GrModal'],\n})\n"],"mappings":";;;;;;;;;;AAaA,IAAa,gCAA6E;CACxF,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,MAAM;AACR;AAEA,IAAa,wBAAwB;AACrC,IAAa,0BAA0B;AAEvC,IAAa,yBAAyB;;AAGtC,IAAa,8BAA8B;AAE3C,IAAa,+BAA+B;AAC5C,IAAa,gCAAgC;;;;;;;AAQ7C,SAAgB,sBAAsB,UAA2B;CAC/D,OAAO,WAAW,gCAAgC;AACpD;;AAGA,IAAa,oBAAoB;;;;;;AAOjC,IAAa,uBAAuB;AACpC,IAAa,0BAA0B;AACvC,IAAa,yBAAyB;;;;;AAKtC,IAAa,2BAA2B;AAExC,SAAgB,iBAAiB,SAAyD;CACxF,OAAO;EACL;EACA,QAAQ,WAAW,2BAA2B;EAC9C,QAAQ,UAAU,CAAC,QAAQ,WAAW,yBAAyB;CACjE,CAAC,CACE,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;AACb;AAEA,IAAa,oBAAoB;AACjC,IAAa,qBAAqB;;;AClDlC,IAAa,2BAA2B,CAAC,mBAAG,IAAI,IAAI;CAClD,GAAG,iBAAiB,qBAAqB;CACzC,GAAG,iBAAiB,uBAAuB;CAC3C,GAAG,iBAAiB,sBAAsB;CAC1C,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,sBAAsB;CAC1C,GAAG,iBAAiB,wBAAwB;CAC5C,GAAG,iBAAiB,uBAAuB;CAC3C,GAAG,iBAAiB,4BAA4B;CAChD,GAAG,iBAAiB,6BAA6B;CACjD,GAAG,iBAAiB,2BAA2B;CAC/C,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,kBAAkB;CAEtC,GAAG,iBAAiB,cAAc;AACpC,CAAC,CAAC;;;AChCF,IAAa,yBAAyB,wBAAwB,YAAY,KAAK;CAC7E,MAAM;CACN,UAAU;CACV,cAAc,CAAC,SAAS,SAAS;AACnC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-D0W8mGFD.js","names":[],"sources":["../../src/components/GrList/grListStyles.ts","../../src/components/GrList/safelist.ts","../../src/components/GrList/config.ts"],"sourcesContent":["export type GrListItemDensity = 'compact' | 'regular'\n\n/**\n * Классы `GrList`/`GrListItem`.\n *\n * Единственный источник правды для шаблонов и safelist: до этого карта\n * плотности жила в SFC, а её копия — строковыми литералами прямо в `config.ts`,\n * и разойтись они могли молча.\n */\n\nexport const densityPadding: Record<GrListItemDensity, string> = {\n compact: 'px-4 py-2',\n regular: 'px-4 py-3',\n}\n\n/**\n * Список обрезается по радиусу карточки под ним.\n *\n * Своего радиуса у строки нет и не нужно: строки идут вплотную, и скруглённая\n * подсветка посреди сплошного списка читалась бы как случайная. Но поля у\n * `GrCard` по умолчанию нет, строка лежит вплотную к скруглению, и без клипа\n * фон первой и последней заливает углы — постоянно при `disabled` и по\n * наведению при кликабельной строке.\n *\n * `inherit`, а не повтор `--gr-radius-lg`: значение принадлежит `GrCard`, и\n * копия разошлась бы с ним молча.\n */\nexport const listSurfaceClass = 'overflow-hidden rounded-[inherit]'\n\nexport const itemLayoutClass = 'flex items-start justify-between gap-4'\n\n/** Интерактивная строка занимает всю ширину пункта — кликабельна вся, а не текст. */\nexport const itemInteractiveClass = 'w-full text-left transition-colors duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] focus-visible:ring-inset'\n\nexport const itemHoverClass = 'cursor-pointer hover:bg-[var(--gr-muted)]'\n\n/**\n * Заблокированная строка гасится фоном и цветом, а не `opacity`: прозрачность\n * разбавляет выверенные на AA токены текста.\n */\nexport const itemDisabledClass = 'cursor-not-allowed bg-[var(--gr-muted)] text-[var(--gr-muted-fg)]'\n\nexport const dividedClass = 'divide-y divide-[var(--gr-brd)]'\n\nexport const emptyClass = 'px-4 py-6 text-center text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)] text-[var(--gr-muted-fg)]'\n\n/** Заголовок и описание строки. Оба нужны обеим веткам пункта — интерактивной и обычной. */\nexport const itemTitleClass = 'text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)] font-700'\nexport const itemDescriptionClass = 'mt-0.5 text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)] text-[var(--gr-muted-fg)]'\n\nexport const loadingRowClass = 'px-4 py-3'\n\nexport function grListItemPaddingClass(density: GrListItemDensity): string {\n return densityPadding[density]\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n densityPadding,\n dividedClass,\n emptyClass,\n itemDescriptionClass,\n itemDisabledClass,\n itemHoverClass,\n itemInteractiveClass,\n itemLayoutClass,\n itemTitleClass,\n listSurfaceClass,\n loadingRowClass,\n} from './grListStyles'\n\nexport const grListSafelist = [...new Set([\n ...Object.values(densityPadding).flatMap(splitClassTokens),\n ...splitClassTokens(listSurfaceClass),\n ...splitClassTokens(itemLayoutClass),\n ...splitClassTokens(itemTitleClass),\n ...splitClassTokens(itemDescriptionClass),\n ...splitClassTokens(itemInteractiveClass),\n ...splitClassTokens(itemHoverClass),\n ...splitClassTokens(itemDisabledClass),\n ...splitClassTokens(dividedClass),\n ...splitClassTokens(emptyClass),\n ...splitClassTokens(loadingRowClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grListSafelist } from './safelist'\n\nexport const grListConfig = defineGranularComponent(import.meta.url, {\n name: 'GrList',\n safelist: grListSafelist,\n dependencies: ['GrCard', 'GrSkeleton'],\n})\n"],"mappings":";;;;;;;;;;AAUA,IAAa,iBAAoD;CAC/D,SAAS;CACT,SAAS;AACX;;;;;;;;;;;;;AAcA,IAAa,mBAAmB;AAEhC,IAAa,kBAAkB;;AAG/B,IAAa,uBAAuB;AAEpC,IAAa,iBAAiB;;;;;AAM9B,IAAa,oBAAoB;AAEjC,IAAa,eAAe;AAE5B,IAAa,aAAa;;AAG1B,IAAa,iBAAiB;AAC9B,IAAa,uBAAuB;AAEpC,IAAa,kBAAkB;AAE/B,SAAgB,uBAAuB,SAAoC;CACzE,OAAO,eAAe;AACxB;;;ACvCA,IAAa,iBAAiB,CAAC,mBAAG,IAAI,IAAI;CACxC,GAAG,OAAO,OAAO,cAAc,CAAC,CAAC,QAAQ,gBAAgB;CACzD,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,YAAY;CAChC,GAAG,iBAAiB,UAAU;CAC9B,GAAG,iBAAiB,eAAe;AACrC,CAAC,CAAC;;;ACvBF,IAAa,eAAe,wBAAwB,
|
|
1
|
+
{"version":3,"file":"config-D0W8mGFD.js","names":[],"sources":["../../src/components/GrList/grListStyles.ts","../../src/components/GrList/safelist.ts","../../src/components/GrList/config.ts"],"sourcesContent":["export type GrListItemDensity = 'compact' | 'regular'\n\n/**\n * Классы `GrList`/`GrListItem`.\n *\n * Единственный источник правды для шаблонов и safelist: до этого карта\n * плотности жила в SFC, а её копия — строковыми литералами прямо в `config.ts`,\n * и разойтись они могли молча.\n */\n\nexport const densityPadding: Record<GrListItemDensity, string> = {\n compact: 'px-4 py-2',\n regular: 'px-4 py-3',\n}\n\n/**\n * Список обрезается по радиусу карточки под ним.\n *\n * Своего радиуса у строки нет и не нужно: строки идут вплотную, и скруглённая\n * подсветка посреди сплошного списка читалась бы как случайная. Но поля у\n * `GrCard` по умолчанию нет, строка лежит вплотную к скруглению, и без клипа\n * фон первой и последней заливает углы — постоянно при `disabled` и по\n * наведению при кликабельной строке.\n *\n * `inherit`, а не повтор `--gr-radius-lg`: значение принадлежит `GrCard`, и\n * копия разошлась бы с ним молча.\n */\nexport const listSurfaceClass = 'overflow-hidden rounded-[inherit]'\n\nexport const itemLayoutClass = 'flex items-start justify-between gap-4'\n\n/** Интерактивная строка занимает всю ширину пункта — кликабельна вся, а не текст. */\nexport const itemInteractiveClass = 'w-full text-left transition-colors duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] focus-visible:ring-inset'\n\nexport const itemHoverClass = 'cursor-pointer hover:bg-[var(--gr-muted)]'\n\n/**\n * Заблокированная строка гасится фоном и цветом, а не `opacity`: прозрачность\n * разбавляет выверенные на AA токены текста.\n */\nexport const itemDisabledClass = 'cursor-not-allowed bg-[var(--gr-muted)] text-[var(--gr-muted-fg)]'\n\nexport const dividedClass = 'divide-y divide-[var(--gr-brd)]'\n\nexport const emptyClass = 'px-4 py-6 text-center text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)] text-[var(--gr-muted-fg)]'\n\n/** Заголовок и описание строки. Оба нужны обеим веткам пункта — интерактивной и обычной. */\nexport const itemTitleClass = 'text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)] font-700'\nexport const itemDescriptionClass = 'mt-0.5 text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)] text-[var(--gr-muted-fg)]'\n\nexport const loadingRowClass = 'px-4 py-3'\n\nexport function grListItemPaddingClass(density: GrListItemDensity): string {\n return densityPadding[density]\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n densityPadding,\n dividedClass,\n emptyClass,\n itemDescriptionClass,\n itemDisabledClass,\n itemHoverClass,\n itemInteractiveClass,\n itemLayoutClass,\n itemTitleClass,\n listSurfaceClass,\n loadingRowClass,\n} from './grListStyles'\n\nexport const grListSafelist = [...new Set([\n ...Object.values(densityPadding).flatMap(splitClassTokens),\n ...splitClassTokens(listSurfaceClass),\n ...splitClassTokens(itemLayoutClass),\n ...splitClassTokens(itemTitleClass),\n ...splitClassTokens(itemDescriptionClass),\n ...splitClassTokens(itemInteractiveClass),\n ...splitClassTokens(itemHoverClass),\n ...splitClassTokens(itemDisabledClass),\n ...splitClassTokens(dividedClass),\n ...splitClassTokens(emptyClass),\n ...splitClassTokens(loadingRowClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grListSafelist } from './safelist'\n\nexport const grListConfig = defineGranularComponent(import.meta.url, {\n name: 'GrList',\n safelist: grListSafelist,\n dependencies: ['GrCard', 'GrSkeleton'],\n})\n"],"mappings":";;;;;;;;;;AAUA,IAAa,iBAAoD;CAC/D,SAAS;CACT,SAAS;AACX;;;;;;;;;;;;;AAcA,IAAa,mBAAmB;AAEhC,IAAa,kBAAkB;;AAG/B,IAAa,uBAAuB;AAEpC,IAAa,iBAAiB;;;;;AAM9B,IAAa,oBAAoB;AAEjC,IAAa,eAAe;AAE5B,IAAa,aAAa;;AAG1B,IAAa,iBAAiB;AAC9B,IAAa,uBAAuB;AAEpC,IAAa,kBAAkB;AAE/B,SAAgB,uBAAuB,SAAoC;CACzE,OAAO,eAAe;AACxB;;;ACvCA,IAAa,iBAAiB,CAAC,mBAAG,IAAI,IAAI;CACxC,GAAG,OAAO,OAAO,cAAc,CAAC,CAAC,QAAQ,gBAAgB;CACzD,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,YAAY;CAChC,GAAG,iBAAiB,UAAU;CAC9B,GAAG,iBAAiB,eAAe;AACrC,CAAC,CAAC;;;ACvBF,IAAa,eAAe,wBAAwB,YAAY,KAAK;CACnE,MAAM;CACN,UAAU;CACV,cAAc,CAAC,UAAU,YAAY;AACvC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-D82r782v.js","names":[],"sources":["../../src/components/GrDivider/grDividerStyles.ts","../../src/components/GrDivider/safelist.ts","../../src/components/GrDivider/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\nexport type GrDividerOrientation = 'horizontal' | 'vertical'\nexport type GrDividerAlign = 'start' | 'center' | 'end'\nexport type GrDividerVariant = 'solid' | 'dashed' | 'dotted'\n/** Отступы вокруг разделителя. `none` — вплотную, как было до появления пропа. */\nexport type GrDividerSpacing = 'none' | GrComponentSize\n\n/**\n * Линия рисуется бордюром, а не фоном: `dashed` и `dotted` фоном не выразить,\n * а два разных механизма на три варианта одного и того же — путь к расхождению.\n * Толщину задаёт `--gr-divider-thickness`, поэтому классы про неё не знают.\n */\nexport const lineVariantClass: Record<GrDividerVariant, string> = {\n solid: 'border-solid',\n dashed: 'border-dashed',\n dotted: 'border-dotted',\n}\n\nexport const horizontalLineClass\n = 'border-0 border-t-[length:var(--gr-divider-thickness,1px)] border-[var(--gr-brd)]'\n\nexport const verticalLineClass\n = 'border-0 border-l-[length:var(--gr-divider-thickness,1px)] border-[var(--gr-brd)]'\n\nexport const horizontalSpacingClass: Record<GrDividerSpacing, string> = {\n none: '',\n xs: 'my-1',\n sm: 'my-2',\n md: 'my-3',\n lg: 'my-4',\n}\n\nexport const verticalSpacingClass: Record<GrDividerSpacing, string> = {\n none: '',\n xs: 'mx-1',\n sm: 'mx-2',\n md: 'mx-3',\n lg: 'mx-4',\n}\n\nexport const labelRootClass = 'flex w-full items-center gap-3 text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)] text-[var(--gr-muted-fg)]'\n\n/** Отрезок линии рядом с подписью: тянется по остатку ширины. */\nexport const labelLineClass = 'flex-1'\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n horizontalLineClass,\n horizontalSpacingClass,\n labelLineClass,\n labelRootClass,\n lineVariantClass,\n verticalLineClass,\n verticalSpacingClass,\n} from './grDividerStyles'\n\n// Литералы живут в `.ts`-хелпере, а он на сборке уезжает в общий чанк — скан\n// шаблонов их не увидит. Отсюда и safelist: без него `dashed`-разделитель\n// оказался бы разделителем без линии.\nexport const grDividerSafelist = [...new Set([\n ...splitClassTokens(horizontalLineClass),\n ...splitClassTokens(verticalLineClass),\n ...splitClassTokens(labelRootClass),\n ...splitClassTokens(labelLineClass),\n ...Object.values(lineVariantClass).flatMap(splitClassTokens),\n ...Object.values(horizontalSpacingClass).flatMap(splitClassTokens),\n ...Object.values(verticalSpacingClass).flatMap(splitClassTokens),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grDividerSafelist } from './safelist'\n\nexport const grDividerConfig = defineGranularComponent(import.meta.url, {\n name: 'GrDivider',\n safelist: grDividerSafelist,\n})\n"],"mappings":";;;;;;;;AAaA,IAAa,mBAAqD;CAChE,OAAO;CACP,QAAQ;CACR,QAAQ;AACV;AAEA,IAAa,sBACT;AAEJ,IAAa,oBACT;AAEJ,IAAa,yBAA2D;CACtE,MAAM;CACN,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,uBAAyD;CACpE,MAAM;CACN,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,iBAAiB;;AAG9B,IAAa,iBAAiB;;;AC9B9B,IAAa,oBAAoB,CAAC,mBAAG,IAAI,IAAI;CAC3C,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,cAAc;CAClC,GAAG,OAAO,OAAO,gBAAgB,CAAC,CAAC,QAAQ,gBAAgB;CAC3D,GAAG,OAAO,OAAO,sBAAsB,CAAC,CAAC,QAAQ,gBAAgB;CACjE,GAAG,OAAO,OAAO,oBAAoB,CAAC,CAAC,QAAQ,gBAAgB;AACjE,CAAC,CAAC;;;AClBF,IAAa,kBAAkB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"config-D82r782v.js","names":[],"sources":["../../src/components/GrDivider/grDividerStyles.ts","../../src/components/GrDivider/safelist.ts","../../src/components/GrDivider/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\nexport type GrDividerOrientation = 'horizontal' | 'vertical'\nexport type GrDividerAlign = 'start' | 'center' | 'end'\nexport type GrDividerVariant = 'solid' | 'dashed' | 'dotted'\n/** Отступы вокруг разделителя. `none` — вплотную, как было до появления пропа. */\nexport type GrDividerSpacing = 'none' | GrComponentSize\n\n/**\n * Линия рисуется бордюром, а не фоном: `dashed` и `dotted` фоном не выразить,\n * а два разных механизма на три варианта одного и того же — путь к расхождению.\n * Толщину задаёт `--gr-divider-thickness`, поэтому классы про неё не знают.\n */\nexport const lineVariantClass: Record<GrDividerVariant, string> = {\n solid: 'border-solid',\n dashed: 'border-dashed',\n dotted: 'border-dotted',\n}\n\nexport const horizontalLineClass\n = 'border-0 border-t-[length:var(--gr-divider-thickness,1px)] border-[var(--gr-brd)]'\n\nexport const verticalLineClass\n = 'border-0 border-l-[length:var(--gr-divider-thickness,1px)] border-[var(--gr-brd)]'\n\nexport const horizontalSpacingClass: Record<GrDividerSpacing, string> = {\n none: '',\n xs: 'my-1',\n sm: 'my-2',\n md: 'my-3',\n lg: 'my-4',\n}\n\nexport const verticalSpacingClass: Record<GrDividerSpacing, string> = {\n none: '',\n xs: 'mx-1',\n sm: 'mx-2',\n md: 'mx-3',\n lg: 'mx-4',\n}\n\nexport const labelRootClass = 'flex w-full items-center gap-3 text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)] text-[var(--gr-muted-fg)]'\n\n/** Отрезок линии рядом с подписью: тянется по остатку ширины. */\nexport const labelLineClass = 'flex-1'\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n horizontalLineClass,\n horizontalSpacingClass,\n labelLineClass,\n labelRootClass,\n lineVariantClass,\n verticalLineClass,\n verticalSpacingClass,\n} from './grDividerStyles'\n\n// Литералы живут в `.ts`-хелпере, а он на сборке уезжает в общий чанк — скан\n// шаблонов их не увидит. Отсюда и safelist: без него `dashed`-разделитель\n// оказался бы разделителем без линии.\nexport const grDividerSafelist = [...new Set([\n ...splitClassTokens(horizontalLineClass),\n ...splitClassTokens(verticalLineClass),\n ...splitClassTokens(labelRootClass),\n ...splitClassTokens(labelLineClass),\n ...Object.values(lineVariantClass).flatMap(splitClassTokens),\n ...Object.values(horizontalSpacingClass).flatMap(splitClassTokens),\n ...Object.values(verticalSpacingClass).flatMap(splitClassTokens),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grDividerSafelist } from './safelist'\n\nexport const grDividerConfig = defineGranularComponent(import.meta.url, {\n name: 'GrDivider',\n safelist: grDividerSafelist,\n})\n"],"mappings":";;;;;;;;AAaA,IAAa,mBAAqD;CAChE,OAAO;CACP,QAAQ;CACR,QAAQ;AACV;AAEA,IAAa,sBACT;AAEJ,IAAa,oBACT;AAEJ,IAAa,yBAA2D;CACtE,MAAM;CACN,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,uBAAyD;CACpE,MAAM;CACN,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,iBAAiB;;AAG9B,IAAa,iBAAiB;;;AC9B9B,IAAa,oBAAoB,CAAC,mBAAG,IAAI,IAAI;CAC3C,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,cAAc;CAClC,GAAG,OAAO,OAAO,gBAAgB,CAAC,CAAC,QAAQ,gBAAgB;CAC3D,GAAG,OAAO,OAAO,sBAAsB,CAAC,CAAC,QAAQ,gBAAgB;CACjE,GAAG,OAAO,OAAO,oBAAoB,CAAC,CAAC,QAAQ,gBAAgB;AACjE,CAAC,CAAC;;;AClBF,IAAa,kBAAkB,wBAAwB,YAAY,KAAK;CACtE,MAAM;CACN,UAAU;AACZ,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { n as splitClassTokens, t as flattenTransitionTokens } from "./classTokens-8v2XC74x.js";
|
|
2
|
-
import { _ as
|
|
2
|
+
import { _ as shellByScroll, a as overlayTransition, c as panelHeightBySize, d as panelSectionClass, f as panelTransition, g as shellBase, h as rootClosingClass, i as overlay, l as panelOverflowByScroll, m as root, o as panelBase, p as panelWidthBySize, r as layoutByScroll, s as panelBodyScrollClass, u as panelRadiusBySize, v as shellPaddingBySize } from "./grModalStyles-BEkiFal_.js";
|
|
3
3
|
import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
|
|
4
4
|
//#region src/components/GrModal/safelist.ts
|
|
5
5
|
var grModalClassTokens = {
|
|
6
|
-
root: splitClassTokens(root),
|
|
6
|
+
root: [...splitClassTokens(root), ...splitClassTokens(rootClosingClass)],
|
|
7
7
|
shell: [
|
|
8
8
|
...splitClassTokens(shellBase),
|
|
9
9
|
...Object.values(shellPaddingBySize).flatMap(splitClassTokens),
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-DBi0GVce.js","names":[],"sources":["../../src/components/GrModal/safelist.ts","../../src/components/GrModal/config.ts"],"sourcesContent":["import { flattenTransitionTokens, splitClassTokens } from '../shared/classTokens'\nimport {\n layoutByScroll,\n overlay,\n overlayTransition,\n panelBase,\n panelBodyScrollClass,\n panelHeightBySize,\n panelSectionClass,\n panelOverflowByScroll,\n panelRadiusBySize,\n panelTransition,\n panelWidthBySize,\n root,\n rootClosingClass,\n shellBase,\n shellByScroll,\n shellPaddingBySize,\n} from './grModalStyles'\n\ntype GrModalClassTokens = {\n root: readonly string[]\n shell: readonly string[]\n layout: readonly string[]\n overlay: readonly string[]\n overlayTransition: readonly string[]\n panelBase: readonly string[]\n panelTransition: readonly string[]\n panelWidth: readonly string[]\n panelRadius: readonly string[]\n panelHeight: readonly string[]\n}\n\nexport const grModalClassTokens: GrModalClassTokens = {\n root: [...splitClassTokens(root), ...splitClassTokens(rootClosingClass)],\n shell: [\n ...splitClassTokens(shellBase),\n ...Object.values(shellPaddingBySize).flatMap(splitClassTokens),\n ...Object.values(shellByScroll).flatMap(splitClassTokens),\n ],\n layout: Object.values(layoutByScroll).flatMap(splitClassTokens),\n overlay: splitClassTokens(overlay),\n overlayTransition: flattenTransitionTokens(overlayTransition),\n panelBase: [\n ...splitClassTokens(panelBase),\n ...Object.values(panelOverflowByScroll).flatMap(splitClassTokens),\n ...splitClassTokens(panelBodyScrollClass),\n ...splitClassTokens(panelSectionClass),\n ],\n panelTransition: flattenTransitionTokens(panelTransition),\n panelWidth: Object.values(panelWidthBySize).flatMap(splitClassTokens),\n panelRadius: Object.values(panelRadiusBySize).flatMap(splitClassTokens),\n panelHeight: Object.values(panelHeightBySize).flatMap(v => splitClassTokens(v ?? '')),\n}\n\nexport const grModalSafelist = [...new Set([\n ...grModalClassTokens.root,\n ...grModalClassTokens.shell,\n ...grModalClassTokens.layout,\n ...grModalClassTokens.overlay,\n ...grModalClassTokens.overlayTransition,\n ...grModalClassTokens.panelBase,\n ...grModalClassTokens.panelTransition,\n ...grModalClassTokens.panelWidth,\n ...grModalClassTokens.panelRadius,\n ...grModalClassTokens.panelHeight,\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grModalSafelist } from './safelist'\n\nexport const grModalConfig = defineGranularComponent(import.meta.url, {\n name: 'GrModal',\n safelist: grModalSafelist,\n})\n"],"mappings":";;;;AAiCA,IAAa,qBAAyC;CACpD,MAAM,CAAC,GAAG,iBAAiB,IAAI,GAAG,GAAG,iBAAiB,gBAAgB,CAAC;CACvE,OAAO;EACL,GAAG,iBAAiB,SAAS;EAC7B,GAAG,OAAO,OAAO,kBAAkB,CAAC,CAAC,QAAQ,gBAAgB;EAC7D,GAAG,OAAO,OAAO,aAAa,CAAC,CAAC,QAAQ,gBAAgB;CAC1D;CACA,QAAQ,OAAO,OAAO,cAAc,CAAC,CAAC,QAAQ,gBAAgB;CAC9D,SAAS,iBAAiB,OAAO;CACjC,mBAAmB,wBAAwB,iBAAiB;CAC5D,WAAW;EACT,GAAG,iBAAiB,SAAS;EAC7B,GAAG,OAAO,OAAO,qBAAqB,CAAC,CAAC,QAAQ,gBAAgB;EAChE,GAAG,iBAAiB,oBAAoB;EACxC,GAAG,iBAAiB,iBAAiB;CACvC;CACA,iBAAiB,wBAAwB,eAAe;CACxD,YAAY,OAAO,OAAO,gBAAgB,CAAC,CAAC,QAAQ,gBAAgB;CACpE,aAAa,OAAO,OAAO,iBAAiB,CAAC,CAAC,QAAQ,gBAAgB;CACtE,aAAa,OAAO,OAAO,iBAAiB,CAAC,CAAC,SAAQ,MAAK,iBAAiB,KAAK,EAAE,CAAC;AACtF;AAEA,IAAa,kBAAkB,CAAC,mBAAG,IAAI,IAAI;CACzC,GAAG,mBAAmB;CACtB,GAAG,mBAAmB;CACtB,GAAG,mBAAmB;CACtB,GAAG,mBAAmB;CACtB,GAAG,mBAAmB;CACtB,GAAG,mBAAmB;CACtB,GAAG,mBAAmB;CACtB,GAAG,mBAAmB;CACtB,GAAG,mBAAmB;CACtB,GAAG,mBAAmB;AACxB,CAAC,CAAC;;;AC9DF,IAAa,gBAAgB,wBAAwB,YAAY,KAAK;CACpE,MAAM;CACN,UAAU;AACZ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-DBmdgoVf.js","names":[],"sources":["../../src/components/GrButtonGroup/config.ts"],"sourcesContent":["import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nexport const grButtonGroupConfig = defineGranularComponent(import.meta.url, {\n name: 'GrButtonGroup',\n})\n"],"mappings":";;AAEA,IAAa,sBAAsB,wBAAwB,YAAY,KAAK,EAC1E,MAAM,gBACR,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-DCq4JySZ.js","names":[],"sources":["../../src/components/GrTable/safelist.ts","../../src/components/GrTable/config.ts"],"sourcesContent":["import { splitClassTokens } from '../shared/classTokens'\nimport {\n emptyCellClass,\n hoverableClass,\n loadingRowCellClass,\n stripedClass,\n tableSizes,\n} from './grTableStyles'\n\nexport const grTableSafelist = [...new Set([\n ...Object.values(tableSizes).flatMap(splitClassTokens),\n ...splitClassTokens(stripedClass),\n ...splitClassTokens(hoverableClass),\n ...splitClassTokens(emptyCellClass),\n ...splitClassTokens(loadingRowCellClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grTableSafelist } from './safelist'\n\nexport const grTableConfig = defineGranularComponent(import.meta.url, {\n name: 'GrTable',\n dependencies: ['GrSkeleton'],\n safelist: grTableSafelist,\n})\n"],"mappings":";;;;AASA,IAAa,kBAAkB,CAAC,mBAAG,IAAI,IAAI;CACzC,GAAG,OAAO,OAAO,UAAU,CAAC,CAAC,QAAQ,gBAAgB;CACrD,GAAG,iBAAiB,YAAY;CAChC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,mBAAmB;AACzC,CAAC,CAAC;;;ACXF,IAAa,gBAAgB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"config-DCq4JySZ.js","names":[],"sources":["../../src/components/GrTable/safelist.ts","../../src/components/GrTable/config.ts"],"sourcesContent":["import { splitClassTokens } from '../shared/classTokens'\nimport {\n emptyCellClass,\n hoverableClass,\n loadingRowCellClass,\n stripedClass,\n tableSizes,\n} from './grTableStyles'\n\nexport const grTableSafelist = [...new Set([\n ...Object.values(tableSizes).flatMap(splitClassTokens),\n ...splitClassTokens(stripedClass),\n ...splitClassTokens(hoverableClass),\n ...splitClassTokens(emptyCellClass),\n ...splitClassTokens(loadingRowCellClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grTableSafelist } from './safelist'\n\nexport const grTableConfig = defineGranularComponent(import.meta.url, {\n name: 'GrTable',\n dependencies: ['GrSkeleton'],\n safelist: grTableSafelist,\n})\n"],"mappings":";;;;AASA,IAAa,kBAAkB,CAAC,mBAAG,IAAI,IAAI;CACzC,GAAG,OAAO,OAAO,UAAU,CAAC,CAAC,QAAQ,gBAAgB;CACrD,GAAG,iBAAiB,YAAY;CAChC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,mBAAmB;AACzC,CAAC,CAAC;;;ACXF,IAAa,gBAAgB,wBAAwB,YAAY,KAAK;CACpE,MAAM;CACN,cAAc,CAAC,YAAY;CAC3B,UAAU;AACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-DGC00bTp.js","names":[],"sources":["../../src/components/GrStatistic/grStatisticStyles.ts","../../src/components/GrStatistic/safelist.ts","../../src/components/GrStatistic/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\nimport type { GrTone } from '../shared/tones'\n\nexport type GrStatisticSize = GrComponentSize\nexport type GrStatisticTone = GrTone\n/** Направление динамики показателя. */\nexport type GrStatisticTrend = 'up' | 'down' | 'flat'\n\n/**\n * Кастомизация через CSS-переменные:\n *\n * - `--gr-statistic-value-color` — цвет значения (по умолчанию — из `tone`).\n * - `--gr-statistic-title-color` — цвет подписи показателя.\n */\n\nexport const statisticTitleSizeBySize: Record<GrStatisticSize, string> = {\n xs: 'text-[length:var(--gr-text-2xs)] leading-[var(--gr-leading-2xs)]',\n sm: 'text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]',\n md: 'text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]',\n lg: 'text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]',\n}\n\nexport const statisticValueSizeBySize: Record<GrStatisticSize, string> = {\n xs: 'text-[length:var(--gr-text-base)] leading-[var(--gr-leading-base)]',\n sm: 'text-[length:var(--gr-text-xl)] leading-[var(--gr-leading-xl)]',\n md: 'text-[length:var(--gr-text-3xl)] leading-[var(--gr-leading-3xl)]',\n lg: 'text-[length:var(--gr-text-4xl)] leading-tight',\n}\n\nexport const statisticAffixSizeBySize: Record<GrStatisticSize, string> = {\n xs: 'text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]',\n sm: 'text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]',\n md: 'text-[length:var(--gr-text-base)] leading-[var(--gr-leading-base)]',\n lg: 'text-[length:var(--gr-text-xl)] leading-[var(--gr-leading-xl)]',\n}\n\n/**\n * Кегль приписки — значением токена, а не классом: он уезжает в\n * `--gr-value-suffix-size`, которым `GrValue` и набирает суффикс.\n *\n * Ступень шкалы, а не доля от величины: у плитки шкала размеров своя, и на\n * ступени `md` число крупное (`--gr-text-3xl`), а приписка при нём обязана\n * остаться подписью. Доля дала бы её вровень с числом.\n */\nexport const statisticAffixSizeVarBySize: Record<GrStatisticSize, string> = {\n xs: 'var(--gr-text-xs)',\n sm: 'var(--gr-text-xs)',\n md: 'var(--gr-text-base)',\n lg: 'var(--gr-text-xl)',\n}\n\n// Высота плейсхолдера загрузки повторяет строку значения — блок не «прыгает».\n// Значение отдаётся в `GrSkeleton` пропом, поэтому это px, а не класс.\nexport const statisticPlaceholderHeightBySize: Record<GrStatisticSize, string> = {\n xs: '22px',\n sm: '28px',\n md: '36px',\n lg: '44px',\n}\n\nexport const statisticTrendSizeBySize: Record<GrStatisticSize, string> = {\n xs: 'text-[length:var(--gr-text-2xs)] leading-[var(--gr-leading-2xs)]',\n sm: 'text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]',\n md: 'text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]',\n lg: 'text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]',\n}\n\n// Цвет значения по тону. `neutral` наследует основной цвет текста.\n//\n// Тона берутся из `-text`, а не из насыщенного `--gr-{tone}`: значение — это\n// ТЕКСТ на фоне страницы, а насыщенный тон для этого не предназначен\n// (`--gr-success` на `--gr-bg` — 2.2:1, ниже даже послабления 3:1 для крупного\n// текста). `-text` — ровно роль «тон как текст».\nexport const statisticValueClassByTone: Record<GrStatisticTone, string> = {\n neutral: 'text-[var(--gr-statistic-value-color,var(--gr-fg))]',\n primary: 'text-[var(--gr-statistic-value-color,var(--gr-primary))]',\n success: 'text-[var(--gr-statistic-value-color,var(--gr-success-text))]',\n warning: 'text-[var(--gr-statistic-value-color,var(--gr-warning-text))]',\n danger: 'text-[var(--gr-statistic-value-color,var(--gr-danger-text))]',\n info: 'text-[var(--gr-statistic-value-color,var(--gr-info-text))]',\n slate: 'text-[var(--gr-statistic-value-color,var(--gr-slate-text))]',\n azure: 'text-[var(--gr-statistic-value-color,var(--gr-azure-text))]',\n}\n\n// Строка динамики: рост — успех, падение — опасность, без изменений — приглушённый.\nexport const statisticTrendClassByTrend: Record<GrStatisticTrend, string> = {\n up: 'text-[var(--gr-success-text)]',\n down: 'text-[var(--gr-danger-text)]',\n flat: 'text-[var(--gr-muted-fg)]',\n}\n\nexport const statisticTitleClass = 'font-medium tracking-wide text-[var(--gr-statistic-title-color,var(--gr-muted-fg))]'\n\nexport const statisticRootBase = 'flex items-start gap-3 text-left'\n\n/**\n * Показатель-ссылка или показатель-кнопка. Своей заливки не получает: плитка\n * дашборда обычно уже лежит в `GrCard`, и вторая поверхность спорила бы с ней.\n * Видимость интерактивности держат курсор, фокус-кольцо и подсветка подписи.\n */\nexport const statisticRootInteractiveClass = 'w-full cursor-pointer rounded-[var(--gr-radius-md)] transition-colors hover:bg-[var(--gr-muted)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\n\nexport function statisticRootClass(options: { interactive: boolean }): string {\n return [\n statisticRootBase,\n options.interactive ? statisticRootInteractiveClass : '',\n ].filter(Boolean).join(' ')\n}\n\n/** `tabular-nums` держит ширину строки при переборе чисел и при смене значения. */\nexport const statisticValueTypographyClass = 'font-semibold tabular-nums'\n\nexport function statisticValueClass(options: { size: GrStatisticSize, tone: GrStatisticTone }): string {\n return [\n statisticValueTypographyClass,\n statisticValueSizeBySize[options.size],\n statisticValueClassByTone[options.tone],\n ].join(' ')\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n statisticAffixSizeBySize,\n statisticRootBase,\n statisticRootInteractiveClass,\n statisticTitleClass,\n statisticTitleSizeBySize,\n statisticTrendClassByTrend,\n statisticTrendSizeBySize,\n statisticValueClassByTone,\n statisticValueSizeBySize,\n statisticValueTypographyClass,\n} from './grStatisticStyles'\n\n// Классы из вычисляемых мап (size/tone/trend) UnoCSS сканом не находит — только safelist.\nexport const grStatisticSafelist = [...new Set([\n ...Object.values(statisticTitleSizeBySize).flatMap(splitClassTokens),\n ...Object.values(statisticValueSizeBySize).flatMap(splitClassTokens),\n ...Object.values(statisticAffixSizeBySize).flatMap(splitClassTokens),\n ...Object.values(statisticTrendSizeBySize).flatMap(splitClassTokens),\n ...Object.values(statisticValueClassByTone).flatMap(splitClassTokens),\n ...Object.values(statisticTrendClassByTrend).flatMap(splitClassTokens),\n // Иконки динамики приходят из мапы — как классы-маски их тоже надо сгенерировать.\n // Литералы из grStatisticStyles.ts (корень, подпись, типографика значения).\n ...splitClassTokens(statisticRootBase),\n ...splitClassTokens(statisticRootInteractiveClass),\n ...splitClassTokens(statisticTitleClass),\n ...splitClassTokens(statisticValueTypographyClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grStatisticSafelist } from './safelist'\n\nexport const grStatisticConfig = defineGranularComponent(import.meta.url, {\n name: 'GrStatistic',\n safelist: grStatisticSafelist,\n dependencies: ['GrSkeleton', 'GrValue'],\n})\n"],"mappings":";;;;;;;;;AAgBA,IAAa,2BAA4D;CACvE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,2BAA4D;CACvE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,2BAA4D;CACvE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;;;;;AAUA,IAAa,8BAA+D;CAC1E,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAIA,IAAa,mCAAoE;CAC/E,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,2BAA4D;CACvE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAQA,IAAa,4BAA6D;CACxE,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,QAAQ;CACR,MAAM;CACN,OAAO;CACP,OAAO;AACT;AAGA,IAAa,6BAA+D;CAC1E,IAAI;CACJ,MAAM;CACN,MAAM;AACR;AAEA,IAAa,sBAAsB;AAEnC,IAAa,oBAAoB;;;;;;AAOjC,IAAa,gCAAgC;AAE7C,SAAgB,mBAAmB,SAA2C;CAC5E,OAAO,CACL,mBACA,QAAQ,cAAc,gCAAgC,EACxD,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;AAC5B;;AAGA,IAAa,gCAAgC;AAE7C,SAAgB,oBAAoB,SAAmE;CACrG,OAAO;EACL;EACA,yBAAyB,QAAQ;EACjC,0BAA0B,QAAQ;CACpC,CAAC,CAAC,KAAK,GAAG;AACZ;;;ACxGA,IAAa,sBAAsB,CAAC,mBAAG,IAAI,IAAI;CAC7C,GAAG,OAAO,OAAO,wBAAwB,CAAC,CAAC,QAAQ,gBAAgB;CACnE,GAAG,OAAO,OAAO,wBAAwB,CAAC,CAAC,QAAQ,gBAAgB;CACnE,GAAG,OAAO,OAAO,wBAAwB,CAAC,CAAC,QAAQ,gBAAgB;CACnE,GAAG,OAAO,OAAO,wBAAwB,CAAC,CAAC,QAAQ,gBAAgB;CACnE,GAAG,OAAO,OAAO,yBAAyB,CAAC,CAAC,QAAQ,gBAAgB;CACpE,GAAG,OAAO,OAAO,0BAA0B,CAAC,CAAC,QAAQ,gBAAgB;CAGrE,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,6BAA6B;CACjD,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,6BAA6B;AACnD,CAAC,CAAC;;;ACxBF,IAAa,oBAAoB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"config-DGC00bTp.js","names":[],"sources":["../../src/components/GrStatistic/grStatisticStyles.ts","../../src/components/GrStatistic/safelist.ts","../../src/components/GrStatistic/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\nimport type { GrTone } from '../shared/tones'\n\nexport type GrStatisticSize = GrComponentSize\nexport type GrStatisticTone = GrTone\n/** Направление динамики показателя. */\nexport type GrStatisticTrend = 'up' | 'down' | 'flat'\n\n/**\n * Кастомизация через CSS-переменные:\n *\n * - `--gr-statistic-value-color` — цвет значения (по умолчанию — из `tone`).\n * - `--gr-statistic-title-color` — цвет подписи показателя.\n */\n\nexport const statisticTitleSizeBySize: Record<GrStatisticSize, string> = {\n xs: 'text-[length:var(--gr-text-2xs)] leading-[var(--gr-leading-2xs)]',\n sm: 'text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]',\n md: 'text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]',\n lg: 'text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]',\n}\n\nexport const statisticValueSizeBySize: Record<GrStatisticSize, string> = {\n xs: 'text-[length:var(--gr-text-base)] leading-[var(--gr-leading-base)]',\n sm: 'text-[length:var(--gr-text-xl)] leading-[var(--gr-leading-xl)]',\n md: 'text-[length:var(--gr-text-3xl)] leading-[var(--gr-leading-3xl)]',\n lg: 'text-[length:var(--gr-text-4xl)] leading-tight',\n}\n\nexport const statisticAffixSizeBySize: Record<GrStatisticSize, string> = {\n xs: 'text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]',\n sm: 'text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]',\n md: 'text-[length:var(--gr-text-base)] leading-[var(--gr-leading-base)]',\n lg: 'text-[length:var(--gr-text-xl)] leading-[var(--gr-leading-xl)]',\n}\n\n/**\n * Кегль приписки — значением токена, а не классом: он уезжает в\n * `--gr-value-suffix-size`, которым `GrValue` и набирает суффикс.\n *\n * Ступень шкалы, а не доля от величины: у плитки шкала размеров своя, и на\n * ступени `md` число крупное (`--gr-text-3xl`), а приписка при нём обязана\n * остаться подписью. Доля дала бы её вровень с числом.\n */\nexport const statisticAffixSizeVarBySize: Record<GrStatisticSize, string> = {\n xs: 'var(--gr-text-xs)',\n sm: 'var(--gr-text-xs)',\n md: 'var(--gr-text-base)',\n lg: 'var(--gr-text-xl)',\n}\n\n// Высота плейсхолдера загрузки повторяет строку значения — блок не «прыгает».\n// Значение отдаётся в `GrSkeleton` пропом, поэтому это px, а не класс.\nexport const statisticPlaceholderHeightBySize: Record<GrStatisticSize, string> = {\n xs: '22px',\n sm: '28px',\n md: '36px',\n lg: '44px',\n}\n\nexport const statisticTrendSizeBySize: Record<GrStatisticSize, string> = {\n xs: 'text-[length:var(--gr-text-2xs)] leading-[var(--gr-leading-2xs)]',\n sm: 'text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]',\n md: 'text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]',\n lg: 'text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]',\n}\n\n// Цвет значения по тону. `neutral` наследует основной цвет текста.\n//\n// Тона берутся из `-text`, а не из насыщенного `--gr-{tone}`: значение — это\n// ТЕКСТ на фоне страницы, а насыщенный тон для этого не предназначен\n// (`--gr-success` на `--gr-bg` — 2.2:1, ниже даже послабления 3:1 для крупного\n// текста). `-text` — ровно роль «тон как текст».\nexport const statisticValueClassByTone: Record<GrStatisticTone, string> = {\n neutral: 'text-[var(--gr-statistic-value-color,var(--gr-fg))]',\n primary: 'text-[var(--gr-statistic-value-color,var(--gr-primary))]',\n success: 'text-[var(--gr-statistic-value-color,var(--gr-success-text))]',\n warning: 'text-[var(--gr-statistic-value-color,var(--gr-warning-text))]',\n danger: 'text-[var(--gr-statistic-value-color,var(--gr-danger-text))]',\n info: 'text-[var(--gr-statistic-value-color,var(--gr-info-text))]',\n slate: 'text-[var(--gr-statistic-value-color,var(--gr-slate-text))]',\n azure: 'text-[var(--gr-statistic-value-color,var(--gr-azure-text))]',\n}\n\n// Строка динамики: рост — успех, падение — опасность, без изменений — приглушённый.\nexport const statisticTrendClassByTrend: Record<GrStatisticTrend, string> = {\n up: 'text-[var(--gr-success-text)]',\n down: 'text-[var(--gr-danger-text)]',\n flat: 'text-[var(--gr-muted-fg)]',\n}\n\nexport const statisticTitleClass = 'font-medium tracking-wide text-[var(--gr-statistic-title-color,var(--gr-muted-fg))]'\n\nexport const statisticRootBase = 'flex items-start gap-3 text-left'\n\n/**\n * Показатель-ссылка или показатель-кнопка. Своей заливки не получает: плитка\n * дашборда обычно уже лежит в `GrCard`, и вторая поверхность спорила бы с ней.\n * Видимость интерактивности держат курсор, фокус-кольцо и подсветка подписи.\n */\nexport const statisticRootInteractiveClass = 'w-full cursor-pointer rounded-[var(--gr-radius-md)] transition-colors hover:bg-[var(--gr-muted)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\n\nexport function statisticRootClass(options: { interactive: boolean }): string {\n return [\n statisticRootBase,\n options.interactive ? statisticRootInteractiveClass : '',\n ].filter(Boolean).join(' ')\n}\n\n/** `tabular-nums` держит ширину строки при переборе чисел и при смене значения. */\nexport const statisticValueTypographyClass = 'font-semibold tabular-nums'\n\nexport function statisticValueClass(options: { size: GrStatisticSize, tone: GrStatisticTone }): string {\n return [\n statisticValueTypographyClass,\n statisticValueSizeBySize[options.size],\n statisticValueClassByTone[options.tone],\n ].join(' ')\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n statisticAffixSizeBySize,\n statisticRootBase,\n statisticRootInteractiveClass,\n statisticTitleClass,\n statisticTitleSizeBySize,\n statisticTrendClassByTrend,\n statisticTrendSizeBySize,\n statisticValueClassByTone,\n statisticValueSizeBySize,\n statisticValueTypographyClass,\n} from './grStatisticStyles'\n\n// Классы из вычисляемых мап (size/tone/trend) UnoCSS сканом не находит — только safelist.\nexport const grStatisticSafelist = [...new Set([\n ...Object.values(statisticTitleSizeBySize).flatMap(splitClassTokens),\n ...Object.values(statisticValueSizeBySize).flatMap(splitClassTokens),\n ...Object.values(statisticAffixSizeBySize).flatMap(splitClassTokens),\n ...Object.values(statisticTrendSizeBySize).flatMap(splitClassTokens),\n ...Object.values(statisticValueClassByTone).flatMap(splitClassTokens),\n ...Object.values(statisticTrendClassByTrend).flatMap(splitClassTokens),\n // Иконки динамики приходят из мапы — как классы-маски их тоже надо сгенерировать.\n // Литералы из grStatisticStyles.ts (корень, подпись, типографика значения).\n ...splitClassTokens(statisticRootBase),\n ...splitClassTokens(statisticRootInteractiveClass),\n ...splitClassTokens(statisticTitleClass),\n ...splitClassTokens(statisticValueTypographyClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grStatisticSafelist } from './safelist'\n\nexport const grStatisticConfig = defineGranularComponent(import.meta.url, {\n name: 'GrStatistic',\n safelist: grStatisticSafelist,\n dependencies: ['GrSkeleton', 'GrValue'],\n})\n"],"mappings":";;;;;;;;;AAgBA,IAAa,2BAA4D;CACvE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,2BAA4D;CACvE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,2BAA4D;CACvE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;;;;;AAUA,IAAa,8BAA+D;CAC1E,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAIA,IAAa,mCAAoE;CAC/E,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,2BAA4D;CACvE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAQA,IAAa,4BAA6D;CACxE,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,QAAQ;CACR,MAAM;CACN,OAAO;CACP,OAAO;AACT;AAGA,IAAa,6BAA+D;CAC1E,IAAI;CACJ,MAAM;CACN,MAAM;AACR;AAEA,IAAa,sBAAsB;AAEnC,IAAa,oBAAoB;;;;;;AAOjC,IAAa,gCAAgC;AAE7C,SAAgB,mBAAmB,SAA2C;CAC5E,OAAO,CACL,mBACA,QAAQ,cAAc,gCAAgC,EACxD,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;AAC5B;;AAGA,IAAa,gCAAgC;AAE7C,SAAgB,oBAAoB,SAAmE;CACrG,OAAO;EACL;EACA,yBAAyB,QAAQ;EACjC,0BAA0B,QAAQ;CACpC,CAAC,CAAC,KAAK,GAAG;AACZ;;;ACxGA,IAAa,sBAAsB,CAAC,mBAAG,IAAI,IAAI;CAC7C,GAAG,OAAO,OAAO,wBAAwB,CAAC,CAAC,QAAQ,gBAAgB;CACnE,GAAG,OAAO,OAAO,wBAAwB,CAAC,CAAC,QAAQ,gBAAgB;CACnE,GAAG,OAAO,OAAO,wBAAwB,CAAC,CAAC,QAAQ,gBAAgB;CACnE,GAAG,OAAO,OAAO,wBAAwB,CAAC,CAAC,QAAQ,gBAAgB;CACnE,GAAG,OAAO,OAAO,yBAAyB,CAAC,CAAC,QAAQ,gBAAgB;CACpE,GAAG,OAAO,OAAO,0BAA0B,CAAC,CAAC,QAAQ,gBAAgB;CAGrE,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,6BAA6B;CACjD,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,6BAA6B;AACnD,CAAC,CAAC;;;ACxBF,IAAa,oBAAoB,wBAAwB,YAAY,KAAK;CACxE,MAAM;CACN,UAAU;CACV,cAAc,CAAC,cAAc,SAAS;AACxC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-DIDz_E5m.js","names":[],"sources":["../../src/components/GrColorPicker/grColorPickerStyles.ts","../../src/components/GrColorPicker/safelist.ts","../../src/components/GrColorPicker/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\nexport type GrColorPickerSize = GrComponentSize\n\n/**\n * Триггер повторяет геометрию поля ввода: пикер чаще всего стоит в форме рядом\n * с `GrInput`, и своя лестница высот выдала бы его из ряда.\n */\nexport const triggerSizeClassBySize: Record<GrColorPickerSize, string> = {\n xs: 'h-7 px-2 gap-1.5 text-[length:var(--gr-control-text-xs)] leading-[var(--gr-control-leading-xs)]',\n sm: 'h-8 px-2.5 gap-2 text-[length:var(--gr-control-text-sm)] leading-[var(--gr-control-leading-sm)]',\n md: 'h-10 px-3 gap-2 text-[length:var(--gr-control-text-md)] leading-[var(--gr-control-leading-md)]',\n lg: 'h-11 px-4 gap-2.5 text-[length:var(--gr-control-text-lg)] leading-[var(--gr-control-leading-lg)]',\n}\n\n/** Образец в триггере: квадрат со стороной чуть меньше высоты поля. */\nexport const triggerSwatchSizeBySize: Record<GrColorPickerSize, string> = {\n xs: 'h-3.5 w-3.5',\n sm: 'h-4 w-4',\n md: 'h-5 w-5',\n lg: 'h-6 w-6',\n}\n\nexport const panelSizeClassBySize: Record<GrColorPickerSize, string> = {\n xs: 'w-56 gap-2 text-[length:var(--gr-control-text-xs)] leading-[var(--gr-control-leading-xs)]',\n sm: 'w-60 gap-2.5 text-[length:var(--gr-control-text-sm)] leading-[var(--gr-control-leading-sm)]',\n md: 'w-64 gap-3 text-[length:var(--gr-control-text-md)] leading-[var(--gr-control-leading-md)]',\n lg: 'w-72 gap-3 text-[length:var(--gr-control-text-lg)] leading-[var(--gr-control-leading-lg)]',\n}\n\nexport const triggerBaseClass = 'inline-flex w-full min-w-0 items-center rounded-[var(--gr-radius-control)] border border-[var(--gr-brd)] bg-[var(--gr-bg)] text-[var(--gr-fg)] transition-colors duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\n\n/** Недоступное поле гасится токенами, а не `opacity`: прозрачность роняет контраст подписи. */\nexport const triggerDisabledClass = 'cursor-not-allowed border-[var(--gr-brd)] bg-[var(--gr-muted)] text-[var(--gr-disabled-fg)]'\nexport const triggerEnabledClass = 'cursor-pointer hover:border-[var(--gr-primary)]'\nexport const triggerInvalidClass = 'border-[var(--gr-invalid-brd)] focus-visible:ring-[var(--gr-invalid-ring)]'\n\nexport const triggerValueClass = 'min-w-0 flex-1 truncate text-left tabular-nums'\n\n/**\n * Шахматка под прозрачным цветом. Живёт классом-маркером, а сами клетки рисует\n * `<style>` компонента: два `conic-gradient` в утилите не выражаются.\n */\nexport const checkerClass = 'gr-color-picker-checker'\n\nexport const swatchBaseClass = 'relative shrink-0 overflow-hidden rounded-[var(--gr-radius-sm)] border border-[color-mix(in_srgb,var(--gr-fg)_18%,transparent)]'\n\n/** Заливка образца лежит поверх шахматки отдельным слоем. */\nexport const swatchFillClass = 'absolute inset-0'\n\nexport const panelBaseClass = 'grid'\n\nexport const previewClass = 'relative h-10 w-full overflow-hidden rounded-[var(--gr-radius-md)] border border-[color-mix(in_srgb,var(--gr-fg)_18%,transparent)]'\n\nexport const rowClass = 'grid grid-cols-[1.25rem_minmax(0,1fr)_2.75rem] items-center gap-2'\nexport const rowLabelClass = 'text-[var(--gr-muted-fg)]'\nexport const rowValueClass = 'text-right text-[var(--gr-muted-fg)] tabular-nums'\n\nexport const presetsGridClass = 'flex flex-wrap gap-1.5'\nexport const presetBaseClass = 'relative h-5 w-5 shrink-0 overflow-hidden rounded-[var(--gr-radius-sm)] border border-[color-mix(in_srgb,var(--gr-fg)_18%,transparent)] transition-shadow duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\nexport const presetSelectedClass = 'ring-2 ring-[var(--gr-primary)] ring-offset-1 ring-offset-[var(--gr-popover)]'\n\nexport function grColorPickerTriggerClass(options: {\n size: GrColorPickerSize\n disabled: boolean\n invalid: boolean\n}): string {\n return [\n triggerBaseClass,\n triggerSizeClassBySize[options.size],\n options.disabled ? triggerDisabledClass : triggerEnabledClass,\n options.invalid ? triggerInvalidClass : '',\n ].filter(Boolean).join(' ')\n}\n\nexport function grColorPickerPanelClass(size: GrColorPickerSize): string {\n return [panelBaseClass, panelSizeClassBySize[size]].join(' ')\n}\n\nexport function grColorPickerPresetClass(selected: boolean): string {\n return [presetBaseClass, selected ? presetSelectedClass : ''].filter(Boolean).join(' ')\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n panelBaseClass,\n panelSizeClassBySize,\n presetBaseClass,\n presetSelectedClass,\n presetsGridClass,\n previewClass,\n rowClass,\n rowLabelClass,\n rowValueClass,\n swatchBaseClass,\n swatchFillClass,\n triggerBaseClass,\n triggerDisabledClass,\n triggerEnabledClass,\n triggerInvalidClass,\n triggerSizeClassBySize,\n triggerSwatchSizeBySize,\n triggerValueClass,\n} from './grColorPickerStyles'\n\n// Классы из вычисляемых мап и литералов `.ts`-хелпера UnoCSS сканом не находит.\n//\n// `checkerClass` сюда не входит намеренно: это класс-маркер под собственный\n// `<style>` компонента, а не утилита — CSS из него не генерируется, и гейт\n// `documentedConfig` справедливо на такой записи падает.\nexport const grColorPickerSafelist = [...new Set([\n ...Object.values(triggerSizeClassBySize).flatMap(splitClassTokens),\n ...Object.values(triggerSwatchSizeBySize).flatMap(splitClassTokens),\n ...Object.values(panelSizeClassBySize).flatMap(splitClassTokens),\n ...splitClassTokens(triggerBaseClass),\n ...splitClassTokens(triggerDisabledClass),\n ...splitClassTokens(triggerEnabledClass),\n ...splitClassTokens(triggerInvalidClass),\n ...splitClassTokens(triggerValueClass),\n ...splitClassTokens(swatchBaseClass),\n ...splitClassTokens(swatchFillClass),\n ...splitClassTokens(panelBaseClass),\n ...splitClassTokens(previewClass),\n ...splitClassTokens(rowClass),\n ...splitClassTokens(rowLabelClass),\n ...splitClassTokens(rowValueClass),\n ...splitClassTokens(presetsGridClass),\n ...splitClassTokens(presetBaseClass),\n ...splitClassTokens(presetSelectedClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grColorPickerSafelist } from './safelist'\n\nexport const grColorPickerConfig = defineGranularComponent(import.meta.url, {\n name: 'GrColorPicker',\n // Панель, слайдеры и поле рендерятся этим компонентом, поэтому их safelist\n // обязан приехать вместе с ним: иначе у гранулярного импорта панель встанет\n // без стилей, а сборка останется зелёной.\n dependencies: ['GrPopover', 'GrSlider', 'GrInput'],\n safelist: grColorPickerSafelist,\n})\n"],"mappings":";;;;;;;AAQA,IAAa,yBAA4D;CACvE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,0BAA6D;CACxE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,uBAA0D;CACrE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,mBAAmB;;AAGhC,IAAa,uBAAuB;AACpC,IAAa,sBAAsB;AACnC,IAAa,sBAAsB;AAEnC,IAAa,oBAAoB;;;;;AAMjC,IAAa,eAAe;AAE5B,IAAa,kBAAkB;;AAG/B,IAAa,kBAAkB;AAE/B,IAAa,iBAAiB;AAE9B,IAAa,eAAe;AAE5B,IAAa,WAAW;AACxB,IAAa,gBAAgB;AAC7B,IAAa,gBAAgB;AAE7B,IAAa,mBAAmB;AAChC,IAAa,kBAAkB;AAC/B,IAAa,sBAAsB;AAEnC,SAAgB,0BAA0B,SAI/B;CACT,OAAO;EACL;EACA,uBAAuB,QAAQ;EAC/B,QAAQ,WAAW,uBAAuB;EAC1C,QAAQ,UAAU,sBAAsB;CAC1C,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;AAC5B;AAEA,SAAgB,wBAAwB,MAAiC;CACvE,OAAO,CAAC,gBAAgB,qBAAqB,KAAK,CAAC,CAAC,KAAK,GAAG;AAC9D;AAEA,SAAgB,yBAAyB,UAA2B;CAClE,OAAO,CAAC,iBAAiB,WAAW,sBAAsB,EAAE,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;AACxF;;;ACtDA,IAAa,wBAAwB,CAAC,mBAAG,IAAI,IAAI;CAC/C,GAAG,OAAO,OAAO,sBAAsB,CAAC,CAAC,QAAQ,gBAAgB;CACjE,GAAG,OAAO,OAAO,uBAAuB,CAAC,CAAC,QAAQ,gBAAgB;CAClE,GAAG,OAAO,OAAO,oBAAoB,CAAC,CAAC,QAAQ,gBAAgB;CAC/D,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,YAAY;CAChC,GAAG,iBAAiB,QAAQ;CAC5B,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,mBAAmB;AACzC,CAAC,CAAC;;;AC1CF,IAAa,sBAAsB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"config-DIDz_E5m.js","names":[],"sources":["../../src/components/GrColorPicker/grColorPickerStyles.ts","../../src/components/GrColorPicker/safelist.ts","../../src/components/GrColorPicker/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\nexport type GrColorPickerSize = GrComponentSize\n\n/**\n * Триггер повторяет геометрию поля ввода: пикер чаще всего стоит в форме рядом\n * с `GrInput`, и своя лестница высот выдала бы его из ряда.\n */\nexport const triggerSizeClassBySize: Record<GrColorPickerSize, string> = {\n xs: 'h-7 px-2 gap-1.5 text-[length:var(--gr-control-text-xs)] leading-[var(--gr-control-leading-xs)]',\n sm: 'h-8 px-2.5 gap-2 text-[length:var(--gr-control-text-sm)] leading-[var(--gr-control-leading-sm)]',\n md: 'h-10 px-3 gap-2 text-[length:var(--gr-control-text-md)] leading-[var(--gr-control-leading-md)]',\n lg: 'h-11 px-4 gap-2.5 text-[length:var(--gr-control-text-lg)] leading-[var(--gr-control-leading-lg)]',\n}\n\n/** Образец в триггере: квадрат со стороной чуть меньше высоты поля. */\nexport const triggerSwatchSizeBySize: Record<GrColorPickerSize, string> = {\n xs: 'h-3.5 w-3.5',\n sm: 'h-4 w-4',\n md: 'h-5 w-5',\n lg: 'h-6 w-6',\n}\n\nexport const panelSizeClassBySize: Record<GrColorPickerSize, string> = {\n xs: 'w-56 gap-2 text-[length:var(--gr-control-text-xs)] leading-[var(--gr-control-leading-xs)]',\n sm: 'w-60 gap-2.5 text-[length:var(--gr-control-text-sm)] leading-[var(--gr-control-leading-sm)]',\n md: 'w-64 gap-3 text-[length:var(--gr-control-text-md)] leading-[var(--gr-control-leading-md)]',\n lg: 'w-72 gap-3 text-[length:var(--gr-control-text-lg)] leading-[var(--gr-control-leading-lg)]',\n}\n\nexport const triggerBaseClass = 'inline-flex w-full min-w-0 items-center rounded-[var(--gr-radius-control)] border border-[var(--gr-brd)] bg-[var(--gr-bg)] text-[var(--gr-fg)] transition-colors duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\n\n/** Недоступное поле гасится токенами, а не `opacity`: прозрачность роняет контраст подписи. */\nexport const triggerDisabledClass = 'cursor-not-allowed border-[var(--gr-brd)] bg-[var(--gr-muted)] text-[var(--gr-disabled-fg)]'\nexport const triggerEnabledClass = 'cursor-pointer hover:border-[var(--gr-primary)]'\nexport const triggerInvalidClass = 'border-[var(--gr-invalid-brd)] focus-visible:ring-[var(--gr-invalid-ring)]'\n\nexport const triggerValueClass = 'min-w-0 flex-1 truncate text-left tabular-nums'\n\n/**\n * Шахматка под прозрачным цветом. Живёт классом-маркером, а сами клетки рисует\n * `<style>` компонента: два `conic-gradient` в утилите не выражаются.\n */\nexport const checkerClass = 'gr-color-picker-checker'\n\nexport const swatchBaseClass = 'relative shrink-0 overflow-hidden rounded-[var(--gr-radius-sm)] border border-[color-mix(in_srgb,var(--gr-fg)_18%,transparent)]'\n\n/** Заливка образца лежит поверх шахматки отдельным слоем. */\nexport const swatchFillClass = 'absolute inset-0'\n\nexport const panelBaseClass = 'grid'\n\nexport const previewClass = 'relative h-10 w-full overflow-hidden rounded-[var(--gr-radius-md)] border border-[color-mix(in_srgb,var(--gr-fg)_18%,transparent)]'\n\nexport const rowClass = 'grid grid-cols-[1.25rem_minmax(0,1fr)_2.75rem] items-center gap-2'\nexport const rowLabelClass = 'text-[var(--gr-muted-fg)]'\nexport const rowValueClass = 'text-right text-[var(--gr-muted-fg)] tabular-nums'\n\nexport const presetsGridClass = 'flex flex-wrap gap-1.5'\nexport const presetBaseClass = 'relative h-5 w-5 shrink-0 overflow-hidden rounded-[var(--gr-radius-sm)] border border-[color-mix(in_srgb,var(--gr-fg)_18%,transparent)] transition-shadow duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\nexport const presetSelectedClass = 'ring-2 ring-[var(--gr-primary)] ring-offset-1 ring-offset-[var(--gr-popover)]'\n\nexport function grColorPickerTriggerClass(options: {\n size: GrColorPickerSize\n disabled: boolean\n invalid: boolean\n}): string {\n return [\n triggerBaseClass,\n triggerSizeClassBySize[options.size],\n options.disabled ? triggerDisabledClass : triggerEnabledClass,\n options.invalid ? triggerInvalidClass : '',\n ].filter(Boolean).join(' ')\n}\n\nexport function grColorPickerPanelClass(size: GrColorPickerSize): string {\n return [panelBaseClass, panelSizeClassBySize[size]].join(' ')\n}\n\nexport function grColorPickerPresetClass(selected: boolean): string {\n return [presetBaseClass, selected ? presetSelectedClass : ''].filter(Boolean).join(' ')\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n panelBaseClass,\n panelSizeClassBySize,\n presetBaseClass,\n presetSelectedClass,\n presetsGridClass,\n previewClass,\n rowClass,\n rowLabelClass,\n rowValueClass,\n swatchBaseClass,\n swatchFillClass,\n triggerBaseClass,\n triggerDisabledClass,\n triggerEnabledClass,\n triggerInvalidClass,\n triggerSizeClassBySize,\n triggerSwatchSizeBySize,\n triggerValueClass,\n} from './grColorPickerStyles'\n\n// Классы из вычисляемых мап и литералов `.ts`-хелпера UnoCSS сканом не находит.\n//\n// `checkerClass` сюда не входит намеренно: это класс-маркер под собственный\n// `<style>` компонента, а не утилита — CSS из него не генерируется, и гейт\n// `documentedConfig` справедливо на такой записи падает.\nexport const grColorPickerSafelist = [...new Set([\n ...Object.values(triggerSizeClassBySize).flatMap(splitClassTokens),\n ...Object.values(triggerSwatchSizeBySize).flatMap(splitClassTokens),\n ...Object.values(panelSizeClassBySize).flatMap(splitClassTokens),\n ...splitClassTokens(triggerBaseClass),\n ...splitClassTokens(triggerDisabledClass),\n ...splitClassTokens(triggerEnabledClass),\n ...splitClassTokens(triggerInvalidClass),\n ...splitClassTokens(triggerValueClass),\n ...splitClassTokens(swatchBaseClass),\n ...splitClassTokens(swatchFillClass),\n ...splitClassTokens(panelBaseClass),\n ...splitClassTokens(previewClass),\n ...splitClassTokens(rowClass),\n ...splitClassTokens(rowLabelClass),\n ...splitClassTokens(rowValueClass),\n ...splitClassTokens(presetsGridClass),\n ...splitClassTokens(presetBaseClass),\n ...splitClassTokens(presetSelectedClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grColorPickerSafelist } from './safelist'\n\nexport const grColorPickerConfig = defineGranularComponent(import.meta.url, {\n name: 'GrColorPicker',\n // Панель, слайдеры и поле рендерятся этим компонентом, поэтому их safelist\n // обязан приехать вместе с ним: иначе у гранулярного импорта панель встанет\n // без стилей, а сборка останется зелёной.\n dependencies: ['GrPopover', 'GrSlider', 'GrInput'],\n safelist: grColorPickerSafelist,\n})\n"],"mappings":";;;;;;;AAQA,IAAa,yBAA4D;CACvE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,0BAA6D;CACxE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,uBAA0D;CACrE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,mBAAmB;;AAGhC,IAAa,uBAAuB;AACpC,IAAa,sBAAsB;AACnC,IAAa,sBAAsB;AAEnC,IAAa,oBAAoB;;;;;AAMjC,IAAa,eAAe;AAE5B,IAAa,kBAAkB;;AAG/B,IAAa,kBAAkB;AAE/B,IAAa,iBAAiB;AAE9B,IAAa,eAAe;AAE5B,IAAa,WAAW;AACxB,IAAa,gBAAgB;AAC7B,IAAa,gBAAgB;AAE7B,IAAa,mBAAmB;AAChC,IAAa,kBAAkB;AAC/B,IAAa,sBAAsB;AAEnC,SAAgB,0BAA0B,SAI/B;CACT,OAAO;EACL;EACA,uBAAuB,QAAQ;EAC/B,QAAQ,WAAW,uBAAuB;EAC1C,QAAQ,UAAU,sBAAsB;CAC1C,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;AAC5B;AAEA,SAAgB,wBAAwB,MAAiC;CACvE,OAAO,CAAC,gBAAgB,qBAAqB,KAAK,CAAC,CAAC,KAAK,GAAG;AAC9D;AAEA,SAAgB,yBAAyB,UAA2B;CAClE,OAAO,CAAC,iBAAiB,WAAW,sBAAsB,EAAE,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;AACxF;;;ACtDA,IAAa,wBAAwB,CAAC,mBAAG,IAAI,IAAI;CAC/C,GAAG,OAAO,OAAO,sBAAsB,CAAC,CAAC,QAAQ,gBAAgB;CACjE,GAAG,OAAO,OAAO,uBAAuB,CAAC,CAAC,QAAQ,gBAAgB;CAClE,GAAG,OAAO,OAAO,oBAAoB,CAAC,CAAC,QAAQ,gBAAgB;CAC/D,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,YAAY;CAChC,GAAG,iBAAiB,QAAQ;CAC5B,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,mBAAmB;AACzC,CAAC,CAAC;;;AC1CF,IAAa,sBAAsB,wBAAwB,YAAY,KAAK;CAC1E,MAAM;CAIN,cAAc;EAAC;EAAa;EAAY;CAAS;CACjD,UAAU;AACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-DM0lsduD.js","names":[],"sources":["../../src/components/GrBottomNav/grBottomNavStyles.ts","../../src/components/GrBottomNav/safelist.ts","../../src/components/GrBottomNav/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\n/**\n * Брейкпоинт, начиная с которого панель скрывается. `none` — видна всегда:\n * киоск и PWA нижнюю навигацию не прячут.\n */\nexport const GR_BOTTOM_NAV_HIDE_ABOVE = ['sm', 'md', 'lg', 'none'] as const\nexport type GrBottomNavHideAbove = typeof GR_BOTTOM_NAV_HIDE_ABOVE[number]\n\n/** Прижата к нижней кромке экрана или лежит обычным блоком в потоке. */\nexport const GR_BOTTOM_NAV_POSITIONS = ['fixed', 'static'] as const\nexport type GrBottomNavPosition = typeof GR_BOTTOM_NAV_POSITIONS[number]\n\nexport const rootBase = 'border-t border-[var(--gr-brd)] bg-[var(--gr-bg)] px-2 pb-[env(safe-area-inset-bottom)]'\n\nexport const rootPositionClass: Record<GrBottomNavPosition, string> = {\n fixed: 'fixed bottom-0 left-0 right-0 z-[var(--gr-z-bottom-nav)]',\n static: 'relative w-full',\n}\n\nexport const rootHideAboveClass: Record<GrBottomNavHideAbove, string> = {\n sm: 'sm:hidden',\n md: 'md:hidden',\n lg: 'lg:hidden',\n none: '',\n}\n\nexport const listClass = 'flex items-center justify-around'\n\n/**\n * Размерная шкала панели: высота полосы, глиф и кегль подписи.\n *\n * Что тянуть у панели фиксированной высоты — вопрос неочевидный, и ответ здесь\n * ограничен снизу доступностью: **тач-таргет пункта не может стать меньше\n * 44×44** (WCAG 2.5.5). Поэтому ступень ужимает полосу и содержимое, а сам\n * пункт остаётся тем же прямоугольником под палец — `min-w-[44px]\n * min-h-[44px]` в `itemBase` вне шкалы намеренно.\n *\n * `md` совпадает с историческим видом панели: без пропа не меняется ничего.\n */\nexport const listSizes: Record<GrComponentSize, string> = {\n xs: 'h-12',\n sm: 'h-14',\n md: 'h-14',\n lg: 'h-16',\n}\n\nexport const itemTextSizes: Record<GrComponentSize, string> = {\n xs: 'text-[length:var(--gr-text-2xs)] leading-[var(--gr-leading-2xs)]',\n sm: 'text-[length:var(--gr-text-2xs)] leading-[var(--gr-leading-2xs)]',\n md: 'text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]',\n lg: 'text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]',\n}\n\nexport const itemIconSizes: Record<GrComponentSize, string> = {\n xs: 'h-4 w-4',\n sm: 'h-5 w-5',\n md: 'h-5 w-5',\n lg: 'h-6 w-6',\n}\n\nexport const itemBase = 'relative min-w-[44px] min-h-[44px] px-3 py-1 rounded-[var(--gr-radius-md)] flex flex-col items-center justify-center gap-0.5 transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\n\n/**\n * Активный пункт несёт три отличия сразу — подложку, вес и цвет. Одного цвета\n * мало: он не виден при монохромном зрении и не существует для диктора\n * (`aria-current` закрывает вторую половину задачи).\n */\nexport const itemActiveClass = 'bg-[var(--gr-muted)] font-600 text-[var(--gr-primary-text)]'\nexport const itemIdleClass = 'font-500 text-[var(--gr-muted-fg)] hover:text-[var(--gr-fg)]'\n\n/** Недоступный пункт гасится токеном: `opacity` разбавляет выверенные на AA цвета. */\nexport const itemDisabledClass = 'cursor-not-allowed font-500 text-[var(--gr-disabled-fg)]'\n\nexport const itemIconClass = 'block shrink-0'\nexport const itemLabelClass = 'max-w-full truncate leading-none'\n\n/**\n * Бейдж висит поверх правого верхнего угла пункта. Своя разметка, а не\n * `GrBadgeWrap`: зависимость притащила бы потребителю чужой CSS ради кружка.\n */\nexport const itemBadgeClass = 'absolute top-0.5 right-1 min-w-4 h-4 px-1 rounded-[var(--gr-radius-full)] bg-[var(--gr-danger)] text-[var(--gr-danger-fg)] text-[length:var(--gr-text-2xs)] leading-[var(--gr-leading-2xs)] font-700 inline-flex items-center justify-center'\n\nexport function grBottomNavRootClass(options: {\n position: GrBottomNavPosition\n hideAbove: GrBottomNavHideAbove\n}): string {\n return [rootBase, rootPositionClass[options.position], rootHideAboveClass[options.hideAbove]]\n .filter(Boolean)\n .join(' ')\n}\n\nexport function grBottomNavListClass(size: GrComponentSize): string {\n return [listClass, listSizes[size]].join(' ')\n}\n\nexport function grBottomNavIconClass(size: GrComponentSize): string {\n return [itemIconClass, itemIconSizes[size]].join(' ')\n}\n\nexport function grBottomNavItemClass(options: {\n active: boolean\n disabled: boolean\n size: GrComponentSize\n}): string {\n const state = options.disabled\n ? itemDisabledClass\n : options.active ? itemActiveClass : itemIdleClass\n\n return [itemBase, itemTextSizes[options.size], state].join(' ')\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n itemActiveClass,\n itemBadgeClass,\n itemBase,\n itemDisabledClass,\n itemIconClass,\n itemIconSizes,\n itemIdleClass,\n itemLabelClass,\n itemTextSizes,\n listClass,\n listSizes,\n rootBase,\n rootHideAboveClass,\n rootPositionClass,\n} from './grBottomNavStyles'\n\nexport const grBottomNavSafelist = [...new Set([\n ...splitClassTokens(rootBase),\n ...splitClassTokens(listClass),\n ...splitClassTokens(itemBase),\n ...splitClassTokens(itemActiveClass),\n ...splitClassTokens(itemIdleClass),\n ...splitClassTokens(itemDisabledClass),\n ...splitClassTokens(itemIconClass),\n ...splitClassTokens(itemLabelClass),\n ...splitClassTokens(itemBadgeClass),\n ...Object.values(listSizes).flatMap(splitClassTokens),\n ...Object.values(itemTextSizes).flatMap(splitClassTokens),\n ...Object.values(itemIconSizes).flatMap(splitClassTokens),\n ...Object.values(rootPositionClass).flatMap(splitClassTokens),\n ...Object.values(rootHideAboveClass).flatMap(splitClassTokens),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grBottomNavSafelist } from './safelist'\n\nexport const grBottomNavConfig = defineGranularComponent(import.meta.url, {\n name: 'GrBottomNav',\n safelist: grBottomNavSafelist,\n})\n"],"mappings":";;;AAaA,IAAa,WAAW;AAExB,IAAa,oBAAyD;CACpE,OAAO;CACP,QAAQ;AACV;AAEA,IAAa,qBAA2D;CACtE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,MAAM;AACR;AAEA,IAAa,YAAY;;;;;;;;;;;;AAazB,IAAa,YAA6C;CACxD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,gBAAiD;CAC5D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,gBAAiD;CAC5D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,WAAW;;;;;;AAOxB,IAAa,kBAAkB;AAC/B,IAAa,gBAAgB;;AAG7B,IAAa,oBAAoB;AAEjC,IAAa,gBAAgB;AAC7B,IAAa,iBAAiB;;;;;AAM9B,IAAa,iBAAiB;AAE9B,SAAgB,qBAAqB,SAG1B;CACT,OAAO;EAAC;EAAU,kBAAkB,QAAQ;EAAW,mBAAmB,QAAQ;CAAU,CAAC,CAC1F,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;AACb;AAEA,SAAgB,qBAAqB,MAA+B;CAClE,OAAO,CAAC,WAAW,UAAU,KAAK,CAAC,CAAC,KAAK,GAAG;AAC9C;AAEA,SAAgB,qBAAqB,MAA+B;CAClE,OAAO,CAAC,eAAe,cAAc,KAAK,CAAC,CAAC,KAAK,GAAG;AACtD;AAEA,SAAgB,qBAAqB,SAI1B;CACT,MAAM,QAAQ,QAAQ,WAClB,oBACA,QAAQ,SAAS,kBAAkB;CAEvC,OAAO;EAAC;EAAU,cAAc,QAAQ;EAAO;CAAK,CAAC,CAAC,KAAK,GAAG;AAChE;;;AC5FA,IAAa,sBAAsB,CAAC,mBAAG,IAAI,IAAI;CAC7C,GAAG,iBAAiB,QAAQ;CAC5B,GAAG,iBAAiB,SAAS;CAC7B,GAAG,iBAAiB,QAAQ;CAC5B,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,cAAc;CAClC,GAAG,OAAO,OAAO,SAAS,CAAC,CAAC,QAAQ,gBAAgB;CACpD,GAAG,OAAO,OAAO,aAAa,CAAC,CAAC,QAAQ,gBAAgB;CACxD,GAAG,OAAO,OAAO,aAAa,CAAC,CAAC,QAAQ,gBAAgB;CACxD,GAAG,OAAO,OAAO,iBAAiB,CAAC,CAAC,QAAQ,gBAAgB;CAC5D,GAAG,OAAO,OAAO,kBAAkB,CAAC,CAAC,QAAQ,gBAAgB;AAC/D,CAAC,CAAC;;;AC7BF,IAAa,oBAAoB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"config-DM0lsduD.js","names":[],"sources":["../../src/components/GrBottomNav/grBottomNavStyles.ts","../../src/components/GrBottomNav/safelist.ts","../../src/components/GrBottomNav/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\n/**\n * Брейкпоинт, начиная с которого панель скрывается. `none` — видна всегда:\n * киоск и PWA нижнюю навигацию не прячут.\n */\nexport const GR_BOTTOM_NAV_HIDE_ABOVE = ['sm', 'md', 'lg', 'none'] as const\nexport type GrBottomNavHideAbove = typeof GR_BOTTOM_NAV_HIDE_ABOVE[number]\n\n/** Прижата к нижней кромке экрана или лежит обычным блоком в потоке. */\nexport const GR_BOTTOM_NAV_POSITIONS = ['fixed', 'static'] as const\nexport type GrBottomNavPosition = typeof GR_BOTTOM_NAV_POSITIONS[number]\n\nexport const rootBase = 'border-t border-[var(--gr-brd)] bg-[var(--gr-bg)] px-2 pb-[env(safe-area-inset-bottom)]'\n\nexport const rootPositionClass: Record<GrBottomNavPosition, string> = {\n fixed: 'fixed bottom-0 left-0 right-0 z-[var(--gr-z-bottom-nav)]',\n static: 'relative w-full',\n}\n\nexport const rootHideAboveClass: Record<GrBottomNavHideAbove, string> = {\n sm: 'sm:hidden',\n md: 'md:hidden',\n lg: 'lg:hidden',\n none: '',\n}\n\nexport const listClass = 'flex items-center justify-around'\n\n/**\n * Размерная шкала панели: высота полосы, глиф и кегль подписи.\n *\n * Что тянуть у панели фиксированной высоты — вопрос неочевидный, и ответ здесь\n * ограничен снизу доступностью: **тач-таргет пункта не может стать меньше\n * 44×44** (WCAG 2.5.5). Поэтому ступень ужимает полосу и содержимое, а сам\n * пункт остаётся тем же прямоугольником под палец — `min-w-[44px]\n * min-h-[44px]` в `itemBase` вне шкалы намеренно.\n *\n * `md` совпадает с историческим видом панели: без пропа не меняется ничего.\n */\nexport const listSizes: Record<GrComponentSize, string> = {\n xs: 'h-12',\n sm: 'h-14',\n md: 'h-14',\n lg: 'h-16',\n}\n\nexport const itemTextSizes: Record<GrComponentSize, string> = {\n xs: 'text-[length:var(--gr-text-2xs)] leading-[var(--gr-leading-2xs)]',\n sm: 'text-[length:var(--gr-text-2xs)] leading-[var(--gr-leading-2xs)]',\n md: 'text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]',\n lg: 'text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]',\n}\n\nexport const itemIconSizes: Record<GrComponentSize, string> = {\n xs: 'h-4 w-4',\n sm: 'h-5 w-5',\n md: 'h-5 w-5',\n lg: 'h-6 w-6',\n}\n\nexport const itemBase = 'relative min-w-[44px] min-h-[44px] px-3 py-1 rounded-[var(--gr-radius-md)] flex flex-col items-center justify-center gap-0.5 transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\n\n/**\n * Активный пункт несёт три отличия сразу — подложку, вес и цвет. Одного цвета\n * мало: он не виден при монохромном зрении и не существует для диктора\n * (`aria-current` закрывает вторую половину задачи).\n */\nexport const itemActiveClass = 'bg-[var(--gr-muted)] font-600 text-[var(--gr-primary-text)]'\nexport const itemIdleClass = 'font-500 text-[var(--gr-muted-fg)] hover:text-[var(--gr-fg)]'\n\n/** Недоступный пункт гасится токеном: `opacity` разбавляет выверенные на AA цвета. */\nexport const itemDisabledClass = 'cursor-not-allowed font-500 text-[var(--gr-disabled-fg)]'\n\nexport const itemIconClass = 'block shrink-0'\nexport const itemLabelClass = 'max-w-full truncate leading-none'\n\n/**\n * Бейдж висит поверх правого верхнего угла пункта. Своя разметка, а не\n * `GrBadgeWrap`: зависимость притащила бы потребителю чужой CSS ради кружка.\n */\nexport const itemBadgeClass = 'absolute top-0.5 right-1 min-w-4 h-4 px-1 rounded-[var(--gr-radius-full)] bg-[var(--gr-danger)] text-[var(--gr-danger-fg)] text-[length:var(--gr-text-2xs)] leading-[var(--gr-leading-2xs)] font-700 inline-flex items-center justify-center'\n\nexport function grBottomNavRootClass(options: {\n position: GrBottomNavPosition\n hideAbove: GrBottomNavHideAbove\n}): string {\n return [rootBase, rootPositionClass[options.position], rootHideAboveClass[options.hideAbove]]\n .filter(Boolean)\n .join(' ')\n}\n\nexport function grBottomNavListClass(size: GrComponentSize): string {\n return [listClass, listSizes[size]].join(' ')\n}\n\nexport function grBottomNavIconClass(size: GrComponentSize): string {\n return [itemIconClass, itemIconSizes[size]].join(' ')\n}\n\nexport function grBottomNavItemClass(options: {\n active: boolean\n disabled: boolean\n size: GrComponentSize\n}): string {\n const state = options.disabled\n ? itemDisabledClass\n : options.active ? itemActiveClass : itemIdleClass\n\n return [itemBase, itemTextSizes[options.size], state].join(' ')\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n itemActiveClass,\n itemBadgeClass,\n itemBase,\n itemDisabledClass,\n itemIconClass,\n itemIconSizes,\n itemIdleClass,\n itemLabelClass,\n itemTextSizes,\n listClass,\n listSizes,\n rootBase,\n rootHideAboveClass,\n rootPositionClass,\n} from './grBottomNavStyles'\n\nexport const grBottomNavSafelist = [...new Set([\n ...splitClassTokens(rootBase),\n ...splitClassTokens(listClass),\n ...splitClassTokens(itemBase),\n ...splitClassTokens(itemActiveClass),\n ...splitClassTokens(itemIdleClass),\n ...splitClassTokens(itemDisabledClass),\n ...splitClassTokens(itemIconClass),\n ...splitClassTokens(itemLabelClass),\n ...splitClassTokens(itemBadgeClass),\n ...Object.values(listSizes).flatMap(splitClassTokens),\n ...Object.values(itemTextSizes).flatMap(splitClassTokens),\n ...Object.values(itemIconSizes).flatMap(splitClassTokens),\n ...Object.values(rootPositionClass).flatMap(splitClassTokens),\n ...Object.values(rootHideAboveClass).flatMap(splitClassTokens),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grBottomNavSafelist } from './safelist'\n\nexport const grBottomNavConfig = defineGranularComponent(import.meta.url, {\n name: 'GrBottomNav',\n safelist: grBottomNavSafelist,\n})\n"],"mappings":";;;AAaA,IAAa,WAAW;AAExB,IAAa,oBAAyD;CACpE,OAAO;CACP,QAAQ;AACV;AAEA,IAAa,qBAA2D;CACtE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,MAAM;AACR;AAEA,IAAa,YAAY;;;;;;;;;;;;AAazB,IAAa,YAA6C;CACxD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,gBAAiD;CAC5D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,gBAAiD;CAC5D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,WAAW;;;;;;AAOxB,IAAa,kBAAkB;AAC/B,IAAa,gBAAgB;;AAG7B,IAAa,oBAAoB;AAEjC,IAAa,gBAAgB;AAC7B,IAAa,iBAAiB;;;;;AAM9B,IAAa,iBAAiB;AAE9B,SAAgB,qBAAqB,SAG1B;CACT,OAAO;EAAC;EAAU,kBAAkB,QAAQ;EAAW,mBAAmB,QAAQ;CAAU,CAAC,CAC1F,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;AACb;AAEA,SAAgB,qBAAqB,MAA+B;CAClE,OAAO,CAAC,WAAW,UAAU,KAAK,CAAC,CAAC,KAAK,GAAG;AAC9C;AAEA,SAAgB,qBAAqB,MAA+B;CAClE,OAAO,CAAC,eAAe,cAAc,KAAK,CAAC,CAAC,KAAK,GAAG;AACtD;AAEA,SAAgB,qBAAqB,SAI1B;CACT,MAAM,QAAQ,QAAQ,WAClB,oBACA,QAAQ,SAAS,kBAAkB;CAEvC,OAAO;EAAC;EAAU,cAAc,QAAQ;EAAO;CAAK,CAAC,CAAC,KAAK,GAAG;AAChE;;;AC5FA,IAAa,sBAAsB,CAAC,mBAAG,IAAI,IAAI;CAC7C,GAAG,iBAAiB,QAAQ;CAC5B,GAAG,iBAAiB,SAAS;CAC7B,GAAG,iBAAiB,QAAQ;CAC5B,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,cAAc;CAClC,GAAG,OAAO,OAAO,SAAS,CAAC,CAAC,QAAQ,gBAAgB;CACpD,GAAG,OAAO,OAAO,aAAa,CAAC,CAAC,QAAQ,gBAAgB;CACxD,GAAG,OAAO,OAAO,aAAa,CAAC,CAAC,QAAQ,gBAAgB;CACxD,GAAG,OAAO,OAAO,iBAAiB,CAAC,CAAC,QAAQ,gBAAgB;CAC5D,GAAG,OAAO,OAAO,kBAAkB,CAAC,CAAC,QAAQ,gBAAgB;AAC/D,CAAC,CAAC;;;AC7BF,IAAa,oBAAoB,wBAAwB,YAAY,KAAK;CACxE,MAAM;CACN,UAAU;AACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-DNDgp9bB.js","names":[],"sources":["../../src/components/GrSidebar/grSidebarStyles.ts","../../src/components/GrSidebar/safelist.ts","../../src/components/GrSidebar/config.ts"],"sourcesContent":["/** Сторона экрана, к которой прижата панель. */\nexport const GR_SIDEBAR_POSITIONS = ['left', 'right'] as const\nexport type GrSidebarPosition = typeof GR_SIDEBAR_POSITIONS[number]\n\n/** Лендмарк корня: навигация или дополняющий блок (фильтры, справка). */\nexport const GR_SIDEBAR_LANDMARKS = ['complementary', 'navigation'] as const\nexport type GrSidebarLandmark = typeof GR_SIDEBAR_LANDMARKS[number]\n\nexport const rootBase = 'flex flex-col bg-[var(--gr-sidebar)] text-[var(--gr-sidebar-fg)] transition-[width] duration-[var(--gr-duration-base)] ease-[var(--gr-ease-out)]'\n\n/** Граница отделяет панель от контента, поэтому уезжает на внутреннюю сторону. */\nexport const rootPositions: Record<GrSidebarPosition, string> = {\n left: 'border-r border-[var(--gr-sidebar-brd)]',\n right: 'border-l border-[var(--gr-sidebar-brd)]',\n}\n\nexport const headerBase = 'flex items-center gap-2 border-b border-[var(--gr-sidebar-brd)] px-3 py-4'\n\nexport const titleClass = 'truncate text-[length:var(--gr-text-lg)] leading-[var(--gr-leading-lg)] font-700'\nexport const subtitleClass = 'truncate text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)] text-[var(--gr-muted-fg)]'\n\n/**\n * Скроллящийся блок обязан быть достижим с клавиатуры, поэтому он остановка\n * `Tab` с видимым кольцом: без него панель с текстовым содержимым не\n * проскроллить вовсе.\n */\nexport const contentBase = 'flex-1 overflow-y-auto focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-[var(--gr-ring)]'\n\nexport const itemBase = 'relative flex w-full items-center rounded-[var(--gr-radius-md)] text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)] transition-colors duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\n\nexport const itemCollapsedClass = 'justify-center px-0 py-2'\nexport const itemExpandedClass = 'gap-3 px-3 py-2'\n\n/**\n * Недоступный пункт гасится токеном, а не `opacity`: прозрачность разбавляет\n * выверенные на AA токены текста.\n */\nexport const itemDisabledClass = 'cursor-not-allowed text-[var(--gr-disabled-fg)]'\nexport const itemActiveClass = 'bg-[var(--gr-muted)] font-600 text-[var(--gr-fg)]'\nexport const itemIdleClass = 'text-[var(--gr-sidebar-fg)] hover:bg-[color-mix(in_srgb,var(--gr-sidebar-fg)_8%,transparent)]'\n\nexport const itemLetterClass = 'text-[length:var(--gr-text-xs)] font-700 leading-none'\nexport const itemBadgeClass = 'shrink-0 rounded-[var(--gr-radius-full)] bg-[color-mix(in_srgb,var(--gr-sidebar-fg)_12%,transparent)] px-1.5 py-0.5 text-[length:var(--gr-text-2xs)] leading-[var(--gr-leading-2xs)] font-600'\n\nexport const groupLabelClass = 'px-3 pb-1 pt-3 text-[length:var(--gr-text-2xs)] leading-[var(--gr-leading-2xs)] font-700 [text-transform:uppercase] tracking-wide text-[var(--gr-muted-fg)]'\n\n/**\n * В свёрнутой панели заголовка секции нет — иначе он не помещается. Границы\n * между группами берёт на себя линия: без неё иконки соседних секций сливаются\n * в один столбец.\n */\nexport const groupCollapsedClass = 'mt-2 border-t border-[var(--gr-sidebar-brd)] pt-2'\n\nexport function grSidebarRootClass(position: GrSidebarPosition): string {\n return [rootBase, rootPositions[position]].join(' ')\n}\n\n/**\n * Куда указывает шеврон кнопки тогла: всегда в ту сторону, куда уедет панель.\n * У правой панели «свернуть» — это стрелка вправо.\n */\nexport function grSidebarCollapseDirection(\n position: GrSidebarPosition,\n collapsed: boolean,\n): GrSidebarPosition {\n const toRight = (position === 'right') !== collapsed\n return toRight ? 'right' : 'left'\n}\n\nexport function grSidebarItemClass(options: {\n collapsed: boolean\n disabled: boolean\n active: boolean\n}): string {\n return [\n itemBase,\n options.collapsed ? itemCollapsedClass : itemExpandedClass,\n options.disabled ? itemDisabledClass : options.active ? itemActiveClass : itemIdleClass,\n ].join(' ')\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n contentBase,\n groupCollapsedClass,\n groupLabelClass,\n headerBase,\n itemActiveClass,\n itemBadgeClass,\n itemBase,\n itemCollapsedClass,\n itemDisabledClass,\n itemExpandedClass,\n itemIdleClass,\n itemLetterClass,\n rootBase,\n rootPositions,\n subtitleClass,\n titleClass,\n} from './grSidebarStyles'\n\nexport const grSidebarSafelist = [...new Set([\n ...splitClassTokens(rootBase),\n ...Object.values(rootPositions).flatMap(splitClassTokens),\n ...splitClassTokens(headerBase),\n ...splitClassTokens(titleClass),\n ...splitClassTokens(subtitleClass),\n ...splitClassTokens(contentBase),\n ...splitClassTokens(itemBase),\n ...splitClassTokens(itemCollapsedClass),\n ...splitClassTokens(itemExpandedClass),\n ...splitClassTokens(itemDisabledClass),\n ...splitClassTokens(itemActiveClass),\n ...splitClassTokens(itemIdleClass),\n ...splitClassTokens(itemLetterClass),\n ...splitClassTokens(itemBadgeClass),\n ...splitClassTokens(groupLabelClass),\n ...splitClassTokens(groupCollapsedClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grSidebarSafelist } from './safelist'\n\nexport const grSidebarConfig = defineGranularComponent(import.meta.url, {\n name: 'GrSidebar',\n dependencies: ['GrButton', 'GrIcon'],\n safelist: grSidebarSafelist,\n})\n"],"mappings":";;;AAQA,IAAa,WAAW;;AAGxB,IAAa,gBAAmD;CAC9D,MAAM;CACN,OAAO;AACT;AAEA,IAAa,aAAa;AAE1B,IAAa,aAAa;AAC1B,IAAa,gBAAgB;;;;;;AAO7B,IAAa,cAAc;AAE3B,IAAa,WAAW;AAExB,IAAa,qBAAqB;AAClC,IAAa,oBAAoB;;;;;AAMjC,IAAa,oBAAoB;AACjC,IAAa,kBAAkB;AAC/B,IAAa,gBAAgB;AAE7B,IAAa,kBAAkB;AAC/B,IAAa,iBAAiB;AAE9B,IAAa,kBAAkB;;;;;;AAO/B,IAAa,sBAAsB;AAEnC,SAAgB,mBAAmB,UAAqC;CACtE,OAAO,CAAC,UAAU,cAAc,SAAS,CAAC,CAAC,KAAK,GAAG;AACrD;;;;;AAMA,SAAgB,2BACd,UACA,WACmB;CAEnB,OADiB,aAAa,YAAa,YAC1B,UAAU;AAC7B;AAEA,SAAgB,mBAAmB,SAIxB;CACT,OAAO;EACL;EACA,QAAQ,YAAY,qBAAqB;EACzC,QAAQ,WAAW,oBAAoB,QAAQ,SAAS,kBAAkB;CAC5E,CAAC,CAAC,KAAK,GAAG;AACZ;;;AC3DA,IAAa,oBAAoB,CAAC,mBAAG,IAAI,IAAI;CAC3C,GAAG,iBAAiB,QAAQ;CAC5B,GAAG,OAAO,OAAO,aAAa,CAAC,CAAC,QAAQ,gBAAgB;CACxD,GAAG,iBAAiB,UAAU;CAC9B,GAAG,iBAAiB,UAAU;CAC9B,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,WAAW;CAC/B,GAAG,iBAAiB,QAAQ;CAC5B,GAAG,iBAAiB,kBAAkB;CACtC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,mBAAmB;AACzC,CAAC,CAAC;;;ACjCF,IAAa,kBAAkB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"config-DNDgp9bB.js","names":[],"sources":["../../src/components/GrSidebar/grSidebarStyles.ts","../../src/components/GrSidebar/safelist.ts","../../src/components/GrSidebar/config.ts"],"sourcesContent":["/** Сторона экрана, к которой прижата панель. */\nexport const GR_SIDEBAR_POSITIONS = ['left', 'right'] as const\nexport type GrSidebarPosition = typeof GR_SIDEBAR_POSITIONS[number]\n\n/** Лендмарк корня: навигация или дополняющий блок (фильтры, справка). */\nexport const GR_SIDEBAR_LANDMARKS = ['complementary', 'navigation'] as const\nexport type GrSidebarLandmark = typeof GR_SIDEBAR_LANDMARKS[number]\n\nexport const rootBase = 'flex flex-col bg-[var(--gr-sidebar)] text-[var(--gr-sidebar-fg)] transition-[width] duration-[var(--gr-duration-base)] ease-[var(--gr-ease-out)]'\n\n/** Граница отделяет панель от контента, поэтому уезжает на внутреннюю сторону. */\nexport const rootPositions: Record<GrSidebarPosition, string> = {\n left: 'border-r border-[var(--gr-sidebar-brd)]',\n right: 'border-l border-[var(--gr-sidebar-brd)]',\n}\n\nexport const headerBase = 'flex items-center gap-2 border-b border-[var(--gr-sidebar-brd)] px-3 py-4'\n\nexport const titleClass = 'truncate text-[length:var(--gr-text-lg)] leading-[var(--gr-leading-lg)] font-700'\nexport const subtitleClass = 'truncate text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)] text-[var(--gr-muted-fg)]'\n\n/**\n * Скроллящийся блок обязан быть достижим с клавиатуры, поэтому он остановка\n * `Tab` с видимым кольцом: без него панель с текстовым содержимым не\n * проскроллить вовсе.\n */\nexport const contentBase = 'flex-1 overflow-y-auto focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-[var(--gr-ring)]'\n\nexport const itemBase = 'relative flex w-full items-center rounded-[var(--gr-radius-md)] text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)] transition-colors duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\n\nexport const itemCollapsedClass = 'justify-center px-0 py-2'\nexport const itemExpandedClass = 'gap-3 px-3 py-2'\n\n/**\n * Недоступный пункт гасится токеном, а не `opacity`: прозрачность разбавляет\n * выверенные на AA токены текста.\n */\nexport const itemDisabledClass = 'cursor-not-allowed text-[var(--gr-disabled-fg)]'\nexport const itemActiveClass = 'bg-[var(--gr-muted)] font-600 text-[var(--gr-fg)]'\nexport const itemIdleClass = 'text-[var(--gr-sidebar-fg)] hover:bg-[color-mix(in_srgb,var(--gr-sidebar-fg)_8%,transparent)]'\n\nexport const itemLetterClass = 'text-[length:var(--gr-text-xs)] font-700 leading-none'\nexport const itemBadgeClass = 'shrink-0 rounded-[var(--gr-radius-full)] bg-[color-mix(in_srgb,var(--gr-sidebar-fg)_12%,transparent)] px-1.5 py-0.5 text-[length:var(--gr-text-2xs)] leading-[var(--gr-leading-2xs)] font-600'\n\nexport const groupLabelClass = 'px-3 pb-1 pt-3 text-[length:var(--gr-text-2xs)] leading-[var(--gr-leading-2xs)] font-700 [text-transform:uppercase] tracking-wide text-[var(--gr-muted-fg)]'\n\n/**\n * В свёрнутой панели заголовка секции нет — иначе он не помещается. Границы\n * между группами берёт на себя линия: без неё иконки соседних секций сливаются\n * в один столбец.\n */\nexport const groupCollapsedClass = 'mt-2 border-t border-[var(--gr-sidebar-brd)] pt-2'\n\nexport function grSidebarRootClass(position: GrSidebarPosition): string {\n return [rootBase, rootPositions[position]].join(' ')\n}\n\n/**\n * Куда указывает шеврон кнопки тогла: всегда в ту сторону, куда уедет панель.\n * У правой панели «свернуть» — это стрелка вправо.\n */\nexport function grSidebarCollapseDirection(\n position: GrSidebarPosition,\n collapsed: boolean,\n): GrSidebarPosition {\n const toRight = (position === 'right') !== collapsed\n return toRight ? 'right' : 'left'\n}\n\nexport function grSidebarItemClass(options: {\n collapsed: boolean\n disabled: boolean\n active: boolean\n}): string {\n return [\n itemBase,\n options.collapsed ? itemCollapsedClass : itemExpandedClass,\n options.disabled ? itemDisabledClass : options.active ? itemActiveClass : itemIdleClass,\n ].join(' ')\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n contentBase,\n groupCollapsedClass,\n groupLabelClass,\n headerBase,\n itemActiveClass,\n itemBadgeClass,\n itemBase,\n itemCollapsedClass,\n itemDisabledClass,\n itemExpandedClass,\n itemIdleClass,\n itemLetterClass,\n rootBase,\n rootPositions,\n subtitleClass,\n titleClass,\n} from './grSidebarStyles'\n\nexport const grSidebarSafelist = [...new Set([\n ...splitClassTokens(rootBase),\n ...Object.values(rootPositions).flatMap(splitClassTokens),\n ...splitClassTokens(headerBase),\n ...splitClassTokens(titleClass),\n ...splitClassTokens(subtitleClass),\n ...splitClassTokens(contentBase),\n ...splitClassTokens(itemBase),\n ...splitClassTokens(itemCollapsedClass),\n ...splitClassTokens(itemExpandedClass),\n ...splitClassTokens(itemDisabledClass),\n ...splitClassTokens(itemActiveClass),\n ...splitClassTokens(itemIdleClass),\n ...splitClassTokens(itemLetterClass),\n ...splitClassTokens(itemBadgeClass),\n ...splitClassTokens(groupLabelClass),\n ...splitClassTokens(groupCollapsedClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grSidebarSafelist } from './safelist'\n\nexport const grSidebarConfig = defineGranularComponent(import.meta.url, {\n name: 'GrSidebar',\n dependencies: ['GrButton', 'GrIcon'],\n safelist: grSidebarSafelist,\n})\n"],"mappings":";;;AAQA,IAAa,WAAW;;AAGxB,IAAa,gBAAmD;CAC9D,MAAM;CACN,OAAO;AACT;AAEA,IAAa,aAAa;AAE1B,IAAa,aAAa;AAC1B,IAAa,gBAAgB;;;;;;AAO7B,IAAa,cAAc;AAE3B,IAAa,WAAW;AAExB,IAAa,qBAAqB;AAClC,IAAa,oBAAoB;;;;;AAMjC,IAAa,oBAAoB;AACjC,IAAa,kBAAkB;AAC/B,IAAa,gBAAgB;AAE7B,IAAa,kBAAkB;AAC/B,IAAa,iBAAiB;AAE9B,IAAa,kBAAkB;;;;;;AAO/B,IAAa,sBAAsB;AAEnC,SAAgB,mBAAmB,UAAqC;CACtE,OAAO,CAAC,UAAU,cAAc,SAAS,CAAC,CAAC,KAAK,GAAG;AACrD;;;;;AAMA,SAAgB,2BACd,UACA,WACmB;CAEnB,OADiB,aAAa,YAAa,YAC1B,UAAU;AAC7B;AAEA,SAAgB,mBAAmB,SAIxB;CACT,OAAO;EACL;EACA,QAAQ,YAAY,qBAAqB;EACzC,QAAQ,WAAW,oBAAoB,QAAQ,SAAS,kBAAkB;CAC5E,CAAC,CAAC,KAAK,GAAG;AACZ;;;AC3DA,IAAa,oBAAoB,CAAC,mBAAG,IAAI,IAAI;CAC3C,GAAG,iBAAiB,QAAQ;CAC5B,GAAG,OAAO,OAAO,aAAa,CAAC,CAAC,QAAQ,gBAAgB;CACxD,GAAG,iBAAiB,UAAU;CAC9B,GAAG,iBAAiB,UAAU;CAC9B,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,WAAW;CAC/B,GAAG,iBAAiB,QAAQ;CAC5B,GAAG,iBAAiB,kBAAkB;CACtC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,mBAAmB;AACzC,CAAC,CAAC;;;ACjCF,IAAa,kBAAkB,wBAAwB,YAAY,KAAK;CACtE,MAAM;CACN,cAAc,CAAC,YAAY,QAAQ;CACnC,UAAU;AACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-DOYz_SVK.js","names":[],"sources":["../../src/components/GrSelect/safelist.ts","../../src/components/GrSelect/config.ts"],"sourcesContent":["import { flattenTransitionTokens, splitClassTokens } from '../shared/classTokens'\nimport { panelPopTransition } from '../shared/overlayTransition'\nimport {\n borderClassByState,\n defaultBaseClass,\n grSelectLinkNativeLabelBaseClass,\n grSelectLinkNativeLabelDisabledClass,\n grSelectLinkNativeLabelFocusClass,\n grSelectLinkNativeOverlayClass,\n grSelectPanelClasses,\n invalidBorderClass,\n linkBaseClass,\n selectOptionActiveClass,\n selectOptionBaseClass,\n selectOptionDisabledClass,\n selectOptionEnabledClass,\n selectOptionLinkWidthClass,\n selectOptionWidthClass,\n selectLinkNativeLabelVariantClassByVariant,\n selectLinkSizeClassBySize,\n selectLinkVariantClassByVariant,\n selectSizeClassBySize,\n} from './grSelectStyles'\n\n// Всё, что живёт в `grSelectStyles.ts`: и вычисляемые мапы, и строковые литералы\n// оболочки, link-режима, native-overlay и панели. Хелпер уезжает в общий\n// `dist/chunks/`, вне области скана компонента — гейт `src/__tests__/safelist.test.ts`.\nexport const grSelectSafelist = [...new Set([\n ...Object.values(borderClassByState).flatMap(splitClassTokens),\n ...splitClassTokens(invalidBorderClass),\n ...Object.values(selectSizeClassBySize).flatMap(splitClassTokens),\n ...splitClassTokens(defaultBaseClass),\n ...splitClassTokens(linkBaseClass),\n ...splitClassTokens(grSelectLinkNativeOverlayClass),\n ...splitClassTokens(grSelectLinkNativeLabelBaseClass),\n ...splitClassTokens(grSelectLinkNativeLabelDisabledClass),\n ...splitClassTokens(grSelectLinkNativeLabelFocusClass),\n ...splitClassTokens(grSelectPanelClasses),\n ...Object.values(selectLinkSizeClassBySize).flatMap(splitClassTokens),\n ...Object.values(selectLinkVariantClassByVariant).flatMap(splitClassTokens),\n ...Object.values(selectLinkNativeLabelVariantClassByVariant).flatMap(splitClassTokens),\n ...splitClassTokens('no-underline underline underline-offset-4 hover:underline hover:underline-offset-4 peer-hover:underline peer-hover:underline-offset-4'),\n ...splitClassTokens('disabled:cursor-not-allowed disabled:text-[var(--gr-muted-fg)] disabled:no-underline'),\n ...splitClassTokens('disabled:cursor-not-allowed disabled:bg-[var(--gr-muted)] disabled:text-[var(--gr-muted-fg)]'),\n ...splitClassTokens(selectOptionBaseClass),\n ...splitClassTokens(selectOptionWidthClass),\n ...splitClassTokens(selectOptionLinkWidthClass),\n ...splitClassTokens(selectOptionEnabledClass),\n ...splitClassTokens(selectOptionActiveClass),\n ...splitClassTokens(selectOptionDisabledClass),\n ...splitClassTokens('appearance-none pr-9'),\n ...splitClassTokens('inline-flex items-center gap-1 text-left'),\n ...splitClassTokens('flex items-center justify-between text-left'),\n ...splitClassTokens('block min-w-full w-max whitespace-nowrap'),\n // Набор перехода панели общий на пять компонентов и живёт безадресным\n // модулем в `shared/`: в `dist` он лежит в общем чанке, который пресет не\n // сканирует, поэтому объявить его обязан каждый потребитель.\n ...flattenTransitionTokens(panelPopTransition),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grSelectSafelist } from './safelist'\n\nexport const grSelectConfig = defineGranularComponent(import.meta.url, {\n name: 'GrSelect',\n dependencies: ['GrChip', 'GrInput'],\n safelist: grSelectSafelist,\n})\n"],"mappings":";;;;;AA2BA,IAAa,mBAAmB,CAAC,mBAAG,IAAI,IAAI;CAC1C,GAAG,OAAO,OAAO,kBAAkB,CAAC,CAAC,QAAQ,gBAAgB;CAC7D,GAAG,iBAAiB,kBAAkB;CACtC,GAAG,OAAO,OAAO,qBAAqB,CAAC,CAAC,QAAQ,gBAAgB;CAChE,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,8BAA8B;CAClD,GAAG,iBAAiB,gCAAgC;CACpD,GAAG,iBAAiB,oCAAoC;CACxD,GAAG,iBAAiB,iCAAiC;CACrD,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,OAAO,OAAO,yBAAyB,CAAC,CAAC,QAAQ,gBAAgB;CACpE,GAAG,OAAO,OAAO,+BAA+B,CAAC,CAAC,QAAQ,gBAAgB;CAC1E,GAAG,OAAO,OAAO,0CAA0C,CAAC,CAAC,QAAQ,gBAAgB;CACrF,GAAG,iBAAiB,uIAAuI;CAC3J,GAAG,iBAAiB,sFAAsF;CAC1G,GAAG,iBAAiB,8FAA8F;CAClH,GAAG,iBAAiB,qBAAqB;CACzC,GAAG,iBAAiB,sBAAsB;CAC1C,GAAG,iBAAiB,0BAA0B;CAC9C,GAAG,iBAAiB,wBAAwB;CAC5C,GAAG,iBAAiB,uBAAuB;CAC3C,GAAG,iBAAiB,yBAAyB;CAC7C,GAAG,iBAAiB,sBAAsB;CAC1C,GAAG,iBAAiB,0CAA0C;CAC9D,GAAG,iBAAiB,6CAA6C;CACjE,GAAG,iBAAiB,0CAA0C;CAI9D,GAAG,wBAAwB,kBAAkB;AAC/C,CAAC,CAAC;;;ACtDF,IAAa,iBAAiB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"config-DOYz_SVK.js","names":[],"sources":["../../src/components/GrSelect/safelist.ts","../../src/components/GrSelect/config.ts"],"sourcesContent":["import { flattenTransitionTokens, splitClassTokens } from '../shared/classTokens'\nimport { panelPopTransition } from '../shared/overlayTransition'\nimport {\n borderClassByState,\n defaultBaseClass,\n grSelectLinkNativeLabelBaseClass,\n grSelectLinkNativeLabelDisabledClass,\n grSelectLinkNativeLabelFocusClass,\n grSelectLinkNativeOverlayClass,\n grSelectPanelClasses,\n invalidBorderClass,\n linkBaseClass,\n selectOptionActiveClass,\n selectOptionBaseClass,\n selectOptionDisabledClass,\n selectOptionEnabledClass,\n selectOptionLinkWidthClass,\n selectOptionWidthClass,\n selectLinkNativeLabelVariantClassByVariant,\n selectLinkSizeClassBySize,\n selectLinkVariantClassByVariant,\n selectSizeClassBySize,\n} from './grSelectStyles'\n\n// Всё, что живёт в `grSelectStyles.ts`: и вычисляемые мапы, и строковые литералы\n// оболочки, link-режима, native-overlay и панели. Хелпер уезжает в общий\n// `dist/chunks/`, вне области скана компонента — гейт `src/__tests__/safelist.test.ts`.\nexport const grSelectSafelist = [...new Set([\n ...Object.values(borderClassByState).flatMap(splitClassTokens),\n ...splitClassTokens(invalidBorderClass),\n ...Object.values(selectSizeClassBySize).flatMap(splitClassTokens),\n ...splitClassTokens(defaultBaseClass),\n ...splitClassTokens(linkBaseClass),\n ...splitClassTokens(grSelectLinkNativeOverlayClass),\n ...splitClassTokens(grSelectLinkNativeLabelBaseClass),\n ...splitClassTokens(grSelectLinkNativeLabelDisabledClass),\n ...splitClassTokens(grSelectLinkNativeLabelFocusClass),\n ...splitClassTokens(grSelectPanelClasses),\n ...Object.values(selectLinkSizeClassBySize).flatMap(splitClassTokens),\n ...Object.values(selectLinkVariantClassByVariant).flatMap(splitClassTokens),\n ...Object.values(selectLinkNativeLabelVariantClassByVariant).flatMap(splitClassTokens),\n ...splitClassTokens('no-underline underline underline-offset-4 hover:underline hover:underline-offset-4 peer-hover:underline peer-hover:underline-offset-4'),\n ...splitClassTokens('disabled:cursor-not-allowed disabled:text-[var(--gr-muted-fg)] disabled:no-underline'),\n ...splitClassTokens('disabled:cursor-not-allowed disabled:bg-[var(--gr-muted)] disabled:text-[var(--gr-muted-fg)]'),\n ...splitClassTokens(selectOptionBaseClass),\n ...splitClassTokens(selectOptionWidthClass),\n ...splitClassTokens(selectOptionLinkWidthClass),\n ...splitClassTokens(selectOptionEnabledClass),\n ...splitClassTokens(selectOptionActiveClass),\n ...splitClassTokens(selectOptionDisabledClass),\n ...splitClassTokens('appearance-none pr-9'),\n ...splitClassTokens('inline-flex items-center gap-1 text-left'),\n ...splitClassTokens('flex items-center justify-between text-left'),\n ...splitClassTokens('block min-w-full w-max whitespace-nowrap'),\n // Набор перехода панели общий на пять компонентов и живёт безадресным\n // модулем в `shared/`: в `dist` он лежит в общем чанке, который пресет не\n // сканирует, поэтому объявить его обязан каждый потребитель.\n ...flattenTransitionTokens(panelPopTransition),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grSelectSafelist } from './safelist'\n\nexport const grSelectConfig = defineGranularComponent(import.meta.url, {\n name: 'GrSelect',\n dependencies: ['GrChip', 'GrInput'],\n safelist: grSelectSafelist,\n})\n"],"mappings":";;;;;AA2BA,IAAa,mBAAmB,CAAC,mBAAG,IAAI,IAAI;CAC1C,GAAG,OAAO,OAAO,kBAAkB,CAAC,CAAC,QAAQ,gBAAgB;CAC7D,GAAG,iBAAiB,kBAAkB;CACtC,GAAG,OAAO,OAAO,qBAAqB,CAAC,CAAC,QAAQ,gBAAgB;CAChE,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,8BAA8B;CAClD,GAAG,iBAAiB,gCAAgC;CACpD,GAAG,iBAAiB,oCAAoC;CACxD,GAAG,iBAAiB,iCAAiC;CACrD,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,OAAO,OAAO,yBAAyB,CAAC,CAAC,QAAQ,gBAAgB;CACpE,GAAG,OAAO,OAAO,+BAA+B,CAAC,CAAC,QAAQ,gBAAgB;CAC1E,GAAG,OAAO,OAAO,0CAA0C,CAAC,CAAC,QAAQ,gBAAgB;CACrF,GAAG,iBAAiB,uIAAuI;CAC3J,GAAG,iBAAiB,sFAAsF;CAC1G,GAAG,iBAAiB,8FAA8F;CAClH,GAAG,iBAAiB,qBAAqB;CACzC,GAAG,iBAAiB,sBAAsB;CAC1C,GAAG,iBAAiB,0BAA0B;CAC9C,GAAG,iBAAiB,wBAAwB;CAC5C,GAAG,iBAAiB,uBAAuB;CAC3C,GAAG,iBAAiB,yBAAyB;CAC7C,GAAG,iBAAiB,sBAAsB;CAC1C,GAAG,iBAAiB,0CAA0C;CAC9D,GAAG,iBAAiB,6CAA6C;CACjE,GAAG,iBAAiB,0CAA0C;CAI9D,GAAG,wBAAwB,kBAAkB;AAC/C,CAAC,CAAC;;;ACtDF,IAAa,iBAAiB,wBAAwB,YAAY,KAAK;CACrE,MAAM;CACN,cAAc,CAAC,UAAU,SAAS;CAClC,UAAU;AACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-DRbojEzO.js","names":[],"sources":["../../src/components/GrRating/grRatingStyles.ts","../../src/components/GrRating/safelist.ts","../../src/components/GrRating/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\nimport type { GrTone } from '../shared/tones'\n\nexport type GrRatingSize = GrComponentSize\nexport type GrRatingTone = GrTone\n\n/**\n * Кастомизация через CSS-переменные (на самом компоненте или любом предке):\n *\n * - `--gr-rating-color` — цвет «залитых» символов (по умолчанию — из `tone`).\n * - `--gr-rating-void-color` — цвет «пустых» символов.\n * - `--gr-rating-symbol-size` — размер символа (по умолчанию — из `size`).\n */\n\n// Размер символа — дефолт для `--gr-rating-symbol-size`.\nexport const ratingSymbolSizeBySize: Record<GrRatingSize, string> = {\n xs: 'h-[var(--gr-rating-symbol-size,0.875rem)] w-[var(--gr-rating-symbol-size,0.875rem)]',\n sm: 'h-[var(--gr-rating-symbol-size,1rem)] w-[var(--gr-rating-symbol-size,1rem)]',\n md: 'h-[var(--gr-rating-symbol-size,1.25rem)] w-[var(--gr-rating-symbol-size,1.25rem)]',\n lg: 'h-[var(--gr-rating-symbol-size,1.5rem)] w-[var(--gr-rating-symbol-size,1.5rem)]',\n}\n\nexport const ratingGapBySize: Record<GrRatingSize, string> = {\n xs: 'gap-0.5',\n sm: 'gap-0.5',\n md: 'gap-1',\n lg: 'gap-1.5',\n}\n\nexport const ratingTextSizeBySize: Record<GrRatingSize, string> = {\n xs: 'text-[length:var(--gr-control-text-2xs)] leading-[var(--gr-control-leading-2xs)]',\n sm: 'text-[length:var(--gr-control-text-xs)] leading-[var(--gr-control-leading-xs)]',\n md: 'text-[length:var(--gr-control-text-sm)] leading-[var(--gr-control-leading-sm)]',\n lg: 'text-[length:var(--gr-rating-font-size-lg,15px)]',\n}\n\n// Цвет заливки по тону. `--gr-rating-color` перекрывает тон точечно.\nexport const ratingFillClassByTone: Record<GrRatingTone, string> = {\n primary: 'text-[var(--gr-rating-color,var(--gr-primary))]',\n neutral: 'text-[var(--gr-rating-color,var(--gr-fg))]',\n success: 'text-[var(--gr-rating-color,var(--gr-success))]',\n warning: 'text-[var(--gr-rating-color,var(--gr-warning))]',\n danger: 'text-[var(--gr-rating-color,var(--gr-danger))]',\n info: 'text-[var(--gr-rating-color,var(--gr-info))]',\n slate: 'text-[var(--gr-rating-color,var(--gr-slate))]',\n azure: 'text-[var(--gr-rating-color,var(--gr-azure))]',\n}\n\n// «Пустой» символ: приглушённая заливка, чтобы шкала читалась целиком.\nexport const ratingVoidClass = 'text-[var(--gr-rating-void-color,color-mix(in_srgb,var(--gr-muted-fg)_35%,transparent))]'\n\nexport const ratingDisabledClass = 'cursor-not-allowed text-[var(--gr-disabled-fg)]'\n\nexport const ratingRootBaseClass = 'inline-flex items-center rounded-[var(--gr-radius-control)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--gr-bg)]'\n\nexport function ratingRootClass(options: { size: GrRatingSize, disabled: boolean, interactive: boolean }): string {\n return [\n ratingRootBaseClass,\n ratingGapBySize[options.size],\n // Недоступная шкала гасится токеном, а не `opacity`: прозрачность\n // разбавляет выверенные на AA токены и роняет контраст подписи.\n options.disabled ? ratingDisabledClass : (options.interactive ? 'cursor-pointer' : ''),\n ]\n .filter(Boolean)\n .join(' ')\n}\n\nexport function ratingSymbolClass(size: GrRatingSize): string {\n return `relative block shrink-0 ${ratingSymbolSizeBySize[size]}`\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n ratingDisabledClass,\n ratingFillClassByTone,\n ratingGapBySize,\n ratingRootBaseClass,\n ratingSymbolSizeBySize,\n ratingTextSizeBySize,\n ratingVoidClass,\n} from './grRatingStyles'\n\n// Всё, что живёт в `grRatingStyles.ts`: и вычисляемые мапы (size/tone), и\n// строковые литералы. Хелпер бандлер волен вынести в общий `dist/chunks/`,\n// который не попадает в область скана компонента — гейт `src/__tests__/safelist.test.ts`.\nexport const grRatingSafelist = [...new Set([\n ...Object.values(ratingSymbolSizeBySize).flatMap(splitClassTokens),\n ...Object.values(ratingGapBySize).flatMap(splitClassTokens),\n ...Object.values(ratingTextSizeBySize).flatMap(splitClassTokens),\n ...Object.values(ratingFillClassByTone).flatMap(splitClassTokens),\n ...splitClassTokens(ratingVoidClass),\n ...splitClassTokens(ratingRootBaseClass),\n ...splitClassTokens(ratingDisabledClass),\n ...splitClassTokens('cursor-pointer'),\n ...splitClassTokens('relative block shrink-0 tabular-nums'),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grRatingSafelist } from './safelist'\n\nexport const grRatingConfig = defineGranularComponent(import.meta.url, {\n name: 'GrRating',\n safelist: grRatingSafelist,\n})\n"],"mappings":";;;;;;;;;;AAgBA,IAAa,yBAAuD;CAClE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,kBAAgD;CAC3D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,uBAAqD;CAChE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAGA,IAAa,wBAAsD;CACjE,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,QAAQ;CACR,MAAM;CACN,OAAO;CACP,OAAO;AACT;AAGA,IAAa,kBAAkB;AAE/B,IAAa,sBAAsB;AAEnC,IAAa,sBAAsB;AAEnC,SAAgB,gBAAgB,SAAkF;CAChH,OAAO;EACL;EACA,gBAAgB,QAAQ;EAGxB,QAAQ,WAAW,sBAAuB,QAAQ,cAAc,mBAAmB;CACrF,CAAC,CACE,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;AACb;AAEA,SAAgB,kBAAkB,MAA4B;CAC5D,OAAO,2BAA2B,uBAAuB;AAC3D;;;ACxDA,IAAa,mBAAmB,CAAC,mBAAG,IAAI,IAAI;CAC1C,GAAG,OAAO,OAAO,sBAAsB,CAAC,CAAC,QAAQ,gBAAgB;CACjE,GAAG,OAAO,OAAO,eAAe,CAAC,CAAC,QAAQ,gBAAgB;CAC1D,GAAG,OAAO,OAAO,oBAAoB,CAAC,CAAC,QAAQ,gBAAgB;CAC/D,GAAG,OAAO,OAAO,qBAAqB,CAAC,CAAC,QAAQ,gBAAgB;CAChE,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,sCAAsC;AAC5D,CAAC,CAAC;;;ACpBF,IAAa,iBAAiB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"config-DRbojEzO.js","names":[],"sources":["../../src/components/GrRating/grRatingStyles.ts","../../src/components/GrRating/safelist.ts","../../src/components/GrRating/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\nimport type { GrTone } from '../shared/tones'\n\nexport type GrRatingSize = GrComponentSize\nexport type GrRatingTone = GrTone\n\n/**\n * Кастомизация через CSS-переменные (на самом компоненте или любом предке):\n *\n * - `--gr-rating-color` — цвет «залитых» символов (по умолчанию — из `tone`).\n * - `--gr-rating-void-color` — цвет «пустых» символов.\n * - `--gr-rating-symbol-size` — размер символа (по умолчанию — из `size`).\n */\n\n// Размер символа — дефолт для `--gr-rating-symbol-size`.\nexport const ratingSymbolSizeBySize: Record<GrRatingSize, string> = {\n xs: 'h-[var(--gr-rating-symbol-size,0.875rem)] w-[var(--gr-rating-symbol-size,0.875rem)]',\n sm: 'h-[var(--gr-rating-symbol-size,1rem)] w-[var(--gr-rating-symbol-size,1rem)]',\n md: 'h-[var(--gr-rating-symbol-size,1.25rem)] w-[var(--gr-rating-symbol-size,1.25rem)]',\n lg: 'h-[var(--gr-rating-symbol-size,1.5rem)] w-[var(--gr-rating-symbol-size,1.5rem)]',\n}\n\nexport const ratingGapBySize: Record<GrRatingSize, string> = {\n xs: 'gap-0.5',\n sm: 'gap-0.5',\n md: 'gap-1',\n lg: 'gap-1.5',\n}\n\nexport const ratingTextSizeBySize: Record<GrRatingSize, string> = {\n xs: 'text-[length:var(--gr-control-text-2xs)] leading-[var(--gr-control-leading-2xs)]',\n sm: 'text-[length:var(--gr-control-text-xs)] leading-[var(--gr-control-leading-xs)]',\n md: 'text-[length:var(--gr-control-text-sm)] leading-[var(--gr-control-leading-sm)]',\n lg: 'text-[length:var(--gr-rating-font-size-lg,15px)]',\n}\n\n// Цвет заливки по тону. `--gr-rating-color` перекрывает тон точечно.\nexport const ratingFillClassByTone: Record<GrRatingTone, string> = {\n primary: 'text-[var(--gr-rating-color,var(--gr-primary))]',\n neutral: 'text-[var(--gr-rating-color,var(--gr-fg))]',\n success: 'text-[var(--gr-rating-color,var(--gr-success))]',\n warning: 'text-[var(--gr-rating-color,var(--gr-warning))]',\n danger: 'text-[var(--gr-rating-color,var(--gr-danger))]',\n info: 'text-[var(--gr-rating-color,var(--gr-info))]',\n slate: 'text-[var(--gr-rating-color,var(--gr-slate))]',\n azure: 'text-[var(--gr-rating-color,var(--gr-azure))]',\n}\n\n// «Пустой» символ: приглушённая заливка, чтобы шкала читалась целиком.\nexport const ratingVoidClass = 'text-[var(--gr-rating-void-color,color-mix(in_srgb,var(--gr-muted-fg)_35%,transparent))]'\n\nexport const ratingDisabledClass = 'cursor-not-allowed text-[var(--gr-disabled-fg)]'\n\nexport const ratingRootBaseClass = 'inline-flex items-center rounded-[var(--gr-radius-control)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--gr-bg)]'\n\nexport function ratingRootClass(options: { size: GrRatingSize, disabled: boolean, interactive: boolean }): string {\n return [\n ratingRootBaseClass,\n ratingGapBySize[options.size],\n // Недоступная шкала гасится токеном, а не `opacity`: прозрачность\n // разбавляет выверенные на AA токены и роняет контраст подписи.\n options.disabled ? ratingDisabledClass : (options.interactive ? 'cursor-pointer' : ''),\n ]\n .filter(Boolean)\n .join(' ')\n}\n\nexport function ratingSymbolClass(size: GrRatingSize): string {\n return `relative block shrink-0 ${ratingSymbolSizeBySize[size]}`\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n ratingDisabledClass,\n ratingFillClassByTone,\n ratingGapBySize,\n ratingRootBaseClass,\n ratingSymbolSizeBySize,\n ratingTextSizeBySize,\n ratingVoidClass,\n} from './grRatingStyles'\n\n// Всё, что живёт в `grRatingStyles.ts`: и вычисляемые мапы (size/tone), и\n// строковые литералы. Хелпер бандлер волен вынести в общий `dist/chunks/`,\n// который не попадает в область скана компонента — гейт `src/__tests__/safelist.test.ts`.\nexport const grRatingSafelist = [...new Set([\n ...Object.values(ratingSymbolSizeBySize).flatMap(splitClassTokens),\n ...Object.values(ratingGapBySize).flatMap(splitClassTokens),\n ...Object.values(ratingTextSizeBySize).flatMap(splitClassTokens),\n ...Object.values(ratingFillClassByTone).flatMap(splitClassTokens),\n ...splitClassTokens(ratingVoidClass),\n ...splitClassTokens(ratingRootBaseClass),\n ...splitClassTokens(ratingDisabledClass),\n ...splitClassTokens('cursor-pointer'),\n ...splitClassTokens('relative block shrink-0 tabular-nums'),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grRatingSafelist } from './safelist'\n\nexport const grRatingConfig = defineGranularComponent(import.meta.url, {\n name: 'GrRating',\n safelist: grRatingSafelist,\n})\n"],"mappings":";;;;;;;;;;AAgBA,IAAa,yBAAuD;CAClE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,kBAAgD;CAC3D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,uBAAqD;CAChE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAGA,IAAa,wBAAsD;CACjE,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,QAAQ;CACR,MAAM;CACN,OAAO;CACP,OAAO;AACT;AAGA,IAAa,kBAAkB;AAE/B,IAAa,sBAAsB;AAEnC,IAAa,sBAAsB;AAEnC,SAAgB,gBAAgB,SAAkF;CAChH,OAAO;EACL;EACA,gBAAgB,QAAQ;EAGxB,QAAQ,WAAW,sBAAuB,QAAQ,cAAc,mBAAmB;CACrF,CAAC,CACE,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;AACb;AAEA,SAAgB,kBAAkB,MAA4B;CAC5D,OAAO,2BAA2B,uBAAuB;AAC3D;;;ACxDA,IAAa,mBAAmB,CAAC,mBAAG,IAAI,IAAI;CAC1C,GAAG,OAAO,OAAO,sBAAsB,CAAC,CAAC,QAAQ,gBAAgB;CACjE,GAAG,OAAO,OAAO,eAAe,CAAC,CAAC,QAAQ,gBAAgB;CAC1D,GAAG,OAAO,OAAO,oBAAoB,CAAC,CAAC,QAAQ,gBAAgB;CAC/D,GAAG,OAAO,OAAO,qBAAqB,CAAC,CAAC,QAAQ,gBAAgB;CAChE,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,sCAAsC;AAC5D,CAAC,CAAC;;;ACpBF,IAAa,iBAAiB,wBAAwB,YAAY,KAAK;CACrE,MAAM;CACN,UAAU;AACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-DUNH02Fg.js","names":[],"sources":["../../src/components/GrTreeSelect/grTreeSelectStyles.ts","../../src/components/GrTreeSelect/safelist.ts","../../src/components/GrTreeSelect/config.ts"],"sourcesContent":["import type { GrControlState } from '../shared/sizes'\nimport { overlayPanelSurfaceClass } from '../shared/overlayPanelSurface'\n\nimport type { GrInputSize } from '../GrInput'\n\nexport type GrTreeSelectState = GrControlState\n\nexport const sizeClassBySize: Record<GrInputSize, string> = {\n xs: 'h-7 px-2.5 text-[length:var(--gr-control-text-xs)] leading-[var(--gr-control-leading-xs)]',\n sm: 'h-8 px-3 text-[length:var(--gr-control-text-sm)] leading-[var(--gr-control-leading-sm)]',\n md: 'h-10 px-3 text-[length:var(--gr-control-text-md)] leading-[var(--gr-control-leading-md)]',\n lg: 'h-11 px-4 text-[length:var(--gr-control-text-lg)] leading-[var(--gr-control-leading-lg)]',\n}\n\n/**\n * Горизонтальный отступ из `sizeClassBySize`, но числом: аддоны задают паддинг\n * инлайн-стилем, а он перекрывает класс — значение нужно обеим формам, и\n * расходиться им нельзя.\n */\nexport const paddingX: Record<GrInputSize, string> = {\n xs: '10px',\n sm: '12px',\n md: '12px',\n lg: '16px',\n}\n\n/** Ширина зоны шеврона/крестика справа (`pr-9` в классе триггера). */\nexport const trailingZoneWidth = '2.25rem'\n\nexport const borderClassByState: Record<GrTreeSelectState, string> = {\n default: 'border-[var(--gr-brd)]',\n success: 'border-[var(--gr-success)] focus-visible:ring-[var(--gr-success)]',\n warning: 'border-[var(--gr-warning)] focus-visible:ring-[var(--gr-warning)]',\n danger: 'border-[var(--gr-danger)] focus-visible:ring-[var(--gr-danger)]',\n}\n\n/**\n * Ошибка валидации красится своей ролью, а не декоративным тоном `danger`:\n * `state=\"danger\"` — это подсветка по решению разработчика, `invalid` — вердикт\n * валидации, и тема вправе развести их по цвету.\n */\nexport const invalidBorderClass = 'border-[var(--gr-invalid-brd)] focus-visible:ring-[var(--gr-invalid-ring)]'\n\n/**\n * Disabled красится фоном и цветом текста, а не прозрачностью: `opacity`\n * разбавляет выверенные на AA токены и роняет контраст подписи.\n */\nexport const shellEnabledClass = 'bg-[var(--gr-bg)] text-[var(--gr-fg)]'\nexport const shellDisabledClass = 'bg-[var(--gr-muted)] text-[var(--gr-muted-fg)] cursor-not-allowed'\n\nexport function grTreeSelectClass(options: {\n size: GrInputSize\n state: GrTreeSelectState\n invalid: boolean\n disabled?: boolean\n}): string {\n return [\n sizeClassBySize[options.size],\n 'pr-9',\n options.disabled ? shellDisabledClass : shellEnabledClass,\n options.invalid ? invalidBorderClass : borderClassByState[options.state],\n ].join(' ')\n}\n\nexport const grTreeSelectPanelClass = `${overlayPanelSurfaceClass} overflow-hidden`\n\n/**\n * Строка состояния панели: загрузка и «нет данных». По центру и с двойным\n * воздухом — тот же язык, что у `GrSelect`, `GrAutocomplete` и палитры команд.\n * Слева она расходилась с содержимым дерева на паддинг скроллера.\n */\nexport const grTreeSelectStateClass = 'flex items-center justify-center gap-2 px-3 py-4 text-center text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)] text-[var(--gr-muted-fg)]'\n","import { flattenTransitionTokens, splitClassTokens } from '../shared/classTokens'\nimport { panelPopTransition } from '../shared/overlayTransition'\nimport {\n borderClassByState,\n grTreeSelectPanelClass,\n grTreeSelectStateClass,\n invalidBorderClass,\n shellDisabledClass,\n shellEnabledClass,\n sizeClassBySize,\n} from './grTreeSelectStyles'\n\nexport const grTreeSelectSafelist = [...new Set([\n ...Object.values(sizeClassBySize).flatMap(splitClassTokens),\n ...Object.values(borderClassByState).flatMap(splitClassTokens),\n ...splitClassTokens(invalidBorderClass),\n 'pr-9',\n ...splitClassTokens(shellEnabledClass),\n ...splitClassTokens(shellDisabledClass),\n ...splitClassTokens(grTreeSelectPanelClass),\n ...splitClassTokens(grTreeSelectStateClass),\n // Набор перехода панели общий на пять компонентов и живёт безадресным\n // модулем в `shared/`: в `dist` он лежит в общем чанке, который пресет не\n // сканирует, поэтому объявить его обязан каждый потребитель.\n ...flattenTransitionTokens(panelPopTransition),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grTreeSelectSafelist } from './safelist'\n\nexport const grTreeSelectConfig = defineGranularComponent(import.meta.url, {\n name: 'GrTreeSelect',\n safelist: grTreeSelectSafelist,\n dependencies: ['GrInput', 'GrTree'],\n})\n"],"mappings":";;;;AAOA,IAAa,kBAA+C;CAC1D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;;AAOA,IAAa,WAAwC;CACnD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,oBAAoB;AAEjC,IAAa,qBAAwD;CACnE,SAAS;CACT,SAAS;CACT,SAAS;CACT,QAAQ;AACV;;;;;;AAOA,IAAa,qBAAqB;;;;;AAMlC,IAAa,oBAAoB;AACjC,IAAa,qBAAqB;AAElC,SAAgB,kBAAkB,SAKvB;CACT,OAAO;EACL,gBAAgB,QAAQ;EACxB;EACA,QAAQ,WAAW,qBAAqB;EACxC,QAAQ,UAAU,qBAAqB,mBAAmB,QAAQ;CACpE,CAAC,CAAC,KAAK,GAAG;AACZ;AAEA,IAAa,yBAAyB,GAAG,yBAAyB;;;;;;AAOlE,IAAa,yBAAyB;;;AC3DtC,IAAa,uBAAuB,CAAC,mBAAG,IAAI,IAAI;CAC9C,GAAG,OAAO,OAAO,eAAe,CAAC,CAAC,QAAQ,gBAAgB;CAC1D,GAAG,OAAO,OAAO,kBAAkB,CAAC,CAAC,QAAQ,gBAAgB;CAC7D,GAAG,iBAAiB,kBAAkB;CACtC;CACA,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,kBAAkB;CACtC,GAAG,iBAAiB,sBAAsB;CAC1C,GAAG,iBAAiB,sBAAsB;CAI1C,GAAG,wBAAwB,kBAAkB;AAC/C,CAAC,CAAC;;;ACrBF,IAAa,qBAAqB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"config-DUNH02Fg.js","names":[],"sources":["../../src/components/GrTreeSelect/grTreeSelectStyles.ts","../../src/components/GrTreeSelect/safelist.ts","../../src/components/GrTreeSelect/config.ts"],"sourcesContent":["import type { GrControlState } from '../shared/sizes'\nimport { overlayPanelSurfaceClass } from '../shared/overlayPanelSurface'\n\nimport type { GrInputSize } from '../GrInput'\n\nexport type GrTreeSelectState = GrControlState\n\nexport const sizeClassBySize: Record<GrInputSize, string> = {\n xs: 'h-7 px-2.5 text-[length:var(--gr-control-text-xs)] leading-[var(--gr-control-leading-xs)]',\n sm: 'h-8 px-3 text-[length:var(--gr-control-text-sm)] leading-[var(--gr-control-leading-sm)]',\n md: 'h-10 px-3 text-[length:var(--gr-control-text-md)] leading-[var(--gr-control-leading-md)]',\n lg: 'h-11 px-4 text-[length:var(--gr-control-text-lg)] leading-[var(--gr-control-leading-lg)]',\n}\n\n/**\n * Горизонтальный отступ из `sizeClassBySize`, но числом: аддоны задают паддинг\n * инлайн-стилем, а он перекрывает класс — значение нужно обеим формам, и\n * расходиться им нельзя.\n */\nexport const paddingX: Record<GrInputSize, string> = {\n xs: '10px',\n sm: '12px',\n md: '12px',\n lg: '16px',\n}\n\n/** Ширина зоны шеврона/крестика справа (`pr-9` в классе триггера). */\nexport const trailingZoneWidth = '2.25rem'\n\nexport const borderClassByState: Record<GrTreeSelectState, string> = {\n default: 'border-[var(--gr-brd)]',\n success: 'border-[var(--gr-success)] focus-visible:ring-[var(--gr-success)]',\n warning: 'border-[var(--gr-warning)] focus-visible:ring-[var(--gr-warning)]',\n danger: 'border-[var(--gr-danger)] focus-visible:ring-[var(--gr-danger)]',\n}\n\n/**\n * Ошибка валидации красится своей ролью, а не декоративным тоном `danger`:\n * `state=\"danger\"` — это подсветка по решению разработчика, `invalid` — вердикт\n * валидации, и тема вправе развести их по цвету.\n */\nexport const invalidBorderClass = 'border-[var(--gr-invalid-brd)] focus-visible:ring-[var(--gr-invalid-ring)]'\n\n/**\n * Disabled красится фоном и цветом текста, а не прозрачностью: `opacity`\n * разбавляет выверенные на AA токены и роняет контраст подписи.\n */\nexport const shellEnabledClass = 'bg-[var(--gr-bg)] text-[var(--gr-fg)]'\nexport const shellDisabledClass = 'bg-[var(--gr-muted)] text-[var(--gr-muted-fg)] cursor-not-allowed'\n\nexport function grTreeSelectClass(options: {\n size: GrInputSize\n state: GrTreeSelectState\n invalid: boolean\n disabled?: boolean\n}): string {\n return [\n sizeClassBySize[options.size],\n 'pr-9',\n options.disabled ? shellDisabledClass : shellEnabledClass,\n options.invalid ? invalidBorderClass : borderClassByState[options.state],\n ].join(' ')\n}\n\nexport const grTreeSelectPanelClass = `${overlayPanelSurfaceClass} overflow-hidden`\n\n/**\n * Строка состояния панели: загрузка и «нет данных». По центру и с двойным\n * воздухом — тот же язык, что у `GrSelect`, `GrAutocomplete` и палитры команд.\n * Слева она расходилась с содержимым дерева на паддинг скроллера.\n */\nexport const grTreeSelectStateClass = 'flex items-center justify-center gap-2 px-3 py-4 text-center text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)] text-[var(--gr-muted-fg)]'\n","import { flattenTransitionTokens, splitClassTokens } from '../shared/classTokens'\nimport { panelPopTransition } from '../shared/overlayTransition'\nimport {\n borderClassByState,\n grTreeSelectPanelClass,\n grTreeSelectStateClass,\n invalidBorderClass,\n shellDisabledClass,\n shellEnabledClass,\n sizeClassBySize,\n} from './grTreeSelectStyles'\n\nexport const grTreeSelectSafelist = [...new Set([\n ...Object.values(sizeClassBySize).flatMap(splitClassTokens),\n ...Object.values(borderClassByState).flatMap(splitClassTokens),\n ...splitClassTokens(invalidBorderClass),\n 'pr-9',\n ...splitClassTokens(shellEnabledClass),\n ...splitClassTokens(shellDisabledClass),\n ...splitClassTokens(grTreeSelectPanelClass),\n ...splitClassTokens(grTreeSelectStateClass),\n // Набор перехода панели общий на пять компонентов и живёт безадресным\n // модулем в `shared/`: в `dist` он лежит в общем чанке, который пресет не\n // сканирует, поэтому объявить его обязан каждый потребитель.\n ...flattenTransitionTokens(panelPopTransition),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grTreeSelectSafelist } from './safelist'\n\nexport const grTreeSelectConfig = defineGranularComponent(import.meta.url, {\n name: 'GrTreeSelect',\n safelist: grTreeSelectSafelist,\n dependencies: ['GrInput', 'GrTree'],\n})\n"],"mappings":";;;;AAOA,IAAa,kBAA+C;CAC1D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;;AAOA,IAAa,WAAwC;CACnD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,oBAAoB;AAEjC,IAAa,qBAAwD;CACnE,SAAS;CACT,SAAS;CACT,SAAS;CACT,QAAQ;AACV;;;;;;AAOA,IAAa,qBAAqB;;;;;AAMlC,IAAa,oBAAoB;AACjC,IAAa,qBAAqB;AAElC,SAAgB,kBAAkB,SAKvB;CACT,OAAO;EACL,gBAAgB,QAAQ;EACxB;EACA,QAAQ,WAAW,qBAAqB;EACxC,QAAQ,UAAU,qBAAqB,mBAAmB,QAAQ;CACpE,CAAC,CAAC,KAAK,GAAG;AACZ;AAEA,IAAa,yBAAyB,GAAG,yBAAyB;;;;;;AAOlE,IAAa,yBAAyB;;;AC3DtC,IAAa,uBAAuB,CAAC,mBAAG,IAAI,IAAI;CAC9C,GAAG,OAAO,OAAO,eAAe,CAAC,CAAC,QAAQ,gBAAgB;CAC1D,GAAG,OAAO,OAAO,kBAAkB,CAAC,CAAC,QAAQ,gBAAgB;CAC7D,GAAG,iBAAiB,kBAAkB;CACtC;CACA,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,kBAAkB;CACtC,GAAG,iBAAiB,sBAAsB;CAC1C,GAAG,iBAAiB,sBAAsB;CAI1C,GAAG,wBAAwB,kBAAkB;AAC/C,CAAC,CAAC;;;ACrBF,IAAa,qBAAqB,wBAAwB,YAAY,KAAK;CACzE,MAAM;CACN,UAAU;CACV,cAAc,CAAC,WAAW,QAAQ;AACpC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-DUbbGcfw.js","names":[],"sources":["../../src/components/GrCard/grCardStyles.ts","../../src/components/GrCard/safelist.ts","../../src/components/GrCard/config.ts"],"sourcesContent":["export type GrCardPadding = 'none' | 'sm' | 'md' | 'lg'\nexport type GrCardVariant = 'elevated' | 'outlined' | 'ghost'\n\n/**\n * Классы `GrCard`.\n *\n * `elevated` — дефолт и ровно тот вид, что был у карточки до появления пропов:\n * `GrCollapse` и `GrList` рендерят содержимое внутрь `GrCard`, и любое смещение\n * дефолта поехало бы у них.\n */\n\nexport const surfaceBaseClass = 'rounded-[var(--gr-radius-lg)] bg-[var(--gr-card)] text-[var(--gr-card-fg)]'\n\nexport const variantClass: Record<GrCardVariant, string> = {\n // Тень — токеном, а не утилитой uno-шкалы: у той зашит свой полупрозрачный\n // цвет, темой он не настраивается, и на тёмном фоне тени не получалось вовсе\n // — карточка теряла подъём и держалась на одной рамке. Токен темозависим.\n // Имя утилиты здесь не пишется намеренно: UnoCSS сканирует текст файла и\n // сгенерировал бы класс прямо из комментария.\n elevated: 'border border-[var(--gr-brd)] shadow-[var(--gr-shadow-1)]',\n outlined: 'border border-[var(--gr-brd)]',\n // Карточка внутри карточки: вторая рамка только шумит.\n ghost: '',\n}\n\nexport const paddingClass: Record<GrCardPadding, string> = {\n none: '',\n sm: 'p-3',\n md: 'p-4',\n lg: 'p-6',\n}\n\n/**\n * Строка шапки: заголовок с описанием слева, действия справа.\n *\n * `items-start`, а не `center`: у карточки с описанием шапка выше одной строки,\n * и кнопка, выровненная по центру блока, уезжала бы к описанию, а не к\n * заголовку.\n */\nexport const headerRowClass = 'flex items-start justify-between gap-3'\nexport const headerActionsClass = 'flex shrink-0 items-center gap-1'\n\nexport const sectionDividerTopClass = 'border-t border-[var(--gr-brd)]'\nexport const sectionDividerBottomClass = 'border-b border-[var(--gr-brd)]'\n\n/**\n * Отступ шапки, которую карточка рисует сама из `title`.\n *\n * Не берётся из `padding`: тот описывает **содержимое**, и дефолт `none` у него\n * осмыслен — на `GrCard` стоят `GrCollapse` и `GrList`, а карточка с таблицей\n * хочет её край в край. Заголовок же принадлежит самой карточке, и прижатым к\n * рамке вместе с разделителем он выглядеть не должен ни при каком `padding`.\n *\n * По вертикали отступ меньше горизонтального: шапка — строка, а не блок.\n */\nexport const ownHeaderPaddingClass = 'px-4 py-3'\n\n/**\n * Уровень заголовка карточки. `h1` намеренно нет: его задаёт страница, а\n * карточка — блок внутри уже существующей структуры.\n */\nexport const GR_CARD_HEADING_LEVELS = [2, 3, 4, 5, 6] as const\n\nexport type GrCardHeadingLevel = typeof GR_CARD_HEADING_LEVELS[number]\n\n// `m-0` — у нативного заголовка есть браузерные отступы, и без сброса шапка\n// разъезжается по вертикали.\nexport const cardTitleClass = 'm-0 text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)] font-600'\n\nexport const cardDescriptionClass = 'mt-1 text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)] text-[var(--gr-muted-fg)]'\n\n/** Интерактивная карточка целиком: ссылка или кнопка во всю поверхность. */\nexport const interactiveClass = 'block w-full text-left transition-colors duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\n\nexport const hoverClass = 'cursor-pointer hover:bg-[var(--gr-muted)]'\n\nexport function grCardRootClass(options: {\n variant: GrCardVariant\n /** Падинг едет на корень, только пока нет секций — иначе лишняя обёртка. */\n padding: GrCardPadding\n interactive: boolean\n hoverable: boolean\n}): string {\n return [\n surfaceBaseClass,\n variantClass[options.variant],\n paddingClass[options.padding],\n options.interactive ? interactiveClass : '',\n options.interactive || options.hoverable ? hoverClass : '',\n ].filter(Boolean).join(' ')\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n headerActionsClass,\n headerRowClass,\n cardDescriptionClass,\n cardTitleClass,\n hoverClass,\n interactiveClass,\n ownHeaderPaddingClass,\n paddingClass,\n sectionDividerBottomClass,\n sectionDividerTopClass,\n surfaceBaseClass,\n variantClass,\n} from './grCardStyles'\n\nexport const grCardSafelist = [...new Set([\n ...splitClassTokens(surfaceBaseClass),\n ...Object.values(variantClass).flatMap(splitClassTokens),\n ...Object.values(paddingClass).flatMap(splitClassTokens),\n ...splitClassTokens(ownHeaderPaddingClass),\n ...splitClassTokens(headerRowClass),\n ...splitClassTokens(headerActionsClass),\n ...splitClassTokens(sectionDividerTopClass),\n ...splitClassTokens(sectionDividerBottomClass),\n ...splitClassTokens(interactiveClass),\n ...splitClassTokens(hoverClass),\n ...splitClassTokens(cardTitleClass),\n ...splitClassTokens(cardDescriptionClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grCardSafelist } from './safelist'\n\nexport const grCardConfig = defineGranularComponent(import.meta.url, {\n name: 'GrCard',\n safelist: grCardSafelist,\n})\n"],"mappings":";;;;;;;;;;AAWA,IAAa,mBAAmB;AAEhC,IAAa,eAA8C;CAMzD,UAAU;CACV,UAAU;CAEV,OAAO;AACT;AAEA,IAAa,eAA8C;CACzD,MAAM;CACN,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;;;;AASA,IAAa,iBAAiB;AAC9B,IAAa,qBAAqB;AAElC,IAAa,yBAAyB;AACtC,IAAa,4BAA4B;;;;;;;;;;;AAYzC,IAAa,wBAAwB;AAYrC,IAAa,iBAAiB;AAE9B,IAAa,uBAAuB;;AAGpC,IAAa,mBAAmB;AAEhC,IAAa,aAAa;AAE1B,SAAgB,gBAAgB,SAMrB;CACT,OAAO;EACL;EACA,aAAa,QAAQ;EACrB,aAAa,QAAQ;EACrB,QAAQ,cAAc,mBAAmB;EACzC,QAAQ,eAAe,QAAQ,YAAY,aAAa;CAC1D,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;AAC5B;;;AC1EA,IAAa,iBAAiB,CAAC,mBAAG,IAAI,IAAI;CACxC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,OAAO,OAAO,YAAY,CAAC,CAAC,QAAQ,gBAAgB;CACvD,GAAG,OAAO,OAAO,YAAY,CAAC,CAAC,QAAQ,gBAAgB;CACvD,GAAG,iBAAiB,qBAAqB;CACzC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,kBAAkB;CACtC,GAAG,iBAAiB,sBAAsB;CAC1C,GAAG,iBAAiB,yBAAyB;CAC7C,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,UAAU;CAC9B,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,oBAAoB;AAC1C,CAAC,CAAC;;;ACzBF,IAAa,eAAe,wBAAwB,
|
|
1
|
+
{"version":3,"file":"config-DUbbGcfw.js","names":[],"sources":["../../src/components/GrCard/grCardStyles.ts","../../src/components/GrCard/safelist.ts","../../src/components/GrCard/config.ts"],"sourcesContent":["export type GrCardPadding = 'none' | 'sm' | 'md' | 'lg'\nexport type GrCardVariant = 'elevated' | 'outlined' | 'ghost'\n\n/**\n * Классы `GrCard`.\n *\n * `elevated` — дефолт и ровно тот вид, что был у карточки до появления пропов:\n * `GrCollapse` и `GrList` рендерят содержимое внутрь `GrCard`, и любое смещение\n * дефолта поехало бы у них.\n */\n\nexport const surfaceBaseClass = 'rounded-[var(--gr-radius-lg)] bg-[var(--gr-card)] text-[var(--gr-card-fg)]'\n\nexport const variantClass: Record<GrCardVariant, string> = {\n // Тень — токеном, а не утилитой uno-шкалы: у той зашит свой полупрозрачный\n // цвет, темой он не настраивается, и на тёмном фоне тени не получалось вовсе\n // — карточка теряла подъём и держалась на одной рамке. Токен темозависим.\n // Имя утилиты здесь не пишется намеренно: UnoCSS сканирует текст файла и\n // сгенерировал бы класс прямо из комментария.\n elevated: 'border border-[var(--gr-brd)] shadow-[var(--gr-shadow-1)]',\n outlined: 'border border-[var(--gr-brd)]',\n // Карточка внутри карточки: вторая рамка только шумит.\n ghost: '',\n}\n\nexport const paddingClass: Record<GrCardPadding, string> = {\n none: '',\n sm: 'p-3',\n md: 'p-4',\n lg: 'p-6',\n}\n\n/**\n * Строка шапки: заголовок с описанием слева, действия справа.\n *\n * `items-start`, а не `center`: у карточки с описанием шапка выше одной строки,\n * и кнопка, выровненная по центру блока, уезжала бы к описанию, а не к\n * заголовку.\n */\nexport const headerRowClass = 'flex items-start justify-between gap-3'\nexport const headerActionsClass = 'flex shrink-0 items-center gap-1'\n\nexport const sectionDividerTopClass = 'border-t border-[var(--gr-brd)]'\nexport const sectionDividerBottomClass = 'border-b border-[var(--gr-brd)]'\n\n/**\n * Отступ шапки, которую карточка рисует сама из `title`.\n *\n * Не берётся из `padding`: тот описывает **содержимое**, и дефолт `none` у него\n * осмыслен — на `GrCard` стоят `GrCollapse` и `GrList`, а карточка с таблицей\n * хочет её край в край. Заголовок же принадлежит самой карточке, и прижатым к\n * рамке вместе с разделителем он выглядеть не должен ни при каком `padding`.\n *\n * По вертикали отступ меньше горизонтального: шапка — строка, а не блок.\n */\nexport const ownHeaderPaddingClass = 'px-4 py-3'\n\n/**\n * Уровень заголовка карточки. `h1` намеренно нет: его задаёт страница, а\n * карточка — блок внутри уже существующей структуры.\n */\nexport const GR_CARD_HEADING_LEVELS = [2, 3, 4, 5, 6] as const\n\nexport type GrCardHeadingLevel = typeof GR_CARD_HEADING_LEVELS[number]\n\n// `m-0` — у нативного заголовка есть браузерные отступы, и без сброса шапка\n// разъезжается по вертикали.\nexport const cardTitleClass = 'm-0 text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)] font-600'\n\nexport const cardDescriptionClass = 'mt-1 text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)] text-[var(--gr-muted-fg)]'\n\n/** Интерактивная карточка целиком: ссылка или кнопка во всю поверхность. */\nexport const interactiveClass = 'block w-full text-left transition-colors duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\n\nexport const hoverClass = 'cursor-pointer hover:bg-[var(--gr-muted)]'\n\nexport function grCardRootClass(options: {\n variant: GrCardVariant\n /** Падинг едет на корень, только пока нет секций — иначе лишняя обёртка. */\n padding: GrCardPadding\n interactive: boolean\n hoverable: boolean\n}): string {\n return [\n surfaceBaseClass,\n variantClass[options.variant],\n paddingClass[options.padding],\n options.interactive ? interactiveClass : '',\n options.interactive || options.hoverable ? hoverClass : '',\n ].filter(Boolean).join(' ')\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n headerActionsClass,\n headerRowClass,\n cardDescriptionClass,\n cardTitleClass,\n hoverClass,\n interactiveClass,\n ownHeaderPaddingClass,\n paddingClass,\n sectionDividerBottomClass,\n sectionDividerTopClass,\n surfaceBaseClass,\n variantClass,\n} from './grCardStyles'\n\nexport const grCardSafelist = [...new Set([\n ...splitClassTokens(surfaceBaseClass),\n ...Object.values(variantClass).flatMap(splitClassTokens),\n ...Object.values(paddingClass).flatMap(splitClassTokens),\n ...splitClassTokens(ownHeaderPaddingClass),\n ...splitClassTokens(headerRowClass),\n ...splitClassTokens(headerActionsClass),\n ...splitClassTokens(sectionDividerTopClass),\n ...splitClassTokens(sectionDividerBottomClass),\n ...splitClassTokens(interactiveClass),\n ...splitClassTokens(hoverClass),\n ...splitClassTokens(cardTitleClass),\n ...splitClassTokens(cardDescriptionClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grCardSafelist } from './safelist'\n\nexport const grCardConfig = defineGranularComponent(import.meta.url, {\n name: 'GrCard',\n safelist: grCardSafelist,\n})\n"],"mappings":";;;;;;;;;;AAWA,IAAa,mBAAmB;AAEhC,IAAa,eAA8C;CAMzD,UAAU;CACV,UAAU;CAEV,OAAO;AACT;AAEA,IAAa,eAA8C;CACzD,MAAM;CACN,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;;;;AASA,IAAa,iBAAiB;AAC9B,IAAa,qBAAqB;AAElC,IAAa,yBAAyB;AACtC,IAAa,4BAA4B;;;;;;;;;;;AAYzC,IAAa,wBAAwB;AAYrC,IAAa,iBAAiB;AAE9B,IAAa,uBAAuB;;AAGpC,IAAa,mBAAmB;AAEhC,IAAa,aAAa;AAE1B,SAAgB,gBAAgB,SAMrB;CACT,OAAO;EACL;EACA,aAAa,QAAQ;EACrB,aAAa,QAAQ;EACrB,QAAQ,cAAc,mBAAmB;EACzC,QAAQ,eAAe,QAAQ,YAAY,aAAa;CAC1D,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;AAC5B;;;AC1EA,IAAa,iBAAiB,CAAC,mBAAG,IAAI,IAAI;CACxC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,OAAO,OAAO,YAAY,CAAC,CAAC,QAAQ,gBAAgB;CACvD,GAAG,OAAO,OAAO,YAAY,CAAC,CAAC,QAAQ,gBAAgB;CACvD,GAAG,iBAAiB,qBAAqB;CACzC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,kBAAkB;CACtC,GAAG,iBAAiB,sBAAsB;CAC1C,GAAG,iBAAiB,yBAAyB;CAC7C,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,UAAU;CAC9B,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,oBAAoB;AAC1C,CAAC,CAAC;;;ACzBF,IAAa,eAAe,wBAAwB,YAAY,KAAK;CACnE,MAAM;CACN,UAAU;AACZ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-DVCNvhIG.js","names":[],"sources":["../../src/components/GrPopover/safelist.ts","../../src/components/GrPopover/config.ts"],"sourcesContent":["import { flattenTransitionTokens, splitClassTokens } from '../shared/classTokens'\nimport { panelPopTransition } from '../shared/overlayTransition'\nimport { overlayOriginClassByPlacement } from '../shared/overlayOrigin'\nimport { panelSizes, panelSizesFlush, popoverPanelBaseClass } from './grPopoverStyles'\n\nexport const grPopoverSafelist = [...new Set([\n ...Object.values(panelSizes).flatMap(splitClassTokens),\n ...Object.values(panelSizesFlush).flatMap(splitClassTokens),\n ...Object.values(overlayOriginClassByPlacement).flatMap(splitClassTokens),\n // Базовый класс живёт литералом в `grPopoverStyles.ts`, а такой хелпер на\n // сборке уезжает в общий чанк, которого скан не видит (см. gotchas.md §2).\n ...splitClassTokens(popoverPanelBaseClass),\n // Обёртка триггера: две взаимоисключающие раскладки. Обе объявлены, потому\n // что в разметке они приезжают тернарником, а не отдельными литералами.\n ...splitClassTokens('inline-block max-w-full block w-full'),\n // Набор перехода панели общий на пять компонентов и живёт безадресным\n // модулем в `shared/`: в `dist` он лежит в общем чанке, который пресет не\n // сканирует, поэтому объявить его обязан каждый потребитель.\n ...flattenTransitionTokens(panelPopTransition),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grPopoverSafelist } from './safelist'\n\nexport const grPopoverConfig = defineGranularComponent(import.meta.url, {\n name: 'GrPopover',\n safelist: grPopoverSafelist,\n})\n"],"mappings":";;;;;AAKA,IAAa,oBAAoB,CAAC,mBAAG,IAAI,IAAI;CAC3C,GAAG,OAAO,OAAO,UAAU,CAAC,CAAC,QAAQ,gBAAgB;CACrD,GAAG,OAAO,OAAO,eAAe,CAAC,CAAC,QAAQ,gBAAgB;CAC1D,GAAG,OAAO,OAAO,6BAA6B,CAAC,CAAC,QAAQ,gBAAgB;CAGxE,GAAG,iBAAiB,qBAAqB;CAGzC,GAAG,iBAAiB,sCAAsC;CAI1D,GAAG,wBAAwB,kBAAkB;AAC/C,CAAC,CAAC;;;ACfF,IAAa,kBAAkB,wBAAwB,YAAY,KAAK;CACtE,MAAM;CACN,UAAU;AACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-DWL81-aM.js","names":[],"sources":["../../src/components/shared/tones.ts","../../src/components/GrProgressBar/safelist.ts","../../src/components/GrProgressBar/config.ts"],"sourcesContent":["/**\n * Единый перечень дизайн-тонов для всех компонентов библиотеки.\n *\n * Источник истины: список объявлен как `as const`-кортеж, из которого\n * автоматически выводится тип `GrTone`. Это позволяет использовать\n * `GR_TONES` в рантайме (валидация, итерация, safelist) и `GrTone`\n * в типах одновременно, без расхождений.\n */\nexport const GR_TONES = [\n 'primary',\n 'neutral',\n 'success',\n 'warning',\n 'danger',\n 'info',\n 'slate',\n 'azure',\n] as const\n\nexport type GrTone = typeof GR_TONES[number]\n","import { splitClassTokens } from '../shared/classTokens'\nimport { GR_TONES } from '../shared/tones'\nimport { bufferClass, grProgressBarFillClass, rowGaps, trackSizes, valueTextSizes } from './grStyle'\n\nconst fillTokens = GR_TONES.flatMap(tone => splitClassTokens(grProgressBarFillClass(tone)))\n\nexport const grProgressBarClassTokens = {\n fill: fillTokens,\n track: Object.values(trackSizes).flatMap(splitClassTokens),\n gap: Object.values(rowGaps).flatMap(splitClassTokens),\n value: Object.values(valueTextSizes).flatMap(splitClassTokens),\n buffer: splitClassTokens(bufferClass),\n} as const\n\nexport const grProgressBarSafelist = [...new Set([\n ...grProgressBarClassTokens.fill,\n ...grProgressBarClassTokens.track,\n ...grProgressBarClassTokens.gap,\n ...grProgressBarClassTokens.value,\n ...grProgressBarClassTokens.buffer,\n])] as const\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grProgressBarSafelist } from './safelist'\n\nexport const grProgressBarConfig = defineGranularComponent(import.meta.url, {\n name: 'GrProgressBar',\n safelist: grProgressBarSafelist,\n tokenDefinitionsRef: {\n light: { url: './themes/light.css', selector: ':root' },\n dark: { url: './themes/dark.css', as: '.dark, [data-theme=\"dark\"]' },\n },\n})\n"],"mappings":";;;;;;;;;;;;AAQA,IAAa,WAAW;CACtB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;ACXA,IAAa,2BAA2B;CACtC,MAHiB,SAAS,SAAQ,SAAQ,iBAAiB,uBAAuB,IAAI,CAAC,CAGjF;CACN,OAAO,OAAO,OAAO,UAAU,CAAC,CAAC,QAAQ,gBAAgB;CACzD,KAAK,OAAO,OAAO,OAAO,CAAC,CAAC,QAAQ,gBAAgB;CACpD,OAAO,OAAO,OAAO,cAAc,CAAC,CAAC,QAAQ,gBAAgB;CAC7D,QAAQ,iBAAiB,WAAW;AACtC;AAEA,IAAa,wBAAwB,CAAC,mBAAG,IAAI,IAAI;CAC/C,GAAG,yBAAyB;CAC5B,GAAG,yBAAyB;CAC5B,GAAG,yBAAyB;CAC5B,GAAG,yBAAyB;CAC5B,GAAG,yBAAyB;AAC9B,CAAC,CAAC;;;AChBF,IAAa,sBAAsB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"config-DWL81-aM.js","names":[],"sources":["../../src/components/shared/tones.ts","../../src/components/GrProgressBar/safelist.ts","../../src/components/GrProgressBar/config.ts"],"sourcesContent":["/**\n * Единый перечень дизайн-тонов для всех компонентов библиотеки.\n *\n * Источник истины: список объявлен как `as const`-кортеж, из которого\n * автоматически выводится тип `GrTone`. Это позволяет использовать\n * `GR_TONES` в рантайме (валидация, итерация, safelist) и `GrTone`\n * в типах одновременно, без расхождений.\n */\nexport const GR_TONES = [\n 'primary',\n 'neutral',\n 'success',\n 'warning',\n 'danger',\n 'info',\n 'slate',\n 'azure',\n] as const\n\nexport type GrTone = typeof GR_TONES[number]\n","import { splitClassTokens } from '../shared/classTokens'\nimport { GR_TONES } from '../shared/tones'\nimport { bufferClass, grProgressBarFillClass, rowGaps, trackSizes, valueTextSizes } from './grStyle'\n\nconst fillTokens = GR_TONES.flatMap(tone => splitClassTokens(grProgressBarFillClass(tone)))\n\nexport const grProgressBarClassTokens = {\n fill: fillTokens,\n track: Object.values(trackSizes).flatMap(splitClassTokens),\n gap: Object.values(rowGaps).flatMap(splitClassTokens),\n value: Object.values(valueTextSizes).flatMap(splitClassTokens),\n buffer: splitClassTokens(bufferClass),\n} as const\n\nexport const grProgressBarSafelist = [...new Set([\n ...grProgressBarClassTokens.fill,\n ...grProgressBarClassTokens.track,\n ...grProgressBarClassTokens.gap,\n ...grProgressBarClassTokens.value,\n ...grProgressBarClassTokens.buffer,\n])] as const\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grProgressBarSafelist } from './safelist'\n\nexport const grProgressBarConfig = defineGranularComponent(import.meta.url, {\n name: 'GrProgressBar',\n safelist: grProgressBarSafelist,\n tokenDefinitionsRef: {\n light: { url: './themes/light.css', selector: ':root' },\n dark: { url: './themes/dark.css', as: '.dark, [data-theme=\"dark\"]' },\n },\n})\n"],"mappings":";;;;;;;;;;;;AAQA,IAAa,WAAW;CACtB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;ACXA,IAAa,2BAA2B;CACtC,MAHiB,SAAS,SAAQ,SAAQ,iBAAiB,uBAAuB,IAAI,CAAC,CAGjF;CACN,OAAO,OAAO,OAAO,UAAU,CAAC,CAAC,QAAQ,gBAAgB;CACzD,KAAK,OAAO,OAAO,OAAO,CAAC,CAAC,QAAQ,gBAAgB;CACpD,OAAO,OAAO,OAAO,cAAc,CAAC,CAAC,QAAQ,gBAAgB;CAC7D,QAAQ,iBAAiB,WAAW;AACtC;AAEA,IAAa,wBAAwB,CAAC,mBAAG,IAAI,IAAI;CAC/C,GAAG,yBAAyB;CAC5B,GAAG,yBAAyB;CAC5B,GAAG,yBAAyB;CAC5B,GAAG,yBAAyB;CAC5B,GAAG,yBAAyB;AAC9B,CAAC,CAAC;;;AChBF,IAAa,sBAAsB,wBAAwB,YAAY,KAAK;CAC1E,MAAM;CACN,UAAU;CACV,qBAAqB;EACnB,OAAO;GAAE,KAAK;GAAsB,UAAU;EAAQ;EACtD,MAAM;GAAE,KAAK;GAAqB,IAAI;EAA6B;CACrE;AACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-DZCUPHPU.js","names":[],"sources":["../../src/components/GrCheckbox/safelist.ts","../../src/components/GrCheckbox/config.ts"],"sourcesContent":["import { splitClassTokens } from '../shared/classTokens'\n\nimport {\n controlBase,\n controlCheckedClass,\n controlDisabledCheckedClass,\n controlDisabledUncheckedClass,\n controlInvalidCheckedClass,\n controlInvalidUncheckedClass,\n controlSizes,\n controlUncheckedClass,\n iconCheckHiddenClass,\n iconCheckTransitionClass,\n iconCheckVisibleClass,\n iconColorClass,\n iconSizes,\n labelBase,\n labelSizes,\n rootBase,\n rootDisabledClass,\n rootEnabledClass,\n rootGaps,\n rootLabelStartClass,\n} from './grCheckboxStyles'\n\nexport const grCheckboxClassTokens = {\n rootBase: splitClassTokens(rootBase),\n rootGaps: Object.values(rootGaps).flatMap(splitClassTokens),\n rootState: [\n ...splitClassTokens(rootDisabledClass),\n ...splitClassTokens(rootEnabledClass),\n ...splitClassTokens(rootLabelStartClass),\n ],\n controlBase: splitClassTokens(controlBase),\n controlSizes: Object.values(controlSizes).flatMap(splitClassTokens),\n controlState: [\n ...splitClassTokens(controlCheckedClass),\n ...splitClassTokens(controlUncheckedClass),\n ...splitClassTokens(controlInvalidCheckedClass),\n ...splitClassTokens(controlInvalidUncheckedClass),\n ...splitClassTokens(controlDisabledCheckedClass),\n ...splitClassTokens(controlDisabledUncheckedClass),\n ],\n iconSizes: Object.values(iconSizes).flatMap(splitClassTokens),\n iconState: [\n ...splitClassTokens(iconColorClass),\n ...splitClassTokens(iconCheckTransitionClass),\n ...splitClassTokens(iconCheckVisibleClass),\n ...splitClassTokens(iconCheckHiddenClass),\n ],\n labelBase: splitClassTokens(labelBase),\n labelSizes: Object.values(labelSizes).flatMap(splitClassTokens),\n} as const\n\nexport const grCheckboxSafelist = [...new Set(Object.values(grCheckboxClassTokens).flat())]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grCheckboxSafelist } from './safelist'\n\nexport const grCheckboxConfig = defineGranularComponent(import.meta.url, {\n name: 'GrCheckbox',\n safelist: grCheckboxSafelist,\n})\n"],"mappings":";;;;AAyBA,IAAa,wBAAwB;CACnC,UAAU,iBAAiB,QAAQ;CACnC,UAAU,OAAO,OAAO,QAAQ,CAAC,CAAC,QAAQ,gBAAgB;CAC1D,WAAW;EACT,GAAG,iBAAiB,iBAAiB;EACrC,GAAG,iBAAiB,gBAAgB;EACpC,GAAG,iBAAiB,mBAAmB;CACzC;CACA,aAAa,iBAAiB,WAAW;CACzC,cAAc,OAAO,OAAO,YAAY,CAAC,CAAC,QAAQ,gBAAgB;CAClE,cAAc;EACZ,GAAG,iBAAiB,mBAAmB;EACvC,GAAG,iBAAiB,qBAAqB;EACzC,GAAG,iBAAiB,0BAA0B;EAC9C,GAAG,iBAAiB,4BAA4B;EAChD,GAAG,iBAAiB,2BAA2B;EAC/C,GAAG,iBAAiB,6BAA6B;CACnD;CACA,WAAW,OAAO,OAAO,SAAS,CAAC,CAAC,QAAQ,gBAAgB;CAC5D,WAAW;EACT,GAAG,iBAAiB,cAAc;EAClC,GAAG,iBAAiB,wBAAwB;EAC5C,GAAG,iBAAiB,qBAAqB;EACzC,GAAG,iBAAiB,oBAAoB;CAC1C;CACA,WAAW,iBAAiB,SAAS;CACrC,YAAY,OAAO,OAAO,UAAU,CAAC,CAAC,QAAQ,gBAAgB;AAChE;AAEA,IAAa,qBAAqB,CAAC,GAAG,IAAI,IAAI,OAAO,OAAO,qBAAqB,CAAC,CAAC,KAAK,CAAC,CAAC;;;AClD1F,IAAa,mBAAmB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"config-DZCUPHPU.js","names":[],"sources":["../../src/components/GrCheckbox/safelist.ts","../../src/components/GrCheckbox/config.ts"],"sourcesContent":["import { splitClassTokens } from '../shared/classTokens'\n\nimport {\n controlBase,\n controlCheckedClass,\n controlDisabledCheckedClass,\n controlDisabledUncheckedClass,\n controlInvalidCheckedClass,\n controlInvalidUncheckedClass,\n controlSizes,\n controlUncheckedClass,\n iconCheckHiddenClass,\n iconCheckTransitionClass,\n iconCheckVisibleClass,\n iconColorClass,\n iconSizes,\n labelBase,\n labelSizes,\n rootBase,\n rootDisabledClass,\n rootEnabledClass,\n rootGaps,\n rootLabelStartClass,\n} from './grCheckboxStyles'\n\nexport const grCheckboxClassTokens = {\n rootBase: splitClassTokens(rootBase),\n rootGaps: Object.values(rootGaps).flatMap(splitClassTokens),\n rootState: [\n ...splitClassTokens(rootDisabledClass),\n ...splitClassTokens(rootEnabledClass),\n ...splitClassTokens(rootLabelStartClass),\n ],\n controlBase: splitClassTokens(controlBase),\n controlSizes: Object.values(controlSizes).flatMap(splitClassTokens),\n controlState: [\n ...splitClassTokens(controlCheckedClass),\n ...splitClassTokens(controlUncheckedClass),\n ...splitClassTokens(controlInvalidCheckedClass),\n ...splitClassTokens(controlInvalidUncheckedClass),\n ...splitClassTokens(controlDisabledCheckedClass),\n ...splitClassTokens(controlDisabledUncheckedClass),\n ],\n iconSizes: Object.values(iconSizes).flatMap(splitClassTokens),\n iconState: [\n ...splitClassTokens(iconColorClass),\n ...splitClassTokens(iconCheckTransitionClass),\n ...splitClassTokens(iconCheckVisibleClass),\n ...splitClassTokens(iconCheckHiddenClass),\n ],\n labelBase: splitClassTokens(labelBase),\n labelSizes: Object.values(labelSizes).flatMap(splitClassTokens),\n} as const\n\nexport const grCheckboxSafelist = [...new Set(Object.values(grCheckboxClassTokens).flat())]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grCheckboxSafelist } from './safelist'\n\nexport const grCheckboxConfig = defineGranularComponent(import.meta.url, {\n name: 'GrCheckbox',\n safelist: grCheckboxSafelist,\n})\n"],"mappings":";;;;AAyBA,IAAa,wBAAwB;CACnC,UAAU,iBAAiB,QAAQ;CACnC,UAAU,OAAO,OAAO,QAAQ,CAAC,CAAC,QAAQ,gBAAgB;CAC1D,WAAW;EACT,GAAG,iBAAiB,iBAAiB;EACrC,GAAG,iBAAiB,gBAAgB;EACpC,GAAG,iBAAiB,mBAAmB;CACzC;CACA,aAAa,iBAAiB,WAAW;CACzC,cAAc,OAAO,OAAO,YAAY,CAAC,CAAC,QAAQ,gBAAgB;CAClE,cAAc;EACZ,GAAG,iBAAiB,mBAAmB;EACvC,GAAG,iBAAiB,qBAAqB;EACzC,GAAG,iBAAiB,0BAA0B;EAC9C,GAAG,iBAAiB,4BAA4B;EAChD,GAAG,iBAAiB,2BAA2B;EAC/C,GAAG,iBAAiB,6BAA6B;CACnD;CACA,WAAW,OAAO,OAAO,SAAS,CAAC,CAAC,QAAQ,gBAAgB;CAC5D,WAAW;EACT,GAAG,iBAAiB,cAAc;EAClC,GAAG,iBAAiB,wBAAwB;EAC5C,GAAG,iBAAiB,qBAAqB;EACzC,GAAG,iBAAiB,oBAAoB;CAC1C;CACA,WAAW,iBAAiB,SAAS;CACrC,YAAY,OAAO,OAAO,UAAU,CAAC,CAAC,QAAQ,gBAAgB;AAChE;AAEA,IAAa,qBAAqB,CAAC,GAAG,IAAI,IAAI,OAAO,OAAO,qBAAqB,CAAC,CAAC,KAAK,CAAC,CAAC;;;AClD1F,IAAa,mBAAmB,wBAAwB,YAAY,KAAK;CACvE,MAAM;CACN,UAAU;AACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-DeyT9dJl.js","names":[],"sources":["../../src/components/GrDataTable/grDataTableStyles.ts","../../src/components/GrDataTable/safelist.ts","../../src/components/GrDataTable/config.ts"],"sourcesContent":["import type { GrCheckboxSize } from '../GrCheckbox/grCheckboxStyles'\nimport type { GrComponentSize } from '../shared/sizes'\n\nexport type GrDataTableSize = GrComponentSize\n\n/** Паддинг ячейки — и в шапке, и в теле: колонки обязаны совпадать по сетке. */\nexport const cellPaddings: Record<GrDataTableSize, string> = {\n xs: 'px-2 py-1.5',\n sm: 'px-3 py-2',\n md: 'px-4 py-3',\n lg: 'px-5 py-4',\n}\n\n/**\n * Оценка высоты строки по размеру: два вертикальных отступа ячейки плюс строка\n * текста и рамка. Виртуализация уточняет её замером — точное число здесь знать\n * неоткуда, содержимое ячейки задаёт потребитель.\n */\nexport const rowHeightEstimates: Record<GrDataTableSize, number> = {\n xs: 33,\n sm: 41,\n md: 49,\n lg: 57,\n}\n\n/** Заглушки loading/empty: по горизонтали как ячейка, по вертикали просторнее. */\nexport const placeholderPaddings: Record<GrDataTableSize, string> = {\n xs: 'px-2 py-3',\n sm: 'px-3 py-4',\n md: 'px-4 py-6',\n lg: 'px-5 py-8',\n}\n\n/**\n * Ручка перестановки колонки. Появляется по наведению на заголовок и по\n * фокусу: постоянная сетка ручек в шапке из десяти колонок читается как рябь,\n * а не как управление.\n */\nexport const columnHandleClass = 'inline-flex shrink-0 cursor-grab items-center text-[var(--gr-datatable-drag-handle,var(--gr-muted-fg))] opacity-0 [touch-action:none] transition-opacity duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:opacity-100 focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] rounded-[var(--gr-radius-sm)] group-hover:opacity-100'\n\nexport const columnHandleActiveClass = 'opacity-100'\n\n/** Переносимая колонка гасится, чтобы было видно, что она «поднята». */\nexport const columnDraggingClass = 'bg-[var(--gr-muted)]'\n\n/**\n * Место вставки — полоса по краю ячейки заголовка. Псевдоэлемент, а не свой\n * узел: `<th>` не терпит посторонних детей в раскладке таблицы.\n */\nexport const columnDropBeforeClass = 'before:absolute before:inset-y-0 before:left-0 before:w-[var(--gr-datatable-drag-indicator-width,2px)] before:bg-[var(--gr-datatable-drag-indicator,var(--gr-primary))] before:content-empty'\n\nexport const columnDropAfterClass = 'after:absolute after:inset-y-0 after:right-0 after:w-[var(--gr-datatable-drag-indicator-width,2px)] after:bg-[var(--gr-datatable-drag-indicator,var(--gr-primary))] after:content-empty'\n\n/**\n * Подсветка выбранной строки. Живёт здесь, потому что закреплённой ячейке её\n * приходится повторять: у ячейки свой непрозрачный фон, и подсветка строки\n * сквозь него не видна.\n */\nexport const rowSelectedClass = 'bg-[color-mix(in_srgb,var(--gr-primary)_8%,transparent)]'\n\n/**\n * Итоговая строка. Отбивка та же, что между строками тела, плюс вес: итог —\n * вывод из набора, а не ещё одна его запись, и читатель должен видеть это до\n * того, как разберёт цифры. Тон оставлен потребителю: «возвраты» и «прибыль» —\n * разные сообщения, и выбирать за него компонент не должен.\n */\nexport const summaryRowClass = 'border-t border-[var(--gr-brd)] font-600'\n\n/**\n * Ручка ширины — полоса у правого края заголовка. Видима она узкой линией, а\n * ловится широкой зоной: попасть в двухпиксельную границу мышью тяжело.\n */\nexport const columnResizerClass = 'absolute inset-y-0 right-0 z-[1] flex w-3 translate-x-1/2 cursor-col-resize items-stretch justify-center [touch-action:none] focus:outline-none'\n\nexport const columnResizerLineClass = 'w-[var(--gr-datatable-resizer-width,2px)] bg-transparent transition-colors duration-[var(--gr-duration-fast)]'\n\n/** Полоса подсвечивается только когда её ведут или на неё встал фокус. */\nexport const columnResizerLineActiveClass = 'bg-[var(--gr-datatable-resizer,var(--gr-primary))]'\n\nexport const columnResizerHoverClass = 'hover:bg-[var(--gr-datatable-resizer,var(--gr-primary))] focus-visible:bg-[var(--gr-datatable-resizer,var(--gr-primary))]'\n\n/**\n * Закреплённая колонка липнет к краю прокрутки. Фон обязателен: без него\n * уезжающие под неё ячейки просвечивают насквозь.\n */\nexport const columnPinnedClass = 'sticky z-[2] bg-[var(--gr-card)]'\n\n/** Граница группы закреплённых колонок — тень, а не рамка: рамка сдвигает сетку. */\nexport const columnPinnedLeftEdgeClass = 'shadow-[var(--gr-datatable-pinned-shadow,4px_0_6px_-4px_rgba(0,0,0,0.25))]'\n\nexport const columnPinnedRightEdgeClass = 'shadow-[var(--gr-datatable-pinned-shadow-end,-4px_0_6px_-4px_rgba(0,0,0,0.25))]'\n\n/** Подпись колонки набирается мельче тела таблицы — она не данные, а навигация. */\nexport const headerTextSizes: Record<GrDataTableSize, string> = {\n xs: 'text-[length:var(--gr-control-text-3xs)] leading-[var(--gr-control-leading-3xs)]',\n sm: 'text-[length:var(--gr-control-text-2xs)] leading-[var(--gr-control-leading-2xs)]',\n md: 'text-[length:var(--gr-control-text-xs)] leading-[var(--gr-leading-xs)]',\n lg: 'text-[length:var(--gr-control-text-md)] leading-[var(--gr-leading-sm)]',\n}\n\n/**\n * Размер `GrCheckbox` в колонке выбора. Здесь не классы, а ступень шкалы:\n * коробку рисует сам чекбокс — он же держит `indeterminate`, disabled без\n * `opacity` и фокус-кольцо.\n */\nexport const selectCheckboxSizes: Record<GrDataTableSize, GrCheckboxSize> = {\n xs: 'xs',\n sm: 'sm',\n md: 'md',\n lg: 'lg',\n}\n\n/** Ширина колонки выбора: коробка чекбокса плюс горизонтальный паддинг ячейки. */\nexport const selectColumnWidths: Record<GrDataTableSize, string> = {\n xs: 'w-7',\n sm: 'w-8',\n md: 'w-10',\n lg: 'w-12',\n}\n\n/** Зазор между подписью колонки и стрелкой сортировки. */\nexport const headerGaps: Record<GrDataTableSize, string> = {\n xs: 'gap-1',\n sm: 'gap-1.5',\n md: 'gap-2',\n lg: 'gap-2',\n}\n\n/** Спиннер в строке загрузки — тем же кеглем, что иконка сортировки рядом. */\nexport const spinnerSizes: Record<GrDataTableSize, string> = {\n xs: 'h-3 w-3',\n sm: 'h-3.5 w-3.5',\n md: 'h-4 w-4',\n lg: 'h-5 w-5',\n}\n\n/** Стрелка сортировки берёт размер из шкалы `GrIcon` (`xs…lg` → `14…20px`). */\nexport const sortIconSizes: Record<GrDataTableSize, GrComponentSize> = {\n xs: 'xs',\n sm: 'xs',\n md: 'sm',\n lg: 'md',\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n cellPaddings,\n columnDraggingClass,\n columnDropAfterClass,\n columnDropBeforeClass,\n columnHandleActiveClass,\n columnHandleClass,\n columnPinnedClass,\n columnPinnedLeftEdgeClass,\n columnPinnedRightEdgeClass,\n columnResizerClass,\n columnResizerHoverClass,\n columnResizerLineActiveClass,\n columnResizerLineClass,\n headerGaps,\n headerTextSizes,\n placeholderPaddings,\n rowSelectedClass,\n selectColumnWidths,\n spinnerSizes,\n summaryRowClass,\n} from './grDataTableStyles'\n\nexport const grDataTableSafelist = [...new Set([\n ...Object.values(cellPaddings).flatMap(splitClassTokens),\n ...Object.values(placeholderPaddings).flatMap(splitClassTokens),\n ...Object.values(headerTextSizes).flatMap(splitClassTokens),\n ...Object.values(selectColumnWidths).flatMap(splitClassTokens),\n ...Object.values(headerGaps).flatMap(splitClassTokens),\n ...Object.values(spinnerSizes).flatMap(splitClassTokens),\n ...splitClassTokens(columnHandleClass),\n ...splitClassTokens(columnHandleActiveClass),\n ...splitClassTokens(columnDraggingClass),\n ...splitClassTokens(columnDropBeforeClass),\n ...splitClassTokens(columnDropAfterClass),\n ...splitClassTokens(columnResizerClass),\n ...splitClassTokens(columnResizerLineClass),\n ...splitClassTokens(columnResizerLineActiveClass),\n ...splitClassTokens(columnResizerHoverClass),\n ...splitClassTokens(columnPinnedClass),\n ...splitClassTokens(columnPinnedLeftEdgeClass),\n ...splitClassTokens(columnPinnedRightEdgeClass),\n ...splitClassTokens(rowSelectedClass),\n ...splitClassTokens(summaryRowClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grDataTableSafelist } from './safelist'\n\nexport const grDataTableConfig = defineGranularComponent(import.meta.url, {\n name: 'GrDataTable',\n dependencies: ['GrTable', 'GrIcon', 'GrCheckbox'],\n safelist: grDataTableSafelist,\n})\n"],"mappings":";;;;AAMA,IAAa,eAAgD;CAC3D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;;AAOA,IAAa,qBAAsD;CACjE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,sBAAuD;CAClE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;;AAOA,IAAa,oBAAoB;AAEjC,IAAa,0BAA0B;;AAGvC,IAAa,sBAAsB;;;;;AAMnC,IAAa,wBAAwB;AAErC,IAAa,uBAAuB;;;;;;AAOpC,IAAa,mBAAmB;;;;;;;AAQhC,IAAa,kBAAkB;;;;;AAM/B,IAAa,qBAAqB;AAElC,IAAa,yBAAyB;;AAGtC,IAAa,+BAA+B;AAE5C,IAAa,0BAA0B;;;;;AAMvC,IAAa,oBAAoB;;AAGjC,IAAa,4BAA4B;AAEzC,IAAa,6BAA6B;;AAG1C,IAAa,kBAAmD;CAC9D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;;AAOA,IAAa,sBAA+D;CAC1E,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,qBAAsD;CACjE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,aAA8C;CACzD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,eAAgD;CAC3D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,gBAA0D;CACrE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;ACtHA,IAAa,sBAAsB,CAAC,mBAAG,IAAI,IAAI;CAC7C,GAAG,OAAO,OAAO,YAAY,CAAC,CAAC,QAAQ,gBAAgB;CACvD,GAAG,OAAO,OAAO,mBAAmB,CAAC,CAAC,QAAQ,gBAAgB;CAC9D,GAAG,OAAO,OAAO,eAAe,CAAC,CAAC,QAAQ,gBAAgB;CAC1D,GAAG,OAAO,OAAO,kBAAkB,CAAC,CAAC,QAAQ,gBAAgB;CAC7D,GAAG,OAAO,OAAO,UAAU,CAAC,CAAC,QAAQ,gBAAgB;CACrD,GAAG,OAAO,OAAO,YAAY,CAAC,CAAC,QAAQ,gBAAgB;CACvD,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,uBAAuB;CAC3C,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,qBAAqB;CACzC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,kBAAkB;CACtC,GAAG,iBAAiB,sBAAsB;CAC1C,GAAG,iBAAiB,4BAA4B;CAChD,GAAG,iBAAiB,uBAAuB;CAC3C,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,yBAAyB;CAC7C,GAAG,iBAAiB,0BAA0B;CAC9C,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,eAAe;AACrC,CAAC,CAAC;;;ACzCF,IAAa,oBAAoB,wBAAwB,OAAO,KAAK,KAAK;CACxE,MAAM;CACN,cAAc;EAAC;EAAW;EAAU;CAAY;CAChD,UAAU;AACZ,CAAC"}
|
|
1
|
+
{"version":3,"file":"config-DeyT9dJl.js","names":[],"sources":["../../src/components/GrDataTable/grDataTableStyles.ts","../../src/components/GrDataTable/safelist.ts","../../src/components/GrDataTable/config.ts"],"sourcesContent":["import type { GrCheckboxSize } from '../GrCheckbox/grCheckboxStyles'\nimport type { GrComponentSize } from '../shared/sizes'\n\nexport type GrDataTableSize = GrComponentSize\n\n/** Паддинг ячейки — и в шапке, и в теле: колонки обязаны совпадать по сетке. */\nexport const cellPaddings: Record<GrDataTableSize, string> = {\n xs: 'px-2 py-1.5',\n sm: 'px-3 py-2',\n md: 'px-4 py-3',\n lg: 'px-5 py-4',\n}\n\n/**\n * Оценка высоты строки по размеру: два вертикальных отступа ячейки плюс строка\n * текста и рамка. Виртуализация уточняет её замером — точное число здесь знать\n * неоткуда, содержимое ячейки задаёт потребитель.\n */\nexport const rowHeightEstimates: Record<GrDataTableSize, number> = {\n xs: 33,\n sm: 41,\n md: 49,\n lg: 57,\n}\n\n/** Заглушки loading/empty: по горизонтали как ячейка, по вертикали просторнее. */\nexport const placeholderPaddings: Record<GrDataTableSize, string> = {\n xs: 'px-2 py-3',\n sm: 'px-3 py-4',\n md: 'px-4 py-6',\n lg: 'px-5 py-8',\n}\n\n/**\n * Ручка перестановки колонки. Появляется по наведению на заголовок и по\n * фокусу: постоянная сетка ручек в шапке из десяти колонок читается как рябь,\n * а не как управление.\n */\nexport const columnHandleClass = 'inline-flex shrink-0 cursor-grab items-center text-[var(--gr-datatable-drag-handle,var(--gr-muted-fg))] opacity-0 [touch-action:none] transition-opacity duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:opacity-100 focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] rounded-[var(--gr-radius-sm)] group-hover:opacity-100'\n\nexport const columnHandleActiveClass = 'opacity-100'\n\n/** Переносимая колонка гасится, чтобы было видно, что она «поднята». */\nexport const columnDraggingClass = 'bg-[var(--gr-muted)]'\n\n/**\n * Место вставки — полоса по краю ячейки заголовка. Псевдоэлемент, а не свой\n * узел: `<th>` не терпит посторонних детей в раскладке таблицы.\n */\nexport const columnDropBeforeClass = 'before:absolute before:inset-y-0 before:left-0 before:w-[var(--gr-datatable-drag-indicator-width,2px)] before:bg-[var(--gr-datatable-drag-indicator,var(--gr-primary))] before:content-empty'\n\nexport const columnDropAfterClass = 'after:absolute after:inset-y-0 after:right-0 after:w-[var(--gr-datatable-drag-indicator-width,2px)] after:bg-[var(--gr-datatable-drag-indicator,var(--gr-primary))] after:content-empty'\n\n/**\n * Подсветка выбранной строки. Живёт здесь, потому что закреплённой ячейке её\n * приходится повторять: у ячейки свой непрозрачный фон, и подсветка строки\n * сквозь него не видна.\n */\nexport const rowSelectedClass = 'bg-[color-mix(in_srgb,var(--gr-primary)_8%,transparent)]'\n\n/**\n * Итоговая строка. Отбивка та же, что между строками тела, плюс вес: итог —\n * вывод из набора, а не ещё одна его запись, и читатель должен видеть это до\n * того, как разберёт цифры. Тон оставлен потребителю: «возвраты» и «прибыль» —\n * разные сообщения, и выбирать за него компонент не должен.\n */\nexport const summaryRowClass = 'border-t border-[var(--gr-brd)] font-600'\n\n/**\n * Ручка ширины — полоса у правого края заголовка. Видима она узкой линией, а\n * ловится широкой зоной: попасть в двухпиксельную границу мышью тяжело.\n */\nexport const columnResizerClass = 'absolute inset-y-0 right-0 z-[1] flex w-3 translate-x-1/2 cursor-col-resize items-stretch justify-center [touch-action:none] focus:outline-none'\n\nexport const columnResizerLineClass = 'w-[var(--gr-datatable-resizer-width,2px)] bg-transparent transition-colors duration-[var(--gr-duration-fast)]'\n\n/** Полоса подсвечивается только когда её ведут или на неё встал фокус. */\nexport const columnResizerLineActiveClass = 'bg-[var(--gr-datatable-resizer,var(--gr-primary))]'\n\nexport const columnResizerHoverClass = 'hover:bg-[var(--gr-datatable-resizer,var(--gr-primary))] focus-visible:bg-[var(--gr-datatable-resizer,var(--gr-primary))]'\n\n/**\n * Закреплённая колонка липнет к краю прокрутки. Фон обязателен: без него\n * уезжающие под неё ячейки просвечивают насквозь.\n */\nexport const columnPinnedClass = 'sticky z-[2] bg-[var(--gr-card)]'\n\n/** Граница группы закреплённых колонок — тень, а не рамка: рамка сдвигает сетку. */\nexport const columnPinnedLeftEdgeClass = 'shadow-[var(--gr-datatable-pinned-shadow,4px_0_6px_-4px_rgba(0,0,0,0.25))]'\n\nexport const columnPinnedRightEdgeClass = 'shadow-[var(--gr-datatable-pinned-shadow-end,-4px_0_6px_-4px_rgba(0,0,0,0.25))]'\n\n/** Подпись колонки набирается мельче тела таблицы — она не данные, а навигация. */\nexport const headerTextSizes: Record<GrDataTableSize, string> = {\n xs: 'text-[length:var(--gr-control-text-3xs)] leading-[var(--gr-control-leading-3xs)]',\n sm: 'text-[length:var(--gr-control-text-2xs)] leading-[var(--gr-control-leading-2xs)]',\n md: 'text-[length:var(--gr-control-text-xs)] leading-[var(--gr-leading-xs)]',\n lg: 'text-[length:var(--gr-control-text-md)] leading-[var(--gr-leading-sm)]',\n}\n\n/**\n * Размер `GrCheckbox` в колонке выбора. Здесь не классы, а ступень шкалы:\n * коробку рисует сам чекбокс — он же держит `indeterminate`, disabled без\n * `opacity` и фокус-кольцо.\n */\nexport const selectCheckboxSizes: Record<GrDataTableSize, GrCheckboxSize> = {\n xs: 'xs',\n sm: 'sm',\n md: 'md',\n lg: 'lg',\n}\n\n/** Ширина колонки выбора: коробка чекбокса плюс горизонтальный паддинг ячейки. */\nexport const selectColumnWidths: Record<GrDataTableSize, string> = {\n xs: 'w-7',\n sm: 'w-8',\n md: 'w-10',\n lg: 'w-12',\n}\n\n/** Зазор между подписью колонки и стрелкой сортировки. */\nexport const headerGaps: Record<GrDataTableSize, string> = {\n xs: 'gap-1',\n sm: 'gap-1.5',\n md: 'gap-2',\n lg: 'gap-2',\n}\n\n/** Спиннер в строке загрузки — тем же кеглем, что иконка сортировки рядом. */\nexport const spinnerSizes: Record<GrDataTableSize, string> = {\n xs: 'h-3 w-3',\n sm: 'h-3.5 w-3.5',\n md: 'h-4 w-4',\n lg: 'h-5 w-5',\n}\n\n/** Стрелка сортировки берёт размер из шкалы `GrIcon` (`xs…lg` → `14…20px`). */\nexport const sortIconSizes: Record<GrDataTableSize, GrComponentSize> = {\n xs: 'xs',\n sm: 'xs',\n md: 'sm',\n lg: 'md',\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n cellPaddings,\n columnDraggingClass,\n columnDropAfterClass,\n columnDropBeforeClass,\n columnHandleActiveClass,\n columnHandleClass,\n columnPinnedClass,\n columnPinnedLeftEdgeClass,\n columnPinnedRightEdgeClass,\n columnResizerClass,\n columnResizerHoverClass,\n columnResizerLineActiveClass,\n columnResizerLineClass,\n headerGaps,\n headerTextSizes,\n placeholderPaddings,\n rowSelectedClass,\n selectColumnWidths,\n spinnerSizes,\n summaryRowClass,\n} from './grDataTableStyles'\n\nexport const grDataTableSafelist = [...new Set([\n ...Object.values(cellPaddings).flatMap(splitClassTokens),\n ...Object.values(placeholderPaddings).flatMap(splitClassTokens),\n ...Object.values(headerTextSizes).flatMap(splitClassTokens),\n ...Object.values(selectColumnWidths).flatMap(splitClassTokens),\n ...Object.values(headerGaps).flatMap(splitClassTokens),\n ...Object.values(spinnerSizes).flatMap(splitClassTokens),\n ...splitClassTokens(columnHandleClass),\n ...splitClassTokens(columnHandleActiveClass),\n ...splitClassTokens(columnDraggingClass),\n ...splitClassTokens(columnDropBeforeClass),\n ...splitClassTokens(columnDropAfterClass),\n ...splitClassTokens(columnResizerClass),\n ...splitClassTokens(columnResizerLineClass),\n ...splitClassTokens(columnResizerLineActiveClass),\n ...splitClassTokens(columnResizerHoverClass),\n ...splitClassTokens(columnPinnedClass),\n ...splitClassTokens(columnPinnedLeftEdgeClass),\n ...splitClassTokens(columnPinnedRightEdgeClass),\n ...splitClassTokens(rowSelectedClass),\n ...splitClassTokens(summaryRowClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grDataTableSafelist } from './safelist'\n\nexport const grDataTableConfig = defineGranularComponent(import.meta.url, {\n name: 'GrDataTable',\n dependencies: ['GrTable', 'GrIcon', 'GrCheckbox'],\n safelist: grDataTableSafelist,\n})\n"],"mappings":";;;;AAMA,IAAa,eAAgD;CAC3D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;;AAOA,IAAa,qBAAsD;CACjE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,sBAAuD;CAClE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;;AAOA,IAAa,oBAAoB;AAEjC,IAAa,0BAA0B;;AAGvC,IAAa,sBAAsB;;;;;AAMnC,IAAa,wBAAwB;AAErC,IAAa,uBAAuB;;;;;;AAOpC,IAAa,mBAAmB;;;;;;;AAQhC,IAAa,kBAAkB;;;;;AAM/B,IAAa,qBAAqB;AAElC,IAAa,yBAAyB;;AAGtC,IAAa,+BAA+B;AAE5C,IAAa,0BAA0B;;;;;AAMvC,IAAa,oBAAoB;;AAGjC,IAAa,4BAA4B;AAEzC,IAAa,6BAA6B;;AAG1C,IAAa,kBAAmD;CAC9D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;;AAOA,IAAa,sBAA+D;CAC1E,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,qBAAsD;CACjE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,aAA8C;CACzD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,eAAgD;CAC3D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,gBAA0D;CACrE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;ACtHA,IAAa,sBAAsB,CAAC,mBAAG,IAAI,IAAI;CAC7C,GAAG,OAAO,OAAO,YAAY,CAAC,CAAC,QAAQ,gBAAgB;CACvD,GAAG,OAAO,OAAO,mBAAmB,CAAC,CAAC,QAAQ,gBAAgB;CAC9D,GAAG,OAAO,OAAO,eAAe,CAAC,CAAC,QAAQ,gBAAgB;CAC1D,GAAG,OAAO,OAAO,kBAAkB,CAAC,CAAC,QAAQ,gBAAgB;CAC7D,GAAG,OAAO,OAAO,UAAU,CAAC,CAAC,QAAQ,gBAAgB;CACrD,GAAG,OAAO,OAAO,YAAY,CAAC,CAAC,QAAQ,gBAAgB;CACvD,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,uBAAuB;CAC3C,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,qBAAqB;CACzC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,kBAAkB;CACtC,GAAG,iBAAiB,sBAAsB;CAC1C,GAAG,iBAAiB,4BAA4B;CAChD,GAAG,iBAAiB,uBAAuB;CAC3C,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,yBAAyB;CAC7C,GAAG,iBAAiB,0BAA0B;CAC9C,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,eAAe;AACrC,CAAC,CAAC;;;ACzCF,IAAa,oBAAoB,wBAAwB,YAAY,KAAK;CACxE,MAAM;CACN,cAAc;EAAC;EAAW;EAAU;CAAY;CAChD,UAAU;AACZ,CAAC"}
|