From 674fe965550444db87edc7937ff6932e1a918d9d Mon Sep 17 00:00:00 2001 From: nsfisis Date: Fri, 27 Jun 2025 23:39:31 +0900 Subject: feat(meta): rename vhosts/ directory to services/ --- .../blog/nuldoc-src/components/GlobalFooter.tsx | 9 ++++ .../blog/nuldoc-src/components/GlobalHeader.tsx | 27 ++++++++++ services/blog/nuldoc-src/components/PageLayout.tsx | 61 ++++++++++++++++++++++ services/blog/nuldoc-src/components/Pagination.tsx | 45 ++++++++++++++++ .../blog/nuldoc-src/components/PostPageEntry.tsx | 39 ++++++++++++++ .../blog/nuldoc-src/components/SlidePageEntry.tsx | 39 ++++++++++++++ .../blog/nuldoc-src/components/StaticScript.tsx | 18 +++++++ .../nuldoc-src/components/StaticStylesheet.tsx | 11 ++++ services/blog/nuldoc-src/components/utils.ts | 8 +++ 9 files changed, 257 insertions(+) create mode 100644 services/blog/nuldoc-src/components/GlobalFooter.tsx create mode 100644 services/blog/nuldoc-src/components/GlobalHeader.tsx create mode 100644 services/blog/nuldoc-src/components/PageLayout.tsx create mode 100644 services/blog/nuldoc-src/components/Pagination.tsx create mode 100644 services/blog/nuldoc-src/components/PostPageEntry.tsx create mode 100644 services/blog/nuldoc-src/components/SlidePageEntry.tsx create mode 100644 services/blog/nuldoc-src/components/StaticScript.tsx create mode 100644 services/blog/nuldoc-src/components/StaticStylesheet.tsx create mode 100644 services/blog/nuldoc-src/components/utils.ts (limited to 'services/blog/nuldoc-src/components') diff --git a/services/blog/nuldoc-src/components/GlobalFooter.tsx b/services/blog/nuldoc-src/components/GlobalFooter.tsx new file mode 100644 index 00000000..757beced --- /dev/null +++ b/services/blog/nuldoc-src/components/GlobalFooter.tsx @@ -0,0 +1,9 @@ +import { Config } from "../config.ts"; + +export default function GlobalFooter({ config }: { config: Config }) { + return ( + + ); +} diff --git a/services/blog/nuldoc-src/components/GlobalHeader.tsx b/services/blog/nuldoc-src/components/GlobalHeader.tsx new file mode 100644 index 00000000..c0fa7e8b --- /dev/null +++ b/services/blog/nuldoc-src/components/GlobalHeader.tsx @@ -0,0 +1,27 @@ +import { Config } from "../config.ts"; + +export default function GlobalHeader({ config }: { config: Config }) { + return ( +
+
+ {config.blog.siteName} +
+ +
+ ); +} diff --git a/services/blog/nuldoc-src/components/PageLayout.tsx b/services/blog/nuldoc-src/components/PageLayout.tsx new file mode 100644 index 00000000..1cd0aebf --- /dev/null +++ b/services/blog/nuldoc-src/components/PageLayout.tsx @@ -0,0 +1,61 @@ +import { Config } from "../config.ts"; +import { JSXNode } from "myjsx/jsx-runtime"; +import StaticStylesheet from "./StaticStylesheet.tsx"; + +type Props = { + metaCopyrightYear: number; + metaDescription: string; + metaKeywords?: string[]; + metaTitle: string; + metaAtomFeedHref?: string; + requiresSyntaxHighlight?: boolean; + config: Config; + children: JSXNode; +}; + +export default function PageLayout( + { + metaCopyrightYear, + metaDescription, + metaKeywords, + metaTitle, + metaAtomFeedHref, + requiresSyntaxHighlight: _, + config, + children, + }: Props, +) { + return ( + + + + + + + + {metaKeywords && metaKeywords.length !== 0 && + } + + + + + + {metaAtomFeedHref && + ( + + )} + + {metaTitle} + + + {children} + + ); +} diff --git a/services/blog/nuldoc-src/components/Pagination.tsx b/services/blog/nuldoc-src/components/Pagination.tsx new file mode 100644 index 00000000..5527c924 --- /dev/null +++ b/services/blog/nuldoc-src/components/Pagination.tsx @@ -0,0 +1,45 @@ +type Props = { + currentPage: number; + totalPages: number; + basePath: string; +}; + +export default function Pagination( + { currentPage, totalPages, basePath }: Props, +) { + if (totalPages <= 1) { + return
; + } + + const prevPage = currentPage > 1 ? currentPage - 1 : null; + const nextPage = currentPage < totalPages ? currentPage + 1 : null; + + const prevHref = prevPage === 1 ? basePath : `${basePath}${prevPage}/`; + const nextHref = `${basePath}${nextPage}/`; + + return ( + + ); +} diff --git a/services/blog/nuldoc-src/components/PostPageEntry.tsx b/services/blog/nuldoc-src/components/PostPageEntry.tsx new file mode 100644 index 00000000..2708b009 --- /dev/null +++ b/services/blog/nuldoc-src/components/PostPageEntry.tsx @@ -0,0 +1,39 @@ +import { + getPostPublishedDate, + getPostUpdatedDate, + postHasAnyUpdates, + PostPage, +} from "../generators/post.ts"; +import { dateToString } from "../revision.ts"; + +export default function PostPageEntry({ post }: { post: PostPage }) { + return ( + + ); +} 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 ( + + ); +} diff --git a/services/blog/nuldoc-src/components/StaticScript.tsx b/services/blog/nuldoc-src/components/StaticScript.tsx new file mode 100644 index 00000000..0e3ab194 --- /dev/null +++ b/services/blog/nuldoc-src/components/StaticScript.tsx @@ -0,0 +1,18 @@ +import { join } from "@std/path"; +import { Config } from "../config.ts"; +import { calculateFileHash } from "./utils.ts"; + +export default async function StaticScript( + { fileName, type, defer, config }: { + fileName: string; + type?: string; + defer?: "true"; + config: Config; + }, +) { + const filePath = join(Deno.cwd(), config.locations.staticDir, fileName); + const hash = await calculateFileHash(filePath); + return ( + + ); +} diff --git a/services/blog/nuldoc-src/components/StaticStylesheet.tsx b/services/blog/nuldoc-src/components/StaticStylesheet.tsx new file mode 100644 index 00000000..52b695e5 --- /dev/null +++ b/services/blog/nuldoc-src/components/StaticStylesheet.tsx @@ -0,0 +1,11 @@ +import { join } from "@std/path"; +import { Config } from "../config.ts"; +import { calculateFileHash } from "./utils.ts"; + +export default async function StaticStylesheet( + { fileName, config }: { fileName: string; config: Config }, +) { + const filePath = join(Deno.cwd(), config.locations.staticDir, fileName); + const hash = await calculateFileHash(filePath); + return ; +} diff --git a/services/blog/nuldoc-src/components/utils.ts b/services/blog/nuldoc-src/components/utils.ts new file mode 100644 index 00000000..14059b5b --- /dev/null +++ b/services/blog/nuldoc-src/components/utils.ts @@ -0,0 +1,8 @@ +import { Hash } from "checksum/mod.ts"; + +export async function calculateFileHash( + filePath: string, +): Promise { + const content = await Deno.readFile(filePath); + return new Hash("md5").digest(content).hex(); +} -- cgit v1.2.3-70-g09d2