Kaizen
Browse modulesFormsforms/sharedSchemas and constants

Variable: formStepSchema

const formStepSchema: ZodObject<{
  description: ZodNullable<ZodString>;
  fields: ZodArray<ZodObject<{
     additionalInfo: ZodOptional<ZodObject<{
        body: ZodOptional<ZodString>;
        title: ZodOptional<ZodString>;
     }, $strip>>;
     adoptionStatement: ZodOptional<ZodString>;
     allowedFonts: ZodOptional<ZodArray<ZodString>>;
     asset: ZodOptional<ZodObject<{
        alt: ZodOptional<ZodString>;
        fileId: ZodOptional<ZodString>;
        filename: ZodOptional<ZodString>;
        mimeType: ZodOptional<ZodString>;
        url: ZodOptional<ZodString>;
     }, $strip>>;
     dataSource: ZodOptional<ZodString>;
     defaultValue: ZodOptional<ZodUnion<readonly [ZodString, ZodObject<{
        from: ZodString;
        to: ZodNullable<...>;
     }, $strip>]>>;
     description: ZodOptional<ZodString>;
     fields: ZodOptional<ZodArray<ZodObject<{
        additionalInfo: ZodOptional<ZodObject<..., ...>>;
        adoptionStatement: ZodOptional<ZodString>;
        allowedFonts: ZodOptional<ZodArray<...>>;
        asset: ZodOptional<ZodObject<..., ...>>;
        dataSource: ZodOptional<ZodString>;
        defaultValue: ZodOptional<ZodUnion<...>>;
        description: ZodOptional<ZodString>;
        format: ZodOptional<ZodString>;
        label: ZodDefault<ZodString>;
        maxDate: ZodOptional<ZodString>;
        maxFiles: ZodOptional<ZodNumber>;
        maxLength: ZodOptional<ZodNumber>;
        minDate: ZodOptional<ZodString>;
        name: ZodString;
        options: ZodOptional<ZodArray<...>>;
        placeholder: ZodOptional<ZodString>;
        prefillFrom: ZodOptional<ZodString>;
        required: ZodDefault<ZodBoolean>;
        showRange: ZodOptional<ZodBoolean>;
        showTime: ZodOptional<ZodBoolean>;
        signatureMode: ZodOptional<ZodEnum<...>>;
        timezone: ZodOptional<ZodString>;
        type: ZodDefault<ZodEnum<...>>;
     }, $strip>>>;
     format: ZodOptional<ZodString>;
     label: ZodDefault<ZodString>;
     maxDate: ZodOptional<ZodString>;
     maxFiles: ZodOptional<ZodNumber>;
     maxLength: ZodOptional<ZodNumber>;
     maxRows: ZodOptional<ZodNumber>;
     minDate: ZodOptional<ZodString>;
     minRows: ZodOptional<ZodNumber>;
     name: ZodString;
     options: ZodOptional<ZodArray<ZodUnion<readonly [ZodString, ZodObject<{
        description: ...;
        value: ...;
     }, $strip>]>>>;
     placeholder: ZodOptional<ZodString>;
     prefillFrom: ZodOptional<ZodString>;
     required: ZodDefault<ZodBoolean>;
     showRange: ZodOptional<ZodBoolean>;
     showTime: ZodOptional<ZodBoolean>;
     signatureMode: ZodOptional<ZodEnum<{
        drawn: "drawn";
        typed: "typed";
     }>>;
     timezone: ZodOptional<ZodString>;
     type: ZodDefault<ZodEnum<{
        checkbox: "checkbox";
        date: "date";
        email: "email";
        field-array: "field-array";
        file: "file";
        file-download: "file-download";
        image: "image";
        multiselect: "multiselect";
        number: "number";
        phone: "phone";
        radio-group: "radio-group";
        section-header: "section-header";
        section-unset: "section-unset";
        select: "select";
        signature: "signature";
        signature-adopted: "signature-adopted";
        text: "text";
        textarea: "textarea";
        url: "url";
     }>>;
  }, $strip>>;
  formSchemaVersionId: ZodUUID;
  id: ZodUUID;
  key: ZodString;
  label: ZodNullable<ZodString>;
}, $strip>;

Defined in: shared/forms/steps.ts:15

Canonical persistent shape of a form step. Mirrors the form_steps row exactly — label and description are nullable (always present, may be null) so a Prisma row is structurally assignable to this DTO after the single fields JSON widening done by toFormStepDto.