@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
@@ -1,143 +1,150 @@
1
- /* rt-toggle-button-group — segmented control. ViewEncapsulation.None.
2
- Хост адресуется по имени элемента, а не по классу блока: класс
3
- `.rt-toggle-button-group` висит и на `<rt-toggle-button-group>`, и на корне
4
- шаблона, поэтому правила блока вложены в хост — так они достаются только
5
- корню шаблона.
6
- Размеры — три тира sm/md/lg, общая высота совпадает с rt-button
7
- (sm 30 / md 40 / lg 50px).
8
- Цвета — только семантические --rt-* токены. */
9
-
10
- rt-toggle-button-group {
11
- display: inline-flex;
12
-
13
- /* Локальные overridable custom properties — позволяют потребителю
14
- подстроить trackовый bg без перекраски всей темы (см. dark override ниже). */
15
- // --rt-toggle-button-group-track-bg: var(--rt-color-bg-surface-subtle-2);
16
- --rt-toggle-button-group-track-bg: #eef0f4;
17
- --rt-toggle-button-group-active-bg: var(--rt-color-bg-surface);
18
-
19
- .rt-toggle-button-group {
20
- /* Default size = sm. md/lg переопределяют ниже. */
21
- --rt-toggle-button-group-height: 30px;
22
- --rt-toggle-button-group-track-padding: 4px;
23
- --rt-toggle-button-group-track-radius: 8px;
24
- --rt-toggle-button-group-btn-padding: 0 8px;
25
- --rt-toggle-button-group-btn-radius: 8px;
26
- --rt-toggle-button-group-btn-gap: 4px;
27
- --rt-toggle-button-group-btn-font-size: 12px;
28
- --rt-toggle-button-group-btn-line-height: 14px;
29
-
1
+ @layer rt-kit.components {
2
+ /* rt-toggle-button-group — segmented control. ViewEncapsulation.None.
3
+ Хост адресуется по имени элемента, а не по классу блока: класс
4
+ `.rt-toggle-button-group` висит и на `<rt-toggle-button-group>`, и на корне
5
+ шаблона, поэтому правила блока вложены в хост — так они достаются только
6
+ корню шаблона.
7
+ Размеры — три тира sm/md/lg, общая высота совпадает с rt-button
8
+ (sm 30 / md 40 / lg 50px).
9
+ Цвета — только семантические --rt-* токены. */
10
+
11
+ rt-toggle-button-group {
30
12
  display: inline-flex;
31
- height: var(--rt-toggle-button-group-height);
32
- box-sizing: border-box;
33
- align-items: stretch;
34
- padding: var(--rt-toggle-button-group-track-padding);
35
- border-radius: var(--rt-toggle-button-group-track-radius);
36
- background-color: var(--rt-toggle-button-group-track-bg);
37
- gap: 0;
38
-
39
- &__button {
13
+
14
+ /* Локальные overridable custom properties — позволяют потребителю
15
+ подстроить trackовый bg без перекраски всей темы (см. dark override ниже).
16
+
17
+ Дорожка берёт приглушённую поверхность, а не ближайшую по светлоте ступень:
18
+ прежний код цвета стоял почти на уровне белого, а отличаться дорожка обязана
19
+ именно от активного сегмента, который белым и покрашен. */
20
+ --rt-toggle-button-group-track-bg: var(--rt-color-bg-surface-subtle);
21
+ --rt-toggle-button-group-active-bg: var(--rt-color-bg-surface);
22
+
23
+ .rt-toggle-button-group {
24
+ /* Default size = sm. md/lg переопределяют ниже. */
25
+ --rt-toggle-button-group-height: 30px;
26
+ --rt-toggle-button-group-transition-duration: var(--rt-duration-fast);
27
+ --rt-toggle-button-group-focus-shadow: var(--rt-shadow-focus-ring);
28
+ --rt-toggle-button-group-track-padding: 4px;
29
+ --rt-toggle-button-group-track-radius: 8px;
30
+ --rt-toggle-button-group-btn-padding: 0 8px;
31
+ --rt-toggle-button-group-btn-radius: 8px;
32
+ --rt-toggle-button-group-btn-gap: 4px;
33
+ --rt-toggle-button-group-btn-font-size: 12px;
34
+ --rt-toggle-button-group-btn-line-height: 14px;
35
+
40
36
  display: inline-flex;
41
- align-items: center;
42
- justify-content: center;
43
- padding: var(--rt-toggle-button-group-btn-padding);
44
- border: 0;
45
- border-radius: var(--rt-toggle-button-group-btn-radius);
46
- background-color: transparent;
47
- color: var(--rt-color-text-muted);
48
- cursor: pointer;
49
-
50
- /* Нативный <button>: без явного наследования берёт UA-шрифт (Arial),
51
- а не Montserrat от body. */
52
- font-family: inherit;
53
- font-size: var(--rt-toggle-button-group-btn-font-size);
54
- font-weight: var(--rt-font-weight-semibold);
55
- gap: var(--rt-toggle-button-group-btn-gap);
56
- line-height: var(--rt-toggle-button-group-btn-line-height);
57
- transition:
58
- background-color var(--rt-duration-fast) ease,
59
- color var(--rt-duration-fast) ease;
60
-
61
- &:hover:not(:disabled, &--active) {
62
- color: var(--rt-color-text-primary);
37
+ height: var(--rt-toggle-button-group-height);
38
+ box-sizing: border-box;
39
+ align-items: stretch;
40
+ padding: var(--rt-toggle-button-group-track-padding);
41
+ border-radius: var(--rt-toggle-button-group-track-radius);
42
+ background-color: var(--rt-toggle-button-group-track-bg);
43
+ gap: 0;
44
+
45
+ &__button {
46
+ display: inline-flex;
47
+ align-items: center;
48
+ justify-content: center;
49
+ padding: var(--rt-toggle-button-group-btn-padding);
50
+ border: 0;
51
+ border-radius: var(--rt-toggle-button-group-btn-radius);
52
+ background-color: transparent;
53
+ color: var(--rt-color-text-muted);
54
+ cursor: pointer;
55
+
56
+ /* Нативный <button>: без явного наследования берёт UA-шрифт (Arial),
57
+ а не Montserrat от body. */
58
+ font-family: inherit;
59
+ font-size: var(--rt-toggle-button-group-btn-font-size);
60
+ font-weight: var(--rt-font-weight-semibold);
61
+ gap: var(--rt-toggle-button-group-btn-gap);
62
+ line-height: var(--rt-toggle-button-group-btn-line-height);
63
+ transition:
64
+ background-color var(--rt-toggle-button-group-transition-duration) ease,
65
+ color var(--rt-toggle-button-group-transition-duration) ease;
66
+
67
+ &:hover:not(:disabled, &--active) {
68
+ color: var(--rt-color-text-primary);
69
+ }
70
+
71
+ &--active {
72
+ background-color: var(--rt-toggle-button-group-active-bg);
73
+ color: var(--rt-color-text-primary);
74
+ }
75
+
76
+ &:focus-visible {
77
+ position: relative;
78
+ z-index: 1;
79
+ box-shadow: var(--rt-toggle-button-group-focus-shadow);
80
+ outline: 2px solid transparent;
81
+ outline-offset: 1px;
82
+ }
83
+
84
+ &:disabled {
85
+ cursor: not-allowed;
86
+ }
63
87
  }
64
88
 
65
- &--active {
66
- background-color: var(--rt-toggle-button-group-active-bg);
67
- color: var(--rt-color-text-primary);
89
+ &__label {
90
+ display: inline-block;
91
+ white-space: nowrap;
68
92
  }
69
93
 
70
- &:focus-visible {
71
- position: relative;
72
- z-index: 1;
73
- box-shadow: var(--rt-shadow-focus-ring);
74
- outline: 2px solid transparent;
75
- outline-offset: 1px;
94
+ &__icon {
95
+ flex-shrink: 0;
76
96
  }
77
97
 
78
- &:disabled {
79
- cursor: not-allowed;
98
+ /* Размерные тиры — общая высота совпадает с rt-button (sm/md/lg). */
99
+ &--md {
100
+ --rt-toggle-button-group-height: 40px;
101
+ --rt-toggle-button-group-track-radius: 10px;
102
+ --rt-toggle-button-group-btn-padding: 0 14px;
103
+ --rt-toggle-button-group-btn-radius: 10px;
104
+ --rt-toggle-button-group-btn-gap: 6px;
105
+ --rt-toggle-button-group-btn-font-size: 14px;
106
+ --rt-toggle-button-group-btn-line-height: 16px;
80
107
  }
81
- }
82
-
83
- &__label {
84
- display: inline-block;
85
- white-space: nowrap;
86
- }
87
-
88
- &__icon {
89
- flex-shrink: 0;
90
- }
91
-
92
- /* Размерные тиры — общая высота совпадает с rt-button (sm/md/lg). */
93
- &--md {
94
- --rt-toggle-button-group-height: 40px;
95
- --rt-toggle-button-group-track-radius: 10px;
96
- --rt-toggle-button-group-btn-padding: 0 14px;
97
- --rt-toggle-button-group-btn-radius: 10px;
98
- --rt-toggle-button-group-btn-gap: 6px;
99
- --rt-toggle-button-group-btn-font-size: 14px;
100
- --rt-toggle-button-group-btn-line-height: 16px;
101
- }
102
108
 
103
- &--lg {
104
- --rt-toggle-button-group-height: 50px;
105
- --rt-toggle-button-group-track-radius: 12px;
106
- --rt-toggle-button-group-btn-padding: 0 20px;
107
- --rt-toggle-button-group-btn-radius: 12px;
108
- --rt-toggle-button-group-btn-gap: 8px;
109
- --rt-toggle-button-group-btn-font-size: 16px;
110
- --rt-toggle-button-group-btn-line-height: 18px;
111
- }
109
+ &--lg {
110
+ --rt-toggle-button-group-height: 50px;
111
+ --rt-toggle-button-group-track-radius: 12px;
112
+ --rt-toggle-button-group-btn-padding: 0 20px;
113
+ --rt-toggle-button-group-btn-radius: 12px;
114
+ --rt-toggle-button-group-btn-gap: 8px;
115
+ --rt-toggle-button-group-btn-font-size: 16px;
116
+ --rt-toggle-button-group-btn-line-height: 18px;
117
+ }
112
118
 
113
- &--disabled {
114
- opacity: 0.5;
119
+ &--disabled {
120
+ opacity: 0.5;
121
+ }
115
122
  }
116
123
  }
117
- }
118
-
119
- /* full-width: группа растягивается на контейнер, опции делят ширину поровну. */
120
- rt-toggle-button-group.rt-toggle-button-group--full-width {
121
- display: flex;
122
- width: 100%;
123
124
 
124
- .rt-toggle-button-group {
125
+ /* full-width: группа растягивается на контейнер, опции делят ширину поровну. */
126
+ rt-toggle-button-group.rt-toggle-button-group--full-width {
125
127
  display: flex;
126
128
  width: 100%;
127
- flex: 1 1 auto;
128
129
 
129
- .rt-toggle-button-group__button {
130
- flex: 1 1 0;
130
+ .rt-toggle-button-group {
131
+ display: flex;
132
+ width: 100%;
133
+ flex: 1 1 auto;
134
+
135
+ .rt-toggle-button-group__button {
136
+ flex: 1 1 0;
137
+ }
131
138
  }
132
139
  }
133
- }
134
140
 
135
- /* Dark theme: `--rt-color-bg-surface-subtle` совпадает с `--rt-color-bg-surface`
136
- в палитре (см. styles/_theme-dark.scss), поэтому track теряет контраст с
137
- активным сегментом. Локально перекрашиваем track в более тёмный neutral.
138
- Раньше правило было записано через `:host-context`, который под None не
139
- совпадает ни с чем: тему задаёт предок, им же и адресуемся. */
140
- :root[data-theme='dark'] rt-toggle-button-group,
141
- html.rt-theme-dark rt-toggle-button-group {
142
- --rt-toggle-button-group-track-bg: var(--rt-neutral-900);
141
+ /* Dark theme: `--rt-color-bg-surface-subtle` совпадает с `--rt-color-bg-surface`
142
+ в палитре (см. styles/_theme-dark.scss), поэтому track теряет контраст с
143
+ активным сегментом. Локально перекрашиваем track в более тёмный neutral.
144
+ Раньше правило было записано через `:host-context`, который под None не
145
+ совпадает ни с чем: тему задаёт предок, им же и адресуемся. */
146
+ :root[data-theme='dark'] rt-toggle-button-group,
147
+ html.rt-theme-dark rt-toggle-button-group {
148
+ --rt-toggle-button-group-track-bg: var(--rt-neutral-900);
149
+ }
143
150
  }
@@ -1,107 +1,113 @@
1
- /* rt-toggle-switch — переключатель в common/ui. ViewEncapsulation.None.
2
- Хост адресуется по имени элемента, а не по классу блока: класс `.rt-toggle-switch` висит
3
- и на `<rt-toggle-switch>`, и на корне шаблона, поэтому правила блока вложены в хост —
4
- так они достаются только корню шаблона. */
1
+ @layer rt-kit.components {
2
+ /* rt-toggle-switch — переключатель в common/ui. ViewEncapsulation.None.
3
+ Хост адресуется по имени элемента, а не по классу блока: класс `.rt-toggle-switch` висит
4
+ и на `<rt-toggle-switch>`, и на корне шаблона, поэтому правила блока вложены в хост —
5
+ так они достаются только корню шаблона. */
5
6
 
6
- rt-toggle-switch {
7
- display: inline-flex;
8
- }
7
+ rt-toggle-switch {
8
+ display: inline-flex;
9
+ }
9
10
 
10
- rt-toggle-switch .rt-toggle-switch {
11
- /* Геометрия размера. База — `sm`; модификаторы перекрывают только числа,
12
- правила ниже к размерам не привязаны. `thumb-travel` держим явным
13
- числом, а не calc из ширины: каждое значение сверяется с макетом. */
14
- --rt-toggle-track-width: 42px;
15
- --rt-toggle-track-height: 24px;
16
- --rt-toggle-thumb-size: 18px;
17
- --rt-toggle-thumb-inset: 3px;
18
- --rt-toggle-thumb-travel: 18px;
19
- --rt-toggle-icon-inset: 4px;
11
+ rt-toggle-switch .rt-toggle-switch {
12
+ --rt-toggle-radius: var(--rt-radius-full);
13
+ --rt-toggle-focus-shadow: var(--rt-shadow-focus-ring);
14
+ --rt-toggle-transition-duration: var(--rt-duration-fast);
20
15
 
21
- display: inline-flex;
22
- padding: 0;
23
- border: none;
24
- background: none;
25
- cursor: pointer;
16
+ /* Геометрия размера. База — `sm`; модификаторы перекрывают только числа,
17
+ правила ниже к размерам не привязаны. `thumb-travel` держим явным
18
+ числом, а не calc из ширины: каждое значение сверяется с макетом. */
19
+ --rt-toggle-track-width: 42px;
20
+ --rt-toggle-track-height: 24px;
21
+ --rt-toggle-thumb-size: 18px;
22
+ --rt-toggle-thumb-inset: 3px;
23
+ --rt-toggle-thumb-travel: 18px;
24
+ --rt-toggle-icon-inset: 4px;
26
25
 
27
- &--md {
28
- --rt-toggle-track-width: 52px;
29
- --rt-toggle-thumb-travel: 28px;
30
- }
26
+ display: inline-flex;
27
+ padding: 0;
28
+ border: none;
29
+ background: none;
30
+ cursor: pointer;
31
31
 
32
- &--lg {
33
- --rt-toggle-track-width: 60px;
34
- --rt-toggle-track-height: 30px;
35
- --rt-toggle-thumb-size: 24px;
36
- --rt-toggle-thumb-travel: 30px;
37
- --rt-toggle-icon-inset: 6px;
38
- }
32
+ &--md {
33
+ --rt-toggle-track-width: 52px;
34
+ --rt-toggle-thumb-travel: 28px;
35
+ }
39
36
 
40
- &:focus-visible {
41
- border-radius: var(--rt-radius-full);
42
- box-shadow: var(--rt-shadow-focus-ring);
43
- outline: 2px solid transparent;
44
- outline-offset: 2px;
45
- }
37
+ &--lg {
38
+ --rt-toggle-track-width: 60px;
39
+ --rt-toggle-track-height: 30px;
40
+ --rt-toggle-thumb-size: 24px;
41
+ --rt-toggle-thumb-travel: 30px;
42
+ --rt-toggle-icon-inset: 6px;
43
+ }
46
44
 
47
- &--disabled {
48
- cursor: not-allowed;
49
- opacity: 0.5;
50
- }
45
+ &:focus-visible {
46
+ border-radius: var(--rt-toggle-radius);
47
+ box-shadow: var(--rt-toggle-focus-shadow);
48
+ outline: 2px solid transparent;
49
+ outline-offset: 2px;
50
+ }
51
51
 
52
- &__track {
53
- position: relative;
54
- display: inline-block;
55
- width: var(--rt-toggle-track-width);
56
- height: var(--rt-toggle-track-height);
57
- border-radius: var(--rt-radius-full);
58
- background: var(--rt-toggle-color-track);
59
- box-shadow: var(--rt-toggle-shadow-border);
60
- color: var(--rt-toggle-color-icon);
61
- transition:
62
- background var(--rt-duration-fast) ease,
63
- box-shadow var(--rt-duration-fast) ease;
64
- }
52
+ &--disabled {
53
+ cursor: not-allowed;
54
+ opacity: 0.5;
55
+ }
65
56
 
66
- /* Элемент адресуется классом, а не вторым `&`: родитель здесь составной
67
- (`rt-toggle-switch .rt-toggle-switch`), и второй `&` развернулся бы в него целиком —
68
- то есть в селектор, требующий вложенного переключателя. Включённое состояние
69
- из-за этого не применялось: трек оставался серым, бегунок — слева. */
70
- &--on .rt-toggle-switch__track {
71
- background: var(--rt-toggle-color-track-on);
72
- box-shadow: none;
73
- }
57
+ &__track {
58
+ position: relative;
59
+ display: inline-block;
60
+ width: var(--rt-toggle-track-width);
61
+ height: var(--rt-toggle-track-height);
62
+ border-radius: var(--rt-toggle-radius);
63
+ background: var(--rt-toggle-color-track);
64
+ box-shadow: var(--rt-toggle-shadow-border);
65
+ color: var(--rt-toggle-color-icon);
66
+ transition:
67
+ background var(--rt-toggle-transition-duration) ease,
68
+ box-shadow var(--rt-toggle-transition-duration) ease;
69
+ }
74
70
 
75
- /* Иконки статичны: бегунок наезжает на иконку активного состояния и
76
- закрывает её, поэтому видна всегда иконка целевого состояния. */
77
- &__icon-off,
78
- &__icon-on {
79
- position: absolute;
80
- inset-block-start: 50%;
81
- transform: translateY(-50%);
82
- }
71
+ /* Элемент адресуется классом, а не вторым `&`: родитель здесь составной
72
+ (`rt-toggle-switch .rt-toggle-switch`), и второй `&` развернулся бы в него целиком —
73
+ то есть в селектор, требующий вложенного переключателя. Включённое состояние
74
+ из-за этого не применялось: трек оставался серым, бегунок — слева. */
75
+ &--on .rt-toggle-switch__track {
76
+ background: var(--rt-toggle-color-track-on);
77
+ box-shadow: none;
78
+ }
83
79
 
84
- &__icon-off {
85
- inset-inline-start: var(--rt-toggle-icon-inset);
86
- }
80
+ /* Иконки статичны: бегунок наезжает на иконку активного состояния и
81
+ закрывает её, поэтому видна всегда иконка целевого состояния. */
82
+ &__icon-off,
83
+ &__icon-on {
84
+ position: absolute;
85
+ inset-block-start: 50%;
86
+ transform: translateY(-50%);
87
+ }
87
88
 
88
- &__icon-on {
89
- inset-inline-end: var(--rt-toggle-icon-inset);
90
- }
89
+ &__icon-off {
90
+ inset-inline-start: var(--rt-toggle-icon-inset);
91
+ }
91
92
 
92
- &__thumb {
93
- position: absolute;
94
- width: var(--rt-toggle-thumb-size);
95
- height: var(--rt-toggle-thumb-size);
96
- border-radius: var(--rt-radius-full);
97
- background: var(--rt-toggle-color-thumb);
98
- box-shadow: var(--rt-toggle-shadow-thumb);
99
- inset-block-start: var(--rt-toggle-thumb-inset);
100
- inset-inline-start: var(--rt-toggle-thumb-inset);
101
- transition: transform var(--rt-duration-fast) ease;
102
- }
93
+ &__icon-on {
94
+ inset-inline-end: var(--rt-toggle-icon-inset);
95
+ }
96
+
97
+ &__thumb {
98
+ position: absolute;
99
+ width: var(--rt-toggle-thumb-size);
100
+ height: var(--rt-toggle-thumb-size);
101
+ border-radius: var(--rt-toggle-radius);
102
+ background: var(--rt-toggle-color-thumb);
103
+ box-shadow: var(--rt-toggle-shadow-thumb);
104
+ inset-block-start: var(--rt-toggle-thumb-inset);
105
+ inset-inline-start: var(--rt-toggle-thumb-inset);
106
+ transition: transform var(--rt-toggle-transition-duration) ease;
107
+ }
103
108
 
104
- &--on .rt-toggle-switch__thumb {
105
- transform: translateX(var(--rt-toggle-thumb-travel));
109
+ &--on .rt-toggle-switch__thumb {
110
+ transform: translateX(var(--rt-toggle-thumb-travel));
111
+ }
106
112
  }
107
113
  }
@@ -1,69 +1,71 @@
1
- .rt-toolbar {
2
- display: block;
1
+ @layer rt-kit.components {
2
+ .rt-toolbar {
3
+ display: block;
3
4
 
4
- &__bars {
5
- display: flex;
6
- width: 100%;
7
- flex-direction: row;
8
- align-items: center;
9
- justify-content: space-between;
10
- padding: var(--rt-space-2-5) 0;
11
- gap: var(--rt-space-2-5);
12
- }
5
+ &__bars {
6
+ display: flex;
7
+ width: 100%;
8
+ flex-direction: row;
9
+ align-items: center;
10
+ justify-content: space-between;
11
+ padding: var(--rt-space-2) 0;
12
+ gap: var(--rt-space-2);
13
+ }
13
14
 
14
- &__bar {
15
- display: flex;
16
- align-items: center;
15
+ &__bar {
16
+ display: flex;
17
+ align-items: center;
17
18
 
18
- // left/right — по контенту; center — эластичный спейсер, который
19
- // прижимает right-бар к краю. Раньше каждый list-page переопределял
20
- // эти три флекса через ::ng-deep — теперь поведение зашито здесь.
21
- &--left {
22
- flex: 0 0 auto;
23
- gap: var(--rt-space-2-5);
24
- }
19
+ // left/right — по контенту; center — эластичный спейсер, который
20
+ // прижимает right-бар к краю. Раньше каждый list-page переопределял
21
+ // эти три флекса через ::ng-deep — теперь поведение зашито здесь.
22
+ &--left {
23
+ flex: 0 0 auto;
24
+ gap: var(--rt-space-2);
25
+ }
25
26
 
26
- &--center {
27
- flex: 1 1 auto;
28
- justify-content: flex-end;
29
- gap: var(--rt-space-2-5);
27
+ &--center {
28
+ flex: 1 1 auto;
29
+ justify-content: flex-end;
30
+ gap: var(--rt-space-2);
30
31
 
31
- // Контрол-фильтр (поиск/селект) занимает ширину center и право-
32
- // выравнивается к action-кнопкам; свой max-width задаёт потребитель.
33
- rt-input,
34
- rt-select {
35
- width: 100%;
32
+ // Контрол-фильтр (поиск/селект) занимает ширину center и право-
33
+ // выравнивается к action-кнопкам; свой max-width задаёт потребитель.
34
+ rt-input,
35
+ rt-select {
36
+ width: 100%;
37
+ }
36
38
  }
37
- }
38
39
 
39
- &--right {
40
- // Прижатие к правому краю даже когда right — единственный бар
41
- // (нет left/center, которые бы вытолкнули его через space-between).
42
- flex: 0 0 auto;
43
- margin-left: auto;
44
- gap: var(--rt-space-sm);
40
+ &--right {
41
+ // Прижатие к правому краю даже когда right — единственный бар
42
+ // (нет left/center, которые бы вытолкнули его через space-between).
43
+ flex: 0 0 auto;
44
+ margin-left: auto;
45
+ gap: var(--rt-space-sm);
46
+ }
45
47
  }
46
48
  }
47
- }
48
49
 
49
- // Мобилка: три зоны не влезают в строку — стекаем в колонку на всю ширину
50
- // (фильтр → поиск → действия), поиск растягивается. `--dense` (компактная
51
- // шапка вроде rt-chat) из стекинга исключён — остаётся в одну строку.
52
- @media (width <= 768px) {
53
- .rt-toolbar:not(.rt-toolbar--dense) {
54
- .rt-toolbar__bars {
55
- flex-direction: column;
56
- align-items: stretch;
57
- gap: var(--rt-space-sm);
58
- }
50
+ // Мобилка: три зоны не влезают в строку — стекаем в колонку на всю ширину
51
+ // (фильтр → поиск → действия), поиск растягивается. `--dense` (компактная
52
+ // шапка вроде rt-chat) из стекинга исключён — остаётся в одну строку.
53
+ @media (width <= 768px) {
54
+ .rt-toolbar:not(.rt-toolbar--dense) {
55
+ .rt-toolbar__bars {
56
+ flex-direction: column;
57
+ align-items: stretch;
58
+ gap: var(--rt-space-sm);
59
+ }
59
60
 
60
- .rt-toolbar__bar--center {
61
- justify-content: stretch;
62
- }
61
+ .rt-toolbar__bar--center {
62
+ justify-content: stretch;
63
+ }
63
64
 
64
- .rt-toolbar__bar--right {
65
- justify-content: flex-end;
66
- margin-left: 0;
65
+ .rt-toolbar__bar--right {
66
+ justify-content: flex-end;
67
+ margin-left: 0;
68
+ }
67
69
  }
68
70
  }
69
71
  }
@@ -1,18 +1,23 @@
1
- /* rt-tooltip — панель подсказки в CDK Overlay. ViewEncapsulation.None.
2
- Тёмная инверсная подложка (theme-aware пара bg-inverse / text-inverse). */
1
+ @layer rt-kit.components {
2
+ /* rt-tooltip — панель подсказки в CDK Overlay. ViewEncapsulation.None.
3
+ Тёмная инверсная подложка (theme-aware пара bg-inverse / text-inverse). */
3
4
 
4
- .rt-tooltip {
5
- display: block;
6
- max-width: 240px;
7
- padding: var(--rt-space-xs) var(--rt-space-sm);
8
- border-radius: var(--rt-radius-sm);
9
- background: var(--rt-color-bg-inverse);
10
- box-shadow: var(--rt-shadow-md);
11
- color: var(--rt-color-text-inverse);
12
- font-size: var(--rt-text-xs);
13
- line-height: var(--rt-leading-snug);
5
+ .rt-tooltip {
6
+ --rt-tooltip-radius: var(--rt-radius-sm);
7
+ --rt-tooltip-shadow: var(--rt-shadow-md);
14
8
 
15
- /* Tooltip — чисто визуальная подсказка: не перехватывает указатель, чтобы
16
- не мешать hover/leave логике host'а. */
17
- pointer-events: none;
9
+ display: block;
10
+ max-width: 240px;
11
+ padding: var(--rt-space-xs) var(--rt-space-sm);
12
+ border-radius: var(--rt-tooltip-radius);
13
+ background: var(--rt-color-bg-inverse);
14
+ box-shadow: var(--rt-tooltip-shadow);
15
+ color: var(--rt-color-text-inverse);
16
+ font-size: var(--rt-text-xs);
17
+ line-height: var(--rt-leading-snug);
18
+
19
+ /* Tooltip — чисто визуальная подсказка: не перехватывает указатель, чтобы
20
+ не мешать hover/leave логике host'а. */
21
+ pointer-events: none;
22
+ }
18
23
  }