fix(web): drop nested <main> on manifesto (WCAG 1.3.1)

LocalizedPageShell at app/_components/localized-page-shell.tsx:34
already renders <main className='flex-1'>{children}</main> as the
page landmark. The manifesto/page.tsx shell was wrapping that with
its own <main>, producing nested main landmarks (axe-core:
landmark-no-duplicate-main + landmark-main-is-top-level).

Switch outer wrapper to <div>; keep styling (bg-background,
text-foreground, min-h-screen, overflow-x-hidden) intact. The
inner <main> from the shell remains the canonical landmark.

Pre-existing on origin/dev (the pre-decomposition manifesto/page.tsx
also had a top-level <main>), surfaced by PR #4202 hands-on QA
via axe-core run on /ko/manifesto.
This commit is contained in:
YeonGyu-Kim
2026-05-20 15:00:22 +09:00
parent f5d5e9801b
commit e9c44ddb1b
+2 -2
View File
@@ -12,7 +12,7 @@ import { Separator } from "@/components/ui/separator"
export default async function ManifestoPage(): Promise<JSX.Element> { export default async function ManifestoPage(): Promise<JSX.Element> {
return ( return (
<main className="bg-background text-foreground min-h-screen overflow-x-hidden"> <div className="bg-background text-foreground min-h-screen overflow-x-hidden">
<HeroSection /> <HeroSection />
<PainPointsSection /> <PainPointsSection />
<Separator className="mx-auto max-w-4xl opacity-20" /> <Separator className="mx-auto max-w-4xl opacity-20" />
@@ -24,6 +24,6 @@ export default async function ManifestoPage(): Promise<JSX.Element> {
<CoreLoopSection /> <CoreLoopSection />
<FutureSection /> <FutureSection />
<FinalCtaSection /> <FinalCtaSection />
</main> </div>
) )
} }