@feugene/granularity 0.23.0 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/config-BFJIxE8b.js +62 -0
- package/dist/chunks/config-BFJIxE8b.js.map +1 -0
- package/dist/chunks/{config-DBQQT-WP.js → config-BIa3ilQm.js} +18 -3
- package/dist/chunks/config-BIa3ilQm.js.map +1 -0
- package/dist/chunks/config-BfsBepkH.js.map +1 -0
- package/dist/chunks/config-BoNR7_PD.js.map +1 -0
- package/dist/chunks/config-BuGlNPE92.js.map +1 -0
- package/dist/chunks/{config-Be9k9bOf.js → config-C8tVRv8i.js} +16 -2
- package/dist/chunks/config-C8tVRv8i.js.map +1 -0
- package/dist/chunks/config-CPSxM7XE.js +8 -0
- package/dist/chunks/config-CPSxM7XE.js.map +1 -0
- package/dist/chunks/config-D7zgE_Gr.js +107 -0
- package/dist/chunks/config-D7zgE_Gr.js.map +1 -0
- package/dist/chunks/config-DAX8Deh1.js.map +1 -0
- package/dist/chunks/config-DGCMHPCR.js +19 -0
- package/dist/chunks/config-DGCMHPCR.js.map +1 -0
- package/dist/chunks/config-DGWFal5h.js +128 -0
- package/dist/chunks/config-DGWFal5h.js.map +1 -0
- package/dist/chunks/config-DKISz9gR.js +39 -0
- package/dist/chunks/config-DKISz9gR.js.map +1 -0
- package/dist/chunks/{config-Bm_Sovla.js → config-DYgfMrIF.js} +14 -2
- package/dist/chunks/config-DYgfMrIF.js.map +1 -0
- package/dist/chunks/{config-BSyiFlbi.js → config-DtgYuGUn2.js} +2 -1
- package/dist/chunks/config-DtgYuGUn2.js.map +1 -0
- package/dist/chunks/config-Iu684VNI.js +21 -0
- package/dist/chunks/config-Iu684VNI.js.map +1 -0
- package/dist/chunks/config-T3qdQBgU.js.map +1 -0
- package/dist/chunks/{config-DCwQBMmJ.js → config-rkcKArZQ.js} +27 -8
- package/dist/chunks/config-rkcKArZQ.js.map +1 -0
- package/dist/chunks/config-zjeAJ4ho2.js.map +1 -0
- package/dist/chunks/context-BfIQv7m12.js.map +1 -0
- package/dist/chunks/context-CTbuwcYs.js.map +1 -1
- package/dist/chunks/{en-DCCFP4qu.js → en-NpP9e7lC.js} +16 -2
- package/dist/chunks/en-NpP9e7lC.js.map +1 -0
- package/dist/chunks/{es-CT34HBVM.js → es-DaeA2Ql-.js} +16 -2
- package/dist/chunks/es-DaeA2Ql-.js.map +1 -0
- package/dist/chunks/{es-DdJsxlUr.js → es-Do2CNrC2.js} +3 -3
- package/dist/chunks/{es-DdJsxlUr.js.map → es-Do2CNrC2.js.map} +1 -1
- package/dist/chunks/{generated-CiCrGDQO.js → generated-CJe6hdiE.js} +138 -6
- package/dist/chunks/{generated-CiCrGDQO.js.map → generated-CJe6hdiE.js.map} +1 -1
- package/dist/chunks/{grBadgeStyles-C2wLlkjF.js → grBadgeStyles-C1S56Alo.js} +6 -1
- package/dist/chunks/{grBadgeStyles-C2wLlkjF.js.map → grBadgeStyles-C1S56Alo.js.map} +1 -1
- package/dist/chunks/grChipGroupContext-DZXkACap.js +4 -0
- package/dist/chunks/grChipGroupContext-DZXkACap.js.map +1 -0
- package/dist/chunks/{config-C5mO5DYZ.js → grDropdownMenuStyles-D1LOkdVj.js} +1 -38
- package/dist/chunks/grDropdownMenuStyles-D1LOkdVj.js.map +1 -0
- package/dist/chunks/{grPopoverStyles-Rz_Z5nLW.js → grPopoverStyles-Cke_BZsM.js} +16 -3
- package/dist/chunks/grPopoverStyles-Cke_BZsM.js.map +1 -0
- package/dist/chunks/{granular-provider-CQKhl5C_.js → granular-provider-BaHkLjFX.js} +26 -16
- package/dist/chunks/granular-provider-BaHkLjFX.js.map +1 -0
- package/dist/chunks/{ru-CLiAMwrx.js → ru-Bg9-DPmg.js} +16 -2
- package/dist/chunks/ru-Bg9-DPmg.js.map +1 -0
- package/dist/chunks/{config-qVg3Zz_A.js → safelist-DOfCQR5O.js} +2 -19
- package/dist/chunks/safelist-DOfCQR5O.js.map +1 -0
- package/dist/chunks/useMenuItemsFocus-OyOnIAlr.js +117 -0
- package/dist/chunks/useMenuItemsFocus-OyOnIAlr.js.map +1 -0
- package/dist/components/GrAutocomplete/chunks/{GrAutocomplete-DsevPtiS.js → GrAutocomplete-D9c9BNFg.js} +1 -1
- package/dist/components/GrAutocomplete/chunks/{GrAutocomplete-DsevPtiS.js.map → GrAutocomplete-D9c9BNFg.js.map} +1 -1
- package/dist/components/GrAutocomplete/index.js +1 -1
- package/dist/components/GrBadge/chunks/{GrBadge-u2ZdS7CN.js → GrBadge-_9rCHuE1.js} +1 -1
- package/dist/components/GrBadge/chunks/{GrBadge-u2ZdS7CN.js.map → GrBadge-_9rCHuE1.js.map} +1 -1
- package/dist/components/GrBadge/index.js +3 -2
- package/dist/components/GrButton/chunks/{GrButton-Bw2AH4uX.js → GrButton-DCz-Wn-V.js} +1 -1
- package/dist/components/GrButton/chunks/{GrButton-Bw2AH4uX.js.map → GrButton-DCz-Wn-V.js.map} +1 -1
- package/dist/components/GrButton/index.js +1 -1
- package/dist/components/GrButtonGroup/chunks/{GrButtonGroup-CKyiAV8K.js → GrButtonGroup-BQo5VQ_c.js} +1 -1
- package/dist/components/GrButtonGroup/chunks/{GrButtonGroup-CKyiAV8K.js.map → GrButtonGroup-BQo5VQ_c.js.map} +1 -1
- package/dist/components/GrButtonGroup/index.js +2 -2
- package/dist/components/GrCard/chunks/{GrCard-Bc7nRfbe.js → GrCard-aQIjk6I9.js} +9 -3
- package/dist/components/GrCard/chunks/GrCard-aQIjk6I9.js.map +1 -0
- package/dist/components/GrCard/index.js +2 -2
- package/dist/components/GrCheckboxGroup/index.js +1 -1
- package/dist/components/GrChip/chunks/GrChip-BnL2FedO.js +222 -0
- package/dist/components/GrChip/chunks/GrChip-BnL2FedO.js.map +1 -0
- package/dist/components/GrChip/index.js +3 -0
- package/dist/components/GrChipGroup/chunks/GrChipGroup-DefmSdY9.js +209 -0
- package/dist/components/GrChipGroup/chunks/GrChipGroup-DefmSdY9.js.map +1 -0
- package/dist/components/GrChipGroup/index.js +3 -0
- package/dist/components/GrCodeBlock/chunks/{GrCodeBlock-BmXCLgLS.js → GrCodeBlock-CyptiEo4.js} +1 -1
- package/dist/components/GrCodeBlock/chunks/{GrCodeBlock-BmXCLgLS.js.map → GrCodeBlock-CyptiEo4.js.map} +1 -1
- package/dist/components/GrCodeBlock/index.js +1 -1
- package/dist/components/GrCollapse/chunks/{GrCollapse-C1rCfbc0.js → GrCollapse-DUROgAgc.js} +1 -1
- package/dist/components/GrCollapse/chunks/{GrCollapse-C1rCfbc0.js.map → GrCollapse-DUROgAgc.js.map} +1 -1
- package/dist/components/GrCollapse/index.js +1 -1
- package/dist/components/GrColorPicker/chunks/{GrColorPicker-qQdoEPHF.js → GrColorPicker-CDaJRVIM.js} +1 -1
- package/dist/components/GrColorPicker/chunks/{GrColorPicker-qQdoEPHF.js.map → GrColorPicker-CDaJRVIM.js.map} +1 -1
- package/dist/components/GrColorPicker/index.js +1 -1
- package/dist/components/GrCommandPalette/chunks/{GrCommandPalette-BFcMf4Pn.js → GrCommandPalette-BPsVN_XU.js} +3 -3
- package/dist/components/GrCommandPalette/chunks/GrCommandPalette-BPsVN_XU.js.map +1 -0
- package/dist/components/GrCommandPalette/index.js +1 -1
- package/dist/components/GrCommandPalette/styles.css +1 -1
- package/dist/components/GrConfigProvider/chunks/{GrConfigProvider-UP-EaoAf.js → GrConfigProvider-BF7R3hgg.js} +1 -1
- package/dist/components/GrConfigProvider/chunks/GrConfigProvider-BF7R3hgg.js.map +1 -0
- package/dist/components/GrConfigProvider/index.js +1 -1
- package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-rRtMScJX.js → GrConfirmDialog-CwXNLyzk.js} +3 -3
- package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-rRtMScJX.js.map → GrConfirmDialog-CwXNLyzk.js.map} +1 -1
- package/dist/components/GrConfirmDialog/index.js +1 -1
- package/dist/components/GrContextMenu/chunks/GrContextMenu-BbAJholy.js +331 -0
- package/dist/components/GrContextMenu/chunks/GrContextMenu-BbAJholy.js.map +1 -0
- package/dist/components/GrContextMenu/index.js +3 -0
- package/dist/components/GrDataTable/chunks/{GrDataTable-B5MmZFUg.js → GrDataTable-NRbrXpdx.js} +2 -2
- package/dist/components/GrDataTable/chunks/GrDataTable-NRbrXpdx.js.map +1 -0
- package/dist/components/GrDataTable/index.js +1 -1
- package/dist/components/GrDelta/chunks/{GrDelta-DFvxNpmN.js → GrDelta-NE5HhXoo.js} +0 -0
- package/dist/components/GrDelta/chunks/GrDelta-NE5HhXoo.js.map +1 -0
- package/dist/components/GrDelta/index.js +2 -2
- package/dist/components/GrDescriptionList/chunks/{GrDescriptionList-2zFXzX83.js → GrDescriptionList-1mICfrqX.js} +8 -4
- package/dist/components/GrDescriptionList/chunks/GrDescriptionList-1mICfrqX.js.map +1 -0
- package/dist/components/GrDescriptionList/index.js +2 -2
- package/dist/components/GrDialog/chunks/{GrDialog-D0U5iRqV.js → GrDialog-5Y5K87ss.js} +2 -2
- package/dist/components/GrDialog/chunks/{GrDialog-D0U5iRqV.js.map → GrDialog-5Y5K87ss.js.map} +1 -1
- package/dist/components/GrDialog/index.js +1 -1
- package/dist/components/GrDialogService/chunks/{GrDialogService-CrwA4aJq.js → GrDialogService-CHhzGRWy.js} +6 -6
- package/dist/components/GrDialogService/chunks/GrDialogService-CHhzGRWy.js.map +1 -0
- package/dist/components/GrDialogService/index.js +1 -1
- package/dist/components/GrDrawer/chunks/{GrDrawer-C3zAg2tG.js → GrDrawer-CXy3-SVd.js} +2 -2
- package/dist/components/GrDrawer/chunks/GrDrawer-CXy3-SVd.js.map +1 -0
- package/dist/components/GrDrawer/index.js +1 -1
- package/dist/components/GrDropdown/chunks/{GrDropdown-BSfFOcDx.js → GrDropdown-BfTmdPyh.js} +10 -79
- package/dist/components/GrDropdown/chunks/GrDropdown-BfTmdPyh.js.map +1 -0
- package/dist/components/GrDropdown/index.js +1 -1
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-l5HEqzjr.js +130 -0
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-l5HEqzjr.js.map +1 -0
- package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-DyS6dWDp.js → GrDropdownMenuList-BGA_xNVo.js} +57 -159
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenuList-BGA_xNVo.js.map +1 -0
- package/dist/components/GrDropdownMenu/index.js +3 -2
- package/dist/components/GrFileUpload/chunks/{GrFileUpload-D3-vC-ap.js → GrFileUpload-wNXzHb5N.js} +1 -1
- package/dist/components/GrFileUpload/chunks/GrFileUpload-wNXzHb5N.js.map +1 -0
- package/dist/components/GrFileUpload/index.js +1 -1
- package/dist/components/GrFormField/chunks/{GrFormField-kqfVY30N.js → GrFormField-DSylU7IU.js} +1 -1
- package/dist/components/GrFormField/chunks/GrFormField-DSylU7IU.js.map +1 -0
- package/dist/components/GrFormField/index.js +1 -1
- package/dist/components/GrFormFile/chunks/{GrFormFile-D722xHn8.js → GrFormFile-DhVkB2gm.js} +1 -1
- package/dist/components/GrFormFile/chunks/{GrFormFile-D722xHn8.js.map → GrFormFile-DhVkB2gm.js.map} +1 -1
- package/dist/components/GrFormFile/index.js +1 -1
- package/dist/components/GrInputTag/chunks/{GrInputTag-C7QVPijj.js → GrInputTag-UI8kIB_F.js} +2 -2
- package/dist/components/GrInputTag/chunks/{GrInputTag-C7QVPijj.js.map → GrInputTag-UI8kIB_F.js.map} +1 -1
- package/dist/components/GrInputTag/index.js +1 -1
- package/dist/components/GrJsonViewer/chunks/{GrJsonViewer-DFUppRNb.js → GrJsonViewer-jk3ylOTc.js} +2 -2
- package/dist/components/GrJsonViewer/chunks/GrJsonViewer-jk3ylOTc.js.map +1 -0
- package/dist/components/GrJsonViewer/index.js +1 -1
- package/dist/components/GrList/chunks/{GrList-BRYhpqIe.js → GrList-B5bclmHV.js} +30 -3
- package/dist/components/GrList/chunks/GrList-B5bclmHV.js.map +1 -0
- package/dist/components/GrList/index.js +1 -1
- package/dist/components/GrList/styles.css +1 -1
- package/dist/components/GrLoading/chunks/{GrLoading-C3DZSSuh.js → GrLoading-DeBFTvFX.js} +1 -1
- package/dist/components/GrLoading/chunks/GrLoading-DeBFTvFX.js.map +1 -0
- package/dist/components/GrLoading/index.js +1 -1
- package/dist/components/GrModal/chunks/{GrModal-CPz7SWD_.js → GrModal-CCoWZuIl.js} +2 -2
- package/dist/components/GrModal/chunks/GrModal-CCoWZuIl.js.map +1 -0
- package/dist/components/GrModal/index.js +1 -1
- package/dist/components/GrNavbar/chunks/{GrNavbar-DWaaoV7n.js → GrNavbar-DPj30sHX.js} +1 -1
- package/dist/components/GrNavbar/chunks/{GrNavbar-DWaaoV7n.js.map → GrNavbar-DPj30sHX.js.map} +1 -1
- package/dist/components/GrNavbar/index.js +1 -1
- package/dist/components/GrNumberInput/chunks/{GrNumberInput-BotnzW77.js → GrNumberInput-V2mZvDDC.js} +1 -1
- package/dist/components/GrNumberInput/chunks/{GrNumberInput-BotnzW77.js.map → GrNumberInput-V2mZvDDC.js.map} +1 -1
- package/dist/components/GrNumberInput/index.js +2 -2
- package/dist/components/GrPagination/chunks/{GrPagination-GtGtSMJG.js → GrPagination-DG7kp6VL.js} +2 -2
- package/dist/components/GrPagination/chunks/{GrPagination-GtGtSMJG.js.map → GrPagination-DG7kp6VL.js.map} +1 -1
- package/dist/components/GrPagination/index.js +1 -1
- package/dist/components/GrPopover/chunks/{GrPopover-b70bIlQ9.js → GrPopover-DDChM1jD.js} +28 -10
- package/dist/components/GrPopover/chunks/GrPopover-DDChM1jD.js.map +1 -0
- package/dist/components/GrPopover/index.js +2 -2
- package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-CEI8bf-t.js → GrPromptDialog-DjF-5oD9.js} +4 -4
- package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-CEI8bf-t.js.map → GrPromptDialog-DjF-5oD9.js.map} +1 -1
- package/dist/components/GrPromptDialog/index.js +1 -1
- package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-BVmjKXcv.js → GrRadioGroup-7w4bXIg_.js} +1 -1
- package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-BVmjKXcv.js.map → GrRadioGroup-7w4bXIg_.js.map} +1 -1
- package/dist/components/GrRadioGroup/index.js +1 -1
- package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-CZONq8uT.js → GrResponseErrorBanner-BhP-xw2P.js} +1 -1
- package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-CZONq8uT.js.map → GrResponseErrorBanner-BhP-xw2P.js.map} +1 -1
- package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-CgfAwlg3.js → GrResponseErrorBanner-DA4q90Zt.js} +1 -1
- package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-CgfAwlg3.js.map → GrResponseErrorBanner-DA4q90Zt.js.map} +1 -1
- package/dist/components/GrResponseErrorBanner/index.js +2 -2
- package/dist/components/GrSegmented/chunks/{GrSegmented-D1mjxF_O.js → GrSegmented-DKpo3cnC.js} +30 -5
- package/dist/components/GrSegmented/chunks/GrSegmented-DKpo3cnC.js.map +1 -0
- package/dist/components/GrSegmented/index.js +1 -1
- package/dist/components/GrSelect/chunks/{GrSelect-CaGuyvtb.js → GrSelect-BA1wfX3c.js} +19 -3
- package/dist/components/GrSelect/chunks/GrSelect-BA1wfX3c.js.map +1 -0
- package/dist/components/GrSelect/index.js +1 -1
- package/dist/components/GrSelect/styles.css +1 -1
- package/dist/components/GrSidebar/chunks/{GrSidebar-D7WxRtIu.js → GrSidebar-DY-LgIbS.js} +2 -2
- package/dist/components/GrSidebar/chunks/{GrSidebar-D7WxRtIu.js.map → GrSidebar-DY-LgIbS.js.map} +1 -1
- package/dist/components/GrSidebar/index.js +2 -2
- package/dist/components/GrSlider/index.js +1 -1
- package/dist/components/GrSortableList/chunks/{GrSortableList-DPjxilmN.js → GrSortableList-BMXyxmRc.js} +3 -3
- package/dist/components/GrSortableList/chunks/{GrSortableList-DPjxilmN.js.map → GrSortableList-BMXyxmRc.js.map} +1 -1
- package/dist/components/GrSortableList/index.js +2 -2
- package/dist/components/GrStatistic/chunks/{GrStatistic-C7wQECeS.js → GrStatistic-BJQv5aOS.js} +41 -26
- package/dist/components/GrStatistic/chunks/GrStatistic-BJQv5aOS.js.map +1 -0
- package/dist/components/GrStatistic/index.js +2 -2
- package/dist/components/GrSteps/chunks/GrSteps-Cce4rfr3.js +282 -0
- package/dist/components/GrSteps/chunks/GrSteps-Cce4rfr3.js.map +1 -0
- package/dist/components/GrSteps/index.js +3 -0
- package/dist/components/GrSwitch/chunks/{GrSwitch-x_vQQ6ao.js → GrSwitch-CHiIj9GT.js} +1 -1
- package/dist/components/GrSwitch/chunks/{GrSwitch-x_vQQ6ao.js.map → GrSwitch-CHiIj9GT.js.map} +1 -1
- package/dist/components/GrSwitch/index.js +2 -2
- package/dist/components/GrTabPanels/chunks/{GrTabPanels-AJt1w1XC.js → GrTabPanels-BZQS8-JM.js} +12 -1
- package/dist/components/GrTabPanels/chunks/{GrTabPanels-AJt1w1XC.js.map → GrTabPanels-BZQS8-JM.js.map} +1 -1
- package/dist/components/GrTabPanels/index.js +1 -1
- package/dist/components/GrTimeline/chunks/{GrTimeline-Ch9sHzwL.js → GrTimeline-DIDdkTn7.js} +12 -1
- package/dist/components/GrTimeline/chunks/GrTimeline-DIDdkTn7.js.map +1 -0
- package/dist/components/GrTimeline/index.js +1 -1
- package/dist/components/GrToaster/chunks/{GrToaster-DJUzx3sR.js → GrToaster-CC49q3a4.js} +1 -1
- package/dist/components/GrToaster/chunks/{GrToaster-DJUzx3sR.js.map → GrToaster-CC49q3a4.js.map} +1 -1
- package/dist/components/GrToaster/index.js +1 -1
- package/dist/components/GrTree/chunks/{GrTree-BvOeQ3xJ.js.map → GrTree-J5q8aCya.js.map} +1 -1
- package/dist/components/GrTree/index.js +1 -1
- package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-_LjTRR7X.js → GrTreeSelect-DEfxWAc3.js} +1 -1
- package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-_LjTRR7X.js.map → GrTreeSelect-DEfxWAc3.js.map} +1 -1
- package/dist/components/GrTreeSelect/index.js +1 -1
- package/dist/components/GrValue/chunks/GrValue-CZsuZ4x-.js +38 -0
- package/dist/components/GrValue/chunks/GrValue-CZsuZ4x-.js.map +1 -0
- package/dist/components/GrValue/index.js +3 -0
- package/dist/composables/useFloating.js +47 -7
- package/dist/composables/useFloating.js.map +1 -1
- package/dist/composables/useTheme.js.map +1 -1
- package/dist/composables/useToast.js.map +1 -1
- package/dist/directives/loading.js +1 -1
- package/dist/granular-provider-node.js +1 -1
- package/dist/granular-provider.js +1 -1
- package/dist/i18n/all.js +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/index.js +74 -62
- package/dist/styles/themes/dark.css +11 -6
- package/dist/styles/themes/light.css +5 -0
- package/dist/theme.js +1 -1
- package/dist/tokens.js +1 -1
- package/dist/types/components/GrBadge/grBadgeStyles.d.ts +7 -0
- package/dist/types/components/GrCard/GrCard.vue.d.ts +1 -1
- package/dist/types/components/GrCard/grCardStyles.d.ts +11 -0
- package/dist/types/components/GrChip/GrChip.vue.d.ts +118 -0
- package/dist/types/components/GrChip/config.d.ts +1 -0
- package/dist/types/components/GrChip/defaults.d.ts +16 -0
- package/dist/types/components/GrChip/grChipGroupContext.d.ts +52 -0
- package/dist/types/components/GrChip/grChipStyles.d.ts +64 -0
- package/dist/types/components/GrChip/index.d.ts +11 -0
- package/dist/types/components/GrChip/safelist.d.ts +7 -0
- package/dist/types/components/GrChipGroup/GrChipGroup.vue.d.ts +128 -0
- package/dist/types/components/GrChipGroup/config.d.ts +1 -0
- package/dist/types/components/GrChipGroup/defaults.d.ts +13 -0
- package/dist/types/components/GrChipGroup/grChipGroupStyles.d.ts +7 -0
- package/dist/types/components/GrChipGroup/index.d.ts +9 -0
- package/dist/types/components/GrChipGroup/safelist.d.ts +1 -0
- package/dist/types/components/GrContextMenu/GrContextMenu.vue.d.ts +157 -0
- package/dist/types/components/GrContextMenu/config.d.ts +1 -0
- package/dist/types/components/GrContextMenu/contextMenuAnchor.d.ts +29 -0
- package/dist/types/components/GrContextMenu/index.d.ts +7 -0
- package/dist/types/components/GrDataTable/GrDataTable.vue.d.ts +1 -1
- package/dist/types/components/GrDelta/grDeltaStyles.d.ts +13 -1
- package/dist/types/components/GrDescriptionList/grDescriptionListStyles.d.ts +29 -1
- package/dist/types/components/GrDropdownMenu/GrDropdownMenu.vue.d.ts +3 -3
- package/dist/types/components/GrDropdownMenu/GrDropdownMenuEntries.vue.d.ts +22 -0
- package/dist/types/components/GrFilePreview/GrFilePreview.vue.d.ts +1 -1
- package/dist/types/components/GrList/GrListItem.vue.d.ts +1 -1
- package/dist/types/components/GrPopover/GrPopover.vue.d.ts +21 -2
- package/dist/types/components/GrPopover/grPopoverStyles.d.ts +11 -1
- package/dist/types/components/GrPopover/index.d.ts +1 -1
- package/dist/types/components/GrStatistic/GrStatistic.vue.d.ts +6 -6
- package/dist/types/components/GrStatistic/grStatisticStyles.d.ts +9 -0
- package/dist/types/components/GrSteps/GrSteps.vue.d.ts +118 -0
- package/dist/types/components/GrSteps/config.d.ts +1 -0
- package/dist/types/components/GrSteps/defaults.d.ts +18 -0
- package/dist/types/components/GrSteps/grStepsStyles.d.ts +63 -0
- package/dist/types/components/GrSteps/index.d.ts +11 -0
- package/dist/types/components/GrSteps/safelist.d.ts +1 -0
- package/dist/types/components/GrSteps/stepsModel.d.ts +57 -0
- package/dist/types/components/GrValue/GrValue.vue.d.ts +51 -0
- package/dist/types/components/GrValue/config.d.ts +1 -0
- package/dist/types/components/GrValue/grValueStyles.d.ts +34 -0
- package/dist/types/components/GrValue/index.d.ts +5 -0
- package/dist/types/components/GrValue/safelist.d.ts +1 -0
- package/dist/types/components/shared/truncationTitle.d.ts +16 -0
- package/dist/types/composables/internal/useMenuItemsFocus.d.ts +24 -0
- package/dist/types/composables/internal/useTypeahead.d.ts +30 -0
- package/dist/types/composables/useFloating.d.ts +33 -2
- package/dist/types/granular-provider/shared.d.ts +5 -0
- package/dist/types/i18n/messages/en.d.ts +26 -0
- package/dist/types/i18n/messages/es.d.ts +26 -0
- package/dist/types/i18n/messages/ru.d.ts +26 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/web-types.json +799 -195
- package/package.json +22 -2
- package/tokens/themes/dark.json +26 -6
- package/tokens/themes/light.json +20 -0
- package/dist/chunks/config-BSyiFlbi.js.map +0 -1
- package/dist/chunks/config-Be9k9bOf.js.map +0 -1
- package/dist/chunks/config-BfsBepkH2.js.map +0 -1
- package/dist/chunks/config-Bm_Sovla.js.map +0 -1
- package/dist/chunks/config-BoNR7_PD2.js.map +0 -1
- package/dist/chunks/config-BuGlNPE9.js.map +0 -1
- package/dist/chunks/config-C5mO5DYZ.js.map +0 -1
- package/dist/chunks/config-DAX8Deh12.js.map +0 -1
- package/dist/chunks/config-DBQQT-WP.js.map +0 -1
- package/dist/chunks/config-DCwQBMmJ.js.map +0 -1
- package/dist/chunks/config-T3qdQBgU2.js.map +0 -1
- package/dist/chunks/config-qVg3Zz_A.js.map +0 -1
- package/dist/chunks/config-zjeAJ4ho.js.map +0 -1
- package/dist/chunks/context-BfIQv7m1.js.map +0 -1
- package/dist/chunks/en-DCCFP4qu.js.map +0 -1
- package/dist/chunks/es-CT34HBVM.js.map +0 -1
- package/dist/chunks/grPopoverStyles-Rz_Z5nLW.js.map +0 -1
- package/dist/chunks/granular-provider-CQKhl5C_.js.map +0 -1
- package/dist/chunks/ru-CLiAMwrx.js.map +0 -1
- package/dist/components/GrCard/chunks/GrCard-Bc7nRfbe.js.map +0 -1
- package/dist/components/GrCommandPalette/chunks/GrCommandPalette-BFcMf4Pn.js.map +0 -1
- package/dist/components/GrConfigProvider/chunks/GrConfigProvider-UP-EaoAf.js.map +0 -1
- package/dist/components/GrDataTable/chunks/GrDataTable-B5MmZFUg.js.map +0 -1
- package/dist/components/GrDelta/chunks/GrDelta-DFvxNpmN.js.map +0 -1
- package/dist/components/GrDescriptionList/chunks/GrDescriptionList-2zFXzX83.js.map +0 -1
- package/dist/components/GrDialogService/chunks/GrDialogService-CrwA4aJq.js.map +0 -1
- package/dist/components/GrDrawer/chunks/GrDrawer-C3zAg2tG.js.map +0 -1
- package/dist/components/GrDropdown/chunks/GrDropdown-BSfFOcDx.js.map +0 -1
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-DyS6dWDp.js.map +0 -1
- package/dist/components/GrFileUpload/chunks/GrFileUpload-D3-vC-ap.js.map +0 -1
- package/dist/components/GrFormField/chunks/GrFormField-kqfVY30N.js.map +0 -1
- package/dist/components/GrJsonViewer/chunks/GrJsonViewer-DFUppRNb.js.map +0 -1
- package/dist/components/GrList/chunks/GrList-BRYhpqIe.js.map +0 -1
- package/dist/components/GrLoading/chunks/GrLoading-C3DZSSuh.js.map +0 -1
- package/dist/components/GrModal/chunks/GrModal-CPz7SWD_.js.map +0 -1
- package/dist/components/GrPopover/chunks/GrPopover-b70bIlQ9.js.map +0 -1
- package/dist/components/GrSegmented/chunks/GrSegmented-D1mjxF_O.js.map +0 -1
- package/dist/components/GrSelect/chunks/GrSelect-CaGuyvtb.js.map +0 -1
- package/dist/components/GrStatistic/chunks/GrStatistic-C7wQECeS.js.map +0 -1
- package/dist/components/GrTimeline/chunks/GrTimeline-Ch9sHzwL.js.map +0 -1
- package/dist/chunks/{config-BfsBepkH2.js → config-BfsBepkH.js} +0 -0
- package/dist/chunks/{config-BoNR7_PD2.js → config-BoNR7_PD.js} +0 -0
- package/dist/chunks/{config-BuGlNPE9.js → config-BuGlNPE92.js} +0 -0
- package/dist/chunks/{config-DAX8Deh12.js → config-DAX8Deh1.js} +0 -0
- package/dist/chunks/{config-T3qdQBgU2.js → config-T3qdQBgU.js} +0 -0
- package/dist/chunks/{config-zjeAJ4ho.js → config-zjeAJ4ho2.js} +0 -0
- package/dist/chunks/{context-BfIQv7m1.js → context-BfIQv7m12.js} +0 -0
- package/dist/components/GrTree/chunks/{GrTree-BvOeQ3xJ.js → GrTree-J5q8aCya.js} +1 -1
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { t as splitClassTokens } from "./classTokens-BzazaERD.js";
|
|
2
|
+
import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
|
|
3
|
+
//#region src/components/GrValue/grValueStyles.ts
|
|
4
|
+
/**
|
|
5
|
+
* Классы `GrValue`.
|
|
6
|
+
*
|
|
7
|
+
* Оформление аффиксов задаётся токенами, а не решением компонента. Раньше это
|
|
8
|
+
* решение было зашито: префикс набирался как число, суффикс — как единица
|
|
9
|
+
* измерения. Для `$14,99` и `42 %` правило верное, но доменное: рубль пишут
|
|
10
|
+
* справа (`1 284 500 ₽`), и в роли суффикса он получал вид подписи.
|
|
11
|
+
*
|
|
12
|
+
* Дефолты сохраняют прежний вид, поэтому потребителю, которого он устраивал,
|
|
13
|
+
* менять нечего.
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Величина набирается кеглем и цветом того места, где стоит: своей шкалы у
|
|
17
|
+
* примитива нет. `tabular-nums` держит ширину строки, когда число меняется.
|
|
18
|
+
*/
|
|
19
|
+
var valueRootClass = "inline-flex items-baseline tabular-nums";
|
|
20
|
+
/**
|
|
21
|
+
* Префикс — часть записи величины: по умолчанию её цвет, её кегль, вплотную.
|
|
22
|
+
* `inherit` в фолбэке и делает «по умолчанию» наследованием, а не копией: тон
|
|
23
|
+
* задаётся один раз на родителе и доезжает сюда сам.
|
|
24
|
+
*/
|
|
25
|
+
var valuePrefixClass = [
|
|
26
|
+
"leading-none",
|
|
27
|
+
"text-[var(--gr-value-prefix-color,inherit)]",
|
|
28
|
+
"text-[length:var(--gr-value-prefix-size,inherit)]",
|
|
29
|
+
"me-[var(--gr-value-prefix-gap,0)]"
|
|
30
|
+
].join(" ");
|
|
31
|
+
/**
|
|
32
|
+
* Суффикс по умолчанию — единица измерения: приглушён, на ступень мельче и
|
|
33
|
+
* отбит от числа.
|
|
34
|
+
*
|
|
35
|
+
* `leading-none` обязателен вместе с уменьшенным кеглем: межстрочный
|
|
36
|
+
* наследуется от величины и рассчитан на её размер, а выровненная по базовой
|
|
37
|
+
* линии приписка со своим меньшим кеглем растягивала бы им всю строку.
|
|
38
|
+
*
|
|
39
|
+
* Логический `me`/`ms` вместо `mr`/`ml`: в RTL отбивка обязана встать с другой
|
|
40
|
+
* стороны, иначе суффикс прилипнет к числу.
|
|
41
|
+
*/
|
|
42
|
+
var valueSuffixClass = [
|
|
43
|
+
"leading-none",
|
|
44
|
+
"text-[var(--gr-value-suffix-color,var(--gr-muted-fg))]",
|
|
45
|
+
"text-[length:var(--gr-value-suffix-size,0.85em)]",
|
|
46
|
+
"ms-[var(--gr-value-suffix-gap,0.25rem)]"
|
|
47
|
+
].join(" ");
|
|
48
|
+
//#endregion
|
|
49
|
+
//#region src/components/GrValue/safelist.ts
|
|
50
|
+
var grValueSafelist = [.../* @__PURE__ */ new Set([
|
|
51
|
+
...splitClassTokens(valueRootClass),
|
|
52
|
+
...splitClassTokens(valuePrefixClass),
|
|
53
|
+
...splitClassTokens(valueSuffixClass)
|
|
54
|
+
])];
|
|
55
|
+
//#endregion
|
|
56
|
+
//#region src/components/GrValue/config.ts
|
|
57
|
+
var grValueConfig = defineGranularComponent(import.meta.url, {
|
|
58
|
+
name: "GrValue",
|
|
59
|
+
safelist: grValueSafelist
|
|
60
|
+
});
|
|
61
|
+
//#endregion
|
|
62
|
+
export { valueSuffixClass as a, valueRootClass as i, grValueSafelist as n, valuePrefixClass as r, grValueConfig as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-BFJIxE8b.js","names":[],"sources":["../../src/components/GrValue/grValueStyles.ts","../../src/components/GrValue/safelist.ts","../../src/components/GrValue/config.ts"],"sourcesContent":["/**\n * Классы `GrValue`.\n *\n * Оформление аффиксов задаётся токенами, а не решением компонента. Раньше это\n * решение было зашито: префикс набирался как число, суффикс — как единица\n * измерения. Для `$14,99` и `42 %` правило верное, но доменное: рубль пишут\n * справа (`1 284 500 ₽`), и в роли суффикса он получал вид подписи.\n *\n * Дефолты сохраняют прежний вид, поэтому потребителю, которого он устраивал,\n * менять нечего.\n */\n\n/**\n * Величина набирается кеглем и цветом того места, где стоит: своей шкалы у\n * примитива нет. `tabular-nums` держит ширину строки, когда число меняется.\n */\nexport const valueRootClass = 'inline-flex items-baseline tabular-nums'\n\n/**\n * Префикс — часть записи величины: по умолчанию её цвет, её кегль, вплотную.\n * `inherit` в фолбэке и делает «по умолчанию» наследованием, а не копией: тон\n * задаётся один раз на родителе и доезжает сюда сам.\n */\nexport const valuePrefixClass = [\n 'leading-none',\n 'text-[var(--gr-value-prefix-color,inherit)]',\n 'text-[length:var(--gr-value-prefix-size,inherit)]',\n 'me-[var(--gr-value-prefix-gap,0)]',\n].join(' ')\n\n/**\n * Суффикс по умолчанию — единица измерения: приглушён, на ступень мельче и\n * отбит от числа.\n *\n * `leading-none` обязателен вместе с уменьшенным кеглем: межстрочный\n * наследуется от величины и рассчитан на её размер, а выровненная по базовой\n * линии приписка со своим меньшим кеглем растягивала бы им всю строку.\n *\n * Логический `me`/`ms` вместо `mr`/`ml`: в RTL отбивка обязана встать с другой\n * стороны, иначе суффикс прилипнет к числу.\n */\nexport const valueSuffixClass = [\n 'leading-none',\n 'text-[var(--gr-value-suffix-color,var(--gr-muted-fg))]',\n 'text-[length:var(--gr-value-suffix-size,0.85em)]',\n 'ms-[var(--gr-value-suffix-gap,0.25rem)]',\n].join(' ')\n","import { splitClassTokens } from '../shared/classTokens'\n\nimport { valuePrefixClass, valueRootClass, valueSuffixClass } from './grValueStyles'\n\n// Классы живут в `.ts`-хелпере: на сборке он уезжает в общий чанк, который скан\n// пресета не видит. Ссылками на конст, а не копиями строк — копия разойдётся.\nexport const grValueSafelist = [...new Set([\n ...splitClassTokens(valueRootClass),\n ...splitClassTokens(valuePrefixClass),\n ...splitClassTokens(valueSuffixClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grValueSafelist } from './safelist'\n\nexport const grValueConfig = defineGranularComponent(import.meta.url, {\n name: 'GrValue',\n safelist: grValueSafelist,\n})\n"],"mappings":";;;;;;;;;;;;;;;;;;AAgBA,IAAa,iBAAiB;;;;;;AAO9B,IAAa,mBAAmB;CAC9B;CACA;CACA;CACA;AACF,CAAC,CAAC,KAAK,GAAG;;;;;;;;;;;;AAaV,IAAa,mBAAmB;CAC9B;CACA;CACA;CACA;AACF,CAAC,CAAC,KAAK,GAAG;;;ACxCV,IAAa,kBAAkB,CAAC,mBAAG,IAAI,IAAI;CACzC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,gBAAgB;AACtC,CAAC,CAAC;;;ACNF,IAAa,gBAAgB,wBAAwB,OAAO,KAAK,KAAK;CACpE,MAAM;CACN,UAAU;AACZ,CAAC"}
|
|
@@ -15,8 +15,23 @@ import { defineGranularComponent } from "@feugene/unocss-preset-granular/contrac
|
|
|
15
15
|
* читается как опечатка. Отбивку получают только стрелка и суффикс.
|
|
16
16
|
*/
|
|
17
17
|
var deltaRootClass = "inline-flex items-baseline tabular-nums";
|
|
18
|
+
/**
|
|
19
|
+
* Величина стоит **в строке текста**, и приписка при ней приглушения не
|
|
20
|
+
* получает: «−15 %» набирается кеглем и цветом строки целиком, иначе процент
|
|
21
|
+
* оказывается мельче окружающих слов.
|
|
22
|
+
*
|
|
23
|
+
* Дефолт `GrValue` рассчитан на плитку, где величина крупная и приписке есть
|
|
24
|
+
* куда уменьшаться. Здесь он переопределяется — ровно теми же токенами, что
|
|
25
|
+
* доступны потребителю.
|
|
26
|
+
*
|
|
27
|
+
* `currentColor` и `1em`, а не `inherit`: у пользовательского свойства
|
|
28
|
+
* `inherit` значит «наследовать саму переменную», то есть ничего.
|
|
29
|
+
*/
|
|
30
|
+
var deltaValueStyle = {
|
|
31
|
+
"--gr-value-suffix-color": "currentColor",
|
|
32
|
+
"--gr-value-suffix-size": "1em"
|
|
33
|
+
};
|
|
18
34
|
/** Суффикс — единица измерения, и от числа он отбивается: «−15 %», «120 мс». */
|
|
19
|
-
var deltaSuffixClass = "ml-1";
|
|
20
35
|
/**
|
|
21
36
|
* Стрелка выравнивается по строке, а не по базовой линии: у svg её нет.
|
|
22
37
|
*
|
|
@@ -52,7 +67,6 @@ var grDeltaSafelist = [.../* @__PURE__ */ new Set([
|
|
|
52
67
|
...splitClassTokens(deltaRootClass),
|
|
53
68
|
...splitClassTokens(deltaEmptyClass),
|
|
54
69
|
...splitClassTokens(deltaArrowClass),
|
|
55
|
-
...splitClassTokens(deltaSuffixClass),
|
|
56
70
|
...Object.values(deltaToneClass).flatMap(splitClassTokens),
|
|
57
71
|
...Object.values(deltaSizeClass).flatMap(splitClassTokens)
|
|
58
72
|
])];
|
|
@@ -60,7 +74,8 @@ var grDeltaSafelist = [.../* @__PURE__ */ new Set([
|
|
|
60
74
|
//#region src/components/GrDelta/config.ts
|
|
61
75
|
var grDeltaConfig = defineGranularComponent(import.meta.url, {
|
|
62
76
|
name: "GrDelta",
|
|
77
|
+
dependencies: ["GrValue"],
|
|
63
78
|
safelist: grDeltaSafelist
|
|
64
79
|
});
|
|
65
80
|
//#endregion
|
|
66
|
-
export { deltaRootClass as a,
|
|
81
|
+
export { deltaRootClass as a, deltaValueStyle as c, deltaEmptyClass as i, grDeltaSafelist as n, deltaSizeClass as o, deltaArrowClass as r, deltaToneClass as s, grDeltaConfig as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-BIa3ilQm.js","names":[],"sources":["../../src/components/GrDelta/grDeltaStyles.ts","../../src/components/GrDelta/safelist.ts","../../src/components/GrDelta/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\nimport type { GrDeltaTone } from './deltaTone'\n\n/**\n * Классы `GrDelta`.\n *\n * Тон перечислен целиком по одному литералу на ветку: UnoCSS сканирует исходный\n * текст файла, и собранное шаблонной строкой имя (`text-[var(--gr-${tone}-text)]`)\n * уехало бы в CSS литералом.\n */\n\n/**\n * Величина стоит в строке текста, поэтому наследует её кегль и выравнивание.\n *\n * Общего `gap` нет намеренно: префикс — это валюта, и «$ 12,50» с зазором\n * читается как опечатка. Отбивку получают только стрелка и суффикс.\n */\nexport const deltaRootClass = 'inline-flex items-baseline tabular-nums'\n\n/**\n * Величина стоит **в строке текста**, и приписка при ней приглушения не\n * получает: «−15 %» набирается кеглем и цветом строки целиком, иначе процент\n * оказывается мельче окружающих слов.\n *\n * Дефолт `GrValue` рассчитан на плитку, где величина крупная и приписке есть\n * куда уменьшаться. Здесь он переопределяется — ровно теми же токенами, что\n * доступны потребителю.\n *\n * `currentColor` и `1em`, а не `inherit`: у пользовательского свойства\n * `inherit` значит «наследовать саму переменную», то есть ничего.\n */\nexport const deltaValueStyle: Record<string, string> = {\n '--gr-value-suffix-color': 'currentColor',\n '--gr-value-suffix-size': '1em',\n}\n\n/** Суффикс — единица измерения, и от числа он отбивается: «−15 %», «120 мс». */\n\n/**\n * Стрелка выравнивается по строке, а не по базовой линии: у svg её нет.\n *\n * Размер — в `em`, потому что на ступени `md` кегля у величины нет вовсе:\n * пиксельная лестница оставила бы стрелку 14-пиксельной внутри заголовка.\n * Чуть меньше единицы: стрелка декоративна, и равный вес спорил бы с самим\n * числом.\n */\nexport const deltaArrowClass = 'mr-0.5 self-center shrink-0 h-[0.875em] w-[0.875em]'\n\nexport const deltaToneClass: Record<GrDeltaTone, string> = {\n success: 'text-[var(--gr-success-text)]',\n danger: 'text-[var(--gr-danger-text)]',\n neutral: 'text-[var(--gr-muted-fg)]',\n}\n\n/** Прочерк вместо величины: тона у него нет, но и цвет основного текста ему не нужен. */\nexport const deltaEmptyClass = 'text-[var(--gr-muted-fg)]'\n\n/**\n * `md` пуст намеренно: на ступени по умолчанию величина набирается кеглем той\n * строки, в которой стоит. Фиксированные 13 px разъезжаются и вверх, и вниз —\n * внутри заголовка величина оставалась бы мелкой, в подписи под графиком\n * крупной. Ступени по краям остаются явными: они нужны, когда величина стоит\n * не в предложении, а в ряду с контролами.\n */\nexport const deltaSizeClass: Record<GrComponentSize, string> = {\n xs: 'text-[length:var(--gr-control-text-xs)]',\n sm: 'text-[length:var(--gr-control-text-sm)]',\n md: '',\n lg: 'text-[length:var(--gr-control-text-lg)]',\n}\n","import { splitClassTokens } from '../shared/classTokens'\n\nimport {\n deltaArrowClass,\n deltaEmptyClass,\n deltaRootClass,\n deltaSizeClass,\n deltaToneClass,\n} from './grDeltaStyles'\n\n// Классы из вычисляемых мап (тон, размер) UnoCSS сканом не находит — только\n// safelist. Литералы хелпера туда же: на сборке он уезжает в общий чанк.\nexport const grDeltaSafelist = [...new Set([\n ...splitClassTokens(deltaRootClass),\n ...splitClassTokens(deltaEmptyClass),\n ...splitClassTokens(deltaArrowClass),\n ...Object.values(deltaToneClass).flatMap(splitClassTokens),\n ...Object.values(deltaSizeClass).flatMap(splitClassTokens),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grDeltaSafelist } from './safelist'\n\nexport const grDeltaConfig = defineGranularComponent(import.meta.url, {\n name: 'GrDelta',\n dependencies: ['GrValue'],\n safelist: grDeltaSafelist,\n})\n"],"mappings":";;;;;;;;;;;;;;;;AAkBA,IAAa,iBAAiB;;;;;;;;;;;;;AAc9B,IAAa,kBAA0C;CACrD,2BAA2B;CAC3B,0BAA0B;AAC5B;;;;;;;;;;AAYA,IAAa,kBAAkB;AAE/B,IAAa,iBAA8C;CACzD,SAAS;CACT,QAAQ;CACR,SAAS;AACX;;AAGA,IAAa,kBAAkB;;;;;;;;AAS/B,IAAa,iBAAkD;CAC7D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;AC1DA,IAAa,kBAAkB,CAAC,mBAAG,IAAI,IAAI;CACzC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,eAAe;CACnC,GAAG,OAAO,OAAO,cAAc,CAAC,CAAC,QAAQ,gBAAgB;CACzD,GAAG,OAAO,OAAO,cAAc,CAAC,CAAC,QAAQ,gBAAgB;AAC3D,CAAC,CAAC;;;ACdF,IAAa,gBAAgB,wBAAwB,OAAO,KAAK,KAAK;CACpE,MAAM;CACN,cAAc,CAAC,SAAS;CACxB,UAAU;AACZ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-BfsBepkH.js","names":[],"sources":["../../src/components/GrSidebar/grSidebarStyles.ts","../../src/components/GrSidebar/safelist.ts","../../src/components/GrSidebar/config.ts"],"sourcesContent":["/** Сторона экрана, к которой прижата панель. */\nexport const GR_SIDEBAR_POSITIONS = ['left', 'right'] as const\nexport type GrSidebarPosition = typeof GR_SIDEBAR_POSITIONS[number]\n\n/** Лендмарк корня: навигация или дополняющий блок (фильтры, справка). */\nexport const GR_SIDEBAR_LANDMARKS = ['complementary', 'navigation'] as const\nexport type GrSidebarLandmark = typeof GR_SIDEBAR_LANDMARKS[number]\n\nexport const rootBase = 'flex flex-col bg-[var(--gr-sidebar)] text-[var(--gr-sidebar-fg)] transition-[width] duration-[var(--gr-duration-base)] ease-[var(--gr-ease-out)]'\n\n/** Граница отделяет панель от контента, поэтому уезжает на внутреннюю сторону. */\nexport const rootPositions: Record<GrSidebarPosition, string> = {\n left: 'border-r border-[var(--gr-sidebar-brd)]',\n right: 'border-l border-[var(--gr-sidebar-brd)]',\n}\n\nexport const headerBase = 'flex items-center gap-2 border-b border-[var(--gr-sidebar-brd)] px-3 py-4'\n\nexport const titleClass = 'truncate text-[length:var(--gr-text-lg)] font-700'\nexport const subtitleClass = 'truncate text-[length:var(--gr-text-sm)] text-[var(--gr-muted-fg)]'\n\n/**\n * Скроллящийся блок обязан быть достижим с клавиатуры, поэтому он остановка\n * `Tab` с видимым кольцом: без него панель с текстовым содержимым не\n * проскроллить вовсе.\n */\nexport const contentBase = 'flex-1 overflow-y-auto focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-[var(--gr-ring)]'\n\nexport const itemBase = 'relative flex w-full items-center rounded-[var(--gr-radius-md)] text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)] transition-colors duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\n\nexport const itemCollapsedClass = 'justify-center px-0 py-2'\nexport const itemExpandedClass = 'gap-3 px-3 py-2'\n\n/**\n * Недоступный пункт гасится токеном, а не `opacity`: прозрачность разбавляет\n * выверенные на AA токены текста.\n */\nexport const itemDisabledClass = 'cursor-not-allowed text-[var(--gr-disabled-fg)]'\nexport const itemActiveClass = 'bg-[var(--gr-muted)] font-600 text-[var(--gr-fg)]'\nexport const itemIdleClass = 'text-[var(--gr-sidebar-fg)] hover:bg-[color-mix(in_srgb,var(--gr-sidebar-fg)_8%,transparent)]'\n\nexport const itemLetterClass = 'text-[length:var(--gr-text-xs)] font-700 leading-none'\nexport const itemBadgeClass = 'shrink-0 rounded-[var(--gr-radius-full)] bg-[color-mix(in_srgb,var(--gr-sidebar-fg)_12%,transparent)] px-1.5 py-0.5 text-[length:var(--gr-text-2xs)] font-600'\n\nexport const groupLabelClass = 'px-3 pb-1 pt-3 text-[length:var(--gr-text-2xs)] font-700 [text-transform:uppercase] tracking-wide text-[var(--gr-muted-fg)]'\n\n/**\n * В свёрнутой панели заголовка секции нет — иначе он не помещается. Границы\n * между группами берёт на себя линия: без неё иконки соседних секций сливаются\n * в один столбец.\n */\nexport const groupCollapsedClass = 'mt-2 border-t border-[var(--gr-sidebar-brd)] pt-2'\n\nexport function grSidebarRootClass(position: GrSidebarPosition): string {\n return [rootBase, rootPositions[position]].join(' ')\n}\n\n/**\n * Куда указывает шеврон кнопки тогла: всегда в ту сторону, куда уедет панель.\n * У правой панели «свернуть» — это стрелка вправо.\n */\nexport function grSidebarCollapseDirection(\n position: GrSidebarPosition,\n collapsed: boolean,\n): GrSidebarPosition {\n const toRight = (position === 'right') !== collapsed\n return toRight ? 'right' : 'left'\n}\n\nexport function grSidebarItemClass(options: {\n collapsed: boolean\n disabled: boolean\n active: boolean\n}): string {\n return [\n itemBase,\n options.collapsed ? itemCollapsedClass : itemExpandedClass,\n options.disabled ? itemDisabledClass : options.active ? itemActiveClass : itemIdleClass,\n ].join(' ')\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n contentBase,\n groupCollapsedClass,\n groupLabelClass,\n headerBase,\n itemActiveClass,\n itemBadgeClass,\n itemBase,\n itemCollapsedClass,\n itemDisabledClass,\n itemExpandedClass,\n itemIdleClass,\n itemLetterClass,\n rootBase,\n rootPositions,\n subtitleClass,\n titleClass,\n} from './grSidebarStyles'\n\nexport const grSidebarSafelist = [...new Set([\n ...splitClassTokens(rootBase),\n ...Object.values(rootPositions).flatMap(splitClassTokens),\n ...splitClassTokens(headerBase),\n ...splitClassTokens(titleClass),\n ...splitClassTokens(subtitleClass),\n ...splitClassTokens(contentBase),\n ...splitClassTokens(itemBase),\n ...splitClassTokens(itemCollapsedClass),\n ...splitClassTokens(itemExpandedClass),\n ...splitClassTokens(itemDisabledClass),\n ...splitClassTokens(itemActiveClass),\n ...splitClassTokens(itemIdleClass),\n ...splitClassTokens(itemLetterClass),\n ...splitClassTokens(itemBadgeClass),\n ...splitClassTokens(groupLabelClass),\n ...splitClassTokens(groupCollapsedClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grSidebarSafelist } from './safelist'\n\nexport const grSidebarConfig = defineGranularComponent(import.meta.url, {\n name: 'GrSidebar',\n dependencies: ['GrButton', 'GrIcon'],\n safelist: grSidebarSafelist,\n})\n"],"mappings":";;;AAQA,IAAa,WAAW;;AAGxB,IAAa,gBAAmD;CAC9D,MAAM;CACN,OAAO;AACT;AAEA,IAAa,aAAa;AAE1B,IAAa,aAAa;AAC1B,IAAa,gBAAgB;;;;;;AAO7B,IAAa,cAAc;AAE3B,IAAa,WAAW;AAExB,IAAa,qBAAqB;AAClC,IAAa,oBAAoB;;;;;AAMjC,IAAa,oBAAoB;AACjC,IAAa,kBAAkB;AAC/B,IAAa,gBAAgB;AAE7B,IAAa,kBAAkB;AAC/B,IAAa,iBAAiB;AAE9B,IAAa,kBAAkB;;;;;;AAO/B,IAAa,sBAAsB;AAEnC,SAAgB,mBAAmB,UAAqC;CACtE,OAAO,CAAC,UAAU,cAAc,SAAS,CAAC,CAAC,KAAK,GAAG;AACrD;;;;;AAMA,SAAgB,2BACd,UACA,WACmB;CAEnB,OADiB,aAAa,YAAa,YAC1B,UAAU;AAC7B;AAEA,SAAgB,mBAAmB,SAIxB;CACT,OAAO;EACL;EACA,QAAQ,YAAY,qBAAqB;EACzC,QAAQ,WAAW,oBAAoB,QAAQ,SAAS,kBAAkB;CAC5E,CAAC,CAAC,KAAK,GAAG;AACZ;;;AC3DA,IAAa,oBAAoB,CAAC,mBAAG,IAAI,IAAI;CAC3C,GAAG,iBAAiB,QAAQ;CAC5B,GAAG,OAAO,OAAO,aAAa,CAAC,CAAC,QAAQ,gBAAgB;CACxD,GAAG,iBAAiB,UAAU;CAC9B,GAAG,iBAAiB,UAAU;CAC9B,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,WAAW;CAC/B,GAAG,iBAAiB,QAAQ;CAC5B,GAAG,iBAAiB,kBAAkB;CACtC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,mBAAmB;AACzC,CAAC,CAAC;;;ACjCF,IAAa,kBAAkB,wBAAwB,OAAO,KAAK,KAAK;CACtE,MAAM;CACN,cAAc,CAAC,YAAY,QAAQ;CACnC,UAAU;AACZ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-BoNR7_PD.js","names":[],"sources":["../../src/components/GrSwitch/grSwitchStyles.ts","../../src/components/GrSwitch/safelist.ts","../../src/components/GrSwitch/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\nexport type GrSwitchSize = GrComponentSize\n\n/** Сторона подписи относительно дорожки — логическая, не физическая (RTL). */\nexport const GR_SWITCH_LABEL_POSITIONS = ['start', 'end'] as const\nexport type GrSwitchLabelPosition = typeof GR_SWITCH_LABEL_POSITIONS[number]\n\ntype GrSwitchThumbClassOptions = {\n checked: boolean\n size: GrSwitchSize\n}\n\nexport const rootBase = 'inline-flex items-center gap-2 select-none disabled:cursor-not-allowed'\n\n/** `start` разворачивает ряд, а не меняет порядок узлов: DOM-порядок читает диктор. */\nexport const rootLabelPositions: Record<GrSwitchLabelPosition, string> = {\n start: 'flex-row-reverse',\n end: '',\n}\n\nexport const trackBase =\n 'relative inline-flex shrink-0 items-center rounded-[var(--gr-radius-full)] border border-[var(--gr-switch-track-brd)] transition-colors duration-[var(--gr-duration-fast)]'\n\nexport const trackSizes: Record<GrSwitchSize, string> = {\n xs: 'h-4 w-7',\n sm: 'h-5 w-9',\n md: 'h-6 w-11',\n lg: 'h-7 w-14',\n}\n\nexport const thumbBase =\n 'inline-flex shrink-0 items-center justify-center rounded-[var(--gr-radius-full)] bg-[var(--gr-card)] shadow-[var(--gr-shadow-1)] transition-transform duration-[var(--gr-duration-fast)]'\n\nexport const thumbSizes: Record<GrSwitchSize, string> = {\n xs: 'h-3 w-3',\n sm: 'h-4 w-4',\n md: 'h-5 w-5',\n lg: 'h-6 w-6',\n}\n\n/** Спиннер загрузки живёт в бегунке, поэтому мельче его на ступень. */\nexport const thumbSpinnerSizes: Record<GrSwitchSize, string> = {\n xs: 'h-2 w-2',\n sm: 'h-2.5 w-2.5',\n md: 'h-3 w-3',\n lg: 'h-4 w-4',\n}\n\nexport const thumbSpinnerBase = 'animate-spin text-[var(--gr-muted-fg)]'\n\n/**\n * Сдвиг бегунка по горизонтали.\n *\n * Бегунок — обычный флекс-ребёнок дорожки, поэтому сдвиг отсчитывается от её\n * **content-box**, а он на 2px уже внешнего размера: рамка по 1px с каждой\n * стороны. Отсюда и весь расчёт.\n *\n * Зазор по вертикали задан геометрией и равен 1px на всех ступенях\n * (`(content-height − thumb) / 2`, дорожка центрирует бегунок сама). Значит и по\n * горизонтали он обязан быть 1px: иначе бегунок в покое выглядит вдавленным\n * внутрь, а в крайнем положении прижатым к краю — именно так и было, зазоры\n * расходились на 1–2px у `xs`, `sm` и `lg`.\n *\n * | ступень | дорожка | content | бегунок | покой | крайнее |\n * | --- | --- | --- | --- | --- | --- |\n * | `xs` | 28 | 26 | 12 | 1 | 13 |\n * | `sm` | 36 | 34 | 16 | 1 | 17 |\n * | `md` | 44 | 42 | 20 | 1 | 21 |\n * | `lg` | 56 | 54 | 24 | 1 | 29 |\n *\n * Крайнее положение — `content − thumb − зазор`. Гейт на эту арифметику живёт в\n * `__tests__/GrSwitch.test.ts`: он считает её заново из `trackSizes`/`thumbSizes`,\n * поэтому смена любой ступени размера сразу покажет разъехавшийся зазор.\n */\nexport const thumbTranslations: Record<GrSwitchSize, { checked: string, unchecked: string }> = {\n xs: {\n checked: 'translate-x-[13px]',\n unchecked: 'translate-x-[1px]',\n },\n sm: {\n checked: 'translate-x-[17px]',\n unchecked: 'translate-x-[1px]',\n },\n md: {\n checked: 'translate-x-[21px]',\n unchecked: 'translate-x-[1px]',\n },\n lg: {\n checked: 'translate-x-[29px]',\n unchecked: 'translate-x-[1px]',\n },\n}\n\nexport const labelBase = 'text-[var(--gr-muted-fg)]'\n\n/**\n * Недоступность гасится токеном, а не `opacity`: прозрачность разбавляет\n * выверенные на AA токены текста и роняет контраст подписи.\n */\nexport const labelDisabledClass = 'text-[var(--gr-disabled-fg)]'\n\nexport const labelSizes: Record<GrSwitchSize, string> = {\n xs: 'text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]',\n sm: 'text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]',\n md: 'text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]',\n lg: 'text-[length:var(--gr-text-base)] leading-[var(--gr-leading-base)]',\n}\n\nexport function grSwitchRootClass(labelPosition: GrSwitchLabelPosition): string {\n return [rootBase, rootLabelPositions[labelPosition]].filter(Boolean).join(' ')\n}\n\nexport function grSwitchTrackClass(size: GrSwitchSize): string {\n return [trackBase, trackSizes[size]].join(' ')\n}\n\nexport function grSwitchThumbClass(options: GrSwitchThumbClassOptions): string {\n return [\n thumbBase,\n thumbSizes[options.size],\n thumbTranslations[options.size][options.checked ? 'checked' : 'unchecked'],\n ].join(' ')\n}\n\nexport function grSwitchSpinnerClass(size: GrSwitchSize): string {\n return [thumbSpinnerBase, thumbSpinnerSizes[size]].join(' ')\n}\n\nexport function grSwitchLabelClass(size: GrSwitchSize, disabled = false): string {\n return [disabled ? labelDisabledClass : labelBase, labelSizes[size]].join(' ')\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n labelBase,\n labelDisabledClass,\n labelSizes,\n rootBase,\n rootLabelPositions,\n thumbBase,\n thumbSizes,\n thumbSpinnerBase,\n thumbSpinnerSizes,\n thumbTranslations,\n trackBase,\n trackSizes,\n} from './grSwitchStyles'\n\nexport const grSwitchClassTokens = {\n rootBase: splitClassTokens(rootBase),\n rootLabelPositions: Object.values(rootLabelPositions).flatMap(splitClassTokens),\n trackBase: splitClassTokens(trackBase),\n trackSizes: Object.values(trackSizes).flatMap(splitClassTokens),\n thumbBase: splitClassTokens(thumbBase),\n thumbSizes: Object.values(thumbSizes).flatMap(splitClassTokens),\n thumbSpinner: [\n ...splitClassTokens(thumbSpinnerBase),\n ...Object.values(thumbSpinnerSizes).flatMap(splitClassTokens),\n ],\n thumbTranslations: Object.values(thumbTranslations).flatMap(({checked, unchecked}) => {\n return [...splitClassTokens(checked), ...splitClassTokens(unchecked)]\n }),\n labelBase: [...splitClassTokens(labelBase), ...splitClassTokens(labelDisabledClass)],\n labelSizes: Object.values(labelSizes).flatMap(splitClassTokens),\n} as const\n\nexport const grSwitchSafelist = [...new Set([\n ...grSwitchClassTokens.rootBase,\n ...grSwitchClassTokens.rootLabelPositions,\n ...grSwitchClassTokens.trackBase,\n ...grSwitchClassTokens.trackSizes,\n ...grSwitchClassTokens.thumbBase,\n ...grSwitchClassTokens.thumbSizes,\n ...grSwitchClassTokens.thumbSpinner,\n ...grSwitchClassTokens.thumbTranslations,\n ...grSwitchClassTokens.labelBase,\n ...grSwitchClassTokens.labelSizes,\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grSwitchSafelist } from './safelist'\n\nexport const grSwitchConfig = defineGranularComponent(import.meta.url, {\n name: 'GrSwitch',\n safelist: grSwitchSafelist,\n})"],"mappings":";;;AAaA,IAAa,WAAW;;AAGxB,IAAa,qBAA4D;CACrE,OAAO;CACP,KAAK;AACT;AAEA,IAAa,YACT;AAEJ,IAAa,aAA2C;CACpD,IAAI;CACN,IAAI;CACF,IAAI;CACJ,IAAI;AACR;AAEA,IAAa,YACT;AAEJ,IAAa,aAA2C;CACpD,IAAI;CACN,IAAI;CACF,IAAI;CACJ,IAAI;AACR;;AAGA,IAAa,oBAAkD;CAC3D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACR;AAEA,IAAa,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;AA0BhC,IAAa,oBAAkF;CAC3F,IAAI;EACA,SAAS;EACT,WAAW;CACf;CACA,IAAI;EACA,SAAS;EACT,WAAW;CACf;CACA,IAAI;EACA,SAAS;EACT,WAAW;CACf;CACA,IAAI;EACA,SAAS;EACT,WAAW;CACf;AACJ;AAEA,IAAa,YAAY;;;;;AAMzB,IAAa,qBAAqB;AAElC,IAAa,aAA2C;CACpD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACR;AAEA,SAAgB,kBAAkB,eAA8C;CAC5E,OAAO,CAAC,UAAU,mBAAmB,cAAc,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;AACjF;AAEA,SAAgB,mBAAmB,MAA4B;CAC3D,OAAO,CAAC,WAAW,WAAW,KAAK,CAAC,CAAC,KAAK,GAAG;AACjD;AAEA,SAAgB,mBAAmB,SAA4C;CAC3E,OAAO;EACH;EACA,WAAW,QAAQ;EACnB,kBAAkB,QAAQ,KAAK,CAAC,QAAQ,UAAU,YAAY;CAClE,CAAC,CAAC,KAAK,GAAG;AACd;AAEA,SAAgB,qBAAqB,MAA4B;CAC7D,OAAO,CAAC,kBAAkB,kBAAkB,KAAK,CAAC,CAAC,KAAK,GAAG;AAC/D;AAEA,SAAgB,mBAAmB,MAAoB,WAAW,OAAe;CAC7E,OAAO,CAAC,WAAW,qBAAqB,WAAW,WAAW,KAAK,CAAC,CAAC,KAAK,GAAG;AACjF;;;ACnHA,IAAa,sBAAsB;CACjC,UAAU,iBAAiB,QAAQ;CACnC,oBAAoB,OAAO,OAAO,kBAAkB,CAAC,CAAC,QAAQ,gBAAgB;CAC9E,WAAW,iBAAiB,SAAS;CACrC,YAAY,OAAO,OAAO,UAAU,CAAC,CAAC,QAAQ,gBAAgB;CAC9D,WAAW,iBAAiB,SAAS;CACrC,YAAY,OAAO,OAAO,UAAU,CAAC,CAAC,QAAQ,gBAAgB;CAC9D,cAAc,CACZ,GAAG,iBAAiB,gBAAgB,GACpC,GAAG,OAAO,OAAO,iBAAiB,CAAC,CAAC,QAAQ,gBAAgB,CAC9D;CACA,mBAAmB,OAAO,OAAO,iBAAiB,CAAC,CAAC,SAAS,EAAC,SAAS,gBAAe;EACpF,OAAO,CAAC,GAAG,iBAAiB,OAAO,GAAG,GAAG,iBAAiB,SAAS,CAAC;CACtE,CAAC;CACD,WAAW,CAAC,GAAG,iBAAiB,SAAS,GAAG,GAAG,iBAAiB,kBAAkB,CAAC;CACnF,YAAY,OAAO,OAAO,UAAU,CAAC,CAAC,QAAQ,gBAAgB;AAChE;AAEA,IAAa,mBAAmB,CAAC,mBAAG,IAAI,IAAI;CAC1C,GAAG,oBAAoB;CACvB,GAAG,oBAAoB;CACvB,GAAG,oBAAoB;CACvB,GAAG,oBAAoB;CACvB,GAAG,oBAAoB;CACvB,GAAG,oBAAoB;CACvB,GAAG,oBAAoB;CACvB,GAAG,oBAAoB;CACvB,GAAG,oBAAoB;CACvB,GAAG,oBAAoB;AACzB,CAAC,CAAC;;;ACzCF,IAAa,iBAAiB,wBAAwB,OAAO,KAAK,KAAK;CACrE,MAAM;CACN,UAAU;AACZ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-BuGlNPE92.js","names":[],"sources":["../../src/components/GrCheckboxGroup/config.ts"],"sourcesContent":["import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nexport const grCheckboxGroupConfig = defineGranularComponent(import.meta.url, {\n name: 'GrCheckboxGroup',\n dependencies: ['GrCheckbox'],\n})\n"],"mappings":";;AAEA,IAAa,wBAAwB,wBAAwB,OAAO,KAAK,KAAK;CAC5E,MAAM;CACN,cAAc,CAAC,YAAY;AAC7B,CAAC"}
|
|
@@ -25,6 +25,20 @@ var statisticAffixSizeBySize = {
|
|
|
25
25
|
md: "text-[length:var(--gr-text-base)]",
|
|
26
26
|
lg: "text-[length:var(--gr-text-xl)]"
|
|
27
27
|
};
|
|
28
|
+
/**
|
|
29
|
+
* Кегль приписки — значением токена, а не классом: он уезжает в
|
|
30
|
+
* `--gr-value-suffix-size`, которым `GrValue` и набирает суффикс.
|
|
31
|
+
*
|
|
32
|
+
* Ступень шкалы, а не доля от величины: у плитки шкала размеров своя, и на
|
|
33
|
+
* ступени `md` число крупное (`--gr-text-3xl`), а приписка при нём обязана
|
|
34
|
+
* остаться подписью. Доля дала бы её вровень с числом.
|
|
35
|
+
*/
|
|
36
|
+
var statisticAffixSizeVarBySize = {
|
|
37
|
+
xs: "var(--gr-text-xs)",
|
|
38
|
+
sm: "var(--gr-text-xs)",
|
|
39
|
+
md: "var(--gr-text-base)",
|
|
40
|
+
lg: "var(--gr-text-xl)"
|
|
41
|
+
};
|
|
28
42
|
var statisticPlaceholderHeightBySize = {
|
|
29
43
|
xs: "22px",
|
|
30
44
|
sm: "28px",
|
|
@@ -91,7 +105,7 @@ var grStatisticSafelist = [.../* @__PURE__ */ new Set([
|
|
|
91
105
|
var grStatisticConfig = defineGranularComponent(import.meta.url, {
|
|
92
106
|
name: "GrStatistic",
|
|
93
107
|
safelist: grStatisticSafelist,
|
|
94
|
-
dependencies: ["GrSkeleton"]
|
|
108
|
+
dependencies: ["GrSkeleton", "GrValue"]
|
|
95
109
|
});
|
|
96
110
|
//#endregion
|
|
97
|
-
export { statisticRootClass as a, statisticTrendClassByTrend as c, statisticPlaceholderHeightBySize as i, statisticTrendSizeBySize as l, grStatisticSafelist as n, statisticTitleClass as o,
|
|
111
|
+
export { statisticRootClass as a, statisticTrendClassByTrend as c, statisticPlaceholderHeightBySize as i, statisticTrendSizeBySize as l, grStatisticSafelist as n, statisticTitleClass as o, statisticAffixSizeVarBySize as r, statisticTitleSizeBySize as s, grStatisticConfig as t, statisticValueClass as u };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-C8tVRv8i.js","names":[],"sources":["../../src/components/GrStatistic/grStatisticStyles.ts","../../src/components/GrStatistic/safelist.ts","../../src/components/GrStatistic/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\nimport type { GrTone } from '../shared/tones'\n\nexport type GrStatisticSize = GrComponentSize\nexport type GrStatisticTone = GrTone\n/** Направление динамики показателя. */\nexport type GrStatisticTrend = 'up' | 'down' | 'flat'\n\n/**\n * Кастомизация через CSS-переменные:\n *\n * - `--gr-statistic-value-color` — цвет значения (по умолчанию — из `tone`).\n * - `--gr-statistic-title-color` — цвет подписи показателя.\n */\n\nexport const statisticTitleSizeBySize: Record<GrStatisticSize, string> = {\n xs: 'text-[length:var(--gr-text-2xs)]',\n sm: 'text-[length:var(--gr-text-xs)]',\n md: 'text-[length:var(--gr-text-xs)]',\n lg: 'text-[length:var(--gr-text-sm)]',\n}\n\nexport const statisticValueSizeBySize: Record<GrStatisticSize, string> = {\n xs: 'text-[length:var(--gr-text-base)] leading-[var(--gr-leading-base)]',\n sm: 'text-[length:var(--gr-text-xl)] leading-[var(--gr-leading-xl)]',\n md: 'text-[length:var(--gr-text-3xl)] leading-[var(--gr-leading-3xl)]',\n lg: 'text-[length:var(--gr-text-4xl)] leading-tight',\n}\n\nexport const statisticAffixSizeBySize: Record<GrStatisticSize, string> = {\n xs: 'text-[length:var(--gr-text-xs)]',\n sm: 'text-[length:var(--gr-text-xs)]',\n md: 'text-[length:var(--gr-text-base)]',\n lg: 'text-[length:var(--gr-text-xl)]',\n}\n\n/**\n * Кегль приписки — значением токена, а не классом: он уезжает в\n * `--gr-value-suffix-size`, которым `GrValue` и набирает суффикс.\n *\n * Ступень шкалы, а не доля от величины: у плитки шкала размеров своя, и на\n * ступени `md` число крупное (`--gr-text-3xl`), а приписка при нём обязана\n * остаться подписью. Доля дала бы её вровень с числом.\n */\nexport const statisticAffixSizeVarBySize: Record<GrStatisticSize, string> = {\n xs: 'var(--gr-text-xs)',\n sm: 'var(--gr-text-xs)',\n md: 'var(--gr-text-base)',\n lg: 'var(--gr-text-xl)',\n}\n\n// Высота плейсхолдера загрузки повторяет строку значения — блок не «прыгает».\n// Значение отдаётся в `GrSkeleton` пропом, поэтому это px, а не класс.\nexport const statisticPlaceholderHeightBySize: Record<GrStatisticSize, string> = {\n xs: '22px',\n sm: '28px',\n md: '36px',\n lg: '44px',\n}\n\nexport const statisticTrendSizeBySize: Record<GrStatisticSize, string> = {\n xs: 'text-[length:var(--gr-text-2xs)]',\n sm: 'text-[length:var(--gr-text-xs)]',\n md: 'text-[length:var(--gr-text-xs)]',\n lg: 'text-[length:var(--gr-text-sm)]',\n}\n\n// Цвет значения по тону. `neutral` наследует основной цвет текста.\n//\n// Тона берутся из `-text`, а не из насыщенного `--gr-{tone}`: значение — это\n// ТЕКСТ на фоне страницы, а насыщенный тон для этого не предназначен\n// (`--gr-success` на `--gr-bg` — 2.2:1, ниже даже послабления 3:1 для крупного\n// текста). `-text` — ровно роль «тон как текст».\nexport const statisticValueClassByTone: Record<GrStatisticTone, string> = {\n neutral: 'text-[var(--gr-statistic-value-color,var(--gr-fg))]',\n primary: 'text-[var(--gr-statistic-value-color,var(--gr-primary))]',\n success: 'text-[var(--gr-statistic-value-color,var(--gr-success-text))]',\n warning: 'text-[var(--gr-statistic-value-color,var(--gr-warning-text))]',\n danger: 'text-[var(--gr-statistic-value-color,var(--gr-danger-text))]',\n info: 'text-[var(--gr-statistic-value-color,var(--gr-info-text))]',\n slate: 'text-[var(--gr-statistic-value-color,var(--gr-slate-text))]',\n azure: 'text-[var(--gr-statistic-value-color,var(--gr-azure-text))]',\n}\n\n// Строка динамики: рост — успех, падение — опасность, без изменений — приглушённый.\nexport const statisticTrendClassByTrend: Record<GrStatisticTrend, string> = {\n up: 'text-[var(--gr-success-text)]',\n down: 'text-[var(--gr-danger-text)]',\n flat: 'text-[var(--gr-muted-fg)]',\n}\n\nexport const statisticTitleClass = 'font-medium tracking-wide text-[var(--gr-statistic-title-color,var(--gr-muted-fg))]'\n\nexport const statisticRootBase = 'flex items-start gap-3 text-left'\n\n/**\n * Показатель-ссылка или показатель-кнопка. Своей заливки не получает: плитка\n * дашборда обычно уже лежит в `GrCard`, и вторая поверхность спорила бы с ней.\n * Видимость интерактивности держат курсор, фокус-кольцо и подсветка подписи.\n */\nexport const statisticRootInteractiveClass = 'w-full cursor-pointer rounded-[var(--gr-radius-md)] transition-colors hover:bg-[var(--gr-muted)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\n\nexport function statisticRootClass(options: { interactive: boolean }): string {\n return [\n statisticRootBase,\n options.interactive ? statisticRootInteractiveClass : '',\n ].filter(Boolean).join(' ')\n}\n\n/** `tabular-nums` держит ширину строки при переборе чисел и при смене значения. */\nexport const statisticValueTypographyClass = 'font-semibold tabular-nums'\n\nexport function statisticValueClass(options: { size: GrStatisticSize, tone: GrStatisticTone }): string {\n return [\n statisticValueTypographyClass,\n statisticValueSizeBySize[options.size],\n statisticValueClassByTone[options.tone],\n ].join(' ')\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n statisticAffixSizeBySize,\n statisticRootBase,\n statisticRootInteractiveClass,\n statisticTitleClass,\n statisticTitleSizeBySize,\n statisticTrendClassByTrend,\n statisticTrendSizeBySize,\n statisticValueClassByTone,\n statisticValueSizeBySize,\n statisticValueTypographyClass,\n} from './grStatisticStyles'\n\n// Классы из вычисляемых мап (size/tone/trend) UnoCSS сканом не находит — только safelist.\nexport const grStatisticSafelist = [...new Set([\n ...Object.values(statisticTitleSizeBySize).flatMap(splitClassTokens),\n ...Object.values(statisticValueSizeBySize).flatMap(splitClassTokens),\n ...Object.values(statisticAffixSizeBySize).flatMap(splitClassTokens),\n ...Object.values(statisticTrendSizeBySize).flatMap(splitClassTokens),\n ...Object.values(statisticValueClassByTone).flatMap(splitClassTokens),\n ...Object.values(statisticTrendClassByTrend).flatMap(splitClassTokens),\n // Иконки динамики приходят из мапы — как классы-маски их тоже надо сгенерировать.\n // Литералы из grStatisticStyles.ts (корень, подпись, типографика значения).\n ...splitClassTokens(statisticRootBase),\n ...splitClassTokens(statisticRootInteractiveClass),\n ...splitClassTokens(statisticTitleClass),\n ...splitClassTokens(statisticValueTypographyClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grStatisticSafelist } from './safelist'\n\nexport const grStatisticConfig = defineGranularComponent(import.meta.url, {\n name: 'GrStatistic',\n safelist: grStatisticSafelist,\n dependencies: ['GrSkeleton', 'GrValue'],\n})\n"],"mappings":";;;;;;;;;AAgBA,IAAa,2BAA4D;CACvE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,2BAA4D;CACvE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,2BAA4D;CACvE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;;;;;AAUA,IAAa,8BAA+D;CAC1E,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAIA,IAAa,mCAAoE;CAC/E,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,2BAA4D;CACvE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAQA,IAAa,4BAA6D;CACxE,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,QAAQ;CACR,MAAM;CACN,OAAO;CACP,OAAO;AACT;AAGA,IAAa,6BAA+D;CAC1E,IAAI;CACJ,MAAM;CACN,MAAM;AACR;AAEA,IAAa,sBAAsB;AAEnC,IAAa,oBAAoB;;;;;;AAOjC,IAAa,gCAAgC;AAE7C,SAAgB,mBAAmB,SAA2C;CAC5E,OAAO,CACL,mBACA,QAAQ,cAAc,gCAAgC,EACxD,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;AAC5B;;AAGA,IAAa,gCAAgC;AAE7C,SAAgB,oBAAoB,SAAmE;CACrG,OAAO;EACL;EACA,yBAAyB,QAAQ;EACjC,0BAA0B,QAAQ;CACpC,CAAC,CAAC,KAAK,GAAG;AACZ;;;ACxGA,IAAa,sBAAsB,CAAC,mBAAG,IAAI,IAAI;CAC7C,GAAG,OAAO,OAAO,wBAAwB,CAAC,CAAC,QAAQ,gBAAgB;CACnE,GAAG,OAAO,OAAO,wBAAwB,CAAC,CAAC,QAAQ,gBAAgB;CACnE,GAAG,OAAO,OAAO,wBAAwB,CAAC,CAAC,QAAQ,gBAAgB;CACnE,GAAG,OAAO,OAAO,wBAAwB,CAAC,CAAC,QAAQ,gBAAgB;CACnE,GAAG,OAAO,OAAO,yBAAyB,CAAC,CAAC,QAAQ,gBAAgB;CACpE,GAAG,OAAO,OAAO,0BAA0B,CAAC,CAAC,QAAQ,gBAAgB;CAGrE,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,6BAA6B;CACjD,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,6BAA6B;AACnD,CAAC,CAAC;;;ACxBF,IAAa,oBAAoB,wBAAwB,OAAO,KAAK,KAAK;CACxE,MAAM;CACN,UAAU;CACV,cAAc,CAAC,cAAc,SAAS;AACxC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
|
|
2
|
+
//#region src/components/GrContextMenu/config.ts
|
|
3
|
+
var grContextMenuConfig = defineGranularComponent(import.meta.url, {
|
|
4
|
+
name: "GrContextMenu",
|
|
5
|
+
dependencies: ["GrPopover", "GrDropdownMenu"]
|
|
6
|
+
});
|
|
7
|
+
//#endregion
|
|
8
|
+
export { grContextMenuConfig as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-CPSxM7XE.js","names":[],"sources":["../../src/components/GrContextMenu/config.ts"],"sourcesContent":["import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nexport const grContextMenuConfig = defineGranularComponent(import.meta.url, {\n name: 'GrContextMenu',\n // Компонент рендерит и слой, и пункты: без обоих рёбер у потребителя,\n // выбравшего только контекстное меню, панель приедет без фона, а пункты — без цветов.\n dependencies: ['GrPopover', 'GrDropdownMenu'],\n})\n"],"mappings":";;AAEA,IAAa,sBAAsB,wBAAwB,OAAO,KAAK,KAAK;CAC1E,MAAM;CAGN,cAAc,CAAC,aAAa,gBAAgB;AAC9C,CAAC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { t as splitClassTokens } from "./classTokens-BzazaERD.js";
|
|
2
|
+
import { i as radiusClass, s as toneClass } from "./grBadgeStyles-C1S56Alo.js";
|
|
3
|
+
import { t as grBadgeSafelist } from "./safelist-DOfCQR5O.js";
|
|
4
|
+
import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
|
|
5
|
+
//#region src/components/GrChip/grChipStyles.ts
|
|
6
|
+
/**
|
|
7
|
+
* Размеры у чипа свои, а не бейджевые.
|
|
8
|
+
*
|
|
9
|
+
* Шкал кегля в пакете две: контрольная `xs…lg` (12/13/14/16) у полей и мельче
|
|
10
|
+
* `3xs…md` (10/11/12/14) у метки — `GrBadge`, `GrTooltip`. Чип берёт
|
|
11
|
+
* контрольную: по нему кликают, и цель нажатия обязана совпадать с соседним
|
|
12
|
+
* контролом, а не с подписью. Отсюда же явная высота — у метки её нет вовсе,
|
|
13
|
+
* а у цели нажатия она и есть главное.
|
|
14
|
+
*
|
|
15
|
+
* Тона и радиусы при этом переиспользуются у `GrBadge` без изменений: чип
|
|
16
|
+
* должен стоять с бейджем в одном ряду и не расходиться с ним по цвету.
|
|
17
|
+
*/
|
|
18
|
+
var chipSizeClassBySize = {
|
|
19
|
+
xs: "h-6 gap-1 px-2 text-[length:var(--gr-control-text-xs)]",
|
|
20
|
+
sm: "h-7 gap-1 px-2.5 text-[length:var(--gr-control-text-sm)]",
|
|
21
|
+
md: "h-8 gap-1.5 px-3 text-[length:var(--gr-control-text-md)]",
|
|
22
|
+
lg: "h-9 gap-1.5 px-3.5 text-[length:var(--gr-control-text-lg)]"
|
|
23
|
+
};
|
|
24
|
+
/** Крестик и иконка не растут вместе с кеглем один в один — плитка бы разъехалась. */
|
|
25
|
+
var chipIconSizeClassBySize = {
|
|
26
|
+
xs: "h-3 w-3",
|
|
27
|
+
sm: "h-3.5 w-3.5",
|
|
28
|
+
md: "h-4 w-4",
|
|
29
|
+
lg: "h-4 w-4"
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* `leading-none` осознанно: у контрольной шкалы парных ступеней межстрочного
|
|
33
|
+
* нет, и без явного значения плитка поехала бы за `line-height` приложения.
|
|
34
|
+
* Тот же приём у `GrBadge` и `GrKbd`.
|
|
35
|
+
*/
|
|
36
|
+
var chipRootClass = "inline-flex max-w-full items-center border align-middle leading-none whitespace-nowrap";
|
|
37
|
+
/** Подпись жмётся, а не ломает ряд: чип с длинным тегом не должен рвать раскладку. */
|
|
38
|
+
var chipLabelClass = "min-w-0 truncate";
|
|
39
|
+
var chipInteractiveClass = "cursor-pointer transition-colors duration-[var(--gr-duration-fast)] ease-[var(--gr-ease-out)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] focus-visible:ring-offset-1 focus-visible:ring-offset-[var(--gr-bg)]";
|
|
40
|
+
/**
|
|
41
|
+
* Disabled гасится токеном фона, а не `opacity`: прозрачность разбавляет
|
|
42
|
+
* выверенные на AA токены текста и роняет контраст (`library-conventions.md`).
|
|
43
|
+
*/
|
|
44
|
+
var chipDisabledClass = "cursor-not-allowed bg-[var(--gr-chip-disabled-bg,var(--gr-muted))] text-[var(--gr-chip-disabled-fg,var(--gr-disabled-fg))] border-[var(--gr-chip-disabled-brd,var(--gr-brd))]";
|
|
45
|
+
/**
|
|
46
|
+
* Выбранный чип берёт **плотный** вариант своего тона, а не оттенок соседнего.
|
|
47
|
+
*
|
|
48
|
+
* Тон остаётся тем же — иначе набор фильтров превратился бы в радугу, — но
|
|
49
|
+
* меняется вес заливки: светлая подложка сменяется насыщенной, как у
|
|
50
|
+
* filled-бейджа. Это перепад светлоты, а не оттенка, поэтому различие
|
|
51
|
+
* переживает и монохром, и дальтонизм.
|
|
52
|
+
*
|
|
53
|
+
* Одной заливки всё же мало: **`font-600` остаётся вторым, нецветовым
|
|
54
|
+
* каналом** (WCAG 1.4.1). Он же вытягивает случай, когда потребитель поставил
|
|
55
|
+
* `dark` всему набору и заливка у выбранного и невыбранного совпадает.
|
|
56
|
+
*/
|
|
57
|
+
var chipSelectedClass = "font-600";
|
|
58
|
+
/** Крестик наследует цвет тона: своей роли у него нет, он часть плитки. */
|
|
59
|
+
var chipCloseClass = "shrink-0 inline-flex items-center justify-center rounded-[var(--gr-radius-full)] text-current transition-colors duration-[var(--gr-duration-fast)] ease-[var(--gr-ease-out)] hover:bg-[color-mix(in_srgb,currentColor_18%,transparent)]";
|
|
60
|
+
/**
|
|
61
|
+
* Крестик-кнопка стоит в таб-порядке и обязана показывать фокус сама: она
|
|
62
|
+
* появляется только там, где чип не виджет, то есть кольца на корне нет.
|
|
63
|
+
*/
|
|
64
|
+
var chipCloseButtonClass = `${chipCloseClass} cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]`;
|
|
65
|
+
var chipIconClass = "shrink-0";
|
|
66
|
+
function grChipClass(options) {
|
|
67
|
+
return [
|
|
68
|
+
chipRootClass,
|
|
69
|
+
radiusClass(options.radius, options.size),
|
|
70
|
+
chipSizeClassBySize[options.size],
|
|
71
|
+
options.disabled ? chipDisabledClass : toneClass(options.tone, options.dark || options.selected),
|
|
72
|
+
options.interactive && !options.disabled ? chipInteractiveClass : "",
|
|
73
|
+
options.selected ? chipSelectedClass : ""
|
|
74
|
+
].filter(Boolean).join(" ");
|
|
75
|
+
}
|
|
76
|
+
//#endregion
|
|
77
|
+
//#region src/components/GrChip/safelist.ts
|
|
78
|
+
/**
|
|
79
|
+
* Тона и радиусы приходят из `grBadgeStyles.ts`, поэтому их safelist берётся
|
|
80
|
+
* ссылкой, а не копией: копия разошлась бы с оригиналом молча. Ребро
|
|
81
|
+
* `GrChip → GrBadge` объявлено в `config.ts` — без него пресет не подмешает
|
|
82
|
+
* стили бейджа при гранулярной селекции, и чип придёт бесцветным.
|
|
83
|
+
*/
|
|
84
|
+
var grChipSafelist = [.../* @__PURE__ */ new Set([
|
|
85
|
+
...grBadgeSafelist,
|
|
86
|
+
...Object.values(chipSizeClassBySize).flatMap(splitClassTokens),
|
|
87
|
+
...Object.values(chipIconSizeClassBySize).flatMap(splitClassTokens),
|
|
88
|
+
...splitClassTokens(chipRootClass),
|
|
89
|
+
...splitClassTokens(chipLabelClass),
|
|
90
|
+
...splitClassTokens(chipInteractiveClass),
|
|
91
|
+
...splitClassTokens(chipDisabledClass),
|
|
92
|
+
...splitClassTokens(chipSelectedClass),
|
|
93
|
+
...splitClassTokens(chipCloseClass),
|
|
94
|
+
...splitClassTokens(chipCloseButtonClass),
|
|
95
|
+
...splitClassTokens(chipIconClass),
|
|
96
|
+
"h-full",
|
|
97
|
+
"w-full"
|
|
98
|
+
])];
|
|
99
|
+
//#endregion
|
|
100
|
+
//#region src/components/GrChip/config.ts
|
|
101
|
+
var grChipConfig = defineGranularComponent(import.meta.url, {
|
|
102
|
+
name: "GrChip",
|
|
103
|
+
dependencies: ["GrBadge"],
|
|
104
|
+
safelist: grChipSafelist
|
|
105
|
+
});
|
|
106
|
+
//#endregion
|
|
107
|
+
export { chipIconClass as a, grChipClass as c, chipCloseClass as i, grChipSafelist as n, chipIconSizeClassBySize as o, chipCloseButtonClass as r, chipLabelClass as s, grChipConfig as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-D7zgE_Gr.js","names":[],"sources":["../../src/components/GrChip/grChipStyles.ts","../../src/components/GrChip/safelist.ts","../../src/components/GrChip/config.ts"],"sourcesContent":["import type { GrBadgeRadius, GrBadgeTone } from '../GrBadge/grBadgeStyles'\nimport { radiusClass, toneClass } from '../GrBadge/grBadgeStyles'\n\nimport type { GrComponentSize } from '../shared/sizes'\n\nexport type GrChipTone = GrBadgeTone\nexport type GrChipSize = GrComponentSize\nexport type GrChipRadius = GrBadgeRadius\n\n/**\n * Размеры у чипа свои, а не бейджевые.\n *\n * Шкал кегля в пакете две: контрольная `xs…lg` (12/13/14/16) у полей и мельче\n * `3xs…md` (10/11/12/14) у метки — `GrBadge`, `GrTooltip`. Чип берёт\n * контрольную: по нему кликают, и цель нажатия обязана совпадать с соседним\n * контролом, а не с подписью. Отсюда же явная высота — у метки её нет вовсе,\n * а у цели нажатия она и есть главное.\n *\n * Тона и радиусы при этом переиспользуются у `GrBadge` без изменений: чип\n * должен стоять с бейджем в одном ряду и не расходиться с ним по цвету.\n */\nexport const chipSizeClassBySize: Record<GrChipSize, string> = {\n xs: 'h-6 gap-1 px-2 text-[length:var(--gr-control-text-xs)]',\n sm: 'h-7 gap-1 px-2.5 text-[length:var(--gr-control-text-sm)]',\n md: 'h-8 gap-1.5 px-3 text-[length:var(--gr-control-text-md)]',\n lg: 'h-9 gap-1.5 px-3.5 text-[length:var(--gr-control-text-lg)]',\n}\n\n/** Крестик и иконка не растут вместе с кеглем один в один — плитка бы разъехалась. */\nexport const chipIconSizeClassBySize: Record<GrChipSize, string> = {\n xs: 'h-3 w-3',\n sm: 'h-3.5 w-3.5',\n md: 'h-4 w-4',\n lg: 'h-4 w-4',\n}\n\n/**\n * `leading-none` осознанно: у контрольной шкалы парных ступеней межстрочного\n * нет, и без явного значения плитка поехала бы за `line-height` приложения.\n * Тот же приём у `GrBadge` и `GrKbd`.\n */\nexport const chipRootClass = 'inline-flex max-w-full items-center border align-middle leading-none whitespace-nowrap'\n\n/** Подпись жмётся, а не ломает ряд: чип с длинным тегом не должен рвать раскладку. */\nexport const chipLabelClass = 'min-w-0 truncate'\n\nexport const chipInteractiveClass = 'cursor-pointer transition-colors duration-[var(--gr-duration-fast)] ease-[var(--gr-ease-out)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] focus-visible:ring-offset-1 focus-visible:ring-offset-[var(--gr-bg)]'\n\n/**\n * Disabled гасится токеном фона, а не `opacity`: прозрачность разбавляет\n * выверенные на AA токены текста и роняет контраст (`library-conventions.md`).\n */\nexport const chipDisabledClass = 'cursor-not-allowed bg-[var(--gr-chip-disabled-bg,var(--gr-muted))] text-[var(--gr-chip-disabled-fg,var(--gr-disabled-fg))] border-[var(--gr-chip-disabled-brd,var(--gr-brd))]'\n\n/**\n * Выбранный чип берёт **плотный** вариант своего тона, а не оттенок соседнего.\n *\n * Тон остаётся тем же — иначе набор фильтров превратился бы в радугу, — но\n * меняется вес заливки: светлая подложка сменяется насыщенной, как у\n * filled-бейджа. Это перепад светлоты, а не оттенка, поэтому различие\n * переживает и монохром, и дальтонизм.\n *\n * Одной заливки всё же мало: **`font-600` остаётся вторым, нецветовым\n * каналом** (WCAG 1.4.1). Он же вытягивает случай, когда потребитель поставил\n * `dark` всему набору и заливка у выбранного и невыбранного совпадает.\n */\nexport const chipSelectedClass = 'font-600'\n\n/** Крестик наследует цвет тона: своей роли у него нет, он часть плитки. */\nexport const chipCloseClass = 'shrink-0 inline-flex items-center justify-center rounded-[var(--gr-radius-full)] text-current transition-colors duration-[var(--gr-duration-fast)] ease-[var(--gr-ease-out)] hover:bg-[color-mix(in_srgb,currentColor_18%,transparent)]'\n\n/**\n * Крестик-кнопка стоит в таб-порядке и обязана показывать фокус сама: она\n * появляется только там, где чип не виджет, то есть кольца на корне нет.\n */\nexport const chipCloseButtonClass = `${chipCloseClass} cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]`\n\nexport const chipIconClass = 'shrink-0'\n\nexport function grChipClass(options: {\n tone: GrChipTone\n dark: boolean\n size: GrChipSize\n radius: GrChipRadius\n interactive: boolean\n selected: boolean\n disabled: boolean\n}): string {\n return [\n chipRootClass,\n radiusClass(options.radius, options.size),\n chipSizeClassBySize[options.size],\n // Выбор поднимает вес заливки до плотного варианта того же тона.\n options.disabled ? chipDisabledClass : toneClass(options.tone, options.dark || options.selected),\n options.interactive && !options.disabled ? chipInteractiveClass : '',\n options.selected ? chipSelectedClass : '',\n ].filter(Boolean).join(' ')\n}\n","import { grBadgeSafelist } from '../GrBadge/safelist'\nimport { splitClassTokens } from '../shared/classTokens'\n\nimport {\n chipCloseButtonClass,\n chipCloseClass,\n chipDisabledClass,\n chipIconClass,\n chipIconSizeClassBySize,\n chipInteractiveClass,\n chipLabelClass,\n chipRootClass,\n chipSelectedClass,\n chipSizeClassBySize,\n} from './grChipStyles'\n\n/**\n * Тона и радиусы приходят из `grBadgeStyles.ts`, поэтому их safelist берётся\n * ссылкой, а не копией: копия разошлась бы с оригиналом молча. Ребро\n * `GrChip → GrBadge` объявлено в `config.ts` — без него пресет не подмешает\n * стили бейджа при гранулярной селекции, и чип придёт бесцветным.\n */\nexport const grChipSafelist = [...new Set([\n ...grBadgeSafelist,\n ...Object.values(chipSizeClassBySize).flatMap(splitClassTokens),\n ...Object.values(chipIconSizeClassBySize).flatMap(splitClassTokens),\n ...splitClassTokens(chipRootClass),\n ...splitClassTokens(chipLabelClass),\n ...splitClassTokens(chipInteractiveClass),\n ...splitClassTokens(chipDisabledClass),\n ...splitClassTokens(chipSelectedClass),\n ...splitClassTokens(chipCloseClass),\n ...splitClassTokens(chipCloseButtonClass),\n ...splitClassTokens(chipIconClass),\n 'h-full',\n 'w-full',\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grChipSafelist } from './safelist'\n\nexport const grChipConfig = defineGranularComponent(import.meta.url, {\n name: 'GrChip',\n // `GrBadge` — импорт его класс-мап и safelist; `GrIcon` не рендерится,\n // крестик — прямой `~icons`-компонент, поэтому его в зависимостях нет.\n dependencies: ['GrBadge'],\n safelist: grChipSafelist,\n})\n"],"mappings":";;;;;;;;;;;;;;;;;AAqBA,IAAa,sBAAkD;CAC7D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,0BAAsD;CACjE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;;AAOA,IAAa,gBAAgB;;AAG7B,IAAa,iBAAiB;AAE9B,IAAa,uBAAuB;;;;;AAMpC,IAAa,oBAAoB;;;;;;;;;;;;;AAcjC,IAAa,oBAAoB;;AAGjC,IAAa,iBAAiB;;;;;AAM9B,IAAa,uBAAuB,GAAG,eAAe;AAEtD,IAAa,gBAAgB;AAE7B,SAAgB,YAAY,SAQjB;CACT,OAAO;EACL;EACA,YAAY,QAAQ,QAAQ,QAAQ,IAAI;EACxC,oBAAoB,QAAQ;EAE5B,QAAQ,WAAW,oBAAoB,UAAU,QAAQ,MAAM,QAAQ,QAAQ,QAAQ,QAAQ;EAC/F,QAAQ,eAAe,CAAC,QAAQ,WAAW,uBAAuB;EAClE,QAAQ,WAAW,oBAAoB;CACzC,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;AAC5B;;;;;;;;;AC3EA,IAAa,iBAAiB,CAAC,mBAAG,IAAI,IAAI;CACxC,GAAG;CACH,GAAG,OAAO,OAAO,mBAAmB,CAAC,CAAC,QAAQ,gBAAgB;CAC9D,GAAG,OAAO,OAAO,uBAAuB,CAAC,CAAC,QAAQ,gBAAgB;CAClE,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,aAAa;CACjC;CACA;AACF,CAAC,CAAC;;;AChCF,IAAa,eAAe,wBAAwB,OAAO,KAAK,KAAK;CACnE,MAAM;CAGN,cAAc,CAAC,SAAS;CACxB,UAAU;AACZ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-DAX8Deh1.js","names":[],"sources":["../../src/components/GrSortableList/grSortableListStyles.ts","../../src/components/GrSortableList/safelist.ts","../../src/components/GrSortableList/config.ts"],"sourcesContent":["export type GrSortableOrientation = 'horizontal' | 'vertical'\n\n/**\n * Классы `GrSortableList`. Единственный источник правды для шаблона и\n * `safelist.ts`: литерал, живущий только здесь, до скана UnoCSS не доходит —\n * хелпер уезжает в общий чанк `dist/chunks/`.\n */\n\nexport const listClass: Record<GrSortableOrientation, string> = {\n vertical: 'flex flex-col',\n horizontal: 'flex flex-row flex-wrap',\n}\n\nexport const rowLayoutClass = 'relative flex items-center gap-2 px-4 py-3 transition-colors duration-[var(--gr-duration-fast)]'\n\n/**\n * Строка — остановка роверного фокуса, поэтому кольцо на ней, а не на ручке:\n * с клавиатуры берут строку целиком, ручка остаётся affordance для мыши.\n */\nexport const rowFocusClass = 'focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] focus-visible:ring-inset'\n\nexport const rowDraggingClass = 'bg-[var(--gr-sortable-row-bg-active,var(--gr-muted))]'\n\n/** Взятая с клавиатуры строка обязана отличаться от просто сфокусированной. */\nexport const rowGrabbedClass = 'bg-[var(--gr-sortable-row-bg-active,var(--gr-muted))] ring-2 ring-[var(--gr-ring)] ring-inset'\n\nexport const rowDisabledClass = 'cursor-not-allowed bg-[var(--gr-muted)] text-[var(--gr-muted-fg)]'\n\nexport const dividedClass = 'divide-y divide-[var(--gr-brd)]'\n\nexport const emptyClass = 'px-4 py-6 text-center text-[length:var(--gr-text-sm)] text-[var(--gr-muted-fg)]'\n\n/**\n * Ручка не табируется: внутри роверного композита свой таб-стоп сломал бы\n * правило «один Tab на список» — тот же приём, что у ручки `GrTree`.\n */\n/**\n * `[touch-action:none]` вместо `touch-none`: утилиты нет ни в `presetMini`, ни\n * в extra-rules, класс молча не превратился бы в CSS — и вертикальный свайп по\n * ручке ушёл бы в прокрутку страницы. Тот же приём у дорожки `GrSlider`.\n */\nexport const handleClass = 'flex shrink-0 items-center justify-center rounded-[var(--gr-radius-sm)] text-[var(--gr-sortable-handle-color,var(--gr-muted-fg))] size-[var(--gr-sortable-handle-size,1.5rem)] cursor-grab [touch-action:none] focus:outline-none'\n\nexport const handleDisabledClass = 'cursor-not-allowed text-[var(--gr-muted-fg)]'\n\n\nexport const contentClass = 'min-w-0 flex-1 text-[length:var(--gr-text-sm)]'\n\n/**\n * Куда встанет строка — псевдоэлемент самой строки, а не отдельный узел:\n * лишний узел между строками ломает и `divide-y`, и подсчёт позиций.\n */\nexport const indicatorBeforeClass = 'before:absolute before:inset-x-0 before:top-0 before:h-[var(--gr-sortable-indicator-width,2px)] before:bg-[var(--gr-sortable-indicator,var(--gr-primary))] before:content-empty'\n\nexport const indicatorAfterClass = 'after:absolute after:inset-x-0 after:bottom-0 after:h-[var(--gr-sortable-indicator-width,2px)] after:bg-[var(--gr-sortable-indicator,var(--gr-primary))] after:content-empty'\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n contentClass,\n dividedClass,\n emptyClass,\n handleClass,\n handleDisabledClass,\n indicatorAfterClass,\n indicatorBeforeClass,\n listClass,\n rowDisabledClass,\n rowDraggingClass,\n rowFocusClass,\n rowGrabbedClass,\n rowLayoutClass,\n} from './grSortableListStyles'\n\nexport const grSortableListSafelist = [...new Set([\n ...Object.values(listClass).flatMap(splitClassTokens),\n ...splitClassTokens(rowLayoutClass),\n ...splitClassTokens(rowFocusClass),\n ...splitClassTokens(rowDraggingClass),\n ...splitClassTokens(rowGrabbedClass),\n ...splitClassTokens(rowDisabledClass),\n ...splitClassTokens(dividedClass),\n ...splitClassTokens(emptyClass),\n ...splitClassTokens(handleClass),\n ...splitClassTokens(handleDisabledClass),\n ...splitClassTokens(contentClass),\n ...splitClassTokens(indicatorBeforeClass),\n ...splitClassTokens(indicatorAfterClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grSortableListSafelist } from './safelist'\n\nexport const grSortableListConfig = defineGranularComponent(import.meta.url, {\n name: 'GrSortableList',\n safelist: grSortableListSafelist,\n dependencies: ['GrCard'],\n})\n"],"mappings":";;;;;;;;AAQA,IAAa,YAAmD;CAC9D,UAAU;CACV,YAAY;AACd;AAEA,IAAa,iBAAiB;;;;;AAM9B,IAAa,gBAAgB;AAE7B,IAAa,mBAAmB;;AAGhC,IAAa,kBAAkB;AAE/B,IAAa,mBAAmB;AAEhC,IAAa,eAAe;AAE5B,IAAa,aAAa;;;;;;;;;;AAW1B,IAAa,cAAc;AAE3B,IAAa,sBAAsB;AAGnC,IAAa,eAAe;;;;;AAM5B,IAAa,uBAAuB;AAEpC,IAAa,sBAAsB;;;ACrCnC,IAAa,yBAAyB,CAAC,mBAAG,IAAI,IAAI;CAChD,GAAG,OAAO,OAAO,SAAS,CAAC,CAAC,QAAQ,gBAAgB;CACpD,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,YAAY;CAChC,GAAG,iBAAiB,UAAU;CAC9B,GAAG,iBAAiB,WAAW;CAC/B,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,YAAY;CAChC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,mBAAmB;AACzC,CAAC,CAAC;;;AC3BF,IAAa,uBAAuB,wBAAwB,OAAO,KAAK,KAAK;CAC3E,MAAM;CACN,UAAU;CACV,cAAc,CAAC,QAAQ;AACzB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { t as grBadgeSafelist } from "./safelist-DOfCQR5O.js";
|
|
2
|
+
import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
|
|
3
|
+
//#region src/components/GrBadge/config.ts
|
|
4
|
+
var grBadgeConfig = defineGranularComponent(import.meta.url, {
|
|
5
|
+
name: "GrBadge",
|
|
6
|
+
safelist: grBadgeSafelist,
|
|
7
|
+
tokenDefinitionsRef: {
|
|
8
|
+
light: {
|
|
9
|
+
url: "./themes/light.css",
|
|
10
|
+
selector: ":root"
|
|
11
|
+
},
|
|
12
|
+
dark: {
|
|
13
|
+
url: "./themes/dark.css",
|
|
14
|
+
as: ".dark, [data-theme=\"dark\"]"
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
//#endregion
|
|
19
|
+
export { grBadgeConfig as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-DGCMHPCR.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})"],"mappings":";;;AAIA,IAAa,gBAAgB,wBAAwB,OAAO,KAAK,KAAK;CACpE,MAAM;CACN,UAAU;CACV,qBAAqB;EACnB,OAAO;GAAE,KAAK;GAAsB,UAAU;EAAQ;EACtD,MAAM;GAAE,KAAK;GAAqB,IAAI;EAA6B;CACrE;AACF,CAAC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { t as splitClassTokens } from "./classTokens-BzazaERD.js";
|
|
2
|
+
import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
|
|
3
|
+
//#region src/components/GrSteps/grStepsStyles.ts
|
|
4
|
+
var stepsRootClass = "w-full min-w-0";
|
|
5
|
+
var stepsListClass = {
|
|
6
|
+
horizontal: "m-0 flex [list-style:none] items-start p-0",
|
|
7
|
+
vertical: "m-0 flex [list-style:none] flex-col p-0"
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Пункт растёт по горизонтали и прижимается влево по вертикали.
|
|
11
|
+
*
|
|
12
|
+
* В горизонтальной ленте маркер стоит **над** подписью, а не слева от неё:
|
|
13
|
+
* соединитель идёт от маркера к маркеру на их высоте, и подпись сбоку он бы
|
|
14
|
+
* перечёркивал. В вертикальной колонке места по ширине хватает, там подпись
|
|
15
|
+
* справа, а линия спускается вниз.
|
|
16
|
+
*/
|
|
17
|
+
var stepsItemClass = {
|
|
18
|
+
horizontal: "relative min-w-0 flex-1",
|
|
19
|
+
vertical: "relative min-w-0"
|
|
20
|
+
};
|
|
21
|
+
/** Отступ снизу у вертикального пункта — место, по которому идёт соединитель. */
|
|
22
|
+
var stepsItemConnectedClass = {
|
|
23
|
+
horizontal: "",
|
|
24
|
+
vertical: "pb-6"
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Кегль и метрика маркера на ступени.
|
|
28
|
+
*
|
|
29
|
+
* Шкала контрольная (`--gr-control-text-*`): шаги стоят в шапке мастера рядом с
|
|
30
|
+
* кнопками «Назад»/«Далее», и подпись обязана совпасть с ними, а не с меткой.
|
|
31
|
+
* Диаметр маркера — покомпонентный токен, потому что ступени в общей шкале для
|
|
32
|
+
* него нет: это не кегль и не радиус, а собственная метрика компонента.
|
|
33
|
+
*/
|
|
34
|
+
var stepsSizeClassBySize = {
|
|
35
|
+
xs: "text-[length:var(--gr-control-text-xs)] [--gr-steps-marker-size:1.25rem]",
|
|
36
|
+
sm: "text-[length:var(--gr-control-text-sm)] [--gr-steps-marker-size:1.5rem]",
|
|
37
|
+
md: "text-[length:var(--gr-control-text-md)] [--gr-steps-marker-size:1.75rem]",
|
|
38
|
+
lg: "text-[length:var(--gr-control-text-lg)] [--gr-steps-marker-size:2rem]"
|
|
39
|
+
};
|
|
40
|
+
var stepsTriggerClass = "min-w-0 bg-transparent focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--gr-bg)] rounded-[var(--gr-radius-md)]";
|
|
41
|
+
var stepsTriggerClassByOrientation = {
|
|
42
|
+
horizontal: "flex w-full flex-col items-center gap-1.5 text-center",
|
|
43
|
+
vertical: "flex w-full items-start gap-3 text-left"
|
|
44
|
+
};
|
|
45
|
+
/** Кликабельный шаг обязан выглядеть кликабельным — иначе о нём не догадаются. */
|
|
46
|
+
var stepsTriggerEnabledClass = "cursor-pointer";
|
|
47
|
+
var stepsMarkerClass = "inline-flex shrink-0 items-center justify-center rounded-[var(--gr-radius-full)] border font-600 leading-none h-[var(--gr-steps-marker-size)] w-[var(--gr-steps-marker-size)] text-[length:var(--gr-control-text-2xs)]";
|
|
48
|
+
/**
|
|
49
|
+
* Маркер по статусу.
|
|
50
|
+
*
|
|
51
|
+
* Пройденный — сплошная заливка, текущий — обводка тем же тоном, будущий —
|
|
52
|
+
* приглушённый. Различие идёт по светлоте, а не по оттенку: три соседних цвета
|
|
53
|
+
* одного тона на одной ленте не читаются, а сплошное/полое — читается и в
|
|
54
|
+
* монохроме. `error` — единственный, кто меняет тон, и меняет его осмысленно.
|
|
55
|
+
*/
|
|
56
|
+
var stepsMarkerClassByStatus = {
|
|
57
|
+
complete: "border-[var(--gr-primary-solid)] bg-[var(--gr-primary-solid)] text-[var(--gr-primary-solid-fg)]",
|
|
58
|
+
current: "border-[var(--gr-primary-solid)] bg-[var(--gr-bg)] text-[var(--gr-primary-text)]",
|
|
59
|
+
upcoming: "border-[var(--gr-brd)] bg-[var(--gr-bg)] text-[var(--gr-muted-fg)]",
|
|
60
|
+
error: "border-[var(--gr-danger-solid)] bg-[var(--gr-danger-solid)] text-[var(--gr-danger-solid-fg)]"
|
|
61
|
+
};
|
|
62
|
+
var stepsLabelClass = "block min-w-0 font-600";
|
|
63
|
+
var stepsLabelClassByStatus = {
|
|
64
|
+
complete: "text-[var(--gr-fg)]",
|
|
65
|
+
current: "text-[var(--gr-fg)]",
|
|
66
|
+
upcoming: "text-[var(--gr-muted-fg)]",
|
|
67
|
+
error: "text-[var(--gr-danger-text)]"
|
|
68
|
+
};
|
|
69
|
+
var stepsDescriptionClass = "block mt-0.5 text-[length:var(--gr-control-text-xs)] text-[var(--gr-muted-fg)]";
|
|
70
|
+
/**
|
|
71
|
+
* Соединитель между шагами.
|
|
72
|
+
*
|
|
73
|
+
* Позиция считается от диаметра маркера, а не от жёсткой высоты: маркер растёт
|
|
74
|
+
* со ступенью размера, и линия обязана оставаться на его оси. По горизонтали
|
|
75
|
+
* пункты делят ширину поровну, поэтому маркер стоит ровно по центру пункта —
|
|
76
|
+
* отсюда `50%` слева и `-50%` справа: линия идёт от края одного маркера до
|
|
77
|
+
* края соседнего.
|
|
78
|
+
*/
|
|
79
|
+
var stepsConnectorClass = {
|
|
80
|
+
horizontal: "absolute top-[calc(var(--gr-steps-marker-size)/2)] h-[var(--gr-steps-connector-size,2px)] -translate-y-1/2 left-[calc(50%+var(--gr-steps-marker-size)/2+0.5rem)] right-[calc(-50%+var(--gr-steps-marker-size)/2+0.5rem)]",
|
|
81
|
+
vertical: "absolute left-[calc(var(--gr-steps-marker-size)/2)] w-[var(--gr-steps-connector-size,2px)] -translate-x-1/2 top-[calc(var(--gr-steps-marker-size)+0.375rem)] bottom-1"
|
|
82
|
+
};
|
|
83
|
+
var stepsConnectorDoneClass = "bg-[var(--gr-steps-connector-done,var(--gr-primary-solid))]";
|
|
84
|
+
var stepsConnectorPendingClass = "bg-[var(--gr-steps-connector-pending,var(--gr-brd))]";
|
|
85
|
+
/** Компактный вариант: подпись и полоса вместо ленты. */
|
|
86
|
+
var stepsCompactRowClass = "flex items-baseline justify-between gap-3";
|
|
87
|
+
var stepsCompactCounterClass = "shrink-0 text-[length:var(--gr-control-text-xs)] text-[var(--gr-muted-fg)]";
|
|
88
|
+
var stepsCompactLabelClass = "min-w-0 truncate font-600 text-[var(--gr-fg)]";
|
|
89
|
+
var stepsCompactBarClass = "mt-2";
|
|
90
|
+
function grStepsMarkerClass(status) {
|
|
91
|
+
return `${stepsMarkerClass} ${stepsMarkerClassByStatus[status]}`;
|
|
92
|
+
}
|
|
93
|
+
function grStepsLabelClass(status) {
|
|
94
|
+
return `${stepsLabelClass} ${stepsLabelClassByStatus[status]}`;
|
|
95
|
+
}
|
|
96
|
+
//#endregion
|
|
97
|
+
//#region src/components/GrSteps/safelist.ts
|
|
98
|
+
var grStepsSafelist = [.../* @__PURE__ */ new Set([
|
|
99
|
+
...Object.values(stepsSizeClassBySize).flatMap(splitClassTokens),
|
|
100
|
+
...Object.values(stepsListClass).flatMap(splitClassTokens),
|
|
101
|
+
...Object.values(stepsItemClass).flatMap(splitClassTokens),
|
|
102
|
+
...Object.values(stepsItemConnectedClass).flatMap(splitClassTokens),
|
|
103
|
+
...Object.values(stepsTriggerClassByOrientation).flatMap(splitClassTokens),
|
|
104
|
+
...Object.values(stepsConnectorClass).flatMap(splitClassTokens),
|
|
105
|
+
...Object.values(stepsMarkerClassByStatus).flatMap(splitClassTokens),
|
|
106
|
+
...Object.values(stepsLabelClassByStatus).flatMap(splitClassTokens),
|
|
107
|
+
...splitClassTokens(stepsRootClass),
|
|
108
|
+
...splitClassTokens(stepsMarkerClass),
|
|
109
|
+
...splitClassTokens(stepsLabelClass),
|
|
110
|
+
...splitClassTokens(stepsDescriptionClass),
|
|
111
|
+
...splitClassTokens(stepsTriggerClass),
|
|
112
|
+
...splitClassTokens(stepsTriggerEnabledClass),
|
|
113
|
+
...splitClassTokens(stepsConnectorDoneClass),
|
|
114
|
+
...splitClassTokens(stepsConnectorPendingClass),
|
|
115
|
+
...splitClassTokens(stepsCompactRowClass),
|
|
116
|
+
...splitClassTokens(stepsCompactCounterClass),
|
|
117
|
+
...splitClassTokens(stepsCompactLabelClass),
|
|
118
|
+
...splitClassTokens(stepsCompactBarClass)
|
|
119
|
+
])];
|
|
120
|
+
//#endregion
|
|
121
|
+
//#region src/components/GrSteps/config.ts
|
|
122
|
+
var grStepsConfig = defineGranularComponent(import.meta.url, {
|
|
123
|
+
name: "GrSteps",
|
|
124
|
+
dependencies: ["GrProgressBar"],
|
|
125
|
+
safelist: grStepsSafelist
|
|
126
|
+
});
|
|
127
|
+
//#endregion
|
|
128
|
+
export { stepsSizeClassBySize as _, stepsCompactBarClass as a, stepsTriggerEnabledClass as b, stepsCompactRowClass as c, stepsConnectorPendingClass as d, stepsDescriptionClass as f, stepsRootClass as g, stepsListClass as h, grStepsMarkerClass as i, stepsConnectorClass as l, stepsItemConnectedClass as m, grStepsSafelist as n, stepsCompactCounterClass as o, stepsItemClass as p, grStepsLabelClass as r, stepsCompactLabelClass as s, grStepsConfig as t, stepsConnectorDoneClass as u, stepsTriggerClass as v, stepsTriggerClassByOrientation as y };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-DGWFal5h.js","names":[],"sources":["../../src/components/GrSteps/grStepsStyles.ts","../../src/components/GrSteps/safelist.ts","../../src/components/GrSteps/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\nimport type { GrStepStatus } from './stepsModel'\n\nexport type GrStepsSize = GrComponentSize\nexport type GrStepsOrientation = 'horizontal' | 'vertical'\nexport type GrStepsVariant = 'steps' | 'compact'\n\nexport const stepsRootClass = 'w-full min-w-0'\n\nexport const stepsListClass: Record<GrStepsOrientation, string> = {\n // Горизонтальная лента делит ширину поровну: шаги — равноправные этапы, и\n // разная ширина читалась бы как разный вес.\n // `[list-style:none]`, а не `list-none`: утилита не входит в документированный\n // пресет и CSS не даёт (гейт `documentedConfig`). Так же живёт `GrBreadcrumbs`.\n horizontal: 'm-0 flex [list-style:none] items-start p-0',\n vertical: 'm-0 flex [list-style:none] flex-col p-0',\n}\n\n/**\n * Пункт растёт по горизонтали и прижимается влево по вертикали.\n *\n * В горизонтальной ленте маркер стоит **над** подписью, а не слева от неё:\n * соединитель идёт от маркера к маркеру на их высоте, и подпись сбоку он бы\n * перечёркивал. В вертикальной колонке места по ширине хватает, там подпись\n * справа, а линия спускается вниз.\n */\nexport const stepsItemClass: Record<GrStepsOrientation, string> = {\n horizontal: 'relative min-w-0 flex-1',\n vertical: 'relative min-w-0',\n}\n\n/** Отступ снизу у вертикального пункта — место, по которому идёт соединитель. */\nexport const stepsItemConnectedClass: Record<GrStepsOrientation, string> = {\n horizontal: '',\n vertical: 'pb-6',\n}\n\n/**\n * Кегль и метрика маркера на ступени.\n *\n * Шкала контрольная (`--gr-control-text-*`): шаги стоят в шапке мастера рядом с\n * кнопками «Назад»/«Далее», и подпись обязана совпасть с ними, а не с меткой.\n * Диаметр маркера — покомпонентный токен, потому что ступени в общей шкале для\n * него нет: это не кегль и не радиус, а собственная метрика компонента.\n */\nexport const stepsSizeClassBySize: Record<GrStepsSize, string> = {\n xs: 'text-[length:var(--gr-control-text-xs)] [--gr-steps-marker-size:1.25rem]',\n sm: 'text-[length:var(--gr-control-text-sm)] [--gr-steps-marker-size:1.5rem]',\n md: 'text-[length:var(--gr-control-text-md)] [--gr-steps-marker-size:1.75rem]',\n lg: 'text-[length:var(--gr-control-text-lg)] [--gr-steps-marker-size:2rem]',\n}\n\nexport const stepsTriggerClass = 'min-w-0 bg-transparent focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--gr-bg)] rounded-[var(--gr-radius-md)]'\n\nexport const stepsTriggerClassByOrientation: Record<GrStepsOrientation, string> = {\n horizontal: 'flex w-full flex-col items-center gap-1.5 text-center',\n vertical: 'flex w-full items-start gap-3 text-left',\n}\n\n/** Кликабельный шаг обязан выглядеть кликабельным — иначе о нём не догадаются. */\nexport const stepsTriggerEnabledClass = 'cursor-pointer'\n\nexport const stepsMarkerClass = 'inline-flex shrink-0 items-center justify-center rounded-[var(--gr-radius-full)] border font-600 leading-none h-[var(--gr-steps-marker-size)] w-[var(--gr-steps-marker-size)] text-[length:var(--gr-control-text-2xs)]'\n\n/**\n * Маркер по статусу.\n *\n * Пройденный — сплошная заливка, текущий — обводка тем же тоном, будущий —\n * приглушённый. Различие идёт по светлоте, а не по оттенку: три соседних цвета\n * одного тона на одной ленте не читаются, а сплошное/полое — читается и в\n * монохроме. `error` — единственный, кто меняет тон, и меняет его осмысленно.\n */\nexport const stepsMarkerClassByStatus: Record<GrStepStatus, string> = {\n complete: 'border-[var(--gr-primary-solid)] bg-[var(--gr-primary-solid)] text-[var(--gr-primary-solid-fg)]',\n current: 'border-[var(--gr-primary-solid)] bg-[var(--gr-bg)] text-[var(--gr-primary-text)]',\n upcoming: 'border-[var(--gr-brd)] bg-[var(--gr-bg)] text-[var(--gr-muted-fg)]',\n error: 'border-[var(--gr-danger-solid)] bg-[var(--gr-danger-solid)] text-[var(--gr-danger-solid-fg)]',\n}\n\nexport const stepsLabelClass = 'block min-w-0 font-600'\n\nexport const stepsLabelClassByStatus: Record<GrStepStatus, string> = {\n complete: 'text-[var(--gr-fg)]',\n current: 'text-[var(--gr-fg)]',\n upcoming: 'text-[var(--gr-muted-fg)]',\n error: 'text-[var(--gr-danger-text)]',\n}\n\nexport const stepsDescriptionClass = 'block mt-0.5 text-[length:var(--gr-control-text-xs)] text-[var(--gr-muted-fg)]'\n\n/**\n * Соединитель между шагами.\n *\n * Позиция считается от диаметра маркера, а не от жёсткой высоты: маркер растёт\n * со ступенью размера, и линия обязана оставаться на его оси. По горизонтали\n * пункты делят ширину поровну, поэтому маркер стоит ровно по центру пункта —\n * отсюда `50%` слева и `-50%` справа: линия идёт от края одного маркера до\n * края соседнего.\n */\nexport const stepsConnectorClass: Record<GrStepsOrientation, string> = {\n horizontal: 'absolute top-[calc(var(--gr-steps-marker-size)/2)] h-[var(--gr-steps-connector-size,2px)] -translate-y-1/2 left-[calc(50%+var(--gr-steps-marker-size)/2+0.5rem)] right-[calc(-50%+var(--gr-steps-marker-size)/2+0.5rem)]',\n vertical: 'absolute left-[calc(var(--gr-steps-marker-size)/2)] w-[var(--gr-steps-connector-size,2px)] -translate-x-1/2 top-[calc(var(--gr-steps-marker-size)+0.375rem)] bottom-1',\n}\n\nexport const stepsConnectorDoneClass = 'bg-[var(--gr-steps-connector-done,var(--gr-primary-solid))]'\nexport const stepsConnectorPendingClass = 'bg-[var(--gr-steps-connector-pending,var(--gr-brd))]'\n\n/** Компактный вариант: подпись и полоса вместо ленты. */\nexport const stepsCompactRowClass = 'flex items-baseline justify-between gap-3'\nexport const stepsCompactCounterClass = 'shrink-0 text-[length:var(--gr-control-text-xs)] text-[var(--gr-muted-fg)]'\nexport const stepsCompactLabelClass = 'min-w-0 truncate font-600 text-[var(--gr-fg)]'\nexport const stepsCompactBarClass = 'mt-2'\n\nexport function grStepsMarkerClass(status: GrStepStatus): string {\n return `${stepsMarkerClass} ${stepsMarkerClassByStatus[status]}`\n}\n\nexport function grStepsLabelClass(status: GrStepStatus): string {\n return `${stepsLabelClass} ${stepsLabelClassByStatus[status]}`\n}\n","import { splitClassTokens } from '../shared/classTokens'\n\nimport {\n stepsCompactBarClass,\n stepsCompactCounterClass,\n stepsCompactLabelClass,\n stepsCompactRowClass,\n stepsConnectorClass,\n stepsConnectorDoneClass,\n stepsConnectorPendingClass,\n stepsDescriptionClass,\n stepsItemClass,\n stepsItemConnectedClass,\n stepsLabelClass,\n stepsLabelClassByStatus,\n stepsListClass,\n stepsMarkerClass,\n stepsMarkerClassByStatus,\n stepsRootClass,\n stepsSizeClassBySize,\n stepsTriggerClass,\n stepsTriggerClassByOrientation,\n stepsTriggerEnabledClass,\n} from './grStepsStyles'\n\nexport const grStepsSafelist = [...new Set([\n ...Object.values(stepsSizeClassBySize).flatMap(splitClassTokens),\n ...Object.values(stepsListClass).flatMap(splitClassTokens),\n ...Object.values(stepsItemClass).flatMap(splitClassTokens),\n ...Object.values(stepsItemConnectedClass).flatMap(splitClassTokens),\n ...Object.values(stepsTriggerClassByOrientation).flatMap(splitClassTokens),\n ...Object.values(stepsConnectorClass).flatMap(splitClassTokens),\n ...Object.values(stepsMarkerClassByStatus).flatMap(splitClassTokens),\n ...Object.values(stepsLabelClassByStatus).flatMap(splitClassTokens),\n ...splitClassTokens(stepsRootClass),\n ...splitClassTokens(stepsMarkerClass),\n ...splitClassTokens(stepsLabelClass),\n ...splitClassTokens(stepsDescriptionClass),\n ...splitClassTokens(stepsTriggerClass),\n ...splitClassTokens(stepsTriggerEnabledClass),\n ...splitClassTokens(stepsConnectorDoneClass),\n ...splitClassTokens(stepsConnectorPendingClass),\n ...splitClassTokens(stepsCompactRowClass),\n ...splitClassTokens(stepsCompactCounterClass),\n ...splitClassTokens(stepsCompactLabelClass),\n ...splitClassTokens(stepsCompactBarClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grStepsSafelist } from './safelist'\n\nexport const grStepsConfig = defineGranularComponent(import.meta.url, {\n name: 'GrSteps',\n // Компактный вариант рендерит полосу прогресса — это ребро графа.\n dependencies: ['GrProgressBar'],\n safelist: grStepsSafelist,\n})\n"],"mappings":";;;AAQA,IAAa,iBAAiB;AAE9B,IAAa,iBAAqD;CAKhE,YAAY;CACZ,UAAU;AACZ;;;;;;;;;AAUA,IAAa,iBAAqD;CAChE,YAAY;CACZ,UAAU;AACZ;;AAGA,IAAa,0BAA8D;CACzE,YAAY;CACZ,UAAU;AACZ;;;;;;;;;AAUA,IAAa,uBAAoD;CAC/D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,oBAAoB;AAEjC,IAAa,iCAAqE;CAChF,YAAY;CACZ,UAAU;AACZ;;AAGA,IAAa,2BAA2B;AAExC,IAAa,mBAAmB;;;;;;;;;AAUhC,IAAa,2BAAyD;CACpE,UAAU;CACV,SAAS;CACT,UAAU;CACV,OAAO;AACT;AAEA,IAAa,kBAAkB;AAE/B,IAAa,0BAAwD;CACnE,UAAU;CACV,SAAS;CACT,UAAU;CACV,OAAO;AACT;AAEA,IAAa,wBAAwB;;;;;;;;;;AAWrC,IAAa,sBAA0D;CACrE,YAAY;CACZ,UAAU;AACZ;AAEA,IAAa,0BAA0B;AACvC,IAAa,6BAA6B;;AAG1C,IAAa,uBAAuB;AACpC,IAAa,2BAA2B;AACxC,IAAa,yBAAyB;AACtC,IAAa,uBAAuB;AAEpC,SAAgB,mBAAmB,QAA8B;CAC/D,OAAO,GAAG,iBAAiB,GAAG,yBAAyB;AACzD;AAEA,SAAgB,kBAAkB,QAA8B;CAC9D,OAAO,GAAG,gBAAgB,GAAG,wBAAwB;AACvD;;;AC/FA,IAAa,kBAAkB,CAAC,mBAAG,IAAI,IAAI;CACzC,GAAG,OAAO,OAAO,oBAAoB,CAAC,CAAC,QAAQ,gBAAgB;CAC/D,GAAG,OAAO,OAAO,cAAc,CAAC,CAAC,QAAQ,gBAAgB;CACzD,GAAG,OAAO,OAAO,cAAc,CAAC,CAAC,QAAQ,gBAAgB;CACzD,GAAG,OAAO,OAAO,uBAAuB,CAAC,CAAC,QAAQ,gBAAgB;CAClE,GAAG,OAAO,OAAO,8BAA8B,CAAC,CAAC,QAAQ,gBAAgB;CACzE,GAAG,OAAO,OAAO,mBAAmB,CAAC,CAAC,QAAQ,gBAAgB;CAC9D,GAAG,OAAO,OAAO,wBAAwB,CAAC,CAAC,QAAQ,gBAAgB;CACnE,GAAG,OAAO,OAAO,uBAAuB,CAAC,CAAC,QAAQ,gBAAgB;CAClE,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,qBAAqB;CACzC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,wBAAwB;CAC5C,GAAG,iBAAiB,uBAAuB;CAC3C,GAAG,iBAAiB,0BAA0B;CAC9C,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,wBAAwB;CAC5C,GAAG,iBAAiB,sBAAsB;CAC1C,GAAG,iBAAiB,oBAAoB;AAC1C,CAAC,CAAC;;;AC1CF,IAAa,gBAAgB,wBAAwB,OAAO,KAAK,KAAK;CACpE,MAAM;CAEN,cAAc,CAAC,eAAe;CAC9B,UAAU;AACZ,CAAC"}
|