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

NameValuePurpose
Slate 200#e2e8f0Default foreground
Slate 300#cbd5e1Muted text, parameters, properties
Slate 400#94a3b8Descriptions, placeholders
Slate 500#64748bComments, line numbers
Slate 600#475569Secondary buttons hover
Slate 700#334155Borders, secondary button bg
Slate Editor#282c34Editor background
Slate Chrome#21252bSidebar, activity bar
Slate 800#1e293bStatus bar, inputs
Slate 900#0f172aDeepest surfaces

Teal (signature)

NameValuePurpose
Teal 200#99f6e4Strings
Teal 300#5eead4Accent — focus, selection, CTAs
Teal 400#2dd4bfAccent hover (light mode)
Teal 700#0f766eButton background

Accents

NameValuePurpose
Sky 300#7dd3fcFunction names
Sky 400#38bdf8Keywords, control flow, info
Rose 400#fb7185Constants, numbers, booleans, errors
Purple#b388ffLanguage built-ins (this, self)
Amber 400#fbbf24Escape chars, warnings
Amber 700#b45309Secondary warning surfaces

Semantic roles

Component styles should consume semantic roles, never raw palette values. This keeps theme variants (dark/light) interchangeable.

RoleDark valueConsumed by
bg.base#282c34Page body, editor
bg.raised#21252bCards, sidebars
bg.elevated#1e293bStatus bar, inputs
bg.inset#0f172aInlaid panels
fg.default#e2e8f0Body text
fg.muted#cbd5e1Secondary text
fg.subtle#94a3b8Descriptions, placeholders
fg.faint#64748bComments, disabled
accent#5eead4Focus, selection, primary CTAs

Syntax token map

Each accent carries specific meaning. Breaking this map breaks Slatewave’s cross-tool coherence.

Token kindColorExample
CommentSlate 500// a comment
StringTeal 200"hello"
Number / booleanRose 40042, true, null
KeywordSky 400export, return, if
Function nameSky 300greet()
Type / classTeal 300interface Theme
ConstantRose 400MAX_VALUE
Language built-inPurplethis, self, super
Escape / entityAmber 400\n, \\

Mirroring into a new theme

When adding a new theme (Ghostty, iTerm, Slack, tmux, etc.):

  1. Start from vscode-slatewave/themes/slatewave-color-theme.json
  2. Map semantic roles to the target tool’s own role system — not raw colors. If the target only exposes a single accent slot, use Teal 300.
  3. Ensure the syntax token map is preserved where the tool supports syntax highlighting.
  4. Open a PR on this site’s repo adding a src/content/themes/<slug>.mdx entry pointing at the new repo.