UNPKG

prisma-zod-generator

Version:

Prisma 2+ generator to emit Zod schemas from your Prisma schema

57 lines (56 loc) 1.77 kB
/** * PZG Pro - Form UX Generator * DMMF-based implementation for React form generation */ import { ProFeatureBase } from '../../core/ProFeatureBase'; export type FormUILibrary = 'barebones' | 'shadcn' | 'mantine' | 'chakra' | 'mui'; export interface FormUXConfig { outputPath?: string; framework?: 'react-hook-form' | 'formik' | 'react-final-form'; uiLibrary?: FormUILibrary; enableI18n?: boolean; i18nNamespace?: string; defaultValues?: boolean; validation?: 'zod' | 'yup'; generateTests?: boolean; } export interface FormFieldConfig { name: string; type: string; label?: string; placeholder?: string; required?: boolean; defaultValue?: unknown; validation?: string[]; component?: 'input' | 'textarea' | 'select' | 'checkbox' | 'radio' | 'date' | 'file'; options?: Array<{ value: string; label: string; }>; } export interface FormSchema { name: string; fields: FormFieldConfig[]; validationSchema: string; defaultValues: Record<string, unknown>; } export declare class FormUXGenerator extends ProFeatureBase { private config; constructor(context: any, config?: FormUXConfig); protected getFeatureName(): string; protected generateFeature(): Promise<void>; private convertModelToFormSchema; private convertFieldToFormConfig; private getFormComponentType; private generateDefaultValue; private generateReactHookForm; private generateFieldComponent; private generateBarebonesField; private generateValidationHelpers; private generateI18nKeys; private generateFormTests; private generateZodSchemasFile; private mapFieldToZodSchema; private generateIndexFile; private generateFormUXDocumentation; }