mksingh
componentjsonforms-categorizationsource: ok · hit
Jsonforms Categorization
JSONForms tabs/categorization layout renderer for UISchema Categorization elements.
npx shadcn add "https://mksingh.dev/r/jsonforms-categorization.json"free
No selection tags yet — empty means no evidence, not lack of support.
Dependencies
Bundle weight · light@jsonforms/core@jsonforms/react
Registry dependencies
tabs
Files1 · source cached 10/15/2026, 4:24:48 AM
registry/forms/renderers/categorization.tsx
import { Categorization, Category, LayoutProps, rankWith, uiTypeIs } from '@jsonforms/core';
import { JsonFormsDispatch, withJsonFormsLayoutProps } from '@jsonforms/react';
import { Tabs, TabsContent, TabsList, TabsTrigger } from '~/components/ui/tabs';
const CategorizationRenderer = (props: LayoutProps) => {
const { uischema, schema, path, visible, renderers, cells } = props;
const categorization = uischema as Categorization;
const categories = categorization.elements as Category[];
if (!visible || !categories?.length) return null;
return (
<Tabs defaultValue={categories[0].label}>
<TabsList>
{categories.map(category => (
<TabsTrigger key={category.label} value={category.label}>
{category.label}
</TabsTrigger>
))}
</TabsList>
{categories.map(category => (
<TabsContent key={category.label} value={category.label}>
<div className="flex flex-col gap-2 pt-2">
{category.elements.map((element, index) => (
<JsonFormsDispatch
key={index}
schema={schema}
uischema={element}
path={path}
renderers={renderers}
cells={cells}
/>
))}
</div>
</TabsContent>
))}
</Tabs>
);
};
export const categorizationTester = rankWith(10, uiTypeIs('Categorization'));
export default withJsonFormsLayoutProps(CategorizationRenderer);More from mksingh
Jsonforms Anyof String Or Enum ControlcomponentJsonforms Array LayoutcomponentJsonforms Boolean CellcomponentJsonforms Boolean ControlcomponentJsonforms Boolean Toggle CellcomponentJsonforms Boolean Toggle ControlcomponentJsonforms Controlcomponent
Browse all components in this library →