@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.
Files changed (115) hide show
  1. package/README.md +30 -124
  2. package/dist/Stack.cjs +64 -0
  3. package/dist/Stack.cjs.map +1 -0
  4. package/dist/Stack.js +54 -0
  5. package/dist/Stack.js.map +1 -0
  6. package/dist/ThemeProvider.cjs +1886 -0
  7. package/dist/ThemeProvider.cjs.map +1 -0
  8. package/dist/ThemeProvider.d.cts +85 -0
  9. package/dist/ThemeProvider.d.cts.map +1 -0
  10. package/dist/ThemeProvider.d.ts +85 -0
  11. package/dist/ThemeProvider.d.ts.map +1 -0
  12. package/dist/ThemeProvider.js +1508 -0
  13. package/dist/ThemeProvider.js.map +1 -0
  14. package/dist/contexts/index.cjs +0 -60
  15. package/dist/contexts/index.d.cts +1 -23
  16. package/dist/contexts/index.d.ts +1 -23
  17. package/dist/contexts/index.js +1 -58
  18. package/dist/index.cjs +147 -72
  19. package/dist/index.d.cts +1009 -432
  20. package/dist/index.d.cts.map +1 -1
  21. package/dist/index.d.ts +1014 -437
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +6 -7
  24. package/dist/index2.d.cts +4 -16
  25. package/dist/index2.d.ts +4 -16
  26. package/dist/layouts/index.cjs +100 -12
  27. package/dist/layouts/index.cjs.map +1 -0
  28. package/dist/layouts/index.d.cts +70 -127
  29. package/dist/layouts/index.d.cts.map +1 -1
  30. package/dist/layouts/index.d.ts +70 -127
  31. package/dist/layouts/index.d.ts.map +1 -1
  32. package/dist/layouts/index.js +92 -2
  33. package/dist/layouts/index.js.map +1 -0
  34. package/dist/patterns/index.cjs +1004 -7254
  35. package/dist/patterns/index.cjs.map +1 -1
  36. package/dist/patterns/index.d.cts +381 -389
  37. package/dist/patterns/index.d.cts.map +1 -1
  38. package/dist/patterns/index.d.ts +378 -386
  39. package/dist/patterns/index.d.ts.map +1 -1
  40. package/dist/patterns/index.js +970 -7225
  41. package/dist/patterns/index.js.map +1 -1
  42. package/dist/primitives/index.cjs +135 -55
  43. package/dist/primitives/index.d.cts +3 -2
  44. package/dist/primitives/index.d.ts +3 -2
  45. package/dist/primitives/index.js +3 -5
  46. package/dist/primitives.cjs +3961 -1274
  47. package/dist/primitives.cjs.map +1 -1
  48. package/dist/primitives.js +3551 -1001
  49. package/dist/primitives.js.map +1 -1
  50. package/dist/styles/base.css +43 -0
  51. package/dist/styles/glass.css +75 -0
  52. package/dist/styles/index.css +43 -23
  53. package/dist/styles/semantic.css +107 -0
  54. package/dist/styles/theme.css +42 -24
  55. package/dist/styles/tokens/alpha.css +39 -0
  56. package/dist/styles/tokens/border-radius.css +17 -0
  57. package/dist/styles/tokens/chart-colors-dark.css +18 -0
  58. package/dist/styles/tokens/chart-colors-light.css +18 -0
  59. package/dist/styles/tokens/colors.css +251 -0
  60. package/dist/styles/tokens/mode-dark.css +101 -0
  61. package/dist/styles/tokens/mode-light.css +101 -0
  62. package/dist/styles/tokens/shadows.css +14 -0
  63. package/dist/styles/tokens/spacing.css +44 -0
  64. package/dist/styles/tokens/theme-bodhi.css +35 -0
  65. package/dist/styles/tokens/theme-slingshot.css +35 -0
  66. package/dist/styles/tokens/theme-sustain.css +35 -0
  67. package/dist/styles/tokens/typography.css +83 -0
  68. package/dist/utils.cjs +67 -0
  69. package/dist/utils.cjs.map +1 -0
  70. package/dist/utils.js +27 -0
  71. package/dist/utils.js.map +1 -0
  72. package/package.json +15 -41
  73. package/dist/AiChatPanel.cjs +0 -1603
  74. package/dist/AiChatPanel.cjs.map +0 -1
  75. package/dist/AiChatPanel.js +0 -1526
  76. package/dist/AiChatPanel.js.map +0 -1
  77. package/dist/BodhiLogo.cjs +0 -240
  78. package/dist/BodhiLogo.cjs.map +0 -1
  79. package/dist/BodhiLogo.js +0 -194
  80. package/dist/BodhiLogo.js.map +0 -1
  81. package/dist/Skeleton.cjs +0 -19
  82. package/dist/Skeleton.cjs.map +0 -1
  83. package/dist/Skeleton.js +0 -14
  84. package/dist/Skeleton.js.map +0 -1
  85. package/dist/SustainLogo.cjs +0 -415
  86. package/dist/SustainLogo.cjs.map +0 -1
  87. package/dist/SustainLogo.js +0 -378
  88. package/dist/SustainLogo.js.map +0 -1
  89. package/dist/contexts/index.cjs.map +0 -1
  90. package/dist/contexts/index.d.cts.map +0 -1
  91. package/dist/contexts/index.d.ts.map +0 -1
  92. package/dist/contexts/index.js.map +0 -1
  93. package/dist/index2.d.cts.map +0 -1
  94. package/dist/index2.d.ts.map +0 -1
  95. package/dist/layouts.cjs +0 -3245
  96. package/dist/layouts.cjs.map +0 -1
  97. package/dist/layouts.js +0 -3180
  98. package/dist/layouts.js.map +0 -1
  99. package/dist/styles/base/colors.css +0 -300
  100. package/dist/styles/base/component-tokens.css +0 -240
  101. package/dist/styles/base/elevation.css +0 -7
  102. package/dist/styles/base/fonts.css +0 -14
  103. package/dist/styles/base/global.css +0 -305
  104. package/dist/styles/base/radius.css +0 -22
  105. package/dist/styles/base/semantic-aliases.css +0 -53
  106. package/dist/styles/base/spacing.css +0 -33
  107. package/dist/styles/base/typography.css +0 -48
  108. package/dist/styles/generated/bodhi-vars.css +0 -34
  109. package/dist/styles/generated/dark.css +0 -87
  110. package/dist/styles/generated/light.css +0 -87
  111. package/dist/styles/generated/slingshot-vars.css +0 -34
  112. package/dist/styles/generated/sustain-vars.css +0 -34
  113. package/dist/styles/themes/bodhi.css +0 -166
  114. package/dist/styles/themes/slingshot.css +0 -144
  115. 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
