@docusaurus/theme-classic 2.0.0-beta.1 → 2.0.0-beta.10

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 (367) 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 +41 -16
  6. package/lib/prism-include-languages.js +9 -5
  7. package/lib/theme/AnnouncementBar/index.js +10 -16
  8. package/lib/theme/AnnouncementBar/styles.module.css +25 -30
  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 +29 -46
  34. package/lib/theme/DocItem/styles.module.css +5 -9
  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 -52
  38. package/lib/theme/DocPage/styles.module.css +8 -23
  39. package/lib/theme/DocPaginator/index.js +6 -7
  40. package/lib/theme/DocSidebar/index.js +53 -235
  41. package/lib/theme/DocSidebar/styles.module.css +0 -18
  42. package/lib/theme/DocSidebarItem/index.js +209 -0
  43. package/lib/theme/DocSidebarItem/styles.module.css +19 -0
  44. package/lib/theme/DocTagDocListPage/index.js +89 -0
  45. package/lib/theme/DocTagsListPage/index.js +44 -0
  46. package/lib/theme/DocVersionBadge/index.js +34 -0
  47. package/lib/theme/{DocVersionSuggestions → DocVersionBanner}/index.js +39 -20
  48. package/lib/theme/EditThisPage/index.js +3 -1
  49. package/lib/theme/ErrorPageContent.js +43 -0
  50. package/lib/theme/Footer/index.js +16 -5
  51. package/lib/theme/Heading/index.js +17 -22
  52. package/lib/theme/Heading/styles.css +5 -6
  53. package/lib/theme/Heading/styles.module.css +9 -5
  54. package/lib/theme/IconArrow/index.js +2 -2
  55. package/lib/theme/IconClose/index.js +31 -0
  56. package/lib/theme/IconEdit/index.js +3 -3
  57. package/lib/theme/IconExternalLink/index.js +3 -3
  58. package/lib/theme/IconLanguage/index.js +3 -3
  59. package/lib/theme/IconMenu/index.js +3 -3
  60. package/lib/theme/LastUpdated/index.js +4 -2
  61. package/lib/theme/Layout/index.js +5 -1
  62. package/lib/theme/LayoutHead/index.js +22 -17
  63. package/lib/theme/LayoutProviders/index.js +11 -5
  64. package/lib/theme/Logo/index.js +16 -14
  65. package/lib/theme/MDXComponents/index.js +45 -4
  66. package/lib/theme/MDXComponents/styles.css +11 -0
  67. package/lib/theme/MDXPage/index.js +2 -1
  68. package/lib/theme/Navbar/index.js +162 -42
  69. package/lib/theme/Navbar/styles.module.css +10 -3
  70. package/lib/theme/NavbarItem/DefaultNavbarItem.js +27 -123
  71. package/lib/theme/NavbarItem/DocNavbarItem.js +7 -8
  72. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +19 -12
  73. package/lib/theme/NavbarItem/DropdownNavbarItem.js +155 -0
  74. package/lib/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +6 -10
  75. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  76. package/lib/theme/NavbarItem/index.js +31 -11
  77. package/lib/theme/{SearchMetadatas → SearchMetadata}/index.js +2 -2
  78. package/lib/theme/Seo/index.js +10 -7
  79. package/lib/theme/SkipToContent/index.js +12 -4
  80. package/lib/theme/SkipToContent/styles.module.css +1 -0
  81. package/lib/theme/TOC/index.js +9 -29
  82. package/lib/theme/TOC/styles.module.css +1 -1
  83. package/lib/theme/TOCCollapsible/index.js +53 -0
  84. package/lib/theme/TOCCollapsible/styles.module.css +50 -0
  85. package/lib/theme/TOCInline/index.js +7 -27
  86. package/lib/theme/TOCItems/index.js +78 -0
  87. package/lib/theme/Tabs/__tests__/index.test.js +123 -0
  88. package/lib/theme/Tabs/index.js +73 -50
  89. package/lib/theme/Tabs/styles.module.css +0 -13
  90. package/lib/theme/Tag/index.js +40 -0
  91. package/lib/theme/Tag/styles.module.css +70 -0
  92. package/lib/theme/TagsListByLetter/index.js +48 -0
  93. package/lib/theme/TagsListByLetter/styles.module.css +11 -0
  94. package/lib/theme/TagsListInline/index.js +44 -0
  95. package/lib/theme/TagsListInline/styles.module.css +15 -0
  96. package/lib/theme/ThemeProvider/index.js +8 -3
  97. package/lib/theme/ThemedImage/index.js +6 -7
  98. package/lib/theme/Toggle/index.js +41 -44
  99. package/lib/theme/Toggle/styles.module.css +91 -3
  100. package/lib/theme/UserPreferencesProvider/index.js +9 -12
  101. package/lib/theme/hooks/useHideableNavbar.js +14 -32
  102. package/lib/theme/hooks/useTabGroupChoice.js +2 -4
  103. package/lib/theme/hooks/useTheme.js +3 -5
  104. package/lib/theme/hooks/useWindowSize.js +33 -20
  105. package/lib/theme/prism-include-languages.js +4 -3
  106. package/lib/theme-classic.d.ts +806 -0
  107. package/lib/translations.js +4 -4
  108. package/lib/types.d.ts +0 -599
  109. package/lib/validateThemeConfig.js +230 -246
  110. package/lib-next/__tests__/validateThemeConfig.test.js +277 -3
  111. package/lib-next/admonitions.css +35 -0
  112. package/lib-next/deps.d.ts +13 -0
  113. package/lib-next/index.js +45 -13
  114. package/lib-next/prism-include-languages.js +0 -2
  115. package/lib-next/theme/AnnouncementBar/index.js +9 -18
  116. package/lib-next/theme/AnnouncementBar/styles.module.css +25 -30
  117. package/lib-next/theme/BackToTopButton/index.js +131 -0
  118. package/lib-next/theme/BackToTopButton/styles.module.css +42 -0
  119. package/lib-next/theme/BlogArchivePage/index.js +80 -0
  120. package/lib-next/theme/BlogLayout/index.js +40 -0
  121. package/lib-next/theme/BlogListPage/index.js +17 -25
  122. package/lib-next/theme/BlogPostAuthor/index.js +46 -0
  123. package/lib-next/theme/BlogPostAuthor/styles.module.css +12 -0
  124. package/lib-next/theme/BlogPostAuthors/index.js +34 -0
  125. package/lib-next/theme/BlogPostAuthors/styles.module.css +11 -0
  126. package/lib-next/theme/BlogPostItem/index.js +79 -86
  127. package/lib-next/theme/BlogPostPage/index.js +70 -35
  128. package/lib-next/theme/BlogSidebar/index.js +11 -13
  129. package/lib-next/theme/BlogSidebar/styles.module.css +2 -2
  130. package/lib-next/theme/BlogTagsListPage/index.js +14 -55
  131. package/lib-next/theme/BlogTagsPostsPage/index.js +29 -39
  132. package/lib-next/theme/CodeBlock/index.js +17 -149
  133. package/lib-next/theme/CodeBlock/styles.module.css +6 -9
  134. package/lib-next/theme/Details/index.js +20 -0
  135. package/lib-next/theme/Details/styles.module.css +13 -0
  136. package/lib-next/theme/DocCard/index.js +80 -0
  137. package/lib-next/theme/DocCard/styles.module.css +43 -0
  138. package/lib-next/theme/DocCardList/index.js +19 -0
  139. package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +49 -0
  140. package/lib-next/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  141. package/lib-next/theme/DocItem/index.js +40 -56
  142. package/lib-next/theme/DocItem/styles.module.css +5 -9
  143. package/lib-next/theme/DocItemFooter/index.js +79 -0
  144. package/lib-next/theme/DocItemFooter/styles.module.css +18 -0
  145. package/lib-next/theme/DocPage/index.js +46 -47
  146. package/lib-next/theme/DocPage/styles.module.css +8 -23
  147. package/lib-next/theme/DocPaginator/index.js +7 -11
  148. package/lib-next/theme/DocSidebar/index.js +69 -295
  149. package/lib-next/theme/DocSidebar/styles.module.css +0 -18
  150. package/lib-next/theme/DocSidebarItem/index.js +217 -0
  151. package/lib-next/theme/DocSidebarItem/styles.module.css +19 -0
  152. package/lib-next/theme/DocTagDocListPage/index.js +89 -0
  153. package/lib-next/theme/DocTagsListPage/index.js +38 -0
  154. package/lib-next/theme/DocVersionBadge/index.js +27 -0
  155. package/lib-next/theme/{DocVersionSuggestions → DocVersionBanner}/index.js +51 -36
  156. package/lib-next/theme/EditThisPage/index.js +6 -1
  157. package/lib-next/theme/ErrorPageContent.js +35 -0
  158. package/lib-next/theme/Footer/index.js +27 -5
  159. package/lib-next/theme/Heading/index.js +25 -29
  160. package/lib-next/theme/Heading/styles.css +5 -6
  161. package/lib-next/theme/Heading/styles.module.css +9 -5
  162. package/lib-next/theme/IconArrow/index.js +2 -2
  163. package/lib-next/theme/IconClose/index.js +23 -0
  164. package/lib-next/theme/IconEdit/index.js +2 -2
  165. package/lib-next/theme/IconExternalLink/index.js +2 -2
  166. package/lib-next/theme/IconLanguage/index.js +2 -2
  167. package/lib-next/theme/IconMenu/index.js +2 -2
  168. package/lib-next/theme/LastUpdated/index.js +3 -2
  169. package/lib-next/theme/Layout/index.js +3 -1
  170. package/lib-next/theme/LayoutHead/index.js +18 -23
  171. package/lib-next/theme/LayoutProviders/index.js +17 -6
  172. package/lib-next/theme/Logo/index.js +25 -21
  173. package/lib-next/theme/MDXComponents/index.js +34 -7
  174. package/lib-next/theme/MDXComponents/styles.css +11 -0
  175. package/lib-next/theme/MDXPage/index.js +10 -2
  176. package/lib-next/theme/Navbar/index.js +193 -56
  177. package/lib-next/theme/Navbar/styles.module.css +10 -3
  178. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +45 -147
  179. package/lib-next/theme/NavbarItem/DocNavbarItem.js +7 -7
  180. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +31 -19
  181. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +159 -0
  182. package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +4 -12
  183. package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  184. package/lib-next/theme/NavbarItem/index.js +25 -12
  185. package/lib-next/theme/{SearchMetadatas → SearchMetadata}/index.js +1 -1
  186. package/lib-next/theme/Seo/index.js +11 -7
  187. package/lib-next/theme/SkipToContent/index.js +7 -8
  188. package/lib-next/theme/SkipToContent/styles.module.css +1 -0
  189. package/lib-next/theme/TOC/index.js +12 -36
  190. package/lib-next/theme/TOC/styles.module.css +1 -1
  191. package/lib-next/theme/TOCCollapsible/index.js +54 -0
  192. package/lib-next/theme/TOCCollapsible/styles.module.css +50 -0
  193. package/lib-next/theme/TOCInline/index.js +10 -28
  194. package/lib-next/theme/TOCItems/index.js +85 -0
  195. package/lib-next/theme/Tabs/__tests__/index.test.js +142 -0
  196. package/lib-next/theme/Tabs/index.js +91 -43
  197. package/lib-next/theme/Tabs/styles.module.css +0 -13
  198. package/lib-next/theme/Tag/index.js +27 -0
  199. package/lib-next/theme/Tag/styles.module.css +70 -0
  200. package/lib-next/theme/TagsListByLetter/index.js +42 -0
  201. package/lib-next/theme/TagsListByLetter/styles.module.css +11 -0
  202. package/lib-next/theme/TagsListInline/index.js +31 -0
  203. package/lib-next/theme/TagsListInline/styles.module.css +15 -0
  204. package/lib-next/theme/ThemeProvider/index.js +10 -7
  205. package/lib-next/theme/ThemedImage/index.js +7 -8
  206. package/lib-next/theme/Toggle/index.js +34 -37
  207. package/lib-next/theme/Toggle/styles.module.css +91 -3
  208. package/lib-next/theme/UserPreferencesProvider/index.js +9 -10
  209. package/lib-next/theme/hooks/useHideableNavbar.js +31 -44
  210. package/lib-next/theme/hooks/useTabGroupChoice.js +2 -4
  211. package/lib-next/theme/hooks/useTheme.js +4 -5
  212. package/lib-next/theme/hooks/useWindowSize.js +34 -20
  213. package/lib-next/theme/prism-include-languages.js +2 -1
  214. package/lib-next/theme-classic.d.ts +806 -0
  215. package/lib-next/translations.js +6 -10
  216. package/lib-next/types.d.ts +0 -599
  217. package/lib-next/validateThemeConfig.js +141 -114
  218. package/package.json +28 -25
  219. package/src/__tests__/validateThemeConfig.test.js +277 -3
  220. package/src/admonitions.css +35 -0
  221. package/src/deps.d.ts +13 -0
  222. package/src/index.ts +55 -22
  223. package/src/{prism-include-languages.js → prism-include-languages.ts} +0 -0
  224. package/src/theme/AnnouncementBar/index.tsx +10 -17
  225. package/src/theme/AnnouncementBar/styles.module.css +25 -30
  226. package/src/theme/BackToTopButton/index.tsx +142 -0
  227. package/src/theme/BackToTopButton/styles.module.css +42 -0
  228. package/src/theme/BlogArchivePage/index.tsx +91 -0
  229. package/src/theme/BlogLayout/index.tsx +44 -0
  230. package/src/theme/BlogListPage/index.tsx +18 -25
  231. package/src/theme/BlogPostAuthor/index.tsx +49 -0
  232. package/src/theme/BlogPostAuthor/styles.module.css +12 -0
  233. package/src/theme/BlogPostAuthors/index.tsx +39 -0
  234. package/src/theme/BlogPostAuthors/styles.module.css +11 -0
  235. package/src/theme/BlogPostItem/index.tsx +70 -80
  236. package/src/theme/BlogPostPage/index.tsx +72 -35
  237. package/src/theme/BlogSidebar/index.tsx +11 -13
  238. package/src/theme/BlogSidebar/styles.module.css +2 -2
  239. package/src/theme/BlogTagsListPage/index.tsx +14 -57
  240. package/src/theme/BlogTagsPostsPage/index.tsx +29 -39
  241. package/src/theme/CodeBlock/index.tsx +21 -151
  242. package/src/theme/CodeBlock/styles.module.css +6 -9
  243. package/src/theme/Details/index.tsx +24 -0
  244. package/src/theme/Details/styles.module.css +13 -0
  245. package/src/theme/DocCard/index.tsx +100 -0
  246. package/src/theme/DocCard/styles.module.css +43 -0
  247. package/src/theme/DocCardList/index.tsx +27 -0
  248. package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +53 -0
  249. package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  250. package/src/theme/DocItem/index.tsx +43 -56
  251. package/src/theme/DocItem/styles.module.css +5 -9
  252. package/src/theme/DocItemFooter/index.tsx +91 -0
  253. package/src/theme/DocItemFooter/styles.module.css +18 -0
  254. package/src/theme/DocPage/index.tsx +44 -42
  255. package/src/theme/DocPage/styles.module.css +8 -23
  256. package/src/theme/DocPaginator/index.tsx +9 -13
  257. package/src/theme/DocSidebar/index.tsx +80 -307
  258. package/src/theme/DocSidebar/styles.module.css +0 -18
  259. package/src/theme/DocSidebarItem/index.tsx +242 -0
  260. package/src/theme/DocSidebarItem/styles.module.css +19 -0
  261. package/src/theme/DocTagDocListPage/index.tsx +89 -0
  262. package/src/theme/DocTagsListPage/index.tsx +41 -0
  263. package/src/theme/DocVersionBadge/index.tsx +30 -0
  264. package/src/theme/{DocVersionSuggestions → DocVersionBanner}/index.tsx +74 -44
  265. package/src/theme/EditThisPage/index.tsx +6 -1
  266. package/src/theme/ErrorPageContent.tsx +41 -0
  267. package/src/theme/Footer/index.tsx +30 -6
  268. package/src/theme/Heading/index.tsx +25 -31
  269. package/src/theme/Heading/styles.css +5 -6
  270. package/src/theme/Heading/styles.module.css +9 -5
  271. package/src/theme/IconArrow/index.tsx +2 -2
  272. package/src/theme/IconClose/index.tsx +26 -0
  273. package/src/theme/IconEdit/index.tsx +2 -2
  274. package/src/theme/IconExternalLink/index.tsx +2 -5
  275. package/src/theme/IconLanguage/index.tsx +2 -6
  276. package/src/theme/IconMenu/index.tsx +3 -3
  277. package/src/theme/LastUpdated/index.tsx +3 -2
  278. package/src/theme/Layout/index.tsx +3 -1
  279. package/src/theme/LayoutHead/index.tsx +18 -17
  280. package/src/theme/LayoutProviders/index.tsx +17 -6
  281. package/src/theme/Logo/index.tsx +21 -17
  282. package/src/theme/MDXComponents/index.tsx +39 -5
  283. package/src/theme/MDXComponents/styles.css +11 -0
  284. package/src/theme/MDXPage/index.tsx +10 -2
  285. package/src/theme/Navbar/index.tsx +203 -61
  286. package/src/theme/Navbar/styles.module.css +10 -3
  287. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +42 -154
  288. package/src/theme/NavbarItem/DocNavbarItem.tsx +12 -16
  289. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +33 -21
  290. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +7 -3
  291. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +181 -0
  292. package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +8 -9
  293. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  294. package/src/theme/NavbarItem/index.tsx +41 -16
  295. package/src/theme/{SearchMetadatas → SearchMetadata}/index.tsx +2 -2
  296. package/src/theme/Seo/index.tsx +7 -4
  297. package/src/theme/SkipToContent/index.tsx +7 -8
  298. package/src/theme/SkipToContent/styles.module.css +1 -0
  299. package/src/theme/TOC/index.tsx +12 -41
  300. package/src/theme/TOC/styles.module.css +1 -1
  301. package/src/theme/TOCCollapsible/index.tsx +58 -0
  302. package/src/theme/TOCCollapsible/styles.module.css +50 -0
  303. package/src/theme/TOCInline/index.tsx +13 -32
  304. package/src/theme/TOCItems/index.tsx +96 -0
  305. package/src/theme/Tabs/__tests__/index.test.tsx +129 -0
  306. package/src/theme/Tabs/index.tsx +93 -49
  307. package/src/theme/Tabs/styles.module.css +0 -13
  308. package/src/theme/Tag/index.tsx +31 -0
  309. package/src/theme/Tag/styles.module.css +70 -0
  310. package/src/theme/TagsListByLetter/index.tsx +45 -0
  311. package/src/theme/TagsListByLetter/styles.module.css +11 -0
  312. package/src/theme/TagsListInline/index.tsx +35 -0
  313. package/src/theme/TagsListInline/styles.module.css +15 -0
  314. package/src/theme/ThemeProvider/index.tsx +6 -2
  315. package/src/theme/ThemedImage/index.tsx +8 -8
  316. package/src/theme/Toggle/index.tsx +36 -43
  317. package/src/theme/Toggle/styles.module.css +91 -3
  318. package/src/theme/UserPreferencesProvider/index.tsx +9 -11
  319. package/src/theme/hooks/useHideableNavbar.ts +32 -45
  320. package/src/theme/hooks/useTabGroupChoice.ts +4 -4
  321. package/src/theme/hooks/useTheme.ts +4 -5
  322. package/src/theme/hooks/useWindowSize.ts +38 -20
  323. package/src/theme/prism-include-languages.ts +3 -2
  324. package/src/theme-classic.d.ts +806 -0
  325. package/src/translations.ts +8 -10
  326. package/src/types.d.ts +0 -599
  327. package/src/{validateThemeConfig.js → validateThemeConfig.ts} +151 -94
  328. package/tsconfig.json +1 -2
  329. package/codeTranslations/README.md +0 -20
  330. package/codeTranslations/ar.json +0 -57
  331. package/codeTranslations/base.json +0 -112
  332. package/codeTranslations/bn.json +0 -56
  333. package/codeTranslations/da.json +0 -57
  334. package/codeTranslations/de.json +0 -57
  335. package/codeTranslations/es.json +0 -57
  336. package/codeTranslations/fa.json +0 -57
  337. package/codeTranslations/fil.json +0 -57
  338. package/codeTranslations/fr.json +0 -57
  339. package/codeTranslations/he.json +0 -57
  340. package/codeTranslations/hi.json +0 -57
  341. package/codeTranslations/ja.json +0 -57
  342. package/codeTranslations/ko.json +0 -57
  343. package/codeTranslations/pl.json +0 -57
  344. package/codeTranslations/pt-BR.json +0 -57
  345. package/codeTranslations/pt-PT.json +0 -57
  346. package/codeTranslations/ru.json +0 -57
  347. package/codeTranslations/tr.json +0 -57
  348. package/codeTranslations/vi.json +0 -57
  349. package/codeTranslations/zh-Hans.json +0 -57
  350. package/codeTranslations/zh-Hant.json +0 -57
  351. package/lib/theme/Toggle/styles.css +0 -103
  352. package/lib/theme/hooks/useAnnouncementBar.js +0 -63
  353. package/lib/theme/hooks/useContextualSearchFilters.js +0 -47
  354. package/lib/theme/hooks/useScrollPosition.js +0 -49
  355. package/lib/theme/hooks/useTOCHighlight.js +0 -87
  356. package/lib-next/theme/Toggle/styles.css +0 -103
  357. package/lib-next/theme/hooks/useAnnouncementBar.js +0 -49
  358. package/lib-next/theme/hooks/useContextualSearchFilters.js +0 -41
  359. package/lib-next/theme/hooks/useScrollPosition.js +0 -38
  360. package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
  361. package/src/theme/Toggle/styles.css +0 -103
  362. package/src/theme/hooks/useAnnouncementBar.ts +0 -58
  363. package/src/theme/hooks/useContextualSearchFilters.ts +0 -52
  364. package/src/theme/hooks/useScrollPosition.ts +0 -45
  365. package/src/theme/hooks/useTOCHighlight.ts +0 -98
  366. package/update-code-translations.js +0 -239
  367. package/update-code-translations.test.js +0 -33
