@trading-game/design-intelligence-layer 0.8.5 → 0.8.8
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 +11 -11
- package/README.md +83 -14
- package/dist/index.cjs +48 -29
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +7 -3
- package/dist/index.d.ts +7 -3
- package/dist/index.js +48 -29
- package/dist/index.js.map +1 -1
- package/{docs → guides}/design-principles/trading-game-design-principles.md +6 -5
- package/guides/design-system-guide/trading-game-ds-guide.md +642 -0
- package/{docs → guides}/rules/design-system-consuming-project.mdc +1 -1
- package/package.json +2 -2
- package/src/styles.css +86 -42
- package/docs/design-system-guide/trading-game-ds-guide.md +0 -2193
- /package/{docs → guides}/accessibility-standards/trading-game-accessibility-standards.md +0 -0
- /package/{docs → guides}/personas/trading-game-player-field-guide.md +0 -0
- /package/{docs → guides}/tone-of-voice/trading-game-tone-of-voice-and-campaign-brief.md +0 -0
package/AGENTS.md
CHANGED
|
@@ -10,22 +10,22 @@ Before building any landing page, product screen, game view, or feature UI, you
|
|
|
10
10
|
|
|
11
11
|
**Design principles** — the decision framework for every layout, hierarchy, motion, copy, and component choice:
|
|
12
12
|
```
|
|
13
|
-
node_modules/@trading-game/design-intelligence-layer/
|
|
13
|
+
node_modules/@trading-game/design-intelligence-layer/guides/design-principles/trading-game-design-principles.md
|
|
14
14
|
```
|
|
15
15
|
|
|
16
16
|
**Accessibility standards** — the inclusion standard every screen must meet (WCAG 2.1 AA):
|
|
17
17
|
```
|
|
18
|
-
node_modules/@trading-game/design-intelligence-layer/
|
|
18
|
+
node_modules/@trading-game/design-intelligence-layer/guides/accessibility-standards/trading-game-accessibility-standards.md
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
**Personas** — the three player modes (Edge Seeker, System Runner, Public Predictor) that shape all copy and UX decisions:
|
|
22
22
|
```
|
|
23
|
-
node_modules/@trading-game/design-intelligence-layer/
|
|
23
|
+
node_modules/@trading-game/design-intelligence-layer/guides/personas/trading-game-player-field-guide.md
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
**Tone of voice** — the creative foundation, campaign territories, and the mirror test for all player-facing copy:
|
|
27
27
|
```
|
|
28
|
-
node_modules/@trading-game/design-intelligence-layer/
|
|
28
|
+
node_modules/@trading-game/design-intelligence-layer/guides/tone-of-voice/trading-game-tone-of-voice-and-campaign-brief.md
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
All four files apply to all projects built with this package — landing pages, product screens, and games.
|
|
@@ -39,13 +39,13 @@ Run the checklists at the end of the design principles and accessibility standar
|
|
|
39
39
|
You MUST also follow the full agent rules file:
|
|
40
40
|
|
|
41
41
|
```
|
|
42
|
-
node_modules/@trading-game/design-intelligence-layer/
|
|
42
|
+
node_modules/@trading-game/design-intelligence-layer/guides/rules/design-system-consuming-project.mdc
|
|
43
43
|
```
|
|
44
44
|
|
|
45
45
|
**Cursor users:** Copy this file into `.cursor/rules/` after every package upgrade:
|
|
46
46
|
|
|
47
47
|
```bash
|
|
48
|
-
cp node_modules/@trading-game/design-intelligence-layer/
|
|
48
|
+
cp node_modules/@trading-game/design-intelligence-layer/guides/rules/design-system-consuming-project.mdc .cursor/rules/
|
|
49
49
|
```
|
|
50
50
|
|
|
51
51
|
---
|
|
@@ -63,8 +63,8 @@ cp node_modules/@trading-game/design-intelligence-layer/docs/rules/design-system
|
|
|
63
63
|
## Reference
|
|
64
64
|
|
|
65
65
|
- Full token + component reference: `node_modules/@trading-game/design-intelligence-layer/README.md`
|
|
66
|
-
- Design principles: `node_modules/@trading-game/design-intelligence-layer/
|
|
67
|
-
- Accessibility standards: `node_modules/@trading-game/design-intelligence-layer/
|
|
68
|
-
- Personas: `node_modules/@trading-game/design-intelligence-layer/
|
|
69
|
-
- Tone of voice: `node_modules/@trading-game/design-intelligence-layer/
|
|
70
|
-
- Full agent rules: `node_modules/@trading-game/design-intelligence-layer/
|
|
66
|
+
- Design principles: `node_modules/@trading-game/design-intelligence-layer/guides/design-principles/trading-game-design-principles.md`
|
|
67
|
+
- Accessibility standards: `node_modules/@trading-game/design-intelligence-layer/guides/accessibility-standards/trading-game-accessibility-standards.md`
|
|
68
|
+
- 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
|
+
- Full agent rules: `node_modules/@trading-game/design-intelligence-layer/guides/rules/design-system-consuming-project.mdc`
|
package/README.md
CHANGED
|
@@ -84,7 +84,9 @@ npm install react react-dom tailwindcss
|
|
|
84
84
|
## What's inside
|
|
85
85
|
|
|
86
86
|
- **54 UI components** — buttons, forms, dialogs, charts, sidebars, and more
|
|
87
|
-
- **Design tokens** — CSS custom properties for color, radius, and
|
|
87
|
+
- **Design tokens** — CSS custom properties for color, radius, typography, and transitions synced from Figma
|
|
88
|
+
- **Transition tokens** — semantic duration and easing tokens (`duration-base`, `ease-standard`, etc.) — no hardcoded `duration-200` anywhere
|
|
89
|
+
- **Light-only theme** — white backgrounds, black text, primary blue accents — no dark mode
|
|
88
90
|
- **Typography classes** — heading scale (h1–xs) and body scale (lg–xs) ready to use
|
|
89
91
|
- **TypeScript** — full type definitions included
|
|
90
92
|
- **ESM + CJS** — works with any bundler
|
|
@@ -205,6 +207,31 @@ npm install react react-dom tailwindcss
|
|
|
205
207
|
<Alert variant="error" /> // red — error state
|
|
206
208
|
```
|
|
207
209
|
|
|
210
|
+
## Component behaviour notes
|
|
211
|
+
|
|
212
|
+
### AlertDialog — button fill
|
|
213
|
+
`AlertDialogAction` and `AlertDialogCancel` fill the full container width **only** when `size="sm"`. On `size="default"` (the default), buttons are natural width and right-aligned.
|
|
214
|
+
|
|
215
|
+
```tsx
|
|
216
|
+
<AlertDialogContent size="sm"> // buttons fill width (50/50 grid)
|
|
217
|
+
<AlertDialogContent size="default"> // buttons natural width, right-aligned
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### Drawer — footer buttons
|
|
221
|
+
`DrawerFooter` makes all direct child buttons fill the full width automatically via `[&>*]:w-full`. Stack your buttons inside `DrawerFooter` and they will always be full-width.
|
|
222
|
+
|
|
223
|
+
### Link — size lg
|
|
224
|
+
The `lg` variant of `Link` uses `text-base` (16px). The `md` and `sm` variants use `text-sm` (14px) and `text-xs` (12px) respectively.
|
|
225
|
+
|
|
226
|
+
```tsx
|
|
227
|
+
<Link size="lg" /> // 16px — font-base
|
|
228
|
+
<Link size="md" /> // 14px — font-sm
|
|
229
|
+
<Link size="sm" /> // 12px — font-xs
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### Tabs — line variant hover
|
|
233
|
+
On the `line` variant, hover state shows `text-primary` (blue) with no background fill. On the `default` (pill) variant, hover shows a grey background with `text-on-prominent`.
|
|
234
|
+
|
|
208
235
|
---
|
|
209
236
|
|
|
210
237
|
## Design tokens
|
|
@@ -220,6 +247,8 @@ All tokens are CSS custom properties, loaded automatically via `@trading-game/de
|
|
|
220
247
|
| `bg-popover` | `--popover` | `#FFFFFF` | Popover/dropdown surface |
|
|
221
248
|
| `bg-subtle` | `--subtle` | `#F5F5F5` | Subtle tinted surface |
|
|
222
249
|
| `bg-overlay` | `--overlay` | black 50% | Modal/dialog backdrop only |
|
|
250
|
+
| `bg-tabs` | `--tabs` | black 4% alpha | Tab container background (`variant="default"`) |
|
|
251
|
+
| `bg-tabs-active` | `--tabs-active` | `#FFFFFF` | Active / selected tab pill |
|
|
223
252
|
| `bg-primary` | `--primary` | `#2323FF` | Brand blue — CTAs |
|
|
224
253
|
| `bg-primary-hover` | `--primary-hover` | `#0B0BD2` | Primary button hover (darker blue) |
|
|
225
254
|
| `bg-secondary-hover` | `--secondary-hover` | `#EEEEEE` | Outline/secondary hover (light grey) |
|
|
@@ -250,6 +279,29 @@ All tokens are CSS custom properties, loaded automatically via `@trading-game/de
|
|
|
250
279
|
|
|
251
280
|
> ⚠️ **`border-border` vs `border-border-subtle`:** Both resolve to the same light grey `#EEEEEE`. `border-border` is kept for backward compatibility. **Prefer `border-border-subtle` in all new code.**
|
|
252
281
|
|
|
282
|
+
### Transition tokens
|
|
283
|
+
|
|
284
|
+
Duration — primitive scale:
|
|
285
|
+
|
|
286
|
+
| Tailwind class | CSS variable | Value | Used for |
|
|
287
|
+
|---|---|---|---|
|
|
288
|
+
| `duration-instant` | `--primitive-duration-instant` | `50ms` | Focus rings, hover tints |
|
|
289
|
+
| `duration-fast` | `--primitive-duration-fast` | `100ms` | Buttons, inputs, badges |
|
|
290
|
+
| `duration-base` | `--primitive-duration-base` | `200ms` | Dropdowns, popovers, accordions |
|
|
291
|
+
| `duration-slow` | `--primitive-duration-slow` | `300ms` | Dialogs, sheets, drawers closing |
|
|
292
|
+
| `duration-open` | `--primitive-duration-open` | `500ms` | Sheets, drawers entering |
|
|
293
|
+
|
|
294
|
+
Easing — primitive scale:
|
|
295
|
+
|
|
296
|
+
| Tailwind class | CSS variable | Value | Used for |
|
|
297
|
+
|---|---|---|---|
|
|
298
|
+
| `ease-standard` | `--primitive-ease-standard` | `cubic-bezier(0.2, 0, 0, 1)` | General UI — bidirectional state changes |
|
|
299
|
+
| `ease-enter` | `--primitive-ease-enter` | `cubic-bezier(0, 0, 0.2, 1)` | Overlays / surfaces entering |
|
|
300
|
+
| `ease-exit` | `--primitive-ease-exit` | `cubic-bezier(0.4, 0, 1, 1)` | Overlays / surfaces leaving |
|
|
301
|
+
| `ease-linear` | `--primitive-ease-linear` | `linear` | Sidebar width, progress bar |
|
|
302
|
+
|
|
303
|
+
> Always use token utilities — never raw `duration-200` or `ease-in-out` directly.
|
|
304
|
+
|
|
253
305
|
### Other tokens
|
|
254
306
|
|
|
255
307
|
| Tailwind class | Value | Usage |
|
|
@@ -270,6 +322,23 @@ Opacity on tokens is allowed and encouraged:
|
|
|
270
322
|
❌ bg-white → NOT a token, use bg-background or bg-card
|
|
271
323
|
```
|
|
272
324
|
|
|
325
|
+
### Primitive alpha scales
|
|
326
|
+
|
|
327
|
+
For structured alpha surfaces, the design system ships two internal alpha primitive scales. These are **CSS variables only** — not exposed as Tailwind utility classes. Always reference them via a semantic token, never directly in components.
|
|
328
|
+
|
|
329
|
+
```
|
|
330
|
+
--primitive-mono-alpha-4 through --primitive-mono-alpha-80 (black at N%)
|
|
331
|
+
--primitive-blue-alpha-4 through --primitive-blue-alpha-80 (brand blue at N%)
|
|
332
|
+
Stops: 4 · 8 · 16 · 24 · 32 · 40 · 50 · 64 · 80
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
Example — how `--tabs` uses the alpha scale:
|
|
336
|
+
```css
|
|
337
|
+
--tabs: var(--primitive-mono-alpha-4); /* black at 4% — tab container background */
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
> `--primitive-black-50` is deprecated. It now aliases `--primitive-mono-alpha-50`. The `--overlay` semantic token is unaffected.
|
|
341
|
+
|
|
273
342
|
---
|
|
274
343
|
|
|
275
344
|
## Typography
|
|
@@ -315,7 +384,7 @@ When you bump `@trading-game/design-intelligence-layer` and run `npm install` (o
|
|
|
315
384
|
|
|
316
385
|
**Overrides:** Passing large `className` strings onto DS components can mask new defaults (e.g. old radius after a “pill button” update). After upgrading, review those callsites.
|
|
317
386
|
|
|
318
|
-
**Cursor / AI agents:** The package ships agent rules at `node_modules/@trading-game/design-intelligence-layer/
|
|
387
|
+
**Cursor / AI agents:** The package ships agent rules at `node_modules/@trading-game/design-intelligence-layer/guides/rules/design-system-consuming-project.mdc`. Cursor does **not** load rules from `node_modules` by default — **re-copy** that file into `.cursor/rules/` after each upgrade so instructions match the release (same command as in **AI Agent Setup** below). The rules include **Rule 7 — Package version upgrades**: agents should search for duplicated components, align with the package, and **tell you explicitly** if local component code was replaced.
|
|
319
388
|
|
|
320
389
|
---
|
|
321
390
|
|
|
@@ -336,22 +405,22 @@ This tells any AI agent to:
|
|
|
336
405
|
|
|
337
406
|
**Design principles file** (bundled in the package):
|
|
338
407
|
```
|
|
339
|
-
node_modules/@trading-game/design-intelligence-layer/
|
|
408
|
+
node_modules/@trading-game/design-intelligence-layer/guides/design-principles/trading-game-design-principles.md
|
|
340
409
|
```
|
|
341
410
|
|
|
342
411
|
**Accessibility standards file** (bundled in the package):
|
|
343
412
|
```
|
|
344
|
-
node_modules/@trading-game/design-intelligence-layer/
|
|
413
|
+
node_modules/@trading-game/design-intelligence-layer/guides/accessibility-standards/trading-game-accessibility-standards.md
|
|
345
414
|
```
|
|
346
415
|
|
|
347
416
|
**Personas file** (bundled in the package):
|
|
348
417
|
```
|
|
349
|
-
node_modules/@trading-game/design-intelligence-layer/
|
|
418
|
+
node_modules/@trading-game/design-intelligence-layer/guides/personas/trading-game-player-field-guide.md
|
|
350
419
|
```
|
|
351
420
|
|
|
352
421
|
**Tone of voice file** (bundled in the package):
|
|
353
422
|
```
|
|
354
|
-
node_modules/@trading-game/design-intelligence-layer/
|
|
423
|
+
node_modules/@trading-game/design-intelligence-layer/guides/tone-of-voice/trading-game-tone-of-voice-and-campaign-brief.md
|
|
355
424
|
```
|
|
356
425
|
|
|
357
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.
|
|
@@ -362,7 +431,7 @@ Copy the included rule file into your project:
|
|
|
362
431
|
|
|
363
432
|
```bash
|
|
364
433
|
mkdir -p .cursor/rules
|
|
365
|
-
cp node_modules/@trading-game/design-intelligence-layer/
|
|
434
|
+
cp node_modules/@trading-game/design-intelligence-layer/guides/rules/design-system-consuming-project.mdc .cursor/rules/
|
|
366
435
|
```
|
|
367
436
|
|
|
368
437
|
Re-run this **`cp` after every design-system version bump** so your workspace rules stay in sync with the installed package.
|
|
@@ -375,17 +444,17 @@ Add the following to your project's `CLAUDE.md`:
|
|
|
375
444
|
## Design System
|
|
376
445
|
|
|
377
446
|
This project uses @trading-game/design-intelligence-layer. Before writing any UI:
|
|
378
|
-
1. Read node_modules/@trading-game/design-intelligence-layer/
|
|
379
|
-
2. Read node_modules/@trading-game/design-intelligence-layer/
|
|
380
|
-
3. Read node_modules/@trading-game/design-intelligence-layer/
|
|
381
|
-
4. Read node_modules/@trading-game/design-intelligence-layer/
|
|
447
|
+
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
|
+
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
|
+
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
|
|
382
451
|
5. Check if the component exists in the package — import it, don't re-implement
|
|
383
452
|
6. Use only design token classes (bg-background, text-on-prominent, border-border-subtle, etc.) — no hardcoded hex or raw Tailwind palette colors
|
|
384
453
|
7. Do not install lucide-react, tailwindcss, or other bundled dependencies separately
|
|
385
454
|
8. If no token exists for a value, ask before using a hardcoded value
|
|
386
|
-
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
|
|
455
|
+
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
|
|
387
456
|
|
|
388
|
-
See node_modules/@trading-game/design-intelligence-layer/
|
|
457
|
+
See node_modules/@trading-game/design-intelligence-layer/guides/rules/design-system-consuming-project.mdc for full rules.
|
|
389
458
|
See node_modules/@trading-game/design-intelligence-layer/README.md for complete token and component reference.
|
|
390
459
|
```
|
|
391
460
|
|
|
@@ -450,7 +519,7 @@ npm run build:next
|
|
|
450
519
|
Design tokens are managed in Figma and exported as CSS variables. To update:
|
|
451
520
|
|
|
452
521
|
1. Update the CSS custom properties in `app/globals.css` (playground) and `src/styles.css` (published package)
|
|
453
|
-
2. Update `
|
|
522
|
+
2. Update `guides/rules/design-system-consuming-project.mdc` to reflect any token renames
|
|
454
523
|
3. Update this README's token tables
|
|
455
524
|
|
|
456
525
|
---
|
package/dist/index.cjs
CHANGED
|
@@ -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-
|
|
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",
|
|
630
630
|
className
|
|
631
631
|
)
|
|
632
632
|
}, props)
|
|
@@ -725,11 +725,10 @@ function AlertDialogAction(_a) {
|
|
|
725
725
|
"variant",
|
|
726
726
|
"size"
|
|
727
727
|
]);
|
|
728
|
-
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Button, { variant, size, asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
728
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Button, { variant, size, asChild: true, className: cn("group-data-[size=sm]/alert-dialog-content:w-full", className), children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
729
729
|
import_radix_ui3.AlertDialog.Action,
|
|
730
730
|
__spreadValues({
|
|
731
|
-
"data-slot": "alert-dialog-action"
|
|
732
|
-
className: cn(className)
|
|
731
|
+
"data-slot": "alert-dialog-action"
|
|
733
732
|
}, props)
|
|
734
733
|
) });
|
|
735
734
|
}
|
|
@@ -743,11 +742,10 @@ function AlertDialogCancel(_a) {
|
|
|
743
742
|
"variant",
|
|
744
743
|
"size"
|
|
745
744
|
]);
|
|
746
|
-
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Button, { variant, size, asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
745
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Button, { variant, size, asChild: true, className: cn("group-data-[size=sm]/alert-dialog-content:w-full", className), children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
747
746
|
import_radix_ui3.AlertDialog.Cancel,
|
|
748
747
|
__spreadValues({
|
|
749
|
-
"data-slot": "alert-dialog-cancel"
|
|
750
|
-
className: cn(className)
|
|
748
|
+
"data-slot": "alert-dialog-cancel"
|
|
751
749
|
}, props)
|
|
752
750
|
) });
|
|
753
751
|
}
|
|
@@ -2354,7 +2352,7 @@ function DialogContent(_a) {
|
|
|
2354
2352
|
__spreadProps(__spreadValues({
|
|
2355
2353
|
"data-slot": "dialog-content",
|
|
2356
2354
|
className: cn(
|
|
2357
|
-
"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-
|
|
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",
|
|
2358
2356
|
className
|
|
2359
2357
|
)
|
|
2360
2358
|
}, props), {
|
|
@@ -2927,7 +2925,7 @@ function DrawerFooter(_a) {
|
|
|
2927
2925
|
"div",
|
|
2928
2926
|
__spreadValues({
|
|
2929
2927
|
"data-slot": "drawer-footer",
|
|
2930
|
-
className: cn("mt-auto flex flex-col gap-2 p-4", className)
|
|
2928
|
+
className: cn("mt-auto flex flex-col gap-2 p-4 [&>*]:w-full", className)
|
|
2931
2929
|
}, props)
|
|
2932
2930
|
);
|
|
2933
2931
|
}
|
|
@@ -3805,7 +3803,7 @@ function ItemSeparator(_a) {
|
|
|
3805
3803
|
);
|
|
3806
3804
|
}
|
|
3807
3805
|
var itemVariants = (0, import_class_variance_authority7.cva)(
|
|
3808
|
-
"group/item flex flex-wrap items-center rounded-md border border-transparent text-sm transition-colors duration-
|
|
3806
|
+
"group/item flex flex-wrap items-center rounded-md border border-transparent text-sm transition-colors duration-instant outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-secondary-hover",
|
|
3809
3807
|
{
|
|
3810
3808
|
variants: {
|
|
3811
3809
|
variant: {
|
|
@@ -3993,7 +3991,7 @@ var linkVariants = (0, import_class_variance_authority8.cva)(
|
|
|
3993
3991
|
{
|
|
3994
3992
|
variants: {
|
|
3995
3993
|
size: {
|
|
3996
|
-
lg: "text-
|
|
3994
|
+
lg: "text-base [&_svg:not([class*='size-'])]:size-4",
|
|
3997
3995
|
md: "text-sm [&_svg:not([class*='size-'])]:size-4",
|
|
3998
3996
|
sm: "text-xs [&_svg:not([class*='size-'])]:size-[14px]"
|
|
3999
3997
|
}
|
|
@@ -4424,7 +4422,7 @@ function NavigationMenuTrigger(_a) {
|
|
|
4424
4422
|
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
4425
4423
|
import_lucide_react14.ChevronDownIcon,
|
|
4426
4424
|
{
|
|
4427
|
-
className: "relative top-[1px] ml-1 size-3 transition duration-
|
|
4425
|
+
className: "relative top-[1px] ml-1 size-3 transition duration-slow group-data-[state=open]:rotate-180",
|
|
4428
4426
|
"aria-hidden": "true"
|
|
4429
4427
|
}
|
|
4430
4428
|
)
|
|
@@ -4444,7 +4442,7 @@ function NavigationMenuContent(_a) {
|
|
|
4444
4442
|
"data-slot": "navigation-menu-content",
|
|
4445
4443
|
className: cn(
|
|
4446
4444
|
"top-0 left-0 w-full p-2 pr-2.5 data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 data-[motion^=from-]:animate-in data-[motion^=from-]:fade-in data-[motion^=to-]:animate-out data-[motion^=to-]:fade-out md:absolute md:w-auto",
|
|
4447
|
-
"group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:border-border-subtle group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-
|
|
4445
|
+
"group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:border-border-subtle group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-base **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95",
|
|
4448
4446
|
className
|
|
4449
4447
|
)
|
|
4450
4448
|
}, props)
|
|
@@ -4886,10 +4884,12 @@ function SelectTrigger(_a) {
|
|
|
4886
4884
|
var _b = _a, {
|
|
4887
4885
|
className,
|
|
4888
4886
|
size = "default",
|
|
4887
|
+
readOnly = false,
|
|
4889
4888
|
children
|
|
4890
4889
|
} = _b, props = __objRest(_b, [
|
|
4891
4890
|
"className",
|
|
4892
4891
|
"size",
|
|
4892
|
+
"readOnly",
|
|
4893
4893
|
"children"
|
|
4894
4894
|
]);
|
|
4895
4895
|
return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
|
|
@@ -4897,14 +4897,16 @@ function SelectTrigger(_a) {
|
|
|
4897
4897
|
__spreadProps(__spreadValues({
|
|
4898
4898
|
"data-slot": "select-trigger",
|
|
4899
4899
|
"data-size": size,
|
|
4900
|
+
"data-readonly": readOnly ? "" : void 0,
|
|
4901
|
+
disabled: readOnly || props.disabled,
|
|
4900
4902
|
className: cn(
|
|
4901
|
-
"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-background 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 dark:aria-invalid:ring-destructive/40 [&_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",
|
|
4902
4904
|
className
|
|
4903
4905
|
)
|
|
4904
4906
|
}, props), {
|
|
4905
4907
|
children: [
|
|
4906
4908
|
children,
|
|
4907
|
-
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_radix_ui26.Select.Icon, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_lucide_react18.ChevronDownIcon, { className: "size-4 opacity-50" }) })
|
|
4909
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_radix_ui26.Select.Icon, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_lucide_react18.ChevronDownIcon, { className: cn("size-4", readOnly ? "opacity-30" : "opacity-50") }) })
|
|
4908
4910
|
]
|
|
4909
4911
|
})
|
|
4910
4912
|
);
|
|
@@ -5104,7 +5106,7 @@ function SheetContent(_a) {
|
|
|
5104
5106
|
__spreadProps(__spreadValues({
|
|
5105
5107
|
"data-slot": "sheet-content",
|
|
5106
5108
|
className: cn(
|
|
5107
|
-
"fixed z-50 flex flex-col gap-4 bg-background shadow-lg transition ease-
|
|
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",
|
|
5108
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",
|
|
5109
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",
|
|
5110
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",
|
|
@@ -5418,7 +5420,7 @@ function Sidebar(_a) {
|
|
|
5418
5420
|
{
|
|
5419
5421
|
"data-slot": "sidebar-gap",
|
|
5420
5422
|
className: cn(
|
|
5421
|
-
"relative w-(--sidebar-width) bg-transparent transition-[width] duration-
|
|
5423
|
+
"relative w-(--sidebar-width) bg-transparent transition-[width] duration-base ease-linear",
|
|
5422
5424
|
"group-data-[collapsible=offcanvas]:w-0",
|
|
5423
5425
|
"group-data-[side=right]:rotate-180",
|
|
5424
5426
|
variant === "floating" || variant === "inset" ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)"
|
|
@@ -5430,7 +5432,7 @@ function Sidebar(_a) {
|
|
|
5430
5432
|
__spreadProps(__spreadValues({
|
|
5431
5433
|
"data-slot": "sidebar-container",
|
|
5432
5434
|
className: cn(
|
|
5433
|
-
"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-
|
|
5435
|
+
"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-base ease-linear md:flex",
|
|
5434
5436
|
side === "left" ? "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]" : "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",
|
|
5435
5437
|
// Adjust the padding for floating and inset variants.
|
|
5436
5438
|
variant === "floating" || variant === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",
|
|
@@ -6205,51 +6207,68 @@ function Tabs(_a) {
|
|
|
6205
6207
|
);
|
|
6206
6208
|
}
|
|
6207
6209
|
var tabsListVariants = (0, import_class_variance_authority11.cva)(
|
|
6208
|
-
"group/tabs-list inline-flex w-fit items-center justify-center
|
|
6210
|
+
"group/tabs-list inline-flex w-fit items-center justify-center text-on-subtle group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col data-[variant=line]:rounded-none has-[[data-icon-position=top]]:h-auto",
|
|
6209
6211
|
{
|
|
6210
6212
|
variants: {
|
|
6211
6213
|
variant: {
|
|
6212
|
-
default: "bg-
|
|
6214
|
+
default: "bg-tabs",
|
|
6213
6215
|
line: "gap-1 bg-transparent"
|
|
6216
|
+
},
|
|
6217
|
+
size: {
|
|
6218
|
+
sm: "h-8 rounded-md p-[2px]",
|
|
6219
|
+
md: "h-10 rounded-lg p-1",
|
|
6220
|
+
lg: "h-12 rounded-xl p-1.5"
|
|
6214
6221
|
}
|
|
6215
6222
|
},
|
|
6216
6223
|
defaultVariants: {
|
|
6217
|
-
variant: "default"
|
|
6224
|
+
variant: "default",
|
|
6225
|
+
size: "md"
|
|
6218
6226
|
}
|
|
6219
6227
|
}
|
|
6220
6228
|
);
|
|
6221
6229
|
function TabsList(_a) {
|
|
6222
6230
|
var _b = _a, {
|
|
6223
6231
|
className,
|
|
6224
|
-
variant = "default"
|
|
6232
|
+
variant = "default",
|
|
6233
|
+
size = "md"
|
|
6225
6234
|
} = _b, props = __objRest(_b, [
|
|
6226
6235
|
"className",
|
|
6227
|
-
"variant"
|
|
6236
|
+
"variant",
|
|
6237
|
+
"size"
|
|
6228
6238
|
]);
|
|
6229
6239
|
return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
6230
6240
|
import_radix_ui32.Tabs.List,
|
|
6231
6241
|
__spreadValues({
|
|
6232
6242
|
"data-slot": "tabs-list",
|
|
6233
6243
|
"data-variant": variant,
|
|
6234
|
-
|
|
6244
|
+
"data-size": size,
|
|
6245
|
+
className: cn(tabsListVariants({ variant, size }), className)
|
|
6235
6246
|
}, props)
|
|
6236
6247
|
);
|
|
6237
6248
|
}
|
|
6238
6249
|
function TabsTrigger(_a) {
|
|
6239
6250
|
var _b = _a, {
|
|
6240
|
-
className
|
|
6251
|
+
className,
|
|
6252
|
+
iconPosition = "inline"
|
|
6241
6253
|
} = _b, props = __objRest(_b, [
|
|
6242
|
-
"className"
|
|
6254
|
+
"className",
|
|
6255
|
+
"iconPosition"
|
|
6243
6256
|
]);
|
|
6244
6257
|
return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
6245
6258
|
import_radix_ui32.Tabs.Trigger,
|
|
6246
6259
|
__spreadValues({
|
|
6247
6260
|
"data-slot": "tabs-trigger",
|
|
6261
|
+
"data-icon-position": iconPosition,
|
|
6248
6262
|
className: cn(
|
|
6249
|
-
"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-
|
|
6250
|
-
"group-data-[
|
|
6251
|
-
"data-[
|
|
6263
|
+
"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-3 py-1 text-sm font-normal whitespace-nowrap text-on-prominent/60 transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start hover:bg-secondary-hover hover:text-on-prominent focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 group-data-[variant=default]/tabs-list:data-[state=active]:shadow-none group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
6264
|
+
"group-data-[size=sm]/tabs-list:gap-1 group-data-[size=sm]/tabs-list:rounded-sm group-data-[size=sm]/tabs-list:px-2 group-data-[size=sm]/tabs-list:text-xs",
|
|
6265
|
+
"group-data-[size=lg]/tabs-list:gap-2 group-data-[size=lg]/tabs-list:rounded-lg group-data-[size=lg]/tabs-list:px-4 group-data-[size=lg]/tabs-list:text-base",
|
|
6266
|
+
"group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:hover:bg-transparent group-data-[variant=line]/tabs-list:hover:text-primary group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent group-data-[variant=line]/tabs-list:data-[state=active]:border-transparent",
|
|
6267
|
+
"data-[state=active]:bg-tabs-active data-[state=active]:border-transparent data-[state=active]:text-primary data-[state=active]:font-semibold",
|
|
6252
6268
|
"after:absolute after:bg-primary after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-[state=active]:after:opacity-100",
|
|
6269
|
+
iconPosition === "top" && "h-auto flex-col gap-1 py-2",
|
|
6270
|
+
iconPosition === "top" && "group-data-[size=sm]/tabs-list:gap-0.5 group-data-[size=sm]/tabs-list:py-1.5",
|
|
6271
|
+
iconPosition === "top" && "group-data-[size=lg]/tabs-list:gap-1.5 group-data-[size=lg]/tabs-list:py-2.5",
|
|
6253
6272
|
className
|
|
6254
6273
|
)
|
|
6255
6274
|
}, props)
|