From db2eeb4965e043b485e3561ec443c8430b723e36 Mon Sep 17 00:00:00 2001 From: Khairul Date: Wed, 19 Aug 2026 11:37:35 +0800 Subject: [PATCH 1/2] a11y: skip-to-main link and main landmark (#34) Mirror Create-Python-App layout: first focusable skip link targets #main-content wrapped around page children. --- src/components/layout-shell.tsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/components/layout-shell.tsx b/src/components/layout-shell.tsx index ae693c2..7e1ede0 100644 --- a/src/components/layout-shell.tsx +++ b/src/components/layout-shell.tsx @@ -14,9 +14,17 @@ export function LayoutShell({ children }: { children: ReactNode }) {
+ + Skip to main content + setOpen(true)} /> - {children} +
+ {children} +
{/* Stats row */}
From e74c9255903689a892f7d65462f944d2669189ad Mon Sep 17 00:00:00 2001 From: Khairul Date: Mon, 24 Aug 2026 09:15:24 +0800 Subject: [PATCH 2/2] a11y: single main landmark in LayoutShell (#34) Keep skip link +
in the shell; replace page-level
wrappers with
so routes no longer nest landmarks. --- src/app/docs/agents-md/page.tsx | 4 ++-- src/app/docs/layout.tsx | 4 ++-- src/app/extensions/ExtensionsPageClient.tsx | 4 ++-- src/app/extensions/[slug]/page.tsx | 4 ++-- src/app/page.tsx | 4 ++-- src/app/templates/TemplatesPageClient.tsx | 4 ++-- src/app/templates/[slug]/extensions/[extensionSlug]/page.tsx | 4 ++-- src/app/templates/[slug]/page.tsx | 4 ++-- 8 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/app/docs/agents-md/page.tsx b/src/app/docs/agents-md/page.tsx index 415cd4c..50da456 100644 --- a/src/app/docs/agents-md/page.tsx +++ b/src/app/docs/agents-md/page.tsx @@ -13,7 +13,7 @@ export const metadata = { export default function AgentsMdPage() { return (
-
+
@@ -201,7 +201,7 @@ Humans: stop reading—go to CONTRIBUTING.md + docs/.
-
+
); } diff --git a/src/app/docs/layout.tsx b/src/app/docs/layout.tsx index 13bb28f..eca00ca 100644 --- a/src/app/docs/layout.tsx +++ b/src/app/docs/layout.tsx @@ -7,12 +7,12 @@ export default function DocsLayout({ children }: { children: ReactNode }) { return (
-
+
{children} -
+
); } diff --git a/src/app/extensions/ExtensionsPageClient.tsx b/src/app/extensions/ExtensionsPageClient.tsx index daeaaa2..0fdc746 100644 --- a/src/app/extensions/ExtensionsPageClient.tsx +++ b/src/app/extensions/ExtensionsPageClient.tsx @@ -80,7 +80,7 @@ export function ExtensionsPageClient() { return (
-
+
@@ -209,7 +209,7 @@ export function ExtensionsPageClient() {
-
+
); } diff --git a/src/app/extensions/[slug]/page.tsx b/src/app/extensions/[slug]/page.tsx index 88bd7d0..e45a387 100644 --- a/src/app/extensions/[slug]/page.tsx +++ b/src/app/extensions/[slug]/page.tsx @@ -54,7 +54,7 @@ export default async function ExtensionPage({ params }: ExtensionPageProps) { const softwareJsonLd = extensionSoftwareJsonLd(extension); return (
-
+