@gv-tech/design-system 2.1.0 → 2.2.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 (58) hide show
  1. package/.github/CONTRIBUTING.md +14 -10
  2. package/.github/RELEASING.md +1 -1
  3. package/.github/copilot-instructions.md +30 -62
  4. package/.release-please-manifest.json +1 -1
  5. package/CHANGELOG.md +19 -0
  6. package/README.md +8 -9
  7. package/dist/components/ui/theme-toggle.test.d.ts +2 -0
  8. package/dist/components/ui/theme-toggle.test.d.ts.map +1 -0
  9. package/dist/design-system.css +1 -1
  10. package/dist/favicon.png +0 -0
  11. package/dist/hooks/use-theme.d.ts +52 -0
  12. package/dist/hooks/use-theme.d.ts.map +1 -0
  13. package/dist/hooks/use-theme.test.d.ts +2 -0
  14. package/dist/hooks/use-theme.test.d.ts.map +1 -0
  15. package/dist/index.cjs.js +2 -2
  16. package/dist/index.cjs.js.map +1 -1
  17. package/dist/index.d.ts +2 -1
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.es.js +829 -773
  20. package/dist/index.es.js.map +1 -1
  21. package/dist/logo192.png +0 -0
  22. package/dist/logo512.png +0 -0
  23. package/dist/manifest.json +3 -3
  24. package/dist/pages/ColorTokensDocs.d.ts.map +1 -1
  25. package/dist/pages/components/ThemeToggleDocs.d.ts.map +1 -1
  26. package/dist/registry/alert-dialog.test.json +1 -1
  27. package/dist/registry/index.json +7 -0
  28. package/dist/registry/theme-toggle.json +1 -1
  29. package/dist/registry/theme-toggle.test.json +13 -0
  30. package/dist/theme/tokens.d.ts +115 -0
  31. package/dist/theme/tokens.d.ts.map +1 -0
  32. package/index.html +1 -1
  33. package/package.json +9 -9
  34. package/public/favicon.png +0 -0
  35. package/public/logo192.png +0 -0
  36. package/public/logo512.png +0 -0
  37. package/public/manifest.json +3 -3
  38. package/scripts/validate.js +1 -0
  39. package/src/components/ui/alert-dialog.test.tsx +2 -0
  40. package/src/components/ui/theme-toggle.test.tsx +49 -0
  41. package/src/components/ui/theme-toggle.tsx +1 -1
  42. package/src/globals.css +2 -1
  43. package/src/hooks/use-theme.test.tsx +27 -0
  44. package/src/hooks/use-theme.ts +15 -0
  45. package/src/index.ts +2 -1
  46. package/src/pages/ColorTokensDocs.tsx +173 -136
  47. package/src/pages/components/ThemeToggleDocs.tsx +35 -8
  48. package/src/theme/tokens.ts +68 -0
  49. package/.nvmrc +0 -1
  50. package/babel.config.js +0 -3
  51. package/dist/favicon.ico +0 -0
  52. package/dist/lib/tokens.d.ts +0 -54
  53. package/dist/lib/tokens.d.ts.map +0 -1
  54. package/netlify.toml +0 -6
  55. package/public/favicon.ico +0 -0
  56. package/serve.json +0 -4
  57. package/src/lib/tokens.ts +0 -54
  58. package/temp.md +0 -292
@@ -1,177 +1,214 @@
1
1
  import { CodeBlock } from '@/components/docs/CodeBlock';
2
2
  import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
3
3
  import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table';
4
- import { tokens } from '@/lib/tokens';
4
+ import { tokens } from '@/theme/tokens';
5
5
 
