📄️ @genetik/schema
The schema package is the foundation of the Genetik ecosystem. It uses its own config API (not raw JSON Schema) and returns a schema with getters plus a contentSchema (JSON Schema for the content document). Other packages (@genetik/content, @genetik/renderer, @genetik/builder, etc.) depend on it.
📄️ @genetik/content
The content package provides the flat content model, parsing of content JSON strings, validation of content against a schema, and normalization (inline → flat + id generation). It depends on @genetik/schema for block types and config validation.
📄️ @genetik/patches
Structured mutations over content: add node, remove node, update config, reorder slot. Apply a patch to get new content without mutating the input. Used by revisions (drafts/published, history), undo/redo, and LLM edit-in-place.
📄️ @genetik/renderer
Framework-agnostic core that resolves content and schema into a resolved tree of nodes. It does not render UI; a binding (e.g. @genetik/renderer-react) maps the tree to framework components.
📄️ @genetik/renderer-react
React binding for @genetik/renderer: takes flat content (object or JSON string), a schema, and a component map (block type → React component) and renders the content tree.
📄️ Content editor (@genetik/editor + @genetik/editor-react)
The content editor lets you add, remove, and reorder blocks in Genetik content via a block palette, canvas, and drag-and-drop. It is split into:
📄️ @genetik/context-events
Framework-agnostic contract and utilities for page context and events in the Genetik render tree. This package defines types and helpers only; @genetik/renderer-react and @genetik/editor-react implement providing context via React context and forwarding events to the host.