@docusaurus/theme-classic 2.0.0-beta.12faed89d → 2.0.0-beta.14

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 (349) hide show
  1. package/README.md +1 -1
  2. package/lib/admonitions.css +35 -0
  3. package/lib/deps.d.ts +13 -0
  4. package/lib/index.js +16 -15
  5. package/lib/prism-include-languages.js +9 -5
  6. package/{lib-next/types.d.ts → lib/theme-classic.d.ts} +338 -156
  7. package/lib/translations.js +16 -7
  8. package/lib/types.d.ts +0 -629
  9. package/lib/validateThemeConfig.js +232 -248
  10. package/lib-next/theme/Admonition/index.js +101 -0
  11. package/lib-next/theme/AnnouncementBar/index.js +7 -12
  12. package/lib-next/theme/AnnouncementBar/styles.module.css +23 -32
  13. package/lib-next/theme/BackToTopButton/index.js +131 -0
  14. package/lib-next/theme/BackToTopButton/styles.module.css +42 -0
  15. package/lib-next/theme/BlogArchivePage/index.js +80 -0
  16. package/lib-next/theme/BlogLayout/index.js +40 -0
  17. package/lib-next/theme/BlogListPage/index.js +17 -25
  18. package/lib-next/theme/BlogPostAuthor/index.js +46 -0
  19. package/{lib/theme/MDXPage → lib-next/theme/BlogPostAuthor}/styles.module.css +4 -2
  20. package/lib-next/theme/BlogPostAuthors/index.js +34 -0
  21. package/{lib/theme/IconExternalLink → lib-next/theme/BlogPostAuthors}/styles.module.css +3 -4
  22. package/lib-next/theme/BlogPostItem/index.js +79 -86
  23. package/lib-next/theme/BlogPostPage/index.js +70 -35
  24. package/lib-next/theme/BlogSidebar/index.js +11 -13
  25. package/lib-next/theme/BlogSidebar/styles.module.css +2 -2
  26. package/lib-next/theme/BlogTagsListPage/index.js +14 -55
  27. package/lib-next/theme/BlogTagsPostsPage/index.js +29 -39
  28. package/lib-next/theme/CodeBlock/index.js +23 -149
  29. package/lib-next/theme/CodeBlock/styles.module.css +12 -9
  30. package/lib-next/theme/Details/index.js +20 -0
  31. package/lib-next/theme/Details/styles.module.css +13 -0
  32. package/lib-next/theme/DocCard/index.js +80 -0
  33. package/lib-next/theme/DocCard/styles.module.css +43 -0
  34. package/lib-next/theme/DocCardList/index.js +19 -0
  35. package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +49 -0
  36. package/lib-next/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  37. package/lib-next/theme/DocItem/index.js +30 -59
  38. package/lib-next/theme/DocItem/styles.module.css +2 -11
  39. package/lib-next/theme/DocItemFooter/index.js +79 -0
  40. package/{lib/theme/DocSidebarItem → lib-next/theme/DocItemFooter}/styles.module.css +8 -5
  41. package/lib-next/theme/DocPage/index.js +46 -23
  42. package/lib-next/theme/DocPaginator/index.js +5 -33
  43. package/lib-next/theme/DocPaginatorNavLink/index.js +36 -0
  44. package/lib-next/theme/DocSidebar/index.js +37 -43
  45. package/lib-next/theme/DocSidebarItem/index.js +115 -65
  46. package/lib-next/theme/DocSidebarItem/styles.module.css +4 -0
  47. package/lib-next/theme/DocTagDocListPage/index.js +89 -0
  48. package/lib-next/theme/DocTagsListPage/index.js +38 -0
  49. package/lib-next/theme/DocVersionBadge/index.js +27 -0
  50. package/lib-next/theme/DocVersionBanner/index.js +28 -14
  51. package/lib-next/theme/EditThisPage/index.js +6 -1
  52. package/lib-next/theme/ErrorPageContent.js +35 -0
  53. package/lib-next/theme/Footer/index.js +90 -39
  54. package/lib-next/theme/Heading/index.js +24 -29
  55. package/lib-next/theme/Heading/styles.css +5 -6
  56. package/lib-next/theme/Heading/styles.module.css +9 -5
  57. package/lib-next/theme/IconArrow/index.js +2 -2
  58. package/lib-next/theme/IconClose/index.js +23 -0
  59. package/lib-next/theme/IconEdit/index.js +2 -2
  60. package/lib-next/theme/IconExternalLink/index.js +2 -2
  61. package/lib-next/theme/IconLanguage/index.js +2 -2
  62. package/lib-next/theme/IconMenu/index.js +2 -2
  63. package/lib-next/theme/LastUpdated/index.js +3 -2
  64. package/lib-next/theme/Layout/index.js +3 -1
  65. package/lib-next/theme/LayoutHead/index.js +18 -23
  66. package/lib-next/theme/LayoutProviders/index.js +8 -5
  67. package/lib-next/theme/Logo/index.js +25 -21
  68. package/lib-next/theme/MDXComponents/index.js +34 -7
  69. package/{lib/theme/hooks → lib-next/theme/MDXComponents}/styles.css +3 -2
  70. package/lib-next/theme/MDXPage/index.js +10 -2
  71. package/lib-next/theme/Navbar/index.js +62 -34
  72. package/lib-next/theme/Navbar/styles.module.css +3 -39
  73. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +45 -143
  74. package/lib-next/theme/NavbarItem/DocNavbarItem.js +7 -7
  75. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +31 -19
  76. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +158 -0
  77. package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +4 -12
  78. package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  79. package/lib-next/theme/NavbarItem/index.js +25 -12
  80. package/lib-next/theme/{SearchMetadatas → SearchMetadata}/index.js +1 -1
  81. package/lib-next/theme/Seo/index.js +11 -7
  82. package/lib-next/theme/TOC/index.js +12 -36
  83. package/lib-next/theme/TOC/styles.module.css +1 -1
  84. package/lib-next/theme/TOCCollapsible/index.js +13 -4
  85. package/lib-next/theme/TOCCollapsible/styles.module.css +1 -0
  86. package/lib-next/theme/TOCInline/index.js +10 -28
  87. package/lib-next/theme/TOCItems/index.js +85 -0
  88. package/lib-next/theme/Tabs/__tests__/index.test.js +142 -0
  89. package/lib-next/theme/Tabs/index.js +103 -48
  90. package/lib-next/theme/Tabs/styles.module.css +0 -13
  91. package/lib-next/theme/Tag/index.js +27 -0
  92. package/lib-next/theme/Tag/styles.module.css +70 -0
  93. package/lib-next/theme/TagsListByLetter/index.js +42 -0
  94. package/lib-next/theme/TagsListByLetter/styles.module.css +11 -0
  95. package/lib-next/theme/TagsListInline/index.js +31 -0
  96. package/lib-next/theme/TagsListInline/styles.module.css +15 -0
  97. package/lib-next/theme/ThemeProvider/index.js +10 -7
  98. package/lib-next/theme/ThemedImage/index.js +5 -5
  99. package/lib-next/theme/Toggle/index.js +34 -37
  100. package/lib-next/theme/Toggle/styles.module.css +91 -3
  101. package/lib-next/theme/UserPreferencesProvider/index.js +9 -6
  102. package/lib-next/theme/hooks/useHideableNavbar.js +31 -44
  103. package/lib-next/theme/hooks/useTheme.js +4 -5
  104. package/lib-next/theme/hooks/useWindowSize.js +2 -6
  105. package/lib-next/theme/prism-include-languages.js +2 -1
  106. package/package.json +26 -24
  107. package/src/admonitions.css +35 -0
  108. package/src/deps.d.ts +13 -0
  109. package/src/index.ts +23 -20
  110. package/{lib-next/prism-include-languages.js → src/prism-include-languages.ts} +0 -0
  111. package/src/theme/Admonition/index.tsx +106 -0
  112. package/src/theme/AnnouncementBar/index.tsx +8 -12
  113. package/src/theme/AnnouncementBar/styles.module.css +23 -32
  114. package/src/theme/BackToTopButton/index.tsx +142 -0
  115. package/src/theme/BackToTopButton/styles.module.css +42 -0
  116. package/src/theme/BlogArchivePage/index.tsx +91 -0
  117. package/src/theme/BlogLayout/index.tsx +44 -0
  118. package/src/theme/BlogListPage/index.tsx +18 -25
  119. package/src/theme/BlogPostAuthor/index.tsx +49 -0
  120. package/{lib/theme/IconEdit → src/theme/BlogPostAuthor}/styles.module.css +4 -3
  121. package/src/theme/BlogPostAuthors/index.tsx +39 -0
  122. package/src/theme/BlogPostAuthors/styles.module.css +11 -0
  123. package/src/theme/BlogPostItem/index.tsx +70 -80
  124. package/src/theme/BlogPostPage/index.tsx +72 -35
  125. package/src/theme/BlogSidebar/index.tsx +11 -13
  126. package/src/theme/BlogSidebar/styles.module.css +2 -2
  127. package/src/theme/BlogTagsListPage/index.tsx +14 -57
  128. package/src/theme/BlogTagsPostsPage/index.tsx +29 -39
  129. package/src/theme/CodeBlock/index.tsx +27 -151
  130. package/src/theme/CodeBlock/styles.module.css +12 -9
  131. package/src/theme/Details/index.tsx +24 -0
  132. package/src/theme/Details/styles.module.css +13 -0
  133. package/src/theme/DocCard/index.tsx +100 -0
  134. package/src/theme/DocCard/styles.module.css +43 -0
  135. package/src/theme/DocCardList/index.tsx +27 -0
  136. package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +53 -0
  137. package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  138. package/src/theme/DocItem/index.tsx +30 -60
  139. package/src/theme/DocItem/styles.module.css +2 -11
  140. package/src/theme/DocItemFooter/index.tsx +91 -0
  141. package/{lib/theme/BlogPostItem → src/theme/DocItemFooter}/styles.module.css +8 -8
  142. package/src/theme/DocPage/index.tsx +44 -22
  143. package/src/theme/DocPaginator/index.tsx +5 -33
  144. package/src/theme/DocPaginatorNavLink/index.tsx +38 -0
  145. package/src/theme/DocSidebar/index.tsx +38 -39
  146. package/src/theme/DocSidebarItem/index.tsx +108 -49
  147. package/src/theme/DocSidebarItem/styles.module.css +4 -0
  148. package/src/theme/DocTagDocListPage/index.tsx +89 -0
  149. package/src/theme/DocTagsListPage/index.tsx +41 -0
  150. package/src/theme/DocVersionBadge/index.tsx +30 -0
  151. package/src/theme/DocVersionBanner/index.tsx +48 -21
  152. package/src/theme/EditThisPage/index.tsx +6 -1
  153. package/src/theme/ErrorPageContent.tsx +41 -0
  154. package/src/theme/Footer/index.tsx +103 -42
  155. package/src/theme/Heading/index.tsx +24 -31
  156. package/src/theme/Heading/styles.css +5 -6
  157. package/src/theme/Heading/styles.module.css +9 -5
  158. package/src/theme/IconArrow/index.tsx +2 -2
  159. package/src/theme/IconClose/index.tsx +26 -0
  160. package/src/theme/IconEdit/index.tsx +2 -2
  161. package/src/theme/IconExternalLink/index.tsx +2 -5
  162. package/src/theme/IconLanguage/index.tsx +2 -6
  163. package/src/theme/IconMenu/index.tsx +3 -3
  164. package/src/theme/LastUpdated/index.tsx +3 -2
  165. package/src/theme/Layout/index.tsx +3 -1
  166. package/src/theme/LayoutHead/index.tsx +18 -17
  167. package/src/theme/LayoutProviders/index.tsx +8 -5
  168. package/src/theme/Logo/index.tsx +21 -17
  169. package/src/theme/MDXComponents/index.tsx +39 -5
  170. package/src/theme/MDXComponents/styles.css +11 -0
  171. package/src/theme/MDXPage/index.tsx +10 -2
  172. package/src/theme/Navbar/index.tsx +62 -35
  173. package/src/theme/Navbar/styles.module.css +3 -39
  174. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +42 -149
  175. package/src/theme/NavbarItem/DocNavbarItem.tsx +12 -16
  176. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +33 -21
  177. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +7 -3
  178. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +180 -0
  179. package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +8 -9
  180. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  181. package/src/theme/NavbarItem/index.tsx +41 -16
  182. package/src/theme/{SearchMetadatas → SearchMetadata}/index.tsx +2 -2
  183. package/src/theme/Seo/index.tsx +7 -4
  184. package/src/theme/TOC/index.tsx +13 -35
  185. package/src/theme/TOC/styles.module.css +1 -1
  186. package/src/theme/TOCCollapsible/index.tsx +13 -4
  187. package/src/theme/TOCCollapsible/styles.module.css +1 -0
  188. package/src/theme/TOCInline/index.tsx +13 -32
  189. package/src/theme/TOCItems/index.tsx +96 -0
  190. package/src/theme/Tabs/index.tsx +110 -54
  191. package/src/theme/Tabs/styles.module.css +0 -13
  192. package/src/theme/Tag/index.tsx +31 -0
  193. package/src/theme/Tag/styles.module.css +70 -0
  194. package/src/theme/TagsListByLetter/index.tsx +45 -0
  195. package/src/theme/TagsListByLetter/styles.module.css +11 -0
  196. package/src/theme/TagsListInline/index.tsx +35 -0
  197. package/src/theme/TagsListInline/styles.module.css +15 -0
  198. package/src/theme/ThemeProvider/index.tsx +6 -2
  199. package/src/theme/ThemedImage/index.tsx +5 -5
  200. package/src/theme/Toggle/index.tsx +36 -43
  201. package/src/theme/Toggle/styles.module.css +91 -3
  202. package/src/theme/UserPreferencesProvider/index.tsx +9 -6
  203. package/src/theme/hooks/useHideableNavbar.ts +32 -45
  204. package/src/theme/hooks/useTabGroupChoice.ts +2 -2
  205. package/src/theme/hooks/useTheme.ts +4 -5
  206. package/src/theme/hooks/useWindowSize.ts +2 -7
  207. package/src/theme/prism-include-languages.ts +3 -2
  208. package/src/theme-classic.d.ts +822 -0
  209. package/src/translations.ts +41 -23
  210. package/src/types.d.ts +0 -629
  211. package/src/{validateThemeConfig.js → validateThemeConfig.ts} +160 -100
  212. package/babel.config.js +0 -35
  213. package/codeTranslations/README.md +0 -20
  214. package/codeTranslations/ar.json +0 -56
  215. package/codeTranslations/base.json +0 -110
  216. package/codeTranslations/bn.json +0 -56
  217. package/codeTranslations/da.json +0 -56
  218. package/codeTranslations/de.json +0 -56
  219. package/codeTranslations/es.json +0 -56
  220. package/codeTranslations/fa.json +0 -56
  221. package/codeTranslations/fil.json +0 -56
  222. package/codeTranslations/fr.json +0 -56
  223. package/codeTranslations/he.json +0 -56
  224. package/codeTranslations/hi.json +0 -56
  225. package/codeTranslations/ja.json +0 -56
  226. package/codeTranslations/ko.json +0 -56
  227. package/codeTranslations/pl.json +0 -56
  228. package/codeTranslations/pt-BR.json +0 -56
  229. package/codeTranslations/pt-PT.json +0 -56
  230. package/codeTranslations/ru.json +0 -56
  231. package/codeTranslations/tr.json +0 -56
  232. package/codeTranslations/vi.json +0 -56
  233. package/codeTranslations/zh-Hans.json +0 -56
  234. package/codeTranslations/zh-Hant.json +0 -56
  235. package/lib/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  236. package/lib/__tests__/translations.test.js +0 -112
  237. package/lib/__tests__/validateThemeConfig.test.js +0 -333
  238. package/lib/theme/AnnouncementBar/index.js +0 -72
  239. package/lib/theme/AnnouncementBar/styles.module.css +0 -72
  240. package/lib/theme/BlogListPage/index.js +0 -71
  241. package/lib/theme/BlogListPaginator/index.js +0 -63
  242. package/lib/theme/BlogPostItem/index.js +0 -161
  243. package/lib/theme/BlogPostPage/index.js +0 -69
  244. package/lib/theme/BlogPostPaginator/index.js +0 -64
  245. package/lib/theme/BlogSidebar/index.js +0 -51
  246. package/lib/theme/BlogSidebar/styles.module.css +0 -44
  247. package/lib/theme/BlogTagsListPage/index.js +0 -76
  248. package/lib/theme/BlogTagsPostsPage/index.js +0 -100
  249. package/lib/theme/CodeBlock/index.js +0 -253
  250. package/lib/theme/CodeBlock/styles.module.css +0 -68
  251. package/lib/theme/DocItem/index.js +0 -138
  252. package/lib/theme/DocItem/styles.module.css +0 -31
  253. package/lib/theme/DocPage/index.js +0 -139
  254. package/lib/theme/DocPage/styles.module.css +0 -85
  255. package/lib/theme/DocPaginator/index.js +0 -63
  256. package/lib/theme/DocSidebar/index.js +0 -133
  257. package/lib/theme/DocSidebar/styles.module.css +0 -106
  258. package/lib/theme/DocSidebarItem/index.js +0 -175
  259. package/lib/theme/DocVersionBanner/index.js +0 -128
  260. package/lib/theme/EditThisPage/index.js +0 -31
  261. package/lib/theme/Footer/index.js +0 -115
  262. package/lib/theme/Footer/styles.module.css +0 -15
  263. package/lib/theme/Heading/index.js +0 -76
  264. package/lib/theme/Heading/styles.css +0 -23
  265. package/lib/theme/Heading/styles.module.css +0 -15
  266. package/lib/theme/IconArrow/index.js +0 -28
  267. package/lib/theme/IconEdit/index.js +0 -34
  268. package/lib/theme/IconExternalLink/index.js +0 -30
  269. package/lib/theme/IconLanguage/index.js +0 -29
  270. package/lib/theme/IconMenu/index.js +0 -30
  271. package/lib/theme/LastUpdated/index.js +0 -61
  272. package/lib/theme/Layout/index.js +0 -64
  273. package/lib/theme/Layout/styles.css +0 -27
  274. package/lib/theme/LayoutHead/index.js +0 -144
  275. package/lib/theme/LayoutProviders/index.js +0 -38
  276. package/lib/theme/Logo/index.js +0 -60
  277. package/lib/theme/MDXComponents/index.js +0 -65
  278. package/lib/theme/MDXPage/index.js +0 -66
  279. package/lib/theme/Navbar/index.js +0 -248
  280. package/lib/theme/Navbar/styles.module.css +0 -63
  281. package/lib/theme/NavbarItem/DefaultNavbarItem.js +0 -210
  282. package/lib/theme/NavbarItem/DocNavbarItem.js +0 -63
  283. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +0 -76
  284. package/lib/theme/NavbarItem/DocsVersionNavbarItem.js +0 -43
  285. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem.js +0 -72
  286. package/lib/theme/NavbarItem/SearchNavbarItem.js +0 -28
  287. package/lib/theme/NavbarItem/index.js +0 -54
  288. package/lib/theme/NotFound.js +0 -57
  289. package/lib/theme/SearchBar.js +0 -15
  290. package/lib/theme/SearchMetadatas/index.js +0 -33
  291. package/lib/theme/Seo/index.js +0 -49
  292. package/lib/theme/SkipToContent/index.js +0 -71
  293. package/lib/theme/SkipToContent/styles.module.css +0 -14
  294. package/lib/theme/TOC/index.js +0 -60
  295. package/lib/theme/TOC/styles.module.css +0 -23
  296. package/lib/theme/TOCCollapsible/index.js +0 -51
  297. package/lib/theme/TOCCollapsible/styles.module.css +0 -49
  298. package/lib/theme/TOCInline/index.js +0 -53
  299. package/lib/theme/TOCInline/styles.module.css +0 -12
  300. package/lib/theme/TabItem/index.js +0 -32
  301. package/lib/theme/Tabs/index.js +0 -150
  302. package/lib/theme/Tabs/styles.module.css +0 -23
  303. package/lib/theme/ThemeContext.js +0 -21
  304. package/lib/theme/ThemeProvider/index.js +0 -38
  305. package/lib/theme/ThemedImage/index.js +0 -49
  306. package/lib/theme/ThemedImage/styles.module.css +0 -18
  307. package/lib/theme/Toggle/index.js +0 -94
  308. package/lib/theme/Toggle/styles.css +0 -103
  309. package/lib/theme/Toggle/styles.module.css +0 -17
  310. package/lib/theme/UserPreferencesContext.js +0 -18
  311. package/lib/theme/UserPreferencesProvider/index.js +0 -36
  312. package/lib/theme/hooks/useContextualSearchFilters.js +0 -47
  313. package/lib/theme/hooks/useDocs.js +0 -18
  314. package/lib/theme/hooks/useHideableNavbar.js +0 -92
  315. package/lib/theme/hooks/useKeyboardNavigation.js +0 -45
  316. package/lib/theme/hooks/useLocationHash.js +0 -28
  317. package/lib/theme/hooks/useLockBodyScroll.js +0 -26
  318. package/lib/theme/hooks/usePrismTheme.js +0 -36
  319. package/lib/theme/hooks/useScrollPosition.js +0 -49
  320. package/lib/theme/hooks/useTOCHighlight.js +0 -87
  321. package/lib/theme/hooks/useTabGroupChoice.js +0 -51
  322. package/lib/theme/hooks/useTheme.js +0 -99
  323. package/lib/theme/hooks/useThemeContext.js +0 -31
  324. package/lib/theme/hooks/useUserPreferencesContext.js +0 -31
  325. package/lib/theme/hooks/useWindowSize.js +0 -73
  326. package/lib/theme/prism-include-languages.js +0 -39
  327. package/lib-next/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  328. package/lib-next/__tests__/translations.test.js +0 -128
  329. package/lib-next/__tests__/validateThemeConfig.test.js +0 -333
  330. package/lib-next/index.js +0 -221
  331. package/lib-next/theme/Toggle/styles.css +0 -103
  332. package/lib-next/theme/hooks/useContextualSearchFilters.js +0 -41
  333. package/lib-next/theme/hooks/useLocationHash.js +0 -20
  334. package/lib-next/theme/hooks/useScrollPosition.js +0 -38
  335. package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
  336. package/lib-next/translations.js +0 -145
  337. package/lib-next/validateThemeConfig.js +0 -319
  338. package/src/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  339. package/src/__tests__/translations.test.ts +0 -116
  340. package/src/__tests__/validateThemeConfig.test.js +0 -333
  341. package/src/prism-include-languages.js +0 -11
  342. package/src/theme/Toggle/styles.css +0 -103
  343. package/src/theme/hooks/useContextualSearchFilters.ts +0 -52
  344. package/src/theme/hooks/useLocationHash.ts +0 -25
  345. package/src/theme/hooks/useScrollPosition.ts +0 -45
  346. package/src/theme/hooks/useTOCHighlight.ts +0 -98
  347. package/tsconfig.json +0 -12
  348. package/update-code-translations.js +0 -242
  349. package/update-code-translations.test.js +0 -33
