Header, Footer und Navigation mit DOS-Modus (MAIN-10) #5
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "agent/full-stack-web-engineer/fbcbc5dcccbc"
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?
Closes MAIN-10. Builds on PR #3 (design system, MAIN-9), which builds on #1 (MAIN-8). Merge order: #1 → #3 → this PR. After that, change the base to the target branch.
What changed
layouts/default.vue): skip link «Zum Inhalt», header,<main id="main">, footer./design-systemkeeps its own layout (layout: false).components/site/Header.vue): plain-text navigation (Leistungen, Referenzen, Projekte, Über mich, Kontakt) with the file name as a mono subtitle (maker.bin,clients.dat,projects.dir,about.txt,comm.sys). The file names are hidden from screen readers. The active page hasaria-current="page"and an orange underline.aria-expanded/aria-controls. Escape closes it and returns focus to the button; navigating closes it too. Every target is at least 44 px tall.components/site/Footer.vue): DOS-style F-key bar (F1 Hilfe → Kontakt, F2–F5 main pages, F9 Datenschutz, F10 Impressum) plus copyright and «Kein Tracking».DosToggle.vue,useDosMode.ts): toggle witharia-pressedthat switches to the existing dark palette. Without a choice, the system setting applies. The choice is stored inlocalStorage(meowww-theme) and applied asdata-themeon<html>. An inline script innuxt.config.tssets it before first paint, so there is no light flash.utils/navigation.ts.SitePlaceholder,noindex). Prerendering runs withfailOnError, so dead links would break the build. MAIN-11 to MAIN-16 replace them.docs/design-system.md, structure in the README.Decision: no real F-key hotkeys
The F-keys are only links. Pressing F1–F12 is deliberately not intercepted: the browser needs them (F5 reload, F6 address bar, F7 caret browsing, F11 fullscreen, F12 devtools), and overriding them would hurt keyboard and screen-reader users. Keyboard navigation works through Tab/Enter.
How to test
Verification
npm run lint,npm run typecheckandnpm run generatepass locally. All 20 routes prerender without errors.<head>,aria-current,aria-expanded,aria-pressedpresent, CSS rules fordata-themepresent, no external URLs.Known limitations
main.css(system setting anddata-theme="dos") and must stay in sync. There's a comment next to them.🤖 Generated with Claude Code
Summary
PR #5 ist in
test/access-check-main-1gemergt (7238fdd).Conflicts resolved
layouts/,composables/,utils/,components/site/und die Platzhalter-Seiten → nachapp/(Nuxt 4).app/pages/kontakt.vue,app/pages/projekte.vue→ Die echten Seiten aus MAIN-15/MAIN-14 bleiben, die Platzhalter aus diesem PR wurden verworfen. Das eigene<main id="main">und den Skip-Link dieser Seiten habe ich entfernt, weilapp/layouts/default.vuebeides liefert. Sonst gäbe es ein doppeltesid="main"und verschachtelte<main>. Geprüft: Jede vorgerenderte Seite hat genau ein<main>.data-theme) → in die Tailwind-4-app/assets/css/main.cssübernommen.README.md,docs/design-system.md, Kommentar innuxt.config.ts→ Pfade aufapp/aktualisiert.Verification (lokal, nach jeder Auflösung):
npm run lint,npm run typecheck,npm test(23/23),npm run build,npm run test:e2e(5/5): alles grün. Forgejo-CI steht seit Tagen auf pending (auch auf dem Default-Branch), es läuft offenbar kein Runner.