@docusaurus/theme-classic 3.4.0 → 3.5.0

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 (328) hide show
  1. package/lib/getSwizzleConfig.js +32 -1
  2. package/lib/index.d.ts +0 -1
  3. package/lib/index.js +1 -1
  4. package/lib/inlineScripts.js +3 -3
  5. package/lib/options.d.ts +0 -1
  6. package/lib/options.js +15 -3
  7. package/lib/theme/Admonition/Icon/Danger.d.ts +0 -2
  8. package/lib/theme/Admonition/Icon/Info.d.ts +0 -2
  9. package/lib/theme/Admonition/Icon/Note.d.ts +0 -2
  10. package/lib/theme/Admonition/Icon/Tip.d.ts +0 -2
  11. package/lib/theme/Admonition/Icon/Warning.d.ts +0 -2
  12. package/lib/theme/Admonition/Layout/index.d.ts +0 -2
  13. package/lib/theme/Admonition/Type/Caution.d.ts +0 -2
  14. package/lib/theme/Admonition/Type/Danger.d.ts +0 -2
  15. package/lib/theme/Admonition/Type/Info.d.ts +0 -2
  16. package/lib/theme/Admonition/Type/Note.d.ts +0 -2
  17. package/lib/theme/Admonition/Type/Tip.d.ts +0 -2
  18. package/lib/theme/Admonition/Type/Warning.d.ts +0 -2
  19. package/lib/theme/Admonition/Types.d.ts +0 -1
  20. package/lib/theme/Admonition/index.d.ts +0 -2
  21. package/lib/theme/AnnouncementBar/CloseButton/index.d.ts +0 -2
  22. package/lib/theme/AnnouncementBar/Content/index.d.ts +0 -2
  23. package/lib/theme/AnnouncementBar/index.d.ts +0 -1
  24. package/lib/theme/BackToTopButton/index.d.ts +0 -1
  25. package/lib/theme/Blog/Components/Author/Socials/index.d.ts +10 -0
  26. package/lib/theme/Blog/Components/Author/Socials/index.js +49 -0
  27. package/lib/theme/Blog/Components/Author/Socials/styles.module.css +39 -0
  28. package/lib/theme/Blog/Components/Author/index.d.ts +8 -0
  29. package/lib/theme/Blog/Components/Author/index.js +86 -0
  30. package/lib/theme/Blog/Components/Author/styles.module.css +74 -0
  31. package/lib/theme/Blog/Pages/BlogAuthorsListPage/index.d.ts +9 -0
  32. package/lib/theme/Blog/Pages/BlogAuthorsListPage/index.js +54 -0
  33. package/lib/theme/Blog/Pages/BlogAuthorsListPage/styles.module.css +11 -0
  34. package/lib/theme/Blog/Pages/BlogAuthorsPostsPage/index.d.ts +8 -0
  35. package/lib/theme/Blog/Pages/BlogAuthorsPostsPage/index.js +67 -0
  36. package/lib/theme/BlogArchivePage/index.d.ts +0 -2
  37. package/lib/theme/BlogLayout/index.d.ts +0 -2
  38. package/lib/theme/BlogListPage/StructuredData/index.d.ts +0 -2
  39. package/lib/theme/BlogListPage/StructuredData/index.js +1 -1
  40. package/lib/theme/BlogListPage/index.d.ts +0 -2
  41. package/lib/theme/BlogListPaginator/index.d.ts +0 -2
  42. package/lib/theme/BlogPostItem/Container/index.d.ts +0 -2
  43. package/lib/theme/BlogPostItem/Content/index.d.ts +0 -2
  44. package/lib/theme/BlogPostItem/Content/index.js +1 -1
  45. package/lib/theme/BlogPostItem/Footer/ReadMoreLink/index.d.ts +0 -2
  46. package/lib/theme/BlogPostItem/Footer/index.d.ts +0 -1
  47. package/lib/theme/BlogPostItem/Footer/index.js +1 -1
  48. package/lib/theme/BlogPostItem/Header/Authors/index.d.ts +0 -2
  49. package/lib/theme/BlogPostItem/Header/Authors/index.js +5 -4
  50. package/lib/theme/BlogPostItem/Header/Authors/styles.module.css +0 -1
  51. package/lib/theme/BlogPostItem/Header/Info/index.d.ts +0 -2
  52. package/lib/theme/BlogPostItem/Header/Info/index.js +2 -4
  53. package/lib/theme/BlogPostItem/Header/Title/index.d.ts +0 -2
  54. package/lib/theme/BlogPostItem/Header/Title/index.js +1 -1
  55. package/lib/theme/BlogPostItem/Header/index.d.ts +0 -1
  56. package/lib/theme/BlogPostItem/index.d.ts +0 -2
  57. package/lib/theme/BlogPostItem/index.js +1 -1
  58. package/lib/theme/BlogPostItems/index.d.ts +0 -2
  59. package/lib/theme/BlogPostItems/index.js +1 -1
  60. package/lib/theme/BlogPostPage/Metadata/index.d.ts +0 -1
  61. package/lib/theme/BlogPostPage/Metadata/index.js +1 -1
  62. package/lib/theme/BlogPostPage/StructuredData/index.d.ts +0 -1
  63. package/lib/theme/BlogPostPage/StructuredData/index.js +1 -1
  64. package/lib/theme/BlogPostPage/index.d.ts +0 -2
  65. package/lib/theme/BlogPostPage/index.js +7 -4
  66. package/lib/theme/BlogPostPaginator/index.d.ts +0 -2
  67. package/lib/theme/BlogSidebar/Content/index.d.ts +11 -0
  68. package/lib/theme/BlogSidebar/Content/index.js +41 -0
  69. package/lib/theme/BlogSidebar/Desktop/index.d.ts +4 -3
  70. package/lib/theme/BlogSidebar/Desktop/index.js +24 -17
  71. package/lib/theme/BlogSidebar/Desktop/styles.module.css +5 -0
  72. package/lib/theme/BlogSidebar/Mobile/index.d.ts +4 -3
  73. package/lib/theme/BlogSidebar/Mobile/index.js +25 -17
  74. package/lib/theme/BlogSidebar/Mobile/styles.module.css +10 -0
  75. package/lib/theme/BlogSidebar/index.d.ts +0 -2
  76. package/lib/theme/BlogTagsListPage/index.d.ts +0 -2
  77. package/lib/theme/BlogTagsPostsPage/index.d.ts +0 -2
  78. package/lib/theme/BlogTagsPostsPage/index.js +3 -31
  79. package/lib/theme/CodeBlock/Content/Element.d.ts +0 -2
  80. package/lib/theme/CodeBlock/Content/String.d.ts +0 -2
  81. package/lib/theme/CodeBlock/CopyButton/index.d.ts +0 -2
  82. package/lib/theme/CodeBlock/Line/index.d.ts +0 -2
  83. package/lib/theme/CodeBlock/WordWrapButton/index.d.ts +0 -2
  84. package/lib/theme/CodeBlock/index.d.ts +0 -2
  85. package/lib/theme/CodeInline/index.d.ts +0 -2
  86. package/lib/theme/ColorModeToggle/index.d.ts +0 -1
  87. package/lib/theme/ContentVisibility/Draft/index.d.ts +8 -0
  88. package/lib/theme/ContentVisibility/Draft/index.js +24 -0
  89. package/lib/theme/{Unlisted → ContentVisibility/Unlisted}/index.d.ts +1 -3
  90. package/lib/theme/ContentVisibility/index.d.ts +8 -0
  91. package/lib/theme/ContentVisibility/index.js +21 -0
  92. package/lib/theme/Details/index.d.ts +0 -2
  93. package/lib/theme/DocBreadcrumbs/Items/Home/index.d.ts +0 -1
  94. package/lib/theme/DocBreadcrumbs/index.d.ts +0 -1
  95. package/lib/theme/DocBreadcrumbs/index.js +2 -4
  96. package/lib/theme/DocCard/index.d.ts +0 -2
  97. package/lib/theme/DocCard/index.js +2 -2
  98. package/lib/theme/DocCardList/index.d.ts +0 -2
  99. package/lib/theme/DocCardList/index.js +1 -1
  100. package/lib/theme/DocCategoryGeneratedIndexPage/index.d.ts +0 -2
  101. package/lib/theme/DocCategoryGeneratedIndexPage/index.js +2 -4
  102. package/lib/theme/DocItem/Content/index.d.ts +0 -2
  103. package/lib/theme/DocItem/Content/index.js +1 -1
  104. package/lib/theme/DocItem/Footer/index.d.ts +0 -1
  105. package/lib/theme/DocItem/Footer/index.js +1 -1
  106. package/lib/theme/DocItem/Layout/index.d.ts +0 -2
  107. package/lib/theme/DocItem/Layout/index.js +4 -6
  108. package/lib/theme/DocItem/Metadata/index.d.ts +0 -1
  109. package/lib/theme/DocItem/Metadata/index.js +1 -1
  110. package/lib/theme/DocItem/Paginator/index.d.ts +0 -1
  111. package/lib/theme/DocItem/Paginator/index.js +1 -1
  112. package/lib/theme/DocItem/TOC/Desktop/index.d.ts +0 -1
  113. package/lib/theme/DocItem/TOC/Desktop/index.js +1 -1
  114. package/lib/theme/DocItem/TOC/Mobile/index.d.ts +0 -1
  115. package/lib/theme/DocItem/TOC/Mobile/index.js +1 -1
  116. package/lib/theme/DocItem/index.d.ts +0 -2
  117. package/lib/theme/DocItem/index.js +1 -1
  118. package/lib/theme/DocPaginator/index.d.ts +0 -2
  119. package/lib/theme/DocRoot/Layout/Main/index.d.ts +0 -2
  120. package/lib/theme/DocRoot/Layout/Main/index.js +1 -1
  121. package/lib/theme/DocRoot/Layout/Sidebar/ExpandButton/index.d.ts +0 -2
  122. package/lib/theme/DocRoot/Layout/Sidebar/index.d.ts +0 -2
  123. package/lib/theme/DocRoot/Layout/Sidebar/index.js +1 -1
  124. package/lib/theme/DocRoot/Layout/index.d.ts +0 -2
  125. package/lib/theme/DocRoot/Layout/index.js +1 -1
  126. package/lib/theme/DocRoot/index.d.ts +0 -2
  127. package/lib/theme/DocRoot/index.js +1 -1
  128. package/lib/theme/DocSidebar/Desktop/CollapseButton/index.d.ts +0 -2
  129. package/lib/theme/DocSidebar/Desktop/Content/index.d.ts +0 -2
  130. package/lib/theme/DocSidebar/Desktop/index.d.ts +0 -1
  131. package/lib/theme/DocSidebar/Mobile/index.d.ts +0 -1
  132. package/lib/theme/DocSidebar/index.d.ts +0 -2
  133. package/lib/theme/DocSidebarItem/Category/index.d.ts +0 -2
  134. package/lib/theme/DocSidebarItem/Category/index.js +2 -2
  135. package/lib/theme/DocSidebarItem/Html/index.d.ts +0 -2
  136. package/lib/theme/DocSidebarItem/Link/index.d.ts +0 -2
  137. package/lib/theme/DocSidebarItem/Link/index.js +1 -1
  138. package/lib/theme/DocSidebarItem/index.d.ts +0 -2
  139. package/lib/theme/DocSidebarItems/index.d.ts +0 -1
  140. package/lib/theme/DocSidebarItems/index.js +1 -1
  141. package/lib/theme/DocTagDocListPage/index.d.ts +0 -2
  142. package/lib/theme/DocTagDocListPage/index.js +1 -1
  143. package/lib/theme/DocTagsListPage/index.d.ts +0 -2
  144. package/lib/theme/DocVersionBadge/index.d.ts +0 -2
  145. package/lib/theme/DocVersionBadge/index.js +1 -1
  146. package/lib/theme/DocVersionBanner/index.d.ts +0 -2
  147. package/lib/theme/DocVersionBanner/index.js +1 -1
  148. package/lib/theme/DocVersionRoot/index.d.ts +0 -2
  149. package/lib/theme/DocVersionRoot/index.js +3 -3
  150. package/lib/theme/DocsRoot/index.d.ts +0 -2
  151. package/lib/theme/EditMetaRow/index.d.ts +0 -2
  152. package/lib/theme/EditThisPage/index.d.ts +0 -2
  153. package/lib/theme/ErrorPageContent.d.ts +0 -2
  154. package/lib/theme/Footer/Copyright/index.d.ts +0 -2
  155. package/lib/theme/Footer/Layout/index.d.ts +0 -2
  156. package/lib/theme/Footer/LinkItem/index.d.ts +0 -2
  157. package/lib/theme/Footer/Links/MultiColumn/index.d.ts +0 -2
  158. package/lib/theme/Footer/Links/Simple/index.d.ts +0 -2
  159. package/lib/theme/Footer/Links/index.d.ts +0 -2
  160. package/lib/theme/Footer/Logo/index.d.ts +0 -2
  161. package/lib/theme/Heading/index.d.ts +0 -2
  162. package/lib/theme/Icon/Arrow/index.d.ts +0 -2
  163. package/lib/theme/Icon/Close/index.d.ts +0 -2
  164. package/lib/theme/Icon/Copy/index.d.ts +0 -2
  165. package/lib/theme/Icon/DarkMode/index.d.ts +0 -2
  166. package/lib/theme/Icon/Edit/index.d.ts +0 -2
  167. package/lib/theme/Icon/ExternalLink/index.d.ts +0 -2
  168. package/lib/theme/Icon/Home/index.d.ts +0 -2
  169. package/lib/theme/Icon/Language/index.d.ts +0 -2
  170. package/lib/theme/Icon/LightMode/index.d.ts +0 -2
  171. package/lib/theme/Icon/Menu/index.d.ts +0 -2
  172. package/lib/theme/Icon/Socials/Default/index.d.ts +9 -0
  173. package/lib/theme/Icon/Socials/Default/index.js +30 -0
  174. package/lib/theme/Icon/Socials/GitHub/index.d.ts +9 -0
  175. package/lib/theme/Icon/Socials/GitHub/index.js +25 -0
  176. package/lib/theme/Icon/Socials/GitHub/styles.module.css +14 -0
  177. package/lib/theme/Icon/Socials/LinkedIn/index.d.ts +9 -0
  178. package/lib/theme/Icon/Socials/LinkedIn/index.js +24 -0
  179. package/lib/theme/Icon/Socials/StackOverflow/index.d.ts +9 -0
  180. package/lib/theme/Icon/Socials/StackOverflow/index.js +27 -0
  181. package/lib/theme/Icon/Socials/Twitter/index.d.ts +9 -0
  182. package/lib/theme/Icon/Socials/Twitter/index.js +24 -0
  183. package/lib/theme/Icon/Socials/X/index.d.ts +9 -0
  184. package/lib/theme/Icon/Socials/X/index.js +25 -0
  185. package/lib/theme/Icon/Socials/X/styles.module.css +14 -0
  186. package/lib/theme/Icon/Success/index.d.ts +0 -2
  187. package/lib/theme/Icon/WordWrap/index.d.ts +0 -2
  188. package/lib/theme/LastUpdated/index.d.ts +0 -2
  189. package/lib/theme/Layout/Provider/index.d.ts +0 -2
  190. package/lib/theme/Layout/Provider/index.js +1 -1
  191. package/lib/theme/Layout/index.d.ts +0 -3
  192. package/lib/theme/Logo/index.d.ts +0 -2
  193. package/lib/theme/MDXComponents/A.d.ts +0 -2
  194. package/lib/theme/MDXComponents/Code.d.ts +0 -2
  195. package/lib/theme/MDXComponents/Details.d.ts +0 -2
  196. package/lib/theme/MDXComponents/Heading.d.ts +0 -2
  197. package/lib/theme/MDXComponents/Img/index.d.ts +0 -2
  198. package/lib/theme/MDXComponents/Li.d.ts +0 -1
  199. package/lib/theme/MDXComponents/Pre.d.ts +0 -1
  200. package/lib/theme/MDXComponents/Ul/index.d.ts +0 -2
  201. package/lib/theme/MDXComponents/index.d.ts +0 -1
  202. package/lib/theme/MDXContent/index.d.ts +0 -2
  203. package/lib/theme/MDXPage/index.d.ts +0 -2
  204. package/lib/theme/MDXPage/index.js +10 -13
  205. package/lib/theme/Mermaid.d.ts +0 -1
  206. package/lib/theme/Navbar/ColorModeToggle/index.d.ts +0 -2
  207. package/lib/theme/Navbar/Content/index.d.ts +0 -1
  208. package/lib/theme/Navbar/Layout/index.d.ts +0 -2
  209. package/lib/theme/Navbar/Logo/index.d.ts +0 -1
  210. package/lib/theme/Navbar/MobileSidebar/Header/index.d.ts +0 -1
  211. package/lib/theme/Navbar/MobileSidebar/Layout/index.d.ts +0 -2
  212. package/lib/theme/Navbar/MobileSidebar/PrimaryMenu/index.d.ts +0 -1
  213. package/lib/theme/Navbar/MobileSidebar/SecondaryMenu/index.d.ts +0 -1
  214. package/lib/theme/Navbar/MobileSidebar/Toggle/index.d.ts +0 -1
  215. package/lib/theme/Navbar/MobileSidebar/index.d.ts +0 -1
  216. package/lib/theme/Navbar/Search/index.d.ts +0 -2
  217. package/lib/theme/Navbar/index.d.ts +0 -1
  218. package/lib/theme/NavbarItem/ComponentTypes.d.ts +0 -1
  219. package/lib/theme/NavbarItem/DefaultNavbarItem.d.ts +0 -2
  220. package/lib/theme/NavbarItem/DocNavbarItem.d.ts +0 -2
  221. package/lib/theme/NavbarItem/DocNavbarItem.js +4 -2
  222. package/lib/theme/NavbarItem/DocSidebarNavbarItem.d.ts +0 -2
  223. package/lib/theme/NavbarItem/DocSidebarNavbarItem.js +4 -2
  224. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.d.ts +0 -2
  225. package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +19 -14
  226. package/lib/theme/NavbarItem/DocsVersionNavbarItem.d.ts +0 -2
  227. package/lib/theme/NavbarItem/DocsVersionNavbarItem.js +1 -1
  228. package/lib/theme/NavbarItem/DropdownNavbarItem/index.d.ts +0 -2
  229. package/lib/theme/NavbarItem/HtmlNavbarItem.d.ts +0 -2
  230. package/lib/theme/NavbarItem/LocaleDropdownNavbarItem/index.d.ts +0 -2
  231. package/lib/theme/NavbarItem/NavbarNavLink.d.ts +0 -2
  232. package/lib/theme/NavbarItem/SearchNavbarItem.d.ts +0 -2
  233. package/lib/theme/NavbarItem/index.d.ts +0 -2
  234. package/lib/theme/NotFound/Content/index.d.ts +0 -2
  235. package/lib/theme/NotFound/index.d.ts +0 -1
  236. package/lib/theme/PaginatorNavLink/index.d.ts +0 -2
  237. package/lib/theme/SearchBar.d.ts +0 -1
  238. package/lib/theme/SearchMetadata/index.d.ts +0 -2
  239. package/lib/theme/SiteMetadata/index.d.ts +0 -1
  240. package/lib/theme/SkipToContent/index.d.ts +0 -1
  241. package/lib/theme/TOC/index.d.ts +0 -2
  242. package/lib/theme/TOCCollapsible/CollapseButton/index.d.ts +0 -2
  243. package/lib/theme/TOCCollapsible/index.d.ts +0 -2
  244. package/lib/theme/TOCInline/index.d.ts +0 -2
  245. package/lib/theme/TOCItems/Tree.d.ts +0 -1
  246. package/lib/theme/TOCItems/index.d.ts +0 -2
  247. package/lib/theme/TabItem/index.d.ts +0 -2
  248. package/lib/theme/Tabs/index.d.ts +0 -2
  249. package/lib/theme/Tabs/index.js +3 -1
  250. package/lib/theme/Tag/index.d.ts +0 -2
  251. package/lib/theme/TagsListByLetter/index.d.ts +0 -2
  252. package/lib/theme/TagsListInline/index.d.ts +0 -2
  253. package/lib/theme/ThemedImage/index.d.ts +0 -2
  254. package/lib/translations.js +2 -3
  255. package/package.json +15 -15
  256. package/src/getSwizzleConfig.ts +32 -0
  257. package/src/options.ts +18 -2
  258. package/src/theme/Blog/Components/Author/Socials/index.tsx +66 -0
  259. package/src/theme/Blog/Components/Author/Socials/styles.module.css +39 -0
  260. package/src/theme/Blog/Components/Author/index.tsx +99 -0
  261. package/src/theme/Blog/Components/Author/styles.module.css +74 -0
  262. package/src/theme/Blog/Pages/BlogAuthorsListPage/index.tsx +62 -0
  263. package/src/theme/Blog/Pages/BlogAuthorsListPage/styles.module.css +11 -0
  264. package/src/theme/Blog/Pages/BlogAuthorsPostsPage/index.tsx +73 -0
  265. package/src/theme/BlogListPage/StructuredData/index.tsx +1 -1
  266. package/src/theme/BlogPostItem/Content/index.tsx +1 -1
  267. package/src/theme/BlogPostItem/Footer/index.tsx +1 -1
  268. package/src/theme/BlogPostItem/Header/Authors/index.tsx +5 -4
  269. package/src/theme/BlogPostItem/Header/Authors/styles.module.css +0 -1
  270. package/src/theme/BlogPostItem/Header/Info/index.tsx +2 -4
  271. package/src/theme/BlogPostItem/Header/Title/index.tsx +1 -1
  272. package/src/theme/BlogPostItem/index.tsx +1 -1
  273. package/src/theme/BlogPostItems/index.tsx +1 -1
  274. package/src/theme/BlogPostPage/Metadata/index.tsx +1 -1
  275. package/src/theme/BlogPostPage/StructuredData/index.tsx +1 -1
  276. package/src/theme/BlogPostPage/index.tsx +7 -4
  277. package/src/theme/BlogSidebar/Content/index.tsx +57 -0
  278. package/src/theme/BlogSidebar/Desktop/index.tsx +27 -17
  279. package/src/theme/BlogSidebar/Desktop/styles.module.css +5 -0
  280. package/src/theme/BlogSidebar/Mobile/index.tsx +29 -17
  281. package/src/theme/BlogSidebar/Mobile/styles.module.css +10 -0
  282. package/src/theme/BlogTagsPostsPage/index.tsx +3 -33
  283. package/src/theme/ContentVisibility/Draft/index.tsx +27 -0
  284. package/src/theme/{Unlisted → ContentVisibility/Unlisted}/index.tsx +1 -1
  285. package/src/theme/ContentVisibility/index.tsx +27 -0
  286. package/src/theme/DocBreadcrumbs/index.tsx +2 -4
  287. package/src/theme/DocCard/index.tsx +2 -2
  288. package/src/theme/DocCardList/index.tsx +1 -1
  289. package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +2 -4
  290. package/src/theme/DocItem/Content/index.tsx +1 -1
  291. package/src/theme/DocItem/Footer/index.tsx +1 -1
  292. package/src/theme/DocItem/Layout/index.tsx +4 -6
  293. package/src/theme/DocItem/Metadata/index.tsx +1 -1
  294. package/src/theme/DocItem/Paginator/index.tsx +1 -1
  295. package/src/theme/DocItem/TOC/Desktop/index.tsx +1 -1
  296. package/src/theme/DocItem/TOC/Mobile/index.tsx +1 -1
  297. package/src/theme/DocItem/index.tsx +1 -1
  298. package/src/theme/DocRoot/Layout/Main/index.tsx +1 -1
  299. package/src/theme/DocRoot/Layout/Sidebar/index.tsx +1 -1
  300. package/src/theme/DocRoot/Layout/index.tsx +1 -1
  301. package/src/theme/DocRoot/index.tsx +1 -1
  302. package/src/theme/DocSidebarItem/Category/index.tsx +2 -2
  303. package/src/theme/DocSidebarItem/Link/index.tsx +1 -1
  304. package/src/theme/DocSidebarItems/index.tsx +1 -1
  305. package/src/theme/DocTagDocListPage/index.tsx +1 -1
  306. package/src/theme/DocVersionBadge/index.tsx +1 -1
  307. package/src/theme/DocVersionBanner/index.tsx +1 -1
  308. package/src/theme/DocVersionRoot/index.tsx +3 -3
  309. package/src/theme/Icon/Socials/Default/index.tsx +33 -0
  310. package/src/theme/Icon/Socials/GitHub/index.tsx +29 -0
  311. package/src/theme/Icon/Socials/GitHub/styles.module.css +14 -0
  312. package/src/theme/Icon/Socials/LinkedIn/index.tsx +27 -0
  313. package/src/theme/Icon/Socials/StackOverflow/index.tsx +30 -0
  314. package/src/theme/Icon/Socials/Twitter/index.tsx +27 -0
  315. package/src/theme/Icon/Socials/X/index.tsx +29 -0
  316. package/src/theme/Icon/Socials/X/styles.module.css +14 -0
  317. package/src/theme/Layout/Provider/index.tsx +1 -1
  318. package/src/theme/MDXPage/index.tsx +10 -13
  319. package/src/theme/NavbarItem/DocNavbarItem.tsx +4 -2
  320. package/src/theme/NavbarItem/DocSidebarNavbarItem.tsx +4 -2
  321. package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +32 -16
  322. package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +1 -1
  323. package/src/theme/Tabs/index.tsx +3 -1
  324. package/src/theme-classic.d.ts +106 -12
  325. package/lib/theme/BlogPostItem/Header/Author/index.d.ts +0 -10
  326. package/lib/theme/BlogPostItem/Header/Author/index.js +0 -39
  327. package/src/theme/BlogPostItem/Header/Author/index.tsx +0 -47
  328. /package/lib/theme/{Unlisted → ContentVisibility/Unlisted}/index.js +0 -0
