@docusaurus/theme-classic 2.0.0-beta.16 → 2.0.0-beta.19

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 (319) hide show
  1. package/lib/admonitions.css +4 -0
  2. package/lib/default.css +3038 -0
  3. package/lib/getSwizzleConfig.js +177 -36
  4. package/lib/index.js +10 -15
  5. package/lib/nprogress.css +41 -0
  6. package/lib/nprogress.js +46 -0
  7. package/lib/theme-classic.d.ts +600 -76
  8. package/lib/translations.js +12 -2
  9. package/lib/validateThemeConfig.js +77 -28
  10. package/lib-next/theme/BackToTopButton/index.js +6 -104
  11. package/lib-next/theme/BlogArchivePage/index.js +14 -10
  12. package/lib-next/theme/BlogLayout/index.js +1 -5
  13. package/lib-next/theme/BlogListPage/index.js +34 -13
  14. package/lib-next/theme/BlogListPaginator/index.js +25 -28
  15. package/lib-next/theme/BlogPostAuthor/index.js +16 -7
  16. package/lib-next/theme/BlogPostItem/index.js +6 -6
  17. package/lib-next/theme/BlogPostItem/styles.module.css +9 -0
  18. package/lib-next/theme/BlogPostPage/index.js +56 -45
  19. package/lib-next/theme/BlogPostPaginator/index.js +25 -28
  20. package/lib-next/theme/BlogSidebar/Desktop/index.js +41 -0
  21. package/lib-next/theme/BlogSidebar/{styles.module.css → Desktop/styles.module.css} +1 -2
  22. package/lib-next/theme/BlogSidebar/Mobile/index.js +36 -0
  23. package/lib-next/theme/BlogSidebar/index.js +11 -31
  24. package/lib-next/theme/BlogTagsListPage/index.js +17 -14
  25. package/lib-next/theme/BlogTagsPostsPage/index.js +43 -38
  26. package/lib-next/theme/CodeBlock/Container/index.js +29 -0
  27. package/lib-next/theme/CodeBlock/Container/styles.module.css +14 -0
  28. package/lib-next/theme/CodeBlock/Content/Element.js +23 -0
  29. package/lib-next/theme/CodeBlock/Content/String.js +104 -0
  30. package/lib-next/theme/CodeBlock/{styles.module.css → Content/styles.module.css} +39 -29
  31. package/lib-next/theme/CodeBlock/CopyButton/index.js +61 -0
  32. package/lib-next/theme/CodeBlock/CopyButton/styles.module.css +47 -0
  33. package/lib-next/theme/CodeBlock/Line/index.js +49 -0
  34. package/lib-next/theme/CodeBlock/Line/styles.module.css +51 -0
  35. package/lib-next/theme/CodeBlock/WordWrapButton/index.js +40 -0
  36. package/lib-next/theme/CodeBlock/WordWrapButton/styles.module.css +15 -0
  37. package/lib-next/theme/CodeBlock/index.js +26 -164
  38. package/lib-next/theme/ColorModeToggle/index.js +62 -0
  39. package/lib-next/theme/ColorModeToggle/styles.module.css +35 -0
  40. package/lib-next/theme/Details/index.js +1 -1
  41. package/lib-next/theme/DocBreadcrumbs/index.js +63 -19
  42. package/lib-next/theme/DocBreadcrumbs/styles.module.css +8 -15
  43. package/lib-next/theme/DocCard/index.js +17 -15
  44. package/lib-next/theme/DocCard/styles.module.css +8 -17
  45. package/lib-next/theme/DocCardList/index.js +20 -6
  46. package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +30 -9
  47. package/lib-next/theme/DocCategoryGeneratedIndexPage/styles.module.css +8 -0
  48. package/lib-next/theme/DocItem/index.js +85 -67
  49. package/lib-next/theme/DocItem/styles.module.css +6 -0
  50. package/lib-next/theme/DocPage/Layout/Main/index.js +29 -0
  51. package/lib-next/theme/DocPage/Layout/Main/styles.module.css +28 -0
  52. package/lib-next/theme/DocPage/Layout/Sidebar/ExpandButton/index.js +34 -0
  53. package/lib-next/theme/DocPage/Layout/Sidebar/ExpandButton/styles.module.css +33 -0
  54. package/lib-next/theme/DocPage/Layout/Sidebar/index.js +68 -0
  55. package/lib-next/theme/DocPage/Layout/Sidebar/index.module.css +32 -0
  56. package/lib-next/theme/DocPage/Layout/index.js +34 -0
  57. package/lib-next/theme/{BlogPostAuthor/styles.module.css → DocPage/Layout/index.module.css} +6 -3
  58. package/lib-next/theme/DocPage/index.js +30 -149
  59. package/lib-next/theme/DocPaginator/index.js +25 -28
  60. package/lib-next/theme/DocSidebar/Desktop/CollapseButton/index.js +34 -0
  61. package/lib-next/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +46 -0
  62. package/lib-next/theme/DocSidebar/Desktop/Content/index.js +46 -0
  63. package/lib-next/theme/DocSidebar/Desktop/Content/styles.module.css +23 -0
  64. package/lib-next/theme/DocSidebar/Desktop/index.js +36 -0
  65. package/lib-next/theme/DocSidebar/Desktop/styles.module.css +50 -0
  66. package/lib-next/theme/DocSidebar/Mobile/index.js +49 -0
  67. package/lib-next/theme/DocSidebar/index.js +6 -113
  68. package/lib-next/theme/DocSidebarItem/Category.js +197 -0
  69. package/lib-next/theme/DocSidebarItem/Html.js +27 -0
  70. package/lib-next/theme/DocSidebarItem/{styles.module.css → Html.module.css} +0 -0
  71. package/lib-next/theme/DocSidebarItem/Link.js +53 -0
  72. package/lib-next/theme/DocSidebarItem/Link.module.css +10 -0
  73. package/lib-next/theme/DocSidebarItem/index.js +4 -245
  74. package/lib-next/theme/DocSidebarItems/index.js +1 -6
  75. package/lib-next/theme/DocTagDocListPage/index.js +40 -33
  76. package/lib-next/theme/DocTagsListPage/index.js +21 -16
  77. package/lib-next/theme/DocVersionBanner/index.js +2 -2
  78. package/lib-next/theme/Footer/Copyright/index.js +18 -0
  79. package/lib-next/theme/Footer/Layout/index.js +26 -0
  80. package/lib-next/theme/Footer/LinkItem/index.js +33 -0
  81. package/lib-next/theme/Footer/Links/MultiColumn/index.js +47 -0
  82. package/lib-next/theme/Footer/Links/Simple/index.js +41 -0
  83. package/lib-next/theme/Footer/Links/index.js +17 -0
  84. package/lib-next/theme/Footer/Logo/index.js +38 -0
  85. package/lib-next/theme/Footer/{styles.module.css → Logo/styles.module.css} +0 -0
  86. package/lib-next/theme/Footer/index.js +11 -163
  87. package/lib-next/theme/Heading/index.js +10 -24
  88. package/lib-next/theme/IconDarkMode/index.js +17 -0
  89. package/lib-next/theme/IconExternalLink/styles.module.css +0 -2
  90. package/lib-next/theme/IconHome/index.js +17 -0
  91. package/lib-next/theme/IconLanguage/index.js +3 -3
  92. package/lib-next/theme/IconLightMode/index.js +17 -0
  93. package/lib-next/theme/LastUpdated/index.js +1 -0
  94. package/lib-next/theme/Layout/index.js +15 -10
  95. package/lib-next/theme/LayoutProviders/index.js +5 -4
  96. package/lib-next/theme/MDXComponents/A.js +11 -0
  97. package/lib-next/theme/MDXComponents/Code.js +28 -0
  98. package/lib-next/theme/MDXComponents/Details.js +20 -0
  99. package/lib-next/theme/MDXComponents/Head.js +26 -0
  100. package/lib-next/theme/MDXComponents/Heading.js +11 -0
  101. package/lib-next/theme/MDXComponents/Img.js +24 -0
  102. package/{src/theme/MDXComponents/styles.css → lib-next/theme/MDXComponents/Img.module.css} +1 -6
  103. package/lib-next/theme/MDXComponents/Pre.js +18 -0
  104. package/lib-next/theme/MDXComponents/Ul.js +21 -0
  105. package/lib-next/theme/MDXComponents/index.js +22 -57
  106. package/lib-next/theme/MDXContent/index.js +12 -0
  107. package/lib-next/theme/MDXPage/index.js +33 -28
  108. package/lib-next/theme/Navbar/ColorModeToggle/index.js +25 -0
  109. package/lib-next/theme/Navbar/Content/index.js +75 -0
  110. package/lib-next/theme/Navbar/Content/styles.module.css +15 -0
  111. package/lib-next/theme/Navbar/Layout/index.js +54 -0
  112. package/{src/theme/Navbar → lib-next/theme/Navbar/Layout}/styles.module.css +0 -13
  113. package/lib-next/theme/Navbar/Logo/index.js +17 -0
  114. package/lib-next/theme/Navbar/MobileSidebar/Header/index.js +33 -0
  115. package/lib-next/theme/Navbar/MobileSidebar/Layout/index.js +28 -0
  116. package/lib-next/theme/Navbar/MobileSidebar/PrimaryMenu/index.js +33 -0
  117. package/lib-next/theme/Navbar/MobileSidebar/SecondaryMenu/index.js +36 -0
  118. package/lib-next/theme/Navbar/MobileSidebar/Toggle/index.js +23 -0
  119. package/lib-next/theme/Navbar/MobileSidebar/index.js +31 -0
  120. package/lib-next/theme/Navbar/Search/index.js +11 -0
  121. package/lib-next/theme/Navbar/Search/styles.module.css +20 -0
  122. package/lib-next/theme/Navbar/index.js +6 -271
  123. package/lib-next/theme/NavbarItem/ComponentTypes.js +27 -0
  124. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +2 -6
  125. package/lib-next/theme/NavbarItem/DocNavbarItem.js +11 -28
  126. package/lib-next/theme/NavbarItem/DocSidebarNavbarItem.js +10 -42
  127. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +25 -29
  128. package/lib-next/theme/NavbarItem/DocsVersionNavbarItem.js +2 -9
  129. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +14 -3
  130. package/lib-next/theme/NavbarItem/HtmlNavbarItem.js +30 -0
  131. package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/index.js +5 -10
  132. package/lib-next/theme/NavbarItem/NavbarNavLink.js +49 -35
  133. package/lib-next/theme/NavbarItem/SearchNavbarItem.js +6 -1
  134. package/lib-next/theme/NavbarItem/index.js +4 -23
  135. package/lib-next/theme/NavbarItem/utils.js +2 -1
  136. package/lib-next/theme/NotFound.js +38 -33
  137. package/lib-next/theme/PaginatorNavLink/index.js +8 -2
  138. package/lib-next/theme/SearchMetadata/index.js +9 -0
  139. package/lib-next/theme/{LayoutHead → SiteMetadata}/index.js +19 -33
  140. package/lib-next/theme/SkipToContent/index.js +3 -29
  141. package/lib-next/theme/TOCCollapsible/CollapseButton.js +29 -0
  142. package/{src/theme/TOCCollapsible/styles.module.css → lib-next/theme/TOCCollapsible/CollapseButton.module.css} +1 -22
  143. package/lib-next/theme/TOCCollapsible/index.js +4 -16
  144. package/lib-next/theme/TOCCollapsible/index.module.css +31 -0
  145. package/lib-next/theme/TOCItems/Tree.js +40 -0
  146. package/lib-next/theme/TOCItems/index.js +3 -34
  147. package/lib-next/theme/TabItem/index.js +3 -1
  148. package/lib-next/theme/TabItem/styles.module.css +10 -0
  149. package/lib-next/theme/Tabs/__tests__/index.test.js +8 -8
  150. package/lib-next/theme/Tabs/index.js +5 -5
  151. package/lib-next/theme/Tabs/styles.module.css +4 -0
  152. package/lib-next/theme/Tag/index.js +6 -7
  153. package/lib-next/theme/TagsListInline/index.js +1 -1
  154. package/lib-next/theme/ThemedImage/index.js +3 -3
  155. package/package.json +25 -20
  156. package/src/admonitions.css +4 -0
  157. package/src/getSwizzleConfig.ts +173 -22
  158. package/src/index.ts +14 -15
  159. package/src/nprogress.css +41 -0
  160. package/src/nprogress.ts +31 -0
  161. package/src/theme/BackToTopButton/index.tsx +5 -114
  162. package/src/theme/BlogArchivePage/index.tsx +18 -17
  163. package/src/theme/BlogLayout/index.tsx +1 -5
  164. package/src/theme/BlogListPage/index.tsx +32 -13
  165. package/src/theme/BlogListPaginator/index.tsx +25 -28
  166. package/src/theme/BlogPostAuthor/index.tsx +14 -8
  167. package/src/theme/BlogPostItem/index.tsx +6 -6
  168. package/src/theme/BlogPostItem/styles.module.css +9 -0
  169. package/src/theme/BlogPostPage/index.tsx +55 -48
  170. package/src/theme/BlogPostPaginator/index.tsx +25 -28
  171. package/src/theme/BlogSidebar/Desktop/index.tsx +45 -0
  172. package/src/theme/BlogSidebar/{styles.module.css → Desktop/styles.module.css} +1 -2
  173. package/src/theme/BlogSidebar/Mobile/index.tsx +38 -0
  174. package/src/theme/BlogSidebar/index.tsx +10 -31
  175. package/src/theme/BlogTagsListPage/index.tsx +17 -14
  176. package/src/theme/BlogTagsPostsPage/index.tsx +46 -36
  177. package/src/theme/CodeBlock/Container/index.tsx +35 -0
  178. package/src/theme/CodeBlock/Container/styles.module.css +14 -0
  179. package/src/theme/CodeBlock/Content/Element.tsx +30 -0
  180. package/src/theme/CodeBlock/Content/String.tsx +111 -0
  181. package/src/theme/CodeBlock/{styles.module.css → Content/styles.module.css} +39 -29
  182. package/src/theme/CodeBlock/CopyButton/index.tsx +67 -0
  183. package/src/theme/CodeBlock/CopyButton/styles.module.css +47 -0
  184. package/src/theme/CodeBlock/Line/index.tsx +48 -0
  185. package/src/theme/CodeBlock/Line/styles.module.css +51 -0
  186. package/src/theme/CodeBlock/WordWrapButton/index.tsx +49 -0
  187. package/src/theme/CodeBlock/WordWrapButton/styles.module.css +15 -0
  188. package/src/theme/CodeBlock/index.tsx +29 -165
  189. package/src/theme/ColorModeToggle/index.tsx +67 -0
  190. package/src/theme/ColorModeToggle/styles.module.css +35 -0
  191. package/src/theme/Details/index.tsx +1 -1
  192. package/src/theme/DocBreadcrumbs/index.tsx +65 -16
  193. package/src/theme/DocBreadcrumbs/styles.module.css +8 -15
  194. package/src/theme/DocCard/index.tsx +24 -17
  195. package/src/theme/DocCard/styles.module.css +8 -17
  196. package/src/theme/DocCardList/index.tsx +19 -10
  197. package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +34 -7
  198. package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +8 -0
  199. package/src/theme/DocItem/index.tsx +72 -56
  200. package/src/theme/DocItem/styles.module.css +6 -0
  201. package/src/theme/DocPage/Layout/Main/index.tsx +37 -0
  202. package/src/theme/DocPage/Layout/Main/styles.module.css +28 -0
  203. package/src/theme/DocPage/Layout/Sidebar/ExpandButton/index.tsx +40 -0
  204. package/src/theme/DocPage/Layout/Sidebar/ExpandButton/styles.module.css +33 -0
  205. package/src/theme/DocPage/Layout/Sidebar/index.module.css +32 -0
  206. package/src/theme/DocPage/Layout/Sidebar/index.tsx +74 -0
  207. package/src/theme/{BlogPostAuthor/styles.module.css → DocPage/Layout/index.module.css} +6 -3
  208. package/src/theme/DocPage/Layout/index.tsx +39 -0
  209. package/src/theme/DocPage/index.tsx +30 -160
  210. package/src/theme/DocPaginator/index.tsx +25 -28
  211. package/src/theme/DocSidebar/Desktop/CollapseButton/index.tsx +38 -0
  212. package/src/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +46 -0
  213. package/src/theme/DocSidebar/Desktop/Content/index.tsx +55 -0
  214. package/src/theme/DocSidebar/Desktop/Content/styles.module.css +23 -0
  215. package/src/theme/DocSidebar/Desktop/index.tsx +40 -0
  216. package/src/theme/DocSidebar/Desktop/styles.module.css +50 -0
  217. package/src/theme/DocSidebar/Mobile/index.tsx +54 -0
  218. package/src/theme/DocSidebar/index.tsx +6 -121
  219. package/src/theme/DocSidebarItem/Category.tsx +210 -0
  220. package/src/theme/DocSidebarItem/{styles.module.css → Html.module.css} +0 -0
  221. package/src/theme/DocSidebarItem/Html.tsx +34 -0
  222. package/src/theme/DocSidebarItem/Link.module.css +10 -0
  223. package/src/theme/DocSidebarItem/Link.tsx +58 -0
  224. package/src/theme/DocSidebarItem/index.tsx +4 -260
  225. package/src/theme/DocSidebarItems/index.tsx +1 -6
  226. package/src/theme/DocTagDocListPage/index.tsx +40 -33
  227. package/src/theme/DocTagsListPage/index.tsx +21 -16
  228. package/src/theme/DocVersionBanner/index.tsx +5 -6
  229. package/src/theme/Footer/Copyright/index.tsx +20 -0
  230. package/src/theme/Footer/Layout/index.tsx +34 -0
  231. package/src/theme/Footer/LinkItem/index.tsx +36 -0
  232. package/src/theme/Footer/Links/MultiColumn/index.tsx +51 -0
  233. package/src/theme/Footer/Links/Simple/index.tsx +42 -0
  234. package/src/theme/Footer/Links/index.tsx +21 -0
  235. package/src/theme/Footer/Logo/index.tsx +41 -0
  236. package/src/theme/Footer/{styles.module.css → Logo/styles.module.css} +0 -0
  237. package/src/theme/Footer/index.tsx +12 -186
  238. package/src/theme/Heading/index.tsx +10 -22
  239. package/src/theme/IconDarkMode/index.tsx +20 -0
  240. package/src/theme/IconExternalLink/styles.module.css +0 -2
  241. package/src/theme/IconHome/index.tsx +20 -0
  242. package/src/theme/IconLanguage/index.tsx +3 -3
  243. package/src/theme/IconLightMode/index.tsx +20 -0
  244. package/src/theme/LastUpdated/index.tsx +1 -0
  245. package/src/theme/Layout/index.tsx +15 -10
  246. package/src/theme/LayoutProviders/index.tsx +5 -4
  247. package/src/theme/MDXComponents/A.tsx +14 -0
  248. package/src/theme/MDXComponents/Code.tsx +37 -0
  249. package/src/theme/MDXComponents/Details.tsx +25 -0
  250. package/src/theme/MDXComponents/Head.tsx +29 -0
  251. package/src/theme/MDXComponents/Heading.tsx +14 -0
  252. package/{lib-next/theme/MDXComponents/styles.css → src/theme/MDXComponents/Img.module.css} +1 -6
  253. package/src/theme/MDXComponents/Img.tsx +26 -0
  254. package/src/theme/MDXComponents/Pre.tsx +22 -0
  255. package/src/theme/MDXComponents/Ul.tsx +24 -0
  256. package/src/theme/MDXComponents/index.tsx +23 -66
  257. package/src/theme/MDXContent/index.tsx +15 -0
  258. package/src/theme/MDXPage/index.tsx +33 -28
  259. package/src/theme/Navbar/ColorModeToggle/index.tsx +30 -0
  260. package/src/theme/Navbar/Content/index.tsx +86 -0
  261. package/src/theme/Navbar/Content/styles.module.css +15 -0
  262. package/src/theme/Navbar/Layout/index.tsx +57 -0
  263. package/{lib-next/theme/Navbar → src/theme/Navbar/Layout}/styles.module.css +0 -13
  264. package/src/theme/Navbar/Logo/index.tsx +19 -0
  265. package/src/theme/Navbar/MobileSidebar/Header/index.tsx +34 -0
  266. package/src/theme/Navbar/MobileSidebar/Layout/index.tsx +31 -0
  267. package/src/theme/Navbar/MobileSidebar/PrimaryMenu/index.tsx +38 -0
  268. package/src/theme/Navbar/MobileSidebar/SecondaryMenu/index.tsx +38 -0
  269. package/src/theme/Navbar/MobileSidebar/Toggle/index.tsx +25 -0
  270. package/src/theme/Navbar/MobileSidebar/index.tsx +33 -0
  271. package/src/theme/Navbar/Search/index.tsx +15 -0
  272. package/src/theme/Navbar/Search/styles.module.css +20 -0
  273. package/src/theme/Navbar/index.tsx +6 -286
  274. package/src/theme/NavbarItem/ComponentTypes.tsx +32 -0
  275. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +2 -2
  276. package/src/theme/NavbarItem/DocNavbarItem.tsx +13 -32
  277. package/src/theme/NavbarItem/DocSidebarNavbarItem.tsx +9 -49
  278. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +26 -33
  279. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +3 -10
  280. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +15 -3
  281. package/src/theme/NavbarItem/HtmlNavbarItem.tsx +32 -0
  282. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/index.tsx +5 -9
  283. package/src/theme/NavbarItem/NavbarNavLink.tsx +41 -29
  284. package/src/theme/NavbarItem/SearchNavbarItem.tsx +6 -1
  285. package/src/theme/NavbarItem/index.tsx +9 -39
  286. package/src/theme/NavbarItem/utils.ts +5 -2
  287. package/src/theme/NotFound.tsx +38 -33
  288. package/src/theme/PaginatorNavLink/index.tsx +8 -2
  289. package/src/theme/SearchMetadata/index.tsx +9 -0
  290. package/src/theme/{LayoutHead → SiteMetadata}/index.tsx +19 -33
  291. package/src/theme/SkipToContent/index.tsx +3 -29
  292. package/{lib-next/theme/TOCCollapsible/styles.module.css → src/theme/TOCCollapsible/CollapseButton.module.css} +1 -22
  293. package/src/theme/TOCCollapsible/CollapseButton.tsx +35 -0
  294. package/src/theme/TOCCollapsible/index.module.css +31 -0
  295. package/src/theme/TOCCollapsible/index.tsx +4 -17
  296. package/src/theme/TOCItems/Tree.tsx +46 -0
  297. package/src/theme/TOCItems/index.tsx +2 -41
  298. package/src/theme/TabItem/index.tsx +7 -1
  299. package/src/theme/TabItem/styles.module.css +10 -0
  300. package/src/theme/Tabs/index.tsx +8 -9
  301. package/src/theme/Tabs/styles.module.css +4 -0
  302. package/src/theme/Tag/index.tsx +6 -8
  303. package/src/theme/TagsListInline/index.tsx +1 -1
  304. package/src/theme/ThemedImage/index.tsx +4 -3
  305. package/src/theme-classic.d.ts +600 -76
  306. package/src/translations.ts +12 -6
  307. package/src/validateThemeConfig.ts +90 -39
  308. package/lib/types.d.ts +0 -11
  309. package/lib-next/theme/DocPage/styles.module.css +0 -86
  310. package/lib-next/theme/DocSidebar/styles.module.css +0 -107
  311. package/lib-next/theme/Seo/index.js +0 -40
  312. package/lib-next/theme/Toggle/index.js +0 -100
  313. package/lib-next/theme/Toggle/styles.module.css +0 -106
  314. package/src/theme/DocPage/styles.module.css +0 -86
  315. package/src/theme/DocSidebar/styles.module.css +0 -107
  316. package/src/theme/Seo/index.tsx +0 -49
  317. package/src/theme/Toggle/index.tsx +0 -117
  318. package/src/theme/Toggle/styles.module.css +0 -106
  319. package/src/types.d.ts +0 -11
