feat(web): add loading skeletons, error boundaries, and accessibility improvements

- Add segment-level loading.tsx for dashboard, search, admin, and auth routes
- Add segment-level error.tsx with Vietnamese error messages for all route groups
- Add skip-to-content navigation link in root layout
- Add id="main-content" to all layout main elements
- Add aria-label to nav elements and mobile menu buttons
- Improve dashboard nav responsiveness (icon-only on mobile)
- Hide user name on small screens in dashboard layout

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
Ho Ngoc Hai
2026-04-08 13:48:33 +07:00
parent 400a75845c
commit a590a41e73
13 changed files with 498 additions and 13 deletions

View File

@@ -18,7 +18,7 @@ export default function PublicLayout({ children }: { children: React.ReactNode }
<span className="text-lg font-bold text-primary">GoodGo</span>
</Link>
<nav className="flex items-center space-x-1">
<nav aria-label="Điều hướng chính" className="flex items-center space-x-1">
<Link
href="/"
className={cn(
@@ -67,7 +67,7 @@ export default function PublicLayout({ children }: { children: React.ReactNode }
</div>
</header>
<main>{children}</main>
<main id="main-content">{children}</main>
<footer className="border-t bg-muted/40">
<div className="mx-auto max-w-7xl px-4 py-8">