feat(a11y): add skip-to-content links and ARIA labels to calendar, contacts, todo

- Add skip-to-content link ("Zum Inhalt springen") to all 3 app layouts
- Add id="main-content" to main content areas
- Add ariaLabel prop to shared PillNavigation component
- Set aria-label="Hauptnavigation" on nav elements in all 3 apps
- Add aria-label to icon-only nav toggle button in todo

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-03-19 12:41:23 +01:00
parent 217c48663b
commit 9fc237d9ed
4 changed files with 40 additions and 2 deletions

View file

@ -255,6 +255,8 @@
showA11yQuickToggles?: boolean;
/** Called when an app should be opened in a split panel */
onOpenInPanel?: (appId: string, url: string) => void;
/** Accessible label for the nav element */
ariaLabel?: string;
}
let {
@ -296,6 +298,7 @@
onA11yReduceMotionChange,
showA11yQuickToggles = false,
onOpenInPanel,
ariaLabel,
}: Props = $props();
// Type guards for elements
@ -443,7 +446,11 @@
</script>
{#if !isCollapsed}
<nav class="pill-nav" style={primaryColor ? `--pill-primary-color: ${primaryColor}` : ''}>
<nav
class="pill-nav"
style={primaryColor ? `--pill-primary-color: ${primaryColor}` : ''}
aria-label={ariaLabel}
>
<div class="pill-nav-container">
<!-- Logo pill / App Switcher -->
{#if showAppSwitcher && appItems.length > 0}