Page shell
A skip link, the app's bar, one centred column. It lives in the system because of what happened when it did not: sign-in and certify once shipped unstyled, built against landing-page classes that were scoped to the landing page.
The frame
GdAppShell is scaffolding for a page of CONTROLS — the certify wizard, the tracker, the certifier desk, account. A document gets the docs chassis instead: a reading column, a contents rail, a display line on a bleeding band.
Lodge a certificate
Building work on Lot 14 on RP80432, Brisbane City.
Certificate details
Class 1a dwelling · form 15 and form 16 attached.
Certifier
A1 certification, licence 12048.
Four widths
Four, because there are four jobs. Three cap a column; the fourth states the same column as a gutter instead.
- narrow · 480px — the one-decision column: a sign-in card, an invite. It also sits higher on the page than the others, because a single card floating in the vertical middle of a tall viewport reads as an error state.
- wide ·
--gd-size-form— the form column, and the default: a wizard step, the tracker. The token means exactly this, the width a form column is set to. - portal · 1024px — the desk. Two working columns and a table between them, which stops being usable somewhere under this and stops being readable somewhere over it.
- full ·
--gd-size-container— account: the same column the bar above it uses, so the page's content edges meet the toolbar's.
The skip link
First in the tab order, off-screen until it takes focus. The one at the top of this page is a GdSkipLink — press Tab.
<GdSkipLink /> → <a href="#main">Skip to content</a> <GdAppShell> → <main id="main" tabindex="-1"> The tabindex is the half that gets left out. A fragment link moves the reading position in every browser but moves FOCUS only to something focusable, so a skip link pointing at a plain main leaves the keyboard exactly where it was — it has skipped nothing for the person who needed it. Point to somewhere else and whatever it names has to take the same attribute.
It goes before the bar, not after: a skip link that comes after the navigation it skips is only reachable once you have tabbed through it. And it carries no styles of its own — .gd-skip-link is defined in base.css beside the focus ring, because a skip link is a global behaviour and has to work on a page that has not adopted these components yet.