Files
NightSpire/web-next/app/[locale]/cookies/page.tsx
T
Inna 579396c34a Rebranding a NightSpire en toda la web
Marca, dominios y correos: UltimoWoW/Nova WoW -> NightSpire, cualquier URL de
esos dominios -> https://www.nightspire.gg y los correos -> consultas@nightspire.gg.
98 sustituciones en 16 ficheros de textos de usuario (messages/, app/, components/).

Assets: logo largo de cabecera y vídeo sustituidos por los de NightSpire (el logo
nuevo es 214x28, igual que el viejo, así que no hace falta tocar el CSS).

Redes: apuntan a las cuentas de NightSpire, tanto en el pie de la web como en el
de los correos (que seguían enlazando a las de NovaWoW desde el porte del diseño).

Cookie de sesión novawow_session -> nightspire_session. Cierra la sesión de todos
los conectados una vez; se asume ahora, recién hecho el cutover.

Ficheros del tema renombrados: novawow-style.css -> nightspire-style.css y
novawow-main-logo-transparent.webp -> nightspire-main-logo-transparent.webp, para
que la marca vieja no quede ni en las rutas.

El foro externo (foro.ultimowow.com) pasa a ser el nuestro: <Link> a /forum, que
respeta el idioma y no abre pestaña nueva.

NO se tocan y es a propósito:
- Los comentarios que nombran AzerothCore: describen el comportamiento REAL del
  core (límite de 12 ítems por correo, convención de baneos, SOAP...). Cambiarlos
  a NightSpire los volvería falsos. Además AzerothCore no aparece en la web: las
  14 menciones son todas comentarios de código.
- El regex de brandify() sigue buscando los nombres VIEJOS: son los que hay
  escritos en las noticias de la BD.
- lib/changelog.ts REPO='Inna/NovaWoW': es la ruta real del repo en Gitea.

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

186 lines
9.7 KiB
TypeScript

