@trading-game/design-intelligence-layer 0.8.9 → 0.9.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/AGENTS.md CHANGED
@@ -23,14 +23,14 @@ node_modules/@trading-game/design-intelligence-layer/guides/accessibility-standa
23
23
  node_modules/@trading-game/design-intelligence-layer/guides/personas/trading-game-player-field-guide.md
24
24
  ```
25
25
 
26
- **Tone of voice** — the creative foundation, campaign territories, and the mirror test for all player-facing copy:
26
+ **Brand voice** — channel-specific voice application, banned phrases, vocabulary reference, and formatting rules for all player-facing copy:
27
27
  ```
28
- node_modules/@trading-game/design-intelligence-layer/guides/tone-of-voice/trading-game-tone-of-voice-and-campaign-brief.md
28
+ node_modules/@trading-game/design-intelligence-layer/guides/brand-voice/trading-game-brand-voice.md
29
29
  ```
30
30
 
31
31
  All four files apply to all projects built with this package — landing pages, product screens, and games.
32
32
 
33
- Run the checklists at the end of the design principles and accessibility standards files before considering any screen complete. Use the personas and tone of voice to guide all player-facing copy.
33
+ Run the checklists at the end of the design principles and accessibility standards files before considering any screen complete. Use the personas and brand voice to guide all player-facing copy.
34
34
 
35
35
  ---
36
36
 
@@ -53,10 +53,11 @@ cp node_modules/@trading-game/design-intelligence-layer/guides/rules/design-syst
53
53
  ## Step 3 — Core rules summary
54
54
 
55
55
  1. **Check before building** — if a component exists in `@trading-game/design-intelligence-layer`, import it. Never re-implement it.
56
- 2. **Tokens only** — use semantic token classes (`bg-background`, `text-on-prominent`, `border-border`, etc.). Never hardcode hex values, raw Tailwind palette colors, or CSS variables.
56
+ 2. **Tokens only** — use semantic token classes (`bg-prominent`, `text-on-prominent`, `border-border`, etc.). Never hardcode hex values, raw Tailwind palette colors, or CSS variables.
57
57
  3. **Design principles and accessibility first** — every screen must reflect the 8 design principles and meet the accessibility standards (WCAG 2.1 AA). Run both checklists before shipping.
58
58
  4. **No separate installs** — do not install `lucide-react`, `tailwindcss`, or other bundled dependencies separately.
59
59
  5. **After a version bump** — re-copy the rules file into `.cursor/rules/`, check for stale local component copies, and align them with the package.
60
+ 6. **Blocks are playground-only** — Blocks (e.g. NavBar) appear in the playground's Blocks tab but are **not** exported from the package. Do not try to import them. To build a block pattern in a consuming project, compose it manually using package components and design tokens. See `guides/design-system-guide/trading-game-ds-guide.md` Section 8.5.
60
61
 
61
62
  ---
62
63
 
@@ -66,5 +67,5 @@ cp node_modules/@trading-game/design-intelligence-layer/guides/rules/design-syst
66
67
  - Design principles: `node_modules/@trading-game/design-intelligence-layer/guides/design-principles/trading-game-design-principles.md`
67
68
  - Accessibility standards: `node_modules/@trading-game/design-intelligence-layer/guides/accessibility-standards/trading-game-accessibility-standards.md`
68
69
  - Personas: `node_modules/@trading-game/design-intelligence-layer/guides/personas/trading-game-player-field-guide.md`
69
- - Tone of voice: `node_modules/@trading-game/design-intelligence-layer/guides/tone-of-voice/trading-game-tone-of-voice-and-campaign-brief.md`
70
+ - Brand voice: `node_modules/@trading-game/design-intelligence-layer/guides/brand-voice/trading-game-brand-voice.md`
70
71
  - Full agent rules: `node_modules/@trading-game/design-intelligence-layer/guides/rules/design-system-consuming-project.mdc`
package/README.md CHANGED
@@ -155,6 +155,17 @@ npm install react react-dom tailwindcss
155
155
 
156
156
  ---
157
157
 
158
+ ## Blocks
159
+
160
+ Blocks are pre-composed UI patterns built from design system primitives. They are demonstrated in the **Blocks** tab of the development playground and are **not** exported from the npm package — import the underlying components directly if you need to use them.
161
+
162
+ | Block | Variants | Description |
163
+ |---|---|---|
164
+ | NavBar | Desktop, Mobile (closed), Mobile (open) | Landing page top navigation bar. Logo + ghost nav links (Products, Use Cases, Docs, Blog, FAQ) + Sign in / Sign up CTAs. |
165
+ | Hero | Type 1 (Desktop + Mobile), Type 2 | Landing page hero sections. Type 1: tagline pill + heading + body + CTAs left, image right (responsive). Type 2: centred single-column, tagline pill + heading + body + primary CTA with arrow icon, no image. |
166
+
167
+ ---
168
+
158
169
  ## Button variants and sizes
159
170
 
160
171
  ```tsx
