diff options
Diffstat (limited to 'services/nuldoc/nuldoc-src/pages/SlideListPage.ts')
| -rw-r--r-- | services/nuldoc/nuldoc-src/pages/SlideListPage.ts | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/services/nuldoc/nuldoc-src/pages/SlideListPage.ts b/services/nuldoc/nuldoc-src/pages/SlideListPage.ts new file mode 100644 index 0000000..9a1c2b2 --- /dev/null +++ b/services/nuldoc/nuldoc-src/pages/SlideListPage.ts @@ -0,0 +1,45 @@ +import GlobalFooter from "../components/GlobalFooter.ts"; +import GlobalHeader from "../components/SlidesGlobalHeader.ts"; +import PageLayout from "../components/PageLayout.ts"; +import SlidePageEntry from "../components/SlidePageEntry.ts"; +import { Config } from "../config.ts"; +import { dateToString } from "../revision.ts"; +import { getPostPublishedDate } from "../generators/post.ts"; +import { SlidePage } from "../generators/slide.ts"; +import { elem, Element } from "../dom.ts"; + +export default async function SlideListPage( + slides: SlidePage[], + config: Config, +): Promise<Element> { + const pageTitle = "スライド一覧"; + + return await PageLayout({ + metaCopyrightYear: config.site.copyrightYear, + metaDescription: "登壇したイベントで使用したスライドの一覧", + metaTitle: `${pageTitle}|${config.sites.slides.siteName}`, + metaAtomFeedHref: `https://${config.sites.slides.fqdn}/slides/atom.xml`, + site: "slides", + config, + children: elem( + "body", + { class: "list" }, + GlobalHeader({ config }), + elem( + "main", + { class: "main" }, + elem("header", { class: "page-header" }, elem("h1", {}, pageTitle)), + ...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, config })), + ), + GlobalFooter({ config }), + ), + }); +} |
