From dcc504fcfa3d740ca79f9e26350c57397b32e8db Mon Sep 17 00:00:00 2001
From: Linus Rath <139418639+rathlinus@users.noreply.github.com>
Date: Thu, 29 Oct 2026 15:50:40 +0100
Subject: [PATCH] feat: add landmarks, an h1 per app, skip links and F6 between
panes
---
app/(main)/[locale]/layout.tsx | 2 +
components/calendar/calendar-app.tsx | 9 +-
components/contacts/contacts-app.tsx | 19 ++-
.../thread-conversation-actions.test.tsx | 2 +-
components/email/email-list.tsx | 1 +
components/email/email-viewer.tsx | 10 +-
components/email/thread-conversation-view.tsx | 4 +-
components/files/file-browser.tsx | 20 ++-
components/files/file-views.tsx | 4 +-
components/files/files-app.tsx | 11 +-
.../layout/__tests__/app-landmarks.test.tsx | 119 ++++++++++++++++++
components/layout/app-landmarks.tsx | 65 ++++++++++
components/layout/mobile-header.tsx | 3 +-
components/layout/pane-cycle.tsx | 67 ++++++++++
components/layout/sidebar.tsx | 4 +-
components/mail/mail-app.tsx | 22 +++-
components/settings/settings-app.tsx | 20 +--
lib/keyboard.ts | 15 +++
locales/ar/common.json | 6 +-
locales/ca/common.json | 6 +-
locales/cs/common.json | 6 +-
locales/da/common.json | 6 +-
locales/de/common.json | 6 +-
locales/en/common.json | 6 +-
locales/es/common.json | 6 +-
locales/et/common.json | 6 +-
locales/fa/common.json | 6 +-
locales/fr/common.json | 6 +-
locales/he/common.json | 6 +-
locales/hu/common.json | 6 +-
locales/it/common.json | 6 +-
locales/ja/common.json | 6 +-
locales/ko/common.json | 6 +-
locales/lv/common.json | 6 +-
locales/mn/common.json | 6 +-
locales/nb/common.json | 6 +-
locales/nl/common.json | 6 +-
locales/pl/common.json | 6 +-
locales/pt/common.json | 6 +-
locales/ro/common.json | 6 +-
locales/ru/common.json | 6 +-
locales/sk/common.json | 6 +-
locales/th/common.json | 6 +-
locales/tr/common.json | 6 +-
locales/uk/common.json | 6 +-
locales/zh-TW/common.json | 6 +-
locales/zh/common.json | 6 +-
47 files changed, 501 insertions(+), 70 deletions(-)
create mode 100644 components/layout/__tests__/app-landmarks.test.tsx
create mode 100644 components/layout/app-landmarks.tsx
create mode 100644 components/layout/pane-cycle.tsx
diff --git a/app/(main)/[locale]/layout.tsx b/app/(main)/[locale]/layout.tsx
index eb4793724..3539ff19a 100644
--- a/app/(main)/[locale]/layout.tsx
+++ b/app/(main)/[locale]/layout.tsx
@@ -12,6 +12,7 @@ import { ImpersonationReconciler } from "@/components/impersonation/impersonatio
import { PluginDialogHost } from "@/components/plugins/plugin-dialog-host";
import { ExternalRecipientConfirmHost } from "@/components/email/external-recipient-confirm";
import { PluginPageNavigator } from "@/components/plugins/plugin-page-navigator";
+import { PaneCycleHost } from "@/components/layout/pane-cycle";
import { CommandPaletteHost } from "@/components/command-palette/command-palette";
import { AccessibilityQuickPanelHost } from "@/components/accessibility/accessibility-quick-panel";
import { TotpReauthDialog } from "@/components/totp-reauth-dialog";
@@ -79,6 +80,7 @@ export default async function LocaleLayout({
{tDemoWelcome('description')}
{t('no_conversation_description')}
{onCompose && (