aboutsummaryrefslogtreecommitdiff
path: root/apps/website/src/pages/blog
diff options
context:
space:
mode:
Diffstat (limited to 'apps/website/src/pages/blog')
-rw-r--r--apps/website/src/pages/blog/[...slug].astro25
-rw-r--r--apps/website/src/pages/blog/index.astro30
2 files changed, 55 insertions, 0 deletions
diff --git a/apps/website/src/pages/blog/[...slug].astro b/apps/website/src/pages/blog/[...slug].astro
new file mode 100644
index 0000000..d9995e7
--- /dev/null
+++ b/apps/website/src/pages/blog/[...slug].astro
@@ -0,0 +1,25 @@
+---
+// i hate u astro vscode extensi on/j
+/// <reference types="../../env.d.ts" />
+import { type CollectionEntry, getCollection } from 'astro:content';
+import BlogPost from '../../layouts/BlogPost.astro';
+
+export async function getStaticPaths() {
+ const posts = await getCollection('blog');
+ return posts.map(post => ({
+ params: { slug: post.slug },
+ props: post,
+ }));
+}
+
+type Props = CollectionEntry<'blog'>;
+
+const post = Astro.props;
+const { Content } = await post.render();
+---
+
+<BlogPost {...post.data}>
+ <Content />
+</BlogPost>
+
+
diff --git a/apps/website/src/pages/blog/index.astro b/apps/website/src/pages/blog/index.astro
new file mode 100644
index 0000000..c8f8203
--- /dev/null
+++ b/apps/website/src/pages/blog/index.astro
@@ -0,0 +1,30 @@
+---
+/// <reference types="../../env.d.ts" />
+import Layout from '../../layouts/Layout.astro';
+import FormattedDate from '../../components/base/FormattedDate.astro'
+import { getCollection } from 'astro:content';
+
+const posts = (await getCollection('blog')).sort(
+ (a, b) => a.data.pubDate.valueOf() - b.data.pubDate.valueOf()
+);
+---
+
+<Layout title='Polyfrost Blog' description='Recieve Polyfrost updates here'>
+ <section>
+ <ul>
+ {
+ posts.map(post => (
+ <li>
+ <a href={`blog/${post.slug}/`}>
+ <img width={720} height={360} src={post.data.heroImage} alt="" />
+ <h4 class="title">{post.data.title}</h4>
+ <p class="date">
+ <FormattedDate date={post.data.pubDate} />
+ </p>
+ </a>
+ </li>
+ ))
+ }
+ </ul>
+ </section>
+</Layout>