/ sidebars.js
sidebars.js
 1  const sidebarData = require("./config/sidebar/index.json");
 2  
 3  const getDocId = (doc) => {
 4    return doc
 5      .replace(/\.mdx?$/, "")
 6      .split("/")
 7      .slice(1)
 8      .join("/");
 9  };
10  
11  const getItem = (item) => {
12    const type = item["_template"];
13  
14    let itemProps = {
15      type: type,
16    };
17  
18    if (type === "doc") {
19      if (!item.document) {
20        return [];
21      }
22  
23      itemProps.id = getDocId(item.document);
24  
25      if (item.label) {
26        itemProps.label = item.label;
27      }
28    }
29  
30    if (type === "category") {
31      if (item.title) {
32        itemProps.label = item.title;
33      }
34  
35      if (item.link && item.link !== "none") {
36        if (item.link === "doc" && item.docLink) {
37          itemProps.link = {
38            type: "doc",
39            id: getDocId(item.docLink),
40          };
41        } else if (item.link === "generated") {
42          itemProps.link = {
43            type: "generated-index",
44          };
45        } else {
46          return [];
47        }
48      }
49  
50      itemProps.items = item.items.flatMap((item) => {
51        return getItem(item);
52      });
53    }
54  
55    if (type === "link") {
56      if (item.href && item.title) {
57        itemProps.label = item.title;
58        itemProps.href = item.href;
59      } else {
60        return [];
61      }
62    }
63  
64    return [itemProps];
65  };
66  
67  const sidebars = {
68    tutorialSidebar: sidebarData.items.flatMap((item) => {
69      return getItem(item);
70    }),
71  };
72  
73  module.exports = sidebars;