@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.
Files changed (103) hide show
  1. package/README.md +71 -0
  2. package/fesm2022/rt-tools-ui-kit-v2.mjs +166 -166
  3. package/fesm2022/rt-tools-ui-kit-v2.mjs.map +1 -1
  4. package/package.json +1 -1
  5. package/rt-tools-ui-kit-v2-0.6.0.tgz +0 -0
  6. package/src/lib/components/aside/_rt-aside-overlay.scss +73 -71
  7. package/src/lib/components/aside/footer/rt-aside-footer.component.scss +20 -16
  8. package/src/lib/components/aside/header/rt-aside-header.component.scss +72 -70
  9. package/src/lib/components/aside/rt-aside.component.scss +107 -105
  10. package/src/lib/components/aside/unsaved-dialog/rt-aside-unsaved-dialog.component.scss +33 -31
  11. package/src/lib/components/aside-section/rt-aside-section.component.scss +27 -23
  12. package/src/lib/components/autocomplete/rt-autocomplete.component.scss +124 -118
  13. package/src/lib/components/bar-list/rt-bar-list.component.scss +85 -81
  14. package/src/lib/components/bottom-sheet/rt-bottom-sheet.component.scss +64 -57
  15. package/src/lib/components/button/rt-button.directive.scss +319 -280
  16. package/src/lib/components/calendar/rt-calendar.component.scss +106 -102
  17. package/src/lib/components/card/rt-card.component.scss +53 -45
  18. package/src/lib/components/chat/rt-chat.component.scss +312 -306
  19. package/src/lib/components/checkbox/rt-checkbox.component.scss +61 -54
  20. package/src/lib/components/collapsible-text/rt-collapsible-text.component.scss +36 -34
  21. package/src/lib/components/confirm-popover/rt-confirm-popover.component.scss +36 -30
  22. package/src/lib/components/container/rt-container.component.scss +91 -87
  23. package/src/lib/components/counter/rt-counter.component.scss +14 -12
  24. package/src/lib/components/counter-row/rt-counter-row.component.scss +31 -27
  25. package/src/lib/components/date-picker/rt-date-picker.component.scss +73 -71
  26. package/src/lib/components/delta-view/rt-delta-view.component.scss +27 -25
  27. package/src/lib/components/detail-list/rt-detail-list.component.scss +8 -6
  28. package/src/lib/components/detail-list/rt-detail-row.component.scss +18 -16
  29. package/src/lib/components/dialog/footer/rt-dialog-footer.component.scss +19 -17
  30. package/src/lib/components/dialog/header/rt-dialog-header.component.scss +27 -25
  31. package/src/lib/components/dialog/rt-dialog.component.scss +59 -56
  32. package/src/lib/components/download-link/rt-download-link.component.scss +32 -27
  33. package/src/lib/components/empty-state/rt-empty-state.component.scss +50 -46
  34. package/src/lib/components/field/rt-field.component.scss +63 -61
  35. package/src/lib/components/file-card/rt-file-card.component.scss +84 -78
  36. package/src/lib/components/file-drop/rt-file-drop.component.scss +83 -77
  37. package/src/lib/components/file-input/rt-file-input.component.scss +20 -18
  38. package/src/lib/components/file-list/rt-file-list.component.scss +9 -7
  39. package/src/lib/components/filter-control/rt-filter-control.component.scss +16 -14
  40. package/src/lib/components/header/rt-header.component.scss +61 -55
  41. package/src/lib/components/icon/rt-icon.component.scss +14 -12
  42. package/src/lib/components/icon-button/CONTEXT.md +4 -2
  43. package/src/lib/components/icon-button/rt-icon-button.component.scss +128 -112
  44. package/src/lib/components/info-item/rt-info-item.component.scss +38 -36
  45. package/src/lib/components/input/rt-input.component.scss +102 -98
  46. package/src/lib/components/input-number/rt-input-number.component.scss +84 -82
  47. package/src/lib/components/live-badge/rt-live-badge.component.scss +27 -23
  48. package/src/lib/components/logo/rt-logo.component.scss +54 -52
  49. package/src/lib/components/menu/rt-menu-confirm-dialog.component.scss +30 -28
  50. package/src/lib/components/menu/rt-menu-item.component.scss +47 -42
  51. package/src/lib/components/menu/rt-menu.component.scss +23 -15
  52. package/src/lib/components/message/rt-message.component.scss +53 -49
  53. package/src/lib/components/message-composer/rt-message-composer.component.scss +55 -49
  54. package/src/lib/components/money-list/rt-money-list.component.scss +13 -9
  55. package/src/lib/components/money-list/rt-money-row.component.scss +23 -19
  56. package/src/lib/components/multiselect/rt-multiselect.component.scss +169 -161
  57. package/src/lib/components/night-grid/rt-night-grid.component.scss +47 -42
  58. package/src/lib/components/note/rt-note.component.scss +15 -11
  59. package/src/lib/components/notifications-bell/rt-notifications-bell.component.scss +34 -27
  60. package/src/lib/components/page-header/rt-page-header-mobile.scss +142 -134
  61. package/src/lib/components/page-header/rt-page-header-submenu.scss +130 -123
  62. package/src/lib/components/page-header/rt-page-header.component.scss +221 -210
  63. package/src/lib/components/pagination/rt-pagination.component.scss +88 -81
  64. package/src/lib/components/photo-viewer/rt-photo-viewer.component.scss +109 -105
  65. package/src/lib/components/rich-editor/rt-rich-editor.component.scss +63 -59
  66. package/src/lib/components/section-nav/rt-section-nav.component.scss +53 -47
  67. package/src/lib/components/select/rt-select.component.scss +146 -138
  68. package/src/lib/components/skeleton/rt-skeleton.component.scss +50 -41
  69. package/src/lib/components/skeleton-wrapper/rt-skeleton-wrapper.component.scss +8 -6
  70. package/src/lib/components/spinner/rt-spinner.component.scss +35 -32
  71. package/src/lib/components/split-button/rt-split-button.component.scss +74 -62
  72. package/src/lib/components/stat-tile/rt-stat-tile.component.scss +95 -91
  73. package/src/lib/components/stepper/rt-stepper.component.scss +107 -101
  74. package/src/lib/components/table/copy-cell/rt-copy-cell.component.scss +34 -30
  75. package/src/lib/components/table/rt-table.component.scss +260 -252
  76. package/src/lib/components/table/settings-aside/rt-table-settings-aside.component.scss +7 -5
  77. package/src/lib/components/table/settings-panel/rt-table-settings-panel.component.scss +71 -61
  78. package/src/lib/components/table/sort-header/rt-table-sort-header.component.scss +31 -29
  79. package/src/lib/components/tabs/rt-tabs.component.scss +184 -175
  80. package/src/lib/components/tag/rt-tag.component.scss +97 -92
  81. package/src/lib/components/textarea/rt-textarea.component.scss +62 -60
  82. package/src/lib/components/theme-toggle/rt-theme-toggle.component.scss +7 -5
  83. package/src/lib/components/thread-list/rt-thread-list.component.scss +221 -212
  84. package/src/lib/components/timeline/rt-timeline.component.scss +82 -76
  85. package/src/lib/components/toast/rt-toast.component.scss +169 -160
  86. package/src/lib/components/toast/rt-toaster.component.scss +37 -35
  87. package/src/lib/components/toggle-button-group/rt-toggle-button-group.component.scss +129 -122
  88. package/src/lib/components/toggle-switch/rt-toggle-switch.component.scss +97 -91
  89. package/src/lib/components/toolbar/rt-toolbar.component.scss +56 -54
  90. package/src/lib/components/tooltip/rt-tooltip.component.scss +20 -15
  91. package/src/lib/components/welcome-dialog/rt-welcome-dialog.component.scss +46 -44
  92. package/src/lib/components/workspace/rt-workspace.component.scss +139 -131
  93. package/src/lib/components/workspace-details/rt-workspace-details.component.scss +105 -101
  94. package/src/styles/_index.scss +4 -0
  95. package/src/styles/_layers.scss +22 -0
  96. package/src/styles/_login.scss +87 -85
  97. package/src/styles/_mixins.scss +1 -1
  98. package/src/styles/_primitives.scss +126 -67
  99. package/src/styles/_scrollbar.scss +21 -19
  100. package/src/styles/_semantic.scss +140 -56
  101. package/src/styles/_theme-dark.scss +60 -27
  102. package/styles/tokens.css +628 -408
  103. package/rt-tools-ui-kit-v2-0.5.0.tgz +0 -0
