@@ -0,0 +1,67 @@
1+import { redirect } from 'next/navigation';
2+import { SCHEMA_SECTIONS } from '../sections/index';
3+import { SchemaDocLayout } from './SchemaDocLayout';
4+5+import ApiReferenceSection from '../sections/api-reference';
6+import BuiltInExtensionsSection from '../sections/built-in-extensions';
7+import CatchFallbackSection from '../sections/catch-fallback';
8+import ComparisonSection from '../sections/comparison';
9+import DefaultValuesSection from '../sections/default-values';
10+import DescribeSection from '../sections/describe';
11+import DiscriminatedUnionsSection from '../sections/discriminated-unions';
12+import ExtensionsSection from '../sections/extensions';
13+import GettingStartedSection from '../sections/getting-started';
14+import ImmutabilitySection from '../sections/immutability';
15+import PropertyDescriptorsSection from '../sections/property-descriptors';
16+import ReadonlySection from '../sections/readonly';
17+import RecursiveSchemasSection from '../sections/recursive-schemas';
18+import SchemaTypesSection from '../sections/schema-types';
19+import StandardSchemaSection from '../sections/standard-schema';
20+import ValidationSection from '../sections/validation';
21+22+export function generateStaticParams() {
23+return [{ slug: [] }, ...SCHEMA_SECTIONS.map(s => ({ slug: [s.slug] }))];
24+}
25+26+const SECTION_COMPONENTS: Record<string, React.ComponentType> = {
27+'getting-started': GettingStartedSection,
28+'schema-types': SchemaTypesSection,
29+immutability: ImmutabilitySection,
30+'discriminated-unions': DiscriminatedUnionsSection,
31+'recursive-schemas': RecursiveSchemasSection,
32+validation: ValidationSection,
33+'property-descriptors': PropertyDescriptorsSection,
34+'default-values': DefaultValuesSection,
35+'catch-fallback': CatchFallbackSection,
36+readonly: ReadonlySection,
37+describe: DescribeSection,
38+extensions: ExtensionsSection,
39+'built-in-extensions': BuiltInExtensionsSection,
40+'standard-schema': StandardSchemaSection,
41+comparison: ComparisonSection,
42+'api-reference': ApiReferenceSection
43+};
44+45+export default async function SchemaDocPage({
46+ params
47+}: {
48+params: Promise<{ slug?: string[] }>;
49+}) {
50+const { slug } = await params;
51+const currentSlug = slug?.[0] ?? null;
52+53+if (!currentSlug) {
54+redirect('/schema/getting-started');
55+}
56+57+const SectionComponent = SECTION_COMPONENTS[currentSlug];
58+if (!SectionComponent) {
59+redirect('/schema/getting-started');
60+}
61+62+return (
63+<SchemaDocLayout currentSlug={currentSlug}>
64+<SectionComponent />
65+</SchemaDocLayout>
66+);
67+}