import { FC, ReactNode, useEffect, useState } from 'react'; import { Box, Typography } from '@mui/material'; import { ApiDocumentationEndpointAction } from '../../core/documentation/types'; import { ApiDocumentationResponseBadge } from './ApiDocumentationResponseBadge'; import { ApiDocumentationBoxParameters } from './ApiDocumentationBoxParameters'; import { ApiDocumentationBoxHeader } from './ApiDocumentationBoxHeader'; type ApiDocumentationBoxProps = { route: string; action: ApiDocumentationEndpointAction; activeAction?: string; actions?: ReactNode[]; }; export const ApiDocumentationBox: FC = ({ route, action, activeAction, actions }) => { const [open, setOpen] = useState(false); useEffect(() => { setOpen(activeAction ? activeAction === action.route : false); }, [activeAction]); return ( {open && ( {action.description && ( <>

{action.description}

)} {action.httpMethod === 'GET' ? 'Query' : 'Body'} parameters {action.parametersDeclaringType && ( <> {' (declared in '} {action.parametersDeclaringType} ) )} : )}
); };