Palette spec
The canonical Slatewave palette — raw values, semantic roles, and syntax token mappings.
The Slatewave palette is a Tailwind-slate foundation with a teal signature and sky, rose, purple, and amber accents. Values listed here are the source of truth; downstream themes mirror them.
See the colors page for a visual reference with copy-on-click.
Raw palette
Slate foundation
| Name | Value | Purpose |
|---|---|---|
| Slate 200 | #e2e8f0 | Default foreground |
| Slate 300 | #cbd5e1 | Muted text, parameters, properties |
| Slate 400 | #94a3b8 | Descriptions, placeholders |
| Slate 500 | #64748b | Comments, line numbers |
| Slate 600 | #475569 | Secondary buttons hover |
| Slate 700 | #334155 | Borders, secondary button bg |
| Slate Editor | #282c34 | Editor background |
| Slate Chrome | #21252b | Sidebar, activity bar |
| Slate 800 | #1e293b | Status bar, inputs |
| Slate 900 | #0f172a | Deepest surfaces |
Teal (signature)
| Name | Value | Purpose |
|---|---|---|
| Teal 200 | #99f6e4 | Strings |
| Teal 300 | #5eead4 | Accent — focus, selection, CTAs |
| Teal 400 | #2dd4bf | Accent hover (light mode) |
| Teal 700 | #0f766e | Button background |
Accents
| Name | Value | Purpose |
|---|---|---|
| Sky 300 | #7dd3fc | Function names |
| Sky 400 | #38bdf8 | Keywords, control flow, info |
| Rose 400 | #fb7185 | Constants, numbers, booleans, errors |
| Purple | #b388ff | Language built-ins (this, self) |
| Amber 400 | #fbbf24 | Escape chars, warnings |
| Amber 700 | #b45309 | Secondary warning surfaces |
Semantic roles
Component styles should consume semantic roles, never raw palette values. This keeps theme variants (dark/light) interchangeable.
| Role | Dark value | Consumed by |
|---|---|---|
bg.base | #282c34 | Page body, editor |
bg.raised | #21252b | Cards, sidebars |
bg.elevated | #1e293b | Status bar, inputs |
bg.inset | #0f172a | Inlaid panels |
fg.default | #e2e8f0 | Body text |
fg.muted | #cbd5e1 | Secondary text |
fg.subtle | #94a3b8 | Descriptions, placeholders |
fg.faint | #64748b | Comments, disabled |
accent | #5eead4 | Focus, selection, primary CTAs |
Syntax token map
Each accent carries specific meaning. Breaking this map breaks Slatewave’s cross-tool coherence.
| Token kind | Color | Example |
|---|---|---|
| Comment | Slate 500 | // a comment |
| String | Teal 200 | "hello" |
| Number / boolean | Rose 400 | 42, true, null |
| Keyword | Sky 400 | export, return, if |
| Function name | Sky 300 | greet() |
| Type / class | Teal 300 | interface Theme |
| Constant | Rose 400 | MAX_VALUE |
| Language built-in | Purple | this, self, super |
| Escape / entity | Amber 400 | \n, \\ |
Mirroring into a new theme
When adding a new theme (Ghostty, iTerm, Slack, tmux, etc.):
- Start from
vscode-slatewave/themes/slatewave-color-theme.json - Map semantic roles to the target tool’s own role system — not raw
colors. If the target only exposes a single
accentslot, use Teal 300. - Ensure the syntax token map is preserved where the tool supports syntax highlighting.
- Open a PR on this site’s repo
adding a
src/content/themes/<slug>.mdxentry pointing at the new repo.