-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsidebars.ts
91 lines (83 loc) · 2.19 KB
/
sidebars.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import type { SidebarsConfig } from '@docusaurus/plugin-content-docs';
/**
* Creating a sidebar enables you to:
- create an ordered group of docs
- render a sidebar for each doc of that group
- provide next/previous navigation
The sidebars can be generated from the filesystem, or explicitly defined here.
Create as many sidebars as you want.
*/
type SidebarItems = Extract<SidebarsConfig[string], unknown[]>;
type SidebarCategory = SidebarItems extends (infer U)[] ? Extract<U, { type: 'category' }> : never;
const typedocItems: SidebarItems = JSON.parse(
JSON.stringify(require('./docs/api/typedoc-sidebar.cjs')),
function (key, value) {
if (key === 'id' && typeof value === 'string') {
return value.replace(/\\/g, '/');
}
return value;
}
);
function findSidebarCategory(items: SidebarItems, label: string): SidebarCategory {
return items.find((item): item is SidebarCategory =>
typeof item === 'object' &&
item.type === 'category' &&
item.label === label
);
}
const sidebars: SidebarsConfig = {
docs: [
'intro',
{
type: 'category',
label: 'Concepts',
link: {
type: 'generated-index',
},
collapsed: false,
items: [{type: 'autogenerated', dirName: 'concepts'}],
},
{
type: 'category',
label: 'Components',
link: {
type: 'generated-index',
},
items: [{type: 'autogenerated', dirName: 'components'}],
},
{
type: 'category',
label: 'Examples',
link: {
type: 'generated-index',
},
collapsed: false,
items: [{type: 'autogenerated', dirName: 'examples'}],
},
],
api: [
{
type: 'doc',
id: 'api/index',
label: 'Package Modules',
},
{
...findSidebarCategory(typedocItems, 'workspace'),
label: '@reactodia/workspace',
collapsed: false,
},
{
...findSidebarCategory(typedocItems, 'layout-sync'),
label: '/layout-sync',
},
{
...findSidebarCategory(typedocItems, 'layout.worker'),
label: '/layout.worker',
},
{
...findSidebarCategory(typedocItems, 'legacy-styles'),
label: '/legacy-styles',
},
],
};
export default sidebars;