From c00b4746ae9cf0d0cc5d6364a16135958fe4d1c9 Mon Sep 17 00:00:00 2001 From: Chad $yntax Date: Tue, 12 Jul 2022 03:10:02 -0400 Subject: [PATCH 01/13] pulling and parsing from github cms --- .env.example | 13 +- .github/workflows/build-and-deploy.yml | 2 + .nvmrc | 1 + app.config.ts | 4 + package.json | 3 + .../AudioPlayer/AudioPlayer.styled.tsx | 0 .../components}/AudioPlayer/AudioPlayer.tsx | 0 .../AudioPlayer/AudioPlayerCtx.tsx | 0 .../components}/Episode/Episode.styled.ts | 0 .../components}/Episode/Episode.tsx | 0 .../components}/Episodes/Episodes.styled.ts | 0 .../components}/Episodes/Episodes.tsx | 0 .../components}/Footer/Footer.styled.ts | 0 .../components}/Footer/Footer.tsx | 0 .../components}/Header/Header.styled.ts | 0 .../components}/Header/Header.tsx | 0 .../components}/Hero/Hero.styled.tsx | 0 {components => src/components}/Hero/Hero.tsx | 0 .../components}/Hero/Mailchimp.tsx | 0 .../components}/Hero/ethereum.svg | 0 .../components}/Hero/ttps-art-2048-2048.png | Bin .../components}/Hero/ttps-art-880-880.png | Bin {components => src/components}/Meta/Meta.tsx | 0 .../PodcastLinks/PodcastLinks.styled.ts | 0 .../components}/PodcastLinks/PodcastLinks.tsx | 0 .../components}/PodcastLinks/podcast-links.ts | 0 .../podcast-player-icons/amazon_music@2x.png | Bin .../podcast-player-icons/anchor-wave@2x.png | Bin .../apple_podcasts@2x.png | Bin .../podcast-player-icons/castbox@2x.png | Bin .../google_podcasts_outline@2x.png | Bin .../podcast-player-icons/overcast@2x.png | Bin .../podcast-player-icons/pocket_casts@2x.png | Bin .../podcast-player-icons/radiopublic@2x.png | Bin .../PodcastLinks/podcast-player-icons/rss.png | Bin .../podcast-player-icons/spotify@2x.png | Bin .../podcast-player-icons/stitcher_dark@2x.png | Bin src/gql-queries/blog-posts-query.ts | 19 + src/lib/blog.ts | 41 + {pages => src/pages}/404.tsx | 0 {pages => src/pages}/_app.tsx | 0 {pages => src/pages}/_document.tsx | 0 src/pages/blog/[slug].tsx | 0 src/pages/blog/index.tsx | 62 + {pages => src/pages}/episodes/[slug].tsx | 0 {pages => src/pages}/index.tsx | 2 +- {public => src/public}/CNAME | 0 {public => src/public}/SERIES_OF_TUBES.mp3 | Bin .../public}/android-chrome-192x192.png | Bin .../public}/android-chrome-256x256.png | Bin {public => src/public}/apple-touch-icon.png | Bin {public => src/public}/browserconfig.xml | 0 {public => src/public}/favicon-16x16.png | Bin {public => src/public}/favicon-32x32.png | Bin {public => src/public}/favicon.ico | Bin {public => src/public}/mstile-150x150.png | Bin {public => src/public}/robots.txt | 0 {public => src/public}/safari-pinned-tab.svg | 0 {public => src/public}/site.webmanifest | 0 {public => src/public}/sitemap.xml | 0 {public => src/public}/ttps_og.jpg | Bin {utils => src/utils}/audio.ts | 0 {utils => src/utils}/constants.ts | 0 {utils => src/utils}/slugify.ts | 0 {utils => src/utils}/strip-script-tags.ts | 0 yarn.lock | 1016 +++++++++++++++++ 66 files changed, 1161 insertions(+), 2 deletions(-) create mode 100644 .nvmrc rename {components => src/components}/AudioPlayer/AudioPlayer.styled.tsx (100%) rename {components => src/components}/AudioPlayer/AudioPlayer.tsx (100%) rename {components => src/components}/AudioPlayer/AudioPlayerCtx.tsx (100%) rename {components => src/components}/Episode/Episode.styled.ts (100%) rename {components => src/components}/Episode/Episode.tsx (100%) rename {components => src/components}/Episodes/Episodes.styled.ts (100%) rename {components => src/components}/Episodes/Episodes.tsx (100%) rename {components => src/components}/Footer/Footer.styled.ts (100%) rename {components => src/components}/Footer/Footer.tsx (100%) rename {components => src/components}/Header/Header.styled.ts (100%) rename {components => src/components}/Header/Header.tsx (100%) rename {components => src/components}/Hero/Hero.styled.tsx (100%) rename {components => src/components}/Hero/Hero.tsx (100%) rename {components => src/components}/Hero/Mailchimp.tsx (100%) rename {components => src/components}/Hero/ethereum.svg (100%) rename {components => src/components}/Hero/ttps-art-2048-2048.png (100%) rename {components => src/components}/Hero/ttps-art-880-880.png (100%) rename {components => src/components}/Meta/Meta.tsx (100%) rename {components => src/components}/PodcastLinks/PodcastLinks.styled.ts (100%) rename {components => src/components}/PodcastLinks/PodcastLinks.tsx (100%) rename {components => src/components}/PodcastLinks/podcast-links.ts (100%) rename {components => src/components}/PodcastLinks/podcast-player-icons/amazon_music@2x.png (100%) rename {components => src/components}/PodcastLinks/podcast-player-icons/anchor-wave@2x.png (100%) rename {components => src/components}/PodcastLinks/podcast-player-icons/apple_podcasts@2x.png (100%) rename {components => src/components}/PodcastLinks/podcast-player-icons/castbox@2x.png (100%) rename {components => src/components}/PodcastLinks/podcast-player-icons/google_podcasts_outline@2x.png (100%) rename {components => src/components}/PodcastLinks/podcast-player-icons/overcast@2x.png (100%) rename {components => src/components}/PodcastLinks/podcast-player-icons/pocket_casts@2x.png (100%) rename {components => src/components}/PodcastLinks/podcast-player-icons/radiopublic@2x.png (100%) rename {components => src/components}/PodcastLinks/podcast-player-icons/rss.png (100%) rename {components => src/components}/PodcastLinks/podcast-player-icons/spotify@2x.png (100%) rename {components => src/components}/PodcastLinks/podcast-player-icons/stitcher_dark@2x.png (100%) create mode 100644 src/gql-queries/blog-posts-query.ts create mode 100644 src/lib/blog.ts rename {pages => src/pages}/404.tsx (100%) rename {pages => src/pages}/_app.tsx (100%) rename {pages => src/pages}/_document.tsx (100%) create mode 100644 src/pages/blog/[slug].tsx create mode 100644 src/pages/blog/index.tsx rename {pages => src/pages}/episodes/[slug].tsx (100%) rename {pages => src/pages}/index.tsx (98%) rename {public => src/public}/CNAME (100%) rename {public => src/public}/SERIES_OF_TUBES.mp3 (100%) rename {public => src/public}/android-chrome-192x192.png (100%) rename {public => src/public}/android-chrome-256x256.png (100%) rename {public => src/public}/apple-touch-icon.png (100%) rename {public => src/public}/browserconfig.xml (100%) rename {public => src/public}/favicon-16x16.png (100%) rename {public => src/public}/favicon-32x32.png (100%) rename {public => src/public}/favicon.ico (100%) rename {public => src/public}/mstile-150x150.png (100%) rename {public => src/public}/robots.txt (100%) rename {public => src/public}/safari-pinned-tab.svg (100%) rename {public => src/public}/site.webmanifest (100%) rename {public => src/public}/sitemap.xml (100%) rename {public => src/public}/ttps_og.jpg (100%) rename {utils => src/utils}/audio.ts (100%) rename {utils => src/utils}/constants.ts (100%) rename {utils => src/utils}/slugify.ts (100%) rename {utils => src/utils}/strip-script-tags.ts (100%) diff --git a/.env.example b/.env.example index cf2dd01..4cfc4be 100644 --- a/.env.example +++ b/.env.example @@ -1,6 +1,17 @@ # rss feed which should be a link to an xml file RSS_FEED_URL="" + # renders all episodes or just "coming soon" COMING_SOON_ENABLED="true" + # Adds the DECENTRALIZED banner for funsies -# DECENTRALIZED="true" \ No newline at end of file +# DECENTRALIZED="true" + +# GraphQL api token +BLOG_API_TOKEN="" + +# defaults to https://api.github.com/graphql +# BLOG_GRAPHQL_ENDPOINT="" + +# Blog github branch to pull content from defaults to "main" +# BLOG_BRANCH="" \ No newline at end of file diff --git a/.github/workflows/build-and-deploy.yml b/.github/workflows/build-and-deploy.yml index dfcfe87..7855689 100644 --- a/.github/workflows/build-and-deploy.yml +++ b/.github/workflows/build-and-deploy.yml @@ -12,6 +12,8 @@ jobs: environment: gh-pages steps: - uses: actions/setup-node@v3 + with: + node-version: 18 - name: Checkout 🛎️ uses: actions/checkout@v3 diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..9020bd1 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +18.5.0 diff --git a/app.config.ts b/app.config.ts index fb8e676..37a3b63 100644 --- a/app.config.ts +++ b/app.config.ts @@ -4,6 +4,10 @@ export const DECENTRALIZED = process.env.DECENTRALIZED === 'true'; export const BUILD_TS = process.env.BUILD_TS ? new Date(Number(process.env.BUILD_TS) * 1000) : new Date(); +export const BLOG_API_TOKEN = process.env.BLOG_API_TOKEN || ''; +export const BLOG_GRAPHQL_ENDPOINT = + process.env.BLOG_GRAPHQL_ENDPOINT || 'https://api.github.com/graphql'; +export const BLOG_BRANCH = process.env.BLOG_BRANCH || 'main'; if (!COMING_SOON_ENABLED && !RSS_FEED_URL) throw new Error( diff --git a/package.json b/package.json index ce43f81..2baadf9 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,10 @@ "private": true, "dependencies": { "@types/react": "^17.0.37", + "gray-matter": "^4.0.3", + "js-yaml": "^4.1.0", "next": "^12.0.7", + "next-mdx-remote": "^4.0.3", "next-sitemap": "^1.6.203", "react": "^17.0.2", "react-dom": "^17.0.2", diff --git a/components/AudioPlayer/AudioPlayer.styled.tsx b/src/components/AudioPlayer/AudioPlayer.styled.tsx similarity index 100% rename from components/AudioPlayer/AudioPlayer.styled.tsx rename to src/components/AudioPlayer/AudioPlayer.styled.tsx diff --git a/components/AudioPlayer/AudioPlayer.tsx b/src/components/AudioPlayer/AudioPlayer.tsx similarity index 100% rename from components/AudioPlayer/AudioPlayer.tsx rename to src/components/AudioPlayer/AudioPlayer.tsx diff --git a/components/AudioPlayer/AudioPlayerCtx.tsx b/src/components/AudioPlayer/AudioPlayerCtx.tsx similarity index 100% rename from components/AudioPlayer/AudioPlayerCtx.tsx rename to src/components/AudioPlayer/AudioPlayerCtx.tsx diff --git a/components/Episode/Episode.styled.ts b/src/components/Episode/Episode.styled.ts similarity index 100% rename from components/Episode/Episode.styled.ts rename to src/components/Episode/Episode.styled.ts diff --git a/components/Episode/Episode.tsx b/src/components/Episode/Episode.tsx similarity index 100% rename from components/Episode/Episode.tsx rename to src/components/Episode/Episode.tsx diff --git a/components/Episodes/Episodes.styled.ts b/src/components/Episodes/Episodes.styled.ts similarity index 100% rename from components/Episodes/Episodes.styled.ts rename to src/components/Episodes/Episodes.styled.ts diff --git a/components/Episodes/Episodes.tsx b/src/components/Episodes/Episodes.tsx similarity index 100% rename from components/Episodes/Episodes.tsx rename to src/components/Episodes/Episodes.tsx diff --git a/components/Footer/Footer.styled.ts b/src/components/Footer/Footer.styled.ts similarity index 100% rename from components/Footer/Footer.styled.ts rename to src/components/Footer/Footer.styled.ts diff --git a/components/Footer/Footer.tsx b/src/components/Footer/Footer.tsx similarity index 100% rename from components/Footer/Footer.tsx rename to src/components/Footer/Footer.tsx diff --git a/components/Header/Header.styled.ts b/src/components/Header/Header.styled.ts similarity index 100% rename from components/Header/Header.styled.ts rename to src/components/Header/Header.styled.ts diff --git a/components/Header/Header.tsx b/src/components/Header/Header.tsx similarity index 100% rename from components/Header/Header.tsx rename to src/components/Header/Header.tsx diff --git a/components/Hero/Hero.styled.tsx b/src/components/Hero/Hero.styled.tsx similarity index 100% rename from components/Hero/Hero.styled.tsx rename to src/components/Hero/Hero.styled.tsx diff --git a/components/Hero/Hero.tsx b/src/components/Hero/Hero.tsx similarity index 100% rename from components/Hero/Hero.tsx rename to src/components/Hero/Hero.tsx diff --git a/components/Hero/Mailchimp.tsx b/src/components/Hero/Mailchimp.tsx similarity index 100% rename from components/Hero/Mailchimp.tsx rename to src/components/Hero/Mailchimp.tsx diff --git a/components/Hero/ethereum.svg b/src/components/Hero/ethereum.svg similarity index 100% rename from components/Hero/ethereum.svg rename to src/components/Hero/ethereum.svg diff --git a/components/Hero/ttps-art-2048-2048.png b/src/components/Hero/ttps-art-2048-2048.png similarity index 100% rename from components/Hero/ttps-art-2048-2048.png rename to src/components/Hero/ttps-art-2048-2048.png diff --git a/components/Hero/ttps-art-880-880.png b/src/components/Hero/ttps-art-880-880.png similarity index 100% rename from components/Hero/ttps-art-880-880.png rename to src/components/Hero/ttps-art-880-880.png diff --git a/components/Meta/Meta.tsx b/src/components/Meta/Meta.tsx similarity index 100% rename from components/Meta/Meta.tsx rename to src/components/Meta/Meta.tsx diff --git a/components/PodcastLinks/PodcastLinks.styled.ts b/src/components/PodcastLinks/PodcastLinks.styled.ts similarity index 100% rename from components/PodcastLinks/PodcastLinks.styled.ts rename to src/components/PodcastLinks/PodcastLinks.styled.ts diff --git a/components/PodcastLinks/PodcastLinks.tsx b/src/components/PodcastLinks/PodcastLinks.tsx similarity index 100% rename from components/PodcastLinks/PodcastLinks.tsx rename to src/components/PodcastLinks/PodcastLinks.tsx diff --git a/components/PodcastLinks/podcast-links.ts b/src/components/PodcastLinks/podcast-links.ts similarity index 100% rename from components/PodcastLinks/podcast-links.ts rename to src/components/PodcastLinks/podcast-links.ts diff --git a/components/PodcastLinks/podcast-player-icons/amazon_music@2x.png b/src/components/PodcastLinks/podcast-player-icons/amazon_music@2x.png similarity index 100% rename from components/PodcastLinks/podcast-player-icons/amazon_music@2x.png rename to src/components/PodcastLinks/podcast-player-icons/amazon_music@2x.png diff --git a/components/PodcastLinks/podcast-player-icons/anchor-wave@2x.png b/src/components/PodcastLinks/podcast-player-icons/anchor-wave@2x.png similarity index 100% rename from components/PodcastLinks/podcast-player-icons/anchor-wave@2x.png rename to src/components/PodcastLinks/podcast-player-icons/anchor-wave@2x.png diff --git a/components/PodcastLinks/podcast-player-icons/apple_podcasts@2x.png b/src/components/PodcastLinks/podcast-player-icons/apple_podcasts@2x.png similarity index 100% rename from components/PodcastLinks/podcast-player-icons/apple_podcasts@2x.png rename to src/components/PodcastLinks/podcast-player-icons/apple_podcasts@2x.png diff --git a/components/PodcastLinks/podcast-player-icons/castbox@2x.png b/src/components/PodcastLinks/podcast-player-icons/castbox@2x.png similarity index 100% rename from components/PodcastLinks/podcast-player-icons/castbox@2x.png rename to src/components/PodcastLinks/podcast-player-icons/castbox@2x.png diff --git a/components/PodcastLinks/podcast-player-icons/google_podcasts_outline@2x.png b/src/components/PodcastLinks/podcast-player-icons/google_podcasts_outline@2x.png similarity index 100% rename from components/PodcastLinks/podcast-player-icons/google_podcasts_outline@2x.png rename to src/components/PodcastLinks/podcast-player-icons/google_podcasts_outline@2x.png diff --git a/components/PodcastLinks/podcast-player-icons/overcast@2x.png b/src/components/PodcastLinks/podcast-player-icons/overcast@2x.png similarity index 100% rename from components/PodcastLinks/podcast-player-icons/overcast@2x.png rename to src/components/PodcastLinks/podcast-player-icons/overcast@2x.png diff --git a/components/PodcastLinks/podcast-player-icons/pocket_casts@2x.png b/src/components/PodcastLinks/podcast-player-icons/pocket_casts@2x.png similarity index 100% rename from components/PodcastLinks/podcast-player-icons/pocket_casts@2x.png rename to src/components/PodcastLinks/podcast-player-icons/pocket_casts@2x.png diff --git a/components/PodcastLinks/podcast-player-icons/radiopublic@2x.png b/src/components/PodcastLinks/podcast-player-icons/radiopublic@2x.png similarity index 100% rename from components/PodcastLinks/podcast-player-icons/radiopublic@2x.png rename to src/components/PodcastLinks/podcast-player-icons/radiopublic@2x.png diff --git a/components/PodcastLinks/podcast-player-icons/rss.png b/src/components/PodcastLinks/podcast-player-icons/rss.png similarity index 100% rename from components/PodcastLinks/podcast-player-icons/rss.png rename to src/components/PodcastLinks/podcast-player-icons/rss.png diff --git a/components/PodcastLinks/podcast-player-icons/spotify@2x.png b/src/components/PodcastLinks/podcast-player-icons/spotify@2x.png similarity index 100% rename from components/PodcastLinks/podcast-player-icons/spotify@2x.png rename to src/components/PodcastLinks/podcast-player-icons/spotify@2x.png diff --git a/components/PodcastLinks/podcast-player-icons/stitcher_dark@2x.png b/src/components/PodcastLinks/podcast-player-icons/stitcher_dark@2x.png similarity index 100% rename from components/PodcastLinks/podcast-player-icons/stitcher_dark@2x.png rename to src/components/PodcastLinks/podcast-player-icons/stitcher_dark@2x.png diff --git a/src/gql-queries/blog-posts-query.ts b/src/gql-queries/blog-posts-query.ts new file mode 100644 index 0000000..7dbb927 --- /dev/null +++ b/src/gql-queries/blog-posts-query.ts @@ -0,0 +1,19 @@ +import { BLOG_BRANCH } from '../../app.config'; + +export const BLOG_POSTS_QUERY = ` +query { + repository(name: "ttps-cms", owner: "chad-syntax") { + object(expression: "${BLOG_BRANCH}:content/post/") { + ... on Tree { + entries { + object { + ... on Blob { + text + } + } + } + } + } + } +} +`; diff --git a/src/lib/blog.ts b/src/lib/blog.ts new file mode 100644 index 0000000..6fc859c --- /dev/null +++ b/src/lib/blog.ts @@ -0,0 +1,41 @@ +import matter from 'gray-matter'; +import yaml from 'js-yaml'; +import { serialize } from 'next-mdx-remote/serialize'; +import { BLOG_POSTS_QUERY } from '../gql-queries/blog-posts-query'; +import { BLOG_GRAPHQL_ENDPOINT, BLOG_API_TOKEN } from '../../app.config'; + +// turns md file into json data object for further parsing +const parseMdxData = (fileContents: string) => + matter(fileContents, { + engines: { + yaml: (s) => yaml.load(s, { schema: yaml.JSON_SCHEMA }) as object, + }, + }); + +export const fetchBlogPosts = async () => { + const body = JSON.stringify({ + query: BLOG_POSTS_QUERY, + variables: {}, + }); + + const { data } = await fetch(BLOG_GRAPHQL_ENDPOINT, { + method: 'POST', + headers: { + Authorization: `Bearer ${BLOG_API_TOKEN}`, + }, + body, + }).then((r) => r.json()); + + const posts = Promise.all( + data.repository.object.entries.map(async (entry) => { + const fileContents = entry.object.text; + const mdxMetadata = parseMdxData(fileContents); + + const mdxSource = await serialize(mdxMetadata.content); + + return { ...mdxMetadata, mdxSource }; + }) + ); + + return posts; +}; diff --git a/pages/404.tsx b/src/pages/404.tsx similarity index 100% rename from pages/404.tsx rename to src/pages/404.tsx diff --git a/pages/_app.tsx b/src/pages/_app.tsx similarity index 100% rename from pages/_app.tsx rename to src/pages/_app.tsx diff --git a/pages/_document.tsx b/src/pages/_document.tsx similarity index 100% rename from pages/_document.tsx rename to src/pages/_document.tsx diff --git a/src/pages/blog/[slug].tsx b/src/pages/blog/[slug].tsx new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/blog/index.tsx b/src/pages/blog/index.tsx new file mode 100644 index 0000000..62047d1 --- /dev/null +++ b/src/pages/blog/index.tsx @@ -0,0 +1,62 @@ +import { MDXRemote } from 'next-mdx-remote'; +import { Footer } from '../../components/Footer/Footer'; +import { fetchBlogPosts } from '../../lib/blog'; + +const Test = () => ( +

+ I AM TEST +

