docusaurus-theme-openapi-docs 1.6.1 → 2.0.0-beta.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 (197) hide show
  1. package/lib/index.js +1 -1
  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 +1 -1
  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 +1 -1
  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,216 @@
1
+ .openapi-tabs__code-list-container {
2
+ display: table-row-group;
3
+ }
4
+
5
+ .openapi-tabs__code-item {
6
+ margin-top: 0 !important;
7
+ margin-right: 0.5rem;
8
+ padding-left: 1.5rem;
9
+ padding-right: 1.5rem;
10
+ padding-top: 1rem !important;
11
+ padding-bottom: 1rem !important;
12
+
13
+ &.active {
14
+ border-bottom-left-radius: 0;
15
+ border-bottom-right-radius: 0;
16
+ }
17
+ }
18
+
19
+ .openapi-tabs__code-item--python {
20
+ color: var(--ifm-color-success);
21
+
22
+ &::after {
23
+ content: "";
24
+ width: 28px;
25
+ height: 28px;
26
+ background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/python/python-original.svg");
27
+ margin-block: auto;
28
+ }
29
+
30
+ &.active {
31
+ border-bottom-color: var(--ifm-color-success);
32
+ background-color: var(--ifm-color-emphasis-100);
33
+ }
34
+ }
35
+
36
+ .language-python {
37
+ max-height: 500px;
38
+ overflow: auto;
39
+ }
40
+
41
+ .openapi-tabs__code-item--go {
42
+ color: var(--ifm-color-info);
43
+
44
+ &::after {
45
+ content: "";
46
+ width: 28px;
47
+ height: 28px;
48
+ background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/go/go-original-wordmark.svg");
49
+ margin-block: auto;
50
+ }
51
+
52
+ &.active {
53
+ border-bottom-color: var(--ifm-color-info);
54
+ background-color: var(--ifm-color-emphasis-100);
55
+ }
56
+ }
57
+
58
+ .language-go {
59
+ max-height: 500px;
60
+ overflow: auto;
61
+ }
62
+
63
+ .openapi-tabs__code-item--javascript {
64
+ color: var(--ifm-color-warning);
65
+
66
+ &::after {
67
+ content: "";
68
+ width: 28px;
69
+ height: 28px;
70
+ background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/javascript/javascript-original.svg");
71
+ margin-block: auto;
72
+ }
73
+
74
+ &.active {
75
+ border-bottom-color: var(--ifm-color-warning);
76
+ background-color: var(--ifm-color-emphasis-100);
77
+ }
78
+ }
79
+
80
+ .language-javascript {
81
+ max-height: 500px;
82
+ overflow: auto;
83
+ }
84
+
85
+ .openapi-tabs__code-item--bash {
86
+ color: var(--ifm-color-danger);
87
+
88
+ &::after {
89
+ content: "";
90
+ width: 28px;
91
+ height: 28px;
92
+ background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/linux/linux-original.svg");
93
+ margin-block: auto;
94
+ }
95
+
96
+ &.active {
97
+ border-bottom-color: var(--ifm-color-danger);
98
+ background-color: var(--ifm-color-emphasis-100);
99
+ }
100
+ }
101
+
102
+ .language-bash {
103
+ max-height: 500px;
104
+ overflow: auto;
105
+ }
106
+
107
+ .openapi-tabs__code-item--ruby {
108
+ color: var(--ifm-color-danger);
109
+
110
+ &::after {
111
+ content: "";
112
+ width: 28px;
113
+ height: 28px;
114
+ background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/ruby/ruby-plain.svg");
115
+ margin-block: auto;
116
+ }
117
+
118
+ &.active {
119
+ border-bottom-color: var(--ifm-color-danger);
120
+ background-color: var(--ifm-color-emphasis-100);
121
+ }
122
+ }
123
+
124
+ .language-ruby {
125
+ max-height: 500px;
126
+ overflow: auto;
127
+ }
128
+
129
+ .openapi-tabs__code-item--csharp {
130
+ color: var(--ifm-color-gray-500);
131
+
132
+ &::after {
133
+ content: "";
134
+ width: 28px;
135
+ height: 28px;
136
+ background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/csharp/csharp-original.svg");
137
+ margin-block: auto;
138
+ }
139
+
140
+ &.active {
141
+ border-bottom-color: var(--ifm-color-gray-500);
142
+ background-color: var(--ifm-color-emphasis-100);
143
+ }
144
+ }
145
+
146
+ .language-csharp {
147
+ max-height: 500px;
148
+ overflow: auto;
149
+ }
150
+
151
+ .openapi-tabs__code-item--nodejs {
152
+ color: var(--ifm-color-success);
153
+
154
+ &::after {
155
+ content: "";
156
+ width: 28px;
157
+ height: 28px;
158
+ background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/nodejs/nodejs-original.svg");
159
+ margin-block: auto;
160
+ }
161
+
162
+ &.active {
163
+ border-bottom-color: var(--ifm-color-success);
164
+ background-color: var(--ifm-color-emphasis-100);
165
+ }
166
+ }
167
+
168
+ .language-nodejs {
169
+ max-height: 500px;
170
+ overflow: auto;
171
+ }
172
+
173
+ .openapi-tabs__code-item--php {
174
+ color: var(--ifm-color-gray-500);
175
+
176
+ &::after {
177
+ content: "";
178
+ width: 28px;
179
+ height: 28px;
180
+ background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/php/php-original.svg");
181
+ margin-block: auto;
182
+ }
183
+
184
+ &.active {
185
+ border-bottom-color: var(--ifm-color-gray-500);
186
+ background-color: var(--ifm-color-emphasis-100);
187
+ }
188
+ }
189
+
190
+ .language-php {
191
+ max-height: 500px;
192
+ overflow: auto;
193
+ }
194
+
195
+ .openapi-tabs__code-item--java {
196
+ color: var(--ifm-color-warning);
197
+
198
+ &::after {
199
+ content: "";
200
+ width: 28px;
201
+ height: 28px;
202
+ background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/java/java-original.svg");
203
+ margin-block: auto;
204
+ }
205
+
206
+ &.active {
207
+ border-bottom-color: var(--ifm-color-warning);
208
+ background-color: var(--ifm-color-emphasis-100);
209
+ }
210
+ }
211
+
212
+ @media only screen and (min-width: 768px) and (max-width: 996px) {
213
+ .openapi-tabs__code-list {
214
+ justify-content: space-around;
215
+ }
216
+ }
@@ -5,113 +5,53 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  * ========================================================================== */
7
7
 
