@duskmoon-dev/core 1.0.0 → 1.1.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 (39) hide show
  1. package/dist/components/button.css +47 -46
  2. package/dist/components/index.css +47 -46
  3. package/dist/esm/components/accordion.js +251 -0
  4. package/dist/esm/components/alert.js +206 -0
  5. package/dist/esm/components/appbar.js +315 -0
  6. package/dist/esm/components/autocomplete.js +276 -0
  7. package/dist/esm/components/avatar.js +174 -0
  8. package/dist/esm/components/badge.js +185 -0
  9. package/dist/esm/components/bottom-navigation.js +270 -0
  10. package/dist/esm/components/bottomsheet.js +341 -0
  11. package/dist/esm/components/button.js +482 -0
  12. package/dist/esm/components/card.js +227 -0
  13. package/dist/esm/components/chip.js +218 -0
  14. package/dist/esm/components/collapse.js +261 -0
  15. package/dist/esm/components/datepicker.js +354 -0
  16. package/dist/esm/components/dialog.js +180 -0
  17. package/dist/esm/components/divider.js +291 -0
  18. package/dist/esm/components/drawer.js +378 -0
  19. package/dist/esm/components/file-upload.js +328 -0
  20. package/dist/esm/components/form.js +448 -0
  21. package/dist/esm/components/input.js +247 -0
  22. package/dist/esm/components/list.js +195 -0
  23. package/dist/esm/components/markdown-body.js +412 -0
  24. package/dist/esm/components/modal.js +298 -0
  25. package/dist/esm/components/navigation.js +399 -0
  26. package/dist/esm/components/popover.js +333 -0
  27. package/dist/esm/components/progress.js +245 -0
  28. package/dist/esm/components/rating.js +237 -0
  29. package/dist/esm/components/skeleton.js +223 -0
  30. package/dist/esm/components/slider.js +334 -0
  31. package/dist/esm/components/snackbar.js +318 -0
  32. package/dist/esm/components/stepper.js +320 -0
  33. package/dist/esm/components/switch.js +284 -0
  34. package/dist/esm/components/table.js +206 -0
  35. package/dist/esm/components/timeline.js +360 -0
  36. package/dist/esm/components/toast.js +258 -0
  37. package/dist/esm/components/tooltip.js +291 -0
  38. package/dist/index.css +47 -46
  39. package/package.json +108 -38
