@duskmoon-dev/core 1.9.0 → 1.10.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.
- package/README.md +3 -3
- package/dist/components/appbar.css +2 -2
- package/dist/components/autocomplete.css +1 -1
- package/dist/components/card.css +4 -4
- package/dist/components/cascader.css +1 -1
- package/dist/components/collapse.css +1 -1
- package/dist/components/datepicker.css +2 -2
- package/dist/components/dialog.css +1 -1
- package/dist/components/drawer.css +1 -1
- package/dist/components/file-upload.css +1 -1
- package/dist/components/form-group.css +33 -1
- package/dist/components/index.css +630 -42
- package/dist/components/modal.css +1 -1
- package/dist/components/multi-select.css +1 -1
- package/dist/components/navigation.css +2 -2
- package/dist/components/nested-menu.css +261 -0
- package/dist/components/popover.css +28 -16
- package/dist/components/snackbar.css +1 -1
- package/dist/components/theme-controller.css +281 -0
- package/dist/components/time-input.css +1 -1
- package/dist/components/toast.css +1 -1
- package/dist/components/toggle.css +274 -0
- package/dist/components/tooltip.css +2 -2
- package/dist/components/tree-select.css +1 -1
- package/dist/esm/components/appbar.js +2 -2
- package/dist/esm/components/autocomplete.js +1 -1
- package/dist/esm/components/card.js +4 -4
- package/dist/esm/components/cascader.js +1 -1
- package/dist/esm/components/collapse.js +1 -1
- package/dist/esm/components/datepicker.js +2 -2
- package/dist/esm/components/dialog.js +1 -1
- package/dist/esm/components/drawer.js +1 -1
- package/dist/esm/components/file-upload.js +1 -1
- package/dist/esm/components/form-group.js +33 -1
- package/dist/esm/components/modal.js +1 -1
- package/dist/esm/components/multi-select.js +1 -1
- package/dist/esm/components/navigation.js +2 -2
- package/dist/esm/components/nested-menu.js +268 -0
- package/dist/esm/components/popover.js +28 -16
- package/dist/esm/components/snackbar.js +1 -1
- package/dist/esm/components/theme-controller.js +288 -0
- package/dist/esm/components/time-input.js +1 -1
- package/dist/esm/components/toast.js +1 -1
- package/dist/esm/components/toggle.js +281 -0
- package/dist/esm/components/tooltip.js +2 -2
- package/dist/esm/components/tree-select.js +1 -1
- package/dist/index.css +702 -73
- package/dist/index.min.css +1 -0
- package/dist/themes/moonlight.css +34 -16
- package/dist/themes/ocean.css +16 -7
- package/dist/themes/sunset.css +5 -4
- package/dist/themes/sunshine.css +6 -4
- package/dist/types/types/plugin.d.ts +1 -1
- package/package.json +21 -1
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
// Auto-generated from toggle.css
|
|
2
|
+
export const css = `/**
|
|
3
|
+
* Toggle Button Component Styles
|
|
4
|
+
* DuskMoonUI - Material Design 3 inspired toggle button
|
|
5
|
+
* Used for selecting between multiple options or toggling states
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
@layer components {
|
|
9
|
+
/* Base toggle button */
|
|
10
|
+
.toggle-btn {
|
|
11
|
+
display: inline-flex;
|
|
12
|
+
align-items: center;
|
|
13
|
+
justify-content: center;
|
|
14
|
+
gap: 0.5rem;
|
|
15
|
+
padding: 0.625rem 1rem;
|
|
16
|
+
font-size: 0.875rem;
|
|
17
|
+
font-weight: 500;
|
|
18
|
+
line-height: 1.25rem;
|
|
19
|
+
color: var(--color-on-surface-variant);
|
|
20
|
+
background-color: transparent;
|
|
21
|
+
border: 1px solid var(--color-outline);
|
|
22
|
+
border-radius: 0.5rem;
|
|
23
|
+
cursor: pointer;
|
|
24
|
+
transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
|
|
25
|
+
user-select: none;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/* Hover state */
|
|
29
|
+
.toggle-btn:hover:not(:disabled) {
|
|
30
|
+
background-color: color-mix(in oklch, var(--color-surface-variant) 50%, transparent);
|
|
31
|
+
border-color: var(--color-outline-variant);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/* Active/Selected state */
|
|
35
|
+
.toggle-btn-active,
|
|
36
|
+
.toggle-btn.active {
|
|
37
|
+
color: var(--color-on-primary-container);
|
|
38
|
+
background-color: var(--color-primary-container);
|
|
39
|
+
border-color: var(--color-primary);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.toggle-btn-active:hover:not(:disabled),
|
|
43
|
+
.toggle-btn.active:hover:not(:disabled) {
|
|
44
|
+
background-color: color-mix(in oklch, var(--color-primary-container) 90%, transparent);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/* Secondary variant */
|
|
48
|
+
.toggle-btn-secondary.toggle-btn-active,
|
|
49
|
+
.toggle-btn-secondary.active {
|
|
50
|
+
color: var(--color-on-secondary-container);
|
|
51
|
+
background-color: var(--color-secondary-container);
|
|
52
|
+
border-color: var(--color-secondary);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/* Tertiary variant */
|
|
56
|
+
.toggle-btn-tertiary.toggle-btn-active,
|
|
57
|
+
.toggle-btn-tertiary.active {
|
|
58
|
+
color: var(--color-on-tertiary-container);
|
|
59
|
+
background-color: var(--color-tertiary-container);
|
|
60
|
+
border-color: var(--color-tertiary);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/* Focus state */
|
|
64
|
+
.toggle-btn:focus-visible {
|
|
65
|
+
outline: 2px solid var(--color-primary);
|
|
66
|
+
outline-offset: 2px;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/* Disabled state */
|
|
70
|
+
.toggle-btn:disabled,
|
|
71
|
+
.toggle-btn-disabled {
|
|
72
|
+
opacity: 0.38;
|
|
73
|
+
cursor: not-allowed;
|
|
74
|
+
pointer-events: none;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/* Size variants */
|
|
78
|
+
.toggle-btn-sm {
|
|
79
|
+
padding: 0.375rem 0.75rem;
|
|
80
|
+
font-size: 0.8125rem;
|
|
81
|
+
gap: 0.375rem;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.toggle-btn-lg {
|
|
85
|
+
padding: 0.75rem 1.25rem;
|
|
86
|
+
font-size: 1rem;
|
|
87
|
+
gap: 0.625rem;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/* Toggle button group */
|
|
91
|
+
.toggle-group {
|
|
92
|
+
display: inline-flex;
|
|
93
|
+
align-items: center;
|
|
94
|
+
gap: 0;
|
|
95
|
+
border: 1px solid var(--color-outline);
|
|
96
|
+
border-radius: 0.5rem;
|
|
97
|
+
padding: 0.25rem;
|
|
98
|
+
background-color: color-mix(in oklch, var(--color-surface-variant) 30%, transparent);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/* Toggle buttons in group */
|
|
102
|
+
.toggle-group .toggle-btn {
|
|
103
|
+
border: none;
|
|
104
|
+
border-radius: 0.375rem;
|
|
105
|
+
margin: 0;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.toggle-group .toggle-btn:not(:last-child) {
|
|
109
|
+
margin-right: 0.125rem;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/* Vertical group */
|
|
113
|
+
.toggle-group-vertical {
|
|
114
|
+
flex-direction: column;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.toggle-group-vertical .toggle-btn:not(:last-child) {
|
|
118
|
+
margin-right: 0;
|
|
119
|
+
margin-bottom: 0.125rem;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/* Exclusive selection (radio-like behavior) */
|
|
123
|
+
.toggle-group-exclusive .toggle-btn {
|
|
124
|
+
flex: 1;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/* Icon-only toggle */
|
|
128
|
+
.toggle-btn-icon-only {
|
|
129
|
+
padding: 0.625rem;
|
|
130
|
+
aspect-ratio: 1;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.toggle-btn-icon-only.toggle-btn-sm {
|
|
134
|
+
padding: 0.5rem;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.toggle-btn-icon-only.toggle-btn-lg {
|
|
138
|
+
padding: 0.875rem;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/* With icon */
|
|
142
|
+
.toggle-icon {
|
|
143
|
+
width: 1.125rem;
|
|
144
|
+
height: 1.125rem;
|
|
145
|
+
flex-shrink: 0;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/* Segmented control style */
|
|
149
|
+
.toggle-segmented {
|
|
150
|
+
display: inline-flex;
|
|
151
|
+
align-items: center;
|
|
152
|
+
gap: 0;
|
|
153
|
+
background-color: var(--color-surface);
|
|
154
|
+
border: 1px solid var(--color-outline-variant);
|
|
155
|
+
border-radius: 0.5rem;
|
|
156
|
+
padding: 0.25rem;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.toggle-segmented .toggle-btn {
|
|
160
|
+
border: none;
|
|
161
|
+
background-color: transparent;
|
|
162
|
+
border-radius: 0.375rem;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
.toggle-segmented .toggle-btn.toggle-btn-active,
|
|
166
|
+
.toggle-segmented .toggle-btn.active {
|
|
167
|
+
background-color: var(--color-surface-variant);
|
|
168
|
+
border-color: transparent;
|
|
169
|
+
box-shadow: var(--shadow-sm);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/* Chip-like toggle */
|
|
173
|
+
.toggle-chip {
|
|
174
|
+
border-radius: 1rem;
|
|
175
|
+
padding: 0.5rem 1rem;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
.toggle-chip.toggle-btn-active,
|
|
179
|
+
.toggle-chip.active {
|
|
180
|
+
background-color: var(--color-primary-container);
|
|
181
|
+
border-color: var(--color-primary-container);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/* Outlined variant */
|
|
185
|
+
.toggle-outlined {
|
|
186
|
+
background-color: transparent;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
.toggle-outlined.toggle-btn-active,
|
|
190
|
+
.toggle-outlined.active {
|
|
191
|
+
background-color: color-mix(in oklch, var(--color-primary) 10%, transparent);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/* Filled variant */
|
|
195
|
+
.toggle-filled {
|
|
196
|
+
background-color: var(--color-surface-variant);
|
|
197
|
+
border: none;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
.toggle-filled.toggle-btn-active,
|
|
201
|
+
.toggle-filled.active {
|
|
202
|
+
background-color: var(--color-primary);
|
|
203
|
+
color: var(--color-on-primary);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/* With badge/indicator */
|
|
207
|
+
.toggle-badge {
|
|
208
|
+
position: relative;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
.toggle-badge::after {
|
|
212
|
+
content: "";
|
|
213
|
+
position: absolute;
|
|
214
|
+
top: 0.25rem;
|
|
215
|
+
right: 0.25rem;
|
|
216
|
+
width: 0.5rem;
|
|
217
|
+
height: 0.5rem;
|
|
218
|
+
background-color: var(--color-error);
|
|
219
|
+
border-radius: 50%;
|
|
220
|
+
border: 2px solid var(--color-surface);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/* Full width */
|
|
224
|
+
.toggle-full {
|
|
225
|
+
width: 100%;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
.toggle-group-full {
|
|
229
|
+
width: 100%;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
.toggle-group-full .toggle-btn {
|
|
233
|
+
flex: 1;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/* Loading state */
|
|
237
|
+
.toggle-loading {
|
|
238
|
+
position: relative;
|
|
239
|
+
pointer-events: none;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
.toggle-loading::after {
|
|
243
|
+
content: "";
|
|
244
|
+
position: absolute;
|
|
245
|
+
top: 50%;
|
|
246
|
+
left: 50%;
|
|
247
|
+
width: 1rem;
|
|
248
|
+
height: 1rem;
|
|
249
|
+
margin-top: -0.5rem;
|
|
250
|
+
margin-left: -0.5rem;
|
|
251
|
+
border: 2px solid currentColor;
|
|
252
|
+
border-top-color: transparent;
|
|
253
|
+
border-radius: 50%;
|
|
254
|
+
animation: toggle-spin 0.6s linear infinite;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
@keyframes toggle-spin {
|
|
258
|
+
0% {
|
|
259
|
+
transform: rotate(0deg);
|
|
260
|
+
}
|
|
261
|
+
100% {
|
|
262
|
+
transform: rotate(360deg);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
/* Reduce Motion */
|
|
267
|
+
@media (prefers-reduced-motion: reduce) {
|
|
268
|
+
.toggle-btn {
|
|
269
|
+
transition: none;
|
|
270
|
+
}
|
|
271
|
+
.toggle-loading::after {
|
|
272
|
+
animation: none;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
`;
|
|
277
|
+
|
|
278
|
+
const sheet = new CSSStyleSheet();
|
|
279
|
+
sheet.replaceSync(css);
|
|
280
|
+
export const styles = sheet;
|
|
281
|
+
export default sheet;
|
|
@@ -23,7 +23,7 @@ export const css = `/**
|
|
|
23
23
|
background-color: var(--color-on-surface);
|
|
24
24
|
color: var(--color-surface);
|
|
25
25
|
border-radius: 0.25rem;
|
|
26
|
-
box-shadow:
|
|
26
|
+
box-shadow: var(--shadow-md);
|
|
27
27
|
opacity: 0;
|
|
28
28
|
visibility: hidden;
|
|
29
29
|
transition: opacity 150ms ease-out, visibility 150ms ease-out;
|
|
@@ -152,7 +152,7 @@ export const css = `/**
|
|
|
152
152
|
background-color: var(--color-surface);
|
|
153
153
|
color: var(--color-on-surface);
|
|
154
154
|
border: 1px solid var(--color-outline);
|
|
155
|
-
box-shadow:
|
|
155
|
+
box-shadow: var(--shadow-md);
|
|
156
156
|
}
|
|
157
157
|
|
|
158
158
|
.tooltip.tooltip-light .tooltip-content::before {
|
|
@@ -137,7 +137,7 @@ export const css = `/**
|
|
|
137
137
|
background-color: var(--color-surface);
|
|
138
138
|
border: 1px solid var(--color-outline-variant);
|
|
139
139
|
border-radius: 0.5rem;
|
|
140
|
-
box-shadow:
|
|
140
|
+
box-shadow: var(--shadow-md);
|
|
141
141
|
overflow-y: auto;
|
|
142
142
|
}
|
|
143
143
|
|