@rt-tools/ui-kit-v2 0.33.0 → 0.34.1
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/README.md +4 -3
- package/fesm2022/rt-tools-ui-kit-v2-ai-run-status.mjs +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-ai-run-status.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-autocomplete.mjs +92 -5
- package/fesm2022/rt-tools-ui-kit-v2-autocomplete.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-badge.mjs +191 -0
- package/fesm2022/rt-tools-ui-kit-v2-badge.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-breadcrumbs.mjs +3 -2
- package/fesm2022/rt-tools-ui-kit-v2-breadcrumbs.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-button.mjs +6 -1
- package/fesm2022/rt-tools-ui-kit-v2-button.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-checkbox.mjs +35 -4
- package/fesm2022/rt-tools-ui-kit-v2-checkbox.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-color-palette.mjs +13 -4
- package/fesm2022/rt-tools-ui-kit-v2-color-palette.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-container.mjs +245 -60
- package/fesm2022/rt-tools-ui-kit-v2-container.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-copy-value.mjs +30 -5
- package/fesm2022/rt-tools-ui-kit-v2-copy-value.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-core.mjs +113 -2
- package/fesm2022/rt-tools-ui-kit-v2-core.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-data-list.mjs +14 -3
- package/fesm2022/rt-tools-ui-kit-v2-data-list.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs +17 -3
- package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs +6 -3
- package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs +2 -2
- package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-divider.mjs +112 -0
- package/fesm2022/rt-tools-ui-kit-v2-divider.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-draggable-tree.mjs +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-draggable-tree.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-drawer.mjs +854 -0
- package/fesm2022/rt-tools-ui-kit-v2-drawer.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-dynamic-list.mjs +16 -5
- package/fesm2022/rt-tools-ui-kit-v2-dynamic-list.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs +580 -65
- package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-expansion-panel.mjs +203 -15
- package/fesm2022/rt-tools-ui-kit-v2-expansion-panel.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-field.mjs +40 -8
- package/fesm2022/rt-tools-ui-kit-v2-field.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-file-card.mjs +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-file-card.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-filter-control.mjs +7 -3
- package/fesm2022/rt-tools-ui-kit-v2-filter-control.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-form-control.mjs +53 -2
- package/fesm2022/rt-tools-ui-kit-v2-form-control.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree-selector.mjs +14 -4
- package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree-selector.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree.mjs +6 -3
- package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-icon-button.mjs +16 -5
- package/fesm2022/rt-tools-ui-kit-v2-icon-button.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-image-upload.mjs +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-image-upload.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-inline-edit.mjs +14 -4
- package/fesm2022/rt-tools-ui-kit-v2-inline-edit.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs +3 -2
- package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-input.mjs +207 -7
- package/fesm2022/rt-tools-ui-kit-v2-input.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-menu.mjs +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-menu.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-multiselect.mjs +3 -2
- package/fesm2022/rt-tools-ui-kit-v2-multiselect.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs +2 -0
- package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-pagination.mjs +3 -2
- package/fesm2022/rt-tools-ui-kit-v2-pagination.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-profile-menu.mjs +3 -2
- package/fesm2022/rt-tools-ui-kit-v2-profile-menu.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-progress-bar.mjs +171 -0
- package/fesm2022/rt-tools-ui-kit-v2-progress-bar.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-radio-button.mjs +176 -6
- package/fesm2022/rt-tools-ui-kit-v2-radio-button.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs +2 -1
- package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-scroll-area.mjs +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-scroll-area.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-select.mjs +142 -23
- package/fesm2022/rt-tools-ui-kit-v2-select.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-side-menu.mjs +22 -9
- package/fesm2022/rt-tools-ui-kit-v2-side-menu.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-speed-menu.mjs +3 -2
- package/fesm2022/rt-tools-ui-kit-v2-speed-menu.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs +105 -8
- package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-table.mjs +13 -2
- package/fesm2022/rt-tools-ui-kit-v2-table.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs +654 -43
- package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-tag.mjs +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-tag.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-textarea.mjs +45 -7
- package/fesm2022/rt-tools-ui-kit-v2-textarea.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-theme-toggle.mjs +2 -2
- package/fesm2022/rt-tools-ui-kit-v2-theme-toggle.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs +11 -2
- package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-toast.mjs +152 -11
- package/fesm2022/rt-tools-ui-kit-v2-toast.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-toggle-button-group.mjs +199 -17
- package/fesm2022/rt-tools-ui-kit-v2-toggle-button-group.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-tooltip.mjs +35 -5
- package/fesm2022/rt-tools-ui-kit-v2-tooltip.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-tree-selector.mjs +14 -4
- package/fesm2022/rt-tools-ui-kit-v2-tree-selector.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-tree.mjs +6 -3
- package/fesm2022/rt-tools-ui-kit-v2-tree.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs +21 -6
- package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2.mjs +4 -0
- package/package.json +17 -1
- package/src/assets/icons/volume-off.svg +2 -1
- package/src/lib/components/autocomplete/CONTEXT.md +25 -14
- package/src/lib/components/autocomplete/rt-autocomplete.component.scss +19 -0
- package/src/lib/components/badge/CONTEXT.md +33 -0
- package/src/lib/components/badge/rt-badge.directive.scss +104 -0
- package/src/lib/components/breadcrumbs/rt-breadcrumbs.component.scss +2 -2
- package/src/lib/components/button/CONTEXT.md +5 -0
- package/src/lib/components/button/rt-button.directive.scss +3 -1
- package/src/lib/components/checkbox/CONTEXT.md +15 -8
- package/src/lib/components/color-palette/rt-color-palette.component.scss +2 -2
- package/src/lib/components/container/CONTEXT.md +23 -6
- package/src/lib/components/container/rt-container.component.scss +90 -1
- package/src/lib/components/copy-value/CONTEXT.md +6 -5
- package/src/lib/components/copy-value/rt-copy-value.component.scss +16 -0
- package/src/lib/components/date-picker/rt-date-picker.component.scss +7 -0
- package/src/lib/components/date-range/rt-date-range.component.scss +7 -0
- package/src/lib/components/divider/CONTEXT.md +21 -0
- package/src/lib/components/divider/rt-divider.component.scss +34 -0
- package/src/lib/components/drawer/CONTEXT.md +73 -0
- package/src/lib/components/drawer/rt-drawer-container.component.scss +19 -0
- package/src/lib/components/drawer/rt-drawer.component.scss +168 -0
- package/src/lib/components/drawer/rt-resize-handle.component.scss +42 -0
- package/src/lib/components/dynamic-selector/CONTEXT.md +5 -0
- package/src/lib/components/expansion-panel/CONTEXT.md +32 -8
- package/src/lib/components/expansion-panel/rt-expansion-panel.component.scss +67 -2
- package/src/lib/components/field/CONTEXT.md +43 -0
- package/src/lib/components/field/rt-field-label-inside.scss +179 -0
- package/src/lib/components/field/rt-field.component.scss +51 -2
- package/src/lib/components/icon-button/CONTEXT.md +17 -15
- package/src/lib/components/icon-button/rt-icon-button.component.scss +3 -1
- package/src/lib/components/inline-edit/rt-inline-edit.component.scss +4 -4
- package/src/lib/components/input/CONTEXT.md +45 -11
- package/src/lib/components/input/rt-input-floating-label.scss +192 -0
- package/src/lib/components/input/rt-input-icons.scss +105 -0
- package/src/lib/components/input/rt-input.component.scss +91 -13
- package/src/lib/components/input-number/CONTEXT.md +7 -0
- package/src/lib/components/input-number/rt-input-number.component.scss +58 -1
- package/src/lib/components/menu/CONTEXT.md +1 -0
- package/src/lib/components/multiselect/CONTEXT.md +2 -1
- package/src/lib/components/multiselect/rt-multiselect.component.scss +7 -0
- package/src/lib/components/pagination/CONTEXT.md +3 -0
- package/src/lib/components/pagination/rt-pagination.component.scss +7 -0
- package/src/lib/components/progress-bar/CONTEXT.md +22 -0
- package/src/lib/components/progress-bar/rt-progress-bar.component.scss +77 -0
- package/src/lib/components/radio-button/CONTEXT.md +9 -0
- package/src/lib/components/radio-button/rt-radio-group.component.scss +13 -0
- package/src/lib/components/select/CONTEXT.md +28 -0
- package/src/lib/components/select/rt-select-clear.scss +88 -0
- package/src/lib/components/select/rt-select-floating-label.scss +155 -0
- package/src/lib/components/select/rt-select-material.scss +54 -0
- package/src/lib/components/select/rt-select.component.scss +54 -16
- package/src/lib/components/side-menu/CONTEXT.md +5 -0
- package/src/lib/components/speed-menu/rt-speed-menu.component.scss +5 -5
- package/src/lib/components/stepper/CONTEXT.md +13 -5
- package/src/lib/components/stepper/rt-stepper.component.scss +93 -0
- package/src/lib/components/tabs/CONTEXT.md +61 -9
- package/src/lib/components/tabs/rt-tabs.component.scss +201 -5
- package/src/lib/components/textarea/CONTEXT.md +12 -1
- package/src/lib/components/textarea/rt-textarea.component.scss +116 -1
- package/src/lib/components/toast/CONTEXT.md +23 -0
- package/src/lib/components/toast/rt-toast.component.scss +37 -0
- package/src/lib/components/toggle-button-group/CONTEXT.md +24 -4
- package/src/lib/components/toggle-button-group/rt-toggle-button-group-chips.scss +151 -0
- package/src/lib/components/toggle-button-group/rt-toggle-button-group.component.scss +35 -0
- package/src/lib/components/tooltip/CONTEXT.md +7 -1
- package/src/lib/components/tree/rt-tree.component.scss +2 -2
- package/src/styles/_color-scheme.scss +1 -1
- package/src/styles/_density.scss +48 -0
- package/src/styles/_index.scss +8 -0
- package/src/styles/_preset-material.scss +160 -70
- package/src/styles/_primitives.scss +1 -0
- package/src/styles/_semantic-navigation.scss +117 -0
- package/src/styles/_semantic.scss +29 -98
- package/src/styles/_theme-dark.scss +8 -0
- package/styles/tokens.css +2066 -1134
- package/types/rt-tools-ui-kit-v2-autocomplete.d.ts +34 -0
- package/types/rt-tools-ui-kit-v2-badge.d.ts +71 -0
- package/types/rt-tools-ui-kit-v2-checkbox.d.ts +17 -3
- package/types/rt-tools-ui-kit-v2-container.d.ts +65 -9
- package/types/rt-tools-ui-kit-v2-copy-value.d.ts +11 -1
- package/types/rt-tools-ui-kit-v2-core.d.ts +109 -4
- package/types/rt-tools-ui-kit-v2-divider.d.ts +29 -0
- package/types/rt-tools-ui-kit-v2-drawer.d.ts +257 -0
- package/types/rt-tools-ui-kit-v2-dynamic-selector.d.ts +240 -25
- package/types/rt-tools-ui-kit-v2-expansion-panel.d.ts +87 -3
- package/types/rt-tools-ui-kit-v2-field.d.ts +18 -1
- package/types/rt-tools-ui-kit-v2-form-control.d.ts +42 -4
- package/types/rt-tools-ui-kit-v2-icon-button.d.ts +2 -1
- package/types/rt-tools-ui-kit-v2-input-number.d.ts +1 -0
- package/types/rt-tools-ui-kit-v2-input.d.ts +98 -4
- package/types/rt-tools-ui-kit-v2-progress-bar.d.ts +53 -0
- package/types/rt-tools-ui-kit-v2-radio-button.d.ts +80 -1
- package/types/rt-tools-ui-kit-v2-select.d.ts +65 -1
- package/types/rt-tools-ui-kit-v2-side-menu.d.ts +3 -0
- package/types/rt-tools-ui-kit-v2-stepper.d.ts +57 -4
- package/types/rt-tools-ui-kit-v2-tabs.d.ts +337 -8
- package/types/rt-tools-ui-kit-v2-textarea.d.ts +16 -0
- package/types/rt-tools-ui-kit-v2-toast.d.ts +38 -2
- package/types/rt-tools-ui-kit-v2-toggle-button-group.d.ts +83 -3
- package/types/rt-tools-ui-kit-v2-tooltip.d.ts +17 -2
- package/types/rt-tools-ui-kit-v2.d.ts +4 -0
- package/src/lib/components/dynamic-selector/stories/component/test-dynamic-selector-popup-frame.component.scss +0 -6
package/styles/tokens.css
CHANGED
|
@@ -374,6 +374,7 @@
|
|
|
374
374
|
--rt-mat-neutral-35: #ccc;
|
|
375
375
|
--rt-mat-neutral-40: #a3a3a3;
|
|
376
376
|
--rt-mat-neutral-60: #747474;
|
|
377
|
+
--rt-mat-neutral-70: #3f3e43;
|
|
377
378
|
--rt-mat-neutral-80: #323033;
|
|
378
379
|
--rt-mat-neutral-100: #181818;
|
|
379
380
|
/* Тёмные нейтральные первого кита: рамки и фон его тёмной темы */
|
|
@@ -464,6 +465,9 @@
|
|
|
464
465
|
/* Built by the generator `tools/build-tokens-v2.mjs` from `tokens.source.mjs` — edited there, not here:
|
|
465
466
|
an edit on the spot is lost on the next build, and `pnpm run check:tokens-build` names it. */
|
|
466
467
|
/* The light theme's assignments of the list panel, the pagination bar and the empty list. */
|
|
468
|
+
/* Built by the generator `tools/build-tokens-v2.mjs` from `tokens.source.mjs` — edited there, not here:
|
|
469
|
+
an edit on the spot is lost on the next build, and `pnpm run check:tokens-build` names it. */
|
|
470
|
+
/* The light theme's assignments of the navigation: menus, tabs, breadcrumbs. */
|
|
467
471
|
:root {
|
|
468
472
|
/* Background */
|
|
469
473
|
--rt-color-bg-page: var(--rt-neutral-50);
|
|
@@ -693,6 +697,11 @@
|
|
|
693
697
|
--rt-input-icon-color: var(--rt-neutral-600);
|
|
694
698
|
--rt-input-icon-size: var(--rt-size-4);
|
|
695
699
|
--rt-input-gap: var(--rt-space-sm);
|
|
700
|
+
--rt-input-caret-color: auto;
|
|
701
|
+
--rt-input-min-width: 0px;
|
|
702
|
+
--rt-input-fill-edge: var(--rt-input-border-width);
|
|
703
|
+
--rt-input-fill-focus-shadow: var(--rt-input-focus-shadow);
|
|
704
|
+
--rt-input-fill-focus-shadow-error: var(--rt-input-focus-shadow-error);
|
|
696
705
|
/* Sizes (single-line height scale) */
|
|
697
706
|
--rt-input-height-sm: var(--rt-control-height-sm);
|
|
698
707
|
--rt-input-height-md: var(--rt-control-height-md);
|
|
@@ -734,6 +743,19 @@
|
|
|
734
743
|
--rt-input-line-height: var(--rt-leading-snug);
|
|
735
744
|
/* State / motion */
|
|
736
745
|
--rt-input-disabled-opacity: var(--rt-opacity-disabled);
|
|
746
|
+
--rt-input-disabled-field-opacity: var(--rt-input-disabled-opacity);
|
|
747
|
+
--rt-input-color-border-disabled: var(--rt-input-color-border);
|
|
748
|
+
--rt-input-color-text-disabled: var(--rt-input-color-text);
|
|
749
|
+
--rt-input-color-placeholder-disabled: var(--rt-input-color-text-placeholder);
|
|
750
|
+
--rt-input-clear-size: var(--rt-control-height-sm);
|
|
751
|
+
--rt-input-clear-icon-size: var(--rt-size-4);
|
|
752
|
+
--rt-input-clear-color: var(--rt-neutral-600);
|
|
753
|
+
--rt-input-clear-offset-end: 0px;
|
|
754
|
+
--rt-input-clear-bg: transparent;
|
|
755
|
+
--rt-input-clear-bg-hover: var(--rt-icon-button-color-bg-hover);
|
|
756
|
+
--rt-input-clear-radius: var(--rt-radius-md);
|
|
757
|
+
--rt-input-clear-offset-start: 0px;
|
|
758
|
+
--rt-input-fill-color-bg-disabled: var(--rt-color-bg-surface-subtle-2);
|
|
737
759
|
--rt-input-focus-shadow: var(--rt-shadow-focus-ring);
|
|
738
760
|
--rt-input-focus-shadow-error: var(--rt-shadow-focus-ring-danger);
|
|
739
761
|
--rt-input-transition: border-color var(--rt-duration-fast) ease, box-shadow var(--rt-duration-fast) ease;
|
|
@@ -773,95 +795,12 @@
|
|
|
773
795
|
/* Рамка off-трека — inset-тенью, а не border: у border своя коробка, и
|
|
774
796
|
отступы бегунка с иконками пришлось бы пересчитывать на её толщину. */
|
|
775
797
|
--rt-toggle-shadow-border: inset 0 0 0 var(--rt-border-width-thin) var(--rt-toggle-color-border);
|
|
776
|
-
/*
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
--rt-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
подпись, а не фон — иначе оно спорит с этой подсветкой. */
|
|
783
|
-
--rt-nav-item-height: var(--rt-size-6);
|
|
784
|
-
--rt-nav-item-gap: var(--rt-space-1);
|
|
785
|
-
--rt-nav-item-padding: var(--rt-space-2) var(--rt-space-2);
|
|
786
|
-
--rt-nav-item-content-gap: var(--rt-space-2);
|
|
787
|
-
--rt-nav-item-font-size: var(--rt-text-sm);
|
|
788
|
-
--rt-nav-item-font-weight: var(--rt-font-weight-semibold);
|
|
789
|
-
--rt-nav-item-line-height: var(--rt-leading-none);
|
|
790
|
-
--rt-nav-item-color: var(--rt-color-text-primary);
|
|
791
|
-
--rt-nav-item-color-hover: var(--rt-color-action-primary);
|
|
792
|
-
--rt-nav-item-color-pressed: var(--rt-color-action-primary-hover);
|
|
793
|
-
--rt-nav-item-color-bg: var(--rt-neutral-50);
|
|
794
|
-
--rt-nav-item-color-border: var(--rt-neutral-50);
|
|
795
|
-
--rt-nav-item-color-bg-active: var(--rt-color-bg-surface);
|
|
796
|
-
--rt-nav-item-color-caret: var(--rt-neutral-200);
|
|
797
|
-
/* Фокус обведён пунктиром: сплошная рамка на плашке пункта неотличима от его
|
|
798
|
-
же границы. */
|
|
799
|
-
--rt-nav-color-focus: var(--rt-color-action-primary);
|
|
800
|
-
/* Недоступный пункт светлее доступного, а не другого оттенка: общий
|
|
801
|
-
`text-disabled` уходит в сине-стальной и рядом с серой подписью читается
|
|
802
|
-
как второй цвет, а не как выключенное состояние. */
|
|
803
|
-
--rt-nav-color-disabled: var(--rt-neutral-300);
|
|
804
|
-
/* Попап профиля. Подложку берёт у панели навигации, своего здесь — габариты
|
|
805
|
-
блока пользователя, тень и набор строк: строк четыре, и они читаются как
|
|
806
|
-
список действий, а не как выпадающее меню. */
|
|
807
|
-
--rt-profile-menu-min-width: var(--rt-size-60);
|
|
808
|
-
--rt-profile-menu-padding: var(--rt-space-5);
|
|
809
|
-
--rt-profile-menu-shadow: var(--rt-shadow-profile-menu);
|
|
810
|
-
--rt-profile-menu-border-width: var(--rt-border-width-thin);
|
|
811
|
-
--rt-profile-menu-radius: var(--rt-radius-md);
|
|
812
|
-
--rt-profile-avatar-size: var(--rt-size-10);
|
|
813
|
-
--rt-profile-avatar-font-size: var(--rt-text-2xl);
|
|
814
|
-
--rt-profile-avatar-border-width: var(--rt-border-width-medium);
|
|
815
|
-
--rt-profile-avatar-radius: var(--rt-radius-full);
|
|
816
|
-
--rt-profile-item-padding-y: var(--rt-space-4);
|
|
817
|
-
--rt-profile-item-content-gap: var(--rt-space-2);
|
|
818
|
-
--rt-profile-item-font-size: var(--rt-text-md);
|
|
819
|
-
--rt-profile-item-font-weight: var(--rt-font-weight-medium);
|
|
820
|
-
--rt-profile-item-radius: var(--rt-radius-md);
|
|
821
|
-
/* Строки выступают за содержимое панели на половину её отступа: так
|
|
822
|
-
подсветка на наведении не упирается в рамку, а иконка остаётся на одной
|
|
823
|
-
вертикали с содержимым. Это же число — горизонтальный отступ строки. */
|
|
824
|
-
--rt-profile-row-inset: var(--rt-space-2);
|
|
825
|
-
--rt-profile-theme-icon-padding: var(--rt-space-2);
|
|
826
|
-
--rt-profile-theme-icon-radius: var(--rt-radius-full);
|
|
827
|
-
/* Габариты панели второго уровня: ширина считается числом колонок, поэтому
|
|
828
|
-
колонка, промежуток и внутренний отступ — токены, из которых панель
|
|
829
|
-
складывает свою ширину. По вертикали отступ крупнее: у первой группы над
|
|
830
|
-
заголовком нет ничего, и панель иначе начинается впритык. */
|
|
831
|
-
--rt-nav-panel-column-width: var(--rt-size-60);
|
|
832
|
-
--rt-nav-panel-column-gap: var(--rt-space-5);
|
|
833
|
-
--rt-nav-panel-padding: var(--rt-space-4);
|
|
834
|
-
--rt-nav-panel-padding-y: var(--rt-space-md);
|
|
835
|
-
--rt-nav-panel-group-gap: var(--rt-space-8);
|
|
836
|
-
--rt-nav-panel-item-gap: var(--rt-space-0-5);
|
|
837
|
-
--rt-nav-panel-item-height: var(--rt-size-6);
|
|
838
|
-
--rt-nav-panel-item-padding: var(--rt-space-1) var(--rt-space-2);
|
|
839
|
-
--rt-nav-panel-columns: 1;
|
|
840
|
-
--rt-nav-panel-color-bg: var(--rt-color-bg-surface);
|
|
841
|
-
--rt-nav-panel-color-border: var(--rt-neutral-200);
|
|
842
|
-
--rt-nav-panel-shadow: var(--rt-shadow-nav-panel);
|
|
843
|
-
/* Второй уровень набран легче первого: ряд разделов держит вес, а полтора
|
|
844
|
-
десятка пунктов под ним читаются построчно. */
|
|
845
|
-
--rt-nav-panel-item-font-size: var(--rt-text-sm);
|
|
846
|
-
--rt-nav-panel-item-font-weight: var(--rt-font-weight-medium);
|
|
847
|
-
--rt-nav-panel-item-content-gap: var(--rt-space-1);
|
|
848
|
-
--rt-nav-panel-item-color: var(--rt-neutral-600);
|
|
849
|
-
--rt-nav-panel-item-color-bg-hover: var(--rt-neutral-50);
|
|
850
|
-
--rt-nav-panel-item-color-active: var(--rt-color-text-inverse);
|
|
851
|
-
--rt-nav-panel-item-color-bg-active: var(--rt-color-action-primary);
|
|
852
|
-
--rt-nav-panel-group-font-size: var(--rt-text-xs);
|
|
853
|
-
--rt-nav-panel-group-font-weight: var(--rt-font-weight-medium);
|
|
854
|
-
/* Заголовок группы светлее пункта, и оба берут порог контраста на белой панели.
|
|
855
|
-
Отношения обеих пар считает проверка тёмной темы; таблица замера — на странице
|
|
856
|
-
«Colors» витрины. */
|
|
857
|
-
--rt-nav-panel-group-color: var(--rt-neutral-600);
|
|
858
|
-
--rt-nav-panel-group-content-gap: var(--rt-space-2);
|
|
859
|
-
/* Маркер непросмотренного. Точка стоит в потоке следом за подписью — и в ряду
|
|
860
|
-
разделов, и в панели, и на узком экране: место ей даёт общий зазор
|
|
861
|
-
содержимого пункта. */
|
|
862
|
-
--rt-nav-caret-size: var(--rt-size-3);
|
|
863
|
-
--rt-nav-marker-size: var(--rt-size-1);
|
|
864
|
-
--rt-nav-marker-color: var(--rt-color-state-danger);
|
|
798
|
+
/* Группа переключателей видом «чипы»: отдельные пункты с обводкой. Цвета — здесь, на корне:
|
|
799
|
+
они не зависят от размера группы; размеры объявлены на самом хосте группы. Выбранный пункт
|
|
800
|
+
в своём виде кита — мягкая марка, обводка у него та же, что у невыбранного. */
|
|
801
|
+
--rt-toggle-chip-color-border: var(--rt-color-border-default);
|
|
802
|
+
--rt-toggle-chip-color-text: var(--rt-color-text-muted);
|
|
803
|
+
--rt-toggle-chip-color-bg-selected: var(--rt-color-action-primary-subtle);
|
|
865
804
|
/* Form field (rt-field) — обёртка анатомии поля: label / help / hint / error /
|
|
866
805
|
required-маркер / read-only значение. Визуал label+hint в стиле Tailwind
|
|
867
806
|
form (мелкий medium label, muted hint). Компоненты потребляют только эти
|
|
@@ -874,8 +813,11 @@
|
|
|
874
813
|
--rt-field-hint-font-size: var(--rt-text-xs);
|
|
875
814
|
--rt-field-hint-color: var(--rt-color-text-muted);
|
|
876
815
|
--rt-field-error-font-size: var(--rt-text-xs);
|
|
816
|
+
--rt-field-messages-line-height: normal;
|
|
817
|
+
--rt-field-messages-padding-top: 0px;
|
|
877
818
|
--rt-field-error-color: var(--rt-color-state-danger);
|
|
878
819
|
--rt-field-required-color: var(--rt-color-state-danger);
|
|
820
|
+
--rt-field-required-gap: var(--rt-space-1);
|
|
879
821
|
--rt-field-value-font-size: var(--rt-text-sm);
|
|
880
822
|
--rt-field-value-color: var(--rt-color-text-primary);
|
|
881
823
|
--rt-field-value-empty-color: var(--rt-color-text-muted);
|
|
@@ -954,6 +896,105 @@
|
|
|
954
896
|
--rt-list-filter-line-height: var(--rt-leading-none);
|
|
955
897
|
--rt-list-placeholder-min-height: var(--rt-size-60);
|
|
956
898
|
--rt-list-placeholder-grow: 1;
|
|
899
|
+
/* Навигация (rt-page-header). Шапка — отдельная плашка; отступ от краёв
|
|
900
|
+
страницы задаёт тот, кто её ставит. */
|
|
901
|
+
--rt-nav-header-padding: var(--rt-space-2) var(--rt-space-4);
|
|
902
|
+
--rt-nav-header-color-bg: var(--rt-neutral-50);
|
|
903
|
+
/* Первый уровень. Пункт ряда несёт плашку цвета самой шапки: на общем фоне её
|
|
904
|
+
не видно, и белым проступает только активный раздел. Наведение красит
|
|
905
|
+
подпись, а не фон — иначе оно спорит с этой подсветкой. */
|
|
906
|
+
--rt-nav-item-height: var(--rt-size-6);
|
|
907
|
+
--rt-nav-item-gap: var(--rt-space-1);
|
|
908
|
+
--rt-nav-item-padding: var(--rt-space-2) var(--rt-space-2);
|
|
909
|
+
--rt-nav-item-content-gap: var(--rt-space-2);
|
|
910
|
+
--rt-nav-item-font-size: var(--rt-text-sm);
|
|
911
|
+
--rt-nav-item-font-weight: var(--rt-font-weight-semibold);
|
|
912
|
+
--rt-nav-item-line-height: var(--rt-leading-none);
|
|
913
|
+
--rt-nav-item-color: var(--rt-color-text-primary);
|
|
914
|
+
--rt-nav-item-color-hover: var(--rt-color-action-primary);
|
|
915
|
+
--rt-nav-item-color-pressed: var(--rt-color-action-primary-hover);
|
|
916
|
+
--rt-nav-item-color-bg: var(--rt-neutral-50);
|
|
917
|
+
--rt-nav-item-color-border: var(--rt-neutral-50);
|
|
918
|
+
--rt-nav-item-color-bg-active: var(--rt-color-bg-surface);
|
|
919
|
+
--rt-nav-item-color-caret: var(--rt-neutral-200);
|
|
920
|
+
/* Фокус обведён пунктиром: сплошная рамка на плашке пункта неотличима от его
|
|
921
|
+
же границы. */
|
|
922
|
+
--rt-nav-color-focus: var(--rt-color-action-primary);
|
|
923
|
+
/* Недоступный пункт светлее доступного, а не другого оттенка: общий
|
|
924
|
+
`text-disabled` уходит в сине-стальной и рядом с серой подписью читается
|
|
925
|
+
как второй цвет, а не как выключенное состояние. */
|
|
926
|
+
--rt-nav-color-disabled: var(--rt-neutral-300);
|
|
927
|
+
/* Попап профиля. Подложку берёт у панели навигации, своего здесь — габариты
|
|
928
|
+
блока пользователя, тень и набор строк: строк четыре, и они читаются как
|
|
929
|
+
список действий, а не как выпадающее меню. */
|
|
930
|
+
--rt-profile-menu-min-width: var(--rt-size-60);
|
|
931
|
+
--rt-profile-menu-padding: var(--rt-space-5);
|
|
932
|
+
--rt-profile-menu-shadow: var(--rt-shadow-profile-menu);
|
|
933
|
+
--rt-profile-menu-border-width: var(--rt-border-width-thin);
|
|
934
|
+
--rt-profile-menu-radius: var(--rt-radius-md);
|
|
935
|
+
--rt-profile-avatar-size: var(--rt-size-10);
|
|
936
|
+
--rt-profile-avatar-font-size: var(--rt-text-2xl);
|
|
937
|
+
--rt-profile-avatar-border-width: var(--rt-border-width-medium);
|
|
938
|
+
--rt-profile-avatar-radius: var(--rt-radius-full);
|
|
939
|
+
--rt-profile-item-padding-y: var(--rt-space-4);
|
|
940
|
+
--rt-profile-item-content-gap: var(--rt-space-2);
|
|
941
|
+
--rt-profile-item-font-size: var(--rt-text-md);
|
|
942
|
+
--rt-profile-item-font-weight: var(--rt-font-weight-medium);
|
|
943
|
+
--rt-profile-item-radius: var(--rt-radius-md);
|
|
944
|
+
/* Строки выступают за содержимое панели на половину её отступа: так
|
|
945
|
+
подсветка на наведении не упирается в рамку, а иконка остаётся на одной
|
|
946
|
+
вертикали с содержимым. Это же число — горизонтальный отступ строки. */
|
|
947
|
+
--rt-profile-row-inset: var(--rt-space-2);
|
|
948
|
+
--rt-profile-theme-icon-padding: var(--rt-space-2);
|
|
949
|
+
--rt-profile-theme-icon-radius: var(--rt-radius-full);
|
|
950
|
+
/* Габариты панели второго уровня: ширина считается числом колонок, поэтому
|
|
951
|
+
колонка, промежуток и внутренний отступ — токены, из которых панель
|
|
952
|
+
складывает свою ширину. По вертикали отступ крупнее: у первой группы над
|
|
953
|
+
заголовком нет ничего, и панель иначе начинается впритык. */
|
|
954
|
+
--rt-nav-panel-column-width: var(--rt-size-60);
|
|
955
|
+
--rt-nav-panel-column-gap: var(--rt-space-5);
|
|
956
|
+
--rt-nav-panel-padding: var(--rt-space-4);
|
|
957
|
+
--rt-nav-panel-padding-y: var(--rt-space-md);
|
|
958
|
+
--rt-nav-panel-group-gap: var(--rt-space-8);
|
|
959
|
+
--rt-nav-panel-item-gap: var(--rt-space-0-5);
|
|
960
|
+
--rt-nav-panel-item-height: var(--rt-size-6);
|
|
961
|
+
--rt-nav-panel-item-padding: var(--rt-space-1) var(--rt-space-2);
|
|
962
|
+
--rt-nav-panel-columns: 1;
|
|
963
|
+
--rt-nav-panel-color-bg: var(--rt-color-bg-surface);
|
|
964
|
+
--rt-nav-panel-color-border: var(--rt-neutral-200);
|
|
965
|
+
--rt-nav-panel-shadow: var(--rt-shadow-nav-panel);
|
|
966
|
+
/* Второй уровень набран легче первого: ряд разделов держит вес, а полтора
|
|
967
|
+
десятка пунктов под ним читаются построчно. */
|
|
968
|
+
--rt-nav-panel-item-font-size: var(--rt-text-sm);
|
|
969
|
+
--rt-nav-panel-item-font-weight: var(--rt-font-weight-medium);
|
|
970
|
+
--rt-nav-panel-item-content-gap: var(--rt-space-1);
|
|
971
|
+
--rt-nav-panel-item-color: var(--rt-neutral-600);
|
|
972
|
+
--rt-nav-panel-item-color-bg-hover: var(--rt-neutral-50);
|
|
973
|
+
--rt-nav-panel-item-color-active: var(--rt-color-text-inverse);
|
|
974
|
+
--rt-nav-panel-item-color-bg-active: var(--rt-color-action-primary);
|
|
975
|
+
--rt-nav-panel-group-font-size: var(--rt-text-xs);
|
|
976
|
+
--rt-nav-panel-group-font-weight: var(--rt-font-weight-medium);
|
|
977
|
+
/* Заголовок группы светлее пункта, и оба берут порог контраста на белой панели.
|
|
978
|
+
Отношения обеих пар считает проверка тёмной темы; таблица замера — на странице
|
|
979
|
+
«Colors» витрины. */
|
|
980
|
+
--rt-nav-panel-group-color: var(--rt-neutral-600);
|
|
981
|
+
--rt-nav-panel-group-content-gap: var(--rt-space-2);
|
|
982
|
+
/* Маркер непросмотренного. Точка стоит в потоке следом за подписью — и в ряду
|
|
983
|
+
разделов, и в панели, и на узком экране: место ей даёт общий зазор
|
|
984
|
+
содержимого пункта. */
|
|
985
|
+
--rt-nav-caret-size: var(--rt-size-3);
|
|
986
|
+
--rt-nav-marker-size: var(--rt-size-1);
|
|
987
|
+
--rt-nav-marker-color: var(--rt-color-state-danger);
|
|
988
|
+
/* Вкладки (rt-tabs). Полоса выбранной вкладки переезжает на новую, а панель
|
|
989
|
+
меняется сдвигом по направлению перехода. Сдвиг панели в своём виде кита выключен
|
|
990
|
+
нулевой длительностью: содержимое вкладки сменяется на месте, как раньше. */
|
|
991
|
+
--rt-tabs-indicator-duration: var(--rt-duration-base);
|
|
992
|
+
--rt-tabs-indicator-easing: ease-out;
|
|
993
|
+
--rt-tabs-panel-duration: 0ms;
|
|
994
|
+
--rt-tabs-panel-easing: ease-out;
|
|
995
|
+
/* Прокрутка полосы вкладок стрелками и к выбранной вкладке. */
|
|
996
|
+
--rt-tabs-scroll-duration: var(--rt-duration-base);
|
|
997
|
+
--rt-tabs-scroll-easing: ease-out;
|
|
957
998
|
}
|
|
958
999
|
|
|
959
1000
|
/* Built by the generator `tools/build-tokens-v2.mjs` from `tokens.source.mjs` — edited there, not here:
|
|
@@ -988,34 +1029,34 @@
|
|
|
988
1029
|
.rt-preset-material {
|
|
989
1030
|
/* Подложки */
|
|
990
1031
|
--rt-color-bg-page: var(--rt-mat-neutral-5);
|
|
991
|
-
--rt-color-bg-surface: var(--
|
|
1032
|
+
--rt-color-bg-surface: var(--rt-sys-surface, var(--rt-mat-neutral-0));
|
|
992
1033
|
--rt-color-bg-surface-subtle: var(--rt-mat-overlay-black-4);
|
|
993
|
-
--rt-color-bg-surface-subtle-2: var(--
|
|
1034
|
+
--rt-color-bg-surface-subtle-2: var(--rt-field-filled-container-color, var(--rt-sys-surface-variant, var(--rt-mat-neutral-15)));
|
|
994
1035
|
--rt-color-bg-hover: var(--rt-mat-neutral-10);
|
|
995
1036
|
--rt-color-bg-subtle: var(--rt-mat-neutral-10);
|
|
996
1037
|
--rt-color-bg-overlay: var(--rt-mat-overlay-black-32);
|
|
997
|
-
--rt-color-bg-inverse: var(--
|
|
998
|
-
--rt-color-bg-nav: var(--
|
|
1038
|
+
--rt-color-bg-inverse: var(--rt-sys-inverse-surface, var(--rt-mat-neutral-100));
|
|
1039
|
+
--rt-color-bg-nav: var(--rt-sys-primary, var(--rt-mat-navy-100)); /* марка первого кита: обвязка тёмная в обоих наборах */
|
|
999
1040
|
--rt-color-bg-page-auth: var(--rt-mat-neutral-5);
|
|
1000
1041
|
--rt-color-bg-surface-auth-card: var(--rt-mat-neutral-0);
|
|
1001
1042
|
/* Текст */
|
|
1002
|
-
--rt-color-text-primary: var(--
|
|
1043
|
+
--rt-color-text-primary: var(--rt-sys-on-surface, var(--rt-mat-neutral-100));
|
|
1003
1044
|
--rt-color-text-muted: var(--rt-mat-neutral-60);
|
|
1004
|
-
--rt-color-text-disabled: color-mix(in srgb, var(--
|
|
1005
|
-
--rt-color-text-inverse: var(--
|
|
1006
|
-
--rt-color-text-link: var(--
|
|
1007
|
-
--rt-color-text-link-hover: color-mix(in srgb, var(--
|
|
1045
|
+
--rt-color-text-disabled: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-100)) 38%, transparent);
|
|
1046
|
+
--rt-color-text-inverse: var(--rt-sys-inverse-on-surface, var(--rt-mat-neutral-0));
|
|
1047
|
+
--rt-color-text-link: var(--rt-sys-primary, var(--rt-mat-blue-100));
|
|
1048
|
+
--rt-color-text-link-hover: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 90%, #000);
|
|
1008
1049
|
/* Рамки */
|
|
1009
1050
|
--rt-color-border-default: var(--rt-mat-neutral-25);
|
|
1010
1051
|
--rt-color-border-strong: var(--rt-mat-neutral-30);
|
|
1011
1052
|
--rt-color-border-subtle: var(--rt-mat-neutral-20);
|
|
1012
1053
|
--rt-color-border-focus: var(--rt-mat-blue-40); /* кольцо фокуса первого кита светлее его действия */
|
|
1013
1054
|
/* Действие: подложка, наведение, нажатие, подпись на них и цвет роли на поверхности */
|
|
1014
|
-
--rt-color-action-primary: var(--
|
|
1015
|
-
--rt-color-action-primary-hover: color-mix(in srgb, var(--
|
|
1016
|
-
--rt-color-action-primary-active: color-mix(in srgb, var(--
|
|
1017
|
-
--rt-color-action-primary-subtle: color-mix(in srgb, var(--
|
|
1018
|
-
--rt-color-action-primary-soft: color-mix(in srgb, var(--
|
|
1055
|
+
--rt-color-action-primary: var(--rt-sys-primary, var(--rt-mat-blue-100));
|
|
1056
|
+
--rt-color-action-primary-hover: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 90%, #000);
|
|
1057
|
+
--rt-color-action-primary-active: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 80%, #000);
|
|
1058
|
+
--rt-color-action-primary-subtle: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 8%, transparent);
|
|
1059
|
+
--rt-color-action-primary-soft: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 24%, transparent);
|
|
1019
1060
|
--rt-color-action-on-primary: var(--rt-mat-neutral-0);
|
|
1020
1061
|
--rt-color-action-secondary: var(--rt-mat-neutral-60);
|
|
1021
1062
|
--rt-color-action-secondary-hover: var(--rt-mat-neutral-hover);
|
|
@@ -1030,15 +1071,15 @@
|
|
|
1030
1071
|
--rt-color-action-warning-hover: var(--rt-mat-orange-hover);
|
|
1031
1072
|
--rt-color-action-warning-active: var(--rt-mat-orange-active);
|
|
1032
1073
|
--rt-color-action-on-warning: var(--rt-mat-neutral-0);
|
|
1033
|
-
--rt-color-action-danger: var(--
|
|
1034
|
-
--rt-color-action-danger-hover: color-mix(in srgb, var(--
|
|
1035
|
-
--rt-color-action-danger-active: color-mix(in srgb, var(--
|
|
1074
|
+
--rt-color-action-danger: var(--rt-sys-error, var(--rt-mat-red-100));
|
|
1075
|
+
--rt-color-action-danger-hover: color-mix(in srgb, var(--rt-sys-error, var(--rt-mat-red-100)) 90%, #000);
|
|
1076
|
+
--rt-color-action-danger-active: color-mix(in srgb, var(--rt-sys-error, var(--rt-mat-red-100)) 80%, #000);
|
|
1036
1077
|
--rt-color-action-on-danger: var(--rt-mat-neutral-0);
|
|
1037
|
-
--rt-color-action-info: var(--
|
|
1038
|
-
--rt-color-action-info-hover: color-mix(in srgb, var(--
|
|
1039
|
-
--rt-color-action-info-active: color-mix(in srgb, var(--
|
|
1078
|
+
--rt-color-action-info: var(--rt-sys-primary, var(--rt-mat-blue-100));
|
|
1079
|
+
--rt-color-action-info-hover: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 90%, #000);
|
|
1080
|
+
--rt-color-action-info-active: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 80%, #000);
|
|
1040
1081
|
--rt-color-action-on-info: var(--rt-mat-neutral-0);
|
|
1041
|
-
--rt-color-action-disabled: color-mix(in srgb, var(--
|
|
1082
|
+
--rt-color-action-disabled: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-100)) 12%, transparent);
|
|
1042
1083
|
/* Состояния: цвет роли и её светлая подложка */
|
|
1043
1084
|
--rt-color-state-success: var(--rt-mat-green-100);
|
|
1044
1085
|
--rt-color-state-success-bg: var(--rt-mat-green-10);
|
|
@@ -1046,11 +1087,11 @@
|
|
|
1046
1087
|
--rt-color-state-warning: var(--rt-mat-orange-100);
|
|
1047
1088
|
--rt-color-state-warning-bg: var(--rt-mat-orange-5);
|
|
1048
1089
|
--rt-color-state-warning-text: var(--rt-mat-orange-100);
|
|
1049
|
-
--rt-color-state-danger: var(--
|
|
1050
|
-
--rt-color-state-danger-bg: var(--
|
|
1051
|
-
--rt-color-state-error-text: var(--
|
|
1052
|
-
--rt-color-state-info: var(--
|
|
1053
|
-
--rt-color-state-info-bg: var(--
|
|
1090
|
+
--rt-color-state-danger: var(--rt-sys-error, var(--rt-mat-red-100));
|
|
1091
|
+
--rt-color-state-danger-bg: var(--rt-sys-error-container, var(--rt-mat-red-10));
|
|
1092
|
+
--rt-color-state-error-text: var(--rt-sys-error, var(--rt-mat-red-100));
|
|
1093
|
+
--rt-color-state-info: var(--rt-sys-primary, var(--rt-mat-blue-100));
|
|
1094
|
+
--rt-color-state-info-bg: var(--rt-sys-primary-container, var(--rt-mat-blue-20));
|
|
1054
1095
|
/* Рельса шагов */
|
|
1055
1096
|
--rt-color-stepper-track: var(--rt-mat-neutral-30);
|
|
1056
1097
|
/* Заглушка загрузки: краски те же, что набор давал ей прежде через подложку и
|
|
@@ -1058,27 +1099,27 @@
|
|
|
1058
1099
|
--rt-color-skeleton-base: var(--rt-mat-neutral-10);
|
|
1059
1100
|
--rt-color-skeleton-wave: var(--rt-mat-neutral-25);
|
|
1060
1101
|
/* Шапка таблицы первого кита залита тем же цветом, что залитое поле Material. */
|
|
1061
|
-
--rt-color-table-head-bg: var(--
|
|
1102
|
+
--rt-color-table-head-bg: var(--rt-field-filled-container-color, var(--rt-sys-surface-variant, var(--rt-mat-overlay-black-4)));
|
|
1062
1103
|
/* Черта снизу у залитого поля Material — цвет on-surface-variant темы. */
|
|
1063
|
-
--rt-color-field-fill-underline: var(--
|
|
1104
|
+
--rt-color-field-fill-underline: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-30));
|
|
1064
1105
|
/* Поиск списка первого кита — обведённое или залитое поле Material при плотности −1:
|
|
1065
1106
|
52px, скругление 4px, рамка цвета outline темы, внутри прозрачное. Ступени 52px нет, высота собрана из ступени
|
|
1066
1107
|
xl без ступени 1. */
|
|
1067
1108
|
--rt-list-search-height: calc(var(--rt-control-height-xl) - var(--rt-space-1));
|
|
1068
1109
|
--rt-list-search-radius: var(--rt-radius-sm);
|
|
1069
|
-
--rt-list-search-color-border: var(--
|
|
1110
|
+
--rt-list-search-color-border: var(--rt-sys-outline, var(--rt-mat-neutral-25));
|
|
1070
1111
|
--rt-list-search-color-bg: transparent;
|
|
1071
1112
|
--rt-list-search-width: calc(var(--rt-size-64) + var(--rt-size-24));
|
|
1072
1113
|
--rt-list-search-padding-x: calc(var(--rt-space-2) + var(--rt-space-1) - var(--rt-border-width-thin));
|
|
1073
1114
|
--rt-list-search-gap: var(--rt-space-4);
|
|
1074
1115
|
--rt-list-search-font-size: var(--rt-text-md);
|
|
1075
1116
|
--rt-list-search-icon-size: var(--rt-size-6);
|
|
1076
|
-
--rt-list-search-icon-color: var(--
|
|
1077
|
-
--rt-list-search-color-placeholder: var(--
|
|
1117
|
+
--rt-list-search-icon-color: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-60));
|
|
1118
|
+
--rt-list-search-color-placeholder: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-60));
|
|
1078
1119
|
/* Панель настройки колонок первого кита: плашка колонки залита цветом выбранного пункта
|
|
1079
1120
|
Material, значки — в тоне on-surface-variant темы. Сняты с панели на витрине первого кита. */
|
|
1080
|
-
--rt-list-settings-item-bg: var(--
|
|
1081
|
-
--rt-list-settings-icon-color: var(--
|
|
1121
|
+
--rt-list-settings-item-bg: var(--rt-option-selected-state-layer-color, var(--rt-sys-secondary-container, var(--rt-mat-neutral-10)));
|
|
1122
|
+
--rt-list-settings-icon-color: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-60));
|
|
1082
1123
|
/* Кнопки действий панели списка — mat-mini-fab первого кита: круг без заливки с подъёмом 6,
|
|
1083
1124
|
под указателем подъём 8 и тёмный значок вместо серого; значок 24px, промежуток 16px. */
|
|
1084
1125
|
--rt-list-action-gap: var(--rt-space-md);
|
|
@@ -1089,16 +1130,16 @@
|
|
|
1089
1130
|
--rt-list-action-icon-size: var(--rt-size-6);
|
|
1090
1131
|
--rt-list-action-color: var(--rt-mat-neutral-60);
|
|
1091
1132
|
--rt-list-table-icon-size: var(--rt-size-6);
|
|
1092
|
-
--rt-list-table-icon-color: var(--
|
|
1093
|
-
--rt-list-table-head-divider-color: var(--
|
|
1133
|
+
--rt-list-table-icon-color: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-60));
|
|
1134
|
+
--rt-list-table-head-divider-color: var(--rt-sys-outline, var(--rt-mat-neutral-30));
|
|
1094
1135
|
--rt-list-table-button-size: calc(var(--rt-size-8) + var(--rt-size-1));
|
|
1095
1136
|
--rt-list-table-button-radius: var(--rt-radius-full);
|
|
1096
1137
|
--rt-list-copy-button-size: var(--rt-size-6);
|
|
1097
1138
|
--rt-list-copy-button-radius: var(--rt-mat-radius-5);
|
|
1098
1139
|
--rt-list-settings-item-radius: var(--rt-mat-radius-5);
|
|
1099
1140
|
--rt-list-filter-line-height: var(--rt-size-6);
|
|
1100
|
-
--rt-list-copy-button-bg: var(--
|
|
1101
|
-
--rt-list-copy-button-bg-hover: var(--
|
|
1141
|
+
--rt-list-copy-button-bg: var(--rt-fab-small-container-color, var(--rt-mat-neutral-0));
|
|
1142
|
+
--rt-list-copy-button-bg-hover: var(--rt-fab-small-container-color, var(--rt-mat-neutral-0));
|
|
1102
1143
|
--rt-list-copy-button-color: var(--rt-mat-neutral-60);
|
|
1103
1144
|
--rt-list-action-color-hover: var(--rt-mat-neutral-100);
|
|
1104
1145
|
--rt-list-action-color-bg-hover: transparent;
|
|
@@ -1152,23 +1193,23 @@
|
|
|
1152
1193
|
скруглён только снизу, подсказка 4px без тени. Тень — подъём 2 Material, как у mat-menu и
|
|
1153
1194
|
mat-select. */
|
|
1154
1195
|
--rt-overlay-menu-radius: var(--rt-mat-radius-4);
|
|
1155
|
-
--rt-overlay-menu-shadow: var(--
|
|
1196
|
+
--rt-overlay-menu-shadow: var(--rt-sys-level2, var(--rt-mat-shadow-level-2));
|
|
1156
1197
|
--rt-overlay-select-radius: 0 0 var(--rt-mat-radius-4) var(--rt-mat-radius-4);
|
|
1157
|
-
--rt-overlay-select-shadow: var(--
|
|
1198
|
+
--rt-overlay-select-shadow: var(--rt-sys-level2, var(--rt-mat-shadow-level-2));
|
|
1158
1199
|
--rt-overlay-tooltip-radius: var(--rt-mat-radius-4);
|
|
1159
1200
|
--rt-overlay-tooltip-shadow: none;
|
|
1160
1201
|
/* Меню строки — mat-menu первого кита: фон контейнера Material, отступ 8px сверху и снизу,
|
|
1161
1202
|
подписи весом 500, опасный пункт красным первого кита. Выпадающий список — mat-select: пункты
|
|
1162
1203
|
16px, выбранный — фон текста 12% без жирного и с галочкой. */
|
|
1163
|
-
--rt-overlay-menu-bg: var(--
|
|
1204
|
+
--rt-overlay-menu-bg: var(--rt-menu-container-color, var(--rt-mat-neutral-0));
|
|
1164
1205
|
--rt-overlay-menu-padding-y: var(--rt-space-sm);
|
|
1165
1206
|
--rt-overlay-menu-item-weight: var(--rt-font-weight-medium);
|
|
1166
1207
|
--rt-overlay-menu-danger-color: var(--rt-mat-red-100);
|
|
1167
1208
|
--rt-overlay-select-option-font-size: var(--rt-text-md);
|
|
1168
|
-
--rt-overlay-select-selected-bg: color-mix(in srgb, var(--
|
|
1209
|
+
--rt-overlay-select-selected-bg: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-100)) 12%, transparent);
|
|
1169
1210
|
--rt-overlay-select-selected-weight: var(--rt-font-weight-regular);
|
|
1170
1211
|
--rt-overlay-select-check-display: inline-flex;
|
|
1171
|
-
--rt-overlay-menu-current-bg: color-mix(in srgb, var(--
|
|
1212
|
+
--rt-overlay-menu-current-bg: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-100)) 12%, transparent);
|
|
1172
1213
|
--rt-overlay-menu-min-width: var(--rt-mat-menu-min-width);
|
|
1173
1214
|
--rt-overlay-menu-item-min-height: var(--rt-size-12);
|
|
1174
1215
|
--rt-overlay-menu-item-padding-y: 0px;
|
|
@@ -1182,6 +1223,78 @@
|
|
|
1182
1223
|
--rt-icon-button-disabled-opacity: 1;
|
|
1183
1224
|
--rt-icon-button-disabled-color: var(--rt-color-text-disabled);
|
|
1184
1225
|
--rt-icon-button-disabled-fill: 0%;
|
|
1226
|
+
/* Обведённое поле Material: прозрачное, рамка цвета outline темы, фокус — рамка в два
|
|
1227
|
+
пикселя цветом марки без внешнего кольца. Вторая линия рамки фокуса — внутренняя тень. */
|
|
1228
|
+
--rt-input-color-bg: transparent;
|
|
1229
|
+
--rt-input-color-border: var(--rt-sys-outline, var(--rt-mat-neutral-60));
|
|
1230
|
+
--rt-input-focus-shadow: inset 0 0 0 1px var(--rt-input-color-border-focus);
|
|
1231
|
+
--rt-input-focus-shadow-error: inset 0 0 0 1px var(--rt-input-color-border-error);
|
|
1232
|
+
/* Размер поля Material: 56 px при плотности 0 и на 4 px меньше за каждый шаг, значение 16 px.
|
|
1233
|
+
Шаг приходит свойством `--rt-input-density`, которое ставит атрибут `data-rt-density` на поле
|
|
1234
|
+
или на любом предке, — правила в `_density.scss`. Высота считается здесь, на узле с признаком
|
|
1235
|
+
набора, из унаследованного шага: атрибут на корне приложения доходит и до поля со своим
|
|
1236
|
+
признаком набора. Своя высота приложения — `--rt-input-height-app` на любом предке; она сильнее
|
|
1237
|
+
плотности и не перебивается набором на самом поле. */
|
|
1238
|
+
--rt-input-height-md: var(
|
|
1239
|
+
--rt-input-height-app,
|
|
1240
|
+
calc(var(--rt-size-12) + var(--rt-size-2) - var(--rt-input-density) * var(--rt-size-1))
|
|
1241
|
+
);
|
|
1242
|
+
--rt-input-height: var(--rt-input-height-md);
|
|
1243
|
+
/* Крупная ступень `size` не ниже средней высоты набора: 48 px кита под набором вышли бы ниже
|
|
1244
|
+
поля по умолчанию (56 px). Малая ступень остаётся ступенью кита — по ней стоят поиск списка и
|
|
1245
|
+
правка на месте. */
|
|
1246
|
+
--rt-input-height-lg: max(var(--rt-control-height-lg), var(--rt-input-height-md));
|
|
1247
|
+
--rt-input-font-size: var(--rt-text-md);
|
|
1248
|
+
/* Подсказка, подпись в покое, значки и стрелка поля — цвета on-surface-variant темы Material,
|
|
1249
|
+
каретка — цвета марки, значки 24 px, как у поля Material. Без темы Material цвета прежние. */
|
|
1250
|
+
--rt-input-color-text-placeholder: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-60));
|
|
1251
|
+
--rt-input-icon-color: var(--rt-sys-on-surface-variant, var(--rt-neutral-600));
|
|
1252
|
+
--rt-input-icon-size: var(--rt-size-6);
|
|
1253
|
+
--rt-input-caret-color: var(--rt-color-action-primary);
|
|
1254
|
+
/* Отключённое поле Material: поле не тускнеет целиком — рамка on-surface 12%, текст и
|
|
1255
|
+
подсказка on-surface 38%. */
|
|
1256
|
+
--rt-input-disabled-field-opacity: 1;
|
|
1257
|
+
--rt-input-color-border-disabled: var(--rt-color-action-disabled);
|
|
1258
|
+
--rt-input-color-text-disabled: var(--rt-color-text-disabled);
|
|
1259
|
+
--rt-input-color-placeholder-disabled: var(--rt-color-text-disabled);
|
|
1260
|
+
--rt-input-color-bg-disabled: transparent;
|
|
1261
|
+
/* Крестик очистки — крестик первого кита: 19 px, значок 12 px, серый, в 8 px от края поля и в
|
|
1262
|
+
4 px от текста. Отступ от края считается от правого поля в 4 px, как у поля Material с крестиком. */
|
|
1263
|
+
--rt-input-clear-size: 19px;
|
|
1264
|
+
--rt-input-clear-icon-size: var(--rt-size-3);
|
|
1265
|
+
--rt-input-clear-color: var(--rt-mat-neutral-60);
|
|
1266
|
+
--rt-input-clear-offset-end: calc(var(--rt-space-2) - var(--rt-space-1));
|
|
1267
|
+
--rt-input-clear-offset-start: calc(var(--rt-space-1) - var(--rt-input-gap));
|
|
1268
|
+
--rt-input-fill-color-bg-disabled: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-100)) 4%, transparent);
|
|
1269
|
+
--rt-input-clear-bg: var(--rt-mat-neutral-25);
|
|
1270
|
+
--rt-input-clear-bg-hover: var(--rt-input-clear-bg);
|
|
1271
|
+
--rt-input-clear-radius: var(--rt-radius-full);
|
|
1272
|
+
/* Залитое поле Material: рамки сверху и по бокам нет, только черта снизу; в фокусе черта
|
|
1273
|
+
вдвое толще цветом марки, у недействительного поля — цветом ошибки. */
|
|
1274
|
+
--rt-input-fill-edge: 0px;
|
|
1275
|
+
--rt-input-fill-focus-shadow: inset 0 -1px 0 0 var(--rt-input-color-border-focus);
|
|
1276
|
+
--rt-input-fill-focus-shadow-error: inset 0 -1px 0 0 var(--rt-input-color-border-error);
|
|
1277
|
+
/* Звёздочка обязательного поля — цвета подписи, как у поля Material; цвет ошибки она берёт
|
|
1278
|
+
только у недействительного поля, правилом самого поля. */
|
|
1279
|
+
--rt-field-required-color: currentcolor;
|
|
1280
|
+
--rt-field-required-gap: 0px;
|
|
1281
|
+
/* Строка под полем — строка подсказки Material: 16 px высотой и 4 px над ней. */
|
|
1282
|
+
--rt-field-messages-line-height: var(--rt-size-4);
|
|
1283
|
+
--rt-field-messages-padding-top: var(--rt-space-1);
|
|
1284
|
+
/* Группа переключателей видом «чипы» — фильтр-чип Material: обводка цвета outline темы,
|
|
1285
|
+
выбранный залит secondary-container, отключённый — текст 38 %, обводка 12 %. Обводку и цвет
|
|
1286
|
+
текста у выбранного задаёт лист чипов: своё имя каждому стоило бы по разу на тему, набор и
|
|
1287
|
+
островок, а начальный пакет приложения-образца стоит у порога. */
|
|
1288
|
+
--rt-toggle-chip-color-border: var(--rt-sys-outline, var(--rt-mat-neutral-60));
|
|
1289
|
+
--rt-toggle-chip-color-text: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-70));
|
|
1290
|
+
--rt-toggle-chip-color-bg-selected: var(--rt-sys-secondary-container, var(--rt-mat-neutral-25));
|
|
1291
|
+
/* Вкладки: полоса и панель движутся, как у вкладок Material, — полсекунды с той же кривой. */
|
|
1292
|
+
--rt-tabs-indicator-duration: var(--rt-duration-slower);
|
|
1293
|
+
--rt-tabs-indicator-easing: cubic-bezier(0.35, 0, 0.25, 1);
|
|
1294
|
+
--rt-tabs-panel-duration: var(--rt-duration-slower);
|
|
1295
|
+
--rt-tabs-panel-easing: cubic-bezier(0.35, 0, 0.25, 1);
|
|
1296
|
+
--rt-tabs-scroll-duration: var(--rt-duration-slower);
|
|
1297
|
+
--rt-tabs-scroll-easing: cubic-bezier(0.35, 0, 0.25, 1);
|
|
1185
1298
|
}
|
|
1186
1299
|
|
|
1187
1300
|
/* Built by the generator `tools/build-tokens-v2.mjs` from `tokens.source.mjs` — edited there, not here:
|
|
@@ -1251,6 +1364,14 @@ html.rt-theme-dark {
|
|
|
1251
1364
|
--rt-pagination-field-color-bg: var(--rt-input-color-bg);
|
|
1252
1365
|
--rt-pagination-field-color-text: var(--rt-input-color-text);
|
|
1253
1366
|
--rt-input-icon-color: var(--rt-neutral-600);
|
|
1367
|
+
--rt-input-clear-color: var(--rt-neutral-600);
|
|
1368
|
+
--rt-input-clear-bg: transparent;
|
|
1369
|
+
--rt-input-clear-bg-hover: var(--rt-icon-button-color-bg-hover);
|
|
1370
|
+
--rt-toggle-chip-color-border: var(--rt-color-border-default);
|
|
1371
|
+
--rt-toggle-chip-color-text: var(--rt-color-text-muted);
|
|
1372
|
+
--rt-toggle-chip-color-bg-selected: var(--rt-color-action-primary-subtle);
|
|
1373
|
+
--rt-input-fill-color-bg-disabled: var(--rt-color-bg-surface-subtle-2);
|
|
1374
|
+
--rt-input-color-text-placeholder: var(--rt-color-text-muted);
|
|
1254
1375
|
/* Stepper — в dark рельса уходит от яркого синего к приглушённому серо-синему
|
|
1255
1376
|
(текущий шаг остаётся янтарным из light-семантики). */
|
|
1256
1377
|
--rt-color-stepper-track: var(--rt-navy-600);
|
|
@@ -1610,6 +1731,11 @@ html.rt-theme-dark {
|
|
|
1610
1731
|
--rt-input-icon-color: var(--rt-neutral-600);
|
|
1611
1732
|
--rt-input-icon-size: var(--rt-size-4);
|
|
1612
1733
|
--rt-input-gap: var(--rt-space-sm);
|
|
1734
|
+
--rt-input-caret-color: auto;
|
|
1735
|
+
--rt-input-min-width: 0px;
|
|
1736
|
+
--rt-input-fill-edge: var(--rt-input-border-width);
|
|
1737
|
+
--rt-input-fill-focus-shadow: var(--rt-input-focus-shadow);
|
|
1738
|
+
--rt-input-fill-focus-shadow-error: var(--rt-input-focus-shadow-error);
|
|
1613
1739
|
/* Sizes (single-line height scale) */
|
|
1614
1740
|
--rt-input-height-sm: var(--rt-control-height-sm);
|
|
1615
1741
|
--rt-input-height-md: var(--rt-control-height-md);
|
|
@@ -1651,6 +1777,19 @@ html.rt-theme-dark {
|
|
|
1651
1777
|
--rt-input-line-height: var(--rt-leading-snug);
|
|
1652
1778
|
/* State / motion */
|
|
1653
1779
|
--rt-input-disabled-opacity: var(--rt-opacity-disabled);
|
|
1780
|
+
--rt-input-disabled-field-opacity: var(--rt-input-disabled-opacity);
|
|
1781
|
+
--rt-input-color-border-disabled: var(--rt-input-color-border);
|
|
1782
|
+
--rt-input-color-text-disabled: var(--rt-input-color-text);
|
|
1783
|
+
--rt-input-color-placeholder-disabled: var(--rt-input-color-text-placeholder);
|
|
1784
|
+
--rt-input-clear-size: var(--rt-control-height-sm);
|
|
1785
|
+
--rt-input-clear-icon-size: var(--rt-size-4);
|
|
1786
|
+
--rt-input-clear-color: var(--rt-neutral-600);
|
|
1787
|
+
--rt-input-clear-offset-end: 0px;
|
|
1788
|
+
--rt-input-clear-bg: transparent;
|
|
1789
|
+
--rt-input-clear-bg-hover: var(--rt-icon-button-color-bg-hover);
|
|
1790
|
+
--rt-input-clear-radius: var(--rt-radius-md);
|
|
1791
|
+
--rt-input-clear-offset-start: 0px;
|
|
1792
|
+
--rt-input-fill-color-bg-disabled: var(--rt-color-bg-surface-subtle-2);
|
|
1654
1793
|
--rt-input-focus-shadow: var(--rt-shadow-focus-ring);
|
|
1655
1794
|
--rt-input-focus-shadow-error: var(--rt-shadow-focus-ring-danger);
|
|
1656
1795
|
--rt-input-transition: border-color var(--rt-duration-fast) ease, box-shadow var(--rt-duration-fast) ease;
|
|
@@ -1690,95 +1829,12 @@ html.rt-theme-dark {
|
|
|
1690
1829
|
/* Рамка off-трека — inset-тенью, а не border: у border своя коробка, и
|
|
1691
1830
|
отступы бегунка с иконками пришлось бы пересчитывать на её толщину. */
|
|
1692
1831
|
--rt-toggle-shadow-border: inset 0 0 0 var(--rt-border-width-thin) var(--rt-toggle-color-border);
|
|
1693
|
-
/*
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
--rt-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
подпись, а не фон — иначе оно спорит с этой подсветкой. */
|
|
1700
|
-
--rt-nav-item-height: var(--rt-size-6);
|
|
1701
|
-
--rt-nav-item-gap: var(--rt-space-1);
|
|
1702
|
-
--rt-nav-item-padding: var(--rt-space-2) var(--rt-space-2);
|
|
1703
|
-
--rt-nav-item-content-gap: var(--rt-space-2);
|
|
1704
|
-
--rt-nav-item-font-size: var(--rt-text-sm);
|
|
1705
|
-
--rt-nav-item-font-weight: var(--rt-font-weight-semibold);
|
|
1706
|
-
--rt-nav-item-line-height: var(--rt-leading-none);
|
|
1707
|
-
--rt-nav-item-color: var(--rt-color-text-primary);
|
|
1708
|
-
--rt-nav-item-color-hover: var(--rt-color-action-primary);
|
|
1709
|
-
--rt-nav-item-color-pressed: var(--rt-color-action-primary-hover);
|
|
1710
|
-
--rt-nav-item-color-bg: var(--rt-neutral-50);
|
|
1711
|
-
--rt-nav-item-color-border: var(--rt-neutral-50);
|
|
1712
|
-
--rt-nav-item-color-bg-active: var(--rt-color-bg-surface);
|
|
1713
|
-
--rt-nav-item-color-caret: var(--rt-neutral-200);
|
|
1714
|
-
/* Фокус обведён пунктиром: сплошная рамка на плашке пункта неотличима от его
|
|
1715
|
-
же границы. */
|
|
1716
|
-
--rt-nav-color-focus: var(--rt-color-action-primary);
|
|
1717
|
-
/* Недоступный пункт светлее доступного, а не другого оттенка: общий
|
|
1718
|
-
`text-disabled` уходит в сине-стальной и рядом с серой подписью читается
|
|
1719
|
-
как второй цвет, а не как выключенное состояние. */
|
|
1720
|
-
--rt-nav-color-disabled: var(--rt-neutral-300);
|
|
1721
|
-
/* Попап профиля. Подложку берёт у панели навигации, своего здесь — габариты
|
|
1722
|
-
блока пользователя, тень и набор строк: строк четыре, и они читаются как
|
|
1723
|
-
список действий, а не как выпадающее меню. */
|
|
1724
|
-
--rt-profile-menu-min-width: var(--rt-size-60);
|
|
1725
|
-
--rt-profile-menu-padding: var(--rt-space-5);
|
|
1726
|
-
--rt-profile-menu-shadow: var(--rt-shadow-profile-menu);
|
|
1727
|
-
--rt-profile-menu-border-width: var(--rt-border-width-thin);
|
|
1728
|
-
--rt-profile-menu-radius: var(--rt-radius-md);
|
|
1729
|
-
--rt-profile-avatar-size: var(--rt-size-10);
|
|
1730
|
-
--rt-profile-avatar-font-size: var(--rt-text-2xl);
|
|
1731
|
-
--rt-profile-avatar-border-width: var(--rt-border-width-medium);
|
|
1732
|
-
--rt-profile-avatar-radius: var(--rt-radius-full);
|
|
1733
|
-
--rt-profile-item-padding-y: var(--rt-space-4);
|
|
1734
|
-
--rt-profile-item-content-gap: var(--rt-space-2);
|
|
1735
|
-
--rt-profile-item-font-size: var(--rt-text-md);
|
|
1736
|
-
--rt-profile-item-font-weight: var(--rt-font-weight-medium);
|
|
1737
|
-
--rt-profile-item-radius: var(--rt-radius-md);
|
|
1738
|
-
/* Строки выступают за содержимое панели на половину её отступа: так
|
|
1739
|
-
подсветка на наведении не упирается в рамку, а иконка остаётся на одной
|
|
1740
|
-
вертикали с содержимым. Это же число — горизонтальный отступ строки. */
|
|
1741
|
-
--rt-profile-row-inset: var(--rt-space-2);
|
|
1742
|
-
--rt-profile-theme-icon-padding: var(--rt-space-2);
|
|
1743
|
-
--rt-profile-theme-icon-radius: var(--rt-radius-full);
|
|
1744
|
-
/* Габариты панели второго уровня: ширина считается числом колонок, поэтому
|
|
1745
|
-
колонка, промежуток и внутренний отступ — токены, из которых панель
|
|
1746
|
-
складывает свою ширину. По вертикали отступ крупнее: у первой группы над
|
|
1747
|
-
заголовком нет ничего, и панель иначе начинается впритык. */
|
|
1748
|
-
--rt-nav-panel-column-width: var(--rt-size-60);
|
|
1749
|
-
--rt-nav-panel-column-gap: var(--rt-space-5);
|
|
1750
|
-
--rt-nav-panel-padding: var(--rt-space-4);
|
|
1751
|
-
--rt-nav-panel-padding-y: var(--rt-space-md);
|
|
1752
|
-
--rt-nav-panel-group-gap: var(--rt-space-8);
|
|
1753
|
-
--rt-nav-panel-item-gap: var(--rt-space-0-5);
|
|
1754
|
-
--rt-nav-panel-item-height: var(--rt-size-6);
|
|
1755
|
-
--rt-nav-panel-item-padding: var(--rt-space-1) var(--rt-space-2);
|
|
1756
|
-
--rt-nav-panel-columns: 1;
|
|
1757
|
-
--rt-nav-panel-color-bg: var(--rt-color-bg-surface);
|
|
1758
|
-
--rt-nav-panel-color-border: var(--rt-neutral-200);
|
|
1759
|
-
--rt-nav-panel-shadow: var(--rt-shadow-nav-panel);
|
|
1760
|
-
/* Второй уровень набран легче первого: ряд разделов держит вес, а полтора
|
|
1761
|
-
десятка пунктов под ним читаются построчно. */
|
|
1762
|
-
--rt-nav-panel-item-font-size: var(--rt-text-sm);
|
|
1763
|
-
--rt-nav-panel-item-font-weight: var(--rt-font-weight-medium);
|
|
1764
|
-
--rt-nav-panel-item-content-gap: var(--rt-space-1);
|
|
1765
|
-
--rt-nav-panel-item-color: var(--rt-neutral-600);
|
|
1766
|
-
--rt-nav-panel-item-color-bg-hover: var(--rt-neutral-50);
|
|
1767
|
-
--rt-nav-panel-item-color-active: var(--rt-color-text-inverse);
|
|
1768
|
-
--rt-nav-panel-item-color-bg-active: var(--rt-color-action-primary);
|
|
1769
|
-
--rt-nav-panel-group-font-size: var(--rt-text-xs);
|
|
1770
|
-
--rt-nav-panel-group-font-weight: var(--rt-font-weight-medium);
|
|
1771
|
-
/* Заголовок группы светлее пункта, и оба берут порог контраста на белой панели.
|
|
1772
|
-
Отношения обеих пар считает проверка тёмной темы; таблица замера — на странице
|
|
1773
|
-
«Colors» витрины. */
|
|
1774
|
-
--rt-nav-panel-group-color: var(--rt-neutral-600);
|
|
1775
|
-
--rt-nav-panel-group-content-gap: var(--rt-space-2);
|
|
1776
|
-
/* Маркер непросмотренного. Точка стоит в потоке следом за подписью — и в ряду
|
|
1777
|
-
разделов, и в панели, и на узком экране: место ей даёт общий зазор
|
|
1778
|
-
содержимого пункта. */
|
|
1779
|
-
--rt-nav-caret-size: var(--rt-size-3);
|
|
1780
|
-
--rt-nav-marker-size: var(--rt-size-1);
|
|
1781
|
-
--rt-nav-marker-color: var(--rt-color-state-danger);
|
|
1832
|
+
/* Группа переключателей видом «чипы»: отдельные пункты с обводкой. Цвета — здесь, на корне:
|
|
1833
|
+
они не зависят от размера группы; размеры объявлены на самом хосте группы. Выбранный пункт
|
|
1834
|
+
в своём виде кита — мягкая марка, обводка у него та же, что у невыбранного. */
|
|
1835
|
+
--rt-toggle-chip-color-border: var(--rt-color-border-default);
|
|
1836
|
+
--rt-toggle-chip-color-text: var(--rt-color-text-muted);
|
|
1837
|
+
--rt-toggle-chip-color-bg-selected: var(--rt-color-action-primary-subtle);
|
|
1782
1838
|
/* Form field (rt-field) — обёртка анатомии поля: label / help / hint / error /
|
|
1783
1839
|
required-маркер / read-only значение. Визуал label+hint в стиле Tailwind
|
|
1784
1840
|
form (мелкий medium label, muted hint). Компоненты потребляют только эти
|
|
@@ -1791,8 +1847,11 @@ html.rt-theme-dark {
|
|
|
1791
1847
|
--rt-field-hint-font-size: var(--rt-text-xs);
|
|
1792
1848
|
--rt-field-hint-color: var(--rt-color-text-muted);
|
|
1793
1849
|
--rt-field-error-font-size: var(--rt-text-xs);
|
|
1850
|
+
--rt-field-messages-line-height: normal;
|
|
1851
|
+
--rt-field-messages-padding-top: 0px;
|
|
1794
1852
|
--rt-field-error-color: var(--rt-color-state-danger);
|
|
1795
1853
|
--rt-field-required-color: var(--rt-color-state-danger);
|
|
1854
|
+
--rt-field-required-gap: var(--rt-space-1);
|
|
1796
1855
|
--rt-field-value-font-size: var(--rt-text-sm);
|
|
1797
1856
|
--rt-field-value-color: var(--rt-color-text-primary);
|
|
1798
1857
|
--rt-field-value-empty-color: var(--rt-color-text-muted);
|
|
@@ -1871,6 +1930,105 @@ html.rt-theme-dark {
|
|
|
1871
1930
|
--rt-list-filter-line-height: var(--rt-leading-none);
|
|
1872
1931
|
--rt-list-placeholder-min-height: var(--rt-size-60);
|
|
1873
1932
|
--rt-list-placeholder-grow: 1;
|
|
1933
|
+
/* Навигация (rt-page-header). Шапка — отдельная плашка; отступ от краёв
|
|
1934
|
+
страницы задаёт тот, кто её ставит. */
|
|
1935
|
+
--rt-nav-header-padding: var(--rt-space-2) var(--rt-space-4);
|
|
1936
|
+
--rt-nav-header-color-bg: var(--rt-neutral-50);
|
|
1937
|
+
/* Первый уровень. Пункт ряда несёт плашку цвета самой шапки: на общем фоне её
|
|
1938
|
+
не видно, и белым проступает только активный раздел. Наведение красит
|
|
1939
|
+
подпись, а не фон — иначе оно спорит с этой подсветкой. */
|
|
1940
|
+
--rt-nav-item-height: var(--rt-size-6);
|
|
1941
|
+
--rt-nav-item-gap: var(--rt-space-1);
|
|
1942
|
+
--rt-nav-item-padding: var(--rt-space-2) var(--rt-space-2);
|
|
1943
|
+
--rt-nav-item-content-gap: var(--rt-space-2);
|
|
1944
|
+
--rt-nav-item-font-size: var(--rt-text-sm);
|
|
1945
|
+
--rt-nav-item-font-weight: var(--rt-font-weight-semibold);
|
|
1946
|
+
--rt-nav-item-line-height: var(--rt-leading-none);
|
|
1947
|
+
--rt-nav-item-color: var(--rt-color-text-primary);
|
|
1948
|
+
--rt-nav-item-color-hover: var(--rt-color-action-primary);
|
|
1949
|
+
--rt-nav-item-color-pressed: var(--rt-color-action-primary-hover);
|
|
1950
|
+
--rt-nav-item-color-bg: var(--rt-neutral-50);
|
|
1951
|
+
--rt-nav-item-color-border: var(--rt-neutral-50);
|
|
1952
|
+
--rt-nav-item-color-bg-active: var(--rt-color-bg-surface);
|
|
1953
|
+
--rt-nav-item-color-caret: var(--rt-neutral-200);
|
|
1954
|
+
/* Фокус обведён пунктиром: сплошная рамка на плашке пункта неотличима от его
|
|
1955
|
+
же границы. */
|
|
1956
|
+
--rt-nav-color-focus: var(--rt-color-action-primary);
|
|
1957
|
+
/* Недоступный пункт светлее доступного, а не другого оттенка: общий
|
|
1958
|
+
`text-disabled` уходит в сине-стальной и рядом с серой подписью читается
|
|
1959
|
+
как второй цвет, а не как выключенное состояние. */
|
|
1960
|
+
--rt-nav-color-disabled: var(--rt-neutral-300);
|
|
1961
|
+
/* Попап профиля. Подложку берёт у панели навигации, своего здесь — габариты
|
|
1962
|
+
блока пользователя, тень и набор строк: строк четыре, и они читаются как
|
|
1963
|
+
список действий, а не как выпадающее меню. */
|
|
1964
|
+
--rt-profile-menu-min-width: var(--rt-size-60);
|
|
1965
|
+
--rt-profile-menu-padding: var(--rt-space-5);
|
|
1966
|
+
--rt-profile-menu-shadow: var(--rt-shadow-profile-menu);
|
|
1967
|
+
--rt-profile-menu-border-width: var(--rt-border-width-thin);
|
|
1968
|
+
--rt-profile-menu-radius: var(--rt-radius-md);
|
|
1969
|
+
--rt-profile-avatar-size: var(--rt-size-10);
|
|
1970
|
+
--rt-profile-avatar-font-size: var(--rt-text-2xl);
|
|
1971
|
+
--rt-profile-avatar-border-width: var(--rt-border-width-medium);
|
|
1972
|
+
--rt-profile-avatar-radius: var(--rt-radius-full);
|
|
1973
|
+
--rt-profile-item-padding-y: var(--rt-space-4);
|
|
1974
|
+
--rt-profile-item-content-gap: var(--rt-space-2);
|
|
1975
|
+
--rt-profile-item-font-size: var(--rt-text-md);
|
|
1976
|
+
--rt-profile-item-font-weight: var(--rt-font-weight-medium);
|
|
1977
|
+
--rt-profile-item-radius: var(--rt-radius-md);
|
|
1978
|
+
/* Строки выступают за содержимое панели на половину её отступа: так
|
|
1979
|
+
подсветка на наведении не упирается в рамку, а иконка остаётся на одной
|
|
1980
|
+
вертикали с содержимым. Это же число — горизонтальный отступ строки. */
|
|
1981
|
+
--rt-profile-row-inset: var(--rt-space-2);
|
|
1982
|
+
--rt-profile-theme-icon-padding: var(--rt-space-2);
|
|
1983
|
+
--rt-profile-theme-icon-radius: var(--rt-radius-full);
|
|
1984
|
+
/* Габариты панели второго уровня: ширина считается числом колонок, поэтому
|
|
1985
|
+
колонка, промежуток и внутренний отступ — токены, из которых панель
|
|
1986
|
+
складывает свою ширину. По вертикали отступ крупнее: у первой группы над
|
|
1987
|
+
заголовком нет ничего, и панель иначе начинается впритык. */
|
|
1988
|
+
--rt-nav-panel-column-width: var(--rt-size-60);
|
|
1989
|
+
--rt-nav-panel-column-gap: var(--rt-space-5);
|
|
1990
|
+
--rt-nav-panel-padding: var(--rt-space-4);
|
|
1991
|
+
--rt-nav-panel-padding-y: var(--rt-space-md);
|
|
1992
|
+
--rt-nav-panel-group-gap: var(--rt-space-8);
|
|
1993
|
+
--rt-nav-panel-item-gap: var(--rt-space-0-5);
|
|
1994
|
+
--rt-nav-panel-item-height: var(--rt-size-6);
|
|
1995
|
+
--rt-nav-panel-item-padding: var(--rt-space-1) var(--rt-space-2);
|
|
1996
|
+
--rt-nav-panel-columns: 1;
|
|
1997
|
+
--rt-nav-panel-color-bg: var(--rt-color-bg-surface);
|
|
1998
|
+
--rt-nav-panel-color-border: var(--rt-neutral-200);
|
|
1999
|
+
--rt-nav-panel-shadow: var(--rt-shadow-nav-panel);
|
|
2000
|
+
/* Второй уровень набран легче первого: ряд разделов держит вес, а полтора
|
|
2001
|
+
десятка пунктов под ним читаются построчно. */
|
|
2002
|
+
--rt-nav-panel-item-font-size: var(--rt-text-sm);
|
|
2003
|
+
--rt-nav-panel-item-font-weight: var(--rt-font-weight-medium);
|
|
2004
|
+
--rt-nav-panel-item-content-gap: var(--rt-space-1);
|
|
2005
|
+
--rt-nav-panel-item-color: var(--rt-neutral-600);
|
|
2006
|
+
--rt-nav-panel-item-color-bg-hover: var(--rt-neutral-50);
|
|
2007
|
+
--rt-nav-panel-item-color-active: var(--rt-color-text-inverse);
|
|
2008
|
+
--rt-nav-panel-item-color-bg-active: var(--rt-color-action-primary);
|
|
2009
|
+
--rt-nav-panel-group-font-size: var(--rt-text-xs);
|
|
2010
|
+
--rt-nav-panel-group-font-weight: var(--rt-font-weight-medium);
|
|
2011
|
+
/* Заголовок группы светлее пункта, и оба берут порог контраста на белой панели.
|
|
2012
|
+
Отношения обеих пар считает проверка тёмной темы; таблица замера — на странице
|
|
2013
|
+
«Colors» витрины. */
|
|
2014
|
+
--rt-nav-panel-group-color: var(--rt-neutral-600);
|
|
2015
|
+
--rt-nav-panel-group-content-gap: var(--rt-space-2);
|
|
2016
|
+
/* Маркер непросмотренного. Точка стоит в потоке следом за подписью — и в ряду
|
|
2017
|
+
разделов, и в панели, и на узком экране: место ей даёт общий зазор
|
|
2018
|
+
содержимого пункта. */
|
|
2019
|
+
--rt-nav-caret-size: var(--rt-size-3);
|
|
2020
|
+
--rt-nav-marker-size: var(--rt-size-1);
|
|
2021
|
+
--rt-nav-marker-color: var(--rt-color-state-danger);
|
|
2022
|
+
/* Вкладки (rt-tabs). Полоса выбранной вкладки переезжает на новую, а панель
|
|
2023
|
+
меняется сдвигом по направлению перехода. Сдвиг панели в своём виде кита выключен
|
|
2024
|
+
нулевой длительностью: содержимое вкладки сменяется на месте, как раньше. */
|
|
2025
|
+
--rt-tabs-indicator-duration: var(--rt-duration-base);
|
|
2026
|
+
--rt-tabs-indicator-easing: ease-out;
|
|
2027
|
+
--rt-tabs-panel-duration: 0ms;
|
|
2028
|
+
--rt-tabs-panel-easing: ease-out;
|
|
2029
|
+
/* Прокрутка полосы вкладок стрелками и к выбранной вкладке. */
|
|
2030
|
+
--rt-tabs-scroll-duration: var(--rt-duration-base);
|
|
2031
|
+
--rt-tabs-scroll-easing: ease-out;
|
|
1874
2032
|
}
|
|
1875
2033
|
@media (pointer: coarse) {
|
|
1876
2034
|
[data-theme=light]:not(:root) {
|
|
@@ -2110,6 +2268,11 @@ html.rt-theme-dark {
|
|
|
2110
2268
|
--rt-input-icon-color: var(--rt-neutral-600);
|
|
2111
2269
|
--rt-input-icon-size: var(--rt-size-4);
|
|
2112
2270
|
--rt-input-gap: var(--rt-space-sm);
|
|
2271
|
+
--rt-input-caret-color: auto;
|
|
2272
|
+
--rt-input-min-width: 0px;
|
|
2273
|
+
--rt-input-fill-edge: var(--rt-input-border-width);
|
|
2274
|
+
--rt-input-fill-focus-shadow: var(--rt-input-focus-shadow);
|
|
2275
|
+
--rt-input-fill-focus-shadow-error: var(--rt-input-focus-shadow-error);
|
|
2113
2276
|
/* Sizes (single-line height scale) */
|
|
2114
2277
|
--rt-input-height-sm: var(--rt-control-height-sm);
|
|
2115
2278
|
--rt-input-height-md: var(--rt-control-height-md);
|
|
@@ -2151,6 +2314,19 @@ html.rt-theme-dark {
|
|
|
2151
2314
|
--rt-input-line-height: var(--rt-leading-snug);
|
|
2152
2315
|
/* State / motion */
|
|
2153
2316
|
--rt-input-disabled-opacity: var(--rt-opacity-disabled);
|
|
2317
|
+
--rt-input-disabled-field-opacity: var(--rt-input-disabled-opacity);
|
|
2318
|
+
--rt-input-color-border-disabled: var(--rt-input-color-border);
|
|
2319
|
+
--rt-input-color-text-disabled: var(--rt-input-color-text);
|
|
2320
|
+
--rt-input-color-placeholder-disabled: var(--rt-input-color-text-placeholder);
|
|
2321
|
+
--rt-input-clear-size: var(--rt-control-height-sm);
|
|
2322
|
+
--rt-input-clear-icon-size: var(--rt-size-4);
|
|
2323
|
+
--rt-input-clear-color: var(--rt-neutral-600);
|
|
2324
|
+
--rt-input-clear-offset-end: 0px;
|
|
2325
|
+
--rt-input-clear-bg: transparent;
|
|
2326
|
+
--rt-input-clear-bg-hover: var(--rt-icon-button-color-bg-hover);
|
|
2327
|
+
--rt-input-clear-radius: var(--rt-radius-md);
|
|
2328
|
+
--rt-input-clear-offset-start: 0px;
|
|
2329
|
+
--rt-input-fill-color-bg-disabled: var(--rt-color-bg-surface-subtle-2);
|
|
2154
2330
|
--rt-input-focus-shadow: var(--rt-shadow-focus-ring);
|
|
2155
2331
|
--rt-input-focus-shadow-error: var(--rt-shadow-focus-ring-danger);
|
|
2156
2332
|
--rt-input-transition: border-color var(--rt-duration-fast) ease, box-shadow var(--rt-duration-fast) ease;
|
|
@@ -2190,95 +2366,12 @@ html.rt-theme-dark {
|
|
|
2190
2366
|
/* Рамка off-трека — inset-тенью, а не border: у border своя коробка, и
|
|
2191
2367
|
отступы бегунка с иконками пришлось бы пересчитывать на её толщину. */
|
|
2192
2368
|
--rt-toggle-shadow-border: inset 0 0 0 var(--rt-border-width-thin) var(--rt-toggle-color-border);
|
|
2193
|
-
/*
|
|
2194
|
-
|
|
2195
|
-
|
|
2196
|
-
--rt-
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
подпись, а не фон — иначе оно спорит с этой подсветкой. */
|
|
2200
|
-
--rt-nav-item-height: var(--rt-size-6);
|
|
2201
|
-
--rt-nav-item-gap: var(--rt-space-1);
|
|
2202
|
-
--rt-nav-item-padding: var(--rt-space-2) var(--rt-space-2);
|
|
2203
|
-
--rt-nav-item-content-gap: var(--rt-space-2);
|
|
2204
|
-
--rt-nav-item-font-size: var(--rt-text-sm);
|
|
2205
|
-
--rt-nav-item-font-weight: var(--rt-font-weight-semibold);
|
|
2206
|
-
--rt-nav-item-line-height: var(--rt-leading-none);
|
|
2207
|
-
--rt-nav-item-color: var(--rt-color-text-primary);
|
|
2208
|
-
--rt-nav-item-color-hover: var(--rt-color-action-primary);
|
|
2209
|
-
--rt-nav-item-color-pressed: var(--rt-color-action-primary-hover);
|
|
2210
|
-
--rt-nav-item-color-bg: var(--rt-neutral-50);
|
|
2211
|
-
--rt-nav-item-color-border: var(--rt-neutral-50);
|
|
2212
|
-
--rt-nav-item-color-bg-active: var(--rt-color-bg-surface);
|
|
2213
|
-
--rt-nav-item-color-caret: var(--rt-neutral-200);
|
|
2214
|
-
/* Фокус обведён пунктиром: сплошная рамка на плашке пункта неотличима от его
|
|
2215
|
-
же границы. */
|
|
2216
|
-
--rt-nav-color-focus: var(--rt-color-action-primary);
|
|
2217
|
-
/* Недоступный пункт светлее доступного, а не другого оттенка: общий
|
|
2218
|
-
`text-disabled` уходит в сине-стальной и рядом с серой подписью читается
|
|
2219
|
-
как второй цвет, а не как выключенное состояние. */
|
|
2220
|
-
--rt-nav-color-disabled: var(--rt-neutral-300);
|
|
2221
|
-
/* Попап профиля. Подложку берёт у панели навигации, своего здесь — габариты
|
|
2222
|
-
блока пользователя, тень и набор строк: строк четыре, и они читаются как
|
|
2223
|
-
список действий, а не как выпадающее меню. */
|
|
2224
|
-
--rt-profile-menu-min-width: var(--rt-size-60);
|
|
2225
|
-
--rt-profile-menu-padding: var(--rt-space-5);
|
|
2226
|
-
--rt-profile-menu-shadow: var(--rt-shadow-profile-menu);
|
|
2227
|
-
--rt-profile-menu-border-width: var(--rt-border-width-thin);
|
|
2228
|
-
--rt-profile-menu-radius: var(--rt-radius-md);
|
|
2229
|
-
--rt-profile-avatar-size: var(--rt-size-10);
|
|
2230
|
-
--rt-profile-avatar-font-size: var(--rt-text-2xl);
|
|
2231
|
-
--rt-profile-avatar-border-width: var(--rt-border-width-medium);
|
|
2232
|
-
--rt-profile-avatar-radius: var(--rt-radius-full);
|
|
2233
|
-
--rt-profile-item-padding-y: var(--rt-space-4);
|
|
2234
|
-
--rt-profile-item-content-gap: var(--rt-space-2);
|
|
2235
|
-
--rt-profile-item-font-size: var(--rt-text-md);
|
|
2236
|
-
--rt-profile-item-font-weight: var(--rt-font-weight-medium);
|
|
2237
|
-
--rt-profile-item-radius: var(--rt-radius-md);
|
|
2238
|
-
/* Строки выступают за содержимое панели на половину её отступа: так
|
|
2239
|
-
подсветка на наведении не упирается в рамку, а иконка остаётся на одной
|
|
2240
|
-
вертикали с содержимым. Это же число — горизонтальный отступ строки. */
|
|
2241
|
-
--rt-profile-row-inset: var(--rt-space-2);
|
|
2242
|
-
--rt-profile-theme-icon-padding: var(--rt-space-2);
|
|
2243
|
-
--rt-profile-theme-icon-radius: var(--rt-radius-full);
|
|
2244
|
-
/* Габариты панели второго уровня: ширина считается числом колонок, поэтому
|
|
2245
|
-
колонка, промежуток и внутренний отступ — токены, из которых панель
|
|
2246
|
-
складывает свою ширину. По вертикали отступ крупнее: у первой группы над
|
|
2247
|
-
заголовком нет ничего, и панель иначе начинается впритык. */
|
|
2248
|
-
--rt-nav-panel-column-width: var(--rt-size-60);
|
|
2249
|
-
--rt-nav-panel-column-gap: var(--rt-space-5);
|
|
2250
|
-
--rt-nav-panel-padding: var(--rt-space-4);
|
|
2251
|
-
--rt-nav-panel-padding-y: var(--rt-space-md);
|
|
2252
|
-
--rt-nav-panel-group-gap: var(--rt-space-8);
|
|
2253
|
-
--rt-nav-panel-item-gap: var(--rt-space-0-5);
|
|
2254
|
-
--rt-nav-panel-item-height: var(--rt-size-6);
|
|
2255
|
-
--rt-nav-panel-item-padding: var(--rt-space-1) var(--rt-space-2);
|
|
2256
|
-
--rt-nav-panel-columns: 1;
|
|
2257
|
-
--rt-nav-panel-color-bg: var(--rt-color-bg-surface);
|
|
2258
|
-
--rt-nav-panel-color-border: var(--rt-neutral-200);
|
|
2259
|
-
--rt-nav-panel-shadow: var(--rt-shadow-nav-panel);
|
|
2260
|
-
/* Второй уровень набран легче первого: ряд разделов держит вес, а полтора
|
|
2261
|
-
десятка пунктов под ним читаются построчно. */
|
|
2262
|
-
--rt-nav-panel-item-font-size: var(--rt-text-sm);
|
|
2263
|
-
--rt-nav-panel-item-font-weight: var(--rt-font-weight-medium);
|
|
2264
|
-
--rt-nav-panel-item-content-gap: var(--rt-space-1);
|
|
2265
|
-
--rt-nav-panel-item-color: var(--rt-neutral-600);
|
|
2266
|
-
--rt-nav-panel-item-color-bg-hover: var(--rt-neutral-50);
|
|
2267
|
-
--rt-nav-panel-item-color-active: var(--rt-color-text-inverse);
|
|
2268
|
-
--rt-nav-panel-item-color-bg-active: var(--rt-color-action-primary);
|
|
2269
|
-
--rt-nav-panel-group-font-size: var(--rt-text-xs);
|
|
2270
|
-
--rt-nav-panel-group-font-weight: var(--rt-font-weight-medium);
|
|
2271
|
-
/* Заголовок группы светлее пункта, и оба берут порог контраста на белой панели.
|
|
2272
|
-
Отношения обеих пар считает проверка тёмной темы; таблица замера — на странице
|
|
2273
|
-
«Colors» витрины. */
|
|
2274
|
-
--rt-nav-panel-group-color: var(--rt-neutral-600);
|
|
2275
|
-
--rt-nav-panel-group-content-gap: var(--rt-space-2);
|
|
2276
|
-
/* Маркер непросмотренного. Точка стоит в потоке следом за подписью — и в ряду
|
|
2277
|
-
разделов, и в панели, и на узком экране: место ей даёт общий зазор
|
|
2278
|
-
содержимого пункта. */
|
|
2279
|
-
--rt-nav-caret-size: var(--rt-size-3);
|
|
2280
|
-
--rt-nav-marker-size: var(--rt-size-1);
|
|
2281
|
-
--rt-nav-marker-color: var(--rt-color-state-danger);
|
|
2369
|
+
/* Группа переключателей видом «чипы»: отдельные пункты с обводкой. Цвета — здесь, на корне:
|
|
2370
|
+
они не зависят от размера группы; размеры объявлены на самом хосте группы. Выбранный пункт
|
|
2371
|
+
в своём виде кита — мягкая марка, обводка у него та же, что у невыбранного. */
|
|
2372
|
+
--rt-toggle-chip-color-border: var(--rt-color-border-default);
|
|
2373
|
+
--rt-toggle-chip-color-text: var(--rt-color-text-muted);
|
|
2374
|
+
--rt-toggle-chip-color-bg-selected: var(--rt-color-action-primary-subtle);
|
|
2282
2375
|
/* Form field (rt-field) — обёртка анатомии поля: label / help / hint / error /
|
|
2283
2376
|
required-маркер / read-only значение. Визуал label+hint в стиле Tailwind
|
|
2284
2377
|
form (мелкий medium label, muted hint). Компоненты потребляют только эти
|
|
@@ -2291,8 +2384,11 @@ html.rt-theme-dark {
|
|
|
2291
2384
|
--rt-field-hint-font-size: var(--rt-text-xs);
|
|
2292
2385
|
--rt-field-hint-color: var(--rt-color-text-muted);
|
|
2293
2386
|
--rt-field-error-font-size: var(--rt-text-xs);
|
|
2387
|
+
--rt-field-messages-line-height: normal;
|
|
2388
|
+
--rt-field-messages-padding-top: 0px;
|
|
2294
2389
|
--rt-field-error-color: var(--rt-color-state-danger);
|
|
2295
2390
|
--rt-field-required-color: var(--rt-color-state-danger);
|
|
2391
|
+
--rt-field-required-gap: var(--rt-space-1);
|
|
2296
2392
|
--rt-field-value-font-size: var(--rt-text-sm);
|
|
2297
2393
|
--rt-field-value-color: var(--rt-color-text-primary);
|
|
2298
2394
|
--rt-field-value-empty-color: var(--rt-color-text-muted);
|
|
@@ -2371,6 +2467,105 @@ html.rt-theme-dark {
|
|
|
2371
2467
|
--rt-list-filter-line-height: var(--rt-leading-none);
|
|
2372
2468
|
--rt-list-placeholder-min-height: var(--rt-size-60);
|
|
2373
2469
|
--rt-list-placeholder-grow: 1;
|
|
2470
|
+
/* Навигация (rt-page-header). Шапка — отдельная плашка; отступ от краёв
|
|
2471
|
+
страницы задаёт тот, кто её ставит. */
|
|
2472
|
+
--rt-nav-header-padding: var(--rt-space-2) var(--rt-space-4);
|
|
2473
|
+
--rt-nav-header-color-bg: var(--rt-neutral-50);
|
|
2474
|
+
/* Первый уровень. Пункт ряда несёт плашку цвета самой шапки: на общем фоне её
|
|
2475
|
+
не видно, и белым проступает только активный раздел. Наведение красит
|
|
2476
|
+
подпись, а не фон — иначе оно спорит с этой подсветкой. */
|
|
2477
|
+
--rt-nav-item-height: var(--rt-size-6);
|
|
2478
|
+
--rt-nav-item-gap: var(--rt-space-1);
|
|
2479
|
+
--rt-nav-item-padding: var(--rt-space-2) var(--rt-space-2);
|
|
2480
|
+
--rt-nav-item-content-gap: var(--rt-space-2);
|
|
2481
|
+
--rt-nav-item-font-size: var(--rt-text-sm);
|
|
2482
|
+
--rt-nav-item-font-weight: var(--rt-font-weight-semibold);
|
|
2483
|
+
--rt-nav-item-line-height: var(--rt-leading-none);
|
|
2484
|
+
--rt-nav-item-color: var(--rt-color-text-primary);
|
|
2485
|
+
--rt-nav-item-color-hover: var(--rt-color-action-primary);
|
|
2486
|
+
--rt-nav-item-color-pressed: var(--rt-color-action-primary-hover);
|
|
2487
|
+
--rt-nav-item-color-bg: var(--rt-neutral-50);
|
|
2488
|
+
--rt-nav-item-color-border: var(--rt-neutral-50);
|
|
2489
|
+
--rt-nav-item-color-bg-active: var(--rt-color-bg-surface);
|
|
2490
|
+
--rt-nav-item-color-caret: var(--rt-neutral-200);
|
|
2491
|
+
/* Фокус обведён пунктиром: сплошная рамка на плашке пункта неотличима от его
|
|
2492
|
+
же границы. */
|
|
2493
|
+
--rt-nav-color-focus: var(--rt-color-action-primary);
|
|
2494
|
+
/* Недоступный пункт светлее доступного, а не другого оттенка: общий
|
|
2495
|
+
`text-disabled` уходит в сине-стальной и рядом с серой подписью читается
|
|
2496
|
+
как второй цвет, а не как выключенное состояние. */
|
|
2497
|
+
--rt-nav-color-disabled: var(--rt-neutral-300);
|
|
2498
|
+
/* Попап профиля. Подложку берёт у панели навигации, своего здесь — габариты
|
|
2499
|
+
блока пользователя, тень и набор строк: строк четыре, и они читаются как
|
|
2500
|
+
список действий, а не как выпадающее меню. */
|
|
2501
|
+
--rt-profile-menu-min-width: var(--rt-size-60);
|
|
2502
|
+
--rt-profile-menu-padding: var(--rt-space-5);
|
|
2503
|
+
--rt-profile-menu-shadow: var(--rt-shadow-profile-menu);
|
|
2504
|
+
--rt-profile-menu-border-width: var(--rt-border-width-thin);
|
|
2505
|
+
--rt-profile-menu-radius: var(--rt-radius-md);
|
|
2506
|
+
--rt-profile-avatar-size: var(--rt-size-10);
|
|
2507
|
+
--rt-profile-avatar-font-size: var(--rt-text-2xl);
|
|
2508
|
+
--rt-profile-avatar-border-width: var(--rt-border-width-medium);
|
|
2509
|
+
--rt-profile-avatar-radius: var(--rt-radius-full);
|
|
2510
|
+
--rt-profile-item-padding-y: var(--rt-space-4);
|
|
2511
|
+
--rt-profile-item-content-gap: var(--rt-space-2);
|
|
2512
|
+
--rt-profile-item-font-size: var(--rt-text-md);
|
|
2513
|
+
--rt-profile-item-font-weight: var(--rt-font-weight-medium);
|
|
2514
|
+
--rt-profile-item-radius: var(--rt-radius-md);
|
|
2515
|
+
/* Строки выступают за содержимое панели на половину её отступа: так
|
|
2516
|
+
подсветка на наведении не упирается в рамку, а иконка остаётся на одной
|
|
2517
|
+
вертикали с содержимым. Это же число — горизонтальный отступ строки. */
|
|
2518
|
+
--rt-profile-row-inset: var(--rt-space-2);
|
|
2519
|
+
--rt-profile-theme-icon-padding: var(--rt-space-2);
|
|
2520
|
+
--rt-profile-theme-icon-radius: var(--rt-radius-full);
|
|
2521
|
+
/* Габариты панели второго уровня: ширина считается числом колонок, поэтому
|
|
2522
|
+
колонка, промежуток и внутренний отступ — токены, из которых панель
|
|
2523
|
+
складывает свою ширину. По вертикали отступ крупнее: у первой группы над
|
|
2524
|
+
заголовком нет ничего, и панель иначе начинается впритык. */
|
|
2525
|
+
--rt-nav-panel-column-width: var(--rt-size-60);
|
|
2526
|
+
--rt-nav-panel-column-gap: var(--rt-space-5);
|
|
2527
|
+
--rt-nav-panel-padding: var(--rt-space-4);
|
|
2528
|
+
--rt-nav-panel-padding-y: var(--rt-space-md);
|
|
2529
|
+
--rt-nav-panel-group-gap: var(--rt-space-8);
|
|
2530
|
+
--rt-nav-panel-item-gap: var(--rt-space-0-5);
|
|
2531
|
+
--rt-nav-panel-item-height: var(--rt-size-6);
|
|
2532
|
+
--rt-nav-panel-item-padding: var(--rt-space-1) var(--rt-space-2);
|
|
2533
|
+
--rt-nav-panel-columns: 1;
|
|
2534
|
+
--rt-nav-panel-color-bg: var(--rt-color-bg-surface);
|
|
2535
|
+
--rt-nav-panel-color-border: var(--rt-neutral-200);
|
|
2536
|
+
--rt-nav-panel-shadow: var(--rt-shadow-nav-panel);
|
|
2537
|
+
/* Второй уровень набран легче первого: ряд разделов держит вес, а полтора
|
|
2538
|
+
десятка пунктов под ним читаются построчно. */
|
|
2539
|
+
--rt-nav-panel-item-font-size: var(--rt-text-sm);
|
|
2540
|
+
--rt-nav-panel-item-font-weight: var(--rt-font-weight-medium);
|
|
2541
|
+
--rt-nav-panel-item-content-gap: var(--rt-space-1);
|
|
2542
|
+
--rt-nav-panel-item-color: var(--rt-neutral-600);
|
|
2543
|
+
--rt-nav-panel-item-color-bg-hover: var(--rt-neutral-50);
|
|
2544
|
+
--rt-nav-panel-item-color-active: var(--rt-color-text-inverse);
|
|
2545
|
+
--rt-nav-panel-item-color-bg-active: var(--rt-color-action-primary);
|
|
2546
|
+
--rt-nav-panel-group-font-size: var(--rt-text-xs);
|
|
2547
|
+
--rt-nav-panel-group-font-weight: var(--rt-font-weight-medium);
|
|
2548
|
+
/* Заголовок группы светлее пункта, и оба берут порог контраста на белой панели.
|
|
2549
|
+
Отношения обеих пар считает проверка тёмной темы; таблица замера — на странице
|
|
2550
|
+
«Colors» витрины. */
|
|
2551
|
+
--rt-nav-panel-group-color: var(--rt-neutral-600);
|
|
2552
|
+
--rt-nav-panel-group-content-gap: var(--rt-space-2);
|
|
2553
|
+
/* Маркер непросмотренного. Точка стоит в потоке следом за подписью — и в ряду
|
|
2554
|
+
разделов, и в панели, и на узком экране: место ей даёт общий зазор
|
|
2555
|
+
содержимого пункта. */
|
|
2556
|
+
--rt-nav-caret-size: var(--rt-size-3);
|
|
2557
|
+
--rt-nav-marker-size: var(--rt-size-1);
|
|
2558
|
+
--rt-nav-marker-color: var(--rt-color-state-danger);
|
|
2559
|
+
/* Вкладки (rt-tabs). Полоса выбранной вкладки переезжает на новую, а панель
|
|
2560
|
+
меняется сдвигом по направлению перехода. Сдвиг панели в своём виде кита выключен
|
|
2561
|
+
нулевой длительностью: содержимое вкладки сменяется на месте, как раньше. */
|
|
2562
|
+
--rt-tabs-indicator-duration: var(--rt-duration-base);
|
|
2563
|
+
--rt-tabs-indicator-easing: ease-out;
|
|
2564
|
+
--rt-tabs-panel-duration: 0ms;
|
|
2565
|
+
--rt-tabs-panel-easing: ease-out;
|
|
2566
|
+
/* Прокрутка полосы вкладок стрелками и к выбранной вкладке. */
|
|
2567
|
+
--rt-tabs-scroll-duration: var(--rt-duration-base);
|
|
2568
|
+
--rt-tabs-scroll-easing: ease-out;
|
|
2374
2569
|
/* The Material colours of the page are resolved dark under the kit's dark theme. */
|
|
2375
2570
|
color-scheme: dark;
|
|
2376
2571
|
/* Background — тёплый графит */
|
|
@@ -2421,6 +2616,14 @@ html.rt-theme-dark {
|
|
|
2421
2616
|
--rt-pagination-field-color-bg: var(--rt-input-color-bg);
|
|
2422
2617
|
--rt-pagination-field-color-text: var(--rt-input-color-text);
|
|
2423
2618
|
--rt-input-icon-color: var(--rt-neutral-600);
|
|
2619
|
+
--rt-input-clear-color: var(--rt-neutral-600);
|
|
2620
|
+
--rt-input-clear-bg: transparent;
|
|
2621
|
+
--rt-input-clear-bg-hover: var(--rt-icon-button-color-bg-hover);
|
|
2622
|
+
--rt-toggle-chip-color-border: var(--rt-color-border-default);
|
|
2623
|
+
--rt-toggle-chip-color-text: var(--rt-color-text-muted);
|
|
2624
|
+
--rt-toggle-chip-color-bg-selected: var(--rt-color-action-primary-subtle);
|
|
2625
|
+
--rt-input-fill-color-bg-disabled: var(--rt-color-bg-surface-subtle-2);
|
|
2626
|
+
--rt-input-color-text-placeholder: var(--rt-color-text-muted);
|
|
2424
2627
|
/* Stepper — в dark рельса уходит от яркого синего к приглушённому серо-синему
|
|
2425
2628
|
(текущий шаг остаётся янтарным из light-семантики). */
|
|
2426
2629
|
--rt-color-stepper-track: var(--rt-navy-600);
|
|
@@ -2751,6 +2954,11 @@ html.rt-theme-dark {
|
|
|
2751
2954
|
--rt-input-icon-color: var(--rt-neutral-600);
|
|
2752
2955
|
--rt-input-icon-size: var(--rt-size-4);
|
|
2753
2956
|
--rt-input-gap: var(--rt-space-sm);
|
|
2957
|
+
--rt-input-caret-color: auto;
|
|
2958
|
+
--rt-input-min-width: 0px;
|
|
2959
|
+
--rt-input-fill-edge: var(--rt-input-border-width);
|
|
2960
|
+
--rt-input-fill-focus-shadow: var(--rt-input-focus-shadow);
|
|
2961
|
+
--rt-input-fill-focus-shadow-error: var(--rt-input-focus-shadow-error);
|
|
2754
2962
|
/* Sizes (single-line height scale) */
|
|
2755
2963
|
--rt-input-height-sm: var(--rt-control-height-sm);
|
|
2756
2964
|
--rt-input-height-md: var(--rt-control-height-md);
|
|
@@ -2792,6 +3000,19 @@ html.rt-theme-dark {
|
|
|
2792
3000
|
--rt-input-line-height: var(--rt-leading-snug);
|
|
2793
3001
|
/* State / motion */
|
|
2794
3002
|
--rt-input-disabled-opacity: var(--rt-opacity-disabled);
|
|
3003
|
+
--rt-input-disabled-field-opacity: var(--rt-input-disabled-opacity);
|
|
3004
|
+
--rt-input-color-border-disabled: var(--rt-input-color-border);
|
|
3005
|
+
--rt-input-color-text-disabled: var(--rt-input-color-text);
|
|
3006
|
+
--rt-input-color-placeholder-disabled: var(--rt-input-color-text-placeholder);
|
|
3007
|
+
--rt-input-clear-size: var(--rt-control-height-sm);
|
|
3008
|
+
--rt-input-clear-icon-size: var(--rt-size-4);
|
|
3009
|
+
--rt-input-clear-color: var(--rt-neutral-600);
|
|
3010
|
+
--rt-input-clear-offset-end: 0px;
|
|
3011
|
+
--rt-input-clear-bg: transparent;
|
|
3012
|
+
--rt-input-clear-bg-hover: var(--rt-icon-button-color-bg-hover);
|
|
3013
|
+
--rt-input-clear-radius: var(--rt-radius-md);
|
|
3014
|
+
--rt-input-clear-offset-start: 0px;
|
|
3015
|
+
--rt-input-fill-color-bg-disabled: var(--rt-color-bg-surface-subtle-2);
|
|
2795
3016
|
--rt-input-focus-shadow: var(--rt-shadow-focus-ring);
|
|
2796
3017
|
--rt-input-focus-shadow-error: var(--rt-shadow-focus-ring-danger);
|
|
2797
3018
|
--rt-input-transition: border-color var(--rt-duration-fast) ease, box-shadow var(--rt-duration-fast) ease;
|
|
@@ -2820,106 +3041,23 @@ html.rt-theme-dark {
|
|
|
2820
3041
|
--rt-counter-row-label-font-size: var(--rt-text-md);
|
|
2821
3042
|
--rt-counter-row-label-color: var(--rt-color-text-primary);
|
|
2822
3043
|
--rt-counter-row-hint-font-size: var(--rt-text-sm);
|
|
2823
|
-
--rt-counter-row-hint-color: var(--rt-color-text-muted);
|
|
2824
|
-
/* Toggle-switch (rt-toggle-switch) — трек, бегунок и иконки состояния. */
|
|
2825
|
-
--rt-toggle-color-track: var(--rt-color-bg-surface-subtle-2);
|
|
2826
|
-
--rt-toggle-color-track-on: var(--rt-color-action-primary);
|
|
2827
|
-
--rt-toggle-color-border: var(--rt-color-border-strong);
|
|
2828
|
-
--rt-toggle-color-thumb: var(--rt-color-bg-surface);
|
|
2829
|
-
--rt-toggle-color-icon: var(--rt-amber-400); /* rt-theme-shared: янтарь иконки один в обеих темах */
|
|
2830
|
-
--rt-toggle-shadow-thumb: var(--rt-shadow-md);
|
|
2831
|
-
/* Рамка off-трека — inset-тенью, а не border: у border своя коробка, и
|
|
2832
|
-
отступы бегунка с иконками пришлось бы пересчитывать на её толщину. */
|
|
2833
|
-
--rt-toggle-shadow-border: inset 0 0 0 var(--rt-border-width-thin) var(--rt-toggle-color-border);
|
|
2834
|
-
/*
|
|
2835
|
-
|
|
2836
|
-
|
|
2837
|
-
--rt-
|
|
2838
|
-
|
|
2839
|
-
|
|
2840
|
-
подпись, а не фон — иначе оно спорит с этой подсветкой. */
|
|
2841
|
-
--rt-nav-item-height: var(--rt-size-6);
|
|
2842
|
-
--rt-nav-item-gap: var(--rt-space-1);
|
|
2843
|
-
--rt-nav-item-padding: var(--rt-space-2) var(--rt-space-2);
|
|
2844
|
-
--rt-nav-item-content-gap: var(--rt-space-2);
|
|
2845
|
-
--rt-nav-item-font-size: var(--rt-text-sm);
|
|
2846
|
-
--rt-nav-item-font-weight: var(--rt-font-weight-semibold);
|
|
2847
|
-
--rt-nav-item-line-height: var(--rt-leading-none);
|
|
2848
|
-
--rt-nav-item-color: var(--rt-color-text-primary);
|
|
2849
|
-
--rt-nav-item-color-hover: var(--rt-color-action-primary);
|
|
2850
|
-
--rt-nav-item-color-pressed: var(--rt-color-action-primary-hover);
|
|
2851
|
-
--rt-nav-item-color-bg: var(--rt-neutral-50);
|
|
2852
|
-
--rt-nav-item-color-border: var(--rt-neutral-50);
|
|
2853
|
-
--rt-nav-item-color-bg-active: var(--rt-color-bg-surface);
|
|
2854
|
-
--rt-nav-item-color-caret: var(--rt-neutral-200);
|
|
2855
|
-
/* Фокус обведён пунктиром: сплошная рамка на плашке пункта неотличима от его
|
|
2856
|
-
же границы. */
|
|
2857
|
-
--rt-nav-color-focus: var(--rt-color-action-primary);
|
|
2858
|
-
/* Недоступный пункт светлее доступного, а не другого оттенка: общий
|
|
2859
|
-
`text-disabled` уходит в сине-стальной и рядом с серой подписью читается
|
|
2860
|
-
как второй цвет, а не как выключенное состояние. */
|
|
2861
|
-
--rt-nav-color-disabled: var(--rt-neutral-300);
|
|
2862
|
-
/* Попап профиля. Подложку берёт у панели навигации, своего здесь — габариты
|
|
2863
|
-
блока пользователя, тень и набор строк: строк четыре, и они читаются как
|
|
2864
|
-
список действий, а не как выпадающее меню. */
|
|
2865
|
-
--rt-profile-menu-min-width: var(--rt-size-60);
|
|
2866
|
-
--rt-profile-menu-padding: var(--rt-space-5);
|
|
2867
|
-
--rt-profile-menu-shadow: var(--rt-shadow-profile-menu);
|
|
2868
|
-
--rt-profile-menu-border-width: var(--rt-border-width-thin);
|
|
2869
|
-
--rt-profile-menu-radius: var(--rt-radius-md);
|
|
2870
|
-
--rt-profile-avatar-size: var(--rt-size-10);
|
|
2871
|
-
--rt-profile-avatar-font-size: var(--rt-text-2xl);
|
|
2872
|
-
--rt-profile-avatar-border-width: var(--rt-border-width-medium);
|
|
2873
|
-
--rt-profile-avatar-radius: var(--rt-radius-full);
|
|
2874
|
-
--rt-profile-item-padding-y: var(--rt-space-4);
|
|
2875
|
-
--rt-profile-item-content-gap: var(--rt-space-2);
|
|
2876
|
-
--rt-profile-item-font-size: var(--rt-text-md);
|
|
2877
|
-
--rt-profile-item-font-weight: var(--rt-font-weight-medium);
|
|
2878
|
-
--rt-profile-item-radius: var(--rt-radius-md);
|
|
2879
|
-
/* Строки выступают за содержимое панели на половину её отступа: так
|
|
2880
|
-
подсветка на наведении не упирается в рамку, а иконка остаётся на одной
|
|
2881
|
-
вертикали с содержимым. Это же число — горизонтальный отступ строки. */
|
|
2882
|
-
--rt-profile-row-inset: var(--rt-space-2);
|
|
2883
|
-
--rt-profile-theme-icon-padding: var(--rt-space-2);
|
|
2884
|
-
--rt-profile-theme-icon-radius: var(--rt-radius-full);
|
|
2885
|
-
/* Габариты панели второго уровня: ширина считается числом колонок, поэтому
|
|
2886
|
-
колонка, промежуток и внутренний отступ — токены, из которых панель
|
|
2887
|
-
складывает свою ширину. По вертикали отступ крупнее: у первой группы над
|
|
2888
|
-
заголовком нет ничего, и панель иначе начинается впритык. */
|
|
2889
|
-
--rt-nav-panel-column-width: var(--rt-size-60);
|
|
2890
|
-
--rt-nav-panel-column-gap: var(--rt-space-5);
|
|
2891
|
-
--rt-nav-panel-padding: var(--rt-space-4);
|
|
2892
|
-
--rt-nav-panel-padding-y: var(--rt-space-md);
|
|
2893
|
-
--rt-nav-panel-group-gap: var(--rt-space-8);
|
|
2894
|
-
--rt-nav-panel-item-gap: var(--rt-space-0-5);
|
|
2895
|
-
--rt-nav-panel-item-height: var(--rt-size-6);
|
|
2896
|
-
--rt-nav-panel-item-padding: var(--rt-space-1) var(--rt-space-2);
|
|
2897
|
-
--rt-nav-panel-columns: 1;
|
|
2898
|
-
--rt-nav-panel-color-bg: var(--rt-color-bg-surface);
|
|
2899
|
-
--rt-nav-panel-color-border: var(--rt-neutral-200);
|
|
2900
|
-
--rt-nav-panel-shadow: var(--rt-shadow-nav-panel);
|
|
2901
|
-
/* Второй уровень набран легче первого: ряд разделов держит вес, а полтора
|
|
2902
|
-
десятка пунктов под ним читаются построчно. */
|
|
2903
|
-
--rt-nav-panel-item-font-size: var(--rt-text-sm);
|
|
2904
|
-
--rt-nav-panel-item-font-weight: var(--rt-font-weight-medium);
|
|
2905
|
-
--rt-nav-panel-item-content-gap: var(--rt-space-1);
|
|
2906
|
-
--rt-nav-panel-item-color: var(--rt-neutral-600);
|
|
2907
|
-
--rt-nav-panel-item-color-bg-hover: var(--rt-neutral-50);
|
|
2908
|
-
--rt-nav-panel-item-color-active: var(--rt-color-text-inverse);
|
|
2909
|
-
--rt-nav-panel-item-color-bg-active: var(--rt-color-action-primary);
|
|
2910
|
-
--rt-nav-panel-group-font-size: var(--rt-text-xs);
|
|
2911
|
-
--rt-nav-panel-group-font-weight: var(--rt-font-weight-medium);
|
|
2912
|
-
/* Заголовок группы светлее пункта, и оба берут порог контраста на белой панели.
|
|
2913
|
-
Отношения обеих пар считает проверка тёмной темы; таблица замера — на странице
|
|
2914
|
-
«Colors» витрины. */
|
|
2915
|
-
--rt-nav-panel-group-color: var(--rt-neutral-600);
|
|
2916
|
-
--rt-nav-panel-group-content-gap: var(--rt-space-2);
|
|
2917
|
-
/* Маркер непросмотренного. Точка стоит в потоке следом за подписью — и в ряду
|
|
2918
|
-
разделов, и в панели, и на узком экране: место ей даёт общий зазор
|
|
2919
|
-
содержимого пункта. */
|
|
2920
|
-
--rt-nav-caret-size: var(--rt-size-3);
|
|
2921
|
-
--rt-nav-marker-size: var(--rt-size-1);
|
|
2922
|
-
--rt-nav-marker-color: var(--rt-color-state-danger);
|
|
3044
|
+
--rt-counter-row-hint-color: var(--rt-color-text-muted);
|
|
3045
|
+
/* Toggle-switch (rt-toggle-switch) — трек, бегунок и иконки состояния. */
|
|
3046
|
+
--rt-toggle-color-track: var(--rt-color-bg-surface-subtle-2);
|
|
3047
|
+
--rt-toggle-color-track-on: var(--rt-color-action-primary);
|
|
3048
|
+
--rt-toggle-color-border: var(--rt-color-border-strong);
|
|
3049
|
+
--rt-toggle-color-thumb: var(--rt-color-bg-surface);
|
|
3050
|
+
--rt-toggle-color-icon: var(--rt-amber-400); /* rt-theme-shared: янтарь иконки один в обеих темах */
|
|
3051
|
+
--rt-toggle-shadow-thumb: var(--rt-shadow-md);
|
|
3052
|
+
/* Рамка off-трека — inset-тенью, а не border: у border своя коробка, и
|
|
3053
|
+
отступы бегунка с иконками пришлось бы пересчитывать на её толщину. */
|
|
3054
|
+
--rt-toggle-shadow-border: inset 0 0 0 var(--rt-border-width-thin) var(--rt-toggle-color-border);
|
|
3055
|
+
/* Группа переключателей видом «чипы»: отдельные пункты с обводкой. Цвета — здесь, на корне:
|
|
3056
|
+
они не зависят от размера группы; размеры объявлены на самом хосте группы. Выбранный пункт
|
|
3057
|
+
в своём виде кита — мягкая марка, обводка у него та же, что у невыбранного. */
|
|
3058
|
+
--rt-toggle-chip-color-border: var(--rt-color-border-default);
|
|
3059
|
+
--rt-toggle-chip-color-text: var(--rt-color-text-muted);
|
|
3060
|
+
--rt-toggle-chip-color-bg-selected: var(--rt-color-action-primary-subtle);
|
|
2923
3061
|
/* Form field (rt-field) — обёртка анатомии поля: label / help / hint / error /
|
|
2924
3062
|
required-маркер / read-only значение. Визуал label+hint в стиле Tailwind
|
|
2925
3063
|
form (мелкий medium label, muted hint). Компоненты потребляют только эти
|
|
@@ -2932,8 +3070,11 @@ html.rt-theme-dark {
|
|
|
2932
3070
|
--rt-field-hint-font-size: var(--rt-text-xs);
|
|
2933
3071
|
--rt-field-hint-color: var(--rt-color-text-muted);
|
|
2934
3072
|
--rt-field-error-font-size: var(--rt-text-xs);
|
|
3073
|
+
--rt-field-messages-line-height: normal;
|
|
3074
|
+
--rt-field-messages-padding-top: 0px;
|
|
2935
3075
|
--rt-field-error-color: var(--rt-color-state-danger);
|
|
2936
3076
|
--rt-field-required-color: var(--rt-color-state-danger);
|
|
3077
|
+
--rt-field-required-gap: var(--rt-space-1);
|
|
2937
3078
|
--rt-field-value-font-size: var(--rt-text-sm);
|
|
2938
3079
|
--rt-field-value-color: var(--rt-color-text-primary);
|
|
2939
3080
|
--rt-field-value-empty-color: var(--rt-color-text-muted);
|
|
@@ -3012,36 +3153,135 @@ html.rt-theme-dark {
|
|
|
3012
3153
|
--rt-list-filter-line-height: var(--rt-leading-none);
|
|
3013
3154
|
--rt-list-placeholder-min-height: var(--rt-size-60);
|
|
3014
3155
|
--rt-list-placeholder-grow: 1;
|
|
3156
|
+
/* Навигация (rt-page-header). Шапка — отдельная плашка; отступ от краёв
|
|
3157
|
+
страницы задаёт тот, кто её ставит. */
|
|
3158
|
+
--rt-nav-header-padding: var(--rt-space-2) var(--rt-space-4);
|
|
3159
|
+
--rt-nav-header-color-bg: var(--rt-neutral-50);
|
|
3160
|
+
/* Первый уровень. Пункт ряда несёт плашку цвета самой шапки: на общем фоне её
|
|
3161
|
+
не видно, и белым проступает только активный раздел. Наведение красит
|
|
3162
|
+
подпись, а не фон — иначе оно спорит с этой подсветкой. */
|
|
3163
|
+
--rt-nav-item-height: var(--rt-size-6);
|
|
3164
|
+
--rt-nav-item-gap: var(--rt-space-1);
|
|
3165
|
+
--rt-nav-item-padding: var(--rt-space-2) var(--rt-space-2);
|
|
3166
|
+
--rt-nav-item-content-gap: var(--rt-space-2);
|
|
3167
|
+
--rt-nav-item-font-size: var(--rt-text-sm);
|
|
3168
|
+
--rt-nav-item-font-weight: var(--rt-font-weight-semibold);
|
|
3169
|
+
--rt-nav-item-line-height: var(--rt-leading-none);
|
|
3170
|
+
--rt-nav-item-color: var(--rt-color-text-primary);
|
|
3171
|
+
--rt-nav-item-color-hover: var(--rt-color-action-primary);
|
|
3172
|
+
--rt-nav-item-color-pressed: var(--rt-color-action-primary-hover);
|
|
3173
|
+
--rt-nav-item-color-bg: var(--rt-neutral-50);
|
|
3174
|
+
--rt-nav-item-color-border: var(--rt-neutral-50);
|
|
3175
|
+
--rt-nav-item-color-bg-active: var(--rt-color-bg-surface);
|
|
3176
|
+
--rt-nav-item-color-caret: var(--rt-neutral-200);
|
|
3177
|
+
/* Фокус обведён пунктиром: сплошная рамка на плашке пункта неотличима от его
|
|
3178
|
+
же границы. */
|
|
3179
|
+
--rt-nav-color-focus: var(--rt-color-action-primary);
|
|
3180
|
+
/* Недоступный пункт светлее доступного, а не другого оттенка: общий
|
|
3181
|
+
`text-disabled` уходит в сине-стальной и рядом с серой подписью читается
|
|
3182
|
+
как второй цвет, а не как выключенное состояние. */
|
|
3183
|
+
--rt-nav-color-disabled: var(--rt-neutral-300);
|
|
3184
|
+
/* Попап профиля. Подложку берёт у панели навигации, своего здесь — габариты
|
|
3185
|
+
блока пользователя, тень и набор строк: строк четыре, и они читаются как
|
|
3186
|
+
список действий, а не как выпадающее меню. */
|
|
3187
|
+
--rt-profile-menu-min-width: var(--rt-size-60);
|
|
3188
|
+
--rt-profile-menu-padding: var(--rt-space-5);
|
|
3189
|
+
--rt-profile-menu-shadow: var(--rt-shadow-profile-menu);
|
|
3190
|
+
--rt-profile-menu-border-width: var(--rt-border-width-thin);
|
|
3191
|
+
--rt-profile-menu-radius: var(--rt-radius-md);
|
|
3192
|
+
--rt-profile-avatar-size: var(--rt-size-10);
|
|
3193
|
+
--rt-profile-avatar-font-size: var(--rt-text-2xl);
|
|
3194
|
+
--rt-profile-avatar-border-width: var(--rt-border-width-medium);
|
|
3195
|
+
--rt-profile-avatar-radius: var(--rt-radius-full);
|
|
3196
|
+
--rt-profile-item-padding-y: var(--rt-space-4);
|
|
3197
|
+
--rt-profile-item-content-gap: var(--rt-space-2);
|
|
3198
|
+
--rt-profile-item-font-size: var(--rt-text-md);
|
|
3199
|
+
--rt-profile-item-font-weight: var(--rt-font-weight-medium);
|
|
3200
|
+
--rt-profile-item-radius: var(--rt-radius-md);
|
|
3201
|
+
/* Строки выступают за содержимое панели на половину её отступа: так
|
|
3202
|
+
подсветка на наведении не упирается в рамку, а иконка остаётся на одной
|
|
3203
|
+
вертикали с содержимым. Это же число — горизонтальный отступ строки. */
|
|
3204
|
+
--rt-profile-row-inset: var(--rt-space-2);
|
|
3205
|
+
--rt-profile-theme-icon-padding: var(--rt-space-2);
|
|
3206
|
+
--rt-profile-theme-icon-radius: var(--rt-radius-full);
|
|
3207
|
+
/* Габариты панели второго уровня: ширина считается числом колонок, поэтому
|
|
3208
|
+
колонка, промежуток и внутренний отступ — токены, из которых панель
|
|
3209
|
+
складывает свою ширину. По вертикали отступ крупнее: у первой группы над
|
|
3210
|
+
заголовком нет ничего, и панель иначе начинается впритык. */
|
|
3211
|
+
--rt-nav-panel-column-width: var(--rt-size-60);
|
|
3212
|
+
--rt-nav-panel-column-gap: var(--rt-space-5);
|
|
3213
|
+
--rt-nav-panel-padding: var(--rt-space-4);
|
|
3214
|
+
--rt-nav-panel-padding-y: var(--rt-space-md);
|
|
3215
|
+
--rt-nav-panel-group-gap: var(--rt-space-8);
|
|
3216
|
+
--rt-nav-panel-item-gap: var(--rt-space-0-5);
|
|
3217
|
+
--rt-nav-panel-item-height: var(--rt-size-6);
|
|
3218
|
+
--rt-nav-panel-item-padding: var(--rt-space-1) var(--rt-space-2);
|
|
3219
|
+
--rt-nav-panel-columns: 1;
|
|
3220
|
+
--rt-nav-panel-color-bg: var(--rt-color-bg-surface);
|
|
3221
|
+
--rt-nav-panel-color-border: var(--rt-neutral-200);
|
|
3222
|
+
--rt-nav-panel-shadow: var(--rt-shadow-nav-panel);
|
|
3223
|
+
/* Второй уровень набран легче первого: ряд разделов держит вес, а полтора
|
|
3224
|
+
десятка пунктов под ним читаются построчно. */
|
|
3225
|
+
--rt-nav-panel-item-font-size: var(--rt-text-sm);
|
|
3226
|
+
--rt-nav-panel-item-font-weight: var(--rt-font-weight-medium);
|
|
3227
|
+
--rt-nav-panel-item-content-gap: var(--rt-space-1);
|
|
3228
|
+
--rt-nav-panel-item-color: var(--rt-neutral-600);
|
|
3229
|
+
--rt-nav-panel-item-color-bg-hover: var(--rt-neutral-50);
|
|
3230
|
+
--rt-nav-panel-item-color-active: var(--rt-color-text-inverse);
|
|
3231
|
+
--rt-nav-panel-item-color-bg-active: var(--rt-color-action-primary);
|
|
3232
|
+
--rt-nav-panel-group-font-size: var(--rt-text-xs);
|
|
3233
|
+
--rt-nav-panel-group-font-weight: var(--rt-font-weight-medium);
|
|
3234
|
+
/* Заголовок группы светлее пункта, и оба берут порог контраста на белой панели.
|
|
3235
|
+
Отношения обеих пар считает проверка тёмной темы; таблица замера — на странице
|
|
3236
|
+
«Colors» витрины. */
|
|
3237
|
+
--rt-nav-panel-group-color: var(--rt-neutral-600);
|
|
3238
|
+
--rt-nav-panel-group-content-gap: var(--rt-space-2);
|
|
3239
|
+
/* Маркер непросмотренного. Точка стоит в потоке следом за подписью — и в ряду
|
|
3240
|
+
разделов, и в панели, и на узком экране: место ей даёт общий зазор
|
|
3241
|
+
содержимого пункта. */
|
|
3242
|
+
--rt-nav-caret-size: var(--rt-size-3);
|
|
3243
|
+
--rt-nav-marker-size: var(--rt-size-1);
|
|
3244
|
+
--rt-nav-marker-color: var(--rt-color-state-danger);
|
|
3245
|
+
/* Вкладки (rt-tabs). Полоса выбранной вкладки переезжает на новую, а панель
|
|
3246
|
+
меняется сдвигом по направлению перехода. Сдвиг панели в своём виде кита выключен
|
|
3247
|
+
нулевой длительностью: содержимое вкладки сменяется на месте, как раньше. */
|
|
3248
|
+
--rt-tabs-indicator-duration: var(--rt-duration-base);
|
|
3249
|
+
--rt-tabs-indicator-easing: ease-out;
|
|
3250
|
+
--rt-tabs-panel-duration: 0ms;
|
|
3251
|
+
--rt-tabs-panel-easing: ease-out;
|
|
3252
|
+
/* Прокрутка полосы вкладок стрелками и к выбранной вкладке. */
|
|
3253
|
+
--rt-tabs-scroll-duration: var(--rt-duration-base);
|
|
3254
|
+
--rt-tabs-scroll-easing: ease-out;
|
|
3015
3255
|
/* Подложки */
|
|
3016
3256
|
--rt-color-bg-page: var(--rt-mat-neutral-5);
|
|
3017
|
-
--rt-color-bg-surface: var(--
|
|
3257
|
+
--rt-color-bg-surface: var(--rt-sys-surface, var(--rt-mat-neutral-0));
|
|
3018
3258
|
--rt-color-bg-surface-subtle: var(--rt-mat-overlay-black-4);
|
|
3019
|
-
--rt-color-bg-surface-subtle-2: var(--
|
|
3259
|
+
--rt-color-bg-surface-subtle-2: var(--rt-field-filled-container-color, var(--rt-sys-surface-variant, var(--rt-mat-neutral-15)));
|
|
3020
3260
|
--rt-color-bg-hover: var(--rt-mat-neutral-10);
|
|
3021
3261
|
--rt-color-bg-subtle: var(--rt-mat-neutral-10);
|
|
3022
3262
|
--rt-color-bg-overlay: var(--rt-mat-overlay-black-32);
|
|
3023
|
-
--rt-color-bg-inverse: var(--
|
|
3024
|
-
--rt-color-bg-nav: var(--
|
|
3263
|
+
--rt-color-bg-inverse: var(--rt-sys-inverse-surface, var(--rt-mat-neutral-100));
|
|
3264
|
+
--rt-color-bg-nav: var(--rt-sys-primary, var(--rt-mat-navy-100)); /* марка первого кита: обвязка тёмная в обоих наборах */
|
|
3025
3265
|
--rt-color-bg-page-auth: var(--rt-mat-neutral-5);
|
|
3026
3266
|
--rt-color-bg-surface-auth-card: var(--rt-mat-neutral-0);
|
|
3027
3267
|
/* Текст */
|
|
3028
|
-
--rt-color-text-primary: var(--
|
|
3268
|
+
--rt-color-text-primary: var(--rt-sys-on-surface, var(--rt-mat-neutral-100));
|
|
3029
3269
|
--rt-color-text-muted: var(--rt-mat-neutral-60);
|
|
3030
|
-
--rt-color-text-disabled: color-mix(in srgb, var(--
|
|
3031
|
-
--rt-color-text-inverse: var(--
|
|
3032
|
-
--rt-color-text-link: var(--
|
|
3033
|
-
--rt-color-text-link-hover: color-mix(in srgb, var(--
|
|
3270
|
+
--rt-color-text-disabled: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-100)) 38%, transparent);
|
|
3271
|
+
--rt-color-text-inverse: var(--rt-sys-inverse-on-surface, var(--rt-mat-neutral-0));
|
|
3272
|
+
--rt-color-text-link: var(--rt-sys-primary, var(--rt-mat-blue-100));
|
|
3273
|
+
--rt-color-text-link-hover: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 90%, #000);
|
|
3034
3274
|
/* Рамки */
|
|
3035
3275
|
--rt-color-border-default: var(--rt-mat-neutral-25);
|
|
3036
3276
|
--rt-color-border-strong: var(--rt-mat-neutral-30);
|
|
3037
3277
|
--rt-color-border-subtle: var(--rt-mat-neutral-20);
|
|
3038
3278
|
--rt-color-border-focus: var(--rt-mat-blue-40); /* кольцо фокуса первого кита светлее его действия */
|
|
3039
3279
|
/* Действие: подложка, наведение, нажатие, подпись на них и цвет роли на поверхности */
|
|
3040
|
-
--rt-color-action-primary: var(--
|
|
3041
|
-
--rt-color-action-primary-hover: color-mix(in srgb, var(--
|
|
3042
|
-
--rt-color-action-primary-active: color-mix(in srgb, var(--
|
|
3043
|
-
--rt-color-action-primary-subtle: color-mix(in srgb, var(--
|
|
3044
|
-
--rt-color-action-primary-soft: color-mix(in srgb, var(--
|
|
3280
|
+
--rt-color-action-primary: var(--rt-sys-primary, var(--rt-mat-blue-100));
|
|
3281
|
+
--rt-color-action-primary-hover: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 90%, #000);
|
|
3282
|
+
--rt-color-action-primary-active: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 80%, #000);
|
|
3283
|
+
--rt-color-action-primary-subtle: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 8%, transparent);
|
|
3284
|
+
--rt-color-action-primary-soft: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 24%, transparent);
|
|
3045
3285
|
--rt-color-action-on-primary: var(--rt-mat-neutral-0);
|
|
3046
3286
|
--rt-color-action-secondary: var(--rt-mat-neutral-60);
|
|
3047
3287
|
--rt-color-action-secondary-hover: var(--rt-mat-neutral-hover);
|
|
@@ -3056,15 +3296,15 @@ html.rt-theme-dark {
|
|
|
3056
3296
|
--rt-color-action-warning-hover: var(--rt-mat-orange-hover);
|
|
3057
3297
|
--rt-color-action-warning-active: var(--rt-mat-orange-active);
|
|
3058
3298
|
--rt-color-action-on-warning: var(--rt-mat-neutral-0);
|
|
3059
|
-
--rt-color-action-danger: var(--
|
|
3060
|
-
--rt-color-action-danger-hover: color-mix(in srgb, var(--
|
|
3061
|
-
--rt-color-action-danger-active: color-mix(in srgb, var(--
|
|
3299
|
+
--rt-color-action-danger: var(--rt-sys-error, var(--rt-mat-red-100));
|
|
3300
|
+
--rt-color-action-danger-hover: color-mix(in srgb, var(--rt-sys-error, var(--rt-mat-red-100)) 90%, #000);
|
|
3301
|
+
--rt-color-action-danger-active: color-mix(in srgb, var(--rt-sys-error, var(--rt-mat-red-100)) 80%, #000);
|
|
3062
3302
|
--rt-color-action-on-danger: var(--rt-mat-neutral-0);
|
|
3063
|
-
--rt-color-action-info: var(--
|
|
3064
|
-
--rt-color-action-info-hover: color-mix(in srgb, var(--
|
|
3065
|
-
--rt-color-action-info-active: color-mix(in srgb, var(--
|
|
3303
|
+
--rt-color-action-info: var(--rt-sys-primary, var(--rt-mat-blue-100));
|
|
3304
|
+
--rt-color-action-info-hover: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 90%, #000);
|
|
3305
|
+
--rt-color-action-info-active: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 80%, #000);
|
|
3066
3306
|
--rt-color-action-on-info: var(--rt-mat-neutral-0);
|
|
3067
|
-
--rt-color-action-disabled: color-mix(in srgb, var(--
|
|
3307
|
+
--rt-color-action-disabled: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-100)) 12%, transparent);
|
|
3068
3308
|
/* Состояния: цвет роли и её светлая подложка */
|
|
3069
3309
|
--rt-color-state-success: var(--rt-mat-green-100);
|
|
3070
3310
|
--rt-color-state-success-bg: var(--rt-mat-green-10);
|
|
@@ -3072,11 +3312,11 @@ html.rt-theme-dark {
|
|
|
3072
3312
|
--rt-color-state-warning: var(--rt-mat-orange-100);
|
|
3073
3313
|
--rt-color-state-warning-bg: var(--rt-mat-orange-5);
|
|
3074
3314
|
--rt-color-state-warning-text: var(--rt-mat-orange-100);
|
|
3075
|
-
--rt-color-state-danger: var(--
|
|
3076
|
-
--rt-color-state-danger-bg: var(--
|
|
3077
|
-
--rt-color-state-error-text: var(--
|
|
3078
|
-
--rt-color-state-info: var(--
|
|
3079
|
-
--rt-color-state-info-bg: var(--
|
|
3315
|
+
--rt-color-state-danger: var(--rt-sys-error, var(--rt-mat-red-100));
|
|
3316
|
+
--rt-color-state-danger-bg: var(--rt-sys-error-container, var(--rt-mat-red-10));
|
|
3317
|
+
--rt-color-state-error-text: var(--rt-sys-error, var(--rt-mat-red-100));
|
|
3318
|
+
--rt-color-state-info: var(--rt-sys-primary, var(--rt-mat-blue-100));
|
|
3319
|
+
--rt-color-state-info-bg: var(--rt-sys-primary-container, var(--rt-mat-blue-20));
|
|
3080
3320
|
/* Рельса шагов */
|
|
3081
3321
|
--rt-color-stepper-track: var(--rt-mat-neutral-30);
|
|
3082
3322
|
/* Заглушка загрузки: краски те же, что набор давал ей прежде через подложку и
|
|
@@ -3084,27 +3324,27 @@ html.rt-theme-dark {
|
|
|
3084
3324
|
--rt-color-skeleton-base: var(--rt-mat-neutral-10);
|
|
3085
3325
|
--rt-color-skeleton-wave: var(--rt-mat-neutral-25);
|
|
3086
3326
|
/* Шапка таблицы первого кита залита тем же цветом, что залитое поле Material. */
|
|
3087
|
-
--rt-color-table-head-bg: var(--
|
|
3327
|
+
--rt-color-table-head-bg: var(--rt-field-filled-container-color, var(--rt-sys-surface-variant, var(--rt-mat-overlay-black-4)));
|
|
3088
3328
|
/* Черта снизу у залитого поля Material — цвет on-surface-variant темы. */
|
|
3089
|
-
--rt-color-field-fill-underline: var(--
|
|
3329
|
+
--rt-color-field-fill-underline: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-30));
|
|
3090
3330
|
/* Поиск списка первого кита — обведённое или залитое поле Material при плотности −1:
|
|
3091
3331
|
52px, скругление 4px, рамка цвета outline темы, внутри прозрачное. Ступени 52px нет, высота собрана из ступени
|
|
3092
3332
|
xl без ступени 1. */
|
|
3093
3333
|
--rt-list-search-height: calc(var(--rt-control-height-xl) - var(--rt-space-1));
|
|
3094
3334
|
--rt-list-search-radius: var(--rt-radius-sm);
|
|
3095
|
-
--rt-list-search-color-border: var(--
|
|
3335
|
+
--rt-list-search-color-border: var(--rt-sys-outline, var(--rt-mat-neutral-25));
|
|
3096
3336
|
--rt-list-search-color-bg: transparent;
|
|
3097
3337
|
--rt-list-search-width: calc(var(--rt-size-64) + var(--rt-size-24));
|
|
3098
3338
|
--rt-list-search-padding-x: calc(var(--rt-space-2) + var(--rt-space-1) - var(--rt-border-width-thin));
|
|
3099
3339
|
--rt-list-search-gap: var(--rt-space-4);
|
|
3100
3340
|
--rt-list-search-font-size: var(--rt-text-md);
|
|
3101
3341
|
--rt-list-search-icon-size: var(--rt-size-6);
|
|
3102
|
-
--rt-list-search-icon-color: var(--
|
|
3103
|
-
--rt-list-search-color-placeholder: var(--
|
|
3342
|
+
--rt-list-search-icon-color: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-60));
|
|
3343
|
+
--rt-list-search-color-placeholder: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-60));
|
|
3104
3344
|
/* Панель настройки колонок первого кита: плашка колонки залита цветом выбранного пункта
|
|
3105
3345
|
Material, значки — в тоне on-surface-variant темы. Сняты с панели на витрине первого кита. */
|
|
3106
|
-
--rt-list-settings-item-bg: var(--
|
|
3107
|
-
--rt-list-settings-icon-color: var(--
|
|
3346
|
+
--rt-list-settings-item-bg: var(--rt-option-selected-state-layer-color, var(--rt-sys-secondary-container, var(--rt-mat-neutral-10)));
|
|
3347
|
+
--rt-list-settings-icon-color: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-60));
|
|
3108
3348
|
/* Кнопки действий панели списка — mat-mini-fab первого кита: круг без заливки с подъёмом 6,
|
|
3109
3349
|
под указателем подъём 8 и тёмный значок вместо серого; значок 24px, промежуток 16px. */
|
|
3110
3350
|
--rt-list-action-gap: var(--rt-space-md);
|
|
@@ -3115,16 +3355,16 @@ html.rt-theme-dark {
|
|
|
3115
3355
|
--rt-list-action-icon-size: var(--rt-size-6);
|
|
3116
3356
|
--rt-list-action-color: var(--rt-mat-neutral-60);
|
|
3117
3357
|
--rt-list-table-icon-size: var(--rt-size-6);
|
|
3118
|
-
--rt-list-table-icon-color: var(--
|
|
3119
|
-
--rt-list-table-head-divider-color: var(--
|
|
3358
|
+
--rt-list-table-icon-color: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-60));
|
|
3359
|
+
--rt-list-table-head-divider-color: var(--rt-sys-outline, var(--rt-mat-neutral-30));
|
|
3120
3360
|
--rt-list-table-button-size: calc(var(--rt-size-8) + var(--rt-size-1));
|
|
3121
3361
|
--rt-list-table-button-radius: var(--rt-radius-full);
|
|
3122
3362
|
--rt-list-copy-button-size: var(--rt-size-6);
|
|
3123
3363
|
--rt-list-copy-button-radius: var(--rt-mat-radius-5);
|
|
3124
3364
|
--rt-list-settings-item-radius: var(--rt-mat-radius-5);
|
|
3125
3365
|
--rt-list-filter-line-height: var(--rt-size-6);
|
|
3126
|
-
--rt-list-copy-button-bg: var(--
|
|
3127
|
-
--rt-list-copy-button-bg-hover: var(--
|
|
3366
|
+
--rt-list-copy-button-bg: var(--rt-fab-small-container-color, var(--rt-mat-neutral-0));
|
|
3367
|
+
--rt-list-copy-button-bg-hover: var(--rt-fab-small-container-color, var(--rt-mat-neutral-0));
|
|
3128
3368
|
--rt-list-copy-button-color: var(--rt-mat-neutral-60);
|
|
3129
3369
|
--rt-list-action-color-hover: var(--rt-mat-neutral-100);
|
|
3130
3370
|
--rt-list-action-color-bg-hover: transparent;
|
|
@@ -3178,23 +3418,23 @@ html.rt-theme-dark {
|
|
|
3178
3418
|
скруглён только снизу, подсказка 4px без тени. Тень — подъём 2 Material, как у mat-menu и
|
|
3179
3419
|
mat-select. */
|
|
3180
3420
|
--rt-overlay-menu-radius: var(--rt-mat-radius-4);
|
|
3181
|
-
--rt-overlay-menu-shadow: var(--
|
|
3421
|
+
--rt-overlay-menu-shadow: var(--rt-sys-level2, var(--rt-mat-shadow-level-2));
|
|
3182
3422
|
--rt-overlay-select-radius: 0 0 var(--rt-mat-radius-4) var(--rt-mat-radius-4);
|
|
3183
|
-
--rt-overlay-select-shadow: var(--
|
|
3423
|
+
--rt-overlay-select-shadow: var(--rt-sys-level2, var(--rt-mat-shadow-level-2));
|
|
3184
3424
|
--rt-overlay-tooltip-radius: var(--rt-mat-radius-4);
|
|
3185
3425
|
--rt-overlay-tooltip-shadow: none;
|
|
3186
3426
|
/* Меню строки — mat-menu первого кита: фон контейнера Material, отступ 8px сверху и снизу,
|
|
3187
3427
|
подписи весом 500, опасный пункт красным первого кита. Выпадающий список — mat-select: пункты
|
|
3188
3428
|
16px, выбранный — фон текста 12% без жирного и с галочкой. */
|
|
3189
|
-
--rt-overlay-menu-bg: var(--
|
|
3429
|
+
--rt-overlay-menu-bg: var(--rt-menu-container-color, var(--rt-mat-neutral-0));
|
|
3190
3430
|
--rt-overlay-menu-padding-y: var(--rt-space-sm);
|
|
3191
3431
|
--rt-overlay-menu-item-weight: var(--rt-font-weight-medium);
|
|
3192
3432
|
--rt-overlay-menu-danger-color: var(--rt-mat-red-100);
|
|
3193
3433
|
--rt-overlay-select-option-font-size: var(--rt-text-md);
|
|
3194
|
-
--rt-overlay-select-selected-bg: color-mix(in srgb, var(--
|
|
3434
|
+
--rt-overlay-select-selected-bg: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-100)) 12%, transparent);
|
|
3195
3435
|
--rt-overlay-select-selected-weight: var(--rt-font-weight-regular);
|
|
3196
3436
|
--rt-overlay-select-check-display: inline-flex;
|
|
3197
|
-
--rt-overlay-menu-current-bg: color-mix(in srgb, var(--
|
|
3437
|
+
--rt-overlay-menu-current-bg: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-100)) 12%, transparent);
|
|
3198
3438
|
--rt-overlay-menu-min-width: var(--rt-mat-menu-min-width);
|
|
3199
3439
|
--rt-overlay-menu-item-min-height: var(--rt-size-12);
|
|
3200
3440
|
--rt-overlay-menu-item-padding-y: 0px;
|
|
@@ -3208,6 +3448,78 @@ html.rt-theme-dark {
|
|
|
3208
3448
|
--rt-icon-button-disabled-opacity: 1;
|
|
3209
3449
|
--rt-icon-button-disabled-color: var(--rt-color-text-disabled);
|
|
3210
3450
|
--rt-icon-button-disabled-fill: 0%;
|
|
3451
|
+
/* Обведённое поле Material: прозрачное, рамка цвета outline темы, фокус — рамка в два
|
|
3452
|
+
пикселя цветом марки без внешнего кольца. Вторая линия рамки фокуса — внутренняя тень. */
|
|
3453
|
+
--rt-input-color-bg: transparent;
|
|
3454
|
+
--rt-input-color-border: var(--rt-sys-outline, var(--rt-mat-neutral-60));
|
|
3455
|
+
--rt-input-focus-shadow: inset 0 0 0 1px var(--rt-input-color-border-focus);
|
|
3456
|
+
--rt-input-focus-shadow-error: inset 0 0 0 1px var(--rt-input-color-border-error);
|
|
3457
|
+
/* Размер поля Material: 56 px при плотности 0 и на 4 px меньше за каждый шаг, значение 16 px.
|
|
3458
|
+
Шаг приходит свойством `--rt-input-density`, которое ставит атрибут `data-rt-density` на поле
|
|
3459
|
+
или на любом предке, — правила в `_density.scss`. Высота считается здесь, на узле с признаком
|
|
3460
|
+
набора, из унаследованного шага: атрибут на корне приложения доходит и до поля со своим
|
|
3461
|
+
признаком набора. Своя высота приложения — `--rt-input-height-app` на любом предке; она сильнее
|
|
3462
|
+
плотности и не перебивается набором на самом поле. */
|
|
3463
|
+
--rt-input-height-md: var(
|
|
3464
|
+
--rt-input-height-app,
|
|
3465
|
+
calc(var(--rt-size-12) + var(--rt-size-2) - var(--rt-input-density) * var(--rt-size-1))
|
|
3466
|
+
);
|
|
3467
|
+
--rt-input-height: var(--rt-input-height-md);
|
|
3468
|
+
/* Крупная ступень `size` не ниже средней высоты набора: 48 px кита под набором вышли бы ниже
|
|
3469
|
+
поля по умолчанию (56 px). Малая ступень остаётся ступенью кита — по ней стоят поиск списка и
|
|
3470
|
+
правка на месте. */
|
|
3471
|
+
--rt-input-height-lg: max(var(--rt-control-height-lg), var(--rt-input-height-md));
|
|
3472
|
+
--rt-input-font-size: var(--rt-text-md);
|
|
3473
|
+
/* Подсказка, подпись в покое, значки и стрелка поля — цвета on-surface-variant темы Material,
|
|
3474
|
+
каретка — цвета марки, значки 24 px, как у поля Material. Без темы Material цвета прежние. */
|
|
3475
|
+
--rt-input-color-text-placeholder: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-60));
|
|
3476
|
+
--rt-input-icon-color: var(--rt-sys-on-surface-variant, var(--rt-neutral-600));
|
|
3477
|
+
--rt-input-icon-size: var(--rt-size-6);
|
|
3478
|
+
--rt-input-caret-color: var(--rt-color-action-primary);
|
|
3479
|
+
/* Отключённое поле Material: поле не тускнеет целиком — рамка on-surface 12%, текст и
|
|
3480
|
+
подсказка on-surface 38%. */
|
|
3481
|
+
--rt-input-disabled-field-opacity: 1;
|
|
3482
|
+
--rt-input-color-border-disabled: var(--rt-color-action-disabled);
|
|
3483
|
+
--rt-input-color-text-disabled: var(--rt-color-text-disabled);
|
|
3484
|
+
--rt-input-color-placeholder-disabled: var(--rt-color-text-disabled);
|
|
3485
|
+
--rt-input-color-bg-disabled: transparent;
|
|
3486
|
+
/* Крестик очистки — крестик первого кита: 19 px, значок 12 px, серый, в 8 px от края поля и в
|
|
3487
|
+
4 px от текста. Отступ от края считается от правого поля в 4 px, как у поля Material с крестиком. */
|
|
3488
|
+
--rt-input-clear-size: 19px;
|
|
3489
|
+
--rt-input-clear-icon-size: var(--rt-size-3);
|
|
3490
|
+
--rt-input-clear-color: var(--rt-mat-neutral-60);
|
|
3491
|
+
--rt-input-clear-offset-end: calc(var(--rt-space-2) - var(--rt-space-1));
|
|
3492
|
+
--rt-input-clear-offset-start: calc(var(--rt-space-1) - var(--rt-input-gap));
|
|
3493
|
+
--rt-input-fill-color-bg-disabled: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-100)) 4%, transparent);
|
|
3494
|
+
--rt-input-clear-bg: var(--rt-mat-neutral-25);
|
|
3495
|
+
--rt-input-clear-bg-hover: var(--rt-input-clear-bg);
|
|
3496
|
+
--rt-input-clear-radius: var(--rt-radius-full);
|
|
3497
|
+
/* Залитое поле Material: рамки сверху и по бокам нет, только черта снизу; в фокусе черта
|
|
3498
|
+
вдвое толще цветом марки, у недействительного поля — цветом ошибки. */
|
|
3499
|
+
--rt-input-fill-edge: 0px;
|
|
3500
|
+
--rt-input-fill-focus-shadow: inset 0 -1px 0 0 var(--rt-input-color-border-focus);
|
|
3501
|
+
--rt-input-fill-focus-shadow-error: inset 0 -1px 0 0 var(--rt-input-color-border-error);
|
|
3502
|
+
/* Звёздочка обязательного поля — цвета подписи, как у поля Material; цвет ошибки она берёт
|
|
3503
|
+
только у недействительного поля, правилом самого поля. */
|
|
3504
|
+
--rt-field-required-color: currentcolor;
|
|
3505
|
+
--rt-field-required-gap: 0px;
|
|
3506
|
+
/* Строка под полем — строка подсказки Material: 16 px высотой и 4 px над ней. */
|
|
3507
|
+
--rt-field-messages-line-height: var(--rt-size-4);
|
|
3508
|
+
--rt-field-messages-padding-top: var(--rt-space-1);
|
|
3509
|
+
/* Группа переключателей видом «чипы» — фильтр-чип Material: обводка цвета outline темы,
|
|
3510
|
+
выбранный залит secondary-container, отключённый — текст 38 %, обводка 12 %. Обводку и цвет
|
|
3511
|
+
текста у выбранного задаёт лист чипов: своё имя каждому стоило бы по разу на тему, набор и
|
|
3512
|
+
островок, а начальный пакет приложения-образца стоит у порога. */
|
|
3513
|
+
--rt-toggle-chip-color-border: var(--rt-sys-outline, var(--rt-mat-neutral-60));
|
|
3514
|
+
--rt-toggle-chip-color-text: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-70));
|
|
3515
|
+
--rt-toggle-chip-color-bg-selected: var(--rt-sys-secondary-container, var(--rt-mat-neutral-25));
|
|
3516
|
+
/* Вкладки: полоса и панель движутся, как у вкладок Material, — полсекунды с той же кривой. */
|
|
3517
|
+
--rt-tabs-indicator-duration: var(--rt-duration-slower);
|
|
3518
|
+
--rt-tabs-indicator-easing: cubic-bezier(0.35, 0, 0.25, 1);
|
|
3519
|
+
--rt-tabs-panel-duration: var(--rt-duration-slower);
|
|
3520
|
+
--rt-tabs-panel-easing: cubic-bezier(0.35, 0, 0.25, 1);
|
|
3521
|
+
--rt-tabs-scroll-duration: var(--rt-duration-slower);
|
|
3522
|
+
--rt-tabs-scroll-easing: cubic-bezier(0.35, 0, 0.25, 1);
|
|
3211
3523
|
}
|
|
3212
3524
|
@media (pointer: coarse) {
|
|
3213
3525
|
[data-preset=material]:not(:root),
|
|
@@ -3454,6 +3766,11 @@ html.rt-theme-dark .rt-preset-material {
|
|
|
3454
3766
|
--rt-input-icon-color: var(--rt-neutral-600);
|
|
3455
3767
|
--rt-input-icon-size: var(--rt-size-4);
|
|
3456
3768
|
--rt-input-gap: var(--rt-space-sm);
|
|
3769
|
+
--rt-input-caret-color: auto;
|
|
3770
|
+
--rt-input-min-width: 0px;
|
|
3771
|
+
--rt-input-fill-edge: var(--rt-input-border-width);
|
|
3772
|
+
--rt-input-fill-focus-shadow: var(--rt-input-focus-shadow);
|
|
3773
|
+
--rt-input-fill-focus-shadow-error: var(--rt-input-focus-shadow-error);
|
|
3457
3774
|
/* Sizes (single-line height scale) */
|
|
3458
3775
|
--rt-input-height-sm: var(--rt-control-height-sm);
|
|
3459
3776
|
--rt-input-height-md: var(--rt-control-height-md);
|
|
@@ -3469,160 +3786,90 @@ html.rt-theme-dark .rt-preset-material {
|
|
|
3469
3786
|
--rt-list-search-radius: var(--rt-input-radius);
|
|
3470
3787
|
--rt-list-search-color-border: var(--rt-input-color-border);
|
|
3471
3788
|
--rt-list-search-color-bg: var(--rt-input-color-bg);
|
|
3472
|
-
--rt-list-search-width: var(--rt-size-60);
|
|
3473
|
-
--rt-list-search-padding-x: var(--rt-input-padding-x);
|
|
3474
|
-
--rt-list-search-gap: var(--rt-input-gap);
|
|
3475
|
-
--rt-list-search-font-size: var(--rt-input-font-size);
|
|
3476
|
-
--rt-list-search-icon-size: var(--rt-input-icon-size);
|
|
3477
|
-
--rt-list-search-icon-color: var(--rt-input-icon-color);
|
|
3478
|
-
--rt-list-search-color-placeholder: var(--rt-input-color-text-placeholder);
|
|
3479
|
-
/* Панель настройки колонок списка — заливка плашки колонки и тон значков на ней.
|
|
3480
|
-
Свой вид берёт подложку и приглушённый текст; материальный набор отдаёт их теме. */
|
|
3481
|
-
--rt-list-settings-item-bg: var(--rt-color-bg-subtle);
|
|
3482
|
-
--rt-list-settings-icon-color: var(--rt-color-text-muted);
|
|
3483
|
-
/* Скругление контрола — назначение, а не ступень на месте. Кнопка, поле ввода и
|
|
3484
|
-
всё, что стоит с ними в строке, берут его отсюда: набор оформления живёт слоем
|
|
3485
|
-
назначений и до ступени, взятой компонентом напрямую, не достаёт. */
|
|
3486
|
-
--rt-radius-control: var(--rt-radius-lg);
|
|
3487
|
-
/* Radius / spacing / border */
|
|
3488
|
-
--rt-input-radius: var(--rt-radius-control);
|
|
3489
|
-
--rt-input-padding-x: var(--rt-space-4);
|
|
3490
|
-
--rt-input-padding-y: var(--rt-space-0);
|
|
3491
|
-
--rt-input-border-width: var(--rt-border-width-thin);
|
|
3492
|
-
--rt-input-focus-outline-offset: var(--rt-border-width-thin);
|
|
3493
|
-
/* Typography */
|
|
3494
|
-
--rt-input-font-size: var(--rt-text-sm);
|
|
3495
|
-
--rt-input-line-height: var(--rt-leading-snug);
|
|
3496
|
-
/* State / motion */
|
|
3497
|
-
--rt-input-disabled-opacity: var(--rt-opacity-disabled);
|
|
3498
|
-
--rt-input-
|
|
3499
|
-
--rt-input-
|
|
3500
|
-
--rt-input-
|
|
3501
|
-
|
|
3502
|
-
--rt-
|
|
3503
|
-
--rt-
|
|
3504
|
-
--rt-
|
|
3505
|
-
--rt-
|
|
3506
|
-
--rt-
|
|
3507
|
-
--rt-
|
|
3508
|
-
|
|
3509
|
-
--rt-input-
|
|
3510
|
-
|
|
3511
|
-
|
|
3512
|
-
--rt-
|
|
3513
|
-
|
|
3514
|
-
|
|
3515
|
-
|
|
3516
|
-
--rt-
|
|
3517
|
-
--rt-
|
|
3518
|
-
--rt-
|
|
3519
|
-
--rt-
|
|
3520
|
-
--rt-
|
|
3521
|
-
|
|
3522
|
-
--rt-
|
|
3523
|
-
|
|
3524
|
-
|
|
3525
|
-
--rt-
|
|
3526
|
-
|
|
3527
|
-
|
|
3528
|
-
|
|
3529
|
-
--rt-
|
|
3530
|
-
--rt-
|
|
3531
|
-
--rt-
|
|
3532
|
-
--rt-
|
|
3533
|
-
--rt-
|
|
3534
|
-
|
|
3535
|
-
|
|
3536
|
-
--rt-
|
|
3537
|
-
|
|
3538
|
-
|
|
3539
|
-
--rt-
|
|
3540
|
-
|
|
3541
|
-
|
|
3542
|
-
|
|
3543
|
-
|
|
3544
|
-
--rt-
|
|
3545
|
-
--rt-
|
|
3546
|
-
--rt-
|
|
3547
|
-
|
|
3548
|
-
|
|
3549
|
-
--rt-
|
|
3550
|
-
|
|
3551
|
-
|
|
3552
|
-
|
|
3553
|
-
--rt-
|
|
3554
|
-
--rt-
|
|
3555
|
-
--rt-
|
|
3556
|
-
--rt-nav-item-color-bg-active: var(--rt-color-bg-surface);
|
|
3557
|
-
--rt-nav-item-color-caret: var(--rt-neutral-200);
|
|
3558
|
-
/* Фокус обведён пунктиром: сплошная рамка на плашке пункта неотличима от его
|
|
3559
|
-
же границы. */
|
|
3560
|
-
--rt-nav-color-focus: var(--rt-color-action-primary);
|
|
3561
|
-
/* Недоступный пункт светлее доступного, а не другого оттенка: общий
|
|
3562
|
-
`text-disabled` уходит в сине-стальной и рядом с серой подписью читается
|
|
3563
|
-
как второй цвет, а не как выключенное состояние. */
|
|
3564
|
-
--rt-nav-color-disabled: var(--rt-neutral-300);
|
|
3565
|
-
/* Попап профиля. Подложку берёт у панели навигации, своего здесь — габариты
|
|
3566
|
-
блока пользователя, тень и набор строк: строк четыре, и они читаются как
|
|
3567
|
-
список действий, а не как выпадающее меню. */
|
|
3568
|
-
--rt-profile-menu-min-width: var(--rt-size-60);
|
|
3569
|
-
--rt-profile-menu-padding: var(--rt-space-5);
|
|
3570
|
-
--rt-profile-menu-shadow: var(--rt-shadow-profile-menu);
|
|
3571
|
-
--rt-profile-menu-border-width: var(--rt-border-width-thin);
|
|
3572
|
-
--rt-profile-menu-radius: var(--rt-radius-md);
|
|
3573
|
-
--rt-profile-avatar-size: var(--rt-size-10);
|
|
3574
|
-
--rt-profile-avatar-font-size: var(--rt-text-2xl);
|
|
3575
|
-
--rt-profile-avatar-border-width: var(--rt-border-width-medium);
|
|
3576
|
-
--rt-profile-avatar-radius: var(--rt-radius-full);
|
|
3577
|
-
--rt-profile-item-padding-y: var(--rt-space-4);
|
|
3578
|
-
--rt-profile-item-content-gap: var(--rt-space-2);
|
|
3579
|
-
--rt-profile-item-font-size: var(--rt-text-md);
|
|
3580
|
-
--rt-profile-item-font-weight: var(--rt-font-weight-medium);
|
|
3581
|
-
--rt-profile-item-radius: var(--rt-radius-md);
|
|
3582
|
-
/* Строки выступают за содержимое панели на половину её отступа: так
|
|
3583
|
-
подсветка на наведении не упирается в рамку, а иконка остаётся на одной
|
|
3584
|
-
вертикали с содержимым. Это же число — горизонтальный отступ строки. */
|
|
3585
|
-
--rt-profile-row-inset: var(--rt-space-2);
|
|
3586
|
-
--rt-profile-theme-icon-padding: var(--rt-space-2);
|
|
3587
|
-
--rt-profile-theme-icon-radius: var(--rt-radius-full);
|
|
3588
|
-
/* Габариты панели второго уровня: ширина считается числом колонок, поэтому
|
|
3589
|
-
колонка, промежуток и внутренний отступ — токены, из которых панель
|
|
3590
|
-
складывает свою ширину. По вертикали отступ крупнее: у первой группы над
|
|
3591
|
-
заголовком нет ничего, и панель иначе начинается впритык. */
|
|
3592
|
-
--rt-nav-panel-column-width: var(--rt-size-60);
|
|
3593
|
-
--rt-nav-panel-column-gap: var(--rt-space-5);
|
|
3594
|
-
--rt-nav-panel-padding: var(--rt-space-4);
|
|
3595
|
-
--rt-nav-panel-padding-y: var(--rt-space-md);
|
|
3596
|
-
--rt-nav-panel-group-gap: var(--rt-space-8);
|
|
3597
|
-
--rt-nav-panel-item-gap: var(--rt-space-0-5);
|
|
3598
|
-
--rt-nav-panel-item-height: var(--rt-size-6);
|
|
3599
|
-
--rt-nav-panel-item-padding: var(--rt-space-1) var(--rt-space-2);
|
|
3600
|
-
--rt-nav-panel-columns: 1;
|
|
3601
|
-
--rt-nav-panel-color-bg: var(--rt-color-bg-surface);
|
|
3602
|
-
--rt-nav-panel-color-border: var(--rt-neutral-200);
|
|
3603
|
-
--rt-nav-panel-shadow: var(--rt-shadow-nav-panel);
|
|
3604
|
-
/* Второй уровень набран легче первого: ряд разделов держит вес, а полтора
|
|
3605
|
-
десятка пунктов под ним читаются построчно. */
|
|
3606
|
-
--rt-nav-panel-item-font-size: var(--rt-text-sm);
|
|
3607
|
-
--rt-nav-panel-item-font-weight: var(--rt-font-weight-medium);
|
|
3608
|
-
--rt-nav-panel-item-content-gap: var(--rt-space-1);
|
|
3609
|
-
--rt-nav-panel-item-color: var(--rt-neutral-600);
|
|
3610
|
-
--rt-nav-panel-item-color-bg-hover: var(--rt-neutral-50);
|
|
3611
|
-
--rt-nav-panel-item-color-active: var(--rt-color-text-inverse);
|
|
3612
|
-
--rt-nav-panel-item-color-bg-active: var(--rt-color-action-primary);
|
|
3613
|
-
--rt-nav-panel-group-font-size: var(--rt-text-xs);
|
|
3614
|
-
--rt-nav-panel-group-font-weight: var(--rt-font-weight-medium);
|
|
3615
|
-
/* Заголовок группы светлее пункта, и оба берут порог контраста на белой панели.
|
|
3616
|
-
Отношения обеих пар считает проверка тёмной темы; таблица замера — на странице
|
|
3617
|
-
«Colors» витрины. */
|
|
3618
|
-
--rt-nav-panel-group-color: var(--rt-neutral-600);
|
|
3619
|
-
--rt-nav-panel-group-content-gap: var(--rt-space-2);
|
|
3620
|
-
/* Маркер непросмотренного. Точка стоит в потоке следом за подписью — и в ряду
|
|
3621
|
-
разделов, и в панели, и на узком экране: место ей даёт общий зазор
|
|
3622
|
-
содержимого пункта. */
|
|
3623
|
-
--rt-nav-caret-size: var(--rt-size-3);
|
|
3624
|
-
--rt-nav-marker-size: var(--rt-size-1);
|
|
3625
|
-
--rt-nav-marker-color: var(--rt-color-state-danger);
|
|
3789
|
+
--rt-list-search-width: var(--rt-size-60);
|
|
3790
|
+
--rt-list-search-padding-x: var(--rt-input-padding-x);
|
|
3791
|
+
--rt-list-search-gap: var(--rt-input-gap);
|
|
3792
|
+
--rt-list-search-font-size: var(--rt-input-font-size);
|
|
3793
|
+
--rt-list-search-icon-size: var(--rt-input-icon-size);
|
|
3794
|
+
--rt-list-search-icon-color: var(--rt-input-icon-color);
|
|
3795
|
+
--rt-list-search-color-placeholder: var(--rt-input-color-text-placeholder);
|
|
3796
|
+
/* Панель настройки колонок списка — заливка плашки колонки и тон значков на ней.
|
|
3797
|
+
Свой вид берёт подложку и приглушённый текст; материальный набор отдаёт их теме. */
|
|
3798
|
+
--rt-list-settings-item-bg: var(--rt-color-bg-subtle);
|
|
3799
|
+
--rt-list-settings-icon-color: var(--rt-color-text-muted);
|
|
3800
|
+
/* Скругление контрола — назначение, а не ступень на месте. Кнопка, поле ввода и
|
|
3801
|
+
всё, что стоит с ними в строке, берут его отсюда: набор оформления живёт слоем
|
|
3802
|
+
назначений и до ступени, взятой компонентом напрямую, не достаёт. */
|
|
3803
|
+
--rt-radius-control: var(--rt-radius-lg);
|
|
3804
|
+
/* Radius / spacing / border */
|
|
3805
|
+
--rt-input-radius: var(--rt-radius-control);
|
|
3806
|
+
--rt-input-padding-x: var(--rt-space-4);
|
|
3807
|
+
--rt-input-padding-y: var(--rt-space-0);
|
|
3808
|
+
--rt-input-border-width: var(--rt-border-width-thin);
|
|
3809
|
+
--rt-input-focus-outline-offset: var(--rt-border-width-thin);
|
|
3810
|
+
/* Typography */
|
|
3811
|
+
--rt-input-font-size: var(--rt-text-sm);
|
|
3812
|
+
--rt-input-line-height: var(--rt-leading-snug);
|
|
3813
|
+
/* State / motion */
|
|
3814
|
+
--rt-input-disabled-opacity: var(--rt-opacity-disabled);
|
|
3815
|
+
--rt-input-disabled-field-opacity: var(--rt-input-disabled-opacity);
|
|
3816
|
+
--rt-input-color-border-disabled: var(--rt-input-color-border);
|
|
3817
|
+
--rt-input-color-text-disabled: var(--rt-input-color-text);
|
|
3818
|
+
--rt-input-color-placeholder-disabled: var(--rt-input-color-text-placeholder);
|
|
3819
|
+
--rt-input-clear-size: var(--rt-control-height-sm);
|
|
3820
|
+
--rt-input-clear-icon-size: var(--rt-size-4);
|
|
3821
|
+
--rt-input-clear-color: var(--rt-neutral-600);
|
|
3822
|
+
--rt-input-clear-offset-end: 0px;
|
|
3823
|
+
--rt-input-clear-bg: transparent;
|
|
3824
|
+
--rt-input-clear-bg-hover: var(--rt-icon-button-color-bg-hover);
|
|
3825
|
+
--rt-input-clear-radius: var(--rt-radius-md);
|
|
3826
|
+
--rt-input-clear-offset-start: 0px;
|
|
3827
|
+
--rt-input-fill-color-bg-disabled: var(--rt-color-bg-surface-subtle-2);
|
|
3828
|
+
--rt-input-focus-shadow: var(--rt-shadow-focus-ring);
|
|
3829
|
+
--rt-input-focus-shadow-error: var(--rt-shadow-focus-ring-danger);
|
|
3830
|
+
--rt-input-transition: border-color var(--rt-duration-fast) ease, box-shadow var(--rt-duration-fast) ease;
|
|
3831
|
+
/* Textarea overrides (multi-line) */
|
|
3832
|
+
--rt-textarea-min-height-sm: var(--rt-control-textarea-min-height-sm);
|
|
3833
|
+
--rt-textarea-min-height-md: var(--rt-control-textarea-min-height-md);
|
|
3834
|
+
--rt-textarea-min-height-lg: var(--rt-control-textarea-min-height-lg);
|
|
3835
|
+
--rt-textarea-min-height: var(--rt-textarea-min-height-md);
|
|
3836
|
+
--rt-textarea-padding-y: var(--rt-space-sm);
|
|
3837
|
+
--rt-textarea-line-height: var(--rt-leading-snug);
|
|
3838
|
+
/* Dropdown panel (select / multiselect / autocomplete popup). */
|
|
3839
|
+
--rt-input-panel-max-height: var(--rt-control-panel-max-height);
|
|
3840
|
+
/* Icon-button hover-overlay — отдельный namespace (вне input-family),
|
|
3841
|
+
тот же primitive-источник. */
|
|
3842
|
+
--rt-icon-button-color-bg-hover: var(--rt-overlay-black-4);
|
|
3843
|
+
/* Counter (rt-counter) и строка вокруг него (rt-counter-row). Значение
|
|
3844
|
+
набирается табличными цифрами и держит ширину, иначе кнопки прыгают
|
|
3845
|
+
при переходе через десяток. */
|
|
3846
|
+
--rt-counter-gap: var(--rt-space-sm);
|
|
3847
|
+
--rt-counter-value-min-width: var(--rt-size-6);
|
|
3848
|
+
--rt-counter-value-font-size: var(--rt-text-md);
|
|
3849
|
+
--rt-counter-value-color: var(--rt-color-text-primary);
|
|
3850
|
+
--rt-counter-row-gap: var(--rt-space-md);
|
|
3851
|
+
--rt-counter-row-padding-y: var(--rt-space-md);
|
|
3852
|
+
--rt-counter-row-color-border: var(--rt-color-border-subtle);
|
|
3853
|
+
--rt-counter-row-label-font-size: var(--rt-text-md);
|
|
3854
|
+
--rt-counter-row-label-color: var(--rt-color-text-primary);
|
|
3855
|
+
--rt-counter-row-hint-font-size: var(--rt-text-sm);
|
|
3856
|
+
--rt-counter-row-hint-color: var(--rt-color-text-muted);
|
|
3857
|
+
/* Toggle-switch (rt-toggle-switch) — трек, бегунок и иконки состояния. */
|
|
3858
|
+
--rt-toggle-color-track: var(--rt-color-bg-surface-subtle-2);
|
|
3859
|
+
--rt-toggle-color-track-on: var(--rt-color-action-primary);
|
|
3860
|
+
--rt-toggle-color-border: var(--rt-color-border-strong);
|
|
3861
|
+
--rt-toggle-color-thumb: var(--rt-color-bg-surface);
|
|
3862
|
+
--rt-toggle-color-icon: var(--rt-amber-400); /* rt-theme-shared: янтарь иконки один в обеих темах */
|
|
3863
|
+
--rt-toggle-shadow-thumb: var(--rt-shadow-md);
|
|
3864
|
+
/* Рамка off-трека — inset-тенью, а не border: у border своя коробка, и
|
|
3865
|
+
отступы бегунка с иконками пришлось бы пересчитывать на её толщину. */
|
|
3866
|
+
--rt-toggle-shadow-border: inset 0 0 0 var(--rt-border-width-thin) var(--rt-toggle-color-border);
|
|
3867
|
+
/* Группа переключателей видом «чипы»: отдельные пункты с обводкой. Цвета — здесь, на корне:
|
|
3868
|
+
они не зависят от размера группы; размеры объявлены на самом хосте группы. Выбранный пункт
|
|
3869
|
+
в своём виде кита — мягкая марка, обводка у него та же, что у невыбранного. */
|
|
3870
|
+
--rt-toggle-chip-color-border: var(--rt-color-border-default);
|
|
3871
|
+
--rt-toggle-chip-color-text: var(--rt-color-text-muted);
|
|
3872
|
+
--rt-toggle-chip-color-bg-selected: var(--rt-color-action-primary-subtle);
|
|
3626
3873
|
/* Form field (rt-field) — обёртка анатомии поля: label / help / hint / error /
|
|
3627
3874
|
required-маркер / read-only значение. Визуал label+hint в стиле Tailwind
|
|
3628
3875
|
form (мелкий medium label, muted hint). Компоненты потребляют только эти
|
|
@@ -3635,8 +3882,11 @@ html.rt-theme-dark .rt-preset-material {
|
|
|
3635
3882
|
--rt-field-hint-font-size: var(--rt-text-xs);
|
|
3636
3883
|
--rt-field-hint-color: var(--rt-color-text-muted);
|
|
3637
3884
|
--rt-field-error-font-size: var(--rt-text-xs);
|
|
3885
|
+
--rt-field-messages-line-height: normal;
|
|
3886
|
+
--rt-field-messages-padding-top: 0px;
|
|
3638
3887
|
--rt-field-error-color: var(--rt-color-state-danger);
|
|
3639
3888
|
--rt-field-required-color: var(--rt-color-state-danger);
|
|
3889
|
+
--rt-field-required-gap: var(--rt-space-1);
|
|
3640
3890
|
--rt-field-value-font-size: var(--rt-text-sm);
|
|
3641
3891
|
--rt-field-value-color: var(--rt-color-text-primary);
|
|
3642
3892
|
--rt-field-value-empty-color: var(--rt-color-text-muted);
|
|
@@ -3715,36 +3965,135 @@ html.rt-theme-dark .rt-preset-material {
|
|
|
3715
3965
|
--rt-list-filter-line-height: var(--rt-leading-none);
|
|
3716
3966
|
--rt-list-placeholder-min-height: var(--rt-size-60);
|
|
3717
3967
|
--rt-list-placeholder-grow: 1;
|
|
3968
|
+
/* Навигация (rt-page-header). Шапка — отдельная плашка; отступ от краёв
|
|
3969
|
+
страницы задаёт тот, кто её ставит. */
|
|
3970
|
+
--rt-nav-header-padding: var(--rt-space-2) var(--rt-space-4);
|
|
3971
|
+
--rt-nav-header-color-bg: var(--rt-neutral-50);
|
|
3972
|
+
/* Первый уровень. Пункт ряда несёт плашку цвета самой шапки: на общем фоне её
|
|
3973
|
+
не видно, и белым проступает только активный раздел. Наведение красит
|
|
3974
|
+
подпись, а не фон — иначе оно спорит с этой подсветкой. */
|
|
3975
|
+
--rt-nav-item-height: var(--rt-size-6);
|
|
3976
|
+
--rt-nav-item-gap: var(--rt-space-1);
|
|
3977
|
+
--rt-nav-item-padding: var(--rt-space-2) var(--rt-space-2);
|
|
3978
|
+
--rt-nav-item-content-gap: var(--rt-space-2);
|
|
3979
|
+
--rt-nav-item-font-size: var(--rt-text-sm);
|
|
3980
|
+
--rt-nav-item-font-weight: var(--rt-font-weight-semibold);
|
|
3981
|
+
--rt-nav-item-line-height: var(--rt-leading-none);
|
|
3982
|
+
--rt-nav-item-color: var(--rt-color-text-primary);
|
|
3983
|
+
--rt-nav-item-color-hover: var(--rt-color-action-primary);
|
|
3984
|
+
--rt-nav-item-color-pressed: var(--rt-color-action-primary-hover);
|
|
3985
|
+
--rt-nav-item-color-bg: var(--rt-neutral-50);
|
|
3986
|
+
--rt-nav-item-color-border: var(--rt-neutral-50);
|
|
3987
|
+
--rt-nav-item-color-bg-active: var(--rt-color-bg-surface);
|
|
3988
|
+
--rt-nav-item-color-caret: var(--rt-neutral-200);
|
|
3989
|
+
/* Фокус обведён пунктиром: сплошная рамка на плашке пункта неотличима от его
|
|
3990
|
+
же границы. */
|
|
3991
|
+
--rt-nav-color-focus: var(--rt-color-action-primary);
|
|
3992
|
+
/* Недоступный пункт светлее доступного, а не другого оттенка: общий
|
|
3993
|
+
`text-disabled` уходит в сине-стальной и рядом с серой подписью читается
|
|
3994
|
+
как второй цвет, а не как выключенное состояние. */
|
|
3995
|
+
--rt-nav-color-disabled: var(--rt-neutral-300);
|
|
3996
|
+
/* Попап профиля. Подложку берёт у панели навигации, своего здесь — габариты
|
|
3997
|
+
блока пользователя, тень и набор строк: строк четыре, и они читаются как
|
|
3998
|
+
список действий, а не как выпадающее меню. */
|
|
3999
|
+
--rt-profile-menu-min-width: var(--rt-size-60);
|
|
4000
|
+
--rt-profile-menu-padding: var(--rt-space-5);
|
|
4001
|
+
--rt-profile-menu-shadow: var(--rt-shadow-profile-menu);
|
|
4002
|
+
--rt-profile-menu-border-width: var(--rt-border-width-thin);
|
|
4003
|
+
--rt-profile-menu-radius: var(--rt-radius-md);
|
|
4004
|
+
--rt-profile-avatar-size: var(--rt-size-10);
|
|
4005
|
+
--rt-profile-avatar-font-size: var(--rt-text-2xl);
|
|
4006
|
+
--rt-profile-avatar-border-width: var(--rt-border-width-medium);
|
|
4007
|
+
--rt-profile-avatar-radius: var(--rt-radius-full);
|
|
4008
|
+
--rt-profile-item-padding-y: var(--rt-space-4);
|
|
4009
|
+
--rt-profile-item-content-gap: var(--rt-space-2);
|
|
4010
|
+
--rt-profile-item-font-size: var(--rt-text-md);
|
|
4011
|
+
--rt-profile-item-font-weight: var(--rt-font-weight-medium);
|
|
4012
|
+
--rt-profile-item-radius: var(--rt-radius-md);
|
|
4013
|
+
/* Строки выступают за содержимое панели на половину её отступа: так
|
|
4014
|
+
подсветка на наведении не упирается в рамку, а иконка остаётся на одной
|
|
4015
|
+
вертикали с содержимым. Это же число — горизонтальный отступ строки. */
|
|
4016
|
+
--rt-profile-row-inset: var(--rt-space-2);
|
|
4017
|
+
--rt-profile-theme-icon-padding: var(--rt-space-2);
|
|
4018
|
+
--rt-profile-theme-icon-radius: var(--rt-radius-full);
|
|
4019
|
+
/* Габариты панели второго уровня: ширина считается числом колонок, поэтому
|
|
4020
|
+
колонка, промежуток и внутренний отступ — токены, из которых панель
|
|
4021
|
+
складывает свою ширину. По вертикали отступ крупнее: у первой группы над
|
|
4022
|
+
заголовком нет ничего, и панель иначе начинается впритык. */
|
|
4023
|
+
--rt-nav-panel-column-width: var(--rt-size-60);
|
|
4024
|
+
--rt-nav-panel-column-gap: var(--rt-space-5);
|
|
4025
|
+
--rt-nav-panel-padding: var(--rt-space-4);
|
|
4026
|
+
--rt-nav-panel-padding-y: var(--rt-space-md);
|
|
4027
|
+
--rt-nav-panel-group-gap: var(--rt-space-8);
|
|
4028
|
+
--rt-nav-panel-item-gap: var(--rt-space-0-5);
|
|
4029
|
+
--rt-nav-panel-item-height: var(--rt-size-6);
|
|
4030
|
+
--rt-nav-panel-item-padding: var(--rt-space-1) var(--rt-space-2);
|
|
4031
|
+
--rt-nav-panel-columns: 1;
|
|
4032
|
+
--rt-nav-panel-color-bg: var(--rt-color-bg-surface);
|
|
4033
|
+
--rt-nav-panel-color-border: var(--rt-neutral-200);
|
|
4034
|
+
--rt-nav-panel-shadow: var(--rt-shadow-nav-panel);
|
|
4035
|
+
/* Второй уровень набран легче первого: ряд разделов держит вес, а полтора
|
|
4036
|
+
десятка пунктов под ним читаются построчно. */
|
|
4037
|
+
--rt-nav-panel-item-font-size: var(--rt-text-sm);
|
|
4038
|
+
--rt-nav-panel-item-font-weight: var(--rt-font-weight-medium);
|
|
4039
|
+
--rt-nav-panel-item-content-gap: var(--rt-space-1);
|
|
4040
|
+
--rt-nav-panel-item-color: var(--rt-neutral-600);
|
|
4041
|
+
--rt-nav-panel-item-color-bg-hover: var(--rt-neutral-50);
|
|
4042
|
+
--rt-nav-panel-item-color-active: var(--rt-color-text-inverse);
|
|
4043
|
+
--rt-nav-panel-item-color-bg-active: var(--rt-color-action-primary);
|
|
4044
|
+
--rt-nav-panel-group-font-size: var(--rt-text-xs);
|
|
4045
|
+
--rt-nav-panel-group-font-weight: var(--rt-font-weight-medium);
|
|
4046
|
+
/* Заголовок группы светлее пункта, и оба берут порог контраста на белой панели.
|
|
4047
|
+
Отношения обеих пар считает проверка тёмной темы; таблица замера — на странице
|
|
4048
|
+
«Colors» витрины. */
|
|
4049
|
+
--rt-nav-panel-group-color: var(--rt-neutral-600);
|
|
4050
|
+
--rt-nav-panel-group-content-gap: var(--rt-space-2);
|
|
4051
|
+
/* Маркер непросмотренного. Точка стоит в потоке следом за подписью — и в ряду
|
|
4052
|
+
разделов, и в панели, и на узком экране: место ей даёт общий зазор
|
|
4053
|
+
содержимого пункта. */
|
|
4054
|
+
--rt-nav-caret-size: var(--rt-size-3);
|
|
4055
|
+
--rt-nav-marker-size: var(--rt-size-1);
|
|
4056
|
+
--rt-nav-marker-color: var(--rt-color-state-danger);
|
|
4057
|
+
/* Вкладки (rt-tabs). Полоса выбранной вкладки переезжает на новую, а панель
|
|
4058
|
+
меняется сдвигом по направлению перехода. Сдвиг панели в своём виде кита выключен
|
|
4059
|
+
нулевой длительностью: содержимое вкладки сменяется на месте, как раньше. */
|
|
4060
|
+
--rt-tabs-indicator-duration: var(--rt-duration-base);
|
|
4061
|
+
--rt-tabs-indicator-easing: ease-out;
|
|
4062
|
+
--rt-tabs-panel-duration: 0ms;
|
|
4063
|
+
--rt-tabs-panel-easing: ease-out;
|
|
4064
|
+
/* Прокрутка полосы вкладок стрелками и к выбранной вкладке. */
|
|
4065
|
+
--rt-tabs-scroll-duration: var(--rt-duration-base);
|
|
4066
|
+
--rt-tabs-scroll-easing: ease-out;
|
|
3718
4067
|
/* Подложки */
|
|
3719
4068
|
--rt-color-bg-page: var(--rt-mat-neutral-5);
|
|
3720
|
-
--rt-color-bg-surface: var(--
|
|
4069
|
+
--rt-color-bg-surface: var(--rt-sys-surface, var(--rt-mat-neutral-0));
|
|
3721
4070
|
--rt-color-bg-surface-subtle: var(--rt-mat-overlay-black-4);
|
|
3722
|
-
--rt-color-bg-surface-subtle-2: var(--
|
|
4071
|
+
--rt-color-bg-surface-subtle-2: var(--rt-field-filled-container-color, var(--rt-sys-surface-variant, var(--rt-mat-neutral-15)));
|
|
3723
4072
|
--rt-color-bg-hover: var(--rt-mat-neutral-10);
|
|
3724
4073
|
--rt-color-bg-subtle: var(--rt-mat-neutral-10);
|
|
3725
4074
|
--rt-color-bg-overlay: var(--rt-mat-overlay-black-32);
|
|
3726
|
-
--rt-color-bg-inverse: var(--
|
|
3727
|
-
--rt-color-bg-nav: var(--
|
|
4075
|
+
--rt-color-bg-inverse: var(--rt-sys-inverse-surface, var(--rt-mat-neutral-100));
|
|
4076
|
+
--rt-color-bg-nav: var(--rt-sys-primary, var(--rt-mat-navy-100)); /* марка первого кита: обвязка тёмная в обоих наборах */
|
|
3728
4077
|
--rt-color-bg-page-auth: var(--rt-mat-neutral-5);
|
|
3729
4078
|
--rt-color-bg-surface-auth-card: var(--rt-mat-neutral-0);
|
|
3730
4079
|
/* Текст */
|
|
3731
|
-
--rt-color-text-primary: var(--
|
|
4080
|
+
--rt-color-text-primary: var(--rt-sys-on-surface, var(--rt-mat-neutral-100));
|
|
3732
4081
|
--rt-color-text-muted: var(--rt-mat-neutral-60);
|
|
3733
|
-
--rt-color-text-disabled: color-mix(in srgb, var(--
|
|
3734
|
-
--rt-color-text-inverse: var(--
|
|
3735
|
-
--rt-color-text-link: var(--
|
|
3736
|
-
--rt-color-text-link-hover: color-mix(in srgb, var(--
|
|
4082
|
+
--rt-color-text-disabled: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-100)) 38%, transparent);
|
|
4083
|
+
--rt-color-text-inverse: var(--rt-sys-inverse-on-surface, var(--rt-mat-neutral-0));
|
|
4084
|
+
--rt-color-text-link: var(--rt-sys-primary, var(--rt-mat-blue-100));
|
|
4085
|
+
--rt-color-text-link-hover: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 90%, #000);
|
|
3737
4086
|
/* Рамки */
|
|
3738
4087
|
--rt-color-border-default: var(--rt-mat-neutral-25);
|
|
3739
4088
|
--rt-color-border-strong: var(--rt-mat-neutral-30);
|
|
3740
4089
|
--rt-color-border-subtle: var(--rt-mat-neutral-20);
|
|
3741
4090
|
--rt-color-border-focus: var(--rt-mat-blue-40); /* кольцо фокуса первого кита светлее его действия */
|
|
3742
4091
|
/* Действие: подложка, наведение, нажатие, подпись на них и цвет роли на поверхности */
|
|
3743
|
-
--rt-color-action-primary: var(--
|
|
3744
|
-
--rt-color-action-primary-hover: color-mix(in srgb, var(--
|
|
3745
|
-
--rt-color-action-primary-active: color-mix(in srgb, var(--
|
|
3746
|
-
--rt-color-action-primary-subtle: color-mix(in srgb, var(--
|
|
3747
|
-
--rt-color-action-primary-soft: color-mix(in srgb, var(--
|
|
4092
|
+
--rt-color-action-primary: var(--rt-sys-primary, var(--rt-mat-blue-100));
|
|
4093
|
+
--rt-color-action-primary-hover: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 90%, #000);
|
|
4094
|
+
--rt-color-action-primary-active: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 80%, #000);
|
|
4095
|
+
--rt-color-action-primary-subtle: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 8%, transparent);
|
|
4096
|
+
--rt-color-action-primary-soft: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 24%, transparent);
|
|
3748
4097
|
--rt-color-action-on-primary: var(--rt-mat-neutral-0);
|
|
3749
4098
|
--rt-color-action-secondary: var(--rt-mat-neutral-60);
|
|
3750
4099
|
--rt-color-action-secondary-hover: var(--rt-mat-neutral-hover);
|
|
@@ -3759,15 +4108,15 @@ html.rt-theme-dark .rt-preset-material {
|
|
|
3759
4108
|
--rt-color-action-warning-hover: var(--rt-mat-orange-hover);
|
|
3760
4109
|
--rt-color-action-warning-active: var(--rt-mat-orange-active);
|
|
3761
4110
|
--rt-color-action-on-warning: var(--rt-mat-neutral-0);
|
|
3762
|
-
--rt-color-action-danger: var(--
|
|
3763
|
-
--rt-color-action-danger-hover: color-mix(in srgb, var(--
|
|
3764
|
-
--rt-color-action-danger-active: color-mix(in srgb, var(--
|
|
4111
|
+
--rt-color-action-danger: var(--rt-sys-error, var(--rt-mat-red-100));
|
|
4112
|
+
--rt-color-action-danger-hover: color-mix(in srgb, var(--rt-sys-error, var(--rt-mat-red-100)) 90%, #000);
|
|
4113
|
+
--rt-color-action-danger-active: color-mix(in srgb, var(--rt-sys-error, var(--rt-mat-red-100)) 80%, #000);
|
|
3765
4114
|
--rt-color-action-on-danger: var(--rt-mat-neutral-0);
|
|
3766
|
-
--rt-color-action-info: var(--
|
|
3767
|
-
--rt-color-action-info-hover: color-mix(in srgb, var(--
|
|
3768
|
-
--rt-color-action-info-active: color-mix(in srgb, var(--
|
|
4115
|
+
--rt-color-action-info: var(--rt-sys-primary, var(--rt-mat-blue-100));
|
|
4116
|
+
--rt-color-action-info-hover: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 90%, #000);
|
|
4117
|
+
--rt-color-action-info-active: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 80%, #000);
|
|
3769
4118
|
--rt-color-action-on-info: var(--rt-mat-neutral-0);
|
|
3770
|
-
--rt-color-action-disabled: color-mix(in srgb, var(--
|
|
4119
|
+
--rt-color-action-disabled: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-100)) 12%, transparent);
|
|
3771
4120
|
/* Состояния: цвет роли и её светлая подложка */
|
|
3772
4121
|
--rt-color-state-success: var(--rt-mat-green-100);
|
|
3773
4122
|
--rt-color-state-success-bg: var(--rt-mat-green-10);
|
|
@@ -3775,11 +4124,11 @@ html.rt-theme-dark .rt-preset-material {
|
|
|
3775
4124
|
--rt-color-state-warning: var(--rt-mat-orange-100);
|
|
3776
4125
|
--rt-color-state-warning-bg: var(--rt-mat-orange-5);
|
|
3777
4126
|
--rt-color-state-warning-text: var(--rt-mat-orange-100);
|
|
3778
|
-
--rt-color-state-danger: var(--
|
|
3779
|
-
--rt-color-state-danger-bg: var(--
|
|
3780
|
-
--rt-color-state-error-text: var(--
|
|
3781
|
-
--rt-color-state-info: var(--
|
|
3782
|
-
--rt-color-state-info-bg: var(--
|
|
4127
|
+
--rt-color-state-danger: var(--rt-sys-error, var(--rt-mat-red-100));
|
|
4128
|
+
--rt-color-state-danger-bg: var(--rt-sys-error-container, var(--rt-mat-red-10));
|
|
4129
|
+
--rt-color-state-error-text: var(--rt-sys-error, var(--rt-mat-red-100));
|
|
4130
|
+
--rt-color-state-info: var(--rt-sys-primary, var(--rt-mat-blue-100));
|
|
4131
|
+
--rt-color-state-info-bg: var(--rt-sys-primary-container, var(--rt-mat-blue-20));
|
|
3783
4132
|
/* Рельса шагов */
|
|
3784
4133
|
--rt-color-stepper-track: var(--rt-mat-neutral-30);
|
|
3785
4134
|
/* Заглушка загрузки: краски те же, что набор давал ей прежде через подложку и
|
|
@@ -3787,27 +4136,27 @@ html.rt-theme-dark .rt-preset-material {
|
|
|
3787
4136
|
--rt-color-skeleton-base: var(--rt-mat-neutral-10);
|
|
3788
4137
|
--rt-color-skeleton-wave: var(--rt-mat-neutral-25);
|
|
3789
4138
|
/* Шапка таблицы первого кита залита тем же цветом, что залитое поле Material. */
|
|
3790
|
-
--rt-color-table-head-bg: var(--
|
|
4139
|
+
--rt-color-table-head-bg: var(--rt-field-filled-container-color, var(--rt-sys-surface-variant, var(--rt-mat-overlay-black-4)));
|
|
3791
4140
|
/* Черта снизу у залитого поля Material — цвет on-surface-variant темы. */
|
|
3792
|
-
--rt-color-field-fill-underline: var(--
|
|
4141
|
+
--rt-color-field-fill-underline: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-30));
|
|
3793
4142
|
/* Поиск списка первого кита — обведённое или залитое поле Material при плотности −1:
|
|
3794
4143
|
52px, скругление 4px, рамка цвета outline темы, внутри прозрачное. Ступени 52px нет, высота собрана из ступени
|
|
3795
4144
|
xl без ступени 1. */
|
|
3796
4145
|
--rt-list-search-height: calc(var(--rt-control-height-xl) - var(--rt-space-1));
|
|
3797
4146
|
--rt-list-search-radius: var(--rt-radius-sm);
|
|
3798
|
-
--rt-list-search-color-border: var(--
|
|
4147
|
+
--rt-list-search-color-border: var(--rt-sys-outline, var(--rt-mat-neutral-25));
|
|
3799
4148
|
--rt-list-search-color-bg: transparent;
|
|
3800
4149
|
--rt-list-search-width: calc(var(--rt-size-64) + var(--rt-size-24));
|
|
3801
4150
|
--rt-list-search-padding-x: calc(var(--rt-space-2) + var(--rt-space-1) - var(--rt-border-width-thin));
|
|
3802
4151
|
--rt-list-search-gap: var(--rt-space-4);
|
|
3803
4152
|
--rt-list-search-font-size: var(--rt-text-md);
|
|
3804
4153
|
--rt-list-search-icon-size: var(--rt-size-6);
|
|
3805
|
-
--rt-list-search-icon-color: var(--
|
|
3806
|
-
--rt-list-search-color-placeholder: var(--
|
|
4154
|
+
--rt-list-search-icon-color: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-60));
|
|
4155
|
+
--rt-list-search-color-placeholder: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-60));
|
|
3807
4156
|
/* Панель настройки колонок первого кита: плашка колонки залита цветом выбранного пункта
|
|
3808
4157
|
Material, значки — в тоне on-surface-variant темы. Сняты с панели на витрине первого кита. */
|
|
3809
|
-
--rt-list-settings-item-bg: var(--
|
|
3810
|
-
--rt-list-settings-icon-color: var(--
|
|
4158
|
+
--rt-list-settings-item-bg: var(--rt-option-selected-state-layer-color, var(--rt-sys-secondary-container, var(--rt-mat-neutral-10)));
|
|
4159
|
+
--rt-list-settings-icon-color: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-60));
|
|
3811
4160
|
/* Кнопки действий панели списка — mat-mini-fab первого кита: круг без заливки с подъёмом 6,
|
|
3812
4161
|
под указателем подъём 8 и тёмный значок вместо серого; значок 24px, промежуток 16px. */
|
|
3813
4162
|
--rt-list-action-gap: var(--rt-space-md);
|
|
@@ -3818,16 +4167,16 @@ html.rt-theme-dark .rt-preset-material {
|
|
|
3818
4167
|
--rt-list-action-icon-size: var(--rt-size-6);
|
|
3819
4168
|
--rt-list-action-color: var(--rt-mat-neutral-60);
|
|
3820
4169
|
--rt-list-table-icon-size: var(--rt-size-6);
|
|
3821
|
-
--rt-list-table-icon-color: var(--
|
|
3822
|
-
--rt-list-table-head-divider-color: var(--
|
|
4170
|
+
--rt-list-table-icon-color: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-60));
|
|
4171
|
+
--rt-list-table-head-divider-color: var(--rt-sys-outline, var(--rt-mat-neutral-30));
|
|
3823
4172
|
--rt-list-table-button-size: calc(var(--rt-size-8) + var(--rt-size-1));
|
|
3824
4173
|
--rt-list-table-button-radius: var(--rt-radius-full);
|
|
3825
4174
|
--rt-list-copy-button-size: var(--rt-size-6);
|
|
3826
4175
|
--rt-list-copy-button-radius: var(--rt-mat-radius-5);
|
|
3827
4176
|
--rt-list-settings-item-radius: var(--rt-mat-radius-5);
|
|
3828
4177
|
--rt-list-filter-line-height: var(--rt-size-6);
|
|
3829
|
-
--rt-list-copy-button-bg: var(--
|
|
3830
|
-
--rt-list-copy-button-bg-hover: var(--
|
|
4178
|
+
--rt-list-copy-button-bg: var(--rt-fab-small-container-color, var(--rt-mat-neutral-0));
|
|
4179
|
+
--rt-list-copy-button-bg-hover: var(--rt-fab-small-container-color, var(--rt-mat-neutral-0));
|
|
3831
4180
|
--rt-list-copy-button-color: var(--rt-mat-neutral-60);
|
|
3832
4181
|
--rt-list-action-color-hover: var(--rt-mat-neutral-100);
|
|
3833
4182
|
--rt-list-action-color-bg-hover: transparent;
|
|
@@ -3881,23 +4230,23 @@ html.rt-theme-dark .rt-preset-material {
|
|
|
3881
4230
|
скруглён только снизу, подсказка 4px без тени. Тень — подъём 2 Material, как у mat-menu и
|
|
3882
4231
|
mat-select. */
|
|
3883
4232
|
--rt-overlay-menu-radius: var(--rt-mat-radius-4);
|
|
3884
|
-
--rt-overlay-menu-shadow: var(--
|
|
4233
|
+
--rt-overlay-menu-shadow: var(--rt-sys-level2, var(--rt-mat-shadow-level-2));
|
|
3885
4234
|
--rt-overlay-select-radius: 0 0 var(--rt-mat-radius-4) var(--rt-mat-radius-4);
|
|
3886
|
-
--rt-overlay-select-shadow: var(--
|
|
4235
|
+
--rt-overlay-select-shadow: var(--rt-sys-level2, var(--rt-mat-shadow-level-2));
|
|
3887
4236
|
--rt-overlay-tooltip-radius: var(--rt-mat-radius-4);
|
|
3888
4237
|
--rt-overlay-tooltip-shadow: none;
|
|
3889
4238
|
/* Меню строки — mat-menu первого кита: фон контейнера Material, отступ 8px сверху и снизу,
|
|
3890
4239
|
подписи весом 500, опасный пункт красным первого кита. Выпадающий список — mat-select: пункты
|
|
3891
4240
|
16px, выбранный — фон текста 12% без жирного и с галочкой. */
|
|
3892
|
-
--rt-overlay-menu-bg: var(--
|
|
4241
|
+
--rt-overlay-menu-bg: var(--rt-menu-container-color, var(--rt-mat-neutral-0));
|
|
3893
4242
|
--rt-overlay-menu-padding-y: var(--rt-space-sm);
|
|
3894
4243
|
--rt-overlay-menu-item-weight: var(--rt-font-weight-medium);
|
|
3895
4244
|
--rt-overlay-menu-danger-color: var(--rt-mat-red-100);
|
|
3896
4245
|
--rt-overlay-select-option-font-size: var(--rt-text-md);
|
|
3897
|
-
--rt-overlay-select-selected-bg: color-mix(in srgb, var(--
|
|
4246
|
+
--rt-overlay-select-selected-bg: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-100)) 12%, transparent);
|
|
3898
4247
|
--rt-overlay-select-selected-weight: var(--rt-font-weight-regular);
|
|
3899
4248
|
--rt-overlay-select-check-display: inline-flex;
|
|
3900
|
-
--rt-overlay-menu-current-bg: color-mix(in srgb, var(--
|
|
4249
|
+
--rt-overlay-menu-current-bg: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-100)) 12%, transparent);
|
|
3901
4250
|
--rt-overlay-menu-min-width: var(--rt-mat-menu-min-width);
|
|
3902
4251
|
--rt-overlay-menu-item-min-height: var(--rt-size-12);
|
|
3903
4252
|
--rt-overlay-menu-item-padding-y: 0px;
|
|
@@ -3911,6 +4260,78 @@ html.rt-theme-dark .rt-preset-material {
|
|
|
3911
4260
|
--rt-icon-button-disabled-opacity: 1;
|
|
3912
4261
|
--rt-icon-button-disabled-color: var(--rt-color-text-disabled);
|
|
3913
4262
|
--rt-icon-button-disabled-fill: 0%;
|
|
4263
|
+
/* Обведённое поле Material: прозрачное, рамка цвета outline темы, фокус — рамка в два
|
|
4264
|
+
пикселя цветом марки без внешнего кольца. Вторая линия рамки фокуса — внутренняя тень. */
|
|
4265
|
+
--rt-input-color-bg: transparent;
|
|
4266
|
+
--rt-input-color-border: var(--rt-sys-outline, var(--rt-mat-neutral-60));
|
|
4267
|
+
--rt-input-focus-shadow: inset 0 0 0 1px var(--rt-input-color-border-focus);
|
|
4268
|
+
--rt-input-focus-shadow-error: inset 0 0 0 1px var(--rt-input-color-border-error);
|
|
4269
|
+
/* Размер поля Material: 56 px при плотности 0 и на 4 px меньше за каждый шаг, значение 16 px.
|
|
4270
|
+
Шаг приходит свойством `--rt-input-density`, которое ставит атрибут `data-rt-density` на поле
|
|
4271
|
+
или на любом предке, — правила в `_density.scss`. Высота считается здесь, на узле с признаком
|
|
4272
|
+
набора, из унаследованного шага: атрибут на корне приложения доходит и до поля со своим
|
|
4273
|
+
признаком набора. Своя высота приложения — `--rt-input-height-app` на любом предке; она сильнее
|
|
4274
|
+
плотности и не перебивается набором на самом поле. */
|
|
4275
|
+
--rt-input-height-md: var(
|
|
4276
|
+
--rt-input-height-app,
|
|
4277
|
+
calc(var(--rt-size-12) + var(--rt-size-2) - var(--rt-input-density) * var(--rt-size-1))
|
|
4278
|
+
);
|
|
4279
|
+
--rt-input-height: var(--rt-input-height-md);
|
|
4280
|
+
/* Крупная ступень `size` не ниже средней высоты набора: 48 px кита под набором вышли бы ниже
|
|
4281
|
+
поля по умолчанию (56 px). Малая ступень остаётся ступенью кита — по ней стоят поиск списка и
|
|
4282
|
+
правка на месте. */
|
|
4283
|
+
--rt-input-height-lg: max(var(--rt-control-height-lg), var(--rt-input-height-md));
|
|
4284
|
+
--rt-input-font-size: var(--rt-text-md);
|
|
4285
|
+
/* Подсказка, подпись в покое, значки и стрелка поля — цвета on-surface-variant темы Material,
|
|
4286
|
+
каретка — цвета марки, значки 24 px, как у поля Material. Без темы Material цвета прежние. */
|
|
4287
|
+
--rt-input-color-text-placeholder: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-60));
|
|
4288
|
+
--rt-input-icon-color: var(--rt-sys-on-surface-variant, var(--rt-neutral-600));
|
|
4289
|
+
--rt-input-icon-size: var(--rt-size-6);
|
|
4290
|
+
--rt-input-caret-color: var(--rt-color-action-primary);
|
|
4291
|
+
/* Отключённое поле Material: поле не тускнеет целиком — рамка on-surface 12%, текст и
|
|
4292
|
+
подсказка on-surface 38%. */
|
|
4293
|
+
--rt-input-disabled-field-opacity: 1;
|
|
4294
|
+
--rt-input-color-border-disabled: var(--rt-color-action-disabled);
|
|
4295
|
+
--rt-input-color-text-disabled: var(--rt-color-text-disabled);
|
|
4296
|
+
--rt-input-color-placeholder-disabled: var(--rt-color-text-disabled);
|
|
4297
|
+
--rt-input-color-bg-disabled: transparent;
|
|
4298
|
+
/* Крестик очистки — крестик первого кита: 19 px, значок 12 px, серый, в 8 px от края поля и в
|
|
4299
|
+
4 px от текста. Отступ от края считается от правого поля в 4 px, как у поля Material с крестиком. */
|
|
4300
|
+
--rt-input-clear-size: 19px;
|
|
4301
|
+
--rt-input-clear-icon-size: var(--rt-size-3);
|
|
4302
|
+
--rt-input-clear-color: var(--rt-mat-neutral-60);
|
|
4303
|
+
--rt-input-clear-offset-end: calc(var(--rt-space-2) - var(--rt-space-1));
|
|
4304
|
+
--rt-input-clear-offset-start: calc(var(--rt-space-1) - var(--rt-input-gap));
|
|
4305
|
+
--rt-input-fill-color-bg-disabled: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-100)) 4%, transparent);
|
|
4306
|
+
--rt-input-clear-bg: var(--rt-mat-neutral-25);
|
|
4307
|
+
--rt-input-clear-bg-hover: var(--rt-input-clear-bg);
|
|
4308
|
+
--rt-input-clear-radius: var(--rt-radius-full);
|
|
4309
|
+
/* Залитое поле Material: рамки сверху и по бокам нет, только черта снизу; в фокусе черта
|
|
4310
|
+
вдвое толще цветом марки, у недействительного поля — цветом ошибки. */
|
|
4311
|
+
--rt-input-fill-edge: 0px;
|
|
4312
|
+
--rt-input-fill-focus-shadow: inset 0 -1px 0 0 var(--rt-input-color-border-focus);
|
|
4313
|
+
--rt-input-fill-focus-shadow-error: inset 0 -1px 0 0 var(--rt-input-color-border-error);
|
|
4314
|
+
/* Звёздочка обязательного поля — цвета подписи, как у поля Material; цвет ошибки она берёт
|
|
4315
|
+
только у недействительного поля, правилом самого поля. */
|
|
4316
|
+
--rt-field-required-color: currentcolor;
|
|
4317
|
+
--rt-field-required-gap: 0px;
|
|
4318
|
+
/* Строка под полем — строка подсказки Material: 16 px высотой и 4 px над ней. */
|
|
4319
|
+
--rt-field-messages-line-height: var(--rt-size-4);
|
|
4320
|
+
--rt-field-messages-padding-top: var(--rt-space-1);
|
|
4321
|
+
/* Группа переключателей видом «чипы» — фильтр-чип Material: обводка цвета outline темы,
|
|
4322
|
+
выбранный залит secondary-container, отключённый — текст 38 %, обводка 12 %. Обводку и цвет
|
|
4323
|
+
текста у выбранного задаёт лист чипов: своё имя каждому стоило бы по разу на тему, набор и
|
|
4324
|
+
островок, а начальный пакет приложения-образца стоит у порога. */
|
|
4325
|
+
--rt-toggle-chip-color-border: var(--rt-sys-outline, var(--rt-mat-neutral-60));
|
|
4326
|
+
--rt-toggle-chip-color-text: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-70));
|
|
4327
|
+
--rt-toggle-chip-color-bg-selected: var(--rt-sys-secondary-container, var(--rt-mat-neutral-25));
|
|
4328
|
+
/* Вкладки: полоса и панель движутся, как у вкладок Material, — полсекунды с той же кривой. */
|
|
4329
|
+
--rt-tabs-indicator-duration: var(--rt-duration-slower);
|
|
4330
|
+
--rt-tabs-indicator-easing: cubic-bezier(0.35, 0, 0.25, 1);
|
|
4331
|
+
--rt-tabs-panel-duration: var(--rt-duration-slower);
|
|
4332
|
+
--rt-tabs-panel-easing: cubic-bezier(0.35, 0, 0.25, 1);
|
|
4333
|
+
--rt-tabs-scroll-duration: var(--rt-duration-slower);
|
|
4334
|
+
--rt-tabs-scroll-easing: cubic-bezier(0.35, 0, 0.25, 1);
|
|
3914
4335
|
/* The Material colours of the page are resolved dark under the kit's dark theme. */
|
|
3915
4336
|
color-scheme: dark;
|
|
3916
4337
|
/* Background — тёплый графит */
|
|
@@ -3961,6 +4382,14 @@ html.rt-theme-dark .rt-preset-material {
|
|
|
3961
4382
|
--rt-pagination-field-color-bg: var(--rt-input-color-bg);
|
|
3962
4383
|
--rt-pagination-field-color-text: var(--rt-input-color-text);
|
|
3963
4384
|
--rt-input-icon-color: var(--rt-neutral-600);
|
|
4385
|
+
--rt-input-clear-color: var(--rt-neutral-600);
|
|
4386
|
+
--rt-input-clear-bg: transparent;
|
|
4387
|
+
--rt-input-clear-bg-hover: var(--rt-icon-button-color-bg-hover);
|
|
4388
|
+
--rt-toggle-chip-color-border: var(--rt-color-border-default);
|
|
4389
|
+
--rt-toggle-chip-color-text: var(--rt-color-text-muted);
|
|
4390
|
+
--rt-toggle-chip-color-bg-selected: var(--rt-color-action-primary-subtle);
|
|
4391
|
+
--rt-input-fill-color-bg-disabled: var(--rt-color-bg-surface-subtle-2);
|
|
4392
|
+
--rt-input-color-text-placeholder: var(--rt-color-text-muted);
|
|
3964
4393
|
/* Stepper — в dark рельса уходит от яркого синего к приглушённому серо-синему
|
|
3965
4394
|
(текущий шаг остаётся янтарным из light-семантики). */
|
|
3966
4395
|
--rt-color-stepper-track: var(--rt-navy-600);
|
|
@@ -4049,42 +4478,49 @@ html.rt-theme-dark .rt-preset-material {
|
|
|
4049
4478
|
/* Skeleton — заглушка загрузки: покой и гребень волны. */
|
|
4050
4479
|
--rt-color-skeleton-base: var(--rt-charcoal-950);
|
|
4051
4480
|
--rt-color-skeleton-wave: var(--rt-charcoal-border);
|
|
4052
|
-
--rt-color-bg-surface: var(--
|
|
4053
|
-
--rt-color-bg-surface-subtle-2: var(--
|
|
4054
|
-
--rt-color-bg-inverse: var(--
|
|
4055
|
-
--rt-color-text-primary: var(--
|
|
4056
|
-
--rt-color-text-disabled: color-mix(in srgb, var(--
|
|
4057
|
-
--rt-color-text-inverse: var(--
|
|
4058
|
-
--rt-color-text-link: var(--
|
|
4481
|
+
--rt-color-bg-surface: var(--rt-sys-surface, var(--rt-charcoal-800));
|
|
4482
|
+
--rt-color-bg-surface-subtle-2: var(--rt-field-filled-container-color, var(--rt-sys-surface-variant, var(--rt-charcoal-950)));
|
|
4483
|
+
--rt-color-bg-inverse: var(--rt-sys-inverse-surface, var(--rt-neutral-0));
|
|
4484
|
+
--rt-color-text-primary: var(--rt-sys-on-surface, var(--rt-neutral-50));
|
|
4485
|
+
--rt-color-text-disabled: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-0)) 38%, transparent);
|
|
4486
|
+
--rt-color-text-inverse: var(--rt-sys-inverse-on-surface, var(--rt-neutral-900));
|
|
4487
|
+
--rt-color-text-link: var(--rt-sys-primary, var(--rt-brand-300));
|
|
4059
4488
|
--rt-color-border-subtle: var(--rt-mat-dark-20);
|
|
4060
|
-
--rt-color-action-disabled: color-mix(in srgb, var(--
|
|
4061
|
-
--rt-color-state-danger-bg: var(--
|
|
4062
|
-
--rt-color-state-error-text: var(--
|
|
4063
|
-
--rt-color-state-info-bg: var(--
|
|
4064
|
-
--rt-color-table-head-bg: var(
|
|
4065
|
-
|
|
4066
|
-
|
|
4067
|
-
);
|
|
4068
|
-
--rt-color-field-fill-underline: var(--mat-sys-on-surface-variant, var(--rt-color-border-strong));
|
|
4069
|
-
--rt-list-search-color-border: var(--mat-sys-outline, var(--rt-input-color-border));
|
|
4489
|
+
--rt-color-action-disabled: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-0)) 12%, transparent);
|
|
4490
|
+
--rt-color-state-danger-bg: var(--rt-sys-error-container, color-mix(in srgb, var(--rt-danger-500) 12%, transparent));
|
|
4491
|
+
--rt-color-state-error-text: var(--rt-sys-error, var(--rt-danger-500));
|
|
4492
|
+
--rt-color-state-info-bg: var(--rt-sys-primary-container, color-mix(in srgb, var(--rt-info-500) 12%, transparent));
|
|
4493
|
+
--rt-color-table-head-bg: var(--rt-field-filled-container-color, var(--rt-sys-surface-variant, var(--rt-color-bg-surface-subtle)));
|
|
4494
|
+
--rt-color-field-fill-underline: var(--rt-sys-on-surface-variant, var(--rt-color-border-strong));
|
|
4495
|
+
--rt-list-search-color-border: var(--rt-sys-outline, var(--rt-input-color-border));
|
|
4070
4496
|
--rt-list-search-color-bg: transparent;
|
|
4071
|
-
--rt-list-search-icon-color: var(--
|
|
4072
|
-
--rt-list-search-color-placeholder: var(--
|
|
4073
|
-
--rt-list-settings-item-bg: var(--
|
|
4074
|
-
--rt-list-settings-icon-color: var(--
|
|
4075
|
-
--rt-list-table-icon-color: var(--
|
|
4076
|
-
--rt-list-table-head-divider-color: var(--
|
|
4077
|
-
--rt-list-copy-button-bg: var(--
|
|
4078
|
-
--rt-list-copy-button-bg-hover: var(--
|
|
4497
|
+
--rt-list-search-icon-color: var(--rt-sys-on-surface-variant, var(--rt-input-icon-color));
|
|
4498
|
+
--rt-list-search-color-placeholder: var(--rt-sys-on-surface-variant, var(--rt-input-color-text-placeholder));
|
|
4499
|
+
--rt-list-settings-item-bg: var(--rt-option-selected-state-layer-color, var(--rt-sys-secondary-container, var(--rt-color-bg-subtle)));
|
|
4500
|
+
--rt-list-settings-icon-color: var(--rt-sys-on-surface-variant, var(--rt-color-text-muted));
|
|
4501
|
+
--rt-list-table-icon-color: var(--rt-sys-on-surface-variant, var(--rt-color-text-primary));
|
|
4502
|
+
--rt-list-table-head-divider-color: var(--rt-sys-outline, var(--rt-color-border-strong));
|
|
4503
|
+
--rt-list-copy-button-bg: var(--rt-fab-small-container-color, transparent);
|
|
4504
|
+
--rt-list-copy-button-bg-hover: var(--rt-fab-small-container-color, var(--rt-icon-button-color-bg-hover));
|
|
4079
4505
|
--rt-pagination-box-color-border: var(--rt-mat-dark-30);
|
|
4080
4506
|
--rt-pagination-box-color-text: var(--rt-mat-neutral-40);
|
|
4081
4507
|
--rt-pagination-box-current-color-bg: var(--rt-mat-neutral-40);
|
|
4082
4508
|
--rt-pagination-box-current-color-text: var(--rt-mat-neutral-0);
|
|
4083
4509
|
--rt-pagination-box-current-color-border: var(--rt-mat-dark-30);
|
|
4084
4510
|
--rt-pagination-arrow-shadow: inset 0 0 0 var(--rt-border-width-thin) var(--rt-mat-dark-30);
|
|
4085
|
-
--rt-overlay-menu-bg: var(--
|
|
4086
|
-
--rt-overlay-select-selected-bg: color-mix(in srgb, var(--
|
|
4087
|
-
--rt-overlay-menu-current-bg: color-mix(in srgb, var(--
|
|
4511
|
+
--rt-overlay-menu-bg: var(--rt-menu-container-color, var(--rt-color-bg-surface));
|
|
4512
|
+
--rt-overlay-select-selected-bg: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-0)) 12%, transparent);
|
|
4513
|
+
--rt-overlay-menu-current-bg: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-0)) 12%, transparent);
|
|
4514
|
+
--rt-input-color-border: var(--rt-sys-outline, var(--rt-charcoal-border));
|
|
4515
|
+
--rt-input-color-text-placeholder: var(--rt-sys-on-surface-variant, var(--rt-color-text-muted));
|
|
4516
|
+
--rt-input-icon-color: var(--rt-sys-on-surface-variant, var(--rt-neutral-600));
|
|
4517
|
+
--rt-input-clear-color: var(--rt-mat-neutral-40);
|
|
4518
|
+
--rt-input-fill-color-bg-disabled: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-0)) 4%, transparent);
|
|
4519
|
+
--rt-input-clear-bg: var(--rt-mat-neutral-70);
|
|
4520
|
+
--rt-input-clear-bg-hover: var(--rt-input-clear-bg);
|
|
4521
|
+
--rt-toggle-chip-color-border: var(--rt-sys-outline, var(--rt-mat-neutral-40));
|
|
4522
|
+
--rt-toggle-chip-color-text: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-25));
|
|
4523
|
+
--rt-toggle-chip-color-bg-selected: var(--rt-sys-secondary-container, var(--rt-mat-neutral-70));
|
|
4088
4524
|
}
|
|
4089
4525
|
@media (pointer: coarse) {
|
|
4090
4526
|
[data-theme=dark] [data-preset=material],
|
|
@@ -4327,6 +4763,11 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
4327
4763
|
--rt-input-icon-color: var(--rt-neutral-600);
|
|
4328
4764
|
--rt-input-icon-size: var(--rt-size-4);
|
|
4329
4765
|
--rt-input-gap: var(--rt-space-sm);
|
|
4766
|
+
--rt-input-caret-color: auto;
|
|
4767
|
+
--rt-input-min-width: 0px;
|
|
4768
|
+
--rt-input-fill-edge: var(--rt-input-border-width);
|
|
4769
|
+
--rt-input-fill-focus-shadow: var(--rt-input-focus-shadow);
|
|
4770
|
+
--rt-input-fill-focus-shadow-error: var(--rt-input-focus-shadow-error);
|
|
4330
4771
|
/* Sizes (single-line height scale) */
|
|
4331
4772
|
--rt-input-height-sm: var(--rt-control-height-sm);
|
|
4332
4773
|
--rt-input-height-md: var(--rt-control-height-md);
|
|
@@ -4368,6 +4809,19 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
4368
4809
|
--rt-input-line-height: var(--rt-leading-snug);
|
|
4369
4810
|
/* State / motion */
|
|
4370
4811
|
--rt-input-disabled-opacity: var(--rt-opacity-disabled);
|
|
4812
|
+
--rt-input-disabled-field-opacity: var(--rt-input-disabled-opacity);
|
|
4813
|
+
--rt-input-color-border-disabled: var(--rt-input-color-border);
|
|
4814
|
+
--rt-input-color-text-disabled: var(--rt-input-color-text);
|
|
4815
|
+
--rt-input-color-placeholder-disabled: var(--rt-input-color-text-placeholder);
|
|
4816
|
+
--rt-input-clear-size: var(--rt-control-height-sm);
|
|
4817
|
+
--rt-input-clear-icon-size: var(--rt-size-4);
|
|
4818
|
+
--rt-input-clear-color: var(--rt-neutral-600);
|
|
4819
|
+
--rt-input-clear-offset-end: 0px;
|
|
4820
|
+
--rt-input-clear-bg: transparent;
|
|
4821
|
+
--rt-input-clear-bg-hover: var(--rt-icon-button-color-bg-hover);
|
|
4822
|
+
--rt-input-clear-radius: var(--rt-radius-md);
|
|
4823
|
+
--rt-input-clear-offset-start: 0px;
|
|
4824
|
+
--rt-input-fill-color-bg-disabled: var(--rt-color-bg-surface-subtle-2);
|
|
4371
4825
|
--rt-input-focus-shadow: var(--rt-shadow-focus-ring);
|
|
4372
4826
|
--rt-input-focus-shadow-error: var(--rt-shadow-focus-ring-danger);
|
|
4373
4827
|
--rt-input-transition: border-color var(--rt-duration-fast) ease, box-shadow var(--rt-duration-fast) ease;
|
|
@@ -4398,104 +4852,21 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
4398
4852
|
--rt-counter-row-hint-font-size: var(--rt-text-sm);
|
|
4399
4853
|
--rt-counter-row-hint-color: var(--rt-color-text-muted);
|
|
4400
4854
|
/* Toggle-switch (rt-toggle-switch) — трек, бегунок и иконки состояния. */
|
|
4401
|
-
--rt-toggle-color-track: var(--rt-color-bg-surface-subtle-2);
|
|
4402
|
-
--rt-toggle-color-track-on: var(--rt-color-action-primary);
|
|
4403
|
-
--rt-toggle-color-border: var(--rt-color-border-strong);
|
|
4404
|
-
--rt-toggle-color-thumb: var(--rt-color-bg-surface);
|
|
4405
|
-
--rt-toggle-color-icon: var(--rt-amber-400); /* rt-theme-shared: янтарь иконки один в обеих темах */
|
|
4406
|
-
--rt-toggle-shadow-thumb: var(--rt-shadow-md);
|
|
4407
|
-
/* Рамка off-трека — inset-тенью, а не border: у border своя коробка, и
|
|
4408
|
-
отступы бегунка с иконками пришлось бы пересчитывать на её толщину. */
|
|
4409
|
-
--rt-toggle-shadow-border: inset 0 0 0 var(--rt-border-width-thin) var(--rt-toggle-color-border);
|
|
4410
|
-
/*
|
|
4411
|
-
|
|
4412
|
-
|
|
4413
|
-
--rt-
|
|
4414
|
-
|
|
4415
|
-
|
|
4416
|
-
подпись, а не фон — иначе оно спорит с этой подсветкой. */
|
|
4417
|
-
--rt-nav-item-height: var(--rt-size-6);
|
|
4418
|
-
--rt-nav-item-gap: var(--rt-space-1);
|
|
4419
|
-
--rt-nav-item-padding: var(--rt-space-2) var(--rt-space-2);
|
|
4420
|
-
--rt-nav-item-content-gap: var(--rt-space-2);
|
|
4421
|
-
--rt-nav-item-font-size: var(--rt-text-sm);
|
|
4422
|
-
--rt-nav-item-font-weight: var(--rt-font-weight-semibold);
|
|
4423
|
-
--rt-nav-item-line-height: var(--rt-leading-none);
|
|
4424
|
-
--rt-nav-item-color: var(--rt-color-text-primary);
|
|
4425
|
-
--rt-nav-item-color-hover: var(--rt-color-action-primary);
|
|
4426
|
-
--rt-nav-item-color-pressed: var(--rt-color-action-primary-hover);
|
|
4427
|
-
--rt-nav-item-color-bg: var(--rt-neutral-50);
|
|
4428
|
-
--rt-nav-item-color-border: var(--rt-neutral-50);
|
|
4429
|
-
--rt-nav-item-color-bg-active: var(--rt-color-bg-surface);
|
|
4430
|
-
--rt-nav-item-color-caret: var(--rt-neutral-200);
|
|
4431
|
-
/* Фокус обведён пунктиром: сплошная рамка на плашке пункта неотличима от его
|
|
4432
|
-
же границы. */
|
|
4433
|
-
--rt-nav-color-focus: var(--rt-color-action-primary);
|
|
4434
|
-
/* Недоступный пункт светлее доступного, а не другого оттенка: общий
|
|
4435
|
-
`text-disabled` уходит в сине-стальной и рядом с серой подписью читается
|
|
4436
|
-
как второй цвет, а не как выключенное состояние. */
|
|
4437
|
-
--rt-nav-color-disabled: var(--rt-neutral-300);
|
|
4438
|
-
/* Попап профиля. Подложку берёт у панели навигации, своего здесь — габариты
|
|
4439
|
-
блока пользователя, тень и набор строк: строк четыре, и они читаются как
|
|
4440
|
-
список действий, а не как выпадающее меню. */
|
|
4441
|
-
--rt-profile-menu-min-width: var(--rt-size-60);
|
|
4442
|
-
--rt-profile-menu-padding: var(--rt-space-5);
|
|
4443
|
-
--rt-profile-menu-shadow: var(--rt-shadow-profile-menu);
|
|
4444
|
-
--rt-profile-menu-border-width: var(--rt-border-width-thin);
|
|
4445
|
-
--rt-profile-menu-radius: var(--rt-radius-md);
|
|
4446
|
-
--rt-profile-avatar-size: var(--rt-size-10);
|
|
4447
|
-
--rt-profile-avatar-font-size: var(--rt-text-2xl);
|
|
4448
|
-
--rt-profile-avatar-border-width: var(--rt-border-width-medium);
|
|
4449
|
-
--rt-profile-avatar-radius: var(--rt-radius-full);
|
|
4450
|
-
--rt-profile-item-padding-y: var(--rt-space-4);
|
|
4451
|
-
--rt-profile-item-content-gap: var(--rt-space-2);
|
|
4452
|
-
--rt-profile-item-font-size: var(--rt-text-md);
|
|
4453
|
-
--rt-profile-item-font-weight: var(--rt-font-weight-medium);
|
|
4454
|
-
--rt-profile-item-radius: var(--rt-radius-md);
|
|
4455
|
-
/* Строки выступают за содержимое панели на половину её отступа: так
|
|
4456
|
-
подсветка на наведении не упирается в рамку, а иконка остаётся на одной
|
|
4457
|
-
вертикали с содержимым. Это же число — горизонтальный отступ строки. */
|
|
4458
|
-
--rt-profile-row-inset: var(--rt-space-2);
|
|
4459
|
-
--rt-profile-theme-icon-padding: var(--rt-space-2);
|
|
4460
|
-
--rt-profile-theme-icon-radius: var(--rt-radius-full);
|
|
4461
|
-
/* Габариты панели второго уровня: ширина считается числом колонок, поэтому
|
|
4462
|
-
колонка, промежуток и внутренний отступ — токены, из которых панель
|
|
4463
|
-
складывает свою ширину. По вертикали отступ крупнее: у первой группы над
|
|
4464
|
-
заголовком нет ничего, и панель иначе начинается впритык. */
|
|
4465
|
-
--rt-nav-panel-column-width: var(--rt-size-60);
|
|
4466
|
-
--rt-nav-panel-column-gap: var(--rt-space-5);
|
|
4467
|
-
--rt-nav-panel-padding: var(--rt-space-4);
|
|
4468
|
-
--rt-nav-panel-padding-y: var(--rt-space-md);
|
|
4469
|
-
--rt-nav-panel-group-gap: var(--rt-space-8);
|
|
4470
|
-
--rt-nav-panel-item-gap: var(--rt-space-0-5);
|
|
4471
|
-
--rt-nav-panel-item-height: var(--rt-size-6);
|
|
4472
|
-
--rt-nav-panel-item-padding: var(--rt-space-1) var(--rt-space-2);
|
|
4473
|
-
--rt-nav-panel-columns: 1;
|
|
4474
|
-
--rt-nav-panel-color-bg: var(--rt-color-bg-surface);
|
|
4475
|
-
--rt-nav-panel-color-border: var(--rt-neutral-200);
|
|
4476
|
-
--rt-nav-panel-shadow: var(--rt-shadow-nav-panel);
|
|
4477
|
-
/* Второй уровень набран легче первого: ряд разделов держит вес, а полтора
|
|
4478
|
-
десятка пунктов под ним читаются построчно. */
|
|
4479
|
-
--rt-nav-panel-item-font-size: var(--rt-text-sm);
|
|
4480
|
-
--rt-nav-panel-item-font-weight: var(--rt-font-weight-medium);
|
|
4481
|
-
--rt-nav-panel-item-content-gap: var(--rt-space-1);
|
|
4482
|
-
--rt-nav-panel-item-color: var(--rt-neutral-600);
|
|
4483
|
-
--rt-nav-panel-item-color-bg-hover: var(--rt-neutral-50);
|
|
4484
|
-
--rt-nav-panel-item-color-active: var(--rt-color-text-inverse);
|
|
4485
|
-
--rt-nav-panel-item-color-bg-active: var(--rt-color-action-primary);
|
|
4486
|
-
--rt-nav-panel-group-font-size: var(--rt-text-xs);
|
|
4487
|
-
--rt-nav-panel-group-font-weight: var(--rt-font-weight-medium);
|
|
4488
|
-
/* Заголовок группы светлее пункта, и оба берут порог контраста на белой панели.
|
|
4489
|
-
Отношения обеих пар считает проверка тёмной темы; таблица замера — на странице
|
|
4490
|
-
«Colors» витрины. */
|
|
4491
|
-
--rt-nav-panel-group-color: var(--rt-neutral-600);
|
|
4492
|
-
--rt-nav-panel-group-content-gap: var(--rt-space-2);
|
|
4493
|
-
/* Маркер непросмотренного. Точка стоит в потоке следом за подписью — и в ряду
|
|
4494
|
-
разделов, и в панели, и на узком экране: место ей даёт общий зазор
|
|
4495
|
-
содержимого пункта. */
|
|
4496
|
-
--rt-nav-caret-size: var(--rt-size-3);
|
|
4497
|
-
--rt-nav-marker-size: var(--rt-size-1);
|
|
4498
|
-
--rt-nav-marker-color: var(--rt-color-state-danger);
|
|
4855
|
+
--rt-toggle-color-track: var(--rt-color-bg-surface-subtle-2);
|
|
4856
|
+
--rt-toggle-color-track-on: var(--rt-color-action-primary);
|
|
4857
|
+
--rt-toggle-color-border: var(--rt-color-border-strong);
|
|
4858
|
+
--rt-toggle-color-thumb: var(--rt-color-bg-surface);
|
|
4859
|
+
--rt-toggle-color-icon: var(--rt-amber-400); /* rt-theme-shared: янтарь иконки один в обеих темах */
|
|
4860
|
+
--rt-toggle-shadow-thumb: var(--rt-shadow-md);
|
|
4861
|
+
/* Рамка off-трека — inset-тенью, а не border: у border своя коробка, и
|
|
4862
|
+
отступы бегунка с иконками пришлось бы пересчитывать на её толщину. */
|
|
4863
|
+
--rt-toggle-shadow-border: inset 0 0 0 var(--rt-border-width-thin) var(--rt-toggle-color-border);
|
|
4864
|
+
/* Группа переключателей видом «чипы»: отдельные пункты с обводкой. Цвета — здесь, на корне:
|
|
4865
|
+
они не зависят от размера группы; размеры объявлены на самом хосте группы. Выбранный пункт
|
|
4866
|
+
в своём виде кита — мягкая марка, обводка у него та же, что у невыбранного. */
|
|
4867
|
+
--rt-toggle-chip-color-border: var(--rt-color-border-default);
|
|
4868
|
+
--rt-toggle-chip-color-text: var(--rt-color-text-muted);
|
|
4869
|
+
--rt-toggle-chip-color-bg-selected: var(--rt-color-action-primary-subtle);
|
|
4499
4870
|
/* Form field (rt-field) — обёртка анатомии поля: label / help / hint / error /
|
|
4500
4871
|
required-маркер / read-only значение. Визуал label+hint в стиле Tailwind
|
|
4501
4872
|
form (мелкий medium label, muted hint). Компоненты потребляют только эти
|
|
@@ -4508,8 +4879,11 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
4508
4879
|
--rt-field-hint-font-size: var(--rt-text-xs);
|
|
4509
4880
|
--rt-field-hint-color: var(--rt-color-text-muted);
|
|
4510
4881
|
--rt-field-error-font-size: var(--rt-text-xs);
|
|
4882
|
+
--rt-field-messages-line-height: normal;
|
|
4883
|
+
--rt-field-messages-padding-top: 0px;
|
|
4511
4884
|
--rt-field-error-color: var(--rt-color-state-danger);
|
|
4512
4885
|
--rt-field-required-color: var(--rt-color-state-danger);
|
|
4886
|
+
--rt-field-required-gap: var(--rt-space-1);
|
|
4513
4887
|
--rt-field-value-font-size: var(--rt-text-sm);
|
|
4514
4888
|
--rt-field-value-color: var(--rt-color-text-primary);
|
|
4515
4889
|
--rt-field-value-empty-color: var(--rt-color-text-muted);
|
|
@@ -4588,36 +4962,135 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
4588
4962
|
--rt-list-filter-line-height: var(--rt-leading-none);
|
|
4589
4963
|
--rt-list-placeholder-min-height: var(--rt-size-60);
|
|
4590
4964
|
--rt-list-placeholder-grow: 1;
|
|
4965
|
+
/* Навигация (rt-page-header). Шапка — отдельная плашка; отступ от краёв
|
|
4966
|
+
страницы задаёт тот, кто её ставит. */
|
|
4967
|
+
--rt-nav-header-padding: var(--rt-space-2) var(--rt-space-4);
|
|
4968
|
+
--rt-nav-header-color-bg: var(--rt-neutral-50);
|
|
4969
|
+
/* Первый уровень. Пункт ряда несёт плашку цвета самой шапки: на общем фоне её
|
|
4970
|
+
не видно, и белым проступает только активный раздел. Наведение красит
|
|
4971
|
+
подпись, а не фон — иначе оно спорит с этой подсветкой. */
|
|
4972
|
+
--rt-nav-item-height: var(--rt-size-6);
|
|
4973
|
+
--rt-nav-item-gap: var(--rt-space-1);
|
|
4974
|
+
--rt-nav-item-padding: var(--rt-space-2) var(--rt-space-2);
|
|
4975
|
+
--rt-nav-item-content-gap: var(--rt-space-2);
|
|
4976
|
+
--rt-nav-item-font-size: var(--rt-text-sm);
|
|
4977
|
+
--rt-nav-item-font-weight: var(--rt-font-weight-semibold);
|
|
4978
|
+
--rt-nav-item-line-height: var(--rt-leading-none);
|
|
4979
|
+
--rt-nav-item-color: var(--rt-color-text-primary);
|
|
4980
|
+
--rt-nav-item-color-hover: var(--rt-color-action-primary);
|
|
4981
|
+
--rt-nav-item-color-pressed: var(--rt-color-action-primary-hover);
|
|
4982
|
+
--rt-nav-item-color-bg: var(--rt-neutral-50);
|
|
4983
|
+
--rt-nav-item-color-border: var(--rt-neutral-50);
|
|
4984
|
+
--rt-nav-item-color-bg-active: var(--rt-color-bg-surface);
|
|
4985
|
+
--rt-nav-item-color-caret: var(--rt-neutral-200);
|
|
4986
|
+
/* Фокус обведён пунктиром: сплошная рамка на плашке пункта неотличима от его
|
|
4987
|
+
же границы. */
|
|
4988
|
+
--rt-nav-color-focus: var(--rt-color-action-primary);
|
|
4989
|
+
/* Недоступный пункт светлее доступного, а не другого оттенка: общий
|
|
4990
|
+
`text-disabled` уходит в сине-стальной и рядом с серой подписью читается
|
|
4991
|
+
как второй цвет, а не как выключенное состояние. */
|
|
4992
|
+
--rt-nav-color-disabled: var(--rt-neutral-300);
|
|
4993
|
+
/* Попап профиля. Подложку берёт у панели навигации, своего здесь — габариты
|
|
4994
|
+
блока пользователя, тень и набор строк: строк четыре, и они читаются как
|
|
4995
|
+
список действий, а не как выпадающее меню. */
|
|
4996
|
+
--rt-profile-menu-min-width: var(--rt-size-60);
|
|
4997
|
+
--rt-profile-menu-padding: var(--rt-space-5);
|
|
4998
|
+
--rt-profile-menu-shadow: var(--rt-shadow-profile-menu);
|
|
4999
|
+
--rt-profile-menu-border-width: var(--rt-border-width-thin);
|
|
5000
|
+
--rt-profile-menu-radius: var(--rt-radius-md);
|
|
5001
|
+
--rt-profile-avatar-size: var(--rt-size-10);
|
|
5002
|
+
--rt-profile-avatar-font-size: var(--rt-text-2xl);
|
|
5003
|
+
--rt-profile-avatar-border-width: var(--rt-border-width-medium);
|
|
5004
|
+
--rt-profile-avatar-radius: var(--rt-radius-full);
|
|
5005
|
+
--rt-profile-item-padding-y: var(--rt-space-4);
|
|
5006
|
+
--rt-profile-item-content-gap: var(--rt-space-2);
|
|
5007
|
+
--rt-profile-item-font-size: var(--rt-text-md);
|
|
5008
|
+
--rt-profile-item-font-weight: var(--rt-font-weight-medium);
|
|
5009
|
+
--rt-profile-item-radius: var(--rt-radius-md);
|
|
5010
|
+
/* Строки выступают за содержимое панели на половину её отступа: так
|
|
5011
|
+
подсветка на наведении не упирается в рамку, а иконка остаётся на одной
|
|
5012
|
+
вертикали с содержимым. Это же число — горизонтальный отступ строки. */
|
|
5013
|
+
--rt-profile-row-inset: var(--rt-space-2);
|
|
5014
|
+
--rt-profile-theme-icon-padding: var(--rt-space-2);
|
|
5015
|
+
--rt-profile-theme-icon-radius: var(--rt-radius-full);
|
|
5016
|
+
/* Габариты панели второго уровня: ширина считается числом колонок, поэтому
|
|
5017
|
+
колонка, промежуток и внутренний отступ — токены, из которых панель
|
|
5018
|
+
складывает свою ширину. По вертикали отступ крупнее: у первой группы над
|
|
5019
|
+
заголовком нет ничего, и панель иначе начинается впритык. */
|
|
5020
|
+
--rt-nav-panel-column-width: var(--rt-size-60);
|
|
5021
|
+
--rt-nav-panel-column-gap: var(--rt-space-5);
|
|
5022
|
+
--rt-nav-panel-padding: var(--rt-space-4);
|
|
5023
|
+
--rt-nav-panel-padding-y: var(--rt-space-md);
|
|
5024
|
+
--rt-nav-panel-group-gap: var(--rt-space-8);
|
|
5025
|
+
--rt-nav-panel-item-gap: var(--rt-space-0-5);
|
|
5026
|
+
--rt-nav-panel-item-height: var(--rt-size-6);
|
|
5027
|
+
--rt-nav-panel-item-padding: var(--rt-space-1) var(--rt-space-2);
|
|
5028
|
+
--rt-nav-panel-columns: 1;
|
|
5029
|
+
--rt-nav-panel-color-bg: var(--rt-color-bg-surface);
|
|
5030
|
+
--rt-nav-panel-color-border: var(--rt-neutral-200);
|
|
5031
|
+
--rt-nav-panel-shadow: var(--rt-shadow-nav-panel);
|
|
5032
|
+
/* Второй уровень набран легче первого: ряд разделов держит вес, а полтора
|
|
5033
|
+
десятка пунктов под ним читаются построчно. */
|
|
5034
|
+
--rt-nav-panel-item-font-size: var(--rt-text-sm);
|
|
5035
|
+
--rt-nav-panel-item-font-weight: var(--rt-font-weight-medium);
|
|
5036
|
+
--rt-nav-panel-item-content-gap: var(--rt-space-1);
|
|
5037
|
+
--rt-nav-panel-item-color: var(--rt-neutral-600);
|
|
5038
|
+
--rt-nav-panel-item-color-bg-hover: var(--rt-neutral-50);
|
|
5039
|
+
--rt-nav-panel-item-color-active: var(--rt-color-text-inverse);
|
|
5040
|
+
--rt-nav-panel-item-color-bg-active: var(--rt-color-action-primary);
|
|
5041
|
+
--rt-nav-panel-group-font-size: var(--rt-text-xs);
|
|
5042
|
+
--rt-nav-panel-group-font-weight: var(--rt-font-weight-medium);
|
|
5043
|
+
/* Заголовок группы светлее пункта, и оба берут порог контраста на белой панели.
|
|
5044
|
+
Отношения обеих пар считает проверка тёмной темы; таблица замера — на странице
|
|
5045
|
+
«Colors» витрины. */
|
|
5046
|
+
--rt-nav-panel-group-color: var(--rt-neutral-600);
|
|
5047
|
+
--rt-nav-panel-group-content-gap: var(--rt-space-2);
|
|
5048
|
+
/* Маркер непросмотренного. Точка стоит в потоке следом за подписью — и в ряду
|
|
5049
|
+
разделов, и в панели, и на узком экране: место ей даёт общий зазор
|
|
5050
|
+
содержимого пункта. */
|
|
5051
|
+
--rt-nav-caret-size: var(--rt-size-3);
|
|
5052
|
+
--rt-nav-marker-size: var(--rt-size-1);
|
|
5053
|
+
--rt-nav-marker-color: var(--rt-color-state-danger);
|
|
5054
|
+
/* Вкладки (rt-tabs). Полоса выбранной вкладки переезжает на новую, а панель
|
|
5055
|
+
меняется сдвигом по направлению перехода. Сдвиг панели в своём виде кита выключен
|
|
5056
|
+
нулевой длительностью: содержимое вкладки сменяется на месте, как раньше. */
|
|
5057
|
+
--rt-tabs-indicator-duration: var(--rt-duration-base);
|
|
5058
|
+
--rt-tabs-indicator-easing: ease-out;
|
|
5059
|
+
--rt-tabs-panel-duration: 0ms;
|
|
5060
|
+
--rt-tabs-panel-easing: ease-out;
|
|
5061
|
+
/* Прокрутка полосы вкладок стрелками и к выбранной вкладке. */
|
|
5062
|
+
--rt-tabs-scroll-duration: var(--rt-duration-base);
|
|
5063
|
+
--rt-tabs-scroll-easing: ease-out;
|
|
4591
5064
|
/* Подложки */
|
|
4592
5065
|
--rt-color-bg-page: var(--rt-mat-neutral-5);
|
|
4593
|
-
--rt-color-bg-surface: var(--
|
|
5066
|
+
--rt-color-bg-surface: var(--rt-sys-surface, var(--rt-mat-neutral-0));
|
|
4594
5067
|
--rt-color-bg-surface-subtle: var(--rt-mat-overlay-black-4);
|
|
4595
|
-
--rt-color-bg-surface-subtle-2: var(--
|
|
5068
|
+
--rt-color-bg-surface-subtle-2: var(--rt-field-filled-container-color, var(--rt-sys-surface-variant, var(--rt-mat-neutral-15)));
|
|
4596
5069
|
--rt-color-bg-hover: var(--rt-mat-neutral-10);
|
|
4597
5070
|
--rt-color-bg-subtle: var(--rt-mat-neutral-10);
|
|
4598
5071
|
--rt-color-bg-overlay: var(--rt-mat-overlay-black-32);
|
|
4599
|
-
--rt-color-bg-inverse: var(--
|
|
4600
|
-
--rt-color-bg-nav: var(--
|
|
5072
|
+
--rt-color-bg-inverse: var(--rt-sys-inverse-surface, var(--rt-mat-neutral-100));
|
|
5073
|
+
--rt-color-bg-nav: var(--rt-sys-primary, var(--rt-mat-navy-100)); /* марка первого кита: обвязка тёмная в обоих наборах */
|
|
4601
5074
|
--rt-color-bg-page-auth: var(--rt-mat-neutral-5);
|
|
4602
5075
|
--rt-color-bg-surface-auth-card: var(--rt-mat-neutral-0);
|
|
4603
5076
|
/* Текст */
|
|
4604
|
-
--rt-color-text-primary: var(--
|
|
5077
|
+
--rt-color-text-primary: var(--rt-sys-on-surface, var(--rt-mat-neutral-100));
|
|
4605
5078
|
--rt-color-text-muted: var(--rt-mat-neutral-60);
|
|
4606
|
-
--rt-color-text-disabled: color-mix(in srgb, var(--
|
|
4607
|
-
--rt-color-text-inverse: var(--
|
|
4608
|
-
--rt-color-text-link: var(--
|
|
4609
|
-
--rt-color-text-link-hover: color-mix(in srgb, var(--
|
|
5079
|
+
--rt-color-text-disabled: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-100)) 38%, transparent);
|
|
5080
|
+
--rt-color-text-inverse: var(--rt-sys-inverse-on-surface, var(--rt-mat-neutral-0));
|
|
5081
|
+
--rt-color-text-link: var(--rt-sys-primary, var(--rt-mat-blue-100));
|
|
5082
|
+
--rt-color-text-link-hover: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 90%, #000);
|
|
4610
5083
|
/* Рамки */
|
|
4611
5084
|
--rt-color-border-default: var(--rt-mat-neutral-25);
|
|
4612
5085
|
--rt-color-border-strong: var(--rt-mat-neutral-30);
|
|
4613
5086
|
--rt-color-border-subtle: var(--rt-mat-neutral-20);
|
|
4614
5087
|
--rt-color-border-focus: var(--rt-mat-blue-40); /* кольцо фокуса первого кита светлее его действия */
|
|
4615
5088
|
/* Действие: подложка, наведение, нажатие, подпись на них и цвет роли на поверхности */
|
|
4616
|
-
--rt-color-action-primary: var(--
|
|
4617
|
-
--rt-color-action-primary-hover: color-mix(in srgb, var(--
|
|
4618
|
-
--rt-color-action-primary-active: color-mix(in srgb, var(--
|
|
4619
|
-
--rt-color-action-primary-subtle: color-mix(in srgb, var(--
|
|
4620
|
-
--rt-color-action-primary-soft: color-mix(in srgb, var(--
|
|
5089
|
+
--rt-color-action-primary: var(--rt-sys-primary, var(--rt-mat-blue-100));
|
|
5090
|
+
--rt-color-action-primary-hover: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 90%, #000);
|
|
5091
|
+
--rt-color-action-primary-active: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 80%, #000);
|
|
5092
|
+
--rt-color-action-primary-subtle: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 8%, transparent);
|
|
5093
|
+
--rt-color-action-primary-soft: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 24%, transparent);
|
|
4621
5094
|
--rt-color-action-on-primary: var(--rt-mat-neutral-0);
|
|
4622
5095
|
--rt-color-action-secondary: var(--rt-mat-neutral-60);
|
|
4623
5096
|
--rt-color-action-secondary-hover: var(--rt-mat-neutral-hover);
|
|
@@ -4632,15 +5105,15 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
4632
5105
|
--rt-color-action-warning-hover: var(--rt-mat-orange-hover);
|
|
4633
5106
|
--rt-color-action-warning-active: var(--rt-mat-orange-active);
|
|
4634
5107
|
--rt-color-action-on-warning: var(--rt-mat-neutral-0);
|
|
4635
|
-
--rt-color-action-danger: var(--
|
|
4636
|
-
--rt-color-action-danger-hover: color-mix(in srgb, var(--
|
|
4637
|
-
--rt-color-action-danger-active: color-mix(in srgb, var(--
|
|
5108
|
+
--rt-color-action-danger: var(--rt-sys-error, var(--rt-mat-red-100));
|
|
5109
|
+
--rt-color-action-danger-hover: color-mix(in srgb, var(--rt-sys-error, var(--rt-mat-red-100)) 90%, #000);
|
|
5110
|
+
--rt-color-action-danger-active: color-mix(in srgb, var(--rt-sys-error, var(--rt-mat-red-100)) 80%, #000);
|
|
4638
5111
|
--rt-color-action-on-danger: var(--rt-mat-neutral-0);
|
|
4639
|
-
--rt-color-action-info: var(--
|
|
4640
|
-
--rt-color-action-info-hover: color-mix(in srgb, var(--
|
|
4641
|
-
--rt-color-action-info-active: color-mix(in srgb, var(--
|
|
5112
|
+
--rt-color-action-info: var(--rt-sys-primary, var(--rt-mat-blue-100));
|
|
5113
|
+
--rt-color-action-info-hover: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 90%, #000);
|
|
5114
|
+
--rt-color-action-info-active: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 80%, #000);
|
|
4642
5115
|
--rt-color-action-on-info: var(--rt-mat-neutral-0);
|
|
4643
|
-
--rt-color-action-disabled: color-mix(in srgb, var(--
|
|
5116
|
+
--rt-color-action-disabled: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-100)) 12%, transparent);
|
|
4644
5117
|
/* Состояния: цвет роли и её светлая подложка */
|
|
4645
5118
|
--rt-color-state-success: var(--rt-mat-green-100);
|
|
4646
5119
|
--rt-color-state-success-bg: var(--rt-mat-green-10);
|
|
@@ -4648,11 +5121,11 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
4648
5121
|
--rt-color-state-warning: var(--rt-mat-orange-100);
|
|
4649
5122
|
--rt-color-state-warning-bg: var(--rt-mat-orange-5);
|
|
4650
5123
|
--rt-color-state-warning-text: var(--rt-mat-orange-100);
|
|
4651
|
-
--rt-color-state-danger: var(--
|
|
4652
|
-
--rt-color-state-danger-bg: var(--
|
|
4653
|
-
--rt-color-state-error-text: var(--
|
|
4654
|
-
--rt-color-state-info: var(--
|
|
4655
|
-
--rt-color-state-info-bg: var(--
|
|
5124
|
+
--rt-color-state-danger: var(--rt-sys-error, var(--rt-mat-red-100));
|
|
5125
|
+
--rt-color-state-danger-bg: var(--rt-sys-error-container, var(--rt-mat-red-10));
|
|
5126
|
+
--rt-color-state-error-text: var(--rt-sys-error, var(--rt-mat-red-100));
|
|
5127
|
+
--rt-color-state-info: var(--rt-sys-primary, var(--rt-mat-blue-100));
|
|
5128
|
+
--rt-color-state-info-bg: var(--rt-sys-primary-container, var(--rt-mat-blue-20));
|
|
4656
5129
|
/* Рельса шагов */
|
|
4657
5130
|
--rt-color-stepper-track: var(--rt-mat-neutral-30);
|
|
4658
5131
|
/* Заглушка загрузки: краски те же, что набор давал ей прежде через подложку и
|
|
@@ -4660,27 +5133,27 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
4660
5133
|
--rt-color-skeleton-base: var(--rt-mat-neutral-10);
|
|
4661
5134
|
--rt-color-skeleton-wave: var(--rt-mat-neutral-25);
|
|
4662
5135
|
/* Шапка таблицы первого кита залита тем же цветом, что залитое поле Material. */
|
|
4663
|
-
--rt-color-table-head-bg: var(--
|
|
5136
|
+
--rt-color-table-head-bg: var(--rt-field-filled-container-color, var(--rt-sys-surface-variant, var(--rt-mat-overlay-black-4)));
|
|
4664
5137
|
/* Черта снизу у залитого поля Material — цвет on-surface-variant темы. */
|
|
4665
|
-
--rt-color-field-fill-underline: var(--
|
|
5138
|
+
--rt-color-field-fill-underline: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-30));
|
|
4666
5139
|
/* Поиск списка первого кита — обведённое или залитое поле Material при плотности −1:
|
|
4667
5140
|
52px, скругление 4px, рамка цвета outline темы, внутри прозрачное. Ступени 52px нет, высота собрана из ступени
|
|
4668
5141
|
xl без ступени 1. */
|
|
4669
5142
|
--rt-list-search-height: calc(var(--rt-control-height-xl) - var(--rt-space-1));
|
|
4670
5143
|
--rt-list-search-radius: var(--rt-radius-sm);
|
|
4671
|
-
--rt-list-search-color-border: var(--
|
|
5144
|
+
--rt-list-search-color-border: var(--rt-sys-outline, var(--rt-mat-neutral-25));
|
|
4672
5145
|
--rt-list-search-color-bg: transparent;
|
|
4673
5146
|
--rt-list-search-width: calc(var(--rt-size-64) + var(--rt-size-24));
|
|
4674
5147
|
--rt-list-search-padding-x: calc(var(--rt-space-2) + var(--rt-space-1) - var(--rt-border-width-thin));
|
|
4675
5148
|
--rt-list-search-gap: var(--rt-space-4);
|
|
4676
5149
|
--rt-list-search-font-size: var(--rt-text-md);
|
|
4677
5150
|
--rt-list-search-icon-size: var(--rt-size-6);
|
|
4678
|
-
--rt-list-search-icon-color: var(--
|
|
4679
|
-
--rt-list-search-color-placeholder: var(--
|
|
5151
|
+
--rt-list-search-icon-color: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-60));
|
|
5152
|
+
--rt-list-search-color-placeholder: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-60));
|
|
4680
5153
|
/* Панель настройки колонок первого кита: плашка колонки залита цветом выбранного пункта
|
|
4681
5154
|
Material, значки — в тоне on-surface-variant темы. Сняты с панели на витрине первого кита. */
|
|
4682
|
-
--rt-list-settings-item-bg: var(--
|
|
4683
|
-
--rt-list-settings-icon-color: var(--
|
|
5155
|
+
--rt-list-settings-item-bg: var(--rt-option-selected-state-layer-color, var(--rt-sys-secondary-container, var(--rt-mat-neutral-10)));
|
|
5156
|
+
--rt-list-settings-icon-color: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-60));
|
|
4684
5157
|
/* Кнопки действий панели списка — mat-mini-fab первого кита: круг без заливки с подъёмом 6,
|
|
4685
5158
|
под указателем подъём 8 и тёмный значок вместо серого; значок 24px, промежуток 16px. */
|
|
4686
5159
|
--rt-list-action-gap: var(--rt-space-md);
|
|
@@ -4691,16 +5164,16 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
4691
5164
|
--rt-list-action-icon-size: var(--rt-size-6);
|
|
4692
5165
|
--rt-list-action-color: var(--rt-mat-neutral-60);
|
|
4693
5166
|
--rt-list-table-icon-size: var(--rt-size-6);
|
|
4694
|
-
--rt-list-table-icon-color: var(--
|
|
4695
|
-
--rt-list-table-head-divider-color: var(--
|
|
5167
|
+
--rt-list-table-icon-color: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-60));
|
|
5168
|
+
--rt-list-table-head-divider-color: var(--rt-sys-outline, var(--rt-mat-neutral-30));
|
|
4696
5169
|
--rt-list-table-button-size: calc(var(--rt-size-8) + var(--rt-size-1));
|
|
4697
5170
|
--rt-list-table-button-radius: var(--rt-radius-full);
|
|
4698
5171
|
--rt-list-copy-button-size: var(--rt-size-6);
|
|
4699
5172
|
--rt-list-copy-button-radius: var(--rt-mat-radius-5);
|
|
4700
5173
|
--rt-list-settings-item-radius: var(--rt-mat-radius-5);
|
|
4701
5174
|
--rt-list-filter-line-height: var(--rt-size-6);
|
|
4702
|
-
--rt-list-copy-button-bg: var(--
|
|
4703
|
-
--rt-list-copy-button-bg-hover: var(--
|
|
5175
|
+
--rt-list-copy-button-bg: var(--rt-fab-small-container-color, var(--rt-mat-neutral-0));
|
|
5176
|
+
--rt-list-copy-button-bg-hover: var(--rt-fab-small-container-color, var(--rt-mat-neutral-0));
|
|
4704
5177
|
--rt-list-copy-button-color: var(--rt-mat-neutral-60);
|
|
4705
5178
|
--rt-list-action-color-hover: var(--rt-mat-neutral-100);
|
|
4706
5179
|
--rt-list-action-color-bg-hover: transparent;
|
|
@@ -4754,23 +5227,23 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
4754
5227
|
скруглён только снизу, подсказка 4px без тени. Тень — подъём 2 Material, как у mat-menu и
|
|
4755
5228
|
mat-select. */
|
|
4756
5229
|
--rt-overlay-menu-radius: var(--rt-mat-radius-4);
|
|
4757
|
-
--rt-overlay-menu-shadow: var(--
|
|
5230
|
+
--rt-overlay-menu-shadow: var(--rt-sys-level2, var(--rt-mat-shadow-level-2));
|
|
4758
5231
|
--rt-overlay-select-radius: 0 0 var(--rt-mat-radius-4) var(--rt-mat-radius-4);
|
|
4759
|
-
--rt-overlay-select-shadow: var(--
|
|
5232
|
+
--rt-overlay-select-shadow: var(--rt-sys-level2, var(--rt-mat-shadow-level-2));
|
|
4760
5233
|
--rt-overlay-tooltip-radius: var(--rt-mat-radius-4);
|
|
4761
5234
|
--rt-overlay-tooltip-shadow: none;
|
|
4762
5235
|
/* Меню строки — mat-menu первого кита: фон контейнера Material, отступ 8px сверху и снизу,
|
|
4763
5236
|
подписи весом 500, опасный пункт красным первого кита. Выпадающий список — mat-select: пункты
|
|
4764
5237
|
16px, выбранный — фон текста 12% без жирного и с галочкой. */
|
|
4765
|
-
--rt-overlay-menu-bg: var(--
|
|
5238
|
+
--rt-overlay-menu-bg: var(--rt-menu-container-color, var(--rt-mat-neutral-0));
|
|
4766
5239
|
--rt-overlay-menu-padding-y: var(--rt-space-sm);
|
|
4767
5240
|
--rt-overlay-menu-item-weight: var(--rt-font-weight-medium);
|
|
4768
5241
|
--rt-overlay-menu-danger-color: var(--rt-mat-red-100);
|
|
4769
5242
|
--rt-overlay-select-option-font-size: var(--rt-text-md);
|
|
4770
|
-
--rt-overlay-select-selected-bg: color-mix(in srgb, var(--
|
|
5243
|
+
--rt-overlay-select-selected-bg: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-100)) 12%, transparent);
|
|
4771
5244
|
--rt-overlay-select-selected-weight: var(--rt-font-weight-regular);
|
|
4772
5245
|
--rt-overlay-select-check-display: inline-flex;
|
|
4773
|
-
--rt-overlay-menu-current-bg: color-mix(in srgb, var(--
|
|
5246
|
+
--rt-overlay-menu-current-bg: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-100)) 12%, transparent);
|
|
4774
5247
|
--rt-overlay-menu-min-width: var(--rt-mat-menu-min-width);
|
|
4775
5248
|
--rt-overlay-menu-item-min-height: var(--rt-size-12);
|
|
4776
5249
|
--rt-overlay-menu-item-padding-y: 0px;
|
|
@@ -4784,6 +5257,78 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
4784
5257
|
--rt-icon-button-disabled-opacity: 1;
|
|
4785
5258
|
--rt-icon-button-disabled-color: var(--rt-color-text-disabled);
|
|
4786
5259
|
--rt-icon-button-disabled-fill: 0%;
|
|
5260
|
+
/* Обведённое поле Material: прозрачное, рамка цвета outline темы, фокус — рамка в два
|
|
5261
|
+
пикселя цветом марки без внешнего кольца. Вторая линия рамки фокуса — внутренняя тень. */
|
|
5262
|
+
--rt-input-color-bg: transparent;
|
|
5263
|
+
--rt-input-color-border: var(--rt-sys-outline, var(--rt-mat-neutral-60));
|
|
5264
|
+
--rt-input-focus-shadow: inset 0 0 0 1px var(--rt-input-color-border-focus);
|
|
5265
|
+
--rt-input-focus-shadow-error: inset 0 0 0 1px var(--rt-input-color-border-error);
|
|
5266
|
+
/* Размер поля Material: 56 px при плотности 0 и на 4 px меньше за каждый шаг, значение 16 px.
|
|
5267
|
+
Шаг приходит свойством `--rt-input-density`, которое ставит атрибут `data-rt-density` на поле
|
|
5268
|
+
или на любом предке, — правила в `_density.scss`. Высота считается здесь, на узле с признаком
|
|
5269
|
+
набора, из унаследованного шага: атрибут на корне приложения доходит и до поля со своим
|
|
5270
|
+
признаком набора. Своя высота приложения — `--rt-input-height-app` на любом предке; она сильнее
|
|
5271
|
+
плотности и не перебивается набором на самом поле. */
|
|
5272
|
+
--rt-input-height-md: var(
|
|
5273
|
+
--rt-input-height-app,
|
|
5274
|
+
calc(var(--rt-size-12) + var(--rt-size-2) - var(--rt-input-density) * var(--rt-size-1))
|
|
5275
|
+
);
|
|
5276
|
+
--rt-input-height: var(--rt-input-height-md);
|
|
5277
|
+
/* Крупная ступень `size` не ниже средней высоты набора: 48 px кита под набором вышли бы ниже
|
|
5278
|
+
поля по умолчанию (56 px). Малая ступень остаётся ступенью кита — по ней стоят поиск списка и
|
|
5279
|
+
правка на месте. */
|
|
5280
|
+
--rt-input-height-lg: max(var(--rt-control-height-lg), var(--rt-input-height-md));
|
|
5281
|
+
--rt-input-font-size: var(--rt-text-md);
|
|
5282
|
+
/* Подсказка, подпись в покое, значки и стрелка поля — цвета on-surface-variant темы Material,
|
|
5283
|
+
каретка — цвета марки, значки 24 px, как у поля Material. Без темы Material цвета прежние. */
|
|
5284
|
+
--rt-input-color-text-placeholder: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-60));
|
|
5285
|
+
--rt-input-icon-color: var(--rt-sys-on-surface-variant, var(--rt-neutral-600));
|
|
5286
|
+
--rt-input-icon-size: var(--rt-size-6);
|
|
5287
|
+
--rt-input-caret-color: var(--rt-color-action-primary);
|
|
5288
|
+
/* Отключённое поле Material: поле не тускнеет целиком — рамка on-surface 12%, текст и
|
|
5289
|
+
подсказка on-surface 38%. */
|
|
5290
|
+
--rt-input-disabled-field-opacity: 1;
|
|
5291
|
+
--rt-input-color-border-disabled: var(--rt-color-action-disabled);
|
|
5292
|
+
--rt-input-color-text-disabled: var(--rt-color-text-disabled);
|
|
5293
|
+
--rt-input-color-placeholder-disabled: var(--rt-color-text-disabled);
|
|
5294
|
+
--rt-input-color-bg-disabled: transparent;
|
|
5295
|
+
/* Крестик очистки — крестик первого кита: 19 px, значок 12 px, серый, в 8 px от края поля и в
|
|
5296
|
+
4 px от текста. Отступ от края считается от правого поля в 4 px, как у поля Material с крестиком. */
|
|
5297
|
+
--rt-input-clear-size: 19px;
|
|
5298
|
+
--rt-input-clear-icon-size: var(--rt-size-3);
|
|
5299
|
+
--rt-input-clear-color: var(--rt-mat-neutral-60);
|
|
5300
|
+
--rt-input-clear-offset-end: calc(var(--rt-space-2) - var(--rt-space-1));
|
|
5301
|
+
--rt-input-clear-offset-start: calc(var(--rt-space-1) - var(--rt-input-gap));
|
|
5302
|
+
--rt-input-fill-color-bg-disabled: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-100)) 4%, transparent);
|
|
5303
|
+
--rt-input-clear-bg: var(--rt-mat-neutral-25);
|
|
5304
|
+
--rt-input-clear-bg-hover: var(--rt-input-clear-bg);
|
|
5305
|
+
--rt-input-clear-radius: var(--rt-radius-full);
|
|
5306
|
+
/* Залитое поле Material: рамки сверху и по бокам нет, только черта снизу; в фокусе черта
|
|
5307
|
+
вдвое толще цветом марки, у недействительного поля — цветом ошибки. */
|
|
5308
|
+
--rt-input-fill-edge: 0px;
|
|
5309
|
+
--rt-input-fill-focus-shadow: inset 0 -1px 0 0 var(--rt-input-color-border-focus);
|
|
5310
|
+
--rt-input-fill-focus-shadow-error: inset 0 -1px 0 0 var(--rt-input-color-border-error);
|
|
5311
|
+
/* Звёздочка обязательного поля — цвета подписи, как у поля Material; цвет ошибки она берёт
|
|
5312
|
+
только у недействительного поля, правилом самого поля. */
|
|
5313
|
+
--rt-field-required-color: currentcolor;
|
|
5314
|
+
--rt-field-required-gap: 0px;
|
|
5315
|
+
/* Строка под полем — строка подсказки Material: 16 px высотой и 4 px над ней. */
|
|
5316
|
+
--rt-field-messages-line-height: var(--rt-size-4);
|
|
5317
|
+
--rt-field-messages-padding-top: var(--rt-space-1);
|
|
5318
|
+
/* Группа переключателей видом «чипы» — фильтр-чип Material: обводка цвета outline темы,
|
|
5319
|
+
выбранный залит secondary-container, отключённый — текст 38 %, обводка 12 %. Обводку и цвет
|
|
5320
|
+
текста у выбранного задаёт лист чипов: своё имя каждому стоило бы по разу на тему, набор и
|
|
5321
|
+
островок, а начальный пакет приложения-образца стоит у порога. */
|
|
5322
|
+
--rt-toggle-chip-color-border: var(--rt-sys-outline, var(--rt-mat-neutral-60));
|
|
5323
|
+
--rt-toggle-chip-color-text: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-70));
|
|
5324
|
+
--rt-toggle-chip-color-bg-selected: var(--rt-sys-secondary-container, var(--rt-mat-neutral-25));
|
|
5325
|
+
/* Вкладки: полоса и панель движутся, как у вкладок Material, — полсекунды с той же кривой. */
|
|
5326
|
+
--rt-tabs-indicator-duration: var(--rt-duration-slower);
|
|
5327
|
+
--rt-tabs-indicator-easing: cubic-bezier(0.35, 0, 0.25, 1);
|
|
5328
|
+
--rt-tabs-panel-duration: var(--rt-duration-slower);
|
|
5329
|
+
--rt-tabs-panel-easing: cubic-bezier(0.35, 0, 0.25, 1);
|
|
5330
|
+
--rt-tabs-scroll-duration: var(--rt-duration-slower);
|
|
5331
|
+
--rt-tabs-scroll-easing: cubic-bezier(0.35, 0, 0.25, 1);
|
|
4787
5332
|
}
|
|
4788
5333
|
@media (pointer: coarse) {
|
|
4789
5334
|
[data-theme=dark] [data-theme=light] [data-preset=material],
|
|
@@ -5029,6 +5574,11 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
5029
5574
|
--rt-input-icon-color: var(--rt-neutral-600);
|
|
5030
5575
|
--rt-input-icon-size: var(--rt-size-4);
|
|
5031
5576
|
--rt-input-gap: var(--rt-space-sm);
|
|
5577
|
+
--rt-input-caret-color: auto;
|
|
5578
|
+
--rt-input-min-width: 0px;
|
|
5579
|
+
--rt-input-fill-edge: var(--rt-input-border-width);
|
|
5580
|
+
--rt-input-fill-focus-shadow: var(--rt-input-focus-shadow);
|
|
5581
|
+
--rt-input-fill-focus-shadow-error: var(--rt-input-focus-shadow-error);
|
|
5032
5582
|
/* Sizes (single-line height scale) */
|
|
5033
5583
|
--rt-input-height-sm: var(--rt-control-height-sm);
|
|
5034
5584
|
--rt-input-height-md: var(--rt-control-height-md);
|
|
@@ -5070,6 +5620,19 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
5070
5620
|
--rt-input-line-height: var(--rt-leading-snug);
|
|
5071
5621
|
/* State / motion */
|
|
5072
5622
|
--rt-input-disabled-opacity: var(--rt-opacity-disabled);
|
|
5623
|
+
--rt-input-disabled-field-opacity: var(--rt-input-disabled-opacity);
|
|
5624
|
+
--rt-input-color-border-disabled: var(--rt-input-color-border);
|
|
5625
|
+
--rt-input-color-text-disabled: var(--rt-input-color-text);
|
|
5626
|
+
--rt-input-color-placeholder-disabled: var(--rt-input-color-text-placeholder);
|
|
5627
|
+
--rt-input-clear-size: var(--rt-control-height-sm);
|
|
5628
|
+
--rt-input-clear-icon-size: var(--rt-size-4);
|
|
5629
|
+
--rt-input-clear-color: var(--rt-neutral-600);
|
|
5630
|
+
--rt-input-clear-offset-end: 0px;
|
|
5631
|
+
--rt-input-clear-bg: transparent;
|
|
5632
|
+
--rt-input-clear-bg-hover: var(--rt-icon-button-color-bg-hover);
|
|
5633
|
+
--rt-input-clear-radius: var(--rt-radius-md);
|
|
5634
|
+
--rt-input-clear-offset-start: 0px;
|
|
5635
|
+
--rt-input-fill-color-bg-disabled: var(--rt-color-bg-surface-subtle-2);
|
|
5073
5636
|
--rt-input-focus-shadow: var(--rt-shadow-focus-ring);
|
|
5074
5637
|
--rt-input-focus-shadow-error: var(--rt-shadow-focus-ring-danger);
|
|
5075
5638
|
--rt-input-transition: border-color var(--rt-duration-fast) ease, box-shadow var(--rt-duration-fast) ease;
|
|
@@ -5109,95 +5672,12 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
5109
5672
|
/* Рамка off-трека — inset-тенью, а не border: у border своя коробка, и
|
|
5110
5673
|
отступы бегунка с иконками пришлось бы пересчитывать на её толщину. */
|
|
5111
5674
|
--rt-toggle-shadow-border: inset 0 0 0 var(--rt-border-width-thin) var(--rt-toggle-color-border);
|
|
5112
|
-
/*
|
|
5113
|
-
|
|
5114
|
-
|
|
5115
|
-
--rt-
|
|
5116
|
-
|
|
5117
|
-
|
|
5118
|
-
подпись, а не фон — иначе оно спорит с этой подсветкой. */
|
|
5119
|
-
--rt-nav-item-height: var(--rt-size-6);
|
|
5120
|
-
--rt-nav-item-gap: var(--rt-space-1);
|
|
5121
|
-
--rt-nav-item-padding: var(--rt-space-2) var(--rt-space-2);
|
|
5122
|
-
--rt-nav-item-content-gap: var(--rt-space-2);
|
|
5123
|
-
--rt-nav-item-font-size: var(--rt-text-sm);
|
|
5124
|
-
--rt-nav-item-font-weight: var(--rt-font-weight-semibold);
|
|
5125
|
-
--rt-nav-item-line-height: var(--rt-leading-none);
|
|
5126
|
-
--rt-nav-item-color: var(--rt-color-text-primary);
|
|
5127
|
-
--rt-nav-item-color-hover: var(--rt-color-action-primary);
|
|
5128
|
-
--rt-nav-item-color-pressed: var(--rt-color-action-primary-hover);
|
|
5129
|
-
--rt-nav-item-color-bg: var(--rt-neutral-50);
|
|
5130
|
-
--rt-nav-item-color-border: var(--rt-neutral-50);
|
|
5131
|
-
--rt-nav-item-color-bg-active: var(--rt-color-bg-surface);
|
|
5132
|
-
--rt-nav-item-color-caret: var(--rt-neutral-200);
|
|
5133
|
-
/* Фокус обведён пунктиром: сплошная рамка на плашке пункта неотличима от его
|
|
5134
|
-
же границы. */
|
|
5135
|
-
--rt-nav-color-focus: var(--rt-color-action-primary);
|
|
5136
|
-
/* Недоступный пункт светлее доступного, а не другого оттенка: общий
|
|
5137
|
-
`text-disabled` уходит в сине-стальной и рядом с серой подписью читается
|
|
5138
|
-
как второй цвет, а не как выключенное состояние. */
|
|
5139
|
-
--rt-nav-color-disabled: var(--rt-neutral-300);
|
|
5140
|
-
/* Попап профиля. Подложку берёт у панели навигации, своего здесь — габариты
|
|
5141
|
-
блока пользователя, тень и набор строк: строк четыре, и они читаются как
|
|
5142
|
-
список действий, а не как выпадающее меню. */
|
|
5143
|
-
--rt-profile-menu-min-width: var(--rt-size-60);
|
|
5144
|
-
--rt-profile-menu-padding: var(--rt-space-5);
|
|
5145
|
-
--rt-profile-menu-shadow: var(--rt-shadow-profile-menu);
|
|
5146
|
-
--rt-profile-menu-border-width: var(--rt-border-width-thin);
|
|
5147
|
-
--rt-profile-menu-radius: var(--rt-radius-md);
|
|
5148
|
-
--rt-profile-avatar-size: var(--rt-size-10);
|
|
5149
|
-
--rt-profile-avatar-font-size: var(--rt-text-2xl);
|
|
5150
|
-
--rt-profile-avatar-border-width: var(--rt-border-width-medium);
|
|
5151
|
-
--rt-profile-avatar-radius: var(--rt-radius-full);
|
|
5152
|
-
--rt-profile-item-padding-y: var(--rt-space-4);
|
|
5153
|
-
--rt-profile-item-content-gap: var(--rt-space-2);
|
|
5154
|
-
--rt-profile-item-font-size: var(--rt-text-md);
|
|
5155
|
-
--rt-profile-item-font-weight: var(--rt-font-weight-medium);
|
|
5156
|
-
--rt-profile-item-radius: var(--rt-radius-md);
|
|
5157
|
-
/* Строки выступают за содержимое панели на половину её отступа: так
|
|
5158
|
-
подсветка на наведении не упирается в рамку, а иконка остаётся на одной
|
|
5159
|
-
вертикали с содержимым. Это же число — горизонтальный отступ строки. */
|
|
5160
|
-
--rt-profile-row-inset: var(--rt-space-2);
|
|
5161
|
-
--rt-profile-theme-icon-padding: var(--rt-space-2);
|
|
5162
|
-
--rt-profile-theme-icon-radius: var(--rt-radius-full);
|
|
5163
|
-
/* Габариты панели второго уровня: ширина считается числом колонок, поэтому
|
|
5164
|
-
колонка, промежуток и внутренний отступ — токены, из которых панель
|
|
5165
|
-
складывает свою ширину. По вертикали отступ крупнее: у первой группы над
|
|
5166
|
-
заголовком нет ничего, и панель иначе начинается впритык. */
|
|
5167
|
-
--rt-nav-panel-column-width: var(--rt-size-60);
|
|
5168
|
-
--rt-nav-panel-column-gap: var(--rt-space-5);
|
|
5169
|
-
--rt-nav-panel-padding: var(--rt-space-4);
|
|
5170
|
-
--rt-nav-panel-padding-y: var(--rt-space-md);
|
|
5171
|
-
--rt-nav-panel-group-gap: var(--rt-space-8);
|
|
5172
|
-
--rt-nav-panel-item-gap: var(--rt-space-0-5);
|
|
5173
|
-
--rt-nav-panel-item-height: var(--rt-size-6);
|
|
5174
|
-
--rt-nav-panel-item-padding: var(--rt-space-1) var(--rt-space-2);
|
|
5175
|
-
--rt-nav-panel-columns: 1;
|
|
5176
|
-
--rt-nav-panel-color-bg: var(--rt-color-bg-surface);
|
|
5177
|
-
--rt-nav-panel-color-border: var(--rt-neutral-200);
|
|
5178
|
-
--rt-nav-panel-shadow: var(--rt-shadow-nav-panel);
|
|
5179
|
-
/* Второй уровень набран легче первого: ряд разделов держит вес, а полтора
|
|
5180
|
-
десятка пунктов под ним читаются построчно. */
|
|
5181
|
-
--rt-nav-panel-item-font-size: var(--rt-text-sm);
|
|
5182
|
-
--rt-nav-panel-item-font-weight: var(--rt-font-weight-medium);
|
|
5183
|
-
--rt-nav-panel-item-content-gap: var(--rt-space-1);
|
|
5184
|
-
--rt-nav-panel-item-color: var(--rt-neutral-600);
|
|
5185
|
-
--rt-nav-panel-item-color-bg-hover: var(--rt-neutral-50);
|
|
5186
|
-
--rt-nav-panel-item-color-active: var(--rt-color-text-inverse);
|
|
5187
|
-
--rt-nav-panel-item-color-bg-active: var(--rt-color-action-primary);
|
|
5188
|
-
--rt-nav-panel-group-font-size: var(--rt-text-xs);
|
|
5189
|
-
--rt-nav-panel-group-font-weight: var(--rt-font-weight-medium);
|
|
5190
|
-
/* Заголовок группы светлее пункта, и оба берут порог контраста на белой панели.
|
|
5191
|
-
Отношения обеих пар считает проверка тёмной темы; таблица замера — на странице
|
|
5192
|
-
«Colors» витрины. */
|
|
5193
|
-
--rt-nav-panel-group-color: var(--rt-neutral-600);
|
|
5194
|
-
--rt-nav-panel-group-content-gap: var(--rt-space-2);
|
|
5195
|
-
/* Маркер непросмотренного. Точка стоит в потоке следом за подписью — и в ряду
|
|
5196
|
-
разделов, и в панели, и на узком экране: место ей даёт общий зазор
|
|
5197
|
-
содержимого пункта. */
|
|
5198
|
-
--rt-nav-caret-size: var(--rt-size-3);
|
|
5199
|
-
--rt-nav-marker-size: var(--rt-size-1);
|
|
5200
|
-
--rt-nav-marker-color: var(--rt-color-state-danger);
|
|
5675
|
+
/* Группа переключателей видом «чипы»: отдельные пункты с обводкой. Цвета — здесь, на корне:
|
|
5676
|
+
они не зависят от размера группы; размеры объявлены на самом хосте группы. Выбранный пункт
|
|
5677
|
+
в своём виде кита — мягкая марка, обводка у него та же, что у невыбранного. */
|
|
5678
|
+
--rt-toggle-chip-color-border: var(--rt-color-border-default);
|
|
5679
|
+
--rt-toggle-chip-color-text: var(--rt-color-text-muted);
|
|
5680
|
+
--rt-toggle-chip-color-bg-selected: var(--rt-color-action-primary-subtle);
|
|
5201
5681
|
/* Form field (rt-field) — обёртка анатомии поля: label / help / hint / error /
|
|
5202
5682
|
required-маркер / read-only значение. Визуал label+hint в стиле Tailwind
|
|
5203
5683
|
form (мелкий medium label, muted hint). Компоненты потребляют только эти
|
|
@@ -5210,8 +5690,11 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
5210
5690
|
--rt-field-hint-font-size: var(--rt-text-xs);
|
|
5211
5691
|
--rt-field-hint-color: var(--rt-color-text-muted);
|
|
5212
5692
|
--rt-field-error-font-size: var(--rt-text-xs);
|
|
5693
|
+
--rt-field-messages-line-height: normal;
|
|
5694
|
+
--rt-field-messages-padding-top: 0px;
|
|
5213
5695
|
--rt-field-error-color: var(--rt-color-state-danger);
|
|
5214
5696
|
--rt-field-required-color: var(--rt-color-state-danger);
|
|
5697
|
+
--rt-field-required-gap: var(--rt-space-1);
|
|
5215
5698
|
--rt-field-value-font-size: var(--rt-text-sm);
|
|
5216
5699
|
--rt-field-value-color: var(--rt-color-text-primary);
|
|
5217
5700
|
--rt-field-value-empty-color: var(--rt-color-text-muted);
|
|
@@ -5290,36 +5773,135 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
5290
5773
|
--rt-list-filter-line-height: var(--rt-leading-none);
|
|
5291
5774
|
--rt-list-placeholder-min-height: var(--rt-size-60);
|
|
5292
5775
|
--rt-list-placeholder-grow: 1;
|
|
5776
|
+
/* Навигация (rt-page-header). Шапка — отдельная плашка; отступ от краёв
|
|
5777
|
+
страницы задаёт тот, кто её ставит. */
|
|
5778
|
+
--rt-nav-header-padding: var(--rt-space-2) var(--rt-space-4);
|
|
5779
|
+
--rt-nav-header-color-bg: var(--rt-neutral-50);
|
|
5780
|
+
/* Первый уровень. Пункт ряда несёт плашку цвета самой шапки: на общем фоне её
|
|
5781
|
+
не видно, и белым проступает только активный раздел. Наведение красит
|
|
5782
|
+
подпись, а не фон — иначе оно спорит с этой подсветкой. */
|
|
5783
|
+
--rt-nav-item-height: var(--rt-size-6);
|
|
5784
|
+
--rt-nav-item-gap: var(--rt-space-1);
|
|
5785
|
+
--rt-nav-item-padding: var(--rt-space-2) var(--rt-space-2);
|
|
5786
|
+
--rt-nav-item-content-gap: var(--rt-space-2);
|
|
5787
|
+
--rt-nav-item-font-size: var(--rt-text-sm);
|
|
5788
|
+
--rt-nav-item-font-weight: var(--rt-font-weight-semibold);
|
|
5789
|
+
--rt-nav-item-line-height: var(--rt-leading-none);
|
|
5790
|
+
--rt-nav-item-color: var(--rt-color-text-primary);
|
|
5791
|
+
--rt-nav-item-color-hover: var(--rt-color-action-primary);
|
|
5792
|
+
--rt-nav-item-color-pressed: var(--rt-color-action-primary-hover);
|
|
5793
|
+
--rt-nav-item-color-bg: var(--rt-neutral-50);
|
|
5794
|
+
--rt-nav-item-color-border: var(--rt-neutral-50);
|
|
5795
|
+
--rt-nav-item-color-bg-active: var(--rt-color-bg-surface);
|
|
5796
|
+
--rt-nav-item-color-caret: var(--rt-neutral-200);
|
|
5797
|
+
/* Фокус обведён пунктиром: сплошная рамка на плашке пункта неотличима от его
|
|
5798
|
+
же границы. */
|
|
5799
|
+
--rt-nav-color-focus: var(--rt-color-action-primary);
|
|
5800
|
+
/* Недоступный пункт светлее доступного, а не другого оттенка: общий
|
|
5801
|
+
`text-disabled` уходит в сине-стальной и рядом с серой подписью читается
|
|
5802
|
+
как второй цвет, а не как выключенное состояние. */
|
|
5803
|
+
--rt-nav-color-disabled: var(--rt-neutral-300);
|
|
5804
|
+
/* Попап профиля. Подложку берёт у панели навигации, своего здесь — габариты
|
|
5805
|
+
блока пользователя, тень и набор строк: строк четыре, и они читаются как
|
|
5806
|
+
список действий, а не как выпадающее меню. */
|
|
5807
|
+
--rt-profile-menu-min-width: var(--rt-size-60);
|
|
5808
|
+
--rt-profile-menu-padding: var(--rt-space-5);
|
|
5809
|
+
--rt-profile-menu-shadow: var(--rt-shadow-profile-menu);
|
|
5810
|
+
--rt-profile-menu-border-width: var(--rt-border-width-thin);
|
|
5811
|
+
--rt-profile-menu-radius: var(--rt-radius-md);
|
|
5812
|
+
--rt-profile-avatar-size: var(--rt-size-10);
|
|
5813
|
+
--rt-profile-avatar-font-size: var(--rt-text-2xl);
|
|
5814
|
+
--rt-profile-avatar-border-width: var(--rt-border-width-medium);
|
|
5815
|
+
--rt-profile-avatar-radius: var(--rt-radius-full);
|
|
5816
|
+
--rt-profile-item-padding-y: var(--rt-space-4);
|
|
5817
|
+
--rt-profile-item-content-gap: var(--rt-space-2);
|
|
5818
|
+
--rt-profile-item-font-size: var(--rt-text-md);
|
|
5819
|
+
--rt-profile-item-font-weight: var(--rt-font-weight-medium);
|
|
5820
|
+
--rt-profile-item-radius: var(--rt-radius-md);
|
|
5821
|
+
/* Строки выступают за содержимое панели на половину её отступа: так
|
|
5822
|
+
подсветка на наведении не упирается в рамку, а иконка остаётся на одной
|
|
5823
|
+
вертикали с содержимым. Это же число — горизонтальный отступ строки. */
|
|
5824
|
+
--rt-profile-row-inset: var(--rt-space-2);
|
|
5825
|
+
--rt-profile-theme-icon-padding: var(--rt-space-2);
|
|
5826
|
+
--rt-profile-theme-icon-radius: var(--rt-radius-full);
|
|
5827
|
+
/* Габариты панели второго уровня: ширина считается числом колонок, поэтому
|
|
5828
|
+
колонка, промежуток и внутренний отступ — токены, из которых панель
|
|
5829
|
+
складывает свою ширину. По вертикали отступ крупнее: у первой группы над
|
|
5830
|
+
заголовком нет ничего, и панель иначе начинается впритык. */
|
|
5831
|
+
--rt-nav-panel-column-width: var(--rt-size-60);
|
|
5832
|
+
--rt-nav-panel-column-gap: var(--rt-space-5);
|
|
5833
|
+
--rt-nav-panel-padding: var(--rt-space-4);
|
|
5834
|
+
--rt-nav-panel-padding-y: var(--rt-space-md);
|
|
5835
|
+
--rt-nav-panel-group-gap: var(--rt-space-8);
|
|
5836
|
+
--rt-nav-panel-item-gap: var(--rt-space-0-5);
|
|
5837
|
+
--rt-nav-panel-item-height: var(--rt-size-6);
|
|
5838
|
+
--rt-nav-panel-item-padding: var(--rt-space-1) var(--rt-space-2);
|
|
5839
|
+
--rt-nav-panel-columns: 1;
|
|
5840
|
+
--rt-nav-panel-color-bg: var(--rt-color-bg-surface);
|
|
5841
|
+
--rt-nav-panel-color-border: var(--rt-neutral-200);
|
|
5842
|
+
--rt-nav-panel-shadow: var(--rt-shadow-nav-panel);
|
|
5843
|
+
/* Второй уровень набран легче первого: ряд разделов держит вес, а полтора
|
|
5844
|
+
десятка пунктов под ним читаются построчно. */
|
|
5845
|
+
--rt-nav-panel-item-font-size: var(--rt-text-sm);
|
|
5846
|
+
--rt-nav-panel-item-font-weight: var(--rt-font-weight-medium);
|
|
5847
|
+
--rt-nav-panel-item-content-gap: var(--rt-space-1);
|
|
5848
|
+
--rt-nav-panel-item-color: var(--rt-neutral-600);
|
|
5849
|
+
--rt-nav-panel-item-color-bg-hover: var(--rt-neutral-50);
|
|
5850
|
+
--rt-nav-panel-item-color-active: var(--rt-color-text-inverse);
|
|
5851
|
+
--rt-nav-panel-item-color-bg-active: var(--rt-color-action-primary);
|
|
5852
|
+
--rt-nav-panel-group-font-size: var(--rt-text-xs);
|
|
5853
|
+
--rt-nav-panel-group-font-weight: var(--rt-font-weight-medium);
|
|
5854
|
+
/* Заголовок группы светлее пункта, и оба берут порог контраста на белой панели.
|
|
5855
|
+
Отношения обеих пар считает проверка тёмной темы; таблица замера — на странице
|
|
5856
|
+
«Colors» витрины. */
|
|
5857
|
+
--rt-nav-panel-group-color: var(--rt-neutral-600);
|
|
5858
|
+
--rt-nav-panel-group-content-gap: var(--rt-space-2);
|
|
5859
|
+
/* Маркер непросмотренного. Точка стоит в потоке следом за подписью — и в ряду
|
|
5860
|
+
разделов, и в панели, и на узком экране: место ей даёт общий зазор
|
|
5861
|
+
содержимого пункта. */
|
|
5862
|
+
--rt-nav-caret-size: var(--rt-size-3);
|
|
5863
|
+
--rt-nav-marker-size: var(--rt-size-1);
|
|
5864
|
+
--rt-nav-marker-color: var(--rt-color-state-danger);
|
|
5865
|
+
/* Вкладки (rt-tabs). Полоса выбранной вкладки переезжает на новую, а панель
|
|
5866
|
+
меняется сдвигом по направлению перехода. Сдвиг панели в своём виде кита выключен
|
|
5867
|
+
нулевой длительностью: содержимое вкладки сменяется на месте, как раньше. */
|
|
5868
|
+
--rt-tabs-indicator-duration: var(--rt-duration-base);
|
|
5869
|
+
--rt-tabs-indicator-easing: ease-out;
|
|
5870
|
+
--rt-tabs-panel-duration: 0ms;
|
|
5871
|
+
--rt-tabs-panel-easing: ease-out;
|
|
5872
|
+
/* Прокрутка полосы вкладок стрелками и к выбранной вкладке. */
|
|
5873
|
+
--rt-tabs-scroll-duration: var(--rt-duration-base);
|
|
5874
|
+
--rt-tabs-scroll-easing: ease-out;
|
|
5293
5875
|
/* Подложки */
|
|
5294
5876
|
--rt-color-bg-page: var(--rt-mat-neutral-5);
|
|
5295
|
-
--rt-color-bg-surface: var(--
|
|
5877
|
+
--rt-color-bg-surface: var(--rt-sys-surface, var(--rt-mat-neutral-0));
|
|
5296
5878
|
--rt-color-bg-surface-subtle: var(--rt-mat-overlay-black-4);
|
|
5297
|
-
--rt-color-bg-surface-subtle-2: var(--
|
|
5879
|
+
--rt-color-bg-surface-subtle-2: var(--rt-field-filled-container-color, var(--rt-sys-surface-variant, var(--rt-mat-neutral-15)));
|
|
5298
5880
|
--rt-color-bg-hover: var(--rt-mat-neutral-10);
|
|
5299
5881
|
--rt-color-bg-subtle: var(--rt-mat-neutral-10);
|
|
5300
5882
|
--rt-color-bg-overlay: var(--rt-mat-overlay-black-32);
|
|
5301
|
-
--rt-color-bg-inverse: var(--
|
|
5302
|
-
--rt-color-bg-nav: var(--
|
|
5883
|
+
--rt-color-bg-inverse: var(--rt-sys-inverse-surface, var(--rt-mat-neutral-100));
|
|
5884
|
+
--rt-color-bg-nav: var(--rt-sys-primary, var(--rt-mat-navy-100)); /* марка первого кита: обвязка тёмная в обоих наборах */
|
|
5303
5885
|
--rt-color-bg-page-auth: var(--rt-mat-neutral-5);
|
|
5304
5886
|
--rt-color-bg-surface-auth-card: var(--rt-mat-neutral-0);
|
|
5305
5887
|
/* Текст */
|
|
5306
|
-
--rt-color-text-primary: var(--
|
|
5888
|
+
--rt-color-text-primary: var(--rt-sys-on-surface, var(--rt-mat-neutral-100));
|
|
5307
5889
|
--rt-color-text-muted: var(--rt-mat-neutral-60);
|
|
5308
|
-
--rt-color-text-disabled: color-mix(in srgb, var(--
|
|
5309
|
-
--rt-color-text-inverse: var(--
|
|
5310
|
-
--rt-color-text-link: var(--
|
|
5311
|
-
--rt-color-text-link-hover: color-mix(in srgb, var(--
|
|
5890
|
+
--rt-color-text-disabled: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-100)) 38%, transparent);
|
|
5891
|
+
--rt-color-text-inverse: var(--rt-sys-inverse-on-surface, var(--rt-mat-neutral-0));
|
|
5892
|
+
--rt-color-text-link: var(--rt-sys-primary, var(--rt-mat-blue-100));
|
|
5893
|
+
--rt-color-text-link-hover: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 90%, #000);
|
|
5312
5894
|
/* Рамки */
|
|
5313
5895
|
--rt-color-border-default: var(--rt-mat-neutral-25);
|
|
5314
5896
|
--rt-color-border-strong: var(--rt-mat-neutral-30);
|
|
5315
5897
|
--rt-color-border-subtle: var(--rt-mat-neutral-20);
|
|
5316
5898
|
--rt-color-border-focus: var(--rt-mat-blue-40); /* кольцо фокуса первого кита светлее его действия */
|
|
5317
5899
|
/* Действие: подложка, наведение, нажатие, подпись на них и цвет роли на поверхности */
|
|
5318
|
-
--rt-color-action-primary: var(--
|
|
5319
|
-
--rt-color-action-primary-hover: color-mix(in srgb, var(--
|
|
5320
|
-
--rt-color-action-primary-active: color-mix(in srgb, var(--
|
|
5321
|
-
--rt-color-action-primary-subtle: color-mix(in srgb, var(--
|
|
5322
|
-
--rt-color-action-primary-soft: color-mix(in srgb, var(--
|
|
5900
|
+
--rt-color-action-primary: var(--rt-sys-primary, var(--rt-mat-blue-100));
|
|
5901
|
+
--rt-color-action-primary-hover: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 90%, #000);
|
|
5902
|
+
--rt-color-action-primary-active: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 80%, #000);
|
|
5903
|
+
--rt-color-action-primary-subtle: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 8%, transparent);
|
|
5904
|
+
--rt-color-action-primary-soft: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 24%, transparent);
|
|
5323
5905
|
--rt-color-action-on-primary: var(--rt-mat-neutral-0);
|
|
5324
5906
|
--rt-color-action-secondary: var(--rt-mat-neutral-60);
|
|
5325
5907
|
--rt-color-action-secondary-hover: var(--rt-mat-neutral-hover);
|
|
@@ -5334,15 +5916,15 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
5334
5916
|
--rt-color-action-warning-hover: var(--rt-mat-orange-hover);
|
|
5335
5917
|
--rt-color-action-warning-active: var(--rt-mat-orange-active);
|
|
5336
5918
|
--rt-color-action-on-warning: var(--rt-mat-neutral-0);
|
|
5337
|
-
--rt-color-action-danger: var(--
|
|
5338
|
-
--rt-color-action-danger-hover: color-mix(in srgb, var(--
|
|
5339
|
-
--rt-color-action-danger-active: color-mix(in srgb, var(--
|
|
5919
|
+
--rt-color-action-danger: var(--rt-sys-error, var(--rt-mat-red-100));
|
|
5920
|
+
--rt-color-action-danger-hover: color-mix(in srgb, var(--rt-sys-error, var(--rt-mat-red-100)) 90%, #000);
|
|
5921
|
+
--rt-color-action-danger-active: color-mix(in srgb, var(--rt-sys-error, var(--rt-mat-red-100)) 80%, #000);
|
|
5340
5922
|
--rt-color-action-on-danger: var(--rt-mat-neutral-0);
|
|
5341
|
-
--rt-color-action-info: var(--
|
|
5342
|
-
--rt-color-action-info-hover: color-mix(in srgb, var(--
|
|
5343
|
-
--rt-color-action-info-active: color-mix(in srgb, var(--
|
|
5923
|
+
--rt-color-action-info: var(--rt-sys-primary, var(--rt-mat-blue-100));
|
|
5924
|
+
--rt-color-action-info-hover: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 90%, #000);
|
|
5925
|
+
--rt-color-action-info-active: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 80%, #000);
|
|
5344
5926
|
--rt-color-action-on-info: var(--rt-mat-neutral-0);
|
|
5345
|
-
--rt-color-action-disabled: color-mix(in srgb, var(--
|
|
5927
|
+
--rt-color-action-disabled: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-100)) 12%, transparent);
|
|
5346
5928
|
/* Состояния: цвет роли и её светлая подложка */
|
|
5347
5929
|
--rt-color-state-success: var(--rt-mat-green-100);
|
|
5348
5930
|
--rt-color-state-success-bg: var(--rt-mat-green-10);
|
|
@@ -5350,11 +5932,11 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
5350
5932
|
--rt-color-state-warning: var(--rt-mat-orange-100);
|
|
5351
5933
|
--rt-color-state-warning-bg: var(--rt-mat-orange-5);
|
|
5352
5934
|
--rt-color-state-warning-text: var(--rt-mat-orange-100);
|
|
5353
|
-
--rt-color-state-danger: var(--
|
|
5354
|
-
--rt-color-state-danger-bg: var(--
|
|
5355
|
-
--rt-color-state-error-text: var(--
|
|
5356
|
-
--rt-color-state-info: var(--
|
|
5357
|
-
--rt-color-state-info-bg: var(--
|
|
5935
|
+
--rt-color-state-danger: var(--rt-sys-error, var(--rt-mat-red-100));
|
|
5936
|
+
--rt-color-state-danger-bg: var(--rt-sys-error-container, var(--rt-mat-red-10));
|
|
5937
|
+
--rt-color-state-error-text: var(--rt-sys-error, var(--rt-mat-red-100));
|
|
5938
|
+
--rt-color-state-info: var(--rt-sys-primary, var(--rt-mat-blue-100));
|
|
5939
|
+
--rt-color-state-info-bg: var(--rt-sys-primary-container, var(--rt-mat-blue-20));
|
|
5358
5940
|
/* Рельса шагов */
|
|
5359
5941
|
--rt-color-stepper-track: var(--rt-mat-neutral-30);
|
|
5360
5942
|
/* Заглушка загрузки: краски те же, что набор давал ей прежде через подложку и
|
|
@@ -5362,27 +5944,27 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
5362
5944
|
--rt-color-skeleton-base: var(--rt-mat-neutral-10);
|
|
5363
5945
|
--rt-color-skeleton-wave: var(--rt-mat-neutral-25);
|
|
5364
5946
|
/* Шапка таблицы первого кита залита тем же цветом, что залитое поле Material. */
|
|
5365
|
-
--rt-color-table-head-bg: var(--
|
|
5947
|
+
--rt-color-table-head-bg: var(--rt-field-filled-container-color, var(--rt-sys-surface-variant, var(--rt-mat-overlay-black-4)));
|
|
5366
5948
|
/* Черта снизу у залитого поля Material — цвет on-surface-variant темы. */
|
|
5367
|
-
--rt-color-field-fill-underline: var(--
|
|
5949
|
+
--rt-color-field-fill-underline: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-30));
|
|
5368
5950
|
/* Поиск списка первого кита — обведённое или залитое поле Material при плотности −1:
|
|
5369
5951
|
52px, скругление 4px, рамка цвета outline темы, внутри прозрачное. Ступени 52px нет, высота собрана из ступени
|
|
5370
5952
|
xl без ступени 1. */
|
|
5371
5953
|
--rt-list-search-height: calc(var(--rt-control-height-xl) - var(--rt-space-1));
|
|
5372
5954
|
--rt-list-search-radius: var(--rt-radius-sm);
|
|
5373
|
-
--rt-list-search-color-border: var(--
|
|
5955
|
+
--rt-list-search-color-border: var(--rt-sys-outline, var(--rt-mat-neutral-25));
|
|
5374
5956
|
--rt-list-search-color-bg: transparent;
|
|
5375
5957
|
--rt-list-search-width: calc(var(--rt-size-64) + var(--rt-size-24));
|
|
5376
5958
|
--rt-list-search-padding-x: calc(var(--rt-space-2) + var(--rt-space-1) - var(--rt-border-width-thin));
|
|
5377
5959
|
--rt-list-search-gap: var(--rt-space-4);
|
|
5378
5960
|
--rt-list-search-font-size: var(--rt-text-md);
|
|
5379
5961
|
--rt-list-search-icon-size: var(--rt-size-6);
|
|
5380
|
-
--rt-list-search-icon-color: var(--
|
|
5381
|
-
--rt-list-search-color-placeholder: var(--
|
|
5962
|
+
--rt-list-search-icon-color: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-60));
|
|
5963
|
+
--rt-list-search-color-placeholder: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-60));
|
|
5382
5964
|
/* Панель настройки колонок первого кита: плашка колонки залита цветом выбранного пункта
|
|
5383
5965
|
Material, значки — в тоне on-surface-variant темы. Сняты с панели на витрине первого кита. */
|
|
5384
|
-
--rt-list-settings-item-bg: var(--
|
|
5385
|
-
--rt-list-settings-icon-color: var(--
|
|
5966
|
+
--rt-list-settings-item-bg: var(--rt-option-selected-state-layer-color, var(--rt-sys-secondary-container, var(--rt-mat-neutral-10)));
|
|
5967
|
+
--rt-list-settings-icon-color: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-60));
|
|
5386
5968
|
/* Кнопки действий панели списка — mat-mini-fab первого кита: круг без заливки с подъёмом 6,
|
|
5387
5969
|
под указателем подъём 8 и тёмный значок вместо серого; значок 24px, промежуток 16px. */
|
|
5388
5970
|
--rt-list-action-gap: var(--rt-space-md);
|
|
@@ -5393,16 +5975,16 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
5393
5975
|
--rt-list-action-icon-size: var(--rt-size-6);
|
|
5394
5976
|
--rt-list-action-color: var(--rt-mat-neutral-60);
|
|
5395
5977
|
--rt-list-table-icon-size: var(--rt-size-6);
|
|
5396
|
-
--rt-list-table-icon-color: var(--
|
|
5397
|
-
--rt-list-table-head-divider-color: var(--
|
|
5978
|
+
--rt-list-table-icon-color: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-60));
|
|
5979
|
+
--rt-list-table-head-divider-color: var(--rt-sys-outline, var(--rt-mat-neutral-30));
|
|
5398
5980
|
--rt-list-table-button-size: calc(var(--rt-size-8) + var(--rt-size-1));
|
|
5399
5981
|
--rt-list-table-button-radius: var(--rt-radius-full);
|
|
5400
5982
|
--rt-list-copy-button-size: var(--rt-size-6);
|
|
5401
5983
|
--rt-list-copy-button-radius: var(--rt-mat-radius-5);
|
|
5402
5984
|
--rt-list-settings-item-radius: var(--rt-mat-radius-5);
|
|
5403
5985
|
--rt-list-filter-line-height: var(--rt-size-6);
|
|
5404
|
-
--rt-list-copy-button-bg: var(--
|
|
5405
|
-
--rt-list-copy-button-bg-hover: var(--
|
|
5986
|
+
--rt-list-copy-button-bg: var(--rt-fab-small-container-color, var(--rt-mat-neutral-0));
|
|
5987
|
+
--rt-list-copy-button-bg-hover: var(--rt-fab-small-container-color, var(--rt-mat-neutral-0));
|
|
5406
5988
|
--rt-list-copy-button-color: var(--rt-mat-neutral-60);
|
|
5407
5989
|
--rt-list-action-color-hover: var(--rt-mat-neutral-100);
|
|
5408
5990
|
--rt-list-action-color-bg-hover: transparent;
|
|
@@ -5456,23 +6038,23 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
5456
6038
|
скруглён только снизу, подсказка 4px без тени. Тень — подъём 2 Material, как у mat-menu и
|
|
5457
6039
|
mat-select. */
|
|
5458
6040
|
--rt-overlay-menu-radius: var(--rt-mat-radius-4);
|
|
5459
|
-
--rt-overlay-menu-shadow: var(--
|
|
6041
|
+
--rt-overlay-menu-shadow: var(--rt-sys-level2, var(--rt-mat-shadow-level-2));
|
|
5460
6042
|
--rt-overlay-select-radius: 0 0 var(--rt-mat-radius-4) var(--rt-mat-radius-4);
|
|
5461
|
-
--rt-overlay-select-shadow: var(--
|
|
6043
|
+
--rt-overlay-select-shadow: var(--rt-sys-level2, var(--rt-mat-shadow-level-2));
|
|
5462
6044
|
--rt-overlay-tooltip-radius: var(--rt-mat-radius-4);
|
|
5463
6045
|
--rt-overlay-tooltip-shadow: none;
|
|
5464
6046
|
/* Меню строки — mat-menu первого кита: фон контейнера Material, отступ 8px сверху и снизу,
|
|
5465
6047
|
подписи весом 500, опасный пункт красным первого кита. Выпадающий список — mat-select: пункты
|
|
5466
6048
|
16px, выбранный — фон текста 12% без жирного и с галочкой. */
|
|
5467
|
-
--rt-overlay-menu-bg: var(--
|
|
6049
|
+
--rt-overlay-menu-bg: var(--rt-menu-container-color, var(--rt-mat-neutral-0));
|
|
5468
6050
|
--rt-overlay-menu-padding-y: var(--rt-space-sm);
|
|
5469
6051
|
--rt-overlay-menu-item-weight: var(--rt-font-weight-medium);
|
|
5470
6052
|
--rt-overlay-menu-danger-color: var(--rt-mat-red-100);
|
|
5471
6053
|
--rt-overlay-select-option-font-size: var(--rt-text-md);
|
|
5472
|
-
--rt-overlay-select-selected-bg: color-mix(in srgb, var(--
|
|
6054
|
+
--rt-overlay-select-selected-bg: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-100)) 12%, transparent);
|
|
5473
6055
|
--rt-overlay-select-selected-weight: var(--rt-font-weight-regular);
|
|
5474
6056
|
--rt-overlay-select-check-display: inline-flex;
|
|
5475
|
-
--rt-overlay-menu-current-bg: color-mix(in srgb, var(--
|
|
6057
|
+
--rt-overlay-menu-current-bg: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-100)) 12%, transparent);
|
|
5476
6058
|
--rt-overlay-menu-min-width: var(--rt-mat-menu-min-width);
|
|
5477
6059
|
--rt-overlay-menu-item-min-height: var(--rt-size-12);
|
|
5478
6060
|
--rt-overlay-menu-item-padding-y: 0px;
|
|
@@ -5486,6 +6068,78 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
5486
6068
|
--rt-icon-button-disabled-opacity: 1;
|
|
5487
6069
|
--rt-icon-button-disabled-color: var(--rt-color-text-disabled);
|
|
5488
6070
|
--rt-icon-button-disabled-fill: 0%;
|
|
6071
|
+
/* Обведённое поле Material: прозрачное, рамка цвета outline темы, фокус — рамка в два
|
|
6072
|
+
пикселя цветом марки без внешнего кольца. Вторая линия рамки фокуса — внутренняя тень. */
|
|
6073
|
+
--rt-input-color-bg: transparent;
|
|
6074
|
+
--rt-input-color-border: var(--rt-sys-outline, var(--rt-mat-neutral-60));
|
|
6075
|
+
--rt-input-focus-shadow: inset 0 0 0 1px var(--rt-input-color-border-focus);
|
|
6076
|
+
--rt-input-focus-shadow-error: inset 0 0 0 1px var(--rt-input-color-border-error);
|
|
6077
|
+
/* Размер поля Material: 56 px при плотности 0 и на 4 px меньше за каждый шаг, значение 16 px.
|
|
6078
|
+
Шаг приходит свойством `--rt-input-density`, которое ставит атрибут `data-rt-density` на поле
|
|
6079
|
+
или на любом предке, — правила в `_density.scss`. Высота считается здесь, на узле с признаком
|
|
6080
|
+
набора, из унаследованного шага: атрибут на корне приложения доходит и до поля со своим
|
|
6081
|
+
признаком набора. Своя высота приложения — `--rt-input-height-app` на любом предке; она сильнее
|
|
6082
|
+
плотности и не перебивается набором на самом поле. */
|
|
6083
|
+
--rt-input-height-md: var(
|
|
6084
|
+
--rt-input-height-app,
|
|
6085
|
+
calc(var(--rt-size-12) + var(--rt-size-2) - var(--rt-input-density) * var(--rt-size-1))
|
|
6086
|
+
);
|
|
6087
|
+
--rt-input-height: var(--rt-input-height-md);
|
|
6088
|
+
/* Крупная ступень `size` не ниже средней высоты набора: 48 px кита под набором вышли бы ниже
|
|
6089
|
+
поля по умолчанию (56 px). Малая ступень остаётся ступенью кита — по ней стоят поиск списка и
|
|
6090
|
+
правка на месте. */
|
|
6091
|
+
--rt-input-height-lg: max(var(--rt-control-height-lg), var(--rt-input-height-md));
|
|
6092
|
+
--rt-input-font-size: var(--rt-text-md);
|
|
6093
|
+
/* Подсказка, подпись в покое, значки и стрелка поля — цвета on-surface-variant темы Material,
|
|
6094
|
+
каретка — цвета марки, значки 24 px, как у поля Material. Без темы Material цвета прежние. */
|
|
6095
|
+
--rt-input-color-text-placeholder: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-60));
|
|
6096
|
+
--rt-input-icon-color: var(--rt-sys-on-surface-variant, var(--rt-neutral-600));
|
|
6097
|
+
--rt-input-icon-size: var(--rt-size-6);
|
|
6098
|
+
--rt-input-caret-color: var(--rt-color-action-primary);
|
|
6099
|
+
/* Отключённое поле Material: поле не тускнеет целиком — рамка on-surface 12%, текст и
|
|
6100
|
+
подсказка on-surface 38%. */
|
|
6101
|
+
--rt-input-disabled-field-opacity: 1;
|
|
6102
|
+
--rt-input-color-border-disabled: var(--rt-color-action-disabled);
|
|
6103
|
+
--rt-input-color-text-disabled: var(--rt-color-text-disabled);
|
|
6104
|
+
--rt-input-color-placeholder-disabled: var(--rt-color-text-disabled);
|
|
6105
|
+
--rt-input-color-bg-disabled: transparent;
|
|
6106
|
+
/* Крестик очистки — крестик первого кита: 19 px, значок 12 px, серый, в 8 px от края поля и в
|
|
6107
|
+
4 px от текста. Отступ от края считается от правого поля в 4 px, как у поля Material с крестиком. */
|
|
6108
|
+
--rt-input-clear-size: 19px;
|
|
6109
|
+
--rt-input-clear-icon-size: var(--rt-size-3);
|
|
6110
|
+
--rt-input-clear-color: var(--rt-mat-neutral-60);
|
|
6111
|
+
--rt-input-clear-offset-end: calc(var(--rt-space-2) - var(--rt-space-1));
|
|
6112
|
+
--rt-input-clear-offset-start: calc(var(--rt-space-1) - var(--rt-input-gap));
|
|
6113
|
+
--rt-input-fill-color-bg-disabled: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-100)) 4%, transparent);
|
|
6114
|
+
--rt-input-clear-bg: var(--rt-mat-neutral-25);
|
|
6115
|
+
--rt-input-clear-bg-hover: var(--rt-input-clear-bg);
|
|
6116
|
+
--rt-input-clear-radius: var(--rt-radius-full);
|
|
6117
|
+
/* Залитое поле Material: рамки сверху и по бокам нет, только черта снизу; в фокусе черта
|
|
6118
|
+
вдвое толще цветом марки, у недействительного поля — цветом ошибки. */
|
|
6119
|
+
--rt-input-fill-edge: 0px;
|
|
6120
|
+
--rt-input-fill-focus-shadow: inset 0 -1px 0 0 var(--rt-input-color-border-focus);
|
|
6121
|
+
--rt-input-fill-focus-shadow-error: inset 0 -1px 0 0 var(--rt-input-color-border-error);
|
|
6122
|
+
/* Звёздочка обязательного поля — цвета подписи, как у поля Material; цвет ошибки она берёт
|
|
6123
|
+
только у недействительного поля, правилом самого поля. */
|
|
6124
|
+
--rt-field-required-color: currentcolor;
|
|
6125
|
+
--rt-field-required-gap: 0px;
|
|
6126
|
+
/* Строка под полем — строка подсказки Material: 16 px высотой и 4 px над ней. */
|
|
6127
|
+
--rt-field-messages-line-height: var(--rt-size-4);
|
|
6128
|
+
--rt-field-messages-padding-top: var(--rt-space-1);
|
|
6129
|
+
/* Группа переключателей видом «чипы» — фильтр-чип Material: обводка цвета outline темы,
|
|
6130
|
+
выбранный залит secondary-container, отключённый — текст 38 %, обводка 12 %. Обводку и цвет
|
|
6131
|
+
текста у выбранного задаёт лист чипов: своё имя каждому стоило бы по разу на тему, набор и
|
|
6132
|
+
островок, а начальный пакет приложения-образца стоит у порога. */
|
|
6133
|
+
--rt-toggle-chip-color-border: var(--rt-sys-outline, var(--rt-mat-neutral-60));
|
|
6134
|
+
--rt-toggle-chip-color-text: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-70));
|
|
6135
|
+
--rt-toggle-chip-color-bg-selected: var(--rt-sys-secondary-container, var(--rt-mat-neutral-25));
|
|
6136
|
+
/* Вкладки: полоса и панель движутся, как у вкладок Material, — полсекунды с той же кривой. */
|
|
6137
|
+
--rt-tabs-indicator-duration: var(--rt-duration-slower);
|
|
6138
|
+
--rt-tabs-indicator-easing: cubic-bezier(0.35, 0, 0.25, 1);
|
|
6139
|
+
--rt-tabs-panel-duration: var(--rt-duration-slower);
|
|
6140
|
+
--rt-tabs-panel-easing: cubic-bezier(0.35, 0, 0.25, 1);
|
|
6141
|
+
--rt-tabs-scroll-duration: var(--rt-duration-slower);
|
|
6142
|
+
--rt-tabs-scroll-easing: cubic-bezier(0.35, 0, 0.25, 1);
|
|
5489
6143
|
}
|
|
5490
6144
|
@media (pointer: coarse) {
|
|
5491
6145
|
[data-preset=material][data-theme=light]:not(:root),
|
|
@@ -5728,6 +6382,11 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
5728
6382
|
--rt-input-icon-color: var(--rt-neutral-600);
|
|
5729
6383
|
--rt-input-icon-size: var(--rt-size-4);
|
|
5730
6384
|
--rt-input-gap: var(--rt-space-sm);
|
|
6385
|
+
--rt-input-caret-color: auto;
|
|
6386
|
+
--rt-input-min-width: 0px;
|
|
6387
|
+
--rt-input-fill-edge: var(--rt-input-border-width);
|
|
6388
|
+
--rt-input-fill-focus-shadow: var(--rt-input-focus-shadow);
|
|
6389
|
+
--rt-input-fill-focus-shadow-error: var(--rt-input-focus-shadow-error);
|
|
5731
6390
|
/* Sizes (single-line height scale) */
|
|
5732
6391
|
--rt-input-height-sm: var(--rt-control-height-sm);
|
|
5733
6392
|
--rt-input-height-md: var(--rt-control-height-md);
|
|
@@ -5769,6 +6428,19 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
5769
6428
|
--rt-input-line-height: var(--rt-leading-snug);
|
|
5770
6429
|
/* State / motion */
|
|
5771
6430
|
--rt-input-disabled-opacity: var(--rt-opacity-disabled);
|
|
6431
|
+
--rt-input-disabled-field-opacity: var(--rt-input-disabled-opacity);
|
|
6432
|
+
--rt-input-color-border-disabled: var(--rt-input-color-border);
|
|
6433
|
+
--rt-input-color-text-disabled: var(--rt-input-color-text);
|
|
6434
|
+
--rt-input-color-placeholder-disabled: var(--rt-input-color-text-placeholder);
|
|
6435
|
+
--rt-input-clear-size: var(--rt-control-height-sm);
|
|
6436
|
+
--rt-input-clear-icon-size: var(--rt-size-4);
|
|
6437
|
+
--rt-input-clear-color: var(--rt-neutral-600);
|
|
6438
|
+
--rt-input-clear-offset-end: 0px;
|
|
6439
|
+
--rt-input-clear-bg: transparent;
|
|
6440
|
+
--rt-input-clear-bg-hover: var(--rt-icon-button-color-bg-hover);
|
|
6441
|
+
--rt-input-clear-radius: var(--rt-radius-md);
|
|
6442
|
+
--rt-input-clear-offset-start: 0px;
|
|
6443
|
+
--rt-input-fill-color-bg-disabled: var(--rt-color-bg-surface-subtle-2);
|
|
5772
6444
|
--rt-input-focus-shadow: var(--rt-shadow-focus-ring);
|
|
5773
6445
|
--rt-input-focus-shadow-error: var(--rt-shadow-focus-ring-danger);
|
|
5774
6446
|
--rt-input-transition: border-color var(--rt-duration-fast) ease, box-shadow var(--rt-duration-fast) ease;
|
|
@@ -5808,95 +6480,12 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
5808
6480
|
/* Рамка off-трека — inset-тенью, а не border: у border своя коробка, и
|
|
5809
6481
|
отступы бегунка с иконками пришлось бы пересчитывать на её толщину. */
|
|
5810
6482
|
--rt-toggle-shadow-border: inset 0 0 0 var(--rt-border-width-thin) var(--rt-toggle-color-border);
|
|
5811
|
-
/*
|
|
5812
|
-
|
|
5813
|
-
|
|
5814
|
-
--rt-
|
|
5815
|
-
|
|
5816
|
-
|
|
5817
|
-
подпись, а не фон — иначе оно спорит с этой подсветкой. */
|
|
5818
|
-
--rt-nav-item-height: var(--rt-size-6);
|
|
5819
|
-
--rt-nav-item-gap: var(--rt-space-1);
|
|
5820
|
-
--rt-nav-item-padding: var(--rt-space-2) var(--rt-space-2);
|
|
5821
|
-
--rt-nav-item-content-gap: var(--rt-space-2);
|
|
5822
|
-
--rt-nav-item-font-size: var(--rt-text-sm);
|
|
5823
|
-
--rt-nav-item-font-weight: var(--rt-font-weight-semibold);
|
|
5824
|
-
--rt-nav-item-line-height: var(--rt-leading-none);
|
|
5825
|
-
--rt-nav-item-color: var(--rt-color-text-primary);
|
|
5826
|
-
--rt-nav-item-color-hover: var(--rt-color-action-primary);
|
|
5827
|
-
--rt-nav-item-color-pressed: var(--rt-color-action-primary-hover);
|
|
5828
|
-
--rt-nav-item-color-bg: var(--rt-neutral-50);
|
|
5829
|
-
--rt-nav-item-color-border: var(--rt-neutral-50);
|
|
5830
|
-
--rt-nav-item-color-bg-active: var(--rt-color-bg-surface);
|
|
5831
|
-
--rt-nav-item-color-caret: var(--rt-neutral-200);
|
|
5832
|
-
/* Фокус обведён пунктиром: сплошная рамка на плашке пункта неотличима от его
|
|
5833
|
-
же границы. */
|
|
5834
|
-
--rt-nav-color-focus: var(--rt-color-action-primary);
|
|
5835
|
-
/* Недоступный пункт светлее доступного, а не другого оттенка: общий
|
|
5836
|
-
`text-disabled` уходит в сине-стальной и рядом с серой подписью читается
|
|
5837
|
-
как второй цвет, а не как выключенное состояние. */
|
|
5838
|
-
--rt-nav-color-disabled: var(--rt-neutral-300);
|
|
5839
|
-
/* Попап профиля. Подложку берёт у панели навигации, своего здесь — габариты
|
|
5840
|
-
блока пользователя, тень и набор строк: строк четыре, и они читаются как
|
|
5841
|
-
список действий, а не как выпадающее меню. */
|
|
5842
|
-
--rt-profile-menu-min-width: var(--rt-size-60);
|
|
5843
|
-
--rt-profile-menu-padding: var(--rt-space-5);
|
|
5844
|
-
--rt-profile-menu-shadow: var(--rt-shadow-profile-menu);
|
|
5845
|
-
--rt-profile-menu-border-width: var(--rt-border-width-thin);
|
|
5846
|
-
--rt-profile-menu-radius: var(--rt-radius-md);
|
|
5847
|
-
--rt-profile-avatar-size: var(--rt-size-10);
|
|
5848
|
-
--rt-profile-avatar-font-size: var(--rt-text-2xl);
|
|
5849
|
-
--rt-profile-avatar-border-width: var(--rt-border-width-medium);
|
|
5850
|
-
--rt-profile-avatar-radius: var(--rt-radius-full);
|
|
5851
|
-
--rt-profile-item-padding-y: var(--rt-space-4);
|
|
5852
|
-
--rt-profile-item-content-gap: var(--rt-space-2);
|
|
5853
|
-
--rt-profile-item-font-size: var(--rt-text-md);
|
|
5854
|
-
--rt-profile-item-font-weight: var(--rt-font-weight-medium);
|
|
5855
|
-
--rt-profile-item-radius: var(--rt-radius-md);
|
|
5856
|
-
/* Строки выступают за содержимое панели на половину её отступа: так
|
|
5857
|
-
подсветка на наведении не упирается в рамку, а иконка остаётся на одной
|
|
5858
|
-
вертикали с содержимым. Это же число — горизонтальный отступ строки. */
|
|
5859
|
-
--rt-profile-row-inset: var(--rt-space-2);
|
|
5860
|
-
--rt-profile-theme-icon-padding: var(--rt-space-2);
|
|
5861
|
-
--rt-profile-theme-icon-radius: var(--rt-radius-full);
|
|
5862
|
-
/* Габариты панели второго уровня: ширина считается числом колонок, поэтому
|
|
5863
|
-
колонка, промежуток и внутренний отступ — токены, из которых панель
|
|
5864
|
-
складывает свою ширину. По вертикали отступ крупнее: у первой группы над
|
|
5865
|
-
заголовком нет ничего, и панель иначе начинается впритык. */
|
|
5866
|
-
--rt-nav-panel-column-width: var(--rt-size-60);
|
|
5867
|
-
--rt-nav-panel-column-gap: var(--rt-space-5);
|
|
5868
|
-
--rt-nav-panel-padding: var(--rt-space-4);
|
|
5869
|
-
--rt-nav-panel-padding-y: var(--rt-space-md);
|
|
5870
|
-
--rt-nav-panel-group-gap: var(--rt-space-8);
|
|
5871
|
-
--rt-nav-panel-item-gap: var(--rt-space-0-5);
|
|
5872
|
-
--rt-nav-panel-item-height: var(--rt-size-6);
|
|
5873
|
-
--rt-nav-panel-item-padding: var(--rt-space-1) var(--rt-space-2);
|
|
5874
|
-
--rt-nav-panel-columns: 1;
|
|
5875
|
-
--rt-nav-panel-color-bg: var(--rt-color-bg-surface);
|
|
5876
|
-
--rt-nav-panel-color-border: var(--rt-neutral-200);
|
|
5877
|
-
--rt-nav-panel-shadow: var(--rt-shadow-nav-panel);
|
|
5878
|
-
/* Второй уровень набран легче первого: ряд разделов держит вес, а полтора
|
|
5879
|
-
десятка пунктов под ним читаются построчно. */
|
|
5880
|
-
--rt-nav-panel-item-font-size: var(--rt-text-sm);
|
|
5881
|
-
--rt-nav-panel-item-font-weight: var(--rt-font-weight-medium);
|
|
5882
|
-
--rt-nav-panel-item-content-gap: var(--rt-space-1);
|
|
5883
|
-
--rt-nav-panel-item-color: var(--rt-neutral-600);
|
|
5884
|
-
--rt-nav-panel-item-color-bg-hover: var(--rt-neutral-50);
|
|
5885
|
-
--rt-nav-panel-item-color-active: var(--rt-color-text-inverse);
|
|
5886
|
-
--rt-nav-panel-item-color-bg-active: var(--rt-color-action-primary);
|
|
5887
|
-
--rt-nav-panel-group-font-size: var(--rt-text-xs);
|
|
5888
|
-
--rt-nav-panel-group-font-weight: var(--rt-font-weight-medium);
|
|
5889
|
-
/* Заголовок группы светлее пункта, и оба берут порог контраста на белой панели.
|
|
5890
|
-
Отношения обеих пар считает проверка тёмной темы; таблица замера — на странице
|
|
5891
|
-
«Colors» витрины. */
|
|
5892
|
-
--rt-nav-panel-group-color: var(--rt-neutral-600);
|
|
5893
|
-
--rt-nav-panel-group-content-gap: var(--rt-space-2);
|
|
5894
|
-
/* Маркер непросмотренного. Точка стоит в потоке следом за подписью — и в ряду
|
|
5895
|
-
разделов, и в панели, и на узком экране: место ей даёт общий зазор
|
|
5896
|
-
содержимого пункта. */
|
|
5897
|
-
--rt-nav-caret-size: var(--rt-size-3);
|
|
5898
|
-
--rt-nav-marker-size: var(--rt-size-1);
|
|
5899
|
-
--rt-nav-marker-color: var(--rt-color-state-danger);
|
|
6483
|
+
/* Группа переключателей видом «чипы»: отдельные пункты с обводкой. Цвета — здесь, на корне:
|
|
6484
|
+
они не зависят от размера группы; размеры объявлены на самом хосте группы. Выбранный пункт
|
|
6485
|
+
в своём виде кита — мягкая марка, обводка у него та же, что у невыбранного. */
|
|
6486
|
+
--rt-toggle-chip-color-border: var(--rt-color-border-default);
|
|
6487
|
+
--rt-toggle-chip-color-text: var(--rt-color-text-muted);
|
|
6488
|
+
--rt-toggle-chip-color-bg-selected: var(--rt-color-action-primary-subtle);
|
|
5900
6489
|
/* Form field (rt-field) — обёртка анатомии поля: label / help / hint / error /
|
|
5901
6490
|
required-маркер / read-only значение. Визуал label+hint в стиле Tailwind
|
|
5902
6491
|
form (мелкий medium label, muted hint). Компоненты потребляют только эти
|
|
@@ -5909,8 +6498,11 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
5909
6498
|
--rt-field-hint-font-size: var(--rt-text-xs);
|
|
5910
6499
|
--rt-field-hint-color: var(--rt-color-text-muted);
|
|
5911
6500
|
--rt-field-error-font-size: var(--rt-text-xs);
|
|
6501
|
+
--rt-field-messages-line-height: normal;
|
|
6502
|
+
--rt-field-messages-padding-top: 0px;
|
|
5912
6503
|
--rt-field-error-color: var(--rt-color-state-danger);
|
|
5913
6504
|
--rt-field-required-color: var(--rt-color-state-danger);
|
|
6505
|
+
--rt-field-required-gap: var(--rt-space-1);
|
|
5914
6506
|
--rt-field-value-font-size: var(--rt-text-sm);
|
|
5915
6507
|
--rt-field-value-color: var(--rt-color-text-primary);
|
|
5916
6508
|
--rt-field-value-empty-color: var(--rt-color-text-muted);
|
|
@@ -5989,36 +6581,135 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
5989
6581
|
--rt-list-filter-line-height: var(--rt-leading-none);
|
|
5990
6582
|
--rt-list-placeholder-min-height: var(--rt-size-60);
|
|
5991
6583
|
--rt-list-placeholder-grow: 1;
|
|
6584
|
+
/* Навигация (rt-page-header). Шапка — отдельная плашка; отступ от краёв
|
|
6585
|
+
страницы задаёт тот, кто её ставит. */
|
|
6586
|
+
--rt-nav-header-padding: var(--rt-space-2) var(--rt-space-4);
|
|
6587
|
+
--rt-nav-header-color-bg: var(--rt-neutral-50);
|
|
6588
|
+
/* Первый уровень. Пункт ряда несёт плашку цвета самой шапки: на общем фоне её
|
|
6589
|
+
не видно, и белым проступает только активный раздел. Наведение красит
|
|
6590
|
+
подпись, а не фон — иначе оно спорит с этой подсветкой. */
|
|
6591
|
+
--rt-nav-item-height: var(--rt-size-6);
|
|
6592
|
+
--rt-nav-item-gap: var(--rt-space-1);
|
|
6593
|
+
--rt-nav-item-padding: var(--rt-space-2) var(--rt-space-2);
|
|
6594
|
+
--rt-nav-item-content-gap: var(--rt-space-2);
|
|
6595
|
+
--rt-nav-item-font-size: var(--rt-text-sm);
|
|
6596
|
+
--rt-nav-item-font-weight: var(--rt-font-weight-semibold);
|
|
6597
|
+
--rt-nav-item-line-height: var(--rt-leading-none);
|
|
6598
|
+
--rt-nav-item-color: var(--rt-color-text-primary);
|
|
6599
|
+
--rt-nav-item-color-hover: var(--rt-color-action-primary);
|
|
6600
|
+
--rt-nav-item-color-pressed: var(--rt-color-action-primary-hover);
|
|
6601
|
+
--rt-nav-item-color-bg: var(--rt-neutral-50);
|
|
6602
|
+
--rt-nav-item-color-border: var(--rt-neutral-50);
|
|
6603
|
+
--rt-nav-item-color-bg-active: var(--rt-color-bg-surface);
|
|
6604
|
+
--rt-nav-item-color-caret: var(--rt-neutral-200);
|
|
6605
|
+
/* Фокус обведён пунктиром: сплошная рамка на плашке пункта неотличима от его
|
|
6606
|
+
же границы. */
|
|
6607
|
+
--rt-nav-color-focus: var(--rt-color-action-primary);
|
|
6608
|
+
/* Недоступный пункт светлее доступного, а не другого оттенка: общий
|
|
6609
|
+
`text-disabled` уходит в сине-стальной и рядом с серой подписью читается
|
|
6610
|
+
как второй цвет, а не как выключенное состояние. */
|
|
6611
|
+
--rt-nav-color-disabled: var(--rt-neutral-300);
|
|
6612
|
+
/* Попап профиля. Подложку берёт у панели навигации, своего здесь — габариты
|
|
6613
|
+
блока пользователя, тень и набор строк: строк четыре, и они читаются как
|
|
6614
|
+
список действий, а не как выпадающее меню. */
|
|
6615
|
+
--rt-profile-menu-min-width: var(--rt-size-60);
|
|
6616
|
+
--rt-profile-menu-padding: var(--rt-space-5);
|
|
6617
|
+
--rt-profile-menu-shadow: var(--rt-shadow-profile-menu);
|
|
6618
|
+
--rt-profile-menu-border-width: var(--rt-border-width-thin);
|
|
6619
|
+
--rt-profile-menu-radius: var(--rt-radius-md);
|
|
6620
|
+
--rt-profile-avatar-size: var(--rt-size-10);
|
|
6621
|
+
--rt-profile-avatar-font-size: var(--rt-text-2xl);
|
|
6622
|
+
--rt-profile-avatar-border-width: var(--rt-border-width-medium);
|
|
6623
|
+
--rt-profile-avatar-radius: var(--rt-radius-full);
|
|
6624
|
+
--rt-profile-item-padding-y: var(--rt-space-4);
|
|
6625
|
+
--rt-profile-item-content-gap: var(--rt-space-2);
|
|
6626
|
+
--rt-profile-item-font-size: var(--rt-text-md);
|
|
6627
|
+
--rt-profile-item-font-weight: var(--rt-font-weight-medium);
|
|
6628
|
+
--rt-profile-item-radius: var(--rt-radius-md);
|
|
6629
|
+
/* Строки выступают за содержимое панели на половину её отступа: так
|
|
6630
|
+
подсветка на наведении не упирается в рамку, а иконка остаётся на одной
|
|
6631
|
+
вертикали с содержимым. Это же число — горизонтальный отступ строки. */
|
|
6632
|
+
--rt-profile-row-inset: var(--rt-space-2);
|
|
6633
|
+
--rt-profile-theme-icon-padding: var(--rt-space-2);
|
|
6634
|
+
--rt-profile-theme-icon-radius: var(--rt-radius-full);
|
|
6635
|
+
/* Габариты панели второго уровня: ширина считается числом колонок, поэтому
|
|
6636
|
+
колонка, промежуток и внутренний отступ — токены, из которых панель
|
|
6637
|
+
складывает свою ширину. По вертикали отступ крупнее: у первой группы над
|
|
6638
|
+
заголовком нет ничего, и панель иначе начинается впритык. */
|
|
6639
|
+
--rt-nav-panel-column-width: var(--rt-size-60);
|
|
6640
|
+
--rt-nav-panel-column-gap: var(--rt-space-5);
|
|
6641
|
+
--rt-nav-panel-padding: var(--rt-space-4);
|
|
6642
|
+
--rt-nav-panel-padding-y: var(--rt-space-md);
|
|
6643
|
+
--rt-nav-panel-group-gap: var(--rt-space-8);
|
|
6644
|
+
--rt-nav-panel-item-gap: var(--rt-space-0-5);
|
|
6645
|
+
--rt-nav-panel-item-height: var(--rt-size-6);
|
|
6646
|
+
--rt-nav-panel-item-padding: var(--rt-space-1) var(--rt-space-2);
|
|
6647
|
+
--rt-nav-panel-columns: 1;
|
|
6648
|
+
--rt-nav-panel-color-bg: var(--rt-color-bg-surface);
|
|
6649
|
+
--rt-nav-panel-color-border: var(--rt-neutral-200);
|
|
6650
|
+
--rt-nav-panel-shadow: var(--rt-shadow-nav-panel);
|
|
6651
|
+
/* Второй уровень набран легче первого: ряд разделов держит вес, а полтора
|
|
6652
|
+
десятка пунктов под ним читаются построчно. */
|
|
6653
|
+
--rt-nav-panel-item-font-size: var(--rt-text-sm);
|
|
6654
|
+
--rt-nav-panel-item-font-weight: var(--rt-font-weight-medium);
|
|
6655
|
+
--rt-nav-panel-item-content-gap: var(--rt-space-1);
|
|
6656
|
+
--rt-nav-panel-item-color: var(--rt-neutral-600);
|
|
6657
|
+
--rt-nav-panel-item-color-bg-hover: var(--rt-neutral-50);
|
|
6658
|
+
--rt-nav-panel-item-color-active: var(--rt-color-text-inverse);
|
|
6659
|
+
--rt-nav-panel-item-color-bg-active: var(--rt-color-action-primary);
|
|
6660
|
+
--rt-nav-panel-group-font-size: var(--rt-text-xs);
|
|
6661
|
+
--rt-nav-panel-group-font-weight: var(--rt-font-weight-medium);
|
|
6662
|
+
/* Заголовок группы светлее пункта, и оба берут порог контраста на белой панели.
|
|
6663
|
+
Отношения обеих пар считает проверка тёмной темы; таблица замера — на странице
|
|
6664
|
+
«Colors» витрины. */
|
|
6665
|
+
--rt-nav-panel-group-color: var(--rt-neutral-600);
|
|
6666
|
+
--rt-nav-panel-group-content-gap: var(--rt-space-2);
|
|
6667
|
+
/* Маркер непросмотренного. Точка стоит в потоке следом за подписью — и в ряду
|
|
6668
|
+
разделов, и в панели, и на узком экране: место ей даёт общий зазор
|
|
6669
|
+
содержимого пункта. */
|
|
6670
|
+
--rt-nav-caret-size: var(--rt-size-3);
|
|
6671
|
+
--rt-nav-marker-size: var(--rt-size-1);
|
|
6672
|
+
--rt-nav-marker-color: var(--rt-color-state-danger);
|
|
6673
|
+
/* Вкладки (rt-tabs). Полоса выбранной вкладки переезжает на новую, а панель
|
|
6674
|
+
меняется сдвигом по направлению перехода. Сдвиг панели в своём виде кита выключен
|
|
6675
|
+
нулевой длительностью: содержимое вкладки сменяется на месте, как раньше. */
|
|
6676
|
+
--rt-tabs-indicator-duration: var(--rt-duration-base);
|
|
6677
|
+
--rt-tabs-indicator-easing: ease-out;
|
|
6678
|
+
--rt-tabs-panel-duration: 0ms;
|
|
6679
|
+
--rt-tabs-panel-easing: ease-out;
|
|
6680
|
+
/* Прокрутка полосы вкладок стрелками и к выбранной вкладке. */
|
|
6681
|
+
--rt-tabs-scroll-duration: var(--rt-duration-base);
|
|
6682
|
+
--rt-tabs-scroll-easing: ease-out;
|
|
5992
6683
|
/* Подложки */
|
|
5993
6684
|
--rt-color-bg-page: var(--rt-mat-neutral-5);
|
|
5994
|
-
--rt-color-bg-surface: var(--
|
|
6685
|
+
--rt-color-bg-surface: var(--rt-sys-surface, var(--rt-mat-neutral-0));
|
|
5995
6686
|
--rt-color-bg-surface-subtle: var(--rt-mat-overlay-black-4);
|
|
5996
|
-
--rt-color-bg-surface-subtle-2: var(--
|
|
6687
|
+
--rt-color-bg-surface-subtle-2: var(--rt-field-filled-container-color, var(--rt-sys-surface-variant, var(--rt-mat-neutral-15)));
|
|
5997
6688
|
--rt-color-bg-hover: var(--rt-mat-neutral-10);
|
|
5998
6689
|
--rt-color-bg-subtle: var(--rt-mat-neutral-10);
|
|
5999
6690
|
--rt-color-bg-overlay: var(--rt-mat-overlay-black-32);
|
|
6000
|
-
--rt-color-bg-inverse: var(--
|
|
6001
|
-
--rt-color-bg-nav: var(--
|
|
6691
|
+
--rt-color-bg-inverse: var(--rt-sys-inverse-surface, var(--rt-mat-neutral-100));
|
|
6692
|
+
--rt-color-bg-nav: var(--rt-sys-primary, var(--rt-mat-navy-100)); /* марка первого кита: обвязка тёмная в обоих наборах */
|
|
6002
6693
|
--rt-color-bg-page-auth: var(--rt-mat-neutral-5);
|
|
6003
6694
|
--rt-color-bg-surface-auth-card: var(--rt-mat-neutral-0);
|
|
6004
6695
|
/* Текст */
|
|
6005
|
-
--rt-color-text-primary: var(--
|
|
6696
|
+
--rt-color-text-primary: var(--rt-sys-on-surface, var(--rt-mat-neutral-100));
|
|
6006
6697
|
--rt-color-text-muted: var(--rt-mat-neutral-60);
|
|
6007
|
-
--rt-color-text-disabled: color-mix(in srgb, var(--
|
|
6008
|
-
--rt-color-text-inverse: var(--
|
|
6009
|
-
--rt-color-text-link: var(--
|
|
6010
|
-
--rt-color-text-link-hover: color-mix(in srgb, var(--
|
|
6698
|
+
--rt-color-text-disabled: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-100)) 38%, transparent);
|
|
6699
|
+
--rt-color-text-inverse: var(--rt-sys-inverse-on-surface, var(--rt-mat-neutral-0));
|
|
6700
|
+
--rt-color-text-link: var(--rt-sys-primary, var(--rt-mat-blue-100));
|
|
6701
|
+
--rt-color-text-link-hover: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 90%, #000);
|
|
6011
6702
|
/* Рамки */
|
|
6012
6703
|
--rt-color-border-default: var(--rt-mat-neutral-25);
|
|
6013
6704
|
--rt-color-border-strong: var(--rt-mat-neutral-30);
|
|
6014
6705
|
--rt-color-border-subtle: var(--rt-mat-neutral-20);
|
|
6015
6706
|
--rt-color-border-focus: var(--rt-mat-blue-40); /* кольцо фокуса первого кита светлее его действия */
|
|
6016
6707
|
/* Действие: подложка, наведение, нажатие, подпись на них и цвет роли на поверхности */
|
|
6017
|
-
--rt-color-action-primary: var(--
|
|
6018
|
-
--rt-color-action-primary-hover: color-mix(in srgb, var(--
|
|
6019
|
-
--rt-color-action-primary-active: color-mix(in srgb, var(--
|
|
6020
|
-
--rt-color-action-primary-subtle: color-mix(in srgb, var(--
|
|
6021
|
-
--rt-color-action-primary-soft: color-mix(in srgb, var(--
|
|
6708
|
+
--rt-color-action-primary: var(--rt-sys-primary, var(--rt-mat-blue-100));
|
|
6709
|
+
--rt-color-action-primary-hover: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 90%, #000);
|
|
6710
|
+
--rt-color-action-primary-active: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 80%, #000);
|
|
6711
|
+
--rt-color-action-primary-subtle: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 8%, transparent);
|
|
6712
|
+
--rt-color-action-primary-soft: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 24%, transparent);
|
|
6022
6713
|
--rt-color-action-on-primary: var(--rt-mat-neutral-0);
|
|
6023
6714
|
--rt-color-action-secondary: var(--rt-mat-neutral-60);
|
|
6024
6715
|
--rt-color-action-secondary-hover: var(--rt-mat-neutral-hover);
|
|
@@ -6033,15 +6724,15 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
6033
6724
|
--rt-color-action-warning-hover: var(--rt-mat-orange-hover);
|
|
6034
6725
|
--rt-color-action-warning-active: var(--rt-mat-orange-active);
|
|
6035
6726
|
--rt-color-action-on-warning: var(--rt-mat-neutral-0);
|
|
6036
|
-
--rt-color-action-danger: var(--
|
|
6037
|
-
--rt-color-action-danger-hover: color-mix(in srgb, var(--
|
|
6038
|
-
--rt-color-action-danger-active: color-mix(in srgb, var(--
|
|
6727
|
+
--rt-color-action-danger: var(--rt-sys-error, var(--rt-mat-red-100));
|
|
6728
|
+
--rt-color-action-danger-hover: color-mix(in srgb, var(--rt-sys-error, var(--rt-mat-red-100)) 90%, #000);
|
|
6729
|
+
--rt-color-action-danger-active: color-mix(in srgb, var(--rt-sys-error, var(--rt-mat-red-100)) 80%, #000);
|
|
6039
6730
|
--rt-color-action-on-danger: var(--rt-mat-neutral-0);
|
|
6040
|
-
--rt-color-action-info: var(--
|
|
6041
|
-
--rt-color-action-info-hover: color-mix(in srgb, var(--
|
|
6042
|
-
--rt-color-action-info-active: color-mix(in srgb, var(--
|
|
6731
|
+
--rt-color-action-info: var(--rt-sys-primary, var(--rt-mat-blue-100));
|
|
6732
|
+
--rt-color-action-info-hover: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 90%, #000);
|
|
6733
|
+
--rt-color-action-info-active: color-mix(in srgb, var(--rt-sys-primary, var(--rt-mat-blue-100)) 80%, #000);
|
|
6043
6734
|
--rt-color-action-on-info: var(--rt-mat-neutral-0);
|
|
6044
|
-
--rt-color-action-disabled: color-mix(in srgb, var(--
|
|
6735
|
+
--rt-color-action-disabled: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-100)) 12%, transparent);
|
|
6045
6736
|
/* Состояния: цвет роли и её светлая подложка */
|
|
6046
6737
|
--rt-color-state-success: var(--rt-mat-green-100);
|
|
6047
6738
|
--rt-color-state-success-bg: var(--rt-mat-green-10);
|
|
@@ -6049,11 +6740,11 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
6049
6740
|
--rt-color-state-warning: var(--rt-mat-orange-100);
|
|
6050
6741
|
--rt-color-state-warning-bg: var(--rt-mat-orange-5);
|
|
6051
6742
|
--rt-color-state-warning-text: var(--rt-mat-orange-100);
|
|
6052
|
-
--rt-color-state-danger: var(--
|
|
6053
|
-
--rt-color-state-danger-bg: var(--
|
|
6054
|
-
--rt-color-state-error-text: var(--
|
|
6055
|
-
--rt-color-state-info: var(--
|
|
6056
|
-
--rt-color-state-info-bg: var(--
|
|
6743
|
+
--rt-color-state-danger: var(--rt-sys-error, var(--rt-mat-red-100));
|
|
6744
|
+
--rt-color-state-danger-bg: var(--rt-sys-error-container, var(--rt-mat-red-10));
|
|
6745
|
+
--rt-color-state-error-text: var(--rt-sys-error, var(--rt-mat-red-100));
|
|
6746
|
+
--rt-color-state-info: var(--rt-sys-primary, var(--rt-mat-blue-100));
|
|
6747
|
+
--rt-color-state-info-bg: var(--rt-sys-primary-container, var(--rt-mat-blue-20));
|
|
6057
6748
|
/* Рельса шагов */
|
|
6058
6749
|
--rt-color-stepper-track: var(--rt-mat-neutral-30);
|
|
6059
6750
|
/* Заглушка загрузки: краски те же, что набор давал ей прежде через подложку и
|
|
@@ -6061,27 +6752,27 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
6061
6752
|
--rt-color-skeleton-base: var(--rt-mat-neutral-10);
|
|
6062
6753
|
--rt-color-skeleton-wave: var(--rt-mat-neutral-25);
|
|
6063
6754
|
/* Шапка таблицы первого кита залита тем же цветом, что залитое поле Material. */
|
|
6064
|
-
--rt-color-table-head-bg: var(--
|
|
6755
|
+
--rt-color-table-head-bg: var(--rt-field-filled-container-color, var(--rt-sys-surface-variant, var(--rt-mat-overlay-black-4)));
|
|
6065
6756
|
/* Черта снизу у залитого поля Material — цвет on-surface-variant темы. */
|
|
6066
|
-
--rt-color-field-fill-underline: var(--
|
|
6757
|
+
--rt-color-field-fill-underline: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-30));
|
|
6067
6758
|
/* Поиск списка первого кита — обведённое или залитое поле Material при плотности −1:
|
|
6068
6759
|
52px, скругление 4px, рамка цвета outline темы, внутри прозрачное. Ступени 52px нет, высота собрана из ступени
|
|
6069
6760
|
xl без ступени 1. */
|
|
6070
6761
|
--rt-list-search-height: calc(var(--rt-control-height-xl) - var(--rt-space-1));
|
|
6071
6762
|
--rt-list-search-radius: var(--rt-radius-sm);
|
|
6072
|
-
--rt-list-search-color-border: var(--
|
|
6763
|
+
--rt-list-search-color-border: var(--rt-sys-outline, var(--rt-mat-neutral-25));
|
|
6073
6764
|
--rt-list-search-color-bg: transparent;
|
|
6074
6765
|
--rt-list-search-width: calc(var(--rt-size-64) + var(--rt-size-24));
|
|
6075
6766
|
--rt-list-search-padding-x: calc(var(--rt-space-2) + var(--rt-space-1) - var(--rt-border-width-thin));
|
|
6076
6767
|
--rt-list-search-gap: var(--rt-space-4);
|
|
6077
6768
|
--rt-list-search-font-size: var(--rt-text-md);
|
|
6078
6769
|
--rt-list-search-icon-size: var(--rt-size-6);
|
|
6079
|
-
--rt-list-search-icon-color: var(--
|
|
6080
|
-
--rt-list-search-color-placeholder: var(--
|
|
6770
|
+
--rt-list-search-icon-color: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-60));
|
|
6771
|
+
--rt-list-search-color-placeholder: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-60));
|
|
6081
6772
|
/* Панель настройки колонок первого кита: плашка колонки залита цветом выбранного пункта
|
|
6082
6773
|
Material, значки — в тоне on-surface-variant темы. Сняты с панели на витрине первого кита. */
|
|
6083
|
-
--rt-list-settings-item-bg: var(--
|
|
6084
|
-
--rt-list-settings-icon-color: var(--
|
|
6774
|
+
--rt-list-settings-item-bg: var(--rt-option-selected-state-layer-color, var(--rt-sys-secondary-container, var(--rt-mat-neutral-10)));
|
|
6775
|
+
--rt-list-settings-icon-color: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-60));
|
|
6085
6776
|
/* Кнопки действий панели списка — mat-mini-fab первого кита: круг без заливки с подъёмом 6,
|
|
6086
6777
|
под указателем подъём 8 и тёмный значок вместо серого; значок 24px, промежуток 16px. */
|
|
6087
6778
|
--rt-list-action-gap: var(--rt-space-md);
|
|
@@ -6092,16 +6783,16 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
6092
6783
|
--rt-list-action-icon-size: var(--rt-size-6);
|
|
6093
6784
|
--rt-list-action-color: var(--rt-mat-neutral-60);
|
|
6094
6785
|
--rt-list-table-icon-size: var(--rt-size-6);
|
|
6095
|
-
--rt-list-table-icon-color: var(--
|
|
6096
|
-
--rt-list-table-head-divider-color: var(--
|
|
6786
|
+
--rt-list-table-icon-color: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-60));
|
|
6787
|
+
--rt-list-table-head-divider-color: var(--rt-sys-outline, var(--rt-mat-neutral-30));
|
|
6097
6788
|
--rt-list-table-button-size: calc(var(--rt-size-8) + var(--rt-size-1));
|
|
6098
6789
|
--rt-list-table-button-radius: var(--rt-radius-full);
|
|
6099
6790
|
--rt-list-copy-button-size: var(--rt-size-6);
|
|
6100
6791
|
--rt-list-copy-button-radius: var(--rt-mat-radius-5);
|
|
6101
6792
|
--rt-list-settings-item-radius: var(--rt-mat-radius-5);
|
|
6102
6793
|
--rt-list-filter-line-height: var(--rt-size-6);
|
|
6103
|
-
--rt-list-copy-button-bg: var(--
|
|
6104
|
-
--rt-list-copy-button-bg-hover: var(--
|
|
6794
|
+
--rt-list-copy-button-bg: var(--rt-fab-small-container-color, var(--rt-mat-neutral-0));
|
|
6795
|
+
--rt-list-copy-button-bg-hover: var(--rt-fab-small-container-color, var(--rt-mat-neutral-0));
|
|
6105
6796
|
--rt-list-copy-button-color: var(--rt-mat-neutral-60);
|
|
6106
6797
|
--rt-list-action-color-hover: var(--rt-mat-neutral-100);
|
|
6107
6798
|
--rt-list-action-color-bg-hover: transparent;
|
|
@@ -6155,23 +6846,23 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
6155
6846
|
скруглён только снизу, подсказка 4px без тени. Тень — подъём 2 Material, как у mat-menu и
|
|
6156
6847
|
mat-select. */
|
|
6157
6848
|
--rt-overlay-menu-radius: var(--rt-mat-radius-4);
|
|
6158
|
-
--rt-overlay-menu-shadow: var(--
|
|
6849
|
+
--rt-overlay-menu-shadow: var(--rt-sys-level2, var(--rt-mat-shadow-level-2));
|
|
6159
6850
|
--rt-overlay-select-radius: 0 0 var(--rt-mat-radius-4) var(--rt-mat-radius-4);
|
|
6160
|
-
--rt-overlay-select-shadow: var(--
|
|
6851
|
+
--rt-overlay-select-shadow: var(--rt-sys-level2, var(--rt-mat-shadow-level-2));
|
|
6161
6852
|
--rt-overlay-tooltip-radius: var(--rt-mat-radius-4);
|
|
6162
6853
|
--rt-overlay-tooltip-shadow: none;
|
|
6163
6854
|
/* Меню строки — mat-menu первого кита: фон контейнера Material, отступ 8px сверху и снизу,
|
|
6164
6855
|
подписи весом 500, опасный пункт красным первого кита. Выпадающий список — mat-select: пункты
|
|
6165
6856
|
16px, выбранный — фон текста 12% без жирного и с галочкой. */
|
|
6166
|
-
--rt-overlay-menu-bg: var(--
|
|
6857
|
+
--rt-overlay-menu-bg: var(--rt-menu-container-color, var(--rt-mat-neutral-0));
|
|
6167
6858
|
--rt-overlay-menu-padding-y: var(--rt-space-sm);
|
|
6168
6859
|
--rt-overlay-menu-item-weight: var(--rt-font-weight-medium);
|
|
6169
6860
|
--rt-overlay-menu-danger-color: var(--rt-mat-red-100);
|
|
6170
6861
|
--rt-overlay-select-option-font-size: var(--rt-text-md);
|
|
6171
|
-
--rt-overlay-select-selected-bg: color-mix(in srgb, var(--
|
|
6862
|
+
--rt-overlay-select-selected-bg: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-100)) 12%, transparent);
|
|
6172
6863
|
--rt-overlay-select-selected-weight: var(--rt-font-weight-regular);
|
|
6173
6864
|
--rt-overlay-select-check-display: inline-flex;
|
|
6174
|
-
--rt-overlay-menu-current-bg: color-mix(in srgb, var(--
|
|
6865
|
+
--rt-overlay-menu-current-bg: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-100)) 12%, transparent);
|
|
6175
6866
|
--rt-overlay-menu-min-width: var(--rt-mat-menu-min-width);
|
|
6176
6867
|
--rt-overlay-menu-item-min-height: var(--rt-size-12);
|
|
6177
6868
|
--rt-overlay-menu-item-padding-y: 0px;
|
|
@@ -6185,6 +6876,78 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
6185
6876
|
--rt-icon-button-disabled-opacity: 1;
|
|
6186
6877
|
--rt-icon-button-disabled-color: var(--rt-color-text-disabled);
|
|
6187
6878
|
--rt-icon-button-disabled-fill: 0%;
|
|
6879
|
+
/* Обведённое поле Material: прозрачное, рамка цвета outline темы, фокус — рамка в два
|
|
6880
|
+
пикселя цветом марки без внешнего кольца. Вторая линия рамки фокуса — внутренняя тень. */
|
|
6881
|
+
--rt-input-color-bg: transparent;
|
|
6882
|
+
--rt-input-color-border: var(--rt-sys-outline, var(--rt-mat-neutral-60));
|
|
6883
|
+
--rt-input-focus-shadow: inset 0 0 0 1px var(--rt-input-color-border-focus);
|
|
6884
|
+
--rt-input-focus-shadow-error: inset 0 0 0 1px var(--rt-input-color-border-error);
|
|
6885
|
+
/* Размер поля Material: 56 px при плотности 0 и на 4 px меньше за каждый шаг, значение 16 px.
|
|
6886
|
+
Шаг приходит свойством `--rt-input-density`, которое ставит атрибут `data-rt-density` на поле
|
|
6887
|
+
или на любом предке, — правила в `_density.scss`. Высота считается здесь, на узле с признаком
|
|
6888
|
+
набора, из унаследованного шага: атрибут на корне приложения доходит и до поля со своим
|
|
6889
|
+
признаком набора. Своя высота приложения — `--rt-input-height-app` на любом предке; она сильнее
|
|
6890
|
+
плотности и не перебивается набором на самом поле. */
|
|
6891
|
+
--rt-input-height-md: var(
|
|
6892
|
+
--rt-input-height-app,
|
|
6893
|
+
calc(var(--rt-size-12) + var(--rt-size-2) - var(--rt-input-density) * var(--rt-size-1))
|
|
6894
|
+
);
|
|
6895
|
+
--rt-input-height: var(--rt-input-height-md);
|
|
6896
|
+
/* Крупная ступень `size` не ниже средней высоты набора: 48 px кита под набором вышли бы ниже
|
|
6897
|
+
поля по умолчанию (56 px). Малая ступень остаётся ступенью кита — по ней стоят поиск списка и
|
|
6898
|
+
правка на месте. */
|
|
6899
|
+
--rt-input-height-lg: max(var(--rt-control-height-lg), var(--rt-input-height-md));
|
|
6900
|
+
--rt-input-font-size: var(--rt-text-md);
|
|
6901
|
+
/* Подсказка, подпись в покое, значки и стрелка поля — цвета on-surface-variant темы Material,
|
|
6902
|
+
каретка — цвета марки, значки 24 px, как у поля Material. Без темы Material цвета прежние. */
|
|
6903
|
+
--rt-input-color-text-placeholder: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-60));
|
|
6904
|
+
--rt-input-icon-color: var(--rt-sys-on-surface-variant, var(--rt-neutral-600));
|
|
6905
|
+
--rt-input-icon-size: var(--rt-size-6);
|
|
6906
|
+
--rt-input-caret-color: var(--rt-color-action-primary);
|
|
6907
|
+
/* Отключённое поле Material: поле не тускнеет целиком — рамка on-surface 12%, текст и
|
|
6908
|
+
подсказка on-surface 38%. */
|
|
6909
|
+
--rt-input-disabled-field-opacity: 1;
|
|
6910
|
+
--rt-input-color-border-disabled: var(--rt-color-action-disabled);
|
|
6911
|
+
--rt-input-color-text-disabled: var(--rt-color-text-disabled);
|
|
6912
|
+
--rt-input-color-placeholder-disabled: var(--rt-color-text-disabled);
|
|
6913
|
+
--rt-input-color-bg-disabled: transparent;
|
|
6914
|
+
/* Крестик очистки — крестик первого кита: 19 px, значок 12 px, серый, в 8 px от края поля и в
|
|
6915
|
+
4 px от текста. Отступ от края считается от правого поля в 4 px, как у поля Material с крестиком. */
|
|
6916
|
+
--rt-input-clear-size: 19px;
|
|
6917
|
+
--rt-input-clear-icon-size: var(--rt-size-3);
|
|
6918
|
+
--rt-input-clear-color: var(--rt-mat-neutral-60);
|
|
6919
|
+
--rt-input-clear-offset-end: calc(var(--rt-space-2) - var(--rt-space-1));
|
|
6920
|
+
--rt-input-clear-offset-start: calc(var(--rt-space-1) - var(--rt-input-gap));
|
|
6921
|
+
--rt-input-fill-color-bg-disabled: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-100)) 4%, transparent);
|
|
6922
|
+
--rt-input-clear-bg: var(--rt-mat-neutral-25);
|
|
6923
|
+
--rt-input-clear-bg-hover: var(--rt-input-clear-bg);
|
|
6924
|
+
--rt-input-clear-radius: var(--rt-radius-full);
|
|
6925
|
+
/* Залитое поле Material: рамки сверху и по бокам нет, только черта снизу; в фокусе черта
|
|
6926
|
+
вдвое толще цветом марки, у недействительного поля — цветом ошибки. */
|
|
6927
|
+
--rt-input-fill-edge: 0px;
|
|
6928
|
+
--rt-input-fill-focus-shadow: inset 0 -1px 0 0 var(--rt-input-color-border-focus);
|
|
6929
|
+
--rt-input-fill-focus-shadow-error: inset 0 -1px 0 0 var(--rt-input-color-border-error);
|
|
6930
|
+
/* Звёздочка обязательного поля — цвета подписи, как у поля Material; цвет ошибки она берёт
|
|
6931
|
+
только у недействительного поля, правилом самого поля. */
|
|
6932
|
+
--rt-field-required-color: currentcolor;
|
|
6933
|
+
--rt-field-required-gap: 0px;
|
|
6934
|
+
/* Строка под полем — строка подсказки Material: 16 px высотой и 4 px над ней. */
|
|
6935
|
+
--rt-field-messages-line-height: var(--rt-size-4);
|
|
6936
|
+
--rt-field-messages-padding-top: var(--rt-space-1);
|
|
6937
|
+
/* Группа переключателей видом «чипы» — фильтр-чип Material: обводка цвета outline темы,
|
|
6938
|
+
выбранный залит secondary-container, отключённый — текст 38 %, обводка 12 %. Обводку и цвет
|
|
6939
|
+
текста у выбранного задаёт лист чипов: своё имя каждому стоило бы по разу на тему, набор и
|
|
6940
|
+
островок, а начальный пакет приложения-образца стоит у порога. */
|
|
6941
|
+
--rt-toggle-chip-color-border: var(--rt-sys-outline, var(--rt-mat-neutral-60));
|
|
6942
|
+
--rt-toggle-chip-color-text: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-70));
|
|
6943
|
+
--rt-toggle-chip-color-bg-selected: var(--rt-sys-secondary-container, var(--rt-mat-neutral-25));
|
|
6944
|
+
/* Вкладки: полоса и панель движутся, как у вкладок Material, — полсекунды с той же кривой. */
|
|
6945
|
+
--rt-tabs-indicator-duration: var(--rt-duration-slower);
|
|
6946
|
+
--rt-tabs-indicator-easing: cubic-bezier(0.35, 0, 0.25, 1);
|
|
6947
|
+
--rt-tabs-panel-duration: var(--rt-duration-slower);
|
|
6948
|
+
--rt-tabs-panel-easing: cubic-bezier(0.35, 0, 0.25, 1);
|
|
6949
|
+
--rt-tabs-scroll-duration: var(--rt-duration-slower);
|
|
6950
|
+
--rt-tabs-scroll-easing: cubic-bezier(0.35, 0, 0.25, 1);
|
|
6188
6951
|
/* The Material colours of the page are resolved dark under the kit's dark theme. */
|
|
6189
6952
|
color-scheme: dark;
|
|
6190
6953
|
/* Background — тёплый графит */
|
|
@@ -6235,6 +6998,14 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
6235
6998
|
--rt-pagination-field-color-bg: var(--rt-input-color-bg);
|
|
6236
6999
|
--rt-pagination-field-color-text: var(--rt-input-color-text);
|
|
6237
7000
|
--rt-input-icon-color: var(--rt-neutral-600);
|
|
7001
|
+
--rt-input-clear-color: var(--rt-neutral-600);
|
|
7002
|
+
--rt-input-clear-bg: transparent;
|
|
7003
|
+
--rt-input-clear-bg-hover: var(--rt-icon-button-color-bg-hover);
|
|
7004
|
+
--rt-toggle-chip-color-border: var(--rt-color-border-default);
|
|
7005
|
+
--rt-toggle-chip-color-text: var(--rt-color-text-muted);
|
|
7006
|
+
--rt-toggle-chip-color-bg-selected: var(--rt-color-action-primary-subtle);
|
|
7007
|
+
--rt-input-fill-color-bg-disabled: var(--rt-color-bg-surface-subtle-2);
|
|
7008
|
+
--rt-input-color-text-placeholder: var(--rt-color-text-muted);
|
|
6238
7009
|
/* Stepper — в dark рельса уходит от яркого синего к приглушённому серо-синему
|
|
6239
7010
|
(текущий шаг остаётся янтарным из light-семантики). */
|
|
6240
7011
|
--rt-color-stepper-track: var(--rt-navy-600);
|
|
@@ -6323,42 +7094,49 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
6323
7094
|
/* Skeleton — заглушка загрузки: покой и гребень волны. */
|
|
6324
7095
|
--rt-color-skeleton-base: var(--rt-charcoal-950);
|
|
6325
7096
|
--rt-color-skeleton-wave: var(--rt-charcoal-border);
|
|
6326
|
-
--rt-color-bg-surface: var(--
|
|
6327
|
-
--rt-color-bg-surface-subtle-2: var(--
|
|
6328
|
-
--rt-color-bg-inverse: var(--
|
|
6329
|
-
--rt-color-text-primary: var(--
|
|
6330
|
-
--rt-color-text-disabled: color-mix(in srgb, var(--
|
|
6331
|
-
--rt-color-text-inverse: var(--
|
|
6332
|
-
--rt-color-text-link: var(--
|
|
7097
|
+
--rt-color-bg-surface: var(--rt-sys-surface, var(--rt-charcoal-800));
|
|
7098
|
+
--rt-color-bg-surface-subtle-2: var(--rt-field-filled-container-color, var(--rt-sys-surface-variant, var(--rt-charcoal-950)));
|
|
7099
|
+
--rt-color-bg-inverse: var(--rt-sys-inverse-surface, var(--rt-neutral-0));
|
|
7100
|
+
--rt-color-text-primary: var(--rt-sys-on-surface, var(--rt-neutral-50));
|
|
7101
|
+
--rt-color-text-disabled: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-0)) 38%, transparent);
|
|
7102
|
+
--rt-color-text-inverse: var(--rt-sys-inverse-on-surface, var(--rt-neutral-900));
|
|
7103
|
+
--rt-color-text-link: var(--rt-sys-primary, var(--rt-brand-300));
|
|
6333
7104
|
--rt-color-border-subtle: var(--rt-mat-dark-20);
|
|
6334
|
-
--rt-color-action-disabled: color-mix(in srgb, var(--
|
|
6335
|
-
--rt-color-state-danger-bg: var(--
|
|
6336
|
-
--rt-color-state-error-text: var(--
|
|
6337
|
-
--rt-color-state-info-bg: var(--
|
|
6338
|
-
--rt-color-table-head-bg: var(
|
|
6339
|
-
|
|
6340
|
-
|
|
6341
|
-
);
|
|
6342
|
-
--rt-color-field-fill-underline: var(--mat-sys-on-surface-variant, var(--rt-color-border-strong));
|
|
6343
|
-
--rt-list-search-color-border: var(--mat-sys-outline, var(--rt-input-color-border));
|
|
7105
|
+
--rt-color-action-disabled: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-0)) 12%, transparent);
|
|
7106
|
+
--rt-color-state-danger-bg: var(--rt-sys-error-container, color-mix(in srgb, var(--rt-danger-500) 12%, transparent));
|
|
7107
|
+
--rt-color-state-error-text: var(--rt-sys-error, var(--rt-danger-500));
|
|
7108
|
+
--rt-color-state-info-bg: var(--rt-sys-primary-container, color-mix(in srgb, var(--rt-info-500) 12%, transparent));
|
|
7109
|
+
--rt-color-table-head-bg: var(--rt-field-filled-container-color, var(--rt-sys-surface-variant, var(--rt-color-bg-surface-subtle)));
|
|
7110
|
+
--rt-color-field-fill-underline: var(--rt-sys-on-surface-variant, var(--rt-color-border-strong));
|
|
7111
|
+
--rt-list-search-color-border: var(--rt-sys-outline, var(--rt-input-color-border));
|
|
6344
7112
|
--rt-list-search-color-bg: transparent;
|
|
6345
|
-
--rt-list-search-icon-color: var(--
|
|
6346
|
-
--rt-list-search-color-placeholder: var(--
|
|
6347
|
-
--rt-list-settings-item-bg: var(--
|
|
6348
|
-
--rt-list-settings-icon-color: var(--
|
|
6349
|
-
--rt-list-table-icon-color: var(--
|
|
6350
|
-
--rt-list-table-head-divider-color: var(--
|
|
6351
|
-
--rt-list-copy-button-bg: var(--
|
|
6352
|
-
--rt-list-copy-button-bg-hover: var(--
|
|
7113
|
+
--rt-list-search-icon-color: var(--rt-sys-on-surface-variant, var(--rt-input-icon-color));
|
|
7114
|
+
--rt-list-search-color-placeholder: var(--rt-sys-on-surface-variant, var(--rt-input-color-text-placeholder));
|
|
7115
|
+
--rt-list-settings-item-bg: var(--rt-option-selected-state-layer-color, var(--rt-sys-secondary-container, var(--rt-color-bg-subtle)));
|
|
7116
|
+
--rt-list-settings-icon-color: var(--rt-sys-on-surface-variant, var(--rt-color-text-muted));
|
|
7117
|
+
--rt-list-table-icon-color: var(--rt-sys-on-surface-variant, var(--rt-color-text-primary));
|
|
7118
|
+
--rt-list-table-head-divider-color: var(--rt-sys-outline, var(--rt-color-border-strong));
|
|
7119
|
+
--rt-list-copy-button-bg: var(--rt-fab-small-container-color, transparent);
|
|
7120
|
+
--rt-list-copy-button-bg-hover: var(--rt-fab-small-container-color, var(--rt-icon-button-color-bg-hover));
|
|
6353
7121
|
--rt-pagination-box-color-border: var(--rt-mat-dark-30);
|
|
6354
7122
|
--rt-pagination-box-color-text: var(--rt-mat-neutral-40);
|
|
6355
7123
|
--rt-pagination-box-current-color-bg: var(--rt-mat-neutral-40);
|
|
6356
7124
|
--rt-pagination-box-current-color-text: var(--rt-mat-neutral-0);
|
|
6357
7125
|
--rt-pagination-box-current-color-border: var(--rt-mat-dark-30);
|
|
6358
7126
|
--rt-pagination-arrow-shadow: inset 0 0 0 var(--rt-border-width-thin) var(--rt-mat-dark-30);
|
|
6359
|
-
--rt-overlay-menu-bg: var(--
|
|
6360
|
-
--rt-overlay-select-selected-bg: color-mix(in srgb, var(--
|
|
6361
|
-
--rt-overlay-menu-current-bg: color-mix(in srgb, var(--
|
|
7127
|
+
--rt-overlay-menu-bg: var(--rt-menu-container-color, var(--rt-color-bg-surface));
|
|
7128
|
+
--rt-overlay-select-selected-bg: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-0)) 12%, transparent);
|
|
7129
|
+
--rt-overlay-menu-current-bg: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-0)) 12%, transparent);
|
|
7130
|
+
--rt-input-color-border: var(--rt-sys-outline, var(--rt-charcoal-border));
|
|
7131
|
+
--rt-input-color-text-placeholder: var(--rt-sys-on-surface-variant, var(--rt-color-text-muted));
|
|
7132
|
+
--rt-input-icon-color: var(--rt-sys-on-surface-variant, var(--rt-neutral-600));
|
|
7133
|
+
--rt-input-clear-color: var(--rt-mat-neutral-40);
|
|
7134
|
+
--rt-input-fill-color-bg-disabled: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-0)) 4%, transparent);
|
|
7135
|
+
--rt-input-clear-bg: var(--rt-mat-neutral-70);
|
|
7136
|
+
--rt-input-clear-bg-hover: var(--rt-input-clear-bg);
|
|
7137
|
+
--rt-toggle-chip-color-border: var(--rt-sys-outline, var(--rt-mat-neutral-40));
|
|
7138
|
+
--rt-toggle-chip-color-text: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-25));
|
|
7139
|
+
--rt-toggle-chip-color-bg-selected: var(--rt-sys-secondary-container, var(--rt-mat-neutral-70));
|
|
6362
7140
|
}
|
|
6363
7141
|
@media (pointer: coarse) {
|
|
6364
7142
|
[data-preset=material][data-theme=dark]:not(:root),
|
|
@@ -6376,42 +7154,109 @@ html.rt-theme-dark [data-theme=light] .rt-preset-material {
|
|
|
6376
7154
|
:root[data-theme=dark].rt-preset-material,
|
|
6377
7155
|
html.rt-theme-dark[data-preset=material],
|
|
6378
7156
|
html.rt-theme-dark.rt-preset-material {
|
|
6379
|
-
--rt-color-bg-surface: var(--
|
|
6380
|
-
--rt-color-bg-surface-subtle-2: var(--
|
|
6381
|
-
--rt-color-bg-inverse: var(--
|
|
6382
|
-
--rt-color-text-primary: var(--
|
|
6383
|
-
--rt-color-text-disabled: color-mix(in srgb, var(--
|
|
6384
|
-
--rt-color-text-inverse: var(--
|
|
6385
|
-
--rt-color-text-link: var(--
|
|
7157
|
+
--rt-color-bg-surface: var(--rt-sys-surface, var(--rt-charcoal-800));
|
|
7158
|
+
--rt-color-bg-surface-subtle-2: var(--rt-field-filled-container-color, var(--rt-sys-surface-variant, var(--rt-charcoal-950)));
|
|
7159
|
+
--rt-color-bg-inverse: var(--rt-sys-inverse-surface, var(--rt-neutral-0));
|
|
7160
|
+
--rt-color-text-primary: var(--rt-sys-on-surface, var(--rt-neutral-50));
|
|
7161
|
+
--rt-color-text-disabled: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-0)) 38%, transparent);
|
|
7162
|
+
--rt-color-text-inverse: var(--rt-sys-inverse-on-surface, var(--rt-neutral-900));
|
|
7163
|
+
--rt-color-text-link: var(--rt-sys-primary, var(--rt-brand-300));
|
|
6386
7164
|
--rt-color-border-subtle: var(--rt-mat-dark-20);
|
|
6387
|
-
--rt-color-action-disabled: color-mix(in srgb, var(--
|
|
6388
|
-
--rt-color-state-danger-bg: var(--
|
|
6389
|
-
--rt-color-state-error-text: var(--
|
|
6390
|
-
--rt-color-state-info-bg: var(--
|
|
6391
|
-
--rt-color-table-head-bg: var(
|
|
6392
|
-
|
|
6393
|
-
|
|
6394
|
-
);
|
|
6395
|
-
--rt-color-field-fill-underline: var(--mat-sys-on-surface-variant, var(--rt-color-border-strong));
|
|
6396
|
-
--rt-list-search-color-border: var(--mat-sys-outline, var(--rt-input-color-border));
|
|
7165
|
+
--rt-color-action-disabled: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-0)) 12%, transparent);
|
|
7166
|
+
--rt-color-state-danger-bg: var(--rt-sys-error-container, color-mix(in srgb, var(--rt-danger-500) 12%, transparent));
|
|
7167
|
+
--rt-color-state-error-text: var(--rt-sys-error, var(--rt-danger-500));
|
|
7168
|
+
--rt-color-state-info-bg: var(--rt-sys-primary-container, color-mix(in srgb, var(--rt-info-500) 12%, transparent));
|
|
7169
|
+
--rt-color-table-head-bg: var(--rt-field-filled-container-color, var(--rt-sys-surface-variant, var(--rt-color-bg-surface-subtle)));
|
|
7170
|
+
--rt-color-field-fill-underline: var(--rt-sys-on-surface-variant, var(--rt-color-border-strong));
|
|
7171
|
+
--rt-list-search-color-border: var(--rt-sys-outline, var(--rt-input-color-border));
|
|
6397
7172
|
--rt-list-search-color-bg: transparent;
|
|
6398
|
-
--rt-list-search-icon-color: var(--
|
|
6399
|
-
--rt-list-search-color-placeholder: var(--
|
|
6400
|
-
--rt-list-settings-item-bg: var(--
|
|
6401
|
-
--rt-list-settings-icon-color: var(--
|
|
6402
|
-
--rt-list-table-icon-color: var(--
|
|
6403
|
-
--rt-list-table-head-divider-color: var(--
|
|
6404
|
-
--rt-list-copy-button-bg: var(--
|
|
6405
|
-
--rt-list-copy-button-bg-hover: var(--
|
|
7173
|
+
--rt-list-search-icon-color: var(--rt-sys-on-surface-variant, var(--rt-input-icon-color));
|
|
7174
|
+
--rt-list-search-color-placeholder: var(--rt-sys-on-surface-variant, var(--rt-input-color-text-placeholder));
|
|
7175
|
+
--rt-list-settings-item-bg: var(--rt-option-selected-state-layer-color, var(--rt-sys-secondary-container, var(--rt-color-bg-subtle)));
|
|
7176
|
+
--rt-list-settings-icon-color: var(--rt-sys-on-surface-variant, var(--rt-color-text-muted));
|
|
7177
|
+
--rt-list-table-icon-color: var(--rt-sys-on-surface-variant, var(--rt-color-text-primary));
|
|
7178
|
+
--rt-list-table-head-divider-color: var(--rt-sys-outline, var(--rt-color-border-strong));
|
|
7179
|
+
--rt-list-copy-button-bg: var(--rt-fab-small-container-color, transparent);
|
|
7180
|
+
--rt-list-copy-button-bg-hover: var(--rt-fab-small-container-color, var(--rt-icon-button-color-bg-hover));
|
|
6406
7181
|
--rt-pagination-box-color-border: var(--rt-mat-dark-30);
|
|
6407
7182
|
--rt-pagination-box-color-text: var(--rt-mat-neutral-40);
|
|
6408
7183
|
--rt-pagination-box-current-color-bg: var(--rt-mat-neutral-40);
|
|
6409
7184
|
--rt-pagination-box-current-color-text: var(--rt-mat-neutral-0);
|
|
6410
7185
|
--rt-pagination-box-current-color-border: var(--rt-mat-dark-30);
|
|
6411
7186
|
--rt-pagination-arrow-shadow: inset 0 0 0 var(--rt-border-width-thin) var(--rt-mat-dark-30);
|
|
6412
|
-
--rt-overlay-menu-bg: var(--
|
|
6413
|
-
--rt-overlay-select-selected-bg: color-mix(in srgb, var(--
|
|
6414
|
-
--rt-overlay-menu-current-bg: color-mix(in srgb, var(--
|
|
7187
|
+
--rt-overlay-menu-bg: var(--rt-menu-container-color, var(--rt-color-bg-surface));
|
|
7188
|
+
--rt-overlay-select-selected-bg: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-0)) 12%, transparent);
|
|
7189
|
+
--rt-overlay-menu-current-bg: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-0)) 12%, transparent);
|
|
7190
|
+
--rt-input-color-border: var(--rt-sys-outline, var(--rt-charcoal-border));
|
|
7191
|
+
--rt-input-color-text-placeholder: var(--rt-sys-on-surface-variant, var(--rt-color-text-muted));
|
|
7192
|
+
--rt-input-icon-color: var(--rt-sys-on-surface-variant, var(--rt-neutral-600));
|
|
7193
|
+
--rt-input-clear-color: var(--rt-mat-neutral-40);
|
|
7194
|
+
--rt-input-fill-color-bg-disabled: color-mix(in srgb, var(--rt-sys-on-surface, var(--rt-mat-neutral-0)) 4%, transparent);
|
|
7195
|
+
--rt-input-clear-bg: var(--rt-mat-neutral-70);
|
|
7196
|
+
--rt-input-clear-bg-hover: var(--rt-input-clear-bg);
|
|
7197
|
+
--rt-toggle-chip-color-border: var(--rt-sys-outline, var(--rt-mat-neutral-40));
|
|
7198
|
+
--rt-toggle-chip-color-text: var(--rt-sys-on-surface-variant, var(--rt-mat-neutral-25));
|
|
7199
|
+
--rt-toggle-chip-color-bg-selected: var(--rt-sys-secondary-container, var(--rt-mat-neutral-70));
|
|
7200
|
+
}
|
|
7201
|
+
|
|
7202
|
+
/* Плотность полей материального набора — как плотность Material: каждый шаг вниз снимает с
|
|
7203
|
+
высоты поля 4 px, от 56 px при нуле до 36 px при −5. Шаг назначает атрибут `data-rt-density`
|
|
7204
|
+
на самом поле или на любом его предке: на предке он действует на все поля внутри.
|
|
7205
|
+
|
|
7206
|
+
Атрибут ставит не высоту, а число шагов — свойство `--rt-input-density`, и оно наследуется.
|
|
7207
|
+
Высоту считает материальный набор на своём узле из унаследованного шага. Поэтому атрибут на корне
|
|
7208
|
+
приложения доходит и до поля, у которого свой признак набора: набор на поле пересчитывает высоту
|
|
7209
|
+
из того же шага, а не возвращает 56 px.
|
|
7210
|
+
|
|
7211
|
+
Узел с атрибутом ниже узла с набором пересчитывает высоту сам: набор вычислил её на своём узле, и
|
|
7212
|
+
шаг, назначенный ниже, туда не доходит. Высоту поля читает десяток компонентов, и все они получают
|
|
7213
|
+
её отсюда, не зная о плотности.
|
|
7214
|
+
|
|
7215
|
+
В своём виде кита атрибут ничего не делает: шкалу высот там задаёт вход `size`, а шаг без набора
|
|
7216
|
+
никто не читает. */
|
|
7217
|
+
/* Шаг плотности не объявлен в наборе назначений: островок набора объявляет весь набор заново на своём
|
|
7218
|
+
узле и сбросил бы шаг, пришедший с предка, в ноль. Начальный ноль даёт регистрация свойства — она
|
|
7219
|
+
ничего не объявляет на узлах, и шаг предка наследуется сквозь любой признак набора. */
|
|
7220
|
+
@property --rt-input-density {
|
|
7221
|
+
inherits: true;
|
|
7222
|
+
initial-value: 0;
|
|
7223
|
+
syntax: "<number>";
|
|
7224
|
+
}
|
|
7225
|
+
/* rt-layer-outside: высоту объявляет материальный набор вне слоёв, в `_preset-material.scss`, а
|
|
7226
|
+
объявление вне слоя сильнее любого слоистого. В слое `rt-kit.components` плотность проигрывала бы
|
|
7227
|
+
набору на том же узле — атрибут рядом с признаком набора ничего бы не менял. Плотность стоит вне
|
|
7228
|
+
слоя и после набора, поэтому выигрывает местом. Островок темы с набором на том же узле объявляет
|
|
7229
|
+
назначения правилом с `:not(:root)` — на один шаг сильнее; третий селектор равен ему по силе и
|
|
7230
|
+
выигрывает тем же местом. */
|
|
7231
|
+
[data-rt-density="0"] {
|
|
7232
|
+
--rt-input-density: 0;
|
|
7233
|
+
}
|
|
7234
|
+
|
|
7235
|
+
[data-rt-density="-1"] {
|
|
7236
|
+
--rt-input-density: 1;
|
|
7237
|
+
}
|
|
7238
|
+
|
|
7239
|
+
[data-rt-density="-2"] {
|
|
7240
|
+
--rt-input-density: 2;
|
|
7241
|
+
}
|
|
7242
|
+
|
|
7243
|
+
[data-rt-density="-3"] {
|
|
7244
|
+
--rt-input-density: 3;
|
|
7245
|
+
}
|
|
7246
|
+
|
|
7247
|
+
[data-rt-density="-4"] {
|
|
7248
|
+
--rt-input-density: 4;
|
|
7249
|
+
}
|
|
7250
|
+
|
|
7251
|
+
[data-rt-density="-5"] {
|
|
7252
|
+
--rt-input-density: 5;
|
|
7253
|
+
}
|
|
7254
|
+
|
|
7255
|
+
:where(.rt-preset-material, [data-preset=material]) [data-rt-density],
|
|
7256
|
+
:is(.rt-preset-material, [data-preset=material])[data-rt-density],
|
|
7257
|
+
:is(.rt-preset-material, [data-preset=material])[data-rt-density]:not(:root) {
|
|
7258
|
+
--rt-input-height-md: var(--rt-input-height-app, calc(var(--rt-size-12) + var(--rt-size-2) - var(--rt-input-density) * var(--rt-size-1)));
|
|
7259
|
+
--rt-input-height: var(--rt-input-height-md);
|
|
6415
7260
|
}
|
|
6416
7261
|
|
|
6417
7262
|
@layer rt-kit.base {
|
|
@@ -6859,7 +7704,11 @@ html.rt-theme-dark.rt-preset-material {
|
|
|
6859
7704
|
.rt-button--pressed {
|
|
6860
7705
|
background: var(--rt-btn-bg-active);
|
|
6861
7706
|
}
|
|
6862
|
-
.rt-button
|
|
7707
|
+
.rt-button {
|
|
7708
|
+
/* Фокус от мыши и касания кольца не рисует, как у Material: браузер ставит `:focus-visible` и
|
|
7709
|
+
на фокус из кода после нажатия мышью — окно открылось кликом и перевело фокус на кнопку. */
|
|
7710
|
+
}
|
|
7711
|
+
.rt-button:focus-visible:not(.cdk-mouse-focused, .cdk-touch-focused) {
|
|
6863
7712
|
box-shadow: var(--rt-btn-focus-shadow);
|
|
6864
7713
|
outline: 2px solid transparent;
|
|
6865
7714
|
outline-offset: 2px;
|
|
@@ -7191,3 +8040,86 @@ html.rt-theme-dark.rt-preset-material {
|
|
|
7191
8040
|
}
|
|
7192
8041
|
}
|
|
7193
8042
|
}
|
|
8043
|
+
@layer rt-kit.components {
|
|
8044
|
+
/* Хост пузырька: точка отсчёта для угла. Слой кита ниже слоёв приложения, и хост, которому
|
|
8045
|
+
нужна своя позиция, задаёт её правилом приложения. */
|
|
8046
|
+
.rt-badge-host {
|
|
8047
|
+
position: relative;
|
|
8048
|
+
}
|
|
8049
|
+
/* rt-badge — пузырёк-счётчик на углу хоста. Узел ставит директива `rtBadge`. С `--overlap`
|
|
8050
|
+
центр пузырька стоит на углу хоста, без него пузырёк начинается у края хоста и подпись не
|
|
8051
|
+
накрывает. По вертикали центр пузырька в обоих случаях на верхнем или нижнем крае. */
|
|
8052
|
+
.rt-badge {
|
|
8053
|
+
--rt-badge-size: var(--rt-size-5);
|
|
8054
|
+
--rt-badge-font-size: var(--rt-text-2xs);
|
|
8055
|
+
--rt-badge-padding-inline: var(--rt-space-1);
|
|
8056
|
+
--rt-badge-radius: var(--rt-radius-full);
|
|
8057
|
+
--rt-badge-bg: var(--rt-color-action-primary);
|
|
8058
|
+
--rt-badge-color: var(--rt-color-action-on-primary);
|
|
8059
|
+
--rt-badge-shift: calc(var(--rt-badge-size) / 2);
|
|
8060
|
+
position: absolute;
|
|
8061
|
+
z-index: 1;
|
|
8062
|
+
display: inline-flex;
|
|
8063
|
+
min-width: var(--rt-badge-size);
|
|
8064
|
+
height: var(--rt-badge-size);
|
|
8065
|
+
box-sizing: border-box;
|
|
8066
|
+
align-items: center;
|
|
8067
|
+
justify-content: center;
|
|
8068
|
+
border-radius: var(--rt-badge-radius);
|
|
8069
|
+
background: var(--rt-badge-bg);
|
|
8070
|
+
color: var(--rt-badge-color);
|
|
8071
|
+
font-family: var(--rt-font-family-sans);
|
|
8072
|
+
font-size: var(--rt-badge-font-size);
|
|
8073
|
+
font-style: normal;
|
|
8074
|
+
font-weight: var(--rt-font-weight-semibold);
|
|
8075
|
+
line-height: 1;
|
|
8076
|
+
padding-inline: var(--rt-badge-padding-inline);
|
|
8077
|
+
pointer-events: none;
|
|
8078
|
+
white-space: nowrap;
|
|
8079
|
+
}
|
|
8080
|
+
.rt-badge--size--sm {
|
|
8081
|
+
--rt-badge-size: var(--rt-size-4);
|
|
8082
|
+
--rt-badge-font-size: var(--rt-text-3xs);
|
|
8083
|
+
}
|
|
8084
|
+
.rt-badge--position--above-after, .rt-badge--position--above-before {
|
|
8085
|
+
bottom: calc(100% - var(--rt-badge-shift));
|
|
8086
|
+
}
|
|
8087
|
+
.rt-badge--position--below-after, .rt-badge--position--below-before {
|
|
8088
|
+
top: calc(100% - var(--rt-badge-shift));
|
|
8089
|
+
}
|
|
8090
|
+
.rt-badge--position--above-after, .rt-badge--position--below-after {
|
|
8091
|
+
left: 100%;
|
|
8092
|
+
}
|
|
8093
|
+
.rt-badge--position--above-before, .rt-badge--position--below-before {
|
|
8094
|
+
right: 100%;
|
|
8095
|
+
}
|
|
8096
|
+
.rt-badge--overlap.rt-badge--position--above-after, .rt-badge--overlap.rt-badge--position--below-after {
|
|
8097
|
+
left: calc(100% - var(--rt-badge-shift));
|
|
8098
|
+
}
|
|
8099
|
+
.rt-badge--overlap.rt-badge--position--above-before, .rt-badge--overlap.rt-badge--position--below-before {
|
|
8100
|
+
right: calc(100% - var(--rt-badge-shift));
|
|
8101
|
+
}
|
|
8102
|
+
.rt-badge--color--secondary {
|
|
8103
|
+
--rt-badge-bg: var(--rt-color-action-secondary);
|
|
8104
|
+
--rt-badge-color: var(--rt-color-action-on-secondary);
|
|
8105
|
+
}
|
|
8106
|
+
.rt-badge--color--info {
|
|
8107
|
+
--rt-badge-bg: var(--rt-color-action-info);
|
|
8108
|
+
--rt-badge-color: var(--rt-color-action-on-info);
|
|
8109
|
+
}
|
|
8110
|
+
.rt-badge--color--success {
|
|
8111
|
+
--rt-badge-bg: var(--rt-color-action-success);
|
|
8112
|
+
--rt-badge-color: var(--rt-color-action-on-success);
|
|
8113
|
+
}
|
|
8114
|
+
.rt-badge--color--warning {
|
|
8115
|
+
--rt-badge-bg: var(--rt-color-action-warning);
|
|
8116
|
+
--rt-badge-color: var(--rt-color-action-on-warning);
|
|
8117
|
+
}
|
|
8118
|
+
.rt-badge--color--danger {
|
|
8119
|
+
--rt-badge-bg: var(--rt-color-action-danger);
|
|
8120
|
+
--rt-badge-color: var(--rt-color-action-on-danger);
|
|
8121
|
+
}
|
|
8122
|
+
.rt-badge--hidden {
|
|
8123
|
+
display: none;
|
|
8124
|
+
}
|
|
8125
|
+
}
|