@rt-tools/ui-kit 0.0.19 → 0.0.21

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 (71) hide show
  1. package/fesm2022/rt-tools-ui-kit.mjs +338 -144
  2. package/fesm2022/rt-tools-ui-kit.mjs.map +1 -1
  3. package/package.json +5 -5
  4. package/rt-tools-ui-kit-0.0.21.tgz +0 -0
  5. package/src/lib/ui-kit/action-bar/components/bar/rtui-action-bar.component.scss +18 -18
  6. package/src/lib/ui-kit/action-bar/components/container/rtui-action-bar-container.component.scss +5 -7
  7. package/src/lib/ui-kit/aside/components/container/aside-container.component.scss +1 -0
  8. package/src/lib/ui-kit/aside/components/error-notification/aside-error-box.component.scss +6 -6
  9. package/src/lib/ui-kit/aside/components/panel/aside-panel.component.scss +25 -32
  10. package/src/lib/ui-kit/aside/stories/aside-component/test-aside.component.scss +1 -1
  11. package/src/lib/ui-kit/buttons/multi-button/rtui-multi-button.component.scss +7 -7
  12. package/src/lib/ui-kit/buttons/unified-button/rtui-button.component.scss +247 -0
  13. package/src/lib/ui-kit/checkbox/rtui-checkbox.component.scss +10 -10
  14. package/src/lib/ui-kit/checkbox/stories/component/test-checkbox.component.scss +2 -2
  15. package/src/lib/ui-kit/dynamic-selectors/components/actions/rtui-dynamic-selector-list-actions.component.scss +2 -2
  16. package/src/lib/ui-kit/dynamic-selectors/components/dynamic-selector/rtui-dynamic-selector.component.scss +3 -3
  17. package/src/lib/ui-kit/dynamic-selectors/components/multi-selector-popup/rtui-multi-selector-popup.component.scss +17 -17
  18. package/src/lib/ui-kit/dynamic-selectors/components/placeholder/rtui-dynamic-selector-placeholder.component.scss +3 -4
  19. package/src/lib/ui-kit/dynamic-selectors/components/selected-list/rtui-dynamic-selector-selected-list.component.scss +2 -2
  20. package/src/lib/ui-kit/dynamic-selectors/strories/component/input/test-dynamic-input.component.scss +2 -3
  21. package/src/lib/ui-kit/dynamic-selectors/strories/component/selector/test-selector.component.scss +4 -5
  22. package/src/lib/ui-kit/file-uploader/rtui-file-upload.component.scss +5 -5
  23. package/src/lib/ui-kit/file-uploader/stories/component/test-file-upload.component.scss +1 -1
  24. package/src/lib/ui-kit/header/header.component.scss +1 -0
  25. package/src/lib/ui-kit/header/stories/component/test-header.component.scss +3 -3
  26. package/src/lib/ui-kit/icon/rtui-icon.component.scss +110 -0
  27. package/src/lib/ui-kit/image-uploader/image-uploader/rtui-image-upload.component.scss +5 -5
  28. package/src/lib/ui-kit/image-uploader/stories/component/test-image-upload.component.scss +2 -2
  29. package/src/lib/ui-kit/info-badge/info-badge.component.scss +20 -19
  30. package/src/lib/ui-kit/info-badge/stories/component/test-info-badge/test-info-badge.component.scss +1 -1
  31. package/src/lib/ui-kit/modal/modal.component.scss +5 -5
  32. package/src/lib/ui-kit/popover/rtui-popover-container.component.scss +2 -3
  33. package/src/lib/ui-kit/scrollable/scrollable-container.component.scss +3 -5
  34. package/src/lib/ui-kit/side-menu/menu/rtui-side-menu.component.scss +25 -25
  35. package/src/lib/ui-kit/side-menu/menu-sub-item/rtui-side-menu-sub-item.component.scss +14 -14
  36. package/src/lib/ui-kit/side-menu/stories/component/test-side-menu-wrapper.component.scss +10 -10
  37. package/src/lib/ui-kit/snack-bar/snack-bar.component.scss +9 -9
  38. package/src/lib/ui-kit/snack-bar/stories/component/test-snack-bar.component.scss +3 -3
  39. package/src/lib/ui-kit/spinner/spinner.component.scss +10 -13
  40. package/src/lib/ui-kit/table/components/clear-search-button/rtui-clear-button.component.scss +5 -5
  41. package/src/lib/ui-kit/table/components/pagination-view/rtui-pagination.component.scss +14 -22
  42. package/src/lib/ui-kit/table/components/table-base-cell/table-base-cell.component.scss +8 -9
  43. package/src/lib/ui-kit/table/components/table-config-aside/rt-table-config-aside.component.scss +1 -1
  44. package/src/lib/ui-kit/table/components/table-container/table-container.component.scss +16 -14
  45. package/src/lib/ui-kit/table/components/table-header-cell/table-header-cell.component.scss +6 -7
  46. package/src/lib/ui-kit/table/components/table-header-filter-cell/table-header-filter-cell.component.scss +3 -3
  47. package/src/lib/ui-kit/table/dynamic-list.component.scss +2 -2
  48. package/src/lib/ui-kit/table/stories/dynamic-list/test-dynamic-list.component.scss +1 -1
  49. package/src/lib/ui-kit/table/stories/pagination/test-pagination-component.scss +4 -4
  50. package/src/lib/ui-kit/table/stories/table/test-table-component.scss +1 -1
  51. package/src/lib/ui-kit/toggle/rtui-toggle.component.scss +15 -21
  52. package/src/lib/ui-kit/toggle/stories/component/test-toggle.component.scss +2 -2
  53. package/src/lib/ui-kit/toolbar/toolbar.component.scss +5 -10
  54. package/src/styles/TOKENS.md +95 -2
  55. package/src/styles/base/_base.scss +4 -5
  56. package/src/styles/base/_color-scheme.scss +86 -0
  57. package/src/styles/base/_mixin.scss +12 -15
  58. package/src/styles/base/_tokens.scss +139 -99
  59. package/src/styles/base/_variables.scss +5 -11
  60. package/src/styles/color-scheme.spec.ts +236 -0
  61. package/src/styles/components/_button.scss +32 -24
  62. package/src/styles/components/_dynamic-selectors.scss +9 -10
  63. package/src/styles/components/_form.scss +8 -13
  64. package/src/styles/components/_material-bridge.scss +30 -0
  65. package/src/styles/components/_rtui_button.scss +100 -5
  66. package/src/styles/components/_table.scss +23 -39
  67. package/src/styles/main.scss +4 -0
  68. package/styles/tokens.css +79 -101
  69. package/types/rt-tools-ui-kit.d.ts +99 -37
  70. package/rt-tools-ui-kit-0.0.19.tgz +0 -0
  71. package/src/lib/ui-kit/buttons/icon-round/rtui-round-icon-button.component.scss +0 -44
