'use client' // AUTO-GENERATED by mizan - do not edit manually // Regenerate with: npm run schemas // Typed form hooks with Zod validation. // Zod schemas are generated from Django form field definitions. // Client-side validation matches Django constraints (required, max_length, email, etc.) import { z } from 'zod' import { useDjangoFormCore, useDjangoFormsetCore, type DjangoFormState, type DjangoFormsetState, type FormOptions, } from 'mizan' // ============================================================================ // Zod Schemas // ============================================================================ /** * Zod schema for login form * Generated from Django form field definitions */ export const LoginSchema = z.object({ }) /** * Zod schema for signup form * Generated from Django form field definitions */ export const SignupSchema = z.object({ }) /** * Zod schema for add_email form * Generated from Django form field definitions */ export const AddEmailSchema = z.object({ }) /** * Zod schema for contact form * Generated from Django form field definitions */ export const ContactSchema = z.object({ name: z.string().max(100), email: z.string().email('Invalid email address').max(320), message: z.string(), }) /** * Zod schema for item form * Generated from Django form field definitions */ export const ItemSchema = z.object({ label: z.string().max(50), quantity: z.number().int().min(1), }) // ============================================================================ // Form Data Types (inferred from Zod schemas) // ============================================================================ /** Form data type for login, inferred from Zod schema */ export type LoginFormData = z.infer /** Form data type for signup, inferred from Zod schema */ export type SignupFormData = z.infer /** Form data type for add_email, inferred from Zod schema */ export type AddEmailFormData = z.infer /** Form data type for contact, inferred from Zod schema */ export type ContactFormData = z.infer /** Form data type for item, inferred from Zod schema */ export type ItemFormData = z.infer // ============================================================================ // Form Hooks // ============================================================================ /** * Typed form hook for login * * Features: * - Full TypeScript inference for form fields * - Client-side Zod validation (instant feedback) * - Server-side Django validation (authoritative) */ export function useLoginForm( options?: FormOptions ): DjangoFormState { return useDjangoFormCore({ name: 'login', zodSchema: LoginSchema, options, }) } /** * Typed form hook for signup * * Features: * - Full TypeScript inference for form fields * - Client-side Zod validation (instant feedback) * - Server-side Django validation (authoritative) */ export function useSignupForm( options?: FormOptions ): DjangoFormState { return useDjangoFormCore({ name: 'signup', zodSchema: SignupSchema, options, }) } /** * Typed form hook for add_email * * Features: * - Full TypeScript inference for form fields * - Client-side Zod validation (instant feedback) * - Server-side Django validation (authoritative) */ export function useAddEmailForm( options?: FormOptions ): DjangoFormState { return useDjangoFormCore({ name: 'add_email', zodSchema: AddEmailSchema, options, }) } /** * Typed form hook for contact * * Features: * - Full TypeScript inference for form fields * - Client-side Zod validation (instant feedback) * - Server-side Django validation (authoritative) */ export function useContactForm( options?: FormOptions ): DjangoFormState { return useDjangoFormCore({ name: 'contact', zodSchema: ContactSchema, options, }) } /** * Typed form hook for item * * Features: * - Full TypeScript inference for form fields * - Client-side Zod validation (instant feedback) * - Server-side Django validation (authoritative) */ export function useItemForm( options?: FormOptions ): DjangoFormState { return useDjangoFormCore({ name: 'item', zodSchema: ItemSchema, options, }) } /** * Typed formset hook for item */ export function useItemFormset( initialCount?: number, liveValidation?: boolean ): DjangoFormsetState { return useDjangoFormsetCore({ name: 'item', zodSchema: ItemSchema, initialCount, liveValidation, }) } // ============================================================================ // Form Registry // ============================================================================ export const MIZAN_FORMS = { login: { name: 'login', schema: LoginSchema, hook: 'useLoginForm', hasFormset: false, }, signup: { name: 'signup', schema: SignupSchema, hook: 'useSignupForm', hasFormset: false, }, addEmail: { name: 'add_email', schema: AddEmailSchema, hook: 'useAddEmailForm', hasFormset: false, }, contact: { name: 'contact', schema: ContactSchema, hook: 'useContactForm', hasFormset: false, }, item: { name: 'item', schema: ItemSchema, hook: 'useItemForm', hasFormset: true, }, } as const