docusaurus-theme-openapi-docs 4.1.0 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/lib/theme/ApiExplorer/CodeSnippets/index.js +2 -1
  2. package/lib/theme/ApiExplorer/CodeTabs/_CodeTabs.scss +50 -0
  3. package/lib/theme/ApiItem/Layout/index.js +6 -2
  4. package/lib/theme/ApiItem/index.js +15 -4
  5. package/lib/theme/ApiTabs/_ApiTabs.scss +0 -1
  6. package/lib/theme/ArrayBrackets/index.d.ts +3 -0
  7. package/lib/theme/ArrayBrackets/index.js +50 -0
  8. package/lib/theme/ParamsDetails/index.d.ts +6 -0
  9. package/lib/theme/ParamsDetails/index.js +134 -0
  10. package/lib/theme/ParamsItem/index.d.ts +1 -0
  11. package/lib/theme/ParamsItem/index.js +10 -6
  12. package/lib/theme/RequestSchema/index.d.ts +15 -0
  13. package/lib/theme/RequestSchema/index.js +235 -0
  14. package/lib/theme/ResponseExamples/index.d.ts +48 -0
  15. package/lib/theme/ResponseExamples/index.js +290 -0
  16. package/lib/theme/ResponseSchema/index.d.ts +15 -0
  17. package/lib/theme/ResponseSchema/index.js +206 -0
  18. package/lib/theme/Schema/index.d.ts +8 -0
  19. package/lib/theme/Schema/index.js +879 -0
  20. package/lib/theme/SchemaItem/index.d.ts +8 -8
  21. package/lib/theme/SchemaItem/index.js +9 -5
  22. package/lib/theme/SkeletonLoader/index.d.ts +6 -0
  23. package/lib/theme/SkeletonLoader/index.js +20 -0
  24. package/lib/theme/StatusCodes/index.d.ts +9 -0
  25. package/lib/theme/StatusCodes/index.js +78 -0
  26. package/lib/theme/styles.scss +56 -9
  27. package/package.json +6 -5
  28. package/src/theme/ApiExplorer/CodeSnippets/index.tsx +2 -1
  29. package/src/theme/ApiExplorer/CodeTabs/_CodeTabs.scss +50 -0
  30. package/src/theme/ApiItem/Layout/index.tsx +5 -2
  31. package/src/theme/ApiItem/index.tsx +14 -2
  32. package/src/theme/ApiTabs/_ApiTabs.scss +0 -1
  33. package/src/theme/ArrayBrackets/index.tsx +37 -0
  34. package/src/theme/ParamsDetails/index.tsx +88 -0
  35. package/src/theme/ParamsItem/index.tsx +10 -7
  36. package/src/theme/RequestSchema/index.tsx +164 -0
  37. package/src/theme/ResponseExamples/index.tsx +290 -0
  38. package/src/theme/ResponseSchema/index.tsx +151 -0
  39. package/src/theme/Schema/index.tsx +928 -0
  40. package/src/theme/SchemaItem/index.tsx +15 -13
  41. package/src/theme/SkeletonLoader/index.tsx +18 -0
  42. package/src/theme/StatusCodes/index.tsx +72 -0
  43. package/src/theme/styles.scss +56 -9
@@ -224,7 +224,7 @@ function CodeSnippets({ postman, codeSamples }) {
224
224
  ]);
225
225
  // no dependencies was intentionlly set for this particular hook. it's safe as long as if conditions are set
