admin/validation/profile.ts
alisaza e1eaf5eff5 feat: initial ghabilee-admin backoffice app
Extract admin dashboard from ghabilee-frontend2 into a dedicated Next.js
app for backoffice.ghabilee.ir (no SEO indexing / Clarity).
2026-09-05 13:12:59 +03:30

21 lines
994 B
TypeScript

import { z } from 'zod'
import { texts } from '@/texts'
const v = texts.validation.profile
const person = texts.validation.person
export const UpdateProfileFormValidation = z.object({
firstName: z.string().trim().min(1, person.firstNameRequired).max(100, person.firstNameMax),
lastName: z.string().trim().min(1, person.lastNameRequired).max(100, person.lastNameMax),
// z.enum keeps input/output identical so zodResolver matches useForm<UpdateProfileFormValues>
gender: z.enum(['male', 'female'], { message: person.genderRequired }),
bio: z.string().trim().max(2000, v.bioMax).optional().or(z.literal('')),
// انتخاب استان فعلاً در فرم پروفایل غیرفعال است.
// provinceId: z.string().optional().or(z.literal('')),
cityId: z.string().optional().or(z.literal('')),
defaultAddress: z.string().trim().max(500, v.addressMax).optional().or(z.literal('')),
})
export type UpdateProfileFormValues = z.infer<typeof UpdateProfileFormValidation>