diff --git a/frontend/src/features/settings/tabs/ProductUsageTab.tsx b/frontend/src/features/settings/tabs/ProductUsageTab.tsx index 28fec5fe..1eeb8a1e 100644 --- a/frontend/src/features/settings/tabs/ProductUsageTab.tsx +++ b/frontend/src/features/settings/tabs/ProductUsageTab.tsx @@ -26,10 +26,9 @@ const DISCLOSURE: { key: string; heading: string; Icon: ComponentType<{ className?: string }>; - tone?: 'positive'; }[] = [ { key: 'fields', heading: 'sectionFields', Icon: ListChecks }, - { key: 'excluded', heading: 'sectionExcluded', Icon: ShieldOff, tone: 'positive' }, + { key: 'excluded', heading: 'sectionExcluded', Icon: ShieldOff }, { key: 'transport', heading: 'sectionTransport', Icon: Send }, { key: 'visibility', heading: 'sectionVisibility', Icon: Globe }, { key: 'deletion', heading: 'sectionDeletion', Icon: Trash2 }, @@ -52,11 +51,19 @@ function ConsentDialog({ const [checked, setChecked] = useState(false); useEffect(() => { ref.current?.showModal(); + // showModal() focuses the first focusable descendant, which is the scroll + // region below — so its focus ring was drawn for everyone the moment the + // dialog opened, and because the dialog clips its sides an inset ring + // reads as two coloured bars across the disclosure rather than a ring. + // Focusing the dialog puts the ring back where it belongs: only when + // someone deliberately tabs to the region. + ref.current?.focus(); }, []); return (
@@ -92,17 +99,10 @@ function ConsentDialog({ tabIndex={0} role="group" aria-label={t('productUsage.consentTitle') as string} - className="flex-1 overflow-y-auto border-y border-neutral-200 dark:border-neutral-700 px-6 py-4 space-y-4 focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary-500" + className="flex-1 overflow-y-auto border-y border-neutral-200 dark:border-neutral-700 px-6 py-4 space-y-4 focus:outline-none focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-primary-400" > - {DISCLOSURE.map(({ key, heading, Icon, tone }) => ( -
+ {DISCLOSURE.map(({ key, heading, Icon }) => ( +

{t(`productUsage.${heading}`)}