web-next: «Opciones de cuenta» reordenado según el markup

accountTools en el orden del markup: cambiar contraseña, 2FA (email-icon,
label purple-info), transferir PD, comercio de PD, código promoción, token,
recluta, renombrar hermandad, votar, adquirir PD. «Cambiar correo» (que
tenemos y no está en la lista) al final; panel admin el último (solo admin).
Tool.labelClass para el morado del 2FA. Iconos nuevos del sprite: trade-pd-icon
(-299 -928) y color .purple-info (#b172ff) añadidos al tema. Claves i18n nuevas
(svc2FA/TransferDP/TradePD/Promo/RenameGuild/DPoints). Rutas nuevas → 404 aún.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-13 15:04:46 +00:00
parent 38b4989268
commit eb030ef966
4 changed files with 44 additions and 5 deletions
+10 -3
View File
@@ -4,7 +4,7 @@ import { useState } from 'react'
import { useTranslations } from 'next-intl'
import { Link } from '@/i18n/navigation'
type Tool = { href: string; icon: string; label: string; desc: string }
type Tool = { href: string; icon: string; label: string; desc: string; labelClass?: string }
/** Replica los paneles plegables «OPCIONES DE CUENTA / OPCIONES DE PERSONAJE»
* del my-account de Django (acordeón por click), con las herramientas ya
@@ -14,10 +14,17 @@ export function AccountTools({ isAdmin }: { isAdmin: boolean }) {
const accountTools: Tool[] = [
{ href: '/change-password', icon: 'password-icon', label: t('svcChangePassword'), desc: t('svcChangePasswordDesc') },
{ href: '/change-email', icon: 'email-icon', label: t('svcChangeEmail'), desc: t('svcChangeEmailDesc') },
{ href: '/security-2falogin', icon: 'email-icon', label: t('svc2FA'), desc: t('svc2FADesc'), labelClass: 'purple-info' },
{ href: '/transfer-d-points', icon: 'transfer-dp-icon', label: t('svcTransferDP'), desc: t('svcTransferDPDesc') },
{ href: '/trade-points', icon: 'trade-pd-icon', label: t('svcTradePD'), desc: t('svcTradePDDesc') },
{ href: '/promo-code', icon: 'promo-icon', label: t('svcPromo'), desc: t('svcPromoDesc') },
{ href: '/security-token', icon: 'token-icon', label: t('svcToken'), desc: t('svcTokenDesc') },
{ href: '/recruit', icon: 'recruit-a-friend-icon', label: t('svcRecruit'), desc: t('svcRecruitDesc') },
{ href: '/rename-guild', icon: 'rename-guild-icon', label: t('svcRenameGuild'), desc: t('svcRenameGuildDesc') },
{ href: '/vote-points', icon: 'vote-icon', label: t('svcVote'), desc: t('svcVoteDesc') },
{ href: '/d-points', icon: 'dnt-icon', label: t('svcDPoints'), desc: t('svcDPointsDesc') },
// Las que tenemos y no están en la lista, al final:
{ href: '/change-email', icon: 'email-icon', label: t('svcChangeEmail'), desc: t('svcChangeEmailDesc') },
// Panel de administración: una tool-button más dentro de «Opciones de cuenta» (solo admins).
...(isAdmin ? [{ href: '/admin', icon: 'store-icon', label: `🛡️ ${t('adminPanel')}`, desc: t('adminPanelDesc') }] : []),
]
@@ -74,7 +81,7 @@ function Panel({ id, arrow, title, tools, defaultOpen = false }: { id: string; a
<div className="tool-button">
<div className={`acc-icon ${it.icon}`}></div>
<div className="tool-button-div">
<span className="first-brown shadow">{it.label}</span>
<span className={`first-brown shadow${it.labelClass ? ` ${it.labelClass}` : ''}`}>{it.label}</span>
<br />
<span className="second-brown shadow">{it.desc}</span>
</div>
+13 -1
View File
@@ -135,7 +135,19 @@
"svcStoreItems": "Store",
"svcStoreItemsDesc": "Get all kinds of items",
"svcSendGift": "Send gift",
"svcSendGiftDesc": "Send gifts to your friends"
"svcSendGiftDesc": "Send gifts to your friends",
"svc2FA": "2FA (Two-step verification)",
"svc2FADesc": "Manage two-factor authentication",
"svcTransferDP": "Transfer PD",
"svcTransferDPDesc": "Transfer PD to your alt accounts",
"svcTradePD": "PD trading",
"svcTradePDDesc": "Buy or sell PD for gold",
"svcPromo": "Promo code",
"svcPromoDesc": "Redeem codes for PD or VP",
"svcRenameGuild": "Rename guild",
"svcRenameGuildDesc": "Change your guild's name",
"svcDPoints": "Get PD",
"svcDPointsDesc": "Get PD and access rewards"
},
"SelectAccount": {
"title": "Select your game account",
+13 -1
View File
@@ -135,7 +135,19 @@
"svcStoreItems": "Tienda",
"svcStoreItemsDesc": "Adquiere objetos de todo tipo",
"svcSendGift": "Enviar regalo",
"svcSendGiftDesc": "Envía regalos a tus amigos"
"svcSendGiftDesc": "Envía regalos a tus amigos",
"svc2FA": "2FA (Verificación en 2 pasos)",
"svc2FADesc": "Gestiona la doble autenticación",
"svcTransferDP": "Tranferir PD",
"svcTransferDPDesc": "Transfiere PD a tus cuentas alternativas",
"svcTradePD": "Comercio de PD",
"svcTradePDDesc": "Compra o vende PD por oro",
"svcPromo": "Código de promoción",
"svcPromoDesc": "Canjea códigos por PD o PV",
"svcRenameGuild": "Renombrar hermandad",
"svcRenameGuildDesc": "Cambia el nombre de tu hermandad",
"svcDPoints": "Adquirir PD",
"svcDPointsDesc": "Obtiene PD y accede a recompensas"
},
"SelectAccount": {
"title": "Selecciona tu cuenta de juego",
@@ -909,6 +909,14 @@ textarea:focus, select:focus, input[type=password]:focus, input[type=number]:foc
background-position: -424px -553px;
}
.trade-pd-icon {
background-position: -299px -928px;
}
.purple-info {
color: #b172ff;
}
.token-icon {
background-position: -174px -553px;
}