+); + +const MDXComponents = { Test }; + +interface BlogIndexPageProps { + posts: any[]; +} + +export async function getStaticProps() { + const posts = await fetchBlogPosts(); + + return { + props: { + posts, + }, + }; +} + +export default function BlogIndexPage(props: BlogIndexPageProps) { + const { posts } = props; + return ( +
+ blog index +
+ {posts.map((post) => ( +
+ {post.data.title} + +
+ ))} +
+ {/* */} + {/* {!comingSoonEnabled &&
} */} + {/* + */} + {/* */} +
+
+ ); +} diff --git a/pages/episodes/[slug].tsx b/src/pages/episodes/[slug].tsx similarity index 100% rename from pages/episodes/[slug].tsx rename to src/pages/episodes/[slug].tsx diff --git a/pages/index.tsx b/src/pages/index.tsx similarity index 98% rename from pages/index.tsx rename to src/pages/index.tsx index e036954..481cb57 100644 --- a/pages/index.tsx +++ b/src/pages/index.tsx @@ -12,7 +12,7 @@ import { RSS_FEED_URL, BUILD_TS, DECENTRALIZED, -} from '../app.config'; +} from '../../app.config'; const parser = new Parser(); diff --git a/public/CNAME b/src/public/CNAME similarity index 100% rename from public/CNAME rename to src/public/CNAME diff --git a/public/SERIES_OF_TUBES.mp3 b/src/public/SERIES_OF_TUBES.mp3 similarity index 100% rename from public/SERIES_OF_TUBES.mp3 rename to src/public/SERIES_OF_TUBES.mp3 diff --git a/public/android-chrome-192x192.png b/src/public/android-chrome-192x192.png similarity index 100% rename from public/android-chrome-192x192.png rename to src/public/android-chrome-192x192.png diff --git a/public/android-chrome-256x256.png b/src/public/android-chrome-256x256.png similarity index 100% rename from public/android-chrome-256x256.png rename to src/public/android-chrome-256x256.png diff --git a/public/apple-touch-icon.png b/src/public/apple-touch-icon.png similarity index 100% rename from public/apple-touch-icon.png rename to src/public/apple-touch-icon.png diff --git a/public/browserconfig.xml b/src/public/browserconfig.xml similarity index 100% rename from public/browserconfig.xml rename to src/public/browserconfig.xml diff --git a/public/favicon-16x16.png b/src/public/favicon-16x16.png similarity index 100% rename from public/favicon-16x16.png rename to src/public/favicon-16x16.png diff --git a/public/favicon-32x32.png b/src/public/favicon-32x32.png similarity index 100% rename from public/favicon-32x32.png rename to src/public/favicon-32x32.png diff --git a/public/favicon.ico b/src/public/favicon.ico similarity index 100% rename from public/favicon.ico rename to src/public/favicon.ico diff --git a/public/mstile-150x150.png b/src/public/mstile-150x150.png similarity index 100% rename from public/mstile-150x150.png rename to src/public/mstile-150x150.png diff --git a/public/robots.txt b/src/public/robots.txt similarity index 100% rename from public/robots.txt rename to src/public/robots.txt diff --git a/public/safari-pinned-tab.svg b/src/public/safari-pinned-tab.svg similarity index 100% rename from public/safari-pinned-tab.svg rename to src/public/safari-pinned-tab.svg diff --git a/public/site.webmanifest b/src/public/site.webmanifest similarity index 100% rename from public/site.webmanifest rename to src/public/site.webmanifest diff --git a/public/sitemap.xml b/src/public/sitemap.xml similarity index 100% rename from public/sitemap.xml rename to src/public/sitemap.xml diff --git a/public/ttps_og.jpg b/src/public/ttps_og.jpg similarity index 100% rename from public/ttps_og.jpg rename to src/public/ttps_og.jpg diff --git a/utils/audio.ts b/src/utils/audio.ts similarity index 100% rename from utils/audio.ts rename to src/utils/audio.ts diff --git a/utils/constants.ts b/src/utils/constants.ts similarity index 100% rename from utils/constants.ts rename to src/utils/constants.ts diff --git a/utils/slugify.ts b/src/utils/slugify.ts similarity index 100% rename from utils/slugify.ts rename to src/utils/slugify.ts diff --git a/utils/strip-script-tags.ts b/src/utils/strip-script-tags.ts similarity index 100% rename from utils/strip-script-tags.ts rename to src/utils/strip-script-tags.ts diff --git a/yarn.lock b/yarn.lock index 12f31ca..c197228 100644 --- a/yarn.lock +++ b/yarn.lock @@ -148,6 +148,37 @@ resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== +"@mdx-js/mdx@^2.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@mdx-js/mdx/-/mdx-2.1.2.tgz#d13fb811809fda37967dc0eebd5bb36adce89a81" + integrity sha512-ASN1GUH0gXsgJ2UD/Td7FzJo1SwFkkQ5V1i9at5o/ROra7brkyMcBsotsOWJWRzmXZaLw2uXWn4aN8B3PMNFMA== + dependencies: + "@types/estree-jsx" "^0.0.1" + "@types/mdx" "^2.0.0" + astring "^1.6.0" + estree-util-build-jsx "^2.0.0" + estree-util-is-identifier-name "^2.0.0" + estree-walker "^3.0.0" + hast-util-to-estree "^2.0.0" + markdown-extensions "^1.0.0" + periscopic "^3.0.0" + remark-mdx "^2.0.0" + remark-parse "^10.0.0" + remark-rehype "^10.0.0" + unified "^10.0.0" + unist-util-position-from-estree "^1.0.0" + unist-util-stringify-position "^3.0.0" + unist-util-visit "^4.0.0" + vfile "^5.0.0" + +"@mdx-js/react@^2.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@mdx-js/react/-/react-2.1.2.tgz#02972f170cd3ad9113ce448245c5f636bb3e750d" + integrity sha512-52e3DTJBrjsw3U51ZCdZ3N1IBaqnbzLIngCSXpKtiYiGr7PIqp3/P/+kym0MPTwBL/y9ZBmCieD8FyrXuEDrRw== + dependencies: + "@types/mdx" "^2.0.0" + "@types/react" ">=16" + "@next/env@12.1.6": version "12.1.6" resolved "https://registry.yarnpkg.com/@next/env/-/env-12.1.6.tgz#5f44823a78335355f00f1687cfc4f1dafa3eca08" @@ -213,6 +244,71 @@ resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.6.tgz#a350caf42975e7197b24b495b8d764eec7e6a36e" integrity sha512-4ZEwiRuZEicXhXqmhw3+de8Z4EpOLQj/gp+D9fFWo6ii6W1kBkNNvvEx4A90ugppu+74pT1lIJnOuz3A9oQeJA== +"@types/acorn@^4.0.0": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@types/acorn/-/acorn-4.0.6.tgz#d61ca5480300ac41a7d973dd5b84d0a591154a22" + integrity sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ== + dependencies: + "@types/estree" "*" + +"@types/debug@^4.0.0": + version "4.1.7" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82" + integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg== + dependencies: + "@types/ms" "*" + +"@types/estree-jsx@^0.0.1": + version "0.0.1" + resolved "https://registry.yarnpkg.com/@types/estree-jsx/-/estree-jsx-0.0.1.tgz#c36d7a1afeb47a95a8ee0b7bc8bc705db38f919d" + integrity sha512-gcLAYiMfQklDCPjQegGn0TBAn9it05ISEsEhlKQUddIk7o2XDokOcTN7HBO8tznM0D9dGezvHEfRZBfZf6me0A== + dependencies: + "@types/estree" "*" + +"@types/estree@*": + version "0.0.52" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.52.tgz#7f1f57ad5b741f3d5b210d3b1f145640d89bf8fe" + integrity sha512-BZWrtCU0bMVAIliIV+HJO1f1PR41M7NKjfxrFJwwhKI1KwhwOxYw1SXg9ao+CIMt774nFuGiG6eU+udtbEI9oQ== + +"@types/estree@^0.0.51": + version "0.0.51" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" + integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== + +"@types/hast@^2.0.0": + version "2.3.4" + resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.4.tgz#8aa5ef92c117d20d974a82bdfb6a648b08c0bafc" + integrity sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g== + dependencies: + "@types/unist" "*" + +"@types/js-yaml@^4.0.0": + version "4.0.5" + resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.5.tgz#738dd390a6ecc5442f35e7f03fa1431353f7e138" + integrity sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA== + +"@types/mdast@^3.0.0": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af" + integrity sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA== + dependencies: + "@types/unist" "*" + +"@types/mdurl@^1.0.0": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.2.tgz#e2ce9d83a613bacf284c7be7d491945e39e1f8e9" + integrity sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA== + +"@types/mdx@^2.0.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.2.tgz#64be19baddba4323ae7893e077e98759316fe279" + integrity sha512-mJGfgj4aWpiKb8C0nnJJchs1sHBHn0HugkVfqqyQi7Wn6mBRksLeQsPOFvih/Pu8L1vlDzfe/LidhVHBeUk3aQ== + +"@types/ms@*": + version "0.7.31" + resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" + integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== + "@types/node@^17.0.35": version "17.0.35" resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.35.tgz#635b7586086d51fb40de0a2ec9d1014a5283ba4a" @@ -223,6 +319,15 @@ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== +"@types/react@>=16": + version "18.0.15" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.15.tgz#d355644c26832dc27f3e6cbf0c4f4603fc4ab7fe" + integrity sha512-iz3BtLuIYH1uWdsv6wXYdhozhqj20oD4/Hk2DNXIn1kFsmp9x8d9QB6FnPhfkbhd2PgEONt9Q1x/ebkwjfFLow== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + "@types/react@^17.0.37": version "17.0.37" resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.37.tgz#6884d0aa402605935c397ae689deed115caad959" @@ -237,6 +342,11 @@ resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== +"@types/unist@*", "@types/unist@^2.0.0": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" + integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== + "@zeit/schemas@2.6.0": version "2.6.0" resolved "https://registry.yarnpkg.com/@zeit/schemas/-/schemas-2.6.0.tgz#004e8e553b4cd53d538bd38eac7bcbf58a867fe3" @@ -250,6 +360,16 @@ accepts@~1.3.5: mime-types "~2.1.24" negotiator "0.6.2" +acorn-jsx@^5.0.0: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn@^8.0.0: + version "8.7.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" + integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== + ajv@6.12.6: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" @@ -296,6 +416,23 @@ arg@2.0.0: resolved "https://registry.yarnpkg.com/arg/-/arg-2.0.0.tgz#c06e7ff69ab05b3a4a03ebe0407fac4cba657545" integrity sha512-XxNTUzKnz1ctK3ZIcI2XUPlD96wbHP2nGqkPKpvk/HNRlPveYrXIVSTk9m3LcqOgDPg3B1nMvdV/K8wZd7PG4w== +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +astring@^1.6.0: + version "1.8.3" + resolved "https://registry.yarnpkg.com/astring/-/astring-1.8.3.tgz#1a0ae738c7cc558f8e5ddc8e3120636f5cebcb85" + integrity sha512-sRpyiNrx2dEYIMmUXprS8nlpRg2Drs8m9ElX9vVEXaCB4XEAJhKfs7IcX0IwShjuOAjLR6wzIrgoptz1n19i1A== + "babel-plugin-styled-components@>= 1.12.0": version "2.0.2" resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.2.tgz#0fac11402dc9db73698b55847ab1dc73f5197c54" @@ -311,6 +448,11 @@ babel-plugin-syntax-jsx@^6.18.0: resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= +bail@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d" + integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw== + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -358,6 +500,11 @@ caniuse-lite@^1.0.30001332: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001341.tgz#59590c8ffa8b5939cf4161f00827b8873ad72498" integrity sha512-2SodVrFFtvGENGCv0ChVJIDQ0KPaS1cg7/qtfMaICgeMolDdo/Z2OD32F0Aq9yl6F4YFwGPBS5AaPqNYiW4PoA== +ccount@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" + integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== + chalk@2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" @@ -384,6 +531,26 @@ chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +character-entities-html4@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz#1f1adb940c971a4b22ba39ddca6b618dc6e56b2b" + integrity sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA== + +character-entities-legacy@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz#76bc83a90738901d7bc223a9e93759fdd560125b" + integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== + +character-entities@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22" + integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ== + +character-reference-invalid@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz#85c66b041e43b47210faf401278abf808ac45cb9" + integrity sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw== + cli-boxes@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" @@ -422,6 +589,11 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +comma-separated-tokens@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz#d4c25abb679b7751c880be623c1179780fe1dd98" + integrity sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg== + compressible@~2.0.14: version "2.0.18" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" @@ -489,6 +661,13 @@ debug@2.6.9: dependencies: ms "2.0.0" +debug@^4.0.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + debug@^4.1.0: version "4.3.3" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" @@ -496,11 +675,28 @@ debug@^4.1.0: dependencies: ms "2.1.2" +decode-named-character-reference@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz#daabac9690874c394c81e4162a0304b35d824f0e" + integrity sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg== + dependencies: + character-entities "^2.0.0" + deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== +dequal@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + +diff@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" + integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -523,6 +719,45 @@ escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +estree-util-attach-comments@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/estree-util-attach-comments/-/estree-util-attach-comments-2.0.1.tgz#57dd0ae170ce2a6d9170ad69e6a45c87bcb52d81" + integrity sha512-1wTBNndwMIsnvnuxjFIaYQz0M7PsCvcgP0YD7/dU8xWh1FuHk+O6pYpT4sLa5THY/CywJvdIdgw4uhozujga/g== + dependencies: + "@types/estree" "^0.0.51" + +estree-util-build-jsx@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/estree-util-build-jsx/-/estree-util-build-jsx-2.1.0.tgz#629aa81fbb1b16ed628c7a9334d37bc8a2a3726f" + integrity sha512-gsBGfsY6LOJUIDwmMkTOcgCX+3r/LUjRBccgHMSW55PHjhZsV13RmPl/iwpAvW8KcQqoN9P0FEFWTSS2Zc5bGA== + dependencies: + "@types/estree-jsx" "^0.0.1" + estree-util-is-identifier-name "^2.0.0" + estree-walker "^3.0.0" + +estree-util-is-identifier-name@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.0.1.tgz#cf07867f42705892718d9d89eb2d85eaa8f0fcb5" + integrity sha512-rxZj1GkQhY4x1j/CSnybK9cGuMFQYFPLq0iNyopqf14aOVLFtMv7Esika+ObJWPWiOHuMOAHz3YkWoLYYRnzWQ== + +estree-util-visit@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/estree-util-visit/-/estree-util-visit-1.1.0.tgz#c0ea7942c40ac7889a77b57a11e92f987744bc6f" + integrity sha512-3lXJ4Us9j8TUif9cWcQy81t9p5OLasnDuuhrFiqb+XstmKC1d1LmrQWYsY49/9URcfHE64mPypDBaNK9NwWDPQ== + dependencies: + "@types/estree-jsx" "^0.0.1" + "@types/unist" "^2.0.0" + +estree-walker@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.1.tgz#c2a9fb4a30232f5039b7c030b37ead691932debd" + integrity sha512-woY0RUD87WzMBUiZLx8NsYr23N5BKsOMZHhu2hoNRVh6NXGfoiT1KOL8G3UHlJAnEDGmfa5ubNA/AacfG+Kb0g== + execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -536,6 +771,18 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== + dependencies: + is-extendable "^0.1.0" + +extend@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + fast-deep-equal@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -565,6 +812,16 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +gray-matter@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798" + integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q== + dependencies: + js-yaml "^3.13.1" + kind-of "^6.0.2" + section-matter "^1.0.0" + strip-bom-string "^1.0.0" + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -575,6 +832,31 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +hast-util-to-estree@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hast-util-to-estree/-/hast-util-to-estree-2.0.2.tgz#79c5bf588915610b3f0d47ca83a74dc0269c7dc2" + integrity sha512-UQrZVeBj6A9od0lpFvqHKNSH9zvDrNoyWKbveu1a2oSCXEDUI+3bnd6BoiQLPnLrcXXn/jzJ6y9hmJTTlvf8lQ== + dependencies: + "@types/estree-jsx" "^0.0.1" + "@types/hast" "^2.0.0" + "@types/unist" "^2.0.0" + comma-separated-tokens "^2.0.0" + estree-util-attach-comments "^2.0.0" + estree-util-is-identifier-name "^2.0.0" + hast-util-whitespace "^2.0.0" + mdast-util-mdx-expression "^1.0.0" + mdast-util-mdxjs-esm "^1.0.0" + property-information "^6.0.0" + space-separated-tokens "^2.0.0" + style-to-object "^0.3.0" + unist-util-position "^4.0.0" + zwitch "^2.0.0" + +hast-util-whitespace@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz#4fc1086467cc1ef5ba20673cb6b03cec3a970f1c" + integrity sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg== + hoist-non-react-statics@^3.0.0: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" @@ -587,16 +869,66 @@ ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== +inline-style-parser@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" + integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== + +is-alphabetical@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-2.0.1.tgz#01072053ea7c1036df3c7d19a6daaec7f19e789b" + integrity sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ== + +is-alphanumerical@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz#7c03fbe96e3e931113e57f964b0a368cc2dfd875" + integrity sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw== + dependencies: + is-alphabetical "^2.0.0" + is-decimal "^2.0.0" + +is-buffer@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + +is-decimal@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-2.0.1.tgz#9469d2dc190d0214fd87d78b78caecc0cc14eef7" + integrity sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A== + is-docker@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== +is-extendable@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== + is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-hexadecimal@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz#86b5bf668fca307498d319dfc03289d781a90027" + integrity sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg== + +is-plain-obj@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0" + integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg== + +is-reference@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-3.0.0.tgz#b1380c03d96ddf7089709781e3208fceb0c92cd6" + integrity sha512-Eo1W3wUoHWoCoVM4GVl/a+K0IgiqE5aIo4kJABFyMum1ZORlPkC+UC357sSQUL5w5QCE5kCC9upl75b7+7CY/Q== + dependencies: + "@types/estree" "*" + is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -619,6 +951,21 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.0.0, js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -629,11 +976,26 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^4.0.3: + version "4.1.5" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" + integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== + lodash@^4.17.11: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +longest-streak@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-3.0.1.tgz#c97315b7afa0e7d9525db9a5a2953651432bdc5d" + integrity sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg== + loose-envify@^1.1.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -641,6 +1003,410 @@ loose-envify@^1.1.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" +markdown-extensions@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/markdown-extensions/-/markdown-extensions-1.1.1.tgz#fea03b539faeaee9b4ef02a3769b455b189f7fc3" + integrity sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q== + +mdast-util-definitions@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-5.1.1.tgz#2c1d684b28e53f84938bb06317944bee8efa79db" + integrity sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ== + dependencies: + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + unist-util-visit "^4.0.0" + +mdast-util-from-markdown@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-1.2.0.tgz#84df2924ccc6c995dec1e2368b2b208ad0a76268" + integrity sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q== + dependencies: + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + decode-named-character-reference "^1.0.0" + mdast-util-to-string "^3.1.0" + micromark "^3.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-decode-string "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + unist-util-stringify-position "^3.0.0" + uvu "^0.5.0" + +mdast-util-mdx-expression@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.2.1.tgz#3195450498c438fbdb82838c23d9b3f8b23174da" + integrity sha512-BtQwyalaq6jRjx0pagtuAwGrmzL1yInrfA4EJv7GOoiPOUbR4gr6h65I+G3WTh1/Cag2Eda4ip400Ch6CFmWiA== + dependencies: + "@types/estree-jsx" "^0.0.1" + "@types/hast" "^2.0.0" + "@types/mdast" "^3.0.0" + mdast-util-from-markdown "^1.0.0" + mdast-util-to-markdown "^1.0.0" + +mdast-util-mdx-jsx@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-2.0.2.tgz#087448dc29f6df9b9d9951132f82c20bd378bb68" + integrity sha512-Bs1HnFprSJW0al1h49ZQBaLfwROFEY3SLK98xWsA60fVhe6zEbPS8gVYxkuT07TeEZWIbkjyFYXkZ34ARxfYNQ== + dependencies: + "@types/estree-jsx" "^0.0.1" + "@types/hast" "^2.0.0" + "@types/mdast" "^3.0.0" + ccount "^2.0.0" + mdast-util-to-markdown "^1.3.0" + parse-entities "^4.0.0" + stringify-entities "^4.0.0" + unist-util-remove-position "^4.0.0" + unist-util-stringify-position "^3.0.0" + vfile-message "^3.0.0" + +mdast-util-mdx@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-mdx/-/mdast-util-mdx-2.0.0.tgz#dd4f6c993cf27da32725e50a04874f595b7b63fb" + integrity sha512-M09lW0CcBT1VrJUaF/PYxemxxHa7SLDHdSn94Q9FhxjCQfuW7nMAWKWimTmA3OyDMSTH981NN1csW1X+HPSluw== + dependencies: + mdast-util-mdx-expression "^1.0.0" + mdast-util-mdx-jsx "^2.0.0" + mdast-util-mdxjs-esm "^1.0.0" + +mdast-util-mdxjs-esm@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-1.2.1.tgz#9e3fd9770f06022b2e7b40fb444eafe64a96495f" + integrity sha512-3zNmTy1V1OgIxoV97PTkAl+tLriilS8d4CJwPV9LvBmWra5nnRriN8rpGSGGIM7NLoHfsUfvjcPoNIzl77F8Kw== + dependencies: + "@types/estree-jsx" "^0.0.1" + "@types/hast" "^2.0.0" + "@types/mdast" "^3.0.0" + mdast-util-from-markdown "^1.0.0" + mdast-util-to-markdown "^1.0.0" + +mdast-util-to-hast@^12.1.0: + version "12.1.2" + resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-12.1.2.tgz#5c793b04014746585254c7ce0bc2d117201a5d1d" + integrity sha512-Wn6Mcj04qU4qUXHnHpPATYMH2Jd8RlntdnloDfYLe1ErWRHo6+pvSl/DzHp6sCZ9cBSYlc8Sk8pbwb8xtUoQhQ== + dependencies: + "@types/hast" "^2.0.0" + "@types/mdast" "^3.0.0" + "@types/mdurl" "^1.0.0" + mdast-util-definitions "^5.0.0" + mdurl "^1.0.0" + micromark-util-sanitize-uri "^1.0.0" + trim-lines "^3.0.0" + unist-builder "^3.0.0" + unist-util-generated "^2.0.0" + unist-util-position "^4.0.0" + unist-util-visit "^4.0.0" + +mdast-util-to-markdown@^1.0.0, mdast-util-to-markdown@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz#38b6cdc8dc417de642a469c4fc2abdf8c931bd1e" + integrity sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA== + dependencies: + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + longest-streak "^3.0.0" + mdast-util-to-string "^3.0.0" + micromark-util-decode-string "^1.0.0" + unist-util-visit "^4.0.0" + zwitch "^2.0.0" + +mdast-util-to-string@^3.0.0, mdast-util-to-string@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz#56c506d065fbf769515235e577b5a261552d56e9" + integrity sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA== + +mdurl@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== + +micromark-core-commonmark@^1.0.0, micromark-core-commonmark@^1.0.1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz#edff4c72e5993d93724a3c206970f5a15b0585ad" + integrity sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA== + dependencies: + decode-named-character-reference "^1.0.0" + micromark-factory-destination "^1.0.0" + micromark-factory-label "^1.0.0" + micromark-factory-space "^1.0.0" + micromark-factory-title "^1.0.0" + micromark-factory-whitespace "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-chunked "^1.0.0" + micromark-util-classify-character "^1.0.0" + micromark-util-html-tag-name "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-resolve-all "^1.0.0" + micromark-util-subtokenize "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.1" + uvu "^0.5.0" + +micromark-extension-mdx-expression@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-1.0.3.tgz#cd3843573921bf55afcfff4ae0cd2e857a16dcfa" + integrity sha512-TjYtjEMszWze51NJCZmhv7MEBcgYRgb3tJeMAJ+HQCAaZHHRBaDCccqQzGizR/H4ODefP44wRTgOn2vE5I6nZA== + dependencies: + micromark-factory-mdx-expression "^1.0.0" + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-events-to-acorn "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-extension-mdx-jsx@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-1.0.3.tgz#9f196be5f65eb09d2a49b237a7b3398bba2999be" + integrity sha512-VfA369RdqUISF0qGgv2FfV7gGjHDfn9+Qfiv5hEwpyr1xscRj/CiVRkU7rywGFCO7JwJ5L0e7CJz60lY52+qOA== + dependencies: + "@types/acorn" "^4.0.0" + estree-util-is-identifier-name "^2.0.0" + micromark-factory-mdx-expression "^1.0.0" + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + vfile-message "^3.0.0" + +micromark-extension-mdx-md@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-mdx-md/-/micromark-extension-mdx-md-1.0.0.tgz#382f5df9ee3706dd120b51782a211f31f4760d22" + integrity sha512-xaRAMoSkKdqZXDAoSgp20Azm0aRQKGOl0RrS81yGu8Hr/JhMsBmfs4wR7m9kgVUIO36cMUQjNyiyDKPrsv8gOw== + dependencies: + micromark-util-types "^1.0.0" + +micromark-extension-mdxjs-esm@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-1.0.3.tgz#630d9dc9db2c2fd470cac8c1e7a824851267404d" + integrity sha512-2N13ol4KMoxb85rdDwTAC6uzs8lMX0zeqpcyx7FhS7PxXomOnLactu8WI8iBNXW8AVyea3KIJd/1CKnUmwrK9A== + dependencies: + micromark-core-commonmark "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-events-to-acorn "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + unist-util-position-from-estree "^1.1.0" + uvu "^0.5.0" + vfile-message "^3.0.0" + +micromark-extension-mdxjs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-extension-mdxjs/-/micromark-extension-mdxjs-1.0.0.tgz#772644e12fc8299a33e50f59c5aa15727f6689dd" + integrity sha512-TZZRZgeHvtgm+IhtgC2+uDMR7h8eTKF0QUX9YsgoL9+bADBpBY6SiLvWqnBlLbCEevITmTqmEuY3FoxMKVs1rQ== + dependencies: + acorn "^8.0.0" + acorn-jsx "^5.0.0" + micromark-extension-mdx-expression "^1.0.0" + micromark-extension-mdx-jsx "^1.0.0" + micromark-extension-mdx-md "^1.0.0" + micromark-extension-mdxjs-esm "^1.0.0" + micromark-util-combine-extensions "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-destination@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz#fef1cb59ad4997c496f887b6977aa3034a5a277e" + integrity sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-label@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz#6be2551fa8d13542fcbbac478258fb7a20047137" + integrity sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-factory-mdx-expression@^1.0.0: + version "1.0.6" + resolved "https://registry.yarnpkg.com/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-1.0.6.tgz#917e17d16e6e9c2551f3a862e6a9ebdd22056476" + integrity sha512-WRQIc78FV7KrCfjsEf/sETopbYjElh3xAmNpLkd1ODPqxEngP42eVRGbiPEQWpRV27LzqW+XVTvQAMIIRLPnNA== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-events-to-acorn "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + unist-util-position-from-estree "^1.0.0" + uvu "^0.5.0" + vfile-message "^3.0.0" + +micromark-factory-space@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz#cebff49968f2b9616c0fcb239e96685cb9497633" + integrity sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-title@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz#7e09287c3748ff1693930f176e1c4a328382494f" + integrity sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-factory-whitespace@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz#e991e043ad376c1ba52f4e49858ce0794678621c" + integrity sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-character@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-1.1.0.tgz#d97c54d5742a0d9611a68ca0cd4124331f264d86" + integrity sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg== + dependencies: + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-chunked@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz#5b40d83f3d53b84c4c6bce30ed4257e9a4c79d06" + integrity sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-classify-character@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz#cbd7b447cb79ee6997dd274a46fc4eb806460a20" + integrity sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-combine-extensions@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz#91418e1e74fb893e3628b8d496085639124ff3d5" + integrity sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA== + dependencies: + micromark-util-chunked "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-decode-numeric-character-reference@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz#dcc85f13b5bd93ff8d2868c3dba28039d490b946" + integrity sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-decode-string@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz#942252ab7a76dec2dbf089cc32505ee2bc3acf02" + integrity sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q== + dependencies: + decode-named-character-reference "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-symbol "^1.0.0" + +micromark-util-encode@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz#2c1c22d3800870ad770ece5686ebca5920353383" + integrity sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA== + +micromark-util-events-to-acorn@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-1.1.0.tgz#9891638e201c266484d0af7cd2505d208f73db9d" + integrity sha512-hB8HzidNt/Us5q2BvqXj8eeEm0U9rRfnZxcA9T65JRUMAY4MbfJRAFm7m9fXMAdSHJiVPmajsp8/rp6/FlHL8A== + dependencies: + "@types/acorn" "^4.0.0" + "@types/estree" "^0.0.51" + estree-util-visit "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + vfile-location "^4.0.0" + vfile-message "^3.0.0" + +micromark-util-html-tag-name@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.1.0.tgz#eb227118befd51f48858e879b7a419fc0df20497" + integrity sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA== + +micromark-util-normalize-identifier@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz#4a3539cb8db954bbec5203952bfe8cedadae7828" + integrity sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-resolve-all@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz#a7c363f49a0162e931960c44f3127ab58f031d88" + integrity sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw== + dependencies: + micromark-util-types "^1.0.0" + +micromark-util-sanitize-uri@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.0.0.tgz#27dc875397cd15102274c6c6da5585d34d4f12b2" + integrity sha512-cCxvBKlmac4rxCGx6ejlIviRaMKZc0fWm5HdCHEeDWRSkn44l6NdYVRyU+0nT1XC72EQJMZV8IPHF+jTr56lAg== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-encode "^1.0.0" + micromark-util-symbol "^1.0.0" + +micromark-util-subtokenize@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz#ff6f1af6ac836f8bfdbf9b02f40431760ad89105" + integrity sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA== + dependencies: + micromark-util-chunked "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-util-symbol@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz#b90344db62042ce454f351cf0bebcc0a6da4920e" + integrity sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ== + +micromark-util-types@^1.0.0, micromark-util-types@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-1.0.2.tgz#f4220fdb319205812f99c40f8c87a9be83eded20" + integrity sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w== + +micromark@^3.0.0: + version "3.0.10" + resolved "https://registry.yarnpkg.com/micromark/-/micromark-3.0.10.tgz#1eac156f0399d42736458a14b0ca2d86190b457c" + integrity sha512-ryTDy6UUunOXy2HPjelppgJ2sNfcPz1pLlMdA6Rz9jPzhLikWXv/irpWV/I2jd68Uhmny7hHxAlAhk4+vWggpg== + dependencies: + "@types/debug" "^4.0.0" + debug "^4.0.0" + decode-named-character-reference "^1.0.0" + micromark-core-commonmark "^1.0.1" + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-chunked "^1.0.0" + micromark-util-combine-extensions "^1.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-encode "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-resolve-all "^1.0.0" + micromark-util-sanitize-uri "^1.0.0" + micromark-util-subtokenize "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.1" + uvu "^0.5.0" + mime-db@1.51.0, "mime-db@>= 1.43.0 < 2": version "1.51.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" @@ -677,6 +1443,11 @@ minimist@^1.2.0, minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== +mri@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" + integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -697,6 +1468,16 @@ negotiator@0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== +next-mdx-remote@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/next-mdx-remote/-/next-mdx-remote-4.0.3.tgz#1f614363249f075c81d7b81cd24b924d6f8192e6" + integrity sha512-jKpZyBN0cOUmfBRId5iGpplWOO79hV2A5qfo17VG4Avn0G5PEs6vR9vf9IngKEw1G4aVqzhCs3j9CEbMFzZoAg== + dependencies: + "@mdx-js/mdx" "^2.0.0" + "@mdx-js/react" "^2.0.0" + vfile "^5.3.0" + vfile-matter "^3.0.1" + next-sitemap@^1.6.203: version "1.9.12" resolved "https://registry.yarnpkg.com/next-sitemap/-/next-sitemap-1.9.12.tgz#288c2dfc907039892e21eb1b0c7a94d288f323d9" @@ -762,6 +1543,20 @@ p-finally@^1.0.0: resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= +parse-entities@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-4.0.0.tgz#f67c856d4e3fe19b1a445c3fabe78dcdc1053eeb" + integrity sha512-5nk9Fn03x3rEhGaX1FU6IDwG/k+GxLXlFAkgrbM1asuAFl3BhdQWvASaIsmwWypRNcZKHPYnIuOSfIWEyEQnPQ== + dependencies: + "@types/unist" "^2.0.0" + character-entities "^2.0.0" + character-entities-legacy "^3.0.0" + character-reference-invalid "^2.0.0" + decode-named-character-reference "^1.0.0" + is-alphanumerical "^2.0.0" + is-decimal "^2.0.0" + is-hexadecimal "^2.0.0" + path-is-inside@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" @@ -777,6 +1572,14 @@ path-to-regexp@2.2.1: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-2.2.1.tgz#90b617025a16381a879bc82a38d4e8bdeb2bcf45" integrity sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ== +periscopic@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/periscopic/-/periscopic-3.0.4.tgz#b3fbed0d1bc844976b977173ca2cd4a0ef4fa8d1" + integrity sha512-SFx68DxCv0Iyo6APZuw/AKewkkThGwssmU0QWtTlvov3VAtPX+QJ4CadwSaz8nrT5jPIuxdvJWB4PnD2KNDxQg== + dependencies: + estree-walker "^3.0.0" + is-reference "^3.0.0" + picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" @@ -796,6 +1599,11 @@ postcss@8.4.5: picocolors "^1.0.0" source-map-js "^1.0.1" +property-information@^6.0.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.1.1.tgz#5ca85510a3019726cb9afed4197b7b8ac5926a22" + integrity sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w== + pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -866,6 +1674,33 @@ registry-url@3.1.0: dependencies: rc "^1.0.1" +remark-mdx@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-2.1.2.tgz#eea2784fa5697e14f6e0686700077986b88b8078" + integrity sha512-npQagPdczPAv0xN9F8GSi5hJfAe/z6nBjylyfOfjLOmz086ahWrIjlk4BulRfNhA+asutqWxyuT3DFVsxiTVHA== + dependencies: + mdast-util-mdx "^2.0.0" + micromark-extension-mdxjs "^1.0.0" + +remark-parse@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-10.0.1.tgz#6f60ae53edbf0cf38ea223fe643db64d112e0775" + integrity sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-from-markdown "^1.0.0" + unified "^10.0.0" + +remark-rehype@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-10.1.0.tgz#32dc99d2034c27ecaf2e0150d22a6dcccd9a6279" + integrity sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw== + dependencies: + "@types/hast" "^2.0.0" + "@types/mdast" "^3.0.0" + mdast-util-to-hast "^12.1.0" + unified "^10.0.0" + rss-parser@^3.12.0: version "3.12.0" resolved "https://registry.yarnpkg.com/rss-parser/-/rss-parser-3.12.0.tgz#b8888699ea46304a74363fbd8144671b2997984c" @@ -874,6 +1709,13 @@ rss-parser@^3.12.0: entities "^2.0.3" xml2js "^0.4.19" +sade@^1.7.3: + version "1.8.1" + resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" + integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== + dependencies: + mri "^1.1.0" + safe-buffer@5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -897,6 +1739,14 @@ scheduler@^0.20.2: loose-envify "^1.1.0" object-assign "^4.1.1" +section-matter@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167" + integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA== + dependencies: + extend-shallow "^2.0.1" + kind-of "^6.0.0" + semver@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" @@ -968,6 +1818,16 @@ source-map@^0.5.0: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= +space-separated-tokens@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz#43193cec4fb858a2ce934b7f98b7f2c18107098b" + integrity sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.2: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" @@ -977,6 +1837,14 @@ string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.2: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +stringify-entities@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.3.tgz#cfabd7039d22ad30f3cc435b0ca2c1574fc88ef8" + integrity sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g== + dependencies: + character-entities-html4 "^2.0.0" + character-entities-legacy "^3.0.0" + strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -984,6 +1852,11 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" +strip-bom-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" + integrity sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g== + strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" @@ -994,6 +1867,13 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= +style-to-object@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46" + integrity sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA== + dependencies: + inline-style-parser "0.1.1" + styled-components@^5.3.3: version "5.3.3" resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.3.tgz#312a3d9a549f4708f0fb0edc829eb34bde032743" @@ -1034,6 +1914,16 @@ to-fast-properties@^2.0.0: resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= +trim-lines@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338" + integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg== + +trough@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/trough/-/trough-2.1.0.tgz#0f7b511a4fde65a46f18477ab38849b22c554876" + integrity sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g== + type-fest@^0.20.2: version "0.20.2" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" @@ -1044,6 +1934,82 @@ typescript@^4.5.4: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.4.tgz#a17d3a0263bf5c8723b9c52f43c5084edf13c2e8" integrity sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg== +unified@^10.0.0: + version "10.1.2" + resolved "https://registry.yarnpkg.com/unified/-/unified-10.1.2.tgz#b1d64e55dafe1f0b98bb6c719881103ecf6c86df" + integrity sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q== + dependencies: + "@types/unist" "^2.0.0" + bail "^2.0.0" + extend "^3.0.0" + is-buffer "^2.0.0" + is-plain-obj "^4.0.0" + trough "^2.0.0" + vfile "^5.0.0" + +unist-builder@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-3.0.0.tgz#728baca4767c0e784e1e64bb44b5a5a753021a04" + integrity sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ== + dependencies: + "@types/unist" "^2.0.0" + +unist-util-generated@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-2.0.0.tgz#86fafb77eb6ce9bfa6b663c3f5ad4f8e56a60113" + integrity sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw== + +unist-util-is@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-5.1.1.tgz#e8aece0b102fa9bc097b0fef8f870c496d4a6236" + integrity sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ== + +unist-util-position-from-estree@^1.0.0, unist-util-position-from-estree@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unist-util-position-from-estree/-/unist-util-position-from-estree-1.1.1.tgz#96f4d543dfb0428edc01ebb928570b602d280c4c" + integrity sha512-xtoY50b5+7IH8tFbkw64gisG9tMSpxDjhX9TmaJJae/XuxQ9R/Kc8Nv1eOsf43Gt4KV/LkriMy9mptDr7XLcaw== + dependencies: + "@types/unist" "^2.0.0" + +unist-util-position@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-4.0.3.tgz#5290547b014f6222dff95c48d5c3c13a88fadd07" + integrity sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ== + dependencies: + "@types/unist" "^2.0.0" + +unist-util-remove-position@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-4.0.1.tgz#d5b46a7304ac114c8d91990ece085ca7c2c135c8" + integrity sha512-0yDkppiIhDlPrfHELgB+NLQD5mfjup3a8UYclHruTJWmY74je8g+CIFr79x5f6AkmzSwlvKLbs63hC0meOMowQ== + dependencies: + "@types/unist" "^2.0.0" + unist-util-visit "^4.0.0" + +unist-util-stringify-position@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-3.0.2.tgz#5c6aa07c90b1deffd9153be170dce628a869a447" + integrity sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg== + dependencies: + "@types/unist" "^2.0.0" + +unist-util-visit-parents@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-5.1.0.tgz#44bbc5d25f2411e7dfc5cecff12de43296aa8521" + integrity sha512-y+QVLcY5eR/YVpqDsLf/xh9R3Q2Y4HxkZTp7ViLDU6WtJCEcPmRzW1gpdWDCDIqIlhuPDXOgttqPlykrHYDekg== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^5.0.0" + +unist-util-visit@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-4.1.0.tgz#f41e407a9e94da31594e6b1c9811c51ab0b3d8f5" + integrity sha512-n7lyhFKJfVZ9MnKtqbsqkQEk5P1KShj0+//V7mAcoI6bpbUjh3C/OG8HVD+pBihfh6Ovl01m8dkcv9HNqYajmQ== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^5.0.0" + unist-util-visit-parents "^5.0.0" + update-check@1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/update-check/-/update-check-1.5.2.tgz#2fe09f725c543440b3d7dabe8971f2d5caaedc28" @@ -1059,11 +2025,56 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +uvu@^0.5.0: + version "0.5.6" + resolved "https://registry.yarnpkg.com/uvu/-/uvu-0.5.6.tgz#2754ca20bcb0bb59b64e9985e84d2e81058502df" + integrity sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA== + dependencies: + dequal "^2.0.0" + diff "^5.0.0" + kleur "^4.0.3" + sade "^1.7.3" + vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= +vfile-location@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-4.0.1.tgz#06f2b9244a3565bef91f099359486a08b10d3a95" + integrity sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw== + dependencies: + "@types/unist" "^2.0.0" + vfile "^5.0.0" + +vfile-matter@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/vfile-matter/-/vfile-matter-3.0.1.tgz#85e26088e43aa85c04d42ffa3693635fa2bc5624" + integrity sha512-CAAIDwnh6ZdtrqAuxdElUqQRQDQgbbIrYtDYI8gCjXS1qQ+1XdLoK8FIZWxJwn0/I+BkSSZpar3SOgjemQz4fg== + dependencies: + "@types/js-yaml" "^4.0.0" + is-buffer "^2.0.0" + js-yaml "^4.0.0" + +vfile-message@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-3.1.2.tgz#a2908f64d9e557315ec9d7ea3a910f658ac05f7d" + integrity sha512-QjSNP6Yxzyycd4SVOtmKKyTsSvClqBPJcd00Z0zuPj3hOIjg0rUPG6DbFGPvUKRgYyaIWLPKpuEclcuvb3H8qA== + dependencies: + "@types/unist" "^2.0.0" + unist-util-stringify-position "^3.0.0" + +vfile@^5.0.0, vfile@^5.3.0: + version "5.3.4" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-5.3.4.tgz#bbb8c96b956693bbf70b2c67fdb5781dff769b93" + integrity sha512-KI+7cnst03KbEyN1+JE504zF5bJBZa+J+CrevLeyIMq0aPU681I2rQ5p4PlnQ6exFtWiUrg26QUdFMnAKR6PIw== + dependencies: + "@types/unist" "^2.0.0" + is-buffer "^2.0.0" + unist-util-stringify-position "^3.0.0" + vfile-message "^3.0.0" + which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -1104,3 +2115,8 @@ xmlbuilder@~11.0.0: version "11.0.1" resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + +zwitch@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.2.tgz#91f8d0e901ffa3d66599756dde7f57b17c95dce1" + integrity sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA== From 2b9ac456077f08a326b249cb5d0617bf10c756f2 Mon Sep 17 00:00:00 2001 From: Chad $yntax Date: Wed, 13 Jul 2022 02:39:43 -0400 Subject: [PATCH 02/13] success for data --- package.json | 1 + .../AudioPlayer/AudioPlayer.styled.tsx | 2 +- src/components/Blog/Blog.styled.ts | 5 ++ src/components/Blog/Blog.tsx | 32 +++++++++ src/components/BlogPost/BlogPost.tsx | 21 ++++++ src/components/Meta/Meta.tsx | 5 +- src/gql-queries/blog-posts-query.ts | 17 ++++- src/lib/blog.ts | 70 ++++++++++++++----- src/pages/_app.tsx | 5 +- src/pages/blog/[slug].tsx | 49 +++++++++++++ src/pages/blog/index.tsx | 52 +++++--------- src/pages/episodes/[slug].tsx | 2 +- src/utils/constants.ts | 2 + yarn.lock | 21 +++++- 14 files changed, 224 insertions(+), 60 deletions(-) create mode 100644 src/components/Blog/Blog.styled.ts create mode 100644 src/components/Blog/Blog.tsx create mode 100644 src/components/BlogPost/BlogPost.tsx diff --git a/package.json b/package.json index 2baadf9..6964f65 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ }, "devDependencies": { "@types/node": "^17.0.35", + "@types/styled-components": "^5.1.25", "serve": "^13.0.2" } } diff --git a/src/components/AudioPlayer/AudioPlayer.styled.tsx b/src/components/AudioPlayer/AudioPlayer.styled.tsx index 17d33d9..42cfa22 100644 --- a/src/components/AudioPlayer/AudioPlayer.styled.tsx +++ b/src/components/AudioPlayer/AudioPlayer.styled.tsx @@ -1,6 +1,6 @@ import styled from 'styled-components'; -export const StyledAudioPlayer = styled.div` +export const StyledAudioPlayer = styled.div<{ $active: boolean }>` width: 100%; position: fixed; bottom: 0; diff --git a/src/components/Blog/Blog.styled.ts b/src/components/Blog/Blog.styled.ts new file mode 100644 index 0000000..cbd8d91 --- /dev/null +++ b/src/components/Blog/Blog.styled.ts @@ -0,0 +1,5 @@ +import styled from 'styled-components'; + +export const Blog = styled.div` + background-color: ${(p) => p.theme.background}; +`; diff --git a/src/components/Blog/Blog.tsx b/src/components/Blog/Blog.tsx new file mode 100644 index 0000000..7ad93dc --- /dev/null +++ b/src/components/Blog/Blog.tsx @@ -0,0 +1,32 @@ +import Link from 'next/link'; +import { Post } from '../../lib/blog'; + +interface BlogProps { + posts: Post[]; +} + +export const Blog = (props: BlogProps) => { + const { posts } = props; + return ( +
+

