|
1 | 1 | // @deno-types="https://deno.land/x/types/react/v16.13.1/react.d.ts" |
2 | 2 |
|
3 | 3 | import Sidebar from './_sidebar.js'; |
4 | | -import Gitalk from './_gitalk.js'; |
5 | | -const Layout = ({ config, title, content, script, sidebar, outputPath }) => { |
| 4 | +const Layout = ({ config, title, content, ga, gitalk, script, sidebar, outputPath }) => { |
6 | 5 | const [isDark, setIsDark] = React.useState( |
7 | 6 | // @ts-ignore |
8 | 7 | window.Deno ? false : document.documentElement.classList.contains('is_dark')); |
9 | 8 | return (React.createElement("html", { className: isDark ? 'is_dark' : '' }, |
10 | 9 | React.createElement("head", null, |
11 | | - React.createElement("script", { async: true, src: "https://www.google-analytics.com/analytics.js" }), |
12 | | - React.createElement("script", { dangerouslySetInnerHTML: { |
13 | | - __html: `window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-45256157-14');` |
14 | | - } }), |
| 10 | + ga, |
15 | 11 | React.createElement("title", null, outputPath !== 'index.html' ? `${title} · ${config.title}` : title), |
16 | 12 | React.createElement("meta", { charSet: "utf-8" }), |
17 | | - React.createElement("link", { rel: "shortcut icon", type: "image/png", href: "//xcatliu.github.io/favicon.ico" }), |
18 | | - React.createElement("link", { id: "prismTheme", rel: "stylesheet", href: isDark ? '/assets/prism_tomorrow.css' : '/assets/prism.css' }), |
19 | | - React.createElement("link", { rel: "stylesheet", href: "/assets/index.css" }), |
| 13 | + React.createElement("link", { id: "prismTheme", rel: "stylesheet", href: isDark ? `${config.base}assets/prism_tomorrow.css` : `${config.base}assets/prism.css` }), |
20 | 14 | React.createElement("script", { dangerouslySetInnerHTML: { |
21 | 15 | __html: ` |
22 | 16 | let shouldSetIsDark = document.cookie.includes('is_dark=1') ? true : document.cookie.includes('is_dark=0') ? false : window.matchMedia('(prefers-color-scheme: dark)').matches |
23 | 17 | if (shouldSetIsDark) { |
24 | 18 | document.documentElement.classList.add('is_dark'); |
25 | | - document.getElementById('prismTheme').href = "/assets/prism_tomorrow.css"; |
| 19 | + document.getElementById('prismTheme').href = "${config.base}assets/prism_tomorrow.css"; |
26 | 20 | } |
27 | 21 | ` |
28 | | - } })), |
| 22 | + } }), |
| 23 | + React.createElement("link", { rel: "stylesheet", href: `${config.base}assets/index.css` })), |
29 | 24 | React.createElement("body", null, |
30 | 25 | React.createElement("header", null, |
31 | 26 | React.createElement("h1", null, |
32 | | - React.createElement("a", { href: "/" }, config.title)), |
| 27 | + React.createElement("a", { href: config.base }, config.title)), |
33 | 28 | React.createElement("nav", null, |
34 | 29 | React.createElement("ul", null, |
35 | | - React.createElement("li", null, |
36 | | - React.createElement("a", { href: "https://github.com/xcatliu/typescript-tutorial" }, "GitHub")), |
37 | | - React.createElement("li", null, |
38 | | - React.createElement("a", { href: "https://github.com/xcatliu/buy-me-a-coffee" }, "\u8D5E\u52A9\u4F5C\u8005")), |
39 | | - React.createElement("li", null, |
40 | | - React.createElement("a", { href: "https://github.com/xcatliu/pagic" }, "\u672C\u7F51\u7AD9\u4F7F\u7528 Pagic \u6784\u5EFA")), |
| 30 | + config.nav.map(({ text, link }) => (React.createElement("li", { key: link }, |
| 31 | + React.createElement("a", { href: link }, text)))), |
41 | 32 | React.createElement("li", null, |
42 | 33 | React.createElement("a", { href: "#", onClick: (e) => { |
43 | 34 | e.preventDefault(); |
44 | 35 | setIsDark(!isDark); |
45 | 36 | // @ts-ignore |
46 | 37 | document.cookie = `is_dark=${!isDark ? '1' : '0'}; expires=Tue, 19 Jun 2038 03:14:07 UTC; path=/`; |
47 | 38 | } }, isDark ? '关闭黑暗模式' : '开启黑暗模式'))))), |
48 | | - React.createElement(Sidebar, { sidebar: sidebar, outputPath: outputPath }), |
| 39 | + React.createElement(Sidebar, { sidebar: sidebar, outputPath: outputPath, config: config }), |
49 | 40 | React.createElement("section", { className: "main" }, |
50 | 41 | content, |
51 | | - React.createElement(Gitalk, { clientID: "29aa4941759fc887ed4f", clientSecret: "33e355efdf3a1959624506a5d88311145208471b", repo: "typescript-tutorial", owner: "xcatliu", admin: ['xcatliu'], id: outputPath, title: title })), |
| 42 | + gitalk), |
52 | 43 | script))); |
53 | 44 | }; |
54 | 45 | export default Layout; |
0 commit comments