Files
2026-03-22 05:17:01 +00:00

2.8 KiB

Data Template Reference

Dungeon Data File Structure

Each dungeon is a TypeScript file in src/data/ that exports a DungeonData object.

import type { DungeonData } from "@/types/dungeon";

export const dungeonSlug: DungeonData = {
  id: "dungeon-slug",
  name: "Dungeon Name",
  descriptionHtml: `Brief layout with <span class="wing-badge wing-arcane">Wing</span> badges if applicable`,
  headerImage: "/assets/dungeon_name_header.jpg",
  icon: "/assets/dungeon_dungeon_name.jpg",
  sections: [
    {
      type: "trash",
      data: {
        header: "Area Name — Trash Before BossName",
        content: [
          { type: "quickRef", data: { html: `<strong>Environment:</strong> Brief description.` } },
          {
            type: "mob",
            data: {
              name: "Mob Name (Immune to CC)",
              nameHtml: `Mob Name <span style="color: var(--accent-red); font-size: 12px;">(Immune to CC)</span>`,
              tankRelevant: true,
              abilitiesHtml: [
                `<a href="https://www.wowhead.com/beta/spell=123456/ability-name">Ability Name</a> — TANK: What to do.`,
              ],
            },
          },
        ],
      },
    },
    {
      type: "boss",
      data: {
        bossNumber: "Boss 1 · Area/Wing",
        name: "Boss Name",
        subtitle: "One-line fight summary",
        image: "/assets/boss_name_boss_fight.jpg",
        abilities: [
          {
            name: "Ability Name",
            wowheadUrl: "https://www.wowhead.com/beta/spell=123456/ability-name",
            role: "tank",
            importance: "tank-important",
            descriptionHtml: `<ul><li><span class="warn">Warning.</span></li></ul>`,
          },
          {
            name: "Ability Name",
            wowheadUrl: "https://www.wowhead.com/beta/spell=123457/ability-name",
            role: "everyone",
            importance: "everyone-important",
            descriptionHtml: `<ul><li>Description.</li></ul>`,
          },
        ],
      },
    },
    { type: "divider" },
  ],
};

Registering in index.ts

import { dungeonSlug } from "./dungeon-slug";

// In dungeonList (alphabetical):
{ id: "dungeon-slug", name: "Dungeon Name", icon: "/assets/dungeon_dungeon_name.jpg" },

// In dungeonDataMap:
"dungeon-slug": dungeonSlug,

Roles & Importance

Role Importance Visual
"tank" "tank-important" Blue left border + badge
"everyone" "everyone-important" Amber left border + badge
"healer" "healer-important" Green left border + badge
"dps" null Red badge, no border

HTML Classes: warn (red), tip (green), wing-badge wing-arcane/void/light

Wowhead: <a href="https://www.wowhead.com/beta/spell={ID}/{slug}">Name</a>