+ }
@@ -1,32 +1,52 @@
1
1
  /* ============================================================
2
- @psnext/design-system — main CSS entry
3
- Import order matters: tokens before aliases before components.
2
+ @psnext/design-system — single CSS entry (shipped RAW as
3
+ `@psnext/design-system/styles`).
4
4
 
5
- Brand themes are NOT imported here import them separately:
6
- @import "@psnext/design-system/styles/themes/slingshot";
7
- @import "@psnext/design-system/styles/themes/bodhi";
8
- @import "@psnext/design-system/styles/themes/sustain";
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
- /* 1. Generated color tokens (requires `pnpm tokens:build` first) */
12
- @import "./generated/light.css";
13
- @import "./generated/dark.css";
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
- /* 2. Semantic aliases maps --bg-* / --content-* to --background / --foreground etc. */
16
- @import "./base/semantic-aliases.css";
38
+ /* ── Glass-morphism surface tints (per brand + mode) ──────── */
39
+ @import "./glass.css";
17
40
 
18
- /* 3. Raw color scale full palette referenced by component tokens */
19
- @import "./base/colors.css";
41
+ /* ── Semantic role aliases (shadcn/Radix names) ───────────── */
42
+ @import "./semantic.css";
20
43
 
21
- /* 4. Base tokens */
22
- @import "./base/fonts.css";
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
- /* 5. Component tokens badges, toasts, tabs, glass, etc. */
29
- @import "./base/component-tokens.css";
47
+ /* ── Base layer (suite-wide defaults) ─────────────────────── */
48
+ @import "./base.css";
30
49
 
31
- /* 6. Base reset + keyframes */
32
- @import "./base/global.css";
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
+ }
@@ -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
- Usage in a consuming app (or Storybook):
8
- @import "tailwindcss";
9
- @import "@psnext/design-system/styles"; // token vars
10
- @import "@psnext/design-system/styles/theme"; // this bridge
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 because the values reference other CSS vars
14
- that are reassigned at runtime by theme/brand switching.
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
- /* ── Surfaces ─────────────────────────────────────────── */
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 / navigation ─────────────────────────────── */
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
- /* ── Radius (derived from --radius token) ─────────────── */
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
- /* ── Animations (generate animate-* utilities; keyframes in global.css) ── */
62
- --animate-accordion-down: accordion-down 0.2s ease-out;
63
- --animate-accordion-up: accordion-up 0.2s ease-out;
64
- --animate-caret-blink: caret-blink 1.25s ease-out infinite;
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
+ }