Numerous improvements and bug fixes.
- Refactored themes to always load with just a single file. This avoids a round trip on each request. - Locally load font when available on the system, then try to load the woff2 file, then fall back to regular woff. - Update markup to use relative urls where it is safe. RSS feeds still use absolute URLs. - Only set og:image:(height/width) when using the standard color icon. - Fixed styles on the pagination buttons. - Added ability to switch font to Source Code Pro (useSourceCodePro). - Added yellow theme. - Added grey theme. - Bold and remove underline for active page in header. - Removed markdownify on summary. - Only display date if present.
@ -23,7 +23,7 @@
|
||||
|
||||
## Features
|
||||
|
||||
- **5 duotone themes**, depending on your preferences (orange is default, red, blue, green, pink)
|
||||
- **6 duotone themes**, depending on your preferences (orange is default, red, blue, green, pink, yellow, and grey)
|
||||
- [**Fira Code**](https://github.com/tonsky/FiraCode) as default monospaced font. It's gorgeous!
|
||||
- **really nice duotone**, custom syntax highlighting based on [**PrismJS**](https://prismjs.com)
|
||||
- fully responsive
|
||||
@ -121,7 +121,7 @@ paginate = 5
|
||||
# the list of set content will show up on your index page (baseurl).
|
||||
contentTypeName = "posts"
|
||||
|
||||
# ["orange", "blue", "red", "green", "pink"]
|
||||
# ["orange", "blue", "red", "green", "pink", "yellow", "grey"]
|
||||
themeColor = "orange"
|
||||
|
||||
# if you set this to 0, only submenu trigger will be visible
|
||||
@ -165,6 +165,9 @@ paginate = 5
|
||||
# can be overridden in a page's front-matter
|
||||
# TocTitle = "Table of Contents" # default
|
||||
|
||||
# use Source Code Pro instead of Fira Code
|
||||
# useSourceCodePro = true
|
||||
|
||||
|
||||
[params.twitter]
|
||||
# set Twitter handles for Twitter cards
|
||||
|
8
assets/css/color/blue-scp.css
Normal file
@ -0,0 +1,8 @@
|
||||
@import '../style-scp.css';
|
||||
|
||||
:root {
|
||||
--accent: #23B0FF;
|
||||
--background: color-mod(var(--accent) blend(#1D1E28 98%));
|
||||
--color: white;
|
||||
--border-color: rgba(255, 255, 255, .1);
|
||||
}
|
@ -1,10 +1,4 @@
|
||||
@import '../main.css';
|
||||
@import '../header.css';
|
||||
@import '../logo.css';
|
||||
@import '../pagination.css';
|
||||
@import '../post.css';
|
||||
@import '../syntax.css';
|
||||
@import '../variables.css';
|
||||
@import '../style.css';
|
||||
|
||||
:root {
|
||||
--accent: #23B0FF;
|
||||
|
8
assets/css/color/green-scp.css
Normal file
@ -0,0 +1,8 @@
|
||||
@import '../style-scp.css';
|
||||
|
||||
:root {
|
||||
--accent: #78E2A0;
|
||||
--background: color-mod(var(--accent) blend(#1D1E28 98%));
|
||||
--color: white;
|
||||
--border-color: rgba(255, 255, 255, .1);
|
||||
}
|
@ -1,10 +1,4 @@
|
||||
@import '../main.css';
|
||||
@import '../header.css';
|
||||
@import '../logo.css';
|
||||
@import '../pagination.css';
|
||||
@import '../post.css';
|
||||
@import '../syntax.css';
|
||||
@import '../variables.css';
|
||||
@import '../style.css';
|
||||
|
||||
:root {
|
||||
--accent: #78E2A0;
|
||||
|
8
assets/css/color/grey-scp.css
Normal file
@ -0,0 +1,8 @@
|
||||
@import '../style-scp.css';
|
||||
|
||||
:root {
|
||||
--accent: lightgrey;
|
||||
--background: color-mod(var(--accent) blend(#1D1E28 98%));
|
||||
--color: white;
|
||||
--border-color: rgba(255, 255, 255, .1);
|
||||
}
|
8
assets/css/color/grey.css
Normal file
@ -0,0 +1,8 @@
|
||||
@import '../style.css';
|
||||
|
||||
:root {
|
||||
--accent: lightgrey;
|
||||
--background: color-mod(var(--accent) blend(#1D1E28 98%));
|
||||
--color: white;
|
||||
--border-color: rgba(255, 255, 255, .1);
|
||||
}
|
1
assets/css/color/orange-scp.css
Normal file
@ -0,0 +1 @@
|
||||
@import '../style-scp.css';
|
1
assets/css/color/orange.css
Normal file
@ -0,0 +1 @@
|
||||
@import '../style.css';
|
8
assets/css/color/pink-scp.css
Normal file
@ -0,0 +1,8 @@
|
||||
@import '../style-scp.css';
|
||||
|
||||
:root {
|
||||
--accent: #EE72F1;
|
||||
--background: color-mod(var(--accent) blend(#1D1E28 98%));
|
||||
--color: white;
|
||||
--border-color: rgba(255, 255, 255, .1);
|
||||
}
|
@ -1,10 +1,4 @@
|
||||
@import '../main.css';
|
||||
@import '../header.css';
|
||||
@import '../logo.css';
|
||||
@import '../pagination.css';
|
||||
@import '../post.css';
|
||||
@import '../syntax.css';
|
||||
@import '../variables.css';
|
||||
@import '../style.css';
|
||||
|
||||
:root {
|
||||
--accent: #EE72F1;
|
||||
|
8
assets/css/color/red-scp.css
Normal file
@ -0,0 +1,8 @@
|
||||
@import '../style-scp.css';
|
||||
|
||||
:root {
|
||||
--accent: #FF6266;
|
||||
--background: color-mod(var(--accent) blend(#1D1E28 98%));
|
||||
--color: white;
|
||||
--border-color: rgba(255, 255, 255, .1);
|
||||
}
|
@ -1,10 +1,4 @@
|
||||
@import '../main.css';
|
||||
@import '../header.css';
|
||||
@import '../logo.css';
|
||||
@import '../pagination.css';
|
||||
@import '../post.css';
|
||||
@import '../syntax.css';
|
||||
@import '../variables.css';
|
||||
@import '../style.css';
|
||||
|
||||
:root {
|
||||
--accent: #FF6266;
|
||||
|
8
assets/css/color/yellow-scp.css
Normal file
@ -0,0 +1,8 @@
|
||||
@import '../style-scp.css';
|
||||
|
||||
:root {
|
||||
--accent: #ffe658;
|
||||
--background: color-mod(var(--accent) blend(#1D1E28 98%));
|
||||
--color: white;
|
||||
--border-color: rgba(255, 255, 255, .1);
|
||||
}
|
8
assets/css/color/yellow.css
Normal file
@ -0,0 +1,8 @@
|
||||
@import '../style.css';
|
||||
|
||||
:root {
|
||||
--accent: #ffe658;
|
||||
--background: color-mod(var(--accent) blend(#1D1E28 98%));
|
||||
--color: white;
|
||||
--border-color: rgba(255, 255, 255, .1);
|
||||
}
|
39
assets/css/font-scp.css
Normal file
@ -0,0 +1,39 @@
|
||||
@font-face {
|
||||
font-display: swap;
|
||||
font-family: 'Source Code Pro';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
src: local("Source Code Pro") url("/assets/fonts/SourceCodePro-Light.otf.woff2") format("woff2") url("/assets/fonts/SourceCodePro-Light.otf.woff") format("woff");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-display: swap;
|
||||
font-family: 'Source Code Pro';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local("Source Code Pro") url("/assets/fonts/SourceCodePro-Regular.otf.woff2") format("woff2") url("/assets/fonts/SourceCodePro-Regular.otf.woff") format("woff");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-display: swap;
|
||||
font-family: 'Source Code Pro';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: local("Source Code Pro") url("/assets/fonts/SourceCodePro-Bold.otf.woff2") format("woff2") url("/assets/fonts/SourceCodePro-Bold.otf.woff") format("woff");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'Source Code Pro', Monaco, Consolas, Ubuntu Mono, monospace;
|
||||
}
|
||||
|
||||
code,
|
||||
kbd {
|
||||
font-family: 'Source Code Pro', Monaco, Consolas, Ubuntu Mono, monospace !important;
|
||||
}
|
||||
|
||||
.post-content {
|
||||
font-weight: 300;
|
||||
}
|
@ -3,7 +3,7 @@
|
||||
font-family: 'Fira Code';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url("../fonts/FiraCode-Regular.woff") format("woff");
|
||||
src: local("Fira Code") url("/assets/fonts/FiraCode-Regular.woff2") format("woff2") url("/assets/fonts/FiraCode-Regular.woff") format("woff");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@ -11,7 +11,16 @@
|
||||
font-display: swap;
|
||||
font-family: 'Fira Code';
|
||||
font-style: normal;
|
||||
font-weight: 800;
|
||||
src: url("../fonts/FiraCode-Bold.woff") format("woff");
|
||||
font-weight: 700;
|
||||
src: local("Fira Code") url("/assets/fonts/FiraCode-Bold.woff2") format("woff2") url("/assets/fonts/FiraCode-Bold.woff") format("woff");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace;
|
||||
}
|
||||
|
||||
code,
|
||||
kbd {
|
||||
font-family: 'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace !important;
|
||||
}
|
@ -49,6 +49,11 @@
|
||||
--shadow: 0 10px var(--shadow-color), -10px 10px var(--shadow-color), 10px 10px var(--shadow-color);
|
||||
margin: 20px 1px;
|
||||
|
||||
a.active {
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
@media (--phone) {
|
||||
@mixin menu;
|
||||
top: 50px;
|
||||
|
@ -11,10 +11,9 @@ html {
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-family: 'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace;
|
||||
font-size: 1rem;
|
||||
line-height: 1.54;
|
||||
letter-spacing: -0.02em;
|
||||
letter-spacing: 0;
|
||||
background-color: color-mod(var(--accent) blend(#1D1E28 98%));
|
||||
color: var(--color);
|
||||
text-rendering: optimizeLegibility;
|
||||
@ -128,7 +127,6 @@ figure {
|
||||
}
|
||||
|
||||
code, kbd {
|
||||
font-family: 'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace !important;
|
||||
font-feature-settings: normal;
|
||||
background: color-mod(var(--accent) a(20%));
|
||||
color: var(--accent);
|
||||
|
@ -42,32 +42,40 @@
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.button {
|
||||
.button:hover, a.button:hover, button:hover {
|
||||
background: none;
|
||||
}
|
||||
|
||||
.button {
|
||||
border: none;
|
||||
color: var(--accent);
|
||||
background: none;
|
||||
position: relative;
|
||||
display: inline-flex;
|
||||
flex: 1;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 1rem;
|
||||
border-radius: 8px;
|
||||
border-radius: 0;
|
||||
padding: 0;
|
||||
cursor: pointer;
|
||||
appearance: none;
|
||||
overflow: hidden;
|
||||
|
||||
+ .button {
|
||||
+.button {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
a {
|
||||
a, a:hover {
|
||||
display: flex;
|
||||
padding: 8px 16px;
|
||||
text-decoration: none;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
background: none !important;
|
||||
border: none;
|
||||
}
|
||||
|
||||
&__text {
|
||||
@ -83,4 +91,5 @@
|
||||
&.previous .button__icon {
|
||||
margin-right: 8px;
|
||||
}
|
||||
}
|
||||
}
|
18
assets/css/style-scp.css
Normal file
@ -0,0 +1,18 @@
|
||||
@import 'variables.css';
|
||||
|
||||
@import 'font-scp.css';
|
||||
@import 'buttons.css';
|
||||
@import 'form.css';
|
||||
|
||||
@import 'header.css';
|
||||
@import 'logo.css';
|
||||
@import 'main.css';
|
||||
@import 'post.css';
|
||||
@import 'pagination.css';
|
||||
@import 'footer.css';
|
||||
|
||||
@import 'prism.css';
|
||||
@import 'syntax.css';
|
||||
@import 'code.css';
|
||||
@import 'terms.css';
|
||||
@import 'gist.css';
|
BIN
assets/fonts/FiraCode-Bold.woff2
Normal file
BIN
assets/fonts/FiraCode-Regular.woff2
Normal file
BIN
assets/fonts/SourceCodePro-Black.otf.woff
Normal file
BIN
assets/fonts/SourceCodePro-Black.otf.woff2
Normal file
BIN
assets/fonts/SourceCodePro-BlackIt.otf.woff
Normal file
BIN
assets/fonts/SourceCodePro-BlackIt.otf.woff2
Normal file
BIN
assets/fonts/SourceCodePro-Bold.otf.woff
Normal file
BIN
assets/fonts/SourceCodePro-Bold.otf.woff2
Normal file
BIN
assets/fonts/SourceCodePro-BoldIt.otf.woff
Normal file
BIN
assets/fonts/SourceCodePro-BoldIt.otf.woff2
Normal file
BIN
assets/fonts/SourceCodePro-ExtraLight.otf.woff
Normal file
BIN
assets/fonts/SourceCodePro-ExtraLight.otf.woff2
Normal file
BIN
assets/fonts/SourceCodePro-ExtraLightIt.otf.woff
Normal file
BIN
assets/fonts/SourceCodePro-ExtraLightIt.otf.woff2
Normal file
BIN
assets/fonts/SourceCodePro-It.otf.woff
Normal file
BIN
assets/fonts/SourceCodePro-It.otf.woff2
Normal file
BIN
assets/fonts/SourceCodePro-Light.otf.woff
Normal file
BIN
assets/fonts/SourceCodePro-Light.otf.woff2
Normal file
BIN
assets/fonts/SourceCodePro-LightIt.otf.woff
Normal file
BIN
assets/fonts/SourceCodePro-LightIt.otf.woff2
Normal file
BIN
assets/fonts/SourceCodePro-Medium.otf.woff
Normal file
BIN
assets/fonts/SourceCodePro-Medium.otf.woff2
Normal file
BIN
assets/fonts/SourceCodePro-MediumIt.otf.woff
Normal file
BIN
assets/fonts/SourceCodePro-MediumIt.otf.woff2
Normal file
BIN
assets/fonts/SourceCodePro-Regular.otf.woff
Normal file
BIN
assets/fonts/SourceCodePro-Regular.otf.woff2
Normal file
BIN
assets/fonts/SourceCodePro-Semibold.otf.woff
Normal file
BIN
assets/fonts/SourceCodePro-Semibold.otf.woff2
Normal file
BIN
assets/fonts/SourceCodePro-SemiboldIt.otf.woff
Normal file
BIN
assets/fonts/SourceCodePro-SemiboldIt.otf.woff2
Normal file
Before Width: | Height: | Size: 438 KiB After Width: | Height: | Size: 154 KiB |
BIN
images/tn.png
Before Width: | Height: | Size: 168 KiB After Width: | Height: | Size: 69 KiB |
@ -3,7 +3,7 @@
|
||||
<h1 class="post-title">404 — {{ $.Site.Params.missingContentMessage | default "Page not found..." }}</h1>
|
||||
|
||||
<div class="post-content">
|
||||
<a href="{{ "/" | absURL }}">{{ $.Site.Params.missingBackButtonLabel | default "Back to home page" }} →</a>
|
||||
<a href="{{ "/" | relURL }}">{{ $.Site.Params.missingBackButtonLabel | default "Back to home page" }} →</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
@ -17,12 +17,14 @@
|
||||
{{ range $paginator.Pages }}
|
||||
<div class="post on-list">
|
||||
<h1 class="post-title">
|
||||
<a href="{{ .Permalink }}">{{ .Title | markdownify }}</a>
|
||||
<a href="{{ .RelPermalink }}">{{ .Title | markdownify }}</a>
|
||||
</h1>
|
||||
<div class="post-meta">
|
||||
{{ with .Date }}
|
||||
<span class="post-date">
|
||||
{{ .Date.Format "2006-01-02" }}
|
||||
{{ .Format "2006-01-02" }}
|
||||
</span>
|
||||
{{ end }}
|
||||
{{ with .Params.Author }}
|
||||
<span class="post-author">:: {{ . }}</span>
|
||||
{{ end }}
|
||||
@ -31,7 +33,7 @@
|
||||
{{ if .Params.tags }}
|
||||
<span class="post-tags">
|
||||
{{ range .Params.tags }}
|
||||
#<a href="{{ (urlize (printf "tags/%s/" . )) | absLangURL }}">
|
||||
#<a href="{{ (urlize (printf "tags/%s/" . )) | relLangURL }}">
|
||||
{{- . -}}
|
||||
</a>
|
||||
{{ end }}
|
||||
|
@ -8,12 +8,14 @@
|
||||
{{ range .Paginator.Pages }}
|
||||
<div class="post on-list">
|
||||
<h1 class="post-title">
|
||||
<a href="{{ .Permalink }}">{{ .Title | markdownify }}</a>
|
||||
<a href="{{ .RelPermalink }}">{{ .Title | markdownify }}</a>
|
||||
</h1>
|
||||
<div class="post-meta">
|
||||
{{ with .Date }}
|
||||
<span class="post-date">
|
||||
{{ .Date.Format "2006-01-02" }}
|
||||
{{ .Format "2006-01-02" }}
|
||||
</span>
|
||||
{{ end }}
|
||||
{{ with .Params.Author }}
|
||||
<span class="post-author">:: {{ . }}</span>
|
||||
{{ end }}
|
||||
@ -22,7 +24,7 @@
|
||||
{{ if .Params.tags }}
|
||||
<span class="post-tags">
|
||||
{{ range .Params.tags }}
|
||||
#<a href="{{ (urlize (printf "tags/%s/" . )) | absLangURL }}">
|
||||
#<a href="{{ (urlize (printf "tags/%s/" . )) | relLangURL }}">
|
||||
{{- . -}}
|
||||
</a>
|
||||
{{ end }}
|
||||
@ -38,7 +40,7 @@
|
||||
{{ else if .Description }}
|
||||
{{ .Description | markdownify }}
|
||||
{{ else }}
|
||||
{{ .Summary | markdownify }}
|
||||
{{ .Summary }}
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
{{ define "main" }}
|
||||
<div class="post">
|
||||
<h1 class="post-title">
|
||||
<a href="{{ .Permalink }}">{{ .Title | markdownify }}</a></h1>
|
||||
<a href="{{ .RelPermalink }}">{{ .Title | markdownify }}</a></h1>
|
||||
<div class="post-meta">
|
||||
{{ if .Params.Date }}
|
||||
<span class="post-date">
|
||||
@ -22,7 +22,7 @@
|
||||
{{ if .Params.tags }}
|
||||
<span class="post-tags">
|
||||
{{ range .Params.tags }}
|
||||
#<a href="{{ (urlize (printf "tags/%s/" .)) | absLangURL }}">{{ . }}</a>
|
||||
#<a href="{{ (urlize (printf "tags/%s/" .)) | relLangURL }}">{{ . }}</a>
|
||||
{{ end }}
|
||||
</span>
|
||||
{{ end }}
|
||||
|
@ -8,7 +8,7 @@
|
||||
{{ $count := .Count }}
|
||||
{{ with $.Site.GetPage (printf "/%s/%s" $type $name) }}
|
||||
<li>
|
||||
<a class="terms-title" href="{{ .Permalink }}">{{ .Name }} ({{ $count }})</a>
|
||||
<a class="terms-title" href="{{ .RelPermalink }}">{{ .Name }} ({{ $count }})</a>
|
||||
</li>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
@ -5,7 +5,7 @@
|
||||
{{- if .Resources.GetMatch .Params.Cover }}
|
||||
{{- $cover = (.Resources.GetMatch .Params.Cover).RelPermalink -}}
|
||||
{{- else -}}
|
||||
{{- $cover = absURL .Params.Cover -}}
|
||||
{{- $cover = relURL .Params.Cover -}}
|
||||
{{- end -}}
|
||||
{{- else if $.Site.Params.AutoCover -}}
|
||||
{{- if (not .Params.Cover) -}}
|
||||
|
@ -12,11 +12,11 @@
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="{{ "assets/main.js" | absURL }}"></script>
|
||||
<script src="{{ "assets/prism.js" | absURL }}"></script>
|
||||
<script defer src="{{ "assets/main.js" | relURL }}"></script>
|
||||
<script defer src="{{ "assets/prism.js" | relURL }}"></script>
|
||||
|
||||
{{ if $.Site.Params.showLanguageSelector }}
|
||||
<script src="{{ "assets/languageSelector.js" | absURL }}"></script>
|
||||
<script src="{{ "assets/languageSelector.js" | relURL }}"></script>
|
||||
{{ end }}
|
||||
|
||||
<!-- Extended footer section-->
|
||||
|
@ -8,24 +8,32 @@
|
||||
{{ template "_internal/google_analytics.html" . }}
|
||||
|
||||
<!-- Theme CSS -->
|
||||
<link rel="stylesheet" href="{{ "assets/style.css" | absURL }}">
|
||||
{{ $scp := "" }}
|
||||
{{ if (isset $.Site.Params "usesourcecodepro") }}
|
||||
{{ if $.Site.Params.useSourceCodePro }}
|
||||
{{ $scp = "-scp" }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ if (isset .Params "color") }}
|
||||
<link rel="stylesheet" href="{{ (printf "assets/%s.css" .Params.color) | absURL }}">
|
||||
<link rel="stylesheet" href="{{ (printf "assets/%s%s.css" .Params.color $scp) | relURL }}">
|
||||
{{ else if and (ne $.Site.Params.ThemeColor "orange") (ne $.Site.Params.ThemeColor "color" "") }}
|
||||
<link rel="stylesheet" href="{{ (printf "assets/%s.css" $.Site.Params.ThemeColor) | absURL }}">
|
||||
<link rel="stylesheet" href="{{ (printf "assets/%s%s.css" $.Site.Params.ThemeColor $scp) | relURL }}">
|
||||
{{ else }}
|
||||
<link rel="stylesheet" href="{{ (printf "assets/orange%s.css" $scp) | relURL }}">
|
||||
{{ end }}
|
||||
|
||||
<!-- Custom CSS to override theme properties (/static/style.css) -->
|
||||
{{ if (fileExists "static/style.css") -}}
|
||||
<link rel="stylesheet" href="{{ "style.css" | absURL }}">
|
||||
<link rel="stylesheet" href="{{ "style.css" | relURL }}">
|
||||
{{- end }}
|
||||
|
||||
<!-- Icons -->
|
||||
<link rel="apple-touch-icon" href="{{ "img/apple-touch-icon-192x192.png" | absURL }}">
|
||||
<link rel="apple-touch-icon" href="{{ "img/apple-touch-icon-192x192.png" | relURL }}">
|
||||
{{ if isset $.Site.Params "favicon" }}
|
||||
<link rel="shortcut icon" href="{{ $.Site.Params.favicon | absURL }}">
|
||||
<link rel="shortcut icon" href="{{ $.Site.Params.favicon | relURL }}">
|
||||
{{ else }}
|
||||
<link rel="shortcut icon" href="{{ printf "img/favicon/%s.png" ($.Site.Params.ThemeColor | default "orange") | absURL }}">
|
||||
<link rel="shortcut icon" href="{{ printf "img/favicon/%s.png" ($.Site.Params.ThemeColor | default "orange") | relURL }}">
|
||||
{{ end }}
|
||||
|
||||
<!-- Twitter Card -->
|
||||
@ -51,10 +59,10 @@
|
||||
<meta property="og:image" content="{{ $.Site.Params.favicon | absURL }}">
|
||||
{{ else }}
|
||||
<meta property="og:image" content="{{ printf "img/favicon/%s.png" $.Site.Params.ThemeColor | absURL }}">
|
||||
<meta property="og:image:width" content="2048">
|
||||
<meta property="og:image:height" content="1024">
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
<meta property="og:image:width" content="2048">
|
||||
<meta property="og:image:height" content="1024">
|
||||
{{ range .Params.categories }}
|
||||
<meta property="article:section" content="{{ . }}" />
|
||||
{{ end }}
|
||||
|
@ -1,9 +1,12 @@
|
||||
<nav class="menu">
|
||||
<ul class="menu__inner menu__inner--desktop">
|
||||
{{ $currentPage := . }}
|
||||
{{ if or $.Site.Params.showMenuItems ( eq .Site.Params.showMenuItems 0 ) }}
|
||||
{{ range first $.Site.Params.showMenuItems $.Site.Menus.main }}
|
||||
{{ $menu_item_url := .URL | relLangURL }}
|
||||
{{ $page_url := $currentPage.RelPermalink | relLangURL }}
|
||||
{{ if not .HasChildren }}
|
||||
<li><a href="{{ .URL }}">{{ .Name }}</a></li>
|
||||
<li><a{{ if eq $menu_item_url $page_url }} class="active"{{ end }} href="{{ .URL }}">{{ .Name }}</a></li>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ if gt (len $.Site.Menus.main) $.Site.Params.showMenuItems }}
|
||||
@ -13,7 +16,9 @@
|
||||
<ul class="menu__sub-inner-more hidden">
|
||||
{{ range last (sub (len $.Site.Menus.main) $.Site.Params.showMenuItems) $.Site.Menus.main }}
|
||||
{{ if not .HasChildren }}
|
||||
<li><a href="{{ .URL }}">{{ .Name }}</a></li>
|
||||
{{ $menu_item_url := .URL | relLangURL }}
|
||||
{{ $page_url := $currentPage.RelPermalink | relLangURL }}
|
||||
<li><a{{ if eq $menu_item_url $page_url }} class="active"{{ end }} href="{{ .URL }}">{{ .Name }}</a></li>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</ul>
|
||||
@ -21,8 +26,10 @@
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
{{ range $.Site.Menus.main }}
|
||||
{{ $menu_item_url := .URL | relLangURL }}
|
||||
{{ $page_url := $currentPage.RelPermalink | relLangURL }}
|
||||
{{ if not .HasChildren }}
|
||||
<li><a href="{{ .URL }}">{{ .Name }}</a></li>
|
||||
<li><a{{ if eq $menu_item_url $page_url }} class="active"{{ end }} href="{{ .URL }}">{{ .Name }}</a></li>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
@ -35,7 +42,7 @@
|
||||
</ul>
|
||||
<ul class="language-selector__more hidden">
|
||||
{{ range $.Site.Home.AllTranslations }}
|
||||
<li><a href="{{ .Permalink }}">{{ .Language.LanguageName }}</a></li>
|
||||
<li><a{{ if eq .Language $.Language }} class="active"{{ end }} href="{{ .RelPermalink }}">{{ .Language.LanguageName }}</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</ul>
|
||||
@ -44,15 +51,17 @@
|
||||
|
||||
<ul class="menu__inner menu__inner--mobile">
|
||||
{{ range $.Site.Menus.main }}
|
||||
{{ $menu_item_url := .URL | relLangURL }}
|
||||
{{ $page_url := $currentPage.RelPermalink | relLangURL }}
|
||||
{{ if not .HasChildren }}
|
||||
<li><a href="{{ .URL }}">{{ .Name }}</a></li>
|
||||
<li><a{{ if eq $menu_item_url $page_url }} class="active"{{ end }} href="{{ .URL }}">{{ .Name }}</a></li>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ if and $.Site.Params.showLanguageSelector (len $.Site.Home.AllTranslations) }}
|
||||
<hr />
|
||||
{{ range $.Site.Home.AllTranslations }}
|
||||
<li>
|
||||
<a href="{{ .Permalink }}">{{ .Language.LanguageName }}</a>
|
||||
<a{{ if eq .Language $.Language }} class="active"{{ end }} href="{{ .RelPermalink }}">{{ .Language.LanguageName }}</a>
|
||||
</li>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
@ -6,20 +6,16 @@
|
||||
</div>
|
||||
<div class="pagination__buttons">
|
||||
{{ if .NextInSection }}
|
||||
<span class="button previous">
|
||||
<a href="{{ .NextInSection.Permalink }}">
|
||||
<a class="button previous" href="{{ .NextInSection.RelPermalink }}">
|
||||
<span class="button__icon">←</span>
|
||||
<span class="button__text">{{ .NextInSection.Title }}</span>
|
||||
</a>
|
||||
</span>
|
||||
{{ end }}
|
||||
{{ if .PrevInSection }}
|
||||
<span class="button next">
|
||||
<a href="{{ .PrevInSection.Permalink }}">
|
||||
<a class="button next" href="{{ .PrevInSection.RelPermalink }}">
|
||||
<span class="button__text">{{ .PrevInSection.Title }}</span>
|
||||
<span class="button__icon">→</span>
|
||||
</a>
|
||||
</span>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
|
@ -11,5 +11,5 @@
|
||||
<pre {{ if .Get "language" }}class="language-{{ .Get "language" }}" {{ end }}><code>{{ .Inner | string }}</code></pre>
|
||||
</div>
|
||||
{{ else }}
|
||||
{{ errorf "If you want to use the \"collapsable code\" shortcode, you need to pass a mandatory \"language\" param. The issue occured in %q (%q)" .Page.File .Page.Permalink }}
|
||||
{{ errorf "If you want to use the \"collapsable code\" shortcode, you need to pass a mandatory \"language\" param. The issue occured in %q (%q)" .Page.File .Page.RelPermalink }}
|
||||
{{ end }}
|
||||
|
@ -55,6 +55,6 @@
|
||||
"webpack-cli": "^4.5.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"yarn": "^1.22.10"
|
||||
"yarn": "^1.22.19"
|
||||
}
|
||||
}
|
||||
|
BIN
static/assets/0fab52a946ce9600124a63fe8cd099d5.woff2
Normal file
BIN
static/assets/4be56996e127ca0cc550ebc8d36ecbc8.woff2
Normal file
BIN
static/assets/71562184b8be8d260decf50de5a9af26.woff2
Normal file
BIN
static/assets/8b0392773e38a1168f72532046a08cdb.woff
Normal file
BIN
static/assets/a57305681411f183f5e57017e888c68f.woff
Normal file
BIN
static/assets/b886e5e4d0fb2ec299038048cb3d9a25.woff2
Normal file
1
static/assets/blue-scp.css
Normal file
BIN
static/assets/df70c3a856c8c1c52191651512abc003.woff
Normal file
BIN
static/assets/fb1bb49c43d015b780567b88fbe79d64.woff2
Normal file
1
static/assets/green-scp.css
Normal file
1
static/assets/grey-scp.css
Normal file
1
static/assets/grey.css
Normal file
@ -1,4 +1 @@
|
||||
(function(){var __webpack_modules__={"./assets/js/languageSelector.js":
|
||||
/*!***************************************!*\
|
||||
!*** ./assets/js/languageSelector.js ***!
|
||||
\***************************************/function(){eval('var mobileQuery = getComputedStyle(document.body).getPropertyValue("--phoneWidth");\n\nvar isMobile = function isMobile() {\n return window.matchMedia(mobileQuery).matches;\n};\n\nvar languageSelector = document.querySelector(".language-selector-current");\nvar moreLanguagesContainer = document.querySelector(".language-selector__more");\ndocument.body.addEventListener("click", function () {\n if (!isMobile() && moreLanguagesContainer && !moreLanguagesContainer.classList.contains("hidden")) {\n moreLanguagesContainer.classList.add("hidden");\n }\n});\nlanguageSelector && languageSelector.addEventListener("click", function (e) {\n if (!isMobile()) {\n e.stopPropagation();\n moreLanguagesContainer.classList.toggle("hidden");\n }\n});\n\n//# sourceURL=webpack://terminal/./assets/js/languageSelector.js?')}},__webpack_exports__={};__webpack_modules__["./assets/js/languageSelector.js"]()})();
|
||||
!function(){var e=getComputedStyle(document.body).getPropertyValue("--phoneWidth"),t=function(){return window.matchMedia(e).matches},n=document.querySelector(".language-selector-current"),o=document.querySelector(".language-selector__more");document.body.addEventListener("click",(function(){t()||!o||o.classList.contains("hidden")||o.classList.add("hidden")})),n&&n.addEventListener("click",(function(e){t()||(e.stopPropagation(),o.classList.toggle("hidden"))}))}();
|
@ -1,4 +1 @@
|
||||
(function(){var __webpack_modules__={"./assets/js/menu.js":
|
||||
/*!***************************!*\
|
||||
!*** ./assets/js/menu.js ***!
|
||||
\***************************/function(){eval('var container = document.querySelector(".container");\nvar menu = document.querySelector(".menu");\nvar mobileMenuTrigger = document.querySelector(".menu-trigger");\nvar desktopMenu = document.querySelector(".menu__inner--desktop");\nvar desktopMenuTrigger = document.querySelector(".menu__sub-inner-more-trigger");\nvar menuMore = document.querySelector(".menu__sub-inner-more");\nvar mobileQuery = getComputedStyle(document.body).getPropertyValue("--phoneWidth");\n\nvar isMobile = function isMobile() {\n return window.matchMedia(mobileQuery).matches;\n};\n\nvar handleMenuClasses = function handleMenuClasses() {\n mobileMenuTrigger && mobileMenuTrigger.classList.toggle("hidden", !isMobile());\n menu && menu.classList.toggle("hidden", isMobile());\n menuMore && menuMore.classList.toggle("hidden", !isMobile());\n}; // Common\n\n\nmenu && menu.addEventListener("click", function (e) {\n return e.stopPropagation();\n});\nmenuMore && menuMore.addEventListener("click", function (e) {\n return e.stopPropagation();\n});\nhandleMenuClasses();\ndocument.body.addEventListener("click", function () {\n if (!isMobile() && menuMore && !menuMore.classList.contains("hidden")) {\n menuMore.classList.add("hidden");\n } else if (isMobile() && !menu.classList.contains("hidden")) {\n menu.classList.add("hidden");\n }\n});\nwindow.addEventListener("resize", handleMenuClasses); // Mobile menu\n\nmobileMenuTrigger && mobileMenuTrigger.addEventListener("click", function (e) {\n e.stopPropagation();\n menu && menu.classList.toggle("hidden");\n}); // Desktop menu\n\ndesktopMenuTrigger && desktopMenuTrigger.addEventListener("click", function (e) {\n e.stopPropagation();\n menuMore && menuMore.classList.toggle("hidden");\n\n if (menuMore.getBoundingClientRect().right > container.getBoundingClientRect().right) {\n menuMore.style.left = "auto";\n menuMore.style.right = 0;\n }\n});\n\n//# sourceURL=webpack://terminal/./assets/js/menu.js?')}},__webpack_exports__={};__webpack_modules__["./assets/js/menu.js"]()})();
|
||||
!function(){var e=document.querySelector(".container"),t=document.querySelector(".menu"),n=document.querySelector(".menu-trigger"),i=(document.querySelector(".menu__inner--desktop"),document.querySelector(".menu__sub-inner-more-trigger")),o=document.querySelector(".menu__sub-inner-more"),d=getComputedStyle(document.body).getPropertyValue("--phoneWidth"),c=function(){return window.matchMedia(d).matches},s=function(){n&&n.classList.toggle("hidden",!c()),t&&t.classList.toggle("hidden",c()),o&&o.classList.toggle("hidden",!c())};t&&t.addEventListener("click",(function(e){return e.stopPropagation()})),o&&o.addEventListener("click",(function(e){return e.stopPropagation()})),s(),document.body.addEventListener("click",(function(){c()||!o||o.classList.contains("hidden")?c()&&!t.classList.contains("hidden")&&t.classList.add("hidden"):o.classList.add("hidden")})),window.addEventListener("resize",s),n&&n.addEventListener("click",(function(e){e.stopPropagation(),t&&t.classList.toggle("hidden")})),i&&i.addEventListener("click",(function(t){t.stopPropagation(),o&&o.classList.toggle("hidden"),o.getBoundingClientRect().right>e.getBoundingClientRect().right&&(o.style.left="auto",o.style.right=0)}))}();
|
1
static/assets/orange-scp.css
Normal file
1
static/assets/orange.css
Normal file
1
static/assets/pink-scp.css
Normal file
1
static/assets/red-scp.css
Normal file
1
static/assets/style-scp.css
Normal file
1
static/assets/yellow-scp.css
Normal file
1
static/assets/yellow.css
Normal file
Before Width: | Height: | Size: 189 B After Width: | Height: | Size: 136 B |
Before Width: | Height: | Size: 190 B After Width: | Height: | Size: 136 B |
BIN
static/img/favicon/grey.png
Normal file
After Width: | Height: | Size: 107 B |
Before Width: | Height: | Size: 190 B After Width: | Height: | Size: 136 B |
Before Width: | Height: | Size: 190 B After Width: | Height: | Size: 136 B |
Before Width: | Height: | Size: 189 B After Width: | Height: | Size: 136 B |
BIN
static/img/favicon/yellow.png
Normal file
After Width: | Height: | Size: 86 B |
@ -19,7 +19,18 @@ module.exports = (env, { mode }) => ({
|
||||
red: join("assets", "css", "color", "red.css"),
|
||||
blue: join("assets", "css", "color", "blue.css"),
|
||||
green: join("assets", "css", "color", "green.css"),
|
||||
orange: join("assets", "css", "color", "orange.css"),
|
||||
pink: join("assets", "css", "color", "pink.css"),
|
||||
yellow: join("assets", "css", "color", "yellow.css"),
|
||||
grey: join("assets", "css", "color", "grey.css"),
|
||||
'style-scp': join("assets", "css", "style.css"),
|
||||
'red-scp': join("assets", "css", "color", "red-scp.css"),
|
||||
'blue-scp': join("assets", "css", "color", "blue-scp.css"),
|
||||
'green-scp': join("assets", "css", "color", "green-scp.css"),
|
||||
'orange-scp': join("assets", "css", "color", "orange-scp.css"),
|
||||
'pink-scp': join("assets", "css", "color", "pink-scp.css"),
|
||||
'yellow-scp': join("assets", "css", "color", "yellow-scp.css"),
|
||||
'grey-scp': join("assets", "css", "color", "grey-scp.css"),
|
||||
},
|
||||
output: {
|
||||
filename: "[name].js",
|
||||
@ -93,6 +104,17 @@ module.exports = (env, { mode }) => ({
|
||||
join("static/assets/green.js"),
|
||||
join("static/assets/red.js"),
|
||||
join("static/assets/pink.js"),
|
||||
join("static/assets/orange.js"),
|
||||
join("static/assets/yellow.js"),
|
||||
join("static/assets/grey.js"),
|
||||
join("static/assets/style-scp.js"),
|
||||
join("static/assets/blue-scp.js"),
|
||||
join("static/assets/green-scp.js"),
|
||||
join("static/assets/red-scp.js"),
|
||||
join("static/assets/pink-scp.js"),
|
||||
join("static/assets/orange-scp.js"),
|
||||
join("static/assets/yellow-scp.js"),
|
||||
join("static/assets/grey-scp.js"),
|
||||
],
|
||||
verbose: true,
|
||||
}),
|
||||
|