First draft
This commit is contained in:
6
layouts/404.html
Normal file
6
layouts/404.html
Normal file
@ -0,0 +1,6 @@
|
||||
{{ define "main" }}
|
||||
<div class="container">
|
||||
<p>Page not found</p>
|
||||
<p><a href="/">Go to Home Page</a></p>
|
||||
</div>
|
||||
{{ end }}
|
12
layouts/_default/about.html
Normal file
12
layouts/_default/about.html
Normal file
@ -0,0 +1,12 @@
|
||||
{{/* 单个帖子的模板 */}}
|
||||
{{ define "main" }}
|
||||
<div class="single-container is-centered">
|
||||
<div class="archive">
|
||||
<h1 class="title is-1">{{ .Title }}</h1>
|
||||
<div class="content about-content">
|
||||
{{ .Content }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
{{ end }}
|
13
layouts/_default/baseof.html
Normal file
13
layouts/_default/baseof.html
Normal file
@ -0,0 +1,13 @@
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ .Site.LanguageCode }}">
|
||||
{{- partial "head.html" . -}}
|
||||
<body>
|
||||
{{- partial "header.html" . -}}
|
||||
<main>
|
||||
{{- block "main" . }}{{- end }}
|
||||
</main>
|
||||
{{- partial "footer.html" . -}}
|
||||
</body>
|
||||
</html>
|
||||
|
5
layouts/_default/index.json
Normal file
5
layouts/_default/index.json
Normal file
@ -0,0 +1,5 @@
|
||||
{{- $.Scratch.Add "index" slice -}}
|
||||
{{- range .Site.RegularPages -}}
|
||||
{{- $.Scratch.Add "index" (dict "title" .Title "tags" .Params.tags "categories" .Params.categories "contents" .Plain "permalink" .Permalink "date" .Date "section" .Section) -}}
|
||||
{{- end -}}
|
||||
{{- $.Scratch.Get "index" | jsonify -}}
|
16
layouts/_default/list.html
Normal file
16
layouts/_default/list.html
Normal file
@ -0,0 +1,16 @@
|
||||
{{/* 列表类型页面的通用模板.点击blog之后展示出来的页面 */}}
|
||||
{{/* user:为博客文章列表创建一个索引页面。
|
||||
>> hugo new blog/_index.md */}}
|
||||
{{ define "main" }}
|
||||
<div class="container">
|
||||
<div class="section">
|
||||
<div class="content">
|
||||
<h1>{{ .Title }}</h1>
|
||||
{{ .Content }}
|
||||
{{ range .Pages.ByPublishDate.Reverse }}
|
||||
<a href="{{ .Permalink }}">{{ .Title }}</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
15
layouts/_default/single.html
Normal file
15
layouts/_default/single.html
Normal file
@ -0,0 +1,15 @@
|
||||
{{ define "main" }}
|
||||
{{- with site.Params.homeInfoParams }}
|
||||
<article class="first-entry home-info">
|
||||
<header class="entry-header">
|
||||
<h1>{{ .Title }}</h1>
|
||||
</header>
|
||||
<div class="entry-content">
|
||||
{{ .Content}}
|
||||
</div>
|
||||
<footer class="entry-footer">
|
||||
{{ partial "social_icons.html" site.Params.socialIcons }}
|
||||
</footer>
|
||||
</article>
|
||||
{{- end -}}
|
||||
{{ end }}
|
26
layouts/_default/summary.html
Normal file
26
layouts/_default/summary.html
Normal file
@ -0,0 +1,26 @@
|
||||
<article class="post">
|
||||
<div class="single-container column is-centered">
|
||||
<div class="archive" id="post-container">
|
||||
<header class="post-header">
|
||||
<h1 class="post-title hover-underline-animation"><a class="post-link" href="{{ .RelPermalink }}">{{ .Title
|
||||
}}</a></h1>
|
||||
|
||||
|
||||
</header>
|
||||
<div class="post-content">
|
||||
<div class="excerpt post-summary">
|
||||
{{ if .Params.protected}}
|
||||
<p>Psst! The article you seek is guarded by a mischievous password, hidden within the realms of whimsy and giggles. Unleash your inner unicorn, sprinkle some sparkle, and let the charm of curiosity guide you to unlock its enchanting secrets!</p>
|
||||
{{ else }}
|
||||
{{ .Summary }}
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
<div class="post-time-container">
|
||||
<span class="post-time"> {{ .Date.Format (.Site.Params.dateFormatToUse | default "2006-01-02") }} </span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
23
layouts/categories/taxonomy.html
Normal file
23
layouts/categories/taxonomy.html
Normal file
@ -0,0 +1,23 @@
|
||||
{{ define "main" }}
|
||||
<div class="container">
|
||||
<div class="section">
|
||||
<h2 class="archive-title">Category: {{ .Title }}</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="each-category column is-centered">
|
||||
|
||||
|
||||
{{ range .Paginator.Pages}}
|
||||
|
||||
<article class="archive-item">
|
||||
<a href="{{ .Permalink }}" class="archive-item-link hover-underline-animation">{{ .Title }}</a>
|
||||
<span class="archive-item-date">
|
||||
{{ .Date.Format "January 2, 2006" }}
|
||||
</span>
|
||||
|
||||
</article>
|
||||
|
||||
{{ end }}
|
||||
|
||||
</div>
|
||||
{{ end }}
|
33
layouts/categories/terms.html
Normal file
33
layouts/categories/terms.html
Normal file
@ -0,0 +1,33 @@
|
||||
{{ define "main" }}
|
||||
<div class="container">
|
||||
<div class="section">
|
||||
<div class="content">
|
||||
<h1>{{ .Title }}</h1>
|
||||
{{ .Content }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section class="card-container" >
|
||||
|
||||
{{ range .Data.Terms.ByCount }}
|
||||
<div class="card">
|
||||
|
||||
<a href="{{ .Page.Permalink }}">
|
||||
</a>
|
||||
<div class="card-content has-text-centered">
|
||||
<div>
|
||||
<a class="title is-5 is-size-6-mobile" href="{{ .Page.Permalink }}">{{ .Page.Title }}</a>
|
||||
{{ $pageCount := len .Pages }}
|
||||
<strong>
|
||||
<sup style="font-size:16px;">{{ $pageCount }}</sup>
|
||||
</strong>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
</section>
|
||||
|
||||
{{ end }}
|
51
layouts/index.html
Normal file
51
layouts/index.html
Normal file
@ -0,0 +1,51 @@
|
||||
{{ define "main" }}
|
||||
<article>
|
||||
{{- with site.Params}}
|
||||
<div class="is-centered">
|
||||
<div class="title subtitle heading is-6">
|
||||
<div id="home-box" >
|
||||
{{ with .imageUrl }}
|
||||
<div class="avatar-container">
|
||||
<img src="{{.}}" class="author-avatar">
|
||||
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
|
||||
|
||||
<h1 id="home-title" class="title is-1 ">{{ .Title }}</h1>
|
||||
<div class="description column content typewriter-effect">
|
||||
<div class="text" id="typewriter-text"> {{ .Content }}</div>
|
||||
|
||||
</div>
|
||||
<script>
|
||||
const typeWriter = document.getElementById('typewriter-text');
|
||||
typeWriter.style.setProperty('--characters', typeWriter.innerHTML.length);
|
||||
</script>
|
||||
|
||||
<div class="social-icon">
|
||||
|
||||
{{ range .Social }}
|
||||
<a href="{{ .url }}" title="{{ .name }}"><span class="change-color icon">
|
||||
{{ partial "svg.html" . }}
|
||||
</span></a>
|
||||
{{ end }}
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
{{- end -}}
|
||||
|
||||
</article>
|
||||
<div class="summary">
|
||||
{{- $paginator := .Paginate (where (where .Site.RegularPages "Type" "post") ".Params.draft" "!=" true) }}
|
||||
{{ range $paginator.Pages }}
|
||||
{{ .Render "summary" }}
|
||||
{{ end }}
|
||||
{{ partial "pagination.html" . }}
|
||||
|
||||
</div>
|
||||
{{ end }}
|
49
layouts/partials/comment.html
Normal file
49
layouts/partials/comment.html
Normal file
@ -0,0 +1,49 @@
|
||||
{{- if isset .Site.Params "giscus" -}}
|
||||
<hr style="border-top: 1px solid #EEEEEE;">
|
||||
<div id="comment"></div>
|
||||
<script>
|
||||
const getStoredTheme = () => localStorage.getItem("theme") === "dark" ? "dark" : "light";
|
||||
|
||||
const setGiscusTheme = () => {
|
||||
const sendMessage = (message) => {
|
||||
const iframe = document.querySelector('iframe.giscus-frame');
|
||||
if (iframe) {
|
||||
iframe.contentWindow.postMessage({giscus: message}, 'https://giscus.app');
|
||||
}
|
||||
}
|
||||
sendMessage({setConfig: {theme: getStoredTheme()}})
|
||||
}
|
||||
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
const giscusAttributes = {
|
||||
"src": "https://giscus.app/client.js",
|
||||
"data-repo": "{{ .Site.Params.giscus.repo }}",
|
||||
"data-repo-id": "{{ .Site.Params.giscus.repoID }}",
|
||||
"data-category": "{{ .Site.Params.giscus.category }}",
|
||||
"data-category-id": "{{ .Site.Params.giscus.categoryID }}",
|
||||
"data-mapping": "{{ default " pathname" .Site.Params.giscus.mapping }}",
|
||||
"data-reactions-enabled": "{{ default "1" .Site.Params.giscus.reactionsEnabled }}",
|
||||
"data-emit-metadata": "{{ default "0" .Site.Params.giscus.emitMetadata }}",
|
||||
"data-input-position": "{{ default "bottom" .Site.Params.giscus.inputPosition }}",
|
||||
"data-theme": getStoredTheme(),
|
||||
"data-lang": "{{ default "en" .Site.Params.giscus.lang }}",
|
||||
"data-loading": "{{ default "lazy" .Site.Params.giscus.loading }}",
|
||||
"crossorigin": "anonymous",
|
||||
};
|
||||
|
||||
// Dynamically create script tag.
|
||||
const giscusScript = document.createElement("script");
|
||||
Object.entries(giscusAttributes).forEach(
|
||||
([key, value]) => giscusScript.setAttribute(key, value));
|
||||
document.getElementById("comment").appendChild(giscusScript);
|
||||
|
||||
// Update giscus theme when the theme switcher is clicked.
|
||||
const themeToggle = document.querySelector(".theme-toggle");
|
||||
if (themeToggle) {
|
||||
themeToggle.addEventListener("click", setGiscusTheme);
|
||||
}
|
||||
});
|
||||
|
||||
</script>
|
||||
{{end}}
|
||||
|
14
layouts/partials/footer.html
Normal file
14
layouts/partials/footer.html
Normal file
@ -0,0 +1,14 @@
|
||||
<footer class="footer">
|
||||
<div class="content has-text-centered">
|
||||
{{- if site.Copyright }}
|
||||
<span>{{ site.Copyright | markdownify }}</span>
|
||||
{{- else }}
|
||||
<span>© {{ now.Year }} <a href="{{ "" | absLangURL }}">{{ site.Title }}</a></span>
|
||||
{{- end }}
|
||||
<span>
|
||||
Powered by
|
||||
<a href="https://gohugo.io/" target="_blank">Hugo</a> &
|
||||
<a href="https://github.com/hotjuicew/hugo-JuiceBar" target="_blank">JuiceBar</a>
|
||||
</span>
|
||||
</div>
|
||||
</footer>
|
19
layouts/partials/head.html
Normal file
19
layouts/partials/head.html
Normal file
@ -0,0 +1,19 @@
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
|
||||
<title>{{ if not .IsHome }}{{ with .Title }}{{ . }} | {{ end }}{{ end }}{{ .Site.Title }}</title>
|
||||
<meta name="description"
|
||||
content="{{ with .Description }}{{ . }}{{ else }}{{ with .Summary }}{{ . }}{{ else }}{{ .Site.Params.description }}{{end }}{{ end }}">
|
||||
<link rel="canonical" href="{{ .Permalink }}" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.4/css/bulma.min.css">
|
||||
{{ $styles := resources.Get "scss/style.scss" | toCSS | minify | fingerprint }}
|
||||
<link rel="stylesheet" href="{{ $styles.Permalink }}">
|
||||
|
||||
{{ template "_internal/opengraph.html" . }}
|
||||
{{ template "_internal/twitter_cards.html" . }}
|
||||
{{ if not (in (string .Site.BaseURL) "localhost") }}
|
||||
{{ template "_internal/google_analytics_async.html" . }}
|
||||
{{ end }}
|
||||
|
||||
</head>
|
102
layouts/partials/header.html
Normal file
102
layouts/partials/header.html
Normal file
@ -0,0 +1,102 @@
|
||||
<nav class="navbar is-light" role="navigation">
|
||||
<div class="container">
|
||||
<div class="navbar-brand">
|
||||
<a href="/" title="home" class="navbar-item">
|
||||
<span class="logo">
|
||||
<h1>{{ .Site.Title }}</h1>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<!-- sun icon -->
|
||||
<a id="theme-toggle" class="theme-toggle" href="#">
|
||||
<img src="{{ .Site.BaseURL }}svg/sun.svg" alt="sun icon" class="theme-icon" />
|
||||
</a>
|
||||
|
||||
<a role="button" class="navbar-burger" aria-label="menu" aria-expanded="false">
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
<span aria-hidden="true"></span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="navbar-menu">
|
||||
<div class="navbar-start">
|
||||
{{ range .Site.Menus.main }}
|
||||
<a href="{{ .URL }}" class="navbar-item">{{ .Name }}</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="search">
|
||||
<div id="fastSearch">
|
||||
<input id="searchInput" tabindex="0" placeholder="Search..">
|
||||
<ul id="searchResults">
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
<a id="search-btn" style="display: inline-block;" href="# ">
|
||||
<div class="icon-search"><svg class="search-svg" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line></svg></div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<script src="/js/fuse.min.js"></script> <!-- download and copy over fuse.min.js file from fusejs.io -->
|
||||
<script src="/js/fastsearch.js"></script>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<script>
|
||||
//hamburger icon on a mobile device.
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
var burger = document.querySelector('.navbar-burger');
|
||||
burger.addEventListener('click', function() {
|
||||
burger.classList.toggle('is-active');
|
||||
document.querySelector('.navbar-menu').classList.toggle('is-active');
|
||||
});
|
||||
});
|
||||
|
||||
// theme color switch
|
||||
function setTheme(theme) {
|
||||
let body = document.body;
|
||||
let themeIcon = document.querySelector(".theme-icon");
|
||||
if (theme === "dark") {
|
||||
body.classList.add("dark-mode");
|
||||
themeIcon.src = "{{ .Site.BaseURL }}svg/moon.svg";
|
||||
themeIcon.alt = "moon icon";
|
||||
} else {
|
||||
body.classList.remove("dark-mode");
|
||||
themeIcon.src = "{{ .Site.BaseURL }}svg/sun.svg";
|
||||
themeIcon.alt = "sun icon";
|
||||
}
|
||||
// Save the user-selected theme mode to local storage.
|
||||
localStorage.setItem("theme", theme);
|
||||
}
|
||||
|
||||
// Retrieve the user-selected theme mode from local storage
|
||||
let theme = localStorage.getItem("theme") || "light";
|
||||
const isDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||||
if (isDarkMode) {
|
||||
// Site is in dark mode
|
||||
setTheme('dark');
|
||||
|
||||
} else {
|
||||
// Site is in light mode
|
||||
setTheme('light');
|
||||
}
|
||||
setTheme(theme);
|
||||
|
||||
// Toggle theme when sun icon is clicked
|
||||
document.getElementById("theme-toggle").addEventListener("click", function() {
|
||||
if (theme === "light") {
|
||||
theme = "dark";
|
||||
} else {
|
||||
theme = "light";
|
||||
}
|
||||
setTheme(theme);
|
||||
});
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
</header>
|
15
layouts/partials/pagination.html
Normal file
15
layouts/partials/pagination.html
Normal file
@ -0,0 +1,15 @@
|
||||
<hr>
|
||||
<section class="pagination" >
|
||||
{{ if .Paginator.HasPrev }}
|
||||
|
||||
<button class="button ">
|
||||
<a href="{{ .Paginator.Prev.URL }}" class="pag-link"> Prev </a>
|
||||
</button>
|
||||
{{ end }}
|
||||
<label class="pag-link">Page {{ .Paginator.PageNumber}} of {{.Paginator.TotalPages}}</label>
|
||||
{{ if .Paginator.HasNext }}
|
||||
<button class="button" >
|
||||
<a href="{{ .Paginator.Next.URL }}" class="pag-link"> Next </a>
|
||||
</button>
|
||||
{{ end }}
|
||||
</section>
|
217
layouts/partials/svg.html
Normal file
217
layouts/partials/svg.html
Normal file
@ -0,0 +1,217 @@
|
||||
{{- $icon_name := ( .name|lower )}}
|
||||
{{- if (eq $icon_name "123rf") -}}
|
||||
<svg height="32px" width="32px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<path style="font-variation-settings:normal"
|
||||
d="M7.48 3.826c-.702 0-1.345.388-1.675 1.008l-.711 1.334a4.214 4.214 0 0 1-1.614 1.67l-.388.224a2.207 2.207 0 0 0-1.104 1.913v8.607c0 .878.712 1.592 1.59 1.592h1.186c.468 0 .916-.19 1.244-.524l1.478-1.504c.266-.27.628-.421 1.006-.421h7.04c.378 0 .74.151 1.005.421l1.478 1.504c.329.334.778.524 1.247.524h1.183c.879 0 1.592-.714 1.592-1.592V9.975c0-.79-.422-1.518-1.106-1.912l-.388-.225a4.214 4.214 0 0 1-1.613-1.67l-.711-1.334a1.899 1.899 0 0 0-1.676-1.008z"
|
||||
stroke-linejoin="miter" />
|
||||
<circle cx="12" cy="12.467" r="2.723" />
|
||||
</svg>
|
||||
{{- else if (eq $icon_name "adobestock") -}}
|
||||
<svg height="32px" width="32px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<path style="font-variation-settings:normal" d="M2.235 2.235h19.53v19.53H2.235z" />
|
||||
<path style="font-variation-settings:normal"
|
||||
d="M6.165 16.659s3.16 1.2 4.602-.17c1.37-1.3.787-3.163-.754-4.05-1.68-.969-3.284-1.788-3.036-3.536.446-3.138 4.386-1.851 4.386-1.851M15.792 7.794v7.774c0 1.023.635 1.766 2.043 1.624M17.826 10.04h-3.582" />
|
||||
</svg>
|
||||
{{- else if (eq $icon_name "applemusic") -}}
|
||||
<svg height="32px" width="32px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" stroke="none">
|
||||
<path
|
||||
d="M23.994 6.124a9.23 9.23 0 00-.24-2.19c-.317-1.31-1.062-2.31-2.18-3.043a5.022 5.022 0 00-1.877-.726 10.496 10.496 0 00-1.564-.15c-.04-.003-.083-.01-.124-.013H5.986c-.152.01-.303.017-.455.026-.747.043-1.49.123-2.193.4-1.336.53-2.3 1.452-2.865 2.78-.192.448-.292.925-.363 1.408-.056.392-.088.785-.1 1.18 0 .032-.007.062-.01.093v12.223c.01.14.017.283.027.424.05.815.154 1.624.497 2.373.65 1.42 1.738 2.353 3.234 2.801.42.127.856.187 1.293.228.555.053 1.11.06 1.667.06h11.03a12.5 12.5 0 001.57-.1c.822-.106 1.596-.35 2.295-.81a5.046 5.046 0 001.88-2.207c.186-.42.293-.87.37-1.324.113-.675.138-1.358.137-2.04-.002-3.8 0-7.595-.003-11.393zm-6.423 3.99v5.712c0 .417-.058.827-.244 1.206-.29.59-.76.962-1.388 1.14-.35.1-.706.157-1.07.173-.95.045-1.773-.6-1.943-1.536a1.88 1.88 0 011.038-2.022c.323-.16.67-.25 1.018-.324.378-.082.758-.153 1.134-.24.274-.063.457-.23.51-.516a.904.904 0 00.02-.193c0-1.815 0-3.63-.002-5.443a.725.725 0 00-.026-.185c-.04-.15-.15-.243-.304-.234-.16.01-.318.035-.475.066-.76.15-1.52.303-2.28.456l-2.325.47-1.374.278c-.016.003-.032.01-.048.013-.277.077-.377.203-.39.49-.002.042 0 .086 0 .13-.002 2.602 0 5.204-.003 7.805 0 .42-.047.836-.215 1.227-.278.64-.77 1.04-1.434 1.233-.35.1-.71.16-1.075.172-.96.036-1.755-.6-1.92-1.544-.14-.812.23-1.685 1.154-2.075.357-.15.73-.232 1.108-.31.287-.06.575-.116.86-.177.383-.083.583-.323.6-.714v-.15c0-2.96 0-5.922.002-8.882 0-.123.013-.25.042-.37.07-.285.273-.448.546-.518.255-.066.515-.112.774-.165.733-.15 1.466-.296 2.2-.444l2.27-.46c.67-.134 1.34-.27 2.01-.403.22-.043.442-.088.663-.106.31-.025.523.17.554.482.008.073.012.148.012.223.002 1.91.002 3.822 0 5.732z" />
|
||||
</svg>
|
||||
{{- else if (eq $icon_name "applepodcasts") -}}
|
||||
<svg height="32px" width="32px" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="currentColor">
|
||||
<path
|
||||
d="M5.34 0A5.328 5.328 0 000 5.34v13.32A5.328 5.328 0 005.34 24h13.32A5.328 5.328 0 0024 18.66V5.34A5.328 5.328 0 0018.66 0zm6.525 2.568c2.336 0 4.448.902 6.056 2.587 1.224 1.272 1.912 2.619 2.264 4.392.12.59.12 2.2.007 2.864a8.506 8.506 0 01-3.24 5.296c-.608.46-2.096 1.261-2.336 1.261-.088 0-.096-.091-.056-.46.072-.592.144-.715.48-.856.536-.224 1.448-.874 2.008-1.435a7.644 7.644 0 002.008-3.536c.208-.824.184-2.656-.048-3.504-.728-2.696-2.928-4.792-5.624-5.352-.784-.16-2.208-.16-3 0-2.728.56-4.984 2.76-5.672 5.528-.184.752-.184 2.584 0 3.336.456 1.832 1.64 3.512 3.192 4.512.304.2.672.408.824.472.336.144.408.264.472.856.04.36.03.464-.056.464-.056 0-.464-.176-.896-.384l-.04-.03c-2.472-1.216-4.056-3.274-4.632-6.012-.144-.706-.168-2.392-.03-3.04.36-1.74 1.048-3.1 2.192-4.304 1.648-1.737 3.768-2.656 6.128-2.656zm.134 2.81c.409.004.803.04 1.106.106 2.784.62 4.76 3.408 4.376 6.174-.152 1.114-.536 2.03-1.216 2.88-.336.43-1.152 1.15-1.296 1.15-.023 0-.048-.272-.048-.603v-.605l.416-.496c1.568-1.878 1.456-4.502-.256-6.224-.664-.67-1.432-1.064-2.424-1.246-.64-.118-.776-.118-1.448-.008-1.02.167-1.81.562-2.512 1.256-1.72 1.704-1.832 4.342-.264 6.222l.413.496v.608c0 .336-.027.608-.06.608-.03 0-.264-.16-.512-.36l-.034-.011c-.832-.664-1.568-1.842-1.872-2.997-.184-.698-.184-2.024.008-2.72.504-1.878 1.888-3.335 3.808-4.019.41-.145 1.133-.22 1.814-.211zm-.13 2.99c.31 0 .62.06.844.178.488.253.888.745 1.04 1.259.464 1.578-1.208 2.96-2.72 2.254h-.015c-.712-.331-1.096-.956-1.104-1.77 0-.733.408-1.371 1.112-1.745.224-.117.534-.176.844-.176zm-.011 4.728c.988-.004 1.706.349 1.97.97.198.464.124 1.932-.218 4.302-.232 1.656-.36 2.074-.68 2.356-.44.39-1.064.498-1.656.288h-.003c-.716-.257-.87-.605-1.164-2.644-.341-2.37-.416-3.838-.218-4.302.262-.616.974-.966 1.97-.97z" />
|
||||
</svg>
|
||||
|
||||
{{- else if (eq $icon_name "bilibili") -}}
|
||||
<svg height="32px" width="32px" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<rect x="1.3333" y="6" width="21.333" height="15.333" rx="4" ry="4" />
|
||||
<path d="m8 12.4v1.2" />
|
||||
<path d="m16 12.4v1.2" />
|
||||
<path d="m5.8853 2.6667 2.6667 2.6667" />
|
||||
<path d="m18.115 2.6667-2.6667 2.6667" />
|
||||
</svg>
|
||||
{{- else if (eq $icon_name "bitcoin") -}}
|
||||
<svg height="32px" width="32px" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="currentColor">
|
||||
<path
|
||||
d="M23.638 14.904c-1.602 6.43-8.113 10.34-14.542 8.736C2.67 22.05-1.244 15.525.362 9.105 1.962 2.67 8.475-1.243 14.9.358c6.43 1.605 10.342 8.115 8.738 14.548v-.002zm-6.35-4.613c.24-1.59-.974-2.45-2.64-3.03l.54-2.153-1.315-.33-.525 2.107c-.345-.087-.705-.167-1.064-.25l.526-2.127-1.32-.33-.54 2.165c-.285-.067-.565-.132-.84-.2l-1.815-.45-.35 1.407s.975.225.955.236c.535.136.63.486.615.766l-1.477 5.92c-.075.166-.24.406-.614.314.015.02-.96-.24-.96-.24l-.66 1.51 1.71.426.93.242-.54 2.19 1.32.327.54-2.17c.36.1.705.19 1.05.273l-.51 2.154 1.32.33.545-2.19c2.24.427 3.93.257 4.64-1.774.57-1.637-.03-2.58-1.217-3.196.854-.193 1.5-.76 1.68-1.93h.01zm-3.01 4.22c-.404 1.64-3.157.75-4.05.53l.72-2.9c.896.23 3.757.67 3.33 2.37zm.41-4.24c-.37 1.49-2.662.735-3.405.55l.654-2.64c.744.18 3.137.524 2.75 2.084v.006z" />
|
||||
</svg>
|
||||
|
||||
|
||||
{{- else if (eq $icon_name "email") -}}
|
||||
<svg height="32px" width="32px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 21" fill="none" stroke="currentColor" stroke-width="2"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"></path>
|
||||
<polyline points="22,6 12,13 2,6"></polyline>
|
||||
</svg>
|
||||
{{- else if (eq $icon_name "facebook") -}}
|
||||
<svg height="32px" width="32px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"></path>
|
||||
</svg>
|
||||
|
||||
|
||||
{{- else if (eq $icon_name "github") -}}
|
||||
<svg height="32px" width="32px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<path
|
||||
d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22">
|
||||
</path>
|
||||
</svg>
|
||||
{{- else if (eq $icon_name "gitlab") -}}
|
||||
<svg height="32px" width="32px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<path
|
||||
d="M22.65 14.39L12 22.13 1.35 14.39a.84.84 0 0 1-.3-.94l1.22-3.78 2.44-7.51A.42.42 0 0 1 4.82 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.49h8.1l2.44-7.51A.42.42 0 0 1 18.6 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.51L23 13.45a.84.84 0 0 1-.35.94z">
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
{{- else if (eq $icon_name "instagram") -}}
|
||||
<svg height="32px" width="32px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<rect x="2" y="2" width="20" height="20" rx="5" ry="5"></rect>
|
||||
<path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"></path>
|
||||
<line x1="17.5" y1="6.5" x2="17.5" y2="6.5"></line>
|
||||
</svg>
|
||||
|
||||
|
||||
{{- else if (eq $icon_name "linkedin") -}}
|
||||
<svg height="32px" width="32px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path>
|
||||
<rect x="2" y="9" width="4" height="12"></rect>
|
||||
<circle cx="4" cy="4" r="2"></circle>
|
||||
</svg>
|
||||
{{- else if (eq $icon_name "mastodon") -}}
|
||||
<svg height="32px" width="32px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<path
|
||||
d="M21.58 13.913c-.29 1.469-2.592 3.121-5.238 3.396-1.379.184-2.737.368-4.185.276-2.368-.092-4.237-.551-4.237-.551 0 .184.014.459.043.643.308 2.294 2.317 2.478 4.22 2.57 1.922 0 3.633-.46 3.633-.46l.079 1.653s-1.344.734-3.738.918c-1.32.091-2.96-.092-4.869-.551-4.14-1.102-4.853-5.507-4.961-10.005-.034-1.285-.013-2.57-.013-3.58 0-4.589 3-5.966 3-5.966 1.513-.734 4.11-1.01 6.808-1.01h.067c2.699 0 5.296.276 6.81 1.01 0 0 3 1.377 3 5.967 0 0 .037 3.304-.419 5.69"
|
||||
stroke="currentColor" />
|
||||
<path
|
||||
d="M17.832 8.633v5h-1.978V8.78c0-1.023-.43-1.542-1.29-1.542-.95 0-1.427.616-1.427 1.834v2.655H11.17V9.072c0-1.218-.476-1.834-1.427-1.834-.86 0-1.29.52-1.29 1.542v4.852H6.475V8.633c0-1.022.26-1.834.782-2.434.538-.6 1.243-.909 2.118-.909 1.012 0 1.779.39 2.286 1.169l.492.827.493-.827c.507-.78 1.274-1.169 2.286-1.169.875 0 1.58.308 2.118.909.522.6.782 1.412.782 2.434"
|
||||
fill="currentColor" stroke="none" />
|
||||
</svg>
|
||||
|
||||
{{- else if (eq $icon_name "medium") -}}
|
||||
<svg height="32px" width="32px" version="1.0" xmlns="http://www.w3.org/2000/svg" fill="currentColor" stroke-width="2"
|
||||
viewBox="0 0 76.000000 76.000000" preserveAspectRatio="xMidYMid meet">
|
||||
<g transform="translate(0.000000,76.000000) scale(0.100000,-0.100000)">
|
||||
<path
|
||||
d="M0 380 l0 -380 380 0 380 0 0 380 0 380 -380 0 -380 0 0 -380z m334 85 c30 -63 57 -115 59 -115 2 0 16 30 31 68 15 37 37 88 49 115 l20 47 76 0 76 -1 -27 -20 -28 -21 0 -151 c0 -150 0 -151 27 -179 l27 -28 -109 0 -109 0 27 28 c26 27 27 32 26 143 0 131 3 134 -71 -58 -24 -62 -48 -113 -53 -113 -6 0 -17 16 -24 35 -7 19 -36 83 -64 142 l-52 108 -3 -98 c-3 -97 -2 -99 28 -133 16 -19 30 -39 30 -44 0 -6 -31 -10 -70 -10 -45 0 -70 4 -70 11 0 6 14 27 30 46 30 33 30 35 30 151 0 116 0 118 -31 155 l-30 37 75 0 76 0 54 -115z" />
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
{{- else if (eq $icon_name "paypal") -}}
|
||||
<svg height="32px" width="32px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<path
|
||||
d="M7.144 19.532l1.049-5.751c.11-.606.691-1.002 1.304-.948 2.155.192 6.877.1 8.818-4.002 2.554-5.397-.59-7.769-6.295-7.769H7.43a1.97 1.97 0 0 0-1.944 1.655L2.77 19.507a.857.857 0 0 0 .846.994h2.368a1.18 1.18 0 0 0 1.161-.969zM7.967 22.522a.74.74 0 0 0 .666.416h2.313c.492 0 .923-.351 1.003-.837l.759-4.601c.095-.523.597-.866 1.127-.819 1.86.166 5.567-.118 6.85-3.821.554-1.6.705-2.954.408-4.018"
|
||||
style="font-variation-settings:normal" stroke="currentColor" stroke-linejoin="miter" />
|
||||
</svg>
|
||||
{{- else if (eq $icon_name "peertube") -}}
|
||||
<svg height="32px" width="32px" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="currentColor">
|
||||
<path d="M12 6.545v10.91L20.727 12M3.273 12v12L12 17.455M3.273 0v12L12 6.545" />
|
||||
</svg>
|
||||
|
||||
{{- else if (eq $icon_name "phone") -}}
|
||||
<svg height="32px" width="32px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect x="9" y="4" width="6" height="1" rx="0.5" fill="currentColor" />
|
||||
<path
|
||||
d="M12 20C12.2652 20 12.5196 19.8946 12.7071 19.7071C12.8946 19.5196 13 19.2652 13 19C13 18.7348 12.8946 18.4804 12.7071 18.2929C12.5196 18.1054 12.2652 18 12 18C11.7348 18 11.4804 18.1054 11.2929 18.2929C11.1054 18.4804 11 18.7348 11 19C11 19.2652 11.1054 19.5196 11.2929 19.7071C11.4804 19.8946 11.7348 20 12 20Z"
|
||||
fill="currentColor" />
|
||||
<rect x="5" y="1" width="14" height="22" rx="2" stroke="currentColor" stroke-width="2" />
|
||||
</svg>
|
||||
|
||||
{{- else if (eq $icon_name "qq") -}}
|
||||
<svg height="32px" width="32px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<path transform="scale(0.04) translate(75 40)" stroke-width="50"
|
||||
d="M433.754 420.445c-11.526 1.393-44.86-52.741-44.86-52.741 0 31.345-16.136 72.247-51.051 101.786 16.842 5.192 54.843 19.167 45.803 34.421-7.316 12.343-125.51 7.881-159.632 4.037-34.122 3.844-152.316 8.306-159.632-4.037-9.045-15.25 28.918-29.214 45.783-34.415-34.92-29.539-51.059-70.445-51.059-101.792 0 0-33.334 54.134-44.859 52.741-5.37-.65-12.424-29.644 9.347-99.704 10.261-33.024 21.995-60.478 40.144-105.779C60.683 98.063 108.982.006 224 0c113.737.006 163.156 96.133 160.264 214.963 18.118 45.223 29.912 72.85 40.144 105.778 21.768 70.06 14.716 99.053 9.346 99.704z">
|
||||
</path>
|
||||
</svg>
|
||||
{{- else if (eq $icon_name "reddit") -}}
|
||||
<svg height="32px" width="32px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" stroke="none" stroke-width="1">
|
||||
<path
|
||||
d="M24 11.779c0-1.459-1.192-2.645-2.657-2.645-.715 0-1.363.286-1.84.746-1.81-1.191-4.259-1.949-6.971-2.046l1.483-4.669 4.016.941-.006.058c0 1.193.975 2.163 2.174 2.163 1.198 0 2.172-.97 2.172-2.163s-.975-2.164-2.172-2.164c-.92 0-1.704.574-2.021 1.379l-4.329-1.015c-.189-.046-.381.063-.44.249l-1.654 5.207c-2.838.034-5.409.798-7.3 2.025-.474-.438-1.103-.712-1.799-.712-1.465 0-2.656 1.187-2.656 2.646 0 .97.533 1.811 1.317 2.271-.052.282-.086.567-.086.857 0 3.911 4.808 7.093 10.719 7.093s10.72-3.182 10.72-7.093c0-.274-.029-.544-.075-.81.832-.447 1.405-1.312 1.405-2.318zm-17.224 1.816c0-.868.71-1.575 1.582-1.575.872 0 1.581.707 1.581 1.575s-.709 1.574-1.581 1.574-1.582-.706-1.582-1.574zm9.061 4.669c-.797.793-2.048 1.179-3.824 1.179l-.013-.003-.013.003c-1.777 0-3.028-.386-3.824-1.179-.145-.144-.145-.379 0-.523.145-.145.381-.145.526 0 .65.647 1.729.961 3.298.961l.013.003.013-.003c1.569 0 2.648-.315 3.298-.962.145-.145.381-.144.526 0 .145.145.145.379 0 .524zm-.189-3.095c-.872 0-1.581-.706-1.581-1.574 0-.868.709-1.575 1.581-1.575s1.581.707 1.581 1.575-.709 1.574-1.581 1.574z" />
|
||||
</svg>
|
||||
|
||||
{{- else if (eq $icon_name "rss") -}}
|
||||
<svg height="32px" width="32px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<path d="M4 11a9 9 0 0 1 9 9" />
|
||||
<path d="M4 4a16 16 0 0 1 16 16" />
|
||||
<circle cx="5" cy="19" r="1" />
|
||||
</svg>
|
||||
|
||||
{{- else if (eq $icon_name "slack") -}}
|
||||
<svg height="32px" width="32px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<path d="M22.08 9C19.81 1.41 16.54-.35 9 1.92S-.35 7.46 1.92 15 7.46 24.35 15 22.08 24.35 16.54 22.08 9z"></path>
|
||||
<line x1="12.57" y1="5.99" x2="16.15" y2="16.39"></line>
|
||||
<line x1="7.85" y1="7.61" x2="11.43" y2="18.01"></line>
|
||||
<line x1="16.39" y1="7.85" x2="5.99" y2="11.43"></line>
|
||||
<line x1="18.01" y1="12.57" x2="7.61" y2="16.15"></line>
|
||||
</svg>
|
||||
{{- else if (eq $icon_name "snapchat") -}}
|
||||
<svg height="32px" width="32px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="currentColor">
|
||||
<path
|
||||
d="M12.206.793c.99 0 4.347.276 5.93 3.821.529 1.193.403 3.219.299 4.847l-.003.06c-.012.18-.022.345-.03.51.075.045.203.09.401.09.3-.016.659-.12 1.033-.301.165-.088.344-.104.464-.104.182 0 .359.029.509.09.45.149.734.479.734.838.015.449-.39.839-1.213 1.168-.089.029-.209.075-.344.119-.45.135-1.139.36-1.333.81-.09.224-.061.524.12.868l.015.015c.06.136 1.526 3.475 4.791 4.014.255.044.435.27.42.509 0 .075-.015.149-.045.225-.24.569-1.273.988-3.146 1.271-.059.091-.12.375-.164.57-.029.179-.074.36-.134.553-.076.271-.27.405-.555.405h-.03c-.135 0-.313-.031-.538-.074-.36-.075-.765-.135-1.273-.135-.3 0-.599.015-.913.074-.6.104-1.123.464-1.723.884-.853.599-1.826 1.288-3.294 1.288-.06 0-.119-.015-.18-.015h-.149c-1.468 0-2.427-.675-3.279-1.288-.599-.42-1.107-.779-1.707-.884-.314-.045-.629-.074-.928-.074-.54 0-.958.089-1.272.149-.211.043-.391.074-.54.074-.374 0-.523-.224-.583-.42-.061-.192-.09-.389-.135-.567-.046-.181-.105-.494-.166-.57-1.918-.222-2.95-.642-3.189-1.226-.031-.063-.052-.15-.055-.225-.015-.243.165-.465.42-.509 3.264-.54 4.73-3.879 4.791-4.02l.016-.029c.18-.345.224-.645.119-.869-.195-.434-.884-.658-1.332-.809-.121-.029-.24-.074-.346-.119-1.107-.435-1.257-.93-1.197-1.273.09-.479.674-.793 1.168-.793.146 0 .27.029.383.074.42.194.789.3 1.104.3.234 0 .384-.06.465-.105l-.046-.569c-.098-1.626-.225-3.651.307-4.837C7.392 1.077 10.739.807 11.727.807l.419-.015h.06z" />
|
||||
</svg>
|
||||
{{- else if (eq $icon_name "spotify") -}}
|
||||
<svg height="32px" width="32px" fill="currentColor" stoke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M12 0C5.4 0 0 5.4 0 12s5.4 12 12 12 12-5.4 12-12S18.66 0 12 0zm5.521 17.34c-.24.359-.66.48-1.021.24-2.82-1.74-6.36-2.101-10.561-1.141-.418.122-.779-.179-.899-.539-.12-.421.18-.78.54-.9 4.56-1.021 8.52-.6 11.64 1.32.42.18.479.659.301 1.02zm1.44-3.3c-.301.42-.841.6-1.262.3-3.239-1.98-8.159-2.58-11.939-1.38-.479.12-1.02-.12-1.14-.6-.12-.48.12-1.021.6-1.141C9.6 9.9 15 10.561 18.72 12.84c.361.181.54.78.241 1.2zm.12-3.36C15.24 8.4 8.82 8.16 5.16 9.301c-.6.179-1.2-.181-1.38-.721-.18-.601.18-1.2.72-1.381 4.26-1.26 11.28-1.02 15.721 1.621.539.3.719 1.02.419 1.56-.299.421-1.02.599-1.559.3z" />
|
||||
</svg>
|
||||
{{- else if (eq $icon_name "stackoverflow") -}}
|
||||
<svg height="32px" width="32px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<path
|
||||
d="M2.913 16.041v6.848h17.599v-6.848M7.16 18.696h8.925M7.65 13.937l8.675 1.8M9.214 9.124l8.058 3.758M12.086 4.65l6.849 5.66M15.774 1.111l5.313 7.162" />
|
||||
</svg>
|
||||
{{- else if (eq $icon_name "steam") -}}
|
||||
<svg height="32px" width="32px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" stroke="none">
|
||||
<path
|
||||
d="M11.979 0C5.678 0 .511 4.86.022 11.037l6.432 2.658c.545-.371 1.203-.59 1.912-.59.063 0 .125.004.188.006l2.861-4.142V8.91c0-2.495 2.028-4.524 4.524-4.524 2.494 0 4.524 2.031 4.524 4.527s-2.03 4.525-4.524 4.525h-.105l-4.076 2.911c0 .052.004.105.004.159 0 1.875-1.515 3.396-3.39 3.396-1.635 0-3.016-1.173-3.331-2.727L.436 15.27C1.862 20.307 6.486 24 11.979 24c6.627 0 11.999-5.373 11.999-12S18.605 0 11.979 0zM7.54 18.21l-1.473-.61c.262.543.714.999 1.314 1.25 1.297.539 2.793-.076 3.332-1.375.263-.63.264-1.319.005-1.949s-.75-1.121-1.377-1.383c-.624-.26-1.29-.249-1.878-.03l1.523.63c.956.4 1.409 1.5 1.009 2.455-.397.957-1.497 1.41-2.454 1.012H7.54zm11.415-9.303c0-1.662-1.353-3.015-3.015-3.015-1.665 0-3.015 1.353-3.015 3.015 0 1.665 1.35 3.015 3.015 3.015 1.663 0 3.015-1.35 3.015-3.015zm-5.273-.005c0-1.252 1.013-2.266 2.265-2.266 1.249 0 2.266 1.014 2.266 2.266 0 1.251-1.017 2.265-2.266 2.265-1.253 0-2.265-1.014-2.265-2.265z" />
|
||||
</svg>
|
||||
|
||||
{{- else if (eq $icon_name "telegram") -}}
|
||||
<svg height="32px" width="32px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<path
|
||||
d="M21.198 2.433a2.242 2.242 0 0 0-1.022.215l-8.609 3.33c-2.068.8-4.133 1.598-5.724 2.21a405.15 405.15 0 0 1-2.849 1.09c-.42.147-.99.332-1.473.901-.728.968.193 1.798.919 2.286 1.61.516 3.275 1.009 4.654 1.472.509 1.793.997 3.592 1.48 5.388.16.36.506.494.864.498l-.002.018s.281.028.555-.038a2.1 2.1 0 0 0 .933-.517c.345-.324 1.28-1.244 1.811-1.764l3.999 2.952.032.018s.442.311 1.09.355c.324.022.75-.04 1.116-.308.37-.27.613-.702.728-1.196.342-1.492 2.61-12.285 2.997-14.072l-.01.042c.27-1.006.17-1.928-.455-2.474a1.654 1.654 0 0 0-1.034-.407z" />
|
||||
</svg>
|
||||
{{- else if (eq $icon_name "tiktok") -}}
|
||||
<svg height="32px" width="32px" version="1.0" xmlns="http://www.w3.org/2000/svg" fill="currentColor" stroke-width="2"
|
||||
viewBox="0 0 76.000000 76.000000" preserveAspectRatio="xMidYMid meet">
|
||||
<path d="M65.9,19.4c1.4,0.2,2.8,0.1,2.8,0.1s0,6.2,0,12.2c-6.3,0-12.1-2-16.8-5.4V51c0.1,20-24.6,29.8-38.3,15.6
|
||||
c-14.7-15.1-2.1-40.5,19-37.7v12.3c-9.5-3-17.2,8-11.2,15.9c5.8,7.7,18.3,3.6,18.3-6.1c0,0,0-48.2,0-48.2c2.4,0,9.9,0,12.2,0v1.6
|
||||
c0.7,7.4,6.1,13.4,13.3,15v0C65.4,19.3,65.6,19.4,65.9,19.4z" />
|
||||
</svg>
|
||||
{{- else if (eq $icon_name "twitter") -}}
|
||||
<svg height="32px" width="32px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<path
|
||||
d="M23 3a10.9 10.9 0 0 1-3.14 1.53 4.48 4.48 0 0 0-7.86 3v1A10.66 10.66 0 0 1 3 4s-4 9 5 13a11.64 11.64 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0-.08-.83A7.72 7.72 0 0 0 23 3z">
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
{{- else if (eq $icon_name "youtube") -}}
|
||||
<svg height="32px" width="32px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<path
|
||||
d="M22.54 6.42a2.78 2.78 0 0 0-1.94-2C18.88 4 12 4 12 4s-6.88 0-8.6.46a2.78 2.78 0 0 0-1.94 2A29 29 0 0 0 1 11.75a29 29 0 0 0 .46 5.33A2.78 2.78 0 0 0 3.4 19c1.72.46 8.6.46 8.6.46s6.88 0 8.6-.46a2.78 2.78 0 0 0 1.94-2 29 29 0 0 0 .46-5.25 29 29 0 0 0-.46-5.33z">
|
||||
</path>
|
||||
<polygon points="9.75 15.02 15.5 11.75 9.75 8.48 9.75 15.02"></polygon>
|
||||
</svg>
|
||||
{{- else if $icon_name -}}
|
||||
<svg height="32px" width="32px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
||||
stroke-linecap="round" stroke-linejoin="round">
|
||||
<path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path>
|
||||
<path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path>
|
||||
</svg>
|
||||
{{- end -}}
|
34
layouts/partials/toc.html
Normal file
34
layouts/partials/toc.html
Normal file
@ -0,0 +1,34 @@
|
||||
{{- $toc := .TableOfContents -}}
|
||||
{{- if $toc -}}
|
||||
<!-- When the $toc variable is not empty, generate the table of contents for the article -->
|
||||
<div class="post-toc">
|
||||
{{ if and (gt .WordCount 80) (.Params.toc | default true) }}
|
||||
<aside>
|
||||
<button id="tocButton" ><h4 id="contents" style="margin-left: 1vw;color:rgb(96, 134, 180);margin-bottom: 0;">CONTENTS</h4></button>
|
||||
<div id="hide">
|
||||
{{- $toc := replaceRE `<ul>\n<li>\n<ul>` `<ul>` $toc -}}
|
||||
{{- safeHTML $toc -}}
|
||||
</div>
|
||||
</aside>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{- end -}}
|
||||
<script>
|
||||
// document.addEventListener('DOMContentLoaded', function() {
|
||||
let button = document.getElementById('tocButton');
|
||||
let hide = document.getElementById("hide");
|
||||
let contents=document.getElementById("contents");
|
||||
button.addEventListener("click", function() {
|
||||
if (hide.style.display!='block') {
|
||||
hide.style.display='block'
|
||||
} else {
|
||||
hide.style.display='none'
|
||||
contents.style.color='rgb(96, 134, 180)'
|
||||
}
|
||||
});
|
||||
// });
|
||||
|
||||
|
||||
|
||||
|
||||
</script>
|
32
layouts/post/list.html
Normal file
32
layouts/post/list.html
Normal file
@ -0,0 +1,32 @@
|
||||
{{ define "main" }}
|
||||
<div class="container">
|
||||
<div class="section">
|
||||
<div class="content">
|
||||
<h1 class="h1-title">Archives</h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="archive-container column is-centered">
|
||||
<div class="archive">
|
||||
|
||||
{{ range (where (where site.RegularPages "Type" "in" site.Params.mainSections) ".Params.draft" "!=" true).GroupByDate "2006" }}
|
||||
<h2 class="archive-title">{{ .Key }}</h2>
|
||||
{{ range .Pages }}
|
||||
{{/* {{ range .Paginators.Pages }} */}}
|
||||
|
||||
<article class="archive-item">
|
||||
<a href="{{ .Permalink }}" class="archive-item-link hover-underline-animation">{{ .Title }}</a>
|
||||
<span class="archive-item-date">
|
||||
{{ .Date.Format "January 2, 2006" }}
|
||||
</span>
|
||||
|
||||
</article>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
{{ end }}
|
144
layouts/post/single.html
Normal file
144
layouts/post/single.html
Normal file
@ -0,0 +1,144 @@
|
||||
{{ define "main" }}
|
||||
{{ if .Params.protected }}
|
||||
<div id="verification">
|
||||
<!-- Show password entry box -->
|
||||
<div id="secret-word">Unlock it!</div>
|
||||
<form id="password-form" onsubmit="checkPassword(); return false;">
|
||||
<input type="password" name="password" id="password" placeholder="Please enter password" required>
|
||||
<input type="hidden" name="encryptedPassword" id="encrypted-password">
|
||||
<input type="submit" value="Submit" name="submit" id="submit">
|
||||
</form>
|
||||
</div>
|
||||
{{ end }}
|
||||
<!-- Display unencrypted diary contents -->
|
||||
<div class="single-container {{ if .Params.protected }}hidden{{ end }}">
|
||||
<div class="archive">
|
||||
<h1 class="title is-1">{{ .Title }}</h1>
|
||||
<div class="title subtitle heading is-6">
|
||||
<div class="author-info columns is-vcentered">
|
||||
<div class="column">
|
||||
<div class="columns is-vcentered is-mobile">
|
||||
{{ with .Site.Params.authorImage }}
|
||||
<div class="column is-narrow">
|
||||
<img src="{{ . }}" class="author-image">
|
||||
</div>
|
||||
{{ end }}
|
||||
<div class="column">
|
||||
<p>{{ .Site.Params.Author }}</p>
|
||||
<p><time>{{ .PublishDate.Format "January 2, 2006" }}</time>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="small-categories-container">
|
||||
{{ range $idx, $category := .Params.categories }}
|
||||
{{- if ne $idx 0 }}, {{ end }}<a href="{{ " categories/" | relURL }}{{ $category | urlize }}">{{
|
||||
$category }}</a>
|
||||
{{- end }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content article-content">
|
||||
<div class="toc-container">
|
||||
{{ partial "toc.html" . }}
|
||||
</div>
|
||||
{{ .Content }}
|
||||
</div>
|
||||
</div>
|
||||
<a href="#" id="scrollToTopButton">
|
||||
<svg t="1686753152588" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"
|
||||
p-id="3988" width="48" height="48">
|
||||
<path
|
||||
d="M518.5 360.3c-3.2-4.4-9.7-4.4-12.9 0l-178 246c-3.8 5.3 0 12.7 6.5 12.7H381c10.2 0 19.9-4.9 25.9-13.2L512 460.4l105.2 145.4c6 8.3 15.6 13.2 25.9 13.2H690c6.5 0 10.3-7.4 6.5-12.7l-178-246z"
|
||||
p-id="3989" fill="#FAB005"></path>
|
||||
<path
|
||||
d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64z m0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"
|
||||
p-id="3990" fill="#FAB005"></path>
|
||||
</svg>
|
||||
</a>
|
||||
|
||||
{{- /* Comment */ -}}
|
||||
{{- partial "comment.html" . -}}
|
||||
<div class="pp-container">
|
||||
<section class="pre-and-post">
|
||||
<div class="has-text-left">
|
||||
{{ with .PrevInSection }}
|
||||
<p>Previous post</p>
|
||||
<a href="{{ .Permalink }}">{{ .Title }}</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
<div class="has-text-right">
|
||||
{{ with .NextInSection }}
|
||||
<p>Next post</p>
|
||||
<a href="{{ .Permalink }}">{{ .Title }}</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<script></script>
|
||||
<script>
|
||||
// Quickly reach the top of the article
|
||||
document.getElementById('scrollToTopButton').addEventListener('click', function () {
|
||||
window.scrollTo({ top: 0, behavior: 'smooth' });
|
||||
});
|
||||
console.log('window.matchMedia("(max-width: 768px)").matches', window.matchMedia("(max-width: 768px)").matches)
|
||||
//Set the element to be displayed on mobile only when the mouse is scrolled up, not when it is scrolled down
|
||||
// if (window.matchMedia("(max-width: 768px)").matches) {
|
||||
// var prevScrollPos = window.pageYOffset;
|
||||
|
||||
// window.addEventListener('scroll', function () {
|
||||
// var currentScrollPos = window.pageYOffset;
|
||||
|
||||
// if (currentScrollPos < prevScrollPos) {
|
||||
// document.querySelector('#scrollToTopButton').style.display = 'block';
|
||||
// } else {
|
||||
// document.querySelector('#scrollToTopButton').style.display = 'none';
|
||||
// }
|
||||
|
||||
// prevScrollPos = currentScrollPos;
|
||||
// });
|
||||
// }
|
||||
|
||||
|
||||
// Set the mobile SUBMIT width to the width of the input box
|
||||
const passwordInput = document.querySelector("#password");
|
||||
const submitButton = document.querySelector("#submit");
|
||||
passwordInput.style.width = (passwordInput.scrollWidth) + "px";
|
||||
submitButton.style.width = window.getComputedStyle(passwordInput).width;
|
||||
|
||||
window.addEventListener('DOMContentLoaded', () => {
|
||||
const submitButton = document.getElementById('submit');
|
||||
submitButton.addEventListener('click', function (event) {
|
||||
event.preventDefault(); // Blocking the default form submission behavior
|
||||
checkPassword();
|
||||
});
|
||||
|
||||
function checkPassword() {
|
||||
const passwordInput = document.querySelector('input[name="password"]');
|
||||
const password = passwordInput.value;
|
||||
const correctPassword = "{{ .Params.password }}"; // Get the correct password from the article's meta information
|
||||
|
||||
if (password === correctPassword) {
|
||||
// Password verification successful, display the original content
|
||||
document.getElementById("verification").style.display = "none";
|
||||
document.querySelector(".single-container").classList.remove('hidden');
|
||||
//Hide password parameters
|
||||
hidePasswordFromURL()
|
||||
} else {
|
||||
// Password verification failed, error message displayed
|
||||
alert("Incorrect password. Please try again.");
|
||||
}
|
||||
}
|
||||
function hidePasswordFromURL() {
|
||||
const urlParams = new URLSearchParams(window.location.search);
|
||||
urlParams.set('password', '******');
|
||||
const newURL = window.location.pathname + '?' + urlParams.toString();
|
||||
window.history.replaceState({}, '', newURL);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
{{ end }}
|
2
layouts/shortcodes/rawhtml.html
Normal file
2
layouts/shortcodes/rawhtml.html
Normal file
@ -0,0 +1,2 @@
|
||||
<!-- raw html -->
|
||||
{{.Inner}}
|
Reference in New Issue
Block a user