@docusaurus/theme-classic 2.0.0-beta.1decd6f80 → 2.0.0-beta.20

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 (552) hide show
  1. package/README.md +2 -2
  2. package/lib/admonitions.css +39 -0
  3. package/lib/deps.d.ts +13 -0
  4. package/lib/getSwizzleConfig.js +243 -0
  5. package/lib/index.js +65 -54
  6. package/lib/nprogress.css +41 -0
  7. package/lib/nprogress.js +46 -0
  8. package/lib/prism-include-languages.js +9 -5
  9. package/lib/theme-classic.d.ts +1279 -0
  10. package/lib/translations.js +52 -36
  11. package/lib/validateThemeConfig.js +298 -248
  12. package/lib-next/theme/Admonition/index.js +101 -0
  13. package/lib-next/theme/AnnouncementBar/index.js +10 -22
  14. package/lib-next/theme/AnnouncementBar/styles.module.css +26 -35
  15. package/lib-next/theme/BackToTopButton/index.js +33 -0
  16. package/lib-next/theme/BackToTopButton/styles.module.css +44 -0
  17. package/lib-next/theme/BlogArchivePage/index.js +84 -0
  18. package/lib-next/theme/BlogLayout/index.js +33 -0
  19. package/lib-next/theme/BlogListPage/index.js +45 -35
  20. package/lib-next/theme/BlogListPaginator/index.js +27 -33
  21. package/lib-next/theme/BlogPostAuthor/index.js +49 -0
  22. package/lib-next/theme/BlogPostAuthors/index.js +44 -0
  23. package/lib-next/theme/BlogPostAuthors/styles.module.css +21 -0
  24. package/lib-next/theme/BlogPostItem/index.js +112 -97
  25. package/lib-next/theme/BlogPostItem/styles.module.css +14 -1
  26. package/lib-next/theme/BlogPostPage/index.js +84 -41
  27. package/lib-next/theme/BlogPostPaginator/index.js +28 -38
  28. package/lib-next/theme/BlogSidebar/Desktop/index.js +41 -0
  29. package/{lib/theme/BlogSidebar → lib-next/theme/BlogSidebar/Desktop}/styles.module.css +8 -9
  30. package/lib-next/theme/BlogSidebar/Mobile/index.js +36 -0
  31. package/lib-next/theme/BlogSidebar/index.js +11 -24
  32. package/lib-next/theme/BlogTagsListPage/index.js +24 -71
  33. package/lib-next/theme/BlogTagsPostsPage/index.js +55 -62
  34. package/lib-next/theme/CodeBlock/Container/index.js +29 -0
  35. package/lib-next/theme/CodeBlock/Container/styles.module.css +14 -0
  36. package/lib-next/theme/CodeBlock/Content/Element.js +23 -0
  37. package/lib-next/theme/CodeBlock/Content/String.js +104 -0
  38. package/{src/theme/CodeBlock → lib-next/theme/CodeBlock/Content}/styles.module.css +47 -32
  39. package/lib-next/theme/CodeBlock/CopyButton/index.js +61 -0
  40. package/lib-next/theme/CodeBlock/CopyButton/styles.module.css +47 -0
  41. package/lib-next/theme/CodeBlock/Line/index.js +49 -0
  42. package/lib-next/theme/CodeBlock/Line/styles.module.css +51 -0
  43. package/lib-next/theme/CodeBlock/WordWrapButton/index.js +40 -0
  44. package/lib-next/theme/CodeBlock/WordWrapButton/styles.module.css +15 -0
  45. package/lib-next/theme/CodeBlock/index.js +28 -255
  46. package/lib-next/theme/ColorModeToggle/index.js +62 -0
  47. package/lib-next/theme/ColorModeToggle/styles.module.css +35 -0
  48. package/lib-next/theme/Details/index.js +21 -0
  49. package/lib-next/theme/Details/styles.module.css +13 -0
  50. package/lib-next/theme/DocBreadcrumbs/index.js +120 -0
  51. package/{lib/theme/Heading/styles.css → lib-next/theme/DocBreadcrumbs/styles.module.css} +9 -13
  52. package/lib-next/theme/DocCard/index.js +93 -0
  53. package/lib-next/theme/DocCard/styles.module.css +34 -0
  54. package/lib-next/theme/DocCardList/index.js +33 -0
  55. package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +75 -0
  56. package/lib-next/theme/DocCategoryGeneratedIndexPage/styles.module.css +26 -0
  57. package/lib-next/theme/DocItem/index.js +99 -86
  58. package/lib-next/theme/DocItem/styles.module.css +12 -12
  59. package/lib-next/theme/DocItemFooter/index.js +79 -0
  60. package/{lib/theme/Layout/styles.css → lib-next/theme/DocItemFooter/styles.module.css} +8 -11
  61. package/lib-next/theme/DocPage/Layout/Main/index.js +29 -0
  62. package/lib-next/theme/DocPage/Layout/Main/styles.module.css +28 -0
  63. package/lib-next/theme/DocPage/Layout/Sidebar/ExpandButton/index.js +34 -0
  64. package/lib-next/theme/DocPage/Layout/Sidebar/ExpandButton/styles.module.css +33 -0
  65. package/lib-next/theme/DocPage/Layout/Sidebar/index.js +68 -0
  66. package/lib-next/theme/DocPage/Layout/Sidebar/index.module.css +32 -0
  67. package/lib-next/theme/DocPage/Layout/index.js +34 -0
  68. package/{lib/theme/BlogPostItem/styles.module.css → lib-next/theme/DocPage/Layout/index.module.css} +5 -4
  69. package/lib-next/theme/DocPage/index.js +40 -133
  70. package/lib-next/theme/DocPaginator/index.js +29 -41
  71. package/lib-next/theme/DocSidebar/Desktop/CollapseButton/index.js +34 -0
  72. package/lib-next/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +46 -0
  73. package/lib-next/theme/DocSidebar/Desktop/Content/index.js +46 -0
  74. package/lib-next/theme/DocSidebar/Desktop/Content/styles.module.css +23 -0
  75. package/lib-next/theme/DocSidebar/Desktop/index.js +36 -0
  76. package/lib-next/theme/DocSidebar/Desktop/styles.module.css +50 -0
  77. package/lib-next/theme/DocSidebar/Mobile/index.js +49 -0
  78. package/lib-next/theme/DocSidebar/index.js +13 -333
  79. package/lib-next/theme/DocSidebarItem/Category.js +197 -0
  80. package/lib-next/theme/DocSidebarItem/Html.js +27 -0
  81. package/lib-next/theme/DocSidebarItem/Html.module.css +13 -0
  82. package/lib-next/theme/DocSidebarItem/Link.js +53 -0
  83. package/lib-next/theme/DocSidebarItem/Link.module.css +10 -0
  84. package/lib-next/theme/DocSidebarItem/index.js +23 -0
  85. package/lib-next/theme/DocSidebarItems/index.js +23 -0
  86. package/lib-next/theme/DocTagDocListPage/index.js +96 -0
  87. package/lib-next/theme/DocTagsListPage/index.js +40 -0
  88. package/lib-next/theme/DocVersionBadge/index.js +34 -0
  89. package/lib-next/theme/{DocVersionSuggestions → DocVersionBanner}/index.js +55 -37
  90. package/lib-next/theme/EditThisPage/index.js +6 -1
  91. package/lib-next/theme/ErrorPageContent.js +35 -0
  92. package/lib-next/theme/Footer/Copyright/index.js +18 -0
  93. package/lib-next/theme/Footer/Layout/index.js +26 -0
  94. package/lib-next/theme/Footer/LinkItem/index.js +33 -0
  95. package/lib-next/theme/Footer/Links/MultiColumn/index.js +47 -0
  96. package/lib-next/theme/Footer/Links/Simple/index.js +41 -0
  97. package/lib-next/theme/Footer/Links/index.js +17 -0
  98. package/lib-next/theme/Footer/Logo/index.js +38 -0
  99. package/lib-next/theme/Footer/{styles.module.css → Logo/styles.module.css} +2 -1
  100. package/lib-next/theme/Footer/index.js +12 -100
  101. package/lib-next/theme/Heading/index.js +31 -38
  102. package/lib-next/theme/Heading/styles.module.css +27 -2
  103. package/lib-next/theme/IconArrow/index.js +3 -6
  104. package/lib-next/theme/IconClose/index.js +23 -0
  105. package/lib-next/theme/IconDarkMode/index.js +17 -0
  106. package/lib-next/theme/IconEdit/index.js +5 -10
  107. package/lib-next/theme/IconExternalLink/index.js +23 -0
  108. package/lib-next/theme/{LastUpdated → IconExternalLink}/styles.module.css +2 -2
  109. package/lib-next/theme/IconHome/index.js +17 -0
  110. package/lib-next/theme/IconLanguage/index.js +5 -8
  111. package/lib-next/theme/IconLightMode/index.js +17 -0
  112. package/lib-next/theme/IconMenu/index.js +8 -9
  113. package/lib-next/theme/LastUpdated/index.js +36 -39
  114. package/lib-next/theme/Layout/index.js +19 -16
  115. package/lib-next/theme/Layout/styles.css +6 -0
  116. package/lib-next/theme/LayoutProviders/index.js +22 -10
  117. package/lib-next/theme/Logo/index.js +21 -16
  118. package/lib-next/theme/{ThemeContext.js → MDXComponents/A.js} +4 -2
  119. package/lib-next/theme/MDXComponents/Code.js +28 -0
  120. package/lib-next/theme/MDXComponents/Details.js +20 -0
  121. package/lib-next/theme/MDXComponents/Head.js +26 -0
  122. package/lib-next/theme/MDXComponents/Heading.js +11 -0
  123. package/lib-next/theme/MDXComponents/Img.js +24 -0
  124. package/{lib/theme/LastUpdated/styles.module.css → lib-next/theme/MDXComponents/Img.module.css} +2 -2
  125. package/lib-next/theme/MDXComponents/Pre.js +18 -0
  126. package/lib-next/theme/MDXComponents/Ul.js +21 -0
  127. package/lib-next/theme/MDXComponents/index.js +22 -42
  128. package/lib-next/theme/MDXContent/index.js +12 -0
  129. package/lib-next/theme/MDXPage/index.js +38 -39
  130. package/{lib/theme/IconEdit → lib-next/theme/MDXPage}/styles.module.css +2 -3
  131. package/lib-next/theme/Navbar/ColorModeToggle/index.js +25 -0
  132. package/lib-next/theme/Navbar/Content/index.js +75 -0
  133. package/lib-next/theme/Navbar/Content/styles.module.css +15 -0
  134. package/lib-next/theme/Navbar/Layout/index.js +54 -0
  135. package/{src/theme/Navbar → lib-next/theme/Navbar/Layout}/styles.module.css +1 -7
  136. package/lib-next/theme/Navbar/Logo/index.js +17 -0
  137. package/lib-next/theme/Navbar/MobileSidebar/Header/index.js +33 -0
  138. package/lib-next/theme/Navbar/MobileSidebar/Layout/index.js +28 -0
  139. package/lib-next/theme/Navbar/MobileSidebar/PrimaryMenu/index.js +33 -0
  140. package/lib-next/theme/Navbar/MobileSidebar/SecondaryMenu/index.js +36 -0
  141. package/lib-next/theme/Navbar/MobileSidebar/Toggle/index.js +23 -0
  142. package/lib-next/theme/Navbar/MobileSidebar/index.js +31 -0
  143. package/lib-next/theme/Navbar/Search/index.js +11 -0
  144. package/lib-next/theme/Navbar/Search/styles.module.css +20 -0
  145. package/lib-next/theme/Navbar/index.js +7 -137
  146. package/lib-next/theme/NavbarItem/ComponentTypes.js +27 -0
  147. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +33 -186
  148. package/lib-next/theme/NavbarItem/DocNavbarItem.js +14 -14
  149. package/lib-next/theme/NavbarItem/DocSidebarNavbarItem.js +41 -0
  150. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +55 -45
  151. package/lib-next/theme/NavbarItem/DocsVersionNavbarItem.js +2 -6
  152. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +167 -0
  153. package/lib-next/theme/NavbarItem/HtmlNavbarItem.js +30 -0
  154. package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +16 -22
  155. package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  156. package/lib-next/theme/NavbarItem/NavbarNavLink.js +84 -0
  157. package/lib-next/theme/NavbarItem/SearchNavbarItem.js +6 -1
  158. package/lib-next/theme/NavbarItem/index.js +18 -25
  159. package/lib-next/theme/NavbarItem/utils.js +10 -0
  160. package/lib-next/theme/NotFound.js +40 -34
  161. package/lib-next/theme/PaginatorNavLink/index.js +23 -0
  162. package/lib-next/theme/SearchBar.js +1 -1
  163. package/lib-next/theme/SearchMetadata/index.js +34 -0
  164. package/lib-next/theme/{LayoutHead → SiteMetadata}/index.js +31 -46
  165. package/lib-next/theme/SkipToContent/index.js +7 -32
  166. package/lib-next/theme/SkipToContent/styles.module.css +8 -3
  167. package/lib-next/theme/TOC/index.js +12 -39
  168. package/lib-next/theme/TOC/styles.module.css +2 -2
  169. package/lib-next/theme/TOCCollapsible/CollapseButton.js +29 -0
  170. package/lib-next/theme/TOCCollapsible/CollapseButton.module.css +29 -0
  171. package/lib-next/theme/TOCCollapsible/index.js +42 -0
  172. package/lib-next/theme/TOCCollapsible/index.module.css +31 -0
  173. package/lib-next/theme/TOCInline/index.js +10 -31
  174. package/lib-next/theme/TOCItems/Tree.js +40 -0
  175. package/lib-next/theme/TOCItems/index.js +54 -0
  176. package/lib-next/theme/TabItem/index.js +4 -5
  177. package/lib-next/theme/TabItem/styles.module.css +10 -0
  178. package/lib-next/theme/Tabs/__tests__/index.test.js +146 -0
  179. package/lib-next/theme/Tabs/index.js +111 -53
  180. package/lib-next/theme/Tabs/styles.module.css +4 -13
  181. package/lib-next/theme/Tag/index.js +23 -0
  182. package/lib-next/theme/Tag/styles.module.css +70 -0
  183. package/lib-next/theme/TagsListByLetter/index.js +40 -0
  184. package/lib-next/theme/TagsListByLetter/styles.module.css +11 -0
  185. package/lib-next/theme/TagsListInline/index.js +31 -0
  186. package/{lib/theme/Heading → lib-next/theme/TagsListInline}/styles.module.css +7 -2
  187. package/lib-next/theme/ThemedImage/index.js +10 -14
  188. package/lib-next/theme/ThemedImage/styles.module.css +9 -2
  189. package/lib-next/theme/prism-include-languages.js +17 -15
  190. package/package.json +37 -31
  191. package/src/admonitions.css +39 -0
  192. package/src/deps.d.ts +13 -0
  193. package/src/getSwizzleConfig.ts +252 -0
  194. package/src/index.ts +76 -75
  195. package/src/nprogress.css +41 -0
  196. package/src/nprogress.ts +31 -0
  197. package/{lib-next/prism-include-languages.js → src/prism-include-languages.ts} +0 -0
  198. package/src/theme/Admonition/index.tsx +106 -0
  199. package/src/theme/AnnouncementBar/index.tsx +11 -20
  200. package/src/theme/AnnouncementBar/styles.module.css +26 -35
  201. package/src/theme/BackToTopButton/index.tsx +34 -0
  202. package/src/theme/BackToTopButton/styles.module.css +44 -0
  203. package/src/theme/BlogArchivePage/index.tsx +92 -0
  204. package/src/theme/BlogLayout/index.tsx +38 -0
  205. package/src/theme/BlogListPage/index.tsx +45 -35
  206. package/src/theme/BlogListPaginator/index.tsx +27 -32
  207. package/src/theme/BlogPostAuthor/index.tsx +50 -0
  208. package/src/theme/BlogPostAuthors/index.tsx +49 -0
  209. package/src/theme/BlogPostAuthors/styles.module.css +21 -0
  210. package/src/theme/BlogPostItem/index.tsx +103 -93
  211. package/src/theme/BlogPostItem/styles.module.css +14 -1
  212. package/src/theme/BlogPostPage/index.tsx +84 -42
  213. package/src/theme/BlogPostPaginator/index.tsx +28 -37
  214. package/src/theme/BlogSidebar/Desktop/index.tsx +45 -0
  215. package/{lib-next/theme/BlogSidebar → src/theme/BlogSidebar/Desktop}/styles.module.css +8 -9
  216. package/src/theme/BlogSidebar/Mobile/index.tsx +38 -0
  217. package/src/theme/BlogSidebar/index.tsx +10 -24
  218. package/src/theme/BlogTagsListPage/index.tsx +24 -71
  219. package/src/theme/BlogTagsPostsPage/index.tsx +57 -65
  220. package/src/theme/CodeBlock/Container/index.tsx +35 -0
  221. package/src/theme/CodeBlock/Container/styles.module.css +14 -0
  222. package/src/theme/CodeBlock/Content/Element.tsx +30 -0
  223. package/src/theme/CodeBlock/Content/String.tsx +111 -0
  224. package/{lib/theme/CodeBlock → src/theme/CodeBlock/Content}/styles.module.css +47 -32
  225. package/src/theme/CodeBlock/CopyButton/index.tsx +67 -0
  226. package/src/theme/CodeBlock/CopyButton/styles.module.css +47 -0
  227. package/src/theme/CodeBlock/Line/index.tsx +48 -0
  228. package/src/theme/CodeBlock/Line/styles.module.css +51 -0
  229. package/src/theme/CodeBlock/WordWrapButton/index.tsx +49 -0
  230. package/src/theme/CodeBlock/WordWrapButton/styles.module.css +15 -0
  231. package/src/theme/CodeBlock/index.tsx +29 -252
  232. package/src/theme/ColorModeToggle/index.tsx +67 -0
  233. package/src/theme/ColorModeToggle/styles.module.css +35 -0
  234. package/src/theme/Details/index.tsx +25 -0
  235. package/src/theme/Details/styles.module.css +13 -0
  236. package/src/theme/DocBreadcrumbs/index.tsx +140 -0
  237. package/src/theme/{Heading/styles.css → DocBreadcrumbs/styles.module.css} +9 -13
  238. package/src/theme/DocCard/index.tsx +116 -0
  239. package/src/theme/DocCard/styles.module.css +34 -0
  240. package/src/theme/DocCardList/index.tsx +36 -0
  241. package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +86 -0
  242. package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +26 -0
  243. package/src/theme/DocItem/index.tsx +93 -79
  244. package/src/theme/DocItem/styles.module.css +12 -12
  245. package/src/theme/DocItemFooter/index.tsx +91 -0
  246. package/src/theme/DocItemFooter/styles.module.css +18 -0
  247. package/src/theme/DocPage/Layout/Main/index.tsx +37 -0
  248. package/src/theme/DocPage/Layout/Main/styles.module.css +28 -0
  249. package/src/theme/DocPage/Layout/Sidebar/ExpandButton/index.tsx +40 -0
  250. package/src/theme/DocPage/Layout/Sidebar/ExpandButton/styles.module.css +33 -0
  251. package/src/theme/DocPage/Layout/Sidebar/index.module.css +32 -0
  252. package/src/theme/DocPage/Layout/Sidebar/index.tsx +74 -0
  253. package/{lib-next/theme/hooks/styles.css → src/theme/DocPage/Layout/index.module.css} +7 -2
  254. package/src/theme/DocPage/Layout/index.tsx +39 -0
  255. package/src/theme/DocPage/index.tsx +40 -146
  256. package/src/theme/DocPaginator/index.tsx +29 -40
  257. package/src/theme/DocSidebar/Desktop/CollapseButton/index.tsx +38 -0
  258. package/src/theme/DocSidebar/Desktop/CollapseButton/styles.module.css +46 -0
  259. package/src/theme/DocSidebar/Desktop/Content/index.tsx +55 -0
  260. package/src/theme/DocSidebar/Desktop/Content/styles.module.css +23 -0
  261. package/src/theme/DocSidebar/Desktop/index.tsx +40 -0
  262. package/src/theme/DocSidebar/Desktop/styles.module.css +50 -0
  263. package/src/theme/DocSidebar/Mobile/index.tsx +54 -0
  264. package/src/theme/DocSidebar/index.tsx +14 -343
  265. package/src/theme/DocSidebarItem/Category.tsx +210 -0
  266. package/src/theme/DocSidebarItem/Html.module.css +13 -0
  267. package/src/theme/DocSidebarItem/Html.tsx +34 -0
  268. package/src/theme/DocSidebarItem/Link.module.css +10 -0
  269. package/src/theme/DocSidebarItem/Link.tsx +58 -0
  270. package/src/theme/DocSidebarItem/index.tsx +27 -0
  271. package/src/theme/DocSidebarItems/index.tsx +27 -0
  272. package/src/theme/DocTagDocListPage/index.tsx +96 -0
  273. package/src/theme/DocTagsListPage/index.tsx +44 -0
  274. package/src/theme/DocVersionBadge/index.tsx +35 -0
  275. package/src/theme/{DocVersionSuggestions → DocVersionBanner}/index.tsx +78 -49
  276. package/src/theme/EditThisPage/index.tsx +6 -1
  277. package/src/theme/ErrorPageContent.tsx +41 -0
  278. package/src/theme/Footer/Copyright/index.tsx +20 -0
  279. package/src/theme/Footer/Layout/index.tsx +34 -0
  280. package/src/theme/Footer/LinkItem/index.tsx +36 -0
  281. package/src/theme/Footer/Links/MultiColumn/index.tsx +51 -0
  282. package/src/theme/Footer/Links/Simple/index.tsx +42 -0
  283. package/src/theme/Footer/Links/index.tsx +21 -0
  284. package/src/theme/Footer/Logo/index.tsx +41 -0
  285. package/{lib/theme/Footer → src/theme/Footer/Logo}/styles.module.css +2 -1
  286. package/src/theme/Footer/index.tsx +13 -113
  287. package/src/theme/Heading/index.tsx +33 -39
  288. package/src/theme/Heading/styles.module.css +27 -2
  289. package/src/theme/IconArrow/index.tsx +3 -5
  290. package/src/theme/IconClose/index.tsx +26 -0
  291. package/src/theme/IconDarkMode/index.tsx +20 -0
  292. package/src/theme/IconEdit/index.tsx +8 -9
  293. package/src/theme/IconExternalLink/index.tsx +30 -0
  294. package/src/theme/IconExternalLink/styles.module.css +10 -0
  295. package/src/theme/IconHome/index.tsx +20 -0
  296. package/src/theme/IconLanguage/index.tsx +6 -8
  297. package/src/theme/IconLightMode/index.tsx +20 -0
  298. package/src/theme/IconMenu/index.tsx +4 -9
  299. package/src/theme/LastUpdated/index.tsx +36 -39
  300. package/src/theme/Layout/index.tsx +19 -15
  301. package/src/theme/Layout/styles.css +6 -0
  302. package/src/theme/LayoutProviders/index.tsx +22 -10
  303. package/src/theme/Logo/index.tsx +21 -15
  304. package/src/theme/{ThemeContext.ts → MDXComponents/A.tsx} +5 -6
  305. package/src/theme/MDXComponents/Code.tsx +37 -0
  306. package/src/theme/MDXComponents/Details.tsx +25 -0
  307. package/src/theme/MDXComponents/Head.tsx +29 -0
  308. package/src/theme/MDXComponents/Heading.tsx +14 -0
  309. package/src/theme/{LastUpdated/styles.module.css → MDXComponents/Img.module.css} +2 -2
  310. package/src/theme/MDXComponents/Img.tsx +26 -0
  311. package/src/theme/MDXComponents/Pre.tsx +22 -0
  312. package/src/theme/MDXComponents/Ul.tsx +24 -0
  313. package/src/theme/MDXComponents/index.tsx +23 -42
  314. package/src/theme/MDXContent/index.tsx +15 -0
  315. package/src/theme/MDXPage/index.tsx +39 -39
  316. package/src/theme/MDXPage/styles.module.css +10 -0
  317. package/src/theme/Navbar/ColorModeToggle/index.tsx +30 -0
  318. package/src/theme/Navbar/Content/index.tsx +86 -0
  319. package/src/theme/Navbar/Content/styles.module.css +15 -0
  320. package/src/theme/Navbar/Layout/index.tsx +57 -0
  321. package/{lib-next/theme/Navbar → src/theme/Navbar/Layout}/styles.module.css +1 -7
  322. package/src/theme/Navbar/Logo/index.tsx +19 -0
  323. package/src/theme/Navbar/MobileSidebar/Header/index.tsx +34 -0
  324. package/src/theme/Navbar/MobileSidebar/Layout/index.tsx +31 -0
  325. package/src/theme/Navbar/MobileSidebar/PrimaryMenu/index.tsx +38 -0
  326. package/src/theme/Navbar/MobileSidebar/SecondaryMenu/index.tsx +38 -0
  327. package/src/theme/Navbar/MobileSidebar/Toggle/index.tsx +25 -0
  328. package/src/theme/Navbar/MobileSidebar/index.tsx +33 -0
  329. package/src/theme/Navbar/Search/index.tsx +15 -0
  330. package/src/theme/Navbar/Search/styles.module.css +20 -0
  331. package/src/theme/Navbar/index.tsx +7 -147
  332. package/src/theme/NavbarItem/ComponentTypes.tsx +32 -0
  333. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +37 -194
  334. package/src/theme/NavbarItem/DocNavbarItem.tsx +17 -18
  335. package/src/theme/NavbarItem/DocSidebarNavbarItem.tsx +44 -0
  336. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +60 -51
  337. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +5 -8
  338. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +193 -0
  339. package/src/theme/NavbarItem/HtmlNavbarItem.tsx +32 -0
  340. package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +19 -17
  341. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  342. package/src/theme/NavbarItem/NavbarNavLink.tsx +80 -0
  343. package/src/theme/NavbarItem/SearchNavbarItem.tsx +6 -1
  344. package/src/theme/NavbarItem/index.tsx +23 -30
  345. package/src/theme/NavbarItem/utils.ts +13 -0
  346. package/src/theme/NotFound.tsx +40 -33
  347. package/src/theme/PaginatorNavLink/index.tsx +26 -0
  348. package/src/theme/SearchBar.tsx +2 -1
  349. package/src/theme/SearchMetadata/index.tsx +43 -0
  350. package/src/theme/{LayoutHead → SiteMetadata}/index.tsx +31 -40
  351. package/src/theme/SkipToContent/index.tsx +7 -32
  352. package/src/theme/SkipToContent/styles.module.css +8 -3
  353. package/src/theme/TOC/index.tsx +13 -44
  354. package/src/theme/TOC/styles.module.css +2 -2
  355. package/src/theme/TOCCollapsible/CollapseButton.module.css +29 -0
  356. package/src/theme/TOCCollapsible/CollapseButton.tsx +35 -0
  357. package/src/theme/TOCCollapsible/index.module.css +31 -0
  358. package/src/theme/TOCCollapsible/index.tsx +45 -0
  359. package/src/theme/TOCInline/index.tsx +14 -35
  360. package/src/theme/TOCItems/Tree.tsx +46 -0
  361. package/src/theme/TOCItems/index.tsx +61 -0
  362. package/src/theme/TabItem/index.tsx +12 -4
  363. package/src/theme/TabItem/styles.module.css +10 -0
  364. package/src/theme/Tabs/index.tsx +120 -62
  365. package/src/theme/Tabs/styles.module.css +4 -13
  366. package/src/theme/Tag/index.tsx +27 -0
  367. package/src/theme/Tag/styles.module.css +70 -0
  368. package/src/theme/TagsListByLetter/index.tsx +43 -0
  369. package/src/theme/TagsListByLetter/styles.module.css +11 -0
  370. package/src/theme/TagsListInline/index.tsx +35 -0
  371. package/src/theme/TagsListInline/styles.module.css +15 -0
  372. package/src/theme/ThemedImage/index.tsx +12 -13
  373. package/src/theme/ThemedImage/styles.module.css +9 -2
  374. package/src/theme/prism-include-languages.ts +20 -15
  375. package/src/theme-classic.d.ts +1279 -0
  376. package/src/translations.ts +84 -58
  377. package/src/validateThemeConfig.ts +448 -0
  378. package/babel.config.js +0 -35
  379. package/codeTranslations/README.md +0 -20
  380. package/codeTranslations/ar.json +0 -55
  381. package/codeTranslations/base.json +0 -108
  382. package/codeTranslations/da.json +0 -55
  383. package/codeTranslations/de.json +0 -55
  384. package/codeTranslations/es.json +0 -55
  385. package/codeTranslations/fa.json +0 -55
  386. package/codeTranslations/fil.json +0 -55
  387. package/codeTranslations/fr.json +0 -55
  388. package/codeTranslations/he.json +0 -55
  389. package/codeTranslations/hi.json +0 -55
  390. package/codeTranslations/ja.json +0 -55
  391. package/codeTranslations/ko.json +0 -55
  392. package/codeTranslations/pl.json +0 -55
  393. package/codeTranslations/pt-BR.json +0 -55
  394. package/codeTranslations/pt-PT.json +0 -55
  395. package/codeTranslations/ru.json +0 -55
  396. package/codeTranslations/tr.json +0 -55
  397. package/codeTranslations/vi.json +0 -55
  398. package/codeTranslations/zh-Hans.json +0 -55
  399. package/codeTranslations/zh-Hant.json +0 -55
  400. package/lib/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  401. package/lib/__tests__/translations.test.js +0 -112
  402. package/lib/__tests__/validateThemeConfig.test.js +0 -333
  403. package/lib/theme/AnnouncementBar/index.js +0 -74
  404. package/lib/theme/AnnouncementBar/styles.module.css +0 -72
  405. package/lib/theme/BlogListPage/index.js +0 -71
  406. package/lib/theme/BlogListPaginator/index.js +0 -63
  407. package/lib/theme/BlogPostItem/index.js +0 -152
  408. package/lib/theme/BlogPostPage/index.js +0 -75
  409. package/lib/theme/BlogPostPaginator/index.js +0 -64
  410. package/lib/theme/BlogSidebar/index.js +0 -43
  411. package/lib/theme/BlogTagsListPage/index.js +0 -81
  412. package/lib/theme/BlogTagsPostsPage/index.js +0 -104
  413. package/lib/theme/CodeBlock/index.js +0 -253
  414. package/lib/theme/DocItem/index.js +0 -120
  415. package/lib/theme/DocItem/styles.module.css +0 -28
  416. package/lib/theme/DocPage/index.js +0 -141
  417. package/lib/theme/DocPage/styles.module.css +0 -98
  418. package/lib/theme/DocPaginator/index.js +0 -63
  419. package/lib/theme/DocSidebar/index.js +0 -307
  420. package/lib/theme/DocSidebar/styles.module.css +0 -138
  421. package/lib/theme/DocVersionSuggestions/index.js +0 -111
  422. package/lib/theme/EditThisPage/index.js +0 -31
  423. package/lib/theme/Footer/index.js +0 -108
  424. package/lib/theme/Heading/index.js +0 -60
  425. package/lib/theme/IconArrow/index.js +0 -28
  426. package/lib/theme/IconEdit/index.js +0 -34
  427. package/lib/theme/IconLanguage/index.js +0 -29
  428. package/lib/theme/IconMenu/index.js +0 -31
  429. package/lib/theme/LastUpdated/index.js +0 -65
  430. package/lib/theme/Layout/index.js +0 -64
  431. package/lib/theme/LayoutHead/index.js +0 -142
  432. package/lib/theme/LayoutProviders/index.js +0 -34
  433. package/lib/theme/Logo/index.js +0 -59
  434. package/lib/theme/MDXComponents/index.js +0 -65
  435. package/lib/theme/MDXPage/index.js +0 -68
  436. package/lib/theme/Navbar/index.js +0 -147
  437. package/lib/theme/Navbar/styles.module.css +0 -20
  438. package/lib/theme/NavbarItem/DefaultNavbarItem.js +0 -195
  439. package/lib/theme/NavbarItem/DocNavbarItem.js +0 -55
  440. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +0 -75
  441. package/lib/theme/NavbarItem/DocsVersionNavbarItem.js +0 -43
  442. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem.js +0 -72
  443. package/lib/theme/NavbarItem/SearchNavbarItem.js +0 -28
  444. package/lib/theme/NavbarItem/index.js +0 -54
  445. package/lib/theme/NotFound.js +0 -50
  446. package/lib/theme/SearchBar.js +0 -15
  447. package/lib/theme/SearchMetadatas/index.js +0 -33
  448. package/lib/theme/Seo/index.js +0 -50
  449. package/lib/theme/SkipToContent/index.js +0 -61
  450. package/lib/theme/SkipToContent/styles.module.css +0 -16
  451. package/lib/theme/TOC/index.js +0 -59
  452. package/lib/theme/TOC/styles.module.css +0 -23
  453. package/lib/theme/TOCInline/index.js +0 -53
  454. package/lib/theme/TOCInline/styles.module.css +0 -12
  455. package/lib/theme/TabItem/index.js +0 -32
  456. package/lib/theme/Tabs/index.js +0 -150
  457. package/lib/theme/Tabs/styles.module.css +0 -23
  458. package/lib/theme/ThemeContext.js +0 -21
  459. package/lib/theme/ThemeProvider/index.js +0 -38
  460. package/lib/theme/ThemedImage/index.js +0 -48
  461. package/lib/theme/ThemedImage/styles.module.css +0 -11
  462. package/lib/theme/Toggle/index.js +0 -106
  463. package/lib/theme/Toggle/styles.module.css +0 -114
  464. package/lib/theme/UserPreferencesContext.js +0 -18
  465. package/lib/theme/UserPreferencesProvider/index.js +0 -44
  466. package/lib/theme/hooks/styles.css +0 -10
  467. package/lib/theme/hooks/useAnnouncementBar.js +0 -63
  468. package/lib/theme/hooks/useContextualSearchFilters.js +0 -47
  469. package/lib/theme/hooks/useDocs.js +0 -18
  470. package/lib/theme/hooks/useHideableNavbar.js +0 -92
  471. package/lib/theme/hooks/useKeyboardNavigation.js +0 -45
  472. package/lib/theme/hooks/useLocationHash.js +0 -28
  473. package/lib/theme/hooks/useLockBodyScroll.js +0 -26
  474. package/lib/theme/hooks/usePrismTheme.js +0 -36
  475. package/lib/theme/hooks/useScrollPosition.js +0 -49
  476. package/lib/theme/hooks/useTOCHighlight.js +0 -87
  477. package/lib/theme/hooks/useTabGroupChoice.js +0 -53
  478. package/lib/theme/hooks/useTheme.js +0 -99
  479. package/lib/theme/hooks/useThemeContext.js +0 -31
  480. package/lib/theme/hooks/useUserPreferencesContext.js +0 -31
  481. package/lib/theme/hooks/useWindowSize.js +0 -55
  482. package/lib/theme/prism-include-languages.js +0 -39
  483. package/lib/types.d.ts +0 -600
  484. package/lib-next/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  485. package/lib-next/__tests__/translations.test.js +0 -128
  486. package/lib-next/__tests__/validateThemeConfig.test.js +0 -333
  487. package/lib-next/index.js +0 -198
  488. package/lib-next/theme/CodeBlock/styles.module.css +0 -71
  489. package/lib-next/theme/DocPage/styles.module.css +0 -98
  490. package/lib-next/theme/DocSidebar/styles.module.css +0 -138
  491. package/lib-next/theme/Heading/styles.css +0 -23
  492. package/lib-next/theme/SearchMetadatas/index.js +0 -20
  493. package/lib-next/theme/Seo/index.js +0 -37
  494. package/lib-next/theme/ThemeProvider/index.js +0 -25
  495. package/lib-next/theme/Toggle/index.js +0 -95
  496. package/lib-next/theme/Toggle/styles.module.css +0 -114
  497. package/lib-next/theme/UserPreferencesContext.js +0 -9
  498. package/lib-next/theme/UserPreferencesProvider/index.js +0 -28
  499. package/lib-next/theme/hooks/useAnnouncementBar.js +0 -49
  500. package/lib-next/theme/hooks/useContextualSearchFilters.js +0 -41
  501. package/lib-next/theme/hooks/useDocs.js +0 -10
  502. package/lib-next/theme/hooks/useHideableNavbar.js +0 -79
  503. package/lib-next/theme/hooks/useKeyboardNavigation.js +0 -35
  504. package/lib-next/theme/hooks/useLocationHash.js +0 -20
  505. package/lib-next/theme/hooks/useLockBodyScroll.js +0 -18
  506. package/lib-next/theme/hooks/usePrismTheme.js +0 -20
  507. package/lib-next/theme/hooks/useScrollPosition.js +0 -38
  508. package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
  509. package/lib-next/theme/hooks/useTabGroupChoice.js +0 -41
  510. package/lib-next/theme/hooks/useTheme.js +0 -82
  511. package/lib-next/theme/hooks/useThemeContext.js +0 -22
  512. package/lib-next/theme/hooks/useUserPreferencesContext.js +0 -22
  513. package/lib-next/theme/hooks/useWindowSize.js +0 -45
  514. package/lib-next/translations.js +0 -145
  515. package/lib-next/types.d.ts +0 -600
  516. package/lib-next/validateThemeConfig.js +0 -317
  517. package/src/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  518. package/src/__tests__/translations.test.ts +0 -116
  519. package/src/__tests__/validateThemeConfig.test.js +0 -333
  520. package/src/prism-include-languages.js +0 -11
  521. package/src/theme/BlogSidebar/styles.module.css +0 -46
  522. package/src/theme/DocPage/styles.module.css +0 -98
  523. package/src/theme/DocSidebar/styles.module.css +0 -138
  524. package/src/theme/Footer/styles.module.css +0 -15
  525. package/src/theme/SearchMetadatas/index.tsx +0 -28
  526. package/src/theme/Seo/index.tsx +0 -47
  527. package/src/theme/ThemeProvider/index.tsx +0 -24
  528. package/src/theme/Toggle/index.tsx +0 -113
  529. package/src/theme/Toggle/styles.module.css +0 -114
  530. package/src/theme/UserPreferencesContext.ts +0 -12
  531. package/src/theme/UserPreferencesProvider/index.tsx +0 -32
  532. package/src/theme/hooks/styles.css +0 -10
  533. package/src/theme/hooks/useAnnouncementBar.ts +0 -58
  534. package/src/theme/hooks/useContextualSearchFilters.ts +0 -52
  535. package/src/theme/hooks/useDocs.ts +0 -11
  536. package/src/theme/hooks/useHideableNavbar.ts +0 -85
  537. package/src/theme/hooks/useKeyboardNavigation.ts +0 -39
  538. package/src/theme/hooks/useLocationHash.ts +0 -25
  539. package/src/theme/hooks/useLockBodyScroll.ts +0 -20
  540. package/src/theme/hooks/usePrismTheme.ts +0 -22
  541. package/src/theme/hooks/useScrollPosition.ts +0 -45
  542. package/src/theme/hooks/useTOCHighlight.ts +0 -98
  543. package/src/theme/hooks/useTabGroupChoice.ts +0 -46
  544. package/src/theme/hooks/useTheme.ts +0 -92
  545. package/src/theme/hooks/useThemeContext.ts +0 -23
  546. package/src/theme/hooks/useUserPreferencesContext.ts +0 -25
  547. package/src/theme/hooks/useWindowSize.ts +0 -51
  548. package/src/types.d.ts +0 -600
  549. package/src/validateThemeConfig.js +0 -317
  550. package/tsconfig.json +0 -12
  551. package/update-code-translations.js +0 -239
  552. package/update-code-translations.test.js +0 -33
