masumi-schema-validator-component 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +89 -0
- package/dist/index.d.mts +1202 -0
- package/dist/index.d.ts +1202 -0
- package/dist/index.js +675 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +644 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +48 -0
- package/src/components/JobInputRenderer.tsx +175 -0
- package/src/components/JobInputsFormRenderer.tsx +185 -0
- package/src/dev/examples.ts +196 -0
- package/src/dev/main.tsx +136 -0
- package/src/index.ts +4 -0
- package/src/lib/job-input-schema.ts +423 -0
- package/src/lib/validation.ts +90 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/job-input-schema.ts","../src/lib/validation.ts","../src/components/JobInputRenderer.tsx","../src/components/JobInputsFormRenderer.tsx"],"names":["ValidJobInputTypes","ValidJobInputValidationTypes","ValidJobInputFormatValues","z","jobInputSchema","jobInputStringSchema","jobInputTextareaSchema","jobInputNumberSchema","jobInputOptionSchema","jobInputFileSchema","React","jsx","jsxs","twMerge","clsx","useState","useEffect"],"mappings":"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","file":"index.js","sourcesContent":["import { z } from 'zod';\n\n// Enums matching sokosumi's implementation\nexport enum ValidJobInputTypes {\n STRING = 'string',\n TEXTAREA = 'textarea',\n NUMBER = 'number',\n BOOLEAN = 'boolean',\n OPTION = 'option',\n FILE = 'file',\n NONE = 'none',\n}\n\nexport enum ValidJobInputValidationTypes {\n MIN = 'min',\n MAX = 'max',\n FORMAT = 'format',\n OPTIONAL = 'optional',\n}\n\nexport enum ValidJobInputFormatValues {\n URL = 'url',\n EMAIL = 'email',\n INTEGER = 'integer',\n NON_EMPTY = 'nonempty',\n}\n\n// Validation schemas\nexport const optionalValidationSchema = z.object({\n validation: z.enum([ValidJobInputValidationTypes.OPTIONAL]),\n value: z.enum(['true', 'false'] as const),\n});\n\nexport const minValidationSchema = z.object({\n validation: z.enum([ValidJobInputValidationTypes.MIN]),\n value: z.number({ coerce: true }).int().min(0),\n});\n\nexport const maxValidationSchema = z.object({\n validation: z.enum([ValidJobInputValidationTypes.MAX]),\n value: z.number({ coerce: true }).int().min(0),\n});\n\nexport const formatUrlValidationSchema = z.object({\n validation: z.enum([ValidJobInputValidationTypes.FORMAT]),\n value: z.enum([ValidJobInputFormatValues.URL]),\n});\n\nexport const formatEmailValidationSchema = z.object({\n validation: z.enum([ValidJobInputValidationTypes.FORMAT]),\n value: z.enum([ValidJobInputFormatValues.EMAIL]),\n});\n\nexport const formatIntegerValidationSchema = z.object({\n validation: z.enum([ValidJobInputValidationTypes.FORMAT]),\n value: z.enum([ValidJobInputFormatValues.INTEGER]),\n});\n\nexport const formatNonEmptyValidationSchema = z.object({\n validation: z.enum([ValidJobInputValidationTypes.FORMAT]),\n value: z.enum([ValidJobInputFormatValues.NON_EMPTY]),\n});\n\n// Job input schemas\nexport const jobInputStringSchema = z.object({\n id: z.string().min(1),\n type: z.enum([ValidJobInputTypes.STRING]),\n name: z.string().min(1),\n data: z\n .object({\n placeholder: z.string().optional(),\n description: z.string().optional(),\n })\n .optional(),\n validations: z\n .array(\n optionalValidationSchema\n .or(minValidationSchema)\n .or(maxValidationSchema)\n .or(formatNonEmptyValidationSchema)\n .or(formatUrlValidationSchema)\n .or(formatEmailValidationSchema),\n )\n .optional(),\n});\n\nexport const jobInputTextareaSchema = z.object({\n id: z.string().min(1),\n type: z.enum([ValidJobInputTypes.TEXTAREA]),\n name: z.string().min(1),\n data: z\n .object({\n placeholder: z.string().optional(),\n description: z.string().optional(),\n })\n .optional(),\n validations: z\n .array(\n optionalValidationSchema\n .or(minValidationSchema)\n .or(maxValidationSchema)\n .or(formatNonEmptyValidationSchema),\n )\n .optional(),\n});\n\nexport const jobInputNumberSchema = z.object({\n id: z.string().min(1),\n type: z.enum([ValidJobInputTypes.NUMBER]),\n name: z.string().min(1),\n data: z\n .object({\n placeholder: z.string().optional(),\n description: z.string().optional(),\n })\n .optional(),\n validations: z\n .array(\n optionalValidationSchema\n .or(minValidationSchema)\n .or(maxValidationSchema)\n .or(formatIntegerValidationSchema),\n )\n .optional(),\n});\n\nexport const jobInputBooleanSchema = z.object({\n id: z.string().min(1),\n type: z.enum([ValidJobInputTypes.BOOLEAN]),\n name: z.string().min(1),\n data: z\n .object({\n placeholder: z.string().optional(),\n description: z.string().optional(),\n })\n .optional(),\n validations: z.array(optionalValidationSchema).optional(),\n});\n\nexport const jobInputOptionSchema = z.object({\n id: z.string().min(1),\n type: z.enum([ValidJobInputTypes.OPTION]),\n name: z.string().min(1),\n data: z.object({\n values: z.array(z.string().min(1)).min(1),\n placeholder: z.string().optional(),\n description: z.string().optional(),\n }),\n validations: z\n .array(\n optionalValidationSchema.or(minValidationSchema).or(maxValidationSchema),\n )\n .optional(),\n});\n\nexport const jobInputFileSchema = z.object({\n id: z.string().min(1),\n type: z.enum([ValidJobInputTypes.FILE]),\n name: z.string().min(1),\n data: z.object({\n accept: z.string().optional(),\n maxSize: z.string().optional(),\n multiple: z.boolean().optional(),\n description: z.string().optional(),\n outputFormat: z.string().optional(),\n }),\n validations: z.array(optionalValidationSchema).optional(),\n});\n\nexport const jobInputNoneSchema = z.object({\n id: z.string().min(1),\n type: z.enum([ValidJobInputTypes.NONE]),\n name: z.string().min(1),\n data: z\n .object({\n description: z.string().min(1).optional(),\n })\n .optional(),\n});\n\n// Union schema for all job input types\nexport const jobInputSchema = jobInputStringSchema\n .or(jobInputTextareaSchema)\n .or(jobInputNumberSchema)\n .or(jobInputBooleanSchema)\n .or(jobInputOptionSchema)\n .or(jobInputFileSchema)\n .or(jobInputNoneSchema);\n\nexport type JobInputSchemaType = z.infer<typeof jobInputSchema>;\nexport type JobInputStringSchemaType = z.infer<typeof jobInputStringSchema>;\nexport type JobInputTextareaSchemaType = z.infer<typeof jobInputTextareaSchema>;\nexport type JobInputNumberSchemaType = z.infer<typeof jobInputNumberSchema>;\nexport type JobInputBooleanSchemaType = z.infer<typeof jobInputBooleanSchema>;\nexport type JobInputOptionSchemaType = z.infer<typeof jobInputOptionSchema>;\nexport type JobInputFileSchemaType = z.infer<typeof jobInputFileSchema>;\nexport type JobInputNoneSchemaType = z.infer<typeof jobInputNoneSchema>;\n\n// Form schema generation (based on sokosumi's approach)\nexport const makeZodSchemaFromJobInputSchema = (\n jobInputSchema: JobInputSchemaType,\n) => {\n switch (jobInputSchema.type) {\n case ValidJobInputTypes.STRING:\n return makeZodSchemaFromJobInputStringSchema(jobInputSchema);\n case ValidJobInputTypes.TEXTAREA:\n return makeZodSchemaFromJobInputTextareaSchema(jobInputSchema);\n case ValidJobInputTypes.NUMBER:\n return makeZodSchemaFromJobInputNumberSchema(jobInputSchema);\n case ValidJobInputTypes.BOOLEAN:\n return makeZodSchemaFromJobInputBooleanSchema();\n case ValidJobInputTypes.OPTION:\n return makeZodSchemaFromJobInputOptionSchema(jobInputSchema);\n case ValidJobInputTypes.FILE:\n return makeZodSchemaFromJobInputFileSchema(jobInputSchema);\n case ValidJobInputTypes.NONE:\n return z.never().nullable();\n }\n};\n\nconst makeZodSchemaFromJobInputStringSchema = (\n jobInputStringSchema: JobInputStringSchemaType,\n) => {\n const { validations } = jobInputStringSchema;\n const defaultSchema = z.string();\n if (!validations) return defaultSchema;\n\n let canBeOptional: boolean = false;\n const schema = validations.reduce((acc, cur) => {\n const { validation, value } = cur;\n switch (validation) {\n case ValidJobInputValidationTypes.MIN:\n return acc.min(value);\n case ValidJobInputValidationTypes.MAX:\n return acc.max(value);\n case ValidJobInputValidationTypes.FORMAT:\n switch (value) {\n case ValidJobInputFormatValues.URL:\n return acc.url();\n case ValidJobInputFormatValues.EMAIL:\n return acc.email();\n case ValidJobInputFormatValues.NON_EMPTY:\n return acc.min(1);\n default:\n return acc;\n }\n case ValidJobInputValidationTypes.OPTIONAL:\n canBeOptional = value === 'true';\n return acc;\n }\n }, defaultSchema);\n\n return canBeOptional ? schema.optional() : schema;\n};\n\nconst makeZodSchemaFromJobInputTextareaSchema = (\n jobInputTextareaSchema: JobInputTextareaSchemaType,\n) => {\n const { validations } = jobInputTextareaSchema;\n const defaultSchema = z.string();\n if (!validations) return defaultSchema;\n\n let canBeOptional: boolean = false;\n const schema = validations.reduce((acc, cur) => {\n const { validation, value } = cur;\n switch (validation) {\n case ValidJobInputValidationTypes.MIN:\n return acc.min(value);\n case ValidJobInputValidationTypes.MAX:\n return acc.max(value);\n case ValidJobInputValidationTypes.FORMAT:\n switch (value) {\n case ValidJobInputFormatValues.NON_EMPTY:\n return acc.min(1);\n default:\n return acc;\n }\n case ValidJobInputValidationTypes.OPTIONAL:\n canBeOptional = value === 'true';\n return acc;\n }\n }, defaultSchema);\n\n return canBeOptional ? schema.optional() : schema;\n};\n\nconst makeZodSchemaFromJobInputNumberSchema = (\n jobInputNumberSchema: JobInputNumberSchemaType,\n) => {\n const { validations } = jobInputNumberSchema;\n const defaultSchema = z.number({ coerce: true });\n if (!validations) return defaultSchema;\n\n let canBeOptional: boolean = false;\n const schema = validations.reduce((acc, cur) => {\n const { validation, value } = cur;\n switch (validation) {\n case ValidJobInputValidationTypes.MIN:\n return acc.min(value);\n case ValidJobInputValidationTypes.MAX:\n return acc.max(value);\n case ValidJobInputValidationTypes.FORMAT:\n switch (value) {\n case ValidJobInputFormatValues.INTEGER:\n return acc.int();\n default:\n return acc;\n }\n case ValidJobInputValidationTypes.OPTIONAL:\n canBeOptional = value === 'true';\n return acc;\n }\n }, defaultSchema);\n\n return canBeOptional ? schema.optional() : schema;\n};\n\nconst makeZodSchemaFromJobInputBooleanSchema = () => {\n return z.boolean();\n};\n\nconst makeZodSchemaFromJobInputOptionSchema = (\n jobInputOptionSchema: JobInputOptionSchemaType,\n) => {\n const {\n data: { values },\n validations,\n } = jobInputOptionSchema;\n const defaultSchema = z.array(\n z\n .number()\n .int()\n .nonnegative()\n .max(values.length - 1),\n );\n if (!validations) return defaultSchema;\n\n let canBeOptional: boolean = false;\n const schema = validations.reduce((acc, cur) => {\n const { validation, value } = cur;\n switch (validation) {\n case ValidJobInputValidationTypes.MIN:\n return acc.min(value);\n case ValidJobInputValidationTypes.MAX:\n return acc.max(value);\n case ValidJobInputValidationTypes.OPTIONAL:\n canBeOptional = value === 'true';\n return acc;\n }\n }, defaultSchema);\n\n return canBeOptional ? schema.optional() : schema;\n};\n\nconst makeZodSchemaFromJobInputFileSchema = (\n jobInputFileSchema: JobInputFileSchemaType,\n) => {\n const { validations } = jobInputFileSchema;\n const defaultSchema = z.string();\n if (!validations) return defaultSchema;\n\n let canBeOptional: boolean = false;\n const schema = validations.reduce((acc, cur) => {\n const { validation, value } = cur;\n switch (validation) {\n case ValidJobInputValidationTypes.OPTIONAL:\n canBeOptional = value === 'true';\n return acc;\n default:\n return acc;\n }\n }, defaultSchema);\n\n return canBeOptional ? schema.optional() : schema;\n};\n\n// Helper functions\nexport const isOptional = (jobInputSchema: JobInputSchemaType): boolean => {\n if (!('validations' in jobInputSchema) || !jobInputSchema.validations)\n return false;\n return jobInputSchema.validations.some(\n (v) =>\n v.validation === ValidJobInputValidationTypes.OPTIONAL &&\n v.value === 'true',\n );\n};\n\nexport const isSingleOption = (jobInputSchema: JobInputSchemaType): boolean => {\n if (jobInputSchema.type !== ValidJobInputTypes.OPTION) return false;\n if (!('validations' in jobInputSchema) || !jobInputSchema.validations)\n return false;\n\n const minValidation = jobInputSchema.validations.find(\n (v) => v.validation === ValidJobInputValidationTypes.MIN,\n );\n const maxValidation = jobInputSchema.validations.find(\n (v) => v.validation === ValidJobInputValidationTypes.MAX,\n );\n\n return minValidation?.value === 1 && maxValidation?.value === 1;\n};\n\nexport const getDefaultValue = (jobInputSchema: JobInputSchemaType) => {\n const { type } = jobInputSchema;\n switch (type) {\n case ValidJobInputTypes.STRING:\n return '';\n case ValidJobInputTypes.TEXTAREA:\n return '';\n case ValidJobInputTypes.BOOLEAN:\n return false;\n case ValidJobInputTypes.NUMBER:\n return null;\n case ValidJobInputTypes.OPTION:\n return [];\n case ValidJobInputTypes.FILE:\n return null;\n case ValidJobInputTypes.NONE:\n return null;\n }\n};\n\n","// This file contains the extracted validation logic.\n// Note: It relies on jobInputSchema which is not yet provided, so we will need to update imports.\n\nimport { jobInputSchema, JobInputSchemaType } from './job-input-schema';\n\nexport type { JobInputSchemaType };\n\nexport interface ValidationResult {\n valid: boolean;\n errors: { message: string; line?: number }[];\n parsedSchemas?: JobInputSchemaType[];\n}\n\n/**\n * Validates a JSON string against the Job Input Schema.\n * Tries to provide line numbers for errors where possible.\n */\nexport function validateSchemaWithZod(input: string): ValidationResult {\n let parsed: any;\n try {\n parsed = JSON.parse(input);\n } catch (e: any) {\n // Try to extract line number from error message\n const match = e.message.match(/at position (\\d+)/);\n let line;\n if (match) {\n const pos = parseInt(match[1], 10);\n line = input.slice(0, pos).split('\\n').length;\n }\n return {\n valid: false,\n errors: [{ message: 'Invalid JSON: ' + e.message, line }],\n };\n }\n\n const errors: { message: string; line?: number }[] = [];\n const schemas: JobInputSchemaType[] = [];\n\n // Helper to get line number for a key\n const getLine = (key: string) => {\n const idx = input.indexOf('\"' + key + '\"');\n if (idx === -1) return undefined;\n return input.slice(0, idx).split('\\n').length;\n };\n\n // Handle wrapped format, single schema, and array of schemas\n let schemasToValidate: any[];\n if (parsed.input_data && Array.isArray(parsed.input_data)) {\n // Handle wrapped format: { \"input_data\": [...] }\n schemasToValidate = parsed.input_data;\n } else if (Array.isArray(parsed)) {\n // Handle array format: [...]\n schemasToValidate = parsed;\n } else {\n // Handle single schema format: { ... }\n schemasToValidate = [parsed];\n }\n\n schemasToValidate.forEach((schema: any, index: number) => {\n try {\n const validatedSchema = jobInputSchema.parse(schema);\n schemas.push(validatedSchema);\n } catch (zodError: any) {\n if (zodError.errors) {\n zodError.errors.forEach((error: any) => {\n errors.push({\n message: `Schema ${index + 1}: ${error.message}`,\n line: getLine(error.path?.[0] || ''),\n });\n });\n } else {\n errors.push({\n message: `Schema ${index + 1}: ${zodError.message}`,\n line: getLine('type'),\n });\n }\n }\n });\n\n if (errors.length > 0) {\n return { valid: false, errors };\n }\n\n return {\n valid: true,\n errors: [],\n parsedSchemas: schemas,\n };\n}\n\n","// Placeholder for JobInputRenderer component\n// This will be replaced by the actual content if provided, \n// or we need to request it. \n// Based on imports in JobInputsFormRenderer, this file is expected to exist.\n\nimport React from 'react';\nimport { JobInputSchemaType, ValidJobInputTypes } from '../lib/job-input-schema';\n\n// Simple UI Components for the renderer\nimport { cn } from './JobInputsFormRenderer';\n\nconst Label = React.forwardRef<HTMLLabelElement, React.LabelHTMLAttributes<HTMLLabelElement>>(({ className, ...props }, ref) => (\n <label ref={ref} className={cn(\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\", className)} {...props} />\n));\nLabel.displayName = \"Label\";\n\nconst Input = React.forwardRef<HTMLInputElement, React.InputHTMLAttributes<HTMLInputElement>>(({ className, type, ...props }, ref) => (\n <input\n type={type}\n className={cn(\n \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n ref={ref}\n {...props}\n />\n));\nInput.displayName = \"Input\";\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, React.TextareaHTMLAttributes<HTMLTextAreaElement>>(({ className, ...props }, ref) => (\n <textarea\n className={cn(\n \"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n ref={ref}\n {...props}\n />\n));\nTextarea.displayName = \"Textarea\";\n\nconst Checkbox = React.forwardRef<HTMLInputElement, React.InputHTMLAttributes<HTMLInputElement>>(({ className, ...props }, ref) => (\n <input type=\"checkbox\" ref={ref} className={cn(\"h-4 w-4 rounded border-gray-300 text-primary focus:ring-primary\", className)} {...props} />\n));\nCheckbox.displayName = \"Checkbox\";\n\n\ninterface JobInputRendererProps {\n jobInputSchema: JobInputSchemaType;\n value: string | number | boolean | number[] | null;\n onChange: (value: string | number | boolean | number[] | null) => void;\n disabled?: boolean;\n}\n\nexport default function JobInputRenderer({\n jobInputSchema,\n value,\n onChange,\n disabled,\n}: JobInputRendererProps) {\n const { id, name, type, data } = jobInputSchema;\n const description = data?.description;\n const placeholder = 'placeholder' in (data || {}) ? (data as any).placeholder : '';\n\n const renderInput = () => {\n switch (type) {\n case ValidJobInputTypes.STRING:\n return (\n <Input\n id={id}\n value={(value as string) || ''}\n onChange={(e) => onChange(e.target.value)}\n placeholder={placeholder}\n disabled={disabled}\n />\n );\n case ValidJobInputTypes.TEXTAREA:\n return (\n <Textarea\n id={id}\n value={(value as string) || ''}\n onChange={(e) => onChange(e.target.value)}\n placeholder={placeholder}\n disabled={disabled}\n />\n );\n case ValidJobInputTypes.NUMBER:\n return (\n <Input\n id={id}\n type=\"number\"\n value={value !== null ? String(value) : ''}\n onChange={(e) => {\n const val = e.target.value;\n onChange(val === '' ? null : Number(val));\n }}\n placeholder={placeholder}\n disabled={disabled}\n />\n );\n case ValidJobInputTypes.BOOLEAN:\n return (\n <div className=\"flex items-center space-x-2\">\n <Checkbox\n id={id}\n checked={!!value}\n onChange={(e) => onChange(e.target.checked)}\n disabled={disabled}\n />\n <label\n htmlFor={id}\n className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n >\n {placeholder || 'Yes'}\n </label>\n </div>\n );\n case ValidJobInputTypes.OPTION:\n const options = (data as any).values || [];\n return (\n <select\n id={id}\n className=\"flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\"\n value={Array.isArray(value) && value.length > 0 ? value[0] : ''} // Simple single select for now\n onChange={(e) => {\n // Assuming single select maps to index for now based on schema definition or simple value\n // The schema definition says number[] for value, suggesting indices\n // But let's verify logic.\n // For now, just passing index if possible or finding index\n const selectedIndex = options.indexOf(e.target.value);\n onChange(selectedIndex >= 0 ? [selectedIndex] : []);\n }}\n disabled={disabled}\n >\n <option value=\"\">Select...</option>\n {options.map((opt: string) => (\n <option key={opt} value={opt}>{opt}</option>\n ))}\n </select>\n );\n case ValidJobInputTypes.FILE:\n return (\n <Input\n id={id}\n type=\"file\"\n disabled={disabled}\n onChange={() => {\n // File handling logic would go here\n // For now, just a placeholder\n }}\n />\n )\n default:\n return <div>Unsupported input type: {type}</div>;\n }\n };\n\n return (\n <div className=\"space-y-2\">\n <div className=\"flex flex-col space-y-1\">\n <Label htmlFor={id}>\n {name}\n {'validations' in jobInputSchema && jobInputSchema.validations?.some((v: any) => v.validation === 'optional' && v.value === 'true') && \n <span className=\"text-muted-foreground font-normal ml-1\">(Optional)</span>\n }\n </Label>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n </div>\n {renderInput()}\n </div>\n );\n}\n\n","import React, { useState, useEffect } from 'react';\nimport JobInputRenderer from './JobInputRenderer';\nimport { JobInputSchemaType, getDefaultValue } from '../lib/job-input-schema';\nimport clsx from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\n// Utility for merging class names\nexport function cn(...inputs: (string | undefined | null | false)[]) {\n return twMerge(clsx(inputs));\n}\n\n// --- Simplified UI Components embedded for library portability ---\n// In a real scenario, you might want to accept these as props or peer dependencies,\n// but for a self-contained library that uses Tailwind, we can provide simple versions.\n\nconst Button = React.forwardRef<HTMLButtonElement, React.ButtonHTMLAttributes<HTMLButtonElement> & { variant?: 'default' | 'outline' | 'destructive' | 'secondary' | 'ghost' | 'link' }>(\n ({ className, variant = 'default', ...props }, ref) => {\n const variants = {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n outline: \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n destructive: \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n };\n \n return (\n <button\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 h-10 px-4 py-2\",\n variants[variant],\n className\n )}\n {...props}\n />\n );\n }\n);\nButton.displayName = \"Button\";\n\nconst Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"rounded-lg border bg-card text-card-foreground shadow-sm\", className)} {...props} />\n));\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex flex-col space-y-1.5 p-6\", className)} {...props} />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLHeadingElement>>(({ className, ...props }, ref) => (\n <h3 ref={ref} className={cn(\"text-2xl font-semibold leading-none tracking-tight\", className)} {...props} />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst Separator = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"shrink-0 bg-border h-[1px] w-full\", className)} {...props} />\n));\nSeparator.displayName = \"Separator\";\n\n// --- Main Component ---\n\nexport interface JobInputsFormRendererProps {\n jobInputSchemas: JobInputSchemaType[];\n onFormDataChange?: (\n formData: Record<string, string | number | boolean | number[] | null>,\n ) => void;\n disabled?: boolean;\n className?: string;\n}\n\nexport default function JobInputsFormRenderer({\n jobInputSchemas,\n onFormDataChange,\n disabled = false,\n className,\n}: JobInputsFormRendererProps) {\n const [formData, setFormData] = useState<\n Record<string, string | number | boolean | number[] | null>\n >({});\n\n // Initialize form data with default values\n useEffect(() => {\n const initialData: Record<\n string,\n string | number | boolean | number[] | null\n > = {};\n jobInputSchemas.forEach((schema) => {\n initialData[schema.id] = getDefaultValue(schema);\n });\n setFormData(initialData);\n }, [jobInputSchemas]);\n\n // Notify parent of form data changes\n useEffect(() => {\n if (onFormDataChange) {\n onFormDataChange(formData);\n }\n }, [formData, onFormDataChange]);\n\n const handleFieldChange = (\n fieldId: string,\n value: string | number | boolean | number[] | null,\n ) => {\n setFormData((prev) => ({\n ...prev,\n [fieldId]: value,\n }));\n };\n\n const handleClear = () => {\n const clearedData: Record<\n string,\n string | number | boolean | number[] | null\n > = {};\n jobInputSchemas.forEach((schema) => {\n clearedData[schema.id] = getDefaultValue(schema);\n });\n setFormData(clearedData);\n };\n\n if (jobInputSchemas.length === 0) {\n return (\n <Card className={className}>\n <CardContent className=\"pt-6\">\n <p className=\"text-sm text-muted-foreground text-center\">\n No input fields defined in the schema.\n </p>\n </CardContent>\n </Card>\n );\n }\n\n return (\n <Card className={cn(\"bg-muted/20\", className)}>\n <CardHeader>\n <CardTitle className=\"text-lg\">Rendered Form</CardTitle>\n <p className=\"text-sm text-muted-foreground\">\n This is how the form will appear in Sokosumi\n </p>\n </CardHeader>\n <CardContent className=\"space-y-6\">\n <form className=\"space-y-4\" onSubmit={(e) => e.preventDefault()}>\n {jobInputSchemas.map((schema, index) => (\n <div key={schema.id}>\n <JobInputRenderer\n jobInputSchema={schema}\n value={formData[schema.id]}\n onChange={(value) => handleFieldChange(schema.id, value)}\n disabled={disabled}\n />\n {index < jobInputSchemas.length - 1 && (\n <Separator className=\"my-4\" />\n )}\n </div>\n ))}\n </form>\n\n <div className=\"flex justify-between items-center pt-4\">\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={handleClear}\n disabled={disabled}\n >\n Clear Form\n </Button>\n\n <div className=\"text-sm text-muted-foreground\">\n {Object.keys(formData).length} field\n {Object.keys(formData).length !== 1 ? 's' : ''}\n </div>\n </div>\n </CardContent>\n </Card>\n );\n}\n\n"]}
|