@rt-tools/ui-kit-v2 0.5.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +87 -7
- package/fesm2022/rt-tools-ui-kit-v2.mjs +1929 -994
- package/fesm2022/rt-tools-ui-kit-v2.mjs.map +1 -1
- package/package.json +1 -1
- package/rt-tools-ui-kit-v2-0.7.0.tgz +0 -0
- package/src/lib/components/aside/_rt-aside-overlay.scss +73 -71
- package/src/lib/components/aside/footer/rt-aside-footer.component.scss +20 -16
- package/src/lib/components/aside/header/rt-aside-header.component.scss +72 -70
- package/src/lib/components/aside/rt-aside.component.scss +107 -105
- package/src/lib/components/aside/unsaved-dialog/rt-aside-unsaved-dialog.component.scss +33 -31
- package/src/lib/components/aside-section/rt-aside-section.component.scss +27 -23
- package/src/lib/components/autocomplete/rt-autocomplete.component.scss +124 -118
- package/src/lib/components/bar-list/rt-bar-list.component.scss +85 -81
- package/src/lib/components/bottom-sheet/rt-bottom-sheet.component.scss +64 -57
- package/src/lib/components/button/rt-button.directive.scss +319 -280
- package/src/lib/components/calendar/rt-calendar.component.scss +106 -102
- package/src/lib/components/card/rt-card.component.scss +53 -45
- package/src/lib/components/chat/rt-chat.component.scss +312 -306
- package/src/lib/components/checkbox/rt-checkbox.component.scss +61 -54
- package/src/lib/components/collapsible-text/rt-collapsible-text.component.scss +36 -34
- package/src/lib/components/confirm-popover/rt-confirm-popover.component.scss +36 -30
- package/src/lib/components/container/rt-container.component.scss +91 -87
- package/src/lib/components/counter/rt-counter.component.scss +14 -12
- package/src/lib/components/counter-row/rt-counter-row.component.scss +31 -27
- package/src/lib/components/date-picker/rt-date-picker.component.scss +73 -71
- package/src/lib/components/delta-view/rt-delta-view.component.scss +27 -25
- package/src/lib/components/detail-list/rt-detail-list.component.scss +8 -6
- package/src/lib/components/detail-list/rt-detail-row.component.scss +18 -16
- package/src/lib/components/dialog/footer/rt-dialog-footer.component.scss +19 -17
- package/src/lib/components/dialog/header/rt-dialog-header.component.scss +27 -25
- package/src/lib/components/dialog/rt-dialog.component.scss +59 -56
- package/src/lib/components/download-link/rt-download-link.component.scss +32 -27
- package/src/lib/components/empty-state/rt-empty-state.component.scss +50 -46
- package/src/lib/components/field/rt-field.component.scss +63 -61
- package/src/lib/components/file-card/rt-file-card.component.scss +84 -78
- package/src/lib/components/file-drop/rt-file-drop.component.scss +83 -77
- package/src/lib/components/file-input/rt-file-input.component.scss +20 -18
- package/src/lib/components/file-list/rt-file-list.component.scss +9 -7
- package/src/lib/components/filter-control/rt-filter-control.component.scss +16 -14
- package/src/lib/components/header/rt-header.component.scss +61 -55
- package/src/lib/components/icon/CONTEXT.md +16 -10
- package/src/lib/components/icon/rt-icon.component.scss +14 -12
- package/src/lib/components/icon-button/CONTEXT.md +4 -2
- package/src/lib/components/icon-button/rt-icon-button.component.scss +128 -112
- package/src/lib/components/info-item/rt-info-item.component.scss +38 -36
- package/src/lib/components/input/CONTEXT.md +9 -7
- package/src/lib/components/input/rt-input.component.scss +102 -98
- package/src/lib/components/input-number/rt-input-number.component.scss +84 -82
- package/src/lib/components/live-badge/rt-live-badge.component.scss +27 -23
- package/src/lib/components/logo/rt-logo.component.scss +54 -52
- package/src/lib/components/markdown-text/CONTEXT.md +40 -0
- package/src/lib/components/markdown-text/rt-markdown-text.component.scss +130 -0
- package/src/lib/components/menu/rt-menu-confirm-dialog.component.scss +30 -28
- package/src/lib/components/menu/rt-menu-item.component.scss +47 -42
- package/src/lib/components/menu/rt-menu.component.scss +23 -15
- package/src/lib/components/message/rt-message.component.scss +53 -49
- package/src/lib/components/message-composer/CONTEXT.md +1 -1
- package/src/lib/components/message-composer/rt-message-composer.component.scss +55 -49
- package/src/lib/components/money-list/rt-money-list.component.scss +13 -9
- package/src/lib/components/money-list/rt-money-row.component.scss +23 -19
- package/src/lib/components/multiselect/rt-multiselect.component.scss +169 -161
- package/src/lib/components/night-grid/rt-night-grid.component.scss +47 -42
- package/src/lib/components/note/rt-note.component.scss +15 -11
- package/src/lib/components/notifications-bell/rt-notifications-bell.component.scss +34 -27
- package/src/lib/components/page-header/rt-page-header-mobile.scss +142 -134
- package/src/lib/components/page-header/rt-page-header-submenu.scss +130 -123
- package/src/lib/components/page-header/rt-page-header.component.scss +221 -210
- package/src/lib/components/pagination/rt-pagination.component.scss +88 -81
- package/src/lib/components/photo-viewer/rt-photo-viewer.component.scss +109 -105
- package/src/lib/components/rich-editor/CONTEXT.md +1 -1
- package/src/lib/components/rich-editor/rt-rich-editor.component.scss +63 -59
- package/src/lib/components/section-nav/rt-section-nav.component.scss +53 -47
- package/src/lib/components/select/rt-select.component.scss +146 -138
- package/src/lib/components/skeleton/rt-skeleton.component.scss +50 -41
- package/src/lib/components/skeleton-wrapper/rt-skeleton-wrapper.component.scss +8 -6
- package/src/lib/components/spinner/rt-spinner.component.scss +35 -32
- package/src/lib/components/split-button/rt-split-button.component.scss +74 -62
- package/src/lib/components/stat-tile/rt-stat-tile.component.scss +95 -91
- package/src/lib/components/stepper/rt-stepper.component.scss +107 -101
- package/src/lib/components/table/copy-cell/rt-copy-cell.component.scss +39 -30
- package/src/lib/components/table/rt-table.component.scss +260 -252
- package/src/lib/components/table/settings-aside/rt-table-settings-aside.component.scss +7 -5
- package/src/lib/components/table/settings-panel/rt-table-settings-panel.component.scss +71 -61
- package/src/lib/components/table/sort-header/rt-table-sort-header.component.scss +31 -29
- package/src/lib/components/tabs/rt-tabs.component.scss +184 -175
- package/src/lib/components/tag/rt-tag.component.scss +97 -92
- package/src/lib/components/textarea/rt-textarea.component.scss +62 -60
- package/src/lib/components/theme-toggle/rt-theme-toggle.component.scss +7 -5
- package/src/lib/components/thread-list/rt-thread-list.component.scss +221 -212
- package/src/lib/components/timeline/rt-timeline.component.scss +82 -76
- package/src/lib/components/toast/rt-toast.component.scss +169 -160
- package/src/lib/components/toast/rt-toaster.component.scss +37 -35
- package/src/lib/components/toggle-button-group/rt-toggle-button-group.component.scss +129 -122
- package/src/lib/components/toggle-switch/rt-toggle-switch.component.scss +97 -91
- package/src/lib/components/toolbar/rt-toolbar.component.scss +63 -54
- package/src/lib/components/tooltip/rt-tooltip.component.scss +24 -15
- package/src/lib/components/welcome-dialog/rt-welcome-dialog.component.scss +46 -44
- package/src/lib/components/workspace/rt-workspace.component.scss +139 -131
- package/src/lib/components/workspace-details/rt-workspace-details.component.scss +105 -101
- package/src/styles/_index.scss +11 -0
- package/src/styles/_layers.scss +22 -0
- package/src/styles/_login.scss +87 -85
- package/src/styles/_mixins.scss +1 -1
- package/src/styles/_primitives.scss +138 -66
- package/src/styles/_scrollbar.scss +21 -19
- package/src/styles/_semantic.scss +155 -62
- package/src/styles/_theme-dark-rules.scss +23 -0
- package/src/styles/_theme-dark.scss +61 -42
- package/styles/tokens.css +754 -418
- package/types/rt-tools-ui-kit-v2.d.ts +292 -103
- package/rt-tools-ui-kit-v2-0.5.0.tgz +0 -0
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
/*
|
|
1
|
+
/* Собрано генератором `tools/build-tokens-v2.mjs` из `tokens.source.mjs` — правится там, не здесь:
|
|
2
|
+
правка на месте теряется на следующей сборке, и её называет `pnpm run check:tokens-build`. */
|
|
3
|
+
|
|
4
|
+
/* Назначения светлой темы.
|
|
2
5
|
|
|
3
6
|
Тело вынесено в @mixin по той же причине, что и у тёмной темы: набор нужен не
|
|
4
7
|
только на `:root`, но и на отдельном контейнере. Без этого светлую половину
|
|
@@ -9,46 +12,131 @@
|
|
|
9
12
|
/* Background */
|
|
10
13
|
--rt-color-bg-page: var(--rt-neutral-50);
|
|
11
14
|
--rt-color-bg-surface: var(--rt-neutral-0);
|
|
12
|
-
--rt-color-bg-surface-subtle: var(--rt-
|
|
15
|
+
--rt-color-bg-surface-subtle: var(--rt-overlay-black-4);
|
|
13
16
|
--rt-color-bg-surface-subtle-2: var(--rt-neutral-200);
|
|
14
|
-
--rt-color-bg-hover: var(--rt-
|
|
17
|
+
--rt-color-bg-hover: var(--rt-overlay-black-4);
|
|
15
18
|
--rt-color-bg-subtle: var(--rt-neutral-100);
|
|
16
19
|
--rt-color-bg-overlay: var(--rt-overlay-black-50);
|
|
17
20
|
--rt-color-bg-inverse: var(--rt-neutral-900);
|
|
18
21
|
|
|
22
|
+
/* Подложка обвязки — шапка и боковая навигация. Отдельно от bg-inverse: тот
|
|
23
|
+
нейтральный и работает под перевёрнутым текстом, а этот синеватый и в обеих
|
|
24
|
+
темах один. */
|
|
25
|
+
--rt-color-bg-nav: var(--rt-navy-900); /* rt-theme-shared: обвязка тёмная в обеих темах */
|
|
26
|
+
|
|
19
27
|
/* Text */
|
|
20
28
|
--rt-color-text-primary: var(--rt-neutral-900);
|
|
21
|
-
|
|
29
|
+
|
|
30
|
+
/* Ступень 600, а не 500: приглушённый текст обязан брать порог, а после
|
|
31
|
+
пересчёта ряда самая светлая ступень, которая его берёт, — шестисотая.
|
|
32
|
+
Прежде эту роль держала off-grid ступень 510, заведённая ровно под неё.
|
|
33
|
+
|
|
34
|
+
Тёмный ответ — пятьдесят процентов белого, а не сорок: на сорока он давал
|
|
35
|
+
3.6:1 над поверхностью, 3.7:1 над страницей и 3.7:1 над фоном поля, то есть
|
|
36
|
+
не брал порога ни над одной подложкой. Светлую сторону под порог подводили,
|
|
37
|
+
тёмную забыли, и держал её список принятого. Пятьдесят — самая слабая доля,
|
|
38
|
+
берущая порог над всеми тремя: 4.86, 5.02 и 5.09. */
|
|
39
|
+
--rt-color-text-muted: var(--rt-neutral-600);
|
|
22
40
|
--rt-color-text-disabled: var(--rt-neutral-400);
|
|
23
41
|
--rt-color-text-inverse: var(--rt-neutral-0);
|
|
24
|
-
--rt-color-text-link: var(--rt-
|
|
25
|
-
--rt-color-text-link-hover: var(--rt-
|
|
42
|
+
--rt-color-text-link: var(--rt-brand-500);
|
|
43
|
+
--rt-color-text-link-hover: var(--rt-brand-600);
|
|
26
44
|
|
|
27
45
|
/* Border */
|
|
28
|
-
--rt-color-border-default: var(--rt-neutral-
|
|
46
|
+
--rt-color-border-default: var(--rt-neutral-100);
|
|
29
47
|
--rt-color-border-strong: var(--rt-neutral-300);
|
|
30
|
-
--rt-color-border-subtle: var(--rt-neutral-
|
|
31
|
-
--rt-color-border-focus: var(--rt-
|
|
32
|
-
|
|
33
|
-
/* Action
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
48
|
+
--rt-color-border-subtle: var(--rt-neutral-100);
|
|
49
|
+
--rt-color-border-focus: var(--rt-brand-500);
|
|
50
|
+
|
|
51
|
+
/* Action — роли действия.
|
|
52
|
+
|
|
53
|
+
Роль это пятёрка: подложка, наведение, нажатие, подпись на них и цвет самой
|
|
54
|
+
роли на поверхности. Кнопка берёт роль целиком и своих цветов не знает вовсе,
|
|
55
|
+
поэтому смена роли — одна строка здесь, а не правка стилей компонента.
|
|
56
|
+
Наведение и нажатие — соседние ступени своей шкалы; подпись светлая у всех
|
|
57
|
+
ролей, потому что все подложки тёмные.
|
|
58
|
+
|
|
59
|
+
Пятый член — `-on-surface` — красит безфоновые оформления: текстовое и
|
|
60
|
+
обводочное берут им подпись и рамку. Отдельным именем, а не подложкой роли:
|
|
61
|
+
подложка вправе быть поверхностью, и у вторичной роли на графите она ею
|
|
62
|
+
становится — подпись, взятая из подложки, легла бы сама на себя. У пяти ролей
|
|
63
|
+
цвет тот же, что и у подложки, и это записано ссылкой, а не повтором
|
|
64
|
+
значения. */
|
|
65
|
+
--rt-color-action-primary: var(--rt-brand-500); /* rt-theme-shared: цвет марки один в обеих темах */
|
|
66
|
+
--rt-color-action-primary-hover: var(--rt-brand-600); /* rt-theme-shared: цвет марки один в обеих темах */
|
|
67
|
+
--rt-color-action-primary-active: var(--rt-brand-700); /* rt-theme-shared: цвет марки один в обеих темах */
|
|
68
|
+
--rt-color-action-primary-subtle: var(--rt-overlay-brand-8);
|
|
37
69
|
|
|
38
70
|
/* Focus-ring tint — насыщеннее subtle, для visible 3px outline. */
|
|
39
|
-
--rt-color-action-primary-soft: var(--rt-overlay-
|
|
40
|
-
--rt-color-action-on-primary: var(--rt-neutral-0);
|
|
41
|
-
--rt-color-action-
|
|
42
|
-
|
|
71
|
+
--rt-color-action-primary-soft: var(--rt-overlay-brand-24);
|
|
72
|
+
--rt-color-action-on-primary: var(--rt-neutral-0); /* rt-theme-shared: подпись на действии марки светлая в обеих темах */
|
|
73
|
+
--rt-color-action-primary-on-surface: var(--rt-color-action-primary);
|
|
74
|
+
|
|
75
|
+
/* Вторичное действие — единственная роль без своего цвета: она нейтральна и на
|
|
76
|
+
графите разворачивается в подложку поверхности, поэтому тёмная тема отвечает
|
|
77
|
+
на всю её тройку. По той же причине пятый член у неё свой: подложкой роли на
|
|
78
|
+
графите красить подпись нечем. */
|
|
79
|
+
--rt-color-action-secondary: var(--rt-neutral-600);
|
|
80
|
+
--rt-color-action-secondary-hover: var(--rt-neutral-700);
|
|
81
|
+
--rt-color-action-secondary-active: var(--rt-neutral-800);
|
|
82
|
+
--rt-color-action-on-secondary: var(--rt-neutral-0);
|
|
83
|
+
--rt-color-action-secondary-on-surface: var(--rt-neutral-600);
|
|
84
|
+
--rt-color-action-success: var(--rt-success-500); /* rt-theme-shared: цвет роли один в обеих темах */
|
|
85
|
+
--rt-color-action-success-hover: var(--rt-success-600); /* rt-theme-shared: цвет роли один в обеих темах */
|
|
86
|
+
--rt-color-action-success-active: var(--rt-success-700); /* rt-theme-shared: цвет роли один в обеих темах */
|
|
87
|
+
--rt-color-action-on-success: var(--rt-neutral-0); /* rt-theme-shared: подпись на цветной подложке светлая в обеих темах */
|
|
88
|
+
--rt-color-action-success-on-surface: var(--rt-color-action-success);
|
|
89
|
+
--rt-color-action-warning: var(--rt-warning-500); /* rt-theme-shared: цвет роли один в обеих темах */
|
|
90
|
+
--rt-color-action-warning-hover: var(--rt-warning-600); /* rt-theme-shared: цвет роли один в обеих темах */
|
|
91
|
+
--rt-color-action-warning-active: var(--rt-warning-700); /* rt-theme-shared: цвет роли один в обеих темах */
|
|
92
|
+
--rt-color-action-on-warning: var(--rt-neutral-0); /* rt-theme-shared: подпись на цветной подложке светлая в обеих темах */
|
|
93
|
+
--rt-color-action-warning-on-surface: var(--rt-color-action-warning);
|
|
94
|
+
--rt-color-action-danger: var(--rt-danger-500); /* rt-theme-shared: цвет роли один в обеих темах */
|
|
95
|
+
--rt-color-action-danger-hover: var(--rt-danger-600); /* rt-theme-shared: цвет роли один в обеих темах */
|
|
96
|
+
--rt-color-action-danger-active: var(--rt-danger-700); /* rt-theme-shared: цвет роли один в обеих темах */
|
|
97
|
+
--rt-color-action-on-danger: var(--rt-neutral-0); /* rt-theme-shared: подпись на цветной подложке светлая в обеих темах */
|
|
98
|
+
--rt-color-action-danger-on-surface: var(--rt-color-action-danger);
|
|
99
|
+
--rt-color-action-info: var(--rt-info-500); /* rt-theme-shared: цвет роли один в обеих темах */
|
|
100
|
+
--rt-color-action-info-hover: var(--rt-info-600); /* rt-theme-shared: цвет роли один в обеих темах */
|
|
101
|
+
--rt-color-action-info-active: var(--rt-info-700); /* rt-theme-shared: цвет роли один в обеих темах */
|
|
102
|
+
--rt-color-action-on-info: var(--rt-neutral-0); /* rt-theme-shared: подпись на цветной подложке светлая в обеих темах */
|
|
103
|
+
--rt-color-action-info-on-surface: var(--rt-color-action-info);
|
|
104
|
+
|
|
105
|
+
/* Отключённое действие — своя пара, а не вторичная роль: делить подложку с ней
|
|
106
|
+
значит сделать отключённую вторичную кнопку неотличимой от доступной. */
|
|
107
|
+
--rt-color-action-disabled: var(--rt-neutral-200);
|
|
108
|
+
--rt-color-action-on-disabled: var(--rt-color-text-disabled);
|
|
109
|
+
|
|
110
|
+
/* Доли оттенка под наведение и нажатие безфоновых оформлений кнопки. Живут в
|
|
111
|
+
слое, а не в стилях компонента: тёмная тема их поднимает, а половина пары,
|
|
112
|
+
оставшаяся в компоненте, тёмному ответу не видна. */
|
|
113
|
+
--rt-btn-tint-hover: 8%;
|
|
114
|
+
--rt-btn-tint-active: 16%;
|
|
115
|
+
|
|
116
|
+
/* Кольцо фокуса разобрано на составляющие: толщину, отступ и цвет. Композит
|
|
117
|
+
собирается из них и остаётся на месте — восемь компонентов берут его целиком, и
|
|
118
|
+
менять их незачем. Отступ — зазор цвета поверхности между элементом и кольцом:
|
|
119
|
+
первая тень при нулевом отступе не рисует ничего. */
|
|
120
|
+
--rt-focus-ring-width: var(--rt-border-width-thick);
|
|
121
|
+
|
|
122
|
+
/* Ноль с единицей намеренно: безразмерный ноль внутри calc с длиной невалиден, и
|
|
123
|
+
браузер отбрасывает объявление кольца целиком — кольцо просто пропадает. */
|
|
124
|
+
--rt-focus-ring-offset: 0px;
|
|
125
|
+
--rt-focus-ring-color: var(--rt-color-action-primary-soft);
|
|
126
|
+
--rt-focus-ring-color-danger: var(--rt-overlay-danger-16); /* rt-theme-shared: оттенок опасного действия один в обеих темах */
|
|
43
127
|
|
|
44
128
|
/* Focus-ring composite — для interactive элементов с custom focus-visible. */
|
|
45
|
-
--rt-shadow-focus-ring:
|
|
46
|
-
|
|
129
|
+
--rt-shadow-focus-ring:
|
|
130
|
+
0 0 0 var(--rt-focus-ring-offset) var(--rt-color-bg-surface),
|
|
131
|
+
0 0 0 calc(var(--rt-focus-ring-offset) + var(--rt-focus-ring-width)) var(--rt-focus-ring-color);
|
|
132
|
+
--rt-shadow-focus-ring-danger:
|
|
133
|
+
0 0 0 var(--rt-focus-ring-offset) var(--rt-color-bg-surface),
|
|
134
|
+
0 0 0 calc(var(--rt-focus-ring-offset) + var(--rt-focus-ring-width)) var(--rt-focus-ring-color-danger);
|
|
47
135
|
|
|
48
136
|
/* Stepper (rt-stepper) — рельса прогресса. Текущий шаг — янтарный (одинаков
|
|
49
137
|
в обеих темах); трек/прогресс переопределяются в dark на приглушённые. */
|
|
50
|
-
--rt-color-stepper-current: var(--rt-amber-400);
|
|
51
|
-
--rt-color-stepper-current-subtle: var(--rt-overlay-amber-16);
|
|
138
|
+
--rt-color-stepper-current: var(--rt-amber-400); /* rt-theme-shared: янтарь текущего шага один в обеих темах */
|
|
139
|
+
--rt-color-stepper-current-subtle: var(--rt-overlay-amber-16); /* rt-theme-shared: янтарь текущего шага один в обеих темах */
|
|
52
140
|
--rt-color-stepper-track: var(--rt-gray-350);
|
|
53
141
|
--rt-color-stepper-progress: var(--rt-color-action-primary);
|
|
54
142
|
|
|
@@ -59,32 +147,36 @@
|
|
|
59
147
|
--rt-shadow-status-dot: 0 0 0 3px var(--rt-color-state-success-bg);
|
|
60
148
|
|
|
61
149
|
/* State */
|
|
62
|
-
--rt-color-state-success: var(--rt-success-500);
|
|
150
|
+
--rt-color-state-success: var(--rt-success-500); /* rt-theme-shared: цвет статуса один в обеих темах */
|
|
63
151
|
--rt-color-state-success-bg: var(--rt-success-50);
|
|
64
|
-
--rt-color-state-warning: var(--rt-warning-500);
|
|
152
|
+
--rt-color-state-warning: var(--rt-warning-500); /* rt-theme-shared: цвет статуса один в обеих темах */
|
|
65
153
|
--rt-color-state-warning-bg: var(--rt-warning-50);
|
|
66
|
-
|
|
154
|
+
|
|
155
|
+
/* Подпись на подложке предупреждения — ступенью темнее самого статуса: сам
|
|
156
|
+
статус на своей подложке порога контраста не берёт. Пара к error-text. */
|
|
157
|
+
--rt-color-state-warning-text: var(--rt-warning-600);
|
|
158
|
+
--rt-color-state-danger: var(--rt-danger-500); /* rt-theme-shared: цвет статуса один в обеих темах */
|
|
67
159
|
--rt-color-state-danger-bg: var(--rt-danger-50);
|
|
68
160
|
--rt-color-state-error-text: var(--rt-danger-600);
|
|
69
|
-
--rt-color-state-info: var(--rt-info-500);
|
|
161
|
+
--rt-color-state-info: var(--rt-info-500); /* rt-theme-shared: цвет статуса один в обеих темах */
|
|
70
162
|
--rt-color-state-info-bg: var(--rt-info-50);
|
|
71
163
|
|
|
72
164
|
/* Chat — пузыри переписки. Входящее и своё различаются фоном, а не рамкой:
|
|
73
165
|
рамка на каждом пузыре дробит ленту. Отметка прочтения синяя — единственный
|
|
74
166
|
цветной элемент подвала пузыря, остальные статусы приглушены. */
|
|
75
|
-
--rt-chat-bubble-in-bg: var(--rt-
|
|
76
|
-
--rt-chat-bubble-in-author: var(--rt-
|
|
167
|
+
--rt-chat-bubble-in-bg: var(--rt-brand-50);
|
|
168
|
+
--rt-chat-bubble-in-author: var(--rt-brand-700);
|
|
77
169
|
--rt-chat-bubble-own-bg: var(--rt-neutral-100);
|
|
78
170
|
--rt-chat-bubble-own-author: var(--rt-neutral-500);
|
|
79
171
|
--rt-chat-bubble-date: var(--rt-color-text-muted);
|
|
80
|
-
--rt-chat-status-read: var(--rt-
|
|
172
|
+
--rt-chat-status-read: var(--rt-brand-400);
|
|
81
173
|
|
|
82
174
|
/* Special — Auth surface (gradient bg + transparent card в dark) */
|
|
83
175
|
--rt-color-bg-page-auth: var(--rt-neutral-50);
|
|
84
176
|
--rt-color-bg-surface-auth-card: var(--rt-neutral-0);
|
|
85
177
|
|
|
86
178
|
/* Spacing aliases — named semantic aliases на primitive numeric scale */
|
|
87
|
-
--rt-space-2xs: 2px
|
|
179
|
+
--rt-space-2xs: var(--rt-space-0-5); /* 2px */
|
|
88
180
|
--rt-space-xs: var(--rt-space-1); /* 4px */
|
|
89
181
|
--rt-space-sm: var(--rt-space-2); /* 8px */
|
|
90
182
|
--rt-space-md: var(--rt-space-4); /* 16px */
|
|
@@ -94,7 +186,7 @@
|
|
|
94
186
|
--rt-space-3xl: var(--rt-space-16); /* 64px */
|
|
95
187
|
|
|
96
188
|
/* Text size base — semantic alias для default body text */
|
|
97
|
-
--rt-text-base:
|
|
189
|
+
--rt-text-base: var(--rt-text-md);
|
|
98
190
|
|
|
99
191
|
/* Form input — composition tokens. Единый контракт для всего input-семейства
|
|
100
192
|
(rt-input, rt-input-number, rt-autocomplete, rt-select, rt-multiselect,
|
|
@@ -104,7 +196,7 @@
|
|
|
104
196
|
/* Colors */
|
|
105
197
|
--rt-input-color-bg: var(--rt-color-bg-surface-subtle);
|
|
106
198
|
--rt-input-color-bg-disabled: var(--rt-color-bg-surface-subtle);
|
|
107
|
-
--rt-input-color-bg-hover: var(--rt-overlay-black-
|
|
199
|
+
--rt-input-color-bg-hover: var(--rt-overlay-black-8);
|
|
108
200
|
--rt-input-color-border: var(--rt-color-border-default);
|
|
109
201
|
--rt-input-color-border-focus: var(--rt-color-action-primary);
|
|
110
202
|
--rt-input-color-border-error: var(--rt-color-state-danger);
|
|
@@ -123,7 +215,7 @@
|
|
|
123
215
|
|
|
124
216
|
/* Radius / spacing / border */
|
|
125
217
|
--rt-input-radius: var(--rt-radius-lg);
|
|
126
|
-
--rt-input-padding-x: var(--rt-space-
|
|
218
|
+
--rt-input-padding-x: var(--rt-space-4);
|
|
127
219
|
--rt-input-padding-y: var(--rt-space-0);
|
|
128
220
|
--rt-input-border-width: var(--rt-border-width-thin);
|
|
129
221
|
--rt-input-focus-outline-offset: var(--rt-border-width-thin);
|
|
@@ -157,7 +249,7 @@
|
|
|
157
249
|
набирается табличными цифрами и держит ширину, иначе кнопки прыгают
|
|
158
250
|
при переходе через десяток. */
|
|
159
251
|
--rt-counter-gap: var(--rt-space-sm);
|
|
160
|
-
--rt-counter-value-min-width:
|
|
252
|
+
--rt-counter-value-min-width: var(--rt-size-6);
|
|
161
253
|
--rt-counter-value-font-size: var(--rt-text-md);
|
|
162
254
|
--rt-counter-value-color: var(--rt-color-text-primary);
|
|
163
255
|
--rt-counter-row-gap: var(--rt-space-md);
|
|
@@ -173,7 +265,7 @@
|
|
|
173
265
|
--rt-toggle-color-track-on: var(--rt-color-action-primary);
|
|
174
266
|
--rt-toggle-color-border: var(--rt-color-border-strong);
|
|
175
267
|
--rt-toggle-color-thumb: var(--rt-color-bg-surface);
|
|
176
|
-
--rt-toggle-color-icon: var(--rt-amber-400);
|
|
268
|
+
--rt-toggle-color-icon: var(--rt-amber-400); /* rt-theme-shared: янтарь иконки один в обеих темах */
|
|
177
269
|
--rt-toggle-shadow-thumb: var(--rt-shadow-md);
|
|
178
270
|
|
|
179
271
|
/* Рамка off-трека — inset-тенью, а не border: у border своя коробка, и
|
|
@@ -182,26 +274,26 @@
|
|
|
182
274
|
|
|
183
275
|
/* Навигация (rt-page-header). Шапка — отдельная плашка; отступ от краёв
|
|
184
276
|
страницы задаёт тот, кто её ставит. */
|
|
185
|
-
--rt-nav-header-padding: var(--rt-space-2
|
|
186
|
-
--rt-nav-header-color-bg: var(--rt-neutral-
|
|
277
|
+
--rt-nav-header-padding: var(--rt-space-2) var(--rt-space-4);
|
|
278
|
+
--rt-nav-header-color-bg: var(--rt-neutral-50);
|
|
187
279
|
|
|
188
280
|
/* Первый уровень. Пункт ряда несёт плашку цвета самой шапки: на общем фоне её
|
|
189
281
|
не видно, и белым проступает только активный раздел. Наведение красит
|
|
190
282
|
подпись, а не фон — иначе оно спорит с этой подсветкой. */
|
|
191
|
-
--rt-nav-item-height:
|
|
283
|
+
--rt-nav-item-height: var(--rt-size-6);
|
|
192
284
|
--rt-nav-item-gap: var(--rt-space-1);
|
|
193
|
-
--rt-nav-item-padding: var(--rt-space-
|
|
194
|
-
--rt-nav-item-content-gap: var(--rt-space-
|
|
285
|
+
--rt-nav-item-padding: var(--rt-space-2) var(--rt-space-2);
|
|
286
|
+
--rt-nav-item-content-gap: var(--rt-space-2);
|
|
195
287
|
--rt-nav-item-font-size: var(--rt-text-sm);
|
|
196
288
|
--rt-nav-item-font-weight: var(--rt-font-weight-semibold);
|
|
197
289
|
--rt-nav-item-line-height: var(--rt-leading-none);
|
|
198
290
|
--rt-nav-item-color: var(--rt-color-text-primary);
|
|
199
291
|
--rt-nav-item-color-hover: var(--rt-color-action-primary);
|
|
200
292
|
--rt-nav-item-color-pressed: var(--rt-color-action-primary-hover);
|
|
201
|
-
--rt-nav-item-color-bg: var(--rt-neutral-
|
|
202
|
-
--rt-nav-item-color-border: var(--rt-neutral-
|
|
293
|
+
--rt-nav-item-color-bg: var(--rt-neutral-50);
|
|
294
|
+
--rt-nav-item-color-border: var(--rt-neutral-50);
|
|
203
295
|
--rt-nav-item-color-bg-active: var(--rt-color-bg-surface);
|
|
204
|
-
--rt-nav-item-color-caret: var(--rt-neutral-
|
|
296
|
+
--rt-nav-item-color-caret: var(--rt-neutral-200);
|
|
205
297
|
|
|
206
298
|
/* Фокус обведён пунктиром: сплошная рамка на плашке пункта неотличима от его
|
|
207
299
|
же границы. */
|
|
@@ -210,18 +302,18 @@
|
|
|
210
302
|
/* Недоступный пункт светлее доступного, а не другого оттенка: общий
|
|
211
303
|
`text-disabled` уходит в сине-стальной и рядом с серой подписью читается
|
|
212
304
|
как второй цвет, а не как выключенное состояние. */
|
|
213
|
-
--rt-nav-color-disabled: var(--rt-neutral-
|
|
305
|
+
--rt-nav-color-disabled: var(--rt-neutral-300);
|
|
214
306
|
|
|
215
307
|
/* Попап профиля. Подложку берёт у панели навигации, своего здесь — габариты
|
|
216
308
|
блока пользователя, тень и набор строк: строк четыре, и они читаются как
|
|
217
309
|
список действий, а не как выпадающее меню. */
|
|
218
|
-
--rt-profile-menu-min-width:
|
|
310
|
+
--rt-profile-menu-min-width: var(--rt-size-60);
|
|
219
311
|
--rt-profile-menu-padding: var(--rt-space-5);
|
|
220
312
|
--rt-profile-menu-shadow: var(--rt-shadow-profile-menu);
|
|
221
|
-
--rt-profile-avatar-size:
|
|
313
|
+
--rt-profile-avatar-size: var(--rt-size-10);
|
|
222
314
|
--rt-profile-avatar-font-size: var(--rt-text-2xl);
|
|
223
|
-
--rt-profile-item-padding-y: var(--rt-space-
|
|
224
|
-
--rt-profile-item-content-gap: var(--rt-space-2
|
|
315
|
+
--rt-profile-item-padding-y: var(--rt-space-4);
|
|
316
|
+
--rt-profile-item-content-gap: var(--rt-space-2);
|
|
225
317
|
--rt-profile-item-font-size: var(--rt-text-md);
|
|
226
318
|
--rt-profile-item-font-weight: var(--rt-font-weight-medium);
|
|
227
319
|
--rt-profile-item-radius: var(--rt-radius-md);
|
|
@@ -229,24 +321,24 @@
|
|
|
229
321
|
/* Строки выступают за содержимое панели на половину её отступа: так
|
|
230
322
|
подсветка на наведении не упирается в рамку, а иконка остаётся на одной
|
|
231
323
|
вертикали с содержимым. Это же число — горизонтальный отступ строки. */
|
|
232
|
-
--rt-profile-row-inset: var(--rt-space-2
|
|
324
|
+
--rt-profile-row-inset: var(--rt-space-2);
|
|
233
325
|
--rt-profile-theme-icon-padding: var(--rt-space-2);
|
|
234
326
|
|
|
235
327
|
/* Габариты панели второго уровня: ширина считается числом колонок, поэтому
|
|
236
328
|
колонка, промежуток и внутренний отступ — токены, из которых панель
|
|
237
329
|
складывает свою ширину. По вертикали отступ крупнее: у первой группы над
|
|
238
330
|
заголовком нет ничего, и панель иначе начинается впритык. */
|
|
239
|
-
--rt-nav-panel-column-width:
|
|
331
|
+
--rt-nav-panel-column-width: var(--rt-size-60);
|
|
240
332
|
--rt-nav-panel-column-gap: var(--rt-space-5);
|
|
241
|
-
--rt-nav-panel-padding: var(--rt-space-
|
|
333
|
+
--rt-nav-panel-padding: var(--rt-space-4);
|
|
242
334
|
--rt-nav-panel-padding-y: var(--rt-space-md);
|
|
243
|
-
--rt-nav-panel-group-gap: var(--rt-space-
|
|
335
|
+
--rt-nav-panel-group-gap: var(--rt-space-8);
|
|
244
336
|
--rt-nav-panel-item-gap: var(--rt-space-0-5);
|
|
245
|
-
--rt-nav-panel-item-height:
|
|
337
|
+
--rt-nav-panel-item-height: var(--rt-size-6);
|
|
246
338
|
--rt-nav-panel-item-padding: var(--rt-space-1) var(--rt-space-2);
|
|
247
339
|
--rt-nav-panel-columns: 1;
|
|
248
340
|
--rt-nav-panel-color-bg: var(--rt-color-bg-surface);
|
|
249
|
-
--rt-nav-panel-color-border: var(--rt-neutral-
|
|
341
|
+
--rt-nav-panel-color-border: var(--rt-neutral-200);
|
|
250
342
|
--rt-nav-panel-shadow: var(--rt-shadow-nav-panel);
|
|
251
343
|
|
|
252
344
|
/* Второй уровень набран легче первого: ряд разделов держит вес, а полтора
|
|
@@ -254,23 +346,24 @@
|
|
|
254
346
|
--rt-nav-panel-item-font-size: var(--rt-text-sm);
|
|
255
347
|
--rt-nav-panel-item-font-weight: var(--rt-font-weight-medium);
|
|
256
348
|
--rt-nav-panel-item-content-gap: var(--rt-space-1);
|
|
257
|
-
--rt-nav-panel-item-color: var(--rt-neutral-
|
|
258
|
-
--rt-nav-panel-item-color-bg-hover: var(--rt-neutral-
|
|
349
|
+
--rt-nav-panel-item-color: var(--rt-neutral-600);
|
|
350
|
+
--rt-nav-panel-item-color-bg-hover: var(--rt-neutral-50);
|
|
259
351
|
--rt-nav-panel-item-color-active: var(--rt-color-text-inverse);
|
|
260
352
|
--rt-nav-panel-item-color-bg-active: var(--rt-color-action-primary);
|
|
261
353
|
--rt-nav-panel-group-font-size: var(--rt-text-xs);
|
|
262
354
|
--rt-nav-panel-group-font-weight: var(--rt-font-weight-medium);
|
|
263
355
|
|
|
264
|
-
/* Заголовок группы светлее пункта,
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
--rt-nav-panel-group-
|
|
356
|
+
/* Заголовок группы светлее пункта, и оба берут порог контраста на белой панели.
|
|
357
|
+
Отношения обеих пар считает проверка тёмной темы; таблица замера — на странице
|
|
358
|
+
«Colors» витрины. */
|
|
359
|
+
--rt-nav-panel-group-color: var(--rt-neutral-600);
|
|
360
|
+
--rt-nav-panel-group-content-gap: var(--rt-space-2);
|
|
268
361
|
|
|
269
362
|
/* Маркер непросмотренного. Точка стоит в потоке следом за подписью — и в ряду
|
|
270
363
|
разделов, и в панели, и на узком экране: место ей даёт общий зазор
|
|
271
364
|
содержимого пункта. */
|
|
272
|
-
--rt-nav-caret-size:
|
|
273
|
-
--rt-nav-marker-size:
|
|
365
|
+
--rt-nav-caret-size: var(--rt-size-3);
|
|
366
|
+
--rt-nav-marker-size: var(--rt-size-1);
|
|
274
367
|
--rt-nav-marker-color: var(--rt-color-state-danger);
|
|
275
368
|
|
|
276
369
|
/* Form field (rt-field) — обёртка анатомии поля: label / help / hint / error /
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/* Правила тёмной темы, которые свойств не объявляют. Стоят отдельно от `_theme-dark.scss`:
|
|
2
|
+
тот собирается генератором из источника и держит только объявления. */
|
|
3
|
+
|
|
4
|
+
/* Body-level градиент — подложка экранов авторизации: их вьюпорт прозрачен
|
|
5
|
+
(`--rt-color-bg-surface-auth-card: transparent`) и просвечивает body.
|
|
6
|
+
Остальные экраны его не видят — rt-container кроет body непрозрачным фоном
|
|
7
|
+
страницы. Не shorthand `background:`, чтобы не сбросить body{}'ный
|
|
8
|
+
`background-color`. */
|
|
9
|
+
@layer rt-kit.base {
|
|
10
|
+
:root[data-theme='dark'] body,
|
|
11
|
+
html.rt-theme-dark body {
|
|
12
|
+
background-attachment: fixed;
|
|
13
|
+
background-image: linear-gradient(156deg, #122341 12.68%, #182142 99.28%);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/* rt-logo (чёрный SVG) — инверсия для читаемости на тёмном фоне */
|
|
18
|
+
@layer rt-kit.base {
|
|
19
|
+
:root[data-theme='dark'] .rt-logo,
|
|
20
|
+
html.rt-theme-dark .rt-logo {
|
|
21
|
+
filter: invert(1) brightness(1.5);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -1,19 +1,26 @@
|
|
|
1
|
-
/*
|
|
1
|
+
/* Собрано генератором `tools/build-tokens-v2.mjs` из `tokens.source.mjs` — правится там, не здесь:
|
|
2
|
+
правка на месте теряется на следующей сборке, и её называет `pnpm run check:tokens-build`. */
|
|
2
3
|
|
|
3
|
-
|
|
4
|
+
/* Тёмная тема — переопределение назначений; ступени шкалы неизменны.
|
|
5
|
+
|
|
6
|
+
Тело вынесено в @mixin, чтобы тот же набор переопределений можно было
|
|
4
7
|
применить не только на html-уровне (тема приложения), но и к локальному
|
|
5
8
|
контейнеру (side-by-side light/dark в Storybook) — без дублирования значений.
|
|
6
9
|
|
|
7
10
|
База (`rt-theme-dark-tokens`) — тёплый графит для приложений и всех
|
|
8
11
|
CDK-overlay'ев (асайды/диалоги/меню рендерятся на уровне body, вне
|
|
9
12
|
host-классов шеллов — поэтому графит держим на :root, иначе overlay'и
|
|
10
|
-
не наследовали бы палитру).
|
|
13
|
+
не наследовали бы палитру).
|
|
14
|
+
|
|
15
|
+
Значения ответов живут в источнике рядом со своим светлым назначением: забытая половина
|
|
16
|
+
пары видна там же, а не вылавливается сверкой двух файлов. */
|
|
11
17
|
|
|
12
18
|
@mixin rt-theme-dark-tokens {
|
|
13
19
|
/* Background — тёплый графит */
|
|
14
20
|
--rt-color-bg-page: var(--rt-charcoal-900);
|
|
15
21
|
--rt-color-bg-surface: var(--rt-charcoal-800);
|
|
16
22
|
--rt-color-bg-surface-subtle: var(--rt-charcoal-950);
|
|
23
|
+
--rt-color-bg-surface-subtle-2: var(--rt-charcoal-950);
|
|
17
24
|
--rt-color-bg-hover: var(--rt-charcoal-700);
|
|
18
25
|
--rt-color-bg-subtle: var(--rt-charcoal-950);
|
|
19
26
|
--rt-color-bg-overlay: rgb(0 0 0 / 70%);
|
|
@@ -21,17 +28,17 @@
|
|
|
21
28
|
|
|
22
29
|
/* Text — почти белый на графите */
|
|
23
30
|
--rt-color-text-primary: var(--rt-neutral-50);
|
|
24
|
-
--rt-color-text-muted: var(--rt-overlay-white-
|
|
31
|
+
--rt-color-text-muted: var(--rt-overlay-white-50);
|
|
25
32
|
--rt-color-text-disabled: var(--rt-overlay-white-25);
|
|
26
33
|
--rt-color-text-inverse: var(--rt-neutral-900);
|
|
27
|
-
--rt-color-text-link: var(--rt-
|
|
28
|
-
--rt-color-text-link-hover: var(--rt-
|
|
34
|
+
--rt-color-text-link: var(--rt-brand-300);
|
|
35
|
+
--rt-color-text-link-hover: var(--rt-brand-500);
|
|
29
36
|
|
|
30
37
|
/* Border — приглушённые на графите */
|
|
31
38
|
--rt-color-border-default: var(--rt-charcoal-border);
|
|
32
39
|
--rt-color-border-strong: var(--rt-charcoal-border-strong);
|
|
33
40
|
--rt-color-border-subtle: var(--rt-charcoal-border);
|
|
34
|
-
--rt-color-border-focus: var(--rt-
|
|
41
|
+
--rt-color-border-focus: var(--rt-brand-500);
|
|
35
42
|
|
|
36
43
|
/* Input border видим в dark (в light — transparent). */
|
|
37
44
|
--rt-input-color-border: var(--rt-charcoal-border);
|
|
@@ -49,27 +56,51 @@
|
|
|
49
56
|
--rt-nav-item-color-bg: var(--rt-charcoal-950);
|
|
50
57
|
--rt-nav-item-color-border: var(--rt-charcoal-950);
|
|
51
58
|
--rt-nav-item-color-bg-active: var(--rt-charcoal-800);
|
|
52
|
-
--rt-nav-item-color-caret: var(--rt-neutral-
|
|
59
|
+
--rt-nav-item-color-caret: var(--rt-neutral-600);
|
|
53
60
|
--rt-nav-panel-color-bg: var(--rt-charcoal-800);
|
|
54
|
-
--rt-nav-panel-color-border: var(--rt-neutral-
|
|
55
|
-
--rt-nav-panel-item-color: var(--rt-neutral-
|
|
61
|
+
--rt-nav-panel-color-border: var(--rt-neutral-600);
|
|
62
|
+
--rt-nav-panel-item-color: var(--rt-neutral-200);
|
|
56
63
|
--rt-nav-panel-item-color-bg-hover: var(--rt-charcoal-950);
|
|
57
|
-
--rt-nav-panel-group-color: var(--rt-neutral-
|
|
58
|
-
--rt-nav-color-disabled: var(--rt-neutral-
|
|
64
|
+
--rt-nav-panel-group-color: var(--rt-neutral-400);
|
|
65
|
+
--rt-nav-color-disabled: var(--rt-neutral-600);
|
|
59
66
|
|
|
60
|
-
/* Action —
|
|
61
|
-
|
|
67
|
+
/* Action — сам цвет марки один в обеих темах, а доля оттенка на графите вдвое
|
|
68
|
+
больше: слабый оттенок на тёмном фоне просто не виден. Считается от ступени
|
|
69
|
+
бренда, как и в светлой теме. */
|
|
70
|
+
--rt-color-action-primary-subtle: color-mix(in srgb, var(--rt-brand-500) 16%, transparent);
|
|
62
71
|
|
|
63
72
|
/* Focus-ring в dark — ярче для контрастности на тёмных фонах. */
|
|
64
|
-
--rt-color-action-primary-soft:
|
|
73
|
+
--rt-color-action-primary-soft: color-mix(in srgb, var(--rt-brand-500) 32%, transparent);
|
|
74
|
+
|
|
75
|
+
/* Вторичное действие нейтрально, и на графите вся его тройка разворачивается:
|
|
76
|
+
подложка садится на приподнятую поверхность, а наведение и нажатие идут вверх
|
|
77
|
+
по светлоте, а не вниз, — иначе они тонут в фоне страницы. */
|
|
65
78
|
--rt-color-action-secondary: var(--rt-charcoal-700);
|
|
79
|
+
--rt-color-action-secondary-hover: var(--rt-charcoal-border);
|
|
80
|
+
--rt-color-action-secondary-active: var(--rt-charcoal-border-strong);
|
|
66
81
|
--rt-color-action-on-secondary: var(--rt-neutral-50);
|
|
67
82
|
|
|
83
|
+
/* Пятый член роли идёт против всей её тройки: подложка садится на поверхность,
|
|
84
|
+
а цвет на поверхности обязан от неё оторваться. Ступень нейтрали, а не графита:
|
|
85
|
+
графит кончается границей, и любая его ступень на карточке даёт меньше двух к
|
|
86
|
+
одному. Светлая тема красит тем же именем, что и подложку, и разъехаться они
|
|
87
|
+
могут только здесь. */
|
|
88
|
+
--rt-color-action-secondary-on-surface: var(--rt-neutral-400);
|
|
89
|
+
|
|
90
|
+
/* Отключённое действие на графите — та же приподнятая поверхность; подпись
|
|
91
|
+
наследует ответ тёмной темы по ссылке на приглушённый текст. */
|
|
92
|
+
--rt-color-action-disabled: var(--rt-charcoal-700);
|
|
93
|
+
|
|
94
|
+
/* Оттенок наведения на графите вдвое насыщеннее: слабый след на тёмном фоне
|
|
95
|
+
не виден — та же причина, что и у оттенка марки выше. */
|
|
96
|
+
--rt-btn-tint-hover: 16%;
|
|
97
|
+
--rt-btn-tint-active: 32%;
|
|
98
|
+
|
|
68
99
|
/* Soft card-shadow в dark — насыщеннее для отделения от фона. */
|
|
69
100
|
--rt-shadow-card-soft: 0 0 40px rgb(0 0 0 / 25%);
|
|
70
101
|
|
|
71
102
|
/* Hover-overlay инвертирован для dark (light overlay поверх тёмного фона). */
|
|
72
|
-
--rt-input-color-bg-hover: var(--rt-overlay-white-
|
|
103
|
+
--rt-input-color-bg-hover: var(--rt-overlay-white-8);
|
|
73
104
|
--rt-icon-button-color-bg-hover: var(--rt-overlay-white-4);
|
|
74
105
|
|
|
75
106
|
/* Toggle-switch — трек уходит в подложку, а бегунок остаётся светлым:
|
|
@@ -79,24 +110,29 @@
|
|
|
79
110
|
--rt-toggle-color-thumb: var(--rt-neutral-50);
|
|
80
111
|
--rt-toggle-shadow-thumb: var(--rt-shadow-none);
|
|
81
112
|
|
|
82
|
-
/* State — surfaces под dark + ярче error-text
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
113
|
+
/* State — surfaces под dark + ярче error-text.
|
|
114
|
+
|
|
115
|
+
Подложка считается от ступени своего статуса, а не повторяет её код цвета
|
|
116
|
+
тройкой каналов: повторённое значение расходится с источником молча, и
|
|
117
|
+
правка ступени оставляла подложку прежней. */
|
|
118
|
+
--rt-color-state-success-bg: color-mix(in srgb, var(--rt-success-500) 12%, transparent);
|
|
119
|
+
--rt-color-state-warning-bg: color-mix(in srgb, var(--rt-warning-500) 12%, transparent);
|
|
120
|
+
--rt-color-state-danger-bg: color-mix(in srgb, var(--rt-danger-500) 12%, transparent);
|
|
86
121
|
--rt-color-state-error-text: var(--rt-danger-500);
|
|
87
|
-
--rt-color-state-
|
|
122
|
+
--rt-color-state-warning-text: var(--rt-warning-500);
|
|
123
|
+
--rt-color-state-info-bg: color-mix(in srgb, var(--rt-info-500) 12%, transparent);
|
|
88
124
|
|
|
89
125
|
/* Chat — на графите светлые фоны пузырей нечитаемы: входящее уходит в
|
|
90
126
|
полупрозрачный синий, своё — в глубокий графит. */
|
|
91
|
-
--rt-chat-bubble-in-bg:
|
|
92
|
-
--rt-chat-bubble-in-author: var(--rt-
|
|
127
|
+
--rt-chat-bubble-in-bg: color-mix(in srgb, var(--rt-brand-500) 12%, transparent);
|
|
128
|
+
--rt-chat-bubble-in-author: var(--rt-brand-300);
|
|
93
129
|
--rt-chat-bubble-own-bg: var(--rt-charcoal-950);
|
|
94
130
|
--rt-chat-bubble-own-author: var(--rt-overlay-white-40);
|
|
95
131
|
--rt-chat-bubble-date: var(--rt-overlay-white-40);
|
|
96
|
-
--rt-chat-status-read: var(--rt-
|
|
132
|
+
--rt-chat-status-read: var(--rt-brand-300);
|
|
97
133
|
|
|
98
134
|
/* Special — Auth surface (градиентный фон логина + прозрачная карточка). */
|
|
99
|
-
--rt-color-bg-page-auth: linear-gradient(156deg,
|
|
135
|
+
--rt-color-bg-page-auth: linear-gradient(156deg, var(--rt-neutral-950) 12.68%, var(--rt-navy-900) 99.28%);
|
|
100
136
|
--rt-color-bg-surface-auth-card: transparent;
|
|
101
137
|
}
|
|
102
138
|
|
|
@@ -104,20 +140,3 @@
|
|
|
104
140
|
html.rt-theme-dark {
|
|
105
141
|
@include rt-theme-dark-tokens;
|
|
106
142
|
}
|
|
107
|
-
|
|
108
|
-
/* Body-level градиент — подложка экранов авторизации: их вьюпорт прозрачен
|
|
109
|
-
(`--rt-color-bg-surface-auth-card: transparent`) и просвечивает body.
|
|
110
|
-
Остальные экраны его не видят — rt-container кроет body непрозрачным фоном
|
|
111
|
-
страницы. Не shorthand `background:`, чтобы не сбросить body{}'ный
|
|
112
|
-
`background-color`. */
|
|
113
|
-
:root[data-theme='dark'] body,
|
|
114
|
-
html.rt-theme-dark body {
|
|
115
|
-
background-attachment: fixed;
|
|
116
|
-
background-image: linear-gradient(156deg, #122341 12.68%, #182142 99.28%);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/* rt-logo (чёрный SVG) — инверсия для читаемости на тёмном фоне */
|
|
120
|
-
:root[data-theme='dark'] .rt-logo,
|
|
121
|
-
html.rt-theme-dark .rt-logo {
|
|
122
|
-
filter: invert(1) brightness(1.5);
|
|
123
|
-
}
|