themes/hugo-coder/layouts/_default/baseof.html

ebd004a13c00a0d7cd7601db62f68b710e6c3e73 · 8.1 KB · 198 lines raw

1 <!DOCTYPE html>
2 <html lang="{{ .Site.Language.Lang }}">
3
4 <head>
5 <meta charset="utf-8">
6 <meta name="viewport" content="width=device-width, initial-scale=1.0">
7 <meta http-equiv="Content-Language" content="{{ .Site.Language.Lang }}">
8 <meta name="color-scheme" content="light dark">
9
10 {{ if .Site.Params.csp }}
11 {{ partial "csp.html" . }}
12 {{ end }}
13
14 {{ with .Site.Params.author }}<meta name="author" content="{{ . }}">{{ end }}
15 <meta name="description" content="{{ .Description | default (.Summary | default .Site.Params.description ) }}">
16 <meta name="keywords" content="{{ (delimit .Keywords ",") | default .Site.Params.keywords }}">
17
18 {{ template "_internal/twitter_cards.html" . }}
19 {{ template "_internal/opengraph.html" . }}
20
21 <title>{{ block "title" . }}{{ .Site.Title }}{{ end }}</title>
22
23 {{ if .Permalink }}
24 <link rel="canonical" href="{{ .Permalink }}">
25 {{ end }}
26
27 <link rel="preload" href="/fonts/forkawesome-webfont.woff2?v=1.2.0" as="font" type="font/woff2" crossorigin>
28
29 {{ if .Site.IsServer }}
30 {{ $cssOpts := (dict "targetPath" "css/coder.css" "enableSourceMap" true ) }}
31 {{ $styles := resources.Get "scss/coder.scss" | resources.ExecuteAsTemplate "style.coder.css" . | toCSS $cssOpts }}
32 <link rel="stylesheet" href="{{ $styles.RelPermalink }}" media="screen">
33 {{ else }}
34 {{ $cssOpts := (dict "targetPath" "css/coder.css" ) }}
35 {{ $styles := resources.Get "scss/coder.scss" | resources.ExecuteAsTemplate "style.coder.css" . | toCSS $cssOpts | minify | fingerprint }}
36 <link rel="stylesheet" href="{{ $styles.RelPermalink }}" integrity="{{ $styles.Data.Integrity }}" crossorigin="anonymous" media="screen" />
37 {{ end }}
38
39 {{ if .Site.Params.rtl }}
40 {{ if .Site.IsServer }}
41 {{ $cssOpts := (dict "targetPath" "css/coder-rtl.css" "enableSourceMap" true ) }}
42 {{ $styles := resources.Get "scss/coder-rtl.scss" | resources.ExecuteAsTemplate "style.coder-rtl.css" . | toCSS $cssOpts }}
43 <link rel="stylesheet" href="{{ $styles.RelPermalink }}" media="screen">
44 {{ else }}
45 {{ $cssOpts := (dict "targetPath" "css/coder-rtl.css" ) }}
46 {{ $styles := resources.Get "scss/coder-rtl.scss" | resources.ExecuteAsTemplate "style.coder-rtl.css" . | toCSS $cssOpts | minify | fingerprint }}
47 <link rel="stylesheet" href="{{ $styles.RelPermalink }}" integrity="{{ $styles.Data.Integrity }}" crossorigin="anonymous" media="screen" />
48 {{ end }}
49 {{ end }}
50
51 {{ if or (eq .Site.Params.colorScheme "auto") (eq .Site.Params.colorScheme "dark") }}
52 {{ if .Site.IsServer }}
53 {{ $cssOpts := (dict "targetPath" "css/coder-dark.css" "enableSourceMap" true ) }}
54 {{ $styles := resources.Get "scss/coder-dark.scss" | resources.ExecuteAsTemplate "style.coder-dark.css" . | toCSS $cssOpts }}
55 <link rel="stylesheet" href="{{ $styles.RelPermalink }}" media="screen">
56 {{ else }}
57 {{ $cssOpts := (dict "targetPath" "css/coder-dark.css" ) }}
58 {{ $styles := resources.Get "scss/coder-dark.scss" | resources.ExecuteAsTemplate "style.coder-dark.css" . | toCSS $cssOpts | minify | fingerprint }}
59 <link rel="stylesheet" href="{{ $styles.RelPermalink }}" integrity="{{ $styles.Data.Integrity }}" crossorigin="anonymous" media="screen" />
60 {{ end }}
61 {{ end }}
62
63 {{ range .Site.Params.customCSS }}
64 <link rel="stylesheet" href="{{ . | relURL }}" />
65 {{ end }}
66
67 {{ range .Site.Params.customSCSS }}
68 {{/* We don't change the targetPath to because it's transparent to users */}}
69 {{ if $.Site.IsServer }}
70 {{ $cssOpts := (dict "enableSourceMap" true ) }}
71 {{ $styles := resources.Get . | toCSS $cssOpts }}
72 <link rel="stylesheet" href="{{ $styles.RelPermalink }}" media="screen">
73 {{ else }}
74 {{ $styles := resources.Get . | toCSS | minify | fingerprint }}
75 <link rel="stylesheet" href="{{ $styles.RelPermalink }}" integrity="{{ $styles.Data.Integrity }}" crossorigin="anonymous" media="screen" />
76 {{ end }}
77 {{ end }}
78
79 <link rel="icon" type="image/png" href="{{ .Site.Params.favicon_32 | default "/images/favicon-32x32.png" | relURL }}" sizes="32x32">
80 <link rel="icon" type="image/png" href="{{ .Site.Params.favicon_16 | default "/images/favicon-16x16.png" | relURL }}" sizes="16x16">
81
82 <link rel="apple-touch-icon" href="{{ .Site.Params.touchicon | default "/images/apple-touch-icon.png" | relURL }}">
83 <link rel="apple-touch-icon" sizes="180x180" href="{{ .Site.Params.touchicon | default "/images/apple-touch-icon.png" | relURL }}">
84
85 {{ range .AlternativeOutputFormats -}}
86 {{ printf `<link rel="%s" type="%s" href="%s" title="%s" />` .Rel .MediaType.Type .RelPermalink $.Site.Title | safeHTML }}
87 {{ end -}}
88
89 {{ if .Site.Params.enableTwemoji }}
90 <script defer src="https://twemoji.maxcdn.com/v/13.0.2/twemoji.min.js"
91 integrity="sha384-wyB/MspSJ/r2bT2kCj44qtsYRYlpzO2oAPhRj5myrWD63dt6qWv4x8AZe7Fl3K3b" crossorigin="anonymous"></script>
92 {{ end }}
93
94 {{ hugo.Generator }}
95 </head>
96
97 {{ $csClass := "colorscheme-light" }}
98 {{ if eq .Site.Params.colorScheme "dark" }}
99 {{ $csClass = "colorscheme-dark" }}
100 {{ else if eq .Site.Params.colorScheme "auto" }}
101 {{ $csClass = "colorscheme-auto" }}
102 {{ end }}
103 <body class="preload-transitions {{ $csClass }}{{ if .Site.Params.rtl }} rtl{{ end }}"
104 onload="{{ if .Site.Params.enableTwemoji }} twemoji.parse(document.body); {{ end }}"
105 >
106 <!--
107 <div id=fireworksContainer style="position: fixed; left: 0; top: 0; width: 100%; height: 100%; z-index: 2; pointer-events: none;"></div>
108 -->
109 {{ partial "float" . }}
110 <main class="wrapper">
111 {{ partial "header.html" . }}
112
113 <div class="content" style="z-index: 3;">
114 {{ block "content" . }}{{ end }}
115 </div>
116
117 {{ partial "footer.html" . }}
118 </main>
119
120 {{ if .Site.IsServer }}
121 {{ $script := resources.Get "js/coder.js" }}
122 <script src="{{ $script.RelPermalink }}"></script>
123 {{ else }}
124 {{ $script := resources.Get "js/coder.js" | minify | fingerprint }}
125 <script src="{{ $script.RelPermalink }}" integrity="{{ $script.Data.Integrity }}"></script>
126 {{ end }}
127
128 {{ range .Site.Params.customJS }}
129 <script src="{{ . | relURL }}"></script>
130 {{ end }}
131
132 {{ template "_internal/google_analytics.html" . }}
133
134 {{ if and .Site.Params.fathomAnalytics .Site.Params.fathomAnalytics.siteID }}
135 {{- partial "analytics/fathom" . -}}
136 {{ end }}
137
138 {{ if and .Site.Params.plausibleAnalytics .Site.Params.plausibleAnalytics.domain }}
139 {{- partial "analytics/plausible" . -}}
140 {{ end }}
141
142 {{ if and .Site.Params.goatCounter .Site.Params.goatCounter.code }}
143 {{- partial "analytics/goatcounter" . -}}
144 {{ end }}
145
146 {{ if and .Site.Params.cloudflare .Site.Params.cloudflare.token }}
147 {{- partial "analytics/cloudflare" . -}}
148 {{ end }}
149
150 {{ if and .Site.Params.matomo .Site.Params.matomo.serverURL }}
151 {{- partial "analytics/matomo" . -}}
152 {{ end }}
153
154 {{ if and .Site.Params.googleTagManager .Site.Params.googleTagManager.id }}
155 {{- partial "analytics/googletagmanager" . -}}
156 {{ end }}
157 <!--
158 {{ if eq .URL "/" }}
159 <script src="https://cdn.jsdelivr.net/npm/fireworks-js@latest/dist/fireworks.js"></script>
160 <script>
161 const c = document.querySelector("#fireworksContainer")
162 const f = new Fireworks(c, {
163 "hue": {
164 "min": 0,
165 "max": 345
166 },
167 "delay": {
168 "min": 15,
169 "max": 20
170 },
171 "rocketsPoint": 27,
172 "opacity": 0.5,
173 "speed": 15,
174 "acceleration": 1.1,
175 "friction": 0.97,
176 "gravity": 1.5,
177 "particles": 150,
178 "trace": 6,
179 "explosion": 7,
180 "autoresize": true,
181 "brightness": {
182 "min": 50,
183 "max": 80,
184 "decay": {
185 "min": 0.015,
186 "max": 0.03
187 }
188 },
189 })
190 f._randomRocketsPoint = true
191 f.start()
192 </script>
193 {{ end }}
194 -->
195 <script src="//cdnjs.cloudflare.com/ajax/libs/Snowstorm/20131208/snowstorm-min.js"></script>
196 <script>snowStorm.followMouse = false;</script>
197 </body>
198 </html>