@rt-tools/ui-kit-v2 0.4.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 (108) hide show
  1. package/README.md +71 -0
  2. package/fesm2022/rt-tools-ui-kit-v2.mjs +395 -188
  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/CONTEXT.md +22 -0
  23. package/src/lib/components/container/rt-container.component.scss +91 -87
  24. package/src/lib/components/counter/rt-counter.component.scss +14 -12
  25. package/src/lib/components/counter-row/rt-counter-row.component.scss +31 -27
  26. package/src/lib/components/date-picker/rt-date-picker.component.scss +73 -71
  27. package/src/lib/components/delta-view/rt-delta-view.component.scss +27 -25
  28. package/src/lib/components/detail-list/rt-detail-list.component.scss +8 -6
  29. package/src/lib/components/detail-list/rt-detail-row.component.scss +18 -16
  30. package/src/lib/components/dialog/footer/rt-dialog-footer.component.scss +19 -17
  31. package/src/lib/components/dialog/header/rt-dialog-header.component.scss +27 -25
  32. package/src/lib/components/dialog/rt-dialog.component.scss +59 -56
  33. package/src/lib/components/download-link/rt-download-link.component.scss +32 -27
  34. package/src/lib/components/empty-state/rt-empty-state.component.scss +50 -46
  35. package/src/lib/components/field/rt-field.component.scss +63 -61
  36. package/src/lib/components/file-card/rt-file-card.component.scss +84 -78
  37. package/src/lib/components/file-drop/rt-file-drop.component.scss +83 -77
  38. package/src/lib/components/file-input/rt-file-input.component.scss +20 -18
  39. package/src/lib/components/file-list/rt-file-list.component.scss +9 -7
  40. package/src/lib/components/filter-control/rt-filter-control.component.scss +16 -14
  41. package/src/lib/components/header/rt-header.component.scss +61 -55
  42. package/src/lib/components/icon/rt-icon.component.scss +14 -12
  43. package/src/lib/components/icon-button/CONTEXT.md +4 -2
  44. package/src/lib/components/icon-button/rt-icon-button.component.scss +128 -112
  45. package/src/lib/components/info-item/rt-info-item.component.scss +38 -36
  46. package/src/lib/components/input/rt-input.component.scss +102 -98
  47. package/src/lib/components/input-number/rt-input-number.component.scss +84 -82
  48. package/src/lib/components/live-badge/rt-live-badge.component.scss +27 -23
  49. package/src/lib/components/logo/rt-logo.component.scss +54 -52
  50. package/src/lib/components/menu/rt-menu-confirm-dialog.component.scss +30 -28
  51. package/src/lib/components/menu/rt-menu-item.component.scss +47 -42
  52. package/src/lib/components/menu/rt-menu.component.scss +23 -15
  53. package/src/lib/components/message/rt-message.component.scss +53 -49
  54. package/src/lib/components/message-composer/rt-message-composer.component.scss +55 -49
  55. package/src/lib/components/money-list/rt-money-list.component.scss +13 -9
  56. package/src/lib/components/money-list/rt-money-row.component.scss +23 -19
  57. package/src/lib/components/multiselect/rt-multiselect.component.scss +169 -161
  58. package/src/lib/components/night-grid/rt-night-grid.component.scss +47 -42
  59. package/src/lib/components/note/rt-note.component.scss +15 -11
  60. package/src/lib/components/notifications-bell/rt-notifications-bell.component.scss +34 -27
  61. package/src/lib/components/page-header/rt-page-header-mobile.scss +142 -134
  62. package/src/lib/components/page-header/rt-page-header-submenu.scss +130 -123
  63. package/src/lib/components/page-header/rt-page-header.component.scss +221 -210
  64. package/src/lib/components/pagination/rt-pagination.component.scss +88 -81
  65. package/src/lib/components/photo-viewer/rt-photo-viewer.component.scss +109 -105
  66. package/src/lib/components/rich-editor/rt-rich-editor.component.scss +63 -59
  67. package/src/lib/components/section-nav/rt-section-nav.component.scss +53 -47
  68. package/src/lib/components/select/rt-select.component.scss +146 -138
  69. package/src/lib/components/skeleton/rt-skeleton.component.scss +50 -41
  70. package/src/lib/components/skeleton-wrapper/rt-skeleton-wrapper.component.scss +8 -6
  71. package/src/lib/components/spinner/rt-spinner.component.scss +35 -32
  72. package/src/lib/components/split-button/rt-split-button.component.scss +74 -62
  73. package/src/lib/components/stat-tile/rt-stat-tile.component.scss +95 -91
  74. package/src/lib/components/stepper/rt-stepper.component.scss +107 -101
  75. package/src/lib/components/table/copy-cell/rt-copy-cell.component.scss +34 -30
  76. package/src/lib/components/table/rt-table.component.scss +260 -252
  77. package/src/lib/components/table/settings-aside/rt-table-settings-aside.component.scss +7 -5
  78. package/src/lib/components/table/settings-panel/rt-table-settings-panel.component.scss +71 -61
  79. package/src/lib/components/table/sort-header/CONTEXT.md +40 -0
  80. package/src/lib/components/table/sort-header/rt-table-sort-header.component.scss +31 -29
  81. package/src/lib/components/tabs/CONTEXT.md +5 -0
  82. package/src/lib/components/tabs/rt-tabs.component.scss +184 -175
  83. package/src/lib/components/tag/rt-tag.component.scss +97 -92
  84. package/src/lib/components/textarea/rt-textarea.component.scss +62 -60
  85. package/src/lib/components/theme-toggle/rt-theme-toggle.component.scss +7 -5
  86. package/src/lib/components/thread-list/rt-thread-list.component.scss +221 -212
  87. package/src/lib/components/timeline/rt-timeline.component.scss +82 -76
  88. package/src/lib/components/toast/CONTEXT.md +8 -0
  89. package/src/lib/components/toast/rt-toast.component.scss +169 -160
  90. package/src/lib/components/toast/rt-toaster.component.scss +37 -35
  91. package/src/lib/components/toggle-button-group/rt-toggle-button-group.component.scss +129 -122
  92. package/src/lib/components/toggle-switch/rt-toggle-switch.component.scss +97 -91
  93. package/src/lib/components/toolbar/rt-toolbar.component.scss +56 -54
  94. package/src/lib/components/tooltip/rt-tooltip.component.scss +20 -15
  95. package/src/lib/components/welcome-dialog/rt-welcome-dialog.component.scss +46 -44
  96. package/src/lib/components/workspace/rt-workspace.component.scss +139 -131
  97. package/src/lib/components/workspace-details/rt-workspace-details.component.scss +105 -101
  98. package/src/styles/_index.scss +4 -0
  99. package/src/styles/_layers.scss +22 -0
  100. package/src/styles/_login.scss +87 -85
  101. package/src/styles/_mixins.scss +1 -1
  102. package/src/styles/_primitives.scss +126 -67
  103. package/src/styles/_scrollbar.scss +21 -19
  104. package/src/styles/_semantic.scss +140 -56
  105. package/src/styles/_theme-dark.scss +60 -27
  106. package/styles/tokens.css +628 -408
  107. package/types/rt-tools-ui-kit-v2.d.ts +9 -16
  108. package/rt-tools-ui-kit-v2-0.4.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
  }