import {APIMember} from '@sanity/tsdoc' import {Box, Card, Code, Container, Flex, Text, ThemeColorSyntax} from '@sanity/ui' import {TSDocMemberTitle} from '../app' import {CommentDeprecatedCallout, CommentSummary} from '../comment' import {SyntaxText} from '../components/ColoredCode' import {H, Level, Size, useSpace, useTextSize} from '../lib/ui' import {ReferenceContent} from './content' import {TSMemberReleaseTag} from './members/TSMemberReleaseTag' const TYPE_NAME: Record = { 'api.class': 'class', 'api.enum': 'enum', 'api.function': 'function', 'api.interface': 'interface', 'api.namespace': 'namespace', 'api.typeAlias': 'type', 'api.variable': 'variable', } const TYPE_NAME_SYNTAX: Record = { class: 'keyword', component: 'keyword', enum: 'keyword', function: 'keyword', hook: 'keyword', interface: 'keyword', namespace: 'keyword', type: 'keyword', variable: undefined, } function _getTypeName(data: APIMember) { if ('isReactComponentType' in data && data.isReactComponentType) { return 'component' } if ('isReactHook' in data && data.isReactHook) { return 'hook' } return TYPE_NAME[data._type] } /** @beta */ export function TSDocArticle(props: {data: APIMember & {versions: string[]}}): React.ReactNode { const {data} = props const isType = ['api.interface', 'api.namespace', 'api.typeAlias'].includes(data._type) const typeName = _getTypeName(data) const {comment, releaseTag} = data return ( {typeName} {data.comment?.deprecated && } {data.comment && } Import {`import {${ isType ? `type ` : `` }${data.name}} from '${data.export?.name}'`} ) }