@duskmoon-dev/core 1.14.2 → 1.16.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 (126) hide show
  1. package/dist/cjs/tailwind-plugin.cjs +38 -79
  2. package/dist/components/accordion.css +7 -7
  3. package/dist/components/alert.css +2 -2
  4. package/dist/components/appbar.css +5 -5
  5. package/dist/components/autocomplete.css +7 -7
  6. package/dist/components/avatar.css +5 -5
  7. package/dist/components/badge.css +3 -3
  8. package/dist/components/bottom-navigation.css +7 -7
  9. package/dist/components/bottomsheet.css +12 -12
  10. package/dist/components/button.css +19 -19
  11. package/dist/components/card.css +9 -2
  12. package/dist/components/cascader.css +9 -9
  13. package/dist/components/checkbox.css +1 -1
  14. package/dist/components/chip.css +12 -10
  15. package/dist/components/circle-menu.css +324 -0
  16. package/dist/components/code-block.css +133 -0
  17. package/dist/components/collapse.css +9 -9
  18. package/dist/components/datepicker.css +22 -22
  19. package/dist/components/dialog.css +5 -5
  20. package/dist/components/drawer.css +13 -13
  21. package/dist/components/file-upload.css +12 -12
  22. package/dist/components/form-group.css +162 -1
  23. package/dist/components/form.css +159 -22
  24. package/dist/components/index.css +1026 -385
  25. package/dist/components/input.css +23 -14
  26. package/dist/components/list.css +3 -3
  27. package/dist/components/markdown-body.css +6 -6
  28. package/dist/components/modal.css +7 -7
  29. package/dist/components/multi-select.css +16 -16
  30. package/dist/components/navigation.css +20 -20
  31. package/dist/components/nested-menu.css +5 -5
  32. package/dist/components/otp-input.css +5 -5
  33. package/dist/components/pin-input.css +5 -5
  34. package/dist/components/popover.css +15 -15
  35. package/dist/components/progress.css +2 -2
  36. package/dist/components/radio.css +2 -2
  37. package/dist/components/rating.css +1 -1
  38. package/dist/components/segment-control.css +6 -6
  39. package/dist/components/select.css +7 -7
  40. package/dist/components/skeleton.css +11 -11
  41. package/dist/components/slider.css +16 -16
  42. package/dist/components/snackbar.css +5 -5
  43. package/dist/components/stepper.css +9 -9
  44. package/dist/components/switch.css +1 -1
  45. package/dist/components/table.css +3 -3
  46. package/dist/components/textarea.css +5 -5
  47. package/dist/components/theme-controller.css +4 -4
  48. package/dist/components/time-input.css +10 -10
  49. package/dist/components/timeline.css +6 -6
  50. package/dist/components/toast.css +3 -3
  51. package/dist/components/toggle.css +8 -8
  52. package/dist/components/tooltip.css +1 -1
  53. package/dist/components/tree-select.css +14 -14
  54. package/dist/esm/components/accordion.js +7 -7
  55. package/dist/esm/components/alert.js +2 -2
  56. package/dist/esm/components/appbar.js +5 -5
  57. package/dist/esm/components/autocomplete.js +7 -7
  58. package/dist/esm/components/avatar.js +5 -5
  59. package/dist/esm/components/badge.js +3 -3
  60. package/dist/esm/components/bottom-navigation.js +7 -7
  61. package/dist/esm/components/bottomsheet.js +12 -12
  62. package/dist/esm/components/button.js +19 -19
  63. package/dist/esm/components/card.js +9 -2
  64. package/dist/esm/components/cascader.js +9 -9
  65. package/dist/esm/components/checkbox.js +1 -1
  66. package/dist/esm/components/chip.js +12 -10
  67. package/dist/esm/components/circle-menu.js +331 -0
  68. package/dist/esm/components/code-block.js +140 -0
  69. package/dist/esm/components/collapse.js +9 -9
  70. package/dist/esm/components/datepicker.js +22 -22
  71. package/dist/esm/components/dialog.js +5 -5
  72. package/dist/esm/components/drawer.js +13 -13
  73. package/dist/esm/components/file-upload.js +12 -12
  74. package/dist/esm/components/form-group.js +162 -1
  75. package/dist/esm/components/form.js +159 -22
  76. package/dist/esm/components/input.js +23 -14
  77. package/dist/esm/components/list.js +3 -3
  78. package/dist/esm/components/markdown-body.js +6 -6
  79. package/dist/esm/components/modal.js +7 -7
  80. package/dist/esm/components/multi-select.js +16 -16
  81. package/dist/esm/components/navigation.js +20 -20
  82. package/dist/esm/components/nested-menu.js +5 -5
  83. package/dist/esm/components/otp-input.js +5 -5
  84. package/dist/esm/components/pin-input.js +5 -5
  85. package/dist/esm/components/popover.js +15 -15
  86. package/dist/esm/components/progress.js +2 -2
  87. package/dist/esm/components/radio.js +2 -2
  88. package/dist/esm/components/rating.js +1 -1
  89. package/dist/esm/components/segment-control.js +6 -6
  90. package/dist/esm/components/select.js +7 -7
  91. package/dist/esm/components/skeleton.js +11 -11
  92. package/dist/esm/components/slider.js +16 -16
  93. package/dist/esm/components/snackbar.js +5 -5
  94. package/dist/esm/components/stepper.js +9 -9
  95. package/dist/esm/components/switch.js +1 -1
  96. package/dist/esm/components/table.js +3 -3
  97. package/dist/esm/components/textarea.js +5 -5
  98. package/dist/esm/components/theme-controller.js +4 -4
  99. package/dist/esm/components/time-input.js +10 -10
  100. package/dist/esm/components/timeline.js +6 -6
  101. package/dist/esm/components/toast.js +3 -3
  102. package/dist/esm/components/toggle.js +8 -8
  103. package/dist/esm/components/tooltip.js +1 -1
  104. package/dist/esm/components/tree-select.js +14 -14
  105. package/dist/esm/tailwind-plugin.js +38 -79
  106. package/dist/index.css +1435 -1137
  107. package/dist/index.min.css +1 -1
  108. package/dist/themes/{forest.css → generated/forest.css} +26 -94
  109. package/dist/themes/generated/moonlight.css +77 -0
  110. package/dist/themes/{ocean.css → generated/ocean.css} +26 -103
  111. package/dist/themes/generated/spacing.css +36 -0
  112. package/dist/themes/{sunset.css → generated/sunset.css} +26 -95
  113. package/dist/themes/generated/sunshine.css +77 -0
  114. package/dist/types/tailwind-plugin.d.ts +1 -0
  115. package/dist/types/tailwind-plugin.d.ts.map +1 -1
  116. package/dist/types/themes/generated/ts/types.d.ts +76 -0
  117. package/dist/types/themes/generated/ts/types.d.ts.map +1 -0
  118. package/dist/types/types/index.d.ts +1 -1
  119. package/dist/types/types/index.d.ts.map +1 -1
  120. package/dist/types/types/plugin.d.ts +1 -1
  121. package/dist/types/types/plugin.d.ts.map +1 -1
  122. package/dist/types/types/theme.d.ts +5 -152
  123. package/dist/types/types/theme.d.ts.map +1 -1
  124. package/package.json +11 -6
  125. package/dist/themes/moonlight.css +0 -271
  126. package/dist/themes/sunshine.css +0 -252
