@transcodes/design-tokens 0.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.
@@ -0,0 +1,509 @@
1
+ /**
2
+ * Do not edit directly, this file was auto-generated.
3
+ * Component styles from design-tokens for use with Lit's adoptedStyleSheets
4
+ */
5
+
6
+ export const componentStyles = `/**
7
+ * Do not edit directly, this file was auto-generated.
8
+ */
9
+
10
+ /* Animations */
11
+ @keyframes fadeInUp {
12
+ 0% {
13
+ opacity: 0;
14
+ transform: translateY(1rem);
15
+ }
16
+ 100% {
17
+ opacity: 1;
18
+ transform: translateY(0);
19
+ }
20
+ }
21
+
22
+ @keyframes slideDown {
23
+ 0% {
24
+ opacity: 0;
25
+ transform: translateY(-0.5rem);
26
+ }
27
+ 100% {
28
+ opacity: 1;
29
+ transform: translateY(0);
30
+ }
31
+ }
32
+
33
+ @keyframes slideUp {
34
+ 0% {
35
+ opacity: 0;
36
+ transform: translateY(0.5rem);
37
+ }
38
+ 100% {
39
+ opacity: 1;
40
+ transform: translateY(0);
41
+ }
42
+ }
43
+
44
+ @keyframes spin {
45
+ to {
46
+ transform: rotate(360deg);
47
+ }
48
+ }
49
+
50
+ @keyframes shake {
51
+ 0%, 100% {
52
+ transform: translateX(0);
53
+ }
54
+ 25% {
55
+ transform: translateX(-0.25rem);
56
+ }
57
+ 75% {
58
+ transform: translateX(0.25rem);
59
+ }
60
+ }
61
+
62
+ @keyframes inkFloat {
63
+ 0%, 100% {
64
+ transform: translate(0, 0) scale(1);
65
+ opacity: 0.5;
66
+ }
67
+ 50% {
68
+ transform: translate(0.625rem, -0.625rem) scale(1.1);
69
+ opacity: 0.7;
70
+ }
71
+ }
72
+
73
+ @keyframes inkDrift {
74
+ 0%, 100% {
75
+ transform: translate(0, 0) rotate(0deg);
76
+ opacity: 0.4;
77
+ }
78
+ 33% {
79
+ transform: translate(-0.5rem, 0.5rem) rotate(-5deg);
80
+ opacity: 0.6;
81
+ }
82
+ 66% {
83
+ transform: translate(0.375rem, -0.375rem) rotate(3deg);
84
+ opacity: 0.5;
85
+ }
86
+ }
87
+
88
+ @keyframes inkSpread {
89
+ 0% {
90
+ transform: scale(0);
91
+ opacity: 0.4;
92
+ }
93
+ 100% {
94
+ transform: scale(var(--ink-effect-spread-scale, 2.5));
95
+ opacity: 0;
96
+ }
97
+ }
98
+
99
+ /* Page Layout */
100
+ .page-container {
101
+ position: relative;
102
+ width: 100%;
103
+ max-width: var(--page-container-max-width);
104
+ margin: 0 auto;
105
+ padding: 0 var(--page-container-padding);
106
+ animation: fadeInUp 600ms var(--transition-smooth) both;
107
+ }
108
+
109
+ .page-container--wide {
110
+ max-width: var(--page-container-max-width-wide);
111
+ }
112
+
113
+ .page-card {
114
+ background: var(--paper-white);
115
+ padding: var(--page-card-padding);
116
+ border-radius: var(--page-card-radius);
117
+ box-shadow: var(--shadow-card);
118
+ position: relative;
119
+ overflow: hidden;
120
+ }
121
+
122
+ .page-card::before {
123
+ content: '';
124
+ position: absolute;
125
+ inset: 0;
126
+ border-radius: inherit;
127
+ padding: var(--space-fixed-2xs);
128
+ background: linear-gradient(135deg, var(--alpha-primary08) 0%, transparent 50%, var(--alpha-primary04) 100%);
129
+ -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
130
+ -webkit-mask-composite: xor;
131
+ mask-composite: exclude;
132
+ pointer-events: none;
133
+ }
134
+
135
+ .page-card--centered {
136
+ text-align: center;
137
+ }
138
+
139
+ /* Page Decoration - Ink effect backgrounds */
140
+ .page-decoration {
141
+ position: absolute;
142
+ border-radius: 50%;
143
+ filter: blur(3.75rem);
144
+ pointer-events: none;
145
+ z-index: 0;
146
+ }
147
+
148
+ .page-decoration--primary {
149
+ background: var(--alpha-primary15);
150
+ }
151
+
152
+ .page-decoration--success {
153
+ background: var(--alpha-success15);
154
+ }
155
+
156
+ .page-decoration--float {
157
+ animation: inkFloat 4s ease-in-out infinite;
158
+ }
159
+
160
+ .page-decoration--drift {
161
+ animation: inkDrift 5s ease-in-out infinite;
162
+ }
163
+
164
+ /* Buttons */
165
+ .button {
166
+ height: var(--button-height);
167
+ padding: 0 var(--space-lg);
168
+ font-family: var(--font-body);
169
+ font-size: var(--button-font-size);
170
+ font-weight: var(--button-font-weight);
171
+ letter-spacing: var(--button-letter-spacing);
172
+ border: var(--space-fixed-2xs) solid transparent;
173
+ border-radius: var(--button-radius);
174
+ cursor: pointer;
175
+ transition: background var(--transition-fast), transform var(--transition-fast);
176
+ }
177
+
178
+ .button-primary {
179
+ background: var(--accent-primary);
180
+ color: var(--paper-white);
181
+ }
182
+
183
+ .button-primary:hover:not(:disabled) {
184
+ background: var(--accent-primary-hover);
185
+ box-shadow: var(--shadow-button-hover-primary);
186
+ transform: translateY(calc(-1 * var(--space-fixed-2xs)));
187
+ }
188
+
189
+ .button-success {
190
+ background: var(--accent-success);
191
+ color: var(--paper-white);
192
+ }
193
+
194
+ .button-success:hover:not(:disabled) {
195
+ background: var(--accent-success-hover);
196
+ box-shadow: var(--shadow-button-hover-success);
197
+ transform: translateY(calc(-1 * var(--space-fixed-2xs)));
198
+ }
199
+
200
+ .button-secondary {
201
+ height: var(--button-height-secondary);
202
+ background: transparent;
203
+ color: var(--ink-dark);
204
+ border: var(--space-fixed-2xs) solid var(--ink-faint);
205
+ }
206
+
207
+ .button-secondary:hover:not(:disabled) {
208
+ color: var(--accent-primary);
209
+ border-color: var(--accent-primary);
210
+ background: var(--alpha-primary04);
211
+ }
212
+
213
+ .button:disabled {
214
+ cursor: not-allowed;
215
+ opacity: 0.7;
216
+ }
217
+
218
+ /* Text Button */
219
+ .text-button {
220
+ display: inline-flex;
221
+ align-items: center;
222
+ justify-content: center;
223
+ height: var(--button-text-height);
224
+ padding: var(--space-sm) var(--space-md);
225
+ font-family: var(--font-body);
226
+ font-size: var(--button-text-font-size);
227
+ font-weight: 500;
228
+ color: var(--ink-dark);
229
+ background: transparent;
230
+ border: none;
231
+ border-radius: var(--radius-md);
232
+ cursor: pointer;
233
+ transition: background var(--transition-fast), color var(--transition-fast);
234
+ }
235
+
236
+ .text-button:hover {
237
+ background: var(--paper-cream);
238
+ color: var(--accent-primary);
239
+ }
240
+
241
+ .text-button-sm {
242
+ height: auto;
243
+ padding: var(--space-xs) var(--space-sm);
244
+ font-size: 0.8125rem;
245
+ }
246
+
247
+ .text-button-md {
248
+ height: auto;
249
+ padding: var(--space-sm) var(--space-md);
250
+ }
251
+
252
+ /* Button Content Layout */
253
+ .button-content {
254
+ display: flex;
255
+ align-items: center;
256
+ justify-content: center;
257
+ gap: var(--button-content-gap);
258
+ }
259
+
260
+ .button-icon {
261
+ display: flex;
262
+ align-items: center;
263
+ justify-content: center;
264
+ flex-shrink: 0;
265
+ }
266
+
267
+ .button-text {
268
+ flex: 1;
269
+ text-align: center;
270
+ }
271
+
272
+ /* Button Spinner */
273
+ .button-spinner {
274
+ width: var(--button-spinner-size);
275
+ height: var(--button-spinner-size);
276
+ border: var(--button-spinner-border-width) solid currentColor;
277
+ border-top-color: transparent;
278
+ border-radius: 50%;
279
+ animation: spin 600ms linear infinite;
280
+ }
281
+
282
+ /* Button Ink Ripple Effect */
283
+ .button-ink {
284
+ position: relative;
285
+ overflow: hidden;
286
+ }
287
+
288
+ .button-ink::after {
289
+ content: '';
290
+ position: absolute;
291
+ top: 50%;
292
+ left: 50%;
293
+ width: 21.875rem;
294
+ height: 21.875rem;
295
+ background: radial-gradient(circle, rgba(255, 255, 255, 0.5) 0%, transparent 70%);
296
+ transform: translate(-50%, -50%) scale(0);
297
+ border-radius: 50%;
298
+ pointer-events: none;
299
+ transition: transform var(--ink-effect-ripple-duration, 600ms) var(--ink-effect-ripple-easing, cubic-bezier(0.4, 0, 0.2, 1)),
300
+ opacity var(--ink-effect-fade-duration, 300ms) ease;
301
+ opacity: 0;
302
+ }
303
+
304
+ .button-ink:hover::after {
305
+ transform: translate(-50%, -50%) scale(1);
306
+ opacity: 1;
307
+ }
308
+
309
+ .button-ink:active::after {
310
+ transform: translate(-50%, -50%) scale(0.8);
311
+ opacity: 0.8;
312
+ }
313
+
314
+ /* Card */
315
+ .card {
316
+ background: var(--paper-white);
317
+ padding: var(--card-padding);
318
+ border-radius: var(--card-radius);
319
+ box-shadow: var(--shadow-card);
320
+ position: relative;
321
+ overflow: hidden;
322
+ }
323
+
324
+ /* Container */
325
+ .container {
326
+ position: relative;
327
+ width: 100%;
328
+ max-width: var(--container-max-width);
329
+ }
330
+
331
+ .container-wide {
332
+ max-width: var(--container-max-width-wide);
333
+ }
334
+
335
+ /* Form Layout */
336
+ .form-header {
337
+ text-align: center;
338
+ margin-bottom: var(--form-header-margin-bottom);
339
+ }
340
+
341
+ .form-title {
342
+ font-family: var(--font-body);
343
+ font-size: var(--title-font-size);
344
+ font-weight: var(--title-font-weight);
345
+ color: var(--ink-black);
346
+ letter-spacing: var(--title-letter-spacing);
347
+ animation: slideDown 400ms var(--transition-smooth) 200ms both;
348
+ }
349
+
350
+ .form-subtitle {
351
+ font-size: var(--form-subtitle-font-size);
352
+ color: var(--ink-medium);
353
+ margin-top: var(--space-sm);
354
+ animation: fadeInUp 400ms var(--transition-smooth) 400ms both;
355
+ }
356
+
357
+ .form-fields {
358
+ display: flex;
359
+ flex-direction: column;
360
+ gap: var(--form-fields-gap);
361
+ }
362
+
363
+ .form-footer {
364
+ margin-top: var(--form-footer-margin-top);
365
+ text-align: center;
366
+ animation: fadeInUp 400ms var(--transition-smooth) 600ms both;
367
+ }
368
+
369
+ /* Field Group */
370
+ .field-group {
371
+ display: flex;
372
+ flex-direction: column;
373
+ gap: var(--field-group-gap);
374
+ }
375
+
376
+ .field-label {
377
+ display: block;
378
+ font-size: var(--label-font-size);
379
+ font-weight: var(--label-font-weight);
380
+ text-transform: uppercase;
381
+ letter-spacing: var(--label-letter-spacing);
382
+ color: var(--ink-medium);
383
+ transition: color var(--transition-fast);
384
+ }
385
+
386
+ .field-group.focused .field-label {
387
+ color: var(--accent-primary);
388
+ }
389
+
390
+ .required-mark {
391
+ color: var(--accent-primary);
392
+ margin-left: var(--space-2xs);
393
+ }
394
+
395
+ /* Input */
396
+ .input {
397
+ width: 100%;
398
+ padding: var(--input-padding-y) var(--input-padding-x);
399
+ font-family: var(--font-body);
400
+ font-size: var(--input-font-size);
401
+ color: var(--ink-black);
402
+ background: var(--paper-cream);
403
+ border: var(--space-fixed-2xs) solid transparent;
404
+ border-radius: var(--input-radius);
405
+ transition: background var(--transition-smooth), border-color var(--transition-smooth), box-shadow var(--transition-smooth);
406
+ }
407
+
408
+ .input::placeholder {
409
+ color: var(--ink-faint);
410
+ }
411
+
412
+ .input:hover {
413
+ background: var(--paper-warm);
414
+ }
415
+
416
+ .input:focus {
417
+ outline: none;
418
+ background: var(--paper-white);
419
+ border-color: var(--ink-faint);
420
+ box-shadow: var(--shadow-input-focus);
421
+ }
422
+
423
+ /* Label */
424
+ .label {
425
+ display: block;
426
+ font-size: var(--label-font-size);
427
+ font-weight: var(--label-font-weight);
428
+ text-transform: uppercase;
429
+ letter-spacing: var(--label-letter-spacing);
430
+ color: var(--ink-medium);
431
+ margin-bottom: var(--space-sm);
432
+ transition: color var(--transition-fast);
433
+ }
434
+
435
+ /* Title */
436
+ .title {
437
+ font-family: var(--font-body);
438
+ font-size: var(--title-font-size);
439
+ font-weight: var(--title-font-weight);
440
+ color: var(--ink-black);
441
+ letter-spacing: var(--title-letter-spacing);
442
+ }
443
+
444
+ /* Feedback */
445
+ .error-message {
446
+ display: flex;
447
+ align-items: flex-start;
448
+ gap: var(--feedback-error-gap);
449
+ padding: var(--feedback-error-padding);
450
+ background: var(--error-bg);
451
+ border: var(--space-fixed-2xs) solid var(--error-border);
452
+ border-radius: var(--feedback-error-radius);
453
+ color: var(--error-base);
454
+ animation: slideDown 300ms var(--transition-smooth) both;
455
+ }
456
+
457
+ .error-icon {
458
+ display: flex;
459
+ align-items: center;
460
+ justify-content: center;
461
+ flex-shrink: 0;
462
+ width: var(--feedback-error-icon-size);
463
+ height: var(--feedback-error-icon-size);
464
+ color: var(--error-base);
465
+ }
466
+
467
+ .error-message.shake {
468
+ animation: shake 400ms var(--transition-smooth);
469
+ }
470
+
471
+ /* Notice */
472
+ .notice {
473
+ display: flex;
474
+ align-items: flex-start;
475
+ gap: var(--feedback-notice-gap);
476
+ padding: var(--feedback-notice-padding);
477
+ border-radius: var(--feedback-notice-radius);
478
+ animation: slideUp 400ms var(--transition-smooth) both;
479
+ }
480
+
481
+ .notice-icon {
482
+ display: flex;
483
+ align-items: center;
484
+ justify-content: center;
485
+ flex-shrink: 0;
486
+ width: var(--feedback-notice-icon-size);
487
+ height: var(--feedback-notice-icon-size);
488
+ }
489
+
490
+ .notice-success {
491
+ background: rgba(53, 122, 70, 0.08);
492
+ border: var(--space-fixed-2xs) solid rgba(53, 122, 70, 0.2);
493
+ color: var(--accent-success);
494
+ }
495
+
496
+ .notice-warning {
497
+ background: rgba(180, 83, 9, 0.08);
498
+ border: var(--space-fixed-2xs) solid rgba(180, 83, 9, 0.2);
499
+ color: var(--semantic-warning);
500
+ }
501
+
502
+ .notice-info {
503
+ background: rgba(3, 105, 161, 0.08);
504
+ border: var(--space-fixed-2xs) solid rgba(3, 105, 161, 0.2);
505
+ color: var(--semantic-info);
506
+ }
507
+ `;
508
+
509
+ export default componentStyles;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Do not edit directly, this file was auto-generated.
3
+ */
4
+
5
+ [data-theme="dark"] {
6
+ --ink-black: #ffffff; /** Primary text (dark). WCAG AAA: 16.1:1 on paper-white */
7
+ --ink-dark: #e5e5e5; /** Secondary text (dark). WCAG AAA: 12.7:1 on paper-white */
8
+ --ink-medium: #a3a3a3; /** Tertiary text (dark). WCAG AAA: 7.0:1 on paper-white */
9
+ --ink-light: #737373; /** Placeholder, disabled text (dark). Contrast: 4.2:1 (meets 3:1 minimum) */
10
+ --ink-faint: #525252; /** Decorative only (dark). NOT for readable text. Contrast: 2.6:1 */
11
+ --paper-white: #1a1a1a; /** Primary background (dark) */
12
+ --paper-cream: #2d2d2d; /** Secondary background (dark) */
13
+ --paper-warm: #404040; /** Tertiary background (dark) */
14
+ --accent-primary: #a78bfa; /** Primary accent (dark). WCAG AA: 7.5:1 on paper-white */
15
+ --accent-primary-hover: #c4b5fd; /** Primary accent hover (dark). WCAG AA: 10.2:1 on paper-white */
16
+ --accent-primary-pressed: #8b5cf6; /** Primary accent pressed (dark). WCAG AA: 5.5:1 on paper-white */
17
+ --accent-success: #4ade80; /** Success accent (dark). WCAG AA: 9.8:1 on paper-white */
18
+ --accent-success-hover: #86efac; /** Success accent hover (dark). WCAG AA: 12.5:1 on paper-white */
19
+ --accent-success-pressed: #22c55e; /** Success accent pressed (dark). WCAG AA: 7.2:1 on paper-white */
20
+ --semantic-warning: #fbbf24; /** Warning state (dark). WCAG AA: 11.3:1 on paper-white */
21
+ --semantic-warning-hover: #fcd34d; /** Warning hover (dark). WCAG AA: 12.8:1 on paper-white */
22
+ --semantic-info: #38bdf8; /** Info state (dark). WCAG AA: 9.4:1 on paper-white */
23
+ --semantic-info-hover: #7dd3fc; /** Info hover (dark). WCAG AA: 11.6:1 on paper-white */
24
+ --error-base: #f87171; /** Error state (dark). WCAG AA: 6.5:1 on paper-white */
25
+ --error-bg: rgba(248, 113, 113, 0.12); /** Error background (dark). Decorative, not for text */
26
+ --error-border: rgba(248, 113, 113, 0.3); /** Error border (dark). Decorative, not for text */
27
+ }