Files
simrsx-fe/app/schemas/person-family.schema.ts
T
Munawwirul Jamal 3eb9dde21d Dev cleaning (#106)
2025-10-08 00:03:36 +07:00

34 lines
990 B
TypeScript

import { z } from 'zod'
const PersonFamilySchema = z.object({
relation: z.enum(['mother', 'father', 'guardian', 'emergency_contact']),
name: z
.string({
required_error: 'Mohon lengkapi nama',
})
.min(1, 'Mohon lengkapi nama'),
education: z
.string({
required_error: 'Mohon pilih pendidikan',
})
.min(1, 'Mohon pilih pendidikan'),
occupation: z.string().optional(),
})
const PersonFamiliesSchema = z.discriminatedUnion('shareFamilyData', [
z.object({
shareFamilyData: z.literal('0'),
families: z.array(PersonFamilySchema).optional().default([]),
}),
z.object({
shareFamilyData: z.literal('1'),
families: z.array(PersonFamilySchema).min(1, 'Minimal 1 kontak keluarga'),
}),
])
type PersonFamilyFormData = z.infer<typeof PersonFamilySchema>
type PersonFamiliesFormData = z.infer<typeof PersonFamiliesSchema>
export { PersonFamilySchema, PersonFamiliesSchema }
export type { PersonFamilyFormData, PersonFamiliesFormData }