import type { Metadata } from 'next'
import { getTranslations } from 'next-intl/server'
import { Link } from '@/i18n/navigation'
import { CookieConsentButtons, ConsentStatus } from '@/components/CookieConsent'
export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise<Metadata> {
const { locale } = await params
const t = await getTranslations({ locale, namespace: 'Legal' })
return { title: t('cookies.title') }
}
export default async function CookiesPage() {
const t = await getTranslations('Legal')
return (
<div className="main-page">
<div className="middle-content">
<div className="body-content">
<div className="title-content">
<h1>{t('cookies.title')}</h1>
</div>
<div className="box-content">
<div className="body-box-content justified">
<p>{t('cookies.p1')}</p>
<br />
<p>{t('cookies.p2')}</p>
<p>{t('cookies.p3')}</p>
<br />
<p>{t('cookies.p4')}</p>
<p>{t('cookies.p5')}</p>
<br />
<p>{t.rich('cookies.p6', { link: (c) => <Link href="/privacy-policy">{c}</Link> })}</p>
<br />
<hr />
<br />
<span>{t('cookies.h1cat')}</span>
<br />
<span className="second-brown">{t('cookies.necessaryTitle')}</span>
<p>{t('cookies.necessaryDesc')}</p>
<table className="uw-cookie-table">
<thead>
<tr>
<th>{t('cookies.thCookie')}</th>
<th>{t('cookies.thProvider')}</th>
<th>{t('cookies.thPurpose')}</th>
<th>{t('cookies.thDuration')}</th>
</tr>
</thead>
<tbody>
<tr><td>PHPSESSID</td><td>NightSpire</td><td>{t('cookies.nPurpose1')}</td><td>{t('cookies.durSession')}</td></tr>
<tr><td>uw_cookie_consent</td><td>NightSpire</td><td>{t('cookies.nPurpose2')}</td><td>{t('cookies.dur1Year')}</td></tr>
<tr><td>cf_clearance</td><td>Cloudflare</td><td>{t('cookies.nPurpose3')}</td><td>{t('cookies.dur1Year')}</td></tr>
<tr><td>__cf_bm</td><td>Cloudflare</td><td>{t('cookies.nPurpose4')}</td><td>{t('cookies.dur30Min')}</td></tr>
<tr><td>_cfuvid</td><td>Cloudflare</td><td>{t('cookies.nPurpose5')}</td><td>{t('cookies.durSession')}</td></tr>
<tr><td>CF_VERIFIED_DEVICE_*</td><td>Cloudflare</td><td>{t('cookies.nPurpose6')}</td><td>{t('cookies.dur30Days')}</td></tr>
<tr><td>_cf_logged_in</td><td>Cloudflare</td><td>{t('cookies.nPurpose7')}</td><td>{t('cookies.durSession')}</td></tr>
<tr><td>cf_chl_*</td><td>Cloudflare Turnstile</td><td>{t('cookies.nPurpose8')}</td><td>{t('cookies.durVariable')}</td></tr>
<tr><td>cf.turnstile.u</td><td>Cloudflare Turnstile</td><td>{t('cookies.nPurpose9')}</td><td>{t('cookies.durPersistent')}</td></tr>
<tr><td>zaraz-consent</td><td>Cloudflare Zaraz</td><td>{t('cookies.nPurpose10')}</td><td>{t('cookies.dur1Year')}</td></tr>
<tr><td>cfz_*</td><td>Cloudflare Zaraz</td><td>{t('cookies.nPurpose11')}</td><td>{t('cookies.durVariable')}</td></tr>
</tbody>
</table>
<p className="third-brown">{t.rich('cookies.cfNote', { link: (c) => <a href="https://www.cloudflare.com/cookie-policy/" target="_blank" rel="noopener">{c}</a> })}</p>
<br />
<span className="second-brown">{t('cookies.prefTitle')}</span>
<p>{t('cookies.prefDesc')}</p>
<table className="uw-cookie-table">
<thead>
<tr>
<th>{t('cookies.thCookie')}</th>
<th>{t('cookies.thProvider')}</th>
<th>{t('cookies.thPurpose')}</th>
<th>{t('cookies.thDuration')}</th>
</tr>
</thead>
<tbody>
<tr><td>comments_sort</td><td>www.nightspire.gg</td><td>{t('cookies.prefPurpose1')}</td><td>{t('cookies.dur1Year')}</td></tr>
<tr><td>wwcomments_sort</td><td>www.nightspire.gg</td><td>{t('cookies.prefPurpose2')}</td><td>{t('cookies.dur1Year')}</td></tr>
<tr><td>temp_default_3dmodel</td><td>www.nightspire.gg</td><td>{t('cookies.prefPurpose3')}</td><td>{t('cookies.dur1Year')}</td></tr>
</tbody>
</table>
<span className="second-brown">{t('cookies.analyticsTitle')}</span>
<p>{t('cookies.analyticsDesc')}</p>
<table className="uw-cookie-table">
<thead>
<tr>
<th>{t('cookies.thCookie')}</th>
<th>{t('cookies.thProvider')}</th>
<th>{t('cookies.thPurpose')}</th>
<th>{t('cookies.thDuration')}</th>
</tr>
</thead>
<tbody>
<tr><td>_ga</td><td>Google Analytics</td><td>{t('cookies.aPurpose1')}</td><td>{t('cookies.dur2Years')}</td></tr>
<tr><td>_ga_*</td><td>Google Analytics</td><td>{t('cookies.aPurpose2')}</td><td>{t('cookies.dur2Years')}</td></tr>
<tr><td>_gid</td><td>Google Analytics</td><td>{t('cookies.aPurpose3')}</td><td>{t('cookies.dur24Hours')}</td></tr>
<tr><td>_gat</td><td>Google Analytics</td><td>{t('cookies.aPurpose4')}</td><td>{t('cookies.dur1Minute')}</td></tr>
<tr><td>sparrow_id</td><td>Cloudflare</td><td>{t('cookies.aPurpose5')}</td><td>{t('cookies.dur1Year')}</td></tr>
</tbody>
</table>
<span className="second-brown">{t('cookies.marketingTitle')}</span>
<p>{t('cookies.marketingDesc')}</p>
<table className="uw-cookie-table">
<thead>
<tr>
<th>{t('cookies.thCookie')}</th>
<th>{t('cookies.thProvider')}</th>
<th>{t('cookies.thPurpose')}</th>
<th>{t('cookies.thDuration')}</th>
</tr>
</thead>
<tbody>
<tr><td>_gcl_*</td><td>Google</td><td>{t('cookies.mPurpose1')}</td><td>{t('cookies.dur90Days')}</td></tr>
<tr><td>IDE</td><td>Google DoubleClick</td><td>{t('cookies.mPurpose2')}</td><td>{t('cookies.dur1Year')}</td></tr>
<tr><td>_fbp</td><td>Facebook (Meta)</td><td>{t('cookies.mPurpose3')}</td><td>{t('cookies.dur3Months')}</td></tr>
<tr><td>_fbc</td><td>Facebook (Meta)</td><td>{t('cookies.mPurpose4')}</td><td>{t('cookies.dur3Months')}</td></tr>
<tr><td>fr</td><td>Facebook (Meta)</td><td>{t('cookies.mPurpose5')}</td><td>{t('cookies.dur3Months')}</td></tr>
<tr><td>AMCV_*</td><td>Adobe Experience Cloud</td><td>{t('cookies.mPurpose6')}</td><td>{t('cookies.dur2Years')}</td></tr>
<tr><td>_q_state_*</td><td>{t('cookies.providerVarious')}</td><td>{t('cookies.mPurpose7')}</td><td>{t('cookies.durVariable')}</td></tr>
</tbody>
</table>
<p className="third-brown">{t('cookies.thirdPartyNote')}</p>
<br />
<span className="second-brown">{t('cookies.embeddedTitle')}</span>
<p>{t('cookies.embeddedDesc')}</p>
<table className="uw-cookie-table">
<thead>
<tr>
<th>{t('cookies.thProvider')}</th>
<th>{t('cookies.thContentType')}</th>
<th>{t('cookies.thMoreInfo')}</th>
</tr>
</thead>
<tbody>
<tr><td>YouTube (Google)</td><td>{t('cookies.embType1')}</td><td><a href="https://policies.google.com/privacy" target="_blank" rel="noopener">{t('cookies.privacyPolicyLink')}</a></td></tr>
<tr><td>Discord</td><td>{t('cookies.embType2')}</td><td><a href="https://discord.com/privacy" target="_blank" rel="noopener">{t('cookies.privacyPolicyLink')}</a></td></tr>
<tr><td>Twitch</td><td>{t('cookies.embType3')}</td><td><a href="https://www.twitch.tv/p/legal/privacy-notice/" target="_blank" rel="noopener">{t('cookies.privacyPolicyLink')}</a></td></tr>
<tr><td>Facebook (Meta)</td><td>{t('cookies.embType4')}</td><td><a href="https://www.facebook.com/privacy/policy/" target="_blank" rel="noopener">{t('cookies.privacyPolicyLink')}</a></td></tr>
</tbody>
</table>
<p className="third-brown">{t('cookies.embeddedNote')}</p>
<br />
<hr />
<br />
<span>{t('cookies.h2cat')}</span>
<p>{t('cookies.deleteP')}</p>
<ul>
<li>{t('cookies.deleteLi1')}</li>
<li>{t('cookies.deleteLi2')}</li>
<li>{t('cookies.deleteLi3')}</li>
<li>{t('cookies.deleteLi4')}</li>
</ul>
<br />
<hr />
<br />
<span>{t('cookies.h3cat')}</span>
<p>{t('cookies.consentP')}</p>
<ConsentStatus />
<CookieConsentButtons />
<br />
<hr />
<br />
<span>{t('cookies.h4cat')}</span>
<p>{t.rich('cookies.moreInfoP', { link: (c) => <Link href="/contact-us">{c}</Link> })}</p>
<br />
<p className="grey-info2">{t('cookies.updated')}</p>
</div>
</div>
</div>
</div>
</div>
)
}