Skip to content

Commit 0fbe16d

Browse files
tthallosclaude
andcommitted
feat: add builder package and ship animation/transition support
- @pagus-kit/builder: programmatic IR authoring API for agent-driven deck generation (createPresentation, createSlide, element factories) - core: expose TransitionParser, AnimationParser, DrawingML inheritance resolver, and full preset geometry evaluator - react: add useSlideTransition / useSlideAnimations hooks - Bump all published packages to 0.0.1; update README package list, roadmap, and clone URL Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1 parent c067d50 commit 0fbe16d

54 files changed

Lines changed: 7105 additions & 368 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ A modular PPTX web renderer that parses PowerPoint files and renders them in the
1010
- **Web font substitution** — maps Office fonts (Calibri, Microsoft YaHei, SimSun, etc.) to metrically compatible Google Fonts
1111
- **Embedded font extraction** — reads fonts embedded in `.pptx` files and renders them via `@font-face`
1212
- **React components** — drop-in `<PptxViewer>` with file upload, slide navigation, and font loading
13+
- **Slide transitions & entrance animations** — CSS-based playback for transitions and common DrawingML animation effects
14+
- **Deck authoring API**`@pagus-kit/builder` assembles the IR programmatically (slides, shapes, text, fills) for agent-driven generation
1315
- **MCP Apps integration** — inline slide preview inside Claude Desktop / claude.ai via `@pagus-kit/mcp`
1416
- **Framework-agnostic core** — use `@pagus-kit/core` + `@pagus-kit/renderer` with any framework or headless in Node.js
1517

@@ -19,6 +21,7 @@ A modular PPTX web renderer that parses PowerPoint files and renders them in the
1921
|---|---|---|
2022
| [`@pagus-kit/core`](./packages/core) | PPTX parser + intermediate representation (IR) | [![npm](https://img.shields.io/npm/v/@pagus-kit/core)](https://www.npmjs.com/package/@pagus-kit/core) |
2123
| [`@pagus-kit/renderer`](./packages/renderer) | Framework-agnostic SVG string renderer | [![npm](https://img.shields.io/npm/v/@pagus-kit/renderer)](https://www.npmjs.com/package/@pagus-kit/renderer) |
24+
| [`@pagus-kit/builder`](./packages/builder) | IR authoring API for constructing decks programmatically | [![npm](https://img.shields.io/npm/v/@pagus-kit/builder)](https://www.npmjs.com/package/@pagus-kit/builder) |
2225
| [`@pagus-kit/react`](./packages/react) | React components (`PptxViewer`, `SlideView`, hooks) | [![npm](https://img.shields.io/npm/v/@pagus-kit/react)](https://www.npmjs.com/package/@pagus-kit/react) |
2326
| [`@pagus-kit/mcp`](./packages/mcp) | MCP server for inline PPTX preview in AI clients | [![npm](https://img.shields.io/npm/v/@pagus-kit/mcp)](https://www.npmjs.com/package/@pagus-kit/mcp) |
2427

@@ -153,7 +156,7 @@ Pagus uses a two-source strategy for web font fidelity:
153156
## Development
154157

155158
```bash
156-
git clone https://github.com/tthallos/pagus.git
159+
git clone https://github.com/pagus-kit/pagus.git
157160
cd pagus
158161
npm install
159162
npm run build # builds all packages in dependency order
@@ -167,6 +170,7 @@ pagus/
167170
├── packages/
168171
│ ├── core/ # PPTX parser + IR types
169172
│ ├── renderer/ # SVG string renderer
173+
│ ├── builder/ # IR authoring API
170174
│ ├── react/ # React components + hooks
171175
│ └── mcp/ # MCP Apps server
172176
├── playground/ # Development playground (Vite + React)
@@ -178,9 +182,10 @@ pagus/
178182
| Command | Description |
179183
|---|---|
180184
| `npm run dev` | Start the playground dev server |
181-
| `npm run build` | Build all packages (core → renderer → react → mcp → playground) |
185+
| `npm run build` | Build all packages (core → renderer → builder → react → mcp → playground) |
182186
| `npm run build:core` | Build `@pagus-kit/core` only |
183187
| `npm run build:renderer` | Build `@pagus-kit/renderer` only |
188+
| `npm run build:builder` | Build `@pagus-kit/builder` only |
184189
| `npm run build:react` | Build `@pagus-kit/react` only |
185190
| `npm test` | Run tests via Vitest |
186191

@@ -234,14 +239,22 @@ Exposes a single MCP tool `render_slides` that converts a `.pptx` file path into
234239

235240
## Roadmap
236241

242+
### Shipped
243+
244+
- [x] Deck authoring API (`@pagus-kit/builder`) — programmatic IR construction for agent-driven generation
245+
- [x] Slide transitions and common entrance animations (CSS-based playback)
246+
247+
### Planned
248+
237249
- [ ] Remote HTTP MCP server with `StreamableHTTPServerTransport` for bypassing tool result size limits
238250
- [ ] Image optimization (EMF/WMF drop, raster downsampling, cross-slide deduplication)
239251
- [ ] Vue adapter (`@pagus-kit/vue`)
240252
- [ ] Full DrawingML property inheritance chain
241253
- [ ] More preset shape types
242254
- [ ] SmartArt support
243-
- [ ] Slide transitions and animations (CSS)
255+
- [ ] Expanded animation coverage (motion paths, emphasis / exit effects)
244256
- [ ] Slide notes and speaker view
257+
- [ ] PPTX export from the builder IR
245258

246259
## License
247260

0 commit comments

Comments
 (0)