tyrell-components 1.0.0-TC23 → 1.0.0-TC24
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/css/tyrell-brand.css +176 -78
- package/css/tyrell-simple.css +257 -0
- package/css/tyrell.css +30 -16
- package/dist/tyrell-brand.css +176 -78
- package/dist/tyrell.css +30 -16
- package/dist/tyrell.js +1 -1
- package/lib/styles/button.d.ts +5 -2
- package/lib/styles/button.d.ts.map +1 -1
- package/lib/styles/button.js +35 -71
- package/lib/styles/button.js.map +1 -1
- package/lib/styles/tag.d.ts +1 -1
- package/lib/styles/tag.d.ts.map +1 -1
- package/lib/styles/tag.js +5 -5
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +1 -1
package/css/tyrell.css
CHANGED
|
@@ -352,50 +352,58 @@ COMPONENT TOKENS
|
|
|
352
352
|
--ty-input-warning-border: var(--ty-color-warning);
|
|
353
353
|
|
|
354
354
|
/* =================================================================
|
|
355
|
-
SOLID BUTTON FILLS —
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
--ty-solid-{flavor}-soft softer fill (for solid- tone)
|
|
360
|
-
--ty-solid-{flavor}-fg paired text color (default white)
|
|
361
|
-
Strong/soft default to var(--ty-color-{flavor}-strong/-soft) so they
|
|
362
|
-
inherit from the existing color hierarchy. Override per flavor if needed.
|
|
355
|
+
SOLID BUTTON FILLS — plain default values (the contract). The smart
|
|
356
|
+
per-state derivation (hover/active/tone via OKLCH) lives in the theme
|
|
357
|
+
engines (tyrell-brand.css / tyrell-simple.css), not here. hover/active
|
|
358
|
+
alias to -strong as a simple default; a theme overrides them.
|
|
363
359
|
================================================================= */
|
|
364
360
|
|
|
365
361
|
/* Primary */
|
|
366
362
|
--ty-solid-primary: #4076b9;
|
|
367
363
|
--ty-solid-primary-strong: var(--ty-color-primary-bold);
|
|
368
364
|
--ty-solid-primary-soft: #7ea7d9;
|
|
365
|
+
--ty-solid-primary-hover: var(--ty-solid-primary-strong);
|
|
366
|
+
--ty-solid-primary-active: var(--ty-solid-primary-strong);
|
|
369
367
|
--ty-solid-primary-fg: white;
|
|
370
368
|
|
|
371
369
|
/* Secondary */
|
|
372
370
|
--ty-solid-secondary: #7e67b4;
|
|
373
371
|
--ty-solid-secondary-strong: #7d58d1;
|
|
374
372
|
--ty-solid-secondary-soft: #9f8ec5;
|
|
373
|
+
--ty-solid-secondary-hover: var(--ty-solid-secondary-strong);
|
|
374
|
+
--ty-solid-secondary-active: var(--ty-solid-secondary-strong);
|
|
375
375
|
--ty-solid-secondary-fg: white;
|
|
376
376
|
|
|
377
377
|
/* Success */
|
|
378
378
|
--ty-solid-success: #3bb68d;
|
|
379
379
|
--ty-solid-success-strong: #27956e;
|
|
380
380
|
--ty-solid-success-soft: #69b99e;
|
|
381
|
+
--ty-solid-success-hover: var(--ty-solid-success-strong);
|
|
382
|
+
--ty-solid-success-active: var(--ty-solid-success-strong);
|
|
381
383
|
--ty-solid-success-fg: white;
|
|
382
384
|
|
|
383
385
|
/* Danger */
|
|
384
386
|
--ty-solid-danger: #df5b5b;
|
|
385
387
|
--ty-solid-danger-strong: #cc3e3e;
|
|
386
388
|
--ty-solid-danger-soft: #d57a7a;
|
|
389
|
+
--ty-solid-danger-hover: var(--ty-solid-danger-strong);
|
|
390
|
+
--ty-solid-danger-active: var(--ty-solid-danger-strong);
|
|
387
391
|
--ty-solid-danger-fg: white;
|
|
388
392
|
|
|
389
393
|
/* Warning */
|
|
390
394
|
--ty-solid-warning: #e1a644;
|
|
391
395
|
--ty-solid-warning-strong: #f59e0b;
|
|
392
396
|
--ty-solid-warning-soft: #fbc56d;
|
|
397
|
+
--ty-solid-warning-hover: var(--ty-solid-warning-strong);
|
|
398
|
+
--ty-solid-warning-active: var(--ty-solid-warning-strong);
|
|
393
399
|
--ty-solid-warning-fg: white;
|
|
394
400
|
|
|
395
401
|
/* Neutral */
|
|
396
402
|
--ty-solid-neutral: #414141;
|
|
397
403
|
--ty-solid-neutral-strong: #000000;
|
|
398
404
|
--ty-solid-neutral-soft: #6e6e6e;
|
|
405
|
+
--ty-solid-neutral-hover: var(--ty-solid-neutral-strong);
|
|
406
|
+
--ty-solid-neutral-active: var(--ty-solid-neutral-strong);
|
|
399
407
|
--ty-solid-neutral-fg: white;
|
|
400
408
|
|
|
401
409
|
/* =================================================================
|
|
@@ -695,42 +703,48 @@ Emphasis logic inverts: lighter = more emphasis
|
|
|
695
703
|
0 20px 25px -5px rgba(0, 0, 0, 0.3), 0 8px 10px -6px rgba(0, 0, 0, 0.3);
|
|
696
704
|
--ty-shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
|
|
697
705
|
|
|
698
|
-
/* Solid button fills
|
|
699
|
-
|
|
700
|
-
inverts), so solid+ buttons will have a light bg with white text — low
|
|
701
|
-
contrast for some flavors. Override per flavor via --ty-solid-{flavor}-fg
|
|
702
|
-
if a specific brand needs darker text. */
|
|
706
|
+
/* Solid button fills — plain dark defaults. hover/active alias -strong;
|
|
707
|
+
theme engines override with smart per-state derivation. */
|
|
703
708
|
--ty-solid-primary: #3e536c;
|
|
704
709
|
--ty-solid-primary-strong: #426084;
|
|
705
710
|
--ty-solid-primary-soft: #343f4c;
|
|
711
|
+
--ty-solid-primary-hover: var(--ty-solid-primary-strong);
|
|
712
|
+
--ty-solid-primary-active: var(--ty-solid-primary-strong);
|
|
706
713
|
--ty-solid-primary-fg: white;
|
|
707
714
|
|
|
708
715
|
--ty-solid-secondary: #7e67b4;
|
|
709
716
|
--ty-solid-secondary-strong: #8269bc;
|
|
710
717
|
--ty-solid-secondary-soft: #52466a;
|
|
718
|
+
--ty-solid-secondary-hover: var(--ty-solid-secondary-strong);
|
|
719
|
+
--ty-solid-secondary-active: var(--ty-solid-secondary-strong);
|
|
711
720
|
--ty-solid-secondary-fg: white;
|
|
712
721
|
|
|
713
|
-
/* Success */
|
|
714
722
|
--ty-solid-success: #3bb68d;
|
|
715
723
|
--ty-solid-success-strong: #459679;
|
|
716
724
|
--ty-solid-success-soft: #285748;
|
|
725
|
+
--ty-solid-success-hover: var(--ty-solid-success-strong);
|
|
726
|
+
--ty-solid-success-active: var(--ty-solid-success-strong);
|
|
717
727
|
--ty-solid-success-fg: white;
|
|
718
728
|
|
|
719
|
-
/* Danger */
|
|
720
729
|
--ty-solid-danger: #df5b5b;
|
|
721
730
|
--ty-solid-danger-strong: #cc3e3e;
|
|
722
731
|
--ty-solid-danger-soft: #875656;
|
|
732
|
+
--ty-solid-danger-hover: var(--ty-solid-danger-strong);
|
|
733
|
+
--ty-solid-danger-active: var(--ty-solid-danger-strong);
|
|
723
734
|
--ty-solid-danger-fg: white;
|
|
724
735
|
|
|
725
|
-
/* Warning */
|
|
726
736
|
--ty-solid-warning: #e1a644;
|
|
727
737
|
--ty-solid-warning-strong: #f59e0b;
|
|
728
738
|
--ty-solid-warning-soft: #8b6334;
|
|
739
|
+
--ty-solid-warning-hover: var(--ty-solid-warning-strong);
|
|
740
|
+
--ty-solid-warning-active: var(--ty-solid-warning-strong);
|
|
729
741
|
--ty-solid-warning-fg: white;
|
|
730
742
|
|
|
731
743
|
--ty-solid-neutral: #414141;
|
|
732
744
|
--ty-solid-neutral-strong: #4c4c4c;
|
|
733
745
|
--ty-solid-neutral-soft: #2a2a2a;
|
|
746
|
+
--ty-solid-neutral-hover: var(--ty-solid-neutral-strong);
|
|
747
|
+
--ty-solid-neutral-active: var(--ty-solid-neutral-strong);
|
|
734
748
|
--ty-solid-neutral-fg: white;
|
|
735
749
|
|
|
736
750
|
/* Input component tokens - dark mode */
|
package/dist/tyrell-brand.css
CHANGED
|
@@ -54,15 +54,19 @@
|
|
|
54
54
|
* FILE LAYOUT
|
|
55
55
|
* =====================================================================
|
|
56
56
|
*
|
|
57
|
-
* SECTION 1 — KNOBS
|
|
58
|
-
* The variables you might want to override.
|
|
59
|
-
* rebrand (Tier 1) to surgical per-flavor tweak (Tier 5)
|
|
57
|
+
* SECTION 1 — KNOBS
|
|
58
|
+
* The variables you might want to override. Six tiers from drop-in
|
|
59
|
+
* rebrand (Tier 1) to surgical per-flavor tweak (Tier 5) plus solid
|
|
60
|
+
* buttons (Tier 6).
|
|
60
61
|
*
|
|
61
62
|
* SECTION 2 — IMPLEMENTATION
|
|
62
63
|
* The oklch() expressions that wire the knobs through to the actual
|
|
63
64
|
* color tokens. Rarely needs editing — Section 1 is the contract.
|
|
64
65
|
*
|
|
65
|
-
* Browser support:
|
|
66
|
+
* Browser support: oklch() is in every evergreen browser since mid-2023.
|
|
67
|
+
* Tier 6 (solid) additionally uses OKLCH relative color — oklch(from …) —
|
|
68
|
+
* which lands later: Chrome 119, Safari 16.4, Firefox 128 (mid-2024).
|
|
69
|
+
* Solid fills have no fallback below those versions.
|
|
66
70
|
*
|
|
67
71
|
* ===================================================================== */
|
|
68
72
|
|
|
@@ -81,6 +85,8 @@
|
|
|
81
85
|
* Tier 5 — PER-FLAVOR L-FACTOR per-flavor lightness multiplier — push
|
|
82
86
|
* one flavor up or down without touching
|
|
83
87
|
* the others. Default 1.
|
|
88
|
+
* Tier 6 — SOLID FILLS solid-button system: hover/active/tone
|
|
89
|
+
* L offsets + per-theme dim/desaturate.
|
|
84
90
|
* ===================================================================== */
|
|
85
91
|
|
|
86
92
|
:root {
|
|
@@ -91,7 +97,7 @@
|
|
|
91
97
|
* --------------------------------------------------------------*/
|
|
92
98
|
|
|
93
99
|
--ty-brand-hue: 230;
|
|
94
|
-
--ty-brand-chroma: 0.
|
|
100
|
+
--ty-brand-chroma: 0.2;
|
|
95
101
|
|
|
96
102
|
/* Secondary rotates from brand by an exposed offset. Default +60°
|
|
97
103
|
* (sibling accent). Try 30° for a close sibling, 120° for triadic,
|
|
@@ -180,6 +186,33 @@
|
|
|
180
186
|
--ty-warning-l-factor: 1.15;
|
|
181
187
|
--ty-danger-l-factor: 1;
|
|
182
188
|
--ty-neutral-l-factor: 1;
|
|
189
|
+
|
|
190
|
+
/* ----------------------------------------------------------------
|
|
191
|
+
* Tier 6 — SOLID FILLS
|
|
192
|
+
* Solid buttons are their OWN system, not the emphasis ramp. Each
|
|
193
|
+
* flavor's fill defaults to --ty-color-{flavor}; the knobs below
|
|
194
|
+
* derive its hover / active / tone+ / tone- and per-theme adjust.
|
|
195
|
+
* Math lives in SECTION 2 (search "Tier 6 — SOLID"); these are the
|
|
196
|
+
* dials.
|
|
197
|
+
*
|
|
198
|
+
* Axis A — interaction & tone, OKLCH L offsets on the fill.
|
|
199
|
+
* Axis B — per-theme adjust applied to the base fill (dim/desaturate).
|
|
200
|
+
*
|
|
201
|
+
* NOTE: like Tier 5, the emphasis curve flips for dark, so these L
|
|
202
|
+
* offsets are sign-flipped in `html.dark` below (darken in light =
|
|
203
|
+
* lighten in dark). Keep the two blocks in sync.
|
|
204
|
+
* --------------------------------------------------------------*/
|
|
205
|
+
|
|
206
|
+
/* Axis A — interaction (light: darken on press, so offsets are negative) */
|
|
207
|
+
--ty-solid-hover-l: -0.04; /* :hover */
|
|
208
|
+
--ty-solid-active-l: -0.08; /* :active */
|
|
209
|
+
--ty-solid-strong-l: -0.06; /* tone+ */
|
|
210
|
+
--ty-solid-soft-l: 0.1; /* tone- */
|
|
211
|
+
|
|
212
|
+
/* Axis B — per-theme adjust (light reads fine → identity) */
|
|
213
|
+
--ty-solid-l: 0; /* lightness offset — negative dims */
|
|
214
|
+
--ty-solid-c: 1; /* chroma multiplier — <1 desaturates */
|
|
215
|
+
--ty-solid-h: 0; /* hue offset (deg) */
|
|
183
216
|
}
|
|
184
217
|
|
|
185
218
|
/* Dark mode overrides for the L-curve and saturation curve. Tier 1 + 2
|
|
@@ -188,8 +221,8 @@ html.dark,
|
|
|
188
221
|
html[data-theme="dark"] {
|
|
189
222
|
/* Tier 3 dark — inverted curve. Higher L = lighter text = more
|
|
190
223
|
* emphasis on a dark background. */
|
|
191
|
-
--ty-l-strong: 0.
|
|
192
|
-
--ty-l-bold: 0.
|
|
224
|
+
--ty-l-strong: 0.72;
|
|
225
|
+
--ty-l-bold: 0.66;
|
|
193
226
|
--ty-l-base: 0.62;
|
|
194
227
|
--ty-l-soft: 0.46;
|
|
195
228
|
--ty-l-faint: 0.3;
|
|
@@ -209,6 +242,18 @@ html[data-theme="dark"] {
|
|
|
209
242
|
--ty-c-bg-base-mult: 0.38;
|
|
210
243
|
--ty-c-bg-bold-mult: 0.54;
|
|
211
244
|
--ty-c-bg-soft-mult: 0.23;
|
|
245
|
+
|
|
246
|
+
/* Tier 6 dark — interaction offsets flip sign (press LIGHTENS on dark),
|
|
247
|
+
* and the per-theme adjust dims + desaturates the fills against the
|
|
248
|
+
* dark canvas. (Computed solid tokens live in SECTION 2 DARK.) */
|
|
249
|
+
--ty-solid-hover-l: 0.04; /* :hover */
|
|
250
|
+
--ty-solid-active-l: 0.08; /* :active */
|
|
251
|
+
--ty-solid-strong-l: 0.06; /* tone+ */
|
|
252
|
+
--ty-solid-soft-l: -0.1; /* tone- */
|
|
253
|
+
|
|
254
|
+
--ty-solid-l: -0.25; /* dim against dark canvas */
|
|
255
|
+
--ty-solid-c: 0.65; /* desaturate against dark canvas */
|
|
256
|
+
--ty-solid-h: 0; /* hue offset */
|
|
212
257
|
}
|
|
213
258
|
|
|
214
259
|
/* =====================================================================
|
|
@@ -529,48 +574,137 @@ html[data-theme="dark"] {
|
|
|
529
574
|
var(--ty-color-primary) 5%,
|
|
530
575
|
transparent
|
|
531
576
|
);
|
|
577
|
+
}
|
|
532
578
|
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
579
|
+
/* ----------------------------------------------------------------
|
|
580
|
+
* Tier 6 — SOLID (implementation)
|
|
581
|
+
* Solid is its OWN system, NOT the text/emphasis ramp. The dials
|
|
582
|
+
* (--ty-solid-hover-l / -active-l / -strong-l / -soft-l and
|
|
583
|
+
* --ty-solid-l / -c / -h) live in SECTION 1, Tier 6. Below is the
|
|
584
|
+
* derivation only: base fill bakes in the per-theme adjust (Axis B);
|
|
585
|
+
* hover/active/strong/soft offset the base by Axis A. Override any
|
|
586
|
+
* single --ty-solid-{flavor}-{state} to recolor just that segment.
|
|
587
|
+
*
|
|
588
|
+
* Declared at `html:root` (specificity 0,1,1) — NOT plain `:root` (0,1,0) —
|
|
589
|
+
* on purpose: it must out-rank tyrell.css's hardcoded dark solids at
|
|
590
|
+
* `html.dark` (0,1,1). It wins light by specificity over base's `html{}`,
|
|
591
|
+
* and wins dark by source order over base's `html.dark` (brand loads after).
|
|
592
|
+
* That's what lets dark solids re-tint with --ty-brand-hue. Declared ONCE —
|
|
593
|
+
* the oklch(from var(--ty-color-*)) formulas resolve per-mode automatically,
|
|
594
|
+
* so no dark duplicate is needed.
|
|
595
|
+
* --------------------------------------------------------------*/
|
|
596
|
+
html:root {
|
|
597
|
+
/* base fill per flavor (= flavor color, theme-adjusted by Axis B) */
|
|
598
|
+
--ty-solid-primary: oklch(
|
|
599
|
+
from var(--ty-color-primary) calc(l + var(--ty-solid-l))
|
|
600
|
+
calc(c * var(--ty-solid-c)) calc(h + var(--ty-solid-h))
|
|
601
|
+
);
|
|
602
|
+
--ty-solid-secondary: oklch(
|
|
603
|
+
from var(--ty-color-secondary) calc(l + var(--ty-solid-l))
|
|
604
|
+
calc(c * var(--ty-solid-c)) calc(h + var(--ty-solid-h))
|
|
605
|
+
);
|
|
606
|
+
--ty-solid-success: oklch(
|
|
607
|
+
from var(--ty-color-success) calc(l + var(--ty-solid-l))
|
|
608
|
+
calc(c * var(--ty-solid-c)) calc(h + var(--ty-solid-h))
|
|
609
|
+
);
|
|
610
|
+
--ty-solid-danger: oklch(
|
|
611
|
+
from var(--ty-color-danger) calc(l + var(--ty-solid-l))
|
|
612
|
+
calc(c * var(--ty-solid-c)) calc(h + var(--ty-solid-h))
|
|
613
|
+
);
|
|
614
|
+
--ty-solid-warning: oklch(
|
|
615
|
+
from var(--ty-color-warning) calc(l + var(--ty-solid-l))
|
|
616
|
+
calc(c * var(--ty-solid-c)) calc(h + var(--ty-solid-h))
|
|
617
|
+
);
|
|
618
|
+
/* neutral is a deliberate dark grey fill, not the neutral text color */
|
|
619
|
+
--ty-solid-neutral: oklch(
|
|
620
|
+
0.4 calc(var(--ty-neutral-chroma) * var(--ty-c-strong-mult))
|
|
621
|
+
var(--ty-neutral-hue)
|
|
622
|
+
);
|
|
540
623
|
|
|
541
|
-
--ty-solid-
|
|
542
|
-
--ty-solid-secondary-strong: var(--ty-color-secondary-bold);
|
|
543
|
-
--ty-solid-secondary-soft: var(--ty-color-secondary-soft);
|
|
624
|
+
--ty-solid-primary-fg: white;
|
|
544
625
|
--ty-solid-secondary-fg: white;
|
|
545
|
-
|
|
546
|
-
--ty-solid-success: var(--ty-color-success);
|
|
547
|
-
--ty-solid-success-strong: var(--ty-color-success-bold);
|
|
548
|
-
--ty-solid-success-soft: var(--ty-color-success-soft);
|
|
549
626
|
--ty-solid-success-fg: white;
|
|
550
|
-
|
|
551
|
-
--ty-solid-danger: var(--ty-color-danger);
|
|
552
|
-
--ty-solid-danger-strong: var(--ty-color-danger-bold);
|
|
553
|
-
--ty-solid-danger-soft: var(--ty-color-danger-soft);
|
|
554
627
|
--ty-solid-danger-fg: white;
|
|
555
|
-
|
|
556
|
-
--ty-solid-warning: var(--ty-color-warning);
|
|
557
|
-
--ty-solid-warning-strong: var(--ty-color-warning-bold);
|
|
558
|
-
--ty-solid-warning-soft: var(--ty-color-warning-soft);
|
|
559
628
|
--ty-solid-warning-fg: white;
|
|
629
|
+
--ty-solid-neutral-fg: white;
|
|
560
630
|
|
|
561
|
-
/*
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
0.6 calc(var(--ty-neutral-chroma) * var(--ty-c-strong-mult))
|
|
565
|
-
var(--ty-neutral-hue)
|
|
631
|
+
/* derived states — axis 2 offsets on each base fill */
|
|
632
|
+
--ty-solid-primary-hover: oklch(
|
|
633
|
+
from var(--ty-solid-primary) calc(l + var(--ty-solid-hover-l)) c h
|
|
566
634
|
);
|
|
567
|
-
--ty-solid-
|
|
568
|
-
|
|
569
|
-
|
|
635
|
+
--ty-solid-primary-active: oklch(
|
|
636
|
+
from var(--ty-solid-primary) calc(l + var(--ty-solid-active-l)) c h
|
|
637
|
+
);
|
|
638
|
+
--ty-solid-primary-strong: oklch(
|
|
639
|
+
from var(--ty-solid-primary) calc(l + var(--ty-solid-strong-l)) c h
|
|
640
|
+
);
|
|
641
|
+
--ty-solid-primary-soft: oklch(
|
|
642
|
+
from var(--ty-solid-primary) calc(l + var(--ty-solid-soft-l)) c h
|
|
643
|
+
);
|
|
644
|
+
|
|
645
|
+
--ty-solid-secondary-hover: oklch(
|
|
646
|
+
from var(--ty-solid-secondary) calc(l + var(--ty-solid-hover-l)) c h
|
|
647
|
+
);
|
|
648
|
+
--ty-solid-secondary-active: oklch(
|
|
649
|
+
from var(--ty-solid-secondary) calc(l + var(--ty-solid-active-l)) c h
|
|
650
|
+
);
|
|
651
|
+
--ty-solid-secondary-strong: oklch(
|
|
652
|
+
from var(--ty-solid-secondary) calc(l + var(--ty-solid-strong-l)) c h
|
|
653
|
+
);
|
|
654
|
+
--ty-solid-secondary-soft: oklch(
|
|
655
|
+
from var(--ty-solid-secondary) calc(l + var(--ty-solid-soft-l)) c h
|
|
656
|
+
);
|
|
657
|
+
|
|
658
|
+
--ty-solid-success-hover: oklch(
|
|
659
|
+
from var(--ty-solid-success) calc(l + var(--ty-solid-hover-l)) c h
|
|
660
|
+
);
|
|
661
|
+
--ty-solid-success-active: oklch(
|
|
662
|
+
from var(--ty-solid-success) calc(l + var(--ty-solid-active-l)) c h
|
|
663
|
+
);
|
|
664
|
+
--ty-solid-success-strong: oklch(
|
|
665
|
+
from var(--ty-solid-success) calc(l + var(--ty-solid-strong-l)) c h
|
|
666
|
+
);
|
|
667
|
+
--ty-solid-success-soft: oklch(
|
|
668
|
+
from var(--ty-solid-success) calc(l + var(--ty-solid-soft-l)) c h
|
|
669
|
+
);
|
|
670
|
+
|
|
671
|
+
--ty-solid-danger-hover: oklch(
|
|
672
|
+
from var(--ty-solid-danger) calc(l + var(--ty-solid-hover-l)) c h
|
|
673
|
+
);
|
|
674
|
+
--ty-solid-danger-active: oklch(
|
|
675
|
+
from var(--ty-solid-danger) calc(l + var(--ty-solid-active-l)) c h
|
|
676
|
+
);
|
|
677
|
+
--ty-solid-danger-strong: oklch(
|
|
678
|
+
from var(--ty-solid-danger) calc(l + var(--ty-solid-strong-l)) c h
|
|
679
|
+
);
|
|
680
|
+
--ty-solid-danger-soft: oklch(
|
|
681
|
+
from var(--ty-solid-danger) calc(l + var(--ty-solid-soft-l)) c h
|
|
682
|
+
);
|
|
683
|
+
|
|
684
|
+
--ty-solid-warning-hover: oklch(
|
|
685
|
+
from var(--ty-solid-warning) calc(l + var(--ty-solid-hover-l)) c h
|
|
686
|
+
);
|
|
687
|
+
--ty-solid-warning-active: oklch(
|
|
688
|
+
from var(--ty-solid-warning) calc(l + var(--ty-solid-active-l)) c h
|
|
689
|
+
);
|
|
690
|
+
--ty-solid-warning-strong: oklch(
|
|
691
|
+
from var(--ty-solid-warning) calc(l + var(--ty-solid-strong-l)) c h
|
|
692
|
+
);
|
|
693
|
+
--ty-solid-warning-soft: oklch(
|
|
694
|
+
from var(--ty-solid-warning) calc(l + var(--ty-solid-soft-l)) c h
|
|
695
|
+
);
|
|
696
|
+
|
|
697
|
+
--ty-solid-neutral-hover: oklch(
|
|
698
|
+
from var(--ty-solid-neutral) calc(l + var(--ty-solid-hover-l)) c h
|
|
699
|
+
);
|
|
700
|
+
--ty-solid-neutral-active: oklch(
|
|
701
|
+
from var(--ty-solid-neutral) calc(l + var(--ty-solid-active-l)) c h
|
|
570
702
|
);
|
|
571
703
|
--ty-solid-neutral-strong: oklch(
|
|
572
|
-
|
|
573
|
-
|
|
704
|
+
from var(--ty-solid-neutral) calc(l + var(--ty-solid-strong-l)) c h
|
|
705
|
+
);
|
|
706
|
+
--ty-solid-neutral-soft: oklch(
|
|
707
|
+
from var(--ty-solid-neutral) calc(l + var(--ty-solid-soft-l)) c h
|
|
574
708
|
);
|
|
575
709
|
}
|
|
576
710
|
|
|
@@ -856,7 +990,7 @@ html[data-theme="dark"] {
|
|
|
856
990
|
--ty-input-bg: var(--ty-surface-input);
|
|
857
991
|
--ty-input-color: var(--ty-color-neutral-strong);
|
|
858
992
|
--ty-input-border: var(--ty-color-neutral-faint);
|
|
859
|
-
--ty-input-border-hover: var(--ty-color-neutral-
|
|
993
|
+
--ty-input-border-hover: var(--ty-color-neutral-soft);
|
|
860
994
|
--ty-input-border-focus: var(--ty-color-primary);
|
|
861
995
|
--ty-input-placeholder: var(--ty-color-neutral-soft);
|
|
862
996
|
--ty-input-disabled-bg: var(--ty-color-neutral-faint);
|
|
@@ -868,46 +1002,10 @@ html[data-theme="dark"] {
|
|
|
868
1002
|
transparent
|
|
869
1003
|
);
|
|
870
1004
|
|
|
871
|
-
/*
|
|
872
|
-
|
|
873
|
-
--ty-solid-primary-strong: var(--ty-color-primary-bold);
|
|
874
|
-
--ty-solid-primary-soft: var(--ty-color-primary-soft);
|
|
875
|
-
--ty-solid-primary-fg: white;
|
|
876
|
-
|
|
877
|
-
--ty-solid-secondary: var(--ty-color-secondary);
|
|
878
|
-
--ty-solid-secondary-strong: var(--ty-color-secondary-bold);
|
|
879
|
-
--ty-solid-secondary-soft: var(--ty-color-secondary-soft);
|
|
880
|
-
--ty-solid-secondary-fg: white;
|
|
881
|
-
|
|
882
|
-
--ty-solid-success: var(--ty-color-success);
|
|
883
|
-
--ty-solid-success-strong: var(--ty-color-success-bold);
|
|
884
|
-
--ty-solid-success-soft: var(--ty-color-success-soft);
|
|
885
|
-
--ty-solid-success-fg: white;
|
|
886
|
-
|
|
887
|
-
--ty-solid-danger: var(--ty-color-danger);
|
|
888
|
-
--ty-solid-danger-strong: var(--ty-color-danger-bold);
|
|
889
|
-
--ty-solid-danger-soft: var(--ty-color-danger-soft);
|
|
890
|
-
--ty-solid-danger-fg: white;
|
|
891
|
-
|
|
892
|
-
--ty-solid-warning: var(--ty-color-warning);
|
|
893
|
-
--ty-solid-warning-strong: var(--ty-color-warning-bold);
|
|
894
|
-
--ty-solid-warning-soft: var(--ty-color-warning-soft);
|
|
895
|
-
--ty-solid-warning-fg: white;
|
|
896
|
-
|
|
897
|
-
/* Solid neutral — in dark mode, "dark grey" lives at the other end
|
|
898
|
-
* of the ramp. Both modes get a shade darker than the page surface
|
|
899
|
-
* for a punchy default action. */
|
|
900
|
-
--ty-solid-neutral-soft: oklch(
|
|
901
|
-
0.2 calc(var(--ty-neutral-chroma) * var(--ty-c-strong-mult))
|
|
902
|
-
var(--ty-neutral-hue)
|
|
903
|
-
);
|
|
1005
|
+
/* Tier 6 dark — solid dials live in SECTION 1's html.dark block.
|
|
1006
|
+
* neutral is hand-pinned (it ignores Axis B); dim it per theme here. */
|
|
904
1007
|
--ty-solid-neutral: oklch(
|
|
905
1008
|
0.3 calc(var(--ty-neutral-chroma) * var(--ty-c-strong-mult))
|
|
906
1009
|
var(--ty-neutral-hue)
|
|
907
1010
|
);
|
|
908
|
-
--ty-solid-neutral-strong: oklch(
|
|
909
|
-
0.4 calc(var(--ty-neutral-chroma) * var(--ty-c-strong-mult))
|
|
910
|
-
var(--ty-neutral-hue)
|
|
911
|
-
);
|
|
912
|
-
--ty-solid-neutral-fg: white;
|
|
913
1011
|
}
|
package/dist/tyrell.css
CHANGED
|
@@ -352,50 +352,58 @@ COMPONENT TOKENS
|
|
|
352
352
|
--ty-input-warning-border: var(--ty-color-warning);
|
|
353
353
|
|
|
354
354
|
/* =================================================================
|
|
355
|
-
SOLID BUTTON FILLS —
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
--ty-solid-{flavor}-soft softer fill (for solid- tone)
|
|
360
|
-
--ty-solid-{flavor}-fg paired text color (default white)
|
|
361
|
-
Strong/soft default to var(--ty-color-{flavor}-strong/-soft) so they
|
|
362
|
-
inherit from the existing color hierarchy. Override per flavor if needed.
|
|
355
|
+
SOLID BUTTON FILLS — plain default values (the contract). The smart
|
|
356
|
+
per-state derivation (hover/active/tone via OKLCH) lives in the theme
|
|
357
|
+
engines (tyrell-brand.css / tyrell-simple.css), not here. hover/active
|
|
358
|
+
alias to -strong as a simple default; a theme overrides them.
|
|
363
359
|
================================================================= */
|
|
364
360
|
|
|
365
361
|
/* Primary */
|
|
366
362
|
--ty-solid-primary: #4076b9;
|
|
367
363
|
--ty-solid-primary-strong: var(--ty-color-primary-bold);
|
|
368
364
|
--ty-solid-primary-soft: #7ea7d9;
|
|
365
|
+
--ty-solid-primary-hover: var(--ty-solid-primary-strong);
|
|
366
|
+
--ty-solid-primary-active: var(--ty-solid-primary-strong);
|
|
369
367
|
--ty-solid-primary-fg: white;
|
|
370
368
|
|
|
371
369
|
/* Secondary */
|
|
372
370
|
--ty-solid-secondary: #7e67b4;
|
|
373
371
|
--ty-solid-secondary-strong: #7d58d1;
|
|
374
372
|
--ty-solid-secondary-soft: #9f8ec5;
|
|
373
|
+
--ty-solid-secondary-hover: var(--ty-solid-secondary-strong);
|
|
374
|
+
--ty-solid-secondary-active: var(--ty-solid-secondary-strong);
|
|
375
375
|
--ty-solid-secondary-fg: white;
|
|
376
376
|
|
|
377
377
|
/* Success */
|
|
378
378
|
--ty-solid-success: #3bb68d;
|
|
379
379
|
--ty-solid-success-strong: #27956e;
|
|
380
380
|
--ty-solid-success-soft: #69b99e;
|
|
381
|
+
--ty-solid-success-hover: var(--ty-solid-success-strong);
|
|
382
|
+
--ty-solid-success-active: var(--ty-solid-success-strong);
|
|
381
383
|
--ty-solid-success-fg: white;
|
|
382
384
|
|
|
383
385
|
/* Danger */
|
|
384
386
|
--ty-solid-danger: #df5b5b;
|
|
385
387
|
--ty-solid-danger-strong: #cc3e3e;
|
|
386
388
|
--ty-solid-danger-soft: #d57a7a;
|
|
389
|
+
--ty-solid-danger-hover: var(--ty-solid-danger-strong);
|
|
390
|
+
--ty-solid-danger-active: var(--ty-solid-danger-strong);
|
|
387
391
|
--ty-solid-danger-fg: white;
|
|
388
392
|
|
|
389
393
|
/* Warning */
|
|
390
394
|
--ty-solid-warning: #e1a644;
|
|
391
395
|
--ty-solid-warning-strong: #f59e0b;
|
|
392
396
|
--ty-solid-warning-soft: #fbc56d;
|
|
397
|
+
--ty-solid-warning-hover: var(--ty-solid-warning-strong);
|
|
398
|
+
--ty-solid-warning-active: var(--ty-solid-warning-strong);
|
|
393
399
|
--ty-solid-warning-fg: white;
|
|
394
400
|
|
|
395
401
|
/* Neutral */
|
|
396
402
|
--ty-solid-neutral: #414141;
|
|
397
403
|
--ty-solid-neutral-strong: #000000;
|
|
398
404
|
--ty-solid-neutral-soft: #6e6e6e;
|
|
405
|
+
--ty-solid-neutral-hover: var(--ty-solid-neutral-strong);
|
|
406
|
+
--ty-solid-neutral-active: var(--ty-solid-neutral-strong);
|
|
399
407
|
--ty-solid-neutral-fg: white;
|
|
400
408
|
|
|
401
409
|
/* =================================================================
|
|
@@ -695,42 +703,48 @@ Emphasis logic inverts: lighter = more emphasis
|
|
|
695
703
|
0 20px 25px -5px rgba(0, 0, 0, 0.3), 0 8px 10px -6px rgba(0, 0, 0, 0.3);
|
|
696
704
|
--ty-shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
|
|
697
705
|
|
|
698
|
-
/* Solid button fills
|
|
699
|
-
|
|
700
|
-
inverts), so solid+ buttons will have a light bg with white text — low
|
|
701
|
-
contrast for some flavors. Override per flavor via --ty-solid-{flavor}-fg
|
|
702
|
-
if a specific brand needs darker text. */
|
|
706
|
+
/* Solid button fills — plain dark defaults. hover/active alias -strong;
|
|
707
|
+
theme engines override with smart per-state derivation. */
|
|
703
708
|
--ty-solid-primary: #3e536c;
|
|
704
709
|
--ty-solid-primary-strong: #426084;
|
|
705
710
|
--ty-solid-primary-soft: #343f4c;
|
|
711
|
+
--ty-solid-primary-hover: var(--ty-solid-primary-strong);
|
|
712
|
+
--ty-solid-primary-active: var(--ty-solid-primary-strong);
|
|
706
713
|
--ty-solid-primary-fg: white;
|
|
707
714
|
|
|
708
715
|
--ty-solid-secondary: #7e67b4;
|
|
709
716
|
--ty-solid-secondary-strong: #8269bc;
|
|
710
717
|
--ty-solid-secondary-soft: #52466a;
|
|
718
|
+
--ty-solid-secondary-hover: var(--ty-solid-secondary-strong);
|
|
719
|
+
--ty-solid-secondary-active: var(--ty-solid-secondary-strong);
|
|
711
720
|
--ty-solid-secondary-fg: white;
|
|
712
721
|
|
|
713
|
-
/* Success */
|
|
714
722
|
--ty-solid-success: #3bb68d;
|
|
715
723
|
--ty-solid-success-strong: #459679;
|
|
716
724
|
--ty-solid-success-soft: #285748;
|
|
725
|
+
--ty-solid-success-hover: var(--ty-solid-success-strong);
|
|
726
|
+
--ty-solid-success-active: var(--ty-solid-success-strong);
|
|
717
727
|
--ty-solid-success-fg: white;
|
|
718
728
|
|
|
719
|
-
/* Danger */
|
|
720
729
|
--ty-solid-danger: #df5b5b;
|
|
721
730
|
--ty-solid-danger-strong: #cc3e3e;
|
|
722
731
|
--ty-solid-danger-soft: #875656;
|
|
732
|
+
--ty-solid-danger-hover: var(--ty-solid-danger-strong);
|
|
733
|
+
--ty-solid-danger-active: var(--ty-solid-danger-strong);
|
|
723
734
|
--ty-solid-danger-fg: white;
|
|
724
735
|
|
|
725
|
-
/* Warning */
|
|
726
736
|
--ty-solid-warning: #e1a644;
|
|
727
737
|
--ty-solid-warning-strong: #f59e0b;
|
|
728
738
|
--ty-solid-warning-soft: #8b6334;
|
|
739
|
+
--ty-solid-warning-hover: var(--ty-solid-warning-strong);
|
|
740
|
+
--ty-solid-warning-active: var(--ty-solid-warning-strong);
|
|
729
741
|
--ty-solid-warning-fg: white;
|
|
730
742
|
|
|
731
743
|
--ty-solid-neutral: #414141;
|
|
732
744
|
--ty-solid-neutral-strong: #4c4c4c;
|
|
733
745
|
--ty-solid-neutral-soft: #2a2a2a;
|
|
746
|
+
--ty-solid-neutral-hover: var(--ty-solid-neutral-strong);
|
|
747
|
+
--ty-solid-neutral-active: var(--ty-solid-neutral-strong);
|
|
734
748
|
--ty-solid-neutral-fg: white;
|
|
735
749
|
|
|
736
750
|
/* Input component tokens - dark mode */
|