package/package.json CHANGED
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "@rt-tools/ui-kit",
3
- "version": "0.0.19",
3
+ "version": "0.0.21",
4
4
  "license": "Apache-2.0",
5
5
  "author": "Yauheni Krumin",
6
6
  "type": "module",
7
7
  "dependencies": {
8
8
  "tslib": "^2.8.0",
9
- "@rt-tools/core": "^0.0.3",
10
- "@rt-tools/store": "^0.0.4",
9
+ "@rt-tools/core": "^0.0.4",
10
+ "@rt-tools/store": "^0.0.5",
11
11
  "@rt-tools/utils": "^0.0.6"
12
12
  },
13
13
  "peerDependencies": {
14
- "@rt-tools/core": "^0.0.3",
15
- "@rt-tools/store": "^0.0.4",
14
+ "@rt-tools/core": "^0.0.4",
15
+ "@rt-tools/store": "^0.0.5",
16
16
  "@rt-tools/utils": "^0.0.6",
17
17
  "@angular/animations": "^21.0.0",
18
18
  "@angular/cdk": "^21.0.0",
Binary file
@@ -2,15 +2,15 @@
2
2
  @use '../../../../../styles/base/variables' as vars;
3
3
 
4
4
  .rtui-action-bar {
5
- width: var(--rt-action-bar-bar-width);
6
5
  display: flex;
6
+ width: var(--rt-action-bar-bar-width);
7
7
  align-items: center;
8
- gap: var(--rt-action-bar-bar-gap);
9
8
  padding: var(--rt-action-bar-bar-padding);
10
9
  border-radius: var(--rt-action-bar-bar-border-radius);
11
- color: var(--rt-action-bar-bar-color);
12
10
  background-color: var(--rt-action-bar-bar-background-color);
13
11
  box-shadow: var(--rt-action-bar-bar-box-shadow);
12
+ color: var(--rt-action-bar-bar-color);
13
+ gap: var(--rt-action-bar-bar-gap);
14
14
 
15
15
  &__counter {
16
16
  font-size: var(--rt-action-bar-counter-font-size);
@@ -24,14 +24,14 @@
24
24
 
25
25
  &__action {
26
26
  display: flex;
27
- justify-content: center;
28
27
  align-items: center;
29
- gap: var(--rt-action-bar-action-gap);
30
- font-size: var(--rt-action-bar-action-font-size);
31
- font-weight: var(--rt-action-bar-action-font-weight);
28
+ justify-content: center;
32
29
  padding: var(--rt-action-bar-action-padding);
33
30
  border-radius: var(--rt-action-bar-action-border-radius);
34
31
  cursor: pointer;
32
+ font-size: var(--rt-action-bar-action-font-size);
33
+ font-weight: var(--rt-action-bar-action-font-weight);
34
+ gap: var(--rt-action-bar-action-gap);
35
35
 
36
36
  &:hover {
37
37
  background-color: var(--rt-action-bar-action-hover-background-color);
@@ -39,8 +39,8 @@
39
39
  }
40
40
 
41
41
  &__close-button {
42
- cursor: pointer;
43
42
  margin-left: auto;
43
+ cursor: pointer;
44
44
 
45
45
  svg {
46
46
  transition: transform 0.2s ease;
@@ -52,16 +52,16 @@
52
52
  }
53
53
 
54
54
  @include mixins.media-breakpoint-down(vars.$device-md) {
55
- gap: var(--rt-action-bar-bar-mobile-gap);
56
55
  padding: var(--rt-action-bar-bar-mobile-padding);
56
+ gap: var(--rt-action-bar-bar-mobile-gap);
57
57
 
58
58
  &__actions {
59
59
  gap: var(--rt-action-bar-actions-mobile-gap);
60
60
  }
61
61
 
62
62
  &__action {
63
- gap: var(--rt-action-bar-action-mobile-gap);
64
63
  padding: var(--rt-action-bar-action-mobile-padding);
64
+ gap: var(--rt-action-bar-action-mobile-gap);
65
65
  }
66
66
  }
67
67
  }
@@ -69,23 +69,23 @@
69
69
  .rtui-action-bar-action-menu {
70
70
  display: flex;
71
71
  flex-direction: column;
72
- gap: var(--rt-action-bar-action-menu-gap);
73
72
  padding: var(--rt-action-bar-action-menu-padding);
74
73
  border-radius: var(--rt-action-bar-action-border-radius);
75
- color: var(--rt-action-bar-action-menu-color);
76
74
  background-color: var(--rt-action-bar-action-menu-background-color);
77
75
  box-shadow: var(--rt-action-bar-action-menu-box-shadow);
76
+ color: var(--rt-action-bar-action-menu-color);
77
+ gap: var(--rt-action-bar-action-menu-gap);
78
78
 
79
79
  &__action {
80
80
  display: flex;
81
- justify-content: center;
82
81
  align-items: center;
83
- gap: var(--rt-action-bar-action-menu-action-gap);
82
+ justify-content: center;
84
83
  padding: var(--rt-action-bar-action-menu-action-padding);
85
- font-size: var(--rt-action-bar-action-menu-action-font-size);
86
- font-weight: var(--rt-action-bar-action-menu-action-font-weight);
87
84
  border-radius: var(--rt-action-bar-action-menu-action-border-radius);
88
85
  cursor: pointer;
86
+ font-size: var(--rt-action-bar-action-menu-action-font-size);
87
+ font-weight: var(--rt-action-bar-action-menu-action-font-weight);
88
+ gap: var(--rt-action-bar-action-menu-action-gap);
89
89
 
90
90
  &:hover {
91
91
  background-color: var(--rt-action-bar-action-menu-action-hover-background-color);
@@ -93,12 +93,12 @@
93
93
  }
94
94
 
95
95
  @include mixins.media-breakpoint-down(vars.$device-md) {
96
- gap: var(--rt-action-bar-action-menu-action-mobile-gap);
97
96
  padding: var(--rt-action-bar-action-menu-action-mobile-padding);
97
+ gap: var(--rt-action-bar-action-menu-action-mobile-gap);
98
98
 
99
99
  &__action {
100
- gap: var(--rt-action-bar-action-menu-action-mobile-gap);
101
100
  padding: var(--rt-action-bar-action-menu-action-mobile-padding);
101
+ gap: var(--rt-action-bar-action-menu-action-mobile-gap);
102
102
  }
103
103
  }
104
104
  }
@@ -1,12 +1,10 @@
1
1
  :host {
2
- width: var(--rt-action-bar-container-width);
3
2
  position: fixed;
4
- top: var(--rt-action-bar-container-top);
5
- bottom: var(--rt-action-bar-container-bottom);
6
- left: var(--rt-action-bar-container-left);
7
- right: var(--rt-action-bar-container-right);
3
+ z-index: var(--rt-action-bar-container-z-index);
8
4
  display: flex;
9
- justify-content: center;
5
+ width: var(--rt-action-bar-container-width);
10
6
  align-items: center;
11
- z-index: var(--rt-action-bar-container-z-index);
7
+ justify-content: center;
8
+ inset: var(--rt-action-bar-container-top) var(--rt-action-bar-container-right) var(--rt-action-bar-container-bottom)
9
+ var(--rt-action-bar-container-left);
12
10
  }
@@ -3,6 +3,7 @@
3
3
  --rt-scrollable-header-padding: 0;
4
4
  --rt-scrollable-content-padding: 0;
5
5
  --rt-scrollable-footer-padding: 0;
6
+
6
7
  // TODO: fix styles affect x-scroll
7
8
  --rt-scrollable-content-flex-direction: row;
8
9
 
@@ -4,28 +4,28 @@
4
4
 
5
5
  .aside-error-box {
6
6
  display: flex;
7
- justify-content: space-between;
8
- align-items: center;
9
7
  width: 100%;
10
8
  height: var(--rt-aside-error-box-height);
9
+ align-items: center;
10
+ justify-content: space-between;
11
11
  padding: var(--rt-aside-error-box-padding);
12
- margin: var(--rt-aside-error-box-margin);
13
12
  border: var(--rt-aside-error-box-border);
14
13
  border-radius: var(--rt-aside-error-box-border-radius);
14
+ margin: var(--rt-aside-error-box-margin);
15
15
 
16
16
  &__title {
17
- font-size: var(--rt-aside-error-box-title-font-size);
18
17
  color: var(--rt-aside-error-box-title-font-color);
18
+ font-size: var(--rt-aside-error-box-title-font-size);
19
19
  }
20
20
 
21
21
  .aside-error-box-button {
22
22
  &__icon {
23
- margin-right: 0.5rem;
23
+ margin-right: var(--rt-spacing-8);
24
24
  }
25
25
 
26
26
  &__title {
27
- font-size: var(--rt-aside-error-box-button-font-size);
28
27
  color: var(--rt-aside-error-box-button-font-color);
28
+ font-size: var(--rt-aside-error-box-button-font-size);
29
29
  }
30
30
 
31
31
  &.--complete {
@@ -4,7 +4,7 @@
4
4
  $aside: (
5
5
  host: (
6
6
  width: 33.75rem,
7
- box-shadow: 0 0 1rem 0 rgba(#000, 0.1),
7
+ box-shadow: 0 0 1rem 0 var(--rt-color-dark-a10),
8
8
  background-color: var(--rt-bg-base-base),
9
9
  ),
10
10
  header: (
@@ -45,7 +45,7 @@ $aside: (
45
45
  ),
46
46
  footer: (
47
47
  padding: 2rem,
48
- margin-left-betwen-buttons: 1rem,
48
+ margin-left-between-buttons: 1rem,
49
49
  ),
50
50
  footer-mobile: (
51
51
  padding: 1rem,
@@ -76,22 +76,19 @@ $aside: (
76
76
  ),
77
77
  );
78
78
 
79
+ // NOTE: emitted at :root on purpose (ViewEncapsulation.None): consumers override
80
+ // these vars from ancestor scopes (e.g. a consumer's `.dark-mode { --rt-aside-host-background-color: … }`).
81
+ // Emitting at :host would set values on the element itself and silently win over
82
+ // inherited overrides — do not "fix" this to :host.
79
83
  :root {
80
84
  @each $element, $elements in $aside {
81
85
  @each $style-token, $value in $elements {
82
86
  #{mixins.generateCssVar('aside', #{$element}, #{$style-token})}: #{$value};
83
87
  }
84
88
  }
85
- }
86
89
 
87
- .cdk-overlay-container,
88
- .cdk-overlay-pane {
89
- z-index: 9999;
90
- }
91
-
92
- // TAB GROUP
93
- .mat-mdc-tab-group {
94
- width: 100%;
90
+ // @deprecated — typo kept as alias for backward compatibility; use *-between-* instead.
91
+ --rt-aside-footer-margin-left-betwen-buttons: var(--rt-aside-footer-margin-left-between-buttons);
95
92
  }
96
93
 
97
94
  // BADGE
@@ -100,8 +97,8 @@ $aside: (
100
97
  }
101
98
 
102
99
  .title-badge {
103
- margin-left: 0.25rem;
104
100
  top: -0.5rem;
101
+ margin-left: var(--rt-spacing-4);
105
102
  }
106
103
 
107
104
  .icon-badge,
@@ -121,12 +118,11 @@ $aside: (
121
118
  // ASIDE
122
119
  .c-aside {
123
120
  position: relative;
121
+ width: var(--rt-aside-host-width);
124
122
  height: 100vh;
125
123
  max-height: 100vh;
126
- width: var(--rt-aside-host-width);
127
-
128
- box-shadow: var(--rt-aside-host-box-shadow);
129
124
  background-color: var(--rt-aside-host-background-color);
125
+ box-shadow: var(--rt-aside-host-box-shadow);
130
126
 
131
127
  // TAB GROUP
132
128
  .mdc-tab-indicator__content.mdc-tab-indicator__content--underline {
@@ -147,38 +143,38 @@ $aside: (
147
143
  }
148
144
 
149
145
  .c-aside-title {
150
- height: 100%;
151
- width: 100%;
152
146
  display: flex;
147
+ width: 100%;
148
+ height: 100%;
153
149
  flex-direction: column;
154
- justify-content: center;
155
150
  align-items: flex-start;
151
+ justify-content: center;
156
152
 
157
153
  &__descr {
158
154
  margin-bottom: var(--rt-aside-header-description-margin-bottom);
159
- font-size: var(--rt-aside-header-description-font-size);
160
155
  color: var(--rt-aside-header-description-color);
156
+ font-size: var(--rt-aside-header-description-font-size);
161
157
  }
162
158
 
163
159
  &__txt {
164
160
  font-size: var(--rt-aside-header-title-font-size);
165
- line-height: var(--rt-aside-header-title-line-height);
166
161
  font-weight: var(--rt-aside-header-title-font-weight);
162
+ line-height: var(--rt-aside-header-title-line-height);
167
163
  }
168
164
 
169
165
  &__addition {
170
166
  margin-top: var(--rt-aside-header-addition-margin-top);
171
- font-size: var(--rt-aside-header-addition-font-size);
172
167
  color: var(--rt-aside-header-addition-color);
168
+ font-size: var(--rt-aside-header-addition-font-size);
173
169
  }
174
170
 
175
171
  &__descr,
176
172
  &__txt,
177
173
  &__addition {
178
- width: 100%;
179
- white-space: nowrap;
180
174
  overflow: hidden;
175
+ width: 100%;
181
176
  text-overflow: ellipsis;
177
+ white-space: nowrap;
182
178
  }
183
179
  }
184
180
 
@@ -196,21 +192,19 @@ $aside: (
196
192
  } // c-aside-header
197
193
 
198
194
  .c-aside-content {
199
- height: 100%;
200
- width: 100%;
201
-
202
195
  display: flex;
196
+ width: 100%;
197
+ height: 100%;
203
198
  flex-direction: column;
204
199
  align-items: center;
205
200
  justify-content: flex-start;
206
-
207
201
  padding: var(--rt-aside-content-padding);
208
202
 
209
203
  // Change mat tab group styles
210
204
  .mat-mdc-tab-header {
211
- top: 0;
212
- z-index: 1000;
213
205
  position: sticky;
206
+ z-index: 1000;
207
+ top: 0;
214
208
  background: var(--rt-bg-base-base);
215
209
  }
216
210
 
@@ -222,9 +216,8 @@ $aside: (
222
216
  // ASIDE FOOTER
223
217
  .c-aside-footer {
224
218
  display: flex;
225
- justify-content: flex-end;
226
219
  align-items: center;
227
-
220
+ justify-content: flex-end;
228
221
  padding: var(--rt-aside-footer-padding);
229
222
 
230
223
  .c-aside-footer-btn {
@@ -234,7 +227,7 @@ $aside: (
234
227
  }
235
228
 
236
229
  .c-aside-footer-btn + .c-aside-footer-btn {
237
- margin-left: var(--rt-aside-footer-margin-left-betwen-buttons);
230
+ margin-left: var(--rt-aside-footer-margin-left-between-buttons);
238
231
  }
239
232
 
240
233
  @include mixins.media-breakpoint-down(vars.$device-xs) {
@@ -1,4 +1,4 @@
1
1
  :host {
2
- height: 100%;
3
2
  width: 100%;
3
+ height: 100%;
4
4
  }
@@ -48,24 +48,24 @@ $rtui-multibutton: (
48
48
  .rtui-multibutton-actions {
49
49
  display: var(--rt-rtui-multibutton-base-display);
50
50
  flex-flow: var(--rt-rtui-multibutton-base-flex-flow);
51
- border-radius: var(--rt-rtui-multibutton-base-radius);
52
51
  padding: var(--rt-rtui-multibutton-base-padding);
52
+ border-radius: var(--rt-rtui-multibutton-base-radius);
53
53
  background-color: var(--rt-rtui-multibutton-base-background-color);
54
54
 
55
55
  &__action {
56
56
  padding: var(--rt-rtui-multibutton-action-base-padding);
57
- border-radius: var(--rt-rtui-multibutton-action-base-radius);
58
57
  border: var(--rt-rtui-multibutton-action-base-border);
58
+ border-radius: var(--rt-rtui-multibutton-action-base-radius);
59
+ background-color: var(--rt-rtui-multibutton-action-base-background-color);
60
+ color: var(--rt-rtui-multibutton-action-base-color);
61
+ cursor: var(--rt-rtui-multibutton-action-base-cursor);
59
62
  font-size: var(--rt-rtui-multibutton-action-base-font-size);
60
63
  font-weight: var(--rt-rtui-multibutton-action-base-font-weight);
61
- color: var(--rt-rtui-multibutton-action-base-color);
62
- background-color: var(--rt-rtui-multibutton-action-base-background-color);
63
64
  transition: var(--rt-rtui-multibutton-action-base-transition);
64
- cursor: var(--rt-rtui-multibutton-action-base-cursor);
65
65
 
66
66
  &--active {
67
- color: var(--rt-rtui-multibutton-action-active-color);
68
67
  background-color: var(--rt-rtui-multibutton-action-active-background-color);
68
+ color: var(--rt-rtui-multibutton-action-active-color);
69
69
  cursor: var(--rt-rtui-multibutton-action-active-cursor);
70
70
  }
71
71
 
@@ -83,9 +83,9 @@ $rtui-multibutton: (
83
83
  }
84
84
 
85
85
  &:disabled {
86
- pointer-events: var(--rt-rtui-multibutton-action-disabled-pointer-events);
87
86
  cursor: var(--rt-rtui-multibutton-action-disabled-cursor);
88
87
  opacity: var(--rt-rtui-multibutton-action-disabled-opacity);
88
+ pointer-events: var(--rt-rtui-multibutton-action-disabled-pointer-events);
89
89
  }
90
90
  }
91
91
  }
@@ -0,0 +1,247 @@
1
+ :host {
2
+ display: inline-block;
3
+ }
4
+
5
+ :host(.rtui-button-full) {
6
+ display: block;
7
+ width: 100%;
8
+
9
+ .rtui-button {
10
+ width: 100%;
11
+ }
12
+ }
13
+
14
+ .rtui-button {
15
+ position: relative;
16
+ display: inline-flex;
17
+ align-items: center;
18
+ justify-content: center;
19
+ border: 0;
20
+ background-color: transparent;
21
+ color: var(--mat-sys-on-surface-variant);
22
+ cursor: pointer;
23
+ line-height: 1;
24
+ transition:
25
+ background-color 0.15s ease,
26
+ color 0.15s ease,
27
+ opacity 0.15s ease;
28
+
29
+ rtui-icon {
30
+ color: inherit;
31
+ }
32
+
33
+ rtui-spinner {
34
+ display: flex;
35
+ align-items: center;
36
+ justify-content: center;
37
+ }
38
+
39
+ &:disabled {
40
+ cursor: not-allowed;
41
+ opacity: 0.38;
42
+ }
43
+
44
+ &--loading {
45
+ cursor: wait;
46
+ }
47
+
48
+ /* ===================== icon / fab ===================== */
49
+ &--type-icon,
50
+ &--type-fab {
51
+ border-radius: 1.5rem;
52
+
53
+ &:hover:not(:disabled) {
54
+ background-color: var(--rt-bg-base-hover);
55
+ }
56
+ }
57
+
58
+ &--type-icon.rtui-button--size-xs,
59
+ &--type-fab.rtui-button--size-xs {
60
+ padding: 0.25rem;
61
+ }
62
+
63
+ &--type-icon.rtui-button--size-sm,
64
+ &--type-fab.rtui-button--size-sm {
65
+ padding: 0.375rem;
66
+ }
67
+
68
+ &--type-icon.rtui-button--size-md,
69
+ &--type-fab.rtui-button--size-md {
70
+ padding: 0.5rem;
71
+ }
72
+
73
+ &--type-icon.rtui-button--size-lg,
74
+ &--type-fab.rtui-button--size-lg {
75
+ padding: 0.625rem;
76
+ }
77
+
78
+ &--type-icon.rtui-button--variant-primary,
79
+ &--type-fab.rtui-button--variant-primary {
80
+ color: var(--rt-icon-accent-primary);
81
+ }
82
+
83
+ &--type-icon.rtui-button--variant-danger,
84
+ &--type-fab.rtui-button--variant-danger {
85
+ color: var(--rt-icon-accent-danger);
86
+ }
87
+
88
+ &--type-icon.rtui-button--variant-success,
89
+ &--type-fab.rtui-button--variant-success {
90
+ color: var(--rt-icon-accent-success);
91
+ }
92
+
93
+ &--type-icon.rtui-button--variant-warning,
94
+ &--type-fab.rtui-button--variant-warning {
95
+ color: var(--rt-icon-accent-warning);
96
+ }
97
+
98
+ &--type-icon.rtui-button--variant-accent,
99
+ &--type-fab.rtui-button--variant-accent {
100
+ color: var(--rt-icon-accent-info);
101
+ }
102
+
103
+ /* ===================== pill ===================== */
104
+ &--type-pill {
105
+ gap: 0.375rem;
106
+ border-radius: 1.5rem;
107
+ background-color: var(--mat-sys-surface-container-high);
108
+ color: var(--mat-sys-on-surface-variant);
109
+ font-weight: 500;
110
+
111
+ &:hover:not(:disabled) {
112
+ background-color: var(--mat-sys-surface-container-highest);
113
+ }
114
+
115
+ &:active:not(:disabled) {
116
+ background-color: var(--mat-sys-surface-dim);
117
+ }
118
+ }
119
+
120
+ /* pill sizes */
121
+ &--type-pill.rtui-button--size-xs {
122
+ padding: 0.25rem 0.5rem;
123
+ font-size: 0.6875rem;
124
+ }
125
+
126
+ &--type-pill.rtui-button--size-sm {
127
+ padding: 0.375rem 0.625rem;
128
+ font-size: 0.75rem;
129
+ }
130
+
131
+ &--type-pill.rtui-button--size-md {
132
+ padding: 0.5rem 0.875rem;
133
+ font-size: 0.8125rem;
134
+ }
135
+
136
+ &--type-pill.rtui-button--size-lg {
137
+ padding: 0.625rem 1rem;
138
+ font-size: 0.875rem;
139
+ }
140
+
141
+ /* pill radius */
142
+ &--type-pill.rtui-button--radius-none {
143
+ border-radius: 0;
144
+ }
145
+
146
+ &--type-pill.rtui-button--radius-sm {
147
+ border-radius: 0.25rem;
148
+ }
149
+
150
+ &--type-pill.rtui-button--radius-md {
151
+ border-radius: 0.5rem;
152
+ }
153
+
154
+ &--type-pill.rtui-button--radius-lg {
155
+ border-radius: 0.75rem;
156
+ }
157
+
158
+ &--type-pill.rtui-button--radius-full {
159
+ border-radius: 1.5rem;
160
+ }
161
+
162
+ /* pill variants */
163
+ &--type-pill.rtui-button--variant-primary {
164
+ background-color: var(--rt-bg-accent-primary-subtle);
165
+ color: var(--rt-text-accent-primary);
166
+
167
+ &:hover:not(:disabled) {
168
+ background-color: color-mix(in srgb, var(--rt-bg-accent-primary-subtle) 92%, var(--rt-color-neutral-100));
169
+ }
170
+
171
+ &:active:not(:disabled) {
172
+ background-color: color-mix(in srgb, var(--rt-bg-accent-primary-subtle) 84%, var(--rt-color-neutral-100));
173
+ }
174
+ }
175
+
176
+ &--type-pill.rtui-button--variant-danger {
177
+ background-color: var(--rt-bg-accent-danger-subtle);
178
+ color: var(--rt-text-accent-danger);
179
+
180
+ &:hover:not(:disabled) {
181
+ background-color: color-mix(in srgb, var(--rt-bg-accent-danger-subtle) 92%, var(--rt-color-neutral-100));
182
+ }
183
+
184
+ &:active:not(:disabled) {
185
+ background-color: color-mix(in srgb, var(--rt-bg-accent-danger-subtle) 84%, var(--rt-color-neutral-100));
186
+ }
187
+ }
188
+
189
+ &--type-pill.rtui-button--variant-success {
190
+ background-color: var(--rt-bg-accent-success-subtle);
191
+ color: var(--rt-text-accent-success);
192
+
193
+ &:hover:not(:disabled) {
194
+ background-color: color-mix(in srgb, var(--rt-bg-accent-success-subtle) 92%, var(--rt-color-neutral-100));
195
+ }
196
+
197
+ &:active:not(:disabled) {
198
+ background-color: color-mix(in srgb, var(--rt-bg-accent-success-subtle) 84%, var(--rt-color-neutral-100));
199
+ }
200
+ }
201
+
202
+ &--type-pill.rtui-button--variant-warning {
203
+ background-color: var(--rt-bg-accent-warning-subtle);
204
+ color: var(--rt-text-accent-warning);
205
+
206
+ &:hover:not(:disabled) {
207
+ background-color: color-mix(in srgb, var(--rt-bg-accent-warning-subtle) 92%, var(--rt-color-neutral-100));
208
+ }
209
+
210
+ &:active:not(:disabled) {
211
+ background-color: color-mix(in srgb, var(--rt-bg-accent-warning-subtle) 84%, var(--rt-color-neutral-100));
212
+ }
213
+ }
214
+
215
+ &--type-pill.rtui-button--variant-accent {
216
+ background-color: var(--rt-bg-accent-info-subtle);
217
+ color: var(--rt-text-accent-info);
218
+
219
+ &:hover:not(:disabled) {
220
+ background-color: color-mix(in srgb, var(--rt-bg-accent-info-subtle) 92%, var(--rt-color-neutral-100));
221
+ }
222
+
223
+ &:active:not(:disabled) {
224
+ background-color: color-mix(in srgb, var(--rt-bg-accent-info-subtle) 84%, var(--rt-color-neutral-100));
225
+ }
226
+ }
227
+
228
+ /* pill appearance: text — transparent, borderless inline-text look.
229
+ Radius is intentionally left to the `--radius-*` modifier (defaults to
230
+ full) so a text-appearance pill keeps its pill shape. */
231
+ &--type-pill.rtui-button--appearance-text {
232
+ min-height: 1.875rem;
233
+ padding: 0 0.625rem;
234
+ background-color: transparent;
235
+ color: var(--mat-sys-on-surface-variant);
236
+ font-size: 1rem;
237
+ font-weight: 400;
238
+
239
+ &:hover:not(:disabled) {
240
+ background-color: var(--rt-bg-base-hover);
241
+ }
242
+
243
+ &:active:not(:disabled) {
244
+ background-color: var(--rt-bg-base-hover);
245
+ }
246
+ }
247
+ }