'use client'; import { useState, useEffect } from 'react'; import { useLanguage } from '@/context/LanguageContext'; import { useAuth } from '@/context/AuthContext'; import Card from '@/components/ui/Card'; import Button from '@/components/ui/Button'; import Input from '@/components/ui/Input'; import { dashboardApi, UserProfile } from '@/lib/api'; import toast from 'react-hot-toast'; interface ProfileTabProps { onUpdate?: () => void; } export default function ProfileTab({ onUpdate }: ProfileTabProps) { const { locale: language } = useLanguage(); const { updateUser, user } = useAuth(); const [profile, setProfile] = useState(null); const [loading, setLoading] = useState(true); const [saving, setSaving] = useState(false); const [formData, setFormData] = useState({ name: '', phone: '', languagePreference: '', rucNumber: '', }); useEffect(() => { loadProfile(); }, []); const loadProfile = async () => { try { const res = await dashboardApi.getProfile(); setProfile(res.profile); setFormData({ name: res.profile.name || '', phone: res.profile.phone || '', languagePreference: res.profile.languagePreference || '', rucNumber: res.profile.rucNumber || '', }); } catch (error) { toast.error(language === 'es' ? 'Error al cargar perfil' : 'Failed to load profile'); } finally { setLoading(false); } }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setSaving(true); try { const res = await dashboardApi.updateProfile(formData); toast.success(language === 'es' ? 'Perfil actualizado' : 'Profile updated'); // Update auth context if (user) { updateUser({ ...user, name: formData.name, phone: formData.phone, languagePreference: formData.languagePreference, rucNumber: formData.rucNumber, }); } if (onUpdate) onUpdate(); } catch (error: any) { toast.error(error.message || (language === 'es' ? 'Error al actualizar' : 'Update failed')); } finally { setSaving(false); } }; if (loading) { return (
); } return (
{/* Account Info Card */}

{language === 'es' ? 'Información de la Cuenta' : 'Account Information'}

Email {profile?.email}
{language === 'es' ? 'Estado de Cuenta' : 'Account Status'} {profile?.accountStatus === 'active' ? (language === 'es' ? 'Activo' : 'Active') : profile?.accountStatus}
{language === 'es' ? 'Miembro Desde' : 'Member Since'} {profile?.memberSince ? new Date(profile.memberSince).toLocaleDateString( language === 'es' ? 'es-ES' : 'en-US', { year: 'numeric', month: 'long', day: 'numeric', timeZone: 'America/Asuncion' } ) : '-'}
{language === 'es' ? 'Días de Membresía' : 'Membership Days'} {profile?.membershipDays || 0}
{/* Edit Profile Form */}

{language === 'es' ? 'Editar Perfil' : 'Edit Profile'}

setFormData({ ...formData, name: e.target.value })} required /> setFormData({ ...formData, phone: e.target.value })} />
setFormData({ ...formData, rucNumber: e.target.value })} placeholder={language === 'es' ? 'Opcional' : 'Optional'} />

{language === 'es' ? 'Tu número de RUC paraguayo para facturas fiscales' : 'Your Paraguayan RUC number for fiscal invoices'}

{/* Email Change Notice */}

{language === 'es' ? 'Cambiar Email' : 'Change Email'}

{language === 'es' ? 'Para cambiar tu dirección de email, por favor contacta al soporte.' : 'To change your email address, please contact support.'}

); }