@@ -4,278 +4,13 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- import React, {useCallback, useState, useEffect} from 'react';
8
- import clsx from 'clsx';
9
- import Translate from '@docusaurus/Translate';
10
- import SearchBar from '@theme/SearchBar';
11
- import Toggle from '@theme/Toggle';
12
- import {
13
- useThemeConfig,
14
- useMobileSecondaryMenuRenderer,
15
- usePrevious,
16
- useHistoryPopHandler,
17
- useHideableNavbar,
18
- useLockBodyScroll,
19
- useWindowSize,
20
- useColorMode,
21
- } from '@docusaurus/theme-common';
22
- import {useActivePlugin} from '@docusaurus/plugin-content-docs/client';
23
- import NavbarItem from '@theme/NavbarItem';
24
- import Logo from '@theme/Logo';
25
- import IconMenu from '@theme/IconMenu';
26
- import IconClose from '@theme/IconClose';
27
- import styles from './styles.module.css'; // retrocompatible with v1
28
-
29
- const DefaultNavItemPosition = 'right';
30
-
31
- function useNavbarItems() {
32
- // TODO temporary casting until ThemeConfig type is improved
33
- return useThemeConfig().navbar.items;
34
- } // If split links by left/right
35
- // if position is unspecified, fallback to right (as v1)
36
-
37
- function splitNavItemsByPosition(items) {
38
- const leftItems = items.filter(
39
- (item) => (item.position ?? DefaultNavItemPosition) === 'left',
40
- );
41
- const rightItems = items.filter(
42
- (item) => (item.position ?? DefaultNavItemPosition) === 'right',
43
- );
44
- return {
45
- leftItems,
46
- rightItems,
47
- };
48
- }
49
-
50
- function useMobileSidebar() {
51
- const windowSize = useWindowSize(); // Mobile sidebar not visible on hydration: can avoid SSR rendering
52
-
53
- const shouldRender = windowSize === 'mobile'; // || windowSize === 'ssr';
54
-
55
- const [shown, setShown] = useState(false); // Close mobile sidebar on navigation pop
56
- // Most likely firing when using the Android back button (but not only)
57
-
58
- useHistoryPopHandler(() => {
59
- if (shown) {
60
- setShown(false); // Should we prevent the navigation here?
61
- // See https://github.com/facebook/docusaurus/pull/5462#issuecomment-911699846
62
-
63
- return false; // prevent pop navigation
64
- }
65
-
66
- return undefined;
67
- });
68
- const toggle = useCallback(() => {
69
- setShown((s) => !s);
70
- }, []);
71
- useEffect(() => {
72
- if (windowSize === 'desktop') {
73
- setShown(false);
74
- }
75
- }, [windowSize]);
76
- return {
77
- shouldRender,
78
- toggle,
79
- shown,
80
- };
81
- }
82
-
83
- function useColorModeToggle() {
84
- const {
85
- colorMode: {disableSwitch},
86
- } = useThemeConfig();
87
- const {isDarkTheme, setLightTheme, setDarkTheme} = useColorMode();
88
- const toggle = useCallback(
89
- (e) => (e.target.checked ? setDarkTheme() : setLightTheme()),
90
- [setLightTheme, setDarkTheme],
91
- );
92
- return {
93
- isDarkTheme,
94
- toggle,
95
- disabled: disableSwitch,
96
- };
97
- }
98
-
99
- function useSecondaryMenu({sidebarShown, toggleSidebar}) {
100
- const content = useMobileSecondaryMenuRenderer()?.({
101
- toggleSidebar,
102
- });
103
- const previousContent = usePrevious(content);
104
- const [shown, setShown] = useState(
105
- () =>
106
- // /!\ content is set with useEffect,
107
- // so it's not available on mount anyway
108
- // "return !!content" => always returns false
109
- false,
110
- ); // When content is become available for the first time (set in useEffect)
111
- // we set this content to be shown!
112
-
113
- useEffect(() => {
114
- const contentBecameAvailable = content && !previousContent;
115
-
116
- if (contentBecameAvailable) {
117
- setShown(true);
118
- }
119
- }, [content, previousContent]);
120
- const hasContent = !!content; // On sidebar close, secondary menu is set to be shown on next re-opening
121
- // (if any secondary menu content available)
122
-
123
- useEffect(() => {
124
- if (!hasContent) {
125
- setShown(false);
126
- return;
127
- }
128
-
129
- if (!sidebarShown) {
130
- setShown(true);
131
- }
132
- }, [sidebarShown, hasContent]);
133
- const hide = useCallback(() => {
134
- setShown(false);
135
- }, []);
136
- return {
137
- shown,
138
- hide,
139
- content,
140
- };
141
- }
142
-
143
- function NavbarMobileSidebar({sidebarShown, toggleSidebar}) {
144
- useLockBodyScroll(sidebarShown);
145
- const items = useNavbarItems();
146
- const colorModeToggle = useColorModeToggle();
147
- const secondaryMenu = useSecondaryMenu({
148
- sidebarShown,
149
- toggleSidebar,
150
- });
151
- return (
152
- <div className="navbar-sidebar">
153
- <div className="navbar-sidebar__brand">
154
- <Logo
155
- className="navbar__brand"
156
- imageClassName="navbar__logo"
157
- titleClassName="navbar__title"
158
- />
159
- {!colorModeToggle.disabled && (
160
- <Toggle
161
- className={styles.navbarSidebarToggle}
162
- checked={colorModeToggle.isDarkTheme}
163
- onChange={colorModeToggle.toggle}
164
- />
165
- )}
166
- <button
167
- type="button"
168
- className="clean-btn navbar-sidebar__close"
169
- onClick={toggleSidebar}>
170
- <IconClose
171
- color="var(--ifm-color-emphasis-600)"
172
- className={styles.navbarSidebarCloseSvg}
173
- />
174
- </button>
175
- </div>
176
-
177
- <div
178
- className={clsx('navbar-sidebar__items', {
179
- 'navbar-sidebar__items--show-secondary': secondaryMenu.shown,
180
- })}>
181
- <div className="navbar-sidebar__item menu">
182
- <ul className="menu__list">
183
- {items.map((item, i) => (
184
- <NavbarItem mobile {...item} onClick={toggleSidebar} key={i} />
185
- ))}
186
- </ul>
187
- </div>
188
-
189
- <div className="navbar-sidebar__item menu">
190
- {items.length > 0 && (
191
- <button
192
- type="button"
193
- className="clean-btn navbar-sidebar__back"
194
- onClick={secondaryMenu.hide}>
195
- <Translate
196
- id="theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel"
197
- 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)">
198
- ← Back to main menu
199
- </Translate>
200
- </button>
201
- )}
202
- {secondaryMenu.content}
203
- </div>
204
- </div>
205
- </div>
206
- );
207
- }
208
-
7
+ import React from 'react';
8
+ import NavbarLayout from '@theme/Navbar/Layout';
9
+ import NavbarContent from '@theme/Navbar/Content';
209
10
  export default function Navbar() {
210
- const {
211
- navbar: {hideOnScroll, style},
212
- } = useThemeConfig();
213
- const mobileSidebar = useMobileSidebar();
214
- const colorModeToggle = useColorModeToggle();
215
- const activeDocPlugin = useActivePlugin();
216
- const {navbarRef, isNavbarVisible} = useHideableNavbar(hideOnScroll);
217
- const items = useNavbarItems();
218
- const hasSearchNavbarItem = items.some((item) => item.type === 'search');
219
- const {leftItems, rightItems} = splitNavItemsByPosition(items);
220
11
  return (
221
- <nav
222
- ref={navbarRef}
223
- className={clsx('navbar', 'navbar--fixed-top', {
224
- 'navbar--dark': style === 'dark',
225
- 'navbar--primary': style === 'primary',
226
- 'navbar-sidebar--show': mobileSidebar.shown,
227
- [styles.navbarHideable]: hideOnScroll,
228
- [styles.navbarHidden]: hideOnScroll && !isNavbarVisible,
229
- })}>
230
- <div className="navbar__inner">
231
- <div className="navbar__items">
232
- {(items?.length > 0 || activeDocPlugin) && (
233
- <button
234
- aria-label="Navigation bar toggle"
235
- className="navbar__toggle clean-btn"
236
- type="button"
237
- tabIndex={0}
238
- onClick={mobileSidebar.toggle}
239
- onKeyDown={mobileSidebar.toggle}>
240
- <IconMenu />
241
- </button>
242
- )}
243
- <Logo
244
- className="navbar__brand"
245
- imageClassName="navbar__logo"
246
- titleClassName="navbar__title"
247
- />
248
- {leftItems.map((item, i) => (
249
- <NavbarItem {...item} key={i} />
250
- ))}
251
- </div>
252
- <div className="navbar__items navbar__items--right">
253
- {rightItems.map((item, i) => (
254
- <NavbarItem {...item} key={i} />
255
- ))}
256
- {!colorModeToggle.disabled && (
257
- <Toggle
258
- className={styles.toggle}
259
- checked={colorModeToggle.isDarkTheme}
260
- onChange={colorModeToggle.toggle}
261
- />
262
- )}
263
- {!hasSearchNavbarItem && <SearchBar />}
264
- </div>
265
- </div>
266
-
267
- <div
268
- role="presentation"
269
- className="navbar-sidebar__backdrop"
270
- onClick={mobileSidebar.toggle}
271
- />
272
-
273
- {mobileSidebar.shouldRender && (
274
- <NavbarMobileSidebar
275
- sidebarShown={mobileSidebar.shown}
276
- toggleSidebar={mobileSidebar.toggle}
277
- />
278
- )}
279
- </nav>
12
+ <NavbarLayout>
13
+ <NavbarContent />
14
+ </NavbarLayout>
280
15
  );
281
16
  }