@@ -0,0 +1,331 @@
1
+ // Auto-generated from circle-menu.css
2
+ export const css = `/**
3
+ * Circle Menu Component Styles
4
+ * DuskMoonUI - Radial circular navigation menu with CSS-only checkbox toggle
5
+ *
6
+ * Usage:
7
+ * <nav class="circle-menu">
8
+ * <input type="checkbox" class="circle-menu-toggler" id="cm-1">
9
+ * <label class="circle-menu-label" for="cm-1"></label>
10
+ * <ul class="circle-menu-list">
11
+ * <li class="circle-menu-item"><a href="#">icon</a></li>
12
+ * </ul>
13
+ * </nav>
14
+ */
15
+
16
+ @layer components {
17
+ /* === Container === */
18
+ .circle-menu {
19
+ --circle-menu-size: 3rem;
20
+ --circle-menu-item-size: 3rem;
21
+ --circle-menu-radius: 5.5rem;
22
+ --circle-menu-icon-size: 1.25rem;
23
+ --circle-menu-bar-width: 1.125rem;
24
+ --circle-menu-bar-height: 0.1875rem;
25
+ --circle-menu-bar-gap: 0.375rem;
26
+
27
+ /* Color tokens (overridden by variants) */
28
+ --circle-menu-btn-bg: var(--color-primary-container);
29
+ --circle-menu-bar-color: var(--color-on-primary-container);
30
+ --circle-menu-item-bg: var(--color-primary-container);
31
+ --circle-menu-item-color: var(--color-on-primary-container);
32
+ --circle-menu-item-ring: color-mix(in oklch, var(--color-primary) 30%, transparent);
33
+
34
+ position: relative;
35
+ display: inline-flex;
36
+ align-items: center;
37
+ justify-content: center;
38
+ width: var(--circle-menu-size);
39
+ height: var(--circle-menu-size);
40
+ }
41
+
42
+ /* === Hidden checkbox toggler === */
43
+ .circle-menu-toggler {
44
+ position: absolute;
45
+ inset: 0;
46
+ margin: auto;
47
+ width: var(--circle-menu-size);
48
+ height: var(--circle-menu-size);
49
+ z-index: 10;
50
+ opacity: 0;
51
+ cursor: pointer;
52
+ }
53
+
54
+ /* === Circular toggle button (label) === */
55
+ .circle-menu-label {
56
+ position: absolute;
57
+ inset: 0;
58
+ margin: auto;
59
+ display: block;
60
+ width: var(--circle-menu-size);
61
+ height: var(--circle-menu-size);
62
+ border-radius: var(--radius-full);
63
+ background-color: var(--circle-menu-btn-bg);
64
+ z-index: 1;
65
+ pointer-events: none;
66
+ transition: background-color 0.3s ease;
67
+ }
68
+
69
+ /* Top bar of hamburger icon */
70
+ .circle-menu-label::before {
71
+ content: '';
72
+ position: absolute;
73
+ top: 50%;
74
+ left: 50%;
75
+ width: var(--circle-menu-bar-width);
76
+ height: var(--circle-menu-bar-height);
77
+ border-radius: var(--radius-full);
78
+ background-color: var(--circle-menu-bar-color);
79
+ /* Box-shadow creates middle + bottom bars */
80
+ box-shadow:
81
+ 0 var(--circle-menu-bar-gap) 0 var(--circle-menu-bar-color),
82
+ 0 calc(-1 * var(--circle-menu-bar-gap)) 0 var(--circle-menu-bar-color);
83
+ transform: translate(-50%, -50%);
84
+ transition:
85
+ transform 0.35s cubic-bezier(0.4, 0, 0.2, 1),
86
+ box-shadow 0.35s cubic-bezier(0.4, 0, 0.2, 1);
87
+ }
88
+
89
+ /* Second diagonal of X (hidden by default) */
90
+ .circle-menu-label::after {
91
+ content: '';
92
+ position: absolute;
93
+ top: 50%;
94
+ left: 50%;
95
+ width: var(--circle-menu-bar-width);
96
+ height: var(--circle-menu-bar-height);
97
+ border-radius: var(--radius-full);
98
+ background-color: var(--circle-menu-bar-color);
99
+ transform: translate(-50%, -50%) rotate(-45deg);
100
+ opacity: 0;
101
+ transition: opacity 0.25s ease;
102
+ }
103
+
104
+ /* Hover: lighten the toggle button */
105
+ .circle-menu-toggler:hover + .circle-menu-label {
106
+ background-color: color-mix(in oklch, var(--circle-menu-btn-bg) 80%, var(--circle-menu-bar-color));
107
+ }
108
+
109
+ /* Focus visible ring on toggle button */
110
+ .circle-menu-toggler:focus-visible + .circle-menu-label {
111
+ outline: none;
112
+ box-shadow: 0 0 0 3px var(--circle-menu-item-ring);
113
+ }
114
+
115
+ /* === Checked: hamburger → X === */
116
+ .circle-menu-toggler:checked + .circle-menu-label::before {
117
+ box-shadow: none;
118
+ transform: translate(-50%, -50%) rotate(45deg);
119
+ }
120
+
121
+ .circle-menu-toggler:checked + .circle-menu-label::after {
122
+ opacity: 1;
123
+ }
124
+
125
+ /* === Menu list === */
126
+ .circle-menu-list {
127
+ position: absolute;
128
+ inset: 0;
129
+ margin: 0;
130
+ padding: 0;
131
+ list-style: none;
132
+ pointer-events: none;
133
+ }
134
+
135
+ /* === Menu items (collapsed at center) === */
136
+ .circle-menu-item {
137
+ position: absolute;
138
+ inset: 0;
139
+ margin: auto;
140
+ width: var(--circle-menu-item-size);
141
+ height: var(--circle-menu-item-size);
142
+ opacity: 0;
143
+ transition:
144
+ transform 0.4s cubic-bezier(0.4, 0, 0.2, 1),
145
+ opacity 0.3s ease;
146
+ }
147
+
148
+ /* Item anchor/button — circular shape */
149
+ .circle-menu-item a,
150
+ .circle-menu-item button {
151
+ display: flex;
152
+ align-items: center;
153
+ justify-content: center;
154
+ width: 100%;
155
+ height: 100%;
156
+ border-radius: var(--radius-full);
157
+ text-decoration: none;
158
+ font-size: var(--circle-menu-icon-size);
159
+ color: var(--circle-menu-item-color);
160
+ background-color: var(--circle-menu-item-bg);
161
+ border: none;
162
+ cursor: pointer;
163
+ pointer-events: none;
164
+ transition:
165
+ box-shadow 0.2s ease,
166
+ background-color 0.2s ease;
167
+ }
168
+
169
+ .circle-menu-item a:hover,
170
+ .circle-menu-item button:hover {
171
+ background-color: color-mix(in oklch, var(--circle-menu-item-bg) 80%, var(--circle-menu-item-color));
172
+ box-shadow: 0 0 0 3px var(--circle-menu-item-ring);
173
+ }
174
+
175
+ .circle-menu-item a:focus-visible,
176
+ .circle-menu-item button:focus-visible {
177
+ outline: none;
178
+ box-shadow: 0 0 0 3px var(--circle-menu-item-ring);
179
+ }
180
+
181
+ /* Counter-rotate icons to stay upright as item container rotates */
182
+ .circle-menu-item:nth-child(1) a,
183
+ .circle-menu-item:nth-child(1) button { transform: rotate(0deg); }
184
+ .circle-menu-item:nth-child(2) a,
185
+ .circle-menu-item:nth-child(2) button { transform: rotate(-60deg); }
186
+ .circle-menu-item:nth-child(3) a,
187
+ .circle-menu-item:nth-child(3) button { transform: rotate(-120deg); }
188
+ .circle-menu-item:nth-child(4) a,
189
+ .circle-menu-item:nth-child(4) button { transform: rotate(-180deg); }
190
+ .circle-menu-item:nth-child(5) a,
191
+ .circle-menu-item:nth-child(5) button { transform: rotate(-240deg); }
192
+ .circle-menu-item:nth-child(6) a,
193
+ .circle-menu-item:nth-child(6) button { transform: rotate(-300deg); }
194
+
195
+ /* === Checked: fan items out in a circle === */
196
+ .circle-menu-toggler:checked ~ .circle-menu-list {
197
+ pointer-events: auto;
198
+ }
199
+
200
+ .circle-menu-toggler:checked ~ .circle-menu-list .circle-menu-item {
201
+ opacity: 1;
202
+ }
203
+
204
+ .circle-menu-toggler:checked ~ .circle-menu-list .circle-menu-item a,
205
+ .circle-menu-toggler:checked ~ .circle-menu-list .circle-menu-item button {
206
+ pointer-events: auto;
207
+ }
208
+
209
+ /* Radial positions for up to 6 items (rotate + translate along rotated X axis) */
210
+ .circle-menu-toggler:checked ~ .circle-menu-list .circle-menu-item:nth-child(1) {
211
+ transform: rotate(0deg) translateX(calc(-1 * var(--circle-menu-radius)));
212
+ }
213
+ .circle-menu-toggler:checked ~ .circle-menu-list .circle-menu-item:nth-child(2) {
214
+ transform: rotate(60deg) translateX(calc(-1 * var(--circle-menu-radius)));
215
+ }
216
+ .circle-menu-toggler:checked ~ .circle-menu-list .circle-menu-item:nth-child(3) {
217
+ transform: rotate(120deg) translateX(calc(-1 * var(--circle-menu-radius)));
218
+ }
219
+ .circle-menu-toggler:checked ~ .circle-menu-list .circle-menu-item:nth-child(4) {
220
+ transform: rotate(180deg) translateX(calc(-1 * var(--circle-menu-radius)));
221
+ }
222
+ .circle-menu-toggler:checked ~ .circle-menu-list .circle-menu-item:nth-child(5) {
223
+ transform: rotate(240deg) translateX(calc(-1 * var(--circle-menu-radius)));
224
+ }
225
+ .circle-menu-toggler:checked ~ .circle-menu-list .circle-menu-item:nth-child(6) {
226
+ transform: rotate(300deg) translateX(calc(-1 * var(--circle-menu-radius)));
227
+ }
228
+
229
+ /* === Size variants === */
230
+ .circle-menu-sm {
231
+ --circle-menu-size: 2.5rem;
232
+ --circle-menu-item-size: 2.5rem;
233
+ --circle-menu-radius: 4.5rem;
234
+ --circle-menu-icon-size: 1rem;
235
+ --circle-menu-bar-width: 0.9375rem;
236
+ --circle-menu-bar-gap: 0.3125rem;
237
+ }
238
+
239
+ .circle-menu-lg {
240
+ --circle-menu-size: 3.5rem;
241
+ --circle-menu-item-size: 3.5rem;
242
+ --circle-menu-radius: 6.5rem;
243
+ --circle-menu-icon-size: 1.5rem;
244
+ --circle-menu-bar-width: 1.3125rem;
245
+ --circle-menu-bar-gap: 0.4375rem;
246
+ }
247
+
248
+ /* === Color variants === */
249
+ .circle-menu-primary {
250
+ --circle-menu-btn-bg: var(--color-primary);
251
+ --circle-menu-bar-color: var(--color-primary-content);
252
+ --circle-menu-item-bg: var(--color-primary);
253
+ --circle-menu-item-color: var(--color-primary-content);
254
+ --circle-menu-item-ring: color-mix(in oklch, var(--color-primary) 40%, transparent);
255
+ }
256
+
257
+ .circle-menu-secondary {
258
+ --circle-menu-btn-bg: var(--color-secondary);
259
+ --circle-menu-bar-color: var(--color-secondary-content);
260
+ --circle-menu-item-bg: var(--color-secondary);
261
+ --circle-menu-item-color: var(--color-secondary-content);
262
+ --circle-menu-item-ring: color-mix(in oklch, var(--color-secondary) 40%, transparent);
263
+ }
264
+
265
+ .circle-menu-tertiary {
266
+ --circle-menu-btn-bg: var(--color-tertiary);
267
+ --circle-menu-bar-color: var(--color-tertiary-content);
268
+ --circle-menu-item-bg: var(--color-tertiary);
269
+ --circle-menu-item-color: var(--color-tertiary-content);
270
+ --circle-menu-item-ring: color-mix(in oklch, var(--color-tertiary) 40%, transparent);
271
+ }
272
+
273
+ .circle-menu-info {
274
+ --circle-menu-btn-bg: var(--color-info);
275
+ --circle-menu-bar-color: var(--color-info-content);
276
+ --circle-menu-item-bg: var(--color-info);
277
+ --circle-menu-item-color: var(--color-info-content);
278
+ --circle-menu-item-ring: color-mix(in oklch, var(--color-info) 40%, transparent);
279
+ }
280
+
281
+ .circle-menu-success {
282
+ --circle-menu-btn-bg: var(--color-success);
283
+ --circle-menu-bar-color: var(--color-success-content);
284
+ --circle-menu-item-bg: var(--color-success);
285
+ --circle-menu-item-color: var(--color-success-content);
286
+ --circle-menu-item-ring: color-mix(in oklch, var(--color-success) 40%, transparent);
287
+ }
288
+
289
+ .circle-menu-warning {
290
+ --circle-menu-btn-bg: var(--color-warning);
291
+ --circle-menu-bar-color: var(--color-warning-content);
292
+ --circle-menu-item-bg: var(--color-warning);
293
+ --circle-menu-item-color: var(--color-warning-content);
294
+ --circle-menu-item-ring: color-mix(in oklch, var(--color-warning) 40%, transparent);
295
+ }
296
+
297
+ .circle-menu-error {
298
+ --circle-menu-btn-bg: var(--color-error);
299
+ --circle-menu-bar-color: var(--color-error-content);
300
+ --circle-menu-item-bg: var(--color-error);
301
+ --circle-menu-item-color: var(--color-error-content);
302
+ --circle-menu-item-ring: color-mix(in oklch, var(--color-error) 40%, transparent);
303
+ }
304
+
305
+ /* === Reduced motion === */
306
+ @media (prefers-reduced-motion: reduce) {
307
+ .circle-menu-label {
308
+ transition: none;
309
+ }
310
+
311
+ .circle-menu-label::before,
312
+ .circle-menu-label::after {
313
+ transition: none;
314
+ }
315
+
316
+ .circle-menu-item {
317
+ transition: none;
318
+ }
319
+
320
+ .circle-menu-item a,
321
+ .circle-menu-item button {
322
+ transition: none;
323
+ }
324
+ }
325
+ }
326
+ `;
327
+
328
+ const sheet = new CSSStyleSheet();
329
+ sheet.replaceSync(css);
330
+ export const styles = sheet;
331
+ export default sheet;
@@ -0,0 +1,140 @@
1
+ // Auto-generated from code-block.css
2
+ export const css = `/**
3
+ * Code Block Component
4
+ * Styled container for displaying code with optional header, language badge, and copy button
5
+ * Uses DuskMoonUI color tokens for automatic theme switching
6
+ */
7
+
8
+ @layer components {
9
+ /* ============================================
10
+ * BASE CONTAINER
11
+ * ============================================ */
12
+
13
+ .code-block {
14
+ border: 1px solid var(--color-outline);
15
+ border-radius: var(--radius-sm);
16
+ overflow: hidden;
17
+ }
18
+
19
+ /* ============================================
20
+ * HEADER
21
+ * ============================================ */
22
+
23
+ .code-header {
24
+ display: flex;
25
+ align-items: center;
26
+ gap: 0.5rem;
27
+ padding: 0.5rem 1rem;
28
+ background-color: var(--color-surface-container-highest);
29
+ border-bottom: 1px solid var(--color-outline);
30
+ font-size: 0.75rem;
31
+ }
32
+
33
+ .code-title {
34
+ color: var(--color-on-surface);
35
+ font-weight: 600;
36
+ margin-right: auto;
37
+ }
38
+
39
+ .code-language {
40
+ color: var(--color-on-surface-variant);
41
+ text-transform: uppercase;
42
+ letter-spacing: 0.05em;
43
+ font-weight: 500;
44
+ }
45
+
46
+ /* Push language badge to the left when no title precedes it */
47
+ .code-language:first-child {
48
+ margin-right: auto;
49
+ }
50
+
51
+ /* ============================================
52
+ * COPY BUTTON
53
+ * ============================================ */
54
+
55
+ .code-block .copy-button {
56
+ display: flex;
57
+ align-items: center;
58
+ gap: 0.375rem;
59
+ padding: 0.25rem 0.5rem;
60
+ border: none;
61
+ border-radius: var(--radius-xs);
62
+ background: transparent;
63
+ color: var(--color-on-surface-variant);
64
+ font-size: 0.75rem;
65
+ cursor: pointer;
66
+ transition: background-color 0.15s ease, color 0.15s ease;
67
+ }
68
+
69
+ .code-block .copy-button:hover {
70
+ background-color: var(--color-outline-variant);
71
+ color: var(--color-on-surface);
72
+ }
73
+
74
+ .code-block .copy-icon {
75
+ flex-shrink: 0;
76
+ }
77
+
78
+ /* ============================================
79
+ * CODE CONTENT
80
+ * ============================================ */
81
+
82
+ .code-content {
83
+ background-color: var(--color-surface-container);
84
+ overflow-x: auto;
85
+ }
86
+
87
+ .code-content pre {
88
+ margin: 0;
89
+ padding: 1rem;
90
+ background: transparent;
91
+ border-radius: 0;
92
+ overflow-x: auto;
93
+ }
94
+
95
+ .code-content code {
96
+ background: transparent;
97
+ padding: 0;
98
+ font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;
99
+ font-size: 0.875rem;
100
+ line-height: 1.6;
101
+ }
102
+
103
+ /* ============================================
104
+ * VARIANTS
105
+ * ============================================ */
106
+
107
+ /* Compact variant — reduced padding */
108
+ .code-block-compact .code-header {
109
+ padding: 0.375rem 0.75rem;
110
+ }
111
+
112
+ .code-block-compact .code-content pre {
113
+ padding: 0.75rem;
114
+ }
115
+
116
+ /* Borderless variant */
117
+ .code-block-borderless {
118
+ border: none;
119
+ }
120
+
121
+ .code-block-borderless .code-header {
122
+ border-bottom: none;
123
+ }
124
+
125
+ /* ============================================
126
+ * REDUCED MOTION
127
+ * ============================================ */
128
+
129
+ @media (prefers-reduced-motion: reduce) {
130
+ .code-block .copy-button {
131
+ transition: none;
132
+ }
133
+ }
134
+ }
135
+ `;
136
+
137
+ const sheet = new CSSStyleSheet();
138
+ sheet.replaceSync(css);
139
+ export const styles = sheet;
140
+ export default sheet;
@@ -9,7 +9,7 @@ export const css = `/**
9
9
  .collapse {
10
10
  display: flex;
11
11
  flex-direction: column;
12
- border-radius: 0.5rem;
12
+ border-radius: var(--radius-sm);
13
13
  background-color: var(--color-surface);
14
14
  /* Override Tailwind's visibility: collapse utility */
15
15
  visibility: visible !important;
@@ -37,8 +37,8 @@ export const css = `/**
37
37
  }
38
38
 
39
39
  .collapse-trigger:focus-visible {
40
- outline: 2px solid var(--color-primary);
41
- outline-offset: -2px;
40
+ outline: none;
41
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
42
42
  }
43
43
 
44
44
  /* Collapse Icon */
