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