@astryxdesign/theme-neutral 0.5.2-canary.e4f8e4e → 0.5.2-canary.ea1b9b5
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.
- package/dist/neutral.js +82 -16
- package/dist/neutral.variants.d.ts +7 -0
- package/dist/neutralTheme.d.ts.map +1 -1
- package/dist/neutralTheme.test.d.ts +2 -0
- package/dist/neutralTheme.test.d.ts.map +1 -0
- package/dist/source.js +76 -146
- package/dist/source.mjs +80 -147
- package/dist/theme.css +75 -16
- package/package.json +3 -3
- package/src/neutralTheme.test.ts +84 -0
- package/src/neutralTheme.ts +91 -149
package/dist/neutral.js
CHANGED
|
@@ -189,6 +189,25 @@ export const neutralTheme = {
|
|
|
189
189
|
"--shadow-inset-warning": "inset 0px 0px 0px 2px #ffce2f4D",
|
|
190
190
|
"--shadow-inset-error": "inset 0px 0px 0px 2px #e33f4a4D"
|
|
191
191
|
},
|
|
192
|
+
localTokens: {
|
|
193
|
+
"--astryx-theme-neutral-color-status-fill-accent": "light-dark(#0074e2, #6d9cfe)",
|
|
194
|
+
"--astryx-theme-neutral-color-status-fill-success": "light-dark(#198100, #64af4c)",
|
|
195
|
+
"--astryx-theme-neutral-color-status-fill-warning": "#ffce2f",
|
|
196
|
+
"--astryx-theme-neutral-color-status-fill-error": "light-dark(#c9303a, #ff705d)",
|
|
197
|
+
"--astryx-theme-neutral-color-on-tint-neutral": "light-dark(#fafafa4D, #0a0a0a4D)",
|
|
198
|
+
"--astryx-theme-neutral-color-on-tint-overlay-hover": "light-dark(#fafafa1A, #0a0a0a1A)",
|
|
199
|
+
"--astryx-theme-neutral-color-on-tint-overlay-pressed": "light-dark(#fafafa33, #0a0a0a33)"
|
|
200
|
+
},
|
|
201
|
+
__localTokenOwners: {
|
|
202
|
+
"--astryx-theme-neutral-color-status-fill-accent": "neutral",
|
|
203
|
+
"--astryx-theme-neutral-color-status-fill-success": "neutral",
|
|
204
|
+
"--astryx-theme-neutral-color-status-fill-warning": "neutral",
|
|
205
|
+
"--astryx-theme-neutral-color-status-fill-error": "neutral",
|
|
206
|
+
"--astryx-theme-neutral-color-on-tint-neutral": "neutral",
|
|
207
|
+
"--astryx-theme-neutral-color-on-tint-overlay-hover": "neutral",
|
|
208
|
+
"--astryx-theme-neutral-color-on-tint-overlay-pressed": "neutral"
|
|
209
|
+
},
|
|
210
|
+
__localTokenLineage: ["neutral"],
|
|
192
211
|
components: {
|
|
193
212
|
"heading": {
|
|
194
213
|
"level:1": {
|
|
@@ -293,24 +312,24 @@ export const neutralTheme = {
|
|
|
293
312
|
},
|
|
294
313
|
"badge": {
|
|
295
314
|
"variant:info": {
|
|
296
|
-
"backgroundColor": "
|
|
297
|
-
"color": "
|
|
315
|
+
"backgroundColor": "var(--astryx-theme-neutral-color-status-fill-accent)",
|
|
316
|
+
"color": "var(--color-on-accent)"
|
|
298
317
|
},
|
|
299
318
|
"variant:neutral": {
|
|
300
319
|
"backgroundColor": "var(--color-background-gray)",
|
|
301
320
|
"color": "var(--color-text-gray)"
|
|
302
321
|
},
|
|
303
322
|
"variant:success": {
|
|
304
|
-
"backgroundColor": "
|
|
305
|
-
"color": "
|
|
323
|
+
"backgroundColor": "var(--astryx-theme-neutral-color-status-fill-success)",
|
|
324
|
+
"color": "var(--color-on-success)"
|
|
306
325
|
},
|
|
307
326
|
"variant:warning": {
|
|
308
|
-
"backgroundColor": "
|
|
309
|
-
"color": "
|
|
327
|
+
"backgroundColor": "var(--astryx-theme-neutral-color-status-fill-warning)",
|
|
328
|
+
"color": "var(--color-on-warning)"
|
|
310
329
|
},
|
|
311
330
|
"variant:error": {
|
|
312
|
-
"backgroundColor": "
|
|
313
|
-
"color": "
|
|
331
|
+
"backgroundColor": "var(--astryx-theme-neutral-color-status-fill-error)",
|
|
332
|
+
"color": "var(--color-on-error)"
|
|
314
333
|
},
|
|
315
334
|
"variant:red": {
|
|
316
335
|
"backgroundColor": "var(--color-background-red)",
|
|
@@ -355,19 +374,51 @@ export const neutralTheme = {
|
|
|
355
374
|
},
|
|
356
375
|
"statusdot": {
|
|
357
376
|
"variant:success": {
|
|
358
|
-
"backgroundColor": "
|
|
377
|
+
"backgroundColor": "var(--astryx-theme-neutral-color-status-fill-success)"
|
|
359
378
|
},
|
|
360
379
|
"variant:warning": {
|
|
361
|
-
"backgroundColor": "
|
|
380
|
+
"backgroundColor": "var(--astryx-theme-neutral-color-status-fill-warning)"
|
|
362
381
|
},
|
|
363
382
|
"variant:error": {
|
|
364
|
-
"backgroundColor": "
|
|
383
|
+
"backgroundColor": "var(--astryx-theme-neutral-color-status-fill-error)"
|
|
365
384
|
},
|
|
366
385
|
"variant:accent": {
|
|
367
|
-
"backgroundColor": "
|
|
386
|
+
"backgroundColor": "var(--astryx-theme-neutral-color-status-fill-accent)"
|
|
387
|
+
}
|
|
388
|
+
},
|
|
389
|
+
"avatar-status-dot": {
|
|
390
|
+
"variant:success": {
|
|
391
|
+
"backgroundColor": "var(--astryx-theme-neutral-color-status-fill-success)"
|
|
392
|
+
},
|
|
393
|
+
"variant:error": {
|
|
394
|
+
"backgroundColor": "var(--astryx-theme-neutral-color-status-fill-error)"
|
|
395
|
+
}
|
|
396
|
+
},
|
|
397
|
+
"segmented-control": {
|
|
398
|
+
"base": {
|
|
399
|
+
"padding": "var(--spacing-1)"
|
|
400
|
+
}
|
|
401
|
+
},
|
|
402
|
+
"segmented-control-item": {
|
|
403
|
+
"size:sm": {
|
|
404
|
+
"height": "calc(var(--size-element-sm) - 8px)"
|
|
405
|
+
},
|
|
406
|
+
"size:md": {
|
|
407
|
+
"height": "calc(var(--size-element-md) - 8px)"
|
|
408
|
+
},
|
|
409
|
+
"size:lg": {
|
|
410
|
+
"height": "calc(var(--size-element-lg) - 8px)"
|
|
411
|
+
},
|
|
412
|
+
"selected": {
|
|
413
|
+
"boxShadow": "none"
|
|
368
414
|
}
|
|
369
415
|
},
|
|
370
416
|
"banner": {
|
|
417
|
+
"base": {
|
|
418
|
+
"--color-neutral": "var(--astryx-theme-neutral-color-on-tint-neutral)",
|
|
419
|
+
"--color-overlay-hover": "var(--astryx-theme-neutral-color-on-tint-overlay-hover)",
|
|
420
|
+
"--color-overlay-pressed": "var(--astryx-theme-neutral-color-on-tint-overlay-pressed)"
|
|
421
|
+
},
|
|
371
422
|
"status:info": {
|
|
372
423
|
"--color-accent-muted": "var(--color-background-blue)",
|
|
373
424
|
"--color-text-primary": "var(--color-text-blue)",
|
|
@@ -385,11 +436,26 @@ export const neutralTheme = {
|
|
|
385
436
|
"--color-warning": "var(--color-text-yellow)"
|
|
386
437
|
},
|
|
387
438
|
"status:error": {
|
|
439
|
+
"--color-error-muted": "var(--color-background-red)",
|
|
388
440
|
"--color-text-primary": "var(--color-text-red)",
|
|
389
441
|
"--color-text-secondary": "var(--color-text-red)",
|
|
390
442
|
"--color-error": "var(--color-text-red)"
|
|
391
443
|
}
|
|
392
444
|
},
|
|
445
|
+
"step-indicator": {
|
|
446
|
+
"status:accent": {
|
|
447
|
+
"--color-accent": "var(--astryx-theme-neutral-color-status-fill-accent)"
|
|
448
|
+
},
|
|
449
|
+
"status:success": {
|
|
450
|
+
"--color-success": "var(--astryx-theme-neutral-color-status-fill-success)"
|
|
451
|
+
},
|
|
452
|
+
"status:warning": {
|
|
453
|
+
"--color-warning": "var(--astryx-theme-neutral-color-status-fill-warning)"
|
|
454
|
+
},
|
|
455
|
+
"status:error": {
|
|
456
|
+
"--color-error": "var(--astryx-theme-neutral-color-status-fill-error)"
|
|
457
|
+
}
|
|
458
|
+
},
|
|
393
459
|
"switch": {
|
|
394
460
|
"base": {
|
|
395
461
|
"--color-background-gray": "var(--color-border-emphasized)"
|
|
@@ -400,16 +466,16 @@ export const neutralTheme = {
|
|
|
400
466
|
"--color-background-muted": "var(--color-border-emphasized)"
|
|
401
467
|
},
|
|
402
468
|
"variant:accent": {
|
|
403
|
-
"--color-accent": "
|
|
469
|
+
"--color-accent": "var(--astryx-theme-neutral-color-status-fill-accent)"
|
|
404
470
|
},
|
|
405
471
|
"variant:success": {
|
|
406
|
-
"--color-success": "
|
|
472
|
+
"--color-success": "var(--astryx-theme-neutral-color-status-fill-success)"
|
|
407
473
|
},
|
|
408
474
|
"variant:warning": {
|
|
409
|
-
"--color-warning": "
|
|
475
|
+
"--color-warning": "var(--astryx-theme-neutral-color-status-fill-warning)"
|
|
410
476
|
},
|
|
411
477
|
"variant:error": {
|
|
412
|
-
"--color-error": "
|
|
478
|
+
"--color-error": "var(--astryx-theme-neutral-color-status-fill-error)"
|
|
413
479
|
}
|
|
414
480
|
},
|
|
415
481
|
"card": {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"neutralTheme.d.ts","sourceRoot":"","sources":["../src/neutralTheme.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"neutralTheme.d.ts","sourceRoot":"","sources":["../src/neutralTheme.ts"],"names":[],"mappings":"AAwFA,eAAO,MAAM,YAAY,iDAsfvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"neutralTheme.test.d.ts","sourceRoot":"","sources":["../src/neutralTheme.test.ts"],"names":[],"mappings":""}
|
package/dist/source.js
CHANGED
|
@@ -68,7 +68,7 @@ var neutralIconRegistry = {
|
|
|
68
68
|
|
|
69
69
|
// src/neutralTheme.ts
|
|
70
70
|
var neutralSyntax = (0, import_theme.defineSyntaxTheme)({
|
|
71
|
-
name: "
|
|
71
|
+
name: "astryx-neutral",
|
|
72
72
|
tokens: {
|
|
73
73
|
keyword: ["#700084", "#efa8ff"],
|
|
74
74
|
// purple T30/T80
|
|
@@ -101,8 +101,30 @@ var neutralSyntax = (0, import_theme.defineSyntaxTheme)({
|
|
|
101
101
|
background: ["#fafafa", "#0a0a0a"]
|
|
102
102
|
}
|
|
103
103
|
});
|
|
104
|
+
var neutralLocalTokens = {
|
|
105
|
+
"--astryx-theme-neutral-color-status-fill-accent": ["#0074e2", "#6d9cfe"],
|
|
106
|
+
"--astryx-theme-neutral-color-status-fill-success": ["#198100", "#64af4c"],
|
|
107
|
+
"--astryx-theme-neutral-color-status-fill-warning": "#ffce2f",
|
|
108
|
+
"--astryx-theme-neutral-color-status-fill-error": ["#c9303a", "#ff705d"],
|
|
109
|
+
"--astryx-theme-neutral-color-on-tint-neutral": ["#fafafa4D", "#0a0a0a4D"],
|
|
110
|
+
"--astryx-theme-neutral-color-on-tint-overlay-hover": [
|
|
111
|
+
"#fafafa1A",
|
|
112
|
+
"#0a0a0a1A"
|
|
113
|
+
],
|
|
114
|
+
"--astryx-theme-neutral-color-on-tint-overlay-pressed": [
|
|
115
|
+
"#fafafa33",
|
|
116
|
+
"#0a0a0a33"
|
|
117
|
+
]
|
|
118
|
+
};
|
|
119
|
+
var statusFill = {
|
|
120
|
+
accent: "var(--astryx-theme-neutral-color-status-fill-accent)",
|
|
121
|
+
success: "var(--astryx-theme-neutral-color-status-fill-success)",
|
|
122
|
+
warning: "var(--astryx-theme-neutral-color-status-fill-warning)",
|
|
123
|
+
error: "var(--astryx-theme-neutral-color-status-fill-error)"
|
|
124
|
+
};
|
|
104
125
|
var neutralTheme = (0, import_theme.defineTheme)({
|
|
105
126
|
name: "neutral",
|
|
127
|
+
localTokens: neutralLocalTokens,
|
|
106
128
|
// Typography: Figtree across body, heading, and display sizes (display
|
|
107
129
|
// size tokens inherit from heading.family). Monospace stays as the
|
|
108
130
|
// platform default for code.
|
|
@@ -378,84 +400,33 @@ var neutralTheme = (0, import_theme.defineTheme)({
|
|
|
378
400
|
"--shadow-inset-error": "inset 0px 0px 0px 2px #e33f4a4D"
|
|
379
401
|
},
|
|
380
402
|
components: {
|
|
381
|
-
// =========================================================================
|
|
382
|
-
// Button — primary gets white text, secondary gets a border, destructive
|
|
383
|
-
// uses the OKLCH red filled treatment.
|
|
384
|
-
// =========================================================================
|
|
385
403
|
button: {
|
|
386
404
|
"variant:destructive": {
|
|
387
405
|
backgroundColor: "var(--color-error-muted)",
|
|
388
|
-
// locked pastel red bg
|
|
389
406
|
color: "var(--color-error)"
|
|
390
|
-
// locked T30 red — matches banner/input error text
|
|
391
407
|
}
|
|
392
408
|
},
|
|
393
|
-
// =========================================================================
|
|
394
|
-
// Badge —
|
|
395
|
-
// Semantic (info/success/warning/error): filled saturated T50 + contrasting
|
|
396
|
-
// text (white, or dark on yellow). The filled-button rule from #2150
|
|
397
|
-
// §3 — text contrast locks the bg tone, so this stays at T50 in
|
|
398
|
-
// BOTH modes, unlike pastel surfaces which invert by mode.
|
|
399
|
-
// Categorical (blue/green/red/orange/etc.): pastel-tinted hue surface +
|
|
400
|
-
// colored text — light mode = soft T87-T90 + dark T30 text; dark mode
|
|
401
|
-
// = T20 tinted + T80 light pastel text (sources: --color-background-X
|
|
402
|
-
// and --color-text-X tokens).
|
|
403
|
-
// Neutral: light gray bg + dark text (or inverted in dark mode).
|
|
404
|
-
// =========================================================================
|
|
405
409
|
badge: {
|
|
406
|
-
// Semantic — filled saturated bg + contrasting text.
|
|
407
|
-
// Light: vivid T45-T55 from the OKLCH palette + white text
|
|
408
|
-
// (~4.5-5:1 — Material/Linear/Vercel pop).
|
|
409
|
-
// Dark : T60 stop from the dark-mode tonal palette (chroma×0.85,
|
|
410
|
-
// +5 tone-lift taper from issue #2150 §4) + DARK text.
|
|
411
|
-
// T60+white fails AA-large (~2.7:1); T60+dark hits 6.6-7:1
|
|
412
|
-
// and tames the §4 vibration. Same dark-text-on-bright-bg
|
|
413
|
-
// treatment that warning yellow uses in both modes.
|
|
414
410
|
"variant:info": {
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
backgroundColor: "light-dark(#0074e2, #6d9cfe)",
|
|
418
|
-
color: "light-dark(#ffffff, #171717)"
|
|
411
|
+
backgroundColor: statusFill.accent,
|
|
412
|
+
color: "var(--color-on-accent)"
|
|
419
413
|
},
|
|
420
414
|
"variant:neutral": {
|
|
421
|
-
// Mirrors the gray categorical badge — same neutral chip treatment
|
|
422
|
-
// (Neutral 200 light / semi-transparent white wash dark) sourced
|
|
423
|
-
// from the gray hue tokens, so a single change at the token layer
|
|
424
|
-
// updates both variants.
|
|
425
415
|
backgroundColor: "var(--color-background-gray)",
|
|
426
416
|
color: "var(--color-text-gray)"
|
|
427
417
|
},
|
|
428
418
|
"variant:success": {
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
backgroundColor: "light-dark(#198100, #64af4c)",
|
|
432
|
-
color: "light-dark(#ffffff, #171717)"
|
|
419
|
+
backgroundColor: statusFill.success,
|
|
420
|
+
color: "var(--color-on-success)"
|
|
433
421
|
},
|
|
434
422
|
"variant:warning": {
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
// suffer from the §4 vibration concern.
|
|
438
|
-
backgroundColor: "#ffce2f",
|
|
439
|
-
color: "#171717"
|
|
423
|
+
backgroundColor: statusFill.warning,
|
|
424
|
+
color: "var(--color-on-warning)"
|
|
440
425
|
},
|
|
441
426
|
"variant:error": {
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
// large-text allowance. One tonal step down holds the hue
|
|
445
|
-
// (OKLCH H 21.9 -> 22.8, C 0.200 -> 0.189) and reaches 5.29:1.
|
|
446
|
-
// Dark : T60 stop from dark-mode tonal palette of Tailwind red-600
|
|
447
|
-
// source #dc2626 (kept on H=27 alarm-red rather than coral).
|
|
448
|
-
// Dark text on it is 6.60:1 and unchanged.
|
|
449
|
-
backgroundColor: "light-dark(#c9303a, #ff705d)",
|
|
450
|
-
color: "light-dark(#ffffff, #171717)"
|
|
427
|
+
backgroundColor: statusFill.error,
|
|
428
|
+
color: "var(--color-on-error)"
|
|
451
429
|
},
|
|
452
|
-
// Categorical — bg + text reference the per-hue tokens, so behavior
|
|
453
|
-
// tracks the categorical palette automatically:
|
|
454
|
-
// Light: pastel T87-T90 bg + dark T30 colored text (low-key chip)
|
|
455
|
-
// Dark : tinted T20 bg + light T80 colored text (per #2150 §5,
|
|
456
|
-
// inverted from light to avoid the "pastel-in-both-modes"
|
|
457
|
-
// anti-pattern that makes locked light pastels glow on a
|
|
458
|
-
// dark body)
|
|
459
430
|
"variant:red": {
|
|
460
431
|
backgroundColor: "var(--color-background-red)",
|
|
461
432
|
color: "var(--color-text-red)"
|
|
@@ -497,63 +468,49 @@ var neutralTheme = (0, import_theme.defineTheme)({
|
|
|
497
468
|
color: "var(--color-text-gray)"
|
|
498
469
|
}
|
|
499
470
|
},
|
|
500
|
-
// =========================================================================
|
|
501
|
-
// StatusDot — fill uses the SAME vivid stops as the filled semantic Badge
|
|
502
|
-
// (and ProgressBar), so a dot and its badge read as one status language.
|
|
503
|
-
//
|
|
504
|
-
// The default component maps each variant to a raw semantic token
|
|
505
|
-
// (--color-success / --color-error / --color-warning / --color-icon-
|
|
506
|
-
// secondary), which in light mode are the dark T30/T40 stops meant to
|
|
507
|
-
// sit as TEXT on a pastel surface — as a solid dot they read muddy
|
|
508
|
-
// (dark green / maroon / brown). Redirect them to the badge fills.
|
|
509
|
-
//
|
|
510
|
-
// success → badge success bg (green T45 / dark-ramp T60)
|
|
511
|
-
// warning → badge warning bg (yellow T85, same hex both modes)
|
|
512
|
-
// error → badge error bg (red T58 / dark-ramp T60)
|
|
513
|
-
// accent → badge info bg (blue T50 / dark-ramp T60) — the
|
|
514
|
-
// StatusDot "accent" is the info/attention color, so it
|
|
515
|
-
// pairs with the info badge rather than --color-accent
|
|
516
|
-
// (near-black #262626, the darkest offender).
|
|
517
|
-
//
|
|
518
|
-
// `neutral` is intentionally NOT overridden: the neutral badge bg is a
|
|
519
|
-
// near-invisible light gray (--color-background-gray #e5e5e5 / 10% white
|
|
520
|
-
// wash), fine as a large pill but unreadable as an 8px dot. It keeps the
|
|
521
|
-
// component default's visible mid-gray (--color-icon-secondary), which is
|
|
522
|
-
// not among the "too dark" cases.
|
|
523
|
-
// =========================================================================
|
|
524
471
|
statusdot: {
|
|
525
|
-
"variant:success": { backgroundColor:
|
|
526
|
-
"variant:warning": { backgroundColor:
|
|
527
|
-
"variant:error": { backgroundColor:
|
|
528
|
-
"variant:accent": { backgroundColor:
|
|
472
|
+
"variant:success": { backgroundColor: statusFill.success },
|
|
473
|
+
"variant:warning": { backgroundColor: statusFill.warning },
|
|
474
|
+
"variant:error": { backgroundColor: statusFill.error },
|
|
475
|
+
"variant:accent": { backgroundColor: statusFill.accent }
|
|
476
|
+
},
|
|
477
|
+
"avatar-status-dot": {
|
|
478
|
+
"variant:success": { backgroundColor: statusFill.success },
|
|
479
|
+
"variant:error": { backgroundColor: statusFill.error }
|
|
480
|
+
},
|
|
481
|
+
// Give the Neutral segmented control a roomier inset without changing its
|
|
482
|
+
// outside height. The selected item stays flat against the tinted track.
|
|
483
|
+
"segmented-control": {
|
|
484
|
+
base: {
|
|
485
|
+
padding: "var(--spacing-1)"
|
|
486
|
+
}
|
|
487
|
+
},
|
|
488
|
+
"segmented-control-item": {
|
|
489
|
+
"size:sm": {
|
|
490
|
+
height: "calc(var(--size-element-sm) - 8px)"
|
|
491
|
+
},
|
|
492
|
+
"size:md": {
|
|
493
|
+
height: "calc(var(--size-element-md) - 8px)"
|
|
494
|
+
},
|
|
495
|
+
"size:lg": {
|
|
496
|
+
height: "calc(var(--size-element-lg) - 8px)"
|
|
497
|
+
},
|
|
498
|
+
selected: {
|
|
499
|
+
boxShadow: "none"
|
|
500
|
+
}
|
|
529
501
|
},
|
|
530
|
-
// =========================================================================
|
|
531
|
-
// Banner — sits on a hue-tinted surface with colored text/icon:
|
|
532
|
-
// Light: pastel T90 bg (pulled from --color-{X}-muted / --color-background-blue)
|
|
533
|
-
// + dark T30 colored text (--color-text-{hue}).
|
|
534
|
-
// Dark : tinted T20 bg (same tokens, dark slot) + light T80 colored text.
|
|
535
|
-
// Per #2150 §5 — large hue-tinted surfaces in dark mode invert
|
|
536
|
-
// to a deep tinted bg + light text rather than locking the
|
|
537
|
-
// light-mode pastel.
|
|
538
|
-
//
|
|
539
|
-
// The inner-header *-muted token carries the tinted background for every
|
|
540
|
-
// status, info included. A theme override that sets a plain CSS property
|
|
541
|
-
// instead lands in @layer astryx-theme, which StyleX's @layer priority4
|
|
542
|
-
// outranks, so `backgroundColor` here would silently do nothing and the
|
|
543
|
-
// info banner would paint no background at all.
|
|
544
|
-
//
|
|
545
|
-
// Status overrides reference --color-text-{hue} so text/icon colors
|
|
546
|
-
// stay in sync with the palette anchors automatically.
|
|
547
502
|
banner: {
|
|
503
|
+
base: {
|
|
504
|
+
"--color-neutral": "var(--astryx-theme-neutral-color-on-tint-neutral)",
|
|
505
|
+
"--color-overlay-hover": "var(--astryx-theme-neutral-color-on-tint-overlay-hover)",
|
|
506
|
+
"--color-overlay-pressed": "var(--astryx-theme-neutral-color-on-tint-overlay-pressed)"
|
|
507
|
+
},
|
|
548
508
|
"status:info": {
|
|
549
509
|
"--color-accent-muted": "var(--color-background-blue)",
|
|
550
510
|
"--color-text-primary": "var(--color-text-blue)",
|
|
551
511
|
"--color-text-secondary": "var(--color-text-blue)",
|
|
552
512
|
"--color-accent": "var(--color-text-blue)"
|
|
553
513
|
},
|
|
554
|
-
// success/warning/error banner bgs come from --color-{X}-muted, which
|
|
555
|
-
// already carries the correct light/dark tinted values. We only need
|
|
556
|
-
// to redirect the text/icon to the palette colored stop.
|
|
557
514
|
"status:success": {
|
|
558
515
|
"--color-text-primary": "var(--color-text-green)",
|
|
559
516
|
"--color-text-secondary": "var(--color-text-green)",
|
|
@@ -565,27 +522,18 @@ var neutralTheme = (0, import_theme.defineTheme)({
|
|
|
565
522
|
"--color-warning": "var(--color-text-yellow)"
|
|
566
523
|
},
|
|
567
524
|
"status:error": {
|
|
525
|
+
"--color-error-muted": "var(--color-background-red)",
|
|
568
526
|
"--color-text-primary": "var(--color-text-red)",
|
|
569
527
|
"--color-text-secondary": "var(--color-text-red)",
|
|
570
528
|
"--color-error": "var(--color-text-red)"
|
|
571
529
|
}
|
|
572
530
|
},
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
// dark T20). Verified all six combinations clear AA non-text 3:1.
|
|
580
|
-
// =========================================================================
|
|
581
|
-
// =========================================================================
|
|
582
|
-
// Switch — off-state track uses the same lifted-neutral surface as the
|
|
583
|
-
// ProgressBar track (--color-border-emphasized). Aligns the two
|
|
584
|
-
// "channel-on-body" components so their off-states share one visual
|
|
585
|
-
// language: light T85 #d4d4d4 sits one step darker than the body T95
|
|
586
|
-
// bg, dark T35 #525252 sits one step lighter than the body T10. Each
|
|
587
|
-
// is a defined channel, not a wash that blends in.
|
|
588
|
-
// =========================================================================
|
|
531
|
+
"step-indicator": {
|
|
532
|
+
"status:accent": { "--color-accent": statusFill.accent },
|
|
533
|
+
"status:success": { "--color-success": statusFill.success },
|
|
534
|
+
"status:warning": { "--color-warning": statusFill.warning },
|
|
535
|
+
"status:error": { "--color-error": statusFill.error }
|
|
536
|
+
},
|
|
589
537
|
switch: {
|
|
590
538
|
base: {
|
|
591
539
|
"--color-background-gray": "var(--color-border-emphasized)"
|
|
@@ -593,44 +541,26 @@ var neutralTheme = (0, import_theme.defineTheme)({
|
|
|
593
541
|
},
|
|
594
542
|
progressbar: {
|
|
595
543
|
base: {
|
|
596
|
-
// Track uses --color-background-muted; override it to
|
|
597
|
-
// --color-border-emphasized (Neutral T85 #d4d4d4 in light mode) so
|
|
598
|
-
// the track is clearly darker than the body bg (Neutral T95 #f1f1f1)
|
|
599
|
-
// and reads as a defined channel rather than blending in. Dark
|
|
600
|
-
// mode inherits T35 #525252 — same one-step-lighter behavior.
|
|
601
544
|
"--color-background-muted": "var(--color-border-emphasized)"
|
|
602
545
|
},
|
|
603
|
-
// Vivid stops match the filled semantic badge colors (info/success/
|
|
604
|
-
// warning/error variants in the badge override above). Same hex
|
|
605
|
-
// values; documented per role with palette provenance.
|
|
606
546
|
"variant:accent": {
|
|
607
|
-
|
|
608
|
-
"--color-accent": "#0074e2"
|
|
547
|
+
"--color-accent": statusFill.accent
|
|
609
548
|
},
|
|
610
549
|
"variant:success": {
|
|
611
|
-
|
|
612
|
-
"--color-success": "#198100"
|
|
550
|
+
"--color-success": statusFill.success
|
|
613
551
|
},
|
|
614
552
|
"variant:warning": {
|
|
615
|
-
|
|
616
|
-
"--color-warning": "#ffce2f"
|
|
553
|
+
"--color-warning": statusFill.warning
|
|
617
554
|
},
|
|
618
555
|
"variant:error": {
|
|
619
|
-
|
|
620
|
-
"--color-error": "#c9303a"
|
|
556
|
+
"--color-error": statusFill.error
|
|
621
557
|
}
|
|
622
558
|
},
|
|
623
|
-
// =========================================================================
|
|
624
|
-
// Card — tighter padding via public card padding token
|
|
625
|
-
// =========================================================================
|
|
626
559
|
card: {
|
|
627
560
|
base: {
|
|
628
561
|
padding: "var(--spacing-3)"
|
|
629
562
|
}
|
|
630
563
|
},
|
|
631
|
-
// =========================================================================
|
|
632
|
-
// Section — tighter padding via public section padding token
|
|
633
|
-
// =========================================================================
|
|
634
564
|
section: {
|
|
635
565
|
base: {
|
|
636
566
|
padding: "var(--spacing-3)"
|