@docusaurus/theme-classic 2.0.0-beta.8bda3b2db → 2.0.0-beta.9

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 (310) hide show
  1. package/README.md +1 -1
  2. package/codeTranslations/ar.json +12 -7
  3. package/codeTranslations/base.json +17 -7
  4. package/codeTranslations/bn.json +11 -5
  5. package/codeTranslations/cs.json +62 -0
  6. package/codeTranslations/da.json +8 -3
  7. package/codeTranslations/de.json +8 -3
  8. package/codeTranslations/es.json +15 -10
  9. package/codeTranslations/fa.json +31 -26
  10. package/codeTranslations/fil.json +8 -3
  11. package/codeTranslations/fr.json +8 -3
  12. package/codeTranslations/he.json +9 -4
  13. package/codeTranslations/hi.json +9 -4
  14. package/codeTranslations/ja.json +8 -3
  15. package/codeTranslations/ko.json +8 -3
  16. package/codeTranslations/pl.json +8 -3
  17. package/codeTranslations/pt-BR.json +16 -11
  18. package/codeTranslations/pt-PT.json +8 -3
  19. package/codeTranslations/ru.json +10 -5
  20. package/codeTranslations/sr.json +62 -0
  21. package/codeTranslations/tr.json +9 -4
  22. package/codeTranslations/vi.json +10 -5
  23. package/codeTranslations/zh-Hans.json +9 -4
  24. package/codeTranslations/zh-Hant.json +9 -4
  25. package/lib/__tests__/validateThemeConfig.test.js +277 -3
  26. package/lib/admonitions.css +35 -0
  27. package/lib/index.js +31 -8
  28. package/lib/prism-include-languages.js +9 -5
  29. package/lib/theme/AnnouncementBar/index.js +10 -16
  30. package/lib/theme/AnnouncementBar/styles.module.css +25 -30
  31. package/lib/theme/BackToTopButton/index.js +140 -0
  32. package/lib/theme/BackToTopButton/styles.module.css +42 -0
  33. package/lib/theme/BlogArchivePage/index.js +89 -0
  34. package/lib/theme/BlogLayout/index.js +51 -0
  35. package/lib/theme/BlogListPage/index.js +10 -21
  36. package/lib/theme/BlogPostAuthor/index.js +51 -0
  37. package/lib/theme/BlogPostAuthor/styles.module.css +12 -0
  38. package/lib/theme/BlogPostAuthors/index.js +47 -0
  39. package/lib/theme/BlogPostAuthors/styles.module.css +11 -0
  40. package/lib/theme/BlogPostItem/index.js +58 -67
  41. package/lib/theme/BlogPostPage/index.js +37 -24
  42. package/lib/theme/BlogSidebar/styles.module.css +2 -2
  43. package/lib/theme/BlogTagsListPage/index.js +8 -44
  44. package/lib/theme/BlogTagsPostsPage/index.js +24 -38
  45. package/lib/theme/CodeBlock/index.js +45 -41
  46. package/lib/theme/CodeBlock/styles.module.css +6 -9
  47. package/lib/theme/Details/index.js +30 -0
  48. package/lib/theme/Details/styles.module.css +13 -0
  49. package/lib/theme/DocItem/index.js +29 -45
  50. package/lib/theme/DocItem/styles.module.css +5 -9
  51. package/lib/theme/DocItemFooter/index.js +79 -0
  52. package/lib/theme/DocItemFooter/styles.module.css +18 -0
  53. package/lib/theme/DocPage/index.js +25 -49
  54. package/lib/theme/DocPage/styles.module.css +8 -23
  55. package/lib/theme/DocSidebar/index.js +45 -227
  56. package/lib/theme/DocSidebar/styles.module.css +0 -18
  57. package/lib/theme/DocSidebarItem/index.js +177 -0
  58. package/lib/theme/DocSidebarItem/styles.module.css +15 -0
  59. package/lib/theme/DocTagDocListPage/index.js +89 -0
  60. package/lib/theme/DocTagsListPage/index.js +44 -0
  61. package/lib/theme/{DocVersionSuggestions → DocVersionBanner}/index.js +37 -18
  62. package/lib/theme/EditThisPage/index.js +3 -1
  63. package/lib/theme/Footer/index.js +13 -4
  64. package/lib/theme/Heading/index.js +7 -9
  65. package/lib/theme/Heading/styles.css +4 -6
  66. package/lib/theme/Heading/styles.module.css +9 -5
  67. package/lib/theme/IconClose/index.js +31 -0
  68. package/lib/theme/LastUpdated/index.js +4 -2
  69. package/lib/theme/LayoutHead/index.js +13 -11
  70. package/lib/theme/LayoutProviders/index.js +11 -5
  71. package/lib/theme/Logo/index.js +14 -12
  72. package/lib/theme/MDXComponents/index.js +45 -4
  73. package/lib/theme/MDXComponents/styles.css +11 -0
  74. package/lib/theme/MDXPage/index.js +2 -1
  75. package/lib/theme/Navbar/index.js +164 -42
  76. package/lib/theme/Navbar/styles.module.css +10 -3
  77. package/lib/theme/NavbarItem/DefaultNavbarItem.js +27 -123
  78. package/lib/theme/NavbarItem/DocNavbarItem.js +6 -5
  79. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +19 -12
  80. package/lib/theme/NavbarItem/DropdownNavbarItem.js +155 -0
  81. package/lib/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +5 -6
  82. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  83. package/lib/theme/NavbarItem/index.js +31 -11
  84. package/lib/theme/Seo/index.js +10 -7
  85. package/lib/theme/SkipToContent/index.js +9 -3
  86. package/lib/theme/SkipToContent/styles.module.css +1 -0
  87. package/lib/theme/TOC/index.js +9 -29
  88. package/lib/theme/TOC/styles.module.css +1 -1
  89. package/lib/theme/TOCCollapsible/index.js +53 -0
  90. package/lib/theme/TOCCollapsible/styles.module.css +50 -0
  91. package/lib/theme/TOCInline/index.js +7 -27
  92. package/lib/theme/TOCItems/index.js +78 -0
  93. package/lib/theme/Tabs/__tests__/index.test.js +123 -0
  94. package/lib/theme/Tabs/index.js +73 -50
  95. package/lib/theme/Tabs/styles.module.css +0 -13
  96. package/lib/theme/Tag/index.js +40 -0
  97. package/lib/theme/Tag/styles.module.css +70 -0
  98. package/lib/theme/TagsListByLetter/index.js +48 -0
  99. package/lib/theme/TagsListByLetter/styles.module.css +11 -0
  100. package/lib/theme/TagsListInline/index.js +44 -0
  101. package/lib/theme/TagsListInline/styles.module.css +15 -0
  102. package/lib/theme/ThemedImage/index.js +4 -5
  103. package/lib/theme/Toggle/index.js +23 -18
  104. package/lib/theme/Toggle/styles.module.css +91 -0
  105. package/lib/theme/UserPreferencesProvider/index.js +1 -9
  106. package/lib/theme/hooks/useHideableNavbar.js +14 -32
  107. package/lib/theme/hooks/useTabGroupChoice.js +2 -4
  108. package/lib/theme/hooks/useTheme.js +2 -2
  109. package/lib/theme/hooks/useWindowSize.js +33 -20
  110. package/lib/theme/prism-include-languages.js +4 -3
  111. package/lib/translations.js +4 -4
  112. package/lib/types.d.ts +338 -138
  113. package/lib/validateThemeConfig.js +226 -245
  114. package/lib-next/__tests__/validateThemeConfig.test.js +277 -3
  115. package/lib-next/admonitions.css +35 -0
  116. package/lib-next/index.js +33 -7
  117. package/lib-next/prism-include-languages.js +0 -2
  118. package/lib-next/theme/AnnouncementBar/index.js +9 -18
  119. package/lib-next/theme/AnnouncementBar/styles.module.css +25 -30
  120. package/lib-next/theme/BackToTopButton/index.js +131 -0
  121. package/lib-next/theme/BackToTopButton/styles.module.css +42 -0
  122. package/lib-next/theme/BlogArchivePage/index.js +80 -0
  123. package/lib-next/theme/BlogLayout/index.js +40 -0
  124. package/lib-next/theme/BlogListPage/index.js +16 -24
  125. package/lib-next/theme/BlogPostAuthor/index.js +46 -0
  126. package/lib-next/theme/BlogPostAuthor/styles.module.css +12 -0
  127. package/lib-next/theme/BlogPostAuthors/index.js +34 -0
  128. package/lib-next/theme/BlogPostAuthors/styles.module.css +11 -0
  129. package/lib-next/theme/BlogPostItem/index.js +79 -86
  130. package/lib-next/theme/BlogPostPage/index.js +70 -35
  131. package/lib-next/theme/BlogSidebar/styles.module.css +2 -2
  132. package/lib-next/theme/BlogTagsListPage/index.js +13 -54
  133. package/lib-next/theme/BlogTagsPostsPage/index.js +28 -38
  134. package/lib-next/theme/CodeBlock/index.js +54 -53
  135. package/lib-next/theme/CodeBlock/styles.module.css +6 -9
  136. package/lib-next/theme/Details/index.js +20 -0
  137. package/lib-next/theme/Details/styles.module.css +13 -0
  138. package/lib-next/theme/DocItem/index.js +46 -55
  139. package/lib-next/theme/DocItem/styles.module.css +5 -9
  140. package/lib-next/theme/DocItemFooter/index.js +79 -0
  141. package/lib-next/theme/DocItemFooter/styles.module.css +18 -0
  142. package/lib-next/theme/DocPage/index.js +25 -43
  143. package/lib-next/theme/DocPage/styles.module.css +8 -23
  144. package/lib-next/theme/DocSidebar/index.js +59 -288
  145. package/lib-next/theme/DocSidebar/styles.module.css +0 -18
  146. package/lib-next/theme/DocSidebarItem/index.js +181 -0
  147. package/lib-next/theme/DocSidebarItem/styles.module.css +15 -0
  148. package/lib-next/theme/DocTagDocListPage/index.js +89 -0
  149. package/lib-next/theme/DocTagsListPage/index.js +38 -0
  150. package/lib-next/theme/{DocVersionSuggestions → DocVersionBanner}/index.js +44 -36
  151. package/lib-next/theme/EditThisPage/index.js +6 -1
  152. package/lib-next/theme/Footer/index.js +24 -4
  153. package/lib-next/theme/Heading/index.js +10 -13
  154. package/lib-next/theme/Heading/styles.css +4 -6
  155. package/lib-next/theme/Heading/styles.module.css +9 -5
  156. package/lib-next/theme/IconClose/index.js +23 -0
  157. package/lib-next/theme/LastUpdated/index.js +3 -2
  158. package/lib-next/theme/LayoutHead/index.js +9 -15
  159. package/lib-next/theme/LayoutProviders/index.js +17 -6
  160. package/lib-next/theme/Logo/index.js +23 -19
  161. package/lib-next/theme/MDXComponents/index.js +34 -7
  162. package/lib-next/theme/MDXComponents/styles.css +11 -0
  163. package/lib-next/theme/MDXPage/index.js +10 -2
  164. package/lib-next/theme/Navbar/index.js +192 -56
  165. package/lib-next/theme/Navbar/styles.module.css +10 -3
  166. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +45 -147
  167. package/lib-next/theme/NavbarItem/DocNavbarItem.js +6 -5
  168. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +31 -19
  169. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +158 -0
  170. package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +4 -8
  171. package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  172. package/lib-next/theme/NavbarItem/index.js +25 -12
  173. package/lib-next/theme/Seo/index.js +11 -7
  174. package/lib-next/theme/SkipToContent/index.js +5 -6
  175. package/lib-next/theme/SkipToContent/styles.module.css +1 -0
  176. package/lib-next/theme/TOC/index.js +12 -36
  177. package/lib-next/theme/TOC/styles.module.css +1 -1
  178. package/lib-next/theme/TOCCollapsible/index.js +54 -0
  179. package/lib-next/theme/TOCCollapsible/styles.module.css +50 -0
  180. package/lib-next/theme/TOCInline/index.js +10 -28
  181. package/lib-next/theme/TOCItems/index.js +85 -0
  182. package/lib-next/theme/Tabs/__tests__/index.test.js +142 -0
  183. package/lib-next/theme/Tabs/index.js +91 -43
  184. package/lib-next/theme/Tabs/styles.module.css +0 -13
  185. package/lib-next/theme/Tag/index.js +27 -0
  186. package/lib-next/theme/Tag/styles.module.css +70 -0
  187. package/lib-next/theme/TagsListByLetter/index.js +42 -0
  188. package/lib-next/theme/TagsListByLetter/styles.module.css +11 -0
  189. package/lib-next/theme/TagsListInline/index.js +31 -0
  190. package/lib-next/theme/TagsListInline/styles.module.css +15 -0
  191. package/lib-next/theme/ThemedImage/index.js +5 -6
  192. package/lib-next/theme/Toggle/index.js +20 -15
  193. package/lib-next/theme/Toggle/styles.module.css +91 -0
  194. package/lib-next/theme/UserPreferencesProvider/index.js +0 -4
  195. package/lib-next/theme/hooks/useHideableNavbar.js +31 -44
  196. package/lib-next/theme/hooks/useTabGroupChoice.js +2 -4
  197. package/lib-next/theme/hooks/useTheme.js +2 -2
  198. package/lib-next/theme/hooks/useWindowSize.js +34 -20
  199. package/lib-next/theme/prism-include-languages.js +2 -1
  200. package/lib-next/translations.js +6 -10
  201. package/lib-next/types.d.ts +338 -138
  202. package/lib-next/validateThemeConfig.js +134 -110
  203. package/package.json +24 -19
  204. package/src/__tests__/validateThemeConfig.test.js +277 -3
  205. package/src/admonitions.css +35 -0
  206. package/src/index.ts +44 -14
  207. package/src/{prism-include-languages.js → prism-include-languages.ts} +0 -0
  208. package/src/theme/AnnouncementBar/index.tsx +10 -17
  209. package/src/theme/AnnouncementBar/styles.module.css +25 -30
  210. package/src/theme/BackToTopButton/index.tsx +142 -0
  211. package/src/theme/BackToTopButton/styles.module.css +42 -0
  212. package/src/theme/BlogArchivePage/index.tsx +91 -0
  213. package/src/theme/BlogLayout/index.tsx +44 -0
  214. package/src/theme/BlogListPage/index.tsx +17 -24
  215. package/src/theme/BlogPostAuthor/index.tsx +49 -0
  216. package/src/theme/BlogPostAuthor/styles.module.css +12 -0
  217. package/src/theme/BlogPostAuthors/index.tsx +36 -0
  218. package/src/theme/BlogPostAuthors/styles.module.css +11 -0
  219. package/src/theme/BlogPostItem/index.tsx +70 -80
  220. package/src/theme/BlogPostPage/index.tsx +72 -35
  221. package/src/theme/BlogSidebar/styles.module.css +2 -2
  222. package/src/theme/BlogTagsListPage/index.tsx +13 -56
  223. package/src/theme/BlogTagsPostsPage/index.tsx +28 -38
  224. package/src/theme/CodeBlock/index.tsx +70 -55
  225. package/src/theme/CodeBlock/styles.module.css +6 -9
  226. package/src/theme/Details/index.tsx +24 -0
  227. package/src/theme/Details/styles.module.css +13 -0
  228. package/src/theme/DocItem/index.tsx +49 -55
  229. package/src/theme/DocItem/styles.module.css +5 -9
  230. package/src/theme/DocItemFooter/index.tsx +91 -0
  231. package/src/theme/DocItemFooter/styles.module.css +18 -0
  232. package/src/theme/DocPage/index.tsx +24 -38
  233. package/src/theme/DocPage/styles.module.css +8 -23
  234. package/src/theme/DocSidebar/index.tsx +70 -300
  235. package/src/theme/DocSidebar/styles.module.css +0 -18
  236. package/src/theme/DocSidebarItem/index.tsx +206 -0
  237. package/src/theme/DocSidebarItem/styles.module.css +15 -0
  238. package/src/theme/DocTagDocListPage/index.tsx +89 -0
  239. package/src/theme/DocTagsListPage/index.tsx +41 -0
  240. package/src/theme/{DocVersionSuggestions → DocVersionBanner}/index.tsx +58 -44
  241. package/src/theme/EditThisPage/index.tsx +6 -1
  242. package/src/theme/Footer/index.tsx +26 -4
  243. package/src/theme/Heading/index.tsx +10 -13
  244. package/src/theme/Heading/styles.css +4 -6
  245. package/src/theme/Heading/styles.module.css +9 -5
  246. package/src/theme/IconClose/index.tsx +26 -0
  247. package/src/theme/LastUpdated/index.tsx +3 -2
  248. package/src/theme/LayoutHead/index.tsx +9 -9
  249. package/src/theme/LayoutProviders/index.tsx +17 -6
  250. package/src/theme/Logo/index.tsx +19 -15
  251. package/src/theme/MDXComponents/index.tsx +39 -5
  252. package/src/theme/MDXComponents/styles.css +11 -0
  253. package/src/theme/MDXPage/index.tsx +10 -2
  254. package/src/theme/Navbar/index.tsx +202 -61
  255. package/src/theme/Navbar/styles.module.css +10 -3
  256. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +42 -154
  257. package/src/theme/NavbarItem/DocNavbarItem.tsx +11 -14
  258. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +33 -21
  259. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +7 -3
  260. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +180 -0
  261. package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +8 -7
  262. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  263. package/src/theme/NavbarItem/index.tsx +41 -16
  264. package/src/theme/Seo/index.tsx +7 -4
  265. package/src/theme/SkipToContent/index.tsx +5 -6
  266. package/src/theme/SkipToContent/styles.module.css +1 -0
  267. package/src/theme/TOC/index.tsx +12 -41
  268. package/src/theme/TOC/styles.module.css +1 -1
  269. package/src/theme/TOCCollapsible/index.tsx +58 -0
  270. package/src/theme/TOCCollapsible/styles.module.css +50 -0
  271. package/src/theme/TOCInline/index.tsx +13 -32
  272. package/src/theme/TOCItems/index.tsx +96 -0
  273. package/src/theme/Tabs/__tests__/index.test.tsx +129 -0
  274. package/src/theme/Tabs/index.tsx +93 -49
  275. package/src/theme/Tabs/styles.module.css +0 -13
  276. package/src/theme/Tag/index.tsx +31 -0
  277. package/src/theme/Tag/styles.module.css +70 -0
  278. package/src/theme/TagsListByLetter/index.tsx +45 -0
  279. package/src/theme/TagsListByLetter/styles.module.css +11 -0
  280. package/src/theme/TagsListInline/index.tsx +35 -0
  281. package/src/theme/TagsListInline/styles.module.css +15 -0
  282. package/src/theme/ThemedImage/index.tsx +6 -6
  283. package/src/theme/Toggle/index.tsx +20 -15
  284. package/src/theme/Toggle/styles.module.css +91 -0
  285. package/src/theme/UserPreferencesProvider/index.tsx +0 -5
  286. package/src/theme/hooks/useContextualSearchFilters.ts +1 -1
  287. package/src/theme/hooks/useHideableNavbar.ts +32 -45
  288. package/src/theme/hooks/useTabGroupChoice.ts +4 -4
  289. package/src/theme/hooks/useTheme.ts +2 -2
  290. package/src/theme/hooks/useWindowSize.ts +38 -20
  291. package/src/theme/prism-include-languages.ts +3 -2
  292. package/src/translations.ts +6 -10
  293. package/src/types.d.ts +338 -138
  294. package/src/{validateThemeConfig.js → validateThemeConfig.ts} +144 -90
  295. package/tsconfig.json +1 -2
  296. package/update-code-translations.js +10 -6
  297. package/update-code-translations.test.js +1 -1
  298. package/update.js +151 -0
  299. package/lib/theme/Toggle/styles.css +0 -103
  300. package/lib/theme/hooks/useAnnouncementBar.js +0 -63
  301. package/lib/theme/hooks/useScrollPosition.js +0 -49
  302. package/lib/theme/hooks/useTOCHighlight.js +0 -87
  303. package/lib-next/theme/Toggle/styles.css +0 -103
  304. package/lib-next/theme/hooks/useAnnouncementBar.js +0 -49
  305. package/lib-next/theme/hooks/useScrollPosition.js +0 -38
  306. package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
  307. package/src/theme/Toggle/styles.css +0 -103
  308. package/src/theme/hooks/useAnnouncementBar.ts +0 -58
  309. package/src/theme/hooks/useScrollPosition.ts +0 -45
  310. package/src/theme/hooks/useTOCHighlight.ts +0 -98
