@feugene/granularity 0.16.0 → 0.18.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-Zc_bUvZY2.js → config-BDfTXHo12.js} +1 -1
- package/dist/chunks/{config-Zc_bUvZY2.js.map → config-BDfTXHo12.js.map} +1 -1
- package/dist/chunks/config-BE6n20np2.js.map +1 -0
- package/dist/chunks/{config-CpwwkFBO.js → config-Baj7Wvx-.js} +1 -1
- package/dist/chunks/{config-CpwwkFBO.js.map → config-Baj7Wvx-.js.map} +1 -1
- package/dist/chunks/config-BoNR7_PD2.js.map +1 -0
- package/dist/chunks/{config-DxCTVBfx.js → config-BsPDQ0dS.js} +2 -2
- package/dist/chunks/config-BsPDQ0dS.js.map +1 -0
- package/dist/chunks/config-CN2ULSQL.js.map +1 -0
- package/dist/chunks/{config-Cw6TDzWv2.js → config-COpuWGr_.js} +1 -1
- package/dist/chunks/config-COpuWGr_.js.map +1 -0
- package/dist/chunks/config-D2aNP7Es.js +70 -0
- package/dist/chunks/config-D2aNP7Es.js.map +1 -0
- package/dist/chunks/config-D94Z9po5.js.map +1 -0
- package/dist/chunks/{config-B-g6lT19.js → config-DA6SnEoy.js} +5 -2
- package/dist/chunks/config-DA6SnEoy.js.map +1 -0
- package/dist/chunks/config-DCFvmHEv2.js.map +1 -0
- package/dist/chunks/config-DEvsMTQE.js +150 -0
- package/dist/chunks/config-DEvsMTQE.js.map +1 -0
- package/dist/chunks/{config-CvC0sX8p.js → config-MRvhUl-O.js} +1 -1
- package/dist/chunks/{config-CvC0sX8p.js.map → config-MRvhUl-O.js.map} +1 -1
- package/dist/chunks/config-ScuvHw6k2.js +42 -0
- package/dist/chunks/config-ScuvHw6k2.js.map +1 -0
- package/dist/chunks/config-T3qdQBgU2.js.map +1 -0
- package/dist/chunks/config-eXB87DOi.js.map +1 -0
- package/dist/chunks/{config-D8tSR2uS.js → config-gvq_hWNM.js} +1 -1
- package/dist/chunks/{config-D8tSR2uS.js.map → config-gvq_hWNM.js.map} +1 -1
- package/dist/chunks/context-BSYR7RZs.js.map +1 -1
- package/dist/chunks/{en-B3xMeswz.js → en-COdzxgAX.js} +30 -5
- package/dist/chunks/en-COdzxgAX.js.map +1 -0
- package/dist/chunks/{es-CA-mkU--.js → es-ClqJ-4hr.js} +30 -5
- package/dist/chunks/es-ClqJ-4hr.js.map +1 -0
- package/dist/chunks/{es-Bv8vvqdT.js → es-DGMHwknJ.js} +3 -3
- package/dist/chunks/{es-Bv8vvqdT.js.map → es-DGMHwknJ.js.map} +1 -1
- package/dist/chunks/grKbdStyles-CeZhGQHr.js +43 -0
- package/dist/chunks/grKbdStyles-CeZhGQHr.js.map +1 -0
- package/dist/chunks/{grTextareaStyles-CWI2SqC8.js → grTextareaStyles-iOcHuVMM.js} +2 -2
- package/dist/chunks/{grTextareaStyles-CWI2SqC8.js.map → grTextareaStyles-iOcHuVMM.js.map} +1 -1
- package/dist/chunks/{granular-provider-CtrXGa7c.js → granular-provider-B9nXQCMu.js} +18 -16
- package/dist/chunks/granular-provider-B9nXQCMu.js.map +1 -0
- package/dist/chunks/{keyboard-zYvvyHd4.js → keyboard-DE2yhz_b.js} +10 -1
- package/dist/chunks/keyboard-DE2yhz_b.js.map +1 -0
- package/dist/chunks/{optionFilter-BVY988pC.js → optionFilter-DYw9XPPx.js} +1 -71
- package/dist/chunks/optionFilter-DYw9XPPx.js.map +1 -0
- package/dist/chunks/{useOverlayLayer-BupuP_hs.js → overlayStack-C8cfsqXa.js} +11 -61
- package/dist/chunks/overlayStack-C8cfsqXa.js.map +1 -0
- package/dist/chunks/{ru-COWxgh2A.js → ru-9z8ix45c.js} +30 -5
- package/dist/chunks/ru-9z8ix45c.js.map +1 -0
- package/dist/chunks/useDragSort-0l47h4yb.js +265 -0
- package/dist/chunks/useDragSort-0l47h4yb.js.map +1 -0
- package/dist/chunks/{useModalOverlay-DCM4d3yA.js → useModalOverlay-BTq-0ImG.js} +1 -1
- package/dist/chunks/{useModalOverlay-DCM4d3yA.js.map → useModalOverlay-BTq-0ImG.js.map} +1 -1
- package/dist/components/GrAutocomplete/chunks/{GrAutocomplete-CQ9T7Lly.js → GrAutocomplete-CPEQxmLZ.js} +4 -3
- package/dist/components/GrAutocomplete/chunks/GrAutocomplete-CPEQxmLZ.js.map +1 -0
- package/dist/components/GrAutocomplete/index.js +1 -1
- package/dist/components/GrAutocomplete/styles.css +1 -1
- package/dist/components/GrColorPicker/chunks/{GrColorPicker-bnYBRGk8.js → GrColorPicker-DAdQ-Gc3.js} +4 -4
- package/dist/components/GrColorPicker/chunks/{GrColorPicker-bnYBRGk8.js.map → GrColorPicker-DAdQ-Gc3.js.map} +1 -1
- package/dist/components/GrColorPicker/index.js +2 -2
- package/dist/components/GrCommandPalette/chunks/{GrCommandPalette-MWDYDPNC.js → GrCommandPalette-DMeSqkEv.js} +6 -7
- package/dist/components/GrCommandPalette/chunks/GrCommandPalette-DMeSqkEv.js.map +1 -0
- package/dist/components/GrCommandPalette/index.js +1 -1
- package/dist/components/GrCommandPalette/styles.css +1 -1
- package/dist/components/GrConfigProvider/index.js +2 -2
- package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-DaQmlp1_.js → GrConfirmDialog-hUTi-GdJ.js} +1 -1
- package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-DaQmlp1_.js.map → GrConfirmDialog-hUTi-GdJ.js.map} +1 -1
- package/dist/components/GrConfirmDialog/index.js +1 -1
- package/dist/components/GrDataTable/chunks/{GrDataTable-DVFho9Cj.js → GrDataTable-DzaGLG3A.js} +495 -47
- package/dist/components/GrDataTable/chunks/GrDataTable-DzaGLG3A.js.map +1 -0
- package/dist/components/GrDataTable/index.js +2 -2
- package/dist/components/GrDialog/chunks/{GrDialog-AE1gIZuz.js → GrDialog-MD9Fzy9C.js} +1 -1
- package/dist/components/GrDialog/chunks/{GrDialog-AE1gIZuz.js.map → GrDialog-MD9Fzy9C.js.map} +1 -1
- package/dist/components/GrDialog/index.js +1 -1
- package/dist/components/GrDialogService/chunks/{GrDialogService-B4DYWDkA.js → GrDialogService-DtgUijMj.js} +2 -2
- package/dist/components/GrDialogService/chunks/{GrDialogService-B4DYWDkA.js.map → GrDialogService-DtgUijMj.js.map} +1 -1
- package/dist/components/GrDialogService/index.js +1 -1
- package/dist/components/GrDrawer/chunks/{GrDrawer-DQwi6aRw.js → GrDrawer-DWHdZZzW.js} +2 -2
- package/dist/components/GrDrawer/chunks/{GrDrawer-DQwi6aRw.js.map → GrDrawer-DWHdZZzW.js.map} +1 -1
- package/dist/components/GrDrawer/index.js +2 -2
- package/dist/components/GrDropdown/chunks/{GrDropdown-BLng6V1m.js → GrDropdown-0tJK01Kq.js} +2 -2
- package/dist/components/GrDropdown/chunks/{GrDropdown-BLng6V1m.js.map → GrDropdown-0tJK01Kq.js.map} +1 -1
- package/dist/components/GrDropdown/index.js +1 -1
- package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-BImk2Vs7.js → GrDropdownMenu-VPPrpCoA.js} +1 -1
- package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-BImk2Vs7.js.map → GrDropdownMenu-VPPrpCoA.js.map} +1 -1
- package/dist/components/GrDropdownMenu/index.js +1 -1
- package/dist/components/GrFileUpload/chunks/{GrFileUpload-D0B-BEsd.js → GrFileUpload-DuDzC43S.js} +2 -2
- package/dist/components/GrFileUpload/chunks/{GrFileUpload-D0B-BEsd.js.map → GrFileUpload-DuDzC43S.js.map} +1 -1
- package/dist/components/GrFileUpload/index.js +1 -1
- package/dist/components/GrImageViewer/chunks/{GrImageViewer-BeCnE8XQ.js → GrImageViewer-DE7MBbF8.js} +46 -22
- package/dist/components/GrImageViewer/chunks/GrImageViewer-DE7MBbF8.js.map +1 -0
- package/dist/components/GrImageViewer/index.js +1 -1
- package/dist/components/GrInput/chunks/{GrInput-DD2gYdqS.js → GrInput-2wd7Crs0.js} +1 -1
- package/dist/components/GrInput/chunks/GrInput-2wd7Crs0.js.map +1 -0
- package/dist/components/GrInput/index.js +1 -1
- package/dist/components/GrInputTag/chunks/{GrInputTag-DmNunixz.js → GrInputTag-CyV2eY7Z.js} +20 -33
- package/dist/components/GrInputTag/chunks/GrInputTag-CyV2eY7Z.js.map +1 -0
- package/dist/components/GrInputTag/index.js +1 -1
- package/dist/components/GrKbd/chunks/{GrKbd-DRFPvW3G.js → GrKbd-DU2lBkRV.js} +218 -52
- package/dist/components/GrKbd/chunks/GrKbd-DU2lBkRV.js.map +1 -0
- package/dist/components/GrKbd/index.js +3 -3
- package/dist/components/GrModal/chunks/{GrModal-B8I78T0N.js → GrModal-BbhcsDQ8.js} +1 -1
- package/dist/components/GrModal/chunks/{GrModal-B8I78T0N.js.map → GrModal-BbhcsDQ8.js.map} +1 -1
- package/dist/components/GrModal/index.js +1 -1
- package/dist/components/GrPagination/chunks/{GrPagination-B6N0QZBf.js → GrPagination-waKhxBP7.js} +4 -4
- package/dist/components/GrPagination/chunks/GrPagination-waKhxBP7.js.map +1 -0
- package/dist/components/GrPagination/index.js +1 -1
- package/dist/components/GrPopover/chunks/{GrPopover-B1eRCOoO.js → GrPopover-DuqeoFaI.js} +1 -1
- package/dist/components/GrPopover/chunks/{GrPopover-B1eRCOoO.js.map → GrPopover-DuqeoFaI.js.map} +1 -1
- package/dist/components/GrPopover/index.js +1 -1
- package/dist/components/GrProgressBar/chunks/{GrProgressBar-BiHnaitu.js → GrProgressBar-xwbNM9QB.js} +1 -1
- package/dist/components/GrProgressBar/chunks/GrProgressBar-xwbNM9QB.js.map +1 -0
- package/dist/components/GrProgressBar/index.js +1 -1
- package/dist/components/GrProgressCircle/chunks/{GrProgressCircle-CTogjcHz.js → GrProgressCircle-B8olXRo5.js} +1 -1
- package/dist/components/GrProgressCircle/chunks/{GrProgressCircle-CTogjcHz.js.map → GrProgressCircle-B8olXRo5.js.map} +1 -1
- package/dist/components/GrProgressCircle/index.js +2 -2
- package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-Ct174NVD.js → GrPromptDialog-JVVqBsPY.js} +3 -3
- package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-Ct174NVD.js.map → GrPromptDialog-JVVqBsPY.js.map} +1 -1
- package/dist/components/GrPromptDialog/index.js +1 -1
- package/dist/components/GrRadio/chunks/{GrRadio-DksDro_U.js → GrRadio-DWiRaMzt.js} +8 -32
- package/dist/components/GrRadio/chunks/GrRadio-DWiRaMzt.js.map +1 -0
- package/dist/components/GrRadio/index.js +1 -1
- package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-BOIhejE6.js → GrRadioGroup-DIuBw0wk.js} +34 -27
- package/dist/components/GrRadioGroup/chunks/GrRadioGroup-DIuBw0wk.js.map +1 -0
- package/dist/components/GrRadioGroup/index.js +1 -1
- package/dist/components/GrRating/chunks/{GrRating-JrHXz0Rv.js → GrRating-LarIiwJL.js} +2 -2
- package/dist/components/GrRating/chunks/GrRating-LarIiwJL.js.map +1 -0
- package/dist/components/GrRating/index.js +2 -2
- package/dist/components/GrSegmented/chunks/{GrSegmented-BQIlH5KI.js → GrSegmented-CQw3ijqa.js} +47 -65
- package/dist/components/GrSegmented/chunks/GrSegmented-CQw3ijqa.js.map +1 -0
- package/dist/components/GrSegmented/index.js +1 -1
- package/dist/components/GrSelect/chunks/{GrSelect-aqkPCqjd.js → GrSelect-DAdu044K.js} +4 -3
- package/dist/components/GrSelect/chunks/GrSelect-DAdu044K.js.map +1 -0
- package/dist/components/GrSelect/index.js +1 -1
- package/dist/components/GrSlider/chunks/{GrSlider-DkU9IQSX.js → GrSlider-CyhVsNKn.js} +21 -34
- package/dist/components/GrSlider/chunks/GrSlider-CyhVsNKn.js.map +1 -0
- package/dist/components/GrSlider/index.js +2 -2
- package/dist/components/GrSortableList/chunks/GrSortableList-BefVfWKh.js +276 -0
- package/dist/components/GrSortableList/chunks/GrSortableList-BefVfWKh.js.map +1 -0
- package/dist/components/GrSortableList/index.js +3 -0
- package/dist/components/GrSplitter/chunks/{GrSplitter-7To8jbJ8.js → GrSplitter-BzxVQwbY.js} +17 -37
- package/dist/components/GrSplitter/chunks/GrSplitter-BzxVQwbY.js.map +1 -0
- package/dist/components/GrSplitter/index.js +2 -2
- package/dist/components/GrStatistic/chunks/{GrStatistic-CttyoYPT.js → GrStatistic-J4qLs3TH.js} +1 -1
- package/dist/components/GrStatistic/chunks/{GrStatistic-CttyoYPT.js.map → GrStatistic-J4qLs3TH.js.map} +1 -1
- package/dist/components/GrStatistic/index.js +2 -2
- package/dist/components/GrSwitch/chunks/{GrSwitch-B9TYbiih.js → GrSwitch-DpyvVrZG.js} +1 -1
- package/dist/components/GrSwitch/chunks/{GrSwitch-B9TYbiih.js.map → GrSwitch-DpyvVrZG.js.map} +1 -1
- package/dist/components/GrSwitch/index.js +2 -2
- package/dist/components/GrTabPanels/index.js +1 -1
- package/dist/components/GrTable/chunks/{GrTable-BB-mI_NM.js → GrTable-BfqgwETQ.js} +7 -1
- package/dist/components/GrTable/chunks/GrTable-BfqgwETQ.js.map +1 -0
- package/dist/components/GrTable/index.js +1 -1
- package/dist/components/GrTabs/chunks/{GrTabs-B8CDq2D9.js → GrTabs-TeXaU5Uh.js} +50 -61
- package/dist/components/GrTabs/chunks/GrTabs-TeXaU5Uh.js.map +1 -0
- package/dist/components/GrTabs/index.js +1 -1
- package/dist/components/GrTextarea/chunks/{GrTextarea-DUh5Tlo4.js → GrTextarea-DSvd1nSy.js} +1 -1
- package/dist/components/GrTextarea/chunks/{GrTextarea-DUh5Tlo4.js.map → GrTextarea-DSvd1nSy.js.map} +1 -1
- package/dist/components/GrTextarea/index.js +2 -2
- package/dist/components/GrTimeline/chunks/{GrTimeline-CE9b3s18.js → GrTimeline-B-h2Yanw.js} +1 -1
- package/dist/components/GrTimeline/chunks/{GrTimeline-CE9b3s18.js.map → GrTimeline-B-h2Yanw.js.map} +1 -1
- package/dist/components/GrTimeline/index.js +2 -2
- package/dist/components/GrToaster/chunks/{GrToaster-BKQy3Srm.js → GrToaster-Ct-39hga.js} +113 -12
- package/dist/components/GrToaster/chunks/GrToaster-Ct-39hga.js.map +1 -0
- package/dist/components/GrToaster/index.js +2 -2
- package/dist/components/GrToaster/styles.css +1 -1
- package/dist/components/GrTooltip/chunks/{GrTooltip-DEbejfhA.js → GrTooltip-xAcqs0bP.js} +1 -1
- package/dist/components/GrTooltip/chunks/{GrTooltip-DEbejfhA.js.map → GrTooltip-xAcqs0bP.js.map} +1 -1
- package/dist/components/GrTooltip/index.js +2 -2
- package/dist/components/GrTree/chunks/{GrTree-wfdbvygw.js → GrTree-CaYK8dGZ.js} +124 -92
- package/dist/components/GrTree/chunks/GrTree-CaYK8dGZ.js.map +1 -0
- package/dist/components/GrTree/index.js +1 -1
- package/dist/components/GrTree/styles.css +1 -1
- package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-lLWmAMtI.js → GrTreeSelect-DZp7CqqW.js} +4 -4
- package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-lLWmAMtI.js.map → GrTreeSelect-DZp7CqqW.js.map} +1 -1
- package/dist/components/GrTreeSelect/index.js +2 -2
- package/dist/composables/useComboboxNavigation.js +71 -0
- package/dist/composables/useComboboxNavigation.js.map +1 -0
- package/dist/composables/useDismissible.js +1 -1
- package/dist/composables/useDragGesture.js +55 -0
- package/dist/composables/useDragGesture.js.map +1 -0
- package/dist/composables/useDragSort.js +2 -0
- package/dist/composables/useFloating.js +22 -1
- package/dist/composables/useFloating.js.map +1 -1
- package/dist/composables/useGrComponentConfig.js +2 -0
- package/dist/composables/useGranularityTranslations.js +2 -0
- package/dist/composables/useOverlayLayer.js +64 -1
- package/dist/composables/useOverlayLayer.js.map +1 -0
- package/dist/composables/useRovingFocus.js +150 -0
- package/dist/composables/useRovingFocus.js.map +1 -0
- package/dist/directives/hotkey.js +13 -7
- package/dist/directives/hotkey.js.map +1 -1
- package/dist/granular-provider-node.js +1 -1
- package/dist/granular-provider.js +1 -1
- package/dist/i18n/all.js +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/index.js +67 -58
- package/dist/tokens.js +84 -0
- package/dist/tokens.js.map +1 -1
- package/dist/types/src/components/GrAlert/defaults.d.ts +1 -1
- package/dist/types/src/components/GrAutocomplete/defaults.d.ts +1 -1
- package/dist/types/src/components/GrAvatar/defaults.d.ts +1 -1
- package/dist/types/src/components/GrBadge/defaults.d.ts +1 -1
- package/dist/types/src/components/GrBottomNav/defaults.d.ts +1 -1
- package/dist/types/src/components/GrBreadcrumbs/defaults.d.ts +1 -1
- package/dist/types/src/components/GrButton/defaults.d.ts +1 -1
- package/dist/types/src/components/GrCard/defaults.d.ts +1 -1
- package/dist/types/src/components/GrCheckbox/defaults.d.ts +1 -1
- package/dist/types/src/components/GrCheckboxGroup/defaults.d.ts +1 -1
- package/dist/types/src/components/GrCollapse/defaults.d.ts +1 -1
- package/dist/types/src/components/GrColorPicker/defaults.d.ts +1 -1
- package/dist/types/src/components/GrColorPicker/grColorPickerStyles.d.ts +2 -2
- package/dist/types/src/components/GrCommandPalette/defaults.d.ts +1 -1
- package/dist/types/src/components/GrConfigProvider/context.d.ts +6 -22
- package/dist/types/src/components/GrConfigProvider/index.d.ts +1 -1
- package/dist/types/src/components/GrConfirmDialog/defaults.d.ts +1 -1
- package/dist/types/src/components/GrDataTable/GrDataTable.vue.d.ts +53 -0
- package/dist/types/src/components/GrDataTable/defaults.d.ts +1 -1
- package/dist/types/src/components/GrDataTable/grDataTableStyles.d.ts +39 -0
- package/dist/types/src/components/GrDialog/defaults.d.ts +1 -1
- package/dist/types/src/components/GrDivider/defaults.d.ts +1 -1
- package/dist/types/src/components/GrDrawer/defaults.d.ts +1 -1
- package/dist/types/src/components/GrEmptyState/defaults.d.ts +1 -1
- package/dist/types/src/components/GrFileUpload/defaults.d.ts +1 -1
- package/dist/types/src/components/GrFormField/defaults.d.ts +1 -1
- package/dist/types/src/components/GrFormFile/defaults.d.ts +1 -1
- package/dist/types/src/components/GrFormSection/defaults.d.ts +1 -1
- package/dist/types/src/components/GrIcon/defaults.d.ts +1 -1
- package/dist/types/src/components/GrImageViewer/composables/usePointerGestures.d.ts +1 -0
- package/dist/types/src/components/GrImageViewer/composables/useZoomPan.d.ts +1 -2
- package/dist/types/src/components/GrInput/defaults.d.ts +1 -1
- package/dist/types/src/components/GrInputTag/defaults.d.ts +1 -1
- package/dist/types/src/components/GrKbd/GrKbd.vue.d.ts +18 -3
- package/dist/types/src/components/GrKbd/defaults.d.ts +1 -1
- package/dist/types/src/components/GrKbd/grKbdStyles.d.ts +20 -3
- package/dist/types/src/components/GrKbd/index.d.ts +6 -0
- package/dist/types/src/components/GrLink/defaults.d.ts +1 -1
- package/dist/types/src/components/GrModal/defaults.d.ts +1 -1
- package/dist/types/src/components/GrNumberInput/defaults.d.ts +1 -1
- package/dist/types/src/components/GrPagination/defaults.d.ts +1 -1
- package/dist/types/src/components/GrPopover/GrPopover.vue.d.ts +1 -1
- package/dist/types/src/components/GrPopover/defaults.d.ts +1 -1
- package/dist/types/src/components/GrProgressBar/defaults.d.ts +1 -1
- package/dist/types/src/components/GrProgressCircle/defaults.d.ts +1 -1
- package/dist/types/src/components/GrProgressCircle/grProgressCircleStyles.d.ts +1 -1
- package/dist/types/src/components/GrPromptDialog/defaults.d.ts +1 -1
- package/dist/types/src/components/GrRadio/defaults.d.ts +1 -1
- package/dist/types/src/components/GrRadio/grRadioGroupContext.d.ts +12 -4
- package/dist/types/src/components/GrRadioGroup/defaults.d.ts +1 -1
- package/dist/types/src/components/GrRating/defaults.d.ts +1 -1
- package/dist/types/src/components/GrSegmented/defaults.d.ts +1 -1
- package/dist/types/src/components/GrSelect/defaults.d.ts +1 -1
- package/dist/types/src/components/GrSlider/defaults.d.ts +1 -1
- package/dist/types/src/components/GrSortableList/GrSortableList.vue.d.ts +68 -0
- package/dist/types/src/components/GrSortableList/config.d.ts +1 -0
- package/dist/types/src/components/GrSortableList/grSortableListStyles.d.ts +38 -0
- package/dist/types/src/components/GrSortableList/index.d.ts +9 -0
- package/dist/types/src/components/GrSortableList/safelist.d.ts +1 -0
- package/dist/types/src/components/GrSplitter/defaults.d.ts +1 -1
- package/dist/types/src/components/GrStatistic/defaults.d.ts +1 -1
- package/dist/types/src/components/GrStatistic/grStatisticStyles.d.ts +1 -1
- package/dist/types/src/components/GrSwitch/defaults.d.ts +1 -1
- package/dist/types/src/components/GrTable/GrTable.vue.d.ts +13 -0
- package/dist/types/src/components/GrTable/defaults.d.ts +1 -1
- package/dist/types/src/components/GrTabs/defaults.d.ts +1 -1
- package/dist/types/src/components/GrTextarea/defaults.d.ts +1 -1
- package/dist/types/src/components/GrTextarea/grTextareaStyles.d.ts +2 -2
- package/dist/types/src/components/GrTimeline/defaults.d.ts +1 -1
- package/dist/types/src/components/GrTimeline/grTimelineStyles.d.ts +1 -1
- package/dist/types/src/components/GrToaster/GrToaster.vue.d.ts +8 -0
- package/dist/types/src/components/GrToaster/grToasterStyles.d.ts +27 -0
- package/dist/types/src/components/GrTooltip/defaults.d.ts +1 -1
- package/dist/types/src/components/GrTree/defaults.d.ts +1 -1
- package/dist/types/src/components/GrTree/grTreeInteractionContext.d.ts +0 -1
- package/dist/types/src/components/GrTreeSelect/defaults.d.ts +1 -1
- package/dist/types/src/components/shared/hotkey.d.ts +7 -15
- package/dist/types/src/components/shared/hotkeyTokens.d.ts +37 -0
- package/dist/types/src/composables/internal/dragSortGeometry.d.ts +59 -0
- package/dist/types/src/composables/internal/overlayStack.d.ts +11 -0
- package/dist/types/src/composables/useDragGesture.d.ts +63 -0
- package/dist/types/src/composables/useDragSort.d.ts +80 -0
- package/dist/types/src/composables/useFloating.d.ts +5 -1
- package/dist/types/src/composables/useGrComponentConfig.d.ts +41 -0
- package/dist/types/src/composables/useGranularityTranslations.d.ts +13 -0
- package/dist/types/src/composables/useRovingFocus.d.ts +108 -0
- package/dist/types/src/granular-provider/shared.d.ts +1 -0
- package/dist/types/src/i18n/messages/en.d.ts +48 -0
- package/dist/types/src/i18n/messages/es.d.ts +48 -0
- package/dist/types/src/i18n/messages/ru.d.ts +48 -0
- package/dist/types/src/index.d.ts +12 -0
- package/dist/types/src/internal/keyboard.d.ts +6 -0
- package/dist/web-types.json +201 -3
- package/package.json +31 -3
- package/dist/chunks/config-B-g6lT19.js.map +0 -1
- package/dist/chunks/config-BE6n20np.js.map +0 -1
- package/dist/chunks/config-BNfQwyL4.js +0 -97
- package/dist/chunks/config-BNfQwyL4.js.map +0 -1
- package/dist/chunks/config-BoNR7_PD.js.map +0 -1
- package/dist/chunks/config-CN2ULSQL2.js.map +0 -1
- package/dist/chunks/config-Cw6TDzWv2.js.map +0 -1
- package/dist/chunks/config-D94Z9po52.js.map +0 -1
- package/dist/chunks/config-DCFvmHEv.js.map +0 -1
- package/dist/chunks/config-DxCTVBfx.js.map +0 -1
- package/dist/chunks/config-LGrZIdaZ.js +0 -21
- package/dist/chunks/config-LGrZIdaZ.js.map +0 -1
- package/dist/chunks/config-T3qdQBgU.js.map +0 -1
- package/dist/chunks/config-eXB87DOi2.js.map +0 -1
- package/dist/chunks/en-B3xMeswz.js.map +0 -1
- package/dist/chunks/es-CA-mkU--.js.map +0 -1
- package/dist/chunks/grKbdStyles-DAoxiytu.js +0 -31
- package/dist/chunks/grKbdStyles-DAoxiytu.js.map +0 -1
- package/dist/chunks/granular-provider-CtrXGa7c.js.map +0 -1
- package/dist/chunks/keyboard-zYvvyHd4.js.map +0 -1
- package/dist/chunks/optionFilter-BVY988pC.js.map +0 -1
- package/dist/chunks/ru-COWxgh2A.js.map +0 -1
- package/dist/chunks/useOverlayLayer-BupuP_hs.js.map +0 -1
- package/dist/components/GrAutocomplete/chunks/GrAutocomplete-CQ9T7Lly.js.map +0 -1
- package/dist/components/GrCommandPalette/chunks/GrCommandPalette-MWDYDPNC.js.map +0 -1
- package/dist/components/GrDataTable/chunks/GrDataTable-DVFho9Cj.js.map +0 -1
- package/dist/components/GrImageViewer/chunks/GrImageViewer-BeCnE8XQ.js.map +0 -1
- package/dist/components/GrInput/chunks/GrInput-DD2gYdqS.js.map +0 -1
- package/dist/components/GrInputTag/chunks/GrInputTag-DmNunixz.js.map +0 -1
- package/dist/components/GrKbd/chunks/GrKbd-DRFPvW3G.js.map +0 -1
- package/dist/components/GrPagination/chunks/GrPagination-B6N0QZBf.js.map +0 -1
- package/dist/components/GrProgressBar/chunks/GrProgressBar-BiHnaitu.js.map +0 -1
- package/dist/components/GrRadio/chunks/GrRadio-DksDro_U.js.map +0 -1
- package/dist/components/GrRadioGroup/chunks/GrRadioGroup-BOIhejE6.js.map +0 -1
- package/dist/components/GrRating/chunks/GrRating-JrHXz0Rv.js.map +0 -1
- package/dist/components/GrSegmented/chunks/GrSegmented-BQIlH5KI.js.map +0 -1
- package/dist/components/GrSelect/chunks/GrSelect-aqkPCqjd.js.map +0 -1
- package/dist/components/GrSlider/chunks/GrSlider-DkU9IQSX.js.map +0 -1
- package/dist/components/GrSplitter/chunks/GrSplitter-7To8jbJ8.js.map +0 -1
- package/dist/components/GrTable/chunks/GrTable-BB-mI_NM.js.map +0 -1
- package/dist/components/GrTabs/chunks/GrTabs-B8CDq2D9.js.map +0 -1
- package/dist/components/GrToaster/chunks/GrToaster-BKQy3Srm.js.map +0 -1
- package/dist/components/GrTree/chunks/GrTree-wfdbvygw.js.map +0 -1
- /package/dist/chunks/{config-BE6n20np.js → config-BE6n20np2.js} +0 -0
- /package/dist/chunks/{config-BoNR7_PD.js → config-BoNR7_PD2.js} +0 -0
- /package/dist/chunks/{config-CN2ULSQL2.js → config-CN2ULSQL.js} +0 -0
- /package/dist/chunks/{config-D94Z9po52.js → config-D94Z9po5.js} +0 -0
- /package/dist/chunks/{config-DCFvmHEv.js → config-DCFvmHEv2.js} +0 -0
- /package/dist/chunks/{config-T3qdQBgU.js → config-T3qdQBgU2.js} +0 -0
- /package/dist/chunks/{config-eXB87DOi2.js → config-eXB87DOi.js} +0 -0
- /package/dist/types/src/composables/{internal/useComboboxNavigation.d.ts → useComboboxNavigation.d.ts} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as splitClassTokens } from "./classTokens-BzazaERD.js";
|
|
2
|
-
import { a as enabledSurfaceClass, c as lineCountClass, i as disabledSurfaceClass, l as resizeClass, n as countClass, r as countRowClass, s as invalidBorderClass, t as borderClassByState, u as sizes } from "./grTextareaStyles-
|
|
2
|
+
import { a as enabledSurfaceClass, c as lineCountClass, i as disabledSurfaceClass, l as resizeClass, n as countClass, r as countRowClass, s as invalidBorderClass, t as borderClassByState, u as sizes } from "./grTextareaStyles-iOcHuVMM.js";
|
|
3
3
|
import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
|
|
4
4
|
//#region src/components/GrTextarea/safelist.ts
|
|
5
5
|
var grTextareaSafelist = [.../* @__PURE__ */ new Set([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-
|
|
1
|
+
{"version":3,"file":"config-BDfTXHo12.js","names":[],"sources":["../../src/components/GrTextarea/safelist.ts","../../src/components/GrTextarea/config.ts"],"sourcesContent":["import { splitClassTokens } from '../shared/classTokens'\nimport {\n borderClassByState,\n countClass,\n countRowClass,\n lineCountClass,\n disabledSurfaceClass,\n enabledSurfaceClass,\n invalidBorderClass,\n resizeClass,\n sizes,\n} from './grTextareaStyles'\n\nexport const grTextareaSafelist = [...new Set([\n ...Object.values(borderClassByState).flatMap(splitClassTokens),\n ...splitClassTokens(invalidBorderClass),\n ...Object.values(sizes).flatMap(splitClassTokens),\n ...Object.values(resizeClass).flatMap(splitClassTokens),\n ...splitClassTokens(enabledSurfaceClass),\n ...splitClassTokens(disabledSurfaceClass),\n ...splitClassTokens(countClass),\n ...splitClassTokens(countRowClass),\n ...splitClassTokens(lineCountClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grTextareaSafelist } from './safelist'\n\nexport const grTextareaConfig = defineGranularComponent(import.meta.url, {\n name: 'GrTextarea',\n safelist: grTextareaSafelist,\n})"],"mappings":";;;;AAaA,IAAa,qBAAqB,CAAC,mBAAG,IAAI,IAAI;CAC5C,GAAG,OAAO,OAAO,kBAAkB,CAAC,CAAC,QAAQ,gBAAgB;CAC7D,GAAG,iBAAiB,kBAAkB;CACtC,GAAG,OAAO,OAAO,KAAK,CAAC,CAAC,QAAQ,gBAAgB;CAChD,GAAG,OAAO,OAAO,WAAW,CAAC,CAAC,QAAQ,gBAAgB;CACtD,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,UAAU;CAC9B,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,cAAc;AACpC,CAAC,CAAC;;;ACnBF,IAAa,mBAAmB,wBAAwB,OAAO,KAAK,KAAK;CACvE,MAAM;CACN,UAAU;AACZ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-BE6n20np2.js","names":[],"sources":["../../src/components/GrSplitter/grSplitterStyles.ts","../../src/components/GrSplitter/safelist.ts","../../src/components/GrSplitter/config.ts"],"sourcesContent":["/**\n * Классы `GrSplitter`. Геометрия (толщина полосы, зона захвата, курсоры)\n * зависит от ориентации и от состояния жеста, поэтому живёт в собственном\n * `<style>` компонента, а не в утилитах.\n */\n\nexport const rootClass = 'grid h-full w-full'\n\n/** Без `min-*: 0` содержимое панели распирает грид-трек и ломает раскладку. */\nexport const paneClass = 'min-h-0 min-w-0'\n\n// `touch-none` в связке presetMini + presetGranular CSS не даёт — только произвольное свойство.\nexport const separatorClass = 'relative [touch-action:none] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] focus-visible:ring-inset'\n","import { splitClassTokens } from '../shared/classTokens'\nimport { paneClass, rootClass, separatorClass } from './grSplitterStyles'\n\nexport const grSplitterSafelist = [...new Set([\n ...splitClassTokens(rootClass),\n ...splitClassTokens(paneClass),\n ...splitClassTokens(separatorClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grSplitterSafelist } from './safelist'\n\nexport const grSplitterConfig = defineGranularComponent(import.meta.url, {\n name: 'GrSplitter',\n safelist: grSplitterSafelist,\n})\n"],"mappings":";;;;;;;;AAMA,IAAa,YAAY;;AAGzB,IAAa,YAAY;AAGzB,IAAa,iBAAiB;;;ACT9B,IAAa,qBAAqB,CAAC,mBAAG,IAAI,IAAI;CAC5C,GAAG,iBAAiB,SAAS;CAC7B,GAAG,iBAAiB,SAAS;CAC7B,GAAG,iBAAiB,cAAc;AACpC,CAAC,CAAC;;;ACHF,IAAa,mBAAmB,wBAAwB,OAAO,KAAK,KAAK;CACvE,MAAM;CACN,UAAU;AACZ,CAAC"}
|
|
@@ -60,7 +60,7 @@ var grRatingSafelist = [.../* @__PURE__ */ new Set([
|
|
|
60
60
|
...splitClassTokens(ratingRootBaseClass),
|
|
61
61
|
...splitClassTokens(ratingDisabledClass),
|
|
62
62
|
...splitClassTokens("cursor-pointer"),
|
|
63
|
-
...splitClassTokens("relative block shrink-0
|
|
63
|
+
...splitClassTokens("relative block shrink-0 tabular-nums")
|
|
64
64
|
])];
|
|
65
65
|
//#endregion
|
|
66
66
|
//#region src/components/GrRating/config.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-
|
|
1
|
+
{"version":3,"file":"config-Baj7Wvx-.js","names":[],"sources":["../../src/components/GrRating/grRatingStyles.ts","../../src/components/GrRating/safelist.ts","../../src/components/GrRating/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\nimport type { GrTone } from '../shared/tones'\n\nexport type GrRatingSize = GrComponentSize\nexport type GrRatingTone = GrTone\n\n/**\n * Кастомизация через CSS-переменные (на самом компоненте или любом предке):\n *\n * - `--gr-rating-color` — цвет «залитых» символов (по умолчанию — из `tone`).\n * - `--gr-rating-void-color` — цвет «пустых» символов.\n * - `--gr-rating-symbol-size` — размер символа (по умолчанию — из `size`).\n */\n\n// Размер символа — дефолт для `--gr-rating-symbol-size`.\nexport const ratingSymbolSizeBySize: Record<GrRatingSize, string> = {\n xs: 'h-[var(--gr-rating-symbol-size,0.875rem)] w-[var(--gr-rating-symbol-size,0.875rem)]',\n sm: 'h-[var(--gr-rating-symbol-size,1rem)] w-[var(--gr-rating-symbol-size,1rem)]',\n md: 'h-[var(--gr-rating-symbol-size,1.25rem)] w-[var(--gr-rating-symbol-size,1.25rem)]',\n lg: 'h-[var(--gr-rating-symbol-size,1.5rem)] w-[var(--gr-rating-symbol-size,1.5rem)]',\n}\n\nexport const ratingGapBySize: Record<GrRatingSize, string> = {\n xs: 'gap-0.5',\n sm: 'gap-0.5',\n md: 'gap-1',\n lg: 'gap-1.5',\n}\n\nexport const ratingTextSizeBySize: Record<GrRatingSize, string> = {\n xs: 'text-[length:var(--gr-control-text-2xs)]',\n sm: 'text-[length:var(--gr-control-text-xs)]',\n md: 'text-[length:var(--gr-control-text-sm)]',\n lg: 'text-[length:var(--gr-rating-font-size-lg,15px)]',\n}\n\n// Цвет заливки по тону. `--gr-rating-color` перекрывает тон точечно.\nexport const ratingFillClassByTone: Record<GrRatingTone, string> = {\n primary: 'text-[var(--gr-rating-color,var(--gr-primary))]',\n neutral: 'text-[var(--gr-rating-color,var(--gr-fg))]',\n success: 'text-[var(--gr-rating-color,var(--gr-success))]',\n warning: 'text-[var(--gr-rating-color,var(--gr-warning))]',\n danger: 'text-[var(--gr-rating-color,var(--gr-danger))]',\n info: 'text-[var(--gr-rating-color,var(--gr-info))]',\n slate: 'text-[var(--gr-rating-color,var(--gr-slate))]',\n azure: 'text-[var(--gr-rating-color,var(--gr-azure))]',\n}\n\n// «Пустой» символ: приглушённая заливка, чтобы шкала читалась целиком.\nexport const ratingVoidClass = 'text-[var(--gr-rating-void-color,color-mix(in_srgb,var(--gr-muted-fg)_35%,transparent))]'\n\nexport const ratingDisabledClass = 'cursor-not-allowed text-[var(--gr-disabled-fg)]'\n\nexport const ratingRootBaseClass = 'inline-flex items-center rounded-[var(--gr-radius-control)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--gr-bg)]'\n\nexport function ratingRootClass(options: { size: GrRatingSize, disabled: boolean, interactive: boolean }): string {\n return [\n ratingRootBaseClass,\n ratingGapBySize[options.size],\n // Недоступная шкала гасится токеном, а не `opacity`: прозрачность\n // разбавляет выверенные на AA токены и роняет контраст подписи.\n options.disabled ? ratingDisabledClass : (options.interactive ? 'cursor-pointer' : ''),\n ]\n .filter(Boolean)\n .join(' ')\n}\n\nexport function ratingSymbolClass(size: GrRatingSize): string {\n return `relative block shrink-0 ${ratingSymbolSizeBySize[size]}`\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n ratingDisabledClass,\n ratingFillClassByTone,\n ratingGapBySize,\n ratingRootBaseClass,\n ratingSymbolSizeBySize,\n ratingTextSizeBySize,\n ratingVoidClass,\n} from './grRatingStyles'\n\n// Всё, что живёт в `grRatingStyles.ts`: и вычисляемые мапы (size/tone), и\n// строковые литералы. Хелпер бандлер волен вынести в общий `dist/chunks/`,\n// который не попадает в область скана компонента — гейт `src/__tests__/safelist.test.ts`.\nexport const grRatingSafelist = [...new Set([\n ...Object.values(ratingSymbolSizeBySize).flatMap(splitClassTokens),\n ...Object.values(ratingGapBySize).flatMap(splitClassTokens),\n ...Object.values(ratingTextSizeBySize).flatMap(splitClassTokens),\n ...Object.values(ratingFillClassByTone).flatMap(splitClassTokens),\n ...splitClassTokens(ratingVoidClass),\n ...splitClassTokens(ratingRootBaseClass),\n ...splitClassTokens(ratingDisabledClass),\n ...splitClassTokens('cursor-pointer'),\n ...splitClassTokens('relative block shrink-0 tabular-nums'),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grRatingSafelist } from './safelist'\n\nexport const grRatingConfig = defineGranularComponent(import.meta.url, {\n name: 'GrRating',\n safelist: grRatingSafelist,\n})\n"],"mappings":";;;;;;;;;;AAgBA,IAAa,yBAAuD;CAClE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,kBAAgD;CAC3D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,uBAAqD;CAChE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAGA,IAAa,wBAAsD;CACjE,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,QAAQ;CACR,MAAM;CACN,OAAO;CACP,OAAO;AACT;AAGA,IAAa,kBAAkB;AAE/B,IAAa,sBAAsB;AAEnC,IAAa,sBAAsB;AAEnC,SAAgB,gBAAgB,SAAkF;CAChH,OAAO;EACL;EACA,gBAAgB,QAAQ;EAGxB,QAAQ,WAAW,sBAAuB,QAAQ,cAAc,mBAAmB;CACrF,CAAC,CACE,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;AACb;AAEA,SAAgB,kBAAkB,MAA4B;CAC5D,OAAO,2BAA2B,uBAAuB;AAC3D;;;ACxDA,IAAa,mBAAmB,CAAC,mBAAG,IAAI,IAAI;CAC1C,GAAG,OAAO,OAAO,sBAAsB,CAAC,CAAC,QAAQ,gBAAgB;CACjE,GAAG,OAAO,OAAO,eAAe,CAAC,CAAC,QAAQ,gBAAgB;CAC1D,GAAG,OAAO,OAAO,oBAAoB,CAAC,CAAC,QAAQ,gBAAgB;CAC/D,GAAG,OAAO,OAAO,qBAAqB,CAAC,CAAC,QAAQ,gBAAgB;CAChE,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,sCAAsC;AAC5D,CAAC,CAAC;;;ACpBF,IAAa,iBAAiB,wBAAwB,OAAO,KAAK,KAAK;CACrE,MAAM;CACN,UAAU;AACZ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-BoNR7_PD2.js","names":[],"sources":["../../src/components/GrSwitch/grSwitchStyles.ts","../../src/components/GrSwitch/safelist.ts","../../src/components/GrSwitch/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\nexport type GrSwitchSize = GrComponentSize\n\n/** Сторона подписи относительно дорожки — логическая, не физическая (RTL). */\nexport const GR_SWITCH_LABEL_POSITIONS = ['start', 'end'] as const\nexport type GrSwitchLabelPosition = typeof GR_SWITCH_LABEL_POSITIONS[number]\n\ntype GrSwitchThumbClassOptions = {\n checked: boolean\n size: GrSwitchSize\n}\n\nexport const rootBase = 'inline-flex items-center gap-2 select-none disabled:cursor-not-allowed'\n\n/** `start` разворачивает ряд, а не меняет порядок узлов: DOM-порядок читает диктор. */\nexport const rootLabelPositions: Record<GrSwitchLabelPosition, string> = {\n start: 'flex-row-reverse',\n end: '',\n}\n\nexport const trackBase =\n 'relative inline-flex shrink-0 items-center rounded-[var(--gr-radius-full)] border border-[var(--gr-switch-track-brd)] transition-colors duration-[var(--gr-duration-fast)]'\n\nexport const trackSizes: Record<GrSwitchSize, string> = {\n xs: 'h-4 w-7',\n sm: 'h-5 w-9',\n md: 'h-6 w-11',\n lg: 'h-7 w-14',\n}\n\nexport const thumbBase =\n 'inline-flex shrink-0 items-center justify-center rounded-[var(--gr-radius-full)] bg-[var(--gr-card)] shadow-[var(--gr-shadow-1)] transition-transform duration-[var(--gr-duration-fast)]'\n\nexport const thumbSizes: Record<GrSwitchSize, string> = {\n xs: 'h-3 w-3',\n sm: 'h-4 w-4',\n md: 'h-5 w-5',\n lg: 'h-6 w-6',\n}\n\n/** Спиннер загрузки живёт в бегунке, поэтому мельче его на ступень. */\nexport const thumbSpinnerSizes: Record<GrSwitchSize, string> = {\n xs: 'h-2 w-2',\n sm: 'h-2.5 w-2.5',\n md: 'h-3 w-3',\n lg: 'h-4 w-4',\n}\n\nexport const thumbSpinnerBase = 'animate-spin text-[var(--gr-muted-fg)]'\n\n/**\n * Сдвиг бегунка по горизонтали.\n *\n * Бегунок — обычный флекс-ребёнок дорожки, поэтому сдвиг отсчитывается от её\n * **content-box**, а он на 2px уже внешнего размера: рамка по 1px с каждой\n * стороны. Отсюда и весь расчёт.\n *\n * Зазор по вертикали задан геометрией и равен 1px на всех ступенях\n * (`(content-height − thumb) / 2`, дорожка центрирует бегунок сама). Значит и по\n * горизонтали он обязан быть 1px: иначе бегунок в покое выглядит вдавленным\n * внутрь, а в крайнем положении прижатым к краю — именно так и было, зазоры\n * расходились на 1–2px у `xs`, `sm` и `lg`.\n *\n * | ступень | дорожка | content | бегунок | покой | крайнее |\n * | --- | --- | --- | --- | --- | --- |\n * | `xs` | 28 | 26 | 12 | 1 | 13 |\n * | `sm` | 36 | 34 | 16 | 1 | 17 |\n * | `md` | 44 | 42 | 20 | 1 | 21 |\n * | `lg` | 56 | 54 | 24 | 1 | 29 |\n *\n * Крайнее положение — `content − thumb − зазор`. Гейт на эту арифметику живёт в\n * `__tests__/GrSwitch.test.ts`: он считает её заново из `trackSizes`/`thumbSizes`,\n * поэтому смена любой ступени размера сразу покажет разъехавшийся зазор.\n */\nexport const thumbTranslations: Record<GrSwitchSize, { checked: string, unchecked: string }> = {\n xs: {\n checked: 'translate-x-[13px]',\n unchecked: 'translate-x-[1px]',\n },\n sm: {\n checked: 'translate-x-[17px]',\n unchecked: 'translate-x-[1px]',\n },\n md: {\n checked: 'translate-x-[21px]',\n unchecked: 'translate-x-[1px]',\n },\n lg: {\n checked: 'translate-x-[29px]',\n unchecked: 'translate-x-[1px]',\n },\n}\n\nexport const labelBase = 'text-[var(--gr-muted-fg)]'\n\n/**\n * Недоступность гасится токеном, а не `opacity`: прозрачность разбавляет\n * выверенные на AA токены текста и роняет контраст подписи.\n */\nexport const labelDisabledClass = 'text-[var(--gr-disabled-fg)]'\n\nexport const labelSizes: Record<GrSwitchSize, string> = {\n xs: 'text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)]',\n sm: 'text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]',\n md: 'text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-sm)]',\n lg: 'text-[length:var(--gr-text-base)] leading-[var(--gr-leading-base)]',\n}\n\nexport function grSwitchRootClass(labelPosition: GrSwitchLabelPosition): string {\n return [rootBase, rootLabelPositions[labelPosition]].filter(Boolean).join(' ')\n}\n\nexport function grSwitchTrackClass(size: GrSwitchSize): string {\n return [trackBase, trackSizes[size]].join(' ')\n}\n\nexport function grSwitchThumbClass(options: GrSwitchThumbClassOptions): string {\n return [\n thumbBase,\n thumbSizes[options.size],\n thumbTranslations[options.size][options.checked ? 'checked' : 'unchecked'],\n ].join(' ')\n}\n\nexport function grSwitchSpinnerClass(size: GrSwitchSize): string {\n return [thumbSpinnerBase, thumbSpinnerSizes[size]].join(' ')\n}\n\nexport function grSwitchLabelClass(size: GrSwitchSize, disabled = false): string {\n return [disabled ? labelDisabledClass : labelBase, labelSizes[size]].join(' ')\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n labelBase,\n labelDisabledClass,\n labelSizes,\n rootBase,\n rootLabelPositions,\n thumbBase,\n thumbSizes,\n thumbSpinnerBase,\n thumbSpinnerSizes,\n thumbTranslations,\n trackBase,\n trackSizes,\n} from './grSwitchStyles'\n\nexport const grSwitchClassTokens = {\n rootBase: splitClassTokens(rootBase),\n rootLabelPositions: Object.values(rootLabelPositions).flatMap(splitClassTokens),\n trackBase: splitClassTokens(trackBase),\n trackSizes: Object.values(trackSizes).flatMap(splitClassTokens),\n thumbBase: splitClassTokens(thumbBase),\n thumbSizes: Object.values(thumbSizes).flatMap(splitClassTokens),\n thumbSpinner: [\n ...splitClassTokens(thumbSpinnerBase),\n ...Object.values(thumbSpinnerSizes).flatMap(splitClassTokens),\n ],\n thumbTranslations: Object.values(thumbTranslations).flatMap(({checked, unchecked}) => {\n return [...splitClassTokens(checked), ...splitClassTokens(unchecked)]\n }),\n labelBase: [...splitClassTokens(labelBase), ...splitClassTokens(labelDisabledClass)],\n labelSizes: Object.values(labelSizes).flatMap(splitClassTokens),\n} as const\n\nexport const grSwitchSafelist = [...new Set([\n ...grSwitchClassTokens.rootBase,\n ...grSwitchClassTokens.rootLabelPositions,\n ...grSwitchClassTokens.trackBase,\n ...grSwitchClassTokens.trackSizes,\n ...grSwitchClassTokens.thumbBase,\n ...grSwitchClassTokens.thumbSizes,\n ...grSwitchClassTokens.thumbSpinner,\n ...grSwitchClassTokens.thumbTranslations,\n ...grSwitchClassTokens.labelBase,\n ...grSwitchClassTokens.labelSizes,\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grSwitchSafelist } from './safelist'\n\nexport const grSwitchConfig = defineGranularComponent(import.meta.url, {\n name: 'GrSwitch',\n safelist: grSwitchSafelist,\n})"],"mappings":";;;AAaA,IAAa,WAAW;;AAGxB,IAAa,qBAA4D;CACrE,OAAO;CACP,KAAK;AACT;AAEA,IAAa,YACT;AAEJ,IAAa,aAA2C;CACpD,IAAI;CACN,IAAI;CACF,IAAI;CACJ,IAAI;AACR;AAEA,IAAa,YACT;AAEJ,IAAa,aAA2C;CACpD,IAAI;CACN,IAAI;CACF,IAAI;CACJ,IAAI;AACR;;AAGA,IAAa,oBAAkD;CAC3D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACR;AAEA,IAAa,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;AA0BhC,IAAa,oBAAkF;CAC3F,IAAI;EACA,SAAS;EACT,WAAW;CACf;CACA,IAAI;EACA,SAAS;EACT,WAAW;CACf;CACA,IAAI;EACA,SAAS;EACT,WAAW;CACf;CACA,IAAI;EACA,SAAS;EACT,WAAW;CACf;AACJ;AAEA,IAAa,YAAY;;;;;AAMzB,IAAa,qBAAqB;AAElC,IAAa,aAA2C;CACpD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACR;AAEA,SAAgB,kBAAkB,eAA8C;CAC5E,OAAO,CAAC,UAAU,mBAAmB,cAAc,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;AACjF;AAEA,SAAgB,mBAAmB,MAA4B;CAC3D,OAAO,CAAC,WAAW,WAAW,KAAK,CAAC,CAAC,KAAK,GAAG;AACjD;AAEA,SAAgB,mBAAmB,SAA4C;CAC3E,OAAO;EACH;EACA,WAAW,QAAQ;EACnB,kBAAkB,QAAQ,KAAK,CAAC,QAAQ,UAAU,YAAY;CAClE,CAAC,CAAC,KAAK,GAAG;AACd;AAEA,SAAgB,qBAAqB,MAA4B;CAC7D,OAAO,CAAC,kBAAkB,kBAAkB,KAAK,CAAC,CAAC,KAAK,GAAG;AAC/D;AAEA,SAAgB,mBAAmB,MAAoB,WAAW,OAAe;CAC7E,OAAO,CAAC,WAAW,qBAAqB,WAAW,WAAW,KAAK,CAAC,CAAC,KAAK,GAAG;AACjF;;;ACnHA,IAAa,sBAAsB;CACjC,UAAU,iBAAiB,QAAQ;CACnC,oBAAoB,OAAO,OAAO,kBAAkB,CAAC,CAAC,QAAQ,gBAAgB;CAC9E,WAAW,iBAAiB,SAAS;CACrC,YAAY,OAAO,OAAO,UAAU,CAAC,CAAC,QAAQ,gBAAgB;CAC9D,WAAW,iBAAiB,SAAS;CACrC,YAAY,OAAO,OAAO,UAAU,CAAC,CAAC,QAAQ,gBAAgB;CAC9D,cAAc,CACZ,GAAG,iBAAiB,gBAAgB,GACpC,GAAG,OAAO,OAAO,iBAAiB,CAAC,CAAC,QAAQ,gBAAgB,CAC9D;CACA,mBAAmB,OAAO,OAAO,iBAAiB,CAAC,CAAC,SAAS,EAAC,SAAS,gBAAe;EACpF,OAAO,CAAC,GAAG,iBAAiB,OAAO,GAAG,GAAG,iBAAiB,SAAS,CAAC;CACtE,CAAC;CACD,WAAW,CAAC,GAAG,iBAAiB,SAAS,GAAG,GAAG,iBAAiB,kBAAkB,CAAC;CACnF,YAAY,OAAO,OAAO,UAAU,CAAC,CAAC,QAAQ,gBAAgB;AAChE;AAEA,IAAa,mBAAmB,CAAC,mBAAG,IAAI,IAAI;CAC1C,GAAG,oBAAoB;CACvB,GAAG,oBAAoB;CACvB,GAAG,oBAAoB;CACvB,GAAG,oBAAoB;CACvB,GAAG,oBAAoB;CACvB,GAAG,oBAAoB;CACvB,GAAG,oBAAoB;CACvB,GAAG,oBAAoB;CACvB,GAAG,oBAAoB;CACvB,GAAG,oBAAoB;AACzB,CAAC,CAAC;;;ACzCF,IAAa,iBAAiB,wBAAwB,OAAO,KAAK,KAAK;CACrE,MAAM;CACN,UAAU;AACZ,CAAC"}
|
|
@@ -29,7 +29,7 @@ var triggerBaseClass = "inline-flex w-full min-w-0 items-center rounded-[var(--g
|
|
|
29
29
|
var triggerDisabledClass = "cursor-not-allowed border-[var(--gr-brd)] bg-[var(--gr-muted)] text-[var(--gr-disabled-fg)]";
|
|
30
30
|
var triggerEnabledClass = "cursor-pointer hover:border-[var(--gr-primary)]";
|
|
31
31
|
var triggerInvalidClass = "border-[var(--gr-invalid-brd)] focus-visible:ring-[var(--gr-invalid-ring)]";
|
|
32
|
-
var triggerValueClass = "min-w-0 flex-1 truncate text-left
|
|
32
|
+
var triggerValueClass = "min-w-0 flex-1 truncate text-left tabular-nums";
|
|
33
33
|
/**
|
|
34
34
|
* Шахматка под прозрачным цветом. Живёт классом-маркером, а сами клетки рисует
|
|
35
35
|
* `<style>` компонента: два `conic-gradient` в утилите не выражаются.
|
|
@@ -42,7 +42,7 @@ var panelBaseClass = "grid";
|
|
|
42
42
|
var previewClass = "relative h-10 w-full overflow-hidden rounded-[var(--gr-radius-md)] border border-[color-mix(in_srgb,var(--gr-fg)_18%,transparent)]";
|
|
43
43
|
var rowClass = "grid grid-cols-[1.25rem_minmax(0,1fr)_2.75rem] items-center gap-2";
|
|
44
44
|
var rowLabelClass = "text-[var(--gr-muted-fg)]";
|
|
45
|
-
var rowValueClass = "text-right text-[var(--gr-muted-fg)]
|
|
45
|
+
var rowValueClass = "text-right text-[var(--gr-muted-fg)] tabular-nums";
|
|
46
46
|
var presetsGridClass = "flex flex-wrap gap-1.5";
|
|
47
47
|
var presetBaseClass = "relative h-5 w-5 shrink-0 overflow-hidden rounded-[var(--gr-radius-sm)] border border-[color-mix(in_srgb,var(--gr-fg)_18%,transparent)] transition-shadow duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]";
|
|
48
48
|
var presetSelectedClass = "ring-2 ring-[var(--gr-primary)] ring-offset-1 ring-offset-[var(--gr-popover)]";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-BsPDQ0dS.js","names":[],"sources":["../../src/components/GrColorPicker/grColorPickerStyles.ts","../../src/components/GrColorPicker/safelist.ts","../../src/components/GrColorPicker/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\nexport type GrColorPickerSize = GrComponentSize\n\n/**\n * Триггер повторяет геометрию поля ввода: пикер чаще всего стоит в форме рядом\n * с `GrInput`, и своя лестница высот выдала бы его из ряда.\n */\nexport const triggerSizeClassBySize: Record<GrColorPickerSize, string> = {\n xs: 'h-7 px-2 gap-1.5 text-[length:var(--gr-control-text-xs)]',\n sm: 'h-8 px-2.5 gap-2 text-[length:var(--gr-control-text-sm)]',\n md: 'h-10 px-3 gap-2 text-[length:var(--gr-control-text-md)]',\n lg: 'h-11 px-4 gap-2.5 text-[length:var(--gr-control-text-lg)]',\n}\n\n/** Образец в триггере: квадрат со стороной чуть меньше высоты поля. */\nexport const triggerSwatchSizeBySize: Record<GrColorPickerSize, string> = {\n xs: 'h-3.5 w-3.5',\n sm: 'h-4 w-4',\n md: 'h-5 w-5',\n lg: 'h-6 w-6',\n}\n\nexport const panelSizeClassBySize: Record<GrColorPickerSize, string> = {\n xs: 'w-56 gap-2 text-[length:var(--gr-control-text-xs)]',\n sm: 'w-60 gap-2.5 text-[length:var(--gr-control-text-sm)]',\n md: 'w-64 gap-3 text-[length:var(--gr-control-text-md)]',\n lg: 'w-72 gap-3 text-[length:var(--gr-control-text-lg)]',\n}\n\nexport const triggerBaseClass = 'inline-flex w-full min-w-0 items-center rounded-[var(--gr-radius-control)] border border-[var(--gr-brd)] bg-[var(--gr-bg)] text-[var(--gr-fg)] transition-colors duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\n\n/** Недоступное поле гасится токенами, а не `opacity`: прозрачность роняет контраст подписи. */\nexport const triggerDisabledClass = 'cursor-not-allowed border-[var(--gr-brd)] bg-[var(--gr-muted)] text-[var(--gr-disabled-fg)]'\nexport const triggerEnabledClass = 'cursor-pointer hover:border-[var(--gr-primary)]'\nexport const triggerInvalidClass = 'border-[var(--gr-invalid-brd)] focus-visible:ring-[var(--gr-invalid-ring)]'\n\nexport const triggerValueClass = 'min-w-0 flex-1 truncate text-left tabular-nums'\n\n/**\n * Шахматка под прозрачным цветом. Живёт классом-маркером, а сами клетки рисует\n * `<style>` компонента: два `conic-gradient` в утилите не выражаются.\n */\nexport const checkerClass = 'gr-color-picker-checker'\n\nexport const swatchBaseClass = 'relative shrink-0 overflow-hidden rounded-[var(--gr-radius-sm)] border border-[color-mix(in_srgb,var(--gr-fg)_18%,transparent)]'\n\n/** Заливка образца лежит поверх шахматки отдельным слоем. */\nexport const swatchFillClass = 'absolute inset-0'\n\nexport const panelBaseClass = 'grid'\n\nexport const previewClass = 'relative h-10 w-full overflow-hidden rounded-[var(--gr-radius-md)] border border-[color-mix(in_srgb,var(--gr-fg)_18%,transparent)]'\n\nexport const rowClass = 'grid grid-cols-[1.25rem_minmax(0,1fr)_2.75rem] items-center gap-2'\nexport const rowLabelClass = 'text-[var(--gr-muted-fg)]'\nexport const rowValueClass = 'text-right text-[var(--gr-muted-fg)] tabular-nums'\n\nexport const presetsGridClass = 'flex flex-wrap gap-1.5'\nexport const presetBaseClass = 'relative h-5 w-5 shrink-0 overflow-hidden rounded-[var(--gr-radius-sm)] border border-[color-mix(in_srgb,var(--gr-fg)_18%,transparent)] transition-shadow duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\nexport const presetSelectedClass = 'ring-2 ring-[var(--gr-primary)] ring-offset-1 ring-offset-[var(--gr-popover)]'\n\nexport function grColorPickerTriggerClass(options: {\n size: GrColorPickerSize\n disabled: boolean\n invalid: boolean\n}): string {\n return [\n triggerBaseClass,\n triggerSizeClassBySize[options.size],\n options.disabled ? triggerDisabledClass : triggerEnabledClass,\n options.invalid ? triggerInvalidClass : '',\n ].filter(Boolean).join(' ')\n}\n\nexport function grColorPickerPanelClass(size: GrColorPickerSize): string {\n return [panelBaseClass, panelSizeClassBySize[size]].join(' ')\n}\n\nexport function grColorPickerPresetClass(selected: boolean): string {\n return [presetBaseClass, selected ? presetSelectedClass : ''].filter(Boolean).join(' ')\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n panelBaseClass,\n panelSizeClassBySize,\n presetBaseClass,\n presetSelectedClass,\n presetsGridClass,\n previewClass,\n rowClass,\n rowLabelClass,\n rowValueClass,\n swatchBaseClass,\n swatchFillClass,\n triggerBaseClass,\n triggerDisabledClass,\n triggerEnabledClass,\n triggerInvalidClass,\n triggerSizeClassBySize,\n triggerSwatchSizeBySize,\n triggerValueClass,\n} from './grColorPickerStyles'\n\n// Классы из вычисляемых мап и литералов `.ts`-хелпера UnoCSS сканом не находит.\n//\n// `checkerClass` сюда не входит намеренно: это класс-маркер под собственный\n// `<style>` компонента, а не утилита — CSS из него не генерируется, и гейт\n// `documentedConfig` справедливо на такой записи падает.\nexport const grColorPickerSafelist = [...new Set([\n ...Object.values(triggerSizeClassBySize).flatMap(splitClassTokens),\n ...Object.values(triggerSwatchSizeBySize).flatMap(splitClassTokens),\n ...Object.values(panelSizeClassBySize).flatMap(splitClassTokens),\n ...splitClassTokens(triggerBaseClass),\n ...splitClassTokens(triggerDisabledClass),\n ...splitClassTokens(triggerEnabledClass),\n ...splitClassTokens(triggerInvalidClass),\n ...splitClassTokens(triggerValueClass),\n ...splitClassTokens(swatchBaseClass),\n ...splitClassTokens(swatchFillClass),\n ...splitClassTokens(panelBaseClass),\n ...splitClassTokens(previewClass),\n ...splitClassTokens(rowClass),\n ...splitClassTokens(rowLabelClass),\n ...splitClassTokens(rowValueClass),\n ...splitClassTokens(presetsGridClass),\n ...splitClassTokens(presetBaseClass),\n ...splitClassTokens(presetSelectedClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grColorPickerSafelist } from './safelist'\n\nexport const grColorPickerConfig = defineGranularComponent(import.meta.url, {\n name: 'GrColorPicker',\n // Панель, слайдеры и поле рендерятся этим компонентом, поэтому их safelist\n // обязан приехать вместе с ним: иначе у гранулярного импорта панель встанет\n // без стилей, а сборка останется зелёной.\n dependencies: ['GrPopover', 'GrSlider', 'GrInput'],\n safelist: grColorPickerSafelist,\n})\n"],"mappings":";;;;;;;AAQA,IAAa,yBAA4D;CACvE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,0BAA6D;CACxE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,uBAA0D;CACrE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,mBAAmB;;AAGhC,IAAa,uBAAuB;AACpC,IAAa,sBAAsB;AACnC,IAAa,sBAAsB;AAEnC,IAAa,oBAAoB;;;;;AAMjC,IAAa,eAAe;AAE5B,IAAa,kBAAkB;;AAG/B,IAAa,kBAAkB;AAE/B,IAAa,iBAAiB;AAE9B,IAAa,eAAe;AAE5B,IAAa,WAAW;AACxB,IAAa,gBAAgB;AAC7B,IAAa,gBAAgB;AAE7B,IAAa,mBAAmB;AAChC,IAAa,kBAAkB;AAC/B,IAAa,sBAAsB;AAEnC,SAAgB,0BAA0B,SAI/B;CACT,OAAO;EACL;EACA,uBAAuB,QAAQ;EAC/B,QAAQ,WAAW,uBAAuB;EAC1C,QAAQ,UAAU,sBAAsB;CAC1C,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;AAC5B;AAEA,SAAgB,wBAAwB,MAAiC;CACvE,OAAO,CAAC,gBAAgB,qBAAqB,KAAK,CAAC,CAAC,KAAK,GAAG;AAC9D;AAEA,SAAgB,yBAAyB,UAA2B;CAClE,OAAO,CAAC,iBAAiB,WAAW,sBAAsB,EAAE,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;AACxF;;;ACtDA,IAAa,wBAAwB,CAAC,mBAAG,IAAI,IAAI;CAC/C,GAAG,OAAO,OAAO,sBAAsB,CAAC,CAAC,QAAQ,gBAAgB;CACjE,GAAG,OAAO,OAAO,uBAAuB,CAAC,CAAC,QAAQ,gBAAgB;CAClE,GAAG,OAAO,OAAO,oBAAoB,CAAC,CAAC,QAAQ,gBAAgB;CAC/D,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,YAAY;CAChC,GAAG,iBAAiB,QAAQ;CAC5B,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,mBAAmB;AACzC,CAAC,CAAC;;;AC1CF,IAAa,sBAAsB,wBAAwB,OAAO,KAAK,KAAK;CAC1E,MAAM;CAIN,cAAc;EAAC;EAAa;EAAY;CAAS;CACjD,UAAU;AACZ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-CN2ULSQL.js","names":[],"sources":["../../src/components/GrTooltip/grTooltipStyles.ts","../../src/components/GrTooltip/safelist.ts","../../src/components/GrTooltip/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\nexport type GrTooltipSize = GrComponentSize\n\n/** Панель подсказки: кегль и внутренние поля. */\nexport const panelSizes: Record<GrTooltipSize, string> = {\n xs: 'px-1.5 py-0.5 text-[length:var(--gr-control-text-3xs)]',\n sm: 'px-2 py-1 text-[length:var(--gr-control-text-2xs)]',\n md: 'px-2 py-1 text-[length:var(--gr-control-text-xs)]',\n lg: 'px-3 py-1.5 text-[length:var(--gr-control-text-md)]',\n}\n\n/** Ширина панели растёт вместе с кеглем — иначе на `lg` строка рвётся втрое. */\nexport const panelWidths: Record<GrTooltipSize, string> = {\n xs: 'max-w-[220px]',\n sm: 'max-w-[260px]',\n md: 'max-w-[280px]',\n lg: 'max-w-[340px]',\n}\n\n/** Дефолтный триггер — иконка info из шкалы `GrIcon` (`xs…lg` → `14…20px`). */\nexport const triggerIconSizes: Record<GrTooltipSize, GrComponentSize> = {\n xs: 'xs',\n sm: 'xs',\n md: 'sm',\n lg: 'md',\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport { panelSizes, panelWidths } from './grTooltipStyles'\n\nexport const grTooltipSafelist = [...new Set([\n ...Object.values(panelSizes).flatMap(splitClassTokens),\n ...Object.values(panelWidths).flatMap(splitClassTokens),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grTooltipSafelist } from './safelist'\n\nexport const grTooltipConfig = defineGranularComponent(import.meta.url, {\n name: 'GrTooltip',\n dependencies: ['GrIcon'],\n safelist: grTooltipSafelist,\n})\n"],"mappings":";;;;AAKA,IAAa,aAA4C;CACvD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,cAA6C;CACxD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,mBAA2D;CACtE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;ACvBA,IAAa,oBAAoB,CAAC,mBAAG,IAAI,IAAI,CAC3C,GAAG,OAAO,OAAO,UAAU,CAAC,CAAC,QAAQ,gBAAgB,GACrD,GAAG,OAAO,OAAO,WAAW,CAAC,CAAC,QAAQ,gBAAgB,CACxD,CAAC,CAAC;;;ACFF,IAAa,kBAAkB,wBAAwB,OAAO,KAAK,KAAK;CACtE,MAAM;CACN,cAAc,CAAC,QAAQ;CACvB,UAAU;AACZ,CAAC"}
|
|
@@ -35,7 +35,7 @@ var markerOutlinedToneClass = {
|
|
|
35
35
|
azure: "bg-[var(--gr-bg)] border-[var(--gr-azure)]"
|
|
36
36
|
};
|
|
37
37
|
var markerBaseClass = "block shrink-0 rounded-[var(--gr-radius-full)]";
|
|
38
|
-
var timeClass = "text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-normal)] text-[var(--gr-muted-fg)]
|
|
38
|
+
var timeClass = "text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-normal)] text-[var(--gr-muted-fg)] tabular-nums";
|
|
39
39
|
var titleClass = "text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-normal)] font-600 text-[var(--gr-fg)]";
|
|
40
40
|
var descriptionClass = "mt-0.5 text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-normal)] text-[var(--gr-muted-fg)]";
|
|
41
41
|
var groupTitleClass = "text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-normal)] font-600 uppercase tracking-wide text-[var(--gr-muted-fg)]";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-COpuWGr_.js","names":[],"sources":["../../src/components/GrTimeline/grTimelineStyles.ts","../../src/components/GrTimeline/safelist.ts","../../src/components/GrTimeline/config.ts"],"sourcesContent":["import type { GrTone } from '../shared/tones'\n\nexport type GrTimelineTone = GrTone\n\n/** Плотность вертикальных отступов пункта — та же ось, что `density` у `GrListItem`. */\nexport const GR_TIMELINE_DENSITIES = ['regular', 'compact'] as const\nexport type GrTimelineDensity = typeof GR_TIMELINE_DENSITIES[number]\n\n/**\n * `stacked` — одна ось слева; `time` — метка времени отдельной колонкой слева от\n * оси; `alternate` — пункты попеременно по обе стороны центральной оси.\n */\nexport const GR_TIMELINE_LAYOUTS = ['stacked', 'time', 'alternate'] as const\nexport type GrTimelineLayout = typeof GR_TIMELINE_LAYOUTS[number]\n\nexport const GR_TIMELINE_ORIENTATIONS = ['vertical', 'horizontal'] as const\nexport type GrTimelineOrientation = typeof GR_TIMELINE_ORIENTATIONS[number]\n\n/** Заполненная точка — событие случилось; полая — запланировано. */\nexport const GR_TIMELINE_MARKER_VARIANTS = ['filled', 'outlined'] as const\nexport type GrTimelineMarkerVariant = typeof GR_TIMELINE_MARKER_VARIANTS[number]\n\n/**\n * Отступ **под** пунктом, а не `gap` контейнера: отрезок оси растёт до низа\n * пункта, и промежуток, которого пункт не занимает, разорвал бы линию.\n */\nexport const densityPadding: Record<GrTimelineDensity, string> = {\n regular: 'pb-5',\n compact: 'pb-3',\n}\n\n/**\n * Заливка маркера. У тона `neutral` одноимённой роли в палитре нет — его вес\n * это приглушённый текст, поэтому точка красится `--gr-muted-fg`.\n */\nexport const markerFilledToneClass: Record<GrTimelineTone, string> = {\n neutral: 'bg-[var(--gr-muted-fg)]',\n primary: 'bg-[var(--gr-primary)]',\n success: 'bg-[var(--gr-success)]',\n warning: 'bg-[var(--gr-warning)]',\n danger: 'bg-[var(--gr-danger)]',\n info: 'bg-[var(--gr-info)]',\n slate: 'bg-[var(--gr-slate)]',\n azure: 'bg-[var(--gr-azure)]',\n}\n\n/** Полая точка: обводка тоном, середина — фон страницы, чтобы ось не просвечивала. */\nexport const markerOutlinedToneClass: Record<GrTimelineTone, string> = {\n neutral: 'bg-[var(--gr-bg)] border-[var(--gr-muted-fg)]',\n primary: 'bg-[var(--gr-bg)] border-[var(--gr-primary)]',\n success: 'bg-[var(--gr-bg)] border-[var(--gr-success)]',\n warning: 'bg-[var(--gr-bg)] border-[var(--gr-warning)]',\n danger: 'bg-[var(--gr-bg)] border-[var(--gr-danger)]',\n info: 'bg-[var(--gr-bg)] border-[var(--gr-info)]',\n slate: 'bg-[var(--gr-bg)] border-[var(--gr-slate)]',\n azure: 'bg-[var(--gr-bg)] border-[var(--gr-azure)]',\n}\n\nexport const markerBaseClass = 'block shrink-0 rounded-[var(--gr-radius-full)]'\n\nexport const timeClass = 'text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-normal)] text-[var(--gr-muted-fg)] tabular-nums'\n\nexport const titleClass = 'text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-normal)] font-600 text-[var(--gr-fg)]'\n\nexport const descriptionClass = 'mt-0.5 text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-normal)] text-[var(--gr-muted-fg)]'\n\nexport const groupTitleClass = 'text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-normal)] font-600 uppercase tracking-wide text-[var(--gr-muted-fg)]'\n\nexport const emptyClass = 'py-6 text-center text-[length:var(--gr-text-sm)] leading-[var(--gr-leading-normal)] text-[var(--gr-muted-fg)]'\n\nexport const loadingRowClass = 'flex items-center gap-3 pb-5'\n\nexport function grTimelineDensityClass(density: GrTimelineDensity): string {\n return densityPadding[density]\n}\n\nexport function grTimelineMarkerClass(\n tone: GrTimelineTone,\n variant: GrTimelineMarkerVariant,\n): string {\n const toneClass = variant === 'filled'\n ? markerFilledToneClass[tone]\n : markerOutlinedToneClass[tone]\n\n return `${markerBaseClass} ${toneClass}`\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n densityPadding,\n descriptionClass,\n emptyClass,\n groupTitleClass,\n loadingRowClass,\n markerBaseClass,\n markerFilledToneClass,\n markerOutlinedToneClass,\n timeClass,\n titleClass,\n} from './grTimelineStyles'\n\nexport const grTimelineSafelist = [...new Set([\n ...Object.values(densityPadding).flatMap(splitClassTokens),\n ...Object.values(markerFilledToneClass).flatMap(splitClassTokens),\n ...Object.values(markerOutlinedToneClass).flatMap(splitClassTokens),\n ...splitClassTokens(markerBaseClass),\n ...splitClassTokens(timeClass),\n ...splitClassTokens(titleClass),\n ...splitClassTokens(descriptionClass),\n ...splitClassTokens(groupTitleClass),\n ...splitClassTokens(emptyClass),\n ...splitClassTokens(loadingRowClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grTimelineSafelist } from './safelist'\n\nexport const grTimelineConfig = defineGranularComponent(import.meta.url, {\n name: 'GrTimeline',\n safelist: grTimelineSafelist,\n dependencies: ['GrSkeleton'],\n})\n"],"mappings":";;;;;;;AA0BA,IAAa,iBAAoD;CAC/D,SAAS;CACT,SAAS;AACX;;;;;AAMA,IAAa,wBAAwD;CACnE,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,QAAQ;CACR,MAAM;CACN,OAAO;CACP,OAAO;AACT;;AAGA,IAAa,0BAA0D;CACrE,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,QAAQ;CACR,MAAM;CACN,OAAO;CACP,OAAO;AACT;AAEA,IAAa,kBAAkB;AAE/B,IAAa,YAAY;AAEzB,IAAa,aAAa;AAE1B,IAAa,mBAAmB;AAEhC,IAAa,kBAAkB;AAE/B,IAAa,aAAa;AAE1B,IAAa,kBAAkB;AAE/B,SAAgB,uBAAuB,SAAoC;CACzE,OAAO,eAAe;AACxB;AAEA,SAAgB,sBACd,MACA,SACQ;CAKR,OAAO,GAAG,gBAAgB,GAJR,YAAY,WAC1B,sBAAsB,QACtB,wBAAwB;AAG9B;;;ACvEA,IAAa,qBAAqB,CAAC,mBAAG,IAAI,IAAI;CAC5C,GAAG,OAAO,OAAO,cAAc,CAAC,CAAC,QAAQ,gBAAgB;CACzD,GAAG,OAAO,OAAO,qBAAqB,CAAC,CAAC,QAAQ,gBAAgB;CAChE,GAAG,OAAO,OAAO,uBAAuB,CAAC,CAAC,QAAQ,gBAAgB;CAClE,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,SAAS;CAC7B,GAAG,iBAAiB,UAAU;CAC9B,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,UAAU;CAC9B,GAAG,iBAAiB,eAAe;AACrC,CAAC,CAAC;;;ACrBF,IAAa,mBAAmB,wBAAwB,OAAO,KAAK,KAAK;CACvE,MAAM;CACN,UAAU;CACV,cAAc,CAAC,YAAY;AAC7B,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { t as splitClassTokens } from "./classTokens-BzazaERD.js";
|
|
2
|
+
import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
|
|
3
|
+
//#region src/components/GrSortableList/grSortableListStyles.ts
|
|
4
|
+
/**
|
|
5
|
+
* Классы `GrSortableList`. Единственный источник правды для шаблона и
|
|
6
|
+
* `safelist.ts`: литерал, живущий только здесь, до скана UnoCSS не доходит —
|
|
7
|
+
* хелпер уезжает в общий чанк `dist/chunks/`.
|
|
8
|
+
*/
|
|
9
|
+
var listClass = {
|
|
10
|
+
vertical: "flex flex-col",
|
|
11
|
+
horizontal: "flex flex-row flex-wrap"
|
|
12
|
+
};
|
|
13
|
+
var rowLayoutClass = "relative flex items-center gap-2 px-4 py-3 transition-colors duration-[var(--gr-duration-fast)]";
|
|
14
|
+
/**
|
|
15
|
+
* Строка — остановка роверного фокуса, поэтому кольцо на ней, а не на ручке:
|
|
16
|
+
* с клавиатуры берут строку целиком, ручка остаётся affordance для мыши.
|
|
17
|
+
*/
|
|
18
|
+
var rowFocusClass = "focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] focus-visible:ring-inset";
|
|
19
|
+
var rowDraggingClass = "bg-[var(--gr-sortable-row-bg-active,var(--gr-muted))]";
|
|
20
|
+
/** Взятая с клавиатуры строка обязана отличаться от просто сфокусированной. */
|
|
21
|
+
var rowGrabbedClass = "bg-[var(--gr-sortable-row-bg-active,var(--gr-muted))] ring-2 ring-[var(--gr-ring)] ring-inset";
|
|
22
|
+
var rowDisabledClass = "cursor-not-allowed bg-[var(--gr-muted)] text-[var(--gr-muted-fg)]";
|
|
23
|
+
var dividedClass = "divide-y divide-[var(--gr-brd)]";
|
|
24
|
+
var emptyClass = "px-4 py-6 text-center text-[length:var(--gr-text-sm)] text-[var(--gr-muted-fg)]";
|
|
25
|
+
/**
|
|
26
|
+
* Ручка не табируется: внутри роверного композита свой таб-стоп сломал бы
|
|
27
|
+
* правило «один Tab на список» — тот же приём, что у ручки `GrTree`.
|
|
28
|
+
*/
|
|
29
|
+
/**
|
|
30
|
+
* `[touch-action:none]` вместо `touch-none`: утилиты нет ни в `presetMini`, ни
|
|
31
|
+
* в extra-rules, класс молча не превратился бы в CSS — и вертикальный свайп по
|
|
32
|
+
* ручке ушёл бы в прокрутку страницы. Тот же приём у дорожки `GrSlider`.
|
|
33
|
+
*/
|
|
34
|
+
var handleClass = "flex shrink-0 items-center justify-center rounded-[var(--gr-radius-sm)] text-[var(--gr-sortable-handle-color,var(--gr-muted-fg))] size-[var(--gr-sortable-handle-size,1.5rem)] cursor-grab [touch-action:none] focus:outline-none";
|
|
35
|
+
var handleDisabledClass = "cursor-not-allowed text-[var(--gr-muted-fg)]";
|
|
36
|
+
var handleIconClass = "i-lucide-grip-vertical";
|
|
37
|
+
var contentClass = "min-w-0 flex-1 text-[length:var(--gr-text-sm)]";
|
|
38
|
+
/**
|
|
39
|
+
* Куда встанет строка — псевдоэлемент самой строки, а не отдельный узел:
|
|
40
|
+
* лишний узел между строками ломает и `divide-y`, и подсчёт позиций.
|
|
41
|
+
*/
|
|
42
|
+
var indicatorBeforeClass = "before:absolute before:inset-x-0 before:top-0 before:h-[var(--gr-sortable-indicator-width,2px)] before:bg-[var(--gr-sortable-indicator,var(--gr-primary))] before:content-empty";
|
|
43
|
+
var indicatorAfterClass = "after:absolute after:inset-x-0 after:bottom-0 after:h-[var(--gr-sortable-indicator-width,2px)] after:bg-[var(--gr-sortable-indicator,var(--gr-primary))] after:content-empty";
|
|
44
|
+
//#endregion
|
|
45
|
+
//#region src/components/GrSortableList/safelist.ts
|
|
46
|
+
var grSortableListSafelist = [.../* @__PURE__ */ new Set([
|
|
47
|
+
...Object.values(listClass).flatMap(splitClassTokens),
|
|
48
|
+
...splitClassTokens(rowLayoutClass),
|
|
49
|
+
...splitClassTokens(rowFocusClass),
|
|
50
|
+
...splitClassTokens(rowDraggingClass),
|
|
51
|
+
...splitClassTokens(rowGrabbedClass),
|
|
52
|
+
...splitClassTokens(rowDisabledClass),
|
|
53
|
+
...splitClassTokens(dividedClass),
|
|
54
|
+
...splitClassTokens(emptyClass),
|
|
55
|
+
...splitClassTokens(handleClass),
|
|
56
|
+
...splitClassTokens(handleDisabledClass),
|
|
57
|
+
...splitClassTokens(handleIconClass),
|
|
58
|
+
...splitClassTokens(contentClass),
|
|
59
|
+
...splitClassTokens(indicatorBeforeClass),
|
|
60
|
+
...splitClassTokens(indicatorAfterClass)
|
|
61
|
+
])];
|
|
62
|
+
//#endregion
|
|
63
|
+
//#region src/components/GrSortableList/config.ts
|
|
64
|
+
var grSortableListConfig = defineGranularComponent(import.meta.url, {
|
|
65
|
+
name: "GrSortableList",
|
|
66
|
+
safelist: grSortableListSafelist,
|
|
67
|
+
dependencies: ["GrCard"]
|
|
68
|
+
});
|
|
69
|
+
//#endregion
|
|
70
|
+
export { emptyClass as a, handleIconClass as c, listClass as d, rowDisabledClass as f, rowLayoutClass as g, rowGrabbedClass as h, dividedClass as i, indicatorAfterClass as l, rowFocusClass as m, grSortableListSafelist as n, handleClass as o, rowDraggingClass as p, contentClass as r, handleDisabledClass as s, grSortableListConfig as t, indicatorBeforeClass as u };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-D2aNP7Es.js","names":[],"sources":["../../src/components/GrSortableList/grSortableListStyles.ts","../../src/components/GrSortableList/safelist.ts","../../src/components/GrSortableList/config.ts"],"sourcesContent":["export type GrSortableOrientation = 'horizontal' | 'vertical'\n\n/**\n * Классы `GrSortableList`. Единственный источник правды для шаблона и\n * `safelist.ts`: литерал, живущий только здесь, до скана UnoCSS не доходит —\n * хелпер уезжает в общий чанк `dist/chunks/`.\n */\n\nexport const listClass: Record<GrSortableOrientation, string> = {\n vertical: 'flex flex-col',\n horizontal: 'flex flex-row flex-wrap',\n}\n\nexport const rowLayoutClass = 'relative flex items-center gap-2 px-4 py-3 transition-colors duration-[var(--gr-duration-fast)]'\n\n/**\n * Строка — остановка роверного фокуса, поэтому кольцо на ней, а не на ручке:\n * с клавиатуры берут строку целиком, ручка остаётся affordance для мыши.\n */\nexport const rowFocusClass = 'focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] focus-visible:ring-inset'\n\nexport const rowDraggingClass = 'bg-[var(--gr-sortable-row-bg-active,var(--gr-muted))]'\n\n/** Взятая с клавиатуры строка обязана отличаться от просто сфокусированной. */\nexport const rowGrabbedClass = 'bg-[var(--gr-sortable-row-bg-active,var(--gr-muted))] ring-2 ring-[var(--gr-ring)] ring-inset'\n\nexport const rowDisabledClass = 'cursor-not-allowed bg-[var(--gr-muted)] text-[var(--gr-muted-fg)]'\n\nexport const dividedClass = 'divide-y divide-[var(--gr-brd)]'\n\nexport const emptyClass = 'px-4 py-6 text-center text-[length:var(--gr-text-sm)] text-[var(--gr-muted-fg)]'\n\n/**\n * Ручка не табируется: внутри роверного композита свой таб-стоп сломал бы\n * правило «один Tab на список» — тот же приём, что у ручки `GrTree`.\n */\n/**\n * `[touch-action:none]` вместо `touch-none`: утилиты нет ни в `presetMini`, ни\n * в extra-rules, класс молча не превратился бы в CSS — и вертикальный свайп по\n * ручке ушёл бы в прокрутку страницы. Тот же приём у дорожки `GrSlider`.\n */\nexport const handleClass = 'flex shrink-0 items-center justify-center rounded-[var(--gr-radius-sm)] text-[var(--gr-sortable-handle-color,var(--gr-muted-fg))] size-[var(--gr-sortable-handle-size,1.5rem)] cursor-grab [touch-action:none] focus:outline-none'\n\nexport const handleDisabledClass = 'cursor-not-allowed text-[var(--gr-muted-fg)]'\n\nexport const handleIconClass = 'i-lucide-grip-vertical'\n\nexport const contentClass = 'min-w-0 flex-1 text-[length:var(--gr-text-sm)]'\n\n/**\n * Куда встанет строка — псевдоэлемент самой строки, а не отдельный узел:\n * лишний узел между строками ломает и `divide-y`, и подсчёт позиций.\n */\nexport const indicatorBeforeClass = 'before:absolute before:inset-x-0 before:top-0 before:h-[var(--gr-sortable-indicator-width,2px)] before:bg-[var(--gr-sortable-indicator,var(--gr-primary))] before:content-empty'\n\nexport const indicatorAfterClass = 'after:absolute after:inset-x-0 after:bottom-0 after:h-[var(--gr-sortable-indicator-width,2px)] after:bg-[var(--gr-sortable-indicator,var(--gr-primary))] after:content-empty'\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n contentClass,\n dividedClass,\n emptyClass,\n handleClass,\n handleDisabledClass,\n handleIconClass,\n indicatorAfterClass,\n indicatorBeforeClass,\n listClass,\n rowDisabledClass,\n rowDraggingClass,\n rowFocusClass,\n rowGrabbedClass,\n rowLayoutClass,\n} from './grSortableListStyles'\n\nexport const grSortableListSafelist = [...new Set([\n ...Object.values(listClass).flatMap(splitClassTokens),\n ...splitClassTokens(rowLayoutClass),\n ...splitClassTokens(rowFocusClass),\n ...splitClassTokens(rowDraggingClass),\n ...splitClassTokens(rowGrabbedClass),\n ...splitClassTokens(rowDisabledClass),\n ...splitClassTokens(dividedClass),\n ...splitClassTokens(emptyClass),\n ...splitClassTokens(handleClass),\n ...splitClassTokens(handleDisabledClass),\n ...splitClassTokens(handleIconClass),\n ...splitClassTokens(contentClass),\n ...splitClassTokens(indicatorBeforeClass),\n ...splitClassTokens(indicatorAfterClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grSortableListSafelist } from './safelist'\n\nexport const grSortableListConfig = defineGranularComponent(import.meta.url, {\n name: 'GrSortableList',\n safelist: grSortableListSafelist,\n dependencies: ['GrCard'],\n})\n"],"mappings":";;;;;;;;AAQA,IAAa,YAAmD;CAC9D,UAAU;CACV,YAAY;AACd;AAEA,IAAa,iBAAiB;;;;;AAM9B,IAAa,gBAAgB;AAE7B,IAAa,mBAAmB;;AAGhC,IAAa,kBAAkB;AAE/B,IAAa,mBAAmB;AAEhC,IAAa,eAAe;AAE5B,IAAa,aAAa;;;;;;;;;;AAW1B,IAAa,cAAc;AAE3B,IAAa,sBAAsB;AAEnC,IAAa,kBAAkB;AAE/B,IAAa,eAAe;;;;;AAM5B,IAAa,uBAAuB;AAEpC,IAAa,sBAAsB;;;ACrCnC,IAAa,yBAAyB,CAAC,mBAAG,IAAI,IAAI;CAChD,GAAG,OAAO,OAAO,SAAS,CAAC,CAAC,QAAQ,gBAAgB;CACpD,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,YAAY;CAChC,GAAG,iBAAiB,UAAU;CAC9B,GAAG,iBAAiB,WAAW;CAC/B,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,YAAY;CAChC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,mBAAmB;AACzC,CAAC,CAAC;;;AC7BF,IAAa,uBAAuB,wBAAwB,OAAO,KAAK,KAAK;CAC3E,MAAM;CACN,UAAU;CACV,cAAc,CAAC,QAAQ;AACzB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-D94Z9po5.js","names":[],"sources":["../../src/components/GrDrawer/grDrawerStyles.ts","../../src/components/GrDrawer/safelist.ts","../../src/components/GrDrawer/config.ts"],"sourcesContent":["import type { GrOverlaySize } from '../shared/sizes'\n\nexport type GrDrawerSide = 'left' | 'right' | 'top' | 'bottom'\nexport type GrDrawerSize = GrOverlaySize\n\n/** Ось, по которой панель выезжает и по которой считается её размер. */\nexport type GrDrawerAxis = 'horizontal' | 'vertical'\n\nexport function grDrawerAxis(side: GrDrawerSide): GrDrawerAxis {\n return side === 'left' || side === 'right' ? 'horizontal' : 'vertical'\n}\n\n/**\n * Настройка паддингов и рамки секции. Структурно совпадает с\n * `GrDialogSectionConfig` намеренно: потребитель не должен переучиваться при\n * переходе между двумя оверлеями библиотеки. Свой тип, а не импорт из\n * `GrDialog`, — чтобы не тянуть чужой чанк ради двух полей.\n */\nexport interface GrDrawerSectionConfig {\n paddingX?: string\n paddingY?: string\n bordered?: boolean\n}\n\nexport const DEFAULT_GR_DRAWER_HEADER_CONFIG: Required<GrDrawerSectionConfig> = {\n paddingX: 'px-5',\n paddingY: 'py-4',\n bordered: true,\n}\n\nexport const DEFAULT_GR_DRAWER_BODY_CONFIG: Required<GrDrawerSectionConfig> = {\n paddingX: 'px-5',\n paddingY: 'py-5',\n bordered: false,\n}\n\nexport const DEFAULT_GR_DRAWER_FOOTER_CONFIG: Required<GrDrawerSectionConfig> = {\n paddingX: 'px-5',\n paddingY: 'py-4',\n bordered: true,\n}\n\nexport function resolveGrDrawerSectionConfig(\n config: GrDrawerSectionConfig | undefined,\n defaults: Required<GrDrawerSectionConfig>,\n): Required<GrDrawerSectionConfig> {\n return {\n paddingX: config?.paddingX ?? defaults.paddingX,\n paddingY: config?.paddingY ?? defaults.paddingY,\n bordered: config?.bordered ?? defaults.bordered,\n }\n}\n\n/** Слой модального класса — тот же, что у `GrModal`: бэкдроп, фокус, scroll-lock. */\nexport const rootClass = 'fixed inset-0 z-[var(--gr-z-modal)]'\n\n/**\n * Немодальная панель обязана пропускать клики мимо себя: корень растянут на весь\n * экран ради позиционирования, и без этого «немодальный» режим гасил бы всю\n * страницу — ровно то, чего он должен избегать. Панель кликабельность себе\n * возвращает.\n */\nexport const rootPassThroughClass = 'pointer-events-none'\nexport const panelInteractiveClass = 'pointer-events-auto'\n\nexport const overlayClass = 'fixed inset-0 bg-[var(--gr-overlay-bg)]'\n\n/** Ширина панели для боковых сторон. */\nexport const panelWidthBySize: Record<GrDrawerSize, string> = {\n sm: 'w-[360px] max-w-[90vw]',\n md: 'w-[420px] max-w-[92vw]',\n lg: 'w-[560px] max-w-[94vw]',\n xl: 'w-[720px] max-w-[96vw]',\n full: 'w-[100vw]',\n}\n\n/** Высота панели для верхней и нижней сторон — та же шкала, но по своей оси. */\nexport const panelHeightBySize: Record<GrDrawerSize, string> = {\n sm: 'h-[280px] max-h-[90vh]',\n md: 'h-[360px] max-h-[92vh]',\n lg: 'h-[480px] max-h-[94vh]',\n xl: 'h-[640px] max-h-[96vh]',\n full: 'h-[100vh]',\n}\n\nexport const panelSizeByAxis: Record<GrDrawerAxis, Record<GrDrawerSize, string>> = {\n horizontal: panelWidthBySize,\n vertical: panelHeightBySize,\n}\n\n/**\n * Позиция панели. Растяжка по поперечной оси живёт здесь же: у боковой панели\n * это `inset-y-0`, у верхней и нижней — `inset-x-0`, и держать их в разметке\n * значило бы иметь в шаблоне половину стороны.\n */\nexport const panelSideClass: Record<GrDrawerSide, string> = {\n left: 'inset-y-0 left-0 border-r',\n right: 'inset-y-0 right-0 border-l',\n top: 'inset-x-0 top-0 border-b',\n bottom: 'inset-x-0 bottom-0 border-t',\n}\n\nexport const panelTransitionClass: Record<GrDrawerSide, string> = {\n left: '-translate-x-full',\n right: 'translate-x-full',\n top: '-translate-y-full',\n bottom: 'translate-y-full',\n}\n\nexport const panelBaseClass = 'fixed flex flex-col border-[var(--gr-brd)] bg-[var(--gr-card)] text-[var(--gr-card-fg)] shadow-[var(--gr-shadow-2)] outline-none'\n\nexport const headerBorderClass = 'border-b border-[var(--gr-brd)]'\nexport const footerBorderClass = 'border-t border-[var(--gr-brd)]'\nexport const titleClass = 'text-[length:var(--gr-text-sm)] font-700 min-w-0 truncate'\n\n/** Скрытый заголовок: имя слоя есть даже там, где шапки на экране нет. */\nexport const srOnlyTitleClass = 'sr-only'\n\n// Произвольный размер отменяет размерный класс: иначе `w-[420px]` из шкалы\n// спорил бы с инлайновым стилем панели.\nexport function grDrawerPanelClass(options: {\n side: GrDrawerSide\n size: GrDrawerSize\n hasCustomLength: boolean\n}): string {\n const axis = grDrawerAxis(options.side)\n\n return [\n panelBaseClass,\n panelInteractiveClass,\n panelSideClass[options.side],\n options.hasCustomLength ? '' : panelSizeByAxis[axis][options.size],\n ].filter(Boolean).join(' ')\n}\n\nexport function grDrawerPanelEnterFrom(side: GrDrawerSide): string {\n return panelTransitionClass[side]\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n DEFAULT_GR_DRAWER_BODY_CONFIG,\n DEFAULT_GR_DRAWER_FOOTER_CONFIG,\n DEFAULT_GR_DRAWER_HEADER_CONFIG,\n footerBorderClass,\n headerBorderClass,\n overlayClass,\n panelBaseClass,\n panelHeightBySize,\n panelInteractiveClass,\n panelSideClass,\n panelTransitionClass,\n panelWidthBySize,\n rootClass,\n rootPassThroughClass,\n srOnlyTitleClass,\n titleClass,\n} from './grDrawerStyles'\n\n// И динамические токены (`side`/`size`), и литералы отделки панели: `grDrawerStyles.ts`\n// бандлер волен вынести в общий `dist/chunks/`, вне области скана компонента —\n// гейт `src/__tests__/safelist.test.ts`.\nconst sectionDefaults = [\n DEFAULT_GR_DRAWER_HEADER_CONFIG,\n DEFAULT_GR_DRAWER_BODY_CONFIG,\n DEFAULT_GR_DRAWER_FOOTER_CONFIG,\n].flatMap(config => [config.paddingX, config.paddingY])\n\nexport const grDrawerSafelist = [...new Set([\n ...Object.values(panelSideClass).flatMap(splitClassTokens),\n ...Object.values(panelWidthBySize).flatMap(splitClassTokens),\n ...Object.values(panelHeightBySize).flatMap(splitClassTokens),\n ...Object.values(panelTransitionClass).flatMap(splitClassTokens),\n ...splitClassTokens(panelBaseClass),\n ...splitClassTokens(panelInteractiveClass),\n ...splitClassTokens(rootClass),\n ...splitClassTokens(rootPassThroughClass),\n ...splitClassTokens(overlayClass),\n ...splitClassTokens(headerBorderClass),\n ...splitClassTokens(footerBorderClass),\n ...splitClassTokens(titleClass),\n ...splitClassTokens(srOnlyTitleClass),\n ...sectionDefaults.flatMap(splitClassTokens),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\nimport { grDrawerSafelist } from './safelist'\n\nexport const grDrawerConfig = defineGranularComponent(import.meta.url, {\n name: 'GrDrawer',\n dependencies: ['GrButton', 'GrIcon'],\n safelist: grDrawerSafelist,\n})\n"],"mappings":";;;AAQA,SAAgB,aAAa,MAAkC;CAC7D,OAAO,SAAS,UAAU,SAAS,UAAU,eAAe;AAC9D;AAcA,IAAa,kCAAmE;CAC9E,UAAU;CACV,UAAU;CACV,UAAU;AACZ;AAEA,IAAa,gCAAiE;CAC5E,UAAU;CACV,UAAU;CACV,UAAU;AACZ;AAEA,IAAa,kCAAmE;CAC9E,UAAU;CACV,UAAU;CACV,UAAU;AACZ;AAEA,SAAgB,6BACd,QACA,UACiC;CACjC,OAAO;EACL,UAAU,QAAQ,YAAY,SAAS;EACvC,UAAU,QAAQ,YAAY,SAAS;EACvC,UAAU,QAAQ,YAAY,SAAS;CACzC;AACF;;AAGA,IAAa,YAAY;;;;;;;AAQzB,IAAa,uBAAuB;AACpC,IAAa,wBAAwB;AAErC,IAAa,eAAe;;AAG5B,IAAa,mBAAiD;CAC5D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,MAAM;AACR;;AAGA,IAAa,oBAAkD;CAC7D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,MAAM;AACR;AAEA,IAAa,kBAAsE;CACjF,YAAY;CACZ,UAAU;AACZ;;;;;;AAOA,IAAa,iBAA+C;CAC1D,MAAM;CACN,OAAO;CACP,KAAK;CACL,QAAQ;AACV;AAEA,IAAa,uBAAqD;CAChE,MAAM;CACN,OAAO;CACP,KAAK;CACL,QAAQ;AACV;AAEA,IAAa,iBAAiB;AAE9B,IAAa,oBAAoB;AACjC,IAAa,oBAAoB;AACjC,IAAa,aAAa;;AAG1B,IAAa,mBAAmB;AAIhC,SAAgB,mBAAmB,SAIxB;CACT,MAAM,OAAO,aAAa,QAAQ,IAAI;CAEtC,OAAO;EACL;EACA;EACA,eAAe,QAAQ;EACvB,QAAQ,kBAAkB,KAAK,gBAAgB,KAAK,CAAC,QAAQ;CAC/D,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;AAC5B;AAEA,SAAgB,uBAAuB,MAA4B;CACjE,OAAO,qBAAqB;AAC9B;;;AClHA,IAAM,kBAAkB;CACtB;CACA;CACA;AACF,CAAC,CAAC,SAAQ,WAAU,CAAC,OAAO,UAAU,OAAO,QAAQ,CAAC;AAEtD,IAAa,mBAAmB,CAAC,mBAAG,IAAI,IAAI;CAC1C,GAAG,OAAO,OAAO,cAAc,CAAC,CAAC,QAAQ,gBAAgB;CACzD,GAAG,OAAO,OAAO,gBAAgB,CAAC,CAAC,QAAQ,gBAAgB;CAC3D,GAAG,OAAO,OAAO,iBAAiB,CAAC,CAAC,QAAQ,gBAAgB;CAC5D,GAAG,OAAO,OAAO,oBAAoB,CAAC,CAAC,QAAQ,gBAAgB;CAC/D,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,qBAAqB;CACzC,GAAG,iBAAiB,SAAS;CAC7B,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,YAAY;CAChC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,UAAU;CAC9B,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,gBAAgB,QAAQ,gBAAgB;AAC7C,CAAC,CAAC;;;ACzCF,IAAa,iBAAiB,wBAAwB,OAAO,KAAK,KAAK;CACrE,MAAM;CACN,cAAc,CAAC,YAAY,QAAQ;CACnC,UAAU;AACZ,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as splitClassTokens } from "./classTokens-BzazaERD.js";
|
|
2
|
-
import {
|
|
2
|
+
import { c as mergedGaps, d as sequenceSeparatorClass, l as mergedKeyClass, n as comboGaps, o as keyBaseClass, s as keySizes, t as comboBaseClass, u as separatorClass } from "./grKbdStyles-CeZhGQHr.js";
|
|
3
3
|
import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
|
|
4
4
|
//#region src/components/GrKbd/safelist.ts
|
|
5
5
|
var grKbdSafelist = [.../* @__PURE__ */ new Set([
|
|
@@ -7,7 +7,10 @@ var grKbdSafelist = [.../* @__PURE__ */ new Set([
|
|
|
7
7
|
...Object.values(keySizes).flatMap(splitClassTokens),
|
|
8
8
|
...splitClassTokens(comboBaseClass),
|
|
9
9
|
...Object.values(comboGaps).flatMap(splitClassTokens),
|
|
10
|
-
...
|
|
10
|
+
...Object.values(mergedGaps).flatMap(splitClassTokens),
|
|
11
|
+
...splitClassTokens(mergedKeyClass),
|
|
12
|
+
...splitClassTokens(separatorClass),
|
|
13
|
+
...splitClassTokens(sequenceSeparatorClass)
|
|
11
14
|
])];
|
|
12
15
|
//#endregion
|
|
13
16
|
//#region src/components/GrKbd/config.ts
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-DA6SnEoy.js","names":[],"sources":["../../src/components/GrKbd/safelist.ts","../../src/components/GrKbd/config.ts"],"sourcesContent":["import { splitClassTokens } from '../shared/classTokens'\nimport {\n comboBaseClass,\n comboGaps,\n keyBaseClass,\n keySizes,\n mergedGaps,\n mergedKeyClass,\n separatorClass,\n sequenceSeparatorClass,\n} from './grKbdStyles'\n\nexport const grKbdSafelist = [...new Set([\n ...splitClassTokens(keyBaseClass),\n ...Object.values(keySizes).flatMap(splitClassTokens),\n ...splitClassTokens(comboBaseClass),\n ...Object.values(comboGaps).flatMap(splitClassTokens),\n ...Object.values(mergedGaps).flatMap(splitClassTokens),\n ...splitClassTokens(mergedKeyClass),\n ...splitClassTokens(separatorClass),\n ...splitClassTokens(sequenceSeparatorClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grKbdSafelist } from './safelist'\n\nexport const grKbdConfig = defineGranularComponent(import.meta.url, {\n name: 'GrKbd',\n safelist: grKbdSafelist,\n})\n"],"mappings":";;;;AAYA,IAAa,gBAAgB,CAAC,mBAAG,IAAI,IAAI;CACvC,GAAG,iBAAiB,YAAY;CAChC,GAAG,OAAO,OAAO,QAAQ,CAAC,CAAC,QAAQ,gBAAgB;CACnD,GAAG,iBAAiB,cAAc;CAClC,GAAG,OAAO,OAAO,SAAS,CAAC,CAAC,QAAQ,gBAAgB;CACpD,GAAG,OAAO,OAAO,UAAU,CAAC,CAAC,QAAQ,gBAAgB;CACrD,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,sBAAsB;AAC5C,CAAC,CAAC;;;ACjBF,IAAa,cAAc,wBAAwB,OAAO,KAAK,KAAK;CAClE,MAAM;CACN,UAAU;AACZ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-DCFvmHEv2.js","names":[],"sources":["../../src/components/GrTreeSelect/grTreeSelectStyles.ts","../../src/components/GrTreeSelect/safelist.ts","../../src/components/GrTreeSelect/config.ts"],"sourcesContent":["import type { GrControlState } from '../shared/sizes'\n\nimport type { GrInputSize } from '../GrInput'\n\nexport type GrTreeSelectState = GrControlState\n\nexport const sizeClassBySize: Record<GrInputSize, string> = {\n xs: 'h-7 px-2.5 text-[length:var(--gr-control-text-xs)]',\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\n/**\n * Горизонтальный отступ из `sizeClassBySize`, но числом: аддоны задают паддинг\n * инлайн-стилем, а он перекрывает класс — значение нужно обеим формам, и\n * расходиться им нельзя.\n */\nexport const paddingX: Record<GrInputSize, string> = {\n xs: '10px',\n sm: '12px',\n md: '12px',\n lg: '16px',\n}\n\n/** Ширина зоны шеврона/крестика справа (`pr-9` в классе триггера). */\nexport const trailingZoneWidth = '2.25rem'\n\nexport const borderClassByState: Record<GrTreeSelectState, string> = {\n default: 'border-[var(--gr-brd)]',\n success: 'border-[var(--gr-success)] focus-visible:ring-[var(--gr-success)]',\n warning: 'border-[var(--gr-warning)] focus-visible:ring-[var(--gr-warning)]',\n danger: 'border-[var(--gr-danger)] focus-visible:ring-[var(--gr-danger)]',\n}\n\n/**\n * Ошибка валидации красится своей ролью, а не декоративным тоном `danger`:\n * `state=\"danger\"` — это подсветка по решению разработчика, `invalid` — вердикт\n * валидации, и тема вправе развести их по цвету.\n */\nexport const invalidBorderClass = 'border-[var(--gr-invalid-brd)] focus-visible:ring-[var(--gr-invalid-ring)]'\n\n/**\n * Disabled красится фоном и цветом текста, а не прозрачностью: `opacity`\n * разбавляет выверенные на AA токены и роняет контраст подписи.\n */\nexport const shellEnabledClass = 'bg-[var(--gr-bg)] text-[var(--gr-fg)]'\nexport const shellDisabledClass = 'bg-[var(--gr-muted)] text-[var(--gr-muted-fg)] cursor-not-allowed'\n\nexport function grTreeSelectClass(options: {\n size: GrInputSize\n state: GrTreeSelectState\n invalid: boolean\n disabled?: boolean\n}): string {\n return [\n sizeClassBySize[options.size],\n 'pr-9',\n options.disabled ? shellDisabledClass : shellEnabledClass,\n options.invalid ? invalidBorderClass : borderClassByState[options.state],\n ].join(' ')\n}\n\nexport const grTreeSelectPanelClass = 'rounded-[var(--gr-radius-xl)] border border-[var(--gr-brd)] bg-[var(--gr-card)] text-[var(--gr-card-fg)] shadow-[var(--gr-shadow-2)] overflow-hidden'\n\n/**\n * Строка состояния панели: загрузка и «нет данных». По центру и с двойным\n * воздухом — тот же язык, что у `GrSelect`, `GrAutocomplete` и палитры команд.\n * Слева она расходилась с содержимым дерева на паддинг скроллера.\n */\nexport const grTreeSelectStateClass = 'flex items-center justify-center gap-2 px-3 py-4 text-center text-[length:var(--gr-text-sm)] text-[var(--gr-muted-fg)]'\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n borderClassByState,\n grTreeSelectPanelClass,\n grTreeSelectStateClass,\n invalidBorderClass,\n shellDisabledClass,\n shellEnabledClass,\n sizeClassBySize,\n} from './grTreeSelectStyles'\n\nexport const grTreeSelectSafelist = [...new Set([\n ...Object.values(sizeClassBySize).flatMap(splitClassTokens),\n ...Object.values(borderClassByState).flatMap(splitClassTokens),\n ...splitClassTokens(invalidBorderClass),\n 'pr-9',\n ...splitClassTokens(shellEnabledClass),\n ...splitClassTokens(shellDisabledClass),\n ...splitClassTokens(grTreeSelectPanelClass),\n ...splitClassTokens(grTreeSelectStateClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grTreeSelectSafelist } from './safelist'\n\nexport const grTreeSelectConfig = defineGranularComponent(import.meta.url, {\n name: 'GrTreeSelect',\n safelist: grTreeSelectSafelist,\n dependencies: ['GrInput', 'GrTree'],\n})"],"mappings":";;;AAMA,IAAa,kBAA+C;CAC1D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;;AAOA,IAAa,WAAwC;CACnD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,oBAAoB;AAEjC,IAAa,qBAAwD;CACnE,SAAS;CACT,SAAS;CACT,SAAS;CACT,QAAQ;AACV;;;;;;AAOA,IAAa,qBAAqB;;;;;AAMlC,IAAa,oBAAoB;AACjC,IAAa,qBAAqB;AAElC,SAAgB,kBAAkB,SAKvB;CACT,OAAO;EACL,gBAAgB,QAAQ;EACxB;EACA,QAAQ,WAAW,qBAAqB;EACxC,QAAQ,UAAU,qBAAqB,mBAAmB,QAAQ;CACpE,CAAC,CAAC,KAAK,GAAG;AACZ;AAEA,IAAa,yBAAyB;;;;;;AAOtC,IAAa,yBAAyB;;;AC3DtC,IAAa,uBAAuB,CAAC,mBAAG,IAAI,IAAI;CAC9C,GAAG,OAAO,OAAO,eAAe,CAAC,CAAC,QAAQ,gBAAgB;CAC1D,GAAG,OAAO,OAAO,kBAAkB,CAAC,CAAC,QAAQ,gBAAgB;CAC7D,GAAG,iBAAiB,kBAAkB;CACtC;CACA,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,kBAAkB;CACtC,GAAG,iBAAiB,sBAAsB;CAC1C,GAAG,iBAAiB,sBAAsB;AAC5C,CAAC,CAAC;;;AChBF,IAAa,qBAAqB,wBAAwB,OAAO,KAAK,KAAK;CACzE,MAAM;CACN,UAAU;CACV,cAAc,CAAC,WAAW,QAAQ;AACpC,CAAC"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { t as splitClassTokens } from "./classTokens-BzazaERD.js";
|
|
2
|
+
import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
|
|
3
|
+
//#region src/components/GrDataTable/grDataTableStyles.ts
|
|
4
|
+
/** Паддинг ячейки — и в шапке, и в теле: колонки обязаны совпадать по сетке. */
|
|
5
|
+
var cellPaddings = {
|
|
6
|
+
xs: "px-2 py-1.5",
|
|
7
|
+
sm: "px-3 py-2",
|
|
8
|
+
md: "px-4 py-3",
|
|
9
|
+
lg: "px-5 py-4"
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Оценка высоты строки по размеру: два вертикальных отступа ячейки плюс строка
|
|
13
|
+
* текста и рамка. Виртуализация уточняет её замером — точное число здесь знать
|
|
14
|
+
* неоткуда, содержимое ячейки задаёт потребитель.
|
|
15
|
+
*/
|
|
16
|
+
var rowHeightEstimates = {
|
|
17
|
+
xs: 33,
|
|
18
|
+
sm: 41,
|
|
19
|
+
md: 49,
|
|
20
|
+
lg: 57
|
|
21
|
+
};
|
|
22
|
+
/** Заглушки loading/empty: по горизонтали как ячейка, по вертикали просторнее. */
|
|
23
|
+
var placeholderPaddings = {
|
|
24
|
+
xs: "px-2 py-3",
|
|
25
|
+
sm: "px-3 py-4",
|
|
26
|
+
md: "px-4 py-6",
|
|
27
|
+
lg: "px-5 py-8"
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Ручка перестановки колонки. Появляется по наведению на заголовок и по
|
|
31
|
+
* фокусу: постоянная сетка ручек в шапке из десяти колонок читается как рябь,
|
|
32
|
+
* а не как управление.
|
|
33
|
+
*/
|
|
34
|
+
var columnHandleClass = "inline-flex shrink-0 cursor-grab items-center text-[var(--gr-datatable-drag-handle,var(--gr-muted-fg))] opacity-0 [touch-action:none] transition-opacity duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:opacity-100 focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] rounded-[var(--gr-radius-sm)] group-hover:opacity-100";
|
|
35
|
+
var columnHandleActiveClass = "opacity-100";
|
|
36
|
+
var columnHandleIconClass = "i-lucide-grip-vertical block";
|
|
37
|
+
/** Переносимая колонка гасится, чтобы было видно, что она «поднята». */
|
|
38
|
+
var columnDraggingClass = "bg-[var(--gr-muted)]";
|
|
39
|
+
/**
|
|
40
|
+
* Место вставки — полоса по краю ячейки заголовка. Псевдоэлемент, а не свой
|
|
41
|
+
* узел: `<th>` не терпит посторонних детей в раскладке таблицы.
|
|
42
|
+
*/
|
|
43
|
+
var columnDropBeforeClass = "before:absolute before:inset-y-0 before:left-0 before:w-[var(--gr-datatable-drag-indicator-width,2px)] before:bg-[var(--gr-datatable-drag-indicator,var(--gr-primary))] before:content-empty";
|
|
44
|
+
var columnDropAfterClass = "after:absolute after:inset-y-0 after:right-0 after:w-[var(--gr-datatable-drag-indicator-width,2px)] after:bg-[var(--gr-datatable-drag-indicator,var(--gr-primary))] after:content-empty";
|
|
45
|
+
/**
|
|
46
|
+
* Подсветка выбранной строки. Живёт здесь, потому что закреплённой ячейке её
|
|
47
|
+
* приходится повторять: у ячейки свой непрозрачный фон, и подсветка строки
|
|
48
|
+
* сквозь него не видна.
|
|
49
|
+
*/
|
|
50
|
+
var rowSelectedClass = "bg-[color-mix(in_srgb,var(--gr-primary)_8%,transparent)]";
|
|
51
|
+
/**
|
|
52
|
+
* Ручка ширины — полоса у правого края заголовка. Видима она узкой линией, а
|
|
53
|
+
* ловится широкой зоной: попасть в двухпиксельную границу мышью тяжело.
|
|
54
|
+
*/
|
|
55
|
+
var columnResizerClass = "absolute inset-y-0 right-0 z-[1] flex w-3 translate-x-1/2 cursor-col-resize items-stretch justify-center [touch-action:none] focus:outline-none";
|
|
56
|
+
var columnResizerLineClass = "w-[var(--gr-datatable-resizer-width,2px)] bg-transparent transition-colors duration-[var(--gr-duration-fast)]";
|
|
57
|
+
/** Полоса подсвечивается только когда её ведут или на неё встал фокус. */
|
|
58
|
+
var columnResizerLineActiveClass = "bg-[var(--gr-datatable-resizer,var(--gr-primary))]";
|
|
59
|
+
var columnResizerHoverClass = "hover:bg-[var(--gr-datatable-resizer,var(--gr-primary))] focus-visible:bg-[var(--gr-datatable-resizer,var(--gr-primary))]";
|
|
60
|
+
/**
|
|
61
|
+
* Закреплённая колонка липнет к краю прокрутки. Фон обязателен: без него
|
|
62
|
+
* уезжающие под неё ячейки просвечивают насквозь.
|
|
63
|
+
*/
|
|
64
|
+
var columnPinnedClass = "sticky z-[2] bg-[var(--gr-card)]";
|
|
65
|
+
/** Граница группы закреплённых колонок — тень, а не рамка: рамка сдвигает сетку. */
|
|
66
|
+
var columnPinnedLeftEdgeClass = "shadow-[var(--gr-datatable-pinned-shadow,4px_0_6px_-4px_rgba(0,0,0,0.25))]";
|
|
67
|
+
var columnPinnedRightEdgeClass = "shadow-[var(--gr-datatable-pinned-shadow-end,-4px_0_6px_-4px_rgba(0,0,0,0.25))]";
|
|
68
|
+
/** Подпись колонки набирается мельче тела таблицы — она не данные, а навигация. */
|
|
69
|
+
var headerTextSizes = {
|
|
70
|
+
xs: "text-[length:var(--gr-control-text-3xs)]",
|
|
71
|
+
sm: "text-[length:var(--gr-control-text-2xs)]",
|
|
72
|
+
md: "text-[length:var(--gr-control-text-xs)] leading-[var(--gr-leading-xs)]",
|
|
73
|
+
lg: "text-[length:var(--gr-control-text-md)] leading-[var(--gr-leading-sm)]"
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Размер `GrCheckbox` в колонке выбора. Здесь не классы, а ступень шкалы:
|
|
77
|
+
* коробку рисует сам чекбокс — он же держит `indeterminate`, disabled без
|
|
78
|
+
* `opacity` и фокус-кольцо.
|
|
79
|
+
*/
|
|
80
|
+
var selectCheckboxSizes = {
|
|
81
|
+
xs: "xs",
|
|
82
|
+
sm: "sm",
|
|
83
|
+
md: "md",
|
|
84
|
+
lg: "lg"
|
|
85
|
+
};
|
|
86
|
+
/** Ширина колонки выбора: коробка чекбокса плюс горизонтальный паддинг ячейки. */
|
|
87
|
+
var selectColumnWidths = {
|
|
88
|
+
xs: "w-7",
|
|
89
|
+
sm: "w-8",
|
|
90
|
+
md: "w-10",
|
|
91
|
+
lg: "w-12"
|
|
92
|
+
};
|
|
93
|
+
/** Зазор между подписью колонки и стрелкой сортировки. */
|
|
94
|
+
var headerGaps = {
|
|
95
|
+
xs: "gap-1",
|
|
96
|
+
sm: "gap-1.5",
|
|
97
|
+
md: "gap-2",
|
|
98
|
+
lg: "gap-2"
|
|
99
|
+
};
|
|
100
|
+
/** Спиннер в строке загрузки — тем же кеглем, что иконка сортировки рядом. */
|
|
101
|
+
var spinnerSizes = {
|
|
102
|
+
xs: "h-3 w-3",
|
|
103
|
+
sm: "h-3.5 w-3.5",
|
|
104
|
+
md: "h-4 w-4",
|
|
105
|
+
lg: "h-5 w-5"
|
|
106
|
+
};
|
|
107
|
+
/** Стрелка сортировки берёт размер из шкалы `GrIcon` (`xs…lg` → `14…20px`). */
|
|
108
|
+
var sortIconSizes = {
|
|
109
|
+
xs: "xs",
|
|
110
|
+
sm: "xs",
|
|
111
|
+
md: "sm",
|
|
112
|
+
lg: "md"
|
|
113
|
+
};
|
|
114
|
+
//#endregion
|
|
115
|
+
//#region src/components/GrDataTable/safelist.ts
|
|
116
|
+
var grDataTableSafelist = [.../* @__PURE__ */ new Set([
|
|
117
|
+
...Object.values(cellPaddings).flatMap(splitClassTokens),
|
|
118
|
+
...Object.values(placeholderPaddings).flatMap(splitClassTokens),
|
|
119
|
+
...Object.values(headerTextSizes).flatMap(splitClassTokens),
|
|
120
|
+
...Object.values(selectColumnWidths).flatMap(splitClassTokens),
|
|
121
|
+
...Object.values(headerGaps).flatMap(splitClassTokens),
|
|
122
|
+
...Object.values(spinnerSizes).flatMap(splitClassTokens),
|
|
123
|
+
...splitClassTokens(columnHandleClass),
|
|
124
|
+
...splitClassTokens(columnHandleActiveClass),
|
|
125
|
+
...splitClassTokens(columnHandleIconClass),
|
|
126
|
+
...splitClassTokens(columnDraggingClass),
|
|
127
|
+
...splitClassTokens(columnDropBeforeClass),
|
|
128
|
+
...splitClassTokens(columnDropAfterClass),
|
|
129
|
+
...splitClassTokens(columnResizerClass),
|
|
130
|
+
...splitClassTokens(columnResizerLineClass),
|
|
131
|
+
...splitClassTokens(columnResizerLineActiveClass),
|
|
132
|
+
...splitClassTokens(columnResizerHoverClass),
|
|
133
|
+
...splitClassTokens(columnPinnedClass),
|
|
134
|
+
...splitClassTokens(columnPinnedLeftEdgeClass),
|
|
135
|
+
...splitClassTokens(columnPinnedRightEdgeClass),
|
|
136
|
+
...splitClassTokens(rowSelectedClass)
|
|
137
|
+
])];
|
|
138
|
+
//#endregion
|
|
139
|
+
//#region src/components/GrDataTable/config.ts
|
|
140
|
+
var grDataTableConfig = defineGranularComponent(import.meta.url, {
|
|
141
|
+
name: "GrDataTable",
|
|
142
|
+
dependencies: [
|
|
143
|
+
"GrTable",
|
|
144
|
+
"GrIcon",
|
|
145
|
+
"GrCheckbox"
|
|
146
|
+
],
|
|
147
|
+
safelist: grDataTableSafelist
|
|
148
|
+
});
|
|
149
|
+
//#endregion
|
|
150
|
+
export { selectColumnWidths as C, selectCheckboxSizes as S, spinnerSizes as T, headerGaps as _, columnDropAfterClass as a, rowHeightEstimates as b, columnHandleClass as c, columnPinnedLeftEdgeClass as d, columnPinnedRightEdgeClass as f, columnResizerLineClass as g, columnResizerLineActiveClass as h, columnDraggingClass as i, columnHandleIconClass as l, columnResizerHoverClass as m, grDataTableSafelist as n, columnDropBeforeClass as o, columnResizerClass as p, cellPaddings as r, columnHandleActiveClass as s, grDataTableConfig as t, columnPinnedClass as u, headerTextSizes as v, sortIconSizes as w, rowSelectedClass as x, placeholderPaddings as y };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-DEvsMTQE.js","names":[],"sources":["../../src/components/GrDataTable/grDataTableStyles.ts","../../src/components/GrDataTable/safelist.ts","../../src/components/GrDataTable/config.ts"],"sourcesContent":["import type { GrCheckboxSize } from '../GrCheckbox/grCheckboxStyles'\nimport type { GrComponentSize } from '../shared/sizes'\n\nexport type GrDataTableSize = GrComponentSize\n\n/** Паддинг ячейки — и в шапке, и в теле: колонки обязаны совпадать по сетке. */\nexport const cellPaddings: Record<GrDataTableSize, string> = {\n xs: 'px-2 py-1.5',\n sm: 'px-3 py-2',\n md: 'px-4 py-3',\n lg: 'px-5 py-4',\n}\n\n/**\n * Оценка высоты строки по размеру: два вертикальных отступа ячейки плюс строка\n * текста и рамка. Виртуализация уточняет её замером — точное число здесь знать\n * неоткуда, содержимое ячейки задаёт потребитель.\n */\nexport const rowHeightEstimates: Record<GrDataTableSize, number> = {\n xs: 33,\n sm: 41,\n md: 49,\n lg: 57,\n}\n\n/** Заглушки loading/empty: по горизонтали как ячейка, по вертикали просторнее. */\nexport const placeholderPaddings: Record<GrDataTableSize, string> = {\n xs: 'px-2 py-3',\n sm: 'px-3 py-4',\n md: 'px-4 py-6',\n lg: 'px-5 py-8',\n}\n\n/**\n * Ручка перестановки колонки. Появляется по наведению на заголовок и по\n * фокусу: постоянная сетка ручек в шапке из десяти колонок читается как рябь,\n * а не как управление.\n */\nexport const columnHandleClass = 'inline-flex shrink-0 cursor-grab items-center text-[var(--gr-datatable-drag-handle,var(--gr-muted-fg))] opacity-0 [touch-action:none] transition-opacity duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:opacity-100 focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)] rounded-[var(--gr-radius-sm)] group-hover:opacity-100'\n\nexport const columnHandleActiveClass = 'opacity-100'\n\nexport const columnHandleIconClass = 'i-lucide-grip-vertical block'\n\n/** Переносимая колонка гасится, чтобы было видно, что она «поднята». */\nexport const columnDraggingClass = 'bg-[var(--gr-muted)]'\n\n/**\n * Место вставки — полоса по краю ячейки заголовка. Псевдоэлемент, а не свой\n * узел: `<th>` не терпит посторонних детей в раскладке таблицы.\n */\nexport const columnDropBeforeClass = 'before:absolute before:inset-y-0 before:left-0 before:w-[var(--gr-datatable-drag-indicator-width,2px)] before:bg-[var(--gr-datatable-drag-indicator,var(--gr-primary))] before:content-empty'\n\nexport const columnDropAfterClass = 'after:absolute after:inset-y-0 after:right-0 after:w-[var(--gr-datatable-drag-indicator-width,2px)] after:bg-[var(--gr-datatable-drag-indicator,var(--gr-primary))] after:content-empty'\n\n/**\n * Подсветка выбранной строки. Живёт здесь, потому что закреплённой ячейке её\n * приходится повторять: у ячейки свой непрозрачный фон, и подсветка строки\n * сквозь него не видна.\n */\nexport const rowSelectedClass = 'bg-[color-mix(in_srgb,var(--gr-primary)_8%,transparent)]'\n\n/**\n * Ручка ширины — полоса у правого края заголовка. Видима она узкой линией, а\n * ловится широкой зоной: попасть в двухпиксельную границу мышью тяжело.\n */\nexport const columnResizerClass = 'absolute inset-y-0 right-0 z-[1] flex w-3 translate-x-1/2 cursor-col-resize items-stretch justify-center [touch-action:none] focus:outline-none'\n\nexport const columnResizerLineClass = 'w-[var(--gr-datatable-resizer-width,2px)] bg-transparent transition-colors duration-[var(--gr-duration-fast)]'\n\n/** Полоса подсвечивается только когда её ведут или на неё встал фокус. */\nexport const columnResizerLineActiveClass = 'bg-[var(--gr-datatable-resizer,var(--gr-primary))]'\n\nexport const columnResizerHoverClass = 'hover:bg-[var(--gr-datatable-resizer,var(--gr-primary))] focus-visible:bg-[var(--gr-datatable-resizer,var(--gr-primary))]'\n\n/**\n * Закреплённая колонка липнет к краю прокрутки. Фон обязателен: без него\n * уезжающие под неё ячейки просвечивают насквозь.\n */\nexport const columnPinnedClass = 'sticky z-[2] bg-[var(--gr-card)]'\n\n/** Граница группы закреплённых колонок — тень, а не рамка: рамка сдвигает сетку. */\nexport const columnPinnedLeftEdgeClass = 'shadow-[var(--gr-datatable-pinned-shadow,4px_0_6px_-4px_rgba(0,0,0,0.25))]'\n\nexport const columnPinnedRightEdgeClass = 'shadow-[var(--gr-datatable-pinned-shadow-end,-4px_0_6px_-4px_rgba(0,0,0,0.25))]'\n\n/** Подпись колонки набирается мельче тела таблицы — она не данные, а навигация. */\nexport const headerTextSizes: Record<GrDataTableSize, string> = {\n xs: 'text-[length:var(--gr-control-text-3xs)]',\n sm: 'text-[length:var(--gr-control-text-2xs)]',\n md: 'text-[length:var(--gr-control-text-xs)] leading-[var(--gr-leading-xs)]',\n lg: 'text-[length:var(--gr-control-text-md)] leading-[var(--gr-leading-sm)]',\n}\n\n/**\n * Размер `GrCheckbox` в колонке выбора. Здесь не классы, а ступень шкалы:\n * коробку рисует сам чекбокс — он же держит `indeterminate`, disabled без\n * `opacity` и фокус-кольцо.\n */\nexport const selectCheckboxSizes: Record<GrDataTableSize, GrCheckboxSize> = {\n xs: 'xs',\n sm: 'sm',\n md: 'md',\n lg: 'lg',\n}\n\n/** Ширина колонки выбора: коробка чекбокса плюс горизонтальный паддинг ячейки. */\nexport const selectColumnWidths: Record<GrDataTableSize, string> = {\n xs: 'w-7',\n sm: 'w-8',\n md: 'w-10',\n lg: 'w-12',\n}\n\n/** Зазор между подписью колонки и стрелкой сортировки. */\nexport const headerGaps: Record<GrDataTableSize, string> = {\n xs: 'gap-1',\n sm: 'gap-1.5',\n md: 'gap-2',\n lg: 'gap-2',\n}\n\n/** Спиннер в строке загрузки — тем же кеглем, что иконка сортировки рядом. */\nexport const spinnerSizes: Record<GrDataTableSize, string> = {\n xs: 'h-3 w-3',\n sm: 'h-3.5 w-3.5',\n md: 'h-4 w-4',\n lg: 'h-5 w-5',\n}\n\n/** Стрелка сортировки берёт размер из шкалы `GrIcon` (`xs…lg` → `14…20px`). */\nexport const sortIconSizes: Record<GrDataTableSize, GrComponentSize> = {\n xs: 'xs',\n sm: 'xs',\n md: 'sm',\n lg: 'md',\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n cellPaddings,\n columnDraggingClass,\n columnDropAfterClass,\n columnDropBeforeClass,\n columnHandleActiveClass,\n columnHandleClass,\n columnHandleIconClass,\n columnPinnedClass,\n columnPinnedLeftEdgeClass,\n columnPinnedRightEdgeClass,\n columnResizerClass,\n columnResizerHoverClass,\n columnResizerLineActiveClass,\n columnResizerLineClass,\n headerGaps,\n headerTextSizes,\n placeholderPaddings,\n rowSelectedClass,\n selectColumnWidths,\n spinnerSizes,\n} from './grDataTableStyles'\n\nexport const grDataTableSafelist = [...new Set([\n ...Object.values(cellPaddings).flatMap(splitClassTokens),\n ...Object.values(placeholderPaddings).flatMap(splitClassTokens),\n ...Object.values(headerTextSizes).flatMap(splitClassTokens),\n ...Object.values(selectColumnWidths).flatMap(splitClassTokens),\n ...Object.values(headerGaps).flatMap(splitClassTokens),\n ...Object.values(spinnerSizes).flatMap(splitClassTokens),\n ...splitClassTokens(columnHandleClass),\n ...splitClassTokens(columnHandleActiveClass),\n ...splitClassTokens(columnHandleIconClass),\n ...splitClassTokens(columnDraggingClass),\n ...splitClassTokens(columnDropBeforeClass),\n ...splitClassTokens(columnDropAfterClass),\n ...splitClassTokens(columnResizerClass),\n ...splitClassTokens(columnResizerLineClass),\n ...splitClassTokens(columnResizerLineActiveClass),\n ...splitClassTokens(columnResizerHoverClass),\n ...splitClassTokens(columnPinnedClass),\n ...splitClassTokens(columnPinnedLeftEdgeClass),\n ...splitClassTokens(columnPinnedRightEdgeClass),\n ...splitClassTokens(rowSelectedClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grDataTableSafelist } from './safelist'\n\nexport const grDataTableConfig = defineGranularComponent(import.meta.url, {\n name: 'GrDataTable',\n dependencies: ['GrTable', 'GrIcon', 'GrCheckbox'],\n safelist: grDataTableSafelist,\n})\n"],"mappings":";;;;AAMA,IAAa,eAAgD;CAC3D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;;AAOA,IAAa,qBAAsD;CACjE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,sBAAuD;CAClE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;;AAOA,IAAa,oBAAoB;AAEjC,IAAa,0BAA0B;AAEvC,IAAa,wBAAwB;;AAGrC,IAAa,sBAAsB;;;;;AAMnC,IAAa,wBAAwB;AAErC,IAAa,uBAAuB;;;;;;AAOpC,IAAa,mBAAmB;;;;;AAMhC,IAAa,qBAAqB;AAElC,IAAa,yBAAyB;;AAGtC,IAAa,+BAA+B;AAE5C,IAAa,0BAA0B;;;;;AAMvC,IAAa,oBAAoB;;AAGjC,IAAa,4BAA4B;AAEzC,IAAa,6BAA6B;;AAG1C,IAAa,kBAAmD;CAC9D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;;AAOA,IAAa,sBAA+D;CAC1E,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,qBAAsD;CACjE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,aAA8C;CACzD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,eAAgD;CAC3D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,gBAA0D;CACrE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;AChHA,IAAa,sBAAsB,CAAC,mBAAG,IAAI,IAAI;CAC7C,GAAG,OAAO,OAAO,YAAY,CAAC,CAAC,QAAQ,gBAAgB;CACvD,GAAG,OAAO,OAAO,mBAAmB,CAAC,CAAC,QAAQ,gBAAgB;CAC9D,GAAG,OAAO,OAAO,eAAe,CAAC,CAAC,QAAQ,gBAAgB;CAC1D,GAAG,OAAO,OAAO,kBAAkB,CAAC,CAAC,QAAQ,gBAAgB;CAC7D,GAAG,OAAO,OAAO,UAAU,CAAC,CAAC,QAAQ,gBAAgB;CACrD,GAAG,OAAO,OAAO,YAAY,CAAC,CAAC,QAAQ,gBAAgB;CACvD,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,uBAAuB;CAC3C,GAAG,iBAAiB,qBAAqB;CACzC,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,qBAAqB;CACzC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,kBAAkB;CACtC,GAAG,iBAAiB,sBAAsB;CAC1C,GAAG,iBAAiB,4BAA4B;CAChD,GAAG,iBAAiB,uBAAuB;CAC3C,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,yBAAyB;CAC7C,GAAG,iBAAiB,0BAA0B;CAC9C,GAAG,iBAAiB,gBAAgB;AACtC,CAAC,CAAC;;;ACzCF,IAAa,oBAAoB,wBAAwB,OAAO,KAAK,KAAK;CACxE,MAAM;CACN,cAAc;EAAC;EAAW;EAAU;CAAY;CAChD,UAAU;AACZ,CAAC"}
|
|
@@ -58,7 +58,7 @@ var svgClass = "block h-full w-full";
|
|
|
58
58
|
* сам по себе кликов не ловит: интерактив в слоте включает их себе обратно.
|
|
59
59
|
*/
|
|
60
60
|
var centerClass = "pointer-events-none absolute inset-0 flex flex-col items-center justify-center gap-0.5 text-center";
|
|
61
|
-
var valueClass = "font-600 text-[var(--gr-fg)]
|
|
61
|
+
var valueClass = "font-600 text-[var(--gr-fg)] tabular-nums";
|
|
62
62
|
function grProgressCircleArcColor(tone) {
|
|
63
63
|
return arcColorByTone[tone];
|
|
64
64
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-
|
|
1
|
+
{"version":3,"file":"config-MRvhUl-O.js","names":[],"sources":["../../src/components/GrProgressCircle/grProgressCircleStyles.ts","../../src/components/GrProgressCircle/safelist.ts","../../src/components/GrProgressCircle/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\nimport type { GrTone } from '../shared/tones'\n\nexport type GrProgressCircleTone = GrTone\nexport type GrProgressCircleSize = GrComponentSize\n\n/**\n * Диаметр кольца по ступеням. Значение уезжает в `var(--gr-progress-circle-size, …)`,\n * то есть остаётся точкой кастомизации: геометрия дуги считается в единицах\n * `viewBox` и от диаметра не зависит.\n */\nexport const diameterBySize: Record<GrProgressCircleSize, string> = {\n xs: '2rem',\n sm: '3rem',\n md: '4rem',\n lg: '6rem',\n}\n\n/**\n * Толщина обводки в единицах `viewBox`, то есть в процентах диаметра. Мелкое\n * кольцо с той же долей выглядело бы ниткой, поэтому доля растёт вниз по шкале.\n */\nexport const thicknessBySize: Record<GrProgressCircleSize, number> = {\n xs: 12,\n sm: 11,\n md: 10,\n lg: 9,\n}\n\n/** Кегль значения в центре. Тоже с фолбэком: подпись может не влезть под свой формат. */\nexport const valueTextSizeBySize: Record<GrProgressCircleSize, string> = {\n xs: 'var(--gr-text-2xs)',\n sm: 'var(--gr-text-xs)',\n md: 'var(--gr-text-sm)',\n lg: 'var(--gr-text-lg)',\n}\n\nexport const statusIconSizeBySize: Record<GrProgressCircleSize, string> = {\n xs: 'h-3 w-3',\n sm: 'h-4 w-4',\n md: 'h-5 w-5',\n lg: 'h-7 w-7',\n}\n\n/**\n * Тона берутся из темы **линейного** индикатора: слой темизации у прогресса\n * один, и потребитель, перекрасивший `--gr-progress-bg`, ждёт, что круг и\n * полоса сойдутся. Фолбэк на роль обязателен — при гранулярном импорте одного\n * круга `GrProgressBar/themes/*.css` не подключается.\n */\nexport const arcColorByTone: Record<GrProgressCircleTone, string> = {\n primary: 'var(--gr-progress-bg,var(--gr-primary))',\n neutral: 'var(--gr-progress-neutral-bg,var(--gr-secondary))',\n success: 'var(--gr-progress-success-bg,var(--gr-success))',\n warning: 'var(--gr-progress-warning-bg,var(--gr-warning))',\n danger: 'var(--gr-progress-danger-bg,var(--gr-danger))',\n info: 'var(--gr-progress-info-bg,var(--gr-info))',\n slate: 'var(--gr-progress-slate-bg,var(--gr-slate))',\n azure: 'var(--gr-progress-azure-bg,var(--gr-azure))',\n}\n\nexport const rootClass = 'relative inline-flex shrink-0 items-center justify-center'\n\nexport const svgClass = 'block h-full w-full'\n\n/**\n * Центр — сосед виджета, а не его потомок, поэтому позиционируется абсолютно и\n * сам по себе кликов не ловит: интерактив в слоте включает их себе обратно.\n */\nexport const centerClass = 'pointer-events-none absolute inset-0 flex flex-col items-center justify-center gap-0.5 text-center'\n\nexport const valueClass = 'font-600 text-[var(--gr-fg)] tabular-nums'\n\nexport function grProgressCircleArcColor(tone: GrProgressCircleTone): string {\n return arcColorByTone[tone]\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n centerClass,\n rootClass,\n statusIconSizeBySize,\n svgClass,\n valueClass,\n} from './grProgressCircleStyles'\n\nexport const grProgressCircleSafelist = [...new Set([\n ...Object.values(statusIconSizeBySize).flatMap(splitClassTokens),\n ...splitClassTokens(rootClass),\n ...splitClassTokens(svgClass),\n ...splitClassTokens(centerClass),\n ...splitClassTokens(valueClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grProgressCircleSafelist } from './safelist'\n\nexport const grProgressCircleConfig = defineGranularComponent(import.meta.url, {\n name: 'GrProgressCircle',\n safelist: grProgressCircleSafelist,\n})\n"],"mappings":";;;;;;;;AAWA,IAAa,iBAAuD;CAClE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;AAMA,IAAa,kBAAwD;CACnE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;AAGA,IAAa,sBAA4D;CACvE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,uBAA6D;CACxE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;;;AAQA,IAAa,iBAAuD;CAClE,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,QAAQ;CACR,MAAM;CACN,OAAO;CACP,OAAO;AACT;AAEA,IAAa,YAAY;AAEzB,IAAa,WAAW;;;;;AAMxB,IAAa,cAAc;AAE3B,IAAa,aAAa;AAE1B,SAAgB,yBAAyB,MAAoC;CAC3E,OAAO,eAAe;AACxB;;;AClEA,IAAa,2BAA2B,CAAC,mBAAG,IAAI,IAAI;CAClD,GAAG,OAAO,OAAO,oBAAoB,CAAC,CAAC,QAAQ,gBAAgB;CAC/D,GAAG,iBAAiB,SAAS;CAC7B,GAAG,iBAAiB,QAAQ;CAC5B,GAAG,iBAAiB,WAAW;CAC/B,GAAG,iBAAiB,UAAU;AAChC,CAAC,CAAC;;;ACXF,IAAa,yBAAyB,wBAAwB,OAAO,KAAK,KAAK;CAC7E,MAAM;CACN,UAAU;AACZ,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { t as splitClassTokens } from "./classTokens-BzazaERD.js";
|
|
2
|
+
import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
|
|
3
|
+
//#region src/components/GrToaster/grToasterStyles.ts
|
|
4
|
+
var PLACEMENT_CLASS = {
|
|
5
|
+
"top-right": "right-4 top-4",
|
|
6
|
+
"top-left": "left-4 top-4",
|
|
7
|
+
"bottom-right": "right-4 bottom-4",
|
|
8
|
+
"bottom-left": "left-4 bottom-4"
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Куда смахивается тост: к своему краю экрана. Стек у правого края уходит
|
|
12
|
+
* вправо, у левого — влево; смахивание «вглубь экрана» читалось бы как попытка
|
|
13
|
+
* достать что-то из-под тоста, а не выбросить его.
|
|
14
|
+
*/
|
|
15
|
+
var SWIPE_DIRECTION = {
|
|
16
|
+
"top-right": 1,
|
|
17
|
+
"bottom-right": 1,
|
|
18
|
+
"top-left": -1,
|
|
19
|
+
"bottom-left": -1
|
|
20
|
+
};
|
|
21
|
+
/** Доля ширины тоста, после которой отпускание закрывает, а не возвращает. */
|
|
22
|
+
var SWIPE_THRESHOLD_RATIO = .25;
|
|
23
|
+
/**
|
|
24
|
+
* Смещение, на котором тост становится полностью прозрачным, — вдвое дальше
|
|
25
|
+
* порога. К моменту закрытия он уже наполовину растворён, и уход не выглядит
|
|
26
|
+
* мгновенным исчезновением.
|
|
27
|
+
*/
|
|
28
|
+
function swipeOpacity(offset, threshold) {
|
|
29
|
+
return Math.max(0, 1 - Math.abs(offset) / (threshold * 2));
|
|
30
|
+
}
|
|
31
|
+
//#endregion
|
|
32
|
+
//#region src/components/GrToaster/safelist.ts
|
|
33
|
+
var grToasterSafelist = [...new Set(Object.values(PLACEMENT_CLASS).flatMap(splitClassTokens))];
|
|
34
|
+
//#endregion
|
|
35
|
+
//#region src/components/GrToaster/config.ts
|
|
36
|
+
var grToasterConfig = defineGranularComponent(import.meta.url, {
|
|
37
|
+
name: "GrToaster",
|
|
38
|
+
dependencies: ["GrButton", "GrIcon"],
|
|
39
|
+
safelist: grToasterSafelist
|
|
40
|
+
});
|
|
41
|
+
//#endregion
|
|
42
|
+
export { SWIPE_THRESHOLD_RATIO as a, SWIPE_DIRECTION as i, grToasterSafelist as n, swipeOpacity as o, PLACEMENT_CLASS as r, grToasterConfig as t };
|