1import React from 'react'; 2 3import { InlineCode } from '~/components/base/code'; 4import { LI, UL } from '~/components/base/list'; 5import { H2, H3Code } from '~/components/plugins/Headings'; 6import { EnumDefinitionData, EnumValueData } from '~/components/plugins/api/APIDataTypes'; 7import { CommentTextBlock, mdInlineRenderers } from '~/components/plugins/api/APISectionUtils'; 8 9export type APISectionEnumsProps = { 10 data: EnumDefinitionData[]; 11}; 12 13const renderEnum = ({ name, children, comment }: EnumDefinitionData): JSX.Element => ( 14 <div key={`enum-definition-${name}`}> 15 <H3Code> 16 <InlineCode>{name}</InlineCode> 17 </H3Code> 18 <UL> 19 {children.map((enumValue: EnumValueData) => ( 20 <LI key={enumValue.name}> 21 <InlineCode> 22 {name}.{enumValue.name} 23 </InlineCode> 24 <CommentTextBlock comment={comment} renderers={mdInlineRenderers} withDash /> 25 </LI> 26 ))} 27 </UL> 28 </div> 29); 30 31const APISectionEnums: React.FC<APISectionEnumsProps> = ({ data }) => 32 data?.length ? ( 33 <> 34 <H2 key="enums-header">Enums</H2> 35 {data.map(renderEnum)} 36 </> 37 ) : null; 38 39export default APISectionEnums; 40