Compare commits

...
Author SHA1 Message Date
Chris Tate 5884069de8 v0.8.0 changeset 2026-02-20 02:12:28 -06:00
3 changed files with 92 additions and 0 deletions
+1
View File
@@ -6,6 +6,7 @@
[
"@json-render/core",
"@json-render/react",
"@json-render/react-pdf",
"@json-render/shadcn",
"@json-render/react-native",
"@json-render/remotion",
+29
View File
@@ -0,0 +1,29 @@
---
"@json-render/core": minor
"@json-render/react-pdf": minor
---
New `@json-render/react-pdf` package for generating PDF documents from JSON specs.
### New: `@json-render/react-pdf`
PDF renderer for json-render, powered by `@react-pdf/renderer`. Define catalogs and registries the same way as `@json-render/react`, but output PDF documents instead of web UI.
- `renderToBuffer(spec)` — render a spec to an in-memory PDF buffer
- `renderToStream(spec)` — render to a readable stream (pipe to HTTP response)
- `renderToFile(spec, path)` — render directly to a file on disk
- `defineRegistry` / `createRenderer` — same API as `@json-render/react` for custom components
- `standardComponentDefinitions` — Zod-based catalog definitions (server-safe via `@json-render/react-pdf/catalog`)
- `standardComponents` — React PDF implementations for all standard components
- Server-safe import via `@json-render/react-pdf/server`
Standard components:
- **Document structure**: Document, Page
- **Layout**: View, Row, Column
- **Content**: Heading, Text, Image, Link
- **Data**: Table, List
- **Decorative**: Divider, Spacer
- **Page-level**: PageNumber
Includes full context support: state management, visibility conditions, actions, validation, and repeat scopes — matching the capabilities of `@json-render/react`.
@@ -4,6 +4,68 @@ export const metadata = { title: "Changelog" }
Notable changes and updates to json-render.
## v0.8.0
February 2026
### New: `@json-render/react-pdf`
PDF renderer for json-render, powered by [`@react-pdf/renderer`](https://react-pdf.org/). Define catalogs and registries the same way as `@json-render/react`, but output PDF documents instead of web UI.
```bash
npm install @json-render/core @json-render/react-pdf
```
```typescript
import { renderToBuffer } from "@json-render/react-pdf";
import type { Spec } from "@json-render/core";
const spec: Spec = {
root: "doc",
elements: {
doc: { type: "Document", props: { title: "Invoice" }, children: ["page"] },
page: {
type: "Page",
props: { size: "A4" },
children: ["heading", "table"],
},
heading: {
type: "Heading",
props: { text: "Invoice #1234", level: "h1" },
children: [],
},
table: {
type: "Table",
props: {
columns: [
{ header: "Item", width: "60%" },
{ header: "Price", width: "40%", align: "right" },
],
rows: [
["Widget A", "$10.00"],
["Widget B", "$25.00"],
],
},
children: [],
},
},
};
const buffer = await renderToBuffer(spec);
```
Server-side rendering APIs:
- `renderToBuffer(spec)` -- render to an in-memory PDF buffer
- `renderToStream(spec)` -- render to a readable stream (pipe to HTTP response)
- `renderToFile(spec, path)` -- render directly to a file
15 standard components covering document structure (Document, Page), layout (View, Row, Column), content (Heading, Text, Image, Link), data (Table, List), decorative (Divider, Spacer), and page-level (PageNumber).
Supports custom catalogs with `defineRegistry`, server-safe imports via `@json-render/react-pdf/server`, and full context support (state, visibility, actions, validation, repeat scopes).
---
## v0.7.0
February 2026