Files
json-render/examples/chat/lib/render/renderer.tsx
Chris Tate ddae61805e inline mode (#107)
* ai sdk

* chat

* move more to lib

* fixes

* refactor

* fixes

* streamdown

* fixes

* fixes

* fixes

* fixes

* fixes

* fixes

* fixes

* fixes

* fixes

* fixes

* data-spec

* fixes

* sortable

* github

* tools

* fixes

* fixes

* fixes

* fixes

* fixes

* fixes

* fixes

* fixes

* fixes

* fixes

* fixes

* fixes

* fixes

* fixes

* fixes

* tables

* fixes

* fixes

* rename to chat

* fixes docs

* fixes

* fixes

* fixes

* fixes

* fixes

* fixes

* fixes

* fixes

* fixes

* fixes

* fix lint

* fixes

* fixes

* fixes

* fixes

* fixes

* fixes

* fixes

* fixes

* fixes

* fixes

* fixes
2026-02-13 17:53:03 -06:00

49 lines
1.1 KiB
TypeScript

"use client";
import { type ReactNode } from "react";
import {
Renderer,
type ComponentRenderer,
type Spec,
StateProvider,
VisibilityProvider,
ActionProvider,
} from "@json-render/react";
import { registry, Fallback } from "./registry";
// =============================================================================
// ExplorerRenderer
// =============================================================================
interface ExplorerRendererProps {
spec: Spec | null;
loading?: boolean;
}
const fallback: ComponentRenderer = ({ element }) => (
<Fallback type={element.type} />
);
export function ExplorerRenderer({
spec,
loading,
}: ExplorerRendererProps): ReactNode {
if (!spec) return null;
return (
<StateProvider initialState={spec.state ?? {}}>
<VisibilityProvider>
<ActionProvider>
<Renderer
spec={spec}
registry={registry}
fallback={fallback}
loading={loading}
/>
</ActionProvider>
</VisibilityProvider>
</StateProvider>
);
}