@trading-game/design-intelligence-layer 0.8.8 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +2 -1
- package/README.md +15 -4
- package/dist/index.cjs +37 -37
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +37 -37
- package/dist/index.js.map +1 -1
- package/guides/design-system-guide/trading-game-ds-guide.md +44 -5
- package/guides/rules/design-system-consuming-project.mdc +20 -1
- package/package.json +1 -1
- package/src/styles.css +3 -3
package/AGENTS.md
CHANGED
|
@@ -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-
|
|
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
|
|
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-
|
|
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 |
|
|
@@ -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-
|
|
333
|
+
❌ bg-white → NOT a token, use bg-prominent or bg-card
|
|
323
334
|
```
|
|
324
335
|
|
|
325
336
|
### Primitive alpha scales
|
|
@@ -449,7 +460,7 @@ This project uses @trading-game/design-intelligence-layer. Before writing any UI
|
|
|
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
461
|
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
|
|
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-
|
|
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-
|
|
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
|
|
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",
|
|
528
528
|
{
|
|
529
529
|
variants: {
|
|
530
530
|
variant: {
|
|
@@ -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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
|
@@ -1507,7 +1507,7 @@ function CarouselNext(_a) {
|
|
|
1507
1507
|
var React3 = __toESM(require("react"), 1);
|
|
1508
1508
|
var RechartsPrimitive = __toESM(require("recharts"), 1);
|
|
1509
1509
|
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
1510
|
-
var THEMES = { light: ""
|
|
1510
|
+
var THEMES = { light: "" };
|
|
1511
1511
|
var ChartContext = React3.createContext(null);
|
|
1512
1512
|
function useChart() {
|
|
1513
1513
|
const context = React3.useContext(ChartContext);
|
|
@@ -1623,7 +1623,7 @@ function ChartTooltipContent({
|
|
|
1623
1623
|
"div",
|
|
1624
1624
|
{
|
|
1625
1625
|
className: cn(
|
|
1626
|
-
"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border-subtle/50 bg-
|
|
1626
|
+
"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border-subtle/50 bg-prominent px-2.5 py-1.5 text-xs shadow-xl",
|
|
1627
1627
|
className
|
|
1628
1628
|
),
|
|
1629
1629
|
children: [
|
|
@@ -1760,7 +1760,7 @@ function Checkbox(_a) {
|
|
|
1760
1760
|
__spreadProps(__spreadValues({
|
|
1761
1761
|
"data-slot": "checkbox",
|
|
1762
1762
|
className: cn(
|
|
1763
|
-
"peer size-4 shrink-0 rounded-[2px] border border-input shadow-xs transition-shadow outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-on-prominent-static-inverse
|
|
1763
|
+
"peer size-4 shrink-0 rounded-[2px] border border-input shadow-xs transition-shadow outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-on-prominent-static-inverse",
|
|
1764
1764
|
className
|
|
1765
1765
|
)
|
|
1766
1766
|
}, props), {
|
|
@@ -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-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",
|
|
1841
1841
|
className
|
|
1842
1842
|
)
|
|
1843
1843
|
}, props)
|
|
@@ -1864,7 +1864,7 @@ function InputGroup(_a) {
|
|
|
1864
1864
|
// Focus state.
|
|
1865
1865
|
"has-[[data-slot=input-group-control]:focus-visible]:border-primary has-[[data-slot=input-group-control]:focus-visible]:ring-[3px] has-[[data-slot=input-group-control]:focus-visible]:ring-primary/[0.08]",
|
|
1866
1866
|
// Error state.
|
|
1867
|
-
"has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-destructive/20
|
|
1867
|
+
"has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-destructive/20",
|
|
1868
1868
|
className
|
|
1869
1869
|
)
|
|
1870
1870
|
}, props)
|
|
@@ -1972,7 +1972,7 @@ function InputGroupInput(_a) {
|
|
|
1972
1972
|
__spreadValues({
|
|
1973
1973
|
"data-slot": "input-group-control",
|
|
1974
1974
|
className: cn(
|
|
1975
|
-
"flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0
|
|
1975
|
+
"flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0",
|
|
1976
1976
|
className
|
|
1977
1977
|
)
|
|
1978
1978
|
}, props)
|
|
@@ -1989,7 +1989,7 @@ function InputGroupTextarea(_a) {
|
|
|
1989
1989
|
__spreadValues({
|
|
1990
1990
|
"data-slot": "input-group-control",
|
|
1991
1991
|
className: cn(
|
|
1992
|
-
"flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0
|
|
1992
|
+
"flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0",
|
|
1993
1993
|
className
|
|
1994
1994
|
)
|
|
1995
1995
|
}, props)
|
|
@@ -2234,7 +2234,7 @@ function ComboboxChips(_a) {
|
|
|
2234
2234
|
__spreadValues({
|
|
2235
2235
|
"data-slot": "combobox-chips",
|
|
2236
2236
|
className: cn(
|
|
2237
|
-
"flex min-h-9 flex-wrap items-center gap-1.5 rounded-md border border-input bg-transparent bg-clip-padding px-2.5 py-1.5 text-sm shadow-xs transition-[color,box-shadow] focus-within:border-ring focus-within:ring-[3px] focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-[3px] has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1.5
|
|
2237
|
+
"flex min-h-9 flex-wrap items-center gap-1.5 rounded-md border border-input bg-transparent bg-clip-padding px-2.5 py-1.5 text-sm shadow-xs transition-[color,box-shadow] focus-within:border-ring focus-within:ring-[3px] focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-[3px] has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1.5",
|
|
2238
2238
|
className
|
|
2239
2239
|
)
|
|
2240
2240
|
}, 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-
|
|
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-
|
|
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" })
|
|
@@ -2718,7 +2718,7 @@ function ContextMenuItem(_a) {
|
|
|
2718
2718
|
"data-inset": inset,
|
|
2719
2719
|
"data-variant": variant,
|
|
2720
2720
|
className: cn(
|
|
2721
|
-
"relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-secondary-hover focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive
|
|
2721
|
+
"relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-secondary-hover focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-on-subtle data-[variant=destructive]:*:[svg]:text-destructive!",
|
|
2722
2722
|
className
|
|
2723
2723
|
)
|
|
2724
2724
|
}, props)
|
|
@@ -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-
|
|
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",
|
|
@@ -3020,7 +3020,7 @@ function DropdownMenuItem(_a) {
|
|
|
3020
3020
|
"data-inset": inset,
|
|
3021
3021
|
"data-variant": variant,
|
|
3022
3022
|
className: cn(
|
|
3023
|
-
"relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-secondary-hover focus:text-on-prominent data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive
|
|
3023
|
+
"relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-secondary-hover focus:text-on-prominent data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-on-subtle data-[variant=destructive]:*:[svg]:text-destructive!",
|
|
3024
3024
|
className
|
|
3025
3025
|
)
|
|
3026
3026
|
}, props)
|
|
@@ -3453,7 +3453,7 @@ function FieldLabel(_a) {
|
|
|
3453
3453
|
className: cn(
|
|
3454
3454
|
"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50",
|
|
3455
3455
|
"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4",
|
|
3456
|
-
"has-data-[state=checked]:border-primary has-data-[state=checked]:bg-primary/5
|
|
3456
|
+
"has-data-[state=checked]:border-primary has-data-[state=checked]:bg-primary/5",
|
|
3457
3457
|
className
|
|
3458
3458
|
)
|
|
3459
3459
|
}, props)
|
|
@@ -3510,7 +3510,7 @@ function FieldSeparator(_a) {
|
|
|
3510
3510
|
children && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
3511
3511
|
"span",
|
|
3512
3512
|
{
|
|
3513
|
-
className: "relative mx-auto block w-fit bg-
|
|
3513
|
+
className: "relative mx-auto block w-fit bg-prominent px-2 text-on-subtle",
|
|
3514
3514
|
"data-slot": "field-separator-content",
|
|
3515
3515
|
children
|
|
3516
3516
|
}
|
|
@@ -3756,7 +3756,7 @@ function InputOTPSlot(_a) {
|
|
|
3756
3756
|
"data-slot": "input-otp-slot",
|
|
3757
3757
|
"data-active": isActive,
|
|
3758
3758
|
className: cn(
|
|
3759
|
-
"relative flex h-9 w-9 items-center justify-center border border-border-subtle bg-white/5 text-sm font-body text-on-prominent shadow-xs transition-[color,box-shadow] outline-none first:rounded-l-sm last:rounded-r-sm aria-invalid:border-destructive aria-invalid:ring-destructive/20
|
|
3759
|
+
"relative flex h-9 w-9 items-center justify-center border border-border-subtle bg-white/5 text-sm font-body text-on-prominent shadow-xs transition-[color,box-shadow] outline-none first:rounded-l-sm last:rounded-r-sm aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[active=true]:z-10 data-[active=true]:border-primary data-[active=true]:ring-[3px] data-[active=true]:ring-primary/[0.08] data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20",
|
|
3760
3760
|
className
|
|
3761
3761
|
)
|
|
3762
3762
|
}, props), {
|
|
@@ -4037,7 +4037,7 @@ function Menubar(_a) {
|
|
|
4037
4037
|
__spreadValues({
|
|
4038
4038
|
"data-slot": "menubar",
|
|
4039
4039
|
className: cn(
|
|
4040
|
-
"flex h-9 items-center gap-1 rounded-md border border-border-subtle bg-
|
|
4040
|
+
"flex h-9 items-center gap-1 rounded-md border border-border-subtle bg-prominent p-1 shadow-xs",
|
|
4041
4041
|
className
|
|
4042
4042
|
)
|
|
4043
4043
|
}, props)
|
|
@@ -4119,7 +4119,7 @@ function MenubarItem(_a) {
|
|
|
4119
4119
|
"data-inset": inset,
|
|
4120
4120
|
"data-variant": variant,
|
|
4121
4121
|
className: cn(
|
|
4122
|
-
"relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none hover:bg-secondary-hover hover:text-on-prominent focus:bg-secondary-hover focus:text-on-prominent data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive
|
|
4122
|
+
"relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none hover:bg-secondary-hover hover:text-on-prominent focus:bg-secondary-hover focus:text-on-prominent data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-on-subtle data-[variant=destructive]:*:[svg]:text-destructive!",
|
|
4123
4123
|
className
|
|
4124
4124
|
)
|
|
4125
4125
|
}, props)
|
|
@@ -4299,7 +4299,7 @@ function NativeSelect(_a) {
|
|
|
4299
4299
|
"data-slot": "native-select",
|
|
4300
4300
|
"data-size": size,
|
|
4301
4301
|
className: cn(
|
|
4302
|
-
"h-9 w-full min-w-0 appearance-none rounded-md border border-input bg-transparent px-3 py-2 pr-9 text-sm shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-on-prominent-static-inverse placeholder:text-on-subtle disabled:pointer-events-none disabled:cursor-not-allowed data-[size=sm]:h-8 data-[size=sm]:py-1
|
|
4302
|
+
"h-9 w-full min-w-0 appearance-none rounded-md border border-input bg-transparent px-3 py-2 pr-9 text-sm shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-on-prominent-static-inverse placeholder:text-on-subtle disabled:pointer-events-none disabled:cursor-not-allowed data-[size=sm]:h-8 data-[size=sm]:py-1",
|
|
4303
4303
|
"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50",
|
|
4304
4304
|
className
|
|
4305
4305
|
)
|
|
@@ -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-
|
|
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, {
|
|
@@ -4738,7 +4738,7 @@ function RadioGroupItem(_a) {
|
|
|
4738
4738
|
__spreadProps(__spreadValues({
|
|
4739
4739
|
"data-slot": "radio-group-item",
|
|
4740
4740
|
className: cn(
|
|
4741
|
-
"aspect-square size-4 shrink-0 rounded-full border border-input text-primary shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20
|
|
4741
|
+
"aspect-square size-4 shrink-0 rounded-full border border-input text-primary shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20",
|
|
4742
4742
|
className
|
|
4743
4743
|
)
|
|
4744
4744
|
}, props), {
|
|
@@ -4900,7 +4900,7 @@ function SelectTrigger(_a) {
|
|
|
4900
4900
|
"data-readonly": readOnly ? "" : void 0,
|
|
4901
4901
|
disabled: readOnly || props.disabled,
|
|
4902
4902
|
className: cn(
|
|
4903
|
-
"flex w-fit items-center justify-between gap-2 rounded-sm border border-input bg-
|
|
4903
|
+
"flex w-fit items-center justify-between gap-2 rounded-sm border border-input bg-prominent appearance-none px-3 py-2 text-sm whitespace-nowrap transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[placeholder]:text-on-subtle data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-on-subtle data-[readonly]:cursor-default data-[readonly]:opacity-100",
|
|
4904
4904
|
className
|
|
4905
4905
|
)
|
|
4906
4906
|
}, props), {
|
|
@@ -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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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",
|
|
@@ -6058,7 +6058,7 @@ function Switch(_a) {
|
|
|
6058
6058
|
"data-slot": "switch",
|
|
6059
6059
|
"data-size": size,
|
|
6060
6060
|
className: cn(
|
|
6061
|
-
"peer group/switch inline-flex shrink-0 items-center rounded-[6px] border border-transparent p-[3px] shadow-xs transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-6 data-[size=default]:w-11 data-[size=sm]:h-5 data-[size=sm]:w-9 data-[state=checked]:bg-slider-range data-[state=unchecked]:bg-input
|
|
6061
|
+
"peer group/switch inline-flex shrink-0 items-center rounded-[6px] border border-transparent p-[3px] shadow-xs transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-6 data-[size=default]:w-11 data-[size=sm]:h-5 data-[size=sm]:w-9 data-[state=checked]:bg-slider-range data-[state=unchecked]:bg-input",
|
|
6062
6062
|
className
|
|
6063
6063
|
)
|
|
6064
6064
|
}, props), {
|
|
@@ -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-
|
|
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-
|
|
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)(
|
|
@@ -6385,7 +6385,7 @@ var import_class_variance_authority12 = require("class-variance-authority");
|
|
|
6385
6385
|
var import_radix_ui33 = require("radix-ui");
|
|
6386
6386
|
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
6387
6387
|
var toggleVariants = (0, import_class_variance_authority12.cva)(
|
|
6388
|
-
"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-[color,box-shadow] outline-none hover:bg-secondary-hover hover:text-on-prominent focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=on]:bg-secondary-hover data-[state=on]:border-transparent data-[state=on]:text-primary
|
|
6388
|
+
"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-[color,box-shadow] outline-none hover:bg-secondary-hover hover:text-on-prominent focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=on]:bg-secondary-hover data-[state=on]:border-transparent data-[state=on]:text-primary [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
6389
6389
|
{
|
|
6390
6390
|
variants: {
|
|
6391
6391
|
variant: {
|