@@ -0,0 +1,27 @@
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
+ import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem';
8
+ import DropdownNavbarItem from '@theme/NavbarItem/DropdownNavbarItem';
9
+ import LocaleDropdownNavbarItem from '@theme/NavbarItem/LocaleDropdownNavbarItem';
10
+ import SearchNavbarItem from '@theme/NavbarItem/SearchNavbarItem';
11
+ import HtmlNavbarItem from '@theme/NavbarItem/HtmlNavbarItem';
12
+ import DocNavbarItem from '@theme/NavbarItem/DocNavbarItem';
13
+ import DocSidebarNavbarItem from '@theme/NavbarItem/DocSidebarNavbarItem';
14
+ import DocsVersionNavbarItem from '@theme/NavbarItem/DocsVersionNavbarItem';
15
+ import DocsVersionDropdownNavbarItem from '@theme/NavbarItem/DocsVersionDropdownNavbarItem';
16
+ const ComponentTypes = {
17
+ default: DefaultNavbarItem,
18
+ localeDropdown: LocaleDropdownNavbarItem,
19
+ search: SearchNavbarItem,
20
+ dropdown: DropdownNavbarItem,
21
+ html: HtmlNavbarItem,
22
+ doc: DocNavbarItem,
23
+ docSidebar: DocSidebarNavbarItem,
24
+ docsVersion: DocsVersionNavbarItem,
25
+ docsVersionDropdown: DocsVersionDropdownNavbarItem,
26
+ };
27
+ export default ComponentTypes;
@@ -31,11 +31,7 @@ function DefaultNavbarItemDesktop({
31
31
  return element;
32
32
  }
33
33
 
34
- function DefaultNavbarItemMobile({
35
- className,
36
- isDropdownItem: _isDropdownItem,
37
- ...props
38
- }) {
34
+ function DefaultNavbarItemMobile({className, isDropdownItem, ...props}) {
39
35
  return (
40
36
  <li className="menu__list-item">
41
37
  <NavbarNavLink className={clsx('menu__link', className)} {...props} />
@@ -45,7 +41,7 @@ function DefaultNavbarItemMobile({
45
41
 
46
42
  export default function DefaultNavbarItem({
47
43
  mobile = false,
48
- position: _position,
44
+ position,
49
45
  // Need to destructure position from props so that it doesn't get passed on.
50
46
  ...props
51
47
  }) {
@@ -6,50 +6,33 @@
6
6
  */
7
7
  import React from 'react';
8
8
  import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem';
9
- import {
10
- useLatestVersion,
11
- useActiveDocContext,
12
- } from '@docusaurus/plugin-content-docs/client';
9
+ import {useActiveDocContext} from '@docusaurus/plugin-content-docs/client';
13
10
  import clsx from 'clsx';
14
11
  import {getInfimaActiveClassName} from '@theme/NavbarItem/utils';
15
- import {useDocsPreferredVersion, uniq} from '@docusaurus/theme-common';
16
-
17
- function getDocInVersions(versions, docId) {
18
- const allDocs = versions.flatMap((version) => version.docs);
19
- const doc = allDocs.find((versionDoc) => versionDoc.id === docId);
20
-
21
- if (!doc) {
22
- const docIds = allDocs.map((versionDoc) => versionDoc.id).join('\n- ');
23
- throw new Error(`DocNavbarItem: couldn't find any doc with id "${docId}" in version${
24
- versions.length ? 's' : ''
25
- } ${versions.map((version) => version.name).join(', ')}".
26
- Available doc ids are:\n- ${docIds}`);
27
- }
28
-
29
- return doc;
30
- }
31
-
12
+ import {useLayoutDoc} from '@docusaurus/theme-common';
32
13
  export default function DocNavbarItem({
33
14
  docId,
34
15
  label: staticLabel,
35
16
  docsPluginId,
36
17
  ...props
37
18
  }) {
38
- const {activeVersion, activeDoc} = useActiveDocContext(docsPluginId);
39
- const {preferredVersion} = useDocsPreferredVersion(docsPluginId);
40
- const latestVersion = useLatestVersion(docsPluginId); // Versions used to look for the doc to link to, ordered + no duplicate
19
+ const {activeDoc} = useActiveDocContext(docsPluginId);
20
+ const doc = useLayoutDoc(docId, docsPluginId); // Draft items are not displayed in the navbar.
21
+
22
+ if (doc === null) {
23
+ return null;
24
+ }
41
25
 
42
- const versions = uniq(
43
- [activeVersion, preferredVersion, latestVersion].filter(Boolean),
44
- );
45
- const doc = getDocInVersions(versions, docId);
46
26
  const activeDocInfimaClassName = getInfimaActiveClassName(props.mobile);
47
27
  return (
48
28
  <DefaultNavbarItem
49
29
  exact
50
30
  {...props}
51
31
  className={clsx(props.className, {
32
+ // Do not make the item active if the active doc doesn't have sidebar.
52
33
  [activeDocInfimaClassName]:
34
+ // If `activeDoc === doc` react-router will make it active anyways,
35
+ // regardless of the existence of a sidebar
53
36
  activeDoc?.sidebar && activeDoc.sidebar === doc.sidebar,
54
37
  })}
55
38
  activeClassName={activeDocInfimaClassName}
@@ -6,57 +6,25 @@
6
6
  */
7
7
  import React from 'react';
8
8
  import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem';
9
- import {
10
- useLatestVersion,
11
- useActiveDocContext,
12
- } from '@docusaurus/plugin-content-docs/client';
9
+ import {useActiveDocContext} from '@docusaurus/plugin-content-docs/client';
13
10
  import clsx from 'clsx';
14
11
  import {getInfimaActiveClassName} from '@theme/NavbarItem/utils';
15
- import {useDocsPreferredVersion, uniq} from '@docusaurus/theme-common';
16
-
17
- function getSidebarLink(versions, sidebarId) {
18
- const allSidebars = versions
19
- .flatMap((version) => {
20
- if (version.sidebars) {
21
- return Object.entries(version.sidebars);
22
- }
23
-
24
- return undefined;
25
- })
26
- .filter((sidebarItem) => !!sidebarItem);
27
- const sidebarEntry = allSidebars.find((sidebar) => sidebar[0] === sidebarId);
28
-
29
- if (!sidebarEntry) {
30
- throw new Error(`DocSidebarNavbarItem: couldn't find any sidebar with id "${sidebarId}" in version${
31
- versions.length ? 's' : ''
32
- } ${versions.map((version) => version.name).join(', ')}".
33
- Available sidebar ids are:
34
- - ${Object.keys(allSidebars).join('\n- ')}`);
35
- }
36
-
37
- if (!sidebarEntry[1].link) {
38
- throw new Error(
39
- `DocSidebarNavbarItem: couldn't find any document for sidebar with id "${sidebarId}"`,
40
- );
41
- }
42
-
43
- return sidebarEntry[1].link;
44
- }
45
-
12
+ import {useLayoutDocsSidebar} from '@docusaurus/theme-common';
46
13
  export default function DocSidebarNavbarItem({
47
14
  sidebarId,
48
15
  label,
49
16
  docsPluginId,
50
17
  ...props
51
18
  }) {
52
- const {activeVersion, activeDoc} = useActiveDocContext(docsPluginId);
53
- const {preferredVersion} = useDocsPreferredVersion(docsPluginId);
54
- const latestVersion = useLatestVersion(docsPluginId); // Versions used to look for the doc to link to, ordered + no duplicate
19
+ const {activeDoc} = useActiveDocContext(docsPluginId);
20
+ const sidebarLink = useLayoutDocsSidebar(sidebarId, docsPluginId).link;
21
+
22
+ if (!sidebarLink) {
23
+ throw new Error(
24
+ `DocSidebarNavbarItem: Sidebar with ID "${sidebarId}" doesn't have anything to be linked to.`,
25
+ );
26
+ }
55
27
 
56
- const versions = uniq(
57
- [activeVersion, preferredVersion, latestVersion].filter(Boolean),
58
- );
59
- const sidebarLink = getSidebarLink(versions, sidebarId);
60
28
  const activeDocInfimaClassName = getInfimaActiveClassName(props.mobile);
61
29
  return (
62
30
  <DefaultNavbarItem
@@ -9,10 +9,12 @@ import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem';
9
9
  import DropdownNavbarItem from '@theme/NavbarItem/DropdownNavbarItem';
10
10
  import {
11
11
  useVersions,
12
- useLatestVersion,
13
12
  useActiveDocContext,
14
13
  } from '@docusaurus/plugin-content-docs/client';
15
- import {useDocsPreferredVersion} from '@docusaurus/theme-common';
14
+ import {
15
+ useDocsPreferredVersion,
16
+ useDocsVersionCandidates,
17
+ } from '@docusaurus/theme-common';
16
18
  import {translate} from '@docusaurus/Translate';
17
19
 
18
20
  const getVersionMainDoc = (version) =>
@@ -28,33 +30,27 @@ export default function DocsVersionDropdownNavbarItem({
28
30
  }) {
29
31
  const activeDocContext = useActiveDocContext(docsPluginId);
30
32
  const versions = useVersions(docsPluginId);
31
- const latestVersion = useLatestVersion(docsPluginId);
32
- const {preferredVersion, savePreferredVersionName} =
33
- useDocsPreferredVersion(docsPluginId);
34
-
35
- function getItems() {
36
- const versionLinks = versions.map((version) => {
37
- // We try to link to the same doc, in another version
38
- // When not possible, fallback to the "main doc" of the version
39
- const versionDoc =
40
- activeDocContext?.alternateDocVersions[version.name] ||
41
- getVersionMainDoc(version);
42
- return {
43
- isNavLink: true,
44
- label: version.label,
45
- to: versionDoc.path,
46
- isActive: () => version === activeDocContext?.activeVersion,
47
- onClick: () => {
48
- savePreferredVersionName(version.name);
49
- },
50
- };
51
- });
52
- return [...dropdownItemsBefore, ...versionLinks, ...dropdownItemsAfter];
53
- }
54
-
55
- const items = getItems();
56
- const dropdownVersion =
57
- activeDocContext.activeVersion ?? preferredVersion ?? latestVersion; // Mobile dropdown is handled a bit differently
33
+ const {savePreferredVersionName} = useDocsPreferredVersion(docsPluginId);
34
+ const versionLinks = versions.map((version) => {
35
+ // We try to link to the same doc, in another version
36
+ // When not possible, fallback to the "main doc" of the version
37
+ const versionDoc =
38
+ activeDocContext?.alternateDocVersions[version.name] ??
39
+ getVersionMainDoc(version);
40
+ return {
41
+ isNavLink: true,
42
+ label: version.label,
43
+ to: versionDoc.path,
44
+ isActive: () => version === activeDocContext?.activeVersion,
45
+ onClick: () => savePreferredVersionName(version.name),
46
+ };
47
+ });
48
+ const items = [
49
+ ...dropdownItemsBefore,
50
+ ...versionLinks,
51
+ ...dropdownItemsAfter,
52
+ ];
53
+ const dropdownVersion = useDocsVersionCandidates(docsPluginId)[0]; // Mobile dropdown is handled a bit differently
58
54
 
59
55
  const dropdownLabel =
60
56
  mobile && items.length > 1
@@ -6,11 +6,7 @@
6
6
  */
7
7
  import React from 'react';
8
8
  import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem';
9
- import {
10
- useActiveVersion,
11
- useLatestVersion,
12
- } from '@docusaurus/plugin-content-docs/client';
13
- import {useDocsPreferredVersion} from '@docusaurus/theme-common';
9
+ import {useDocsVersionCandidates} from '@docusaurus/theme-common';
14
10
 
15
11
  const getVersionMainDoc = (version) =>
16
12
  version.docs.find((doc) => doc.id === version.mainDocId);
@@ -21,10 +17,7 @@ export default function DocsVersionNavbarItem({
21
17
  docsPluginId,
22
18
  ...props
23
19
  }) {
24
- const activeVersion = useActiveVersion(docsPluginId);
25
- const {preferredVersion} = useDocsPreferredVersion(docsPluginId);
26
- const latestVersion = useLatestVersion(docsPluginId);
27
- const version = activeVersion ?? preferredVersion ?? latestVersion;
20
+ const version = useDocsVersionCandidates(docsPluginId)[0];
28
21
  const label = staticLabel ?? version.label;
29
22
  const path = staticTo ?? getVersionMainDoc(version).path;
30
23
  return <DefaultNavbarItem {...props} label={label} to={path} />;
@@ -64,6 +64,9 @@ function DropdownNavbarItemDesktop({items, position, className, ...props}) {
64
64
  'dropdown--show': showDropdown,
65
65
  })}>
66
66
  <NavbarNavLink
67
+ aria-haspopup="true"
68
+ aria-expanded={showDropdown}
69
+ role="button"
67
70
  href={props.to ? undefined : '#'}
68
71
  className={clsx('navbar__link', className)}
69
72
  {...props}
@@ -87,7 +90,12 @@ function DropdownNavbarItemDesktop({items, position, className, ...props}) {
87
90
  const nextNavbarItem = dropdownRef.current.nextElementSibling;
88
91
 
89
92
  if (nextNavbarItem) {
90
- nextNavbarItem.focus();
93
+ const targetItem =
94
+ nextNavbarItem instanceof HTMLAnchorElement
95
+ ? nextNavbarItem // Next item is another dropdown; focus on the inner
96
+ : // anchor element instead so there's outline
97
+ nextNavbarItem.querySelector('a');
98
+ targetItem.focus();
91
99
  }
92
100
  }
93
101
  }}
@@ -104,7 +112,7 @@ function DropdownNavbarItemDesktop({items, position, className, ...props}) {
104
112
  function DropdownNavbarItemMobile({
105
113
  items,
106
114
  className,
107
- position: _position,
115
+ position,
108
116
  // Need to destructure position from props so that it doesn't get passed on.
109
117
  ...props
110
118
  }) {
@@ -126,7 +134,10 @@ function DropdownNavbarItemMobile({
126
134
  })}>
127
135
  <NavbarNavLink
128
136
  role="button"
129
- className={clsx('menu__link menu__link--sublist', className)}
137
+ className={clsx(
138
+ 'menu__link menu__link--sublist menu__link--sublist-caret',
139
+ className,
140
+ )}
130
141
  {...props}
131
142
  onClick={(e) => {
132
143
  e.preventDefault();
@@ -0,0 +1,30 @@
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
+ import React from 'react';
8
+ import clsx from 'clsx';
9
+ export default function HtmlNavbarItem({
10
+ value,
11
+ className,
12
+ mobile = false,
13
+ isDropdownItem = false,
14
+ }) {
15
+ const Comp = isDropdownItem ? 'li' : 'div';
16
+ return (
17
+ <Comp
18
+ className={clsx(
19
+ {
20
+ navbar__item: !mobile && !isDropdownItem,
21
+ 'menu__list-item': mobile,
22
+ },
23
+ className,
24
+ )}
25
+ dangerouslySetInnerHTML={{
26
+ __html: value,
27
+ }}
28
+ />
29
+ );
30
+ }
@@ -21,11 +21,6 @@ export default function LocaleDropdownNavbarItem({
21
21
  i18n: {currentLocale, locales, localeConfigs},
22
22
  } = useDocusaurusContext();
23
23
  const alternatePageUtils = useAlternatePageUtils();
24
-
25
- function getLocaleLabel(locale) {
26
- return localeConfigs[locale].label;
27
- }
28
-
29
24
  const localeItems = locales.map((locale) => {
30
25
  const to = `pathname://${alternatePageUtils.createUrl({
31
26
  locale,
@@ -33,7 +28,7 @@ export default function LocaleDropdownNavbarItem({
33
28
  })}`;
34
29
  return {
35
30
  isNavLink: true,
36
- label: getLocaleLabel(locale),
31
+ label: localeConfigs[locale].label,
37
32
  to,
38
33
  target: '_self',
39
34
  autoAddBaseUrl: false,
@@ -48,16 +43,16 @@ export default function LocaleDropdownNavbarItem({
48
43
  id: 'theme.navbar.mobileLanguageDropdown.label',
49
44
  description: 'The label for the mobile language switcher dropdown',
50
45
  })
51
- : getLocaleLabel(currentLocale);
46
+ : localeConfigs[currentLocale].label;
52
47
  return (
53
48
  <DropdownNavbarItem
54
49
  {...props}
55
50
  mobile={mobile}
56
51
  label={
57
- <span>
52
+ <>
58
53
  <IconLanguage className={styles.iconLanguage} />
59
- <span>{dropdownLabel}</span>
60
- </span>
54
+ {dropdownLabel}
55
+ </>
61
56
  }
62
57
  items={items}
63
58
  />