diff options
Diffstat (limited to 'src/pages')
| -rw-r--r-- | src/pages/blog/[...slug].astro | 20 | ||||
| -rw-r--r-- | src/pages/blog/index.astro | 17 | ||||
| -rw-r--r-- | src/pages/error.astro | 14 | ||||
| -rw-r--r-- | src/pages/index.astro | 11 | ||||
| -rw-r--r-- | src/pages/rss.xml.js | 17 |
5 files changed, 79 insertions, 0 deletions
diff --git a/src/pages/blog/[...slug].astro b/src/pages/blog/[...slug].astro new file mode 100644 index 0000000..800c534 --- /dev/null +++ b/src/pages/blog/[...slug].astro @@ -0,0 +1,20 @@ +--- +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>
\ No newline at end of file diff --git a/src/pages/blog/index.astro b/src/pages/blog/index.astro new file mode 100644 index 0000000..0c617bd --- /dev/null +++ b/src/pages/blog/index.astro @@ -0,0 +1,17 @@ +--- +import BaseHead from '../../components/BaseHead.astro'; +import { SITE_TITLE, SITE_DESCRIPTION } from '../../consts'; +import BlogFeed from '../../components/BlogFeed.astro'; +--- + +<!doctype html> +<html lang="en"> + <head> + <BaseHead title={SITE_TITLE} description={SITE_DESCRIPTION} /> + </head> + <body> + <main> + <BlogFeed headingLevel={1} /> + </main> + </body> +</html> diff --git a/src/pages/error.astro b/src/pages/error.astro new file mode 100644 index 0000000..fc84122 --- /dev/null +++ b/src/pages/error.astro @@ -0,0 +1,14 @@ +--- +import Page from '../layouts/Page.astro'; +--- + +<Page title="Got lost?" description="Error page for Joe's personal website"> + <main> + <h1>Got lost?</h1> + + <p> + If you’re on this page, something’s probably gone wrong. Try going to + my <a href="/">homepage</a> instead. + </p> + </main> +</Page> diff --git a/src/pages/index.astro b/src/pages/index.astro new file mode 100644 index 0000000..74cf934 --- /dev/null +++ b/src/pages/index.astro @@ -0,0 +1,11 @@ +--- +import BlogFeed from '../components/BlogFeed.astro'; +import Me from '../components/Me.astro'; +import { SITE_TITLE, SITE_DESCRIPTION } from '../consts'; +import Page from '../layouts/Page.astro'; +--- + +<Page title={SITE_TITLE} description={SITE_DESCRIPTION}> + <Me /> + <BlogFeed hideAuthor /> +</Page>
\ No newline at end of file diff --git a/src/pages/rss.xml.js b/src/pages/rss.xml.js new file mode 100644 index 0000000..79da596 --- /dev/null +++ b/src/pages/rss.xml.js @@ -0,0 +1,17 @@ +import rss from '@astrojs/rss'; +import { getCollection } from 'astro:content'; +import { SITE_TITLE, SITE_DESCRIPTION } from '../consts'; + +export async function GET(context) { + const posts = await getCollection('blog'); + return rss({ + title: SITE_TITLE, + description: SITE_DESCRIPTION, + site: context.site, + items: posts.map((post) => ({ + ...post.data, + link: `/blog/${post.slug}/`, + pubDate: new Date(post.data.pubDate.year, post.data.pubDate.month - 1, post.data.pubDate.day), + })), + }); +} |
