@psnext/design-system 1.0.0 → 1.1.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/README.md +30 -124
- package/dist/Stack.cjs +64 -0
- package/dist/Stack.cjs.map +1 -0
- package/dist/Stack.js +54 -0
- package/dist/Stack.js.map +1 -0
- package/dist/ThemeProvider.cjs +1886 -0
- package/dist/ThemeProvider.cjs.map +1 -0
- package/dist/ThemeProvider.d.cts +85 -0
- package/dist/ThemeProvider.d.cts.map +1 -0
- package/dist/ThemeProvider.d.ts +85 -0
- package/dist/ThemeProvider.d.ts.map +1 -0
- package/dist/ThemeProvider.js +1508 -0
- package/dist/ThemeProvider.js.map +1 -0
- package/dist/contexts/index.cjs +0 -60
- package/dist/contexts/index.d.cts +1 -23
- package/dist/contexts/index.d.ts +1 -23
- package/dist/contexts/index.js +1 -58
- package/dist/index.cjs +147 -72
- package/dist/index.d.cts +1009 -432
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +1014 -437
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -7
- package/dist/index2.d.cts +4 -16
- package/dist/index2.d.ts +4 -16
- package/dist/layouts/index.cjs +100 -12
- package/dist/layouts/index.cjs.map +1 -0
- package/dist/layouts/index.d.cts +70 -127
- package/dist/layouts/index.d.cts.map +1 -1
- package/dist/layouts/index.d.ts +70 -127
- package/dist/layouts/index.d.ts.map +1 -1
- package/dist/layouts/index.js +92 -2
- package/dist/layouts/index.js.map +1 -0
- package/dist/patterns/index.cjs +1004 -7254
- package/dist/patterns/index.cjs.map +1 -1
- package/dist/patterns/index.d.cts +381 -389
- package/dist/patterns/index.d.cts.map +1 -1
- package/dist/patterns/index.d.ts +378 -386
- package/dist/patterns/index.d.ts.map +1 -1
- package/dist/patterns/index.js +970 -7225
- package/dist/patterns/index.js.map +1 -1
- package/dist/primitives/index.cjs +135 -55
- package/dist/primitives/index.d.cts +3 -2
- package/dist/primitives/index.d.ts +3 -2
- package/dist/primitives/index.js +3 -5
- package/dist/primitives.cjs +3961 -1274
- package/dist/primitives.cjs.map +1 -1
- package/dist/primitives.js +3551 -1001
- package/dist/primitives.js.map +1 -1
- package/dist/styles/base.css +43 -0
- package/dist/styles/glass.css +75 -0
- package/dist/styles/index.css +43 -23
- package/dist/styles/semantic.css +107 -0
- package/dist/styles/theme.css +42 -24
- package/dist/styles/tokens/alpha.css +39 -0
- package/dist/styles/tokens/border-radius.css +17 -0
- package/dist/styles/tokens/chart-colors-dark.css +18 -0
- package/dist/styles/tokens/chart-colors-light.css +18 -0
- package/dist/styles/tokens/colors.css +251 -0
- package/dist/styles/tokens/mode-dark.css +101 -0
- package/dist/styles/tokens/mode-light.css +101 -0
- package/dist/styles/tokens/shadows.css +14 -0
- package/dist/styles/tokens/spacing.css +44 -0
- package/dist/styles/tokens/theme-bodhi.css +35 -0
- package/dist/styles/tokens/theme-slingshot.css +35 -0
- package/dist/styles/tokens/theme-sustain.css +35 -0
- package/dist/styles/tokens/typography.css +83 -0
- package/dist/utils.cjs +67 -0
- package/dist/utils.cjs.map +1 -0
- package/dist/utils.js +27 -0
- package/dist/utils.js.map +1 -0
- package/package.json +15 -41
- package/dist/AiChatPanel.cjs +0 -1603
- package/dist/AiChatPanel.cjs.map +0 -1
- package/dist/AiChatPanel.js +0 -1526
- package/dist/AiChatPanel.js.map +0 -1
- package/dist/BodhiLogo.cjs +0 -240
- package/dist/BodhiLogo.cjs.map +0 -1
- package/dist/BodhiLogo.js +0 -194
- package/dist/BodhiLogo.js.map +0 -1
- package/dist/Skeleton.cjs +0 -19
- package/dist/Skeleton.cjs.map +0 -1
- package/dist/Skeleton.js +0 -14
- package/dist/Skeleton.js.map +0 -1
- package/dist/SustainLogo.cjs +0 -415
- package/dist/SustainLogo.cjs.map +0 -1
- package/dist/SustainLogo.js +0 -378
- package/dist/SustainLogo.js.map +0 -1
- package/dist/contexts/index.cjs.map +0 -1
- package/dist/contexts/index.d.cts.map +0 -1
- package/dist/contexts/index.d.ts.map +0 -1
- package/dist/contexts/index.js.map +0 -1
- package/dist/index2.d.cts.map +0 -1
- package/dist/index2.d.ts.map +0 -1
- package/dist/layouts.cjs +0 -3245
- package/dist/layouts.cjs.map +0 -1
- package/dist/layouts.js +0 -3180
- package/dist/layouts.js.map +0 -1
- package/dist/styles/base/colors.css +0 -300
- package/dist/styles/base/component-tokens.css +0 -240
- package/dist/styles/base/elevation.css +0 -7
- package/dist/styles/base/fonts.css +0 -14
- package/dist/styles/base/global.css +0 -305
- package/dist/styles/base/radius.css +0 -22
- package/dist/styles/base/semantic-aliases.css +0 -53
- package/dist/styles/base/spacing.css +0 -33
- package/dist/styles/base/typography.css +0 -48
- package/dist/styles/generated/bodhi-vars.css +0 -34
- package/dist/styles/generated/dark.css +0 -87
- package/dist/styles/generated/light.css +0 -87
- package/dist/styles/generated/slingshot-vars.css +0 -34
- package/dist/styles/generated/sustain-vars.css +0 -34
- package/dist/styles/themes/bodhi.css +0 -166
- package/dist/styles/themes/slingshot.css +0 -144
- package/dist/styles/themes/sustain.css +0 -130
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/* ============================================================
|
|
2
|
+
Base layer — opinionated defaults so every app in the suite
|
|
3
|
+
shares the same baseline (border color, focus outline, page
|
|
4
|
+
surface). Lives in @layer base, so component/app utilities still
|
|
5
|
+
override it per-element.
|
|
6
|
+
============================================================ */
|
|
7
|
+
|
|
8
|
+
@layer base {
|
|
9
|
+
* {
|
|
10
|
+
@apply border-border outline-ring/50;
|
|
11
|
+
}
|
|
12
|
+
body {
|
|
13
|
+
@apply bg-background text-foreground;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/* ── Skeleton shimmer (used by the Skeleton primitive) ────── */
|
|
18
|
+
@keyframes shimmer {
|
|
19
|
+
from {
|
|
20
|
+
background-position: -200% center;
|
|
21
|
+
}
|
|
22
|
+
to {
|
|
23
|
+
background-position: 200% center;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.skeleton-shimmer {
|
|
28
|
+
background: linear-gradient(90deg, var(--muted) 25%, var(--accent) 50%, var(--muted) 75%);
|
|
29
|
+
background-size: 200% 100%;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
33
|
+
.skeleton-shimmer {
|
|
34
|
+
animation: shimmer 1.6s ease-in-out infinite;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/* Reduced-motion fallback — static muted block, no animation */
|
|
39
|
+
@media (prefers-reduced-motion: reduce) {
|
|
40
|
+
.skeleton-shimmer {
|
|
41
|
+
background: var(--muted);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/* ============================================================
|
|
2
|
+
Glass-morphism surface tints — ported from the previous DS
|
|
3
|
+
(not in the Figma export). Used app-wide for glass panels and by
|
|
4
|
+
the Sheet `glass` overlay variant. Base in :root/.dark; brand
|
|
5
|
+
overrides per theme. Pair with `backdrop-blur-*`.
|
|
6
|
+
============================================================ */
|
|
7
|
+
|
|
8
|
+
:root {
|
|
9
|
+
--glass-heavy: rgba(255, 255, 255, 0.6);
|
|
10
|
+
--glass-strong: rgba(255, 255, 255, 0.6);
|
|
11
|
+
--glass-subtle: rgba(255, 255, 255, 0.2);
|
|
12
|
+
--glass-light: rgba(255, 255, 255, 0.4);
|
|
13
|
+
--glass-medium: rgba(255, 255, 255, 0.5);
|
|
14
|
+
/* Backdrop blur radius for glass surfaces (GlassSurface primitive). */
|
|
15
|
+
--glass-blur: 45px;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.dark {
|
|
19
|
+
--glass-heavy: rgba(31, 40, 50, 0.8);
|
|
20
|
+
--glass-strong: rgba(31, 40, 50, 0.8);
|
|
21
|
+
--glass-subtle: rgba(31, 40, 50, 0.3);
|
|
22
|
+
--glass-light: rgba(31, 40, 50, 0.5);
|
|
23
|
+
--glass-medium: rgba(55, 65, 81, 0.5);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/* ── Slingshot (white tint — matches base) ────────────────── */
|
|
27
|
+
.theme-slingshot {
|
|
28
|
+
--glass-heavy: rgba(255, 255, 255, 0.6);
|
|
29
|
+
--glass-strong: rgba(255, 255, 255, 0.6);
|
|
30
|
+
--glass-subtle: rgba(255, 255, 255, 0.2);
|
|
31
|
+
--glass-light: rgba(255, 255, 255, 0.4);
|
|
32
|
+
--glass-medium: rgba(255, 255, 255, 0.5);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.theme-slingshot.dark {
|
|
36
|
+
--glass-heavy: rgba(31, 40, 50, 0.8);
|
|
37
|
+
--glass-strong: rgba(31, 40, 50, 0.8);
|
|
38
|
+
--glass-subtle: rgba(31, 40, 50, 0.3);
|
|
39
|
+
--glass-light: rgba(31, 40, 50, 0.5);
|
|
40
|
+
--glass-medium: rgba(55, 65, 81, 0.5);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/* ── Bodhi (slate tint) ───────────────────────────────────── */
|
|
44
|
+
.theme-bodhi {
|
|
45
|
+
--glass-heavy: rgba(248, 250, 252, 0.8);
|
|
46
|
+
--glass-strong: rgba(248, 250, 252, 0.8);
|
|
47
|
+
--glass-subtle: rgba(248, 250, 252, 0.3);
|
|
48
|
+
--glass-light: rgba(248, 250, 252, 0.5);
|
|
49
|
+
--glass-medium: rgba(226, 232, 240, 0.5);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.theme-bodhi.dark {
|
|
53
|
+
--glass-heavy: rgba(30, 41, 59, 0.8);
|
|
54
|
+
--glass-strong: rgba(30, 41, 59, 0.8);
|
|
55
|
+
--glass-subtle: rgba(30, 41, 59, 0.3);
|
|
56
|
+
--glass-light: rgba(30, 41, 59, 0.5);
|
|
57
|
+
--glass-medium: rgba(51, 65, 85, 0.5);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/* ── Sustain (white tint — matches base) ──────────────────── */
|
|
61
|
+
.theme-sustain {
|
|
62
|
+
--glass-heavy: rgba(255, 255, 255, 0.6);
|
|
63
|
+
--glass-strong: rgba(255, 255, 255, 0.6);
|
|
64
|
+
--glass-subtle: rgba(255, 255, 255, 0.2);
|
|
65
|
+
--glass-light: rgba(255, 255, 255, 0.4);
|
|
66
|
+
--glass-medium: rgba(255, 255, 255, 0.5);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.theme-sustain.dark {
|
|
70
|
+
--glass-heavy: rgba(31, 40, 50, 0.8);
|
|
71
|
+
--glass-strong: rgba(31, 40, 50, 0.8);
|
|
72
|
+
--glass-subtle: rgba(31, 40, 50, 0.3);
|
|
73
|
+
--glass-light: rgba(31, 40, 50, 0.5);
|
|
74
|
+
--glass-medium: rgba(55, 65, 81, 0.5);
|
|
75
|
+
}
|
package/dist/styles/index.css
CHANGED
|
@@ -1,32 +1,52 @@
|
|
|
1
1
|
/* ============================================================
|
|
2
|
-
@psnext/design-system —
|
|
3
|
-
|
|
2
|
+
@psnext/design-system — single CSS entry (shipped RAW as
|
|
3
|
+
`@psnext/design-system/styles`).
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
We do NOT compile Tailwind here. The consuming app owns Tailwind
|
|
6
|
+
and compiles this together with its own build — one preflight,
|
|
7
|
+
one :root, no duplication:
|
|
8
|
+
|
|
9
|
+
@import "tailwindcss";
|
|
10
|
+
@import "@psnext/design-system/styles"; // this file (single import)
|
|
11
|
+
|
|
12
|
+
This file carries `@source` (below) so the app's Tailwind scans
|
|
13
|
+
our components automatically — no extra config on their side.
|
|
14
|
+
|
|
15
|
+
Token CSS is generated from Figma — see styles/tokens/ and
|
|
16
|
+
`pnpm tokens:css`.
|
|
9
17
|
============================================================ */
|
|
10
18
|
|
|
11
|
-
/*
|
|
12
|
-
@import "./
|
|
13
|
-
@import "./
|
|
19
|
+
/* ── Primitive scales ─────────────────────────────────────── */
|
|
20
|
+
@import "./tokens/colors.css";
|
|
21
|
+
@import "./tokens/alpha.css";
|
|
22
|
+
@import "./tokens/spacing.css";
|
|
23
|
+
@import "./tokens/border-radius.css";
|
|
24
|
+
@import "./tokens/shadows.css";
|
|
25
|
+
@import "./tokens/typography.css";
|
|
26
|
+
@import "./tokens/chart-colors-light.css";
|
|
27
|
+
@import "./tokens/chart-colors-dark.css";
|
|
28
|
+
|
|
29
|
+
/* ── Mode (light / dark) ──────────────────────────────────── */
|
|
30
|
+
@import "./tokens/mode-light.css";
|
|
31
|
+
@import "./tokens/mode-dark.css";
|
|
32
|
+
|
|
33
|
+
/* ── Brand themes (scoped to .theme-*) ────────────────────── */
|
|
34
|
+
@import "./tokens/theme-slingshot.css";
|
|
35
|
+
@import "./tokens/theme-bodhi.css";
|
|
36
|
+
@import "./tokens/theme-sustain.css";
|
|
14
37
|
|
|
15
|
-
/*
|
|
16
|
-
@import "./
|
|
38
|
+
/* ── Glass-morphism surface tints (per brand + mode) ──────── */
|
|
39
|
+
@import "./glass.css";
|
|
17
40
|
|
|
18
|
-
/*
|
|
19
|
-
@import "./
|
|
41
|
+
/* ── Semantic role aliases (shadcn/Radix names) ───────────── */
|
|
42
|
+
@import "./semantic.css";
|
|
20
43
|
|
|
21
|
-
/*
|
|
22
|
-
@import "./
|
|
23
|
-
@import "./base/typography.css";
|
|
24
|
-
@import "./base/spacing.css";
|
|
25
|
-
@import "./base/radius.css";
|
|
26
|
-
@import "./base/elevation.css";
|
|
44
|
+
/* ── Tailwind theme bridge (@custom-variant + @theme inline) ─ */
|
|
45
|
+
@import "./theme.css";
|
|
27
46
|
|
|
28
|
-
/*
|
|
29
|
-
@import "./base
|
|
47
|
+
/* ── Base layer (suite-wide defaults) ─────────────────────── */
|
|
48
|
+
@import "./base.css";
|
|
30
49
|
|
|
31
|
-
/*
|
|
32
|
-
|
|
50
|
+
/* Scan the design-system component source so the utility classes
|
|
51
|
+
they use are emitted into the compiled stylesheet. */
|
|
52
|
+
@source "../";
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/* ============================================================
|
|
2
|
+
Semantic role aliases — map the Figma mode tokens to the
|
|
3
|
+
shadcn/Radix role names that components consume.
|
|
4
|
+
|
|
5
|
+
Declared ONCE in :root. They reference the underlying mode
|
|
6
|
+
tokens (--bg-*, --content-*, …), so they automatically follow
|
|
7
|
+
`.dark` and brand `.theme-*` — those selectors redefine the
|
|
8
|
+
referenced vars, and CSS resolves var() at use time.
|
|
9
|
+
============================================================ */
|
|
10
|
+
|
|
11
|
+
:root {
|
|
12
|
+
/* ── Surfaces ─────────────────────────────────────────── */
|
|
13
|
+
--background: var(--bg-background);
|
|
14
|
+
--foreground: var(--content-foreground);
|
|
15
|
+
--card: var(--card-card-100);
|
|
16
|
+
--card-foreground: var(--card-card-foreground);
|
|
17
|
+
--popover: var(--popover-popover);
|
|
18
|
+
--popover-foreground: var(--popover-popover-foreground);
|
|
19
|
+
|
|
20
|
+
/* ── Interactive ──────────────────────────────────────── */
|
|
21
|
+
--primary: var(--bg-primary);
|
|
22
|
+
--primary-foreground: var(--content-primary-foreground);
|
|
23
|
+
--secondary: var(--bg-secondary);
|
|
24
|
+
--secondary-foreground: var(--content-secondary-foreground);
|
|
25
|
+
--muted: var(--bg-muted);
|
|
26
|
+
--muted-foreground: var(--content-muted-foreground);
|
|
27
|
+
--accent: var(--bg-accent);
|
|
28
|
+
--accent-foreground: var(--content-accent-foreground);
|
|
29
|
+
|
|
30
|
+
/* ── States ───────────────────────────────────────────── */
|
|
31
|
+
--destructive: var(--bg-destructive);
|
|
32
|
+
--destructive-foreground: var(--content-destructive-foreground);
|
|
33
|
+
|
|
34
|
+
/* ── UI structure ─────────────────────────────────────── */
|
|
35
|
+
--border: var(--border-border-2);
|
|
36
|
+
/* Field border must be visible against the white field fill (Figma), so it
|
|
37
|
+
resolves to a grey from the border ramp rather than the fill color. */
|
|
38
|
+
--input: var(--border-border-3);
|
|
39
|
+
--input-background: var(--bg-input);
|
|
40
|
+
--switch-background: var(--gray-200);
|
|
41
|
+
--overlay: var(--bg-backdrop);
|
|
42
|
+
--ring: var(--focus-ring);
|
|
43
|
+
|
|
44
|
+
/* ── Sidebar ──────────────────────────────────────────── */
|
|
45
|
+
--sidebar: var(--sidebar-sidebar);
|
|
46
|
+
--sidebar-foreground: var(--sidebar-sidebar-foreground);
|
|
47
|
+
--sidebar-primary: var(--sidebar-sidebar-primary);
|
|
48
|
+
--sidebar-primary-foreground: var(--sidebar-sidebar-primary-foreground);
|
|
49
|
+
--sidebar-accent: var(--sidebar-sidebar-accent);
|
|
50
|
+
--sidebar-accent-foreground: var(--sidebar-sidebar-accent-foreground);
|
|
51
|
+
--sidebar-border: var(--sidebar-sidebar-border);
|
|
52
|
+
--sidebar-ring: var(--sidebar-sidebar-ring);
|
|
53
|
+
|
|
54
|
+
/* ── Charts ───────────────────────────────────────────── */
|
|
55
|
+
--chart-1: var(--categorical-chart-1);
|
|
56
|
+
--chart-2: var(--categorical-chart-2);
|
|
57
|
+
--chart-3: var(--categorical-chart-3);
|
|
58
|
+
--chart-4: var(--categorical-chart-4);
|
|
59
|
+
--chart-5: var(--categorical-chart-5);
|
|
60
|
+
|
|
61
|
+
/* ── Component tokens ─────────────────────────────────── */
|
|
62
|
+
--progress-analyzing: var(--sky-200);
|
|
63
|
+
--progress-ingesting: var(--orange-200);
|
|
64
|
+
--logo-accent: var(--white);
|
|
65
|
+
|
|
66
|
+
/* Gradient heading fill (Heading `gradient` variant). */
|
|
67
|
+
--gradient-heading-from: var(--sky-600);
|
|
68
|
+
--gradient-heading-to: var(--red-500);
|
|
69
|
+
|
|
70
|
+
/* Page background ambient gradient stops (PageBackground layout). The middle
|
|
71
|
+
stop is the brand tint, overridden per `.theme-*` + mode; edges are neutral.
|
|
72
|
+
The PageBackground component composes the radial-gradient from these so the
|
|
73
|
+
vars resolve in the element's theme scope (composing here in :root would
|
|
74
|
+
freeze the value and break theme overrides via inheritance). */
|
|
75
|
+
--page-gradient-edge: var(--slate-200);
|
|
76
|
+
--page-gradient-mid: var(--red-200);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.dark {
|
|
80
|
+
--progress-analyzing: var(--sky-800);
|
|
81
|
+
--progress-ingesting: var(--orange-800);
|
|
82
|
+
--logo-accent: var(--gray-200);
|
|
83
|
+
|
|
84
|
+
--page-gradient-edge: var(--gray-950);
|
|
85
|
+
--page-gradient-mid: var(--red-950);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/* Brand-aware page gradient: the middle stop is each brand's secondary tint. */
|
|
89
|
+
.theme-slingshot {
|
|
90
|
+
--page-gradient-mid: var(--red-200);
|
|
91
|
+
}
|
|
92
|
+
.theme-bodhi {
|
|
93
|
+
--page-gradient-mid: var(--blue-300);
|
|
94
|
+
}
|
|
95
|
+
.theme-sustain {
|
|
96
|
+
--page-gradient-mid: var(--indigo-300);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.theme-slingshot.dark {
|
|
100
|
+
--page-gradient-mid: var(--red-950);
|
|
101
|
+
}
|
|
102
|
+
.theme-bodhi.dark {
|
|
103
|
+
--page-gradient-mid: var(--blue-950);
|
|
104
|
+
}
|
|
105
|
+
.theme-sustain.dark {
|
|
106
|
+
--page-gradient-mid: var(--indigo-950);
|
|
107
|
+
}
|
package/dist/styles/theme.css
CHANGED
|
@@ -1,29 +1,30 @@
|
|
|
1
1
|
/* ============================================================
|
|
2
|
-
@psnext/design-system — Tailwind v4 theme bridge
|
|
3
|
-
Maps design-system token CSS vars to Tailwind utility names so
|
|
4
|
-
semantic utilities (bg-primary, text-muted-foreground, ring-ring,
|
|
5
|
-
border-input, …) resolve to our tokens and react to theme/brand.
|
|
2
|
+
@psnext/design-system — Tailwind v4 theme bridge.
|
|
6
3
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
@source "../node_modules/@psnext/design-system"; // scan DS classes
|
|
4
|
+
Maps design-system vars to Tailwind utility namespaces so
|
|
5
|
+
semantic utilities (bg-primary, text-muted-foreground,
|
|
6
|
+
border-border, rounded-lg, shadow-md, …) resolve to our tokens
|
|
7
|
+
and react to light/dark + brand switching.
|
|
12
8
|
|
|
13
|
-
`inline` is required
|
|
14
|
-
|
|
9
|
+
`inline` is required: the values reference other CSS vars that
|
|
10
|
+
are reassigned at runtime by .dark / .theme-* selectors.
|
|
11
|
+
|
|
12
|
+
Imported by a consuming app AFTER `@import "tailwindcss"` and the
|
|
13
|
+
token/semantic vars (see styles/index.css).
|
|
15
14
|
============================================================ */
|
|
16
15
|
|
|
16
|
+
/* Class-based dark mode (.dark) instead of OS prefers-color-scheme, so the
|
|
17
|
+
`.dark` selector our mode tokens use also drives `dark:` utilities. */
|
|
18
|
+
@custom-variant dark (&:where(.dark, .dark *));
|
|
19
|
+
|
|
17
20
|
@theme inline {
|
|
18
|
-
/* ──
|
|
21
|
+
/* ── Semantic colors (→ bg-*, text-*, border-*, ring-*) ── */
|
|
19
22
|
--color-background: var(--background);
|
|
20
23
|
--color-foreground: var(--foreground);
|
|
21
24
|
--color-card: var(--card);
|
|
22
25
|
--color-card-foreground: var(--card-foreground);
|
|
23
26
|
--color-popover: var(--popover);
|
|
24
27
|
--color-popover-foreground: var(--popover-foreground);
|
|
25
|
-
|
|
26
|
-
/* ── Interactive ──────────────────────────────────────── */
|
|
27
28
|
--color-primary: var(--primary);
|
|
28
29
|
--color-primary-foreground: var(--primary-foreground);
|
|
29
30
|
--color-secondary: var(--secondary);
|
|
@@ -32,17 +33,15 @@
|
|
|
32
33
|
--color-muted-foreground: var(--muted-foreground);
|
|
33
34
|
--color-accent: var(--accent);
|
|
34
35
|
--color-accent-foreground: var(--accent-foreground);
|
|
35
|
-
|
|
36
|
-
/* ── States ───────────────────────────────────────────── */
|
|
37
36
|
--color-destructive: var(--destructive);
|
|
38
37
|
--color-destructive-foreground: var(--destructive-foreground);
|
|
39
|
-
|
|
40
|
-
/* ── UI structure ─────────────────────────────────────── */
|
|
41
38
|
--color-border: var(--border);
|
|
42
39
|
--color-input: var(--input);
|
|
40
|
+
--color-switch-background: var(--switch-background);
|
|
41
|
+
--color-input-background: var(--input-background);
|
|
43
42
|
--color-ring: var(--ring);
|
|
44
43
|
|
|
45
|
-
/* ── Sidebar
|
|
44
|
+
/* ── Sidebar ──────────────────────────────────────────── */
|
|
46
45
|
--color-sidebar: var(--sidebar);
|
|
47
46
|
--color-sidebar-foreground: var(--sidebar-foreground);
|
|
48
47
|
--color-sidebar-primary: var(--sidebar-primary);
|
|
@@ -52,14 +51,33 @@
|
|
|
52
51
|
--color-sidebar-border: var(--sidebar-border);
|
|
53
52
|
--color-sidebar-ring: var(--sidebar-ring);
|
|
54
53
|
|
|
55
|
-
/* ──
|
|
54
|
+
/* ── Charts ───────────────────────────────────────────── */
|
|
55
|
+
--color-chart-1: var(--chart-1);
|
|
56
|
+
--color-chart-2: var(--chart-2);
|
|
57
|
+
--color-chart-3: var(--chart-3);
|
|
58
|
+
--color-chart-4: var(--chart-4);
|
|
59
|
+
--color-chart-5: var(--chart-5);
|
|
60
|
+
|
|
61
|
+
/* ── Radius (→ rounded-* utilities) ───────────────────── */
|
|
62
|
+
--radius-xs: var(--rounded-xs);
|
|
56
63
|
--radius-sm: var(--rounded-sm);
|
|
57
64
|
--radius-md: var(--rounded-md);
|
|
58
65
|
--radius-lg: var(--rounded-lg);
|
|
59
66
|
--radius-xl: var(--rounded-xl);
|
|
67
|
+
--radius-2xl: var(--rounded-2xl);
|
|
68
|
+
--radius-3xl: var(--rounded-3xl);
|
|
69
|
+
|
|
70
|
+
/* ── Shadows (→ shadow-* utilities) ───────────────────── */
|
|
71
|
+
--shadow-2xs: var(--shadow-2xs);
|
|
72
|
+
--shadow-xs: var(--shadow-xs);
|
|
73
|
+
--shadow-sm: var(--shadow-sm);
|
|
74
|
+
--shadow-md: var(--shadow-md);
|
|
75
|
+
--shadow-lg: var(--shadow-lg);
|
|
76
|
+
--shadow-xl: var(--shadow-xl);
|
|
77
|
+
--shadow-2xl: var(--shadow-2xl);
|
|
60
78
|
|
|
61
|
-
/* ──
|
|
62
|
-
--
|
|
63
|
-
--
|
|
64
|
-
--
|
|
79
|
+
/* ── Font families (→ font-sans / font-heading / font-mono) ── */
|
|
80
|
+
--font-sans: var(--font-definitions-font-family-body);
|
|
81
|
+
--font-heading: var(--font-definitions-font-family-headings);
|
|
82
|
+
--font-mono: var(--font-definitions-font-family-monospace);
|
|
65
83
|
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GENERATED by Style Dictionary (style-dictionary.config.mjs) — do not edit by hand.
|
|
3
|
+
* Re-run `pnpm tokens:css` after re-exporting tokens from Figma.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
:root {
|
|
7
|
+
--white-alpha-0: rgb(255 255 255 / 0);
|
|
8
|
+
--white-alpha-001: rgb(255 255 255 / 0.0001);
|
|
9
|
+
--white-alpha-333: rgb(255 255 255 / 0.0333);
|
|
10
|
+
--white-alpha-5: rgb(255 255 255 / 0.05);
|
|
11
|
+
--white-alpha-10: rgb(255 255 255 / 0.1);
|
|
12
|
+
--white-alpha-15: rgb(255 255 255 / 0.15);
|
|
13
|
+
--white-alpha-20: rgb(255 255 255 / 0.2);
|
|
14
|
+
--white-alpha-30: rgb(255 255 255 / 0.3);
|
|
15
|
+
--white-alpha-40: rgb(255 255 255 / 0.4);
|
|
16
|
+
--white-alpha-50: rgb(255 255 255 / 0.5);
|
|
17
|
+
--white-alpha-60: rgb(255 255 255 / 0.6);
|
|
18
|
+
--white-alpha-70: rgb(255 255 255 / 0.7);
|
|
19
|
+
--white-alpha-80: rgb(255 255 255 / 0.8);
|
|
20
|
+
--white-alpha-90: rgb(255 255 255 / 0.9);
|
|
21
|
+
--white-alpha-95: rgb(255 255 255 / 0.95);
|
|
22
|
+
--white-alpha-100: #ffffff;
|
|
23
|
+
--black-alpha-0: rgb(31 40 50 / 0);
|
|
24
|
+
--black-alpha-001: rgb(31 40 50 / 0.0001);
|
|
25
|
+
--black-alpha-333: rgb(31 40 50 / 0.0333);
|
|
26
|
+
--black-alpha-5: rgb(31 40 50 / 0.05);
|
|
27
|
+
--black-alpha-10: rgb(31 40 50 / 0.1);
|
|
28
|
+
--black-alpha-15: rgb(31 40 50 / 0.15);
|
|
29
|
+
--black-alpha-20: rgb(31 40 50 / 0.2);
|
|
30
|
+
--black-alpha-30: rgb(31 40 50 / 0.3);
|
|
31
|
+
--black-alpha-40: rgb(31 40 50 / 0.4);
|
|
32
|
+
--black-alpha-50: rgb(31 40 50 / 0.5);
|
|
33
|
+
--black-alpha-60: rgb(31 40 50 / 0.6);
|
|
34
|
+
--black-alpha-70: rgb(31 40 50 / 0.7);
|
|
35
|
+
--black-alpha-80: rgb(31 40 50 / 0.8);
|
|
36
|
+
--black-alpha-90: rgb(31 40 50 / 0.9);
|
|
37
|
+
--black-alpha-95: rgb(31 40 50 / 0.95);
|
|
38
|
+
--black-alpha-100: #1f2832;
|
|
39
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GENERATED by Style Dictionary (style-dictionary.config.mjs) — do not edit by hand.
|
|
3
|
+
* Re-run `pnpm tokens:css` after re-exporting tokens from Figma.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
:root {
|
|
7
|
+
--rounded-none: 0;
|
|
8
|
+
--rounded-xs: 2px;
|
|
9
|
+
--rounded-sm: 4px;
|
|
10
|
+
--rounded-md: 6px;
|
|
11
|
+
--rounded-lg: 8px;
|
|
12
|
+
--radius: 10px;
|
|
13
|
+
--rounded-xl: 12px;
|
|
14
|
+
--rounded-2xl: 16px;
|
|
15
|
+
--rounded-3xl: 24px;
|
|
16
|
+
--rounded-full: 9999px;
|
|
17
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GENERATED by Style Dictionary (style-dictionary.config.mjs) — do not edit by hand.
|
|
3
|
+
* Re-run `pnpm tokens:css` after re-exporting tokens from Figma.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
.dark {
|
|
7
|
+
--categorical-chart-1: #1447e6;
|
|
8
|
+
--categorical-chart-2: #00bc7d;
|
|
9
|
+
--categorical-chart-3: #fd9a00;
|
|
10
|
+
--categorical-chart-4: #ad46ff;
|
|
11
|
+
--categorical-chart-5: #ff2056;
|
|
12
|
+
--sentiment-positive: #00bc7d;
|
|
13
|
+
--sentiment-negative: #ff2056;
|
|
14
|
+
--shades-fill: rgb(71 93 117 / 0.7);
|
|
15
|
+
--shades-stroke: #8ec5ff;
|
|
16
|
+
--shades-fill-2: rgb(31 65 118 / 0.7);
|
|
17
|
+
--shades-stroke-2: #3f8dff;
|
|
18
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GENERATED by Style Dictionary (style-dictionary.config.mjs) — do not edit by hand.
|
|
3
|
+
* Re-run `pnpm tokens:css` after re-exporting tokens from Figma.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
:root {
|
|
7
|
+
--categorical-chart-1: #f54a00;
|
|
8
|
+
--categorical-chart-2: #009689;
|
|
9
|
+
--categorical-chart-3: #104e64;
|
|
10
|
+
--categorical-chart-4: #ffb900;
|
|
11
|
+
--categorical-chart-5: #fe9a00;
|
|
12
|
+
--sentiment-positive: #009689;
|
|
13
|
+
--sentiment-negative: #f54a00;
|
|
14
|
+
--shades-fill: rgb(191 222 255 / 0.7);
|
|
15
|
+
--shades-stroke: #8ec5ff;
|
|
16
|
+
--shades-fill-2: rgb(170 204 255 / 0.7);
|
|
17
|
+
--shades-stroke-2: #3f8dff;
|
|
18
|
+
}
|