@laser-ui/themes 0.0.1

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 (67) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +5 -0
  3. package/_mixins.scss +5 -0
  4. package/_variables.scss +17 -0
  5. package/animations.scss +19 -0
  6. package/common.scss +9 -0
  7. package/components/accordion.scss +52 -0
  8. package/components/alert.scss +110 -0
  9. package/components/anchor.scss +69 -0
  10. package/components/avatar.scss +36 -0
  11. package/components/badge.scss +54 -0
  12. package/components/breadcrumb.scss +50 -0
  13. package/components/button.scss +245 -0
  14. package/components/card.scss +77 -0
  15. package/components/cascader.scss +313 -0
  16. package/components/checkbox.scss +194 -0
  17. package/components/circular-progress.scss +30 -0
  18. package/components/compose.scss +121 -0
  19. package/components/date-picker.scss +310 -0
  20. package/components/drawer.scss +113 -0
  21. package/components/dropdown.scss +156 -0
  22. package/components/empty.scss +27 -0
  23. package/components/fab.scss +293 -0
  24. package/components/form.scss +137 -0
  25. package/components/icon.scss +17 -0
  26. package/components/image.scss +213 -0
  27. package/components/input.scss +172 -0
  28. package/components/mask.scss +11 -0
  29. package/components/menu.scss +327 -0
  30. package/components/modal.scss +139 -0
  31. package/components/notification.scss +127 -0
  32. package/components/pagination.scss +134 -0
  33. package/components/popover.scss +197 -0
  34. package/components/progress.scss +125 -0
  35. package/components/radio.scss +203 -0
  36. package/components/rating.scss +75 -0
  37. package/components/select.scss +282 -0
  38. package/components/separator.scss +95 -0
  39. package/components/skeleton.scss +44 -0
  40. package/components/slider.scss +202 -0
  41. package/components/slides.scss +211 -0
  42. package/components/spinner.scss +43 -0
  43. package/components/stepper.scss +226 -0
  44. package/components/switch.scss +151 -0
  45. package/components/table.scss +297 -0
  46. package/components/tabs.scss +517 -0
  47. package/components/tag.scss +59 -0
  48. package/components/textarea.scss +69 -0
  49. package/components/time-picker.scss +212 -0
  50. package/components/timeline.scss +107 -0
  51. package/components/toast.scss +101 -0
  52. package/components/tooltip.scss +118 -0
  53. package/components/transfer.scss +122 -0
  54. package/components/tree-select.scss +218 -0
  55. package/components/tree.scss +169 -0
  56. package/components/upload.scss +367 -0
  57. package/components/wave.scss +36 -0
  58. package/index.scss +58 -0
  59. package/mixins/_polyfill.scss +34 -0
  60. package/mixins/_utils.scss +5 -0
  61. package/mixins/bem/_bem.scss +71 -0
  62. package/mixins/bem/_config.scss +4 -0
  63. package/mixins/bem/_function.scss +45 -0
  64. package/package.json +28 -0
  65. package/reboot.scss +5 -0
  66. package/root.scss +90 -0
  67. package/theme-dark.scss +62 -0
