shadimage
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

Browse all components in this library →