From 674fe965550444db87edc7937ff6932e1a918d9d Mon Sep 17 00:00:00 2001
From: nsfisis <nsfisis@gmail.com>
Date: Fri, 27 Jun 2025 23:39:31 +0900
Subject: feat(meta): rename vhosts/ directory to services/

---
 .../blog/nuldoc-src/components/SlidePageEntry.tsx  | 39 ++++++++++++++++++++++
 1 file changed, 39 insertions(+)
 create mode 100644 services/blog/nuldoc-src/components/SlidePageEntry.tsx

(limited to 'services/blog/nuldoc-src/components/SlidePageEntry.tsx')

diff --git a/services/blog/nuldoc-src/components/SlidePageEntry.tsx b/services/blog/nuldoc-src/components/SlidePageEntry.tsx
new file mode 100644
index 00000000..d2cf9a17
--- /dev/null
+++ b/services/blog/nuldoc-src/components/SlidePageEntry.tsx
@@ -0,0 +1,39 @@
+import {
+  getPostPublishedDate,
+  getPostUpdatedDate,
+  postHasAnyUpdates,
+} from "../generators/post.ts";
+import { SlidePage } from "../generators/slide.ts";
+import { dateToString } from "../revision.ts";
+
+export default function SlidePageEntry({ slide }: { slide: SlidePage }) {
+  return (
+    <article className="post-entry">
+      <a href={slide.href}>
+        <header className="entry-header">
+          <h2>{slide.description}</h2>
+        </header>
+        <section className="entry-content">
+          <p>{slide.title}</p>
+        </section>
+        <footer className="entry-footer">
+          <time datetime={dateToString(getPostPublishedDate(slide))}>
+            {dateToString(getPostPublishedDate(slide))}
+          </time>
+          {" 登壇"}
+          {
+            // TODO(jsx): support Fragment and merge them.
+            postHasAnyUpdates(slide) && "、"
+          }
+          {postHasAnyUpdates(slide) &&
+            (
+              <time datetime={dateToString(getPostUpdatedDate(slide))}>
+                {dateToString(getPostUpdatedDate(slide))}
+              </time>
+            )}
+          {postHasAnyUpdates(slide) && " 更新"}
+        </footer>
+      </a>
+    </article>
+  );
+}
-- 
cgit v1.2.3-70-g09d2

