Rebranding: sitios de voto, nota legal, prefijo uw->ns y repo renombrado

Sitios de voto: los 4 apuntaban a las fichas de UltimoWoW en los rankings con
SUS ids (Gtop100 94649, pingUsername 91402, etc.). No era cosmética: cada voto
de nuestros jugadores subía a UltimoWoW en el ranking. Se cambian nombre e ids
por un 236588 de relleno, así el enlace deja de acreditar a otro servidor. Las
fichas reales de NightSpire están por crear; entonces habrá que poner sus ids.

Nota legal: decía "Error 404 es la empresa que representa el servicio", heredado
de ultimowow. Al renombrar la marca pasaba a afirmar que una empresa ajena
representa a NightSpire, lo cual es falso. Se quita la empresa en ES y EN.

Prefijo uw- (de UltimoWoW) -> ns-: 100 identificadores en 11 ficheros (clases
CSS, ids de formulario, eventos y la cookie de consentimiento, que pasa a
ns_cookie_consent; a los usuarios les reaparecerá el aviso una vez). Se comprobó
antes que el CSS del tema no define ninguna clase uw-, así que no rompe estilos.
btn-ns-form y ns-cookie-btn-customize se usan sin estar definidas, pero ya era
así antes del cambio: eran clases muertas.

Repo de Gitea renombrado Inna/NovaWoW -> Inna/NightSpire (era la marca vieja más
visible de /changelogs, que forma la URL de cada commit). Gitea redirige la URL
antigua con 301. Se actualizan el remoto y lib/changelog.ts.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-15 15:28:29 +00:00
parent 579396c34a
commit 6f52d325a6
14 changed files with 95 additions and 95 deletions
+6 -6
View File
@@ -37,7 +37,7 @@ export default async function CookiesPage() {
<span className="second-brown">{t('cookies.necessaryTitle')}</span> <span className="second-brown">{t('cookies.necessaryTitle')}</span>
<p>{t('cookies.necessaryDesc')}</p> <p>{t('cookies.necessaryDesc')}</p>
<table className="uw-cookie-table"> <table className="ns-cookie-table">
<thead> <thead>
<tr> <tr>
<th>{t('cookies.thCookie')}</th> <th>{t('cookies.thCookie')}</th>
@@ -48,7 +48,7 @@ export default async function CookiesPage() {
</thead> </thead>
<tbody> <tbody>
<tr><td>PHPSESSID</td><td>NightSpire</td><td>{t('cookies.nPurpose1')}</td><td>{t('cookies.durSession')}</td></tr> <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>ns_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_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>__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>_cfuvid</td><td>Cloudflare</td><td>{t('cookies.nPurpose5')}</td><td>{t('cookies.durSession')}</td></tr>
@@ -66,7 +66,7 @@ export default async function CookiesPage() {
<span className="second-brown">{t('cookies.prefTitle')}</span> <span className="second-brown">{t('cookies.prefTitle')}</span>
<p>{t('cookies.prefDesc')}</p> <p>{t('cookies.prefDesc')}</p>
<table className="uw-cookie-table"> <table className="ns-cookie-table">
<thead> <thead>
<tr> <tr>
<th>{t('cookies.thCookie')}</th> <th>{t('cookies.thCookie')}</th>
@@ -85,7 +85,7 @@ export default async function CookiesPage() {
<span className="second-brown">{t('cookies.analyticsTitle')}</span> <span className="second-brown">{t('cookies.analyticsTitle')}</span>
<p>{t('cookies.analyticsDesc')}</p> <p>{t('cookies.analyticsDesc')}</p>
<table className="uw-cookie-table"> <table className="ns-cookie-table">
<thead> <thead>
<tr> <tr>
<th>{t('cookies.thCookie')}</th> <th>{t('cookies.thCookie')}</th>
@@ -106,7 +106,7 @@ export default async function CookiesPage() {
<span className="second-brown">{t('cookies.marketingTitle')}</span> <span className="second-brown">{t('cookies.marketingTitle')}</span>
<p>{t('cookies.marketingDesc')}</p> <p>{t('cookies.marketingDesc')}</p>
<table className="uw-cookie-table"> <table className="ns-cookie-table">
<thead> <thead>
<tr> <tr>
<th>{t('cookies.thCookie')}</th> <th>{t('cookies.thCookie')}</th>
@@ -132,7 +132,7 @@ export default async function CookiesPage() {
<span className="second-brown">{t('cookies.embeddedTitle')}</span> <span className="second-brown">{t('cookies.embeddedTitle')}</span>
<p>{t('cookies.embeddedDesc')}</p> <p>{t('cookies.embeddedDesc')}</p>
<table className="uw-cookie-table"> <table className="ns-cookie-table">
<thead> <thead>
<tr> <tr>
<th>{t('cookies.thProvider')}</th> <th>{t('cookies.thProvider')}</th>
@@ -53,7 +53,7 @@ export function SecurityTokenForm({ initialDate }: { initialDate: string | null
<p>{t('requestDateLabel')}</p> <p>{t('requestDateLabel')}</p>
<p><span className="yellow-info">{date ? formatDate(date) : t('never')}</span></p> <p><span className="yellow-info">{date ? formatDate(date) : t('never')}</span></p>
<br /> <br />
<form id="uw-sec-token-form" onSubmit={request} acceptCharset="utf-8"> <form id="ns-sec-token-form" onSubmit={request} acceptCharset="utf-8">
<button <button
className="sec-token-button" className="sec-token-button"
type="submit" type="submit"
+40 -40
View File
@@ -209,38 +209,38 @@ textarea:focus {
} }
/* Declaración de cookies: tablas y botones de consentimiento. */ /* Declaración de cookies: tablas y botones de consentimiento. */
.uw-cookie-table { .ns-cookie-table {
width: 100%; width: 100%;
border-collapse: collapse; border-collapse: collapse;
margin: 12px 0 16px; margin: 12px 0 16px;
font-size: 15px; font-size: 15px;
} }
.uw-cookie-table th, .ns-cookie-table th,
.uw-cookie-table td { .ns-cookie-table td {
border: 1px solid #352e2b; border: 1px solid #352e2b;
padding: 8px 10px; padding: 8px 10px;
text-align: left; text-align: left;
vertical-align: top; vertical-align: top;
} }
.uw-cookie-table th { .ns-cookie-table th {
background: hsla(0, 0%, 100%, 0.05); background: hsla(0, 0%, 100%, 0.05);
color: #ebdec2; color: #ebdec2;
text-transform: uppercase; text-transform: uppercase;
font-size: 13px; font-size: 13px;
} }
.uw-cookie-table td { .ns-cookie-table td {
color: #b1997f; color: #b1997f;
} }
.uw-cookie-table a { .ns-cookie-table a {
color: #2471a9; color: #2471a9;
} }
.uw-consent-buttons { .ns-consent-buttons {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
gap: 12px; gap: 12px;
margin: 12px 0; margin: 12px 0;
} }
.btn-uw { .btn-ns {
border: 2px solid #352e2b; border: 2px solid #352e2b;
background: hsla(0, 0%, 100%, 0.05); background: hsla(0, 0%, 100%, 0.05);
color: #ebdec2; color: #ebdec2;
@@ -249,21 +249,21 @@ textarea:focus {
text-transform: uppercase; text-transform: uppercase;
transition: 0.3s; transition: 0.3s;
} }
.btn-uw:hover { .btn-ns:hover {
background: hsla(0, 0%, 100%, 0.1); background: hsla(0, 0%, 100%, 0.1);
color: #fff; color: #fff;
} }
.btn-uw-secondary { .btn-ns-secondary {
border-color: #5c2b2b; border-color: #5c2b2b;
color: #d98c8c; color: #d98c8c;
} }
.btn-uw-secondary:hover { .btn-ns-secondary:hover {
background: hsla(0, 60%, 30%, 0.15); background: hsla(0, 60%, 30%, 0.15);
color: #fff; color: #fff;
} }
/* Banner de consentimiento de cookies (fijo abajo). */ /* Banner de consentimiento de cookies (fijo abajo). */
.uw-cookie-content { .ns-cookie-content {
position: fixed; position: fixed;
left: 0; left: 0;
right: 0; right: 0;
@@ -279,29 +279,29 @@ textarea:focus {
border-top: 2px solid #4a3320; border-top: 2px solid #4a3320;
box-shadow: 0 -4px 24px rgba(0, 0, 0, 0.55); box-shadow: 0 -4px 24px rgba(0, 0, 0, 0.55);
} }
.uw-cookie-text { .ns-cookie-text {
flex: 1 1 420px; flex: 1 1 420px;
} }
.uw-cookie-text h3 { .ns-cookie-text h3 {
color: #d79602; color: #d79602;
margin-bottom: 6px; margin-bottom: 6px;
} }
.uw-cookie-text p { .ns-cookie-text p {
color: #b1997f; color: #b1997f;
font-size: 14px; font-size: 14px;
line-height: 20px; line-height: 20px;
} }
.uw-cookie-link { .ns-cookie-link {
display: inline-block; display: inline-block;
margin-top: 6px; margin-top: 6px;
color: #2471a9; color: #2471a9;
} }
.uw-cookie-actions { .ns-cookie-actions {
display: flex; display: flex;
gap: 10px; gap: 10px;
flex-wrap: wrap; flex-wrap: wrap;
} }
.uw-cookie-btn { .ns-cookie-btn {
border: 2px solid #352e2b; border: 2px solid #352e2b;
background: hsla(0, 0%, 100%, 0.05); background: hsla(0, 0%, 100%, 0.05);
color: #ebdec2; color: #ebdec2;
@@ -311,102 +311,102 @@ textarea:focus {
font-size: 14px; font-size: 14px;
transition: 0.3s; transition: 0.3s;
} }
.uw-cookie-btn:hover { .ns-cookie-btn:hover {
background: hsla(0, 0%, 100%, 0.1); background: hsla(0, 0%, 100%, 0.1);
color: #fff; color: #fff;
} }
.uw-cookie-btn-accept { .ns-cookie-btn-accept {
border-color: #b17c02; border-color: #b17c02;
color: #f0b93f; color: #f0b93f;
} }
.uw-cookie-btn-accept:hover { .ns-cookie-btn-accept:hover {
background: hsla(40, 90%, 45%, 0.15); background: hsla(40, 90%, 45%, 0.15);
color: #fff; color: #fff;
} }
.uw-cookie-btn-reject { .ns-cookie-btn-reject {
border-color: #5c2b2b; border-color: #5c2b2b;
color: #d98c8c; color: #d98c8c;
} }
.uw-cookie-btn-save { .ns-cookie-btn-save {
border-color: #b17c02; border-color: #b17c02;
color: #f0b93f; color: #f0b93f;
} }
.uw-cookie-btn-save:hover { .ns-cookie-btn-save:hover {
background: hsla(40, 90%, 45%, 0.15); background: hsla(40, 90%, 45%, 0.15);
color: #fff; color: #fff;
} }
/* Panel «Personalizar» del banner (checkboxes por categoría). */ /* Panel «Personalizar» del banner (checkboxes por categoría). */
.uw-cookie-details { .ns-cookie-details {
margin-top: 14px; margin-top: 14px;
padding-top: 12px; padding-top: 12px;
border-top: 1px solid #352e2b; border-top: 1px solid #352e2b;
} }
.uw-cookie-category { .ns-cookie-category {
margin-bottom: 10px; margin-bottom: 10px;
} }
.uw-cookie-category label { .ns-cookie-category label {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 8px; gap: 8px;
cursor: pointer; cursor: pointer;
} }
.uw-cookie-category input[type='checkbox'] { .ns-cookie-category input[type='checkbox'] {
width: 16px; width: 16px;
height: 16px; height: 16px;
accent-color: #d79602; accent-color: #d79602;
cursor: pointer; cursor: pointer;
} }
.uw-cookie-category input[type='checkbox']:disabled { .ns-cookie-category input[type='checkbox']:disabled {
cursor: default; cursor: default;
} }
.uw-cookie-cat-name { .ns-cookie-cat-name {
color: #ebdec2; color: #ebdec2;
font-size: 15px; font-size: 15px;
} }
.uw-cookie-category p { .ns-cookie-category p {
color: #b1997f; color: #b1997f;
font-size: 13px; font-size: 13px;
margin: 2px 0 0 24px; margin: 2px 0 0 24px;
line-height: 18px; line-height: 18px;
} }
.uw-cookie-actions-detail { .ns-cookie-actions-detail {
margin-top: 8px; margin-top: 8px;
} }
/* Panel «Tu estado de consentimiento» en /cookies (datos de la API de Zaraz). */ /* Panel «Tu estado de consentimiento» en /cookies (datos de la API de Zaraz). */
.uw-consent-status { .ns-consent-status {
border: 1px solid #352e2b; border: 1px solid #352e2b;
padding: 12px 14px; padding: 12px 14px;
margin: 12px 0; margin: 12px 0;
} }
.uw-consent-status .uw-consent-source { .ns-consent-status .ns-consent-source {
font-size: 13px; font-size: 13px;
color: #7e8d09; color: #7e8d09;
margin-bottom: 8px; margin-bottom: 8px;
} }
.uw-consent-status ul { .ns-consent-status ul {
list-style: none; list-style: none;
padding: 0; padding: 0;
margin: 0; margin: 0;
} }
.uw-consent-status li { .ns-consent-status li {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
gap: 12px; gap: 12px;
padding: 4px 0; padding: 4px 0;
border-bottom: 1px solid #241812; border-bottom: 1px solid #241812;
} }
.uw-consent-status li:last-child { .ns-consent-status li:last-child {
border-bottom: 0; border-bottom: 0;
} }
.uw-consent-on { .ns-consent-on {
color: #6aa84f; color: #6aa84f;
} }
.uw-consent-off { .ns-consent-off {
color: #cc5b5b; color: #cc5b5b;
} }
.uw-consent-always { .ns-consent-always {
color: #b1997f; color: #b1997f;
} }
+1 -1
View File
@@ -84,7 +84,7 @@ export function ClientDownload() {
<hr /> <hr />
<br /> <br />
<div className="centered"> <div className="centered">
<form name="uw-client-dowload" id="uw-client-download" autoComplete="off" onSubmit={handleSubmit}> <form name="ns-client-dowload" id="ns-client-download" autoComplete="off" onSubmit={handleSubmit}>
<p><span>{t('clientDownload.languageLabel')}</span></p> <p><span>{t('clientDownload.languageLabel')}</span></p>
<br /> <br />
<select <select
+32 -32
View File
@@ -36,18 +36,18 @@ export const CONSENT_CATEGORIES: readonly Category[] = [
] ]
type Consent = Record<string, boolean> type Consent = Record<string, boolean>
const CONSENT_COOKIE = 'uw_cookie_consent' const CONSENT_COOKIE = 'ns_cookie_consent'
const CONSENT_EVENT = 'uw:consentchange' const CONSENT_EVENT = 'ns:consentchange'
const SHOW_EVENT = 'uw:showbanner' const SHOW_EVENT = 'ns:showbanner'
function zaraz(): ZarazConsent | undefined { function zaraz(): ZarazConsent | undefined {
return typeof window !== 'undefined' ? window.zaraz?.consent : undefined return typeof window !== 'undefined' ? window.zaraz?.consent : undefined
} }
/** Lee la preferencia guardada en la cookie uw_cookie_consent. */ /** Lee la preferencia guardada en la cookie ns_cookie_consent. */
function readConsent(): Consent | null { function readConsent(): Consent | null {
if (typeof document === 'undefined') return null if (typeof document === 'undefined') return null
const m = document.cookie.match(/(?:^|; )uw_cookie_consent=([^;]*)/) const m = document.cookie.match(/(?:^|; )ns_cookie_consent=([^;]*)/)
if (!m) return null if (!m) return null
try { try {
return JSON.parse(decodeURIComponent(m[1])) as Consent return JSON.parse(decodeURIComponent(m[1])) as Consent
@@ -138,45 +138,45 @@ export function CookieBanner() {
} }
return ( return (
<div className="uw-cookie-content" role="dialog" aria-label={t('cookie.dialogLabel')}> <div className="ns-cookie-content" role="dialog" aria-label={t('cookie.dialogLabel')}>
<div className="uw-cookie-text"> <div className="ns-cookie-text">
<h3>{t('cookie.title')}</h3> <h3>{t('cookie.title')}</h3>
<p>{t('cookie.description')}</p> <p>{t('cookie.description')}</p>
<Link href="/cookies" className="uw-cookie-link">{t('cookie.policyLink')}</Link> <Link href="/cookies" className="ns-cookie-link">{t('cookie.policyLink')}</Link>
{details && ( {details && (
<div className="uw-cookie-details" style={{ display: 'block' }}> <div className="ns-cookie-details" style={{ display: 'block' }}>
<div className="uw-cookie-category"> <div className="ns-cookie-category">
<label> <label>
<input type="checkbox" checked disabled readOnly /> <input type="checkbox" checked disabled readOnly />
<span className="uw-cookie-cat-name">{t('cookie.catNecessary')}</span> <span className="ns-cookie-cat-name">{t('cookie.catNecessary')}</span>
</label> </label>
<p>{t('cookie.descNecessary')}</p> <p>{t('cookie.descNecessary')}</p>
</div> </div>
<div className="uw-cookie-category"> <div className="ns-cookie-category">
<label> <label>
<input type="checkbox" id="uw-cookie-analytics" checked={!!prefs.analytics} onChange={(e) => setPrefs((s) => ({ ...s, analytics: e.target.checked }))} /> <input type="checkbox" id="ns-cookie-analytics" checked={!!prefs.analytics} onChange={(e) => setPrefs((s) => ({ ...s, analytics: e.target.checked }))} />
<span className="uw-cookie-cat-name">{t('cookie.catAnalytics')}</span> <span className="ns-cookie-cat-name">{t('cookie.catAnalytics')}</span>
</label> </label>
<p>{t('cookie.descAnalytics')}</p> <p>{t('cookie.descAnalytics')}</p>
</div> </div>
<div className="uw-cookie-category"> <div className="ns-cookie-category">
<label> <label>
<input type="checkbox" id="uw-cookie-marketing" checked={!!prefs.marketing} onChange={(e) => setPrefs((s) => ({ ...s, marketing: e.target.checked }))} /> <input type="checkbox" id="ns-cookie-marketing" checked={!!prefs.marketing} onChange={(e) => setPrefs((s) => ({ ...s, marketing: e.target.checked }))} />
<span className="uw-cookie-cat-name">{t('cookie.catMarketing')}</span> <span className="ns-cookie-cat-name">{t('cookie.catMarketing')}</span>
</label> </label>
<p>{t('cookie.descMarketing')}</p> <p>{t('cookie.descMarketing')}</p>
</div> </div>
<div className="uw-cookie-actions-detail"> <div className="ns-cookie-actions-detail">
<button type="button" className="uw-cookie-btn uw-cookie-btn-save" data-action="save" onClick={savePrefs}>{t('cookie.savePrefs')}</button> <button type="button" className="ns-cookie-btn ns-cookie-btn-save" data-action="save" onClick={savePrefs}>{t('cookie.savePrefs')}</button>
</div> </div>
</div> </div>
)} )}
</div> </div>
<div className="uw-cookie-actions"> <div className="ns-cookie-actions">
<button type="button" className="uw-cookie-btn uw-cookie-btn-reject" data-action="reject" onClick={() => { rejectAll(); setVisible(false) }}>{t('cookie.reject')}</button> <button type="button" className="ns-cookie-btn ns-cookie-btn-reject" data-action="reject" onClick={() => { rejectAll(); setVisible(false) }}>{t('cookie.reject')}</button>
<button type="button" className="uw-cookie-btn uw-cookie-btn-customize" data-action="customize" onClick={() => setDetails((v) => !v)}>{t('cookie.customize')}</button> <button type="button" className="ns-cookie-btn ns-cookie-btn-customize" data-action="customize" onClick={() => setDetails((v) => !v)}>{t('cookie.customize')}</button>
<button type="button" className="uw-cookie-btn uw-cookie-btn-accept" data-action="accept" onClick={() => { acceptAll(); setVisible(false) }}>{t('cookie.acceptAll')}</button> <button type="button" className="ns-cookie-btn ns-cookie-btn-accept" data-action="accept" onClick={() => { acceptAll(); setVisible(false) }}>{t('cookie.acceptAll')}</button>
</div> </div>
</div> </div>
) )
@@ -191,11 +191,11 @@ export function CookieConsentButtons() {
window.UWCookies = { showBanner, revokeConsent, acceptAll, rejectAll } window.UWCookies = { showBanner, revokeConsent, acceptAll, rejectAll }
}, []) }, [])
return ( return (
<div className="uw-consent-buttons"> <div className="ns-consent-buttons">
<button type="button" onClick={showBanner} className="btn-uw btn-uw-form"> <button type="button" onClick={showBanner} className="btn-ns btn-ns-form">
{t('cookie.changeConsent')} {t('cookie.changeConsent')}
</button> </button>
<button type="button" onClick={revokeConsent} className="btn-uw btn-uw-form btn-uw-secondary"> <button type="button" onClick={revokeConsent} className="btn-ns btn-ns-form btn-ns-secondary">
{t('cookie.revokeConsent')} {t('cookie.revokeConsent')}
</button> </button>
</div> </div>
@@ -204,7 +204,7 @@ export function CookieConsentButtons() {
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// Panel «Tu estado de consentimiento»: muestra los datos de la API de Zaraz // Panel «Tu estado de consentimiento»: muestra los datos de la API de Zaraz
// (o, si Zaraz no está, la preferencia guardada en la cookie uw_cookie_consent). // (o, si Zaraz no está, la preferencia guardada en la cookie ns_cookie_consent).
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
export function ConsentStatus() { export function ConsentStatus() {
const t = useTranslations('UI') const t = useTranslations('UI')
@@ -242,8 +242,8 @@ export function ConsentStatus() {
} }
return ( return (
<div className="uw-consent-status"> <div className="ns-consent-status">
<p className="uw-consent-source"> <p className="ns-consent-source">
{zarazData {zarazData
? t('cookie.statusZaraz') ? t('cookie.statusZaraz')
: values : values
@@ -256,19 +256,19 @@ export function ConsentStatus() {
Object.entries(values as Consent).map(([purpose, granted]) => ( Object.entries(values as Consent).map(([purpose, granted]) => (
<li key={purpose}> <li key={purpose}>
<span>{purpose}</span> <span>{purpose}</span>
<span className={granted ? 'uw-consent-on' : 'uw-consent-off'}> <span className={granted ? 'ns-consent-on' : 'ns-consent-off'}>
{granted ? t('cookie.accepted') : t('cookie.rejected')} {granted ? t('cookie.accepted') : t('cookie.rejected')}
</span> </span>
</li> </li>
)) ))
) : ( ) : (
// Categorías locales (cookie uw_cookie_consent). // Categorías locales (cookie ns_cookie_consent).
CONSENT_CATEGORIES.map((cat) => { CONSENT_CATEGORIES.map((cat) => {
const on = cat.always || Boolean(values?.[cat.key]) const on = cat.always || Boolean(values?.[cat.key])
return ( return (
<li key={cat.key}> <li key={cat.key}>
<span>{catLabel[cat.key] ?? cat.label}</span> <span>{catLabel[cat.key] ?? cat.label}</span>
<span className={cat.always ? 'uw-consent-always' : on ? 'uw-consent-on' : 'uw-consent-off'}> <span className={cat.always ? 'ns-consent-always' : on ? 'ns-consent-on' : 'ns-consent-off'}>
{cat.always ? t('cookie.alwaysOn') : values ? (on ? t('cookie.accepted') : t('cookie.rejected')) : '—'} {cat.always ? t('cookie.alwaysOn') : values ? (on ? t('cookie.accepted') : t('cookie.rejected')) : '—'}
</span> </span>
</li> </li>
+1 -1
View File
@@ -132,7 +132,7 @@ export function QuestTrackerForm({ characters, options }: { characters: QuestCha
return ( return (
<div className="centered"> <div className="centered">
<form noValidate id="uw-quest-form" onSubmit={handleSubmit} acceptCharset="utf-8"> <form noValidate id="ns-quest-form" onSubmit={handleSubmit} acceptCharset="utf-8">
<CharacterSelect characters={characters} value={character} onChange={onCharacter} placeholder={t('quest.selectPlaceholder')} /> <CharacterSelect characters={characters} value={character} onChange={onCharacter} placeholder={t('quest.selectPlaceholder')} />
<br /> <br />
<select value={option} onChange={(e) => setOption(e.target.value)} required disabled={!selected}> <select value={option} onChange={(e) => setOption(e.target.value)} required disabled={!selected}>
+1 -1
View File
@@ -81,7 +81,7 @@ export function RenameGuildForm({ guilds, price, pdBalance }: { guilds: GmGuild[
return ( return (
<div className="centered"> <div className="centered">
<form noValidate id="uw-rename-guild-form" onSubmit={handleSubmit} acceptCharset="utf-8"> <form noValidate id="ns-rename-guild-form" onSubmit={handleSubmit} acceptCharset="utf-8">
<table className="middle-center-table"> <table className="middle-center-table">
<tbody> <tbody>
<tr> <tr>
+1 -1
View File
@@ -78,7 +78,7 @@ export function RestoreCharacterForm({ characters }: { characters: DeletedCharac
return ( return (
<div className="centered"> <div className="centered">
<form noValidate id="uw-restore-form" onSubmit={handleSubmit} acceptCharset="utf-8"> <form noValidate id="ns-restore-form" onSubmit={handleSubmit} acceptCharset="utf-8">
<select className={selectedCss} value={guid} onChange={(e) => setGuid(e.target.value)} required> <select className={selectedCss} value={guid} onChange={(e) => setGuid(e.target.value)} required>
<option value="" disabled>{t('restoreChar.selectPlaceholder')}</option> <option value="" disabled>{t('restoreChar.selectPlaceholder')}</option>
{characters.map((c) => ( {characters.map((c) => (
+1 -1
View File
@@ -111,7 +111,7 @@ export function RestoreItemsForm({ characters, price, pdBalance }: { characters:
<div className="centered"> <div className="centered">
{items === null ? ( {items === null ? (
<div id="char-selection"> <div id="char-selection">
<form id="uw-search-items-form" onSubmit={search} acceptCharset="utf-8"> <form id="ns-search-items-form" onSubmit={search} acceptCharset="utf-8">
<CharacterSelect characters={characters} value={character} onChange={setCharacter} placeholder={t('restoreItems.selectPlaceholder')} /> <CharacterSelect characters={characters} value={character} onChange={setCharacter} placeholder={t('restoreItems.selectPlaceholder')} />
<br /> <br />
<Turnstile key={captchaKey} onVerify={setCaptcha} /> <Turnstile key={captchaKey} onVerify={setCaptcha} />
+1 -1
View File
@@ -91,7 +91,7 @@ export function TransferForm({ characters, price, pdBalance }: { characters: Cha
return ( return (
<div className="centered"> <div className="centered">
<form noValidate id="uw-transfer-character-form" onSubmit={handleSubmit} acceptCharset="utf-8"> <form noValidate id="ns-transfer-character-form" onSubmit={handleSubmit} acceptCharset="utf-8">
<CharacterSelect characters={characters} value={character} onChange={setCharacter} placeholder={t('transfer.selectPlaceholder')} /> <CharacterSelect characters={characters} value={character} onChange={setCharacter} placeholder={t('transfer.selectPlaceholder')} />
<br /> <br />
<input type="text" maxLength={32} placeholder={t('transfer.destinationPlaceholder')} value={destination} onChange={(e) => setDestination(e.target.value)} required /> <input type="text" maxLength={32} placeholder={t('transfer.destinationPlaceholder')} value={destination} onChange={(e) => setDestination(e.target.value)} required />
+3 -3
View File
@@ -101,7 +101,7 @@ function ActivateFlow() {
return ( return (
<> <>
<form noValidate onSubmit={activate} id="uw-2fa-form"> <form noValidate onSubmit={activate} id="ns-2fa-form">
<table className="middle-center-table"> <table className="middle-center-table">
<tbody> <tbody>
<tr> <tr>
@@ -182,7 +182,7 @@ function ActivateFlow() {
<br /> <br />
<br /> <br />
<p>{t('twofa.step3')}</p> <p>{t('twofa.step3')}</p>
<form noValidate onSubmit={verify} id="uw-2fa-verify-form" autoComplete="off"> <form noValidate onSubmit={verify} id="ns-2fa-verify-form" autoComplete="off">
<table className="middle-center-table"> <table className="middle-center-table">
<tbody> <tbody>
<tr> <tr>
@@ -255,7 +255,7 @@ function DisableForm() {
<p className="green-info"><i className="fas fa-shield-alt"></i> {t('twofa.enabledNotice')}</p> <p className="green-info"><i className="fas fa-shield-alt"></i> {t('twofa.enabledNotice')}</p>
<p>{t('twofa.disableInstruction')}</p> <p>{t('twofa.disableInstruction')}</p>
<br /> <br />
<form noValidate onSubmit={disable} id="uw-2fa-disable-form"> <form noValidate onSubmit={disable} id="ns-2fa-disable-form">
<table className="middle-center-table"> <table className="middle-center-table">
<tbody> <tbody>
<tr> <tr>
+1 -1
View File
@@ -1,6 +1,6 @@
// Changelog desde la API de Gitea (commits del repo). // Changelog desde la API de Gitea (commits del repo).
const GITEA = process.env.GITEA_URL || 'https://git.nightspire.gg' const GITEA = process.env.GITEA_URL || 'https://git.nightspire.gg'
const REPO = process.env.GITEA_REPO || 'Inna/NovaWoW' const REPO = process.env.GITEA_REPO || 'Inna/NightSpire'
export interface Commit { export interface Commit {
sha: string sha: string
+3 -3
View File
@@ -1341,12 +1341,12 @@
"title": "Contact us", "title": "Contact us",
"p1": "Thank you for your interest in contacting us!", "p1": "Thank you for your interest in contacting us!",
"p2": "If you have any questions, inquiries or comments, we will be happy to help you. Please send an email to the following address:", "p2": "If you have any questions, inquiries or comments, we will be happy to help you. Please send an email to the following address:",
"p3": "Error 404 is the company that represents the NightSpire service.", "p3": "NightSpire is the service these terms refer to.",
"p4": "We strive to respond to all messages within 48 business hours.", "p4": "We strive to respond to all messages within 48 business hours.",
"p5": "Be sure to include the relevant information in your email so that we can provide you with an accurate and timely response.", "p5": "Be sure to include the relevant information in your email so that we can provide you with an accurate and timely response.",
"p6": "At Error 404, we value your comments and opinions. Your satisfaction is our priority and we strive to provide you with the best possible experience at NightSpire.", "p6": "At NightSpire, we value your comments and opinions. Your satisfaction is our priority and we strive to provide you with the best possible experience at NightSpire.",
"p7": "We look forward to hearing from you soon!", "p7": "We look forward to hearing from you soon!",
"p8": "Sincerely, the Error 404 team." "p8": "Sincerely, the NightSpire team."
} }
}, },
"Misc": { "Misc": {
+3 -3
View File
@@ -1341,12 +1341,12 @@
"title": "Contáctanos", "title": "Contáctanos",
"p1": "¡Gracias por tu interés en contactar con nosotros!", "p1": "¡Gracias por tu interés en contactar con nosotros!",
"p2": "Si tienes alguna pregunta, consulta o comentario, estaremos encantados de ayudarte. Por favor, envía un correo electrónico a la siguiente dirección:", "p2": "Si tienes alguna pregunta, consulta o comentario, estaremos encantados de ayudarte. Por favor, envía un correo electrónico a la siguiente dirección:",
"p3": "Error 404 es la empresa que representa el servicio de NightSpire.", "p3": "NightSpire es el servicio al que se refieren estos términos.",
"p4": "Nos esforzamos por responder a todos los mensajes en un plazo de 48 horas hábiles.", "p4": "Nos esforzamos por responder a todos los mensajes en un plazo de 48 horas hábiles.",
"p5": "Asegúrate de incluir la información relevante en tu correo para que podamos brindarte una respuesta precisa y oportuna.", "p5": "Asegúrate de incluir la información relevante en tu correo para que podamos brindarte una respuesta precisa y oportuna.",
"p6": "En Error 404, valoramos tus comentarios y opiniones. Tu satisfacción es nuestra prioridad y nos esforzamos por brindarte la mejor experiencia posible en NightSpire.", "p6": "En NightSpire, valoramos tus comentarios y opiniones. Tu satisfacción es nuestra prioridad y nos esforzamos por brindarte la mejor experiencia posible en NightSpire.",
"p7": "¡Esperamos tener noticias tuyas pronto!", "p7": "¡Esperamos tener noticias tuyas pronto!",
"p8": "Atentamente, el equipo de Error 404." "p8": "Atentamente, el equipo de NightSpire."
} }
}, },
"Misc": { "Misc": {