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

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 (350) hide show
  1. package/README.md +1 -1
  2. package/lib/__tests__/validateThemeConfig.test.js +277 -3
  3. package/lib/admonitions.css +35 -0
  4. package/lib/deps.d.ts +13 -0
  5. package/lib/index.js +16 -15
  6. package/lib/prism-include-languages.js +9 -5
  7. package/lib/theme/AnnouncementBar/index.js +8 -12
  8. package/lib/theme/AnnouncementBar/styles.module.css +23 -32
  9. package/lib/theme/BackToTopButton/index.js +140 -0
  10. package/lib/theme/BackToTopButton/styles.module.css +42 -0
  11. package/lib/theme/BlogArchivePage/index.js +89 -0
  12. package/lib/theme/BlogLayout/index.js +51 -0
  13. package/lib/theme/BlogListPage/index.js +10 -21
  14. package/lib/theme/BlogPostAuthor/index.js +51 -0
  15. package/lib/theme/BlogPostAuthor/styles.module.css +12 -0
  16. package/lib/theme/BlogPostAuthors/index.js +47 -0
  17. package/lib/theme/BlogPostAuthors/styles.module.css +11 -0
  18. package/lib/theme/BlogPostItem/index.js +58 -67
  19. package/lib/theme/BlogPostPage/index.js +37 -24
  20. package/lib/theme/BlogSidebar/index.js +5 -7
  21. package/lib/theme/BlogSidebar/styles.module.css +2 -2
  22. package/lib/theme/BlogTagsListPage/index.js +8 -44
  23. package/lib/theme/BlogTagsPostsPage/index.js +24 -38
  24. package/lib/theme/CodeBlock/index.js +18 -138
  25. package/lib/theme/CodeBlock/styles.module.css +6 -9
  26. package/lib/theme/Details/index.js +30 -0
  27. package/lib/theme/Details/styles.module.css +13 -0
  28. package/lib/theme/DocCard/index.js +84 -0
  29. package/lib/theme/DocCard/styles.module.css +43 -0
  30. package/lib/theme/DocCardList/index.js +28 -0
  31. package/lib/theme/DocCategoryGeneratedIndexPage/index.js +57 -0
  32. package/lib/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  33. package/lib/theme/DocItem/index.js +22 -48
  34. package/lib/theme/DocItem/styles.module.css +2 -11
  35. package/lib/theme/DocItemFooter/index.js +79 -0
  36. package/lib/theme/DocItemFooter/styles.module.css +18 -0
  37. package/lib/theme/DocPage/index.js +35 -20
  38. package/lib/theme/DocPaginator/index.js +6 -7
  39. package/lib/theme/DocSidebar/index.js +23 -22
  40. package/lib/theme/DocSidebarItem/index.js +84 -50
  41. package/lib/theme/DocSidebarItem/styles.module.css +4 -0
  42. package/lib/theme/DocTagDocListPage/index.js +89 -0
  43. package/lib/theme/DocTagsListPage/index.js +44 -0
  44. package/lib/theme/DocVersionBadge/index.js +34 -0
  45. package/lib/theme/DocVersionBanner/index.js +12 -10
  46. package/lib/theme/EditThisPage/index.js +3 -1
  47. package/lib/theme/ErrorPageContent.js +43 -0
  48. package/lib/theme/Footer/index.js +8 -4
  49. package/lib/theme/Heading/index.js +17 -22
  50. package/lib/theme/Heading/styles.css +5 -6
  51. package/lib/theme/Heading/styles.module.css +9 -5
  52. package/lib/theme/IconArrow/index.js +2 -2
  53. package/lib/theme/IconClose/index.js +31 -0
  54. package/lib/theme/IconEdit/index.js +3 -3
  55. package/lib/theme/IconExternalLink/index.js +3 -3
  56. package/lib/theme/IconLanguage/index.js +3 -3
  57. package/lib/theme/IconMenu/index.js +3 -3
  58. package/lib/theme/LastUpdated/index.js +4 -2
  59. package/lib/theme/Layout/index.js +5 -1
  60. package/lib/theme/LayoutHead/index.js +22 -17
  61. package/lib/theme/LayoutProviders/index.js +7 -5
  62. package/lib/theme/Logo/index.js +16 -14
  63. package/lib/theme/MDXComponents/index.js +45 -4
  64. package/lib/theme/MDXComponents/styles.css +11 -0
  65. package/lib/theme/MDXPage/index.js +2 -1
  66. package/lib/theme/Navbar/index.js +46 -27
  67. package/lib/theme/Navbar/styles.module.css +3 -39
  68. package/lib/theme/NavbarItem/DefaultNavbarItem.js +27 -124
  69. package/lib/theme/NavbarItem/DocNavbarItem.js +7 -8
  70. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +19 -12
  71. package/lib/theme/NavbarItem/DropdownNavbarItem.js +155 -0
  72. package/lib/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +6 -10
  73. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  74. package/lib/theme/NavbarItem/index.js +31 -11
  75. package/lib/theme/{SearchMetadatas → SearchMetadata}/index.js +2 -2
  76. package/lib/theme/Seo/index.js +10 -7
  77. package/lib/theme/TOC/index.js +9 -30
  78. package/lib/theme/TOC/styles.module.css +1 -1
  79. package/lib/theme/TOCCollapsible/index.js +7 -5
  80. package/lib/theme/TOCCollapsible/styles.module.css +1 -0
  81. package/lib/theme/TOCInline/index.js +7 -27
  82. package/lib/theme/TOCItems/index.js +78 -0
  83. package/lib/theme/Tabs/__tests__/index.test.js +123 -0
  84. package/lib/theme/Tabs/index.js +73 -50
  85. package/lib/theme/Tabs/styles.module.css +0 -13
  86. package/lib/theme/Tag/index.js +40 -0
  87. package/lib/theme/Tag/styles.module.css +70 -0
  88. package/lib/theme/TagsListByLetter/index.js +48 -0
  89. package/lib/theme/TagsListByLetter/styles.module.css +11 -0
  90. package/lib/theme/TagsListInline/index.js +44 -0
  91. package/lib/theme/TagsListInline/styles.module.css +15 -0
  92. package/lib/theme/ThemeProvider/index.js +8 -3
  93. package/lib/theme/ThemedImage/index.js +5 -7
  94. package/lib/theme/Toggle/index.js +41 -44
  95. package/lib/theme/Toggle/styles.module.css +91 -3
  96. package/lib/theme/UserPreferencesProvider/index.js +8 -3
  97. package/lib/theme/hooks/useHideableNavbar.js +14 -32
  98. package/lib/theme/hooks/useTheme.js +3 -5
  99. package/lib/theme/hooks/useWindowSize.js +2 -7
  100. package/lib/theme/prism-include-languages.js +4 -3
  101. package/lib/theme-classic.d.ts +806 -0
  102. package/lib/translations.js +4 -4
  103. package/lib/types.d.ts +0 -629
  104. package/lib/validateThemeConfig.js +230 -248
  105. package/lib-next/__tests__/validateThemeConfig.test.js +277 -3
  106. package/lib-next/admonitions.css +35 -0
  107. package/lib-next/deps.d.ts +13 -0
  108. package/lib-next/index.js +16 -10
  109. package/lib-next/prism-include-languages.js +0 -2
  110. package/lib-next/theme/AnnouncementBar/index.js +7 -12
  111. package/lib-next/theme/AnnouncementBar/styles.module.css +23 -32
  112. package/lib-next/theme/BackToTopButton/index.js +131 -0
  113. package/lib-next/theme/BackToTopButton/styles.module.css +42 -0
  114. package/lib-next/theme/BlogArchivePage/index.js +80 -0
  115. package/lib-next/theme/BlogLayout/index.js +40 -0
  116. package/lib-next/theme/BlogListPage/index.js +17 -25
  117. package/lib-next/theme/BlogPostAuthor/index.js +46 -0
  118. package/lib-next/theme/BlogPostAuthor/styles.module.css +12 -0
  119. package/lib-next/theme/BlogPostAuthors/index.js +34 -0
  120. package/lib-next/theme/BlogPostAuthors/styles.module.css +11 -0
  121. package/lib-next/theme/BlogPostItem/index.js +79 -86
  122. package/lib-next/theme/BlogPostPage/index.js +70 -35
  123. package/lib-next/theme/BlogSidebar/index.js +11 -13
  124. package/lib-next/theme/BlogSidebar/styles.module.css +2 -2
  125. package/lib-next/theme/BlogTagsListPage/index.js +14 -55
  126. package/lib-next/theme/BlogTagsPostsPage/index.js +29 -39
  127. package/lib-next/theme/CodeBlock/index.js +17 -149
  128. package/lib-next/theme/CodeBlock/styles.module.css +6 -9
  129. package/lib-next/theme/Details/index.js +20 -0
  130. package/lib-next/theme/Details/styles.module.css +13 -0
  131. package/lib-next/theme/DocCard/index.js +80 -0
  132. package/lib-next/theme/DocCard/styles.module.css +43 -0
  133. package/lib-next/theme/DocCardList/index.js +19 -0
  134. package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +49 -0
  135. package/lib-next/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  136. package/lib-next/theme/DocItem/index.js +30 -59
  137. package/lib-next/theme/DocItem/styles.module.css +2 -11
  138. package/lib-next/theme/DocItemFooter/index.js +79 -0
  139. package/lib-next/theme/DocItemFooter/styles.module.css +18 -0
  140. package/lib-next/theme/DocPage/index.js +46 -23
  141. package/lib-next/theme/DocPaginator/index.js +7 -11
  142. package/lib-next/theme/DocSidebar/index.js +37 -43
  143. package/lib-next/theme/DocSidebarItem/index.js +115 -65
  144. package/lib-next/theme/DocSidebarItem/styles.module.css +4 -0
  145. package/lib-next/theme/DocTagDocListPage/index.js +89 -0
  146. package/lib-next/theme/DocTagsListPage/index.js +38 -0
  147. package/lib-next/theme/DocVersionBadge/index.js +27 -0
  148. package/lib-next/theme/DocVersionBanner/index.js +28 -14
  149. package/lib-next/theme/EditThisPage/index.js +6 -1
  150. package/lib-next/theme/ErrorPageContent.js +35 -0
  151. package/lib-next/theme/Footer/index.js +17 -4
  152. package/lib-next/theme/Heading/index.js +25 -29
  153. package/lib-next/theme/Heading/styles.css +5 -6
  154. package/lib-next/theme/Heading/styles.module.css +9 -5
  155. package/lib-next/theme/IconArrow/index.js +2 -2
  156. package/lib-next/theme/IconClose/index.js +23 -0
  157. package/lib-next/theme/IconEdit/index.js +2 -2
  158. package/lib-next/theme/IconExternalLink/index.js +2 -2
  159. package/lib-next/theme/IconLanguage/index.js +2 -2
  160. package/lib-next/theme/IconMenu/index.js +2 -2
  161. package/lib-next/theme/LastUpdated/index.js +3 -2
  162. package/lib-next/theme/Layout/index.js +3 -1
  163. package/lib-next/theme/LayoutHead/index.js +18 -23
  164. package/lib-next/theme/LayoutProviders/index.js +8 -5
  165. package/lib-next/theme/Logo/index.js +25 -21
  166. package/lib-next/theme/MDXComponents/index.js +34 -7
  167. package/lib-next/theme/MDXComponents/styles.css +11 -0
  168. package/lib-next/theme/MDXPage/index.js +10 -2
  169. package/lib-next/theme/Navbar/index.js +62 -34
  170. package/lib-next/theme/Navbar/styles.module.css +3 -39
  171. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +45 -143
  172. package/lib-next/theme/NavbarItem/DocNavbarItem.js +7 -7
  173. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +31 -19
  174. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +159 -0
  175. package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +4 -12
  176. package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  177. package/lib-next/theme/NavbarItem/index.js +25 -12
  178. package/lib-next/theme/{SearchMetadatas → SearchMetadata}/index.js +1 -1
  179. package/lib-next/theme/Seo/index.js +11 -7
  180. package/lib-next/theme/TOC/index.js +12 -36
  181. package/lib-next/theme/TOC/styles.module.css +1 -1
  182. package/lib-next/theme/TOCCollapsible/index.js +13 -4
  183. package/lib-next/theme/TOCCollapsible/styles.module.css +1 -0
  184. package/lib-next/theme/TOCInline/index.js +10 -28
  185. package/lib-next/theme/TOCItems/index.js +85 -0
  186. package/lib-next/theme/Tabs/__tests__/index.test.js +142 -0
  187. package/lib-next/theme/Tabs/index.js +91 -43
  188. package/lib-next/theme/Tabs/styles.module.css +0 -13
  189. package/lib-next/theme/Tag/index.js +27 -0
  190. package/lib-next/theme/Tag/styles.module.css +70 -0
  191. package/lib-next/theme/TagsListByLetter/index.js +42 -0
  192. package/lib-next/theme/TagsListByLetter/styles.module.css +11 -0
  193. package/lib-next/theme/TagsListInline/index.js +31 -0
  194. package/lib-next/theme/TagsListInline/styles.module.css +15 -0
  195. package/lib-next/theme/ThemeProvider/index.js +10 -7
  196. package/lib-next/theme/ThemedImage/index.js +5 -5
  197. package/lib-next/theme/Toggle/index.js +34 -37
  198. package/lib-next/theme/Toggle/styles.module.css +91 -3
  199. package/lib-next/theme/UserPreferencesProvider/index.js +9 -6
  200. package/lib-next/theme/hooks/useHideableNavbar.js +31 -44
  201. package/lib-next/theme/hooks/useTheme.js +4 -5
  202. package/lib-next/theme/hooks/useWindowSize.js +2 -6
  203. package/lib-next/theme/prism-include-languages.js +2 -1
  204. package/lib-next/theme-classic.d.ts +806 -0
  205. package/lib-next/translations.js +6 -10
  206. package/lib-next/types.d.ts +0 -629
  207. package/lib-next/validateThemeConfig.js +141 -116
  208. package/package.json +27 -24
  209. package/src/__tests__/validateThemeConfig.test.js +277 -3
  210. package/src/admonitions.css +35 -0
  211. package/src/deps.d.ts +13 -0
  212. package/src/index.ts +23 -17
  213. package/src/{prism-include-languages.js → prism-include-languages.ts} +0 -0
  214. package/src/theme/AnnouncementBar/index.tsx +8 -12
  215. package/src/theme/AnnouncementBar/styles.module.css +23 -32
  216. package/src/theme/BackToTopButton/index.tsx +142 -0
  217. package/src/theme/BackToTopButton/styles.module.css +42 -0
  218. package/src/theme/BlogArchivePage/index.tsx +91 -0
  219. package/src/theme/BlogLayout/index.tsx +44 -0
  220. package/src/theme/BlogListPage/index.tsx +18 -25
  221. package/src/theme/BlogPostAuthor/index.tsx +49 -0
  222. package/src/theme/BlogPostAuthor/styles.module.css +12 -0
  223. package/src/theme/BlogPostAuthors/index.tsx +39 -0
  224. package/src/theme/BlogPostAuthors/styles.module.css +11 -0
  225. package/src/theme/BlogPostItem/index.tsx +70 -80
  226. package/src/theme/BlogPostPage/index.tsx +72 -35
  227. package/src/theme/BlogSidebar/index.tsx +11 -13
  228. package/src/theme/BlogSidebar/styles.module.css +2 -2
  229. package/src/theme/BlogTagsListPage/index.tsx +14 -57
  230. package/src/theme/BlogTagsPostsPage/index.tsx +29 -39
  231. package/src/theme/CodeBlock/index.tsx +21 -151
  232. package/src/theme/CodeBlock/styles.module.css +6 -9
  233. package/src/theme/Details/index.tsx +24 -0
  234. package/src/theme/Details/styles.module.css +13 -0
  235. package/src/theme/DocCard/index.tsx +100 -0
  236. package/src/theme/DocCard/styles.module.css +43 -0
  237. package/src/theme/DocCardList/index.tsx +27 -0
  238. package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +53 -0
  239. package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  240. package/src/theme/DocItem/index.tsx +30 -60
  241. package/src/theme/DocItem/styles.module.css +2 -11
  242. package/src/theme/DocItemFooter/index.tsx +91 -0
  243. package/src/theme/DocItemFooter/styles.module.css +18 -0
  244. package/src/theme/DocPage/index.tsx +44 -22
  245. package/src/theme/DocPaginator/index.tsx +9 -13
  246. package/src/theme/DocSidebar/index.tsx +38 -39
  247. package/src/theme/DocSidebarItem/index.tsx +108 -49
  248. package/src/theme/DocSidebarItem/styles.module.css +4 -0
  249. package/src/theme/DocTagDocListPage/index.tsx +89 -0
  250. package/src/theme/DocTagsListPage/index.tsx +41 -0
  251. package/src/theme/DocVersionBadge/index.tsx +30 -0
  252. package/src/theme/DocVersionBanner/index.tsx +48 -21
  253. package/src/theme/EditThisPage/index.tsx +6 -1
  254. package/src/theme/ErrorPageContent.tsx +41 -0
  255. package/src/theme/Footer/index.tsx +20 -5
  256. package/src/theme/Heading/index.tsx +25 -31
  257. package/src/theme/Heading/styles.css +5 -6
  258. package/src/theme/Heading/styles.module.css +9 -5
  259. package/src/theme/IconArrow/index.tsx +2 -2
  260. package/src/theme/IconClose/index.tsx +26 -0
  261. package/src/theme/IconEdit/index.tsx +2 -2
  262. package/src/theme/IconExternalLink/index.tsx +2 -5
  263. package/src/theme/IconLanguage/index.tsx +2 -6
  264. package/src/theme/IconMenu/index.tsx +3 -3
  265. package/src/theme/LastUpdated/index.tsx +3 -2
  266. package/src/theme/Layout/index.tsx +3 -1
  267. package/src/theme/LayoutHead/index.tsx +18 -17
  268. package/src/theme/LayoutProviders/index.tsx +8 -5
  269. package/src/theme/Logo/index.tsx +21 -17
  270. package/src/theme/MDXComponents/index.tsx +39 -5
  271. package/src/theme/MDXComponents/styles.css +11 -0
  272. package/src/theme/MDXPage/index.tsx +10 -2
  273. package/src/theme/Navbar/index.tsx +62 -35
  274. package/src/theme/Navbar/styles.module.css +3 -39
  275. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +42 -149
  276. package/src/theme/NavbarItem/DocNavbarItem.tsx +12 -16
  277. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +33 -21
  278. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +7 -3
  279. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +181 -0
  280. package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +8 -9
  281. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  282. package/src/theme/NavbarItem/index.tsx +41 -16
  283. package/src/theme/{SearchMetadatas → SearchMetadata}/index.tsx +2 -2
  284. package/src/theme/Seo/index.tsx +7 -4
  285. package/src/theme/TOC/index.tsx +13 -35
  286. package/src/theme/TOC/styles.module.css +1 -1
  287. package/src/theme/TOCCollapsible/index.tsx +13 -4
  288. package/src/theme/TOCCollapsible/styles.module.css +1 -0
  289. package/src/theme/TOCInline/index.tsx +13 -32
  290. package/src/theme/TOCItems/index.tsx +96 -0
  291. package/src/theme/Tabs/__tests__/index.test.tsx +129 -0
  292. package/src/theme/Tabs/index.tsx +93 -49
  293. package/src/theme/Tabs/styles.module.css +0 -13
  294. package/src/theme/Tag/index.tsx +31 -0
  295. package/src/theme/Tag/styles.module.css +70 -0
  296. package/src/theme/TagsListByLetter/index.tsx +45 -0
  297. package/src/theme/TagsListByLetter/styles.module.css +11 -0
  298. package/src/theme/TagsListInline/index.tsx +35 -0
  299. package/src/theme/TagsListInline/styles.module.css +15 -0
  300. package/src/theme/ThemeProvider/index.tsx +6 -2
  301. package/src/theme/ThemedImage/index.tsx +5 -5
  302. package/src/theme/Toggle/index.tsx +36 -43
  303. package/src/theme/Toggle/styles.module.css +91 -3
  304. package/src/theme/UserPreferencesProvider/index.tsx +9 -6
  305. package/src/theme/hooks/useHideableNavbar.ts +32 -45
  306. package/src/theme/hooks/useTabGroupChoice.ts +2 -2
  307. package/src/theme/hooks/useTheme.ts +4 -5
  308. package/src/theme/hooks/useWindowSize.ts +2 -7
  309. package/src/theme/prism-include-languages.ts +3 -2
  310. package/src/theme-classic.d.ts +806 -0
  311. package/src/translations.ts +8 -10
  312. package/src/types.d.ts +0 -629
  313. package/src/{validateThemeConfig.js → validateThemeConfig.ts} +151 -96
  314. package/tsconfig.json +1 -2
  315. package/codeTranslations/README.md +0 -20
  316. package/codeTranslations/ar.json +0 -56
  317. package/codeTranslations/base.json +0 -110
  318. package/codeTranslations/bn.json +0 -56
  319. package/codeTranslations/da.json +0 -56
  320. package/codeTranslations/de.json +0 -56
  321. package/codeTranslations/es.json +0 -56
  322. package/codeTranslations/fa.json +0 -56
  323. package/codeTranslations/fil.json +0 -56
  324. package/codeTranslations/fr.json +0 -56
  325. package/codeTranslations/he.json +0 -56
  326. package/codeTranslations/hi.json +0 -56
  327. package/codeTranslations/ja.json +0 -56
  328. package/codeTranslations/ko.json +0 -56
  329. package/codeTranslations/pl.json +0 -56
  330. package/codeTranslations/pt-BR.json +0 -56
  331. package/codeTranslations/pt-PT.json +0 -56
  332. package/codeTranslations/ru.json +0 -56
  333. package/codeTranslations/tr.json +0 -56
  334. package/codeTranslations/vi.json +0 -56
  335. package/codeTranslations/zh-Hans.json +0 -56
  336. package/codeTranslations/zh-Hant.json +0 -56
  337. package/lib/theme/Toggle/styles.css +0 -103
  338. package/lib/theme/hooks/useContextualSearchFilters.js +0 -47
  339. package/lib/theme/hooks/useScrollPosition.js +0 -49
  340. package/lib/theme/hooks/useTOCHighlight.js +0 -87
  341. package/lib-next/theme/Toggle/styles.css +0 -103
  342. package/lib-next/theme/hooks/useContextualSearchFilters.js +0 -41
  343. package/lib-next/theme/hooks/useScrollPosition.js +0 -38
  344. package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
  345. package/src/theme/Toggle/styles.css +0 -103
  346. package/src/theme/hooks/useContextualSearchFilters.ts +0 -52
  347. package/src/theme/hooks/useScrollPosition.ts +0 -45
  348. package/src/theme/hooks/useTOCHighlight.ts +0 -98
  349. package/update-code-translations.js +0 -242
  350. package/update-code-translations.test.js +0 -33
