@rt-tools/ui-kit-v2 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/README.md +87 -7
  2. package/fesm2022/rt-tools-ui-kit-v2.mjs +1929 -994
  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.7.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/CONTEXT.md +16 -10
  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/CONTEXT.md +9 -7
  47. package/src/lib/components/input/rt-input.component.scss +102 -98
  48. package/src/lib/components/input-number/rt-input-number.component.scss +84 -82
  49. package/src/lib/components/live-badge/rt-live-badge.component.scss +27 -23
  50. package/src/lib/components/logo/rt-logo.component.scss +54 -52
  51. package/src/lib/components/markdown-text/CONTEXT.md +40 -0
  52. package/src/lib/components/markdown-text/rt-markdown-text.component.scss +130 -0
  53. package/src/lib/components/menu/rt-menu-confirm-dialog.component.scss +30 -28
  54. package/src/lib/components/menu/rt-menu-item.component.scss +47 -42
  55. package/src/lib/components/menu/rt-menu.component.scss +23 -15
  56. package/src/lib/components/message/rt-message.component.scss +53 -49
  57. package/src/lib/components/message-composer/CONTEXT.md +1 -1
  58. package/src/lib/components/message-composer/rt-message-composer.component.scss +55 -49
  59. package/src/lib/components/money-list/rt-money-list.component.scss +13 -9
  60. package/src/lib/components/money-list/rt-money-row.component.scss +23 -19
  61. package/src/lib/components/multiselect/rt-multiselect.component.scss +169 -161
  62. package/src/lib/components/night-grid/rt-night-grid.component.scss +47 -42
  63. package/src/lib/components/note/rt-note.component.scss +15 -11
  64. package/src/lib/components/notifications-bell/rt-notifications-bell.component.scss +34 -27
  65. package/src/lib/components/page-header/rt-page-header-mobile.scss +142 -134
  66. package/src/lib/components/page-header/rt-page-header-submenu.scss +130 -123
  67. package/src/lib/components/page-header/rt-page-header.component.scss +221 -210
  68. package/src/lib/components/pagination/rt-pagination.component.scss +88 -81
  69. package/src/lib/components/photo-viewer/rt-photo-viewer.component.scss +109 -105
  70. package/src/lib/components/rich-editor/CONTEXT.md +1 -1
  71. package/src/lib/components/rich-editor/rt-rich-editor.component.scss +63 -59
  72. package/src/lib/components/section-nav/rt-section-nav.component.scss +53 -47
  73. package/src/lib/components/select/rt-select.component.scss +146 -138
  74. package/src/lib/components/skeleton/rt-skeleton.component.scss +50 -41
  75. package/src/lib/components/skeleton-wrapper/rt-skeleton-wrapper.component.scss +8 -6
  76. package/src/lib/components/spinner/rt-spinner.component.scss +35 -32
  77. package/src/lib/components/split-button/rt-split-button.component.scss +74 -62
  78. package/src/lib/components/stat-tile/rt-stat-tile.component.scss +95 -91
  79. package/src/lib/components/stepper/rt-stepper.component.scss +107 -101
  80. package/src/lib/components/table/copy-cell/rt-copy-cell.component.scss +39 -30
  81. package/src/lib/components/table/rt-table.component.scss +260 -252
  82. package/src/lib/components/table/settings-aside/rt-table-settings-aside.component.scss +7 -5
  83. package/src/lib/components/table/settings-panel/rt-table-settings-panel.component.scss +71 -61
  84. package/src/lib/components/table/sort-header/rt-table-sort-header.component.scss +31 -29
  85. package/src/lib/components/tabs/rt-tabs.component.scss +184 -175
  86. package/src/lib/components/tag/rt-tag.component.scss +97 -92
  87. package/src/lib/components/textarea/rt-textarea.component.scss +62 -60
  88. package/src/lib/components/theme-toggle/rt-theme-toggle.component.scss +7 -5
  89. package/src/lib/components/thread-list/rt-thread-list.component.scss +221 -212
  90. package/src/lib/components/timeline/rt-timeline.component.scss +82 -76
  91. package/src/lib/components/toast/rt-toast.component.scss +169 -160
  92. package/src/lib/components/toast/rt-toaster.component.scss +37 -35
  93. package/src/lib/components/toggle-button-group/rt-toggle-button-group.component.scss +129 -122
  94. package/src/lib/components/toggle-switch/rt-toggle-switch.component.scss +97 -91
  95. package/src/lib/components/toolbar/rt-toolbar.component.scss +63 -54
  96. package/src/lib/components/tooltip/rt-tooltip.component.scss +24 -15
  97. package/src/lib/components/welcome-dialog/rt-welcome-dialog.component.scss +46 -44
  98. package/src/lib/components/workspace/rt-workspace.component.scss +139 -131
  99. package/src/lib/components/workspace-details/rt-workspace-details.component.scss +105 -101
  100. package/src/styles/_index.scss +11 -0
  101. package/src/styles/_layers.scss +22 -0
  102. package/src/styles/_login.scss +87 -85
  103. package/src/styles/_mixins.scss +1 -1
  104. package/src/styles/_primitives.scss +138 -66
  105. package/src/styles/_scrollbar.scss +21 -19
  106. package/src/styles/_semantic.scss +155 -62
  107. package/src/styles/_theme-dark-rules.scss +23 -0
  108. package/src/styles/_theme-dark.scss +61 -42
  109. package/styles/tokens.css +754 -418
  110. package/types/rt-tools-ui-kit-v2.d.ts +292 -103
  111. package/rt-tools-ui-kit-v2-0.5.0.tgz +0 -0
