aboutsummaryrefslogtreecommitdiffhomepage
path: root/services/nuldoc/nuldoc-src/components/PostPageEntry.ts
diff options
context:
space:
mode:
Diffstat (limited to 'services/nuldoc/nuldoc-src/components/PostPageEntry.ts')
-rw-r--r--services/nuldoc/nuldoc-src/components/PostPageEntry.ts49
1 files changed, 49 insertions, 0 deletions
diff --git a/services/nuldoc/nuldoc-src/components/PostPageEntry.ts b/services/nuldoc/nuldoc-src/components/PostPageEntry.ts
new file mode 100644
index 0000000..75ad11c
--- /dev/null
+++ b/services/nuldoc/nuldoc-src/components/PostPageEntry.ts
@@ -0,0 +1,49 @@
+import {
+ getPostPublishedDate,
+ getPostUpdatedDate,
+ postHasAnyUpdates,
+ PostPage,
+} from "../generators/post.ts";
+import { dateToString } from "../revision.ts";
+import { Config } from "../config.ts";
+import { elem, Element } from "../dom.ts";
+import TagList from "./TagList.ts";
+
+type Props = { post: PostPage; config: Config };
+
+export default function PostPageEntry({ post, config }: Props): Element {
+ return elem(
+ "article",
+ { class: "post-entry" },
+ elem(
+ "a",
+ { href: post.href },
+ elem("header", { class: "entry-header" }, elem("h2", {}, post.title)),
+ elem(
+ "section",
+ { class: "entry-content" },
+ elem("p", {}, post.description),
+ ),
+ elem(
+ "footer",
+ { class: "entry-footer" },
+ elem(
+ "time",
+ { datetime: dateToString(getPostPublishedDate(post)) },
+ dateToString(getPostPublishedDate(post)),
+ ),
+ " 投稿",
+ postHasAnyUpdates(post) ? "、" : null,
+ postHasAnyUpdates(post)
+ ? elem(
+ "time",
+ { datetime: dateToString(getPostUpdatedDate(post)) },
+ dateToString(getPostUpdatedDate(post)),
+ )
+ : null,
+ postHasAnyUpdates(post) ? " 更新" : null,
+ post.tags.length !== 0 ? TagList({ tags: post.tags, config }) : null,
+ ),
+ ),
+ );
+}