@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
@@ -1,141 +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 {keyBy, chain} from 'lodash';
8
- import {mergeTranslations} from '@docusaurus/utils';
9
-
10
- function getNavbarTranslationFile(navbar) {
11
- // TODO handle properly all the navbar item types here!
12
- function flattenNavbarItems(items) {
13
- const subItems = items.flatMap((item) => {
14
- const allSubItems = [item.items ?? []].flat();
15
- return flattenNavbarItems(allSubItems);
16
- });
17
- return [...items, ...subItems];
18
- }
19
-
20
- const allNavbarItems = flattenNavbarItems(navbar.items);
21
- const navbarItemsTranslations = chain(
22
- allNavbarItems.filter((navbarItem) => !!navbarItem.label),
23
- )
24
- .keyBy((navbarItem) => `item.label.${navbarItem.label}`)
25
- .mapValues((navbarItem) => ({
26
- message: navbarItem.label,
27
- description: `Navbar item with label ${navbarItem.label}`,
28
- }))
29
- .value();
30
- const titleTranslations = navbar.title
31
- ? {
32
- title: {
33
- message: navbar.title,
34
- description: 'The title in the navbar',
35
- },
36
- }
37
- : {};
38
- return mergeTranslations([titleTranslations, navbarItemsTranslations]);
39
- }
40
-
41
- function translateNavbar(navbar, navbarTranslations) {
42
- return {
43
- ...navbar,
44
- title: navbarTranslations.title?.message ?? navbar.title,
45
- // TODO handle properly all the navbar item types here!
46
- items: navbar.items.map((item) => {
47
- const subItems = item.items?.map((subItem) => ({
48
- ...subItem,
49
- label:
50
- navbarTranslations[`item.label.${subItem.label}`]?.message ??
51
- subItem.label,
52
- }));
53
- return {
54
- ...item,
55
- label:
56
- navbarTranslations[`item.label.${item.label}`]?.message ?? item.label,
57
- ...(subItems
58
- ? {
59
- items: subItems,
60
- }
61
- : undefined),
62
- };
63
- }),
64
- };
65
- }
66
-
67
- function getFooterTranslationFile(footer) {
68
- // TODO POC code
69
- const footerLinkTitles = chain(footer.links.filter((link) => !!link.title))
70
- .keyBy((link) => `link.title.${link.title}`)
71
- .mapValues((link) => ({
72
- message: link.title,
73
- description: `The title of the footer links column with title=${link.title} in the footer`,
74
- }))
75
- .value();
76
- const footerLinkLabels = chain(
77
- footer.links.flatMap((link) => link.items).filter((link) => !!link.label),
78
- )
79
- .keyBy((linkItem) => `link.item.label.${linkItem.label}`)
80
- .mapValues((linkItem) => ({
81
- message: linkItem.label,
82
- description: `The label of footer link with label=${
83
- linkItem.label
84
- } linking to ${linkItem.to ?? linkItem.href}`,
85
- }))
86
- .value();
87
- const copyright = footer.copyright
88
- ? {
89
- copyright: {
90
- message: footer.copyright,
91
- description: 'The footer copyright',
92
- },
93
- }
94
- : {};
95
- return mergeTranslations([footerLinkTitles, footerLinkLabels, copyright]);
96
- }
97
-
98
- function translateFooter(footer, footerTranslations) {
99
- const links = footer.links.map((link) => ({
100
- ...link,
101
- title:
102
- footerTranslations[`link.title.${link.title}`]?.message ?? link.title,
103
- items: link.items.map((linkItem) => ({
104
- ...linkItem,
105
- label:
106
- footerTranslations[`link.item.label.${linkItem.label}`]?.message ??
107
- linkItem.label,
108
- })),
109
- }));
110
- const copyright = footerTranslations.copyright?.message ?? footer.copyright;
111
- return {...footer, links, copyright};
112
- }
113
-
114
- export function getTranslationFiles({themeConfig}) {
115
- const translationFiles = [
116
- {
117
- path: 'navbar',
118
- content: getNavbarTranslationFile(themeConfig.navbar),
119
- },
120
- themeConfig.footer
121
- ? {
122
- path: 'footer',
123
- content: getFooterTranslationFile(themeConfig.footer),
124
- }
125
- : undefined,
126
- ];
127
- return translationFiles.filter(Boolean);
128
- }
129
- export function translateThemeConfig({themeConfig, translationFiles}) {
130
- const translationFilesMap = keyBy(translationFiles, (f) => f.path);
131
- return {
132
- ...themeConfig,
133
- navbar: translateNavbar(
134
- themeConfig.navbar,
135
- translationFilesMap.navbar.content,
136
- ),
137
- footer: themeConfig.footer
138
- ? translateFooter(themeConfig.footer, translationFilesMap.footer.content)
139
- : undefined,
140
- };
141
- }
@@ -1,11 +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
-
8
- /// <reference types="@docusaurus/module-type-aliases" />
9
- /// <reference types="@docusaurus/plugin-content-blog" />
10
- /// <reference types="@docusaurus/plugin-content-docs" />
11
- /// <reference types="@docusaurus/plugin-content-pages" />
@@ -1,344 +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 {Joi, URISchema} from '@docusaurus/utils-validation';
8
- const DEFAULT_DOCS_CONFIG = {
9
- versionPersistence: 'localStorage',
10
- };
11
- const DocsSchema = Joi.object({
12
- versionPersistence: Joi.string()
13
- .equal('localStorage', 'none')
14
- .default(DEFAULT_DOCS_CONFIG.versionPersistence),
15
- }).default(DEFAULT_DOCS_CONFIG);
16
- const DEFAULT_COLOR_MODE_CONFIG = {
17
- defaultMode: 'light',
18
- disableSwitch: false,
19
- respectPrefersColorScheme: false,
20
- switchConfig: {
21
- darkIcon: '🌜',
22
- darkIconStyle: {},
23
- lightIcon: '🌞',
24
- lightIconStyle: {},
25
- },
26
- };
27
- const DEFAULT_CONFIG = {
28
- colorMode: DEFAULT_COLOR_MODE_CONFIG,
29
- docs: DEFAULT_DOCS_CONFIG,
30
- metadata: [],
31
- prism: {
32
- additionalLanguages: [],
33
- },
34
- navbar: {
35
- hideOnScroll: false,
36
- items: [],
37
- },
38
- hideableSidebar: false,
39
- tableOfContents: {
40
- minHeadingLevel: 2,
41
- maxHeadingLevel: 3,
42
- },
43
- };
44
- const NavbarItemPosition = Joi.string().equal('left', 'right').default('left');
45
- const NavbarItemBaseSchema = Joi.object({
46
- label: Joi.string(),
47
- className: Joi.string(),
48
- }) // We allow any unknown attributes on the links
49
- // (users may need additional attributes like target, aria-role, data-customAttribute...)
50
- .unknown();
51
- const DefaultNavbarItemSchema = NavbarItemBaseSchema.append({
52
- to: Joi.string(),
53
- href: URISchema,
54
- activeBasePath: Joi.string(),
55
- activeBaseRegex: Joi.string(),
56
- prependBaseUrlToHref: Joi.bool(),
57
- // This is only triggered in case of a nested dropdown
58
- items: Joi.forbidden().messages({
59
- 'any.unknown': 'Nested dropdowns are not allowed',
60
- }),
61
- })
62
- .xor('href', 'to')
63
- .messages({
64
- 'object.xor': 'One and only one between "to" and "href" should be provided',
65
- });
66
- const DocsVersionNavbarItemSchema = NavbarItemBaseSchema.append({
67
- type: Joi.string().equal('docsVersion').required(),
68
- to: Joi.string(),
69
- docsPluginId: Joi.string(),
70
- });
71
- const DocItemSchema = NavbarItemBaseSchema.append({
72
- type: Joi.string().equal('doc').required(),
73
- docId: Joi.string().required(),
74
- docsPluginId: Joi.string(),
75
- });
76
-
77
- const itemWithType = (type) => {
78
- // because equal(undefined) is not supported :/
79
- const typeSchema = type
80
- ? Joi.string().required().equal(type)
81
- : Joi.string().forbidden();
82
- return Joi.object({
83
- type: typeSchema,
84
- })
85
- .unknown()
86
- .required();
87
- };
88
-
89
- const DropdownSubitemSchema = Joi.object({
90
- position: Joi.forbidden(),
91
- }).when('.', {
92
- switch: [
93
- {
94
- is: itemWithType('docsVersion'),
95
- then: DocsVersionNavbarItemSchema,
96
- },
97
- {
98
- is: itemWithType('doc'),
99
- then: DocItemSchema,
100
- },
101
- {
102
- is: itemWithType(undefined),
103
- then: DefaultNavbarItemSchema,
104
- },
105
- {
106
- is: Joi.alternatives().try(
107
- itemWithType('dropdown'),
108
- itemWithType('docsVersionDropdown'),
109
- itemWithType('localeDropdown'),
110
- itemWithType('search'),
111
- ),
112
- then: Joi.forbidden().messages({
113
- 'any.unknown': 'Nested dropdowns are not allowed',
114
- }),
115
- },
116
- ],
117
- otherwise: Joi.forbidden().messages({
118
- 'any.unknown': 'Bad navbar item type {.type}',
119
- }),
120
- });
121
- const DropdownNavbarItemSchema = NavbarItemBaseSchema.append({
122
- items: Joi.array().items(DropdownSubitemSchema).required(),
123
- });
124
- const DocsVersionDropdownNavbarItemSchema = NavbarItemBaseSchema.append({
125
- type: Joi.string().equal('docsVersionDropdown').required(),
126
- docsPluginId: Joi.string(),
127
- dropdownActiveClassDisabled: Joi.boolean(),
128
- dropdownItemsBefore: Joi.array().items(DropdownSubitemSchema).default([]),
129
- dropdownItemsAfter: Joi.array().items(DropdownSubitemSchema).default([]),
130
- });
131
- const LocaleDropdownNavbarItemSchema = NavbarItemBaseSchema.append({
132
- type: Joi.string().equal('localeDropdown').required(),
133
- dropdownItemsBefore: Joi.array().items(DropdownSubitemSchema).default([]),
134
- dropdownItemsAfter: Joi.array().items(DropdownSubitemSchema).default([]),
135
- });
136
- const SearchItemSchema = Joi.object({
137
- type: Joi.string().equal('search').required(),
138
- });
139
- const NavbarItemSchema = Joi.object({
140
- position: NavbarItemPosition,
141
- }).when('.', {
142
- switch: [
143
- {
144
- is: itemWithType('docsVersion'),
145
- then: DocsVersionNavbarItemSchema,
146
- },
147
- {
148
- is: itemWithType('dropdown'),
149
- then: DropdownNavbarItemSchema,
150
- },
151
- {
152
- is: itemWithType('docsVersionDropdown'),
153
- then: DocsVersionDropdownNavbarItemSchema,
154
- },
155
- {
156
- is: itemWithType('doc'),
157
- then: DocItemSchema,
158
- },
159
- {
160
- is: itemWithType('localeDropdown'),
161
- then: LocaleDropdownNavbarItemSchema,
162
- },
163
- {
164
- is: itemWithType('search'),
165
- then: SearchItemSchema,
166
- },
167
- {
168
- is: itemWithType(undefined),
169
- then: Joi.object().when('.', {
170
- // Dropdown item can be specified without type field
171
- is: Joi.object({
172
- items: Joi.array().required(),
173
- }).unknown(),
174
- then: DropdownNavbarItemSchema,
175
- otherwise: DefaultNavbarItemSchema,
176
- }),
177
- },
178
- ],
179
- otherwise: Joi.forbidden().messages({
180
- 'any.unknown': 'Bad navbar item type {.type}',
181
- }),
182
- });
183
- const ColorModeSchema = Joi.object({
184
- defaultMode: Joi.string()
185
- .equal('dark', 'light')
186
- .default(DEFAULT_COLOR_MODE_CONFIG.defaultMode),
187
- disableSwitch: Joi.bool().default(DEFAULT_COLOR_MODE_CONFIG.disableSwitch),
188
- respectPrefersColorScheme: Joi.bool().default(
189
- DEFAULT_COLOR_MODE_CONFIG.respectPrefersColorScheme,
190
- ),
191
- switchConfig: Joi.object({
192
- darkIcon: Joi.string().default(
193
- DEFAULT_COLOR_MODE_CONFIG.switchConfig.darkIcon,
194
- ),
195
- darkIconStyle: Joi.object().default(
196
- DEFAULT_COLOR_MODE_CONFIG.switchConfig.darkIconStyle,
197
- ),
198
- lightIcon: Joi.string().default(
199
- DEFAULT_COLOR_MODE_CONFIG.switchConfig.lightIcon,
200
- ),
201
- lightIconStyle: Joi.object().default(
202
- DEFAULT_COLOR_MODE_CONFIG.switchConfig.lightIconStyle,
203
- ),
204
- }).default(DEFAULT_COLOR_MODE_CONFIG.switchConfig),
205
- }).default(DEFAULT_COLOR_MODE_CONFIG); // schema can probably be improved
206
-
207
- const HtmlMetadataSchema = Joi.object({
208
- id: Joi.string(),
209
- name: Joi.string(),
210
- property: Joi.string(),
211
- content: Joi.string(),
212
- itemprop: Joi.string(),
213
- }).unknown();
214
- const FooterLinkItemSchema = Joi.object({
215
- to: Joi.string(),
216
- href: URISchema,
217
- html: Joi.string(),
218
- label: Joi.string(),
219
- })
220
- .xor('to', 'href', 'html')
221
- .with('to', 'label')
222
- .with('href', 'label')
223
- .nand('html', 'label') // We allow any unknown attributes on the links
224
- // (users may need additional attributes like target, aria-role, data-customAttribute...)
225
- .unknown();
226
- const CustomCssSchema = Joi.alternatives()
227
- .try(Joi.array().items(Joi.string().required()), Joi.string().required())
228
- .optional();
229
- const ThemeConfigSchema = Joi.object({
230
- // TODO temporary (@alpha-58)
231
- disableDarkMode: Joi.any().forbidden().messages({
232
- 'any.unknown':
233
- 'disableDarkMode theme config is deprecated. Please use the new colorMode attribute. You likely want: config.themeConfig.colorMode.disableSwitch = true',
234
- }),
235
- // TODO temporary (@alpha-58)
236
- defaultDarkMode: Joi.any().forbidden().messages({
237
- 'any.unknown':
238
- 'defaultDarkMode theme config is deprecated. Please use the new colorMode attribute. You likely want: config.themeConfig.colorMode.defaultMode = "dark"',
239
- }),
240
- customCss: CustomCssSchema,
241
- colorMode: ColorModeSchema,
242
- image: Joi.string(),
243
- docs: DocsSchema,
244
- metadata: Joi.array()
245
- .items(HtmlMetadataSchema)
246
- .default(DEFAULT_CONFIG.metadata),
247
- metadatas: Joi.any().forbidden().messages({
248
- 'any.unknown':
249
- 'themeConfig.metadatas has been renamed as themeConfig.metadata. See https://github.com/facebook/docusaurus/pull/5871',
250
- }),
251
- announcementBar: Joi.object({
252
- id: Joi.string().default('announcement-bar'),
253
- content: Joi.string().required(),
254
- backgroundColor: Joi.string(),
255
- textColor: Joi.string(),
256
- isCloseable: Joi.bool().default(true),
257
- }).optional(),
258
- navbar: Joi.object({
259
- style: Joi.string().equal('dark', 'primary'),
260
- hideOnScroll: Joi.bool().default(DEFAULT_CONFIG.navbar.hideOnScroll),
261
- // TODO temporary (@alpha-58)
262
- links: Joi.any().forbidden().messages({
263
- 'any.unknown':
264
- 'themeConfig.navbar.links has been renamed as themeConfig.navbar.items',
265
- }),
266
- items: Joi.array()
267
- .items(NavbarItemSchema)
268
- .default(DEFAULT_CONFIG.navbar.items),
269
- title: Joi.string().allow('', null),
270
- logo: Joi.object({
271
- alt: Joi.string().allow(''),
272
- src: Joi.string().required(),
273
- srcDark: Joi.string(),
274
- width: Joi.alternatives().try(Joi.string(), Joi.number()),
275
- height: Joi.alternatives().try(Joi.string(), Joi.number()),
276
- href: Joi.string(),
277
- target: Joi.string(),
278
- }),
279
- }).default(DEFAULT_CONFIG.navbar),
280
- footer: Joi.object({
281
- style: Joi.string().equal('dark', 'light').default('light'),
282
- logo: Joi.object({
283
- alt: Joi.string().allow(''),
284
- src: Joi.string(),
285
- srcDark: Joi.string(),
286
- // TODO infer this from reading the image
287
- width: Joi.alternatives().try(Joi.string(), Joi.number()),
288
- height: Joi.alternatives().try(Joi.string(), Joi.number()),
289
- href: Joi.string(),
290
- }),
291
- copyright: Joi.string(),
292
- links: Joi.array()
293
- .items(
294
- Joi.object({
295
- title: Joi.string().allow(null),
296
- items: Joi.array().items(FooterLinkItemSchema).default([]),
297
- }),
298
- )
299
- .default([]),
300
- }).optional(),
301
- prism: Joi.object({
302
- theme: Joi.object({
303
- plain: Joi.alternatives().try(Joi.array(), Joi.object()).required(),
304
- styles: Joi.alternatives().try(Joi.array(), Joi.object()).required(),
305
- }),
306
- darkTheme: Joi.object({
307
- plain: Joi.alternatives().try(Joi.array(), Joi.object()).required(),
308
- styles: Joi.alternatives().try(Joi.array(), Joi.object()).required(),
309
- }),
310
- defaultLanguage: Joi.string(),
311
- additionalLanguages: Joi.array()
312
- .items(Joi.string())
313
- .default(DEFAULT_CONFIG.prism.additionalLanguages),
314
- })
315
- .default(DEFAULT_CONFIG.prism)
316
- .unknown(),
317
- hideableSidebar: Joi.bool().default(DEFAULT_CONFIG.hideableSidebar),
318
- sidebarCollapsible: Joi.forbidden().messages({
319
- 'any.unknown':
320
- 'The themeConfig.sidebarCollapsible has been moved to docs plugin options. See: https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-docs',
321
- }),
322
- tableOfContents: Joi.object({
323
- minHeadingLevel: Joi.number()
324
- .default(DEFAULT_CONFIG.tableOfContents.minHeadingLevel)
325
- .when('maxHeadingLevel', {
326
- is: Joi.exist(),
327
- then: Joi.number()
328
- .integer()
329
- .min(2)
330
- .max(6)
331
- .max(Joi.ref('maxHeadingLevel')),
332
- otherwise: Joi.number().integer().min(2).max(6),
333
- }),
334
- maxHeadingLevel: Joi.number()
335
- .integer()
336
- .min(2)
337
- .max(6)
338
- .default(DEFAULT_CONFIG.tableOfContents.maxHeadingLevel),
339
- }).default(DEFAULT_CONFIG.tableOfContents),
340
- });
341
- export {DEFAULT_CONFIG, ThemeConfigSchema};
342
- export function validateThemeConfig({validate, themeConfig}) {
343
- return validate(ThemeConfigSchema, themeConfig);
344
- }
@@ -1,116 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`getTranslationFiles should return translation files matching snapshot 1`] = `
4
- Array [
5
- Object {
6
- "content": Object {
7
- "item.label.Dropdown": Object {
8
- "description": "Navbar item with label Dropdown",
9
- "message": "Dropdown",
10
- },
11
- "item.label.Dropdown item 1": Object {
12
- "description": "Navbar item with label Dropdown item 1",
13
- "message": "Dropdown item 1",
14
- },
15
- "item.label.Dropdown item 2": Object {
16
- "description": "Navbar item with label Dropdown item 2",
17
- "message": "Dropdown item 2",
18
- },
19
- "title": Object {
20
- "description": "The title in the navbar",
21
- "message": "navbar title",
22
- },
23
- },
24
- "path": "navbar",
25
- },
26
- Object {
27
- "content": Object {
28
- "copyright": Object {
29
- "description": "The footer copyright",
30
- "message": "Copyright FB",
31
- },
32
- "link.item.label.Link 1": Object {
33
- "description": "The label of footer link with label=Link 1 linking to https://facebook.com",
34
- "message": "Link 1",
35
- },
36
- "link.item.label.Link 2": Object {
37
- "description": "The label of footer link with label=Link 2 linking to https://facebook.com",
38
- "message": "Link 2",
39
- },
40
- "link.item.label.Link 3": Object {
41
- "description": "The label of footer link with label=Link 3 linking to https://facebook.com",
42
- "message": "Link 3",
43
- },
44
- "link.title.Footer link column 1": Object {
45
- "description": "The title of the footer links column with title=Footer link column 1 in the footer",
46
- "message": "Footer link column 1",
47
- },
48
- "link.title.Footer link column 2": Object {
49
- "description": "The title of the footer links column with title=Footer link column 2 in the footer",
50
- "message": "Footer link column 2",
51
- },
52
- },
53
- "path": "footer",
54
- },
55
- ]
56
- `;
57
-
58
- exports[`translateThemeConfig should return translated themeConfig matching snapshot 1`] = `
59
- Object {
60
- "announcementBar": Object {},
61
- "colorMode": Object {},
62
- "docs": Object {
63
- "versionPersistence": "none",
64
- },
65
- "footer": Object {
66
- "copyright": "Copyright FB (translated)",
67
- "links": Array [
68
- Object {
69
- "items": Array [
70
- Object {
71
- "label": "Link 1 (translated)",
72
- "to": "https://facebook.com",
73
- },
74
- Object {
75
- "label": "Link 2 (translated)",
76
- "to": "https://facebook.com",
77
- },
78
- ],
79
- "title": "Footer link column 1 (translated)",
80
- },
81
- Object {
82
- "items": Array [
83
- Object {
84
- "label": "Link 3 (translated)",
85
- "to": "https://facebook.com",
86
- },
87
- ],
88
- "title": "Footer link column 2 (translated)",
89
- },
90
- ],
91
- "style": "light",
92
- },
93
- "hideableSidebar": true,
94
- "navbar": Object {
95
- "hideOnScroll": false,
96
- "items": Array [
97
- Object {
98
- "items": Array [
99
- Object {
100
- "items": Array [],
101
- "label": "Dropdown item 1 (translated)",
102
- },
103
- Object {
104
- "items": Array [],
105
- "label": "Dropdown item 2 (translated)",
106
- },
107
- ],
108
- "label": "Dropdown (translated)",
109
- },
110
- ],
111
- "style": "dark",
112
- "title": "navbar title (translated)",
113
- },
114
- "prism": Object {},
115
- }
116
- `;