import { z } from 'zod';

export type AboutSectionFormValues = {
    title: { id: string; en: string };
    description: { id: string; en: string };
    vision: { id: string; en: string };
    mission: { id: string; en: string };
    is_active: boolean;
};

const translatableField = (max: number) =>
    z.object({
        id: z.string().max(max, `Maksimal ${max} karakter`),
        en: z.string().max(max, `Maksimal ${max} karakter`),
    });

const requiredTranslatable = (field: string, max: number) =>
    translatableField(max).superRefine((value, ctx) => {
        if (!value.id.trim()) {
            ctx.addIssue({ code: 'custom', message: `${field} (ID) wajib diisi`, path: ['id'] });
        }

        if (!value.en.trim()) {
            ctx.addIssue({ code: 'custom', message: `${field} (EN) is required`, path: ['en'] });
        }
    });

// Cast Input = Output (pola sama seperti hero-section.ts) — `z.coerce` tidak dipakai
// di sini, tapi cast menjaga konsistensi tipe resolver zod v4 + react-hook-form.
export const aboutSectionSchema = z.object({
    title: requiredTranslatable('Judul', 255),
    description: requiredTranslatable('Deskripsi', 5000),
    vision: translatableField(1000),
    mission: translatableField(1000),
    is_active: z.boolean(),
}) as unknown as z.ZodType<AboutSectionFormValues, AboutSectionFormValues>;
