@docusaurus/theme-classic 2.0.0-beta.15a2b59f9 → 2.0.0-beta.17

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 (407) hide show
  1. package/README.md +2 -2
  2. package/lib/admonitions.css +35 -0
  3. package/{lib-next/theme/Toggle/styles.module.css → lib/deps.d.ts} +5 -9
  4. package/lib/getSwizzleConfig.js +125 -0
  5. package/lib/index.js +36 -41
  6. package/lib/prism-include-languages.js +9 -5
  7. package/lib/theme-classic.d.ts +771 -0
  8. package/lib/translations.js +40 -34
  9. package/lib/types.d.ts +0 -587
  10. package/lib/validateThemeConfig.js +242 -250
  11. package/lib-next/theme/Admonition/index.js +101 -0
  12. package/lib-next/theme/AnnouncementBar/index.js +8 -16
  13. package/lib-next/theme/AnnouncementBar/styles.module.css +23 -32
  14. package/lib-next/theme/BackToTopButton/index.js +131 -0
  15. package/lib-next/theme/BackToTopButton/styles.module.css +44 -0
  16. package/lib-next/theme/BlogArchivePage/index.js +80 -0
  17. package/lib-next/theme/BlogLayout/index.js +37 -0
  18. package/lib-next/theme/BlogListPage/index.js +18 -29
  19. package/lib-next/theme/BlogListPaginator/index.js +13 -16
  20. package/lib-next/theme/BlogPostAuthor/index.js +52 -0
  21. package/{lib/theme/IconEdit → lib-next/theme/BlogPostAuthor}/styles.module.css +4 -3
  22. package/lib-next/theme/BlogPostAuthors/index.js +44 -0
  23. package/{src/theme/Toggle → lib-next/theme/BlogPostAuthors}/styles.module.css +11 -7
  24. package/lib-next/theme/BlogPostItem/index.js +94 -96
  25. package/lib-next/theme/BlogPostPage/index.js +75 -39
  26. package/lib-next/theme/BlogPostPaginator/index.js +12 -19
  27. package/lib-next/theme/BlogSidebar/index.js +11 -13
  28. package/lib-next/theme/BlogSidebar/styles.module.css +4 -2
  29. package/lib-next/theme/BlogTagsListPage/index.js +15 -59
  30. package/lib-next/theme/BlogTagsPostsPage/index.js +33 -41
  31. package/lib-next/theme/CodeBlock/index.js +64 -154
  32. package/lib-next/theme/CodeBlock/styles.module.css +17 -9
  33. package/lib-next/theme/ColorModeToggle/index.js +83 -0
  34. package/lib-next/theme/ColorModeToggle/styles.module.css +51 -0
  35. package/lib-next/theme/Details/index.js +21 -0
  36. package/lib-next/theme/Details/styles.module.css +13 -0
  37. package/lib-next/theme/DocBreadcrumbs/index.js +76 -0
  38. package/lib-next/theme/DocBreadcrumbs/styles.module.css +26 -0
  39. package/lib-next/theme/DocCard/index.js +91 -0
  40. package/lib-next/theme/DocCard/styles.module.css +43 -0
  41. package/lib-next/theme/DocCardList/index.js +19 -0
  42. package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +54 -0
  43. package/lib-next/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  44. package/lib-next/theme/DocItem/index.js +53 -58
  45. package/lib-next/theme/DocItem/styles.module.css +6 -10
  46. package/lib-next/theme/DocItemFooter/index.js +79 -0
  47. package/{lib/theme/DocItem → lib-next/theme/DocItemFooter}/styles.module.css +1 -9
  48. package/lib-next/theme/DocPage/index.js +54 -55
  49. package/lib-next/theme/DocPage/styles.module.css +9 -3
  50. package/lib-next/theme/DocPaginator/index.js +15 -24
  51. package/lib-next/theme/DocSidebar/index.js +65 -286
  52. package/lib-next/theme/DocSidebar/styles.module.css +5 -22
  53. package/lib-next/theme/DocSidebarItem/index.js +264 -0
  54. package/{lib/theme/BlogPostItem → lib-next/theme/DocSidebarItem}/styles.module.css +5 -10
  55. package/lib-next/theme/DocSidebarItems/index.js +28 -0
  56. package/lib-next/theme/DocTagDocListPage/index.js +89 -0
  57. package/lib-next/theme/DocTagsListPage/index.js +35 -0
  58. package/lib-next/theme/DocVersionBadge/index.js +34 -0
  59. package/lib-next/theme/DocVersionBanner/index.js +32 -15
  60. package/lib-next/theme/EditThisPage/index.js +6 -1
  61. package/lib-next/theme/ErrorPageContent.js +35 -0
  62. package/lib-next/theme/Footer/index.js +95 -40
  63. package/lib-next/theme/Footer/styles.module.css +2 -1
  64. package/lib-next/theme/Heading/index.js +39 -48
  65. package/lib-next/theme/Heading/styles.module.css +25 -5
  66. package/lib-next/theme/IconArrow/index.js +2 -5
  67. package/lib-next/theme/IconClose/index.js +23 -0
  68. package/lib-next/theme/IconDarkMode/index.js +17 -0
  69. package/lib-next/theme/IconEdit/index.js +2 -5
  70. package/lib-next/theme/IconExternalLink/index.js +2 -5
  71. package/lib-next/theme/IconLanguage/index.js +5 -8
  72. package/lib-next/theme/IconLightMode/index.js +17 -0
  73. package/lib-next/theme/IconMenu/index.js +7 -5
  74. package/lib-next/theme/LastUpdated/index.js +3 -2
  75. package/lib-next/theme/Layout/index.js +5 -7
  76. package/lib-next/theme/LayoutHead/index.js +27 -32
  77. package/lib-next/theme/LayoutProviders/index.js +15 -9
  78. package/lib-next/theme/Logo/index.js +25 -24
  79. package/lib-next/theme/MDXComponents/index.js +59 -30
  80. package/{src/theme/hooks → lib-next/theme/MDXComponents}/styles.css +7 -2
  81. package/lib-next/theme/MDXPage/index.js +10 -12
  82. package/lib-next/theme/Navbar/index.js +199 -64
  83. package/lib-next/theme/Navbar/styles.module.css +10 -3
  84. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +35 -201
  85. package/lib-next/theme/NavbarItem/DocNavbarItem.js +11 -8
  86. package/lib-next/theme/NavbarItem/DocSidebarNavbarItem.js +73 -0
  87. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +34 -20
  88. package/lib-next/theme/NavbarItem/DocsVersionNavbarItem.js +4 -1
  89. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +156 -0
  90. package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +12 -13
  91. package/{lib/theme/hooks/styles.css → lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css} +3 -2
  92. package/lib-next/theme/NavbarItem/NavbarNavLink.js +70 -0
  93. package/lib-next/theme/NavbarItem/index.js +26 -14
  94. package/lib-next/theme/{UserPreferencesContext.js → NavbarItem/utils.js} +3 -3
  95. package/lib-next/theme/NotFound.js +1 -4
  96. package/lib-next/theme/PaginatorNavLink/index.js +17 -0
  97. package/lib-next/theme/SearchBar.js +1 -1
  98. package/lib-next/theme/SearchMetadata/index.js +34 -0
  99. package/lib-next/theme/Seo/index.js +11 -7
  100. package/lib-next/theme/SkipToContent/index.js +3 -5
  101. package/lib-next/theme/SkipToContent/styles.module.css +7 -0
  102. package/lib-next/theme/TOC/index.js +12 -39
  103. package/lib-next/theme/TOC/styles.module.css +1 -1
  104. package/lib-next/theme/TOCCollapsible/index.js +54 -0
  105. package/lib-next/theme/TOCCollapsible/styles.module.css +50 -0
  106. package/lib-next/theme/TOCInline/index.js +10 -31
  107. package/lib-next/theme/TOCItems/index.js +85 -0
  108. package/lib-next/theme/TabItem/index.js +1 -4
  109. package/lib-next/theme/Tabs/__tests__/index.test.js +146 -0
  110. package/lib-next/theme/Tabs/index.js +108 -50
  111. package/lib-next/theme/Tabs/styles.module.css +0 -13
  112. package/lib-next/theme/Tag/index.js +24 -0
  113. package/lib-next/theme/Tag/styles.module.css +70 -0
  114. package/lib-next/theme/TagsListByLetter/index.js +40 -0
  115. package/lib-next/theme/{hooks/styles.css → TagsListByLetter/styles.module.css} +3 -2
  116. package/lib-next/theme/TagsListInline/index.js +31 -0
  117. package/lib-next/theme/TagsListInline/styles.module.css +15 -0
  118. package/lib-next/theme/ThemedImage/index.js +7 -10
  119. package/lib-next/theme/ThemedImage/styles.module.css +2 -2
  120. package/lib-next/theme/prism-include-languages.js +17 -15
  121. package/package.json +31 -31
  122. package/src/admonitions.css +35 -0
  123. package/src/deps.d.ts +13 -0
  124. package/src/getSwizzleConfig.ts +123 -0
  125. package/src/index.ts +39 -61
  126. package/{lib-next/prism-include-languages.js → src/prism-include-languages.ts} +0 -0
  127. package/src/theme/Admonition/index.tsx +106 -0
  128. package/src/theme/AnnouncementBar/index.tsx +9 -15
  129. package/src/theme/AnnouncementBar/styles.module.css +23 -32
  130. package/src/theme/BackToTopButton/index.tsx +143 -0
  131. package/src/theme/BackToTopButton/styles.module.css +44 -0
  132. package/src/theme/BlogArchivePage/index.tsx +91 -0
  133. package/src/theme/BlogLayout/index.tsx +42 -0
  134. package/src/theme/BlogListPage/index.tsx +19 -28
  135. package/src/theme/BlogListPaginator/index.tsx +13 -15
  136. package/src/theme/BlogPostAuthor/index.tsx +54 -0
  137. package/{lib/theme/MDXPage → src/theme/BlogPostAuthor}/styles.module.css +4 -2
  138. package/src/theme/BlogPostAuthors/index.tsx +49 -0
  139. package/src/theme/BlogPostAuthors/styles.module.css +21 -0
  140. package/src/theme/BlogPostItem/index.tsx +84 -90
  141. package/src/theme/BlogPostPage/index.tsx +77 -38
  142. package/src/theme/BlogPostPaginator/index.tsx +12 -18
  143. package/src/theme/BlogSidebar/index.tsx +11 -13
  144. package/src/theme/BlogSidebar/styles.module.css +4 -2
  145. package/src/theme/BlogTagsListPage/index.tsx +15 -60
  146. package/src/theme/BlogTagsPostsPage/index.tsx +32 -40
  147. package/src/theme/CodeBlock/index.tsx +68 -156
  148. package/src/theme/CodeBlock/styles.module.css +17 -9
  149. package/src/theme/ColorModeToggle/index.tsx +92 -0
  150. package/src/theme/ColorModeToggle/styles.module.css +51 -0
  151. package/src/theme/Details/index.tsx +25 -0
  152. package/src/theme/Details/styles.module.css +13 -0
  153. package/src/theme/DocBreadcrumbs/index.tsx +91 -0
  154. package/src/theme/DocBreadcrumbs/styles.module.css +26 -0
  155. package/src/theme/DocCard/index.tsx +109 -0
  156. package/src/theme/DocCard/styles.module.css +43 -0
  157. package/src/theme/DocCardList/index.tsx +27 -0
  158. package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +59 -0
  159. package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  160. package/src/theme/DocItem/index.tsx +56 -58
  161. package/src/theme/DocItem/styles.module.css +6 -10
  162. package/src/theme/DocItemFooter/index.tsx +91 -0
  163. package/{lib/theme/Toggle → src/theme/DocItemFooter}/styles.module.css +9 -8
  164. package/src/theme/DocPage/index.tsx +53 -49
  165. package/src/theme/DocPage/styles.module.css +9 -3
  166. package/src/theme/DocPaginator/index.tsx +15 -23
  167. package/src/theme/DocSidebar/index.tsx +76 -298
  168. package/src/theme/DocSidebar/styles.module.css +5 -22
  169. package/src/theme/DocSidebarItem/index.tsx +283 -0
  170. package/src/theme/DocSidebarItem/styles.module.css +13 -0
  171. package/src/theme/DocSidebarItems/index.tsx +32 -0
  172. package/src/theme/DocTagDocListPage/index.tsx +89 -0
  173. package/src/theme/DocTagsListPage/index.tsx +39 -0
  174. package/src/theme/DocVersionBadge/index.tsx +35 -0
  175. package/src/theme/DocVersionBanner/index.tsx +49 -22
  176. package/src/theme/EditThisPage/index.tsx +6 -1
  177. package/src/theme/ErrorPageContent.tsx +41 -0
  178. package/src/theme/Footer/index.tsx +109 -44
  179. package/src/theme/Footer/styles.module.css +2 -1
  180. package/src/theme/Heading/index.tsx +38 -53
  181. package/src/theme/Heading/styles.module.css +25 -5
  182. package/src/theme/IconArrow/index.tsx +2 -4
  183. package/src/theme/IconClose/index.tsx +26 -0
  184. package/src/theme/IconDarkMode/index.tsx +20 -0
  185. package/src/theme/IconEdit/index.tsx +5 -4
  186. package/src/theme/IconExternalLink/index.tsx +3 -5
  187. package/src/theme/IconLanguage/index.tsx +6 -8
  188. package/src/theme/IconLightMode/index.tsx +20 -0
  189. package/src/theme/IconMenu/index.tsx +3 -5
  190. package/src/theme/LastUpdated/index.tsx +3 -2
  191. package/src/theme/Layout/index.tsx +5 -6
  192. package/src/theme/LayoutHead/index.tsx +26 -25
  193. package/src/theme/LayoutProviders/index.tsx +15 -9
  194. package/src/theme/Logo/index.tsx +21 -19
  195. package/src/theme/MDXComponents/index.tsx +70 -32
  196. package/{lib/theme/IconExternalLink/styles.module.css → src/theme/MDXComponents/styles.css} +7 -4
  197. package/src/theme/MDXPage/index.tsx +10 -12
  198. package/src/theme/Navbar/index.tsx +208 -68
  199. package/src/theme/Navbar/styles.module.css +10 -3
  200. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +37 -207
  201. package/src/theme/NavbarItem/DocNavbarItem.tsx +17 -18
  202. package/src/theme/NavbarItem/DocSidebarNavbarItem.tsx +84 -0
  203. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +39 -24
  204. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +7 -3
  205. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +181 -0
  206. package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +16 -10
  207. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  208. package/src/theme/NavbarItem/NavbarNavLink.tsx +68 -0
  209. package/src/theme/NavbarItem/index.tsx +41 -18
  210. package/src/theme/NavbarItem/utils.ts +10 -0
  211. package/src/theme/NotFound.tsx +1 -3
  212. package/src/theme/PaginatorNavLink/index.tsx +20 -0
  213. package/src/theme/SearchBar.tsx +2 -1
  214. package/src/theme/SearchMetadata/index.tsx +43 -0
  215. package/src/theme/Seo/index.tsx +7 -4
  216. package/src/theme/SkipToContent/index.tsx +3 -5
  217. package/src/theme/SkipToContent/styles.module.css +7 -0
  218. package/src/theme/TOC/index.tsx +13 -44
  219. package/src/theme/TOC/styles.module.css +1 -1
  220. package/src/theme/TOCCollapsible/index.tsx +58 -0
  221. package/src/theme/TOCCollapsible/styles.module.css +50 -0
  222. package/src/theme/TOCInline/index.tsx +14 -35
  223. package/src/theme/TOCItems/index.tsx +100 -0
  224. package/src/theme/TabItem/index.tsx +5 -3
  225. package/src/theme/Tabs/index.tsx +115 -56
  226. package/src/theme/Tabs/styles.module.css +0 -13
  227. package/src/theme/Tag/index.tsx +29 -0
  228. package/src/theme/Tag/styles.module.css +70 -0
  229. package/src/theme/TagsListByLetter/index.tsx +43 -0
  230. package/src/theme/TagsListByLetter/styles.module.css +11 -0
  231. package/src/theme/TagsListInline/index.tsx +35 -0
  232. package/src/theme/TagsListInline/styles.module.css +15 -0
  233. package/src/theme/ThemedImage/index.tsx +7 -9
  234. package/src/theme/ThemedImage/styles.module.css +2 -2
  235. package/src/theme/prism-include-languages.ts +20 -15
  236. package/src/theme-classic.d.ts +771 -0
  237. package/src/translations.ts +74 -54
  238. package/src/types.d.ts +0 -587
  239. package/src/validateThemeConfig.ts +381 -0
  240. package/babel.config.js +0 -35
  241. package/codeTranslations/README.md +0 -20
  242. package/codeTranslations/ar.json +0 -57
  243. package/codeTranslations/base.json +0 -112
  244. package/codeTranslations/bn.json +0 -56
  245. package/codeTranslations/da.json +0 -57
  246. package/codeTranslations/de.json +0 -57
  247. package/codeTranslations/es.json +0 -57
  248. package/codeTranslations/fa.json +0 -57
  249. package/codeTranslations/fil.json +0 -57
  250. package/codeTranslations/fr.json +0 -57
  251. package/codeTranslations/he.json +0 -57
  252. package/codeTranslations/hi.json +0 -57
  253. package/codeTranslations/ja.json +0 -57
  254. package/codeTranslations/ko.json +0 -57
  255. package/codeTranslations/pl.json +0 -57
  256. package/codeTranslations/pt-BR.json +0 -57
  257. package/codeTranslations/pt-PT.json +0 -57
  258. package/codeTranslations/ru.json +0 -57
  259. package/codeTranslations/tr.json +0 -57
  260. package/codeTranslations/vi.json +0 -57
  261. package/codeTranslations/zh-Hans.json +0 -57
  262. package/codeTranslations/zh-Hant.json +0 -57
  263. package/lib/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  264. package/lib/__tests__/translations.test.js +0 -112
  265. package/lib/__tests__/validateThemeConfig.test.js +0 -333
  266. package/lib/theme/AnnouncementBar/index.js +0 -72
  267. package/lib/theme/AnnouncementBar/styles.module.css +0 -72
  268. package/lib/theme/BlogListPage/index.js +0 -71
  269. package/lib/theme/BlogListPaginator/index.js +0 -63
  270. package/lib/theme/BlogPostItem/index.js +0 -161
  271. package/lib/theme/BlogPostPage/index.js +0 -69
  272. package/lib/theme/BlogPostPaginator/index.js +0 -64
  273. package/lib/theme/BlogSidebar/index.js +0 -51
  274. package/lib/theme/BlogSidebar/styles.module.css +0 -44
  275. package/lib/theme/BlogTagsListPage/index.js +0 -76
  276. package/lib/theme/BlogTagsPostsPage/index.js +0 -100
  277. package/lib/theme/CodeBlock/index.js +0 -253
  278. package/lib/theme/CodeBlock/styles.module.css +0 -68
  279. package/lib/theme/DocItem/index.js +0 -129
  280. package/lib/theme/DocPage/index.js +0 -173
  281. package/lib/theme/DocPage/styles.module.css +0 -80
  282. package/lib/theme/DocPaginator/index.js +0 -63
  283. package/lib/theme/DocSidebar/index.js +0 -309
  284. package/lib/theme/DocSidebar/styles.module.css +0 -124
  285. package/lib/theme/DocVersionBanner/index.js +0 -128
  286. package/lib/theme/EditThisPage/index.js +0 -31
  287. package/lib/theme/Footer/index.js +0 -115
  288. package/lib/theme/Footer/styles.module.css +0 -15
  289. package/lib/theme/Heading/index.js +0 -76
  290. package/lib/theme/Heading/styles.css +0 -23
  291. package/lib/theme/Heading/styles.module.css +0 -15
  292. package/lib/theme/IconArrow/index.js +0 -28
  293. package/lib/theme/IconEdit/index.js +0 -34
  294. package/lib/theme/IconExternalLink/index.js +0 -30
  295. package/lib/theme/IconLanguage/index.js +0 -29
  296. package/lib/theme/IconMenu/index.js +0 -30
  297. package/lib/theme/LastUpdated/index.js +0 -61
  298. package/lib/theme/Layout/index.js +0 -64
  299. package/lib/theme/Layout/styles.css +0 -27
  300. package/lib/theme/LayoutHead/index.js +0 -144
  301. package/lib/theme/LayoutProviders/index.js +0 -36
  302. package/lib/theme/Logo/index.js +0 -60
  303. package/lib/theme/MDXComponents/index.js +0 -65
  304. package/lib/theme/MDXPage/index.js +0 -66
  305. package/lib/theme/Navbar/index.js +0 -147
  306. package/lib/theme/Navbar/styles.module.css +0 -20
  307. package/lib/theme/NavbarItem/DefaultNavbarItem.js +0 -209
  308. package/lib/theme/NavbarItem/DocNavbarItem.js +0 -63
  309. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +0 -76
  310. package/lib/theme/NavbarItem/DocsVersionNavbarItem.js +0 -43
  311. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem.js +0 -72
  312. package/lib/theme/NavbarItem/SearchNavbarItem.js +0 -28
  313. package/lib/theme/NavbarItem/index.js +0 -54
  314. package/lib/theme/NotFound.js +0 -57
  315. package/lib/theme/SearchBar.js +0 -15
  316. package/lib/theme/SearchMetadatas/index.js +0 -33
  317. package/lib/theme/Seo/index.js +0 -49
  318. package/lib/theme/SkipToContent/index.js +0 -71
  319. package/lib/theme/SkipToContent/styles.module.css +0 -14
  320. package/lib/theme/TOC/index.js +0 -59
  321. package/lib/theme/TOC/styles.module.css +0 -23
  322. package/lib/theme/TOCInline/index.js +0 -53
  323. package/lib/theme/TOCInline/styles.module.css +0 -12
  324. package/lib/theme/TabItem/index.js +0 -32
  325. package/lib/theme/Tabs/index.js +0 -150
  326. package/lib/theme/Tabs/styles.module.css +0 -23
  327. package/lib/theme/ThemeContext.js +0 -21
  328. package/lib/theme/ThemeProvider/index.js +0 -38
  329. package/lib/theme/ThemedImage/index.js +0 -49
  330. package/lib/theme/ThemedImage/styles.module.css +0 -18
  331. package/lib/theme/Toggle/index.js +0 -94
  332. package/lib/theme/Toggle/styles.css +0 -103
  333. package/lib/theme/UserPreferencesContext.js +0 -18
  334. package/lib/theme/UserPreferencesProvider/index.js +0 -36
  335. package/lib/theme/hooks/useContextualSearchFilters.js +0 -47
  336. package/lib/theme/hooks/useDocs.js +0 -18
  337. package/lib/theme/hooks/useHideableNavbar.js +0 -92
  338. package/lib/theme/hooks/useKeyboardNavigation.js +0 -45
  339. package/lib/theme/hooks/useLocationHash.js +0 -28
  340. package/lib/theme/hooks/useLockBodyScroll.js +0 -26
  341. package/lib/theme/hooks/usePrismTheme.js +0 -36
  342. package/lib/theme/hooks/useScrollPosition.js +0 -49
  343. package/lib/theme/hooks/useTOCHighlight.js +0 -87
  344. package/lib/theme/hooks/useTabGroupChoice.js +0 -51
  345. package/lib/theme/hooks/useTheme.js +0 -99
  346. package/lib/theme/hooks/useThemeContext.js +0 -31
  347. package/lib/theme/hooks/useUserPreferencesContext.js +0 -31
  348. package/lib/theme/hooks/useWindowSize.js +0 -55
  349. package/lib/theme/prism-include-languages.js +0 -39
  350. package/lib-next/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  351. package/lib-next/__tests__/translations.test.js +0 -128
  352. package/lib-next/__tests__/validateThemeConfig.test.js +0 -333
  353. package/lib-next/index.js +0 -221
  354. package/lib-next/theme/Heading/styles.css +0 -23
  355. package/lib-next/theme/SearchMetadatas/index.js +0 -20
  356. package/lib-next/theme/ThemeContext.js +0 -9
  357. package/lib-next/theme/ThemeProvider/index.js +0 -25
  358. package/lib-next/theme/Toggle/index.js +0 -80
  359. package/lib-next/theme/Toggle/styles.css +0 -103
  360. package/lib-next/theme/UserPreferencesProvider/index.js +0 -24
  361. package/lib-next/theme/hooks/useContextualSearchFilters.js +0 -41
  362. package/lib-next/theme/hooks/useDocs.js +0 -10
  363. package/lib-next/theme/hooks/useHideableNavbar.js +0 -79
  364. package/lib-next/theme/hooks/useKeyboardNavigation.js +0 -35
  365. package/lib-next/theme/hooks/useLocationHash.js +0 -20
  366. package/lib-next/theme/hooks/useLockBodyScroll.js +0 -18
  367. package/lib-next/theme/hooks/usePrismTheme.js +0 -20
  368. package/lib-next/theme/hooks/useScrollPosition.js +0 -38
  369. package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
  370. package/lib-next/theme/hooks/useTabGroupChoice.js +0 -39
  371. package/lib-next/theme/hooks/useTheme.js +0 -82
  372. package/lib-next/theme/hooks/useThemeContext.js +0 -22
  373. package/lib-next/theme/hooks/useUserPreferencesContext.js +0 -22
  374. package/lib-next/theme/hooks/useWindowSize.js +0 -45
  375. package/lib-next/translations.js +0 -145
  376. package/lib-next/types.d.ts +0 -598
  377. package/lib-next/validateThemeConfig.js +0 -317
  378. package/src/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  379. package/src/__tests__/translations.test.ts +0 -116
  380. package/src/__tests__/validateThemeConfig.test.js +0 -333
  381. package/src/prism-include-languages.js +0 -11
  382. package/src/theme/Heading/styles.css +0 -23
  383. package/src/theme/SearchMetadatas/index.tsx +0 -28
  384. package/src/theme/ThemeContext.ts +0 -15
  385. package/src/theme/ThemeProvider/index.tsx +0 -24
  386. package/src/theme/Toggle/index.tsx +0 -100
  387. package/src/theme/Toggle/styles.css +0 -103
  388. package/src/theme/UserPreferencesContext.ts +0 -12
  389. package/src/theme/UserPreferencesProvider/index.tsx +0 -27
  390. package/src/theme/hooks/useContextualSearchFilters.ts +0 -52
  391. package/src/theme/hooks/useDocs.ts +0 -11
  392. package/src/theme/hooks/useHideableNavbar.ts +0 -85
  393. package/src/theme/hooks/useKeyboardNavigation.ts +0 -39
  394. package/src/theme/hooks/useLocationHash.ts +0 -25
  395. package/src/theme/hooks/useLockBodyScroll.ts +0 -20
  396. package/src/theme/hooks/usePrismTheme.ts +0 -22
  397. package/src/theme/hooks/useScrollPosition.ts +0 -45
  398. package/src/theme/hooks/useTOCHighlight.ts +0 -98
  399. package/src/theme/hooks/useTabGroupChoice.ts +0 -46
  400. package/src/theme/hooks/useTheme.ts +0 -92
  401. package/src/theme/hooks/useThemeContext.ts +0 -23
  402. package/src/theme/hooks/useUserPreferencesContext.ts +0 -25
  403. package/src/theme/hooks/useWindowSize.ts +0 -51
  404. package/src/validateThemeConfig.js +0 -317
  405. package/tsconfig.json +0 -12
  406. package/update-code-translations.js +0 -240
  407. package/update-code-translations.test.js +0 -33
