@docusaurus/theme-classic 2.0.0-beta.138b4c997 → 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} +374 -150
  7. package/lib/translations.js +16 -7
  8. package/lib/types.d.ts +0 -587
  9. package/lib/validateThemeConfig.js +232 -246
  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 +40 -51
  38. package/lib-next/theme/DocItem/styles.module.css +5 -9
  39. package/lib-next/theme/DocItemFooter/index.js +79 -0
  40. package/{lib/theme/DocItem → lib-next/theme/DocItemFooter}/styles.module.css +1 -9
  41. package/lib-next/theme/DocPage/index.js +46 -49
  42. package/lib-next/theme/DocPage/styles.module.css +5 -6
  43. package/lib-next/theme/DocPaginator/index.js +5 -33
  44. package/lib-next/theme/DocPaginatorNavLink/index.js +36 -0
  45. package/lib-next/theme/DocSidebar/index.js +65 -285
  46. package/lib-next/theme/DocSidebar/styles.module.css +0 -18
  47. package/lib-next/theme/DocSidebarItem/index.js +217 -0
  48. package/{lib/theme/ThemedImage → lib-next/theme/DocSidebarItem}/styles.module.css +10 -9
  49. package/lib-next/theme/DocTagDocListPage/index.js +89 -0
  50. package/lib-next/theme/DocTagsListPage/index.js +38 -0
  51. package/lib-next/theme/DocVersionBadge/index.js +27 -0
  52. package/lib-next/theme/DocVersionBanner/index.js +28 -14
  53. package/lib-next/theme/EditThisPage/index.js +6 -1
  54. package/lib-next/theme/ErrorPageContent.js +35 -0
  55. package/lib-next/theme/Footer/index.js +100 -40
  56. package/lib-next/theme/Heading/index.js +24 -29
  57. package/lib-next/theme/Heading/styles.css +5 -6
  58. package/lib-next/theme/Heading/styles.module.css +9 -5
  59. package/lib-next/theme/IconArrow/index.js +2 -2
  60. package/lib-next/theme/IconClose/index.js +23 -0
  61. package/lib-next/theme/IconEdit/index.js +2 -2
  62. package/lib-next/theme/IconExternalLink/index.js +2 -2
  63. package/lib-next/theme/IconLanguage/index.js +2 -2
  64. package/lib-next/theme/IconMenu/index.js +2 -2
  65. package/lib-next/theme/LastUpdated/index.js +3 -2
  66. package/lib-next/theme/Layout/index.js +3 -1
  67. package/lib-next/theme/LayoutHead/index.js +18 -23
  68. package/lib-next/theme/LayoutProviders/index.js +9 -3
  69. package/lib-next/theme/Logo/index.js +25 -21
  70. package/lib-next/theme/MDXComponents/index.js +34 -7
  71. package/{lib/theme/hooks → lib-next/theme/MDXComponents}/styles.css +3 -2
  72. package/lib-next/theme/MDXPage/index.js +10 -2
  73. package/lib-next/theme/Navbar/index.js +193 -56
  74. package/lib-next/theme/Navbar/styles.module.css +10 -3
  75. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +45 -147
  76. package/lib-next/theme/NavbarItem/DocNavbarItem.js +7 -7
  77. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +31 -19
  78. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +158 -0
  79. package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +4 -12
  80. package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  81. package/lib-next/theme/NavbarItem/index.js +25 -12
  82. package/lib-next/theme/{SearchMetadatas → SearchMetadata}/index.js +1 -1
  83. package/lib-next/theme/Seo/index.js +11 -7
  84. package/lib-next/theme/SkipToContent/index.js +5 -2
  85. package/lib-next/theme/TOC/index.js +12 -36
  86. package/lib-next/theme/TOC/styles.module.css +1 -1
  87. package/lib-next/theme/TOCCollapsible/index.js +54 -0
  88. package/lib-next/theme/TOCCollapsible/styles.module.css +50 -0
  89. package/lib-next/theme/TOCInline/index.js +10 -28
  90. package/lib-next/theme/TOCItems/index.js +85 -0
  91. package/lib-next/theme/Tabs/__tests__/index.test.js +142 -0
  92. package/lib-next/theme/Tabs/index.js +103 -48
  93. package/lib-next/theme/Tabs/styles.module.css +0 -13
  94. package/lib-next/theme/Tag/index.js +27 -0
  95. package/lib-next/theme/Tag/styles.module.css +70 -0
  96. package/lib-next/theme/TagsListByLetter/index.js +42 -0
  97. package/lib-next/theme/TagsListByLetter/styles.module.css +11 -0
  98. package/lib-next/theme/TagsListInline/index.js +31 -0
  99. package/lib-next/theme/TagsListInline/styles.module.css +15 -0
  100. package/lib-next/theme/ThemeProvider/index.js +10 -7
  101. package/lib-next/theme/ThemedImage/index.js +5 -5
  102. package/lib-next/theme/Toggle/index.js +34 -37
  103. package/lib-next/theme/Toggle/styles.module.css +91 -3
  104. package/lib-next/theme/UserPreferencesProvider/index.js +9 -6
  105. package/lib-next/theme/hooks/useHideableNavbar.js +31 -44
  106. package/lib-next/theme/hooks/useTheme.js +4 -5
  107. package/lib-next/theme/hooks/useWindowSize.js +34 -20
  108. package/lib-next/theme/prism-include-languages.js +2 -1
  109. package/package.json +27 -25
  110. package/src/admonitions.css +35 -0
  111. package/src/deps.d.ts +13 -0
  112. package/src/index.ts +23 -20
  113. package/{lib-next/prism-include-languages.js → src/prism-include-languages.ts} +0 -0
  114. package/src/theme/Admonition/index.tsx +106 -0
  115. package/src/theme/AnnouncementBar/index.tsx +8 -12
  116. package/src/theme/AnnouncementBar/styles.module.css +23 -32
  117. package/src/theme/BackToTopButton/index.tsx +142 -0
  118. package/src/theme/BackToTopButton/styles.module.css +42 -0
  119. package/src/theme/BlogArchivePage/index.tsx +91 -0
  120. package/src/theme/BlogLayout/index.tsx +44 -0
  121. package/src/theme/BlogListPage/index.tsx +18 -25
  122. package/src/theme/BlogPostAuthor/index.tsx +49 -0
  123. package/{lib/theme/IconEdit → src/theme/BlogPostAuthor}/styles.module.css +4 -3
  124. package/src/theme/BlogPostAuthors/index.tsx +39 -0
  125. package/src/theme/BlogPostAuthors/styles.module.css +11 -0
  126. package/src/theme/BlogPostItem/index.tsx +70 -80
  127. package/src/theme/BlogPostPage/index.tsx +72 -35
  128. package/src/theme/BlogSidebar/index.tsx +11 -13
  129. package/src/theme/BlogSidebar/styles.module.css +2 -2
  130. package/src/theme/BlogTagsListPage/index.tsx +14 -57
  131. package/src/theme/BlogTagsPostsPage/index.tsx +29 -39
  132. package/src/theme/CodeBlock/index.tsx +27 -151
  133. package/src/theme/CodeBlock/styles.module.css +12 -9
  134. package/src/theme/Details/index.tsx +24 -0
  135. package/src/theme/Details/styles.module.css +13 -0
  136. package/src/theme/DocCard/index.tsx +100 -0
  137. package/src/theme/DocCard/styles.module.css +43 -0
  138. package/src/theme/DocCardList/index.tsx +27 -0
  139. package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +53 -0
  140. package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
  141. package/src/theme/DocItem/index.tsx +43 -51
  142. package/src/theme/DocItem/styles.module.css +5 -9
  143. package/src/theme/DocItemFooter/index.tsx +91 -0
  144. package/{lib/theme/BlogPostItem → src/theme/DocItemFooter}/styles.module.css +8 -8
  145. package/src/theme/DocPage/index.tsx +44 -42
  146. package/src/theme/DocPage/styles.module.css +5 -6
  147. package/src/theme/DocPaginator/index.tsx +5 -33
  148. package/src/theme/DocPaginatorNavLink/index.tsx +38 -0
  149. package/src/theme/DocSidebar/index.tsx +76 -297
  150. package/src/theme/DocSidebar/styles.module.css +0 -18
  151. package/src/theme/DocSidebarItem/index.tsx +242 -0
  152. package/{lib/theme/Footer → src/theme/DocSidebarItem}/styles.module.css +10 -6
  153. package/src/theme/DocTagDocListPage/index.tsx +89 -0
  154. package/src/theme/DocTagsListPage/index.tsx +41 -0
  155. package/src/theme/DocVersionBadge/index.tsx +30 -0
  156. package/src/theme/DocVersionBanner/index.tsx +48 -21
  157. package/src/theme/EditThisPage/index.tsx +6 -1
  158. package/src/theme/ErrorPageContent.tsx +41 -0
  159. package/src/theme/Footer/index.tsx +113 -43
  160. package/src/theme/Heading/index.tsx +24 -31
  161. package/src/theme/Heading/styles.css +5 -6
  162. package/src/theme/Heading/styles.module.css +9 -5
  163. package/src/theme/IconArrow/index.tsx +2 -2
  164. package/src/theme/IconClose/index.tsx +26 -0
  165. package/src/theme/IconEdit/index.tsx +2 -2
  166. package/src/theme/IconExternalLink/index.tsx +2 -5
  167. package/src/theme/IconLanguage/index.tsx +2 -6
  168. package/src/theme/IconMenu/index.tsx +3 -3
  169. package/src/theme/LastUpdated/index.tsx +3 -2
  170. package/src/theme/Layout/index.tsx +3 -1
  171. package/src/theme/LayoutHead/index.tsx +18 -17
  172. package/src/theme/LayoutProviders/index.tsx +9 -3
  173. package/src/theme/Logo/index.tsx +21 -17
  174. package/src/theme/MDXComponents/index.tsx +39 -5
  175. package/src/theme/MDXComponents/styles.css +11 -0
  176. package/src/theme/MDXPage/index.tsx +10 -2
  177. package/src/theme/Navbar/index.tsx +203 -61
  178. package/src/theme/Navbar/styles.module.css +10 -3
  179. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +42 -154
  180. package/src/theme/NavbarItem/DocNavbarItem.tsx +12 -16
  181. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +33 -21
  182. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +7 -3
  183. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +180 -0
  184. package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +8 -9
  185. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  186. package/src/theme/NavbarItem/index.tsx +41 -16
  187. package/src/theme/{SearchMetadatas → SearchMetadata}/index.tsx +2 -2
  188. package/src/theme/Seo/index.tsx +7 -4
  189. package/src/theme/SkipToContent/index.tsx +5 -2
  190. package/src/theme/TOC/index.tsx +12 -41
  191. package/src/theme/TOC/styles.module.css +1 -1
  192. package/src/theme/TOCCollapsible/index.tsx +58 -0
  193. package/src/theme/TOCCollapsible/styles.module.css +50 -0
  194. package/src/theme/TOCInline/index.tsx +13 -32
  195. package/src/theme/TOCItems/index.tsx +96 -0
  196. package/src/theme/Tabs/index.tsx +110 -54
  197. package/src/theme/Tabs/styles.module.css +0 -13
  198. package/src/theme/Tag/index.tsx +31 -0
  199. package/src/theme/Tag/styles.module.css +70 -0
  200. package/src/theme/TagsListByLetter/index.tsx +45 -0
  201. package/src/theme/TagsListByLetter/styles.module.css +11 -0
  202. package/src/theme/TagsListInline/index.tsx +35 -0
  203. package/src/theme/TagsListInline/styles.module.css +15 -0
  204. package/src/theme/ThemeProvider/index.tsx +6 -2
  205. package/src/theme/ThemedImage/index.tsx +5 -5
  206. package/src/theme/Toggle/index.tsx +36 -43
  207. package/src/theme/Toggle/styles.module.css +91 -3
  208. package/src/theme/UserPreferencesProvider/index.tsx +9 -6
  209. package/src/theme/hooks/useHideableNavbar.ts +32 -45
  210. package/src/theme/hooks/useTabGroupChoice.ts +2 -2
  211. package/src/theme/hooks/useTheme.ts +4 -5
  212. package/src/theme/hooks/useWindowSize.ts +38 -20
  213. package/src/theme/prism-include-languages.ts +3 -2
  214. package/src/theme-classic.d.ts +822 -0
  215. package/src/translations.ts +41 -23
  216. package/src/types.d.ts +0 -587
  217. package/src/{validateThemeConfig.js → validateThemeConfig.ts} +160 -98
  218. package/babel.config.js +0 -35
  219. package/codeTranslations/README.md +0 -20
  220. package/codeTranslations/ar.json +0 -57
  221. package/codeTranslations/base.json +0 -112
  222. package/codeTranslations/bn.json +0 -56
  223. package/codeTranslations/da.json +0 -57
  224. package/codeTranslations/de.json +0 -57
  225. package/codeTranslations/es.json +0 -57
  226. package/codeTranslations/fa.json +0 -57
  227. package/codeTranslations/fil.json +0 -57
  228. package/codeTranslations/fr.json +0 -57
  229. package/codeTranslations/he.json +0 -57
  230. package/codeTranslations/hi.json +0 -57
  231. package/codeTranslations/ja.json +0 -57
  232. package/codeTranslations/ko.json +0 -57
  233. package/codeTranslations/pl.json +0 -57
  234. package/codeTranslations/pt-BR.json +0 -57
  235. package/codeTranslations/pt-PT.json +0 -57
  236. package/codeTranslations/ru.json +0 -57
  237. package/codeTranslations/tr.json +0 -57
  238. package/codeTranslations/vi.json +0 -57
  239. package/codeTranslations/zh-Hans.json +0 -57
  240. package/codeTranslations/zh-Hant.json +0 -57
  241. package/lib/__tests__/__snapshots__/translations.test.ts.snap +0 -116
  242. package/lib/__tests__/translations.test.js +0 -112
  243. package/lib/__tests__/validateThemeConfig.test.js +0 -333
  244. package/lib/theme/AnnouncementBar/index.js +0 -72
  245. package/lib/theme/AnnouncementBar/styles.module.css +0 -72
  246. package/lib/theme/BlogListPage/index.js +0 -71
  247. package/lib/theme/BlogListPaginator/index.js +0 -63
  248. package/lib/theme/BlogPostItem/index.js +0 -161
  249. package/lib/theme/BlogPostPage/index.js +0 -69
  250. package/lib/theme/BlogPostPaginator/index.js +0 -64
  251. package/lib/theme/BlogSidebar/index.js +0 -51
  252. package/lib/theme/BlogSidebar/styles.module.css +0 -44
  253. package/lib/theme/BlogTagsListPage/index.js +0 -76
  254. package/lib/theme/BlogTagsPostsPage/index.js +0 -100
  255. package/lib/theme/CodeBlock/index.js +0 -253
  256. package/lib/theme/CodeBlock/styles.module.css +0 -68
  257. package/lib/theme/DocItem/index.js +0 -129
  258. package/lib/theme/DocPage/index.js +0 -173
  259. package/lib/theme/DocPage/styles.module.css +0 -86
  260. package/lib/theme/DocPaginator/index.js +0 -63
  261. package/lib/theme/DocSidebar/index.js +0 -306
  262. package/lib/theme/DocSidebar/styles.module.css +0 -124
  263. package/lib/theme/DocVersionBanner/index.js +0 -128
  264. package/lib/theme/EditThisPage/index.js +0 -31
  265. package/lib/theme/Footer/index.js +0 -108
  266. package/lib/theme/Heading/index.js +0 -76
  267. package/lib/theme/Heading/styles.css +0 -23
  268. package/lib/theme/Heading/styles.module.css +0 -15
  269. package/lib/theme/IconArrow/index.js +0 -28
  270. package/lib/theme/IconEdit/index.js +0 -34
  271. package/lib/theme/IconExternalLink/index.js +0 -30
  272. package/lib/theme/IconLanguage/index.js +0 -29
  273. package/lib/theme/IconMenu/index.js +0 -30
  274. package/lib/theme/LastUpdated/index.js +0 -61
  275. package/lib/theme/Layout/index.js +0 -64
  276. package/lib/theme/Layout/styles.css +0 -27
  277. package/lib/theme/LayoutHead/index.js +0 -144
  278. package/lib/theme/LayoutProviders/index.js +0 -36
  279. package/lib/theme/Logo/index.js +0 -60
  280. package/lib/theme/MDXComponents/index.js +0 -65
  281. package/lib/theme/MDXPage/index.js +0 -66
  282. package/lib/theme/Navbar/index.js +0 -147
  283. package/lib/theme/Navbar/styles.module.css +0 -20
  284. package/lib/theme/NavbarItem/DefaultNavbarItem.js +0 -209
  285. package/lib/theme/NavbarItem/DocNavbarItem.js +0 -63
  286. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +0 -76
  287. package/lib/theme/NavbarItem/DocsVersionNavbarItem.js +0 -43
  288. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem.js +0 -72
  289. package/lib/theme/NavbarItem/SearchNavbarItem.js +0 -28
  290. package/lib/theme/NavbarItem/index.js +0 -54
  291. package/lib/theme/NotFound.js +0 -57
  292. package/lib/theme/SearchBar.js +0 -15
  293. package/lib/theme/SearchMetadatas/index.js +0 -33
  294. package/lib/theme/Seo/index.js +0 -49
  295. package/lib/theme/SkipToContent/index.js +0 -63
  296. package/lib/theme/SkipToContent/styles.module.css +0 -14
  297. package/lib/theme/TOC/index.js +0 -59
  298. package/lib/theme/TOC/styles.module.css +0 -23
  299. package/lib/theme/TOCInline/index.js +0 -53
  300. package/lib/theme/TOCInline/styles.module.css +0 -12
  301. package/lib/theme/TabItem/index.js +0 -32
  302. package/lib/theme/Tabs/index.js +0 -150
  303. package/lib/theme/Tabs/styles.module.css +0 -23
  304. package/lib/theme/ThemeContext.js +0 -21
  305. package/lib/theme/ThemeProvider/index.js +0 -38
  306. package/lib/theme/ThemedImage/index.js +0 -49
  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 -55
  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 -317
  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 -240
  349. package/update-code-translations.test.js +0 -33
