@withmata/blueprints 0.2.0 → 0.3.2
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/{.opencode/commands/audit.md → .claude/skills/audit/SKILL.md} +8 -6
- package/.claude/skills/blueprint-catalog/SKILL.md +63 -0
- package/.claude/{commands/discover.md → skills/discover/SKILL.md} +8 -3
- package/{.cursor/commands/new-blueprint.md → .claude/skills/new-blueprint/SKILL.md} +13 -8
- package/{.cursor/commands/new-project.md → .claude/skills/new-project/SKILL.md} +11 -6
- package/.claude/{commands/scaffold-auth.md → skills/scaffold-auth/SKILL.md} +24 -23
- package/{.cursor/commands/scaffold-db.md → .claude/skills/scaffold-db/SKILL.md} +17 -16
- package/.claude/skills/scaffold-env/SKILL.md +222 -0
- package/.claude/{commands/scaffold-foundation.md → skills/scaffold-foundation/SKILL.md} +17 -16
- package/.claude/skills/scaffold-tailwind/SKILL.md +177 -0
- package/.claude/skills/scaffold-ui/SKILL.md +206 -0
- package/ENGINEERING.md +2 -2
- package/blueprints/features/env-t3/BLUEPRINT.md +332 -0
- package/blueprints/features/env-t3/files/nextjs/.env.example +17 -0
- package/blueprints/features/env-t3/files/nextjs/.env.local +0 -0
- package/blueprints/features/env-t3/files/nextjs/env/client.ts +13 -0
- package/blueprints/features/env-t3/files/nextjs/env/server.ts +12 -0
- package/blueprints/features/env-t3/files/server/.env.example +14 -0
- package/blueprints/features/env-t3/files/server/.env.local +0 -0
- package/blueprints/features/env-t3/files/server/env.ts +17 -0
- package/blueprints/features/tailwind-v4/BLUEPRINT.md +262 -12
- package/blueprints/features/tailwind-v4/files/tailwind-config/package.json +20 -0
- package/blueprints/features/tailwind-v4/files/tailwind-config/shared-styles.css +131 -0
- package/blueprints/features/ui-shared-components/BLUEPRINT.md +350 -13
- package/blueprints/features/ui-shared-components/files/ui/components.json +21 -0
- package/blueprints/features/ui-shared-components/files/ui/package.json +42 -0
- package/blueprints/features/ui-shared-components/files/ui/styles/globals.css +2 -0
- package/blueprints/features/ui-shared-components/files/ui/tsconfig.json +9 -0
- package/blueprints/features/ui-shared-components/files/ui/utils/cn.ts +6 -0
- package/blueprints/features/ui-shared-components/files/ui/utils/cva.ts +4 -0
- package/dist/index.js +210 -166
- package/package.json +6 -7
- package/.claude/commands/audit.md +0 -179
- package/.claude/commands/new-blueprint.md +0 -265
- package/.claude/commands/new-project.md +0 -230
- package/.claude/commands/scaffold-db.md +0 -270
- package/.cursor/commands/audit.md +0 -179
- package/.cursor/commands/discover.md +0 -92
- package/.cursor/commands/scaffold-auth.md +0 -310
- package/.cursor/commands/scaffold-foundation.md +0 -158
- package/.opencode/commands/discover.md +0 -96
- package/.opencode/commands/new-blueprint.md +0 -269
- package/.opencode/commands/new-project.md +0 -234
- package/.opencode/commands/scaffold-auth.md +0 -314
- package/.opencode/commands/scaffold-db.md +0 -274
- package/.opencode/commands/scaffold-foundation.md +0 -162
|
@@ -6,24 +6,274 @@ Feature
|
|
|
6
6
|
|
|
7
7
|
## Status
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Complete.
|
|
10
10
|
|
|
11
11
|
## Problem
|
|
12
12
|
|
|
13
|
-
The foundation blueprint creates a minimal `config/tailwind-config/` package with basic theme tokens
|
|
13
|
+
The foundation blueprint creates a minimal `config/tailwind-config/` package with basic theme tokens — enough to get started but not enough for production apps. A complete design system needs: animation utilities, typography plugin, sidebar tokens for dashboard layouts, chart tokens for data visualization, scrollbar utilities, and the full shadcn/ui CSS integration. Setting up these imports and tokens correctly with Tailwind v4's CSS-based configuration is non-obvious and error-prone.
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
- Extended CSS custom properties and design tokens in `config/tailwind-config/`
|
|
18
|
-
- Dark mode setup (class-based or media-query)
|
|
19
|
-
- Animation utilities and keyframes
|
|
20
|
-
- Typography scale and font loading (local + variable fonts)
|
|
21
|
-
- Color palette generation using OKLCH color space
|
|
22
|
-
- shadcn/ui-compatible token structure
|
|
23
|
-
- Documentation of available tokens and usage patterns
|
|
15
|
+
This blueprint upgrades the foundation's minimal tailwind-config into a production-ready design system.
|
|
24
16
|
|
|
25
17
|
## Blueprint Dependencies
|
|
26
18
|
|
|
27
19
|
| Blueprint | Type | Why |
|
|
28
20
|
|-----------|------|-----|
|
|
29
|
-
| `foundation/monorepo-turbo` | recommended | Provides the base `config/tailwind-config/` package with minimal theme tokens. Without it, this blueprint creates the config structure from scratch.
|
|
21
|
+
| `foundation/monorepo-turbo` | recommended | Provides the base `config/tailwind-config/` package with minimal theme tokens. Without it, this blueprint creates the config structure from scratch. |
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Architecture
|
|
26
|
+
|
|
27
|
+
### Core Pattern
|
|
28
|
+
|
|
29
|
+
Tailwind v4 uses **CSS-based configuration** instead of JavaScript config files. All theme tokens, custom variants, and plugin imports are defined in `shared-styles.css` — a single CSS file that serves as the design system source of truth. This file is exported from the `config/tailwind-config/` workspace package and imported by every app and package that uses Tailwind.
|
|
30
|
+
|
|
31
|
+
### Key Decisions
|
|
32
|
+
|
|
33
|
+
- **CSS-based configuration only** (required) — Tailwind v4 uses `@theme inline`, `@custom-variant`, and `@import` directives in CSS. No `tailwind.config.js`. This is the Tailwind v4 way and enables better tree-shaking and faster builds.
|
|
34
|
+
|
|
35
|
+
- **OKLCH color space** (required) — All color tokens use the `oklch()` color function for perceptually uniform colors. This produces better gradients, more accessible contrast ratios, and a wider gamut than hex/RGB. Colors are defined as CSS custom properties in `:root` and `.dark` selectors.
|
|
36
|
+
|
|
37
|
+
- **Class-based dark mode** (required) — Uses `@custom-variant dark (&:is(.dark *))` for class-based dark mode toggling. This integrates with Next.js theme providers and gives JavaScript control over the theme (vs. media-query which follows OS preference only).
|
|
38
|
+
|
|
39
|
+
- **shadcn/ui CSS integration** (required) — Imports `shadcn/tailwind.css` which provides the CSS variable structure that shadcn components expect. This is required for any project using shadcn/ui components.
|
|
40
|
+
|
|
41
|
+
- **Animation utilities** (required) — Imports `tw-animate-css` for common animation classes (fade-in, slide-in, etc.) used by shadcn components and dialog/popover transitions.
|
|
42
|
+
|
|
43
|
+
- **Scrollbar hiding** (recommended) — Imports `tailwind-scrollbar-hide/v4` for utility classes that hide scrollbars while maintaining scroll functionality. Useful for custom scroll areas and overflow containers.
|
|
44
|
+
|
|
45
|
+
- **Typography plugin** (recommended) — `@tailwindcss/typography` is included as a dependency but imported by consuming apps (via `@plugin`) rather than the config. This allows per-app control over prose styling.
|
|
46
|
+
|
|
47
|
+
- **Sidebar tokens** (recommended) — CSS variables for sidebar-specific colors (`--sidebar`, `--sidebar-primary`, `--sidebar-accent`, etc.) for dashboard layouts. These tokens integrate with shadcn's sidebar component.
|
|
48
|
+
|
|
49
|
+
- **Chart tokens** (recommended) — CSS variables for data visualization (`--chart-1` through `--chart-5`) with OKLCH values that work well together in both light and dark modes.
|
|
50
|
+
|
|
51
|
+
- **Extended radius scale** (recommended) — Adds `--radius-3xl` and `--radius-4xl` beyond the foundation's base radius tokens, useful for larger cards and containers.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Hard Requirements vs Recommended Defaults
|
|
56
|
+
|
|
57
|
+
**Hard requirements:**
|
|
58
|
+
- Tailwind CSS v4
|
|
59
|
+
- CSS-based configuration (`shared-styles.css`)
|
|
60
|
+
- OKLCH color space for all color tokens
|
|
61
|
+
- Class-based dark mode
|
|
62
|
+
- shadcn/ui CSS variable structure
|
|
63
|
+
|
|
64
|
+
**Recommended defaults — ask during scaffolding:**
|
|
65
|
+
|
|
66
|
+
| Choice | Recommended | Alternatives |
|
|
67
|
+
|---|---|---|
|
|
68
|
+
| Include sidebar tokens | Yes | No (if not building dashboards) |
|
|
69
|
+
| Include chart tokens | Yes | No (if not doing data visualization) |
|
|
70
|
+
| Include scrollbar-hide | Yes | No |
|
|
71
|
+
| Primary color hue | 264 (indigo/violet) | Any OKLCH hue value |
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Dependencies
|
|
76
|
+
|
|
77
|
+
### npm packages
|
|
78
|
+
|
|
79
|
+
**config/tailwind-config:**
|
|
80
|
+
| Package | Version | Purpose |
|
|
81
|
+
|---|---|---|
|
|
82
|
+
| `@tailwindcss/typography` | ^0.5 | Prose styling for rich text content |
|
|
83
|
+
| `shadcn` | ^3 | shadcn/ui CSS integration and component CLI |
|
|
84
|
+
| `tailwind-scrollbar-hide` | ^4 | Utility classes for hiding scrollbars |
|
|
85
|
+
| `tw-animate-css` | ^1 | Animation utility classes for transitions |
|
|
86
|
+
|
|
87
|
+
**config/tailwind-config (dev):**
|
|
88
|
+
| Package | Version | Purpose |
|
|
89
|
+
|---|---|---|
|
|
90
|
+
| `@tailwindcss/postcss` | ^4 | PostCSS plugin for Tailwind v4 |
|
|
91
|
+
| `tailwindcss` | ^4 | Tailwind CSS v4 core |
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Monorepo Wiring
|
|
96
|
+
|
|
97
|
+
### Tailwind Config Package (`config/tailwind-config/`)
|
|
98
|
+
|
|
99
|
+
**`package.json` exports:**
|
|
100
|
+
```json
|
|
101
|
+
{
|
|
102
|
+
"exports": {
|
|
103
|
+
".": "./shared-styles.css",
|
|
104
|
+
"./postcss": "./postcss.config.mjs"
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**File structure:**
|
|
110
|
+
```
|
|
111
|
+
config/tailwind-config/
|
|
112
|
+
├── package.json # Package config with exports and deps
|
|
113
|
+
├── shared-styles.css # Full design system (tokens, colors, dark mode)
|
|
114
|
+
└── postcss.config.mjs # PostCSS config with @tailwindcss/postcss
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Consuming Apps
|
|
118
|
+
|
|
119
|
+
Apps import the tailwind config in their `globals.css`:
|
|
120
|
+
|
|
121
|
+
```css
|
|
122
|
+
@import "tailwindcss";
|
|
123
|
+
@import "{{SCOPE}}/tailwind-config";
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Typography plugin is added per-app:
|
|
127
|
+
```css
|
|
128
|
+
@plugin "@tailwindcss/typography";
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Single-Repo Adaptation
|
|
134
|
+
|
|
135
|
+
For standalone applications without a monorepo, the tailwind config lives directly in the project.
|
|
136
|
+
|
|
137
|
+
### Path Mapping
|
|
138
|
+
|
|
139
|
+
| Aspect | Monorepo | Single-Repo |
|
|
140
|
+
|--------|----------|-------------|
|
|
141
|
+
| Config location | `config/tailwind-config/` (workspace package) | `src/styles/` or project root |
|
|
142
|
+
| Import in globals.css | `@import "{{SCOPE}}/tailwind-config"` | `@import "./src/styles/shared-styles.css"` or inline |
|
|
143
|
+
| Package dependencies | In `config/tailwind-config/package.json` | In root `package.json` |
|
|
144
|
+
| PostCSS config | Exported from config package | At project root |
|
|
145
|
+
|
|
146
|
+
### Single-Repo File Structure
|
|
147
|
+
|
|
148
|
+
```
|
|
149
|
+
<project-root>/
|
|
150
|
+
├── src/styles/
|
|
151
|
+
│ └── shared-styles.css # Full design system
|
|
152
|
+
├── postcss.config.mjs # PostCSS config
|
|
153
|
+
├── app/globals.css # Imports shared-styles.css directly
|
|
154
|
+
└── package.json # All deps at root
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### What Stays the Same
|
|
158
|
+
|
|
159
|
+
- CSS-based configuration pattern
|
|
160
|
+
- All theme tokens, color values, dark mode setup
|
|
161
|
+
- `@import` chain and plugin usage
|
|
162
|
+
- OKLCH color space
|
|
163
|
+
- shadcn/ui compatibility
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## File Manifest
|
|
168
|
+
|
|
169
|
+
| File | Purpose | Monorepo Target | Single-Repo Target |
|
|
170
|
+
|---|---|---|---|
|
|
171
|
+
| `files/tailwind-config/shared-styles.css` | Full design system: tokens, colors, dark mode, animations | `config/tailwind-config/shared-styles.css` | `src/styles/shared-styles.css` |
|
|
172
|
+
| `files/tailwind-config/package.json` | Package config with all design system deps | `config/tailwind-config/package.json` | N/A (deps go in root `package.json`) |
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## Integration Steps
|
|
177
|
+
|
|
178
|
+
### Phase 1: Upgrade Tailwind Config
|
|
179
|
+
|
|
180
|
+
**If foundation's `config/tailwind-config/` exists:**
|
|
181
|
+
|
|
182
|
+
1. Replace `shared-styles.css` with the full version from this blueprint
|
|
183
|
+
2. Merge dependencies into the existing `package.json`:
|
|
184
|
+
- Add `@tailwindcss/typography`, `shadcn`, `tailwind-scrollbar-hide`, `tw-animate-css` to `dependencies`
|
|
185
|
+
- Keep existing `devDependencies` (`@tailwindcss/postcss`, `tailwindcss`)
|
|
186
|
+
3. Keep existing `postcss.config.mjs` (unchanged)
|
|
187
|
+
|
|
188
|
+
**If no existing config:**
|
|
189
|
+
|
|
190
|
+
1. Create `config/tailwind-config/` directory
|
|
191
|
+
2. Copy `shared-styles.css` — replace `{{SCOPE}}` placeholders
|
|
192
|
+
3. Copy `package.json` — replace `{{SCOPE}}`
|
|
193
|
+
4. Create `postcss.config.mjs` (same as foundation's version)
|
|
194
|
+
|
|
195
|
+
### Phase 2: Dependency Installation
|
|
196
|
+
|
|
197
|
+
5. Run `pnpm install` to fetch new dependencies
|
|
198
|
+
6. Verify no peer dependency warnings
|
|
199
|
+
|
|
200
|
+
### Phase 3: Verification
|
|
201
|
+
|
|
202
|
+
7. Run `pnpm dev` — the app should start without CSS errors
|
|
203
|
+
8. Verify dark mode works: add `class="dark"` to `<html>` and confirm colors change
|
|
204
|
+
9. Verify animation classes work: try `animate-fade-in` on an element
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## Maintenance Hooks
|
|
209
|
+
|
|
210
|
+
### Design System Hooks
|
|
211
|
+
|
|
212
|
+
| When you... | Then do... | Why |
|
|
213
|
+
|---|---|---|
|
|
214
|
+
| Add a new color token | Add CSS variable to both `:root` and `.dark`, then map it in `@theme inline` | Missing from either = broken in one mode |
|
|
215
|
+
| Add a sidebar component | Verify sidebar tokens exist in `shared-styles.css` | Sidebar components reference `--sidebar-*` variables |
|
|
216
|
+
| Upgrade Tailwind CSS | Check for breaking changes in `@import` syntax or `@theme` directives | v4 API is still evolving |
|
|
217
|
+
| Add a new app to the monorepo | Import `{{SCOPE}}/tailwind-config` in the new app's `globals.css` | New apps don't automatically get the design system |
|
|
218
|
+
|
|
219
|
+
### Condensed Rules for project rules file
|
|
220
|
+
|
|
221
|
+
```markdown
|
|
222
|
+
### tailwind-v4 maintenance
|
|
223
|
+
- After adding a new color: add CSS variable to both :root and .dark selectors in shared-styles.css, then map in @theme inline
|
|
224
|
+
- After adding a new app: import the tailwind-config package in the app's globals.css
|
|
225
|
+
- After upgrading Tailwind: check for @import, @theme, or @custom-variant breaking changes
|
|
226
|
+
- Never use tailwind.config.js — all configuration is CSS-based in shared-styles.css
|
|
227
|
+
- Colors use OKLCH color space — do not use hex or RGB
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## What's Configurable
|
|
233
|
+
|
|
234
|
+
- Primary color hue (OKLCH hue value)
|
|
235
|
+
- Whether to include sidebar tokens
|
|
236
|
+
- Whether to include chart tokens
|
|
237
|
+
- Whether to include scrollbar-hide
|
|
238
|
+
- Additional custom tokens can be added to `@theme inline`
|
|
239
|
+
|
|
240
|
+
## What's Opinionated
|
|
241
|
+
|
|
242
|
+
- **Tailwind CSS v4** — CSS-based config, not JavaScript
|
|
243
|
+
- **OKLCH color space** — no hex or RGB color values
|
|
244
|
+
- **Class-based dark mode** — not media-query based
|
|
245
|
+
- **shadcn/ui CSS structure** — CSS variables follow shadcn conventions
|
|
246
|
+
- **`shared-styles.css` as single source** — one file for the entire design system, not split across multiple files
|
|
247
|
+
|
|
248
|
+
## Project Context Output
|
|
249
|
+
|
|
250
|
+
Appends to `.project-context.md` under `## Installed Blueprints`:
|
|
251
|
+
|
|
252
|
+
```yaml
|
|
253
|
+
### tailwind-v4
|
|
254
|
+
blueprint: tailwind-v4
|
|
255
|
+
choices:
|
|
256
|
+
include_sidebar_tokens: true
|
|
257
|
+
include_chart_tokens: true
|
|
258
|
+
include_scrollbar_hide: true
|
|
259
|
+
primary_hue: 264
|
|
260
|
+
files_modified:
|
|
261
|
+
- config/tailwind-config/shared-styles.css
|
|
262
|
+
- config/tailwind-config/package.json
|
|
263
|
+
packages_added:
|
|
264
|
+
- "@tailwindcss/typography"
|
|
265
|
+
- shadcn
|
|
266
|
+
- tailwind-scrollbar-hide
|
|
267
|
+
- tw-animate-css
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
---
|
|
271
|
+
|
|
272
|
+
## References
|
|
273
|
+
|
|
274
|
+
- **Tailwind CSS v4 Docs:** https://tailwindcss.com/docs
|
|
275
|
+
- **Tailwind v4 CSS Config:** https://tailwindcss.com/docs/theme
|
|
276
|
+
- **OKLCH Color Space:** https://oklch.com/
|
|
277
|
+
- **shadcn/ui Theming:** https://ui.shadcn.com/docs/theming
|
|
278
|
+
- **tw-animate-css:** https://github.com/Wombosvideo/tw-animate-css
|
|
279
|
+
- **tailwind-scrollbar-hide:** https://github.com/reslear/tailwind-scrollbar-hide
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "{{SCOPE}}/tailwind-config",
|
|
3
|
+
"version": "0.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"private": true,
|
|
6
|
+
"exports": {
|
|
7
|
+
".": "./shared-styles.css",
|
|
8
|
+
"./postcss": "./postcss.config.mjs"
|
|
9
|
+
},
|
|
10
|
+
"dependencies": {
|
|
11
|
+
"@tailwindcss/typography": "^0.5",
|
|
12
|
+
"shadcn": "^3",
|
|
13
|
+
"tailwind-scrollbar-hide": "^4",
|
|
14
|
+
"tw-animate-css": "^1"
|
|
15
|
+
},
|
|
16
|
+
"devDependencies": {
|
|
17
|
+
"@tailwindcss/postcss": "^4",
|
|
18
|
+
"tailwindcss": "^4"
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
@import "tailwindcss";
|
|
2
|
+
@import "tw-animate-css";
|
|
3
|
+
@import "shadcn/tailwind.css";
|
|
4
|
+
@import "tailwind-scrollbar-hide/v4";
|
|
5
|
+
|
|
6
|
+
@custom-variant dark (&:is(.dark *));
|
|
7
|
+
|
|
8
|
+
/* ==========================================================================
|
|
9
|
+
Theme tokens — OKLCH color space, shadcn/ui compatible
|
|
10
|
+
========================================================================== */
|
|
11
|
+
|
|
12
|
+
@theme inline {
|
|
13
|
+
--color-background: var(--background);
|
|
14
|
+
--color-foreground: var(--foreground);
|
|
15
|
+
--font-sans: var(--font-sans);
|
|
16
|
+
--font-mono: var(--font-geist-mono);
|
|
17
|
+
--color-sidebar-ring: var(--sidebar-ring);
|
|
18
|
+
--color-sidebar-border: var(--sidebar-border);
|
|
19
|
+
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
|
|
20
|
+
--color-sidebar-accent: var(--sidebar-accent);
|
|
21
|
+
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
|
|
22
|
+
--color-sidebar-primary: var(--sidebar-primary);
|
|
23
|
+
--color-sidebar-foreground: var(--sidebar-foreground);
|
|
24
|
+
--color-sidebar: var(--sidebar);
|
|
25
|
+
--color-chart-5: var(--chart-5);
|
|
26
|
+
--color-chart-4: var(--chart-4);
|
|
27
|
+
--color-chart-3: var(--chart-3);
|
|
28
|
+
--color-chart-2: var(--chart-2);
|
|
29
|
+
--color-chart-1: var(--chart-1);
|
|
30
|
+
--color-ring: var(--ring);
|
|
31
|
+
--color-input: var(--input);
|
|
32
|
+
--color-border: var(--border);
|
|
33
|
+
--color-destructive: var(--destructive);
|
|
34
|
+
--color-accent-foreground: var(--accent-foreground);
|
|
35
|
+
--color-accent: var(--accent);
|
|
36
|
+
--color-muted-foreground: var(--muted-foreground);
|
|
37
|
+
--color-muted: var(--muted);
|
|
38
|
+
--color-secondary-foreground: var(--secondary-foreground);
|
|
39
|
+
--color-secondary: var(--secondary);
|
|
40
|
+
--color-primary-foreground: var(--primary-foreground);
|
|
41
|
+
--color-primary: var(--primary);
|
|
42
|
+
--color-popover-foreground: var(--popover-foreground);
|
|
43
|
+
--color-popover: var(--popover);
|
|
44
|
+
--color-card-foreground: var(--card-foreground);
|
|
45
|
+
--color-card: var(--card);
|
|
46
|
+
--radius-sm: calc(var(--radius) - 4px);
|
|
47
|
+
--radius-md: calc(var(--radius) - 2px);
|
|
48
|
+
--radius-lg: var(--radius);
|
|
49
|
+
--radius-xl: calc(var(--radius) + 4px);
|
|
50
|
+
--radius-2xl: calc(var(--radius) + 8px);
|
|
51
|
+
--radius-3xl: calc(var(--radius) + 12px);
|
|
52
|
+
--radius-4xl: calc(var(--radius) + 16px);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
:root {
|
|
56
|
+
--background: oklch(1 0 0);
|
|
57
|
+
--foreground: oklch(0.145 0 0);
|
|
58
|
+
--card: oklch(1 0 0);
|
|
59
|
+
--card-foreground: oklch(0.145 0 0);
|
|
60
|
+
--popover: oklch(1 0 0);
|
|
61
|
+
--popover-foreground: oklch(0.145 0 0);
|
|
62
|
+
--primary: oklch(0.488 0.243 264.376);
|
|
63
|
+
--primary-foreground: oklch(0.97 0.014 254.604);
|
|
64
|
+
--secondary: oklch(0.967 0.001 286.375);
|
|
65
|
+
--secondary-foreground: oklch(0.21 0.006 285.885);
|
|
66
|
+
--muted: oklch(0.97 0 0);
|
|
67
|
+
--muted-foreground: oklch(0.556 0 0);
|
|
68
|
+
--accent: oklch(0.97 0 0);
|
|
69
|
+
--accent-foreground: oklch(0.205 0 0);
|
|
70
|
+
--destructive: oklch(0.58 0.22 27);
|
|
71
|
+
--border: oklch(0.922 0 0);
|
|
72
|
+
--input: oklch(0.922 0 0);
|
|
73
|
+
--ring: oklch(0.708 0 0);
|
|
74
|
+
--chart-1: oklch(0.809 0.105 251.813);
|
|
75
|
+
--chart-2: oklch(0.623 0.214 259.815);
|
|
76
|
+
--chart-3: oklch(0.546 0.245 262.881);
|
|
77
|
+
--chart-4: oklch(0.488 0.243 264.376);
|
|
78
|
+
--chart-5: oklch(0.424 0.199 265.638);
|
|
79
|
+
--radius: 0.625rem;
|
|
80
|
+
--sidebar: oklch(0.985 0 0);
|
|
81
|
+
--sidebar-foreground: oklch(0.145 0 0);
|
|
82
|
+
--sidebar-primary: oklch(0.546 0.245 262.881);
|
|
83
|
+
--sidebar-primary-foreground: oklch(0.97 0.014 254.604);
|
|
84
|
+
--sidebar-accent: oklch(0.97 0 0);
|
|
85
|
+
--sidebar-accent-foreground: oklch(0.205 0 0);
|
|
86
|
+
--sidebar-border: oklch(0.922 0 0);
|
|
87
|
+
--sidebar-ring: oklch(0.708 0 0);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.dark {
|
|
91
|
+
--background: oklch(0.145 0 0);
|
|
92
|
+
--foreground: oklch(0.985 0 0);
|
|
93
|
+
--card: oklch(0.205 0 0);
|
|
94
|
+
--card-foreground: oklch(0.985 0 0);
|
|
95
|
+
--popover: oklch(0.205 0 0);
|
|
96
|
+
--popover-foreground: oklch(0.985 0 0);
|
|
97
|
+
--primary: oklch(0.42 0.18 266);
|
|
98
|
+
--primary-foreground: oklch(0.97 0.014 254.604);
|
|
99
|
+
--secondary: oklch(0.274 0.006 286.033);
|
|
100
|
+
--secondary-foreground: oklch(0.985 0 0);
|
|
101
|
+
--muted: oklch(0.269 0 0);
|
|
102
|
+
--muted-foreground: oklch(0.708 0 0);
|
|
103
|
+
--accent: oklch(0.371 0 0);
|
|
104
|
+
--accent-foreground: oklch(0.985 0 0);
|
|
105
|
+
--destructive: oklch(0.704 0.191 22.216);
|
|
106
|
+
--border: oklch(1 0 0 / 10%);
|
|
107
|
+
--input: oklch(1 0 0 / 15%);
|
|
108
|
+
--ring: oklch(0.556 0 0);
|
|
109
|
+
--chart-1: oklch(0.809 0.105 251.813);
|
|
110
|
+
--chart-2: oklch(0.623 0.214 259.815);
|
|
111
|
+
--chart-3: oklch(0.546 0.245 262.881);
|
|
112
|
+
--chart-4: oklch(0.488 0.243 264.376);
|
|
113
|
+
--chart-5: oklch(0.424 0.199 265.638);
|
|
114
|
+
--sidebar: oklch(0.205 0 0);
|
|
115
|
+
--sidebar-foreground: oklch(0.985 0 0);
|
|
116
|
+
--sidebar-primary: oklch(0.623 0.214 259.815);
|
|
117
|
+
--sidebar-primary-foreground: oklch(0.97 0.014 254.604);
|
|
118
|
+
--sidebar-accent: oklch(0.269 0 0);
|
|
119
|
+
--sidebar-accent-foreground: oklch(0.985 0 0);
|
|
120
|
+
--sidebar-border: oklch(1 0 0 / 10%);
|
|
121
|
+
--sidebar-ring: oklch(0.556 0 0);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
@layer base {
|
|
125
|
+
* {
|
|
126
|
+
@apply border-border outline-ring/50;
|
|
127
|
+
}
|
|
128
|
+
body {
|
|
129
|
+
@apply bg-background text-foreground;
|
|
130
|
+
}
|
|
131
|
+
}
|