diff --git a/web-next/app/[locale]/change-faction-character/page.tsx b/web-next/app/[locale]/change-faction-character/page.tsx index f1b7755..f37c10a 100644 --- a/web-next/app/[locale]/change-faction-character/page.tsx +++ b/web-next/app/[locale]/change-faction-character/page.tsx @@ -17,7 +17,7 @@ export async function generateMetadata({ params }: { params: Promise<{ locale: s return { title: t('title') } } -const GOLD_ICON = '/nw-themes/nw-ryu/nw-images/nw-icons/money-gold.gif' +const GOLD_ICON = '/ns-themes/ns-ryu/ns-images/ns-icons/money-gold.gif' function GoldCell({ amount }: { amount: number }) { return ( diff --git a/web-next/app/[locale]/download-addons/page.tsx b/web-next/app/[locale]/download-addons/page.tsx index 7330a98..19362f4 100644 --- a/web-next/app/[locale]/download-addons/page.tsx +++ b/web-next/app/[locale]/download-addons/page.tsx @@ -53,7 +53,7 @@ export default async function DownloadAddonsPage() {

{t(`downloadAddons.${a.descKey}`)}

- + {t('downloadAddons.download')} diff --git a/web-next/app/[locale]/gold-character/page.tsx b/web-next/app/[locale]/gold-character/page.tsx index 9247ef7..2b897bc 100644 --- a/web-next/app/[locale]/gold-character/page.tsx +++ b/web-next/app/[locale]/gold-character/page.tsx @@ -17,7 +17,7 @@ export async function generateMetadata({ params }: { params: Promise<{ locale: s return { title: t('title') } } -const GOLD_ICON = '/nw-themes/nw-ryu/nw-images/nw-icons/money-gold.gif' +const GOLD_ICON = '/ns-themes/ns-ryu/ns-images/ns-icons/money-gold.gif' export default async function GoldCharacterPage({ params }: { params: Promise<{ locale: string }> }) { const { locale } = await params diff --git a/web-next/app/[locale]/layout.tsx b/web-next/app/[locale]/layout.tsx index d201767..3667cc6 100644 --- a/web-next/app/[locale]/layout.tsx +++ b/web-next/app/[locale]/layout.tsx @@ -65,8 +65,8 @@ export default async function LocaleLayout({ rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.6.0/css/all.min.css" /> - {/* Tema real de NightSpire (nw-ryu). Va el ÚLTIMO para ganar la cascada. */} - + {/* Tema real de NightSpire (ns-ryu). Va el ÚLTIMO para ganar la cascada. */} + {/* Config de los tooltips de wowhead (debe definirse antes de tooltips.js). OJO con el `window.`: tooltips.js lee `window.whTooltips`, y un `const` a nivel de script queda en el ámbito léxico del script (no crea propiedad en diff --git a/web-next/app/[locale]/maintenance/page.tsx b/web-next/app/[locale]/maintenance/page.tsx index aa25387..b16dab2 100644 --- a/web-next/app/[locale]/maintenance/page.tsx +++ b/web-next/app/[locale]/maintenance/page.tsx @@ -36,7 +36,7 @@ export default async function MaintenancePage({ params }: { params: Promise<{ lo

{/* eslint-disable-next-line @next/next/no-img-element */} {t('maintenance.pageTitle')} diff --git a/web-next/app/[locale]/my-account/page.tsx b/web-next/app/[locale]/my-account/page.tsx index 5191ac6..9b5be78 100644 --- a/web-next/app/[locale]/my-account/page.tsx +++ b/web-next/app/[locale]/my-account/page.tsx @@ -29,7 +29,7 @@ function wowAccountName(username: string): string { return i >= 0 ? `WOW${username.slice(i + 1)}` : username } -const ICONS = '/nw-themes/nw-ryu/nw-images/nw-icons' +const ICONS = '/ns-themes/ns-ryu/ns-images/ns-icons' export default async function AccountPage({ params }: { params: Promise<{ locale: string }> }) { const { locale } = await params @@ -82,7 +82,7 @@ export default async function AccountPage({ params }: { params: Promise<{ locale {t('accountState')}
{/* eslint-disable-next-line @next/next/no-img-element */} - {`${t('level')} + {`${t('level')}

{t('dp')}: {data.dp} | {t('vp')}: {data.vp}

{t('securityToken')}: {data.securityTokenDate ? t('requested') : t('notRequested')}

{t('twofaLabel')}: {t('twofaOff')}

diff --git a/web-next/app/[locale]/security-2falogin/page.tsx b/web-next/app/[locale]/security-2falogin/page.tsx index c822514..dbf6a5c 100644 --- a/web-next/app/[locale]/security-2falogin/page.tsx +++ b/web-next/app/[locale]/security-2falogin/page.tsx @@ -14,7 +14,7 @@ export async function generateMetadata({ params }: { params: Promise<{ locale: s return { title: t('twofaLogin.pageTitle') } } -const IMG = '/nw-themes/nw-ryu/nw-images' +const IMG = '/ns-themes/ns-ryu/ns-images' export default async function Security2faLoginPage({ params }: { params: Promise<{ locale: string }> }) { const { locale } = await params @@ -40,7 +40,7 @@ export default async function Security2faLoginPage({ params }: { params: Promise
{t('twofaLogin.previewAlt')}
diff --git a/web-next/app/[locale]/trans-history/page.tsx b/web-next/app/[locale]/trans-history/page.tsx index ffbf20d..d4ebc7e 100644 --- a/web-next/app/[locale]/trans-history/page.tsx +++ b/web-next/app/[locale]/trans-history/page.tsx @@ -100,7 +100,7 @@ async function PlatformBox({ ) } -const LOGO_BASE = '/nw-themes/nw-ryu/nw-images/nw-logos' +const LOGO_BASE = '/ns-themes/ns-ryu/ns-images/ns-logos' export default async function TransHistoryPage({ params }: { params: Promise<{ locale: string }> }) { const { locale } = await params diff --git a/web-next/app/globals.css b/web-next/app/globals.css index 3ddf1b4..2152a61 100644 --- a/web-next/app/globals.css +++ b/web-next/app/globals.css @@ -2,14 +2,14 @@ /* Tokens de diseño NightSpire (paleta oscura fantasía WotLK). */ @theme { - --color-nw-bg: #140d08; - --color-nw-panel: #241812; - --color-nw-panel-2: #2c1e14; - --color-nw-border: #4a3320; - --color-nw-gold: #d79602; - --color-nw-gold-light: #f0b93f; - --color-nw-text: #e8dccb; - --color-nw-muted: #b1997f; + --color-ns-bg: #140d08; + --color-ns-panel: #241812; + --color-ns-panel-2: #2c1e14; + --color-ns-border: #4a3320; + --color-ns-gold: #d79602; + --color-ns-gold-light: #f0b93f; + --color-ns-text: #e8dccb; + --color-ns-muted: #b1997f; } :root { @@ -17,10 +17,10 @@ } /* El fondo, la tipografía (FuturaEF-Book) y los estilos base del - los controla el tema real nw-ryu (nightspire-style.css), cargado en el + los controla el tema real ns-ryu (nightspire-style.css), cargado en el del layout. No los redefinimos aquí para que el tema Django quede idéntico. */ -/* El tema nw-ryu se diseñó para los defaults del navegador (igual que la web +/* El tema ns-ryu se diseñó para los defaults del navegador (igual que la web Django, que NO usa Tailwind). El preflight de Tailwind rompe dos cosas: 1) box-sizing:border-box hace que la height fija de los inputs incluya el padding → campos aplastados. Volvemos a content-box SOLO en los inputs de @@ -102,20 +102,20 @@ img { /* Componentes reutilizables */ @layer components { - .nw-btn { - @apply inline-flex items-center justify-center rounded-md bg-nw-gold px-5 py-2.5 font-semibold text-[#1b120b] transition hover:bg-nw-gold-light; + .ns-btn { + @apply inline-flex items-center justify-center rounded-md bg-ns-gold px-5 py-2.5 font-semibold text-[#1b120b] transition hover:bg-ns-gold-light; } - .nw-btn-ghost { - @apply inline-flex items-center justify-center rounded-md border border-nw-border px-5 py-2.5 font-semibold text-nw-text transition hover:border-nw-gold hover:text-nw-gold-light; + .ns-btn-ghost { + @apply inline-flex items-center justify-center rounded-md border border-ns-border px-5 py-2.5 font-semibold text-ns-text transition hover:border-ns-gold hover:text-ns-gold-light; } - .nw-card { - @apply rounded-xl border border-nw-border/70 bg-nw-panel/80 p-5 shadow-lg shadow-black/30 backdrop-blur; + .ns-card { + @apply rounded-xl border border-ns-border/70 bg-ns-panel/80 p-5 shadow-lg shadow-black/30 backdrop-blur; } - .nw-heading { - @apply bg-gradient-to-b from-nw-gold-light to-nw-gold bg-clip-text font-extrabold tracking-wide text-transparent; + .ns-heading { + @apply bg-gradient-to-b from-ns-gold-light to-ns-gold bg-clip-text font-extrabold tracking-wide text-transparent; } - .nw-input { - @apply w-full rounded-md border border-nw-border bg-nw-panel-2 px-3 py-2 text-nw-text outline-none transition focus:border-nw-gold; + .ns-input { + @apply w-full rounded-md border border-ns-border bg-ns-panel-2 px-3 py-2 text-ns-text outline-none transition focus:border-ns-gold; } } @@ -124,7 +124,7 @@ img { color: #7cc0f7; } -/* Foro: textarea con el look del tema real (el tema nw-ryu no estiliza textarea base). */ +/* Foro: textarea con el look del tema real (el tema ns-ryu no estiliza textarea base). */ textarea { width: 100%; background-color: #000; @@ -140,7 +140,7 @@ textarea:focus { } /* Foro: barra de herramientas del editor y paginación (colores del tema). */ -.nw-tool-btn { +.ns-tool-btn { border: 2px solid #352e2b; background: hsla(0, 0%, 100%, 0.05); color: #ebdec2; @@ -148,14 +148,14 @@ textarea:focus { cursor: pointer; transition: 0.3s; } -.nw-tool-btn:hover { +.ns-tool-btn:hover { background: hsla(0, 0%, 100%, 0.1); color: #fff; } /* Paginación con el estilo de los botones del tema (borde + fondo tenue + hover). Los selectores :link/:visited elevan la especificidad para ganar a las reglas `a`/`a:visited` del tema (que si no dejan los enlaces visitados en azul). */ -.nw-page-link { +.ns-page-link { display: inline-block; min-width: 42px; padding: 9px 14px; @@ -165,17 +165,17 @@ textarea:focus { text-align: center; transition: 0.3s; } -.nw-page-link:link, -.nw-page-link:visited { +.ns-page-link:link, +.ns-page-link:visited { color: #ebdec2; } -.nw-page-link:hover { +.ns-page-link:hover { background: hsla(0, 0%, 100%, 0.1); color: #fff; } -.nw-page-current, -.nw-page-current:link, -.nw-page-current:visited { +.ns-page-current, +.ns-page-current:link, +.ns-page-current:visited { border-color: #b17c02; color: #d79602; background: hsla(40, 90%, 45%, 0.12); diff --git a/web-next/components/AdminForumManager.tsx b/web-next/components/AdminForumManager.tsx index 3e42aa6..06e20f2 100644 --- a/web-next/components/AdminForumManager.tsx +++ b/web-next/components/AdminForumManager.tsx @@ -82,11 +82,11 @@ export function AdminForumManager({ initial }: { initial: Group[] }) { call(`/api/admin/forum/category/${category.id}`, 'PUT', { name: editCat.name, nameEn: editCat.nameEn, order: Number(editCat.order) }).then((ok) => ok && setEditCat(null)) } disabled={busy} - className="nw-tool-btn" + className="ns-tool-btn" > {t('save')} {' '} - +
) : (
@@ -97,14 +97,14 @@ export function AdminForumManager({ initial }: { initial: Group[] }) { {' '} @@ -141,11 +141,11 @@ export function AdminForumManager({ initial }: { initial: Group[] }) { }).then((ok) => ok && setEditForum(null)) } disabled={busy} - className="nw-tool-btn" + className="ns-tool-btn" > {t('save')} {' '} - + ) : ( @@ -160,21 +160,21 @@ export function AdminForumManager({ initial }: { initial: Group[] }) { {' '} {' '} diff --git a/web-next/components/AdminGoldManager.tsx b/web-next/components/AdminGoldManager.tsx index 161d5cf..2aee473 100644 --- a/web-next/components/AdminGoldManager.tsx +++ b/web-next/components/AdminGoldManager.tsx @@ -69,7 +69,7 @@ export function AdminGoldManager({ initial }: { initial: GoldOption[] }) {

{o.price.toFixed(2)} €

- diff --git a/web-next/components/AdminNewsManager.tsx b/web-next/components/AdminNewsManager.tsx index b0d8c1c..a359382 100644 --- a/web-next/components/AdminNewsManager.tsx +++ b/web-next/components/AdminNewsManager.tsx @@ -109,10 +109,10 @@ export function AdminNewsManager({ initialNews }: { initialNews: NewsItem[] }) { setEdit({ ...edit, tituloEn: e.target.value })} placeholder={t('newsTitleEn')} maxLength={200} />