@feugene/granularity 0.23.0 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/config-BFJIxE8b.js +62 -0
- package/dist/chunks/config-BFJIxE8b.js.map +1 -0
- package/dist/chunks/{config-DBQQT-WP.js → config-BIa3ilQm.js} +18 -3
- package/dist/chunks/config-BIa3ilQm.js.map +1 -0
- package/dist/chunks/config-BfsBepkH.js.map +1 -0
- package/dist/chunks/config-BoNR7_PD.js.map +1 -0
- package/dist/chunks/config-BuGlNPE92.js.map +1 -0
- package/dist/chunks/{config-Be9k9bOf.js → config-C8tVRv8i.js} +16 -2
- package/dist/chunks/config-C8tVRv8i.js.map +1 -0
- package/dist/chunks/config-CPSxM7XE.js +8 -0
- package/dist/chunks/config-CPSxM7XE.js.map +1 -0
- package/dist/chunks/config-D7zgE_Gr.js +107 -0
- package/dist/chunks/config-D7zgE_Gr.js.map +1 -0
- package/dist/chunks/config-DAX8Deh1.js.map +1 -0
- package/dist/chunks/config-DGCMHPCR.js +19 -0
- package/dist/chunks/config-DGCMHPCR.js.map +1 -0
- package/dist/chunks/config-DGWFal5h.js +128 -0
- package/dist/chunks/config-DGWFal5h.js.map +1 -0
- package/dist/chunks/config-DKISz9gR.js +39 -0
- package/dist/chunks/config-DKISz9gR.js.map +1 -0
- package/dist/chunks/{config-Bm_Sovla.js → config-DYgfMrIF.js} +14 -2
- package/dist/chunks/config-DYgfMrIF.js.map +1 -0
- package/dist/chunks/{config-BSyiFlbi.js → config-DtgYuGUn2.js} +2 -1
- package/dist/chunks/config-DtgYuGUn2.js.map +1 -0
- package/dist/chunks/config-Iu684VNI.js +21 -0
- package/dist/chunks/config-Iu684VNI.js.map +1 -0
- package/dist/chunks/config-T3qdQBgU.js.map +1 -0
- package/dist/chunks/{config-DCwQBMmJ.js → config-rkcKArZQ.js} +27 -8
- package/dist/chunks/config-rkcKArZQ.js.map +1 -0
- package/dist/chunks/config-zjeAJ4ho2.js.map +1 -0
- package/dist/chunks/context-BfIQv7m12.js.map +1 -0
- package/dist/chunks/context-CTbuwcYs.js.map +1 -1
- package/dist/chunks/{en-DCCFP4qu.js → en-NpP9e7lC.js} +16 -2
- package/dist/chunks/en-NpP9e7lC.js.map +1 -0
- package/dist/chunks/{es-CT34HBVM.js → es-DaeA2Ql-.js} +16 -2
- package/dist/chunks/es-DaeA2Ql-.js.map +1 -0
- package/dist/chunks/{es-DdJsxlUr.js → es-Do2CNrC2.js} +3 -3
- package/dist/chunks/{es-DdJsxlUr.js.map → es-Do2CNrC2.js.map} +1 -1
- package/dist/chunks/{generated-CiCrGDQO.js → generated-CJe6hdiE.js} +138 -6
- package/dist/chunks/{generated-CiCrGDQO.js.map → generated-CJe6hdiE.js.map} +1 -1
- package/dist/chunks/{grBadgeStyles-C2wLlkjF.js → grBadgeStyles-C1S56Alo.js} +6 -1
- package/dist/chunks/{grBadgeStyles-C2wLlkjF.js.map → grBadgeStyles-C1S56Alo.js.map} +1 -1
- package/dist/chunks/grChipGroupContext-DZXkACap.js +4 -0
- package/dist/chunks/grChipGroupContext-DZXkACap.js.map +1 -0
- package/dist/chunks/{config-C5mO5DYZ.js → grDropdownMenuStyles-D1LOkdVj.js} +1 -38
- package/dist/chunks/grDropdownMenuStyles-D1LOkdVj.js.map +1 -0
- package/dist/chunks/{grPopoverStyles-Rz_Z5nLW.js → grPopoverStyles-Cke_BZsM.js} +16 -3
- package/dist/chunks/grPopoverStyles-Cke_BZsM.js.map +1 -0
- package/dist/chunks/{granular-provider-CQKhl5C_.js → granular-provider-BaHkLjFX.js} +26 -16
- package/dist/chunks/granular-provider-BaHkLjFX.js.map +1 -0
- package/dist/chunks/{ru-CLiAMwrx.js → ru-Bg9-DPmg.js} +16 -2
- package/dist/chunks/ru-Bg9-DPmg.js.map +1 -0
- package/dist/chunks/{config-qVg3Zz_A.js → safelist-DOfCQR5O.js} +2 -19
- package/dist/chunks/safelist-DOfCQR5O.js.map +1 -0
- package/dist/chunks/useMenuItemsFocus-OyOnIAlr.js +117 -0
- package/dist/chunks/useMenuItemsFocus-OyOnIAlr.js.map +1 -0
- package/dist/components/GrAutocomplete/chunks/{GrAutocomplete-DsevPtiS.js → GrAutocomplete-D9c9BNFg.js} +1 -1
- package/dist/components/GrAutocomplete/chunks/{GrAutocomplete-DsevPtiS.js.map → GrAutocomplete-D9c9BNFg.js.map} +1 -1
- package/dist/components/GrAutocomplete/index.js +1 -1
- package/dist/components/GrBadge/chunks/{GrBadge-u2ZdS7CN.js → GrBadge-_9rCHuE1.js} +1 -1
- package/dist/components/GrBadge/chunks/{GrBadge-u2ZdS7CN.js.map → GrBadge-_9rCHuE1.js.map} +1 -1
- package/dist/components/GrBadge/index.js +3 -2
- package/dist/components/GrButton/chunks/{GrButton-Bw2AH4uX.js → GrButton-DCz-Wn-V.js} +1 -1
- package/dist/components/GrButton/chunks/{GrButton-Bw2AH4uX.js.map → GrButton-DCz-Wn-V.js.map} +1 -1
- package/dist/components/GrButton/index.js +1 -1
- package/dist/components/GrButtonGroup/chunks/{GrButtonGroup-CKyiAV8K.js → GrButtonGroup-BQo5VQ_c.js} +1 -1
- package/dist/components/GrButtonGroup/chunks/{GrButtonGroup-CKyiAV8K.js.map → GrButtonGroup-BQo5VQ_c.js.map} +1 -1
- package/dist/components/GrButtonGroup/index.js +2 -2
- package/dist/components/GrCard/chunks/{GrCard-Bc7nRfbe.js → GrCard-aQIjk6I9.js} +9 -3
- package/dist/components/GrCard/chunks/GrCard-aQIjk6I9.js.map +1 -0
- package/dist/components/GrCard/index.js +2 -2
- package/dist/components/GrCheckboxGroup/index.js +1 -1
- package/dist/components/GrChip/chunks/GrChip-BnL2FedO.js +222 -0
- package/dist/components/GrChip/chunks/GrChip-BnL2FedO.js.map +1 -0
- package/dist/components/GrChip/index.js +3 -0
- package/dist/components/GrChipGroup/chunks/GrChipGroup-DefmSdY9.js +209 -0
- package/dist/components/GrChipGroup/chunks/GrChipGroup-DefmSdY9.js.map +1 -0
- package/dist/components/GrChipGroup/index.js +3 -0
- package/dist/components/GrCodeBlock/chunks/{GrCodeBlock-BmXCLgLS.js → GrCodeBlock-CyptiEo4.js} +1 -1
- package/dist/components/GrCodeBlock/chunks/{GrCodeBlock-BmXCLgLS.js.map → GrCodeBlock-CyptiEo4.js.map} +1 -1
- package/dist/components/GrCodeBlock/index.js +1 -1
- package/dist/components/GrCollapse/chunks/{GrCollapse-C1rCfbc0.js → GrCollapse-DUROgAgc.js} +1 -1
- package/dist/components/GrCollapse/chunks/{GrCollapse-C1rCfbc0.js.map → GrCollapse-DUROgAgc.js.map} +1 -1
- package/dist/components/GrCollapse/index.js +1 -1
- package/dist/components/GrColorPicker/chunks/{GrColorPicker-qQdoEPHF.js → GrColorPicker-CDaJRVIM.js} +1 -1
- package/dist/components/GrColorPicker/chunks/{GrColorPicker-qQdoEPHF.js.map → GrColorPicker-CDaJRVIM.js.map} +1 -1
- package/dist/components/GrColorPicker/index.js +1 -1
- package/dist/components/GrCommandPalette/chunks/{GrCommandPalette-BFcMf4Pn.js → GrCommandPalette-BPsVN_XU.js} +3 -3
- package/dist/components/GrCommandPalette/chunks/GrCommandPalette-BPsVN_XU.js.map +1 -0
- package/dist/components/GrCommandPalette/index.js +1 -1
- package/dist/components/GrCommandPalette/styles.css +1 -1
- package/dist/components/GrConfigProvider/chunks/{GrConfigProvider-UP-EaoAf.js → GrConfigProvider-BF7R3hgg.js} +1 -1
- package/dist/components/GrConfigProvider/chunks/GrConfigProvider-BF7R3hgg.js.map +1 -0
- package/dist/components/GrConfigProvider/index.js +1 -1
- package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-rRtMScJX.js → GrConfirmDialog-CwXNLyzk.js} +3 -3
- package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-rRtMScJX.js.map → GrConfirmDialog-CwXNLyzk.js.map} +1 -1
- package/dist/components/GrConfirmDialog/index.js +1 -1
- package/dist/components/GrContextMenu/chunks/GrContextMenu-BbAJholy.js +331 -0
- package/dist/components/GrContextMenu/chunks/GrContextMenu-BbAJholy.js.map +1 -0
- package/dist/components/GrContextMenu/index.js +3 -0
- package/dist/components/GrDataTable/chunks/{GrDataTable-B5MmZFUg.js → GrDataTable-NRbrXpdx.js} +2 -2
- package/dist/components/GrDataTable/chunks/GrDataTable-NRbrXpdx.js.map +1 -0
- package/dist/components/GrDataTable/index.js +1 -1
- package/dist/components/GrDelta/chunks/{GrDelta-DFvxNpmN.js → GrDelta-NE5HhXoo.js} +0 -0
- package/dist/components/GrDelta/chunks/GrDelta-NE5HhXoo.js.map +1 -0
- package/dist/components/GrDelta/index.js +2 -2
- package/dist/components/GrDescriptionList/chunks/{GrDescriptionList-2zFXzX83.js → GrDescriptionList-1mICfrqX.js} +8 -4
- package/dist/components/GrDescriptionList/chunks/GrDescriptionList-1mICfrqX.js.map +1 -0
- package/dist/components/GrDescriptionList/index.js +2 -2
- package/dist/components/GrDialog/chunks/{GrDialog-D0U5iRqV.js → GrDialog-5Y5K87ss.js} +2 -2
- package/dist/components/GrDialog/chunks/{GrDialog-D0U5iRqV.js.map → GrDialog-5Y5K87ss.js.map} +1 -1
- package/dist/components/GrDialog/index.js +1 -1
- package/dist/components/GrDialogService/chunks/{GrDialogService-CrwA4aJq.js → GrDialogService-CHhzGRWy.js} +6 -6
- package/dist/components/GrDialogService/chunks/GrDialogService-CHhzGRWy.js.map +1 -0
- package/dist/components/GrDialogService/index.js +1 -1
- package/dist/components/GrDrawer/chunks/{GrDrawer-C3zAg2tG.js → GrDrawer-CXy3-SVd.js} +2 -2
- package/dist/components/GrDrawer/chunks/GrDrawer-CXy3-SVd.js.map +1 -0
- package/dist/components/GrDrawer/index.js +1 -1
- package/dist/components/GrDropdown/chunks/{GrDropdown-BSfFOcDx.js → GrDropdown-BfTmdPyh.js} +10 -79
- package/dist/components/GrDropdown/chunks/GrDropdown-BfTmdPyh.js.map +1 -0
- package/dist/components/GrDropdown/index.js +1 -1
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-l5HEqzjr.js +130 -0
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-l5HEqzjr.js.map +1 -0
- package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-DyS6dWDp.js → GrDropdownMenuList-BGA_xNVo.js} +57 -159
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenuList-BGA_xNVo.js.map +1 -0
- package/dist/components/GrDropdownMenu/index.js +3 -2
- package/dist/components/GrFileUpload/chunks/{GrFileUpload-D3-vC-ap.js → GrFileUpload-wNXzHb5N.js} +1 -1
- package/dist/components/GrFileUpload/chunks/GrFileUpload-wNXzHb5N.js.map +1 -0
- package/dist/components/GrFileUpload/index.js +1 -1
- package/dist/components/GrFormField/chunks/{GrFormField-kqfVY30N.js → GrFormField-DSylU7IU.js} +1 -1
- package/dist/components/GrFormField/chunks/GrFormField-DSylU7IU.js.map +1 -0
- package/dist/components/GrFormField/index.js +1 -1
- package/dist/components/GrFormFile/chunks/{GrFormFile-D722xHn8.js → GrFormFile-DhVkB2gm.js} +1 -1
- package/dist/components/GrFormFile/chunks/{GrFormFile-D722xHn8.js.map → GrFormFile-DhVkB2gm.js.map} +1 -1
- package/dist/components/GrFormFile/index.js +1 -1
- package/dist/components/GrInputTag/chunks/{GrInputTag-C7QVPijj.js → GrInputTag-UI8kIB_F.js} +2 -2
- package/dist/components/GrInputTag/chunks/{GrInputTag-C7QVPijj.js.map → GrInputTag-UI8kIB_F.js.map} +1 -1
- package/dist/components/GrInputTag/index.js +1 -1
- package/dist/components/GrJsonViewer/chunks/{GrJsonViewer-DFUppRNb.js → GrJsonViewer-jk3ylOTc.js} +2 -2
- package/dist/components/GrJsonViewer/chunks/GrJsonViewer-jk3ylOTc.js.map +1 -0
- package/dist/components/GrJsonViewer/index.js +1 -1
- package/dist/components/GrList/chunks/{GrList-BRYhpqIe.js → GrList-B5bclmHV.js} +30 -3
- package/dist/components/GrList/chunks/GrList-B5bclmHV.js.map +1 -0
- package/dist/components/GrList/index.js +1 -1
- package/dist/components/GrList/styles.css +1 -1
- package/dist/components/GrLoading/chunks/{GrLoading-C3DZSSuh.js → GrLoading-DeBFTvFX.js} +1 -1
- package/dist/components/GrLoading/chunks/GrLoading-DeBFTvFX.js.map +1 -0
- package/dist/components/GrLoading/index.js +1 -1
- package/dist/components/GrModal/chunks/{GrModal-CPz7SWD_.js → GrModal-CCoWZuIl.js} +2 -2
- package/dist/components/GrModal/chunks/GrModal-CCoWZuIl.js.map +1 -0
- package/dist/components/GrModal/index.js +1 -1
- package/dist/components/GrNavbar/chunks/{GrNavbar-DWaaoV7n.js → GrNavbar-DPj30sHX.js} +1 -1
- package/dist/components/GrNavbar/chunks/{GrNavbar-DWaaoV7n.js.map → GrNavbar-DPj30sHX.js.map} +1 -1
- package/dist/components/GrNavbar/index.js +1 -1
- package/dist/components/GrNumberInput/chunks/{GrNumberInput-BotnzW77.js → GrNumberInput-V2mZvDDC.js} +1 -1
- package/dist/components/GrNumberInput/chunks/{GrNumberInput-BotnzW77.js.map → GrNumberInput-V2mZvDDC.js.map} +1 -1
- package/dist/components/GrNumberInput/index.js +2 -2
- package/dist/components/GrPagination/chunks/{GrPagination-GtGtSMJG.js → GrPagination-DG7kp6VL.js} +2 -2
- package/dist/components/GrPagination/chunks/{GrPagination-GtGtSMJG.js.map → GrPagination-DG7kp6VL.js.map} +1 -1
- package/dist/components/GrPagination/index.js +1 -1
- package/dist/components/GrPopover/chunks/{GrPopover-b70bIlQ9.js → GrPopover-DDChM1jD.js} +28 -10
- package/dist/components/GrPopover/chunks/GrPopover-DDChM1jD.js.map +1 -0
- package/dist/components/GrPopover/index.js +2 -2
- package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-CEI8bf-t.js → GrPromptDialog-DjF-5oD9.js} +4 -4
- package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-CEI8bf-t.js.map → GrPromptDialog-DjF-5oD9.js.map} +1 -1
- package/dist/components/GrPromptDialog/index.js +1 -1
- package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-BVmjKXcv.js → GrRadioGroup-7w4bXIg_.js} +1 -1
- package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-BVmjKXcv.js.map → GrRadioGroup-7w4bXIg_.js.map} +1 -1
- package/dist/components/GrRadioGroup/index.js +1 -1
- package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-CZONq8uT.js → GrResponseErrorBanner-BhP-xw2P.js} +1 -1
- package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-CZONq8uT.js.map → GrResponseErrorBanner-BhP-xw2P.js.map} +1 -1
- package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-CgfAwlg3.js → GrResponseErrorBanner-DA4q90Zt.js} +1 -1
- package/dist/components/GrResponseErrorBanner/chunks/{GrResponseErrorBanner-CgfAwlg3.js.map → GrResponseErrorBanner-DA4q90Zt.js.map} +1 -1
- package/dist/components/GrResponseErrorBanner/index.js +2 -2
- package/dist/components/GrSegmented/chunks/{GrSegmented-D1mjxF_O.js → GrSegmented-DKpo3cnC.js} +30 -5
- package/dist/components/GrSegmented/chunks/GrSegmented-DKpo3cnC.js.map +1 -0
- package/dist/components/GrSegmented/index.js +1 -1
- package/dist/components/GrSelect/chunks/{GrSelect-CaGuyvtb.js → GrSelect-BA1wfX3c.js} +19 -3
- package/dist/components/GrSelect/chunks/GrSelect-BA1wfX3c.js.map +1 -0
- package/dist/components/GrSelect/index.js +1 -1
- package/dist/components/GrSelect/styles.css +1 -1
- package/dist/components/GrSidebar/chunks/{GrSidebar-D7WxRtIu.js → GrSidebar-DY-LgIbS.js} +2 -2
- package/dist/components/GrSidebar/chunks/{GrSidebar-D7WxRtIu.js.map → GrSidebar-DY-LgIbS.js.map} +1 -1
- package/dist/components/GrSidebar/index.js +2 -2
- package/dist/components/GrSlider/index.js +1 -1
- package/dist/components/GrSortableList/chunks/{GrSortableList-DPjxilmN.js → GrSortableList-BMXyxmRc.js} +3 -3
- package/dist/components/GrSortableList/chunks/{GrSortableList-DPjxilmN.js.map → GrSortableList-BMXyxmRc.js.map} +1 -1
- package/dist/components/GrSortableList/index.js +2 -2
- package/dist/components/GrStatistic/chunks/{GrStatistic-C7wQECeS.js → GrStatistic-BJQv5aOS.js} +41 -26
- package/dist/components/GrStatistic/chunks/GrStatistic-BJQv5aOS.js.map +1 -0
- package/dist/components/GrStatistic/index.js +2 -2
- package/dist/components/GrSteps/chunks/GrSteps-Cce4rfr3.js +282 -0
- package/dist/components/GrSteps/chunks/GrSteps-Cce4rfr3.js.map +1 -0
- package/dist/components/GrSteps/index.js +3 -0
- package/dist/components/GrSwitch/chunks/{GrSwitch-x_vQQ6ao.js → GrSwitch-CHiIj9GT.js} +1 -1
- package/dist/components/GrSwitch/chunks/{GrSwitch-x_vQQ6ao.js.map → GrSwitch-CHiIj9GT.js.map} +1 -1
- package/dist/components/GrSwitch/index.js +2 -2
- package/dist/components/GrTabPanels/chunks/{GrTabPanels-AJt1w1XC.js → GrTabPanels-BZQS8-JM.js} +12 -1
- package/dist/components/GrTabPanels/chunks/{GrTabPanels-AJt1w1XC.js.map → GrTabPanels-BZQS8-JM.js.map} +1 -1
- package/dist/components/GrTabPanels/index.js +1 -1
- package/dist/components/GrTimeline/chunks/{GrTimeline-Ch9sHzwL.js → GrTimeline-DIDdkTn7.js} +12 -1
- package/dist/components/GrTimeline/chunks/GrTimeline-DIDdkTn7.js.map +1 -0
- package/dist/components/GrTimeline/index.js +1 -1
- package/dist/components/GrToaster/chunks/{GrToaster-DJUzx3sR.js → GrToaster-CC49q3a4.js} +1 -1
- package/dist/components/GrToaster/chunks/{GrToaster-DJUzx3sR.js.map → GrToaster-CC49q3a4.js.map} +1 -1
- package/dist/components/GrToaster/index.js +1 -1
- package/dist/components/GrTree/chunks/{GrTree-BvOeQ3xJ.js.map → GrTree-J5q8aCya.js.map} +1 -1
- package/dist/components/GrTree/index.js +1 -1
- package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-_LjTRR7X.js → GrTreeSelect-DEfxWAc3.js} +1 -1
- package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-_LjTRR7X.js.map → GrTreeSelect-DEfxWAc3.js.map} +1 -1
- package/dist/components/GrTreeSelect/index.js +1 -1
- package/dist/components/GrValue/chunks/GrValue-CZsuZ4x-.js +38 -0
- package/dist/components/GrValue/chunks/GrValue-CZsuZ4x-.js.map +1 -0
- package/dist/components/GrValue/index.js +3 -0
- package/dist/composables/useFloating.js +47 -7
- package/dist/composables/useFloating.js.map +1 -1
- package/dist/composables/useTheme.js.map +1 -1
- package/dist/composables/useToast.js.map +1 -1
- package/dist/directives/loading.js +1 -1
- package/dist/granular-provider-node.js +1 -1
- package/dist/granular-provider.js +1 -1
- package/dist/i18n/all.js +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/index.js +74 -62
- package/dist/styles/themes/dark.css +11 -6
- package/dist/styles/themes/light.css +5 -0
- package/dist/theme.js +1 -1
- package/dist/tokens.js +1 -1
- package/dist/types/components/GrBadge/grBadgeStyles.d.ts +7 -0
- package/dist/types/components/GrCard/GrCard.vue.d.ts +1 -1
- package/dist/types/components/GrCard/grCardStyles.d.ts +11 -0
- package/dist/types/components/GrChip/GrChip.vue.d.ts +118 -0
- package/dist/types/components/GrChip/config.d.ts +1 -0
- package/dist/types/components/GrChip/defaults.d.ts +16 -0
- package/dist/types/components/GrChip/grChipGroupContext.d.ts +52 -0
- package/dist/types/components/GrChip/grChipStyles.d.ts +64 -0
- package/dist/types/components/GrChip/index.d.ts +11 -0
- package/dist/types/components/GrChip/safelist.d.ts +7 -0
- package/dist/types/components/GrChipGroup/GrChipGroup.vue.d.ts +128 -0
- package/dist/types/components/GrChipGroup/config.d.ts +1 -0
- package/dist/types/components/GrChipGroup/defaults.d.ts +13 -0
- package/dist/types/components/GrChipGroup/grChipGroupStyles.d.ts +7 -0
- package/dist/types/components/GrChipGroup/index.d.ts +9 -0
- package/dist/types/components/GrChipGroup/safelist.d.ts +1 -0
- package/dist/types/components/GrContextMenu/GrContextMenu.vue.d.ts +157 -0
- package/dist/types/components/GrContextMenu/config.d.ts +1 -0
- package/dist/types/components/GrContextMenu/contextMenuAnchor.d.ts +29 -0
- package/dist/types/components/GrContextMenu/index.d.ts +7 -0
- package/dist/types/components/GrDataTable/GrDataTable.vue.d.ts +1 -1
- package/dist/types/components/GrDelta/grDeltaStyles.d.ts +13 -1
- package/dist/types/components/GrDescriptionList/grDescriptionListStyles.d.ts +29 -1
- package/dist/types/components/GrDropdownMenu/GrDropdownMenu.vue.d.ts +3 -3
- package/dist/types/components/GrDropdownMenu/GrDropdownMenuEntries.vue.d.ts +22 -0
- package/dist/types/components/GrFilePreview/GrFilePreview.vue.d.ts +1 -1
- package/dist/types/components/GrList/GrListItem.vue.d.ts +1 -1
- package/dist/types/components/GrPopover/GrPopover.vue.d.ts +21 -2
- package/dist/types/components/GrPopover/grPopoverStyles.d.ts +11 -1
- package/dist/types/components/GrPopover/index.d.ts +1 -1
- package/dist/types/components/GrStatistic/GrStatistic.vue.d.ts +6 -6
- package/dist/types/components/GrStatistic/grStatisticStyles.d.ts +9 -0
- package/dist/types/components/GrSteps/GrSteps.vue.d.ts +118 -0
- package/dist/types/components/GrSteps/config.d.ts +1 -0
- package/dist/types/components/GrSteps/defaults.d.ts +18 -0
- package/dist/types/components/GrSteps/grStepsStyles.d.ts +63 -0
- package/dist/types/components/GrSteps/index.d.ts +11 -0
- package/dist/types/components/GrSteps/safelist.d.ts +1 -0
- package/dist/types/components/GrSteps/stepsModel.d.ts +57 -0
- package/dist/types/components/GrValue/GrValue.vue.d.ts +51 -0
- package/dist/types/components/GrValue/config.d.ts +1 -0
- package/dist/types/components/GrValue/grValueStyles.d.ts +34 -0
- package/dist/types/components/GrValue/index.d.ts +5 -0
- package/dist/types/components/GrValue/safelist.d.ts +1 -0
- package/dist/types/components/shared/truncationTitle.d.ts +16 -0
- package/dist/types/composables/internal/useMenuItemsFocus.d.ts +24 -0
- package/dist/types/composables/internal/useTypeahead.d.ts +30 -0
- package/dist/types/composables/useFloating.d.ts +33 -2
- package/dist/types/granular-provider/shared.d.ts +5 -0
- package/dist/types/i18n/messages/en.d.ts +26 -0
- package/dist/types/i18n/messages/es.d.ts +26 -0
- package/dist/types/i18n/messages/ru.d.ts +26 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/web-types.json +799 -195
- package/package.json +22 -2
- package/tokens/themes/dark.json +26 -6
- package/tokens/themes/light.json +20 -0
- package/dist/chunks/config-BSyiFlbi.js.map +0 -1
- package/dist/chunks/config-Be9k9bOf.js.map +0 -1
- package/dist/chunks/config-BfsBepkH2.js.map +0 -1
- package/dist/chunks/config-Bm_Sovla.js.map +0 -1
- package/dist/chunks/config-BoNR7_PD2.js.map +0 -1
- package/dist/chunks/config-BuGlNPE9.js.map +0 -1
- package/dist/chunks/config-C5mO5DYZ.js.map +0 -1
- package/dist/chunks/config-DAX8Deh12.js.map +0 -1
- package/dist/chunks/config-DBQQT-WP.js.map +0 -1
- package/dist/chunks/config-DCwQBMmJ.js.map +0 -1
- package/dist/chunks/config-T3qdQBgU2.js.map +0 -1
- package/dist/chunks/config-qVg3Zz_A.js.map +0 -1
- package/dist/chunks/config-zjeAJ4ho.js.map +0 -1
- package/dist/chunks/context-BfIQv7m1.js.map +0 -1
- package/dist/chunks/en-DCCFP4qu.js.map +0 -1
- package/dist/chunks/es-CT34HBVM.js.map +0 -1
- package/dist/chunks/grPopoverStyles-Rz_Z5nLW.js.map +0 -1
- package/dist/chunks/granular-provider-CQKhl5C_.js.map +0 -1
- package/dist/chunks/ru-CLiAMwrx.js.map +0 -1
- package/dist/components/GrCard/chunks/GrCard-Bc7nRfbe.js.map +0 -1
- package/dist/components/GrCommandPalette/chunks/GrCommandPalette-BFcMf4Pn.js.map +0 -1
- package/dist/components/GrConfigProvider/chunks/GrConfigProvider-UP-EaoAf.js.map +0 -1
- package/dist/components/GrDataTable/chunks/GrDataTable-B5MmZFUg.js.map +0 -1
- package/dist/components/GrDelta/chunks/GrDelta-DFvxNpmN.js.map +0 -1
- package/dist/components/GrDescriptionList/chunks/GrDescriptionList-2zFXzX83.js.map +0 -1
- package/dist/components/GrDialogService/chunks/GrDialogService-CrwA4aJq.js.map +0 -1
- package/dist/components/GrDrawer/chunks/GrDrawer-C3zAg2tG.js.map +0 -1
- package/dist/components/GrDropdown/chunks/GrDropdown-BSfFOcDx.js.map +0 -1
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-DyS6dWDp.js.map +0 -1
- package/dist/components/GrFileUpload/chunks/GrFileUpload-D3-vC-ap.js.map +0 -1
- package/dist/components/GrFormField/chunks/GrFormField-kqfVY30N.js.map +0 -1
- package/dist/components/GrJsonViewer/chunks/GrJsonViewer-DFUppRNb.js.map +0 -1
- package/dist/components/GrList/chunks/GrList-BRYhpqIe.js.map +0 -1
- package/dist/components/GrLoading/chunks/GrLoading-C3DZSSuh.js.map +0 -1
- package/dist/components/GrModal/chunks/GrModal-CPz7SWD_.js.map +0 -1
- package/dist/components/GrPopover/chunks/GrPopover-b70bIlQ9.js.map +0 -1
- package/dist/components/GrSegmented/chunks/GrSegmented-D1mjxF_O.js.map +0 -1
- package/dist/components/GrSelect/chunks/GrSelect-CaGuyvtb.js.map +0 -1
- package/dist/components/GrStatistic/chunks/GrStatistic-C7wQECeS.js.map +0 -1
- package/dist/components/GrTimeline/chunks/GrTimeline-Ch9sHzwL.js.map +0 -1
- package/dist/chunks/{config-BfsBepkH2.js → config-BfsBepkH.js} +0 -0
- package/dist/chunks/{config-BoNR7_PD2.js → config-BoNR7_PD.js} +0 -0
- package/dist/chunks/{config-BuGlNPE9.js → config-BuGlNPE92.js} +0 -0
- package/dist/chunks/{config-DAX8Deh12.js → config-DAX8Deh1.js} +0 -0
- package/dist/chunks/{config-T3qdQBgU2.js → config-T3qdQBgU.js} +0 -0
- package/dist/chunks/{config-zjeAJ4ho.js → config-zjeAJ4ho2.js} +0 -0
- package/dist/chunks/{context-BfIQv7m1.js → context-BfIQv7m12.js} +0 -0
- package/dist/components/GrTree/chunks/{GrTree-BvOeQ3xJ.js → GrTree-J5q8aCya.js} +1 -1
|
@@ -0,0 +1,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"}
|
|
@@ -10,7 +10,7 @@ import { defineGranularComponent } from "@feugene/unocss-preset-granular/contrac
|
|
|
10
10
|
*/
|
|
11
11
|
var surfaceBaseClass = "rounded-[var(--gr-radius-lg)] bg-[var(--gr-card)] text-[var(--gr-card-fg)]";
|
|
12
12
|
var variantClass = {
|
|
13
|
-
elevated: "border border-[var(--gr-brd)] shadow-
|
|
13
|
+
elevated: "border border-[var(--gr-brd)] shadow-[var(--gr-shadow-1)]",
|
|
14
14
|
outlined: "border border-[var(--gr-brd)]",
|
|
15
15
|
ghost: ""
|
|
16
16
|
};
|
|
@@ -22,6 +22,17 @@ var paddingClass = {
|
|
|
22
22
|
};
|
|
23
23
|
var sectionDividerTopClass = "border-t border-[var(--gr-brd)]";
|
|
24
24
|
var sectionDividerBottomClass = "border-b border-[var(--gr-brd)]";
|
|
25
|
+
/**
|
|
26
|
+
* Отступ шапки, которую карточка рисует сама из `title`.
|
|
27
|
+
*
|
|
28
|
+
* Не берётся из `padding`: тот описывает **содержимое**, и дефолт `none` у него
|
|
29
|
+
* осмыслен — на `GrCard` стоят `GrCollapse` и `GrList`, а карточка с таблицей
|
|
30
|
+
* хочет её край в край. Заголовок же принадлежит самой карточке, и прижатым к
|
|
31
|
+
* рамке вместе с разделителем он выглядеть не должен ни при каком `padding`.
|
|
32
|
+
*
|
|
33
|
+
* По вертикали отступ меньше горизонтального: шапка — строка, а не блок.
|
|
34
|
+
*/
|
|
35
|
+
var ownHeaderPaddingClass = "px-4 py-3";
|
|
25
36
|
var cardTitleClass = "m-0 text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)] font-600";
|
|
26
37
|
var cardDescriptionClass = "mt-1 text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)] text-[var(--gr-muted-fg)]";
|
|
27
38
|
/** Интерактивная карточка целиком: ссылка или кнопка во всю поверхность. */
|
|
@@ -42,6 +53,7 @@ var grCardSafelist = [.../* @__PURE__ */ new Set([
|
|
|
42
53
|
...splitClassTokens(surfaceBaseClass),
|
|
43
54
|
...Object.values(variantClass).flatMap(splitClassTokens),
|
|
44
55
|
...Object.values(paddingClass).flatMap(splitClassTokens),
|
|
56
|
+
...splitClassTokens(ownHeaderPaddingClass),
|
|
45
57
|
...splitClassTokens(sectionDividerTopClass),
|
|
46
58
|
...splitClassTokens(sectionDividerBottomClass),
|
|
47
59
|
...splitClassTokens(interactiveClass),
|
|
@@ -56,4 +68,4 @@ var grCardConfig = defineGranularComponent(import.meta.url, {
|
|
|
56
68
|
safelist: grCardSafelist
|
|
57
69
|
});
|
|
58
70
|
//#endregion
|
|
59
|
-
export { grCardRootClass as a,
|
|
71
|
+
export { grCardRootClass as a, sectionDividerBottomClass as c, cardTitleClass as i, sectionDividerTopClass as l, grCardSafelist as n, ownHeaderPaddingClass as o, cardDescriptionClass as r, paddingClass as s, grCardConfig as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-DYgfMrIF.js","names":[],"sources":["../../src/components/GrCard/grCardStyles.ts","../../src/components/GrCard/safelist.ts","../../src/components/GrCard/config.ts"],"sourcesContent":["export type GrCardPadding = 'none' | 'sm' | 'md' | 'lg'\nexport type GrCardVariant = 'elevated' | 'outlined' | 'ghost'\n\n/**\n * Классы `GrCard`.\n *\n * `elevated` — дефолт и ровно тот вид, что был у карточки до появления пропов:\n * `GrCollapse` и `GrList` рендерят содержимое внутрь `GrCard`, и любое смещение\n * дефолта поехало бы у них.\n */\n\nexport const surfaceBaseClass = 'rounded-[var(--gr-radius-lg)] bg-[var(--gr-card)] text-[var(--gr-card-fg)]'\n\nexport const variantClass: Record<GrCardVariant, string> = {\n // Тень — токеном, а не утилитой uno-шкалы: у той зашит свой полупрозрачный\n // цвет, темой он не настраивается, и на тёмном фоне тени не получалось вовсе\n // — карточка теряла подъём и держалась на одной рамке. Токен темозависим.\n // Имя утилиты здесь не пишется намеренно: UnoCSS сканирует текст файла и\n // сгенерировал бы класс прямо из комментария.\n elevated: 'border border-[var(--gr-brd)] shadow-[var(--gr-shadow-1)]',\n outlined: 'border border-[var(--gr-brd)]',\n // Карточка внутри карточки: вторая рамка только шумит.\n ghost: '',\n}\n\nexport const paddingClass: Record<GrCardPadding, string> = {\n none: '',\n sm: 'p-3',\n md: 'p-4',\n lg: 'p-6',\n}\n\nexport const sectionDividerTopClass = 'border-t border-[var(--gr-brd)]'\nexport const sectionDividerBottomClass = 'border-b border-[var(--gr-brd)]'\n\n/**\n * Отступ шапки, которую карточка рисует сама из `title`.\n *\n * Не берётся из `padding`: тот описывает **содержимое**, и дефолт `none` у него\n * осмыслен — на `GrCard` стоят `GrCollapse` и `GrList`, а карточка с таблицей\n * хочет её край в край. Заголовок же принадлежит самой карточке, и прижатым к\n * рамке вместе с разделителем он выглядеть не должен ни при каком `padding`.\n *\n * По вертикали отступ меньше горизонтального: шапка — строка, а не блок.\n */\nexport const ownHeaderPaddingClass = 'px-4 py-3'\n\n/**\n * Уровень заголовка карточки. `h1` намеренно нет: его задаёт страница, а\n * карточка — блок внутри уже существующей структуры.\n */\nexport const GR_CARD_HEADING_LEVELS = [2, 3, 4, 5, 6] as const\n\nexport type GrCardHeadingLevel = typeof GR_CARD_HEADING_LEVELS[number]\n\n// `m-0` — у нативного заголовка есть браузерные отступы, и без сброса шапка\n// разъезжается по вертикали.\nexport const cardTitleClass = 'm-0 text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)] font-600'\n\nexport const cardDescriptionClass = 'mt-1 text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)] text-[var(--gr-muted-fg)]'\n\n/** Интерактивная карточка целиком: ссылка или кнопка во всю поверхность. */\nexport const interactiveClass = 'block w-full text-left transition-colors duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\n\nexport const hoverClass = 'cursor-pointer hover:bg-[var(--gr-muted)]'\n\nexport function grCardRootClass(options: {\n variant: GrCardVariant\n /** Падинг едет на корень, только пока нет секций — иначе лишняя обёртка. */\n padding: GrCardPadding\n interactive: boolean\n hoverable: boolean\n}): string {\n return [\n surfaceBaseClass,\n variantClass[options.variant],\n paddingClass[options.padding],\n options.interactive ? interactiveClass : '',\n options.interactive || options.hoverable ? hoverClass : '',\n ].filter(Boolean).join(' ')\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n cardDescriptionClass,\n cardTitleClass,\n hoverClass,\n interactiveClass,\n ownHeaderPaddingClass,\n paddingClass,\n sectionDividerBottomClass,\n sectionDividerTopClass,\n surfaceBaseClass,\n variantClass,\n} from './grCardStyles'\n\nexport const grCardSafelist = [...new Set([\n ...splitClassTokens(surfaceBaseClass),\n ...Object.values(variantClass).flatMap(splitClassTokens),\n ...Object.values(paddingClass).flatMap(splitClassTokens),\n ...splitClassTokens(ownHeaderPaddingClass),\n ...splitClassTokens(sectionDividerTopClass),\n ...splitClassTokens(sectionDividerBottomClass),\n ...splitClassTokens(interactiveClass),\n ...splitClassTokens(hoverClass),\n ...splitClassTokens(cardTitleClass),\n ...splitClassTokens(cardDescriptionClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grCardSafelist } from './safelist'\n\nexport const grCardConfig = defineGranularComponent(import.meta.url, {\n name: 'GrCard',\n safelist: grCardSafelist,\n})\n"],"mappings":";;;;;;;;;;AAWA,IAAa,mBAAmB;AAEhC,IAAa,eAA8C;CAMzD,UAAU;CACV,UAAU;CAEV,OAAO;AACT;AAEA,IAAa,eAA8C;CACzD,MAAM;CACN,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,yBAAyB;AACtC,IAAa,4BAA4B;;;;;;;;;;;AAYzC,IAAa,wBAAwB;AAYrC,IAAa,iBAAiB;AAE9B,IAAa,uBAAuB;;AAGpC,IAAa,mBAAmB;AAEhC,IAAa,aAAa;AAE1B,SAAgB,gBAAgB,SAMrB;CACT,OAAO;EACL;EACA,aAAa,QAAQ;EACrB,aAAa,QAAQ;EACrB,QAAQ,cAAc,mBAAmB;EACzC,QAAQ,eAAe,QAAQ,YAAY,aAAa;CAC1D,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;AAC5B;;;AClEA,IAAa,iBAAiB,CAAC,mBAAG,IAAI,IAAI;CACxC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,OAAO,OAAO,YAAY,CAAC,CAAC,QAAQ,gBAAgB;CACvD,GAAG,OAAO,OAAO,YAAY,CAAC,CAAC,QAAQ,gBAAgB;CACvD,GAAG,iBAAiB,qBAAqB;CACzC,GAAG,iBAAiB,sBAAsB;CAC1C,GAAG,iBAAiB,yBAAyB;CAC7C,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,UAAU;CAC9B,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,oBAAoB;AAC1C,CAAC,CAAC;;;ACrBF,IAAa,eAAe,wBAAwB,OAAO,KAAK,KAAK;CACnE,MAAM;CACN,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"}
|
|
@@ -5,12 +5,31 @@ var descriptionRootClass = "m-0 gap-x-4 [row-gap:var(--gr-description-list-row-g
|
|
|
5
5
|
/** Сетка колонок — раскладки `inline` и `stacked`. */
|
|
6
6
|
var descriptionRootGridClass = "grid";
|
|
7
7
|
var descriptionRootFlowClass = "flex flex-wrap items-baseline";
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
/** Одна колонка — обычный класс: считать там нечего. */
|
|
9
|
+
var descriptionSingleColumnClass = "grid-cols-1";
|
|
10
|
+
/**
|
|
11
|
+
* Колонки по ширине **контейнера**, а не вьюпорта.
|
|
12
|
+
*
|
|
13
|
+
* Медиазапрос меряет экран, а список живёт в карточке: на широком мониторе в
|
|
14
|
+
* колонке 290px включались две колонки, подпись фиксированной ширины съедала
|
|
15
|
+
* почти всё место, и значение переносилось посимвольно — «30» печаталось как
|
|
16
|
+
* «3» и «0» на двух строках. Показанное число становилось неверным.
|
|
17
|
+
*
|
|
18
|
+
* `auto-fit` решает это без медиазапросов, без JS и без замеров, то есть
|
|
19
|
+
* одинаково на сервере и на клиенте. `columns` при этом становится **потолком**:
|
|
20
|
+
* трек не уже `column-min`, но и не уже доли, на которую делится контейнер при
|
|
21
|
+
* N колонках, — поэтому шире N штук не встанет никогда.
|
|
22
|
+
*
|
|
23
|
+
* `min(100%, …)` спасает совсем узкий контейнер: без него трек шириной с
|
|
24
|
+
* `column-min` вылезал бы за край.
|
|
25
|
+
*
|
|
26
|
+
* Инлайновым стилем, а не классом: выражение зависит от N, и шкалы утилит для
|
|
27
|
+
* него не существует — тот же довод, что записан у сетки `GrDashboard`.
|
|
28
|
+
*/
|
|
29
|
+
function descriptionColumnsStyle(columns, labelWidth) {
|
|
30
|
+
const base = "var(--gr-description-list-column-min, 12rem)";
|
|
31
|
+
return { gridTemplateColumns: `repeat(auto-fit, minmax(min(100%, max(${labelWidth ? `max(${base}, calc(${labelWidth} + var(--gr-description-list-value-min, 5rem)))` : base}, (100% - ${columns - 1} * 1rem) / ${columns})), 1fr))` };
|
|
32
|
+
}
|
|
14
33
|
var descriptionPairInlineClass = "flex min-w-0 items-baseline gap-2";
|
|
15
34
|
var descriptionPairStackedClass = "min-w-0";
|
|
16
35
|
var descriptionPairFlowClass = "flex min-w-0 items-baseline gap-1";
|
|
@@ -52,7 +71,7 @@ var grDescriptionListSafelist = [.../* @__PURE__ */ new Set([
|
|
|
52
71
|
...splitClassTokens(descriptionLabelInlineClass),
|
|
53
72
|
...splitClassTokens(descriptionLabelStackedClass),
|
|
54
73
|
...splitClassTokens(descriptionValueClass),
|
|
55
|
-
...
|
|
74
|
+
...splitClassTokens(descriptionSingleColumnClass),
|
|
56
75
|
...Object.values(descriptionValueToneClass).flatMap(splitClassTokens),
|
|
57
76
|
...Object.values(descriptionSizeClass).flatMap(splitClassTokens),
|
|
58
77
|
...Object.values(descriptionDensityClass).flatMap(splitClassTokens)
|
|
@@ -64,4 +83,4 @@ var grDescriptionListConfig = defineGranularComponent(import.meta.url, {
|
|
|
64
83
|
safelist: grDescriptionListSafelist
|
|
65
84
|
});
|
|
66
85
|
//#endregion
|
|
67
|
-
export { descriptionDividedClass as a, descriptionPairFlowClass as c, descriptionRootClass as d, descriptionRootFlowClass as f,
|
|
86
|
+
export { descriptionValueToneClass as _, descriptionDividedClass as a, descriptionPairFlowClass as c, descriptionRootClass as d, descriptionRootFlowClass as f, descriptionValueClass as g, descriptionSizeClass as h, descriptionDensityClass as i, descriptionPairInlineClass as l, descriptionSingleColumnClass as m, grDescriptionListSafelist as n, descriptionLabelInlineClass as o, descriptionRootGridClass as p, descriptionColumnsStyle as r, descriptionLabelStackedClass as s, grDescriptionListConfig as t, descriptionPairStackedClass as u };
|
|
@@ -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-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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-CTbuwcYs.js","names":[],"sources":["../../src/components/GrConfigProvider/context.ts"],"sourcesContent":["import { computed, getCurrentInstance, inject, type ComputedRef, type InjectionKey } from 'vue'\n\nimport type { GrComponentDefaultsRegistry } from '../../composables/useGrComponentConfig'\n\n/**\n * Контекст `GrConfigProvider` — глобальные дефолты для вложенных GR-компонентов:\n * размер контролов и per-component дефолтные пропсы.\n *\n * Компоненты читают его через {@link useGrConfig} (или хелперы ниже) и используют\n * как fallback, когда соответствующий проп не задан на самом компоненте. Провайдер\n * можно вкладывать — дочерний мержится поверх родительского.\n */\n\n/**\n * Размеры, которыми оперирует провайдер. Это «размеры контролов» — общий\n * знаменатель формных компонентов, а не объединение всех size-шкал пакета\n * (у оверлеев есть свои `xl`/`full`, у слайдера нет `xs`).\n */\nexport const GR_COMPONENT_SIZES = ['xs', 'sm', 'md', 'lg'] as const\n\nexport type GrComponentSize = typeof GR_COMPONENT_SIZES[number]\n\n/**\n * Реестр компонентов с настраиваемыми через конфиг пропами.\n *\n * Объявлен в `composables/useGrComponentConfig` — там же, куда его дополняют\n * и компоненты пакета, и companion-пакеты. Здесь только реэкспорт для тех, кто\n * работает с контекстом провайдера напрямую.\n */\nexport type { GrComponentDefaultsRegistry }\n\n/** Имя компонента, у которого есть настраиваемые через конфиг пропы. */\nexport type GrConfigurableComponent = keyof GrComponentDefaultsRegistry\n\n/**\n * Дефолтные пропсы по имени компонента: `{ GrButton: { variant: 'secondary' } }`.\n *\n * Набор ключей закрыт реестром, а не `Record<string, unknown>`: через конфиг\n * должны настраиваться только «оформительские» пропы. Пустить туда что угодно —\n * значит разрешить задать глобальный `modelValue` или обработчик и получить баг,\n * который ищется часами.\n */\nexport type GrComponentDefaults = {\n [TComponent in GrConfigurableComponent]?: Partial<GrComponentDefaultsRegistry[TComponent]>\n}\n\ntype GrDefaultsOf<TComponent extends GrConfigurableComponent> = Partial<GrComponentDefaultsRegistry[TComponent]>\n\nexport interface GrConfigContext {\n /** Дефолтный размер контролов (если проп `size` не задан на компоненте). */\n size: ComputedRef<GrComponentSize | undefined>\n /** Дефолтные пропсы по компонентам. */\n componentDefaults: ComputedRef<GrComponentDefaults>\n /**\n * Тема поддерева (`data-theme`). Необязательна: тип публичный, и контекст\n * строят руками — например хост императивных диалогов.\n */\n theme?: ComputedRef<string | undefined>\n /**\n * Куда монтируются оверлеи поддерева (`usePortalTarget`). Необязательно, как\n * и `theme`: контекст строят руками — например хост императивных диалогов.\n */\n portalTarget?: ComputedRef<string | HTMLElement | undefined>\n}\n\nexport const GR_CONFIG_KEY: InjectionKey<GrConfigContext> = Symbol('gr-config')\n\n/**\n * Пустой конфиг: когда провайдера в дереве нет, всё разрешается в `undefined`,\n * а компоненты падают на собственные дефолты.\n *\n * `computed` здесь не роскошь: контекст типизирован рефами, и потребитель вправе\n * прогнать `size` через `unref()` или `watch()`. Плоский объект `{ value: … }`\n * не пройдёт проверку `isRef`, и такой код молча получит сам объект вместо\n * значения — поэтому «просто константа» тут не подходит.\n *\n * А вот пустые значения заморожены, и это не педантизм: `computed` без\n * зависимостей вычисляется один раз и отдаёт **один и тот же** объект всем\n * компонентам без провайдера. Незамороженный, он позволил бы одному потребителю\n * записать в него ключ и тем самым подменить дефолты всему приложению.\n */\nconst EMPTY_COMPONENT_DEFAULTS: GrComponentDefaults = Object.freeze({})\n\nconst EMPTY_CONFIG: GrConfigContext = {\n size: computed(() => undefined),\n componentDefaults: computed(() => EMPTY_COMPONENT_DEFAULTS),\n theme: computed(() => undefined),\n portalTarget: computed(() => undefined),\n}\n\n/** Возвращает ближайший `GrConfigProvider` или пустой конфиг, если провайдера нет. */\nexport function useGrConfig(): GrConfigContext {\n return inject(GR_CONFIG_KEY, EMPTY_CONFIG)\n}\n\n/**\n * Источник конфига для {@link resolveGrConfig}: сам контекст, `AppContext` или\n * инстанс компонента — у двух последних читается `provides`.\n */\nexport type GrConfigSource = GrConfigContext | { provides?: Record<symbol | string, unknown> }\n\nfunction isGrConfigContext(source: unknown): source is GrConfigContext {\n return typeof (source as GrConfigContext | null)?.componentDefaults?.value === 'object'\n}\n\n/**\n * Конфиг там, где `inject` недоступен — вне `setup`: в директивах, императивных\n * сервисах, утилитах. Порядок: явный контекст → `provides` источника → `inject`\n * (если есть активный инстанс) → пустой конфиг.\n *\n * Важно понимать границу: `provides` у `AppContext` содержит только то, что\n * роздано через `app.provide()`. Значения от `<GrConfigProvider>` живут в дереве\n * компонентов, и достать их можно лишь оттуда, где это дерево ещё есть — то есть\n * захватом в `setup`. Просто передать `appContext` в отрыве от дерева\n * недостаточно; см. `SPEC-GrConfig-resolver.md`.\n */\nexport function resolveGrConfig(source?: GrConfigSource | null): GrConfigContext {\n if (isGrConfigContext(source)) return source\n\n const provides = source?.provides\n if (provides) {\n const fromProvides = provides[GR_CONFIG_KEY as symbol] as GrConfigContext | undefined\n return isGrConfigContext(fromProvides) ? fromProvides : EMPTY_CONFIG\n }\n\n if (getCurrentInstance()) return inject(GR_CONFIG_KEY, EMPTY_CONFIG)\n\n return EMPTY_CONFIG\n}\n\nexport type UseGrComponentSizeOptions<TSize extends string> = {\n /**\n * Имя компонента, чтобы учесть точечный `componentDefaults[Component].size`.\n * Без него читается только глобальный `size` провайдера.\n */\n component?: GrConfigurableComponent\n /** Размер, когда ни проп, ни конфиг ничего не дали. По умолчанию `md`. */\n fallback?: TSize\n /**\n * Размеры, которые компонент реально умеет. Значение из конфига вне этого\n * списка игнорируется в пользу `fallback`.\n *\n * Обязателен для компонентов, у которых size-шкала уже общей (`GrSlider`,\n * `GrRating`, `GrSwitch`, `GrLink`, `GrStatistic` не знают про `xs`): без него\n * `<GrConfigProvider size=\"xs\">` дал бы `sizeMap['xs'] === undefined`, то есть\n * компонент без размерных классов — молча, без ошибки сборки.\n */\n supported?: readonly TSize[]\n}\n\n// Предупреждаем один раз на уникальную пару «размер + список поддерживаемых»,\n// иначе список из сотни контролов зальёт консоль одинаковыми сообщениями.\nconst warnedUnsupportedSizes = new Set<string>()\n\n/** Сброс дедупликации предупреждений. Внутреннее API — нужно тестам. */\nexport function resetUnsupportedSizeWarnings(): void {\n warnedUnsupportedSizes.clear()\n}\n\nfunction warnUnsupportedSize(size: string, supported: readonly string[]): void {\n const key = `${size}|${supported.join(',')}`\n if (warnedUnsupportedSizes.has(key)) return\n warnedUnsupportedSizes.add(key)\n\n console.warn(\n `[granularity] GrConfigProvider size=\"${size}\" is not supported by this component `\n + `(supported: ${supported.join(', ')}); falling back to its own default.`,\n )\n}\n\n/**\n * Эффективный размер компонента. Приоритет:\n * локальный проп → `componentDefaults[Component].size` → глобальный `size`\n * провайдера → `fallback`. Точечная настройка компонента должна побеждать\n * общую — иначе `componentDefaults` нельзя было бы использовать как исключение\n * из глобального правила.\n *\n * Передавайте `size` геттером, чтобы сохранить реактивность.\n *\n * Локальный проп не проверяется по `supported`: он уже сужен типом пропа самого\n * компонента, и передать туда лишнее — явная ошибка вызывающего кода. Проверка\n * нужна конфигу: это глобальный канал, который не знает, кто его читает.\n */\nexport function useGrComponentSize<TSize extends string = GrComponentSize>(\n localSize: () => TSize | undefined,\n options: UseGrComponentSizeOptions<TSize> = {},\n): ComputedRef<TSize> {\n // Все size-шкалы пакета содержат `md`, поэтому он безопасен как общий дефолт.\n const { component, fallback = 'md' as TSize, supported } = options\n const config = useGrConfig()\n\n return computed(() => {\n const local = localSize()\n if (local !== undefined) return local\n\n const fromComponentDefaults = component\n ? (config.componentDefaults.value[component] as { size?: TSize } | undefined)?.size\n : undefined\n\n const fromConfig = fromComponentDefaults ?? config.size.value\n if (fromConfig === undefined) return fallback\n\n if (supported && !supported.includes(fromConfig as TSize)) {\n // Проверку окружения держим инлайном: бандлер потребителя подставляет\n // `process.env.NODE_ENV`, сворачивает условие в `false` и выкидывает\n // и текст предупреждения, и дедуп-Set. Через промежуточную константу\n // это не работает — межмодульную свёртку esbuild/rollup не делают, и\n // DX-сообщение осталось бы в каждом бандле (проверено замером).\n // `typeof process` — страховка для сборок, где `process` не определён.\n if (typeof process !== 'undefined' && process.env.NODE_ENV !== 'production')\n warnUnsupportedSize(fromConfig, supported)\n return fallback\n }\n\n return fromConfig as TSize\n })\n}\n\n/** Дефолтные пропсы конкретного компонента из ближайшего провайдера. */\nexport function useGrComponentDefaults<TComponent extends GrConfigurableComponent>(\n name: TComponent,\n): ComputedRef<GrDefaultsOf<TComponent>> {\n const config = useGrConfig()\n return computed(() => (config.componentDefaults.value[name] ?? EMPTY_COMPONENT_DEFAULTS) as GrDefaultsOf<TComponent>)\n}\n\n/**\n * Эффективное значение «оформительского» пропа: локальный проп →\n * `componentDefaults[Component][prop]` → собственный дефолт компонента.\n *\n * Обязательное условие на стороне компонента: у такого пропа в `withDefaults`\n * должен стоять `undefined`, а «настоящий» дефолт — переехать сюда, в `fallback`.\n * Иначе конфиг не сработает никогда: Vue отдаёт `props.x` уже с подставленным\n * дефолтом, и отличить «пользователь передал значение» от «сработал дефолт»\n * изнутри компонента невозможно.\n */\nexport function useGrComponentProp<\n TComponent extends GrConfigurableComponent,\n TProp extends keyof GrDefaultsOf<TComponent>,\n>(\n component: TComponent,\n prop: TProp,\n localValue: () => GrDefaultsOf<TComponent>[TProp],\n fallback: NonNullable<GrDefaultsOf<TComponent>[TProp]>,\n): ComputedRef<NonNullable<GrDefaultsOf<TComponent>[TProp]>> {\n const config = useGrConfig()\n\n return computed(() => {\n const local = localValue()\n if (local !== undefined) return local as NonNullable<GrDefaultsOf<TComponent>[TProp]>\n\n // Промежуточная аннотация (а не `as`) нужна, чтобы TS не разворачивал\n // `GrComponentDefaults[TComponent]` в объединение всех блоков — по нему\n // generic-ключ `TProp` уже не проиндексировать.\n const defaults: GrDefaultsOf<TComponent> | undefined = config.componentDefaults.value[component]\n return defaults?.[prop] ?? fallback\n })\n}\n\n/**\n * Атрибут темы для **телепортируемого** корня панели.\n *\n * Панель уезжает в `body`, то есть вне DOM-поддерева провайдера, и `data-theme`\n * с его обёртки на неё не наследуется. В дереве компонентов она при этом\n * остаётся внутри — `inject` работает, — поэтому тему панель ставит себе сама.\n * Без этого «тёмный остров» ломался бы на первом же открытом дропдауне.\n *\n * ```vue\n * <teleport to=\"body\">\n * <div v-bind=\"themeAttrs\">…</div>\n * </teleport>\n * ```\n */\nexport function useGrThemeAttrs(): ComputedRef<{ 'data-theme'?: string }> {\n const config = useGrConfig()\n return computed(() => {\n const theme = config.theme?.value\n return theme ? { 'data-theme': theme } : {}\n })\n}\n"],"mappings":";;AAiEA,IAAa,gBAA+C,OAAO,WAAW;;;;;;;;;;;;;;;AAgB9E,IAAM,2BAAgD,OAAO,OAAO,CAAC,CAAC;AAEtE,IAAM,eAAgC;CACpC,MAAM,eAAe,KAAA,CAAS;CAC9B,mBAAmB,eAAe,wBAAwB;CAC1D,OAAO,eAAe,KAAA,CAAS;CAC/B,cAAc,eAAe,KAAA,CAAS;AACxC;;AAGA,SAAgB,cAA+B;CAC7C,OAAO,OAAO,eAAe,YAAY;AAC3C;AAQA,SAAS,kBAAkB,QAA4C;CACrE,OAAO,OAAQ,QAAmC,mBAAmB,UAAU;AACjF;;;;;;;;;;;;AAaA,SAAgB,gBAAgB,QAAiD;CAC/E,IAAI,kBAAkB,MAAM,GAAG,OAAO;CAEtC,MAAM,WAAW,QAAQ;CACzB,IAAI,UAAU;EACZ,MAAM,eAAe,SAAS;EAC9B,OAAO,kBAAkB,YAAY,IAAI,eAAe;CAC1D;CAEA,IAAI,mBAAmB,GAAG,OAAO,OAAO,eAAe,YAAY;CAEnE,OAAO;AACT;AAwBA,IAAM,yCAAyB,IAAI,IAAY;AAO/C,SAAS,oBAAoB,MAAc,WAAoC;CAC7E,MAAM,MAAM,GAAG,KAAK,GAAG,UAAU,KAAK,GAAG;CACzC,IAAI,uBAAuB,IAAI,GAAG,GAAG;CACrC,uBAAuB,IAAI,GAAG;CAE9B,QAAQ,KACN,wCAAwC,KAAK,mDAC5B,UAAU,KAAK,IAAI,EAAE,oCACxC;AACF;;;;;;;;;;;;;;AAeA,SAAgB,mBACd,WACA,UAA4C,CAAC,GACzB;CAEpB,MAAM,EAAE,WAAW,WAAW,MAAe,cAAc;CAC3D,MAAM,SAAS,YAAY;CAE3B,OAAO,eAAe;EACpB,MAAM,QAAQ,UAAU;EACxB,IAAI,UAAU,KAAA,GAAW,OAAO;EAMhC,MAAM,cAJwB,YACzB,OAAO,kBAAkB,MAAM,UAAU,EAAmC,OAC7E,KAAA,MAEwC,OAAO,KAAK;EACxD,IAAI,eAAe,KAAA,GAAW,OAAO;EAErC,IAAI,aAAa,CAAC,UAAU,SAAS,UAAmB,GAAG;GAOzD,IAAI,OAAO,YAAY,eAAA,QAAA,IAAA,aAAwC,cAC7D,oBAAoB,YAAY,SAAS;GAC3C,OAAO;EACT;EAEA,OAAO;CACT,CAAC;AACH;;AAGA,SAAgB,uBACd,MACuC;CACvC,MAAM,SAAS,YAAY;CAC3B,OAAO,eAAgB,OAAO,kBAAkB,MAAM,SAAS,wBAAqD;AACtH;;;;;;;;;;;AAYA,SAAgB,mBAId,WACA,MACA,YACA,UAC2D;CAC3D,MAAM,SAAS,YAAY;CAE3B,OAAO,eAAe;EACpB,MAAM,QAAQ,WAAW;EACzB,IAAI,UAAU,KAAA,GAAW,OAAO;EAMhC,OADuD,OAAO,kBAAkB,MAAM,UAC/E,GAAW,SAAS;CAC7B,CAAC;AACH;;;;;;;;;;;;;;;AAgBA,SAAgB,kBAA0D;CACxE,MAAM,SAAS,YAAY;CAC3B,OAAO,eAAe;EACpB,MAAM,QAAQ,OAAO,OAAO;EAC5B,OAAO,QAAQ,EAAE,cAAc,MAAM,IAAI,CAAC;CAC5C,CAAC;AACH"}
|
|
1
|
+
{"version":3,"file":"context-CTbuwcYs.js","names":[],"sources":["../../src/components/GrConfigProvider/context.ts"],"sourcesContent":["import { computed, getCurrentInstance, inject, type ComputedRef, type InjectionKey } from 'vue'\n\nimport type { GrComponentDefaultsRegistry } from '../../composables/useGrComponentConfig'\n\n/**\n * Контекст `GrConfigProvider` — глобальные дефолты для вложенных GR-компонентов:\n * размер контролов и per-component дефолтные пропсы.\n *\n * Компоненты читают его через {@link useGrConfig} (или хелперы ниже) и используют\n * как fallback, когда соответствующий проп не задан на самом компоненте. Провайдер\n * можно вкладывать — дочерний мержится поверх родительского.\n */\n\n/**\n * Размеры, которыми оперирует провайдер. Это «размеры контролов» — общий\n * знаменатель формных компонентов, а не объединение всех size-шкал пакета\n * (у оверлеев есть свои `xl`/`full`, у слайдера нет `xs`).\n */\nexport const GR_COMPONENT_SIZES = ['xs', 'sm', 'md', 'lg'] as const\n\nexport type GrComponentSize = typeof GR_COMPONENT_SIZES[number]\n\n/**\n * Реестр компонентов с настраиваемыми через конфиг пропами.\n *\n * Объявлен в `composables/useGrComponentConfig` — там же, куда его дополняют\n * и компоненты пакета, и companion-пакеты. Здесь только реэкспорт для тех, кто\n * работает с контекстом провайдера напрямую.\n */\nexport type { GrComponentDefaultsRegistry }\n\n/** Имя компонента, у которого есть настраиваемые через конфиг пропы. */\nexport type GrConfigurableComponent = keyof GrComponentDefaultsRegistry\n\n/**\n * Дефолтные пропсы по имени компонента: `{ GrButton: { variant: 'secondary' } }`.\n *\n * Набор ключей закрыт реестром, а не `Record<string, unknown>`: через конфиг\n * должны настраиваться только «оформительские» пропы. Пустить туда что угодно —\n * значит разрешить задать глобальный `modelValue` или обработчик и получить баг,\n * который ищется часами.\n */\nexport type GrComponentDefaults = {\n [TComponent in GrConfigurableComponent]?: Partial<GrComponentDefaultsRegistry[TComponent]>\n}\n\ntype GrDefaultsOf<TComponent extends GrConfigurableComponent> = Partial<GrComponentDefaultsRegistry[TComponent]>\n\nexport interface GrConfigContext {\n /** Дефолтный размер контролов (если проп `size` не задан на компоненте). */\n size: ComputedRef<GrComponentSize | undefined>\n /** Дефолтные пропсы по компонентам. */\n componentDefaults: ComputedRef<GrComponentDefaults>\n /**\n * Тема поддерева (`data-theme`). Необязательна: тип публичный, и контекст\n * строят руками — например хост императивных диалогов.\n */\n theme?: ComputedRef<string | undefined>\n /**\n * Куда монтируются оверлеи поддерева (`usePortalTarget`). Необязательно, как\n * и `theme`: контекст строят руками — например хост императивных диалогов.\n */\n portalTarget?: ComputedRef<string | HTMLElement | undefined>\n}\n\nexport const GR_CONFIG_KEY: InjectionKey<GrConfigContext> = Symbol('gr-config')\n\n/**\n * Пустой конфиг: когда провайдера в дереве нет, всё разрешается в `undefined`,\n * а компоненты падают на собственные дефолты.\n *\n * `computed` здесь не роскошь: контекст типизирован рефами, и потребитель вправе\n * прогнать `size` через `unref()` или `watch()`. Плоский объект `{ value: … }`\n * не пройдёт проверку `isRef`, и такой код молча получит сам объект вместо\n * значения — поэтому «просто константа» тут не подходит.\n *\n * А вот пустые значения заморожены, и это не педантизм: `computed` без\n * зависимостей вычисляется один раз и отдаёт **один и тот же** объект всем\n * компонентам без провайдера. Незамороженный, он позволил бы одному потребителю\n * записать в него ключ и тем самым подменить дефолты всему приложению.\n */\nconst EMPTY_COMPONENT_DEFAULTS: GrComponentDefaults = Object.freeze({})\n\nconst EMPTY_CONFIG: GrConfigContext = {\n size: computed(() => undefined),\n componentDefaults: computed(() => EMPTY_COMPONENT_DEFAULTS),\n theme: computed(() => undefined),\n portalTarget: computed(() => undefined),\n}\n\n/** Возвращает ближайший `GrConfigProvider` или пустой конфиг, если провайдера нет. */\nexport function useGrConfig(): GrConfigContext {\n return inject(GR_CONFIG_KEY, EMPTY_CONFIG)\n}\n\n/**\n * Источник конфига для {@link resolveGrConfig}: сам контекст, `AppContext` или\n * инстанс компонента — у двух последних читается `provides`.\n */\nexport type GrConfigSource = GrConfigContext | { provides?: Record<symbol | string, unknown> }\n\nfunction isGrConfigContext(source: unknown): source is GrConfigContext {\n return typeof (source as GrConfigContext | null)?.componentDefaults?.value === 'object'\n}\n\n/**\n * Конфиг там, где `inject` недоступен — вне `setup`: в директивах, императивных\n * сервисах, утилитах. Порядок: явный контекст → `provides` источника → `inject`\n * (если есть активный инстанс) → пустой конфиг.\n *\n * Важно понимать границу: `provides` у `AppContext` содержит только то, что\n * роздано через `app.provide()`. Значения от `<GrConfigProvider>` живут в дереве\n * компонентов, и достать их можно лишь оттуда, где это дерево ещё есть — то есть\n * захватом в `setup`. Просто передать `appContext` в отрыве от дерева\n * недостаточно; см. `SPEC-GrConfig-resolver.md`.\n */\nexport function resolveGrConfig(source?: GrConfigSource | null): GrConfigContext {\n if (isGrConfigContext(source)) return source\n\n const provides = source?.provides\n if (provides) {\n const fromProvides = provides[GR_CONFIG_KEY as symbol] as GrConfigContext | undefined\n return isGrConfigContext(fromProvides) ? fromProvides : EMPTY_CONFIG\n }\n\n if (getCurrentInstance()) return inject(GR_CONFIG_KEY, EMPTY_CONFIG)\n\n return EMPTY_CONFIG\n}\n\nexport type UseGrComponentSizeOptions<TSize extends string> = {\n /**\n * Имя компонента, чтобы учесть точечный `componentDefaults[Component].size`.\n * Без него читается только глобальный `size` провайдера.\n */\n component?: GrConfigurableComponent\n /** Размер, когда ни проп, ни конфиг ничего не дали. По умолчанию `md`. */\n fallback?: TSize\n /**\n * Размеры, которые компонент реально умеет. Значение из конфига вне этого\n * списка игнорируется в пользу `fallback`.\n *\n * Обязателен для компонентов, у которых size-шкала уже общей (`GrSlider`,\n * `GrRating`, `GrSwitch`, `GrLink`, `GrStatistic` не знают про `xs`): без него\n * `<GrConfigProvider size=\"xs\">` дал бы `sizeMap['xs'] === undefined`, то есть\n * компонент без размерных классов — молча, без ошибки сборки.\n */\n supported?: readonly TSize[]\n}\n\n// Предупреждаем один раз на уникальную пару «размер + список поддерживаемых»,\n// иначе список из сотни контролов зальёт консоль одинаковыми сообщениями.\nconst warnedUnsupportedSizes = new Set<string>()\n\n/** Сброс дедупликации предупреждений. Внутреннее API — нужно тестам. */\nexport function resetUnsupportedSizeWarnings(): void {\n warnedUnsupportedSizes.clear()\n}\n\nfunction warnUnsupportedSize(size: string, supported: readonly string[]): void {\n const key = `${size}|${supported.join(',')}`\n if (warnedUnsupportedSizes.has(key)) return\n warnedUnsupportedSizes.add(key)\n\n console.warn(\n `[granularity] GrConfigProvider size=\"${size}\" is not supported by this component `\n + `(supported: ${supported.join(', ')}); falling back to its own default.`,\n )\n}\n\n/**\n * Эффективный размер компонента. Приоритет:\n * локальный проп → `componentDefaults[Component].size` → глобальный `size`\n * провайдера → `fallback`. Точечная настройка компонента должна побеждать\n * общую — иначе `componentDefaults` нельзя было бы использовать как исключение\n * из глобального правила.\n *\n * Передавайте `size` геттером, чтобы сохранить реактивность.\n *\n * Локальный проп не проверяется по `supported`: он уже сужен типом пропа самого\n * компонента, и передать туда лишнее — явная ошибка вызывающего кода. Проверка\n * нужна конфигу: это глобальный канал, который не знает, кто его читает.\n */\nexport function useGrComponentSize<TSize extends string = GrComponentSize>(\n localSize: () => TSize | undefined,\n options: UseGrComponentSizeOptions<TSize> = {},\n): ComputedRef<TSize> {\n // Все size-шкалы пакета содержат `md`, поэтому он безопасен как общий дефолт.\n const { component, fallback = 'md' as TSize, supported } = options\n const config = useGrConfig()\n\n return computed(() => {\n const local = localSize()\n if (local !== undefined) return local\n\n const fromComponentDefaults = component\n ? (config.componentDefaults.value[component] as { size?: TSize } | undefined)?.size\n : undefined\n\n const fromConfig = fromComponentDefaults ?? config.size.value\n if (fromConfig === undefined) return fallback\n\n if (supported && !supported.includes(fromConfig as TSize)) {\n // Текст предупреждения и его дедуп живут прямо под гардом, а не в общей\n // функции: `__GR_DEV__` разворачивается в условие на сборке, бандлер\n // потребителя сворачивает его в `false` и выкидывает ветку целиком.\n // Почему не рантайм-хелпер — в `vite.config.ts`, у самого `define`.\n if (__GR_DEV__)\n warnUnsupportedSize(fromConfig, supported)\n return fallback\n }\n\n return fromConfig as TSize\n })\n}\n\n/** Дефолтные пропсы конкретного компонента из ближайшего провайдера. */\nexport function useGrComponentDefaults<TComponent extends GrConfigurableComponent>(\n name: TComponent,\n): ComputedRef<GrDefaultsOf<TComponent>> {\n const config = useGrConfig()\n return computed(() => (config.componentDefaults.value[name] ?? EMPTY_COMPONENT_DEFAULTS) as GrDefaultsOf<TComponent>)\n}\n\n/**\n * Эффективное значение «оформительского» пропа: локальный проп →\n * `componentDefaults[Component][prop]` → собственный дефолт компонента.\n *\n * Обязательное условие на стороне компонента: у такого пропа в `withDefaults`\n * должен стоять `undefined`, а «настоящий» дефолт — переехать сюда, в `fallback`.\n * Иначе конфиг не сработает никогда: Vue отдаёт `props.x` уже с подставленным\n * дефолтом, и отличить «пользователь передал значение» от «сработал дефолт»\n * изнутри компонента невозможно.\n */\nexport function useGrComponentProp<\n TComponent extends GrConfigurableComponent,\n TProp extends keyof GrDefaultsOf<TComponent>,\n>(\n component: TComponent,\n prop: TProp,\n localValue: () => GrDefaultsOf<TComponent>[TProp],\n fallback: NonNullable<GrDefaultsOf<TComponent>[TProp]>,\n): ComputedRef<NonNullable<GrDefaultsOf<TComponent>[TProp]>> {\n const config = useGrConfig()\n\n return computed(() => {\n const local = localValue()\n if (local !== undefined) return local as NonNullable<GrDefaultsOf<TComponent>[TProp]>\n\n // Промежуточная аннотация (а не `as`) нужна, чтобы TS не разворачивал\n // `GrComponentDefaults[TComponent]` в объединение всех блоков — по нему\n // generic-ключ `TProp` уже не проиндексировать.\n const defaults: GrDefaultsOf<TComponent> | undefined = config.componentDefaults.value[component]\n return defaults?.[prop] ?? fallback\n })\n}\n\n/**\n * Атрибут темы для **телепортируемого** корня панели.\n *\n * Панель уезжает в `body`, то есть вне DOM-поддерева провайдера, и `data-theme`\n * с его обёртки на неё не наследуется. В дереве компонентов она при этом\n * остаётся внутри — `inject` работает, — поэтому тему панель ставит себе сама.\n * Без этого «тёмный остров» ломался бы на первом же открытом дропдауне.\n *\n * ```vue\n * <teleport to=\"body\">\n * <div v-bind=\"themeAttrs\">…</div>\n * </teleport>\n * ```\n */\nexport function useGrThemeAttrs(): ComputedRef<{ 'data-theme'?: string }> {\n const config = useGrConfig()\n return computed(() => {\n const theme = config.theme?.value\n return theme ? { 'data-theme': theme } : {}\n })\n}\n"],"mappings":";;AAiEA,IAAa,gBAA+C,OAAO,WAAW;;;;;;;;;;;;;;;AAgB9E,IAAM,2BAAgD,OAAO,OAAO,CAAC,CAAC;AAEtE,IAAM,eAAgC;CACpC,MAAM,eAAe,KAAA,CAAS;CAC9B,mBAAmB,eAAe,wBAAwB;CAC1D,OAAO,eAAe,KAAA,CAAS;CAC/B,cAAc,eAAe,KAAA,CAAS;AACxC;;AAGA,SAAgB,cAA+B;CAC7C,OAAO,OAAO,eAAe,YAAY;AAC3C;AAQA,SAAS,kBAAkB,QAA4C;CACrE,OAAO,OAAQ,QAAmC,mBAAmB,UAAU;AACjF;;;;;;;;;;;;AAaA,SAAgB,gBAAgB,QAAiD;CAC/E,IAAI,kBAAkB,MAAM,GAAG,OAAO;CAEtC,MAAM,WAAW,QAAQ;CACzB,IAAI,UAAU;EACZ,MAAM,eAAe,SAAS;EAC9B,OAAO,kBAAkB,YAAY,IAAI,eAAe;CAC1D;CAEA,IAAI,mBAAmB,GAAG,OAAO,OAAO,eAAe,YAAY;CAEnE,OAAO;AACT;AAwBA,IAAM,yCAAyB,IAAI,IAAY;AAO/C,SAAS,oBAAoB,MAAc,WAAoC;CAC7E,MAAM,MAAM,GAAG,KAAK,GAAG,UAAU,KAAK,GAAG;CACzC,IAAI,uBAAuB,IAAI,GAAG,GAAG;CACrC,uBAAuB,IAAI,GAAG;CAE9B,QAAQ,KACN,wCAAwC,KAAK,mDAC5B,UAAU,KAAK,IAAI,EAAE,oCACxC;AACF;;;;;;;;;;;;;;AAeA,SAAgB,mBACd,WACA,UAA4C,CAAC,GACzB;CAEpB,MAAM,EAAE,WAAW,WAAW,MAAe,cAAc;CAC3D,MAAM,SAAS,YAAY;CAE3B,OAAO,eAAe;EACpB,MAAM,QAAQ,UAAU;EACxB,IAAI,UAAU,KAAA,GAAW,OAAO;EAMhC,MAAM,cAJwB,YACzB,OAAO,kBAAkB,MAAM,UAAU,EAAmC,OAC7E,KAAA,MAEwC,OAAO,KAAK;EACxD,IAAI,eAAe,KAAA,GAAW,OAAO;EAErC,IAAI,aAAa,CAAC,UAAU,SAAS,UAAmB,GAAG;GAKzD,IAAA,OAAA,YAAA,eAAA,QAAA,IAAA,aAAA,cACE,oBAAoB,YAAY,SAAS;GAC3C,OAAO;EACT;EAEA,OAAO;CACT,CAAC;AACH;;AAGA,SAAgB,uBACd,MACuC;CACvC,MAAM,SAAS,YAAY;CAC3B,OAAO,eAAgB,OAAO,kBAAkB,MAAM,SAAS,wBAAqD;AACtH;;;;;;;;;;;AAYA,SAAgB,mBAId,WACA,MACA,YACA,UAC2D;CAC3D,MAAM,SAAS,YAAY;CAE3B,OAAO,eAAe;EACpB,MAAM,QAAQ,WAAW;EACzB,IAAI,UAAU,KAAA,GAAW,OAAO;EAMhC,OADuD,OAAO,kBAAkB,MAAM,UAC/E,GAAW,SAAS;CAC7B,CAAC;AACH;;;;;;;;;;;;;;;AAgBA,SAAgB,kBAA0D;CACxE,MAAM,SAAS,YAAY;CAC3B,OAAO,eAAe;EACpB,MAAM,QAAQ,OAAO,OAAO;EAC5B,OAAO,QAAQ,EAAE,cAAc,MAAM,IAAI,CAAC;CAC5C,CAAC;AACH"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
//#region src/i18n/locales/en.json
|
|
2
|
+
var chip = {
|
|
3
|
+
"remove": "Remove",
|
|
4
|
+
"removeNamed": "Remove {label}"
|
|
5
|
+
};
|
|
2
6
|
var common = {
|
|
3
7
|
"confirm": "Confirm",
|
|
4
8
|
"cancel": "Cancel",
|
|
@@ -7,6 +11,12 @@ var common = {
|
|
|
7
11
|
"close": "Close"
|
|
8
12
|
};
|
|
9
13
|
var loading = { "defaultText": "Loading..." };
|
|
14
|
+
var steps = {
|
|
15
|
+
"label": "Progress",
|
|
16
|
+
"status": "Step {step} of {count}",
|
|
17
|
+
"completed": "completed",
|
|
18
|
+
"error": "has errors"
|
|
19
|
+
};
|
|
10
20
|
var treeSelect = {
|
|
11
21
|
"filterPlaceholder": "Search…",
|
|
12
22
|
"empty": "No data",
|
|
@@ -312,9 +322,12 @@ var jsonViewer = {
|
|
|
312
322
|
"copyFailed": "Could not copy value",
|
|
313
323
|
"moreItems": "more"
|
|
314
324
|
};
|
|
325
|
+
var contextMenu = { "label": "Context menu" };
|
|
315
326
|
var en_default = {
|
|
327
|
+
chip,
|
|
316
328
|
common,
|
|
317
329
|
loading,
|
|
330
|
+
steps,
|
|
318
331
|
treeSelect,
|
|
319
332
|
badgeWrap,
|
|
320
333
|
avatar,
|
|
@@ -362,7 +375,8 @@ var en_default = {
|
|
|
362
375
|
emptyState,
|
|
363
376
|
sortable,
|
|
364
377
|
codeBlock,
|
|
365
|
-
jsonViewer
|
|
378
|
+
jsonViewer,
|
|
379
|
+
contextMenu
|
|
366
380
|
};
|
|
367
381
|
//#endregion
|
|
368
|
-
export { autocomplete, avatar, badgeWrap, bottomNav, breadcrumbs, button, codeBlock, collapse, colorPicker, colors, commandPalette, common, dataTable, en_default as default, dialog, drawer, emptyState, fileUpload, fileValidation, form, formErrorBanner, formFile, imageViewer, input, inputTag, jsonViewer, kbd, link, list, loading, modal, navbar, numberInput, pagination, rating, responseError, select, sidebar, slider, sortable, splitter, statistic, table, tabs, textarea, timeline, toaster, tree, treeSelect, uploadErrorBanner };
|
|
382
|
+
export { autocomplete, avatar, badgeWrap, bottomNav, breadcrumbs, button, chip, codeBlock, collapse, colorPicker, colors, commandPalette, common, contextMenu, dataTable, en_default as default, dialog, drawer, emptyState, fileUpload, fileValidation, form, formErrorBanner, formFile, imageViewer, input, inputTag, jsonViewer, kbd, link, list, loading, modal, navbar, numberInput, pagination, rating, responseError, select, sidebar, slider, sortable, splitter, statistic, steps, table, tabs, textarea, timeline, toaster, tree, treeSelect, uploadErrorBanner };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en-NpP9e7lC.js","names":[],"sources":["../../src/i18n/locales/en.json"],"sourcesContent":["{\n \"chip\": {\n \"remove\": \"Remove\",\n \"removeNamed\": \"Remove {label}\"\n },\n \"common\": {\n \"confirm\": \"Confirm\",\n \"cancel\": \"Cancel\",\n \"add\": \"Add\",\n \"clear\": \"Clear\",\n \"close\": \"Close\"\n },\n \"loading\": {\n \"defaultText\": \"Loading...\"\n },\n \"steps\": {\n \"label\": \"Progress\",\n \"status\": \"Step {step} of {count}\",\n \"completed\": \"completed\",\n \"error\": \"has errors\"\n },\n \"treeSelect\": {\n \"filterPlaceholder\": \"Search…\",\n \"empty\": \"No data\",\n \"loading\": \"Loading…\"\n },\n \"badgeWrap\": {\n \"count\": \"{count} new\"\n },\n \"avatar\": {\n \"group\": \"People\",\n \"groupOverflow\": \"and {count} more\",\n \"status\": {\n \"online\": \"online\",\n \"offline\": \"offline\",\n \"busy\": \"busy\",\n \"away\": \"away\"\n }\n },\n \"tree\": {\n \"drag\": \"Drag\",\n \"expand\": \"Expand\",\n \"collapse\": \"Collapse\",\n \"moved\": \"Moved {label}\"\n },\n \"select\": {\n \"customValuePlaceholder\": \"Add value…\",\n \"addOption\": \"Add \\\"{value}\\\"\",\n \"clearOption\": \"None\",\n \"searchPlaceholder\": \"Search…\",\n \"loading\": \"Loading…\",\n \"noResults\": \"No results\",\n \"removeTag\": \"Remove {label}\"\n },\n \"dataTable\": {\n \"loading\": \"Loading…\",\n \"empty\": \"No data\",\n \"selectAll\": \"Select all rows\",\n \"selectRow\": \"Select row\",\n \"sortAsc\": \"Activate to sort ascending\",\n \"sortDesc\": \"Activate to sort descending\",\n \"sortNone\": \"Activate to remove sorting\",\n \"moveColumn\": \"Move column {label}\",\n \"columnMoved\": \"Column {label} moved to position {position} of {count}\",\n \"resizeColumn\": \"Width of column {label}\",\n \"columnResized\": \"Column {label} is {width} pixels wide\"\n },\n \"breadcrumbs\": {\n \"label\": \"Breadcrumb\",\n \"expand\": \"Show hidden path\"\n },\n \"autocomplete\": {\n \"loading\": \"Loading…\",\n \"noResults\": \"No results\",\n \"addOption\": \"Add \\\"{value}\\\"\",\n \"removeValue\": \"Remove {label}\",\n \"typeMore\": {\n \"one\": \"Type at least {n} character\",\n \"other\": \"Type at least {n} characters\"\n }\n },\n \"form\": {\n \"required\": \"This field is required\",\n \"min\": \"Minimum is {min}\",\n \"max\": \"Maximum is {max}\",\n \"len\": \"Length must be {len}\",\n \"pattern\": \"Invalid format\",\n \"email\": \"Enter a valid email\",\n \"url\": \"Enter a valid URL\",\n \"file\": \"Invalid file\",\n \"invalid\": \"Invalid value\",\n \"readonly\": \"Read only\",\n \"validating\": \"Checking…\"\n },\n \"dialog\": {\n \"confirm\": {\n \"title\": \"Confirm\"\n },\n \"prompt\": {\n \"title\": \"Prompt\",\n \"label\": \"Value\",\n \"required\": \"Enter a value.\"\n },\n \"ok\": \"OK\"\n },\n \"switch\": {\n \"loading\": \"Saving…\"\n },\n \"slider\": {\n \"min\": \"min\",\n \"max\": \"max\"\n },\n \"sidebar\": {\n \"expand\": \"Expand sidebar\",\n \"collapse\": \"Collapse sidebar\"\n },\n \"splitter\": {\n \"label\": \"Resize panels\"\n },\n \"statistic\": {\n \"trendUp\": \"Increase\",\n \"trendDown\": \"Decrease\",\n \"trendFlat\": \"No change\"\n },\n \"pagination\": {\n \"label\": \"Pagination\",\n \"pageSize\": \"Page size\",\n \"prev\": \"Prev\",\n \"next\": \"Next\",\n \"page\": \"Page {n}\",\n \"first\": \"First page\",\n \"last\": \"Last page\",\n \"jumpTo\": \"Go to\",\n \"total\": \"{from}–{to} of {total}\",\n \"status\": \"Page {page} of {count}\"\n },\n \"navbar\": {\n \"openMenu\": \"Open menu\"\n },\n \"responseError\": {\n \"networkTitle\": \"No connection to the server\",\n \"networkMessage\": \"Check your internet connection and try again.\",\n \"abortedTitle\": \"Request cancelled\",\n \"abortedMessage\": \"The request was cancelled.\",\n \"validationTitle\": \"Check the data\",\n \"validationMessage\": \"The server returned a validation error. Fix the fields and try again.\",\n \"clientTitle\": \"Request error\",\n \"clientMessage\": \"The server rejected the request.\",\n \"serverTitle\": \"Server error\",\n \"serverMessage\": \"A server error occurred. Please try again.\",\n \"unknownTitle\": \"Something went wrong\",\n \"unknownMessage\": \"The operation could not be completed. Please try again.\",\n \"statusLabel\": \"HTTP {status}\",\n \"retryLabel\": \"Retry\",\n \"dismissLabel\": \"Dismiss\"\n },\n \"colors\": {\n \"neutral\": \"Neutral\",\n \"success\": \"Success\",\n \"warning\": \"Warning\",\n \"danger\": \"Danger\",\n \"info\": \"Info\",\n \"primary\": \"Primary\",\n \"slate\": \"Slate\",\n \"azure\": \"Azure\"\n },\n \"drawer\": {\n \"title\": \"Drawer\"\n },\n \"modal\": {\n \"title\": \"Dialog\"\n },\n \"numberInput\": {\n \"increase\": \"Increase\",\n \"decrease\": \"Decrease\"\n },\n \"toaster\": {\n \"dismiss\": \"Dismiss\",\n \"region\": \"Notifications\"\n },\n \"inputTag\": {\n \"removeTag\": \"Remove tag\",\n \"removeTagNamed\": \"Remove tag {tag}\",\n \"clearAll\": \"Clear all tags\",\n \"added\": \"Tag added: {tag}\",\n \"addedMany\": \"{count} tags added\",\n \"removed\": \"Tag removed: {tag}\",\n \"cleared\": \"All tags removed\",\n \"limitReached\": \"Tag limit reached\"\n },\n \"fileUpload\": {\n \"placeholder\": \"Drag files here or click to select\",\n \"progress\": \"Upload progress\",\n \"uploading\": \"Uploading…\",\n \"success\": \"Upload complete\",\n \"error\": \"Upload failed\",\n \"remove\": \"Remove {fileName}\",\n \"retry\": \"Retry upload\",\n \"retryFile\": \"Retry {fileName}\",\n \"abortFile\": \"Cancel upload of {fileName}\",\n \"statusPending\": \"Pending\",\n \"statusUploading\": \"Uploading\",\n \"statusSuccess\": \"Uploaded\",\n \"statusError\": \"Failed\"\n },\n \"formFile\": {\n \"upload\": \"Upload file\",\n \"change\": \"Change file\",\n \"remove\": \"Remove\",\n \"clearAll\": \"Clear all\",\n \"placeholder\": \"No files selected\",\n \"validateError\": \"Failed to validate dropped files\",\n \"removeFile\": \"Remove {fileName}\"\n },\n \"imageViewer\": {\n \"close\": \"Close image viewer\",\n \"prev\": \"Previous image\",\n \"next\": \"Next image\",\n \"zoomIn\": \"Zoom in\",\n \"zoomOut\": \"Zoom out\",\n \"resetZoom\": \"Reset zoom\",\n \"zoomToNatural\": \"Actual size (1:1)\",\n \"rotateLeft\": \"Rotate left\",\n \"rotateRight\": \"Rotate right\",\n \"download\": \"Download image\",\n \"empty\": \"No image\",\n \"label\": \"Image viewer\",\n \"position\": \"Image {index} of {total}\"\n },\n \"formErrorBanner\": {\n \"validationTitle\": \"Check the form fields\",\n \"validationMessage\": \"The server rejected the data. Fix the highlighted fields and try again.\",\n \"clientTitle\": \"Failed to save\",\n \"serverTitle\": \"Save error\",\n \"serverMessage\": \"Could not save the data. Please try again later.\"\n },\n \"uploadErrorBanner\": {\n \"networkTitle\": \"Failed to upload files\",\n \"networkMessage\": \"Check your connection and try again.\",\n \"validationTitle\": \"Files did not pass validation\",\n \"validationMessage\": \"Some of the files do not meet the requirements.\",\n \"serverTitle\": \"Upload error on the server\",\n \"serverMessage\": \"The server could not process the upload. Please try again.\"\n },\n \"input\": {\n \"clear\": \"Clear\",\n \"showPassword\": \"Show password\",\n \"hidePassword\": \"Hide password\",\n \"limitReached\": \"Character limit reached\"\n },\n \"textarea\": {\n \"lines\": {\n \"one\": \"{n} line\",\n \"other\": \"{n} lines\"\n }\n },\n \"rating\": {\n \"label\": \"Rating\",\n \"valueText\": \"{value} of {max}\",\n \"valueTextWithLabel\": \"{value} of {max}, {label}\"\n },\n \"commandPalette\": {\n \"label\": \"Command palette\",\n \"placeholder\": \"Type a command or search…\",\n \"empty\": \"Nothing found\",\n \"recent\": \"Recent\",\n \"loading\": \"Loading…\"\n },\n \"fileValidation\": {\n \"accept\": \"File \\\"{fileName}\\\" does not match accept=\\\"{accept}\\\"\",\n \"extension\": \"File \\\"{fileName}\\\" has disallowed extension \\\".{extension}\\\"\",\n \"mimeType\": \"File \\\"{fileName}\\\" has disallowed mime type \\\"{mimeType}\\\"\",\n \"mimeTypeFallback\": \"File \\\"{fileName}\\\" has fallback mime type \\\"{mimeType}\\\"\",\n \"maxFileSize\": \"File \\\"{fileName}\\\" is too large ({size} bytes), maxBytes={maxBytes}\",\n \"maxCount\": \"Too many files selected ({count}), maxCount={maxCount}\",\n \"maxTotalSize\": \"Total files size is too large ({total} bytes), maxTotalSizeBytes={maxBytes}\"\n },\n \"kbd\": {\n \"command\": \"Command\",\n \"option\": \"Option\",\n \"shift\": \"Shift\",\n \"control\": \"Control\",\n \"enter\": \"Enter\",\n \"escape\": \"Escape\",\n \"tab\": \"Tab\",\n \"backspace\": \"Backspace\",\n \"delete\": \"Delete\",\n \"pageUp\": \"Page Up\",\n \"pageDown\": \"Page Down\",\n \"arrowUp\": \"Arrow Up\",\n \"arrowDown\": \"Arrow Down\",\n \"arrowLeft\": \"Arrow Left\",\n \"arrowRight\": \"Arrow Right\",\n \"then\": \"then\"\n },\n \"link\": {\n \"opensInNewTab\": \"opens in a new tab\"\n },\n \"colorPicker\": {\n \"panelLabel\": \"Color picker\",\n \"hue\": \"Hue\",\n \"saturation\": \"Saturation\",\n \"lightness\": \"Lightness\",\n \"opacity\": \"Opacity\",\n \"hexLabel\": \"Hex value\",\n \"presetsLabel\": \"Color presets\",\n \"swatchLabel\": \"Color {color}\"\n },\n \"collapse\": {\n \"empty\": \"Nothing here yet\"\n },\n \"list\": {\n \"empty\": \"Nothing here yet\"\n },\n \"button\": {\n \"loading\": \"Loading…\"\n },\n \"table\": {\n \"empty\": \"Nothing here yet\"\n },\n \"timeline\": {\n \"empty\": \"Nothing here yet\"\n },\n \"tabs\": {\n \"empty\": \"Nothing here yet\",\n \"close\": \"Close tab\"\n },\n \"bottomNav\": {\n \"label\": \"Bottom navigation\",\n \"badge\": \"{count} new\"\n },\n \"emptyState\": {\n \"title\": \"Nothing here yet\"\n },\n \"sortable\": {\n \"label\": \"Sortable list\",\n \"handle\": \"Reorder\",\n \"empty\": \"Nothing to sort yet\",\n \"grabbed\": \"Grabbed. Position {position} of {count}\",\n \"moved\": \"Position {position} of {count}\",\n \"dropped\": \"Dropped at position {position} of {count}\",\n \"cancelled\": \"Move cancelled\"\n },\n \"codeBlock\": {\n \"copy\": \"Copy code\",\n \"copied\": \"Code copied\",\n \"copyFailed\": \"Could not copy code\"\n },\n \"jsonViewer\": {\n \"search\": \"Search key or value\",\n \"expandAll\": \"Expand all\",\n \"collapseAll\": \"Collapse all\",\n \"copy\": \"Copy value\",\n \"copied\": \"Value copied\",\n \"copyFailed\": \"Could not copy value\",\n \"moreItems\": \"more\"\n },\n \"contextMenu\": {\n \"label\": \"Context menu\"\n }\n}\n"],"mappings":""}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
//#region src/i18n/locales/es.json
|
|
2
|
+
var chip = {
|
|
3
|
+
"remove": "Quitar",
|
|
4
|
+
"removeNamed": "Quitar {label}"
|
|
5
|
+
};
|
|
2
6
|
var common = {
|
|
3
7
|
"confirm": "Confirmar",
|
|
4
8
|
"cancel": "Cancelar",
|
|
@@ -7,6 +11,12 @@ var common = {
|
|
|
7
11
|
"close": "Cerrar"
|
|
8
12
|
};
|
|
9
13
|
var loading = { "defaultText": "Cargando..." };
|
|
14
|
+
var steps = {
|
|
15
|
+
"label": "Progreso",
|
|
16
|
+
"status": "Paso {step} de {count}",
|
|
17
|
+
"completed": "completado",
|
|
18
|
+
"error": "tiene errores"
|
|
19
|
+
};
|
|
10
20
|
var treeSelect = {
|
|
11
21
|
"filterPlaceholder": "Buscar…",
|
|
12
22
|
"empty": "Sin datos",
|
|
@@ -314,9 +324,12 @@ var jsonViewer = {
|
|
|
314
324
|
"copyFailed": "No se pudo copiar el valor",
|
|
315
325
|
"moreItems": "más"
|
|
316
326
|
};
|
|
327
|
+
var contextMenu = { "label": "Menú contextual" };
|
|
317
328
|
var es_default = {
|
|
329
|
+
chip,
|
|
318
330
|
common,
|
|
319
331
|
loading,
|
|
332
|
+
steps,
|
|
320
333
|
treeSelect,
|
|
321
334
|
badgeWrap,
|
|
322
335
|
avatar,
|
|
@@ -364,7 +377,8 @@ var es_default = {
|
|
|
364
377
|
emptyState,
|
|
365
378
|
sortable,
|
|
366
379
|
codeBlock,
|
|
367
|
-
jsonViewer
|
|
380
|
+
jsonViewer,
|
|
381
|
+
contextMenu
|
|
368
382
|
};
|
|
369
383
|
//#endregion
|
|
370
|
-
export { autocomplete, avatar, badgeWrap, bottomNav, breadcrumbs, button, codeBlock, collapse, colorPicker, colors, commandPalette, common, dataTable, es_default as default, dialog, drawer, emptyState, fileUpload, fileValidation, form, formErrorBanner, formFile, imageViewer, input, inputTag, jsonViewer, kbd, link, list, loading, modal, navbar, numberInput, pagination, rating, responseError, select, sidebar, slider, sortable, splitter, statistic, table, tabs, textarea, timeline, toaster, tree, treeSelect, uploadErrorBanner };
|
|
384
|
+
export { autocomplete, avatar, badgeWrap, bottomNav, breadcrumbs, button, chip, codeBlock, collapse, colorPicker, colors, commandPalette, common, contextMenu, dataTable, es_default as default, dialog, drawer, emptyState, fileUpload, fileValidation, form, formErrorBanner, formFile, imageViewer, input, inputTag, jsonViewer, kbd, link, list, loading, modal, navbar, numberInput, pagination, rating, responseError, select, sidebar, slider, sortable, splitter, statistic, steps, table, tabs, textarea, timeline, toaster, tree, treeSelect, uploadErrorBanner };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"es-DaeA2Ql-.js","names":[],"sources":["../../src/i18n/locales/es.json"],"sourcesContent":["{\n \"chip\": {\n \"remove\": \"Quitar\",\n \"removeNamed\": \"Quitar {label}\"\n },\n \"common\": {\n \"confirm\": \"Confirmar\",\n \"cancel\": \"Cancelar\",\n \"add\": \"Añadir\",\n \"clear\": \"Limpiar\",\n \"close\": \"Cerrar\"\n },\n \"loading\": {\n \"defaultText\": \"Cargando...\"\n },\n \"steps\": {\n \"label\": \"Progreso\",\n \"status\": \"Paso {step} de {count}\",\n \"completed\": \"completado\",\n \"error\": \"tiene errores\"\n },\n \"treeSelect\": {\n \"filterPlaceholder\": \"Buscar…\",\n \"empty\": \"Sin datos\",\n \"loading\": \"Cargando…\"\n },\n \"badgeWrap\": {\n \"count\": \"{count} nuevos\"\n },\n \"avatar\": {\n \"group\": \"Personas\",\n \"groupOverflow\": \"y {count} más\",\n \"status\": {\n \"online\": \"en línea\",\n \"offline\": \"sin conexión\",\n \"busy\": \"ocupado\",\n \"away\": \"ausente\"\n }\n },\n \"tree\": {\n \"drag\": \"Arrastrar\",\n \"expand\": \"Expandir\",\n \"collapse\": \"Contraer\",\n \"moved\": \"{label} movido\"\n },\n \"select\": {\n \"customValuePlaceholder\": \"Añadir valor…\",\n \"addOption\": \"Añadir «{value}»\",\n \"clearOption\": \"Ninguno\",\n \"searchPlaceholder\": \"Buscar…\",\n \"loading\": \"Cargando…\",\n \"noResults\": \"Sin resultados\",\n \"removeTag\": \"Quitar {label}\"\n },\n \"dataTable\": {\n \"loading\": \"Cargando…\",\n \"empty\": \"Sin datos\",\n \"selectAll\": \"Seleccionar todas las filas\",\n \"selectRow\": \"Seleccionar fila\",\n \"sortAsc\": \"Active para ordenar de forma ascendente\",\n \"sortDesc\": \"Active para ordenar de forma descendente\",\n \"sortNone\": \"Active para quitar la ordenación\",\n \"moveColumn\": \"Mover la columna {label}\",\n \"columnMoved\": \"Columna {label} movida a la posición {position} de {count}\",\n \"resizeColumn\": \"Ancho de la columna {label}\",\n \"columnResized\": \"La columna {label} mide {width} píxeles\"\n },\n \"breadcrumbs\": {\n \"label\": \"Ruta de navegación\",\n \"expand\": \"Mostrar la ruta oculta\"\n },\n \"autocomplete\": {\n \"loading\": \"Cargando…\",\n \"noResults\": \"Sin resultados\",\n \"addOption\": \"Añadir «{value}»\",\n \"removeValue\": \"Quitar {label}\",\n \"typeMore\": {\n \"one\": \"Escriba al menos {n} carácter\",\n \"many\": \"Escriba al menos {n} de caracteres\",\n \"other\": \"Escriba al menos {n} caracteres\"\n }\n },\n \"form\": {\n \"required\": \"Este campo es obligatorio\",\n \"min\": \"Mínimo {min}\",\n \"max\": \"Máximo {max}\",\n \"len\": \"La longitud debe ser {len}\",\n \"pattern\": \"Formato no válido\",\n \"email\": \"Introduce un correo válido\",\n \"url\": \"Introduce una URL válida\",\n \"file\": \"Archivo no válido\",\n \"invalid\": \"Valor no válido\",\n \"readonly\": \"Solo lectura\",\n \"validating\": \"Comprobando…\"\n },\n \"dialog\": {\n \"confirm\": {\n \"title\": \"Confirmar\"\n },\n \"prompt\": {\n \"title\": \"Aviso\",\n \"label\": \"Valor\",\n \"required\": \"Introduzca un valor.\"\n },\n \"ok\": \"OK\"\n },\n \"switch\": {\n \"loading\": \"Guardando…\"\n },\n \"slider\": {\n \"min\": \"mínimo\",\n \"max\": \"máximo\"\n },\n \"sidebar\": {\n \"expand\": \"Expandir panel\",\n \"collapse\": \"Contraer panel\"\n },\n \"splitter\": {\n \"label\": \"Cambiar el tamaño de los paneles\"\n },\n \"statistic\": {\n \"trendUp\": \"Aumento\",\n \"trendDown\": \"Descenso\",\n \"trendFlat\": \"Sin cambios\"\n },\n \"pagination\": {\n \"label\": \"Paginación\",\n \"pageSize\": \"Tamaño de página\",\n \"prev\": \"Anterior\",\n \"next\": \"Siguiente\",\n \"page\": \"Página {n}\",\n \"first\": \"Primera página\",\n \"last\": \"Última página\",\n \"jumpTo\": \"Ir a\",\n \"total\": \"{from}–{to} de {total}\",\n \"status\": \"Página {page} de {count}\"\n },\n \"navbar\": {\n \"openMenu\": \"Abrir menú\"\n },\n \"responseError\": {\n \"networkTitle\": \"Sin conexión con el servidor\",\n \"networkMessage\": \"Compruebe su conexión a internet e inténtelo de nuevo.\",\n \"abortedTitle\": \"Solicitud cancelada\",\n \"abortedMessage\": \"La solicitud fue cancelada.\",\n \"validationTitle\": \"Compruebe los datos\",\n \"validationMessage\": \"El servidor devolvió un error de validación. Corrija los campos e inténtelo de nuevo.\",\n \"clientTitle\": \"Error de solicitud\",\n \"clientMessage\": \"El servidor rechazó la solicitud.\",\n \"serverTitle\": \"Error del servidor\",\n \"serverMessage\": \"Se produjo un error en el servidor. Inténtelo de nuevo.\",\n \"unknownTitle\": \"Algo salió mal\",\n \"unknownMessage\": \"No se pudo completar la operación. Inténtelo de nuevo.\",\n \"statusLabel\": \"HTTP {status}\",\n \"retryLabel\": \"Reintentar\",\n \"dismissLabel\": \"Descartar\"\n },\n \"colors\": {\n \"neutral\": \"Neutral\",\n \"success\": \"Éxito\",\n \"warning\": \"Advertencia\",\n \"danger\": \"Peligro\",\n \"info\": \"Info\",\n \"primary\": \"Primario\",\n \"slate\": \"Pizarra\",\n \"azure\": \"Azul celeste\"\n },\n \"drawer\": {\n \"title\": \"Panel\"\n },\n \"modal\": {\n \"title\": \"Diálogo\"\n },\n \"numberInput\": {\n \"increase\": \"Aumentar\",\n \"decrease\": \"Disminuir\"\n },\n \"toaster\": {\n \"dismiss\": \"Descartar\",\n \"region\": \"Notificaciones\"\n },\n \"inputTag\": {\n \"removeTag\": \"Eliminar etiqueta\",\n \"removeTagNamed\": \"Eliminar etiqueta {tag}\",\n \"clearAll\": \"Eliminar todas las etiquetas\",\n \"added\": \"Etiqueta añadida: {tag}\",\n \"addedMany\": \"Etiquetas añadidas: {count}\",\n \"removed\": \"Etiqueta eliminada: {tag}\",\n \"cleared\": \"Todas las etiquetas eliminadas\",\n \"limitReached\": \"Límite de etiquetas alcanzado\"\n },\n \"fileUpload\": {\n \"placeholder\": \"Arrastra archivos aquí o haz clic para seleccionar\",\n \"progress\": \"Progreso de carga\",\n \"uploading\": \"Subiendo…\",\n \"success\": \"Carga completada\",\n \"error\": \"Error al cargar\",\n \"remove\": \"Quitar {fileName}\",\n \"retry\": \"Reintentar la carga\",\n \"retryFile\": \"Reintentar {fileName}\",\n \"abortFile\": \"Cancelar la subida de {fileName}\",\n \"statusPending\": \"En cola\",\n \"statusUploading\": \"Subiendo\",\n \"statusSuccess\": \"Subido\",\n \"statusError\": \"Error\"\n },\n \"formFile\": {\n \"upload\": \"Subir archivo\",\n \"change\": \"Cambiar archivo\",\n \"remove\": \"Eliminar\",\n \"clearAll\": \"Limpiar todo\",\n \"placeholder\": \"Ningún archivo seleccionado\",\n \"validateError\": \"No se pudieron validar los archivos soltados\",\n \"removeFile\": \"Quitar {fileName}\"\n },\n \"imageViewer\": {\n \"close\": \"Cerrar el visor de imágenes\",\n \"prev\": \"Imagen anterior\",\n \"next\": \"Imagen siguiente\",\n \"zoomIn\": \"Acercar\",\n \"zoomOut\": \"Alejar\",\n \"resetZoom\": \"Restablecer zoom\",\n \"zoomToNatural\": \"Tamaño real (1:1)\",\n \"rotateLeft\": \"Girar a la izquierda\",\n \"rotateRight\": \"Girar a la derecha\",\n \"download\": \"Descargar imagen\",\n \"empty\": \"Sin imagen\",\n \"label\": \"Visor de imágenes\",\n \"position\": \"Imagen {index} de {total}\"\n },\n \"formErrorBanner\": {\n \"validationTitle\": \"Revisa los campos del formulario\",\n \"validationMessage\": \"El servidor rechazó los datos. Corrige los campos resaltados e inténtalo de nuevo.\",\n \"clientTitle\": \"No se pudo guardar\",\n \"serverTitle\": \"Error al guardar\",\n \"serverMessage\": \"No se pudieron guardar los datos. Inténtalo más tarde.\"\n },\n \"uploadErrorBanner\": {\n \"networkTitle\": \"No se pudieron subir los archivos\",\n \"networkMessage\": \"Comprueba tu conexión e inténtalo de nuevo.\",\n \"validationTitle\": \"Los archivos no pasaron la validación\",\n \"validationMessage\": \"Algunos archivos no cumplen los requisitos.\",\n \"serverTitle\": \"Error de carga en el servidor\",\n \"serverMessage\": \"El servidor no pudo procesar la carga. Inténtalo de nuevo.\"\n },\n \"input\": {\n \"clear\": \"Borrar\",\n \"showPassword\": \"Mostrar contraseña\",\n \"hidePassword\": \"Ocultar contraseña\",\n \"limitReached\": \"Límite de caracteres alcanzado\"\n },\n \"textarea\": {\n \"lines\": {\n \"one\": \"{n} línea\",\n \"many\": \"{n} de líneas\",\n \"other\": \"{n} líneas\"\n }\n },\n \"rating\": {\n \"label\": \"Valoración\",\n \"valueText\": \"{value} de {max}\",\n \"valueTextWithLabel\": \"{value} de {max}, {label}\"\n },\n \"commandPalette\": {\n \"label\": \"Paleta de comandos\",\n \"placeholder\": \"Escribe un comando o busca…\",\n \"empty\": \"No se ha encontrado nada\",\n \"recent\": \"Recientes\",\n \"loading\": \"Cargando…\"\n },\n \"fileValidation\": {\n \"accept\": \"El archivo «{fileName}» no coincide con accept=\\\"{accept}\\\"\",\n \"extension\": \"El archivo «{fileName}» tiene una extensión no permitida «.{extension}»\",\n \"mimeType\": \"El archivo «{fileName}» tiene un tipo MIME no permitido «{mimeType}»\",\n \"mimeTypeFallback\": \"El archivo «{fileName}» tiene un tipo MIME indefinido «{mimeType}»\",\n \"maxFileSize\": \"El archivo «{fileName}» es demasiado grande ({size} bytes), máximo {maxBytes}\",\n \"maxCount\": \"Se han seleccionado demasiados archivos ({count}), máximo: {maxCount}\",\n \"maxTotalSize\": \"El tamaño total de los archivos es demasiado grande ({total} bytes), máximo {maxBytes}\"\n },\n \"kbd\": {\n \"command\": \"Command\",\n \"option\": \"Opción\",\n \"shift\": \"Mayús\",\n \"control\": \"Control\",\n \"enter\": \"Intro\",\n \"escape\": \"Escape\",\n \"tab\": \"Tab\",\n \"backspace\": \"Retroceso\",\n \"delete\": \"Suprimir\",\n \"pageUp\": \"Página arriba\",\n \"pageDown\": \"Página abajo\",\n \"arrowUp\": \"flecha arriba\",\n \"arrowDown\": \"flecha abajo\",\n \"arrowLeft\": \"flecha izquierda\",\n \"arrowRight\": \"flecha derecha\",\n \"then\": \"luego\"\n },\n \"link\": {\n \"opensInNewTab\": \"se abre en una pestaña nueva\"\n },\n \"colorPicker\": {\n \"panelLabel\": \"Selector de color\",\n \"hue\": \"Tono\",\n \"saturation\": \"Saturación\",\n \"lightness\": \"Luminosidad\",\n \"opacity\": \"Opacidad\",\n \"hexLabel\": \"Valor hex\",\n \"presetsLabel\": \"Paleta de colores\",\n \"swatchLabel\": \"Color {color}\"\n },\n \"collapse\": {\n \"empty\": \"Todavía no hay nada\"\n },\n \"list\": {\n \"empty\": \"Todavía no hay nada\"\n },\n \"button\": {\n \"loading\": \"Cargando…\"\n },\n \"table\": {\n \"empty\": \"Todavía no hay nada\"\n },\n \"timeline\": {\n \"empty\": \"Todavía no hay nada\"\n },\n \"tabs\": {\n \"empty\": \"Todavía no hay nada\",\n \"close\": \"Cerrar pestaña\"\n },\n \"bottomNav\": {\n \"label\": \"Navegación inferior\",\n \"badge\": \"{count} nuevos\"\n },\n \"emptyState\": {\n \"title\": \"Todavía no hay nada\"\n },\n \"sortable\": {\n \"label\": \"Lista ordenable\",\n \"handle\": \"Reordenar\",\n \"empty\": \"Nada que ordenar todavía\",\n \"grabbed\": \"Agarrado. Posición {position} de {count}\",\n \"moved\": \"Posición {position} de {count}\",\n \"dropped\": \"Soltado en la posición {position} de {count}\",\n \"cancelled\": \"Movimiento cancelado\"\n },\n \"codeBlock\": {\n \"copy\": \"Copiar código\",\n \"copied\": \"Código copiado\",\n \"copyFailed\": \"No se pudo copiar el código\"\n },\n \"jsonViewer\": {\n \"search\": \"Buscar clave o valor\",\n \"expandAll\": \"Expandir todo\",\n \"collapseAll\": \"Contraer todo\",\n \"copy\": \"Copiar valor\",\n \"copied\": \"Valor copiado\",\n \"copyFailed\": \"No se pudo copiar el valor\",\n \"moreItems\": \"más\"\n },\n \"contextMenu\": {\n \"label\": \"Menú contextual\"\n }\n}\n"],"mappings":""}
|
|
@@ -9,12 +9,12 @@ var GRANULARITY_I18N_BLOCK = "gr";
|
|
|
9
9
|
* can import only the languages they actually need — see the
|
|
10
10
|
* "Authoring localization packages" guide in the docs.
|
|
11
11
|
*/
|
|
12
|
-
var en = { en: { ["gr"]: () => import("./en-
|
|
12
|
+
var en = { en: { ["gr"]: () => import("./en-NpP9e7lC.js") } };
|
|
13
13
|
//#endregion
|
|
14
14
|
//#region src/i18n/messages/ru.ts
|
|
15
|
-
var ru = { ru: { ["gr"]: () => import("./ru-
|
|
15
|
+
var ru = { ru: { ["gr"]: () => import("./ru-Bg9-DPmg.js") } };
|
|
16
16
|
//#endregion
|
|
17
17
|
//#region src/i18n/messages/es.ts
|
|
18
|
-
var es = { es: { ["gr"]: () => import("./es-
|
|
18
|
+
var es = { es: { ["gr"]: () => import("./es-DaeA2Ql-.js") } };
|
|
19
19
|
//#endregion
|
|
20
20
|
export { GRANULARITY_I18N_BLOCK as i, ru as n, en as r, es as t };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"es-
|
|
1
|
+
{"version":3,"file":"es-Do2CNrC2.js","names":[],"sources":["../../src/i18n/messages/const.ts","../../src/i18n/messages/en.ts","../../src/i18n/messages/ru.ts","../../src/i18n/messages/es.ts"],"sourcesContent":["export const GRANULARITY_I18N_BLOCK = 'gr'","import type { LocaleLoaderCollection } from '@feugene/fint-i18n/core'\nimport { GRANULARITY_I18N_BLOCK } from \"./const\";\n\n/**\n * English locale loaders for the playground app.\n *\n * Exported separately from other locales so that consumers (and bundlers)\n * can import only the languages they actually need — see the\n * \"Authoring localization packages\" guide in the docs.\n */\nexport const en = {\n en: {\n [GRANULARITY_I18N_BLOCK]: () => import('../locales/en.json'),\n },\n} satisfies LocaleLoaderCollection\n\nexport default en\n","import type { LocaleLoaderCollection } from '@feugene/fint-i18n/core'\nimport { GRANULARITY_I18N_BLOCK } from \"./const\";\n\nexport const ru = {\n ru: {\n [GRANULARITY_I18N_BLOCK]: () => import('../locales/ru.json'),\n },\n} satisfies LocaleLoaderCollection\n\nexport default ru\n","import type { LocaleLoaderCollection } from '@feugene/fint-i18n/core'\nimport { GRANULARITY_I18N_BLOCK } from \"./const\";\n\nexport const es = {\n es: {\n [GRANULARITY_I18N_BLOCK]: () => import('../locales/es.json'),\n },\n} satisfies LocaleLoaderCollection\n\nexport default es\n"],"mappings":";AAAA,IAAa,yBAAyB;;;;;;;;;;ACUtC,IAAa,KAAK,EACd,IAAI,GAAA,aACgC,OAAO,oBAC3C,EACJ;;;ACXA,IAAa,KAAK,EAChB,IAAI,GAAA,aAC8B,OAAO,oBACzC,EACF;;;ACJA,IAAa,KAAK,EAChB,IAAI,GAAA,aAC8B,OAAO,oBACzC,EACF"}
|