From 075b2742040cf171986f643b4e3cf8aeb05c9cd2 Mon Sep 17 00:00:00 2001 From: Moheeb Zara Date: Sat, 16 May 2026 00:00:23 -0700 Subject: [PATCH] fix(ux): focus visibility, tap targets, form labels, surfaced errors - S6: unlayered :focus-visible ring for form controls and links so keyboard focus is perceivable (was focus:outline-none + 1px border) - S5: >=44px touch targets at the named hotspots (dashboard actions, list-row buttons, ops pills/icons, customize number inputs); dense rows use a 44px hit area without growing row height - S8: 28 form fields associated via id/htmlFor; search inputs get aria-label - S7: claim/complete/delete/link handlers now surface result.error via toast and stop instead of failing silently --- app/(app)/contacts/contacts-client.tsx | 33 ++++++------ app/(app)/customize/panels/areas-panel.tsx | 2 +- .../customize/panels/onboarding-panel.tsx | 2 +- app/(app)/dashboard/page.tsx | 4 +- app/(app)/members/members-client.tsx | 47 +++++++++-------- app/(app)/ops/ops-client.tsx | 10 ++-- app/(app)/payments/payments-client.tsx | 35 +++++++------ app/(app)/projects/projects-client.tsx | 31 ++++++------ app/(app)/tasks/tasks-client.tsx | 50 ++++++++++--------- app/globals.css | 15 ++++++ components/ops/ops-acl-editor.tsx | 2 +- 11 files changed, 125 insertions(+), 106 deletions(-) diff --git a/app/(app)/contacts/contacts-client.tsx b/app/(app)/contacts/contacts-client.tsx index 5365f80..b8b0926 100644 --- a/app/(app)/contacts/contacts-client.tsx +++ b/app/(app)/contacts/contacts-client.tsx @@ -110,13 +110,13 @@ export function ContactsClient({ contacts: initialContacts }: { contacts: Contac
- - setForm(f => ({ ...f, name: e.target.value }))} + + setForm(f => ({ ...f, name: e.target.value }))} className="w-full bg-background border border-border rounded px-3 py-2 font-sans text-sm text-foreground focus:outline-none focus:border-primary transition" />
- - setForm(f => ({ ...f, contact_type: e.target.value }))} className="w-full bg-background border border-border rounded px-3 py-2 font-sans text-sm text-foreground focus:outline-none focus:border-primary"> {Object.keys(CATEGORY_COLORS).map(t => )} @@ -124,31 +124,31 @@ export function ContactsClient({ contacts: initialContacts }: { contacts: Contac
- - setForm(f => ({ ...f, email: e.target.value }))} + + setForm(f => ({ ...f, email: e.target.value }))} className="w-full bg-background border border-border rounded px-3 py-2 font-sans text-sm text-foreground focus:outline-none focus:border-primary transition" />
- - setForm(f => ({ ...f, phone: e.target.value }))} + + setForm(f => ({ ...f, phone: e.target.value }))} className="w-full bg-background border border-border rounded px-3 py-2 font-sans text-sm text-foreground focus:outline-none focus:border-primary transition" />
- -