docusaurus-theme-openapi-docs 0.0.0-beta.646 → 0.0.0-beta.651

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 (79) hide show
  1. package/lib/theme/ApiDemoPanel/ApiCodeBlock/Content/_Content.scss +1 -0
  2. package/lib/theme/ApiDemoPanel/Body/index.d.ts +3 -1
  3. package/lib/theme/ApiDemoPanel/Body/index.js +30 -32
  4. package/lib/theme/ApiDemoPanel/CodeTabs/_CodeTabs.scss +95 -39
  5. package/lib/theme/ApiDemoPanel/CodeTabs/index.js +24 -6
  6. package/lib/theme/ApiDemoPanel/Curl/index.d.ts +5 -4
  7. package/lib/theme/ApiDemoPanel/Curl/index.js +79 -11
  8. package/lib/theme/ApiDemoPanel/FormItem/_FormItem.scss +11 -2
  9. package/lib/theme/ApiDemoPanel/FormItem/index.d.ts +2 -1
  10. package/lib/theme/ApiDemoPanel/FormItem/index.js +9 -3
  11. package/lib/theme/ApiDemoPanel/FormMultiSelect/_FormMultiSelect.scss +8 -4
  12. package/lib/theme/ApiDemoPanel/FormMultiSelect/index.d.ts +2 -1
  13. package/lib/theme/ApiDemoPanel/FormMultiSelect/index.js +5 -2
  14. package/lib/theme/ApiDemoPanel/FormSelect/_FormSelect.scss +3 -3
  15. package/lib/theme/ApiDemoPanel/FormTextInput/_FormTextInput.scss +24 -5
  16. package/lib/theme/ApiDemoPanel/FormTextInput/index.d.ts +1 -1
  17. package/lib/theme/ApiDemoPanel/FormTextInput/index.js +56 -10
  18. package/lib/theme/ApiDemoPanel/LiveEditor/index.d.ts +5 -2
  19. package/lib/theme/ApiDemoPanel/LiveEditor/index.js +59 -14
  20. package/lib/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamArrayFormItem.d.ts +6 -0
  21. package/lib/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamArrayFormItem.js +194 -0
  22. package/lib/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamBooleanFormItem.d.ts +6 -0
  23. package/lib/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamBooleanFormItem.js +63 -0
  24. package/lib/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamMultiSelectFormItem.d.ts +6 -0
  25. package/lib/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamMultiSelectFormItem.js +89 -0
  26. package/lib/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamSelectFormItem.d.ts +6 -0
  27. package/lib/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamSelectFormItem.js +63 -0
  28. package/lib/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamTextFormItem.d.ts +6 -0
  29. package/lib/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamTextFormItem.js +38 -0
  30. package/lib/theme/ApiDemoPanel/ParamOptions/_ParamOptions.scss +9 -28
  31. package/lib/theme/ApiDemoPanel/ParamOptions/index.js +24 -176
  32. package/lib/theme/ApiDemoPanel/Request/_Request.scss +93 -20
  33. package/lib/theme/ApiDemoPanel/Request/index.d.ts +1 -1
  34. package/lib/theme/ApiDemoPanel/Request/index.js +316 -37
  35. package/lib/theme/ApiDemoPanel/Response/_Response.scss +54 -0
  36. package/lib/theme/ApiDemoPanel/Response/index.d.ts +4 -1
  37. package/lib/theme/ApiDemoPanel/Response/index.js +56 -31
  38. package/lib/theme/ApiDemoPanel/Server/_Server.scss +10 -0
  39. package/lib/theme/ApiDemoPanel/Server/index.js +10 -11
  40. package/lib/theme/ApiDemoPanel/index.js +1 -1
  41. package/lib/theme/SchemaTabs/_SchemaTabs.scss +0 -1
  42. package/lib/theme/styles.scss +27 -0
  43. package/package.json +7 -4
  44. package/src/theme/ApiDemoPanel/ApiCodeBlock/Content/_Content.scss +1 -0
  45. package/src/theme/ApiDemoPanel/Body/index.tsx +38 -29
  46. package/src/theme/ApiDemoPanel/CodeTabs/_CodeTabs.scss +95 -39
  47. package/src/theme/ApiDemoPanel/CodeTabs/index.js +24 -6
  48. package/src/theme/ApiDemoPanel/Curl/index.tsx +85 -22
  49. package/src/theme/ApiDemoPanel/FormItem/_FormItem.scss +11 -2
  50. package/src/theme/ApiDemoPanel/FormItem/index.tsx +8 -3
  51. package/src/theme/ApiDemoPanel/FormMultiSelect/_FormMultiSelect.scss +8 -4
  52. package/src/theme/ApiDemoPanel/FormMultiSelect/index.tsx +7 -2
  53. package/src/theme/ApiDemoPanel/FormSelect/_FormSelect.scss +3 -3
  54. package/src/theme/ApiDemoPanel/FormTextInput/_FormTextInput.scss +24 -5
  55. package/src/theme/ApiDemoPanel/FormTextInput/index.tsx +58 -10
  56. package/src/theme/ApiDemoPanel/LiveEditor/index.tsx +53 -14
  57. package/src/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamArrayFormItem.tsx +153 -0
  58. package/src/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamBooleanFormItem.tsx +64 -0
  59. package/src/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamMultiSelectFormItem.tsx +86 -0
  60. package/src/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamSelectFormItem.tsx +65 -0
  61. package/src/theme/ApiDemoPanel/ParamOptions/ParamFormItems/ParamTextFormItem.tsx +38 -0
  62. package/src/theme/ApiDemoPanel/ParamOptions/_ParamOptions.scss +9 -28
  63. package/src/theme/ApiDemoPanel/ParamOptions/index.tsx +8 -196
  64. package/src/theme/ApiDemoPanel/Request/_Request.scss +93 -20
  65. package/src/theme/ApiDemoPanel/Request/index.tsx +250 -28
  66. package/src/theme/ApiDemoPanel/Response/_Response.scss +54 -0
  67. package/src/theme/ApiDemoPanel/Response/index.tsx +44 -26
  68. package/src/theme/ApiDemoPanel/Server/_Server.scss +10 -0
  69. package/src/theme/ApiDemoPanel/Server/index.tsx +8 -11
  70. package/src/theme/ApiDemoPanel/index.tsx +1 -1
  71. package/src/theme/SchemaTabs/_SchemaTabs.scss +0 -1
  72. package/src/theme/styles.scss +27 -0
  73. package/src/theme-openapi.d.ts +40 -1
  74. package/lib/theme/ApiDemoPanel/Execute/index.d.ts +0 -8
  75. package/lib/theme/ApiDemoPanel/Execute/index.js +0 -213
  76. package/src/theme/ApiDemoPanel/Execute/index.tsx +0 -200
  77. /package/lib/theme/ApiDemoPanel/{Execute → Request}/makeRequest.d.ts +0 -0
  78. /package/lib/theme/ApiDemoPanel/{Execute → Request}/makeRequest.js +0 -0
  79. /package/src/theme/ApiDemoPanel/{Execute → Request}/makeRequest.ts +0 -0
