Rediseña panel y auth con la identidad de la landing B2C
- Vista de leads en tarjetas + tabla con toggle (tarjetas por defecto, preferencia persistida) - Galería de trabajos: gestión en /panel/galeria y bloque público en el funnel - Selector de tema por reformista (presets + color de marca opcional) aplicado a la landing - Login y registro rediseñados a pantalla partida 50/50 con foto de reforma - Enlace "Entrar" funcional en la cabecera del funnel; elimina Navbar muerto - Unifica tipografía y botones del panel con los tokens de la landing Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -1,29 +1,73 @@
|
||||
'use client';
|
||||
|
||||
import Link from 'next/link';
|
||||
import { useActionState } from 'react';
|
||||
import { signup } from './actions';
|
||||
import AuthShell from '@/components/auth/AuthShell';
|
||||
|
||||
const inputClass =
|
||||
'rounded-lg border border-gray-300 px-3 py-2.5 text-sm focus:border-gray-900 focus:outline-none focus:ring-1 focus:ring-gray-900';
|
||||
|
||||
export default function SignupPage() {
|
||||
const [error, formAction, pending] = useActionState(signup, null);
|
||||
return (
|
||||
<main className="min-h-screen flex items-center justify-center bg-gray-50 px-6 py-12">
|
||||
<form action={formAction} className="w-full max-w-md bg-white border border-gray-200 rounded-xl p-8 flex flex-col gap-4">
|
||||
<h1 className="text-xl font-black tracking-tight text-black">Empieza gratis 14 días</h1>
|
||||
<p className="text-sm text-gray-500">Sin tarjeta. Configura tu catálogo y recibe leads.</p>
|
||||
<input name="nombre" placeholder="Tu nombre" required className="border border-gray-300 rounded-md px-3 py-2 text-sm" />
|
||||
<input name="empresa" placeholder="Nombre de tu empresa" required className="border border-gray-300 rounded-md px-3 py-2 text-sm" />
|
||||
<input name="email" type="email" placeholder="Email" required className="border border-gray-300 rounded-md px-3 py-2 text-sm" />
|
||||
<input name="provincia" placeholder="Provincia" required className="border border-gray-300 rounded-md px-3 py-2 text-sm" />
|
||||
<input name="password" type="password" placeholder="Contraseña (mín. 8)" required className="border border-gray-300 rounded-md px-3 py-2 text-sm" />
|
||||
<AuthShell
|
||||
photo="/despues-bano.webp"
|
||||
photoAlt="Baño reformado"
|
||||
caption="Empieza a recibir leads en minutos."
|
||||
captionSub="14 días gratis, sin tarjeta. Configura tu catálogo y comparte tu funnel."
|
||||
>
|
||||
<form action={formAction} className="flex flex-col gap-4">
|
||||
<div>
|
||||
<h1 className="text-2xl font-black tracking-tight text-black">Empieza gratis 14 días</h1>
|
||||
<p className="mt-1 text-sm text-gray-500">
|
||||
Sin tarjeta. Configura tu catálogo y recibe leads.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<input name="nombre" placeholder="Tu nombre" required autoComplete="name" className={inputClass} />
|
||||
<input
|
||||
name="empresa"
|
||||
placeholder="Nombre de tu empresa"
|
||||
required
|
||||
autoComplete="organization"
|
||||
className={inputClass}
|
||||
/>
|
||||
<input
|
||||
name="email"
|
||||
type="email"
|
||||
placeholder="Email"
|
||||
required
|
||||
autoComplete="email"
|
||||
className={inputClass}
|
||||
/>
|
||||
<input name="provincia" placeholder="Provincia" required className={inputClass} />
|
||||
<input
|
||||
name="password"
|
||||
type="password"
|
||||
placeholder="Contraseña (mín. 8)"
|
||||
required
|
||||
autoComplete="new-password"
|
||||
className={inputClass}
|
||||
/>
|
||||
<label className="flex items-center gap-2 text-xs text-gray-500">
|
||||
<input name="optInMarketing" type="checkbox" /> Quiero recibir novedades de Reformix
|
||||
<input name="optInMarketing" type="checkbox" className="h-4 w-4 accent-black" /> Quiero
|
||||
recibir novedades de Reformix
|
||||
</label>
|
||||
|
||||
{error && <p className="text-sm text-red-600">{error}</p>}
|
||||
<button type="submit" disabled={pending} className="bg-black text-white rounded-md py-2 font-semibold disabled:opacity-60">
|
||||
|
||||
<button type="submit" disabled={pending} className="btn btn-primary w-full disabled:opacity-60">
|
||||
{pending ? 'Creando cuenta…' : 'Crear cuenta'}
|
||||
</button>
|
||||
<a href="/login" className="text-xs text-gray-400 text-center hover:text-black">Ya tengo cuenta</a>
|
||||
|
||||
<p className="text-center text-sm text-gray-500">
|
||||
¿Ya tienes cuenta?{' '}
|
||||
<Link href="/login" className="font-semibold text-black hover:underline">
|
||||
Entrar
|
||||
</Link>
|
||||
</p>
|
||||
</form>
|
||||
</main>
|
||||
</AuthShell>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user