8
- import React, { useState, cloneElement, isValidElement } from "react";
9
- import { duplicates } from "@docusaurus/theme-common";
8
+ import React, { cloneElement } from "react";
9
+
10
+ import {
11
+ useScrollPositionBlocker,
12
+ useTabs,
13
+ } from "@docusaurus/theme-common/internal";
10
14
  import useIsBrowser from "@docusaurus/useIsBrowser";
11
15
  import { languageSet } from "@theme/ApiDemoPanel/Curl";
12
16
  import clsx from "clsx";
13
- import styles from "./styles.module.css";
14
- const {
15
- useScrollPositionBlocker,
16
- useTabGroupChoice,
17
- } = require("@docusaurus/theme-common/internal");
18
17
 
19
- // A very rough duck type, but good enough to guard against mistakes while
20
- // allowing customization
21
- function isTabItem(comp) {
22
- return "value" in comp.props;
23
- }
24
- function TabsComponent(props) {
25
- const {
26
- lazy,
27
- block,
28
- defaultValue: defaultValueProp,
29
- values: valuesProp,
30
- groupId,
31
- className,
32
- action,
33
- } = props;
34
- const children = React.Children.map(props.children, (child) => {
35
- if (isValidElement(child) && isTabItem(child)) {
36
- return child;
37
- }
38
- // child.type.name will give non-sensical values in prod because of
39
- // minification, but we assume it won't throw in prod.
40
- throw new Error(
41
- `Docusaurus error: Bad <Tabs> child <${
42
- // @ts-expect-error: guarding against unexpected cases
43
- typeof child.type === "string" ? child.type : child.type.name
44
- }>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`
45
- );
46
- });
47
- const values =
48
- valuesProp ??
49
- // Only pick keys that we recognize. MDX would inject some keys by default
50
- children.map(({ props: { value, label, attributes } }) => ({
51
- value,
52
- label,
53
- attributes,
54
- }));
55
- const dup = duplicates(values, (a, b) => a.value === b.value);
56
- if (dup.length > 0) {
57
- throw new Error(
58
- `Docusaurus error: Duplicate values "${dup
59
- .map((a) => a.value)
60
- .join(", ")}" found in <Tabs>. Every value needs to be unique.`
61
- );
62
- }
63
- // When defaultValueProp is null, don't show a default tab
64
- const defaultValue =
65
- defaultValueProp === null
66
- ? defaultValueProp
67
- : defaultValueProp ??
68
- children.find((child) => child.props.default)?.props.value ??
69
- children[0].props.value;
70
- if (defaultValue !== null && !values.some((a) => a.value === defaultValue)) {
71
- throw new Error(
72
- `Docusaurus error: The <Tabs> has a defaultValue "${defaultValue}" but none of its children has the corresponding value. Available values are: ${values
73
- .map((a) => a.value)
74
- .join(
75
- ", "
76
- )}. If you intend to show no default tab, use defaultValue={null} instead.`
77
- );
78
- }
79
- const { tabGroupChoices, setTabGroupChoices } = useTabGroupChoice();
80
- const [selectedValue, setSelectedValue] = useState(defaultValue);
18
+ function TabList({
19
+ action,
20
+ className,
21
+ block,
22
+ selectedValue,
23
+ selectValue,
24
+ tabValues,
25
+ }) {
81
26
  const tabRefs = [];
82
27
  const { blockElementScrollPositionUntilNextRender } =
83
28
  useScrollPositionBlocker();
84
- if (groupId != null) {
85
- const relevantTabGroupChoice = tabGroupChoices[groupId];
86
- if (
87
- relevantTabGroupChoice != null &&
88
- relevantTabGroupChoice !== selectedValue &&
89
- values.some((value) => value.value === relevantTabGroupChoice)
90
- ) {
91
- setSelectedValue(relevantTabGroupChoice);
92
- }
93
- }
29
+
94
30
  const handleTabChange = (event) => {
95
31
  const newTab = event.currentTarget;
96
32
  const newTabIndex = tabRefs.indexOf(newTab);
97
- const newTabValue = values[newTabIndex].value;
33
+ const newTabValue = tabValues[newTabIndex].value;
34
+
98
35
  if (newTabValue !== selectedValue) {
99
36
  blockElementScrollPositionUntilNextRender(newTab);
100
- setSelectedValue(newTabValue);
101
- if (action) {
102
- const newLanguage = languageSet.filter(
103
- (lang) => lang.language === newTabValue
104
- );
105
- action(newLanguage[0]);
106
- }
107
- if (groupId != null) {
108
- setTabGroupChoices(groupId, String(newTabValue));
109
- }
37
+ selectValue(newTabValue);
38
+ }
39
+
40
+ if (action) {
41
+ const newLanguage = languageSet.filter(
42
+ (lang) => lang.language === newTabValue
43
+ );
44
+ action(newLanguage[0]);
110
45
  }
111
46
  };
47
+
112
48
  const handleKeydown = (event) => {
113
49
  let focusElement = null;
114
50
  switch (event.key) {
51
+ case "Enter": {
52
+ handleTabChange(event);
53
+ break;
54
+ }
115
55
  case "ArrowRight": {
116
56
  const nextTab = tabRefs.indexOf(event.currentTarget) + 1;
117
57
  focusElement = tabRefs[nextTab] ?? tabRefs[0];
@@ -127,67 +67,82 @@ function TabsComponent(props) {
127
67
  }
128
68
  focusElement?.focus();
129
69
  };
130
- return (
131
- <div className={clsx("tabs-container", styles.tabList)}>
132
- <ul
133
- role="tablist"
134
- aria-orientation="horizontal"
135
- className={clsx(
136
- "tabs",
137
- {
138
- "tabs--block": block,
139
- },
140
- styles.code__tabs,
141
- className
142
- )}
143
- >
144
- {values.map(({ value, label, attributes }) => (
145
- <li
146
- role="tab"
147
- tabIndex={selectedValue === value ? 0 : -1}
148
- aria-selected={selectedValue === value}
149
- key={value}
150
- ref={(tabControl) => tabRefs.push(tabControl)}
151
- onKeyDown={handleKeydown}
152
- onFocus={handleTabChange}
153
- onClick={handleTabChange}
154
- {...attributes}
155
- className={clsx(
156
- "tabs__item",
157
- styles.tabItem,
158
- attributes?.className,
159
- {
160
- "tabs__item--active": selectedValue === value,
161
- }
162
- )}
163
- >
164
- {label ?? value}
165
- </li>
166
- ))}
167
- </ul>
168
70
 
169
- {lazy ? (
170
- cloneElement(
171
- children.filter(
172
- (tabItem) => tabItem.props.value === selectedValue
173
- )[0],
174
- {
175
- className: "margin-top--md",
176
- }
177
- )
178
- ) : (
179
- <div className="margin-top--md">
180
- {children.map((tabItem, i) =>
181
- cloneElement(tabItem, {
182
- key: i,
183
- hidden: tabItem.props.value !== selectedValue,
184
- })
71
+ return (
72
+ <ul
73
+ role="tablist"
74
+ aria-orientation="horizontal"
75
+ className={clsx(
76
+ "tabs",
77
+ "openapi-tabs__code-list-container",
78
+ {
79
+ "tabs--block": block,
80
+ },
81
+ className
82
+ )}
83
+ >
84
+ {tabValues.map(({ value, label, attributes }) => (
85
+ <li
86
+ // TODO extract TabListItem
87
+ role="tab"
88
+ tabIndex={selectedValue === value ? 0 : -1}
89
+ aria-selected={selectedValue === value}
90
+ key={value}
91
+ ref={(tabControl) => tabRefs.push(tabControl)}
92
+ onKeyDown={handleKeydown}
93
+ onClick={handleTabChange}
94
+ {...attributes}
95
+ className={clsx(
96
+ "tabs__item",
97
+ "openapi-tabs__code-item",
98
+ attributes?.className,
99
+ {
100
+ active: selectedValue === value,
101
+ }
185
102
  )}
186
- </div>
103
+ >
104
+ {label ?? value}
105
+ </li>
106
+ ))}
107
+ </ul>
108
+ );
109
+ }
110
+
111
+ function TabContent({ lazy, children, selectedValue }) {
112
+ // eslint-disable-next-line no-param-reassign
113
+ children = Array.isArray(children) ? children : [children];
114
+ if (lazy) {
115
+ const selectedTabItem = children.find(
116
+ (tabItem) => tabItem.props.value === selectedValue
117
+ );
118
+ if (!selectedTabItem) {
119
+ // fail-safe or fail-fast? not sure what's best here
120
+ return null;
121
+ }
122
+ return cloneElement(selectedTabItem, { className: "margin-top--md" });
123
+ }
124
+ return (
125
+ <div className="margin-top--md">
126
+ {children.map((tabItem, i) =>
127
+ cloneElement(tabItem, {
128
+ key: i,
129
+ hidden: tabItem.props.value !== selectedValue,
130
+ })
187
131
  )}
188
132
  </div>
189
133
  );
190
134
  }
135
+
136
+ function TabsComponent(props) {
137
+ const tabs = useTabs(props);
138
+ return (
139
+ <div className="tabs-container">
140
+ <TabList {...props} {...tabs} />
141
+ <TabContent {...props} {...tabs} />
142
+ </div>
143
+ );
144
+ }
145
+
191
146
  export default function CodeTabs(props) {
192
147
  const isBrowser = useIsBrowser();
193
148
  return (
@@ -12,9 +12,7 @@ import buildPostmanRequest from "@theme/ApiDemoPanel/buildPostmanRequest";
12
12
  import CodeTabs from "@theme/ApiDemoPanel/CodeTabs";
13
13
  import { useTypedSelector } from "@theme/ApiItem/hooks";
14
14
  import CodeBlock from "@theme/CodeBlock";
15
- import clsx from "clsx";
16
15
  import merge from "lodash/merge";
17
- import styles from "./styles.module.css";
18
16
  export const languageSet = [
19
17
  {
20
18
  highlight: "bash",
@@ -103,7 +101,7 @@ function CodeTab({ children, hidden, className, onClick }) {
103
101
  return (
104
102
  <div
105
103
  role="tabpanel"
106
- className={clsx(styles.tabItem, className)}
104
+ className={className}
107
105
  {...{
108
106
  hidden,
109
107
  }}
@@ -253,10 +251,13 @@ function Curl({ postman, codeSamples }) {
253
251
  : lang.language
254
252
  }
255
253
  attributes={{
256
- className: `code__tab--${lang.logoClass}`,
254
+ className: `openapi-tabs__code-item--${lang.logoClass}`,
257
255
  }}
258
256
  >
259
- <CodeBlock language={lang.highlight} className={styles.codeBlock}>
257
+ <CodeBlock
258
+ language={lang.highlight}
259
+ className="openapi-demo__code-block"
260
+ >
260
261
  {codeText}
261
262
  </CodeBlock>
262
263
  </CodeTab>
@@ -7,7 +7,13 @@
7
7
 
8
8
  import React from "react";
9
9
  import buildPostmanRequest from "@theme/ApiDemoPanel/buildPostmanRequest";
10
- import { setResponse } from "@theme/ApiDemoPanel/Response/slice";
10
+ import {
11
+ setResponse,
12
+ setCode,
13
+ clearCode,
14
+ setHeaders,
15
+ clearHeaders,
16
+ } from "@theme/ApiDemoPanel/Response/slice";
11
17
  import { useTypedDispatch, useTypedSelector } from "@theme/ApiItem/hooks";
12
18
  import Modal from "react-modal";
13
19
  import makeRequest from "./makeRequest";
@@ -97,10 +103,15 @@ function Execute({ postman, proxy }) {
97
103
  try {
98
104
  await delay(1200);
99
105
  const res = await makeRequest(postmanRequest, proxy, body);
100
- dispatch(setResponse(res));
106
+ dispatch(setResponse(await res.text()));
107
+ dispatch(setCode(res.status));
108
+ res.headers &&
109
+ dispatch(setHeaders(Object.fromEntries(res.headers)));
101
110
  } catch (e) {
102
111
  console.log(e);
103
112
  dispatch(setResponse("Connection failed"));
113
+ dispatch(clearCode());
114
+ dispatch(clearHeaders());
104
115
  }
105
116
  }}
106
117
  >
@@ -166,7 +166,7 @@ async function makeRequest(request, proxy, _body) {
166
166
  finalUrl = normalizedProxy + request.url.toString();
167
167
  }
168
168
  return await fetchWithtimeout(finalUrl, requestOptions).then((response) => {
169
- return response.text();
169
+ return response;
170
170
  });
171
171
  }
172
172
  export default makeRequest;
@@ -0,0 +1,25 @@
1
+ .openapi-demo__floating-btn {
2
+ position: relative;
3
+
4
+ button {
5
+ position: relative;
6
+ background: var(--ifm-color-emphasis-900);
7
+ border: none;
8
+ border-radius: var(--ifm-global-radius);
9
+ color: var(--ifm-color-emphasis-100);
10
+ cursor: pointer;
11
+ padding: 0.4rem 0.5rem;
12
+ opacity: 0;
13
+ visibility: hidden;
14
+ transition: opacity 0.2s ease-in-out, visibility 0.2s ease-in-out,
15
+ bottom 0.2s ease-in-out;
16
+ position: absolute;
17
+ right: calc(var(--ifm-pre-padding) / 2);
18
+ }
19
+ }
20
+ .openapi-demo__floating-btn:hover button,
21
+ .openapi-demo__floating-btn:focus-visible button,
22
+ .openapi-demo__floating-btn button:focus-visible {
23
+ visibility: visible;
24
+ opacity: 1;
25
+ }
@@ -6,10 +6,9 @@
6
6
  * ========================================================================== */
7
7
 
8
8
  import React from "react";
9
- import styles from "./styles.module.css";
10
9
  function FloatingButton({ label, onClick, children }) {
11
10
  return (
12
- <div tabIndex={0} className={styles.floatingButton}>
11
+ <div tabIndex={0} className="openapi-demo__floating-btn">
13
12
  {label && (
14
13
  <button tabIndex={0} onClick={onClick}>
15
14
  {label}