@psnext/design-system 1.0.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 (81) hide show
  1. package/README.md +126 -0
  2. package/dist/AiChatPanel.cjs +1603 -0
  3. package/dist/AiChatPanel.cjs.map +1 -0
  4. package/dist/AiChatPanel.js +1526 -0
  5. package/dist/AiChatPanel.js.map +1 -0
  6. package/dist/BodhiLogo.cjs +240 -0
  7. package/dist/BodhiLogo.cjs.map +1 -0
  8. package/dist/BodhiLogo.js +194 -0
  9. package/dist/BodhiLogo.js.map +1 -0
  10. package/dist/Skeleton.cjs +19 -0
  11. package/dist/Skeleton.cjs.map +1 -0
  12. package/dist/Skeleton.js +14 -0
  13. package/dist/Skeleton.js.map +1 -0
  14. package/dist/SustainLogo.cjs +415 -0
  15. package/dist/SustainLogo.cjs.map +1 -0
  16. package/dist/SustainLogo.js +378 -0
  17. package/dist/SustainLogo.js.map +1 -0
  18. package/dist/contexts/index.cjs +60 -0
  19. package/dist/contexts/index.cjs.map +1 -0
  20. package/dist/contexts/index.d.cts +23 -0
  21. package/dist/contexts/index.d.cts.map +1 -0
  22. package/dist/contexts/index.d.ts +23 -0
  23. package/dist/contexts/index.d.ts.map +1 -0
  24. package/dist/contexts/index.js +58 -0
  25. package/dist/contexts/index.js.map +1 -0
  26. package/dist/index.cjs +273 -0
  27. package/dist/index.d.cts +1440 -0
  28. package/dist/index.d.cts.map +1 -0
  29. package/dist/index.d.ts +1440 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +7 -0
  32. package/dist/index2.d.cts +16 -0
  33. package/dist/index2.d.cts.map +1 -0
  34. package/dist/index2.d.ts +16 -0
  35. package/dist/index2.d.ts.map +1 -0
  36. package/dist/layouts/index.cjs +13 -0
  37. package/dist/layouts/index.d.cts +133 -0
  38. package/dist/layouts/index.d.cts.map +1 -0
  39. package/dist/layouts/index.d.ts +133 -0
  40. package/dist/layouts/index.d.ts.map +1 -0
  41. package/dist/layouts/index.js +2 -0
  42. package/dist/layouts.cjs +3245 -0
  43. package/dist/layouts.cjs.map +1 -0
  44. package/dist/layouts.js +3180 -0
  45. package/dist/layouts.js.map +1 -0
  46. package/dist/patterns/index.cjs +7375 -0
  47. package/dist/patterns/index.cjs.map +1 -0
  48. package/dist/patterns/index.d.cts +418 -0
  49. package/dist/patterns/index.d.cts.map +1 -0
  50. package/dist/patterns/index.d.ts +418 -0
  51. package/dist/patterns/index.d.ts.map +1 -0
  52. package/dist/patterns/index.js +7344 -0
  53. package/dist/patterns/index.js.map +1 -0
  54. package/dist/primitives/index.cjs +256 -0
  55. package/dist/primitives/index.d.cts +2 -0
  56. package/dist/primitives/index.d.ts +2 -0
  57. package/dist/primitives/index.js +5 -0
  58. package/dist/primitives.cjs +4292 -0
  59. package/dist/primitives.cjs.map +1 -0
  60. package/dist/primitives.js +2807 -0
  61. package/dist/primitives.js.map +1 -0
  62. package/dist/styles/base/colors.css +300 -0
  63. package/dist/styles/base/component-tokens.css +240 -0
  64. package/dist/styles/base/elevation.css +7 -0
  65. package/dist/styles/base/fonts.css +14 -0
  66. package/dist/styles/base/global.css +305 -0
  67. package/dist/styles/base/radius.css +22 -0
  68. package/dist/styles/base/semantic-aliases.css +53 -0
  69. package/dist/styles/base/spacing.css +33 -0
  70. package/dist/styles/base/typography.css +48 -0
  71. package/dist/styles/generated/bodhi-vars.css +34 -0
  72. package/dist/styles/generated/dark.css +87 -0
  73. package/dist/styles/generated/light.css +87 -0
  74. package/dist/styles/generated/slingshot-vars.css +34 -0
  75. package/dist/styles/generated/sustain-vars.css +34 -0
  76. package/dist/styles/index.css +32 -0
  77. package/dist/styles/theme.css +65 -0
  78. package/dist/styles/themes/bodhi.css +166 -0
  79. package/dist/styles/themes/slingshot.css +144 -0
  80. package/dist/styles/themes/sustain.css +130 -0
  81. package/package.json +131 -0
