index.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import React from 'react';
  2. import clsx from 'clsx';
  3. import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
  4. import {
  5. PageMetadata,
  6. HtmlClassNameProvider,
  7. ThemeClassNames,
  8. } from '@docusaurus/theme-common';
  9. import BlogLayout from '@theme/BlogLayout';
  10. import BlogListPaginator from '@theme/BlogListPaginator';
  11. import SearchMetadata from '@theme/SearchMetadata';
  12. import BlogPostItems from '@theme/BlogPostItems';
  13. function BlogListPageMetadata(props) {
  14. const {metadata} = props;
  15. const {
  16. siteConfig: {title: siteTitle},
  17. } = useDocusaurusContext();
  18. const {blogDescription, blogTitle, permalink} = metadata;
  19. const isBlogOnlyMode = permalink === '/';
  20. const title = isBlogOnlyMode ? siteTitle : blogTitle;
  21. return (
  22. <>
  23. <PageMetadata title={title} description={blogDescription} />
  24. <SearchMetadata tag="blog_posts_list" />
  25. </>
  26. );
  27. }
  28. function BlogListPageContent(props) {
  29. const {metadata, items, sidebar} = props;
  30. return (
  31. <BlogLayout sidebar={sidebar}>
  32. <h1>Posts</h1>
  33. <p>( 22/11/28 ) I'm using these posts to make chronological thoughts, ideas, opinions and 'today I learned(s)' for items that don't necessarily need to reference at a later point like my <a href="https://davidawindham.com/til/docs">docs</a>, <a href="https://davidawindham.com/til/lists">lists</a>, and <a href="https://davidawindham.com/til/notes">notes</a>. And because it's faster than writing posts for my <a href="https://davidawindham.com/desk">desk page</a>, I tend to use it more often for jotting down quick posts or drafting longer posts that'll end up on my <a href="https://davidawindham.com/desk">desk</a>.</p>
  34. <hr/>
  35. <br/>
  36. <BlogPostItems items={items} />
  37. <BlogListPaginator metadata={metadata} />
  38. </BlogLayout>
  39. );
  40. }
  41. export default function BlogListPage(props) {
  42. return (
  43. <HtmlClassNameProvider
  44. className={clsx(
  45. ThemeClassNames.wrapper.blogPages,
  46. ThemeClassNames.page.blogListPage,
  47. )}>
  48. <BlogListPageMetadata {...props} />
  49. <BlogListPageContent {...props} />
  50. </HtmlClassNameProvider>
  51. );
  52. }