docusaurus-theme-openapi-docs 1.6.1 → 2.0.0-beta.1

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 (197) hide show
  1. package/lib/index.js +31 -3
  2. package/lib/theme/ApiDemoPanel/Body/index.js +10 -4
  3. package/lib/theme/ApiDemoPanel/CodeTabs/_CodeTabs.scss +216 -0
  4. package/lib/theme/ApiDemoPanel/CodeTabs/index.js +132 -137
  5. package/lib/theme/ApiDemoPanel/Curl/index.js +3 -5
  6. package/lib/theme/ApiDemoPanel/Execute/index.js +5 -1
  7. package/lib/theme/ApiDemoPanel/Execute/makeRequest.js +1 -1
  8. package/lib/theme/ApiDemoPanel/FloatingButton/_FloatingButton.scss +25 -0
  9. package/lib/theme/ApiDemoPanel/FloatingButton/index.js +1 -2
  10. package/lib/theme/ApiDemoPanel/FormFileUpload/{styles.module.css → _FormFileUpload.scss} +32 -35
  11. package/lib/theme/ApiDemoPanel/FormFileUpload/index.js +3 -4
  12. package/lib/theme/ApiDemoPanel/FormItem/_FormItem.scss +12 -0
  13. package/lib/theme/ApiDemoPanel/FormItem/index.js +2 -3
  14. package/lib/theme/ApiDemoPanel/FormMultiSelect/_FormMultiSelect.scss +26 -0
  15. package/lib/theme/ApiDemoPanel/FormMultiSelect/index.js +1 -2
  16. package/{lib-next/theme/ApiDemoPanel/FormSelect/styles.module.css → lib/theme/ApiDemoPanel/FormSelect/_FormSelect.scss} +14 -22
  17. package/lib/theme/ApiDemoPanel/FormSelect/index.js +1 -2
  18. package/{lib-next/theme/ApiDemoPanel/FormTextInput/styles.module.css → lib/theme/ApiDemoPanel/FormTextInput/_FormTextInput.scss} +4 -10
  19. package/lib/theme/ApiDemoPanel/FormTextInput/index.js +1 -2
  20. package/lib/theme/ApiDemoPanel/LiveEditor/_LiveEditor.scss +15 -0
  21. package/lib/theme/ApiDemoPanel/LiveEditor/index.js +2 -3
  22. package/lib/theme/ApiDemoPanel/MethodEndpoint/_MethodEndpoint.scss +6 -0
  23. package/lib/theme/ApiDemoPanel/MethodEndpoint/index.js +28 -9
  24. package/{lib-next/theme/ApiDemoPanel/ParamOptions/styles.module.css → lib/theme/ApiDemoPanel/ParamOptions/_ParamOptions.scss} +29 -64
  25. package/lib/theme/ApiDemoPanel/ParamOptions/index.js +5 -6
  26. package/lib/theme/ApiDemoPanel/Request/_Request.scss +48 -0
  27. package/lib/theme/ApiDemoPanel/Request/index.js +7 -8
  28. package/lib/theme/ApiDemoPanel/Response/_Response.scss +27 -0
  29. package/lib/theme/ApiDemoPanel/Response/index.js +43 -8
  30. package/lib/theme/ApiDemoPanel/Response/slice.js +22 -2
  31. package/lib/theme/ApiDemoPanel/SecuritySchemes/index.js +3 -3
  32. package/{src/theme/ApiDemoPanel/Request/styles.module.css → lib/theme/ApiDemoPanel/Server/_Server.scss} +5 -7
  33. package/lib/theme/ApiDemoPanel/Server/index.js +1 -2
  34. package/lib/theme/ApiDemoPanel/index.js +0 -6
  35. package/{src/theme/ApiTabs/styles.module.css → lib/theme/ApiTabs/_ApiTabs.scss} +54 -41
  36. package/lib/theme/ApiTabs/index.js +118 -195
  37. package/lib/theme/DiscriminatorTabs/_DiscriminatorTabs.scss +94 -0
  38. package/lib/theme/DiscriminatorTabs/index.js +116 -194
  39. package/lib/theme/Markdown/Details/_Details.scss +36 -0
  40. package/lib/theme/MimeTabs/_MimeTabs.scss +64 -0
  41. package/lib/theme/MimeTabs/index.js +137 -202
  42. package/lib/theme/ParamsItem/_ParamsItem.scss +39 -0
  43. package/lib/theme/ParamsItem/index.js +3 -5
  44. package/lib/theme/ResponseSamples/_ResponseSamples.scss +3 -0
  45. package/lib/theme/ResponseSamples/index.js +2 -7
  46. package/lib/theme/SchemaItem/_SchemaItem.scss +53 -0
  47. package/lib/theme/SchemaItem/index.js +18 -18
  48. package/lib/theme/SchemaTabs/_SchemaTabs.scss +58 -0
  49. package/lib/theme/SchemaTabs/index.js +102 -186
  50. package/lib/theme/styles.scss +117 -0
  51. package/lib/theme-openapi.d.ts +1 -1
  52. package/lib-next/index.js +41 -2
  53. package/lib-next/theme/ApiDemoPanel/Body/index.js +6 -2
  54. package/lib-next/theme/ApiDemoPanel/CodeTabs/_CodeTabs.scss +216 -0
  55. package/lib-next/theme/ApiDemoPanel/CodeTabs/index.js +100 -145
  56. package/lib-next/theme/ApiDemoPanel/Curl/index.js +6 -5
  57. package/lib-next/theme/ApiDemoPanel/Execute/index.js +13 -2
  58. package/lib-next/theme/ApiDemoPanel/Execute/makeRequest.js +1 -1
  59. package/lib-next/theme/ApiDemoPanel/FloatingButton/_FloatingButton.scss +25 -0
  60. package/lib-next/theme/ApiDemoPanel/FloatingButton/index.js +1 -2
  61. package/{src/theme/ApiDemoPanel/FormFileUpload/styles.module.css → lib-next/theme/ApiDemoPanel/FormFileUpload/_FormFileUpload.scss} +32 -35
  62. package/lib-next/theme/ApiDemoPanel/FormFileUpload/index.js +5 -4
  63. package/lib-next/theme/ApiDemoPanel/FormItem/_FormItem.scss +12 -0
  64. package/lib-next/theme/ApiDemoPanel/FormItem/index.js +2 -3
  65. package/lib-next/theme/ApiDemoPanel/FormMultiSelect/_FormMultiSelect.scss +26 -0
  66. package/lib-next/theme/ApiDemoPanel/FormMultiSelect/index.js +1 -2
  67. package/{src/theme/ApiDemoPanel/FormSelect/styles.module.css → lib-next/theme/ApiDemoPanel/FormSelect/_FormSelect.scss} +14 -22
  68. package/lib-next/theme/ApiDemoPanel/FormSelect/index.js +5 -2
  69. package/{src/theme/ApiDemoPanel/FormTextInput/styles.module.css → lib-next/theme/ApiDemoPanel/FormTextInput/_FormTextInput.scss} +4 -10
  70. package/lib-next/theme/ApiDemoPanel/FormTextInput/index.js +1 -2
  71. package/lib-next/theme/ApiDemoPanel/LiveEditor/_LiveEditor.scss +15 -0
  72. package/lib-next/theme/ApiDemoPanel/LiveEditor/index.js +2 -3
  73. package/lib-next/theme/ApiDemoPanel/MethodEndpoint/_MethodEndpoint.scss +6 -0
  74. package/lib-next/theme/ApiDemoPanel/MethodEndpoint/index.js +32 -14
  75. package/{src/theme/ApiDemoPanel/ParamOptions/styles.module.css → lib-next/theme/ApiDemoPanel/ParamOptions/_ParamOptions.scss} +29 -64
  76. package/lib-next/theme/ApiDemoPanel/ParamOptions/index.js +13 -6
  77. package/lib-next/theme/ApiDemoPanel/Request/_Request.scss +48 -0
  78. package/lib-next/theme/ApiDemoPanel/Request/index.js +7 -8
  79. package/lib-next/theme/ApiDemoPanel/Response/_Response.scss +27 -0
  80. package/lib-next/theme/ApiDemoPanel/Response/index.js +68 -9
  81. package/lib-next/theme/ApiDemoPanel/Response/slice.js +20 -1
  82. package/lib-next/theme/ApiDemoPanel/SecuritySchemes/index.js +3 -3
  83. package/{lib/theme/ApiDemoPanel/Request/styles.module.css → lib-next/theme/ApiDemoPanel/Server/_Server.scss} +5 -7
  84. package/lib-next/theme/ApiDemoPanel/Server/index.js +1 -2
  85. package/lib-next/theme/ApiDemoPanel/index.js +0 -3
  86. package/lib-next/theme/ApiTabs/{styles.module.css → _ApiTabs.scss} +54 -41
  87. package/lib-next/theme/ApiTabs/index.js +118 -195
  88. package/lib-next/theme/DiscriminatorTabs/_DiscriminatorTabs.scss +94 -0
  89. package/lib-next/theme/DiscriminatorTabs/index.js +116 -194
  90. package/lib-next/theme/Markdown/Details/_Details.scss +36 -0
  91. package/lib-next/theme/MimeTabs/_MimeTabs.scss +64 -0
  92. package/lib-next/theme/MimeTabs/index.js +137 -202
  93. package/lib-next/theme/ParamsItem/_ParamsItem.scss +39 -0
  94. package/lib-next/theme/ParamsItem/index.js +3 -5
  95. package/lib-next/theme/ResponseSamples/_ResponseSamples.scss +3 -0
  96. package/lib-next/theme/ResponseSamples/index.js +2 -7
  97. package/lib-next/theme/SchemaItem/_SchemaItem.scss +53 -0
  98. package/lib-next/theme/SchemaItem/index.js +18 -18
  99. package/lib-next/theme/SchemaTabs/_SchemaTabs.scss +58 -0
  100. package/lib-next/theme/SchemaTabs/index.js +102 -186
  101. package/lib-next/theme/styles.scss +117 -0
  102. package/lib-next/theme-openapi.d.ts +1 -1
  103. package/package.json +8 -6
  104. package/src/index.ts +41 -2
  105. package/src/theme/ApiDemoPanel/Body/index.tsx +6 -2
  106. package/src/theme/ApiDemoPanel/CodeTabs/_CodeTabs.scss +216 -0
  107. package/src/theme/ApiDemoPanel/CodeTabs/index.js +156 -0
  108. package/src/theme/ApiDemoPanel/Curl/index.tsx +8 -10
  109. package/src/theme/ApiDemoPanel/Execute/index.tsx +13 -2
  110. package/src/theme/ApiDemoPanel/Execute/makeRequest.ts +1 -1
  111. package/src/theme/ApiDemoPanel/FloatingButton/_FloatingButton.scss +25 -0
  112. package/src/theme/ApiDemoPanel/FloatingButton/index.tsx +1 -3
  113. package/{lib-next/theme/ApiDemoPanel/FormFileUpload/styles.module.css → src/theme/ApiDemoPanel/FormFileUpload/_FormFileUpload.scss} +32 -35
  114. package/src/theme/ApiDemoPanel/FormFileUpload/index.tsx +5 -5
  115. package/src/theme/ApiDemoPanel/FormItem/_FormItem.scss +12 -0
  116. package/src/theme/ApiDemoPanel/FormItem/index.tsx +2 -4
  117. package/src/theme/ApiDemoPanel/FormMultiSelect/_FormMultiSelect.scss +26 -0
  118. package/src/theme/ApiDemoPanel/FormMultiSelect/index.tsx +1 -3
  119. package/{lib/theme/ApiDemoPanel/FormSelect/styles.module.css → src/theme/ApiDemoPanel/FormSelect/_FormSelect.scss} +14 -22
  120. package/src/theme/ApiDemoPanel/FormSelect/index.tsx +5 -3
  121. package/{lib/theme/ApiDemoPanel/FormTextInput/styles.module.css → src/theme/ApiDemoPanel/FormTextInput/_FormTextInput.scss} +4 -10
  122. package/src/theme/ApiDemoPanel/FormTextInput/index.tsx +1 -3
  123. package/src/theme/ApiDemoPanel/LiveEditor/_LiveEditor.scss +15 -0
  124. package/src/theme/ApiDemoPanel/LiveEditor/index.tsx +2 -4
  125. package/src/theme/ApiDemoPanel/MethodEndpoint/_MethodEndpoint.scss +6 -0
  126. package/src/theme/ApiDemoPanel/MethodEndpoint/index.tsx +37 -14
  127. package/{lib/theme/ApiDemoPanel/ParamOptions/styles.module.css → src/theme/ApiDemoPanel/ParamOptions/_ParamOptions.scss} +29 -64
  128. package/src/theme/ApiDemoPanel/ParamOptions/index.tsx +13 -6
  129. package/src/theme/ApiDemoPanel/Request/_Request.scss +48 -0
  130. package/src/theme/ApiDemoPanel/Request/index.tsx +7 -9
  131. package/src/theme/ApiDemoPanel/Response/_Response.scss +27 -0
  132. package/src/theme/ApiDemoPanel/Response/index.tsx +68 -9
  133. package/src/theme/ApiDemoPanel/Response/slice.ts +22 -1
  134. package/src/theme/ApiDemoPanel/SecuritySchemes/index.tsx +3 -3
  135. package/{lib-next/theme/ApiDemoPanel/Request/styles.module.css → src/theme/ApiDemoPanel/Server/_Server.scss} +5 -7
  136. package/src/theme/ApiDemoPanel/Server/index.tsx +1 -2
  137. package/src/theme/ApiDemoPanel/index.tsx +0 -3
  138. package/{lib/theme/ApiTabs/styles.module.css → src/theme/ApiTabs/_ApiTabs.scss} +54 -41
  139. package/src/theme/ApiTabs/index.js +118 -195
  140. package/src/theme/DiscriminatorTabs/_DiscriminatorTabs.scss +94 -0
  141. package/src/theme/DiscriminatorTabs/index.js +116 -194
  142. package/src/theme/Markdown/Details/_Details.scss +36 -0
  143. package/src/theme/MimeTabs/_MimeTabs.scss +64 -0
  144. package/src/theme/MimeTabs/index.js +137 -202
  145. package/src/theme/ParamsItem/_ParamsItem.scss +39 -0
  146. package/src/theme/ParamsItem/index.js +3 -5
  147. package/src/theme/ResponseSamples/_ResponseSamples.scss +3 -0
  148. package/src/theme/ResponseSamples/index.js +2 -7
  149. package/src/theme/SchemaItem/_SchemaItem.scss +53 -0
  150. package/src/theme/SchemaItem/index.js +18 -18
  151. package/src/theme/SchemaTabs/_SchemaTabs.scss +58 -0
  152. package/src/theme/SchemaTabs/index.js +102 -186
  153. package/src/theme/styles.scss +117 -0
  154. package/src/theme-openapi.d.ts +1 -1
  155. package/lib/theme/ApiDemoPanel/CodeTabs/styles.module.css +0 -17
  156. package/lib/theme/ApiDemoPanel/Curl/styles.module.css +0 -89
  157. package/lib/theme/ApiDemoPanel/FloatingButton/styles.module.css +0 -26
  158. package/lib/theme/ApiDemoPanel/FormItem/styles.module.css +0 -12
  159. package/lib/theme/ApiDemoPanel/FormMultiSelect/styles.module.css +0 -38
  160. package/lib/theme/ApiDemoPanel/LiveEditor/styles.module.css +0 -35
  161. package/lib/theme/ApiDemoPanel/Server/styles.module.css +0 -56
  162. package/lib/theme/DiscriminatorTabs/styles.module.css +0 -115
  163. package/lib/theme/MimeTabs/styles.module.css +0 -126
  164. package/lib/theme/ParamsItem/styles.module.css +0 -24
  165. package/lib/theme/ResponseSamples/styles.module.css +0 -7
  166. package/lib/theme/SchemaItem/styles.module.css +0 -38
  167. package/lib/theme/SchemaTabs/styles.module.css +0 -110
  168. package/lib/theme/styles.css +0 -485
  169. package/lib-next/theme/ApiDemoPanel/CodeTabs/styles.module.css +0 -17
  170. package/lib-next/theme/ApiDemoPanel/Curl/styles.module.css +0 -89
  171. package/lib-next/theme/ApiDemoPanel/FloatingButton/styles.module.css +0 -26
  172. package/lib-next/theme/ApiDemoPanel/FormItem/styles.module.css +0 -12
  173. package/lib-next/theme/ApiDemoPanel/FormMultiSelect/styles.module.css +0 -38
  174. package/lib-next/theme/ApiDemoPanel/LiveEditor/styles.module.css +0 -35
  175. package/lib-next/theme/ApiDemoPanel/Server/styles.module.css +0 -56
  176. package/lib-next/theme/DiscriminatorTabs/styles.module.css +0 -115
  177. package/lib-next/theme/MimeTabs/styles.module.css +0 -126
  178. package/lib-next/theme/ParamsItem/styles.module.css +0 -24
  179. package/lib-next/theme/ResponseSamples/styles.module.css +0 -7
  180. package/lib-next/theme/SchemaItem/styles.module.css +0 -38
  181. package/lib-next/theme/SchemaTabs/styles.module.css +0 -110
  182. package/lib-next/theme/styles.css +0 -485
  183. package/src/theme/ApiDemoPanel/CodeTabs/index.tsx +0 -239
  184. package/src/theme/ApiDemoPanel/CodeTabs/styles.module.css +0 -17
  185. package/src/theme/ApiDemoPanel/Curl/styles.module.css +0 -89
  186. package/src/theme/ApiDemoPanel/FloatingButton/styles.module.css +0 -26
  187. package/src/theme/ApiDemoPanel/FormItem/styles.module.css +0 -12
  188. package/src/theme/ApiDemoPanel/FormMultiSelect/styles.module.css +0 -38
  189. package/src/theme/ApiDemoPanel/LiveEditor/styles.module.css +0 -35
  190. package/src/theme/ApiDemoPanel/Server/styles.module.css +0 -56
  191. package/src/theme/DiscriminatorTabs/styles.module.css +0 -115
  192. package/src/theme/MimeTabs/styles.module.css +0 -126
  193. package/src/theme/ParamsItem/styles.module.css +0 -24
  194. package/src/theme/ResponseSamples/styles.module.css +0 -7
  195. package/src/theme/SchemaItem/styles.module.css +0 -38
  196. package/src/theme/SchemaTabs/styles.module.css +0 -110
  197. package/src/theme/styles.css +0 -485
