'use client';

import { AdminFormShell } from '@/components/admin/form-shell';
import { TextField, TextAreaField, FieldsetLocale } from '@/components/admin/fields';
import type { Locale } from '@/i18n/config';

interface AuthorFormValues {
  id?: string;
  slug?: string;
  fr?: { name: string; bio?: string };
  ar?: { name: string; bio?: string };
}

export function AuthorForm({ locale, initial }: { locale: Locale; initial?: AuthorFormValues }) {
  const isEdit = Boolean(initial?.id);

  return (
    <AdminFormShell
      action={isEdit ? `/api/admin/authors/${initial!.id}` : '/api/admin/authors'}
      method={isEdit ? 'PATCH' : 'POST'}
      redirectTo={`/${locale}/admin/authors`}
      submitLabel={isEdit ? 'Enregistrer' : "Créer l'auteur"}
      buildPayload={(form) => {
        const base = {
          translations: {
            fr: { name: form.get('name_fr'), bio: form.get('bio_fr') || undefined },
            ar: { name: form.get('name_ar'), bio: form.get('bio_ar') || undefined }
          }
        };
        return isEdit ? base : { ...base, slug: form.get('slug') };
      }}
    >
      {!isEdit && <TextField name="slug" label="Slug (URL)" required />}

      <FieldsetLocale locale="fr">
        <TextField name="name_fr" label="Nom" required defaultValue={initial?.fr?.name} />
        <TextAreaField name="bio_fr" label="Bio" rows={3} defaultValue={initial?.fr?.bio} />
      </FieldsetLocale>
      <FieldsetLocale locale="ar">
        <TextField name="name_ar" label="الاسم" required defaultValue={initial?.ar?.name} />
        <TextAreaField name="bio_ar" label="السيرة" rows={3} defaultValue={initial?.ar?.bio} />
      </FieldsetLocale>
    </AdminFormShell>
  );
}
