@docusaurus/theme-classic 2.0.0-beta.8e9b829d9 → 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 (275) hide show
  1. package/README.md +1 -1
  2. package/codeTranslations/ar.json +12 -6
  3. package/codeTranslations/base.json +12 -0
  4. package/codeTranslations/bn.json +6 -0
  5. package/codeTranslations/cs.json +62 -0
  6. package/codeTranslations/da.json +6 -0
  7. package/codeTranslations/de.json +8 -2
  8. package/codeTranslations/es.json +10 -4
  9. package/codeTranslations/fa.json +9 -3
  10. package/codeTranslations/fil.json +6 -0
  11. package/codeTranslations/fr.json +6 -0
  12. package/codeTranslations/he.json +6 -0
  13. package/codeTranslations/hi.json +6 -0
  14. package/codeTranslations/ja.json +6 -0
  15. package/codeTranslations/ko.json +6 -0
  16. package/codeTranslations/pl.json +6 -0
  17. package/codeTranslations/pt-BR.json +8 -2
  18. package/codeTranslations/pt-PT.json +6 -0
  19. package/codeTranslations/ru.json +6 -0
  20. package/codeTranslations/sr.json +62 -0
  21. package/codeTranslations/tr.json +9 -3
  22. package/codeTranslations/vi.json +10 -4
  23. package/codeTranslations/zh-Hans.json +6 -0
  24. package/codeTranslations/zh-Hant.json +6 -0
  25. package/lib/__tests__/validateThemeConfig.test.js +154 -4
  26. package/lib/index.js +2 -3
  27. package/lib/prism-include-languages.js +9 -5
  28. package/lib/theme/AnnouncementBar/index.js +8 -12
  29. package/lib/theme/AnnouncementBar/styles.module.css +23 -32
  30. package/lib/theme/BackToTopButton/index.js +27 -13
  31. package/lib/theme/BackToTopButton/styles.module.css +17 -14
  32. package/lib/theme/BlogArchivePage/index.js +89 -0
  33. package/lib/theme/BlogLayout/index.js +2 -6
  34. package/lib/theme/BlogListPage/index.js +1 -1
  35. package/lib/theme/BlogPostAuthor/index.js +51 -0
  36. package/lib/theme/BlogPostAuthor/styles.module.css +12 -0
  37. package/lib/theme/BlogPostAuthors/index.js +47 -0
  38. package/lib/theme/BlogPostAuthors/styles.module.css +11 -0
  39. package/lib/theme/BlogPostItem/index.js +58 -67
  40. package/lib/theme/BlogPostPage/index.js +33 -4
  41. package/lib/theme/BlogSidebar/styles.module.css +2 -2
  42. package/lib/theme/BlogTagsListPage/index.js +3 -28
  43. package/lib/theme/BlogTagsPostsPage/index.js +5 -8
  44. package/lib/theme/CodeBlock/index.js +44 -37
  45. package/lib/theme/CodeBlock/styles.module.css +1 -2
  46. package/lib/theme/DocItem/index.js +15 -40
  47. package/lib/theme/DocItem/styles.module.css +2 -12
  48. package/lib/theme/DocItemFooter/index.js +79 -0
  49. package/lib/theme/DocItemFooter/styles.module.css +18 -0
  50. package/lib/theme/DocPage/index.js +18 -13
  51. package/lib/theme/DocSidebar/index.js +11 -16
  52. package/lib/theme/DocSidebarItem/index.js +12 -10
  53. package/lib/theme/DocTagDocListPage/index.js +89 -0
  54. package/lib/theme/DocTagsListPage/index.js +44 -0
  55. package/lib/theme/DocVersionBanner/index.js +6 -4
  56. package/lib/theme/EditThisPage/index.js +3 -1
  57. package/lib/theme/Footer/index.js +5 -3
  58. package/lib/theme/Heading/index.js +7 -9
  59. package/lib/theme/Heading/styles.css +4 -6
  60. package/lib/theme/Heading/styles.module.css +9 -5
  61. package/lib/theme/IconClose/index.js +31 -0
  62. package/lib/theme/LastUpdated/index.js +4 -2
  63. package/lib/theme/LayoutHead/index.js +13 -11
  64. package/lib/theme/LayoutProviders/index.js +7 -5
  65. package/lib/theme/Logo/index.js +14 -12
  66. package/lib/theme/MDXComponents/index.js +27 -1
  67. package/lib/theme/MDXComponents/styles.css +11 -0
  68. package/lib/theme/MDXPage/index.js +2 -1
  69. package/lib/theme/Navbar/index.js +20 -3
  70. package/lib/theme/Navbar/styles.module.css +5 -1
  71. package/lib/theme/NavbarItem/DefaultNavbarItem.js +12 -4
  72. package/lib/theme/NavbarItem/DocNavbarItem.js +5 -3
  73. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +7 -1
  74. package/lib/theme/NavbarItem/DropdownNavbarItem.js +3 -3
  75. package/lib/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +3 -4
  76. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  77. package/lib/theme/NavbarItem/index.js +5 -0
  78. package/lib/theme/Seo/index.js +10 -7
  79. package/lib/theme/TOC/index.js +9 -30
  80. package/lib/theme/TOC/styles.module.css +1 -1
  81. package/lib/theme/TOCCollapsible/index.js +5 -3
  82. package/lib/theme/TOCInline/index.js +7 -27
  83. package/lib/theme/TOCItems/index.js +78 -0
  84. package/lib/theme/Tabs/__tests__/index.test.js +123 -0
  85. package/lib/theme/Tabs/index.js +73 -50
  86. package/lib/theme/Tabs/styles.module.css +0 -13
  87. package/lib/theme/Tag/index.js +40 -0
  88. package/lib/theme/Tag/styles.module.css +70 -0
  89. package/lib/theme/TagsListByLetter/index.js +48 -0
  90. package/lib/theme/TagsListByLetter/styles.module.css +11 -0
  91. package/lib/theme/TagsListInline/index.js +44 -0
  92. package/lib/theme/TagsListInline/styles.module.css +15 -0
  93. package/lib/theme/ThemedImage/index.js +3 -5
  94. package/lib/theme/Toggle/index.js +23 -18
  95. package/lib/theme/Toggle/styles.module.css +91 -0
  96. package/lib/theme/hooks/useHideableNavbar.js +14 -31
  97. package/lib/theme/hooks/useTheme.js +2 -2
  98. package/lib/theme/hooks/useWindowSize.js +2 -7
  99. package/lib/theme/prism-include-languages.js +4 -3
  100. package/lib/translations.js +4 -4
  101. package/lib/types.d.ts +216 -105
  102. package/lib/validateThemeConfig.js +215 -254
  103. package/lib-next/__tests__/validateThemeConfig.test.js +154 -4
  104. package/lib-next/index.js +1 -2
  105. package/lib-next/prism-include-languages.js +0 -2
  106. package/lib-next/theme/AnnouncementBar/index.js +7 -12
  107. package/lib-next/theme/AnnouncementBar/styles.module.css +23 -32
  108. package/lib-next/theme/BackToTopButton/index.js +37 -17
  109. package/lib-next/theme/BackToTopButton/styles.module.css +17 -14
  110. package/lib-next/theme/BlogArchivePage/index.js +80 -0
  111. package/lib-next/theme/BlogLayout/index.js +4 -7
  112. package/lib-next/theme/BlogListPage/index.js +1 -0
  113. package/lib-next/theme/BlogPostAuthor/index.js +46 -0
  114. package/lib-next/theme/BlogPostAuthor/styles.module.css +12 -0
  115. package/lib-next/theme/BlogPostAuthors/index.js +34 -0
  116. package/lib-next/theme/BlogPostAuthors/styles.module.css +11 -0
  117. package/lib-next/theme/BlogPostItem/index.js +79 -86
  118. package/lib-next/theme/BlogPostPage/index.js +55 -8
  119. package/lib-next/theme/BlogSidebar/styles.module.css +2 -2
  120. package/lib-next/theme/BlogTagsListPage/index.js +7 -39
  121. package/lib-next/theme/BlogTagsPostsPage/index.js +3 -4
  122. package/lib-next/theme/CodeBlock/index.js +53 -49
  123. package/lib-next/theme/CodeBlock/styles.module.css +1 -2
  124. package/lib-next/theme/DocItem/index.js +27 -45
  125. package/lib-next/theme/DocItem/styles.module.css +2 -12
  126. package/lib-next/theme/DocItemFooter/index.js +79 -0
  127. package/lib-next/theme/DocItemFooter/styles.module.css +18 -0
  128. package/lib-next/theme/DocPage/index.js +18 -14
  129. package/lib-next/theme/DocSidebar/index.js +18 -15
  130. package/lib-next/theme/DocSidebarItem/index.js +31 -11
  131. package/lib-next/theme/DocTagDocListPage/index.js +89 -0
  132. package/lib-next/theme/DocTagsListPage/index.js +38 -0
  133. package/lib-next/theme/DocVersionBanner/index.js +16 -9
  134. package/lib-next/theme/EditThisPage/index.js +6 -1
  135. package/lib-next/theme/Footer/index.js +14 -3
  136. package/lib-next/theme/Heading/index.js +10 -13
  137. package/lib-next/theme/Heading/styles.css +4 -6
  138. package/lib-next/theme/Heading/styles.module.css +9 -5
  139. package/lib-next/theme/IconClose/index.js +23 -0
  140. package/lib-next/theme/LastUpdated/index.js +3 -2
  141. package/lib-next/theme/LayoutHead/index.js +9 -15
  142. package/lib-next/theme/LayoutProviders/index.js +8 -5
  143. package/lib-next/theme/Logo/index.js +23 -19
  144. package/lib-next/theme/MDXComponents/index.js +20 -1
  145. package/lib-next/theme/MDXComponents/styles.css +11 -0
  146. package/lib-next/theme/MDXPage/index.js +10 -2
  147. package/lib-next/theme/Navbar/index.js +27 -3
  148. package/lib-next/theme/Navbar/styles.module.css +5 -1
  149. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +15 -4
  150. package/lib-next/theme/NavbarItem/DocNavbarItem.js +5 -3
  151. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +12 -4
  152. package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +4 -6
  153. package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +2 -6
  154. package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  155. package/lib-next/theme/NavbarItem/index.js +2 -0
  156. package/lib-next/theme/Seo/index.js +11 -7
  157. package/lib-next/theme/TOC/index.js +12 -36
  158. package/lib-next/theme/TOC/styles.module.css +1 -1
  159. package/lib-next/theme/TOCCollapsible/index.js +12 -3
  160. package/lib-next/theme/TOCInline/index.js +10 -28
  161. package/lib-next/theme/TOCItems/index.js +85 -0
  162. package/lib-next/theme/Tabs/__tests__/index.test.js +142 -0
  163. package/lib-next/theme/Tabs/index.js +91 -43
  164. package/lib-next/theme/Tabs/styles.module.css +0 -13
  165. package/lib-next/theme/Tag/index.js +27 -0
  166. package/lib-next/theme/Tag/styles.module.css +70 -0
  167. package/lib-next/theme/TagsListByLetter/index.js +42 -0
  168. package/lib-next/theme/TagsListByLetter/styles.module.css +11 -0
  169. package/lib-next/theme/TagsListInline/index.js +31 -0
  170. package/lib-next/theme/TagsListInline/styles.module.css +15 -0
  171. package/lib-next/theme/ThemedImage/index.js +3 -3
  172. package/lib-next/theme/Toggle/index.js +20 -15
  173. package/lib-next/theme/Toggle/styles.module.css +91 -0
  174. package/lib-next/theme/hooks/useHideableNavbar.js +31 -47
  175. package/lib-next/theme/hooks/useTheme.js +2 -2
  176. package/lib-next/theme/hooks/useWindowSize.js +2 -6
  177. package/lib-next/theme/prism-include-languages.js +2 -1
  178. package/lib-next/translations.js +6 -10
  179. package/lib-next/types.d.ts +216 -105
  180. package/lib-next/validateThemeConfig.js +40 -36
  181. package/package.json +23 -19
  182. package/src/__tests__/validateThemeConfig.test.js +154 -4
  183. package/src/index.ts +11 -9
  184. package/src/{prism-include-languages.js → prism-include-languages.ts} +0 -0
  185. package/src/theme/AnnouncementBar/index.tsx +8 -12
  186. package/src/theme/AnnouncementBar/styles.module.css +23 -32
  187. package/src/theme/BackToTopButton/index.tsx +39 -17
  188. package/src/theme/BackToTopButton/styles.module.css +17 -14
  189. package/src/theme/BlogArchivePage/index.tsx +91 -0
  190. package/src/theme/BlogLayout/index.tsx +4 -8
  191. package/src/theme/BlogListPage/index.tsx +1 -0
  192. package/src/theme/BlogPostAuthor/index.tsx +49 -0
  193. package/src/theme/BlogPostAuthor/styles.module.css +12 -0
  194. package/src/theme/BlogPostAuthors/index.tsx +36 -0
  195. package/src/theme/BlogPostAuthors/styles.module.css +11 -0
  196. package/src/theme/BlogPostItem/index.tsx +70 -80
  197. package/src/theme/BlogPostPage/index.tsx +57 -8
  198. package/src/theme/BlogSidebar/styles.module.css +2 -2
  199. package/src/theme/BlogTagsListPage/index.tsx +7 -41
  200. package/src/theme/BlogTagsPostsPage/index.tsx +3 -4
  201. package/src/theme/CodeBlock/index.tsx +63 -47
  202. package/src/theme/CodeBlock/styles.module.css +1 -2
  203. package/src/theme/DocItem/index.tsx +27 -46
  204. package/src/theme/DocItem/styles.module.css +2 -12
  205. package/src/theme/DocItemFooter/index.tsx +91 -0
  206. package/src/theme/DocItemFooter/styles.module.css +18 -0
  207. package/src/theme/DocPage/index.tsx +16 -12
  208. package/src/theme/DocSidebar/index.tsx +20 -16
  209. package/src/theme/DocSidebarItem/index.tsx +29 -10
  210. package/src/theme/DocTagDocListPage/index.tsx +89 -0
  211. package/src/theme/DocTagsListPage/index.tsx +41 -0
  212. package/src/theme/DocVersionBanner/index.tsx +26 -15
  213. package/src/theme/EditThisPage/index.tsx +6 -1
  214. package/src/theme/Footer/index.tsx +16 -3
  215. package/src/theme/Heading/index.tsx +10 -13
  216. package/src/theme/Heading/styles.css +4 -6
  217. package/src/theme/Heading/styles.module.css +9 -5
  218. package/src/theme/IconClose/index.tsx +26 -0
  219. package/src/theme/LastUpdated/index.tsx +3 -2
  220. package/src/theme/LayoutHead/index.tsx +9 -9
  221. package/src/theme/LayoutProviders/index.tsx +8 -5
  222. package/src/theme/Logo/index.tsx +19 -15
  223. package/src/theme/MDXComponents/index.tsx +20 -1
  224. package/src/theme/MDXComponents/styles.css +11 -0
  225. package/src/theme/MDXPage/index.tsx +10 -2
  226. package/src/theme/Navbar/index.tsx +26 -2
  227. package/src/theme/Navbar/styles.module.css +5 -1
  228. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +15 -4
  229. package/src/theme/NavbarItem/DocNavbarItem.tsx +9 -5
  230. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +15 -6
  231. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +7 -3
  232. package/src/theme/NavbarItem/DropdownNavbarItem.tsx +4 -6
  233. package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +6 -5
  234. package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
  235. package/src/theme/NavbarItem/index.tsx +6 -1
  236. package/src/theme/Seo/index.tsx +7 -4
  237. package/src/theme/TOC/index.tsx +13 -38
  238. package/src/theme/TOC/styles.module.css +1 -1
  239. package/src/theme/TOCCollapsible/index.tsx +8 -2
  240. package/src/theme/TOCInline/index.tsx +13 -32
  241. package/src/theme/TOCItems/index.tsx +96 -0
  242. package/src/theme/Tabs/__tests__/index.test.tsx +129 -0
  243. package/src/theme/Tabs/index.tsx +93 -49
  244. package/src/theme/Tabs/styles.module.css +0 -13
  245. package/src/theme/Tag/index.tsx +31 -0
  246. package/src/theme/Tag/styles.module.css +70 -0
  247. package/src/theme/TagsListByLetter/index.tsx +45 -0
  248. package/src/theme/TagsListByLetter/styles.module.css +11 -0
  249. package/src/theme/TagsListInline/index.tsx +35 -0
  250. package/src/theme/TagsListInline/styles.module.css +15 -0
  251. package/src/theme/ThemedImage/index.tsx +3 -3
  252. package/src/theme/Toggle/index.tsx +20 -15
  253. package/src/theme/Toggle/styles.module.css +91 -0
  254. package/src/theme/hooks/useContextualSearchFilters.ts +1 -1
  255. package/src/theme/hooks/useHideableNavbar.ts +32 -47
  256. package/src/theme/hooks/useTabGroupChoice.ts +2 -2
  257. package/src/theme/hooks/useTheme.ts +2 -2
  258. package/src/theme/hooks/useWindowSize.ts +2 -7
  259. package/src/theme/prism-include-languages.ts +3 -2
  260. package/src/translations.ts +6 -10
  261. package/src/types.d.ts +216 -105
  262. package/src/{validateThemeConfig.js → validateThemeConfig.ts} +46 -12
  263. package/tsconfig.json +0 -1
  264. package/update-code-translations.js +5 -4
  265. package/update-code-translations.test.js +1 -1
  266. package/update.js +151 -0
  267. package/lib/theme/Toggle/styles.css +0 -103
  268. package/lib/theme/hooks/useScrollPosition.js +0 -51
  269. package/lib/theme/hooks/useTOCHighlight.js +0 -87
  270. package/lib-next/theme/Toggle/styles.css +0 -103
  271. package/lib-next/theme/hooks/useScrollPosition.js +0 -42
  272. package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
  273. package/src/theme/Toggle/styles.css +0 -103
  274. package/src/theme/hooks/useScrollPosition.ts +0 -52
  275. package/src/theme/hooks/useTOCHighlight.ts +0 -98