@@ -4,7 +4,5 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- /// <reference path="../../../src/theme-classic.d.ts" />
8
- /// <reference types="react" />
9
7
  import type { Props } from '@theme/NavbarItem/NavbarNavLink';
10
8
  export default function NavbarNavLink({ activeBasePath, activeBaseRegex, to, href, label, html, isDropdownLink, prependBaseUrlToHref, ...props }: Props): JSX.Element;
@@ -4,7 +4,5 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- /// <reference path="../../../src/theme-classic.d.ts" />
8
- /// <reference types="react" />
9
7
  import type { Props } from '@theme/NavbarItem/SearchNavbarItem';
10
8
  export default function SearchNavbarItem({ mobile, className, }: Props): JSX.Element | null;
@@ -4,7 +4,5 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- /// <reference path="../../../src/theme-classic.d.ts" />
8
- /// <reference types="react" />
9
7
  import type { Props } from '@theme/NavbarItem';
10
8
  export default function NavbarItem({ type, ...props }: Props): JSX.Element;
@@ -4,7 +4,5 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- /// <reference path="../../../../src/theme-classic.d.ts" />
8
- /// <reference types="react" />
9
7
  import type { Props } from '@theme/NotFound/Content';
10
8
  export default function NotFoundContent({ className }: Props): JSX.Element;
