@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,195 @@
1
+ // Auto-generated from list.css
2
+ export const css = `/**
3
+ * List Component Styles
4
+ * DuskMoonUI - Material Design 3 inspired list system
5
+ */
6
+
7
+ @layer components {
8
+ /* Base List */
9
+ .list {
10
+ display: flex;
11
+ flex-direction: column;
12
+ margin: 0;
13
+ padding: 0.5rem 0;
14
+ list-style: none;
15
+ }
16
+
17
+ /* List Item */
18
+ .list-item {
19
+ display: flex;
20
+ align-items: center;
21
+ gap: 1rem;
22
+ padding: 0.75rem 1rem;
23
+ color: var(--color-on-surface);
24
+ text-decoration: none;
25
+ transition: background-color 150ms ease-in-out;
26
+ }
27
+
28
+ /* Interactive List Item */
29
+ a.list-item,
30
+ button.list-item,
31
+ .list-item-clickable {
32
+ cursor: pointer;
33
+ }
34
+
35
+ a.list-item:hover,
36
+ button.list-item:hover,
37
+ .list-item-clickable:hover,
38
+ .list-hoverable .list-item:hover {
39
+ background-color: var(--color-surface-container);
40
+ }
41
+
42
+ .list-item:focus-visible {
43
+ outline: 2px solid var(--color-primary);
44
+ outline-offset: -2px;
45
+ background-color: var(--color-surface-container);
46
+ }
47
+
48
+ /* List Item Parts */
49
+ .list-item-icon {
50
+ display: flex;
51
+ align-items: center;
52
+ justify-content: center;
53
+ width: 1.5rem;
54
+ height: 1.5rem;
55
+ font-size: 1.25rem;
56
+ color: var(--color-on-surface-variant);
57
+ flex-shrink: 0;
58
+ }
59
+
60
+ .list-item-content {
61
+ display: flex;
62
+ flex-direction: column;
63
+ flex: 1;
64
+ min-width: 0;
65
+ }
66
+
67
+ .list-item-title {
68
+ font-size: 1rem;
69
+ font-weight: 500;
70
+ line-height: 1.5rem;
71
+ color: var(--color-on-surface);
72
+ }
73
+
74
+ .list-item-subtitle {
75
+ font-size: 0.875rem;
76
+ line-height: 1.25rem;
77
+ color: var(--color-on-surface-variant);
78
+ }
79
+
80
+ .list-item-action {
81
+ display: flex;
82
+ align-items: center;
83
+ gap: 0.5rem;
84
+ flex-shrink: 0;
85
+ color: var(--color-on-surface-variant);
86
+ }
87
+
88
+ /* List Variants */
89
+ .list-bordered {
90
+ border: 1px solid var(--color-outline);
91
+ border-radius: 0.5rem;
92
+ padding: 0;
93
+ }
94
+
95
+ .list-bordered .list-item {
96
+ border-bottom: 1px solid var(--color-outline);
97
+ }
98
+
99
+ .list-bordered .list-item:last-child {
100
+ border-bottom: none;
101
+ }
102
+
103
+ /* Compact List */
104
+ .list-compact .list-item {
105
+ padding: 0.5rem 1rem;
106
+ }
107
+
108
+ .list-compact .list-item-title {
109
+ font-size: 0.875rem;
110
+ }
111
+
112
+ .list-compact .list-item-subtitle {
113
+ font-size: 0.75rem;
114
+ }
115
+
116
+ /* List Divider */
117
+ .list-divider {
118
+ height: 1px;
119
+ margin: 0.5rem 0;
120
+ background-color: var(--color-outline-variant);
121
+ }
122
+
123
+ .list-divider-inset {
124
+ margin-left: 3.5rem;
125
+ }
126
+
127
+ /* List Subheader */
128
+ .list-subheader {
129
+ padding: 0.75rem 1rem;
130
+ font-size: 0.75rem;
131
+ font-weight: 600;
132
+ text-transform: uppercase;
133
+ letter-spacing: 0.05em;
134
+ color: var(--color-on-surface-variant);
135
+ }
136
+
137
+ /* Active/Selected State */
138
+ .list-item-active,
139
+ .list-item.active {
140
+ background-color: var(--color-primary-container);
141
+ color: var(--color-on-primary-container);
142
+ }
143
+
144
+ .list-item-active .list-item-icon,
145
+ .list-item.active .list-item-icon {
146
+ color: var(--color-on-primary-container);
147
+ }
148
+
149
+ /* Disabled State */
150
+ .list-item:disabled,
151
+ .list-item-disabled {
152
+ opacity: 0.5;
153
+ pointer-events: none;
154
+ cursor: not-allowed;
155
+ }
156
+
157
+ /* Dense List */
158
+ .list-dense .list-item {
159
+ padding: 0.375rem 1rem;
160
+ }
161
+
162
+ .list-dense .list-item-icon {
163
+ width: 1.25rem;
164
+ height: 1.25rem;
165
+ font-size: 1rem;
166
+ }
167
+
168
+ /* Two-Line List */
169
+ .list-two-line .list-item {
170
+ padding: 0.5rem 1rem;
171
+ }
172
+
173
+ /* Three-Line List */
174
+ .list-three-line .list-item {
175
+ align-items: flex-start;
176
+ padding: 0.75rem 1rem;
177
+ }
178
+
179
+ .list-three-line .list-item-content {
180
+ gap: 0.25rem;
181
+ }
182
+
183
+ /* Reduce Motion */
184
+ @media (prefers-reduced-motion: reduce) {
185
+ .list-item {
186
+ transition: none;
187
+ }
188
+ }
189
+ }
190
+ `;
191
+
192
+ const sheet = new CSSStyleSheet();
193
+ sheet.replaceSync(css);
194
+ export const styles = sheet;
195
+ export default sheet;
@@ -0,0 +1,412 @@
1
+ // Auto-generated from markdown-body.css
2
+ export const css = `/**
3
+ * Markdown Body Component
4
+ * GitHub-style typography for rendered markdown content
5
+ * Uses DuskMoonUI color tokens for automatic theme switching
6
+ */
7
+
8
+ @layer components {
9
+ /* ============================================
10
+ * BASE CONTAINER (Phase 2: T005-T007)
11
+ * ============================================ */
12
+
13
+ .markdown-body {
14
+ /* Base typography */
15
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
16
+ font-size: 16px;
17
+ line-height: 1.5;
18
+ word-wrap: break-word;
19
+ color: var(--color-on-surface);
20
+ }
21
+
22
+ /* ============================================
23
+ * USER STORY 1: TYPOGRAPHY (Phase 3: T009-T016)
24
+ * ============================================ */
25
+
26
+ /* Headings */
27
+ .markdown-body h1,
28
+ .markdown-body h2,
29
+ .markdown-body h3,
30
+ .markdown-body h4,
31
+ .markdown-body h5,
32
+ .markdown-body h6 {
33
+ margin-block-start: 1.5rem;
34
+ margin-block-end: 1rem;
35
+ font-weight: 600;
36
+ line-height: 1.25;
37
+ }
38
+
39
+ .markdown-body h1 {
40
+ font-size: 2em;
41
+ padding-block-end: 0.3em;
42
+ border-bottom: 1px solid var(--color-outline-variant);
43
+ }
44
+
45
+ .markdown-body h2 {
46
+ font-size: 1.5em;
47
+ padding-block-end: 0.3em;
48
+ border-bottom: 1px solid var(--color-outline-variant);
49
+ }
50
+
51
+ .markdown-body h3 {
52
+ font-size: 1.25em;
53
+ }
54
+
55
+ .markdown-body h4 {
56
+ font-size: 1em;
57
+ }
58
+
59
+ .markdown-body h5 {
60
+ font-size: 0.875em;
61
+ }
62
+
63
+ .markdown-body h6 {
64
+ font-size: 0.85em;
65
+ color: var(--color-on-surface-variant);
66
+ }
67
+
68
+ /* Paragraphs */
69
+ .markdown-body p {
70
+ margin-block-end: 1rem;
71
+ }
72
+
73
+ /* Links */
74
+ .markdown-body a {
75
+ color: var(--color-primary);
76
+ text-decoration: none;
77
+ }
78
+
79
+ .markdown-body a:hover {
80
+ text-decoration: underline;
81
+ }
82
+
83
+ .markdown-body a:focus-visible {
84
+ outline: 2px solid var(--color-primary);
85
+ outline-offset: 2px;
86
+ }
87
+
88
+ /* Emphasis */
89
+ .markdown-body strong,
90
+ .markdown-body b {
91
+ font-weight: 600;
92
+ }
93
+
94
+ .markdown-body em,
95
+ .markdown-body i {
96
+ font-style: italic;
97
+ }
98
+
99
+ /* Lists */
100
+ .markdown-body ul,
101
+ .markdown-body ol {
102
+ margin-block-end: 1rem;
103
+ padding-inline-start: 2em;
104
+ }
105
+
106
+ .markdown-body ul {
107
+ list-style-type: disc;
108
+ }
109
+
110
+ .markdown-body ol {
111
+ list-style-type: decimal;
112
+ }
113
+
114
+ .markdown-body li {
115
+ margin-block-end: 0.25rem;
116
+ }
117
+
118
+ .markdown-body li > ul,
119
+ .markdown-body li > ol {
120
+ margin-block-start: 0.25rem;
121
+ margin-block-end: 0;
122
+ }
123
+
124
+ /* Nested list style progression */
125
+ .markdown-body ul ul {
126
+ list-style-type: circle;
127
+ }
128
+
129
+ .markdown-body ul ul ul {
130
+ list-style-type: square;
131
+ }
132
+
133
+ .markdown-body ol ol {
134
+ list-style-type: lower-alpha;
135
+ }
136
+
137
+ .markdown-body ol ol ol {
138
+ list-style-type: lower-roman;
139
+ }
140
+
141
+ /* Small, subscript, superscript, strikethrough */
142
+ .markdown-body small {
143
+ font-size: 0.875em;
144
+ }
145
+
146
+ .markdown-body sub,
147
+ .markdown-body sup {
148
+ font-size: 0.75em;
149
+ line-height: 0;
150
+ position: relative;
151
+ vertical-align: baseline;
152
+ }
153
+
154
+ .markdown-body sub {
155
+ bottom: -0.25em;
156
+ }
157
+
158
+ .markdown-body sup {
159
+ top: -0.5em;
160
+ }
161
+
162
+ .markdown-body del,
163
+ .markdown-body s {
164
+ text-decoration: line-through;
165
+ color: var(--color-on-surface-variant);
166
+ }
167
+
168
+ /* ============================================
169
+ * USER STORY 2: CODE (Phase 4: T017-T021)
170
+ * ============================================ */
171
+
172
+ /* Inline code */
173
+ .markdown-body code {
174
+ font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;
175
+ font-size: 0.85em;
176
+ padding-block: 0.2em;
177
+ padding-inline: 0.4em;
178
+ background-color: var(--color-surface-container-high);
179
+ border-radius: 6px;
180
+ }
181
+
182
+ /* Code blocks */
183
+ .markdown-body pre {
184
+ font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;
185
+ font-size: 0.85em;
186
+ line-height: 1.45;
187
+ padding: 1rem;
188
+ margin-block-end: 1rem;
189
+ overflow-x: auto;
190
+ background-color: var(--color-surface-container);
191
+ border-radius: 6px;
192
+ }
193
+
194
+ /* Reset code inside pre */
195
+ .markdown-body pre > code {
196
+ font-size: inherit;
197
+ padding: 0;
198
+ background-color: transparent;
199
+ border-radius: 0;
200
+ }
201
+
202
+ /* Keyboard input */
203
+ .markdown-body kbd {
204
+ font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;
205
+ font-size: 0.85em;
206
+ padding-block: 0.2em;
207
+ padding-inline: 0.4em;
208
+ background-color: var(--color-surface-container);
209
+ border: 1px solid var(--color-outline-variant);
210
+ border-radius: 6px;
211
+ box-shadow: inset 0 -1px 0 var(--color-outline-variant);
212
+ }
213
+
214
+ /* Sample output */
215
+ .markdown-body samp {
216
+ font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;
217
+ font-size: 0.85em;
218
+ }
219
+
220
+ /* ============================================
221
+ * USER STORY 3: TABLES (Phase 6: T026-T029)
222
+ * ============================================ */
223
+
224
+ .markdown-body table {
225
+ width: 100%;
226
+ border-collapse: collapse;
227
+ margin-block-end: 1rem;
228
+ overflow-x: auto;
229
+ display: block;
230
+ }
231
+
232
+ .markdown-body th {
233
+ font-weight: 600;
234
+ background-color: var(--color-surface-container);
235
+ }
236
+
237
+ .markdown-body th,
238
+ .markdown-body td {
239
+ padding-block: 0.5rem;
240
+ padding-inline: 0.75rem;
241
+ border: 1px solid var(--color-outline-variant);
242
+ text-align: start;
243
+ }
244
+
245
+ .markdown-body tr:nth-child(2n) {
246
+ background-color: var(--color-surface-container);
247
+ }
248
+
249
+ /* ============================================
250
+ * USER STORY 4: BLOCKQUOTES (Phase 7: T030-T031)
251
+ * ============================================ */
252
+
253
+ .markdown-body blockquote {
254
+ margin-block-end: 1rem;
255
+ margin-inline: 0;
256
+ padding-inline-start: 1em;
257
+ border-inline-start: 0.25em solid var(--color-outline-variant);
258
+ color: var(--color-on-surface-variant);
259
+ }
260
+
261
+ .markdown-body blockquote > :first-child {
262
+ margin-block-start: 0;
263
+ }
264
+
265
+ .markdown-body blockquote > :last-child {
266
+ margin-block-end: 0;
267
+ }
268
+
269
+ /* Nested blockquotes */
270
+ .markdown-body blockquote blockquote {
271
+ margin-block-start: 1rem;
272
+ }
273
+
274
+ /* ============================================
275
+ * USER STORY 6: IMAGES (Phase 8: T032-T034)
276
+ * ============================================ */
277
+
278
+ .markdown-body img {
279
+ max-width: 100%;
280
+ height: auto;
281
+ box-sizing: border-box;
282
+ }
283
+
284
+ .markdown-body figure {
285
+ margin-block-end: 1rem;
286
+ margin-inline: 0;
287
+ }
288
+
289
+ .markdown-body figcaption {
290
+ font-size: 0.875em;
291
+ color: var(--color-on-surface-variant);
292
+ margin-block-start: 0.5rem;
293
+ text-align: center;
294
+ }
295
+
296
+ /* Image alignment helpers */
297
+ .markdown-body img[align="left"] {
298
+ margin-inline-end: 1rem;
299
+ margin-block-end: 0.5rem;
300
+ }
301
+
302
+ .markdown-body img[align="right"] {
303
+ margin-inline-start: 1rem;
304
+ margin-block-end: 0.5rem;
305
+ }
306
+
307
+ /* ============================================
308
+ * USER STORY 7: TASK LISTS (Phase 9: T035-T036)
309
+ * ============================================ */
310
+
311
+ .markdown-body .task-list-item {
312
+ list-style-type: none;
313
+ }
314
+
315
+ .markdown-body .task-list-item input[type="checkbox"] {
316
+ margin-inline-start: -1.5em;
317
+ margin-inline-end: 0.5em;
318
+ vertical-align: middle;
319
+ }
320
+
321
+ /* ============================================
322
+ * PHASE 10: POLISH - ADDITIONAL ELEMENTS
323
+ * ============================================ */
324
+
325
+ /* Horizontal rule */
326
+ .markdown-body hr {
327
+ height: 0.25em;
328
+ margin-block: 1.5rem;
329
+ padding: 0;
330
+ background-color: var(--color-outline-variant);
331
+ border: 0;
332
+ }
333
+
334
+ /* Definition lists */
335
+ .markdown-body dl {
336
+ margin-block-end: 1rem;
337
+ }
338
+
339
+ .markdown-body dt {
340
+ font-weight: 600;
341
+ margin-block-start: 1rem;
342
+ }
343
+
344
+ .markdown-body dt:first-child {
345
+ margin-block-start: 0;
346
+ }
347
+
348
+ .markdown-body dd {
349
+ margin-block-start: 0.25rem;
350
+ margin-inline-start: 0;
351
+ padding-inline-start: 1rem;
352
+ }
353
+
354
+ /* Abbreviations */
355
+ .markdown-body abbr[title] {
356
+ text-decoration: underline dotted;
357
+ cursor: help;
358
+ border-bottom: none;
359
+ }
360
+
361
+ /* Highlights */
362
+ .markdown-body mark {
363
+ background-color: var(--color-tertiary-container);
364
+ color: var(--color-on-tertiary-container);
365
+ padding-block: 0.1em;
366
+ padding-inline: 0.2em;
367
+ border-radius: 2px;
368
+ }
369
+
370
+ /* Details/Summary */
371
+ .markdown-body details {
372
+ margin-block-end: 1rem;
373
+ }
374
+
375
+ .markdown-body summary {
376
+ font-weight: 600;
377
+ cursor: pointer;
378
+ }
379
+
380
+ .markdown-body details[open] > summary {
381
+ margin-block-end: 0.5rem;
382
+ }
383
+
384
+ /* ============================================
385
+ * EDGE CASES (T042-T043)
386
+ * ============================================ */
387
+
388
+ /* First/last child margin resets */
389
+ .markdown-body > :first-child {
390
+ margin-block-start: 0;
391
+ }
392
+
393
+ .markdown-body > :last-child {
394
+ margin-block-end: 0;
395
+ }
396
+
397
+ /* ============================================
398
+ * USER STORY 5: REDUCED MOTION (T025)
399
+ * ============================================ */
400
+
401
+ @media (prefers-reduced-motion: reduce) {
402
+ .markdown-body * {
403
+ transition: none;
404
+ }
405
+ }
406
+ }
407
+ `;
408
+
409
+ const sheet = new CSSStyleSheet();
410
+ sheet.replaceSync(css);
411
+ export const styles = sheet;
412
+ export default sheet;