Quellcode durchsuchen

v0.8.0 changeset (#125)

Chris Tate vor 4 Monaten
Ursprung
Commit
09376db
3 geänderte Dateien mit 92 neuen und 0 gelöschten Zeilen
  1. 1 0
      .changeset/config.json
  2. 29 0
      .changeset/react-pdf.md
  3. 62 0
      apps/web/app/(main)/docs/changelog/page.mdx

+ 1 - 0
.changeset/config.json

@@ -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 - 0
.changeset/react-pdf.md

@@ -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`.

+ 62 - 0
apps/web/app/(main)/docs/changelog/page.mdx

@@ -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