mirror of
https://github.com/GitbookIO/gitbook.git
synced 2026-09-23 02:53:29 +00:00
85ec1884e6
* Start methods to resolve refs * bun * Start package * Add code to resolve ref * Continue * Deref * Start monorepo * Continue * Fix ref resolver * Style a bit more * Start toggling section * Continue * Start displaying query/path/headers params * Hide respo se if empty * Fix recursive refs * Simplify interactive and styling * Display enums * Format * Improve type name being displayed * Improve naming * Render oneOf/anyOf/allOf * Handle circular references * Start variable in server url * Use client component for the spec part * Improve CSS sizing * Display open api blocks in aside * Make aside an overlay * Improve stickiness of openapi * Align document on the left when api page * Improve general layout * Better align * Fix padding in aside * Use syntax highlighting * Show sample of response * Improve code generation * Improve code generated * Format * Format * Rename to OpenAPI * Skip deprecated properties and handle additionalProperties * Use discriminator for naming * Better name enum * Make entire header toggeable * Format and lint * Add curl example * Improve curl * style pass * Start securities * Bun * Fix TS * Improve label * Start markdown * Improve code samples * Test * Use custom skeleton for api block * Format * Add support for redocly code samples * Fix api blocks in aside * Use typography for markdown * Format * Fix spacing in markdown * Render headers * Format * Format --------- Co-authored-by: Sebastian Graz <graz@live.se>
62 lines
2.3 KiB
TypeScript
62 lines
2.3 KiB
TypeScript
import classNames from 'classnames';
|
|
|
|
import { OpenAPIOperationData, toJSON } from './fetchOpenAPIOperation';
|
|
import { OpenAPIServerURL } from './OpenAPIServerURL';
|
|
import { OpenAPIClientContext, OpenAPIContextProps } from './types';
|
|
import { OpenAPICodeSample } from './OpenAPICodeSample';
|
|
import { OpenAPISpec } from './OpenAPISpec';
|
|
import { OpenAPIResponseExample } from './OpenAPIResponseExample';
|
|
import { Markdown } from './Markdown';
|
|
|
|
/**
|
|
* Display an interactive OpenAPI operation.
|
|
*/
|
|
export function OpenAPIOperation(props: {
|
|
data: OpenAPIOperationData;
|
|
context: OpenAPIContextProps;
|
|
}) {
|
|
const { data, context } = props;
|
|
const { operation, servers, method, path } = data;
|
|
|
|
const clientContext: OpenAPIClientContext = {
|
|
icons: context.icons,
|
|
};
|
|
|
|
return (
|
|
<div className={classNames('openapi-operation')}>
|
|
<div className="openapi-intro">
|
|
<h2 className="openapi-summary">{operation.summary}</h2>
|
|
{operation.description ? (
|
|
<Markdown className="openapi-description" source={operation.description} />
|
|
) : null}
|
|
<div className="openapi-target">
|
|
<span
|
|
className={classNames(
|
|
'openapi-method',
|
|
`openapi-method-${method.toLowerCase()}`,
|
|
)}
|
|
>
|
|
{method.toUpperCase()}
|
|
</span>
|
|
<span className="openapi-url">
|
|
<OpenAPIServerURL servers={servers} />
|
|
{path}
|
|
</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div className={classNames('openapi-columns')}>
|
|
<div className={classNames('openapi-column-spec')}>
|
|
<OpenAPISpec rawData={toJSON(data)} context={clientContext} />
|
|
</div>
|
|
<div className={classNames('openapi-column-preview')}>
|
|
<div className={classNames('openapi-column-preview-body')}>
|
|
<OpenAPICodeSample {...props} />
|
|
<OpenAPIResponseExample {...props} />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|