@fragno-dev/jsonforms-shadcn-renderers 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["ShadcnCheckbox","shadcnBooleanControlTester: RankedTester","ShadcnSwitch","shadcnBooleanToggleControlTester: RankedTester","ShadcnInput","shadcnTextControlTester: RankedTester","ShadcnTextarea","shadcnTextAreaControlTester: RankedTester","ShadcnDatePicker","shadcnDateControlTester: RankedTester","ShadcnTimePicker","shadcnTimeControlTester: RankedTester","ShadcnDateTimePicker","shadcnDateTimeControlTester: RankedTester","ShadcnNumberInput","shadcnIntegerControlTester: RankedTester","shadcnNumberControlTester: RankedTester","ShadcnSelect","shadcnEnumControlTester: RankedTester","ShadcnRadioGroup","shadcnEnumRadioControlTester: RankedTester","shadcnOneOfEnumControlTester: RankedTester","ShadcnSlider","shadcnSliderControlTester: RankedTester","shadcnObjectControlTester: RankedTester","shadcnBooleanCellTester: RankedTester","shadcnBooleanToggleCellTester: RankedTester","shadcnTextCellTester: RankedTester","shadcnDateCellTester: RankedTester","shadcnTimeCellTester: RankedTester","shadcnDateTimeCellTester: RankedTester","shadcnIntegerCellTester: RankedTester","shadcnNumberCellTester: RankedTester","shadcnEnumCellTester: RankedTester","shadcnEnumRadioCellTester: RankedTester","shadcnOneOfEnumCellTester: RankedTester","shadcnSliderCellTester: RankedTester","shadcnVerticalLayoutTester: RankedTester","shadcnHorizontalLayoutTester: RankedTester","shadcnGroupLayoutTester: RankedTester","shadcnCategorizationLayoutTester: RankedTester","shadcnCategorizationStepperLayoutTester: RankedTester","shadcnRenderers: JsonFormsRendererRegistryEntry[]","shadcnCells: JsonFormsCellRendererRegistryEntry[]"],"sources":["../src/shadcn-controls/ShadcnCheckbox.tsx","../src/controls/ShadcnBooleanControl.tsx","../src/shadcn-controls/ShadcnSwitch.tsx","../src/controls/ShadcnBooleanToggleControl.tsx","../src/shadcn-controls/ShadcnInput.tsx","../src/controls/ShadcnTextControl.tsx","../src/shadcn-controls/ShadcnTextarea.tsx","../src/controls/ShadcnTextAreaControl.tsx","../src/icons/ChevronDown.tsx","../src/util/date-time.ts","../src/shadcn-controls/ShadcnDatePicker.tsx","../src/controls/ShadcnDateControl.tsx","../src/shadcn-controls/ShadcnTimePicker.tsx","../src/controls/ShadcnTimeControl.tsx","../src/shadcn-controls/ShadcnDateTimePicker.tsx","../src/controls/ShadcnDateTimeControl.tsx","../src/shadcn-controls/ShadcnNumberInput.tsx","../src/controls/ShadcnIntegerControl.tsx","../src/controls/ShadcnNumberControl.tsx","../src/shadcn-controls/ShadcnSelect.tsx","../src/controls/ShadcnEnumControl.tsx","../src/shadcn-controls/ShadcnRadioGroup.tsx","../src/controls/ShadcnEnumRadioControl.tsx","../src/controls/ShadcnOneOfEnumControl.tsx","../src/shadcn-controls/ShadcnSlider.tsx","../src/controls/ShadcnSliderControl.tsx","../src/controls/ShadcnObjectControl.tsx","../src/cells/ShadcnBooleanCell.tsx","../src/cells/ShadcnBooleanToggleCell.tsx","../src/cells/ShadcnTextCell.tsx","../src/cells/ShadcnDateCell.tsx","../src/cells/ShadcnTimeCell.tsx","../src/cells/ShadcnDateTimeCell.tsx","../src/cells/ShadcnIntegerCell.tsx","../src/cells/ShadcnNumberCell.tsx","../src/cells/ShadcnEnumCell.tsx","../src/cells/ShadcnEnumRadioCell.tsx","../src/cells/ShadcnOneOfEnumCell.tsx","../src/cells/ShadcnSliderCell.tsx","../src/layouts/ShadcnVerticalLayout.tsx","../src/layouts/ShadcnHorizontalLayout.tsx","../src/layouts/ShadcnGroupLayout.tsx","../src/layouts/ShadcnCategorizationLayout.tsx","../src/layouts/ShadcnCategorizationStepperLayout.tsx","../src/index.ts"],"sourcesContent":["import type { CellProps, WithClassname } from \"@jsonforms/core\";\nimport { memo } from \"react\";\nimport { Checkbox } from \"@/components/ui/checkbox\";\n\ntype ShadcnCheckboxProps = CellProps & WithClassname;\n\nexport const ShadcnCheckbox = memo(function ShadcnCheckbox(props: ShadcnCheckboxProps) {\n const { data, className, id, enabled, path, handleChange } = props;\n const checked = !!data;\n\n return (\n <Checkbox\n checked={checked}\n onCheckedChange={(isChecked) => handleChange(path, isChecked === true)}\n className={className}\n id={id}\n disabled={!enabled}\n />\n );\n});\n","import type { ControlProps, RankedTester } from \"@jsonforms/core\";\nimport { isBooleanControl, rankWith } from \"@jsonforms/core\";\nimport { withJsonFormsControlProps } from \"@jsonforms/react\";\nimport {\n Field,\n FieldLabel,\n FieldDescription,\n FieldError,\n FieldContent,\n} from \"@/components/ui/field\";\nimport { ShadcnCheckbox } from \"../shadcn-controls/ShadcnCheckbox\";\n\nexport const ShadcnBooleanControl = ({\n data,\n visible,\n label,\n id,\n enabled,\n uischema,\n schema,\n rootSchema,\n handleChange,\n errors,\n path,\n config,\n description,\n}: ControlProps) => {\n const isValid = errors.length === 0;\n\n if (!visible) {\n return null;\n }\n\n return (\n <Field\n orientation=\"horizontal\"\n data-invalid={!isValid || undefined}\n data-disabled={!enabled || undefined}\n >\n <ShadcnCheckbox\n id={`${id}-input`}\n data={data}\n enabled={enabled}\n visible={visible}\n path={path}\n uischema={uischema}\n schema={schema}\n rootSchema={rootSchema}\n handleChange={handleChange}\n errors={errors}\n config={config}\n isValid={isValid}\n />\n <FieldContent>\n <FieldLabel htmlFor={`${id}-input`}>{label}</FieldLabel>\n {description && <FieldDescription>{description}</FieldDescription>}\n {!isValid && <FieldError errors={[{ message: errors }]} />}\n </FieldContent>\n </Field>\n );\n};\n\nexport const shadcnBooleanControlTester: RankedTester = rankWith(2, isBooleanControl);\n\nexport const ShadcnBooleanControlContext = withJsonFormsControlProps(ShadcnBooleanControl);\n","import type { CellProps, WithClassname } from \"@jsonforms/core\";\nimport { memo } from \"react\";\nimport { Switch } from \"@/components/ui/switch\";\n\ntype ShadcnSwitchProps = CellProps & WithClassname;\n\nexport const ShadcnSwitch = memo(function ShadcnSwitch(props: ShadcnSwitchProps) {\n const { data, className, id, enabled, path, handleChange } = props;\n const checked = !!data;\n\n return (\n <Switch\n checked={checked}\n onCheckedChange={(isChecked) => handleChange(path, isChecked)}\n className={className}\n id={id}\n disabled={!enabled}\n />\n );\n});\n","import type { ControlProps, RankedTester } from \"@jsonforms/core\";\nimport { and, isBooleanControl, optionIs, rankWith } from \"@jsonforms/core\";\nimport { withJsonFormsControlProps } from \"@jsonforms/react\";\nimport {\n Field,\n FieldLabel,\n FieldDescription,\n FieldError,\n FieldContent,\n} from \"@/components/ui/field\";\nimport { ShadcnSwitch } from \"../shadcn-controls/ShadcnSwitch\";\n\nexport const ShadcnBooleanToggleControl = ({\n data,\n visible,\n label,\n id,\n enabled,\n uischema,\n schema,\n rootSchema,\n handleChange,\n errors,\n path,\n config,\n description,\n}: ControlProps) => {\n const isValid = errors.length === 0;\n\n if (!visible) {\n return null;\n }\n\n return (\n <Field\n orientation=\"horizontal\"\n data-invalid={!isValid || undefined}\n data-disabled={!enabled || undefined}\n >\n <ShadcnSwitch\n id={`${id}-input`}\n data={data}\n enabled={enabled}\n visible={visible}\n path={path}\n uischema={uischema}\n schema={schema}\n rootSchema={rootSchema}\n handleChange={handleChange}\n errors={errors}\n config={config}\n isValid={isValid}\n />\n <FieldContent>\n <FieldLabel htmlFor={`${id}-input`}>{label}</FieldLabel>\n {description && <FieldDescription>{description}</FieldDescription>}\n {!isValid && <FieldError errors={[{ message: errors }]} />}\n </FieldContent>\n </Field>\n );\n};\n\nexport const shadcnBooleanToggleControlTester: RankedTester = rankWith(\n 3,\n and(isBooleanControl, optionIs(\"toggle\", true)),\n);\n\nexport const ShadcnBooleanToggleControlContext = withJsonFormsControlProps(\n ShadcnBooleanToggleControl,\n);\n","import type { CellProps, WithClassname } from \"@jsonforms/core\";\nimport { memo } from \"react\";\nimport { Input } from \"@/components/ui/input\";\n\ntype ShadcnInputProps = Pick<\n CellProps,\n \"data\" | \"id\" | \"enabled\" | \"path\" | \"handleChange\" | \"schema\"\n> &\n WithClassname;\n\nexport const ShadcnInput = memo(function ShadcnInput(props: ShadcnInputProps) {\n const { data, className, id, enabled, path, handleChange, schema } = props;\n\n return (\n <Input\n type=\"text\"\n value={data ?? \"\"}\n onChange={(e) => handleChange(path, e.target.value || undefined)}\n className={className}\n id={id}\n disabled={!enabled}\n maxLength={schema.maxLength}\n />\n );\n});\n","import type { ControlProps, RankedTester } from \"@jsonforms/core\";\nimport { isStringControl, rankWith } from \"@jsonforms/core\";\nimport { withJsonFormsControlProps } from \"@jsonforms/react\";\nimport { Field, FieldLabel, FieldDescription, FieldError } from \"@/components/ui/field\";\nimport { ShadcnInput } from \"../shadcn-controls/ShadcnInput\";\n\nexport const ShadcnTextControl = ({\n data,\n visible,\n label,\n id,\n enabled,\n schema,\n handleChange,\n errors,\n path,\n description,\n}: ControlProps) => {\n const isValid = errors.length === 0;\n\n if (!visible) {\n return null;\n }\n\n return (\n <Field data-invalid={!isValid || undefined} data-disabled={!enabled || undefined}>\n <FieldLabel htmlFor={`${id}-input`}>{label}</FieldLabel>\n {description && <FieldDescription>{description}</FieldDescription>}\n <ShadcnInput\n id={`${id}-input`}\n data={data}\n enabled={enabled}\n path={path}\n schema={schema}\n handleChange={handleChange}\n />\n {!isValid && <FieldError errors={[{ message: errors }]} />}\n </Field>\n );\n};\n\nexport const shadcnTextControlTester: RankedTester = rankWith(1, isStringControl);\n\nexport const ShadcnTextControlContext = withJsonFormsControlProps(ShadcnTextControl);\n","import type { CellProps, WithClassname } from \"@jsonforms/core\";\nimport { memo } from \"react\";\nimport { Textarea } from \"@/components/ui/textarea\";\n\ntype ShadcnTextareaProps = CellProps & WithClassname;\n\nexport const ShadcnTextarea = memo(function ShadcnTextarea(props: ShadcnTextareaProps) {\n const { data, className, id, enabled, path, handleChange, schema } = props;\n\n return (\n <Textarea\n value={data ?? \"\"}\n onChange={(e) => handleChange(path, e.target.value || undefined)}\n className={className}\n id={id}\n disabled={!enabled}\n maxLength={schema.maxLength}\n />\n );\n});\n","import type { ControlProps, RankedTester } from \"@jsonforms/core\";\nimport { and, isStringControl, optionIs, rankWith } from \"@jsonforms/core\";\nimport { withJsonFormsControlProps } from \"@jsonforms/react\";\nimport { Field, FieldLabel, FieldDescription, FieldError } from \"@/components/ui/field\";\nimport { ShadcnTextarea } from \"../shadcn-controls/ShadcnTextarea\";\n\nexport const ShadcnTextAreaControl = ({\n data,\n visible,\n label,\n id,\n enabled,\n uischema,\n schema,\n rootSchema,\n handleChange,\n errors,\n path,\n config,\n description,\n}: ControlProps) => {\n const isValid = errors.length === 0;\n\n if (!visible) {\n return null;\n }\n\n return (\n <Field data-invalid={!isValid || undefined} data-disabled={!enabled || undefined}>\n <FieldLabel htmlFor={`${id}-input`}>{label}</FieldLabel>\n {description && <FieldDescription>{description}</FieldDescription>}\n <ShadcnTextarea\n id={`${id}-input`}\n data={data}\n enabled={enabled}\n visible={visible}\n path={path}\n uischema={uischema}\n schema={schema}\n rootSchema={rootSchema}\n handleChange={handleChange}\n errors={errors}\n config={config}\n isValid={isValid}\n />\n {!isValid && <FieldError errors={[{ message: errors }]} />}\n </Field>\n );\n};\n\nexport const shadcnTextAreaControlTester: RankedTester = rankWith(\n 2,\n and(isStringControl, optionIs(\"multi\", true)),\n);\n\nexport const ShadcnTextAreaControlContext = withJsonFormsControlProps(ShadcnTextAreaControl);\n","export function ChevronDownIcon({ className }: { className?: string }) {\n return (\n <svg\n className={className}\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n );\n}\n","// TODO: What kind of format is this parsing?\nexport function parseDate(value: string | undefined): Date | undefined {\n if (!value) {\n return undefined;\n }\n const date = new Date(value);\n return isNaN(date.getTime()) ? undefined : date;\n}\n\n// Format as YYYY-MM-DD while preserving local date. Using toISOString().slice(0,10) would\n// convert to UTC, potentially shifting the date near midnight in non-UTC timezones.\nexport function formatDateForSave(date: Date | undefined): string | undefined {\n if (!date) {\n return undefined;\n }\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\n const day = String(date.getDate()).padStart(2, \"0\");\n return `${year}-${month}-${day}`;\n}\n\n// Convert \"HH:mm:ss\" to \"HH:mm\" for the native time input\nexport function toTimeInputValue(value: string | undefined): string {\n if (!value) {\n return \"\";\n }\n // Handle both \"HH:mm\" and \"HH:mm:ss\" formats\n return value.substring(0, 5);\n}\n\n// Convert \"HH:mm\" from native input to \"HH:mm:ss\" for JSON Schema time format\nexport function formatTimeForSave(value: string): string | undefined {\n if (!value) {\n return undefined;\n }\n // Native time input returns \"HH:mm\", append \":00\" for seconds\n return value.length === 5 ? `${value}:00` : value;\n}\n\n// Extract \"HH:mm\" from a Date object\nexport function formatTimeFromDate(date: Date): string {\n const hours = String(date.getHours()).padStart(2, \"0\");\n const minutes = String(date.getMinutes()).padStart(2, \"0\");\n return `${hours}:${minutes}`;\n}\n","import type { CellProps, WithClassname } from \"@jsonforms/core\";\nimport { memo, useMemo, useState } from \"react\";\nimport { ChevronDownIcon } from \"../icons/ChevronDown\";\nimport { cn } from \"@/lib/utils\";\nimport { Button } from \"@/components/ui/button\";\nimport { Calendar } from \"@/components/ui/calendar\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/ui/popover\";\nimport { formatDateForSave, parseDate } from \"../util/date-time\";\n\ntype ShadcnDatePickerProps = CellProps & WithClassname;\n\nexport const ShadcnDatePicker = memo(function ShadcnDatePicker(props: ShadcnDatePickerProps) {\n const { data, className, id, enabled, path, handleChange } = props;\n const [open, setOpen] = useState(false);\n\n const selectedDate = useMemo(() => parseDate(data), [data]);\n\n const handleSelect = (date: Date | undefined) => {\n handleChange(path, formatDateForSave(date));\n setOpen(false);\n };\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n id={id}\n variant=\"outline\"\n disabled={!enabled}\n className={cn(\n \"w-full justify-between font-normal\",\n !selectedDate && \"text-muted-foreground\",\n className,\n )}\n >\n {selectedDate ? selectedDate.toLocaleDateString() : \"Select date\"}\n <ChevronDownIcon />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto overflow-hidden p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={selectedDate}\n captionLayout=\"dropdown\"\n onSelect={handleSelect}\n />\n </PopoverContent>\n </Popover>\n );\n});\n","import type { ControlProps, RankedTester } from \"@jsonforms/core\";\nimport { isDateControl, rankWith } from \"@jsonforms/core\";\nimport { withJsonFormsControlProps } from \"@jsonforms/react\";\nimport { Field, FieldLabel, FieldDescription, FieldError } from \"@/components/ui/field\";\nimport { ShadcnDatePicker } from \"../shadcn-controls/ShadcnDatePicker\";\n\nexport const ShadcnDateControl = ({\n data,\n visible,\n label,\n id,\n enabled,\n uischema,\n schema,\n rootSchema,\n handleChange,\n errors,\n path,\n config,\n description,\n}: ControlProps) => {\n const isValid = errors.length === 0;\n\n if (!visible) {\n return null;\n }\n\n return (\n <Field data-invalid={!isValid || undefined} data-disabled={!enabled || undefined}>\n <FieldLabel htmlFor={`${id}-input`}>{label}</FieldLabel>\n {description && <FieldDescription>{description}</FieldDescription>}\n <ShadcnDatePicker\n id={`${id}-input`}\n data={data}\n enabled={enabled}\n visible={visible}\n path={path}\n uischema={uischema}\n schema={schema}\n rootSchema={rootSchema}\n handleChange={handleChange}\n errors={errors}\n config={config}\n isValid={isValid}\n />\n {!isValid && <FieldError errors={[{ message: errors }]} />}\n </Field>\n );\n};\n\nexport const shadcnDateControlTester: RankedTester = rankWith(4, isDateControl);\n\nexport const ShadcnDateControlContext = withJsonFormsControlProps(ShadcnDateControl);\n","import type { CellProps, WithClassname } from \"@jsonforms/core\";\nimport { memo, useMemo } from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { Input } from \"@/components/ui/input\";\nimport { formatTimeForSave, toTimeInputValue } from \"../util/date-time\";\n\ntype ShadcnTimePickerProps = CellProps & WithClassname;\n\nexport const ShadcnTimePicker = memo(function ShadcnTimePicker(props: ShadcnTimePickerProps) {\n const { data, className, id, enabled, path, handleChange } = props;\n\n const inputValue = useMemo(() => toTimeInputValue(data), [data]);\n\n return (\n <Input\n type=\"time\"\n id={id}\n value={inputValue}\n onChange={(e) => handleChange(path, formatTimeForSave(e.target.value))}\n disabled={!enabled}\n className={cn(\n \"bg-background w-full appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\",\n className,\n )}\n />\n );\n});\n","import type { ControlProps, RankedTester } from \"@jsonforms/core\";\nimport { isTimeControl, rankWith } from \"@jsonforms/core\";\nimport { withJsonFormsControlProps } from \"@jsonforms/react\";\nimport { Field, FieldLabel, FieldDescription, FieldError } from \"@/components/ui/field\";\nimport { ShadcnTimePicker } from \"../shadcn-controls/ShadcnTimePicker\";\n\nexport const ShadcnTimeControl = ({\n data,\n visible,\n label,\n id,\n enabled,\n uischema,\n schema,\n rootSchema,\n handleChange,\n errors,\n path,\n config,\n description,\n}: ControlProps) => {\n const isValid = errors.length === 0;\n\n if (!visible) {\n return null;\n }\n\n return (\n <Field data-invalid={!isValid || undefined} data-disabled={!enabled || undefined}>\n <FieldLabel htmlFor={`${id}-input`}>{label}</FieldLabel>\n {description && <FieldDescription>{description}</FieldDescription>}\n <ShadcnTimePicker\n id={`${id}-input`}\n data={data}\n enabled={enabled}\n visible={visible}\n path={path}\n uischema={uischema}\n schema={schema}\n rootSchema={rootSchema}\n handleChange={handleChange}\n errors={errors}\n config={config}\n isValid={isValid}\n />\n {!isValid && <FieldError errors={[{ message: errors }]} />}\n </Field>\n );\n};\n\nexport const shadcnTimeControlTester: RankedTester = rankWith(4, isTimeControl);\n\nexport const ShadcnTimeControlContext = withJsonFormsControlProps(ShadcnTimeControl);\n","import type { CellProps, WithClassname } from \"@jsonforms/core\";\nimport { memo, useMemo, useState } from \"react\";\nimport { ChevronDownIcon } from \"../icons/ChevronDown\";\nimport { cn } from \"@/lib/utils\";\nimport { Button } from \"@/components/ui/button\";\nimport { Calendar } from \"@/components/ui/calendar\";\nimport { Input } from \"@/components/ui/input\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/ui/popover\";\nimport { formatTimeFromDate } from \"../util/date-time\";\n\ntype ShadcnDateTimePickerProps = CellProps & WithClassname;\n\nfunction parseDateTime(value: string | undefined): { date: Date | undefined; time: string } {\n if (!value) {\n return { date: undefined, time: \"\" };\n }\n\n const dateTime = new Date(value);\n if (isNaN(dateTime.getTime())) {\n return { date: undefined, time: \"\" };\n }\n\n return {\n date: dateTime,\n time: formatTimeFromDate(dateTime),\n };\n}\n\nfunction formatDateTimeForSave(date: Date | undefined, time: string): string | undefined {\n if (!date) {\n return undefined;\n }\n\n const [hours, minutes] = time ? time.split(\":\").map(Number) : [0, 0];\n const dateTime = new Date(date);\n dateTime.setHours(hours || 0, minutes || 0, 0, 0);\n\n return dateTime.toISOString();\n}\n\nexport const ShadcnDateTimePicker = memo(function ShadcnDateTimePicker(\n props: ShadcnDateTimePickerProps,\n) {\n const { data, className, id, enabled, path, handleChange } = props;\n const [open, setOpen] = useState(false);\n\n const { date: selectedDate, time: selectedTime } = useMemo(() => parseDateTime(data), [data]);\n\n const handleDateSelect = (date: Date | undefined) => {\n handleChange(path, formatDateTimeForSave(date, selectedTime || \"00:00\"));\n setOpen(false);\n };\n\n const handleTimeChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newTime = e.target.value;\n handleChange(path, formatDateTimeForSave(selectedDate, newTime));\n };\n\n return (\n <div className={cn(\"flex gap-2\", className)}>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n id={id}\n variant=\"outline\"\n disabled={!enabled}\n className={cn(\n \"flex-1 justify-between font-normal\",\n !selectedDate && \"text-muted-foreground\",\n )}\n >\n {selectedDate ? selectedDate.toLocaleDateString() : \"Select date\"}\n <ChevronDownIcon />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto overflow-hidden p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={selectedDate}\n captionLayout=\"dropdown\"\n onSelect={handleDateSelect}\n />\n </PopoverContent>\n </Popover>\n <Input\n type=\"time\"\n value={selectedTime}\n onChange={handleTimeChange}\n disabled={!enabled}\n className=\"bg-background w-28 appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none\"\n />\n </div>\n );\n});\n","import type { ControlProps, RankedTester } from \"@jsonforms/core\";\nimport { isDateTimeControl, rankWith } from \"@jsonforms/core\";\nimport { withJsonFormsControlProps } from \"@jsonforms/react\";\nimport { Field, FieldLabel, FieldDescription, FieldError } from \"@/components/ui/field\";\nimport { ShadcnDateTimePicker } from \"../shadcn-controls/ShadcnDateTimePicker\";\n\nexport const ShadcnDateTimeControl = ({\n data,\n visible,\n label,\n id,\n enabled,\n uischema,\n schema,\n rootSchema,\n handleChange,\n errors,\n path,\n config,\n description,\n}: ControlProps) => {\n const isValid = errors.length === 0;\n\n if (!visible) {\n return null;\n }\n\n return (\n <Field data-invalid={!isValid || undefined} data-disabled={!enabled || undefined}>\n <FieldLabel htmlFor={`${id}-input`}>{label}</FieldLabel>\n {description && <FieldDescription>{description}</FieldDescription>}\n <ShadcnDateTimePicker\n id={`${id}-input`}\n data={data}\n enabled={enabled}\n visible={visible}\n path={path}\n uischema={uischema}\n schema={schema}\n rootSchema={rootSchema}\n handleChange={handleChange}\n errors={errors}\n config={config}\n isValid={isValid}\n />\n {!isValid && <FieldError errors={[{ message: errors }]} />}\n </Field>\n );\n};\n\nexport const shadcnDateTimeControlTester: RankedTester = rankWith(4, isDateTimeControl);\n\nexport const ShadcnDateTimeControlContext = withJsonFormsControlProps(ShadcnDateTimeControl);\n","import type { CellProps, WithClassname } from \"@jsonforms/core\";\nimport { memo } from \"react\";\nimport { Input } from \"@/components/ui/input\";\n\ntype ShadcnNumberInputProps = CellProps &\n WithClassname & {\n step?: string;\n };\n\nexport const ShadcnNumberInput = memo(function ShadcnNumberInput(props: ShadcnNumberInputProps) {\n const { data, className, id, enabled, path, handleChange, schema, step } = props;\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value;\n if (value === \"\") {\n handleChange(path, undefined);\n } else {\n const parsed = Number(value);\n handleChange(path, isNaN(parsed) ? undefined : parsed);\n }\n };\n\n return (\n <Input\n type=\"number\"\n value={data ?? \"\"}\n onChange={handleInputChange}\n className={className}\n id={id}\n disabled={!enabled}\n min={schema.minimum}\n max={schema.maximum}\n step={step ?? (schema.multipleOf ? String(schema.multipleOf) : undefined)}\n />\n );\n});\n","import type { ControlProps, RankedTester } from \"@jsonforms/core\";\nimport { isIntegerControl, rankWith } from \"@jsonforms/core\";\nimport { withJsonFormsControlProps } from \"@jsonforms/react\";\nimport { Field, FieldLabel, FieldDescription, FieldError } from \"@/components/ui/field\";\nimport { ShadcnNumberInput } from \"../shadcn-controls/ShadcnNumberInput\";\n\nexport const ShadcnIntegerControl = ({\n data,\n visible,\n label,\n id,\n enabled,\n uischema,\n schema,\n rootSchema,\n handleChange,\n errors,\n path,\n config,\n description,\n}: ControlProps) => {\n const isValid = errors.length === 0;\n\n if (!visible) {\n return null;\n }\n\n return (\n <Field data-invalid={!isValid || undefined} data-disabled={!enabled || undefined}>\n <FieldLabel htmlFor={`${id}-input`}>{label}</FieldLabel>\n {description && <FieldDescription>{description}</FieldDescription>}\n <ShadcnNumberInput\n id={`${id}-input`}\n data={data}\n enabled={enabled}\n visible={visible}\n path={path}\n uischema={uischema}\n schema={schema}\n rootSchema={rootSchema}\n handleChange={handleChange}\n errors={errors}\n config={config}\n isValid={isValid}\n step=\"1\"\n />\n {!isValid && <FieldError errors={[{ message: errors }]} />}\n </Field>\n );\n};\n\nexport const shadcnIntegerControlTester: RankedTester = rankWith(4, isIntegerControl);\n\nexport const ShadcnIntegerControlContext = withJsonFormsControlProps(ShadcnIntegerControl);\n","import type { ControlProps, RankedTester } from \"@jsonforms/core\";\nimport { isNumberControl, rankWith } from \"@jsonforms/core\";\nimport { withJsonFormsControlProps } from \"@jsonforms/react\";\nimport { Field, FieldLabel, FieldDescription, FieldError } from \"@/components/ui/field\";\nimport { ShadcnNumberInput } from \"../shadcn-controls/ShadcnNumberInput\";\n\nexport const ShadcnNumberControl = ({\n data,\n visible,\n label,\n id,\n enabled,\n uischema,\n schema,\n rootSchema,\n handleChange,\n errors,\n path,\n config,\n description,\n}: ControlProps) => {\n const isValid = errors.length === 0;\n\n if (!visible) {\n return null;\n }\n\n return (\n <Field data-invalid={!isValid || undefined} data-disabled={!enabled || undefined}>\n <FieldLabel htmlFor={`${id}-input`}>{label}</FieldLabel>\n {description && <FieldDescription>{description}</FieldDescription>}\n <ShadcnNumberInput\n id={`${id}-input`}\n data={data}\n enabled={enabled}\n visible={visible}\n path={path}\n uischema={uischema}\n schema={schema}\n rootSchema={rootSchema}\n handleChange={handleChange}\n errors={errors}\n config={config}\n isValid={isValid}\n />\n {!isValid && <FieldError errors={[{ message: errors }]} />}\n </Field>\n );\n};\n\nexport const shadcnNumberControlTester: RankedTester = rankWith(4, isNumberControl);\n\nexport const ShadcnNumberControlContext = withJsonFormsControlProps(ShadcnNumberControl);\n","import type { CellProps, WithClassname, EnumOption } from \"@jsonforms/core\";\nimport { memo } from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\n\ntype ShadcnSelectProps = CellProps &\n WithClassname & {\n options: EnumOption[];\n };\n\nexport const ShadcnSelect = memo(function ShadcnSelect(props: ShadcnSelectProps) {\n const { data, className, id, enabled, path, handleChange, options } = props;\n\n return (\n <Select\n value={data ?? \"\"}\n onValueChange={(value) => handleChange(path, value || undefined)}\n disabled={!enabled}\n >\n <SelectTrigger id={id} className={cn(\"w-full\", className)}>\n <SelectValue placeholder=\"Select an option\" />\n </SelectTrigger>\n <SelectContent>\n {options.map((option) => (\n <SelectItem key={String(option.value)} value={String(option.value)}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n});\n","import type { ControlProps, OwnPropsOfEnum, RankedTester } from \"@jsonforms/core\";\nimport { isEnumControl, rankWith } from \"@jsonforms/core\";\nimport { withJsonFormsEnumProps } from \"@jsonforms/react\";\nimport { Field, FieldLabel, FieldDescription, FieldError } from \"@/components/ui/field\";\nimport { ShadcnSelect } from \"../shadcn-controls/ShadcnSelect\";\n\nexport const ShadcnEnumControl = ({\n data,\n visible,\n label,\n id,\n enabled,\n uischema,\n schema,\n rootSchema,\n handleChange,\n errors,\n path,\n config,\n description,\n options,\n}: ControlProps & OwnPropsOfEnum) => {\n const isValid = errors.length === 0;\n\n if (!visible) {\n return null;\n }\n\n return (\n <Field data-invalid={!isValid || undefined} data-disabled={!enabled || undefined}>\n <FieldLabel htmlFor={`${id}-input`}>{label}</FieldLabel>\n {description && <FieldDescription>{description}</FieldDescription>}\n <ShadcnSelect\n id={`${id}-input`}\n data={data}\n enabled={enabled}\n visible={visible}\n path={path}\n uischema={uischema}\n schema={schema}\n rootSchema={rootSchema}\n handleChange={handleChange}\n errors={errors}\n config={config}\n isValid={isValid}\n options={options ?? []}\n />\n {!isValid && <FieldError errors={[{ message: errors }]} />}\n </Field>\n );\n};\n\nexport const shadcnEnumControlTester: RankedTester = rankWith(2, isEnumControl);\n\nexport const ShadcnEnumControlContext = withJsonFormsEnumProps(ShadcnEnumControl);\n","import type { CellProps, WithClassname, EnumOption } from \"@jsonforms/core\";\nimport { memo } from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { RadioGroup, RadioGroupItem } from \"@/components/ui/radio-group\";\nimport { Label } from \"@/components/ui/label\";\n\ntype ShadcnRadioGroupProps = CellProps &\n WithClassname & {\n options: EnumOption[];\n };\n\nexport const ShadcnRadioGroup = memo(function ShadcnRadioGroup(props: ShadcnRadioGroupProps) {\n const { data, className, id, enabled, path, handleChange, options } = props;\n\n return (\n <RadioGroup\n value={data ?? \"\"}\n onValueChange={(value) => handleChange(path, value || undefined)}\n disabled={!enabled}\n className={cn(\"flex flex-col gap-2\", className)}\n >\n {options.map((option) => {\n const optionId = `${id}-${String(option.value)}`;\n return (\n <div key={String(option.value)} className=\"flex items-center gap-2\">\n <RadioGroupItem value={String(option.value)} id={optionId} />\n <Label htmlFor={optionId} className=\"font-normal\">\n {option.label}\n </Label>\n </div>\n );\n })}\n </RadioGroup>\n );\n});\n","import type { ControlProps, OwnPropsOfEnum, RankedTester } from \"@jsonforms/core\";\nimport { and, isEnumControl, optionIs, rankWith } from \"@jsonforms/core\";\nimport { withJsonFormsEnumProps } from \"@jsonforms/react\";\nimport { Field, FieldLabel, FieldDescription, FieldError } from \"@/components/ui/field\";\nimport { ShadcnRadioGroup } from \"../shadcn-controls/ShadcnRadioGroup\";\n\nexport const ShadcnEnumRadioControl = ({\n data,\n visible,\n label,\n id,\n enabled,\n uischema,\n schema,\n rootSchema,\n handleChange,\n errors,\n path,\n config,\n description,\n options,\n}: ControlProps & OwnPropsOfEnum) => {\n const isValid = errors.length === 0;\n\n if (!visible) {\n return null;\n }\n\n return (\n <Field data-invalid={!isValid || undefined} data-disabled={!enabled || undefined}>\n <FieldLabel>{label}</FieldLabel>\n {description && <FieldDescription>{description}</FieldDescription>}\n <ShadcnRadioGroup\n id={`${id}-input`}\n data={data}\n enabled={enabled}\n visible={visible}\n path={path}\n uischema={uischema}\n schema={schema}\n rootSchema={rootSchema}\n handleChange={handleChange}\n errors={errors}\n config={config}\n isValid={isValid}\n options={options ?? []}\n />\n {!isValid && <FieldError errors={[{ message: errors }]} />}\n </Field>\n );\n};\n\nexport const shadcnEnumRadioControlTester: RankedTester = rankWith(\n 20,\n and(isEnumControl, optionIs(\"format\", \"radio\")),\n);\n\nexport const ShadcnEnumRadioControlContext = withJsonFormsEnumProps(ShadcnEnumRadioControl);\n","import type { ControlProps, OwnPropsOfEnum, RankedTester } from \"@jsonforms/core\";\nimport { isOneOfEnumControl, rankWith } from \"@jsonforms/core\";\nimport { withJsonFormsOneOfEnumProps } from \"@jsonforms/react\";\nimport { Field, FieldLabel, FieldDescription, FieldError } from \"@/components/ui/field\";\nimport { ShadcnSelect } from \"../shadcn-controls/ShadcnSelect\";\n\nexport const ShadcnOneOfEnumControl = ({\n data,\n visible,\n label,\n id,\n enabled,\n uischema,\n schema,\n rootSchema,\n handleChange,\n errors,\n path,\n config,\n description,\n options,\n}: ControlProps & OwnPropsOfEnum) => {\n const isValid = errors.length === 0;\n\n if (!visible) {\n return null;\n }\n\n return (\n <Field data-invalid={!isValid || undefined} data-disabled={!enabled || undefined}>\n <FieldLabel htmlFor={`${id}-input`}>{label}</FieldLabel>\n {description && <FieldDescription>{description}</FieldDescription>}\n <ShadcnSelect\n id={`${id}-input`}\n data={data}\n enabled={enabled}\n visible={visible}\n path={path}\n uischema={uischema}\n schema={schema}\n rootSchema={rootSchema}\n handleChange={handleChange}\n errors={errors}\n config={config}\n isValid={isValid}\n options={options ?? []}\n />\n {!isValid && <FieldError errors={[{ message: errors }]} />}\n </Field>\n );\n};\n\nexport const shadcnOneOfEnumControlTester: RankedTester = rankWith(5, isOneOfEnumControl);\n\nexport const ShadcnOneOfEnumControlContext = withJsonFormsOneOfEnumProps(ShadcnOneOfEnumControl);\n","import type { CellProps, WithClassname } from \"@jsonforms/core\";\nimport { memo } from \"react\";\nimport { Slider } from \"@/components/ui/slider\";\n\ntype ShadcnSliderProps = CellProps & WithClassname;\n\nexport const ShadcnSlider = memo(function ShadcnSlider(props: ShadcnSliderProps) {\n const { data, className, id, enabled, path, handleChange, schema } = props;\n\n const min = schema.minimum ?? 0;\n const max = schema.maximum ?? 100;\n const step = schema.multipleOf ?? 1;\n const defaultValue = schema.default ?? min;\n\n const handleSliderChange = (value: number[]) => {\n handleChange(path, value[0]);\n };\n\n return (\n <Slider\n value={[data ?? defaultValue]}\n onValueChange={handleSliderChange}\n className={className}\n id={id}\n disabled={!enabled}\n min={min}\n max={max}\n step={step}\n />\n );\n});\n","import type { ControlProps, RankedTester } from \"@jsonforms/core\";\nimport { isRangeControl, rankWith } from \"@jsonforms/core\";\nimport { withJsonFormsControlProps } from \"@jsonforms/react\";\nimport {\n Field,\n FieldDescription,\n FieldError,\n FieldLabel,\n FieldContent,\n} from \"@/components/ui/field\";\nimport { ShadcnSlider } from \"../shadcn-controls/ShadcnSlider\";\n\nexport const ShadcnSliderControl = ({\n data,\n visible,\n label,\n id,\n enabled,\n uischema,\n schema,\n rootSchema,\n handleChange,\n errors,\n path,\n config,\n description,\n}: ControlProps) => {\n const isValid = errors.length === 0;\n\n if (!visible) {\n return null;\n }\n\n const min = schema.minimum ?? 0;\n const max = schema.maximum ?? 100;\n const defaultValue = schema.default ?? min;\n const currentValue = data ?? defaultValue;\n\n return (\n <Field data-invalid={!isValid || undefined} data-disabled={!enabled || undefined}>\n <FieldContent>\n <FieldLabel htmlFor={`${id}-input`}>{label}</FieldLabel>\n {description && <FieldDescription>{description}</FieldDescription>}\n </FieldContent>\n\n <div className=\"flex items-center justify-between\">\n <span> </span>\n <span className=\"text-muted-foreground text-sm tabular-nums\">{currentValue}</span>\n </div>\n <ShadcnSlider\n id={`${id}-input`}\n data={data}\n enabled={enabled}\n visible={visible}\n path={path}\n uischema={uischema}\n schema={schema}\n rootSchema={rootSchema}\n handleChange={handleChange}\n errors={errors}\n config={config}\n isValid={isValid}\n />\n <div className=\"text-muted-foreground flex justify-between text-xs\">\n <span>{min}</span>\n <span>{max}</span>\n </div>\n\n {!isValid && <FieldError errors={[{ message: errors }]} />}\n </Field>\n );\n};\n\nexport const shadcnSliderControlTester: RankedTester = rankWith(5, isRangeControl);\n\nexport const ShadcnSliderControlContext = withJsonFormsControlProps(ShadcnSliderControl);\n","import { useMemo } from \"react\";\nimport {\n findUISchema,\n Generate,\n isObjectControl,\n rankWith,\n type RankedTester,\n type StatePropsOfControlWithDetail,\n} from \"@jsonforms/core\";\nimport { JsonFormsDispatch, withJsonFormsDetailProps } from \"@jsonforms/react\";\n\nexport const ShadcnObjectControl = ({\n renderers,\n cells,\n uischemas,\n schema,\n label,\n path,\n visible,\n enabled,\n uischema,\n rootSchema,\n}: StatePropsOfControlWithDetail) => {\n const detailUiSchema = useMemo(\n () =>\n findUISchema(\n uischemas ?? [],\n schema,\n uischema.scope,\n path,\n () =>\n !path\n ? Generate.uiSchema(schema, \"VerticalLayout\", undefined, rootSchema)\n : {\n ...Generate.uiSchema(schema, \"Group\", undefined, rootSchema),\n label,\n },\n uischema,\n rootSchema,\n ),\n [uischemas, schema, uischema.scope, path, label, uischema, rootSchema],\n );\n\n if (!visible) {\n return null;\n }\n\n return (\n <JsonFormsDispatch\n visible={visible}\n enabled={enabled}\n schema={schema}\n uischema={detailUiSchema}\n path={path}\n renderers={renderers}\n cells={cells}\n />\n );\n};\n\nexport const shadcnObjectControlTester: RankedTester = rankWith(2, isObjectControl);\n\nexport const ShadcnObjectControlContext = withJsonFormsDetailProps(ShadcnObjectControl);\n","import type { CellProps, RankedTester, WithClassname } from \"@jsonforms/core\";\nimport { isBooleanControl, rankWith } from \"@jsonforms/core\";\nimport { withJsonFormsCellProps } from \"@jsonforms/react\";\nimport { ShadcnCheckbox } from \"../shadcn-controls/ShadcnCheckbox\";\n\nexport const ShadcnBooleanCell = (props: CellProps & WithClassname) => {\n return <ShadcnCheckbox {...props} />;\n};\n\nexport const shadcnBooleanCellTester: RankedTester = rankWith(2, isBooleanControl);\n\nexport const ShadcnBooleanCellContext = withJsonFormsCellProps(ShadcnBooleanCell);\n","import type { CellProps, RankedTester, WithClassname } from \"@jsonforms/core\";\nimport { and, isBooleanControl, optionIs, rankWith } from \"@jsonforms/core\";\nimport { withJsonFormsCellProps } from \"@jsonforms/react\";\nimport { ShadcnSwitch } from \"../shadcn-controls/ShadcnSwitch\";\n\nexport const ShadcnBooleanToggleCell = (props: CellProps & WithClassname) => {\n return <ShadcnSwitch {...props} />;\n};\n\nexport const shadcnBooleanToggleCellTester: RankedTester = rankWith(\n 3,\n and(isBooleanControl, optionIs(\"toggle\", true)),\n);\n\nexport const ShadcnBooleanToggleCellContext = withJsonFormsCellProps(ShadcnBooleanToggleCell);\n","import type { CellProps, RankedTester, WithClassname } from \"@jsonforms/core\";\nimport { isStringControl, rankWith } from \"@jsonforms/core\";\nimport { withJsonFormsCellProps } from \"@jsonforms/react\";\nimport { ShadcnInput } from \"../shadcn-controls/ShadcnInput\";\n\nexport const ShadcnTextCell = (props: CellProps & WithClassname) => {\n return <ShadcnInput {...props} />;\n};\n\nexport const shadcnTextCellTester: RankedTester = rankWith(1, isStringControl);\n\nexport const ShadcnTextCellContext = withJsonFormsCellProps(ShadcnTextCell);\n","import type { CellProps, RankedTester, WithClassname } from \"@jsonforms/core\";\nimport { isDateControl, rankWith } from \"@jsonforms/core\";\nimport { withJsonFormsCellProps } from \"@jsonforms/react\";\nimport { ShadcnDatePicker } from \"../shadcn-controls/ShadcnDatePicker\";\n\nexport const ShadcnDateCell = (props: CellProps & WithClassname) => {\n return <ShadcnDatePicker {...props} />;\n};\n\nexport const shadcnDateCellTester: RankedTester = rankWith(2, isDateControl);\n\nexport const ShadcnDateCellContext = withJsonFormsCellProps(ShadcnDateCell);\n","import type { CellProps, RankedTester, WithClassname } from \"@jsonforms/core\";\nimport { isTimeControl, rankWith } from \"@jsonforms/core\";\nimport { withJsonFormsCellProps } from \"@jsonforms/react\";\nimport { ShadcnTimePicker } from \"../shadcn-controls/ShadcnTimePicker\";\n\nexport const ShadcnTimeCell = (props: CellProps & WithClassname) => {\n return <ShadcnTimePicker {...props} />;\n};\n\nexport const shadcnTimeCellTester: RankedTester = rankWith(2, isTimeControl);\n\nexport const ShadcnTimeCellContext = withJsonFormsCellProps(ShadcnTimeCell);\n","import type { CellProps, RankedTester, WithClassname } from \"@jsonforms/core\";\nimport { isDateTimeControl, rankWith } from \"@jsonforms/core\";\nimport { withJsonFormsCellProps } from \"@jsonforms/react\";\nimport { ShadcnDateTimePicker } from \"../shadcn-controls/ShadcnDateTimePicker\";\n\nexport const ShadcnDateTimeCell = (props: CellProps & WithClassname) => {\n return <ShadcnDateTimePicker {...props} />;\n};\n\nexport const shadcnDateTimeCellTester: RankedTester = rankWith(2, isDateTimeControl);\n\nexport const ShadcnDateTimeCellContext = withJsonFormsCellProps(ShadcnDateTimeCell);\n","import type { CellProps, RankedTester, WithClassname } from \"@jsonforms/core\";\nimport { isIntegerControl, rankWith } from \"@jsonforms/core\";\nimport { withJsonFormsCellProps } from \"@jsonforms/react\";\nimport { ShadcnNumberInput } from \"../shadcn-controls/ShadcnNumberInput\";\n\nexport const ShadcnIntegerCell = (props: CellProps & WithClassname) => {\n return <ShadcnNumberInput {...props} step=\"1\" />;\n};\n\nexport const shadcnIntegerCellTester: RankedTester = rankWith(2, isIntegerControl);\n\nexport const ShadcnIntegerCellContext = withJsonFormsCellProps(ShadcnIntegerCell);\n","import type { CellProps, RankedTester, WithClassname } from \"@jsonforms/core\";\nimport { isNumberControl, rankWith } from \"@jsonforms/core\";\nimport { withJsonFormsCellProps } from \"@jsonforms/react\";\nimport { ShadcnNumberInput } from \"../shadcn-controls/ShadcnNumberInput\";\n\nexport const ShadcnNumberCell = (props: CellProps & WithClassname) => {\n return <ShadcnNumberInput {...props} />;\n};\n\nexport const shadcnNumberCellTester: RankedTester = rankWith(2, isNumberControl);\n\nexport const ShadcnNumberCellContext = withJsonFormsCellProps(ShadcnNumberCell);\n","import type { EnumCellProps, RankedTester, WithClassname } from \"@jsonforms/core\";\nimport { isEnumControl, rankWith } from \"@jsonforms/core\";\nimport { withJsonFormsEnumCellProps } from \"@jsonforms/react\";\nimport { ShadcnSelect } from \"../shadcn-controls/ShadcnSelect\";\n\nexport const ShadcnEnumCell = (props: EnumCellProps & WithClassname) => {\n return <ShadcnSelect {...props} options={props.options ?? []} />;\n};\n\nexport const shadcnEnumCellTester: RankedTester = rankWith(2, isEnumControl);\n\nexport const ShadcnEnumCellContext = withJsonFormsEnumCellProps(ShadcnEnumCell);\n","import type { EnumCellProps, RankedTester, WithClassname } from \"@jsonforms/core\";\nimport { and, isEnumControl, optionIs, rankWith } from \"@jsonforms/core\";\nimport { withJsonFormsEnumCellProps } from \"@jsonforms/react\";\nimport { ShadcnRadioGroup } from \"../shadcn-controls/ShadcnRadioGroup\";\n\nexport const ShadcnEnumRadioCell = (props: EnumCellProps & WithClassname) => {\n return <ShadcnRadioGroup {...props} options={props.options ?? []} />;\n};\n\nexport const shadcnEnumRadioCellTester: RankedTester = rankWith(\n 20,\n and(isEnumControl, optionIs(\"format\", \"radio\")),\n);\n\nexport const ShadcnEnumRadioCellContext = withJsonFormsEnumCellProps(ShadcnEnumRadioCell);\n","import type { EnumCellProps, RankedTester, WithClassname } from \"@jsonforms/core\";\nimport { isOneOfEnumControl, rankWith } from \"@jsonforms/core\";\nimport { withJsonFormsOneOfEnumCellProps } from \"@jsonforms/react\";\nimport { ShadcnSelect } from \"../shadcn-controls/ShadcnSelect\";\n\nexport const ShadcnOneOfEnumCell = (props: EnumCellProps & WithClassname) => {\n return <ShadcnSelect {...props} options={props.options ?? []} />;\n};\n\nexport const shadcnOneOfEnumCellTester: RankedTester = rankWith(2, isOneOfEnumControl);\n\nexport const ShadcnOneOfEnumCellContext = withJsonFormsOneOfEnumCellProps(ShadcnOneOfEnumCell);\n","import type { CellProps, RankedTester } from \"@jsonforms/core\";\nimport { isRangeControl, rankWith } from \"@jsonforms/core\";\nimport { withJsonFormsCellProps } from \"@jsonforms/react\";\nimport { ShadcnSlider } from \"../shadcn-controls/ShadcnSlider\";\n\nexport const ShadcnSliderCell = (props: CellProps) => {\n const { visible } = props;\n\n if (!visible) {\n return null;\n }\n\n return <ShadcnSlider {...props} />;\n};\n\nexport const shadcnSliderCellTester: RankedTester = rankWith(2, isRangeControl);\n\nexport const ShadcnSliderCellContext = withJsonFormsCellProps(ShadcnSliderCell);\n","import type { LayoutProps, RankedTester, VerticalLayout } from \"@jsonforms/core\";\nimport { rankWith, uiTypeIs } from \"@jsonforms/core\";\nimport { JsonFormsDispatch, withJsonFormsLayoutProps } from \"@jsonforms/react\";\nimport { Fragment } from \"react\";\nimport { FieldSeparator, FieldGroup } from \"@/components/ui/field\";\n\nexport const ShadcnVerticalLayout = ({\n uischema,\n schema,\n path,\n enabled,\n visible,\n renderers,\n cells,\n}: LayoutProps) => {\n // Safe cast: tester ensures uischema type is \"VerticalLayout\"\n const verticalLayout = uischema as VerticalLayout;\n\n if (!visible || !verticalLayout.elements || verticalLayout.elements.length === 0) {\n return null;\n }\n\n return (\n <FieldGroup>\n {verticalLayout.elements.map((child, index) => {\n const isGroup = child.type === \"Group\";\n const prevElement = verticalLayout.elements[index - 1];\n const prevIsGroup = prevElement?.type === \"Group\";\n const showSeparator = index > 0 && (isGroup || prevIsGroup);\n\n return (\n <Fragment key={`${path}-${index}`}>\n {showSeparator && <FieldSeparator />}\n <div>\n <JsonFormsDispatch\n uischema={child}\n schema={schema}\n path={path}\n enabled={enabled}\n renderers={renderers}\n cells={cells}\n />\n </div>\n </Fragment>\n );\n })}\n </FieldGroup>\n );\n};\n\nexport const shadcnVerticalLayoutTester: RankedTester = rankWith(1, uiTypeIs(\"VerticalLayout\"));\n\nexport const ShadcnVerticalLayoutContext = withJsonFormsLayoutProps(ShadcnVerticalLayout);\n","import type { HorizontalLayout, LayoutProps, RankedTester } from \"@jsonforms/core\";\nimport { rankWith, uiTypeIs } from \"@jsonforms/core\";\nimport { JsonFormsDispatch, withJsonFormsLayoutProps } from \"@jsonforms/react\";\n\nexport const ShadcnHorizontalLayout = ({\n uischema,\n schema,\n path,\n enabled,\n visible,\n renderers,\n cells,\n}: LayoutProps) => {\n const horizontalLayout = uischema as HorizontalLayout;\n\n if (!visible || !horizontalLayout.elements || horizontalLayout.elements.length === 0) {\n return null;\n }\n\n return (\n <div className=\"flex flex-row gap-4\">\n {horizontalLayout.elements.map((child, index) => (\n <div key={`${path}-${index}`} className=\"flex-1\">\n <JsonFormsDispatch\n uischema={child}\n schema={schema}\n path={path}\n enabled={enabled}\n renderers={renderers}\n cells={cells}\n />\n </div>\n ))}\n </div>\n );\n};\n\nexport const shadcnHorizontalLayoutTester: RankedTester = rankWith(1, uiTypeIs(\"HorizontalLayout\"));\n\nexport const ShadcnHorizontalLayoutContext = withJsonFormsLayoutProps(ShadcnHorizontalLayout);\n","import type { GroupLayout, LayoutProps, RankedTester } from \"@jsonforms/core\";\nimport { rankWith, uiTypeIs } from \"@jsonforms/core\";\nimport { JsonFormsDispatch, withJsonFormsLayoutProps } from \"@jsonforms/react\";\nimport { FieldSet, FieldLabel, FieldDescription } from \"@/components/ui/field\";\n\nexport const ShadcnGroupLayout = ({\n uischema,\n schema,\n path,\n enabled,\n visible,\n renderers,\n cells,\n label,\n}: LayoutProps) => {\n const groupLayout = uischema as GroupLayout;\n const description = groupLayout.options?.[\"description\"] as string | undefined;\n\n if (!visible) {\n return null;\n }\n\n const hasElements = groupLayout.elements && groupLayout.elements.length > 0;\n\n return (\n <FieldSet>\n {label && <FieldLabel>{label}</FieldLabel>}\n {description && <FieldDescription>{description}</FieldDescription>}\n {hasElements &&\n groupLayout.elements.map((child, index) => (\n <JsonFormsDispatch\n key={`${path}-${index}`}\n uischema={child}\n schema={schema}\n path={path}\n enabled={enabled}\n renderers={renderers}\n cells={cells}\n />\n ))}\n </FieldSet>\n );\n};\n\nexport const shadcnGroupLayoutTester: RankedTester = rankWith(1, uiTypeIs(\"Group\"));\n\nexport const ShadcnGroupLayoutContext = withJsonFormsLayoutProps(ShadcnGroupLayout);\n","import { useState } from \"react\";\nimport type { Categorization, Category, LayoutProps, RankedTester } from \"@jsonforms/core\";\nimport { and, categorizationHasCategory, rankWith, uiTypeIs } from \"@jsonforms/core\";\nimport { JsonFormsDispatch, withJsonFormsLayoutProps } from \"@jsonforms/react\";\nimport { Card, CardContent, CardHeader } from \"@/components/ui/card\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/ui/tabs\";\n\nexport const ShadcnCategorizationLayout = ({\n uischema,\n schema,\n path,\n enabled,\n visible,\n renderers,\n cells,\n}: LayoutProps) => {\n const categorization = uischema as Categorization;\n const categories = (categorization.elements || []) as Category[];\n const [activeTab, setActiveTab] = useState(\n categories.length > 0 ? categories[0].label || \"tab-0\" : \"tab-0\",\n );\n\n if (!visible) {\n return null;\n }\n\n if (categories.length === 0) {\n return null;\n }\n\n const getTabValue = (category: Category, index: number) => category.label || `tab-${index}`;\n\n return (\n <Card>\n <Tabs value={activeTab} onValueChange={setActiveTab} className=\"w-full\">\n <CardHeader>\n <TabsList className=\"w-full\">\n {categories.map((category, index) => (\n <TabsTrigger key={index} value={getTabValue(category, index)} className=\"flex-1\">\n {category.label || `Tab ${index + 1}`}\n </TabsTrigger>\n ))}\n </TabsList>\n </CardHeader>\n {categories.map((category, categoryIndex) => (\n <TabsContent\n key={categoryIndex}\n value={getTabValue(category, categoryIndex)}\n className=\"mt-0\"\n >\n <CardContent>\n <div className=\"flex flex-col gap-4\">\n {category.elements?.map((element, elementIndex) => (\n <JsonFormsDispatch\n key={`${path}-${categoryIndex}-${elementIndex}`}\n uischema={element}\n schema={schema}\n path={path}\n enabled={enabled}\n renderers={renderers}\n cells={cells}\n />\n ))}\n </div>\n </CardContent>\n </TabsContent>\n ))}\n </Tabs>\n </Card>\n );\n};\n\nexport const shadcnCategorizationLayoutTester: RankedTester = rankWith(\n 1,\n and(uiTypeIs(\"Categorization\"), categorizationHasCategory),\n);\n\nexport const ShadcnCategorizationLayoutContext = withJsonFormsLayoutProps(\n ShadcnCategorizationLayout,\n);\n","import { useState } from \"react\";\nimport type { Categorization, Category, LayoutProps, RankedTester } from \"@jsonforms/core\";\nimport { and, categorizationHasCategory, optionIs, rankWith, uiTypeIs } from \"@jsonforms/core\";\nimport { JsonFormsDispatch, withJsonFormsLayoutProps } from \"@jsonforms/react\";\nimport { Button } from \"@/components/ui/button\";\nimport { Card, CardContent, CardFooter, CardHeader, CardTitle } from \"@/components/ui/card\";\nimport { cn } from \"@/lib/utils\";\n\nexport const ShadcnCategorizationStepperLayout = ({\n uischema,\n schema,\n path,\n enabled,\n visible,\n renderers,\n cells,\n}: LayoutProps) => {\n const categorization = uischema as Categorization;\n const categories = (categorization.elements || []) as Category[];\n const [currentStep, setCurrentStep] = useState(0);\n\n if (!visible) {\n return null;\n }\n\n if (categories.length === 0) {\n return null;\n }\n\n const currentCategory = categories[currentStep];\n const isFirstStep = currentStep === 0;\n const isLastStep = currentStep === categories.length - 1;\n\n const handleNext = () => {\n if (!isLastStep) {\n setCurrentStep(currentStep + 1);\n }\n };\n\n const handlePrevious = () => {\n if (!isFirstStep) {\n setCurrentStep(currentStep - 1);\n }\n };\n\n const handleStepClick = (stepIndex: number) => {\n setCurrentStep(stepIndex);\n };\n\n return (\n <Card>\n <CardHeader>\n {/* Step Indicator */}\n <div className=\"flex w-full items-center\">\n {categories.map((category, index) => (\n <div key={index} className=\"flex flex-1 items-center last:flex-none\">\n <button\n type=\"button\"\n onClick={() => handleStepClick(index)}\n className={cn(\n \"flex h-8 w-8 shrink-0 items-center justify-center rounded-full text-sm font-medium transition-colors\",\n index === currentStep\n ? \"bg-primary text-primary-foreground\"\n : index < currentStep\n ? \"bg-primary/20 text-primary hover:bg-primary/30\"\n : \"bg-muted text-muted-foreground hover:bg-muted/80\",\n )}\n title={category.label}\n >\n {index + 1}\n </button>\n {index < categories.length - 1 && (\n <div\n className={cn(\n \"mx-2 h-0.5 flex-1\",\n index < currentStep ? \"bg-primary/50\" : \"bg-muted\",\n )}\n />\n )}\n </div>\n ))}\n </div>\n {currentCategory.label && <CardTitle className=\"pt-4\">{currentCategory.label}</CardTitle>}\n </CardHeader>\n <CardContent>\n <div className=\"flex flex-col gap-4\">\n {currentCategory.elements?.map((element, index) => (\n <JsonFormsDispatch\n key={`${path}-${currentStep}-${index}`}\n uischema={element}\n schema={schema}\n path={path}\n enabled={enabled}\n renderers={renderers}\n cells={cells}\n />\n ))}\n </div>\n </CardContent>\n <CardFooter className=\"flex justify-between\">\n <Button type=\"button\" variant=\"outline\" onClick={handlePrevious} disabled={isFirstStep}>\n Previous\n </Button>\n {!isLastStep && (\n <Button type=\"button\" onClick={handleNext}>\n Next\n </Button>\n )}\n </CardFooter>\n </Card>\n );\n};\n\nexport const shadcnCategorizationStepperLayoutTester: RankedTester = rankWith(\n 2,\n and(uiTypeIs(\"Categorization\"), categorizationHasCategory, optionIs(\"variant\", \"stepper\")),\n);\n\nexport const ShadcnCategorizationStepperLayoutContext = withJsonFormsLayoutProps(\n ShadcnCategorizationStepperLayout,\n);\n","import type {\n JsonFormsCellRendererRegistryEntry,\n JsonFormsRendererRegistryEntry,\n} from \"@jsonforms/core\";\n\nexport * from \"./controls\";\nexport * from \"./cells\";\nexport * from \"./layouts\";\nexport * from \"./shadcn-controls\";\n\nimport {\n shadcnBooleanControlTester,\n ShadcnBooleanControlContext,\n shadcnBooleanToggleControlTester,\n ShadcnBooleanToggleControlContext,\n shadcnTextControlTester,\n ShadcnTextControlContext,\n shadcnTextAreaControlTester,\n ShadcnTextAreaControlContext,\n shadcnDateControlTester,\n ShadcnDateControlContext,\n shadcnTimeControlTester,\n ShadcnTimeControlContext,\n shadcnDateTimeControlTester,\n ShadcnDateTimeControlContext,\n shadcnIntegerControlTester,\n ShadcnIntegerControlContext,\n shadcnNumberControlTester,\n ShadcnNumberControlContext,\n shadcnEnumControlTester,\n ShadcnEnumControlContext,\n shadcnEnumRadioControlTester,\n ShadcnEnumRadioControlContext,\n shadcnOneOfEnumControlTester,\n ShadcnOneOfEnumControlContext,\n shadcnSliderControlTester,\n ShadcnSliderControlContext,\n shadcnObjectControlTester,\n ShadcnObjectControlContext,\n} from \"./controls\";\n\nimport {\n shadcnBooleanCellTester,\n ShadcnBooleanCellContext,\n shadcnBooleanToggleCellTester,\n ShadcnBooleanToggleCellContext,\n shadcnTextCellTester,\n ShadcnTextCellContext,\n shadcnDateCellTester,\n ShadcnDateCellContext,\n shadcnTimeCellTester,\n ShadcnTimeCellContext,\n shadcnDateTimeCellTester,\n ShadcnDateTimeCellContext,\n shadcnIntegerCellTester,\n ShadcnIntegerCellContext,\n shadcnNumberCellTester,\n ShadcnNumberCellContext,\n shadcnEnumCellTester,\n ShadcnEnumCellContext,\n shadcnEnumRadioCellTester,\n ShadcnEnumRadioCellContext,\n shadcnOneOfEnumCellTester,\n ShadcnOneOfEnumCellContext,\n shadcnSliderCellTester,\n ShadcnSliderCellContext,\n} from \"./cells\";\n\nimport {\n shadcnVerticalLayoutTester,\n ShadcnVerticalLayoutContext,\n shadcnHorizontalLayoutTester,\n ShadcnHorizontalLayoutContext,\n shadcnGroupLayoutTester,\n ShadcnGroupLayoutContext,\n shadcnCategorizationLayoutTester,\n ShadcnCategorizationLayoutContext,\n shadcnCategorizationStepperLayoutTester,\n ShadcnCategorizationStepperLayoutContext,\n} from \"./layouts\";\n\n/**\n * Shadcn renderers for JSON Forms.\n * Register these with JSON Forms to use shadcn/ui components for form rendering.\n */\nexport const shadcnRenderers: JsonFormsRendererRegistryEntry[] = [\n {\n tester: shadcnCategorizationStepperLayoutTester,\n renderer: ShadcnCategorizationStepperLayoutContext,\n },\n { tester: shadcnCategorizationLayoutTester, renderer: ShadcnCategorizationLayoutContext },\n { tester: shadcnVerticalLayoutTester, renderer: ShadcnVerticalLayoutContext },\n { tester: shadcnHorizontalLayoutTester, renderer: ShadcnHorizontalLayoutContext },\n { tester: shadcnGroupLayoutTester, renderer: ShadcnGroupLayoutContext },\n { tester: shadcnDateTimeControlTester, renderer: ShadcnDateTimeControlContext },\n { tester: shadcnTimeControlTester, renderer: ShadcnTimeControlContext },\n { tester: shadcnDateControlTester, renderer: ShadcnDateControlContext },\n { tester: shadcnTextAreaControlTester, renderer: ShadcnTextAreaControlContext },\n { tester: shadcnBooleanToggleControlTester, renderer: ShadcnBooleanToggleControlContext },\n { tester: shadcnBooleanControlTester, renderer: ShadcnBooleanControlContext },\n { tester: shadcnTextControlTester, renderer: ShadcnTextControlContext },\n { tester: shadcnIntegerControlTester, renderer: ShadcnIntegerControlContext },\n { tester: shadcnNumberControlTester, renderer: ShadcnNumberControlContext },\n { tester: shadcnEnumControlTester, renderer: ShadcnEnumControlContext },\n { tester: shadcnEnumRadioControlTester, renderer: ShadcnEnumRadioControlContext },\n { tester: shadcnOneOfEnumControlTester, renderer: ShadcnOneOfEnumControlContext },\n { tester: shadcnSliderControlTester, renderer: ShadcnSliderControlContext },\n { tester: shadcnObjectControlTester, renderer: ShadcnObjectControlContext },\n];\n\n/** Shadcn cells for JSON Forms (lightweight renderers for tables/arrays). */\nexport const shadcnCells: JsonFormsCellRendererRegistryEntry[] = [\n { tester: shadcnBooleanCellTester, cell: ShadcnBooleanCellContext },\n { tester: shadcnBooleanToggleCellTester, cell: ShadcnBooleanToggleCellContext },\n { tester: shadcnTextCellTester, cell: ShadcnTextCellContext },\n { tester: shadcnDateCellTester, cell: ShadcnDateCellContext },\n { tester: shadcnTimeCellTester, cell: ShadcnTimeCellContext },\n { tester: shadcnDateTimeCellTester, cell: ShadcnDateTimeCellContext },\n { tester: shadcnIntegerCellTester, cell: ShadcnIntegerCellContext },\n { tester: shadcnNumberCellTester, cell: ShadcnNumberCellContext },\n { tester: shadcnEnumCellTester, cell: ShadcnEnumCellContext },\n { tester: shadcnEnumRadioCellTester, cell: ShadcnEnumRadioCellContext },\n { tester: shadcnOneOfEnumCellTester, cell: ShadcnOneOfEnumCellContext },\n { tester: shadcnSliderCellTester, cell: ShadcnSliderCellContext },\n];\n"],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,66 @@
1
+ {
2
+ "name": "@fragno-dev/jsonforms-shadcn-renderers",
3
+ "version": "0.0.0",
4
+ "private": false,
5
+ "keywords": [
6
+ "fragno",
7
+ "shadcn",
8
+ "renderer",
9
+ "form",
10
+ "forms",
11
+ "json",
12
+ "jsonforms",
13
+ "jsonschema",
14
+ "schema",
15
+ "uischema",
16
+ "layout"
17
+ ],
18
+ "type": "module",
19
+ "main": "./dist/index.js",
20
+ "module": "./dist/index.js",
21
+ "types": "./dist/index.d.ts",
22
+ "exports": {
23
+ ".": {
24
+ "development": "./src/index.ts",
25
+ "types": "./dist/index.d.ts",
26
+ "default": "./dist/index.js"
27
+ }
28
+ },
29
+ "files": [
30
+ "dist"
31
+ ],
32
+ "dependencies": {
33
+ "@jsonforms/core": "^3.7.0",
34
+ "@jsonforms/react": "^3.7.0"
35
+ },
36
+ "peerDependencies": {
37
+ "react": "^18.0.0 || ^19.0.0",
38
+ "react-dom": "^18.0.0 || ^19.0.0"
39
+ },
40
+ "devDependencies": {
41
+ "@testing-library/jest-dom": "^6.9.1",
42
+ "@testing-library/react": "^16.2.0",
43
+ "@types/react": "^19.2.2",
44
+ "@types/react-dom": "^19.2.2",
45
+ "@vitest/coverage-istanbul": "^3.2.4",
46
+ "jsdom": "^27.0.0",
47
+ "react": "^19.2.0",
48
+ "react-dom": "^19.2.0",
49
+ "@fragno-private/vitest-config": "0.0.0",
50
+ "@fragno-private/typescript-config": "0.0.1"
51
+ },
52
+ "repository": {
53
+ "type": "git",
54
+ "url": "https://github.com/rejot-dev/fragno.git",
55
+ "directory": "packages/jsonforms-shadcn-renderers"
56
+ },
57
+ "homepage": "https://fragno.dev",
58
+ "license": "MIT",
59
+ "scripts": {
60
+ "build": "tsdown",
61
+ "build:watch": "tsdown --watch",
62
+ "types:check": "tsc --noEmit",
63
+ "test": "vitest run",
64
+ "test:watch": "vitest"
65
+ }
66
+ }