@@ -15,6 +15,7 @@
15
15
  }
16
16
 
17
17
  .openapi-demo__code-block {
18
+ border-radius: var(--ifm-global-radius);
18
19
  --ifm-pre-background: var(--prism-background-color);
19
20
  margin: 0;
20
21
  padding: 0;
@@ -3,6 +3,8 @@ import { RequestBodyObject } from "docusaurus-plugin-openapi-docs/src/openapi/ty
3
3
  export interface Props {
4
4
  jsonRequestBodyExample: string;
5
5
  requestBodyMetadata?: RequestBodyObject;
6
+ methods?: any;
7
+ required?: boolean;
6
8
  }
7
- declare function BodyWrap({ requestBodyMetadata, jsonRequestBodyExample }: Props): JSX.Element | null;
9
+ declare function BodyWrap({ requestBodyMetadata, jsonRequestBodyExample, methods, required, }: Props): JSX.Element | null;
8
10
  export default BodyWrap;
@@ -15,9 +15,6 @@ const react_1 = __importDefault(require("react"));
15
15
  const json2xml_1 = __importDefault(
16
16
  require("@theme/ApiDemoPanel/Body/json2xml")
17
17
  );
18
- const ContentType_1 = __importDefault(
19
- require("@theme/ApiDemoPanel/ContentType")
20
- );
21
18
  const FormFileUpload_1 = __importDefault(
22
19
  require("@theme/ApiDemoPanel/FormFileUpload")
23
20
  );
@@ -32,7 +29,12 @@ const SchemaTabs_1 = __importDefault(require("@theme/SchemaTabs"));
32
29
  const TabItem_1 = __importDefault(require("@theme/TabItem"));
33
30
  const xml_formatter_1 = __importDefault(require("xml-formatter"));
34
31
  const slice_1 = require("./slice");
35
- function BodyWrap({ requestBodyMetadata, jsonRequestBodyExample }) {
32
+ function BodyWrap({
33
+ requestBodyMetadata,
34
+ jsonRequestBodyExample,
35
+ methods,
36
+ required,
37
+ }) {
36
38
  const contentType = (0, hooks_1.useTypedSelector)(
37
39
  (state) => state.contentType.value
38
40
  );
@@ -42,21 +44,21 @@ function BodyWrap({ requestBodyMetadata, jsonRequestBodyExample }) {
42
44
  if (contentType === undefined) {
43
45
  return null;
44
46
  }
45
- return react_1.default.createElement(
46
- react_1.default.Fragment,
47
- null,
48
- react_1.default.createElement(ContentType_1.default, null),
49
- react_1.default.createElement(Body, {
50
- requestBodyMetadata: requestBodyMetadata,
51
- jsonRequestBodyExample: jsonRequestBodyExample,
52
- })
53
- );
47
+ return react_1.default.createElement(Body, {
48
+ requestBodyMetadata: requestBodyMetadata,
49
+ jsonRequestBodyExample: jsonRequestBodyExample,
50
+ required: required,
51
+ });
54
52
  }
55
- function Body({ requestBodyMetadata, jsonRequestBodyExample }) {
53
+ function Body({
54
+ requestBodyMetadata,
55
+ jsonRequestBodyExample,
56
+ methods,
57
+ required,
58
+ }) {
56
59
  const contentType = (0, hooks_1.useTypedSelector)(
57
60
  (state) => state.contentType.value
58
61
  );
59
- const required = requestBodyMetadata?.required;
60
62
  const dispatch = (0, hooks_1.useTypedDispatch)();
61
63
  // Lot's of possible content-types:
62
64
  // - application/json
@@ -82,7 +84,7 @@ function Body({ requestBodyMetadata, jsonRequestBodyExample }) {
82
84
  if (schema?.format === "binary") {
83
85
  return react_1.default.createElement(
84
86
  FormItem_1.default,
85
- { label: "Body", required: required },
87
+ null,
86
88
  react_1.default.createElement(FormFileUpload_1.default, {
87
89
  placeholder: schema.description || "Body",
88
90
  onChange: (file) => {
@@ -107,17 +109,10 @@ function Body({ requestBodyMetadata, jsonRequestBodyExample }) {
107
109
  ) {
108
110
  return react_1.default.createElement(
109
111
  FormItem_1.default,
110
- { label: "Body", required: required },
112
+ { className: "openapi-demo__form-item-body-container" },
111
113
  react_1.default.createElement(
112
114
  "div",
113
- {
114
- style: {
115
- marginTop: "calc(var(--ifm-pre-padding) / 2)",
116
- borderRadius: "4px",
117
- padding: "var(--ifm-pre-padding)",
118
- border: "1px solid var(--openapi-monaco-border-color)",
119
- },
120
- },
115
+ null,
121
116
  Object.entries(schema.properties ?? {}).map(([key, val]) => {
122
117
  if (val.format === "binary") {
123
118
  return react_1.default.createElement(
@@ -187,6 +182,9 @@ function Body({ requestBodyMetadata, jsonRequestBodyExample }) {
187
182
  Array.isArray(schema.required) && schema.required.includes(key),
188
183
  },
189
184
  react_1.default.createElement(FormTextInput_1.default, {
185
+ paramName: key,
186
+ isRequired:
187
+ Array.isArray(schema.required) && schema.required.includes(key),
190
188
  placeholder: val.description || key,
191
189
  onChange: (e) => {
192
190
  dispatch(
@@ -277,7 +275,7 @@ function Body({ requestBodyMetadata, jsonRequestBodyExample }) {
277
275
  if (exampleBody) {
278
276
  return react_1.default.createElement(
279
277
  FormItem_1.default,
280
- { label: "Body", required: required },
278
+ null,
281
279
  react_1.default.createElement(
282
280
  SchemaTabs_1.default,
283
281
  { className: "openapi-tabs__schema", lazy: true },
@@ -286,7 +284,7 @@ function Body({ requestBodyMetadata, jsonRequestBodyExample }) {
286
284
  { label: "Default", value: "default", default: true },
287
285
  react_1.default.createElement(
288
286
  LiveEditor_1.default,
289
- { action: dispatch, language: language },
287
+ { action: dispatch, language: language, required: required },
290
288
  defaultBody
291
289
  )
292
290
  ),
@@ -296,7 +294,7 @@ function Body({ requestBodyMetadata, jsonRequestBodyExample }) {
296
294
  exampleBody &&
297
295
  react_1.default.createElement(
298
296
  LiveEditor_1.default,
299
- { action: dispatch, language: language },
297
+ { action: dispatch, language: language, required: required },
300
298
  exampleBody
301
299
  )
302
300
  )
@@ -306,7 +304,7 @@ function Body({ requestBodyMetadata, jsonRequestBodyExample }) {
306
304
  if (examplesBodies && examplesBodies.length > 0) {
307
305
  return react_1.default.createElement(
308
306
  FormItem_1.default,
309
- { label: "Body", required: required },
307
+ { className: "openapi-demo__form-item-body-container" },
310
308
  react_1.default.createElement(
311
309
  SchemaTabs_1.default,
312
310
  { className: "openapi-tabs__schema", lazy: true },
@@ -315,7 +313,7 @@ function Body({ requestBodyMetadata, jsonRequestBodyExample }) {
315
313
  { label: "Default", value: "default", default: true },
316
314
  react_1.default.createElement(
317
315
  LiveEditor_1.default,
318
- { action: dispatch, language: language },
316
+ { action: dispatch, language: language, required: required },
319
317
  defaultBody
320
318
  )
321
319
  ),
@@ -345,10 +343,10 @@ function Body({ requestBodyMetadata, jsonRequestBodyExample }) {
345
343
  }
346
344
  return react_1.default.createElement(
347
345
  FormItem_1.default,
348
- { label: "Body", required: required },
346
+ null,
349
347
  react_1.default.createElement(
350
348
  LiveEditor_1.default,
351
- { action: dispatch, language: language },
349
+ { action: dispatch, language: language, required: required },
352
350
  defaultBody
353
351
  )
354
352
  );
@@ -12,11 +12,55 @@
12
12
 
13
13
  .openapi-tabs__code-container {
14
14
  margin-bottom: 1rem;
15
+
16
+ &:not(.openapi-tabs__code-container-inner) {
17
+ padding: 1rem;
18
+ background-color: var(--ifm-pre-background);
19
+ border-radius: var(--ifm-global-radius);
20
+ border: 1px solid var(--openapi-demo-border-color);
21
+ box-shadow: 0 2px 3px hsla(222, 8%, 43%, 0.1),
22
+ 0 8px 16px -10px hsla(222, 8%, 43%, 0.2);
23
+ transition: 300ms;
24
+
25
+ &:hover {
26
+ box-shadow: 0 0 0 2px rgba(38, 53, 61, 0.15),
27
+ 0 2px 3px hsla(222, 8%, 43%, 0.15),
28
+ 0 16px 16px -10px hsla(222, 8%, 43%, 0.2);
29
+ }
30
+ }
31
+
32
+ .openapi-tabs__code-item {
33
+ display: flex;
34
+ flex-direction: column-reverse;
35
+ flex: 0 0 80px;
36
+ align-items: center;
37
+ padding: 0.5rem 0 !important;
38
+ margin-top: 0 !important;
39
+ margin-right: 0.5rem;
40
+ border: 1px solid transparent;
41
+ transition: 300ms;
42
+
43
+ &:not(.active):hover {
44
+ border: 1px solid var(--openapi-code-tab-border-color);
45
+ }
46
+
47
+ &:hover {
48
+ background-color: transparent;
49
+ }
50
+
51
+ span {
52
+ padding-top: 0.5rem;
53
+ color: var(--ifm-font-color-secondary);
54
+ font-size: 10px;
55
+ text-transform: uppercase;
56
+ }
57
+ }
15
58
  }
16
59
 
17
60
  .openapi-tabs__code-list-container {
18
61
  display: flex;
19
62
  justify-content: flex-start;
63
+ padding: 0.25rem;
20
64
  padding-bottom: 0.6rem;
21
65
  }
22
66
 
@@ -26,6 +70,8 @@
26
70
 
27
71
  .openapi-demo__code-block code {
28
72
  max-height: 200px;
73
+ font-size: var(--openapi-demo-font-size-code);
74
+ padding-top: var(--ifm-pre-padding);
29
75
  }
30
76
 
31
77
  body[class="ReactModal__Body--open"] {
@@ -34,20 +80,20 @@ body[class="ReactModal__Body--open"] {
34
80
  }
35
81
  }
36
82
 
37
- .openapi-tabs__code-item {
38
- margin-top: 0 !important;
39
- margin-right: 0.5rem;
40
- padding-left: 1.5rem;
41
- padding-right: 1.5rem;
42
- padding-top: 1rem !important;
43
- padding-bottom: 1rem !important;
83
+ .openapi-tabs__code-item--variant {
84
+ color: var(--ifm-color-secondary);
44
85
 
45
86
  &.active {
46
- border-bottom-left-radius: 0;
47
- border-bottom-right-radius: 0;
87
+ border-color: var(--ifm-toc-border-color);
48
88
  }
49
89
  }
50
90
 
91
+ .openapi-tabs__code-item--variant > span {
92
+ padding-top: unset !important;
93
+ padding-left: 0.5rem !important;
94
+ padding-right: 0.5rem !important;
95
+ }
96
+
51
97
  .openapi-tabs__code-item--python {
52
98
  color: var(--ifm-color-success);
53
99
 
@@ -55,13 +101,14 @@ body[class="ReactModal__Body--open"] {
55
101
  content: "";
56
102
  width: var(--code-tab-logo-width);
57
103
  height: var(--code-tab-logo-height);
58
- background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/python/python-original.svg");
104
+ background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/python/python-original.svg")
105
+ no-repeat;
59
106
  margin-block: auto;
60
107
  }
61
108
 
62
109
  &.active {
63
- border-bottom-color: var(--ifm-color-success);
64
- background-color: var(--ifm-color-emphasis-100);
110
+ box-shadow: 0 0 0 3px var(--openapi-code-tab-shadow-color-python);
111
+ border-color: var(--openapi-code-tab-border-color-python);
65
112
  }
66
113
  }
67
114
 
@@ -72,13 +119,14 @@ body[class="ReactModal__Body--open"] {
72
119
  content: "";
73
120
  width: var(--code-tab-logo-width);
74
121
  height: var(--code-tab-logo-height);
75
- background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/go/go-original-wordmark.svg");
122
+ background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/go/go-original-wordmark.svg")
123
+ no-repeat;
76
124
  margin-block: auto;
77
125
  }
78
126
 
79
127
  &.active {
80
- border-bottom-color: var(--ifm-color-info);
81
- background-color: var(--ifm-color-emphasis-100);
128
+ box-shadow: 0 0 0 3px var(--openapi-code-tab-shadow-color-go);
129
+ border-color: var(--openapi-code-tab-border-color-go);
82
130
  }
83
131
  }
84
132
 
@@ -89,13 +137,14 @@ body[class="ReactModal__Body--open"] {
89
137
  content: "";
90
138
  width: var(--code-tab-logo-width);
91
139
  height: var(--code-tab-logo-height);
92
- background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/javascript/javascript-original.svg");
140
+ background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/javascript/javascript-original.svg")
141
+ no-repeat;
93
142
  margin-block: auto;
94
143
  }
95
144
 
96
145
  &.active {
97
- border-bottom-color: var(--ifm-color-warning);
98
- background-color: var(--ifm-color-emphasis-100);
146
+ box-shadow: 0 0 0 3px var(--openapi-code-tab-shadow-color-js);
147
+ border-color: var(--openapi-code-tab-border-color-js);
99
148
  }
100
149
  }
101
150
 
@@ -106,15 +155,16 @@ body[class="ReactModal__Body--open"] {
106
155
  content: "";
107
156
  width: var(--code-tab-logo-width);
108
157
  height: var(--code-tab-logo-height);
109
- background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/bash/bash-plain.svg");
158
+ background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/bash/bash-plain.svg")
159
+ no-repeat;
110
160
  margin-block: auto;
111
161
  background-color: var(--bash-background-color);
112
162
  border-radius: var(--bash-border-radius);
113
163
  }
114
164
 
115
165
  &.active {
116
- border-bottom-color: var(--ifm-color-danger);
117
- background-color: var(--ifm-color-emphasis-100);
166
+ box-shadow: 0 0 0 3px var(--openapi-code-tab-shadow-color-bash);
167
+ border-color: var(--ifm-color-danger);
118
168
  }
119
169
  }
120
170
 
@@ -125,13 +175,14 @@ body[class="ReactModal__Body--open"] {
125
175
  content: "";
126
176
  width: var(--code-tab-logo-width);
127
177
  height: var(--code-tab-logo-height);
128
- background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/ruby/ruby-plain.svg");
178
+ background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/ruby/ruby-plain.svg")
179
+ no-repeat;
129
180
  margin-block: auto;
130
181
  }
131
182
 
132
183
  &.active {
133
- border-bottom-color: var(--ifm-color-danger);
134
- background-color: var(--ifm-color-emphasis-100);
184
+ box-shadow: 0 0 0 3px var(--openapi-code-tab-shadow-color-ruby);
185
+ border-color: var(--openapi-code-tab-border-color-ruby);
135
186
  }
136
187
  }
137
188
 
@@ -142,13 +193,14 @@ body[class="ReactModal__Body--open"] {
142
193
  content: "";
143
194
  width: var(--code-tab-logo-width);
144
195
  height: var(--code-tab-logo-height);
145
- background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/csharp/csharp-original.svg");
196
+ background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/csharp/csharp-original.svg")
197
+ no-repeat;
146
198
  margin-block: auto;
147
199
  }
148
200
 
149
201
  &.active {
150
- border-bottom-color: var(--ifm-color-gray-500);
151
- background-color: var(--ifm-color-emphasis-100);
202
+ box-shadow: 0 0 0 3px var(--openapi-code-tab-shadow-color-csharp);
203
+ border-color: var(--openapi-code-tab-border-color-csharp);
152
204
  }
153
205
  }
154
206
 
@@ -159,13 +211,14 @@ body[class="ReactModal__Body--open"] {
159
211
  content: "";
160
212
  width: var(--code-tab-logo-width);
161
213
  height: var(--code-tab-logo-height);
162
- background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/nodejs/nodejs-original.svg");
214
+ background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/nodejs/nodejs-original.svg")
215
+ no-repeat;
163
216
  margin-block: auto;
164
217
  }
165
218
 
166
219
  &.active {
167
- border-bottom-color: var(--ifm-color-success);
168
- background-color: var(--ifm-color-emphasis-100);
220
+ box-shadow: 0 0 0 3px var(--opeanpi-code-tab-shadow-color-nodejs);
221
+ border-color: var(--openapi-code-tab-border-color-nodejs);
169
222
  }
170
223
  }
171
224
 
@@ -176,13 +229,14 @@ body[class="ReactModal__Body--open"] {
176
229
  content: "";
177
230
  width: var(--code-tab-logo-width);
178
231
  height: var(--code-tab-logo-height);
179
- background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/php/php-original.svg");
232
+ background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/php/php-original.svg")
233
+ no-repeat;
180
234
  margin-block: auto;
181
235
  }
182
236
 
183
237
  &.active {
184
- border-bottom-color: var(--ifm-color-gray-500);
185
- background-color: var(--ifm-color-emphasis-100);
238
+ box-shadow: 0 0 0 3px var(--openapi-code-tab-shadow-color-php);
239
+ border-color: var(--openapi-code-tab-border-color-php);
186
240
  }
187
241
  }
188
242
 
@@ -193,13 +247,14 @@ body[class="ReactModal__Body--open"] {
193
247
  content: "";
194
248
  width: var(--code-tab-logo-width);
195
249
  height: var(--code-tab-logo-height);
196
- background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/java/java-original.svg");
250
+ background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/java/java-original.svg")
251
+ no-repeat;
197
252
  margin-block: auto;
198
253
  }
199
254
 
200
255
  &.active {
201
- border-bottom-color: var(--ifm-color-warning);
202
- background-color: var(--ifm-color-emphasis-100);
256
+ box-shadow: 0 0 0 3px var(--openapi-code-tab-shadow-color-java);
257
+ border-color: var(--openapi-code-tab-border-color-java);
203
258
  }
204
259
  }
205
260
 
@@ -210,13 +265,14 @@ body[class="ReactModal__Body--open"] {
210
265
  content: "";
211
266
  width: var(--code-tab-logo-width);
212
267
  height: var(--code-tab-logo-height);
213
- background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/windows8/windows8-original.svg");
268
+ background: url("https://raw.githubusercontent.com/devicons/devicon/master/icons/windows8/windows8-original.svg")
269
+ no-repeat;
214
270
  margin-block: auto;
215
271
  }
216
272
 
217
273
  &.active {
218
- border-bottom-color: var(--ifm-color-success);
219
- background-color: var(--ifm-color-emphasis-100);
274
+ box-shadow: 0 0 0 3px var(--opeanpi-code-tab-shadow-color-powershell);
275
+ border-color: var(--openapi-code-tab-border-color-powershell);
220
276
  }
221
277
  }
222
278
 
@@ -17,6 +17,8 @@ import clsx from "clsx";
17
17
 
18
18
  function TabList({
19
19
  action,
20
+ currentLanguage,
21
+ includeVariant,
20
22
  className,
21
23
  block,
22
24
  selectedValue,
@@ -38,10 +40,20 @@ function TabList({
38
40
  }
39
41
 
40
42
  if (action) {
41
- const newLanguage = languageSet.filter(
42
- (lang) => lang.language === newTabValue
43
- );
44
- action(newLanguage[0]);
43
+ let newLanguage;
44
+ if (currentLanguage && includeVariant) {
45
+ newLanguage = languageSet.filter(
46
+ (lang) => lang.language === currentLanguage
47
+ )[0];
48
+ newLanguage.variant = newTabValue;
49
+ action.setSelectedVariant(newTabValue.toLowerCase());
50
+ } else {
51
+ newLanguage = languageSet.filter(
52
+ (lang) => lang.language === newTabValue
53
+ )[0];
54
+ action.setSelectedVariant(newLanguage.variant.toLowerCase());
55
+ }
56
+ action.setLanguage(newLanguage);
45
57
  }
46
58
  };
47
59
 
@@ -101,7 +113,7 @@ function TabList({
101
113
  }
102
114
  )}
103
115
  >
104
- {label ?? value}
116
+ <span>{label ?? value}</span>
105
117
  </li>
106
118
  ))}
107
119
  </ul>
@@ -135,8 +147,14 @@ function TabContent({ lazy, children, selectedValue }) {
135
147
 
136
148
  function TabsComponent(props) {
137
149
  const tabs = useTabs(props);
150
+ const { className } = props;
151
+
138
152
  return (
139
- <div className="tabs-container openapi-tabs__code-container">
153
+ <div
154
+ className={clsx("tabs-container openapi-tabs__code-container", {
155
+ [className]: className,
156
+ })}
157
+ >
140
158
  <TabList {...props} {...tabs} />
141
159
  <TabContent {...props} {...tabs} />
142
160
  </div>
@@ -1,11 +1,12 @@
1
1
  /// <reference types="react" />
2
2
  import sdk from "@paloaltonetworks/postman-collection";
3
3
  export interface Language {
4
- highlight?: string;
4
+ highlight: string;
5
5
  language: string;
6
- logoClass?: string;
7
- variant?: string;
8
- options?: {
6
+ logoClass: string;
7
+ variant: string;
8
+ variants: string[];
9
+ options: {
9
10
  [key: string]: boolean;
10
11
  };
11
12
  source?: string;