@@ -0,0 +1,22 @@
1
+ /* Порядок подслоёв кита. Объявляется раньше всего остального: слой, не названный здесь,
2
+ встаёт в каскад по первому появлению, а появляются подслои в порядке загрузки — стили
3
+ компонента Angular инжектит отдельным блоком, и он способен прийти раньше основы. Названные
4
+ заранее, оба подслоя держат порядок независимо от того, что загрузилось первым.
5
+
6
+ Правило приложения, объявленное вне слоя, выигрывает у любого правила отсюда независимо от
7
+ специфичности: неслоевое правило сильнее слоевого. Ради этого слой и заводится — перебивать
8
+ кит счётом специфичности потребителю больше не нужно.
9
+
10
+ Объявления свойств на корне страницы (`:root { --rt-* }`) в слой не уходят: их потребитель
11
+ перебивает порядком, объявляя свою линейку бренда после `tokens.css`.
12
+
13
+ Нижний подслой — `vendor`, и он для чужого CSS, который чинит кит: тема редактора текста,
14
+ готовые стили перекрытия. Слой опускает правила кита ниже всего, что объявлено вне слоя, —
15
+ не только ниже приложения, но и ниже такой библиотеки, и панель редактора перестраивалась
16
+ молча. Подключается чужой файл импортом с именем подслоя:
17
+
18
+ @import 'quill/dist/quill.snow.css' layer(rt-kit.vendor);
19
+
20
+ Кит его за потребителя не подключает: редактор текста опционален, и тянуть его тему в
21
+ пакет значило бы отдать её всем. */
22
+ @layer rt-kit.vendor, rt-kit.base, rt-kit.components;
@@ -1,97 +1,99 @@
1
- .login__viewport {
2
- display: flex;
3
- min-height: 100dvh;
4
- box-sizing: border-box;
5
- align-items: center;
6
- justify-content: center;
7
- padding: 0 var(--rt-space-5);
8
- background-color: var(--rt-color-bg-surface-auth-card);
9
- }
1
+ @layer rt-kit.base {
2
+ .login__viewport {
3
+ display: flex;
4
+ min-height: 100dvh;
5
+ box-sizing: border-box;
6
+ align-items: center;
7
+ justify-content: center;
8
+ padding: 0 var(--rt-space-5);
9
+ background-color: var(--rt-color-bg-surface-auth-card);
10
+ }
10
11
 
11
- .login__chrome {
12
- position: fixed;
13
- z-index: 10;
14
- top: 20px;
15
- right: 20px;
16
- display: flex;
17
- align-items: center;
18
- gap: var(--rt-space-2);
19
- }
12
+ .login__chrome {
13
+ position: fixed;
14
+ z-index: 10;
15
+ top: 20px;
16
+ right: 20px;
17
+ display: flex;
18
+ align-items: center;
19
+ gap: var(--rt-space-2);
20
+ }
20
21
 
21
- .login__card {
22
- position: relative;
23
- display: flex;
24
- width: 100%;
25
- max-width: 400px;
26
- box-sizing: border-box;
27
- flex-direction: column;
28
- align-items: stretch;
29
- padding: var(--rt-space-16) var(--rt-space-5);
30
- border-radius: var(--rt-radius-md);
31
- background-color: var(--rt-color-bg-surface-auth-card);
32
- gap: var(--rt-space-10);
33
- }
22
+ .login__card {
23
+ position: relative;
24
+ display: flex;
25
+ width: 100%;
26
+ max-width: 400px;
27
+ box-sizing: border-box;
28
+ flex-direction: column;
29
+ align-items: stretch;
30
+ padding: var(--rt-space-16) var(--rt-space-5);
31
+ border-radius: var(--rt-radius-md);
32
+ background-color: var(--rt-color-bg-surface-auth-card);
33
+ gap: var(--rt-space-10);
34
+ }
34
35
 
35
- .login__logo {
36
- align-self: center;
37
- }
36
+ .login__logo {
37
+ align-self: center;
38
+ }
38
39
 
39
- .login__title {
40
- margin: 0;
41
- color: var(--rt-color-text-primary);
42
- font-size: var(--rt-text-2xl);
43
- font-weight: var(--rt-font-weight-bold);
44
- text-align: center;
45
- }
40
+ .login__title {
41
+ margin: 0;
42
+ color: var(--rt-color-text-primary);
43
+ font-size: var(--rt-text-2xl);
44
+ font-weight: var(--rt-font-weight-bold);
45
+ text-align: center;
46
+ }
46
47
 
47
- .login__form {
48
- display: flex;
49
- flex-direction: column;
50
- gap: var(--rt-space-5);
51
- }
48
+ .login__form {
49
+ display: flex;
50
+ flex-direction: column;
51
+ gap: var(--rt-space-5);
52
+ }
52
53
 
53
- .login__error {
54
- padding: var(--rt-space-sm) var(--rt-space-3);
55
- border-radius: var(--rt-radius-md);
56
- margin: 0;
57
- background-color: var(--rt-color-state-danger-bg);
58
- color: var(--rt-color-state-error-text);
59
- font-size: var(--rt-text-sm);
60
- }
54
+ .login__error {
55
+ padding: var(--rt-space-sm) var(--rt-space-4);
56
+ border-radius: var(--rt-radius-md);
57
+ margin: 0;
58
+ background-color: var(--rt-color-state-danger-bg);
59
+ color: var(--rt-color-state-error-text);
60
+ font-size: var(--rt-text-sm);
61
+ }
61
62
 
62
- .login__submit {
63
- width: 100%;
64
- height: 40px;
65
- }
63
+ .login__submit {
64
+ width: 100%;
65
+ height: 40px;
66
+ }
66
67
 
67
- .login__links {
68
- display: flex;
69
- flex-wrap: wrap;
70
- justify-content: center;
71
- padding-top: var(--rt-space-5);
72
- border-top: var(--rt-border-width-thin) solid var(--rt-color-border-default);
73
- gap: var(--rt-space-5);
74
- }
68
+ .login__links {
69
+ display: flex;
70
+ flex-wrap: wrap;
71
+ justify-content: center;
72
+ padding-top: var(--rt-space-5);
73
+ border-top: var(--rt-border-width-thin) solid var(--rt-color-border-default);
74
+ gap: var(--rt-space-5);
75
+ }
75
76
 
76
- .login__link {
77
- padding: 0;
78
- border: none;
79
- background: transparent;
80
- color: var(--rt-color-text-muted);
81
- cursor: pointer;
82
- font-size: var(--rt-text-xs);
83
- font-weight: var(--rt-font-weight-medium);
84
- letter-spacing: var(--rt-letter-spacing-wide);
85
- text-decoration: underline;
86
- text-decoration-thickness: 1px;
87
- }
77
+ .login__link {
78
+ padding: 0;
79
+ border: none;
80
+ background: transparent;
81
+ color: var(--rt-color-text-muted);
82
+ cursor: pointer;
83
+ font-size: var(--rt-text-xs);
84
+ font-weight: var(--rt-font-weight-medium);
85
+ letter-spacing: var(--rt-letter-spacing-wide);
86
+ text-decoration: underline;
87
+ text-decoration-thickness: 1px;
88
+ }
88
89
 
89
- .login__link:hover {
90
- color: var(--rt-color-action-primary);
91
- }
90
+ .login__link:hover {
91
+ color: var(--rt-color-action-primary);
92
+ }
92
93
 
93
- .login__link:focus-visible {
94
- border-radius: var(--rt-radius-xs);
95
- outline: 2px solid var(--rt-color-action-primary);
96
- outline-offset: 2px;
94
+ .login__link:focus-visible {
95
+ border-radius: var(--rt-radius-xs);
96
+ outline: 2px solid var(--rt-color-action-primary);
97
+ outline-offset: 2px;
98
+ }
97
99
  }
@@ -6,7 +6,7 @@
6
6
  }
