diff options
| author | nsfisis <nsfisis@gmail.com> | 2025-01-12 22:17:44 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2025-01-12 22:17:44 +0900 |
| commit | b14dd149e1b5f75bc494623181b19970ef830dec (patch) | |
| tree | dfff5ee9b9a9e16680fda5cba36e5c817eda1f9e /vhosts/blog/nuldoc-src/components/PageLayout.tsx | |
| parent | aecf316775c995f089012d8fec5c5cc77f6300be (diff) | |
| parent | 16182acfcc1fad2885b9c1a96fe74d8ce56a50e0 (diff) | |
| download | nsfisis.dev-b14dd149e1b5f75bc494623181b19970ef830dec.tar.gz nsfisis.dev-b14dd149e1b5f75bc494623181b19970ef830dec.tar.zst nsfisis.dev-b14dd149e1b5f75bc494623181b19970ef830dec.zip | |
Merge branch 'feature/blog-nuldoc-jsx'
Diffstat (limited to 'vhosts/blog/nuldoc-src/components/PageLayout.tsx')
| -rw-r--r-- | vhosts/blog/nuldoc-src/components/PageLayout.tsx | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/vhosts/blog/nuldoc-src/components/PageLayout.tsx b/vhosts/blog/nuldoc-src/components/PageLayout.tsx new file mode 100644 index 00000000..c7145e0a --- /dev/null +++ b/vhosts/blog/nuldoc-src/components/PageLayout.tsx @@ -0,0 +1,63 @@ +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 ( + <html lang="ja-JP"> + <head> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <meta name="author" content={config.blog.author} /> + <meta + name="copyright" + content={`© ${metaCopyrightYear} ${config.blog.author}`} + /> + <meta name="description" content={metaDescription} /> + {metaKeywords && metaKeywords.length !== 0 && + <meta name="keywords" content={metaKeywords.join(",")} />} + <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.blog.siteName} /> + <meta property="og:locale" content="ja_JP" /> + {metaAtomFeedHref && + ( + <link + rel="alternate" + href={metaAtomFeedHref} + type="application/atom+xml" + /> + )} + <link rel="icon" href="/favicon.svg" type="image/svg+xml" /> + <title>{metaTitle}</title> + <StaticStylesheet fileName="/style.css" config={config} /> + {requiresSyntaxHighlight && + <StaticStylesheet fileName="/hl.css" config={config} />} + </head> + {children} + </html> + ); +} |
