diff --git a/.Jules/palette.md b/.Jules/palette.md new file mode 100644 index 0000000..cea7de7 --- /dev/null +++ b/.Jules/palette.md @@ -0,0 +1,3 @@ +## 2026-02-25 - Icon-Only Navigation Accessibility +**Learning:** The `MobileNav` component used `Link` with only icons and decorative elements, relying on visual cues (color/icon) but lacking accessible names. This renders the primary navigation unusable for screen reader users on mobile. Similar pattern found in `DashboardLayout` header buttons which used `title` but lacked `aria-label`. +**Action:** Always verify icon-only interactive elements (links/buttons) have `aria-label` or `sr-only` text, especially in critical navigation components. diff --git a/src/app/dashboard/layout.tsx b/src/app/dashboard/layout.tsx index 4384c4c..2ce0955 100644 --- a/src/app/dashboard/layout.tsx +++ b/src/app/dashboard/layout.tsx @@ -73,6 +73,7 @@ export default async function DashboardLayout({ size="icon" asChild title="Settings" + aria-label="Settings" className="hover:bg-muted hover:text-foreground rounded-full w-9 h-9 md:w-10 md:h-10" > @@ -92,6 +93,7 @@ export default async function DashboardLayout({ size="icon" type="submit" title="Logout" + aria-label="Logout" className="hover:bg-red-500/20 hover:text-red-400 rounded-full transition-colors w-9 h-9 md:w-10 md:h-10" > diff --git a/src/components/mobile-nav.tsx b/src/components/mobile-nav.tsx index 3640418..adbd331 100644 --- a/src/components/mobile-nav.tsx +++ b/src/components/mobile-nav.tsx @@ -56,6 +56,7 @@ export function MobileNav() { {/* Active Background Pill */}