GitHub

@@ -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+

}

Read the original on github.com ↗