@@ -4,5 +4,4 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- /// <reference types="react" />
8
7
  export default function Index(): JSX.Element;
@@ -4,7 +4,5 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- /// <reference path="../../../src/theme-classic.d.ts" />
8
- /// <reference types="react" />
9
7
  import type { Props } from '@theme/PaginatorNavLink';
10
8
  export default function PaginatorNavLink(props: Props): JSX.Element;
@@ -4,5 +4,4 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- /// <reference types="@docusaurus/module-type-aliases" />
8
7
  export { default } from '@docusaurus/Noop';
@@ -4,7 +4,5 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- /// <reference path="../../../src/theme-classic.d.ts" />
8
- /// <reference types="react" />
9
7
  import type { Props } from '@theme/SearchMetadata';
10
8
  export default function SearchMetadata({ locale, version, tag, }: Props): JSX.Element;
@@ -4,5 +4,4 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- /// <reference types="react" />
8
7
  export default function SiteMetadata(): JSX.Element;
@@ -4,5 +4,4 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- /// <reference types="react" />
8
7
  export default function SkipToContent(): JSX.Element;
@@ -4,7 +4,5 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- /// <reference path="../../../src/theme-classic.d.ts" />
8
- /// <reference types="react" />
9
7
  import type { Props } from '@theme/TOC';
10
8
  export default function TOC({ className, ...props }: Props): JSX.Element;
@@ -4,7 +4,5 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- /// <reference path="../../../../src/theme-classic.d.ts" />
8
- /// <reference types="react" />
9
7
  import type { Props } from '@theme/TOCCollapsible/CollapseButton';
10
8
  export default function TOCCollapsibleCollapseButton({ collapsed, ...props }: Props): JSX.Element;
@@ -4,7 +4,5 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- /// <reference path="../../../src/theme-classic.d.ts" />
8
- /// <reference types="react" />
9
7
  import type { Props } from '@theme/TOCCollapsible';
10
8
  export default function TOCCollapsible({ toc, className, minHeadingLevel, maxHeadingLevel, }: Props): JSX.Element;
@@ -4,7 +4,5 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- /// <reference path="../../../src/theme-classic.d.ts" />
8
- /// <reference types="react" />
9
7
  import type { Props } from '@theme/TOCInline';
10
8
  export default function TOCInline({ toc, minHeadingLevel, maxHeadingLevel, }: Props): JSX.Element;
@@ -4,7 +4,6 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- /// <reference path="../../../src/theme-classic.d.ts" />
8
7
  import React from 'react';
9
8
  import type { Props } from '@theme/TOCItems/Tree';
10
9
  declare function TOCItemTree({ toc, className, linkClassName, isChild, }: Props): JSX.Element | null;
@@ -4,7 +4,5 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- /// <reference path="../../../src/theme-classic.d.ts" />
8
- /// <reference types="react" />
9
7
  import type { Props } from '@theme/TOCItems';
10
8
  export default function TOCItems({ toc, className, linkClassName, linkActiveClassName, minHeadingLevel: minHeadingLevelOption, maxHeadingLevel: maxHeadingLevelOption, ...props }: Props): JSX.Element | null;
@@ -4,7 +4,5 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- /// <reference path="../../../src/theme-classic.d.ts" />
8
- /// <reference types="react" />
9
7
  import type { Props } from '@theme/TabItem';
10
8
  export default function TabItem({ children, hidden, className, }: Props): JSX.Element;
@@ -4,7 +4,5 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- /// <reference path="../../../src/theme-classic.d.ts" />
8
- /// <reference types="react" />
9
7
  import type { Props } from '@theme/Tabs';
10
8
  export default function Tabs(props: Props): JSX.Element;
@@ -91,7 +91,9 @@ function TabContent({lazy, children, selectedValue}) {
91
91
  // fail-safe or fail-fast? not sure what's best here
92
92
  return null;
93
93
  }
94
- return cloneElement(selectedTabItem, {className: 'margin-top--md'});
94
+ return cloneElement(selectedTabItem, {
95
+ className: clsx('margin-top--md', selectedTabItem.props.className),
96
+ });
95
97
  }
96
98
  return (
97
99
  <div className="margin-top--md">
@@ -4,7 +4,5 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- /// <reference path="../../../src/theme-classic.d.ts" />
8
- /// <reference types="react" />
9
7
  import type { Props } from '@theme/Tag';
10
8
  export default function Tag({ permalink, label, count, description, }: Props): JSX.Element;
@@ -4,7 +4,5 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- /// <reference path="../../../src/theme-classic.d.ts" />
8
- /// <reference types="react" />
9
7
  import type { Props } from '@theme/TagsListByLetter';
10
8
  export default function TagsListByLetter({ tags }: Props): JSX.Element;
@@ -4,7 +4,5 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- /// <reference path="../../../src/theme-classic.d.ts" />
8
- /// <reference types="react" />
9
7
  import type { Props } from '@theme/TagsListInline';
10
8
  export default function TagsListInline({ tags }: Props): JSX.Element;
@@ -4,7 +4,5 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- /// <reference path="../../../src/theme-classic.d.ts" />
8
- /// <reference types="react" />
9
7
  import type { Props } from '@theme/ThemedImage';
10
8
  export default function ThemedImage(props: Props): JSX.Element;
@@ -6,7 +6,8 @@
6
6
  * LICENSE file in the root directory of this source tree.
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.translateThemeConfig = exports.getTranslationFiles = void 0;
9
+ exports.getTranslationFiles = getTranslationFiles;
10
+ exports.translateThemeConfig = translateThemeConfig;
10
11
  const tslib_1 = require("tslib");
11
12
  const lodash_1 = tslib_1.__importDefault(require("lodash"));
12
13
  const utils_1 = require("@docusaurus/utils");
@@ -165,7 +166,6 @@ function getTranslationFiles({ themeConfig, }) {
165
166
  ];
166
167
  return translationFiles.filter(Boolean);
167
168
  }
168
- exports.getTranslationFiles = getTranslationFiles;
169
169
  function translateThemeConfig({ themeConfig, translationFiles, }) {
170
170
  const translationFilesMap = lodash_1.default.keyBy(translationFiles, (f) => f.path);
171
171
  return {
@@ -176,4 +176,3 @@ function translateThemeConfig({ themeConfig, translationFiles, }) {
176
176
  : undefined,
177
177
  };
178
178
  }
179
- exports.translateThemeConfig = translateThemeConfig;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@docusaurus/theme-classic",
3
- "version": "3.4.0",
3
+ "version": "3.5.0",
4
4
  "description": "Classic theme for Docusaurus",
5
5
  "main": "lib/index.js",
6
6
  "types": "src/theme-classic.d.ts",
@@ -20,22 +20,22 @@
20
20
  "copy:watch": "node ../../admin/scripts/copyUntypedFiles.js --watch"
21
21
  },
22
22
  "dependencies": {
23
- "@docusaurus/core": "3.4.0",
24
- "@docusaurus/mdx-loader": "3.4.0",
25
- "@docusaurus/module-type-aliases": "3.4.0",
26
- "@docusaurus/plugin-content-blog": "3.4.0",
27
- "@docusaurus/plugin-content-docs": "3.4.0",
28
- "@docusaurus/plugin-content-pages": "3.4.0",
29
- "@docusaurus/theme-common": "3.4.0",
30
- "@docusaurus/theme-translations": "3.4.0",
31
- "@docusaurus/types": "3.4.0",
32
- "@docusaurus/utils": "3.4.0",
33
- "@docusaurus/utils-common": "3.4.0",
34
- "@docusaurus/utils-validation": "3.4.0",
23
+ "@docusaurus/core": "3.5.0",
24
+ "@docusaurus/mdx-loader": "3.5.0",
25
+ "@docusaurus/module-type-aliases": "3.5.0",
26
+ "@docusaurus/plugin-content-blog": "3.5.0",
27
+ "@docusaurus/plugin-content-docs": "3.5.0",
28
+ "@docusaurus/plugin-content-pages": "3.5.0",
29
+ "@docusaurus/theme-common": "3.5.0",
30
+ "@docusaurus/theme-translations": "3.5.0",
31
+ "@docusaurus/types": "3.5.0",
32
+ "@docusaurus/utils": "3.5.0",
33
+ "@docusaurus/utils-common": "3.5.0",
34
+ "@docusaurus/utils-validation": "3.5.0",
35
35
  "@mdx-js/react": "^3.0.0",
36
36
  "clsx": "^2.0.0",
37
37
  "copy-text-to-clipboard": "^3.2.0",
38
- "infima": "0.2.0-alpha.43",
38
+ "infima": "0.2.0-alpha.44",
39
39
  "lodash": "^4.17.21",
40
40
  "nprogress": "^0.2.0",
41
41
  "postcss": "^8.4.26",
@@ -61,5 +61,5 @@
61
61
  "engines": {
62
62
  "node": ">=18.0"
63
63
  },
64
- "gitHead": "49e9a2143274a8dd795659b417b470bc42abbd6e"
64
+ "gitHead": "cb5829f3c34b26d798b869e38ee25073488140bd"
65
65
  }
@@ -127,6 +127,27 @@ export default function getSwizzleConfig(): SwizzleConfig {
127
127
  description:
128
128
  'The object mapping admonition type to a React component.\nUse it to add custom admonition type components, or replace existing ones.\nCan be ejected or wrapped (only manually, see our documentation).',
129
129
  },
