diff options
Diffstat (limited to 'src/server/content/blog.ts')
-rw-r--r-- | src/server/content/blog.ts | 35 |
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() |