@@ -5,22 +5,28 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  import React from 'react';
8
- import ThemeProvider from '@theme/ThemeProvider';
9
- import UserPreferencesProvider from '@theme/UserPreferencesProvider';
10
8
  import {
9
+ ColorModeProvider,
10
+ TabGroupChoiceProvider,
11
11
  AnnouncementBarProvider,
12
12
  DocsPreferredVersionContextProvider,
13
+ MobileSecondaryMenuProvider,
14
+ ScrollControllerProvider,
13
15
  } from '@docusaurus/theme-common';
14
16
  export default function LayoutProviders({children}) {
15
17
  return (
16
- <ThemeProvider>
18
+ <ColorModeProvider>
17
19
  <AnnouncementBarProvider>
18
- <UserPreferencesProvider>
19
- <DocsPreferredVersionContextProvider>
20
- {children}
21
- </DocsPreferredVersionContextProvider>
22
- </UserPreferencesProvider>
20
+ <TabGroupChoiceProvider>
21
+ <ScrollControllerProvider>
22
+ <DocsPreferredVersionContextProvider>
23
+ <MobileSecondaryMenuProvider>
24
+ {children}
25
+ </MobileSecondaryMenuProvider>
26
+ </DocsPreferredVersionContextProvider>
27
+ </ScrollControllerProvider>
28
+ </TabGroupChoiceProvider>
23
29
  </AnnouncementBarProvider>
24
- </ThemeProvider>
30
+ </ColorModeProvider>
25
31
  );
26
32
  }
