Skip to content
design system
Thème d’affichage, actuellement Auto

organism · stable · extension · since 2026-09

WizardFrame

Purpose

The frame of a wizard screen in the extension’s panel: a region named by its title, a header with the counter and the close button, a body that scrolls, a footer that stays in sight. Every wizard writes its screen inside it.

When to use, when not

Use it for every screen of a wizard, the empty-population screen included. Not for the panel’s sidebar, which has its own shell, and not for a dialog.

Anatomy

  1. The header: the title as a level-2 heading, the progress “3 / 12”, the wizard’s tools (the veil switch, an inspector), the close button.
  2. What a wizard puts above the body: a resume banner, a jump list, a recap.
  3. The body, which scrolls.
  4. The footer: the navigation and the counters.

Props

Props of WizardFrame
NameTypeDefaultWhat it does
titlestringThe screen's title: "Audit des cadres".
kind?stringThe wizard's kind, written on the frame for the panel's own doors between wizards.
progress?{ current: number; total: number } | undefinedWhere the auditor is: current element and total, shown as "3 / 12".
onclose?(() => void) | undefinedCloses the wizard; the button carries the label.
closeLabel?string'Fermer'
class?string''Layout classes only.
tools?SnippetThe header's tools, between the progress and the close button: the veil switch, an inspector.
above?SnippetWhat sits under the header, before the body: a resume banner, a recap.
childrenSnippetThe screen's body, which scrolls.
footer?SnippetThe footer: the navigation, the counters.

States

Bare, with a progress and a close button, and with a footer.

bare

The region and its title, nothing else: the shape every screen starts from.

Light

Audit des cadres

Aucun cadre trouvé sur cette page.

Dark

Audit des cadres

Aucun cadre trouvé sur cette page.

320 px, light

Audit des cadres

Aucun cadre trouvé sur cette page.

320 px, dark

Audit des cadres

Aucun cadre trouvé sur cette page.

216 px, light

Audit des cadres

Aucun cadre trouvé sur cette page.

Forced colours, captured
WizardFrame, story bare, as Chromium renders it with forced colours active

withFooter

A footer that stays in sight while the body scrolls.

Light

Audit des liens

Élément 1 / 4

Le premier lien de la page.

Dark

Audit des liens

Élément 1 / 4

Le premier lien de la page.

320 px, light

Audit des liens

Élément 1 / 4

Le premier lien de la page.

320 px, dark

Audit des liens

Élément 1 / 4

Le premier lien de la page.

216 px, light

Audit des liens

Élément 1 / 4

Le premier lien de la page.

Forced colours, captured
WizardFrame, story withFooter, as Chromium renders it with forced colours active

withProgress

The counter says the element and the total; the close button is labelled.

Light

Audit des images

Élément 3 / 12

La troisième image de la page.

Dark

Audit des images

Élément 3 / 12

La troisième image de la page.

320 px, light

Audit des images

Élément 3 / 12

La troisième image de la page.

320 px, dark

Audit des images

Élément 3 / 12

La troisième image de la page.

216 px, light

Audit des images

Élément 3 / 12

La troisième image de la page.

Forced colours, captured
WizardFrame, story withProgress, as Chromium renders it with forced colours active

Accessibility contract

  • Role and name: a section named by its title, which is an h2 with tabindex="-1" so a screen change can move the focus to it.
  • Keyboard, focus: the close button is a labelled button; the body scrolls with the keyboard since it holds focusable controls; the shortcuts of a wizard are the page’s, on use:shortcuts.
  • Live regions: none; the panel’s shell owns them.

Content rules

French. The title names the theme audited (“Audit des cadres”, “Images”); the progress is the element’s rank over the total, never a percentage.

Do and don’t

  • Do give the frame the wizard’s kind, so the panel’s doors between wizards can read it.
  • Do not put the counters in the header: they belong to the footer, with the navigation they inform.

Examples

<WizardFrame title="Audit des cadres" kind="frames" progress={{ current: 3, total: 12 }} onclose={close}>
	{#snippet footer()}<WizardFooter onprev={prev} onnext={next} />{/snippet}
	<Question criterion="2.2">Ce titre décrit-il bien le contenu du cadre ?</Question>
</WizardFrame>

Surfaces

  • Extension: every wizard, as they are ported.

Related

Question, AnswerButtons, WizardFooter, CriteriaRecap, JumpList.

Decisions

  • 2026-09-26: the body scrolls, not the frame. The old shells scrolled two different containers depending on the wizard, and a Oui/Non answer sent some of them back to the top at each click.

Criteria held by construction

  • 9.1, Dans chaque page web, l'information est-elle structurée par l'utilisation appropriée de titres ?
    The screen's title is a heading that names the region, and the outline of the panel is what the wizard shows.
  • 12.8, Dans chaque page web, l'ordre de tabulation est-il cohérent ?
    The header comes first in the DOM and the footer last, so the tab order follows the reading order: what the screen is, its content, then its navigation.

Tokens it reads

  • Colour: --rl-bg, --rl-ink, --rl-ink-soft, --rl-line
  • Typography: --rl-weight-bold, --rl-text-base, --rl-text-sm, --rl-tracking-tight
  • Spacing: --rl-space-2, --rl-space-3, --rl-space-4
  • Layout: --rl-border

Seen in patterns