@@ -86,17 +86,17 @@ 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
+ metadatas,
98
+ image: defaultImage
99
+ } = (0, _themeCommon.useThemeConfig)();
100
100
  const {
101
101
  title,
102
102
  description,
@@ -117,14 +117,16 @@ function LayoutHead(props) {
117
117
  {favicon && <link rel="shortcut 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
 
@@ -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
  /**
@@ -26,18 +28,17 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
26
28
  const 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,10 +49,11 @@ 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
  };
@@ -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,162 @@ 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)(() => {
142
+ // /!\ content is set with useEffect,
143
+ // so it's not available on mount anyway
144
+ // "return !!content" => always returns false
145
+ return false;
146
+ }); // When content is become available for the first time (set in useEffect)
147
+ // we set this content to be shown!
148
+
149
+ (0, _react.useEffect)(() => {
150
+ const contentBecameAvailable = content && !previousContent;
151
+
152
+ if (contentBecameAvailable) {
153
+ setShown(true);
154
+ }
155
+ }, [content, previousContent]);
156
+ const hasContent = !!content; // On sidebar close, secondary menu is set to be shown on next re-opening
157
+ // (if any secondary menu content available)
158
+
159
+ (0, _react.useEffect)(() => {
160
+ if (!hasContent) {
161
+ setShown(false);
162
+ return;
163
+ }
164
+
165
+ if (!sidebarShown) {
166
+ setShown(true);
167
+ }
168
+ }, [sidebarShown, hasContent]);
169
+ const hide = (0, _react.useCallback)(() => {
170
+ setShown(false);
171
+ }, []);
172
+ return {
173
+ shown,
174
+ hide,
175
+ content
176
+ };
177
+ }
178
+
179
+ function NavbarMobileSidebar({
180
+ sidebarShown,
181
+ toggleSidebar
182
+ }) {
183
+ (0, _useLockBodyScroll.default)(sidebarShown);
184
+ const items = useNavbarItems();
185
+ const colorModeToggle = useColorModeToggle();
186
+ const secondaryMenu = useSecondaryMenu({
187
+ sidebarShown,
188
+ toggleSidebar
189
+ });
190
+ return <div className="navbar-sidebar">
191
+ <div className="navbar-sidebar__brand">
192
+ <_Logo.default className="navbar__brand" imageClassName="navbar__logo" titleClassName="navbar__title" />
193
+ {!colorModeToggle.disabled && <_Toggle.default className={_stylesModule.default.navbarSidebarToggle} checked={colorModeToggle.isDarkTheme} onChange={colorModeToggle.toggle} />}
194
+ <button type="button" className="clean-btn navbar-sidebar__close" onClick={toggleSidebar}>
195
+ <_IconClose.default color="var(--ifm-color-emphasis-600)" className={_stylesModule.default.navbarSidebarCloseSvg} />
196
+ </button>
197
+ </div>
198
+
199
+ <div className={(0, _clsx.default)('navbar-sidebar__items', {
200
+ 'navbar-sidebar__items--show-secondary': secondaryMenu.shown
201
+ })}>
202
+ <div className="navbar-sidebar__item menu">
203
+ <ul className="menu__list">
204
+ {items.map((item, i) => <_NavbarItem.default mobile {...item} onClick={toggleSidebar} key={i} />)}
205
+ </ul>
206
+ </div>
207
+
208
+ <div className="navbar-sidebar__item menu">
209
+ {items.length > 0 && <button type="button" className="clean-btn navbar-sidebar__back" onClick={secondaryMenu.hide}>
210
+ <_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)">
211
+ ← Back to main menu
212
+ </_Translate.default>
213
+ </button>}
214
+ {secondaryMenu.content}
215
+ </div>
216
+ </div>
217
+ </div>;
218
+ }
219
+
220
+ function Navbar() {
221
+ const {
222
+ navbar: {
223
+ hideOnScroll,
224
+ style
225
+ }
226
+ } = (0, _themeCommon.useThemeConfig)();
227
+ const mobileSidebar = useMobileSidebar();
228
+ const colorModeToggle = useColorModeToggle();
229
+ const activeDocPlugin = (0, _useDocs.useActivePlugin)();
84
230
  const {
85
231
  navbarRef,
86
232
  isNavbarVisible
87
233
  } = (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]);
234
+ const items = useNavbarItems();
102
235
  const hasSearchNavbarItem = items.some(item => item.type === 'search');
103
236
  const {
104
237
  leftItems,
@@ -107,13 +240,13 @@ function Navbar() {
107
240
  return <nav ref={navbarRef} className={(0, _clsx.default)('navbar', 'navbar--fixed-top', {
108
241
  'navbar--dark': style === 'dark',
109
242
  'navbar--primary': style === 'primary',
110
- 'navbar-sidebar--show': sidebarShown,
243
+ 'navbar-sidebar--show': mobileSidebar.shown,
111
244
  [_stylesModule.default.navbarHideable]: hideOnScroll,
112
245
  [_stylesModule.default.navbarHidden]: hideOnScroll && !isNavbarVisible
113
246
  })}>
114
247
  <div className="navbar__inner">
115
248
  <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}>
249
+ {((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
250
  <_IconMenu.default />
118
251
  </button>}
119
252
  <_Logo.default className="navbar__brand" imageClassName="navbar__logo" titleClassName="navbar__title" />
@@ -121,25 +254,14 @@ function Navbar() {
121
254
  </div>
122
255
  <div className="navbar__items navbar__items--right">
123
256
  {rightItems.map((item, i) => <_NavbarItem.default {...item} key={i} />)}
124
- {!disableColorModeSwitch && <_Toggle.default className={_stylesModule.default.displayOnlyInLargeViewport} checked={isDarkTheme} onChange={onToggleChange} />}
257
+ {!colorModeToggle.disabled && <_Toggle.default className={_stylesModule.default.toggle} checked={colorModeToggle.isDarkTheme} onChange={colorModeToggle.toggle} />}
125
258
  {!hasSearchNavbarItem && <_SearchBar.default />}
126
259
  </div>
127
260
  </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>
261
+
262
+ <div role="presentation" className="navbar-sidebar__backdrop" onClick={mobileSidebar.toggle} />
263
+
264
+ {mobileSidebar.shouldRender && <NavbarMobileSidebar sidebarShown={mobileSidebar.shown} toggleSidebar={mobileSidebar.toggle} />}
143
265
  </nav>;
144
266
  }
145
267
 
@@ -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
+ }