feat(portal-shell): thin full-width footer with copyright + a11y links #88
Reference in New Issue
Block a user
Delete Branch "feat/portal-shell/footer"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
© <year> APF France handicapcopyright on the left and the FR + EN accessibility statement links on the right, separated by a thin divider.Why footer rather than the help menu
The header's
circle-helpicon will eventually open a help menu (FAQ, keyboard shortcuts, contact support) — that's product help, not legal / compliance. Auditors (RGAA 4.1, EN 301 549) look for the accessibility statement in the footer; hiding it inside a help dropdown would hurt discoverability. The footer is the canonical home.Why both FR + EN stay visible
There is no language toggle yet —
@angular/localizeand its ADR are a separate chantier. Until then, exposing both languages prevents a francophone user from landing on the EN page (or vice versa) via a stale favourite. Once the locale switcher lands, the footer drops the link that doesn't match the active locale.Layout
The sidebar now sits between header and footer, so the collapse toggle stays flush above the footer at every viewport size. shell-main still owns its own vertical scroll so long content does not push the footer off-screen.
What this PR reserves for later (placeholder)
@angular/localizeis in.environment.tsper ADR-0018 is wired up.Both belong in the footer; the layout already has slots for them (center / right groupings).
Accessibility
<footer aria-label="Page footer">landmark.<nav aria-label="Legal">with hover underline + visible focus ring (brand primary, 4 px offset). Inline-link exception applies to the 44×44 touch target (ADR-0016).dark:bg-gray-900, gray-500 text →dark:text-gray-400, brand-primary-500 hover →dark:hover:text-brand-primary-300.Test plan
pnpm exec nx run-many -t lint test build --projects=portal-shell— green (36 / 36 specs, +3 for the footer)./accessibilityand/accessibilitelinks navigate correctly and getaria-current="page"when active.