A declarative language for slides

Write slides the way you think.

Create an object, then set its properties. Keep every slide as a clear, linear block. FrameSeq turns readable TypeScript into interactive HTML, PDF, and editable PowerPoint.

npm create frameseq@latest my-talk
slides.ts 01 / 06
presentation({
  title: "My talk",
  theme: "minimal-academic",
});

// Everything below belongs to this slide
slide("One clear idea").split("42:58");

text("A controllable object")
  .size(30)
  .color("#24528b");

right();
math`E = mc^2`;

// A new slide begins here
slide("The next idea");
Create an object Set its properties

Linear sourceNo nested page tree

Object controlChainable modifiers

Rich typesettingLaTeX + Typst

Three outputsHTML · PDF · PPTX

Live product tour

The framework, presented by itself.

Open the presentation and use Arrow keys or Space. It is the same static HTML you can deploy anywhere.

Open interactive presentation

Built with FrameSeq

Seven slides. The whole workflow.

See named layouts, progressive steps, math, Typst fragments, Tailwind utilities, shapes, and connectors in a real presentation.

  • Source stays short and editable
  • Preview stays interactive
  • The same presentation exports everywhere
Read its source

The design language

Slides that read from top to bottom.

FrameSeq uses source order as document structure. There is no wrapper around every page and no deeply nested layout markup.

slides.ts source · slide 02
New slideEverything below belongs here
slide("A clear argument")
  .split("42:58");

text("42%")
  .hero()
  .color("#b45309");
text("faster to revise").lead();
bullets(
  "Linear source order",
  "Named layout regions",
  "Controllable objects",
);

right();
text("One source, three destinations")
  .eyebrow();
code(`npm run build
npm run pdf
npm run pptx`);
slide boundary content object layout region
Rendered result Open live
Same reading orderSource order becomes visual order
Real FrameSeq outputThis is not a mockup or screenshot
01

Visible page boundaries

The next slide() starts the next page. Nothing is hidden inside wrappers.

slide("Problem")textbullets
slide("Solution")textmath
02

Layout without CSS first

Choose a slide concept; FrameSeq creates and routes its named regions.

03

Objects stay controllable

Every builder returns the same object, ready for semantic or low-level modifiers.

text object42%
.hero().color().position().style()

Built for real presentation work

Simple structure. Serious capabilities.

Start with semantic defaults. Reach for the full web platform only when you need it.

Typesetting

LaTeX math and Typst fragments

Write inline or display equations with familiar LaTeX syntax. Embed Typst when a table, diagram, or technical fragment needs richer typesetting.

−∞ e−x² dx = √π math`\int e^{-x^2} dx`
typst`
  #table(columns: 3, ...)
`.width(720);

Layout

Structured when possible. Precise when needed.

Split, grid, and named regions cover everyday composition. Canvas positioning, shapes, SVG connectors, and transforms cover diagrams.

Web-native styling

Tailwind is an escape hatch, not a requirement.

Familiar with frontend work? Pass Tailwind utilities directly to any object. Arbitrary values work without a separate setup.

text("Signal")
  .style("text-4xl font-bold
          tracking-tight text-blue-600");

AI-native authoring

Easy for AI to generate. Easy for you to revise.

A linear DSL gives models fewer ways to create tangled markup. Semantic commands produce good defaults; explicit modifiers make every generated object understandable and adjustable.

  • Small, regular API
  • Readable source order
  • Stable semantic layouts
  • Built-in layout diagnostics
Read the AI generation guide
Prompt

“Read FrameSeq’s llms.txt, then create a six-slide research presentation with math, a method diagram, and speaker notes.”

slides.tsvalidated
Open live presentation
From prompt to presentationAdaptive Inference at the Edge

All built-in themes

Seven starting points. One API.

Theme changes never change the authoring model. Choose a baseline, override global tokens, or define your own theme.

High contrast

Midnight

Classic

Beamer Default

Structured

Beamer Madrid

Warm academic

Cambridge US

Research

Minimal Academic

One source, three destinations

Present on the web. Submit a PDF. Hand off a PowerPoint.

FrameSeq owns the presentation structure while the browser provides the rendering engine. Export without maintaining three separate versions of the same presentation.

Read the export guide
Sourceslides.tsdeclarative + editable
01HTMLinteractive · deployable
02PDFportable · faithful
03PPTXeditable · shareable

Your next presentation is a TypeScript file

Build slides like building an interface.