@docusaurus/theme-classic 2.0.0-beta.8bda3b2db → 2.0.0-beta.9

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 (310) hide show
  1. package/README.md +1 -1
  2. package/codeTranslations/ar.json +12 -7
  3. package/codeTranslations/base.json +17 -7
  4. package/codeTranslations/bn.json +11 -5
  5. package/codeTranslations/cs.json +62 -0
  6. package/codeTranslations/da.json +8 -3
  7. package/codeTranslations/de.json +8 -3
  8. package/codeTranslations/es.json +15 -10
  9. package/codeTranslations/fa.json +31 -26
  10. package/codeTranslations/fil.json +8 -3
  11. package/codeTranslations/fr.json +8 -3
  12. package/codeTranslations/he.json +9 -4
  13. package/codeTranslations/hi.json +9 -4
  14. package/codeTranslations/ja.json +8 -3
  15. package/codeTranslations/ko.json +8 -3
  16. package/codeTranslations/pl.json +8 -3
  17. package/codeTranslations/pt-BR.json +16 -11
  18. package/codeTranslations/pt-PT.json +8 -3
  19. package/codeTranslations/ru.json +10 -5
  20. package/codeTranslations/sr.json +62 -0
  21. package/codeTranslations/tr.json +9 -4
  22. package/codeTranslations/vi.json +10 -5
  23. package/codeTranslations/zh-Hans.json +9 -4
  24. package/codeTranslations/zh-Hant.json +9 -4
  25. package/lib/__tests__/validateThemeConfig.test.js +277 -3
  26. package/lib/admonitions.css +35 -0
  27. package/lib/index.js +31 -8
  28. package/lib/prism-include-languages.js +9 -5
  29. package/lib/theme/AnnouncementBar/index.js +10 -16
  30. package/lib/theme/AnnouncementBar/styles.module.css +25 -30
  31. package/lib/theme/BackToTopButton/index.js +140 -0
  32. package/lib/theme/BackToTopButton/styles.module.css +42 -0
  33. package/lib/theme/BlogArchivePage/index.js +89 -0
  34. package/lib/theme/BlogLayout/index.js +51 -0
  35. package/lib/theme/BlogListPage/index.js +10 -21
  36. package/lib/theme/BlogPostAuthor/index.js +51 -0
  37. package/lib/theme/BlogPostAuthor/styles.module.css +12 -0
  38. package/lib/theme/BlogPostAuthors/index.js +47 -0
  39. package/lib/theme/BlogPostAuthors/styles.module.css +11 -0
  40. package/lib/theme/BlogPostItem/index.js +58 -67
  41. package/lib/theme/BlogPostPage/index.js +37 -24
  42. package/lib/theme/BlogSidebar/styles.module.css +2 -2
  43. package/lib/theme/BlogTagsListPage/index.js +8 -44
  44. package/lib/theme/BlogTagsPostsPage/index.js +24 -38
  45. package/lib/theme/CodeBlock/index.js +45 -41
  46. package/lib/theme/CodeBlock/styles.module.css +6 -9
  47. package/lib/theme/Details/index.js +30 -0
  48. package/lib/theme/Details/styles.module.css +13 -0
  49. package/lib/theme/DocItem/index.js +29 -45
  50. package/lib/theme/DocItem/styles.module.css +5 -9
  51. package/lib/theme/DocItemFooter/index.js +79 -0
  52. package/lib/theme/DocItemFooter/styles.module.css +18 -0
  53. package/lib/theme/DocPage/index.js +25 -49
  54. package/lib/theme/DocPage/styles.module.css +8 -23
  55. package/lib/theme/DocSidebar/index.js +45 -227
  56. package/lib/theme/DocSidebar/styles.module.css +0 -18
  57. package/lib/theme/DocSidebarItem/index.js +177 -0
  58. package/lib/theme/DocSidebarItem/styles.module.css +15 -0
  59. package/lib/theme/DocTagDocListPage/index.js +89 -0
  60. package/lib/theme/DocTagsListPage/index.js +44 -0
  61. package/lib/theme/{DocVersionSuggestions → DocVersionBanner}/index.js +37 -18
  62. package/lib/theme/EditThisPage/index.js +3 -1
  63. package/lib/theme/Footer/index.js +13 -4
  64. package/lib/theme/Heading/index.js +7 -9
  65. package/lib/theme/Heading/styles.css +4 -6
  66. package/lib/theme/Heading/styles.module.css +9 -5
  67. package/lib/theme/IconClose/index.js +31 -0
  68. package/lib/theme/LastUpdated/index.js +4 -2
  69. package/lib/theme/LayoutHead/index.js +13 -11
  70. package/lib/theme/LayoutProviders/index.js +11 -5
  71. package/lib/theme/Logo/index.js +14 -12
  72. package/lib/theme/MDXComponents/index.js +45 -4
  73. package/lib/theme/MDXComponents/styles.css +11 -0
  74. package/lib/theme/MDXPage/index.js +2 -1
  75. package/lib/theme/Navbar/index.js +164 -42
  76. package/lib/theme/Navbar/styles.module.css +10 -3
  77. package/lib/theme/NavbarItem/DefaultNavbarItem.js +27 -123
  78. package/lib/theme/NavbarItem/DocNavbarItem.js +6 -5
  79. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +19 -12
  80. package/lib/theme/NavbarItem/DropdownNavbarItem.js +155 -0
  81. package/lib/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +5 -6
  82. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  83. package/lib/theme/NavbarItem/index.js +31 -11
  84. package/lib/theme/Seo/index.js +10 -7
  85. package/lib/theme/SkipToContent/index.js +9 -3
  86. package/lib/theme/SkipToContent/styles.module.css +1 -0
  87. package/lib/theme/TOC/index.js +9 -29
  88. package/lib/theme/TOC/styles.module.css +1 -1
  89. package/lib/theme/TOCCollapsible/index.js +53 -0
  90. package/lib/theme/TOCCollapsible/styles.module.css +50 -0
  91. package/lib/theme/TOCInline/index.js +7 -27
  92. package/lib/theme/TOCItems/index.js +78 -0
  93. package/lib/theme/Tabs/__tests__/index.test.js +123 -0
  94. package/lib/theme/Tabs/index.js +73 -50
  95. package/lib/theme/Tabs/styles.module.css +0 -13
  96. package/lib/theme/Tag/index.js +40 -0
  97. package/lib/theme/Tag/styles.module.css +70 -0
  98. package/lib/theme/TagsListByLetter/index.js +48 -0
  99. package/lib/theme/TagsListByLetter/styles.module.css +11 -0
  100. package/lib/theme/TagsListInline/index.js +44 -0
  101. package/lib/theme/TagsListInline/styles.module.css +15 -0
  102. package/lib/theme/ThemedImage/index.js +4 -5
  103. package/lib/theme/Toggle/index.js +23 -18
  104. package/lib/theme/Toggle/styles.module.css +91 -0
  105. package/lib/theme/UserPreferencesProvider/index.js +1 -9
  106. package/lib/theme/hooks/useHideableNavbar.js +14 -32
  107. package/lib/theme/hooks/useTabGroupChoice.js +2 -4
  108. package/lib/theme/hooks/useTheme.js +2 -2
  109. package/lib/theme/hooks/useWindowSize.js +33 -20
  110. package/lib/theme/prism-include-languages.js +4 -3
  111. package/lib/translations.js +4 -4
  112. package/lib/types.d.ts +338 -138
  113. package/lib/validateThemeConfig.js +226 -245
  114. package/lib-next/__tests__/validateThemeConfig.test.js +277 -3
  115. package/lib-next/admonitions.css +35 -0
  116. package/lib-next/index.js +33 -7
  117. package/lib-next/prism-include-languages.js +0 -2
  118. package/lib-next/theme/AnnouncementBar/index.js +9 -18
  119. package/lib-next/theme/AnnouncementBar/styles.module.css +25 -30
  120. package/lib-next/theme/BackToTopButton/index.js +131 -0
  121. package/lib-next/theme/BackToTopButton/styles.module.css +42 -0
  122. package/lib-next/theme/BlogArchivePage/index.js +80 -0
  123. package/lib-next/theme/BlogLayout/index.js +40 -0
  124. package/lib-next/theme/BlogListPage/index.js +16 -24
  125. package/lib-next/theme/BlogPostAuthor/index.js +46 -0
  126. package/lib-next/theme/BlogPostAuthor/styles.module.css +12 -0
  127. package/lib-next/theme/BlogPostAuthors/index.js +34 -0
  128. package/lib-next/theme/BlogPostAuthors/styles.module.css +11 -0
  129. package/lib-next/theme/BlogPostItem/index.js +79 -86
  130. package/lib-next/theme/BlogPostPage/index.js +70 -35
  131. package/lib-next/theme/BlogSidebar/styles.module.css +2 -2
  132. package/lib-next/theme/BlogTagsListPage/index.js +13 -54
  133. package/lib-next/theme/BlogTagsPostsPage/index.js +28 -38
  134. package/lib-next/theme/CodeBlock/index.js +54 -53
  135. package/lib-next/theme/CodeBlock/styles.module.css +6 -9
  136. package/lib-next/theme/Details/index.js +20 -0
  137. package/lib-next/theme/Details/styles.module.css +13 -0
  138. package/lib-next/theme/DocItem/index.js +46 -55
  139. package/lib-next/theme/DocItem/styles.module.css +5 -9
  140. package/lib-next/theme/DocItemFooter/index.js +79 -0
  141. package/lib-next/theme/DocItemFooter/styles.module.css +18 -0
  142. package/lib-next/theme/DocPage/index.js +25 -43
  143. package/lib-next/theme/DocPage/styles.module.css +8 -23
  144. package/lib-next/theme/DocSidebar/index.js +59 -288
  145. package/lib-next/theme/DocSidebar/styles.module.css +0 -18
  146. package/lib-next/theme/DocSidebarItem/index.js +181 -0
  147. package/lib-next/theme/DocSidebarItem/styles.module.css +15 -0
  148. package/lib-next/theme/DocTagDocListPage/index.js +89 -0
  149. package/lib-next/theme/DocTagsListPage/index.js +38 -0
  150. package/lib-next/theme/{DocVersionSuggestions → DocVersionBanner}/index.js +44 -36
  151. package/lib-next/theme/EditThisPage/index.js +6 -1
  152. package/lib-next/theme/Footer/index.js +24 -4
  153. package/lib-next/theme/Heading/index.js +10 -13
  154. package/lib-next/theme/Heading/styles.css +4 -6
  155. package/lib-next/theme/Heading/styles.module.css +9 -5
  156. package/lib-next/theme/IconClose/index.js +23 -0
  157. package/lib-next/theme/LastUpdated/index.js +3 -2
  158. package/lib-next/theme/LayoutHead/index.js +9 -15
  159. package/lib-next/theme/LayoutProviders/index.js +17 -6
  160. package/lib-next/theme/Logo/index.js +23 -19
  161. package/lib-next/theme/MDXComponents/index.js +34 -7
  162. package/lib-next/theme/MDXComponents/styles.css +11 -0
  163. package/lib-next/theme/MDXPage/index.js +10 -2
  164. package/lib-next/theme/Navbar/index.js +192 -56
  165. package/lib-next/theme/Navbar/styles.module.css +10 -3
  166. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +45 -147
  167. package/lib-next/theme/NavbarItem/DocNavbarItem.js +6 -5
  168. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +31 -19
  169. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +158 -0
  170. package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +4 -8
  171. package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  172. package/lib-next/theme/NavbarItem/index.js +25 -12
  173. package/lib-next/theme/Seo/index.js +11 -7
  174. package/lib-next/theme/SkipToContent/index.js +5 -6
  175. package/lib-next/theme/SkipToContent/styles.module.css +1 -0
  176. package/lib-next/theme/TOC/index.js +12 -36
  177. package/lib-next/theme/TOC/styles.module.css +1 -1
  178. package/lib-next/theme/TOCCollapsible/index.js +54 -0
  179. package/lib-next/theme/TOCCollapsible/styles.module.css +50 -0
  180. package/lib-next/theme/TOCInline/index.js +10 -28
  181. package/lib-next/theme/TOCItems/index.js +85 -0
  182. package/lib-next/theme/Tabs/__tests__/index.test.js +142 -0
  183. package/lib-next/theme/Tabs/index.js +91 -43
  184. package/lib-next/theme/Tabs/styles.module.css +0 -13
  185. package/lib-next/theme/Tag/index.js +27 -0
  186. package/lib-next/theme/Tag/styles.module.css +70 -0
  187. package/lib-next/theme/TagsListByLetter/index.js +42 -0
  188. package/lib-next/theme/TagsListByLetter/styles.module.css +11 -0
  189. package/lib-next/theme/TagsListInline/index.js +31 -0
  190. package/lib-next/theme/TagsListInline/styles.module.css +15 -0
  191. package/lib-next/theme/ThemedImage/index.js +5 -6
  192. package/lib-next/theme/Toggle/index.js +20 -15
  193. package/lib-next/theme/Toggle/styles.module.css +91 -0
  194. package/lib-next/theme/UserPreferencesProvider/index.js +0 -4
  195. package/lib-next/theme/hooks/useHideableNavbar.js +31 -44
  196. package/lib-next/theme/hooks/useTabGroupChoice.js +2 -4
  197. package/lib-next/theme/hooks/useTheme.js +2 -2
  198. package/lib-next/theme/hooks/useWindowSize.js +34 -20
  199. package/lib-next/theme/prism-include-languages.js +2 -1
  200. package/lib-next/translations.js +6 -10
  201. package/lib-next/types.d.ts +338 -138
  202. package/lib-next/validateThemeConfig.js +134 -110
  203. package/package.json +24 -19
  204. package/src/__tests__/validateThemeConfig.test.js +277 -3
  205. package/src/admonitions.css +35 -0
  206. package/src/index.ts +44 -14
  207. package/src/{prism-include-languages.js → prism-include-languages.ts} +0 -0
  208. package/src/theme/AnnouncementBar/index.tsx +10 -17
  209. package/src/theme/AnnouncementBar/styles.module.css +25 -30
  210. package/src/theme/BackToTopButton/index.tsx +142 -0
  211. package/src/theme/BackToTopButton/styles.module.css +42 -0
  212. package/src/theme/BlogArchivePage/index.tsx +91 -0
  213. package/src/theme/BlogLayout/index.tsx +44 -0
  214. package/src/theme/BlogListPage/index.tsx +17 -24
  215. package/src/theme/BlogPostAuthor/index.tsx +49 -0
  216. package/src/theme/BlogPostAuthor/styles.module.css +12 -0
  217. package/src/theme/BlogPostAuthors/index.tsx +36 -0
  218. package/src/theme/BlogPostAuthors/styles.module.css +11 -0
  219. package/src/theme/BlogPostItem/index.tsx +70 -80
  220. package/src/theme/BlogPostPage/index.tsx +72 -35
  221. package/src/theme/BlogSidebar/styles.module.css +2 -2
  222. package/src/theme/BlogTagsListPage/index.tsx +13 -56
  223. package/src/theme/BlogTagsPostsPage/index.tsx +28 -38
  224. package/src/theme/CodeBlock/index.tsx +70 -55
  225. package/src/theme/CodeBlock/styles.module.css +6 -9
  226. package/src/theme/Details/index.tsx +24 -0
  227. package/src/theme/Details/styles.module.css +13 -0
  228. package/src/theme/DocItem/index.tsx +49 -55
  229. package/src/theme/DocItem/styles.module.css +5 -9
  230. package/src/theme/DocItemFooter/index.tsx +91 -0
  231. package/src/theme/DocItemFooter/styles.module.css +18 -0
  232. package/src/theme/DocPage/index.tsx +24 -38
  233. package/src/theme/DocPage/styles.module.css +8 -23
  234. package/src/theme/DocSidebar/index.tsx +70 -300
  235. package/src/theme/DocSidebar/styles.module.css +0 -18
  236. package/src/theme/DocSidebarItem/index.tsx +206 -0
  237. package/src/theme/DocSidebarItem/styles.module.css +15 -0
  238. package/src/theme/DocTagDocListPage/index.tsx +89 -0
  239. package/src/theme/DocTagsListPage/index.tsx +41 -0
  240. package/src/theme/{DocVersionSuggestions → DocVersionBanner}/index.tsx +58 -44
  241. package/src/theme/EditThisPage/index.tsx +6 -1
  242. package/src/theme/Footer/index.tsx +26 -4
  243. package/src/theme/Heading/index.tsx +10 -13
  244. package/src/theme/Heading/styles.css +4 -6
  245. package/src/theme/Heading/styles.module.css +9 -5
  246. package/src/theme/IconClose/index.tsx +26 -0
  247. package/src/theme/LastUpdated/index.tsx +3 -2
  248. package/src/theme/LayoutHead/index.tsx +9 -9
  249. package/src/theme/LayoutProviders/index.tsx +17 -6
  250. package/src/theme/Logo/index.tsx +19 -15
  251. package/src/theme/MDXComponents/index.tsx +39 -5
  252. package/src/theme/MDXComponents/styles.css +11 -0
  253. package/src/theme/MDXPage/index.tsx +10 -2
  254. package/src/theme/Navbar/index.tsx +202 -61
  255. package/src/theme/Navbar/styles.module.css +10 -3
  256. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +42 -154
  257. package/src/theme/NavbarItem/DocNavbarItem.tsx +11 -14
  258. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +33 -21
  259. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +7 -3
  260. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +180 -0
  261. package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +8 -7
  262. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  263. package/src/theme/NavbarItem/index.tsx +41 -16
  264. package/src/theme/Seo/index.tsx +7 -4
  265. package/src/theme/SkipToContent/index.tsx +5 -6
  266. package/src/theme/SkipToContent/styles.module.css +1 -0
  267. package/src/theme/TOC/index.tsx +12 -41
  268. package/src/theme/TOC/styles.module.css +1 -1
  269. package/src/theme/TOCCollapsible/index.tsx +58 -0
  270. package/src/theme/TOCCollapsible/styles.module.css +50 -0
  271. package/src/theme/TOCInline/index.tsx +13 -32
  272. package/src/theme/TOCItems/index.tsx +96 -0
  273. package/src/theme/Tabs/__tests__/index.test.tsx +129 -0
  274. package/src/theme/Tabs/index.tsx +93 -49
  275. package/src/theme/Tabs/styles.module.css +0 -13
  276. package/src/theme/Tag/index.tsx +31 -0
  277. package/src/theme/Tag/styles.module.css +70 -0
  278. package/src/theme/TagsListByLetter/index.tsx +45 -0
  279. package/src/theme/TagsListByLetter/styles.module.css +11 -0
  280. package/src/theme/TagsListInline/index.tsx +35 -0
  281. package/src/theme/TagsListInline/styles.module.css +15 -0
  282. package/src/theme/ThemedImage/index.tsx +6 -6
  283. package/src/theme/Toggle/index.tsx +20 -15
  284. package/src/theme/Toggle/styles.module.css +91 -0
  285. package/src/theme/UserPreferencesProvider/index.tsx +0 -5
  286. package/src/theme/hooks/useContextualSearchFilters.ts +1 -1
  287. package/src/theme/hooks/useHideableNavbar.ts +32 -45
  288. package/src/theme/hooks/useTabGroupChoice.ts +4 -4
  289. package/src/theme/hooks/useTheme.ts +2 -2
  290. package/src/theme/hooks/useWindowSize.ts +38 -20
  291. package/src/theme/prism-include-languages.ts +3 -2
  292. package/src/translations.ts +6 -10
  293. package/src/types.d.ts +338 -138
  294. package/src/{validateThemeConfig.js → validateThemeConfig.ts} +144 -90
  295. package/tsconfig.json +1 -2
  296. package/update-code-translations.js +10 -6
  297. package/update-code-translations.test.js +1 -1
  298. package/update.js +151 -0
  299. package/lib/theme/Toggle/styles.css +0 -103
  300. package/lib/theme/hooks/useAnnouncementBar.js +0 -63
  301. package/lib/theme/hooks/useScrollPosition.js +0 -49
  302. package/lib/theme/hooks/useTOCHighlight.js +0 -87
  303. package/lib-next/theme/Toggle/styles.css +0 -103
  304. package/lib-next/theme/hooks/useAnnouncementBar.js +0 -49
  305. package/lib-next/theme/hooks/useScrollPosition.js +0 -38
  306. package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
  307. package/src/theme/Toggle/styles.css +0 -103
  308. package/src/theme/hooks/useAnnouncementBar.ts +0 -58
  309. package/src/theme/hooks/useScrollPosition.ts +0 -45
  310. package/src/theme/hooks/useTOCHighlight.ts +0 -98
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _clsx = _interopRequireDefault(require("clsx"));
11
+
12
+ var _Translate = require("@docusaurus/Translate");
13
+
14
+ var _stylesModule = _interopRequireDefault(require("./styles.module.css"));
15
+
16
+ var _themeCommon = require("@docusaurus/theme-common");
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
+
22
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
+
24
+ /**
25
+ * Copyright (c) Facebook, Inc. and its affiliates.
26
+ *
27
+ * This source code is licensed under the MIT license found in the
28
+ * LICENSE file in the root directory of this source tree.
29
+ */
30
+ const threshold = 300; // Not all have support for smooth scrolling (particularly Safari mobile iOS)
31
+ // TODO proper detection is currently unreliable!
32
+ // see https://github.com/wessberg/scroll-behavior-polyfill/issues/16
33
+
34
+ const SupportsNativeSmoothScrolling = false; // const SupportsNativeSmoothScrolling = ExecutionEnvironment.canUseDOM && 'scrollBehavior' in document.documentElement.style;
35
+
36
+ function smoothScrollTopNative() {
37
+ window.scrollTo({
38
+ top: 0,
39
+ behavior: 'smooth'
40
+ });
41
+ return () => {// Nothing to cancel, it's natively cancelled if user tries to scroll down
42
+ };
43
+ }
44
+
45
+ function smoothScrollTopPolyfill() {
46
+ let raf = null;
47
+
48
+ function rafRecursion() {
49
+ const currentScroll = document.documentElement.scrollTop;
50
+
51
+ if (currentScroll > 0) {
52
+ raf = requestAnimationFrame(rafRecursion);
53
+ window.scrollTo(0, Math.floor(currentScroll * 0.85));
54
+ }
55
+ }
56
+
57
+ rafRecursion(); // Break the recursion
58
+ // Prevents the user from "fighting" against that recursion producing a weird UX
59
+
60
+ return () => raf && cancelAnimationFrame(raf);
61
+ }
62
+
63
+ function useSmoothScrollToTop() {
64
+ const lastCancelRef = (0, _react.useRef)(null);
65
+
66
+ function smoothScrollTop() {
67
+ lastCancelRef.current = SupportsNativeSmoothScrolling ? smoothScrollTopNative() : smoothScrollTopPolyfill();
68
+ }
69
+
70
+ return {
71
+ smoothScrollTop,
72
+ cancelScrollToTop: () => {
73
+ var _lastCancelRef$curren;
74
+
75
+ return (_lastCancelRef$curren = lastCancelRef.current) === null || _lastCancelRef$curren === void 0 ? void 0 : _lastCancelRef$curren.call(lastCancelRef);
76
+ }
77
+ };
78
+ }
79
+
80
+ function BackToTopButton() {
81
+ const [show, setShow] = (0, _react.useState)(false);
82
+ const isFocusedAnchor = (0, _react.useRef)(false);
83
+ const {
84
+ smoothScrollTop,
85
+ cancelScrollToTop
86
+ } = useSmoothScrollToTop();
87
+ (0, _themeCommon.useScrollPosition)(({
88
+ scrollY: scrollTop
89
+ }, lastPosition) => {
90
+ const lastScrollTop = lastPosition === null || lastPosition === void 0 ? void 0 : lastPosition.scrollY; // No lastScrollTop means component is just being mounted.
91
+ // Not really a scroll event from the user, so we ignore it
92
+
93
+ if (!lastScrollTop) {
94
+ return;
95
+ }
96
+
97
+ if (isFocusedAnchor.current) {
98
+ isFocusedAnchor.current = false;
99
+ return;
100
+ }
101
+
102
+ const isScrollingUp = scrollTop < lastScrollTop;
103
+
104
+ if (!isScrollingUp) {
105
+ cancelScrollToTop();
106
+ }
107
+
108
+ if (scrollTop < threshold) {
109
+ setShow(false);
110
+ return;
111
+ }
112
+
113
+ if (isScrollingUp) {
114
+ const documentHeight = document.documentElement.scrollHeight;
115
+ const windowHeight = window.innerHeight;
116
+
117
+ if (scrollTop + windowHeight < documentHeight) {
118
+ setShow(true);
119
+ }
120
+ } else {
121
+ setShow(false);
122
+ }
123
+ });
124
+ (0, _themeCommon.useLocationChange)(locationChangeEvent => {
125
+ if (locationChangeEvent.location.hash) {
126
+ isFocusedAnchor.current = true;
127
+ setShow(false);
128
+ }
129
+ });
130
+ return <button aria-label={(0, _Translate.translate)({
131
+ id: 'theme.BackToTopButton.buttonAriaLabel',
132
+ message: 'Scroll back to top',
133
+ description: 'The ARIA label for the back to top button'
134
+ })} className={(0, _clsx.default)('clean-btn', _themeCommon.ThemeClassNames.common.backToTopButton, _stylesModule.default.backToTopButton, {
135
+ [_stylesModule.default.backToTopButtonShow]: show
136
+ })} type="button" onClick={() => smoothScrollTop()} />;
137
+ }
138
+
139
+ var _default = BackToTopButton;
140
+ exports.default = _default;
@@ -0,0 +1,42 @@
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
+ .backToTopButton {
9
+ position: fixed;
10
+ right: 1.3rem;
11
+ bottom: 1.3rem;
12
+ border-radius: 50%;
13
+ background-color: var(--ifm-color-emphasis-200);
14
+ width: 3rem;
15
+ height: 3rem;
16
+ z-index: var(--ifm-z-index-fixed);
17
+ box-shadow: var(--ifm-global-shadow-lw);
18
+ transition: all var(--ifm-transition-fast)
19
+ var(--ifm-transition-timing-default);
20
+ opacity: 0;
21
+ transform: scale(0);
22
+ }
23
+
24
+ .backToTopButton:after {
25
+ content: ' ';
26
+ display: inline-block;
27
+ mask: var(--ifm-menu-link-sublist-icon) 50% / 2rem 2rem no-repeat;
28
+ background-color: var(--ifm-color-emphasis-1000);
29
+ width: 100%;
30
+ height: 100%;
31
+ }
32
+
33
+ @media (hover: hover) {
34
+ .backToTopButton:hover {
35
+ background-color: var(--ifm-color-emphasis-300);
36
+ }
37
+ }
38
+
39
+ .backToTopButtonShow {
40
+ opacity: 1;
41
+ transform: scale(1);
42
+ }
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = BlogArchive;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _Layout = _interopRequireDefault(require("@theme/Layout"));
11
+
12
+ var _Link = _interopRequireDefault(require("@docusaurus/Link"));
13
+
14
+ var _Translate = require("@docusaurus/Translate");
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ /**
19
+ * Copyright (c) Facebook, Inc. and its affiliates.
20
+ *
21
+ * This source code is licensed under the MIT license found in the
22
+ * LICENSE file in the root directory of this source tree.
23
+ */
24
+ function Year({
25
+ year,
26
+ posts
27
+ }) {
28
+ return <>
29
+ <h3>{year}</h3>
30
+ <ul>
31
+ {posts.map(post => <li key={post.metadata.date}>
32
+ <_Link.default to={post.metadata.permalink}>
33
+ {post.metadata.formattedDate} - {post.metadata.title}
34
+ </_Link.default>
35
+ </li>)}
36
+ </ul>
37
+ </>;
38
+ }
39
+
40
+ function YearsSection({
41
+ years
42
+ }) {
43
+ return <section className="margin-vert--lg">
44
+ <div className="container">
45
+ <div className="row">
46
+ {years.map((_props, idx) => <div key={idx} className="col col--4 margin-vert--lg">
47
+ <Year {..._props} />
48
+ </div>)}
49
+ </div>
50
+ </div>
51
+ </section>;
52
+ }
53
+
54
+ function listPostsByYears(blogPosts) {
55
+ const postsByYear = blogPosts.reduceRight((posts, post) => {
56
+ const year = post.metadata.date.split('-')[0];
57
+ const yearPosts = posts.get(year) || [];
58
+ return posts.set(year, [post, ...yearPosts]);
59
+ }, new Map());
60
+ return Array.from(postsByYear, ([year, posts]) => ({
61
+ year,
62
+ posts
63
+ }));
64
+ }
65
+
66
+ function BlogArchive({
67
+ archive
68
+ }) {
69
+ const title = (0, _Translate.translate)({
70
+ id: 'theme.blog.archive.title',
71
+ message: 'Archive',
72
+ description: 'The page & hero title of the blog archive page'
73
+ });
74
+ const description = (0, _Translate.translate)({
75
+ id: 'theme.blog.archive.description',
76
+ message: 'Archive',
77
+ description: 'The page & hero description of the blog archive page'
78
+ });
79
+ const years = listPostsByYears(archive.blogPosts);
80
+ return <_Layout.default title={title} description={description}>
81
+ <header className="hero hero--primary">
82
+ <div className="container">
83
+ <h1 className="hero__title">{title}</h1>
84
+ <p className="hero__subtitle">{description}</p>
85
+ </div>
86
+ </header>
87
+ <main>{years.length > 0 && <YearsSection years={years} />}</main>
88
+ </_Layout.default>;
89
+ }
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _clsx = _interopRequireDefault(require("clsx"));
11
+
12
+ var _Layout = _interopRequireDefault(require("@theme/Layout"));
13
+
14
+ var _BlogSidebar = _interopRequireDefault(require("@theme/BlogSidebar"));
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ /**
19
+ * Copyright (c) Facebook, Inc. and its affiliates.
20
+ *
21
+ * This source code is licensed under the MIT license found in the
22
+ * LICENSE file in the root directory of this source tree.
23
+ */
24
+ function BlogLayout(props) {
25
+ const {
26
+ sidebar,
27
+ toc,
28
+ children,
29
+ ...layoutProps
30
+ } = props;
31
+ const hasSidebar = sidebar && sidebar.items.length > 0;
32
+ return <_Layout.default {...layoutProps}>
33
+ <div className="container margin-vert--lg">
34
+ <div className="row">
35
+ {hasSidebar && <aside className="col col--3">
36
+ <_BlogSidebar.default sidebar={sidebar} />
37
+ </aside>}
38
+ <main className={(0, _clsx.default)('col', {
39
+ 'col--7': hasSidebar,
40
+ 'col--9 col--offset-1': !hasSidebar
41
+ })} itemScope itemType="http://schema.org/Blog">
42
+ {children}
43
+ </main>
44
+ {toc && <div className="col col--2">{toc}</div>}
45
+ </div>
46
+ </div>
47
+ </_Layout.default>;
48
+ }
49
+
50
+ var _default = BlogLayout;
51
+ exports.default = _default;
@@ -9,14 +9,12 @@ var _react = _interopRequireDefault(require("react"));
9
9
 
