From 9015db565e50e47067dd9fda8abae686e2cc3b3e Mon Sep 17 00:00:00 2001 From: Kawa Date: Wed, 1 Apr 2026 13:25:00 +0200 Subject: [PATCH] feat(11-01): MD3 focus-visible ring-3 indicators on all interactive elements - md3-buttons.ts: upgrade ring-2/50 to ring-3 on all three constants (FILLED, OUTLINED, TEXT) - BackendCard: add focus-visible:outline-none focus-visible:ring-3 focus-visible:ring-primary - StepIndicator: upgrade group-focus-visible completed-step circle from ring-2/50 to ring-3 - ThemeToggle: add focus-visible ring-3 with ring-inset to both selected/unselected branches - FieldRenderer: select uses focus-visible:ring-2 (was focus:ring-2); tooltip buttons get focus-visible:ring-2 rounded --- src/components/ui/BackendCard.tsx | 2 +- src/components/ui/FieldRenderer.tsx | 6 +++--- src/components/ui/ThemeToggle.tsx | 4 ++-- src/components/wizard/StepIndicator.tsx | 2 +- src/styles/md3-buttons.ts | 6 +++--- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/components/ui/BackendCard.tsx b/src/components/ui/BackendCard.tsx index 18739fc..7fab752 100644 --- a/src/components/ui/BackendCard.tsx +++ b/src/components/ui/BackendCard.tsx @@ -14,7 +14,7 @@ export function BackendCard({ name, description, selected = false, onClick, ...r onClick={onClick} data-selected={selected} className={[ - 'w-full flex flex-col items-start gap-1 rounded-xl border-2 p-4 text-left transition-all', + 'w-full flex flex-col items-start gap-1 rounded-xl border-2 p-4 text-left transition-all focus-visible:outline-none focus-visible:ring-3 focus-visible:ring-primary', selected ? 'border-primary bg-primary/10 shadow-md' : 'border-outline bg-surface-container shadow hover:border-primary hover:bg-surface hover:shadow-md', diff --git a/src/components/ui/FieldRenderer.tsx b/src/components/ui/FieldRenderer.tsx index dc4167f..8e33a49 100644 --- a/src/components/ui/FieldRenderer.tsx +++ b/src/components/ui/FieldRenderer.tsx @@ -53,7 +53,7 @@ export function FieldRenderer({ field, register, error }: FieldRendererProps) { onMouseEnter={() => setHoverTooltip(true)} onMouseLeave={() => setHoverTooltip(false)} aria-label={`More info about ${field.label}`} - className="text-primary hover:text-primary text-xs leading-none" + className="text-primary hover:text-primary text-xs leading-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary rounded" > ⓘ @@ -67,7 +67,7 @@ export function FieldRenderer({ field, register, error }: FieldRendererProps) {