'use client'; import { useState } from 'react'; interface ProfileData { displayName: string | null; hometown: string | null; currentLocation: string | null; interests: string[]; language: string; digestPreference: string; directoryVisible: boolean; } interface Props { initial: ProfileData; } export function ProfileForm({ initial }: Props) { const [form, setForm] = useState(initial); const [interestInput, setInterestInput] = useState(''); const [saving, setSaving] = useState(false); const [saved, setSaved] = useState(false); const [error, setError] = useState(null); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setSaving(true); setError(null); setSaved(false); try { const res = await fetch('/api/my/profile', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(form), }); if (!res.ok) throw new Error(await res.text()); setSaved(true); setTimeout(() => setSaved(false), 3000); } catch (err) { setError(err instanceof Error ? err.message : 'Failed to save'); } finally { setSaving(false); } }; const addInterest = () => { const val = interestInput.trim(); if (val && !form.interests.includes(val)) { setForm((f) => ({ ...f, interests: [...f.interests, val] })); } setInterestInput(''); }; const removeInterest = (item: string) => { setForm((f) => ({ ...f, interests: f.interests.filter((i) => i !== item) })); }; return (
setForm((f) => ({ ...f, displayName: e.target.value }))} className="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500" placeholder="Your name" />
setForm((f) => ({ ...f, hometown: e.target.value }))} className="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500" placeholder="e.g. Mumbai" />
setForm((f) => ({ ...f, currentLocation: e.target.value }))} className="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500" placeholder="e.g. Pune" />
{form.interests.map((interest) => ( {interest} ))}
setInterestInput(e.target.value)} onKeyDown={(e) => { if (e.key === 'Enter') { e.preventDefault(); addInterest(); } }} className="flex-1 rounded-lg border border-gray-300 px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500" placeholder="Add interest and press Enter" />
setForm((f) => ({ ...f, directoryVisible: e.target.checked }))} className="w-4 h-4 rounded border-gray-300 text-indigo-600 focus:ring-indigo-500" />
{error &&

{error}

}
); }