10
10
  var _useDocusaurusContext = _interopRequireDefault(require("@docusaurus/useDocusaurusContext"));
11
11
 
12
- var _Layout = _interopRequireDefault(require("@theme/Layout"));
12
+ var _BlogLayout = _interopRequireDefault(require("@theme/BlogLayout"));
13
13
 
14
14
  var _BlogPostItem = _interopRequireDefault(require("@theme/BlogPostItem"));
15
15
 
16
16
  var _BlogListPaginator = _interopRequireDefault(require("@theme/BlogListPaginator"));
17
17
 
18
- var _BlogSidebar = _interopRequireDefault(require("@theme/BlogSidebar"));
19
-
20
18
  var _themeCommon = require("@docusaurus/theme-common");
21
19
 
22
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -45,26 +43,17 @@ function BlogListPage(props) {
45
43
  } = metadata;
46
44
  const isBlogOnlyMode = permalink === '/';
47
45
  const title = isBlogOnlyMode ? siteTitle : blogTitle;
48
- return <_Layout.default title={title} description={blogDescription} wrapperClassName={_themeCommon.ThemeClassNames.wrapper.blogPages} pageClassName={_themeCommon.ThemeClassNames.page.blogListPage} searchMetadatas={{
46
+ return <_BlogLayout.default title={title} description={blogDescription} wrapperClassName={_themeCommon.ThemeClassNames.wrapper.blogPages} pageClassName={_themeCommon.ThemeClassNames.page.blogListPage} searchMetadatas={{
49
47
  // assign unique search tag to exclude this page from search results!
50
48
  tag: 'blog_posts_list'
51
- }}>
52
- <div className="container margin-vert--lg">
53
- <div className="row">
54
- <aside className="col col--3">
55
- <_BlogSidebar.default sidebar={sidebar} />
56
- </aside>
57
- <main className="col col--7">
58
- {items.map(({
59
- content: BlogPostContent
60
- }) => <_BlogPostItem.default key={BlogPostContent.metadata.permalink} frontMatter={BlogPostContent.frontMatter} metadata={BlogPostContent.metadata} truncated={BlogPostContent.metadata.truncated}>
61
- <BlogPostContent />
62
- </_BlogPostItem.default>)}
63
- <_BlogListPaginator.default metadata={metadata} />
64
- </main>
65
- </div>
66
- </div>
67
- </_Layout.default>;
49
+ }} sidebar={sidebar}>
50
+ {items.map(({
51
+ content: BlogPostContent
52
+ }) => <_BlogPostItem.default key={BlogPostContent.metadata.permalink} frontMatter={BlogPostContent.frontMatter} assets={BlogPostContent.assets} metadata={BlogPostContent.metadata} truncated={BlogPostContent.metadata.truncated}>
53
+ <BlogPostContent />
54
+ </_BlogPostItem.default>)}
55
+ <_BlogListPaginator.default metadata={metadata} />
56
+ </_BlogLayout.default>;
68
57
  }