@@ -0,0 +1,305 @@
1
+ /* ============================================================
2
+ Global Base Styles
3
+ ============================================================ */
4
+
5
+ /* Radial gradient background (applied by themes) */
6
+ body::before {
7
+ content: "";
8
+ position: fixed;
9
+ top: 0;
10
+ left: 0;
11
+ width: 100%;
12
+ height: 100%;
13
+ z-index: -1;
14
+ background: var(--radial-gradient-bg);
15
+ pointer-events: none;
16
+ }
17
+
18
+ body {
19
+ position: relative;
20
+ }
21
+
22
+ /* Hide scrollbars while preserving scroll */
23
+ * {
24
+ scrollbar-width: none;
25
+ -ms-overflow-style: none;
26
+ }
27
+
28
+ *::-webkit-scrollbar {
29
+ display: none;
30
+ }
31
+
32
+ main,
33
+ .content-wrapper {
34
+ position: relative;
35
+ z-index: 1;
36
+ }
37
+
38
+ /* Reduce motion */
39
+ @media (prefers-reduced-motion: reduce) {
40
+ body::before {
41
+ animation: none;
42
+ transition: none;
43
+ }
44
+ }
45
+
46
+ /* High contrast */
47
+ @media (prefers-contrast: high) {
48
+ body::before {
49
+ opacity: 0.3;
50
+ }
51
+ }
52
+
53
+ /* ── Keyframes ─────────────────────────────────────────── */
54
+
55
+ @keyframes hierarchyHighlightPulse {
56
+ 0% {
57
+ box-shadow: 0 0 0 0 var(--hierarchy-highlight-glow, rgba(99, 102, 241, 0.45));
58
+ }
59
+ 40% {
60
+ box-shadow: 0 0 0 4px var(--hierarchy-highlight-glow, rgba(99, 102, 241, 0.25));
61
+ }
62
+ 100% {
63
+ box-shadow: 0 0 0 0 var(--hierarchy-highlight-glow, rgba(99, 102, 241, 0));
64
+ }
65
+ }
66
+
67
+ @keyframes hierarchyExpandIn {
68
+ from {
69
+ opacity: 0;
70
+ max-height: 0;
71
+ transform: translateY(-8px);
72
+ }
73
+ to {
74
+ opacity: 1;
75
+ max-height: 200px;
76
+ transform: translateY(0);
77
+ }
78
+ }
79
+
80
+ @keyframes typingDot {
81
+ 0%,
82
+ 60%,
83
+ 100% {
84
+ opacity: 0.3;
85
+ transform: translateY(0);
86
+ }
87
+ 30% {
88
+ opacity: 1;
89
+ transform: translateY(-3px);
90
+ }
91
+ }
92
+
93
+ @property --chat-border-angle {
94
+ syntax: "<angle>";
95
+ initial-value: 0deg;
96
+ inherits: false;
97
+ }
98
+
99
+ @keyframes chatBorderSpin {
100
+ from {
101
+ --chat-border-angle: 0deg;
102
+ }
103
+ to {
104
+ --chat-border-angle: 360deg;
105
+ }
106
+ }
107
+
108
+ @keyframes chatBorderGlow {
109
+ 0%,
110
+ 100% {
111
+ box-shadow: 0 0 12px 1px var(--chat-glow-shadow), 0 0 24px 2px var(--chat-glow-shadow-outer);
112
+ }
113
+ 50% {
114
+ box-shadow: 0 0 20px 4px var(--chat-glow-shadow), 0 0 40px 8px var(--chat-glow-shadow-outer);
115
+ }
116
+ }
117
+
118
+ .chat-input-glow-active {
119
+ animation: chatBorderGlow 2s ease-in-out infinite;
120
+ }
121
+
122
+ .chat-input-glow-active::after {
123
+ content: "";
124
+ position: absolute;
125
+ inset: 0;
126
+ border-radius: inherit;
127
+ border: 2px solid transparent;
128
+ background: conic-gradient(
129
+ from var(--chat-border-angle),
130
+ var(--chat-glow-1),
131
+ var(--chat-glow-2),
132
+ var(--chat-glow-3),
133
+ var(--chat-glow-2),
134
+ var(--chat-glow-1)
135
+ )
136
+ border-box;
137
+ -webkit-mask: linear-gradient(#fff 0 0) padding-box, linear-gradient(#fff 0 0) border-box;
138
+ -webkit-mask-composite: xor;
139
+ mask: linear-gradient(#fff 0 0) padding-box, linear-gradient(#fff 0 0) border-box;
140
+ mask-composite: exclude;
141
+ animation: chatBorderSpin 3s linear infinite;
142
+ pointer-events: none;
143
+ }
144
+
145
+ /* ─────────────────────────────────────────────────────────────
146
+ Micro-interactions — Step 1: Global transition defaults
147
+ Applied only when the user has not requested reduced motion.
148
+ All values use short durations (150ms) so they feel snappy,
149
+ not sluggish. Components can override via inline styles.
150
+ ───────────────────────────────────────────────────────────── */
151
+ @media (prefers-reduced-motion: no-preference) {
152
+ button,
153
+ [role="button"],
154
+ a,
155
+ input,
156
+ select,
157
+ textarea,
158
+ label[for] {
159
+ transition:
160
+ background-color 150ms ease,
161
+ color 150ms ease,
162
+ border-color 150ms ease,
163
+ box-shadow 150ms ease,
164
+ opacity 150ms ease,
165
+ transform 150ms ease;
166
+ }
167
+
168
+ /* Active / press feedback — subtle scale-down on click */
169
+ button:active,
170
+ [role="button"]:active {
171
+ transform: scale(0.97);
172
+ }
173
+ }
174
+
175
+ /* ─────────────────────────────────────────────────────────────
176
+ Micro-interactions — Step 3: Page transition (fade + rise)
177
+ Re-triggers every time .animate-page-enter is mounted.
178
+ Skipped when user prefers reduced motion.
179
+ ───────────────────────────────────────────────────────────── */
180
+ @keyframes pageEnter {
181
+ from {
182
+ opacity: 0;
183
+ transform: translateY(6px);
184
+ }
185
+ to {
186
+ opacity: 1;
187
+ transform: translateY(0);
188
+ }
189
+ }
190
+
191
+ @media (prefers-reduced-motion: no-preference) {
192
+ .animate-page-enter {
193
+ animation: pageEnter 200ms ease-out both;
194
+ }
195
+ }
196
+
197
+ /* ─────────────────────────────────────────────────────────────
198
+ Micro-interactions — Nav stagger: items appear top → bottom
199
+ Each item gets an index-based delay via inline style.
200
+ The animation is short (180ms) and subtle (8px rise + fade).
201
+ Skipped for reduced-motion users.
202
+ ───────────────────────────────────────────────────────────── */
203
+ @keyframes navItemEnter {
204
+ from {
205
+ opacity: 0;
206
+ transform: translateY(-6px);
207
+ }
208
+ to {
209
+ opacity: 1;
210
+ transform: translateY(0);
211
+ }
212
+ }
213
+
214
+ @media (prefers-reduced-motion: no-preference) {
215
+ .nav-item-enter {
216
+ animation: navItemEnter 180ms ease-out both;
217
+ }
218
+ }
219
+
220
+ /* ─────────────────────────────────────────────────────────────
221
+ Micro-interactions — Step 6: Drawer panel transition
222
+ Replaces the generic `ease-out` on all drawer panels with a
223
+ spring-like cubic-bezier that starts fast and decelerates
224
+ naturally — more polished than the default browser ease-out.
225
+ Reduced-motion: falls back to no transform transition.
226
+ ───────────────────────────────────────────────────────────── */
227
+ .drawer-panel {
228
+ transition-property: transform;
229
+ transition-duration: 280ms;
230
+ transition-timing-function: cubic-bezier(0.22, 1, 0.36, 1);
231
+ }
232
+
233
+ @media (prefers-reduced-motion: reduce) {
234
+ .drawer-panel {
235
+ transition: none;
236
+ }
237
+ }
238
+
239
+ /* ─────────────────────────────────────────────────────────────
240
+ Micro-interactions — Step 5: Skeleton shimmer
241
+ Replaces the default Tailwind animate-pulse with a directional
242
+ gradient sweep. Uses var(--muted) and var(--accent) so it
243
+ automatically adapts to light / dark mode.
244
+ ───────────────────────────────────────────────────────────── */
245
+ @keyframes shimmer {
246
+ from {
247
+ background-position: -200% center;
248
+ }
249
+ to {
250
+ background-position: 200% center;
251
+ }
252
+ }
253
+
254
+ .skeleton-shimmer {
255
+ background: linear-gradient(90deg, var(--muted) 25%, var(--accent) 50%, var(--muted) 75%);
256
+ background-size: 200% 100%;
257
+ }
258
+
259
+ @media (prefers-reduced-motion: no-preference) {
260
+ .skeleton-shimmer {
261
+ animation: shimmer 1.6s ease-in-out infinite;
262
+ }
263
+ }
264
+
265
+ /* Reduced-motion fallback — static muted block, no animation */
266
+ @media (prefers-reduced-motion: reduce) {
267
+ .skeleton-shimmer {
268
+ background: var(--muted);
269
+ }
270
+ }
271
+
272
+ /* ─────────────────────────────────────────────────────────────
273
+ Radix Accordion open/close — drives `animate-accordion-down/up`
274
+ utilities (mapped in theme.css) used by the Accordion primitive.
275
+ ───────────────────────────────────────────────────────────── */
276
+ @keyframes accordion-down {
277
+ from {
278
+ height: 0;
279
+ }
280
+ to {
281
+ height: var(--radix-accordion-content-height);
282
+ }
283
+ }
284
+
285
+ @keyframes accordion-up {
286
+ from {
287
+ height: var(--radix-accordion-content-height);
288
+ }
289
+ to {
290
+ height: 0;
291
+ }
292
+ }
293
+
294
+ /* Blinking caret for the InputOTP primitive (`animate-caret-blink`). */
295
+ @keyframes caret-blink {
296
+ 0%,
297
+ 70%,
298
+ 100% {
299
+ opacity: 1;
300
+ }
301
+ 20%,
302
+ 50% {
303
+ opacity: 0;
304
+ }
305
+ }
@@ -0,0 +1,22 @@
1
+ /* ============================================================
2
+ Border Radius Tokens
3
+ Source: Figma border radius variable set
4
+ ============================================================ */
5
+
6
+ :root {
7
+ --rounded-none: 0px;
8
+ --rounded-xs: 2px;
9
+ --rounded-sm: 4px;
10
+ --rounded-md: 6px;
11
+ --rounded-lg: 8px;
12
+ --radius: 10px; /* default system radius */
13
+ --rounded-xl: 12px;
14
+ --rounded-2xl: 16px;
15
+ --rounded-3xl: 24px;
16
+ --rounded-full: 9999px;
17
+
18
+ /* Component-specific */
19
+ --radius-button: 8px;
20
+ --radius-card: 8px;
21
+ --radius-dialog: 10px;
22
+ }
@@ -0,0 +1,53 @@
1
+ /* ============================================================
2
+ Semantic Aliases
3
+ Maps Style Dictionary–generated vars (--bg-*, --content-*, etc.)
4
+ to the component-facing names used by primitives and patterns.
5
+
6
+ Generated vars come from styles/generated/light.css (and dark.css).
7
+ This file must be imported AFTER the generated files.
8
+ ============================================================ */
9
+
10
+ :root {
11
+ /* ── Surfaces ─────────────────────────────────────────── */
12
+ --background: var(--bg-background);
13
+ --foreground: var(--content-foreground);
14
+ --card: var(--card-100);
15
+ --card-foreground: var(--content-foreground);
16
+ --popover: var(--bg-secondary);
17
+ --popover-foreground: var(--content-secondary-foreground);
18
+
19
+ /* ── Interactive ──────────────────────────────────────── */
20
+ --primary: var(--bg-primary);
21
+ --primary-foreground: var(--content-primary-foreground);
22
+ --secondary: var(--bg-secondary);
23
+ --secondary-foreground: var(--content-secondary-foreground);
24
+ --muted: var(--bg-muted);
25
+ --muted-foreground: var(--content-muted-foreground);
26
+ --accent: var(--bg-accent);
27
+ --accent-foreground: var(--content-accent-foreground);
28
+
29
+ /* ── States ───────────────────────────────────────────── */
30
+ --destructive: var(--bg-destructive);
31
+ --destructive-foreground: var(--content-destructive);
32
+
33
+ /* ── UI structure ─────────────────────────────────────── */
34
+ --border: var(--border-2);
35
+ --input: var(--bg-input);
36
+ --input-background: var(--bg-input);
37
+ --ring: var(--focus-ring);
38
+
39
+ /* ── Card opacity scale ───────────────────────────────── */
40
+ --card-90: var(--card-90);
41
+ --card-80: var(--card-80);
42
+ --card-60: var(--card-60);
43
+ --card-40: var(--card-40);
44
+ --card-20: var(--card-20);
45
+ --card-10: var(--card-10);
46
+
47
+ /* ── Border scale ─────────────────────────────────────── */
48
+ --border-0: var(--border-0);
49
+ --border-1: var(--border-1);
50
+ --border-3: var(--border-3);
51
+ --border-4: var(--border-4);
52
+ --border-5: var(--border-5);
53
+ }
@@ -0,0 +1,33 @@
1
+ /* ============================================================
2
+ Spacing Tokens
3
+ Source: Figma Spacing1 variable set
4
+ ============================================================ */
5
+
6
+ :root {
7
+ /* Semantic scale */
8
+ --spacing-0: 0px;
9
+ --spacing-3xs: 2px;
10
+ --spacing-2xs: 4px;
11
+ --spacing-xs: 8px;
12
+ --spacing-sm: 12px;
13
+ --spacing-md: 16px;
14
+ --spacing-lg: 20px;
15
+ --spacing-xl: 24px;
16
+ --spacing-2xl: 32px;
17
+ --spacing-3xl: 40px;
18
+ --spacing-4xl: 48px;
19
+ --spacing-5xl: 64px;
20
+
21
+ /* Precision values — use sparingly when semantic tokens don't fit */
22
+ --spacing-3: 3px;
23
+ --spacing-6: 6px;
24
+ --spacing-7: 7px;
25
+ --spacing-9: 9px;
26
+ --spacing-10: 10px;
27
+ --spacing-14: 14px;
28
+ --spacing-5p5: 5.5px;
29
+ --spacing-7p5: 7.5px;
30
+ --spacing-8p5: 8.5px;
31
+ --spacing-9p5: 9.5px;
32
+ --spacing-15p5: 15.5px;
33
+ }
@@ -0,0 +1,48 @@
1
+ /* ============================================================
2
+ Typography Tokens
3
+ Source: PS AI Helix - Core Figma library
4
+ ============================================================ */
5
+
6
+ :root {
7
+ /* Font families */
8
+ --font-heading: "Outfit", sans-serif;
9
+ --font-body: "Inter", sans-serif;
10
+ --font-mono: "Geist Mono", monospace;
11
+
12
+ /* Font weights */
13
+ --font-weight-normal: 400;
14
+ --font-weight-medium: 500;
15
+ --font-weight-semibold: 600;
16
+
17
+ /* Font sizes */
18
+ --text-4xl: 48px; /* h1 */
19
+ --text-3xl: 30px; /* h2 */
20
+ --text-2xl: 24px; /* h3 */
21
+ --text-xl: 20px; /* h4 */
22
+ --text-lg: 18px; /* paragraph large */
23
+ --text-base: 16px; /* paragraph regular / h5 */
24
+ --text-sm: 14px; /* paragraph small / h6 / label */
25
+ --text-xs: 12px; /* paragraph mini / h7 / caption */
26
+
27
+ /* Line heights — headings */
28
+ --leading-h1: 48px;
29
+ --leading-h2: 30px;
30
+ --leading-h3: 28.8px;
31
+ --leading-h4: 24px;
32
+ --leading-h5: 24px;
33
+ --leading-h6: 24px;
34
+ --leading-h7: 24px;
35
+
36
+ /* Line heights — body */
37
+ --leading-body-lg: 27px;
38
+ --leading-body: 24px;
39
+ --leading-body-sm: 20px;
40
+ --leading-body-xs: 16px;
41
+
42
+ /* Line heights — special */
43
+ --leading-caption: 21px;
44
+ --leading-mono: 24px;
45
+
46
+ /* Letter spacing */
47
+ --tracking-caption: 1.5px;
48
+ }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Do not edit directly, this file was auto-generated.
3
+ */
4
+
5
+ .theme-bodhi {
6
+ --brand-neutrals-50: #F9FAFB;
7
+ --brand-neutrals-100: #F3F4F6;
8
+ --brand-neutrals-200: #E5E7EB;
9
+ --brand-neutrals-300: #D1D5DB;
10
+ --brand-neutrals-400: #9CA3AF;
11
+ --brand-neutrals-500: #6B7280;
12
+ --brand-neutrals-600: #4B5563;
13
+ --brand-neutrals-700: #374151;
14
+ --brand-neutrals-800: #1F2937;
15
+ --brand-neutrals-900: #111827;
16
+ --brand-neutrals-950: #030712;
17
+ --brand-shades-50: #EFF6FF;
18
+ --brand-shades-100: #DBEAFE;
19
+ --brand-shades-200: #BFDBFE;
20
+ --brand-shades-300: #93C5FD;
21
+ --brand-shades-400: #60A5FA;
22
+ --brand-shades-500: #EF4444;
23
+ --brand-shades-600: #2563EB;
24
+ --brand-shades-700: #1D4ED8;
25
+ --brand-shades-800: #1E40AF;
26
+ --brand-shades-900: #1E3A8A;
27
+ --brand-shades-950: #172554;
28
+ --brand-combinations-1-brand: #EF4444;
29
+ --brand-combinations-1-brand-foreground: #FFFFFF;
30
+ --brand-combinations-2-brand: #BFDBFE;
31
+ --brand-combinations-2-brand-foreground: #1E40AF;
32
+ --brand-combinations-3-brand: #172554;
33
+ --brand-combinations-3-brand-foreground: #93C5FD;
34
+ }
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Do not edit directly, this file was auto-generated.
3
+ */
4
+
5
+ html.dark {
6
+ --bg-background: #1F2832; /** Use for general backgrounds. */
7
+ --bg-primary: #F3F4F6;
8
+ --bg-secondary: #1F2937;
9
+ --bg-accent: #111827; /** Level 1, official */
10
+ --bg-muted: #111827;
11
+ --bg-destructive: #7F1D1D;
12
+ --bg-destructive-alpha: rgba(127, 29, 29, 0.2);
13
+ --bg-destructive-subtle: #450A0A;
14
+ --bg-input: rgba(255, 255, 255, 0.05);
15
+ --bg-page-bg-brand: #450A0A;
16
+ --bg-page-bg-neutral: #030712;
17
+ --bg-info: #075985;
18
+ --bg-info-subtle: #0C4A6E;
19
+ --bg-success: #3F6212;
20
+ --bg-success-subtle: #365314;
21
+ --bg-warning: #9A3412;
22
+ --bg-warning-subtle: #431407;
23
+ --bg-error: #991B1B;
24
+ --bg-error-subtle: #7F1D1D;
25
+ --bg-backdrop: rgba(31, 40, 50, 0.4);
26
+ --content-foreground: #F9FAFB;
27
+ --content-primary-foreground: #030712;
28
+ --content-secondary-foreground: #F3F4F6;
29
+ --content-accent-foreground: #F3F4F6;
30
+ --content-muted-foreground: #9CA3AF;
31
+ --content-destructive-foreground: #FFFFFF;
32
+ --content-info: #38BDF8;
33
+ --content-info-bold: #7DD3FC;
34
+ --content-success: #84CC16;
35
+ --content-success-bold: #BEF264;
36
+ --content-warning: #F97316;
37
+ --content-warning-bold: #FDBA74;
38
+ --content-error: #EF4444;
39
+ --content-error-bold: #FCA5A5;
40
+ --content-destructive: #F87171;
41
+ --content-destructive-subtle: #B91C1C;
42
+ --card-100: #1F2832;
43
+ --card-90: rgba(31, 40, 50, 0.9);
44
+ --card-80: rgba(31, 40, 50, 0.8);
45
+ --card-60: rgba(31, 40, 50, 0.6);
46
+ --card-40: rgba(31, 40, 50, 0.4);
47
+ --card-20: rgba(31, 40, 50, 0.2);
48
+ --card-10: rgba(31, 40, 50, 0.1);
49
+ --card-foreground: #FFFFFF;
50
+ --popover: #FFFFFF;
51
+ --popover-foreground: #1F2832;
52
+ --unofficial-foreground-alt: #D1D5DB; /** Please use this for body text. */
53
+ --unofficial-body-background: #030712;
54
+ --unofficial-mid-alt: #9CA3AF;
55
+ --unofficial-ghost-foreground: #E5E7EB;
56
+ --unofficial-ghost: rgba(255, 255, 255, 0.0001);
57
+ --unofficial-ghost-hover: rgba(255, 255, 255, 0.1);
58
+ --unofficial-primary-hover: #D1D5DB;
59
+ --unofficial-secondary-hover: #111827;
60
+ --unofficial-outline: rgba(255, 255, 255, 0.05);
61
+ --unofficial-outline-hover: rgba(255, 255, 255, 0.1);
62
+ --unofficial-outline-active: rgba(255, 255, 255, 0.15);
63
+ --unofficial-accent-0: #030712;
64
+ --unofficial-accent-2: #1F2937;
65
+ --unofficial-accent-3: #374151;
66
+ --border-0: #030712;
67
+ --border-1: #111827;
68
+ --border-2: #374151; /** level 2, official. See docs. */
69
+ --border-3: #374151;
70
+ --border-4: #4B5563;
71
+ --border-5: #6B7280;
72
+ --border-destructive-border: #F87171;
73
+ --focus-ring: #374151; /** Focus ring */
74
+ --focus-ring-error: #6D2E2F; /** Focus ring error */
75
+ --focus-ring-success: #BEF264; /** Focus ring error */
76
+ --sidebar: #030712;
77
+ --sidebar-foreground: #D1D5DB;
78
+ --sidebar-accent: #111827;
79
+ --sidebar-accent-foreground: #F3F4F6;
80
+ --sidebar-primary: #F9FAFB;
81
+ --sidebar-primary-foreground: #111827;
82
+ --sidebar-border: #1F2937;
83
+ --sidebar-ring: #374151;
84
+ --sidebar-unofficial-sidebar-muted: #6B7280;
85
+ --obra-shadcn-docs-obra-shadcn-ui-docs-1: #111628;
86
+ --obra-shadcn-docs-obra-shadcn-ui-docs-2: #201D1B;
87
+ }
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Do not edit directly, this file was auto-generated.
3
+ */
4
+
5
+ :root {
6
+ --bg-background: #FFFFFF; /** Use for general backgrounds. */
7
+ --bg-primary: #111827;
8
+ --bg-secondary: #F3F4F6;
9
+ --bg-accent: #F3F4F6; /** Level 1, official */
10
+ --bg-muted: #F3F4F6;
11
+ --bg-destructive: #DC2626;
12
+ --bg-destructive-alpha: rgba(220, 38, 38, 0.2);
13
+ --bg-destructive-subtle: #FEF2F2;
14
+ --bg-input: #FFFFFF;
15
+ --bg-page-bg-brand: #FECACA;
16
+ --bg-page-bg-neutral: #E2E8F0;
17
+ --bg-info: #BAE6FD;
18
+ --bg-info-subtle: #E0F2FE;
19
+ --bg-success: #D9F99D;
20
+ --bg-success-subtle: #ECFCCB;
21
+ --bg-warning: #FED7AA;
22
+ --bg-warning-subtle: #FFEDD5;
23
+ --bg-error: #FECACA;
24
+ --bg-error-subtle: #FFE2E2;
25
+ --bg-backdrop: rgba(31, 40, 50, 0.4);
26
+ --content-foreground: #030712;
27
+ --content-primary-foreground: #F9FAFB;
28
+ --content-secondary-foreground: #111827;
29
+ --content-accent-foreground: #111827;
30
+ --content-muted-foreground: #6B7280;
31
+ --content-destructive-foreground: #FFFFFF;
32
+ --content-info: #0284C7;
33
+ --content-info-bold: #075985;
34
+ --content-success: #65A30D;
35
+ --content-success-bold: #3F6212;
36
+ --content-warning: #EA580C;
37
+ --content-warning-bold: #9A3412;
38
+ --content-error: #DC2626;
39
+ --content-error-bold: #991B1B;
40
+ --content-destructive: #DC2626;
41
+ --content-destructive-subtle: #FCA5A5;
42
+ --card-100: #FFFFFF;
43
+ --card-90: rgba(255, 255, 255, 0.9);
44
+ --card-80: rgba(255, 255, 255, 0.8);
45
+ --card-60: rgba(255, 255, 255, 0.6);
46
+ --card-40: rgba(255, 255, 255, 0.4);
47
+ --card-20: rgba(255, 255, 255, 0.2);
48
+ --card-10: rgba(255, 255, 255, 0.1);
49
+ --card-foreground: #030712;
50
+ --popover: #1F2832;
51
+ --popover-foreground: #FFFFFF;
52
+ --unofficial-foreground-alt: #374151; /** Please use this for body text. */
53
+ --unofficial-body-background: #FFFFFF;
54
+ --unofficial-mid-alt: #4B5563;
55
+ --unofficial-ghost-foreground: #374151;
56
+ --unofficial-ghost: rgba(255, 255, 255, 0.0001);
57
+ --unofficial-ghost-hover: rgba(31, 40, 50, 0.05);
58
+ --unofficial-primary-hover: #374151;
59
+ --unofficial-secondary-hover: #F9FAFB;
60
+ --unofficial-outline: rgba(255, 255, 255, 0.1);
61
+ --unofficial-outline-hover: rgba(31, 40, 50, 0.0333);
62
+ --unofficial-outline-active: rgba(31, 40, 50, 0.05);
63
+ --unofficial-accent-0: #F9FAFB;
64
+ --unofficial-accent-2: #E5E7EB;
65
+ --unofficial-accent-3: #D1D5DB;
66
+ --border-0: #F9FAFB;
67
+ --border-1: #F3F4F6;
68
+ --border-2: #E5E7EB; /** level 2, official. See docs. */
69
+ --border-3: #D1D5DB;
70
+ --border-4: #9CA3AF;
71
+ --border-5: #6B7280;
72
+ --border-destructive-border: #DC2626;
73
+ --focus-ring: #D1D5DB; /** Focus ring */
74
+ --focus-ring-error: #FCA5A5; /** Focus ring error */
75
+ --focus-ring-success: #65A30D; /** Focus ring error */
76
+ --sidebar: #F9FAFB;
77
+ --sidebar-foreground: #374151;
78
+ --sidebar-accent: #F3F4F6;
79
+ --sidebar-accent-foreground: #111827;
80
+ --sidebar-primary: #111827;
81
+ --sidebar-primary-foreground: #F9FAFB;
82
+ --sidebar-border: #E5E7EB;
83
+ --sidebar-ring: #D1D5DB;
84
+ --sidebar-unofficial-sidebar-muted: #6B7280;
85
+ --obra-shadcn-docs-obra-shadcn-ui-docs-1: #BFDBFE;
86
+ --obra-shadcn-docs-obra-shadcn-ui-docs-2: #FEF9C3;
87
+ }