130
+ Blog: {
131
+ actions: {
132
+ // Forbidden because it's a parent folder, makes the CLI crash atm
133
+ eject: 'forbidden',
134
+ wrap: 'forbidden',
135
+ },
136
+ },
137
+ 'Blog/Components': {
138
+ actions: {
139
+ // Forbidden because it's a parent folder, makes the CLI crash atm
140
+ eject: 'forbidden',
141
+ wrap: 'forbidden',
142
+ },
143
+ },
144
+ 'Blog/Pages': {
145
+ actions: {
146
+ // Forbidden because it's a parent folder, makes the CLI crash atm
147
+ eject: 'forbidden',
148
+ wrap: 'forbidden',
149
+ },
150
+ },
130
151
  CodeBlock: {
131
152
  actions: {
132
153
  eject: 'safe',
@@ -289,6 +310,17 @@ export default function getSwizzleConfig(): SwizzleConfig {
289
310
  },
290
311
  description: 'The menu icon component',
291
312
  },
313
+ 'Icon/Socials': {
314
+ actions: {
315
+ // Forbidden because it's a parent folder, makes the CLI crash atm
316
+ // TODO the CLI should rather support --eject
317
+ // Subfolders can be swizzled
318
+ eject: 'forbidden',
319
+ wrap: 'forbidden',
320
+ },
321
+ description:
322
+ 'The Icon/Socials folder is not directly swizzle-able, but you can swizzle its sub-components.',
323
+ },
292
324
  MDXComponents: {
293
325
  actions: {
294
326
  eject: 'safe',
package/src/options.ts CHANGED
@@ -15,6 +15,7 @@ import type {
15
15
  } from '@docusaurus/types';
16
16
 
17
17
  const defaultPrismTheme = themes.palenight;
18
+
18
19
  const DEFAULT_DOCS_CONFIG: ThemeConfig['docs'] = {
19
20
  versionPersistence: 'localStorage',
20
21
  sidebar: {
@@ -22,11 +23,12 @@ const DEFAULT_DOCS_CONFIG: ThemeConfig['docs'] = {
22
23
  autoCollapseCategories: false,
23
24
  },
24
25
  };
25
- const DocsSchema = Joi.object({
26
+
27
+ const DocsSchema = Joi.object<ThemeConfig['docs']>({
26
28
  versionPersistence: Joi.string()
27
29
  .equal('localStorage', 'none')
28
30
  .default(DEFAULT_DOCS_CONFIG.versionPersistence),
29
- sidebar: Joi.object({
31
+ sidebar: Joi.object<ThemeConfig['docs']['sidebar']>({
30
32
  hideable: Joi.bool().default(DEFAULT_DOCS_CONFIG.sidebar.hideable),
31
33
  autoCollapseCategories: Joi.bool().default(
32
34
  DEFAULT_DOCS_CONFIG.sidebar.autoCollapseCategories,
@@ -34,6 +36,18 @@ const DocsSchema = Joi.object({
34
36
  }).default(DEFAULT_DOCS_CONFIG.sidebar),
35
37
  }).default(DEFAULT_DOCS_CONFIG);
36
38
 
39
+ const DEFAULT_BLOG_CONFIG: ThemeConfig['blog'] = {
40
+ sidebar: {
41
+ groupByYear: true,
42
+ },
43
+ };
44
+
45
+ const BlogSchema = Joi.object<ThemeConfig['blog']>({
46
+ sidebar: Joi.object<ThemeConfig['blog']['sidebar']>({
47
+ groupByYear: Joi.bool().default(DEFAULT_BLOG_CONFIG.sidebar.groupByYear),
48
+ }).default(DEFAULT_BLOG_CONFIG.sidebar),
49
+ }).default(DEFAULT_BLOG_CONFIG);
50
+
37
51
  const DEFAULT_COLOR_MODE_CONFIG: ThemeConfig['colorMode'] = {
38
52
  defaultMode: 'light',
39
53
  disableSwitch: false,
@@ -43,6 +57,7 @@ const DEFAULT_COLOR_MODE_CONFIG: ThemeConfig['colorMode'] = {
43
57
  export const DEFAULT_CONFIG: ThemeConfig = {
44
58
  colorMode: DEFAULT_COLOR_MODE_CONFIG,
45
59
  docs: DEFAULT_DOCS_CONFIG,
60
+ blog: DEFAULT_BLOG_CONFIG,
46
61
  metadata: [],
47
62
  prism: {
48
63
  additionalLanguages: [],
@@ -333,6 +348,7 @@ export const ThemeConfigSchema = Joi.object<ThemeConfig>({
333
348
  colorMode: ColorModeSchema,
334
349
  image: Joi.string(),
335
350
  docs: DocsSchema,
351
+ blog: BlogSchema,
336
352
  metadata: Joi.array()
337
353
  .items(HtmlMetadataSchema)
338
354
  .default(DEFAULT_CONFIG.metadata),
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import type {ComponentType} from 'react';
9
+ import React from 'react';
10
+ import clsx from 'clsx';
11
+ import Link from '@docusaurus/Link';
12
+ import type {Props} from '@theme/Blog/Components/Author/Socials';
13
+
14
+ import Twitter from '@theme/Icon/Socials/Twitter';
15
+ import GitHub from '@theme/Icon/Socials/GitHub';
16
+ import X from '@theme/Icon/Socials/X';
17
+ import StackOverflow from '@theme/Icon/Socials/StackOverflow';
18
+ import LinkedIn from '@theme/Icon/Socials/LinkedIn';
19
+ import DefaultSocialIcon from '@theme/Icon/Socials/Default';
20
+
21
+ import styles from './styles.module.css';
22
+
23
+ type SocialIcon = ComponentType<{className: string}>;
24
+
25
+ type SocialPlatformConfig = {Icon: SocialIcon; label: string};
26
+
27
+ const SocialPlatformConfigs: Record<string, SocialPlatformConfig> = {
28
+ twitter: {Icon: Twitter, label: 'Twitter'},
29
+ github: {Icon: GitHub, label: 'GitHub'},
30
+ stackoverflow: {Icon: StackOverflow, label: 'Stack Overflow'},
31
+ linkedin: {Icon: LinkedIn, label: 'LinkedIn'},
32
+ x: {Icon: X, label: 'X'},
33
+ };
34
+
35
+ function getSocialPlatformConfig(platformKey: string): SocialPlatformConfig {
36
+ return (
37
+ SocialPlatformConfigs[platformKey] ?? {
38
+ Icon: DefaultSocialIcon,
39
+ label: platformKey,
40
+ }
41
+ );
42
+ }
43
+
44
+ function SocialLink({platform, link}: {platform: string; link: string}) {
45
+ const {Icon, label} = getSocialPlatformConfig(platform);
46
+ return (
47
+ <Link className={styles.authorSocialLink} href={link} title={label}>
48
+ <Icon className={clsx(styles.authorSocialLink)} />
49
+ </Link>
50
+ );
51
+ }
52
+
53
+ export default function BlogAuthorSocials({
54
+ author,
55
+ }: {
56
+ author: Props['author'];
57
+ }): JSX.Element {
58
+ const entries = Object.entries(author.socials ?? {});
59
+ return (
60
+ <div className={styles.authorSocials}>
61
+ {entries.map(([platform, linkUrl]) => {
62
+ return <SocialLink key={platform} platform={platform} link={linkUrl} />;
63
+ })}
64
+ </div>
65
+ );
66
+ }
@@ -0,0 +1,39 @@
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
+ :root {
9
+ --docusaurus-blog-social-icon-size: 1rem;
10
+ }
11
+
12
+ .authorSocials {
13
+ /*
14
+ This ensures that container takes height even if there's no social link
15
+ This keeps author names aligned even if only some have socials
16
+ */
17
+ height: var(--docusaurus-blog-social-icon-size);
18
+
19
+ display: flex;
20
+ flex-wrap: wrap;
21
+ align-items: center;
22
+ line-height: 0;
23
+ overflow: hidden;
24
+ line-clamp: 1;
25
+ -webkit-line-clamp: 1;
26
+ -webkit-box-orient: vertical;
27
+ }
28
+
29
+ .authorSocialLink {
30
+ height: var(--docusaurus-blog-social-icon-size);
31
+ width: var(--docusaurus-blog-social-icon-size);
32
+ line-height: 0;
33
+ margin-right: 0.4rem;
34
+ }
35
+
36
+ .authorSocialIcon {
37
+ width: var(--docusaurus-blog-social-icon-size);
38
+ height: var(--docusaurus-blog-social-icon-size);
39
+ }
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import React from 'react';
9
+ import clsx from 'clsx';
10
+ import Link, {type Props as LinkProps} from '@docusaurus/Link';
11
+ import AuthorSocials from '@theme/Blog/Components/Author/Socials';
12
+ import type {Props} from '@theme/Blog/Components/Author';
13
+ import Heading from '@theme/Heading';
14
+ import styles from './styles.module.css';
15
+
16
+ function MaybeLink(props: LinkProps): JSX.Element {
17
+ if (props.href) {
18
+ return <Link {...props} />;
19
+ }
20
+ return <>{props.children}</>;
21
+ }
22
+
23
+ function AuthorTitle({title}: {title: string}) {
24
+ return (
25
+ <small className={styles.authorTitle} title={title}>
26
+ {title}
27
+ </small>
28
+ );
29
+ }
30
+
31
+ function AuthorName({name, as}: {name: string; as: Props['as']}) {
32
+ if (!as) {
33
+ return <span className={styles.authorName}>{name}</span>;
34
+ } else {
35
+ return (
36
+ <Heading as={as} className={styles.authorName}>
37
+ {name}
38
+ </Heading>
39
+ );
40
+ }
41
+ }
42
+
43
+ function AuthorBlogPostCount({count}: {count: number}) {
44
+ return <span className={clsx(styles.authorBlogPostCount)}>{count}</span>;
45
+ }
46
+
47
+ // Note: in the future we might want to have multiple "BlogAuthor" components
48
+ // Creating different display modes with the "as" prop may not be the best idea
49
+ // Explainer: https://kyleshevlin.com/prefer-multiple-compositions/
50
+ // For now, we almost use the same design for all cases, so it's good enough
51
+ export default function BlogAuthor({
52
+ as,
53
+ author,
54
+ className,
55
+ count,
56
+ }: Props): JSX.Element {
57
+ const {name, title, url, imageURL, email, page} = author;
58
+ const link =
59
+ page?.permalink || url || (email && `mailto:${email}`) || undefined;
60
+
61
+ return (
62
+ <div
63
+ className={clsx(
64
+ 'avatar margin-bottom--sm',
65
+ className,
66
+ styles[`author-as-${as}`],
67
+ )}>
68
+ {imageURL && (
69
+ <MaybeLink href={link} className="avatar__photo-link">
70
+ <img
71
+ className={clsx('avatar__photo', styles.authorImage)}
72
+ src={imageURL}
73
+ alt={name}
74
+ />
75
+ </MaybeLink>
76
+ )}
77
+
78
+ {(name || title) && (
79
+ <div className={clsx('avatar__intro', styles.authorDetails)}>
80
+ <div className="avatar__name">
81
+ {name && (
82
+ <MaybeLink href={link}>
83
+ <AuthorName name={name} as={as} />
84
+ </MaybeLink>
85
+ )}
86
+ {count && <AuthorBlogPostCount count={count} />}
87
+ </div>
88
+ {!!title && <AuthorTitle title={title} />}
89
+
90
+ {/*
91
+ We always render AuthorSocials even if there's none
92
+ This keeps other things aligned with flexbox layout
93
+ */}
94
+ <AuthorSocials author={author} />
95
+ </div>
96
+ )}
97
+ </div>
98
+ );
99
+ }
@@ -0,0 +1,74 @@
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
+ .authorImage {
9
+ --ifm-avatar-photo-size: 3.6rem;
10
+ }
11
+
12
+ .author-as-h1 .authorImage {
13
+ --ifm-avatar-photo-size: 7rem;
14
+ }
15
+
16
+ .author-as-h2 .authorImage {
17
+ --ifm-avatar-photo-size: 5.4rem;
18
+ }
19
+
20
+ .authorDetails {
21
+ display: flex;
22
+ flex-direction: column;
23
+ align-items: flex-start;
24
+ justify-content: space-around;
25
+ }
26
+
27
+ .authorName {
28
+ font-size: 1.1rem;
29
+ line-height: 1.1rem;
30
+ display: flex;
31
+ flex-direction: row;
32
+ }
33
+
34
+ .author-as-h1 .authorName {
35
+ font-size: 2.4rem;
36
+ line-height: 2.4rem;
37
+ display: inline;
38
+ }
39
+
40
+ .author-as-h2 .authorName {
41
+ font-size: 1.4rem;
42
+ line-height: 1.4rem;
43
+ display: inline;
44
+ }
45
+
46
+ .authorTitle {
47
+ font-size: 0.8rem;
48
+ line-height: 0.8rem;
49
+ display: -webkit-box;
50
+ overflow: hidden;
51
+ line-clamp: 1;
52
+ -webkit-line-clamp: 1;
53
+ -webkit-box-orient: vertical;
54
+ }
55
+
56
+ .author-as-h1 .authorTitle {
57
+ font-size: 1.2rem;
58
+ line-height: 1.2rem;
59
+ }
60
+
61
+ .author-as-h2 .authorTitle {
62
+ font-size: 1rem;
63
+ line-height: 1rem;
64
+ }
65
+
66
+ .authorBlogPostCount {
67
+ background: var(--ifm-color-secondary);
68
+ color: var(--ifm-color-black);
69
+ font-size: 0.8rem;
70
+ line-height: 1.2;
71
+ border-radius: var(--ifm-global-radius);
72
+ padding: 0.1rem 0.4rem;
73
+ margin-left: 0.3rem;
74
+ }