@@ -5,40 +5,42 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- import {TranslationFile, TranslationFileContent} from '@docusaurus/types';
9
- import {
8
+ import type {TranslationFile, TranslationFileContent} from '@docusaurus/types';
9
+ import type {
10
10
  ThemeConfig,
11
11
  Navbar,
12
12
  NavbarItem,
13
13
  Footer,
14
+ MultiColumnFooter,
15
+ SimpleFooter,
14
16
  } from '@docusaurus/theme-common';
15
17
 
16
- import {keyBy, chain, flatten} from 'lodash';
18
+ import _ from 'lodash';
17
19
  import {mergeTranslations} from '@docusaurus/utils';
18
20
 
19
21
  function getNavbarTranslationFile(navbar: Navbar): TranslationFileContent {
20
22
  // TODO handle properly all the navbar item types here!
21
23
  function flattenNavbarItems(items: NavbarItem[]): NavbarItem[] {
22
- const subItems = flatten(
23
- items.map((item) => {
24
- const allSubItems = flatten([item.items ?? []]);
25
- return flattenNavbarItems(allSubItems);
26
- }),
27
- );
24
+ const subItems = items.flatMap((item) => {
25
+ const allSubItems = [item.items ?? []].flat();
26
+ return flattenNavbarItems(allSubItems);
27
+ });
28
28
  return [...items, ...subItems];
29
29
  }
30
30
 
31
31
  const allNavbarItems = flattenNavbarItems(navbar.items);
32
32
 
33
- const navbarItemsTranslations: TranslationFileContent = chain(
34
- allNavbarItems.filter((navbarItem) => !!navbarItem.label),
35
- )
36
- .keyBy((navbarItem) => `item.label.${navbarItem.label}`)
37
- .mapValues((navbarItem) => ({
38
- message: navbarItem.label!,
39
- description: `Navbar item with label ${navbarItem.label}`,
40
- }))
41
- .value();
33
+ const navbarItemsTranslations: TranslationFileContent = Object.fromEntries(
34
+ allNavbarItems
35
+ .filter((navbarItem) => navbarItem.label)
36
+ .map((navbarItem) => [
37
+ `item.label.${navbarItem.label}`,
38
+ {
39
+ message: navbarItem.label!,
40
+ description: `Navbar item with label ${navbarItem.label}`,
41
+ },
42
+ ]),
43
+ );
42
44
 
43
45
  const titleTranslations: TranslationFileContent = navbar.title
44
46
  ? {title: {message: navbar.title, description: 'The title in the navbar'}}
@@ -48,8 +50,11 @@ function getNavbarTranslationFile(navbar: Navbar): TranslationFileContent {
48
50
  }
49
51
  function translateNavbar(
50
52
  navbar: Navbar,
51
- navbarTranslations: TranslationFileContent,
53
+ navbarTranslations: TranslationFileContent | undefined,
52
54
  ): Navbar {
55
+ if (!navbarTranslations) {
56
+ return navbar;
57
+ }
53
58
  return {
54
59
  ...navbar,
55
60
  title: navbarTranslations.title?.message ?? navbar.title,
@@ -71,31 +76,40 @@ function translateNavbar(
71
76
  };
72
77
  }
73
78
 
79
+ function isMultiColumnFooterLinks(
80
+ links: MultiColumnFooter['links'] | SimpleFooter['links'],
81
+ ): links is MultiColumnFooter['links'] {
82
+ return links.length > 0 && 'title' in links[0]!;
83
+ }
84
+
74
85
  function getFooterTranslationFile(footer: Footer): TranslationFileContent {
75
- // TODO POC code
76
- const footerLinkTitles: TranslationFileContent = chain(
77
- footer.links.filter((link) => !!link.title),
78
- )
79
- .keyBy((link) => `link.title.${link.title}`)
80
- .mapValues((link) => ({
81
- message: link.title!,
82
- description: `The title of the footer links column with title=${link.title} in the footer`,
83
- }))
84
- .value();
85
-
86
- const footerLinkLabels: TranslationFileContent = chain(
87
- flatten(footer.links.map((link) => link.items)).filter(
88
- (link) => !!link.label,
89
- ),
90
- )
91
- .keyBy((linkItem) => `link.item.label.${linkItem.label}`)
92
- .mapValues((linkItem) => ({
93
- message: linkItem.label!,
94
- description: `The label of footer link with label=${
95
- linkItem.label
96
- } linking to ${linkItem.to ?? linkItem.href}`,
97
- }))
98
- .value();
86
+ const footerLinkTitles: TranslationFileContent = Object.fromEntries(
87
+ (isMultiColumnFooterLinks(footer.links)
88
+ ? footer.links.filter((link) => link.title)
89
+ : []
90
+ ).map((link) => [
91
+ `link.title.${link.title}`,
92
+ {
93
+ message: link.title!,
94
+ description: `The title of the footer links column with title=${link.title} in the footer`,
95
+ },
96
+ ]),
97
+ );
98
+
99
+ const footerLinkLabels: TranslationFileContent = Object.fromEntries(
100
+ (isMultiColumnFooterLinks(footer.links)
101
+ ? footer.links.flatMap((link) => link.items).filter((link) => link.label)
102
+ : footer.links.filter((link) => link.label)
103
+ ).map((link) => [
104
+ `link.item.label.${link.label}`,
105
+ {
106
+ message: link.label!,
107
+ description: `The label of footer link with label=${
108
+ link.label
109
+ } linking to ${link.to ?? link.href}`,
110
+ },
111
+ ]),
112
+ );
99
113
 
100
114
  const copyright: TranslationFileContent = footer.copyright
101
115
  ? {
@@ -110,19 +124,29 @@ function getFooterTranslationFile(footer: Footer): TranslationFileContent {
110
124
  }
111
125
  function translateFooter(
112
126
  footer: Footer,
113
- footerTranslations: TranslationFileContent,
127
+ footerTranslations: TranslationFileContent | undefined,
114
128
  ): Footer {
115
- const links = footer.links.map((link) => ({
116
- ...link,
117
- title:
118
- footerTranslations[`link.title.${link.title}`]?.message ?? link.title,
119
- items: link.items.map((linkItem) => ({
120
- ...linkItem,
121
- label:
122
- footerTranslations[`link.item.label.${linkItem.label}`]?.message ??
123
- linkItem.label,
124
- })),
125
- }));
129
+ if (!footerTranslations) {
130
+ return footer;
131
+ }
132
+ const links = isMultiColumnFooterLinks(footer.links)
133
+ ? footer.links.map((link) => ({
134
+ ...link,
135
+ title:
136
+ footerTranslations[`link.title.${link.title}`]?.message ?? link.title,
137
+ items: link.items.map((linkItem) => ({
138
+ ...linkItem,
139
+ label:
140
+ footerTranslations[`link.item.label.${linkItem.label}`]?.message ??
141
+ linkItem.label,
142
+ })),
143
+ }))
144
+ : footer.links.map((link) => ({
145
+ ...link,
146
+ label:
147
+ footerTranslations[`link.item.label.${link.label}`]?.message ??
148
+ link.label,
149
+ }));
126
150
 
127
151
  const copyright = footerTranslations.copyright?.message ?? footer.copyright;
128
152
 
@@ -155,10 +179,12 @@ export function translateThemeConfig({
155
179
  themeConfig,
156
180
  translationFiles,
157
181
  }: {
182
+ // To make TS correctly figure out the contravariance in parameter.
183
+ // In practice it's always normalized
158
184
  themeConfig: ThemeConfig;
159
185
  translationFiles: TranslationFile[];
160
186
  }): ThemeConfig {
161
- const translationFilesMap: Record<string, TranslationFile> = keyBy(
187
+ const translationFilesMap: {[fileName: string]: TranslationFile} = _.keyBy(
162
188
  translationFiles,
163
189
  (f) => f.path,
164
190
  );
@@ -167,10 +193,10 @@ export function translateThemeConfig({
167
193
  ...themeConfig,
168
194
  navbar: translateNavbar(
169
195
  themeConfig.navbar,
170
- translationFilesMap.navbar.content,
196
+ translationFilesMap.navbar?.content,
171
197
  ),
172
198
  footer: themeConfig.footer
173
- ? translateFooter(themeConfig.footer, translationFilesMap.footer.content)
199
+ ? translateFooter(themeConfig.footer, translationFilesMap.footer?.content)
174
200
  : undefined,
175
201
  };
176
202
  }
@@ -0,0 +1,448 @@
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
+ import defaultPrismTheme from 'prism-react-renderer/themes/palenight';
9
+ import {Joi, URISchema} from '@docusaurus/utils-validation';
10
+ import type {
11
+ ThemeConfig,
12
+ ThemeConfigValidationContext,
13
+ } from '@docusaurus/types';
14
+
15
+ const DEFAULT_DOCS_CONFIG = {
16
+ versionPersistence: 'localStorage',
17
+ sidebar: {
18
+ hideable: false,
19
+ autoCollapseCategories: false,
20
+ },
21
+ };
22
+ const DocsSchema = Joi.object({
23
+ versionPersistence: Joi.string()
24
+ .equal('localStorage', 'none')
25
+ .default(DEFAULT_DOCS_CONFIG.versionPersistence),
26
+ sidebar: Joi.object({
27
+ hideable: Joi.bool().default(DEFAULT_DOCS_CONFIG.sidebar.hideable),
28
+ autoCollapseCategories: Joi.bool().default(
29
+ DEFAULT_DOCS_CONFIG.sidebar.autoCollapseCategories,
30
+ ),
31
+ }).default(DEFAULT_DOCS_CONFIG.sidebar),
32
+ }).default(DEFAULT_DOCS_CONFIG);
33
+
34
+ const DEFAULT_COLOR_MODE_CONFIG = {
35
+ defaultMode: 'light',
36
+ disableSwitch: false,
37
+ respectPrefersColorScheme: false,
38
+ };
39
+
40
+ export const DEFAULT_CONFIG = {
41
+ colorMode: DEFAULT_COLOR_MODE_CONFIG,
42
+ docs: DEFAULT_DOCS_CONFIG,
43
+ metadata: [],
44
+ prism: {
45
+ additionalLanguages: [],
46
+ theme: defaultPrismTheme,
47
+ magicComments: [
48
+ {
49
+ className: 'theme-code-block-highlighted-line',
50
+ line: 'highlight-next-line',
51
+ block: {start: 'highlight-start', end: 'highlight-end'},
52
+ },
53
+ ],
54
+ },
55
+ navbar: {
56
+ hideOnScroll: false,
57
+ items: [],
58
+ },
59
+ tableOfContents: {
60
+ minHeadingLevel: 2,
61
+ maxHeadingLevel: 3,
62
+ },
63
+ };
64
+
65
+ const NavbarItemPosition = Joi.string().equal('left', 'right').default('left');
66
+
67
+ const NavbarItemBaseSchema = Joi.object({
68
+ label: Joi.string(),
69
+ html: Joi.string(),
70
+ className: Joi.string(),
71
+ })
72
+ .nand('html', 'label')
73
+ // We allow any unknown attributes on the links (users may need additional
74
+ // attributes like target, aria-role, data-customAttribute...)
75
+ .unknown();
76
+
77
+ const DefaultNavbarItemSchema = NavbarItemBaseSchema.append({
78
+ to: Joi.string(),
79
+ href: URISchema,
80
+ activeBasePath: Joi.string(),
81
+ activeBaseRegex: Joi.string(),
82
+ prependBaseUrlToHref: Joi.bool(),
83
+ // This is only triggered in case of a nested dropdown
84
+ items: Joi.forbidden().messages({
85
+ 'any.unknown': 'Nested dropdowns are not allowed',
86
+ }),
87
+ })
88
+ .xor('href', 'to')
89
+ .messages({
90
+ 'object.xor': 'One and only one between "to" and "href" should be provided',
91
+ });
92
+
93
+ const DocsVersionNavbarItemSchema = NavbarItemBaseSchema.append({
94
+ type: Joi.string().equal('docsVersion').required(),
95
+ to: Joi.string(),
96
+ docsPluginId: Joi.string(),
97
+ });
98
+
99
+ const DocItemSchema = NavbarItemBaseSchema.append({
100
+ type: Joi.string().equal('doc').required(),
101
+ docId: Joi.string().required(),
102
+ docsPluginId: Joi.string(),
103
+ });
104
+
105
+ const DocSidebarItemSchema = NavbarItemBaseSchema.append({
106
+ type: Joi.string().equal('docSidebar').required(),
107
+ sidebarId: Joi.string().required(),
108
+ docsPluginId: Joi.string(),
109
+ });
110
+
111
+ const HtmlNavbarItemSchema = Joi.object({
112
+ className: Joi.string(),
113
+ type: Joi.string().equal('html').required(),
114
+ value: Joi.string().required(),
115
+ });
116
+
117
+ // A temporary workaround to allow users to add custom navbar items
118
+ // See https://github.com/facebook/docusaurus/issues/7227
119
+ const CustomNavbarItemRegexp = /custom-.*/;
120
+ const CustomNavbarItemSchema = Joi.object({
121
+ type: Joi.string().regex(CustomNavbarItemRegexp).required(),
122
+ }).unknown();
123
+
124
+ const itemWithType = (type: string | RegExp | undefined) => {
125
+ // Because equal(undefined) is not supported :/
126
+ const typeSchema =
127
+ // eslint-disable-next-line no-nested-ternary
128
+ type instanceof RegExp
129
+ ? Joi.string().required().regex(type)
130
+ : type
131
+ ? Joi.string().required().equal(type)
132
+ : Joi.string().forbidden();
133
+ return Joi.object({
134
+ type: typeSchema,
135
+ })
136
+ .unknown()
137
+ .required();
138
+ };
139
+
140
+ const DropdownSubitemSchema = Joi.object({
141
+ position: Joi.forbidden(),
142
+ }).when('.', {
143
+ switch: [
144
+ {
145
+ is: itemWithType('docsVersion'),
146
+ then: DocsVersionNavbarItemSchema,
147
+ },
148
+ {
149
+ is: itemWithType('doc'),
150
+ then: DocItemSchema,
151
+ },
152
+ {
153
+ is: itemWithType('docSidebar'),
154
+ then: DocSidebarItemSchema,
155
+ },
156
+ {
157
+ is: itemWithType(undefined),
158
+ then: DefaultNavbarItemSchema,
159
+ },
160
+ {
161
+ is: itemWithType('html'),
162
+ then: HtmlNavbarItemSchema,
163
+ },
164
+ {
165
+ is: itemWithType(CustomNavbarItemRegexp),
166
+ then: CustomNavbarItemSchema,
167
+ },
168
+ {
169
+ is: Joi.alternatives().try(
170
+ itemWithType('dropdown'),
171
+ itemWithType('docsVersionDropdown'),
172
+ itemWithType('localeDropdown'),
173
+ itemWithType('search'),
174
+ ),
175
+ then: Joi.forbidden().messages({
176
+ 'any.unknown': 'Nested dropdowns are not allowed',
177
+ }),
178
+ },
179
+ ],
180
+ otherwise: Joi.forbidden().messages({
181
+ 'any.unknown': 'Bad navbar item type {.type}',
182
+ }),
183
+ });
184
+
185
+ const DropdownNavbarItemSchema = NavbarItemBaseSchema.append({
186
+ items: Joi.array().items(DropdownSubitemSchema).required(),
187
+ });
188
+
189
+ const DocsVersionDropdownNavbarItemSchema = NavbarItemBaseSchema.append({
190
+ type: Joi.string().equal('docsVersionDropdown').required(),
191
+ docsPluginId: Joi.string(),
192
+ dropdownActiveClassDisabled: Joi.boolean(),
193
+ dropdownItemsBefore: Joi.array().items(DropdownSubitemSchema).default([]),
194
+ dropdownItemsAfter: Joi.array().items(DropdownSubitemSchema).default([]),
195
+ });
196
+
197
+ const LocaleDropdownNavbarItemSchema = NavbarItemBaseSchema.append({
198
+ type: Joi.string().equal('localeDropdown').required(),
199
+ dropdownItemsBefore: Joi.array().items(DropdownSubitemSchema).default([]),
200
+ dropdownItemsAfter: Joi.array().items(DropdownSubitemSchema).default([]),
201
+ });
202
+
203
+ const SearchItemSchema = Joi.object({
204
+ type: Joi.string().equal('search').required(),
205
+ });
206
+
207
+ const NavbarItemSchema = Joi.object({
208
+ position: NavbarItemPosition,
209
+ }).when('.', {
210
+ switch: [
211
+ {
212
+ is: itemWithType('docsVersion'),
213
+ then: DocsVersionNavbarItemSchema,
214
+ },
215
+ {
216
+ is: itemWithType('dropdown'),
217
+ then: DropdownNavbarItemSchema,
218
+ },
219
+ {
220
+ is: itemWithType('docsVersionDropdown'),
221
+ then: DocsVersionDropdownNavbarItemSchema,
222
+ },
223
+ {
224
+ is: itemWithType('doc'),
225
+ then: DocItemSchema,
226
+ },
227
+ {
228
+ is: itemWithType('docSidebar'),
229
+ then: DocSidebarItemSchema,
230
+ },
231
+ {
232
+ is: itemWithType('localeDropdown'),
233
+ then: LocaleDropdownNavbarItemSchema,
234
+ },
235
+ {
236
+ is: itemWithType('search'),
237
+ then: SearchItemSchema,
238
+ },
239
+ {
240
+ is: itemWithType('html'),
241
+ then: HtmlNavbarItemSchema,
242
+ },
243
+ {
244
+ is: itemWithType(CustomNavbarItemRegexp),
245
+ then: CustomNavbarItemSchema,
246
+ },
247
+ {
248
+ is: itemWithType(undefined),
249
+ then: Joi.object().when('.', {
250
+ // Dropdown item can be specified without type field
251
+ is: Joi.object({
252
+ items: Joi.array().required(),
253
+ }).unknown(),
254
+ then: DropdownNavbarItemSchema,
255
+ otherwise: DefaultNavbarItemSchema,
256
+ }),
257
+ },
258
+ ],
259
+ otherwise: Joi.forbidden().messages({
260
+ 'any.unknown': 'Bad navbar item type {.type}',
261
+ }),
262
+ });
263
+
264
+ const ColorModeSchema = Joi.object({
265
+ defaultMode: Joi.string()
266
+ .equal('dark', 'light')
267
+ .default(DEFAULT_COLOR_MODE_CONFIG.defaultMode),
268
+ disableSwitch: Joi.bool().default(DEFAULT_COLOR_MODE_CONFIG.disableSwitch),
269
+ respectPrefersColorScheme: Joi.bool().default(
270
+ DEFAULT_COLOR_MODE_CONFIG.respectPrefersColorScheme,
271
+ ),
272
+ switchConfig: Joi.any().forbidden().messages({
273
+ 'any.unknown':
274
+ 'colorMode.switchConfig is deprecated. If you want to customize the icons for light and dark mode, swizzle IconLightMode, IconDarkMode, or ColorModeToggle instead.',
275
+ }),
276
+ }).default(DEFAULT_COLOR_MODE_CONFIG);
277
+
278
+ const HtmlMetadataSchema = Joi.object({
279
+ id: Joi.string(),
280
+ name: Joi.string(),
281
+ property: Joi.string(),
282
+ content: Joi.string(),
283
+ itemprop: Joi.string(),
284
+ }).unknown();
285
+
286
+ const FooterLinkItemSchema = Joi.object({
287
+ to: Joi.string(),
288
+ href: URISchema,
289
+ html: Joi.string(),
290
+ label: Joi.string(),
291
+ })
292
+ .xor('to', 'href', 'html')
293
+ .with('to', 'label')
294
+ .with('href', 'label')
295
+ .nand('html', 'label')
296
+ // We allow any unknown attributes on the links (users may need additional
297
+ // attributes like target, aria-role, data-customAttribute...)
298
+ .unknown();
299
+
300
+ const CustomCssSchema = Joi.alternatives()
301
+ .try(Joi.array().items(Joi.string().required()), Joi.string().required())
302
+ .optional();
303
+
304
+ export const ThemeConfigSchema = Joi.object({
305
+ // TODO temporary (@alpha-58)
306
+ disableDarkMode: Joi.any().forbidden().messages({
307
+ 'any.unknown':
308
+ 'disableDarkMode theme config is deprecated. Please use the new colorMode attribute. You likely want: config.themeConfig.colorMode.disableSwitch = true',
309
+ }),
310
+ // TODO temporary (@alpha-58)
311
+ defaultDarkMode: Joi.any().forbidden().messages({
312
+ 'any.unknown':
313
+ 'defaultDarkMode theme config is deprecated. Please use the new colorMode attribute. You likely want: config.themeConfig.colorMode.defaultMode = "dark"',
314
+ }),
315
+ customCss: CustomCssSchema,
316
+ colorMode: ColorModeSchema,
317
+ image: Joi.string(),
318
+ docs: DocsSchema,
319
+ metadata: Joi.array()
320
+ .items(HtmlMetadataSchema)
321
+ .default(DEFAULT_CONFIG.metadata),
322
+ // cSpell:ignore metadatas
323
+ metadatas: Joi.any().forbidden().messages({
324
+ 'any.unknown':
325
+ // cSpell:ignore metadatas
326
+ 'themeConfig.metadatas has been renamed as themeConfig.metadata. See https://github.com/facebook/docusaurus/pull/5871',
327
+ }),
328
+ announcementBar: Joi.object({
329
+ id: Joi.string().default('announcement-bar'),
330
+ content: Joi.string().required(),
331
+ backgroundColor: Joi.string(),
332
+ textColor: Joi.string(),
333
+ isCloseable: Joi.bool().default(true),
334
+ }).optional(),
335
+ navbar: Joi.object({
336
+ style: Joi.string().equal('dark', 'primary'),
337
+ hideOnScroll: Joi.bool().default(DEFAULT_CONFIG.navbar.hideOnScroll),
338
+ // TODO temporary (@alpha-58)
339
+ links: Joi.any().forbidden().messages({
340
+ 'any.unknown':
341
+ 'themeConfig.navbar.links has been renamed as themeConfig.navbar.items',
342
+ }),
343
+ items: Joi.array()
344
+ .items(NavbarItemSchema)
345
+ .default(DEFAULT_CONFIG.navbar.items),
346
+ title: Joi.string().allow('', null),
347
+ logo: Joi.object({
348
+ alt: Joi.string().allow(''),
349
+ src: Joi.string().required(),
350
+ srcDark: Joi.string(),
351
+ width: Joi.alternatives().try(Joi.string(), Joi.number()),
352
+ height: Joi.alternatives().try(Joi.string(), Joi.number()),
353
+ href: Joi.string(),
354
+ target: Joi.string(),
355
+ }),
356
+ }).default(DEFAULT_CONFIG.navbar),
357
+ footer: Joi.object({
358
+ style: Joi.string().equal('dark', 'light').default('light'),
359
+ logo: Joi.object({
360
+ alt: Joi.string().allow(''),
361
+ src: Joi.string().required(),
362
+ srcDark: Joi.string(),
363
+ // TODO infer this from reading the image
364
+ width: Joi.alternatives().try(Joi.string(), Joi.number()),
365
+ height: Joi.alternatives().try(Joi.string(), Joi.number()),
366
+ href: Joi.string(),
367
+ }),
368
+ copyright: Joi.string(),
369
+ links: Joi.alternatives(
370
+ Joi.array().items(
371
+ Joi.object({
372
+ title: Joi.string().allow(null).default(null),
373
+ items: Joi.array().items(FooterLinkItemSchema).default([]),
374
+ }),
375
+ ),
376
+ Joi.array().items(FooterLinkItemSchema),
377
+ )
378
+ .messages({
379
+ 'alternatives.match': `The footer must be either simple or multi-column, and not a mix of the two. See: https://docusaurus.io/docs/api/themes/configuration#footer-links`,
380
+ })
381
+ .default([]),
382
+ }).optional(),
383
+ prism: Joi.object({
384
+ theme: Joi.object({
385
+ plain: Joi.alternatives().try(Joi.array(), Joi.object()).required(),
386
+ styles: Joi.alternatives().try(Joi.array(), Joi.object()).required(),
387
+ }).default(DEFAULT_CONFIG.prism.theme),
388
+ darkTheme: Joi.object({
389
+ plain: Joi.alternatives().try(Joi.array(), Joi.object()).required(),
390
+ styles: Joi.alternatives().try(Joi.array(), Joi.object()).required(),
391
+ }),
392
+ defaultLanguage: Joi.string(),
393
+ additionalLanguages: Joi.array()
394
+ .items(Joi.string())
395
+ .default(DEFAULT_CONFIG.prism.additionalLanguages),
396
+ magicComments: Joi.array()
397
+ .items(
398
+ Joi.object({
399
+ className: Joi.string().required(),
400
+ line: Joi.string(),
401
+ block: Joi.object({
402
+ start: Joi.string().required(),
403
+ end: Joi.string().required(),
404
+ }),
405
+ }).or('line', 'block'),
406
+ )
407
+ .default(DEFAULT_CONFIG.prism.magicComments),
408
+ })
409
+ .default(DEFAULT_CONFIG.prism)
410
+ .unknown(),
411
+ hideableSidebar: Joi.forbidden().messages({
412
+ 'any.unknown':
413
+ 'themeConfig.hideableSidebar has been moved to themeConfig.docs.sidebar.hideable.',
414
+ }),
415
+ autoCollapseSidebarCategories: Joi.forbidden().messages({
416
+ 'any.unknown':
417
+ 'themeConfig.autoCollapseSidebarCategories has been moved to themeConfig.docs.sidebar.autoCollapseCategories.',
418
+ }),
419
+ sidebarCollapsible: Joi.forbidden().messages({
420
+ 'any.unknown':
421
+ 'The themeConfig.sidebarCollapsible has been moved to docs plugin options. See: https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-docs',
422
+ }),
423
+ tableOfContents: Joi.object({
424
+ minHeadingLevel: Joi.number()
425
+ .default(DEFAULT_CONFIG.tableOfContents.minHeadingLevel)
426
+ .when('maxHeadingLevel', {
427
+ is: Joi.exist(),
428
+ then: Joi.number()
429
+ .integer()
430
+ .min(2)
431
+ .max(6)
432
+ .max(Joi.ref('maxHeadingLevel')),
433
+ otherwise: Joi.number().integer().min(2).max(6),
434
+ }),
435
+ maxHeadingLevel: Joi.number()
436
+ .integer()
437
+ .min(2)
438
+ .max(6)
439
+ .default(DEFAULT_CONFIG.tableOfContents.maxHeadingLevel),
440
+ }).default(DEFAULT_CONFIG.tableOfContents),
441
+ });
442
+
443
+ export function validateThemeConfig({
444
+ validate,
445
+ themeConfig,
446
+ }: ThemeConfigValidationContext<ThemeConfig>): ThemeConfig {
447
+ return validate(ThemeConfigSchema, themeConfig);
448
+ }
package/babel.config.js DELETED
@@ -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
-
8
- module.exports = {
9
- env: {
10
- // USED FOR NODE/RUNTIME
11
- // maybe we should differenciate both cases because
12
- // we mostly need to transpile some features so that node does not crash...
13
- lib: {
14
- presets: [
15
- ['@babel/preset-typescript', {isTSX: true, allExtensions: true}],
16
- ],
17
- // Useful to transpile for older node versions
18
- plugins: [
19
- '@babel/plugin-transform-modules-commonjs',
20
- '@babel/plugin-proposal-nullish-coalescing-operator',
21
- '@babel/plugin-proposal-optional-chaining',
22
- ],
23
- },
24
-
25
- // USED FOR JS SWIZZLE
26
- // /lib-next folder is used as source to swizzle JS source code
27
- // This JS code is created from TS source code
28
- // This source code should look clean/human readable to be usable
29
- 'lib-next': {
30
- presets: [
31
- ['@babel/preset-typescript', {isTSX: true, allExtensions: true}],
32
- ],
33
- },
34
- },
35
- };