6
6
  export function ColorTokensDocs() {
7
7
  return (
8
- <div className="space-y-8">
9
- <div className="space-y-2">
10
- <h1 className="text-3xl font-bold tracking-tight">Color Tokens</h1>
11
- <p className="text-lg text-muted-foreground">
12
- A comprehensive token library for consistent branding across Garcia Ventures applications.
8
+ <div className="space-y-12">
9
+ <div className="space-y-4">
10
+ <h1 className="text-4xl font-extrabold tracking-tight">Color Tokens</h1>
11
+ <p className="text-xl text-muted-foreground max-w-2xl">
12
+ The Garcia Ventures design system is built on a robust token architecture that ensures consistency,
13
+ accessibility, and easy maintenance across all digital products.
13
14
  </p>
14
15
  </div>
15
16
 
16
- <section className="space-y-4">
17
- <h2 className="text-2xl font-semibold tracking-tight">The Color Theme</h2>
17
+ <section className="space-y-6">
18
+ <h2 className="text-3xl font-bold tracking-tight">Design Philosophy</h2>
19
+ <div className="grid gap-6 md:grid-cols-3">
20
+ <Card className="bg-primary/5 border-primary/20">
21
+ <CardHeader>
22
+ <CardTitle className="text-lg">Intellect</CardTitle>
23
+ </CardHeader>
24
+ <CardContent>
25
+ <p className="text-sm text-muted-foreground">
26
+ Represented by Royal Blue, signaling depth, trust, and professional expertise.
27
+ </p>
28
+ </CardContent>
29
+ </Card>
30
+ <Card className="bg-secondary/5 border-secondary/20">
31
+ <CardHeader>
32
+ <CardTitle className="text-lg">Stability</CardTitle>
33
+ </CardHeader>
34
+ <CardContent>
35
+ <p className="text-sm text-muted-foreground">
36
+ Rooted in Brand Green, reflecting growth, balance, and environmental consciousness.
37
+ </p>
38
+ </CardContent>
39
+ </Card>
40
+ <Card className="bg-accent/5 border-accent/20">
41
+ <CardHeader>
42
+ <CardTitle className="text-lg">Transparency</CardTitle>
43
+ </CardHeader>
44
+ <CardContent>
45
+ <p className="text-sm text-muted-foreground">
46
+ Expressed through Floral White, prioritizing clarity and a clean user experience.
47
+ </p>
48
+ </CardContent>
49
+ </Card>
50
+ </div>
51
+ </section>
52
+
53
+ <section className="space-y-6">
54
+ <h2 className="text-3xl font-bold tracking-tight">Adoption Guide</h2>
18
55
  <p className="text-muted-foreground">
19
- Our theme is designed to signal stability, intellect, and transparency. It follows a consistent hierarchy
20
- across light and dark modes to ensure accessibility and professional aesthetics.
56
+ There are three primary ways to consume these tokens depending on your project's technology stack.
21
57
  </p>
22
58
 
23
- <div className="grid gap-6 md:grid-cols-2">
59
+ <div className="space-y-8">
60
+ <div className="space-y-4">
61
+ <h3 className="text-xl font-semibold">1. Tailwind CSS (Recommended)</h3>
62
+ <p className="text-sm text-muted-foreground">
63
+ Most projects should use standard Tailwind utility classes. These are automatically mapped to our tokens
64
+ via CSS variables.
65
+ </p>
66
+ <CodeBlock
67
+ language="tsx"
68
+ code={`// Use standard semantic classes
69
+ <button className="bg-primary text-primary-foreground hover:bg-primary/90">
70
+ Primary Action
71
+ </button>
72
+
73
+ <div className="border-border bg-card text-card-foreground">
74
+ Card Content
75
+ </div>`}
76
+ />
77
+ </div>
78
+
79
+ <div className="space-y-4">
80
+ <h3 className="text-xl font-semibold">2. TypeScript / React</h3>
81
+ <p className="text-sm text-muted-foreground">
82
+ For logic-heavy styling or CSS-in-JS solutions, import the \`tokens\` object directly.
83
+ </p>
84
+ <CodeBlock
85
+ language="tsx"
86
+ code={`import { tokens } from '@gv-tech/design-system';
87
+
88
+ const MyComponent = () => {
89
+ return (
90
+ <div style={{ color: tokens.palette.brand.blue }}>
91
+ Using Royal Blue directly
92
+ </div>
93
+ );
94
+ };`}
95
+ />
96
+ </div>
97
+
98
+ <div className="space-y-4">
99
+ <h3 className="text-xl font-semibold">3. Vanilla CSS</h3>
100
+ <p className="text-sm text-muted-foreground">
101
+ Directly access the CSS variables in your style tags or external stylesheets.
102
+ </p>
103
+ <CodeBlock
104
+ language="css"
105
+ code={`.custom-element {
106
+ background-color: hsl(var(--primary));
107
+ color: hsl(var(--primary-foreground));
108
+ border: 1px solid hsl(var(--border));
109
+ }`}
110
+ />
111
+ </div>
112
+ </div>
113
+ </section>
114
+
115
+ <section className="space-y-6">
116
+ <div className="flex items-center justify-between">
117
+ <h2 className="text-3xl font-bold tracking-tight">Core Palette</h2>
118
+ </div>
119
+ <div className="grid gap-6 md:grid-cols-2 lg:grid-cols-3">
24
120
  <Card>
25
- <CardHeader>
26
- <CardTitle className="text-sm font-medium">Core Palette</CardTitle>
27
- </CardHeader>
28
- <CardContent className="grid gap-4">
29
- <div className="flex items-center gap-4">
30
- <div className="h-10 w-10 rounded-md border" style={{ backgroundColor: 'hsl(225 73% 57%)' }} />
31
- <div>
32
- <p className="text-sm font-medium">Primary (Blue)</p>
33
- <p className="text-xs text-muted-foreground">Royal Blue / Cornflower</p>
34
- </div>
35
- </div>
36
- <div className="flex items-center gap-4">
37
- <div className="h-10 w-10 rounded-md border" style={{ backgroundColor: 'hsl(93 28% 54%)' }} />
121
+ <CardContent className="pt-6 space-y-4">
122
+ <div
123
+ className="h-24 w-full rounded-lg border shadow-inner"
124
+ style={{ backgroundColor: tokens.palette.brand.blue }}
125
+ />
126
+ <div className="flex justify-between items-start">
38
127
  <div>
39
- <p className="text-sm font-medium">Secondary (Green)</p>
40
- <p className="text-xs text-muted-foreground">Asparagus / Pistachio</p>
41
- </div>
42
- </div>
43
- <div className="flex items-center gap-4">
44
- <div className="h-10 w-10 rounded-md border" style={{ backgroundColor: 'hsl(210 29% 98%)' }} />
45
- <div>
46
- <p className="text-sm font-medium">Neutral (Off-White)</p>
47
- <p className="text-xs text-muted-foreground">Light Neutral / Floral White</p>
128
+ <h4 className="font-bold">Royal Blue</h4>
129
+ <p className="text-xs text-muted-foreground">Intellect & Trust</p>
48
130
  </div>
131
+ <code className="text-xs bg-muted px-1.5 py-0.5 rounded">{tokens.palette.brand.blue}</code>
49
132
  </div>
50
133
  </CardContent>
51
134
  </Card>
52
-
53
135
  <Card>
54
- <CardHeader>
55
- <CardTitle className="text-sm font-medium">Brand Specifics</CardTitle>
56
- </CardHeader>
57
- <CardContent className="grid gap-4">
58
- <div className="flex items-center gap-4">
59
- <div className="h-10 w-10 rounded-md border" style={{ backgroundColor: 'hsl(151 66% 27%)' }} />
136
+ <CardContent className="pt-6 space-y-4">
137
+ <div
138
+ className="h-24 w-full rounded-lg border shadow-inner"
139
+ style={{ backgroundColor: tokens.palette.brand.green }}
140
+ />
141
+ <div className="flex justify-between items-start">
60
142
  <div>
61
- <p className="text-sm font-medium">Brand Green</p>
62
- <p className="text-xs text-muted-foreground">#177245 (Stability)</p>
143
+ <h4 className="font-bold">Stability Green</h4>
144
+ <p className="text-xs text-muted-foreground">Growth & Balance</p>
63
145
  </div>
146
+ <code className="text-xs bg-muted px-1.5 py-0.5 rounded">{tokens.palette.brand.green}</code>
64
147
  </div>
65
- <div className="flex items-center gap-4">
66
- <div className="h-10 w-10 rounded-md border" style={{ backgroundColor: 'hsl(225 73% 57%)' }} />
148
+ </CardContent>
149
+ </Card>
150
+ <Card>
151
+ <CardContent className="pt-6 space-y-4">
152
+ <div
153
+ className="h-24 w-full rounded-lg border shadow-inner"
154
+ style={{ backgroundColor: tokens.palette.brand.floralWhite }}
155
+ />
156
+ <div className="flex justify-between items-start">
67
157
  <div>
68
- <p className="text-sm font-medium">Brand Blue</p>
69
- <p className="text-xs text-muted-foreground">#4169e1 (Intellect)</p>
158
+ <h4 className="font-bold">Floral White</h4>
159
+ <p className="text-xs text-muted-foreground">Transparency & Clarity</p>
70
160
  </div>
161
+ <code className="text-xs bg-muted px-1.5 py-0.5 rounded">{tokens.palette.brand.floralWhite}</code>
71
162
  </div>
72
163
  </CardContent>
73
164
  </Card>
74
165
  </div>
75
166
  </section>
76
167
 
77
- <section className="space-y-4">
78
- <h2 className="text-2xl font-semibold tracking-tight">Usage: Tailwind CSS</h2>
79
- <p className="text-muted-foreground">
80
- All color tokens are mapped to standard Tailwind colors via CSS variables in our design system.
81
- </p>
82
- <CodeBlock
83
- language="tsx"
84
- code={`<div className="bg-primary text-primary-foreground">
85
- Primary Content
86
- </div>
87
- <div className="text-secondary">
88
- Secondary Accent
89
- </div>
90
- <div className="border-border bg-muted/30">
91
- Muted Container
92
- </div>`}
93
- />
94
- </section>
95
-
96
- <section className="space-y-4">
97
- <h2 className="text-2xl font-semibold tracking-tight">Usage: TypeScript Tokens</h2>
98
- <p className="text-muted-foreground">
99
- For programmatic usage or non-Tailwind applications, you can import the raw token values.
100
- </p>
101
- <CodeBlock
102
- language="tsx"
103
- code={`import { tokens } from '@gv-tech/design-system';
104
-
105
- // Accessing HSL values
106
- const primary = tokens.colors.light.primary;
107
- const brandGreen = tokens.colors.brand.green;`}
108
- />
109
- </section>
110
-
111
- <section className="space-y-4">
112
- <h2 className="text-2xl font-semibold tracking-tight">CSS Variables Reference</h2>
113
- <p className="text-muted-foreground">
114
- Below is a complete reference of all semantic color tokens available in the design system.
115
- </p>
116
- <div className="rounded-md border overflow-hidden">
168
+ <section className="space-y-6">
169
+ <h2 className="text-3xl font-bold tracking-tight">Semantic Tokens Reference</h2>
170
+ <div className="rounded-xl border shadow-sm overflow-hidden">
117
171
  <Table>
118
172
  <TableHeader>
119
173
  <TableRow className="bg-muted/50 hover:bg-muted/50">
120
- <TableHead>Variable</TableHead>
174
+ <TableHead className="w-[200px]">Token</TableHead>
175
+ <TableHead>Variable Name</TableHead>
121
176
  <TableHead>Light Mode</TableHead>
122
177
  <TableHead>Dark Mode</TableHead>
123
178
  </TableRow>
124
179
  </TableHeader>
125
180
  <TableBody>
126
- {(Object.keys(tokens.colors.light) as Array<keyof typeof tokens.colors.light>).map((key) => (
127
- <TableRow key={key}>
128
- <TableCell className="font-mono text-xs">
129
- --{key.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`)}
130
- </TableCell>
131
- <TableCell>
132
- <div className="flex items-center gap-2">
133
- <div
134
- className="h-4 w-4 rounded-sm border"
135
- style={{ backgroundColor: tokens.colors.light[key] }}
136
- />
137
- <span className="text-muted-foreground">{tokens.colors.light[key]}</span>
138
- </div>
139
- </TableCell>
140
- <TableCell>
141
- <div className="flex items-center gap-2">
142
- <div className="h-4 w-4 rounded-sm border" style={{ backgroundColor: tokens.colors.dark[key] }} />
143
- <span className="text-muted-foreground">{tokens.colors.dark[key]}</span>
144
- </div>
145
- </TableCell>
146
- </TableRow>
147
- ))}
148
- </TableBody>
149
- </Table>
150
- </div>
151
- </section>
152
-
153
- <section className="space-y-4">
154
- <h2 className="text-2xl font-semibold tracking-tight">Brand Colors</h2>
155
- <div className="rounded-md border overflow-hidden">
156
- <Table>
157
- <TableHeader>
158
- <TableRow className="bg-muted/50 hover:bg-muted/50">
159
- <TableHead>Token</TableHead>
160
- <TableHead>Value</TableHead>
161
- </TableRow>
162
- </TableHeader>
163
- <TableBody>
164
- {Object.entries(tokens.colors.brand).map(([key, value]) => (
165
- <TableRow key={key}>
166
- <TableCell className="font-mono text-xs">tokens.colors.brand.{key}</TableCell>
167
- <TableCell>
168
- <div className="flex items-center gap-2">
169
- <div className="h-4 w-4 rounded-sm border" style={{ backgroundColor: value }} />
170
- <span className="text-muted-foreground">{value}</span>
171
- </div>
172
- </TableCell>
173
- </TableRow>
174
- ))}
181
+ {(Object.keys(tokens.theme.light) as Array<keyof typeof tokens.theme.light>).map((key) => {
182
+ if (key === 'radius') return null;
183
+ return (
184
+ <TableRow key={key} className="group">
185
+ <TableCell className="font-medium group-hover:text-primary transition-colors">
186
+ {key.charAt(0).toUpperCase() + key.slice(1).replace(/([A-Z])/g, ' $1')}
187
+ </TableCell>
188
+ <TableCell className="font-mono text-xs text-muted-foreground">
189
+ --{key.replace(/[A-Z]/g, (m) => '-' + m.toLowerCase())}
190
+ </TableCell>
191
+ <TableCell>
192
+ <div className="flex items-center gap-3">
193
+ <div
194
+ className="h-6 w-6 rounded-md border shadow-sm"
195
+ style={{ backgroundColor: tokens.theme.light[key] as string }}
196
+ />
197
+ <span className="text-xs font-mono">{tokens.theme.light[key]}</span>
198
+ </div>
199
+ </TableCell>
200
+ <TableCell>
201
+ <div className="flex items-center gap-3">
202
+ <div
203
+ className="h-6 w-6 rounded-md border shadow-sm"
204
+ style={{ backgroundColor: tokens.theme.dark[key] as string }}
205
+ />
206
+ <span className="text-xs font-mono">{tokens.theme.dark[key]}</span>
207
+ </div>
208
+ </TableCell>
209
+ </TableRow>
210
+ );
211
+ })}
175
212
  </TableBody>