226
226
  (0, react_1.useEffect)(function onSelectedVariantUpdate() {
227
- if (selectedVariant && selectedVariant !== language.variant) {
227
+ if (selectedVariant && selectedVariant !== language?.variant) {
228
228
  const postmanRequest = (0, buildPostmanRequest_1.default)(postman, {
229
229
  queryParams,
230
230
  pathParams,
@@ -254,6 +254,7 @@ function CodeSnippets({ postman, codeSamples }) {
254
254
  // eslint-disable-next-line react-hooks/exhaustive-deps
255
255
  (0, react_1.useEffect)(function onSelectedSampleUpdate() {
256
256
  if (
257
+ language &&
257
258
  language.samples &&
258
259
  language.samplesSources &&
259
260
  selectedSample &&
@@ -436,6 +436,56 @@ body[class="ReactModal__Body--open"] {
436
436
  }
437
437
  }
438
438
 
439
+ .openapi-tabs__code-item--http {
440
+ color: var(--ifm-color-gray-500);
441
+ display: flex;
442
+ align-items: center;
443
+ justify-content: center;
444
+ position: relative;
445
+
446
+ &::after {
447
+ content: "";
448
+ display: inline-block;
449
+ width: 32px; /* Explicitly setting width to 32 pixels */
450
+ height: 32px; /* Explicitly setting height to 32 pixels */
451
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDIyTDggMTZMMTIgMTBNMjAgMjJMMjQgMTZMIDIwIDEwIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=");
452
+ background-size: contain;
453
+ background-repeat: no-repeat;
454
+ background-position: center; /* Center the SVG */
455
+ margin-top: 0.5rem;
456
+ }
457
+
458
+ &.active {
459
+ box-shadow: 0 0 0 3px var(--opeanpi-code-tab-shadow-color-http);
460
+ border-color: var(--openapi-code-tab-border-color-http);
461
+ }
462
+ }
463
+
464
+ .openapi-tabs__code-item--shell {
465
+ color: var(--ifm-color-gray-500);
466
+ display: flex;
467
+ align-items: center;
468
+ justify-content: center;
469
+ position: relative;
470
+
471
+ &::after {
472
+ content: "";
473
+ display: inline-block;
474
+ width: 32px; /* Explicitly setting width to 32 pixels */
475
+ height: 32px; /* Explicitly setting height to 32 pixels */
476
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDIyTDggMTZMMTIgMTBNMjAgMjJMMjQgMTZMIDIwIDEwIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=");
477
+ background-size: contain;
478
+ background-repeat: no-repeat;
479
+ background-position: center; /* Center the SVG */
480
+ margin-top: 0.5rem;
481
+ }
482
+
483
+ &.active {
484
+ box-shadow: 0 0 0 3px var(--opeanpi-code-tab-shadow-color-shell);
485
+ border-color: var(--openapi-code-tab-border-color-shell);
486
+ }
487
+ }
488
+
439
489
  @media only screen and (min-width: 768px) and (max-width: 996px) {
440
490
  .openapi-tabs__code-list {
441
491
  justify-content: space-around;
@@ -53,6 +53,7 @@ function DocItemLayout({ children }) {
53
53
  const { metadata } = (0, client_1.useDoc)();
54
54
  const { frontMatter } = (0, client_1.useDoc)();
55
55
  const api = frontMatter.api;
56
+ const schema = frontMatter.schema;
56
57
  return react_1.default.createElement(
57
58
  "div",
58
59
  { className: "row" },
@@ -86,7 +87,7 @@ function DocItemLayout({ children }) {
86
87
  {
87
88
  className: (0, clsx_1.default)(
88
89
  "col",
89
- api ? "col--7" : "col--12"
90
+ api || schema ? "col--7" : "col--12"
90
91
  ),
91
92
  },
92
93
  react_1.default.createElement(Footer_1.default, null)
@@ -99,7 +100,10 @@ function DocItemLayout({ children }) {
99
100
  react_1.default.createElement(
100
101
  "div",
101
102
  {
102
- className: (0, clsx_1.default)("col", api ? "col--7" : "col--12"),
103
+ className: (0, clsx_1.default)(
104
+ "col",
105
+ api || schema ? "col--7" : "col--12"
106
+ ),
103
107
  },
104
108
  react_1.default.createElement(Paginator_1.default, null)
105
109
  )
@@ -26,7 +26,9 @@ const useIsBrowser_1 = __importDefault(require("@docusaurus/useIsBrowser"));
26
26
  const slice_1 = require("@theme/ApiExplorer/Authorization/slice");
27
27
  const persistanceMiddleware_1 = require("@theme/ApiExplorer/persistanceMiddleware");
28
28
  const Layout_1 = __importDefault(require("@theme/ApiItem/Layout"));
29
+ const CodeBlock_1 = __importDefault(require("@theme/CodeBlock"));
29
30
  const Metadata_1 = __importDefault(require("@theme/DocItem/Metadata"));
31
+ const SkeletonLoader_1 = __importDefault(require("@theme/SkeletonLoader"));
30
32
  const clsx_1 = __importDefault(require("clsx"));
31
33
  const react_redux_1 = require("react-redux");
32
34
  const store_1 = require("./store");
@@ -42,6 +44,7 @@ function ApiItem(props) {
42
44
  const { info_path: infoPath } = frontMatter;
43
45
  let { api } = frontMatter;
44
46
  const { schema } = frontMatter;
47
+ const { sample } = frontMatter;
45
48
  // decompress and parse
46
49
  if (api) {
47
50
  try {
@@ -149,9 +152,8 @@ function ApiItem(props) {
149
152
  BrowserOnly_1.default,
150
153
  {
151
154
  fallback: react_1.default.createElement(
152
- "div",
153
- null,
154
- "Loading..."
155
+ SkeletonLoader_1.default,
156
+ { size: "lg" }
155
157
  ),
156
158
  },
157
159
  () => {
@@ -183,8 +185,17 @@ function ApiItem(props) {
183
185
  { className: (0, clsx_1.default)("row", "theme-api-markdown") },
184
186
  react_1.default.createElement(
185
187
  "div",
186
- { className: "col col--12" },
188
+ { className: "col col--7 openapi-left-panel__container schema" },
187
189
  react_1.default.createElement(MDXComponent, null)
190
+ ),
191
+ react_1.default.createElement(
192
+ "div",
193
+ { className: "col col--5 openapi-right-panel__container" },
194
+ react_1.default.createElement(
195
+ CodeBlock_1.default,
196
+ { language: "json", title: `${frontMatter.title}` },
197
+ JSON.stringify(sample, null, 2)
198
+ )
188
199
  )
189
200
  )
190
201
  )
@@ -6,7 +6,6 @@
6
6
  * ========================================================================== */
7
7
  .openapi-tabs__container {
8
8
  margin-left: -1px;
9
- margin-bottom: var(--ifm-leading);
10
9
  }
11
10
 
12
11
  .openapi-tabs__response-header {
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ export declare const OpeningArrayBracket: () => React.JSX.Element;
3
+ export declare const ClosingArrayBracket: () => React.JSX.Element;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ /* ============================================================================
3
+ * Copyright (c) Palo Alto Networks
4
+ *
5
+ * This source code is licensed under the MIT license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ * ========================================================================== */
8
+ var __importDefault =
9
+ (this && this.__importDefault) ||
10
+ function (mod) {
11
+ return mod && mod.__esModule ? mod : { default: mod };
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.ClosingArrayBracket = exports.OpeningArrayBracket = void 0;
15
+ const react_1 = __importDefault(require("react"));
16
+ const OpeningArrayBracket = () =>
17
+ react_1.default.createElement(
18
+ "li",
19
+ null,
20
+ react_1.default.createElement(
21
+ "div",
22
+ {
23
+ style: {
24
+ fontSize: "var(--ifm-code-font-size)",
25
+ opacity: 0.6,
26
+ marginLeft: "-.5rem",
27
+ paddingBottom: ".5rem",
28
+ },
29
+ },
30
+ "Array ["
31
+ )
32
+ );
33
+ exports.OpeningArrayBracket = OpeningArrayBracket;
34
+ const ClosingArrayBracket = () =>
35
+ react_1.default.createElement(
36
+ "li",
37
+ null,
38
+ react_1.default.createElement(
39
+ "div",
40
+ {
41
+ style: {
42
+ fontSize: "var(--ifm-code-font-size)",
43
+ opacity: 0.6,
44
+ marginLeft: "-.5rem",
45
+ },
46
+ },
47
+ "]"
48
+ )
49
+ );
50
+ exports.ClosingArrayBracket = ClosingArrayBracket;
@@ -0,0 +1,6 @@
1
+ import React from "react";
2
+ interface Props {
3
+ parameters: any[];
4
+ }
5
+ declare const ParamsDetails: React.FC<Props>;
6
+ export default ParamsDetails;
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ /* ============================================================================
3
+ * Copyright (c) Palo Alto Networks
4
+ *
5
+ * This source code is licensed under the MIT license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ * ========================================================================== */
8
+ var __createBinding =
9
+ (this && this.__createBinding) ||
10
+ (Object.create
11
+ ? function (o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ var desc = Object.getOwnPropertyDescriptor(m, k);
14
+ if (
15
+ !desc ||
16
+ ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)
17
+ ) {
18
+ desc = {
19
+ enumerable: true,
20
+ get: function () {
21
+ return m[k];
22
+ },
23
+ };
24
+ }
25
+ Object.defineProperty(o, k2, desc);
26
+ }
27
+ : function (o, m, k, k2) {
28
+ if (k2 === undefined) k2 = k;
29
+ o[k2] = m[k];
30
+ });
31
+ var __setModuleDefault =
32
+ (this && this.__setModuleDefault) ||
33
+ (Object.create
34
+ ? function (o, v) {
35
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
36
+ }
37
+ : function (o, v) {
38
+ o["default"] = v;
39
+ });
40
+ var __importStar =
41
+ (this && this.__importStar) ||
42
+ function (mod) {
43
+ if (mod && mod.__esModule) return mod;
44
+ var result = {};
45
+ if (mod != null)
46
+ for (var k in mod)
47
+ if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
48
+ __createBinding(result, mod, k);
49
+ __setModuleDefault(result, mod);
50
+ return result;
51
+ };
52
+ var __importDefault =
53
+ (this && this.__importDefault) ||
54
+ function (mod) {
55
+ return mod && mod.__esModule ? mod : { default: mod };
56
+ };
57
+ Object.defineProperty(exports, "__esModule", { value: true });
58
+ const react_1 = __importStar(require("react"));
59
+ const BrowserOnly_1 = __importDefault(require("@docusaurus/BrowserOnly"));
60
+ const Details_1 = __importDefault(require("@theme/Details"));
61
+ const ParamsItem_1 = __importDefault(require("@theme/ParamsItem"));
62
+ const SkeletonLoader_1 = __importDefault(require("@theme/SkeletonLoader"));
63
+ const ParamsDetailsComponent = ({ parameters }) => {
64
+ const types = ["path", "query", "header", "cookie"];
65
+ return react_1.default.createElement(
66
+ react_1.default.Fragment,
67
+ null,
68
+ types.map((type) => {
69
+ const params = parameters?.filter((param) => param?.in === type);
70
+ if (!params || params.length === 0) {
71
+ return null;
72
+ }
73
+ const summaryElement = react_1.default.createElement(
74
+ "summary",
75
+ null,
76
+ react_1.default.createElement(
77
+ "h3",
78
+ { className: "openapi-markdown__details-summary-header-params" },
79
+ `${type.charAt(0).toUpperCase() + type.slice(1)} Parameters`
80
+ )
81
+ );
82
+ return react_1.default.createElement(
83
+ Details_1.default,
84
+ {
85
+ key: type,
86
+ className: "openapi-markdown__details",
87
+ style: { marginBottom: "1rem" },
88
+ "data-collapsed": false,
89
+ open: true,
90
+ summary: summaryElement,
91
+ },
92
+ react_1.default.createElement(
93
+ "ul",
94
+ null,
95
+ params.map((param, index) =>
96
+ react_1.default.createElement(ParamsItem_1.default, {
97
+ key: index,
98
+ className: "paramsItem",
99
+ param: {
100
+ ...param,
101
+ enumDescriptions: Object.entries(
102
+ param?.schema?.["x-enumDescriptions"] ??
103
+ param?.schema?.items?.["x-enumDescriptions"] ??
104
+ {}
105
+ ),
106
+ },
107
+ })
108
+ )
109
+ )
110
+ );
111
+ })
112
+ );
113
+ };
114
+ const ParamsDetails = (props) => {
115
+ return react_1.default.createElement(
116
+ BrowserOnly_1.default,
117
+ {
118
+ fallback: react_1.default.createElement(SkeletonLoader_1.default, {
119
+ size: "sm",
120
+ }),
121
+ },
122
+ () => {
123
+ const LazyComponent = react_1.default.lazy(() =>
124
+ Promise.resolve({ default: ParamsDetailsComponent })
125
+ );
126
+ return react_1.default.createElement(
127
+ react_1.Suspense,
128
+ { fallback: null },
129
+ react_1.default.createElement(LazyComponent, { ...props })
130
+ );
131
+ }
132
+ );
133
+ };
134
+ exports.default = ParamsDetails;
@@ -9,6 +9,7 @@ export interface ExampleObject {
9
9
  externalValue?: string;
10
10
  }
11
11
  export interface Props {
12
+ className: string;
12
13
  param: {
13
14
  description: string;
14
15
  example: any;
@@ -94,7 +94,7 @@ function ParamsItem({ param, ...rest }) {
94
94
  );
95
95
  const renderDescription = (0, utils_1.guard)(description, (description) =>
96
96
  react_1.default.createElement(
97
- "div",
97
+ react_1.default.Fragment,
98
98
  null,
99
99
  react_1.default.createElement(react_markdown_1.default, {
100
100
  children: (0, createDescription_1.createDescription)(description),
@@ -124,11 +124,15 @@ function ParamsItem({ param, ...rest }) {
124
124
  const renderEnumDescriptions = (0, utils_1.guard)(
125
125
  getEnumDescriptionMarkdown(enumDescriptions),
126
126
  (value) => {
127
- return react_1.default.createElement(react_markdown_1.default, {
128
- rehypePlugins: [rehype_raw_1.default],
129
- remarkPlugins: [remark_gfm_1.default],
130
- children: value,
131
- });
127
+ return react_1.default.createElement(
128
+ "div",
129
+ { style: { marginTop: ".5rem" } },
130
+ react_1.default.createElement(react_markdown_1.default, {
131
+ rehypePlugins: [rehype_raw_1.default],
132
+ remarkPlugins: [remark_gfm_1.default],
133
+ children: value,
134
+ })
135
+ );
132
136
  }
133
137
  );
134
138
  function renderDefaultValue() {
@@ -0,0 +1,15 @@
1
+ import React from "react";
2
+ import { MediaTypeObject } from "docusaurus-plugin-openapi-docs/lib/openapi/types";
3
+ interface Props {
4
+ style?: React.CSSProperties;
5
+ title: string;
6
+ body: {
7
+ content?: {
8
+ [key: string]: MediaTypeObject;
9
+ };
10
+ description?: string;
11
+ required?: string[] | boolean;
12
+ };
13
+ }
14
+ declare const RequestSchema: React.FC<Props>;
15
+ export default RequestSchema;
@@ -0,0 +1,235 @@
1
+ "use strict";
2
+ /* ============================================================================
3
+ * Copyright (c) Palo Alto Networks
4
+ *
5
+ * This source code is licensed under the MIT license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ * ========================================================================== */
8
+ var __createBinding =
9
+ (this && this.__createBinding) ||
10
+ (Object.create
11
+ ? function (o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ var desc = Object.getOwnPropertyDescriptor(m, k);
14
+ if (
15
+ !desc ||
16
+ ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)
17
+ ) {
18
+ desc = {
19
+ enumerable: true,
20
+ get: function () {
21
+ return m[k];
22
+ },
23
+ };
24
+ }
25
+ Object.defineProperty(o, k2, desc);
26
+ }
27
+ : function (o, m, k, k2) {
28
+ if (k2 === undefined) k2 = k;
29
+ o[k2] = m[k];
30
+ });
31
+ var __setModuleDefault =
32
+ (this && this.__setModuleDefault) ||
33
+ (Object.create
34
+ ? function (o, v) {
35
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
36
+ }
37
+ : function (o, v) {
38
+ o["default"] = v;
39
+ });
40
+ var __importStar =
41
+ (this && this.__importStar) ||
42
+ function (mod) {
43
+ if (mod && mod.__esModule) return mod;
44
+ var result = {};
45
+ if (mod != null)
46
+ for (var k in mod)
47
+ if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
48
+ __createBinding(result, mod, k);
49
+ __setModuleDefault(result, mod);
50
+ return result;
51
+ };
52
+ var __importDefault =
53
+ (this && this.__importDefault) ||
54
+ function (mod) {
55
+ return mod && mod.__esModule ? mod : { default: mod };
56
+ };
57
+ Object.defineProperty(exports, "__esModule", { value: true });
58
+ const react_1 = __importStar(require("react"));
59
+ const BrowserOnly_1 = __importDefault(require("@docusaurus/BrowserOnly"));
60
+ const Details_1 = __importDefault(require("@theme/Details"));
61
+ const MimeTabs_1 = __importDefault(require("@theme/MimeTabs")); // Assume these components exist
62
+ const Schema_1 = __importDefault(require("@theme/Schema"));
63
+ const SkeletonLoader_1 = __importDefault(require("@theme/SkeletonLoader"));
64
+ const TabItem_1 = __importDefault(require("@theme/TabItem"));
65
+ const createDescription_1 = require("docusaurus-plugin-openapi-docs/lib/markdown/createDescription");
66
+ const RequestSchemaComponent = ({ title, body, style }) => {
67
+ if (
68
+ body === undefined ||
69
+ body.content === undefined ||
70
+ Object.keys(body).length === 0 ||
71
+ Object.keys(body.content).length === 0
72
+ ) {
73
+ return null;
74
+ }
75
+ const mimeTypes = Object.keys(body.content);
76
+ if (mimeTypes.length > 1) {
77
+ return react_1.default.createElement(
78
+ MimeTabs_1.default,
79
+ { className: "openapi-tabs__mime", schemaType: "request" },
80
+ mimeTypes.map((mimeType) => {
81
+ const firstBody = body.content[mimeType].schema;
82
+ if (
83
+ firstBody === undefined ||
84
+ (firstBody.properties &&
85
+ Object.keys(firstBody.properties).length === 0)
86
+ ) {
87
+ return null;
88
+ }
89
+ return (
90
+ // @ts-ignore
91
+ react_1.default.createElement(
92
+ TabItem_1.default,
93
+ { key: mimeType, label: mimeType, value: mimeType },
94
+ react_1.default.createElement(
95
+ Details_1.default,
96
+ {
97
+ className: "openapi-markdown__details mime",
98
+ "data-collapsed": false,
99
+ open: true,
100
+ style: style,
101
+ summary: react_1.default.createElement(
102
+ react_1.default.Fragment,
103
+ null,
104
+ react_1.default.createElement(
105
+ "summary",
106
+ null,
107
+ react_1.default.createElement(
108
+ "h3",
109
+ {
110
+ className:
111
+ "openapi-markdown__details-summary-header-body",
112
+ },
113
+ title,
114
+ body.required === true &&
115
+ react_1.default.createElement(
116
+ "span",
117
+ { className: "openapi-schema__required" },
118
+ "required"
119
+ )
120
+ )
121
+ )
122
+ ),
123
+ },
124
+ react_1.default.createElement(
125
+ "div",
126
+ { style: { textAlign: "left", marginLeft: "1rem" } },
127
+ body.description &&
128
+ react_1.default.createElement(
129
+ "div",
130
+ { style: { marginTop: "1rem", marginBottom: "1rem" } },
131
+ (0, createDescription_1.createDescription)(body.description)
132
+ )
133
+ ),
134
+ react_1.default.createElement(
135
+ "ul",
136
+ { style: { marginLeft: "1rem" } },
137
+ react_1.default.createElement(Schema_1.default, {
138
+ schema: firstBody,
139
+ schemaType: "request",
140
+ })
141
+ )
142
+ )
143
+ )
144
+ );
145
+ })
146
+ );
147
+ }
148
+ const randomFirstKey = mimeTypes[0];
149
+ const firstBody =
150
+ body.content[randomFirstKey].schema ?? body.content[randomFirstKey];
151
+ if (firstBody === undefined) {
152
+ return null;
153
+ }
154
+ return react_1.default.createElement(
155
+ MimeTabs_1.default,
156
+ { className: "openapi-tabs__mime", schemaType: "request" },
157
+ react_1.default.createElement(
158
+ TabItem_1.default,
159
+ { label: randomFirstKey, value: `${randomFirstKey}-schema` },
160
+ react_1.default.createElement(
161
+ Details_1.default,
162
+ {
163
+ className: "openapi-markdown__details mime",
164
+ "data-collapsed": false,
165
+ open: true,
166
+ style: style,
167
+ summary: react_1.default.createElement(
168
+ react_1.default.Fragment,
169
+ null,
170
+ react_1.default.createElement(
171
+ "summary",
172
+ null,
173
+ react_1.default.createElement(
174
+ "h3",
175
+ { className: "openapi-markdown__details-summary-header-body" },
176
+ title,
177
+ firstBody.type === "array" &&
178
+ react_1.default.createElement(
179
+ "span",
180
+ { style: { opacity: "0.6" } },
181
+ " array"
182
+ ),
183
+ body.required &&
184
+ react_1.default.createElement(
185
+ "strong",
186
+ { className: "openapi-schema__required" },
187
+ "required"
188
+ )
189
+ )
190
+ )
191
+ ),
192
+ },
193
+ react_1.default.createElement(
194
+ "div",
195
+ { style: { textAlign: "left", marginLeft: "1rem" } },
196
+ body.description &&
197
+ react_1.default.createElement(
198
+ "div",
199
+ { style: { marginTop: "1rem", marginBottom: "1rem" } },
200
+ (0, createDescription_1.createDescription)(body.description)
201
+ )
202
+ ),
203
+ react_1.default.createElement(
204
+ "ul",
205
+ { style: { marginLeft: "1rem" } },
206
+ react_1.default.createElement(Schema_1.default, {
207
+ schema: firstBody,
208
+ schemaType: "request",
209
+ })
210
+ )
211
+ )
212
+ )
213
+ );
214
+ };
215
+ const RequestSchema = (props) => {
216
+ return react_1.default.createElement(
217
+ BrowserOnly_1.default,
218
+ {
219
+ fallback: react_1.default.createElement(SkeletonLoader_1.default, {
220
+ size: "sm",
221
+ }),
222
+ },
223
+ () => {
224
+ const LazyComponent = react_1.default.lazy(() =>
225
+ Promise.resolve({ default: RequestSchemaComponent })
226
+ );
227
+ return react_1.default.createElement(
228
+ react_1.Suspense,
229
+ { fallback: null },
230
+ react_1.default.createElement(LazyComponent, { ...props })
231
+ );
232
+ }
233
+ );
234
+ };
235
+ exports.default = RequestSchema;