@feugene/granularity 0.48.0 → 0.50.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/chunks/chevron-up-BhW6hi8L.js +23 -0
- package/dist/chunks/chevron-up-BhW6hi8L.js.map +1 -0
- package/dist/chunks/{config-E1cTyRVV.js → config-8n1VR0ju.js} +1 -1
- package/dist/chunks/{config-E1cTyRVV.js.map → config-8n1VR0ju.js.map} +1 -1
- package/dist/chunks/{config-2vrOFn2f.js → config-AKpLyIGD.js} +2 -2
- package/dist/chunks/{config-2vrOFn2f.js.map → config-AKpLyIGD.js.map} +1 -1
- package/dist/chunks/{config-DIDz_E5m.js → config-B34mkd53.js} +66 -1
- package/dist/chunks/config-B34mkd53.js.map +1 -0
- package/dist/chunks/{config-B5SBUa6u.js → config-B7qZqiUB.js} +28 -1
- package/dist/chunks/config-B7qZqiUB.js.map +1 -0
- package/dist/chunks/config-BBrPUEye.js +8 -0
- package/dist/chunks/config-BBrPUEye.js.map +1 -0
- package/dist/chunks/config-BBtBQE3s.js +108 -0
- package/dist/chunks/config-BBtBQE3s.js.map +1 -0
- package/dist/chunks/{config-CT4lP6S4.js → config-BOCzHqWh.js} +2 -2
- package/dist/chunks/{config-CT4lP6S4.js.map → config-BOCzHqWh.js.map} +1 -1
- package/dist/chunks/{config-iemgzS4x.js → config-BP1ktzwh.js} +2 -24
- package/dist/chunks/config-BP1ktzwh.js.map +1 -0
- package/dist/chunks/config-BTxmdRzT.js +28 -0
- package/dist/chunks/config-BTxmdRzT.js.map +1 -0
- package/dist/chunks/{config-CjWOTgLL.js → config-Bk52xd5l.js} +12 -5
- package/dist/chunks/config-Bk52xd5l.js.map +1 -0
- package/dist/chunks/{config-D3HOuHDe.js → config-C3SqBqSQ.js} +3 -1
- package/dist/chunks/config-C3SqBqSQ.js.map +1 -0
- package/dist/chunks/{config-2ZHRsdOc.js → config-C3uqd-sW.js} +1 -1
- package/dist/chunks/config-C3uqd-sW.js.map +1 -0
- package/dist/chunks/{config-BXRmsn3t.js → config-CPhcZzHi.js} +72 -10
- package/dist/chunks/config-CPhcZzHi.js.map +1 -0
- package/dist/chunks/config-CWtfxkM9.js.map +1 -1
- package/dist/chunks/{config--t2dxj0t.js → config-CmLTCmY9.js} +2 -2
- package/dist/chunks/{config--t2dxj0t.js.map → config-CmLTCmY9.js.map} +1 -1
- package/dist/chunks/{config-BAse0laT.js → config-CvtqB4ki.js} +8 -3
- package/dist/chunks/config-CvtqB4ki.js.map +1 -0
- package/dist/chunks/{config-BcXX7S7B.js → config-D-JgqV0J.js} +5 -1
- package/dist/chunks/{config-BcXX7S7B.js.map → config-D-JgqV0J.js.map} +1 -1
- package/dist/chunks/{config-BHLMTJaR.js → config-D1oVht-E.js} +8 -3
- package/dist/chunks/config-D1oVht-E.js.map +1 -0
- package/dist/chunks/{config-BscVxZR3.js → config-DF1ezU6y.js} +1 -1
- package/dist/chunks/{config-BscVxZR3.js.map → config-DF1ezU6y.js.map} +1 -1
- package/dist/chunks/{config-B42iJ48O.js → config-DG41PD9i.js} +13 -1
- package/dist/chunks/config-DG41PD9i.js.map +1 -0
- package/dist/chunks/{config-Bs1HwUcx.js → config-DPJ3jtiB.js} +12 -2
- package/dist/chunks/config-DPJ3jtiB.js.map +1 -0
- package/dist/chunks/{config-tNqtapcT.js → config-DpqjlCfB.js} +2 -2
- package/dist/chunks/{config-tNqtapcT.js.map → config-DpqjlCfB.js.map} +1 -1
- package/dist/chunks/{config-DNDgp9bB.js → config-DpzFoSIh.js} +64 -2
- package/dist/chunks/config-DpzFoSIh.js.map +1 -0
- package/dist/chunks/config-MUkhktTP.js +267 -0
- package/dist/chunks/config-MUkhktTP.js.map +1 -0
- package/dist/chunks/config-SPugeaHT.js +37 -0
- package/dist/chunks/config-SPugeaHT.js.map +1 -0
- package/dist/chunks/{en-Bxyn5lW7.js → en-mIFywnV2.js} +27 -7
- package/dist/chunks/en-mIFywnV2.js.map +1 -0
- package/dist/chunks/{es-Dtl-a7ui.js → es-CvthYwtB.js} +27 -7
- package/dist/chunks/es-CvthYwtB.js.map +1 -0
- package/dist/chunks/{es-Bj_vc18Z.js → es-DlGd6Mrj.js} +3 -3
- package/dist/chunks/{es-Bj_vc18Z.js.map → es-DlGd6Mrj.js.map} +1 -1
- package/dist/chunks/{generated-hELWB0gZ.js → generated-Cx4C7GRN.js} +126 -0
- package/dist/chunks/{generated-hELWB0gZ.js.map → generated-Cx4C7GRN.js.map} +1 -1
- package/dist/chunks/{grBadgeStyles-DV0DrAew.js → grBadgeStyles-D51AXbj5.js} +57 -1
- package/dist/chunks/grBadgeStyles-D51AXbj5.js.map +1 -0
- package/dist/chunks/{grChipStyles-DcDyxAL0.js → grChipStyles-CA9Wj1_E.js} +1 -1
- package/dist/chunks/{grChipStyles-DcDyxAL0.js.map → grChipStyles-CA9Wj1_E.js.map} +1 -1
- package/dist/chunks/{grPopoverStyles-CYAeO3Ov.js → grPopoverStyles-CncEkiPu.js} +1 -1
- package/dist/chunks/{grPopoverStyles-CYAeO3Ov.js.map → grPopoverStyles-CncEkiPu.js.map} +1 -1
- package/dist/chunks/{grSelectStyles-D9EQ-pgK.js → grSelectStyles-Cam-IG9s.js} +3 -2
- package/dist/chunks/grSelectStyles-Cam-IG9s.js.map +1 -0
- package/dist/chunks/{grSliderStyles-kaz6VXZ3.js → grSliderStyles-CqzV0hll.js} +1 -1
- package/dist/chunks/grSliderStyles-CqzV0hll.js.map +1 -0
- package/dist/chunks/{config-CbEbLyDE.js → grSortableListStyles-CxieDmpe.js} +1 -27
- package/dist/chunks/grSortableListStyles-CxieDmpe.js.map +1 -0
- package/dist/chunks/grTableStyles-CPSxDTOW.js +66 -0
- package/dist/chunks/grTableStyles-CPSxDTOW.js.map +1 -0
- package/dist/chunks/{config-CMNfZO7S.js → grTabsStyles-DIz2VdIm.js} +1 -36
- package/dist/chunks/grTabsStyles-DIz2VdIm.js.map +1 -0
- package/dist/chunks/grTooltipStyles-CtbGEEGV.js +24 -0
- package/dist/chunks/grTooltipStyles-CtbGEEGV.js.map +1 -0
- package/dist/chunks/{granular-provider-BOQp7N5o.js → granular-provider-cv5vaM1a.js} +26 -22
- package/dist/chunks/granular-provider-cv5vaM1a.js.map +1 -0
- package/dist/chunks/hotkeySequence-BTHIM_5A.js +46 -0
- package/dist/chunks/hotkeySequence-BTHIM_5A.js.map +1 -0
- package/dist/chunks/{keyboard-DE2yhz_b.js → keyboard-BiFSgWLt.js} +70 -1
- package/dist/chunks/keyboard-BiFSgWLt.js.map +1 -0
- package/dist/chunks/optionPanel-DvY7Tv_4.js +182 -0
- package/dist/chunks/optionPanel-DvY7Tv_4.js.map +1 -0
- package/dist/chunks/overlayListPanel-D91jBCHU.js +21 -0
- package/dist/chunks/overlayListPanel-D91jBCHU.js.map +1 -0
- package/dist/chunks/{overlayStack-DH4Z7am1.js → overlayStack-DCkCgXZP.js} +1 -1
- package/dist/chunks/{overlayStack-DH4Z7am1.js.map → overlayStack-DCkCgXZP.js.map} +1 -1
- package/dist/chunks/{overlayPanelSurface-BKeMhRx4.js → overlayTransition-C0FDMx7Q.js} +24 -24
- package/dist/chunks/overlayTransition-C0FDMx7Q.js.map +1 -0
- package/dist/chunks/{ru-hrB4I1u_.js → ru-CQKDR-kD.js} +27 -7
- package/dist/chunks/ru-CQKDR-kD.js.map +1 -0
- package/dist/chunks/{safelist-x8USecK8.js → safelist-CSfynUC1.js} +5 -1
- package/dist/chunks/safelist-CSfynUC1.js.map +1 -0
- package/dist/chunks/{useMenuItemsFocus-B7Bl_aFA.js → useMenuItemsFocus-C031blYS.js} +1 -1
- package/dist/chunks/{useMenuItemsFocus-B7Bl_aFA.js.map → useMenuItemsFocus-C031blYS.js.map} +1 -1
- package/dist/chunks/{useModalOverlay-ACRkflzx.js → useModalOverlay-CKCQkGdB.js} +1 -1
- package/dist/chunks/{useModalOverlay-ACRkflzx.js.map → useModalOverlay-CKCQkGdB.js.map} +1 -1
- package/dist/components/GrAutocomplete/chunks/{GrAutocomplete-C-uovdv8.js → GrAutocomplete-Cyr1-ENw.js} +183 -125
- package/dist/components/GrAutocomplete/chunks/GrAutocomplete-Cyr1-ENw.js.map +1 -0
- package/dist/components/GrAutocomplete/index.js +2 -2
- package/dist/components/GrAutocomplete/styles.css +1 -1
- package/dist/components/GrBadge/chunks/GrBadge-C42KLyUD.js +71 -0
- package/dist/components/GrBadge/chunks/GrBadge-C42KLyUD.js.map +1 -0
- package/dist/components/GrBadge/index.js +3 -3
- package/dist/components/GrBadge/styles.css +1 -1
- package/dist/components/GrCarousel/chunks/{GrCarousel-ByuughtI.js → GrCarousel-CBj-PEPB.js} +186 -37
- package/dist/components/GrCarousel/chunks/GrCarousel-CBj-PEPB.js.map +1 -0
- package/dist/components/GrCarousel/index.js +2 -2
- package/dist/components/GrCarousel/styles.css +1 -1
- package/dist/components/GrCheckbox/chunks/{GrCheckbox-Dp201frb.js → GrCheckbox-B4NJc7Ur.js} +2 -1
- package/dist/components/GrCheckbox/chunks/GrCheckbox-B4NJc7Ur.js.map +1 -0
- package/dist/components/GrCheckbox/index.js +1 -1
- package/dist/components/GrCheckboxGroup/chunks/{GrCheckboxGroup-IpqG5qwm.js → GrCheckboxGroup-qZHpNFCX.js} +1 -1
- package/dist/components/GrCheckboxGroup/chunks/{GrCheckboxGroup-IpqG5qwm.js.map → GrCheckboxGroup-qZHpNFCX.js.map} +1 -1
- package/dist/components/GrCheckboxGroup/index.js +1 -1
- package/dist/components/GrChip/chunks/{GrChip-CKqyzYcv.js → GrChip-DoyS1Dr4.js} +1 -1
- package/dist/components/GrChip/chunks/{GrChip-CKqyzYcv.js.map → GrChip-DoyS1Dr4.js.map} +1 -1
- package/dist/components/GrChip/index.js +2 -2
- package/dist/components/GrColorPicker/chunks/{GrColorPicker-BRM_4lyI.js → GrColorPicker-vGSgpUV9.js} +353 -38
- package/dist/components/GrColorPicker/chunks/GrColorPicker-vGSgpUV9.js.map +1 -0
- package/dist/components/GrColorPicker/index.js +2 -2
- package/dist/components/GrColorPicker/styles.css +1 -1
- package/dist/components/GrCommandPalette/chunks/{GrCommandPalette-BJHmkDQv.js → GrCommandPalette-CAHgj0Aa.js} +23 -7
- package/dist/components/GrCommandPalette/chunks/GrCommandPalette-CAHgj0Aa.js.map +1 -0
- package/dist/components/GrCommandPalette/index.js +1 -1
- package/dist/components/GrCommandPalette/styles.css +1 -1
- package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-BzUQwbec.js → GrConfirmDialog-dg021BMd.js} +1 -1
- package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-BzUQwbec.js.map → GrConfirmDialog-dg021BMd.js.map} +1 -1
- package/dist/components/GrConfirmDialog/index.js +1 -1
- package/dist/components/GrContextMenu/chunks/{GrContextMenu-RpxMHQXH.js → GrContextMenu-bQ1Vvy2c.js} +3 -3
- package/dist/components/GrContextMenu/chunks/{GrContextMenu-RpxMHQXH.js.map → GrContextMenu-bQ1Vvy2c.js.map} +1 -1
- package/dist/components/GrContextMenu/index.js +1 -1
- package/dist/components/GrDataTable/chunks/{GrDataTable-DQxYYgQk.js → GrDataTable-Bb2jWnRG.js} +576 -136
- package/dist/components/GrDataTable/chunks/GrDataTable-Bb2jWnRG.js.map +1 -0
- package/dist/components/GrDataTable/index.js +2 -2
- package/dist/components/GrDelta/chunks/{GrDelta-CgTvfoIN.js → GrDelta-BSv1KdMy.js} +0 -0
- package/dist/components/GrDelta/chunks/{GrDelta-CgTvfoIN.js.map → GrDelta-BSv1KdMy.js.map} +1 -1
- package/dist/components/GrDelta/index.js +2 -2
- package/dist/components/GrDialog/chunks/{GrDialog-DDz_OEhk.js → GrDialog-C9Zu72jB.js} +1 -1
- package/dist/components/GrDialog/chunks/{GrDialog-DDz_OEhk.js.map → GrDialog-C9Zu72jB.js.map} +1 -1
- package/dist/components/GrDialog/index.js +1 -1
- package/dist/components/GrDialogService/chunks/{GrDialogService-Dtq0ZCN5.js → GrDialogService-DLBifO61.js} +2 -2
- package/dist/components/GrDialogService/chunks/{GrDialogService-Dtq0ZCN5.js.map → GrDialogService-DLBifO61.js.map} +1 -1
- package/dist/components/GrDialogService/index.js +1 -1
- package/dist/components/GrDrawer/chunks/{GrDrawer-CNpSMuN-.js → GrDrawer-DOcRTE8G.js} +1 -1
- package/dist/components/GrDrawer/chunks/{GrDrawer-CNpSMuN-.js.map → GrDrawer-DOcRTE8G.js.map} +1 -1
- package/dist/components/GrDrawer/index.js +1 -1
- package/dist/components/GrDropdown/chunks/{GrDropdown-cLZuZMEY.js → GrDropdown-kxwmgfSe.js} +2 -2
- package/dist/components/GrDropdown/chunks/{GrDropdown-cLZuZMEY.js.map → GrDropdown-kxwmgfSe.js.map} +1 -1
- package/dist/components/GrDropdown/index.js +2 -2
- package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-Dxkz_ry4.js → GrDropdownMenu--VoK3VY0.js} +3 -34
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu--VoK3VY0.js.map +1 -0
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-CkM3BFPL.js +34 -0
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-CkM3BFPL.js.map +1 -0
- package/dist/components/GrDropdownMenu/index.js +2 -1
- package/dist/components/GrEmptyState/chunks/{GrEmptyState-BbvwE-E0.js → GrEmptyState-Bz6-_ED4.js} +42 -6
- package/dist/components/GrEmptyState/chunks/GrEmptyState-Bz6-_ED4.js.map +1 -0
- package/dist/components/GrEmptyState/index.js +1 -1
- package/dist/components/GrFileUpload/chunks/{GrFileUpload-BwMR71zN.js → GrFileUpload-Bgdfnkd8.js} +5 -2
- package/dist/components/GrFileUpload/chunks/GrFileUpload-Bgdfnkd8.js.map +1 -0
- package/dist/components/GrFileUpload/index.js +1 -1
- package/dist/components/GrFormFile/chunks/{GrFormFile-Dlxx-9zi.js → GrFormFile-Ctq1isz-.js} +78 -11
- package/dist/components/GrFormFile/chunks/GrFormFile-Ctq1isz-.js.map +1 -0
- package/dist/components/GrFormFile/index.js +2 -2
- package/dist/components/GrFormFile/styles.css +1 -1
- package/dist/components/GrImageViewer/chunks/{GrImageViewer-DK-iVHHC.js → GrImageViewer-Bnql_dNP.js} +1 -1
- package/dist/components/GrImageViewer/chunks/{GrImageViewer-DK-iVHHC.js.map → GrImageViewer-Bnql_dNP.js.map} +1 -1
- package/dist/components/GrImageViewer/index.js +1 -1
- package/dist/components/GrInput/chunks/{GrInput-DV4gMWPR.js → GrInput-CoaFLpaU.js} +43 -22
- package/dist/components/GrInput/chunks/GrInput-CoaFLpaU.js.map +1 -0
- package/dist/components/GrInput/index.js +1 -1
- package/dist/components/GrInputTag/chunks/{GrInputTag-CO0YU-ok.js → GrInputTag-BzzNRBe3.js} +247 -20
- package/dist/components/GrInputTag/chunks/GrInputTag-BzzNRBe3.js.map +1 -0
- package/dist/components/GrInputTag/index.js +2 -2
- package/dist/components/GrJsonViewer/chunks/{GrJsonViewer-D7CyWzhT.js → GrJsonViewer-B6ZJ3GFH.js} +2 -2
- package/dist/components/GrJsonViewer/chunks/{GrJsonViewer-D7CyWzhT.js.map → GrJsonViewer-B6ZJ3GFH.js.map} +1 -1
- package/dist/components/GrJsonViewer/index.js +1 -1
- package/dist/components/GrKbd/chunks/{GrKbd-BNMeoaLV.js → GrKbd-D2rHDkQv.js} +42 -37
- package/dist/components/GrKbd/chunks/GrKbd-D2rHDkQv.js.map +1 -0
- package/dist/components/GrKbd/index.js +1 -1
- package/dist/components/GrModal/chunks/{GrModal-Cm0mtSXk.js → GrModal-SHb1U2qx.js} +1 -1
- package/dist/components/GrModal/chunks/{GrModal-Cm0mtSXk.js.map → GrModal-SHb1U2qx.js.map} +1 -1
- package/dist/components/GrModal/index.js +1 -1
- package/dist/components/GrNavbar/chunks/{GrNavbar-BRGuksiy.js → GrNavbar-IEIHC5Vt.js} +10 -4
- package/dist/components/GrNavbar/chunks/GrNavbar-IEIHC5Vt.js.map +1 -0
- package/dist/components/GrNavbar/index.js +2 -2
- package/dist/components/GrNumberInput/chunks/{GrNumberInput-BI6-vkcs.js → GrNumberInput-CmnUDaKi.js} +2 -22
- package/dist/components/GrNumberInput/chunks/{GrNumberInput-BI6-vkcs.js.map → GrNumberInput-CmnUDaKi.js.map} +1 -1
- package/dist/components/GrNumberInput/index.js +1 -1
- package/dist/components/GrOtpInput/chunks/GrOtpInput-B_Q-RDLw.js +419 -0
- package/dist/components/GrOtpInput/chunks/GrOtpInput-B_Q-RDLw.js.map +1 -0
- package/dist/components/GrOtpInput/index.js +3 -0
- package/dist/components/GrOtpInput/styles.css +1 -0
- package/dist/components/GrPagination/chunks/{GrPagination-BbaF5eXk.js → GrPagination-AMbn5D8I.js} +1 -1
- package/dist/components/GrPagination/chunks/{GrPagination-BbaF5eXk.js.map → GrPagination-AMbn5D8I.js.map} +1 -1
- package/dist/components/GrPagination/index.js +1 -1
- package/dist/components/GrPopover/chunks/{GrPopover-CcWvr1ZA.js → GrPopover-DjVxt8bf.js} +3 -3
- package/dist/components/GrPopover/chunks/{GrPopover-CcWvr1ZA.js.map → GrPopover-DjVxt8bf.js.map} +1 -1
- package/dist/components/GrPopover/index.js +2 -2
- package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-BEL-QgwE.js → GrPromptDialog-BhbIZP1f.js} +3 -3
- package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-BEL-QgwE.js.map → GrPromptDialog-BhbIZP1f.js.map} +1 -1
- package/dist/components/GrPromptDialog/index.js +1 -1
- package/dist/components/GrSelect/chunks/{GrSelect-0iI4wdR_.js → GrSelect-B-ykrHpL.js} +26 -182
- package/dist/components/GrSelect/chunks/GrSelect-B-ykrHpL.js.map +1 -0
- package/dist/components/GrSelect/index.js +2 -2
- package/dist/components/GrSelect/styles.css +1 -1
- package/dist/components/GrSidebar/chunks/GrSidebar-jVvoLGDO.js +543 -0
- package/dist/components/GrSidebar/chunks/GrSidebar-jVvoLGDO.js.map +1 -0
- package/dist/components/GrSidebar/index.js +2 -2
- package/dist/components/GrSlider/chunks/{GrSlider-CO8N9SF6.js → GrSlider-DF2Cq0rV.js} +29 -4
- package/dist/components/GrSlider/chunks/GrSlider-DF2Cq0rV.js.map +1 -0
- package/dist/components/GrSlider/index.js +2 -2
- package/dist/components/GrSortableList/chunks/{GrSortableList-NKriuGm_.js → GrSortableList-ChH9nQBv.js} +1 -1
- package/dist/components/GrSortableList/chunks/{GrSortableList-NKriuGm_.js.map → GrSortableList-ChH9nQBv.js.map} +1 -1
- package/dist/components/GrSortableList/index.js +2 -2
- package/dist/components/GrSwitch/chunks/{GrSwitch-CriHWT2A.js → GrSwitch-D7X42uIA.js} +61 -7
- package/dist/components/GrSwitch/chunks/GrSwitch-D7X42uIA.js.map +1 -0
- package/dist/components/GrSwitch/index.js +2 -2
- package/dist/components/GrTabPanels/chunks/GrTabPanels-BDt5oVdd.js +30 -0
- package/dist/components/GrTabPanels/chunks/GrTabPanels-BDt5oVdd.js.map +1 -0
- package/dist/components/GrTabPanels/chunks/GrTabPanels-BJvAflnA.js +83 -0
- package/dist/components/GrTabPanels/chunks/GrTabPanels-BJvAflnA.js.map +1 -0
- package/dist/components/GrTabPanels/index.js +2 -1
- package/dist/components/GrTable/chunks/{GrTable-CKJ-HrsN.js → GrTable-BQitSDep.js} +52 -16
- package/dist/components/GrTable/chunks/GrTable-BQitSDep.js.map +1 -0
- package/dist/components/GrTable/index.js +2 -2
- package/dist/components/GrTabs/chunks/{GrTabs-s9RzC1WX.js → GrTabs-DVC6nfWB.js} +1 -1
- package/dist/components/GrTabs/chunks/{GrTabs-s9RzC1WX.js.map → GrTabs-DVC6nfWB.js.map} +1 -1
- package/dist/components/GrTabs/index.js +2 -2
- package/dist/components/GrTabsWithPanels/chunks/GrTabsWithPanels-BYtuzouj.js +98 -0
- package/dist/components/GrTabsWithPanels/chunks/GrTabsWithPanels-BYtuzouj.js.map +1 -0
- package/dist/components/GrTabsWithPanels/index.js +3 -0
- package/dist/components/GrTextarea/chunks/{GrTextarea-Bfgc0DD2.js → GrTextarea-BFwyqcHB.js} +22 -5
- package/dist/components/GrTextarea/chunks/GrTextarea-BFwyqcHB.js.map +1 -0
- package/dist/components/GrTextarea/index.js +1 -1
- package/dist/components/GrToaster/chunks/{GrToaster-CZixNk0l.js → GrToaster-OzT1VKcp.js} +163 -32
- package/dist/components/GrToaster/chunks/GrToaster-OzT1VKcp.js.map +1 -0
- package/dist/components/GrToaster/index.js +2 -2
- package/dist/components/GrToaster/styles.css +1 -1
- package/dist/components/GrTooltip/chunks/{GrTooltip-DkMMM0uq.js → GrTooltip-BDcFycvW.js} +26 -13
- package/dist/components/GrTooltip/chunks/GrTooltip-BDcFycvW.js.map +1 -0
- package/dist/components/GrTooltip/index.js +2 -2
- package/dist/components/GrTransfer/chunks/{GrTransfer-DdfBUf35.js → GrTransfer-CV7BL5UK.js} +114 -12
- package/dist/components/GrTransfer/chunks/GrTransfer-CV7BL5UK.js.map +1 -0
- package/dist/components/GrTransfer/index.js +1 -1
- package/dist/components/GrTransfer/styles.css +1 -1
- package/dist/components/GrTree/chunks/{GrTree-6yZrncJE.js → GrTree-DpgaP8hk.js} +39 -1
- package/dist/components/GrTree/chunks/GrTree-DpgaP8hk.js.map +1 -0
- package/dist/components/GrTree/index.js +1 -1
- package/dist/components/GrTree/styles.css +1 -1
- package/dist/components/GrTreeSections/chunks/{GrTreeSections-DcmDcLwj.js → GrTreeSections-BeOj__44.js} +1 -1
- package/dist/components/GrTreeSections/chunks/{GrTreeSections-DcmDcLwj.js.map → GrTreeSections-BeOj__44.js.map} +1 -1
- package/dist/components/GrTreeSections/index.js +1 -1
- package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-B6KoDYiZ.js → GrTreeSelect-BHq-T8wH.js} +113 -14
- package/dist/components/GrTreeSelect/chunks/GrTreeSelect-BHq-T8wH.js.map +1 -0
- package/dist/components/GrTreeSelect/index.js +2 -2
- package/dist/composables/useFloating.js +1 -1
- package/dist/composables/useHotkeys.js +89 -0
- package/dist/composables/useHotkeys.js.map +1 -0
- package/dist/composables/useOverlayLayer.js +1 -1
- package/dist/directives/hotkey.js +19 -46
- package/dist/directives/hotkey.js.map +1 -1
- package/dist/granular-provider-node.js +1 -1
- package/dist/granular-provider.js +1 -1
- package/dist/i18n/all.js +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/index.js +80 -71
- package/dist/theme.js +1 -1
- package/dist/tokens.js +1 -1
- package/dist/types/components/GrAutocomplete/GrAutocomplete.vue.d.ts +4 -4
- package/dist/types/components/GrAutocomplete/composables/useAutocompleteNavigation.d.ts +12 -3
- package/dist/types/components/GrAutocomplete/composables/useAutocompletePanel.d.ts +12 -2
- package/dist/types/components/GrAutocomplete/composables/useAutocompleteValues.d.ts +7 -4
- package/dist/types/components/GrAutocomplete/composables/useRemoteOptions.d.ts +4 -4
- package/dist/types/components/GrAutocomplete/grAutocompleteStyles.d.ts +15 -1
- package/dist/types/components/GrAutocomplete/index.d.ts +1 -1
- package/dist/types/components/GrBadge/GrBadge.vue.d.ts +15 -1
- package/dist/types/components/GrBadge/grBadgeStyles.d.ts +57 -0
- package/dist/types/components/GrBadge/index.d.ts +1 -1
- package/dist/types/components/GrCarousel/GrCarousel.vue.d.ts +29 -1
- package/dist/types/components/GrCarousel/composables/useCarouselSwipe.d.ts +5 -0
- package/dist/types/components/GrCarousel/grCarouselContext.d.ts +21 -0
- package/dist/types/components/GrCarousel/grCarouselStyles.d.ts +39 -9
- package/dist/types/components/GrCheckbox/GrCheckbox.vue.d.ts +13 -0
- package/dist/types/components/GrColorPicker/GrColorPicker.vue.d.ts +18 -2
- package/dist/types/components/GrColorPicker/color.d.ts +13 -1
- package/dist/types/components/GrColorPicker/colorArea.d.ts +59 -0
- package/dist/types/components/GrColorPicker/defaults.d.ts +3 -1
- package/dist/types/components/GrColorPicker/eyeDropper.d.ts +21 -0
- package/dist/types/components/GrColorPicker/grColorPickerStyles.d.ts +42 -0
- package/dist/types/components/GrCommandPalette/GrCommandPalette.vue.d.ts +10 -1
- package/dist/types/components/GrDataTable/GrDataTable.vue.d.ts +41 -1
- package/dist/types/components/GrDataTable/composables/useDataTableGridNavigation.d.ts +53 -0
- package/dist/types/components/GrDataTable/grDataTableStyles.d.ts +8 -0
- package/dist/types/components/GrDataTable/index.d.ts +1 -1
- package/dist/types/components/GrDelta/grDeltaStyles.d.ts +10 -3
- package/dist/types/components/GrEmptyState/GrEmptyState.vue.d.ts +11 -2
- package/dist/types/components/GrEmptyState/grEmptyStateStyles.d.ts +10 -0
- package/dist/types/components/GrEmptyState/index.d.ts +1 -1
- package/dist/types/components/GrFileUpload/GrFileUpload.vue.d.ts +2 -1
- package/dist/types/components/GrFormFile/GrFormFile.vue.d.ts +10 -0
- package/dist/types/components/GrInput/GrInput.vue.d.ts +15 -0
- package/dist/types/components/GrInputTag/GrInputTag.vue.d.ts +16 -0
- package/dist/types/components/GrInputTag/grInputTagStyles.d.ts +11 -0
- package/dist/types/components/GrKbd/GrKbd.vue.d.ts +14 -0
- package/dist/types/components/GrNavbar/GrNavbar.vue.d.ts +18 -0
- package/dist/types/components/GrNavbar/grNavbarStyles.d.ts +10 -1
- package/dist/types/components/GrNavbar/index.d.ts +1 -0
- package/dist/types/components/GrOtpInput/GrOtpInput.vue.d.ts +164 -0
- package/dist/types/components/GrOtpInput/config.d.ts +1 -0
- package/dist/types/components/GrOtpInput/defaults.d.ts +15 -0
- package/dist/types/components/GrOtpInput/grOtpInputStyles.d.ts +62 -0
- package/dist/types/components/GrOtpInput/index.d.ts +9 -0
- package/dist/types/components/GrOtpInput/otpValue.d.ts +71 -0
- package/dist/types/components/GrOtpInput/safelist.d.ts +7 -0
- package/dist/types/components/GrSelect/composables/useSelectPanelItems.d.ts +8 -34
- package/dist/types/components/GrSelect/composables/useSelectVirtualization.d.ts +7 -0
- package/dist/types/components/GrSelect/grSelectStyles.d.ts +1 -1
- package/dist/types/components/GrSidebar/GrSidebar.vue.d.ts +20 -0
- package/dist/types/components/GrSidebar/GrSidebarItem.vue.d.ts +39 -5
- package/dist/types/components/GrSidebar/grSidebarStyles.d.ts +32 -0
- package/dist/types/components/GrSidebar/index.d.ts +1 -1
- package/dist/types/components/GrSidebar/sidebarContext.d.ts +23 -1
- package/dist/types/components/GrSlider/GrSlider.vue.d.ts +39 -1
- package/dist/types/components/GrSlider/grSliderStyles.d.ts +1 -1
- package/dist/types/components/GrSwitch/GrSwitch.vue.d.ts +42 -4
- package/dist/types/components/GrSwitch/defaults.d.ts +2 -0
- package/dist/types/components/GrSwitch/grSwitchStyles.d.ts +129 -25
- package/dist/types/components/GrSwitch/index.d.ts +1 -1
- package/dist/types/components/GrSwitch/safelist.d.ts +4 -3
- package/dist/types/components/GrTabPanels/context.d.ts +6 -0
- package/dist/types/components/GrTable/GrTable.vue.d.ts +37 -0
- package/dist/types/components/GrTable/grTableStyles.d.ts +16 -7
- package/dist/types/components/GrTabsWithPanels/GrTabsWithPanels.vue.d.ts +77 -0
- package/dist/types/components/GrTabsWithPanels/config.d.ts +1 -0
- package/dist/types/components/GrTabsWithPanels/index.d.ts +4 -0
- package/dist/types/components/GrTextarea/GrTextarea.vue.d.ts +19 -1
- package/dist/types/components/GrToaster/GrToaster.vue.d.ts +12 -0
- package/dist/types/components/GrToaster/grToasterStyles.d.ts +26 -0
- package/dist/types/components/GrTooltip/GrTooltip.vue.d.ts +22 -0
- package/dist/types/components/GrTransfer/GrTransfer.vue.d.ts +23 -0
- package/dist/types/components/GrTreeSelect/grTreeSelectStyles.d.ts +1 -1
- package/dist/types/components/GrTreeSelect/grTreeSelectTypes.d.ts +20 -0
- package/dist/types/components/shared/hotkey.d.ts +8 -9
- package/dist/types/components/shared/optionPanel.d.ts +100 -0
- package/dist/types/components/shared/overlayListPanel.d.ts +18 -0
- package/dist/types/composables/useHotkeys.d.ts +43 -0
- package/dist/types/granular-provider/shared.d.ts +2 -0
- package/dist/types/i18n/messages/en.d.ts +32 -0
- package/dist/types/i18n/messages/es.d.ts +32 -0
- package/dist/types/i18n/messages/ru.d.ts +32 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/internal/hotkeySequence.d.ts +22 -0
- package/dist/types/internal/keyboard.d.ts +45 -0
- package/dist/web-types.json +784 -101
- package/package.json +13 -1
- package/dist/chunks/config-2ZHRsdOc.js.map +0 -1
- package/dist/chunks/config-B42iJ48O.js.map +0 -1
- package/dist/chunks/config-B5SBUa6u.js.map +0 -1
- package/dist/chunks/config-BAse0laT.js.map +0 -1
- package/dist/chunks/config-BHLMTJaR.js.map +0 -1
- package/dist/chunks/config-BXRmsn3t.js.map +0 -1
- package/dist/chunks/config-Bs1HwUcx.js.map +0 -1
- package/dist/chunks/config-CMNfZO7S.js.map +0 -1
- package/dist/chunks/config-CbEbLyDE.js.map +0 -1
- package/dist/chunks/config-CjWOTgLL.js.map +0 -1
- package/dist/chunks/config-D3HOuHDe.js.map +0 -1
- package/dist/chunks/config-DIDz_E5m.js.map +0 -1
- package/dist/chunks/config-DNDgp9bB.js.map +0 -1
- package/dist/chunks/config-Yy67uWHY.js +0 -140
- package/dist/chunks/config-Yy67uWHY.js.map +0 -1
- package/dist/chunks/config-iemgzS4x.js.map +0 -1
- package/dist/chunks/en-Bxyn5lW7.js.map +0 -1
- package/dist/chunks/es-Dtl-a7ui.js.map +0 -1
- package/dist/chunks/grBadgeStyles-DV0DrAew.js.map +0 -1
- package/dist/chunks/grSelectStyles-D9EQ-pgK.js.map +0 -1
- package/dist/chunks/grSliderStyles-kaz6VXZ3.js.map +0 -1
- package/dist/chunks/grTableStyles-DkQPMfx9.js +0 -39
- package/dist/chunks/grTableStyles-DkQPMfx9.js.map +0 -1
- package/dist/chunks/granular-provider-BOQp7N5o.js.map +0 -1
- package/dist/chunks/keyboard-DE2yhz_b.js.map +0 -1
- package/dist/chunks/overlayPanelSurface-BKeMhRx4.js.map +0 -1
- package/dist/chunks/ru-hrB4I1u_.js.map +0 -1
- package/dist/chunks/safelist-x8USecK8.js.map +0 -1
- package/dist/components/GrAutocomplete/chunks/GrAutocomplete-C-uovdv8.js.map +0 -1
- package/dist/components/GrBadge/chunks/GrBadge-DBeQXEir.js +0 -47
- package/dist/components/GrBadge/chunks/GrBadge-DBeQXEir.js.map +0 -1
- package/dist/components/GrCarousel/chunks/GrCarousel-ByuughtI.js.map +0 -1
- package/dist/components/GrCheckbox/chunks/GrCheckbox-Dp201frb.js.map +0 -1
- package/dist/components/GrColorPicker/chunks/GrColorPicker-BRM_4lyI.js.map +0 -1
- package/dist/components/GrCommandPalette/chunks/GrCommandPalette-BJHmkDQv.js.map +0 -1
- package/dist/components/GrDataTable/chunks/GrDataTable-DQxYYgQk.js.map +0 -1
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-Dxkz_ry4.js.map +0 -1
- package/dist/components/GrEmptyState/chunks/GrEmptyState-BbvwE-E0.js.map +0 -1
- package/dist/components/GrFileUpload/chunks/GrFileUpload-BwMR71zN.js.map +0 -1
- package/dist/components/GrFormFile/chunks/GrFormFile-Dlxx-9zi.js.map +0 -1
- package/dist/components/GrInput/chunks/GrInput-DV4gMWPR.js.map +0 -1
- package/dist/components/GrInputTag/chunks/GrInputTag-CO0YU-ok.js.map +0 -1
- package/dist/components/GrKbd/chunks/GrKbd-BNMeoaLV.js.map +0 -1
- package/dist/components/GrNavbar/chunks/GrNavbar-BRGuksiy.js.map +0 -1
- package/dist/components/GrSelect/chunks/GrSelect-0iI4wdR_.js.map +0 -1
- package/dist/components/GrSidebar/chunks/GrSidebar-DoKLlHSw.js +0 -264
- package/dist/components/GrSidebar/chunks/GrSidebar-DoKLlHSw.js.map +0 -1
- package/dist/components/GrSlider/chunks/GrSlider-CO8N9SF6.js.map +0 -1
- package/dist/components/GrSwitch/chunks/GrSwitch-CriHWT2A.js.map +0 -1
- package/dist/components/GrTabPanels/chunks/GrTabPanels-5zsbqS1v.js +0 -92
- package/dist/components/GrTabPanels/chunks/GrTabPanels-5zsbqS1v.js.map +0 -1
- package/dist/components/GrTable/chunks/GrTable-CKJ-HrsN.js.map +0 -1
- package/dist/components/GrTextarea/chunks/GrTextarea-Bfgc0DD2.js.map +0 -1
- package/dist/components/GrToaster/chunks/GrToaster-CZixNk0l.js.map +0 -1
- package/dist/components/GrTooltip/chunks/GrTooltip-DkMMM0uq.js.map +0 -1
- package/dist/components/GrTransfer/chunks/GrTransfer-DdfBUf35.js.map +0 -1
- package/dist/components/GrTree/chunks/GrTree-6yZrncJE.js.map +0 -1
- package/dist/components/GrTreeSelect/chunks/GrTreeSelect-B6KoDYiZ.js.map +0 -1
- package/dist/types/components/GrAutocomplete/composables/useAutocompleteVirtual.d.ts +0 -33
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { n as splitClassTokens } from "./classTokens-8v2XC74x.js";
|
|
2
|
-
import { a as
|
|
2
|
+
import { a as stickyColumnStripedClass, i as stickyColumnHoverableClass, n as hoverableClass, o as stripedClass, r as loadingRowCellClass, s as tableSizes, t as emptyCellClass } from "./grTableStyles-CPSxDTOW.js";
|
|
3
3
|
import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
|
|
4
4
|
//#region src/components/GrTable/safelist.ts
|
|
5
5
|
var grTableSafelist = [.../* @__PURE__ */ new Set([
|
|
6
6
|
...Object.values(tableSizes).flatMap(splitClassTokens),
|
|
7
7
|
...splitClassTokens(stripedClass),
|
|
8
|
+
...splitClassTokens(stickyColumnStripedClass),
|
|
9
|
+
...splitClassTokens(stickyColumnHoverableClass),
|
|
8
10
|
...splitClassTokens(hoverableClass),
|
|
9
11
|
...splitClassTokens(emptyCellClass),
|
|
10
12
|
...splitClassTokens(loadingRowCellClass)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-C3SqBqSQ.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 stickyColumnHoverableClass,\n stickyColumnStripedClass,\n stripedClass,\n tableSizes,\n} from './grTableStyles'\n\nexport const grTableSafelist = [...new Set([\n ...Object.values(tableSizes).flatMap(splitClassTokens),\n ...splitClassTokens(stripedClass),\n ...splitClassTokens(stickyColumnStripedClass),\n ...splitClassTokens(stickyColumnHoverableClass),\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":";;;;AAWA,IAAa,kBAAkB,CAAC,mBAAG,IAAI,IAAI;CACzC,GAAG,OAAO,OAAO,UAAU,CAAC,CAAC,QAAQ,gBAAgB;CACrD,GAAG,iBAAiB,YAAY;CAChC,GAAG,iBAAiB,wBAAwB;CAC5C,GAAG,iBAAiB,0BAA0B;CAC9C,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,mBAAmB;AACzC,CAAC,CAAC;;;ACfF,IAAa,gBAAgB,wBAAwB,YAAY,KAAK;CACpE,MAAM;CACN,cAAc,CAAC,YAAY;CAC3B,UAAU;AACZ,CAAC"}
|
|
@@ -22,7 +22,7 @@ var navbarSideClass = "flex min-w-0 items-center gap-3";
|
|
|
22
22
|
var navbarSideGrowClass = "flex-1";
|
|
23
23
|
var navbarRightAlignClass = "justify-end";
|
|
24
24
|
var navbarCenterClass = "flex min-w-0 flex-1 items-center justify-center gap-3";
|
|
25
|
-
var navbarTitleClass = "text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)] font-700";
|
|
25
|
+
var navbarTitleClass = "m-0 text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)] font-700";
|
|
26
26
|
function grNavbarRootClass(sticky) {
|
|
27
27
|
return [navbarBaseClass, sticky ? navbarStickyClass : ""].filter(Boolean).join(" ");
|
|
28
28
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-C3uqd-sW.js","names":[],"sources":["../../src/components/GrNavbar/grNavbarStyles.ts","../../src/components/GrNavbar/safelist.ts","../../src/components/GrNavbar/config.ts"],"sourcesContent":["/**\n * Кастомизация через CSS-переменные:\n *\n * - `--gr-navbar-height` — высота панели (по умолчанию `56px`).\n */\nexport const navbarBaseClass = 'h-[var(--gr-navbar-height,56px)] border-b border-[var(--gr-brd)] bg-[var(--gr-bg)] flex items-center gap-4 px-4 sm:px-6'\n\n/**\n * Прилипшая шапка идёт слоем ниже якорных панелей: она обязана перекрывать\n * контент, но не выпадашки, тултипы и модалки — иначе открытый список уезжал бы\n * под неё.\n */\nexport const navbarStickyClass = 'sticky top-0 z-[var(--gr-z-navbar)]'\n\nexport const navbarSideClass = 'flex min-w-0 items-center gap-3'\n\n/**\n * Центрировать содержимое относительно панели можно только когда боковые зоны\n * делят остаток поровну: у центра с одним `flex-1` середина считается от\n * остатка, а не от панели, и уезжает вслед за более широким боком.\n */\nexport const navbarSideGrowClass = 'flex-1'\nexport const navbarRightAlignClass = 'justify-end'\n\nexport const navbarCenterClass = 'flex min-w-0 flex-1 items-center justify-center gap-3'\n\n/**\n * Уровни заголовка шапки.\n *\n * Единица разрешена, в отличие от `GrCard`, где шкала начинается с двойки:\n * карточка никогда не бывает заголовком страницы, а шапка раздела — бывает, и\n * имя раздела в ней и есть `h1`.\n */\nexport const GR_NAVBAR_HEADING_LEVELS = [1, 2, 3, 4, 5, 6] as const\n\nexport type GrNavbarHeadingLevel = typeof GR_NAVBAR_HEADING_LEVELS[number]\n\n// `m-0` — у нативного заголовка свой браузерный отступ, а префлайт пакета\n// сбрасывает `margin` только у `body`. Потребитель с tailwind-совместимым\n// сбросом его не увидит, а без такого сброса ряд шапки разъедется по вертикали:\n// делать высоту шапки зависимой от чужого CSS нельзя. У `<div>` объявление\n// ничего не значит, поэтому вид без `headingLevel` прежний.\nexport const navbarTitleClass = 'm-0 text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)] font-700'\n\nexport function grNavbarRootClass(sticky: boolean): string {\n return [navbarBaseClass, sticky ? navbarStickyClass : ''].filter(Boolean).join(' ')\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n navbarBaseClass,\n navbarCenterClass,\n navbarRightAlignClass,\n navbarSideClass,\n navbarSideGrowClass,\n navbarStickyClass,\n navbarTitleClass,\n} from './grNavbarStyles'\n\nexport const grNavbarSafelist = [...new Set([\n ...splitClassTokens(navbarBaseClass),\n ...splitClassTokens(navbarStickyClass),\n ...splitClassTokens(navbarSideClass),\n ...splitClassTokens(navbarSideGrowClass),\n ...splitClassTokens(navbarRightAlignClass),\n ...splitClassTokens('ml-auto'),\n ...splitClassTokens(navbarCenterClass),\n ...splitClassTokens(navbarTitleClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grNavbarSafelist } from './safelist'\n\nexport const grNavbarConfig = defineGranularComponent(import.meta.url, {\n name: 'GrNavbar',\n dependencies: ['GrButton', 'GrIcon'],\n safelist: grNavbarSafelist,\n})\n"],"mappings":";;;;;;;;AAKA,IAAa,kBAAkB;;;;;;AAO/B,IAAa,oBAAoB;AAEjC,IAAa,kBAAkB;;;;;;AAO/B,IAAa,sBAAsB;AACnC,IAAa,wBAAwB;AAErC,IAAa,oBAAoB;AAkBjC,IAAa,mBAAmB;AAEhC,SAAgB,kBAAkB,QAAyB;CACzD,OAAO,CAAC,iBAAiB,SAAS,oBAAoB,EAAE,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;AACpF;;;ACnCA,IAAa,mBAAmB,CAAC,mBAAG,IAAI,IAAI;CAC1C,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,qBAAqB;CACzC,GAAG,iBAAiB,SAAS;CAC7B,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,gBAAgB;AACtC,CAAC,CAAC;;;AChBF,IAAa,iBAAiB,wBAAwB,YAAY,KAAK;CACrE,MAAM;CACN,cAAc,CAAC,YAAY,QAAQ;CACnC,UAAU;AACZ,CAAC"}
|
|
@@ -61,23 +61,78 @@ function grCarouselThumbActiveClass(tone) {
|
|
|
61
61
|
return `border-${arbitrary(dotToneVars[tone])}`;
|
|
62
62
|
}
|
|
63
63
|
var carouselRootBase = "relative w-full";
|
|
64
|
+
/**
|
|
65
|
+
* Вертикальная лента: высоту задаёт потребитель **на корне**, а вьюпорт обязан
|
|
66
|
+
* её получить.
|
|
67
|
+
*
|
|
68
|
+
* Иначе высота вьюпорта выводится из содержимого, процентная `flex-basis`
|
|
69
|
+
* кадров упирается в неопределённый размер и вырождается в высоту содержимого —
|
|
70
|
+
* кадры встают столбцом, а лента честно считает шаг от суммы. Отсюда колонка на
|
|
71
|
+
* корне и `flex-1 min-h-0` на вьюпорте: полоса переключателей остаётся под ним,
|
|
72
|
+
* а вьюпорт забирает остаток.
|
|
73
|
+
*/
|
|
74
|
+
var carouselRootAxis = {
|
|
75
|
+
horizontal: "",
|
|
76
|
+
vertical: "flex flex-col"
|
|
77
|
+
};
|
|
78
|
+
var carouselViewportAxis = {
|
|
79
|
+
horizontal: "",
|
|
80
|
+
vertical: "min-h-0 flex-1"
|
|
81
|
+
};
|
|
64
82
|
var carouselViewportBase = "relative w-full overflow-hidden";
|
|
65
83
|
/**
|
|
66
84
|
* Вертикальная прокрутка страницы остаётся браузеру, горизонталь забирает лента.
|
|
67
85
|
* `select-none` — против выделения текста слайда протяжкой.
|
|
68
86
|
*/
|
|
69
|
-
var carouselViewportSwipeClass = "
|
|
70
|
-
var carouselTrackBase = "flex
|
|
71
|
-
var carouselSlideBase = "
|
|
87
|
+
var carouselViewportSwipeClass = "select-none";
|
|
88
|
+
var carouselTrackBase = "flex will-change-transform transition-transform duration-[var(--gr-duration-base)] ease-[var(--gr-ease-out)]";
|
|
89
|
+
var carouselSlideBase = "shrink-0 grow-0 basis-full";
|
|
90
|
+
/**
|
|
91
|
+
* Кадр занимает вьюпорт целиком по оси движения. Поперёк оси он не ограничен:
|
|
92
|
+
* там размер задаёт содержимое, как и раньше.
|
|
93
|
+
*/
|
|
94
|
+
var carouselSlideAxis = {
|
|
95
|
+
horizontal: "w-full min-w-0",
|
|
96
|
+
vertical: "h-full min-h-0"
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* Направление ленты. По вертикали ей нужна **определённая высота вьюпорта**:
|
|
100
|
+
* `translateY(-100%)` считается от высоты самой ленты, а она у колонки равна
|
|
101
|
+
* сумме кадров, если вьюпорт высоту не задал.
|
|
102
|
+
*/
|
|
103
|
+
var carouselTrackAxis = {
|
|
104
|
+
horizontal: "w-full",
|
|
105
|
+
vertical: "h-full flex-col"
|
|
106
|
+
};
|
|
107
|
+
/** Жест по оси движения перехватывается лентой, поперёк — отдаётся странице. */
|
|
108
|
+
var carouselViewportTouchAction = {
|
|
109
|
+
horizontal: "[touch-action:pan-y]",
|
|
110
|
+
vertical: "[touch-action:pan-x]"
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* Стрелки стоят по оси движения. По горизонтали позиции логические
|
|
114
|
+
* (`start`/`end`) — они зеркалятся под RTL; по вертикали направление письма ни
|
|
115
|
+
* при чём, поэтому там физические `top`/`bottom`.
|
|
116
|
+
*/
|
|
117
|
+
var carouselControlAxis = {
|
|
118
|
+
horizontal: "top-1/2 -translate-y-1/2",
|
|
119
|
+
vertical: "left-1/2 -translate-x-1/2"
|
|
120
|
+
};
|
|
72
121
|
/**
|
|
73
122
|
* Стрелки лежат поверх произвольного содержимого, поэтому несут собственную
|
|
74
123
|
* подложку: на светлом кадре иконка без неё пропадает. `z-10` — порядок внутри
|
|
75
124
|
* собственного stacking-контекста компонента, а не слой страницы.
|
|
76
125
|
*/
|
|
77
|
-
var carouselControlBase = "absolute
|
|
126
|
+
var carouselControlBase = "absolute z-10 inline-flex h-9 w-9 items-center justify-center rounded-[var(--gr-radius-full)] border border-[var(--gr-brd)] bg-[var(--gr-carousel-control-bg,var(--gr-bg))] text-[var(--gr-carousel-control-fg,var(--gr-fg))] transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]";
|
|
78
127
|
var carouselControlPositions = {
|
|
79
|
-
|
|
80
|
-
|
|
128
|
+
horizontal: {
|
|
129
|
+
prev: "start-2",
|
|
130
|
+
next: "end-2"
|
|
131
|
+
},
|
|
132
|
+
vertical: {
|
|
133
|
+
prev: "top-2",
|
|
134
|
+
next: "bottom-2"
|
|
135
|
+
}
|
|
81
136
|
};
|
|
82
137
|
/**
|
|
83
138
|
* Стрелка на краю без `loop` гасится фоном, а не `opacity`: прозрачность
|
|
@@ -109,10 +164,11 @@ var carouselThumbStates = { idle: "border-[var(--gr-brd)] hover:border-[var(--gr
|
|
|
109
164
|
var carouselThumbImageClass = "h-full w-full object-cover";
|
|
110
165
|
/** Миниатюры не дали — плитка держит ритм полосы номером слайда. */
|
|
111
166
|
var carouselThumbFallbackClass = "flex h-full w-full items-center justify-center bg-[var(--gr-muted)] text-[var(--gr-muted-fg)] text-[length:var(--gr-control-text-xs)] leading-[var(--gr-control-leading-xs)]";
|
|
112
|
-
function grCarouselControlClass(direction, disabled) {
|
|
167
|
+
function grCarouselControlClass(direction, disabled, orientation = "horizontal") {
|
|
113
168
|
return [
|
|
114
169
|
carouselControlBase,
|
|
115
|
-
|
|
170
|
+
carouselControlAxis[orientation],
|
|
171
|
+
carouselControlPositions[orientation][direction],
|
|
116
172
|
disabled ? carouselControlStates.disabled : carouselControlStates.idle
|
|
117
173
|
].join(" ");
|
|
118
174
|
}
|
|
@@ -136,7 +192,13 @@ function grCarouselIndicatorClass(variant, active, tone = "primary") {
|
|
|
136
192
|
var grCarouselSafelist = [.../* @__PURE__ */ new Set([
|
|
137
193
|
...GR_TONES.flatMap((tone) => splitClassTokens(grCarouselDotActiveClass(tone))),
|
|
138
194
|
...GR_TONES.flatMap((tone) => splitClassTokens(grCarouselThumbActiveClass(tone))),
|
|
139
|
-
...Object.values(carouselControlPositions).flatMap(splitClassTokens),
|
|
195
|
+
...Object.values(carouselControlPositions).flatMap((positions) => Object.values(positions).flatMap(splitClassTokens)),
|
|
196
|
+
...Object.values(carouselControlAxis).flatMap(splitClassTokens),
|
|
197
|
+
...Object.values(carouselTrackAxis).flatMap(splitClassTokens),
|
|
198
|
+
...Object.values(carouselSlideAxis).flatMap(splitClassTokens),
|
|
199
|
+
...Object.values(carouselViewportTouchAction).flatMap(splitClassTokens),
|
|
200
|
+
...Object.values(carouselRootAxis).flatMap(splitClassTokens),
|
|
201
|
+
...Object.values(carouselViewportAxis).flatMap(splitClassTokens),
|
|
140
202
|
...Object.values(carouselControlStates).flatMap(splitClassTokens),
|
|
141
203
|
...Object.values(carouselIndicatorsVariants).flatMap(splitClassTokens),
|
|
142
204
|
...Object.values(carouselDotStates).flatMap(splitClassTokens),
|
|
@@ -169,4 +231,4 @@ var grCarouselConfig = defineGranularComponent(import.meta.url, {
|
|
|
169
231
|
safelist: grCarouselSafelist
|
|
170
232
|
});
|
|
171
233
|
//#endregion
|
|
172
|
-
export {
|
|
234
|
+
export { grCarouselControlClass as _, carouselRootBase as a, carouselThumbFallbackClass as c, carouselTrackAxis as d, carouselTrackBase as f, carouselViewportTouchAction as g, carouselViewportSwipeClass as h, carouselRootAxis as i, carouselThumbImageClass as l, carouselViewportBase as m, grCarouselSafelist as n, carouselSlideAxis as o, carouselViewportAxis as p, carouselIconClass as r, carouselSlideBase as s, grCarouselConfig as t, carouselToggleClass as u, grCarouselIndicatorClass as v, grCarouselIndicatorsClass as y };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-CPhcZzHi.js","names":[],"sources":["../../src/components/GrCarousel/grCarouselStyles.ts","../../src/components/GrCarousel/safelist.ts","../../src/components/GrCarousel/config.ts"],"sourcesContent":["import type { GrTone } from '../shared/tones'\n\n/**\n * Вид переключателя слайдов. `none` меняет не только внешность, но и роль самих\n * слайдов: без переключателя `tabpanel` не к чему привязать — см. `GrCarousel.vue`.\n */\nexport const GR_CAROUSEL_INDICATORS = ['dots', 'thumbnails', 'none'] as const\nexport type GrCarouselIndicators = typeof GR_CAROUSEL_INDICATORS[number]\n\n/**\n * Тон текущего переключателя. Своей шкалы компонент не заводит: она одна на\n * пакет, и хук `--gr-carousel-dot-active` перебивает её точечно.\n */\nconst dotToneVars: Record<GrTone, string> = {\n primary: 'var(--gr-carousel-dot-active,var(--gr-primary))',\n neutral: 'var(--gr-carousel-dot-active,var(--gr-secondary))',\n success: 'var(--gr-carousel-dot-active,var(--gr-success))',\n warning: 'var(--gr-carousel-dot-active,var(--gr-warning))',\n danger: 'var(--gr-carousel-dot-active,var(--gr-danger))',\n info: 'var(--gr-carousel-dot-active,var(--gr-info))',\n slate: 'var(--gr-carousel-dot-active,var(--gr-slate))',\n azure: 'var(--gr-carousel-dot-active,var(--gr-azure))',\n}\n\n/**\n * Текущая точка: заливка **и** обвод вокруг неё.\n *\n * Одной заливки мало: при диаметре в 8 пикселей текущая точка отличалась от\n * соседних только оттенком, а на тон вроде `slate` разница почти пропадала. Обвод\n * добавляет второй признак — форму, — и работает там, где цвет не различают.\n *\n * `outline`, а не `ring`: он рисуется вне потока и не требует цвета подложки под\n * зазор, тогда как `ring-offset` пришлось бы красить в фон страницы, которого\n * компонент не знает.\n */\n/**\n * Скобки приносит хелпер, а не литерал.\n *\n * Гейт safelist читает класс-литералы `.ts`-хелперов статически, и запись вида\n * `` `bg-[${color}]` `` он видит как класс, которого в safelist нет. Приём взят\n * у `GrProgressBar`: в литерале скобок не остаётся вовсе.\n */\nfunction arbitrary(value: string): string {\n return `[${value}]`\n}\n\n/**\n * Текущая точка: заливка **и** обвод вокруг неё.\n *\n * Одной заливки мало: при диаметре в 8 пикселей текущая точка отличалась от\n * соседних только оттенком, а на приглушённом тоне разница почти пропадала.\n * Обвод добавляет второй признак — форму, — и работает там, где цвет не\n * различают.\n *\n * `outline`, а не `ring`: он рисуется вне потока и не требует цвета подложки под\n * зазор, тогда как `ring-offset` пришлось бы красить в фон страницы, которого\n * компонент не знает.\n */\nexport function grCarouselDotActiveClass(tone: GrTone): string {\n const color = dotToneVars[tone]\n\n return [\n `bg-${arbitrary(color)}`,\n arbitrary(`outline:var(--gr-carousel-dot-ring-width,2px)_solid_${color}`),\n arbitrary('outline-offset:var(--gr-carousel-dot-ring-offset,2px)'),\n ].join(' ')\n}\n\nexport function grCarouselThumbActiveClass(tone: GrTone): string {\n return `border-${arbitrary(dotToneVars[tone])}`\n}\n\n/** `automatic` — стрелка по индикаторам сразу листает; `manual` — только двигает фокус. */\nexport const GR_CAROUSEL_ACTIVATION_MODES = ['automatic', 'manual'] as const\nexport type GrCarouselActivationMode = typeof GR_CAROUSEL_ACTIVATION_MODES[number]\n\nexport const carouselRootBase = 'relative w-full'\n\n/**\n * Вертикальная лента: высоту задаёт потребитель **на корне**, а вьюпорт обязан\n * её получить.\n *\n * Иначе высота вьюпорта выводится из содержимого, процентная `flex-basis`\n * кадров упирается в неопределённый размер и вырождается в высоту содержимого —\n * кадры встают столбцом, а лента честно считает шаг от суммы. Отсюда колонка на\n * корне и `flex-1 min-h-0` на вьюпорте: полоса переключателей остаётся под ним,\n * а вьюпорт забирает остаток.\n */\nexport const carouselRootAxis: Record<GrCarouselOrientation, string> = {\n horizontal: '',\n vertical: 'flex flex-col',\n}\n\nexport const carouselViewportAxis: Record<GrCarouselOrientation, string> = {\n horizontal: '',\n vertical: 'min-h-0 flex-1',\n}\n\nexport const carouselViewportBase = 'relative w-full overflow-hidden'\n\n/**\n * Вертикальная прокрутка страницы остаётся браузеру, горизонталь забирает лента.\n * `select-none` — против выделения текста слайда протяжкой.\n */\nexport const carouselViewportSwipeClass = 'select-none'\n\nexport const carouselTrackBase = 'flex will-change-transform transition-transform duration-[var(--gr-duration-base)] ease-[var(--gr-ease-out)]'\n\nexport const GR_CAROUSEL_ORIENTATIONS = ['horizontal', 'vertical'] as const\nexport type GrCarouselOrientation = typeof GR_CAROUSEL_ORIENTATIONS[number]\n\nexport const carouselSlideBase = 'shrink-0 grow-0 basis-full'\n\n/**\n * Кадр занимает вьюпорт целиком по оси движения. Поперёк оси он не ограничен:\n * там размер задаёт содержимое, как и раньше.\n */\nexport const carouselSlideAxis: Record<GrCarouselOrientation, string> = {\n horizontal: 'w-full min-w-0',\n vertical: 'h-full min-h-0',\n}\n\n/**\n * Направление ленты. По вертикали ей нужна **определённая высота вьюпорта**:\n * `translateY(-100%)` считается от высоты самой ленты, а она у колонки равна\n * сумме кадров, если вьюпорт высоту не задал.\n */\nexport const carouselTrackAxis: Record<GrCarouselOrientation, string> = {\n horizontal: 'w-full',\n vertical: 'h-full flex-col',\n}\n\n/** Жест по оси движения перехватывается лентой, поперёк — отдаётся странице. */\nexport const carouselViewportTouchAction: Record<GrCarouselOrientation, string> = {\n horizontal: '[touch-action:pan-y]',\n vertical: '[touch-action:pan-x]',\n}\n\n/**\n * Стрелки стоят по оси движения. По горизонтали позиции логические\n * (`start`/`end`) — они зеркалятся под RTL; по вертикали направление письма ни\n * при чём, поэтому там физические `top`/`bottom`.\n */\nexport const carouselControlAxis: Record<GrCarouselOrientation, string> = {\n horizontal: 'top-1/2 -translate-y-1/2',\n vertical: 'left-1/2 -translate-x-1/2',\n}\n\n/**\n * Стрелки лежат поверх произвольного содержимого, поэтому несут собственную\n * подложку: на светлом кадре иконка без неё пропадает. `z-10` — порядок внутри\n * собственного stacking-контекста компонента, а не слой страницы.\n */\nexport const carouselControlBase = 'absolute z-10 inline-flex h-9 w-9 items-center justify-center rounded-[var(--gr-radius-full)] border border-[var(--gr-brd)] bg-[var(--gr-carousel-control-bg,var(--gr-bg))] text-[var(--gr-carousel-control-fg,var(--gr-fg))] transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\n\nexport const carouselControlPositions: Record<GrCarouselOrientation, Record<'prev' | 'next', string>> = {\n horizontal: {\n prev: 'start-2',\n next: 'end-2',\n },\n vertical: {\n prev: 'top-2',\n next: 'bottom-2',\n },\n}\n\n/**\n * Стрелка на краю без `loop` гасится фоном, а не `opacity`: прозрачность\n * разбавляет выверенные на AA токены текста и роняет контраст.\n */\nexport const carouselControlStates = {\n idle: 'hover:bg-[var(--gr-carousel-control-bg-hover,var(--gr-muted))]',\n disabled: 'cursor-not-allowed bg-[var(--gr-muted)] text-[var(--gr-disabled-fg)]',\n} as const\n\n/** Тумблер автопрокрутки: тот же хром, что у стрелок, но в углу ленты. */\nexport const carouselToggleClass = 'absolute end-2 top-2 z-10 inline-flex h-8 w-8 items-center justify-center rounded-[var(--gr-radius-full)] border border-[var(--gr-brd)] bg-[var(--gr-carousel-control-bg,var(--gr-bg))] text-[var(--gr-carousel-control-fg,var(--gr-fg))] transition-colors hover:bg-[var(--gr-carousel-control-bg-hover,var(--gr-muted))] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\n\nexport const carouselIconClass = 'h-4 w-4 shrink-0'\n\n/**\n * Полоса переключателей прокручивается, а не переносится: перенос увёл бы\n * миниатюры под соседний блок. Своей остановки `Tab` у неё нет — её дети\n * фокусируемы, и вторая остановка была бы лишней (приём `GrTabs`).\n */\nexport const carouselIndicatorsBase = 'flex max-w-full items-center overflow-x-auto [scrollbar-width:none] [&::-webkit-scrollbar]:hidden'\n\nexport const carouselIndicatorsVariants = {\n // Поля по вертикали не украшение: полоса — скроллер, а `overflow-x: auto`\n // по спецификации обрезает и по вертикали, и обвод текущей точки срезался бы.\n dots: 'justify-center gap-[var(--gr-carousel-gap,0.5rem)] px-1 pt-3.5 pb-1.5',\n thumbnails: 'gap-[var(--gr-carousel-gap,0.5rem)] pt-3',\n none: '',\n} as const\n\nexport const carouselIndicatorBase = 'shrink-0 transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\n\nexport const carouselDotBase = 'rounded-[var(--gr-radius-full)] h-[var(--gr-carousel-dot-size,0.5rem)] w-[var(--gr-carousel-dot-size,0.5rem)]'\n\nexport const carouselDotStates = {\n idle: 'bg-[var(--gr-carousel-dot,var(--gr-brd))] hover:bg-[var(--gr-muted-fg)]',\n} as const\n\nexport const carouselThumbBase = 'overflow-hidden rounded-[var(--gr-radius-md)] border-2 w-[var(--gr-carousel-thumb-width,4rem)] h-[var(--gr-carousel-thumb-height,2.5rem)]'\n\nexport const carouselThumbStates = {\n idle: 'border-[var(--gr-brd)] hover:border-[var(--gr-muted-fg)]',\n} as const\n\nexport const carouselThumbImageClass = 'h-full w-full object-cover'\n\n/** Миниатюры не дали — плитка держит ритм полосы номером слайда. */\nexport const carouselThumbFallbackClass = 'flex h-full w-full items-center justify-center bg-[var(--gr-muted)] text-[var(--gr-muted-fg)] text-[length:var(--gr-control-text-xs)] leading-[var(--gr-control-leading-xs)]'\n\nexport function grCarouselControlClass(\n direction: 'prev' | 'next',\n disabled: boolean,\n orientation: GrCarouselOrientation = 'horizontal',\n): string {\n return [\n carouselControlBase,\n carouselControlAxis[orientation],\n carouselControlPositions[orientation][direction],\n disabled ? carouselControlStates.disabled : carouselControlStates.idle,\n ].join(' ')\n}\n\nexport function grCarouselIndicatorsClass(variant: GrCarouselIndicators): string {\n return [carouselIndicatorsBase, carouselIndicatorsVariants[variant]].filter(Boolean).join(' ')\n}\n\nexport function grCarouselIndicatorClass(\n variant: GrCarouselIndicators,\n active: boolean,\n tone: GrTone = 'primary',\n): string {\n if (variant === 'thumbnails') {\n return [\n carouselIndicatorBase,\n carouselThumbBase,\n active ? grCarouselThumbActiveClass(tone) : carouselThumbStates.idle,\n ].join(' ')\n }\n\n return [\n carouselIndicatorBase,\n carouselDotBase,\n active ? grCarouselDotActiveClass(tone) : carouselDotStates.idle,\n ].join(' ')\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport { GR_TONES } from '../shared/tones'\nimport {\n carouselControlAxis,\n carouselControlBase,\n carouselControlPositions,\n carouselControlStates,\n carouselDotBase,\n carouselDotStates,\n carouselIconClass,\n carouselIndicatorBase,\n carouselIndicatorsBase,\n carouselIndicatorsVariants,\n carouselRootAxis,\n carouselRootBase,\n carouselSlideAxis,\n carouselSlideBase,\n carouselThumbBase,\n carouselThumbFallbackClass,\n carouselThumbImageClass,\n carouselThumbStates,\n carouselToggleClass,\n grCarouselDotActiveClass,\n grCarouselThumbActiveClass,\n carouselTrackAxis,\n carouselTrackBase,\n carouselViewportAxis,\n carouselViewportBase,\n carouselViewportSwipeClass,\n carouselViewportTouchAction,\n} from './grCarouselStyles'\n\nexport const grCarouselSafelist = [...new Set([\n // Тон приходит пропом, поэтому в скан попадает не он, а вся шкала.\n ...GR_TONES.flatMap(tone => splitClassTokens(grCarouselDotActiveClass(tone))),\n ...GR_TONES.flatMap(tone => splitClassTokens(grCarouselThumbActiveClass(tone))),\n ...Object.values(carouselControlPositions).flatMap(positions => Object.values(positions).flatMap(splitClassTokens)),\n ...Object.values(carouselControlAxis).flatMap(splitClassTokens),\n ...Object.values(carouselTrackAxis).flatMap(splitClassTokens),\n ...Object.values(carouselSlideAxis).flatMap(splitClassTokens),\n ...Object.values(carouselViewportTouchAction).flatMap(splitClassTokens),\n ...Object.values(carouselRootAxis).flatMap(splitClassTokens),\n ...Object.values(carouselViewportAxis).flatMap(splitClassTokens),\n ...Object.values(carouselControlStates).flatMap(splitClassTokens),\n ...Object.values(carouselIndicatorsVariants).flatMap(splitClassTokens),\n ...Object.values(carouselDotStates).flatMap(splitClassTokens),\n ...Object.values(carouselThumbStates).flatMap(splitClassTokens),\n ...splitClassTokens(carouselRootBase),\n ...splitClassTokens(carouselViewportBase),\n ...splitClassTokens(carouselViewportSwipeClass),\n ...splitClassTokens(carouselTrackBase),\n ...splitClassTokens(carouselSlideBase),\n ...splitClassTokens(carouselControlBase),\n ...splitClassTokens(carouselToggleClass),\n ...splitClassTokens(carouselIconClass),\n ...splitClassTokens(carouselIndicatorsBase),\n ...splitClassTokens(carouselIndicatorBase),\n ...splitClassTokens(carouselDotBase),\n ...splitClassTokens(carouselThumbBase),\n ...splitClassTokens(carouselThumbImageClass),\n ...splitClassTokens(carouselThumbFallbackClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grCarouselSafelist } from './safelist'\n\n/**\n * `dependencies` пуст намеренно: стрелки и тумблер — обычные `<button>`, а не\n * `GrButton`. Тот связывает `disabled` с нативным атрибутом, а стрелка на краю\n * без `loop` обязана остаться фокусируемой (`aria-disabled`), иначе фокус\n * падает в `<body>` ровно в момент, когда пользователь долистал до конца.\n */\nexport const grCarouselConfig = defineGranularComponent(import.meta.url, {\n name: 'GrCarousel',\n safelist: grCarouselSafelist,\n})\n"],"mappings":";;;;;;;;AAaA,IAAM,cAAsC;CAC1C,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,QAAQ;CACR,MAAM;CACN,OAAO;CACP,OAAO;AACT;;;;;;;;;;;;;;;;;;;AAoBA,SAAS,UAAU,OAAuB;CACxC,OAAO,IAAI,MAAM;AACnB;;;;;;;;;;;;;AAcA,SAAgB,yBAAyB,MAAsB;CAC7D,MAAM,QAAQ,YAAY;CAE1B,OAAO;EACL,MAAM,UAAU,KAAK;EACrB,UAAU,uDAAuD,OAAO;EACxE,UAAU,uDAAuD;CACnE,CAAC,CAAC,KAAK,GAAG;AACZ;AAEA,SAAgB,2BAA2B,MAAsB;CAC/D,OAAO,UAAU,UAAU,YAAY,KAAK;AAC9C;AAMA,IAAa,mBAAmB;;;;;;;;;;;AAYhC,IAAa,mBAA0D;CACrE,YAAY;CACZ,UAAU;AACZ;AAEA,IAAa,uBAA8D;CACzE,YAAY;CACZ,UAAU;AACZ;AAEA,IAAa,uBAAuB;;;;;AAMpC,IAAa,6BAA6B;AAE1C,IAAa,oBAAoB;AAKjC,IAAa,oBAAoB;;;;;AAMjC,IAAa,oBAA2D;CACtE,YAAY;CACZ,UAAU;AACZ;;;;;;AAOA,IAAa,oBAA2D;CACtE,YAAY;CACZ,UAAU;AACZ;;AAGA,IAAa,8BAAqE;CAChF,YAAY;CACZ,UAAU;AACZ;;;;;;AAOA,IAAa,sBAA6D;CACxE,YAAY;CACZ,UAAU;AACZ;;;;;;AAOA,IAAa,sBAAsB;AAEnC,IAAa,2BAA2F;CACtG,YAAY;EACV,MAAM;EACN,MAAM;CACR;CACA,UAAU;EACR,MAAM;EACN,MAAM;CACR;AACF;;;;;AAMA,IAAa,wBAAwB;CACnC,MAAM;CACN,UAAU;AACZ;;AAGA,IAAa,sBAAsB;AAEnC,IAAa,oBAAoB;;;;;;AAOjC,IAAa,yBAAyB;AAEtC,IAAa,6BAA6B;CAGxC,MAAM;CACN,YAAY;CACZ,MAAM;AACR;AAEA,IAAa,wBAAwB;AAErC,IAAa,kBAAkB;AAE/B,IAAa,oBAAoB,EAC/B,MAAM,0EACR;AAEA,IAAa,oBAAoB;AAEjC,IAAa,sBAAsB,EACjC,MAAM,2DACR;AAEA,IAAa,0BAA0B;;AAGvC,IAAa,6BAA6B;AAE1C,SAAgB,uBACd,WACA,UACA,cAAqC,cAC7B;CACR,OAAO;EACL;EACA,oBAAoB;EACpB,yBAAyB,YAAY,CAAC;EACtC,WAAW,sBAAsB,WAAW,sBAAsB;CACpE,CAAC,CAAC,KAAK,GAAG;AACZ;AAEA,SAAgB,0BAA0B,SAAuC;CAC/E,OAAO,CAAC,wBAAwB,2BAA2B,QAAQ,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;AAC/F;AAEA,SAAgB,yBACd,SACA,QACA,OAAe,WACP;CACR,IAAI,YAAY,cACd,OAAO;EACL;EACA;EACA,SAAS,2BAA2B,IAAI,IAAI,oBAAoB;CAClE,CAAC,CAAC,KAAK,GAAG;CAGZ,OAAO;EACL;EACA;EACA,SAAS,yBAAyB,IAAI,IAAI,kBAAkB;CAC9D,CAAC,CAAC,KAAK,GAAG;AACZ;;;ACzNA,IAAa,qBAAqB,CAAC,mBAAG,IAAI,IAAI;CAE5C,GAAG,SAAS,SAAQ,SAAQ,iBAAiB,yBAAyB,IAAI,CAAC,CAAC;CAC5E,GAAG,SAAS,SAAQ,SAAQ,iBAAiB,2BAA2B,IAAI,CAAC,CAAC;CAC9E,GAAG,OAAO,OAAO,wBAAwB,CAAC,CAAC,SAAQ,cAAa,OAAO,OAAO,SAAS,CAAC,CAAC,QAAQ,gBAAgB,CAAC;CAClH,GAAG,OAAO,OAAO,mBAAmB,CAAC,CAAC,QAAQ,gBAAgB;CAC9D,GAAG,OAAO,OAAO,iBAAiB,CAAC,CAAC,QAAQ,gBAAgB;CAC5D,GAAG,OAAO,OAAO,iBAAiB,CAAC,CAAC,QAAQ,gBAAgB;CAC5D,GAAG,OAAO,OAAO,2BAA2B,CAAC,CAAC,QAAQ,gBAAgB;CACtE,GAAG,OAAO,OAAO,gBAAgB,CAAC,CAAC,QAAQ,gBAAgB;CAC3D,GAAG,OAAO,OAAO,oBAAoB,CAAC,CAAC,QAAQ,gBAAgB;CAC/D,GAAG,OAAO,OAAO,qBAAqB,CAAC,CAAC,QAAQ,gBAAgB;CAChE,GAAG,OAAO,OAAO,0BAA0B,CAAC,CAAC,QAAQ,gBAAgB;CACrE,GAAG,OAAO,OAAO,iBAAiB,CAAC,CAAC,QAAQ,gBAAgB;CAC5D,GAAG,OAAO,OAAO,mBAAmB,CAAC,CAAC,QAAQ,gBAAgB;CAC9D,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,0BAA0B;CAC9C,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,sBAAsB;CAC1C,GAAG,iBAAiB,qBAAqB;CACzC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,uBAAuB;CAC3C,GAAG,iBAAiB,0BAA0B;AAChD,CAAC,CAAC;;;;;;;;;ACnDF,IAAa,mBAAmB,wBAAwB,YAAY,KAAK;CACvE,MAAM;CACN,UAAU;AACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-CWtfxkM9.js","names":[],"sources":["../../src/components/GrEmptyState/grEmptyStateStyles.ts","../../src/components/GrEmptyState/safelist.ts","../../src/components/GrEmptyState/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\nexport type GrEmptyStateSize = GrComponentSize\n\n/** Поверхность карточки. `ghost` — для встраивания в уже существующую карточку. */\nexport const GR_EMPTY_STATE_VARIANTS = ['outlined', 'ghost'] as const\nexport type GrEmptyStateVariant = typeof GR_EMPTY_STATE_VARIANTS[number]\n\n/**\n * Уровень заголовка. `h1` намеренно нет: пустое состояние живёт внутри уже\n * существующей структуры страницы, а не задаёт её.\n */\nexport const GR_EMPTY_STATE_HEADING_LEVELS = [2, 3, 4, 5, 6] as const\nexport type GrEmptyStateHeadingLevel = typeof GR_EMPTY_STATE_HEADING_LEVELS[number]\n\nexport const rootBaseClass = 'text-center'\n\nexport const variantClass: Record<GrEmptyStateVariant, string> = {\n outlined: 'rounded-[var(--gr-radius-lg)] border border-[var(--gr-brd)] bg-[var(--gr-card)]',\n // Карточка внутри карточки: вторая рамка только шумит (тот же смысл, что у `GrCard`).\n ghost: '',\n}\n\nexport const rootPaddingBySize: Record<GrEmptyStateSize, string> = {\n xs: 'p-3',\n sm: 'p-4',\n md: 'p-6',\n lg: 'p-8',\n}\n\nexport const iconBoxBaseClass = 'flex items-center justify-center border border-[var(--gr-brd)] bg-[var(--gr-muted)] text-[var(--gr-muted-fg)]'\n\nexport const iconBoxBySize: Record<GrEmptyStateSize, string> = {\n xs: 'h-8 w-8 rounded-[var(--gr-radius-md)]',\n sm: 'h-10 w-10 rounded-[var(--gr-radius-md)]',\n md: 'h-12 w-12 rounded-[var(--gr-radius-lg)]',\n lg: 'h-14 w-14 rounded-[var(--gr-radius-lg)]',\n}\n\n/** Размер самой иконки в пикселях — `GrIcon` принимает число. */\nexport const iconSizeBySize: Record<GrEmptyStateSize, number> = {\n xs: 16,\n sm: 20,\n md: 24,\n lg: 28,\n}\n\n/**\n * `mb-0` гасит браузерный отступ снизу у настоящего заголовка: без сброса\n * карточка разъезжается по вертикали.\n */\nexport const titleBaseClass = 'mb-0 font-700'\n\nexport const titleBySize: Record<GrEmptyStateSize, string> = {\n xs: 'mt-2 text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]',\n sm: 'mt-3 text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]',\n md: 'mt-4 text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]',\n lg: 'mt-5 text-[length:var(--gr-text-base)] leading-[var(--gr-leading-base)]',\n}\n\nexport const descriptionBaseClass = 'text-[var(--gr-muted-fg)]'\n\nexport const descriptionBySize: Record<GrEmptyStateSize, string> = {\n xs: 'mt-0.5 text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]',\n sm: 'mt-1 text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]',\n md: 'mt-1 text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]',\n lg: 'mt-2 text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]',\n}\n\nexport const actionsBaseClass = 'flex justify-center'\n\nexport const actionsBySize: Record<GrEmptyStateSize, string> = {\n xs: 'mt-2',\n sm: 'mt-3',\n md: 'mt-4',\n lg: 'mt-5',\n}\n\nexport function grEmptyStateRootClass(options: {\n variant: GrEmptyStateVariant\n size: GrEmptyStateSize\n}): string {\n return [rootBaseClass, variantClass[options.variant], rootPaddingBySize[options.size]]\n .filter(Boolean)\n .join(' ')\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n actionsBaseClass,\n actionsBySize,\n descriptionBaseClass,\n descriptionBySize,\n iconBoxBaseClass,\n iconBoxBySize,\n rootBaseClass,\n rootPaddingBySize,\n titleBaseClass,\n titleBySize,\n variantClass,\n} from './grEmptyStateStyles'\n\nexport const grEmptyStateSafelist = [...new Set([\n ...splitClassTokens(rootBaseClass),\n ...splitClassTokens(iconBoxBaseClass),\n ...splitClassTokens(titleBaseClass),\n ...splitClassTokens(descriptionBaseClass),\n ...splitClassTokens(actionsBaseClass),\n ...Object.values(variantClass).flatMap(splitClassTokens),\n ...Object.values(rootPaddingBySize).flatMap(splitClassTokens),\n ...Object.values(iconBoxBySize).flatMap(splitClassTokens),\n ...Object.values(titleBySize).flatMap(splitClassTokens),\n ...Object.values(descriptionBySize).flatMap(splitClassTokens),\n ...Object.values(actionsBySize).flatMap(splitClassTokens),\n // Центрирование блока иконки живёт литералом в шаблоне.\n ...splitClassTokens('flex justify-center'),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grEmptyStateSafelist } from './safelist'\n\nexport const grEmptyStateConfig = defineGranularComponent(import.meta.url, {\n name: 'GrEmptyState',\n safelist: grEmptyStateSafelist,\n dependencies: ['GrIcon'],\n})\n"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"config-CWtfxkM9.js","names":[],"sources":["../../src/components/GrEmptyState/grEmptyStateStyles.ts","../../src/components/GrEmptyState/safelist.ts","../../src/components/GrEmptyState/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\nexport type GrEmptyStateSize = GrComponentSize\n\n/** Поверхность карточки. `ghost` — для встраивания в уже существующую карточку. */\nexport const GR_EMPTY_STATE_VARIANTS = ['outlined', 'ghost'] as const\nexport type GrEmptyStateVariant = typeof GR_EMPTY_STATE_VARIANTS[number]\n\n/**\n * Уровень заголовка. `h1` намеренно нет: пустое состояние живёт внутри уже\n * существующей структуры страницы, а не задаёт её.\n */\n/**\n * Что за пустота. Значений два, и это не упрощение, а весь корпус: по репозиторию\n * повторяются ровно они — «ещё ничего не создано» и «под запросом не нашлось».\n *\n * Разводить их обязательно: дефолтный заголовок «Пока пусто» под фильтром\n * дезинформирует — данные есть, просто не совпали. Ошибка загрузки сюда не\n * входит намеренно, у неё в пакете свои компоненты (`GrResponseErrorBanner`).\n */\nexport const GR_EMPTY_STATE_KINDS = ['empty', 'search'] as const\nexport type GrEmptyStateKind = typeof GR_EMPTY_STATE_KINDS[number]\n\nexport const GR_EMPTY_STATE_HEADING_LEVELS = [2, 3, 4, 5, 6] as const\nexport type GrEmptyStateHeadingLevel = typeof GR_EMPTY_STATE_HEADING_LEVELS[number]\n\nexport const rootBaseClass = 'text-center'\n\nexport const variantClass: Record<GrEmptyStateVariant, string> = {\n outlined: 'rounded-[var(--gr-radius-lg)] border border-[var(--gr-brd)] bg-[var(--gr-card)]',\n // Карточка внутри карточки: вторая рамка только шумит (тот же смысл, что у `GrCard`).\n ghost: '',\n}\n\nexport const rootPaddingBySize: Record<GrEmptyStateSize, string> = {\n xs: 'p-3',\n sm: 'p-4',\n md: 'p-6',\n lg: 'p-8',\n}\n\nexport const iconBoxBaseClass = 'flex items-center justify-center border border-[var(--gr-brd)] bg-[var(--gr-muted)] text-[var(--gr-muted-fg)]'\n\nexport const iconBoxBySize: Record<GrEmptyStateSize, string> = {\n xs: 'h-8 w-8 rounded-[var(--gr-radius-md)]',\n sm: 'h-10 w-10 rounded-[var(--gr-radius-md)]',\n md: 'h-12 w-12 rounded-[var(--gr-radius-lg)]',\n lg: 'h-14 w-14 rounded-[var(--gr-radius-lg)]',\n}\n\n/** Размер самой иконки в пикселях — `GrIcon` принимает число. */\nexport const iconSizeBySize: Record<GrEmptyStateSize, number> = {\n xs: 16,\n sm: 20,\n md: 24,\n lg: 28,\n}\n\n/**\n * `mb-0` гасит браузерный отступ снизу у настоящего заголовка: без сброса\n * карточка разъезжается по вертикали.\n */\nexport const titleBaseClass = 'mb-0 font-700'\n\nexport const titleBySize: Record<GrEmptyStateSize, string> = {\n xs: 'mt-2 text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]',\n sm: 'mt-3 text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]',\n md: 'mt-4 text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]',\n lg: 'mt-5 text-[length:var(--gr-text-base)] leading-[var(--gr-leading-base)]',\n}\n\nexport const descriptionBaseClass = 'text-[var(--gr-muted-fg)]'\n\nexport const descriptionBySize: Record<GrEmptyStateSize, string> = {\n xs: 'mt-0.5 text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]',\n sm: 'mt-1 text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]',\n md: 'mt-1 text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]',\n lg: 'mt-2 text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]',\n}\n\nexport const actionsBaseClass = 'flex justify-center'\n\nexport const actionsBySize: Record<GrEmptyStateSize, string> = {\n xs: 'mt-2',\n sm: 'mt-3',\n md: 'mt-4',\n lg: 'mt-5',\n}\n\nexport function grEmptyStateRootClass(options: {\n variant: GrEmptyStateVariant\n size: GrEmptyStateSize\n}): string {\n return [rootBaseClass, variantClass[options.variant], rootPaddingBySize[options.size]]\n .filter(Boolean)\n .join(' ')\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n actionsBaseClass,\n actionsBySize,\n descriptionBaseClass,\n descriptionBySize,\n iconBoxBaseClass,\n iconBoxBySize,\n rootBaseClass,\n rootPaddingBySize,\n titleBaseClass,\n titleBySize,\n variantClass,\n} from './grEmptyStateStyles'\n\nexport const grEmptyStateSafelist = [...new Set([\n ...splitClassTokens(rootBaseClass),\n ...splitClassTokens(iconBoxBaseClass),\n ...splitClassTokens(titleBaseClass),\n ...splitClassTokens(descriptionBaseClass),\n ...splitClassTokens(actionsBaseClass),\n ...Object.values(variantClass).flatMap(splitClassTokens),\n ...Object.values(rootPaddingBySize).flatMap(splitClassTokens),\n ...Object.values(iconBoxBySize).flatMap(splitClassTokens),\n ...Object.values(titleBySize).flatMap(splitClassTokens),\n ...Object.values(descriptionBySize).flatMap(splitClassTokens),\n ...Object.values(actionsBySize).flatMap(splitClassTokens),\n // Центрирование блока иконки живёт литералом в шаблоне.\n ...splitClassTokens('flex justify-center'),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grEmptyStateSafelist } from './safelist'\n\nexport const grEmptyStateConfig = defineGranularComponent(import.meta.url, {\n name: 'GrEmptyState',\n safelist: grEmptyStateSafelist,\n dependencies: ['GrIcon'],\n})\n"],"mappings":";;;AA0BA,IAAa,gBAAgB;AAE7B,IAAa,eAAoD;CAC/D,UAAU;CAEV,OAAO;AACT;AAEA,IAAa,oBAAsD;CACjE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,mBAAmB;AAEhC,IAAa,gBAAkD;CAC7D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,iBAAmD;CAC9D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;AAMA,IAAa,iBAAiB;AAE9B,IAAa,cAAgD;CAC3D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,uBAAuB;AAEpC,IAAa,oBAAsD;CACjE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,mBAAmB;AAEhC,IAAa,gBAAkD;CAC7D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,SAAgB,sBAAsB,SAG3B;CACT,OAAO;EAAC;EAAe,aAAa,QAAQ;EAAU,kBAAkB,QAAQ;CAAK,CAAC,CACnF,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;AACb;;;ACjFA,IAAa,uBAAuB,CAAC,mBAAG,IAAI,IAAI;CAC9C,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,OAAO,OAAO,YAAY,CAAC,CAAC,QAAQ,gBAAgB;CACvD,GAAG,OAAO,OAAO,iBAAiB,CAAC,CAAC,QAAQ,gBAAgB;CAC5D,GAAG,OAAO,OAAO,aAAa,CAAC,CAAC,QAAQ,gBAAgB;CACxD,GAAG,OAAO,OAAO,WAAW,CAAC,CAAC,QAAQ,gBAAgB;CACtD,GAAG,OAAO,OAAO,iBAAiB,CAAC,CAAC,QAAQ,gBAAgB;CAC5D,GAAG,OAAO,OAAO,aAAa,CAAC,CAAC,QAAQ,gBAAgB;CAExD,GAAG,iBAAiB,qBAAqB;AAC3C,CAAC,CAAC;;;ACzBF,IAAa,qBAAqB,wBAAwB,YAAY,KAAK;CACzE,MAAM;CACN,UAAU;CACV,cAAc,CAAC,QAAQ;AACzB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as splitClassTokens, t as flattenTransitionTokens } from "./classTokens-8v2XC74x.js";
|
|
2
|
-
import {
|
|
3
|
-
import { C as selectSizeClassBySize, S as selectOptionWidthClass, _ as selectOptionActiveClass, a as grSelectLinkNativeLabelDisabledClass, b as selectOptionEnabledClass, f as invalidBorderClass, g as selectLinkVariantClassByVariant, h as selectLinkSizeClassBySize, m as selectLinkNativeLabelVariantClassByVariant, n as defaultBaseClass, o as grSelectLinkNativeLabelFocusClass, p as linkBaseClass, r as grSelectLinkNativeLabelBaseClass, s as grSelectLinkNativeOverlayClass, t as borderClassByState, u as grSelectPanelClasses, v as selectOptionBaseClass, x as selectOptionLinkWidthClass, y as selectOptionDisabledClass } from "./grSelectStyles-
|
|
2
|
+
import { t as panelPopTransition } from "./overlayTransition-C0FDMx7Q.js";
|
|
3
|
+
import { C as selectSizeClassBySize, S as selectOptionWidthClass, _ as selectOptionActiveClass, a as grSelectLinkNativeLabelDisabledClass, b as selectOptionEnabledClass, f as invalidBorderClass, g as selectLinkVariantClassByVariant, h as selectLinkSizeClassBySize, m as selectLinkNativeLabelVariantClassByVariant, n as defaultBaseClass, o as grSelectLinkNativeLabelFocusClass, p as linkBaseClass, r as grSelectLinkNativeLabelBaseClass, s as grSelectLinkNativeOverlayClass, t as borderClassByState, u as grSelectPanelClasses, v as selectOptionBaseClass, x as selectOptionLinkWidthClass, y as selectOptionDisabledClass } from "./grSelectStyles-Cam-IG9s.js";
|
|
4
4
|
import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
|
|
5
5
|
//#region src/components/GrSelect/safelist.ts
|
|
6
6
|
var grSelectSafelist = [.../* @__PURE__ */ new Set([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config
|
|
1
|
+
{"version":3,"file":"config-CmLTCmY9.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 /**\n * Слой панели задаёт `useFloating` → `floatingLayerZIndex`: имя приходит\n * параметром, а `var()` собирается в рантайме (`overlayStack.ts`). В\n * исходниках `var(--gr-z-*)` не встречается, статический скан их не видит.\n *\n * `gr-z-modal` — из ветки `calc(var(--gr-z-modal) + N)`: панель, открытая\n * внутри модалки, встаёт над ней.\n */\n dynamicTokens: ['gr-z-dropdown', 'gr-z-modal'],\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;;;;;;;;;CASN,eAAe,CAAC,iBAAiB,YAAY;CAC7C,cAAc,CAAC,UAAU,SAAS;CAClC,UAAU;AACZ,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { n as splitClassTokens, t as flattenTransitionTokens } from "./classTokens-8v2XC74x.js";
|
|
2
|
-
import {
|
|
2
|
+
import { t as overlayListPanelClass } from "./overlayListPanel-D91jBCHU.js";
|
|
3
|
+
import { n as overlayPanelSurfaceClass, t as panelPopTransition } from "./overlayTransition-C0FDMx7Q.js";
|
|
3
4
|
import { i as controlStateIconColors, r as controlStateIconClass } from "./controlState-DoImKciE.js";
|
|
4
5
|
import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
|
|
5
6
|
//#region src/components/GrTreeSelect/grTreeSelectStyles.ts
|
|
@@ -48,7 +49,7 @@ function grTreeSelectClass(options) {
|
|
|
48
49
|
options.invalid ? invalidBorderClass : borderClassByState[options.state]
|
|
49
50
|
].join(" ");
|
|
50
51
|
}
|
|
51
|
-
var grTreeSelectPanelClass = `${overlayPanelSurfaceClass} overflow-hidden`;
|
|
52
|
+
var grTreeSelectPanelClass = `${overlayPanelSurfaceClass} ${overlayListPanelClass} overflow-hidden`;
|
|
52
53
|
/**
|
|
53
54
|
* Строка состояния панели: загрузка и «нет данных». По центру и с двойным
|
|
54
55
|
* воздухом — тот же язык, что у `GrSelect`, `GrAutocomplete` и палитры команд.
|
|
@@ -85,7 +86,11 @@ var grTreeSelectConfig = defineGranularComponent(import.meta.url, {
|
|
|
85
86
|
*/
|
|
86
87
|
dynamicTokens: ["gr-z-dropdown", "gr-z-modal"],
|
|
87
88
|
safelist: grTreeSelectSafelist,
|
|
88
|
-
dependencies: [
|
|
89
|
+
dependencies: [
|
|
90
|
+
"GrChip",
|
|
91
|
+
"GrInput",
|
|
92
|
+
"GrTree"
|
|
93
|
+
]
|
|
89
94
|
});
|
|
90
95
|
//#endregion
|
|
91
96
|
export { grTreeSelectStateClass as a, grTreeSelectPanelClass as i, grTreeSelectSafelist as n, paddingX as o, grTreeSelectClass as r, trailingZoneWidth as s, grTreeSelectConfig as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-CvtqB4ki.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 { overlayListPanelClass } from '../shared/overlayListPanel'\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} ${overlayListPanelClass} 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 { controlStateIconClass, controlStateIconColors } from '../shared/controlState'\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 ...splitClassTokens(controlStateIconClass),\n ...Object.values(controlStateIconColors).flatMap(splitClassTokens),\n ...splitClassTokens('absolute top-1/2 -translate-y-1/2 right-9 sr-only'),\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 /**\n * Слой панели задаёт `useFloating` → `floatingLayerZIndex`: имя приходит\n * параметром, а `var()` собирается в рантайме (`overlayStack.ts`). В\n * исходниках `var(--gr-z-*)` не встречается, статический скан их не видит.\n *\n * `gr-z-modal` — из ветки `calc(var(--gr-z-modal) + N)`: панель, открытая\n * внутри модалки, встаёт над ней.\n */\n dynamicTokens: ['gr-z-dropdown', 'gr-z-modal'],\n safelist: grTreeSelectSafelist,\n dependencies: ['GrChip', 'GrInput', 'GrTree'],\n})\n"],"mappings":";;;;;;AAQA,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,GAAG,sBAAsB;;;;;;AAO3F,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;CAE7C,GAAG,iBAAiB,qBAAqB;CACzC,GAAG,OAAO,OAAO,sBAAsB,CAAC,CAAC,QAAQ,gBAAgB;CACjE,GAAG,iBAAiB,mDAAmD;AACzE,CAAC,CAAC;;;AC1BF,IAAa,qBAAqB,wBAAwB,YAAY,KAAK;CACzE,MAAM;;;;;;;;;CASN,eAAe,CAAC,iBAAiB,YAAY;CAC7C,UAAU;CACV,cAAc;EAAC;EAAU;EAAW;CAAQ;AAC9C,CAAC"}
|
|
@@ -76,7 +76,11 @@ var grFormFileSafelist = [.../* @__PURE__ */ new Set([
|
|
|
76
76
|
//#region src/components/GrFormFile/config.ts
|
|
77
77
|
var grFormFileConfig = defineGranularComponent(import.meta.url, {
|
|
78
78
|
name: "GrFormFile",
|
|
79
|
-
dependencies: [
|
|
79
|
+
dependencies: [
|
|
80
|
+
"GrButton",
|
|
81
|
+
"GrIcon",
|
|
82
|
+
"GrSortableList"
|
|
83
|
+
],
|
|
80
84
|
safelist: grFormFileSafelist
|
|
81
85
|
});
|
|
82
86
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-
|
|
1
|
+
{"version":3,"file":"config-D-JgqV0J.js","names":[],"sources":["../../src/components/GrFormFile/grFormFileStyles.ts","../../src/components/GrFormFile/safelist.ts","../../src/components/GrFormFile/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\nexport type GrFormFileSize = GrComponentSize\n\n/** Имя файла, плейсхолдер, список выбранного. */\nexport const textSizes: Record<GrFormFileSize, string> = {\n xs: 'text-[length:var(--gr-control-text-xs)] leading-[var(--gr-control-leading-xs)]',\n sm: 'text-[length:var(--gr-control-text-sm)] leading-[var(--gr-control-leading-sm)]',\n md: 'text-[length:var(--gr-control-text-md)] leading-[var(--gr-leading-sm)]',\n lg: 'text-[length:var(--gr-control-text-lg)] leading-[var(--gr-leading-base)]',\n}\n\n/** Ссылка «удалить» у элемента списка — на ступень мельче имени файла. */\nexport const removeTextSizes: Record<GrFormFileSize, 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\nexport const rowGaps: Record<GrFormFileSize, string> = {\n xs: 'gap-2',\n sm: 'gap-2',\n md: 'gap-3',\n lg: 'gap-4',\n}\n\nexport const stackGaps: Record<GrFormFileSize, string> = {\n xs: 'gap-1',\n sm: 'gap-1.5',\n md: 'gap-2',\n lg: 'gap-2.5',\n}\n\n/** Отступ между иконкой и подписью внутри кнопки. */\nexport const iconOffsets: Record<GrFormFileSize, string> = {\n xs: 'ml-1',\n sm: 'ml-1.5',\n md: 'ml-2',\n lg: 'ml-2',\n}\n\n/**\n * Миниатюра картинки в строке набора.\n *\n * Квадрат с `object-cover`: файлы приходят любых пропорций, а строки списка\n * обязаны остаться одной высоты.\n */\nexport const previewSizes: Record<GrFormFileSize, string> = {\n xs: 'h-6 w-6',\n sm: 'h-7 w-7',\n md: 'h-8 w-8',\n lg: 'h-10 w-10',\n}\n\nexport const previewBaseClass = 'shrink-0 rounded-[var(--gr-radius-sm)] object-cover border border-[var(--gr-brd)]'\n\n/** Кнопки берут размер из шкалы `GrButton` — на ступень ниже самого поля. */\nexport const buttonSizes: Record<GrFormFileSize, GrComponentSize> = {\n xs: 'xs',\n sm: 'xs',\n md: 'sm',\n lg: 'md',\n}\n\n/** Иконка внутри кнопки — из шкалы `GrIcon` (`xs…lg` → `14…20px`). */\nexport const iconSizes: Record<GrFormFileSize, GrComponentSize> = {\n xs: 'xs',\n sm: 'xs',\n md: 'sm',\n lg: 'md',\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n iconOffsets,\n previewBaseClass,\n previewSizes,\n removeTextSizes,\n rowGaps,\n stackGaps,\n textSizes,\n} from './grFormFileStyles'\n\nexport const grFormFileSafelist = [...new Set([\n ...Object.values(textSizes).flatMap(splitClassTokens),\n ...Object.values(removeTextSizes).flatMap(splitClassTokens),\n ...Object.values(rowGaps).flatMap(splitClassTokens),\n ...Object.values(stackGaps).flatMap(splitClassTokens),\n ...Object.values(iconOffsets).flatMap(splitClassTokens),\n ...Object.values(previewSizes).flatMap(splitClassTokens),\n ...splitClassTokens(previewBaseClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grFormFileSafelist } from './safelist'\n\nexport const grFormFileConfig = defineGranularComponent(import.meta.url, {\n name: 'GrFormFile',\n dependencies: ['GrButton', 'GrIcon', 'GrSortableList'],\n safelist: grFormFileSafelist,\n})\n"],"mappings":";;;;AAKA,IAAa,YAA4C;CACvD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,kBAAkD;CAC7D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,UAA0C;CACrD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,YAA4C;CACvD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,cAA8C;CACzD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;;;AAQA,IAAa,eAA+C;CAC1D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,mBAAmB;;AAGhC,IAAa,cAAuD;CAClE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,YAAqD;CAChE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;AC5DA,IAAa,qBAAqB,CAAC,mBAAG,IAAI,IAAI;CAC5C,GAAG,OAAO,OAAO,SAAS,CAAC,CAAC,QAAQ,gBAAgB;CACpD,GAAG,OAAO,OAAO,eAAe,CAAC,CAAC,QAAQ,gBAAgB;CAC1D,GAAG,OAAO,OAAO,OAAO,CAAC,CAAC,QAAQ,gBAAgB;CAClD,GAAG,OAAO,OAAO,SAAS,CAAC,CAAC,QAAQ,gBAAgB;CACpD,GAAG,OAAO,OAAO,WAAW,CAAC,CAAC,QAAQ,gBAAgB;CACtD,GAAG,OAAO,OAAO,YAAY,CAAC,CAAC,QAAQ,gBAAgB;CACvD,GAAG,iBAAiB,gBAAgB;AACtC,CAAC,CAAC;;;ACfF,IAAa,mBAAmB,wBAAwB,YAAY,KAAK;CACvE,MAAM;CACN,cAAc;EAAC;EAAY;EAAU;CAAgB;CACrD,UAAU;AACZ,CAAC"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { n as splitClassTokens, t as flattenTransitionTokens } from "./classTokens-8v2XC74x.js";
|
|
2
|
-
import {
|
|
2
|
+
import { t as overlayListPanelClass } from "./overlayListPanel-D91jBCHU.js";
|
|
3
|
+
import { n as overlayPanelSurfaceClass, t as panelPopTransition } from "./overlayTransition-C0FDMx7Q.js";
|
|
3
4
|
import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
|
|
4
5
|
//#region src/components/GrAutocomplete/grAutocompleteStyles.ts
|
|
6
|
+
/** Группа опознаётся по наличию вложенного списка, а не по служебному полю. */
|
|
7
|
+
function isAutocompleteOptionGroup(item) {
|
|
8
|
+
return Array.isArray(item.options);
|
|
9
|
+
}
|
|
5
10
|
/**
|
|
6
11
|
* Оболочка (визуально повторяет `GrInput`): бордер + focus-ring по `focus-within`,
|
|
7
12
|
* т.к. фокус живёт на вложенном `<input role="combobox">`. Flex-контейнер с
|
|
@@ -63,7 +68,7 @@ var autocompleteStateClass = "flex items-center justify-center gap-2 px-3 py-4 t
|
|
|
63
68
|
* (card + бордер + shadow-2 + скругление). Держим локальную копию строки,
|
|
64
69
|
* чтобы не тянуть зависимость от `GrSelect` (компоненты гранулярно независимы).
|
|
65
70
|
*/
|
|
66
|
-
var autocompletePanelClasses = `${overlayPanelSurfaceClass} overflow-hidden`;
|
|
71
|
+
var autocompletePanelClasses = `${overlayPanelSurfaceClass} ${overlayListPanelClass} overflow-hidden`;
|
|
67
72
|
//#endregion
|
|
68
73
|
//#region src/components/GrAutocomplete/safelist.ts
|
|
69
74
|
var grAutocompleteSafelist = [.../* @__PURE__ */ new Set([
|
|
@@ -98,4 +103,4 @@ var grAutocompleteConfig = defineGranularComponent(import.meta.url, {
|
|
|
98
103
|
safelist: grAutocompleteSafelist
|
|
99
104
|
});
|
|
100
105
|
//#endregion
|
|
101
|
-
export { autocompleteShellClass as a, autocompletePanelClasses as i, grAutocompleteSafelist as n, autocompleteStateClass as o, autocompleteOptionClass as r, grAutocompleteConfig as t };
|
|
106
|
+
export { autocompleteShellClass as a, autocompletePanelClasses as i, grAutocompleteSafelist as n, autocompleteStateClass as o, autocompleteOptionClass as r, isAutocompleteOptionGroup as s, grAutocompleteConfig as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-D1oVht-E.js","names":[],"sources":["../../src/components/GrAutocomplete/grAutocompleteStyles.ts","../../src/components/GrAutocomplete/safelist.ts","../../src/components/GrAutocomplete/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\nimport { overlayListPanelClass } from '../shared/overlayListPanel'\nimport { overlayPanelSurfaceClass } from '../shared/overlayPanelSurface'\n\nexport type GrAutocompleteSize = GrComponentSize\n/**\n * Тип значения опции — те же примитивы, что у `GrSelect`: значение должно\n * однозначно восстанавливаться из строкового представления.\n */\nexport type GrAutocompleteValue = string | number\n\n/** Опция автокомплита. Метка — строка, значение параметризуется. */\nexport type GrAutocompleteOption<TValue extends GrAutocompleteValue = string> = {\n value: TValue\n label: string\n disabled?: boolean\n}\n/**\n * Группа опций: заголовок `label` + вложенные опции `options`.\n *\n * Форма та же, что у `GrSelect`: два соседних контрола, у которых списки\n * различаются только способом ввода, обязаны принимать данные одинаково.\n */\nexport type GrAutocompleteOptionGroup<TValue extends GrAutocompleteValue = string> = {\n label: string\n options: GrAutocompleteOption<TValue>[]\n}\n\n/** Элемент списка: либо одиночная опция, либо группа. */\nexport type GrAutocompleteOptionOrGroup<TValue extends GrAutocompleteValue = string>\n = | GrAutocompleteOption<TValue>\n | GrAutocompleteOptionGroup<TValue>\n\n/** Группа опознаётся по наличию вложенного списка, а не по служебному полю. */\nexport function isAutocompleteOptionGroup<TValue extends GrAutocompleteValue>(\n item: GrAutocompleteOptionOrGroup<TValue>,\n): item is GrAutocompleteOptionGroup<TValue> {\n return Array.isArray((item as GrAutocompleteOptionGroup<TValue>).options)\n}\n\nexport type GrAutocompleteModelValue<TValue extends GrAutocompleteValue = string> = TValue | TValue[]\n\n/**\n * Оболочка (визуально повторяет `GrInput`): бордер + focus-ring по `focus-within`,\n * т.к. фокус живёт на вложенном `<input role=\"combobox\">`. Flex-контейнер с\n * `flex-wrap` — чтобы chips в multiple-режиме переносились и коробка росла в высоту.\n */\nexport const autocompleteShellBase = 'relative flex w-full flex-wrap items-center gap-1 rounded-[var(--gr-radius-control)] border text-[var(--gr-fg)] transition-colors duration-[var(--gr-duration-fast)] focus-within:ring-2 focus-within:ring-[var(--gr-ring)]'\n\nexport const autocompleteShellEnabledClass = 'bg-[var(--gr-bg)]'\n\n/**\n * Заблокированная оболочка гасится фоном, а не `opacity` (как `GrInput`):\n * прозрачность разбавляет выверенные на AA токены текста и роняет контраст.\n * Фон взаимоисключающий с `autocompleteShellEnabledClass` — два `bg-*` одной\n * специфичности разрулил бы порядок в сгенерированном CSS, а не порядок в\n * списке классов.\n */\nexport const autocompleteShellDisabledClass = 'bg-[var(--gr-muted)] text-[var(--gr-muted-fg)] cursor-not-allowed'\n\n/**\n * Ошибка валидации красится своей ролью, а не декоративным тоном `danger`:\n * тема вправе развести вердикт валидации и подсветку по решению разработчика.\n */\nexport const invalidShellClass = 'border-[var(--gr-invalid-brd)] focus-within:ring-[var(--gr-invalid-ring)]'\n\n// Размеры совпадают с `GrInput`/`GrSelect` (h → min-h, чтобы multiple мог расти).\nexport const autocompleteSizeClassBySize: Record<GrAutocompleteSize, string> = {\n xs: 'min-h-7 px-2.5 py-1 text-[length:var(--gr-control-text-xs)] leading-[var(--gr-control-leading-xs)]',\n sm: 'min-h-8 px-3 py-1 text-[length:var(--gr-control-text-sm)] leading-[var(--gr-control-leading-sm)]',\n md: 'min-h-10 px-3 py-1.5 text-[length:var(--gr-control-text-md)] leading-[var(--gr-control-leading-md)]',\n lg: 'min-h-11 px-4 py-2 text-[length:var(--gr-control-text-lg)] leading-[var(--gr-control-leading-lg)]',\n}\n\nexport function autocompleteShellClass(options: {\n size: GrAutocompleteSize\n disabled: boolean\n invalid: boolean\n}): string {\n return [\n autocompleteShellBase,\n autocompleteSizeClassBySize[options.size],\n options.invalid ? invalidShellClass : 'border-[var(--gr-brd)]',\n options.disabled ? autocompleteShellDisabledClass : autocompleteShellEnabledClass,\n ]\n .filter(Boolean)\n .join(' ')\n}\n\n/** Общая подсветка наведения и активной опции. */\nconst autocompleteOptionHighlight = 'bg-[color-mix(in_srgb,var(--gr-muted)_30%,transparent)]'\n\nexport const autocompleteOptionBaseClass = 'w-full rounded-[var(--gr-radius-md)] px-3 py-2 text-left text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]'\nexport const autocompleteOptionActiveClass = autocompleteOptionHighlight\nexport const autocompleteOptionEnabledClass = `hover:${autocompleteOptionHighlight}`\n/** Выключенная опция гасится токеном текста — по той же причине, что и оболочка. */\nexport const autocompleteOptionDisabledClass = 'cursor-not-allowed text-[var(--gr-muted-fg)]'\n\nexport function autocompleteOptionClass(options: { disabled: boolean, active: boolean }): string {\n return [\n autocompleteOptionBaseClass,\n options.disabled ? autocompleteOptionDisabledClass : autocompleteOptionEnabledClass,\n !options.disabled && options.active ? autocompleteOptionActiveClass : '',\n ]\n .filter(Boolean)\n .join(' ')\n}\n\n/**\n * Строка состояния панели: загрузка, «введите ещё N», «ничего не найдено».\n *\n * По центру и с двойным вертикальным воздухом — как у `GrSelect` и палитры команд.\n * Слева, как у опций, она стоять не может: опции лежат внутри listbox с его `p-1`,\n * а состояние — сиблинг, и текст расходился с опциями на 4px.\n */\nexport const autocompleteStateClass = '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\n/**\n * Панель списка опций — тот же «язык» поверхностей, что у `GrSelect`\n * (card + бордер + shadow-2 + скругление). Держим локальную копию строки,\n * чтобы не тянуть зависимость от `GrSelect` (компоненты гранулярно независимы).\n */\nexport const autocompletePanelClasses = `${overlayPanelSurfaceClass} ${overlayListPanelClass} overflow-hidden`\n","import { flattenTransitionTokens, splitClassTokens } from '../shared/classTokens'\nimport { panelPopTransition } from '../shared/overlayTransition'\nimport {\n autocompleteOptionActiveClass,\n autocompleteOptionBaseClass,\n autocompleteOptionDisabledClass,\n autocompleteOptionEnabledClass,\n autocompletePanelClasses,\n autocompleteShellBase,\n autocompleteShellDisabledClass,\n autocompleteShellEnabledClass,\n autocompleteSizeClassBySize,\n autocompleteStateClass,\n invalidShellClass,\n} from './grAutocompleteStyles'\n\n// Всё, что живёт в `grAutocompleteStyles.ts`: и вычисляемые мапы, и строковые\n// литералы оболочки, опций и панели (чип — это `GrBadge`, его safelist приезжает\n// зависимостью). Хелпер уезжает в общий\n// `dist/chunks/`, вне области скана компонента — гейт `src/__tests__/safelist.test.ts`.\nexport const grAutocompleteSafelist = [...new Set([\n ...Object.values(autocompleteSizeClassBySize).flatMap(splitClassTokens),\n ...splitClassTokens(autocompleteShellBase),\n ...splitClassTokens(autocompleteShellEnabledClass),\n ...splitClassTokens(autocompleteShellDisabledClass),\n ...splitClassTokens(autocompletePanelClasses),\n ...splitClassTokens(autocompleteOptionBaseClass),\n ...splitClassTokens(autocompleteOptionEnabledClass),\n ...splitClassTokens(autocompleteOptionActiveClass),\n ...splitClassTokens(autocompleteOptionDisabledClass),\n ...splitClassTokens(autocompleteStateClass),\n ...splitClassTokens(invalidShellClass),\n ...splitClassTokens('border-[var(--gr-brd)]'),\n // Набор перехода панели общий на пять компонентов и живёт безадресным\n // модулем в `shared/`: в `dist` он лежит в общем чанке, который пресет не\n // сканирует, поэтому объявить его обязан каждый потребитель.\n ...flattenTransitionTokens(panelPopTransition),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grAutocompleteSafelist } from './safelist'\n\nexport const grAutocompleteConfig = defineGranularComponent(import.meta.url, {\n name: 'GrAutocomplete',\n /**\n * Слой панели задаёт `useFloating` → `floatingLayerZIndex`: имя приходит\n * параметром, а `var()` собирается в рантайме (`overlayStack.ts`). В\n * исходниках `var(--gr-z-*)` не встречается, статический скан их не видит.\n *\n * `gr-z-modal` — из ветки `calc(var(--gr-z-modal) + N)`: панель, открытая\n * внутри модалки, встаёт над ней.\n */\n dynamicTokens: ['gr-z-dropdown', 'gr-z-modal'],\n dependencies: ['GrChip'],\n safelist: grAutocompleteSafelist,\n})\n"],"mappings":";;;;;;AAkCA,SAAgB,0BACd,MAC2C;CAC3C,OAAO,MAAM,QAAS,KAA2C,OAAO;AAC1E;;;;;;AASA,IAAa,wBAAwB;AAErC,IAAa,gCAAgC;;;;;;;;AAS7C,IAAa,iCAAiC;;;;;AAM9C,IAAa,oBAAoB;AAGjC,IAAa,8BAAkE;CAC7E,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,SAAgB,uBAAuB,SAI5B;CACT,OAAO;EACL;EACA,4BAA4B,QAAQ;EACpC,QAAQ,UAAU,oBAAoB;EACtC,QAAQ,WAAW,iCAAiC;CACtD,CAAC,CACE,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;AACb;;AAGA,IAAM,8BAA8B;AAEpC,IAAa,8BAA8B;AAC3C,IAAa,gCAAgC;AAC7C,IAAa,iCAAiC,SAAS;;AAEvD,IAAa,kCAAkC;AAE/C,SAAgB,wBAAwB,SAAyD;CAC/F,OAAO;EACL;EACA,QAAQ,WAAW,kCAAkC;EACrD,CAAC,QAAQ,YAAY,QAAQ,SAAS,gCAAgC;CACxE,CAAC,CACE,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;AACb;;;;;;;;AASA,IAAa,yBAAyB;;;;;;AAOtC,IAAa,2BAA2B,GAAG,yBAAyB,GAAG,sBAAsB;;;ACtG7F,IAAa,yBAAyB,CAAC,mBAAG,IAAI,IAAI;CAChD,GAAG,OAAO,OAAO,2BAA2B,CAAC,CAAC,QAAQ,gBAAgB;CACtE,GAAG,iBAAiB,qBAAqB;CACzC,GAAG,iBAAiB,6BAA6B;CACjD,GAAG,iBAAiB,8BAA8B;CAClD,GAAG,iBAAiB,wBAAwB;CAC5C,GAAG,iBAAiB,2BAA2B;CAC/C,GAAG,iBAAiB,8BAA8B;CAClD,GAAG,iBAAiB,6BAA6B;CACjD,GAAG,iBAAiB,+BAA+B;CACnD,GAAG,iBAAiB,sBAAsB;CAC1C,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,wBAAwB;CAI5C,GAAG,wBAAwB,kBAAkB;AAC/C,CAAC,CAAC;;;ACjCF,IAAa,uBAAuB,wBAAwB,YAAY,KAAK;CAC3E,MAAM;;;;;;;;;CASN,eAAe,CAAC,iBAAiB,YAAY;CAC7C,cAAc,CAAC,QAAQ;CACvB,UAAU;AACZ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as grBadgeSafelist } from "./safelist-
|
|
1
|
+
import { t as grBadgeSafelist } from "./safelist-CSfynUC1.js";
|
|
2
2
|
import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
|
|
3
3
|
//#region src/components/GrBadge/config.ts
|
|
4
4
|
var grBadgeConfig = defineGranularComponent(import.meta.url, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-
|
|
1
|
+
{"version":3,"file":"config-DF1ezU6y.js","names":[],"sources":["../../src/components/GrBadge/config.ts"],"sourcesContent":["import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grBadgeSafelist } from './safelist'\n\nexport const grBadgeConfig = defineGranularComponent(import.meta.url, {\n name: 'GrBadge',\n safelist: grBadgeSafelist,\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":";;;AAIA,IAAa,gBAAgB,wBAAwB,YAAY,KAAK;CACpE,MAAM;CACN,UAAU;CACV,qBAAqB;EACnB,OAAO;GAAE,KAAK;GAAsB,UAAU;EAAQ;EACtD,MAAM;GAAE,KAAK;GAAqB,IAAI;EAA6B;CACrE;AACF,CAAC"}
|
|
@@ -47,6 +47,17 @@ function grInputTagWrapperClass(options) {
|
|
|
47
47
|
function grInputTagInputClass(size) {
|
|
48
48
|
return inputSizeClassBySize[size];
|
|
49
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Поле правки тега — внутри чипа, вместо его содержимого.
|
|
52
|
+
*
|
|
53
|
+
* Ни фона, ни рамки: их рисует сам чип, и второй набор внутри выглядел бы
|
|
54
|
+
* полем в поле. А вот кольцо фокуса нужно: без него чип в правке неотличим от
|
|
55
|
+
* обычного — единственным признаком остаётся каретка, и режим не виден.
|
|
56
|
+
*
|
|
57
|
+
* Ширину задаёт нативный `size` по длине черновика: в режиме правки у чипа нет
|
|
58
|
+
* содержимого, от которого он взял бы ширину.
|
|
59
|
+
*/
|
|
60
|
+
var tagEditInputClass = "min-w-[2ch] bg-transparent border-none p-0 text-inherit [font:inherit] rounded-[var(--gr-radius-sm)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]";
|
|
50
61
|
//#endregion
|
|
51
62
|
//#region src/components/GrInputTag/safelist.ts
|
|
52
63
|
var grInputTagSafelist = [.../* @__PURE__ */ new Set([
|
|
@@ -59,6 +70,7 @@ var grInputTagSafelist = [.../* @__PURE__ */ new Set([
|
|
|
59
70
|
...splitClassTokens(wrapperDisabledClass),
|
|
60
71
|
...splitClassTokens(clearButtonClass),
|
|
61
72
|
...splitClassTokens(spinnerClass),
|
|
73
|
+
...splitClassTokens(tagEditInputClass),
|
|
62
74
|
...splitClassTokens(controlStateIconClass),
|
|
63
75
|
...Object.values(controlStateIconColors).flatMap(splitClassTokens),
|
|
64
76
|
...splitClassTokens("sr-only")
|
|
@@ -71,4 +83,4 @@ var grInputTagConfig = defineGranularComponent(import.meta.url, {
|
|
|
71
83
|
safelist: grInputTagSafelist
|
|
72
84
|
});
|
|
73
85
|
//#endregion
|
|
74
|
-
export { grInputTagWrapperClass as a, grInputTagInputClass as i, grInputTagSafelist as n, spinnerClass as o, clearButtonClass as r, grInputTagConfig as t };
|
|
86
|
+
export { grInputTagWrapperClass as a, grInputTagInputClass as i, grInputTagSafelist as n, spinnerClass as o, clearButtonClass as r, tagEditInputClass as s, grInputTagConfig as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-DG41PD9i.js","names":[],"sources":["../../src/components/GrInputTag/grInputTagStyles.ts","../../src/components/GrInputTag/safelist.ts","../../src/components/GrInputTag/config.ts"],"sourcesContent":["import type { GrControlState } from '../shared/sizes'\n\nimport type { GrInputSize } from '../GrInput/GrInput.vue'\n\nexport type GrInputTagSize = GrInputSize\nexport type GrInputTagState = GrControlState\n\nexport const wrapperSizeClassBySize: Record<GrInputTagSize, string> = {\n xs: 'min-h-7 px-2.5 py-1 gap-1.5',\n sm: 'min-h-8 px-3 py-1 gap-1.5',\n md: 'min-h-10 px-3 py-1.5 gap-2',\n lg: 'min-h-11 px-4 py-2 gap-2',\n}\n\nexport const inputSizeClassBySize: Record<GrInputTagSize, string> = {\n xs: 'text-[length:var(--gr-control-text-xs)] leading-[var(--gr-control-leading-xs)]',\n sm: 'text-[length:var(--gr-control-text-sm)] leading-[var(--gr-control-leading-sm)]',\n md: 'text-[length:var(--gr-control-text-md)] leading-[var(--gr-control-leading-md)]',\n lg: 'text-[length:var(--gr-control-text-lg)] leading-[var(--gr-control-leading-lg)]',\n}\n\nexport const wrapperBorderClassByState: Record<GrInputTagState, string> = {\n default: 'border-[var(--gr-brd)]',\n success: 'border-[var(--gr-success)] focus-within:ring-[var(--gr-success)]',\n warning: 'border-[var(--gr-warning)] focus-within:ring-[var(--gr-warning)]',\n danger: 'border-[var(--gr-danger)] focus-within:ring-[var(--gr-danger)]',\n}\n\n/**\n * Ошибка валидации красится своей ролью, а не декоративным тоном `danger`:\n * `state=\"danger\"` — это подсветка по решению разработчика, `invalid` — вердикт\n * валидации, и тема вправе развести их по цвету.\n */\nexport const invalidWrapperBorderClass = 'border-[var(--gr-invalid-brd)] focus-within:ring-[var(--gr-invalid-ring)]'\n\nexport const wrapperBaseClass = 'w-full flex flex-wrap items-center rounded-[var(--gr-radius-control)] border text-[var(--gr-fg)] transition-colors duration-[var(--gr-duration-fast)] focus-within:ring-2 focus-within:ring-[var(--gr-ring)]'\n\nexport const wrapperEnabledClass = 'bg-[var(--gr-bg)] cursor-text'\n\n/**\n * Заблокированное поле гасится фоном, а не `opacity`: прозрачность разбавляет\n * выверенные на AA токены текста. Фон взаимоисключающий с `wrapperEnabledClass` —\n * два `bg-*` одной специфичности разрулил бы порядок в сгенерированном CSS.\n */\nexport const wrapperDisabledClass = 'bg-[var(--gr-muted)] text-[var(--gr-muted-fg)] cursor-not-allowed'\n\nexport const clearButtonClass = 'ml-auto shrink-0 inline-flex items-center justify-center rounded-[var(--gr-radius-control)] p-0.5 text-[var(--gr-muted-fg)] transition-colors hover:text-[var(--gr-fg)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\n\nexport const spinnerClass = 'shrink-0 inline-flex items-center justify-center text-[var(--gr-muted-fg)]'\n\nexport function grInputTagWrapperClass(options: {\n size: GrInputTagSize\n state: GrInputTagState\n invalid: boolean\n disabled: boolean\n}): string {\n return [\n wrapperBaseClass,\n wrapperSizeClassBySize[options.size],\n options.invalid ? invalidWrapperBorderClass : wrapperBorderClassByState[options.state],\n options.disabled ? wrapperDisabledClass : wrapperEnabledClass,\n ].join(' ')\n}\n\nexport function grInputTagInputClass(size: GrInputTagSize): string {\n return inputSizeClassBySize[size]\n}\n\n/**\n * Поле правки тега — внутри чипа, вместо его содержимого.\n *\n * Ни фона, ни рамки: их рисует сам чип, и второй набор внутри выглядел бы\n * полем в поле. А вот кольцо фокуса нужно: без него чип в правке неотличим от\n * обычного — единственным признаком остаётся каретка, и режим не виден.\n *\n * Ширину задаёт нативный `size` по длине черновика: в режиме правки у чипа нет\n * содержимого, от которого он взял бы ширину.\n */\nexport const tagEditInputClass = 'min-w-[2ch] bg-transparent border-none p-0 text-inherit [font:inherit] rounded-[var(--gr-radius-sm)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\n","import { splitClassTokens } from '../shared/classTokens'\nimport { controlStateIconClass, controlStateIconColors } from '../shared/controlState'\nimport {\n clearButtonClass,\n inputSizeClassBySize,\n invalidWrapperBorderClass,\n spinnerClass,\n tagEditInputClass,\n wrapperBaseClass,\n wrapperBorderClassByState,\n wrapperDisabledClass,\n wrapperEnabledClass,\n wrapperSizeClassBySize,\n} from './grInputTagStyles'\n\nexport const grInputTagSafelist = [...new Set([\n ...Object.values(wrapperSizeClassBySize).flatMap(splitClassTokens),\n ...Object.values(inputSizeClassBySize).flatMap(splitClassTokens),\n ...Object.values(wrapperBorderClassByState).flatMap(splitClassTokens),\n ...splitClassTokens(invalidWrapperBorderClass),\n ...splitClassTokens(wrapperBaseClass),\n ...splitClassTokens(wrapperEnabledClass),\n ...splitClassTokens(wrapperDisabledClass),\n ...splitClassTokens(clearButtonClass),\n ...splitClassTokens(spinnerClass),\n ...splitClassTokens(tagEditInputClass),\n // Общий модуль лежит в чанке без адреса — его классы объявляет каждый импортёр.\n ...splitClassTokens(controlStateIconClass),\n ...Object.values(controlStateIconColors).flatMap(splitClassTokens),\n ...splitClassTokens('sr-only'),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grInputTagSafelist } from './safelist'\n\nexport const grInputTagConfig = defineGranularComponent(import.meta.url, {\n name: 'GrInputTag',\n dependencies: ['GrChip', 'GrIcon'],\n safelist: grInputTagSafelist,\n})\n"],"mappings":";;;;AAOA,IAAa,yBAAyD;CACpE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,uBAAuD;CAClE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,4BAA6D;CACxE,SAAS;CACT,SAAS;CACT,SAAS;CACT,QAAQ;AACV;;;;;;AAOA,IAAa,4BAA4B;AAEzC,IAAa,mBAAmB;AAEhC,IAAa,sBAAsB;;;;;;AAOnC,IAAa,uBAAuB;AAEpC,IAAa,mBAAmB;AAEhC,IAAa,eAAe;AAE5B,SAAgB,uBAAuB,SAK5B;CACT,OAAO;EACL;EACA,uBAAuB,QAAQ;EAC/B,QAAQ,UAAU,4BAA4B,0BAA0B,QAAQ;EAChF,QAAQ,WAAW,uBAAuB;CAC5C,CAAC,CAAC,KAAK,GAAG;AACZ;AAEA,SAAgB,qBAAqB,MAA8B;CACjE,OAAO,qBAAqB;AAC9B;;;;;;;;;;;AAYA,IAAa,oBAAoB;;;AC/DjC,IAAa,qBAAqB,CAAC,mBAAG,IAAI,IAAI;CAC5C,GAAG,OAAO,OAAO,sBAAsB,CAAC,CAAC,QAAQ,gBAAgB;CACjE,GAAG,OAAO,OAAO,oBAAoB,CAAC,CAAC,QAAQ,gBAAgB;CAC/D,GAAG,OAAO,OAAO,yBAAyB,CAAC,CAAC,QAAQ,gBAAgB;CACpE,GAAG,iBAAiB,yBAAyB;CAC7C,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,YAAY;CAChC,GAAG,iBAAiB,iBAAiB;CAErC,GAAG,iBAAiB,qBAAqB;CACzC,GAAG,OAAO,OAAO,sBAAsB,CAAC,CAAC,QAAQ,gBAAgB;CACjE,GAAG,iBAAiB,SAAS;AAC/B,CAAC,CAAC;;;AC1BF,IAAa,mBAAmB,wBAAwB,YAAY,KAAK;CACvE,MAAM;CACN,cAAc,CAAC,UAAU,QAAQ;CACjC,UAAU;AACZ,CAAC"}
|
|
@@ -33,6 +33,14 @@ var placeholderPaddings = {
|
|
|
33
33
|
*/
|
|
34
34
|
var 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";
|
|
35
35
|
var columnHandleActiveClass = "opacity-100";
|
|
36
|
+
/**
|
|
37
|
+
* Кнопка меню колонки. Как и ручка переноса, в покое не видна: три значка в
|
|
38
|
+
* каждом заголовке — шум, а нужны они по случаю.
|
|
39
|
+
*
|
|
40
|
+
* Открытое меню держит кнопку видимой само (`aria-expanded`), иначе она гасла
|
|
41
|
+
* бы ровно в тот момент, когда указатель уходит с заголовка на её же панель.
|
|
42
|
+
*/
|
|
43
|
+
var columnMenuTriggerClass = "absolute end-1 top-1/2 -translate-y-1/2 inline-flex shrink-0 items-center rounded-[var(--gr-radius-sm)] text-[var(--gr-muted-fg)] opacity-0 transition-opacity duration-[var(--gr-duration-fast)] hover:text-[var(--gr-fg)] focus:outline-none focus-visible:opacity-100 focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] group-hover:opacity-100 [&[aria-expanded=true]]:opacity-100 disabled:cursor-not-allowed disabled:text-[var(--gr-disabled-fg)]";
|
|
36
44
|
/** Переносимая колонка гасится, чтобы было видно, что она «поднята». */
|
|
37
45
|
var columnDraggingClass = "bg-[var(--gr-muted)]";
|
|
38
46
|
/**
|
|
@@ -155,6 +163,7 @@ var grDataTableSafelist = [.../* @__PURE__ */ new Set([
|
|
|
155
163
|
...Object.values(headerGaps).flatMap(splitClassTokens),
|
|
156
164
|
...Object.values(spinnerSizes).flatMap(splitClassTokens),
|
|
157
165
|
...splitClassTokens(columnHandleClass),
|
|
166
|
+
...splitClassTokens(columnMenuTriggerClass),
|
|
158
167
|
...splitClassTokens(columnHandleActiveClass),
|
|
159
168
|
...splitClassTokens(columnDraggingClass),
|
|
160
169
|
...splitClassTokens(columnDropBeforeClass),
|
|
@@ -187,7 +196,8 @@ var grDataTableConfig = defineGranularComponent(import.meta.url, {
|
|
|
187
196
|
"GrIcon",
|
|
188
197
|
"GrCheckbox",
|
|
189
198
|
"GrButton",
|
|
190
|
-
"GrSkeleton"
|
|
199
|
+
"GrSkeleton",
|
|
200
|
+
"GrDropdownMenu"
|
|
191
201
|
],
|
|
192
202
|
safelist: grDataTableSafelist,
|
|
193
203
|
tokenDefinitionsRef: { light: {
|
|
@@ -196,4 +206,4 @@ var grDataTableConfig = defineGranularComponent(import.meta.url, {
|
|
|
196
206
|
} }
|
|
197
207
|
});
|
|
198
208
|
//#endregion
|
|
199
|
-
export {
|
|
209
|
+
export { rowSelectedClass as A, expandColumnWidths as C, headerTextSizes as D, headerGaps as E, summaryRowClass as F, selectColumnWidths as M, sortIconSizes as N, placeholderPaddings as O, spinnerSizes as P, expandButtonClass as S, expandIconOpenClass as T, detailCellClass as _, columnDropAfterClass as a, detailPaddings as b, columnHandleClass as c, columnPinnedLeftEdgeClass as d, columnPinnedRightEdgeClass as f, columnResizerLineClass as g, columnResizerLineActiveClass as h, columnDraggingClass as i, selectCheckboxSizes as j, rowHeightEstimates as k, columnMenuTriggerClass as l, columnResizerHoverClass as m, grDataTableSafelist as n, columnDropBeforeClass as o, columnResizerClass as p, cellPaddings as r, columnHandleActiveClass as s, grDataTableConfig as t, columnPinnedClass as u, detailContentClass as v, expandIconClass as w, detailRowClass as x, detailErrorClass as y };
|