@docusaurus/theme-classic 2.0.0-beta.12faed89d → 2.0.0-beta.14

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 (349) hide show
  1. package/README.md +1 -1
  2. package/lib/admonitions.css +35 -0
  3. package/lib/deps.d.ts +13 -0
  4. package/lib/index.js +16 -15
  5. package/lib/prism-include-languages.js +9 -5
  6. package/{lib-next/types.d.ts → lib/theme-classic.d.ts} +338 -156
  7. package/lib/translations.js +16 -7
  8. package/lib/types.d.ts +0 -629
  9. package/lib/validateThemeConfig.js +232 -248
  10. package/lib-next/theme/Admonition/index.js +101 -0
  11. package/lib-next/theme/AnnouncementBar/index.js +7 -12
  12. package/lib-next/theme/AnnouncementBar/styles.module.css +23 -32
  13. package/lib-next/theme/BackToTopButton/index.js +131 -0
  14. package/lib-next/theme/BackToTopButton/styles.module.css +42 -0
  15. package/lib-next/theme/BlogArchivePage/index.js +80 -0
  16. package/lib-next/theme/BlogLayout/index.js +40 -0
  17. package/lib-next/theme/BlogListPage/index.js +17 -25
  18. package/lib-next/theme/BlogPostAuthor/index.js +46 -0
  19. package/{lib/theme/MDXPage → lib-next/theme/BlogPostAuthor}/styles.module.css +4 -2
  20. package/lib-next/theme/BlogPostAuthors/index.js +34 -0
  21. package/{lib/theme/IconExternalLink → lib-next/theme/BlogPostAuthors}/styles.module.css +3 -4
  22. package/lib-next/theme/BlogPostItem/index.js +79 -86
  23. package/lib-next/theme/BlogPostPage/index.js +70 -35
  24. package/lib-next/theme/BlogSidebar/index.js +11 -13
  25. package/lib-next/theme/BlogSidebar/styles.module.css +2 -2
  26. package/lib-next/theme/BlogTagsListPage/index.js +14 -55
  27. package/lib-next/theme/BlogTagsPostsPage/index.js +29 -39
  28. package/lib-next/theme/CodeBlock/index.js +23 -149
  29. package/lib-next/theme/CodeBlock/styles.module.css +12 -9
  30. package/lib-next/theme/Details/index.js +20 -0
  31. package/lib-next/theme/Details/styles.module.css +13 -0
  32. package/lib-next/theme/DocCard/index.js +80 -0
  33. package/lib-next/theme/DocCard/styles.module.css +43 -0
  34. package/lib-next/theme/DocCardList/index.js +19 -0
  35. package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +49 -0
  36. package/lib-next/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  37. package/lib-next/theme/DocItem/index.js +30 -59
  38. package/lib-next/theme/DocItem/styles.module.css +2 -11
  39. package/lib-next/theme/DocItemFooter/index.js +79 -0
  40. package/{lib/theme/DocSidebarItem → lib-next/theme/DocItemFooter}/styles.module.css +8 -5
  41. package/lib-next/theme/DocPage/index.js +46 -23
  42. package/lib-next/theme/DocPaginator/index.js +5 -33
  43. package/lib-next/theme/DocPaginatorNavLink/index.js +36 -0
  44. package/lib-next/theme/DocSidebar/index.js +37 -43
  45. package/lib-next/theme/DocSidebarItem/index.js +115 -65
  46. package/lib-next/theme/DocSidebarItem/styles.module.css +4 -0
  47. package/lib-next/theme/DocTagDocListPage/index.js +89 -0
  48. package/lib-next/theme/DocTagsListPage/index.js +38 -0
  49. package/lib-next/theme/DocVersionBadge/index.js +27 -0
  50. package/lib-next/theme/DocVersionBanner/index.js +28 -14
  51. package/lib-next/theme/EditThisPage/index.js +6 -1
  52. package/lib-next/theme/ErrorPageContent.js +35 -0
  53. package/lib-next/theme/Footer/index.js +90 -39
  54. package/lib-next/theme/Heading/index.js +24 -29
  55. package/lib-next/theme/Heading/styles.css +5 -6
  56. package/lib-next/theme/Heading/styles.module.css +9 -5
  57. package/lib-next/theme/IconArrow/index.js +2 -2
  58. package/lib-next/theme/IconClose/index.js +23 -0
  59. package/lib-next/theme/IconEdit/index.js +2 -2
  60. package/lib-next/theme/IconExternalLink/index.js +2 -2
  61. package/lib-next/theme/IconLanguage/index.js +2 -2
  62. package/lib-next/theme/IconMenu/index.js +2 -2
  63. package/lib-next/theme/LastUpdated/index.js +3 -2
  64. package/lib-next/theme/Layout/index.js +3 -1
  65. package/lib-next/theme/LayoutHead/index.js +18 -23
  66. package/lib-next/theme/LayoutProviders/index.js +8 -5
  67. package/lib-next/theme/Logo/index.js +25 -21
  68. package/lib-next/theme/MDXComponents/index.js +34 -7
  69. package/{lib/theme/hooks → lib-next/theme/MDXComponents}/styles.css +3 -2
  70. package/lib-next/theme/MDXPage/index.js +10 -2
  71. package/lib-next/theme/Navbar/index.js +62 -34
  72. package/lib-next/theme/Navbar/styles.module.css +3 -39
  73. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +45 -143
  74. package/lib-next/theme/NavbarItem/DocNavbarItem.js +7 -7
  75. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +31 -19
  76. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +158 -0
  77. package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +4 -12
  78. package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  79. package/lib-next/theme/NavbarItem/index.js +25 -12
  80. package/lib-next/theme/{SearchMetadatas → SearchMetadata}/index.js +1 -1
  81. package/lib-next/theme/Seo/index.js +11 -7
  82. package/lib-next/theme/TOC/index.js +12 -36
  83. package/lib-next/theme/TOC/styles.module.css +1 -1
  84. package/lib-next/theme/TOCCollapsible/index.js +13 -4
  85. package/lib-next/theme/TOCCollapsible/styles.module.css +1 -0
  86. package/lib-next/theme/TOCInline/index.js +10 -28
  87. package/lib-next/theme/TOCItems/index.js +85 -0
  88. package/lib-next/theme/Tabs/__tests__/index.test.js +142 -0
  89. package/lib-next/theme/Tabs/index.js +103 -48
  90. package/lib-next/theme/Tabs/styles.module.css +0 -13
  91. package/lib-next/theme/Tag/index.js +27 -0
  92. package/lib-next/theme/Tag/styles.module.css +70 -0
  93. package/lib-next/theme/TagsListByLetter/index.js +42 -0
  94. package/lib-next/theme/TagsListByLetter/styles.module.css +11 -0
  95. package/lib-next/theme/TagsListInline/index.js +31 -0
  96. package/lib-next/theme/TagsListInline/styles.module.css +15 -0
  97. package/lib-next/theme/ThemeProvider/index.js +10 -7
  98. package/lib-next/theme/ThemedImage/index.js +5 -5
  99. package/lib-next/theme/Toggle/index.js +34 -37
  100. package/lib-next/theme/Toggle/styles.module.css +91 -3
  101. package/lib-next/theme/UserPreferencesProvider/index.js +9 -6
  102. package/lib-next/theme/hooks/useHideableNavbar.js +31 -44
  103. package/lib-next/theme/hooks/useTheme.js +4 -5
  104. package/lib-next/theme/hooks/useWindowSize.js +2 -6
  105. package/lib-next/theme/prism-include-languages.js +2 -1
  106. package/package.json +26 -24
  107. package/src/admonitions.css +35 -0
  108. package/src/deps.d.ts +13 -0
  109. package/src/index.ts +23 -20
  110. package/{lib-next/prism-include-languages.js → src/prism-include-languages.ts} +0 -0
  111. package/src/theme/Admonition/index.tsx +106 -0
  112. package/src/theme/AnnouncementBar/index.tsx +8 -12
  113. package/src/theme/AnnouncementBar/styles.module.css +23 -32
  114. package/src/theme/BackToTopButton/index.tsx +142 -0
  115. package/src/theme/BackToTopButton/styles.module.css +42 -0
  116. package/src/theme/BlogArchivePage/index.tsx +91 -0
  117. package/src/theme/BlogLayout/index.tsx +44 -0
  118. package/src/theme/BlogListPage/index.tsx +18 -25
  119. package/src/theme/BlogPostAuthor/index.tsx +49 -0
  120. package/{lib/theme/IconEdit → src/theme/BlogPostAuthor}/styles.module.css +4 -3
  121. package/src/theme/BlogPostAuthors/index.tsx +39 -0
  122. package/src/theme/BlogPostAuthors/styles.module.css +11 -0
  123. package/src/theme/BlogPostItem/index.tsx +70 -80
  124. package/src/theme/BlogPostPage/index.tsx +72 -35
  125. package/src/theme/BlogSidebar/index.tsx +11 -13
  126. package/src/theme/BlogSidebar/styles.module.css +2 -2
  127. package/src/theme/BlogTagsListPage/index.tsx +14 -57
  128. package/src/theme/BlogTagsPostsPage/index.tsx +29 -39
  129. package/src/theme/CodeBlock/index.tsx +27 -151
  130. package/src/theme/CodeBlock/styles.module.css +12 -9
  131. package/src/theme/Details/index.tsx +24 -0
  132. package/src/theme/Details/styles.module.css +13 -0
  133. package/src/theme/DocCard/index.tsx +100 -0
  134. package/src/theme/DocCard/styles.module.css +43 -0
  135. package/src/theme/DocCardList/index.tsx +27 -0
  136. package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +53 -0
  137. package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  138. package/src/theme/DocItem/index.tsx +30 -60
  139. package/src/theme/DocItem/styles.module.css +2 -11
  140. package/src/theme/DocItemFooter/index.tsx +91 -0
  141. package/{lib/theme/BlogPostItem → src/theme/DocItemFooter}/styles.module.css +8 -8
  142. package/src/theme/DocPage/index.tsx +44 -22
  143. package/src/theme/DocPaginator/index.tsx +5 -33
  144. package/src/theme/DocPaginatorNavLink/index.tsx +38 -0
  145. package/src/theme/DocSidebar/index.tsx +38 -39
  146. package/src/theme/DocSidebarItem/index.tsx +108 -49
  147. package/src/theme/DocSidebarItem/styles.module.css +4 -0
  148. package/src/theme/DocTagDocListPage/index.tsx +89 -0
  149. package/src/theme/DocTagsListPage/index.tsx +41 -0
  150. package/src/theme/DocVersionBadge/index.tsx +30 -0
  151. package/src/theme/DocVersionBanner/index.tsx +48 -21
  152. package/src/theme/EditThisPage/index.tsx +6 -1
  153. package/src/theme/ErrorPageContent.tsx +41 -0
  154. package/src/theme/Footer/index.tsx +103 -42
  155. package/src/theme/Heading/index.tsx +24 -31
  156. package/src/theme/Heading/styles.css +5 -6
  157. package/src/theme/Heading/styles.module.css +9 -5
  158. package/src/theme/IconArrow/index.tsx +2 -2
  159. package/src/theme/IconClose/index.tsx +26 -0
  160. package/src/theme/IconEdit/index.tsx +2 -2
  161. package/src/theme/IconExternalLink/index.tsx +2 -5
  162. package/src/theme/IconLanguage/index.tsx +2 -6
  163. package/src/theme/IconMenu/index.tsx +3 -3
  164. package/src/theme/LastUpdated/index.tsx +3 -2
  165. package/src/theme/Layout/index.tsx +3 -1
  166. package/src/theme/LayoutHead/index.tsx +18 -17
  167. package/src/theme/LayoutProviders/index.tsx +8 -5
  168. package/src/theme/Logo/index.tsx +21 -17
  169. package/src/theme/MDXComponents/index.tsx +39 -5
  170. package/src/theme/MDXComponents/styles.css +11 -0
  171. package/src/theme/MDXPage/index.tsx +10 -2
  172. package/src/theme/Navbar/index.tsx +62 -35
  173. package/src/theme/Navbar/styles.module.css +3 -39
  174. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +42 -149
  175. package/src/theme/NavbarItem/DocNavbarItem.tsx +12 -16
  176. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +33 -21
  177. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +7 -3
  178. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +180 -0
  179. package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +8 -9
  180. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  181. package/src/theme/NavbarItem/index.tsx +41 -16
  182. package/src/theme/{SearchMetadatas → SearchMetadata}/index.tsx +2 -2
  183. package/src/theme/Seo/index.tsx +7 -4
  184. package/src/theme/TOC/index.tsx +13 -35
  185. package/src/theme/TOC/styles.module.css +1 -1
  186. package/src/theme/TOCCollapsible/index.tsx +13 -4
  187. package/src/theme/TOCCollapsible/styles.module.css +1 -0
  188. package/src/theme/TOCInline/index.tsx +13 -32
  189. package/src/theme/TOCItems/index.tsx +96 -0
  190. package/src/theme/Tabs/index.tsx +110 -54
  191. package/src/theme/Tabs/styles.module.css +0 -13
  192. package/src/theme/Tag/index.tsx +31 -0
  193. package/src/theme/Tag/styles.module.css +70 -0
  194. package/src/theme/TagsListByLetter/index.tsx +45 -0
  195. package/src/theme/TagsListByLetter/styles.module.css +11 -0
  196. package/src/theme/TagsListInline/index.tsx +35 -0
  197. package/src/theme/TagsListInline/styles.module.css +15 -0
  198. package/src/theme/ThemeProvider/index.tsx +6 -2
  199. package/src/theme/ThemedImage/index.tsx +5 -5
  200. package/src/theme/Toggle/index.tsx +36 -43
  201. package/src/theme/Toggle/styles.module.css +91 -3
  202. package/src/theme/UserPreferencesProvider/index.tsx +9 -6
  203. package/src/theme/hooks/useHideableNavbar.ts +32 -45
  204. package/src/theme/hooks/useTabGroupChoice.ts +2 -2
  205. package/src/theme/hooks/useTheme.ts +4 -5
  206. package/src/theme/hooks/useWindowSize.ts +2 -7
  207. package/src/theme/prism-include-languages.ts +3 -2
  208. package/src/theme-classic.d.ts +822 -0
  209. package/src/translations.ts +41 -23
  210. package/src/types.d.ts +0 -629
  211. package/src/{validateThemeConfig.js → validateThemeConfig.ts} +160 -100
  212. package/babel.config.js +0 -35
  213. package/codeTranslations/README.md +0 -20
  214. package/codeTranslations/ar.json +0 -56
  215. package/codeTranslations/base.json +0 -110
  216. package/codeTranslations/bn.json +0 -56
  217. package/codeTranslations/da.json +0 -56
  218. package/codeTranslations/de.json +0 -56
  219. package/codeTranslations/es.json +0 -56
  220. package/codeTranslations/fa.json +0 -56
  221. package/codeTranslations/fil.json +0 -56
  222. package/codeTranslations/fr.json +0 -56
  223. package/codeTranslations/he.json +0 -56
  224. package/codeTranslations/hi.json +0 -56
  225. package/codeTranslations/ja.json +0 -56
  226. package/codeTranslations/ko.json +0 -56
  227. package/codeTranslations/pl.json +0 -56
  228. package/codeTranslations/pt-BR.json +0 -56
  229. package/codeTranslations/pt-PT.json +0 -56
  230. package/codeTranslations/ru.json +0 -56
  231. package/codeTranslations/tr.json +0 -56
  232. package/codeTranslations/vi.json +0 -56
  233. package/codeTranslations/zh-Hans.json +0 -56
  234. package/codeTranslations/zh-Hant.json +0 -56
  235. package/lib/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  236. package/lib/__tests__/translations.test.js +0 -112
  237. package/lib/__tests__/validateThemeConfig.test.js +0 -333
  238. package/lib/theme/AnnouncementBar/index.js +0 -72
  239. package/lib/theme/AnnouncementBar/styles.module.css +0 -72
  240. package/lib/theme/BlogListPage/index.js +0 -71
  241. package/lib/theme/BlogListPaginator/index.js +0 -63
  242. package/lib/theme/BlogPostItem/index.js +0 -161
  243. package/lib/theme/BlogPostPage/index.js +0 -69
  244. package/lib/theme/BlogPostPaginator/index.js +0 -64
  245. package/lib/theme/BlogSidebar/index.js +0 -51
  246. package/lib/theme/BlogSidebar/styles.module.css +0 -44
  247. package/lib/theme/BlogTagsListPage/index.js +0 -76
  248. package/lib/theme/BlogTagsPostsPage/index.js +0 -100
  249. package/lib/theme/CodeBlock/index.js +0 -253
  250. package/lib/theme/CodeBlock/styles.module.css +0 -68
  251. package/lib/theme/DocItem/index.js +0 -138
  252. package/lib/theme/DocItem/styles.module.css +0 -31
  253. package/lib/theme/DocPage/index.js +0 -139
  254. package/lib/theme/DocPage/styles.module.css +0 -85
  255. package/lib/theme/DocPaginator/index.js +0 -63
  256. package/lib/theme/DocSidebar/index.js +0 -133
  257. package/lib/theme/DocSidebar/styles.module.css +0 -106
  258. package/lib/theme/DocSidebarItem/index.js +0 -175
  259. package/lib/theme/DocVersionBanner/index.js +0 -128
  260. package/lib/theme/EditThisPage/index.js +0 -31
  261. package/lib/theme/Footer/index.js +0 -115
  262. package/lib/theme/Footer/styles.module.css +0 -15
  263. package/lib/theme/Heading/index.js +0 -76
  264. package/lib/theme/Heading/styles.css +0 -23
  265. package/lib/theme/Heading/styles.module.css +0 -15
  266. package/lib/theme/IconArrow/index.js +0 -28
  267. package/lib/theme/IconEdit/index.js +0 -34
  268. package/lib/theme/IconExternalLink/index.js +0 -30
  269. package/lib/theme/IconLanguage/index.js +0 -29
  270. package/lib/theme/IconMenu/index.js +0 -30
  271. package/lib/theme/LastUpdated/index.js +0 -61
  272. package/lib/theme/Layout/index.js +0 -64
  273. package/lib/theme/Layout/styles.css +0 -27
  274. package/lib/theme/LayoutHead/index.js +0 -144
  275. package/lib/theme/LayoutProviders/index.js +0 -38
  276. package/lib/theme/Logo/index.js +0 -60
  277. package/lib/theme/MDXComponents/index.js +0 -65
  278. package/lib/theme/MDXPage/index.js +0 -66
  279. package/lib/theme/Navbar/index.js +0 -248
  280. package/lib/theme/Navbar/styles.module.css +0 -63
  281. package/lib/theme/NavbarItem/DefaultNavbarItem.js +0 -210
  282. package/lib/theme/NavbarItem/DocNavbarItem.js +0 -63
  283. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +0 -76
  284. package/lib/theme/NavbarItem/DocsVersionNavbarItem.js +0 -43
  285. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem.js +0 -72
  286. package/lib/theme/NavbarItem/SearchNavbarItem.js +0 -28
  287. package/lib/theme/NavbarItem/index.js +0 -54
  288. package/lib/theme/NotFound.js +0 -57
  289. package/lib/theme/SearchBar.js +0 -15
  290. package/lib/theme/SearchMetadatas/index.js +0 -33
  291. package/lib/theme/Seo/index.js +0 -49
  292. package/lib/theme/SkipToContent/index.js +0 -71
  293. package/lib/theme/SkipToContent/styles.module.css +0 -14
  294. package/lib/theme/TOC/index.js +0 -60
  295. package/lib/theme/TOC/styles.module.css +0 -23
  296. package/lib/theme/TOCCollapsible/index.js +0 -51
  297. package/lib/theme/TOCCollapsible/styles.module.css +0 -49
  298. package/lib/theme/TOCInline/index.js +0 -53
  299. package/lib/theme/TOCInline/styles.module.css +0 -12
  300. package/lib/theme/TabItem/index.js +0 -32
  301. package/lib/theme/Tabs/index.js +0 -150
  302. package/lib/theme/Tabs/styles.module.css +0 -23
  303. package/lib/theme/ThemeContext.js +0 -21
  304. package/lib/theme/ThemeProvider/index.js +0 -38
  305. package/lib/theme/ThemedImage/index.js +0 -49
  306. package/lib/theme/ThemedImage/styles.module.css +0 -18
  307. package/lib/theme/Toggle/index.js +0 -94
  308. package/lib/theme/Toggle/styles.css +0 -103
  309. package/lib/theme/Toggle/styles.module.css +0 -17
  310. package/lib/theme/UserPreferencesContext.js +0 -18
  311. package/lib/theme/UserPreferencesProvider/index.js +0 -36
  312. package/lib/theme/hooks/useContextualSearchFilters.js +0 -47
  313. package/lib/theme/hooks/useDocs.js +0 -18
  314. package/lib/theme/hooks/useHideableNavbar.js +0 -92
  315. package/lib/theme/hooks/useKeyboardNavigation.js +0 -45
  316. package/lib/theme/hooks/useLocationHash.js +0 -28
  317. package/lib/theme/hooks/useLockBodyScroll.js +0 -26
  318. package/lib/theme/hooks/usePrismTheme.js +0 -36
  319. package/lib/theme/hooks/useScrollPosition.js +0 -49
  320. package/lib/theme/hooks/useTOCHighlight.js +0 -87
  321. package/lib/theme/hooks/useTabGroupChoice.js +0 -51
  322. package/lib/theme/hooks/useTheme.js +0 -99
  323. package/lib/theme/hooks/useThemeContext.js +0 -31
  324. package/lib/theme/hooks/useUserPreferencesContext.js +0 -31
  325. package/lib/theme/hooks/useWindowSize.js +0 -73
  326. package/lib/theme/prism-include-languages.js +0 -39
  327. package/lib-next/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  328. package/lib-next/__tests__/translations.test.js +0 -128
  329. package/lib-next/__tests__/validateThemeConfig.test.js +0 -333
  330. package/lib-next/index.js +0 -221
  331. package/lib-next/theme/Toggle/styles.css +0 -103
  332. package/lib-next/theme/hooks/useContextualSearchFilters.js +0 -41
  333. package/lib-next/theme/hooks/useLocationHash.js +0 -20
  334. package/lib-next/theme/hooks/useScrollPosition.js +0 -38
  335. package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
  336. package/lib-next/translations.js +0 -145
  337. package/lib-next/validateThemeConfig.js +0 -319
  338. package/src/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  339. package/src/__tests__/translations.test.ts +0 -116
  340. package/src/__tests__/validateThemeConfig.test.js +0 -333
  341. package/src/prism-include-languages.js +0 -11
  342. package/src/theme/Toggle/styles.css +0 -103
  343. package/src/theme/hooks/useContextualSearchFilters.ts +0 -52
  344. package/src/theme/hooks/useLocationHash.ts +0 -25
  345. package/src/theme/hooks/useScrollPosition.ts +0 -45
  346. package/src/theme/hooks/useTOCHighlight.ts +0 -98
  347. package/tsconfig.json +0 -12
  348. package/update-code-translations.js +0 -242
  349. package/update-code-translations.test.js +0 -33