@@ -15,16 +15,16 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
15
15
  * This source code is licensed under the MIT license found in the
16
16
  * LICENSE file in the root directory of this source tree.
17
17
  */
18
- const IconMenu = ({
18
+ function IconMenu({
19
19
  width = 30,
20
20
  height = 30,
21
21
  className,
22
22
  ...restProps
23
- }) => {
23
+ }) {
24
24
  return <svg className={className} width={width} height={height} viewBox="0 0 30 30" aria-hidden="true" {...restProps}>
25
25
  <path stroke="currentColor" strokeLinecap="round" strokeMiterlimit="10" strokeWidth="2" d="M4 7h22M4 15h22M4 23h22" />
26
26
  </svg>;
27
- };
27
+ }
28
28
 
29
29
  var _default = IconMenu;
30
30
  exports.default = _default;
@@ -9,6 +9,8 @@ var _react = _interopRequireDefault(require("react"));
9
9
 
10
10
  var _Translate = _interopRequireDefault(require("@docusaurus/Translate"));
11
11
 
12
+ var _themeCommon = require("@docusaurus/theme-common");
13
+
12
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
15
 
14
16
  /**
@@ -47,7 +49,7 @@ function LastUpdated({
47
49
  formattedLastUpdatedAt,
48
50
  lastUpdatedBy
49
51
  }) {
50
- return <>
52
+ return <span className={_themeCommon.ThemeClassNames.common.lastUpdated}>
51
53
  <_Translate.default id="theme.lastUpdated.lastUpdatedAtBy" description="The sentence used to display when a page has been last updated, and by who" values={{
52
54
  atDate: lastUpdatedAt && formattedLastUpdatedAt ? <LastUpdatedAtDate lastUpdatedAt={lastUpdatedAt} formattedLastUpdatedAt={formattedLastUpdatedAt} /> : '',
53
55
  byUser: lastUpdatedBy ? <LastUpdatedByUser lastUpdatedBy={lastUpdatedBy} /> : ''
@@ -57,5 +59,5 @@ function LastUpdated({
57
59
  {process.env.NODE_ENV === 'development' && <div>
58
60
  <small> (Simulated during dev for better perf)</small>
59
61
  </div>}
60
- </>;
62
+ </span>;
61
63
  }
@@ -9,6 +9,8 @@ var _react = _interopRequireDefault(require("react"));
9
9
 
10
10
  var _clsx = _interopRequireDefault(require("clsx"));
11
11
 
12
+ var _ErrorBoundary = _interopRequireDefault(require("@docusaurus/ErrorBoundary"));
13
+
12
14
  var _SkipToContent = _interopRequireDefault(require("@theme/SkipToContent"));
13
15
 
14
16
  var _AnnouncementBar = _interopRequireDefault(require("@theme/AnnouncementBar"));
@@ -25,6 +27,8 @@ var _useKeyboardNavigation = _interopRequireDefault(require("@theme/hooks/useKey
25
27
 
26
28
  var _themeCommon = require("@docusaurus/theme-common");
27
29
 
30
+ var _ErrorPageContent = _interopRequireDefault(require("@theme/ErrorPageContent"));
31
+
28
32
  require("./styles.css");
29
33
 
30
34
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -53,7 +57,7 @@ function Layout(props) {
53
57
  <_Navbar.default />
54
58
 
55
59
  <div className={(0, _clsx.default)(_themeCommon.ThemeClassNames.wrapper.main, wrapperClassName, pageClassName)}>
56
- {children}
60
+ <_ErrorBoundary.default fallback={_ErrorPageContent.default}>{children}</_ErrorBoundary.default>
57
61
  </div>
58
62
 
59
63
  {!noFooter && <_Footer.default />}
@@ -13,7 +13,7 @@ var _useDocusaurusContext = _interopRequireDefault(require("@docusaurus/useDocus
13
13
 
14
14
  var _useBaseUrl = _interopRequireDefault(require("@docusaurus/useBaseUrl"));
15
15
 
16
- var _SearchMetadatas = _interopRequireDefault(require("@theme/SearchMetadatas"));
16
+ var _SearchMetadata = _interopRequireDefault(require("@theme/SearchMetadata"));
17
17
 
18
18
  var _Seo = _interopRequireDefault(require("@theme/Seo"));
19
19
 
@@ -86,23 +86,23 @@ function CanonicalUrlHeaders({
86
86
  function LayoutHead(props) {
87
87
  const {
88
88
  siteConfig: {
89
- favicon,
90
- themeConfig: {
91
- metadatas,
92
- image: defaultImage
93
- }
89
+ favicon
94
90
  },
95
91
  i18n: {
96
92
  currentLocale,
97
93
  localeConfigs
98
94
  }
99
95
  } = (0, _useDocusaurusContext.default)();
96
+ const {
97
+ metadata,
98
+ image: defaultImage
99
+ } = (0, _themeCommon.useThemeConfig)();
100
100
  const {
101
101
  title,
102
102
  description,
103
103
  image,
104
104
  keywords,
105
- searchMetadatas
105
+ searchMetadata
106
106
  } = props;
107
107
  const faviconUrl = (0, _useBaseUrl.default)(favicon);
108
108
  const pageTitle = (0, _themeCommon.useTitleFormatter)(title); // See https://github.com/facebook/docusaurus/issues/3317#issuecomment-754661855
@@ -114,31 +114,36 @@ function LayoutHead(props) {
114
114
  return <>
115
115
  <_Head.default>
116
116
  <html lang={htmlLang} dir={htmlDir} />
117
- {favicon && <link rel="shortcut icon" href={faviconUrl} />}
117
+ {favicon && <link rel="icon" href={faviconUrl} />}
118
118
  <title>{pageTitle}</title>
119
119
  <meta property="og:title" content={pageTitle} />
120
- {image || defaultImage && <meta name="twitter:card" content="summary_large_image" />}
120
+ <meta name="twitter:card" content="summary_large_image" />
121
121
  </_Head.default>
122
122
 
123
- <_Seo.default {...{
124
- description,
125
- keywords,
126
- image
127
- }} />
123
+ {
124
+ /* image can override the default image */
125
+ }
126
+ {defaultImage && <_Seo.default image={defaultImage} />}
127
+ {image && <_Seo.default image={image} />}
128
+
129
+ <_Seo.default description={description} keywords={keywords} />
128
130
 
