Files
Inna 57dd48e308 fix: /expired-link, el botón descuadrado y el mensaje que no se veía
Dos cosas, y la segunda dejaba la página sin contenido:

- El botón "Solicitar nuevo cambio de correo" salía de 250x100 pegado a la
  derecha. `.back-to-account` es el botón de la CABECERA de una caja (250px de
  ancho, line-height 50, float right); suelto en el CUERPO el float lo pega a un
  lado, y el texto no cabe en 250px, se parte en dos líneas y cada una se lleva
  sus 50px. Se le deja el aspecto del tema pero ajustado a su texto: pasa a
  336x50 y centrado.
- El mensaje rojo ("el enlace ha expirado") NO SE VEÍA: el tema deja
  `.alert-message` con display:none porque es el hueco que rellena y revela el
  JS, y aquí el aviso es estático. Se pone display:block a mano, igual que hacen
  todos los formularios del proyecto. Comprobado que al original le pasa lo
  mismo: su página de enlace caducado enseña el título y el botón, y la
  explicación queda invisible.

Medido en el navegador: botón 336x50, centrado, sin desbordar, y el mensaje
visible.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-15 13:14:47 +00:00

48 lines
2.0 KiB
TypeScript

import type { Metadata } from 'next'
import { getTranslations, setRequestLocale } from 'next-intl/server'
import { Link } from '@/i18n/navigation'
import { PageShell } from '@/components/PageShell'
import { ServiceBox } from '@/components/ServiceBox'
export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise<Metadata> {
const { locale } = await params
const t = await getTranslations({ locale, namespace: 'Misc' })
return { title: t('expiredLink.pageTitle') }
}
/**
* Enlace caducado — réplica del partial Django `partials/expired_link.html`,
* al que se llega desde los correos de confirmación (cambio de correo, alta…).
*
* Con dos erratas del original SIN copiar: tenía un «No hay códigos de promoción
* disponibles» de otra página, y el botón "Solicitar nuevo cambio de correo"
* enlazaba a `expired-link`, o sea a sí misma. Aquí lleva a /change-email, que
* es lo que pretendía.
*/
export default async function ExpiredLinkPage({ params }: { params: Promise<{ locale: string }> }) {
const { locale } = await params
setRequestLocale(locale)
const t = await getTranslations('Misc')
return (
<PageShell title={t('expiredLink.pageTitle')}>
<ServiceBox heading={t('expiredLink.pageTitle')}>
<div className="centered">
<br />
{/* `display:block` a mano, como el resto de formularios: el tema deja
`.alert-message` OCULTA para que la rellene y la revele el JS. Aquí
el aviso es estático y sin esto no se ve NINGUNO — le pasa al
original, que enseña esta página con el mensaje invisible. */}
<div className="alert-message" style={{ display: 'block' }}>
<span className="red-form-response">{t('expiredLink.message')}</span>
</div>
<br />
<Link className="back-to-account" href="/change-email">
{t('expiredLink.requestNew')}
</Link>
</div>
</ServiceBox>
</PageShell>
)
}