@duskmoon-dev/core 1.1.1 → 1.3.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/checkbox.css +231 -0
- package/dist/components/collapse.css +208 -8
- package/dist/components/datepicker.css +404 -10
- package/dist/components/form-group.css +308 -0
- package/dist/components/index.css +4598 -816
- package/dist/components/multi-select.css +491 -0
- package/dist/components/navigation.css +346 -2
- package/dist/components/otp-input.css +195 -0
- package/dist/components/pin-input.css +184 -0
- package/dist/components/radio.css +183 -0
- package/dist/components/segment-control.css +186 -0
- package/dist/components/select.css +205 -0
- package/dist/components/switch.css +150 -193
- package/dist/components/textarea.css +202 -0
- package/dist/components/time-input.css +252 -0
- package/dist/components/tree-select.css +439 -0
- package/dist/esm/components/checkbox.js +238 -0
- package/dist/esm/components/collapse.js +208 -8
- package/dist/esm/components/datepicker.js +404 -10
- package/dist/esm/components/form-group.js +315 -0
- package/dist/esm/components/multi-select.js +498 -0
- package/dist/esm/components/navigation.js +346 -2
- package/dist/esm/components/otp-input.js +202 -0
- package/dist/esm/components/pin-input.js +191 -0
- package/dist/esm/components/radio.js +190 -0
- package/dist/esm/components/segment-control.js +193 -0
- package/dist/esm/components/select.js +212 -0
- package/dist/esm/components/switch.js +150 -193
- package/dist/esm/components/textarea.js +209 -0
- package/dist/esm/components/time-input.js +259 -0
- package/dist/esm/components/tree-select.js +446 -0
- package/dist/index.css +4402 -620
- package/package.json +56 -1
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Select Component Styles
|
|
3
|
+
* DuskMoonUI - Material Design 3 inspired select/dropdown system
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
@layer components {
|
|
7
|
+
/* Base Select */
|
|
8
|
+
.select {
|
|
9
|
+
display: block;
|
|
10
|
+
width: 100%;
|
|
11
|
+
padding: 0.75rem 2.5rem 0.75rem 1rem;
|
|
12
|
+
font-size: 1rem;
|
|
13
|
+
line-height: 1.5rem;
|
|
14
|
+
color: var(--color-on-surface);
|
|
15
|
+
background-color: var(--color-surface);
|
|
16
|
+
border: 1px solid var(--color-outline);
|
|
17
|
+
border-radius: 0.5rem;
|
|
18
|
+
outline: none;
|
|
19
|
+
cursor: pointer;
|
|
20
|
+
appearance: none;
|
|
21
|
+
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");
|
|
22
|
+
background-position: right 0.75rem center;
|
|
23
|
+
background-repeat: no-repeat;
|
|
24
|
+
background-size: 1.25rem 1.25rem;
|
|
25
|
+
transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.select:hover:not(:disabled) {
|
|
29
|
+
border-color: var(--color-on-surface-variant);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.select:focus {
|
|
33
|
+
outline: none;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.select:focus-visible {
|
|
37
|
+
border-color: var(--color-primary);
|
|
38
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.select:disabled {
|
|
42
|
+
cursor: not-allowed;
|
|
43
|
+
opacity: 0.5;
|
|
44
|
+
background-color: var(--color-surface-container);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/* Filled Variant */
|
|
48
|
+
.select-filled {
|
|
49
|
+
background-color: var(--color-surface-container);
|
|
50
|
+
border: none;
|
|
51
|
+
border-bottom: 2px solid var(--color-outline);
|
|
52
|
+
border-radius: 0.5rem 0.5rem 0 0;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.select-filled:hover:not(:disabled) {
|
|
56
|
+
background-color: var(--color-surface-container-high);
|
|
57
|
+
border-bottom-color: var(--color-on-surface);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.select-filled:focus-visible {
|
|
61
|
+
border-bottom-color: var(--color-primary);
|
|
62
|
+
box-shadow: none;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/* Outlined Variant (default is outlined) */
|
|
66
|
+
.select-outlined {
|
|
67
|
+
background-color: transparent;
|
|
68
|
+
border: 1px solid var(--color-outline);
|
|
69
|
+
border-radius: 0.5rem;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/* Color Variants */
|
|
73
|
+
.select-primary:focus-visible {
|
|
74
|
+
border-color: var(--color-primary);
|
|
75
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.select-secondary:focus-visible {
|
|
79
|
+
border-color: var(--color-secondary);
|
|
80
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-secondary) 10%, transparent);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.select-tertiary:focus-visible {
|
|
84
|
+
border-color: var(--color-tertiary);
|
|
85
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-tertiary) 10%, transparent);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/* Semantic Colors */
|
|
89
|
+
.select-error {
|
|
90
|
+
border-color: var(--color-error);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.select-error:focus-visible {
|
|
94
|
+
border-color: var(--color-error);
|
|
95
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.select-success {
|
|
99
|
+
border-color: var(--color-success);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.select-success:focus-visible {
|
|
103
|
+
border-color: var(--color-success);
|
|
104
|
+
box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 10%, transparent);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/* Size Variants */
|
|
108
|
+
.select-xs {
|
|
109
|
+
padding: 0.375rem 2rem 0.375rem 0.625rem;
|
|
110
|
+
font-size: 0.75rem;
|
|
111
|
+
line-height: 1rem;
|
|
112
|
+
border-radius: 0.25rem;
|
|
113
|
+
background-size: 1rem 1rem;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.select-sm {
|
|
117
|
+
padding: 0.5rem 2.25rem 0.5rem 0.75rem;
|
|
118
|
+
font-size: 0.875rem;
|
|
119
|
+
line-height: 1.25rem;
|
|
120
|
+
border-radius: 0.375rem;
|
|
121
|
+
background-size: 1.125rem 1.125rem;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.select-lg {
|
|
125
|
+
padding: 1rem 3rem 1rem 1.25rem;
|
|
126
|
+
font-size: 1.125rem;
|
|
127
|
+
line-height: 1.75rem;
|
|
128
|
+
border-radius: 0.625rem;
|
|
129
|
+
background-size: 1.5rem 1.5rem;
|
|
130
|
+
background-position: right 1rem center;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/* Select Container */
|
|
134
|
+
.select-container {
|
|
135
|
+
position: relative;
|
|
136
|
+
display: flex;
|
|
137
|
+
flex-direction: column;
|
|
138
|
+
gap: 0.25rem;
|
|
139
|
+
width: 100%;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.select-label {
|
|
143
|
+
font-size: 0.875rem;
|
|
144
|
+
font-weight: 500;
|
|
145
|
+
color: var(--color-on-surface);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.select-helper {
|
|
149
|
+
font-size: 0.75rem;
|
|
150
|
+
color: var(--color-on-surface-variant);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.select-container-error .select-helper {
|
|
154
|
+
color: var(--color-error);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/* Select Group */
|
|
158
|
+
.select-group {
|
|
159
|
+
display: flex;
|
|
160
|
+
flex-direction: column;
|
|
161
|
+
gap: 0.25rem;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/* Multiple Select */
|
|
165
|
+
.select-multiple {
|
|
166
|
+
padding: 0.5rem;
|
|
167
|
+
height: auto;
|
|
168
|
+
min-height: 6rem;
|
|
169
|
+
background-image: none;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
.select-multiple option {
|
|
173
|
+
padding: 0.5rem 0.75rem;
|
|
174
|
+
border-radius: 0.25rem;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
.select-multiple option:checked {
|
|
178
|
+
background-color: var(--color-primary-container);
|
|
179
|
+
color: var(--color-on-primary-container);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/* Ghost Select */
|
|
183
|
+
.select-ghost {
|
|
184
|
+
background-color: transparent;
|
|
185
|
+
border-color: transparent;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.select-ghost:hover:not(:disabled) {
|
|
189
|
+
background-color: var(--color-surface-container);
|
|
190
|
+
border-color: transparent;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
.select-ghost:focus-visible {
|
|
194
|
+
background-color: var(--color-surface-container);
|
|
195
|
+
border-color: transparent;
|
|
196
|
+
box-shadow: none;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/* Reduce Motion */
|
|
200
|
+
@media (prefers-reduced-motion: reduce) {
|
|
201
|
+
.select {
|
|
202
|
+
transition: none;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
@@ -1,277 +1,234 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Switch Component Styles
|
|
3
|
-
* DuskMoonUI - Material Design 3 inspired switch/toggle
|
|
3
|
+
* DuskMoonUI - Material Design 3 inspired switch/toggle
|
|
4
|
+
*
|
|
5
|
+
* Usage: <input type="checkbox" class="switch" />
|
|
6
|
+
* With label: <label class="switch-label"><input type="checkbox" class="switch" /><span>Label</span></label>
|
|
4
7
|
*/
|
|
5
8
|
|
|
6
9
|
@layer components {
|
|
7
|
-
/* Base Switch */
|
|
10
|
+
/* Base Switch - applied directly to input[type="checkbox"] */
|
|
8
11
|
.switch {
|
|
12
|
+
--switch-width: 3.25rem;
|
|
13
|
+
--switch-height: 2rem;
|
|
14
|
+
--switch-thumb-size: 1rem;
|
|
15
|
+
--switch-color: var(--color-primary);
|
|
16
|
+
--switch-track-color: var(--color-surface-container-highest);
|
|
17
|
+
--switch-border-color: var(--color-outline);
|
|
18
|
+
--switch-thumb-color: var(--color-outline);
|
|
19
|
+
|
|
9
20
|
position: relative;
|
|
10
|
-
display: inline-
|
|
21
|
+
display: inline-grid;
|
|
22
|
+
grid-template-columns: 0fr 1fr 1fr;
|
|
11
23
|
align-items: center;
|
|
12
|
-
|
|
24
|
+
width: var(--switch-width);
|
|
25
|
+
height: var(--switch-height);
|
|
26
|
+
margin: 0;
|
|
27
|
+
padding: 0.25rem;
|
|
13
28
|
cursor: pointer;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
width:
|
|
29
|
-
height:
|
|
30
|
-
background-color: var(--
|
|
31
|
-
border: 2px solid var(--color-outline);
|
|
32
|
-
border-radius: 9999px;
|
|
33
|
-
transition: background-color 200ms ease-in-out, border-color 200ms ease-in-out;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/* Switch Thumb */
|
|
37
|
-
.switch-thumb {
|
|
38
|
-
position: absolute;
|
|
39
|
-
top: 50%;
|
|
40
|
-
left: 0.25rem;
|
|
41
|
-
width: 1rem;
|
|
42
|
-
height: 1rem;
|
|
43
|
-
background-color: var(--color-outline);
|
|
29
|
+
appearance: none;
|
|
30
|
+
background-color: var(--switch-track-color);
|
|
31
|
+
border: 2px solid var(--switch-border-color);
|
|
32
|
+
border-radius: var(--switch-height);
|
|
33
|
+
/* Use !important to override global * { transition } rules from layers */
|
|
34
|
+
transition: background-color 200ms ease-in-out !important,
|
|
35
|
+
border-color 200ms ease-in-out !important,
|
|
36
|
+
grid-template-columns 200ms ease-in-out !important;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/* Thumb using ::before pseudo-element */
|
|
40
|
+
.switch::before {
|
|
41
|
+
content: "";
|
|
42
|
+
grid-column: 2;
|
|
43
|
+
width: var(--switch-thumb-size);
|
|
44
|
+
height: var(--switch-thumb-size);
|
|
45
|
+
background-color: var(--switch-thumb-color);
|
|
44
46
|
border-radius: 50%;
|
|
45
|
-
|
|
46
|
-
transition:
|
|
47
|
+
/* Use !important to override global * { transition } rules */
|
|
48
|
+
transition: background-color 200ms ease-in-out !important,
|
|
49
|
+
width 200ms ease-in-out !important,
|
|
50
|
+
margin 200ms ease-in-out !important;
|
|
47
51
|
}
|
|
48
52
|
|
|
49
53
|
/* Checked State */
|
|
50
|
-
.switch
|
|
51
|
-
|
|
52
|
-
|
|
54
|
+
.switch:checked {
|
|
55
|
+
grid-template-columns: 1fr 1fr 0fr;
|
|
56
|
+
background-color: var(--switch-color);
|
|
57
|
+
border-color: var(--switch-color);
|
|
53
58
|
}
|
|
54
59
|
|
|
55
|
-
.switch
|
|
56
|
-
left: calc(100% - 1.5rem);
|
|
57
|
-
width: 1.5rem;
|
|
58
|
-
height: 1.5rem;
|
|
60
|
+
.switch:checked::before {
|
|
59
61
|
background-color: var(--color-primary-content);
|
|
60
62
|
}
|
|
61
63
|
|
|
62
|
-
/* Hover State */
|
|
63
|
-
.switch:hover
|
|
64
|
-
|
|
65
|
-
position: absolute;
|
|
66
|
-
top: 50%;
|
|
67
|
-
left: 0.125rem;
|
|
68
|
-
width: 2.5rem;
|
|
69
|
-
height: 2.5rem;
|
|
70
|
-
background-color: var(--color-on-surface);
|
|
71
|
-
border-radius: 50%;
|
|
72
|
-
transform: translate(-0.75rem, -50%);
|
|
73
|
-
opacity: 0.08;
|
|
74
|
-
transition: opacity 150ms ease-in-out;
|
|
64
|
+
/* Hover State (unchecked) */
|
|
65
|
+
.switch:hover:not(:disabled):not(:checked) {
|
|
66
|
+
background-color: var(--color-surface-container-high);
|
|
75
67
|
}
|
|
76
68
|
|
|
77
|
-
.switch:hover
|
|
78
|
-
|
|
79
|
-
right: 0.125rem;
|
|
80
|
-
transform: translate(0.75rem, -50%);
|
|
81
|
-
background-color: var(--color-primary);
|
|
69
|
+
.switch:hover:not(:disabled):not(:checked)::before {
|
|
70
|
+
background-color: var(--color-on-surface-variant);
|
|
82
71
|
}
|
|
83
72
|
|
|
84
|
-
/*
|
|
85
|
-
.switch
|
|
86
|
-
|
|
87
|
-
|
|
73
|
+
/* Hover State (checked) */
|
|
74
|
+
.switch:checked:hover:not(:disabled) {
|
|
75
|
+
background-color: color-mix(in oklch, var(--switch-color), black 10%);
|
|
76
|
+
border-color: color-mix(in oklch, var(--switch-color), black 10%);
|
|
88
77
|
}
|
|
89
78
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
opacity: 0.38;
|
|
93
|
-
cursor: not-allowed;
|
|
79
|
+
.switch:checked:hover:not(:disabled)::before {
|
|
80
|
+
background-color: var(--color-primary-container);
|
|
94
81
|
}
|
|
95
82
|
|
|
96
|
-
|
|
97
|
-
|
|
83
|
+
/* Focus State */
|
|
84
|
+
.switch:focus-visible {
|
|
85
|
+
outline: 2px solid var(--switch-color);
|
|
86
|
+
outline-offset: 2px;
|
|
98
87
|
}
|
|
99
88
|
|
|
100
|
-
/*
|
|
101
|
-
.switch
|
|
102
|
-
|
|
103
|
-
color: var(--color-on-surface);
|
|
89
|
+
/* Pressed/Active State - expand thumb slightly */
|
|
90
|
+
.switch:active:not(:disabled)::before {
|
|
91
|
+
width: calc(var(--switch-thumb-size) + 0.25rem);
|
|
104
92
|
}
|
|
105
93
|
|
|
106
|
-
.switch
|
|
107
|
-
|
|
94
|
+
.switch:checked:active:not(:disabled)::before {
|
|
95
|
+
margin-left: -0.25rem;
|
|
108
96
|
}
|
|
109
97
|
|
|
110
|
-
/*
|
|
111
|
-
.switch
|
|
112
|
-
|
|
113
|
-
|
|
98
|
+
/* Disabled State */
|
|
99
|
+
.switch:disabled {
|
|
100
|
+
cursor: not-allowed;
|
|
101
|
+
opacity: 0.38;
|
|
114
102
|
}
|
|
115
103
|
|
|
116
|
-
.switch
|
|
117
|
-
|
|
118
|
-
|
|
104
|
+
.switch:disabled:not(:checked) {
|
|
105
|
+
background-color: color-mix(in oklch, var(--color-surface-container-highest) 12%, transparent);
|
|
106
|
+
border-color: color-mix(in oklch, var(--color-on-surface) 12%, transparent);
|
|
119
107
|
}
|
|
120
108
|
|
|
121
|
-
.switch
|
|
122
|
-
|
|
123
|
-
width: 1.125rem;
|
|
124
|
-
height: 1.125rem;
|
|
109
|
+
.switch:disabled:not(:checked)::before {
|
|
110
|
+
background-color: color-mix(in oklch, var(--color-on-surface) 38%, transparent);
|
|
125
111
|
}
|
|
126
112
|
|
|
127
|
-
.switch
|
|
128
|
-
|
|
129
|
-
|
|
113
|
+
.switch:disabled:checked {
|
|
114
|
+
background-color: color-mix(in oklch, var(--color-on-surface) 12%, transparent);
|
|
115
|
+
border-color: transparent;
|
|
130
116
|
}
|
|
131
117
|
|
|
132
|
-
.switch
|
|
133
|
-
|
|
134
|
-
height: 1.25rem;
|
|
135
|
-
left: 0.375rem;
|
|
118
|
+
.switch:disabled:checked::before {
|
|
119
|
+
background-color: var(--color-surface);
|
|
136
120
|
}
|
|
137
121
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
}
|
|
122
|
+
/* ========================================
|
|
123
|
+
* Size Variants
|
|
124
|
+
* Thumb size = height - 4px (border) - 8px (padding/gap)
|
|
125
|
+
* ======================================== */
|
|
143
126
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
background-color: var(--color-primary);
|
|
149
|
-
border-color: var(--color-primary);
|
|
127
|
+
.switch-xs {
|
|
128
|
+
--switch-width: 2rem;
|
|
129
|
+
--switch-height: 1.25rem;
|
|
130
|
+
--switch-thumb-size: 0.5rem;
|
|
150
131
|
}
|
|
151
132
|
|
|
152
|
-
.switch-
|
|
153
|
-
|
|
154
|
-
|
|
133
|
+
.switch-sm {
|
|
134
|
+
--switch-width: 2.5rem;
|
|
135
|
+
--switch-height: 1.5rem;
|
|
136
|
+
--switch-thumb-size: 0.75rem;
|
|
155
137
|
}
|
|
156
138
|
|
|
157
|
-
.switch-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
139
|
+
.switch-md {
|
|
140
|
+
--switch-width: 3.25rem;
|
|
141
|
+
--switch-height: 2rem;
|
|
142
|
+
--switch-thumb-size: 1rem;
|
|
161
143
|
}
|
|
162
144
|
|
|
163
|
-
.switch-
|
|
164
|
-
|
|
165
|
-
|
|
145
|
+
.switch-lg {
|
|
146
|
+
--switch-width: 4rem;
|
|
147
|
+
--switch-height: 2.5rem;
|
|
148
|
+
--switch-thumb-size: 1.25rem;
|
|
166
149
|
}
|
|
167
150
|
|
|
168
|
-
.switch-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
151
|
+
.switch-xl {
|
|
152
|
+
--switch-width: 4.75rem;
|
|
153
|
+
--switch-height: 3rem;
|
|
154
|
+
--switch-thumb-size: 1.5rem;
|
|
172
155
|
}
|
|
173
156
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
}
|
|
157
|
+
/* ========================================
|
|
158
|
+
* Color Variants
|
|
159
|
+
* ======================================== */
|
|
178
160
|
|
|
179
|
-
.switch-
|
|
180
|
-
|
|
181
|
-
background-color: var(--color-success);
|
|
182
|
-
border-color: var(--color-success);
|
|
161
|
+
.switch-primary {
|
|
162
|
+
--switch-color: var(--color-primary);
|
|
183
163
|
}
|
|
184
164
|
|
|
185
|
-
.switch-
|
|
186
|
-
|
|
187
|
-
background-color: var(--color-error);
|
|
188
|
-
border-color: var(--color-error);
|
|
165
|
+
.switch-secondary {
|
|
166
|
+
--switch-color: var(--color-secondary);
|
|
189
167
|
}
|
|
190
168
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
display: flex;
|
|
194
|
-
align-items: center;
|
|
195
|
-
justify-content: center;
|
|
196
|
-
font-size: 0.625rem;
|
|
169
|
+
.switch-tertiary {
|
|
170
|
+
--switch-color: var(--color-tertiary);
|
|
197
171
|
}
|
|
198
172
|
|
|
199
|
-
.switch-
|
|
200
|
-
|
|
173
|
+
.switch-success {
|
|
174
|
+
--switch-color: var(--color-success);
|
|
201
175
|
}
|
|
202
176
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
width: 4rem;
|
|
206
|
-
display: flex;
|
|
207
|
-
align-items: center;
|
|
208
|
-
justify-content: space-between;
|
|
209
|
-
padding: 0 0.5rem;
|
|
177
|
+
.switch-warning {
|
|
178
|
+
--switch-color: var(--color-warning);
|
|
210
179
|
}
|
|
211
180
|
|
|
212
|
-
.switch-
|
|
213
|
-
|
|
214
|
-
font-weight: 600;
|
|
215
|
-
color: var(--color-on-surface-variant);
|
|
216
|
-
text-transform: uppercase;
|
|
217
|
-
transition: opacity 150ms ease-in-out;
|
|
181
|
+
.switch-error {
|
|
182
|
+
--switch-color: var(--color-error);
|
|
218
183
|
}
|
|
219
184
|
|
|
220
|
-
.switch-
|
|
221
|
-
|
|
185
|
+
.switch-info {
|
|
186
|
+
--switch-color: var(--color-info);
|
|
222
187
|
}
|
|
223
188
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
189
|
+
/* ========================================
|
|
190
|
+
* Switch with Label
|
|
191
|
+
* ======================================== */
|
|
227
192
|
|
|
228
|
-
.switch-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
193
|
+
.switch-label {
|
|
194
|
+
display: inline-flex;
|
|
195
|
+
align-items: center;
|
|
196
|
+
gap: 0.75rem;
|
|
197
|
+
cursor: pointer;
|
|
198
|
+
user-select: none;
|
|
199
|
+
font-size: 0.875rem;
|
|
200
|
+
color: var(--color-on-surface);
|
|
235
201
|
}
|
|
236
202
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
position: absolute;
|
|
241
|
-
top: 50%;
|
|
242
|
-
left: 50%;
|
|
243
|
-
width: 0.75rem;
|
|
244
|
-
height: 0.75rem;
|
|
245
|
-
border: 2px solid transparent;
|
|
246
|
-
border-top-color: var(--color-on-surface);
|
|
247
|
-
border-radius: 50%;
|
|
248
|
-
transform: translate(-50%, -50%);
|
|
249
|
-
animation: switch-spin 600ms linear infinite;
|
|
203
|
+
.switch-label:has(.switch:disabled) {
|
|
204
|
+
cursor: not-allowed;
|
|
205
|
+
opacity: 0.38;
|
|
250
206
|
}
|
|
251
207
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
}
|
|
256
|
-
}
|
|
208
|
+
/* ========================================
|
|
209
|
+
* Switch Group
|
|
210
|
+
* ======================================== */
|
|
257
211
|
|
|
258
|
-
/* Group */
|
|
259
212
|
.switch-group {
|
|
260
213
|
display: flex;
|
|
261
214
|
flex-direction: column;
|
|
262
215
|
gap: 0.75rem;
|
|
263
216
|
}
|
|
264
217
|
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
.
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
218
|
+
.switch-group-horizontal {
|
|
219
|
+
flex-direction: row;
|
|
220
|
+
flex-wrap: wrap;
|
|
221
|
+
gap: 1.5rem;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/* ========================================
|
|
225
|
+
* Reduce Motion
|
|
226
|
+
* ======================================== */
|
|
272
227
|
|
|
273
|
-
|
|
274
|
-
|
|
228
|
+
@media (prefers-reduced-motion: reduce) {
|
|
229
|
+
.switch,
|
|
230
|
+
.switch::before {
|
|
231
|
+
transition: none !important;
|
|
275
232
|
}
|
|
276
233
|
}
|
|
277
234
|
}
|