@@ -4,18 +4,21 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- import React from 'react';
7
+ import React, {useMemo} from 'react';
8
8
  import useTabGroupChoice from '@theme/hooks/useTabGroupChoice';
9
9
  import UserPreferencesContext from '@theme/UserPreferencesContext';
10
10
 
11
11
  function UserPreferencesProvider(props) {
12
12
  const {tabGroupChoices, setTabGroupChoices} = useTabGroupChoice();
13
+ const contextValue = useMemo(
14
+ () => ({
15
+ tabGroupChoices,
16
+ setTabGroupChoices,
17
+ }),
18
+ [tabGroupChoices, setTabGroupChoices],
19
+ );
13
20
  return (
14
- <UserPreferencesContext.Provider
15
- value={{
16
- tabGroupChoices,
17
- setTabGroupChoices,
18
- }}>
21
+ <UserPreferencesContext.Provider value={contextValue}>
19
22
  {props.children}
20
23
  </UserPreferencesContext.Provider>
21
24
  );
@@ -4,72 +4,59 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- import {useState, useCallback, useEffect, useRef} from 'react';
8
- import {useLocation} from '@docusaurus/router';
9
- import useScrollPosition from '@theme/hooks/useScrollPosition';
10
- import {useLocationChange} from '@docusaurus/theme-common';
7
+ import {useState, useCallback, useRef} from 'react';
8
+ import {useLocationChange, useScrollPosition} from '@docusaurus/theme-common';
11
9
 
12
10
  const useHideableNavbar = (hideOnScroll) => {
13
- const location = useLocation();
14
11
  const [isNavbarVisible, setIsNavbarVisible] = useState(hideOnScroll);
15
12
  const isFocusedAnchor = useRef(false);
16
- const [navbarHeight, setNavbarHeight] = useState(0);
13
+ const navbarHeight = useRef(0);
17
14
  const navbarRef = useCallback((node) => {
18
15
  if (node !== null) {
19
- setNavbarHeight(node.getBoundingClientRect().height);
16
+ navbarHeight.current = node.getBoundingClientRect().height;
20
17
  }
21
18
  }, []);
22
- useScrollPosition(
23
- ({scrollY: scrollTop}, {scrollY: lastScrollTop}) => {
24
- if (!hideOnScroll) {
25
- return;
26
- }
27
-
28
- if (scrollTop < navbarHeight) {
29
- setIsNavbarVisible(true);
30
- return;
31
- }
32
-
33
- if (isFocusedAnchor.current) {
34
- isFocusedAnchor.current = false;
35
- setIsNavbarVisible(false);
36
- return;
37
- }
19
+ useScrollPosition((currentPosition, lastPosition) => {
20
+ if (!hideOnScroll) {
21
+ return;
22
+ }
38
23
 
39
- if (lastScrollTop && scrollTop === 0) {
40
- setIsNavbarVisible(true);
41
- }
24
+ const scrollTop = currentPosition.scrollY; // It needed for mostly to handle rubber band scrolling
42
25
 
43
- const documentHeight =
44
- document.documentElement.scrollHeight - navbarHeight;
45
- const windowHeight = window.innerHeight;
26
+ if (scrollTop < navbarHeight.current) {
27
+ setIsNavbarVisible(true);
28
+ return;
29
+ }
46
30
 
47
- if (lastScrollTop && scrollTop >= lastScrollTop) {
48
- setIsNavbarVisible(false);
49
- } else if (scrollTop + windowHeight < documentHeight) {
50
- setIsNavbarVisible(true);
51
- }
52
- },
53
- [navbarHeight, isFocusedAnchor],
54
- );
55
- useLocationChange((locationChangeEvent) => {
56
- if (!hideOnScroll || locationChangeEvent.location.hash) {
31
+ if (isFocusedAnchor.current) {
32
+ isFocusedAnchor.current = false;
57
33
  return;
58
34
  }
59
35
 
60
- setIsNavbarVisible(true);
36
+ const lastScrollTop = lastPosition?.scrollY;
37
+ const documentHeight =
38
+ document.documentElement.scrollHeight - navbarHeight.current;
39
+ const windowHeight = window.innerHeight;
40
+
41
+ if (lastScrollTop && scrollTop >= lastScrollTop) {
42
+ setIsNavbarVisible(false);
43
+ } else if (scrollTop + windowHeight < documentHeight) {
44
+ setIsNavbarVisible(true);
45
+ }
61
46
  });
62
- useEffect(() => {
47
+ useLocationChange((locationChangeEvent) => {
63
48
  if (!hideOnScroll) {
64
49
  return;
65
50
  }
66
51
 
67
- if (!location.hash) {
52
+ if (locationChangeEvent.location.hash) {
53
+ isFocusedAnchor.current = true;
54
+ setIsNavbarVisible(false);
68
55
  return;
69
56
  }
70
57
 
71
- isFocusedAnchor.current = true;
72
- }, [location.hash]);
58
+ setIsNavbarVisible(true);
59
+ });
73
60
  return {
74
61
  navbarRef,
75
62
  isNavbarVisible,
@@ -14,9 +14,8 @@ const themes = {
14
14
  };
15
15
 
16
16
  // Ensure to always return a valid theme even if input is invalid
17
- const coerceToTheme = (theme) => {
18
- return theme === themes.dark ? themes.dark : themes.light;
19
- };
17
+ const coerceToTheme = (theme) =>
18
+ theme === themes.dark ? themes.dark : themes.light;
20
19
 
21
20
  const getInitialTheme = (defaultMode) => {
22
21
  if (!ExecutionEnvironment.canUseDOM) {
@@ -60,7 +59,7 @@ const useTheme = () => {
60
59
  } catch (err) {
61
60
  console.error(err);
62
61
  }
63
- }, [setTheme]);
62
+ }, [disableSwitch, setTheme]);
64
63
  useEffect(() => {
65
64
  if (disableSwitch && !respectPrefersColorScheme) {
66
65
  return;
@@ -71,7 +70,7 @@ const useTheme = () => {
71
70
  .addListener(({matches}) => {
72
71
  setTheme(matches ? themes.dark : themes.light);
73
72
  });
74
- }, []);
73
+ }, [disableSwitch, respectPrefersColorScheme]);
75
74
  return {
76
75
  isDarkTheme: theme === themes.dark,
77
76
  setLightTheme,
@@ -6,40 +6,54 @@
6
6
  */
7
7
  import {useEffect, useState} from 'react';
8
8
  import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment';
9
- const desktopThresholdWidth = 996;
10
9
  const windowSizes = {
11
10
  desktop: 'desktop',
12
11
  mobile: 'mobile',
12
+ // This "ssr" value is very important to handle hydration FOUC / layout shifts
13
+ // You have to handle server-rendering explicitly on the call-site
14
+ // On the server, you may need to render BOTH the mobile/desktop elements (and hide one of them with mediaquery)
15
+ // We don't return "undefined" on purpose, to make it more explicit
16
+ ssr: 'ssr',
13
17
  };
18
+ const DesktopThresholdWidth = 996;
14
19
 
15
- function useWindowSize() {
16
- const isClient = ExecutionEnvironment.canUseDOM;
20
+ function getWindowSize() {
21
+ if (!ExecutionEnvironment.canUseDOM) {
22
+ return windowSizes.ssr;
23
+ }
17
24
 
18
- function getSize() {
19
- if (!isClient) {
20
- return undefined;
21
- }
25
+ return window.innerWidth > DesktopThresholdWidth
26
+ ? windowSizes.desktop
27
+ : windowSizes.mobile;
28
+ } // Simulate the SSR window size in dev, so that potential hydration FOUC/layout shift problems can be seen in dev too!
22
29
 
23
- return window.innerWidth > desktopThresholdWidth
24
- ? windowSizes.desktop
25
- : windowSizes.mobile;
26
- }
30
+ const DevSimulateSSR = process.env.NODE_ENV === 'development' && true; // This hook returns an enum value on purpose!
31
+ // We don't want it to return the actual width value, for resize perf reasons
32
+ // We only want to re-render once a breakpoint is crossed
27
33
 
28
- const [windowSize, setWindowSize] = useState(getSize);
29
- useEffect(() => {
30
- if (!isClient) {
31
- return undefined;
34
+ function useWindowSize() {
35
+ const [windowSize, setWindowSize] = useState(() => {
36
+ if (DevSimulateSSR) {
37
+ return 'ssr';
32
38
  }
33
39
 
34
- function handleResize() {
35
- setWindowSize(getSize());
40
+ return getWindowSize();
41
+ });
42
+ useEffect(() => {
43
+ function updateWindowSize() {
44
+ setWindowSize(getWindowSize());
36
45
  }
37
46
 
38
- window.addEventListener('resize', handleResize);
39
- return () => window.removeEventListener('resize', handleResize);
47
+ const timeout = DevSimulateSSR
48
+ ? window.setTimeout(updateWindowSize, 1000)
49
+ : undefined;
50
+ window.addEventListener('resize', updateWindowSize);
51
+ return () => {
52
+ window.removeEventListener('resize', updateWindowSize);
53
+ clearTimeout(timeout);
54
+ };
40
55
  }, []);
41
56
  return windowSize;
42
57
  }
43
58
 
44
- export {windowSizes};
45
59
  export default useWindowSize;
@@ -10,8 +10,9 @@ import siteConfig from '@generated/docusaurus.config';
10
10
  const prismIncludeLanguages = (PrismObject) => {
11
11
  if (ExecutionEnvironment.canUseDOM) {
12
12
  const {
13
- themeConfig: {prism: {additionalLanguages = []} = {}},
13
+ themeConfig: {prism = {}},
14
14
  } = siteConfig;
15
+ const {additionalLanguages = []} = prism;
15
16
  window.Prism = PrismObject;
16
17
  additionalLanguages.forEach((lang) => {
17
18
  require(`prismjs/components/prism-${lang}`); // eslint-disable-line
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@docusaurus/theme-classic",
3
- "version": "2.0.0-beta.138b4c997",
3
+ "version": "2.0.0-beta.14",
4
4
  "description": "Classic theme for Docusaurus",
5
5
  "main": "lib/index.js",
6
- "types": "src/types.d.ts",
6
+ "types": "src/theme-classic.d.ts",
7
7
  "publishConfig": {
8
8
  "access": "public"
9
9
  },
@@ -14,50 +14,52 @@
14
14
  },
15
15
  "license": "MIT",
16
16
  "scripts": {
17
- "build": "tsc --noEmit && yarn babel:lib && yarn babel:lib-next && yarn prettier:lib-next",
18
- "watch": "concurrently -n \"lib,lib-next\" --kill-others \"yarn babel:lib --watch\" \"yarn babel:lib-next --watch\"",
17
+ "build": "tsc --noEmit && yarn babel:lib && yarn babel:lib-next && yarn format:lib-next",
18
+ "watch": "concurrently --names \"lib,lib-next,tsc\" --kill-others \"yarn babel:lib --watch\" \"yarn babel:lib-next --watch\" \"yarn tsc --watch\"",
19
19
  "babel:lib": "cross-env BABEL_ENV=lib babel src -d lib --extensions \".tsx,.ts\" --ignore \"**/*.d.ts\" --copy-files",
20
20
  "babel:lib-next": "cross-env BABEL_ENV=lib-next babel src -d lib-next --extensions \".tsx,.ts\" --ignore \"**/*.d.ts\" --copy-files",
21
- "prettier": "prettier --config ../../.prettierrc --ignore-path ../../.prettierignore --write \"**/*.{js,ts,jsx,tsc}\"",
22
- "prettier:lib-next": "prettier --config ../../.prettierrc --write \"lib-next/**/*.{js,ts,jsx,tsc}\"",
21
+ "format": "prettier --config ../../.prettierrc --ignore-path ../../.prettierignore --write \"**/*.{js,ts,jsx,tsc}\"",
22
+ "format:lib-next": "prettier --config ../../.prettierrc --write \"lib-next/**/*.{js,ts,jsx,tsc}\"",
23
23
  "update-code-translations": "node -e 'require(\"./update-code-translations.js\").run()'"
24
24
  },
25
25
  "dependencies": {
26
- "@docusaurus/core": "2.0.0-beta.138b4c997",
27
- "@docusaurus/plugin-content-blog": "2.0.0-beta.138b4c997",
28
- "@docusaurus/plugin-content-docs": "2.0.0-beta.138b4c997",
29
- "@docusaurus/plugin-content-pages": "2.0.0-beta.138b4c997",
30
- "@docusaurus/theme-common": "2.0.0-beta.138b4c997",
31
- "@docusaurus/types": "2.0.0-beta.138b4c997",
32
- "@docusaurus/utils": "2.0.0-beta.138b4c997",
33
- "@docusaurus/utils-common": "2.0.0-beta.138b4c997",
34
- "@docusaurus/utils-validation": "2.0.0-beta.138b4c997",
26
+ "@docusaurus/core": "2.0.0-beta.14",
27
+ "@docusaurus/plugin-content-blog": "2.0.0-beta.14",
28
+ "@docusaurus/plugin-content-docs": "2.0.0-beta.14",
29
+ "@docusaurus/plugin-content-pages": "2.0.0-beta.14",
30
+ "@docusaurus/theme-common": "2.0.0-beta.14",
31
+ "@docusaurus/theme-translations": "2.0.0-beta.14",
32
+ "@docusaurus/utils": "2.0.0-beta.14",
33
+ "@docusaurus/utils-validation": "2.0.0-beta.14",
35
34
  "@mdx-js/mdx": "^1.6.21",
36
35
  "@mdx-js/react": "^1.6.21",
37
- "chalk": "^4.1.1",
38
36
  "clsx": "^1.1.1",
39
37
  "copy-text-to-clipboard": "^3.0.1",
40
- "fs-extra": "^10.0.0",
41
38
  "globby": "^11.0.2",
42
- "infima": "0.2.0-alpha.26",
39
+ "infima": "0.2.0-alpha.37",
43
40
  "lodash": "^4.17.20",
44
- "parse-numeric-range": "^1.2.0",
45
- "postcss": "^8.2.15",
41
+ "postcss": "^8.3.7",
46
42
  "prism-react-renderer": "^1.2.1",
47
43
  "prismjs": "^1.23.0",
48
- "prop-types": "^15.7.2",
49
44
  "react-router-dom": "^5.2.0",
50
- "rtlcss": "^3.1.2"
45
+ "rtlcss": "^3.3.0"
51
46
  },
52
47
  "devDependencies": {
53
- "@docusaurus/module-type-aliases": "2.0.0-beta.138b4c997"
48
+ "@docusaurus/module-type-aliases": "2.0.0-beta.14",
49
+ "@docusaurus/types": "2.0.0-beta.14",
50
+ "@types/mdx-js__react": "^1.5.4",
51
+ "@types/parse-numeric-range": "^0.0.1",
52
+ "@types/rtlcss": "^3.1.1",
53
+ "fs-extra": "^10.0.0",
54
+ "react-test-renderer": "^17.0.2",
55
+ "utility-types": "^3.10.0"
54
56
  },
55
57
  "peerDependencies": {
56
58
  "react": "^16.8.4 || ^17.0.0",
57
59
  "react-dom": "^16.8.4 || ^17.0.0"
58
60
  },
59
61
  "engines": {
60
- "node": ">=12.13.0"
62
+ "node": ">=14"
61
63
  },
62
- "gitHead": "8cc620648710971acc459aabd2c6f505ef757701"
64
+ "gitHead": "c4824a8937d8f1aa0806667749cbc74058e2b294"
63
65
  }
@@ -0,0 +1,35 @@
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
+ .admonition h5 {
9
+ margin-top: 0;
10
+ margin-bottom: 8px;
11
+ text-transform: uppercase;
12
+ }
13
+
14
+ .admonition-icon {
15
+ display: inline-block;
16
+ vertical-align: middle;
17
+ margin-right: 0.4em;
18
+ }
19
+
20
+ .admonition-icon svg {
21
+ display: inline-block;
22
+ width: 22px;
23
+ height: 22px;
24
+ stroke-width: 0;
25
+ fill: var(--ifm-alert-foreground-color);
26
+ stroke: var(--ifm-alert-foreground-color);
27
+ }
28
+
29
+ .admonition-content > :last-child {
30
+ margin-bottom: 0;
31
+ }
32
+
33
+ .admonition {
34
+ margin-bottom: 1em;
35
+ }
package/src/deps.d.ts ADDED
@@ -0,0 +1,13 @@
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
+ declare module 'prism-react-renderer/prism' {
9
+ import type * as PrismNamespace from 'prismjs';
10
+
11
+ const Prism: typeof PrismNamespace;
12
+ export default Prism;
13
+ }
package/src/index.ts CHANGED
@@ -5,16 +5,16 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- import {DocusaurusContext, Plugin} from '@docusaurus/types';
8
+ import {DocusaurusContext, Plugin, PostCssOptions} from '@docusaurus/types';
9
9
  import type {ThemeConfig} from '@docusaurus/theme-common';
10
10
  import {getTranslationFiles, translateThemeConfig} from './translations';
11
11
  import path from 'path';
12
- import Module from 'module';
13
- import type {AcceptedPlugin, Result, Plugin as PostCssPlugin} from 'postcss';
12
+ import {createRequire} from 'module';
13
+ import type {Plugin as PostCssPlugin} from 'postcss';
14
14
  import rtlcss from 'rtlcss';
15
- import {readDefaultCodeTranslationMessages} from '@docusaurus/utils';
15
+ import {readDefaultCodeTranslationMessages} from '@docusaurus/theme-translations';
16
+ import type {Options} from '@docusaurus/theme-classic';
16
17
 
17
- const createRequire = Module.createRequire || Module.createRequireFromPath;
18
18
  const requireFromDocusaurusCore = createRequire(
19
19
  require.resolve('@docusaurus/core/package.json'),
20
20
  );
@@ -25,8 +25,10 @@ const ContextReplacementPlugin = requireFromDocusaurusCore(
25
25
  // Need to be inlined to prevent dark mode FOUC
26
26
  // Make sure that the 'storageKey' is the same as the one in `/theme/hooks/useTheme.js`
27
27
  const ThemeStorageKey = 'theme';
28
- const noFlashColorMode = ({defaultMode, respectPrefersColorScheme}) => {
29
- return `(function() {
28
+ const noFlashColorMode = ({
29
+ defaultMode,
30
+ respectPrefersColorScheme,
31
+ }: ThemeConfig['colorMode']) => `(function() {
30
32
  var defaultMode = '${defaultMode}';
31
33
  var respectPrefersColorScheme = ${respectPrefersColorScheme};
32
34
 
@@ -61,7 +63,6 @@ const noFlashColorMode = ({defaultMode, respectPrefersColorScheme}) => {
61
63
  }
62
64
  }
63
65
  })();`;
64
- };
65
66
 
66
67
  // Duplicated constant. Unfortunately we can't import it from theme-common, as we need to support older nodejs versions without ESM support
67
68
  // TODO: import from theme-common once we only support Node.js with ESM support
@@ -83,19 +84,15 @@ const AnnouncementBarInlineJavaScript = `
83
84
  document.documentElement.setAttribute('${AnnouncementBarDismissDataAttribute}', isDismissed());
84
85
  })();`;
85
86
 
86
- function getInfimaCSSFile(direction) {
87
+ function getInfimaCSSFile(direction: string) {
87
88
  return `infima/dist/css/default/default${
88
89
  direction === 'rtl' ? '-rtl' : ''
89
90
  }.css`;
90
91
  }
91
92
 
92
- type PluginOptions = {
93
- customCss?: string;
94
- };
95
-
96
93
  export default function docusaurusThemeClassic(
97
94
  context: DocusaurusContext, // TODO: LoadContext is missing some of properties
98
- options: PluginOptions,
95
+ options: Options,
99
96
  ): Plugin<void> {
100
97
  const {
101
98
  siteConfig: {themeConfig: roughlyTypedThemeConfig},
@@ -132,12 +129,17 @@ export default function docusaurusThemeClassic(
132
129
  },
133
130
 
134
131
  getTranslationFiles: async () => getTranslationFiles({themeConfig}),
135
- translateThemeConfig,
136
132
 
137
- getDefaultCodeTranslationMessages: () => {
133
+ translateThemeConfig: (params) =>
134
+ translateThemeConfig({
135
+ themeConfig: params.themeConfig as ThemeConfig,
136
+ translationFiles: params.translationFiles,
137
+ }),
138
+
139
+ getDefaultCodeTranslationMessages() {
138
140
  return readDefaultCodeTranslationMessages({
139
- dirPath: path.resolve(__dirname, '..', 'codeTranslations'),
140
141
  locale: currentLocale,
142
+ name: 'theme-common',
141
143
  });
142
144
  },
143
145
 
@@ -145,6 +147,7 @@ export default function docusaurusThemeClassic(
145
147
  const modules = [
146
148
  require.resolve(getInfimaCSSFile(direction)),
147
149
  path.resolve(__dirname, './prism-include-languages'),
150
+ path.resolve(__dirname, './admonitions.css'),
148
151
  ];
149
152
 
150
153
  if (customCss) {
@@ -177,18 +180,18 @@ export default function docusaurusThemeClassic(
177
180
  };
178
181
  },
179
182
 
180
- configurePostCss(postCssOptions: {plugins: AcceptedPlugin[]}) {
183
+ configurePostCss(postCssOptions: PostCssOptions) {
181
184
  if (direction === 'rtl') {
182
185
  const resolvedInfimaFile = require.resolve(getInfimaCSSFile(direction));
183
186
  const plugin: PostCssPlugin = {
184
187
  postcssPlugin: 'RtlCssPlugin',
185
- prepare: (result: Result) => {
188
+ prepare: (result) => {
186
189
  const file = result.root?.source?.input?.file;
187
190
  // Skip Infima as we are using the its RTL version.
188
191
  if (file === resolvedInfimaFile) {
189
192
  return {};
190
193
  }
191
- return rtlcss(result.root);
194
+ return rtlcss(result.root as unknown as rtlcss.ConfigOptions);
192
195
  },
193
196
  };
194
197
  postCssOptions.plugins.push(plugin);
@@ -0,0 +1,106 @@
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 React from 'react';
9
+ import clsx from 'clsx';
10
+ import {Props} from '@theme/Admonition';
11
+
12
+ const icons = {
13
+ note: (
14
+ <svg
15
+ xmlns="http://www.w3.org/2000/svg"
16
+ width="14"
17
+ height="16"
18
+ viewBox="0 0 14 16">
19
+ <path
20
+ fillRule="evenodd"
21
+ 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"
22
+ />
23
+ </svg>
24
+ ),
25
+ tip: (
26
+ <svg
27
+ xmlns="http://www.w3.org/2000/svg"
28
+ width="12"
29
+ height="16"
30
+ viewBox="0 0 12 16">
31
+ <path
32
+ fillRule="evenodd"
33
+ 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"
34
+ />
35
+ </svg>
36
+ ),
37
+ danger: (
38
+ <svg
39
+ xmlns="http://www.w3.org/2000/svg"
40
+ width="12"
41
+ height="16"
42
+ viewBox="0 0 12 16">
43
+ <path
44
+ fillRule="evenodd"
45
+ 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"
46
+ />
47
+ </svg>
48
+ ),
49
+ info: (
50
+ <svg
51
+ xmlns="http://www.w3.org/2000/svg"
52
+ width="14"
53
+ height="16"
54
+ viewBox="0 0 14 16">
55
+ <path
56
+ fillRule="evenodd"
57
+ 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"
58
+ />
59
+ </svg>
60
+ ),
61
+ caution: (
62
+ <svg
63
+ xmlns="http://www.w3.org/2000/svg"
64
+ width="16"
65
+ height="16"
66
+ viewBox="0 0 16 16">
67
+ <path
68
+ fillRule="evenodd"
69
+ 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"
70
+ />
71
+ </svg>
72
+ ),
73
+ };
74
+
75
+ const ifmClassNames = {
76
+ note: 'secondary',
77
+ tip: 'success',
78
+ danger: 'danger',
79
+ info: 'info',
80
+ caution: 'warning',
81
+ };
82
+
83
+ export default function Admonition({
84
+ children,
85
+ type,
86
+ title = type,
87
+ icon = icons[type],
88
+ }: Props): JSX.Element {
89
+ return (
90
+ <div
91
+ className={clsx(
92
+ 'admonition',
93
+ `admonition-${type}`,
94
+ 'alert',
95
+ `alert--${ifmClassNames[type]}`,
96
+ )}>
97
+ <div className="admonition-heading">
98
+ <h5>
99
+ <span className="admonition-icon">{icon}</span>
100
+ {title}
101
+ </h5>
102
+ </div>
103
+ <div className="admonition-content">{children}</div>
104
+ </div>
105
+ );
106
+ }
@@ -9,32 +9,28 @@ import React from 'react';
9
9
  import clsx from 'clsx';
10
10
  import {useThemeConfig, useAnnouncementBar} from '@docusaurus/theme-common';
11
11
  import {translate} from '@docusaurus/Translate';
12
+ import IconClose from '@theme/IconClose';
12
13
 
13
14
  import styles from './styles.module.css';
14
15
 
15
16
  function AnnouncementBar(): JSX.Element | null {
16
- const {isClosed, close} = useAnnouncementBar();
17
+ const {isActive, close} = useAnnouncementBar();
17
18
  const {announcementBar} = useThemeConfig();
18
19
 
19
- if (!announcementBar) {
20
+ if (!isActive) {
20
21
  return null;
21
22
  }
22
23
 
23
- const {content, backgroundColor, textColor, isCloseable} = announcementBar;
24
-
25
- if (!content || (isCloseable && isClosed)) {
26
- return null;
27
- }
24
+ const {content, backgroundColor, textColor, isCloseable} = announcementBar!;
28
25
 
29
26
  return (
30
27
  <div
31
28
  className={styles.announcementBar}
32
29
  style={{backgroundColor, color: textColor}}
33
30
  role="banner">
31
+ {isCloseable && <div className={styles.announcementBarPlaceholder} />}
34
32
  <div
35
- className={clsx(styles.announcementBarContent, {
36
- [styles.announcementBarCloseable]: isCloseable,
37
- })}
33
+ className={styles.announcementBarContent}
38
34
  // Developer provided the HTML, so assume it's safe.
39
35
  // eslint-disable-next-line react/no-danger
40
36
  dangerouslySetInnerHTML={{__html: content}}
@@ -42,14 +38,14 @@ function AnnouncementBar(): JSX.Element | null {
42
38
  {isCloseable ? (
43
39
  <button
44
40
  type="button"
45
- className={clsx(styles.announcementBarClose, 'clean-btn')}
41
+ className={clsx('clean-btn close', styles.announcementBarClose)}
46
42
  onClick={close}
47
43
  aria-label={translate({
48
44
  id: 'theme.AnnouncementBar.closeButtonAriaLabel',
49
45
  message: 'Close',
50
46
  description: 'The ARIA label for close button of announcement bar',
51
47
  })}>
52
- <span aria-hidden="true">×</span>
48
+ <IconClose width={14} height={14} strokeWidth={3.1} />
53
49
  </button>
54
50
  ) : null}
55
51
  </div>