From 16182acfcc1fad2885b9c1a96fe74d8ce56a50e0 Mon Sep 17 00:00:00 2001
From: nsfisis <nsfisis@gmail.com>
Date: Sun, 12 Jan 2025 21:59:55 +0900
Subject: refactor(blog/nuldoc): separate pages/* to pages/* and generators/*

---
 vhosts/blog/nuldoc-src/pages/SlideListPage.tsx | 42 ++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)
 create mode 100644 vhosts/blog/nuldoc-src/pages/SlideListPage.tsx

(limited to 'vhosts/blog/nuldoc-src/pages/SlideListPage.tsx')

diff --git a/vhosts/blog/nuldoc-src/pages/SlideListPage.tsx b/vhosts/blog/nuldoc-src/pages/SlideListPage.tsx
new file mode 100644
index 00000000..44d6afff
--- /dev/null
+++ b/vhosts/blog/nuldoc-src/pages/SlideListPage.tsx
@@ -0,0 +1,42 @@
+import GlobalFooter from "../components/GlobalFooter.tsx";
+import GlobalHeader from "../components/GlobalHeader.tsx";
+import PageLayout from "../components/PageLayout.tsx";
+import SlidePageEntry from "../components/SlidePageEntry.tsx";
+import { Config } from "../config.ts";
+import { dateToString } from "../revision.ts";
+import { getPostPublishedDate } from "../generators/post.ts";
+import { SlidePage } from "../generators/slide.ts";
+
+export default function SlideListPage(
+  slides: SlidePage[],
+  config: Config,
+) {
+  const pageTitle = "スライド一覧";
+
+  return (
+    <PageLayout
+      metaCopyrightYear={config.blog.siteCopyrightYear}
+      metaDescription="登壇したイベントで使用したスライドの一覧"
+      metaTitle={`${pageTitle}｜${config.blog.siteName}`}
+      metaAtomFeedHref={`https://${config.blog.fqdn}/slides/atom.xml`}
+      config={config}
+    >
+      <body className="list">
+        <GlobalHeader config={config} />
+        <main className="main">
+          <header className="page-header">
+            <h1>{pageTitle}</h1>
+          </header>
+          {Array.from(slides).sort((a, b) => {
+            const ta = dateToString(getPostPublishedDate(a));
+            const tb = dateToString(getPostPublishedDate(b));
+            if (ta > tb) return -1;
+            if (ta < tb) return 1;
+            return 0;
+          }).map((slide) => <SlidePageEntry slide={slide} />)}
+        </main>
+        <GlobalFooter config={config} />
+      </body>
+    </PageLayout>
+  );
+}
-- 
cgit v1.2.3-70-g09d2

