From 1111dd6709542e53e3b434b46ecd8bd9f98d21a4 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Thu, 29 Oct 2026 17:50:09 +0100 Subject: [PATCH] fix: show the focus outline on menu items, grid cells and other roving-focus controls --- app/(main)/[locale]/login/page.tsx | 4 +- app/(main)/admin/_pages/marketplace.tsx | 2 +- app/(main)/admin/login/page.tsx | 2 +- app/(main)/setup/page.tsx | 4 +- app/accessibility.css | 24 +++--- app/globals.css | 2 +- components/admin/button-link.tsx | 2 +- components/admin/config-items.tsx | 2 +- .../org/sections/external-mail-section.tsx | 2 +- .../admin/org/sections/recovery-section.tsx | 2 +- .../admin/org/sections/sessions-section.tsx | 2 +- .../admin/org/sections/signature-section.tsx | 4 +- .../admin/org/sections/templates-section.tsx | 4 +- components/calendar/alert-list-editor.tsx | 2 +- components/calendar/calendar-search.tsx | 2 +- components/calendar/create-calendar-modal.tsx | 2 +- components/calendar/event-detail-popover.tsx | 2 +- components/calendar/event-modal.tsx | 14 ++-- components/calendar/ical-import-modal.tsx | 6 +- .../calendar/ical-subscription-modal.tsx | 2 +- components/calendar/quick-create-popover.tsx | 2 +- components/calendar/quick-event-input.tsx | 2 +- components/calendar/recurrence-editor.tsx | 2 +- components/calendar/task-list-view.tsx | 2 +- components/calendar/task-modal.tsx | 2 +- .../contacts/address-book-picker-dialog.tsx | 2 +- components/contacts/contact-form.tsx | 8 +- components/contacts/contact-list-item.tsx | 2 +- components/contacts/contacts-sidebar.tsx | 2 +- components/email/email-composer.tsx | 2 +- components/email/email-viewer.tsx | 4 +- components/email/external-sender-chip.tsx | 2 +- components/email/message-list-tabs.tsx | 2 +- components/email/plugin-list-filters.tsx | 2 +- components/email/schedule-send-dialog.tsx | 4 +- components/email/selectable-avatar.tsx | 2 +- components/email/tag-picker.tsx | 4 +- components/files/folder-picker-dialog.tsx | 2 +- components/files/new-file-dialog.tsx | 2 +- components/filters/filter-rule-modal.tsx | 6 +- components/identity/identity-form.tsx | 4 +- components/layout/app-landmarks.tsx | 2 +- components/layout/resize-handle.tsx | 2 +- components/layout/sidebar.tsx | 4 +- components/mail/mail-app.tsx | 2 +- .../notifications/notification-center.tsx | 2 +- components/plugins/plugin-actions.tsx | 4 +- components/plugins/plugin-connect-dialog.tsx | 6 +- components/search/search-filter-panel.tsx | 2 +- .../__tests__/about-data-settings.test.tsx | 9 ++- components/settings/about-data-settings.tsx | 2 +- .../settings/account-security-settings.tsx | 16 ++-- .../address-book-management-settings.tsx | 2 +- .../settings/calendar-management-settings.tsx | 6 +- components/settings/composing-settings.tsx | 2 +- .../settings/delegates/delegate-dialog.tsx | 2 +- components/settings/downloads-settings.tsx | 2 +- components/settings/folder-settings.tsx | 8 +- components/settings/identity-settings.tsx | 2 +- components/settings/keyword-settings.tsx | 8 +- components/settings/settings-section.tsx | 2 +- .../settings/share-collection-dialog.tsx | 4 +- components/settings/shared-tag-settings.tsx | 2 +- components/settings/vacation-settings.tsx | 8 +- components/templates/template-form.tsx | 4 +- components/trusted-senders-modal.tsx | 4 +- components/ui/button.tsx | 2 +- components/ui/input.tsx | 2 +- components/ui/language-switcher.tsx | 2 +- lib/__tests__/accessibility-focus-css.test.ts | 75 +++++++++++++++++++ lib/__tests__/plugin-ui-kit.test.tsx | 2 +- lib/builtin-themes.ts | 4 +- lib/plugin-sandbox/ui-kit/components.tsx | 28 +++---- 73 files changed, 226 insertions(+), 142 deletions(-) create mode 100644 lib/__tests__/accessibility-focus-css.test.ts diff --git a/app/(main)/[locale]/login/page.tsx b/app/(main)/[locale]/login/page.tsx index 4bc5ae035..61dec201b 100644 --- a/app/(main)/[locale]/login/page.tsx +++ b/app/(main)/[locale]/login/page.tsx @@ -126,7 +126,7 @@ function VersionBadge() { const triggerClass = cn( "peer text-center text-xs transition-colors rounded-sm underline-offset-2 hover:underline", - "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", + "focus-visible:outline-hidden", triggerColor, ); @@ -1686,7 +1686,7 @@ function LoginPageContent() { onChange={(e) => setRememberMe(e.target.checked)} className="peer sr-only" /> - + {rememberMe && (