@docusaurus/theme-classic 2.0.0-beta.13 → 2.0.0-beta.15

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 (299) hide show
  1. package/README.md +1 -1
  2. package/lib/index.js +7 -16
  3. package/lib/theme-classic.d.ts +111 -188
  4. package/lib/translations.js +13 -4
  5. package/lib/validateThemeConfig.js +18 -4
  6. package/lib-next/theme/Admonition/index.js +101 -0
  7. package/lib-next/theme/BackToTopButton/styles.module.css +1 -1
  8. package/lib-next/theme/BlogListPaginator/index.js +12 -12
  9. package/lib-next/theme/BlogPostAuthor/index.js +1 -1
  10. package/lib-next/theme/BlogPostAuthors/index.js +12 -2
  11. package/lib-next/theme/BlogPostAuthors/styles.module.css +10 -0
  12. package/lib-next/theme/BlogPostItem/index.js +12 -15
  13. package/lib-next/theme/BlogPostPage/index.js +10 -7
  14. package/lib-next/theme/BlogPostPaginator/index.js +11 -15
  15. package/lib-next/theme/BlogSidebar/styles.module.css +2 -0
  16. package/lib-next/theme/CodeBlock/index.js +51 -10
  17. package/lib-next/theme/CodeBlock/styles.module.css +18 -7
  18. package/lib-next/theme/DocCard/styles.module.css +3 -3
  19. package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +6 -3
  20. package/lib-next/theme/DocItem/index.js +9 -6
  21. package/lib-next/theme/DocItem/styles.module.css +2 -2
  22. package/lib-next/theme/DocPage/index.js +7 -3
  23. package/lib-next/theme/DocPage/styles.module.css +1 -0
  24. package/lib-next/theme/DocPaginator/index.js +11 -13
  25. package/lib-next/theme/DocSidebar/index.js +2 -2
  26. package/lib-next/theme/DocSidebar/styles.module.css +1 -0
  27. package/lib-next/theme/DocSidebarItem/index.js +43 -21
  28. package/lib-next/theme/DocSidebarItem/styles.module.css +1 -0
  29. package/lib-next/theme/DocSidebarItems/index.js +28 -0
  30. package/{lib/theme/DocSidebarItem → lib-next/theme/DocSidebarItems}/styles.module.css +1 -0
  31. package/lib-next/theme/DocVersionBanner/index.js +4 -1
  32. package/lib-next/theme/Footer/index.js +73 -35
  33. package/lib-next/theme/Footer/styles.module.css +2 -1
  34. package/lib-next/theme/Heading/index.js +39 -43
  35. package/lib-next/theme/Heading/styles.css +1 -1
  36. package/lib-next/theme/Layout/index.js +1 -2
  37. package/lib-next/theme/LayoutHead/index.js +5 -9
  38. package/lib-next/theme/LayoutProviders/index.js +6 -6
  39. package/lib-next/theme/MDXComponents/index.js +18 -31
  40. package/lib-next/theme/MDXComponents/styles.css +4 -0
  41. package/lib-next/theme/MDXPage/index.js +3 -10
  42. package/lib-next/theme/Navbar/index.js +6 -6
  43. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +4 -66
  44. package/lib-next/theme/NavbarItem/DocNavbarItem.js +5 -2
  45. package/lib-next/theme/NavbarItem/DocSidebarNavbarItem.js +73 -0
  46. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +5 -3
  47. package/lib-next/theme/NavbarItem/DocsVersionNavbarItem.js +4 -1
  48. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +6 -7
  49. package/lib-next/theme/NavbarItem/NavbarNavLink.js +70 -0
  50. package/lib-next/theme/NavbarItem/index.js +1 -2
  51. package/lib-next/theme/{UserPreferencesContext.js → NavbarItem/utils.js} +3 -3
  52. package/lib-next/theme/PaginatorNavLink/index.js +20 -0
  53. package/lib-next/theme/SkipToContent/index.js +1 -1
  54. package/lib-next/theme/SkipToContent/styles.module.css +7 -0
  55. package/lib-next/theme/TOCCollapsible/styles.module.css +2 -2
  56. package/lib-next/theme/Tabs/__tests__/index.test.js +8 -6
  57. package/lib-next/theme/Tabs/index.js +20 -10
  58. package/lib-next/theme/Tag/styles.module.css +4 -4
  59. package/lib-next/theme/ThemedImage/index.js +2 -2
  60. package/lib-next/theme/Toggle/styles.module.css +16 -15
  61. package/lib-next/theme/prism-include-languages.js +10 -3
  62. package/package.json +17 -19
  63. package/src/index.ts +12 -26
  64. package/src/theme/Admonition/index.tsx +106 -0
  65. package/src/theme/BackToTopButton/styles.module.css +1 -1
  66. package/src/theme/BlogListPaginator/index.tsx +12 -12
  67. package/src/theme/BlogPostAuthor/index.tsx +1 -1
  68. package/src/theme/BlogPostAuthors/index.tsx +12 -2
  69. package/src/theme/BlogPostAuthors/styles.module.css +10 -0
  70. package/src/theme/BlogPostItem/index.tsx +13 -15
  71. package/src/theme/BlogPostPage/index.tsx +10 -7
  72. package/src/theme/BlogPostPaginator/index.tsx +11 -15
  73. package/src/theme/BlogSidebar/styles.module.css +2 -0
  74. package/src/theme/CodeBlock/index.tsx +52 -11
  75. package/src/theme/CodeBlock/styles.module.css +18 -7
  76. package/src/theme/DocCard/index.tsx +2 -2
  77. package/src/theme/DocCard/styles.module.css +3 -3
  78. package/src/theme/DocCardList/index.tsx +1 -1
  79. package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +7 -3
  80. package/src/theme/DocItem/index.tsx +9 -6
  81. package/src/theme/DocItem/styles.module.css +2 -2
  82. package/src/theme/DocItemFooter/index.tsx +1 -1
  83. package/src/theme/DocPage/index.tsx +8 -4
  84. package/src/theme/DocPage/styles.module.css +1 -0
  85. package/src/theme/DocPaginator/index.tsx +13 -15
  86. package/src/theme/DocSidebar/index.tsx +3 -3
  87. package/src/theme/DocSidebar/styles.module.css +1 -0
  88. package/src/theme/DocSidebarItem/index.tsx +34 -23
  89. package/src/theme/DocSidebarItem/styles.module.css +1 -0
  90. package/src/theme/DocSidebarItems/index.tsx +32 -0
  91. package/{lib/theme/DocItemFooter → src/theme/DocSidebarItems}/styles.module.css +10 -8
  92. package/src/theme/DocVersionBanner/index.tsx +3 -3
  93. package/src/theme/Footer/index.tsx +84 -38
  94. package/src/theme/Footer/styles.module.css +2 -1
  95. package/src/theme/Heading/index.tsx +39 -47
  96. package/src/theme/Heading/styles.css +1 -1
  97. package/src/theme/Layout/index.tsx +1 -2
  98. package/src/theme/LayoutHead/index.tsx +4 -8
  99. package/src/theme/LayoutProviders/index.tsx +6 -6
  100. package/src/theme/MDXComponents/index.tsx +26 -37
  101. package/src/theme/MDXComponents/styles.css +4 -0
  102. package/src/theme/MDXPage/index.tsx +3 -11
  103. package/src/theme/Navbar/index.tsx +7 -7
  104. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +6 -62
  105. package/src/theme/NavbarItem/DocNavbarItem.tsx +8 -5
  106. package/src/theme/NavbarItem/DocSidebarNavbarItem.tsx +84 -0
  107. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +9 -6
  108. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +2 -2
  109. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +6 -7
  110. package/src/theme/NavbarItem/NavbarNavLink.tsx +68 -0
  111. package/src/theme/NavbarItem/index.tsx +3 -5
  112. package/{lib-next/theme/hooks/styles.css → src/theme/NavbarItem/utils.ts} +3 -3
  113. package/src/theme/PaginatorNavLink/index.tsx +22 -0
  114. package/src/theme/SkipToContent/index.tsx +1 -1
  115. package/src/theme/SkipToContent/styles.module.css +7 -0
  116. package/src/theme/TOCCollapsible/styles.module.css +2 -2
  117. package/src/theme/TOCItems/index.tsx +2 -2
  118. package/src/theme/Tabs/index.tsx +25 -10
  119. package/src/theme/Tag/styles.module.css +4 -4
  120. package/src/theme/TagsListByLetter/index.tsx +1 -1
  121. package/src/theme/ThemedImage/index.tsx +2 -2
  122. package/src/theme/Toggle/index.tsx +1 -1
  123. package/src/theme/Toggle/styles.module.css +16 -15
  124. package/src/theme/prism-include-languages.ts +10 -3
  125. package/src/theme-classic.d.ts +111 -188
  126. package/src/translations.ts +36 -16
  127. package/src/validateThemeConfig.ts +25 -4
  128. package/babel.config.js +0 -35
  129. package/lib/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  130. package/lib/__tests__/translations.test.js +0 -112
  131. package/lib/__tests__/validateThemeConfig.test.js +0 -607
  132. package/lib/theme/AnnouncementBar/index.js +0 -68
  133. package/lib/theme/AnnouncementBar/styles.module.css +0 -63
  134. package/lib/theme/BackToTopButton/index.js +0 -140
  135. package/lib/theme/BackToTopButton/styles.module.css +0 -42
  136. package/lib/theme/BlogArchivePage/index.js +0 -89
  137. package/lib/theme/BlogLayout/index.js +0 -51
  138. package/lib/theme/BlogListPage/index.js +0 -60
  139. package/lib/theme/BlogListPaginator/index.js +0 -63
  140. package/lib/theme/BlogPostAuthor/index.js +0 -51
  141. package/lib/theme/BlogPostAuthor/styles.module.css +0 -12
  142. package/lib/theme/BlogPostAuthors/index.js +0 -47
  143. package/lib/theme/BlogPostAuthors/styles.module.css +0 -11
  144. package/lib/theme/BlogPostItem/index.js +0 -152
  145. package/lib/theme/BlogPostItem/styles.module.css +0 -18
  146. package/lib/theme/BlogPostPage/index.js +0 -82
  147. package/lib/theme/BlogPostPaginator/index.js +0 -64
  148. package/lib/theme/BlogSidebar/index.js +0 -49
  149. package/lib/theme/BlogSidebar/styles.module.css +0 -44
  150. package/lib/theme/BlogTagsListPage/index.js +0 -40
  151. package/lib/theme/BlogTagsPostsPage/index.js +0 -86
  152. package/lib/theme/CodeBlock/index.js +0 -133
  153. package/lib/theme/CodeBlock/styles.module.css +0 -65
  154. package/lib/theme/Details/index.js +0 -30
  155. package/lib/theme/Details/styles.module.css +0 -13
  156. package/lib/theme/DocCard/index.js +0 -84
  157. package/lib/theme/DocCard/styles.module.css +0 -43
  158. package/lib/theme/DocCardList/index.js +0 -28
  159. package/lib/theme/DocCategoryGeneratedIndexPage/index.js +0 -57
  160. package/lib/theme/DocCategoryGeneratedIndexPage/styles.module.css +0 -18
  161. package/lib/theme/DocItem/index.js +0 -112
  162. package/lib/theme/DocItem/styles.module.css +0 -22
  163. package/lib/theme/DocItemFooter/index.js +0 -79
  164. package/lib/theme/DocPage/index.js +0 -154
  165. package/lib/theme/DocPage/styles.module.css +0 -85
  166. package/lib/theme/DocPaginator/index.js +0 -62
  167. package/lib/theme/DocSidebar/index.js +0 -134
  168. package/lib/theme/DocSidebar/styles.module.css +0 -106
  169. package/lib/theme/DocSidebarItem/index.js +0 -209
  170. package/lib/theme/DocTagDocListPage/index.js +0 -89
  171. package/lib/theme/DocTagsListPage/index.js +0 -44
  172. package/lib/theme/DocVersionBadge/index.js +0 -34
  173. package/lib/theme/DocVersionBanner/index.js +0 -130
  174. package/lib/theme/EditThisPage/index.js +0 -33
  175. package/lib/theme/ErrorPageContent.js +0 -43
  176. package/lib/theme/Footer/index.js +0 -119
  177. package/lib/theme/Footer/styles.module.css +0 -15
  178. package/lib/theme/Heading/index.js +0 -71
  179. package/lib/theme/Heading/styles.css +0 -22
  180. package/lib/theme/Heading/styles.module.css +0 -19
  181. package/lib/theme/IconArrow/index.js +0 -28
  182. package/lib/theme/IconClose/index.js +0 -31
  183. package/lib/theme/IconEdit/index.js +0 -34
  184. package/lib/theme/IconEdit/styles.module.css +0 -11
  185. package/lib/theme/IconExternalLink/index.js +0 -30
  186. package/lib/theme/IconExternalLink/styles.module.css +0 -12
  187. package/lib/theme/IconLanguage/index.js +0 -29
  188. package/lib/theme/IconMenu/index.js +0 -30
  189. package/lib/theme/LastUpdated/index.js +0 -63
  190. package/lib/theme/Layout/index.js +0 -68
  191. package/lib/theme/Layout/styles.css +0 -27
  192. package/lib/theme/LayoutHead/index.js +0 -149
  193. package/lib/theme/LayoutProviders/index.js +0 -40
  194. package/lib/theme/Logo/index.js +0 -62
  195. package/lib/theme/MDXComponents/index.js +0 -106
  196. package/lib/theme/MDXComponents/styles.css +0 -11
  197. package/lib/theme/MDXPage/index.js +0 -67
  198. package/lib/theme/MDXPage/styles.module.css +0 -10
  199. package/lib/theme/Navbar/index.js +0 -267
  200. package/lib/theme/Navbar/styles.module.css +0 -27
  201. package/lib/theme/NavbarItem/DefaultNavbarItem.js +0 -113
  202. package/lib/theme/NavbarItem/DocNavbarItem.js +0 -62
  203. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +0 -83
  204. package/lib/theme/NavbarItem/DocsVersionNavbarItem.js +0 -43
  205. package/lib/theme/NavbarItem/DropdownNavbarItem.js +0 -155
  206. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem/index.js +0 -68
  207. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +0 -11
  208. package/lib/theme/NavbarItem/SearchNavbarItem.js +0 -28
  209. package/lib/theme/NavbarItem/index.js +0 -74
  210. package/lib/theme/NotFound.js +0 -57
  211. package/lib/theme/SearchBar.js +0 -15
  212. package/lib/theme/SearchMetadata/index.js +0 -33
  213. package/lib/theme/Seo/index.js +0 -52
  214. package/lib/theme/SkipToContent/index.js +0 -71
  215. package/lib/theme/SkipToContent/styles.module.css +0 -14
  216. package/lib/theme/TOC/index.js +0 -39
  217. package/lib/theme/TOC/styles.module.css +0 -23
  218. package/lib/theme/TOCCollapsible/index.js +0 -53
  219. package/lib/theme/TOCCollapsible/styles.module.css +0 -50
  220. package/lib/theme/TOCInline/index.js +0 -33
  221. package/lib/theme/TOCInline/styles.module.css +0 -12
  222. package/lib/theme/TOCItems/index.js +0 -78
  223. package/lib/theme/TabItem/index.js +0 -32
  224. package/lib/theme/Tabs/__tests__/index.test.js +0 -123
  225. package/lib/theme/Tabs/index.js +0 -173
  226. package/lib/theme/Tabs/styles.module.css +0 -10
  227. package/lib/theme/Tag/index.js +0 -40
  228. package/lib/theme/Tag/styles.module.css +0 -70
  229. package/lib/theme/TagsListByLetter/index.js +0 -48
  230. package/lib/theme/TagsListByLetter/styles.module.css +0 -11
  231. package/lib/theme/TagsListInline/index.js +0 -44
  232. package/lib/theme/TagsListInline/styles.module.css +0 -15
  233. package/lib/theme/ThemeContext.js +0 -21
  234. package/lib/theme/ThemeProvider/index.js +0 -43
  235. package/lib/theme/ThemedImage/index.js +0 -47
  236. package/lib/theme/ThemedImage/styles.module.css +0 -18
  237. package/lib/theme/Toggle/index.js +0 -91
  238. package/lib/theme/Toggle/styles.module.css +0 -105
  239. package/lib/theme/UserPreferencesContext.js +0 -18
  240. package/lib/theme/UserPreferencesProvider/index.js +0 -41
  241. package/lib/theme/hooks/styles.css +0 -10
  242. package/lib/theme/hooks/useDocs.js +0 -18
  243. package/lib/theme/hooks/useHideableNavbar.js +0 -74
  244. package/lib/theme/hooks/useKeyboardNavigation.js +0 -45
  245. package/lib/theme/hooks/useLocationHash.js +0 -28
  246. package/lib/theme/hooks/useLockBodyScroll.js +0 -26
  247. package/lib/theme/hooks/usePrismTheme.js +0 -36
  248. package/lib/theme/hooks/useTabGroupChoice.js +0 -51
  249. package/lib/theme/hooks/useTheme.js +0 -97
  250. package/lib/theme/hooks/useThemeContext.js +0 -31
  251. package/lib/theme/hooks/useUserPreferencesContext.js +0 -31
  252. package/lib/theme/hooks/useWindowSize.js +0 -68
  253. package/lib/theme/prism-include-languages.js +0 -40
  254. package/lib-next/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  255. package/lib-next/__tests__/translations.test.js +0 -128
  256. package/lib-next/__tests__/validateThemeConfig.test.js +0 -607
  257. package/lib-next/admonitions.css +0 -35
  258. package/lib-next/deps.d.ts +0 -13
  259. package/lib-next/index.js +0 -227
  260. package/lib-next/prism-include-languages.js +0 -9
  261. package/lib-next/theme/ThemeContext.js +0 -9
  262. package/lib-next/theme/ThemeProvider/index.js +0 -28
  263. package/lib-next/theme/UserPreferencesProvider/index.js +0 -27
  264. package/lib-next/theme/hooks/useDocs.js +0 -10
  265. package/lib-next/theme/hooks/useHideableNavbar.js +0 -66
  266. package/lib-next/theme/hooks/useKeyboardNavigation.js +0 -35
  267. package/lib-next/theme/hooks/useLocationHash.js +0 -20
  268. package/lib-next/theme/hooks/useLockBodyScroll.js +0 -18
  269. package/lib-next/theme/hooks/usePrismTheme.js +0 -20
  270. package/lib-next/theme/hooks/useTabGroupChoice.js +0 -39
  271. package/lib-next/theme/hooks/useTheme.js +0 -81
  272. package/lib-next/theme/hooks/useThemeContext.js +0 -22
  273. package/lib-next/theme/hooks/useUserPreferencesContext.js +0 -22
  274. package/lib-next/theme/hooks/useWindowSize.js +0 -59
  275. package/lib-next/theme-classic.d.ts +0 -806
  276. package/lib-next/translations.js +0 -141
  277. package/lib-next/types.d.ts +0 -11
  278. package/lib-next/validateThemeConfig.js +0 -344
  279. package/src/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  280. package/src/__tests__/translations.test.ts +0 -116
  281. package/src/__tests__/validateThemeConfig.test.js +0 -607
  282. package/src/theme/Tabs/__tests__/index.test.tsx +0 -129
  283. package/src/theme/ThemeContext.ts +0 -15
  284. package/src/theme/ThemeProvider/index.tsx +0 -28
  285. package/src/theme/UserPreferencesContext.ts +0 -12
  286. package/src/theme/UserPreferencesProvider/index.tsx +0 -30
  287. package/src/theme/hooks/styles.css +0 -10
  288. package/src/theme/hooks/useDocs.ts +0 -11
  289. package/src/theme/hooks/useHideableNavbar.ts +0 -72
  290. package/src/theme/hooks/useKeyboardNavigation.ts +0 -39
  291. package/src/theme/hooks/useLocationHash.ts +0 -25
  292. package/src/theme/hooks/useLockBodyScroll.ts +0 -20
  293. package/src/theme/hooks/usePrismTheme.ts +0 -22
  294. package/src/theme/hooks/useTabGroupChoice.ts +0 -46
  295. package/src/theme/hooks/useTheme.ts +0 -91
  296. package/src/theme/hooks/useThemeContext.ts +0 -23
  297. package/src/theme/hooks/useUserPreferencesContext.ts +0 -25
  298. package/src/theme/hooks/useWindowSize.ts +0 -69
  299. package/tsconfig.json +0 -11