@@ -0,0 +1,333 @@
1
+ // Auto-generated from popover.css
2
+ export const css = `/**
3
+ * Popover Component Styles
4
+ * DuskMoonUI - Material Design 3 inspired popover system
5
+ */
6
+
7
+ @layer components {
8
+ /* Popover Container */
9
+ .popover {
10
+ position: relative;
11
+ display: inline-block;
12
+ }
13
+
14
+ /* Popover Content */
15
+ .popover-content {
16
+ position: absolute;
17
+ z-index: 1050;
18
+ min-width: 12rem;
19
+ max-width: 20rem;
20
+ padding: 1rem;
21
+ background-color: var(--color-surface);
22
+ border: 1px solid var(--color-outline-variant);
23
+ border-radius: 0.75rem;
24
+ box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
25
+ opacity: 0;
26
+ visibility: hidden;
27
+ transform: scale(0.95);
28
+ transform-origin: center;
29
+ transition: opacity 150ms ease-out, visibility 150ms ease-out, transform 150ms ease-out;
30
+ }
31
+
32
+ .popover.show .popover-content,
33
+ .popover-content.show {
34
+ opacity: 1;
35
+ visibility: visible;
36
+ transform: scale(1);
37
+ }
38
+
39
+ /* Popover Arrow */
40
+ .popover-arrow {
41
+ position: absolute;
42
+ width: 0.75rem;
43
+ height: 0.75rem;
44
+ background-color: var(--color-surface);
45
+ border: 1px solid var(--color-outline-variant);
46
+ transform: rotate(45deg);
47
+ }
48
+
49
+ /* Position: Top (default) */
50
+ .popover-top .popover-content,
51
+ .popover .popover-content {
52
+ bottom: 100%;
53
+ left: 50%;
54
+ transform: translateX(-50%) scale(0.95);
55
+ margin-bottom: 0.75rem;
56
+ }
57
+
58
+ .popover-top.show .popover-content,
59
+ .popover.show .popover-content {
60
+ transform: translateX(-50%) scale(1);
61
+ }
62
+
63
+ .popover-top .popover-arrow,
64
+ .popover .popover-arrow {
65
+ bottom: -0.375rem;
66
+ left: 50%;
67
+ transform: translateX(-50%) rotate(45deg);
68
+ border-top: none;
69
+ border-left: none;
70
+ }
71
+
72
+ /* Position: Bottom */
73
+ .popover-bottom .popover-content {
74
+ top: 100%;
75
+ left: 50%;
76
+ transform: translateX(-50%) scale(0.95);
77
+ margin-top: 0.75rem;
78
+ }
79
+
80
+ .popover-bottom.show .popover-content {
81
+ transform: translateX(-50%) scale(1);
82
+ }
83
+
84
+ .popover-bottom .popover-arrow {
85
+ top: -0.375rem;
86
+ left: 50%;
87
+ transform: translateX(-50%) rotate(45deg);
88
+ border-bottom: none;
89
+ border-right: none;
90
+ }
91
+
92
+ /* Position: Left */
93
+ .popover-left .popover-content {
94
+ right: 100%;
95
+ top: 50%;
96
+ transform: translateY(-50%) scale(0.95);
97
+ margin-right: 0.75rem;
98
+ }
99
+
100
+ .popover-left.show .popover-content {
101
+ transform: translateY(-50%) scale(1);
102
+ }
103
+
104
+ .popover-left .popover-arrow {
105
+ right: -0.375rem;
106
+ top: 50%;
107
+ transform: translateY(-50%) rotate(45deg);
108
+ border-left: none;
109
+ border-bottom: none;
110
+ }
111
+
112
+ /* Position: Right */
113
+ .popover-right .popover-content {
114
+ left: 100%;
115
+ top: 50%;
116
+ transform: translateY(-50%) scale(0.95);
117
+ margin-left: 0.75rem;
118
+ }
119
+
120
+ .popover-right.show .popover-content {
121
+ transform: translateY(-50%) scale(1);
122
+ }
123
+
124
+ .popover-right .popover-arrow {
125
+ left: -0.375rem;
126
+ top: 50%;
127
+ transform: translateY(-50%) rotate(45deg);
128
+ border-right: none;
129
+ border-top: none;
130
+ }
131
+
132
+ /* Popover Header */
133
+ .popover-header {
134
+ display: flex;
135
+ align-items: center;
136
+ gap: 0.5rem;
137
+ padding-bottom: 0.75rem;
138
+ margin-bottom: 0.75rem;
139
+ border-bottom: 1px solid var(--color-outline-variant);
140
+ }
141
+
142
+ .popover-title {
143
+ flex: 1;
144
+ font-size: 0.875rem;
145
+ font-weight: 600;
146
+ color: var(--color-on-surface);
147
+ }
148
+
149
+ .popover-close {
150
+ display: flex;
151
+ align-items: center;
152
+ justify-content: center;
153
+ width: 1.5rem;
154
+ height: 1.5rem;
155
+ color: var(--color-on-surface-variant);
156
+ background-color: transparent;
157
+ border: none;
158
+ border-radius: 0.25rem;
159
+ cursor: pointer;
160
+ transition: background-color 150ms ease-in-out;
161
+ }
162
+
163
+ .popover-close:hover {
164
+ background-color: var(--color-surface-container);
165
+ }
166
+
167
+ .popover-close:focus-visible {
168
+ outline: 2px solid var(--color-primary);
169
+ outline-offset: 2px;
170
+ }
171
+
172
+ /* Popover Body */
173
+ .popover-body {
174
+ font-size: 0.875rem;
175
+ color: var(--color-on-surface-variant);
176
+ line-height: 1.5;
177
+ }
178
+
179
+ /* Popover Footer */
180
+ .popover-footer {
181
+ display: flex;
182
+ align-items: center;
183
+ justify-content: flex-end;
184
+ gap: 0.5rem;
185
+ padding-top: 0.75rem;
186
+ margin-top: 0.75rem;
187
+ border-top: 1px solid var(--color-outline-variant);
188
+ }
189
+
190
+ /* No Arrow Variant */
191
+ .popover-no-arrow .popover-arrow {
192
+ display: none;
193
+ }
194
+
195
+ /* Size Variants */
196
+ .popover-sm .popover-content {
197
+ min-width: 8rem;
198
+ max-width: 14rem;
199
+ padding: 0.75rem;
200
+ }
201
+
202
+ .popover-lg .popover-content {
203
+ min-width: 16rem;
204
+ max-width: 28rem;
205
+ padding: 1.25rem;
206
+ }
207
+
208
+ .popover-full .popover-content {
209
+ min-width: 0;
210
+ max-width: none;
211
+ width: max-content;
212
+ }
213
+
214
+ /* Color Variants */
215
+ .popover-dark .popover-content {
216
+ background-color: var(--color-on-surface);
217
+ color: var(--color-surface);
218
+ border-color: transparent;
219
+ }
220
+
221
+ .popover-dark .popover-arrow {
222
+ background-color: var(--color-on-surface);
223
+ border-color: transparent;
224
+ }
225
+
226
+ .popover-dark .popover-title {
227
+ color: var(--color-surface);
228
+ }
229
+
230
+ .popover-dark .popover-body {
231
+ color: var(--color-surface);
232
+ opacity: 0.9;
233
+ }
234
+
235
+ .popover-primary .popover-content {
236
+ background-color: var(--color-primary-container);
237
+ border-color: var(--color-primary);
238
+ }
239
+
240
+ .popover-primary .popover-arrow {
241
+ background-color: var(--color-primary-container);
242
+ border-color: var(--color-primary);
243
+ }
244
+
245
+ /* Hover Trigger */
246
+ .popover-hover:hover .popover-content,
247
+ .popover-hover:focus-within .popover-content {
248
+ opacity: 1;
249
+ visibility: visible;
250
+ transform: translateX(-50%) scale(1);
251
+ }
252
+
253
+ .popover-hover.popover-bottom:hover .popover-content,
254
+ .popover-hover.popover-bottom:focus-within .popover-content {
255
+ transform: translateX(-50%) scale(1);
256
+ }
257
+
258
+ .popover-hover.popover-left:hover .popover-content,
259
+ .popover-hover.popover-left:focus-within .popover-content,
260
+ .popover-hover.popover-right:hover .popover-content,
261
+ .popover-hover.popover-right:focus-within .popover-content {
262
+ transform: translateY(-50%) scale(1);
263
+ }
264
+
265
+ /* Menu Popover */
266
+ .popover-menu .popover-content {
267
+ padding: 0.5rem;
268
+ }
269
+
270
+ .popover-menu-item {
271
+ display: flex;
272
+ align-items: center;
273
+ gap: 0.75rem;
274
+ width: 100%;
275
+ padding: 0.5rem 0.75rem;
276
+ font-size: 0.875rem;
277
+ color: var(--color-on-surface);
278
+ background-color: transparent;
279
+ border: none;
280
+ border-radius: 0.5rem;
281
+ cursor: pointer;
282
+ text-align: left;
283
+ transition: background-color 150ms ease-in-out;
284
+ }
285
+
286
+ .popover-menu-item:hover {
287
+ background-color: var(--color-surface-container);
288
+ }
289
+
290
+ .popover-menu-item:focus-visible {
291
+ outline: 2px solid var(--color-primary);
292
+ outline-offset: -2px;
293
+ }
294
+
295
+ .popover-menu-item-icon {
296
+ display: flex;
297
+ align-items: center;
298
+ justify-content: center;
299
+ width: 1.25rem;
300
+ height: 1.25rem;
301
+ color: var(--color-on-surface-variant);
302
+ }
303
+
304
+ .popover-menu-divider {
305
+ height: 1px;
306
+ margin: 0.5rem 0;
307
+ background-color: var(--color-outline-variant);
308
+ }
309
+
310
+ /* Confirmation Popover */
311
+ .popover-confirm .popover-content {
312
+ text-align: center;
313
+ }
314
+
315
+ .popover-confirm .popover-footer {
316
+ justify-content: center;
317
+ }
318
+
319
+ /* Reduce Motion */
320
+ @media (prefers-reduced-motion: reduce) {
321
+ .popover-content,
322
+ .popover-close,
323
+ .popover-menu-item {
324
+ transition: none;
325
+ }
326
+ }
327
+ }
328
+ `;
329
+
330
+ const sheet = new CSSStyleSheet();
331
+ sheet.replaceSync(css);
332
+ export const styles = sheet;
333
+ export default sheet;
@@ -0,0 +1,245 @@
1
+ // Auto-generated from progress.css
2
+ export const css = `/**
3
+ * Progress Component Styles
4
+ * DuskMoonUI - Material Design 3 inspired progress system
5
+ */
6
+
7
+ @layer components {
8
+ /* Base Progress (Linear) */
9
+ .progress {
10
+ position: relative;
11
+ width: 100%;
12
+ height: 0.5rem;
13
+ background-color: var(--color-surface-container-highest);
14
+ border-radius: 9999px;
15
+ overflow: hidden;
16
+ }
17
+
18
+ /* Progress Bar */
19
+ .progress-bar {
20
+ position: absolute;
21
+ top: 0;
22
+ left: 0;
23
+ height: 100%;
24
+ background-color: var(--color-primary);
25
+ border-radius: 9999px;
26
+ transition: width 300ms ease-in-out;
27
+ }
28
+
29
+ /* Color Variants */
30
+ .progress-primary .progress-bar {
31
+ background-color: var(--color-primary);
32
+ }
33
+
34
+ .progress-secondary .progress-bar {
35
+ background-color: var(--color-secondary);
36
+ }
37
+
38
+ .progress-tertiary .progress-bar {
39
+ background-color: var(--color-tertiary);
40
+ }
41
+
42
+ .progress-info .progress-bar {
43
+ background-color: var(--color-info);
44
+ }
45
+
46
+ .progress-success .progress-bar {
47
+ background-color: var(--color-success);
48
+ }
49
+
50
+ .progress-warning .progress-bar {
51
+ background-color: var(--color-warning);
52
+ }
53
+
54
+ .progress-error .progress-bar {
55
+ background-color: var(--color-error);
56
+ }
57
+
58
+ /* Size Variants */
59
+ .progress-xs {
60
+ height: 0.25rem;
61
+ }
62
+
63
+ .progress-sm {
64
+ height: 0.375rem;
65
+ }
66
+
67
+ .progress-lg {
68
+ height: 0.75rem;
69
+ }
70
+
71
+ .progress-xl {
72
+ height: 1rem;
73
+ }
74
+
75
+ /* Indeterminate Animation */
76
+ .progress-indeterminate .progress-bar {
77
+ width: 30%;
78
+ animation: progress-indeterminate 1.5s infinite ease-in-out;
79
+ }
80
+
81
+ @keyframes progress-indeterminate {
82
+ 0% {
83
+ left: -30%;
84
+ }
85
+ 100% {
86
+ left: 100%;
87
+ }
88
+ }
89
+
90
+ /* Progress with Label */
91
+ .progress-labeled {
92
+ position: relative;
93
+ }
94
+
95
+ .progress-label {
96
+ position: absolute;
97
+ top: 50%;
98
+ left: 50%;
99
+ transform: translate(-50%, -50%);
100
+ font-size: 0.625rem;
101
+ font-weight: 600;
102
+ color: var(--color-on-surface);
103
+ }
104
+
105
+ /* Striped Progress */
106
+ .progress-striped .progress-bar {
107
+ background-image: linear-gradient(
108
+ 45deg,
109
+ rgba(255, 255, 255, 0.15) 25%,
110
+ transparent 25%,
111
+ transparent 50%,
112
+ rgba(255, 255, 255, 0.15) 50%,
113
+ rgba(255, 255, 255, 0.15) 75%,
114
+ transparent 75%,
115
+ transparent
116
+ );
117
+ background-size: 1rem 1rem;
118
+ }
119
+
120
+ .progress-striped.progress-animated .progress-bar {
121
+ animation: progress-striped 1s linear infinite;
122
+ }
123
+
124
+ @keyframes progress-striped {
125
+ from {
126
+ background-position: 1rem 0;
127
+ }
128
+ to {
129
+ background-position: 0 0;
130
+ }
131
+ }
132
+
133
+ /* Circular Progress */
134
+ .progress-circular {
135
+ position: relative;
136
+ width: 3rem;
137
+ height: 3rem;
138
+ display: inline-flex;
139
+ align-items: center;
140
+ justify-content: center;
141
+ }
142
+
143
+ .progress-circular svg {
144
+ width: 100%;
145
+ height: 100%;
146
+ transform: rotate(-90deg);
147
+ }
148
+
149
+ .progress-circular-track {
150
+ fill: none;
151
+ stroke: var(--color-surface-container-highest);
152
+ stroke-width: 4;
153
+ }
154
+
155
+ .progress-circular-bar {
156
+ fill: none;
157
+ stroke: var(--color-primary);
158
+ stroke-width: 4;
159
+ stroke-linecap: round;
160
+ transition: stroke-dashoffset 300ms ease-in-out;
161
+ }
162
+
163
+ .progress-circular-label {
164
+ position: absolute;
165
+ font-size: 0.75rem;
166
+ font-weight: 600;
167
+ color: var(--color-on-surface);
168
+ }
169
+
170
+ /* Circular Size Variants */
171
+ .progress-circular-sm {
172
+ width: 2rem;
173
+ height: 2rem;
174
+ }
175
+
176
+ .progress-circular-sm .progress-circular-label {
177
+ font-size: 0.5rem;
178
+ }
179
+
180
+ .progress-circular-lg {
181
+ width: 4rem;
182
+ height: 4rem;
183
+ }
184
+
185
+ .progress-circular-lg .progress-circular-label {
186
+ font-size: 1rem;
187
+ }
188
+
189
+ .progress-circular-xl {
190
+ width: 6rem;
191
+ height: 6rem;
192
+ }
193
+
194
+ .progress-circular-xl .progress-circular-label {
195
+ font-size: 1.25rem;
196
+ }
197
+
198
+ /* Circular Indeterminate */
199
+ .progress-circular-indeterminate svg {
200
+ animation: progress-circular-rotate 2s linear infinite;
201
+ }
202
+
203
+ .progress-circular-indeterminate .progress-circular-bar {
204
+ stroke-dasharray: 80, 200;
205
+ stroke-dashoffset: 0;
206
+ animation: progress-circular-dash 1.5s ease-in-out infinite;
207
+ }
208
+
209
+ @keyframes progress-circular-rotate {
210
+ 100% {
211
+ transform: rotate(270deg);
212
+ }
213
+ }
214
+
215
+ @keyframes progress-circular-dash {
216
+ 0% {
217
+ stroke-dasharray: 1, 200;
218
+ stroke-dashoffset: 0;
219
+ }
220
+ 50% {
221
+ stroke-dasharray: 100, 200;
222
+ stroke-dashoffset: -15;
223
+ }
224
+ 100% {
225
+ stroke-dasharray: 100, 200;
226
+ stroke-dashoffset: -125;
227
+ }
228
+ }
229
+
230
+ /* Reduce Motion */
231
+ @media (prefers-reduced-motion: reduce) {
232
+ .progress-indeterminate .progress-bar,
233
+ .progress-striped.progress-animated .progress-bar,
234
+ .progress-circular-indeterminate svg,
235
+ .progress-circular-indeterminate .progress-circular-bar {
236
+ animation: none;
237
+ }
238
+ }
239
+ }
240
+ `;
241
+
242
+ const sheet = new CSSStyleSheet();
243
+ sheet.replaceSync(css);
244
+ export const styles = sheet;
245
+ export default sheet;