diff --git a/README.md b/README.md index 01fe69d..da77701 100644 --- a/README.md +++ b/README.md @@ -51,4 +51,4 @@ Comments on the site are powered by [giscus.app](https://giscus.app) and stored ## License -This project is licensed under the [MIT License](LICENSE.txt). \ No newline at end of file +This project is licensed under the [MIT License](LICENSE.txt). diff --git a/astro.config.mjs b/astro.config.mjs index d8e7708..07e5d30 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -15,10 +15,4 @@ export default defineConfig({ theme: "vitesse-dark", }, }, - redirects: { - "/blog": { - destination: "/", - status: 301, - }, - }, }); diff --git a/src/components/Header.astro b/src/components/Header.astro new file mode 100644 index 0000000..4571a5c --- /dev/null +++ b/src/components/Header.astro @@ -0,0 +1,22 @@ + + +
+ Home + Blog +
diff --git a/src/components/Pagination.astro b/src/components/Pagination.astro deleted file mode 100644 index 0d656df..0000000 --- a/src/components/Pagination.astro +++ /dev/null @@ -1,35 +0,0 @@ ---- -type Props = { - readonly nextUrl?: string; - readonly prevUrl?: string; -}; - -const { nextUrl, prevUrl } = Astro.props; ---- - - - -
- { - prevUrl && ( - - < Prev - - ) - } - { - nextUrl && ( - - Next > - - ) - } -
diff --git a/src/components/PostElement.astro b/src/components/PostElement.astro new file mode 100644 index 0000000..703189e --- /dev/null +++ b/src/components/PostElement.astro @@ -0,0 +1,32 @@ +--- +import { type CollectionEntry } from "astro:content"; +import dayjs from "dayjs"; + +type Props = { + readonly post: CollectionEntry<"blog">; +}; + +const { post } = Astro.props; +const { remarkPluginFrontmatter } = await post.render(); +const formattedDate = dayjs(post.data.pubDate.toString()).format("MMMM DD, YYYY"); +--- + + + +
  • + {post.data.title} +
    + + + + {remarkPluginFrontmatter.minutesRead} + +
    +
  • diff --git a/src/layouts/BaseLayout.astro b/src/layouts/BaseLayout.astro index ca8826a..0209c58 100644 --- a/src/layouts/BaseLayout.astro +++ b/src/layouts/BaseLayout.astro @@ -1,6 +1,7 @@ --- import Analytics from "../components/Analytics.astro"; import Head from "../components/Head.astro"; +import Header from "../components/Header.astro"; import "../scss/global.scss"; type Props = { @@ -19,6 +20,10 @@ const { description, title } = Astro.props;
    +
    +
    +
    +
    diff --git a/src/pages/[...page].astro b/src/pages/[...page].astro deleted file mode 100644 index 6d513b2..0000000 --- a/src/pages/[...page].astro +++ /dev/null @@ -1,33 +0,0 @@ ---- -import type { GetStaticPaths, InferGetStaticPropsType } from "astro"; -import { getCollection } from "astro:content"; -import Layout from "../layouts/BaseLayout.astro"; -import Pagination from "../components/Pagination.astro"; -import PostSummary from "../components/PostSummary.astro"; - -type Props = InferGetStaticPropsType; - -export const getStaticPaths = (async ({ paginate }) => { - const posts = await getCollection("blog", ({ data }) => { - return data.draft !== true; - }); - - posts.sort((a, b) => b.data.pubDate.getTime() - a.data.pubDate.getTime()); - - return paginate(posts, { - pageSize: 10, - }); -}) satisfies GetStaticPaths; - -const { page } = Astro.props; ---- - - -
    - {page.data.map((post) => )} -
    - -
    - -
    -
    diff --git a/src/pages/blog/[...slug].astro b/src/pages/blog/[...slug].astro index 41b0f5c..c4e542c 100644 --- a/src/pages/blog/[...slug].astro +++ b/src/pages/blog/[...slug].astro @@ -32,11 +32,13 @@ const formattedDate = dayjs(post.data.pubDate.toString()).format("MMMM DD, YYYY"
    +
    +

    {post.data.title}

    +
    +

    - < Home -  •  Posted by {post.data.author} @@ -46,10 +48,6 @@ const formattedDate = dayjs(post.data.pubDate.toString()).format("MMMM DD, YYYY"

    -
    -

    {post.data.title}

    -
    -
    diff --git a/src/pages/blog/index.astro b/src/pages/blog/index.astro new file mode 100644 index 0000000..48d33e8 --- /dev/null +++ b/src/pages/blog/index.astro @@ -0,0 +1,19 @@ +--- +import { getCollection } from "astro:content"; +import Layout from "../../layouts/BaseLayout.astro"; +import PostElement from "../../components/PostElement.astro"; + +const posts = await getCollection("blog", ({ data }) => { + return data.draft !== true; +}); + +posts.sort((a, b) => b.data.pubDate.getTime() - a.data.pubDate.getTime()); +--- + + +
    +
      + {posts.map((post) => )} +
    +
    +
    diff --git a/src/pages/index.astro b/src/pages/index.astro new file mode 100644 index 0000000..56ccdff --- /dev/null +++ b/src/pages/index.astro @@ -0,0 +1,17 @@ +--- +import { getCollection } from "astro:content"; +import Layout from "../layouts/BaseLayout.astro"; +import PostSummary from "../components/PostSummary.astro"; + +const posts = await getCollection("blog", ({ data }) => { + return data.draft !== true; +}); + +posts.sort((a, b) => b.data.pubDate.getTime() - a.data.pubDate.getTime()); +--- + + +
    + {posts.map((post) => )} +
    +