Contributing
How to add a new theme or propose changes to the Slatewave palette.
Slatewave is a small system; contribution should feel small too. There are three kinds of contributions:
1. Fix or extend an existing theme
Each theme lives in its own repo. Open an issue or PR there:
Keep changes aligned with the palette spec. A PR that uses teal for something that isn’t a signal (focus, selection, CTA) is unlikely to land.
2. Port Slatewave to a new tool
Before you start:
- Read the design principles
- Read the palette spec and understand the semantic role and syntax token maps
- Make sure the target tool has a theme extension model — Slatewave should work without patching the app itself
Then:
- Create a new public repo named
<tool>-slatewaveorslatewave-<tool> - Mirror the palette via the role mapping, not raw values
- Add a
src/content/themes/<slug>.mdxentry here via PR
3. Propose a palette change
The palette itself rarely changes. When it does, the change is proposed
and applied in vscode-slatewave
first — that’s the source of truth. Once merged there, downstream themes
and this site update to match.
Palette PRs need to articulate:
- What role is changing and why
- The before/after contrast ratio against the relevant backgrounds
- How the change propagates to each existing theme
Website changes
This site lives at
github.com/kevinlangleyjr/getslatewave.
Run locally:
pnpm install
pnpm dev
New themes are added by creating
src/content/themes/<slug>.mdx. The schema is defined in
src/content.config.ts — follow an existing theme as a template.