@@ -0,0 +1,48 @@
1
+ .openapi-demo__options-panel {
2
+ background: var(--openapi-card-background-color);
3
+ border-radius: var(--openapi-card-border-radius);
4
+ color: var(--ifm-pre-color);
5
+ line-height: var(--ifm-pre-line-height);
6
+ margin-bottom: var(--ifm-spacing-vertical);
7
+ margin-top: 0;
8
+ overflow: auto;
9
+ padding-top: 0 !important;
10
+ padding: var(--ifm-pre-padding);
11
+
12
+ /* hack for view calculation when monaco is hidden */
13
+ position: relative;
14
+
15
+ &:empty {
16
+ display: none;
17
+ }
18
+ }
19
+
20
+ .openapi-demo__details {
21
+ margin-bottom: 1rem;
22
+ background: var(--openapi-card-background-color);
23
+ border-radius: var(--openapi-card-border-radius);
24
+ }
25
+
26
+ .openapi-demo__summary-container {
27
+ padding: 1rem;
28
+ list-style-type: none;
29
+
30
+ &:hover {
31
+ cursor: pointer;
32
+ }
33
+ }
34
+
35
+ .openapi-demo__summary-content {
36
+ display: flex;
37
+ justify-content: space-between;
38
+ align-items: center;
39
+ }
40
+
41
+ .openapi-demo__summary-header {
42
+ margin-bottom: 0;
43
+ }
44
+
45
+ .openapi-demo__summary-header > button {
46
+ margin-bottom: 1rem;
47
+ margin-right: 1rem;
48
+ }
@@ -15,7 +15,6 @@ import Execute from "@theme/ApiDemoPanel/Execute";
15
15
  import ParamOptions from "@theme/ApiDemoPanel/ParamOptions";