@@ -9,28 +9,33 @@ import Link from '@docusaurus/Link';
9
9
  import ThemedImage from '@theme/ThemedImage';
10
10
  import useBaseUrl from '@docusaurus/useBaseUrl';
11
11
  import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
12
-
13
- const Logo = (props) => {
12
+ import {useThemeConfig} from '@docusaurus/theme-common';
13
+ export default function Logo(props) {
14
14
  const {
15
- siteConfig: {
16
- title,
17
- themeConfig: {
18
- navbar: {
19
- title: navbarTitle,
20
- logo = {
21
- src: '',
22
- },
23
- },
15
+ siteConfig: {title},
16
+ } = useDocusaurusContext();
17
+ const {
18
+ navbar: {
19
+ title: navbarTitle,
20
+ logo = {
21
+ src: '',
24
22
  },
25
23
  },
26
- isClient,
27
- } = useDocusaurusContext();
24
+ } = useThemeConfig();
28
25
  const {imageClassName, titleClassName, ...propsRest} = props;
29
26
  const logoLink = useBaseUrl(logo.href || '/');
30
27
  const sources = {
31
28
  light: useBaseUrl(logo.src),
32
29
  dark: useBaseUrl(logo.srcDark || logo.src),
33
30
  };
31
+ const themedImage = (
32
+ <ThemedImage
33
+ sources={sources}
34
+ height={logo.height}
35
+ width={logo.width}
36
+ alt={logo.alt || navbarTitle || title}
37
+ />
38
+ );
34
39
  return (
35
40
  <Link
36
41
  to={logoLink}
@@ -38,17 +43,13 @@ const Logo = (props) => {
38
43
  {...(logo.target && {
39
44
  target: logo.target,
40
45
  })}>
41
- {logo.src && (
42
- <ThemedImage
43
- key={isClient}
44
- className={imageClassName}
45
- sources={sources}
46
- alt={logo.alt || navbarTitle || title}
47
- />
48
- )}
46
+ {logo.src &&
47
+ (imageClassName ? (
48
+ <div className={imageClassName}>{themedImage}</div>
49
+ ) : (
50
+ themedImage
51
+ ))}
49
52
  {navbarTitle != null && <b className={titleClassName}>{navbarTitle}</b>}
50
53
  </Link>
51
54
  );
52
- };
53
-
54
- export default Logo;
55
+ }
@@ -5,47 +5,76 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  import React, {isValidElement} from 'react';
8
+ import Head from '@docusaurus/Head';
8
9
  import Link from '@docusaurus/Link';
9
10
  import CodeBlock from '@theme/CodeBlock';
10
11
  import Heading from '@theme/Heading';
11
- const MDXComponents = {
12
- code: (props) => {
13
- const {children} = props; // For retrocompatibility purposes (pretty rare use case)
14
- // See https://github.com/facebook/docusaurus/pull/1584
12
+ import Details from '@theme/Details';
13
+ import './styles.css'; // MDX elements are wrapped through the MDX pragma. In some cases (notably usage
14
+ // with Head/Helmet) we need to unwrap those elements.
15
15
 
16
- if (isValidElement(children)) {
17
- return children;
18
- }
16
+ function unwrapMDXElement(element) {
17
+ if (element?.props?.mdxType && element?.props?.originalType) {
18
+ const {mdxType, originalType, ...newProps} = element.props;
19
+ return React.createElement(element.props.originalType, newProps);
20
+ }
19
21
 
20
- return !children.includes('\n') ? (
21
- <code {...props} />
22
- ) : (
23
- <CodeBlock {...props} />
22
+ return element;
23
+ }
24
+
25
+ const MDXComponents = {
26
+ head: (props) => {
27
+ const unwrappedChildren = React.Children.map(props.children, (child) =>
28
+ unwrapMDXElement(child),
24
29
  );
30
+ return <Head {...props}>{unwrappedChildren}</Head>;
31
+ },
32
+ code: (props) => {
33
+ const inlineElements = [
34
+ 'a',
35
+ 'b',
36
+ 'big',
37
+ 'i',
38
+ 'span',
39
+ 'em',
40
+ 'strong',
41
+ 'sup',
42
+ 'sub',
43
+ 'small',
44
+ ];
45
+ const shouldBeInline = React.Children.toArray(props.children).every(
46
+ (el) =>
47
+ (typeof el === 'string' && !el.includes('\n')) ||
48
+ (React.isValidElement(el) && inlineElements.includes(el.props.mdxType)),
49
+ );
50
+ return shouldBeInline ? <code {...props} /> : <CodeBlock {...props} />;
25
51
  },
26
52
  a: (props) => <Link {...props} />,
27
- pre: (props) => {
28
- const {children} = props; // See comment for `code` above
29
-
30
- if (isValidElement(children?.props?.children)) {
31
- return children?.props.children;
32
- }
53
+ pre: (props) => (
54
+ <CodeBlock // If this pre is created by a ``` fenced codeblock, unwrap the children
55
+ {...(isValidElement(props.children) &&
56
+ props.children.props.originalType === 'code'
57
+ ? props.children?.props
58
+ : {...props})}
59
+ />
60
+ ),
61
+ details: (props) => {
62
+ const items = React.Children.toArray(props.children); // Split summary item from the rest to pass it as a separate prop to the
63
+ // Details theme component
33
64
 
65
+ const summary = items.find((item) => item?.props?.mdxType === 'summary');
66
+ const children = <>{items.filter((item) => item !== summary)}</>;
34
67
  return (
35
- <CodeBlock
36
- {...(isValidElement(children)
37
- ? children?.props
38
- : {
39
- children,
40
- })}
41
- />
68
+ <Details {...props} summary={summary}>
69
+ {children}
70
+ </Details>
42
71
  );
43
72
  },
44
- h1: Heading('h1'),
45
- h2: Heading('h2'),
46
- h3: Heading('h3'),
47
- h4: Heading('h4'),
48
- h5: Heading('h5'),
49
- h6: Heading('h6'),
73
+ h1: (props) => <Heading as="h1" {...props} />,
74
+ h2: (props) => <Heading as="h2" {...props} />,
75
+ h3: (props) => <Heading as="h3" {...props} />,
76
+ h4: (props) => <Heading as="h4" {...props} />,
77
+ h5: (props) => <Heading as="h5" {...props} />,
78
+ h6: (props) => <Heading as="h6" {...props} />,
50
79
  };
51
80
  export default MDXComponents;
@@ -5,6 +5,11 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- body:not(.navigation-with-keyboard) *:not(input):focus {
9
- outline: none;
8
+ ul.contains-task-list {
9
+ padding-left: 0;
10
+ list-style: none;
11
+ }
12
+
13
+ img {
14
+ height: auto;
10
15
  }
@@ -12,17 +12,13 @@ import MDXComponents from '@theme/MDXComponents';
12
12
  import TOC from '@theme/TOC';
13
13
  import {ThemeClassNames} from '@docusaurus/theme-common';
14
14
  import styles from './styles.module.css';
15
-
16
- function MDXPage(props) {
15
+ export default function MDXPage(props) {
17
16
  const {content: MDXPageContent} = props;
18
- const {frontMatter, metadata} = MDXPageContent;
19
17
  const {
20
- title,
21
- description,
22
- wrapperClassName,
23
- hide_table_of_contents: hideTableOfContents,
24
- } = frontMatter;
25
- const {permalink} = metadata;
18
+ metadata: {title, description, permalink, frontMatter},
19
+ } = MDXPageContent;
20
+ const {wrapperClassName, hide_table_of_contents: hideTableOfContents} =
21
+ frontMatter;
26
22
  return (
27
23
  <Layout
28
24
  title={title}
@@ -39,7 +35,11 @@ function MDXPage(props) {
39
35
  </div>
40
36
  {!hideTableOfContents && MDXPageContent.toc && (
41
37
  <div className="col col--2">
42
- <TOC toc={MDXPageContent.toc} />
38
+ <TOC
39
+ toc={MDXPageContent.toc}
40
+ minHeadingLevel={frontMatter.toc_min_heading_level}
41
+ maxHeadingLevel={frontMatter.toc_max_heading_level}
42
+ />
43
43
  </div>
44
44
  )}
45
45
  </div>
@@ -47,5 +47,3 @@ function MDXPage(props) {
47
47
  </Layout>
48
48
  );
49
49
  }
50
-
51
- export default MDXPage;
@@ -6,19 +6,32 @@
6
6
  */
7
7
  import React, {useCallback, useState, useEffect} from 'react';
8
8
  import clsx from 'clsx';
9
+ import Translate from '@docusaurus/Translate';
9
10
  import SearchBar from '@theme/SearchBar';
10
- import Toggle from '@theme/Toggle';
11
- import useThemeContext from '@theme/hooks/useThemeContext';
12
- import {useThemeConfig} from '@docusaurus/theme-common';
13
- import useHideableNavbar from '@theme/hooks/useHideableNavbar';
14
- import useLockBodyScroll from '@theme/hooks/useLockBodyScroll';
15
- import useWindowSize, {windowSizes} from '@theme/hooks/useWindowSize';
11
+ import ColorModeToggle from '@theme/ColorModeToggle';
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';
16
23
  import NavbarItem from '@theme/NavbarItem';
17
24
  import Logo from '@theme/Logo';
18
25
  import IconMenu from '@theme/IconMenu';
26
+ import IconClose from '@theme/IconClose';
19
27
  import styles from './styles.module.css'; // retrocompatible with v1
20
28
 
21
- const DefaultNavItemPosition = 'right'; // If split links by left/right
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
22
35
  // if position is unspecified, fallback to right (as v1)
23
36
 
24
37
  function splitNavItemsByPosition(items) {
@@ -34,31 +47,174 @@ function splitNavItemsByPosition(items) {
34
47
  };
35
48
  }
36
49
 
37
- function Navbar() {
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() {
38
84
  const {
39
- navbar: {items, hideOnScroll, style},
40
- colorMode: {disableSwitch: disableColorModeSwitch},
85
+ colorMode: {disableSwitch},
41
86
  } = useThemeConfig();
42
- const [sidebarShown, setSidebarShown] = useState(false);
43
- const {isDarkTheme, setLightTheme, setDarkTheme} = useThemeContext();
44
- const {navbarRef, isNavbarVisible} = useHideableNavbar(hideOnScroll);
45
- useLockBodyScroll(sidebarShown);
46
- const showSidebar = useCallback(() => {
47
- setSidebarShown(true);
48
- }, [setSidebarShown]);
49
- const hideSidebar = useCallback(() => {
50
- setSidebarShown(false);
51
- }, [setSidebarShown]);
52
- const onToggleChange = useCallback(
87
+ const {isDarkTheme, setLightTheme, setDarkTheme} = useColorMode();
88
+ const toggle = useCallback(
53
89
  (e) => (e.target.checked ? setDarkTheme() : setLightTheme()),
54
90
  [setLightTheme, setDarkTheme],
55
91
  );
56
- const windowSize = useWindowSize();
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
+
57
113
  useEffect(() => {
58
- if (windowSize === windowSizes.desktop) {
59
- setSidebarShown(false);
114
+ const contentBecameAvailable = content && !previousContent;
115
+
116
+ if (contentBecameAvailable) {
117
+ setShown(true);
60
118
  }
61
- }, [windowSize]);
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
+ <ColorModeToggle
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
+
209
+ 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();
62
218
  const hasSearchNavbarItem = items.some((item) => item.type === 'search');
63
219
  const {leftItems, rightItems} = splitNavItemsByPosition(items);
64
220
  return (
@@ -67,20 +223,20 @@ function Navbar() {
67
223
  className={clsx('navbar', 'navbar--fixed-top', {
68
224
  'navbar--dark': style === 'dark',
69
225
  'navbar--primary': style === 'primary',
70
- 'navbar-sidebar--show': sidebarShown,
226
+ 'navbar-sidebar--show': mobileSidebar.shown,
71
227
  [styles.navbarHideable]: hideOnScroll,
72
228
  [styles.navbarHidden]: hideOnScroll && !isNavbarVisible,
73
229
  })}>
74
230
  <div className="navbar__inner">
75
231
  <div className="navbar__items">
76
- {items != null && items.length !== 0 && (
232
+ {(items?.length > 0 || activeDocPlugin) && (
77
233
  <button
78
234
  aria-label="Navigation bar toggle"
79
235
  className="navbar__toggle clean-btn"
80
236
  type="button"
81
237
  tabIndex={0}
82
- onClick={showSidebar}
83
- onKeyDown={showSidebar}>
238
+ onClick={mobileSidebar.toggle}
239
+ onKeyDown={mobileSidebar.toggle}>
84
240
  <IconMenu />
85
241
  </button>
86
242
  )}
@@ -97,50 +253,29 @@ function Navbar() {
97
253
  {rightItems.map((item, i) => (
98
254
  <NavbarItem {...item} key={i} />
99
255
  ))}
100
- {!disableColorModeSwitch && (
101
- <Toggle
102
- className={styles.displayOnlyInLargeViewport}
103
- checked={isDarkTheme}
104
- onChange={onToggleChange}
256
+ {!colorModeToggle.disabled && (
257
+ <ColorModeToggle
258
+ className={styles.toggle}
259
+ checked={colorModeToggle.isDarkTheme}
260
+ onChange={colorModeToggle.toggle}
105
261
  />
106
262
  )}
107
263
  {!hasSearchNavbarItem && <SearchBar />}
108
264
  </div>
109
265
  </div>
266
+
110
267
  <div
111
268
  role="presentation"
112
269
  className="navbar-sidebar__backdrop"
113
- onClick={hideSidebar}
270
+ onClick={mobileSidebar.toggle}
114
271
  />
115
- <div className="navbar-sidebar">
116
- <div className="navbar-sidebar__brand">
117
- <Logo
118
- className="navbar__brand"
119
- imageClassName="navbar__logo"
120
- titleClassName="navbar__title"
121
- onClick={hideSidebar}
122
- />
123
- {!disableColorModeSwitch && sidebarShown && (
124
- <Toggle checked={isDarkTheme} onChange={onToggleChange} />
125
- )}
126
- </div>
127
- <div className="navbar-sidebar__items">
128
- <div className="menu">
129
- <ul className="menu__list">
130
- {items.map((item, i) => (
131
- <NavbarItem
132
- mobile
133
- {...item} // TODO fix typing
134
- onClick={hideSidebar}
135
- key={i}
136
- />
137
- ))}
138
- </ul>
139
- </div>
140
- </div>
141
- </div>
272
+
273
+ {mobileSidebar.shouldRender && (
274
+ <NavbarMobileSidebar
275
+ sidebarShown={mobileSidebar.shown}
276
+ toggleSidebar={mobileSidebar.toggle}
277
+ />
278
+ )}
142
279
  </nav>
143
280
  );
144
281
  }
145
-
146
- export default Navbar;
@@ -5,9 +5,12 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- @media screen and (max-width: 997px) {
9
- .displayOnlyInLargeViewport {
10
- display: none !important;
8
+ /*
9
+ Hide toggle in small viewports
10
+ */
11
+ @media (max-width: 996px) {
12
+ .toggle {
13
+ display: none;
11
14
  }
12
15
  }
13
16
 
@@ -18,3 +21,7 @@
18
21
  .navbarHidden {
19
22
  transform: translate3d(0, calc(-100% - 2px), 0);
20
23
  }
24
+
25
+ .navbarSidebarToggle {
26
+ margin-right: 1rem;
27
+ }