Official header
The real wayne.edu masthead, rendered from @waynestate/wsuheader rather than copied into the project.
Code
The three render the same class names, the same ARIA and the same data attributes. That is checked when this site builds: a class in any of these samples that neither the markup contract nor the shipped stylesheet defines fails the build.
<!-- static-html pastes this fragment directly, since a static page has no
server-side include; the raw PHP path gets the same bytes from
wsu_masthead(), which reads them from disk instead of writing them out. -->
<link rel="stylesheet" href="/assets/wayne-ui/wayne-ui-official.css">
<div class="wsuheader">…</div>{{-- Reads the fragment from disk at render time, through
WSU\WayneUi\Support\OfficialChrome. Never copied into this file. --}}
<x-wsu::masthead variant="official" /><OfficialHeader />Why it works this way
- Not written out anywhere in WayneUI. The Vue component re-exports @waynestate/wsuheader's own Header.vue; the Blade component reads the same vendored HTML fragment from disk at render time, through WSU\WayneUi\Support\OfficialChrome. Both paths render the university's own markup, unmodified, rather than a WayneUI rendering of it.
- 1.x pasted a 2017 snapshot of this markup into its own Blade template and never re-synced it. The official component has since renamed its own wrapper element, and nobody noticed for nine years: every 1.x application had been shipping a masthead that stopped matching wayne.edu sometime around 2017. Consuming it as a real dependency is what makes that impossible to repeat, since the copy updates when the university's package does.
- The vendored markup carries none of WayneUI's wsu- classes, so it sits outside the markup contract entirely: it is not something WayneUI emits, only something it displays. Its stylesheet ships separately, as wayne-ui-official.css, and is additive only; WayneUI's base layer never restyles it.
- Renders a div with no landmark of its own. AppBar sits directly below it on every public page and already is the page's one banner, so this is deliberately not wrapped in a second header; doing so would give the page two banner landmarks.
- wsu_masthead() renders this same vendored fragment by default. Pass ['variant' => 'native'] for the standalone helper's own rendering instead, documented on the Masthead page.
- The package ships two artifacts of itself that do not agree. dist/header.html, which static HTML, raw PHP and Blade all render, and src/Header.vue, which the Vue path renders instead, differ in wrapper class (wsuheaderwrap versus wsuwrap) and other detail, measured at @waynestate/wsuheader@2.2.2 and recorded in ADR-0015. That record decides not to absorb the difference: reconciling the two here would mean forking markup this project has already decided not to fork (ADR-0004), and the fork would silently go stale the next time the package updates, which is the exact nine-year failure ADR-0004 exists to prevent.
Accessibility
- This is the component wayne.edu itself ships. WayneUI does not restyle or re-markup it, so its accessibility is wayne.edu's to maintain, not something this documentation can claim WayneUI fixes.
- Its login link and site search sit outside any landmark, because the vendored div carries none. That is the one exception the accessibility suite's advisory best-practice pass names for this dependency by name.
- src/Header.vue is also missing the aria-label="Primary" that dist/header.html's search form carries, so on the Vue path that landmark has no accessible name (4.1.2). That is upstream's defect, reported to the web team; ADR-0015 is the record of why WayneUI does not patch it locally.
- WayneUI's 44px target-size rule deliberately excludes .wsuheader *: the vendored controls are already conformant at their own size, and stretching a 35 by 30 search submit to 44 by 44 would distort its glyph.
Success criteria in brackets refer to WCAG 2.2. Every one of them is checked by axe-core in both themes at three viewport widths before this page can be published. See Accessibility for what the gates are.