@@ -242,7 +253,7 @@ All tokens are CSS custom properties, loaded automatically via `@trading-game/de
242
253
 
243
254
  | Tailwind class | CSS variable | Value | Usage |
244
255
  |---|---|---|---|
245
- | `bg-background` | `--background` | `#FFFFFF` | Page background |
256
+ | `bg-prominent` | `--prominent` | `#FFFFFF` | Page background |
246
257
  | `bg-card` | `--card` | `#FFFFFF` | Card/panel surface |
247
258
  | `bg-popover` | `--popover` | `#FFFFFF` | Popover/dropdown surface |
248
259
  | `bg-subtle` | `--subtle` | `#F5F5F5` | Subtle tinted surface |
@@ -262,7 +273,7 @@ All tokens are CSS custom properties, loaded automatically via `@trading-game/de
262
273
  | `text-on-prominent` | `#000000` | Primary text on light backgrounds |
263
274
  | `text-on-prominent-static-inverse` | `#FFFFFF` | Always white — for text on dark/primary backgrounds |
264
275
  | `text-on-subtle` | mid grey | Secondary / supporting text |
265
- | `text-on-muted` | dark grey | Low-emphasis text |
276
+
266
277
  | `text-primary` | `#2323FF` | Brand blue inline text |
267
278
  | `text-semantic-win` | green | Profit / positive text |
268
279
  | `text-semantic-loss` | red | Loss / negative text |
@@ -319,7 +330,7 @@ Opacity on tokens is allowed and encouraged:
319
330
  ✅ ring-ring/10 → ring at 10% opacity
320
331
 
321
332
  ❌ bg-black/50 → NOT a token, use bg-overlay instead
322
- ❌ bg-white → NOT a token, use bg-background or bg-card
333
+ ❌ bg-white → NOT a token, use bg-prominent or bg-card
323
334
  ```
324
335
 
325
336
  ### Primitive alpha scales
@@ -418,12 +429,12 @@ node_modules/@trading-game/design-intelligence-layer/guides/accessibility-standa
418
429
  node_modules/@trading-game/design-intelligence-layer/guides/personas/trading-game-player-field-guide.md
419
430
  ```
420
431
 
421
- **Tone of voice file** (bundled in the package):
432
+ **Brand voice** (bundled in the package):
422
433
  ```
423
- node_modules/@trading-game/design-intelligence-layer/guides/tone-of-voice/trading-game-tone-of-voice-and-campaign-brief.md
434
+ node_modules/@trading-game/design-intelligence-layer/guides/brand-voice/trading-game-brand-voice.md
424
435
  ```
425
436
 
426
- All four files apply to all projects built with this package — landing pages, product screens, and games. Every AI agent must read all of them before starting any build. Run the design principles and accessibility checklists before completing any screen. Use the personas and tone of voice to guide all player-facing copy.
437
+ All four files apply to all projects built with this package — landing pages, product screens, and games. Every AI agent must read all of them before starting any build. Run the design principles and accessibility checklists before completing any screen. Use the personas and brand voice to guide all player-facing copy.
427
438
 
428
439
  ### Cursor
429
440
 
@@ -447,9 +458,9 @@ This project uses @trading-game/design-intelligence-layer. Before writing any UI
447
458
  1. Read node_modules/@trading-game/design-intelligence-layer/guides/design-principles/trading-game-design-principles.md — apply the 8 principles and run the 7-point checklist on every screen
