@feugene/granularity 0.24.1 → 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-BViooYNv.js.map +1 -0
- package/dist/chunks/config-BfsBepkH.js.map +1 -0
- package/dist/chunks/config-BuGlNPE92.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-BSyiFlbi2.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-rkcKArZQ.js.map +1 -0
- package/dist/chunks/config-vSji8w90.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-1WEi10KK.js → generated-CJe6hdiE.js} +49 -0
- package/dist/chunks/{generated-1WEi10KK.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-Dr2PKgl1.js → granular-provider-BaHkLjFX.js} +19 -11
- 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-gI2wA8ZZ.js → GrCard-aQIjk6I9.js} +1 -1
- package/dist/components/GrCard/chunks/GrCard-aQIjk6I9.js.map +1 -0
- package/dist/components/GrCard/index.js +1 -1
- 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-DIHEiTju.js → GrCollapse-DUROgAgc.js} +1 -1
- package/dist/components/GrCollapse/chunks/{GrCollapse-DIHEiTju.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/GrDescriptionList/chunks/{GrDescriptionList-C6Pxjjbh.js → GrDescriptionList-1mICfrqX.js} +1 -1
- package/dist/components/GrDescriptionList/chunks/{GrDescriptionList-C6Pxjjbh.js.map → GrDescriptionList-1mICfrqX.js.map} +1 -1
- 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 +2 -2
- 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/GrEmptyState/chunks/{GrEmptyState-BGUX8O0U.js → GrEmptyState-CS9do8eM.js} +1 -1
- package/dist/components/GrEmptyState/chunks/{GrEmptyState-BGUX8O0U.js.map → GrEmptyState-CS9do8eM.js.map} +1 -1
- package/dist/components/GrEmptyState/index.js +2 -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-DAtzVIHh.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/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/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-BmcUVAMb.js → GrSortableList-BMXyxmRc.js} +3 -3
- package/dist/components/GrSortableList/chunks/{GrSortableList-BmcUVAMb.js.map → GrSortableList-BMXyxmRc.js.map} +1 -1
- package/dist/components/GrSortableList/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/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/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/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 +66 -56
- 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/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/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 +1 -1
- 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/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 +4 -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 +4 -0
- package/dist/web-types.json +790 -241
- package/package.json +18 -2
- package/dist/chunks/config-BSyiFlbi2.js.map +0 -1
- package/dist/chunks/config-BViooYNv2.js.map +0 -1
- package/dist/chunks/config-BfsBepkH2.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-T3qdQBgU2.js.map +0 -1
- package/dist/chunks/config-qVg3Zz_A.js.map +0 -1
- package/dist/chunks/config-rkcKArZQ2.js.map +0 -1
- package/dist/chunks/config-vSji8w902.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-Dr2PKgl1.js.map +0 -1
- package/dist/chunks/ru-CLiAMwrx.js.map +0 -1
- package/dist/components/GrCard/chunks/GrCard-gI2wA8ZZ.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/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-DAtzVIHh.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/GrSelect/chunks/GrSelect-CaGuyvtb.js.map +0 -1
- package/dist/components/GrTimeline/chunks/GrTimeline-Ch9sHzwL.js.map +0 -1
- package/dist/chunks/{config-BViooYNv2.js → config-BViooYNv.js} +0 -0
- package/dist/chunks/{config-BfsBepkH2.js → config-BfsBepkH.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-rkcKArZQ2.js → config-rkcKArZQ.js} +0 -0
- package/dist/chunks/{config-vSji8w902.js → config-vSji8w90.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 @@
|
|
|
1
|
+
{"version":3,"file":"config-BViooYNv.js","names":[],"sources":["../../src/components/GrDropdown/safelist.ts","../../src/components/GrDropdown/config.ts"],"sourcesContent":["import { splitClassTokens } from '../shared/classTokens'\nimport {\n dropdownContentBaseClass,\n originClassByPlacement,\n} from './grDropdownStyles'\n\n// И динамические токены (`resolvedPlacement`), и литералы отделки панели:\n// `grDropdownStyles.ts` уезжает в общий `dist/chunks/`, вне области скана\n// компонента — гейт `src/__tests__/safelist.test.ts`.\nexport const grDropdownSafelist = [...new Set([\n ...Object.values(originClassByPlacement).flatMap(v => splitClassTokens(v ?? '')),\n ...splitClassTokens(dropdownContentBaseClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grDropdownSafelist } from './safelist'\n\nexport const grDropdownConfig = defineGranularComponent(import.meta.url, {\n name: 'GrDropdown',\n safelist: grDropdownSafelist,\n})"],"mappings":";;;;AASA,IAAa,qBAAqB,CAAC,mBAAG,IAAI,IAAI,CAC5C,GAAG,OAAO,OAAO,sBAAsB,CAAC,CAAC,SAAQ,MAAK,iBAAiB,KAAK,EAAE,CAAC,GAC/E,GAAG,iBAAiB,wBAAwB,CAC9C,CAAC,CAAC;;;ACRF,IAAa,mBAAmB,wBAAwB,OAAO,KAAK,KAAK;CACvE,MAAM;CACN,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-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"}
|
|
@@ -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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { t as splitClassTokens } from "./classTokens-BzazaERD.js";
|
|
2
|
+
import { _ as itemShortcutClass, a as columnBaseClass, b as textAlignClass, c as dividerInsetClass, f as headerClass, g as itemInteractiveClass, h as itemIndicatorClass, i as colsClass, l as dividersClass, m as itemDisabledClass, n as borderBottomClass, o as columnsBaseClass, p as itemBaseClass, r as borderTopClass, s as dividerClass, t as alignClass, v as itemVariantClass, y as listBaseClass } from "./grDropdownMenuStyles-D1LOkdVj.js";
|
|
3
|
+
import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
|
|
4
|
+
//#region src/components/GrDropdownMenu/safelist.ts
|
|
5
|
+
/**
|
|
6
|
+
* Классы каталога живут в `.ts`-хелпере, а его бандлер волен вынести в общий
|
|
7
|
+
* `dist/chunks/` — вне области скана компонента. Симптом промаха тут особенно
|
|
8
|
+
* незаметный: размеры пунктов на месте, а выравнивание, колонки и цвета
|
|
9
|
+
* пропали. Гейт — `src/__tests__/safelist.test.ts`.
|
|
10
|
+
*/
|
|
11
|
+
var grDropdownMenuSafelist = [.../* @__PURE__ */ new Set([
|
|
12
|
+
...Object.values(alignClass).flatMap(splitClassTokens),
|
|
13
|
+
...Object.values(textAlignClass).flatMap(splitClassTokens),
|
|
14
|
+
...Object.values(colsClass).flatMap(splitClassTokens),
|
|
15
|
+
...Object.values(itemVariantClass).flatMap(splitClassTokens),
|
|
16
|
+
...splitClassTokens(itemBaseClass),
|
|
17
|
+
...splitClassTokens(itemInteractiveClass),
|
|
18
|
+
...splitClassTokens(itemDisabledClass),
|
|
19
|
+
...splitClassTokens(itemIndicatorClass),
|
|
20
|
+
...splitClassTokens(itemShortcutClass),
|
|
21
|
+
...splitClassTokens(headerClass),
|
|
22
|
+
...splitClassTokens(listBaseClass),
|
|
23
|
+
...splitClassTokens(dividersClass),
|
|
24
|
+
...splitClassTokens(borderTopClass),
|
|
25
|
+
...splitClassTokens(borderBottomClass),
|
|
26
|
+
...splitClassTokens(columnsBaseClass),
|
|
27
|
+
...splitClassTokens(columnBaseClass),
|
|
28
|
+
...splitClassTokens(dividerClass),
|
|
29
|
+
...splitClassTokens(dividerInsetClass)
|
|
30
|
+
])];
|
|
31
|
+
//#endregion
|
|
32
|
+
//#region src/components/GrDropdownMenu/config.ts
|
|
33
|
+
var grDropdownMenuConfig = defineGranularComponent(import.meta.url, {
|
|
34
|
+
name: "GrDropdownMenu",
|
|
35
|
+
dependencies: ["GrDropdown"],
|
|
36
|
+
safelist: grDropdownMenuSafelist
|
|
37
|
+
});
|
|
38
|
+
//#endregion
|
|
39
|
+
export { grDropdownMenuSafelist as n, grDropdownMenuConfig as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-DKISz9gR.js","names":[],"sources":["../../src/components/GrDropdownMenu/safelist.ts","../../src/components/GrDropdownMenu/config.ts"],"sourcesContent":["import { splitClassTokens } from '../shared/classTokens'\n\nimport {\n alignClass,\n borderBottomClass,\n borderTopClass,\n colsClass,\n columnBaseClass,\n columnsBaseClass,\n dividerClass,\n dividerInsetClass,\n dividersClass,\n headerClass,\n itemBaseClass,\n itemDisabledClass,\n itemIndicatorClass,\n itemInteractiveClass,\n itemShortcutClass,\n itemVariantClass,\n listBaseClass,\n textAlignClass,\n} from './grDropdownMenuStyles'\n\n/**\n * Классы каталога живут в `.ts`-хелпере, а его бандлер волен вынести в общий\n * `dist/chunks/` — вне области скана компонента. Симптом промаха тут особенно\n * незаметный: размеры пунктов на месте, а выравнивание, колонки и цвета\n * пропали. Гейт — `src/__tests__/safelist.test.ts`.\n */\nexport const grDropdownMenuSafelist = [...new Set([\n ...Object.values(alignClass).flatMap(splitClassTokens),\n ...Object.values(textAlignClass).flatMap(splitClassTokens),\n ...Object.values(colsClass).flatMap(splitClassTokens),\n ...Object.values(itemVariantClass).flatMap(splitClassTokens),\n ...splitClassTokens(itemBaseClass),\n ...splitClassTokens(itemInteractiveClass),\n ...splitClassTokens(itemDisabledClass),\n ...splitClassTokens(itemIndicatorClass),\n ...splitClassTokens(itemShortcutClass),\n ...splitClassTokens(headerClass),\n ...splitClassTokens(listBaseClass),\n ...splitClassTokens(dividersClass),\n ...splitClassTokens(borderTopClass),\n ...splitClassTokens(borderBottomClass),\n ...splitClassTokens(columnsBaseClass),\n ...splitClassTokens(columnBaseClass),\n ...splitClassTokens(dividerClass),\n ...splitClassTokens(dividerInsetClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grDropdownMenuSafelist } from './safelist'\n\nexport const grDropdownMenuConfig = defineGranularComponent(import.meta.url, {\n name: 'GrDropdownMenu',\n dependencies: ['GrDropdown'],\n safelist: grDropdownMenuSafelist,\n})\n"],"mappings":";;;;;;;;;;AA6BA,IAAa,yBAAyB,CAAC,mBAAG,IAAI,IAAI;CAC9C,GAAG,OAAO,OAAO,UAAU,CAAC,CAAC,QAAQ,gBAAgB;CACrD,GAAG,OAAO,OAAO,cAAc,CAAC,CAAC,QAAQ,gBAAgB;CACzD,GAAG,OAAO,OAAO,SAAS,CAAC,CAAC,QAAQ,gBAAgB;CACpD,GAAG,OAAO,OAAO,gBAAgB,CAAC,CAAC,QAAQ,gBAAgB;CAC3D,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,kBAAkB;CACtC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,WAAW;CAC/B,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,YAAY;CAChC,GAAG,iBAAiB,iBAAiB;AACzC,CAAC,CAAC;;;AC5CF,IAAa,uBAAuB,wBAAwB,OAAO,KAAK,KAAK;CAC3E,MAAM;CACN,cAAc,CAAC,YAAY;CAC3B,UAAU;AACZ,CAAC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { t as splitClassTokens } from "./classTokens-BzazaERD.js";
|
|
2
|
-
import {
|
|
2
|
+
import { a as popoverPanelBaseClass, i as panelSizesFlush, n as originClassByPlacement, r as panelSizes } from "./grPopoverStyles-Cke_BZsM.js";
|
|
3
3
|
import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
|
|
4
4
|
//#region src/components/GrPopover/safelist.ts
|
|
5
5
|
var grPopoverSafelist = [.../* @__PURE__ */ new Set([
|
|
6
6
|
...Object.values(panelSizes).flatMap(splitClassTokens),
|
|
7
|
+
...Object.values(panelSizesFlush).flatMap(splitClassTokens),
|
|
7
8
|
...Object.values(originClassByPlacement).flatMap(splitClassTokens),
|
|
8
9
|
...splitClassTokens(popoverPanelBaseClass)
|
|
9
10
|
])];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-DtgYuGUn2.js","names":[],"sources":["../../src/components/GrPopover/safelist.ts","../../src/components/GrPopover/config.ts"],"sourcesContent":["import { splitClassTokens } from '../shared/classTokens'\nimport { originClassByPlacement, panelSizes, panelSizesFlush, popoverPanelBaseClass } from './grPopoverStyles'\n\nexport const grPopoverSafelist = [...new Set([\n ...Object.values(panelSizes).flatMap(splitClassTokens),\n ...Object.values(panelSizesFlush).flatMap(splitClassTokens),\n ...Object.values(originClassByPlacement).flatMap(splitClassTokens),\n // Базовый класс живёт литералом в `grPopoverStyles.ts`, а такой хелпер на\n // сборке уезжает в общий чанк, которого скан не видит (см. gotchas.md §2).\n ...splitClassTokens(popoverPanelBaseClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grPopoverSafelist } from './safelist'\n\nexport const grPopoverConfig = defineGranularComponent(import.meta.url, {\n name: 'GrPopover',\n safelist: grPopoverSafelist,\n})\n"],"mappings":";;;;AAGA,IAAa,oBAAoB,CAAC,mBAAG,IAAI,IAAI;CAC3C,GAAG,OAAO,OAAO,UAAU,CAAC,CAAC,QAAQ,gBAAgB;CACrD,GAAG,OAAO,OAAO,eAAe,CAAC,CAAC,QAAQ,gBAAgB;CAC1D,GAAG,OAAO,OAAO,sBAAsB,CAAC,CAAC,QAAQ,gBAAgB;CAGjE,GAAG,iBAAiB,qBAAqB;AAC3C,CAAC,CAAC;;;ACNF,IAAa,kBAAkB,wBAAwB,OAAO,KAAK,KAAK;CACtE,MAAM;CACN,UAAU;AACZ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { t as splitClassTokens } from "./classTokens-BzazaERD.js";
|
|
2
|
+
import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
|
|
3
|
+
//#region src/components/GrChipGroup/grChipGroupStyles.ts
|
|
4
|
+
/**
|
|
5
|
+
* У группы своих вариантов нет: она раскладывает чипы и ничего не красит.
|
|
6
|
+
* Класс вынесен сюда, а не оставлен литералом в шаблоне, только ради safelist —
|
|
7
|
+
* из `.vue` литералы попадают в скан сами, но тогда список классов группы жил
|
|
8
|
+
* бы в двух местах.
|
|
9
|
+
*/
|
|
10
|
+
var chipGroupRootClass = "flex flex-wrap items-center gap-2";
|
|
11
|
+
//#endregion
|
|
12
|
+
//#region src/components/GrChipGroup/safelist.ts
|
|
13
|
+
var grChipGroupSafelist = [.../* @__PURE__ */ new Set([...splitClassTokens(chipGroupRootClass)])];
|
|
14
|
+
//#endregion
|
|
15
|
+
//#region src/components/GrChipGroup/config.ts
|
|
16
|
+
var grChipGroupConfig = defineGranularComponent(import.meta.url, {
|
|
17
|
+
name: "GrChipGroup",
|
|
18
|
+
safelist: grChipGroupSafelist
|
|
19
|
+
});
|
|
20
|
+
//#endregion
|
|
21
|
+
export { grChipGroupSafelist as n, chipGroupRootClass as r, grChipGroupConfig as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-Iu684VNI.js","names":[],"sources":["../../src/components/GrChipGroup/grChipGroupStyles.ts","../../src/components/GrChipGroup/safelist.ts","../../src/components/GrChipGroup/config.ts"],"sourcesContent":["/**\n * У группы своих вариантов нет: она раскладывает чипы и ничего не красит.\n * Класс вынесен сюда, а не оставлен литералом в шаблоне, только ради safelist —\n * из `.vue` литералы попадают в скан сами, но тогда список классов группы жил\n * бы в двух местах.\n */\nexport const chipGroupRootClass = 'flex flex-wrap items-center gap-2'\n","import { splitClassTokens } from '../shared/classTokens'\n\nimport { chipGroupRootClass } from './grChipGroupStyles'\n\nexport const grChipGroupSafelist = [...new Set([\n ...splitClassTokens(chipGroupRootClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grChipGroupSafelist } from './safelist'\n\nexport const grChipGroupConfig = defineGranularComponent(import.meta.url, {\n name: 'GrChipGroup',\n // Чипы приходят слотом — их рисует потребитель, поэтому ребра графа тут нет.\n safelist: grChipGroupSafelist,\n})\n"],"mappings":";;;;;;;;;AAMA,IAAa,qBAAqB;;;ACFlC,IAAa,sBAAsB,CAAC,mBAAG,IAAI,IAAI,CAC7C,GAAG,iBAAiB,kBAAkB,CACxC,CAAC,CAAC;;;ACFF,IAAa,oBAAoB,wBAAwB,OAAO,KAAK,KAAK;CACxE,MAAM;CAEN,UAAU;AACZ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-T3qdQBgU.js","names":[],"sources":["../../src/components/GrSlider/safelist.ts","../../src/components/GrSlider/config.ts"],"sourcesContent":["import { splitClassTokens } from '../shared/classTokens'\nimport {\n sliderFillBaseClass,\n sliderFillDisabledClass,\n sliderFillEnabledClass,\n sliderFillOrientationClass,\n sliderMarkLabelClass,\n sliderMarkLabelDisabledClass,\n sliderMarkLabelHorizontalClass,\n sliderMarkLabelVerticalClass,\n sliderMarkTickBaseClass,\n sliderMarkTickOrientationClass,\n sliderPaddingBySize,\n sliderPaddingVerticalBySize,\n sliderRailClass,\n sliderRootBaseClass,\n sliderRootOrientationClass,\n sliderThumbBaseClass,\n sliderThumbDisabledClass,\n sliderThumbEnabledClass,\n sliderThumbOrientationClass,\n sliderThumbSizeBySize,\n sliderTooltipBaseClass,\n sliderTooltipOrientationClass,\n sliderTrackHeightBySize,\n sliderTrackVerticalLengthClass,\n sliderTrackWidthBySize,\n} from './grSliderStyles'\n\n// Всё, что живёт в `grSliderStyles.ts`: и вычисляемые мапы, и строковые литералы\n// дорожки, бегунка, тултипа и меток. Хелпер уезжает в общий `dist/chunks/`, вне\n// области скана компонента — гейт `src/__tests__/safelist.test.ts`.\nexport const grSliderSafelist = [...new Set([\n ...Object.values(sliderTrackHeightBySize).flatMap(splitClassTokens),\n ...Object.values(sliderTrackWidthBySize).flatMap(splitClassTokens),\n ...Object.values(sliderThumbSizeBySize).flatMap(splitClassTokens),\n ...Object.values(sliderPaddingBySize).flatMap(splitClassTokens),\n ...Object.values(sliderPaddingVerticalBySize).flatMap(splitClassTokens),\n ...Object.values(sliderRootOrientationClass).flatMap(splitClassTokens),\n ...Object.values(sliderFillOrientationClass).flatMap(splitClassTokens),\n ...Object.values(sliderThumbOrientationClass).flatMap(splitClassTokens),\n ...Object.values(sliderTooltipOrientationClass).flatMap(splitClassTokens),\n ...Object.values(sliderMarkTickOrientationClass).flatMap(splitClassTokens),\n ...splitClassTokens(sliderRootBaseClass),\n ...splitClassTokens(sliderRailClass),\n ...splitClassTokens(sliderFillBaseClass),\n ...splitClassTokens(sliderFillEnabledClass),\n ...splitClassTokens(sliderFillDisabledClass),\n ...splitClassTokens(sliderTrackVerticalLengthClass),\n ...splitClassTokens(sliderThumbBaseClass),\n ...splitClassTokens(sliderThumbEnabledClass),\n ...splitClassTokens(sliderThumbDisabledClass),\n ...splitClassTokens(sliderTooltipBaseClass),\n ...splitClassTokens(sliderMarkTickBaseClass),\n ...splitClassTokens(sliderMarkLabelClass),\n ...splitClassTokens(sliderMarkLabelHorizontalClass),\n ...splitClassTokens(sliderMarkLabelVerticalClass),\n ...splitClassTokens(sliderMarkLabelDisabledClass),\n // Резерв места под подписи меток и их выравнивание: центр / к левому / к правому краю.\n ...splitClassTokens('mb-7 mr-10 translate-x-0 -translate-x-1/2 -translate-x-full'),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grSliderSafelist } from './safelist'\n\nexport const grSliderConfig = defineGranularComponent(import.meta.url, {\n name: 'GrSlider',\n safelist: grSliderSafelist,\n})\n"],"mappings":";;;;AAgCA,IAAa,mBAAmB,CAAC,mBAAG,IAAI,IAAI;CAC1C,GAAG,OAAO,OAAO,uBAAuB,CAAC,CAAC,QAAQ,gBAAgB;CAClE,GAAG,OAAO,OAAO,sBAAsB,CAAC,CAAC,QAAQ,gBAAgB;CACjE,GAAG,OAAO,OAAO,qBAAqB,CAAC,CAAC,QAAQ,gBAAgB;CAChE,GAAG,OAAO,OAAO,mBAAmB,CAAC,CAAC,QAAQ,gBAAgB;CAC9D,GAAG,OAAO,OAAO,2BAA2B,CAAC,CAAC,QAAQ,gBAAgB;CACtE,GAAG,OAAO,OAAO,0BAA0B,CAAC,CAAC,QAAQ,gBAAgB;CACrE,GAAG,OAAO,OAAO,0BAA0B,CAAC,CAAC,QAAQ,gBAAgB;CACrE,GAAG,OAAO,OAAO,2BAA2B,CAAC,CAAC,QAAQ,gBAAgB;CACtE,GAAG,OAAO,OAAO,6BAA6B,CAAC,CAAC,QAAQ,gBAAgB;CACxE,GAAG,OAAO,OAAO,8BAA8B,CAAC,CAAC,QAAQ,gBAAgB;CACzE,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,sBAAsB;CAC1C,GAAG,iBAAiB,uBAAuB;CAC3C,GAAG,iBAAiB,8BAA8B;CAClD,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,uBAAuB;CAC3C,GAAG,iBAAiB,wBAAwB;CAC5C,GAAG,iBAAiB,sBAAsB;CAC1C,GAAG,iBAAiB,uBAAuB;CAC3C,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,8BAA8B;CAClD,GAAG,iBAAiB,4BAA4B;CAChD,GAAG,iBAAiB,4BAA4B;CAEhD,GAAG,iBAAiB,6DAA6D;AACnF,CAAC,CAAC;;;ACxDF,IAAa,iBAAiB,wBAAwB,OAAO,KAAK,KAAK;CACrE,MAAM;CACN,UAAU;AACZ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-rkcKArZQ.js","names":[],"sources":["../../src/components/GrDescriptionList/grDescriptionListStyles.ts","../../src/components/GrDescriptionList/safelist.ts","../../src/components/GrDescriptionList/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\nimport type { GrTone } from '../shared/tones'\n\n/**\n * Классы `GrDescriptionList`.\n *\n * Тон перечислен целиком по одному литералу на ветку: UnoCSS сканирует исходный\n * текст файла, и собранное шаблонной строкой имя уехало бы в CSS литералом.\n */\n\n/**\n * `inline` — подпись колонкой слева; `stacked` — над значением; `flow` — пары\n * текут по строке с переносом.\n */\nexport type GrDescriptionLayout = 'inline' | 'stacked' | 'flow'\n\nexport type GrDescriptionDensity = 'regular' | 'compact'\n\n/** Сколько колонок пар. Длинный список читается в несколько. */\nexport type GrDescriptionColumns = 1 | 2 | 3 | 4\n\n// `m-0` — у нативного `<dl>` есть браузерные отступы, и без сброса список\n// разъезжается по вертикали. Ряды разводит `--gr-description-list-row-gap`,\n// потому что зазор здесь — точка кастомизации, а не ступень шкалы.\nexport const descriptionRootClass = 'm-0 gap-x-4 [row-gap:var(--gr-description-list-row-gap,0.375rem)]'\n\n/** Сетка колонок — раскладки `inline` и `stacked`. */\nexport const descriptionRootGridClass = 'grid'\n\n// `flow` строит строку, а не сетку: пары текут по ширине и переносятся сами,\n// поэтому колонок у неё нет.\nexport const descriptionRootFlowClass = 'flex flex-wrap items-baseline'\n\n/** Одна колонка — обычный класс: считать там нечего. */\nexport const descriptionSingleColumnClass = 'grid-cols-1'\n\n/**\n * Колонки по ширине **контейнера**, а не вьюпорта.\n *\n * Медиазапрос меряет экран, а список живёт в карточке: на широком мониторе в\n * колонке 290px включались две колонки, подпись фиксированной ширины съедала\n * почти всё место, и значение переносилось посимвольно — «30» печаталось как\n * «3» и «0» на двух строках. Показанное число становилось неверным.\n *\n * `auto-fit` решает это без медиазапросов, без JS и без замеров, то есть\n * одинаково на сервере и на клиенте. `columns` при этом становится **потолком**:\n * трек не уже `column-min`, но и не уже доли, на которую делится контейнер при\n * N колонках, — поэтому шире N штук не встанет никогда.\n *\n * `min(100%, …)` спасает совсем узкий контейнер: без него трек шириной с\n * `column-min` вылезал бы за край.\n *\n * Инлайновым стилем, а не классом: выражение зависит от N, и шкалы утилит для\n * него не существует — тот же довод, что записан у сетки `GrDashboard`.\n */\nexport function descriptionColumnsStyle(\n columns: GrDescriptionColumns,\n /**\n * Ширина колонки подписей при `inline`. В этой раскладке подпись и значение\n * стоят **рядом**, поэтому минимум колонки складывается из них двоих: колонка\n * шириной с одну подпись оставляет значению несколько пикселей, и оно\n * переносится посимвольно — тот же дефект, только в других числах.\n */\n labelWidth?: string,\n): Record<string, string> {\n const base = 'var(--gr-description-list-column-min, 12rem)'\n const min = labelWidth\n ? `max(${base}, calc(${labelWidth} + var(--gr-description-list-value-min, 5rem)))`\n : base\n\n return {\n gridTemplateColumns: `repeat(auto-fit, minmax(min(100%, max(${min}, (100% - ${columns - 1} * 1rem) / ${columns})), 1fr))`,\n }\n}\n\nexport const descriptionPairInlineClass = 'flex min-w-0 items-baseline gap-2'\nexport const descriptionPairStackedClass = 'min-w-0'\n\n// Зазор уже: подпись и значение здесь читаются как одна фраза «Сообщений: 3»,\n// а пары друг от друга отбивает `gap-x-4` корня.\nexport const descriptionPairFlowClass = 'flex min-w-0 items-baseline gap-1'\n\nexport const descriptionDividedClass = 'border-b border-[var(--gr-description-list-divider,var(--gr-brd))] pb-1 last:border-b-0 last:pb-0'\n\n// `shrink-0` держит колонку подписей ровной: иначе длинное значение сжимало бы\n// подпись, и значения переставали бы стоять в колонку — ровно то, ради чего\n// раскладка `inline` и существует.\nexport const descriptionLabelInlineClass = 'shrink-0 text-[var(--gr-description-list-label-color,var(--gr-muted-fg))]'\nexport const descriptionLabelStackedClass = 'text-[var(--gr-description-list-label-color,var(--gr-muted-fg))]'\n\n// `break-words` обязателен: в парах живут идентификаторы, хеши и `X-Request-Id`,\n// и без переноса они выталкивают вёрстку.\nexport const descriptionValueClass = 'm-0 min-w-0 break-words'\n\n/** Тон — только у значения: красная подпись читается как «поле сломано». */\nexport const descriptionValueToneClass: Record<GrTone, string> = {\n primary: 'text-[var(--gr-primary-text)]',\n neutral: '',\n success: 'text-[var(--gr-success-text)]',\n warning: 'text-[var(--gr-warning-text)]',\n danger: 'text-[var(--gr-danger-text)]',\n info: 'text-[var(--gr-info-text)]',\n slate: 'text-[var(--gr-slate-text)]',\n azure: 'text-[var(--gr-azure-text)]',\n}\n\nexport const descriptionSizeClass: Record<GrComponentSize, string> = {\n xs: 'text-[length:var(--gr-control-text-2xs)]',\n sm: 'text-[length:var(--gr-control-text-xs)]',\n md: 'text-[length:var(--gr-control-text-sm)]',\n lg: 'text-[length:var(--gr-control-text-md)]',\n}\n\nexport const descriptionDensityClass: Record<GrDescriptionDensity, string> = {\n regular: '',\n compact: '[row-gap:var(--gr-description-list-row-gap,0.125rem)]',\n}\n","import { splitClassTokens } from '../shared/classTokens'\n\nimport {\n descriptionSingleColumnClass,\n descriptionDensityClass,\n descriptionDividedClass,\n descriptionLabelInlineClass,\n descriptionLabelStackedClass,\n descriptionPairFlowClass,\n descriptionPairInlineClass,\n descriptionPairStackedClass,\n descriptionRootClass,\n descriptionRootFlowClass,\n descriptionRootGridClass,\n descriptionSizeClass,\n descriptionValueClass,\n descriptionValueToneClass,\n} from './grDescriptionListStyles'\n\n// Классы из вычисляемых мап (тон, размер, колонки) UnoCSS сканом не находит —\n// только safelist. Литералы хелпера туда же: на сборке он уезжает в общий чанк.\nexport const grDescriptionListSafelist = [...new Set([\n ...splitClassTokens(descriptionRootClass),\n ...splitClassTokens(descriptionRootGridClass),\n ...splitClassTokens(descriptionRootFlowClass),\n ...splitClassTokens(descriptionPairInlineClass),\n ...splitClassTokens(descriptionPairStackedClass),\n ...splitClassTokens(descriptionPairFlowClass),\n ...splitClassTokens(descriptionDividedClass),\n ...splitClassTokens(descriptionLabelInlineClass),\n ...splitClassTokens(descriptionLabelStackedClass),\n ...splitClassTokens(descriptionValueClass),\n ...splitClassTokens(descriptionSingleColumnClass),\n ...Object.values(descriptionValueToneClass).flatMap(splitClassTokens),\n ...Object.values(descriptionSizeClass).flatMap(splitClassTokens),\n ...Object.values(descriptionDensityClass).flatMap(splitClassTokens),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grDescriptionListSafelist } from './safelist'\n\nexport const grDescriptionListConfig = defineGranularComponent(import.meta.url, {\n name: 'GrDescriptionList',\n safelist: grDescriptionListSafelist,\n})\n"],"mappings":";;;AAwBA,IAAa,uBAAuB;;AAGpC,IAAa,2BAA2B;AAIxC,IAAa,2BAA2B;;AAGxC,IAAa,+BAA+B;;;;;;;;;;;;;;;;;;;;AAqB5C,SAAgB,wBACd,SAOA,YACwB;CACxB,MAAM,OAAO;CAKb,OAAO,EACL,qBAAqB,yCALX,aACR,OAAO,KAAK,SAAS,WAAW,mDAChC,KAGgE,YAAY,UAAU,EAAE,aAAa,QAAQ,WACjH;AACF;AAEA,IAAa,6BAA6B;AAC1C,IAAa,8BAA8B;AAI3C,IAAa,2BAA2B;AAExC,IAAa,0BAA0B;AAKvC,IAAa,8BAA8B;AAC3C,IAAa,+BAA+B;AAI5C,IAAa,wBAAwB;;AAGrC,IAAa,4BAAoD;CAC/D,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,QAAQ;CACR,MAAM;CACN,OAAO;CACP,OAAO;AACT;AAEA,IAAa,uBAAwD;CACnE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,0BAAgE;CAC3E,SAAS;CACT,SAAS;AACX;;;AC/FA,IAAa,4BAA4B,CAAC,mBAAG,IAAI,IAAI;CACnD,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,wBAAwB;CAC5C,GAAG,iBAAiB,wBAAwB;CAC5C,GAAG,iBAAiB,0BAA0B;CAC9C,GAAG,iBAAiB,2BAA2B;CAC/C,GAAG,iBAAiB,wBAAwB;CAC5C,GAAG,iBAAiB,uBAAuB;CAC3C,GAAG,iBAAiB,2BAA2B;CAC/C,GAAG,iBAAiB,4BAA4B;CAChD,GAAG,iBAAiB,qBAAqB;CACzC,GAAG,iBAAiB,4BAA4B;CAChD,GAAG,OAAO,OAAO,yBAAyB,CAAC,CAAC,QAAQ,gBAAgB;CACpE,GAAG,OAAO,OAAO,oBAAoB,CAAC,CAAC,QAAQ,gBAAgB;CAC/D,GAAG,OAAO,OAAO,uBAAuB,CAAC,CAAC,QAAQ,gBAAgB;AACpE,CAAC,CAAC;;;AChCF,IAAa,0BAA0B,wBAAwB,OAAO,KAAK,KAAK;CAC9E,MAAM;CACN,UAAU;AACZ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-vSji8w90.js","names":[],"sources":["../../src/components/GrEmptyState/grEmptyStateStyles.ts","../../src/components/GrEmptyState/safelist.ts","../../src/components/GrEmptyState/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\nexport type GrEmptyStateSize = GrComponentSize\n\n/** Поверхность карточки. `ghost` — для встраивания в уже существующую карточку. */\nexport const GR_EMPTY_STATE_VARIANTS = ['outlined', 'ghost'] as const\nexport type GrEmptyStateVariant = typeof GR_EMPTY_STATE_VARIANTS[number]\n\n/**\n * Уровень заголовка. `h1` намеренно нет: пустое состояние живёт внутри уже\n * существующей структуры страницы, а не задаёт её.\n */\nexport const GR_EMPTY_STATE_HEADING_LEVELS = [2, 3, 4, 5, 6] as const\nexport type GrEmptyStateHeadingLevel = typeof GR_EMPTY_STATE_HEADING_LEVELS[number]\n\nexport const rootBaseClass = 'text-center'\n\nexport const variantClass: Record<GrEmptyStateVariant, string> = {\n outlined: 'rounded-[var(--gr-radius-lg)] border border-[var(--gr-brd)] bg-[var(--gr-card)]',\n // Карточка внутри карточки: вторая рамка только шумит (тот же смысл, что у `GrCard`).\n ghost: '',\n}\n\nexport const rootPaddingBySize: Record<GrEmptyStateSize, string> = {\n xs: 'p-3',\n sm: 'p-4',\n md: 'p-6',\n lg: 'p-8',\n}\n\nexport const iconBoxBaseClass = 'flex items-center justify-center border border-[var(--gr-brd)] bg-[var(--gr-muted)] text-[var(--gr-muted-fg)]'\n\nexport const iconBoxBySize: Record<GrEmptyStateSize, string> = {\n xs: 'h-8 w-8 rounded-[var(--gr-radius-md)]',\n sm: 'h-10 w-10 rounded-[var(--gr-radius-md)]',\n md: 'h-12 w-12 rounded-[var(--gr-radius-lg)]',\n lg: 'h-14 w-14 rounded-[var(--gr-radius-lg)]',\n}\n\n/** Размер самой иконки в пикселях — `GrIcon` принимает число. */\nexport const iconSizeBySize: Record<GrEmptyStateSize, number> = {\n xs: 16,\n sm: 20,\n md: 24,\n lg: 28,\n}\n\n/**\n * `mb-0` гасит браузерный отступ снизу у настоящего заголовка: без сброса\n * карточка разъезжается по вертикали.\n */\nexport const titleBaseClass = 'mb-0 font-700'\n\nexport const titleBySize: Record<GrEmptyStateSize, string> = {\n xs: 'mt-2 text-[length:var(--gr-text-xs)]',\n sm: 'mt-3 text-[length:var(--gr-text-sm)]',\n md: 'mt-4 text-[length:var(--gr-text-sm)]',\n lg: 'mt-5 text-[length:var(--gr-text-base)]',\n}\n\nexport const descriptionBaseClass = 'text-[var(--gr-muted-fg)]'\n\nexport const descriptionBySize: Record<GrEmptyStateSize, string> = {\n xs: 'mt-0.5 text-[length:var(--gr-text-xs)]',\n sm: 'mt-1 text-[length:var(--gr-text-xs)]',\n md: 'mt-1 text-[length:var(--gr-text-sm)]',\n lg: 'mt-2 text-[length:var(--gr-text-sm)]',\n}\n\nexport const actionsBaseClass = 'flex justify-center'\n\nexport const actionsBySize: Record<GrEmptyStateSize, string> = {\n xs: 'mt-2',\n sm: 'mt-3',\n md: 'mt-4',\n lg: 'mt-5',\n}\n\nexport function grEmptyStateRootClass(options: {\n variant: GrEmptyStateVariant\n size: GrEmptyStateSize\n}): string {\n return [rootBaseClass, variantClass[options.variant], rootPaddingBySize[options.size]]\n .filter(Boolean)\n .join(' ')\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n actionsBaseClass,\n actionsBySize,\n descriptionBaseClass,\n descriptionBySize,\n iconBoxBaseClass,\n iconBoxBySize,\n rootBaseClass,\n rootPaddingBySize,\n titleBaseClass,\n titleBySize,\n variantClass,\n} from './grEmptyStateStyles'\n\nexport const grEmptyStateSafelist = [...new Set([\n ...splitClassTokens(rootBaseClass),\n ...splitClassTokens(iconBoxBaseClass),\n ...splitClassTokens(titleBaseClass),\n ...splitClassTokens(descriptionBaseClass),\n ...splitClassTokens(actionsBaseClass),\n ...Object.values(variantClass).flatMap(splitClassTokens),\n ...Object.values(rootPaddingBySize).flatMap(splitClassTokens),\n ...Object.values(iconBoxBySize).flatMap(splitClassTokens),\n ...Object.values(titleBySize).flatMap(splitClassTokens),\n ...Object.values(descriptionBySize).flatMap(splitClassTokens),\n ...Object.values(actionsBySize).flatMap(splitClassTokens),\n // Центрирование блока иконки живёт литералом в шаблоне.\n ...splitClassTokens('flex justify-center'),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grEmptyStateSafelist } from './safelist'\n\nexport const grEmptyStateConfig = defineGranularComponent(import.meta.url, {\n name: 'GrEmptyState',\n safelist: grEmptyStateSafelist,\n dependencies: ['GrIcon'],\n})\n"],"mappings":";;;AAeA,IAAa,gBAAgB;AAE7B,IAAa,eAAoD;CAC/D,UAAU;CAEV,OAAO;AACT;AAEA,IAAa,oBAAsD;CACjE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,mBAAmB;AAEhC,IAAa,gBAAkD;CAC7D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,iBAAmD;CAC9D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;AAMA,IAAa,iBAAiB;AAE9B,IAAa,cAAgD;CAC3D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,uBAAuB;AAEpC,IAAa,oBAAsD;CACjE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,mBAAmB;AAEhC,IAAa,gBAAkD;CAC7D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,SAAgB,sBAAsB,SAG3B;CACT,OAAO;EAAC;EAAe,aAAa,QAAQ;EAAU,kBAAkB,QAAQ;CAAK,CAAC,CACnF,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;AACb;;;ACtEA,IAAa,uBAAuB,CAAC,mBAAG,IAAI,IAAI;CAC9C,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,OAAO,OAAO,YAAY,CAAC,CAAC,QAAQ,gBAAgB;CACvD,GAAG,OAAO,OAAO,iBAAiB,CAAC,CAAC,QAAQ,gBAAgB;CAC5D,GAAG,OAAO,OAAO,aAAa,CAAC,CAAC,QAAQ,gBAAgB;CACxD,GAAG,OAAO,OAAO,WAAW,CAAC,CAAC,QAAQ,gBAAgB;CACtD,GAAG,OAAO,OAAO,iBAAiB,CAAC,CAAC,QAAQ,gBAAgB;CAC5D,GAAG,OAAO,OAAO,aAAa,CAAC,CAAC,QAAQ,gBAAgB;CAExD,GAAG,iBAAiB,qBAAqB;AAC3C,CAAC,CAAC;;;ACzBF,IAAa,qBAAqB,wBAAwB,OAAO,KAAK,KAAK;CACzE,MAAM;CACN,UAAU;CACV,cAAc,CAAC,QAAQ;AACzB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-zjeAJ4ho2.js","names":[],"sources":["../../src/components/GrNumberInput/grNumberInputStyles.ts","../../src/components/GrNumberInput/safelist.ts","../../src/components/GrNumberInput/config.ts"],"sourcesContent":["import type { GrComponentSize, GrControlState } from '../shared/sizes'\n\n\nexport type GrNumberInputState = GrControlState\nexport type GrNumberInputSize = GrComponentSize\nexport type GrNumberInputControlsDirection = 'vertical' | 'horizontal'\nexport type GrNumberInputTextAlign = 'left' | 'center' | 'right'\n\n// Backward-compatible type aliases.\nexport type NumberInputSize = GrNumberInputSize\nexport type NumberInputControlsDirection = GrNumberInputControlsDirection\n\nexport const sizeClassBySize: Record<GrNumberInputSize, string> = {\n xs: 'h-7 px-2.5 text-[length:var(--gr-control-text-xs)]',\n sm: 'h-8 px-3 text-[length:var(--gr-control-text-sm)]',\n md: 'h-10 px-3 text-[length:var(--gr-control-text-md)]',\n lg: 'h-11 px-4 text-[length:var(--gr-control-text-lg)]',\n}\n\nexport const textAlignClassByAlign: Record<GrNumberInputTextAlign, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n}\n\nexport const borderClassByState: Record<GrNumberInputState, string> = {\n default: 'border-[var(--gr-brd)]',\n success: 'border-[var(--gr-success)] focus-within:ring-[var(--gr-success)]',\n warning: 'border-[var(--gr-warning)] focus-within:ring-[var(--gr-warning)]',\n danger: 'border-[var(--gr-danger)] focus-within:ring-[var(--gr-danger)]',\n}\n\n/**\n * Ошибка валидации красится своей ролью, а не декоративным тоном `danger`:\n * `state=\"danger\"` — это подсветка по решению разработчика, `invalid` — вердикт\n * валидации, и тема вправе развести их по цвету.\n */\nexport const invalidBorderClass = 'border-[var(--gr-invalid-brd)] focus-within:ring-[var(--gr-invalid-ring)]'\n\n/**\n * Недоступное поле гасится токенами, а не `opacity`: прозрачность разбавляет\n * выверенные на AA токены текста и роняет контраст подписи.\n */\nexport const disabledShellClass = 'bg-[var(--gr-disabled-bg)] text-[var(--gr-disabled-fg)] cursor-not-allowed'\n\nconst stepperBaseClass = 'inline-flex items-center justify-center text-[var(--gr-muted-fg)] hover:bg-[var(--gr-muted)] active:bg-[var(--gr-muted)] disabled:cursor-not-allowed disabled:text-[var(--gr-disabled-fg)] disabled:hover:bg-transparent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\n\n/** Компактная кнопка вертикального стека ± . */\nexport const stepperCompactClass = `h-4 w-7 rounded-[var(--gr-radius-sm)] ${stepperBaseClass}`\n\n/** Кнопка бокового стека ± — занимает всю высоту поля. */\nexport const stepperWideClass = `h-full w-full ${stepperBaseClass}`\n\nexport const clearButtonClass = 'absolute top-1/2 -translate-y-1/2 inline-flex h-5 w-5 items-center justify-center rounded-[var(--gr-radius-full)] text-[var(--gr-muted-fg)] hover:bg-[var(--gr-muted)] hover:text-[var(--gr-fg)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\n\nexport function grNumberInputShellClass(options: { disabled: boolean, state: GrNumberInputState, invalid: boolean }): string {\n return [\n options.disabled ? disabledShellClass : '',\n options.invalid ? invalidBorderClass : borderClassByState[options.state],\n ]\n .filter(Boolean)\n .join(' ')\n}\n\nexport function grNumberInputInputClass(options: { size: GrNumberInputSize, textAlign: GrNumberInputTextAlign }): string {\n return [\n sizeClassBySize[options.size],\n textAlignClassByAlign[options.textAlign],\n ].join(' ')\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n borderClassByState,\n clearButtonClass,\n disabledShellClass,\n invalidBorderClass,\n stepperCompactClass,\n stepperWideClass,\n sizeClassBySize,\n textAlignClassByAlign,\n} from './grNumberInputStyles'\n\n// В safelist кладём только динамические токены, выбираемые по ключам в рантайме\n// (`size`/`textAlign`/`state`/`disabled`). Литералы shell/input/controls прописаны\n// статически в шаблоне — UnoCSS находит их сканом.\nexport const grNumberInputSafelist = [...new Set([\n ...Object.values(sizeClassBySize).flatMap(splitClassTokens),\n ...Object.values(textAlignClassByAlign).flatMap(splitClassTokens),\n ...Object.values(borderClassByState).flatMap(splitClassTokens),\n ...splitClassTokens(invalidBorderClass),\n ...splitClassTokens(disabledShellClass),\n ...splitClassTokens(stepperCompactClass),\n ...splitClassTokens(stepperWideClass),\n ...splitClassTokens(clearButtonClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grNumberInputSafelist } from './safelist'\n\nexport const grNumberInputConfig = defineGranularComponent(import.meta.url, {\n name: 'GrNumberInput',\n dependencies: ['GrIcon'],\n safelist: grNumberInputSafelist,\n})"],"mappings":";;;AAYA,IAAa,kBAAqD;CAChE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,wBAAgE;CAC3E,MAAM;CACN,QAAQ;CACR,OAAO;AACT;AAEA,IAAa,qBAAyD;CACpE,SAAS;CACT,SAAS;CACT,SAAS;CACT,QAAQ;AACV;;;;;;AAOA,IAAa,qBAAqB;;;;;AAMlC,IAAa,qBAAqB;AAElC,IAAM,mBAAmB;;AAGzB,IAAa,sBAAsB,yCAAyC;;AAG5E,IAAa,mBAAmB,iBAAiB;AAEjD,IAAa,mBAAmB;AAEhC,SAAgB,wBAAwB,SAAqF;CAC3H,OAAO,CACL,QAAQ,WAAW,qBAAqB,IACxC,QAAQ,UAAU,qBAAqB,mBAAmB,QAAQ,MACpE,CAAC,CACE,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;AACb;AAEA,SAAgB,wBAAwB,SAAiF;CACvH,OAAO,CACL,gBAAgB,QAAQ,OACxB,sBAAsB,QAAQ,UAChC,CAAC,CAAC,KAAK,GAAG;AACZ;;;ACtDA,IAAa,wBAAwB,CAAC,mBAAG,IAAI,IAAI;CAC/C,GAAG,OAAO,OAAO,eAAe,CAAC,CAAC,QAAQ,gBAAgB;CAC1D,GAAG,OAAO,OAAO,qBAAqB,CAAC,CAAC,QAAQ,gBAAgB;CAChE,GAAG,OAAO,OAAO,kBAAkB,CAAC,CAAC,QAAQ,gBAAgB;CAC7D,GAAG,iBAAiB,kBAAkB;CACtC,GAAG,iBAAiB,kBAAkB;CACtC,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,gBAAgB;AACtC,CAAC,CAAC;;;ACpBF,IAAa,sBAAsB,wBAAwB,OAAO,KAAK,KAAK;CAC1E,MAAM;CACN,cAAc,CAAC,QAAQ;CACvB,UAAU;AACZ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-BfIQv7m12.js","names":[],"sources":["../../src/components/GrButtonGroup/context.ts"],"sourcesContent":["import type { ComputedRef, InjectionKey } from 'vue'\nimport { inject, provide } from 'vue'\n\nimport type { GrButtonSize, GrButtonTone, GrButtonVariant } from '../GrButton/grButtonStyles'\n\n/**\n * Оформление, общее для кнопок группы. Каждое поле необязательно: группа\n * задаёт только то, что задали ей, остальное кнопка решает сама.\n */\nexport type GrButtonGroupContext = {\n size: ComputedRef<GrButtonSize | undefined>\n variant: ComputedRef<GrButtonVariant | undefined>\n tone: ComputedRef<GrButtonTone | undefined>\n}\n\nconst GR_BUTTON_GROUP_KEY: InjectionKey<GrButtonGroupContext> = Symbol('grButtonGroup')\n\nexport function provideGrButtonGroup(context: GrButtonGroupContext): void {\n provide(GR_BUTTON_GROUP_KEY, context)\n}\n\n/**\n * Контекст группы для `GrButton`.\n *\n * Порядок разрешения оформления получается такой: проп кнопки → группа →\n * `GrConfigProvider` → дефолт. Группа ближе к кнопке, чем глобальный провайдер,\n * поэтому она и должна побеждать его, но не собственный проп кнопки.\n */\nexport function useGrButtonGroup(): GrButtonGroupContext | undefined {\n return inject(GR_BUTTON_GROUP_KEY, undefined)\n}\n"],"mappings":";;AAeA,IAAM,sBAA0D,OAAO,eAAe;AAEtF,SAAgB,qBAAqB,SAAqC;CACxE,QAAQ,qBAAqB,OAAO;AACtC;;;;;;;;AASA,SAAgB,mBAAqD;CACnE,OAAO,OAAO,qBAAqB,KAAA,CAAS;AAC9C"}
|