The Theme Cascade
outkit theme detect scans your repo in this order, stopping at the first source that
returns enough tokens:
- shadcn/ui CSS variables
- Tailwind v4
@themeblocks - Tailwind v3 config (
tailwind.config.{js,ts}) - CSS-in-JS configs (Chakra, Mantine, Stitches, Panda, Tamagui)
- Inline
<ThemeProvider>JSX literals - Generic
:root { --… }blocks - SVG logo extraction (primary color from your logo)
- Repo-wide hex frequency
Interactive flow
One-shot
| Flag | Effect |
|---|---|
--from <file> | Use a specific source instead of the cascade. |
--map <map.json> | Override the canonical token name mapping. |
--preset <id> | Use a curated palette instead of detecting. |
-y | Skip the diff confirmation. |
Presets
modern-neutralvibrant-violetwarm-editorialdark-first
outkit theme apply --preset modern-neutral.
Round-tripping outkit.theme.json
outkit theme diff as a CI gate to ensure the deployed profile matches what’s in your
repo.
CI hook
prebuild script to your package.json that runs outkit theme sync on every
build, so a token change in your codebase always lands in the deployed profile.
Watch mode
Helpers
Next Steps
Profiles and deploy
Treat profiles as code:
outkit profiles diff / push / pull / deploy / rollback.Tail render logs
Watch what your design tokens look like on real renders.