@@ -125,7 +125,7 @@ export const css = `/**
125
125
  border: none;
126
126
  cursor: pointer;
127
127
  transition: background-color 150ms ease-in-out;
128
- border-radius: 0.5rem;
128
+ border-radius: var(--radius-sm);
129
129
  }
130
130
 
131
131
  .collapse-toggle:hover {
@@ -133,8 +133,8 @@ export const css = `/**
133
133
  }
134
134
 
135
135
  .collapse-toggle:focus-visible {
136
- outline: 2px solid var(--color-primary);
137
- outline-offset: 2px;
136
+ outline: none;
137
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
138
138
  }
139
139
 
140
140
  /* Toggle Icon */
@@ -155,7 +155,7 @@ export const css = `/**
155
155
  .collapse-card {
156
156
  background-color: var(--color-surface);
157
157
  border: 1px solid var(--color-outline-variant);
158
- border-radius: 0.75rem;
158
+ border-radius: var(--radius-md);
159
159
  overflow: hidden;
160
160
  box-shadow: var(--shadow-sm);
161
161
  }
@@ -183,7 +183,7 @@ export const css = `/**
183
183
  /* Bordered Variant */
184
184
  .collapse-bordered {
185
185
  border: 1px solid var(--color-outline-variant);
186
- border-radius: 0.5rem;
186
+ border-radius: var(--radius-sm);
187
187
  }
