Theme override model

Meeting1 h 00Pseudonymised participants

Grouped automatically
  1. 01:00

    Participant-1 — Participant-3 brought a deck for this one. Six slides on how a project overrides the look of its site without forking the theme.

  2. 05:15

    Participant-3 — Slide one is the problem. An integrator wants the organisation's name, logo and colours, sometimes a different label here and there, and never wants to touch the components.

  3. 10:15

    Participant-2 — Slide two is what exists: theme.yaml. Name, logo, favicon, the font families, the corner radius, the light and dark palettes, the footer, an extra stylesheet.

  4. 15:00

    Participant-3 — Slide three is the model we propose. Every page is a set of named slots, each rendered by a component with a typed view model. The view model is the contract between the generator and a theme.

  5. 20:30

    Participant-4 — A theme that replaces a component has to keep the view model, then. What stops a theme from dropping the mentions or the legend?

  6. 24:30

    Participant-3 — Nothing stops it, and that is deliberate. The accessibility checks run on the rendered pages whatever the theme, and the page budget is measured on every build.

  7. 29:40

    Participant-2 — Slide four, the islands. Only the interactive parts are hydrated: the search, the mentions panel, the mode switch. One small bundle per island, loaded only by the pages that use it.

  8. 34:30

    Participant-1 — And the stylesheet of the project wins by construction. Four cascade layers: tokens, base, components, project. The project layer is last, so nothing in the default theme can outrank it.

  9. 39:05

    Participant-4 — Slide five is the labels, I think. A project overrides any message of the catalogue through theme.yaml, in the same syntax as the message it replaces, with the same variables.

  10. 43:25

    Participant-3 — Yes, and a missing variable is a configuration error that names the key. No silent fallback to the source label.

  11. 48:45

    Participant-1 — Slide six, the decision. Slots, islands and layers: named slots with typed view models, islands for the interactive parts only, and cascade layers so that the project stylesheet wins. Without javascript the content stays reachable.

  12. 52:50

    Participant-2 — One remark for the minutes. A type module may ship a page of its own for its type, and it goes through the same slot, so the model covers the plugins too.

  13. 56:40

    Participant-4 — Then I have what I need for the checks. The budget stays at one hundred and fifty kilobytes per page, previews excluded.

  14. 01:00:10

    Participant-1 — Agreed by everyone. Participant-3 files the deck next to these minutes so that the wiki shows the three on one page.

Download theme-override-model.vtt

The names of the participants are replaced at publication by stable pseudonyms. The mapping is never published.

What was said

Decision

Slots, islands and layers (note: Slots, islands and layers): named slots with typed view models, islands (4 passages, no note) for the interactive parts only, cascade layers so that the project stylesheet wins by construction, and content (43 passages, no note) that stays reachable without JavaScript (3 passages, no note). The budget stays at 150 kB per page, previews (note: Preview) excluded.

written linkrecognised word, existing noterecognised word, no note

Document theme-override-model.pptx

Download theme-override-model.pptxOpen the PDF

Extracted text

slide 1

WORKING SESSION · 27 AUGUST 2026 Theme override model How a project overrides the look of its site without forking the theme. Six slides for the working session of the Concordance project. Deck, minutes and transcript are grouped into one page of the wiki. Theme override model · 2026-08-27 · 1/6

slide 2

1 · THE NEED The organisation's identity, not the tool's An integrator wants the name, the logo, the colours and a label here and there. An integrator never wants to touch the components. Nothing a reader sees names the tool unless the project asks for it. Theme override model · 2026-08-27 · 2/6

slide 3

2 · WHAT EXISTS theme.yaml Name, logo, favicon, font families, corner radius. Light and dark palettes, checked for contrast at build. Footer text, footer links, an extra stylesheet, label overrides. Theme override model · 2026-08-27 · 3/6

slide 4

3 · THE MODEL Named slots with typed view models Every page is a set of named slots, each rendered by a component. The view model of a slot is the contract between the generator and a theme. A theme that replaces a component keeps the view model; the checks run on the rendered pages. Theme override model · 2026-08-27 · 4/6

slide 5

4 · ISLANDS AND LAYERS Hydrate the interactive parts only One small bundle per island: search, mentions panel, mode switch. Four cascade layers: tokens, base, components, project. The project stylesheet is loaded last and wins by construction. Theme override model · 2026-08-27 · 5/6

slide 6

5 · DECISION Slots, islands and layers Named slots with typed view models. Islands for the interactive parts, content reachable without JavaScript. A budget of 150 kB per page, measured on every build. Theme override model · 2026-08-27 · 6/6

Properties

Date
Duration
1 h 00
Space
Briefs

4 files grouped — declared in frontmatter, same base name

  • theme-override-model.mdMarkdown note
  • theme-override-model.pdfPDF
  • theme-override-model.pptxPresentation
  • theme-override-model.vttVTT
Separate these files

4 files: same folder, same base name, title equal to the heading, declared in the frontmatter.

See the neighbourhood map6 pages6Neighbourhood mapTheme override model

Neighbourhood map Theme override model

Distance1 hop

Neighbourhood map. The list below carries the same information as the map.existing pageword without a note

40 neighbours in total, more than the map shows.

textual equivalent

Six neighbours at most, always named. Beyond that the map teaches nothing: the list takes over.