@@ -7,46 +7,31 @@
7
7
 
8
8
  import React from 'react';
9
9
  import clsx from 'clsx';
10
-
11
- import {useActivePlugin, useVersions} from '@theme/hooks/useDocs';
12
10
  import useWindowSize from '@theme/hooks/useWindowSize';
13
11
  import DocPaginator from '@theme/DocPaginator';
14
12
  import DocVersionBanner from '@theme/DocVersionBanner';
13
+ import DocVersionBadge from '@theme/DocVersionBadge';
15
14
  import Seo from '@theme/Seo';
16
- import LastUpdated from '@theme/LastUpdated';
17
15
  import type {Props} from '@theme/DocItem';
16
+ import DocItemFooter from '@theme/DocItemFooter';
18
17
  import TOC from '@theme/TOC';
19
18
  import TOCCollapsible from '@theme/TOCCollapsible';
20
- import EditThisPage from '@theme/EditThisPage';
21
19
  import {MainHeading} from '@theme/Heading';
22
-
23
20
  import styles from './styles.module.css';
21
+ import {ThemeClassNames} from '@docusaurus/theme-common';
24
22
 
25
- function DocItem(props: Props): JSX.Element {
26
- const {content: DocContent, versionMetadata} = props;
23
+ export default function DocItem(props: Props): JSX.Element {
24
+ const {content: DocContent} = props;
27
25
  const {metadata, frontMatter} = DocContent;
28
26
  const {
29
27
  image,
30
28
  keywords,
31
29
  hide_title: hideTitle,
32
30
  hide_table_of_contents: hideTableOfContents,
31
+ toc_min_heading_level: tocMinHeadingLevel,
32
+ toc_max_heading_level: tocMaxHeadingLevel,
33
33
  } = frontMatter;
34
- const {
35
- description,
36
- title,
37
- editUrl,
38
- lastUpdatedAt,
39
- formattedLastUpdatedAt,
40
- lastUpdatedBy,
41
- } = metadata;
42
-
43
- const {pluginId} = useActivePlugin({failfast: true});
44
- const versions = useVersions(pluginId);
45
-
46
- // If site is not versioned or only one version is included
47
- // we don't show the version badge
48
- // See https://github.com/facebook/docusaurus/issues/3362
49
- const showVersionBadge = versions.length > 1;
34
+ const {description, title} = metadata;
50
35
 
51
36
  // We only add a title if:
52
37
  // - user asks to hide it with frontmatter
@@ -56,15 +41,11 @@ function DocItem(props: Props): JSX.Element {
56
41
 
57
42
  const windowSize = useWindowSize();
58
43
 
59
- const renderTocMobile =
60
- !hideTableOfContents &&
61
- DocContent.toc &&
62
- (windowSize === 'mobile' || windowSize === 'ssr');
44
+ const canRenderTOC =
45
+ !hideTableOfContents && DocContent.toc && DocContent.toc.length > 0;
63
46
 
64
47
  const renderTocDesktop =
65
- !hideTableOfContents &&
66
- DocContent.toc &&
67
- (windowSize === 'desktop' || windowSize === 'ssr');
48
+ canRenderTOC && (windowSize === 'desktop' || windowSize === 'ssr');
68
49
 
69
50
  return (
70
51
  <>
@@ -75,23 +56,25 @@ function DocItem(props: Props): JSX.Element {
75
56
  className={clsx('col', {
76
57
  [styles.docItemCol]: !hideTableOfContents,
77
58
  })}>
78
- <DocVersionBanner versionMetadata={versionMetadata} />
59
+ <DocVersionBanner />
79
60
  <div className={styles.docItemContainer}>
80
61
  <article>
81
- {showVersionBadge && (
82
- <span className="badge badge--secondary">
83
- Version: {versionMetadata.label}
84
- </span>
85
- )}
62
+ <DocVersionBadge />
86
63
 
87
- {renderTocMobile && (
64
+ {canRenderTOC && (
88
65
  <TOCCollapsible
89
66
  toc={DocContent.toc}
90
- className={styles.tocMobile}
67
+ minHeadingLevel={tocMinHeadingLevel}
68
+ maxHeadingLevel={tocMaxHeadingLevel}
69
+ className={clsx(
70
+ ThemeClassNames.docs.docTocMobile,
71
+ styles.tocMobile,
72
+ )}
91
73
  />
92
74
  )}
93
75
 
94
- <div className="markdown">
76
+ <div
77
+ className={clsx(ThemeClassNames.docs.docMarkdown, 'markdown')}>
95
78
  {/*
96
79
  Title can be declared inside md content or declared through frontmatter and added manually
97
80
  To make both cases consistent, the added title is added under the same div.markdown block
@@ -102,36 +85,23 @@ function DocItem(props: Props): JSX.Element {
102
85
  <DocContent />
103
86
  </div>
104
87
 
105
- {(editUrl || lastUpdatedAt || lastUpdatedBy) && (
106
- <footer className="row docusaurus-mt-lg">
107
- <div className="col">
108
- {editUrl && <EditThisPage editUrl={editUrl} />}
109
- </div>
110
-
111
- <div className={clsx('col', styles.lastUpdated)}>
112
- {(lastUpdatedAt || lastUpdatedBy) && (
113
- <LastUpdated
114
- lastUpdatedAt={lastUpdatedAt}
115
- formattedLastUpdatedAt={formattedLastUpdatedAt}
116
- lastUpdatedBy={lastUpdatedBy}
117
- />
118
- )}
119
- </div>
120
- </footer>
121
- )}
88
+ <DocItemFooter {...props} />
122
89
  </article>
123
90
 
124
- <DocPaginator metadata={metadata} />
91
+ <DocPaginator previous={metadata.previous} next={metadata.next} />
125
92
  </div>
126
93
  </div>
127
94
  {renderTocDesktop && (
128
95
  <div className="col col--3">
129
- <TOC toc={DocContent.toc} />
96
+ <TOC
97
+ toc={DocContent.toc}
98
+ minHeadingLevel={tocMinHeadingLevel}
99
+ maxHeadingLevel={tocMaxHeadingLevel}
100
+ className={ThemeClassNames.docs.docTocDesktop}
101
+ />
130
102
  </div>
131
103
  )}
132
104
  </div>
133
105
  </>
134
106
  );
135
107
  }
136
-
137
- export default DocItem;
@@ -5,25 +5,16 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
+ .docItemContainer article > *:first-child,
8
9
  .docItemContainer header + * {
9
10
  margin-top: 0;
10
11
  }
11
12
 
12
- .lastUpdated {
13
- margin-top: 0.2rem;
14
- font-style: italic;
15
- font-size: smaller;
16
- }
17
-
18
- @media only screen and (min-width: 997px) {
13
+ @media (min-width: 997px) {
19
14
  .docItemCol {
20
15
  max-width: 75% !important;
21
16
  }
22
17
 
23
- .lastUpdated {
24
- text-align: right;
25
- }
26
-
27
18
  /* Prevent hydration FOUC, as the mobile TOC needs to be server-rendered */
28
19
  .tocMobile {
29
20
  display: none;
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import React from 'react';
9
+ import clsx from 'clsx';
10
+
11
+ import LastUpdated from '@theme/LastUpdated';
12
+ import type {Props} from '@theme/DocItem';
13
+ import EditThisPage from '@theme/EditThisPage';
14
+ import TagsListInline, {
15
+ Props as TagsListInlineProps,
16
+ } from '@theme/TagsListInline';
17
+
18
+ import styles from './styles.module.css';
19
+ import {ThemeClassNames} from '@docusaurus/theme-common';
20
+
21
+ function TagsRow(props: TagsListInlineProps) {
22
+ return (
23
+ <div
24
+ className={clsx(
25
+ ThemeClassNames.docs.docFooterTagsRow,
26
+ 'row margin-bottom--sm',
27
+ )}>
28
+ <div className="col">
29
+ <TagsListInline {...props} />
30
+ </div>
31
+ </div>
32
+ );
33
+ }
34
+
35
+ type EditMetaRowProps = Pick<
36
+ Props['content']['metadata'],
37
+ 'editUrl' | 'lastUpdatedAt' | 'lastUpdatedBy' | 'formattedLastUpdatedAt'
38
+ >;
39
+ function EditMetaRow({
40
+ editUrl,
41
+ lastUpdatedAt,
42
+ lastUpdatedBy,
43
+ formattedLastUpdatedAt,
44
+ }: EditMetaRowProps) {
45
+ return (
46
+ <div className={clsx(ThemeClassNames.docs.docFooterEditMetaRow, 'row')}>
47
+ <div className="col">{editUrl && <EditThisPage editUrl={editUrl} />}</div>
48
+
49
+ <div className={clsx('col', styles.lastUpdated)}>
50
+ {(lastUpdatedAt || lastUpdatedBy) && (
51
+ <LastUpdated
52
+ lastUpdatedAt={lastUpdatedAt}
53
+ formattedLastUpdatedAt={formattedLastUpdatedAt}
54
+ lastUpdatedBy={lastUpdatedBy}
55
+ />
56
+ )}
57
+ </div>
58
+ </div>
59
+ );
60
+ }
61
+
62
+ export default function DocItemFooter(props: Props): JSX.Element | null {
63
+ const {content: DocContent} = props;
64
+ const {metadata} = DocContent;
65
+ const {editUrl, lastUpdatedAt, formattedLastUpdatedAt, lastUpdatedBy, tags} =
66
+ metadata;
67
+
68
+ const canDisplayTagsRow = tags.length > 0;
69
+ const canDisplayEditMetaRow = !!(editUrl || lastUpdatedAt || lastUpdatedBy);
70
+
71
+ const canDisplayFooter = canDisplayTagsRow || canDisplayEditMetaRow;
72
+
73
+ if (!canDisplayFooter) {
74
+ return null;
75
+ }
76
+
77
+ return (
78
+ <footer
79
+ className={clsx(ThemeClassNames.docs.docFooter, 'docusaurus-mt-lg')}>
80
+ {canDisplayTagsRow && <TagsRow tags={tags} />}
81
+ {canDisplayEditMetaRow && (
82
+ <EditMetaRow
83
+ editUrl={editUrl}
84
+ lastUpdatedAt={lastUpdatedAt}
85
+ lastUpdatedBy={lastUpdatedBy}
86
+ formattedLastUpdatedAt={formattedLastUpdatedAt}
87
+ />
88
+ )}
89
+ </footer>
90
+ );
91
+ }
@@ -5,14 +5,14 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- .blogPostTitle {
9
- font-size: 3rem;
8
+ .lastUpdated {
9
+ margin-top: 0.2rem;
10
+ font-style: italic;
11
+ font-size: smaller;
10
12
  }
11
13
 
12
- .blogPostData {
13
- font-size: 0.9rem;
14
- }
15
-
16
- .blogPostDetailsFull {
17
- flex-direction: column;
14
+ @media (min-width: 997px) {
15
+ .lastUpdated {
16
+ text-align: right;
17
+ }
18
18
  }
@@ -8,9 +8,8 @@
8
8
  import React, {ReactNode, useState, useCallback} from 'react';
9
9
  import {MDXProvider} from '@mdx-js/react';
10
10
 
11
- import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
12
11
  import renderRoutes from '@docusaurus/renderRoutes';
13
- import type {PropVersionMetadata} from '@docusaurus/plugin-content-docs-types';
12
+ import type {PropVersionMetadata} from '@docusaurus/plugin-content-docs';
14
13
  import Layout from '@theme/Layout';
15
14
  import DocSidebar from '@theme/DocSidebar';
16
15
  import MDXComponents from '@theme/MDXComponents';
@@ -18,32 +17,36 @@ import NotFound from '@theme/NotFound';
18
17
  import type {DocumentRoute} from '@theme/DocItem';
19
18
  import type {Props} from '@theme/DocPage';
20
19
  import IconArrow from '@theme/IconArrow';
20
+ import BackToTopButton from '@theme/BackToTopButton';
21
21
  import {matchPath} from '@docusaurus/router';
22
22
  import {translate} from '@docusaurus/Translate';
23
23
 
24
24
  import clsx from 'clsx';
25
25
  import styles from './styles.module.css';
26
- import {ThemeClassNames, docVersionSearchTag} from '@docusaurus/theme-common';
26
+ import {
27
+ ThemeClassNames,
28
+ docVersionSearchTag,
29
+ DocsSidebarProvider,
30
+ useDocsSidebar,
31
+ DocsVersionProvider,
32
+ } from '@docusaurus/theme-common';
33
+ import Head from '@docusaurus/Head';
27
34
 
28
35
  type DocPageContentProps = {
29
36
  readonly currentDocRoute: DocumentRoute;
30
37
  readonly versionMetadata: PropVersionMetadata;
31
38
  readonly children: ReactNode;
39
+ readonly sidebarName: string | undefined;
32
40
  };
33
41
 
34
42
  function DocPageContent({
35
43
  currentDocRoute,
36
44
  versionMetadata,
37
45
  children,
46
+ sidebarName,
38
47
  }: DocPageContentProps): JSX.Element {
39
- const {siteConfig, isClient} = useDocusaurusContext();
48
+ const sidebar = useDocsSidebar();
40
49
  const {pluginId, version} = versionMetadata;
41
-
42
- const sidebarName = currentDocRoute.sidebar;
43
- const sidebar = sidebarName
44
- ? versionMetadata.docsSidebars[sidebarName]
45
- : undefined;
46
-
47
50
  const [hiddenSidebarContainer, setHiddenSidebarContainer] = useState(false);
48
51
  const [hiddenSidebar, setHiddenSidebar] = useState(false);
49
52
  const toggleSidebar = useCallback(() => {
@@ -51,19 +54,20 @@ function DocPageContent({
51
54
  setHiddenSidebar(false);
52
55
  }
53
56
 
54
- setHiddenSidebarContainer(!hiddenSidebarContainer);
57
+ setHiddenSidebarContainer((value) => !value);
55
58
  }, [hiddenSidebar]);
56
59
 
57
60
  return (
58
61
  <Layout
59
- key={isClient}
60
- wrapperClassName={ThemeClassNames.wrapper.docPages}
61
- pageClassName={ThemeClassNames.page.docPage}
62
- searchMetadatas={{
62
+ wrapperClassName={ThemeClassNames.wrapper.docsPages}
63
+ pageClassName={ThemeClassNames.page.docsDocPage}
64
+ searchMetadata={{
63
65
  version,
64
66
  tag: docVersionSearchTag(pluginId, version),
65
67
  }}>
66
68
  <div className={styles.docPage}>
69
+ <BackToTopButton />
70
+
67
71
  {sidebar && (
68
72
  <aside
69
73
  className={clsx(styles.docSidebarContainer, {
@@ -88,7 +92,6 @@ function DocPageContent({
88
92
  }
89
93
  sidebar={sidebar}
90
94
  path={currentDocRoute.path}
91
- sidebarCollapsible={siteConfig.themeConfig.sidebarCollapsible}
92
95
  onCollapse={toggleSidebar}
93
96
  isHidden={hiddenSidebar}
94
97
  />
@@ -148,14 +151,33 @@ function DocPage(props: Props): JSX.Element {
148
151
  matchPath(location.pathname, docRoute),
149
152
  );
150
153
  if (!currentDocRoute) {
151
- return <NotFound {...props} />;
154
+ return <NotFound />;
152
155
  }
156
+
157
+ // For now, the sidebarName is added as route config: not ideal!
158
+ const sidebarName = currentDocRoute.sidebar;
159
+
160
+ const sidebar = sidebarName
161
+ ? versionMetadata.docsSidebars[sidebarName]
162
+ : null;
163
+
153
164
  return (
154
- <DocPageContent
155
- currentDocRoute={currentDocRoute}
156
- versionMetadata={versionMetadata}>
157
- {renderRoutes(docRoutes, {versionMetadata})}
158
- </DocPageContent>
165
+ <>
166
+ <Head>
167
+ {/* TODO we should add a core addRoute({htmlClassName}) generic plugin option */}
168
+ <html className={versionMetadata.className} />
169
+ </Head>
170
+ <DocsVersionProvider version={versionMetadata}>
171
+ <DocsSidebarProvider sidebar={sidebar}>
172
+ <DocPageContent
173
+ currentDocRoute={currentDocRoute}
174
+ versionMetadata={versionMetadata}
175
+ sidebarName={sidebarName}>
176
+ {renderRoutes(docRoutes, {versionMetadata})}
177
+ </DocPageContent>
178
+ </DocsSidebarProvider>
179
+ </DocsVersionProvider>
180
+ </>
159
181
  );
160
182
  }
161
183
 
@@ -6,12 +6,12 @@
6
6
  */
7
7
 
8
8
  import React from 'react';
9
- import Link from '@docusaurus/Link';
10
- import Translate, {translate} from '@docusaurus/Translate';
9
+ import {translate} from '@docusaurus/Translate';
10
+ import DocPaginatorNavLink from '@theme/DocPaginatorNavLink';
11
11
  import type {Props} from '@theme/DocPaginator';
12
12
 
13
13
  function DocPaginator(props: Props): JSX.Element {
14
- const {metadata} = props;
14
+ const {previous, next} = props;
15
15
 
16
16
  return (
17
17
  <nav
@@ -22,38 +22,10 @@ function DocPaginator(props: Props): JSX.Element {
22
22
  description: 'The ARIA label for the docs pagination',
23
23
  })}>
24
24
  <div className="pagination-nav__item">
25
- {metadata.previous && (
26
- <Link
27
- className="pagination-nav__link"
28
- to={metadata.previous.permalink}>
29
- <div className="pagination-nav__sublabel">
30
- <Translate
31
- id="theme.docs.paginator.previous"
32
- description="The label used to navigate to the previous doc">
33
- Previous
34
- </Translate>
35
- </div>
36
- <div className="pagination-nav__label">
37
- &laquo; {metadata.previous.title}
38
- </div>
39
- </Link>
40
- )}
25
+ {previous && <DocPaginatorNavLink navLink={previous} />}
41
26
  </div>
42
27
  <div className="pagination-nav__item pagination-nav__item--next">
43
- {metadata.next && (
44
- <Link className="pagination-nav__link" to={metadata.next.permalink}>
45
- <div className="pagination-nav__sublabel">
46
- <Translate
47
- id="theme.docs.paginator.next"
48
- description="The label used to navigate to the next doc">
49
- Next
50
- </Translate>
51
- </div>
52
- <div className="pagination-nav__label">
53
- {metadata.next.title} &raquo;
54
- </div>
55
- </Link>
56
- )}
28
+ {next && <DocPaginatorNavLink navLink={next} next />}
57
29
  </div>
58
30
  </nav>
59
31
  );
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import React from 'react';
9
+ import clsx from 'clsx';
10
+ import Link from '@docusaurus/Link';
11
+ import Translate from '@docusaurus/Translate';
12
+ import type {Props} from '@theme/DocPaginatorNavLink';
13
+
14
+ function DocPaginatorNavLink(props: Props): JSX.Element {
15
+ const {navLink, next} = props;
16
+ return (
17
+ <Link className={clsx('pagination-nav__link')} to={navLink.permalink}>
18
+ <div className="pagination-nav__sublabel">
19
+ {next ? (
20
+ <Translate
21
+ id="theme.docs.paginator.next"
22
+ description="The label used to navigate to the next doc">
23
+ Next
24
+ </Translate>
25
+ ) : (
26
+ <Translate
27
+ id="theme.docs.paginator.previous"
28
+ description="The label used to navigate to the previous doc">
29
+ Previous
30
+ </Translate>
31
+ )}
32
+ </div>
33
+ <div className="pagination-nav__label">{navLink.title}</div>
34
+ </Link>
35
+ );
36
+ }
37
+
38
+ export default DocPaginatorNavLink;
@@ -12,9 +12,10 @@ import {
12
12
  useAnnouncementBar,
13
13
  MobileSecondaryMenuFiller,
14
14
  MobileSecondaryMenuComponent,
15
+ ThemeClassNames,
16
+ useScrollPosition,
15
17
  } from '@docusaurus/theme-common';
16
18
  import useWindowSize from '@theme/hooks/useWindowSize';
17
- import useScrollPosition from '@theme/hooks/useScrollPosition';
18
19
  import Logo from '@theme/Logo';
19
20
  import IconArrow from '@theme/IconArrow';
20
21
  import {translate} from '@docusaurus/Translate';
@@ -24,17 +25,21 @@ import type {Props} from '@theme/DocSidebar';
24
25
  import styles from './styles.module.css';
25
26
 
26
27
  function useShowAnnouncementBar() {
27
- const {isClosed} = useAnnouncementBar();
28
- const [showAnnouncementBar, setShowAnnouncementBar] = useState(!isClosed);
29
- useScrollPosition(({scrollY}) => {
30
- if (!isClosed) {
31
- setShowAnnouncementBar(scrollY === 0);
32
- }
33
- });
34
- return showAnnouncementBar;
28
+ const {isActive} = useAnnouncementBar();
29
+ const [showAnnouncementBar, setShowAnnouncementBar] = useState(isActive);
30
+
31
+ useScrollPosition(
32
+ ({scrollY}) => {
33
+ if (isActive) {
34
+ setShowAnnouncementBar(scrollY === 0);
35
+ }
36
+ },
37
+ [isActive],
38
+ );
39
+ return isActive && showAnnouncementBar;
35
40
  }
36
41
 
37
- function HideableSidebarButton({onClick}) {
42
+ function HideableSidebarButton({onClick}: {onClick: React.MouseEventHandler}) {
38
43
  return (
39
44
  <button
40
45
  type="button"
@@ -58,19 +63,12 @@ function HideableSidebarButton({onClick}) {
58
63
  );
59
64
  }
60
65
 
61
- function DocSidebarDesktop({
62
- path,
63
- sidebar,
64
- sidebarCollapsible,
65
- onCollapse,
66
- isHidden,
67
- }: Props) {
66
+ function DocSidebarDesktop({path, sidebar, onCollapse, isHidden}: Props) {
68
67
  const showAnnouncementBar = useShowAnnouncementBar();
69
68
  const {
70
69
  navbar: {hideOnScroll},
71
70
  hideableSidebar,
72
71
  } = useThemeConfig();
73
- const {isClosed: isAnnouncementBarClosed} = useAnnouncementBar();
74
72
 
75
73
  return (
76
74
  <div
@@ -81,15 +79,10 @@ function DocSidebarDesktop({
81
79
  {hideOnScroll && <Logo tabIndex={-1} className={styles.sidebarLogo} />}
82
80
  <nav
83
81
  className={clsx('menu thin-scrollbar', styles.menu, {
84
- [styles.menuWithAnnouncementBar]:
85
- !isAnnouncementBarClosed && showAnnouncementBar,
82
+ [styles.menuWithAnnouncementBar]: showAnnouncementBar,
86
83
  })}>
87
- <ul className="menu__list">
88
- <DocSidebarItems
89
- items={sidebar}
90
- collapsible={sidebarCollapsible}
91
- activePath={path}
92
- />
84
+ <ul className={clsx(ThemeClassNames.docs.docSidebarMenu, 'menu__list')}>
85
+ <DocSidebarItems items={sidebar} activePath={path} level={1} />
93
86
  </ul>
94
87
  </nav>
95
88
  {hideableSidebar && <HideableSidebarButton onClick={onCollapse} />}
@@ -97,23 +90,29 @@ function DocSidebarDesktop({
97
90
  );
98
91
  }
99
92
 
93
+ // eslint-disable-next-line react/function-component-definition
100
94
  const DocSidebarMobileSecondaryMenu: MobileSecondaryMenuComponent<Props> = ({
101
95
  toggleSidebar,
102
96
  sidebar,
103
- sidebarCollapsible,
104
97
  path,
105
- }) => {
106
- return (
107
- <ul className="menu__list">
108
- <DocSidebarItems
109
- items={sidebar}
110
- collapsible={sidebarCollapsible}
111
- activePath={path}
112
- onItemClick={() => toggleSidebar()}
113
- />
114
- </ul>
115
- );
116
- };
98
+ }) => (
99
+ <ul className={clsx(ThemeClassNames.docs.docSidebarMenu, 'menu__list')}>
100
+ <DocSidebarItems
101
+ items={sidebar}
102
+ activePath={path}
103
+ onItemClick={(item) => {
104
+ // Mobile sidebar should only be closed if the category has a link
105
+ if (item.type === 'category' && item.href) {
106
+ toggleSidebar();
107
+ }
108
+ if (item.type === 'link') {
109
+ toggleSidebar();
110
+ }
111
+ }}
112
+ level={1}
113
+ />
114
+ </ul>
115
+ );
117
116
 
118
117
  function DocSidebarMobile(props: Props) {
119
118
  return (