@rt-tools/ui-kit 0.4.0 → 0.5.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 (27) hide show
  1. package/README.md +1 -1
  2. package/fesm2022/rt-tools-ui-kit.mjs +3500 -3105
  3. package/fesm2022/rt-tools-ui-kit.mjs.map +1 -1
  4. package/package.json +3 -4
  5. package/rt-tools-ui-kit-0.5.0.tgz +0 -0
  6. package/src/lib/ui-kit/action-bar/components/container/rtui-action-bar-container.component.scss +47 -0
  7. package/src/lib/ui-kit/action-bar/stories/component/test-action-bar.component.scss +15 -0
  8. package/src/lib/ui-kit/aside/components/container/aside-container.component.scss +4 -1
  9. package/src/lib/ui-kit/aside/components/panel/aside-panel.component.scss +24 -0
  10. package/src/lib/ui-kit/popover/stories/component/test-popover.component.scss +32 -0
  11. package/src/lib/ui-kit/scrollable/scrollable-container.component.scss +57 -0
  12. package/src/lib/ui-kit/scrollable/stories/component/test-scrollable.component.scss +17 -0
  13. package/src/lib/ui-kit/side-menu/menu/rtui-side-menu.component.scss +185 -4
  14. package/src/lib/ui-kit/side-menu/menu-sub-item/rtui-side-menu-sub-item.component.scss +45 -4
  15. package/src/lib/ui-kit/snack-bar/snack-bar.component.scss +20 -0
  16. package/src/lib/ui-kit/toolbar/stories/component/test-toolbar.component.scss +22 -0
  17. package/src/styles/base/_tokens.scss +5 -0
  18. package/src/styles/color-scheme.spec.ts +4 -1
  19. package/src/styles/components/_rtui_button.scss +13 -547
  20. package/src/styles/components/button/_base.scss +64 -0
  21. package/src/styles/components/button/_map.scss +184 -0
  22. package/src/styles/components/button/_palettes.scss +218 -0
  23. package/src/styles/components/button/_sizes.scss +29 -0
  24. package/src/styles/components/button/_text.scss +68 -0
  25. package/styles/tokens.css +2 -0
  26. package/types/rt-tools-ui-kit.d.ts +585 -449
  27. package/rt-tools-ui-kit-0.4.0.tgz +0 -0
