@duskmoon-dev/core 1.0.0 → 1.1.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.
Files changed (36) hide show
  1. package/dist/esm/components/accordion.js +251 -0
  2. package/dist/esm/components/alert.js +206 -0
  3. package/dist/esm/components/appbar.js +315 -0
  4. package/dist/esm/components/autocomplete.js +276 -0
  5. package/dist/esm/components/avatar.js +174 -0
  6. package/dist/esm/components/badge.js +185 -0
  7. package/dist/esm/components/bottom-navigation.js +270 -0
  8. package/dist/esm/components/bottomsheet.js +341 -0
  9. package/dist/esm/components/button.js +481 -0
  10. package/dist/esm/components/card.js +227 -0
  11. package/dist/esm/components/chip.js +218 -0
  12. package/dist/esm/components/collapse.js +261 -0
  13. package/dist/esm/components/datepicker.js +354 -0
  14. package/dist/esm/components/dialog.js +180 -0
  15. package/dist/esm/components/divider.js +291 -0
  16. package/dist/esm/components/drawer.js +378 -0
  17. package/dist/esm/components/file-upload.js +328 -0
  18. package/dist/esm/components/form.js +448 -0
  19. package/dist/esm/components/input.js +247 -0
  20. package/dist/esm/components/list.js +195 -0
  21. package/dist/esm/components/markdown-body.js +412 -0
  22. package/dist/esm/components/modal.js +298 -0
  23. package/dist/esm/components/navigation.js +399 -0
  24. package/dist/esm/components/popover.js +333 -0
  25. package/dist/esm/components/progress.js +245 -0
  26. package/dist/esm/components/rating.js +237 -0
  27. package/dist/esm/components/skeleton.js +223 -0
  28. package/dist/esm/components/slider.js +334 -0
  29. package/dist/esm/components/snackbar.js +318 -0
  30. package/dist/esm/components/stepper.js +320 -0
  31. package/dist/esm/components/switch.js +284 -0
  32. package/dist/esm/components/table.js +206 -0
  33. package/dist/esm/components/timeline.js +360 -0
  34. package/dist/esm/components/toast.js +258 -0
  35. package/dist/esm/components/tooltip.js +291 -0
  36. package/package.json +108 -38
