From d1014de68415df8f0a5dc3389332e086119c6198 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Thu, 27 Nov 2025 04:02:06 +0900 Subject: refactor(nuldoc): eliminate JSX --- .../nuldoc/nuldoc-src/components/SlidePageEntry.ts | 49 ++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 services/nuldoc/nuldoc-src/components/SlidePageEntry.ts (limited to 'services/nuldoc/nuldoc-src/components/SlidePageEntry.ts') 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, + ), + ), + ); +} -- cgit v1.2.3-70-g09d2