@trading-game/design-intelligence-layer 0.12.4 → 0.13.1
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/README.md +41 -15
- package/dist/index.cjs +110 -58
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +42 -11
- package/dist/index.d.ts +42 -11
- package/dist/index.js +110 -59
- package/dist/index.js.map +1 -1
- package/guides/design-system-guide/trading-game-ds-guide.md +45 -28
- package/guides/rules/design-system-consuming-project.mdc +23 -8
- package/package.json +1 -1
- package/src/styles.css +39 -11
|
@@ -131,29 +131,43 @@ import { Button, Card, Badge } from "@trading-game/design-intelligence-layer"
|
|
|
131
131
|
| CSS Variable | Tailwind Class | Usage |
|
|
132
132
|
| --------------------- | ------------------- | ------------------------- |
|
|
133
133
|
| `--primary` | `bg-primary` / `text-primary` | Primary CTA, brand color, interactive elements |
|
|
134
|
+
| `--on-primary` | `text-on-primary` | Text/icon color paired with `bg-primary` (always white) |
|
|
134
135
|
| `--primary-hover` | `bg-primary-hover` | Hover & pressed states on primary elements |
|
|
136
|
+
| `--primary-inverse` | `bg-primary-inverse` | Inverted primary surface — white bg for use on dark/coloured areas |
|
|
137
|
+
| `--on-primary-inverse`| `text-on-primary-inverse` | Text/icon color paired with `bg-primary-inverse` (always blue) |
|
|
135
138
|
|
|
136
139
|
### 2.3 — Semantic (Trading Status)
|
|
137
140
|
|
|
141
|
+
> **Naming convention:** every surface token has a paired `--on-<name>` foreground (text/icon) token. Use the pair together (`bg-semantic-X` + `text-on-semantic-X`) for guaranteed legibility on the saturated surface.
|
|
142
|
+
|
|
138
143
|
| CSS Variable | Tailwind Class | Usage |
|
|
139
144
|
| -------------------------- | ------------------------------------------- | --------------------------------------------- |
|
|
140
|
-
| `--semantic-win` | `
|
|
141
|
-
| `--semantic-
|
|
142
|
-
| `--semantic-
|
|
143
|
-
| `--semantic-
|
|
144
|
-
| `--semantic-
|
|
145
|
-
| `--semantic-
|
|
145
|
+
| `--semantic-win` | `bg-semantic-win` / `text-semantic-win` | Win / Profit / Positive outcomes |
|
|
146
|
+
| `--on-semantic-win` | `text-on-semantic-win` | Text/icon on `bg-semantic-win` surfaces (white) |
|
|
147
|
+
| `--semantic-loss` | `bg-semantic-loss` / `text-semantic-loss` | Loss / Negative outcomes |
|
|
148
|
+
| `--on-semantic-loss` | `text-on-semantic-loss` | Text/icon on `bg-semantic-loss` surfaces (white) |
|
|
149
|
+
| `--semantic-warning` | `bg-semantic-warning` / `text-semantic-warning` | Warning / Caution / Non-destructive alerts |
|
|
150
|
+
| `--on-semantic-warning` | `text-on-semantic-warning` | Text/icon on `bg-semantic-warning` surfaces (white) |
|
|
151
|
+
| `--semantic-info` | `bg-semantic-info` / `text-semantic-info` | Informational alerts |
|
|
152
|
+
| `--semantic-boost` | `bg-semantic-boost` | Boost / bonus badge background (`#F9840F` amber-orange) |
|
|
153
|
+
| `--on-semantic-boost` | `text-on-semantic-boost` | Boost / bonus badge foreground (`#713813` dark amber) |
|
|
146
154
|
|
|
147
155
|
> All semantic tokens support opacity variants (e.g. `bg-semantic-warning/10` for tinted backgrounds). For structured alpha surfaces, use the primitive alpha scales — see Section 2.10.
|
|
148
156
|
|
|
149
157
|
### 2.4 — Text & Icon Colors
|
|
150
158
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
|
154
|
-
|
|
|
155
|
-
| `--
|
|
156
|
-
| `--on-
|
|
159
|
+
The system follows a Material-style `<surface>` / `on-<surface>` pair convention: no prefix = surface/background, `on-` prefix = the foreground (text/icon) color paired with that surface.
|
|
160
|
+
|
|
161
|
+
| CSS Variable | Tailwind Class | Usage |
|
|
162
|
+
| ------------------------- | ----------------------------- | ------------------------- |
|
|
163
|
+
| `--prominent` | `bg-prominent` | Light surface (page chrome, cards) |
|
|
164
|
+
| `--on-prominent` | `text-on-prominent` | Text/icon on `bg-prominent` (black) |
|
|
165
|
+
| `--prominent-inverse` | `bg-prominent-inverse` | Dark surface for use on light pages (e.g. toasts) |
|
|
166
|
+
| `--on-prominent-inverse` | `text-on-prominent-inverse` | Text/icon on `bg-prominent-inverse` (white) |
|
|
167
|
+
| `--on-subtle` | `text-on-subtle` | Secondary text (descriptions, labels) — paired with `bg-subtle` |
|
|
168
|
+
| `--on-disabled` | `text-on-disabled` | Disabled text (inactive controls, placeholders) |
|
|
169
|
+
|
|
170
|
+
> **Deprecated aliases:** `--on-prominent-static-inverse` and `--surface-inverse-static` remain defined in CSS for backwards-compat with external consumers using raw `var()` references, but internal components no longer use them — prefer the explicit `on-<surface>` / `<surface>-inverse` pairs above.
|
|
157
171
|
|
|
158
172
|
### 2.5 — Borders & Inputs
|
|
159
173
|
|
|
@@ -275,7 +289,7 @@ import { Button, Card, Badge } from "@trading-game/design-intelligence-layer"
|
|
|
275
289
|
| Show WIN / profit / positive | `text-semantic-win` | Primary blue for profit |
|
|
276
290
|
| Show LOSS / negative | `text-semantic-loss` | Any non-token red |
|
|
277
291
|
| Show WARNING / caution | `text-semantic-warning` | Raw orange hex or primary tint |
|
|
278
|
-
| Show a
|
|
292
|
+
| Show a boost / bonus badge | `<Badge variant="fill-boost">` (uses `bg-semantic-boost/16` + `text-on-semantic-boost`) | Hardcoded amber hex values |
|
|
279
293
|
| Color a tab container background | `bg-tabs` | `bg-subtle` for tabs |
|
|
280
294
|
| Color an active/selected tab | `bg-tabs-active` | `bg-prominent` for active tab |
|
|
281
295
|
| Color a page background | `bg-prominent` | `bg-white` directly |
|
|
@@ -293,7 +307,9 @@ import { Button, Card, Badge } from "@trading-game/design-intelligence-layer"
|
|
|
293
307
|
| Pick a heading font | `font-display` | System fonts, raw font-family names |
|
|
294
308
|
| Pick a body font | `font-body` | Raw font-family names |
|
|
295
309
|
| Style button text | `font-display font-bold`, sentence case | `uppercase` on buttons |
|
|
296
|
-
| Write
|
|
310
|
+
| Write text on a primary blue surface | `text-on-primary` | `text-white` or `text-on-prominent-static-inverse` |
|
|
311
|
+
| Write text on a dark inverse surface | `text-on-prominent-inverse` | `text-white` or raw white hex |
|
|
312
|
+
| Write text on a semantic surface | `text-on-semantic-win` / `-loss` / `-warning` / `-boost` | `text-white` (the surface may not always be dark) |
|
|
297
313
|
|
|
298
314
|
---
|
|
299
315
|
|
|
@@ -393,13 +409,13 @@ The design system uses a custom radius scale (base = 10px). Use these named toke
|
|
|
393
409
|
|
|
394
410
|
### 6.1 — Variants
|
|
395
411
|
|
|
396
|
-
| Variant | Background
|
|
397
|
-
| -------------------- |
|
|
398
|
-
| `primary` | `bg-primary`
|
|
399
|
-
| `primary-inverse` | `bg-
|
|
400
|
-
| `secondary` | transparent
|
|
401
|
-
| `secondary-inverse` | transparent
|
|
402
|
-
| `tertiary` | transparent
|
|
412
|
+
| Variant | Background | Text Color | Border | Hover | Use on |
|
|
413
|
+
| -------------------- | -------------------- | --------------------------- | ---------------------------------------- | --------------------------- | ---------------------- |
|
|
414
|
+
| `primary` | `bg-primary` | `text-on-primary` | none | `bg-primary-hover` | Light surfaces |
|
|
415
|
+
| `primary-inverse` | `bg-primary-inverse` | `text-on-primary-inverse` | none | `bg-primary-inverse/80` | Dark/coloured surfaces |
|
|
416
|
+
| `secondary` | transparent | `text-on-prominent` | `border-[1.5px] border-border-prominent` | `bg-secondary-hover` | Light surfaces |
|
|
417
|
+
| `secondary-inverse` | transparent | `text-on-prominent-inverse` | `border-[1.5px] border-primary-inverse` | `bg-primary-inverse/10` | Dark/coloured surfaces |
|
|
418
|
+
| `tertiary` | transparent | `text-primary` | none | `bg-primary/[0.08]` | Light surfaces |
|
|
403
419
|
|
|
404
420
|
### 6.2 — Sizes
|
|
405
421
|
|
|
@@ -551,7 +567,7 @@ import { Dialog, DialogTrigger, DialogContent, DialogHeader, DialogTitle, Dialog
|
|
|
551
567
|
| Sidebar | [complex] | SidebarProvider, SidebarTrigger, SidebarInset, SidebarHeader, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupLabel, SidebarGroupContent, SidebarMenu, SidebarMenuItem, SidebarMenuButton, SidebarRail, useSidebar |
|
|
552
568
|
| Skeleton | [simple] | — |
|
|
553
569
|
| Slider | [simple] | — |
|
|
554
|
-
|
|
|
570
|
+
| Toast | [simple] | `Toaster`, `toast` — import both from `@trading-game/design-intelligence-layer` (the toaster wraps `sonner` internally; `toast` is re-exported so consumers don't need to import the underlying library) |
|
|
555
571
|
| Spinner | [simple] | — |
|
|
556
572
|
| Stepper | [simple] | — |
|
|
557
573
|
| Switch | [simple] | — |
|
|
@@ -559,7 +575,7 @@ import { Dialog, DialogTrigger, DialogContent, DialogHeader, DialogTitle, Dialog
|
|
|
559
575
|
| Tabs | [composed] | TabsList (`variant`: default/line, `size`: sm/md/lg), TabsTrigger (`iconPosition`: inline/top), TabsContent. Root accepts `orientation`: horizontal/vertical. |
|
|
560
576
|
| Textarea | [simple] | — |
|
|
561
577
|
| TicketCard | [composed] | — (`icon`, `label`, `value`, `currency`, `stubLabel`, `onStubClick`, `stubDisabled`, `compact`) |
|
|
562
|
-
|
|
|
578
|
+
| BoostTicketCard | [composed] | — (`icon`, `label`, `value`, `currency`, `stubLabel`, `onStubClick`, `stubDisabled`, `boostAmount`, `boostCurrency`, `compact`) — use when a boost badge must appear below the value |
|
|
563
579
|
| Toggle | [simple] | — |
|
|
564
580
|
| ToggleGroup | [composed] | ToggleGroupItem |
|
|
565
581
|
| Tooltip | [composed] | TooltipTrigger, TooltipContent, TooltipProvider |
|
|
@@ -576,7 +592,7 @@ These are styling behaviors you can't discover from TypeScript types alone:
|
|
|
576
592
|
| InputGroup | Wraps `Input` with inline addons (icons, buttons, text). **Sizes:** `sm` (h-8) / `md` (h-10, default) / `lg` (h-12) — pass `size` to `InputGroup`, it flows to `InputGroupInput` via context. **Padding:** when any `inline-start` or `inline-end` addon is present, input text gets equal `pl-2 pr-2` (8px) on both sides for visual symmetry. Without addons, Input's default `px-3`/`px-4` applies. |
|
|
577
593
|
| InputOTP | **Variants:** OTP 4 digits (single group, 4 slots), OTP 6 digits (single group, 6 slots), OTP 6 split (two groups of 3 with `InputOTPSeparator`), OTP 8 digits (single group, 8 slots), OTP 6 separated (each slot in its own `InputOTPGroup` for individually spaced boxes). Slot: `h-9 w-9`, `border-border-subtle`, `rounded-sm` on first/last. Focus: `border-primary` + `ring-primary/[0.08]`. |
|
|
578
594
|
| NavigationButton | Icon-only tertiary button for navigation. `text-on-prominent` (black icons), `hover:bg-secondary-hover`. **Sizes (8-point grid):** `lg` 48px / 24px icon, `md` 40px / 20px icon, `sm` 32px / 20px icon, `xs` 24px / 16px icon. States: focus `ring-ring/50`, active `opacity-60`, disabled `opacity-24`. Supports `asChild`. |
|
|
579
|
-
| Tooltip | Bubble: `bg-primary` + `text-on-
|
|
595
|
+
| Tooltip | Bubble: `bg-primary` + `text-on-primary` (not `bg-popover`). Always wrap in `<TooltipProvider>` |
|
|
580
596
|
| Sidebar | Menu buttons use `rounded-sm`. Selection: `bg-secondary-hover` + `text-primary` + `font-semibold` |
|
|
581
597
|
| Breadcrumb | Active page: `text-primary font-medium`. Links: `text-on-subtle` |
|
|
582
598
|
| Tabs | **Variants:** `default` (pill, `bg-tabs`) and `line` (underline, transparent bg). **Sizes:** `sm` (h-8, text-xs), `md` (h-10, text-sm, default), `lg` (h-12, text-base). **Icon position:** `inline` (default) or `top` (stacks icon above label). **Orientation:** `horizontal` (default) or `vertical` (line variant renders left-edge indicator). Hover: `bg-secondary-hover` (default) / `text-primary` (line). Selected: `bg-tabs-active` + `text-primary font-semibold`. Line variant underline: `bg-primary`. |
|
|
@@ -588,9 +604,9 @@ These are styling behaviors you can't discover from TypeScript types alone:
|
|
|
588
604
|
| Slider | Thumb: square `rounded-[4px]`, `bg-primary`. Track range: `bg-slider-range` |
|
|
589
605
|
| Dialog/Sheet | Footer buttons should use `size="md"`. Overlay: `bg-overlay` |
|
|
590
606
|
| Menubar | Hover: `bg-primary/[0.08]`. Open state: `bg-primary/10` |
|
|
591
|
-
| Badge | Variants: `default` (solid blue), `default-success`, `default-fail
|
|
592
|
-
| TicketCard | **Icon:** pass any `ReactNode` via `icon`. Icon container: `size-10` rounded-full, `border-2 border-primary`, `text-primary`. **Labels:** `label` (above value) and `stubLabel` (stub button) render in sentence case — do NOT apply `uppercase` or `tracking-widest`. Stub: `w-[100px]` `bg-primary` button, `text-on-
|
|
593
|
-
|
|
|
607
|
+
| Badge | Variants: `default` (solid blue), `default-success`, `default-fail`, `default-warning` (all use `bg-semantic-*` + matching `text-on-semantic-*` foreground); `fill` (blue tint), `fill-success`, `fill-fail`, `fill-warning`; `fill-boost` (amber-orange tint — `bg-semantic-boost/16` bg + `text-on-semantic-boost` foreground — use for boost/bonus labels, always pair with a `Rocket` icon); `outline`; `ghost`, `ghost-success`, `ghost-fail`. Base class no longer applies `tracking-wide` — letter spacing is default. |
|
|
608
|
+
| TicketCard | **Icon:** pass any `ReactNode` via `icon`. Icon container: `size-10` rounded-full, `border-2 border-primary`, `text-primary`. **Labels:** `label` (above value) and `stubLabel` (stub button) render in sentence case — do NOT apply `uppercase` or `tracking-widest`. Stub: `w-[100px]` `bg-primary` button, `text-on-primary`, shimmer sweep animation. Disabled stub: `opacity-50`, `cursor-not-allowed`. Perforation notches sit outside the card box — do NOT put `overflow-hidden` on the card wrapper. **`compact`** (default `false`): `true` = mobile layout — reduces left-content horizontal padding from `px-4 gap-4` to `px-2 gap-2`. **For boost use cases:** use `BoostTicketCard` instead — it renders a `<Badge variant="fill-boost">` inline below the value. |
|
|
609
|
+
| BoostTicketCard | Same visual shell as `TicketCard` (perforation notches, tear-line, shimmer stub). The card height is **variable** (grows with content via `py-4`) rather than fixed at `h-20`. The boost is displayed as an inline `<Badge variant="fill-boost" size="sm">` with a leading `Rocket` icon and a trailing `Info` icon: *"Boost: {boostAmount} {boostCurrency}"*. Tokens used: `bg-subtle`, `bg-primary`, `bg-primary-hover`, `text-on-primary`, `bg-semantic-boost/16`, `text-on-semantic-boost`. Supports `compact` prop for mobile layout (same padding reduction as `TicketCard`). |
|
|
594
610
|
| Toggle | Pressed: `bg-primary/10` + `border-primary` + `text-primary` |
|
|
595
611
|
| Calendar | Selected: `bg-secondary-hover` + `text-primary font-bold`. Today: primary dot below date |
|
|
596
612
|
|
|
@@ -674,7 +690,8 @@ A product app top header bar. Not a landing page component — used inside the t
|
|
|
674
690
|
| Using `bg-white` or `bg-black` | Use `bg-prominent` or `bg-overlay` |
|
|
675
691
|
| Using `border-border` | Use `border-border-subtle` or `border-border-prominent` |
|
|
676
692
|
| Using `bg-hover` | Use `bg-primary/[0.08]` or `bg-secondary-hover` |
|
|
677
|
-
| Using `text-primary-foreground` | Use `text-on-
|
|
693
|
+
| Using `text-primary-foreground` | Use `text-on-primary` (the paired foreground for `bg-primary`) |
|
|
694
|
+
| Using `text-on-prominent-static-inverse` for new code | Pick the paired `text-on-<surface>` for whatever surface sits behind: `text-on-primary` for `bg-primary`, `text-on-prominent-inverse` for dark inverse surfaces, `text-on-semantic-win` / `-loss` / `-warning` / `-boost` for semantic colored surfaces. The static-inverse token is kept as a deprecated alias only. |
|
|
678
695
|
| Using `text-on-decorative` | Use `text-on-subtle` |
|
|
679
696
|
| Using `font-mono` expecting Plus Jakarta Sans | Use `font-display` or `font-body` |
|
|
680
697
|
| Using `font-bold` for headings | Use `font-semibold` (600) for headings |
|
|
@@ -60,23 +60,38 @@ import { Button, Card, Badge } from "@trading-game/design-intelligence-layer"
|
|
|
60
60
|
✅ bg-overlay — modal/dialog backdrop (black 50%) — ONLY for overlays
|
|
61
61
|
✅ bg-primary — brand blue #2323FF — CTAs and primary actions
|
|
62
62
|
✅ bg-primary-hover — darker blue #0B0BD2 — primary button hover
|
|
63
|
+
✅ bg-primary-inverse — white surface for use on dark/coloured areas
|
|
64
|
+
✅ bg-prominent-inverse — dark surface for use on light pages (toasts, etc.)
|
|
63
65
|
✅ bg-secondary-hover — light grey #EEEEEE — outline/secondary button hover
|
|
64
66
|
✅ bg-semantic-win — green — profit/positive
|
|
65
67
|
✅ bg-semantic-loss — red — loss/negative
|
|
68
|
+
✅ bg-semantic-warning — orange — warning/caution
|
|
69
|
+
✅ bg-semantic-boost — amber-orange #F9840F — boost/bonus badge (tinted: bg-semantic-boost/16)
|
|
66
70
|
```
|
|
67
71
|
|
|
68
|
-
#### Text tokens
|
|
72
|
+
#### Text tokens — paired with a surface
|
|
73
|
+
|
|
74
|
+
> Convention: `bg-<surface>` always has a paired `text-on-<surface>` foreground. Use them together for guaranteed legibility.
|
|
75
|
+
|
|
69
76
|
```
|
|
70
|
-
✅ text-on-prominent
|
|
71
|
-
✅ text-on-prominent-
|
|
72
|
-
✅ text-on-
|
|
73
|
-
✅ text-on-
|
|
77
|
+
✅ text-on-prominent — paired with bg-prominent (black #000000) — default body text
|
|
78
|
+
✅ text-on-prominent-inverse — paired with bg-prominent-inverse (white) — toast text, etc.
|
|
79
|
+
✅ text-on-primary — paired with bg-primary (white) — primary button label, tooltip text
|
|
80
|
+
✅ text-on-primary-inverse — paired with bg-primary-inverse (blue) — primary-inverse button label
|
|
81
|
+
✅ text-on-semantic-win — paired with bg-semantic-win (white)
|
|
82
|
+
✅ text-on-semantic-loss — paired with bg-semantic-loss (white)
|
|
83
|
+
✅ text-on-semantic-warning — paired with bg-semantic-warning (white)
|
|
84
|
+
✅ text-on-semantic-boost — paired with bg-semantic-boost (dark amber #713813)
|
|
85
|
+
✅ text-on-subtle — secondary text (mid grey)
|
|
86
|
+
✅ text-on-disabled — disabled / inactive text (light grey ~#BBBBBB)
|
|
74
87
|
|
|
75
|
-
✅ text-primary
|
|
76
|
-
✅ text-semantic-win
|
|
77
|
-
✅ text-semantic-loss
|
|
88
|
+
✅ text-primary — brand blue #2323FF — inline brand text over neutral surfaces
|
|
89
|
+
✅ text-semantic-win — green — profit/positive inline text
|
|
90
|
+
✅ text-semantic-loss — red — loss/negative inline text
|
|
78
91
|
```
|
|
79
92
|
|
|
93
|
+
> ⚠️ **Deprecated:** `text-on-prominent-static-inverse` still works (aliased to `--on-prominent-inverse`) but new code should pick the explicit `text-on-<surface>` for whatever background sits behind the text.
|
|
94
|
+
|
|
80
95
|
#### Border tokens
|
|
81
96
|
```
|
|
82
97
|
✅ border-border-subtle — light grey #EEEEEE — default UI borders, dividers, cards
|
package/package.json
CHANGED
package/src/styles.css
CHANGED
|
@@ -18,6 +18,15 @@
|
|
|
18
18
|
--color-prominent: var(--prominent);
|
|
19
19
|
--color-on-prominent: var(--on-prominent);
|
|
20
20
|
--color-on-prominent-static-inverse: var(--on-prominent-static-inverse);
|
|
21
|
+
--color-prominent-inverse: var(--prominent-inverse);
|
|
22
|
+
--color-on-prominent-inverse: var(--on-prominent-inverse);
|
|
23
|
+
--color-on-primary: var(--on-primary);
|
|
24
|
+
--color-primary-inverse: var(--primary-inverse);
|
|
25
|
+
--color-on-primary-inverse: var(--on-primary-inverse);
|
|
26
|
+
--color-on-semantic-win: var(--on-semantic-win);
|
|
27
|
+
--color-on-semantic-loss: var(--on-semantic-loss);
|
|
28
|
+
--color-on-semantic-warning: var(--on-semantic-warning);
|
|
29
|
+
--color-on-semantic-boost: var(--on-semantic-boost);
|
|
21
30
|
--font-sans: var(--font-plus-jakarta-sans);
|
|
22
31
|
--font-body: var(--font-plus-jakarta-sans);
|
|
23
32
|
--font-display: var(--font-plus-jakarta-sans);
|
|
@@ -48,8 +57,7 @@
|
|
|
48
57
|
--color-semantic-win: var(--semantic-win);
|
|
49
58
|
--color-semantic-loss: var(--semantic-loss);
|
|
50
59
|
--color-semantic-warning: var(--semantic-warning);
|
|
51
|
-
--color-semantic-
|
|
52
|
-
--color-semantic-credit-text: var(--semantic-credit-text);
|
|
60
|
+
--color-semantic-boost: var(--semantic-boost);
|
|
53
61
|
--color-alert-info-text: var(--alert-info-text);
|
|
54
62
|
--color-alert-info-border: var(--alert-info-border);
|
|
55
63
|
--color-alert-error-text: var(--alert-error-text);
|
|
@@ -168,11 +176,11 @@
|
|
|
168
176
|
|
|
169
177
|
/* ── Amber ── */
|
|
170
178
|
--primitive-amber-500: oklch(0.74 0.18 72);
|
|
171
|
-
/* #ef9f00 — golden amber; ticket
|
|
179
|
+
/* #ef9f00 — golden amber; ticket boost progress fill */
|
|
172
180
|
--primitive-amber-600: #F9840F;
|
|
173
|
-
/* #F9840F — warm orange-amber;
|
|
181
|
+
/* #F9840F — warm orange-amber; boost badge background base */
|
|
174
182
|
--primitive-amber-800: oklch(0.40 0.10 52);
|
|
175
|
-
/* #713813 — dark amber/brown; ticket
|
|
183
|
+
/* #713813 — dark amber/brown; ticket boost label text */
|
|
176
184
|
|
|
177
185
|
/* ── Violet ── */
|
|
178
186
|
--primitive-violet-500: oklch(0.601 0.263 301.6);
|
|
@@ -246,11 +254,25 @@
|
|
|
246
254
|
══════════════════════════════════════════════════════════════ */
|
|
247
255
|
:root {
|
|
248
256
|
--prominent: var(--primitive-mono-50);
|
|
257
|
+
/* #FFFFFF — light surface (page chrome, cards) */
|
|
249
258
|
--on-prominent: var(--primitive-mono-1000);
|
|
250
|
-
|
|
251
|
-
|
|
259
|
+
/* #000000 — text/icon color for use on prominent surfaces */
|
|
260
|
+
--prominent-inverse: var(--primitive-mono-1000);
|
|
261
|
+
/* #000000 — dark surface for use on light pages (e.g. toasts) */
|
|
262
|
+
--on-prominent-inverse: var(--primitive-mono-50);
|
|
263
|
+
/* #FFFFFF — text/icon color for use on prominent-inverse surfaces */
|
|
252
264
|
--primary: var(--primitive-blue-500);
|
|
265
|
+
/* #2323FF — brand primary surface */
|
|
266
|
+
--on-primary: var(--primitive-mono-50);
|
|
267
|
+
/* #FFFFFF — text/icon color for use on primary surfaces */
|
|
268
|
+
--primary-inverse: var(--primitive-mono-50);
|
|
269
|
+
/* #FFFFFF — inverted primary surface for use on dark/coloured areas */
|
|
270
|
+
--on-primary-inverse: var(--primitive-blue-500);
|
|
271
|
+
/* #2323FF — text/icon color for use on primary-inverse surfaces */
|
|
253
272
|
--primary-hover: oklch(0.403 0.251 267.5);
|
|
273
|
+
/* @deprecated — use the on-X / X-inverse / on-X-inverse pairs above. Kept for backwards compat with external consumers referencing these via var(). */
|
|
274
|
+
--on-prominent-static-inverse: var(--on-prominent-inverse);
|
|
275
|
+
--surface-inverse-static: var(--primary-inverse);
|
|
254
276
|
--subtle: oklch(0.96 0 0);
|
|
255
277
|
--on-subtle: oklch(0.52 0 0);
|
|
256
278
|
--on-disabled: var(--primitive-mono-400);
|
|
@@ -265,14 +287,20 @@
|
|
|
265
287
|
--ring: var(--primitive-blue-500);
|
|
266
288
|
--overlay: var(--primitive-black-50);
|
|
267
289
|
--semantic-win: var(--primitive-green-400);
|
|
290
|
+
--on-semantic-win: var(--primitive-mono-50);
|
|
291
|
+
/* #FFFFFF — text/icon color for use on semantic-win surfaces */
|
|
268
292
|
--semantic-loss: var(--primitive-red-500);
|
|
293
|
+
--on-semantic-loss: var(--primitive-mono-50);
|
|
294
|
+
/* #FFFFFF — text/icon color for use on semantic-loss surfaces */
|
|
269
295
|
--semantic-info: var(--primitive-sky-600);
|
|
270
296
|
--semantic-error: var(--primitive-red-600);
|
|
271
297
|
--semantic-warning: var(--primitive-orange-500);
|
|
272
|
-
--semantic-
|
|
273
|
-
/* #
|
|
274
|
-
--semantic-
|
|
275
|
-
/* #
|
|
298
|
+
--on-semantic-warning: var(--primitive-mono-50);
|
|
299
|
+
/* #FFFFFF — text/icon color for use on semantic-warning surfaces */
|
|
300
|
+
--semantic-boost: var(--primitive-amber-600);
|
|
301
|
+
/* #F9840F — boost badge surface */
|
|
302
|
+
--on-semantic-boost: var(--primitive-amber-800);
|
|
303
|
+
/* #713813 — text/icon color for use on semantic-boost surfaces */
|
|
276
304
|
--tabs: var(--primitive-mono-alpha-4);
|
|
277
305
|
--tabs-active: var(--primitive-mono-50);
|
|
278
306
|
|