9cef4e9: Dynamic forms, Vue renderer, XState Store adapter, and computed values.### New: @json-render/vue Package
Vue 3 renderer for json-render. Full feature parity with @json-render/react including data binding, visibility conditions, actions, validation, repeat scopes, and streaming.
defineRegistry — create type-safe component registries from catalogsRenderer — render specs as Vue component treesStateProvider, ActionProvider, VisibilityProvider, ValidationProvideruseStateStore, useStateValue, useStateBinding, useActions, useAction, useIsVisible, useFieldValidationuseUIStream, useChatUIStateStore interface### New: @json-render/xstate Package
XState Store (atom) adapter for json-render's StateStore interface. Wire an @xstate/store atom as the state backend.
xstateStoreStateStore({ atom }) — creates a StateStore from an @xstate/store atom@xstate/store v3+### New: $computed Expressions
Call registered functions from prop expressions:
{ "$computed": "functionName", "args": { "key": <expression> } } — calls a named function with resolved argsfunctions prop on JSONUIProvider / createRendererComputedFunction type exported from @json-render/core### New: $template Expressions
Interpolate state values into strings:
{ "$template": "Hello, ${/user/name}!" } — replaces ${/path} references with state values### New: State Watchers
React to state changes by triggering actions:
watch field on elements maps state paths to action bindingswatch is a top-level field on elements (sibling of type/props/children), not inside propswatch placed inside props### New: Cross-Field Validation Functions
New built-in validation functions for cross-field comparisons:
equalTo — alias for matches with clearer semanticslessThan — value must be less than another field (numbers, strings, coerced)greaterThan — value must be greater than another fieldrequiredIf — required only when a condition field is truthyresolvePropValue for consistent $state expression handling### New: validateForm Action (React)
Built-in action that validates all registered form fields at once:
validateAll() synchronously and writes { valid, errors } to state/formValidation (configurable via statePath param)### Improved: shadcn/ui Validation
All form components now support validation:
checks and validateOn propsvalidateOn prop (controls timing: change/blur/submit)### Improved: React Provider Tree
Reordered provider nesting so ValidationProvider wraps ActionProvider, enabling validateForm to access validation state. Added useOptionalValidation hook for non-throwing access.
9cef4e9]