69
58
 
70
59
  var _default = BlogListPage;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _Link = _interopRequireDefault(require("@docusaurus/Link"));
11
+
12
+ var _stylesModule = _interopRequireDefault(require("./styles.module.css"));
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
16
+ /**
17
+ * Copyright (c) Facebook, Inc. and its affiliates.
18
+ *
19
+ * This source code is licensed under the MIT license found in the
20
+ * LICENSE file in the root directory of this source tree.
21
+ */
22
+ function BlogPostAuthor({
23
+ author
24
+ }) {
25
+ const {
26
+ name,
27
+ title,
28
+ url,
29
+ imageURL
30
+ } = author;
31
+ return <div className="avatar margin-bottom--sm">
32
+ {imageURL && <_Link.default className="avatar__photo-link avatar__photo" href={url}>
33
+ <img className={_stylesModule.default.image} src={imageURL} alt={name} />
34
+ </_Link.default>}
35
+
36
+ {// Note: only legacy author frontmatter allow empty name (not frontMatter.authors)
37
+ name && <div className="avatar__intro" itemProp="author" itemScope itemType="https://schema.org/Person">
38
+ <div className="avatar__name">
39
+ <_Link.default href={url} itemProp="url">
40
+ <span itemProp="name">{name}</span>
41
+ </_Link.default>
42
+ </div>
43
+ {title && <small className="avatar__subtitle" itemProp="description">
44
+ {title}
45
+ </small>}
46
+ </div>}
47
+ </div>;
48
+ }
49
+
50
+ var _default = BlogPostAuthor;
51
+ exports.default = _default;
@@ -0,0 +1,12 @@
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
+ .image {
9
+ width: 100%;
10
+ height: 100%;
11
+ object-fit: cover;
12
+ }
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = BlogPostAuthors;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _clsx = _interopRequireDefault(require("clsx"));
11
+
12
+ var _BlogPostAuthor = _interopRequireDefault(require("@theme/BlogPostAuthor"));
13
+
14
+ var _stylesModule = _interopRequireDefault(require("./styles.module.css"));
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ /**
19
+ * Copyright (c) Facebook, Inc. and its affiliates.
20
+ *
21
+ * This source code is licensed under the MIT license found in the
22
+ * LICENSE file in the root directory of this source tree.
23
+ */
24
+ // Component responsible for the authors layout
25
+ function BlogPostAuthors({
26
+ authors,
27
+ assets
28
+ }) {
29
+ const authorsCount = authors.length;
30
+
31
+ if (authorsCount === 0) {
32
+ return <></>;
33
+ }
34
+
35
+ return <div className="row margin-top--md margin-bottom--sm">
36
+ {authors.map((author, idx) => {
37
+ var _assets$authorsImageU;
38
+
39
+ return <div className={(0, _clsx.default)('col col--6', _stylesModule.default.authorCol)} key={idx}>
40
+ <_BlogPostAuthor.default author={{ ...author,
41
+ // Handle author images using relative paths
42
+ imageURL: (_assets$authorsImageU = assets.authorsImageUrls[idx]) !== null && _assets$authorsImageU !== void 0 ? _assets$authorsImageU : author.imageURL
43
+ }} />
44
+ </div>;
45
+ })}
46
+ </div>;
47
+ }
@@ -0,0 +1,11 @@
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
+ .authorCol {
9
+ max-width: inherit !important;
10
+ flex-grow: 1 !important;
11
+ }
@@ -15,16 +15,20 @@ var _Translate = _interopRequireWildcard(require("@docusaurus/Translate"));
15
15
 