7
7
 
8
8
  @mixin surface-card-dark {
9
- background: var(--rt-blue-900);
9
+ background: var(--rt-color-bg-nav);
10
10
  box-shadow: var(--rt-shadow-card-soft);
11
11
  }
12
12
 
@@ -1,42 +1,55 @@
1
1
  /* Primitive design tokens — single source of truth для шкал. */
2
2
 
3
3
  :root {
4
- /* Neutral scale — серо-сине-стальная. */
4
+ /* Neutral scale — серо-сине-стальная.
5
+
6
+ Ряд посчитан в OKLCH: тон 264.4° и цветность 0.0234 взяты у прежней ступени 600,
7
+ светлота идёт ровным шагом 0.0785 от 0.985 к 0.20. Ноль остаётся чистым белым —
8
+ это бумага, а не ступень ряда. В самом светлом конце цветность ужата охватом
9
+ sRGB: синеватого такой светлоты не существует.
10
+
11
+ До пересчёта ряд шкалой не был. Он держал два семейства сразу — чисто серое
12
+ (0, 50, 200, 500, 900) и синеватое (100, 300, 400, 600, 700, 800, 950), —
13
+ шаг светлоты гулял от 0.009 до 0.173, а ступень 900 была темнее ступени 950,
14
+ то есть ряд шёл назад. Ещё девять ступеней стояли между этими: заведённые под
15
+ одно место, они выглядели шкалой, но выбрать из такого ряда было нельзя. */
5
16
  --rt-neutral-0: #fff;
6
- --rt-neutral-50: #fafafa;
7
- --rt-neutral-100: #f6f7f9;
8
- --rt-neutral-150: #eef0f4;
9
- --rt-neutral-200: #e6e6e6;
10
- --rt-neutral-250: #d2d2d2;
11
- --rt-neutral-280: #bebebe;
12
- --rt-neutral-300: #cad5e2;
13
- --rt-neutral-350: #b1b1b1;
14
- --rt-neutral-400: #90a1b9;
15
- --rt-neutral-420: #9e9e9e;
16
- --rt-neutral-450: #909090;
17
- --rt-neutral-520: #707070;
18
- --rt-neutral-500: #7e7e7e;
19
-
20
- /* Самый светлый серый, проходящий порог AA (4.5:1) на белом — 4.54:1.
21
- Ниже него подпись на светлой поверхности порог не берёт. */
22
- --rt-neutral-510: #767676;
23
- --rt-neutral-550: #666;
24
- --rt-neutral-600: #6b7280;
25
- --rt-neutral-700: #3b4557;
26
- --rt-neutral-800: #364152;
27
- --rt-neutral-900: #1f1f1f;
28
- --rt-neutral-950: #122341;
29
-
30
- /* Blue — brand accent */
31
- --rt-blue-50: #eff6ff;
32
- --rt-blue-100: #dbeafe;
33
- --rt-blue-150: #ddebf6;
34
- --rt-blue-300: #93c5fd;
35
- --rt-blue-400: #5496ff; /* отметка прочтения в чате */
36
- --rt-blue-500: #155dfc; /* brand */
37
- --rt-blue-600: #0e4ad6;
38
- --rt-blue-700: #0c3fb0;
39
- --rt-blue-900: #182142;
17
+ --rt-neutral-50: #f8faff;
18
+ --rt-neutral-100: #d8e0f0;
19
+ --rt-neutral-200: #bfc7d6;
20
+ --rt-neutral-300: #a6aebd;
21
+ --rt-neutral-400: #8e96a4;
22
+ --rt-neutral-500: #777e8c;
23
+ --rt-neutral-600: #606775;
24
+ --rt-neutral-700: #4b515f;
25
+ --rt-neutral-800: #363c49;
26
+ --rt-neutral-900: #232934;
27
+ --rt-neutral-950: #111621;
28
+
29
+ /* Бренд — линейка цвета марки. Потребитель перекрашивает кит объявлением этих
30
+ одиннадцати ступеней после tokens.css: назначения, прозрачные оттенки и кольцо
31
+ фокуса берут цвет отсюда сами, в обеих темах.
32
+
33
+ Ряд посчитан в OKLCH: тон 262.87° и цветность взяты у ступени 500, светлота идёт
34
+ ровными шагами от 0.97 к 0.20. Ступень 500 — сам цвет марки, поэтому светлый конец
35
+ ряда темнее, чем у палитр, где 500 стоит серединой светлоты. У 600 и 700 цветность
36
+ ужата: с полной они не влезают в охват sRGB. */
37
+ --rt-brand-50: #f0f5ff;
38
+ --rt-brand-100: #cddaf1;
39
+ --rt-brand-200: #a8bfea;
40
+ --rt-brand-300: #7ea3e9;
41
+ --rt-brand-400: #4e84f2; /* отметка прочтения в чате */
42
+ --rt-brand-500: #155dfc; /* цвет марки */
43
+ --rt-brand-600: #0047df;
44
+ --rt-brand-700: #0038b5;
45
+ --rt-brand-800: #012a8a;
46
+ --rt-brand-900: #021d62;
47
+ --rt-brand-950: #02113c;
48
+
49
+ /* Navy — тёмная синева обвязки и рельсы прогресса. Цветом марки она не красится:
50
+ перекрасивший бренд не ждёт, что вместе с кнопкой сменится подложка шапки. */
51
+ --rt-navy-600: #435775; /* трек прогресса, тёмная тема */
52
+ --rt-navy-900: #182142; /* подложка шапки и боковой навигации */
40
53
 
41
54
  /* Charcoal — тёплый графит для тёмной темы. */
42
55
  --rt-charcoal-950: #17181c; /* глубокий фон / приподнятая alt-поверхность, subtle */
@@ -48,48 +61,52 @@
48
61
 
49
62
  /* Stepper rail — приглушённые оттенки трека/прогресса прогресс-полосы. */
50
63
  --rt-gray-350: #b3b3b3; /* трек, light */
51
- --rt-navy-600: #435775; /* трек, dark */
52
64
  --rt-slate-300: #a9b8cd; /* пройденный прогресс, dark */
53
65
 
54
- /* Status — success/warning/danger/info */
66
+ /* Status — success/warning/danger/info.
67
+
68
+ Ступени 600 и 700 считаны от своей 500 ровным шагом светлоты линейки бренда
69
+ (ΔL = 0.0687 в OKLCH): тон и цветность берутся у 500, светлота убывает шагом.
70
+ До этого ряды были собраны вручную и шли неровно — у успеха 700 была светлее
71
+ 600, а у опасности 600 отличалась от 500 неразличимо на глаз. Наведение и
72
+ нажатие действия берут именно эти ступени, и такая пара их сливала. */
55
73
  --rt-success-50: #ecfdf5;
56
74
  --rt-success-100: #eafaf5;
57
75
  --rt-success-500: #059669;
58
- --rt-success-600: #047857;
59
- --rt-success-700: #088e63;
76
+ --rt-success-600: #017f58;
77
+ --rt-success-700: #006848;
60
78
  --rt-warning-50: #fffbeb;
61
79
  --rt-warning-500: #d97706;
62
- --rt-warning-600: #b45309;
80
+ --rt-warning-600: #bc6600;
81
+ --rt-warning-700: #9f5500;
63
82
  --rt-yellow-400: #f4d85a;
64
83
  --rt-amber-400: #f49f5a;
65
84
  --rt-danger-50: #fef2f2;
66
85
  --rt-danger-500: #dc2626;
67
- --rt-danger-600: #d32f2f;
68
- --rt-danger-700: #b91c1c;
69
- --rt-info-50: #eff6ff;
70
- --rt-info-500: #2563eb;
71
- --rt-info-600: #1d4ed8;
86
+ --rt-danger-600: #c00111;
87
+ --rt-danger-700: #9e000c;
72
88
 
73
- /* Spacing — 8px base (off-grid half-steps помечены @deprecated). */
89
+ /* Info разведён с маркой намеренно. До этого две палитры стояли на одном тоне —
90
+ 262.9° у обеих, — различаясь только цветностью, а ступень 700 совпадала с
91
+ брендовой буквально. Уведомление «к сведению» — статус наравне с успехом и
92
+ опасностью, а не акцент марки: у потребителя с зелёной маркой оно иначе стало
93
+ бы неотличимо от успешного. Тон уведён к 250°: дальше охват sRGB режет
94
+ цветность вдвое, и синий уходит в бирюзу. */
95
+ --rt-info-50: #eef6ff;
96
+ --rt-info-500: #0173c6;
97
+ --rt-info-600: #005fa5;
98
+ --rt-info-700: #004c85;
99
+
100
+ /* Spacing — ряд с шагом 4px. Промежуточных ступеней в нём нет: 6, 10, 12 и 28
101
+ пикселей стояли ступенями под конкретные места, и выбрать из такого ряда было
102
+ нельзя. Употребления округлены к ближайшей ступени, при равенстве — вверх. */
74
103
  --rt-space-0: 0;
75
104
  --rt-space-0-5: 2px;
76
105
  --rt-space-1: 4px;
77
-
78
- /* @deprecated off-grid — округлять к --rt-space-2 (8) или --rt-space-1 (4). */
79
- --rt-space-1-5: 6px;
80
106
  --rt-space-2: 8px;
81
-
82
- /* @deprecated off-grid — округлять к --rt-space-2 (8) или --rt-space-md (16). */
83
- --rt-space-2-5: 10px;
84
-
85
- /* @deprecated off-grid — округлять к --rt-space-md (16). */
86
- --rt-space-3: 12px;
87
107
  --rt-space-4: 16px;
88
108
  --rt-space-5: 20px;
89
109
  --rt-space-6: 24px;
90
-
91
- /* @deprecated off-grid — заведён под промежуток между группами панели навигации. */
92
- --rt-space-7: 28px;
93
110
  --rt-space-8: 32px;
94
111
  --rt-space-10: 40px;
95
112
  --rt-space-12: 48px;
@@ -164,11 +181,44 @@
164
181
  панели навигации размазывают её край вместо того, чтобы его очертить. */
165
182
  --rt-shadow-profile-menu: 0 16px 32px rgb(0 0 0 / 15%);
166
183
 
167
- /* Form-control size primitives — raw-шкала высот/min-height для полей.
168
- Semantic-слой (--rt-input-*) ссылается на эти значения. */
169
- --rt-control-height-sm: 36px;
170
- --rt-control-height-md: 45px;
171
- --rt-control-height-lg: 52px;
184
+ /* Тень окна — тот же силуэт, что у shadow-card-soft, но вдвое плотнее: окно
185
+ лежит поверх затемнённой страницы, и слабый ореол на ней не читается. */
186
+ --rt-shadow-dialog: 0 0 40px rgb(0 0 0 / 25%);
187
+
188
+ /* Size — шкала габаритов: ширина, высота и сторона квадратного узла там, где их
189
+ задаёт не содержимое. Множитель тот же, что у отступов: ступень N равна N × 4px,
190
+ и ряд идёт без промежуточных ступеней — габарит, не легший на ряд, округляется к
191
+ соседней, а не заводит себе ступень по месту. */
192
+ --rt-size-1: 4px;
193
+ --rt-size-2: 8px;
194
+ --rt-size-3: 12px;
195
+ --rt-size-4: 16px;
196
+ --rt-size-5: 20px;
197
+ --rt-size-6: 24px;
198
+ --rt-size-8: 32px;
199
+ --rt-size-10: 40px;
200
+ --rt-size-12: 48px;
201
+ --rt-size-16: 64px;
202
+ --rt-size-20: 80px;
203
+ --rt-size-24: 96px;
204
+ --rt-size-30: 120px;
205
+ --rt-size-40: 160px;
206
+ --rt-size-60: 240px;
207
+ --rt-size-64: 256px;
208
+ --rt-size-100: 400px;
209
+
210
+ /* Control height — одна шкала высот на все интерактивные контролы: кнопку,
211
+ иконочную кнопку и семейство полей. Ряд идёт шагом 8px и ложится на сетку
212
+ отступов; ступень md остаётся сорока, потому что это самый ходовой размер
213
+ кнопки.
214
+
215
+ До свода рядов было три, и в одной строке они не совпадали: кнопка шла
216
+ 30/40/50/60/70, поле 36/45/52, иконочная кнопка 28/36/44/52/60. */
217
+ --rt-control-height-sm: 32px;
218
+ --rt-control-height-md: 40px;
219
+ --rt-control-height-lg: 48px;
220
+ --rt-control-height-xl: 56px;
221
+ --rt-control-height-2xl: 64px;
172
222
  --rt-control-textarea-min-height-sm: 80px;
173
223
  --rt-control-textarea-min-height-md: 120px;
174
224
  --rt-control-textarea-min-height-lg: 160px;
@@ -198,10 +248,19 @@
198
248
  --rt-overlay-white-25: rgb(250 250 250 / 25%); /* disabled-текст на графите */
199
249
  --rt-overlay-white-40: rgb(250 250 250 / 40%); /* muted-текст на графите */
200
250
  --rt-overlay-black-50: rgb(0 0 0 / 50%);
201
- --rt-overlay-blue-8: rgb(21 93 252 / 8%);
202
- --rt-overlay-blue-24: rgb(21 93 252 / 24%);
203
- --rt-overlay-danger-16: rgb(220 38 38 / 16%);
204
- --rt-overlay-amber-16: rgb(244 159 90 / 16%);
251
+
252
+ /* Оттенки марки считаются от её ступени, а не повторяют код цвета: повторённое
253
+ значение расходится с источником молча, и перекрасивший бренд получал бы прежний
254
+ синий в подложке действия и в кольце фокуса. */
255
+ --rt-overlay-brand-8: color-mix(in srgb, var(--rt-brand-500) 8%, transparent);
256
+ --rt-overlay-brand-24: color-mix(in srgb, var(--rt-brand-500) 24%, transparent);
257
+ --rt-overlay-danger-16: color-mix(in srgb, var(--rt-danger-500) 16%, transparent);
258
+ --rt-overlay-amber-16: color-mix(in srgb, var(--rt-amber-400) 16%, transparent);
259
+
260
+ /* Подложка окна — синеватая, а не чёрная: окно стоит на странице обвязки, и
261
+ чёрное затемнение под ним холоднее её синевы. Считается от ступени обвязки
262
+ по той же причине, что и оттенки марки. */
263
+ --rt-overlay-navy-70: color-mix(in srgb, var(--rt-navy-900) 70%, transparent);
205
264
 
206
265
  /* Z-index */
207
266
  --rt-z-base: 0;
@@ -1,24 +1,26 @@
1
- ::-webkit-scrollbar {
2
- width: 12px;
3
- }
1
+ @layer rt-kit.base {
2
+ ::-webkit-scrollbar {
3
+ width: 12px;
4
+ }
4
5
 
5
- ::-webkit-scrollbar:horizontal {
6
- height: 12px;
7
- }
6
+ ::-webkit-scrollbar:horizontal {
7
+ height: 12px;
8
+ }
8
9
 
9
- ::-webkit-scrollbar-thumb {
10
- border: var(--rt-border-width-thick) solid transparent;
11
- border-radius: var(--rt-radius-md);
12
- background: var(--rt-color-border-default);
13
- background-clip: content-box;
14
- }
10
+ ::-webkit-scrollbar-thumb {
11
+ border: var(--rt-border-width-thick) solid transparent;
12
+ border-radius: var(--rt-radius-md);
13
+ background: var(--rt-color-border-default);
14
+ background-clip: content-box;
15
+ }
15
16
 
16
- ::-webkit-scrollbar-thumb:hover {
17
- border: var(--rt-border-width-medium) solid transparent;
18
- background: var(--rt-color-border-strong);
19
- background-clip: content-box;
20
- }
17
+ ::-webkit-scrollbar-thumb:hover {
18
+ border: var(--rt-border-width-medium) solid transparent;
19
+ background: var(--rt-color-border-strong);
20
+ background-clip: content-box;
21
+ }
21
22
 
22
- ::-webkit-scrollbar-track:hover {
23
- border: var(--rt-border-width-thin) solid var(--rt-color-bg-subtle);
23
+ ::-webkit-scrollbar-track:hover {
24
+ border: var(--rt-border-width-thin) solid var(--rt-color-bg-subtle);
25
+ }
24
26
  }