@@ -0,0 +1,172 @@
1
+ @use '../variables';
2
+ @use '../mixins';
3
+
4
+ @include mixins.b(input) {
5
+ $selector: &;
6
+
7
+ display: inline-flex;
8
+ align-items: center;
9
+ height: var(--size);
10
+ padding: 0 calc(var(--horizontal-space) - 1px);
11
+ font-size: var(--font-size);
12
+ color: var(--#{variables.$prefix}color-text);
13
+ vertical-align: top;
14
+ background-color: var(--#{variables.$prefix}background-color-input);
15
+ border: 1px solid var(--#{variables.$prefix}color-border);
16
+ border-radius: var(--#{variables.$prefix}border-radius);
17
+ transition: border-color var(--#{variables.$prefix}animation-duration-base) linear;
18
+
19
+ &:hover,
20
+ &:focus-within {
21
+ border-color: var(--#{variables.$prefix}color-light-primary);
22
+ }
23
+
24
+ @each $invalid, $color in ('warning': 'warning', 'error': 'danger') {
25
+ &[data-l-form-invalid='#{$invalid}'] {
26
+ border-color: var(--#{variables.$prefix}color-#{$color}) !important;
27
+
28
+ #{$selector}__input {
29
+ caret-color: var(--#{variables.$prefix}color-#{$color}) !important;
30
+ }
31
+ }
32
+ }
33
+
34
+ @include mixins.when(disabled) {
35
+ color: var(--#{variables.$prefix}color-disabled);
36
+ pointer-events: none;
37
+ background-color: var(--#{variables.$prefix}background-color-disabled);
38
+
39
+ @include mixins.e(input) {
40
+ &::placeholder {
41
+ opacity: 0.5;
42
+ }
43
+ }
44
+ }
45
+
46
+ @include mixins.m(small) {
47
+ --size: var(--#{variables.$prefix}input-size, var(--#{variables.$prefix}size-small));
48
+ --horizontal-space: var(--#{variables.$prefix}input-horizontal-space, var(--#{variables.$prefix}horizontal-space-small));
49
+ --font-size: var(--#{variables.$prefix}input-font-size, var(--#{variables.$prefix}font-size-small));
50
+ }
51
+
52
+ @include mixins.m(medium) {
53
+ --size: var(--#{variables.$prefix}input-size, var(--#{variables.$prefix}size-medium));
54
+ --horizontal-space: var(--#{variables.$prefix}input-horizontal-space, var(--#{variables.$prefix}horizontal-space-medium));
55
+ --font-size: var(--#{variables.$prefix}input-font-size, var(--#{variables.$prefix}font-size-medium));
56
+ }
57
+
58
+ @include mixins.m(large) {
59
+ --size: var(--#{variables.$prefix}input-size, var(--#{variables.$prefix}size-large));
60
+ --horizontal-space: var(--#{variables.$prefix}input-horizontal-space, var(--#{variables.$prefix}horizontal-space-large));
61
+ --font-size: var(--#{variables.$prefix}input-font-size, var(--#{variables.$prefix}font-size-large));
62
+ }
63
+
64
+ @include mixins.e(prefix) {
65
+ flex-shrink: 0;
66
+ margin-right: 4px;
67
+ }
68
+
69
+ @include mixins.e(input) {
70
+ display: inline-block;
71
+ flex: 1 0 0;
72
+ min-width: 0;
73
+ height: 100%;
74
+ padding: 0;
75
+ margin: 0;
76
+ font: inherit;
77
+ color: inherit;
78
+ letter-spacing: inherit;
79
+ appearance: none;
80
+ caret-color: var(--#{variables.$prefix}color-primary);
81
+ background-color: transparent;
82
+ border: none;
83
+ outline: none;
84
+
85
+ &[type='number'] {
86
+ appearance: textfield;
87
+
88
+ &::-webkit-outer-spin-button,
89
+ &::-webkit-inner-spin-button {
90
+ margin: 0;
91
+ appearance: none;
92
+ }
93
+ }
94
+
95
+ &::placeholder {
96
+ color: var(--#{variables.$prefix}color-disabled);
97
+ }
98
+ }
99
+
100
+ @include mixins.e(clear) {
101
+ flex-shrink: 0;
102
+ margin: 0 0 0 4px;
103
+ color: var(--#{variables.$prefix}color-icon-decorator);
104
+ cursor: pointer;
105
+ transition:
106
+ color var(--#{variables.$prefix}animation-duration-base) linear,
107
+ opacity var(--#{variables.$prefix}animation-duration-fast) linear;
108
+
109
+ &:hover,
110
+ &:focus {
111
+ color: var(--#{variables.$prefix}color-light-primary);
112
+ }
113
+
114
+ &:active {
115
+ color: var(--#{variables.$prefix}color--dark-primary);
116
+ }
117
+ }
118
+
119
+ @include mixins.e(password) {
120
+ flex-shrink: 0;
121
+ padding: 0;
122
+ margin: 0 0 0 4px;
123
+ color: var(--#{variables.$prefix}color-icon-decorator);
124
+ cursor: pointer;
125
+ transition: color var(--#{variables.$prefix}animation-duration-base) linear;
126
+
127
+ &:hover,
128
+ &:focus {
129
+ color: var(--#{variables.$prefix}color-light-primary);
130
+ }
131
+
132
+ &:active {
133
+ color: var(--#{variables.$prefix}color--dark-primary);
134
+ }
135
+ }
136
+
137
+ @include mixins.e(suffix) {
138
+ flex-shrink: 0;
139
+ margin-left: 4px;
140
+ }
141
+
142
+ @include mixins.e(number-container) {
143
+ display: inline-flex;
144
+ flex-direction: column;
145
+ height: 100%;
146
+ margin-left: 4px;
147
+ }
148
+
149
+ @include mixins.e(number) {
150
+ display: inline-flex;
151
+ flex-grow: 1;
152
+ align-items: center;
153
+ justify-content: center;
154
+ width: 24px;
155
+ color: var(--#{variables.$prefix}color-icon-decorator);
156
+ cursor: pointer;
157
+ transition:
158
+ color var(--#{variables.$prefix}animation-duration-base) linear,
159
+ background-color var(--#{variables.$prefix}animation-duration-base) linear;
160
+
161
+ &:hover,
162
+ &:focus {
163
+ color: var(--#{variables.$prefix}color-light-primary);
164
+ background-color: var(--#{variables.$prefix}background-color-light-primary);
165
+ }
166
+
167
+ &:active {
168
+ color: var(--#{variables.$prefix}color-dark-primary);
169
+ background-color: var(--#{variables.$prefix}background-color-primary);
170
+ }
171
+ }
172
+ }
@@ -0,0 +1,11 @@
1
+ @use '../variables';
2
+ @use '../mixins';
3
+
4
+ @include mixins.b(mask) {
5
+ position: absolute;
6
+ top: 0;
7
+ right: 0;
8
+ bottom: 0;
9
+ left: 0;
10
+ background-color: var(--#{variables.$prefix}background-color-mask);
11
+ }
@@ -0,0 +1,327 @@
1
+ @use '../variables';
2
+ @use '../mixins';
3
+
4
+ $menu-item-height: 40px;
5
+
6
+ @include mixins.b(menu) {
7
+ $selector: &;
8
+
9
+ position: relative;
10
+ padding: 8px 0;
11
+ outline: none;
12
+
13
+ &:not(#{&}--horizontal) {
14
+ overflow: hidden auto;
15
+ }
16
+
17
+ @include mixins.m(horizontal) {
18
+ display: inline-flex;
19
+ align-items: center;
20
+ min-width: 100%;
21
+
22
+ &::after {
23
+ position: absolute;
24
+ right: 4px;
25
+ bottom: 8px;
26
+ left: 4px;
27
+ height: 1px;
28
+ pointer-events: none;
29
+ content: '';
30
+ background-color: var(--#{variables.$prefix}background-color-indicator);
31
+ }
32
+ }
33
+
34
+ @include mixins.e(item) {
35
+ position: relative;
36
+ display: flex;
37
+ align-items: center;
38
+ height: $menu-item-height;
39
+ margin: 0;
40
+ list-style: none;
41
+ cursor: pointer;
42
+ transition:
43
+ height var(--#{variables.$prefix}animation-duration-base) linear,
44
+ color var(--#{variables.$prefix}animation-duration-base) linear,
45
+ background-color var(--#{variables.$prefix}animation-duration-base) linear;
46
+
47
+ &:hover {
48
+ color: var(--#{variables.$prefix}color-primary);
49
+ }
50
+
51
+ &:not(#{$selector}__item--horizontal):hover {
52
+ background-color: var(--#{variables.$prefix}background-color-light-primary);
53
+ }
54
+
55
+ @include mixins.when(active) {
56
+ color: var(--#{variables.$prefix}color-primary);
57
+
58
+ &:not(#{$selector}__item--horizontal) {
59
+ @include mixins.e(indicator-thumb) {
60
+ transform: scaleY(1);
61
+ }
62
+ }
63
+ }
64
+
65
+ @include mixins.when(disabled) {
66
+ pointer-events: none;
67
+ filter: opacity(50%);
68
+ }
69
+
70
+ @include mixins.m(item) {
71
+ padding: 0 16px;
72
+
73
+ &#{$selector}__item--horizontal:hover::after {
74
+ background-color: var(--#{variables.$prefix}color-primary);
75
+ transform: scaleX(1);
76
+ }
77
+ }
78
+
79
+ @include mixins.m(sub) {
80
+ &:not(#{$selector}__item--horizontal) {
81
+ padding-right: 32px;
82
+ }
83
+
84
+ &#{$selector}__item--horizontal {
85
+ @include mixins.when(expand) {
86
+ &::after {
87
+ background-color: var(--#{variables.$prefix}color-primary);
88
+ transform: scaleX(1);
89
+ }
90
+ }
91
+ }
92
+
93
+ &#{$selector}__item--icon {
94
+ @include mixins.e(sub-arrow) {
95
+ opacity: 0;
96
+ }
97
+ }
98
+
99
+ @include mixins.when(expand) {
100
+ color: var(--#{variables.$prefix}color-primary);
101
+ }
102
+ }
103
+
104
+ @include mixins.m(horizontal) {
105
+ display: inline-flex;
106
+ min-width: unset;
107
+ padding: 0 20px;
108
+
109
+ &::after {
110
+ position: absolute;
111
+ right: 20px;
112
+ bottom: -2px;
113
+ left: 20px;
114
+ z-index: 1;
115
+ height: 2px;
116
+ content: '';
117
+ background-color: transparent;
118
+ transition:
119
+ background-color var(--#{variables.$prefix}animation-duration-base) linear,
120
+ transform var(--#{variables.$prefix}animation-duration-base) linear;
121
+ transform: scaleX(0.8);
122
+ }
123
+
124
+ @include mixins.when(active) {
125
+ &::after {
126
+ background-color: var(--#{variables.$prefix}color-primary);
127
+ transform: scaleX(1);
128
+ }
129
+ }
130
+
131
+ @include mixins.e(item-content) {
132
+ flex-shrink: 0;
133
+ }
134
+ }
135
+
136
+ @include mixins.m(icon) {
137
+ height: 52px;
138
+
139
+ @include mixins.e(item-icon) {
140
+ width: 48px;
141
+ padding-left: 4px;
142
+ /* stylelint-disable-next-line declaration-property-value-allowed-list */
143
+ font-size: 24px;
144
+ }
145
+ }
146
+ }
147
+
148
+ @include mixins.e(item-icon) {
149
+ flex-shrink: 0;
150
+ width: calc(1em + 8px);
151
+ font-size: 1.25em;
152
+ transition:
153
+ width var(--#{variables.$prefix}animation-duration-base) linear,
154
+ padding var(--#{variables.$prefix}animation-duration-base) linear,
155
+ font-size var(--#{variables.$prefix}animation-duration-base) linear;
156
+ transform-origin: left;
157
+ }
158
+
159
+ @include mixins.e(item-content) {
160
+ @include mixins.utils-ellipsis;
161
+
162
+ min-width: 1em;
163
+ }
164
+
165
+ @include mixins.e(group-title) {
166
+ @include mixins.utils-ellipsis;
167
+
168
+ position: relative;
169
+ display: flex;
170
+ align-items: center;
171
+ height: $menu-item-height;
172
+ padding: 0 16px;
173
+ margin: 0;
174
+ font-size: var(--#{variables.$prefix}font-size-subtitle);
175
+ color: var(--#{variables.$prefix}color-text-sub);
176
+ }
177
+
178
+ @include mixins.e(group-list) {
179
+ padding: 0;
180
+ margin: 0;
181
+ list-style: none;
182
+ }
183
+
184
+ @include mixins.e(sub-list) {
185
+ position: relative;
186
+ padding: 0;
187
+ margin: 0;
188
+ list-style: none;
189
+ }
190
+
191
+ @include mixins.e(sub-arrow) {
192
+ position: absolute;
193
+ right: 21px;
194
+ width: 13px;
195
+ height: 3px;
196
+ pointer-events: none;
197
+ transition: transform var(--#{variables.$prefix}animation-duration-base) linear;
198
+ transform: rotate(90deg) scale(0.5);
199
+ transform-origin: 12px center;
200
+
201
+ @include mixins.when(expand) {
202
+ transform: translateY(-3px) rotate(90deg) scale(0.5);
203
+
204
+ div:nth-child(1) {
205
+ transform: rotate(130deg);
206
+ }
207
+
208
+ div:nth-child(2) {
209
+ transform: rotate(-130deg);
210
+ }
211
+ }
212
+
213
+ @include mixins.m(horizontal) {
214
+ right: 18px;
215
+ transform: rotate(0deg) scale(0.5);
216
+ }
217
+
218
+ div {
219
+ position: absolute;
220
+ width: 13px;
221
+ height: 3px;
222
+ background-color: currentcolor;
223
+ /* stylelint-disable-next-line declaration-property-value-allowed-list */
224
+ border-radius: 3px;
225
+ transition:
226
+ color var(--#{variables.$prefix}animation-duration-base) linear,
227
+ transform var(--#{variables.$prefix}animation-duration-base) linear;
228
+ transform-origin: 12px center;
229
+ }
230
+
231
+ div:nth-child(1) {
232
+ transform: rotate(50deg);
233
+ }
234
+
235
+ div:nth-child(2) {
236
+ transform: rotate(-50deg);
237
+ }
238
+ }
239
+
240
+ @include mixins.e(indicator) {
241
+ position: absolute;
242
+ height: 100%;
243
+ pointer-events: none;
244
+
245
+ @include mixins.m(first) {
246
+ @include mixins.e(indicator-track) {
247
+ bottom: 0;
248
+ height: calc(100% - 8px);
249
+ }
250
+
251
+ @include mixins.e(indicator-thumb) {
252
+ transform-origin: top;
253
+ }
254
+ }
255
+
256
+ @include mixins.m(last) {
257
+ @include mixins.e(indicator-track) {
258
+ top: 0;
259
+ height: calc(100% - 8px);
260
+ }
261
+
262
+ @include mixins.e(indicator-thumb) {
263
+ top: unset;
264
+ bottom: 8px;
265
+ transform-origin: bottom;
266
+ }
267
+ }
268
+ }
269
+
270
+ @include mixins.e(indicator-track) {
271
+ position: absolute;
272
+ left: -8px;
273
+ width: 2px;
274
+ height: 100%;
275
+ background-color: var(--#{variables.$prefix}background-color-indicator);
276
+
277
+ @include mixins.m(hidden) {
278
+ background-color: unset;
279
+ }
280
+ }
281
+
282
+ @include mixins.e(indicator-thumb) {
283
+ position: absolute;
284
+ top: 8px;
285
+ left: -8px;
286
+ width: 2px;
287
+ height: calc(100% - 16px);
288
+ background-color: var(--#{variables.$prefix}color-primary);
289
+ transition: transform var(--#{variables.$prefix}animation-duration-base) linear;
290
+ transform: scaleY(0);
291
+ }
292
+
293
+ @include mixins.e(empty) {
294
+ display: flex;
295
+ align-items: center;
296
+ height: $menu-item-height;
297
+ color: var(--#{variables.$prefix}color-disabled);
298
+ }
299
+ }
300
+
301
+ @include mixins.b(menu-popup) {
302
+ $menu-selector: '.#{variables.$prefix}menu';
303
+
304
+ $padding-size: 8px;
305
+
306
+ position: fixed;
307
+ padding: 4px;
308
+ background-color: var(--#{variables.$prefix}background-color);
309
+ border-radius: var(--#{variables.$prefix}border-radius);
310
+ box-shadow: var(--#{variables.$prefix}box-shadow-popup);
311
+
312
+ #{$menu-selector}__item {
313
+ padding: 0 $padding-size;
314
+ }
315
+
316
+ #{$menu-selector}__item--sub {
317
+ padding: 0 24px 0 $padding-size;
318
+ }
319
+
320
+ #{$menu-selector}__sub-arrow {
321
+ right: 12px;
322
+ }
323
+
324
+ #{$menu-selector}__group-title {
325
+ padding: 0 $padding-size;
326
+ }
327
+ }
@@ -0,0 +1,139 @@
1
+ @use '../variables';
2
+ @use '../mixins';
3
+
4
+ @include mixins.b(modal) {
5
+ $selector: &;
6
+
7
+ position: fixed;
8
+ top: 0;
9
+ right: 0;
10
+ bottom: 0;
11
+ left: 0;
12
+ overflow: hidden;
13
+ outline: none;
14
+
15
+ @include mixins.m(center) {
16
+ display: flex;
17
+
18
+ @include mixins.e(content) {
19
+ max-height: calc(100% - 40px);
20
+ margin: auto;
21
+ }
22
+ }
23
+
24
+ @include mixins.m(alert) {
25
+ @include mixins.e(footer) {
26
+ padding: 0 16px 12px;
27
+ border-top: none;
28
+ }
29
+ }
30
+
31
+ @include mixins.e(content) {
32
+ position: relative;
33
+ z-index: 1;
34
+ display: flex;
35
+ flex-direction: column;
36
+ max-width: calc(100% - 32px);
37
+ margin: 0 auto;
38
+ background-color: var(--#{variables.$prefix}background-color);
39
+ border-radius: var(--#{variables.$prefix}border-radius);
40
+ box-shadow: 0 8px 40px 0 var(--#{variables.$prefix}box-shadow-color);
41
+ }
42
+
43
+ @include mixins.e(body) {
44
+ position: relative;
45
+ padding: 20px;
46
+ overflow: hidden auto;
47
+ }
48
+
49
+ @include mixins.e(header) {
50
+ position: relative;
51
+ display: flex;
52
+ flex-shrink: 0;
53
+ align-items: center;
54
+ padding: 12px 20px;
55
+ border-bottom: 1px solid var(--#{variables.$prefix}color-divider);
56
+ }
57
+
58
+ @include mixins.e(header-title) {
59
+ @include mixins.utils-ellipsis;
60
+
61
+ flex: 1 0 0;
62
+ font-size: var(--#{variables.$prefix}font-size-header);
63
+ font-weight: var(--#{variables.$prefix}font-weight-bold);
64
+ }
65
+
66
+ @include mixins.e(header-actions) {
67
+ @include mixins.polyfill-column-gap(8px);
68
+
69
+ display: inline-flex;
70
+ flex-shrink: 0;
71
+ align-items: center;
72
+ }
73
+
74
+ @include mixins.e(footer) {
75
+ @include mixins.polyfill-column-gap(8px);
76
+
77
+ position: relative;
78
+ display: flex;
79
+ flex-shrink: 0;
80
+ align-items: center;
81
+ padding: 12px 16px;
82
+ border-top: 1px solid var(--#{variables.$prefix}color-divider);
83
+
84
+ @include mixins.m(left) {
85
+ justify-content: flex-start;
86
+ }
87
+
88
+ @include mixins.m(right) {
89
+ justify-content: flex-end;
90
+ }
91
+
92
+ @include mixins.m(center) {
93
+ justify-content: center;
94
+ }
95
+ }
96
+
97
+ @include mixins.e(alert) {
98
+ display: flex;
99
+
100
+ @include mixins.m(success) {
101
+ --color: var(--#{variables.$prefix}modal-alert-color, var(--#{variables.$prefix}color-success));
102
+ }
103
+
104
+ @include mixins.m(warning) {
105
+ --color: var(--#{variables.$prefix}modal-alert-color, var(--#{variables.$prefix}color-warning));
106
+ }
107
+
108
+ @include mixins.m(error) {
109
+ --color: var(--#{variables.$prefix}modal-alert-color, var(--#{variables.$prefix}color-danger));
110
+ }
111
+
112
+ @include mixins.m(info) {
113
+ --color: var(--#{variables.$prefix}modal-alert-color, var(--#{variables.$prefix}color-primary));
114
+ }
115
+ }
116
+
117
+ @include mixins.e(alert-icon) {
118
+ margin-right: 10px;
119
+ font-size: calc(var(--#{variables.$prefix}font-size-title) * 1.5);
120
+ color: var(--color);
121
+ }
122
+
123
+ @include mixins.e(alert-content) {
124
+ flex: 1 0 0;
125
+ }
126
+
127
+ @include mixins.e(alert-title) {
128
+ font-size: var(--#{variables.$prefix}font-size-title);
129
+ font-weight: var(--#{variables.$prefix}font-weight-bold);
130
+
131
+ & + #{ $selector}__alert-message {
132
+ margin-top: 6px;
133
+ }
134
+ }
135
+
136
+ @include mixins.e(alert-message) {
137
+ color: var(--#{variables.$prefix}color-text-sub);
138
+ }
139
+ }