Skip to main content

Character Detail Page

The character detail page (/characters/:characterId) is the richest UI surface in the app โ€” a WoW-style character sheet with a Blizzard-rendered full-body portrait, equipment panels, and spec-aware color theming.

Page Layoutโ€‹

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Page-level aura โ”‚ โ† fixed radial gradient, spec color
โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚ โ”‚ Profile Card โ”‚ โ”‚ โ† avatar, name, class, chips
โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ”‚ โ”‚
โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚ โ”‚ Left โ”‚ Render โ”‚ Rightโ”‚ โ”‚ โ† desktop: 3-column grid
โ”‚ โ”‚ gear โ”‚ image โ”‚ gear โ”‚ โ”‚
โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ”‚ [ MH ] [ OH ] โ”‚ โ† weapons centered below
โ”‚ โ”‚
โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚ โ”‚ Mobile equipment grid โ”‚ โ”‚ โ† mobile: flat grid below render
โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Responsive Behaviorโ€‹

  • Desktop (lg: breakpoint): 3-column CSS grid (220px / 1fr / 220px). Left column shows headโ†’wrist, right column shows handsโ†’trinkets. Weapons sit centered below the portrait. The mobile grid is hidden.
  • Mobile: Equipment columns are hidden. A single-column (2-col on sm:) grid renders all items sorted by slot order below the render.

File Mapโ€‹

FilePurpose
routes/characters/-CharacterDetailPage.tsxPage component, layout, equipment panels
components/game/CharacterRenderImage.tsxCached Blizzard full-body render image
components/game/aura-colors.tsSpec-aware aura color lookup
components/game/CharacterCardBackground.tsxFaction-tinted card background
components/game/FactionChip.tsxHorde/Alliance chip

Character render imageโ€‹

The center column shows a cached PNG from Blizzardโ€™s render service (stored after enrichment or fetched on demand via GET /characters/:id/render). The image is landscape (1600ร—1200); the UI uses object-fit: cover with a vertical crop bias so the figure fills the frame without the heavy WebGL stack.

If no render URL is available yet, the component falls back to the character avatar and class color framing.

Aura Color Systemโ€‹

aura-colors.ts provides spec-aware color theming for the page-level gradient and related accents.

How It Worksโ€‹

getAuraColor(class, spec)
โ†’ look up SPEC_AURA_COLORS[class/spec] (e.g. "priest/shadow" โ†’ #6B21A8)
โ†’ fallback: getClassColor(class) (standard WoW class color)
โ†’ returns [r, g, b] tuple or null

Every class/spec combination has a hand-picked color. Examples:

SpecColorReasoning
Priest / Shadow#6B21A8Deep purple
Mage / Frost#60C5F1Ice blue
Death Knight / Blood#8B1A1ADark crimson
Evoker / Preservation#33937FTeal green

Page-Level Auraโ€‹

The CharacterDetailPage renders a fixed radial-gradient(circle at 50% 55%, ...) using the spec aura color at 25% opacity. This washes the entire page in the character's spec color, centered on the portrait area.

Equipment Displayโ€‹

Item Quality Colorsโ€‹

Items are color-coded by WoW quality tier:

QualityColor
Poor#9d9d9d
Common#ffffff
Uncommon#1eff00
Rare#0070dd
Epic#a335ee
Legendary#ff8000

Slot Layoutโ€‹

Desktop splits equipment into three groups:

  • Left column (icon right-aligned, text left): Head, Neck, Shoulder, Back, Chest, Tabard, Wrist
  • Right column (icon left-aligned, text right): Hands, Waist, Legs, Feet, Ring 1, Ring 2, Trinket 1, Trinket 2
  • Weapons row: Main Hand, Off Hand (centered below render)

Mobile shows all items in a flat sorted grid with slot labels, ilvl, enchant/gem indicators.

Design Decisionsโ€‹

  • Static image vs WebGL: A previous Wowhead/Zam 3D viewer was removed for performance and reliability. The Blizzard render is a single <img> with optional RTK Query hydration when renderUrl is missing from the character payload.
  • Transmog preference: When transmogItemId is present on an equipped item, it's used for tooltip/display where applicable.