Decklight

The presentation library that presents itself

Every feature on the next slides is demonstrated live, by the slide itself.
This presentation is fully voiced: V toggles the voice, N changes it.
Use → to advance. Press ? anytime.

Builds

Keynote-style progressive reveals — the container opts in

…and leaf elements can pop in on their own.

Theme-Aware SVG Diagrams

Authored once with tokens — recolored by all 46 themes

Engine builds · nav · svg · print 46 themes · 2 packs one token contract Terminal player event casts, never video CLI import · rec · pdf · bundle Strokes draw in (data-build="draw") · messages flow (SMIL, theme-tokened) · ids auto-namespaced · concept colors pin boxes

Charts From Data

Declare the numbers — the theme paints them. No chart library, no images

Charts Build Like Diagrams

data-build="draw" — each series draws in on ⟨CLICK⟩, same machinery as the strokes

Comparison Slides

data-layout="split" — two sibling blocks become the columns

Pros

  • The columns share a top edge — unequal heights, headings still line up
  • No per-column flexbox to hand-roll
  • split-flip mirrors the pair

Cons

  • Two columns, deliberately — three is another slide

A third block is a footer, not a third column: full width, centred, under both — exactly where a note about the whole comparison belongs.

Auto-Animate

Magic Move between adjacent slides

Extract
Transform
Load

Advance once — the middle box takes over the stage.

Auto-Animate

Zoom into the detail — FLIP-morphed, HTML and SVG alike

Transform
validate the schema
enrich with lookups

Element Animations

Looping attention effects — only while the slide is active

pulse float shake spin blink
bounce swing glow breathe

All of it collapses under prefers-reduced-motion.

Code, Stepped Line by Line

This snippet is the source of the builds slide you just saw

<ul data-build="fade-up">
  <li>data-build on the list — every item steps</li>
  <li>One attribute, zero per-item classes</li>
  <li>Hidden steps hold their space</li>
</ul>

<p data-build="pop">…and leaves can pop in on their own.</p>

Math, Rendered Native

data-math + LaTeX → MathML Core — no webfonts, no build step, no network

$$\begin{aligned} \nabla \cdot \vec{E} \;&= \frac{\rho}{\varepsilon_0} & \nabla \times \vec{E} \;&= -\frac{\partial \vec{B}}{\partial t} \\[0.5em] \nabla \cdot \vec{B} \;&= 0 & \nabla \times \vec{B} \;&= \mu_0 \Bigl( \vec{J} + \varepsilon_0 \frac{\partial \vec{E}}{\partial t} \Bigr) \end{aligned}$$

Inline math sits right in the sentence — light moves at \(c = 1/\sqrt{\mu_0 \varepsilon_0}\) — while \$ keeps \$5 five dollars, and a lone $ never trips the parser.

Terminal Recordings

Real PTY output, replayed step by step — never a video

Slides From a Prompt

Describe the slide — an agent writes the Decklight

Kafka: Producer to Consumers

The slide the agent generated — shipped untouched

Kafka Broker topic: orders · 3 partitions P0 0 1 2 3 P1 0 1 2 P2 0 1 2 3 4 each square = one message at its offset Producer produce · round-robin 1 2 3 Consumer A consume P0 consume P1 consumer group Consumer B consume P2 producer round-robins P0 → P1 → P2 · consumer group splits: A reads P0 & P1, B reads P2 · colors via var(--d-*)

62 Themes in 5 Packs

Try it now — this deck ships them all

Ttheme picker — packs first, Enter drills in, ✳ flattens, type to filter
, / .cycle themes — crossing a pack asks you to confirm
⌃Tgenerate a brand-new theme (WCAG-fitted, rule-conforming)
⌃⇧Tsave it — localStorage + a portable .css download
[ / ]cycle the deck's type through nine font stacks

A Theme Is Just a File

No registry, no version number — the unit you share is one CSS file

decklight theme check sunset.css          # contract-complete? WCAG gates?
decklight theme add sunset.css deck.html  # validates, then installs

Presenting

Everything a stage needs, no server required

The Deck Speaks

V narrates the notes · N picks the voice · C captions it

Full-Bleed Backgrounds

One attribute on the section — the deck does the rest

Background Video

Muted, looping — and honest about print

Bring the Deck You Already Have

decklight import — PowerPoint, Keynote, or a Google Slides link

One File to Ship

The CLI records, refreshes, exports — and flattens

decklight import talk.pptx          # PowerPoint · Keynote · Google Slides
decklight cast demo.term.yaml       # record a cast in a real PTY
decklight refresh casts/            # re-record everything, report drift
decklight pdf deck.html             # every slide to PDF — overflows named
decklight bundle deck.html --all    # ONE self-contained HTML, themes included

This showcase bundles to a single file that works offline — logo, casts, and all 46 themes embedded.

Verified by Construction

Built for authors who can prove their deck works

One HTML File. No Build Step.

Two stylesheets, one script — view source on this deck to start yours

Press O to see everything you just watched, or / to jump back anywhere.

Quizzes

The last thing every presentation needs

What's the last thing everyone needs when they've just followed a presentation? A quiz, of course! So, Decklight:

Pop Quiz

Twelve questions on what you just watched — 80% to pass

Click an answer on each slide, then → to move on. Your score is tallied on the last slide — nothing is graded until you ask for it.

Question 1 of 12

What attribute turns a container's children into Keynote-style progressive reveals?

Question 2 of 12

Where do the deck's inline SVG diagrams get their color from?

Question 3 of 12

What makes two adjacent slides Magic-Move between each other?

Question 4 of 12

How many looping data-animate effects did the element-animations slide show?

Question 5 of 12

A slide centres its content. What happens when that content is taller than the slide?

Question 6 of 12

How are the deck's terminal recordings stored and replayed?

Question 7 of 12

How many themes, across how many packs, ship with this deck?

Question 8 of 12

Which key opens the theme picker while presenting?

Question 9 of 12

Which CLI command flattens a whole deck — casts, themes and all — into one self-contained HTML file?

Question 10 of 12

What marks a slide whose content doesn't fit, so both humans and headless tests can catch it?

Question 11 of 12

In a data-layout="split" slide, what does a third content block become?

Question 12 of 12

What does decklight import do with a PowerPoint chart it can't convert?

Your Score

Reveal it whenever the room's ready