@@ -0,0 +1,237 @@
1
+ // Auto-generated from rating.css
2
+ export const css = `/**
3
+ * Rating Component Styles
4
+ * DuskMoonUI - Material Design 3 inspired rating system
5
+ */
6
+
7
+ @layer components {
8
+ /* Base Rating */
9
+ .rating {
10
+ display: inline-flex;
11
+ align-items: center;
12
+ gap: 0.125rem;
13
+ }
14
+
15
+ /* Rating Item */
16
+ .rating-item {
17
+ position: relative;
18
+ display: flex;
19
+ align-items: center;
20
+ justify-content: center;
21
+ color: var(--color-outline);
22
+ cursor: pointer;
23
+ transition: color 150ms ease-in-out, transform 150ms ease-in-out;
24
+ }
25
+
26
+ .rating-item:hover {
27
+ transform: scale(1.1);
28
+ }
29
+
30
+ .rating-item.active {
31
+ color: var(--color-warning-container);
32
+ }
33
+
34
+ .rating-item.filled {
35
+ color: var(--color-warning);
36
+ }
37
+
38
+ /* Rating Input (hidden) */
39
+ .rating-input {
40
+ position: absolute;
41
+ width: 0;
42
+ height: 0;
43
+ opacity: 0;
44
+ overflow: hidden;
45
+ }
46
+
47
+ /* Rating Icon */
48
+ .rating-icon {
49
+ width: 1.5rem;
50
+ height: 1.5rem;
51
+ font-size: 1.5rem;
52
+ line-height: 1;
53
+ }
54
+
55
+ /* Half Rating */
56
+ .rating-half {
57
+ position: relative;
58
+ overflow: hidden;
59
+ }
60
+
61
+ .rating-half .rating-icon-empty {
62
+ color: var(--color-outline);
63
+ }
64
+
65
+ .rating-half .rating-icon-filled {
66
+ position: absolute;
67
+ left: 0;
68
+ top: 0;
69
+ width: 50%;
70
+ overflow: hidden;
71
+ color: var(--color-warning);
72
+ }
73
+
74
+ /* Size Variants */
75
+ .rating-xs .rating-icon {
76
+ width: 0.875rem;
77
+ height: 0.875rem;
78
+ font-size: 0.875rem;
79
+ }
80
+
81
+ .rating-sm .rating-icon {
82
+ width: 1.25rem;
83
+ height: 1.25rem;
84
+ font-size: 1.25rem;
85
+ }
86
+
87
+ .rating-lg .rating-icon {
88
+ width: 2rem;
89
+ height: 2rem;
90
+ font-size: 2rem;
91
+ }
92
+
93
+ .rating-xl .rating-icon {
94
+ width: 2.5rem;
95
+ height: 2.5rem;
96
+ font-size: 2.5rem;
97
+ }
98
+
99
+ /* Color Variants */
100
+ .rating-primary .rating-item.filled {
101
+ color: var(--color-primary);
102
+ }
103
+
104
+ .rating-secondary .rating-item.filled {
105
+ color: var(--color-secondary);
106
+ }
107
+
108
+ .rating-error .rating-item.filled {
109
+ color: var(--color-error);
110
+ }
111
+
112
+ .rating-success .rating-item.filled {
113
+ color: var(--color-success);
114
+ }
115
+
116
+ /* Read Only */
117
+ .rating-readonly .rating-item {
118
+ cursor: default;
119
+ }
120
+
121
+ .rating-readonly .rating-item:hover {
122
+ transform: none;
123
+ }
124
+
125
+ /* Disabled */
126
+ .rating-disabled {
127
+ opacity: 0.6;
128
+ pointer-events: none;
129
+ }
130
+
131
+ /* With Label */
132
+ .rating-labeled {
133
+ display: flex;
134
+ align-items: center;
135
+ gap: 0.5rem;
136
+ }
137
+
138
+ .rating-label {
139
+ font-size: 0.875rem;
140
+ color: var(--color-on-surface-variant);
141
+ }
142
+
143
+ /* With Count */
144
+ .rating-count {
145
+ font-size: 0.75rem;
146
+ color: var(--color-on-surface-variant);
147
+ margin-left: 0.25rem;
148
+ }
149
+
150
+ /* Hover Preview */
151
+ .rating:not(.rating-readonly) .rating-item:hover ~ .rating-item {
152
+ color: var(--color-outline);
153
+ }
154
+
155
+ .rating:not(.rating-readonly):hover .rating-item {
156
+ color: var(--color-warning);
157
+ }
158
+
159
+ /* Focus Visible */
160
+ .rating-item:focus-visible {
161
+ outline: 2px solid var(--color-primary);
162
+ outline-offset: 2px;
163
+ border-radius: 0.25rem;
164
+ }
165
+
166
+ /* Rating Display (static) */
167
+ .rating-display {
168
+ display: inline-flex;
169
+ align-items: center;
170
+ gap: 0.375rem;
171
+ }
172
+
173
+ .rating-display-value {
174
+ font-size: 0.875rem;
175
+ font-weight: 600;
176
+ color: var(--color-on-surface);
177
+ }
178
+
179
+ .rating-display-stars {
180
+ display: flex;
181
+ gap: 0.0625rem;
182
+ color: var(--color-warning);
183
+ }
184
+
185
+ .rating-display-max {
186
+ font-size: 0.75rem;
187
+ color: var(--color-on-surface-variant);
188
+ }
189
+
190
+ /* Compact Rating */
191
+ .rating-compact {
192
+ gap: 0;
193
+ }
194
+
195
+ .rating-compact .rating-item {
196
+ padding: 0.125rem;
197
+ }
198
+
199
+ /* Animated */
200
+ .rating-animated .rating-item {
201
+ transition: color 150ms ease-in-out, transform 200ms cubic-bezier(0.34, 1.56, 0.64, 1);
202
+ }
203
+
204
+ .rating-animated .rating-item.filled {
205
+ animation: rating-pop 300ms ease-out;
206
+ }
207
+
208
+ @keyframes rating-pop {
209
+ 0% {
210
+ transform: scale(1);
211
+ }
212
+ 50% {
213
+ transform: scale(1.3);
214
+ }
215
+ 100% {
216
+ transform: scale(1);
217
+ }
218
+ }
219
+
220
+ /* Reduce Motion */
221
+ @media (prefers-reduced-motion: reduce) {
222
+ .rating-item,
223
+ .rating-animated .rating-item {
224
+ transition: color 0ms;
225
+ }
226
+
227
+ .rating-animated .rating-item.filled {
228
+ animation: none;
229
+ }
230
+ }
231
+ }
232
+ `;
233
+
234
+ const sheet = new CSSStyleSheet();
235
+ sheet.replaceSync(css);
236
+ export const styles = sheet;
237
+ export default sheet;
@@ -0,0 +1,223 @@
1
+ // Auto-generated from skeleton.css
2
+ export const css = `/**
3
+ * Skeleton Component Styles
4
+ * DuskMoonUI - Material Design 3 inspired skeleton loading system
5
+ */
6
+
7
+ @layer components {
8
+ /* Base Skeleton */
9
+ .skeleton {
10
+ background-color: var(--color-surface-container-high);
11
+ border-radius: 0.25rem;
12
+ animation: skeleton-pulse 2s ease-in-out infinite;
13
+ }
14
+
15
+ /* Skeleton Variants */
16
+ .skeleton-text {
17
+ height: 1rem;
18
+ width: 100%;
19
+ border-radius: 0.25rem;
20
+ }
21
+
22
+ .skeleton-circle {
23
+ border-radius: 50%;
24
+ aspect-ratio: 1;
25
+ }
26
+
27
+ .skeleton-rect {
28
+ border-radius: 0.5rem;
29
+ }
30
+
31
+ .skeleton-rounded {
32
+ border-radius: 0.5rem;
33
+ }
34
+
35
+ /* Size Variants */
36
+ .skeleton-xs {
37
+ height: 0.5rem;
38
+ }
39
+
40
+ .skeleton-sm {
41
+ height: 0.75rem;
42
+ }
43
+
44
+ .skeleton-md {
45
+ height: 1rem;
46
+ }
47
+
48
+ .skeleton-lg {
49
+ height: 1.5rem;
50
+ }
51
+
52
+ .skeleton-xl {
53
+ height: 2rem;
54
+ }
55
+
56
+ /* Common Skeleton Patterns */
57
+ .skeleton-avatar {
58
+ width: 3rem;
59
+ height: 3rem;
60
+ border-radius: 50%;
61
+ }
62
+
63
+ .skeleton-avatar-sm {
64
+ width: 2rem;
65
+ height: 2rem;
66
+ }
67
+
68
+ .skeleton-avatar-lg {
69
+ width: 4rem;
70
+ height: 4rem;
71
+ }
72
+
73
+ .skeleton-button {
74
+ height: 2.5rem;
75
+ width: 6rem;
76
+ border-radius: 0.5rem;
77
+ }
78
+
79
+ .skeleton-image {
80
+ aspect-ratio: 16 / 9;
81
+ width: 100%;
82
+ border-radius: 0.5rem;
83
+ }
84
+
85
+ .skeleton-card {
86
+ width: 100%;
87
+ border-radius: 1rem;
88
+ padding: 1rem;
89
+ }
90
+
91
+ /* Line Patterns */
92
+ .skeleton-line {
93
+ height: 0.875rem;
94
+ width: 100%;
95
+ margin-bottom: 0.5rem;
96
+ border-radius: 0.25rem;
97
+ }
98
+
99
+ .skeleton-line:last-child {
100
+ width: 75%;
101
+ margin-bottom: 0;
102
+ }
103
+
104
+ .skeleton-line-short {
105
+ width: 40%;
106
+ }
107
+
108
+ .skeleton-line-medium {
109
+ width: 70%;
110
+ }
111
+
112
+ /* Pulse Animation */
113
+ @keyframes skeleton-pulse {
114
+ 0%, 100% {
115
+ opacity: 1;
116
+ }
117
+ 50% {
118
+ opacity: 0.4;
119
+ }
120
+ }
121
+
122
+ /* Wave Animation */
123
+ .skeleton-wave {
124
+ position: relative;
125
+ overflow: hidden;
126
+ animation: none;
127
+ }
128
+
129
+ .skeleton-wave::after {
130
+ content: '';
131
+ position: absolute;
132
+ inset: 0;
133
+ transform: translateX(-100%);
134
+ background: linear-gradient(
135
+ 90deg,
136
+ transparent,
137
+ rgba(255, 255, 255, 0.3),
138
+ transparent
139
+ );
140
+ animation: skeleton-wave 1.5s infinite;
141
+ }
142
+
143
+ @keyframes skeleton-wave {
144
+ 100% {
145
+ transform: translateX(100%);
146
+ }
147
+ }
148
+
149
+ /* Skeleton Group */
150
+ .skeleton-group {
151
+ display: flex;
152
+ flex-direction: column;
153
+ gap: 0.75rem;
154
+ }
155
+
156
+ /* Card Skeleton Pattern */
157
+ .skeleton-card-content {
158
+ display: flex;
159
+ flex-direction: column;
160
+ gap: 0.75rem;
161
+ }
162
+
163
+ .skeleton-card-header {
164
+ display: flex;
165
+ align-items: center;
166
+ gap: 0.75rem;
167
+ }
168
+
169
+ .skeleton-card-body {
170
+ display: flex;
171
+ flex-direction: column;
172
+ gap: 0.5rem;
173
+ }
174
+
175
+ /* Table Skeleton */
176
+ .skeleton-table {
177
+ width: 100%;
178
+ }
179
+
180
+ .skeleton-table-row {
181
+ display: flex;
182
+ gap: 1rem;
183
+ padding: 0.75rem 0;
184
+ border-bottom: 1px solid var(--color-outline-variant);
185
+ }
186
+
187
+ .skeleton-table-cell {
188
+ flex: 1;
189
+ height: 1rem;
190
+ border-radius: 0.25rem;
191
+ }
192
+
193
+ /* List Skeleton */
194
+ .skeleton-list {
195
+ display: flex;
196
+ flex-direction: column;
197
+ gap: 0.5rem;
198
+ }
199
+
200
+ .skeleton-list-item {
201
+ display: flex;
202
+ align-items: center;
203
+ gap: 0.75rem;
204
+ padding: 0.5rem 0;
205
+ }
206
+
207
+ /* Reduce Motion */
208
+ @media (prefers-reduced-motion: reduce) {
209
+ .skeleton {
210
+ animation: none;
211
+ }
212
+
213
+ .skeleton-wave::after {
214
+ animation: none;
215
+ }
216
+ }
217
+ }
218
+ `;
219
+
220
+ const sheet = new CSSStyleSheet();
221
+ sheet.replaceSync(css);
222
+ export const styles = sheet;
223
+ export default sheet;