129
131
  <CanonicalUrlHeaders />
130
132
 
131
133
  <AlternateLangHeaders />
132
134
 
133
- <_SearchMetadatas.default tag={_themeCommon.DEFAULT_SEARCH_TAG} locale={currentLocale} {...searchMetadatas} />
135
+ <_SearchMetadata.default tag={_themeCommon.DEFAULT_SEARCH_TAG} locale={currentLocale} {...searchMetadata} />
134
136
 
135
137
  <_Head.default // it's important to have an additional <Head> element here,
136
138
  // as it allows react-helmet to override values set in previous <Head>
137
- // ie we can override default metadatas such as "twitter:card"
139
+ // ie we can override default metadata such as "twitter:card"
138
140
  // In same Head, the same meta would appear twice instead of overriding
139
141
  // See react-helmet doc
140
142
  >
141
- {metadatas.map((metadata, i) => <meta key={`metadata_${i}`} {...metadata} />)}
143
+ {
144
+ /* Yes, "metadatum" is the grammatically correct term */
145
+ }
146
+ {metadata.map((metadatum, i) => <meta key={`metadata_${i}`} {...metadatum} />)}
142
147
  </_Head.default>
143
148
  </>;
144
149
  }
@@ -25,10 +25,16 @@ function LayoutProviders({
25
25
  children
26
26
  }) {
27
27
  return <_ThemeProvider.default>
28
- <_UserPreferencesProvider.default>
29
- <_themeCommon.DocsPreferredVersionContextProvider>
30
- {children}
31
- </_themeCommon.DocsPreferredVersionContextProvider>
32
- </_UserPreferencesProvider.default>
28
+ <_themeCommon.AnnouncementBarProvider>
29
+ <_UserPreferencesProvider.default>
30
+ <_themeCommon.ScrollControllerProvider>
31
+ <_themeCommon.DocsPreferredVersionContextProvider>
32
+ <_themeCommon.MobileSecondaryMenuProvider>
33
+ {children}
34
+ </_themeCommon.MobileSecondaryMenuProvider>
35
+ </_themeCommon.DocsPreferredVersionContextProvider>
36
+ </_themeCommon.ScrollControllerProvider>
37
+ </_UserPreferencesProvider.default>
38
+ </_themeCommon.AnnouncementBarProvider>
33
39
  </_ThemeProvider.default>;
34
40
  }
