Files
discord.js/apps/website/src/components/ExcerptNode.tsx
Almeida e2e71b4d09 build: bump dependencies (#10457)
* build: bump `@vladfrangu/async_event_emitter`

* chore: bump again + fixes

* build: bump types/node and some dev deps

* build: bump discord-api-types again

* style: remove unused eslint-ignore comment

* build: sync dependencies and update templates

* build: bump turbo

* build: vercel + vitest

* build: bump undici

---------

Co-authored-by: Vlad Frangu <me@vladfrangu.dev>
2024-08-22 17:33:35 +02:00

67 lines
1.9 KiB
TypeScript

import Link from 'next/link';
import { Fragment } from 'react';
import { BuiltinDocumentationLinks } from '~/util/builtinDocumentationLinks';
export async function ExcerptNode({ node, version }: { readonly node?: any; readonly version: string }) {
const createExcerpt = (excerpts: any) => {
const excerpt = Array.isArray(excerpts) ? excerpts : (excerpts.excerpts ?? [excerpts]);
return (
<span
className={
excerpts?.type === 'Extends' || excerpts?.type === 'Implements'
? 'after:content-[",_"] last-of-type:after:content-none'
: ''
}
>
{excerpt.map((excerpt: any, idx: number) => {
if (excerpt.resolvedItem) {
return (
<Link
key={`${excerpt.resolvedItem.displayName}-${idx}`}
className="text-blurple hover:text-blurple-500 dark:hover:text-blurple-300"
href={`/docs/packages/${excerpt.resolvedItem.packageName}/${excerpt.resolvedItem.version ?? version}/${excerpt.resolvedItem.uri}`}
>
{excerpt.text}
</Link>
);
}
if (excerpt.href) {
return (
<a
key={`${excerpt.text}-${idx}`}
className="text-blurple hover:text-blurple-500 dark:hover:text-blurple-300"
href={excerpt.href}
rel="external noreferrer noopener"
target="_blank"
>
{excerpt.text}
</a>
);
}
if (excerpt.text in BuiltinDocumentationLinks) {
const href = BuiltinDocumentationLinks[excerpt.text as keyof typeof BuiltinDocumentationLinks];
return (
<a
key={`${excerpt.text}-${idx}`}
className="text-blurple hover:text-blurple-500 dark:hover:text-blurple-300"
href={href}
rel="external noreferrer noopener"
target="_blank"
>
{excerpt.text}
</a>
);
}
return <Fragment key={`${excerpt.text}-${idx}`}>{excerpt.text}</Fragment>;
})}
</span>
);
};
return node?.map(createExcerpt) ?? null;
}