@@ -15,22 +15,30 @@ import {
15
15
  useThemeConfig,
16
16
  useMobileSecondaryMenuRenderer,
17
17
  usePrevious,
18
+ useHistoryPopHandler,
18
19
  } from '@docusaurus/theme-common';
19
20
  import useHideableNavbar from '@theme/hooks/useHideableNavbar';
20
21
  import useLockBodyScroll from '@theme/hooks/useLockBodyScroll';
21
22
  import useWindowSize from '@theme/hooks/useWindowSize';
22
- import NavbarItem from '@theme/NavbarItem';
23
+ import {useActivePlugin} from '@theme/hooks/useDocs';
24
+ import NavbarItem, {Props as NavbarItemConfig} from '@theme/NavbarItem';
23
25
  import Logo from '@theme/Logo';
24
26
  import IconMenu from '@theme/IconMenu';
27
+ import IconClose from '@theme/IconClose';
25
28
 
26
29
  import styles from './styles.module.css';
27
30
 
28
31
  // retrocompatible with v1
29
32
  const DefaultNavItemPosition = 'right';
30
33
 
34
+ function useNavbarItems() {
35
+ // TODO temporary casting until ThemeConfig type is improved
36
+ return useThemeConfig().navbar.items as NavbarItemConfig[];
37
+ }
38
+
31
39
  // If split links by left/right
