GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - NeaByteLab/Schema2UI: Turns a JSON schema into low-level customizable DOM.

BranchesTags
Open more actions menu

Latest commit

 

History

25 Commits
25 Commits

Folders and files

NameName
Last commit message
Last commit date
.github/workflows
.github/workflows
 
 
docs
docs
 
 
src
src
 
 
tests
tests
 
 
.gitignore
.gitignore
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
USAGE.md
USAGE.md
 
 
build.config.ts
build.config.ts
 
 
deno.json
deno.json
 
 
package.json
package.json
 
 

Repository files navigation

Schema2UI

Turns a JSON schema into low-level customizable DOM.

Node Deno Bun Browser

Module type: Deno/ESM npm version JSR CI License

Features

  • 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.

Installation

Note

Prerequisites: For Deno use deno.com. For npm use Node.js (e.g. nodejs.org).

Deno (JSR):

deno add jsr:@neabyte/schema2ui

Node (npm):

npm install @neabyte/schema2ui

CDN (browser / any ESM)

<script type="module">
  import { create, render } from 'https://esm.sh/jsr/@neabyte/schema2ui'
  // or pin version: .../[email protected]
</script>
  • Latest: https://esm.sh/jsr/@neabyte/schema2ui
  • Pinned: https://esm.sh/jsr/@neabyte/schema2ui@<version>

Quick Start

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'))

Documentation

  • USAGE.md — API and type reference.
  • docs/ — Browser demo: build then open docs/index.html.

Build & Test

From the repo root (requires Deno).

Check — format, lint, and typecheck:

deno task check

Tests — format/lint tests and run:

deno task test

Tests live under tests/ (Create, Constant, Validator, Render).

License

This project is licensed under the MIT license. See the LICENSE file for details.

About

Turns a JSON schema into low-level customizable DOM.

neabytelab.github.io/Schema2UI

Topics

browsercreate-elementcss-mappingdeclarative-uidomesmhtmljson-schemalayoutno-frameworknode-treerenderschemasvgtemplate-elementstypescriptui-from-datavalidationvoid-elements

Resources

Readme
MIT license
Activity

Stars

0 stars

Watchers

0 watching

Forks

0 forks
Report repository

Releases

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.