Skip to this topicSkip to main content

Where to?

Search My WoW Forever
GuidesStart small, step by step
ProfessionsRecipes, materials, skill-ups
AtlasZones, sub-zones and coordinates
DungeonsBosses, loot, maps and quests
TalentsBuild, rank and level in order
CharacterGear, stats and the simulator
Tier listBuilds and races, ranked by the sim
DatabaseEvery record, by name or ID
PrinciplesFoundations · 01
BrandFoundations · 02
ColourFoundations · 03
TypeFoundations · 04

II · Components / 12

Overlays

Every part the site is built from, live, in both themes.

Overlays#

Tooltips explain, popovers hold a few controls, menus act, and dialogs ask only when there is no way back. All of them close with Escape and hand focus back where it was.

Tooltip, menu, popover, dialog, sheet
Copies a link that opens this exact plan.Compare with what you wear

Share this plan

A link that opens the Dwarf Paladin exactly as you left it.

Class
Paladin
Level
60
Talents
20 points
Gear
16 items

Filters

On phones, filters open from the bottom, where the thumb is.

Use
Built on the platform: the popover attribute and <dialog>, placed with CSS anchor positioning. Nothing essential lives only in a tooltip.

Links and terms in running text<ItemLink /> <Term />

Craft Lionheart Helm at 300 Blacksmithing, look up the Classic Era listing for Lightforge Breastplate in Blackrock Spire (unconfirmed in Forever), or start with Frost Tiger Blade.

At level 60 a Retribution Paladin wants hit ratingMakes your attacks and spells less likely to miss. At level 60 in Forever, 10 rating is 1%. first, until attacks stop missing. After that comes critical strike ratingHow often an attack or spell lands a critical hit for extra damage. At level 60 in Forever, 14 rating is 1%., then attack powerAdds to the damage of your weapon attacks..

Conversions from the Forever client’s rating table at level 60: 10 hit rating or 14 critical strike rating is 1%.

Use
Every item name in running text is a link: hover or focus shows the game’s tooltip, and Shift (or a tap) pins it so its terms can be explained. A word a new player may not know gets a dotted underline and plain words, the first time a page uses it.

Avoid
Explaining what the page already says, or hiding a step someone needs inside a tooltip.

The item tooltip

Lionheart Helm

Item Level 61

HeadPlate

565 Armor

+18 Strength

Requires Level 56

Equip: Increases your hit rating by 20 (2.00% at level 60).

Equip: Increases your critical strike rating by 28 (2.00% at level 60).

Forever client recipe: Blacksmithing

Shift pins itForever client

Use
The game’s order, the Forever client’s numbers, and a line saying where it all came from. Night glass in both themes, as in game.

Implementation contract

Use it in the product

Reveal detail or actions without hiding the task or trapping focus in a nonmodal surface.

Exports
Tooltip, Popover, Menu, Dialog, CommandPalette, ItemLink, Term
Source
src/components/waypoint/ui/interactive.tsx; src/components/waypoint/ui/game-live.tsx
Props and defaults
Tooltip requires content and one trigger child. Popover requires trigger, children and label. Dialog requires open, onClose and title; variant defaults to dialog. ItemLink requires a sourced TooltipItem. CommandPalette requires open, onClose and entries; remote adds records fetched as the reader types (the header asks /api/suggest), with onQueryChange to follow the query.
HTML and keyboard
Tooltip explains. Popover and menu act. Dialog and modal sheets have a visible title, Escape close and focus return. Essential steps remain outside tooltips.
States and themes
Closed, opening, open, busy, error and closing. Reduced motion opens in place; a failed action keeps its input and offers retry. The palette says when it is searching and when the database is unavailable, keeps page matches working meanwhile, and on touch screens trades key hints for a 44px close button.
Data and provenance
Item details retain their source/build inside the overlay; a pinned tooltip never becomes the only location for an essential fact. The current gear catalog is build 1.60.1.70245.
Example usage
"use client";
import { useState } from "react";
import { Dialog } from "@/components/waypoint/ui/interactive";

export function ReviewChanges() {
  const [open, setOpen] = useState(false);
  return <><button type="button" onClick={() => setOpen(true)}>Review</button><Dialog open={open} onClose={() => setOpen(false)} title="Review changes">Check the affected slots before applying.</Dialog></>;
}