golemui
Health Gecti
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 112 GitHub stars
Code Gecti
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
Declarative form engine. Define forms with a typed TypeScript builder or as JSON, then render them in React, Angular, Vue, Lit, or vanilla JS. Includes validation, i18n, accessibility, theming, and an MCP server for AI assistants.
The ultimate JSON form engine.
Get started · Documentation · How it works · Integrations
Overview
Define forms with the typed gui builder API, or as schema-validated JSON. Both produce the same serializable definition.
- One definition renders in React, Angular, Lit, Vue, or vanilla JS.
- Validation, conditional fields, i18n, and accessibility come from the schema and runtime.
- The output is plain data: store it, transfer it, diff it, generate it.
Installation
Install the four @golemui/* packages for your framework. The versions are published together; use matching versions.
# React
npm i @golemui/core @golemui/react @golemui/gui-react @golemui/gui-shared
# Angular
npm i @golemui/core @golemui/angular @golemui/gui-angular @golemui/gui-shared
# Lit
npm i @golemui/core @golemui/lit @golemui/gui-lit @golemui/gui-shared
# Vue
npm i @golemui/core @golemui/vue @golemui/gui-vue @golemui/gui-shared
# Vanilla JS (web component)
npm i @golemui/core @golemui/lit @golemui/gui-lit @golemui/gui-shared
Import the component styles once, anywhere in your app entry:
@import '@golemui/gui-components/index.css';
Full walkthrough at golemui.com/getting-started/installation.
Quick start
Define a form as an array of gui builders and pass it to the framework component (React shown):
import '@golemui/gui-components/index.css';
import type { FormSubmitEvent } from '@golemui/core';
import { GuiForm } from '@golemui/gui-react';
import { gui } from '@golemui/gui-shared';
const formDef = [
gui.inputs.textInput('email', {
label: 'Email',
validator: { type: 'string', required: true, format: 'email' },
}),
gui.inputs.password('password', {
label: 'Password',
validator: { type: 'string', required: true, minLength: 8 },
}),
gui.inputs.checkbox('newsletter', {
label: 'Subscribe to the newsletter',
include: { when: '!!$form.email' },
}),
gui.actions.button({
label: 'Sign up',
actionType: 'submit',
disabled: { when: '$formIsInvalid' },
}),
];
function handleSubmit(event: FormSubmitEvent) {
console.log(event.data);
}
export function App() {
return <GuiForm config={{ formDef }} formSubmit={handleSubmit} />;
}
The submit button stays disabled while the form is invalid ($formIsInvalid is a built-in validity flag); on submit, formSubmit receives the collected data.
The same formDef value renders in every supported framework. See Integrations for per-framework setup, and the starter templates under templates/ for runnable examples.
Core concepts
Form definition. A form is an array of nodes (or a single node). Each node is either a gui builder result or a render function. The output is serializable JSON, so a definition can be stored, transferred, and rendered later.
The gui builder. Exported from @golemui/gui-shared, grouped into namespaces:
| Namespace | Purpose | Examples |
|---|---|---|
gui.inputs |
Field widgets | textInput, numberInput, password, textarea, checkbox, dropdown, select, radiogroup, currency, tags, datePicker, timeInput, dateTimeInput, calendar, repeater, list, custom |
gui.actions |
Buttons and custom actions | button, custom |
gui.displays |
Non-input content | display, alert, markdownText, custom |
gui.layouts |
Containers | flex, grid, tabs, accordion, custom |
gui.selectors |
Select and update widgets by type, uid, tag, or state | - |
Conditional fields. Widgets accept include / exclude with a reactive expression over form data:
gui.inputs.radiogroup('city', { label: 'City', include: { when: '!!$form.country' } });
gui.actions.button({ label: 'Reset', include: { when: '$form.debug === true' } });
$form.<path> reads the current form data; the expression is evaluated at runtime.
Rendering per framework. Every adapter takes the definition through a config prop and emits a form submit event:
| Framework | Import | Element |
|---|---|---|
| React | import { GuiForm } from '@golemui/gui-react' |
<GuiForm config={config} formSubmit={handler} /> |
| Vue | import { GuiForm } from '@golemui/gui-vue' |
<GuiForm :config="config" @form-submit="handler" /> |
| Angular | import { FormComponent } from '@golemui/gui-angular' |
<gui-form [config]="config" (formSubmit)="handler($event)"> |
| Lit | import '@golemui/gui-lit' |
<gui-form .config=${config} @formSubmit=${handler}> |
For vanilla JS, import @golemui/gui-lit to register the <gui-form> custom element, then set el.config = config and listen for the formSubmit event (e.detail is the FormSubmitEvent).
Features
- Validation.
@standard-schema/speccompliant. Built-instring,number,boolean,array, andcustomvalidators with rules such asrequired,minLength,format,minimum/maximum, andconst. Error messages are localizable, and timing is configurable viavalidateOn(change,blur,submit,eager). Docs - Internationalization. Provide an
I18nTranslatoradapter (i18next, Lingui, or your own) throughlocalization. Labels, hints, and validator messages are translatable, with live language switching and automatic RTL. Docs - Accessibility. Native form elements with ARIA wiring managed for you:
aria-describedbyfor hints,aria-invalidandaria-errormessageon errors, plus keyboard navigation on interactive widgets. - Theming. Styling is driven by CSS custom properties (design tokens) from a single stylesheet. Override tokens, or supply your own widget components through
customWidgetLoaders. Docs - AI assistants (MCP).
@golemui/gui-mcpships agolemui-mcpModel Context Protocol server with tools to validate form definitions, generate them from JSON Schema or OpenAPI, and type-checkgui.*code. - AI assistants (skill). An installable agent skill grounds coding agents in the real GolemUI API even without the MCP connected -
npx skills add golemui/golemui(works with Claude Code, Cursor, and other skills.sh-compatible agents). Its API reference is generated from the same compile-verified registry the MCP serves, so the two never disagree.
Packages
| Package | Description |
|---|---|
@golemui/gui-react / -angular / -lit / -vue |
Framework form component and bindings |
@golemui/gui-shared |
The gui builder and form definition types (GuiFormInitConfig) |
@golemui/gui-components |
Default widget components and the stylesheet (index.css) |
@golemui/core |
Framework-agnostic form runtime and shared types (FormEvent, ValidateOn) |
@golemui/gui-validators |
Validation schemas (@standard-schema/spec) |
@golemui/schemas |
The shared core JSON Schema (common defs) and the schema tree generator |
@golemui/gui-schemas |
JSON Schemas for gui form definitions, generated from the widget manifest |
@golemui/gui-mcp |
MCP server for coding assistants |
Import only from a package's public entry points. The @golemui/*/internals paths are internal and unstable.
Documentation
golemui.com for full docs, API reference, per-framework guides, examples, and migration paths.
Contributing
See CONTRIBUTING.md. The repository is an Nx monorepo; tests run on Vitest, and pull requests follow Conventional Commits.
License
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi