@docusaurus/theme-classic 2.0.0-beta.1ab8aa0af → 2.0.0-beta.2

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 (217) hide show
  1. package/codeTranslations/ar.json +2 -0
  2. package/codeTranslations/base.json +4 -0
  3. package/codeTranslations/bn.json +56 -0
  4. package/codeTranslations/da.json +2 -0
  5. package/codeTranslations/de.json +2 -0
  6. package/codeTranslations/es.json +2 -0
  7. package/codeTranslations/fa.json +2 -0
  8. package/codeTranslations/fil.json +2 -0
  9. package/codeTranslations/fr.json +2 -0
  10. package/codeTranslations/he.json +18 -16
  11. package/codeTranslations/hi.json +2 -0
  12. package/codeTranslations/ja.json +2 -0
  13. package/codeTranslations/ko.json +2 -0
  14. package/codeTranslations/pl.json +2 -0
  15. package/codeTranslations/pt-BR.json +2 -0
  16. package/codeTranslations/pt-PT.json +2 -0
  17. package/codeTranslations/ru.json +2 -0
  18. package/codeTranslations/tr.json +2 -0
  19. package/codeTranslations/vi.json +2 -0
  20. package/codeTranslations/zh-Hans.json +2 -0
  21. package/codeTranslations/zh-Hant.json +2 -0
  22. package/lib/index.js +28 -7
  23. package/lib/theme/AnnouncementBar/index.js +5 -7
  24. package/lib/theme/AnnouncementBar/styles.module.css +6 -6
  25. package/lib/theme/BlogListPage/index.js +2 -2
  26. package/lib/theme/BlogListPaginator/index.js +2 -2
  27. package/lib/theme/BlogPostItem/index.js +32 -23
  28. package/lib/theme/BlogPostItem/styles.module.css +5 -1
  29. package/lib/theme/BlogPostPage/index.js +4 -10
  30. package/lib/theme/BlogPostPaginator/index.js +3 -3
  31. package/lib/theme/BlogSidebar/index.js +11 -3
  32. package/lib/theme/BlogSidebar/styles.module.css +4 -6
  33. package/lib/theme/BlogTagsListPage/index.js +15 -20
  34. package/lib/theme/BlogTagsPostsPage/index.js +29 -33
  35. package/lib/theme/CodeBlock/index.js +11 -11
  36. package/lib/theme/CodeBlock/styles.module.css +4 -7
  37. package/lib/theme/DocItem/index.js +35 -26
  38. package/lib/theme/DocItem/styles.module.css +8 -10
  39. package/lib/theme/DocPage/index.js +43 -11
  40. package/lib/theme/DocPage/styles.module.css +7 -19
  41. package/lib/theme/DocPaginator/index.js +3 -3
  42. package/lib/theme/DocSidebar/index.js +23 -24
  43. package/lib/theme/DocSidebar/styles.module.css +0 -14
  44. package/lib/theme/DocVersionBanner/index.js +128 -0
  45. package/lib/theme/DocVersionSuggestions/index.js +4 -4
  46. package/lib/theme/Heading/index.js +18 -2
  47. package/lib/theme/Heading/styles.module.css +5 -0
  48. package/lib/theme/IconArrow/index.js +1 -1
  49. package/lib/theme/IconEdit/index.js +1 -1
  50. package/lib/theme/IconExternalLink/index.js +30 -0
  51. package/lib/theme/IconExternalLink/styles.module.css +12 -0
  52. package/lib/theme/IconLanguage/index.js +1 -1
  53. package/lib/theme/IconMenu/index.js +1 -2
  54. package/lib/theme/LastUpdated/index.js +17 -21
  55. package/lib/theme/Layout/styles.css +6 -0
  56. package/lib/theme/LayoutHead/index.js +3 -1
  57. package/lib/theme/LayoutProviders/index.js +7 -5
  58. package/lib/theme/Logo/index.js +13 -12
  59. package/lib/theme/MDXComponents/index.js +2 -2
  60. package/lib/theme/MDXPage/index.js +13 -15
  61. package/{src/theme/LastUpdated → lib/theme/MDXPage}/styles.module.css +2 -2
  62. package/lib/theme/Navbar/index.js +4 -4
  63. package/lib/theme/Navbar/styles.module.css +1 -1
  64. package/lib/theme/NavbarItem/DefaultNavbarItem.js +18 -4
  65. package/lib/theme/NavbarItem/DocNavbarItem.js +19 -11
  66. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +5 -4
  67. package/lib/theme/NavbarItem/SearchNavbarItem.js +1 -5
  68. package/lib/theme/NavbarItem/index.js +1 -1
  69. package/lib/theme/NotFound.js +9 -2
  70. package/lib/theme/SearchMetadatas/index.js +1 -1
  71. package/lib/theme/Seo/index.js +0 -1
  72. package/lib/theme/SkipToContent/index.js +6 -4
  73. package/lib/theme/SkipToContent/styles.module.css +1 -3
  74. package/lib/theme/TOC/styles.module.css +1 -1
  75. package/lib/theme/Tabs/index.js +2 -2
  76. package/lib/theme/ThemedImage/index.js +2 -1
  77. package/lib/theme/ThemedImage/styles.module.css +7 -0
  78. package/lib/theme/Toggle/index.js +12 -24
  79. package/lib/theme/Toggle/styles.css +103 -0
  80. package/lib/theme/Toggle/styles.module.css +0 -97
  81. package/lib/theme/UserPreferencesProvider/index.js +1 -9
  82. package/lib/theme/hooks/useHideableNavbar.js +2 -2
  83. package/lib/theme/hooks/useTabGroupChoice.js +2 -4
  84. package/lib/theme/hooks/useThemeContext.js +1 -1
  85. package/lib/theme/hooks/useUserPreferencesContext.js +1 -1
  86. package/lib/types.d.ts +10 -12
  87. package/lib/validateThemeConfig.js +3 -3
  88. package/lib-next/index.js +31 -8
  89. package/lib-next/theme/AnnouncementBar/index.js +5 -9
  90. package/lib-next/theme/AnnouncementBar/styles.module.css +6 -6
  91. package/lib-next/theme/BlogListPage/index.js +2 -2
  92. package/lib-next/theme/BlogPostItem/index.js +41 -24
  93. package/lib-next/theme/BlogPostItem/styles.module.css +5 -1
  94. package/lib-next/theme/BlogPostPage/index.js +4 -8
  95. package/lib-next/theme/BlogPostPaginator/index.js +1 -1
  96. package/lib-next/theme/BlogSidebar/index.js +12 -3
  97. package/lib-next/theme/BlogSidebar/styles.module.css +4 -6
  98. package/lib-next/theme/BlogTagsListPage/index.js +17 -23
  99. package/lib-next/theme/BlogTagsPostsPage/index.js +36 -40
  100. package/lib-next/theme/CodeBlock/index.js +10 -9
  101. package/lib-next/theme/CodeBlock/styles.module.css +4 -7
  102. package/lib-next/theme/DocItem/index.js +41 -41
  103. package/lib-next/theme/DocItem/styles.module.css +8 -10
  104. package/lib-next/theme/DocPage/index.js +36 -9
  105. package/lib-next/theme/DocPage/styles.module.css +7 -19
  106. package/lib-next/theme/DocPaginator/index.js +1 -1
  107. package/lib-next/theme/DocSidebar/index.js +28 -21
  108. package/lib-next/theme/DocSidebar/styles.module.css +0 -14
  109. package/lib-next/theme/DocVersionBanner/index.js +127 -0
  110. package/lib-next/theme/DocVersionSuggestions/index.js +4 -4
  111. package/lib-next/theme/Heading/index.js +17 -1
  112. package/lib-next/theme/Heading/styles.module.css +5 -0
  113. package/lib-next/theme/IconArrow/index.js +1 -1
  114. package/lib-next/theme/IconEdit/index.js +3 -5
  115. package/lib-next/theme/IconExternalLink/index.js +26 -0
  116. package/{lib/theme/NavbarItem → lib-next/theme/IconExternalLink}/styles.module.css +4 -5
  117. package/lib-next/theme/IconLanguage/index.js +1 -1
  118. package/lib-next/theme/IconMenu/index.js +1 -4
  119. package/lib-next/theme/LastUpdated/index.js +34 -39
  120. package/lib-next/theme/Layout/styles.css +6 -0
  121. package/lib-next/theme/LayoutHead/index.js +5 -1
  122. package/lib-next/theme/LayoutProviders/index.js +11 -6
  123. package/lib-next/theme/Logo/index.js +12 -8
  124. package/lib-next/theme/MDXPage/index.js +13 -17
  125. package/lib-next/theme/{LastUpdated → MDXPage}/styles.module.css +2 -2
  126. package/lib-next/theme/Navbar/index.js +2 -2
  127. package/lib-next/theme/Navbar/styles.module.css +1 -1
  128. package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +19 -2
  129. package/lib-next/theme/NavbarItem/DocNavbarItem.js +23 -9
  130. package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +6 -6
  131. package/lib-next/theme/NavbarItem/SearchNavbarItem.js +1 -6
  132. package/lib-next/theme/NavbarItem/index.js +1 -1
  133. package/lib-next/theme/NotFound.js +6 -2
  134. package/lib-next/theme/SearchMetadatas/index.js +1 -1
  135. package/lib-next/theme/Seo/index.js +0 -1
  136. package/lib-next/theme/SkipToContent/index.js +3 -3
  137. package/lib-next/theme/SkipToContent/styles.module.css +1 -3
  138. package/lib-next/theme/TOC/styles.module.css +1 -1
  139. package/lib-next/theme/ThemedImage/index.js +2 -3
  140. package/lib-next/theme/ThemedImage/styles.module.css +7 -0
  141. package/lib-next/theme/Toggle/index.js +9 -24
  142. package/lib-next/theme/Toggle/styles.css +103 -0
  143. package/lib-next/theme/Toggle/styles.module.css +0 -97
  144. package/lib-next/theme/UserPreferencesProvider/index.js +0 -4
  145. package/lib-next/theme/hooks/useHideableNavbar.js +3 -3
  146. package/lib-next/theme/hooks/useTabGroupChoice.js +2 -4
  147. package/lib-next/theme/hooks/useThemeContext.js +1 -1
  148. package/lib-next/theme/hooks/useUserPreferencesContext.js +1 -1
  149. package/lib-next/types.d.ts +10 -12
  150. package/lib-next/validateThemeConfig.js +3 -3
  151. package/package.json +18 -17
  152. package/src/index.ts +32 -8
  153. package/src/theme/AnnouncementBar/index.tsx +6 -9
  154. package/src/theme/AnnouncementBar/styles.module.css +6 -6
  155. package/src/theme/BlogListPage/index.tsx +2 -2
  156. package/src/theme/BlogPostItem/index.tsx +40 -24
  157. package/src/theme/BlogPostItem/styles.module.css +5 -1
  158. package/src/theme/BlogPostPage/index.tsx +4 -8
  159. package/src/theme/BlogPostPaginator/index.tsx +1 -1
  160. package/src/theme/BlogSidebar/index.tsx +12 -3
  161. package/src/theme/BlogSidebar/styles.module.css +4 -6
  162. package/src/theme/BlogTagsListPage/index.tsx +17 -22
  163. package/src/theme/BlogTagsPostsPage/index.tsx +33 -43
  164. package/src/theme/CodeBlock/index.tsx +10 -9
  165. package/src/theme/CodeBlock/styles.module.css +4 -7
  166. package/src/theme/DocItem/index.tsx +40 -40
  167. package/src/theme/DocItem/styles.module.css +8 -10
  168. package/src/theme/DocPage/index.tsx +29 -9
  169. package/src/theme/DocPage/styles.module.css +7 -19
  170. package/src/theme/DocPaginator/index.tsx +1 -1
  171. package/src/theme/DocSidebar/index.tsx +28 -21
  172. package/src/theme/DocSidebar/styles.module.css +0 -14
  173. package/src/theme/{DocVersionSuggestions → DocVersionBanner}/index.tsx +46 -43
  174. package/src/theme/Heading/index.tsx +22 -1
  175. package/src/theme/Heading/styles.module.css +5 -0
  176. package/src/theme/IconArrow/index.tsx +1 -1
  177. package/src/theme/IconEdit/index.tsx +3 -5
  178. package/src/theme/IconExternalLink/index.tsx +32 -0
  179. package/src/theme/IconExternalLink/styles.module.css +12 -0
  180. package/src/theme/IconLanguage/index.tsx +1 -1
  181. package/src/theme/IconMenu/index.tsx +1 -4
  182. package/src/theme/LastUpdated/index.tsx +34 -39
  183. package/src/theme/Layout/styles.css +6 -0
  184. package/src/theme/LayoutHead/index.tsx +5 -1
  185. package/src/theme/LayoutProviders/index.tsx +11 -6
  186. package/src/theme/Logo/index.tsx +10 -6
  187. package/src/theme/MDXPage/index.tsx +14 -17
  188. package/{lib/theme/LastUpdated → src/theme/MDXPage}/styles.module.css +2 -2
  189. package/src/theme/Navbar/index.tsx +2 -2
  190. package/src/theme/Navbar/styles.module.css +1 -1
  191. package/src/theme/NavbarItem/DefaultNavbarItem.tsx +15 -2
  192. package/src/theme/NavbarItem/DocNavbarItem.tsx +29 -10
  193. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +7 -6
  194. package/src/theme/NavbarItem/SearchNavbarItem.tsx +1 -6
  195. package/src/theme/NavbarItem/index.tsx +1 -1
  196. package/src/theme/NotFound.tsx +6 -2
  197. package/src/theme/SearchMetadatas/index.tsx +1 -1
  198. package/src/theme/Seo/index.tsx +0 -1
  199. package/src/theme/SkipToContent/index.tsx +3 -3
  200. package/src/theme/SkipToContent/styles.module.css +1 -3
  201. package/src/theme/TOC/styles.module.css +1 -1
  202. package/src/theme/ThemedImage/index.tsx +3 -3
  203. package/src/theme/ThemedImage/styles.module.css +7 -0
  204. package/src/theme/Toggle/index.tsx +9 -22
  205. package/src/theme/Toggle/styles.css +103 -0
  206. package/src/theme/Toggle/styles.module.css +0 -97
  207. package/src/theme/UserPreferencesProvider/index.tsx +0 -5
  208. package/src/theme/hooks/useHideableNavbar.ts +3 -3
  209. package/src/theme/hooks/useTabGroupChoice.ts +2 -2
  210. package/src/theme/hooks/useThemeContext.ts +1 -1
  211. package/src/theme/hooks/useUserPreferencesContext.ts +1 -1
  212. package/src/types.d.ts +10 -12
  213. package/src/validateThemeConfig.js +3 -3
  214. package/update-code-translations.js +1 -0
  215. package/lib-next/theme/NavbarItem/styles.module.css +0 -13
  216. package/src/theme/NavbarItem/styles.module.css +0 -13
  217. package/src/theme/hooks/useAnnouncementBar.ts +0 -58
@@ -15,17 +15,19 @@ var _Translate = _interopRequireWildcard(require("@docusaurus/Translate"));
15
15
 
16
16
  var _Link = _interopRequireDefault(require("@docusaurus/Link"));
17
17
 
18
+ var _themeCommon = require("@docusaurus/theme-common");
19
+
18
20
  var _MDXComponents = _interopRequireDefault(require("@theme/MDXComponents"));
19
21
 
20
22
  var _Seo = _interopRequireDefault(require("@theme/Seo"));
21
23
 
22
- var _stylesModule = _interopRequireDefault(require("./styles.module.css"));
24
+ var _EditThisPage = _interopRequireDefault(require("@theme/EditThisPage"));
23
25
 
24
- var _themeCommon = require("@docusaurus/theme-common");
26
+ var _stylesModule = _interopRequireDefault(require("./styles.module.css"));
25
27
 
26
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
28
+ 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); }
27
29
 
28
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
30
+ 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; }
29
31
 
30
32
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
33
 
@@ -66,11 +68,12 @@ function BlogPostItem(props) {
66
68
  formattedDate,
67
69
  permalink,
68
70
  tags,
69
- readingTime
71
+ readingTime,
72
+ title,
73
+ editUrl
70
74
  } = metadata;
71
75
  const {
72
76
  author,
73
- title,
74
77
  image,
75
78
  keywords
76
79
  } = frontMatter;
@@ -81,17 +84,16 @@ function BlogPostItem(props) {
81
84
  const renderPostHeader = () => {
82
85
  const TitleHeading = isBlogPostPage ? 'h1' : 'h2';
83
86
  return <header>
84
- <TitleHeading className={(0, _clsx.default)('margin-bottom--sm', _stylesModule.default.blogPostTitle)}>
87
+ <TitleHeading className={_stylesModule.default.blogPostTitle}>
85
88
  {isBlogPostPage ? title : <_Link.default to={permalink}>{title}</_Link.default>}
86
89
  </TitleHeading>
87
- <div className="margin-vert--md">
88
- <time dateTime={date} className={_stylesModule.default.blogPostDate}>
89
- {formattedDate}
90
- {readingTime && <>
91
- {' · '}
92
- {readingTimePlural(readingTime)}
93
- </>}
94
- </time>
90
+ <div className={(0, _clsx.default)(_stylesModule.default.blogPostData, 'margin-vert--md')}>
91
+ <time dateTime={date}>{formattedDate}</time>
92
+
93
+ {readingTime && <>
94
+ {' · '}
95
+ {readingTimePlural(readingTime)}
96
+ </>}
95
97
  </div>
96
98
  <div className="avatar margin-vert--md">
97
99
  {authorImageURL && <_Link.default className="avatar__photo-link avatar__photo" href={authorURL}>
@@ -99,9 +101,9 @@ function BlogPostItem(props) {
99
101
  </_Link.default>}
100
102
  <div className="avatar__intro">
101
103
  {author && <>
102
- <h4 className="avatar__name">
104
+ <div className="avatar__name">
103
105
  <_Link.default href={authorURL}>{author}</_Link.default>
104
- </h4>
106
+ </div>
105
107
  <small className="avatar__subtitle">{authorTitle}</small>
106
108
  </>}
107
109
  </div>
@@ -120,13 +122,15 @@ function BlogPostItem(props) {
120
122
  <div className="markdown">
121
123
  <_react2.MDXProvider components={_MDXComponents.default}>{children}</_react2.MDXProvider>
122
124
  </div>
123
- {(tags.length > 0 || truncated) && <footer className="row margin-vert--lg">
125
+ {(tags.length > 0 || truncated) && <footer className={(0, _clsx.default)('row docusaurus-mt-lg', {
126
+ [_stylesModule.default.blogPostDetailsFull]: isBlogPostPage
127
+ })}>
124
128
  {tags.length > 0 && <div className="col">
125
- <strong>
129
+ <b>
126
130
  <_Translate.default id="theme.tags.tagsListLabel" description="The label alongside a tag list">
127
131
  Tags:
128
132
  </_Translate.default>
129
- </strong>
133
+ </b>
130
134
  {tags.map(({
131
135
  label,
132
136
  permalink: tagPermalink
@@ -134,13 +138,18 @@ function BlogPostItem(props) {
134
138
  {label}
135
139
  </_Link.default>)}
136
140
  </div>}
137
- {truncated && <div className="col text--right">
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">
138
147
  <_Link.default to={metadata.permalink} aria-label={`Read more about ${title}`}>
139
- <strong>
148
+ <b>
140
149
  <_Translate.default id="theme.blog.post.readMore" description="The label used in blog post item excerpts to link to full blog posts">
141
150
  Read More
142
151
  </_Translate.default>
143
- </strong>
152
+ </b>
144
153
  </_Link.default>
145
154
  </div>}
146
155
  </footer>}
@@ -9,6 +9,10 @@
9
9
  font-size: 3rem;
10
10
  }
11
11
 
12
- .blogPostDate {
12
+ .blogPostData {
13
13
  font-size: 0.9rem;
14
14
  }
15
+
16
+ .blogPostDetailsFull {
17
+ flex-direction: column;
18
+ }
@@ -17,8 +17,6 @@ var _BlogSidebar = _interopRequireDefault(require("@theme/BlogSidebar"));
17
17
 
18
18
  var _TOC = _interopRequireDefault(require("@theme/TOC"));
19
19
 
20
- var _EditThisPage = _interopRequireDefault(require("@theme/EditThisPage"));
21
-
22
20
  var _themeCommon = require("@docusaurus/theme-common");
23
21
 
24
22
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -42,8 +40,7 @@ function BlogPostPage(props) {
42
40
  title,
43
41
  description,
44
42
  nextItem,
45
- prevItem,
46
- editUrl
43
+ prevItem
47
44
  } = metadata;
48
45
  const {
49
46
  hide_table_of_contents: hideTableOfContents
@@ -51,17 +48,14 @@ function BlogPostPage(props) {
51
48
  return <_Layout.default title={title} description={description} wrapperClassName={_themeCommon.ThemeClassNames.wrapper.blogPages} pageClassName={_themeCommon.ThemeClassNames.page.blogPostPage}>
52
49
  {BlogPostContents && <div className="container margin-vert--lg">
53
50
  <div className="row">
54
- <div className="col col--3">
51
+ <aside className="col col--3">
55
52
  <_BlogSidebar.default sidebar={sidebar} />
56
- </div>
53
+ </aside>
57
54
  <main className="col col--7">
58
55
  <_BlogPostItem.default frontMatter={frontMatter} metadata={metadata} isBlogPostPage>
59
56
  <BlogPostContents />
60
57
  </_BlogPostItem.default>
61
- <div>{editUrl && <_EditThisPage.default editUrl={editUrl} />}</div>
62
- {(nextItem || prevItem) && <div className="margin-vert--xl">
63
- <_BlogPostPaginator.default nextItem={nextItem} prevItem={prevItem} />
64
- </div>}
58
+ {(nextItem || prevItem) && <_BlogPostPaginator.default nextItem={nextItem} prevItem={prevItem} />}
65
59
  </main>
66
60
  {!hideTableOfContents && BlogPostContents.toc && <div className="col col--2">
67
61
  <_TOC.default toc={BlogPostContents.toc} />
@@ -11,9 +11,9 @@ var _Translate = _interopRequireWildcard(require("@docusaurus/Translate"));
11
11
 
12
12
  var _Link = _interopRequireDefault(require("@docusaurus/Link"));
13
13
 
14
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
14
+ 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); }
15
15
 
16
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
16
+ 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; }
17
17
 
18
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
19
 
@@ -28,7 +28,7 @@ function BlogPostPaginator(props) {
28
28
  nextItem,
29
29
  prevItem
30
30
  } = props;
31
- return <nav className="pagination-nav" aria-label={(0, _Translate.translate)({
31
+ return <nav className="pagination-nav docusaurus-mt-lg" aria-label={(0, _Translate.translate)({
32
32
  id: 'theme.blog.post.paginator.navAriaLabel',
33
33
  message: 'Blog post page navigation',
34
34
  description: 'The ARIA label for the blog posts pagination'
@@ -13,6 +13,8 @@ var _Link = _interopRequireDefault(require("@docusaurus/Link"));
13
13
 
14
14
  var _stylesModule = _interopRequireDefault(require("./styles.module.css"));
15
15
 
16
+ var _Translate = require("@docusaurus/Translate");
17
+
16
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
19
 
18
20
  /**
@@ -28,8 +30,14 @@ function BlogSidebar({
28
30
  return null;
29
31
  }
30
32
 
31
- return <div className={(0, _clsx.default)(_stylesModule.default.sidebar, 'thin-scrollbar')}>
32
- <h3 className={_stylesModule.default.sidebarItemTitle}>{sidebar.title}</h3>
33
+ return <nav className={(0, _clsx.default)(_stylesModule.default.sidebar, 'thin-scrollbar')} aria-label={(0, _Translate.translate)({
34
+ id: 'theme.blog.sidebar.navAriaLabel',
35
+ message: 'Blog recent posts navigation',
36
+ description: 'The ARIA label for recent posts in the blog sidebar'
37
+ })}>
38
+ <div className={(0, _clsx.default)(_stylesModule.default.sidebarItemTitle, 'margin-bottom--md')}>
39
+ {sidebar.title}
40
+ </div>
33
41
  <ul className={_stylesModule.default.sidebarItemList}>
34
42
  {sidebar.items.map(item => {
35
43
  return <li key={item.permalink} className={_stylesModule.default.sidebarItem}>
@@ -39,5 +47,5 @@ function BlogSidebar({
39
47
  </li>;
40
48
  })}
41
49
  </ul>
42
- </div>;
50
+ </nav>;
43
51
  }
@@ -6,7 +6,6 @@
6
6
  */
7
7
 
8
8
  .sidebar {
9
- display: inherit;
10
9
  max-height: calc(100vh - (var(--ifm-navbar-height) + 2rem));
11
10
  overflow-y: auto;
12
11
  position: sticky;
@@ -14,25 +13,24 @@
14
13
  }
15
14
 
16
15
  .sidebarItemTitle {
17
- margin-bottom: 0.5rem;
16
+ font-size: var(--ifm-h3-font-size);
17
+ font-weight: var(--ifm-font-weight-bold);
18
18
  }
19
19
 
20
20
  .sidebarItemList {
21
- overflow-y: auto;
21
+ list-style: none;
22
22
  font-size: 0.9rem;
23
23
  padding-left: 0;
24
24
  }
25
25
 
26
26
  .sidebarItem {
27
- list-style-type: none;
28
- margin: 0.8rem 0;
27
+ margin-top: 0.7rem;
29
28
  }
30
29
 
31
30
  .sidebarItemLink {
32
31
  color: var(--ifm-font-color-base);
33
32
  }
34
33
  .sidebarItemLink:hover {
35
- color: var(--ifm-color-primary);
36
34
  text-decoration: none;
37
35
  }
38
36
  .sidebarItemLinkActive {
@@ -13,7 +13,7 @@ var _Link = _interopRequireDefault(require("@docusaurus/Link"));
13
13
 
14
14
  var _BlogSidebar = _interopRequireDefault(require("@theme/BlogSidebar"));
15
15
 
16
- var _Translate = _interopRequireDefault(require("@docusaurus/Translate"));
16
+ var _Translate = require("@docusaurus/Translate");
17
17
 
18
18
  var _themeCommon = require("@docusaurus/theme-common");
19
19
 
@@ -35,42 +35,37 @@ function BlogTagsListPage(props) {
35
35
  tags,
36
36
  sidebar
37
37
  } = props;
38
+ const title = (0, _Translate.translate)({
39
+ id: 'theme.tags.tagsPageTitle',
40
+ message: 'Tags',
41
+ description: 'The title of the tag list page'
42
+ });
38
43
  const tagCategories = {};
39
44
  Object.keys(tags).forEach(tag => {
40
45
  const category = getCategoryOfTag(tag);
41
46
  tagCategories[category] = tagCategories[category] || [];
42
47
  tagCategories[category].push(tag);
43
48
  });
44
- const tagsList = Object.entries(tagCategories).sort(([a], [b]) => {
45
- if (a === b) {
46
- return 0;
47
- }
48
-
49
- return a > b ? 1 : -1;
50
- });
51
- const tagsSection = tagsList.map(([category, tagsForCategory]) => <div key={category}>
52
- <h3>{category}</h3>
49
+ const tagsList = Object.entries(tagCategories).sort(([a], [b]) => a.localeCompare(b));
50
+ const tagsSection = tagsList.map(([category, tagsForCategory]) => <article key={category}>
51
+ <h2>{category}</h2>
53
52
  {tagsForCategory.map(tag => <_Link.default className="padding-right--md" href={tags[tag].permalink} key={tag}>
54
53
  {tags[tag].name} ({tags[tag].count})
55
54
  </_Link.default>)}
56
55
  <hr />
57
- </div>).filter(item => item != null);
58
- return <_Layout.default title="Tags" description="Blog Tags" wrapperClassName={_themeCommon.ThemeClassNames.wrapper.blogPages} pageClassName={_themeCommon.ThemeClassNames.page.blogTagsListPage} searchMetadatas={{
56
+ </article>).filter(item => item != null);
57
+ return <_Layout.default title={title} wrapperClassName={_themeCommon.ThemeClassNames.wrapper.blogPages} pageClassName={_themeCommon.ThemeClassNames.page.blogTagsListPage} searchMetadatas={{
59
58
  // assign unique search tag to exclude this page from search results!
60
59
  tag: 'blog_tags_list'
61
60
  }}>
62
61
  <div className="container margin-vert--lg">
63
62
  <div className="row">
64
- <div className="col col--3">
63
+ <aside className="col col--3">
65
64
  <_BlogSidebar.default sidebar={sidebar} />
66
- </div>
65
+ </aside>
67
66
  <main className="col col--7">
68
- <h1>
69
- <_Translate.default id="theme.tags.tagsPageTitle" description="The title of the tag list page">
70
- Tags
71
- </_Translate.default>
72
- </h1>
73
- <div className="margin-vert--lg">{tagsSection}</div>
67
+ <h1>{title}</h1>
68
+ <section className="margin-vert--lg">{tagsSection}</section>
74
69
  </main>
75
70
  </div>
76
71
  </div>
@@ -19,9 +19,9 @@ var _Translate = _interopRequireWildcard(require("@docusaurus/Translate"));
19
19
 
20
20
  var _themeCommon = require("@docusaurus/theme-common");
21
21
 
22
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
22
+ 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); }
23
23
 
24
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
24
+ 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; }
25
25
 
26
26
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
27
 
@@ -45,19 +45,6 @@ function useBlogPostsPlural() {
45
45
  }));
46
46
  }
47
47
 
48
- function BlogTagsPostPageTitle({
49
- tagName,
50
- count
51
- }) {
52
- const blogPostsPlural = useBlogPostsPlural();
53
- return <_Translate.default id="theme.blog.tagTitle" description="The title of the page for a blog tag" values={{
54
- nPosts: blogPostsPlural(count),
55
- tagName
56
- }}>
57
- {'{nPosts} tagged with "{tagName}"'}
58
- </_Translate.default>;
59
- }
60
-
61
48
  function BlogTagsPostPage(props) {
62
49
  const {
63
50
  metadata,
@@ -69,31 +56,40 @@ function BlogTagsPostPage(props) {
69
56
  name: tagName,
70
57
  count
71
58
  } = metadata;
72
- return <_Layout.default title={`Posts tagged "${tagName}"`} description={`Blog | Tagged "${tagName}"`} wrapperClassName={_themeCommon.ThemeClassNames.wrapper.blogPages} pageClassName={_themeCommon.ThemeClassNames.page.blogTagsPostPage} searchMetadatas={{
59
+ const blogPostsPlural = useBlogPostsPlural();
60
+ const title = (0, _Translate.translate)({
61
+ id: 'theme.blog.tagTitle',
62
+ description: 'The title of the page for a blog tag',
63
+ message: '{nPosts} tagged with "{tagName}"'
64
+ }, {
65
+ nPosts: blogPostsPlural(count),
66
+ tagName
67
+ });
68
+ return <_Layout.default title={title} wrapperClassName={_themeCommon.ThemeClassNames.wrapper.blogPages} pageClassName={_themeCommon.ThemeClassNames.page.blogTagsPostPage} searchMetadatas={{
73
69
  // assign unique search tag to exclude this page from search results!
74
70
  tag: 'blog_tags_posts'
75
71
  }}>
76
72
  <div className="container margin-vert--lg">
77
73
  <div className="row">
78
- <div className="col col--3">
74
+ <aside className="col col--3">
79
75
  <_BlogSidebar.default sidebar={sidebar} />
80
- </div>
76
+ </aside>
81
77
  <main className="col col--7">
82
- <h1>
83
- <BlogTagsPostPageTitle count={count} tagName={tagName} />
84
- </h1>
85
- <_Link.default href={allTagsPath}>
86
- <_Translate.default id="theme.tags.tagsPageLink" description="The label of the link targeting the tag list page">
87
- View All Tags
88
- </_Translate.default>
89
- </_Link.default>
90
- <div className="margin-vert--xl">
91
- {items.map(({
92
- content: BlogPostContent
93
- }) => <_BlogPostItem.default key={BlogPostContent.metadata.permalink} frontMatter={BlogPostContent.frontMatter} metadata={BlogPostContent.metadata} truncated>
94
- <BlogPostContent />
95
- </_BlogPostItem.default>)}
96
- </div>
78
+ <header className="margin-bottom--xl">
79
+ <h1>{title}</h1>
80
+
81
+ <_Link.default href={allTagsPath}>
82
+ <_Translate.default id="theme.tags.tagsPageLink" description="The label of the link targeting the tag list page">
83
+ View All Tags
84
+ </_Translate.default>
85
+ </_Link.default>
86
+ </header>
87
+
88
+ {items.map(({
89
+ content: BlogPostContent
90
+ }) => <_BlogPostItem.default key={BlogPostContent.metadata.permalink} frontMatter={BlogPostContent.frontMatter} metadata={BlogPostContent.metadata} truncated>
91
+ <BlogPostContent />
92
+ </_BlogPostItem.default>)}
97
93
  </main>
98
94
  </div>
99
95
  </div>
@@ -25,9 +25,9 @@ var _themeCommon = require("@docusaurus/theme-common");
25
25
 
26
26
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
27
 
28
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
28
+ 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
29
 
30
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
30
+ 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; }
31
31
 
32
32
  /**
33
33
  * Copyright (c) Facebook, Inc. and its affiliates.
@@ -206,12 +206,12 @@ function CodeBlock({
206
206
  {codeBlockTitle}
207
207
  </div>}
208
208
  <div className={(0, _clsx.default)(_stylesModule.default.codeBlockContent, language)}>
209
- <div
209
+ <pre
210
210
  /* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */
211
211
  tabIndex={0} className={(0, _clsx.default)(className, _stylesModule.default.codeBlock, 'thin-scrollbar', {
212
212
  [_stylesModule.default.codeBlockWithTitle]: codeBlockTitle
213
- })}>
214
- <div className={_stylesModule.default.codeBlockLines} style={style}>
213
+ })} style={style}>
214
+ <code className={_stylesModule.default.codeBlockLines}>
215
215
  {tokens.map((line, i) => {
216
216
  if (line.length === 1 && line[0].content === '') {
217
217
  line[0].content = '\n'; // eslint-disable-line no-param-reassign
@@ -223,24 +223,24 @@ function CodeBlock({
223
223
  });
224
224
 
225
225
  if (highlightLines.includes(i + 1)) {
226
- lineProps.className = `${lineProps.className} docusaurus-highlight-code-line`;
226
+ lineProps.className += ' docusaurus-highlight-code-line';
227
227
  }
228
228
 
229
- return <div key={i} {...lineProps}>
229
+ return <span key={i} {...lineProps}>
230
230
  {line.map((token, key) => <span key={key} {...getTokenProps({
231
231
  token,
232
232
  key
233
233
  })} />)}
234
- </div>;
234
+ </span>;
235
235
  })}
236
- </div>
237
- </div>
236
+ </code>
237
+ </pre>
238
238
 
239
239
  <button ref={button} type="button" aria-label={(0, _Translate.translate)({
240
240
  id: 'theme.CodeBlock.copyButtonAriaLabel',
241
241
  message: 'Copy code to clipboard',
242
242
  description: 'The ARIA label for copy code blocks button'
243
- })} className={(0, _clsx.default)(_stylesModule.default.copyButton)} onClick={handleCopyCode}>
243
+ })} className={(0, _clsx.default)(_stylesModule.default.copyButton, 'clean-btn')} onClick={handleCopyCode}>
244
244
  {showCopied ? <_Translate.default id="theme.CodeBlock.copied" description="The copied button label on code blocks">
245
245
  Copied
246
246
  </_Translate.default> : <_Translate.default id="theme.CodeBlock.copy" description="The copy button label on code blocks">
@@ -25,8 +25,7 @@
25
25
  }
26
26
 
27
27
  .codeBlock {
28
- overflow: auto;
29
- border-radius: var(--ifm-global-radius);
28
+ padding: 0;
30
29
  }
31
30
 
32
31
  .codeBlockWithTitle {
@@ -36,10 +35,8 @@
36
35
 
37
36
  .copyButton {
38
37
  background: rgba(0, 0, 0, 0.3);
39
- border: none;
40
38
  border-radius: var(--ifm-global-radius);
41
39
  color: var(--ifm-color-white);
42
- cursor: pointer;
43
40
  opacity: 0;
44
41
  user-select: none;
45
42
  padding: 0.4rem 0.5rem;
@@ -56,12 +53,12 @@
56
53
  }
57
54
 
58
55
  .codeBlockLines {
59
- font: var(--ifm-code-font-size) / var(--ifm-pre-line-height)
60
- var(--ifm-font-family-monospace);
61
- white-space: pre;
56
+ font: inherit;
62
57
  float: left;
63
58
  min-width: 100%;
64
59
  padding: var(--ifm-pre-padding);
60
+ display: flex;
61
+ flex-direction: column;
65
62
  }
66
63
 
67
64
  @media print {
@@ -9,7 +9,7 @@ var _react = _interopRequireDefault(require("react"));
9
9
 
10
10
  var _DocPaginator = _interopRequireDefault(require("@theme/DocPaginator"));
11
11
 
12
- var _DocVersionSuggestions = _interopRequireDefault(require("@theme/DocVersionSuggestions"));
12
+ var _DocVersionBanner = _interopRequireDefault(require("@theme/DocVersionBanner"));
13
13
 
14
14
  var _Seo = _interopRequireDefault(require("@theme/Seo"));
15
15
 
@@ -19,6 +19,8 @@ var _TOC = _interopRequireDefault(require("@theme/TOC"));
19
19
 
20
20
  var _EditThisPage = _interopRequireDefault(require("@theme/EditThisPage"));
21
21
 
22
+ var _Heading = require("@theme/Heading");
23
+
22
24
  var _clsx = _interopRequireDefault(require("clsx"));
23
25
 
24
26
  var _stylesModule = _interopRequireDefault(require("./styles.module.css"));
@@ -35,7 +37,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
35
37
  */
36
38
  function DocItem(props) {
37
39
  const {
38
- content: DocContent
40
+ content: DocContent,
41
+ versionMetadata
39
42
  } = props;
40
43
  const {
41
44
  metadata,
@@ -60,18 +63,18 @@ function DocItem(props) {
60
63
  } = (0, _useDocs.useActivePlugin)({
61
64
  failfast: true
62
65
  });
63
- const versions = (0, _useDocs.useVersions)(pluginId);
64
- const version = (0, _useDocs.useActiveVersion)(pluginId); // If site is not versioned or only one version is included
66
+ const versions = (0, _useDocs.useVersions)(pluginId); // If site is not versioned or only one version is included
65
67
  // we don't show the version badge
66
68
  // See https://github.com/facebook/docusaurus/issues/3362
67
69
 
68
- const showVersionBadge = versions.length > 1; // For meta title, using frontMatter.title in priority over a potential # title found in markdown
69
- // See https://github.com/facebook/docusaurus/issues/4665#issuecomment-825831367
70
+ const showVersionBadge = versions.length > 1; // We only add a title if:
71
+ // - user asks to hide it with frontmatter
72
+ // - the markdown content does not already contain a top-level h1 heading
70
73
 
71
- const metaTitle = frontMatter.title || title;
74
+ const shouldAddTitle = !hideTitle && typeof DocContent.contentTitle === 'undefined';
72
75
  return <>
73
76
  <_Seo.default {...{
74
- title: metaTitle,
77
+ title,
75
78
  description,
76
79
  keywords,
77
80
  image
@@ -81,32 +84,38 @@ function DocItem(props) {
81
84
  <div className={(0, _clsx.default)('col', {
82
85
  [_stylesModule.default.docItemCol]: !hideTableOfContents
83
86
  })}>
84
- <_DocVersionSuggestions.default />
87
+ <_DocVersionBanner.default versionMetadata={versionMetadata} />
85
88
  <div className={_stylesModule.default.docItemContainer}>
86
89
  <article>
87
- {showVersionBadge && <div>
88
- <span className="badge badge--secondary">
89
- Version: {version.label}
90
- </span>
91
- </div>}
92
- {!hideTitle && <header>
93
- <h1 className={_stylesModule.default.docTitle}>{title}</h1>
94
- </header>}
90
+ {showVersionBadge && <span className="badge badge--secondary">
91
+ Version: {versionMetadata.label}
92
+ </span>}
93
+
95
94
  <div className="markdown">
95
+ {
96
+ /*
97
+ Title can be declared inside md content or declared through frontmatter and added manually
98
+ To make both cases consistent, the added title is added under the same div.markdown block
99
+ See https://github.com/facebook/docusaurus/pull/4882#issuecomment-853021120
100
+ */
101
+ }
102
+ {shouldAddTitle && <_Heading.MainHeading>{title}</_Heading.MainHeading>}
103
+
96
104
  <DocContent />
97
105
  </div>
98
- </article>
99
- {(editUrl || lastUpdatedAt || lastUpdatedBy) && <div className="margin-vert--xl">
100
- <div className="row">
106
+
107
+ {(editUrl || lastUpdatedAt || lastUpdatedBy) && <footer className="row docusaurus-mt-lg">
101
108
  <div className="col">
102
109
  {editUrl && <_EditThisPage.default editUrl={editUrl} />}
103
110
  </div>
104
- {(lastUpdatedAt || lastUpdatedBy) && <_LastUpdated.default lastUpdatedAt={lastUpdatedAt} formattedLastUpdatedAt={formattedLastUpdatedAt} lastUpdatedBy={lastUpdatedBy} />}
105
- </div>
106
- </div>}
107
- <div className="margin-vert--lg">
108
- <_DocPaginator.default metadata={metadata} />
109
- </div>
111
+
112
+ <div className={(0, _clsx.default)('col', _stylesModule.default.lastUpdated)}>
113
+ {(lastUpdatedAt || lastUpdatedBy) && <_LastUpdated.default lastUpdatedAt={lastUpdatedAt} formattedLastUpdatedAt={formattedLastUpdatedAt} lastUpdatedBy={lastUpdatedBy} />}
114
+ </div>
115
+ </footer>}
116
+ </article>
117
+
118
+ <_DocPaginator.default metadata={metadata} />
110
119
  </div>
111
120
  </div>
112
121
  {!hideTableOfContents && DocContent.toc && <div className="col col--3">