32
40
  // if position is unspecified, fallback to right (as v1)
33
- function splitNavItemsByPosition(items) {
41
+ function splitNavItemsByPosition(items: NavbarItemConfig[]) {
34
42
  const leftItems = items.filter(
35
43
  (item) => (item.position ?? DefaultNavItemPosition) === 'left',
36
44
  );
@@ -51,6 +59,18 @@ function useMobileSidebar() {
51
59
 
52
60
  const [shown, setShown] = useState(false);
53
61
 
62
+ // Close mobile sidebar on navigation pop
63
+ // Most likely firing when using the Android back button (but not only)
64
+ useHistoryPopHandler(() => {
65
+ if (shown) {
66
+ setShown(false);
67
+ // Should we prevent the navigation here?
68
+ // See https://github.com/facebook/docusaurus/pull/5462#issuecomment-911699846
69
+ return false; // prevent pop navigation
70
+ }
71
+ return undefined;
72
+ });
73
+
54
74
  const toggle = useCallback(() => {
55
75
  setShown((s) => !s);
56
76
  }, []);
@@ -85,12 +105,13 @@ function useSecondaryMenu({
85
105
  });
86
106
  const previousContent = usePrevious(content);
87
107
 
88
- const [shown, setShown] = useState<boolean>(() => {
89
- // /!\ content is set with useEffect,
90
- // so it's not available on mount anyway
91
- // "return !!content" => always returns false
92
- return false;
93
- });
108
+ const [shown, setShown] = useState<boolean>(
109
+ () =>
110
+ // /!\ content is set with useEffect,
111
+ // so it's not available on mount anyway
112
+ // "return !!content" => always returns false
113
+ false,
114
+ );
94
115
 
95
116
  // When content is become available for the first time (set in useEffect)
96
117
  // we set this content to be shown!
@@ -132,9 +153,7 @@ function NavbarMobileSidebar({
132
153
  toggleSidebar,
133
154
  }: NavbarMobileSidebarProps) {
134
155
  useLockBodyScroll(sidebarShown);
135
- const {
136
- navbar: {items},
137
- } = useThemeConfig();
156
+ const items = useNavbarItems();
138
157
 
139
158
  const colorModeToggle = useColorModeToggle();
140
159
 
@@ -151,42 +170,49 @@ function NavbarMobileSidebar({
151
170
  imageClassName="navbar__logo"
152
171
  titleClassName="navbar__title"
153
172
  />
154
- {!colorModeToggle.disabled && sidebarShown && (
173
+ {!colorModeToggle.disabled && (
155
174
  <Toggle
175
+ className={styles.navbarSidebarToggle}
156
176
  checked={colorModeToggle.isDarkTheme}
157
177
  onChange={colorModeToggle.toggle}
158
178
  />
159
179
  )}
180
+ <button
181
+ type="button"
182
+ className="clean-btn navbar-sidebar__close"
183
+ onClick={toggleSidebar}>
184
+ <IconClose
185
+ color="var(--ifm-color-emphasis-600)"
186
+ className={styles.navbarSidebarCloseSvg}
187
+ />
188
+ </button>
160
189
  </div>
161
190
 
162
191
  <div
163
- className={clsx('navbar-sidebar__items', styles.menuWrapper, {
164
- [styles.menuWrapperSecondaryMenuShown]: secondaryMenu.shown,
192
+ className={clsx('navbar-sidebar__items', {
193
+ 'navbar-sidebar__items--show-secondary': secondaryMenu.shown,
165
194
  })}>
166
- <div className="menu">
195
+ <div className="navbar-sidebar__item menu">
167
196
  <ul className="menu__list">
168
197
  {items.map((item, i) => (
169
- <NavbarItem
170
- mobile
171
- {...(item as any)} // TODO fix typing
172
- onClick={toggleSidebar}
173
- key={i}
174
- />
198
+ <NavbarItem mobile {...item} onClick={toggleSidebar} key={i} />
175
199
  ))}
176
200
  </ul>
177
201
  </div>
178
202
 
179
- <div className={styles.secondaryMenu}>
180
- <button
181
- type="button"
182
- className={clsx('clean-btn', styles.backButton)}
183
- onClick={secondaryMenu.hide}>
184
- <Translate
185
- id="theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel"
186
- description="The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)">
187
- ← Back to main menu
188
- </Translate>
189
- </button>
203
+ <div className="navbar-sidebar__item menu">
204
+ {items.length > 0 && (
205
+ <button
206
+ type="button"
207
+ className="clean-btn navbar-sidebar__back"
208
+ onClick={secondaryMenu.hide}>
209
+ <Translate
210
+ id="theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel"
211
+ description="The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)">
212
+ ← Back to main menu
213
+ </Translate>
214
+ </button>
215
+ )}
190
216
  {secondaryMenu.content}
191
217
  </div>
192
218
  </div>
@@ -196,14 +222,15 @@ function NavbarMobileSidebar({
196
222
 
197
223
  function Navbar(): JSX.Element {
198
224
  const {
199
- navbar: {items, hideOnScroll, style},
225
+ navbar: {hideOnScroll, style},
200
226
  } = useThemeConfig();
201
227
 
202
228
  const mobileSidebar = useMobileSidebar();
203
229
  const colorModeToggle = useColorModeToggle();
204
-
230
+ const activeDocPlugin = useActivePlugin();
205
231
  const {navbarRef, isNavbarVisible} = useHideableNavbar(hideOnScroll);
206
232
 
233
+ const items = useNavbarItems();
207
234
  const hasSearchNavbarItem = items.some((item) => item.type === 'search');
208
235
  const {leftItems, rightItems} = splitNavItemsByPosition(items);
209
236
 
@@ -219,7 +246,7 @@ function Navbar(): JSX.Element {
219
246
  })}>
220
247
  <div className="navbar__inner">
221
248
  <div className="navbar__items">
222
- {items?.length > 0 && (
249
+ {(items?.length > 0 || activeDocPlugin) && (
223
250
  <button
224
251
  aria-label="Navigation bar toggle"
225
252
  className="navbar__toggle clean-btn"
@@ -8,7 +8,7 @@
8
8
  /*
9
9
  Hide toggle in small viewports
10
10
  */
11
- @media screen and (max-width: 997px) {
11
+ @media (max-width: 996px) {
12
12
  .toggle {
13
13
  display: none;
14
14
  }
@@ -22,42 +22,6 @@ Hide toggle in small viewports
22
22
  transform: translate3d(0, calc(-100% - 2px), 0);
23
23
  }
24
24
 
25
- :global(.navbar-sidebar__items) {
26
- padding: 0;
27
- }
28
-
29
- :global(.navbar-sidebar) {
30
- overflow-x: hidden;
31
- }
32
-
33
- .menuWrapper {
34
- display: flex;
35
- width: calc(var(--ifm-navbar-sidebar-width));
36
- transition: transform 0.2s cubic-bezier(0.4, 0, 0.2, 1);
37
- transform: translateZ(0);
38
- }
39
-
40
- .menuWrapperSecondaryMenuShown {
41
- transform: translate3d(calc((var(--ifm-navbar-sidebar-width)) * -1), 0, 0);
42
- }
43
-
44
- .menuWrapper > div {
45
- flex-shrink: 0;
46
- width: calc(var(--ifm-navbar-sidebar-width));
47
- font-weight: var(--ifm-font-weight-semibold);
48
- padding: 0.5rem;
49
- }
50
-
51
- .backButton {
52
- width: calc(100% + 1rem);
53
- margin: 0 0 0.7rem -0.5rem;
54
- text-align: left;
55
- font-size: 15px;
56
- padding: 0.6rem 1.5rem;
57
- background: var(--ifm-menu-color-background-active);
58
- font-weight: var(--ifm-button-font-weight);
59
- }
60
-
61
- .secondaryMenu {
62
- padding-top: 0 !important;
25
+ .navbarSidebarToggle {
26
+ margin-right: 1rem;
63
27
  }
@@ -5,16 +5,10 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- import React, {useState, useRef, useEffect} from 'react';
8
+ import React from 'react';
9
9
  import clsx from 'clsx';
10
10
  import Link from '@docusaurus/Link';
11
11
  import useBaseUrl from '@docusaurus/useBaseUrl';
12
- import {useLocation} from '@docusaurus/router';
13
- import {
14
- isSamePath,
15
- useCollapsible,
16
- Collapsible,
17
- } from '@docusaurus/theme-common';
18
12
  import type {
19
13
  NavLinkProps,
20
14
  DesktopOrMobileNavBarItemProps,
@@ -22,19 +16,21 @@ import type {
22
16
  } from '@theme/NavbarItem/DefaultNavbarItem';
23
17
  import IconExternalLink from '@theme/IconExternalLink';
24
18
  import isInternalUrl from '@docusaurus/isInternalUrl';
19
+ import {isRegexpStringMatch} from '@docusaurus/theme-common';
20
+ import {getInfimaActiveClassName} from './index';
25
21
 
26
22
  const dropdownLinkActiveClass = 'dropdown__link--active';
27
23
 
28
- function NavLink({
24
+ export function NavLink({
29
25
  activeBasePath,
30
26
  activeBaseRegex,
31
27
  to,
32
28
  href,
33
29
  label,
34
- activeClassName = 'navbar__link--active',
30
+ activeClassName = '',
35
31
  prependBaseUrlToHref,
36
32
  ...props
37
- }: NavLinkProps) {
33
+ }: NavLinkProps): JSX.Element {
38
34
  // TODO all this seems hacky
39
35
  // {to: 'version'} should probably be forbidden, in favor of {to: '/version'}
40
36
  const toUrl = useBaseUrl(to);
@@ -51,13 +47,15 @@ function NavLink({
51
47
  }
52
48
  : {
53
49
  isNavLink: true,
54
- activeClassName,
50
+ activeClassName: !props.className?.includes(activeClassName)
51
+ ? activeClassName
52
+ : '',
55
53
  to: toUrl,
56
54
  ...(activeBasePath || activeBaseRegex
57
55
  ? {
58
56
  isActive: (_match, location) =>
59
57
  activeBaseRegex
60
- ? new RegExp(activeBaseRegex).test(location.pathname)
58
+ ? isRegexpStringMatch(activeBaseRegex, location.pathname)
61
59
  : location.pathname.startsWith(activeBaseUrl),
62
60
  }
63
61
  : null),
@@ -75,159 +73,54 @@ function NavLink({
75
73
  );
76
74
  }
77
75
 
78
- function NavItemDesktop({
79
- items,
80
- position,
76
+ function DefaultNavbarItemDesktop({
81
77
  className,
78
+ isDropdownItem = false,
82
79
  ...props
83
80
  }: DesktopOrMobileNavBarItemProps) {
84
- const dropdownRef = useRef<HTMLDivElement>(null);
85
- const dropdownMenuRef = useRef<HTMLUListElement>(null);
86
- const [showDropdown, setShowDropdown] = useState(false);
87
-
88
- useEffect(() => {
89
- const handleClickOutside = (event) => {
90
- if (!dropdownRef.current || dropdownRef.current.contains(event.target)) {
91
- return;
92
- }
93
-
94
- setShowDropdown(false);
95
- };
96
-
97
- document.addEventListener('mousedown', handleClickOutside);
98
- document.addEventListener('touchstart', handleClickOutside);
99
-
100
- return () => {
101
- document.removeEventListener('mousedown', handleClickOutside);
102
- document.removeEventListener('touchstart', handleClickOutside);
103
- };
104
- }, [dropdownRef]);
105
-
106
- const navLinkClassNames = (extraClassName?: string, isDropdownItem = false) =>
107
- clsx(
108
- {
109
- 'navbar__item navbar__link': !isDropdownItem,
110
- dropdown__link: isDropdownItem,
111
- },
112
- extraClassName,
113
- );
81
+ const element = (
82
+ <NavLink
83
+ className={clsx(
84
+ isDropdownItem ? 'dropdown__link' : 'navbar__item navbar__link',
85
+ className,
86
+ )}
87
+ {...props}
88
+ />
89
+ );
114
90
 
115
- if (!items) {
116
- return <NavLink className={navLinkClassNames(className)} {...props} />;
91
+ if (isDropdownItem) {
92
+ return <li>{element}</li>;
117
93
  }
118
94
 
119
- return (
120
- <div
121
- ref={dropdownRef}
122
- className={clsx('navbar__item', 'dropdown', 'dropdown--hoverable', {
123
- 'dropdown--left': position === 'left',
124
- 'dropdown--right': position === 'right',
125
- 'dropdown--show': showDropdown,
126
- })}>
127
- <NavLink
128
- className={navLinkClassNames(className)}
129
- {...props}
130
- onClick={props.to ? undefined : (e) => e.preventDefault()}
131
- onKeyDown={(e) => {
132
- if (e.key === 'Enter') {
133
- e.preventDefault();
134
- setShowDropdown(!showDropdown);
135
- }
136
- }}>
137
- {props.children ?? props.label}
138
- </NavLink>
139
- <ul ref={dropdownMenuRef} className="dropdown__menu">
140
- {items.map(({className: childItemClassName, ...childItemProps}, i) => (
141
- <li key={i}>
142
- <NavLink
143
- onKeyDown={(e) => {
144
- if (i === items.length - 1 && e.key === 'Tab') {
145
- e.preventDefault();
146
-
147
- setShowDropdown(false);
148
-
149
- const nextNavbarItem = (dropdownRef.current as HTMLElement)
150
- .nextElementSibling;
151
-
152
- if (nextNavbarItem) {
153
- (nextNavbarItem as HTMLElement).focus();
154
- }
155
- }
156
- }}
157
- activeClassName={dropdownLinkActiveClass}
158
- className={navLinkClassNames(childItemClassName, true)}
159
- {...childItemProps}
160
- />
161
- </li>
162
- ))}
163
- </ul>
164
- </div>
165
- );
95
+ return element;
166
96
  }
167
97
 
168
- function NavItemMobile({
169
- items,
98
+ function DefaultNavbarItemMobile({
170
99
  className,
171
- position: _position, // Need to destructure position from props so that it doesn't get passed on.
100
+ isDropdownItem: _isDropdownItem,
172
101
  ...props
173
102
  }: DesktopOrMobileNavBarItemProps) {
174
- const {pathname} = useLocation();
175
- const {collapsed, toggleCollapsed} = useCollapsible({
176
- initialState: () =>
177
- !items?.some((item) => isSamePath(item.to, pathname)) ?? true,
178
- });
179
-
180
- const navLinkClassNames = (extraClassName?: string, isSubList = false) =>
181
- clsx(
182
- 'menu__link',
183
- {
184
- 'menu__link--sublist': isSubList,
185
- },
186
- extraClassName,
187
- );
188
-
189
- if (!items) {
190
- return (
191
- <li className="menu__list-item">
192
- <NavLink className={navLinkClassNames(className)} {...props} />
193
- </li>
194
- );
195
- }
196
-
197
103
  return (
198
- <li
199
- className={clsx('menu__list-item', {
200
- 'menu__list-item--collapsed': collapsed,
201
- })}>
202
- <NavLink
203
- role="button"
204
- className={navLinkClassNames(className, true)}
205
- {...props}
206
- onClick={(e) => {
207
- e.preventDefault();
208
- toggleCollapsed();
209
- }}>
210
- {props.children ?? props.label}
211
- </NavLink>
212
- <Collapsible as="ul" className="menu__list" collapsed={collapsed}>
213
- {items.map(({className: childItemClassName, ...childItemProps}, i) => (
214
- <li className="menu__list-item" key={i}>
215
- <NavLink
216
- activeClassName="menu__link--active"
217
- className={navLinkClassNames(childItemClassName)}
218
- {...childItemProps}
219
- onClick={props.onClick}
220
- />
221
- </li>
222
- ))}
223
- </Collapsible>
104
+ <li className="menu__list-item">
105
+ <NavLink className={clsx('menu__link', className)} {...props} />
224
106
  </li>
225
107
  );
226
108
  }
227
109
 
228
- function DefaultNavbarItem({mobile = false, ...props}: Props): JSX.Element {
229
- const Comp = mobile ? NavItemMobile : NavItemDesktop;
230
- return <Comp {...props} />;
110
+ function DefaultNavbarItem({
111
+ mobile = false,
112
+ position: _position, // Need to destructure position from props so that it doesn't get passed on.
113
+ ...props
114
+ }: Props): JSX.Element {
115
+ const Comp = mobile ? DefaultNavbarItemMobile : DefaultNavbarItemDesktop;
116
+ return (
117
+ <Comp
118
+ {...props}
119
+ activeClassName={
120
+ props.activeClassName ?? getInfimaActiveClassName(mobile)
121
+ }
122
+ />
123
+ );
231
124
  }
232
125
 
233
126
  export default DefaultNavbarItem;
@@ -9,20 +9,13 @@ import React from 'react';
9
9
  import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem';
10
10
  import {useLatestVersion, useActiveDocContext} from '@theme/hooks/useDocs';
11
11
  import clsx from 'clsx';
12
+ import {getInfimaActiveClassName} from './index';
12
13
  import type {Props} from '@theme/NavbarItem/DocNavbarItem';
13
- import {useDocsPreferredVersion} from '@docusaurus/theme-common';
14
- import {uniq} from '@docusaurus/utils-common';
15
- import type {
16
- GlobalDataVersion,
17
- GlobalDataDoc,
18
- } from '@docusaurus/plugin-content-docs-types';
14
+ import {useDocsPreferredVersion, uniq} from '@docusaurus/theme-common';
15
+ import type {GlobalDataVersion} from '@docusaurus/plugin-content-docs';
19
16
 
20
17
  function getDocInVersions(versions: GlobalDataVersion[], docId: string) {
21
- // vanilla-js flatten, TODO replace soon by ES flat() / flatMap()
22
- const allDocs: GlobalDataDoc[] = [].concat(
23
- ...versions.map((version) => version.docs),
24
- );
25
-
18
+ const allDocs = versions.flatMap((version) => version.docs);
26
19
  const doc = allDocs.find((versionDoc) => versionDoc.id === docId);
27
20
  if (!doc) {
28
21
  const docIds = allDocs.map((versionDoc) => versionDoc.id).join('\n- ');
@@ -38,7 +31,6 @@ Available doc ids are:\n- ${docIds}`,
38
31
 
39
32
  export default function DocNavbarItem({
40
33
  docId,
41
- activeSidebarClassName,
42
34
  label: staticLabel,
43
35
  docsPluginId,
44
36
  ...props
@@ -48,19 +40,23 @@ export default function DocNavbarItem({
48
40
  const latestVersion = useLatestVersion(docsPluginId);
49
41
 
50
42
  // Versions used to look for the doc to link to, ordered + no duplicate
51
- const versions: GlobalDataVersion[] = uniq(
52
- [activeVersion, preferredVersion, latestVersion].filter(Boolean),
43
+ const versions = uniq(
44
+ [activeVersion, preferredVersion, latestVersion].filter(
45
+ Boolean,
46
+ ) as GlobalDataVersion[],
53
47
  );
54
48
  const doc = getDocInVersions(versions, docId);
49
+ const activeDocInfimaClassName = getInfimaActiveClassName(props.mobile);
55
50
 
56
51
  return (
57
52
  <DefaultNavbarItem
58
53
  exact
59
54
  {...props}
60
55
  className={clsx(props.className, {
61
- [activeSidebarClassName]:
62
- activeDoc && activeDoc.sidebar === doc.sidebar,
56
+ [activeDocInfimaClassName]:
57
+ activeDoc?.sidebar && activeDoc.sidebar === doc.sidebar,
63
58
  })}
59
+ activeClassName={activeDocInfimaClassName}
64
60
  label={staticLabel ?? doc.id}
65
61
  to={doc.path}
66
62
  />
@@ -7,6 +7,7 @@
7
7
 
8
8
  import React from 'react';
9
9
  import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem';
10
+ import DropdownNavbarItem from '@theme/NavbarItem/DropdownNavbarItem';
10
11
  import {
11
12
  useVersions,
12
13
  useLatestVersion,
@@ -14,9 +15,11 @@ import {
14
15
  } from '@theme/hooks/useDocs';
15
16
  import type {Props} from '@theme/NavbarItem/DocsVersionDropdownNavbarItem';
16
17
  import {useDocsPreferredVersion} from '@docusaurus/theme-common';
18
+ import {translate} from '@docusaurus/Translate';
19
+ import type {GlobalDataVersion} from '@docusaurus/plugin-content-docs';
17
20
 
18
- const getVersionMainDoc = (version) =>
19
- version.docs.find((doc) => doc.id === version.mainDocId);
21
+ const getVersionMainDoc = (version: GlobalDataVersion) =>
22
+ version.docs.find((doc) => doc.id === version.mainDocId)!;
20
23
 
21
24
  export default function DocsVersionDropdownNavbarItem({
22
25
  mobile,
@@ -30,9 +33,8 @@ export default function DocsVersionDropdownNavbarItem({
30
33
  const versions = useVersions(docsPluginId);
31
34
  const latestVersion = useLatestVersion(docsPluginId);
32
35
 
33
- const {preferredVersion, savePreferredVersionName} = useDocsPreferredVersion(
34
- docsPluginId,
35
- );
36
+ const {preferredVersion, savePreferredVersionName} =
37
+ useDocsPreferredVersion(docsPluginId);
36
38
 
37
39
  function getItems() {
38
40
  const versionLinks = versions.map((version) => {
@@ -52,20 +54,7 @@ export default function DocsVersionDropdownNavbarItem({
52
54
  };
53
55
  });
54
56
 
55
- const items = [
56
- ...dropdownItemsBefore,
57
- ...versionLinks,
58
- ...dropdownItemsAfter,
59
- ];
60
-
61
- // We don't want to render a version dropdown with 0 or 1 item
62
- // If we build the site with a single docs version (onlyIncludeVersions: ['1.0.0'])
63
- // We'd rather render a button instead of a dropdown
64
- if (items.length <= 1) {
65
- return undefined;
66
- }
67
-
68
- return items;
57
+ return [...dropdownItemsBefore, ...versionLinks, ...dropdownItemsAfter];
69
58
  }
70
59
 
71
60
  const items = getItems();
@@ -74,12 +63,35 @@ export default function DocsVersionDropdownNavbarItem({
74
63
  activeDocContext.activeVersion ?? preferredVersion ?? latestVersion;
75
64
 
76
65
  // Mobile dropdown is handled a bit differently
77
- const dropdownLabel = mobile && items ? 'Versions' : dropdownVersion.label;
66
+ const dropdownLabel =
67
+ mobile && items
68
+ ? translate({
69
+ id: 'theme.navbar.mobileVersionsDropdown.label',
70
+ message: 'Versions',
71
+ description:
72
+ 'The label for the navbar versions dropdown on mobile view',
73
+ })
74
+ : dropdownVersion.label;
78
75
  const dropdownTo =
79
76
  mobile && items ? undefined : getVersionMainDoc(dropdownVersion).path;
80
77
 
78
+ // We don't want to render a version dropdown with 0 or 1 item
79
+ // If we build the site with a single docs version (onlyIncludeVersions: ['1.0.0'])
80
+ // We'd rather render a button instead of a dropdown
81
+ if (items.length <= 1) {
82
+ return (
83
+ <DefaultNavbarItem
84
+ {...props}
85
+ mobile={mobile}
86
+ label={dropdownLabel}
87
+ to={dropdownTo}
88
+ isActive={dropdownActiveClassDisabled ? () => false : undefined}
89
+ />
90
+ );
91
+ }
92
+
81
93
  return (
82
- <DefaultNavbarItem
94
+ <DropdownNavbarItem
83
95
  {...props}
84
96
  mobile={mobile}
85
97
  label={dropdownLabel}
@@ -7,12 +7,16 @@
7
7
 
8
8
  import React from 'react';
9
9
  import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem';
10
- import {useActiveVersion, useLatestVersion} from '@theme/hooks/useDocs';
10
+ import {
11
+ useActiveVersion,
12
+ useLatestVersion,
13
+ GlobalVersion,
14
+ } from '@theme/hooks/useDocs';
11
15
  import type {Props} from '@theme/NavbarItem/DocsVersionNavbarItem';
12
16
  import {useDocsPreferredVersion} from '@docusaurus/theme-common';
13
17
 
14
- const getVersionMainDoc = (version) =>
15
- version.docs.find((doc) => doc.id === version.mainDocId);
18
+ const getVersionMainDoc = (version: GlobalVersion) =>
19
+ version.docs.find((doc) => doc.id === version.mainDocId)!;
16
20
 
17
21
  export default function DocsVersionNavbarItem({
18
22
  label: staticLabel,