16
16
  var _Link = _interopRequireDefault(require("@docusaurus/Link"));
17
17
 
18
+ var _useBaseUrl = require("@docusaurus/useBaseUrl");
19
+
18
20
  var _themeCommon = require("@docusaurus/theme-common");
19
21
 
20
22
  var _MDXComponents = _interopRequireDefault(require("@theme/MDXComponents"));
21
23
 
22
- var _Seo = _interopRequireDefault(require("@theme/Seo"));
23
-
24
24
  var _EditThisPage = _interopRequireDefault(require("@theme/EditThisPage"));
25
25
 
26
26
  var _stylesModule = _interopRequireDefault(require("./styles.module.css"));
27
27
 
28
+ var _TagsListInline = _interopRequireDefault(require("@theme/TagsListInline"));
29
+
30
+ var _BlogPostAuthors = _interopRequireDefault(require("@theme/BlogPostAuthors"));
31
+
28
32
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
29
33
 
30
34
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -55,10 +59,16 @@ function useReadingTimePlural() {
55
59
  }
56
60
 
57
61
  function BlogPostItem(props) {
62
+ var _assets$image;
63
+
58
64
  const readingTimePlural = useReadingTimePlural();
65
+ const {
66
+ withBaseUrl
67
+ } = (0, _useBaseUrl.useBaseUrlUtils)();
59
68
  const {
60
69
  children,
61
70
  frontMatter,
71
+ assets,
62
72
  metadata,
63
73
  truncated,
64
74
  isBlogPostPage = false
@@ -70,91 +80,72 @@ function BlogPostItem(props) {
70
80
  tags,
71
81
  readingTime,
72
82
  title,
73
- editUrl
83
+ editUrl,
84
+ authors
74
85
  } = metadata;
75
- const {
76
- author,
77
- image,
78
- keywords
79
- } = frontMatter;
80
- const authorURL = frontMatter.author_url || frontMatter.authorURL;
81
- const authorTitle = frontMatter.author_title || frontMatter.authorTitle;
82
- const authorImageURL = frontMatter.author_image_url || frontMatter.authorImageURL;
86
+ const image = (_assets$image = assets.image) !== null && _assets$image !== void 0 ? _assets$image : frontMatter.image;
87
+ const truncatedPost = !isBlogPostPage && truncated;
88
+ const tagsExists = tags.length > 0;
83
89
 
84
90
  const renderPostHeader = () => {
85
91
  const TitleHeading = isBlogPostPage ? 'h1' : 'h2';
86
92
  return <header>
87
- <TitleHeading className={_stylesModule.default.blogPostTitle}>
88
- {isBlogPostPage ? title : <_Link.default to={permalink}>{title}</_Link.default>}
93
+ <TitleHeading className={_stylesModule.default.blogPostTitle} itemProp="headline">
94
+ {isBlogPostPage ? title : <_Link.default itemProp="url" to={permalink}>
95
+ {title}
96
+ </_Link.default>}
89
97
  </TitleHeading>
90
98
  <div className={(0, _clsx.default)(_stylesModule.default.blogPostData, 'margin-vert--md')}>
91
- <time dateTime={date}>{formattedDate}</time>
99
+ <time dateTime={date} itemProp="datePublished">
100
+ {formattedDate}
101
+ </time>
92
102
 
93
- {readingTime && <>
103
+ {typeof readingTime !== 'undefined' && <>
94
104
  {' · '}
95
105
  {readingTimePlural(readingTime)}
96
106
  </>}
97
107
  </div>
98
- <div className="avatar margin-vert--md">
99
- {authorImageURL && <_Link.default className="avatar__photo-link avatar__photo" href={authorURL}>
100
- <img src={authorImageURL} alt={author} />
101
- </_Link.default>}
102
- <div className="avatar__intro">
103
- {author && <>
104
- <div className="avatar__name">
105
- <_Link.default href={authorURL}>{author}</_Link.default>
106
- </div>
107
- <small className="avatar__subtitle">{authorTitle}</small>
108
- </>}
109
- </div>
110
- </div>
108
+ <_BlogPostAuthors.default authors={authors} assets={assets} />
111
109
  </header>;
112
110
  };
113
111
 
114
- return <>
115
- <_Seo.default {...{
116
- keywords,
117
- image
118
- }} />
112
+ return <article className={!isBlogPostPage ? 'margin-bottom--xl' : undefined} itemProp="blogPost" itemScope itemType="http://schema.org/BlogPosting">
113
+ {renderPostHeader()}
119
114
 
120
- <article className={!isBlogPostPage ? 'margin-bottom--xl' : undefined}>
121
- {renderPostHeader()}
122
- <div className="markdown">
123
- <_react2.MDXProvider components={_MDXComponents.default}>{children}</_react2.MDXProvider>
124
- </div>
125
- {(tags.length > 0 || truncated) && <footer className={(0, _clsx.default)('row docusaurus-mt-lg', {
126
- [_stylesModule.default.blogPostDetailsFull]: isBlogPostPage
115
+ {image && <meta itemProp="image" content={withBaseUrl(image, {
116
+ absolute: true
117
+ })} />}
118
+
119
+ <div className="markdown" itemProp="articleBody">
120
+ <_react2.MDXProvider components={_MDXComponents.default}>{children}</_react2.MDXProvider>
121
+ </div>
122
+
123
+ {(tagsExists || truncated) && <footer className={(0, _clsx.default)('row docusaurus-mt-lg', {
124
+ [_stylesModule.default.blogPostDetailsFull]: isBlogPostPage
125
+ })}>
126
+ {tagsExists && <div className={(0, _clsx.default)('col', {
127
+ 'col--9': truncatedPost
128
+ })}>
129
+ <_TagsListInline.default tags={tags} />
130
+ </div>}
131
+
132
+ {isBlogPostPage && editUrl && <div className="col margin-top--sm">
133
+ <_EditThisPage.default editUrl={editUrl} />
134
+ </div>}
135
+
136
+ {truncatedPost && <div className={(0, _clsx.default)('col text--right', {
137
+ 'col--3': tagsExists
127
138
  })}>
128
- {tags.length > 0 && <div className="col">
139
+ <_Link.default to={metadata.permalink} aria-label={`Read more about ${title}`}>
129
140
  <b>
130
- <_Translate.default id="theme.tags.tagsListLabel" description="The label alongside a tag list">
131
- Tags:
141
+ <_Translate.default id="theme.blog.post.readMore" description="The label used in blog post item excerpts to link to full blog posts">
142
+ Read More
132
143
  </_Translate.default>
133
144
  </b>
134
- {tags.map(({
135
- label,
136
- permalink: tagPermalink
137
- }) => <_Link.default key={tagPermalink} className="margin-horiz--sm" to={tagPermalink}>
138
- {label}
139
- </_Link.default>)}
140
- </div>}
141
-
142
- {isBlogPostPage && editUrl && <div className="col margin-top--sm">
143
- <_EditThisPage.default editUrl={editUrl} />
144
- </div>}
145
-
146
- {!isBlogPostPage && truncated && <div className="col text--right">
147
- <_Link.default to={metadata.permalink} aria-label={`Read more about ${title}`}>
148
- <b>
149
- <_Translate.default id="theme.blog.post.readMore" description="The label used in blog post item excerpts to link to full blog posts">
150
- Read More
151
- </_Translate.default>
152
- </b>
153
- </_Link.default>
154
- </div>}
155
- </footer>}
156
- </article>
157
- </>;
145
+ </_Link.default>
146
+ </div>}
147
+ </footer>}
148
+ </article>;
158
149
  }
159
150
 
160
151
  var _default = BlogPostItem;