FS

fancy-slides

@particle-academy/fancy-slides

Presentation editor + web viewer — Google-Slides-style deck authoring with JSON-friendly schema, full keyboard viewer, and an agent bridge.

TSUI · 7 components7 components
$npm install @particle-academy/fancy-slides
Authoring surface
Humans compose it

Controlled value + onChange, JSON-friendly props, terse defaults — so people (and agents) build it fast.

Inhabited surface
Agents drive it over MCP

A bridge in @particle-academy/agent-integrations exposes typed tools — agents read and mutate state through stable handles, never DOM scraping.

deck_add_slideslide_add_elementelement_update
Why
Building a presentation tool requires months of work: slide layouts, animations, themes, editor chrome, keyboard navigation, speaker notes. PowerPoint and Google Slides demand desktop bloat or vendor lock-in; open libraries like reveal.js focus on viewers, not authoring. Teams rebuilding presentation UX from scratch waste engineering on solved problems — positioning, drag-handles, property panels, animation sequencing. fancy-slides solves this in a JSON-friendly, agent-first package: pure data schema so LLMs emit decks directly, controlled state so humans and agents edit the same slide without conflicts, and MCP bridges so agents author presentations the way a person would.
What
fancy-slides exports two twin surfaces: SlideViewer for read-only playback (keyboard-driven, supports entrance animations and speaker notes) and DeckEditor for authoring (toolbar, slide rail, inspector, full editing). The deck schema is pure JSON — a Deck holds slides, each with positioned SlideElements (text, image, chart, code, table, shape, embed). Every element has a stable id; animations are simple objects (animation: { effect, trigger, duration, … }), not closures. Themes are registrable objects, not CSS-in-JS. useDeckState and reduceDeck hook for controlled mutations; DeckActivity events broadcast on every edit so agents track who changed what. A registry export allows swapping renderers for optional peers (fancy-echarts, fancy-code) so slides scale from simple text-only to rich dashboards.
How
Install with npm install @particle-academy/fancy-slides @particle-academy/react-fancy. To display a deck, import SlideViewer, pass a Deck object and optional theme, and include the styles: import { SlideViewer } from "@particle-academy/fancy-slides"; import "@particle-academy/fancy-slides/styles.css"; <SlideViewer deck={myDeck} />. To build an editor, use DeckEditor with controlled state: const [deck, setDeck] = useState(initialDeck); <DeckEditor value={deck} onChange={setDeck} />. For agent bridges, export registry and wire DeckActivity events to your MCP server.

Components

7 components · click any tile for a full demo, source, and install snippet.

SlideViewerOpen →
Fancy UI Kit
Composable primitives for humans and agents
v0.6.1 — 12 packages, one design system
1 / 7
Read-only full-screen viewer with keyboard nav.
PresenterViewOpen →
03:42 elapsed14:21:09
Fancy UI Kit
Composable primitives for humans and agents
v0.6.1 — 12 packages, one design system
Why Human+ UX
  • Agents and humans share the same UI surface
  • Components are authorable and inhabitable
  • Bridges expose typed tools — no Playwright scraping
  • Controlled state means humans + agents drive identical mutations
  • Trust-but-verify hooks for destructive actions
Notes: Open with the kit's mission. Pause on the tagline — 'humans and agents
Speaker-only side view — current slide + next slide + notes + clock + timer.
SlideOpen →
react-fancy

The foundation

Kanban, Editor, Calendar, Composer, Pillbox, Toast, Modal — every primitive ships controlled state and stable handles so agents can drive it.

Packaged for shadcn-style registry copy.

Single-slide renderer — shared by viewer + editor + thumbnails.
DeckEditorOpen →
deck.json
1
2
3
4
5
6
7
Fancy UI Kit
Composable primitives for humans and agents
v0.6.1 — 12 packages, one design system
Inspector
x: 0.08
y: 0.30
font: 22
Full editor — rail + canvas + inspector + toolbar.
TextElementOpen →

What ships in v0.6.1

  • Showcase chrome on react-fancy + Inertia
  • fancy-slides DeckEditor live in this preview
  • dark-slide v0.3 — markdown headings + syntax-highlighted code
  • Per-package bridges for every interactive surface
Slide text element renderer.
ImageElementOpen →
Slide image element renderer.
ShapeElementOpen →
SVG shape primitives — rect / ellipse / line / arrow / triangle.