summaryrefslogtreecommitdiffstats
path: root/src/server/content/blog.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/content/blog.ts')
-rw-r--r--src/server/content/blog.ts35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/server/content/blog.ts b/src/server/content/blog.ts
new file mode 100644
index 0000000..373b1ca
--- /dev/null
+++ b/src/server/content/blog.ts
@@ -0,0 +1,35 @@
+import { posts } from "../template/Post.js"
+import Base from "../template/Base.js"
+import { c } from "../template/vdom.js"
+import h from "../template/header.js"
+import relUrl from "../utils/relUrl.js"
+import schema from "../utils/schema.js"
+import metadata from "../metadata.js"
+import { div, article, a, small, time, span, p } from "../template/html.js"
+
+Base({
+ title: "Blog Posts",
+ url: "/blog",
+ content() {
+ return c(div, { itemscope: true, itemtype: schema("Blog"), role: "feed", "aria-busy": "false" },
+ ...posts.map((post, index, { length }) => {
+ const { date_mod, date_pub, title, description, url } = post
+ return c(article, { itemprop: "blogPost", itemscope: true, itemtype: schema("BlogPosting"), "aria-posinset": index, "aria-setsize": length },
+ c(h, { level: 1, itemprop: "headline" }, c(a, { href: relUrl(url), itemprop: "sameAs" }, title)),
+ c(small, {},
+ date_pub != date_mod ? [
+ c(time, { datetime: date_mod.toISOString(), itemprop: "dateModified" }, date_mod.toDateString()),
+ "- Modified "
+ ] : [],
+ c(time, { datetime: date_pub.toISOString(), itemprop: "datePublished" }, date_pub.toDateString())
+ , " - ",
+ c(span, { itemprop: "author", itemscope: true, itemtype: schema("Person") },
+ c(a, { href: metadata.author.url, rel: "author", itemprop: "url" },
+ c(span, { itemprop: "name" }, metadata.author.name))
+ ),
+ ),
+ c(p, { itemprop: "abstract" }, description)
+ )
+ }))
+ }
+}).setupRoute()