@@ -1,19 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ThemeConfigSchema = exports.DEFAULT_CONFIG = void 0;
7
+ exports.validateThemeConfig = validateThemeConfig;
8
+
9
+ var _utilsValidation = require("@docusaurus/utils-validation");
10
+
1
11
  /**
2
12
  * Copyright (c) Facebook, Inc. and its affiliates.
3
13
  *
4
14
  * This source code is licensed under the MIT license found in the
5
15
  * LICENSE file in the root directory of this source tree.
6
16
  */
7
-
8
- const {Joi, URISchema} = require('@docusaurus/utils-validation');
9
-
10
17
  const DEFAULT_DOCS_CONFIG = {
11
- versionPersistence: 'localStorage',
18
+ versionPersistence: 'localStorage'
12
19
  };
13
- const DocsSchema = Joi.object({
14
- versionPersistence: Joi.string()
15
- .equal('localStorage', 'none')
16
- .default(DEFAULT_DOCS_CONFIG.versionPersistence),
20
+
21
+ const DocsSchema = _utilsValidation.Joi.object({
22
+ versionPersistence: _utilsValidation.Joi.string().equal('localStorage', 'none').default(DEFAULT_DOCS_CONFIG.versionPersistence)
17
23
  }).default(DEFAULT_DOCS_CONFIG);
18
24
 
19
25
  const DEFAULT_COLOR_MODE_CONFIG = {
@@ -24,296 +30,274 @@ const DEFAULT_COLOR_MODE_CONFIG = {
24
30
  darkIcon: '🌜',
25
31
  darkIconStyle: {},
26
32
  lightIcon: '🌞',
27
- lightIconStyle: {},
28
- },
33
+ lightIconStyle: {}
34
+ }
29
35
  };
30
-
31
36
  const DEFAULT_CONFIG = {
32
37
  colorMode: DEFAULT_COLOR_MODE_CONFIG,
33
38
  docs: DEFAULT_DOCS_CONFIG,
34
- metadatas: [],
39
+ metadata: [],
35
40
  prism: {
36
- additionalLanguages: [],
41
+ additionalLanguages: []
37
42
  },
38
43
  navbar: {
39
44
  hideOnScroll: false,
40
- items: [],
45
+ items: []
41
46
  },
42
47
  hideableSidebar: false,
43
- sidebarCollapsible: true,
48
+ tableOfContents: {
49
+ minHeadingLevel: 2,
50
+ maxHeadingLevel: 3
51
+ }
44
52
  };
45
53
  exports.DEFAULT_CONFIG = DEFAULT_CONFIG;
46
54
 
47
- const NavbarItemPosition = Joi.string().equal('left', 'right').default('left');
55
+ const NavbarItemPosition = _utilsValidation.Joi.string().equal('left', 'right').default('left');
48
56
 
49
- const BaseNavbarItemSchema = Joi.object({
50
- to: Joi.string(),
51
- href: URISchema,
52
- label: Joi.string(),
53
- className: Joi.string(),
54
- prependBaseUrlToHref: Joi.bool(),
55
- })
56
- // We allow any unknown attributes on the links
57
- // (users may need additional attributes like target, aria-role, data-customAttribute...)
58
- .unknown();
57
+ const NavbarItemBaseSchema = _utilsValidation.Joi.object({
58
+ label: _utilsValidation.Joi.string(),
59
+ className: _utilsValidation.Joi.string()
60
+ }) // We allow any unknown attributes on the links
61
+ // (users may need additional attributes like target, aria-role, data-customAttribute...)
62
+ .unknown();
59
63
 
60
- // TODO we should probably create a custom navbar item type "dropdown"
61
- // having this recursive structure is bad because we only support 2 levels
62
- // + parent/child don't have exactly the same props
63
- const DefaultNavbarItemSchema = BaseNavbarItemSchema.append({
64
- items: Joi.array().optional().items(BaseNavbarItemSchema),
65
- position: NavbarItemPosition,
66
- activeBasePath: Joi.string(),
67
- activeBaseRegex: Joi.string(),
64
+ const DefaultNavbarItemSchema = NavbarItemBaseSchema.append({
65
+ to: _utilsValidation.Joi.string(),
66
+ href: _utilsValidation.URISchema,
67
+ activeBasePath: _utilsValidation.Joi.string(),
68
+ activeBaseRegex: _utilsValidation.Joi.string(),
69
+ prependBaseUrlToHref: _utilsValidation.Joi.bool(),
70
+ // This is only triggered in case of a nested dropdown
71
+ items: _utilsValidation.Joi.forbidden().messages({
72
+ 'any.unknown': 'Nested dropdowns are not allowed'
73
+ })
74
+ }).xor('href', 'to').messages({
75
+ 'object.xor': 'One and only one between "to" and "href" should be provided'
68
76
  });
69
- // TODO the dropdown parent item can have no href/to
70
- // should check should not apply to dropdown parent item
71
- // .xor('href', 'to');
72
-
73
- const DocsVersionNavbarItemSchema = Joi.object({
74
- type: Joi.string().equal('docsVersion').required(),
75
- position: NavbarItemPosition,
76
- label: Joi.string(),
77
- to: Joi.string(),
78
- docsPluginId: Joi.string(),
79
- className: Joi.string(),
77
+ const DocsVersionNavbarItemSchema = NavbarItemBaseSchema.append({
78
+ type: _utilsValidation.Joi.string().equal('docsVersion').required(),
79
+ to: _utilsValidation.Joi.string(),
80
+ docsPluginId: _utilsValidation.Joi.string()
80
81
  });
81
-
82
- const DocsVersionDropdownNavbarItemSchema = Joi.object({
83
- type: Joi.string().equal('docsVersionDropdown').required(),
84
- position: NavbarItemPosition,
85
- docsPluginId: Joi.string(),
86
- dropdownActiveClassDisabled: Joi.boolean(),
87
- dropdownItemsBefore: Joi.array().items(BaseNavbarItemSchema).default([]),
88
- dropdownItemsAfter: Joi.array().items(BaseNavbarItemSchema).default([]),
89
- className: Joi.string(),
82
+ const DocItemSchema = NavbarItemBaseSchema.append({
83
+ type: _utilsValidation.Joi.string().equal('doc').required(),
84
+ docId: _utilsValidation.Joi.string().required(),
85
+ docsPluginId: _utilsValidation.Joi.string()
90
86
  });
91
87
 
92
- const DocItemSchema = Joi.object({
93
- type: Joi.string().equal('doc').required(),
94
- position: NavbarItemPosition,
95
- docId: Joi.string().required(),
96
- label: Joi.string(),
97
- docsPluginId: Joi.string(),
98
- activeSidebarClassName: Joi.string().default('navbar__link--active'),
99
- className: Joi.string(),
100
- });
88
+ const itemWithType = type => {
89
+ // because equal(undefined) is not supported :/
90
+ const typeSchema = type ? _utilsValidation.Joi.string().required().equal(type) : _utilsValidation.Joi.string().forbidden();
91
+ return _utilsValidation.Joi.object({
92
+ type: typeSchema
93
+ }).unknown().required();
94
+ };
101
95
 
102
- const LocaleDropdownNavbarItemSchema = Joi.object({
103
- type: Joi.string().equal('localeDropdown').required(),
104
- position: NavbarItemPosition,
105
- dropdownItemsBefore: Joi.array().items(BaseNavbarItemSchema).default([]),
106
- dropdownItemsAfter: Joi.array().items(BaseNavbarItemSchema).default([]),
107
- className: Joi.string(),
96
+ const DropdownSubitemSchema = _utilsValidation.Joi.object({
97
+ position: _utilsValidation.Joi.forbidden()
98
+ }).when('.', {
99
+ switch: [{
100
+ is: itemWithType('docsVersion'),
101
+ then: DocsVersionNavbarItemSchema
102
+ }, {
103
+ is: itemWithType('doc'),
104
+ then: DocItemSchema
105
+ }, {
106
+ is: itemWithType(undefined),
107
+ then: DefaultNavbarItemSchema
108
+ }, {
109
+ is: _utilsValidation.Joi.alternatives().try(itemWithType('dropdown'), itemWithType('docsVersionDropdown'), itemWithType('localeDropdown'), itemWithType('search')),
110
+ then: _utilsValidation.Joi.forbidden().messages({
111
+ 'any.unknown': 'Nested dropdowns are not allowed'
112
+ })
113
+ }],
114
+ otherwise: _utilsValidation.Joi.forbidden().messages({
115
+ 'any.unknown': 'Bad navbar item type {.type}'
116
+ })
108
117
  });
109
118
 
110
- const SearchItemSchema = Joi.object({
111
- type: Joi.string().equal('search').required(),
112
- position: NavbarItemPosition,
119
+ const DropdownNavbarItemSchema = NavbarItemBaseSchema.append({
120
+ items: _utilsValidation.Joi.array().items(DropdownSubitemSchema).required()
121
+ });
122
+ const DocsVersionDropdownNavbarItemSchema = NavbarItemBaseSchema.append({
123
+ type: _utilsValidation.Joi.string().equal('docsVersionDropdown').required(),
124
+ docsPluginId: _utilsValidation.Joi.string(),
125
+ dropdownActiveClassDisabled: _utilsValidation.Joi.boolean(),
126
+ dropdownItemsBefore: _utilsValidation.Joi.array().items(DropdownSubitemSchema).default([]),
127
+ dropdownItemsAfter: _utilsValidation.Joi.array().items(DropdownSubitemSchema).default([])
128
+ });
129
+ const LocaleDropdownNavbarItemSchema = NavbarItemBaseSchema.append({
130
+ type: _utilsValidation.Joi.string().equal('localeDropdown').required(),
131
+ dropdownItemsBefore: _utilsValidation.Joi.array().items(DropdownSubitemSchema).default([]),
132
+ dropdownItemsAfter: _utilsValidation.Joi.array().items(DropdownSubitemSchema).default([])
113
133
  });
114
134
 
115
- // Can this be made easier? :/
116
- const isOfType = (type) => {
117
- let typeSchema = Joi.string().required();
118
- // because equal(undefined) is not supported :/
119
- if (type) {
120
- typeSchema = typeSchema.equal(type);
121
- }
122
- return Joi.object({
123
- type: typeSchema,
124
- })
125
- .unknown()
126
- .required();
127
- };
128
-
129
- const NavbarItemSchema = Joi.object().when({
130
- switch: [
131
- {
132
- is: isOfType('docsVersion'),
133
- then: DocsVersionNavbarItemSchema,
134
- },
135
- {
136
- is: isOfType('docsVersionDropdown'),
137
- then: DocsVersionDropdownNavbarItemSchema,
138
- },
139
- {
140
- is: isOfType('doc'),
141
- then: DocItemSchema,
142
- },
143
- {
144
- is: isOfType('localeDropdown'),
145
- then: LocaleDropdownNavbarItemSchema,
146
- },
147
- {
148
- is: isOfType('search'),
149
- then: SearchItemSchema,
150
- },
151
- {
152
- is: isOfType(undefined),
153
- then: Joi.forbidden().messages({
154
- 'any.unknown': 'Bad navbar item type {.type}',
155
- }),
156
- },
157
- ],
158
- otherwise: DefaultNavbarItemSchema,
135
+ const SearchItemSchema = _utilsValidation.Joi.object({
136
+ type: _utilsValidation.Joi.string().equal('search').required()
159
137
  });
160
138
 
161
- /*
162
- const NavbarItemSchema = Joi.object({
163
- type: Joi.string().only(['docsVersion'])
164
- })
165
- .when(Joi.object({ type: 'docsVersion' }).unknown(), {
166
- then: Joi.object({ pepperoni: Joi.boolean() })
167
- })
168
- .when(Joi.object().unknown(), {
169
- then: Joi.object({ croutons: Joi.boolean() })
139
+ const NavbarItemSchema = _utilsValidation.Joi.object({
140
+ position: NavbarItemPosition
141
+ }).when('.', {
142
+ switch: [{
143
+ is: itemWithType('docsVersion'),
144
+ then: DocsVersionNavbarItemSchema
145
+ }, {
146
+ is: itemWithType('dropdown'),
147
+ then: DropdownNavbarItemSchema
148
+ }, {
149
+ is: itemWithType('docsVersionDropdown'),
150
+ then: DocsVersionDropdownNavbarItemSchema
151
+ }, {
152
+ is: itemWithType('doc'),
153
+ then: DocItemSchema
154
+ }, {
155
+ is: itemWithType('localeDropdown'),
156
+ then: LocaleDropdownNavbarItemSchema
157
+ }, {
158
+ is: itemWithType('search'),
159
+ then: SearchItemSchema
160
+ }, {
161
+ is: itemWithType(undefined),
162
+ then: _utilsValidation.Joi.object().when('.', {
163
+ // Dropdown item can be specified without type field
164
+ is: _utilsValidation.Joi.object({
165
+ items: _utilsValidation.Joi.array().required()
166
+ }).unknown(),
167
+ then: DropdownNavbarItemSchema,
168
+ otherwise: DefaultNavbarItemSchema
169
+ })
170
+ }],
171
+ otherwise: _utilsValidation.Joi.forbidden().messages({
172
+ 'any.unknown': 'Bad navbar item type {.type}'
170
173
  })
171
-
172
- */
173
-
174
- /*
175
- const NavbarItemSchema = Joi.object().when('type', {
176
- is: Joi.valid('docsVersion'),
177
- then: DocsVersionNavbarItemSchema,
178
- otherwise: DefaultNavbarItemSchema,
179
174
  });
180
- */
181
175
 
182
- const ColorModeSchema = Joi.object({
183
- defaultMode: Joi.string()
184
- .equal('dark', 'light')
185
- .default(DEFAULT_COLOR_MODE_CONFIG.defaultMode),
186
- disableSwitch: Joi.bool().default(DEFAULT_COLOR_MODE_CONFIG.disableSwitch),
187
- respectPrefersColorScheme: Joi.bool().default(
188
- DEFAULT_COLOR_MODE_CONFIG.respectPrefersColorScheme,
189
- ),
190
- switchConfig: Joi.object({
191
- darkIcon: Joi.string().default(
192
- DEFAULT_COLOR_MODE_CONFIG.switchConfig.darkIcon,
193
- ),
194
- darkIconStyle: Joi.object().default(
195
- DEFAULT_COLOR_MODE_CONFIG.switchConfig.darkIconStyle,
196
- ),
197
- lightIcon: Joi.string().default(
198
- DEFAULT_COLOR_MODE_CONFIG.switchConfig.lightIcon,
199
- ),
200
- lightIconStyle: Joi.object().default(
201
- DEFAULT_COLOR_MODE_CONFIG.switchConfig.lightIconStyle,
202
- ),
203
- }).default(DEFAULT_COLOR_MODE_CONFIG.switchConfig),
204
- }).default(DEFAULT_COLOR_MODE_CONFIG);
176
+ const ColorModeSchema = _utilsValidation.Joi.object({
177
+ defaultMode: _utilsValidation.Joi.string().equal('dark', 'light').default(DEFAULT_COLOR_MODE_CONFIG.defaultMode),
178
+ disableSwitch: _utilsValidation.Joi.bool().default(DEFAULT_COLOR_MODE_CONFIG.disableSwitch),
179
+ respectPrefersColorScheme: _utilsValidation.Joi.bool().default(DEFAULT_COLOR_MODE_CONFIG.respectPrefersColorScheme),
180
+ switchConfig: _utilsValidation.Joi.object({
181
+ darkIcon: _utilsValidation.Joi.string().default(DEFAULT_COLOR_MODE_CONFIG.switchConfig.darkIcon),
182
+ darkIconStyle: _utilsValidation.Joi.object().default(DEFAULT_COLOR_MODE_CONFIG.switchConfig.darkIconStyle),
183
+ lightIcon: _utilsValidation.Joi.string().default(DEFAULT_COLOR_MODE_CONFIG.switchConfig.lightIcon),
184
+ lightIconStyle: _utilsValidation.Joi.object().default(DEFAULT_COLOR_MODE_CONFIG.switchConfig.lightIconStyle)
185
+ }).default(DEFAULT_COLOR_MODE_CONFIG.switchConfig)
186
+ }).default(DEFAULT_COLOR_MODE_CONFIG); // schema can probably be improved
187
+
205
188
 
206
- // schema can probably be improved
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(),
189
+ const HtmlMetadataSchema = _utilsValidation.Joi.object({
190
+ id: _utilsValidation.Joi.string(),
191
+ name: _utilsValidation.Joi.string(),
192
+ property: _utilsValidation.Joi.string(),
193
+ content: _utilsValidation.Joi.string(),
194
+ itemprop: _utilsValidation.Joi.string()
213
195
  }).unknown();
214
196
 
215
- const FooterLinkItemSchema = Joi.object({
216
- to: Joi.string(),
217
- href: URISchema,
218
- html: Joi.string(),
219
- label: Joi.string(),
220
- })
221
- .xor('to', 'href', 'html')
222
- .with('to', 'label')
223
- .with('href', 'label')
224
- .nand('html', 'label')
225
- // We allow any unknown attributes on the links
226
- // (users may need additional attributes like target, aria-role, data-customAttribute...)
227
- .unknown();
197
+ const FooterLinkItemSchema = _utilsValidation.Joi.object({
198
+ to: _utilsValidation.Joi.string(),
199
+ href: _utilsValidation.URISchema,
200
+ html: _utilsValidation.Joi.string(),
201
+ label: _utilsValidation.Joi.string()
202
+ }).xor('to', 'href', 'html').with('to', 'label').with('href', 'label').nand('html', 'label') // We allow any unknown attributes on the links
203
+ // (users may need additional attributes like target, aria-role, data-customAttribute...)
204
+ .unknown();
228
205
 
229
- const CustomCssSchema = Joi.alternatives()
230
- .try(Joi.array().items(Joi.string().required()), Joi.string().required())
231
- .optional();
206
+ const CustomCssSchema = _utilsValidation.Joi.alternatives().try(_utilsValidation.Joi.array().items(_utilsValidation.Joi.string().required()), _utilsValidation.Joi.string().required()).optional();
232
207
 
233
- const ThemeConfigSchema = Joi.object({
208
+ const ThemeConfigSchema = _utilsValidation.Joi.object({
234
209
  // TODO temporary (@alpha-58)
235
- disableDarkMode: Joi.any().forbidden(false).messages({
236
- 'any.unknown':
237
- 'disableDarkMode theme config is deprecated. Please use the new colorMode attribute. You likely want: config.themeConfig.colorMode.disableSwitch = true',
210
+ disableDarkMode: _utilsValidation.Joi.any().forbidden().messages({
211
+ 'any.unknown': 'disableDarkMode theme config is deprecated. Please use the new colorMode attribute. You likely want: config.themeConfig.colorMode.disableSwitch = true'
238
212
  }),
239
213
  // TODO temporary (@alpha-58)
240
- defaultDarkMode: Joi.any().forbidden(false).messages({
241
- 'any.unknown':
242
- 'defaultDarkMode theme config is deprecated. Please use the new colorMode attribute. You likely want: config.themeConfig.colorMode.defaultMode = "dark"',
214
+ defaultDarkMode: _utilsValidation.Joi.any().forbidden().messages({
215
+ 'any.unknown': 'defaultDarkMode theme config is deprecated. Please use the new colorMode attribute. You likely want: config.themeConfig.colorMode.defaultMode = "dark"'
243
216
  }),
244
217
  customCss: CustomCssSchema,
245
218
  colorMode: ColorModeSchema,
246
- image: Joi.string(),
219
+ image: _utilsValidation.Joi.string(),
247
220
  docs: DocsSchema,
248
- metadatas: Joi.array()
249
- .items(HtmlMetadataSchema)
250
- .default(DEFAULT_CONFIG.metadatas),
251
- announcementBar: Joi.object({
252
- id: Joi.string().default('announcement-bar'),
253
- content: Joi.string(),
254
- backgroundColor: Joi.string(),
255
- textColor: Joi.string(),
256
- isCloseable: Joi.bool().default(true),
221
+ metadata: _utilsValidation.Joi.array().items(HtmlMetadataSchema).default(DEFAULT_CONFIG.metadata),
222
+ metadatas: _utilsValidation.Joi.any().forbidden().messages({
223
+ 'any.unknown': 'themeConfig.metadatas has been renamed as themeConfig.metadata. See https://github.com/facebook/docusaurus/pull/5871'
224
+ }),
225
+ announcementBar: _utilsValidation.Joi.object({
226
+ id: _utilsValidation.Joi.string().default('announcement-bar'),
227
+ content: _utilsValidation.Joi.string().required(),
228
+ backgroundColor: _utilsValidation.Joi.string(),
229
+ textColor: _utilsValidation.Joi.string(),
230
+ isCloseable: _utilsValidation.Joi.bool().default(true)
257
231
  }).optional(),
258
- navbar: Joi.object({
259
- style: Joi.string().equal('dark', 'primary'),
260
- hideOnScroll: Joi.bool().default(DEFAULT_CONFIG.navbar.hideOnScroll),
232
+ navbar: _utilsValidation.Joi.object({
233
+ style: _utilsValidation.Joi.string().equal('dark', 'primary'),
234
+ hideOnScroll: _utilsValidation.Joi.bool().default(DEFAULT_CONFIG.navbar.hideOnScroll),
261
235
  // 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
- href: Joi.string(),
275
- target: Joi.string(),
236
+ links: _utilsValidation.Joi.any().forbidden().messages({
237
+ 'any.unknown': 'themeConfig.navbar.links has been renamed as themeConfig.navbar.items'
276
238
  }),
239
+ items: _utilsValidation.Joi.array().items(NavbarItemSchema).default(DEFAULT_CONFIG.navbar.items),
240
+ title: _utilsValidation.Joi.string().allow('', null),
241
+ logo: _utilsValidation.Joi.object({
242
+ alt: _utilsValidation.Joi.string().allow(''),
243
+ src: _utilsValidation.Joi.string().required(),
244
+ srcDark: _utilsValidation.Joi.string(),
245
+ width: _utilsValidation.Joi.alternatives().try(_utilsValidation.Joi.string(), _utilsValidation.Joi.number()),
246
+ height: _utilsValidation.Joi.alternatives().try(_utilsValidation.Joi.string(), _utilsValidation.Joi.number()),
247
+ href: _utilsValidation.Joi.string(),
248
+ target: _utilsValidation.Joi.string()
249
+ })
277
250
  }).default(DEFAULT_CONFIG.navbar),
278
- footer: Joi.object({
279
- style: Joi.string().equal('dark', 'light').default('light'),
280
- logo: Joi.object({
281
- alt: Joi.string().allow(''),
282
- src: Joi.string(),
283
- srcDark: Joi.string(),
284
- href: Joi.string(),
251
+ footer: _utilsValidation.Joi.object({
252
+ style: _utilsValidation.Joi.string().equal('dark', 'light').default('light'),
253
+ logo: _utilsValidation.Joi.object({
254
+ alt: _utilsValidation.Joi.string().allow(''),
255
+ src: _utilsValidation.Joi.string(),
256
+ srcDark: _utilsValidation.Joi.string(),
257
+ // TODO infer this from reading the image
258
+ width: _utilsValidation.Joi.alternatives().try(_utilsValidation.Joi.string(), _utilsValidation.Joi.number()),
259
+ height: _utilsValidation.Joi.alternatives().try(_utilsValidation.Joi.string(), _utilsValidation.Joi.number()),
260
+ href: _utilsValidation.Joi.string()
285
261
  }),
286
- copyright: Joi.string(),
287
- links: Joi.array()
288
- .items(
289
- Joi.object({
290
- title: Joi.string().allow(null),
291
- items: Joi.array().items(FooterLinkItemSchema).default([]),
292
- }),
293
- )
294
- .default([]),
262
+ copyright: _utilsValidation.Joi.string(),
263
+ links: _utilsValidation.Joi.alternatives(_utilsValidation.Joi.array().items(_utilsValidation.Joi.object({
264
+ title: _utilsValidation.Joi.string().allow(null).default(null),
265
+ items: _utilsValidation.Joi.array().items(FooterLinkItemSchema).default([])
266
+ })), _utilsValidation.Joi.array().items(FooterLinkItemSchema)).messages({
267
+ '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`
268
+ }).default([])
295
269
  }).optional(),
296
- prism: Joi.object({
297
- theme: Joi.object({
298
- plain: Joi.alternatives().try(Joi.array(), Joi.object()).required(),
299
- styles: Joi.alternatives().try(Joi.array(), Joi.object()).required(),
270
+ prism: _utilsValidation.Joi.object({
271
+ theme: _utilsValidation.Joi.object({
272
+ plain: _utilsValidation.Joi.alternatives().try(_utilsValidation.Joi.array(), _utilsValidation.Joi.object()).required(),
273
+ styles: _utilsValidation.Joi.alternatives().try(_utilsValidation.Joi.array(), _utilsValidation.Joi.object()).required()
300
274
  }),
301
- darkTheme: Joi.object({
302
- plain: Joi.alternatives().try(Joi.array(), Joi.object()).required(),
303
- styles: Joi.alternatives().try(Joi.array(), Joi.object()).required(),
275
+ darkTheme: _utilsValidation.Joi.object({
276
+ plain: _utilsValidation.Joi.alternatives().try(_utilsValidation.Joi.array(), _utilsValidation.Joi.object()).required(),
277
+ styles: _utilsValidation.Joi.alternatives().try(_utilsValidation.Joi.array(), _utilsValidation.Joi.object()).required()
304
278
  }),
305
- defaultLanguage: Joi.string(),
306
- additionalLanguages: Joi.array()
307
- .items(Joi.string())
308
- .default(DEFAULT_CONFIG.prism.additionalLanguages),
309
- })
310
- .default(DEFAULT_CONFIG.prism)
311
- .unknown(),
312
- hideableSidebar: Joi.bool().default(DEFAULT_CONFIG.hideableSidebar),
313
- sidebarCollapsible: Joi.bool().default(DEFAULT_CONFIG.sidebarCollapsible),
279
+ defaultLanguage: _utilsValidation.Joi.string(),
280
+ additionalLanguages: _utilsValidation.Joi.array().items(_utilsValidation.Joi.string()).default(DEFAULT_CONFIG.prism.additionalLanguages)
281
+ }).default(DEFAULT_CONFIG.prism).unknown(),
282
+ hideableSidebar: _utilsValidation.Joi.bool().default(DEFAULT_CONFIG.hideableSidebar),
283
+ sidebarCollapsible: _utilsValidation.Joi.forbidden().messages({
284
+ 'any.unknown': 'The themeConfig.sidebarCollapsible has been moved to docs plugin options. See: https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-docs'
285
+ }),
286
+ tableOfContents: _utilsValidation.Joi.object({
287
+ minHeadingLevel: _utilsValidation.Joi.number().default(DEFAULT_CONFIG.tableOfContents.minHeadingLevel).when('maxHeadingLevel', {
288
+ is: _utilsValidation.Joi.exist(),
289
+ then: _utilsValidation.Joi.number().integer().min(2).max(6).max(_utilsValidation.Joi.ref('maxHeadingLevel')),
290
+ otherwise: _utilsValidation.Joi.number().integer().min(2).max(6)
291
+ }),
292
+ maxHeadingLevel: _utilsValidation.Joi.number().integer().min(2).max(6).default(DEFAULT_CONFIG.tableOfContents.maxHeadingLevel)
293
+ }).default(DEFAULT_CONFIG.tableOfContents)
314
294
  });
295
+
315
296
  exports.ThemeConfigSchema = ThemeConfigSchema;
316
297
 
317
- exports.validateThemeConfig = ({validate, themeConfig}) => {
298
+ function validateThemeConfig({
299
+ validate,
300
+ themeConfig
301
+ }) {
318
302
  return validate(ThemeConfigSchema, themeConfig);
319
- };
303
+ }
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import React from 'react';
8
+ import clsx from 'clsx';
9
+ const icons = {
10
+ note: (
11
+ <svg
12
+ xmlns="http://www.w3.org/2000/svg"
13
+ width="14"
14
+ height="16"
15
+ viewBox="0 0 14 16">
16
+ <path
17
+ fillRule="evenodd"
18
+ d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"
19
+ />
20
+ </svg>
21
+ ),
22
+ tip: (
23
+ <svg
24
+ xmlns="http://www.w3.org/2000/svg"
25
+ width="12"
26
+ height="16"
27
+ viewBox="0 0 12 16">
28
+ <path
29
+ fillRule="evenodd"
30
+ d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"
31
+ />
32
+ </svg>
33
+ ),
34
+ danger: (
35
+ <svg
36
+ xmlns="http://www.w3.org/2000/svg"
37
+ width="12"
38
+ height="16"
39
+ viewBox="0 0 12 16">
40
+ <path
41
+ fillRule="evenodd"
42
+ d="M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"
43
+ />
44
+ </svg>
45
+ ),
46
+ info: (
47
+ <svg
48
+ xmlns="http://www.w3.org/2000/svg"
49
+ width="14"
50
+ height="16"
51
+ viewBox="0 0 14 16">
52
+ <path
53
+ fillRule="evenodd"
54
+ d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"
55
+ />
56
+ </svg>
57
+ ),
58
+ caution: (
59
+ <svg
60
+ xmlns="http://www.w3.org/2000/svg"
61
+ width="16"
62
+ height="16"
63
+ viewBox="0 0 16 16">
64
+ <path
65
+ fillRule="evenodd"
66
+ d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"
67
+ />
68
+ </svg>
69
+ ),
70
+ };
71
+ const ifmClassNames = {
72
+ note: 'secondary',
73
+ tip: 'success',
74
+ danger: 'danger',
75
+ info: 'info',
76
+ caution: 'warning',
77
+ };
78
+ export default function Admonition({
79
+ children,
80
+ type,
81
+ title = type,
82
+ icon = icons[type],
83
+ }) {
84
+ return (
85
+ <div
86
+ className={clsx(
87
+ 'admonition',
88
+ `admonition-${type}`,
89
+ 'alert',
90
+ `alert--${ifmClassNames[type]}`,
91
+ )}>
92
+ <div className="admonition-heading">
93
+ <h5>
94
+ <span className="admonition-icon">{icon}</span>
95
+ {title}
96
+ </h5>
97
+ </div>
98
+ <div className="admonition-content">{children}</div>
99
+ </div>
100
+ );
101
+ }