188
188
 
189
189
  /* Ghost Variant */
@@ -307,7 +307,7 @@ export const css = `/**
307
307
  margin-left: 0.5rem;
308
308
  border: 2px solid var(--color-outline);
309
309
  border-top-color: var(--color-primary);
310
- border-radius: 50%;
310
+ border-radius: var(--radius-full);
311
311
  animation: collapse-spin 0.8s linear infinite;
312
312
  }
313
313
 
@@ -21,7 +21,7 @@ export const css = `/**
21
21
  color: var(--color-on-surface);
22
22
  background-color: var(--color-surface);
23
23
  border: 1px solid currentColor;
24
- border-radius: 0.5rem;
24
+ border-radius: var(--radius-sm);
25
25
  transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
26
26
  }
27
27
 
@@ -91,7 +91,7 @@ export const css = `/**
91
91
  padding: 0;
92
92
  background: transparent;
93
93
  border: none;
94
- border-radius: 50%;
94
+ border-radius: var(--radius-full);
95
95
  cursor: pointer;
96
96
  color: var(--color-on-surface-variant);
97
97
  transition: background-color 150ms ease-in-out;
@@ -115,7 +115,7 @@ export const css = `/**
115
115
  margin-top: 0.25rem;
116
116
  background-color: var(--color-surface);
117
117
  border: 1px solid var(--color-outline);
118
- border-radius: 0.75rem;
118
+ border-radius: var(--radius-md);
119
119
  box-shadow: var(--shadow-lg);
120
120
  opacity: 0;
121
121
  visibility: hidden;
@@ -141,7 +141,7 @@ export const css = `/**
141
141
  min-width: 18rem;
142
142
  background-color: var(--color-surface);
143
143
  border: 1px solid var(--color-outline);
144
- border-radius: 0.75rem;
144
+ border-radius: var(--radius-md);
145
145
  box-shadow: var(--shadow-lg);
146
146
  }
147
147
 
@@ -174,7 +174,7 @@ export const css = `/**
174
174
  color: var(--color-on-surface-variant);
175
175
  background-color: transparent;
176
176
  border: none;
177
- border-radius: 50%;
177
+ border-radius: var(--radius-full);
178
178
  cursor: pointer;
179
179
  transition: background-color 150ms ease-in-out, color 150ms ease-in-out;
180
180
  }
@@ -231,7 +231,7 @@ export const css = `/**
231
231
  color: var(--color-on-surface);
232
232
  background-color: transparent;
233
233
  border: none;
234
- border-radius: 50%;
234
+ border-radius: var(--radius-full);
235
235
  cursor: pointer;
236
236
  transition: background-color 150ms ease-in-out, color 150ms ease-in-out;
237
237
  }
@@ -241,8 +241,8 @@ export const css = `/**
241
241
  }
242
242
 
243
243
  .datepicker-day:focus-visible {
244
- outline: 2px solid var(--color-primary);
245
- outline-offset: 2px;
244
+ outline: none;
245
+ box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
246
246
  }
247
247
 
248
248
  .datepicker-day-other-month {
@@ -256,7 +256,7 @@ export const css = `/**
256
256
 
257
257
  .datepicker-day-selected {
258
258
  background-color: var(--color-primary);
259
- color: var(--color-on-primary);
259
+ color: var(--color-primary-content);
260
260
  }
261
261
 
262
262
  .datepicker-day-selected:hover {
@@ -279,14 +279,14 @@ export const css = `/**
279
279
 
280
280
  .datepicker-day-range-start {
281
281
  background-color: var(--color-primary);
282
- color: var(--color-on-primary);
283
- border-radius: 50% 0 0 50%;
282
+ color: var(--color-primary-content);
283
+ border-radius: var(--radius-full) 0 0 var(--radius-full);
284
284
  }
285
285
 
286
286
  .datepicker-day-range-end {
287
287
  background-color: var(--color-primary);
288
- color: var(--color-on-primary);
289
- border-radius: 0 50% 50% 0;
288
+ color: var(--color-primary-content);
289
+ border-radius: 0 var(--radius-full) var(--radius-full) 0;
290
290
  }
291
291
 
292
292
  /* Month/Year View */