16
16
  import Server from "@theme/ApiDemoPanel/Server";
17
17
  import { useTypedSelector } from "@theme/ApiItem/hooks";
18
- import styles from "./styles.module.css";
19
18
  function Request({ item }) {
20
19
  const response = useTypedSelector((state) => state.response.value);
21
20
  const postman = new sdk.Request(item.postman);
@@ -33,17 +32,17 @@ function Request({ item }) {
33
32
  paramsArray.push(param);
34
33
  });
35
34
  return (
36
- <div>
37
- <details className={`details__demo-panel`} open={response ? false : true}>
38
- <summary>
39
- <div className={`details__request-summary`}>
40
- <h4>Request</h4>
35
+ <>
36
+ <details className="openapi-demo__details" open={response ? false : true}>
37
+ <summary className="openapi-demo__summary-container">
38
+ <div className="openapi-demo__summary-content">
39
+ <h4 className="openapi-demo__summary-header">Request</h4>
41
40
  {item.servers && !hide_send_button && (
42
41
  <Execute postman={postman} proxy={proxy} />
43
42
  )}
44
43
  </div>
45
44
  </summary>
46
- <div className={styles.optionsPanel}>
45
+ <div className="openapi-demo__options-panel">
47
46
  <Server />
48
47
  <Authorization />
49
48
  <ParamOptions />
@@ -54,7 +53,7 @@ function Request({ item }) {
54
53
  <Accept />
55
54
  </div>
56
55
  </details>
57
- </div>
56
+ </>
58
57
  );
59
58
  }