176
213
  </Table>
177
214
  </div>
@@ -30,23 +30,48 @@ export function ThemeToggleDocs() {
30
30
  </ComponentShowcase>
31
31
 
32
32
  <ComponentShowcase
33
- title="Custom State Integration"
34
- description="You can control the theme externally by passing customTheme and onThemeChange props."
33
+ title="Controlled Mode"
34
+ description="You can control the theme externally by passing customTheme and onThemeChange props. This is useful for testing or when using a different theme provider."
35
35
  code={`const [theme, setTheme] = useState('light');
36
36
 
37
37
  <ThemeToggle
38
38
  customTheme={theme}
39
- onThemeChange={(newTheme) => setTheme(newTheme)}
39
+ onThemeChange={setTheme}
40
40
  />
41
41
 
42
42
  <p>Current Theme: {theme}</p>`}
43
43
  >
44
44
  <div className="flex flex-col items-center gap-4">
45
- <ThemeToggle customTheme={customTheme} onThemeChange={(newTheme) => setCustomTheme(newTheme)} />
45
+ <ThemeToggle customTheme={customTheme} onThemeChange={setCustomTheme} />
46
46
  <p className="text-sm font-medium">Current Selection: {customTheme}</p>
47
47
  </div>
48
48
  </ComponentShowcase>
49
49
 
50
+ <div className="space-y-4">
51
+ <h3 className="text-xl font-semibold">useTheme Hook</h3>
52
+ <p className="text-sm text-muted-foreground">
53
+ The `useTheme` hook provides access to the current theme and the active design tokens.
54
+ </p>
55
+ <div className="rounded-md border bg-muted p-4">
56
+ <pre className="text-xs">
57
+ <code>
58
+ {`import { useTheme } from '@gv-tech/design-system';
59
+
60
+ export function MyComponent() {
61
+ const { theme, setTheme, tokens } = useTheme();
62
+
63
+ return (
64
+ <div style={{ backgroundColor: tokens.background }}>
65
+ <p>Current theme: {theme}</p>
66
+ <button onClick={() => setTheme('dark')}>Dark Mode</button>
67
+ </div>
68
+ );
69
+ }`}
70
+ </code>
71
+ </pre>
72
+ </div>
73
+ </div>
74
+
50
75
  <div className="space-y-4">
51
76
  <h3 className="text-xl font-semibold">ThemeToggle Props</h3>
52
77
  <PropsTable
@@ -104,14 +129,16 @@ export function ThemeToggleDocs() {
104
129
  </div>
105
130
 
106
131
  <div className="rounded-lg border bg-muted/50 p-6">
107
- <h4 className="font-medium text-foreground">Custom Provider</h4>
132
+ <h4 className="font-medium text-foreground">Controlled / Custom State</h4>
108
133
  <p className="mt-1 text-sm text-muted-foreground">
109
134
  Pass your own theme state and change handler to integrate with custom logic or external storage.
110
135
  </p>
111
136
  <pre className="mt-4 overflow-x-auto rounded-md bg-background p-4 text-xs">
112
- <code>{`<ThemeToggle
113
- customTheme={myTheme}
114
- onThemeChange={(t) => updateMyTheme(t)}
137
+ <code>{`const [theme, setTheme] = useState("light")
138
+
139
+ <ThemeToggle
140
+ customTheme={theme}
141
+ onThemeChange={setTheme}
115
142
  />`}</code>
116
143
  </pre>
117
144
  </div>
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Design system tokens for Garcia Ventures.
3
+ * This file defines the core palette and semantic tokens for the theme system.
4
+ */
5
+
6
+ export const palette = {
7
+ brand: {
8
+ blue: 'hsl(225 73% 57%)', // Royal Blue (Intellect)
9
+ green: 'hsl(151 66% 27%)', // #177245 (Stability)
10
+ floralWhite: 'hsl(40 100% 97%)', // Light Neutral / Floral White
11
+ },
12
+ // Additional primitives can be added here
13
+ } as const;
14
+
15
+ export const theme = {
16
+ light: {
17
+ background: 'hsl(0 0% 96%)', // White Smoke
18
+ foreground: 'hsl(222 47% 11%)', // Oxford Blue
19
+ card: 'hsl(0 0% 100%)', // White
20
+ cardForeground: 'hsl(222 47% 11%)', // Oxford Blue
21
+ popover: 'hsl(0 0% 100%)', // White
22
+ popoverForeground: 'hsl(222 47% 11%)', // Oxford Blue
23
+ primary: palette.brand.blue, // Royal Blue (Intellect)
24
+ primaryForeground: 'hsl(0 0% 100%)', // White
25
+ secondary: 'hsl(93 28% 54%)', // Asparagus / Pistachio
26
+ secondaryForeground: 'hsl(0 0% 100%)', // White
27
+ muted: 'hsl(0 0% 92%)', // Gainsboro
28
+ mutedForeground: 'hsl(215 16% 47%)', // Steel Blue
29
+ accent: 'hsl(0 0% 88%)', // French Gray
30
+ accentForeground: 'hsl(222 47% 11%)', // Oxford Blue
31
+ destructive: 'hsl(0 84.2% 60.2%)', // Vivid Red
32
+ destructiveForeground: 'hsl(0 0% 100%)', // White
33
+ border: 'hsl(0 0% 89%)', // Light Gray
34
+ input: 'hsl(0 0% 89%)', // Light Gray
35
+ ring: 'hsl(222 47% 11%)', // Oxford Blue
36
+ radius: '0.5rem',
37
+ },
38
+ dark: {
39
+ background: 'hsl(0 0% 9%)', // Night
40
+ foreground: 'hsl(0 0% 100%)', // White
41
+ card: 'hsl(0 0% 14%)', // Eerie Black
42
+ cardForeground: 'hsl(0 0% 100%)', // White
43
+ popover: 'hsl(0 0% 11%)', // Night (alt)
44
+ popoverForeground: 'hsl(0 0% 100%)', // White
45
+ primary: 'hsl(227 96% 71%)', // Baby Blue
46
+ primaryForeground: 'hsl(0 0% 9%)', // Night
47
+ secondary: 'hsl(96 44% 61%)', // Celadon
48
+ secondaryForeground: 'hsl(0 0% 9%)', // Night
49
+ muted: 'hsl(0 0% 6%)', // Black
50
+ mutedForeground: 'hsl(0 0% 70%)', // Silver
51
+ accent: 'hsl(0 0% 15%)', // Jet
52
+ accentForeground: 'hsl(0 0% 100%)', // White
53
+ destructive: 'hsl(0 62.8% 30.6%)', // Blood Red
54
+ destructiveForeground: 'hsl(0 0% 100%)', // White
55
+ border: 'hsl(0 0% 18%)', // Raisin Black
56
+ input: 'hsl(0 0% 18%)', // Raisin Black
57
+ ring: 'hsl(0 0% 90%)', // Platinum
58
+ radius: '0.5rem',
59
+ },
60
+ } as const;
61
+
62
+ export const tokens = {
63
+ palette,
64
+ theme,
65
+ } as const;
66
+
67
+ export type ThemeTokens = typeof theme.light;
68
+ export type PaletteTokens = typeof palette;
package/.nvmrc DELETED
@@ -1 +0,0 @@
1
- 24
package/babel.config.js DELETED
@@ -1,3 +0,0 @@
1
- module.exports = {
2
- presets: ['@babel/preset-env', '@babel/preset-react', '@babel/preset-typescript'],
3
- };
package/dist/favicon.ico DELETED
Binary file
@@ -1,54 +0,0 @@
1
- /** Design system color tokens for Garcia Ventures. */
2
- export declare const tokens: {
3
- readonly colors: {
4
- readonly light: {
5
- readonly background: "hsl(0 0% 96%)";
6
- readonly foreground: "hsl(222 47% 11%)";
7
- readonly card: "hsl(0 0% 100%)";
8
- readonly cardForeground: "hsl(222 47% 11%)";
9
- readonly popover: "hsl(0 0% 100%)";
10
- readonly popoverForeground: "hsl(222 47% 11%)";
11
- readonly primary: "hsl(225 73% 57%)";
12
- readonly primaryForeground: "hsl(0 0% 100%)";
13
- readonly secondary: "hsl(93 28% 54%)";
14
- readonly secondaryForeground: "hsl(0 0% 100%)";
15
- readonly muted: "hsl(0 0% 92%)";
16
- readonly mutedForeground: "hsl(215 16% 47%)";
17
- readonly accent: "hsl(0 0% 88%)";
18
- readonly accentForeground: "hsl(222 47% 11%)";
19
- readonly destructive: "hsl(0 84.2% 60.2%)";
20
- readonly destructiveForeground: "hsl(0 0% 100%)";
21
- readonly border: "hsl(0 0% 89%)";
22
- readonly input: "hsl(0 0% 89%)";
23
- readonly ring: "hsl(222 47% 11%)";
24
- };
25
- readonly dark: {
26
- readonly background: "hsl(0 0% 9%)";
27
- readonly foreground: "hsl(0 0% 100%)";
28
- readonly card: "hsl(0 0% 14%)";
29
- readonly cardForeground: "hsl(0 0% 100%)";
30
- readonly popover: "hsl(0 0% 11%)";
31
- readonly popoverForeground: "hsl(0 0% 100%)";
32
- readonly primary: "hsl(227 96% 71%)";
33
- readonly primaryForeground: "hsl(0 0% 9%)";
34
- readonly secondary: "hsl(96 44% 61%)";
35
- readonly secondaryForeground: "hsl(0 0% 9%)";
36
- readonly muted: "hsl(0 0% 6%)";
37
- readonly mutedForeground: "hsl(0 0% 70%)";
38
- readonly accent: "hsl(0 0% 15%)";
39
- readonly accentForeground: "hsl(0 0% 100%)";
40
- readonly destructive: "hsl(0 62.8% 30.6%)";
41
- readonly destructiveForeground: "hsl(0 0% 100%)";
42
- readonly border: "hsl(0 0% 18%)";
43
- readonly input: "hsl(0 0% 18%)";
44
- readonly ring: "hsl(0 0% 90%)";
45
- };
46
- readonly brand: {
47
- readonly green: "hsl(151 66% 27%)";
48
- readonly blue: "hsl(225 73% 57%)";
49
- };
50
- };
51
- };
52
- export type ThemeTokens = typeof tokens.colors.light;
53
- export type BrandTokens = typeof tokens.colors.brand;
54
- //# sourceMappingURL=tokens.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/lib/tokens.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDT,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;AACrD,MAAM,MAAM,WAAW,GAAG,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC"}
package/netlify.toml DELETED
@@ -1,6 +0,0 @@
1
- [build]
2
- command = "yarn install --immutable && yarn build-storybook"
3
- publish = "storybook-static"
4
-
5
- [build.environment]
6
- NODE_VERSION = "24"
Binary file
package/serve.json DELETED
@@ -1,4 +0,0 @@
1
- {
2
- "cleanUrls": false,
3
- "trailingSlash": false
4
- }
package/src/lib/tokens.ts DELETED
@@ -1,54 +0,0 @@
1
- /** Design system color tokens for Garcia Ventures. */
2
- export const tokens = {
3
- colors: {
4
- light: {
5
- background: 'hsl(0 0% 96%)',
6
- foreground: 'hsl(222 47% 11%)',
7
- card: 'hsl(0 0% 100%)',
8
- cardForeground: 'hsl(222 47% 11%)',
9
- popover: 'hsl(0 0% 100%)',
10
- popoverForeground: 'hsl(222 47% 11%)',
11
- primary: 'hsl(225 73% 57%)',
12
- primaryForeground: 'hsl(0 0% 100%)',
13
- secondary: 'hsl(93 28% 54%)',
14
- secondaryForeground: 'hsl(0 0% 100%)',
15
- muted: 'hsl(0 0% 92%)',
16
- mutedForeground: 'hsl(215 16% 47%)',
17
- accent: 'hsl(0 0% 88%)',
18
- accentForeground: 'hsl(222 47% 11%)',
19
- destructive: 'hsl(0 84.2% 60.2%)',
20
- destructiveForeground: 'hsl(0 0% 100%)',
21
- border: 'hsl(0 0% 89%)',
22
- input: 'hsl(0 0% 89%)',
23
- ring: 'hsl(222 47% 11%)',
24
- },
25
- dark: {
26
- background: 'hsl(0 0% 9%)',
27
- foreground: 'hsl(0 0% 100%)',
28
- card: 'hsl(0 0% 14%)',
29
- cardForeground: 'hsl(0 0% 100%)',
30
- popover: 'hsl(0 0% 11%)',
31
- popoverForeground: 'hsl(0 0% 100%)',
32
- primary: 'hsl(227 96% 71%)',
33
- primaryForeground: 'hsl(0 0% 9%)',
34
- secondary: 'hsl(96 44% 61%)',
35
- secondaryForeground: 'hsl(0 0% 9%)',
36
- muted: 'hsl(0 0% 6%)',
37
- mutedForeground: 'hsl(0 0% 70%)',
38
- accent: 'hsl(0 0% 15%)',
39
- accentForeground: 'hsl(0 0% 100%)',
40
- destructive: 'hsl(0 62.8% 30.6%)',
41
- destructiveForeground: 'hsl(0 0% 100%)',
42
- border: 'hsl(0 0% 18%)',
43
- input: 'hsl(0 0% 18%)',
44
- ring: 'hsl(0 0% 90%)',
45
- },
46
- brand: {
47
- green: 'hsl(151 66% 27%)',
48
- blue: 'hsl(225 73% 57%)',
49
- },
50
- },
51
- } as const;
52
-
53
- export type ThemeTokens = typeof tokens.colors.light;
54
- export type BrandTokens = typeof tokens.colors.brand;