@@ -15,6 +15,8 @@ var _useBaseUrl = _interopRequireDefault(require("@docusaurus/useBaseUrl"));
15
15
 
16
16
  var _useDocusaurusContext = _interopRequireDefault(require("@docusaurus/useDocusaurusContext"));
17
17
 
18
+ var _themeCommon = require("@docusaurus/theme-common");
19
+
18
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
21
 
20
22
  /**
@@ -23,21 +25,20 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
23
25
  * This source code is licensed under the MIT license found in the
24
26
  * LICENSE file in the root directory of this source tree.
25
27
  */
26
- const Logo = props => {
28
+ function Logo(props) {
27
29
  const {
28
30
  siteConfig: {
29
- title,
30
- themeConfig: {
31
- navbar: {
32
- title: navbarTitle,
33
- logo = {
34
- src: ''
35
- }
36
- }
37
- }
38
- },
39
- isClient
31
+ title
32
+ }
40
33
  } = (0, _useDocusaurusContext.default)();
34
+ const {
35
+ navbar: {
36
+ title: navbarTitle,
37
+ logo = {
38
+ src: ''
39
+ }
40
+ }
41
+ } = (0, _themeCommon.useThemeConfig)();
41
42
  const {
42
43
  imageClassName,
43
44
  titleClassName,
@@ -48,13 +49,14 @@ const Logo = props => {
48
49
  light: (0, _useBaseUrl.default)(logo.src),
49
50
  dark: (0, _useBaseUrl.default)(logo.srcDark || logo.src)
50
51
  };
52
+ const themedImage = <_ThemedImage.default sources={sources} height={logo.height} width={logo.width} alt={logo.alt || navbarTitle || title} />;
51
53
  return <_Link.default to={logoLink} {...propsRest} {...logo.target && {
52
54
  target: logo.target
53
55
  }}>
54
- {logo.src && <_ThemedImage.default key={isClient} className={imageClassName} sources={sources} alt={logo.alt || navbarTitle || title} />}
56
+ {logo.src && (imageClassName ? <div className={imageClassName}>{themedImage}</div> : themedImage)}
55
57
  {navbarTitle != null && <b className={titleClassName}>{navbarTitle}</b>}
56
58
  </_Link.default>;
57
- };
59
+ }
58
60
 
