Foro: autor con personaje aleatorio de la cuenta

- El nombre del autor muestra un personaje ALEATORIO de la cuenta (no la id).
- Nombre con <Hermandad> en dorado (oculto si el personaje no tiene guild).
- Avatar = imagen de raza del personaje (raza+género).
- Cajas nuevas: puntos de logros, nivel y clase (con su color de clase).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-17 07:57:41 +00:00
parent beba7301a1
commit 24bd28fcca
93 changed files with 249 additions and 28 deletions
@@ -11,6 +11,7 @@ import {
import { formatForumDate } from '@/lib/forum-format'
import { localizeWowheadLinks } from '@/lib/forum-wowhead'
import { getSession } from '@/lib/session'
import { className, classColor } from '@/lib/wow-data'
import { forumIsModerator, canEditPost } from '@/lib/forum-perm'
import { PageShell } from '@/components/PageShell'
import { ForumBreadcrumb } from '@/components/ForumBreadcrumb'
@@ -105,7 +106,10 @@ export default async function TopicPage({
<div key={post.id} className={`topic_post${isStaff ? ' isStaff' : ''}${post.deleted ? ' post_deleted' : ''}`}>
<div className="left_side">
<div className="username_container">
<span className="username">{author?.name ?? `#${post.poster}`}</span>
<span className="username">
{author?.charName ?? author?.name ?? `#${post.poster}`}
{author?.guildName ? <span className="username_guild"> &lt;{author.guildName}&gt;</span> : null}
</span>
</div>
<div className={`user_avatar${isStaff ? ' isStaff' : ''}`}>
<span
@@ -128,6 +132,30 @@ export default async function TopicPage({
</dt>
<dd>{formatForumDate(author?.joindate ?? null, locale) || '—'}</dd>
</h3>
{author?.charName ? (
<>
<h3 className="post_field">
<dt>
<i className="fa-solid fa-medal fa-fw" />
</dt>
<dd>{(author.achPoints ?? 0).toLocaleString(locale)}</dd>
</h3>
<h3 className="post_field">
<dt>
<i className="fa-solid fa-star fa-fw" />
</dt>
<dd>
{t('level')} {author.level}
</dd>
</h3>
<h3 className="post_field">
<dt>
<i className="fa-solid fa-khanda fa-fw" />
</dt>
<dd style={{ color: classColor(author.classId) }}>{className(author.classId, locale)}</dd>
</h3>
</>
) : null}
<h3 className="post_field">
<dt>
<i className="fa-solid fa-comments fa-fw" />