60
59
  export default Request;
@@ -0,0 +1,27 @@
1
+ .openapi-response__dot::before {
2
+ margin-right: 0.2rem;
3
+ margin-bottom: 0.15rem;
4
+ content: "⬤";
5
+ color: var(--ifm-color-primary);
6
+ font-size: 8px;
7
+ }
8
+
9
+ .openapi-response__dot--danger::before {
10
+ color: var(--ifm-color-danger);
11
+ }
12
+
13
+ .openapi-response__dot--success::before {
14
+ color: var(--ifm-color-success);
15
+ }
16
+
17
+ .openapi-response__dot--info::before {
18
+ color: var(--ifm-color-info);
19
+ }
20
+
21
+ .openapi-response__status-code {
22
+ margin-left: -1rem;
23
+ }
24
+
25
+ .openapi-response__status-headers {
26
+ margin-left: -1rem;
27
+ }
@@ -6,9 +6,13 @@
6
6
  * ========================================================================== */
7
7
 
8
8
  import React from "react";
9
+ import { usePrismTheme } from "@docusaurus/theme-common";
9
10
  import { useTypedDispatch, useTypedSelector } from "@theme/ApiItem/hooks";
10
11
  import CodeBlock from "@theme/CodeBlock";
11
- import { clearResponse } from "./slice";
12
+ import SchemaTabs from "@theme/SchemaTabs";
13
+ import TabItem from "@theme/TabItem";
14
+ import clsx from "clsx";
15
+ import { clearResponse, clearCode, clearHeaders } from "./slice";
12
16
 