@@ -10,8 +10,8 @@
10
10
  }
11
11
 
12
12
  .announcementBar {
13
- position: relative;
14
- width: 100%;
13
+ display: flex;
14
+ align-items: center;
15
15
  height: var(--docusaurus-announcement-bar-height);
16
16
  background-color: var(--ifm-color-white);
17
17
  color: var(--ifm-color-black);
@@ -22,47 +22,27 @@ html[data-announcement-bar-initially-dismissed='true'] .announcementBar {
22
22
  display: none;
23
23
  }
24
24
 
25
- @media print {
26
- .announcementBar {
27
- display: none;
28
- }
29
- }
30
-
31
- @media screen and (min-width: 1024px) {
32
- :root {
33
- --docusaurus-announcement-bar-height: 30px;
34
- }
25
+ .announcementBarPlaceholder {
26
+ flex: 0 0 10px;
35
27
  }
36
28
 
37
29
  .announcementBarClose {
38
- position: absolute;
39
- right: 0;
40
- top: 0;
41
- width: 55px;
42
- font-size: 1.25rem;
43
- height: 100%;
30
+ flex: 0 0 30px;
31
+ align-self: stretch;
32
+ padding: 0;
33
+ line-height: 0;
44
34
  }
45
35
 
46
36
  .announcementBarContent {
37
+ flex: 1 1 auto;
47
38
  font-size: 85%;
48
- width: 100%;
49
39
  text-align: center;
50
40
  padding: 5px 0;
51
41
  }
52
42
 
53
- .announcementBarCloseable {
54
- margin-right: 55px;
55
- }
56
-
57
- @media screen and (max-width: 576px) {
58
- .announcementBarClose {
59
- width: 35px;
60
- }
61
- .announcementBarContent {
62
- width: auto;
63
- }
64
- .announcementBarCloseable {
65
- margin-right: 35px;
43
+ @media print {
44
+ .announcementBar {
45
+ display: none;
66
46
  }
67
47
  }
68
48
 
@@ -70,3 +50,14 @@ html[data-announcement-bar-initially-dismissed='true'] .announcementBar {
70
50
  color: inherit;
71
51
  text-decoration: underline;
72
52
  }
53
+
54
+ @media (min-width: 997px) {
55
+ :root {
56
+ --docusaurus-announcement-bar-height: 30px;
57
+ }
58
+
59
+ .announcementBarPlaceholder,
60
+ .announcementBarClose {
61
+ flex-basis: 50px;
62
+ }
63
+ }
@@ -9,10 +9,12 @@ var _react = _interopRequireWildcard(require("react"));
9
9
 
10
10
  var _clsx = _interopRequireDefault(require("clsx"));
11
11
 
12
- var _useScrollPosition = _interopRequireDefault(require("@theme/hooks/useScrollPosition"));
12
+ var _Translate = require("@docusaurus/Translate");
13
13
 
14
14
  var _stylesModule = _interopRequireDefault(require("./styles.module.css"));
15
15
 
16
+ var _themeCommon = require("@docusaurus/theme-common");
17
+
16
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
19
 
18
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); }
@@ -76,21 +78,27 @@ function useSmoothScrollToTop() {
76
78
  }
77
79
 
78
80
  function BackToTopButton() {
81
+ const [show, setShow] = (0, _react.useState)(false);
82
+ const isFocusedAnchor = (0, _react.useRef)(false);
79
83
  const {
80
84
  smoothScrollTop,
81
85
  cancelScrollToTop
82
86
  } = useSmoothScrollToTop();
83
- const [show, setShow] = (0, _react.useState)(false);
84
- (0, _useScrollPosition.default)(({
87
+ (0, _themeCommon.useScrollPosition)(({
85
88
  scrollY: scrollTop
86
89
  }, lastPosition) => {
87
- // No lastPosition means component is just being mounted.
90
+ const lastScrollTop = lastPosition === null || lastPosition === void 0 ? void 0 : lastPosition.scrollY; // No lastScrollTop means component is just being mounted.
88
91
  // Not really a scroll event from the user, so we ignore it
89
- if (!lastPosition) {
92
+
93
+ if (!lastScrollTop) {
94
+ return;
95
+ }
96
+
97
+ if (isFocusedAnchor.current) {
98
+ isFocusedAnchor.current = false;
90
99
  return;
91
100
  }
92
101
 
93
- const lastScrollTop = lastPosition.scrollY;
94
102
  const isScrollingUp = scrollTop < lastScrollTop;
95
103
 
96
104
  if (!isScrollingUp) {
@@ -112,14 +120,20 @@ function BackToTopButton() {
112
120
  } else {
113
121
  setShow(false);
114
122
  }
115
- }, []);
116
- return <button className={(0, _clsx.default)('clean-btn', _stylesModule.default.backToTopButton, {
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, {
117
135
  [_stylesModule.default.backToTopButtonShow]: show
118
- })} type="button" title="Scroll to top" onClick={() => smoothScrollTop()}>
119
- <svg viewBox="0 0 24 24" width="28">
120
- <path d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z" fill="currentColor" />
121
- </svg>
122
- </button>;
136
+ })} type="button" onClick={() => smoothScrollTop()} />;
123
137
  }
124
138
 
125
139
  var _default = BackToTopButton;
@@ -5,32 +5,35 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- :root {
9
- --docusaurus-btt-background: var(--ifm-color-primary);
10
- --docusaurus-btt-color: #fff;
11
- }
12
-
13
8
  .backToTopButton {
14
- display: flex;
15
- align-items: center;
16
- justify-content: center;
17
9
  position: fixed;
18
10
  right: 1.3rem;
19
11
  bottom: 1.3rem;
20
12
  border-radius: 50%;
21
- background: var(--docusaurus-btt-background);
22
- color: var(--docusaurus-btt-color);
13
+ background-color: var(--ifm-color-emphasis-200);
23
14
  width: 3rem;
24
15
  height: 3rem;
25
16
  z-index: var(--ifm-z-index-fixed);
26
- box-shadow: 0 0.125rem 0.3125rem 0 rgba(0, 0, 0, 0.3);
27
- transition: all var(--ifm-transition-fast) ease-in-out;
17
+ box-shadow: var(--ifm-global-shadow-lw);
18
+ transition: all var(--ifm-transition-fast)
19
+ var(--ifm-transition-timing-default);
28
20
  opacity: 0;
29
21
  transform: scale(0);
30
22
  }
31
23
 
32
- .backToTopButton:hover {
33
- opacity: 0.8;
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
+ }
34
37
  }
35
38
 
36
39
  .backToTopButtonShow {
@@ -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
+ }
@@ -13,8 +13,6 @@ var _Layout = _interopRequireDefault(require("@theme/Layout"));
13
13
 
14
14
  var _BlogSidebar = _interopRequireDefault(require("@theme/BlogSidebar"));
15
15
 
16
- var _TOC = _interopRequireDefault(require("@theme/TOC"));
17
-
18
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
17
 
20
18
  /**
@@ -40,12 +38,10 @@ function BlogLayout(props) {
40
38
  <main className={(0, _clsx.default)('col', {
41
39
  'col--7': hasSidebar,
42
40
  'col--9 col--offset-1': !hasSidebar
43
- })}>
41
+ })} itemScope itemType="http://schema.org/Blog">
44
42
  {children}
45
43
  </main>
46
- {toc && <div className="col col--2">
47
- <_TOC.default toc={toc} />
48
- </div>}
44
+ {toc && <div className="col col--2">{toc}</div>}
49
45
  </div>
50
46
  </div>
51
47
  </_Layout.default>;
@@ -49,7 +49,7 @@ function BlogListPage(props) {
49
49
  }} sidebar={sidebar}>
50
50
  {items.map(({
51
51
  content: BlogPostContent
52
- }) => <_BlogPostItem.default key={BlogPostContent.metadata.permalink} frontMatter={BlogPostContent.frontMatter} metadata={BlogPostContent.metadata} truncated={BlogPostContent.metadata.truncated}>
52
+ }) => <_BlogPostItem.default key={BlogPostContent.metadata.permalink} frontMatter={BlogPostContent.frontMatter} assets={BlogPostContent.assets} metadata={BlogPostContent.metadata} truncated={BlogPostContent.metadata.truncated}>
53
53
  <BlogPostContent />
54
54
  </_BlogPostItem.default>)}
55
55
  <_BlogListPaginator.default metadata={metadata} />
@@ -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;