@@ -0,0 +1,184 @@
1
+ // Виды кнопки таблицей: пятнадцать палитр по три оформления — сплошное, обводка и светлое —
2
+ // плюс основа и текстовые виды. Каждое правило берёт значения отсюда, а не пишет их у себя.
3
+ // Часть стилей кнопки — входом остаётся `_rtui_button.scss`, он же подключает части по порядку.
4
+
5
+ $rtui-button: (
6
+ base: (
7
+ width: auto,
8
+ bg: transparent,
9
+ border: 0,
10
+ color: var(--rt-text-base-soft),
11
+ display: inline-flex,
12
+ font-size: 0,
13
+ gap: 0,
14
+ padding: 0,
15
+ shadow: 0,
16
+ shadow-blur: 8px,
17
+ ),
18
+ accent: (
19
+ border: 1px solid var(--rt-color-blue-100),
20
+ color: var(--rt-text-static-light),
21
+ bg: var(--rt-color-blue-60),
22
+ hover-bg: var(--rt-color-blue-40),
23
+ active-shadow: var(--rt-color-blue-40),
24
+ ),
25
+ accent-outline: (
26
+ border: 1px solid var(--rt-color-blue-100),
27
+ bg: var(--rt-color-blue-20),
28
+ color: var(--rt-text-accent-info),
29
+ hover-border: 1px solid var(--rt-color-blue-80),
30
+ hover-bg: var(--rt-bg-base-base),
31
+ active-shadow: var(--rt-color-blue-40),
32
+ ),
33
+ accent-light: (
34
+ color: var(--rt-text-accent-info),
35
+ bg: var(--rt-color-blue-40),
36
+ hover-color: var(--rt-text-accent-info-soft),
37
+ hover-bg: var(--rt-color-blue-20),
38
+ active-shadow: var(--rt-color-blue-40),
39
+ ),
40
+ success: (
41
+ border: 1px solid var(--rt-color-green-100),
42
+ color: var(--rt-text-static-light),
43
+ bg: var(--rt-bg-accent-success-solid),
44
+ hover-bg: var(--rt-color-green-60),
45
+ active-shadow: var(--rt-color-green-40),
46
+ ),
47
+ success-outline: (
48
+ border: 1px solid var(--rt-color-green-100),
49
+ bg: var(--rt-color-green-20),
50
+ color: var(--rt-text-accent-success),
51
+ hover-border: 1px solid var(--rt-color-green-80),
52
+ hover-bg: var(--rt-bg-base-base),
53
+ active-shadow: var(--rt-color-green-40),
54
+ ),
55
+ success-light: (
56
+ color: var(--rt-text-accent-success),
57
+ bg: var(--rt-color-green-20),
58
+ hover-color: var(--rt-text-accent-success-soft),
59
+ hover-bg: var(--rt-bg-accent-success-subtle),
60
+ active-shadow: var(--rt-color-green-40),
61
+ ),
62
+ secondary: (
63
+ border: 1px solid var(--rt-border-neutral-emphasis),
64
+ color: var(--rt-text-static-light),
65
+ bg: var(--rt-bg-base-emphasis),
66
+ hover-bg: var(--rt-bg-base-emphasis-soft),
67
+ active-shadow: var(--rt-bg-base-emphasis-soft),
68
+ ),
69
+ secondary-outline: (
70
+ border: 1px solid var(--rt-border-neutral-emphasis),
71
+ bg: var(--rt-bg-base-strong),
72
+ color: var(--rt-text-base-secondary),
73
+ hover-bg: var(--rt-bg-base-base),
74
+ active-shadow: var(--rt-bg-base-emphasis-soft),
75
+ ),
76
+ secondary-light: (
77
+ color: var(--rt-text-base-soft),
78
+ bg: var(--rt-bg-base-emphasis-soft),
79
+ hover-color: var(--rt-text-base-secondary),
80
+ hover-bg: var(--rt-bg-base-strong),
81
+ active-shadow: var(--rt-bg-base-emphasis-soft),
82
+ ),
83
+ error: (
84
+ border: 1px solid var(--rt-border-accent-danger),
85
+ color: var(--rt-text-static-light),
86
+ bg: var(--rt-color-red-80),
87
+ hover-bg: var(--rt-color-red-60),
88
+ active-shadow: var(--rt-color-red-40),
89
+ ),
90
+ error-outline: (
91
+ border: 1px solid var(--rt-border-accent-danger),
92
+ bg: var(--rt-bg-accent-danger-subtle),
93
+ color: var(--rt-text-accent-danger),
94
+ hover-bg: var(--rt-bg-base-base),
95
+ active-shadow: var(--rt-color-red-40),
96
+ ),
97
+ error-light: (
98
+ color: var(--rt-text-accent-danger),
99
+ bg: var(--rt-color-red-40),
100
+ hover-bg: var(--rt-bg-accent-danger-subtle),
101
+ active-shadow: var(--rt-color-red-40),
102
+ ),
103
+ warning: (
104
+ border: 1px solid var(--rt-color-orange-100),
105
+ color: var(--rt-text-static-light),
106
+ bg: var(--rt-bg-accent-warning-solid),
107
+ hover-bg: var(--rt-color-orange-60),
108
+ active-shadow: var(--rt-color-orange-40),
109
+ ),
110
+ warning-outline: (
111
+ border: 1px solid var(--rt-color-orange-100),
112
+ bg: var(--rt-color-orange-10),
113
+ color: var(--rt-text-accent-warning),
114
+ hover-bg: var(--rt-bg-base-base),
115
+ active-shadow: var(--rt-color-orange-40),
116
+ ),
117
+ warning-light: (
118
+ color: var(--rt-text-accent-warning),
119
+ bg: var(--rt-color-orange-10),
120
+ hover-bg: var(--rt-color-orange-5),
121
+ active-shadow: var(--rt-color-orange-40),
122
+ ),
123
+ accent-text: (
124
+ border: 0,
125
+ bg: transparent,
126
+ color: var(--rt-text-accent-info),
127
+ hover-bg: var(--rt-bg-base-hover),
128
+ ),
129
+ success-text: (
130
+ border: 0,
131
+ bg: transparent,
132
+ color: var(--rt-text-accent-success),
133
+ hover-bg: var(--rt-bg-base-hover),
134
+ ),
135
+ secondary-text: (
136
+ border: 0,
137
+ bg: transparent,
138
+ color: var(--rt-text-base-secondary),
139
+ hover-bg: var(--rt-bg-base-hover),
140
+ ),
141
+ error-text: (
142
+ border: 0,
143
+ bg: transparent,
144
+ color: var(--rt-text-accent-danger),
145
+ hover-bg: var(--rt-bg-base-hover),
146
+ ),
147
+ warning-text: (
148
+ border: 0,
149
+ bg: transparent,
150
+ color: var(--rt-text-accent-warning),
151
+ hover-bg: var(--rt-bg-base-hover),
152
+ ),
153
+ size-sm: (
154
+ gap: 4px,
155
+ padding: 4px 8px,
156
+ font-size: 12px,
157
+ width: auto,
158
+ display: inline-flex,
159
+ ),
160
+
161
+ size-md: (
162
+ gap: 8px,
163
+ padding: 8px 16px,
164
+ font-size: 14px,
165
+ width: auto,
166
+ display: inline-flex,
167
+ ),
168
+
169
+ size-lg: (
170
+ gap: 12px,
171
+ padding: 12px 24px,
172
+ font-size: 18px,
173
+ width: auto,
174
+ display: inline-flex,
175
+ ),
176
+
177
+ size-full: (
178
+ width: 100%,
179
+ display: flex,
180
+ gap: 8px,
181
+ padding: 8px 16px,
182
+ font-size: 14px,
183
+ ),
184
+ );
@@ -0,0 +1,218 @@
1
+ // Палитры кнопки: пятнадцать классов вида — сплошное оформление, обводка и светлое у каждой из
2
+ // пяти ролей. Каждый класс только переназначает свойства основы.
3
+ // Часть стилей кнопки — входом остаётся `_rtui_button.scss`.
4
+
5
+ /* accent */
6
+ .rtui-btn-accent {
7
+ --border: var(--rt-rtui-btn-accent-border);
8
+ --color: var(--rt-rtui-btn-accent-color);
9
+ --bg: var(--rt-rtui-btn-accent-bg);
10
+
11
+ &:hover {
12
+ --bg: var(--rt-rtui-btn-accent-hover-bg);
13
+ }
14
+
15
+ &:active {
16
+ --shadow: var(--rt-rtui-btn-accent-active-shadow);
17
+ }
18
+ }
19
+
20
+ .rtui-btn-accent-outline {
21
+ --border: var(--rt-rtui-btn-accent-outline-border);
22
+ --bg: var(--rt-rtui-btn-accent-outline-bg);
23
+ --color: var(--rt-rtui-btn-accent-outline-color);
24
+
25
+ &:hover {
26
+ --border: var(--rt-rtui-btn-accent-outline-hover-border);
27
+ --bg: var(--rt-rtui-btn-accent-outline-hover-bg);
28
+ }
29
+
30
+ &:active {
31
+ --shadow: var(--rt-rtui-btn-accent-outline-active-shadow);
32
+ }
33
+ }
34
+
35
+ .rtui-btn-accent-light {
36
+ --color: var(--rt-rtui-btn-accent-light-color);
37
+ --bg: var(--rt-rtui-btn-accent-light-bg);
38
+
39
+ &:hover {
40
+ --color: var(--rt-rtui-btn-accent-light-hover-color);
41
+ --bg: var(--rt-rtui-btn-accent-light-hover-bg);
42
+ }
43
+
44
+ &:active {
45
+ --shadow: var(--rt-rtui-btn-accent-light-active-shadow);
46
+ }
47
+ }
48
+
49
+ /* success */
50
+ .rtui-btn-success {
51
+ --border: var(--rt-rtui-btn-success-border);
52
+ --color: var(--rt-rtui-btn-success-color);
53
+ --bg: var(--rt-rtui-btn-success-bg);
54
+
55
+ &:hover {
56
+ --bg: var(--rt-rtui-btn-success-hover-bg);
57
+ }
58
+
59
+ &:active {
60
+ --shadow: var(--rt-rtui-btn-success-active-shadow);
61
+ }
62
+ }
63
+
64
+ .rtui-btn-success-outline {
65
+ --border: var(--rt-rtui-btn-success-outline-border);
66
+ --bg: var(--rt-rtui-btn-success-outline-bg);
67
+ --color: var(--rt-rtui-btn-success-outline-color);
68
+
69
+ &:hover {
70
+ --border: var(--rt-rtui-btn-success-outline-hover-border);
71
+ --bg: var(--rt-rtui-btn-success-outline-hover-bg);
72
+ }
73
+
74
+ &:active {
75
+ --shadow: var(--rt-rtui-btn-success-outline-active-shadow);
76
+ }
77
+ }
78
+
79
+ .rtui-btn-success-light {
80
+ --color: var(--rt-rtui-btn-success-light-color);
81
+ --bg: var(--rt-rtui-btn-success-light-bg);
82
+
83
+ &:hover {
84
+ --color: var(--rt-rtui-btn-success-light-hover-color);
85
+ --bg: var(--rt-rtui-btn-success-light-hover-bg);
86
+ }
87
+
88
+ &:active {
89
+ --shadow: var(--rt-rtui-btn-success-light-active-shadow);
90
+ }
91
+ }
92
+
93
+ /* secondary */
94
+ .rtui-btn-secondary {
95
+ --border: var(--rt-rtui-btn-secondary-border);
96
+ --color: var(--rt-rtui-btn-secondary-color);
97
+ --bg: var(--rt-rtui-btn-secondary-bg);
98
+
99
+ &:hover {
100
+ --bg: var(--rt-rtui-btn-secondary-hover-bg);
101
+ }
102
+
103
+ &:active {
104
+ --shadow: var(--rt-rtui-btn-secondary-active-shadow);
105
+ }
106
+ }
107
+
108
+ .rtui-btn-secondary-outline {
109
+ --border: var(--rt-rtui-btn-secondary-outline-border);
110
+ --bg: var(--rt-rtui-btn-secondary-outline-bg);
111
+ --color: var(--rt-rtui-btn-secondary-outline-color);
112
+
113
+ &:hover {
114
+ --bg: var(--rt-rtui-btn-secondary-outline-hover-bg);
115
+ }
116
+
117
+ &:active {
118
+ --shadow: var(--rt-rtui-btn-secondary-outline-active-shadow);
119
+ }
120
+ }
121
+
122
+ .rtui-btn-secondary-light {
123
+ --color: var(--rt-rtui-btn-secondary-light-color);
124
+ --bg: var(--rt-rtui-btn-secondary-light-bg);
125
+
126
+ &:hover {
127
+ --color: var(--rt-rtui-btn-secondary-light-hover-color);
128
+ --bg: var(--rt-rtui-btn-secondary-light-hover-bg);
129
+ }
130
+
131
+ &:active {
132
+ --shadow: var(--rt-rtui-btn-secondary-light-active-shadow);
133
+ }
134
+ }
135
+
136
+ /* error */
137
+ .rtui-btn-error {
138
+ --border: var(--rt-rtui-btn-error-border);
139
+ --color: var(--rt-rtui-btn-error-color);
140
+ --bg: var(--rt-rtui-btn-error-bg);
141
+
142
+ &:hover {
143
+ --bg: var(--rt-rtui-btn-error-hover-bg);
144
+ }
145
+
146
+ &:active {
147
+ --shadow: var(--rt-rtui-btn-error-active-shadow);
148
+ }
149
+ }
150
+
151
+ .rtui-btn-error-outline {
152
+ --border: var(--rt-rtui-btn-error-outline-border);
153
+ --bg: var(--rt-rtui-btn-error-outline-bg);
154
+ --color: var(--rt-rtui-btn-error-outline-color);
155
+
156
+ &:hover {
157
+ --bg: var(--rt-rtui-btn-error-outline-hover-bg);
158
+ }
159
+
160
+ &:active {
161
+ --shadow: var(--rt-rtui-btn-error-outline-active-shadow);
162
+ }
163
+ }
164
+
165
+ .rtui-btn-error-light {
166
+ --color: var(--rt-rtui-btn-error-light-color);
167
+ --bg: var(--rt-rtui-btn-error-light-bg);
168
+
169
+ &:hover {
170
+ --bg: var(--rt-rtui-btn-error-light-hover-bg);
171
+ }
172
+
173
+ &:active {
174
+ --shadow: var(--rt-rtui-btn-error-light-active-shadow);
175
+ }
176
+ }
177
+
178
+ /* warning */
179
+ .rtui-btn-warning {
180
+ --border: var(--rt-rtui-btn-warning-border);
181
+ --color: var(--rt-rtui-btn-warning-color);
182
+ --bg: var(--rt-rtui-btn-warning-bg);
183
+
184
+ &:hover {
185
+ --bg: var(--rt-rtui-btn-warning-hover-bg);
186
+ }
187
+
188
+ &:active {
189
+ --shadow: var(--rt-rtui-btn-warning-active-shadow);
190
+ }
191
+ }
192
+
193
+ .rtui-btn-warning-outline {
194
+ --border: var(--rt-rtui-btn-warning-outline-border);
195
+ --bg: var(--rt-rtui-btn-warning-outline-bg);
196
+ --color: var(--rt-rtui-btn-warning-outline-color);
197
+
198
+ &:hover {
199
+ --bg: var(--rt-rtui-btn-warning-outline-hover-bg);
200
+ }
201
+
202
+ &:active {
203
+ --shadow: var(--rt-rtui-btn-warning-outline-active-shadow);
204
+ }
205
+ }
206
+
207
+ .rtui-btn-warning-light {
208
+ --color: var(--rt-rtui-btn-warning-light-color);
209
+ --bg: var(--rt-rtui-btn-warning-light-bg);
210
+
211
+ &:hover {
212
+ --bg: var(--rt-rtui-btn-warning-light-hover-bg);
213
+ }
214
+
215
+ &:active {
216
+ --shadow: var(--rt-rtui-btn-warning-light-active-shadow);
217
+ }
218
+ }
@@ -0,0 +1,29 @@
1
+ // Размеры кнопки и её растяжение по ширине родителя.
2
+ // Часть стилей кнопки — входом остаётся `_rtui_button.scss`.
3
+
4
+ /* size */
5
+ .rtui-btn-sm {
6
+ --gap: var(--rt-rtui-btn-size-sm-gap);
7
+ --padding: var(--rt-rtui-btn-size-sm-padding);
8
+ --font-size: var(--rt-rtui-btn-size-sm-font-size);
9
+ }
10
+
11
+ .rtui-btn-md {
12
+ --gap: var(--rt-rtui-btn-size-md-gap);
13
+ --padding: var(--rt-rtui-btn-size-md-padding);
14
+ --font-size: var(--rt-rtui-btn-size-md-font-size);
15
+ }
16
+
17
+ .rtui-btn-lg {
18
+ --gap: var(--rt-rtui-btn-size-lg-gap);
19
+ --padding: var(--rt-rtui-btn-size-lg-padding);
20
+ --font-size: var(--rt-rtui-btn-size-lg-font-size);
21
+ }
22
+
23
+ .rtui-btn-full {
24
+ --width: var(--rt-rtui-btn-size-full-width);
25
+ --display: var(--rt-rtui-btn-size-full-display);
26
+ --gap: var(--rt-rtui-btn-size-full-gap);
27
+ --padding: var(--rt-rtui-btn-size-full-padding);
28
+ --font-size: var(--rt-rtui-btn-size-full-font-size);
29
+ }
@@ -0,0 +1,68 @@
1
+ // Текстовые виды кнопки: оформление без фона и рамки. Стоят после палитр намеренно — правила
2
+ // равной силы разбираются порядком, и вид без фона обязан перебивать сплошной.
3
+ // Часть стилей кнопки — входом остаётся `_rtui_button.scss`.
4
+
5
+ /* text — transparent, borderless label with a subtle hover wash.
6
+ Shared box matches the legacy text-button (inline-text look). Compound
7
+ `.rtui-btn[...-text]` (0,2,0) outranks the size tokens (0,1,0) regardless of order. */
8
+ .rtui-btn[class*='-text'] {
9
+ --font-size: 16px;
10
+ --gap: 8px;
11
+ --padding: 0 10px;
12
+
13
+ min-height: 30px;
14
+ border-radius: 5px;
15
+ font-weight: 400;
16
+ }
17
+
18
+ .rtui-btn-accent-text {
19
+ --border: var(--rt-rtui-btn-accent-text-border);
20
+ --bg: var(--rt-rtui-btn-accent-text-bg);
21
+ --color: var(--rt-rtui-btn-accent-text-color);
22
+
23
+ &:hover {
24
+ --bg: var(--rt-rtui-btn-accent-text-hover-bg);
25
+ }
26
+ }
27
+
28
+ .rtui-btn-success-text {
29
+ --border: var(--rt-rtui-btn-success-text-border);
30
+ --bg: var(--rt-rtui-btn-success-text-bg);
31
+ --color: var(--rt-rtui-btn-success-text-color);
32
+
33
+ &:hover {
34
+ --bg: var(--rt-rtui-btn-success-text-hover-bg);
35
+ }
36
+ }
37
+
38
+ /* secondary-text resolves its colour ON the element so the `--rt-text-base-secondary`
39
+ semantic (`--mat-sys-on-surface-variant` hybrid) lands where Material is in scope. */
40
+ .rtui-btn-secondary-text {
41
+ --border: var(--rt-rtui-btn-secondary-text-border);
42
+ --bg: var(--rt-rtui-btn-secondary-text-bg);
43
+ --color: var(--mat-sys-on-surface-variant, var(--rt-rtui-btn-secondary-text-color));
44
+
45
+ &:hover {
46
+ --bg: var(--rt-rtui-btn-secondary-text-hover-bg);
47
+ }
48
+ }
49
+
50
+ .rtui-btn-error-text {
51
+ --border: var(--rt-rtui-btn-error-text-border);
52
+ --bg: var(--rt-rtui-btn-error-text-bg);
53
+ --color: var(--rt-rtui-btn-error-text-color);
54
+
55
+ &:hover {
56
+ --bg: var(--rt-rtui-btn-error-text-hover-bg);
57
+ }
58
+ }
59
+
60
+ .rtui-btn-warning-text {
61
+ --border: var(--rt-rtui-btn-warning-text-border);
62
+ --bg: var(--rt-rtui-btn-warning-text-bg);
63
+ --color: var(--rt-rtui-btn-warning-text-color);
64
+
65
+ &:hover {
66
+ --bg: var(--rt-rtui-btn-warning-text-hover-bg);
67
+ }
68
+ }
package/styles/tokens.css CHANGED
@@ -174,6 +174,8 @@
174
174
  --rt-bg-accent-warning-solid: var(--rt-color-warning-80);
175
175
  --rt-bg-accent-warning-hover: light-dark(color-mix(in srgb, var(--rt-color-warning-80) 90%, #000), color-mix(in srgb, var(--rt-color-warning-80) 90%, #fff));
176
176
  --rt-bg-accent-warning-disabled: color-mix(in srgb, var(--rt-color-warning-80) 38%, transparent);
177
+ --rt-bg-accent-highlight: light-dark(#ffeb3b, #ffd54f);
178
+ --rt-text-accent-highlight: #181818;
177
179
  --rt-bg-accent-danger-subtle: light-dark(var(--rt-color-danger-10), color-mix(in srgb, var(--rt-color-danger-100) 18%, #1c1b1e));
178
180
  --rt-bg-accent-danger-solid: var(--rt-color-danger-100);
179
181
  --rt-bg-accent-danger-hover: light-dark(color-mix(in srgb, var(--rt-color-danger-100) 90%, #000), color-mix(in srgb, var(--rt-color-danger-100) 90%, #fff));