13
17
  // TODO: We probably shouldn't attempt to format XML...
14
18
  function formatXml(xml) {
@@ -29,8 +33,19 @@ function formatXml(xml) {
29
33
  return formatted.substring(1, formatted.length - 3);
30
34
  }
31
35
  function Response() {
36
+ const prismTheme = usePrismTheme();
37
+ const code = useTypedSelector((state) => state.response.code);
38
+ const headers = useTypedSelector((state) => state.response.headers);
32
39
  const response = useTypedSelector((state) => state.response.value);
33
40
  const dispatch = useTypedDispatch();
41
+ const responseStatusClass =
42
+ code &&
43
+ "openapi-response__dot " +
44
+ (parseInt(code) >= 400
45
+ ? "openapi-response__dot--danger"
46
+ : parseInt(code) >= 200 && parseInt(code) < 300
47
+ ? "openapi-response__dot--success"
48
+ : "openapi-response__dot--info");
34
49
  if (response === undefined) {
35
50
  return null;
36
51
  }
@@ -43,21 +58,65 @@ function Response() {
43
58
  }
44
59
  }
45
60
  return (
46
- <details className={`details__demo-panel`} open={true}>
47
- <summary>
48
- <div className={`details__response-summary`}>
49
- <h4>Response</h4>
61
+ <details className="openapi-demo__details" open={true}>
62
+ <summary className="openapi-demo__summary-container">
63
+ <div className="openapi-demo__summary-content">
64
+ <h4 className="openapi-demo__summary-header">Response</h4>
50
65
  <button
51
66
  className="button button--sm button--secondary"
52
- onClick={() => dispatch(clearResponse())}
67
+ onClick={() => {
68
+ dispatch(clearResponse());
69
+ dispatch(clearCode());
70
+ dispatch(clearHeaders());
71
+ }}
53
72
  >
54
73
  Clear
55
74
  </button>
56
75
  </div>
57
76
  </summary>
58
- <CodeBlock language={response.startsWith("<") ? `xml` : `json`}>
59
- {prettyResponse || "No Response"}
60
- </CodeBlock>
77
+
78
+ <div
79
+ style={{
80
+ backgroundColor: prismTheme.plain.backgroundColor,
81
+ paddingLeft: "1rem",
82
+ paddingTop: "1rem",
83
+ ...((prettyResponse === "Fetching..." || !code) && {
84
+ paddingBottom: "1rem",
85
+ }),
86
+ }}
87
+ >
88
+ {code && prettyResponse !== "Fetching..." ? (
89
+ <SchemaTabs lazy>
90
+ {/* @ts-ignore */}
91
+ <TabItem
92
+ label={` ${code}`}
93
+ value="body"
94
+ attributes={{
95
+ className: clsx("openapi-response__dot", responseStatusClass),
96
+ }}
97
+ default
98
+ >
99
+ <CodeBlock
100
+ className="openapi-response__status-code"
101
+ language={response.startsWith("<") ? `xml` : `json`}
102
+ >
103
+ {prettyResponse || "No Response"}
104
+ </CodeBlock>
105
+ </TabItem>
106
+ {/* @ts-ignore */}
107
+ <TabItem label="Headers" value="headers">
108
+ <CodeBlock
109
+ className="openapi-response__status-headers"
110
+ language={response.startsWith("<") ? `xml` : `json`}
111
+ >
112
+ {JSON.stringify(headers, undefined, 2)}
113
+ </CodeBlock>
114
+ </TabItem>
115
+ </SchemaTabs>
116
+ ) : (
117
+ prettyResponse || "No Response"
118
+ )}
119
+ </div>
61
120
  </details>
62
121
  );
63
122
  }
