@duskmoon-dev/core 1.12.4 → 1.14.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.
- package/dist/components/alert.css +64 -2
- package/dist/components/appbar.css +119 -21
- package/dist/components/autocomplete.css +63 -3
- package/dist/components/avatar.css +22 -2
- package/dist/components/button.css +101 -49
- package/dist/components/card.css +38 -2
- package/dist/components/cascader.css +59 -9
- package/dist/components/checkbox.css +15 -5
- package/dist/components/chip.css +122 -2
- package/dist/components/collapse.css +32 -0
- package/dist/components/datepicker.css +79 -6
- package/dist/components/divider.css +196 -121
- package/dist/components/file-upload.css +68 -8
- package/dist/components/form.css +2 -1
- package/dist/components/index.css +1835 -586
- package/dist/components/input.css +21 -67
- package/dist/components/multi-select.css +59 -9
- package/dist/components/navigation.css +1 -1
- package/dist/components/otp-input.css +48 -16
- package/dist/components/pin-input.css +50 -13
- package/dist/components/radio.css +12 -2
- package/dist/components/rating.css +35 -3
- package/dist/components/segment-control.css +23 -2
- package/dist/components/select.css +21 -37
- package/dist/components/slider.css +130 -6
- package/dist/components/switch.css +27 -4
- package/dist/components/textarea.css +21 -96
- package/dist/components/time-input.css +61 -12
- package/dist/components/toast.css +72 -3
- package/dist/components/toggle.css +63 -6
- package/dist/components/tooltip.css +84 -0
- package/dist/components/tree-select.css +60 -11
- package/dist/esm/components/alert.js +64 -2
- package/dist/esm/components/appbar.js +119 -21
- package/dist/esm/components/autocomplete.js +63 -3
- package/dist/esm/components/avatar.js +22 -2
- package/dist/esm/components/button.js +101 -49
- package/dist/esm/components/card.js +38 -2
- package/dist/esm/components/cascader.js +59 -9
- package/dist/esm/components/checkbox.js +15 -5
- package/dist/esm/components/chip.js +122 -2
- package/dist/esm/components/collapse.js +32 -0
- package/dist/esm/components/datepicker.js +79 -6
- package/dist/esm/components/divider.js +196 -121
- package/dist/esm/components/file-upload.js +68 -8
- package/dist/esm/components/form.js +2 -1
- package/dist/esm/components/input.js +21 -67
- package/dist/esm/components/multi-select.js +59 -9
- package/dist/esm/components/navigation.js +1 -1
- package/dist/esm/components/otp-input.js +48 -16
- package/dist/esm/components/pin-input.js +50 -13
- package/dist/esm/components/radio.js +12 -2
- package/dist/esm/components/rating.js +35 -3
- package/dist/esm/components/segment-control.js +23 -2
- package/dist/esm/components/select.js +21 -37
- package/dist/esm/components/slider.js +130 -6
- package/dist/esm/components/switch.js +27 -4
- package/dist/esm/components/textarea.js +21 -96
- package/dist/esm/components/time-input.js +61 -12
- package/dist/esm/components/toast.js +72 -3
- package/dist/esm/components/toggle.js +63 -6
- package/dist/esm/components/tooltip.js +84 -0
- package/dist/esm/components/tree-select.js +60 -11
- package/dist/index.css +1835 -586
- package/dist/index.min.css +1 -1
- package/package.json +1 -1
|
@@ -25,20 +25,19 @@ export const css = `/**
|
|
|
25
25
|
line-height: 1.5rem;
|
|
26
26
|
color: var(--color-on-surface);
|
|
27
27
|
background-color: var(--color-surface);
|
|
28
|
-
border: 1px solid
|
|
28
|
+
border: 1px solid currentColor;
|
|
29
29
|
border-radius: 0.5rem;
|
|
30
30
|
cursor: pointer;
|
|
31
31
|
transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
.multi-select-trigger:hover:not(:disabled) {
|
|
35
|
-
|
|
35
|
+
background-color: var(--color-surface-container);
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
.multi-select-trigger:focus-within {
|
|
39
39
|
outline: none;
|
|
40
|
-
|
|
41
|
-
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
|
|
40
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
|
|
42
41
|
}
|
|
43
42
|
|
|
44
43
|
/* Placeholder */
|
|
@@ -432,20 +431,71 @@ export const css = `/**
|
|
|
432
431
|
}
|
|
433
432
|
|
|
434
433
|
.multi-select-filled .multi-select-trigger:focus-within {
|
|
435
|
-
border-bottom-color:
|
|
434
|
+
border-bottom-color: currentColor;
|
|
436
435
|
box-shadow: none;
|
|
437
436
|
}
|
|
438
437
|
|
|
439
|
-
/*
|
|
440
|
-
.multi-select-
|
|
441
|
-
|
|
438
|
+
/* Color Variants */
|
|
439
|
+
.multi-select-primary .multi-select-trigger {
|
|
440
|
+
color: var(--color-primary);
|
|
441
|
+
}
|
|
442
|
+
.multi-select-primary .multi-select-trigger:focus-within {
|
|
443
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
.multi-select-secondary .multi-select-trigger {
|
|
447
|
+
color: var(--color-secondary);
|
|
448
|
+
}
|
|
449
|
+
.multi-select-secondary .multi-select-trigger:focus-within {
|
|
450
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-secondary) 10%, transparent);
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
.multi-select-tertiary .multi-select-trigger {
|
|
454
|
+
color: var(--color-tertiary);
|
|
455
|
+
}
|
|
456
|
+
.multi-select-tertiary .multi-select-trigger:focus-within {
|
|
457
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-tertiary) 10%, transparent);
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
.multi-select-info .multi-select-trigger {
|
|
461
|
+
color: var(--color-info);
|
|
462
|
+
}
|
|
463
|
+
.multi-select-info .multi-select-trigger:focus-within {
|
|
464
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-info) 10%, transparent);
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
.multi-select-success .multi-select-trigger {
|
|
468
|
+
color: var(--color-success);
|
|
469
|
+
}
|
|
470
|
+
.multi-select-success .multi-select-trigger:focus-within {
|
|
471
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 10%, transparent);
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
.multi-select-warning .multi-select-trigger {
|
|
475
|
+
color: var(--color-warning);
|
|
476
|
+
}
|
|
477
|
+
.multi-select-warning .multi-select-trigger:focus-within {
|
|
478
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 10%, transparent);
|
|
442
479
|
}
|
|
443
480
|
|
|
481
|
+
.multi-select-error .multi-select-trigger {
|
|
482
|
+
color: var(--color-error);
|
|
483
|
+
}
|
|
444
484
|
.multi-select-error .multi-select-trigger:focus-within {
|
|
445
|
-
border-color: var(--color-error);
|
|
446
485
|
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
|
|
447
486
|
}
|
|
448
487
|
|
|
488
|
+
/* Ghost Variant */
|
|
489
|
+
.multi-select-ghost .multi-select-trigger {
|
|
490
|
+
background-color: transparent;
|
|
491
|
+
border-color: transparent;
|
|
492
|
+
}
|
|
493
|
+
.multi-select-ghost .multi-select-trigger:focus-within {
|
|
494
|
+
background-color: var(--color-surface-container);
|
|
495
|
+
border-color: transparent;
|
|
496
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
|
|
497
|
+
}
|
|
498
|
+
|
|
449
499
|
/* Disabled State */
|
|
450
500
|
.multi-select-disabled .multi-select-trigger {
|
|
451
501
|
cursor: not-allowed;
|
|
@@ -22,7 +22,7 @@ export const css = `/**
|
|
|
22
22
|
text-align: center;
|
|
23
23
|
color: var(--color-on-surface);
|
|
24
24
|
background-color: var(--color-surface);
|
|
25
|
-
border: 2px solid
|
|
25
|
+
border: 2px solid currentColor;
|
|
26
26
|
border-radius: 0.5rem;
|
|
27
27
|
outline: none;
|
|
28
28
|
transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
|
|
@@ -35,12 +35,11 @@ export const css = `/**
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
.otp-input-field:hover:not(:disabled):not(:focus) {
|
|
38
|
-
|
|
38
|
+
background-color: var(--color-surface-container);
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
.otp-input-field:focus {
|
|
42
|
-
|
|
43
|
-
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
|
|
42
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
|
|
44
43
|
}
|
|
45
44
|
|
|
46
45
|
.otp-input-field:disabled {
|
|
@@ -123,41 +122,74 @@ export const css = `/**
|
|
|
123
122
|
}
|
|
124
123
|
|
|
125
124
|
/* Color Variants */
|
|
125
|
+
.otp-input-primary .otp-input-field {
|
|
126
|
+
color: var(--color-primary);
|
|
127
|
+
}
|
|
128
|
+
|
|
126
129
|
.otp-input-primary .otp-input-field:focus {
|
|
127
|
-
border-color: var(--color-primary);
|
|
128
130
|
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
|
|
129
131
|
}
|
|
130
132
|
|
|
133
|
+
.otp-input-secondary .otp-input-field {
|
|
134
|
+
color: var(--color-secondary);
|
|
135
|
+
}
|
|
136
|
+
|
|
131
137
|
.otp-input-secondary .otp-input-field:focus {
|
|
132
|
-
border-color: var(--color-secondary);
|
|
133
138
|
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-secondary) 10%, transparent);
|
|
134
139
|
}
|
|
135
140
|
|
|
141
|
+
.otp-input-tertiary .otp-input-field {
|
|
142
|
+
color: var(--color-tertiary);
|
|
143
|
+
}
|
|
144
|
+
|
|
136
145
|
.otp-input-tertiary .otp-input-field:focus {
|
|
137
|
-
border-color: var(--color-tertiary);
|
|
138
146
|
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-tertiary) 10%, transparent);
|
|
139
147
|
}
|
|
140
148
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
border-color: var(--color-error);
|
|
149
|
+
.otp-input-info .otp-input-field {
|
|
150
|
+
color: var(--color-info);
|
|
144
151
|
}
|
|
145
152
|
|
|
146
|
-
.otp-input-
|
|
147
|
-
|
|
148
|
-
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
|
|
153
|
+
.otp-input-info .otp-input-field:focus {
|
|
154
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-info) 10%, transparent);
|
|
149
155
|
}
|
|
150
156
|
|
|
151
|
-
/* Success State */
|
|
152
157
|
.otp-input-success .otp-input-field {
|
|
153
|
-
|
|
158
|
+
color: var(--color-success);
|
|
154
159
|
}
|
|
155
160
|
|
|
156
161
|
.otp-input-success .otp-input-field:focus {
|
|
157
|
-
border-color: var(--color-success);
|
|
158
162
|
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 10%, transparent);
|
|
159
163
|
}
|
|
160
164
|
|
|
165
|
+
.otp-input-warning .otp-input-field {
|
|
166
|
+
color: var(--color-warning);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
.otp-input-warning .otp-input-field:focus {
|
|
170
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 10%, transparent);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
.otp-input-error .otp-input-field {
|
|
174
|
+
color: var(--color-error);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
.otp-input-error .otp-input-field:focus {
|
|
178
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/* Ghost Variant */
|
|
182
|
+
.otp-input-ghost .otp-input-field {
|
|
183
|
+
background-color: transparent;
|
|
184
|
+
border-color: transparent;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
.otp-input-ghost .otp-input-field:focus {
|
|
188
|
+
background-color: var(--color-surface-container);
|
|
189
|
+
border-color: transparent;
|
|
190
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
|
|
191
|
+
}
|
|
192
|
+
|
|
161
193
|
/* Masked Input (dots) */
|
|
162
194
|
.otp-input-masked .otp-input-field {
|
|
163
195
|
-webkit-text-security: disc;
|
|
@@ -22,7 +22,7 @@ export const css = `/**
|
|
|
22
22
|
text-align: center;
|
|
23
23
|
color: var(--color-on-surface);
|
|
24
24
|
background-color: var(--color-surface);
|
|
25
|
-
border: 2px solid
|
|
25
|
+
border: 2px solid currentColor;
|
|
26
26
|
border-radius: 0.5rem;
|
|
27
27
|
outline: none;
|
|
28
28
|
transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
|
|
@@ -36,12 +36,11 @@ export const css = `/**
|
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
.pin-input-field:hover:not(:disabled):not(:focus) {
|
|
39
|
-
|
|
39
|
+
background-color: var(--color-surface-container);
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
.pin-input-field:focus {
|
|
43
|
-
|
|
44
|
-
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
|
|
43
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
|
|
45
44
|
}
|
|
46
45
|
|
|
47
46
|
.pin-input-field:disabled {
|
|
@@ -112,29 +111,60 @@ export const css = `/**
|
|
|
112
111
|
}
|
|
113
112
|
|
|
114
113
|
/* Color Variants */
|
|
114
|
+
.pin-input-primary .pin-input-field {
|
|
115
|
+
color: var(--color-primary);
|
|
116
|
+
}
|
|
117
|
+
|
|
115
118
|
.pin-input-primary .pin-input-field:focus {
|
|
116
|
-
border-color: var(--color-primary);
|
|
117
119
|
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
|
|
118
120
|
}
|
|
119
121
|
|
|
122
|
+
.pin-input-secondary .pin-input-field {
|
|
123
|
+
color: var(--color-secondary);
|
|
124
|
+
}
|
|
125
|
+
|
|
120
126
|
.pin-input-secondary .pin-input-field:focus {
|
|
121
|
-
border-color: var(--color-secondary);
|
|
122
127
|
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-secondary) 10%, transparent);
|
|
123
128
|
}
|
|
124
129
|
|
|
130
|
+
.pin-input-tertiary .pin-input-field {
|
|
131
|
+
color: var(--color-tertiary);
|
|
132
|
+
}
|
|
133
|
+
|
|
125
134
|
.pin-input-tertiary .pin-input-field:focus {
|
|
126
|
-
border-color: var(--color-tertiary);
|
|
127
135
|
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-tertiary) 10%, transparent);
|
|
128
136
|
}
|
|
129
137
|
|
|
130
|
-
|
|
138
|
+
.pin-input-info .pin-input-field {
|
|
139
|
+
color: var(--color-info);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.pin-input-info .pin-input-field:focus {
|
|
143
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-info) 10%, transparent);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.pin-input-success .pin-input-field {
|
|
147
|
+
color: var(--color-success);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.pin-input-success .pin-input-field:focus {
|
|
151
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 10%, transparent);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.pin-input-warning .pin-input-field {
|
|
155
|
+
color: var(--color-warning);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.pin-input-warning .pin-input-field:focus {
|
|
159
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 10%, transparent);
|
|
160
|
+
}
|
|
161
|
+
|
|
131
162
|
.pin-input-error .pin-input-field {
|
|
132
|
-
|
|
163
|
+
color: var(--color-error);
|
|
133
164
|
animation: pin-shake 300ms ease-in-out;
|
|
134
165
|
}
|
|
135
166
|
|
|
136
167
|
.pin-input-error .pin-input-field:focus {
|
|
137
|
-
border-color: var(--color-error);
|
|
138
168
|
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
|
|
139
169
|
}
|
|
140
170
|
|
|
@@ -144,9 +174,16 @@ export const css = `/**
|
|
|
144
174
|
40%, 80% { transform: translateX(4px); }
|
|
145
175
|
}
|
|
146
176
|
|
|
147
|
-
/*
|
|
148
|
-
.pin-input-
|
|
149
|
-
|
|
177
|
+
/* Ghost Variant */
|
|
178
|
+
.pin-input-ghost .pin-input-field {
|
|
179
|
+
background-color: transparent;
|
|
180
|
+
border-color: transparent;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
.pin-input-ghost .pin-input-field:focus {
|
|
184
|
+
background-color: var(--color-surface-container);
|
|
185
|
+
border-color: transparent;
|
|
186
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
|
|
150
187
|
}
|
|
151
188
|
|
|
152
189
|
/* PIN Group with Label */
|
|
@@ -13,6 +13,7 @@ export const css = `/**
|
|
|
13
13
|
--radio-size: 1.25rem;
|
|
14
14
|
--radio-color: var(--color-primary);
|
|
15
15
|
--radio-border-color: var(--color-on-surface-variant);
|
|
16
|
+
color: var(--color-on-surface);
|
|
16
17
|
|
|
17
18
|
position: relative;
|
|
18
19
|
display: inline-grid;
|
|
@@ -63,8 +64,8 @@ export const css = `/**
|
|
|
63
64
|
|
|
64
65
|
/* Focus State */
|
|
65
66
|
.radio:focus-visible {
|
|
66
|
-
outline:
|
|
67
|
-
|
|
67
|
+
outline: none;
|
|
68
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--radio-color) 20%, transparent);
|
|
68
69
|
}
|
|
69
70
|
|
|
70
71
|
/* Disabled State */
|
|
@@ -129,6 +130,15 @@ export const css = `/**
|
|
|
129
130
|
--radio-color: var(--color-info);
|
|
130
131
|
}
|
|
131
132
|
|
|
133
|
+
/* Ghost Variant — borderless unchecked state */
|
|
134
|
+
.radio-ghost {
|
|
135
|
+
--radio-border-color: transparent;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.radio-ghost:hover:not(:disabled):not(:checked) {
|
|
139
|
+
border-color: transparent;
|
|
140
|
+
}
|
|
141
|
+
|
|
132
142
|
/* ========================================
|
|
133
143
|
* Radio with Label (wrapper pattern)
|
|
134
144
|
* ======================================== */
|
|
@@ -10,6 +10,7 @@ export const css = `/**
|
|
|
10
10
|
display: inline-flex;
|
|
11
11
|
align-items: center;
|
|
12
12
|
gap: 0.125rem;
|
|
13
|
+
color: var(--color-on-surface);
|
|
13
14
|
}
|
|
14
15
|
|
|
15
16
|
/* Rating Item */
|
|
@@ -113,6 +114,21 @@ export const css = `/**
|
|
|
113
114
|
color: var(--color-success);
|
|
114
115
|
}
|
|
115
116
|
|
|
117
|
+
.rating-tertiary .rating-item.filled {
|
|
118
|
+
color: var(--color-tertiary);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.rating-info .rating-item.filled {
|
|
122
|
+
color: var(--color-info);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/* Note: .rating-warning is explicit even though the default rating filled color is
|
|
126
|
+
already --color-warning. This allows resetting to warning after applying another
|
|
127
|
+
color variant (e.g. class="rating rating-primary rating-warning"). */
|
|
128
|
+
.rating-warning .rating-item.filled {
|
|
129
|
+
color: var(--color-warning);
|
|
130
|
+
}
|
|
131
|
+
|
|
116
132
|
/* Read Only */
|
|
117
133
|
.rating-readonly .rating-item {
|
|
118
134
|
cursor: default;
|
|
@@ -156,13 +172,29 @@ export const css = `/**
|
|
|
156
172
|
color: var(--color-warning);
|
|
157
173
|
}
|
|
158
174
|
|
|
159
|
-
|
|
175
|
+
.rating-primary:not(.rating-readonly):hover .rating-item { color: var(--color-primary); }
|
|
176
|
+
.rating-secondary:not(.rating-readonly):hover .rating-item { color: var(--color-secondary); }
|
|
177
|
+
.rating-tertiary:not(.rating-readonly):hover .rating-item { color: var(--color-tertiary); }
|
|
178
|
+
.rating-info:not(.rating-readonly):hover .rating-item { color: var(--color-info); }
|
|
179
|
+
.rating-success:not(.rating-readonly):hover .rating-item { color: var(--color-success); }
|
|
180
|
+
.rating-error:not(.rating-readonly):hover .rating-item { color: var(--color-error); }
|
|
181
|
+
|
|
182
|
+
/* Focus Visible — use warning (the default fill color) for the base ring;
|
|
183
|
+
per-variant overrides below match the active fill color for each variant. */
|
|
160
184
|
.rating-item:focus-visible {
|
|
161
|
-
outline:
|
|
162
|
-
|
|
185
|
+
outline: none;
|
|
186
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 20%, transparent);
|
|
163
187
|
border-radius: 0.25rem;
|
|
164
188
|
}
|
|
165
189
|
|
|
190
|
+
.rating-primary .rating-item:focus-visible { box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 20%, transparent); }
|
|
191
|
+
.rating-secondary .rating-item:focus-visible { box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-secondary) 20%, transparent); }
|
|
192
|
+
.rating-tertiary .rating-item:focus-visible { box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-tertiary) 20%, transparent); }
|
|
193
|
+
.rating-info .rating-item:focus-visible { box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-info) 20%, transparent); }
|
|
194
|
+
.rating-success .rating-item:focus-visible { box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 20%, transparent); }
|
|
195
|
+
.rating-error .rating-item:focus-visible { box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 20%, transparent); }
|
|
196
|
+
.rating-warning .rating-item:focus-visible { box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 20%, transparent); }
|
|
197
|
+
|
|
166
198
|
/* Rating Display (static) */
|
|
167
199
|
.rating-display {
|
|
168
200
|
display: inline-flex;
|
|
@@ -9,6 +9,7 @@ export const css = `/**
|
|
|
9
9
|
.segment-control {
|
|
10
10
|
display: inline-flex;
|
|
11
11
|
align-items: stretch;
|
|
12
|
+
color: var(--color-on-surface);
|
|
12
13
|
background-color: var(--color-surface-container);
|
|
13
14
|
border: 1px solid var(--color-outline);
|
|
14
15
|
border-radius: 1.25rem;
|
|
@@ -42,8 +43,8 @@ export const css = `/**
|
|
|
42
43
|
}
|
|
43
44
|
|
|
44
45
|
.segment-item:focus-visible {
|
|
45
|
-
outline:
|
|
46
|
-
|
|
46
|
+
outline: none;
|
|
47
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
|
|
47
48
|
}
|
|
48
49
|
|
|
49
50
|
.segment-item:disabled {
|
|
@@ -113,6 +114,26 @@ export const css = `/**
|
|
|
113
114
|
color: var(--color-on-tertiary-container);
|
|
114
115
|
}
|
|
115
116
|
|
|
117
|
+
.segment-control-info .segment-item-active {
|
|
118
|
+
background-color: var(--color-info-container);
|
|
119
|
+
color: var(--color-on-info-container);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.segment-control-success .segment-item-active {
|
|
123
|
+
background-color: var(--color-success-container);
|
|
124
|
+
color: var(--color-on-success-container);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.segment-control-warning .segment-item-active {
|
|
128
|
+
background-color: var(--color-warning-container);
|
|
129
|
+
color: var(--color-on-warning-container);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.segment-control-error .segment-item-active {
|
|
133
|
+
background-color: var(--color-error-container);
|
|
134
|
+
color: var(--color-on-error-container);
|
|
135
|
+
}
|
|
136
|
+
|
|
116
137
|
/* Full Width */
|
|
117
138
|
.segment-control-full {
|
|
118
139
|
display: flex;
|
|
@@ -14,7 +14,7 @@ export const css = `/**
|
|
|
14
14
|
line-height: 1.5rem;
|
|
15
15
|
color: var(--color-on-surface);
|
|
16
16
|
background-color: var(--color-surface);
|
|
17
|
-
border: 1px solid
|
|
17
|
+
border: 1px solid currentColor;
|
|
18
18
|
border-radius: 0.5rem;
|
|
19
19
|
outline: none;
|
|
20
20
|
cursor: pointer;
|
|
@@ -27,7 +27,7 @@ export const css = `/**
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
.select:hover:not(:disabled) {
|
|
30
|
-
|
|
30
|
+
background-color: var(--color-surface-container);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
.select:focus {
|
|
@@ -35,8 +35,7 @@ export const css = `/**
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
.select:focus-visible {
|
|
38
|
-
|
|
39
|
-
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
|
|
38
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
|
|
40
39
|
}
|
|
41
40
|
|
|
42
41
|
.select:disabled {
|
|
@@ -63,6 +62,14 @@ export const css = `/**
|
|
|
63
62
|
box-shadow: none;
|
|
64
63
|
}
|
|
65
64
|
|
|
65
|
+
.select-filled.select-primary:focus-visible { border-bottom-color: var(--color-primary); }
|
|
66
|
+
.select-filled.select-secondary:focus-visible { border-bottom-color: var(--color-secondary); }
|
|
67
|
+
.select-filled.select-tertiary:focus-visible { border-bottom-color: var(--color-tertiary); }
|
|
68
|
+
.select-filled.select-info:focus-visible { border-bottom-color: var(--color-info); }
|
|
69
|
+
.select-filled.select-success:focus-visible { border-bottom-color: var(--color-success); }
|
|
70
|
+
.select-filled.select-warning:focus-visible { border-bottom-color: var(--color-warning); }
|
|
71
|
+
.select-filled.select-error:focus-visible { border-bottom-color: var(--color-error); }
|
|
72
|
+
|
|
66
73
|
/* Outlined Variant (default is outlined) */
|
|
67
74
|
.select-outlined {
|
|
68
75
|
background-color: transparent;
|
|
@@ -70,40 +77,17 @@ export const css = `/**
|
|
|
70
77
|
border-radius: 0.5rem;
|
|
71
78
|
}
|
|
72
79
|
|
|
73
|
-
/* Color Variants
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
.select-secondary:focus-visible {
|
|
80
|
-
border-color: var(--color-secondary);
|
|
81
|
-
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-secondary) 10%, transparent);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
.select-tertiary:focus-visible {
|
|
85
|
-
border-color: var(--color-tertiary);
|
|
86
|
-
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-tertiary) 10%, transparent);
|
|
87
|
-
}
|
|
80
|
+
/* Color Variants — base .select:focus-visible uses currentColor 20%, so no per-variant
|
|
81
|
+
focus-visible overrides needed; setting color: here is sufficient. */
|
|
82
|
+
.select-primary { color: var(--color-primary); }
|
|
83
|
+
.select-secondary { color: var(--color-secondary); }
|
|
84
|
+
.select-tertiary { color: var(--color-tertiary); }
|
|
88
85
|
|
|
89
86
|
/* Semantic Colors */
|
|
90
|
-
.select-
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
.select-error:focus-visible {
|
|
95
|
-
border-color: var(--color-error);
|
|
96
|
-
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
.select-success {
|
|
100
|
-
border-color: var(--color-success);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
.select-success:focus-visible {
|
|
104
|
-
border-color: var(--color-success);
|
|
105
|
-
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 10%, transparent);
|
|
106
|
-
}
|
|
87
|
+
.select-info { color: var(--color-info); }
|
|
88
|
+
.select-success { color: var(--color-success); }
|
|
89
|
+
.select-warning { color: var(--color-warning); }
|
|
90
|
+
.select-error { color: var(--color-error); }
|
|
107
91
|
|
|
108
92
|
/* Size Variants */
|
|
109
93
|
.select-xs {
|
|
@@ -194,7 +178,7 @@ export const css = `/**
|
|
|
194
178
|
.select-ghost:focus-visible {
|
|
195
179
|
background-color: var(--color-surface-container);
|
|
196
180
|
border-color: transparent;
|
|
197
|
-
box-shadow:
|
|
181
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
|
|
198
182
|
}
|
|
199
183
|
|
|
200
184
|
/* Reduce Motion */
|