feat(api-extractor): support multiple entrypoints (#10829)

* feat(api-extractor): support multiple entrypoints

* chore: initial support in generateSplitDocumentation

* chore: bring in line with upstream

* refactor: multiple entrypoints in scripts

* fix: split docs

* feat: website

* fix: docs failing on next

* fix: don't include dtypes for now

* refactor: don't fetch entrypoint if there is none

---------

Co-authored-by: iCrawl <buechler.noel@outlook.com>
This commit is contained in:
Qjuh
2025-05-12 23:48:41 +02:00
committed by GitHub
parent 4f5e5c7c14
commit b3db92edfb
93 changed files with 2330 additions and 1956 deletions

View File

@@ -0,0 +1,43 @@
'use client';
import { useParams, useRouter } from 'next/navigation';
import { use } from 'react';
import { parseDocsPathParams } from '@/util/parseDocsPathParams';
import { Select, SelectList, SelectOption, SelectTrigger } from './ui/Select';
export function EntryPointSelect({
entryPointsPromise,
}: {
readonly entryPointsPromise: Promise<{ readonly entryPoint: string }[]>;
}) {
const router = useRouter();
const params = useParams();
const entryPoints = use(entryPointsPromise);
const { entryPoints: parsedEntrypoints } = parseDocsPathParams(params.item as string[] | undefined);
return (
<Select
aria-label="Select an entrypoint"
defaultSelectedKey={parsedEntrypoints.length ? parsedEntrypoints.join('/') : 'global'}
>
<SelectTrigger className="bg-[#f3f3f4] dark:bg-[#121214]" />
<SelectList classNames={{ popover: 'bg-[#f3f3f4] dark:bg-[#28282d]' }} items={entryPoints}>
{(item) => (
<SelectOption
className="dark:pressed:bg-[#313135] bg-[#f3f3f4] dark:bg-[#28282d] dark:hover:bg-[#313135]"
href={`/docs/packages/${params.packageName}/${params.version}/${item.entryPoint}`}
id={item.entryPoint || 'global'}
key={item.entryPoint || 'global'}
onHoverStart={() =>
router.prefetch(`/docs/packages/${params.packageName}/${params.version}/${item.entryPoint}`)
}
textValue={item.entryPoint || 'global'}
>
{item.entryPoint || 'global'}
</SelectOption>
)}
</SelectList>
</Select>
);
}