'use client'; import type { Result } from '@/lib/contracts/Result'; import type { ProfileViewData } from '@/lib/view-data/ProfileViewData'; import { ProfileSettingsTemplate } from '@/templates/ProfileSettingsTemplate'; import { SharedBox, SharedStack, SharedText, SharedIcon, SharedProgressLine } from '@/components/shared/UIComponents'; import { ShieldAlert } from 'lucide-react'; import { useRouter } from 'next/navigation'; import { useState } from 'react'; import { ClientWrapperProps } from '@/lib/contracts/components/ComponentContracts'; interface ProfileSettingsPageClientProps extends ClientWrapperProps { onSave: (updates: { bio?: string; country?: string }) => Promise>; } export function ProfileSettingsPageClient({ viewData, onSave }: ProfileSettingsPageClientProps) { const router = useRouter(); const [isSaving, setIsSaving] = useState(false); const [error, setError] = useState(null); const [bio, setBio] = useState(viewData.driver.bio || ''); const [country, setCountry] = useState(viewData.driver.countryCode); const handleSave = async () => { setIsSaving(true); setError(null); try { const result = await onSave({ bio, country }); if (result.isErr()) { setError(result.getError()); } else { router.refresh(); } } catch (err) { setError(err instanceof Error ? err.message : 'Failed to save settings'); } finally { setIsSaving(false); } }; return ( <> {error && ( Update Failed {error} )} ); }