summaryrefslogtreecommitdiffhomepage
path: root/vhosts/blog/nuldoc-src/pages
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-06-27 23:39:31 +0900
committernsfisis <nsfisis@gmail.com>2025-06-27 23:39:31 +0900
commit674fe965550444db87edc7937ff6932e1a918d9d (patch)
treee8a80dd958d3e082485286bf5785a7992b6e6b0e /vhosts/blog/nuldoc-src/pages
parentfe4d1d625b53796c5f20399790e5ff8c7a7e1608 (diff)
downloadnsfisis.dev-674fe965550444db87edc7937ff6932e1a918d9d.tar.gz
nsfisis.dev-674fe965550444db87edc7937ff6932e1a918d9d.tar.zst
nsfisis.dev-674fe965550444db87edc7937ff6932e1a918d9d.zip
feat(meta): rename vhosts/ directory to services/
Diffstat (limited to 'vhosts/blog/nuldoc-src/pages')
-rw-r--r--vhosts/blog/nuldoc-src/pages/AboutPage.tsx110
-rw-r--r--vhosts/blog/nuldoc-src/pages/AtomPage.tsx26
-rw-r--r--vhosts/blog/nuldoc-src/pages/HomePage.tsx53
-rw-r--r--vhosts/blog/nuldoc-src/pages/NotFoundPage.tsx27
-rw-r--r--vhosts/blog/nuldoc-src/pages/PostListPage.tsx54
-rw-r--r--vhosts/blog/nuldoc-src/pages/PostPage.tsx66
-rw-r--r--vhosts/blog/nuldoc-src/pages/SlideListPage.tsx42
-rw-r--r--vhosts/blog/nuldoc-src/pages/SlidePage.tsx72
-rw-r--r--vhosts/blog/nuldoc-src/pages/TagListPage.tsx57
-rw-r--r--vhosts/blog/nuldoc-src/pages/TagPage.tsx43
10 files changed, 0 insertions, 550 deletions
diff --git a/vhosts/blog/nuldoc-src/pages/AboutPage.tsx b/vhosts/blog/nuldoc-src/pages/AboutPage.tsx
deleted file mode 100644
index 3d6583a4..00000000
--- a/vhosts/blog/nuldoc-src/pages/AboutPage.tsx
+++ /dev/null
@@ -1,110 +0,0 @@
-import GlobalFooter from "../components/GlobalFooter.tsx";
-import GlobalHeader from "../components/GlobalHeader.tsx";
-import PageLayout from "../components/PageLayout.tsx";
-import StaticScript from "../components/StaticScript.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 AboutPage(
- slides: SlidePage[],
- config: Config,
-) {
- return (
- <PageLayout
- metaCopyrightYear={config.blog.siteCopyrightYear}
- metaDescription="このサイトの著者について"
- metaTitle={`About|${config.blog.siteName}`}
- config={config}
- >
- <body className="single">
- <GlobalHeader config={config} />
- <main className="main">
- <article className="post-single">
- <header className="post-header">
- <h1 className="post-title">nsfisis</h1>
- <div className="my-icon">
- <div id="myIcon">
- <img src="/favicon.svg" />
- </div>
- <StaticScript
- fileName="/my-icon.js"
- defer="true"
- config={config}
- />
- </div>
- </header>
- <div className="post-content">
- <section>
- <h2>読み方</h2>
- <p>
- 読み方は決めていません。音にする必要があるときは本名である「いまむら」をお使いください。
- </p>
- </section>
- <section>
- <h2>アカウント</h2>
- <ul>
- <li>
- <a
- href="https://twitter.com/nsfisis"
- target="_blank"
- rel="noreferrer"
- >
- Twitter (現 𝕏): @nsfisis
- </a>
- </li>
- <li>
- <a
- href="https://github.com/nsfisis"
- target="_blank"
- rel="noreferrer"
- >
- GitHub: @nsfisis
- </a>
- </li>
- </ul>
- </section>
- <section>
- <h2>仕事</h2>
- <ul>
- <li>
- {"2021-01~現在: "}
- <a
- href="https://www.dgcircus.com/"
- target="_blank"
- rel="noreferrer"
- >
- デジタルサーカス株式会社
- </a>
- </li>
- </ul>
- </section>
- <section>
- <h2>登壇</h2>
- <ul>
- {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) => (
- <li>
- <a href={slide.href}>
- {`${
- dateToString(getPostPublishedDate(slide))
- }: ${slide.event} (${slide.talkType})`}
- </a>
- </li>
- ))}
- </ul>
- </section>
- </div>
- </article>
- </main>
- <GlobalFooter config={config} />
- </body>
- </PageLayout>
- );
-}
diff --git a/vhosts/blog/nuldoc-src/pages/AtomPage.tsx b/vhosts/blog/nuldoc-src/pages/AtomPage.tsx
deleted file mode 100644
index 21c3bfaf..00000000
--- a/vhosts/blog/nuldoc-src/pages/AtomPage.tsx
+++ /dev/null
@@ -1,26 +0,0 @@
-import { Feed } from "../generators/atom.ts";
-
-export default function AtomPage({ feed }: { feed: Feed }) {
- return (
- <feed xmlns="http://www.w3.org/2005/Atom">
- <id>{feed.id}</id>
- <title>{feed.title}</title>
- <link rel="alternate" href={feed.linkToAlternate} />
- <link rel="self" href={feed.linkToSelf} />
- <author>
- <name>{feed.author}</name>
- </author>
- <updated>{feed.updated}</updated>
- {feed.entries.map((entry) => (
- <entry>
- <id>{entry.id}</id>
- <link rel="alternate" href={entry.linkToAlternate} />
- <title>{entry.title}</title>
- <summary>{entry.summary}</summary>
- <published>{entry.published}</published>
- <updated>{entry.updated}</updated>
- </entry>
- ))}
- </feed>
- );
-}
diff --git a/vhosts/blog/nuldoc-src/pages/HomePage.tsx b/vhosts/blog/nuldoc-src/pages/HomePage.tsx
deleted file mode 100644
index 8850d039..00000000
--- a/vhosts/blog/nuldoc-src/pages/HomePage.tsx
+++ /dev/null
@@ -1,53 +0,0 @@
-import GlobalFooter from "../components/GlobalFooter.tsx";
-import GlobalHeader from "../components/GlobalHeader.tsx";
-import PageLayout from "../components/PageLayout.tsx";
-import { Config } from "../config.ts";
-
-export default function HomePage(config: Config) {
- return (
- <PageLayout
- metaCopyrightYear={config.blog.siteCopyrightYear}
- metaDescription="nsfisis のブログサイト"
- metaTitle={config.blog.siteName}
- metaAtomFeedHref={`https://${config.blog.fqdn}/atom.xml`}
- config={config}
- >
- <body className="single">
- <GlobalHeader config={config} />
- <main className="main">
- <article className="post-single">
- <article className="post-entry">
- <a href="/about/">
- <header className="entry-header">
- <h2>About</h2>
- </header>
- </a>
- </article>
- <article className="post-entry">
- <a href="/posts/">
- <header className="entry-header">
- <h2>Posts</h2>
- </header>
- </a>
- </article>
- <article className="post-entry">
- <a href="/slides/">
- <header className="entry-header">
- <h2>Slides</h2>
- </header>
- </a>
- </article>
- <article className="post-entry">
- <a href="/tags/">
- <header className="entry-header">
- <h2>Tags</h2>
- </header>
- </a>
- </article>
- </article>
- </main>
- <GlobalFooter config={config} />
- </body>
- </PageLayout>
- );
-}
diff --git a/vhosts/blog/nuldoc-src/pages/NotFoundPage.tsx b/vhosts/blog/nuldoc-src/pages/NotFoundPage.tsx
deleted file mode 100644
index 9631fef2..00000000
--- a/vhosts/blog/nuldoc-src/pages/NotFoundPage.tsx
+++ /dev/null
@@ -1,27 +0,0 @@
-import GlobalFooter from "../components/GlobalFooter.tsx";
-import GlobalHeader from "../components/GlobalHeader.tsx";
-import PageLayout from "../components/PageLayout.tsx";
-import { Config } from "../config.ts";
-
-export default function NotFoundPage(
- config: Config,
-) {
- return (
- <PageLayout
- metaCopyrightYear={config.blog.siteCopyrightYear}
- metaDescription="リクエストされたページが見つかりません"
- metaTitle={`Page Not Found|${config.blog.siteName}`}
- config={config}
- >
- <body className="single">
- <GlobalHeader config={config} />
- <main className="main">
- <article>
- <div className="not-found">404</div>
- </article>
- </main>
- <GlobalFooter config={config} />
- </body>
- </PageLayout>
- );
-}
diff --git a/vhosts/blog/nuldoc-src/pages/PostListPage.tsx b/vhosts/blog/nuldoc-src/pages/PostListPage.tsx
deleted file mode 100644
index 054955e6..00000000
--- a/vhosts/blog/nuldoc-src/pages/PostListPage.tsx
+++ /dev/null
@@ -1,54 +0,0 @@
-import GlobalFooter from "../components/GlobalFooter.tsx";
-import GlobalHeader from "../components/GlobalHeader.tsx";
-import PageLayout from "../components/PageLayout.tsx";
-import Pagination from "../components/Pagination.tsx";
-import PostPageEntry from "../components/PostPageEntry.tsx";
-import { Config } from "../config.ts";
-import { PostPage } from "../generators/post.ts";
-
-export default function PostListPage(
- posts: PostPage[],
- config: Config,
- currentPage: number,
- totalPages: number,
-) {
- const pageTitle = "投稿一覧";
-
- const pageInfoSuffix = ` (${currentPage}ページ目)`;
- const metaTitle = `${pageTitle}${pageInfoSuffix}|${config.blog.siteName}`;
- const metaDescription = `投稿した記事の一覧${pageInfoSuffix}`;
-
- return (
- <PageLayout
- metaCopyrightYear={config.blog.siteCopyrightYear}
- metaDescription={metaDescription}
- metaTitle={metaTitle}
- metaAtomFeedHref={`https://${config.blog.fqdn}/posts/atom.xml`}
- config={config}
- >
- <body className="list">
- <GlobalHeader config={config} />
- <main className="main">
- <header className="page-header">
- <h1>{pageTitle}{pageInfoSuffix}</h1>
- </header>
-
- <Pagination
- currentPage={currentPage}
- totalPages={totalPages}
- basePath="/posts/"
- />
-
- {posts.map((post) => <PostPageEntry post={post} key={post.uuid} />)}
-
- <Pagination
- currentPage={currentPage}
- totalPages={totalPages}
- basePath="/posts/"
- />
- </main>
- <GlobalFooter config={config} />
- </body>
- </PageLayout>
- );
-}
diff --git a/vhosts/blog/nuldoc-src/pages/PostPage.tsx b/vhosts/blog/nuldoc-src/pages/PostPage.tsx
deleted file mode 100644
index 97a24048..00000000
--- a/vhosts/blog/nuldoc-src/pages/PostPage.tsx
+++ /dev/null
@@ -1,66 +0,0 @@
-import GlobalFooter from "../components/GlobalFooter.tsx";
-import GlobalHeader from "../components/GlobalHeader.tsx";
-import PageLayout from "../components/PageLayout.tsx";
-import { Config, getTagLabel } from "../config.ts";
-import { Element } from "../dom.ts";
-import { Document } from "../djot/document.ts";
-import { dateToString } from "../revision.ts";
-import { getPostPublishedDate } from "../generators/post.ts";
-
-export default function PostPage(
- doc: Document,
- config: Config,
-) {
- return (
- <PageLayout
- metaCopyrightYear={getPostPublishedDate(doc).year}
- metaDescription={doc.description}
- metaKeywords={doc.tags.map((slug) => getTagLabel(config, slug))}
- metaTitle={`${doc.title}|${config.blog.siteName}`}
- requiresSyntaxHighlight
- config={config}
- >
- <body className="single">
- <GlobalHeader config={config} />
- <main className="main">
- <article className="post-single">
- <header className="post-header">
- <h1 className="post-title">{doc.title}</h1>
- {doc.tags.length !== 0 && (
- <ul className="post-tags">
- {doc.tags.map((slug) => (
- <li className="tag">
- <a href={`/tags/${slug}/`}>{getTagLabel(config, slug)}</a>
- </li>
- ))}
- </ul>
- )}
- </header>
- <div className="post-content">
- <section id="changelog">
- <h2>
- <a href="#changelog">更新履歴</a>
- </h2>
- <ol>
- {doc.revisions.map((rev) => (
- <li className="revision">
- <time datetime={dateToString(rev.date)}>
- {dateToString(rev.date)}
- </time>
- {`: ${rev.remark}`}
- </li>
- ))}
- </ol>
- </section>
- {
- // TODO: refactor
- (doc.root.children[0] as Element).children
- }
- </div>
- </article>
- </main>
- <GlobalFooter config={config} />
- </body>
- </PageLayout>
- );
-}
diff --git a/vhosts/blog/nuldoc-src/pages/SlideListPage.tsx b/vhosts/blog/nuldoc-src/pages/SlideListPage.tsx
deleted file mode 100644
index 3d87d492..00000000
--- a/vhosts/blog/nuldoc-src/pages/SlideListPage.tsx
+++ /dev/null
@@ -1,42 +0,0 @@
-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} key={slide.uuid} />)}
- </main>
- <GlobalFooter config={config} />
- </body>
- </PageLayout>
- );
-}
diff --git a/vhosts/blog/nuldoc-src/pages/SlidePage.tsx b/vhosts/blog/nuldoc-src/pages/SlidePage.tsx
deleted file mode 100644
index fc11072d..00000000
--- a/vhosts/blog/nuldoc-src/pages/SlidePage.tsx
+++ /dev/null
@@ -1,72 +0,0 @@
-import GlobalFooter from "../components/GlobalFooter.tsx";
-import GlobalHeader from "../components/GlobalHeader.tsx";
-import PageLayout from "../components/PageLayout.tsx";
-import StaticScript from "../components/StaticScript.tsx";
-import { Config, getTagLabel } from "../config.ts";
-import { dateToString } from "../revision.ts";
-import { Slide } from "../slide/slide.ts";
-import { getPostPublishedDate } from "../generators/post.ts";
-
-export default function SlidePage(
- slide: Slide,
- config: Config,
-) {
- return (
- <PageLayout
- metaCopyrightYear={getPostPublishedDate(slide).year}
- metaDescription={slide.title}
- metaKeywords={slide.tags.map((slug) => getTagLabel(config, slug))}
- metaTitle={`${slide.event} (${slide.talkType})|${config.blog.siteName}`}
- requiresSyntaxHighlight
- config={config}
- >
- <body className="single">
- <GlobalHeader config={config} />
- <main className="main">
- <article className="post-single">
- <header className="post-header">
- <h1 className="post-title">{slide.title}</h1>
- {slide.tags.length !== 0 && (
- <ul className="post-tags">
- {slide.tags.map((slug) => (
- <li className="tag">
- <a href={`/tags/${slug}/`}>{getTagLabel(config, slug)}</a>
- </li>
- ))}
- </ul>
- )}
- </header>
- <div className="post-content">
- <section id="changelog">
- <h2>
- <a href="#changelog">更新履歴</a>
- </h2>
- <ol>
- {slide.revisions.map((rev) => (
- <li className="revision">
- <time datetime={dateToString(rev.date)}>
- {dateToString(rev.date)}
- </time>
- {`: ${rev.remark}`}
- </li>
- ))}
- </ol>
- </section>
- <canvas id="slide" data-slide-link={slide.slideLink} />
- <div>
- <button id="prev" type="button">Prev</button>
- <button id="next" type="button">Next</button>
- </div>
- <StaticScript
- fileName="/slide.js"
- type="module"
- config={config}
- />
- </div>
- </article>
- </main>
- <GlobalFooter config={config} />
- </body>
- </PageLayout>
- );
-}
diff --git a/vhosts/blog/nuldoc-src/pages/TagListPage.tsx b/vhosts/blog/nuldoc-src/pages/TagListPage.tsx
deleted file mode 100644
index cdb83ea5..00000000
--- a/vhosts/blog/nuldoc-src/pages/TagListPage.tsx
+++ /dev/null
@@ -1,57 +0,0 @@
-import GlobalFooter from "../components/GlobalFooter.tsx";
-import GlobalHeader from "../components/GlobalHeader.tsx";
-import PageLayout from "../components/PageLayout.tsx";
-import { Config } from "../config.ts";
-import { TagPage } from "../generators/tag.ts";
-
-export default function TagListPage(
- tags: TagPage[],
- config: Config,
-) {
- const pageTitle = "タグ一覧";
-
- return (
- <PageLayout
- metaCopyrightYear={config.blog.siteCopyrightYear}
- metaDescription="タグの一覧"
- metaTitle={`${pageTitle}|${config.blog.siteName}`}
- config={config}
- >
- <body className="list">
- <GlobalHeader config={config} />
- <main className="main">
- <header className="page-header">
- <h1>{pageTitle}</h1>
- </header>
- {Array.from(tags).sort((a, b) => {
- const ta = a.tagSlug;
- const tb = b.tagSlug;
- if (ta < tb) return -1;
- if (ta > tb) return 1;
- return 0;
- }).map((tag) => (
- <article className="post-entry">
- <a href={tag.href}>
- <header className="entry-header">
- <h2>{tag.tagLabel}</h2>
- </header>
- <footer className="entry-footer">
- {(() => {
- const posts = tag.numOfPosts === 0
- ? ""
- : `${tag.numOfPosts}件の記事`;
- const slides = tag.numOfSlides === 0
- ? ""
- : `${tag.numOfSlides}件のスライド`;
- return `${posts}${posts && slides ? "、" : ""}${slides}`;
- })()}
- </footer>
- </a>
- </article>
- ))}
- </main>
- <GlobalFooter config={config} />
- </body>
- </PageLayout>
- );
-}
diff --git a/vhosts/blog/nuldoc-src/pages/TagPage.tsx b/vhosts/blog/nuldoc-src/pages/TagPage.tsx
deleted file mode 100644
index 02c484af..00000000
--- a/vhosts/blog/nuldoc-src/pages/TagPage.tsx
+++ /dev/null
@@ -1,43 +0,0 @@
-import GlobalFooter from "../components/GlobalFooter.tsx";
-import GlobalHeader from "../components/GlobalHeader.tsx";
-import PageLayout from "../components/PageLayout.tsx";
-import PostPageEntry from "../components/PostPageEntry.tsx";
-import SlidePageEntry from "../components/SlidePageEntry.tsx";
-import { Config, getTagLabel } from "../config.ts";
-import { getPostPublishedDate } from "../generators/post.ts";
-import { TaggedPage } from "../generators/tagged_page.ts";
-
-export default function TagPage(
- tagSlug: string,
- pages: TaggedPage[],
- config: Config,
-) {
- const tagLabel = getTagLabel(config, tagSlug);
- const pageTitle = `タグ「${tagLabel}」一覧`;
-
- return (
- <PageLayout
- metaCopyrightYear={getPostPublishedDate(pages[pages.length - 1]).year}
- metaDescription={`タグ「${tagLabel}」のついた記事またはスライドの一覧`}
- metaKeywords={[tagLabel]}
- metaTitle={`${pageTitle}|${config.blog.siteName}`}
- metaAtomFeedHref={`https://${config.blog.fqdn}/tags/${tagSlug}/atom.xml`}
- config={config}
- >
- <body className="list">
- <GlobalHeader config={config} />
- <main className="main">
- <header className="page-header">
- <h1>{pageTitle}</h1>
- </header>
- {pages.map((page) =>
- "event" in page
- ? <SlidePageEntry slide={page} key={page.uuid} />
- : <PostPageEntry post={page} key={page.uuid} />
- )}
- </main>
- <GlobalFooter config={config} />
- </body>
- </PageLayout>
- );
-}