- HTML-native — Nodes map to real HTML tags and CSS, so you stay close to the platform.
- Schema-first — UI is defined as a tree of nodes (data), so you don’t write imperative DOM code.
- Create, then render — Validate definition to get a schema, then pass schema and container to render.
- Platform-aware — Renderer follows HTML rules (e.g. void elements, template, SVG) so result is valid.
Note
Prerequisites: For Deno use deno.com. For npm use Node.js (e.g. nodejs.org).
Deno (JSR):
deno add jsr:@neabyte/schema2uiNode (npm):
npm install @neabyte/schema2ui<script type="module">
import { create, render } from 'https://esm.sh/jsr/@neabyte/schema2ui'
// or pin version: .../schema2ui@0.2.0
</script>- Latest:
https://esm.sh/jsr/@neabyte/schema2ui - Pinned:
https://esm.sh/jsr/@neabyte/schema2ui@<version>
Define a tree with root (array of nodes). Each node has type (HTML tag name), optional layout, style, attrs, content, and children. Call create(definition) then render(schema, container). For refs and lifecycle (events, dialog, focus), use render(schema, container, { refs, onNodeMount }) — see USAGE.
import { create, render } from '@neabyte/schema2ui'
const schema = create({
root: [{ type: 'h1', content: 'Hello World' }]
})
render(schema, document.getElementById('app'))From the repo root (requires Deno).
Check — format, lint, and typecheck:
deno task checkTests — format/lint tests and run:
deno task testTests live under tests/ (Create, Constant, Validator, Render).
This project is licensed under the MIT license. See the LICENSE file for details.