You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
UI-framework-agnostic core with a component adapter registry #3
Separate form behaviour (binding, old input, errors, ids, labels, value precedence) from rendering. Each component renders through an adapter: <FormsProvider ui={onu}>. An adapter maps every form component (Text, Select, Checkbox, …) to a UI implementation. Individual components can be overridden per app or per form: <FormsProvider ui={onu} components={{ Select: MySelect }}>.
Done when: the core has no import of Onu, and the existing component tests pass through the Onu adapter.
Done on next-gen (d134eb5). src/core has no Onu import. It holds binding, old input, errors, ids, labels, value precedence, submission and strings.
Each component resolves its slots as: <FormsProvider components> (or <Form components>), then <FormsProvider ui>, then the HTML base adapter. A slot an adapter leaves out falls back to plain HTML.
Decisions:
The core owns every value. Slots are controlled: value + onValueChange, or native props with a composed onChange for Input/Textarea.
FormData stays the source of truth on submit, as in Blade.
Button colours stay Blade colour names (primary, outline-secondary). Each adapter maps them to its own variants.
Activity
UI-framework-agnostic core with an adapter registry; Onu adapter
Adapter contract, HTML base adapter and conformance test kit
n4ff4h commentedon Nov 4, 2026
Done on
next-gen(d134eb5).src/corehas no Onu import. It holds binding, old input, errors, ids, labels, value precedence, submission and strings.Each component resolves its slots as:
<FormsProvider components>(or<Form components>), then<FormsProvider ui>, then the HTML base adapter. A slot an adapter leaves out falls back to plain HTML.Decisions:
value+onValueChange, or native props with a composedonChangeforInput/Textarea.FormDatastays the source of truth on submit, as in Blade.primary,outline-secondary). Each adapter maps them to its own variants.