448
459
  2. Read node_modules/@trading-game/design-intelligence-layer/guides/accessibility-standards/trading-game-accessibility-standards.md — apply WCAG 2.1 AA standards and run the 9-point accessibility checklist on every screen
449
460
  3. Read node_modules/@trading-game/design-intelligence-layer/guides/personas/trading-game-player-field-guide.md — understand the 3 player modes (Edge Seeker, System Runner, Public Predictor) that shape all copy and UX
450
- 4. Read node_modules/@trading-game/design-intelligence-layer/guides/tone-of-voice/trading-game-tone-of-voice-and-campaign-brief.md — apply the voice, campaign territories, and mirror test for all player-facing copy
461
+ 4. Read node_modules/@trading-game/design-intelligence-layer/guides/brand-voice/trading-game-brand-voice.md — apply the brand voice: channel-specific voice, banned phrases, vocabulary, and formatting rules for all player-facing copy
451
462
  5. Check if the component exists in the package — import it, don't re-implement
452
- 6. Use only design token classes (bg-background, text-on-prominent, border-border-subtle, etc.) — no hardcoded hex or raw Tailwind palette colors
463
+ 6. Use only design token classes (bg-prominent, text-on-prominent, border-border-subtle, etc.) — no hardcoded hex or raw Tailwind palette colors
453
464
  7. Do not install lucide-react, tailwindcss, or other bundled dependencies separately
454
465
  8. If no token exists for a value, ask before using a hardcoded value
455
466
  9. After upgrading the package: prefer package imports over local copies of components; if replacing local UI code with the package version, tell the user what was overwritten; re-copy guides/rules/design-system-consuming-project.mdc into .cursor/rules if using Cursor
@@ -465,7 +476,7 @@ See node_modules/@trading-game/design-intelligence-layer/README.md for complete
465
476
  | Wrong | Right | Why |
466
477
  |---|---|---|
467
478
  | `bg-gray-100` | `bg-subtle` | Raw Tailwind palette — use tokens |
468
- | `bg-white` | `bg-background` or `bg-card` | Not a semantic token |
479
+ | `bg-white` | `bg-prominent` or `bg-card` | Not a semantic token |
469
480
  | `text-white` | `text-on-prominent-static-inverse` | Use the semantic inverse token |
470
481
  | `text-black` | `text-on-prominent` | Not a semantic token |
471
482
  | `bg-black/50` | `bg-overlay` | Overlay has its own token |
package/dist/index.cjs CHANGED
@@ -524,7 +524,7 @@ var import_class_variance_authority2 = require("class-variance-authority");
524
524
  var import_radix_ui2 = require("radix-ui");
525
525
  var import_jsx_runtime3 = require("react/jsx-runtime");