@@ -14,10 +14,29 @@ export const slice = createSlice({
14
14
  setResponse: (state, action) => {
15
15
  state.value = action.payload;
16
16
  },
17
+ setCode: (state, action) => {
18
+ state.code = action.payload;
19
+ },
20
+ setHeaders: (state, action) => {
21
+ state.headers = action.payload;
22
+ },
17
23
  clearResponse: (state) => {
18
24
  state.value = undefined;
19
25
  },
26
+ clearCode: (state) => {
27
+ state.code = undefined;
28
+ },
29
+ clearHeaders: (state) => {
30
+ state.headers = undefined;
31
+ },
20
32
  },
21
33
  });
22
- export const { setResponse, clearResponse } = slice.actions;
34
+ export const {
35
+ setResponse,
36
+ clearResponse,
37
+ setCode,
38
+ clearCode,
39
+ setHeaders,
40
+ clearHeaders,
41
+ } = slice.actions;
23
42
  export default slice.reducer;
@@ -18,9 +18,9 @@ function SecuritySchemes(props) {
18
18
  }
19
19
  const selectedAuth = options[selected];
20
20
  return (
21
- <details className={`details__demo-panel`} open={false}>
22
- <summary className={`details__request-summary`}>
23
- <h4>Authorization</h4>
21
+ <details className="openapi-demo__details" open={false}>
22
+ <summary className="openapi-demo__summary-container">
23
+ <h4 className="openapi-demo__summary-header">Authorization</h4>
24
24
  </summary>
25
25
  {selectedAuth.map((auth) => {
26
26
  const isHttp = auth.type === "http";
@@ -1,8 +1,4 @@
1
- .optionsPanel:empty {
2
- display: none;
3
- }
4
-
5
- .optionsPanel {
1
+ .openapi-demo__server-container {
6
2
  background: var(--openapi-card-background-color);
7
3
  border-radius: var(--openapi-card-border-radius);
8
4
  color: var(--ifm-pre-color);
@@ -10,9 +6,11 @@
10
6
  margin-bottom: var(--ifm-spacing-vertical);
11
7
  margin-top: 0;
12
8
  overflow: auto;
13
- padding-top: 0 !important;
14
- padding: var(--ifm-pre-padding);
15
9
 
16
10
  /* hack for view calculation when monaco is hidden */
17
11
  position: relative;
12
+
13
+ &:empty {
14
+ display: none;
15
+ }
18
16
  }
@@ -12,7 +12,6 @@ import FormSelect from "@theme/ApiDemoPanel/FormSelect";
12
12
  import FormTextInput from "@theme/ApiDemoPanel/FormTextInput";
13
13
  import { useTypedDispatch, useTypedSelector } from "@theme/ApiItem/hooks";
14
14
  import { setServer, setServerVariable } from "./slice";
15
- import styles from "./styles.module.css";
16
15
  function Server() {
17
16
  const [isEditing, setIsEditing] = useState(false);
18
17
  const value = useTypedSelector((state) => state.server.value);
@@ -66,7 +65,7 @@ function Server() {
66
65
  );
67
66
  }
68
67
  return (
69
- <div className={styles.optionsPanel}>
68
+ <div className="openapi-demo__server-container">
70
69
  <FloatingButton onClick={() => setIsEditing(false)} label="Hide">
71
70
  <FormItem label="Base URL">
72
71
  <FormSelect
@@ -8,16 +8,13 @@
8
8
  import React from "react";
9
9
  import sdk from "@paloaltonetworks/postman-collection";
10
10
  import Curl from "@theme/ApiDemoPanel/Curl";
11
- import MethodEndpoint from "@theme/ApiDemoPanel/MethodEndpoint";
12
11
  import Request from "@theme/ApiDemoPanel/Request";
13
12
  import Response from "@theme/ApiDemoPanel/Response";
14
13
  import SecuritySchemes from "@theme/ApiDemoPanel/SecuritySchemes";
15
14
  function ApiDemoPanel({ item, infoPath }) {
16
15
  const postman = new sdk.Request(item.postman);
17
- const { path, method } = item;
18
16
  return (
19
17
  <div>
20
- <MethodEndpoint method={method} path={path} />
21
18
  <SecuritySchemes infoPath={infoPath} />
22
19
  <Request item={item} />
23
20
  <Response />
@@ -1,11 +1,15 @@
1
- /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
1
+ /* ============================================================================
2
+ * Copyright (c) Palo Alto Networks
3
3
  *
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
- */
6
+ * ========================================================================== */
7
+ .openapi-tabs__container {
8
+ margin-left: -1px;
9
+ margin-bottom: var(--ifm-leading);
10
+ }
7
11
 
8
- .tabItem {
12
+ .openapi-tabs__response-code-item {
9
13
  display: flex;
10
14
  align-items: center;
11
15
  justify-content: center;
@@ -16,29 +20,52 @@
16
20
  border-radius: var(--ifm-global-radius);
17
21
  color: var(--ifm-color-primary);
18
22
  font-weight: var(--ifm-font-weight-normal);
23
+
24
+ &.success {
25
+ .openapi-tabs__response-dot {
26
+ background-color: var(--ifm-color-success);
27
+ }
28
+ }
29
+
30
+ &.danger {
31
+ .openapi-tabs__response-dot {
32
+ background-color: var(--ifm-color-danger);
33
+ }
34
+ }
35
+
36
+ &.info {
37
+ .openapi-tabs__response-dot {
38
+ background-color: var(--ifm-color-info);
39
+ }
40
+ }
41
+
42
+ &.active {
43
+ opacity: 1;
44
+ background-color: var(--ifm-color-emphasis-100);
45
+ }
19
46
  }
20
47
 
21
- .tabItem:not(.active) {
48
+ .openapi-tabs__response-code-item:not(.active) {
22
49
  opacity: 0.65;
23
50
  }
24
51
 
25
- .tabItem:hover {
52
+ .openapi-tabs__response-code-item:hover {
26
53
  opacity: 1;
27
54
  }
28
55
 
29
- .tabItem:last-child {
56
+ .openapi-tabs__response-code-item:last-child {
30
57
  margin-right: 0 !important;
31
58
  }
32
59
 
33
60
  /* Open API Response Code Tabs */
34
- .responseTabsTopSection {
61
+ .openapi-tabs__response-header-section {
35
62
  margin-top: 2rem;
36
63
  display: flex;
37
64
  justify-content: space-between;
38
65
  align-items: center;
39
66
  }
40
67
 
41
- .responseTabsContainer {
68
+ .openapi-tabs__response-container {
42
69
  display: flex;
43
70
  align-items: center;
44
71
  max-width: 390px;
@@ -46,47 +73,31 @@
46
73
  overflow: hidden;
47
74
  }
48
75
 
49
- .responseTabsListContainer {
76
+ .openapi-tabs__response-list-container {
50
77
  padding: 0 0.25rem;
51
78
  overflow-y: hidden;
52
79
  overflow-x: scroll;
53
80
  scroll-behavior: smooth;
54
81
  }
55
82
 
56
- .responseTabsListContainer::-webkit-scrollbar {
83
+ .openapi-tabs__response-list-container::-webkit-scrollbar {
57
84
  display: none;
58
85
  }
59
86
 
60
87
  /* Response Code Tabs - Colored Dots */
61
- .responseTabDot {
88
+ .openapi-tabs__response-dot {
62
89
  width: 12.5px;
63
90
  height: 12.5px;
64
91
  margin-right: 5px;
65
92
  border-radius: 50%;
66
93
  }
67
94
 
68
- .responseStatusSuccess > .responseTabDot {
69
- background-color: var(--ifm-color-success);
70
- }
71
-
72
- .responseStatusDanger > .responseTabDot {
73
- background-color: var(--ifm-color-danger);
74
- }
75
-
76
- .responseStatusInfo > .responseTabDot {
77
- background-color: var(--ifm-color-info);
78
- }
79
-
80
- .active {
81
- background-color: var(--ifm-color-emphasis-100);
82
- }
83
-
84
- .responseSchemaContainer {
95
+ .openapi-tabs__response-schema-container {
85
96
  max-width: 600px;
86
97
  }
87
98
 
88
99
  /* Tab Arrows */
89
- .tabArrow {
100
+ .openapi-tabs__arrow {
90
101
  content: "";
91
102
  height: 1.25rem;
92
103
  width: 1.25rem;
@@ -94,25 +105,27 @@
94
105
  min-width: 1.25rem;
95
106
  background: var(--ifm-menu-link-sublist-icon) 50% / 2rem 2rem;
96
107
  filter: var(--ifm-menu-link-sublist-icon-filter);
97
- }
98
108
 
99
- .tabArrow:hover {
100
- cursor: pointer;
101
- }
102
- .tabArrowLeft {
103
- transform: rotate(270deg);
104
- }
105
- .tabArrowRight {
106
- transform: rotate(90deg);
109
+ &:hover {
110
+ cursor: pointer;
111
+ }
112
+
113
+ &.left {
114
+ transform: rotate(270deg);
115
+ }
116
+
117
+ &.right {
118
+ transform: rotate(90deg);
119
+ }
107
120
  }
108
121
 
109
122
  @media screen and (max-width: 500px) {
110
- .responseTabsTopSection {
123
+ .openapi-tabs__response-header-section {
111
124
  flex-direction: column;
112
125
  align-items: flex-start;
113
126
  }
114
127
 
115
- .responseTabsContainer {
128
+ .openapi-tabs__response-container {
116
129
  width: 100%;
117
130
  margin-top: var(--ifm-spacing-vertical);
118
131
  padding: 0;