Presets are a starting point. Any theme you can build on ui.shadcn.com/create works, because a preset is the same thing that page produces.
How a preset maps to shadcn create
| shadcn create | preset folder |
|---|---|
style (for example lyra) | preset.json shadcn.style |
| base color | preset.json shadcn.baseColor |
| fonts | preset.json fonts |
| radius and color variables | theme.css, the --radius and color tokens |
Apply a theme to a generated project
- Open ui.shadcn.com/create and design the theme.
- Copy the
:rootand.darkblocks it gives you. - Paste them into
packages/ui/src/styles/theme.css, replacing the existing tokens. - If you changed fonts, edit
apps/web/app/fonts.tsandapps/dashboard/app/fonts.ts. The style and base color live in thecomponents.jsonfiles.
All components read the tokens, so the landing page and the dashboard change together. The dev server hot reloads, no rebuild needed.
Make it a preset
To reuse a theme across projects, or contribute one:
- Create
presets/<id>/. - Put the pasted tokens in
theme.css. - Add a
preset.jsonwithlabel,description,shadcnandfonts, like the monochrome one.
The cli picks the folder up on the next run, so --preset <id> works with no code change.