Reorganiza el routing multi-tenant: funnel por slug, B2B en raíz

- / y /b2b sirven la landing B2B estática (rewrites beforeFiles)
- /{slug} resuelve el funnel del reformista (app/[slug]/page.tsx) con
  branding propio (TenantBrand) y atribución de leads por tenant
- crearLead(slug) y páginas /solicitud usan el tenant del lead
- Panel: edición del slug del funnel + URL pública en /panel/empresa
- Helper de slugs reservados para evitar colisiones con rutas reales

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Carlos Narro
2026-06-01 11:09:44 +02:00
parent e26e6be38b
commit 1a1caaf0df
15 changed files with 268 additions and 86 deletions

View File

@@ -40,7 +40,7 @@ function validateForm(data: FormData): FormErrors {
return errors;
}
export default function ContactForm() {
export default function ContactForm({ slug }: { slug: string }) {
const [formData, setFormData] = useState<FormData>(initialData);
const [consents, setConsents] = useState(initialConsents);
const [errors, setErrors] = useState<FormErrors>({});
@@ -99,7 +99,7 @@ export default function ContactForm() {
setStatus('loading');
setSubmitError(null);
const result = await crearLead({
const result = await crearLead(slug, {
nombre: formData.name,
email: formData.email,
telefono: formData.phone,