Skip to content

Commit d0ae355

Browse files
B4nanTC-MO
andauthored
fix: openapi docs improvements (#1344)
- unify sidebar and content badges for method type (post/put/create/delete/...) - render category index pages - hide next/prev buttons from openapi docs pages - remove descriptions from generated category index of openapi docs - add missing syntax highlighting and use custom language order and labels - enable docusaurus 3.6 perf optimizations expect SWC loader (not working with styled components) --------- Co-authored-by: Michał Olender <[email protected]>
1 parent d75b4e7 commit d0ae355

File tree

7 files changed

+4536
-5258
lines changed

7 files changed

+4536
-5258
lines changed

apify-docs-theme/src/theme/custom.css

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1709,57 +1709,86 @@ iframe[src*="youtube"] {
17091709
top: -1.5px;
17101710
}
17111711

1712-
.get > .menu__link::before {
1713-
content: 'get';
1712+
.theme-api-markdown .openapi__method-endpoint .badge {
1713+
border-inline-start-width: 5px;
1714+
padding: 3px 5px 3px 4px;
1715+
margin-right: 5px;
1716+
}
1717+
1718+
.get > .menu__link::before,
1719+
.theme-api-markdown .openapi__method-endpoint .badge--primary {
17141720
background-color: var(--ifm-color-info-contrast-background);
17151721
color: var(--ifm-color-info-contrast-foreground);
17161722
border-color: var(--ifm-color-info-dark);
17171723
}
17181724

1725+
.get > .menu__link::before {
1726+
content: 'get';
1727+
}
1728+
17191729
.post > .menu__link::before {
17201730
content: 'post';
1731+
}
1732+
1733+
.post > .menu__link::before,
1734+
.theme-api-markdown .openapi__method-endpoint .badge--success {
17211735
background-color: var(--ifm-color-success-contrast-background);
17221736
color: var(--ifm-color-success-contrast-foreground);
17231737
border-color: var(--ifm-color-success-dark);
17241738
}
17251739

17261740
.delete > .menu__link::before {
17271741
content: 'del';
1742+
}
1743+
1744+
.delete > .menu__link::before,
1745+
.theme-api-markdown .openapi__method-endpoint .badge--danger {
17281746
background-color: var(--ifm-color-danger-contrast-background);
17291747
color: var(--ifm-color-danger-contrast-foreground);
17301748
border-color: var(--ifm-color-danger-dark);
17311749
}
17321750

17331751
.put > .menu__link::before {
17341752
content: 'put';
1753+
}
1754+
1755+
.put > .menu__link::before,
1756+
.theme-api-markdown .openapi__method-endpoint .badge--info {
17351757
background-color: var(--ifm-color-warning-contrast-background);
17361758
color: var(--ifm-color-warning-contrast-foreground);
17371759
border-color: var(--ifm-color-warning-dark);
17381760
}
17391761

17401762
.patch > .menu__link::before {
17411763
content: 'patch';
1764+
}
1765+
1766+
.patch > .menu__link::before,
1767+
.theme-api-markdown .openapi__method-endpoint .badge--warning {
17421768
background-color: var(--ifm-color-success-contrast-background);
17431769
color: var(--ifm-color-success-contrast-foreground);
17441770
border-color: var(--ifm-color-success-dark);
17451771
}
17461772

17471773
.head > .menu__link::before {
17481774
content: 'head';
1775+
}
1776+
1777+
.head > .menu__link::before,
1778+
.event > .menu__link::before,
1779+
.schema > .menu__link::before,
1780+
.theme-api-markdown .openapi__method-endpoint .badge--secondary {
17491781
background-color: var(--ifm-color-secondary-contrast-background);
17501782
color: var(--ifm-color-secondary-contrast-foreground);
17511783
border-color: var(--ifm-color-secondary-dark);
17521784
}
17531785

17541786
.event > .menu__link::before {
17551787
content: 'event';
1756-
background-color: var(--ifm-color-secondary-contrast-background);
1757-
color: var(--ifm-color-secondary-contrast-foreground);
1758-
border-color: var(--ifm-color-secondary-dark);
17591788
}
17601789

1761-
.schema > .menu__link::before {
1762-
content: 'schema';
1790+
.event > .menu__link::before,
1791+
.theme-api-markdown .openapi__method-endpoint .badge--secondary {
17631792
background-color: var(--ifm-color-secondary-contrast-background);
17641793
color: var(--ifm-color-secondary-contrast-foreground);
17651794
border-color: var(--ifm-color-secondary-dark);
@@ -1770,6 +1799,10 @@ iframe[src*="youtube"] {
17701799
margin-bottom: calc(var(--ifm-h1-vertical-rhythm-bottom)* var(--ifm-leading)) !important;
17711800
}
17721801

1802+
.theme-doc-markdown .openapi-tabs__code-container .openapi-tabs__code-item span {
1803+
text-transform: none;
1804+
}
1805+
17731806
@media (max-width: 996px) {
17741807
div[class^="navbarSearchContainer"] {
17751808
position: static;

docusaurus.config.js

Lines changed: 138 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,16 @@ module.exports = {
1616
organizationName: 'apify',
1717
projectName: 'apify-docs',
1818
scripts: ['/js/custom.js'],
19-
// future: {
20-
// experimental_faster: true,
21-
// },
19+
future: {
20+
experimental_faster: {
21+
// swcJsLoader: true,
22+
swcJsMinimizer: true,
23+
swcHtmlMinimizer: true,
24+
lightningCssMinimizer: true,
25+
rspackBundler: true,
26+
mdxCrossCompilerCache: true,
27+
},
28+
},
2229
headTags: [
2330
{
2431
tagName: 'link',
@@ -190,11 +197,12 @@ module.exports = {
190197
outputDir: './sources/api',
191198
sidebarOptions: {
192199
groupPathsBy: 'tag',
200+
categoryLinkSource: 'tag',
193201
sidebarCollapsed: false,
194202
sidebarCollapsible: false,
195203
sidebarGenerators: {
196204
createDocItem: (item, context) => {
197-
const legacyUrls = item.api['x-legacy-doc-urls'] ?? [];
205+
const legacyUrls = item.api?.['x-legacy-doc-urls'] ?? [];
198206
const altIds = legacyUrls.map((url) => {
199207
const { hash } = new URL(url);
200208
return hash;
@@ -267,6 +275,11 @@ module.exports = {
267275
parseFrontMatter: async (params) => {
268276
const result = await params.defaultParseFrontMatter(params);
269277

278+
if (result.frontMatter.api || result.content.startsWith('<span class="openapi-clients-box">')) {
279+
result.frontMatter.pagination_next = null;
280+
result.frontMatter.pagination_prev = null;
281+
}
282+
270283
if (result.frontMatter.id === 'apify-api') {
271284
result.frontMatter.slug = '/';
272285
}
@@ -282,7 +295,127 @@ module.exports = {
282295
return result;
283296
},
284297
},
285-
themeConfig: config.themeConfig,
298+
themeConfig: {
299+
...config.themeConfig,
300+
prism: {
301+
...config.themeConfig.prism,
302+
additionalLanguages: [
303+
...config.themeConfig.prism.additionalLanguages,
304+
'http', 'bash', 'ruby', 'java', 'scala', 'go', 'csharp', 'powershell', 'dart', 'objectivec', 'ocaml', 'r',
305+
],
306+
},
307+
languageTabs: [
308+
{
309+
highlight: 'javascript',
310+
label: 'JavaScript',
311+
language: 'javascript',
312+
logoClass: 'javascript',
313+
},
314+
{
315+
highlight: 'python',
316+
label: 'Python',
317+
language: 'python',
318+
logoClass: 'python',
319+
},
320+
{
321+
highlight: 'bash',
322+
label: 'cURL',
323+
language: 'curl',
324+
logoClass: 'curl',
325+
},
326+
{
327+
highlight: 'php',
328+
label: 'PHP',
329+
language: 'php',
330+
logoClass: 'php',
331+
},
332+
{
333+
highlight: 'java',
334+
label: 'Java',
335+
language: 'java',
336+
logoClass: 'java',
337+
variant: 'unirest',
338+
},
339+
{
340+
highlight: 'c',
341+
label: 'C',
342+
language: 'c',
343+
logoClass: 'c',
344+
},
345+
{
346+
highlight: 'csharp',
347+
label: 'C#',
348+
language: 'csharp',
349+
logoClass: 'csharp',
350+
},
351+
{
352+
highlight: 'go',
353+
label: 'Go',
354+
language: 'go',
355+
logoClass: 'go',
356+
},
357+
{
358+
highlight: 'rust',
359+
label: 'Rust',
360+
language: 'rust',
361+
logoClass: 'rust',
362+
},
363+
{
364+
highlight: 'javascript',
365+
label: 'Node.js',
366+
language: 'nodejs',
367+
logoClass: 'nodejs',
368+
},
369+
{
370+
highlight: 'ruby',
371+
label: 'Ruby',
372+
language: 'ruby',
373+
logoClass: 'ruby',
374+
},
375+
{
376+
highlight: 'powershell',
377+
label: 'PowerShell',
378+
language: 'powershell',
379+
logoClass: 'powershell',
380+
},
381+
{
382+
highlight: 'dart',
383+
label: 'Dart',
384+
language: 'dart',
385+
logoClass: 'dart',
386+
},
387+
{
388+
highlight: 'objectivec',
389+
label: 'Objective-C',
390+
language: 'objective-c',
391+
logoClass: 'objective-c',
392+
},
393+
{
394+
highlight: 'ocaml',
395+
label: 'OCaml',
396+
language: 'ocaml',
397+
logoClass: 'ocaml',
398+
},
399+
{
400+
highlight: 'r',
401+
label: 'R',
402+
language: 'r',
403+
logoClass: 'r',
404+
},
405+
{
406+
highlight: 'swift',
407+
label: 'Swift',
408+
language: 'swift',
409+
logoClass: 'swift',
410+
},
411+
{
412+
highlight: 'kotlin',
413+
label: 'Kotlin',
414+
language: 'kotlin',
415+
logoClass: 'kotlin',
416+
},
417+
],
418+
},
286419
staticDirectories: ['apify-docs-theme/static', 'static'],
287420
customFields: {
288421
forbiddenGiscusDocRegExpStrings: [

0 commit comments

Comments
 (0)