aboutsummaryrefslogtreecommitdiffhomepage
path: root/services/nuldoc/nuldoc-src/components
diff options
context:
space:
mode:
Diffstat (limited to 'services/nuldoc/nuldoc-src/components')
-rw-r--r--services/nuldoc/nuldoc-src/components/AboutGlobalHeader.ts11
-rw-r--r--services/nuldoc/nuldoc-src/components/BlogGlobalHeader.ts28
-rw-r--r--services/nuldoc/nuldoc-src/components/DefaultGlobalHeader.ts11
-rw-r--r--services/nuldoc/nuldoc-src/components/GlobalFooter.ts5
-rw-r--r--services/nuldoc/nuldoc-src/components/PageLayout.ts30
-rw-r--r--services/nuldoc/nuldoc-src/components/Pagination.ts29
-rw-r--r--services/nuldoc/nuldoc-src/components/PostPageEntry.ts28
-rw-r--r--services/nuldoc/nuldoc-src/components/SlidePageEntry.ts28
-rw-r--r--services/nuldoc/nuldoc-src/components/SlidesGlobalHeader.ts26
-rw-r--r--services/nuldoc/nuldoc-src/components/StaticScript.ts4
-rw-r--r--services/nuldoc/nuldoc-src/components/StaticStylesheet.ts4
-rw-r--r--services/nuldoc/nuldoc-src/components/TableOfContents.ts18
-rw-r--r--services/nuldoc/nuldoc-src/components/TagList.ts7
13 files changed, 106 insertions, 123 deletions
diff --git a/services/nuldoc/nuldoc-src/components/AboutGlobalHeader.ts b/services/nuldoc/nuldoc-src/components/AboutGlobalHeader.ts
index b6ef84c..df43793 100644
--- a/services/nuldoc/nuldoc-src/components/AboutGlobalHeader.ts
+++ b/services/nuldoc/nuldoc-src/components/AboutGlobalHeader.ts
@@ -1,15 +1,12 @@
import { Config } from "../config.ts";
-import { elem, Element } from "../dom.ts";
+import { a, div, Element, header } from "../dom.ts";
export default function GlobalHeader({ config }: { config: Config }): Element {
- return elem(
- "header",
+ return header(
{ class: "header" },
- elem(
- "div",
+ div(
{ class: "site-logo" },
- elem(
- "a",
+ a(
{ href: `https://${config.sites.default.fqdn}/` },
"nsfisis.dev",
),
diff --git a/services/nuldoc/nuldoc-src/components/BlogGlobalHeader.ts b/services/nuldoc/nuldoc-src/components/BlogGlobalHeader.ts
index 034c2ab..ae0fc13 100644
--- a/services/nuldoc/nuldoc-src/components/BlogGlobalHeader.ts
+++ b/services/nuldoc/nuldoc-src/components/BlogGlobalHeader.ts
@@ -1,33 +1,27 @@
import { Config } from "../config.ts";
-import { elem, Element } from "../dom.ts";
+import { a, div, Element, header, li, nav, ul } from "../dom.ts";
export default function GlobalHeader({ config }: { config: Config }): Element {
- return elem(
- "header",
+ return header(
{ class: "header" },
- elem(
- "div",
+ div(
{ class: "site-logo" },
- elem(
- "a",
+ a(
{ href: `https://${config.sites.default.fqdn}/` },
"nsfisis.dev",
),
),
- elem("div", { class: "site-name" }, config.sites.blog.siteName),
- elem(
- "nav",
+ div({ class: "site-name" }, config.sites.blog.siteName),
+ nav(
{ class: "nav" },
- elem(
- "ul",
+ ul(
{},
- elem(
- "li",
+ li(
{},
- elem("a", { href: `https://${config.sites.about.fqdn}/` }, "About"),
+ a({ href: `https://${config.sites.about.fqdn}/` }, "About"),
),
- elem("li", {}, elem("a", { href: "/posts/" }, "Posts")),
- elem("li", {}, elem("a", { href: "/tags/" }, "Tags")),
+ li({}, a({ href: "/posts/" }, "Posts")),
+ li({}, a({ href: "/tags/" }, "Tags")),
),
),
);
diff --git a/services/nuldoc/nuldoc-src/components/DefaultGlobalHeader.ts b/services/nuldoc/nuldoc-src/components/DefaultGlobalHeader.ts
index b6ef84c..df43793 100644
--- a/services/nuldoc/nuldoc-src/components/DefaultGlobalHeader.ts
+++ b/services/nuldoc/nuldoc-src/components/DefaultGlobalHeader.ts
@@ -1,15 +1,12 @@
import { Config } from "../config.ts";
-import { elem, Element } from "../dom.ts";
+import { a, div, Element, header } from "../dom.ts";
export default function GlobalHeader({ config }: { config: Config }): Element {
- return elem(
- "header",
+ return header(
{ class: "header" },
- elem(
- "div",
+ div(
{ class: "site-logo" },
- elem(
- "a",
+ a(
{ href: `https://${config.sites.default.fqdn}/` },
"nsfisis.dev",
),
diff --git a/services/nuldoc/nuldoc-src/components/GlobalFooter.ts b/services/nuldoc/nuldoc-src/components/GlobalFooter.ts
index 835d73f..313a01c 100644
--- a/services/nuldoc/nuldoc-src/components/GlobalFooter.ts
+++ b/services/nuldoc/nuldoc-src/components/GlobalFooter.ts
@@ -1,9 +1,8 @@
import { Config } from "../config.ts";
-import { elem, Element } from "../dom.ts";
+import { Element, footer } from "../dom.ts";
export default function GlobalFooter({ config }: { config: Config }): Element {
- return elem(
- "footer",
+ return footer(
{ class: "footer" },
`© ${config.site.copyrightYear} ${config.site.author}`,
);
diff --git a/services/nuldoc/nuldoc-src/components/PageLayout.ts b/services/nuldoc/nuldoc-src/components/PageLayout.ts
index 19a8e86..f970c0b 100644
--- a/services/nuldoc/nuldoc-src/components/PageLayout.ts
+++ b/services/nuldoc/nuldoc-src/components/PageLayout.ts
@@ -1,5 +1,5 @@
import { Config } from "../config.ts";
-import { elem, Element, Node } from "../dom.ts";
+import { elem, Element, link, meta, Node } from "../dom.ts";
import StaticStylesheet from "./StaticStylesheet.ts";
type Props = {
@@ -33,37 +33,37 @@ export default async function PageLayout(
elem(
"head",
{},
- elem("meta", { charset: "UTF-8" }),
- elem("meta", {
+ meta({ charset: "UTF-8" }),
+ meta({
name: "viewport",
content: "width=device-width, initial-scale=1.0",
}),
- elem("meta", { name: "author", content: config.site.author }),
- elem("meta", {
+ meta({ name: "author", content: config.site.author }),
+ meta({
name: "copyright",
content: `© ${metaCopyrightYear} ${config.site.author}`,
}),
- elem("meta", { name: "description", content: metaDescription }),
+ meta({ name: "description", content: metaDescription }),
metaKeywords && metaKeywords.length !== 0
- ? elem("meta", { name: "keywords", content: metaKeywords.join(",") })
+ ? meta({ name: "keywords", content: metaKeywords.join(",") })
: null,
- elem("meta", { property: "og:type", content: "article" }),
- elem("meta", { property: "og:title", content: metaTitle }),
- elem("meta", { property: "og:description", content: metaDescription }),
- elem("meta", {
+ meta({ property: "og:type", content: "article" }),
+ meta({ property: "og:title", content: metaTitle }),
+ meta({ property: "og:description", content: metaDescription }),
+ meta({
property: "og:site_name",
content: config.sites[site].siteName,
}),
- elem("meta", { property: "og:locale", content: "ja_JP" }),
- elem("meta", { name: "Hatena::Bookmark", content: "nocomment" }),
+ meta({ property: "og:locale", content: "ja_JP" }),
+ meta({ name: "Hatena::Bookmark", content: "nocomment" }),
metaAtomFeedHref
- ? elem("link", {
+ ? link({
rel: "alternate",
href: metaAtomFeedHref,
type: "application/atom+xml",
})
: null,
- elem("link", {
+ link({
rel: "icon",
href: "/favicon.svg",
type: "image/svg+xml",
diff --git a/services/nuldoc/nuldoc-src/components/Pagination.ts b/services/nuldoc/nuldoc-src/components/Pagination.ts
index 62e796b..d920316 100644
--- a/services/nuldoc/nuldoc-src/components/Pagination.ts
+++ b/services/nuldoc/nuldoc-src/components/Pagination.ts
@@ -1,4 +1,4 @@
-import { elem, Element } from "../dom.ts";
+import { a, div, Element, nav, span } from "../dom.ts";
type Props = {
currentPage: number;
@@ -10,43 +10,38 @@ export default function Pagination(
{ currentPage, totalPages, basePath }: Props,
): Element {
if (totalPages <= 1) {
- return elem("div", {});
+ return div({});
}
const pages = generatePageNumbers(currentPage, totalPages);
- return elem(
- "nav",
+ return nav(
{ class: "pagination" },
- elem(
- "div",
+ div(
{ class: "pagination-prev" },
currentPage > 1
- ? elem("a", { href: pageUrlAt(basePath, currentPage - 1) }, "前へ")
+ ? a({ href: pageUrlAt(basePath, currentPage - 1) }, "前へ")
: null,
),
...pages.map((page) => {
if (page === "...") {
- return elem("div", { class: "pagination-elipsis" }, "…");
+ return div({ class: "pagination-elipsis" }, "…");
} else if (page === currentPage) {
- return elem(
- "div",
+ return div(
{ class: "pagination-page pagination-page-current" },
- elem("span", {}, String(page)),
+ span({}, String(page)),
);
} else {
- return elem(
- "div",
+ return div(
{ class: "pagination-page" },
- elem("a", { href: pageUrlAt(basePath, page) }, String(page)),
+ a({ href: pageUrlAt(basePath, page) }, String(page)),
);
}
}),
- elem(
- "div",
+ div(
{ class: "pagination-next" },
currentPage < totalPages
- ? elem("a", { href: pageUrlAt(basePath, currentPage + 1) }, "次へ")
+ ? a({ href: pageUrlAt(basePath, currentPage + 1) }, "次へ")
: null,
),
);
diff --git a/services/nuldoc/nuldoc-src/components/PostPageEntry.ts b/services/nuldoc/nuldoc-src/components/PostPageEntry.ts
index 75ad11c..482a3a8 100644
--- a/services/nuldoc/nuldoc-src/components/PostPageEntry.ts
+++ b/services/nuldoc/nuldoc-src/components/PostPageEntry.ts
@@ -6,26 +6,32 @@ import {
} from "../generators/post.ts";
import { dateToString } from "../revision.ts";
import { Config } from "../config.ts";
-import { elem, Element } from "../dom.ts";
+import {
+ a,
+ article,
+ elem,
+ Element,
+ footer,
+ h2,
+ header,
+ p,
+ section,
+} from "../dom.ts";
import TagList from "./TagList.ts";
type Props = { post: PostPage; config: Config };
export default function PostPageEntry({ post, config }: Props): Element {
- return elem(
- "article",
+ return article(
{ class: "post-entry" },
- elem(
- "a",
+ a(
{ href: post.href },
- elem("header", { class: "entry-header" }, elem("h2", {}, post.title)),
- elem(
- "section",
+ header({ class: "entry-header" }, h2({}, post.title)),
+ section(
{ class: "entry-content" },
- elem("p", {}, post.description),
+ p({}, post.description),
),
- elem(
- "footer",
+ footer(
{ class: "entry-footer" },
elem(
"time",
diff --git a/services/nuldoc/nuldoc-src/components/SlidePageEntry.ts b/services/nuldoc/nuldoc-src/components/SlidePageEntry.ts
index 1dc5f1a..f14a537 100644
--- a/services/nuldoc/nuldoc-src/components/SlidePageEntry.ts
+++ b/services/nuldoc/nuldoc-src/components/SlidePageEntry.ts
@@ -6,26 +6,32 @@ import {
import { SlidePage } from "../generators/slide.ts";
import { dateToString } from "../revision.ts";
import { Config } from "../config.ts";
-import { elem, Element } from "../dom.ts";
+import {
+ a,
+ article,
+ elem,
+ Element,
+ footer,
+ h2,
+ header,
+ p,
+ section,
+} from "../dom.ts";
import TagList from "./TagList.ts";
type Props = { slide: SlidePage; config: Config };
export default function SlidePageEntry({ slide, config }: Props): Element {
- return elem(
- "article",
+ return article(
{ class: "post-entry" },
- elem(
- "a",
+ a(
{ href: slide.href },
- elem(
- "header",
+ header(
{ class: "entry-header" },
- elem("h2", {}, slide.description),
+ h2({}, slide.description),
),
- elem("section", { class: "entry-content" }, elem("p", {}, slide.title)),
- elem(
- "footer",
+ section({ class: "entry-content" }, p({}, slide.title)),
+ footer(
{ class: "entry-footer" },
elem(
"time",
diff --git a/services/nuldoc/nuldoc-src/components/SlidesGlobalHeader.ts b/services/nuldoc/nuldoc-src/components/SlidesGlobalHeader.ts
index 902e12f..666ca0e 100644
--- a/services/nuldoc/nuldoc-src/components/SlidesGlobalHeader.ts
+++ b/services/nuldoc/nuldoc-src/components/SlidesGlobalHeader.ts
@@ -1,32 +1,26 @@
import { Config } from "../config.ts";
-import { elem, Element } from "../dom.ts";
+import { a, div, Element, header, li, nav, ul } from "../dom.ts";
export default function GlobalHeader({ config }: { config: Config }): Element {
- return elem(
- "header",
+ return header(
{ class: "header" },
- elem(
- "div",
+ div(
{ class: "site-logo" },
- elem(
- "a",
+ a(
{ href: `https://${config.sites.default.fqdn}/` },
"nsfisis.dev",
),
),
- elem(
- "nav",
+ nav(
{ class: "nav" },
- elem(
- "ul",
+ ul(
{},
- elem(
- "li",
+ li(
{},
- elem("a", { href: `https://${config.sites.about.fqdn}/` }, "About"),
+ a({ href: `https://${config.sites.about.fqdn}/` }, "About"),
),
- elem("li", {}, elem("a", { href: "/slides/" }, "Slides")),
- elem("li", {}, elem("a", { href: "/tags/" }, "Tags")),
+ li({}, a({ href: "/slides/" }, "Slides")),
+ li({}, a({ href: "/tags/" }, "Tags")),
),
),
);
diff --git a/services/nuldoc/nuldoc-src/components/StaticScript.ts b/services/nuldoc/nuldoc-src/components/StaticScript.ts
index 7df40fd..b8dc95d 100644
--- a/services/nuldoc/nuldoc-src/components/StaticScript.ts
+++ b/services/nuldoc/nuldoc-src/components/StaticScript.ts
@@ -1,6 +1,6 @@
import { join } from "@std/path";
import { Config } from "../config.ts";
-import { elem, Element } from "../dom.ts";
+import { Element, script } from "../dom.ts";
import { calculateFileHash } from "./utils.ts";
export default async function StaticScript(
@@ -16,5 +16,5 @@ export default async function StaticScript(
const attrs: Record<string, string> = { src: `${fileName}?h=${hash}` };
if (type) attrs.type = type;
if (defer) attrs.defer = defer;
- return elem("script", attrs);
+ return script(attrs);
}
diff --git a/services/nuldoc/nuldoc-src/components/StaticStylesheet.ts b/services/nuldoc/nuldoc-src/components/StaticStylesheet.ts
index 43802d2..065ee20 100644
--- a/services/nuldoc/nuldoc-src/components/StaticStylesheet.ts
+++ b/services/nuldoc/nuldoc-src/components/StaticStylesheet.ts
@@ -1,6 +1,6 @@
import { join } from "@std/path";
import { Config } from "../config.ts";
-import { elem, Element } from "../dom.ts";
+import { Element, link } from "../dom.ts";
import { calculateFileHash } from "./utils.ts";
export default async function StaticStylesheet(
@@ -8,5 +8,5 @@ export default async function StaticStylesheet(
): Promise<Element> {
const filePath = join(Deno.cwd(), config.locations.staticDir, fileName);
const hash = await calculateFileHash(filePath);
- return elem("link", { rel: "stylesheet", href: `${fileName}?h=${hash}` });
+ return link({ rel: "stylesheet", href: `${fileName}?h=${hash}` });
}
diff --git a/services/nuldoc/nuldoc-src/components/TableOfContents.ts b/services/nuldoc/nuldoc-src/components/TableOfContents.ts
index 37796ff..1eb79e9 100644
--- a/services/nuldoc/nuldoc-src/components/TableOfContents.ts
+++ b/services/nuldoc/nuldoc-src/components/TableOfContents.ts
@@ -1,17 +1,15 @@
import { TocEntry, TocRoot } from "../markdown/document.ts";
-import { elem, Element } from "../dom.ts";
+import { a, Element, h2, li, nav, ul } from "../dom.ts";
type Props = {
toc: TocRoot;
};
export default function TableOfContents({ toc }: Props): Element {
- return elem(
- "nav",
+ return nav(
{ class: "toc" },
- elem("h2", {}, "目次"),
- elem(
- "ul",
+ h2({}, "目次"),
+ ul(
{},
...toc.entries.map((entry) => TocEntryComponent({ entry })),
),
@@ -19,13 +17,11 @@ export default function TableOfContents({ toc }: Props): Element {
}
function TocEntryComponent({ entry }: { entry: TocEntry }): Element {
- return elem(
- "li",
+ return li(
{},
- elem("a", { href: `#${entry.id}` }, entry.text),
+ a({ href: `#${entry.id}` }, entry.text),
entry.children.length > 0
- ? elem(
- "ul",
+ ? ul(
{},
...entry.children.map((child) => TocEntryComponent({ entry: child })),
)
diff --git a/services/nuldoc/nuldoc-src/components/TagList.ts b/services/nuldoc/nuldoc-src/components/TagList.ts
index 540abe6..7260c53 100644
--- a/services/nuldoc/nuldoc-src/components/TagList.ts
+++ b/services/nuldoc/nuldoc-src/components/TagList.ts
@@ -1,5 +1,5 @@
import { Config, getTagLabel } from "../config.ts";
-import { elem, Element, text } from "../dom.ts";
+import { Element, li, text, ul } from "../dom.ts";
type Props = {
tags: string[];
@@ -7,11 +7,10 @@ type Props = {
};
export default function TagList({ tags, config }: Props): Element {
- return elem(
- "ul",
+ return ul(
{ class: "entry-tags" },
...tags.map((slug) =>
- elem("li", { class: "tag" }, text(getTagLabel(config, slug)))
+ li({ class: "tag" }, text(getTagLabel(config, slug)))
),
);
}