@@ -309,7 +309,7 @@ export const css = `/**
309
309
  color: var(--color-on-surface);
310
310
  background-color: transparent;
311
311
  border: none;
312
- border-radius: 0.5rem;
312
+ border-radius: var(--radius-sm);
313
313
  cursor: pointer;
314
314
  transition: background-color 150ms ease-in-out;
315
315
  }
@@ -324,7 +324,7 @@ export const css = `/**
324
324
  .datepicker-year.selected,
325
325
  .datepicker-year-selected {
326
326
  background-color: var(--color-primary);
327
- color: var(--color-on-primary);
327
+ color: var(--color-primary-content);
328
328
  }
329
329
 
330
330
  .datepicker-day-disabled {
@@ -361,7 +361,7 @@ export const css = `/**
361
361
  color: var(--color-on-surface);
362
362
  background-color: var(--color-surface-container);
363
363
  border: 1px solid var(--color-outline);
364
- border-radius: 0.25rem;
364
+ border-radius: var(--radius-xs);
365
365
  }
366
366
 
367
367
  .datepicker-time-input:focus {
@@ -394,17 +394,17 @@ export const css = `/**
394
394
  }
395
395
 
396
396
  .datepicker-time-period-btn:first-child {
397
- border-radius: 0.25rem 0.25rem 0 0;
397
+ border-radius: var(--radius-xs) var(--radius-xs) 0 0;
398
398
  }
399
399
 
400
400
  .datepicker-time-period-btn:last-child {
401
- border-radius: 0 0 0.25rem 0.25rem;
401
+ border-radius: 0 0 var(--radius-xs) var(--radius-xs);
402
402
  border-top: none;
403
403
  }
404
404
 
405
405
  .datepicker-time-period-btn.active {
406
406
  background-color: var(--color-primary);
407
- color: var(--color-on-primary);
407
+ color: var(--color-primary-content);
408
408
  border-color: var(--color-primary);
409
409
  }
410
410
 
@@ -466,7 +466,7 @@ export const css = `/**
466
466
  color: var(--color-on-surface);
467
467
  background-color: transparent;
468
468
  border: none;
469
- border-radius: 0.375rem;
469
+ border-radius: var(--radius-xs);
470
470
  cursor: pointer;
471
471
  text-align: left;
472
472
  transition: background-color 150ms ease-in-out;
@@ -533,7 +533,7 @@ export const css = `/**
533
533
  color: var(--color-on-surface);
534
534
  background-color: var(--color-surface);
535
535
  border: 1px solid var(--color-outline);
536
- border-radius: 0.5rem;
536
+ border-radius: var(--radius-sm);
537
537
  transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
538
538
  }
539
539
 
@@ -639,7 +639,7 @@ export const css = `/**
639
639
  color: var(--color-on-surface);
640
640
  background-color: var(--color-surface);
641
641
  border: 1px solid var(--color-outline);
642
- border-radius: 0.5rem;
642
+ border-radius: var(--radius-sm);
643
643
  transition: border-color 150ms ease-in-out;
644
644
  }
645
645