A master is a YAML file. It holds the whole design as data. One master serves many decks. You reference it from a deck’s headmatter:
---
master: ./your-theme.slaide.yaml
---
Omit master: and the deck uses the bundled aurora theme.
This page is the reference for the master’s shape. For a full walkthrough with examples, see Authoring a theme.
Top-level keys
| Key | What it holds |
|---|---|
schema |
The format version. Use slaide/1. |
name |
The theme name. |
canvas |
The design size. { aspect, width, height } in px. Slides scale to fit. |
fonts |
Named font roles, like display and sans. Real Google Fonts. |
typeScale |
Named size steps. base, ratio, and steps. |
colors |
Two tiers. palette for raw colors, roles for semantic aliases. |
gradients |
Named CSS gradients. Used by .grad text and slot fills. |
tokens |
Raw CSS variable overrides. Spacing, code panels, chart colors. |
backgrounds |
Named layers. solid, gradient, or image. There is no radial type. |
variants |
Named scoped overrides, like a light section. |
transitions |
default and duration. |
chrome |
header, footer, logo, logoPos. |
ui |
progress, the web position bar. Default on. |
layouts |
Grid templates with typed slots. |
Value forms
These are the parts unique to slaide. Everything else is plain YAML.
- Color reference: a palette key as
{palette.navy}, a role as{accent}, or a raw CSS color. - Gradient reference: a gradient name, or
{gradients.brand}. - Type-scale step: an explicit size like
"72px"(recommended), or an integer exponent on the scale. - Layout: an
areasmap (a row of slot names per entry), aslotsmap, and optionalrows,cols,gap,padding,align,background,variant. Keepareasrectangular. Every slot must appear inareas. - Slot: a
type(title,subtitle,body,image,media,quote,caption) and an optionalstylemap.
A minimal master
schema: slaide/1
name: my-theme
canvas: { aspect: "16:9", width: 1920, height: 1080 }
fonts:
sans: { family: "Inter", provider: google, weights: [400, 600, 700] }
display: { family: "Fraunces", provider: google, weights: [600, 900] }
colors:
palette: { navy: "#0B1220", white: "#F8FAFC", blue: "#5B8CFF" }
roles: { background: "{palette.navy}", text: "{palette.white}", accent: "{palette.blue}" }
layouts:
cover:
areas: ["title", "subtitle"]
rows: "1fr auto"
slots:
title: { type: title }
subtitle: { type: subtitle }
For fonts, gradients, tokens, backgrounds, variants, chrome, and the full slot style reference, see Authoring a theme.