@@ -1,58 +1,64 @@
1
- /* rt-section-nav — ViewEncapsulation.None: правила таргетируют BEM-класс блока.
2
- `.rt-section-nav` — сам хост (шаблон начинается с ng-container, класс ставит host). */
1
+ @layer rt-kit.components {
2
+ /* rt-section-nav — ViewEncapsulation.None: правила таргетируют BEM-класс блока.
3
+ `.rt-section-nav` — сам хост (шаблон начинается с ng-container, класс ставит host). */
3
4
 
4
- .rt-section-nav {
5
- display: flex;
6
- gap: var(--rt-space-md);
5
+ .rt-section-nav {
6
+ --rt-section-nav-tile-radius: var(--rt-radius-xl);
7
+ --rt-section-nav-tile-shadow: var(--rt-shadow-card-soft);
8
+ --rt-section-nav-transition-duration: var(--rt-duration-fast);
7
9
 
8
- &__tile {
9
10
  display: flex;
10
- min-width: 0;
11
- flex: 1 0 0;
12
- flex-direction: column;
13
- align-items: center;
14
- justify-content: center;
15
- padding: var(--rt-space-md);
16
- border: 0;
17
- border-radius: var(--rt-radius-xl);
18
- background: transparent;
19
- box-shadow: none;
20
- color: var(--rt-color-text-primary);
21
- cursor: pointer;
22
- gap: var(--rt-space-2-5);
23
- transition:
24
- background var(--rt-duration-fast) ease,
25
- box-shadow var(--rt-duration-fast) ease;
26
-
27
- &:not(.rt-section-nav__tile--active):hover {
28
- background: var(--rt-color-bg-surface-subtle);
29
- box-shadow: var(--rt-shadow-card-soft);
11
+ gap: var(--rt-space-md);
12
+
13
+ &__tile {
14
+ display: flex;
15
+ min-width: 0;
16
+ flex: 1 0 0;
17
+ flex-direction: column;
18
+ align-items: center;
19
+ justify-content: center;
20
+ padding: var(--rt-space-md);
21
+ border: 0;
22
+ border-radius: var(--rt-section-nav-tile-radius);
23
+ background: transparent;
24
+ box-shadow: none;
25
+ color: var(--rt-color-text-primary);
26
+ cursor: pointer;
27
+ gap: var(--rt-space-2);
28
+ transition:
29
+ background var(--rt-section-nav-transition-duration) ease,
30
+ box-shadow var(--rt-section-nav-transition-duration) ease;
31
+
32
+ &:not(.rt-section-nav__tile--active):hover {
33
+ background: var(--rt-color-bg-surface-subtle);
34
+ box-shadow: var(--rt-section-nav-tile-shadow);
35
+ }
36
+
37
+ &--active {
38
+ background: var(--rt-color-bg-surface);
39
+ box-shadow: var(--rt-section-nav-tile-shadow);
40
+ cursor: default;
41
+ }
30
42
  }
31
43
 
32
- &--active {
33
- background: var(--rt-color-bg-surface);
34
- box-shadow: var(--rt-shadow-card-soft);
35
- cursor: default;
44
+ &__icon {
45
+ color: inherit;
36
46
  }
37
- }
38
47
 
39
- &__icon {
40
- color: inherit;
48
+ &__label {
49
+ color: inherit;
50
+ font-family: var(--rt-font-family-sans);
51
+ font-size: var(--rt-text-sm);
52
+ font-weight: var(--rt-font-weight-bold);
53
+ letter-spacing: var(--rt-letter-spacing-wide);
54
+ line-height: var(--rt-leading-snug);
55
+ }
41
56
  }
42
57
 
43
- &__label {
44
- color: inherit;
45
- font-family: var(--rt-font-family-sans);
46
- font-size: var(--rt-text-sm);
47
- font-weight: var(--rt-font-weight-bold);
48
- letter-spacing: var(--rt-letter-spacing-wide);
49
- line-height: var(--rt-leading-snug);
58
+ /* Тёмная тема: активная плитка на тёмной поверхности берёт свой фон.
59
+ Раньше правило было записано через `:host-context`, который под None не
60
+ совпадает ни с чем, — тема задаётся атрибутом на предке, и им же адресуется. */
61
+ [data-theme='dark'] .rt-section-nav__tile--active {
62
+ background: var(--rt-color-bg-nav);
50
63
  }
51
64
  }
52
-
53
- /* Тёмная тема: активная плитка на тёмной поверхности берёт свой фон.
54
- Раньше правило было записано через `:host-context`, который под None не
55
- совпадает ни с чем, — тема задаётся атрибутом на предке, и им же адресуется. */
56
- [data-theme='dark'] .rt-section-nav__tile--active {
57
- background: var(--rt-blue-900);
58
- }
@@ -1,173 +1,181 @@
1
- .rt-select {
2
- position: relative;
3
- display: block;
4
- width: 100%;
5
-
6
- /* bordered=false: снимаем только resting-рамку триггера. Объявлено ДО блока
7
- __trigger — его :focus и правила --open/--invalid/--readonly __trigger
8
- (равная специфичность) идут ниже по source-order и перекрывают рамку. */
9
- &--borderless &__trigger {
10
- border-color: transparent;
11
- }
1
+ @layer rt-kit.components {
2
+ .rt-select {
3
+ --rt-select-caret-transition-duration: var(--rt-duration-fast);
12
4
 
13
- &__trigger {
14
- display: flex;
5
+ position: relative;
6
+ display: block;
15
7
  width: 100%;
16
- min-height: var(--rt-input-height);
17
- box-sizing: border-box;
18
- align-items: center;
19
- padding: var(--rt-input-padding-y) var(--rt-input-padding-x);
20
- border: var(--rt-input-border-width) solid var(--rt-input-color-border);
21
- border-radius: var(--rt-input-radius);
22
- background-color: var(--rt-input-color-bg);
23
- color: var(--rt-input-color-text);
24
- cursor: pointer;
25
-
26
- /* Триггер — нативный <button>: без явного наследования берёт UA-шрифт
27
- (Arial), а не Montserrat от body. */
28
- font-family: inherit;
29
- font-size: var(--rt-input-font-size);
30
- gap: var(--rt-space-sm);
31
- line-height: var(--rt-input-line-height);
32
- text-align: start;
33
- transition: var(--rt-input-transition);
34
-
35
- // :focus (не :focus-visible) — триггер это <button>, у которого
36
- // :focus-visible не срабатывает на клик мышью; кольцо нужно и при клике.
37
- &:focus {
38
- border-color: var(--rt-input-color-border-focus);
39
- box-shadow: var(--rt-input-focus-shadow);
40
- outline: 2px solid transparent;
41
- outline-offset: var(--rt-input-focus-outline-offset);
42
- }
43
8
 
44
- &:disabled {
45
- cursor: not-allowed;
9
+ /* bordered=false: снимаем только resting-рамку триггера. Объявлено ДО блока
10
+ __trigger — его :focus и правила --open/--invalid/--readonly __trigger
11
+ (равная специфичность) идут ниже по source-order и перекрывают рамку. */
12
+ &--borderless &__trigger {
13
+ border-color: transparent;
46
14
  }
47
- }
48
15
 
49
- &--open &__trigger {
50
- border-color: var(--rt-input-color-border-focus);
51
- }
52
-
53
- &--invalid &__trigger {
54
- border-color: var(--rt-input-color-border-error);
16
+ &__trigger {
17
+ display: flex;
18
+ width: 100%;
19
+ min-height: var(--rt-input-height);
20
+ box-sizing: border-box;
21
+ align-items: center;
22
+ padding: var(--rt-input-padding-y) var(--rt-input-padding-x);
23
+ border: var(--rt-input-border-width) solid var(--rt-input-color-border);
24
+ border-radius: var(--rt-input-radius);
25
+ background-color: var(--rt-input-color-bg);
26
+ color: var(--rt-input-color-text);
27
+ cursor: pointer;
28
+
29
+ /* Триггер — нативный <button>: без явного наследования берёт UA-шрифт
30
+ (Arial), а не Montserrat от body. */
31
+ font-family: inherit;
32
+ font-size: var(--rt-input-font-size);
33
+ gap: var(--rt-space-sm);
34
+ line-height: var(--rt-input-line-height);
35
+ text-align: start;
36
+ transition: var(--rt-input-transition);
37
+
38
+ // :focus (не :focus-visible) — триггер это <button>, у которого
39
+ // :focus-visible не срабатывает на клик мышью; кольцо нужно и при клике.
40
+ &:focus {
41
+ border-color: var(--rt-input-color-border-focus);
42
+ box-shadow: var(--rt-input-focus-shadow);
43
+ outline: 2px solid transparent;
44
+ outline-offset: var(--rt-input-focus-outline-offset);
45
+ }
55
46
 
56
- &:focus {
57
- box-shadow: var(--rt-input-focus-shadow-error);
47
+ &:disabled {
48
+ cursor: not-allowed;
49
+ }
58
50
  }
59
- }
60
51
 
61
- &--disabled {
62
- opacity: var(--rt-input-disabled-opacity);
63
- }
52
+ &--open &__trigger {
53
+ border-color: var(--rt-input-color-border-focus);
54
+ }
64
55
 
65
- /* Read-only: триггер остаётся в DOM (нужен для viewChild.required popover'а),
66
- но скрыт — значение показывает плоский текст __readonly. */
67
- &--readonly &__trigger {
68
- display: none;
69
- }
56
+ &--invalid &__trigger {
57
+ border-color: var(--rt-input-color-border-error);
70
58
 
71
- /* Read-only: выбранный label как плоский текст. */
72
- &__readonly {
73
- display: inline-flex;
74
- min-height: var(--rt-input-height);
75
- align-items: center;
76
- color: var(--rt-field-value-color);
77
- font-size: var(--rt-field-value-font-size);
59
+ &:focus {
60
+ box-shadow: var(--rt-input-focus-shadow-error);
61
+ }
62
+ }
78
63
 
79
- &--empty {
80
- color: var(--rt-field-value-empty-color);
64
+ &--disabled {
65
+ opacity: var(--rt-input-disabled-opacity);
81
66
  }
82
- }
83
67
 
84
- &--size--sm &__trigger {
85
- min-height: var(--rt-input-height-sm);
86
- }
68
+ /* Read-only: триггер остаётся в DOM (нужен для viewChild.required popover'а),
69
+ но скрыт — значение показывает плоский текст __readonly. */
70
+ &--readonly &__trigger {
71
+ display: none;
72
+ }
87
73
 
88
- &--size--lg &__trigger {
89
- min-height: var(--rt-input-height-lg);
90
- }
74
+ /* Read-only: выбранный label как плоский текст. */
75
+ &__readonly {
76
+ display: inline-flex;
77
+ min-height: var(--rt-input-height);
78
+ align-items: center;
79
+ color: var(--rt-field-value-color);
80
+ font-size: var(--rt-field-value-font-size);
91
81
 
92
- &__label {
93
- overflow: hidden;
94
- min-width: 0;
95
- flex: 1 1 auto;
96
- text-overflow: ellipsis;
97
- white-space: nowrap;
82
+ &--empty {
83
+ color: var(--rt-field-value-empty-color);
84
+ }
85
+ }
98
86
 
99
- &--placeholder {
100
- color: var(--rt-input-color-text-placeholder);
87
+ &--size--sm &__trigger {
88
+ min-height: var(--rt-input-height-sm);
101
89
  }
102
- }
103
90
 
104
- &__icon-left,
105
- &__clear {
106
- flex-shrink: 0;
107
- }
91
+ &--size--lg &__trigger {
92
+ min-height: var(--rt-input-height-lg);
93
+ }
108
94
 
109
- &__chevron {
110
- flex-shrink: 0;
111
- transition: transform var(--rt-duration-fast) ease;
112
- }
95
+ &__label {
96
+ overflow: hidden;
97
+ min-width: 0;
98
+ flex: 1 1 auto;
99
+ text-overflow: ellipsis;
100
+ white-space: nowrap;
113
101
 
114
- &--open &__chevron {
115
- transform: rotate(180deg);
116
- }
102
+ &--placeholder {
103
+ color: var(--rt-input-color-text-placeholder);
104
+ }
105
+ }
117
106
 
118
- /* Panel рендерится в CDK Overlay (body) — позиционирование на CDK,
119
- здесь только chrome. Глобальный класс (ViewEncapsulation.None). */
120
- &__panel {
121
- width: 100%;
122
- max-height: var(--rt-input-panel-max-height);
123
- box-sizing: border-box;
124
- border: var(--rt-input-border-width) solid var(--rt-color-border-subtle);
125
- border-radius: var(--rt-input-radius);
126
- background-color: var(--rt-color-bg-surface);
127
- box-shadow: var(--rt-shadow-md);
128
- overflow-y: auto;
129
- }
107
+ &__icon-left,
108
+ &__clear {
109
+ flex-shrink: 0;
110
+ }
130
111
 
131
- &__filter {
132
- padding: var(--rt-space-sm);
133
- border-block-end: var(--rt-input-border-width) solid var(--rt-color-border-subtle);
134
- }
112
+ &__chevron {
113
+ flex-shrink: 0;
114
+ transition: transform var(--rt-select-caret-transition-duration) ease;
115
+ }
135
116
 
136
- &__list {
137
- padding: var(--rt-space-2xs) 0;
138
- margin: 0;
139
- list-style: none;
140
- }
117
+ &--open &__chevron {
118
+ transform: rotate(180deg);
119
+ }
141
120
 
142
- &__option {
143
- padding: var(--rt-space-sm) var(--rt-space-md);
144
- color: var(--rt-color-text-primary);
145
- cursor: pointer;
146
- font-size: var(--rt-input-font-size);
121
+ /* Panel рендерится в CDK Overlay (body) — позиционирование на CDK,
122
+ здесь только chrome. Глобальный класс (ViewEncapsulation.None). */
123
+ &__panel {
124
+ /* Панель рисуется в CDK Overlay, вне поддерева блока: свойство
125
+ объявляется на ней самой — с корня блока оно бы не докатилось. */
126
+ --rt-select-panel-shadow: var(--rt-shadow-md);
127
+
128
+ width: 100%;
129
+ max-height: var(--rt-input-panel-max-height);
130
+ box-sizing: border-box;
131
+ border: var(--rt-input-border-width) solid var(--rt-color-border-subtle);
132
+ border-radius: var(--rt-input-radius);
133
+ background-color: var(--rt-color-bg-surface);
134
+ box-shadow: var(--rt-select-panel-shadow);
135
+ overflow-y: auto;
136
+ }
147
137
 
148
- &:hover,
149
- &--active {
150
- background-color: var(--rt-color-bg-hover);
138
+ &__filter {
139
+ padding: var(--rt-space-sm);
140
+ border-block-end: var(--rt-input-border-width) solid var(--rt-color-border-subtle);
151
141
  }
152
142
 
153
- &--selected {
154
- background-color: var(--rt-color-action-primary-subtle);
155
- font-weight: var(--rt-font-weight-semibold);
143
+ &__list {
144
+ padding: var(--rt-space-2xs) 0;
145
+ margin: 0;
146
+ list-style: none;
156
147
  }
157
148
 
158
- &--disabled {
159
- cursor: not-allowed;
160
- opacity: var(--rt-input-disabled-opacity);
149
+ &__option {
150
+ padding: var(--rt-space-sm) var(--rt-space-md);
151
+ color: var(--rt-color-text-primary);
152
+ cursor: pointer;
153
+ font-size: var(--rt-input-font-size);
154
+
155
+ &:hover,
156
+ &--active {
157
+ background-color: var(--rt-color-bg-hover);
158
+ }
161
159
 
162
- &:hover {
163
- background-color: transparent;
160
+ &--selected {
161
+ background-color: var(--rt-color-action-primary-subtle);
162
+ font-weight: var(--rt-font-weight-semibold);
163
+ }
164
+
165
+ &--disabled {
166
+ cursor: not-allowed;
167
+ opacity: var(--rt-input-disabled-opacity);
168
+
169
+ &:hover {
170
+ background-color: transparent;
171
+ }
164
172
  }
165
173
  }
166
- }
167
174
 
168
- &__empty {
169
- padding: var(--rt-space-sm) var(--rt-space-md);
170
- color: var(--rt-input-color-text-placeholder);
171
- font-style: italic;
175
+ &__empty {
176
+ padding: var(--rt-space-sm) var(--rt-space-md);
177
+ color: var(--rt-input-color-text-placeholder);
178
+ font-style: italic;
179
+ }
172
180
  }
173
181
  }
@@ -1,56 +1,65 @@
1
- .rt-skeleton {
2
- --rt-skeleton-wave-duration: 2.5s;
1
+ @layer rt-kit.components {
2
+ .rt-skeleton {
3
+ --rt-skeleton-wave-duration: 2.5s;
4
+ --rt-skeleton-radius: var(--rt-radius-sm);
5
+ --rt-skeleton-circle-radius: var(--rt-radius-full);
3
6
 
4
- position: relative;
5
- display: inline-block;
6
- overflow: hidden;
7
- background: linear-gradient(90deg, var(--rt-color-bg-subtle) 0%, var(--rt-color-border-default) 50%, var(--rt-color-bg-subtle) 100%);
8
- background-size: 200% 100%;
7
+ position: relative;
8
+ display: inline-block;
9
+ overflow: hidden;
10
+ background: linear-gradient(
11
+ 90deg,
12
+ var(--rt-color-bg-subtle) 0%,
13
+ var(--rt-color-border-default) 50%,
14
+ var(--rt-color-bg-subtle) 100%
15
+ );
16
+ background-size: 200% 100%;
9
17
 
10
- &--rectangle {
11
- border-radius: var(--rt-radius-sm);
12
- }
18
+ &--rectangle {
19
+ border-radius: var(--rt-skeleton-radius);
20
+ }
13
21
 
14
- &--circle {
15
- border-radius: var(--rt-radius-full);
16
- }
22
+ &--circle {
23
+ border-radius: var(--rt-skeleton-circle-radius);
24
+ }
17
25
 
18
- &--square {
19
- border-radius: 0;
20
- }
26
+ &--square {
27
+ border-radius: 0;
28
+ }
21
29
 
22
- &--sm {
23
- min-width: 10px;
24
- min-height: 10px;
25
- }
30
+ &--sm {
31
+ min-width: 10px;
32
+ min-height: 10px;
33
+ }
26
34
 
27
- &--md {
28
- min-width: 15px;
29
- min-height: 15px;
30
- }
35
+ &--md {
36
+ min-width: 15px;
37
+ min-height: 15px;
38
+ }
31
39
 
32
- &--lg {
33
- min-width: 20px;
34
- min-height: 20px;
35
- }
40
+ &--lg {
41
+ min-width: 20px;
42
+ min-height: 20px;
43
+ }
36
44
 
37
- &--animated {
38
- animation: rt-skeleton-wave var(--rt-skeleton-wave-duration) ease-in-out infinite;
45
+ &--animated {
46
+ animation: rt-skeleton-wave var(--rt-skeleton-wave-duration) ease-in-out infinite;
47
+ }
39
48
  }
40
- }
41
49
 
42
- @keyframes rt-skeleton-wave {
43
- 0% {
44
- background-position: 200% 0;
45
- }
50
+ @keyframes rt-skeleton-wave {
51
+ 0% {
52
+ background-position: 200% 0;
53
+ }
46
54
 
47
- 100% {
48
- background-position: -200% 0;
55
+ 100% {
56
+ background-position: -200% 0;
57
+ }
49
58
  }
50
- }
51
59
 
52
- @media (prefers-reduced-motion: reduce) {
53
- .rt-skeleton--animated {
54
- animation: none;
60
+ @media (prefers-reduced-motion: reduce) {
61
+ .rt-skeleton--animated {
62
+ animation: none;
63
+ }
55
64
  }
56
65
  }
@@ -1,8 +1,10 @@
1
- /* rt-skeleton-wrapper — ViewEncapsulation.None: правило таргетирует BEM-класс блока.
2
- `.rt-skeleton-wrapper` — сам хост: своей разметки блока нет, внутри либо
3
- rt-skeleton, либо спроецированное содержимое. */
1
+ @layer rt-kit.components {
2
+ /* rt-skeleton-wrapper — ViewEncapsulation.None: правило таргетирует BEM-класс блока.
3
+ `.rt-skeleton-wrapper` — сам хост: своей разметки блока нет, внутри либо
4
+ rt-skeleton, либо спроецированное содержимое. */
4
5
 
5
- .rt-skeleton-wrapper {
6
- display: inline-flex;
7
- width: 100%;
6
+ .rt-skeleton-wrapper {
7
+ display: inline-flex;
8
+ width: 100%;
9
+ }
8
10
  }
@@ -1,42 +1,45 @@
1
- .rt-spinner {
2
- --rt-spinner-diameter: 32px;
3
- --rt-spinner-border-width: 3px;
4
- --rt-spinner-track-color: var(--rt-color-border-subtle);
5
- --rt-spinner-progress-color: var(--rt-color-action-primary);
6
- --rt-spinner-rotation-duration: 1s;
7
- --rt-spinner-rotation-duration-reduced: 4s;
1
+ @layer rt-kit.components {
2
+ .rt-spinner {
3
+ --rt-spinner-diameter: 32px;
4
+ --rt-spinner-border-width: 3px;
5
+ --rt-spinner-track-color: var(--rt-color-border-subtle);
6
+ --rt-spinner-progress-color: var(--rt-color-action-primary);
7
+ --rt-spinner-rotation-duration: 1s;
8
+ --rt-spinner-rotation-duration-reduced: 4s;
9
+ --rt-spinner-radius: var(--rt-radius-full);
8
10
 
9
- display: inline-block;
10
- width: var(--rt-spinner-diameter);
11
- height: var(--rt-spinner-diameter);
12
- box-sizing: border-box;
13
- border: var(--rt-spinner-border-width) solid var(--rt-spinner-track-color);
14
- border-radius: var(--rt-radius-full);
15
- border-right-color: var(--rt-spinner-progress-color);
16
- animation: rt-spinner-rotate var(--rt-spinner-rotation-duration) linear infinite;
11
+ display: inline-block;
12
+ width: var(--rt-spinner-diameter);
13
+ height: var(--rt-spinner-diameter);
14
+ box-sizing: border-box;
15
+ border: var(--rt-spinner-border-width) solid var(--rt-spinner-track-color);
16
+ border-radius: var(--rt-spinner-radius);
17
+ border-right-color: var(--rt-spinner-progress-color);
18
+ animation: rt-spinner-rotate var(--rt-spinner-rotation-duration) linear infinite;
17
19
 
18
- &--primary {
19
- --rt-spinner-progress-color: var(--rt-color-action-primary);
20
- }
20
+ &--primary {
21
+ --rt-spinner-progress-color: var(--rt-color-action-primary);
22
+ }
21
23
 
22
- &--neutral {
23
- --rt-spinner-progress-color: var(--rt-color-text-primary);
24
- }
24
+ &--neutral {
25
+ --rt-spinner-progress-color: var(--rt-color-text-primary);
26
+ }
25
27
 
26
- &--on-primary {
27
- --rt-spinner-track-color: rgb(255 255 255 / 30%);
28
- --rt-spinner-progress-color: var(--rt-color-action-on-primary);
28
+ &--on-primary {
29
+ --rt-spinner-track-color: var(--rt-overlay-white-25);
30
+ --rt-spinner-progress-color: var(--rt-color-action-on-primary);
31
+ }
29
32
  }
30
- }
31
33
 
32
- @keyframes rt-spinner-rotate {
33
- to {
34
- transform: rotate(1turn);
34
+ @keyframes rt-spinner-rotate {
35
+ to {
36
+ transform: rotate(1turn);
37
+ }
35
38
  }
36
- }
37
39
 
38
- @media (prefers-reduced-motion: reduce) {
39
- .rt-spinner {
40
- animation-duration: var(--rt-spinner-rotation-duration-reduced);
40
+ @media (prefers-reduced-motion: reduce) {
41
+ .rt-spinner {
42
+ animation-duration: var(--rt-spinner-rotation-duration-reduced);
43
+ }
41
44
  }
42
45
  }