526
526
  var buttonVariants = (0, import_class_variance_authority2.cva)(
527
- "inline-flex shrink-0 items-center justify-center whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 active:opacity-60 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 font-display font-bold",
527
+ "inline-flex shrink-0 items-center justify-center whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 active:opacity-60 disabled:pointer-events-none disabled:opacity-24 aria-invalid:border-destructive aria-invalid:ring-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 font-display font-bold",
528
528
  {
529
529
  variants: {
530
530
  variant: {
@@ -573,7 +573,7 @@ function Button(_a) {
573
573
  "data-variant": variant,
574
574
  "data-size": size,
575
575
  "data-loading": loading || void 0,
576
- className: cn(buttonVariants({ variant, size, className }), loading && "pointer-events-none opacity-50"),
576
+ className: cn(buttonVariants({ variant, size, className }), loading && "pointer-events-none opacity-24"),
577
577
  "aria-busy": loading || void 0
578
578
  }, props)
579
579
  );
@@ -626,7 +626,7 @@ function AlertDialogContent(_a) {
626
626
  "data-slot": "alert-dialog-content",
627
627
  "data-size": size,
628
628
  className: cn(
629
- "group/alert-dialog-content fixed top-[50%] left-[50%] z-50 flex h-auto w-full max-w-[calc(100%-2rem)] flex-col translate-x-[-50%] translate-y-[-50%] gap-6 rounded-sm border border-border-subtle bg-background p-6 shadow-lg duration-base data-[size=sm]:max-w-xs data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[size=default]:sm:max-w-lg",
629
+ "group/alert-dialog-content fixed top-[50%] left-[50%] z-50 flex h-auto w-full max-w-[calc(100%-2rem)] flex-col translate-x-[-50%] translate-y-[-50%] gap-6 rounded-sm border border-border-subtle bg-prominent p-6 shadow-lg duration-base data-[size=sm]:max-w-xs data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[size=default]:sm:max-w-lg",
630
630
  className
631
631
  )
632
632
  }, props)
@@ -819,7 +819,7 @@ function AvatarBadge(_a) {
819
819
  __spreadValues({
820
820
  "data-slot": "avatar-badge",
821
821
  className: cn(
822
- "absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-on-prominent-static-inverse ring-2 ring-background select-none",
822
+ "absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-on-prominent-static-inverse ring-2 ring-prominent select-none",
823
823
  "group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden",
824
824
  "group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2",
825
825
  "group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2",
@@ -836,7 +836,7 @@ function AvatarGroup(_a) {
836
836
  __spreadValues({
837
837
  "data-slot": "avatar-group",
838
838
  className: cn(
839
- "group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background",
839
+ "group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-prominent",
840
840
  className
841
841
  )
842
842
  }, props)
@@ -853,7 +853,7 @@ function AvatarGroupCount(_a) {
853
853
  __spreadValues({
854
854
  "data-slot": "avatar-group-count",
855
855
  className: cn(
856
- "relative flex size-8 shrink-0 items-center justify-center rounded-full bg-subtle text-sm text-on-subtle ring-2 ring-background group-has-data-[size=sm]/avatar-group:size-6 group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=xl]/avatar-group:[width:var(--avatar-size-xl)] group-has-data-[size=xl]/avatar-group:[height:var(--avatar-size-xl)] [&>svg]:size-4 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=xl]/avatar-group:[&>svg]:size-6",
856
+ "relative flex size-8 shrink-0 items-center justify-center rounded-full bg-subtle text-sm text-on-subtle ring-2 ring-prominent group-has-data-[size=sm]/avatar-group:size-6 group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=xl]/avatar-group:[width:var(--avatar-size-xl)] group-has-data-[size=xl]/avatar-group:[height:var(--avatar-size-xl)] [&>svg]:size-4 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=xl]/avatar-group:[&>svg]:size-6",
857
857
  className
858
858
  )
859
859
  }, props)
@@ -1052,7 +1052,7 @@ function Calendar(_a) {
1052
1052
  __spreadValues({
1053
1053
  showOutsideDays,
1054
1054
  className: cn(
1055
- "group/calendar bg-background p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",
1055
+ "group/calendar bg-prominent p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",
1056
1056
  String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,
1057
1057
  String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
1058
1058
  className
@@ -1820,7 +1820,7 @@ function Input(_a) {
1820
1820
  type,
1821
1821
  "data-slot": "input",
1822
1822
  className: cn(
1823
- "h-9 w-full min-w-0 rounded-sm border border-border-subtle bg-white/5 px-3 py-1 text-base text-on-prominent font-body shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-on-prominent-static-inverse file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-on-prominent placeholder:text-on-muted disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
1823
+ "h-9 w-full min-w-0 rounded-sm border border-border-subtle bg-white/5 px-3 py-1 text-base text-on-prominent font-body shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-on-prominent-static-inverse file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-on-prominent placeholder:text-on-subtle disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
1824
1824
  "focus-visible:border-primary focus-visible:ring-[3px] focus-visible:ring-primary/[0.08]",
1825
1825
  className
1826
1826
  )
@@ -1837,7 +1837,7 @@ function Textarea(_a) {
1837
1837
  __spreadValues({
1838
1838
  "data-slot": "textarea",
1839
1839
  className: cn(
1840
- "flex field-sizing-content min-h-16 w-full rounded-sm border border-border-subtle bg-white/5 px-3 py-2 text-base text-on-prominent font-body shadow-xs transition-[color,box-shadow] outline-none placeholder:text-on-muted focus-visible:border-primary focus-visible:ring-[3px] focus-visible:ring-primary/[0.08] disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 md:text-sm",
1840
+ "flex field-sizing-content min-h-16 w-full rounded-sm border border-border-subtle bg-white/5 px-3 py-2 text-base text-on-prominent font-body shadow-xs transition-[color,box-shadow] outline-none placeholder:text-on-subtle focus-visible:border-primary focus-visible:ring-[3px] focus-visible:ring-primary/[0.08] disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 md:text-sm",
1841
1841
  className
1842
1842
  )
1843
1843
  }, props)
@@ -2352,7 +2352,7 @@ function DialogContent(_a) {
2352
2352
  __spreadProps(__spreadValues({
2353
2353
  "data-slot": "dialog-content",
2354
2354
  className: cn(
2355
- "fixed top-[50%] left-[50%] z-50 flex h-auto w-full max-w-[calc(100%-2rem)] flex-col translate-x-[-50%] translate-y-[-50%] gap-6 rounded-sm border border-border-subtle bg-background p-6 shadow-lg duration-base outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 sm:max-w-lg",
2355
+ "fixed top-[50%] left-[50%] z-50 flex h-auto w-full max-w-[calc(100%-2rem)] flex-col translate-x-[-50%] translate-y-[-50%] gap-6 rounded-sm border border-border-subtle bg-prominent p-6 shadow-lg duration-base outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 sm:max-w-lg",
2356
2356
  className
2357
2357
  )
2358
2358
  }, props), {
@@ -2362,7 +2362,7 @@ function DialogContent(_a) {
2362
2362
  import_radix_ui10.Dialog.Close,
2363
2363
  {
2364
2364
  "data-slot": "dialog-close",
2365
- className: "absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-on-subtle [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
2365
+ className: "absolute top-4 right-4 rounded-xs opacity-70 ring-offset-prominent transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-on-subtle [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
2366
2366
  children: [
2367
2367
  /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react7.XIcon, {}),
2368
2368
  /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "sr-only", children: "Close" })
@@ -2890,7 +2890,7 @@ function DrawerContent(_a) {
2890
2890
  __spreadProps(__spreadValues({
2891
2891
  "data-slot": "drawer-content",
2892
2892
  className: cn(
2893
- "group/drawer-content fixed z-50 flex h-auto flex-col bg-background",
2893
+ "group/drawer-content fixed z-50 flex h-auto flex-col bg-prominent",
2894
2894
  "data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=top]:border-border-subtle",
2895
2895
  "data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-lg data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=bottom]:border-border-subtle",
2896
2896
  "data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:border-border-subtle data-[vaul-drawer-direction=right]:sm:max-w-sm",
@@ -4400,7 +4400,7 @@ function NavigationMenuItem(_a) {
4400
4400
  );
4401
4401
  }
4402
4402
  var navigationMenuTriggerStyle = (0, import_class_variance_authority9.cva)(
4403
- "group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-[color,box-shadow] outline-none hover:bg-secondary-hover hover:text-on-prominent focus:bg-secondary-hover focus:text-on-prominent focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=open]:bg-secondary-hover data-[state=open]:text-on-prominent data-[state=open]:hover:bg-secondary-hover data-[state=open]:focus:bg-secondary-hover"
4403
+ "group inline-flex h-9 w-max items-center justify-center rounded-md bg-prominent px-4 py-2 text-sm font-medium transition-[color,box-shadow] outline-none hover:bg-secondary-hover hover:text-on-prominent focus:bg-secondary-hover focus:text-on-prominent focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=open]:bg-secondary-hover data-[state=open]:text-on-prominent data-[state=open]:hover:bg-secondary-hover data-[state=open]:focus:bg-secondary-hover"
4404
4404
  );
4405
4405
  function NavigationMenuTrigger(_a) {
4406
4406
  var _b = _a, {
@@ -5106,7 +5106,7 @@ function SheetContent(_a) {
5106
5106
  __spreadProps(__spreadValues({
5107
5107
  "data-slot": "sheet-content",
5108
5108
  className: cn(
5109
- "fixed z-50 flex flex-col gap-4 bg-background shadow-lg transition ease-standard data-[state=closed]:animate-out data-[state=closed]:duration-slow data-[state=open]:animate-in data-[state=open]:duration-open",
5109
+ "fixed z-50 flex flex-col gap-4 bg-prominent shadow-lg transition ease-standard data-[state=closed]:animate-out data-[state=closed]:duration-slow data-[state=open]:animate-in data-[state=open]:duration-open",
5110
5110
  side === "right" && "inset-y-0 right-0 h-full w-3/4 border-l border-border-subtle data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm",
5111
5111
  side === "left" && "inset-y-0 left-0 h-full w-3/4 border-r border-border-subtle data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",
5112
5112
  side === "top" && "inset-x-0 top-0 h-auto border-b border-border-subtle data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
@@ -5116,7 +5116,7 @@ function SheetContent(_a) {
5116
5116
  }, props), {
5117
5117
  children: [
5118
5118
  children,
5119
- showCloseButton && /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_radix_ui27.Dialog.Close, { className: "absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none data-[state=open]:bg-secondary", children: [
5119
+ showCloseButton && /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_radix_ui27.Dialog.Close, { className: "absolute top-4 right-4 rounded-xs opacity-70 ring-offset-prominent transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none data-[state=open]:bg-secondary", children: [
5120
5120
  /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_lucide_react19.XIcon, { className: "size-4" }),
5121
5121
  /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className: "sr-only", children: "Close" })
5122
5122
  ] })
@@ -5514,7 +5514,7 @@ function SidebarInset(_a) {
5514
5514
  __spreadValues({
5515
5515
  "data-slot": "sidebar-inset",
5516
5516
  className: cn(
5517
- "relative flex w-full flex-1 flex-col bg-background",
5517
+ "relative flex w-full flex-1 flex-col bg-prominent",
5518
5518
  "md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2",
5519
5519
  className
5520
5520
  )
@@ -5532,7 +5532,7 @@ function SidebarInput(_a) {
5532
5532
  __spreadValues({
5533
5533
  "data-slot": "sidebar-input",
5534
5534
  "data-sidebar": "input",
5535
- className: cn("h-8 w-full bg-background shadow-none", className)
5535
+ className: cn("h-8 w-full bg-prominent shadow-none", className)
5536
5536
  }, props)
5537
5537
  );
5538
5538
  }
@@ -5687,7 +5687,7 @@ var sidebarMenuButtonVariants = (0, import_class_variance_authority10.cva)(
5687
5687
  variants: {
5688
5688
  variant: {
5689
5689
  default: "",
5690
- outline: "bg-background ring-1 ring-sidebar-border hover:ring-primary/40 data-[active=true]:ring-primary/40"
5690
+ outline: "bg-prominent ring-1 ring-sidebar-border hover:ring-primary/40 data-[active=true]:ring-primary/40"
5691
5691
  },
5692
5692
  size: {
5693
5693
  default: "h-8 text-sm",
@@ -6322,14 +6322,14 @@ function TicketCard({
6322
6322
  "div",
6323
6323
  {
6324
6324
  "aria-hidden": true,
6325
- className: "pointer-events-none absolute right-0 top-0 z-10 size-5 -translate-y-1/2 translate-x-1/2 rounded-full bg-background"
6325
+ className: "pointer-events-none absolute right-0 top-0 z-10 size-5 -translate-y-1/2 translate-x-1/2 rounded-full bg-prominent"
6326
6326
  }
6327
6327
  ),
6328
6328
  /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
6329
6329
  "div",
6330
6330
  {
6331
6331
  "aria-hidden": true,
6332
- className: "pointer-events-none absolute bottom-0 right-0 z-10 size-5 translate-x-1/2 translate-y-1/2 rounded-full bg-background"
6332
+ className: "pointer-events-none absolute bottom-0 right-0 z-10 size-5 translate-x-1/2 translate-y-1/2 rounded-full bg-prominent"
6333
6333
  }
6334
6334
  ),
6335
6335
  /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(