@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.
Files changed (54) hide show
  1. package/README.md +3 -3
  2. package/dist/components/appbar.css +2 -2
  3. package/dist/components/autocomplete.css +1 -1
  4. package/dist/components/card.css +4 -4
  5. package/dist/components/cascader.css +1 -1
  6. package/dist/components/collapse.css +1 -1
  7. package/dist/components/datepicker.css +2 -2
  8. package/dist/components/dialog.css +1 -1
  9. package/dist/components/drawer.css +1 -1
  10. package/dist/components/file-upload.css +1 -1
  11. package/dist/components/form-group.css +33 -1
  12. package/dist/components/index.css +630 -42
  13. package/dist/components/modal.css +1 -1
  14. package/dist/components/multi-select.css +1 -1
  15. package/dist/components/navigation.css +2 -2
  16. package/dist/components/nested-menu.css +261 -0
  17. package/dist/components/popover.css +28 -16
  18. package/dist/components/snackbar.css +1 -1
  19. package/dist/components/theme-controller.css +281 -0
  20. package/dist/components/time-input.css +1 -1
  21. package/dist/components/toast.css +1 -1
  22. package/dist/components/toggle.css +274 -0
  23. package/dist/components/tooltip.css +2 -2
  24. package/dist/components/tree-select.css +1 -1
  25. package/dist/esm/components/appbar.js +2 -2
  26. package/dist/esm/components/autocomplete.js +1 -1
  27. package/dist/esm/components/card.js +4 -4
  28. package/dist/esm/components/cascader.js +1 -1
  29. package/dist/esm/components/collapse.js +1 -1
  30. package/dist/esm/components/datepicker.js +2 -2
  31. package/dist/esm/components/dialog.js +1 -1
  32. package/dist/esm/components/drawer.js +1 -1
  33. package/dist/esm/components/file-upload.js +1 -1
  34. package/dist/esm/components/form-group.js +33 -1
  35. package/dist/esm/components/modal.js +1 -1
  36. package/dist/esm/components/multi-select.js +1 -1
  37. package/dist/esm/components/navigation.js +2 -2
  38. package/dist/esm/components/nested-menu.js +268 -0
  39. package/dist/esm/components/popover.js +28 -16
  40. package/dist/esm/components/snackbar.js +1 -1
  41. package/dist/esm/components/theme-controller.js +288 -0
  42. package/dist/esm/components/time-input.js +1 -1
  43. package/dist/esm/components/toast.js +1 -1
  44. package/dist/esm/components/toggle.js +281 -0
  45. package/dist/esm/components/tooltip.js +2 -2
  46. package/dist/esm/components/tree-select.js +1 -1
  47. package/dist/index.css +702 -73
  48. package/dist/index.min.css +1 -0
  49. package/dist/themes/moonlight.css +34 -16
  50. package/dist/themes/ocean.css +16 -7
  51. package/dist/themes/sunset.css +5 -4
  52. package/dist/themes/sunshine.css +6 -4
  53. package/dist/types/types/plugin.d.ts +1 -1
  54. 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: 0 4px 6px -1px rgb(0 0 0 / 0.1);
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: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
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: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
140
+ box-shadow: var(--shadow-md);
141
141
  overflow-y: auto;
142
142
  }
143
143