59
61
  var _default = Logo;
60
62
  exports.default = _default;
@@ -7,12 +7,18 @@ exports.default = void 0;
7
7
 
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
 
10
+ var _Head = _interopRequireDefault(require("@docusaurus/Head"));
11
+
10
12
  var _Link = _interopRequireDefault(require("@docusaurus/Link"));
11
13
 
12
14
  var _CodeBlock = _interopRequireDefault(require("@theme/CodeBlock"));
13
15
 
14
16
  var _Heading = _interopRequireDefault(require("@theme/Heading"));
15
17
 
18
+ var _Details = _interopRequireDefault(require("@theme/Details"));
19
+
20
+ require("./styles.css");
21
+
16
22
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
23
 
18
24
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -25,7 +31,29 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
25
31
  * This source code is licensed under the MIT license found in the
26
32
  * LICENSE file in the root directory of this source tree.
27
33
  */
34
+ // MDX elements are wrapped through the MDX pragma
35
+ // In some cases (notably usage with Head/Helmet) we need to unwrap those elements.
36
+ function unwrapMDXElement(element) {
37
+ var _element$props, _element$props2;
38
+
39
+ if (element !== null && element !== void 0 && (_element$props = element.props) !== null && _element$props !== void 0 && _element$props.mdxType && element !== null && element !== void 0 && (_element$props2 = element.props) !== null && _element$props2 !== void 0 && _element$props2.originalType) {
40
+ const {
41
+ mdxType,
42
+ originalType,
43
+ ...newProps
44
+ } = element.props;
45
+ return _react.default.createElement(element.props.originalType, newProps);
46
+ }
47
+
48
+ return element;
49
+ }
50
+
28
51
  const MDXComponents = {
52
+ head: props => {
53
+ const unwrappedChildren = _react.default.Children.map(props.children, child => unwrapMDXElement(child));
54
+
55
+ return <_Head.default {...props}>{unwrappedChildren}</_Head.default>;
56
+ },
29
57
  code: props => {
30
58
  const {
31
59
  children
@@ -46,14 +74,27 @@ const MDXComponents = {
46
74
  children
47
75
  } = props; // See comment for `code` above
48
76
 
49
- if ((0, _react.isValidElement)(children === null || children === void 0 ? void 0 : (_children$props = children.props) === null || _children$props === void 0 ? void 0 : _children$props.children)) {
50
- return children === null || children === void 0 ? void 0 : children.props.children;
77
+ if ((0, _react.isValidElement)(children) && (0, _react.isValidElement)(children === null || children === void 0 ? void 0 : (_children$props = children.props) === null || _children$props === void 0 ? void 0 : _children$props.children)) {
78
+ return children.props.children;
51
79
  }
52
80
 
53
- return <_CodeBlock.default {...(0, _react.isValidElement)(children) ? children === null || children === void 0 ? void 0 : children.props : {
54
- children
81
+ return <_CodeBlock.default {...(0, _react.isValidElement)(children) ? children === null || children === void 0 ? void 0 : children.props : { ...props
55
82
  }} />;
56
83
  },
84
+ details: props => {
85
+ const items = _react.default.Children.toArray(props.children); // Split summary item from the rest to pass it as a separate prop to the Detais theme component
86
+
87
+
88
+ const summary = items.find(item => {
89
+ var _item$props;
90
+
91
+ return (item === null || item === void 0 ? void 0 : (_item$props = item.props) === null || _item$props === void 0 ? void 0 : _item$props.mdxType) === 'summary';
92
+ });
93
+ const children = <>{items.filter(item => item !== summary)}</>;
94
+ return <_Details.default {...props} summary={summary}>
95
+ {children}
96
+ </_Details.default>;
97
+ },
57
98
  h1: (0, _Heading.default)('h1'),
58
99
  h2: (0, _Heading.default)('h2'),
59
100
  h3: (0, _Heading.default)('h3'),
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ ul.contains-task-list {
9
+ padding-left: 0;
10
+ list-style: none;
11
+ }
@@ -34,6 +34,7 @@ function MDXPage(props) {
34
34
  content: MDXPageContent
35
35
  } = props;
36
36
  const {
37
+ // TODO this frontmatter is not validated/normalized, it's the raw user-provided one. We should expose normalized one too!
37
38
  frontMatter,
38
39
  metadata
39
40
  } = MDXPageContent;
@@ -55,7 +56,7 @@ function MDXPage(props) {
55
56
  </_react2.MDXProvider>
56
57
  </div>
57
58
  {!hideTableOfContents && MDXPageContent.toc && <div className="col col--2">
58
- <_TOC.default toc={MDXPageContent.toc} />
59
+ <_TOC.default toc={MDXPageContent.toc} minHeadingLevel={frontMatter.toc_min_heading_level} maxHeadingLevel={frontMatter.toc_max_heading_level} />
59
60
  </div>}
60
61
  </div>
61
62
  </main>
@@ -9,6 +9,8 @@ var _react = _interopRequireWildcard(require("react"));
9
9
 
10
10
  var _clsx = _interopRequireDefault(require("clsx"));
11
11
 
12
+ var _Translate = _interopRequireDefault(require("@docusaurus/Translate"));
13
+
12
14
  var _SearchBar = _interopRequireDefault(require("@theme/SearchBar"));
13
15
 
14
16
  var _Toggle = _interopRequireDefault(require("@theme/Toggle"));
@@ -21,7 +23,9 @@ var _useHideableNavbar = _interopRequireDefault(require("@theme/hooks/useHideabl
21
23
 
22
24
  var _useLockBodyScroll = _interopRequireDefault(require("@theme/hooks/useLockBodyScroll"));
23
25
 
24
- var _useWindowSize = _interopRequireWildcard(require("@theme/hooks/useWindowSize"));
26
+ var _useWindowSize = _interopRequireDefault(require("@theme/hooks/useWindowSize"));
27
+
28
+ var _useDocs = require("@theme/hooks/useDocs");
25
29
 
26
30
  var _NavbarItem = _interopRequireDefault(require("@theme/NavbarItem"));
27
31
 
@@ -29,6 +33,8 @@ var _Logo = _interopRequireDefault(require("@theme/Logo"));
29
33
 
30
34
  var _IconMenu = _interopRequireDefault(require("@theme/IconMenu"));
31
35
 
36
+ var _IconClose = _interopRequireDefault(require("@theme/IconClose"));
37
+
32
38
  var _stylesModule = _interopRequireDefault(require("./styles.module.css"));
33
39
 
34
40
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -44,9 +50,15 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
44
50
  * LICENSE file in the root directory of this source tree.
45
51
  */
46
52
  // retrocompatible with v1
47
- const DefaultNavItemPosition = 'right'; // If split links by left/right
53
+ const DefaultNavItemPosition = 'right';
54
+
55
+ function useNavbarItems() {
56
+ // TODO temporary casting until ThemeConfig type is improved
57
+ return (0, _themeCommon.useThemeConfig)().navbar.items;
58
+ } // If split links by left/right
48
59
  // if position is unspecified, fallback to right (as v1)
49
60
 
61
+
50
62
  function splitNavItemsByPosition(items) {
51
63
  const leftItems = items.filter(item => {
52
64
  var _item$position;
@@ -64,41 +76,160 @@ function splitNavItemsByPosition(items) {
64
76
  };
65
77
  }
66
78
 
67
- function Navbar() {
79
+ function useMobileSidebar() {
80
+ const windowSize = (0, _useWindowSize.default)(); // Mobile sidebar not visible on hydration: can avoid SSR rendering
81
+
82
+ const shouldRender = windowSize === 'mobile'; // || windowSize === 'ssr';
83
+
84
+ const [shown, setShown] = (0, _react.useState)(false); // Close mobile sidebar on navigation pop
85
+ // Most likely firing when using the Android back button (but not only)
86
+
87
+ (0, _themeCommon.useHistoryPopHandler)(() => {
88
+ if (shown) {
89
+ setShown(false); // Should we prevent the navigation here?
90
+ // See https://github.com/facebook/docusaurus/pull/5462#issuecomment-911699846
91
+
92
+ return false; // prevent pop navigation
93
+ }
94
+
95
+ return undefined;
96
+ });
97
+ const toggle = (0, _react.useCallback)(() => {
98
+ setShown(s => !s);
99
+ }, []);
100
+ (0, _react.useEffect)(() => {
101
+ if (windowSize === 'desktop') {
102
+ setShown(false);
103
+ }
104
+ }, [windowSize]);
105
+ return {
106
+ shouldRender,
107
+ toggle,
108
+ shown
109
+ };
110
+ }
111
+
112
+ function useColorModeToggle() {
68
113
  const {
69
- navbar: {
70
- items,
71
- hideOnScroll,
72
- style
73
- },
74
114
  colorMode: {
75
- disableSwitch: disableColorModeSwitch
115
+ disableSwitch
76
116
  }
77
117
  } = (0, _themeCommon.useThemeConfig)();
78
- const [sidebarShown, setSidebarShown] = (0, _react.useState)(false);
79
118
  const {
80
119
  isDarkTheme,
81
120
  setLightTheme,
82
121
  setDarkTheme
83
122
  } = (0, _useThemeContext.default)();
123
+ const toggle = (0, _react.useCallback)(e => e.target.checked ? setDarkTheme() : setLightTheme(), [setLightTheme, setDarkTheme]);
124
+ return {
125
+ isDarkTheme,
126
+ toggle,
127
+ disabled: disableSwitch
128
+ };
129
+ }
130
+
131
+ function useSecondaryMenu({
132
+ sidebarShown,
133
+ toggleSidebar
134
+ }) {
135
+ var _useMobileSecondaryMe;
136
+
137
+ const content = (_useMobileSecondaryMe = (0, _themeCommon.useMobileSecondaryMenuRenderer)()) === null || _useMobileSecondaryMe === void 0 ? void 0 : _useMobileSecondaryMe({
138
+ toggleSidebar
139
+ });
140
+ const previousContent = (0, _themeCommon.usePrevious)(content);
141
+ const [shown, setShown] = (0, _react.useState)(() => // /!\ content is set with useEffect,
142
+ // so it's not available on mount anyway
143
+ // "return !!content" => always returns false
144
+ false); // When content is become available for the first time (set in useEffect)
145
+ // we set this content to be shown!
146
+
147
+ (0, _react.useEffect)(() => {
148
+ const contentBecameAvailable = content && !previousContent;
149
+
150
+ if (contentBecameAvailable) {
151
+ setShown(true);
152
+ }
153
+ }, [content, previousContent]);
154
+ const hasContent = !!content; // On sidebar close, secondary menu is set to be shown on next re-opening
155
+ // (if any secondary menu content available)
156
+
157
+ (0, _react.useEffect)(() => {
158
+ if (!hasContent) {
159
+ setShown(false);
160
+ return;
161
+ }
162
+
163
+ if (!sidebarShown) {
164
+ setShown(true);
165
+ }
166
+ }, [sidebarShown, hasContent]);
167
+ const hide = (0, _react.useCallback)(() => {
168
+ setShown(false);
169
+ }, []);
170
+ return {
171
+ shown,
172
+ hide,
173
+ content
174
+ };
175
+ }
176
+
177
+ function NavbarMobileSidebar({
178
+ sidebarShown,
179
+ toggleSidebar
180
+ }) {
181
+ (0, _useLockBodyScroll.default)(sidebarShown);
182
+ const items = useNavbarItems();
183
+ const colorModeToggle = useColorModeToggle();
184
+ const secondaryMenu = useSecondaryMenu({
185
+ sidebarShown,
186
+ toggleSidebar
187
+ });
188
+ return <div className="navbar-sidebar">
189
+ <div className="navbar-sidebar__brand">
190
+ <_Logo.default className="navbar__brand" imageClassName="navbar__logo" titleClassName="navbar__title" />
191
+ {!colorModeToggle.disabled && <_Toggle.default className={_stylesModule.default.navbarSidebarToggle} checked={colorModeToggle.isDarkTheme} onChange={colorModeToggle.toggle} />}
192
+ <button type="button" className="clean-btn navbar-sidebar__close" onClick={toggleSidebar}>
193
+ <_IconClose.default color="var(--ifm-color-emphasis-600)" className={_stylesModule.default.navbarSidebarCloseSvg} />
194
+ </button>
195
+ </div>
196
+
197
+ <div className={(0, _clsx.default)('navbar-sidebar__items', {
198
+ 'navbar-sidebar__items--show-secondary': secondaryMenu.shown
199
+ })}>
200
+ <div className="navbar-sidebar__item menu">
201
+ <ul className="menu__list">
202
+ {items.map((item, i) => <_NavbarItem.default mobile {...item} onClick={toggleSidebar} key={i} />)}
203
+ </ul>
204
+ </div>
205
+
206
+ <div className="navbar-sidebar__item menu">
207
+ {items.length > 0 && <button type="button" className="clean-btn navbar-sidebar__back" onClick={secondaryMenu.hide}>
208
+ <_Translate.default id="theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel" 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)">
209
+ ← Back to main menu
210
+ </_Translate.default>
211
+ </button>}
212
+ {secondaryMenu.content}
213
+ </div>
214
+ </div>
215
+ </div>;
216
+ }
217
+
218
+ function Navbar() {
219
+ const {
220
+ navbar: {
221
+ hideOnScroll,
222
+ style
223
+ }
224
+ } = (0, _themeCommon.useThemeConfig)();
225
+ const mobileSidebar = useMobileSidebar();
226
+ const colorModeToggle = useColorModeToggle();
227
+ const activeDocPlugin = (0, _useDocs.useActivePlugin)();
84
228
  const {
85
229
  navbarRef,
86
230
  isNavbarVisible
87
231
  } = (0, _useHideableNavbar.default)(hideOnScroll);
88
- (0, _useLockBodyScroll.default)(sidebarShown);
89
- const showSidebar = (0, _react.useCallback)(() => {
90
- setSidebarShown(true);
91
- }, [setSidebarShown]);
92
- const hideSidebar = (0, _react.useCallback)(() => {
93
- setSidebarShown(false);
94
- }, [setSidebarShown]);
95
- const onToggleChange = (0, _react.useCallback)(e => e.target.checked ? setDarkTheme() : setLightTheme(), [setLightTheme, setDarkTheme]);
96
- const windowSize = (0, _useWindowSize.default)();
97
- (0, _react.useEffect)(() => {
98
- if (windowSize === _useWindowSize.windowSizes.desktop) {
99
- setSidebarShown(false);
100
- }
101
- }, [windowSize]);
232
+ const items = useNavbarItems();
102
233
  const hasSearchNavbarItem = items.some(item => item.type === 'search');
103
234
  const {
104
235
  leftItems,
@@ -107,13 +238,13 @@ function Navbar() {
107
238
  return <nav ref={navbarRef} className={(0, _clsx.default)('navbar', 'navbar--fixed-top', {
108
239
  'navbar--dark': style === 'dark',
109
240
  'navbar--primary': style === 'primary',
110
- 'navbar-sidebar--show': sidebarShown,
241
+ 'navbar-sidebar--show': mobileSidebar.shown,
111
242
  [_stylesModule.default.navbarHideable]: hideOnScroll,
112
243
  [_stylesModule.default.navbarHidden]: hideOnScroll && !isNavbarVisible
113
244
  })}>
114
245
  <div className="navbar__inner">
115
246
  <div className="navbar__items">
116
- {items != null && items.length !== 0 && <button aria-label="Navigation bar toggle" className="navbar__toggle clean-btn" type="button" tabIndex={0} onClick={showSidebar} onKeyDown={showSidebar}>
247
+ {((items === null || items === void 0 ? void 0 : items.length) > 0 || activeDocPlugin) && <button aria-label="Navigation bar toggle" className="navbar__toggle clean-btn" type="button" tabIndex={0} onClick={mobileSidebar.toggle} onKeyDown={mobileSidebar.toggle}>
117
248
  <_IconMenu.default />
118
249
  </button>}
119
250
  <_Logo.default className="navbar__brand" imageClassName="navbar__logo" titleClassName="navbar__title" />
@@ -121,25 +252,14 @@ function Navbar() {
121
252
  </div>
122
253
  <div className="navbar__items navbar__items--right">
123
254
  {rightItems.map((item, i) => <_NavbarItem.default {...item} key={i} />)}
124
- {!disableColorModeSwitch && <_Toggle.default className={_stylesModule.default.displayOnlyInLargeViewport} checked={isDarkTheme} onChange={onToggleChange} />}
255
+ {!colorModeToggle.disabled && <_Toggle.default className={_stylesModule.default.toggle} checked={colorModeToggle.isDarkTheme} onChange={colorModeToggle.toggle} />}
125
256
  {!hasSearchNavbarItem && <_SearchBar.default />}
126
257
  </div>
127
258
  </div>
128
- <div role="presentation" className="navbar-sidebar__backdrop" onClick={hideSidebar} />
129
- <div className="navbar-sidebar">
130
- <div className="navbar-sidebar__brand">
131
- <_Logo.default className="navbar__brand" imageClassName="navbar__logo" titleClassName="navbar__title" onClick={hideSidebar} />
132
- {!disableColorModeSwitch && sidebarShown && <_Toggle.default checked={isDarkTheme} onChange={onToggleChange} />}
133
- </div>
134
- <div className="navbar-sidebar__items">
135
- <div className="menu">
136
- <ul className="menu__list">
137
- {items.map((item, i) => <_NavbarItem.default mobile {...item} // TODO fix typing
138
- onClick={hideSidebar} key={i} />)}
139
- </ul>
140
- </div>
141
- </div>
142
- </div>
259
+
260
+ <div role="presentation" className="navbar-sidebar__backdrop" onClick={mobileSidebar.toggle} />
261
+
262
+ {mobileSidebar.shouldRender && <NavbarMobileSidebar sidebarShown={mobileSidebar.shown} toggleSidebar={mobileSidebar.toggle} />}
143
263
  </nav>;
144
264
  }
145
265
 
@@ -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
+ }