Theme gallery
Every built-in Deckard theme, previewed as a real slide canvas painted by that theme's own stylesheet, switchable between light and dark.
Each card applies one theme to the same slide in light and dark mode. The previews are [data-slide-canvas] elements with the chrome and progress bar the runtime renders. The stylesheet painting them is packages/themes/src/<name>/theme.css, the same file a deck loads.
Switch a card between light and dark, or enlarge it to take the full row. Every one of them carries both color modes; defaultColorMode decides which one a browser opens on.
meridian
opens systemThe quietest one. Flat surfaces, no shadow in either mode.
- Import
import { meridian } from "@thebuilder/deckard-themes"- Canvas class
.meridian-theme- Opens in
- system, and carries both light and dark
atelier
opens systemA print poster. Hard rules, flat colour blocks, no radius.
- Import
import { atelier } from "@thebuilder/deckard-themes"- Canvas class
.atelier-theme- Opens in
- system, and carries both light and dark
aurora
opens darkA live field behind the openers and the close, frozen to capture.
- Import
import { aurora } from "@thebuilder/deckard-themes"- Canvas class
.aurora-theme- Opens in
- dark, and carries both light and dark
blueprint
opens darkA drafting sheet. A ruled field, boxed numerals, hairline gutters.
- Import
import { blueprint } from "@thebuilder/deckard-themes"- Canvas class
.blueprint-theme- Opens in
- dark, and carries both light and dark
cotton
opens systemLarge radii, one soft shadow, and tints instead of lines.
- Import
import { cotton } from "@thebuilder/deckard-themes"- Canvas class
.cotton-theme- Opens in
- system, and carries both light and dark
ledger
opens systemA bound report. Serif, sans, and mono, each with one job.
- Import
import { ledger } from "@thebuilder/deckard-themes"- Canvas class
.ledger-theme- Opens in
- system, and carries both light and dark
nexus
opens darkA flight console. Capitalised headings with an accent halo.
- Import
import { nexus } from "@thebuilder/deckard-themes"- Canvas class
.nexus-theme- Opens in
- dark, and carries both light and dark
noir
opens darkA lookbook. Hairlines, centred layouts, and no mono face.
- Import
import { noir } from "@thebuilder/deckard-themes"- Canvas class
.noir-theme- Opens in
- dark, and carries both light and dark
phosphor
opens darkA green CRT. Monospace everywhere, scanlines, a heading bloom.
- Import
import { phosphor } from "@thebuilder/deckard-themes"- Canvas class
.phosphor-theme- Opens in
- dark, and carries both light and dark
quorum
opens lightA board pack. A tight scale, serif figures, no boxed cards.
- Import
import { quorum } from "@thebuilder/deckard-themes"- Canvas class
.quorum-theme- Opens in
- light, and carries both light and dark
Pick one by importing it:
import { meridian } from "@thebuilder/deckard-themes"
Or switch an existing deck with deckard add theme meridian. See the themes guide for ejecting and for writing your own.
meridian
defaultColorMode: "system", both modes. This is the theme a new deck opens in.
The quietest theme here. A near-white blue-gray in light mode and a cool near-black in dark, flat surfaces with a hairline border and softly rounded corners, no shadow in either mode. A white card on a white sheet with no shadow asks a lot of its border. If a deck of yours reads flat rather than calm, that is the thing to put back.
Light
- --background
- oklch(0.988 0.002 250)
- --card
- oklch(1 0 0)
- --muted
- oklch(0.962 0.004 250)
- --border
- oklch(0.885 0.005 250)
- --primary
- oklch(0.505 0.145 258)
- --foreground
- oklch(0.205 0.012 250)
Dark
- --background
- oklch(0.185 0.008 250)
- --card
- oklch(0.225 0.01 250)
- --muted
- oklch(0.28 0.012 250)
- --border
- oklch(0.325 0.012 250)
- --primary
- oklch(0.735 0.135 258)
- --foreground
- oklch(0.965 0.003 250)
aurora
defaultColorMode: "dark", both modes.
A live field behind the slides that open, break, state, and close a deck. Four background variants paint in a WebGL canvas rather than in CSS: hero and breaker take banded curtains, closing an undulating band, and statement a soft noise wash. Under every canvas the theme paints a gradient of the same three colours, and that gradient is the slide while the runtime loads, on a machine with no WebGL, and after a lost context. Reduced motion, a capture, and the presenter preview each hold the field on one fixed frame, so two screenshots of a slide are the same image.
Dark is home. Light mode carries its own field colours rather than the dark ones lightened, and both sets sit in theme.css beside the rest of the paint. Body copy runs light in Manrope under tightly tracked Space Grotesk display type.
The aurora card in the gallery is showing that painted gradient. The gallery renders slide markup and no runtime, so the card carries the hero variant’s fallback rather than a canvas.
Light
- --background
- oklch(0.985 0.006 275)
- --card
- oklch(0.955 0.012 275)
- --muted
- oklch(0.955 0.012 275)
- --border
- oklch(0.885 0.016 275)
- --primary
- oklch(0.45 0.155 195)
- --foreground
- oklch(0.215 0.032 275)
Dark
- --background
- oklch(0.165 0.032 275)
- --card
- oklch(0.215 0.038 275)
- --muted
- oklch(0.215 0.038 275)
- --border
- oklch(0.345 0.036 275)
- --primary
- oklch(0.755 0.155 195)
- --foreground
- oklch(0.975 0.008 275)
blueprint
defaultColorMode: "dark", both modes.
A drafting sheet. The background variant that carries the theme is grid, which draws a cell pitch and a division pitch over each other from the same corner. Nothing is rounded and nothing is tinted: a section number sits boxed in three strokes of the accent, a card grid is butted together over a field of the line colour so the gutters read as drawn divisions, and an opener’s meta row becomes the title block along the foot of the sheet. Body copy runs a weight under regular in both modes, which is what keeps a slide reading as a drawing rather than as a web page.
Light
- --background
- oklch(0.985 0.006 240)
- --card
- oklch(0.955 0.012 240)
- --muted
- oklch(0.955 0.012 240)
- --border
- oklch(0.855 0.024 240)
- --primary
- oklch(0.505 0.135 235)
- --foreground
- oklch(0.235 0.036 245)
Dark
- --background
- oklch(0.185 0.032 245)
- --card
- oklch(0.235 0.036 245)
- --muted
- oklch(0.235 0.036 245)
- --border
- oklch(0.375 0.04 240)
- --primary
- oklch(0.795 0.135 205)
- --foreground
- oklch(0.965 0.012 220)
ledger
defaultColorMode: "system", both modes.
A bound report. Nothing is rounded and nothing is raised; rules carry the structure a shadow would carry elsewhere. Three families on one slide, each with exactly one job: serif says what the section is, sans argues it, mono numbers it. The accent is oxblood on paper and a warmer rust after dark.
Light
- --background
- oklch(0.982 0.008 88)
- --card
- oklch(0.955 0.012 88)
- --muted
- oklch(0.955 0.012 88)
- --border
- oklch(0.845 0.012 80)
- --primary
- oklch(0.475 0.145 28)
- --foreground
- oklch(0.225 0.018 60)
Dark
- --background
- oklch(0.185 0.012 60)
- --card
- oklch(0.225 0.014 60)
- --muted
- oklch(0.285 0.016 60)
- --border
- oklch(0.335 0.014 70)
- --primary
- oklch(0.735 0.125 42)
- --foreground
- oklch(0.955 0.012 88)
nexus
defaultColorMode: "dark", both modes.
A flight console. Dark is home. Every heading is capitalised with a hair of positive tracking, and h1, h2, and the StatGrid figure carry an accent halo through --slide-halo. The halo is none in light mode, so light mode reads as the printed version of the same document rather than as a second theme.
Light
- --background
- oklch(0.975 0.004 258)
- --card
- oklch(0.945 0.008 258)
- --muted
- oklch(0.945 0.008 258)
- --border
- oklch(0.835 0.012 258)
- --primary
- oklch(0.535 0.155 48)
- --foreground
- oklch(0.205 0.025 258)
Dark
- --background
- oklch(0.155 0.022 258)
- --card
- oklch(0.205 0.026 258)
- --muted
- oklch(0.255 0.03 258)
- --border
- oklch(0.335 0.03 258)
- --primary
- oklch(0.79 0.155 68)
- --foreground
- oklch(0.96 0.008 258)
phosphor
defaultColorMode: "dark", both modes.
A green CRT. One monospace family for every word on the slide, scanlines painted across every background variant, and a phosphor bloom on display headings. It also runs a thinner status bar than the rest, taking --slide-footer-space below the contract default, which hands the space back to the slide. Light mode turns the tube off, for handouts and for printing.
Light
- --background
- oklch(0.975 0.008 150)
- --card
- oklch(0.945 0.012 150)
- --muted
- oklch(0.945 0.012 150)
- --border
- oklch(0.8 0.035 150)
- --primary
- oklch(0.475 0.135 148)
- --foreground
- oklch(0.245 0.055 150)
Dark
- --background
- oklch(0.145 0.012 155)
- --card
- oklch(0.185 0.016 155)
- --muted
- oklch(0.235 0.02 155)
- --border
- oklch(0.335 0.045 150)
- --primary
- oklch(0.855 0.185 148)
- --foreground
- oklch(0.905 0.075 150)
atelier
defaultColorMode: "system", both modes.
A print poster. --slide-rule and --slide-surface-border are both the foreground, so every line on the slide is full-strength ink at the theme’s own 4px measure rather than a tint at one. Headings are Archivo capitals at the heaviest weight the face carries, and the display size runs well past every other theme here. Grid cells and the highlighted table row are flooded with the accent and flip their ink rather than taking a tint. Nothing is rounded and nothing is raised.
Light
- --background
- oklch(0.965 0.012 95)
- --card
- oklch(0.995 0.004 95)
- --muted
- oklch(0.915 0.02 95)
- --border
- oklch(0.155 0.01 60)
- --primary
- oklch(0.575 0.215 28)
- --foreground
- oklch(0.155 0.01 60)
Dark
- --background
- oklch(0.165 0.008 60)
- --card
- oklch(0.225 0.01 60)
- --muted
- oklch(0.305 0.012 60)
- --border
- oklch(0.965 0.012 95)
- --primary
- oklch(0.665 0.19 30)
- --foreground
- oklch(0.965 0.012 95)
cotton
defaultColorMode: "system", both modes.
The other pole from atelier. Body copy is Outfit at weight 300, headings are Bricolage Grotesque with its optical size axis mapped rather than pinned, and the corners are the largest in the gallery. --slide-accent-soft carries the tinted card, the metrics panel and the filled capsule; the accent itself is kept for the breaker, the closing plate and the dots. --slide-surface-shadow is the one lift in the theme, and only data-slide-panel reads it, so a slide raises at most one surface however many blocks it composes.
Light
- --background
- oklch(0.975 0.016 62)
- --card
- oklch(0.995 0.006 62)
- --muted
- oklch(0.935 0.032 60)
- --border
- oklch(0.895 0.024 58)
- --primary
- oklch(0.735 0.135 42)
- --foreground
- oklch(0.285 0.036 42)
Dark
- --background
- oklch(0.235 0.026 42)
- --card
- oklch(0.285 0.03 42)
- --muted
- oklch(0.345 0.034 42)
- --border
- oklch(0.375 0.03 44)
- --primary
- oklch(0.795 0.125 46)
- --foreground
- oklch(0.965 0.014 62)
noir
defaultColorMode: "dark", both modes.
A fashion lookbook. Every rule is one pixel, the opener, the breaker, the statement and the quote all centre their content, and Cormorant Garamond sets the display at weight 300 with the italic kept for the statement and the quotation. There is no monospace family: --slide-font-mono carries the body sans, and tracked capitals up to --slide-track stand where another theme sets mono. Code keeps a monospaced stack of its own so a sample still lines up.
Light
- --background
- oklch(0.975 0.006 80)
- --card
- oklch(0.945 0.008 80)
- --muted
- oklch(0.945 0.008 80)
- --border
- oklch(0.855 0.008 78)
- --primary
- oklch(0.545 0.075 68)
- --foreground
- oklch(0.185 0.008 60)
Dark
- --background
- oklch(0.155 0.006 60)
- --card
- oklch(0.205 0.008 60)
- --muted
- oklch(0.205 0.008 60)
- --border
- oklch(0.345 0.01 70)
- --primary
- oklch(0.815 0.075 82)
- --foreground
- oklch(0.955 0.008 80)
quorum
defaultColorMode: "light", both modes.
A board pack. A short type scale inside a short frame, which is what lets a segment table and a five-figure band sit on one slide without shrinking. Figures and pull quotes are set in a serif and everything else in the sans, so a number being reported reads differently from a number being described. Cards hang off a stroke on their leading edge rather than sitting in a box. background: "accent" inverts the sheet rather than flooding it with the accent, in both colour modes.
Light
- --background
- oklch(0.995 0.002 250)
- --card
- oklch(0.965 0.008 250)
- --muted
- oklch(0.965 0.008 250)
- --border
- oklch(0.885 0.012 250)
- --primary
- oklch(0.435 0.145 258)
- --foreground
- oklch(0.235 0.032 258)
Dark
- --background
- oklch(0.205 0.028 258)
- --card
- oklch(0.255 0.03 258)
- --muted
- oklch(0.255 0.03 258)
- --border
- oklch(0.355 0.026 258)
- --primary
- oklch(0.685 0.125 258)
- --foreground
- oklch(0.965 0.006 250)
About the swatches
Each palette above is read out of the theme’s stylesheet when this page builds: the sheet, the card, the muted surface, the border, the accent, and the text. A theme is a hundred-odd declarations and its own THEME.md explaining them, so this is a small slice. The preview shows you what the theme looks like; the swatches tell you what to type when you want that green.