'use client'; import type { ApiItemJSON, TokenDocumentation, TypeParameterData, ApiClassJSON, ApiInterfaceJSON, } from '@discordjs/api-extractor-utils'; import { Section } from '@discordjs/ui'; import type { ReactNode } from 'react'; import { Fragment, type PropsWithChildren } from 'react'; import { Scrollbars } from 'react-custom-scrollbars-2'; import { VscSymbolClass, VscSymbolMethod, VscSymbolEnum, VscSymbolInterface, VscSymbolVariable, VscListSelection, VscSymbolParameter, } from 'react-icons/vsc'; import { useMedia } from 'react-use'; import { HyperlinkedText } from './HyperlinkedText'; import { SyntaxHighlighter } from './SyntaxHighlighter'; import { TableOfContentItems } from './TableOfContentItems'; import { TypeParamTable } from './TypeParamTable'; import { TSDoc } from './tsdoc/TSDoc'; type DocContainerProps = PropsWithChildren<{ excerpt: string; extendsTokens?: TokenDocumentation[] | null; implementsTokens?: TokenDocumentation[][]; kind: string; methods?: ApiClassJSON['methods'] | ApiInterfaceJSON['methods'] | null; name: string; properties?: ApiClassJSON['properties'] | ApiInterfaceJSON['properties'] | null; subHeading?: ReactNode; summary?: ApiItemJSON['summary']; typeParams?: TypeParameterData[]; }>; function generateIcon(kind: string) { const icons = { Class: , Method: , Function: , Enum: , Interface: , TypeAlias: , }; return icons[kind as keyof typeof icons]; } export function DocContainer({ name, kind, excerpt, summary, typeParams, children, extendsTokens, implementsTokens, methods, properties, subHeading, }: DocContainerProps) { const matches = useMedia('(max-width: 768px)', true); return ( <>

{generateIcon(kind)} {name}

{subHeading}
} padded title="Summary"> {summary ? : No summary provided.}
{extendsTokens?.length ? (

Extends

) : null} {implementsTokens?.length ? (

Implements

{implementsTokens.map((token, idx) => ( {idx < implementsTokens.length - 1 ? ', ' : ''} ))}
) : null}
{typeParams?.length ? (
} padded title="Type Parameters" >
) : null} {children}
{(kind === 'Class' || kind === 'Interface') && (methods?.length || properties?.length) ? ( ) : null} ); }