mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-12 01:23:31 +01:00
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:
@@ -1,3 +1,5 @@
|
||||
'use cache';
|
||||
|
||||
import { VscSymbolParameter } from '@react-icons/all-files/vsc/VscSymbolParameter';
|
||||
import { ConstructorNode } from './ConstructorNode';
|
||||
import { DeprecatedNode } from './DeprecatedNode';
|
||||
@@ -26,8 +28,6 @@ async function OverloadNode({
|
||||
readonly packageName: string;
|
||||
readonly version: string;
|
||||
}) {
|
||||
'use cache';
|
||||
|
||||
return (
|
||||
<Tabs className="flex flex-col gap-4">
|
||||
<TabList className="flex flex-wrap gap-2">
|
||||
@@ -63,8 +63,6 @@ export async function DocItem({
|
||||
readonly packageName: string;
|
||||
readonly version: string;
|
||||
}) {
|
||||
'use cache';
|
||||
|
||||
if (node.overloads?.length) {
|
||||
return <OverloadNode node={node} packageName={packageName} version={version} />;
|
||||
}
|
||||
|
||||
43
apps/website/src/components/EntrypointSelect.tsx
Normal file
43
apps/website/src/components/EntrypointSelect.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
@@ -5,8 +5,16 @@ import { resolveNodeKind } from './DocKind';
|
||||
import { NavigationItem } from './NavigationItem';
|
||||
import { Collapsible, CollapsibleContent, CollapsibleTrigger } from './ui/Collapsible';
|
||||
|
||||
export async function Navigation({ packageName, version }: { readonly packageName: string; readonly version: string }) {
|
||||
const node = await fetchSitemap({ packageName, version });
|
||||
export async function Navigation({
|
||||
entryPoint,
|
||||
packageName,
|
||||
version,
|
||||
}: {
|
||||
readonly entryPoint?: string | undefined;
|
||||
readonly packageName: string;
|
||||
readonly version: string;
|
||||
}) {
|
||||
const node = await fetchSitemap({ entryPoint, packageName, version });
|
||||
|
||||
if (!node) {
|
||||
notFound();
|
||||
|
||||
Reference in New Issue
Block a user