'use client'; import type { CmsFieldType } from '../schema/module.schema'; import { Input } from '@kit/ui/input'; import { Textarea } from '@kit/ui/textarea'; import { Checkbox } from '@kit/ui/checkbox'; import { Label } from '@kit/ui/label'; interface FieldRendererProps { name: string; displayName: string; fieldType: CmsFieldType; value: unknown; onChange: (value: unknown) => void; placeholder?: string; helpText?: string; required?: boolean; readonly?: boolean; error?: string; selectOptions?: Array<{ label: string; value: string }>; } /** * Maps cms_field_type to the appropriate Shadcn UI component. * Replaces legacy PHP field rendering from my_modulklasse. */ export function FieldRenderer({ name, displayName, fieldType, value, onChange, placeholder, helpText, required, readonly, error, selectOptions, }: FieldRendererProps) { const fieldValue = value != null ? String(value) : ''; const renderField = () => { switch (fieldType) { case 'text': case 'phone': case 'url': case 'color': return ( onChange(e.target.value)} placeholder={placeholder} readOnly={readonly} required={required} /> ); case 'email': return ( onChange(e.target.value)} placeholder={placeholder ?? 'email@example.de'} readOnly={readonly} required={required} /> ); case 'password': return ( onChange(e.target.value)} placeholder={placeholder} readOnly={readonly} required={required} /> ); case 'textarea': return (