@feugene/granularity 0.16.0 → 0.19.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/chevron-left-D8AUBAM7.js +23 -0
- package/dist/chunks/chevron-left-D8AUBAM7.js.map +1 -0
- package/dist/chunks/{chevron-right-BfqMVpbB.js → chevron-right-C6Z01h0X.js} +1 -22
- package/dist/chunks/chevron-right-C6Z01h0X.js.map +1 -0
- package/dist/chunks/config-8Pcutu1j2.js.map +1 -0
- package/dist/chunks/{config-K0C2tcLB.js → config-9PYRZlKE.js} +1 -1
- package/dist/chunks/{config-K0C2tcLB.js.map → config-9PYRZlKE.js.map} +1 -1
- 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-BJ7Bv_G2.js +148 -0
- package/dist/chunks/config-BJ7Bv_G2.js.map +1 -0
- package/dist/chunks/config-BKvX0q102.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-D8tSR2uS.js → config-Be9k9bOf.js} +2 -8
- package/dist/chunks/config-Be9k9bOf.js.map +1 -0
- 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-DpqOnJiz2.js → config-CDat1wXf2.js} +1 -1
- package/dist/chunks/config-CDat1wXf2.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-CY0_6cMi2.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-DAX8Deh1.js +68 -0
- package/dist/chunks/config-DAX8Deh1.js.map +1 -0
- package/dist/chunks/config-DKdlqXiY.js.map +1 -1
- 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-Rw9OyW702.js.map +1 -0
- 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/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/generated-BRkbhyxk.js +3270 -0
- package/dist/chunks/generated-BRkbhyxk.js.map +1 -0
- 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-C6uAujdJ.js} +23 -21
- package/dist/chunks/granular-provider-C6uAujdJ.js.map +1 -0
- package/dist/chunks/grip-vertical-lRha2S7q.js +16 -0
- package/dist/chunks/grip-vertical-lRha2S7q.js.map +1 -0
- package/dist/chunks/icon-Dag2tIMs.js +21 -0
- package/dist/chunks/icon-Dag2tIMs.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/{portalRoot-CWD4zHBm.js → portalRoot-CVhCgdG6.js} +10 -1
- package/dist/chunks/{portalRoot-CWD4zHBm.js.map → portalRoot-CVhCgdG6.js.map} +1 -1
- 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-DrQVYwwA.js} +2 -2
- package/dist/chunks/{useModalOverlay-DCM4d3yA.js.map → useModalOverlay-DrQVYwwA.js.map} +1 -1
- package/dist/chunks/{usePortalTarget-RyzEgNTb.js → usePortalTarget-Cn-Wiz5d.js} +1 -1
- package/dist/chunks/{usePortalTarget-RyzEgNTb.js.map → usePortalTarget-Cn-Wiz5d.js.map} +1 -1
- package/dist/components/GrAutocomplete/chunks/{GrAutocomplete-CQ9T7Lly.js → GrAutocomplete-gY4Xopza.js} +35 -26
- package/dist/components/GrAutocomplete/chunks/GrAutocomplete-gY4Xopza.js.map +1 -0
- package/dist/components/GrAutocomplete/index.js +1 -1
- package/dist/components/GrAutocomplete/styles.css +1 -1
- package/dist/components/GrBreadcrumbs/chunks/{GrBreadcrumbs-BCNGDS6k.js → GrBreadcrumbs-DS_-PBVt.js} +8 -7
- package/dist/components/GrBreadcrumbs/chunks/GrBreadcrumbs-DS_-PBVt.js.map +1 -0
- package/dist/components/GrBreadcrumbs/index.js +1 -1
- package/dist/components/GrCollapse/chunks/{GrCollapse-B2Fc6A9r.js.map → GrCollapse-Kk0DE8tb.js.map} +1 -1
- package/dist/components/GrCollapse/index.js +1 -1
- package/dist/components/GrColorPicker/chunks/{GrColorPicker-bnYBRGk8.js → GrColorPicker-CkBTzkqn.js} +4 -4
- package/dist/components/GrColorPicker/chunks/{GrColorPicker-bnYBRGk8.js.map → GrColorPicker-CkBTzkqn.js.map} +1 -1
- package/dist/components/GrColorPicker/index.js +2 -2
- package/dist/components/GrCommandPalette/chunks/{GrCommandPalette-MWDYDPNC.js → GrCommandPalette-BugTlGdj.js} +41 -16
- package/dist/components/GrCommandPalette/chunks/GrCommandPalette-BugTlGdj.js.map +1 -0
- package/dist/components/GrCommandPalette/index.js +2 -2
- 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-Ds5T0GiR.js} +1 -1
- package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-DaQmlp1_.js.map → GrConfirmDialog-Ds5T0GiR.js.map} +1 -1
- package/dist/components/GrConfirmDialog/index.js +1 -1
- package/dist/components/GrDataTable/chunks/{GrDataTable-DVFho9Cj.js → GrDataTable-CYe2A2WA.js} +498 -48
- package/dist/components/GrDataTable/chunks/GrDataTable-CYe2A2WA.js.map +1 -0
- package/dist/components/GrDataTable/index.js +2 -2
- package/dist/components/GrDialog/chunks/{GrDialog-AE1gIZuz.js → GrDialog-C3tYaA8v.js} +1 -1
- package/dist/components/GrDialog/chunks/{GrDialog-AE1gIZuz.js.map → GrDialog-C3tYaA8v.js.map} +1 -1
- package/dist/components/GrDialog/index.js +1 -1
- package/dist/components/GrDialogService/chunks/{GrDialogService-B4DYWDkA.js → GrDialogService-CTBiiJDI.js} +3 -3
- package/dist/components/GrDialogService/chunks/{GrDialogService-B4DYWDkA.js.map → GrDialogService-CTBiiJDI.js.map} +1 -1
- package/dist/components/GrDialogService/index.js +1 -1
- package/dist/components/GrDivider/chunks/{GrDivider-B2Xwc_QO.js → GrDivider-xxq1_fIl.js} +1 -1
- package/dist/components/GrDivider/chunks/{GrDivider-B2Xwc_QO.js.map → GrDivider-xxq1_fIl.js.map} +1 -1
- package/dist/components/GrDivider/index.js +2 -2
- package/dist/components/GrDrawer/chunks/{GrDrawer-DQwi6aRw.js → GrDrawer-BSSuiNHU.js} +1 -1
- package/dist/components/GrDrawer/chunks/{GrDrawer-DQwi6aRw.js.map → GrDrawer-BSSuiNHU.js.map} +1 -1
- package/dist/components/GrDrawer/index.js +1 -1
- package/dist/components/GrDropdown/chunks/{GrDropdown-BLng6V1m.js → GrDropdown-Bh6UK2M5.js} +3 -3
- package/dist/components/GrDropdown/chunks/{GrDropdown-BLng6V1m.js.map → GrDropdown-Bh6UK2M5.js.map} +1 -1
- package/dist/components/GrDropdown/index.js +1 -1
- package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-BImk2Vs7.js → GrDropdownMenu-LyfEFUbg.js} +2 -2
- package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-BImk2Vs7.js.map → GrDropdownMenu-LyfEFUbg.js.map} +1 -1
- package/dist/components/GrDropdownMenu/index.js +2 -2
- 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-DfD4euH5.js} +48 -23
- package/dist/components/GrImageViewer/chunks/GrImageViewer-DfD4euH5.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-CbMMr6W1.js} +1 -1
- package/dist/components/GrModal/chunks/{GrModal-B8I78T0N.js.map → GrModal-CbMMr6W1.js.map} +1 -1
- package/dist/components/GrModal/index.js +1 -1
- package/dist/components/GrNumberInput/chunks/{GrNumberInput-CZOyPz4J.js → GrNumberInput-B5CHZDBj.js} +2 -1
- package/dist/components/GrNumberInput/chunks/{GrNumberInput-CZOyPz4J.js.map → GrNumberInput-B5CHZDBj.js.map} +1 -1
- package/dist/components/GrNumberInput/index.js +1 -1
- package/dist/components/GrPagination/chunks/{GrPagination-B6N0QZBf.js → GrPagination-BM4FrD6Q.js} +4 -4
- package/dist/components/GrPagination/chunks/GrPagination-BM4FrD6Q.js.map +1 -0
- package/dist/components/GrPagination/index.js +1 -1
- package/dist/components/GrPopover/chunks/{GrPopover-B1eRCOoO.js → GrPopover-DMH4Jjst.js} +1 -1
- package/dist/components/GrPopover/chunks/{GrPopover-B1eRCOoO.js.map → GrPopover-DMH4Jjst.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-Pwr9NPxK.js} +3 -3
- package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-Ct174NVD.js.map → GrPromptDialog-Pwr9NPxK.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-DVFH3lYu.js} +10 -9
- package/dist/components/GrRating/chunks/GrRating-DVFH3lYu.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-B-Voni7D.js} +69 -55
- package/dist/components/GrSelect/chunks/GrSelect-B-Voni7D.js.map +1 -0
- package/dist/components/GrSelect/index.js +1 -1
- package/dist/components/GrSelect/styles.css +1 -1
- package/dist/components/GrSidebar/chunks/{GrSidebar-DRGnnViw.js → GrSidebar-i7AxjhY_.js} +3 -2
- package/dist/components/GrSidebar/chunks/{GrSidebar-DRGnnViw.js.map → GrSidebar-i7AxjhY_.js.map} +1 -1
- package/dist/components/GrSidebar/index.js +2 -2
- package/dist/components/GrSkeleton/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-XB7mXM1W.js +277 -0
- package/dist/components/GrSortableList/chunks/GrSortableList-XB7mXM1W.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-DOsM6s5V.js} +54 -7
- package/dist/components/GrStatistic/chunks/GrStatistic-DOsM6s5V.js.map +1 -0
- 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-f3-oQenu.js} +55 -65
- package/dist/components/GrTabs/chunks/GrTabs-f3-oQenu.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-Dqja0Lf9.js} +114 -13
- package/dist/components/GrToaster/chunks/GrToaster-Dqja0Lf9.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-Cn08heWz.js} +2 -2
- package/dist/components/GrTooltip/chunks/{GrTooltip-DEbejfhA.js.map → GrTooltip-Cn08heWz.js.map} +1 -1
- package/dist/components/GrTooltip/index.js +2 -2
- package/dist/components/GrTree/chunks/{GrTree-wfdbvygw.js → GrTree-BR9a2pay.js} +148 -111
- package/dist/components/GrTree/chunks/GrTree-BR9a2pay.js.map +1 -0
- package/dist/components/GrTree/index.js +2 -2
- package/dist/components/GrTree/styles.css +1 -1
- package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-lLWmAMtI.js → GrTreeSelect--muUeB0v.js} +28 -14
- package/dist/components/GrTreeSelect/chunks/GrTreeSelect--muUeB0v.js.map +1 -0
- package/dist/components/GrTreeSelect/index.js +1 -1
- package/dist/composables/useAnnouncer.js +1 -1
- 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/usePortalTarget.js +1 -1
- 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/directives/loading.js +1 -1
- package/dist/granular-provider-node.js +1 -1
- package/dist/granular-provider.js +1 -1
- package/dist/i18n/all.js +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/index.js +77 -68
- package/dist/styles/themes/dark.css +6 -1
- package/dist/testing.js +199 -0
- package/dist/testing.js.map +1 -0
- package/dist/theme-apply.js +33 -0
- package/dist/theme-apply.js.map +1 -0
- package/dist/theme.js +501 -0
- package/dist/theme.js.map +1 -0
- package/dist/tokens.js +1 -3131
- 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/GrBreadcrumbs/grBreadcrumbsStyles.d.ts +5 -2
- 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/GrCommandPalette.vue.d.ts +6 -6
- package/dist/types/src/components/GrCommandPalette/defaults.d.ts +1 -1
- package/dist/types/src/components/GrCommandPalette/filtering.d.ts +6 -2
- 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 +38 -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/GrRating.vue.d.ts +9 -4
- 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 +37 -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/GrStatistic.vue.d.ts +12 -9
- package/dist/types/src/components/GrStatistic/defaults.d.ts +1 -1
- package/dist/types/src/components/GrStatistic/grStatisticStyles.d.ts +1 -2
- 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/GrTabs.vue.d.ts +6 -2
- 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/GrTree/grTreeProps.d.ts +11 -4
- package/dist/types/src/components/GrTree/safelist.d.ts +1 -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/components/shared/icon.d.ts +13 -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/types/src/testing/announcer.d.ts +10 -0
- package/dist/types/src/testing/context.d.ts +36 -0
- package/dist/types/src/testing/env.d.ts +25 -0
- package/dist/types/src/testing/geometry.d.ts +23 -0
- package/dist/types/src/testing/index.d.ts +12 -0
- package/dist/types/src/testing/pointer.d.ts +31 -0
- package/dist/types/src/theme/apply.d.ts +27 -0
- package/dist/types/src/theme/color.d.ts +35 -0
- package/dist/types/src/theme/extendTheme.d.ts +63 -0
- package/dist/types/src/theme/index.d.ts +22 -0
- package/dist/types/src/theme/roles.d.ts +16 -0
- package/dist/types/src/theme/tone.d.ts +32 -0
- package/dist/types/src/theme/validate.d.ts +16 -0
- package/dist/types/src/tokens/types.d.ts +8 -0
- package/dist/web-types.json +214 -13
- package/package.json +47 -4
- package/tokens/themes/dark.json +2 -1
- package/dist/chunks/chevron-right-BfqMVpbB.js.map +0 -1
- package/dist/chunks/config-8Pcutu1j.js.map +0 -1
- package/dist/chunks/config-B-g6lT19.js.map +0 -1
- package/dist/chunks/config-BE6n20np.js.map +0 -1
- package/dist/chunks/config-BKvX0q10.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-CY0_6cMi.js.map +0 -1
- package/dist/chunks/config-Cw6TDzWv2.js.map +0 -1
- package/dist/chunks/config-D8tSR2uS.js.map +0 -1
- package/dist/chunks/config-DpqOnJiz2.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-Rw9OyW70.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/GrBreadcrumbs/chunks/GrBreadcrumbs-BCNGDS6k.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/GrStatistic/chunks/GrStatistic-CttyoYPT.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/components/GrTreeSelect/chunks/GrTreeSelect-lLWmAMtI.js.map +0 -1
- package/dist/tokens.js.map +0 -1
- package/dist/chunks/{config-8Pcutu1j.js → config-8Pcutu1j2.js} +0 -0
- package/dist/chunks/{config-BE6n20np.js → config-BE6n20np2.js} +0 -0
- package/dist/chunks/{config-BKvX0q10.js → config-BKvX0q102.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-CY0_6cMi.js → config-CY0_6cMi2.js} +0 -0
- package/dist/chunks/{config-Rw9OyW70.js → config-Rw9OyW702.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/components/GrCollapse/chunks/{GrCollapse-B2Fc6A9r.js → GrCollapse-Kk0DE8tb.js} +1 -1
- /package/dist/types/src/composables/{internal/useComboboxNavigation.d.ts → useComboboxNavigation.d.ts} +0 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { createElementBlock, createElementVNode, markRaw, openBlock } from "vue";
|
|
2
|
+
//#region ~icons/lucide/chevron-left
|
|
3
|
+
var _hoisted_1 = {
|
|
4
|
+
viewBox: "0 0 24 24",
|
|
5
|
+
width: "1.2em",
|
|
6
|
+
height: "1.2em"
|
|
7
|
+
};
|
|
8
|
+
function render$1(_ctx, _cache) {
|
|
9
|
+
return openBlock(), createElementBlock("svg", _hoisted_1, [..._cache[0] || (_cache[0] = [createElementVNode("path", {
|
|
10
|
+
fill: "none",
|
|
11
|
+
stroke: "currentColor",
|
|
12
|
+
"stroke-linecap": "round",
|
|
13
|
+
"stroke-linejoin": "round",
|
|
14
|
+
"stroke-width": "2",
|
|
15
|
+
d: "m15 18l-6-6l6-6"
|
|
16
|
+
}, null, -1)])]);
|
|
17
|
+
}
|
|
18
|
+
var chevron_left_default = markRaw({
|
|
19
|
+
name: "lucide-chevron-left",
|
|
20
|
+
render: render$1
|
|
21
|
+
});
|
|
22
|
+
//#endregion
|
|
23
|
+
export { chevron_left_default as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chevron-left-D8AUBAM7.js","names":[],"sources":[],"mappings":""}
|
|
@@ -1,25 +1,4 @@
|
|
|
1
1
|
import { createElementBlock, createElementVNode, markRaw, openBlock } from "vue";
|
|
2
|
-
//#region ~icons/lucide/chevron-left
|
|
3
|
-
var _hoisted_1$1 = {
|
|
4
|
-
viewBox: "0 0 24 24",
|
|
5
|
-
width: "1.2em",
|
|
6
|
-
height: "1.2em"
|
|
7
|
-
};
|
|
8
|
-
function render$2(_ctx, _cache) {
|
|
9
|
-
return openBlock(), createElementBlock("svg", _hoisted_1$1, [..._cache[0] || (_cache[0] = [createElementVNode("path", {
|
|
10
|
-
fill: "none",
|
|
11
|
-
stroke: "currentColor",
|
|
12
|
-
"stroke-linecap": "round",
|
|
13
|
-
"stroke-linejoin": "round",
|
|
14
|
-
"stroke-width": "2",
|
|
15
|
-
d: "m15 18l-6-6l6-6"
|
|
16
|
-
}, null, -1)])]);
|
|
17
|
-
}
|
|
18
|
-
var chevron_left_default = markRaw({
|
|
19
|
-
name: "lucide-chevron-left",
|
|
20
|
-
render: render$2
|
|
21
|
-
});
|
|
22
|
-
//#endregion
|
|
23
2
|
//#region ~icons/lucide/chevron-right
|
|
24
3
|
var _hoisted_1 = {
|
|
25
4
|
viewBox: "0 0 24 24",
|
|
@@ -41,4 +20,4 @@ var chevron_right_default = markRaw({
|
|
|
41
20
|
render: render$1
|
|
42
21
|
});
|
|
43
22
|
//#endregion
|
|
44
|
-
export {
|
|
23
|
+
export { chevron_right_default as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chevron-right-C6Z01h0X.js","names":[],"sources":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-8Pcutu1j2.js","names":[],"sources":["../../src/components/GrSkeleton/config.ts"],"sourcesContent":["import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nexport const grSkeletonConfig = defineGranularComponent(import.meta.url, {\n name: 'GrSkeleton',\n})\n"],"mappings":";;AAEA,IAAa,mBAAmB,wBAAwB,OAAO,KAAK,KAAK,EACvE,MAAM,aACR,CAAC"}
|
|
@@ -71,7 +71,7 @@ var grCommandPaletteSafelist = [.../* @__PURE__ */ new Set([
|
|
|
71
71
|
...splitClassTokens(commandMatchClass),
|
|
72
72
|
...splitClassTokens(commandEmptyClass),
|
|
73
73
|
...splitClassTokens(commandFooterClass),
|
|
74
|
-
...splitClassTokens("
|
|
74
|
+
...splitClassTokens("animate-spin")
|
|
75
75
|
])];
|
|
76
76
|
//#endregion
|
|
77
77
|
//#region src/components/GrCommandPalette/config.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-
|
|
1
|
+
{"version":3,"file":"config-9PYRZlKE.js","names":[],"sources":["../../src/components/GrCommandPalette/grCommandPaletteStyles.ts","../../src/components/GrCommandPalette/safelist.ts","../../src/components/GrCommandPalette/config.ts"],"sourcesContent":["import type { GrOverlaySize } from '../shared/sizes'\n\nexport type GrCommandPaletteSize = GrOverlaySize\n\n/**\n * Кастомизация через CSS-переменные:\n *\n * - `--gr-command-active-bg` — фон активной (подсвеченной) команды.\n * - `--gr-command-match-bg` — фон совпавшего с запросом фрагмента.\n * - `--gr-command-list-max-height` — максимальная высота списка (иначе — проп `maxHeight`).\n */\n\n// Размер палитры ложится на размеры панели `GrModal` — палитра не изобретает свои ширины.\nexport const commandPaletteModalSizeBySize: Record<GrCommandPaletteSize, GrOverlaySize> = {\n sm: 'sm',\n md: 'md',\n lg: 'lg',\n xl: 'xl',\n full: 'full',\n}\n\nexport const commandSearchRowClass = 'flex items-center gap-2 border-b border-[var(--gr-brd)] px-4'\nexport const commandSearchInputClass = 'min-w-0 flex-1 bg-transparent py-3.5 text-[length:var(--gr-command-input-font-size,15px)] text-[var(--gr-fg)] placeholder:text-[var(--gr-muted-fg)] focus:outline-none'\n\nexport const commandGroupLabelClass = 'px-3 pb-1 pt-3 text-[length:var(--gr-control-text-2xs)] font-medium uppercase tracking-wide text-[var(--gr-muted-fg)]'\n\n/** Описание под меткой команды. Цвет приходит из `commandItemMutedClass`. */\nexport const commandItemDescriptionClass = 'block truncate text-[length:var(--gr-text-xs)]'\n\nexport const commandItemMutedEnabledClass = 'text-[var(--gr-muted-fg)]'\nexport const commandItemMutedDisabledClass = 'text-[var(--gr-disabled-fg)]'\n\n/**\n * Приглушённые части команды — иконка и описание.\n *\n * Гаснут вместе со строкой: свой `--gr-muted-fg` оставил бы у выключенной\n * команды иконку темнее её же метки.\n */\nexport function commandItemMutedClass(disabled: boolean): string {\n return disabled ? commandItemMutedDisabledClass : commandItemMutedEnabledClass\n}\n\n/** Совпавший с запросом фрагмент. Фон — тот же токен подсветки, что у активной строки. */\nexport const commandMatchClass = 'rounded-[var(--gr-radius-xs)] bg-[var(--gr-command-match-bg,color-mix(in_srgb,var(--gr-primary)_22%,transparent))] text-[var(--gr-fg)]'\n\n/**\n * Цвета текста в базе нет намеренно: два `text-[…]` в одном списке классов\n * разрешаются порядком правил в сгенерированном CSS, а не порядком в атрибуте, —\n * и цвет выключенной команды молча проигрывал бы базовому.\n */\nexport const commandItemBaseClass = 'flex w-full items-center gap-3 rounded-[var(--gr-command-item-radius,10px)] px-3 py-2 text-left text-[length:var(--gr-control-text-md)]'\nexport const commandItemEnabledClass = 'cursor-pointer text-[var(--gr-fg)]'\nexport const commandItemActiveClass = 'bg-[var(--gr-command-active-bg,color-mix(in_srgb,var(--gr-muted)_45%,transparent))]'\n/**\n * Выключенная команда гасится токенами состояния, а не `opacity`: прозрачность\n * разбавляет выверенные на AA токены текста и роняет контраст.\n */\nexport const commandItemDisabledClass = 'cursor-not-allowed bg-[var(--gr-disabled-bg)] text-[var(--gr-disabled-fg)]'\n\nexport function commandItemClass(options: { active: boolean, disabled: boolean }): string {\n return [\n commandItemBaseClass,\n options.disabled ? commandItemDisabledClass : commandItemEnabledClass,\n options.active && !options.disabled ? commandItemActiveClass : '',\n ]\n .filter(Boolean)\n .join(' ')\n}\n\nexport const commandEmptyClass = 'px-4 py-10 text-center text-[length:var(--gr-control-text-sm)] text-[var(--gr-muted-fg)]'\nexport const commandFooterClass = 'flex items-center gap-3 border-t border-[var(--gr-brd)] px-4 py-2 text-[length:var(--gr-control-text-2xs)] text-[var(--gr-muted-fg)]'\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n commandEmptyClass,\n commandFooterClass,\n commandGroupLabelClass,\n commandItemActiveClass,\n commandItemBaseClass,\n commandItemDescriptionClass,\n commandItemDisabledClass,\n commandItemEnabledClass,\n commandItemMutedDisabledClass,\n commandItemMutedEnabledClass,\n commandMatchClass,\n commandSearchInputClass,\n commandSearchRowClass,\n} from './grCommandPaletteStyles'\n\n// Вся вёрстка палитры живёт строковыми литералами в grCommandPaletteStyles.ts —\n// на сборке они уезжают в общий dist-чанк, который granularContent не сканирует.\n// Поэтому перечисляем явно (docs/gotchas.md §2).\nexport const grCommandPaletteSafelist = [...new Set([\n ...splitClassTokens(commandSearchRowClass),\n ...splitClassTokens(commandSearchInputClass),\n ...splitClassTokens(commandGroupLabelClass),\n ...splitClassTokens(commandItemBaseClass),\n ...splitClassTokens(commandItemActiveClass),\n ...splitClassTokens(commandItemDisabledClass),\n ...splitClassTokens(commandItemEnabledClass),\n ...splitClassTokens(commandItemMutedEnabledClass),\n ...splitClassTokens(commandItemMutedDisabledClass),\n ...splitClassTokens(commandItemDescriptionClass),\n ...splitClassTokens(commandMatchClass),\n ...splitClassTokens(commandEmptyClass),\n ...splitClassTokens(commandFooterClass),\n // Иконки поля поиска и индикатора загрузки.\n ...splitClassTokens('animate-spin'),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grCommandPaletteSafelist } from './safelist'\n\nexport const grCommandPaletteConfig = defineGranularComponent(import.meta.url, {\n name: 'GrCommandPalette',\n safelist: grCommandPaletteSafelist,\n dependencies: ['GrKbd', 'GrModal'],\n})\n"],"mappings":";;;;;;;;;;AAaA,IAAa,gCAA6E;CACxF,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,MAAM;AACR;AAEA,IAAa,wBAAwB;AACrC,IAAa,0BAA0B;AAEvC,IAAa,yBAAyB;;AAGtC,IAAa,8BAA8B;AAE3C,IAAa,+BAA+B;AAC5C,IAAa,gCAAgC;;;;;;;AAQ7C,SAAgB,sBAAsB,UAA2B;CAC/D,OAAO,WAAW,gCAAgC;AACpD;;AAGA,IAAa,oBAAoB;;;;;;AAOjC,IAAa,uBAAuB;AACpC,IAAa,0BAA0B;AACvC,IAAa,yBAAyB;;;;;AAKtC,IAAa,2BAA2B;AAExC,SAAgB,iBAAiB,SAAyD;CACxF,OAAO;EACL;EACA,QAAQ,WAAW,2BAA2B;EAC9C,QAAQ,UAAU,CAAC,QAAQ,WAAW,yBAAyB;CACjE,CAAC,CACE,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;AACb;AAEA,IAAa,oBAAoB;AACjC,IAAa,qBAAqB;;;AClDlC,IAAa,2BAA2B,CAAC,mBAAG,IAAI,IAAI;CAClD,GAAG,iBAAiB,qBAAqB;CACzC,GAAG,iBAAiB,uBAAuB;CAC3C,GAAG,iBAAiB,sBAAsB;CAC1C,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,sBAAsB;CAC1C,GAAG,iBAAiB,wBAAwB;CAC5C,GAAG,iBAAiB,uBAAuB;CAC3C,GAAG,iBAAiB,4BAA4B;CAChD,GAAG,iBAAiB,6BAA6B;CACjD,GAAG,iBAAiB,2BAA2B;CAC/C,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,kBAAkB;CAEtC,GAAG,iBAAiB,cAAc;AACpC,CAAC,CAAC;;;AChCF,IAAa,yBAAyB,wBAAwB,OAAO,KAAK,KAAK;CAC7E,MAAM;CACN,UAAU;CACV,cAAc,CAAC,SAAS,SAAS;AACnC,CAAC"}
|
|
@@ -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"}
|
|
@@ -0,0 +1,148 @@
|
|
|
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
|
+
/** Переносимая колонка гасится, чтобы было видно, что она «поднята». */
|
|
37
|
+
var columnDraggingClass = "bg-[var(--gr-muted)]";
|
|
38
|
+
/**
|
|
39
|
+
* Место вставки — полоса по краю ячейки заголовка. Псевдоэлемент, а не свой
|
|
40
|
+
* узел: `<th>` не терпит посторонних детей в раскладке таблицы.
|
|
41
|
+
*/
|
|
42
|
+
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";
|
|
43
|
+
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";
|
|
44
|
+
/**
|
|
45
|
+
* Подсветка выбранной строки. Живёт здесь, потому что закреплённой ячейке её
|
|
46
|
+
* приходится повторять: у ячейки свой непрозрачный фон, и подсветка строки
|
|
47
|
+
* сквозь него не видна.
|
|
48
|
+
*/
|
|
49
|
+
var rowSelectedClass = "bg-[color-mix(in_srgb,var(--gr-primary)_8%,transparent)]";
|
|
50
|
+
/**
|
|
51
|
+
* Ручка ширины — полоса у правого края заголовка. Видима она узкой линией, а
|
|
52
|
+
* ловится широкой зоной: попасть в двухпиксельную границу мышью тяжело.
|
|
53
|
+
*/
|
|
54
|
+
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";
|
|
55
|
+
var columnResizerLineClass = "w-[var(--gr-datatable-resizer-width,2px)] bg-transparent transition-colors duration-[var(--gr-duration-fast)]";
|
|
56
|
+
/** Полоса подсвечивается только когда её ведут или на неё встал фокус. */
|
|
57
|
+
var columnResizerLineActiveClass = "bg-[var(--gr-datatable-resizer,var(--gr-primary))]";
|
|
58
|
+
var columnResizerHoverClass = "hover:bg-[var(--gr-datatable-resizer,var(--gr-primary))] focus-visible:bg-[var(--gr-datatable-resizer,var(--gr-primary))]";
|
|
59
|
+
/**
|
|
60
|
+
* Закреплённая колонка липнет к краю прокрутки. Фон обязателен: без него
|
|
61
|
+
* уезжающие под неё ячейки просвечивают насквозь.
|
|
62
|
+
*/
|
|
63
|
+
var columnPinnedClass = "sticky z-[2] bg-[var(--gr-card)]";
|
|
64
|
+
/** Граница группы закреплённых колонок — тень, а не рамка: рамка сдвигает сетку. */
|
|
65
|
+
var columnPinnedLeftEdgeClass = "shadow-[var(--gr-datatable-pinned-shadow,4px_0_6px_-4px_rgba(0,0,0,0.25))]";
|
|
66
|
+
var columnPinnedRightEdgeClass = "shadow-[var(--gr-datatable-pinned-shadow-end,-4px_0_6px_-4px_rgba(0,0,0,0.25))]";
|
|
67
|
+
/** Подпись колонки набирается мельче тела таблицы — она не данные, а навигация. */
|
|
68
|
+
var headerTextSizes = {
|
|
69
|
+
xs: "text-[length:var(--gr-control-text-3xs)]",
|
|
70
|
+
sm: "text-[length:var(--gr-control-text-2xs)]",
|
|
71
|
+
md: "text-[length:var(--gr-control-text-xs)] leading-[var(--gr-leading-xs)]",
|
|
72
|
+
lg: "text-[length:var(--gr-control-text-md)] leading-[var(--gr-leading-sm)]"
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Размер `GrCheckbox` в колонке выбора. Здесь не классы, а ступень шкалы:
|
|
76
|
+
* коробку рисует сам чекбокс — он же держит `indeterminate`, disabled без
|
|
77
|
+
* `opacity` и фокус-кольцо.
|
|
78
|
+
*/
|
|
79
|
+
var selectCheckboxSizes = {
|
|
80
|
+
xs: "xs",
|
|
81
|
+
sm: "sm",
|
|
82
|
+
md: "md",
|
|
83
|
+
lg: "lg"
|
|
84
|
+
};
|
|
85
|
+
/** Ширина колонки выбора: коробка чекбокса плюс горизонтальный паддинг ячейки. */
|
|
86
|
+
var selectColumnWidths = {
|
|
87
|
+
xs: "w-7",
|
|
88
|
+
sm: "w-8",
|
|
89
|
+
md: "w-10",
|
|
90
|
+
lg: "w-12"
|
|
91
|
+
};
|
|
92
|
+
/** Зазор между подписью колонки и стрелкой сортировки. */
|
|
93
|
+
var headerGaps = {
|
|
94
|
+
xs: "gap-1",
|
|
95
|
+
sm: "gap-1.5",
|
|
96
|
+
md: "gap-2",
|
|
97
|
+
lg: "gap-2"
|
|
98
|
+
};
|
|
99
|
+
/** Спиннер в строке загрузки — тем же кеглем, что иконка сортировки рядом. */
|
|
100
|
+
var spinnerSizes = {
|
|
101
|
+
xs: "h-3 w-3",
|
|
102
|
+
sm: "h-3.5 w-3.5",
|
|
103
|
+
md: "h-4 w-4",
|
|
104
|
+
lg: "h-5 w-5"
|
|
105
|
+
};
|
|
106
|
+
/** Стрелка сортировки берёт размер из шкалы `GrIcon` (`xs…lg` → `14…20px`). */
|
|
107
|
+
var sortIconSizes = {
|
|
108
|
+
xs: "xs",
|
|
109
|
+
sm: "xs",
|
|
110
|
+
md: "sm",
|
|
111
|
+
lg: "md"
|
|
112
|
+
};
|
|
113
|
+
//#endregion
|
|
114
|
+
//#region src/components/GrDataTable/safelist.ts
|
|
115
|
+
var grDataTableSafelist = [.../* @__PURE__ */ new Set([
|
|
116
|
+
...Object.values(cellPaddings).flatMap(splitClassTokens),
|
|
117
|
+
...Object.values(placeholderPaddings).flatMap(splitClassTokens),
|
|
118
|
+
...Object.values(headerTextSizes).flatMap(splitClassTokens),
|
|
119
|
+
...Object.values(selectColumnWidths).flatMap(splitClassTokens),
|
|
120
|
+
...Object.values(headerGaps).flatMap(splitClassTokens),
|
|
121
|
+
...Object.values(spinnerSizes).flatMap(splitClassTokens),
|
|
122
|
+
...splitClassTokens(columnHandleClass),
|
|
123
|
+
...splitClassTokens(columnHandleActiveClass),
|
|
124
|
+
...splitClassTokens(columnDraggingClass),
|
|
125
|
+
...splitClassTokens(columnDropBeforeClass),
|
|
126
|
+
...splitClassTokens(columnDropAfterClass),
|
|
127
|
+
...splitClassTokens(columnResizerClass),
|
|
128
|
+
...splitClassTokens(columnResizerLineClass),
|
|
129
|
+
...splitClassTokens(columnResizerLineActiveClass),
|
|
130
|
+
...splitClassTokens(columnResizerHoverClass),
|
|
131
|
+
...splitClassTokens(columnPinnedClass),
|
|
132
|
+
...splitClassTokens(columnPinnedLeftEdgeClass),
|
|
133
|
+
...splitClassTokens(columnPinnedRightEdgeClass),
|
|
134
|
+
...splitClassTokens(rowSelectedClass)
|
|
135
|
+
])];
|
|
136
|
+
//#endregion
|
|
137
|
+
//#region src/components/GrDataTable/config.ts
|
|
138
|
+
var grDataTableConfig = defineGranularComponent(import.meta.url, {
|
|
139
|
+
name: "GrDataTable",
|
|
140
|
+
dependencies: [
|
|
141
|
+
"GrTable",
|
|
142
|
+
"GrIcon",
|
|
143
|
+
"GrCheckbox"
|
|
144
|
+
],
|
|
145
|
+
safelist: grDataTableSafelist
|
|
146
|
+
});
|
|
147
|
+
//#endregion
|
|
148
|
+
export { sortIconSizes as C, selectColumnWidths as S, headerTextSizes as _, columnDropAfterClass as a, rowSelectedClass as b, columnHandleClass as c, columnPinnedRightEdgeClass as d, columnResizerClass as f, headerGaps as g, columnResizerLineClass as h, columnDraggingClass as i, columnPinnedClass as l, columnResizerLineActiveClass as m, grDataTableSafelist as n, columnDropBeforeClass as o, columnResizerHoverClass as p, cellPaddings as r, columnHandleActiveClass as s, grDataTableConfig as t, columnPinnedLeftEdgeClass as u, placeholderPaddings as v, spinnerSizes as w, selectCheckboxSizes as x, rowHeightEstimates as y };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-BJ7Bv_G2.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\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 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(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;;AAIvC,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,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;;;ACvCF,IAAa,oBAAoB,wBAAwB,OAAO,KAAK,KAAK;CACxE,MAAM;CACN,cAAc;EAAC;EAAW;EAAU;CAAY;CAChD,UAAU;AACZ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-BKvX0q102.js","names":[],"sources":["../../src/components/GrDropdownMenu/grDropdownMenuStyles.ts","../../src/components/GrDropdownMenu/safelist.ts","../../src/components/GrDropdownMenu/config.ts"],"sourcesContent":["export type GrDropdownMenuItemAlign = 'left' | 'center' | 'right'\nexport type GrDropdownMenuItemVariant = 'default' | 'danger'\nexport type GrDropdownMenuHeaderAlign = GrDropdownMenuItemAlign\nexport type GrDropdownMenuColumnAlign = GrDropdownMenuItemAlign\nexport type GrDropdownMenuColumnsCount = 2 | 3 | 4\n\nexport const alignClass: Record<GrDropdownMenuItemAlign, string> = {\n left: 'justify-start text-left',\n center: 'justify-center text-center',\n right: 'justify-end text-right',\n}\n\nexport const textAlignClass: Record<GrDropdownMenuHeaderAlign, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n}\n\nexport const colsClass: Record<GrDropdownMenuColumnsCount, string> = {\n 2: 'grid-cols-2',\n 3: 'grid-cols-3',\n 4: 'grid-cols-4',\n}\n\nexport const itemBaseClass = 'w-full min-h-10 px-4 py-2.5 flex items-center gap-2 text-[length:var(--gr-text-sm)] transition-colors duration-[var(--gr-duration-fast)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\n\n// Насыщенный тон как цвет текста запрещён — для текста есть `-text`-роль.\nexport const itemVariantClass: Record<GrDropdownMenuItemVariant, string> = {\n default: 'text-[var(--gr-fg)]',\n danger: 'text-[var(--gr-danger-text)]',\n}\n\nexport const itemInteractiveClass = 'cursor-pointer hover:bg-[var(--gr-accent)] hover:text-[var(--gr-accent-fg)]'\n\n// Disabled гасится фоном, а не `opacity`: прозрачность разбавляет выверенные на\n// AA токены текста. `pointer-events-none` оставлен — он же гасит hover.\nexport const itemDisabledClass = 'cursor-not-allowed pointer-events-none bg-[var(--gr-muted)] text-[var(--gr-muted-fg)]'\n\nexport const itemIndicatorClass = 'h-3.5 w-3.5 shrink-0'\nexport const itemShortcutClass = 'ml-auto pl-4 text-[length:var(--gr-text-xs)] text-[var(--gr-muted-fg)]'\n\nexport const headerClass = 'px-4 py-2 text-[length:var(--gr-text-xs)] tracking-wide text-[var(--gr-muted-fg)]'\n\nexport const listBaseClass = 'w-full'\nexport const dividersClass = 'divide-y divide-[var(--gr-brd)]'\nexport const borderTopClass = 'border-t border-[var(--gr-brd)]'\nexport const borderBottomClass = 'border-b border-[var(--gr-brd)]'\n\nexport const columnsBaseClass = 'w-full grid divide-x divide-[var(--gr-brd)]'\nexport const columnBaseClass = 'px-3 py-2 flex items-center'\n\nexport const dividerClass = 'border-t border-[var(--gr-brd)]'\nexport const dividerInsetClass = 'mx-2'\n\nexport function grDropdownMenuItemClass(options: {\n align: GrDropdownMenuItemAlign\n variant: GrDropdownMenuItemVariant\n disabled: boolean\n}): string {\n return [\n itemBaseClass,\n alignClass[options.align],\n options.disabled ? itemDisabledClass : itemVariantClass[options.variant],\n options.disabled ? '' : itemInteractiveClass,\n ].filter(Boolean).join(' ')\n}\n\nexport function grDropdownMenuListClass(options: {\n dividers: boolean\n borderTop: boolean\n borderBottom: boolean\n}): string {\n return [\n listBaseClass,\n options.dividers ? dividersClass : '',\n options.borderTop ? borderTopClass : '',\n options.borderBottom ? borderBottomClass : '',\n ].filter(Boolean).join(' ')\n}\n","import { splitClassTokens } from '../shared/classTokens'\n\nimport {\n alignClass,\n borderBottomClass,\n borderTopClass,\n colsClass,\n columnBaseClass,\n columnsBaseClass,\n dividerClass,\n dividerInsetClass,\n dividersClass,\n headerClass,\n itemBaseClass,\n itemDisabledClass,\n itemIndicatorClass,\n itemInteractiveClass,\n itemShortcutClass,\n itemVariantClass,\n listBaseClass,\n textAlignClass,\n} from './grDropdownMenuStyles'\n\n/**\n * Классы каталога живут в `.ts`-хелпере, а его бандлер волен вынести в общий\n * `dist/chunks/` — вне области скана компонента. Симптом промаха тут особенно\n * незаметный: размеры пунктов на месте, а выравнивание, колонки и цвета\n * пропали. Гейт — `src/__tests__/safelist.test.ts`.\n */\nexport const grDropdownMenuSafelist = [...new Set([\n ...Object.values(alignClass).flatMap(splitClassTokens),\n ...Object.values(textAlignClass).flatMap(splitClassTokens),\n ...Object.values(colsClass).flatMap(splitClassTokens),\n ...Object.values(itemVariantClass).flatMap(splitClassTokens),\n ...splitClassTokens(itemBaseClass),\n ...splitClassTokens(itemInteractiveClass),\n ...splitClassTokens(itemDisabledClass),\n ...splitClassTokens(itemIndicatorClass),\n ...splitClassTokens(itemShortcutClass),\n ...splitClassTokens(headerClass),\n ...splitClassTokens(listBaseClass),\n ...splitClassTokens(dividersClass),\n ...splitClassTokens(borderTopClass),\n ...splitClassTokens(borderBottomClass),\n ...splitClassTokens(columnsBaseClass),\n ...splitClassTokens(columnBaseClass),\n ...splitClassTokens(dividerClass),\n ...splitClassTokens(dividerInsetClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grDropdownMenuSafelist } from './safelist'\n\nexport const grDropdownMenuConfig = defineGranularComponent(import.meta.url, {\n name: 'GrDropdownMenu',\n dependencies: ['GrDropdown'],\n safelist: grDropdownMenuSafelist,\n})\n"],"mappings":";;;AAMA,IAAa,aAAsD;CACjE,MAAM;CACN,QAAQ;CACR,OAAO;AACT;AAEA,IAAa,iBAA4D;CACvE,MAAM;CACN,QAAQ;CACR,OAAO;AACT;AAEA,IAAa,YAAwD;CACnE,GAAG;CACH,GAAG;CACH,GAAG;AACL;AAEA,IAAa,gBAAgB;AAG7B,IAAa,mBAA8D;CACzE,SAAS;CACT,QAAQ;AACV;AAEA,IAAa,uBAAuB;AAIpC,IAAa,oBAAoB;AAEjC,IAAa,qBAAqB;AAClC,IAAa,oBAAoB;AAEjC,IAAa,cAAc;AAE3B,IAAa,gBAAgB;AAC7B,IAAa,gBAAgB;AAC7B,IAAa,iBAAiB;AAC9B,IAAa,oBAAoB;AAEjC,IAAa,mBAAmB;AAChC,IAAa,kBAAkB;AAE/B,IAAa,eAAe;AAC5B,IAAa,oBAAoB;AAEjC,SAAgB,wBAAwB,SAI7B;CACT,OAAO;EACL;EACA,WAAW,QAAQ;EACnB,QAAQ,WAAW,oBAAoB,iBAAiB,QAAQ;EAChE,QAAQ,WAAW,KAAK;CAC1B,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;AAC5B;AAEA,SAAgB,wBAAwB,SAI7B;CACT,OAAO;EACL;EACA,QAAQ,WAAW,gBAAgB;EACnC,QAAQ,YAAY,iBAAiB;EACrC,QAAQ,eAAe,oBAAoB;CAC7C,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;AAC5B;;;;;;;;;ACjDA,IAAa,yBAAyB,CAAC,mBAAG,IAAI,IAAI;CAC9C,GAAG,OAAO,OAAO,UAAU,CAAC,CAAC,QAAQ,gBAAgB;CACrD,GAAG,OAAO,OAAO,cAAc,CAAC,CAAC,QAAQ,gBAAgB;CACzD,GAAG,OAAO,OAAO,SAAS,CAAC,CAAC,QAAQ,gBAAgB;CACpD,GAAG,OAAO,OAAO,gBAAgB,CAAC,CAAC,QAAQ,gBAAgB;CAC3D,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,oBAAoB;CACxC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,kBAAkB;CACtC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,WAAW;CAC/B,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,aAAa;CACjC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,gBAAgB;CACpC,GAAG,iBAAiB,eAAe;CACnC,GAAG,iBAAiB,YAAY;CAChC,GAAG,iBAAiB,iBAAiB;AACzC,CAAC,CAAC;;;AC5CF,IAAa,uBAAuB,wBAAwB,OAAO,KAAK,KAAK;CAC3E,MAAM;CACN,cAAc,CAAC,YAAY;CAC3B,UAAU;AACZ,CAAC"}
|
|
@@ -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"}
|
|
@@ -52,11 +52,6 @@ var statisticTrendClassByTrend = {
|
|
|
52
52
|
down: "text-[var(--gr-danger-text)]",
|
|
53
53
|
flat: "text-[var(--gr-muted-fg)]"
|
|
54
54
|
};
|
|
55
|
-
var statisticTrendIconByTrend = {
|
|
56
|
-
up: "i-lucide-trending-up",
|
|
57
|
-
down: "i-lucide-trending-down",
|
|
58
|
-
flat: "i-lucide-minus"
|
|
59
|
-
};
|
|
60
55
|
var statisticTitleClass = "font-medium tracking-wide text-[var(--gr-statistic-title-color,var(--gr-muted-fg))]";
|
|
61
56
|
var statisticRootBase = "flex items-start gap-3 text-left";
|
|
62
57
|
/**
|
|
@@ -69,7 +64,7 @@ function statisticRootClass(options) {
|
|
|
69
64
|
return [statisticRootBase, options.interactive ? statisticRootInteractiveClass : ""].filter(Boolean).join(" ");
|
|
70
65
|
}
|
|
71
66
|
/** `tabular-nums` держит ширину строки при переборе чисел и при смене значения. */
|
|
72
|
-
var statisticValueTypographyClass = "font-semibold
|
|
67
|
+
var statisticValueTypographyClass = "font-semibold tabular-nums";
|
|
73
68
|
function statisticValueClass(options) {
|
|
74
69
|
return [
|
|
75
70
|
statisticValueTypographyClass,
|
|
@@ -86,7 +81,6 @@ var grStatisticSafelist = [.../* @__PURE__ */ new Set([
|
|
|
86
81
|
...Object.values(statisticTrendSizeBySize).flatMap(splitClassTokens),
|
|
87
82
|
...Object.values(statisticValueClassByTone).flatMap(splitClassTokens),
|
|
88
83
|
...Object.values(statisticTrendClassByTrend).flatMap(splitClassTokens),
|
|
89
|
-
...Object.values(statisticTrendIconByTrend).flatMap(splitClassTokens),
|
|
90
84
|
...splitClassTokens(statisticRootBase),
|
|
91
85
|
...splitClassTokens(statisticRootInteractiveClass),
|
|
92
86
|
...splitClassTokens(statisticTitleClass),
|
|
@@ -100,4 +94,4 @@ var grStatisticConfig = defineGranularComponent(import.meta.url, {
|
|
|
100
94
|
dependencies: ["GrSkeleton"]
|
|
101
95
|
});
|
|
102
96
|
//#endregion
|
|
103
|
-
export { statisticRootClass as a, statisticTrendClassByTrend as c,
|
|
97
|
+
export { statisticRootClass as a, statisticTrendClassByTrend as c, statisticPlaceholderHeightBySize as i, statisticTrendSizeBySize as l, grStatisticSafelist as n, statisticTitleClass as o, statisticAffixSizeBySize as r, statisticTitleSizeBySize as s, grStatisticConfig as t, statisticValueClass as u };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-Be9k9bOf.js","names":[],"sources":["../../src/components/GrStatistic/grStatisticStyles.ts","../../src/components/GrStatistic/safelist.ts","../../src/components/GrStatistic/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\nimport type { GrTone } from '../shared/tones'\n\nexport type GrStatisticSize = GrComponentSize\nexport type GrStatisticTone = GrTone\n/** Направление динамики показателя. */\nexport type GrStatisticTrend = 'up' | 'down' | 'flat'\n\n/**\n * Кастомизация через CSS-переменные:\n *\n * - `--gr-statistic-value-color` — цвет значения (по умолчанию — из `tone`).\n * - `--gr-statistic-title-color` — цвет подписи показателя.\n */\n\nexport const statisticTitleSizeBySize: Record<GrStatisticSize, string> = {\n xs: 'text-[length:var(--gr-text-2xs)]',\n sm: 'text-[length:var(--gr-text-xs)]',\n md: 'text-[length:var(--gr-text-xs)]',\n lg: 'text-[length:var(--gr-text-sm)]',\n}\n\nexport const statisticValueSizeBySize: Record<GrStatisticSize, string> = {\n xs: 'text-[length:var(--gr-text-base)] leading-[var(--gr-leading-base)]',\n sm: 'text-[length:var(--gr-text-xl)] leading-[var(--gr-leading-xl)]',\n md: 'text-[length:var(--gr-text-3xl)] leading-[var(--gr-leading-3xl)]',\n lg: 'text-[length:var(--gr-text-4xl)] leading-tight',\n}\n\nexport const statisticAffixSizeBySize: Record<GrStatisticSize, string> = {\n xs: 'text-[length:var(--gr-text-xs)]',\n sm: 'text-[length:var(--gr-text-xs)]',\n md: 'text-[length:var(--gr-text-base)]',\n lg: 'text-[length:var(--gr-text-xl)]',\n}\n\n// Высота плейсхолдера загрузки повторяет строку значения — блок не «прыгает».\n// Значение отдаётся в `GrSkeleton` пропом, поэтому это px, а не класс.\nexport const statisticPlaceholderHeightBySize: Record<GrStatisticSize, string> = {\n xs: '22px',\n sm: '28px',\n md: '36px',\n lg: '44px',\n}\n\nexport const statisticTrendSizeBySize: Record<GrStatisticSize, string> = {\n xs: 'text-[length:var(--gr-text-2xs)]',\n sm: 'text-[length:var(--gr-text-xs)]',\n md: 'text-[length:var(--gr-text-xs)]',\n lg: 'text-[length:var(--gr-text-sm)]',\n}\n\n// Цвет значения по тону. `neutral` наследует основной цвет текста.\n//\n// Тона берутся из `-text`, а не из насыщенного `--gr-{tone}`: значение — это\n// ТЕКСТ на фоне страницы, а насыщенный тон для этого не предназначен\n// (`--gr-success` на `--gr-bg` — 2.2:1, ниже даже послабления 3:1 для крупного\n// текста). `-text` — ровно роль «тон как текст».\nexport const statisticValueClassByTone: Record<GrStatisticTone, string> = {\n neutral: 'text-[var(--gr-statistic-value-color,var(--gr-fg))]',\n primary: 'text-[var(--gr-statistic-value-color,var(--gr-primary))]',\n success: 'text-[var(--gr-statistic-value-color,var(--gr-success-text))]',\n warning: 'text-[var(--gr-statistic-value-color,var(--gr-warning-text))]',\n danger: 'text-[var(--gr-statistic-value-color,var(--gr-danger-text))]',\n info: 'text-[var(--gr-statistic-value-color,var(--gr-info-text))]',\n slate: 'text-[var(--gr-statistic-value-color,var(--gr-slate-text))]',\n azure: 'text-[var(--gr-statistic-value-color,var(--gr-azure-text))]',\n}\n\n// Строка динамики: рост — успех, падение — опасность, без изменений — приглушённый.\nexport const statisticTrendClassByTrend: Record<GrStatisticTrend, string> = {\n up: 'text-[var(--gr-success-text)]',\n down: 'text-[var(--gr-danger-text)]',\n flat: 'text-[var(--gr-muted-fg)]',\n}\n\nexport const statisticTitleClass = 'font-medium tracking-wide text-[var(--gr-statistic-title-color,var(--gr-muted-fg))]'\n\nexport const statisticRootBase = 'flex items-start gap-3 text-left'\n\n/**\n * Показатель-ссылка или показатель-кнопка. Своей заливки не получает: плитка\n * дашборда обычно уже лежит в `GrCard`, и вторая поверхность спорила бы с ней.\n * Видимость интерактивности держат курсор, фокус-кольцо и подсветка подписи.\n */\nexport const statisticRootInteractiveClass = 'w-full cursor-pointer rounded-[var(--gr-radius-md)] transition-colors hover:bg-[var(--gr-muted)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]'\n\nexport function statisticRootClass(options: { interactive: boolean }): string {\n return [\n statisticRootBase,\n options.interactive ? statisticRootInteractiveClass : '',\n ].filter(Boolean).join(' ')\n}\n\n/** `tabular-nums` держит ширину строки при переборе чисел и при смене значения. */\nexport const statisticValueTypographyClass = 'font-semibold tabular-nums'\n\nexport function statisticValueClass(options: { size: GrStatisticSize, tone: GrStatisticTone }): string {\n return [\n statisticValueTypographyClass,\n statisticValueSizeBySize[options.size],\n statisticValueClassByTone[options.tone],\n ].join(' ')\n}\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n statisticAffixSizeBySize,\n statisticRootBase,\n statisticRootInteractiveClass,\n statisticTitleClass,\n statisticTitleSizeBySize,\n statisticTrendClassByTrend,\n statisticTrendSizeBySize,\n statisticValueClassByTone,\n statisticValueSizeBySize,\n statisticValueTypographyClass,\n} from './grStatisticStyles'\n\n// Классы из вычисляемых мап (size/tone/trend) UnoCSS сканом не находит — только safelist.\nexport const grStatisticSafelist = [...new Set([\n ...Object.values(statisticTitleSizeBySize).flatMap(splitClassTokens),\n ...Object.values(statisticValueSizeBySize).flatMap(splitClassTokens),\n ...Object.values(statisticAffixSizeBySize).flatMap(splitClassTokens),\n ...Object.values(statisticTrendSizeBySize).flatMap(splitClassTokens),\n ...Object.values(statisticValueClassByTone).flatMap(splitClassTokens),\n ...Object.values(statisticTrendClassByTrend).flatMap(splitClassTokens),\n // Иконки динамики приходят из мапы — как классы-маски их тоже надо сгенерировать.\n // Литералы из grStatisticStyles.ts (корень, подпись, типографика значения).\n ...splitClassTokens(statisticRootBase),\n ...splitClassTokens(statisticRootInteractiveClass),\n ...splitClassTokens(statisticTitleClass),\n ...splitClassTokens(statisticValueTypographyClass),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grStatisticSafelist } from './safelist'\n\nexport const grStatisticConfig = defineGranularComponent(import.meta.url, {\n name: 'GrStatistic',\n safelist: grStatisticSafelist,\n dependencies: ['GrSkeleton'],\n})\n"],"mappings":";;;;;;;;;AAgBA,IAAa,2BAA4D;CACvE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,2BAA4D;CACvE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,2BAA4D;CACvE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAIA,IAAa,mCAAoE;CAC/E,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,2BAA4D;CACvE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAQA,IAAa,4BAA6D;CACxE,SAAS;CACT,SAAS;CACT,SAAS;CACT,SAAS;CACT,QAAQ;CACR,MAAM;CACN,OAAO;CACP,OAAO;AACT;AAGA,IAAa,6BAA+D;CAC1E,IAAI;CACJ,MAAM;CACN,MAAM;AACR;AAEA,IAAa,sBAAsB;AAEnC,IAAa,oBAAoB;;;;;;AAOjC,IAAa,gCAAgC;AAE7C,SAAgB,mBAAmB,SAA2C;CAC5E,OAAO,CACL,mBACA,QAAQ,cAAc,gCAAgC,EACxD,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;AAC5B;;AAGA,IAAa,gCAAgC;AAE7C,SAAgB,oBAAoB,SAAmE;CACrG,OAAO;EACL;EACA,yBAAyB,QAAQ;EACjC,0BAA0B,QAAQ;CACpC,CAAC,CAAC,KAAK,GAAG;AACZ;;;ACzFA,IAAa,sBAAsB,CAAC,mBAAG,IAAI,IAAI;CAC7C,GAAG,OAAO,OAAO,wBAAwB,CAAC,CAAC,QAAQ,gBAAgB;CACnE,GAAG,OAAO,OAAO,wBAAwB,CAAC,CAAC,QAAQ,gBAAgB;CACnE,GAAG,OAAO,OAAO,wBAAwB,CAAC,CAAC,QAAQ,gBAAgB;CACnE,GAAG,OAAO,OAAO,wBAAwB,CAAC,CAAC,QAAQ,gBAAgB;CACnE,GAAG,OAAO,OAAO,yBAAyB,CAAC,CAAC,QAAQ,gBAAgB;CACpE,GAAG,OAAO,OAAO,0BAA0B,CAAC,CAAC,QAAQ,gBAAgB;CAGrE,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,6BAA6B;CACjD,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,6BAA6B;AACnD,CAAC,CAAC;;;ACxBF,IAAa,oBAAoB,wBAAwB,OAAO,KAAK,KAAK;CACxE,MAAM;CACN,UAAU;CACV,cAAc,CAAC,YAAY;AAC7B,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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineGranularComponent } from "@feugene/unocss-preset-granular/contract";
|
|
2
2
|
//#region src/components/GrTree/safelist.ts
|
|
3
|
-
var grTreeSafelist = [
|
|
3
|
+
var grTreeSafelist = [];
|
|
4
4
|
//#endregion
|
|
5
5
|
//#region src/components/GrTree/config.ts
|
|
6
6
|
var grTreeConfig = defineGranularComponent(import.meta.url, {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-CDat1wXf2.js","names":[],"sources":["../../src/components/GrTree/safelist.ts","../../src/components/GrTree/config.ts"],"sourcesContent":["// Иконки-пропы (`expandIcon`/`collapseIcon`/`dragHandleIcon`) приходят от\n// потребителя: их классы генерирует его сборка, а не наша. Встроенные иконки\n// компилируются в `dist` и CSS не требуют.\n// Литералы шаблона (`py-2`, `px-2`, `ml-6`, ...) не дублируем — UnoCSS находит их сканом.\nexport const grTreeSafelist = [] as const\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grTreeSafelist } from './safelist'\n\nexport const grTreeConfig = defineGranularComponent(import.meta.url, {\n name: 'GrTree',\n safelist: grTreeSafelist,\n})"],"mappings":";;AAIA,IAAa,iBAAiB,CAAC;;;ACA/B,IAAa,eAAe,wBAAwB,OAAO,KAAK,KAAK;CACnE,MAAM;CACN,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 @@
|
|
|
1
|
+
{"version":3,"file":"config-CY0_6cMi2.js","names":[],"sources":["../../src/components/GrDivider/grDividerStyles.ts","../../src/components/GrDivider/safelist.ts","../../src/components/GrDivider/config.ts"],"sourcesContent":["import type { GrComponentSize } from '../shared/sizes'\n\nexport type GrDividerOrientation = 'horizontal' | 'vertical'\nexport type GrDividerAlign = 'start' | 'center' | 'end'\nexport type GrDividerVariant = 'solid' | 'dashed' | 'dotted'\n/** Отступы вокруг разделителя. `none` — вплотную, как было до появления пропа. */\nexport type GrDividerSpacing = 'none' | GrComponentSize\n\n/**\n * Линия рисуется бордюром, а не фоном: `dashed` и `dotted` фоном не выразить,\n * а два разных механизма на три варианта одного и того же — путь к расхождению.\n * Толщину задаёт `--gr-divider-thickness`, поэтому классы про неё не знают.\n */\nexport const lineVariantClass: Record<GrDividerVariant, string> = {\n solid: 'border-solid',\n dashed: 'border-dashed',\n dotted: 'border-dotted',\n}\n\nexport const horizontalLineClass\n = 'border-0 border-t-[length:var(--gr-divider-thickness,1px)] border-[var(--gr-brd)]'\n\nexport const verticalLineClass\n = 'border-0 border-l-[length:var(--gr-divider-thickness,1px)] border-[var(--gr-brd)]'\n\nexport const horizontalSpacingClass: Record<GrDividerSpacing, string> = {\n none: '',\n xs: 'my-1',\n sm: 'my-2',\n md: 'my-3',\n lg: 'my-4',\n}\n\nexport const verticalSpacingClass: Record<GrDividerSpacing, string> = {\n none: '',\n xs: 'mx-1',\n sm: 'mx-2',\n md: 'mx-3',\n lg: 'mx-4',\n}\n\nexport const labelRootClass = 'flex w-full items-center gap-3 text-[length:var(--gr-text-xs)] leading-[var(--gr-leading-xs)] text-[var(--gr-muted-fg)]'\n\n/** Отрезок линии рядом с подписью: тянется по остатку ширины. */\nexport const labelLineClass = 'flex-1'\n","import { splitClassTokens } from '../shared/classTokens'\nimport {\n horizontalLineClass,\n horizontalSpacingClass,\n labelLineClass,\n labelRootClass,\n lineVariantClass,\n verticalLineClass,\n verticalSpacingClass,\n} from './grDividerStyles'\n\n// Литералы живут в `.ts`-хелпере, а он на сборке уезжает в общий чанк — скан\n// шаблонов их не увидит. Отсюда и safelist: без него `dashed`-разделитель\n// оказался бы разделителем без линии.\nexport const grDividerSafelist = [...new Set([\n ...splitClassTokens(horizontalLineClass),\n ...splitClassTokens(verticalLineClass),\n ...splitClassTokens(labelRootClass),\n ...splitClassTokens(labelLineClass),\n ...Object.values(lineVariantClass).flatMap(splitClassTokens),\n ...Object.values(horizontalSpacingClass).flatMap(splitClassTokens),\n ...Object.values(verticalSpacingClass).flatMap(splitClassTokens),\n])]\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grDividerSafelist } from './safelist'\n\nexport const grDividerConfig = defineGranularComponent(import.meta.url, {\n name: 'GrDivider',\n safelist: grDividerSafelist,\n})\n"],"mappings":";;;;;;;;AAaA,IAAa,mBAAqD;CAChE,OAAO;CACP,QAAQ;CACR,QAAQ;AACV;AAEA,IAAa,sBACT;AAEJ,IAAa,oBACT;AAEJ,IAAa,yBAA2D;CACtE,MAAM;CACN,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,uBAAyD;CACpE,MAAM;CACN,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAa,iBAAiB;;AAG9B,IAAa,iBAAiB;;;AC9B9B,IAAa,oBAAoB,CAAC,mBAAG,IAAI,IAAI;CAC3C,GAAG,iBAAiB,mBAAmB;CACvC,GAAG,iBAAiB,iBAAiB;CACrC,GAAG,iBAAiB,cAAc;CAClC,GAAG,iBAAiB,cAAc;CAClC,GAAG,OAAO,OAAO,gBAAgB,CAAC,CAAC,QAAQ,gBAAgB;CAC3D,GAAG,OAAO,OAAO,sBAAsB,CAAC,CAAC,QAAQ,gBAAgB;CACjE,GAAG,OAAO,OAAO,oBAAoB,CAAC,CAAC,QAAQ,gBAAgB;AACjE,CAAC,CAAC;;;AClBF,IAAa,kBAAkB,wBAAwB,OAAO,KAAK,KAAK;CACtE,MAAM;CACN,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
|