@rt-tools/ui-kit-v2 0.5.0 → 0.6.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 +71 -0
- package/fesm2022/rt-tools-ui-kit-v2.mjs +166 -166
- package/fesm2022/rt-tools-ui-kit-v2.mjs.map +1 -1
- package/package.json +1 -1
- package/rt-tools-ui-kit-v2-0.6.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/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/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/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/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/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 +34 -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 +56 -54
- package/src/lib/components/tooltip/rt-tooltip.component.scss +20 -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 +4 -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 +126 -67
- package/src/styles/_scrollbar.scss +21 -19
- package/src/styles/_semantic.scss +140 -56
- package/src/styles/_theme-dark.scss +60 -27
- package/styles/tokens.css +628 -408
- package/rt-tools-ui-kit-v2-0.5.0.tgz +0 -0
|
@@ -16,39 +16,118 @@
|
|
|
16
16
|
--rt-color-bg-overlay: var(--rt-overlay-black-50);
|
|
17
17
|
--rt-color-bg-inverse: var(--rt-neutral-900);
|
|
18
18
|
|
|
19
|
+
/* Подложка обвязки — шапка и боковая навигация. Отдельно от bg-inverse: тот
|
|
20
|
+
нейтральный и работает под перевёрнутым текстом, а этот синеватый и в обеих
|
|
21
|
+
темах один. */
|
|
22
|
+
--rt-color-bg-nav: var(--rt-navy-900); /* rt-theme-shared: обвязка тёмная в обеих темах */
|
|
23
|
+
|
|
19
24
|
/* Text */
|
|
20
25
|
--rt-color-text-primary: var(--rt-neutral-900);
|
|
21
|
-
|
|
26
|
+
|
|
27
|
+
/* Ступень 600, а не 500: приглушённый текст обязан брать порог, а после
|
|
28
|
+
пересчёта ряда самая светлая ступень, которая его берёт, — шестисотая.
|
|
29
|
+
Прежде эту роль держала off-grid ступень 510, заведённая ровно под неё. */
|
|
30
|
+
--rt-color-text-muted: var(--rt-neutral-600);
|
|
22
31
|
--rt-color-text-disabled: var(--rt-neutral-400);
|
|
23
32
|
--rt-color-text-inverse: var(--rt-neutral-0);
|
|
24
|
-
--rt-color-text-link: var(--rt-
|
|
25
|
-
--rt-color-text-link-hover: var(--rt-
|
|
33
|
+
--rt-color-text-link: var(--rt-brand-500);
|
|
34
|
+
--rt-color-text-link-hover: var(--rt-brand-600);
|
|
26
35
|
|
|
27
36
|
/* Border */
|
|
28
37
|
--rt-color-border-default: var(--rt-neutral-200);
|
|
29
38
|
--rt-color-border-strong: var(--rt-neutral-300);
|
|
30
39
|
--rt-color-border-subtle: var(--rt-neutral-200);
|
|
31
|
-
--rt-color-border-focus: var(--rt-
|
|
32
|
-
|
|
33
|
-
/* Action
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
40
|
+
--rt-color-border-focus: var(--rt-brand-500);
|
|
41
|
+
|
|
42
|
+
/* Action — роли действия.
|
|
43
|
+
|
|
44
|
+
Роль это пятёрка: подложка, наведение, нажатие, подпись на них и цвет самой
|
|
45
|
+
роли на поверхности. Кнопка берёт роль целиком и своих цветов не знает вовсе,
|
|
46
|
+
поэтому смена роли — одна строка здесь, а не правка стилей компонента.
|
|
47
|
+
Наведение и нажатие — соседние ступени своей шкалы; подпись светлая у всех
|
|
48
|
+
ролей, потому что все подложки тёмные.
|
|
49
|
+
|
|
50
|
+
Пятый член — `-on-surface` — красит безфоновые оформления: текстовое и
|
|
51
|
+
обводочное берут им подпись и рамку. Отдельным именем, а не подложкой роли:
|
|
52
|
+
подложка вправе быть поверхностью, и у вторичной роли на графите она ею
|
|
53
|
+
становится — подпись, взятая из подложки, легла бы сама на себя. У пяти ролей
|
|
54
|
+
цвет тот же, что и у подложки, и это записано ссылкой, а не повтором
|
|
55
|
+
значения. */
|
|
56
|
+
--rt-color-action-primary: var(--rt-brand-500); /* rt-theme-shared: цвет марки один в обеих темах */
|
|
57
|
+
--rt-color-action-primary-hover: var(--rt-brand-600); /* rt-theme-shared: цвет марки один в обеих темах */
|
|
58
|
+
--rt-color-action-primary-active: var(--rt-brand-700); /* rt-theme-shared: цвет марки один в обеих темах */
|
|
59
|
+
--rt-color-action-primary-subtle: var(--rt-overlay-brand-8);
|
|
37
60
|
|
|
38
61
|
/* 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
|
-
|
|
62
|
+
--rt-color-action-primary-soft: var(--rt-overlay-brand-24);
|
|
63
|
+
--rt-color-action-on-primary: var(--rt-neutral-0); /* rt-theme-shared: подпись на действии марки светлая в обеих темах */
|
|
64
|
+
--rt-color-action-primary-on-surface: var(--rt-color-action-primary);
|
|
65
|
+
|
|
66
|
+
/* Вторичное действие — единственная роль без своего цвета: она нейтральна и на
|
|
67
|
+
графите разворачивается в подложку поверхности, поэтому тёмная тема отвечает
|
|
68
|
+
на всю её тройку. По той же причине пятый член у неё свой: подложкой роли на
|
|
69
|
+
графите красить подпись нечем. */
|
|
70
|
+
--rt-color-action-secondary: var(--rt-neutral-600);
|
|
71
|
+
--rt-color-action-secondary-hover: var(--rt-neutral-700);
|
|
72
|
+
--rt-color-action-secondary-active: var(--rt-neutral-800);
|
|
73
|
+
--rt-color-action-on-secondary: var(--rt-neutral-0);
|
|
74
|
+
--rt-color-action-secondary-on-surface: var(--rt-neutral-600);
|
|
75
|
+
--rt-color-action-success: var(--rt-success-500); /* rt-theme-shared: цвет роли один в обеих темах */
|
|
76
|
+
--rt-color-action-success-hover: var(--rt-success-600); /* rt-theme-shared: цвет роли один в обеих темах */
|
|
77
|
+
--rt-color-action-success-active: var(--rt-success-700); /* rt-theme-shared: цвет роли один в обеих темах */
|
|
78
|
+
--rt-color-action-on-success: var(--rt-neutral-0); /* rt-theme-shared: подпись на цветной подложке светлая в обеих темах */
|
|
79
|
+
--rt-color-action-success-on-surface: var(--rt-color-action-success);
|
|
80
|
+
--rt-color-action-warning: var(--rt-warning-500); /* rt-theme-shared: цвет роли один в обеих темах */
|
|
81
|
+
--rt-color-action-warning-hover: var(--rt-warning-600); /* rt-theme-shared: цвет роли один в обеих темах */
|
|
82
|
+
--rt-color-action-warning-active: var(--rt-warning-700); /* rt-theme-shared: цвет роли один в обеих темах */
|
|
83
|
+
--rt-color-action-on-warning: var(--rt-neutral-0); /* rt-theme-shared: подпись на цветной подложке светлая в обеих темах */
|
|
84
|
+
--rt-color-action-warning-on-surface: var(--rt-color-action-warning);
|
|
85
|
+
--rt-color-action-danger: var(--rt-danger-500); /* rt-theme-shared: цвет роли один в обеих темах */
|
|
86
|
+
--rt-color-action-danger-hover: var(--rt-danger-600); /* rt-theme-shared: цвет роли один в обеих темах */
|
|
87
|
+
--rt-color-action-danger-active: var(--rt-danger-700); /* rt-theme-shared: цвет роли один в обеих темах */
|
|
88
|
+
--rt-color-action-on-danger: var(--rt-neutral-0); /* rt-theme-shared: подпись на цветной подложке светлая в обеих темах */
|
|
89
|
+
--rt-color-action-danger-on-surface: var(--rt-color-action-danger);
|
|
90
|
+
--rt-color-action-info: var(--rt-info-500); /* rt-theme-shared: цвет роли один в обеих темах */
|
|
91
|
+
--rt-color-action-info-hover: var(--rt-info-600); /* rt-theme-shared: цвет роли один в обеих темах */
|
|
92
|
+
--rt-color-action-info-active: var(--rt-info-700); /* rt-theme-shared: цвет роли один в обеих темах */
|
|
93
|
+
--rt-color-action-on-info: var(--rt-neutral-0); /* rt-theme-shared: подпись на цветной подложке светлая в обеих темах */
|
|
94
|
+
--rt-color-action-info-on-surface: var(--rt-color-action-info);
|
|
95
|
+
|
|
96
|
+
/* Отключённое действие — своя пара, а не вторичная роль: делить подложку с ней
|
|
97
|
+
значит сделать отключённую вторичную кнопку неотличимой от доступной. */
|
|
98
|
+
--rt-color-action-disabled: var(--rt-neutral-200);
|
|
99
|
+
--rt-color-action-on-disabled: var(--rt-color-text-disabled);
|
|
100
|
+
|
|
101
|
+
/* Доли оттенка под наведение и нажатие безфоновых оформлений кнопки. Живут в
|
|
102
|
+
слое, а не в стилях компонента: тёмная тема их поднимает, а половина пары,
|
|
103
|
+
оставшаяся в компоненте, тёмному ответу не видна. */
|
|
104
|
+
--rt-btn-tint-hover: 8%;
|
|
105
|
+
--rt-btn-tint-active: 16%;
|
|
106
|
+
|
|
107
|
+
/* Кольцо фокуса разобрано на составляющие: толщину, отступ и цвет. Композит
|
|
108
|
+
собирается из них и остаётся на месте — восемь компонентов берут его целиком, и
|
|
109
|
+
менять их незачем. Отступ — зазор цвета поверхности между элементом и кольцом:
|
|
110
|
+
первая тень при нулевом отступе не рисует ничего. */
|
|
111
|
+
--rt-focus-ring-width: var(--rt-border-width-thick);
|
|
112
|
+
|
|
113
|
+
/* Ноль с единицей намеренно: безразмерный ноль внутри calc с длиной невалиден, и
|
|
114
|
+
браузер отбрасывает объявление кольца целиком — кольцо просто пропадает. */
|
|
115
|
+
--rt-focus-ring-offset: 0px;
|
|
116
|
+
--rt-focus-ring-color: var(--rt-color-action-primary-soft);
|
|
117
|
+
--rt-focus-ring-color-danger: var(--rt-overlay-danger-16); /* rt-theme-shared: оттенок опасного действия один в обеих темах */
|
|
43
118
|
|
|
44
119
|
/* Focus-ring composite — для interactive элементов с custom focus-visible. */
|
|
45
|
-
--rt-shadow-focus-ring:
|
|
46
|
-
|
|
120
|
+
--rt-shadow-focus-ring:
|
|
121
|
+
0 0 0 var(--rt-focus-ring-offset) var(--rt-color-bg-surface),
|
|
122
|
+
0 0 0 calc(var(--rt-focus-ring-offset) + var(--rt-focus-ring-width)) var(--rt-focus-ring-color);
|
|
123
|
+
--rt-shadow-focus-ring-danger:
|
|
124
|
+
0 0 0 var(--rt-focus-ring-offset) var(--rt-color-bg-surface),
|
|
125
|
+
0 0 0 calc(var(--rt-focus-ring-offset) + var(--rt-focus-ring-width)) var(--rt-focus-ring-color-danger);
|
|
47
126
|
|
|
48
127
|
/* Stepper (rt-stepper) — рельса прогресса. Текущий шаг — янтарный (одинаков
|
|
49
128
|
в обеих темах); трек/прогресс переопределяются в dark на приглушённые. */
|
|
50
|
-
--rt-color-stepper-current: var(--rt-amber-400);
|
|
51
|
-
--rt-color-stepper-current-subtle: var(--rt-overlay-amber-16);
|
|
129
|
+
--rt-color-stepper-current: var(--rt-amber-400); /* rt-theme-shared: янтарь текущего шага один в обеих темах */
|
|
130
|
+
--rt-color-stepper-current-subtle: var(--rt-overlay-amber-16); /* rt-theme-shared: янтарь текущего шага один в обеих темах */
|
|
52
131
|
--rt-color-stepper-track: var(--rt-gray-350);
|
|
53
132
|
--rt-color-stepper-progress: var(--rt-color-action-primary);
|
|
54
133
|
|
|
@@ -59,32 +138,36 @@
|
|
|
59
138
|
--rt-shadow-status-dot: 0 0 0 3px var(--rt-color-state-success-bg);
|
|
60
139
|
|
|
61
140
|
/* State */
|
|
62
|
-
--rt-color-state-success: var(--rt-success-500);
|
|
141
|
+
--rt-color-state-success: var(--rt-success-500); /* rt-theme-shared: цвет статуса один в обеих темах */
|
|
63
142
|
--rt-color-state-success-bg: var(--rt-success-50);
|
|
64
|
-
--rt-color-state-warning: var(--rt-warning-500);
|
|
143
|
+
--rt-color-state-warning: var(--rt-warning-500); /* rt-theme-shared: цвет статуса один в обеих темах */
|
|
65
144
|
--rt-color-state-warning-bg: var(--rt-warning-50);
|
|
66
|
-
|
|
145
|
+
|
|
146
|
+
/* Подпись на подложке предупреждения — ступенью темнее самого статуса: сам
|
|
147
|
+
статус на своей подложке порога контраста не берёт. Пара к error-text. */
|
|
148
|
+
--rt-color-state-warning-text: var(--rt-warning-600);
|
|
149
|
+
--rt-color-state-danger: var(--rt-danger-500); /* rt-theme-shared: цвет статуса один в обеих темах */
|
|
67
150
|
--rt-color-state-danger-bg: var(--rt-danger-50);
|
|
68
151
|
--rt-color-state-error-text: var(--rt-danger-600);
|
|
69
|
-
--rt-color-state-info: var(--rt-info-500);
|
|
152
|
+
--rt-color-state-info: var(--rt-info-500); /* rt-theme-shared: цвет статуса один в обеих темах */
|
|
70
153
|
--rt-color-state-info-bg: var(--rt-info-50);
|
|
71
154
|
|
|
72
155
|
/* Chat — пузыри переписки. Входящее и своё различаются фоном, а не рамкой:
|
|
73
156
|
рамка на каждом пузыре дробит ленту. Отметка прочтения синяя — единственный
|
|
74
157
|
цветной элемент подвала пузыря, остальные статусы приглушены. */
|
|
75
|
-
--rt-chat-bubble-in-bg: var(--rt-
|
|
76
|
-
--rt-chat-bubble-in-author: var(--rt-
|
|
158
|
+
--rt-chat-bubble-in-bg: var(--rt-brand-50);
|
|
159
|
+
--rt-chat-bubble-in-author: var(--rt-brand-700);
|
|
77
160
|
--rt-chat-bubble-own-bg: var(--rt-neutral-100);
|
|
78
161
|
--rt-chat-bubble-own-author: var(--rt-neutral-500);
|
|
79
162
|
--rt-chat-bubble-date: var(--rt-color-text-muted);
|
|
80
|
-
--rt-chat-status-read: var(--rt-
|
|
163
|
+
--rt-chat-status-read: var(--rt-brand-400);
|
|
81
164
|
|
|
82
165
|
/* Special — Auth surface (gradient bg + transparent card в dark) */
|
|
83
166
|
--rt-color-bg-page-auth: var(--rt-neutral-50);
|
|
84
167
|
--rt-color-bg-surface-auth-card: var(--rt-neutral-0);
|
|
85
168
|
|
|
86
169
|
/* Spacing aliases — named semantic aliases на primitive numeric scale */
|
|
87
|
-
--rt-space-2xs: 2px
|
|
170
|
+
--rt-space-2xs: var(--rt-space-0-5); /* 2px */
|
|
88
171
|
--rt-space-xs: var(--rt-space-1); /* 4px */
|
|
89
172
|
--rt-space-sm: var(--rt-space-2); /* 8px */
|
|
90
173
|
--rt-space-md: var(--rt-space-4); /* 16px */
|
|
@@ -94,7 +177,7 @@
|
|
|
94
177
|
--rt-space-3xl: var(--rt-space-16); /* 64px */
|
|
95
178
|
|
|
96
179
|
/* Text size base — semantic alias для default body text */
|
|
97
|
-
--rt-text-base:
|
|
180
|
+
--rt-text-base: var(--rt-text-md);
|
|
98
181
|
|
|
99
182
|
/* Form input — composition tokens. Единый контракт для всего input-семейства
|
|
100
183
|
(rt-input, rt-input-number, rt-autocomplete, rt-select, rt-multiselect,
|
|
@@ -123,7 +206,7 @@
|
|
|
123
206
|
|
|
124
207
|
/* Radius / spacing / border */
|
|
125
208
|
--rt-input-radius: var(--rt-radius-lg);
|
|
126
|
-
--rt-input-padding-x: var(--rt-space-
|
|
209
|
+
--rt-input-padding-x: var(--rt-space-4);
|
|
127
210
|
--rt-input-padding-y: var(--rt-space-0);
|
|
128
211
|
--rt-input-border-width: var(--rt-border-width-thin);
|
|
129
212
|
--rt-input-focus-outline-offset: var(--rt-border-width-thin);
|
|
@@ -157,7 +240,7 @@
|
|
|
157
240
|
набирается табличными цифрами и держит ширину, иначе кнопки прыгают
|
|
158
241
|
при переходе через десяток. */
|
|
159
242
|
--rt-counter-gap: var(--rt-space-sm);
|
|
160
|
-
--rt-counter-value-min-width:
|
|
243
|
+
--rt-counter-value-min-width: var(--rt-size-6);
|
|
161
244
|
--rt-counter-value-font-size: var(--rt-text-md);
|
|
162
245
|
--rt-counter-value-color: var(--rt-color-text-primary);
|
|
163
246
|
--rt-counter-row-gap: var(--rt-space-md);
|
|
@@ -173,7 +256,7 @@
|
|
|
173
256
|
--rt-toggle-color-track-on: var(--rt-color-action-primary);
|
|
174
257
|
--rt-toggle-color-border: var(--rt-color-border-strong);
|
|
175
258
|
--rt-toggle-color-thumb: var(--rt-color-bg-surface);
|
|
176
|
-
--rt-toggle-color-icon: var(--rt-amber-400);
|
|
259
|
+
--rt-toggle-color-icon: var(--rt-amber-400); /* rt-theme-shared: янтарь иконки один в обеих темах */
|
|
177
260
|
--rt-toggle-shadow-thumb: var(--rt-shadow-md);
|
|
178
261
|
|
|
179
262
|
/* Рамка off-трека — inset-тенью, а не border: у border своя коробка, и
|
|
@@ -182,26 +265,26 @@
|
|
|
182
265
|
|
|
183
266
|
/* Навигация (rt-page-header). Шапка — отдельная плашка; отступ от краёв
|
|
184
267
|
страницы задаёт тот, кто её ставит. */
|
|
185
|
-
--rt-nav-header-padding: var(--rt-space-2
|
|
186
|
-
--rt-nav-header-color-bg: var(--rt-neutral-
|
|
268
|
+
--rt-nav-header-padding: var(--rt-space-2) var(--rt-space-4);
|
|
269
|
+
--rt-nav-header-color-bg: var(--rt-neutral-50);
|
|
187
270
|
|
|
188
271
|
/* Первый уровень. Пункт ряда несёт плашку цвета самой шапки: на общем фоне её
|
|
189
272
|
не видно, и белым проступает только активный раздел. Наведение красит
|
|
190
273
|
подпись, а не фон — иначе оно спорит с этой подсветкой. */
|
|
191
|
-
--rt-nav-item-height:
|
|
274
|
+
--rt-nav-item-height: var(--rt-size-6);
|
|
192
275
|
--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-
|
|
276
|
+
--rt-nav-item-padding: var(--rt-space-2) var(--rt-space-2);
|
|
277
|
+
--rt-nav-item-content-gap: var(--rt-space-2);
|
|
195
278
|
--rt-nav-item-font-size: var(--rt-text-sm);
|
|
196
279
|
--rt-nav-item-font-weight: var(--rt-font-weight-semibold);
|
|
197
280
|
--rt-nav-item-line-height: var(--rt-leading-none);
|
|
198
281
|
--rt-nav-item-color: var(--rt-color-text-primary);
|
|
199
282
|
--rt-nav-item-color-hover: var(--rt-color-action-primary);
|
|
200
283
|
--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-
|
|
284
|
+
--rt-nav-item-color-bg: var(--rt-neutral-50);
|
|
285
|
+
--rt-nav-item-color-border: var(--rt-neutral-50);
|
|
203
286
|
--rt-nav-item-color-bg-active: var(--rt-color-bg-surface);
|
|
204
|
-
--rt-nav-item-color-caret: var(--rt-neutral-
|
|
287
|
+
--rt-nav-item-color-caret: var(--rt-neutral-200);
|
|
205
288
|
|
|
206
289
|
/* Фокус обведён пунктиром: сплошная рамка на плашке пункта неотличима от его
|
|
207
290
|
же границы. */
|
|
@@ -210,18 +293,18 @@
|
|
|
210
293
|
/* Недоступный пункт светлее доступного, а не другого оттенка: общий
|
|
211
294
|
`text-disabled` уходит в сине-стальной и рядом с серой подписью читается
|
|
212
295
|
как второй цвет, а не как выключенное состояние. */
|
|
213
|
-
--rt-nav-color-disabled: var(--rt-neutral-
|
|
296
|
+
--rt-nav-color-disabled: var(--rt-neutral-300);
|
|
214
297
|
|
|
215
298
|
/* Попап профиля. Подложку берёт у панели навигации, своего здесь — габариты
|
|
216
299
|
блока пользователя, тень и набор строк: строк четыре, и они читаются как
|
|
217
300
|
список действий, а не как выпадающее меню. */
|
|
218
|
-
--rt-profile-menu-min-width:
|
|
301
|
+
--rt-profile-menu-min-width: var(--rt-size-60);
|
|
219
302
|
--rt-profile-menu-padding: var(--rt-space-5);
|
|
220
303
|
--rt-profile-menu-shadow: var(--rt-shadow-profile-menu);
|
|
221
|
-
--rt-profile-avatar-size:
|
|
304
|
+
--rt-profile-avatar-size: var(--rt-size-10);
|
|
222
305
|
--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
|
|
306
|
+
--rt-profile-item-padding-y: var(--rt-space-4);
|
|
307
|
+
--rt-profile-item-content-gap: var(--rt-space-2);
|
|
225
308
|
--rt-profile-item-font-size: var(--rt-text-md);
|
|
226
309
|
--rt-profile-item-font-weight: var(--rt-font-weight-medium);
|
|
227
310
|
--rt-profile-item-radius: var(--rt-radius-md);
|
|
@@ -229,24 +312,24 @@
|
|
|
229
312
|
/* Строки выступают за содержимое панели на половину её отступа: так
|
|
230
313
|
подсветка на наведении не упирается в рамку, а иконка остаётся на одной
|
|
231
314
|
вертикали с содержимым. Это же число — горизонтальный отступ строки. */
|
|
232
|
-
--rt-profile-row-inset: var(--rt-space-2
|
|
315
|
+
--rt-profile-row-inset: var(--rt-space-2);
|
|
233
316
|
--rt-profile-theme-icon-padding: var(--rt-space-2);
|
|
234
317
|
|
|
235
318
|
/* Габариты панели второго уровня: ширина считается числом колонок, поэтому
|
|
236
319
|
колонка, промежуток и внутренний отступ — токены, из которых панель
|
|
237
320
|
складывает свою ширину. По вертикали отступ крупнее: у первой группы над
|
|
238
321
|
заголовком нет ничего, и панель иначе начинается впритык. */
|
|
239
|
-
--rt-nav-panel-column-width:
|
|
322
|
+
--rt-nav-panel-column-width: var(--rt-size-60);
|
|
240
323
|
--rt-nav-panel-column-gap: var(--rt-space-5);
|
|
241
|
-
--rt-nav-panel-padding: var(--rt-space-
|
|
324
|
+
--rt-nav-panel-padding: var(--rt-space-4);
|
|
242
325
|
--rt-nav-panel-padding-y: var(--rt-space-md);
|
|
243
|
-
--rt-nav-panel-group-gap: var(--rt-space-
|
|
326
|
+
--rt-nav-panel-group-gap: var(--rt-space-8);
|
|
244
327
|
--rt-nav-panel-item-gap: var(--rt-space-0-5);
|
|
245
|
-
--rt-nav-panel-item-height:
|
|
328
|
+
--rt-nav-panel-item-height: var(--rt-size-6);
|
|
246
329
|
--rt-nav-panel-item-padding: var(--rt-space-1) var(--rt-space-2);
|
|
247
330
|
--rt-nav-panel-columns: 1;
|
|
248
331
|
--rt-nav-panel-color-bg: var(--rt-color-bg-surface);
|
|
249
|
-
--rt-nav-panel-color-border: var(--rt-neutral-
|
|
332
|
+
--rt-nav-panel-color-border: var(--rt-neutral-200);
|
|
250
333
|
--rt-nav-panel-shadow: var(--rt-shadow-nav-panel);
|
|
251
334
|
|
|
252
335
|
/* Второй уровень набран легче первого: ряд разделов держит вес, а полтора
|
|
@@ -254,23 +337,24 @@
|
|
|
254
337
|
--rt-nav-panel-item-font-size: var(--rt-text-sm);
|
|
255
338
|
--rt-nav-panel-item-font-weight: var(--rt-font-weight-medium);
|
|
256
339
|
--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-
|
|
340
|
+
--rt-nav-panel-item-color: var(--rt-neutral-600);
|
|
341
|
+
--rt-nav-panel-item-color-bg-hover: var(--rt-neutral-50);
|
|
259
342
|
--rt-nav-panel-item-color-active: var(--rt-color-text-inverse);
|
|
260
343
|
--rt-nav-panel-item-color-bg-active: var(--rt-color-action-primary);
|
|
261
344
|
--rt-nav-panel-group-font-size: var(--rt-text-xs);
|
|
262
345
|
--rt-nav-panel-group-font-weight: var(--rt-font-weight-medium);
|
|
263
346
|
|
|
264
|
-
/* Заголовок группы светлее пункта,
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
--rt-nav-panel-group-
|
|
347
|
+
/* Заголовок группы светлее пункта, и оба берут порог контраста на белой панели.
|
|
348
|
+
Отношения обеих пар считает проверка тёмной темы; таблица замера — на странице
|
|
349
|
+
«Colors» витрины. */
|
|
350
|
+
--rt-nav-panel-group-color: var(--rt-neutral-600);
|
|
351
|
+
--rt-nav-panel-group-content-gap: var(--rt-space-2);
|
|
268
352
|
|
|
269
353
|
/* Маркер непросмотренного. Точка стоит в потоке следом за подписью — и в ряду
|
|
270
354
|
разделов, и в панели, и на узком экране: место ей даёт общий зазор
|
|
271
355
|
содержимого пункта. */
|
|
272
|
-
--rt-nav-caret-size:
|
|
273
|
-
--rt-nav-marker-size:
|
|
356
|
+
--rt-nav-caret-size: var(--rt-size-3);
|
|
357
|
+
--rt-nav-marker-size: var(--rt-size-1);
|
|
274
358
|
--rt-nav-marker-color: var(--rt-color-state-danger);
|
|
275
359
|
|
|
276
360
|
/* Form field (rt-field) — обёртка анатомии поля: label / help / hint / error /
|
|
@@ -24,14 +24,14 @@
|
|
|
24
24
|
--rt-color-text-muted: var(--rt-overlay-white-40);
|
|
25
25
|
--rt-color-text-disabled: var(--rt-overlay-white-25);
|
|
26
26
|
--rt-color-text-inverse: var(--rt-neutral-900);
|
|
27
|
-
--rt-color-text-link: var(--rt-
|
|
28
|
-
--rt-color-text-link-hover: var(--rt-
|
|
27
|
+
--rt-color-text-link: var(--rt-brand-300);
|
|
28
|
+
--rt-color-text-link-hover: var(--rt-brand-500);
|
|
29
29
|
|
|
30
30
|
/* Border — приглушённые на графите */
|
|
31
31
|
--rt-color-border-default: var(--rt-charcoal-border);
|
|
32
32
|
--rt-color-border-strong: var(--rt-charcoal-border-strong);
|
|
33
33
|
--rt-color-border-subtle: var(--rt-charcoal-border);
|
|
34
|
-
--rt-color-border-focus: var(--rt-
|
|
34
|
+
--rt-color-border-focus: var(--rt-brand-500);
|
|
35
35
|
|
|
36
36
|
/* Input border видим в dark (в light — transparent). */
|
|
37
37
|
--rt-input-color-border: var(--rt-charcoal-border);
|
|
@@ -49,22 +49,46 @@
|
|
|
49
49
|
--rt-nav-item-color-bg: var(--rt-charcoal-950);
|
|
50
50
|
--rt-nav-item-color-border: var(--rt-charcoal-950);
|
|
51
51
|
--rt-nav-item-color-bg-active: var(--rt-charcoal-800);
|
|
52
|
-
--rt-nav-item-color-caret: var(--rt-neutral-
|
|
52
|
+
--rt-nav-item-color-caret: var(--rt-neutral-600);
|
|
53
53
|
--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-
|
|
54
|
+
--rt-nav-panel-color-border: var(--rt-neutral-600);
|
|
55
|
+
--rt-nav-panel-item-color: var(--rt-neutral-200);
|
|
56
56
|
--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-
|
|
57
|
+
--rt-nav-panel-group-color: var(--rt-neutral-400);
|
|
58
|
+
--rt-nav-color-disabled: var(--rt-neutral-600);
|
|
59
59
|
|
|
60
|
-
/* Action —
|
|
61
|
-
|
|
60
|
+
/* Action — сам цвет марки один в обеих темах, а доля оттенка на графите вдвое
|
|
61
|
+
больше: слабый оттенок на тёмном фоне просто не виден. Считается от ступени
|
|
62
|
+
бренда, как и в светлой теме. */
|
|
63
|
+
--rt-color-action-primary-subtle: color-mix(in srgb, var(--rt-brand-500) 16%, transparent);
|
|
62
64
|
|
|
63
65
|
/* Focus-ring в dark — ярче для контрастности на тёмных фонах. */
|
|
64
|
-
--rt-color-action-primary-soft:
|
|
66
|
+
--rt-color-action-primary-soft: color-mix(in srgb, var(--rt-brand-500) 32%, transparent);
|
|
67
|
+
|
|
68
|
+
/* Вторичное действие нейтрально, и на графите вся его тройка разворачивается:
|
|
69
|
+
подложка садится на приподнятую поверхность, а наведение и нажатие идут вверх
|
|
70
|
+
по светлоте, а не вниз, — иначе они тонут в фоне страницы. */
|
|
65
71
|
--rt-color-action-secondary: var(--rt-charcoal-700);
|
|
72
|
+
--rt-color-action-secondary-hover: var(--rt-charcoal-border);
|
|
73
|
+
--rt-color-action-secondary-active: var(--rt-charcoal-border-strong);
|
|
66
74
|
--rt-color-action-on-secondary: var(--rt-neutral-50);
|
|
67
75
|
|
|
76
|
+
/* Пятый член роли идёт против всей её тройки: подложка садится на поверхность,
|
|
77
|
+
а цвет на поверхности обязан от неё оторваться. Ступень нейтрали, а не графита:
|
|
78
|
+
графит кончается границей, и любая его ступень на карточке даёт меньше двух к
|
|
79
|
+
одному. Светлая тема красит тем же именем, что и подложку, и разъехаться они
|
|
80
|
+
могут только здесь. */
|
|
81
|
+
--rt-color-action-secondary-on-surface: var(--rt-neutral-400);
|
|
82
|
+
|
|
83
|
+
/* Отключённое действие на графите — та же приподнятая поверхность; подпись
|
|
84
|
+
наследует ответ тёмной темы по ссылке на приглушённый текст. */
|
|
85
|
+
--rt-color-action-disabled: var(--rt-charcoal-700);
|
|
86
|
+
|
|
87
|
+
/* Оттенок наведения на графите вдвое насыщеннее: слабый след на тёмном фоне
|
|
88
|
+
не виден — та же причина, что и у оттенка марки выше. */
|
|
89
|
+
--rt-btn-tint-hover: 16%;
|
|
90
|
+
--rt-btn-tint-active: 32%;
|
|
91
|
+
|
|
68
92
|
/* Soft card-shadow в dark — насыщеннее для отделения от фона. */
|
|
69
93
|
--rt-shadow-card-soft: 0 0 40px rgb(0 0 0 / 25%);
|
|
70
94
|
|
|
@@ -79,24 +103,29 @@
|
|
|
79
103
|
--rt-toggle-color-thumb: var(--rt-neutral-50);
|
|
80
104
|
--rt-toggle-shadow-thumb: var(--rt-shadow-none);
|
|
81
105
|
|
|
82
|
-
/* State — surfaces под dark + ярче error-text
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
106
|
+
/* State — surfaces под dark + ярче error-text.
|
|
107
|
+
|
|
108
|
+
Подложка считается от ступени своего статуса, а не повторяет её код цвета
|
|
109
|
+
тройкой каналов: повторённое значение расходится с источником молча, и
|
|
110
|
+
правка ступени оставляла подложку прежней. */
|
|
111
|
+
--rt-color-state-success-bg: color-mix(in srgb, var(--rt-success-500) 12%, transparent);
|
|
112
|
+
--rt-color-state-warning-bg: color-mix(in srgb, var(--rt-warning-500) 12%, transparent);
|
|
113
|
+
--rt-color-state-danger-bg: color-mix(in srgb, var(--rt-danger-500) 12%, transparent);
|
|
86
114
|
--rt-color-state-error-text: var(--rt-danger-500);
|
|
87
|
-
--rt-color-state-
|
|
115
|
+
--rt-color-state-warning-text: var(--rt-warning-500);
|
|
116
|
+
--rt-color-state-info-bg: color-mix(in srgb, var(--rt-info-500) 12%, transparent);
|
|
88
117
|
|
|
89
118
|
/* Chat — на графите светлые фоны пузырей нечитаемы: входящее уходит в
|
|
90
119
|
полупрозрачный синий, своё — в глубокий графит. */
|
|
91
|
-
--rt-chat-bubble-in-bg:
|
|
92
|
-
--rt-chat-bubble-in-author: var(--rt-
|
|
120
|
+
--rt-chat-bubble-in-bg: color-mix(in srgb, var(--rt-brand-500) 12%, transparent);
|
|
121
|
+
--rt-chat-bubble-in-author: var(--rt-brand-300);
|
|
93
122
|
--rt-chat-bubble-own-bg: var(--rt-charcoal-950);
|
|
94
123
|
--rt-chat-bubble-own-author: var(--rt-overlay-white-40);
|
|
95
124
|
--rt-chat-bubble-date: var(--rt-overlay-white-40);
|
|
96
|
-
--rt-chat-status-read: var(--rt-
|
|
125
|
+
--rt-chat-status-read: var(--rt-brand-300);
|
|
97
126
|
|
|
98
127
|
/* Special — Auth surface (градиентный фон логина + прозрачная карточка). */
|
|
99
|
-
--rt-color-bg-page-auth: linear-gradient(156deg,
|
|
128
|
+
--rt-color-bg-page-auth: linear-gradient(156deg, var(--rt-neutral-950) 12.68%, var(--rt-navy-900) 99.28%);
|
|
100
129
|
--rt-color-bg-surface-auth-card: transparent;
|
|
101
130
|
}
|
|
102
131
|
|
|
@@ -110,14 +139,18 @@ html.rt-theme-dark {
|
|
|
110
139
|
Остальные экраны его не видят — rt-container кроет body непрозрачным фоном
|
|
111
140
|
страницы. Не shorthand `background:`, чтобы не сбросить body{}'ный
|
|
112
141
|
`background-color`. */
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
142
|
+
@layer rt-kit.base {
|
|
143
|
+
:root[data-theme='dark'] body,
|
|
144
|
+
html.rt-theme-dark body {
|
|
145
|
+
background-attachment: fixed;
|
|
146
|
+
background-image: linear-gradient(156deg, #122341 12.68%, #182142 99.28%);
|
|
147
|
+
}
|
|
117
148
|
}
|
|
118
149
|
|
|
119
150
|
/* rt-logo (чёрный SVG) — инверсия для читаемости на тёмном фоне */
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
151
|
+
@layer rt-kit.base {
|
|
152
|
+
:root[data-theme='dark'] .rt-logo,
|
|
153
|
+
html.rt-theme-dark .rt-logo {
|
|
154
|
+
filter: invert(1) brightness(1.5);
|
|
155
|
+
}
|
|
123
156
|
}
|