Skip to content

[3.0] Theme split (wave 3, part 2) — Rebuild the linktree as a breadcrumb landmark - #9370

Merged
live627 merged 2 commits into
SimpleMachines:release-3.0from
albertlast:3.0/theme-breadcrumb
Aug 8, 2026
Merged

live627 merged 2 commits into
SimpleMachines:release-3.0from
albertlast:3.0/theme-breadcrumb

Conversation

@albertlast

Copy link
Copy Markdown
Collaborator

Description

Part 2 of wave 3 of the #7933 split. Stacked on #9369 — the first commit here is that one, and this diff is the second commit.

Rebuilds the linktree as a proper breadcrumb.

  • It becomes a <nav> landmark with an accessible name, wrapping an <ol> rather than a <ul>. The trail is ordered: "General Category" comes before "General Discussion".
  • It carries schema.org BreadcrumbList microdata, so a search engine can read the trail.
  • Layout moves from floats to flexbox, and the colours, spacing and dividers move to tokens.

Because it is flexbox rather than floats, it flips for RTL on its own. That makes the two rtl.css rules for it dead, so they go, continuing what parts 7 and 8 of wave 2 started.

Two things taken deliberately differently from the theme branch

The dividers stay as HTML entities. The theme branch replaces &#9658; with <i class="fa-solid fa-angle-right">. Nothing in the default theme uses Font Awesome today, and the bundled local copy of it has no @font-face rule at all, so a forum with fontawesome_source set to local would get no divider rather than a different one. The same applies to the house icon the branch puts before the trail. Both are easy to add once the local Font Awesome source is fixed, which is worth doing separately.

.last is still emitted. The branch drops the class in favour of :last-child, but its own CSS still matches :is(.last, :last-child), and mods and custom themes may well style it. Keeping it costs nothing.

Two fixes to what is on the branch

  • The markup there opens <ul itemscope> and closes </ol>. The stylesheet targets ol, and an ordered list is what a breadcrumb should be, so this opens <ol>.
  • The stylesheet there asks for var(--breadcrumb_divider_font_family) with underscores, while variables.css defines --breadcrumb-divider-font-family with hyphens. As an undefined token with no fallback it is invalid at computed-value time, so it does not fall back to the previous rule — it unsets font-family on the divider entirely. Spelled correctly here, and confirmed in the browser: the divider computes to Arial, sans-serif, which is what tells you it resolved.

Verification

Board page in the running forum, computed styles and geometry rather than eyeballing:

  • nav / ol / aria-label="Breadcrumb" all as intended, 3 crumbs, position metas 1 to 3.
  • Every token resolves. The first crumb computes to rgb(42, 66, 85), which is hsl(207, 34%, 25%) — that is --primary-color-800 from [3.0] Theme split (wave 3, part 1) — Add the primary and secondary colour ramps #9369 arriving through --breadcrumb-link-color. The current page computes to rgb(40, 89, 149) at weight 700.
  • Crumbs sit on one line, left to right, at x = 73, 124, 240.
  • Setting dir="rtl" on the document reverses them to x = 598, 483, 353 with no rtl.css involved, which is what shows the two deleted rules really were redundant.
  • A control element confirmed a 1px border computes to 0.571429px in that browser, so the border width reads correctly rather than looking wrong.
  • index.css references 221 tokens, variables.css defines 245, and nothing is referenced without being defined.

Issues References (Fixes|Related|Closes)

Related to #7933.

The remaining theme parts are built on two nine-step ramps derived from a
single hue each, rather than on individually chosen colours. Adding them
ahead of those parts keeps each of them to the tokens it actually
introduces.

Nothing references the ramps yet and no existing token is repointed at
them, so this changes nothing that is rendered.

Signed-off-by: albertlast <mathiaspapealbert@hotmail.com>
The linktree becomes a nav landmark wrapping an ordered list, since the
trail is ordered, and carries schema.org BreadcrumbList microdata so a
search engine can read it. Layout moves from floats to flexbox, which
makes the two rtl.css rules for it redundant.

Keeps the HTML entity dividers rather than the icon font used on the
theme branch. Nothing in the default theme uses Font Awesome yet, and
the bundled local copy has no @font-face rule, so a forum with
fontawesome_source set to local would get no divider at all.

Keeps emitting the .last class as well, so anything styling it still
works, even though :last-child now covers it.

Signed-off-by: albertlast <mathiaspapealbert@hotmail.com>
@live627
live627 merged commit ac3a869 into SimpleMachines:release-3.0 Aug 8, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants