@rt-tools/ui-kit 0.0.4

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 (69) hide show
  1. package/README.md +99 -0
  2. package/fesm2022/rt-tools-ui-kit.mjs +5143 -0
  3. package/fesm2022/rt-tools-ui-kit.mjs.map +1 -0
  4. package/package.json +43 -0
  5. package/rt-tools-ui-kit-0.0.4.tgz +0 -0
  6. package/src/lib/ui-kit/action-bar/components/bar/rtui-action-bar.component.scss +104 -0
  7. package/src/lib/ui-kit/action-bar/components/container/rtui-action-bar-container.component.scss +12 -0
  8. package/src/lib/ui-kit/aside/components/container/aside-container.component.scss +20 -0
  9. package/src/lib/ui-kit/aside/components/error-notification/aside-error-box.component.scss +37 -0
  10. package/src/lib/ui-kit/aside/components/panel/aside-panel.component.scss +243 -0
  11. package/src/lib/ui-kit/aside/stories/aside-component/test-aside.component.scss +4 -0
  12. package/src/lib/ui-kit/buttons/icon-round/rtui-round-icon-button.component.scss +44 -0
  13. package/src/lib/ui-kit/buttons/multi-button/rtui-multi-button.component.scss +92 -0
  14. package/src/lib/ui-kit/checkbox/rtui-checkbox.component.scss +68 -0
  15. package/src/lib/ui-kit/checkbox/stories/component/test-checkbox.component.scss +9 -0
  16. package/src/lib/ui-kit/dynamic-selectors/components/actions/rtui-dynamic-selector-list-actions.component.scss +63 -0
  17. package/src/lib/ui-kit/dynamic-selectors/components/dynamic-input/rtui-dynamic-input.component.scss +3 -0
  18. package/src/lib/ui-kit/dynamic-selectors/components/dynamic-selector/rtui-dynamic-selector.component.scss +7 -0
  19. package/src/lib/ui-kit/dynamic-selectors/components/multi-selector-popup/rtui-multi-selector-popup.component.scss +229 -0
  20. package/src/lib/ui-kit/dynamic-selectors/components/placeholder/rtui-dynamic-selector-placeholder.component.scss +59 -0
  21. package/src/lib/ui-kit/dynamic-selectors/components/selected-list/rtui-dynamic-selector-selected-list.component.scss +35 -0
  22. package/src/lib/ui-kit/dynamic-selectors/strories/component/input/test-dynamic-input.component.scss +16 -0
  23. package/src/lib/ui-kit/dynamic-selectors/strories/component/selector/test-selector.component.scss +22 -0
  24. package/src/lib/ui-kit/file-uploader/rtui-file-upload.component.scss +69 -0
  25. package/src/lib/ui-kit/file-uploader/stories/component/test-file-upload.component.scss +6 -0
  26. package/src/lib/ui-kit/header/header.component.scss +0 -0
  27. package/src/lib/ui-kit/header/stories/component/test-header.component.scss +14 -0
  28. package/src/lib/ui-kit/image-uploader/image-uploader/rtui-image-upload.component.scss +93 -0
  29. package/src/lib/ui-kit/image-uploader/stories/component/test-image-upload.component.scss +9 -0
  30. package/src/lib/ui-kit/info-badge/info-badge.component.scss +62 -0
  31. package/src/lib/ui-kit/info-badge/stories/component/test-info-badge/test-info-badge.component.scss +11 -0
  32. package/src/lib/ui-kit/modal/modal.component.scss +115 -0
  33. package/src/lib/ui-kit/modal/stories/test-modal.component.scss +4 -0
  34. package/src/lib/ui-kit/popover/rtui-popover-container.component.scss +13 -0
  35. package/src/lib/ui-kit/scrollable/scrollable-container.component.scss +64 -0
  36. package/src/lib/ui-kit/side-menu/menu/rtui-side-menu.component.scss +185 -0
  37. package/src/lib/ui-kit/side-menu/menu-sub-item/rtui-side-menu-sub-item.component.scss +97 -0
  38. package/src/lib/ui-kit/side-menu/stories/component/test-side-menu-wrapper.component.scss +48 -0
  39. package/src/lib/ui-kit/snack-bar/snack-bar.component.scss +100 -0
  40. package/src/lib/ui-kit/snack-bar/stories/component/test-snack-bar.component.scss +30 -0
  41. package/src/lib/ui-kit/spinner/spinner.component.scss +49 -0
  42. package/src/lib/ui-kit/table/components/clear-search-button/rtui-clear-button.component.scss +50 -0
  43. package/src/lib/ui-kit/table/components/pagination-view/rtui-pagination.component.scss +191 -0
  44. package/src/lib/ui-kit/table/components/table/rtui-table.component.scss +4 -0
  45. package/src/lib/ui-kit/table/components/table-base-cell/table-base-cell.component.scss +133 -0
  46. package/src/lib/ui-kit/table/components/table-config-aside/rt-table-config-aside.component.scss +4 -0
  47. package/src/lib/ui-kit/table/components/table-container/table-container.component.scss +212 -0
  48. package/src/lib/ui-kit/table/components/table-header-cell/table-header-cell.component.scss +115 -0
  49. package/src/lib/ui-kit/table/components/table-header-filter-cell/table-header-filter-cell.component.scss +11 -0
  50. package/src/lib/ui-kit/table/dynamic-list.component.scss +6 -0
  51. package/src/lib/ui-kit/table/stories/dynamic-list/test-dynamic-list.component.scss +15 -0
  52. package/src/lib/ui-kit/table/stories/pagination/test-pagination-component.scss +16 -0
  53. package/src/lib/ui-kit/table/stories/table/test-table-component.scss +7 -0
  54. package/src/lib/ui-kit/toggle/rtui-toggle.component.scss +174 -0
  55. package/src/lib/ui-kit/toggle/stories/component/test-toggle.component.scss +9 -0
  56. package/src/lib/ui-kit/toolbar/toolbar.component.scss +99 -0
  57. package/src/styles/base/_base.scss +71 -0
  58. package/src/styles/base/_mixin.scss +66 -0
  59. package/src/styles/base/_variables.scss +34 -0
  60. package/src/styles/components/_action-bar.scss +84 -0
  61. package/src/styles/components/_button.scss +364 -0
  62. package/src/styles/components/_checkbox.scss +40 -0
  63. package/src/styles/components/_dynamic-selectors.scss +134 -0
  64. package/src/styles/components/_form.scss +90 -0
  65. package/src/styles/components/_rtui_button.scss +452 -0
  66. package/src/styles/components/_snackbar.scss +103 -0
  67. package/src/styles/components/_table.scss +239 -0
  68. package/src/styles/main.scss +14 -0
  69. package/types/rt-tools-ui-kit.d.ts +1875 -0
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "@rt-tools/ui-kit",
3
+ "version": "0.0.4",
4
+ "license": "Apache-2.0",
5
+ "author": "Yauheni Krumin",
6
+ "type": "module",
7
+ "dependencies": {
8
+ "tslib": "^2.8.0",
9
+ "@rt-tools/core": "^0.0.1",
10
+ "@rt-tools/store": "^0.0.1",
11
+ "@rt-tools/utils": "^0.0.1"
12
+ },
13
+ "peerDependencies": {
14
+ "@rt-tools/core": "^0.0.1",
15
+ "@rt-tools/store": "^0.0.1",
16
+ "@rt-tools/utils": "^0.0.1",
17
+ "@angular/animations": "^21.0.0",
18
+ "@angular/cdk": "^21.0.0",
19
+ "@angular/common": "^21.0.0",
20
+ "@angular/compiler": "^21.0.0",
21
+ "@angular/core": "^21.0.0",
22
+ "@angular/forms": "^21.0.0",
23
+ "@angular/material": "^21.0.0",
24
+ "@angular/platform-browser": "^21.0.0",
25
+ "@angular/platform-browser-dynamic": "^21.0.0",
26
+ "@angular/router": "^21.0.0",
27
+ "rxjs": "^7.8.2",
28
+ "zone.js": "^0.16.0",
29
+ "typescript": "^5.9.3"
30
+ },
31
+ "sideEffects": false,
32
+ "module": "fesm2022/rt-tools-ui-kit.mjs",
33
+ "typings": "types/rt-tools-ui-kit.d.ts",
34
+ "exports": {
35
+ "./package.json": {
36
+ "default": "./package.json"
37
+ },
38
+ ".": {
39
+ "types": "./types/rt-tools-ui-kit.d.ts",
40
+ "default": "./fesm2022/rt-tools-ui-kit.mjs"
41
+ }
42
+ }
43
+ }
Binary file
@@ -0,0 +1,104 @@
1
+ @use '../../../../../styles/base/mixin' as mixins;
2
+ @use '../../../../../styles/base/variables' as vars;
3
+
4
+ .rtui-action-bar {
5
+ width: var(--rt-action-bar-bar-width);
6
+ display: flex;
7
+ align-items: center;
8
+ gap: var(--rt-action-bar-bar-gap);
9
+ padding: var(--rt-action-bar-bar-padding);
10
+ border-radius: var(--rt-action-bar-bar-border-radius);
11
+ color: var(--rt-action-bar-bar-color);
12
+ background-color: var(--rt-action-bar-bar-background-color);
13
+ box-shadow: var(--rt-action-bar-bar-box-shadow);
14
+
15
+ &__counter {
16
+ font-size: var(--rt-action-bar-counter-font-size);
17
+ font-weight: var(--rt-action-bar-counter-font-weight);
18
+ }
19
+
20
+ &__actions {
21
+ display: flex;
22
+ gap: var(--rt-action-bar-actions-gap);
23
+ }
24
+
25
+ &__action {
26
+ display: flex;
27
+ justify-content: center;
28
+ 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);
32
+ padding: var(--rt-action-bar-action-padding);
33
+ border-radius: var(--rt-action-bar-action-border-radius);
34
+ cursor: pointer;
35
+
36
+ &:hover {
37
+ background-color: var(--rt-action-bar-action-hover-background-color);
38
+ }
39
+ }
40
+
41
+ &__close-button {
42
+ cursor: pointer;
43
+ margin-left: auto;
44
+
45
+ svg {
46
+ transition: transform 0.2s ease;
47
+
48
+ &:hover {
49
+ transform: rotate(90deg);
50
+ }
51
+ }
52
+ }
53
+
54
+ @include mixins.media-breakpoint-down(vars.$device-md) {
55
+ gap: var(--rt-action-bar-bar-mobile-gap);
56
+ padding: var(--rt-action-bar-bar-mobile-padding);
57
+
58
+ &__actions {
59
+ gap: var(--rt-action-bar-actions-mobile-gap);
60
+ }
61
+
62
+ &__action {
63
+ gap: var(--rt-action-bar-action-mobile-gap);
64
+ padding: var(--rt-action-bar-action-mobile-padding);
65
+ }
66
+ }
67
+ }
68
+
69
+ .rtui-action-bar-action-menu {
70
+ display: flex;
71
+ flex-direction: column;
72
+ gap: var(--rt-action-bar-action-menu-gap);
73
+ padding: var(--rt-action-bar-action-menu-padding);
74
+ border-radius: var(--rt-action-bar-action-border-radius);
75
+ color: var(--rt-action-bar-action-menu-color);
76
+ background-color: var(--rt-action-bar-action-menu-background-color);
77
+ box-shadow: var(--rt-action-bar-action-menu-box-shadow);
78
+
79
+ &__action {
80
+ display: flex;
81
+ justify-content: center;
82
+ align-items: center;
83
+ gap: var(--rt-action-bar-action-menu-action-gap);
84
+ 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
+ border-radius: var(--rt-action-bar-action-menu-action-border-radius);
88
+ cursor: pointer;
89
+
90
+ &:hover {
91
+ background-color: var(--rt-action-bar-action-menu-action-hover-background-color);
92
+ }
93
+ }
94
+
95
+ @include mixins.media-breakpoint-down(vars.$device-md) {
96
+ gap: var(--rt-action-bar-action-menu-action-mobile-gap);
97
+ padding: var(--rt-action-bar-action-menu-action-mobile-padding);
98
+
99
+ &__action {
100
+ gap: var(--rt-action-bar-action-menu-action-mobile-gap);
101
+ padding: var(--rt-action-bar-action-menu-action-mobile-padding);
102
+ }
103
+ }
104
+ }
@@ -0,0 +1,12 @@
1
+ :host {
2
+ width: var(--rt-action-bar-container-width);
3
+ 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);
8
+ display: flex;
9
+ justify-content: center;
10
+ align-items: center;
11
+ z-index: var(--rt-action-bar-container-z-index);
12
+ }
@@ -0,0 +1,20 @@
1
+ :host {
2
+ rtui-scrollable {
3
+ --rt-scrollable-header-padding: 0;
4
+ --rt-scrollable-content-padding: 0;
5
+ --rt-scrollable-footer-padding: 0;
6
+ // TODO: fix styles affect x-scroll
7
+ --rt-scrollable-content-flex-direction: row;
8
+
9
+ @supports (height: 100dvh) {
10
+ --rt-scrollable-host-height: 100dvh;
11
+ }
12
+ }
13
+
14
+ rtui-toolbar {
15
+ --rt-toolbar-body-height: 6rem;
16
+ --rt-toolbar-body-mobile-height: 6rem;
17
+ --rt-toolbar-body-padding: 0;
18
+ --rt-toolbar-bars-border-bottom-width: 0;
19
+ }
20
+ }
@@ -0,0 +1,37 @@
1
+ :host {
2
+ display: flex;
3
+ width: 100%;
4
+
5
+ .aside-error-box {
6
+ display: flex;
7
+ justify-content: space-between;
8
+ align-items: center;
9
+ width: 100%;
10
+ height: var(--rt-aside-error-box-height);
11
+ padding: var(--rt-aside-error-box-padding);
12
+ margin: var(--rt-aside-error-box-margin);
13
+ border: var(--rt-aside-error-box-border);
14
+ border-radius: var(--rt-aside-error-box-border-radius);
15
+
16
+ &__title {
17
+ font-size: var(--rt-aside-error-box-title-font-size);
18
+ color: var(--rt-aside-error-box-title-font-color);
19
+ }
20
+
21
+ .aside-error-box-button {
22
+ &__icon {
23
+ margin-right: 0.5rem;
24
+ }
25
+
26
+ &__title {
27
+ font-size: var(--rt-aside-error-box-button-font-size);
28
+ color: var(--rt-aside-error-box-button-font-color);
29
+ }
30
+
31
+ &.--complete {
32
+ background-color: transparent;
33
+ cursor: not-allowed;
34
+ }
35
+ }
36
+ }
37
+ }
@@ -0,0 +1,243 @@
1
+ @use '../../../../../styles/base/mixin' as mixins;
2
+ @use '../../../../../styles/base/variables' as vars;
3
+
4
+ $aside: (
5
+ host: (
6
+ width: 33.75rem,
7
+ box-shadow: 0 0 1rem 0 rgba(#000, 0.1),
8
+ background-color: var(--clr-white-100),
9
+ ),
10
+ header: (
11
+ padding: 2rem,
12
+ ),
13
+ header-mobile: (
14
+ padding: 1rem,
15
+ ),
16
+ header-back-button: (
17
+ margin-right: 1rem,
18
+ ),
19
+ header-title: (
20
+ font-size: 1.5rem,
21
+ line-height: 1.1,
22
+ font-weight: 600,
23
+ ),
24
+ header-description: (
25
+ font-size: 1rem,
26
+ margin-bottom: 0.25rem,
27
+ color: var(--clr-black-60),
28
+ ),
29
+ header-addition: (
30
+ font-size: 1rem,
31
+ margin-top: 0.25rem,
32
+ color: var(--clr-black-60),
33
+ ),
34
+ header-actions: (
35
+ margin-left: 1rem,
36
+ ),
37
+ header-action-button: (
38
+ margin-left: 0.75rem,
39
+ ),
40
+ content: (
41
+ padding: 0 2rem,
42
+ ),
43
+ content-mobile: (
44
+ padding: 0 1rem,
45
+ ),
46
+ footer: (
47
+ padding: 2rem,
48
+ margin-left-betwen-buttons: 1rem,
49
+ ),
50
+ footer-mobile: (
51
+ padding: 1rem,
52
+ ),
53
+ error-box: (
54
+ height: 2rem,
55
+ padding: 0.5rem,
56
+ margin: 2rem 0 2rem 0,
57
+ border: 1px solid var(--clr-red-60),
58
+ border-radius: 0.375rem,
59
+ ),
60
+ error-box-title: (
61
+ font-size: 1rem,
62
+ font-color: var(--clr-red-60),
63
+ ),
64
+ error-box-button: (
65
+ font-size: 1rem,
66
+ font-color: var(--clr-black-100),
67
+ ),
68
+ tab-indicator: (
69
+ width: 6rem,
70
+ ),
71
+ tab-badge: (
72
+ color: var(--mdc-filled-button-container-color),
73
+ ),
74
+ tab-badge-incorrect: (
75
+ color: var(--clr-red-100),
76
+ ),
77
+ );
78
+
79
+ :root {
80
+ @each $element, $elements in $aside {
81
+ @each $style-token, $value in $elements {
82
+ #{mixins.generateCssVar('aside', #{$element}, #{$style-token})}: #{$value};
83
+ }
84
+ }
85
+ }
86
+
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%;
95
+ }
96
+
97
+ // BADGE
98
+ .icon-badge {
99
+ position: absolute !important;
100
+ }
101
+
102
+ .title-badge {
103
+ margin-left: 0.25rem;
104
+ top: -0.5rem;
105
+ }
106
+
107
+ .icon-badge,
108
+ .title-badge {
109
+ .mat-badge-content {
110
+ background-color: var(--rt-aside-tab-badge-color);
111
+ }
112
+ }
113
+
114
+ .icon-badge.--incorrect,
115
+ .title-badge.--incorrect {
116
+ .mat-badge-content {
117
+ background-color: var(--rt-aside-tab-badge-incorrect-color);
118
+ }
119
+ }
120
+
121
+ // ASIDE
122
+ .c-aside {
123
+ position: relative;
124
+ height: 100vh;
125
+ max-height: 100vh;
126
+ width: var(--rt-aside-host-width);
127
+
128
+ box-shadow: var(--rt-aside-host-box-shadow);
129
+ background-color: var(--rt-aside-host-background-color);
130
+
131
+ // TAB GROUP
132
+ .mdc-tab-indicator__content.mdc-tab-indicator__content--underline {
133
+ width: var(--rt-aside-tab-indicator-width);
134
+ }
135
+
136
+ @include mixins.media-breakpoint-down(vars.$device-xs) {
137
+ width: 100vw;
138
+ }
139
+ } // c-aside
140
+
141
+ // ASIDE HEADER
142
+ .c-aside-header {
143
+ padding: var(--rt-aside-header-padding);
144
+
145
+ .back-button {
146
+ margin-right: var(--rt-aside-header-back-button-margin-right);
147
+ }
148
+
149
+ .c-aside-title {
150
+ height: 100%;
151
+ width: 100%;
152
+ display: flex;
153
+ flex-direction: column;
154
+ justify-content: center;
155
+ align-items: flex-start;
156
+
157
+ &__descr {
158
+ margin-bottom: var(--rt-aside-header-description-margin-bottom);
159
+ font-size: var(--rt-aside-header-description-font-size);
160
+ color: var(--rt-aside-header-description-color);
161
+ }
162
+
163
+ &__txt {
164
+ font-size: var(--rt-aside-header-title-font-size);
165
+ line-height: var(--rt-aside-header-title-line-height);
166
+ font-weight: var(--rt-aside-header-title-font-weight);
167
+ }
168
+
169
+ &__addition {
170
+ margin-top: var(--rt-aside-header-addition-margin-top);
171
+ font-size: var(--rt-aside-header-addition-font-size);
172
+ color: var(--rt-aside-header-addition-color);
173
+ }
174
+
175
+ &__descr,
176
+ &__txt,
177
+ &__addition {
178
+ width: 100%;
179
+ white-space: nowrap;
180
+ overflow: hidden;
181
+ text-overflow: ellipsis;
182
+ }
183
+ }
184
+
185
+ .c-aside-actions {
186
+ margin-left: var(--rt-aside-header-actions-margin-left);
187
+
188
+ &__action {
189
+ margin-left: var(--rt-aside-header-action-button-margin-left);
190
+ }
191
+ }
192
+
193
+ @include mixins.media-breakpoint-down(vars.$device-xs) {
194
+ padding: var(--rt-aside-header-mobile-padding);
195
+ }
196
+ } // c-aside-header
197
+
198
+ .c-aside-content {
199
+ height: 100%;
200
+ width: 100%;
201
+
202
+ display: flex;
203
+ flex-direction: column;
204
+ align-items: center;
205
+ justify-content: flex-start;
206
+
207
+ padding: var(--rt-aside-content-padding);
208
+
209
+ // Change mat tab group styles
210
+ .mat-mdc-tab-header {
211
+ top: 0;
212
+ z-index: 1000;
213
+ position: sticky;
214
+ background: var(--clr-white-100);
215
+ }
216
+
217
+ @include mixins.media-breakpoint-down(vars.$device-xs) {
218
+ padding: var(--rt-aside-content-mobile-padding);
219
+ }
220
+ } // c-aside-content
221
+
222
+ // ASIDE FOOTER
223
+ .c-aside-footer {
224
+ display: flex;
225
+ justify-content: flex-end;
226
+ align-items: center;
227
+
228
+ padding: var(--rt-aside-footer-padding);
229
+
230
+ .c-aside-footer-btn {
231
+ &__title {
232
+ text-transform: uppercase;
233
+ }
234
+ }
235
+
236
+ .c-aside-footer-btn + .c-aside-footer-btn {
237
+ margin-left: var(--rt-aside-footer-margin-left-betwen-buttons);
238
+ }
239
+
240
+ @include mixins.media-breakpoint-down(vars.$device-xs) {
241
+ padding: var(--rt-aside-footer-mobile-padding);
242
+ }
243
+ } // c-aside-footer
@@ -0,0 +1,4 @@
1
+ :host {
2
+ height: 100%;
3
+ width: 100%;
4
+ }
@@ -0,0 +1,44 @@
1
+ @use '../../../../styles/base/mixin' as mixins;
2
+
3
+ $round-icon-button: (
4
+ host: (
5
+ size: 1.5rem,
6
+ padding: 0.25rem,
7
+ z-index: 1,
8
+ background-color: var(--mat-list-active-indicator-color),
9
+ ),
10
+ icon: (
11
+ size: 1.25rem,
12
+ ),
13
+ );
14
+
15
+ :host {
16
+ @each $element, $elements in $round-icon-button {
17
+ @each $style-token, $value in $elements {
18
+ #{mixins.generateCssVar('round-icon-button', #{$element}, #{$style-token})}: #{$value};
19
+ }
20
+ }
21
+
22
+ .round-icon-button {
23
+ display: flex;
24
+ justify-content: center;
25
+ align-items: center;
26
+ width: var(--rt-round-icon-button-host-size);
27
+ height: var(--rt-round-icon-button-host-size);
28
+ padding: var(--rt-round-icon-button-host-padding);
29
+ z-index: var(--rt-round-icon-button-host-z-index);
30
+ border-radius: 50%;
31
+ cursor: pointer;
32
+
33
+ &__icon {
34
+ width: var(--rt-round-icon-button-icon-size);
35
+ height: var(--rt-round-icon-button-icon-size);
36
+ font-size: var(--rt-round-icon-button-icon-size);
37
+ }
38
+
39
+ &:hover {
40
+ background-color: var(--rt-round-icon-button-host-background-color);
41
+ box-shadow: var(--rt-button-box-shadow);
42
+ }
43
+ }
44
+ }
@@ -0,0 +1,92 @@
1
+ @use '../../../../styles/base/mixin' as mixins;
2
+
3
+ $rtui-multibutton: (
4
+ base: (
5
+ display: inline-flex,
6
+ flex-flow: row wrap,
7
+ radius: 8px,
8
+ padding: 4px,
9
+ background-color: var(--clr-black-10),
10
+ ),
11
+ action-base: (
12
+ padding: 4px 8px,
13
+ radius: 8px,
14
+ border: 0,
15
+ font-size: 12px,
16
+ font-weight: 600,
17
+ color: var(--clr-black-60),
18
+ background-color: transparent,
19
+ transition: 'background-color 0.15s, color 0.15s',
20
+ cursor: pointer,
21
+ ),
22
+ action-hover: (
23
+ color: var(--clr-black-80),
24
+ ),
25
+ action-active: (
26
+ color: var(--clr-black-80),
27
+ background-color: var(--clr-black-20),
28
+ cursor: default,
29
+ ),
30
+ action-focus-visible: (
31
+ outline: 2px dashed var(--clr-blue-40),
32
+ outline-offset: -2px,
33
+ ),
34
+ action-disabled: (
35
+ pointer-events: none,
36
+ cursor: default,
37
+ opacity: 0.75,
38
+ ),
39
+ );
40
+
41
+ :host {
42
+ @each $element, $elements in $rtui-multibutton {
43
+ @each $style-token, $value in $elements {
44
+ #{mixins.generateCssVar('rtui-multibutton', #{$element}, #{$style-token})}: #{$value};
45
+ }
46
+ }
47
+
48
+ .rtui-multibutton-actions {
49
+ display: var(--rt-rtui-multibutton-base-display);
50
+ flex-flow: var(--rt-rtui-multibutton-base-flex-flow);
51
+ border-radius: var(--rt-rtui-multibutton-base-radius);
52
+ padding: var(--rt-rtui-multibutton-base-padding);
53
+ background-color: var(--rt-rtui-multibutton-base-background-color);
54
+
55
+ &__action {
56
+ padding: var(--rt-rtui-multibutton-action-base-padding);
57
+ border-radius: var(--rt-rtui-multibutton-action-base-radius);
58
+ border: var(--rt-rtui-multibutton-action-base-border);
59
+ font-size: var(--rt-rtui-multibutton-action-base-font-size);
60
+ 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
+ transition: var(--rt-rtui-multibutton-action-base-transition);
64
+ cursor: var(--rt-rtui-multibutton-action-base-cursor);
65
+
66
+ &--active {
67
+ color: var(--rt-rtui-multibutton-action-active-color);
68
+ background-color: var(--rt-rtui-multibutton-action-active-background-color);
69
+ cursor: var(--rt-rtui-multibutton-action-active-cursor);
70
+ }
71
+
72
+ &:not(&--active):hover {
73
+ color: var(--rt-rtui-multibutton-action-hover-color);
74
+ }
75
+
76
+ &:focus {
77
+ outline: none;
78
+ }
79
+
80
+ &:focus-visible {
81
+ outline: var(--rt-rtui-multibutton-action-focus-visible-outline);
82
+ outline-offset: var(--rt-rtui-multibutton-action-focus-visible-outline-offset);
83
+ }
84
+
85
+ &:disabled {
86
+ pointer-events: var(--rt-rtui-multibutton-action-disabled-pointer-events);
87
+ cursor: var(--rt-rtui-multibutton-action-disabled-cursor);
88
+ opacity: var(--rt-rtui-multibutton-action-disabled-opacity);
89
+ }
90
+ }
91
+ }
92
+ }
@@ -0,0 +1,68 @@
1
+ @use '../../../styles/base/mixin' as mixins;
2
+
3
+ .rtui-checkbox {
4
+ display: flex;
5
+ gap: var(--rt-checkbox-container-gap);
6
+
7
+ &__input {
8
+ @include mixins.visually-hidden();
9
+ }
10
+
11
+ &__box {
12
+ display: flex;
13
+ align-items: center;
14
+ justify-content: center;
15
+ flex-shrink: 0;
16
+ width: var(--rt-checkbox-box-width);
17
+ height: var(--rt-checkbox-box-height);
18
+ border: var(--rt-checkbox-box-border);
19
+ border-radius: var(--rt-checkbox-box-border-radius);
20
+ color: var(--rt-checkbox-box-inactive-color);
21
+ background-color: var(--rt-checkbox-box-background-color);
22
+ transition: border-color 0.15s linear;
23
+ cursor: pointer;
24
+
25
+ svg {
26
+ opacity: 0;
27
+ transition: opacity 0.15s linear;
28
+ }
29
+ }
30
+
31
+ &__input:checked + &__box,
32
+ &__input:indeterminate + &__box {
33
+ color: var(--rt-checkbox-box-active-color);
34
+ border-color: var(--rt-checkbox-box-active-color);
35
+
36
+ svg {
37
+ opacity: 1;
38
+ }
39
+ }
40
+
41
+ &__input:disabled + &__box {
42
+ color: var(--clr-black-40);
43
+ border-color: var(--clr-black-40);
44
+ cursor: default;
45
+ }
46
+
47
+ &__input:focus {
48
+ outline: none;
49
+ }
50
+
51
+ &:focus-within {
52
+ outline: 2px dashed var(--rt-checkbox-box-active-color);
53
+ outline-offset: 2px;
54
+ }
55
+
56
+ &__label {
57
+ font-size: var(--rt-checkbox-label-font-size);
58
+ font-weight: var(--rt-checkbox-label-font-weight);
59
+ color: var(--rt-checkbox-label-color);
60
+ }
61
+
62
+ &__description {
63
+ margin-top: var(--rt-checkbox-description-margin-top);
64
+ font-size: var(--rt-checkbox-description-font-size);
65
+ font-weight: var(--rt-checkbox-description-font-weight);
66
+ color: var(--rt-checkbox-description-color);
67
+ }
68
+ }
@@ -0,0 +1,9 @@
1
+ :host {
2
+ width: 100vw;
3
+ height: 100vh;
4
+ display: flex;
5
+ flex-direction: column;
6
+ justify-content: center;
7
+ align-items: center;
8
+ margin: -1rem;
9
+ }