From 8482118f662fab69128f614cd871b79d51168f42 Mon Sep 17 00:00:00 2001 From: Dave Smith-Hayes Date: Wed, 11 Dec 2024 21:03:30 -0500 Subject: [PATCH] Start working on a pages feature. --- bun.lockb | Bin 30385 -> 30385 bytes config/site.toml | 1 + src/assets/static/main.css | 17 ++++++++++++++- src/handlers/home.tsx | 6 ++++-- src/services/config.ts | 3 ++- src/services/feed-generator.ts | 6 ++++-- src/templates/Page.tsx | 4 ++++ src/templates/Pages/Home.tsx | 1 - src/templates/components/Navigation.tsx | 27 ++++++++++++++++++++++++ 9 files changed, 58 insertions(+), 7 deletions(-) create mode 100644 src/templates/components/Navigation.tsx diff --git a/bun.lockb b/bun.lockb index bcde76406ad236d50da947c8db91d7ed12949dea..f2ab84241a8ee60974854e542376120882ecbc24 100755 GIT binary patch delta 75 zcmdn^mT}`-#tl<_&CT=-jTv$ii?UNw7#LWCROY%YV9aJ>j59RWGte_;&|_d=5MW?v eFy0xoD=o@=9Z<$d&q&X3@)=)aM#D{h8#MrA02Rjo delta 75 zcmdn^mT}`-#tl<_%}w+SjTv$ii?UNw7#LWCROY%YV9aJ>j59RWGte_)&|_d=5MW?v eFy0xoD=o@=9Z<$d&rr{J@)=)aMuSa$8#Mr9UKPXu diff --git a/config/site.toml b/config/site.toml index f8b225d..eb73e53 100644 --- a/config/site.toml +++ b/config/site.toml @@ -3,6 +3,7 @@ title = "davesmithhayes.com" [owner] name = "Dave Smith-Hayes" email = "me@davesmithhayes.com" +mastadonUrl = "https://hachyderm.io/@davesh" [site] description = "Personal website of Dave Smith-Hayes - a father, developer, and musician." diff --git a/src/assets/static/main.css b/src/assets/static/main.css index f5f8cdb..ceb82a7 100644 --- a/src/assets/static/main.css +++ b/src/assets/static/main.css @@ -1,4 +1,4 @@ -header, footer, main { +header, footer, nav, main { max-width: 800px; margin: 0 auto; padding: 1em; @@ -20,6 +20,21 @@ header .home-link a:visited { color: #00e; } +nav { + border-bottom: 1px solid #ccc; +} +nav ul { + margin: 0; + padding: 0; +} +nav ul li { + display: inline-block; + margin-left: 1em; +} +nav ul li:first-child { + margin-left: 0; +} + footer { border-top: 1px solid #ccc; } diff --git a/src/handlers/home.tsx b/src/handlers/home.tsx index b3fcf74..4e169c9 100644 --- a/src/handlers/home.tsx +++ b/src/handlers/home.tsx @@ -3,6 +3,7 @@ import { Home } from "@blog/templates/Pages/Home"; import { PostMeta } from "@blog/models/PostMeta"; import { Post } from '@blog/models/Post'; import { PostService } from '@blog/services/post-file'; +import { getSiteConfig } from '@blog/services/config'; type Posts = { postService: PostService @@ -11,6 +12,7 @@ type Posts = { const app = new Hono<{ Variables: Posts }>(); app.get("/", async (c) => { + const config = await getSiteConfig(); const postService: PostService = c.get('postService'); const isDev: boolean = process.env.DEPLOY_MODE == 'development'; @@ -22,8 +24,8 @@ app.get("/", async (c) => { return c.render(, { meta: { - description: "The blog for Dave Smith-Hayes, a dad and developer.", - mastodonUrl: "https://hachyderm.io/@davesh" + description: config.site.description, + mastodonUrl: config.owner.mastodonUrl, }, }); }); diff --git a/src/services/config.ts b/src/services/config.ts index e531069..554e76a 100644 --- a/src/services/config.ts +++ b/src/services/config.ts @@ -6,6 +6,7 @@ export type SiteConfig = { owner: { name: string; email: string; + mastodonUrl?: string; }; site: { description: string; @@ -13,7 +14,7 @@ export type SiteConfig = { repo: string; language: string; copyright: string; - } + }; } export async function getSiteConfig(): Promise { diff --git a/src/services/feed-generator.ts b/src/services/feed-generator.ts index 72e113c..a64713f 100644 --- a/src/services/feed-generator.ts +++ b/src/services/feed-generator.ts @@ -22,11 +22,13 @@ export async function getFeed(postService: PostService): Feed { } }); + const fullSlug = (slug) => config.site.url + "/posts/" + slug; + postService.getPublishedPosts().map((post: Post) => { feed.addItem({ title: post.meta.title, - id: post.meta.slug, - link: post.meta.slug, + id: fullSlug(post.meta.slug), + link: fullSlug(post.meta.slug), description: post.meta.description, content: post.html, author: { diff --git a/src/templates/Page.tsx b/src/templates/Page.tsx index 2f4080d..e85e625 100644 --- a/src/templates/Page.tsx +++ b/src/templates/Page.tsx @@ -1,6 +1,7 @@ import { Style } from 'hono/css'; import { SiteMeta } from '@blog/models/SiteMeta'; import { MetaTags } from '@blog/templates/components/MetaTags'; +import { Navigation } from '@blog/templates/components/Navigation'; function getPageTitle(title: string|undefined): string { if (!title) { @@ -25,6 +26,9 @@ export function Page({ children, meta }: { children: any, meta: SiteMeta }) { davesmithhayes.com +
{children}
diff --git a/src/templates/Pages/Home.tsx b/src/templates/Pages/Home.tsx index 07acf82..a81ba13 100644 --- a/src/templates/Pages/Home.tsx +++ b/src/templates/Pages/Home.tsx @@ -4,7 +4,6 @@ import { PostMeta } from '@blog/models/PostMeta'; export function Home({ posts }: { posts: PostMeta[] }) { return (
-

Posts

{posts.length ? :
No posts.
}
); diff --git a/src/templates/components/Navigation.tsx b/src/templates/components/Navigation.tsx new file mode 100644 index 0000000..15ead77 --- /dev/null +++ b/src/templates/components/Navigation.tsx @@ -0,0 +1,27 @@ +type SitemapUrl = { + name: string; + path: string; +}; + +export function Navigation() { + const navigation: SitemapUrl[] = [ + { + name: "Home", + path: "/", + }, + { + name: "About", + path: "/about" + }, + { + name: "RSS", + path: "/feed/rss.xml" + } + ]; + + return ( + + ); +}