package/lib-next/index.js DELETED
@@ -1,227 +0,0 @@
1
- /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
- import {getTranslationFiles, translateThemeConfig} from './translations';
8
- import path from 'path';
9
- import {createRequire} from 'module';
10
- import rtlcss from 'rtlcss';
11
- import {readDefaultCodeTranslationMessages} from '@docusaurus/theme-translations';
12
- const requireFromDocusaurusCore = createRequire(
13
- require.resolve('@docusaurus/core/package.json'),
14
- );
15
- const ContextReplacementPlugin = requireFromDocusaurusCore(
16
- 'webpack/lib/ContextReplacementPlugin',
17
- ); // Need to be inlined to prevent dark mode FOUC
18
- // Make sure that the 'storageKey' is the same as the one in `/theme/hooks/useTheme.js`
19
-
20
- const ThemeStorageKey = 'theme';
21
-
22
- const noFlashColorMode = ({
23
- defaultMode,
24
- respectPrefersColorScheme,
25
- }) => `(function() {
26
- var defaultMode = '${defaultMode}';
27
- var respectPrefersColorScheme = ${respectPrefersColorScheme};
28
-
29
- function setDataThemeAttribute(theme) {
30
- document.documentElement.setAttribute('data-theme', theme);
31
- }
32
-
33
- function getStoredTheme() {
34
- var theme = null;
35
- try {
36
- theme = localStorage.getItem('${ThemeStorageKey}');
37
- } catch (err) {}
38
- return theme;
39
- }
40
-
41
- var storedTheme = getStoredTheme();
42
- if (storedTheme !== null) {
43
- setDataThemeAttribute(storedTheme);
44
- } else {
45
- if (
46
- respectPrefersColorScheme &&
47
- window.matchMedia('(prefers-color-scheme: dark)').matches
48
- ) {
49
- setDataThemeAttribute('dark');
50
- } else if (
51
- respectPrefersColorScheme &&
52
- window.matchMedia('(prefers-color-scheme: light)').matches
53
- ) {
54
- setDataThemeAttribute('light');
55
- } else {
56
- setDataThemeAttribute(defaultMode === 'dark' ? 'dark' : 'light');
57
- }
58
- }
59
- })();`; // Duplicated constant. Unfortunately we can't import it from theme-common, as we need to support older nodejs versions without ESM support
60
- // TODO: import from theme-common once we only support Node.js with ESM support
61
- // + move all those announcementBar stuff there too
62
-
63
- export const AnnouncementBarDismissStorageKey =
64
- 'docusaurus.announcement.dismiss';
65
- const AnnouncementBarDismissDataAttribute =
66
- 'data-announcement-bar-initially-dismissed'; // We always render the announcement bar html on the server, to prevent layout shifts on React hydration
67
- // The theme can use CSS + the data attribute to hide the announcement bar asap (before React hydration)
68
-
69
- const AnnouncementBarInlineJavaScript = `
70
- (function() {
71
- function isDismissed() {
72
- try {
73
- return localStorage.getItem('${AnnouncementBarDismissStorageKey}') === 'true';
74
- } catch (err) {}
75
- return false;
76
- }
77
- document.documentElement.setAttribute('${AnnouncementBarDismissDataAttribute}', isDismissed());
78
- })();`;
79
-
80
- function getInfimaCSSFile(direction) {
81
- return `infima/dist/css/default/default${
82
- direction === 'rtl' ? '-rtl' : ''
83
- }.css`;
84
- }
85
-
86
- export default function docusaurusThemeClassic(
87
- context, // TODO: LoadContext is missing some of properties
88
- options,
89
- ) {
90
- const {
91
- siteConfig: {themeConfig: roughlyTypedThemeConfig},
92
- i18n: {currentLocale, localeConfigs},
93
- } = context;
94
- const themeConfig = roughlyTypedThemeConfig || {};
95
- const {
96
- announcementBar,
97
- colorMode,
98
- prism: {additionalLanguages = []} = {},
99
- } = themeConfig;
100
- const {customCss} = options || {};
101
- const {direction} = localeConfigs[currentLocale];
102
- return {
103
- name: 'docusaurus-theme-classic',
104
-
105
- /*
106
- Does not seem needed: webpack can already hot reload theme files
107
- getPathsToWatch() {
108
- return [
109
- path.join(__dirname, '..', 'lib'),
110
- path.join(__dirname, '..', 'lib-next'),
111
- ];
112
- },
113
- */
114
- getThemePath() {
115
- return path.join(__dirname, '..', 'lib-next', 'theme');
116
- },
117
-
118
- getTypeScriptThemePath() {
119
- return path.resolve(__dirname, '..', 'src', 'theme');
120
- },
121
-
122
- getTranslationFiles: async () =>
123
- getTranslationFiles({
124
- themeConfig,
125
- }),
126
- translateThemeConfig: (params) =>
127
- translateThemeConfig({
128
- themeConfig: params.themeConfig,
129
- translationFiles: params.translationFiles,
130
- }),
131
-
132
- getDefaultCodeTranslationMessages() {
133
- return readDefaultCodeTranslationMessages({
134
- locale: currentLocale,
135
- name: 'theme-common',
136
- });
137
- },
138
-
139
- getClientModules() {
140
- const modules = [
141
- require.resolve(getInfimaCSSFile(direction)),
142
- path.resolve(__dirname, './prism-include-languages'),
143
- path.resolve(__dirname, './admonitions.css'),
144
- ];
145
-
146
- if (customCss) {
147
- if (Array.isArray(customCss)) {
148
- modules.push(...customCss);
149
- } else {
150
- modules.push(customCss);
151
- }
152
- }
153
-
154
- return modules;
155
- },
156
-
157
- configureWebpack() {
158
- const prismLanguages = additionalLanguages
159
- .map((lang) => `prism-${lang}`)
160
- .join('|');
161
- return {
162
- ignoreWarnings: [
163
- // See https://github.com/facebook/docusaurus/pull/3382
164
- (e) => e.message.includes("Can't resolve '@theme-init/hooks/useDocs"),
165
- ],
166
- plugins: [
167
- new ContextReplacementPlugin(
168
- /prismjs[\\/]components$/,
169
- new RegExp(`^./(${prismLanguages})$`),
170
- ),
171
- ],
172
- };
173
- },
174
-
175
- configurePostCss(postCssOptions) {
176
- if (direction === 'rtl') {
177
- const resolvedInfimaFile = require.resolve(getInfimaCSSFile(direction));
178
-
179
- const plugin = {
180
- postcssPlugin: 'RtlCssPlugin',
181
- prepare: (result) => {
182
- const file = result.root?.source?.input?.file; // Skip Infima as we are using the its RTL version.
183
-
184
- if (file === resolvedInfimaFile) {
185
- return {};
186
- }
187
-
188
- return rtlcss(result.root);
189
- },
190
- };
191
- postCssOptions.plugins.push(plugin);
192
- }
193
-
194
- return postCssOptions;
195
- },
196
-
197
- injectHtmlTags() {
198
- return {
199
- preBodyTags: [
200
- {
201
- tagName: 'script',
202
- innerHTML: `
203
- ${noFlashColorMode(colorMode)}
204
- ${announcementBar ? AnnouncementBarInlineJavaScript : ''}
205
- `,
206
- },
207
- ],
208
- };
209
- },
210
- };
211
- }
212
- const swizzleAllowedComponents = [
213
- 'CodeBlock',
214
- 'DocSidebar',
215
- 'Footer',
216
- 'NotFound',
217
- 'SearchBar',
218
- 'IconArrow',
219
- 'IconEdit',
220
- 'IconMenu',
221
- 'hooks/useTheme',
222
- 'prism-include-languages',
223
- ];
224
- export function getSwizzleComponentList() {
225
- return swizzleAllowedComponents;
226
- }
227
- export {validateThemeConfig} from './validateThemeConfig';
@@ -1,9 +0,0 @@
1
- /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
- import Prism from 'prism-react-renderer/prism';
8
- import prismIncludeLanguages from '@theme/prism-include-languages';
9
- prismIncludeLanguages(Prism);
@@ -1,9 +0,0 @@
1
- /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
- import React from 'react';
8
- const ThemeContext = React.createContext(undefined);
9
- export default ThemeContext;
@@ -1,28 +0,0 @@
1
- /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
- import React, {useMemo} from 'react';
8
- import useTheme from '@theme/hooks/useTheme';
9
- import ThemeContext from '@theme/ThemeContext';
10
-
11
- function ThemeProvider(props) {
12
- const {isDarkTheme, setLightTheme, setDarkTheme} = useTheme();
13
- const contextValue = useMemo(
14
- () => ({
15
- isDarkTheme,
16
- setLightTheme,
17
- setDarkTheme,
18
- }),
19
- [isDarkTheme, setLightTheme, setDarkTheme],
20
- );
21
- return (
22
- <ThemeContext.Provider value={contextValue}>
23
- {props.children}
24
- </ThemeContext.Provider>
25
- );
26
- }
27
-
28
- export default ThemeProvider;
@@ -1,27 +0,0 @@
1
- /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
- import React, {useMemo} from 'react';
8
- import useTabGroupChoice from '@theme/hooks/useTabGroupChoice';
9
- import UserPreferencesContext from '@theme/UserPreferencesContext';
10
-
11
- function UserPreferencesProvider(props) {
12
- const {tabGroupChoices, setTabGroupChoices} = useTabGroupChoice();
13
- const contextValue = useMemo(
14
- () => ({
15
- tabGroupChoices,
16
- setTabGroupChoices,
17
- }),
18
- [tabGroupChoices, setTabGroupChoices],
19
- );
20
- return (
21
- <UserPreferencesContext.Provider value={contextValue}>
22
- {props.children}
23
- </UserPreferencesContext.Provider>
24
- );
25
- }
26
-
27
- export default UserPreferencesProvider;
@@ -1,10 +0,0 @@
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
- // Re-expose useDocs
8
- // Ensure it's always statically available even if user is not using the docs plugin
9
- // Problem reported for the blog-only mode: https://github.com/facebook/docusaurus/issues/3360
10
- export * from '@docusaurus/plugin-content-docs/lib/theme/hooks/useDocs';
@@ -1,66 +0,0 @@
1
- /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
- import {useState, useCallback, useRef} from 'react';
8
- import {useLocationChange, useScrollPosition} from '@docusaurus/theme-common';
9
-
10
- const useHideableNavbar = (hideOnScroll) => {
11
- const [isNavbarVisible, setIsNavbarVisible] = useState(hideOnScroll);
12
- const isFocusedAnchor = useRef(false);
13
- const navbarHeight = useRef(0);
14
- const navbarRef = useCallback((node) => {
15
- if (node !== null) {
16
- navbarHeight.current = node.getBoundingClientRect().height;
17
- }
18
- }, []);
19
- useScrollPosition((currentPosition, lastPosition) => {
20
- if (!hideOnScroll) {
21
- return;
22
- }
23
-
24
- const scrollTop = currentPosition.scrollY; // It needed for mostly to handle rubber band scrolling
25
-
26
- if (scrollTop < navbarHeight.current) {
27
- setIsNavbarVisible(true);
28
- return;
29
- }
30
-
31
- if (isFocusedAnchor.current) {
32
- isFocusedAnchor.current = false;
33
- return;
34
- }
35
-
36
- const lastScrollTop = lastPosition?.scrollY;
37
- const documentHeight =
38
- document.documentElement.scrollHeight - navbarHeight.current;
39
- const windowHeight = window.innerHeight;
40
-
41
- if (lastScrollTop && scrollTop >= lastScrollTop) {
42
- setIsNavbarVisible(false);
43
- } else if (scrollTop + windowHeight < documentHeight) {
44
- setIsNavbarVisible(true);
45
- }
46
- });
47
- useLocationChange((locationChangeEvent) => {
48
- if (!hideOnScroll) {
49
- return;
50
- }
51
-
52
- if (locationChangeEvent.location.hash) {
53
- isFocusedAnchor.current = true;
54
- setIsNavbarVisible(false);
55
- return;
56
- }
57
-
58
- setIsNavbarVisible(true);
59
- });
60
- return {
61
- navbarRef,
62
- isNavbarVisible,
63
- };
64
- };
65
-
66
- export default useHideableNavbar;
@@ -1,35 +0,0 @@
1
- /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
- import {useEffect} from 'react';
8
- import './styles.css'; // This hook detect keyboard focus indicator to not show outline for mouse users
9
- // Inspired by https://hackernoon.com/removing-that-ugly-focus-ring-and-keeping-it-too-6c8727fefcd2
10
-
11
- function useKeyboardNavigation() {
12
- useEffect(() => {
13
- const keyboardFocusedClassName = 'navigation-with-keyboard';
14
-
15
- function handleOutlineStyles(e) {
16
- if (e.type === 'keydown' && e.key === 'Tab') {
17
- document.body.classList.add(keyboardFocusedClassName);
18
- }
19
-
20
- if (e.type === 'mousedown') {
21
- document.body.classList.remove(keyboardFocusedClassName);
22
- }
23
- }
24
-
25
- document.addEventListener('keydown', handleOutlineStyles);
26
- document.addEventListener('mousedown', handleOutlineStyles);
27
- return () => {
28
- document.body.classList.remove(keyboardFocusedClassName);
29
- document.removeEventListener('keydown', handleOutlineStyles);
30
- document.removeEventListener('mousedown', handleOutlineStyles);
31
- };
32
- }, []);
33
- }
34
-
35
- export default useKeyboardNavigation;
@@ -1,20 +0,0 @@
1
- /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
- import {useState, useEffect} from 'react';
8
-
9
- function useLocationHash(initialHash) {
10
- const [hash, setHash] = useState(initialHash);
11
- useEffect(() => {
12
- const handleHashChange = () => setHash(window.location.hash);
13
-
14
- window.addEventListener('hashchange', handleHashChange);
15
- return () => window.removeEventListener('hashchange', handleHashChange);
16
- }, []);
17
- return [hash, setHash];
18
- }
19
-
20
- export default useLocationHash;
@@ -1,18 +0,0 @@
1
- /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
- import {useEffect} from 'react';
8
-
9
- function useLockBodyScroll(lock = true) {
10
- useEffect(() => {
11
- document.body.style.overflow = lock ? 'hidden' : 'visible';
12
- return () => {
13
- document.body.style.overflow = 'visible';
14
- };
15
- }, [lock]);
16
- }
17
-
18
- export default useLockBodyScroll;
@@ -1,20 +0,0 @@
1
- /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
- import defaultTheme from 'prism-react-renderer/themes/palenight';
8
- import useThemeContext from '@theme/hooks/useThemeContext';
9
- import {useThemeConfig} from '@docusaurus/theme-common';
10
-
11
- const usePrismTheme = () => {
12
- const {prism} = useThemeConfig();
13
- const {isDarkTheme} = useThemeContext();
14
- const lightModeTheme = prism.theme || defaultTheme;
15
- const darkModeTheme = prism.darkTheme || lightModeTheme;
16
- const prismTheme = isDarkTheme ? darkModeTheme : lightModeTheme;
17
- return prismTheme;
18
- };
19
-
20
- export default usePrismTheme;
@@ -1,39 +0,0 @@
1
- /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
- import {useState, useCallback, useEffect} from 'react';
8
- import {createStorageSlot, listStorageKeys} from '@docusaurus/theme-common';
9
- const TAB_CHOICE_PREFIX = 'docusaurus.tab.';
10
-
11
- const useTabGroupChoice = () => {
12
- const [tabGroupChoices, setChoices] = useState({});
13
- const setChoiceSyncWithLocalStorage = useCallback((groupId, newChoice) => {
14
- createStorageSlot(`${TAB_CHOICE_PREFIX}${groupId}`).set(newChoice);
15
- }, []);
16
- useEffect(() => {
17
- try {
18
- const localStorageChoices = {};
19
- listStorageKeys().forEach((storageKey) => {
20
- if (storageKey.startsWith(TAB_CHOICE_PREFIX)) {
21
- const groupId = storageKey.substring(TAB_CHOICE_PREFIX.length);
22
- localStorageChoices[groupId] = createStorageSlot(storageKey).get();
23
- }
24
- });
25
- setChoices(localStorageChoices);
26
- } catch (err) {
27
- console.error(err);
28
- }
29
- }, []);
30
- return {
31
- tabGroupChoices,
32
- setTabGroupChoices: (groupId, newChoice) => {
33
- setChoices((oldChoices) => ({...oldChoices, [groupId]: newChoice}));
34
- setChoiceSyncWithLocalStorage(groupId, newChoice);
35
- },
36
- };
37
- };
38
-
39
- export default useTabGroupChoice;
@@ -1,81 +0,0 @@
1
- /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
- import {useState, useCallback, useEffect} from 'react';
8
- import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment';
9
- import {useThemeConfig, createStorageSlot} from '@docusaurus/theme-common';
10
- const ThemeStorage = createStorageSlot('theme');
11
- const themes = {
12
- light: 'light',
13
- dark: 'dark',
14
- };
15
-
16
- // Ensure to always return a valid theme even if input is invalid
17
- const coerceToTheme = (theme) =>
18
- theme === themes.dark ? themes.dark : themes.light;
19
-
20
- const getInitialTheme = (defaultMode) => {
21
- if (!ExecutionEnvironment.canUseDOM) {
22
- return coerceToTheme(defaultMode);
23
- }
24
-
25
- return coerceToTheme(document.documentElement.getAttribute('data-theme'));
26
- };
27
-
28
- const storeTheme = (newTheme) => {
29
- createStorageSlot('theme').set(coerceToTheme(newTheme));
30
- };
31
-
32
- const useTheme = () => {
33
- const {
34
- colorMode: {defaultMode, disableSwitch, respectPrefersColorScheme},
35
- } = useThemeConfig();
36
- const [theme, setTheme] = useState(getInitialTheme(defaultMode));
37
- const setLightTheme = useCallback(() => {
38
- setTheme(themes.light);
39
- storeTheme(themes.light);
40
- }, []);
41
- const setDarkTheme = useCallback(() => {
42
- setTheme(themes.dark);
43
- storeTheme(themes.dark);
44
- }, []);
45
- useEffect(() => {
46
- document.documentElement.setAttribute('data-theme', coerceToTheme(theme));
47
- }, [theme]);
48
- useEffect(() => {
49
- if (disableSwitch) {
50
- return;
51
- }
52
-
53
- try {
54
- const storedTheme = ThemeStorage.get();
55
-
56
- if (storedTheme !== null) {
57
- setTheme(coerceToTheme(storedTheme));
58
- }
59
- } catch (err) {
60
- console.error(err);
61
- }
62
- }, [disableSwitch, setTheme]);
63
- useEffect(() => {
64
- if (disableSwitch && !respectPrefersColorScheme) {
65
- return;
66
- }
67
-
68
- window
69
- .matchMedia('(prefers-color-scheme: dark)')
70
- .addListener(({matches}) => {
71
- setTheme(matches ? themes.dark : themes.light);
72
- });
73
- }, [disableSwitch, respectPrefersColorScheme]);
74
- return {
75
- isDarkTheme: theme === themes.dark,
76
- setLightTheme,
77
- setDarkTheme,
78
- };
79
- };
80
-
81
- export default useTheme;
@@ -1,22 +0,0 @@
1
- /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
- import {useContext} from 'react';
8
- import ThemeContext from '@theme/ThemeContext';
9
-
10
- function useThemeContext() {
11
- const context = useContext(ThemeContext);
12
-
13
- if (context == null) {
14
- throw new Error(
15
- '"useThemeContext" is used outside of "Layout" component. Please see https://docusaurus.io/docs/api/themes/configuration#usethemecontext.',
16
- );
17
- }
18
-
19
- return context;
20
- }
21
-
22
- export default useThemeContext;
@@ -1,22 +0,0 @@
1
- /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
- import {useContext} from 'react';
8
- import UserPreferencesContext from '@theme/UserPreferencesContext';
9
-
10
- function useUserPreferencesContext() {
11
- const context = useContext(UserPreferencesContext);
12
-
13
- if (context == null) {
14
- throw new Error(
15
- '"useUserPreferencesContext" is used outside of "Layout" component.',
16
- );
17
- }
18
-
19
- return context;
20
- }
21
-
22
- export default useUserPreferencesContext;