import { useState } from 'react'; import { useNavigate, useParams } from 'react-router-dom'; import { ArrowLeft } from 'lucide-react'; import { Button } from '@components/atoms/Button'; import { Spinner } from '@components/atoms/Spinner'; import { Card, CardHeader, CardTitle, CardContent } from '@components/molecules/Card'; import { Alert } from '@components/molecules/Alert'; import { Breadcrumbs } from '@components/organisms/Breadcrumbs'; import { useToast } from '@components/organisms/Toast'; import { ErrorEmptyState } from '@components/templates/EmptyState'; import { UserForm } from '@features/users/components/UserForm'; import { useUser } from '@features/users/hooks'; import { usersApi } from '@features/users/api'; import type { UpdateUserDto } from '@features/users/types'; export function UserEditPage() { const { id } = useParams<{ id: string }>(); const navigate = useNavigate(); const { showToast } = useToast(); const { user, isLoading, error: fetchError, refresh } = useUser(id); const [isSubmitting, setIsSubmitting] = useState(false); const [error, setError] = useState(null); const handleSubmit = async (data: UpdateUserDto) => { if (!id) return; setIsSubmitting(true); setError(null); try { await usersApi.update(id, data); showToast({ type: 'success', title: 'Usuario actualizado', message: 'Los cambios han sido guardados exitosamente.', }); navigate('/users'); } catch (err) { const message = err instanceof Error ? err.message : 'Error al actualizar usuario'; setError(message); } finally { setIsSubmitting(false); } }; if (isLoading) { return (
); } if (fetchError || !user) { return (
); } return (

Editar usuario

Modifica la información de {user.firstName} {user.lastName}

Información del usuario {error && ( setError(null)} > {error} )} navigate(`/users/${id}`)} isLoading={isSubmitting} />
); } export default UserEditPage;