'use client'; import { useState } from 'react'; import { t } from '@/lib/i18n'; type Row = { name: string; email: string; company: string; status: string }; type Preview = { total: number; valid: number; errors: { row: number; message: string }[]; duplicatesInFile: number[]; sample: Row[] }; type Committed = { imported: number; updated: number; errors: { row: number; message: string }[]; duplicatesInFile: number[] }; const SAMPLE = 'name,email,company,status\nJane Doe,jane@example.com,Acme,lead\nBad Row,not-an-email,Globex,active'; export function ImportWizard({ canImport }: { canImport: boolean }) { const [csv, setCsv] = useState(''); const [preview, setPreview] = useState(null); const [committed, setCommitted] = useState(null); const [busy, setBusy] = useState(false); const [error, setError] = useState(null); async function post(commit: boolean) { setBusy(true); setError(null); try { const res = await fetch('/api/admin/import/customers', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ csv, commit }), }); const data = (await res.json().catch(() => ({}))) as Record; if (!res.ok) { setError((data.error as string) || t('common.error')); return; } if (commit) { setPreview(null); setCommitted(data as unknown as Committed); } else { setCommitted(null); setPreview(data as unknown as Preview); } } finally { setBusy(false); } } async function onFile(event: React.ChangeEvent) { const file = event.target.files?.[0]; if (file) setCsv(await file.text()); } if (!canImport) { return (

{t('admin.importTitle')}

{t('admin.readOnly')}

); } return (

{t('admin.importTitle')}

{t('admin.export')}

{t('admin.importHint')}