Chad $yntax's Blog of infinite Wonders!

+

Disclaimer: Wonders non-transferrable, see terms and conditions.

+
+ {posts.map((post) => { + const { title, author } = post.data; + return ( + + + {/* TODO update CMS to provide slug field */} +
+

{post.data.title}

+
{author}
+
+
+ + ); + })} +
+
+ ); +}; diff --git a/src/components/BlogPost/BlogPost.tsx b/src/components/BlogPost/BlogPost.tsx new file mode 100644 index 0000000..d0e802e --- /dev/null +++ b/src/components/BlogPost/BlogPost.tsx @@ -0,0 +1,21 @@ +import { MDXRemote } from 'next-mdx-remote'; +import { Post } from '../../lib/blog'; + +interface BlogPostProps { + post: Post; +} + +const components = { + Test: () => <>hello, +}; + +export const BlogPost = (props: BlogPostProps) => { + const { post } = props; + return ( +
+

{post.data.title}

+

{post.data.description}

+ +
+ ); +}; diff --git a/src/components/Meta/Meta.tsx b/src/components/Meta/Meta.tsx index d7e2dd3..73a7c3f 100644 --- a/src/components/Meta/Meta.tsx +++ b/src/components/Meta/Meta.tsx @@ -1,4 +1,5 @@ import Head from 'next/head'; +import { BUILD_TS } from '../../../app.config'; const rootUrl = 'https://ttpspodcast.com'; @@ -9,6 +10,7 @@ interface MetaProps { datePublished: string; dateModified: string; decentralized?: boolean; + author?: string; } export const Meta = (props: MetaProps) => { @@ -19,6 +21,7 @@ export const Meta = (props: MetaProps) => { datePublished, dateModified, decentralized, + author, } = props; const structuredData = { '@context': 'http://schema.org', @@ -37,7 +40,7 @@ export const Meta = (props: MetaProps) => { dateModified, author: { '@type': 'Person', - name: 'Chad $yntax', + name: author || 'Chad $yntax', }, // publisher: { // '@type': '...', diff --git a/src/gql-queries/blog-posts-query.ts b/src/gql-queries/blog-posts-query.ts index 7dbb927..3cada0c 100644 --- a/src/gql-queries/blog-posts-query.ts +++ b/src/gql-queries/blog-posts-query.ts @@ -1,11 +1,12 @@ import { BLOG_BRANCH } from '../../app.config'; export const BLOG_POSTS_QUERY = ` -query { +query BlogPosts($postsPath: String!) { repository(name: "ttps-cms", owner: "chad-syntax") { - object(expression: "${BLOG_BRANCH}:content/post/") { + object(expression: $postsPath) { ... on Tree { entries { + name object { ... on Blob { text @@ -17,3 +18,15 @@ query { } } `; + +export const BLOG_POST_QUERY = ` +query BlogPost($postPath: String!) { + repository(name: "ttps-cms", owner: "chad-syntax") { + object(expression: $postPath) { + ... on Blob { + text + } + } + } +} +`; diff --git a/src/lib/blog.ts b/src/lib/blog.ts index 6fc859c..ef3cfb2 100644 --- a/src/lib/blog.ts +++ b/src/lib/blog.ts @@ -1,8 +1,25 @@ import matter from 'gray-matter'; import yaml from 'js-yaml'; import { serialize } from 'next-mdx-remote/serialize'; -import { BLOG_POSTS_QUERY } from '../gql-queries/blog-posts-query'; -import { BLOG_GRAPHQL_ENDPOINT, BLOG_API_TOKEN } from '../../app.config'; +import { + BLOG_POSTS_QUERY, + BLOG_POST_QUERY, +} from '../gql-queries/blog-posts-query'; +import { + BLOG_GRAPHQL_ENDPOINT, + BLOG_API_TOKEN, + BLOG_BRANCH, +} from '../../app.config'; + +// folder in cms repo where we save all of our content +const CONTENT_ROOT = `${BLOG_BRANCH}:content`; + +const fetchOpts = { + method: 'POST', + headers: { + Authorization: `Bearer ${BLOG_API_TOKEN}`, + }, +}; // turns md file into json data object for further parsing const parseMdxData = (fileContents: string) => @@ -12,30 +29,51 @@ const parseMdxData = (fileContents: string) => }, }); +const processGiFileToPost = async (entry: any) => { + const fileContents = entry.object.text; + const mdxMetadata = parseMdxData(fileContents); + const mdxSource = await serialize(mdxMetadata.content); + const slug = entry.name.replace('.md', ''); + const post = { ...mdxMetadata, mdxSource, slug }; + return post; +}; + +export type Post = Awaited>; + export const fetchBlogPosts = async () => { const body = JSON.stringify({ query: BLOG_POSTS_QUERY, - variables: {}, + variables: { + postsPath: `${CONTENT_ROOT}/post/`, + }, }); const { data } = await fetch(BLOG_GRAPHQL_ENDPOINT, { - method: 'POST', - headers: { - Authorization: `Bearer ${BLOG_API_TOKEN}`, - }, + ...fetchOpts, body, }).then((r) => r.json()); - const posts = Promise.all( - data.repository.object.entries.map(async (entry) => { - const fileContents = entry.object.text; - const mdxMetadata = parseMdxData(fileContents); - - const mdxSource = await serialize(mdxMetadata.content); - - return { ...mdxMetadata, mdxSource }; - }) + const posts = await Promise.all( + data.repository.object.entries.map(processGiFileToPost) ); return posts; }; + +export const fetchBlogPost = async (slug: string) => { + const body = JSON.stringify({ + query: BLOG_POST_QUERY, + variables: { + postPath: `${CONTENT_ROOT}/post/${slug}.md`, + }, + }); + + const { data } = await fetch(BLOG_GRAPHQL_ENDPOINT, { + ...fetchOpts, + body, + }).then((r) => r.json()); + + const post = await processGiFileToPost({ ...data.repository, name: slug }); + + return post; +}; diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index d7e412f..449a522 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -2,10 +2,10 @@ import { useEffect, useState } from 'react'; import { createGlobalStyle, ThemeProvider } from 'styled-components'; import { AudioPlayer } from '../components/AudioPlayer/AudioPlayer'; import { AudioPlayerCtx } from '../components/AudioPlayer/AudioPlayerCtx'; -import { kSequence, kAudio, theme } from '../utils/constants'; +import { kSequence, kAudio, theme, Theme } from '../utils/constants'; import { setSrc, play } from '../utils/audio'; -const GlobalStyle = createGlobalStyle` +const GlobalStyle = createGlobalStyle<{ theme: Theme }>` html { font-family: ${(p) => p.theme.ffIbmPlex}; font-size: 62.5%; @@ -16,6 +16,7 @@ const GlobalStyle = createGlobalStyle` margin: 0; font-size: 1.6rem; font-family: ${(p) => p.theme.ffUbuntu}; + color: ${(p) => p.theme.offWhite}; } * { diff --git a/src/pages/blog/[slug].tsx b/src/pages/blog/[slug].tsx index e69de29..4de8cd5 100644 --- a/src/pages/blog/[slug].tsx +++ b/src/pages/blog/[slug].tsx @@ -0,0 +1,49 @@ +import { BUILD_TS } from '../../../app.config'; +import { fetchBlogPosts, fetchBlogPost, Post } from '../../lib/blog'; +import { Meta } from '../../components/Meta/Meta'; +import { Footer } from '../../components/Footer/Footer'; +import { BlogPost } from '../../components/BlogPost/BlogPost'; + +interface BlogPostPageProps { + post: Post; + dateModified: string; +} + +export async function getStaticPaths() { + const posts = await fetchBlogPosts(); + const paths = posts.map(({ slug }) => ({ params: { slug } })); + return { + paths, + fallback: false, + }; +} + +export async function getStaticProps({ params }: { params: { slug: string } }) { + const { slug } = params; + const post = await fetchBlogPost(slug); + const dateModified = BUILD_TS.toISOString(); + return { + props: { + post, + dateModified, + }, + }; +} + +export default function BlogPostPage(props: BlogPostPageProps) { + const { post, dateModified } = props; + const { title, description, date } = post.data; + return ( +
+ + +
+
+ ); +} diff --git a/src/pages/blog/index.tsx b/src/pages/blog/index.tsx index 62047d1..da8e295 100644 --- a/src/pages/blog/index.tsx +++ b/src/pages/blog/index.tsx @@ -1,17 +1,13 @@ -import { MDXRemote } from 'next-mdx-remote'; +import { Meta } from '../../components/Meta/Meta'; import { Footer } from '../../components/Footer/Footer'; -import { fetchBlogPosts } from '../../lib/blog'; - -const Test = () => ( -

- I AM TEST -

-); - -const MDXComponents = { Test }; +import { Blog } from '../../components/Blog/Blog'; +import { fetchBlogPosts, Post } from '../../lib/blog'; +import { BUILD_TS } from '../../../app.config'; interface BlogIndexPageProps { - posts: any[]; + posts: Post[]; + datePublished: string; + dateModified: string; } export async function getStaticProps() { @@ -20,42 +16,28 @@ export async function getStaticProps() { return { props: { posts, + datePublished: BUILD_TS.toISOString(), + dateModified: BUILD_TS.toISOString(), }, }; } +const title = "Chad $yntax's Blog of infinite Wonders"; +const description = + 'The blog posts of a sweaty software engineer. Disclaimer: Wonders not guaranteed nor guranteed to be infinite.'; + export default function BlogIndexPage(props: BlogIndexPageProps) { - const { posts } = props; + const { posts, datePublished, dateModified } = props; return (
- blog index -
- {posts.map((post) => ( -
- {post.data.title} - -
- ))} -
- {/* */} - {/* {!comingSoonEnabled &&
} */} - {/* - */} - {/* */} +
); diff --git a/src/pages/episodes/[slug].tsx b/src/pages/episodes/[slug].tsx index 3dccce9..30a513e 100644 --- a/src/pages/episodes/[slug].tsx +++ b/src/pages/episodes/[slug].tsx @@ -4,7 +4,7 @@ import { Footer } from '../../components/Footer/Footer'; import { Episode } from '../../components/Episode/Episode'; import { Meta } from '../../components/Meta/Meta'; import slugify from '../../utils/slugify'; -import { COMING_SOON_ENABLED, RSS_FEED_URL } from '../../app.config'; +import { COMING_SOON_ENABLED, RSS_FEED_URL } from '../../../app.config'; import { stripScriptTags } from '../../utils/strip-script-tags'; const parser = new Parser(); diff --git a/src/utils/constants.ts b/src/utils/constants.ts index 8200dbb..f84211e 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -11,5 +11,7 @@ export const theme = { ffPressStart: '"Press Start 2P", cursive', }; +export type Theme = typeof theme; + export const kSequence = [38, 38, 40, 40, 37, 39, 37, 39, 66, 65, 16, 13]; export const kAudio = '/SERIES_OF_TUBES.mp3'; diff --git a/yarn.lock b/yarn.lock index c197228..1524b35 100644 --- a/yarn.lock +++ b/yarn.lock @@ -282,6 +282,14 @@ dependencies: "@types/unist" "*" +"@types/hoist-non-react-statics@*": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f" + integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== + dependencies: + "@types/react" "*" + hoist-non-react-statics "^3.3.0" + "@types/js-yaml@^4.0.0": version "4.0.5" resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.5.tgz#738dd390a6ecc5442f35e7f03fa1431353f7e138" @@ -319,7 +327,7 @@ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== -"@types/react@>=16": +"@types/react@*", "@types/react@>=16": version "18.0.15" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.15.tgz#d355644c26832dc27f3e6cbf0c4f4603fc4ab7fe" integrity sha512-iz3BtLuIYH1uWdsv6wXYdhozhqj20oD4/Hk2DNXIn1kFsmp9x8d9QB6FnPhfkbhd2PgEONt9Q1x/ebkwjfFLow== @@ -342,6 +350,15 @@ resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== +"@types/styled-components@^5.1.25": + version "5.1.25" + resolved "https://registry.yarnpkg.com/@types/styled-components/-/styled-components-5.1.25.tgz#0177c4ab5fa7c6ed0565d36f597393dae3f380ad" + integrity sha512-fgwl+0Pa8pdkwXRoVPP9JbqF0Ivo9llnmsm+7TCI330kbPIFd9qv1Lrhr37shf4tnxCOSu+/IgqM7uJXLWZZNQ== + dependencies: + "@types/hoist-non-react-statics" "*" + "@types/react" "*" + csstype "^3.0.2" + "@types/unist@*", "@types/unist@^2.0.0": version "2.0.6" resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" @@ -857,7 +874,7 @@ hast-util-whitespace@^2.0.0: resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz#4fc1086467cc1ef5ba20673cb6b03cec3a970f1c" integrity sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg== -hoist-non-react-statics@^3.0.0: +hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.3.0: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== From ac8409c4fbedf44f80f4737b76f5ed4a7d999756 Mon Sep 17 00:00:00 2001 From: Chad $yntax Date: Thu, 14 Jul 2022 02:04:55 -0400 Subject: [PATCH 03/13] sort blog posts, start styling, fix ogImage, add blog fonts --- src/components/Blog/Blog.styled.ts | 23 +++++++++++++- src/components/Blog/Blog.tsx | 47 +++++++++++++++++------------ src/components/Meta/Meta.tsx | 26 +++++++++++++--- src/gql-queries/blog-posts-query.ts | 2 -- src/lib/blog.ts | 25 +++++++++++++-- src/pages/_app.tsx | 16 +++++++--- src/utils/constants.ts | 1 + 7 files changed, 106 insertions(+), 34 deletions(-) diff --git a/src/components/Blog/Blog.styled.ts b/src/components/Blog/Blog.styled.ts index cbd8d91..1cc8200 100644 --- a/src/components/Blog/Blog.styled.ts +++ b/src/components/Blog/Blog.styled.ts @@ -1,5 +1,26 @@ import styled from 'styled-components'; -export const Blog = styled.div` +export const StyledBlog = styled.section` background-color: ${(p) => p.theme.background}; + a { + color: white; + text-decoration: unset; + } +`; + +export const Inner = styled.div` + max-width: 700px; + margin: 0 auto; + padding: 1.6rem; ; +`; + +export const Article = styled.article` + h3, + h5 { + font-weight: 400; + margin: 0; + } + border: 1px solid white; + margin-bottom: 1.6rem; + padding: 0.8rem; `; diff --git a/src/components/Blog/Blog.tsx b/src/components/Blog/Blog.tsx index 7ad93dc..d7a7a42 100644 --- a/src/components/Blog/Blog.tsx +++ b/src/components/Blog/Blog.tsx @@ -1,5 +1,6 @@ import Link from 'next/link'; import { Post } from '../../lib/blog'; +import { StyledBlog, Inner, Article } from './Blog.styled'; interface BlogProps { posts: Post[]; @@ -8,25 +9,31 @@ interface BlogProps { export const Blog = (props: BlogProps) => { const { posts } = props; return ( -
-

Chad $yntax's Blog of infinite Wonders!

-

Disclaimer: Wonders non-transferrable, see terms and conditions.

-
- {posts.map((post) => { - const { title, author } = post.data; - return ( - - - {/* TODO update CMS to provide slug field */} -
-

{post.data.title}

-
{author}
-
-
- - ); - })} -
-
+ + +

Chad $yntax's Blog of infinite Wonders!

+

+ A Blog of posts. Posts about software engineering, web development, + and whatever else. +

+

Disclaimer: Wonders non-transferrable, see terms and conditions.

+
+ {posts.map((post) => { + const { title, author } = post.data; + return ( + + +
+

{post.data.title}

+
By {author}
+

{post.data.description}

+
+
+ + ); + })} +
+
+
); }; diff --git a/src/components/Meta/Meta.tsx b/src/components/Meta/Meta.tsx index 73a7c3f..024e8b9 100644 --- a/src/components/Meta/Meta.tsx +++ b/src/components/Meta/Meta.tsx @@ -1,5 +1,5 @@ import Head from 'next/head'; -import { BUILD_TS } from '../../../app.config'; +import { useRouter } from 'next/router'; const rootUrl = 'https://ttpspodcast.com'; @@ -11,9 +11,12 @@ interface MetaProps { dateModified: string; decentralized?: boolean; author?: string; + ogImage?: string; } export const Meta = (props: MetaProps) => { + const router = useRouter(); + const { title, description, @@ -22,7 +25,16 @@ export const Meta = (props: MetaProps) => { dateModified, decentralized, author, + ogImage: ogImageInput, } = props; + + const isBlog = router.route.includes('blog'); + + const defaultOgImage = `${rootUrl}/ttps_og.jpg`; + + const ogUrl = `${rootUrl}/${router.asPath}`; + const ogImage = ogImageInput || defaultOgImage; + const structuredData = { '@context': 'http://schema.org', '@type': type, @@ -32,7 +44,7 @@ export const Meta = (props: MetaProps) => { headline: title, image: { '@type': 'ImageObject', - url: `${rootUrl}/ttps_og.jpg`, + url: ogImage, height: 630, width: 1200, }, @@ -60,12 +72,12 @@ export const Meta = (props: MetaProps) => { {title} - + - - + + @@ -121,6 +133,10 @@ export const Meta = (props: MetaProps) => { diff --git a/src/gql-queries/blog-posts-query.ts b/src/gql-queries/blog-posts-query.ts index 3cada0c..2bf5031 100644 --- a/src/gql-queries/blog-posts-query.ts +++ b/src/gql-queries/blog-posts-query.ts @@ -1,5 +1,3 @@ -import { BLOG_BRANCH } from '../../app.config'; - export const BLOG_POSTS_QUERY = ` query BlogPosts($postsPath: String!) { repository(name: "ttps-cms", owner: "chad-syntax") { diff --git a/src/lib/blog.ts b/src/lib/blog.ts index ef3cfb2..465b4b1 100644 --- a/src/lib/blog.ts +++ b/src/lib/blog.ts @@ -48,15 +48,30 @@ export const fetchBlogPosts = async () => { }, }); - const { data } = await fetch(BLOG_GRAPHQL_ENDPOINT, { + const response = await fetch(BLOG_GRAPHQL_ENDPOINT, { ...fetchOpts, body, }).then((r) => r.json()); + const { data, message, documentation_url } = response; + + if (!data) { + throw new Error(`${message} ${documentation_url}. Check BLOG_ env vars.`); + } + const posts = await Promise.all( data.repository.object.entries.map(processGiFileToPost) ); + // files aren't sorted in the github repo, sort by pub date + posts.sort((a, b) => { + if (a.data.date === b.data.date) return 0; + const aDate = new Date(a.data.date); + const bDate = new Date(b.data.date); + + return aDate > bDate ? -1 : 1; + }); + return posts; }; @@ -68,11 +83,17 @@ export const fetchBlogPost = async (slug: string) => { }, }); - const { data } = await fetch(BLOG_GRAPHQL_ENDPOINT, { + const response = await fetch(BLOG_GRAPHQL_ENDPOINT, { ...fetchOpts, body, }).then((r) => r.json()); + const { data, message, documentation_url } = response; + + if (!data) { + throw new Error(`${message} ${documentation_url}. Check BLOG_ env vars.`); + } + const post = await processGiFileToPost({ ...data.repository, name: slug }); return post; diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index 449a522..3a0fdbe 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -1,13 +1,15 @@ import { useEffect, useState } from 'react'; +import { useRouter } from 'next/router'; import { createGlobalStyle, ThemeProvider } from 'styled-components'; import { AudioPlayer } from '../components/AudioPlayer/AudioPlayer'; import { AudioPlayerCtx } from '../components/AudioPlayer/AudioPlayerCtx'; import { kSequence, kAudio, theme, Theme } from '../utils/constants'; import { setSrc, play } from '../utils/audio'; -const GlobalStyle = createGlobalStyle<{ theme: Theme }>` +const GlobalStyle = createGlobalStyle<{ theme: Theme; isBlog: boolean }>` html { - font-family: ${(p) => p.theme.ffIbmPlex}; + font-family: ${(p) => + p.isBlog ? p.theme.ffJetbrainsMono : p.theme.ffUbuntu}; font-size: 62.5%; background-color: ${(p) => p.theme.background}; } @@ -15,10 +17,13 @@ const GlobalStyle = createGlobalStyle<{ theme: Theme }>` body { margin: 0; font-size: 1.6rem; - font-family: ${(p) => p.theme.ffUbuntu}; color: ${(p) => p.theme.offWhite}; } + footer { + font-family: ${(p) => p.theme.ffUbuntu}; + } + * { -webkit-font-smoothing: antialiased; -mac-osx-font-smoothing: greyscale; @@ -36,6 +41,9 @@ const GlobalStyle = createGlobalStyle<{ theme: Theme }>` export default function App({ Component, pageProps }) { const [audioTitle, setAudioTitle] = useState(null); + const { route } = useRouter(); + const isBlog = route.includes('blog'); + useEffect(() => { let _seq = kSequence; let _prog = 0; @@ -61,7 +69,7 @@ export default function App({ Component, pageProps }) { value={{ title: audioTitle, setTitle: setAudioTitle }} > - + diff --git a/src/utils/constants.ts b/src/utils/constants.ts index f84211e..0889bbc 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -9,6 +9,7 @@ export const theme = { ffIbmPlex: 'IBM Plex Sans Condensed, arial, sans-serif', ffUbuntu: 'Ubuntu, arial, sans-serif', ffPressStart: '"Press Start 2P", cursive', + ffJetbrainsMono: "'JetBrains Mono', monospace", }; export type Theme = typeof theme; From 53cf11694cafee2ab84e2e8d0c633ef6e7817575 Mon Sep 17 00:00:00 2001 From: Chad $yntax Date: Thu, 14 Jul 2022 03:04:26 -0400 Subject: [PATCH 04/13] consolidate fetching logic, add authors pages --- .../{blog-posts-query.ts => git-queries.ts} | 12 +- src/lib/blog.ts | 108 ++++++++++++------ src/pages/blog/authors/[slug].tsx | 31 +++++ src/pages/blog/authors/index.tsx | 28 +++++ 4 files changed, 141 insertions(+), 38 deletions(-) rename src/gql-queries/{blog-posts-query.ts => git-queries.ts} (60%) create mode 100644 src/pages/blog/authors/[slug].tsx create mode 100644 src/pages/blog/authors/index.tsx diff --git a/src/gql-queries/blog-posts-query.ts b/src/gql-queries/git-queries.ts similarity index 60% rename from src/gql-queries/blog-posts-query.ts rename to src/gql-queries/git-queries.ts index 2bf5031..4604407 100644 --- a/src/gql-queries/blog-posts-query.ts +++ b/src/gql-queries/git-queries.ts @@ -1,7 +1,7 @@ -export const BLOG_POSTS_QUERY = ` -query BlogPosts($postsPath: String!) { +export const GIT_FILES_QUERY = ` +query GitFiles($expression: String!) { repository(name: "ttps-cms", owner: "chad-syntax") { - object(expression: $postsPath) { + object(expression: $expression) { ... on Tree { entries { name @@ -17,10 +17,10 @@ query BlogPosts($postsPath: String!) { } `; -export const BLOG_POST_QUERY = ` -query BlogPost($postPath: String!) { +export const GIT_FILE_QUERY = ` +query GitFile($expression: String!) { repository(name: "ttps-cms", owner: "chad-syntax") { - object(expression: $postPath) { + object(expression: $expression) { ... on Blob { text } diff --git a/src/lib/blog.ts b/src/lib/blog.ts index 465b4b1..d337fa8 100644 --- a/src/lib/blog.ts +++ b/src/lib/blog.ts @@ -1,10 +1,7 @@ import matter from 'gray-matter'; import yaml from 'js-yaml'; import { serialize } from 'next-mdx-remote/serialize'; -import { - BLOG_POSTS_QUERY, - BLOG_POST_QUERY, -} from '../gql-queries/blog-posts-query'; +import { GIT_FILES_QUERY, GIT_FILE_QUERY } from '../gql-queries/git-queries'; import { BLOG_GRAPHQL_ENDPOINT, BLOG_API_TOKEN, @@ -21,6 +18,23 @@ const fetchOpts = { }, }; +const fetchFromGit = async (reqBody: any) => { + const body = JSON.stringify(reqBody); + + const response = await fetch(BLOG_GRAPHQL_ENDPOINT, { + ...fetchOpts, + body, + }).then((r) => r.json()); + + const { data, message, documentation_url } = response; + + if (!data) { + throw new Error(`${message} ${documentation_url}. Check BLOG_ env vars.`); + } + + return data; +}; + // turns md file into json data object for further parsing const parseMdxData = (fileContents: string) => matter(fileContents, { @@ -41,23 +55,14 @@ const processGiFileToPost = async (entry: any) => { export type Post = Awaited>; export const fetchBlogPosts = async () => { - const body = JSON.stringify({ - query: BLOG_POSTS_QUERY, + const queryObj = { + query: GIT_FILES_QUERY, variables: { - postsPath: `${CONTENT_ROOT}/post/`, + expression: `${CONTENT_ROOT}/post/`, }, - }); - - const response = await fetch(BLOG_GRAPHQL_ENDPOINT, { - ...fetchOpts, - body, - }).then((r) => r.json()); + }; - const { data, message, documentation_url } = response; - - if (!data) { - throw new Error(`${message} ${documentation_url}. Check BLOG_ env vars.`); - } + const data = await fetchFromGit(queryObj); const posts = await Promise.all( data.repository.object.entries.map(processGiFileToPost) @@ -76,25 +81,64 @@ export const fetchBlogPosts = async () => { }; export const fetchBlogPost = async (slug: string) => { - const body = JSON.stringify({ - query: BLOG_POST_QUERY, + const queryObj = { + query: GIT_FILE_QUERY, variables: { - postPath: `${CONTENT_ROOT}/post/${slug}.md`, + expression: `${CONTENT_ROOT}/post/${slug}.md`, }, - }); + }; - const response = await fetch(BLOG_GRAPHQL_ENDPOINT, { - ...fetchOpts, - body, - }).then((r) => r.json()); - - const { data, message, documentation_url } = response; - - if (!data) { - throw new Error(`${message} ${documentation_url}. Check BLOG_ env vars.`); - } + const data = await fetchFromGit(queryObj); const post = await processGiFileToPost({ ...data.repository, name: slug }); return post; }; + +export type Author = { + slug: string; + name: string; + title: string; + email: string; + shortbio: string; + authorimage: string; +}; + +const processGitFileToAuthor = (entry: any) => { + const slug = entry.name.replace('.json', ''); + const authorData = JSON.parse(entry.object.text); + return { + slug, + ...authorData, + }; +}; + +export const fetchAuthors = async () => { + const queryObj = { + query: GIT_FILES_QUERY, + variables: { + expression: `${CONTENT_ROOT}/authors/`, + }, + }; + + const data = await fetchFromGit(queryObj); + + const authors = data.repository.object.entries.map(processGitFileToAuthor); + + return authors; +}; + +export const fetchAuthor = async (slug) => { + const queryObj = { + query: GIT_FILE_QUERY, + variables: { + expression: `${CONTENT_ROOT}/authors/${slug}.json`, + }, + }; + + const data = await fetchFromGit(queryObj); + + const author = processGitFileToAuthor({ ...data.repository, name: slug }); + + return author; +}; diff --git a/src/pages/blog/authors/[slug].tsx b/src/pages/blog/authors/[slug].tsx new file mode 100644 index 0000000..e0cf5ef --- /dev/null +++ b/src/pages/blog/authors/[slug].tsx @@ -0,0 +1,31 @@ +import { BUILD_TS } from '../../../../app.config'; +import { fetchAuthor, fetchAuthors, Author } from '../../../lib/blog'; + +interface AuthorPageProps { + author: Author; +} + +export async function getStaticPaths() { + const posts = await fetchAuthors(); + const paths = posts.map(({ slug }) => ({ params: { slug } })); + return { + paths, + fallback: false, + }; +} + +export async function getStaticProps({ params }) { + const { slug } = params; + const author = await fetchAuthor(slug); + const dateModified = BUILD_TS.toISOString(); + return { + props: { + author, + dateModified, + }, + }; +} + +export default function AuthorPage(props: AuthorPageProps) { + return <>{props.author.name}; +} diff --git a/src/pages/blog/authors/index.tsx b/src/pages/blog/authors/index.tsx new file mode 100644 index 0000000..c9daa2a --- /dev/null +++ b/src/pages/blog/authors/index.tsx @@ -0,0 +1,28 @@ +import Link from 'next/link'; +import { fetchAuthors, Author } from '../../../lib/blog'; + +interface AuthorsIndexPageProps { + authors: Author[]; +} + +export async function getStaticProps() { + const authors = await fetchAuthors(); + + return { + props: { + authors, + }, + }; +} + +export default function AuthorsIndexPage(props: AuthorsIndexPageProps) { + return ( + <> + {props.authors.map((author) => ( +
+ {author.name} +
+ ))} + + ); +} From cbfc4d00fa2873863dc905cb19ff89c903bbc101 Mon Sep 17 00:00:00 2001 From: Chad $yntax Date: Thu, 14 Jul 2022 18:32:33 -0400 Subject: [PATCH 05/13] refactor a bit for simplicity --- src/components/Blog/Blog.tsx | 4 +- src/components/BlogPost/BlogPost.tsx | 2 +- src/lib/blog.ts | 118 ++++----------------------- src/lib/collections.ts | 11 +++ src/lib/git.ts | 82 +++++++++++++++++++ 5 files changed, 112 insertions(+), 105 deletions(-) create mode 100644 src/lib/collections.ts create mode 100644 src/lib/git.ts diff --git a/src/components/Blog/Blog.tsx b/src/components/Blog/Blog.tsx index d7a7a42..ce5fcae 100644 --- a/src/components/Blog/Blog.tsx +++ b/src/components/Blog/Blog.tsx @@ -16,7 +16,9 @@ export const Blog = (props: BlogProps) => { A Blog of posts. Posts about software engineering, web development, and whatever else. -

Disclaimer: Wonders non-transferrable, see terms and conditions.

+

+ Disclaimer: Wonders non-transferrable, see fine print for details. +

{posts.map((post) => { const { title, author } = post.data; diff --git a/src/components/BlogPost/BlogPost.tsx b/src/components/BlogPost/BlogPost.tsx index d0e802e..109e4c9 100644 --- a/src/components/BlogPost/BlogPost.tsx +++ b/src/components/BlogPost/BlogPost.tsx @@ -6,7 +6,7 @@ interface BlogPostProps { } const components = { - Test: () => <>hello, + Test: () => <>test Component, }; export const BlogPost = (props: BlogPostProps) => { diff --git a/src/lib/blog.ts b/src/lib/blog.ts index d337fa8..1405ce4 100644 --- a/src/lib/blog.ts +++ b/src/lib/blog.ts @@ -1,71 +1,13 @@ -import matter from 'gray-matter'; -import yaml from 'js-yaml'; -import { serialize } from 'next-mdx-remote/serialize'; -import { GIT_FILES_QUERY, GIT_FILE_QUERY } from '../gql-queries/git-queries'; -import { - BLOG_GRAPHQL_ENDPOINT, - BLOG_API_TOKEN, - BLOG_BRANCH, -} from '../../app.config'; - -// folder in cms repo where we save all of our content -const CONTENT_ROOT = `${BLOG_BRANCH}:content`; - -const fetchOpts = { - method: 'POST', - headers: { - Authorization: `Bearer ${BLOG_API_TOKEN}`, - }, -}; - -const fetchFromGit = async (reqBody: any) => { - const body = JSON.stringify(reqBody); - - const response = await fetch(BLOG_GRAPHQL_ENDPOINT, { - ...fetchOpts, - body, - }).then((r) => r.json()); - - const { data, message, documentation_url } = response; - - if (!data) { - throw new Error(`${message} ${documentation_url}. Check BLOG_ env vars.`); - } - - return data; -}; - -// turns md file into json data object for further parsing -const parseMdxData = (fileContents: string) => - matter(fileContents, { - engines: { - yaml: (s) => yaml.load(s, { schema: yaml.JSON_SCHEMA }) as object, - }, - }); +import { processJsonGitFile, processMdxGitFile, fetchFromGit } from './git'; +import { COLLECTIONS } from './collections'; -const processGiFileToPost = async (entry: any) => { - const fileContents = entry.object.text; - const mdxMetadata = parseMdxData(fileContents); - const mdxSource = await serialize(mdxMetadata.content); - const slug = entry.name.replace('.md', ''); - const post = { ...mdxMetadata, mdxSource, slug }; - return post; -}; - -export type Post = Awaited>; +export type Post = Awaited>; -export const fetchBlogPosts = async () => { - const queryObj = { - query: GIT_FILES_QUERY, - variables: { - expression: `${CONTENT_ROOT}/post/`, - }, - }; - - const data = await fetchFromGit(queryObj); +export const fetchBlogPosts = async (): Promise => { + const data = await fetchFromGit(COLLECTIONS.POST); const posts = await Promise.all( - data.repository.object.entries.map(processGiFileToPost) + data.repository.object.entries.map(processMdxGitFile) ); // files aren't sorted in the github repo, sort by pub date @@ -80,17 +22,10 @@ export const fetchBlogPosts = async () => { return posts; }; -export const fetchBlogPost = async (slug: string) => { - const queryObj = { - query: GIT_FILE_QUERY, - variables: { - expression: `${CONTENT_ROOT}/post/${slug}.md`, - }, - }; - - const data = await fetchFromGit(queryObj); +export const fetchBlogPost = async (slug: string): Promise => { + const data = await fetchFromGit(COLLECTIONS.POST, slug); - const post = await processGiFileToPost({ ...data.repository, name: slug }); + const post = await processMdxGitFile({ ...data.repository, name: slug }); return post; }; @@ -104,41 +39,18 @@ export type Author = { authorimage: string; }; -const processGitFileToAuthor = (entry: any) => { - const slug = entry.name.replace('.json', ''); - const authorData = JSON.parse(entry.object.text); - return { - slug, - ...authorData, - }; -}; - -export const fetchAuthors = async () => { - const queryObj = { - query: GIT_FILES_QUERY, - variables: { - expression: `${CONTENT_ROOT}/authors/`, - }, - }; +export const fetchAuthors = async (): Promise => { + const data = await fetchFromGit(COLLECTIONS.AUTHORS); - const data = await fetchFromGit(queryObj); - - const authors = data.repository.object.entries.map(processGitFileToAuthor); + const authors = data.repository.object.entries.map(processJsonGitFile); return authors; }; -export const fetchAuthor = async (slug) => { - const queryObj = { - query: GIT_FILE_QUERY, - variables: { - expression: `${CONTENT_ROOT}/authors/${slug}.json`, - }, - }; - - const data = await fetchFromGit(queryObj); +export const fetchAuthor = async (slug: string): Promise => { + const data = await fetchFromGit(COLLECTIONS.AUTHORS, slug); - const author = processGitFileToAuthor({ ...data.repository, name: slug }); + const author = processJsonGitFile({ ...data.repository, name: slug }); return author; }; diff --git a/src/lib/collections.ts b/src/lib/collections.ts new file mode 100644 index 0000000..eb3adf8 --- /dev/null +++ b/src/lib/collections.ts @@ -0,0 +1,11 @@ +export const COLLECTIONS = { + POST: 'POST', + AUTHORS: 'AUTHORS', +} as const; + +export const COLLECTIONS_DATA = { + [COLLECTIONS.POST]: { name: 'post', format: 'mdx' }, + [COLLECTIONS.AUTHORS]: { name: 'authors', format: 'json' }, +} as const; + +export type Collections = keyof typeof COLLECTIONS; diff --git a/src/lib/git.ts b/src/lib/git.ts new file mode 100644 index 0000000..56faec1 --- /dev/null +++ b/src/lib/git.ts @@ -0,0 +1,82 @@ +import { serialize } from 'next-mdx-remote/serialize'; +import matter from 'gray-matter'; +import yaml from 'js-yaml'; + +import { GIT_FILES_QUERY, GIT_FILE_QUERY } from '../gql-queries/git-queries'; +import { + BLOG_GRAPHQL_ENDPOINT, + BLOG_API_TOKEN, + BLOG_BRANCH, +} from '../../app.config'; +import { Collections, COLLECTIONS_DATA } from './collections'; + +// turns md file into json data object for further parsing +const parseMdxData = (fileContents: string) => + matter(fileContents, { + engines: { + yaml: (s) => yaml.load(s, { schema: yaml.JSON_SCHEMA }) as object, + }, + }); + +export const processJsonGitFile = (entry: any) => { + const slug = entry.name.replace('.json', ''); + const jsonFileContent = JSON.parse(entry.object.text); + return { + slug, + ...jsonFileContent, + }; +}; + +export const processMdxGitFile = async (entry: any) => { + const fileContents = entry.object.text; + const mdxMetadata = parseMdxData(fileContents); + const mdxSource = await serialize(mdxMetadata.content); + const slug = entry.name.replace('.mdx', ''); + const parsedFileData = { ...mdxMetadata, mdxSource, slug }; + return parsedFileData; +}; + +// folder in cms repo where we save all of our content +const CONTENT_ROOT = `${BLOG_BRANCH}:content`; + +const fetchOpts = { + method: 'POST', + headers: { + Authorization: `Bearer ${BLOG_API_TOKEN}`, + }, +}; + +export const fetchFromGit = async ( + collection: Collections, + slug?: string, + variables: object = {} +) => { + const isSingle = slug !== undefined; + const query = isSingle ? GIT_FILE_QUERY : GIT_FILES_QUERY; + const { name, format } = COLLECTIONS_DATA[collection]; + const fileName = isSingle ? `${slug}.${format}` : ''; + const expression = `${CONTENT_ROOT}/${name}/${fileName}`; + + const queryObj = { + query, + variables: { + expression, + ...variables, + }, + }; + + const body = JSON.stringify(queryObj); + + const response = await fetch(BLOG_GRAPHQL_ENDPOINT, { + ...fetchOpts, + body, + }).then((r) => r.json()); + + const { data, message, documentation_url } = response; + + if (!data) { + throw new Error(`${message} ${documentation_url}. Check BLOG_ env vars.`); + } + + return data; +}; From 04e45746c0d74afa79a2a1fbe79b3d33b946b7ee Mon Sep 17 00:00:00 2001 From: Chad $yntax Date: Fri, 15 Jul 2022 01:34:49 -0400 Subject: [PATCH 06/13] start of blog styling with images --- src/components/Blog/Blog.styled.ts | 56 ++++++++++++- src/components/Blog/Blog.tsx | 47 ++++++++--- .../hero-images/chad-syntax-blog-cave.png | Bin 0 -> 121751 bytes .../hero-images/chad-syntax-blog-cave.webp | Bin 0 -> 37074 bytes .../hero-images/chad-syntax-blog-cave@2x.png | Bin 0 -> 119671 bytes .../hero-images/chad-syntax-blog-cave@2x.webp | Bin 0 -> 50186 bytes src/components/BlogPost/BlogPost.tsx | 2 + .../BreadCrumbs/BreadCrumbs.styled.ts | 28 +++++++ src/components/BreadCrumbs/BreadCrumbs.tsx | 77 ++++++++++++++++++ 9 files changed, 197 insertions(+), 13 deletions(-) create mode 100644 src/components/Blog/hero-images/chad-syntax-blog-cave.png create mode 100644 src/components/Blog/hero-images/chad-syntax-blog-cave.webp create mode 100644 src/components/Blog/hero-images/chad-syntax-blog-cave@2x.png create mode 100644 src/components/Blog/hero-images/chad-syntax-blog-cave@2x.webp create mode 100644 src/components/BreadCrumbs/BreadCrumbs.styled.ts create mode 100644 src/components/BreadCrumbs/BreadCrumbs.tsx diff --git a/src/components/Blog/Blog.styled.ts b/src/components/Blog/Blog.styled.ts index 1cc8200..bec2f94 100644 --- a/src/components/Blog/Blog.styled.ts +++ b/src/components/Blog/Blog.styled.ts @@ -2,22 +2,74 @@ import styled from 'styled-components'; export const StyledBlog = styled.section` background-color: ${(p) => p.theme.background}; + font-family: ${(p) => p.theme.ffJetbrainsMono}; a { color: white; - text-decoration: unset; + } + + @media screen and (min-width: 500px) { + padding: 0 1.6rem; + } +`; + +export const Hero = styled.div` + h1, + h2, + h3, + h5 { + margin: 0; + } + + h1 { + text-indent: -999999px; + font-size: 0.2rem; + padding-bottom: 0.8rem; + img { + display: block; + width: 100%; + } + } + + h2 { + font-size: 1.6rem; + @media screen and (min-width: 500px) { + font-size: 2.4rem; + } + } + + h2, + h3 { + text-align: center; + font-weight: 400; + } + h3 { + font-size: 1.2rem; + padding: 1.6rem 0 3.2rem; } `; export const Inner = styled.div` max-width: 700px; margin: 0 auto; - padding: 1.6rem; ; + padding: 1.6rem 0; +`; + +export const ArticleLink = styled.a` + text-decoration: unset; `; export const Article = styled.article` h3, h5 { font-weight: 400; + } + h3 { + margin: 0; + font-size: 3.2rem; + font-style: italic; + text-transform: UPPERCASE; + } + h5 { margin: 0; } border: 1px solid white; diff --git a/src/components/Blog/Blog.tsx b/src/components/Blog/Blog.tsx index ce5fcae..f3be811 100644 --- a/src/components/Blog/Blog.tsx +++ b/src/components/Blog/Blog.tsx @@ -1,6 +1,12 @@ import Link from 'next/link'; import { Post } from '../../lib/blog'; -import { StyledBlog, Inner, Article } from './Blog.styled'; +import { StyledBlog, Inner, Article, ArticleLink } from './Blog.styled'; +import { Hero } from './Blog.styled'; +import caveImgPng from './hero-images/chad-syntax-blog-cave.png'; +import caveImgPng2x from './hero-images/chad-syntax-blog-cave@2x.png'; +import caveImgWebp from './hero-images/chad-syntax-blog-cave.webp'; +import caveImgWebp2x from './hero-images/chad-syntax-blog-cave@2x.png'; +import { BreadCrumbs } from '../BreadCrumbs/BreadCrumbs'; interface BlogProps { posts: Post[]; @@ -11,26 +17,45 @@ export const Blog = (props: BlogProps) => { return ( -

Chad $yntax's Blog of infinite Wonders!

-

- A Blog of posts. Posts about software engineering, web development, - and whatever else. -

-

- Disclaimer: Wonders non-transferrable, see fine print for details. -

+ + +

+ Chad $yntax's Blog of infinite Wonders! + + + + Chad $yntax's Blog of infinite Wonders Logo! + +

+

+ A Blog of posts. Posts about software engineering, web development, + and whatever else. +

+

+ *Disclaimer: Wonders non-transferrable, see fine print for details. +

+
{posts.map((post) => { const { title, author } = post.data; return ( - +

{post.data.title}

By {author}

{post.data.description}

-
+ ); })} diff --git a/src/components/Blog/hero-images/chad-syntax-blog-cave.png b/src/components/Blog/hero-images/chad-syntax-blog-cave.png new file mode 100644 index 0000000000000000000000000000000000000000..d53b704b80e10062b597789fb1b86b0f1c159994 GIT binary patch literal 121751 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�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 literal 0 HcmV?d00001 diff --git a/src/components/Blog/hero-images/chad-syntax-blog-cave.webp b/src/components/Blog/hero-images/chad-syntax-blog-cave.webp new file mode 100644 index 0000000000000000000000000000000000000000..f81ed24bb7ddb1896e2eff343b168106524e9e63 GIT binary patch literal 37074 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 literal 0 HcmV?d00001 diff --git a/src/components/Blog/hero-images/chad-syntax-blog-cave@2x.png b/src/components/Blog/hero-images/chad-syntax-blog-cave@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d69e0627fcbdd83c37f3205d94d119c330d881ba GIT binary patch literal 119671 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 f9ESsR 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%0Dr;G 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 literal 0 HcmV?d00001 diff --git a/src/components/BlogPost/BlogPost.tsx b/src/components/BlogPost/BlogPost.tsx index 109e4c9..5899ddc 100644 --- a/src/components/BlogPost/BlogPost.tsx +++ b/src/components/BlogPost/BlogPost.tsx @@ -1,4 +1,5 @@ import { MDXRemote } from 'next-mdx-remote'; +import { BreadCrumbs } from '../BreadCrumbs/BreadCrumbs'; import { Post } from '../../lib/blog'; interface BlogPostProps { @@ -13,6 +14,7 @@ export const BlogPost = (props: BlogPostProps) => { const { post } = props; return (
+

{post.data.title}

{post.data.description}

diff --git a/src/components/BreadCrumbs/BreadCrumbs.styled.ts b/src/components/BreadCrumbs/BreadCrumbs.styled.ts new file mode 100644 index 0000000..9233efa --- /dev/null +++ b/src/components/BreadCrumbs/BreadCrumbs.styled.ts @@ -0,0 +1,28 @@ +import styled from 'styled-components'; + +export const CopyTag = styled.div<{ active: boolean }>` + position: absolute; + width: 12rem; + right: -12.8rem; + top: 0; + font-size: 1.2rem; + line-height: 2.2rem; + margin-left: 0.8rem; + opacity: ${(p) => (p.active ? '1' : '0')}; + transition: opacity 0.3s ease; + color: white; +`; + +export const ExitLink = styled.a<{ isLast?: boolean }>` + text-decoration: underline; + position: relative; + &:hover ${CopyTag} { + opacity: 1; + } +`; + +export const BreadCrumbsNav = styled.nav` + span { + margin: 0 0.8rem; + } +`; diff --git a/src/components/BreadCrumbs/BreadCrumbs.tsx b/src/components/BreadCrumbs/BreadCrumbs.tsx new file mode 100644 index 0000000..2fc0f8d --- /dev/null +++ b/src/components/BreadCrumbs/BreadCrumbs.tsx @@ -0,0 +1,77 @@ +import Link from 'next/link'; +import { useState, useEffect, useRef } from 'react'; +import { useRouter } from 'next/router'; +import { ExitLink, BreadCrumbsNav, CopyTag } from './BreadCrumbs.styled'; + +type NodeJSTimeout = ReturnType; + +interface CopyState { + isCopied: boolean; + copyText: string; +} + +const defaultCopyState = { + isCopied: false, + copyText: '🔗 Click to Copy', +} as const; + +const activeCopyState = { + isCopied: true, + copyText: 'Copied!', +} as const; + +export const BreadCrumbs = () => { + const { asPath } = useRouter(); + const [copyState, setCopyState] = useState(defaultCopyState); + const { isCopied, copyText } = copyState; + const timeoutRef = useRef(null); + + useEffect(() => { + if (isCopied) { + clearTimeout(timeoutRef.current); + timeoutRef.current = setTimeout(() => { + setCopyState(defaultCopyState); + }, 3000); + } + }, [isCopied]); + + const otherLinks = asPath.split('/').filter(Boolean); + return ( + + + < Exit the cave + + {otherLinks.map((otherLink, index) => { + const previous = otherLinks[index - 1]; + const href = `/${previous ? `${previous}/` : ''}${otherLink}`; + const isLast = index === otherLinks.length - 1; + + const handleLastClick = async (e) => { + e.preventDefault(); + try { + await navigator.clipboard.writeText(location.href); + setCopyState(activeCopyState); + } catch (e) { + setCopyState(defaultCopyState); + alert('Failed to copy to clipboard :('); + } + }; + + return ( + <> + {'/'} + + {otherLink} + {isLast && ( + {copyText} + )} + + + ); + })} + + ); +}; From 783dd133b37a4951dca39af942b0360efb503a2e Mon Sep 17 00:00:00 2001 From: Chad $yntax Date: Sat, 16 Jul 2022 01:28:44 -0400 Subject: [PATCH 07/13] style blog post page, adjust author logic, fix breadcrumbs --- src/components/Blog/Blog.tsx | 24 ++++++++-- src/components/BlogPost/BlogPost.styled.ts | 41 +++++++++++++++++ src/components/BlogPost/BlogPost.tsx | 44 ++++++++++++++----- .../BreadCrumbs/BreadCrumbs.styled.ts | 5 +++ src/components/BreadCrumbs/BreadCrumbs.tsx | 10 +++-- src/components/Mdx/Mdx.tsx | 22 ++++++++++ src/lib/blog.ts | 3 ++ src/pages/blog/[slug].tsx | 15 +++++-- src/pages/blog/index.tsx | 13 ++++-- 9 files changed, 152 insertions(+), 25 deletions(-) create mode 100644 src/components/BlogPost/BlogPost.styled.ts create mode 100644 src/components/Mdx/Mdx.tsx diff --git a/src/components/Blog/Blog.tsx b/src/components/Blog/Blog.tsx index f3be811..481075d 100644 --- a/src/components/Blog/Blog.tsx +++ b/src/components/Blog/Blog.tsx @@ -1,5 +1,5 @@ import Link from 'next/link'; -import { Post } from '../../lib/blog'; +import { Post, Author } from '../../lib/blog'; import { StyledBlog, Inner, Article, ArticleLink } from './Blog.styled'; import { Hero } from './Blog.styled'; import caveImgPng from './hero-images/chad-syntax-blog-cave.png'; @@ -7,13 +7,24 @@ import caveImgPng2x from './hero-images/chad-syntax-blog-cave@2x.png'; import caveImgWebp from './hero-images/chad-syntax-blog-cave.webp'; import caveImgWebp2x from './hero-images/chad-syntax-blog-cave@2x.png'; import { BreadCrumbs } from '../BreadCrumbs/BreadCrumbs'; +import { useMemo } from 'react'; interface BlogProps { posts: Post[]; + authors: Author[]; } export const Blog = (props: BlogProps) => { - const { posts } = props; + const { posts, authors } = props; + + const authorsMap = useMemo(() => { + const map = new Map(); + for (const author of authors) { + map.set(author.slug, author); + } + return map; + }, [authors]); + return ( @@ -44,15 +55,22 @@ export const Blog = (props: BlogProps) => { *Disclaimer: Wonders non-transferrable, see fine print for details. + {posts.length === 0 &&

The cave is... empty? Wtf.

}
{posts.map((post) => { const { title, author } = post.data; + const targetAuthor = authorsMap.get(author); return ( diff --git a/src/components/BlogPost/BlogPost.styled.ts b/src/components/BlogPost/BlogPost.styled.ts new file mode 100644 index 0000000..50f9eff --- /dev/null +++ b/src/components/BlogPost/BlogPost.styled.ts @@ -0,0 +1,41 @@ +import styled from 'styled-components'; + +export const Inner = styled.div` + max-width: 700px; + margin: 0 auto; + padding: 1.6rem 0; +`; + +export const BlogPostTitle = styled.h1` + font-size: 4.8rem; + font-style: italic; + text-transform: UPPERCASE; + color: white; + margin-bottom: 1.2rem; +`; + +export const BlogPostSubTitle = styled.h2` + margin-top: 0; + font-weight: 400; +`; + +export const BlogPostByline = styled.p` + margin: 0; + padding-bottom: 1.6rem; + border-bottom: 1px solid ${(p) => p.theme.offWhite}; + font-size: 1.2rem; + a { + color: white; + } +`; + +export const BlogPostBody = styled.div` + h1, + h2, + h3, + h4, + h5, + h6 { + font-weight: 400; + } +`; diff --git a/src/components/BlogPost/BlogPost.tsx b/src/components/BlogPost/BlogPost.tsx index 5899ddc..1276bfd 100644 --- a/src/components/BlogPost/BlogPost.tsx +++ b/src/components/BlogPost/BlogPost.tsx @@ -1,23 +1,45 @@ -import { MDXRemote } from 'next-mdx-remote'; +import Link from 'next/link'; import { BreadCrumbs } from '../BreadCrumbs/BreadCrumbs'; -import { Post } from '../../lib/blog'; +import { + Inner, + BlogPostTitle, + BlogPostSubTitle, + BlogPostByline, + BlogPostBody, +} from './BlogPost.styled'; +import { Post, Author } from '../../lib/blog'; +import { Mdx } from '../Mdx/Mdx'; interface BlogPostProps { post: Post; + author: Author; } -const components = { - Test: () => <>test Component, -}; - export const BlogPost = (props: BlogPostProps) => { - const { post } = props; + const { post, author } = props; + + const { + data: { date, title, description }, + } = post; + + const dateObj = new Date(date); + const pubDate = dateObj.toLocaleDateString(); + const pubTime = dateObj.toLocaleTimeString(); + return (
- -

{post.data.title}

-

{post.data.description}

- + + + {title} + {description} + + Published {pubDate} {`@ ${pubTime}`} by  + {author.name} + + + + +
); }; diff --git a/src/components/BreadCrumbs/BreadCrumbs.styled.ts b/src/components/BreadCrumbs/BreadCrumbs.styled.ts index 9233efa..aee377b 100644 --- a/src/components/BreadCrumbs/BreadCrumbs.styled.ts +++ b/src/components/BreadCrumbs/BreadCrumbs.styled.ts @@ -16,13 +16,18 @@ export const CopyTag = styled.div<{ active: boolean }>` export const ExitLink = styled.a<{ isLast?: boolean }>` text-decoration: underline; position: relative; + color: white; &:hover ${CopyTag} { opacity: 1; } `; export const BreadCrumbsNav = styled.nav` + line-height: 2.8rem; span { margin: 0 0.8rem; } + .relative { + position: relative; + } `; diff --git a/src/components/BreadCrumbs/BreadCrumbs.tsx b/src/components/BreadCrumbs/BreadCrumbs.tsx index 2fc0f8d..a8c07af 100644 --- a/src/components/BreadCrumbs/BreadCrumbs.tsx +++ b/src/components/BreadCrumbs/BreadCrumbs.tsx @@ -1,5 +1,5 @@ import Link from 'next/link'; -import { useState, useEffect, useRef } from 'react'; +import { useState, useEffect, useRef, Fragment } from 'react'; import { useRouter } from 'next/router'; import { ExitLink, BreadCrumbsNav, CopyTag } from './BreadCrumbs.styled'; @@ -58,7 +58,7 @@ export const BreadCrumbs = () => { }; return ( - <> + {'/'} { > {otherLink} {isLast && ( - {copyText} + + {copyText} + )} - + ); })} diff --git a/src/components/Mdx/Mdx.tsx b/src/components/Mdx/Mdx.tsx new file mode 100644 index 0000000..b84b51d --- /dev/null +++ b/src/components/Mdx/Mdx.tsx @@ -0,0 +1,22 @@ +import { MDXRemote } from 'next-mdx-remote'; +import { ReactNode } from 'react'; +import { MdxSource } from '../../lib/blog'; + +interface MdxProps extends MdxSource { + components?: { + [key: string]: ReactNode; + }; +} + +const commonMdxComponents = { + Test: () => <>test Component, +}; + +export const Mdx = (props: MdxProps) => { + const { mdxSource, components: componentsInput } = props; + const components = { + ...commonMdxComponents, + ...(componentsInput ?? {}), + }; + return ; +}; diff --git a/src/lib/blog.ts b/src/lib/blog.ts index 1405ce4..a297656 100644 --- a/src/lib/blog.ts +++ b/src/lib/blog.ts @@ -2,10 +2,13 @@ import { processJsonGitFile, processMdxGitFile, fetchFromGit } from './git'; import { COLLECTIONS } from './collections'; export type Post = Awaited>; +export type MdxSource = Pick; export const fetchBlogPosts = async (): Promise => { const data = await fetchFromGit(COLLECTIONS.POST); + if (!data.repository.object) return []; + const posts = await Promise.all( data.repository.object.entries.map(processMdxGitFile) ); diff --git a/src/pages/blog/[slug].tsx b/src/pages/blog/[slug].tsx index 4de8cd5..ec25f32 100644 --- a/src/pages/blog/[slug].tsx +++ b/src/pages/blog/[slug].tsx @@ -1,11 +1,18 @@ import { BUILD_TS } from '../../../app.config'; -import { fetchBlogPosts, fetchBlogPost, Post } from '../../lib/blog'; +import { + fetchBlogPosts, + fetchBlogPost, + Post, + fetchAuthor, + Author, +} from '../../lib/blog'; import { Meta } from '../../components/Meta/Meta'; import { Footer } from '../../components/Footer/Footer'; import { BlogPost } from '../../components/BlogPost/BlogPost'; interface BlogPostPageProps { post: Post; + author: Author; dateModified: string; } @@ -21,17 +28,19 @@ export async function getStaticPaths() { export async function getStaticProps({ params }: { params: { slug: string } }) { const { slug } = params; const post = await fetchBlogPost(slug); + const author = await fetchAuthor(post.data.author); const dateModified = BUILD_TS.toISOString(); return { props: { post, + author, dateModified, }, }; } export default function BlogPostPage(props: BlogPostPageProps) { - const { post, dateModified } = props; + const { post, author, dateModified } = props; const { title, description, date } = post.data; return (
@@ -42,7 +51,7 @@ export default function BlogPostPage(props: BlogPostPageProps) { datePublished={date} dateModified={dateModified} /> - +
); diff --git a/src/pages/blog/index.tsx b/src/pages/blog/index.tsx index da8e295..a253497 100644 --- a/src/pages/blog/index.tsx +++ b/src/pages/blog/index.tsx @@ -1,21 +1,26 @@ import { Meta } from '../../components/Meta/Meta'; import { Footer } from '../../components/Footer/Footer'; import { Blog } from '../../components/Blog/Blog'; -import { fetchBlogPosts, Post } from '../../lib/blog'; +import { fetchBlogPosts, Post, fetchAuthors, Author } from '../../lib/blog'; import { BUILD_TS } from '../../../app.config'; interface BlogIndexPageProps { posts: Post[]; + authors: Author[]; datePublished: string; dateModified: string; } export async function getStaticProps() { - const posts = await fetchBlogPosts(); + const [posts, authors] = await Promise.all([ + fetchBlogPosts(), + fetchAuthors(), + ]); return { props: { posts, + authors, datePublished: BUILD_TS.toISOString(), dateModified: BUILD_TS.toISOString(), }, @@ -27,7 +32,7 @@ const description = 'The blog posts of a sweaty software engineer. Disclaimer: Wonders not guaranteed nor guranteed to be infinite.'; export default function BlogIndexPage(props: BlogIndexPageProps) { - const { posts, datePublished, dateModified } = props; + const { posts, authors, datePublished, dateModified } = props; return (
- +
); From 6925659f94231117a18620fc064feab429ae1704 Mon Sep 17 00:00:00 2001 From: Chad $yntax Date: Sat, 16 Jul 2022 15:09:45 -0400 Subject: [PATCH 08/13] add blog footer, adjust styles for copy tag --- src/components/Blog/Blog.styled.ts | 7 +-- .../BlogFooter/BlogFooter.styled.ts | 16 +++++ src/components/BlogFooter/BlogFooter.tsx | 23 ++++++++ src/components/BlogPost/BlogPost.styled.ts | 14 +++-- src/components/BlogPost/BlogPost.tsx | 5 +- .../BreadCrumbs/BreadCrumbs.styled.ts | 21 +------ src/components/BreadCrumbs/BreadCrumbs.tsx | 59 ++----------------- src/components/CopyTag/CopyTag.styled.ts | 8 +++ src/components/CopyTag/CopyTag.tsx | 47 +++++++++++++++ src/components/Episodes/Episodes.styled.ts | 6 -- src/components/Footer/Footer.styled.ts | 3 - src/pages/_app.tsx | 7 +++ src/pages/blog/[slug].tsx | 4 +- src/pages/blog/index.tsx | 4 +- 14 files changed, 127 insertions(+), 97 deletions(-) create mode 100644 src/components/BlogFooter/BlogFooter.styled.ts create mode 100644 src/components/BlogFooter/BlogFooter.tsx create mode 100644 src/components/CopyTag/CopyTag.styled.ts create mode 100644 src/components/CopyTag/CopyTag.tsx diff --git a/src/components/Blog/Blog.styled.ts b/src/components/Blog/Blog.styled.ts index bec2f94..b2b9a3f 100644 --- a/src/components/Blog/Blog.styled.ts +++ b/src/components/Blog/Blog.styled.ts @@ -3,12 +3,9 @@ import styled from 'styled-components'; export const StyledBlog = styled.section` background-color: ${(p) => p.theme.background}; font-family: ${(p) => p.theme.ffJetbrainsMono}; - a { - color: white; - } - + padding: 0 1.6rem; @media screen and (min-width: 500px) { - padding: 0 1.6rem; + padding: 0 2.4rem; } `; diff --git a/src/components/BlogFooter/BlogFooter.styled.ts b/src/components/BlogFooter/BlogFooter.styled.ts new file mode 100644 index 0000000..73aa56f --- /dev/null +++ b/src/components/BlogFooter/BlogFooter.styled.ts @@ -0,0 +1,16 @@ +import styled from 'styled-components'; + +export const StyledBlogFooter = styled.footer` + font-family: ${(p) => p.theme.ffJetbrainsMono}; + max-width: 700px; + margin: auto; + text-align: center; + padding: 0 1.6rem 3.2rem; + @media screen and (min-width: 700px) { + padding: 0 0 3.2rem; + } +`; + +export const BlogLegalise = styled.p` + font-size: 1rem; +`; diff --git a/src/components/BlogFooter/BlogFooter.tsx b/src/components/BlogFooter/BlogFooter.tsx new file mode 100644 index 0000000..b9cd846 --- /dev/null +++ b/src/components/BlogFooter/BlogFooter.tsx @@ -0,0 +1,23 @@ +import Link from 'next/link'; +import { StyledBlogFooter } from './BlogFooter.styled'; + +export const BlogFooter = () => ( + + + All Blog Posts + + {' | '} + + Authors + + {' | '} + + Podcast + +
+
+ + Send feedback/questions to query@ttpspodcast.com + +
+); diff --git a/src/components/BlogPost/BlogPost.styled.ts b/src/components/BlogPost/BlogPost.styled.ts index 50f9eff..721afb6 100644 --- a/src/components/BlogPost/BlogPost.styled.ts +++ b/src/components/BlogPost/BlogPost.styled.ts @@ -3,7 +3,11 @@ import styled from 'styled-components'; export const Inner = styled.div` max-width: 700px; margin: 0 auto; - padding: 1.6rem 0; + padding: 1.6rem 0 0; +`; + +export const BlogPostSection = styled.section` + margin: 0 1.6rem; `; export const BlogPostTitle = styled.h1` @@ -11,7 +15,7 @@ export const BlogPostTitle = styled.h1` font-style: italic; text-transform: UPPERCASE; color: white; - margin-bottom: 1.2rem; + margin: 0 0 1.2rem; `; export const BlogPostSubTitle = styled.h2` @@ -24,9 +28,6 @@ export const BlogPostByline = styled.p` padding-bottom: 1.6rem; border-bottom: 1px solid ${(p) => p.theme.offWhite}; font-size: 1.2rem; - a { - color: white; - } `; export const BlogPostBody = styled.div` @@ -38,4 +39,7 @@ export const BlogPostBody = styled.div` h6 { font-weight: 400; } + p { + text-align: justify; + } `; diff --git a/src/components/BlogPost/BlogPost.tsx b/src/components/BlogPost/BlogPost.tsx index 1276bfd..1e3a73c 100644 --- a/src/components/BlogPost/BlogPost.tsx +++ b/src/components/BlogPost/BlogPost.tsx @@ -2,6 +2,7 @@ import Link from 'next/link'; import { BreadCrumbs } from '../BreadCrumbs/BreadCrumbs'; import { Inner, + BlogPostSection, BlogPostTitle, BlogPostSubTitle, BlogPostByline, @@ -27,7 +28,7 @@ export const BlogPost = (props: BlogPostProps) => { const pubTime = dateObj.toLocaleTimeString(); return ( -
+ {title} @@ -40,6 +41,6 @@ export const BlogPost = (props: BlogPostProps) => { -
+ ); }; diff --git a/src/components/BreadCrumbs/BreadCrumbs.styled.ts b/src/components/BreadCrumbs/BreadCrumbs.styled.ts index aee377b..d4d995b 100644 --- a/src/components/BreadCrumbs/BreadCrumbs.styled.ts +++ b/src/components/BreadCrumbs/BreadCrumbs.styled.ts @@ -1,25 +1,9 @@ import styled from 'styled-components'; -export const CopyTag = styled.div<{ active: boolean }>` - position: absolute; - width: 12rem; - right: -12.8rem; - top: 0; - font-size: 1.2rem; - line-height: 2.2rem; - margin-left: 0.8rem; - opacity: ${(p) => (p.active ? '1' : '0')}; - transition: opacity 0.3s ease; - color: white; -`; - export const ExitLink = styled.a<{ isLast?: boolean }>` text-decoration: underline; position: relative; color: white; - &:hover ${CopyTag} { - opacity: 1; - } `; export const BreadCrumbsNav = styled.nav` @@ -27,7 +11,6 @@ export const BreadCrumbsNav = styled.nav` span { margin: 0 0.8rem; } - .relative { - position: relative; - } + display: flex; + flex-wrap: wrap; `; diff --git a/src/components/BreadCrumbs/BreadCrumbs.tsx b/src/components/BreadCrumbs/BreadCrumbs.tsx index a8c07af..3f2c551 100644 --- a/src/components/BreadCrumbs/BreadCrumbs.tsx +++ b/src/components/BreadCrumbs/BreadCrumbs.tsx @@ -1,41 +1,14 @@ import Link from 'next/link'; -import { useState, useEffect, useRef, Fragment } from 'react'; +import { Fragment } from 'react'; import { useRouter } from 'next/router'; -import { ExitLink, BreadCrumbsNav, CopyTag } from './BreadCrumbs.styled'; - -type NodeJSTimeout = ReturnType; - -interface CopyState { - isCopied: boolean; - copyText: string; -} - -const defaultCopyState = { - isCopied: false, - copyText: '🔗 Click to Copy', -} as const; - -const activeCopyState = { - isCopied: true, - copyText: 'Copied!', -} as const; +import { ExitLink, BreadCrumbsNav } from './BreadCrumbs.styled'; +import { CopyTag } from '../CopyTag/CopyTag'; export const BreadCrumbs = () => { const { asPath } = useRouter(); - const [copyState, setCopyState] = useState(defaultCopyState); - const { isCopied, copyText } = copyState; - const timeoutRef = useRef(null); - - useEffect(() => { - if (isCopied) { - clearTimeout(timeoutRef.current); - timeoutRef.current = setTimeout(() => { - setCopyState(defaultCopyState); - }, 3000); - } - }, [isCopied]); const otherLinks = asPath.split('/').filter(Boolean); + return ( @@ -46,31 +19,11 @@ export const BreadCrumbs = () => { const href = `/${previous ? `${previous}/` : ''}${otherLink}`; const isLast = index === otherLinks.length - 1; - const handleLastClick = async (e) => { - e.preventDefault(); - try { - await navigator.clipboard.writeText(location.href); - setCopyState(activeCopyState); - } catch (e) { - setCopyState(defaultCopyState); - alert('Failed to copy to clipboard :('); - } - }; - return ( {'/'} - - {otherLink} - {isLast && ( - - {copyText} - - )} - + {otherLink} + {isLast && } ); })} diff --git a/src/components/CopyTag/CopyTag.styled.ts b/src/components/CopyTag/CopyTag.styled.ts new file mode 100644 index 0000000..795d8ad --- /dev/null +++ b/src/components/CopyTag/CopyTag.styled.ts @@ -0,0 +1,8 @@ +import styled from 'styled-components'; + +export const StyledCopyTag = styled.span` + font-size: 1.2rem; + line-height: 2.8rem; + margin-left: 0.8rem; + text-decoration: none; +`; diff --git a/src/components/CopyTag/CopyTag.tsx b/src/components/CopyTag/CopyTag.tsx new file mode 100644 index 0000000..6bbfe4a --- /dev/null +++ b/src/components/CopyTag/CopyTag.tsx @@ -0,0 +1,47 @@ +import { useRef, useState, useEffect } from 'react'; +import { StyledCopyTag } from './CopyTag.styled'; + +type NodeJSTimeout = ReturnType; + +interface CopyState { + isCopied: boolean; + copyText: string; +} + +const defaultCopyState = { + isCopied: false, + copyText: '🔗 Copy', +} as const; + +const activeCopyState = { + isCopied: true, + copyText: 'Copied!', +} as const; + +export const CopyTag = () => { + const [copyState, setCopyState] = useState(defaultCopyState); + const { isCopied, copyText } = copyState; + const timeoutRef = useRef(null); + + useEffect(() => { + if (isCopied) { + clearTimeout(timeoutRef.current); + timeoutRef.current = setTimeout(() => { + setCopyState(defaultCopyState); + }, 3000); + } + }, [isCopied]); + + const onClick = async (e) => { + e.preventDefault(); + try { + await navigator.clipboard.writeText(location.href); + setCopyState(activeCopyState); + } catch (e) { + setCopyState(defaultCopyState); + alert('Failed to copy to clipboard :('); + } + }; + + return {copyText}; +}; diff --git a/src/components/Episodes/Episodes.styled.ts b/src/components/Episodes/Episodes.styled.ts index c2de586..47ef861 100644 --- a/src/components/Episodes/Episodes.styled.ts +++ b/src/components/Episodes/Episodes.styled.ts @@ -44,12 +44,6 @@ export const Episode = styled.div` font-family: ${(p) => p.theme.ffIbmPlex}; font-size: 2.6rem; margin-bottom: 1.6rem; - a { - color: white; - &:visited { - color: #b0b0b0; - } - } @media screen and (max-width: 768px) { font-size: 2rem; diff --git a/src/components/Footer/Footer.styled.ts b/src/components/Footer/Footer.styled.ts index 464a55e..3a67cce 100644 --- a/src/components/Footer/Footer.styled.ts +++ b/src/components/Footer/Footer.styled.ts @@ -5,7 +5,4 @@ export const StyledFooter = styled.footer` text-align: center; color: #b0b0b0; padding: 4rem 0 12rem; - a { - color: white; - } `; diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index 3a0fdbe..d9ede8e 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -30,6 +30,13 @@ const GlobalStyle = createGlobalStyle<{ theme: Theme; isBlog: boolean }>` box-sizing: border-box; } + a { + color: white; + &:visited { + color: #b0b0b0; + } + } + main { @media screen and (max-width: 500px) { padding: 0 0.8rem; diff --git a/src/pages/blog/[slug].tsx b/src/pages/blog/[slug].tsx index ec25f32..2465f40 100644 --- a/src/pages/blog/[slug].tsx +++ b/src/pages/blog/[slug].tsx @@ -7,8 +7,8 @@ import { Author, } from '../../lib/blog'; import { Meta } from '../../components/Meta/Meta'; -import { Footer } from '../../components/Footer/Footer'; import { BlogPost } from '../../components/BlogPost/BlogPost'; +import { BlogFooter } from '../../components/BlogFooter/BlogFooter'; interface BlogPostPageProps { post: Post; @@ -52,7 +52,7 @@ export default function BlogPostPage(props: BlogPostPageProps) { dateModified={dateModified} /> -
+ ); } diff --git a/src/pages/blog/index.tsx b/src/pages/blog/index.tsx index a253497..aec5923 100644 --- a/src/pages/blog/index.tsx +++ b/src/pages/blog/index.tsx @@ -1,5 +1,5 @@ import { Meta } from '../../components/Meta/Meta'; -import { Footer } from '../../components/Footer/Footer'; +import { BlogFooter } from '../../components/BlogFooter/BlogFooter'; import { Blog } from '../../components/Blog/Blog'; import { fetchBlogPosts, Post, fetchAuthors, Author } from '../../lib/blog'; import { BUILD_TS } from '../../../app.config'; @@ -43,7 +43,7 @@ export default function BlogIndexPage(props: BlogIndexPageProps) { dateModified={dateModified} /> -
+ ); } From 00349f7577955f672310c23253ddb10c0c396c98 Mon Sep 17 00:00:00 2001 From: Chad $yntax Date: Sat, 16 Jul 2022 15:28:34 -0400 Subject: [PATCH 09/13] add copy tags to blog headers --- src/components/CopyTag/CopyTag.tsx | 9 +++++++-- src/components/Mdx/Mdx.styled.ts | 3 +++ src/components/Mdx/Mdx.tsx | 27 ++++++++++++++++++++++++++- 3 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 src/components/Mdx/Mdx.styled.ts diff --git a/src/components/CopyTag/CopyTag.tsx b/src/components/CopyTag/CopyTag.tsx index 6bbfe4a..6301ec5 100644 --- a/src/components/CopyTag/CopyTag.tsx +++ b/src/components/CopyTag/CopyTag.tsx @@ -18,7 +18,12 @@ const activeCopyState = { copyText: 'Copied!', } as const; -export const CopyTag = () => { +interface CopyTagProps { + hash?: string; +} + +export const CopyTag = (props: CopyTagProps) => { + const { hash } = props; const [copyState, setCopyState] = useState(defaultCopyState); const { isCopied, copyText } = copyState; const timeoutRef = useRef(null); @@ -35,7 +40,7 @@ export const CopyTag = () => { const onClick = async (e) => { e.preventDefault(); try { - await navigator.clipboard.writeText(location.href); + await navigator.clipboard.writeText(`${location.href}${hash || ''}`); setCopyState(activeCopyState); } catch (e) { setCopyState(defaultCopyState); diff --git a/src/components/Mdx/Mdx.styled.ts b/src/components/Mdx/Mdx.styled.ts new file mode 100644 index 0000000..52db52d --- /dev/null +++ b/src/components/Mdx/Mdx.styled.ts @@ -0,0 +1,3 @@ +import styled from 'styled-components'; + +export const MdxWrapper = styled.div``; diff --git a/src/components/Mdx/Mdx.tsx b/src/components/Mdx/Mdx.tsx index b84b51d..6fd12bb 100644 --- a/src/components/Mdx/Mdx.tsx +++ b/src/components/Mdx/Mdx.tsx @@ -1,6 +1,9 @@ import { MDXRemote } from 'next-mdx-remote'; import { ReactNode } from 'react'; import { MdxSource } from '../../lib/blog'; +import slugify from '../../utils/slugify'; +import { CopyTag } from '../CopyTag/CopyTag'; +import { MdxWrapper } from './Mdx.styled'; interface MdxProps extends MdxSource { components?: { @@ -10,6 +13,24 @@ interface MdxProps extends MdxSource { const commonMdxComponents = { Test: () => <>test Component, + h1: ({ children }) => ( +

+ {children} + +

+ ), + h2: ({ children }) => ( +

+ {children} + +

+ ), + h3: ({ children }) => ( +

+ {children} + +

+ ), }; export const Mdx = (props: MdxProps) => { @@ -18,5 +39,9 @@ export const Mdx = (props: MdxProps) => { ...commonMdxComponents, ...(componentsInput ?? {}), }; - return ; + return ( + + + + ); }; From 6d2e130d255560e9a26d16511d00125728e363f6 Mon Sep 17 00:00:00 2001 From: Chad $yntax Date: Sun, 17 Jul 2022 00:00:00 -0400 Subject: [PATCH 10/13] shift to layouts, fill out blog components and authors views --- src/components/Author/Author.styled.ts | 43 +++++++++++++++ src/components/Author/Author.tsx | 43 +++++++++++++++ src/components/Authors/Authors.styled.ts | 27 ++++++++++ src/components/Authors/Authors.tsx | 28 ++++++++++ src/components/Blog/Blog.styled.ts | 4 ++ src/components/Blog/Blog.tsx | 10 +++- src/components/BlogPost/BlogPost.styled.ts | 2 +- src/components/Episodes/Episodes.tsx | 62 +++++++++++++--------- src/components/Footer/Footer.tsx | 5 ++ src/components/Layout/BlogLayout.tsx | 13 +++++ src/components/Layout/PodcastLayout.tsx | 20 +++++++ src/components/Mdx/Mdx.styled.ts | 9 +++- src/components/Mdx/Mdx.tsx | 8 +-- src/components/Meta/Meta.tsx | 7 ++- src/lib/blog.ts | 35 +++++++++--- src/lib/git.ts | 7 ++- src/pages/_app.tsx | 25 ++++----- src/pages/blog/[slug].tsx | 5 +- src/pages/blog/authors/[slug].tsx | 39 ++++++++++++-- src/pages/blog/authors/index.tsx | 28 +++++++--- src/pages/blog/index.tsx | 5 +- src/pages/episodes/[slug].tsx | 10 ++-- src/pages/index.tsx | 11 +--- src/utils/constants.ts | 2 + 24 files changed, 358 insertions(+), 90 deletions(-) create mode 100644 src/components/Author/Author.styled.ts create mode 100644 src/components/Author/Author.tsx create mode 100644 src/components/Authors/Authors.styled.ts create mode 100644 src/components/Authors/Authors.tsx create mode 100644 src/components/Layout/BlogLayout.tsx create mode 100644 src/components/Layout/PodcastLayout.tsx diff --git a/src/components/Author/Author.styled.ts b/src/components/Author/Author.styled.ts new file mode 100644 index 0000000..95aeeb1 --- /dev/null +++ b/src/components/Author/Author.styled.ts @@ -0,0 +1,43 @@ +import styled from 'styled-components'; + +export const Avatar = styled.div` + padding: 1.6rem; + border: 1px solid white; + display: flex; + align-items: center; + img { + min-width: 100px; + max-width: 100px; + height: 100px; + margin-right: 1.6rem; + border: 1px solid white; + } + h1, + h2 { + margin: 0; + } + h2 { + font-weight: 400; + font-size: 1.6rem; + } +`; + +export const Inner = styled.div` + max-width: 500px; + min-height: 500px; + margin: auto; + padding: 2rem 1.6rem 0; + + @media scree and (min-width: 500px) { + padding: 2rem 0 0; + } + + h3 { + padding-top: 1.6rem; + margin-bottom: 0.8rem; + } + ul { + padding-left: 1.8rem; + margin-top: 0; + } +`; diff --git a/src/components/Author/Author.tsx b/src/components/Author/Author.tsx new file mode 100644 index 0000000..15e60aa --- /dev/null +++ b/src/components/Author/Author.tsx @@ -0,0 +1,43 @@ +import Link from 'next/link'; +import { Author as IAuthor, Post } from '../../lib/blog'; +import { blogAssetRoot } from '../../utils/constants'; +import { Avatar, Inner } from './Author.styled'; +import { BreadCrumbs } from '../BreadCrumbs/BreadCrumbs'; + +interface AuthorProps { + author: IAuthor; + posts: Post[]; +} + +export const Author = (props: AuthorProps) => { + const { author, posts } = props; + return ( +
+ + + + {`${author.name}'s +
+

{author.name}

+

+ {'a.k.a '} + {author.title} +

+
+
+

{author.shortbio}

+

Posts by this author

+
    + {posts.map((post) => ( +
  • + {post.data.title} +
  • + ))} +
+
+
+ ); +}; diff --git a/src/components/Authors/Authors.styled.ts b/src/components/Authors/Authors.styled.ts new file mode 100644 index 0000000..54b6682 --- /dev/null +++ b/src/components/Authors/Authors.styled.ts @@ -0,0 +1,27 @@ +import styled from 'styled-components'; + +export const Inner = styled.div` + max-width: 500px; + margin: 0 auto; + padding: 0 1.6rem; + @media screen and (min-width: 500px) { + padding: 0; + } + h1, + h2 { + text-align: center; + font-weight: 400; + } + h1 { + font-size: 5.2rem; + margin-bottom: 1.2rem; + } + h2 { + margin-top: 0; + font-size: 1.8rem; + } +`; + +export const AuthorsList = styled.div` + min-height: 500px; +`; diff --git a/src/components/Authors/Authors.tsx b/src/components/Authors/Authors.tsx new file mode 100644 index 0000000..bae1978 --- /dev/null +++ b/src/components/Authors/Authors.tsx @@ -0,0 +1,28 @@ +import Link from 'next/link'; +import { Author } from '../../lib/blog'; +import { Inner, AuthorsList } from './Authors.styled'; +import { BreadCrumbs } from '../BreadCrumbs/BreadCrumbs'; + +interface AuthorsProps { + authors: Author[]; +} + +export const Authors = (props: AuthorsProps) => { + const { authors } = props; + return ( +
+ + +

Authors

+

Can't live with 'em, can't live without 'em

+ + {authors.map((author) => ( +

+ {author.name} +

+ ))} +
+
+
+ ); +}; diff --git a/src/components/Blog/Blog.styled.ts b/src/components/Blog/Blog.styled.ts index b2b9a3f..0ae2ab2 100644 --- a/src/components/Blog/Blog.styled.ts +++ b/src/components/Blog/Blog.styled.ts @@ -65,6 +65,10 @@ export const Article = styled.article` font-size: 3.2rem; font-style: italic; text-transform: UPPERCASE; + color: white; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; } h5 { margin: 0; diff --git a/src/components/Blog/Blog.tsx b/src/components/Blog/Blog.tsx index 481075d..3800ffe 100644 --- a/src/components/Blog/Blog.tsx +++ b/src/components/Blog/Blog.tsx @@ -14,6 +14,8 @@ interface BlogProps { authors: Author[]; } +const maxDescCharCount = 275; + export const Blog = (props: BlogProps) => { const { posts, authors } = props; @@ -60,6 +62,12 @@ export const Blog = (props: BlogProps) => { {posts.map((post) => { const { title, author } = post.data; const targetAuthor = authorsMap.get(author); + let description = post.data.description ?? ''; + if (description.length > maxDescCharCount) { + description = `${description + .slice(0, maxDescCharCount) + .trim()}...`; + } return ( @@ -71,7 +79,7 @@ export const Blog = (props: BlogProps) => { {targetAuthor.name} -

{post.data.description}

+

{description}

diff --git a/src/components/BlogPost/BlogPost.styled.ts b/src/components/BlogPost/BlogPost.styled.ts index 721afb6..eb0487d 100644 --- a/src/components/BlogPost/BlogPost.styled.ts +++ b/src/components/BlogPost/BlogPost.styled.ts @@ -30,7 +30,7 @@ export const BlogPostByline = styled.p` font-size: 1.2rem; `; -export const BlogPostBody = styled.div` +export const BlogPostBody = styled.article` h1, h2, h3, diff --git a/src/components/Episodes/Episodes.tsx b/src/components/Episodes/Episodes.tsx index e5322f6..71d8fc6 100644 --- a/src/components/Episodes/Episodes.tsx +++ b/src/components/Episodes/Episodes.tsx @@ -1,5 +1,7 @@ import Link from 'next/link'; import { useState } from 'react'; +import { Hero } from '../Hero/Hero'; +import { PodcastLinks } from '../PodcastLinks/PodcastLinks'; import { StyledEpisodes, EpisodesInner, @@ -19,10 +21,11 @@ const cursorTitleMap = { interface EpisodesProps { episodes: Episode[]; comingSoonEnabled: boolean; + decentralized?: boolean; } export const Episodes = (props: EpisodesProps) => { - const { episodes, comingSoonEnabled } = props; + const { episodes, comingSoonEnabled, decentralized } = props; const [cursorLength, setCursorLength] = useState(10); const [cursor, setCursor] = useState(cursorLength); const [timesClicked, setTimesClicked] = useState(0); @@ -57,31 +60,38 @@ export const Episodes = (props: EpisodesProps) => { ); return ( - - -

Episodes

-
- {currentEpisodes.map((episode) => ( - - - {episode.title} - - - ))} - {!allLoaded && episodes.length > 10 && ( - - load {cursorTitleMap[cursorLength] ?? cursorLength} more - - )} - - - viewing {currentEpisodes.length} / {episodes.length} episodes - - {!allLoaded && ( - load all + <> + + + + +

Episodes

+
+ {currentEpisodes.map((episode) => ( + + + {episode.title} + + + ))} + {!allLoaded && episodes.length > 10 && ( + + load {cursorTitleMap[cursorLength] ?? cursorLength} more + )} -
-
-
+ + + viewing {currentEpisodes.length} / {episodes.length} episodes + + {!allLoaded && ( + load all + )} + + + + ); }; diff --git a/src/components/Footer/Footer.tsx b/src/components/Footer/Footer.tsx index 7abe0c4..9d689b7 100644 --- a/src/components/Footer/Footer.tsx +++ b/src/components/Footer/Footer.tsx @@ -1,3 +1,4 @@ +import Link from 'next/link'; import { StyledFooter } from './Footer.styled'; export const Footer = () => ( @@ -68,6 +69,10 @@ export const Footer = () => ( > github + {' | '} + + blog +
); diff --git a/src/components/Layout/BlogLayout.tsx b/src/components/Layout/BlogLayout.tsx new file mode 100644 index 0000000..4cfce54 --- /dev/null +++ b/src/components/Layout/BlogLayout.tsx @@ -0,0 +1,13 @@ +import styled from 'styled-components'; +import { BlogFooter } from '../BlogFooter/BlogFooter'; + +export const StyledBlogLayout = styled.main` + font-family: ${(p) => p.theme.ffJetbrainsMono}; +`; + +export const BlogLayout = ({ children }) => ( + + {children} + + +); diff --git a/src/components/Layout/PodcastLayout.tsx b/src/components/Layout/PodcastLayout.tsx new file mode 100644 index 0000000..fbddd93 --- /dev/null +++ b/src/components/Layout/PodcastLayout.tsx @@ -0,0 +1,20 @@ +import styled from 'styled-components'; +import { Footer } from '../Footer/Footer'; +import { Header } from '../Header/Header'; + +export const StyledPodcastLayout = styled.main` + font-family: ${(p) => p.theme.ffUbuntu}; + + @media screen and (max-width: 500px) { + padding: 0 0.8rem; + background-color: ${(p) => p.theme.background}; + } +`; + +export const PodcastLayout = ({ children }) => ( + +
+ {children} +
+ +); diff --git a/src/components/Mdx/Mdx.styled.ts b/src/components/Mdx/Mdx.styled.ts index 52db52d..1637682 100644 --- a/src/components/Mdx/Mdx.styled.ts +++ b/src/components/Mdx/Mdx.styled.ts @@ -1,3 +1,10 @@ import styled from 'styled-components'; -export const MdxWrapper = styled.div``; +export const MdxWrapper = styled.div` + h1 { + font-size: 3.2rem; + } + h2 { + font-size: 2.4rem; + } +`; diff --git a/src/components/Mdx/Mdx.tsx b/src/components/Mdx/Mdx.tsx index 6fd12bb..639b4df 100644 --- a/src/components/Mdx/Mdx.tsx +++ b/src/components/Mdx/Mdx.tsx @@ -20,16 +20,16 @@ const commonMdxComponents = { ), h2: ({ children }) => ( -

+

{children} -

+ ), h3: ({ children }) => ( -

+

{children} -

+ ), }; diff --git a/src/components/Meta/Meta.tsx b/src/components/Meta/Meta.tsx index 024e8b9..8fa3625 100644 --- a/src/components/Meta/Meta.tsx +++ b/src/components/Meta/Meta.tsx @@ -19,7 +19,7 @@ export const Meta = (props: MetaProps) => { const { title, - description, + description: descriptionInput, type, datePublished, dateModified, @@ -28,6 +28,11 @@ export const Meta = (props: MetaProps) => { ogImage: ogImageInput, } = props; + const description = + descriptionInput.length > 150 + ? `${descriptionInput.substring(0, 147)}...` + : descriptionInput; + const isBlog = router.route.includes('blog'); const defaultOgImage = `${rootUrl}/ttps_og.jpg`; diff --git a/src/lib/blog.ts b/src/lib/blog.ts index a297656..36efda2 100644 --- a/src/lib/blog.ts +++ b/src/lib/blog.ts @@ -4,6 +4,14 @@ import { COLLECTIONS } from './collections'; export type Post = Awaited>; export type MdxSource = Pick; +const postSort = (a, b) => { + if (a.data.date === b.data.date) return 0; + const aDate = new Date(a.data.date); + const bDate = new Date(b.data.date); + + return aDate > bDate ? -1 : 1; +}; + export const fetchBlogPosts = async (): Promise => { const data = await fetchFromGit(COLLECTIONS.POST); @@ -14,13 +22,7 @@ export const fetchBlogPosts = async (): Promise => { ); // files aren't sorted in the github repo, sort by pub date - posts.sort((a, b) => { - if (a.data.date === b.data.date) return 0; - const aDate = new Date(a.data.date); - const bDate = new Date(b.data.date); - - return aDate > bDate ? -1 : 1; - }); + posts.sort(postSort); return posts; }; @@ -57,3 +59,22 @@ export const fetchAuthor = async (slug: string): Promise => { return author; }; + +export const fetchPostsByAuthor = async (slug: string): Promise => { + const data = await fetchFromGit(COLLECTIONS.POST); + + if (!data.repository.object) return []; + + const posts = await Promise.all( + data.repository.object.entries.map(processMdxGitFile) + ); + + const postsByAuthor = posts.filter((post) => post.data.author === slug); + + console.log('postsByAuthor', postsByAuthor); + + // files aren't sorted in the github repo, sort by pub date + postsByAuthor.sort(postSort); + + return postsByAuthor; +}; diff --git a/src/lib/git.ts b/src/lib/git.ts index 56faec1..30936c9 100644 --- a/src/lib/git.ts +++ b/src/lib/git.ts @@ -32,7 +32,12 @@ export const processMdxGitFile = async (entry: any) => { const mdxMetadata = parseMdxData(fileContents); const mdxSource = await serialize(mdxMetadata.content); const slug = entry.name.replace('.mdx', ''); - const parsedFileData = { ...mdxMetadata, mdxSource, slug }; + const parsedFileData = { + ...mdxMetadata, + mdxSource, + slug, + }; + delete parsedFileData.content; return parsedFileData; }; diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index d9ede8e..c4a2974 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -4,12 +4,12 @@ import { createGlobalStyle, ThemeProvider } from 'styled-components'; import { AudioPlayer } from '../components/AudioPlayer/AudioPlayer'; import { AudioPlayerCtx } from '../components/AudioPlayer/AudioPlayerCtx'; import { kSequence, kAudio, theme, Theme } from '../utils/constants'; +import { PodcastLayout } from '../components/Layout/PodcastLayout'; +import { BlogLayout } from '../components/Layout/BlogLayout'; import { setSrc, play } from '../utils/audio'; const GlobalStyle = createGlobalStyle<{ theme: Theme; isBlog: boolean }>` html { - font-family: ${(p) => - p.isBlog ? p.theme.ffJetbrainsMono : p.theme.ffUbuntu}; font-size: 62.5%; background-color: ${(p) => p.theme.background}; } @@ -20,10 +20,6 @@ const GlobalStyle = createGlobalStyle<{ theme: Theme; isBlog: boolean }>` color: ${(p) => p.theme.offWhite}; } - footer { - font-family: ${(p) => p.theme.ffUbuntu}; - } - * { -webkit-font-smoothing: antialiased; -mac-osx-font-smoothing: greyscale; @@ -36,13 +32,6 @@ const GlobalStyle = createGlobalStyle<{ theme: Theme; isBlog: boolean }>` color: #b0b0b0; } } - - main { - @media screen and (max-width: 500px) { - padding: 0 0.8rem; - background-color: ${(p) => p.theme.background}; - } - } `; export default function App({ Component, pageProps }) { @@ -51,6 +40,8 @@ export default function App({ Component, pageProps }) { const { route } = useRouter(); const isBlog = route.includes('blog'); + const Layout = isBlog ? BlogLayout : PodcastLayout; + useEffect(() => { let _seq = kSequence; let _prog = 0; @@ -76,9 +67,11 @@ export default function App({ Component, pageProps }) { value={{ title: audioTitle, setTitle: setAudioTitle }} > - - - + + + + + ); diff --git a/src/pages/blog/[slug].tsx b/src/pages/blog/[slug].tsx index 2465f40..54bcba3 100644 --- a/src/pages/blog/[slug].tsx +++ b/src/pages/blog/[slug].tsx @@ -43,7 +43,7 @@ export default function BlogPostPage(props: BlogPostPageProps) { const { post, author, dateModified } = props; const { title, description, date } = post.data; return ( -
+ <> - -
+ ); } diff --git a/src/pages/blog/authors/[slug].tsx b/src/pages/blog/authors/[slug].tsx index e0cf5ef..3d30ab7 100644 --- a/src/pages/blog/authors/[slug].tsx +++ b/src/pages/blog/authors/[slug].tsx @@ -1,8 +1,19 @@ +import { Meta } from '../../../components/Meta/Meta'; +import { Author } from '../../../components/Author/Author'; import { BUILD_TS } from '../../../../app.config'; -import { fetchAuthor, fetchAuthors, Author } from '../../../lib/blog'; +import { + fetchAuthor, + fetchAuthors, + fetchPostsByAuthor, + Author as IAuthor, + Post, +} from '../../../lib/blog'; interface AuthorPageProps { - author: Author; + author: IAuthor; + posts: Post[]; + datePublished: string; + dateModified: string; } export async function getStaticPaths() { @@ -16,16 +27,36 @@ export async function getStaticPaths() { export async function getStaticProps({ params }) { const { slug } = params; - const author = await fetchAuthor(slug); + const [author, posts] = await Promise.all([ + fetchAuthor(slug), + fetchPostsByAuthor(slug), + ]); + const datePublished = BUILD_TS.toISOString(); const dateModified = BUILD_TS.toISOString(); return { props: { author, + posts, + datePublished, dateModified, }, }; } export default function AuthorPage(props: AuthorPageProps) { - return <>{props.author.name}; + const { author, posts, datePublished, dateModified } = props; + const title = `The works of ${author.name} at the Chad $yntax Blog of Infinite Wonders`; + const description = `${author.name}, a.k.a. ${author.title}: ${author.shortbio}`; + return ( + <> + + + + ); } diff --git a/src/pages/blog/authors/index.tsx b/src/pages/blog/authors/index.tsx index c9daa2a..84f5e25 100644 --- a/src/pages/blog/authors/index.tsx +++ b/src/pages/blog/authors/index.tsx @@ -1,28 +1,44 @@ -import Link from 'next/link'; +import { Meta } from '../../../components/Meta/Meta'; +import { Authors } from '../../../components/Authors/Authors'; import { fetchAuthors, Author } from '../../../lib/blog'; +import { BUILD_TS } from '../../../../app.config'; interface AuthorsIndexPageProps { authors: Author[]; + datePublished: string; + dateModified: string; } +const title = + 'All of our esteemed authors here at the Chad $yntax Blog of Infinite wonders.'; + +const description = + "Wait, aren't we broke? How are we affording extra writers? Don't we just have the one who we don't even pay? Hello? Is my internet out?"; + export async function getStaticProps() { const authors = await fetchAuthors(); return { props: { authors, + datePublished: BUILD_TS.toISOString(), + dateModified: BUILD_TS.toISOString(), }, }; } export default function AuthorsIndexPage(props: AuthorsIndexPageProps) { + const { authors, dateModified, datePublished } = props; return ( <> - {props.authors.map((author) => ( -
- {author.name} -
- ))} + + ); } diff --git a/src/pages/blog/index.tsx b/src/pages/blog/index.tsx index aec5923..6aa5877 100644 --- a/src/pages/blog/index.tsx +++ b/src/pages/blog/index.tsx @@ -34,7 +34,7 @@ const description = export default function BlogIndexPage(props: BlogIndexPageProps) { const { posts, authors, datePublished, dateModified } = props; return ( -
+ <> - -
+ ); } diff --git a/src/pages/episodes/[slug].tsx b/src/pages/episodes/[slug].tsx index 30a513e..bbd75b2 100644 --- a/src/pages/episodes/[slug].tsx +++ b/src/pages/episodes/[slug].tsx @@ -73,20 +73,16 @@ interface EpisodeProps { export default function EpisodePage(props: EpisodeProps) { const { title, description, datePublished, dateModified } = props; - const trimmedDescription = `${description.substring(0, 147)}...`; - return ( -
+ <> -
-
-
+ ); } diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 481cb57..d4ab79f 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -72,7 +72,7 @@ export default function Home(props: HomeProps) { ? comingSoonDescription : launchDescription; return ( -
+ <> - {!comingSoonEnabled &&
} - - -
-
+ ); } diff --git a/src/utils/constants.ts b/src/utils/constants.ts index 0889bbc..23aaecb 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -16,3 +16,5 @@ export type Theme = typeof theme; export const kSequence = [38, 38, 40, 40, 37, 39, 37, 39, 66, 65, 16, 13]; export const kAudio = '/SERIES_OF_TUBES.mp3'; + +export const blogAssetRoot = 'https://cms.ttpspodcast.com'; From 7247d07e5ba8a4c95d036620eb51d829779ca56d Mon Sep 17 00:00:00 2001 From: Chad $yntax Date: Mon, 18 Jul 2022 00:12:03 -0400 Subject: [PATCH 11/13] add the blog cave --- src/components/BreadCrumbs/BreadCrumbs.tsx | 2 +- .../CaveEntrance/CaveEntrance.styled.tsx | 21 ++++++++++++++++++ src/components/CaveEntrance/CaveEntrance.tsx | 15 +++++++++++++ .../CaveEntrance/blog-cave-entrance.png | Bin 0 -> 9472 bytes src/components/CopyTag/CopyTag.styled.ts | 1 + src/components/Footer/Footer.styled.ts | 1 + src/components/Footer/Footer.tsx | 6 ++--- src/pages/index.tsx | 4 ---- src/utils/constants.ts | 2 +- 9 files changed, 42 insertions(+), 10 deletions(-) create mode 100644 src/components/CaveEntrance/CaveEntrance.styled.tsx create mode 100644 src/components/CaveEntrance/CaveEntrance.tsx create mode 100644 src/components/CaveEntrance/blog-cave-entrance.png diff --git a/src/components/BreadCrumbs/BreadCrumbs.tsx b/src/components/BreadCrumbs/BreadCrumbs.tsx index 3f2c551..0f33d1a 100644 --- a/src/components/BreadCrumbs/BreadCrumbs.tsx +++ b/src/components/BreadCrumbs/BreadCrumbs.tsx @@ -11,7 +11,7 @@ export const BreadCrumbs = () => { return ( - + < Exit the cave {otherLinks.map((otherLink, index) => { diff --git a/src/components/CaveEntrance/CaveEntrance.styled.tsx b/src/components/CaveEntrance/CaveEntrance.styled.tsx new file mode 100644 index 0000000..ce12ce6 --- /dev/null +++ b/src/components/CaveEntrance/CaveEntrance.styled.tsx @@ -0,0 +1,21 @@ +import styled from 'styled-components'; + +export const StyledCaveEntrance = styled.img` + width: 100px; + height: 100px; + display: block; + margin-bottom: -10px; +`; + +export const CaveLink = styled.a` + position: absolute; + bottom: 0; + right: 0; + z-index: 1; + font-size: 1rem; + line-height: 1rem; + span { + display: block; + text-indent: -999999px; + } +`; diff --git a/src/components/CaveEntrance/CaveEntrance.tsx b/src/components/CaveEntrance/CaveEntrance.tsx new file mode 100644 index 0000000..78c16d3 --- /dev/null +++ b/src/components/CaveEntrance/CaveEntrance.tsx @@ -0,0 +1,15 @@ +import Link from 'next/link'; +import { StyledCaveEntrance, CaveLink } from './CaveEntrance.styled'; +import caveEntrancePng from './blog-cave-entrance.png'; + +export const CaveEntrance = () => ( + + + + Blog + + +); diff --git a/src/components/CaveEntrance/blog-cave-entrance.png b/src/components/CaveEntrance/blog-cave-entrance.png new file mode 100644 index 0000000000000000000000000000000000000000..558fde89da177b7e5bd9d7f17fd44552ec4920ff GIT binary patch literal 9472 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 S65kB~0000PWNz literal 0 HcmV?d00001 diff --git a/src/components/CopyTag/CopyTag.styled.ts b/src/components/CopyTag/CopyTag.styled.ts index 795d8ad..5fa0942 100644 --- a/src/components/CopyTag/CopyTag.styled.ts +++ b/src/components/CopyTag/CopyTag.styled.ts @@ -1,6 +1,7 @@ import styled from 'styled-components'; export const StyledCopyTag = styled.span` + cursor: pointer; font-size: 1.2rem; line-height: 2.8rem; margin-left: 0.8rem; diff --git a/src/components/Footer/Footer.styled.ts b/src/components/Footer/Footer.styled.ts index 3a67cce..7203a49 100644 --- a/src/components/Footer/Footer.styled.ts +++ b/src/components/Footer/Footer.styled.ts @@ -2,6 +2,7 @@ import styled from 'styled-components'; export const StyledFooter = styled.footer` background-color: ${(p) => p.theme.background}; + position: relative; text-align: center; color: #b0b0b0; padding: 4rem 0 12rem; diff --git a/src/components/Footer/Footer.tsx b/src/components/Footer/Footer.tsx index 9d689b7..57aab7d 100644 --- a/src/components/Footer/Footer.tsx +++ b/src/components/Footer/Footer.tsx @@ -1,5 +1,6 @@ import Link from 'next/link'; import { StyledFooter } from './Footer.styled'; +import { CaveEntrance } from '../CaveEntrance/CaveEntrance'; export const Footer = () => ( @@ -69,10 +70,7 @@ export const Footer = () => ( > github - {' | '} - - blog -
+ ); diff --git a/src/pages/index.tsx b/src/pages/index.tsx index d4ab79f..13b9dbd 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,11 +1,7 @@ import React from 'react'; import Parser from 'rss-parser'; -import { Hero } from '../components/Hero/Hero'; import { Episodes } from '../components/Episodes/Episodes'; -import { Footer } from '../components/Footer/Footer'; -import { PodcastLinks } from '../components/PodcastLinks/PodcastLinks'; import { Meta } from '../components/Meta/Meta'; -import { Header } from '../components/Header/Header'; import slugify from '../utils/slugify'; import { COMING_SOON_ENABLED as comingSoonEnabled, diff --git a/src/utils/constants.ts b/src/utils/constants.ts index 23aaecb..e0d4fbc 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -2,7 +2,7 @@ export const audioPlayerId = '__ttps-audio-player'; export const audioPlayerWrapperId = '__ttps-audio-player-wrapper'; export const theme = { - background: '#080808', + background: '#020202', offWhite: '#d0d0d0', buttonBg: '#241c15', ethPurple: '#37367b', From 434845412866523674fd944357729b4f2bc9aa2f Mon Sep 17 00:00:00 2001 From: Chad $yntax Date: Sun, 24 Jul 2022 00:45:03 -0700 Subject: [PATCH 12/13] add read time --- src/components/Author/Author.tsx | 2 +- src/components/Authors/Authors.tsx | 2 +- .../BlogFooter/BlogFooter.styled.ts | 2 ++ src/components/BlogFooter/BlogFooter.tsx | 27 ++++++++++++++++++- src/components/BlogPost/BlogPost.tsx | 15 ++++++----- src/components/Meta/Meta.tsx | 3 +++ src/lib/git.ts | 12 +++++++++ src/pages/blog/[slug].tsx | 3 +++ 8 files changed, 57 insertions(+), 9 deletions(-) diff --git a/src/components/Author/Author.tsx b/src/components/Author/Author.tsx index 15e60aa..8843ecb 100644 --- a/src/components/Author/Author.tsx +++ b/src/components/Author/Author.tsx @@ -32,7 +32,7 @@ export const Author = (props: AuthorProps) => {

Posts by this author

    {posts.map((post) => ( -
  • +
  • {post.data.title}
  • ))} diff --git a/src/components/Authors/Authors.tsx b/src/components/Authors/Authors.tsx index bae1978..4e033f7 100644 --- a/src/components/Authors/Authors.tsx +++ b/src/components/Authors/Authors.tsx @@ -17,7 +17,7 @@ export const Authors = (props: AuthorsProps) => {

    Can't live with 'em, can't live without 'em

    {authors.map((author) => ( -

    +

    {author.name}

    ))} diff --git a/src/components/BlogFooter/BlogFooter.styled.ts b/src/components/BlogFooter/BlogFooter.styled.ts index 73aa56f..b2f9538 100644 --- a/src/components/BlogFooter/BlogFooter.styled.ts +++ b/src/components/BlogFooter/BlogFooter.styled.ts @@ -13,4 +13,6 @@ export const StyledBlogFooter = styled.footer` export const BlogLegalise = styled.p` font-size: 1rem; + text-transform: uppercase; + text-align: justify; `; diff --git a/src/components/BlogFooter/BlogFooter.tsx b/src/components/BlogFooter/BlogFooter.tsx index b9cd846..896e628 100644 --- a/src/components/BlogFooter/BlogFooter.tsx +++ b/src/components/BlogFooter/BlogFooter.tsx @@ -1,5 +1,5 @@ import Link from 'next/link'; -import { StyledBlogFooter } from './BlogFooter.styled'; +import { StyledBlogFooter, BlogLegalise } from './BlogFooter.styled'; export const BlogFooter = () => ( @@ -19,5 +19,30 @@ export const BlogFooter = () => ( Send feedback/questions to query@ttpspodcast.com +
    + + *Any and all wonders found on the property are exclusively owned by "Chad + $yntax Blog Cave of Wonders! LLC" in perpetuity. By entering the blog cave + you waive all rights to any wonders found within the cave and recognize + the authority of "Chad $yntax Blog Cave of Wonders! LLC" staff on any + company property. By entering the cave you waive your right to bear arms + and must strictly adhere to company policy. Failure to comply may result + in incarceration and/or expulsion from the Blog Cave of Wonders. By + entering the cave you waive all rights to bring suit against "Chad $yntax + Blog Cave of Wonders! LLC" and it's subsidiaries. "Chad $yntax Blog Cave + of Wonders! LLC" reserves the right to restrain any personnel found + exiting the premisis with wonders concealed or purposefully hidden from + staff. +
    +
    + "Chad $yntax Blog Cave of Wonders! LLC" also holds exclusive rights to + what are colloquially known as "Sub-Wonders", "Sub-Sub-Wonders", + "Mini-Wonders", "Micro Wonders", and "Chonk Wonders" found within the Blog + Cave. "Chad $yntax Blog Cave of Wonders! LLC" also owns the rights to any + "Wonder" subgroups, archetypes, or categories discovered in the future. +
    +
    + Outside food and drink are not allowed within the blog cave. +
    ); diff --git a/src/components/BlogPost/BlogPost.tsx b/src/components/BlogPost/BlogPost.tsx index 1e3a73c..37142ed 100644 --- a/src/components/BlogPost/BlogPost.tsx +++ b/src/components/BlogPost/BlogPost.tsx @@ -21,6 +21,7 @@ export const BlogPost = (props: BlogPostProps) => { const { data: { date, title, description }, + readTime, } = post; const dateObj = new Date(date); @@ -31,13 +32,15 @@ export const BlogPost = (props: BlogPostProps) => { - {title} - {description} - - Published {pubDate} {`@ ${pubTime}`} by  - {author.name} - + {title} + {description} + + Published {pubDate} {`@ ${pubTime}`} by  + {author.name} + | + {readTime} + diff --git a/src/components/Meta/Meta.tsx b/src/components/Meta/Meta.tsx index 8fa3625..17fc702 100644 --- a/src/components/Meta/Meta.tsx +++ b/src/components/Meta/Meta.tsx @@ -12,6 +12,7 @@ interface MetaProps { decentralized?: boolean; author?: string; ogImage?: string; + additionalStructuredData?: any; } export const Meta = (props: MetaProps) => { @@ -26,6 +27,7 @@ export const Meta = (props: MetaProps) => { decentralized, author, ogImage: ogImageInput, + additionalStructuredData = {}, } = props; const description = @@ -72,6 +74,7 @@ export const Meta = (props: MetaProps) => { description, keywords: 'podcast web development software engineering educational technology weed talk show discussion', + ...additionalStructuredData, }; return ( diff --git a/src/lib/git.ts b/src/lib/git.ts index 30936c9..01b740b 100644 --- a/src/lib/git.ts +++ b/src/lib/git.ts @@ -30,12 +30,24 @@ export const processJsonGitFile = (entry: any) => { export const processMdxGitFile = async (entry: any) => { const fileContents = entry.object.text; const mdxMetadata = parseMdxData(fileContents); + const wordCount = mdxMetadata.content.trim().split(' ').length; + // 250 is average WPM + const minutesToRead = Math.floor(wordCount / 250); + const readTime = `Read time: ${ + minutesToRead < 1 + ? 'less than a minute' + : minutesToRead === 1 + ? `1 minute` + : `${minutesToRead} minutes` + }`; const mdxSource = await serialize(mdxMetadata.content); const slug = entry.name.replace('.mdx', ''); const parsedFileData = { ...mdxMetadata, mdxSource, slug, + wordCount, + readTime, }; delete parsedFileData.content; return parsedFileData; diff --git a/src/pages/blog/[slug].tsx b/src/pages/blog/[slug].tsx index 54bcba3..13a0ceb 100644 --- a/src/pages/blog/[slug].tsx +++ b/src/pages/blog/[slug].tsx @@ -50,6 +50,9 @@ export default function BlogPostPage(props: BlogPostPageProps) { type="BlogPosting" datePublished={date} dateModified={dateModified} + additionalStructuredData={{ + wordCount: post.wordCount, + }} /> From 5a12c1e83436b5f4788807d4980bc8f2b5348e37 Mon Sep 17 00:00:00 2001 From: Chad $yntax Date: Sun, 21 Aug 2022 15:11:03 -0700 Subject: [PATCH 13/13] update some random stuff here --- .github/workflows/build-and-deploy.yml | 3 ++- src/components/Layout/PodcastLayout.tsx | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-and-deploy.yml b/.github/workflows/build-and-deploy.yml index 7855689..8f98976 100644 --- a/.github/workflows/build-and-deploy.yml +++ b/.github/workflows/build-and-deploy.yml @@ -11,7 +11,8 @@ jobs: runs-on: ubuntu-latest environment: gh-pages steps: - - uses: actions/setup-node@v3 + - name: 'Setup Node' + uses: actions/setup-node@v3 with: node-version: 18 - name: Checkout 🛎️ diff --git a/src/components/Layout/PodcastLayout.tsx b/src/components/Layout/PodcastLayout.tsx index fbddd93..c560953 100644 --- a/src/components/Layout/PodcastLayout.tsx +++ b/src/components/Layout/PodcastLayout.tsx @@ -1,3 +1,4 @@ +import { ReactNode } from 'react'; import styled from 'styled-components'; import { Footer } from '../Footer/Footer'; import { Header } from '../Header/Header'; @@ -11,7 +12,11 @@ export const StyledPodcastLayout = styled.main` } `; -export const PodcastLayout = ({ children }) => ( +interface PodcastLayoutProps { + children: ReactNode; +} + +export const PodcastLayout = ({ children }: PodcastLayoutProps) => (
    {children}