config-driven-form 1.3.0 → 1.3.1

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.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ClassNamesContext.tsx","../src/components/fields/TextField.tsx","../src/components/fields/PasswordField.tsx","../src/components/fields/NumberField.tsx","../src/components/fields/RichTextField.tsx","../src/components/fields/SelectField.tsx","../src/components/fields/RadioField.tsx","../src/components/fields/CheckboxField.tsx","../src/components/fields/CheckboxGroupField.tsx","../src/components/fields/FileField.tsx","../src/components/FieldRenderer.tsx","../src/components/SchemaForm.tsx","../src/builder/types.ts","../src/builder/useFormBuilder.ts","../src/builder/components/Toolbox.tsx","../src/builder/components/SortableField.tsx","../src/builder/components/Canvas.tsx","../src/builder/components/PropertiesPanel.tsx","../src/builder/FormBuilder.tsx"],"names":["createContext","jsx","useContext","useFormContext","jsxs","AlertCircle","useState","EyeOff","Eye","useEditor","StarterKit","editor","useEffect","Bold","Italic","Heading2","List","ListOrdered","EditorContent","_a","useForm","ajvResolver","FormProvider","uuidv4","useCallback","arrayMove","useMemo","Type","Hash","Mail","Key","AlignLeft","ChevronDown","CheckCircle2","CheckSquare","FileUp","useDraggable","useSortable","CSS","GripVertical","Copy","Trash2","useDroppable","SortableContext","verticalListSortingStrategy","LayoutTemplate","Palette","Settings","Paintbrush","Fragment","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","Code2","Save","DndContext","closestCenter","DragOverlay"],"mappings":"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","file":"index.js","sourcesContent":["import React, { createContext, useContext } from 'react';\nimport { FormClassNames } from '../types/schema';\n\nconst ClassNamesContext = createContext<FormClassNames>({});\n\nexport const ClassNamesProvider: React.FC<{\n value?: FormClassNames;\n children: React.ReactNode;\n}> = ({ value = {}, children }) => {\n return <ClassNamesContext.Provider value={value}>{children}</ClassNamesContext.Provider>;\n};\n\nexport const useClassNames = () => useContext(ClassNamesContext);\n\n// Utility to merge class strings easily without an external library\nexport const cx = (...classes: (string | undefined | null | false)[]) => {\n return classes.filter(Boolean).join(' ').trim();\n};\n","import React from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { JSONSchema, UISchema } from '../../types/schema';\nimport { useClassNames, cx } from '../ClassNamesContext';\nimport { AlertCircle } from 'lucide-react';\n\ninterface TextFieldProps {\n name: string;\n schema: JSONSchema;\n uiSchema?: UISchema;\n isRequired?: boolean;\n}\n\nexport const TextField: React.FC<TextFieldProps> = ({ name, schema, uiSchema, isRequired }) => {\n const globalClasses = useClassNames();\n const localClasses = uiSchema?.['ui:classNames'] || {};\n const {\n register,\n formState: { errors },\n } = useFormContext();\n const error = errors[name];\n\n return (\n <div className={cx('cdf-field-group', globalClasses.fieldGroup, localClasses.fieldGroup)}>\n <label className={cx('cdf-label', globalClasses.label, localClasses.label)} htmlFor={name}>\n {schema.title || name}\n {isRequired && <span className=\"cdf-required-mark\">*</span>}\n </label>\n <div className=\"cdf-input-wrapper\">\n <input\n id={name}\n type={schema.format === 'email' ? 'email' : 'text'}\n className={cx(\n 'cdf-input',\n globalClasses.input,\n localClasses.input,\n error && 'cdf-input--error',\n error && globalClasses.inputError,\n error && localClasses.inputError,\n )}\n placeholder={`Enter ${schema.title || name}`}\n {...register(name)}\n />\n </div>\n {error && (\n <span className={cx('cdf-error-message', globalClasses.errorText, localClasses.errorText)}>\n <AlertCircle size={14} />\n {error.message as string}\n </span>\n )}\n </div>\n );\n};\n","import React, { useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { JSONSchema, UISchema } from '../../types/schema';\nimport { useClassNames, cx } from '../ClassNamesContext';\nimport { AlertCircle, Eye, EyeOff } from 'lucide-react';\n\ninterface PasswordFieldProps {\n name: string;\n schema: JSONSchema;\n uiSchema?: UISchema;\n isRequired?: boolean;\n}\n\nexport const PasswordField: React.FC<PasswordFieldProps> = ({\n name,\n schema,\n uiSchema,\n isRequired,\n}) => {\n const globalClasses = useClassNames();\n const localClasses = uiSchema?.['ui:classNames'] || {};\n const {\n register,\n formState: { errors },\n } = useFormContext();\n const [showPassword, setShowPassword] = useState(false);\n const error = errors[name];\n\n return (\n <div className={cx('cdf-field-group', globalClasses.fieldGroup, localClasses.fieldGroup)}>\n <label className={cx('cdf-label', globalClasses.label, localClasses.label)} htmlFor={name}>\n {schema.title || name}\n {isRequired && <span className=\"cdf-required-mark\">*</span>}\n </label>\n <div className=\"cdf-input-wrapper\">\n <input\n id={name}\n type={showPassword ? 'text' : 'password'}\n className={cx(\n 'cdf-input',\n globalClasses.input,\n localClasses.input,\n error && 'cdf-input--error',\n error && globalClasses.inputError,\n error && localClasses.inputError,\n )}\n style={{ paddingRight: '2.5rem' }}\n placeholder={`Enter ${schema.title || name}`}\n {...register(name)}\n />\n <button\n type=\"button\"\n className=\"cdf-toolbar-btn\"\n style={{ position: 'absolute', right: '0.5rem' }}\n onClick={() => setShowPassword(!showPassword)}\n >\n {showPassword ? <EyeOff size={16} /> : <Eye size={16} />}\n </button>\n </div>\n {error && (\n <span className={cx('cdf-error-message', globalClasses.errorText, localClasses.errorText)}>\n <AlertCircle size={14} />\n {error.message as string}\n </span>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { JSONSchema, UISchema } from '../../types/schema';\nimport { useClassNames, cx } from '../ClassNamesContext';\nimport { AlertCircle } from 'lucide-react';\n\ninterface NumberFieldProps {\n name: string;\n schema: JSONSchema;\n uiSchema?: UISchema;\n isRequired?: boolean;\n}\n\nexport const NumberField: React.FC<NumberFieldProps> = ({ name, schema, uiSchema, isRequired }) => {\n const globalClasses = useClassNames();\n const localClasses = uiSchema?.['ui:classNames'] || {};\n const {\n register,\n formState: { errors },\n } = useFormContext();\n const error = errors[name];\n\n return (\n <div className={cx('cdf-field-group', globalClasses.fieldGroup, localClasses.fieldGroup)}>\n <label className={cx('cdf-label', globalClasses.label, localClasses.label)} htmlFor={name}>\n {schema.title || name}\n {isRequired && <span className=\"cdf-required-mark\">*</span>}\n </label>\n <div className=\"cdf-input-wrapper\">\n <input\n id={name}\n type=\"number\"\n className={cx(\n 'cdf-input',\n globalClasses.input,\n localClasses.input,\n error && 'cdf-input--error',\n error && globalClasses.inputError,\n error && localClasses.inputError,\n )}\n placeholder={`Enter ${schema.title || name}`}\n {...register(name, {\n valueAsNumber: true,\n })}\n />\n </div>\n {error && (\n <span className={cx('cdf-error-message', globalClasses.errorText, localClasses.errorText)}>\n <AlertCircle size={14} />\n {error.message as string}\n </span>\n )}\n </div>\n );\n};\n","import React, { useEffect } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useEditor, EditorContent } from '@tiptap/react';\nimport StarterKit from '@tiptap/starter-kit';\nimport { JSONSchema, UISchema } from '../../types/schema';\nimport { useClassNames, cx } from '../ClassNamesContext';\nimport { AlertCircle, Bold, Italic, List, ListOrdered, Heading2 } from 'lucide-react';\n\ninterface RichTextFieldProps {\n name: string;\n schema: JSONSchema;\n uiSchema?: UISchema;\n isRequired?: boolean;\n}\n\nexport const RichTextField: React.FC<RichTextFieldProps> = ({\n name,\n schema,\n uiSchema,\n isRequired,\n}) => {\n const globalClasses = useClassNames();\n const localClasses = uiSchema?.['ui:classNames'] || {};\n const {\n setValue,\n watch,\n formState: { errors },\n } = useFormContext();\n const error = errors[name];\n const value = watch(name);\n\n const editor = useEditor({\n extensions: [StarterKit],\n content: value || '',\n onUpdate: ({ editor }) => {\n setValue(name, editor.getHTML(), { shouldValidate: true, shouldDirty: true });\n },\n });\n\n // Keep editor in sync with external form changes (if any)\n useEffect(() => {\n if (editor && value !== editor.getHTML()) {\n editor.commands.setContent(value || '');\n }\n }, [value, editor]);\n\n return (\n <div className={cx('cdf-field-group', globalClasses.fieldGroup, localClasses.fieldGroup)}>\n <label className={cx('cdf-label', globalClasses.label, localClasses.label)} htmlFor={name}>\n {schema.title || name}\n {isRequired && <span className=\"cdf-required-mark\">*</span>}\n </label>\n\n <div\n className={cx(\n 'cdf-rich-text-wrapper',\n error && 'cdf-input--error',\n error && globalClasses.inputError,\n error && localClasses.inputError,\n )}\n >\n <div className=\"cdf-rich-text-toolbar\">\n <button\n type=\"button\"\n onClick={() => editor?.chain().focus().toggleBold().run()}\n className={`cdf-toolbar-btn ${editor?.isActive('bold') ? 'is-active' : ''}`}\n >\n <Bold size={16} />\n </button>\n <button\n type=\"button\"\n onClick={() => editor?.chain().focus().toggleItalic().run()}\n className={`cdf-toolbar-btn ${editor?.isActive('italic') ? 'is-active' : ''}`}\n >\n <Italic size={16} />\n </button>\n <button\n type=\"button\"\n onClick={() => editor?.chain().focus().toggleHeading({ level: 2 }).run()}\n className={`cdf-toolbar-btn ${editor?.isActive('heading', { level: 2 }) ? 'is-active' : ''}`}\n >\n <Heading2 size={16} />\n </button>\n <button\n type=\"button\"\n onClick={() => editor?.chain().focus().toggleBulletList().run()}\n className={`cdf-toolbar-btn ${editor?.isActive('bulletList') ? 'is-active' : ''}`}\n >\n <List size={16} />\n </button>\n <button\n type=\"button\"\n onClick={() => editor?.chain().focus().toggleOrderedList().run()}\n className={`cdf-toolbar-btn ${editor?.isActive('orderedList') ? 'is-active' : ''}`}\n >\n <ListOrdered size={16} />\n </button>\n </div>\n\n <EditorContent editor={editor} className=\"cdf-rich-text-content\" />\n </div>\n\n {error && (\n <span className={cx('cdf-error-message', globalClasses.errorText, localClasses.errorText)}>\n <AlertCircle size={14} />\n {error.message as string}\n </span>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { JSONSchema, UISchema } from '../../types/schema';\nimport { useClassNames, cx } from '../ClassNamesContext';\n\ninterface SelectFieldProps {\n name: string;\n schema: JSONSchema;\n uiSchema?: UISchema;\n isRequired?: boolean;\n}\n\nexport const SelectField: React.FC<SelectFieldProps> = ({ name, schema, uiSchema, isRequired }) => {\n const globalClasses = useClassNames();\n const localClasses = uiSchema?.['ui:classNames'] || {};\n const {\n register,\n formState: { errors },\n } = useFormContext();\n\n const error = errors[name];\n\n return (\n <div className={cx('cdf-field-group', globalClasses.fieldGroup, localClasses.fieldGroup)}>\n <label htmlFor={name} className={cx('cdf-label', globalClasses.label, localClasses.label)}>\n {schema.title || name}\n {isRequired && <span className=\"cdf-required-mark\">*</span>}\n </label>\n\n <div className=\"cdf-input-wrapper\">\n <select\n id={name}\n {...register(name)}\n className={cx(\n 'cdf-input',\n 'cdf-select',\n globalClasses.input,\n localClasses.input,\n error && 'cdf-input--error',\n error && globalClasses.inputError,\n error && localClasses.inputError,\n )}\n >\n <option value=\"\">Select an option...</option>\n {schema.enum?.map((option) => (\n <option key={option} value={option}>\n {option}\n </option>\n ))}\n </select>\n </div>\n\n {error && (\n <span className={cx('cdf-error-message', globalClasses.errorText, localClasses.errorText)}>\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\n <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"></line>\n <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"></line>\n </svg>\n {error.message as string}\n </span>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { JSONSchema, UISchema } from '../../types/schema';\nimport { useClassNames, cx } from '../ClassNamesContext';\n\ninterface RadioFieldProps {\n name: string;\n schema: JSONSchema;\n uiSchema?: UISchema;\n isRequired?: boolean;\n}\n\nexport const RadioField: React.FC<RadioFieldProps> = ({ name, schema, uiSchema, isRequired }) => {\n const globalClasses = useClassNames();\n const localClasses = uiSchema?.['ui:classNames'] || {};\n const {\n register,\n formState: { errors },\n } = useFormContext();\n\n const error = errors[name];\n\n return (\n <div className={cx('cdf-field-group', globalClasses.fieldGroup, localClasses.fieldGroup)}>\n <label className={cx('cdf-label', globalClasses.label, localClasses.label)}>\n {schema.title || name}\n {isRequired && <span className=\"cdf-required-mark\">*</span>}\n </label>\n\n <div className={cx('cdf-radio-group', globalClasses.radioGroup, localClasses.radioGroup)}>\n {schema.enum?.map((option) => (\n <label\n key={option}\n className={cx('cdf-radio-label', globalClasses.radioLabel, localClasses.radioLabel)}\n >\n <input\n type=\"radio\"\n value={option}\n {...register(name)}\n className={cx('cdf-radio-input', globalClasses.radioInput, localClasses.radioInput)}\n />\n {option}\n </label>\n ))}\n </div>\n\n {error && (\n <span className={cx('cdf-error-message', globalClasses.errorText, localClasses.errorText)}>\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\n <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"></line>\n <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"></line>\n </svg>\n {error.message as string}\n </span>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { JSONSchema, UISchema } from '../../types/schema';\nimport { useClassNames, cx } from '../ClassNamesContext';\n\ninterface CheckboxFieldProps {\n name: string;\n schema: JSONSchema;\n uiSchema?: UISchema;\n isRequired?: boolean;\n}\n\nexport const CheckboxField: React.FC<CheckboxFieldProps> = ({\n name,\n schema,\n uiSchema,\n isRequired,\n}) => {\n const globalClasses = useClassNames();\n const localClasses = uiSchema?.['ui:classNames'] || {};\n const {\n register,\n formState: { errors },\n } = useFormContext();\n\n const error = errors[name];\n\n return (\n <div className={cx('cdf-field-group', globalClasses.fieldGroup, localClasses.fieldGroup)}>\n <div\n className={cx(\n 'cdf-checkbox-group',\n globalClasses.checkboxGroup,\n localClasses.checkboxGroup,\n )}\n >\n <label\n className={cx(\n 'cdf-checkbox-label',\n globalClasses.checkboxLabel,\n localClasses.checkboxLabel,\n )}\n >\n <input\n type=\"checkbox\"\n {...register(name)}\n className={cx(\n 'cdf-checkbox-input',\n globalClasses.checkboxInput,\n localClasses.checkboxInput,\n )}\n />\n {schema.title || name}\n {isRequired && <span className=\"cdf-required-mark\">*</span>}\n </label>\n </div>\n\n {schema.description && (\n <p style={{ fontSize: '0.875rem', color: 'var(--cdf-text-muted)', marginTop: '0.25rem' }}>\n {schema.description}\n </p>\n )}\n\n {error && (\n <span className={cx('cdf-error-message', globalClasses.errorText, localClasses.errorText)}>\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\n <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"></line>\n <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"></line>\n </svg>\n {error.message as string}\n </span>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { JSONSchema, UISchema } from '../../types/schema';\nimport { useClassNames, cx } from '../ClassNamesContext';\n\ninterface CheckboxGroupFieldProps {\n name: string;\n schema: JSONSchema;\n uiSchema?: UISchema;\n isRequired?: boolean;\n}\n\nexport const CheckboxGroupField: React.FC<CheckboxGroupFieldProps> = ({\n name,\n schema,\n uiSchema,\n isRequired,\n}) => {\n const globalClasses = useClassNames();\n const localClasses = uiSchema?.['ui:classNames'] || {};\n const {\n register,\n formState: { errors },\n } = useFormContext();\n\n const error = errors[name];\n\n // Extract enum options from items definition\n let options: any[] = [];\n if (schema.items && !Array.isArray(schema.items) && schema.items.enum) {\n options = schema.items.enum;\n }\n\n return (\n <div className={cx('cdf-field-group', globalClasses.fieldGroup, localClasses.fieldGroup)}>\n <label className={cx('cdf-label', globalClasses.label, localClasses.label)}>\n {schema.title || name}\n {isRequired && <span className=\"cdf-required-mark\">*</span>}\n </label>\n\n <div\n className={cx(\n 'cdf-checkbox-group',\n globalClasses.checkboxGroup,\n localClasses.checkboxGroup,\n )}\n >\n {options.map((option) => (\n <label\n key={option}\n className={cx(\n 'cdf-checkbox-label',\n globalClasses.checkboxLabel,\n localClasses.checkboxLabel,\n )}\n >\n <input\n type=\"checkbox\"\n value={option}\n {...register(name)}\n className={cx(\n 'cdf-checkbox-input',\n globalClasses.checkboxInput,\n localClasses.checkboxInput,\n )}\n />\n {option}\n </label>\n ))}\n </div>\n\n {error && (\n <span className={cx('cdf-error-message', globalClasses.errorText, localClasses.errorText)}>\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\n <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"></line>\n <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"></line>\n </svg>\n {error.message as string}\n </span>\n )}\n </div>\n );\n};\n","import React, { useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { JSONSchema, UISchema } from '../../types/schema';\nimport { useClassNames, cx } from '../ClassNamesContext';\n\ninterface FileFieldProps {\n name: string;\n schema: JSONSchema;\n uiSchema?: UISchema;\n isRequired?: boolean;\n}\n\nexport const FileField: React.FC<FileFieldProps> = ({ name, schema, uiSchema, isRequired }) => {\n const globalClasses = useClassNames();\n const localClasses = uiSchema?.['ui:classNames'] || {};\n const {\n setValue,\n formState: { errors },\n } = useFormContext();\n\n const [fileName, setFileName] = useState<string | null>(null);\n const error = errors[name];\n\n const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0];\n if (!file) {\n setValue(name, undefined, { shouldValidate: true });\n setFileName(null);\n return;\n }\n\n setFileName(file.name);\n\n // Convert file to base64 data-url\n const reader = new FileReader();\n reader.onload = (event) => {\n setValue(name, event.target?.result, { shouldValidate: true });\n };\n reader.readAsDataURL(file);\n };\n\n return (\n <div className={cx('cdf-field-group', globalClasses.fieldGroup, localClasses.fieldGroup)}>\n <label className={cx('cdf-label', globalClasses.label, localClasses.label)}>\n {schema.title || name}\n {isRequired && <span className=\"cdf-required-mark\">*</span>}\n </label>\n\n <div\n className={cx(\n 'cdf-file-wrapper',\n globalClasses.fileWrapper,\n localClasses.fileWrapper,\n error && 'cdf-input--error',\n error && globalClasses.inputError,\n error && localClasses.inputError,\n )}\n >\n <input type=\"file\" className=\"cdf-file-input\" onChange={handleFileChange} />\n <div className={cx('cdf-file-text', globalClasses.fileText, localClasses.fileText)}>\n <span>Click to upload</span> or drag and drop\n </div>\n {fileName && (\n <div className=\"cdf-file-preview\">\n Selected: <strong>{fileName}</strong>\n </div>\n )}\n </div>\n\n {error && (\n <span className={cx('cdf-error-message', globalClasses.errorText, localClasses.errorText)}>\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\n <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"></line>\n <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"></line>\n </svg>\n {error.message as string}\n </span>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { JSONSchema, UISchema } from '../types/schema';\nimport { TextField } from './fields/TextField';\nimport { PasswordField } from './fields/PasswordField';\nimport { NumberField } from './fields/NumberField';\nimport { RichTextField } from './fields/RichTextField';\nimport { SelectField } from './fields/SelectField';\nimport { RadioField } from './fields/RadioField';\nimport { CheckboxField } from './fields/CheckboxField';\nimport { CheckboxGroupField } from './fields/CheckboxGroupField';\nimport { FileField } from './fields/FileField';\n\ninterface FieldRendererProps {\n name: string;\n schema: JSONSchema;\n uiSchema?: UISchema;\n isRequired?: boolean;\n}\n\nexport const FieldRenderer: React.FC<FieldRendererProps> = ({\n name,\n schema,\n uiSchema,\n isRequired,\n}) => {\n const columnSpan = uiSchema?.['ui:columnSpan'] || 1;\n const widget = uiSchema?.['ui:widget'];\n\n const renderField = () => {\n // Arrays (Checkbox Groups)\n if (schema.type === 'array') {\n return (\n <CheckboxGroupField\n name={name}\n schema={schema}\n uiSchema={uiSchema}\n isRequired={isRequired}\n />\n );\n }\n\n // Booleans (Single Checkbox)\n if (schema.type === 'boolean') {\n return (\n <CheckboxField name={name} schema={schema} uiSchema={uiSchema} isRequired={isRequired} />\n );\n }\n\n // Enums (Select vs Radio)\n if (schema.enum) {\n if (widget === 'radio') {\n return (\n <RadioField name={name} schema={schema} uiSchema={uiSchema} isRequired={isRequired} />\n );\n }\n return (\n <SelectField name={name} schema={schema} uiSchema={uiSchema} isRequired={isRequired} />\n );\n }\n\n // Strings\n if (schema.type === 'string') {\n if (schema.format === 'data-url') {\n return (\n <FileField name={name} schema={schema} uiSchema={uiSchema} isRequired={isRequired} />\n );\n }\n if (schema.format === 'password') {\n return (\n <PasswordField name={name} schema={schema} uiSchema={uiSchema} isRequired={isRequired} />\n );\n }\n if (schema.format === 'rich-text') {\n return (\n <RichTextField name={name} schema={schema} uiSchema={uiSchema} isRequired={isRequired} />\n );\n }\n return <TextField name={name} schema={schema} uiSchema={uiSchema} isRequired={isRequired} />;\n }\n\n // Numbers\n if (schema.type === 'number' || schema.type === 'integer') {\n return (\n <NumberField name={name} schema={schema} uiSchema={uiSchema} isRequired={isRequired} />\n );\n }\n\n // Fallback\n return (\n <div className=\"cdf-field-group\">\n <p className=\"cdf-error-message\">Unsupported field type: {schema.type}</p>\n </div>\n );\n };\n\n return (\n <div style={{ gridColumn: `span ${columnSpan} / span ${columnSpan}` }}>{renderField()}</div>\n );\n};\n","import React from 'react';\nimport { useForm, FormProvider } from 'react-hook-form';\nimport { ajvResolver } from '@hookform/resolvers/ajv';\nimport { JSONSchema, UISchema, FormClassNames } from '../types/schema';\nimport { FieldRenderer } from './FieldRenderer';\nimport { ClassNamesProvider, cx } from './ClassNamesContext';\nimport '../styles/form.css';\n\ninterface SchemaFormProps {\n schema: JSONSchema;\n uiSchema?: Record<string, UISchema>;\n onSubmit: (data: any) => void;\n defaultValues?: any;\n columns?: 1 | 2 | 3 | 4;\n theme?: {\n primary?: string;\n background?: string;\n text?: string;\n error?: string;\n surface?: string;\n border?: string;\n };\n classNames?: FormClassNames;\n}\n\nexport const SchemaForm: React.FC<SchemaFormProps> = ({\n schema,\n uiSchema = {},\n onSubmit,\n defaultValues,\n columns = 1,\n theme,\n classNames = {},\n}) => {\n const methods = useForm({\n resolver: ajvResolver(schema as any, {\n formats: {\n 'rich-text': true,\n password: true,\n 'data-url': true,\n email: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/,\n },\n }),\n defaultValues,\n });\n\n if (schema.type !== 'object' || !schema.properties) {\n return <div className=\"cdf-error-message\">Root schema must be an object with properties.</div>;\n }\n\n const themeStyles = theme\n ? ({\n '--cdf-primary': theme.primary,\n '--cdf-bg': theme.background,\n '--cdf-text': theme.text,\n '--cdf-error': theme.error,\n '--cdf-surface': theme.surface,\n '--cdf-border': theme.border,\n } as React.CSSProperties)\n : {};\n\n return (\n <ClassNamesProvider value={classNames}>\n <div className={cx('cdf-form-container', classNames.container)} style={themeStyles}>\n {schema.title && <h2 className={cx('cdf-form-title', classNames.title)}>{schema.title}</h2>}\n {schema.description && (\n <p\n className={classNames.description}\n style={{ color: 'var(--cdf-text-muted)', marginBottom: '1.5rem' }}\n >\n {schema.description}\n </p>\n )}\n\n <FormProvider {...methods}>\n <form className={classNames.form} onSubmit={methods.handleSubmit(onSubmit)} noValidate>\n <div className={`cdf-form-grid-${columns}`}>\n {Object.entries(schema.properties).map(([key, propSchema]) => (\n <FieldRenderer\n key={key}\n name={key}\n schema={propSchema}\n uiSchema={uiSchema[key]}\n isRequired={schema.required?.includes(key)}\n />\n ))}\n </div>\n <button type=\"submit\" className={cx('cdf-submit-btn', classNames.submitButton)}>\n Submit\n </button>\n </form>\n </FormProvider>\n </div>\n </ClassNamesProvider>\n );\n};\n","import { JSONSchema, UISchema } from '../types/schema';\n\nexport type BuilderFieldType =\n | 'text'\n | 'number'\n | 'email'\n | 'password'\n | 'rich-text'\n | 'file'\n | 'checkbox'\n | 'checkboxes'\n | 'select'\n | 'radio';\n\nexport interface FieldDef {\n id: string; // Internal UUID for drag and drop\n key: string; // The object property key in JSONSchema\n type: BuilderFieldType; // The primitive builder type\n schema: JSONSchema;\n uiSchema?: UISchema;\n isRequired?: boolean;\n}\n\n// Initial templates for dropping new fields\nexport const FIELD_TEMPLATES: Record<BuilderFieldType, Omit<FieldDef, 'id' | 'key'>> = {\n text: {\n type: 'text',\n schema: { type: 'string', title: 'New Text Field' },\n },\n number: {\n type: 'number',\n schema: { type: 'number', title: 'New Number Field' },\n },\n email: {\n type: 'email',\n schema: { type: 'string', format: 'email', title: 'Email Address' },\n },\n password: {\n type: 'password',\n schema: { type: 'string', format: 'password', title: 'Password' },\n },\n 'rich-text': {\n type: 'rich-text',\n schema: { type: 'string', format: 'rich-text', title: 'Rich Text' },\n },\n file: {\n type: 'file',\n schema: { type: 'string', format: 'data-url', title: 'File Upload' },\n },\n checkbox: {\n type: 'checkbox',\n schema: { type: 'boolean', title: 'Checkbox' },\n },\n checkboxes: {\n type: 'checkboxes',\n schema: {\n type: 'array',\n title: 'Multiple Checkboxes',\n items: { type: 'string', enum: ['Option 1', 'Option 2'] },\n },\n },\n select: {\n type: 'select',\n schema: { type: 'string', title: 'Dropdown', enum: ['Option 1', 'Option 2'] },\n },\n radio: {\n type: 'radio',\n schema: { type: 'string', title: 'Radio Buttons', enum: ['Option 1', 'Option 2'] },\n uiSchema: { 'ui:widget': 'radio' },\n },\n};\n","import { useState, useCallback, useMemo } from 'react';\nimport { v4 as uuidv4 } from 'uuid';\nimport { arrayMove } from '@dnd-kit/sortable';\nimport { FieldDef, BuilderFieldType, FIELD_TEMPLATES } from './types';\nimport { JSONSchema, UISchema } from '../types/schema';\n\nexport interface FormSettings {\n columns: 1 | 2 | 3 | 4;\n theme: {\n primary?: string;\n background?: string;\n text?: string;\n error?: string;\n };\n}\n\nexport const useFormBuilder = (\n initialSchema?: JSONSchema,\n initialUiSchema?: Record<string, UISchema>,\n initialColumns?: 1 | 2 | 3 | 4,\n initialTheme?: FormSettings['theme'],\n) => {\n // Try to parse existing schema into FieldDef[], or start empty\n const [fields, setFields] = useState<FieldDef[]>(() => {\n if (!initialSchema || !initialSchema.properties) return [];\n\n return Object.entries(initialSchema.properties).map(([key, propSchema]) => {\n // Very basic type inference for reverse mapping\n let type: BuilderFieldType = 'text';\n if (propSchema.type === 'string') {\n if (propSchema.format === 'email') type = 'email';\n else if (propSchema.format === 'password') type = 'password';\n else if (propSchema.format === 'data-url') type = 'file';\n else if (propSchema.format === 'rich-text') type = 'rich-text';\n else if (propSchema.enum) type = 'select'; // or radio, we'll refine below\n } else if (propSchema.type === 'number' || propSchema.type === 'integer') {\n type = 'number';\n } else if (propSchema.type === 'boolean') {\n type = 'checkbox';\n } else if (propSchema.type === 'array') {\n type = 'checkboxes';\n }\n\n const uiSchema = initialUiSchema?.[key];\n if (propSchema.enum && uiSchema?.['ui:widget'] === 'radio') {\n type = 'radio';\n }\n\n return {\n id: uuidv4(),\n key,\n type,\n schema: propSchema,\n uiSchema,\n isRequired: initialSchema.required?.includes(key),\n };\n });\n });\n\n const [selectedFieldId, setSelectedFieldId] = useState<string | null>(null);\n\n const addField = useCallback((type: BuilderFieldType, index?: number) => {\n const template = FIELD_TEMPLATES[type];\n const newField: FieldDef = {\n id: uuidv4(),\n key: `field_${Date.now()}`,\n type,\n // Deep clone template schemas\n schema: JSON.parse(JSON.stringify(template.schema)),\n uiSchema: template.uiSchema ? JSON.parse(JSON.stringify(template.uiSchema)) : undefined,\n };\n\n setFields((prev) => {\n if (typeof index === 'number') {\n const newFields = [...prev];\n newFields.splice(index, 0, newField);\n return newFields;\n }\n return [...prev, newField];\n });\n setSelectedFieldId(newField.id);\n }, []);\n\n const removeField = useCallback(\n (id: string) => {\n setFields((prev) => prev.filter((f) => f.id !== id));\n if (selectedFieldId === id) setSelectedFieldId(null);\n },\n [selectedFieldId],\n );\n\n const updateField = useCallback((id: string, updates: Partial<FieldDef>) => {\n setFields((prev) => prev.map((f) => (f.id === id ? { ...f, ...updates } : f)));\n }, []);\n\n const reorderFields = useCallback((activeId: string, overId: string) => {\n setFields((prev) => {\n const oldIndex = prev.findIndex((f) => f.id === activeId);\n const newIndex = prev.findIndex((f) => f.id === overId);\n return arrayMove(prev, oldIndex, newIndex);\n });\n }, []);\n\n const selectedField = useMemo(\n () => fields.find((f) => f.id === selectedFieldId),\n [fields, selectedFieldId],\n );\n\n // Export back to standard JSON Schema and UI Schema\n const compileSchemas = useCallback(() => {\n const finalSchema: JSONSchema = {\n type: 'object',\n title: initialSchema?.title || 'Generated Form',\n description: initialSchema?.description || '',\n properties: {},\n required: [],\n };\n\n const finalUiSchema: Record<string, UISchema> = {};\n\n fields.forEach((field) => {\n if (finalSchema.properties) {\n finalSchema.properties[field.key] = field.schema;\n }\n if (field.isRequired && finalSchema.required) {\n finalSchema.required.push(field.key);\n }\n if (field.uiSchema) {\n finalUiSchema[field.key] = field.uiSchema;\n }\n });\n\n if (finalSchema.required?.length === 0) {\n delete finalSchema.required;\n }\n\n return { schema: finalSchema, uiSchema: finalUiSchema };\n }, [fields, initialSchema]);\n\n const [formSettings, setFormSettings] = useState<FormSettings>({\n columns: initialColumns || 1,\n theme: initialTheme || {},\n });\n\n const updateFormSettings = useCallback((updates: Partial<FormSettings>) => {\n setFormSettings((prev) => ({\n ...prev,\n ...updates,\n theme: { ...prev.theme, ...(updates.theme || {}) },\n }));\n }, []);\n\n return {\n fields,\n selectedFieldId,\n setSelectedFieldId,\n selectedField,\n addField,\n removeField,\n updateField,\n reorderFields,\n compileSchemas,\n formSettings,\n updateFormSettings,\n };\n};\n","import React from 'react';\nimport { useDraggable } from '@dnd-kit/core';\nimport { BuilderFieldType } from '../types';\nimport {\n Type,\n Hash,\n Mail,\n Key,\n AlignLeft,\n FileUp,\n CheckSquare,\n List,\n ChevronDown,\n CheckCircle2,\n} from 'lucide-react';\n\nconst TOOLS: { type: BuilderFieldType; label: string; icon: React.ReactNode }[] = [\n { type: 'text', label: 'Text Field', icon: <Type size={18} /> },\n { type: 'number', label: 'Number', icon: <Hash size={18} /> },\n { type: 'email', label: 'Email', icon: <Mail size={18} /> },\n { type: 'password', label: 'Password', icon: <Key size={18} /> },\n { type: 'rich-text', label: 'Rich Text', icon: <AlignLeft size={18} /> },\n { type: 'select', label: 'Dropdown', icon: <ChevronDown size={18} /> },\n { type: 'radio', label: 'Radio Group', icon: <CheckCircle2 size={18} /> },\n { type: 'checkbox', label: 'Checkbox', icon: <CheckSquare size={18} /> },\n { type: 'checkboxes', label: 'Checkbox Group', icon: <List size={18} /> },\n { type: 'file', label: 'File Upload', icon: <FileUp size={18} /> },\n];\n\nconst DraggableTool: React.FC<{ type: BuilderFieldType; label: string; icon: React.ReactNode }> = ({\n type,\n label,\n icon,\n}) => {\n const { attributes, listeners, setNodeRef, isDragging } = useDraggable({\n id: `toolbox-${type}`,\n data: {\n type: 'ToolboxItem',\n fieldType: type,\n },\n });\n\n return (\n <div\n ref={setNodeRef}\n {...listeners}\n {...attributes}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '0.75rem',\n padding: '0.75rem',\n backgroundColor: 'white',\n border: '1px solid #e5e7eb',\n borderRadius: '0.5rem',\n cursor: isDragging ? 'grabbing' : 'grab',\n opacity: isDragging ? 0.5 : 1,\n marginBottom: '0.5rem',\n boxShadow: '0 1px 2px rgba(0,0,0,0.05)',\n transition: 'all 0.2s',\n }}\n onMouseEnter={(e) => {\n (e.currentTarget as HTMLDivElement).style.borderColor = '#6366f1';\n (e.currentTarget as HTMLDivElement).style.boxShadow = '0 4px 6px rgba(99, 102, 241, 0.1)';\n }}\n onMouseLeave={(e) => {\n (e.currentTarget as HTMLDivElement).style.borderColor = '#e5e7eb';\n (e.currentTarget as HTMLDivElement).style.boxShadow = '0 1px 2px rgba(0,0,0,0.05)';\n }}\n >\n <div style={{ color: '#6b7280' }}>{icon}</div>\n <span style={{ fontSize: '0.875rem', fontWeight: 500, color: '#374151' }}>{label}</span>\n </div>\n );\n};\n\nexport const Toolbox: React.FC = () => {\n return (\n <div\n style={{\n padding: '1.5rem',\n width: '280px',\n borderRight: '1px solid #e5e7eb',\n backgroundColor: '#f9fafb',\n height: '100%',\n overflowY: 'auto',\n }}\n >\n <h3 style={{ fontSize: '1rem', fontWeight: 600, color: '#111827', marginBottom: '1rem' }}>\n Form Elements\n </h3>\n <p style={{ fontSize: '0.875rem', color: '#6b7280', marginBottom: '1.5rem' }}>\n Drag and drop fields onto the canvas to build your form.\n </p>\n\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.25rem' }}>\n {TOOLS.map((tool) => (\n <DraggableTool key={tool.type} {...tool} />\n ))}\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { FieldDef } from '../types';\nimport { FieldRenderer } from '../../components/FieldRenderer';\nimport { GripVertical, Trash2, Copy } from 'lucide-react';\nimport { FormProvider, useForm } from 'react-hook-form';\n\ninterface SortableFieldProps {\n field: FieldDef;\n isSelected: boolean;\n onClick: () => void;\n onRemove: () => void;\n onDuplicate: () => void;\n}\n\nexport const SortableField: React.FC<SortableFieldProps> = ({\n field,\n isSelected,\n onClick,\n onRemove,\n onDuplicate,\n}) => {\n const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n id: field.id,\n data: {\n type: 'SortableField',\n field,\n },\n });\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n opacity: isDragging ? 0.6 : 1,\n position: 'relative' as const,\n zIndex: isDragging ? 10 : 1,\n padding: '2rem 1.5rem 1.5rem', // Extra top padding for drag handle\n backgroundColor: 'white',\n borderRadius: '0.75rem',\n border: `2px solid ${isSelected ? '#6366f1' : '#e5e7eb'}`,\n boxShadow: isSelected ? '0 4px 12px rgba(99, 102, 241, 0.15)' : '0 1px 3px rgba(0,0,0,0.05)',\n marginBottom: '1rem',\n cursor: 'pointer',\n gridColumn: `span ${field.uiSchema?.['ui:columnSpan'] || 1} / span ${field.uiSchema?.['ui:columnSpan'] || 1}`,\n };\n\n // We need a dummy FormProvider to render the fields live without throwing errors\n const methods = useForm();\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n onClick={(e) => {\n e.stopPropagation();\n onClick();\n }}\n >\n {/* Drag Handle */}\n <div\n {...attributes}\n {...listeners}\n style={{\n position: 'absolute',\n top: '0',\n left: '50%',\n transform: 'translateX(-50%)',\n width: '40px',\n height: '24px',\n backgroundColor: isSelected ? '#eef2ff' : '#f3f4f6',\n borderBottomLeftRadius: '8px',\n borderBottomRightRadius: '8px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: isDragging ? 'grabbing' : 'grab',\n color: isSelected ? '#6366f1' : '#9ca3af',\n zIndex: 2,\n }}\n onClick={(e) => e.stopPropagation()} // Prevent selecting field when clicking handle\n >\n <GripVertical size={16} />\n </div>\n\n {/* Field Renderer (Live Preview) */}\n <div style={{ position: 'relative' }}>\n {/* Invisible Glass Overlay to prevent clicking/typing into the field while in editor mode */}\n <div style={{ position: 'absolute', inset: 0, zIndex: 1, cursor: 'pointer' }} />\n\n <div style={{ pointerEvents: 'none' }}>\n <FormProvider {...methods}>\n <form>\n <FieldRenderer\n name={field.key}\n schema={field.schema}\n uiSchema={field.uiSchema}\n isRequired={field.isRequired}\n />\n </form>\n </FormProvider>\n </div>\n </div>\n\n {/* Action Buttons */}\n {isSelected && (\n <div\n style={{\n position: 'absolute',\n top: '-12px',\n right: '1rem',\n display: 'flex',\n gap: '0.25rem',\n backgroundColor: '#ffffff',\n border: '1px solid #e5e7eb',\n padding: '0.25rem',\n borderRadius: '0.5rem',\n boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.1)',\n zIndex: 10,\n }}\n >\n <button\n onClick={(e) => {\n e.stopPropagation();\n onDuplicate();\n }}\n style={{\n color: '#4f46e5',\n backgroundColor: '#eef2ff',\n border: 'none',\n cursor: 'pointer',\n padding: '0.375rem',\n borderRadius: '0.375rem',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n title=\"Duplicate Field\"\n >\n <Copy size={14} />\n </button>\n <button\n onClick={(e) => {\n e.stopPropagation();\n onRemove();\n }}\n style={{\n color: '#ef4444',\n backgroundColor: '#fef2f2',\n border: 'none',\n cursor: 'pointer',\n padding: '0.375rem',\n borderRadius: '0.375rem',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n title=\"Remove Field\"\n >\n <Trash2 size={14} />\n </button>\n </div>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { useDroppable } from '@dnd-kit/core';\nimport { SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable';\nimport { FieldDef } from '../types';\nimport { SortableField } from './SortableField';\n\ninterface CanvasProps {\n fields: FieldDef[];\n selectedFieldId: string | null;\n onSelectField: (id: string) => void;\n onRemoveField: (id: string) => void;\n onDuplicateField: (field: FieldDef) => void;\n}\n\nexport const Canvas: React.FC<CanvasProps> = ({\n fields,\n selectedFieldId,\n onSelectField,\n onRemoveField,\n onDuplicateField,\n}) => {\n const { setNodeRef, isOver } = useDroppable({\n id: 'canvas-droppable',\n data: {\n type: 'Canvas',\n },\n });\n\n return (\n <div\n style={{\n flex: 1,\n padding: '2rem',\n backgroundColor: '#f3f4f6',\n overflowY: 'auto',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n }}\n onClick={() => onSelectField('')} // Click outside to deselect\n >\n <div\n ref={setNodeRef}\n style={{\n width: '100%',\n maxWidth: '800px',\n minHeight: '400px',\n backgroundColor: fields.length === 0 ? 'transparent' : 'white',\n border: fields.length === 0 ? '2px dashed #d1d5db' : '1px solid #e5e7eb',\n borderRadius: '0.75rem',\n padding: fields.length === 0 ? '0' : '2rem',\n display: 'flex',\n flexDirection: 'column',\n boxShadow: fields.length === 0 ? 'none' : '0 10px 15px -3px rgba(0, 0, 0, 0.1)',\n transition: 'all 0.2s ease',\n ...(isOver && fields.length === 0\n ? { backgroundColor: '#eef2ff', borderColor: '#6366f1' }\n : {}),\n }}\n >\n {fields.length === 0 ? (\n <div style={{ margin: 'auto', textAlign: 'center', color: '#6b7280' }}>\n <p style={{ fontSize: '1.125rem', fontWeight: 500, marginBottom: '0.5rem' }}>\n Your form is empty\n </p>\n <p style={{ fontSize: '0.875rem' }}>\n Drag and drop a field from the left panel to get started.\n </p>\n </div>\n ) : (\n <div style={{ display: 'grid', gridTemplateColumns: 'repeat(4, 1fr)', gap: '1rem' }}>\n <SortableContext items={fields.map((f) => f.id)} strategy={verticalListSortingStrategy}>\n {fields.map((field) => (\n <SortableField\n key={field.id}\n field={field}\n isSelected={selectedFieldId === field.id}\n onClick={() => onSelectField(field.id)}\n onRemove={() => onRemoveField(field.id)}\n onDuplicate={() => onDuplicateField(field)}\n />\n ))}\n </SortableContext>\n </div>\n )}\n </div>\n </div>\n );\n};\n","import React, { useState } from 'react';\nimport { FieldDef } from '../types';\nimport { Settings, CheckCircle2, Paintbrush, LayoutTemplate, Palette } from 'lucide-react';\nimport { FormSettings } from '../useFormBuilder';\n\ninterface PropertiesPanelProps {\n field: FieldDef | null;\n formSettings: FormSettings;\n onUpdate: (id: string, updates: Partial<FieldDef>) => void;\n onUpdateSettings: (updates: Partial<FormSettings>) => void;\n}\n\nexport const PropertiesPanel: React.FC<PropertiesPanelProps> = ({\n field,\n formSettings,\n onUpdate,\n onUpdateSettings,\n}) => {\n const [activeTab, setActiveTab] = useState<'general' | 'validation' | 'design'>('general');\n\n if (!field) {\n return (\n <div\n style={{\n width: '320px',\n borderLeft: '1px solid #e5e7eb',\n backgroundColor: 'white',\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n overflowY: 'auto',\n }}\n >\n <div\n style={{\n padding: '1.5rem',\n borderBottom: '1px solid #e5e7eb',\n backgroundColor: '#f9fafb',\n }}\n >\n <h3 style={{ fontSize: '1.125rem', fontWeight: 600, color: '#111827', margin: 0 }}>\n Global Form Settings\n </h3>\n <p style={{ fontSize: '0.875rem', color: '#6b7280', margin: '0.25rem 0 0' }}>\n Click a field to edit its properties, or configure global form settings here.\n </p>\n </div>\n\n <div style={{ padding: '1.5rem', display: 'flex', flexDirection: 'column', gap: '1.5rem' }}>\n {/* Global Layout */}\n <div>\n <h4\n style={{\n fontSize: '0.875rem',\n fontWeight: 600,\n color: '#374151',\n marginBottom: '0.75rem',\n display: 'flex',\n alignItems: 'center',\n gap: '0.375rem',\n }}\n >\n <LayoutTemplate size={16} /> Layout Options\n </h4>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.375rem' }}>\n <label style={{ fontSize: '0.75rem', fontWeight: 500, color: '#6b7280' }}>\n Global Columns\n </label>\n <select\n value={formSettings.columns}\n onChange={(e) =>\n onUpdateSettings({ columns: Number(e.target.value) as 1 | 2 | 3 | 4 })\n }\n style={{\n width: '100%',\n padding: '0.5rem',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n fontSize: '0.875rem',\n }}\n >\n <option value={1}>1 Column</option>\n <option value={2}>2 Columns</option>\n <option value={3}>3 Columns</option>\n <option value={4}>4 Columns</option>\n </select>\n </div>\n </div>\n\n {/* Global Theme */}\n <div>\n <h4\n style={{\n fontSize: '0.875rem',\n fontWeight: 600,\n color: '#374151',\n marginBottom: '0.75rem',\n display: 'flex',\n alignItems: 'center',\n gap: '0.375rem',\n }}\n >\n <Palette size={16} /> Theme Colors\n </h4>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.75rem' }}>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '0.5rem',\n }}\n >\n <label style={{ fontSize: '0.875rem', fontWeight: 500, color: '#4b5563' }}>\n Primary Color\n </label>\n <div style={{ display: 'flex', alignItems: 'center', gap: '0.5rem' }}>\n <input\n type=\"color\"\n value={formSettings.theme.primary || '#6366f1'}\n onChange={(e) =>\n onUpdateSettings({\n theme: { ...formSettings.theme, primary: e.target.value },\n })\n }\n style={{\n width: '28px',\n height: '28px',\n padding: '0',\n border: 'none',\n borderRadius: '4px',\n cursor: 'pointer',\n }}\n />\n <input\n type=\"text\"\n value={formSettings.theme.primary || ''}\n placeholder=\"#6366f1\"\n onChange={(e) =>\n onUpdateSettings({\n theme: { ...formSettings.theme, primary: e.target.value },\n })\n }\n style={{\n width: '80px',\n padding: '0.25rem 0.5rem',\n border: '1px solid #d1d5db',\n borderRadius: '0.25rem',\n fontSize: '0.75rem',\n fontFamily: 'monospace',\n }}\n />\n </div>\n </div>\n\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '0.5rem',\n }}\n >\n <label style={{ fontSize: '0.875rem', fontWeight: 500, color: '#4b5563' }}>\n Background Color\n </label>\n <div style={{ display: 'flex', alignItems: 'center', gap: '0.5rem' }}>\n <input\n type=\"color\"\n value={formSettings.theme.background || '#ffffff'}\n onChange={(e) =>\n onUpdateSettings({\n theme: { ...formSettings.theme, background: e.target.value },\n })\n }\n style={{\n width: '28px',\n height: '28px',\n padding: '0',\n border: 'none',\n borderRadius: '4px',\n cursor: 'pointer',\n }}\n />\n <input\n type=\"text\"\n value={formSettings.theme.background || ''}\n placeholder=\"#ffffff\"\n onChange={(e) =>\n onUpdateSettings({\n theme: { ...formSettings.theme, background: e.target.value },\n })\n }\n style={{\n width: '80px',\n padding: '0.25rem 0.5rem',\n border: '1px solid #d1d5db',\n borderRadius: '0.25rem',\n fontSize: '0.75rem',\n fontFamily: 'monospace',\n }}\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n const handleSchemaChange = (key: string, value: any) => {\n onUpdate(field.id, {\n schema: { ...field.schema, [key]: value },\n });\n };\n\n const handleUiSchemaChange = (key: string, value: any) => {\n onUpdate(field.id, {\n uiSchema: { ...(field.uiSchema || {}), [key]: value },\n });\n };\n\n const handleClassNamesChange = (element: string, value: string) => {\n const existingUiClassNames = field.uiSchema?.['ui:classNames'] || {};\n handleUiSchemaChange('ui:classNames', {\n ...existingUiClassNames,\n [element]: value,\n });\n };\n\n return (\n <div\n style={{\n width: '320px',\n borderLeft: '1px solid #e5e7eb',\n backgroundColor: 'white',\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n overflowY: 'auto',\n }}\n >\n <div style={{ padding: '1.5rem 1.5rem 0', borderBottom: '1px solid #e5e7eb' }}>\n <h3\n style={{ fontSize: '1.125rem', fontWeight: 600, color: '#111827', marginBottom: '1rem' }}\n >\n Field Settings\n </h3>\n\n {/* Tabs */}\n <div style={{ display: 'flex', borderBottom: '1px solid #e5e7eb' }}>\n <button\n onClick={() => setActiveTab('general')}\n style={{\n flex: 1,\n padding: '0.75rem 0',\n fontSize: '0.875rem',\n fontWeight: 500,\n backgroundColor: 'transparent',\n border: 'none',\n borderBottom: `2px solid ${activeTab === 'general' ? '#6366f1' : 'transparent'}`,\n color: activeTab === 'general' ? '#6366f1' : '#6b7280',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '0.25rem',\n }}\n >\n <Settings size={14} /> General\n </button>\n <button\n onClick={() => setActiveTab('validation')}\n style={{\n flex: 1,\n padding: '0.75rem 0',\n fontSize: '0.875rem',\n fontWeight: 500,\n backgroundColor: 'transparent',\n border: 'none',\n borderBottom: `2px solid ${activeTab === 'validation' ? '#6366f1' : 'transparent'}`,\n color: activeTab === 'validation' ? '#6366f1' : '#6b7280',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '0.25rem',\n }}\n >\n <CheckCircle2 size={14} /> Validation\n </button>\n <button\n onClick={() => setActiveTab('design')}\n style={{\n flex: 1,\n padding: '0.75rem 0',\n fontSize: '0.875rem',\n fontWeight: 500,\n backgroundColor: 'transparent',\n border: 'none',\n borderBottom: `2px solid ${activeTab === 'design' ? '#6366f1' : 'transparent'}`,\n color: activeTab === 'design' ? '#6366f1' : '#6b7280',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '0.25rem',\n }}\n >\n <Paintbrush size={14} /> Design\n </button>\n </div>\n </div>\n\n <div style={{ padding: '1.5rem', display: 'flex', flexDirection: 'column', gap: '1.25rem' }}>\n {activeTab === 'general' && (\n <>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.375rem' }}>\n <label style={{ fontSize: '0.875rem', fontWeight: 500, color: '#374151' }}>\n Property Key\n </label>\n <input\n type=\"text\"\n value={field.key}\n onChange={(e) =>\n onUpdate(field.id, { key: e.target.value.replace(/[^a-zA-Z0-9_]/g, '') })\n }\n style={{\n width: '100%',\n padding: '0.5rem',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n fontSize: '0.875rem',\n }}\n placeholder=\"e.g. firstName\"\n />\n <span style={{ fontSize: '0.75rem', color: '#9ca3af' }}>\n The key used in the final JSON output.\n </span>\n </div>\n\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.375rem' }}>\n <label style={{ fontSize: '0.875rem', fontWeight: 500, color: '#374151' }}>\n Label / Title\n </label>\n <input\n type=\"text\"\n value={field.schema.title || ''}\n onChange={(e) => handleSchemaChange('title', e.target.value)}\n style={{\n width: '100%',\n padding: '0.5rem',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n fontSize: '0.875rem',\n }}\n />\n </div>\n\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.375rem' }}>\n <label style={{ fontSize: '0.875rem', fontWeight: 500, color: '#374151' }}>\n Description\n </label>\n <textarea\n value={field.schema.description || ''}\n onChange={(e) => handleSchemaChange('description', e.target.value)}\n style={{\n width: '100%',\n padding: '0.5rem',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n fontSize: '0.875rem',\n minHeight: '80px',\n }}\n />\n </div>\n\n {/* Enums for Select/Radio/Checkboxes */}\n {(field.type === 'select' || field.type === 'radio' || field.type === 'checkboxes') && (\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.375rem' }}>\n <label style={{ fontSize: '0.875rem', fontWeight: 500, color: '#374151' }}>\n Options (Comma separated)\n </label>\n <input\n type=\"text\"\n value={\n field.type === 'checkboxes'\n ? field.schema.items && !Array.isArray(field.schema.items)\n ? field.schema.items.enum?.join(', ')\n : ''\n : field.schema.enum?.join(', ') || ''\n }\n onChange={(e) => {\n const valArray = e.target.value\n .split(',')\n .map((s) => s.trim())\n .filter(Boolean);\n if (field.type === 'checkboxes') {\n handleSchemaChange('items', {\n ...((field.schema.items as any) || {}),\n enum: valArray,\n });\n } else {\n handleSchemaChange('enum', valArray);\n }\n }}\n style={{\n width: '100%',\n padding: '0.5rem',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n fontSize: '0.875rem',\n }}\n />\n </div>\n )}\n </>\n )}\n\n {activeTab === 'validation' && (\n <>\n <label\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '0.5rem',\n fontSize: '0.875rem',\n fontWeight: 500,\n color: '#374151',\n cursor: 'pointer',\n }}\n >\n <input\n type=\"checkbox\"\n checked={field.isRequired || false}\n onChange={(e) => onUpdate(field.id, { isRequired: e.target.checked })}\n />\n Required Field\n </label>\n\n {(field.type === 'text' || field.type === 'email' || field.type === 'password') && (\n <>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.375rem' }}>\n <label style={{ fontSize: '0.875rem', fontWeight: 500, color: '#374151' }}>\n Min Length\n </label>\n <input\n type=\"number\"\n value={field.schema.minLength || ''}\n onChange={(e) =>\n handleSchemaChange(\n 'minLength',\n e.target.value ? Number(e.target.value) : undefined,\n )\n }\n style={{\n width: '100%',\n padding: '0.5rem',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n fontSize: '0.875rem',\n }}\n />\n </div>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.375rem' }}>\n <label style={{ fontSize: '0.875rem', fontWeight: 500, color: '#374151' }}>\n Max Length\n </label>\n <input\n type=\"number\"\n value={field.schema.maxLength || ''}\n onChange={(e) =>\n handleSchemaChange(\n 'maxLength',\n e.target.value ? Number(e.target.value) : undefined,\n )\n }\n style={{\n width: '100%',\n padding: '0.5rem',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n fontSize: '0.875rem',\n }}\n />\n </div>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.375rem' }}>\n <label style={{ fontSize: '0.875rem', fontWeight: 500, color: '#374151' }}>\n Regex Pattern\n </label>\n <input\n type=\"text\"\n value={field.schema.pattern || ''}\n onChange={(e) => handleSchemaChange('pattern', e.target.value || undefined)}\n style={{\n width: '100%',\n padding: '0.5rem',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n fontSize: '0.875rem',\n }}\n />\n </div>\n </>\n )}\n\n {field.type === 'number' && (\n <>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.375rem' }}>\n <label style={{ fontSize: '0.875rem', fontWeight: 500, color: '#374151' }}>\n Minimum Value\n </label>\n <input\n type=\"number\"\n value={field.schema.minimum || ''}\n onChange={(e) =>\n handleSchemaChange(\n 'minimum',\n e.target.value ? Number(e.target.value) : undefined,\n )\n }\n style={{\n width: '100%',\n padding: '0.5rem',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n fontSize: '0.875rem',\n }}\n />\n </div>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.375rem' }}>\n <label style={{ fontSize: '0.875rem', fontWeight: 500, color: '#374151' }}>\n Maximum Value\n </label>\n <input\n type=\"number\"\n value={field.schema.maximum || ''}\n onChange={(e) =>\n handleSchemaChange(\n 'maximum',\n e.target.value ? Number(e.target.value) : undefined,\n )\n }\n style={{\n width: '100%',\n padding: '0.5rem',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n fontSize: '0.875rem',\n }}\n />\n </div>\n </>\n )}\n </>\n )}\n\n {activeTab === 'design' && (\n <>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.375rem' }}>\n <label style={{ fontSize: '0.875rem', fontWeight: 500, color: '#374151' }}>\n Column Span\n </label>\n <select\n value={field.uiSchema?.['ui:columnSpan'] || 1}\n onChange={(e) => handleUiSchemaChange('ui:columnSpan', Number(e.target.value))}\n style={{\n width: '100%',\n padding: '0.5rem',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n fontSize: '0.875rem',\n }}\n >\n <option value={1}>1 Column</option>\n <option value={2}>2 Columns</option>\n <option value={3}>3 Columns</option>\n <option value={4}>4 Columns</option>\n </select>\n </div>\n\n <div style={{ marginTop: '1rem', borderTop: '1px solid #e5e7eb', paddingTop: '1rem' }}>\n <h4\n style={{\n fontSize: '0.875rem',\n fontWeight: 600,\n color: '#111827',\n marginBottom: '0.5rem',\n }}\n >\n Tailwind Classes (ui:classNames)\n </h4>\n\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.75rem' }}>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.25rem' }}>\n <label style={{ fontSize: '0.75rem', color: '#6b7280' }}>Input</label>\n <input\n type=\"text\"\n value={field.uiSchema?.['ui:classNames']?.input || ''}\n onChange={(e) => handleClassNamesChange('input', e.target.value)}\n style={{\n width: '100%',\n padding: '0.4rem',\n border: '1px solid #d1d5db',\n borderRadius: '0.25rem',\n fontSize: '0.75rem',\n fontFamily: 'monospace',\n }}\n placeholder=\"e.g. bg-gray-50 border-blue-500\"\n />\n </div>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.25rem' }}>\n <label style={{ fontSize: '0.75rem', color: '#6b7280' }}>Label</label>\n <input\n type=\"text\"\n value={field.uiSchema?.['ui:classNames']?.label || ''}\n onChange={(e) => handleClassNamesChange('label', e.target.value)}\n style={{\n width: '100%',\n padding: '0.4rem',\n border: '1px solid #d1d5db',\n borderRadius: '0.25rem',\n fontSize: '0.75rem',\n fontFamily: 'monospace',\n }}\n placeholder=\"e.g. text-blue-600 font-bold\"\n />\n </div>\n </div>\n </div>\n </>\n )}\n </div>\n </div>\n );\n};\n","import React, { useState } from 'react';\nimport {\n DndContext,\n DragOverlay,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n DragEndEvent,\n DragStartEvent,\n} from '@dnd-kit/core';\nimport { sortableKeyboardCoordinates } from '@dnd-kit/sortable';\nimport { JSONSchema, UISchema } from '../types/schema';\nimport { useFormBuilder, FormSettings } from './useFormBuilder';\nimport { Toolbox } from './components/Toolbox';\nimport { Canvas } from './components/Canvas';\nimport { PropertiesPanel } from './components/PropertiesPanel';\nimport { BuilderFieldType } from './types';\nimport { Save, Code2, Eye, LayoutTemplate } from 'lucide-react';\nimport { SchemaForm } from '../components/SchemaForm';\nimport '../styles/form.css'; // Ensure base form styles are loaded for canvas\n\nexport interface FormBuilderProps {\n initialSchema?: JSONSchema;\n initialUiSchema?: Record<string, UISchema>;\n initialColumns?: 1 | 2 | 3 | 4;\n initialTheme?: FormSettings['theme'];\n onSave?: (\n schema: JSONSchema,\n uiSchema: Record<string, UISchema>,\n formSettings: FormSettings,\n ) => void;\n}\n\nexport const FormBuilder: React.FC<FormBuilderProps> = ({\n initialSchema,\n initialUiSchema,\n initialColumns,\n initialTheme,\n onSave,\n}) => {\n const {\n fields,\n selectedFieldId,\n setSelectedFieldId,\n selectedField,\n addField,\n removeField,\n updateField,\n reorderFields,\n compileSchemas,\n formSettings,\n updateFormSettings,\n } = useFormBuilder(initialSchema, initialUiSchema, initialColumns, initialTheme);\n\n const [activeDragType, setActiveDragType] = useState<BuilderFieldType | null>(null);\n const [isPreviewMode, setIsPreviewMode] = useState(false);\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n );\n\n const handleDragStart = (event: DragStartEvent) => {\n const { active } = event;\n if (active.data.current?.type === 'ToolboxItem') {\n setActiveDragType(active.data.current.fieldType);\n }\n };\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event;\n setActiveDragType(null);\n\n if (!over) return;\n\n if (active.data.current?.type === 'ToolboxItem') {\n // Dropping a new field from the toolbox onto the canvas\n if (over.id === 'canvas-droppable' || fields.find((f) => f.id === over.id)) {\n // If dropped on an existing item, insert at that index. Otherwise append.\n const overIndex = fields.findIndex((f) => f.id === over.id);\n addField(\n active.data.current.fieldType as BuilderFieldType,\n overIndex >= 0 ? overIndex : undefined,\n );\n }\n return;\n }\n\n if (active.data.current?.type === 'SortableField' && active.id !== over.id) {\n // Reordering fields within the canvas\n reorderFields(active.id as string, over.id as string);\n }\n };\n\n const handleSave = () => {\n if (onSave) {\n const { schema, uiSchema } = compileSchemas();\n onSave(schema, uiSchema, formSettings);\n }\n };\n\n return (\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n height: '100vh',\n width: '100vw',\n fontFamily: 'system-ui, sans-serif',\n }}\n >\n {/* Top Bar */}\n <div\n style={{\n height: '60px',\n borderBottom: '1px solid #e5e7eb',\n backgroundColor: 'white',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '0 1.5rem',\n zIndex: 20,\n }}\n >\n <div style={{ display: 'flex', alignItems: 'center', gap: '0.5rem' }}>\n <div\n style={{\n width: '32px',\n height: '32px',\n backgroundColor: '#6366f1',\n borderRadius: '0.5rem',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: 'white',\n }}\n >\n <Code2 size={20} />\n </div>\n <h1 style={{ fontSize: '1.25rem', fontWeight: 700, color: '#111827', margin: 0 }}>\n Visual Form Builder\n </h1>\n </div>\n\n {/* Mode Toggle */}\n <div\n style={{\n display: 'flex',\n backgroundColor: '#f3f4f6',\n padding: '0.25rem',\n borderRadius: '0.5rem',\n }}\n >\n <button\n onClick={() => setIsPreviewMode(false)}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '0.375rem',\n padding: '0.375rem 0.75rem',\n fontSize: '0.875rem',\n fontWeight: 500,\n border: 'none',\n borderRadius: '0.375rem',\n cursor: 'pointer',\n transition: 'all 0.2s',\n backgroundColor: !isPreviewMode ? 'white' : 'transparent',\n color: !isPreviewMode ? '#111827' : '#6b7280',\n boxShadow: !isPreviewMode ? '0 1px 3px rgba(0,0,0,0.1)' : 'none',\n }}\n >\n <LayoutTemplate size={16} /> Builder\n </button>\n <button\n onClick={() => setIsPreviewMode(true)}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '0.375rem',\n padding: '0.375rem 0.75rem',\n fontSize: '0.875rem',\n fontWeight: 500,\n border: 'none',\n borderRadius: '0.375rem',\n cursor: 'pointer',\n transition: 'all 0.2s',\n backgroundColor: isPreviewMode ? 'white' : 'transparent',\n color: isPreviewMode ? '#111827' : '#6b7280',\n boxShadow: isPreviewMode ? '0 1px 3px rgba(0,0,0,0.1)' : 'none',\n }}\n >\n <Eye size={16} /> Preview\n </button>\n </div>\n\n <div>\n <button\n onClick={handleSave}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '0.5rem',\n backgroundColor: '#6366f1',\n color: 'white',\n border: 'none',\n padding: '0.5rem 1rem',\n borderRadius: '0.375rem',\n fontWeight: 600,\n cursor: 'pointer',\n transition: 'background-color 0.2s',\n }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = '#4f46e5')}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = '#6366f1')}\n >\n <Save size={16} /> Save Form\n </button>\n </div>\n </div>\n\n {/* Main Area */}\n <div\n style={{\n display: 'flex',\n flex: 1,\n overflow: 'hidden',\n backgroundColor: '#f3f4f6',\n minHeight: 0,\n }}\n >\n {isPreviewMode ? (\n <div\n style={{\n flex: 1,\n padding: '3rem',\n overflowY: 'auto',\n display: 'flex',\n justifyContent: 'center',\n }}\n >\n <div\n style={{\n width: '100%',\n maxWidth: '800px',\n backgroundColor: 'white',\n padding: '2rem',\n borderRadius: '1rem',\n boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)',\n }}\n >\n <div\n style={{\n marginBottom: '2rem',\n paddingBottom: '1rem',\n borderBottom: '1px solid #e5e7eb',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n }}\n >\n <span\n style={{\n fontSize: '0.875rem',\n fontWeight: 600,\n color: '#6366f1',\n textTransform: 'uppercase',\n letterSpacing: '0.05em',\n }}\n >\n Live Preview\n </span>\n </div>\n <SchemaForm\n schema={compileSchemas().schema}\n uiSchema={compileSchemas().uiSchema}\n columns={formSettings.columns}\n theme={formSettings.theme}\n onSubmit={(data) =>\n alert('Preview Form Submitted!\\n\\n' + JSON.stringify(data, null, 2))\n }\n />\n </div>\n </div>\n ) : (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n >\n {/* Left: Toolbox */}\n <Toolbox />\n\n {/* Center: Canvas */}\n <Canvas\n fields={fields}\n selectedFieldId={selectedFieldId}\n onSelectField={setSelectedFieldId}\n onRemoveField={removeField}\n onDuplicateField={(f) => {\n // Add a copy of the field right after it\n const idx = fields.findIndex((field) => field.id === f.id);\n addField(f.type, idx + 1);\n }}\n />\n\n {/* Right: Properties */}\n <PropertiesPanel\n field={selectedField || null}\n formSettings={formSettings}\n onUpdate={updateField}\n onUpdateSettings={updateFormSettings}\n />\n\n {/* Drag Overlay (Visual feedback when dragging) */}\n <DragOverlay>\n {activeDragType ? (\n <div\n style={{\n padding: '0.75rem',\n backgroundColor: '#6366f1',\n color: 'white',\n borderRadius: '0.5rem',\n opacity: 0.8,\n fontWeight: 500,\n }}\n >\n Dropping {activeDragType}...\n </div>\n ) : null}\n </DragOverlay>\n </DndContext>\n )}\n </div>\n </div>\n );\n};\n"]}
1
+ {"version":3,"sources":["../src/components/ClassNamesContext.tsx","../src/components/fields/TextField.tsx","../src/components/fields/PasswordField.tsx","../src/components/fields/NumberField.tsx","../src/components/fields/RichTextField.tsx","../src/components/fields/SelectField.tsx","../src/components/fields/RadioField.tsx","../src/components/fields/CheckboxField.tsx","../src/components/fields/CheckboxGroupField.tsx","../src/components/fields/FileField.tsx","../src/components/FieldRenderer.tsx","../src/components/SchemaForm.tsx","../src/builder/types.ts","../src/builder/useFormBuilder.ts","../src/builder/components/Toolbox.tsx","../src/builder/components/SortableField.tsx","../src/builder/components/Canvas.tsx","../src/builder/components/PropertiesPanel.tsx","../src/builder/FormBuilder.tsx"],"names":["createContext","jsx","useContext","useFormContext","jsxs","AlertCircle","useState","EyeOff","Eye","useEditor","StarterKit","editor","useEffect","Bold","Italic","Heading2","List","ListOrdered","EditorContent","_a","useForm","ajvResolver","FormProvider","uuidv4","useCallback","arrayMove","useMemo","Type","Hash","Mail","Key","AlignLeft","ChevronDown","CheckCircle2","CheckSquare","FileUp","useDraggable","useSortable","CSS","GripVertical","Copy","Trash2","useDroppable","SortableContext","verticalListSortingStrategy","LayoutTemplate","Palette","Settings","Paintbrush","Fragment","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","Code2","Save","DndContext","closestCenter","DragOverlay"],"mappings":"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","file":"index.js","sourcesContent":["import React, { createContext, useContext } from 'react';\nimport { FormClassNames } from '../types/schema';\n\nconst ClassNamesContext = createContext<FormClassNames>({});\n\nexport const ClassNamesProvider: React.FC<{\n value?: FormClassNames;\n children: React.ReactNode;\n}> = ({ value = {}, children }) => {\n return <ClassNamesContext.Provider value={value}>{children}</ClassNamesContext.Provider>;\n};\n\nexport const useClassNames = () => useContext(ClassNamesContext);\n\n// Utility to merge class strings easily without an external library\nexport const cx = (...classes: (string | undefined | null | false)[]) => {\n return classes.filter(Boolean).join(' ').trim();\n};\n","import React from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { JSONSchema, UISchema } from '../../types/schema';\nimport { useClassNames, cx } from '../ClassNamesContext';\nimport { AlertCircle } from 'lucide-react';\n\ninterface TextFieldProps {\n name: string;\n schema: JSONSchema;\n uiSchema?: UISchema;\n isRequired?: boolean;\n}\n\nexport const TextField: React.FC<TextFieldProps> = ({ name, schema, uiSchema, isRequired }) => {\n const globalClasses = useClassNames();\n const localClasses = uiSchema?.['ui:classNames'] || {};\n const {\n register,\n formState: { errors },\n } = useFormContext();\n const error = errors[name];\n\n return (\n <div className={cx('cdf-field-group', globalClasses.fieldGroup, localClasses.fieldGroup)}>\n <label className={cx('cdf-label', globalClasses.label, localClasses.label)} htmlFor={name}>\n {schema.title || name}\n {isRequired && <span className=\"cdf-required-mark\">*</span>}\n </label>\n {schema.description && (\n <p\n className={cx('cdf-description', globalClasses.description, localClasses.description)}\n style={{ fontSize: '0.875rem', color: '#6b7280', margin: '-0.25rem 0 0.5rem 0' }}\n >\n {schema.description}\n </p>\n )}\n <div className=\"cdf-input-wrapper\">\n <input\n id={name}\n type={schema.format === 'email' ? 'email' : 'text'}\n className={cx(\n 'cdf-input',\n globalClasses.input,\n localClasses.input,\n error && 'cdf-input--error',\n error && globalClasses.inputError,\n error && localClasses.inputError,\n )}\n placeholder={`Enter ${schema.title || name}`}\n {...register(name)}\n />\n </div>\n {error && (\n <span className={cx('cdf-error-message', globalClasses.errorText, localClasses.errorText)}>\n <AlertCircle size={14} />\n {error.message as string}\n </span>\n )}\n </div>\n );\n};\n","import React, { useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { JSONSchema, UISchema } from '../../types/schema';\nimport { useClassNames, cx } from '../ClassNamesContext';\nimport { AlertCircle, Eye, EyeOff } from 'lucide-react';\n\ninterface PasswordFieldProps {\n name: string;\n schema: JSONSchema;\n uiSchema?: UISchema;\n isRequired?: boolean;\n}\n\nexport const PasswordField: React.FC<PasswordFieldProps> = ({\n name,\n schema,\n uiSchema,\n isRequired,\n}) => {\n const globalClasses = useClassNames();\n const localClasses = uiSchema?.['ui:classNames'] || {};\n const {\n register,\n formState: { errors },\n } = useFormContext();\n const [showPassword, setShowPassword] = useState(false);\n const error = errors[name];\n\n return (\n <div className={cx('cdf-field-group', globalClasses.fieldGroup, localClasses.fieldGroup)}>\n <label className={cx('cdf-label', globalClasses.label, localClasses.label)} htmlFor={name}>\n {schema.title || name}\n {isRequired && <span className=\"cdf-required-mark\">*</span>}\n </label>\n {schema.description && (\n <p\n className={cx('cdf-description', globalClasses.description, localClasses.description)}\n style={{ fontSize: '0.875rem', color: '#6b7280', margin: '-0.25rem 0 0.5rem 0' }}\n >\n {schema.description}\n </p>\n )}\n <div className=\"cdf-input-wrapper\">\n <input\n id={name}\n type={showPassword ? 'text' : 'password'}\n className={cx(\n 'cdf-input',\n globalClasses.input,\n localClasses.input,\n error && 'cdf-input--error',\n error && globalClasses.inputError,\n error && localClasses.inputError,\n )}\n style={{ paddingRight: '2.5rem' }}\n placeholder={`Enter ${schema.title || name}`}\n {...register(name)}\n />\n <button\n type=\"button\"\n className=\"cdf-toolbar-btn\"\n style={{ position: 'absolute', right: '0.5rem' }}\n onClick={() => setShowPassword(!showPassword)}\n >\n {showPassword ? <EyeOff size={16} /> : <Eye size={16} />}\n </button>\n </div>\n {error && (\n <span className={cx('cdf-error-message', globalClasses.errorText, localClasses.errorText)}>\n <AlertCircle size={14} />\n {error.message as string}\n </span>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { JSONSchema, UISchema } from '../../types/schema';\nimport { useClassNames, cx } from '../ClassNamesContext';\nimport { AlertCircle } from 'lucide-react';\n\ninterface NumberFieldProps {\n name: string;\n schema: JSONSchema;\n uiSchema?: UISchema;\n isRequired?: boolean;\n}\n\nexport const NumberField: React.FC<NumberFieldProps> = ({ name, schema, uiSchema, isRequired }) => {\n const globalClasses = useClassNames();\n const localClasses = uiSchema?.['ui:classNames'] || {};\n const {\n register,\n formState: { errors },\n } = useFormContext();\n const error = errors[name];\n\n return (\n <div className={cx('cdf-field-group', globalClasses.fieldGroup, localClasses.fieldGroup)}>\n <label className={cx('cdf-label', globalClasses.label, localClasses.label)} htmlFor={name}>\n {schema.title || name}\n {isRequired && <span className=\"cdf-required-mark\">*</span>}\n </label>\n {schema.description && (\n <p\n className={cx('cdf-description', globalClasses.description, localClasses.description)}\n style={{ fontSize: '0.875rem', color: '#6b7280', margin: '-0.25rem 0 0.5rem 0' }}\n >\n {schema.description}\n </p>\n )}\n <div className=\"cdf-input-wrapper\">\n <input\n id={name}\n type=\"number\"\n className={cx(\n 'cdf-input',\n globalClasses.input,\n localClasses.input,\n error && 'cdf-input--error',\n error && globalClasses.inputError,\n error && localClasses.inputError,\n )}\n placeholder={`Enter ${schema.title || name}`}\n {...register(name, {\n valueAsNumber: true,\n })}\n />\n </div>\n {error && (\n <span className={cx('cdf-error-message', globalClasses.errorText, localClasses.errorText)}>\n <AlertCircle size={14} />\n {error.message as string}\n </span>\n )}\n </div>\n );\n};\n","import React, { useEffect } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { useEditor, EditorContent } from '@tiptap/react';\nimport StarterKit from '@tiptap/starter-kit';\nimport { JSONSchema, UISchema } from '../../types/schema';\nimport { useClassNames, cx } from '../ClassNamesContext';\nimport { AlertCircle, Bold, Italic, List, ListOrdered, Heading2 } from 'lucide-react';\n\ninterface RichTextFieldProps {\n name: string;\n schema: JSONSchema;\n uiSchema?: UISchema;\n isRequired?: boolean;\n}\n\nexport const RichTextField: React.FC<RichTextFieldProps> = ({\n name,\n schema,\n uiSchema,\n isRequired,\n}) => {\n const globalClasses = useClassNames();\n const localClasses = uiSchema?.['ui:classNames'] || {};\n const {\n setValue,\n watch,\n formState: { errors },\n } = useFormContext();\n const error = errors[name];\n const value = watch(name);\n\n const editor = useEditor({\n extensions: [StarterKit],\n content: value || '',\n onUpdate: ({ editor }) => {\n setValue(name, editor.getHTML(), { shouldValidate: true, shouldDirty: true });\n },\n });\n\n // Keep editor in sync with external form changes (if any)\n useEffect(() => {\n if (editor && value !== editor.getHTML()) {\n editor.commands.setContent(value || '');\n }\n }, [value, editor]);\n\n return (\n <div className={cx('cdf-field-group', globalClasses.fieldGroup, localClasses.fieldGroup)}>\n <label className={cx('cdf-label', globalClasses.label, localClasses.label)} htmlFor={name}>\n {schema.title || name}\n {isRequired && <span className=\"cdf-required-mark\">*</span>}\n </label>\n {schema.description && (\n <p\n className={cx('cdf-description', globalClasses.description, localClasses.description)}\n style={{ fontSize: '0.875rem', color: '#6b7280', margin: '-0.25rem 0 0.5rem 0' }}\n >\n {schema.description}\n </p>\n )}\n\n <div\n className={cx(\n 'cdf-rich-text-wrapper',\n error && 'cdf-input--error',\n error && globalClasses.inputError,\n error && localClasses.inputError,\n )}\n >\n <div className=\"cdf-rich-text-toolbar\">\n <button\n type=\"button\"\n onClick={() => editor?.chain().focus().toggleBold().run()}\n className={`cdf-toolbar-btn ${editor?.isActive('bold') ? 'is-active' : ''}`}\n >\n <Bold size={16} />\n </button>\n <button\n type=\"button\"\n onClick={() => editor?.chain().focus().toggleItalic().run()}\n className={`cdf-toolbar-btn ${editor?.isActive('italic') ? 'is-active' : ''}`}\n >\n <Italic size={16} />\n </button>\n <button\n type=\"button\"\n onClick={() => editor?.chain().focus().toggleHeading({ level: 2 }).run()}\n className={`cdf-toolbar-btn ${editor?.isActive('heading', { level: 2 }) ? 'is-active' : ''}`}\n >\n <Heading2 size={16} />\n </button>\n <button\n type=\"button\"\n onClick={() => editor?.chain().focus().toggleBulletList().run()}\n className={`cdf-toolbar-btn ${editor?.isActive('bulletList') ? 'is-active' : ''}`}\n >\n <List size={16} />\n </button>\n <button\n type=\"button\"\n onClick={() => editor?.chain().focus().toggleOrderedList().run()}\n className={`cdf-toolbar-btn ${editor?.isActive('orderedList') ? 'is-active' : ''}`}\n >\n <ListOrdered size={16} />\n </button>\n </div>\n\n <EditorContent editor={editor} className=\"cdf-rich-text-content\" />\n </div>\n\n {error && (\n <span className={cx('cdf-error-message', globalClasses.errorText, localClasses.errorText)}>\n <AlertCircle size={14} />\n {error.message as string}\n </span>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { JSONSchema, UISchema } from '../../types/schema';\nimport { useClassNames, cx } from '../ClassNamesContext';\n\ninterface SelectFieldProps {\n name: string;\n schema: JSONSchema;\n uiSchema?: UISchema;\n isRequired?: boolean;\n}\n\nexport const SelectField: React.FC<SelectFieldProps> = ({ name, schema, uiSchema, isRequired }) => {\n const globalClasses = useClassNames();\n const localClasses = uiSchema?.['ui:classNames'] || {};\n const {\n register,\n formState: { errors },\n } = useFormContext();\n\n const error = errors[name];\n\n return (\n <div className={cx('cdf-field-group', globalClasses.fieldGroup, localClasses.fieldGroup)}>\n <label htmlFor={name} className={cx('cdf-label', globalClasses.label, localClasses.label)}>\n {schema.title || name}\n {isRequired && <span className=\"cdf-required-mark\">*</span>}\n </label>\n {schema.description && (\n <p\n className={cx('cdf-description', globalClasses.description, localClasses.description)}\n style={{ fontSize: '0.875rem', color: '#6b7280', margin: '-0.25rem 0 0.5rem 0' }}\n >\n {schema.description}\n </p>\n )}\n\n <div className=\"cdf-input-wrapper\">\n <select\n id={name}\n {...register(name)}\n className={cx(\n 'cdf-input',\n 'cdf-select',\n globalClasses.input,\n localClasses.input,\n error && 'cdf-input--error',\n error && globalClasses.inputError,\n error && localClasses.inputError,\n )}\n >\n <option value=\"\">Select an option...</option>\n {schema.enum?.map((option) => (\n <option key={option} value={option}>\n {option}\n </option>\n ))}\n </select>\n </div>\n\n {error && (\n <span className={cx('cdf-error-message', globalClasses.errorText, localClasses.errorText)}>\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\n <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"></line>\n <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"></line>\n </svg>\n {error.message as string}\n </span>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { JSONSchema, UISchema } from '../../types/schema';\nimport { useClassNames, cx } from '../ClassNamesContext';\n\ninterface RadioFieldProps {\n name: string;\n schema: JSONSchema;\n uiSchema?: UISchema;\n isRequired?: boolean;\n}\n\nexport const RadioField: React.FC<RadioFieldProps> = ({ name, schema, uiSchema, isRequired }) => {\n const globalClasses = useClassNames();\n const localClasses = uiSchema?.['ui:classNames'] || {};\n const {\n register,\n formState: { errors },\n } = useFormContext();\n\n const error = errors[name];\n\n return (\n <div className={cx('cdf-field-group', globalClasses.fieldGroup, localClasses.fieldGroup)}>\n <label className={cx('cdf-label', globalClasses.label, localClasses.label)}>\n {schema.title || name}\n {isRequired && <span className=\"cdf-required-mark\">*</span>}\n </label>\n {schema.description && (\n <p\n className={cx('cdf-description', globalClasses.description, localClasses.description)}\n style={{ fontSize: '0.875rem', color: '#6b7280', margin: '-0.25rem 0 0.5rem 0' }}\n >\n {schema.description}\n </p>\n )}\n\n <div className={cx('cdf-radio-group', globalClasses.radioGroup, localClasses.radioGroup)}>\n {schema.enum?.map((option) => (\n <label\n key={option}\n className={cx('cdf-radio-label', globalClasses.radioLabel, localClasses.radioLabel)}\n >\n <input\n type=\"radio\"\n value={option}\n {...register(name)}\n className={cx('cdf-radio-input', globalClasses.radioInput, localClasses.radioInput)}\n />\n {option}\n </label>\n ))}\n </div>\n\n {error && (\n <span className={cx('cdf-error-message', globalClasses.errorText, localClasses.errorText)}>\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\n <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"></line>\n <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"></line>\n </svg>\n {error.message as string}\n </span>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { JSONSchema, UISchema } from '../../types/schema';\nimport { useClassNames, cx } from '../ClassNamesContext';\n\ninterface CheckboxFieldProps {\n name: string;\n schema: JSONSchema;\n uiSchema?: UISchema;\n isRequired?: boolean;\n}\n\nexport const CheckboxField: React.FC<CheckboxFieldProps> = ({\n name,\n schema,\n uiSchema,\n isRequired,\n}) => {\n const globalClasses = useClassNames();\n const localClasses = uiSchema?.['ui:classNames'] || {};\n const {\n register,\n formState: { errors },\n } = useFormContext();\n\n const error = errors[name];\n\n return (\n <div className={cx('cdf-field-group', globalClasses.fieldGroup, localClasses.fieldGroup)}>\n <div\n className={cx(\n 'cdf-checkbox-group',\n globalClasses.checkboxGroup,\n localClasses.checkboxGroup,\n )}\n >\n <label\n className={cx(\n 'cdf-checkbox-label',\n globalClasses.checkboxLabel,\n localClasses.checkboxLabel,\n )}\n >\n <input\n type=\"checkbox\"\n {...register(name)}\n className={cx(\n 'cdf-checkbox-input',\n globalClasses.checkboxInput,\n localClasses.checkboxInput,\n )}\n />\n {schema.title || name}\n {isRequired && <span className=\"cdf-required-mark\">*</span>}\n </label>\n </div>\n\n {schema.description && (\n <p style={{ fontSize: '0.875rem', color: 'var(--cdf-text-muted)', marginTop: '0.25rem' }}>\n {schema.description}\n </p>\n )}\n\n {error && (\n <span className={cx('cdf-error-message', globalClasses.errorText, localClasses.errorText)}>\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\n <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"></line>\n <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"></line>\n </svg>\n {error.message as string}\n </span>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { JSONSchema, UISchema } from '../../types/schema';\nimport { useClassNames, cx } from '../ClassNamesContext';\n\ninterface CheckboxGroupFieldProps {\n name: string;\n schema: JSONSchema;\n uiSchema?: UISchema;\n isRequired?: boolean;\n}\n\nexport const CheckboxGroupField: React.FC<CheckboxGroupFieldProps> = ({\n name,\n schema,\n uiSchema,\n isRequired,\n}) => {\n const globalClasses = useClassNames();\n const localClasses = uiSchema?.['ui:classNames'] || {};\n const {\n register,\n formState: { errors },\n } = useFormContext();\n\n const error = errors[name];\n\n // Extract enum options from items definition\n let options: any[] = [];\n if (schema.items && !Array.isArray(schema.items) && schema.items.enum) {\n options = schema.items.enum;\n }\n\n return (\n <div className={cx('cdf-field-group', globalClasses.fieldGroup, localClasses.fieldGroup)}>\n <label className={cx('cdf-label', globalClasses.label, localClasses.label)}>\n {schema.title || name}\n {isRequired && <span className=\"cdf-required-mark\">*</span>}\n </label>\n {schema.description && (\n <p\n className={cx('cdf-description', globalClasses.description, localClasses.description)}\n style={{ fontSize: '0.875rem', color: '#6b7280', margin: '-0.25rem 0 0.5rem 0' }}\n >\n {schema.description}\n </p>\n )}\n\n <div\n className={cx(\n 'cdf-checkbox-group',\n globalClasses.checkboxGroup,\n localClasses.checkboxGroup,\n )}\n >\n {options.map((option) => (\n <label\n key={option}\n className={cx(\n 'cdf-checkbox-label',\n globalClasses.checkboxLabel,\n localClasses.checkboxLabel,\n )}\n >\n <input\n type=\"checkbox\"\n value={option}\n {...register(name)}\n className={cx(\n 'cdf-checkbox-input',\n globalClasses.checkboxInput,\n localClasses.checkboxInput,\n )}\n />\n {option}\n </label>\n ))}\n </div>\n\n {error && (\n <span className={cx('cdf-error-message', globalClasses.errorText, localClasses.errorText)}>\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\n <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"></line>\n <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"></line>\n </svg>\n {error.message as string}\n </span>\n )}\n </div>\n );\n};\n","import React, { useState } from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { JSONSchema, UISchema } from '../../types/schema';\nimport { useClassNames, cx } from '../ClassNamesContext';\n\ninterface FileFieldProps {\n name: string;\n schema: JSONSchema;\n uiSchema?: UISchema;\n isRequired?: boolean;\n}\n\nexport const FileField: React.FC<FileFieldProps> = ({ name, schema, uiSchema, isRequired }) => {\n const globalClasses = useClassNames();\n const localClasses = uiSchema?.['ui:classNames'] || {};\n const {\n setValue,\n formState: { errors },\n } = useFormContext();\n\n const [fileName, setFileName] = useState<string | null>(null);\n const error = errors[name];\n\n const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0];\n if (!file) {\n setValue(name, undefined, { shouldValidate: true });\n setFileName(null);\n return;\n }\n\n setFileName(file.name);\n\n // Convert file to base64 data-url\n const reader = new FileReader();\n reader.onload = (event) => {\n setValue(name, event.target?.result, { shouldValidate: true });\n };\n reader.readAsDataURL(file);\n };\n\n return (\n <div className={cx('cdf-field-group', globalClasses.fieldGroup, localClasses.fieldGroup)}>\n <label className={cx('cdf-label', globalClasses.label, localClasses.label)}>\n {schema.title || name}\n {isRequired && <span className=\"cdf-required-mark\">*</span>}\n </label>\n {schema.description && (\n <p\n className={cx('cdf-description', globalClasses.description, localClasses.description)}\n style={{ fontSize: '0.875rem', color: '#6b7280', margin: '-0.25rem 0 0.5rem 0' }}\n >\n {schema.description}\n </p>\n )}\n\n <div\n className={cx(\n 'cdf-file-wrapper',\n globalClasses.fileWrapper,\n localClasses.fileWrapper,\n error && 'cdf-input--error',\n error && globalClasses.inputError,\n error && localClasses.inputError,\n )}\n >\n <input type=\"file\" className=\"cdf-file-input\" onChange={handleFileChange} />\n <div className={cx('cdf-file-text', globalClasses.fileText, localClasses.fileText)}>\n <span>Click to upload</span> or drag and drop\n </div>\n {fileName && (\n <div className=\"cdf-file-preview\">\n Selected: <strong>{fileName}</strong>\n </div>\n )}\n </div>\n\n {error && (\n <span className={cx('cdf-error-message', globalClasses.errorText, localClasses.errorText)}>\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\n <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"></line>\n <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"></line>\n </svg>\n {error.message as string}\n </span>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { JSONSchema, UISchema } from '../types/schema';\nimport { TextField } from './fields/TextField';\nimport { PasswordField } from './fields/PasswordField';\nimport { NumberField } from './fields/NumberField';\nimport { RichTextField } from './fields/RichTextField';\nimport { SelectField } from './fields/SelectField';\nimport { RadioField } from './fields/RadioField';\nimport { CheckboxField } from './fields/CheckboxField';\nimport { CheckboxGroupField } from './fields/CheckboxGroupField';\nimport { FileField } from './fields/FileField';\n\ninterface FieldRendererProps {\n name: string;\n schema: JSONSchema;\n uiSchema?: UISchema;\n isRequired?: boolean;\n}\n\nexport const FieldRenderer: React.FC<FieldRendererProps> = ({\n name,\n schema,\n uiSchema,\n isRequired,\n}) => {\n const columnSpan = uiSchema?.['ui:columnSpan'] || 1;\n const widget = uiSchema?.['ui:widget'];\n\n const renderField = () => {\n // Arrays (Checkbox Groups)\n if (schema.type === 'array') {\n return (\n <CheckboxGroupField\n name={name}\n schema={schema}\n uiSchema={uiSchema}\n isRequired={isRequired}\n />\n );\n }\n\n // Booleans (Single Checkbox)\n if (schema.type === 'boolean') {\n return (\n <CheckboxField name={name} schema={schema} uiSchema={uiSchema} isRequired={isRequired} />\n );\n }\n\n // Enums (Select vs Radio)\n if (schema.enum) {\n if (widget === 'radio') {\n return (\n <RadioField name={name} schema={schema} uiSchema={uiSchema} isRequired={isRequired} />\n );\n }\n return (\n <SelectField name={name} schema={schema} uiSchema={uiSchema} isRequired={isRequired} />\n );\n }\n\n // Strings\n if (schema.type === 'string') {\n if (schema.format === 'data-url') {\n return (\n <FileField name={name} schema={schema} uiSchema={uiSchema} isRequired={isRequired} />\n );\n }\n if (schema.format === 'password') {\n return (\n <PasswordField name={name} schema={schema} uiSchema={uiSchema} isRequired={isRequired} />\n );\n }\n if (schema.format === 'rich-text') {\n return (\n <RichTextField name={name} schema={schema} uiSchema={uiSchema} isRequired={isRequired} />\n );\n }\n return <TextField name={name} schema={schema} uiSchema={uiSchema} isRequired={isRequired} />;\n }\n\n // Numbers\n if (schema.type === 'number' || schema.type === 'integer') {\n return (\n <NumberField name={name} schema={schema} uiSchema={uiSchema} isRequired={isRequired} />\n );\n }\n\n // Fallback\n return (\n <div className=\"cdf-field-group\">\n <p className=\"cdf-error-message\">Unsupported field type: {schema.type}</p>\n </div>\n );\n };\n\n return (\n <div style={{ gridColumn: `span ${columnSpan} / span ${columnSpan}` }}>{renderField()}</div>\n );\n};\n","import React from 'react';\nimport { useForm, FormProvider } from 'react-hook-form';\nimport { ajvResolver } from '@hookform/resolvers/ajv';\nimport { JSONSchema, UISchema, FormClassNames } from '../types/schema';\nimport { FieldRenderer } from './FieldRenderer';\nimport { ClassNamesProvider, cx } from './ClassNamesContext';\nimport '../styles/form.css';\n\ninterface SchemaFormProps {\n schema: JSONSchema;\n uiSchema?: Record<string, UISchema>;\n onSubmit: (data: any) => void;\n defaultValues?: any;\n columns?: 1 | 2 | 3 | 4;\n theme?: {\n primary?: string;\n background?: string;\n text?: string;\n error?: string;\n surface?: string;\n border?: string;\n };\n classNames?: FormClassNames;\n}\n\nexport const SchemaForm: React.FC<SchemaFormProps> = ({\n schema,\n uiSchema = {},\n onSubmit,\n defaultValues,\n columns = 1,\n theme,\n classNames = {},\n}) => {\n const methods = useForm({\n resolver: ajvResolver(schema as any, {\n formats: {\n 'rich-text': true,\n password: true,\n 'data-url': true,\n email: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/,\n },\n }),\n defaultValues,\n });\n\n if (schema.type !== 'object' || !schema.properties) {\n return <div className=\"cdf-error-message\">Root schema must be an object with properties.</div>;\n }\n\n const themeStyles = theme\n ? ({\n '--cdf-primary': theme.primary,\n '--cdf-bg': theme.background,\n '--cdf-text': theme.text,\n '--cdf-error': theme.error,\n '--cdf-surface': theme.surface,\n '--cdf-border': theme.border,\n } as React.CSSProperties)\n : {};\n\n return (\n <ClassNamesProvider value={classNames}>\n <div className={cx('cdf-form-container', classNames.container)} style={themeStyles}>\n {schema.title && <h2 className={cx('cdf-form-title', classNames.title)}>{schema.title}</h2>}\n {schema.description && (\n <p\n className={classNames.description}\n style={{ color: 'var(--cdf-text-muted)', marginBottom: '1.5rem' }}\n >\n {schema.description}\n </p>\n )}\n\n <FormProvider {...methods}>\n <form className={classNames.form} onSubmit={methods.handleSubmit(onSubmit)} noValidate>\n <div className={`cdf-form-grid-${columns}`}>\n {Object.entries(schema.properties).map(([key, propSchema]) => (\n <FieldRenderer\n key={key}\n name={key}\n schema={propSchema}\n uiSchema={uiSchema[key]}\n isRequired={schema.required?.includes(key)}\n />\n ))}\n </div>\n <button type=\"submit\" className={cx('cdf-submit-btn', classNames.submitButton)}>\n Submit\n </button>\n </form>\n </FormProvider>\n </div>\n </ClassNamesProvider>\n );\n};\n","import { JSONSchema, UISchema } from '../types/schema';\n\nexport type BuilderFieldType =\n | 'text'\n | 'number'\n | 'email'\n | 'password'\n | 'rich-text'\n | 'file'\n | 'checkbox'\n | 'checkboxes'\n | 'select'\n | 'radio';\n\nexport interface FieldDef {\n id: string; // Internal UUID for drag and drop\n key: string; // The object property key in JSONSchema\n type: BuilderFieldType; // The primitive builder type\n schema: JSONSchema;\n uiSchema?: UISchema;\n isRequired?: boolean;\n}\n\n// Initial templates for dropping new fields\nexport const FIELD_TEMPLATES: Record<BuilderFieldType, Omit<FieldDef, 'id' | 'key'>> = {\n text: {\n type: 'text',\n schema: { type: 'string', title: 'New Text Field' },\n },\n number: {\n type: 'number',\n schema: { type: 'number', title: 'New Number Field' },\n },\n email: {\n type: 'email',\n schema: { type: 'string', format: 'email', title: 'Email Address' },\n },\n password: {\n type: 'password',\n schema: { type: 'string', format: 'password', title: 'Password' },\n },\n 'rich-text': {\n type: 'rich-text',\n schema: { type: 'string', format: 'rich-text', title: 'Rich Text' },\n },\n file: {\n type: 'file',\n schema: { type: 'string', format: 'data-url', title: 'File Upload' },\n },\n checkbox: {\n type: 'checkbox',\n schema: { type: 'boolean', title: 'Checkbox' },\n },\n checkboxes: {\n type: 'checkboxes',\n schema: {\n type: 'array',\n title: 'Multiple Checkboxes',\n items: { type: 'string', enum: ['Option 1', 'Option 2'] },\n },\n },\n select: {\n type: 'select',\n schema: { type: 'string', title: 'Dropdown', enum: ['Option 1', 'Option 2'] },\n },\n radio: {\n type: 'radio',\n schema: { type: 'string', title: 'Radio Buttons', enum: ['Option 1', 'Option 2'] },\n uiSchema: { 'ui:widget': 'radio' },\n },\n};\n","import { useState, useCallback, useMemo } from 'react';\nimport { v4 as uuidv4 } from 'uuid';\nimport { arrayMove } from '@dnd-kit/sortable';\nimport { FieldDef, BuilderFieldType, FIELD_TEMPLATES } from './types';\nimport { JSONSchema, UISchema } from '../types/schema';\n\nexport interface FormSettings {\n columns: 1 | 2 | 3 | 4;\n theme: {\n primary?: string;\n background?: string;\n text?: string;\n error?: string;\n };\n}\n\nexport const useFormBuilder = (\n initialSchema?: JSONSchema,\n initialUiSchema?: Record<string, UISchema>,\n initialColumns?: 1 | 2 | 3 | 4,\n initialTheme?: FormSettings['theme'],\n) => {\n // Try to parse existing schema into FieldDef[], or start empty\n const [fields, setFields] = useState<FieldDef[]>(() => {\n if (!initialSchema || !initialSchema.properties) return [];\n\n return Object.entries(initialSchema.properties).map(([key, propSchema]) => {\n // Very basic type inference for reverse mapping\n let type: BuilderFieldType = 'text';\n if (propSchema.type === 'string') {\n if (propSchema.format === 'email') type = 'email';\n else if (propSchema.format === 'password') type = 'password';\n else if (propSchema.format === 'data-url') type = 'file';\n else if (propSchema.format === 'rich-text') type = 'rich-text';\n else if (propSchema.enum) type = 'select'; // or radio, we'll refine below\n } else if (propSchema.type === 'number' || propSchema.type === 'integer') {\n type = 'number';\n } else if (propSchema.type === 'boolean') {\n type = 'checkbox';\n } else if (propSchema.type === 'array') {\n type = 'checkboxes';\n }\n\n const uiSchema = initialUiSchema?.[key];\n if (propSchema.enum && uiSchema?.['ui:widget'] === 'radio') {\n type = 'radio';\n }\n\n return {\n id: uuidv4(),\n key,\n type,\n schema: propSchema,\n uiSchema,\n isRequired: initialSchema.required?.includes(key),\n };\n });\n });\n\n const [selectedFieldId, setSelectedFieldId] = useState<string | null>(null);\n\n const addField = useCallback((type: BuilderFieldType, index?: number) => {\n const template = FIELD_TEMPLATES[type];\n const newField: FieldDef = {\n id: uuidv4(),\n key: `field_${Date.now()}`,\n type,\n // Deep clone template schemas\n schema: JSON.parse(JSON.stringify(template.schema)),\n uiSchema: template.uiSchema ? JSON.parse(JSON.stringify(template.uiSchema)) : undefined,\n };\n\n setFields((prev) => {\n if (typeof index === 'number') {\n const newFields = [...prev];\n newFields.splice(index, 0, newField);\n return newFields;\n }\n return [...prev, newField];\n });\n setSelectedFieldId(newField.id);\n }, []);\n\n const removeField = useCallback(\n (id: string) => {\n setFields((prev) => prev.filter((f) => f.id !== id));\n if (selectedFieldId === id) setSelectedFieldId(null);\n },\n [selectedFieldId],\n );\n\n const updateField = useCallback((id: string, updates: Partial<FieldDef>) => {\n setFields((prev) => prev.map((f) => (f.id === id ? { ...f, ...updates } : f)));\n }, []);\n\n const reorderFields = useCallback((activeId: string, overId: string) => {\n setFields((prev) => {\n const oldIndex = prev.findIndex((f) => f.id === activeId);\n const newIndex = prev.findIndex((f) => f.id === overId);\n return arrayMove(prev, oldIndex, newIndex);\n });\n }, []);\n\n const selectedField = useMemo(\n () => fields.find((f) => f.id === selectedFieldId),\n [fields, selectedFieldId],\n );\n\n // Export back to standard JSON Schema and UI Schema\n const compileSchemas = useCallback(() => {\n const finalSchema: JSONSchema = {\n type: 'object',\n title: initialSchema?.title || 'Generated Form',\n description: initialSchema?.description || '',\n properties: {},\n required: [],\n };\n\n const finalUiSchema: Record<string, UISchema> = {};\n\n fields.forEach((field) => {\n if (finalSchema.properties) {\n finalSchema.properties[field.key] = field.schema;\n }\n if (field.isRequired && finalSchema.required) {\n finalSchema.required.push(field.key);\n }\n if (field.uiSchema) {\n finalUiSchema[field.key] = field.uiSchema;\n }\n });\n\n if (finalSchema.required?.length === 0) {\n delete finalSchema.required;\n }\n\n return { schema: finalSchema, uiSchema: finalUiSchema };\n }, [fields, initialSchema]);\n\n const [formSettings, setFormSettings] = useState<FormSettings>({\n columns: initialColumns || 1,\n theme: initialTheme || {},\n });\n\n const updateFormSettings = useCallback((updates: Partial<FormSettings>) => {\n setFormSettings((prev) => ({\n ...prev,\n ...updates,\n theme: { ...prev.theme, ...(updates.theme || {}) },\n }));\n }, []);\n\n return {\n fields,\n selectedFieldId,\n setSelectedFieldId,\n selectedField,\n addField,\n removeField,\n updateField,\n reorderFields,\n compileSchemas,\n formSettings,\n updateFormSettings,\n };\n};\n","import React from 'react';\nimport { useDraggable } from '@dnd-kit/core';\nimport { BuilderFieldType } from '../types';\nimport {\n Type,\n Hash,\n Mail,\n Key,\n AlignLeft,\n FileUp,\n CheckSquare,\n List,\n ChevronDown,\n CheckCircle2,\n} from 'lucide-react';\n\nconst TOOLS: { type: BuilderFieldType; label: string; icon: React.ReactNode }[] = [\n { type: 'text', label: 'Text Field', icon: <Type size={18} /> },\n { type: 'number', label: 'Number', icon: <Hash size={18} /> },\n { type: 'email', label: 'Email', icon: <Mail size={18} /> },\n { type: 'password', label: 'Password', icon: <Key size={18} /> },\n { type: 'rich-text', label: 'Rich Text', icon: <AlignLeft size={18} /> },\n { type: 'select', label: 'Dropdown', icon: <ChevronDown size={18} /> },\n { type: 'radio', label: 'Radio Group', icon: <CheckCircle2 size={18} /> },\n { type: 'checkbox', label: 'Checkbox', icon: <CheckSquare size={18} /> },\n { type: 'checkboxes', label: 'Checkbox Group', icon: <List size={18} /> },\n { type: 'file', label: 'File Upload', icon: <FileUp size={18} /> },\n];\n\nconst DraggableTool: React.FC<{ type: BuilderFieldType; label: string; icon: React.ReactNode }> = ({\n type,\n label,\n icon,\n}) => {\n const { attributes, listeners, setNodeRef, isDragging } = useDraggable({\n id: `toolbox-${type}`,\n data: {\n type: 'ToolboxItem',\n fieldType: type,\n },\n });\n\n return (\n <div\n ref={setNodeRef}\n {...listeners}\n {...attributes}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '0.75rem',\n padding: '0.75rem',\n backgroundColor: 'white',\n border: '1px solid #e5e7eb',\n borderRadius: '0.5rem',\n cursor: isDragging ? 'grabbing' : 'grab',\n opacity: isDragging ? 0.5 : 1,\n marginBottom: '0.5rem',\n boxShadow: '0 1px 2px rgba(0,0,0,0.05)',\n transition: 'all 0.2s',\n }}\n onMouseEnter={(e) => {\n (e.currentTarget as HTMLDivElement).style.borderColor = '#6366f1';\n (e.currentTarget as HTMLDivElement).style.boxShadow = '0 4px 6px rgba(99, 102, 241, 0.1)';\n }}\n onMouseLeave={(e) => {\n (e.currentTarget as HTMLDivElement).style.borderColor = '#e5e7eb';\n (e.currentTarget as HTMLDivElement).style.boxShadow = '0 1px 2px rgba(0,0,0,0.05)';\n }}\n >\n <div style={{ color: '#6b7280' }}>{icon}</div>\n <span style={{ fontSize: '0.875rem', fontWeight: 500, color: '#374151' }}>{label}</span>\n </div>\n );\n};\n\nexport const Toolbox: React.FC = () => {\n return (\n <div\n style={{\n padding: '1.5rem',\n width: '280px',\n borderRight: '1px solid #e5e7eb',\n backgroundColor: '#f9fafb',\n height: '100%',\n overflowY: 'auto',\n }}\n >\n <h3 style={{ fontSize: '1rem', fontWeight: 600, color: '#111827', marginBottom: '1rem' }}>\n Form Elements\n </h3>\n <p style={{ fontSize: '0.875rem', color: '#6b7280', marginBottom: '1.5rem' }}>\n Drag and drop fields onto the canvas to build your form.\n </p>\n\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.25rem' }}>\n {TOOLS.map((tool) => (\n <DraggableTool key={tool.type} {...tool} />\n ))}\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { FieldDef } from '../types';\nimport { FieldRenderer } from '../../components/FieldRenderer';\nimport { GripVertical, Trash2, Copy } from 'lucide-react';\nimport { FormProvider, useForm } from 'react-hook-form';\n\ninterface SortableFieldProps {\n field: FieldDef;\n isSelected: boolean;\n onClick: () => void;\n onRemove: () => void;\n onDuplicate: () => void;\n}\n\nexport const SortableField: React.FC<SortableFieldProps> = ({\n field,\n isSelected,\n onClick,\n onRemove,\n onDuplicate,\n}) => {\n const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n id: field.id,\n data: {\n type: 'SortableField',\n field,\n },\n });\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n opacity: isDragging ? 0.6 : 1,\n position: 'relative' as const,\n zIndex: isDragging ? 10 : 1,\n padding: '2rem 1.5rem 1.5rem', // Extra top padding for drag handle\n backgroundColor: 'white',\n borderRadius: '0.75rem',\n border: `2px solid ${isSelected ? '#6366f1' : '#e5e7eb'}`,\n boxShadow: isSelected ? '0 4px 12px rgba(99, 102, 241, 0.15)' : '0 1px 3px rgba(0,0,0,0.05)',\n marginBottom: '1rem',\n cursor: 'pointer',\n gridColumn: `span ${field.uiSchema?.['ui:columnSpan'] || 1} / span ${field.uiSchema?.['ui:columnSpan'] || 1}`,\n };\n\n // We need a dummy FormProvider to render the fields live without throwing errors\n const methods = useForm();\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n onClick={(e) => {\n e.stopPropagation();\n onClick();\n }}\n >\n {/* Drag Handle */}\n <div\n {...attributes}\n {...listeners}\n style={{\n position: 'absolute',\n top: '0',\n left: '50%',\n transform: 'translateX(-50%)',\n width: '40px',\n height: '24px',\n backgroundColor: isSelected ? '#eef2ff' : '#f3f4f6',\n borderBottomLeftRadius: '8px',\n borderBottomRightRadius: '8px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: isDragging ? 'grabbing' : 'grab',\n color: isSelected ? '#6366f1' : '#9ca3af',\n zIndex: 2,\n }}\n onClick={(e) => e.stopPropagation()} // Prevent selecting field when clicking handle\n >\n <GripVertical size={16} />\n </div>\n\n {/* Field Renderer (Live Preview) */}\n <div style={{ position: 'relative' }}>\n {/* Invisible Glass Overlay to prevent clicking/typing into the field while in editor mode */}\n <div style={{ position: 'absolute', inset: 0, zIndex: 1, cursor: 'pointer' }} />\n\n <div style={{ pointerEvents: 'none' }}>\n <FormProvider {...methods}>\n <form>\n <FieldRenderer\n name={field.key}\n schema={field.schema}\n uiSchema={field.uiSchema}\n isRequired={field.isRequired}\n />\n </form>\n </FormProvider>\n </div>\n </div>\n\n {/* Action Buttons */}\n {isSelected && (\n <div\n style={{\n position: 'absolute',\n top: '-12px',\n right: '1rem',\n display: 'flex',\n gap: '0.25rem',\n backgroundColor: '#ffffff',\n border: '1px solid #e5e7eb',\n padding: '0.25rem',\n borderRadius: '0.5rem',\n boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.1)',\n zIndex: 10,\n }}\n >\n <button\n onClick={(e) => {\n e.stopPropagation();\n onDuplicate();\n }}\n style={{\n color: '#4f46e5',\n backgroundColor: '#eef2ff',\n border: 'none',\n cursor: 'pointer',\n padding: '0.375rem',\n borderRadius: '0.375rem',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n title=\"Duplicate Field\"\n >\n <Copy size={14} />\n </button>\n <button\n onClick={(e) => {\n e.stopPropagation();\n onRemove();\n }}\n style={{\n color: '#ef4444',\n backgroundColor: '#fef2f2',\n border: 'none',\n cursor: 'pointer',\n padding: '0.375rem',\n borderRadius: '0.375rem',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n title=\"Remove Field\"\n >\n <Trash2 size={14} />\n </button>\n </div>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { useDroppable } from '@dnd-kit/core';\nimport { SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable';\nimport { FieldDef } from '../types';\nimport { SortableField } from './SortableField';\n\ninterface CanvasProps {\n fields: FieldDef[];\n selectedFieldId: string | null;\n onSelectField: (id: string) => void;\n onRemoveField: (id: string) => void;\n onDuplicateField: (field: FieldDef) => void;\n}\n\nexport const Canvas: React.FC<CanvasProps> = ({\n fields,\n selectedFieldId,\n onSelectField,\n onRemoveField,\n onDuplicateField,\n}) => {\n const { setNodeRef, isOver } = useDroppable({\n id: 'canvas-droppable',\n data: {\n type: 'Canvas',\n },\n });\n\n return (\n <div\n style={{\n flex: 1,\n padding: '2rem',\n backgroundColor: '#f3f4f6',\n overflowY: 'auto',\n }}\n onClick={() => onSelectField('')} // Click outside to deselect\n >\n <div\n ref={setNodeRef}\n style={{\n margin: '0 auto',\n height: 'fit-content',\n width: '100%',\n maxWidth: '800px',\n minHeight: '400px',\n backgroundColor: fields.length === 0 ? 'transparent' : 'white',\n border: fields.length === 0 ? '2px dashed #d1d5db' : '1px solid #e5e7eb',\n borderRadius: '0.75rem',\n padding: fields.length === 0 ? '0' : '2rem',\n display: 'flex',\n flexDirection: 'column',\n boxShadow: fields.length === 0 ? 'none' : '0 10px 15px -3px rgba(0, 0, 0, 0.1)',\n transition: 'all 0.2s ease',\n ...(isOver && fields.length === 0\n ? { backgroundColor: '#eef2ff', borderColor: '#6366f1' }\n : {}),\n }}\n >\n {fields.length === 0 ? (\n <div style={{ margin: 'auto', textAlign: 'center', color: '#6b7280' }}>\n <p style={{ fontSize: '1.125rem', fontWeight: 500, marginBottom: '0.5rem' }}>\n Your form is empty\n </p>\n <p style={{ fontSize: '0.875rem' }}>\n Drag and drop a field from the left panel to get started.\n </p>\n </div>\n ) : (\n <div style={{ display: 'grid', gridTemplateColumns: 'repeat(4, 1fr)', gap: '1rem' }}>\n <SortableContext items={fields.map((f) => f.id)} strategy={verticalListSortingStrategy}>\n {fields.map((field) => (\n <SortableField\n key={field.id}\n field={field}\n isSelected={selectedFieldId === field.id}\n onClick={() => onSelectField(field.id)}\n onRemove={() => onRemoveField(field.id)}\n onDuplicate={() => onDuplicateField(field)}\n />\n ))}\n </SortableContext>\n </div>\n )}\n </div>\n </div>\n );\n};\n","import React, { useState } from 'react';\nimport { FieldDef } from '../types';\nimport { Settings, CheckCircle2, Paintbrush, LayoutTemplate, Palette } from 'lucide-react';\nimport { FormSettings } from '../useFormBuilder';\n\ninterface PropertiesPanelProps {\n field: FieldDef | null;\n formSettings: FormSettings;\n onUpdate: (id: string, updates: Partial<FieldDef>) => void;\n onUpdateSettings: (updates: Partial<FormSettings>) => void;\n}\n\nexport const PropertiesPanel: React.FC<PropertiesPanelProps> = ({\n field,\n formSettings,\n onUpdate,\n onUpdateSettings,\n}) => {\n const [activeTab, setActiveTab] = useState<'general' | 'validation' | 'design'>('general');\n\n if (!field) {\n return (\n <div\n style={{\n width: '320px',\n borderLeft: '1px solid #e5e7eb',\n backgroundColor: 'white',\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n overflowY: 'auto',\n }}\n >\n <div\n style={{\n padding: '1.5rem',\n borderBottom: '1px solid #e5e7eb',\n backgroundColor: '#f9fafb',\n }}\n >\n <h3 style={{ fontSize: '1.125rem', fontWeight: 600, color: '#111827', margin: 0 }}>\n Global Form Settings\n </h3>\n <p style={{ fontSize: '0.875rem', color: '#6b7280', margin: '0.25rem 0 0' }}>\n Click a field to edit its properties, or configure global form settings here.\n </p>\n </div>\n\n <div style={{ padding: '1.5rem', display: 'flex', flexDirection: 'column', gap: '1.5rem' }}>\n {/* Global Layout */}\n <div>\n <h4\n style={{\n fontSize: '0.875rem',\n fontWeight: 600,\n color: '#374151',\n marginBottom: '0.75rem',\n display: 'flex',\n alignItems: 'center',\n gap: '0.375rem',\n }}\n >\n <LayoutTemplate size={16} /> Layout Options\n </h4>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.375rem' }}>\n <label style={{ fontSize: '0.75rem', fontWeight: 500, color: '#6b7280' }}>\n Global Columns\n </label>\n <select\n value={formSettings.columns}\n onChange={(e) =>\n onUpdateSettings({ columns: Number(e.target.value) as 1 | 2 | 3 | 4 })\n }\n style={{\n width: '100%',\n padding: '0.5rem',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n fontSize: '0.875rem',\n }}\n >\n <option value={1}>1 Column</option>\n <option value={2}>2 Columns</option>\n <option value={3}>3 Columns</option>\n <option value={4}>4 Columns</option>\n </select>\n </div>\n </div>\n\n {/* Global Theme */}\n <div>\n <h4\n style={{\n fontSize: '0.875rem',\n fontWeight: 600,\n color: '#374151',\n marginBottom: '0.75rem',\n display: 'flex',\n alignItems: 'center',\n gap: '0.375rem',\n }}\n >\n <Palette size={16} /> Theme Colors\n </h4>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.75rem' }}>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '0.5rem',\n }}\n >\n <label style={{ fontSize: '0.875rem', fontWeight: 500, color: '#4b5563' }}>\n Primary Color\n </label>\n <div style={{ display: 'flex', alignItems: 'center', gap: '0.5rem' }}>\n <input\n type=\"color\"\n value={formSettings.theme.primary || '#6366f1'}\n onChange={(e) =>\n onUpdateSettings({\n theme: { ...formSettings.theme, primary: e.target.value },\n })\n }\n style={{\n width: '28px',\n height: '28px',\n padding: '0',\n border: 'none',\n borderRadius: '4px',\n cursor: 'pointer',\n }}\n />\n <input\n type=\"text\"\n value={formSettings.theme.primary || ''}\n placeholder=\"#6366f1\"\n onChange={(e) =>\n onUpdateSettings({\n theme: { ...formSettings.theme, primary: e.target.value },\n })\n }\n style={{\n width: '80px',\n padding: '0.25rem 0.5rem',\n border: '1px solid #d1d5db',\n borderRadius: '0.25rem',\n fontSize: '0.75rem',\n fontFamily: 'monospace',\n }}\n />\n </div>\n </div>\n\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '0.5rem',\n }}\n >\n <label style={{ fontSize: '0.875rem', fontWeight: 500, color: '#4b5563' }}>\n Background Color\n </label>\n <div style={{ display: 'flex', alignItems: 'center', gap: '0.5rem' }}>\n <input\n type=\"color\"\n value={formSettings.theme.background || '#ffffff'}\n onChange={(e) =>\n onUpdateSettings({\n theme: { ...formSettings.theme, background: e.target.value },\n })\n }\n style={{\n width: '28px',\n height: '28px',\n padding: '0',\n border: 'none',\n borderRadius: '4px',\n cursor: 'pointer',\n }}\n />\n <input\n type=\"text\"\n value={formSettings.theme.background || ''}\n placeholder=\"#ffffff\"\n onChange={(e) =>\n onUpdateSettings({\n theme: { ...formSettings.theme, background: e.target.value },\n })\n }\n style={{\n width: '80px',\n padding: '0.25rem 0.5rem',\n border: '1px solid #d1d5db',\n borderRadius: '0.25rem',\n fontSize: '0.75rem',\n fontFamily: 'monospace',\n }}\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n const handleSchemaChange = (key: string, value: any) => {\n onUpdate(field.id, {\n schema: { ...field.schema, [key]: value },\n });\n };\n\n const handleUiSchemaChange = (key: string, value: any) => {\n onUpdate(field.id, {\n uiSchema: { ...(field.uiSchema || {}), [key]: value },\n });\n };\n\n const handleClassNamesChange = (element: string, value: string) => {\n const existingUiClassNames = field.uiSchema?.['ui:classNames'] || {};\n handleUiSchemaChange('ui:classNames', {\n ...existingUiClassNames,\n [element]: value,\n });\n };\n\n return (\n <div\n style={{\n width: '320px',\n borderLeft: '1px solid #e5e7eb',\n backgroundColor: 'white',\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n overflowY: 'auto',\n }}\n >\n <div style={{ padding: '1.5rem 1.5rem 0', borderBottom: '1px solid #e5e7eb' }}>\n <h3\n style={{ fontSize: '1.125rem', fontWeight: 600, color: '#111827', marginBottom: '1rem' }}\n >\n Field Settings\n </h3>\n\n {/* Tabs */}\n <div style={{ display: 'flex', borderBottom: '1px solid #e5e7eb' }}>\n <button\n onClick={() => setActiveTab('general')}\n style={{\n flex: 1,\n padding: '0.75rem 0',\n fontSize: '0.875rem',\n fontWeight: 500,\n backgroundColor: 'transparent',\n border: 'none',\n borderBottom: `2px solid ${activeTab === 'general' ? '#6366f1' : 'transparent'}`,\n color: activeTab === 'general' ? '#6366f1' : '#6b7280',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '0.25rem',\n }}\n >\n <Settings size={14} /> General\n </button>\n <button\n onClick={() => setActiveTab('validation')}\n style={{\n flex: 1,\n padding: '0.75rem 0',\n fontSize: '0.875rem',\n fontWeight: 500,\n backgroundColor: 'transparent',\n border: 'none',\n borderBottom: `2px solid ${activeTab === 'validation' ? '#6366f1' : 'transparent'}`,\n color: activeTab === 'validation' ? '#6366f1' : '#6b7280',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '0.25rem',\n }}\n >\n <CheckCircle2 size={14} /> Validation\n </button>\n <button\n onClick={() => setActiveTab('design')}\n style={{\n flex: 1,\n padding: '0.75rem 0',\n fontSize: '0.875rem',\n fontWeight: 500,\n backgroundColor: 'transparent',\n border: 'none',\n borderBottom: `2px solid ${activeTab === 'design' ? '#6366f1' : 'transparent'}`,\n color: activeTab === 'design' ? '#6366f1' : '#6b7280',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '0.25rem',\n }}\n >\n <Paintbrush size={14} /> Design\n </button>\n </div>\n </div>\n\n <div style={{ padding: '1.5rem', display: 'flex', flexDirection: 'column', gap: '1.25rem' }}>\n {activeTab === 'general' && (\n <>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.375rem' }}>\n <label style={{ fontSize: '0.875rem', fontWeight: 500, color: '#374151' }}>\n Property Key\n </label>\n <input\n type=\"text\"\n value={field.key}\n onChange={(e) =>\n onUpdate(field.id, { key: e.target.value.replace(/[^a-zA-Z0-9_]/g, '') })\n }\n style={{\n width: '100%',\n padding: '0.5rem',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n fontSize: '0.875rem',\n }}\n placeholder=\"e.g. firstName\"\n />\n <span style={{ fontSize: '0.75rem', color: '#9ca3af' }}>\n The key used in the final JSON output.\n </span>\n </div>\n\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.375rem' }}>\n <label style={{ fontSize: '0.875rem', fontWeight: 500, color: '#374151' }}>\n Label / Title\n </label>\n <input\n type=\"text\"\n value={field.schema.title || ''}\n onChange={(e) => handleSchemaChange('title', e.target.value)}\n style={{\n width: '100%',\n padding: '0.5rem',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n fontSize: '0.875rem',\n }}\n />\n </div>\n\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.375rem' }}>\n <label style={{ fontSize: '0.875rem', fontWeight: 500, color: '#374151' }}>\n Description\n </label>\n <textarea\n value={field.schema.description || ''}\n onChange={(e) => handleSchemaChange('description', e.target.value)}\n style={{\n width: '100%',\n padding: '0.5rem',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n fontSize: '0.875rem',\n minHeight: '80px',\n }}\n />\n </div>\n\n {/* Enums for Select/Radio/Checkboxes */}\n {(field.type === 'select' || field.type === 'radio' || field.type === 'checkboxes') && (\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.375rem' }}>\n <label style={{ fontSize: '0.875rem', fontWeight: 500, color: '#374151' }}>\n Options (Comma separated)\n </label>\n <input\n type=\"text\"\n value={\n field.type === 'checkboxes'\n ? field.schema.items && !Array.isArray(field.schema.items)\n ? field.schema.items.enum?.join(', ')\n : ''\n : field.schema.enum?.join(', ') || ''\n }\n onChange={(e) => {\n const valArray = e.target.value\n .split(',')\n .map((s) => s.trim())\n .filter(Boolean);\n if (field.type === 'checkboxes') {\n handleSchemaChange('items', {\n ...((field.schema.items as any) || {}),\n enum: valArray,\n });\n } else {\n handleSchemaChange('enum', valArray);\n }\n }}\n style={{\n width: '100%',\n padding: '0.5rem',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n fontSize: '0.875rem',\n }}\n />\n </div>\n )}\n </>\n )}\n\n {activeTab === 'validation' && (\n <>\n <label\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '0.5rem',\n fontSize: '0.875rem',\n fontWeight: 500,\n color: '#374151',\n cursor: 'pointer',\n }}\n >\n <input\n type=\"checkbox\"\n checked={field.isRequired || false}\n onChange={(e) => onUpdate(field.id, { isRequired: e.target.checked })}\n />\n Required Field\n </label>\n\n {(field.type === 'text' || field.type === 'email' || field.type === 'password') && (\n <>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.375rem' }}>\n <label style={{ fontSize: '0.875rem', fontWeight: 500, color: '#374151' }}>\n Min Length\n </label>\n <input\n type=\"number\"\n value={field.schema.minLength || ''}\n onChange={(e) =>\n handleSchemaChange(\n 'minLength',\n e.target.value ? Number(e.target.value) : undefined,\n )\n }\n style={{\n width: '100%',\n padding: '0.5rem',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n fontSize: '0.875rem',\n }}\n />\n </div>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.375rem' }}>\n <label style={{ fontSize: '0.875rem', fontWeight: 500, color: '#374151' }}>\n Max Length\n </label>\n <input\n type=\"number\"\n value={field.schema.maxLength || ''}\n onChange={(e) =>\n handleSchemaChange(\n 'maxLength',\n e.target.value ? Number(e.target.value) : undefined,\n )\n }\n style={{\n width: '100%',\n padding: '0.5rem',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n fontSize: '0.875rem',\n }}\n />\n </div>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.375rem' }}>\n <label style={{ fontSize: '0.875rem', fontWeight: 500, color: '#374151' }}>\n Regex Pattern\n </label>\n <input\n type=\"text\"\n value={field.schema.pattern || ''}\n onChange={(e) => handleSchemaChange('pattern', e.target.value || undefined)}\n style={{\n width: '100%',\n padding: '0.5rem',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n fontSize: '0.875rem',\n }}\n />\n </div>\n </>\n )}\n\n {field.type === 'number' && (\n <>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.375rem' }}>\n <label style={{ fontSize: '0.875rem', fontWeight: 500, color: '#374151' }}>\n Minimum Value\n </label>\n <input\n type=\"number\"\n value={field.schema.minimum || ''}\n onChange={(e) =>\n handleSchemaChange(\n 'minimum',\n e.target.value ? Number(e.target.value) : undefined,\n )\n }\n style={{\n width: '100%',\n padding: '0.5rem',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n fontSize: '0.875rem',\n }}\n />\n </div>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.375rem' }}>\n <label style={{ fontSize: '0.875rem', fontWeight: 500, color: '#374151' }}>\n Maximum Value\n </label>\n <input\n type=\"number\"\n value={field.schema.maximum || ''}\n onChange={(e) =>\n handleSchemaChange(\n 'maximum',\n e.target.value ? Number(e.target.value) : undefined,\n )\n }\n style={{\n width: '100%',\n padding: '0.5rem',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n fontSize: '0.875rem',\n }}\n />\n </div>\n </>\n )}\n </>\n )}\n\n {activeTab === 'design' && (\n <>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.375rem' }}>\n <label style={{ fontSize: '0.875rem', fontWeight: 500, color: '#374151' }}>\n Column Span\n </label>\n <select\n value={field.uiSchema?.['ui:columnSpan'] || 1}\n onChange={(e) => handleUiSchemaChange('ui:columnSpan', Number(e.target.value))}\n style={{\n width: '100%',\n padding: '0.5rem',\n border: '1px solid #d1d5db',\n borderRadius: '0.375rem',\n fontSize: '0.875rem',\n }}\n >\n <option value={1}>1 Column</option>\n <option value={2}>2 Columns</option>\n <option value={3}>3 Columns</option>\n <option value={4}>4 Columns</option>\n </select>\n </div>\n\n <div style={{ marginTop: '1rem', borderTop: '1px solid #e5e7eb', paddingTop: '1rem' }}>\n <h4\n style={{\n fontSize: '0.875rem',\n fontWeight: 600,\n color: '#111827',\n marginBottom: '0.5rem',\n }}\n >\n Tailwind Classes (ui:classNames)\n </h4>\n\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.75rem' }}>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.25rem' }}>\n <label style={{ fontSize: '0.75rem', color: '#6b7280' }}>Input</label>\n <input\n type=\"text\"\n value={field.uiSchema?.['ui:classNames']?.input || ''}\n onChange={(e) => handleClassNamesChange('input', e.target.value)}\n style={{\n width: '100%',\n padding: '0.4rem',\n border: '1px solid #d1d5db',\n borderRadius: '0.25rem',\n fontSize: '0.75rem',\n fontFamily: 'monospace',\n }}\n placeholder=\"e.g. bg-gray-50 border-blue-500\"\n />\n </div>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '0.25rem' }}>\n <label style={{ fontSize: '0.75rem', color: '#6b7280' }}>Label</label>\n <input\n type=\"text\"\n value={field.uiSchema?.['ui:classNames']?.label || ''}\n onChange={(e) => handleClassNamesChange('label', e.target.value)}\n style={{\n width: '100%',\n padding: '0.4rem',\n border: '1px solid #d1d5db',\n borderRadius: '0.25rem',\n fontSize: '0.75rem',\n fontFamily: 'monospace',\n }}\n placeholder=\"e.g. text-blue-600 font-bold\"\n />\n </div>\n </div>\n </div>\n </>\n )}\n </div>\n </div>\n );\n};\n","import React, { useState } from 'react';\nimport {\n DndContext,\n DragOverlay,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n DragEndEvent,\n DragStartEvent,\n} from '@dnd-kit/core';\nimport { sortableKeyboardCoordinates } from '@dnd-kit/sortable';\nimport { JSONSchema, UISchema } from '../types/schema';\nimport { useFormBuilder, FormSettings } from './useFormBuilder';\nimport { Toolbox } from './components/Toolbox';\nimport { Canvas } from './components/Canvas';\nimport { PropertiesPanel } from './components/PropertiesPanel';\nimport { BuilderFieldType } from './types';\nimport { Save, Code2, Eye, LayoutTemplate } from 'lucide-react';\nimport { SchemaForm } from '../components/SchemaForm';\nimport '../styles/form.css'; // Ensure base form styles are loaded for canvas\n\nexport interface FormBuilderProps {\n initialSchema?: JSONSchema;\n initialUiSchema?: Record<string, UISchema>;\n initialColumns?: 1 | 2 | 3 | 4;\n initialTheme?: FormSettings['theme'];\n onSave?: (\n schema: JSONSchema,\n uiSchema: Record<string, UISchema>,\n formSettings: FormSettings,\n ) => void;\n}\n\nexport const FormBuilder: React.FC<FormBuilderProps> = ({\n initialSchema,\n initialUiSchema,\n initialColumns,\n initialTheme,\n onSave,\n}) => {\n const {\n fields,\n selectedFieldId,\n setSelectedFieldId,\n selectedField,\n addField,\n removeField,\n updateField,\n reorderFields,\n compileSchemas,\n formSettings,\n updateFormSettings,\n } = useFormBuilder(initialSchema, initialUiSchema, initialColumns, initialTheme);\n\n const [activeDragType, setActiveDragType] = useState<BuilderFieldType | null>(null);\n const [isPreviewMode, setIsPreviewMode] = useState(false);\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n );\n\n const handleDragStart = (event: DragStartEvent) => {\n const { active } = event;\n if (active.data.current?.type === 'ToolboxItem') {\n setActiveDragType(active.data.current.fieldType);\n }\n };\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event;\n setActiveDragType(null);\n\n if (!over) return;\n\n if (active.data.current?.type === 'ToolboxItem') {\n // Dropping a new field from the toolbox onto the canvas\n if (over.id === 'canvas-droppable' || fields.find((f) => f.id === over.id)) {\n // If dropped on an existing item, insert at that index. Otherwise append.\n const overIndex = fields.findIndex((f) => f.id === over.id);\n addField(\n active.data.current.fieldType as BuilderFieldType,\n overIndex >= 0 ? overIndex : undefined,\n );\n }\n return;\n }\n\n if (active.data.current?.type === 'SortableField' && active.id !== over.id) {\n // Reordering fields within the canvas\n reorderFields(active.id as string, over.id as string);\n }\n };\n\n const handleSave = () => {\n if (onSave) {\n const { schema, uiSchema } = compileSchemas();\n onSave(schema, uiSchema, formSettings);\n }\n };\n\n return (\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n height: '100vh',\n width: '100vw',\n fontFamily: 'system-ui, sans-serif',\n }}\n >\n {/* Top Bar */}\n <div\n style={{\n height: '60px',\n borderBottom: '1px solid #e5e7eb',\n backgroundColor: 'white',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '0 1.5rem',\n zIndex: 20,\n }}\n >\n <div style={{ display: 'flex', alignItems: 'center', gap: '0.5rem' }}>\n <div\n style={{\n width: '32px',\n height: '32px',\n backgroundColor: '#6366f1',\n borderRadius: '0.5rem',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: 'white',\n }}\n >\n <Code2 size={20} />\n </div>\n <h1 style={{ fontSize: '1.25rem', fontWeight: 700, color: '#111827', margin: 0 }}>\n Visual Form Builder\n </h1>\n </div>\n\n {/* Mode Toggle */}\n <div\n style={{\n display: 'flex',\n backgroundColor: '#f3f4f6',\n padding: '0.25rem',\n borderRadius: '0.5rem',\n }}\n >\n <button\n onClick={() => setIsPreviewMode(false)}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '0.375rem',\n padding: '0.375rem 0.75rem',\n fontSize: '0.875rem',\n fontWeight: 500,\n border: 'none',\n borderRadius: '0.375rem',\n cursor: 'pointer',\n transition: 'all 0.2s',\n backgroundColor: !isPreviewMode ? 'white' : 'transparent',\n color: !isPreviewMode ? '#111827' : '#6b7280',\n boxShadow: !isPreviewMode ? '0 1px 3px rgba(0,0,0,0.1)' : 'none',\n }}\n >\n <LayoutTemplate size={16} /> Builder\n </button>\n <button\n onClick={() => setIsPreviewMode(true)}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '0.375rem',\n padding: '0.375rem 0.75rem',\n fontSize: '0.875rem',\n fontWeight: 500,\n border: 'none',\n borderRadius: '0.375rem',\n cursor: 'pointer',\n transition: 'all 0.2s',\n backgroundColor: isPreviewMode ? 'white' : 'transparent',\n color: isPreviewMode ? '#111827' : '#6b7280',\n boxShadow: isPreviewMode ? '0 1px 3px rgba(0,0,0,0.1)' : 'none',\n }}\n >\n <Eye size={16} /> Preview\n </button>\n </div>\n\n <div>\n <button\n onClick={handleSave}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '0.5rem',\n backgroundColor: '#6366f1',\n color: 'white',\n border: 'none',\n padding: '0.5rem 1rem',\n borderRadius: '0.375rem',\n fontWeight: 600,\n cursor: 'pointer',\n transition: 'background-color 0.2s',\n }}\n onMouseEnter={(e) => (e.currentTarget.style.backgroundColor = '#4f46e5')}\n onMouseLeave={(e) => (e.currentTarget.style.backgroundColor = '#6366f1')}\n >\n <Save size={16} /> Save Form\n </button>\n </div>\n </div>\n\n {/* Main Area */}\n <div\n style={{\n display: 'flex',\n flex: 1,\n overflow: 'hidden',\n backgroundColor: '#f3f4f6',\n minHeight: 0,\n }}\n >\n {isPreviewMode ? (\n <div\n style={{\n flex: 1,\n padding: '3rem',\n overflowY: 'auto',\n }}\n >\n <div\n style={{\n margin: '0 auto',\n height: 'fit-content',\n width: '100%',\n maxWidth: '800px',\n backgroundColor: 'white',\n padding: '2rem',\n borderRadius: '1rem',\n boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)',\n }}\n >\n <div\n style={{\n marginBottom: '2rem',\n paddingBottom: '1rem',\n borderBottom: '1px solid #e5e7eb',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n }}\n >\n <span\n style={{\n fontSize: '0.875rem',\n fontWeight: 600,\n color: '#6366f1',\n textTransform: 'uppercase',\n letterSpacing: '0.05em',\n }}\n >\n Live Preview\n </span>\n </div>\n <SchemaForm\n schema={compileSchemas().schema}\n uiSchema={compileSchemas().uiSchema}\n columns={formSettings.columns}\n theme={formSettings.theme}\n onSubmit={(data) =>\n alert('Preview Form Submitted!\\n\\n' + JSON.stringify(data, null, 2))\n }\n />\n </div>\n </div>\n ) : (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n >\n {/* Left: Toolbox */}\n <Toolbox />\n\n {/* Center: Canvas */}\n <Canvas\n fields={fields}\n selectedFieldId={selectedFieldId}\n onSelectField={setSelectedFieldId}\n onRemoveField={removeField}\n onDuplicateField={(f) => {\n // Add a copy of the field right after it\n const idx = fields.findIndex((field) => field.id === f.id);\n addField(f.type, idx + 1);\n }}\n />\n\n {/* Right: Properties */}\n <PropertiesPanel\n field={selectedField || null}\n formSettings={formSettings}\n onUpdate={updateField}\n onUpdateSettings={updateFormSettings}\n />\n\n {/* Drag Overlay (Visual feedback when dragging) */}\n <DragOverlay>\n {activeDragType ? (\n <div\n style={{\n padding: '0.75rem',\n backgroundColor: '#6366f1',\n color: 'white',\n borderRadius: '0.5rem',\n opacity: 0.8,\n fontWeight: 500,\n }}\n >\n Dropping {activeDragType}...\n </div>\n ) : null}\n </DragOverlay>\n </DndContext>\n )}\n </div>\n </div>\n );\n};\n"]}