changes working

This commit is contained in:
akilan
2020-05-10 20:47:17 +04:00
parent 8c14650b51
commit 2fca76e753
154 changed files with 6271 additions and 1 deletions

View File

@@ -0,0 +1,26 @@
<html>
{{ partial "head/head.html" . }}
<body class="line-numbers">
{{ $script := resources.Get "js/initColors.js" }}
<script src="{{ $script.RelPermalink }}"></script>
<div class="layout-styled">
{{ partial "header.html" . }}
{{ block "main" . }}
{{ end }}
{{ partial "footer.html" . }}
</div>
{{ $script := resources.Get "js/prism.js" }}
<script src="{{ $script.RelPermalink }}"></script>
</body>
</html>

View File

@@ -0,0 +1,4 @@
{{ define "main" }}
{{ partial "articles/hero.html" . }}
{{ partial "articles/articles.html" . }}
{{ end }}

View File

@@ -0,0 +1,13 @@
{{ define "main" }}
<section class="section narrow">
{{ partial "page/hero.html" . }}
<article id="articleContent" class="post-content">
{{ .Content }}
</article>
</section>
{{ end }}

View File

@@ -0,0 +1,10 @@
{{ define "main" }}
<section class="section narrow">
<section>
{{ partial "author/hero.html" . }}
{{ partial "author/articles_list.html" . }}
</section>
<div class="authors-gradient"></div>
</section>
{{ end }}

View File

@@ -0,0 +1,6 @@
{{ define "main" }}
{{ partial "articles/hero.html" . }}
{{ partial "articles/articles.html" . }}
{{ end }}

View File

@@ -0,0 +1,61 @@
{{ $authors := partialCached "func/GetArticleAuthors" . .File.UniqueID }}
{{ if eq (len $authors) 1 }}
{{ with $author := index $authors 0 }}
<a href="{{ .URL }}" class="article-author-link">
{{ with .avatar }}
<div class="article-author-avatar">
<img src="{{ . }}" />
</div>
{{ end }}
{{ with .name }}
<strong>{{ . }}</strong>
{{ end }}
<span class="hide-on-mobile">,&nbsp;</span>
</a>
{{ end }}
{{ else }}
<div class="article-coauthors-container">
{{ $avatarsWidth:= mul (len $authors) 15 }}
<span id="collapsedCoauthors" class="article-coauthors-collapsed">
<div class="article-coauthors-list" style="width: {{ $avatarsWidth }}px;">
{{ range $index, $author := $authors }}
{{ with .avatar }}
<div class="article-coauthors-avatar" style="left: {{ mul $index 15 }}px;">
<img src="{{ . }}" />
</div>
{{ end }}
{{ end }}
</div>
<strong class="article-coauthors-name-container">
{{ range $index, $author := $authors }}
{{ .firstname }}{{ if ne (add $index 1) (len $authors) }},{{ end }}
{{ end }}
</strong>
<div class="article-coauthors-icon-container">
{{ partial "icons/ui/toggle-open.html" . }}
</div>
</span>
<ul id="uncollapsedCoauthors" class="article-coauthors-list-open hidden">
<div id="uncollapsedAction" class="article-icon-open-container">
{{ partial "icons/ui/toggle-closed.html" . }}
</div>
{{ range $index, $author := $authors }}
<li class="article-coauthors-list-item-open">
<a href="{{ .URL }}" class="article-author-link">
{{ with $author.avatar }}
<div class="article-coauthor-avatar-open">
<img src="{{ . }}" />
</div>
{{ end }}
<strong class="article-author-name-open">{{ .name }}</strong>
</a>
</li>
{{ end }}
</ul>
</div>
{{ end }}
{{ $script := resources.Get "js/collapseAuthors.js" }}
<script src="{{ $script.RelPermalink }}"></script>

View File

@@ -0,0 +1,19 @@
<section id="articleHero" class="section narrow">
<div class="article-hero">
<header class="article-header">
<h1 class="article-hero-heading">{{ .Page.Params.Title }}</h1>
<div class="article-hero-subtitle">
<div class="article-meta">
{{ partial "article/authors.html" . }}
{{ .Page.Date.Format "January 2, 2006" }}
{{ with .Page.Params.timetoread }} • {{ . }} min read{{ end }}
</div>
</div>
</header>
{{ with .Page.Params.hero }}
<div class="article-hero-image" id="ArticleImage__Hero">
<img src="{{ . }}">
</div>
{{ end }}
</div>
</section>

View File

@@ -0,0 +1,58 @@
{{/*
Prints the next 2 articles in the same section or, if less or 2 found, the first (and potentially second) of the section.
@author @regisphilibert @mountainbug95
@context Type Page (.)
@access public
*/}}
{{/* declaring next empty slice */}}
{{ $next := slice }}
{{/* Checking if current article has a PrevInSection (Prev as we are ordering dsc here.) */}}
{{ with .PrevInSection }}
{{ $next = $next | append . }}
{{/* Checking for that "next" article own "next" to fill the "second next" */}}
{{ with .PrevInSection }}
{{ $next = $next | append . }}
{{ end }}
{{ end }}
{{/* If the number of found "next article" is less than two we need to find the first and potentially second article
of the whole section and append them to our $next slice. */}}
{{ $diff := sub 2 (len $next) }}
{{ if $diff }}
{{/* We use that diff number (if > 0) to grab the first x number of articles */}}
{{ $articles := partialCached "func/GetArticles" . "articles"}}
{{ $next = $next | append (first $diff $articles) }}
{{ end }}
<section id="articleNext" class="section nartrow">
<h3 class="footer-next-heading">More articles from {{ .Site.Title }}</h3>
<div class="footer-spacer"></div>
<div class="next-articles-grid" numberOfArticles={numberOfArticles}>
<div class="post-row">
{{ range $index, $article := $next }}
<a href="{{ $article.RelPermalink }}" class="article-link"
{{ if not $index}} id="article-link-bigger"{{ end }}>
<div>
<div class="image-container">
<img src="{{ $article.Params.hero }}" class="article-image" />
</div>
<div>
<h2 class="article-title">
{{ $article.Params.title }}
</h2>
<p class="article-excerpt">
{{ $article.Params.excerpt }}
</p>
<div class="article-metadata">
{{ $article.Date | dateFormat "January 1, 2006" }}{{ with $article.Params.timeToRead }} · {{ $article.Params.timeToRead }} min read{{ end }}
</div>
</div>
</div>
</a>
{{ end }}
</div>
</div>
</section>

View File

@@ -0,0 +1,14 @@
<aside id="progressBar" class="aside-container">
<div class="aside-align">
<div>
<div class="overlap-container">
</div>
</div>
</div>
<div class="progress-container" tabIndex={-1}>
<div class="track-line" aria-hidden="true">
<div id="progressIndicator" class="progress-line"></div>
</div>
</div>
</aside>

View File

@@ -0,0 +1,8 @@
<Section className="section narrow">
{{ partial "articles/list.html" . }}
<div class="articles-paginator">
</div>
</Section>
<div class="articles-gradient"></div>

View File

@@ -0,0 +1,19 @@
<Section class="section" relative id="Articles__Hero">
<div class="heading-container" style="maxWidth: {{ .Page.Params.hero.maxWidthPX }}px;">
<h1 class="hero-heading">{{ .Page.Params.hero.heading }}</h1>
</div>
<div class="subheading-container">
{{ partial "bio.html" . }}
<div class="grid-controls-container">
<button id="btnGrid" class="grid-button">
{{ partial "icons/ui/tiles.html" . }}
</button>
<button id="btnRows" class="grid-button">
{{ partial "icons/ui/rows.html" . }}
</button>
</div>
</div>
</Section>
{{ $script := resources.Get "js/toggleLayout.js" }}
<script src="{{ $script.RelPermalink }}"></script>

View File

@@ -0,0 +1,55 @@
<section class="section nartrow">
<div id="articlesList" class="articles-list-container show-details">
{{ $posts := partialCached "func/GetArticles" . "articles" }}
{{ $paginator := .Paginate $posts }}
{{ $biggerFirst := true }}
{{ $biggerPlaced := false }}
{{ range $index, $article := $paginator.Pages }}
{{ $counter := mod $index 2 }}
{{ if not $counter }}
<div class="post-row">
{{ end }}
<a href="{{ $article.RelPermalink }}" class="article-link"
{{ if and (eq ($biggerFirst) true) (eq ($biggerPlaced) false) }}
{{ if eq $counter 0 }}
id="article-link-bigger"
{{ $biggerPlaced = true }}
{{ end }}
{{ else if and (not $biggerFirst) (not $biggerPlaced) }}
{{ if ne $counter 0 }}
id="article-link-bigger"
{{ $biggerPlaced = true }}
{{ end }}
{{ end }}>
<div class="article-data-outer">
<div class="image-container">
<img src="{{ $article.Params.hero }}" class="article-image" />
</div>
<div class="article-data">
<h2 class="article-title">
{{ $article.Params.title }}
</h2>
<p class="article-excerpt">
{{ $article.Params.excerpt }}
</p>
<div class="article-metadata">
{{ $article.Date.Format "January 2, 2006" }}{{ if $article.Params.timetoread }} • {{ $article.Params.timetoread }} min read{{ end }}
</div>
</div>
</div>
</a>
{{ $counter := mod (add $index 1) 2 }}
{{ $len := (where .Pages "Type" "posts") }}
{{ if or (eq $counter 0) (eq (add $index 1) $len) }}
</div>
{{ $biggerPlaced = false }}
{{ if $biggerFirst }}
{{ $biggerFirst = false }}
{{ else }}
{{ $biggerFirst = true }}
{{ end }}
{{ end }}
{{ end }}
</div>
{{ partial "paginator/paginator.html" . }}
</section>

View File

@@ -0,0 +1,39 @@
<section class="section nartrow author-alc-section">
<div id="articlesList" class="articles-list-container show-details author-alc">
{{ $articles := .Pages }}
{{ $paginator := .Paginate .Pages }}
<div class="post-row-alt">
{{ $scratch := newScratch }}
{{ $scratch.Set "numPages" (len $paginator.Pages) }}
{{ range $index, $article := $paginator.Pages }}
{{ $counter := mod $index 2 }}
<a href="{{ .RelPermalink }}" class="article-link">
<div class="article-data-outer">
<div class="image-container">
<img src="{{ .Params.hero }}" class="article-image" />
</div>
<div class="article-data">
<h2 class="article-title">
{{ .Params.title }}
</h2>
<p class="article-excerpt">
{{ .Params.excerpt }}
</p>
<div class="article-metadata">
{{ .Date.Format "January 2, 2006" }}{{ if .Params.timetoread }} • {{ .Params.timetoread }} min read{{ end }}
</div>
</div>
</div>
</a>
{{ if eq ($scratch.Get "numPages") (add $index 1) }}
<a href="{{ .RelPermalink }}" style="opacity: 0;" class="article-link">
</a>
{{ end }}
{{ end }}
</div>
</div>
{{ partial "paginator/paginator.html" . }}
</section>
{{ $script := resources.Get "js/toggleBorder.js" }}
<script src="{{ $script.RelPermalink }}"></script>

View File

@@ -0,0 +1,14 @@
<section class="section narrow">
<div class="author-hero">
{{ with .Params.avatar }}
<div class="author-hero-image">
<img src="{{ . }}" />
</div>
{{ end }}
<h1 class="author-heading">{{ .Title }}</h1>
<p class="author-subheading">{{ .Params.bio }}</p>
<div class="author-social">
{{ partial "author/social_links.html" . }}
</div>
</div>
</section>

View File

@@ -0,0 +1,9 @@
<div class="social-icon-outer authors-sio">
<div class="social-icon-container">
{{ range $component := .Params.social }}
{{ $path := print "icons/social/" .title }}
<a href="{{ .url }}">{{ partial $path $ }}</a>
<span class="hidden">{{ .url }}</span>
{{ end }}
</div>
</div>

View File

@@ -0,0 +1,20 @@
<div class="bio-container">
{{ range site.Taxonomies.authors }}
{{ with .Page }}
{{ if .Params.featured }}
<a href="{{ .RelPermalink }}" class="bio-link">
{{ with .Params.avatar }}
<div class="bio-avatar">
<div class="bio-avatar-inner">
<img class="author-avatar" src="{{ . }}" />
</div>
</div>
{{ end }}
{{ with .Params.bio }}
<p class="bio-text">{{ . }}</p>
{{ end }}
</a>
{{ end }}
{{ end }}
{{ end }}
</div>

View File

@@ -0,0 +1,10 @@
<div class="footer-gradient"></div>
<div class="section narrow">
<div class="footer-hr"></div>
<div class="footer-container">
<div class="footer-text">
© {{ dateFormat "2006" now }} {{ .Site.Title }}
</div>
{{ partial "social-links/social-links.html" . }}
</div>
</div>

View File

@@ -0,0 +1,39 @@
{{/*
GetArticle Authors
Retrieve the authors assigned to a given article
@author @regisphilibert
@context Page (.) The article in quest
@access public
@return Slice
- String (.name)
- String (.URL)
- String (.name)
- String (.firstname)
@example - Go Template
{{ $authors := partialCached "func/GetArticleAuthors" . .File.UniqueID }}
*/}}
{{ $authors := slice }}
{{ with .Params.authors }}
{{ range $name := . }}
{{ with site.GetPage (printf "/%s/%s" "authors" ($name | urlize)) }}
{{ $firstname := "" }}
{{ $name := "" }}
{{ $avatar := false }}
{{ with .Title }}
{{ $name = . }}
{{ $firstname = index (split . " ") 0 }}
{{ end }}
{{ with .Params.avatar }}
{{ $avatar = . }}
{{ end }}
{{ $authors = $authors | append (dict "URL" .RelPermalink "name" $name "firstname" $firstname "avatar" $avatar) }}
{{ end }}
{{ end }}
{{ end }}
{{ return $authors }}

View File

@@ -0,0 +1,21 @@
{{/*
GetArticles
Retrieve article or posts
@author @regisphilibert
@context Page (.)
@access public
@return Collection
- Page (.)
@example - Go Template
{{ $articles := partialCached "func/GetArticles" . "articles" }}
*/}}
{{ $articles := slice }}
{{ with where site.RegularPages "Type" "post" }}
{{ $articles = . }}
{{ end }}
{{ return $articles }}

View File

@@ -0,0 +1,15 @@
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="icon" href="http://hwtech.club/images/output-onlinepngtools.png">
{{ $style := resources.Get "scss/global.scss" | toCSS | minify | fingerprint }}
<link rel="stylesheet" href="{{ $style.RelPermalink }}">
{{ $prism := resources.Get "css/prism.css" }}
<link rel="stylesheet" href="{{ $prism.RelPermalink }}" />
<link href="https://fonts.googleapis.com/css?family=Merriweather&display=swap" rel="stylesheet">
{{ partial "seo/print.html" . }}
{{ with .Params.forestry_instant_preview_id }}
{{- safeHTML (printf "<meta property='forestry_instant_preview_id' content='%s'>" .) -}}
{{ end -}}
</head>

View File

@@ -0,0 +1,33 @@
<Section class="section">
<div class="nav-container">
<a class="logo-link" href="/">
{{ partial "icons/ui/hwlogo.html" . }}
<!-- <img src="icons/ui/hwtechlogo.png"> -->
<span class="header-hidden">Navigate back to the homepage</span>
</a>
<div class="nav-controls">
<button id="copyButton" class="icon-wrapper">
{{ partial "icons/ui/link.html" . }}
<div id="toolTip" class="tool-tip " >
copied
</div>
<input id="copyText" style="opacity: 0;" type="text" class="tool-tip " />
</button>
<button id="themeColorButton" class="icon-wrapper">
<div id="sunRays" class="sun-rays"></div>
<div id="moonOrSun" class="moon-or-sun"></div>
<div id="moonMask" class="moon-mask"></div>
</button>
</div>
</div>
</Section>
{{ $script := resources.Get "js/toggleLogos.js" }}
<script src="{{ $script.RelPermalink }}"></script>
{{ $script := resources.Get "js/toggleColors.js" }}
<script src="{{ $script.RelPermalink }}"></script>
{{ $script := resources.Get "js/copyUrl.js" }}
<script src="{{ $script.RelPermalink }}"></script>

View File

@@ -0,0 +1,13 @@
<svg
class="social-icon-image"
width="14"
height="14"
viewBox="0 0 14 14"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M7 0C3.14016 0 0 3.14019 0 7C0 10.8598 3.14016 14 7 14C10.8598 14 14 10.8598 14 7C14 3.14019 10.8598 0 7 0ZM11.5616 3.30136C12.3475 4.26869 12.8313 5.48966 12.8715 6.82062C11.4158 6.51926 10.0977 6.55462 8.93404 6.78278C8.72334 6.29005 8.50523 5.82062 8.28509 5.37697C9.55235 4.83104 10.6556 4.13375 11.5616 3.30136ZM10.7731 2.49993C9.87371 3.32085 8.83147 3.92867 7.76427 4.37742C6.98097 2.945 6.23154 1.86633 5.775 1.25333C6.17032 1.16911 6.57995 1.12393 7 1.12393C8.4354 1.12393 9.75151 1.64199 10.7731 2.49993ZM4.63984 1.62041C4.98459 2.06714 5.80572 3.18567 6.68777 4.77709C4.47095 5.49933 2.31992 5.62101 1.28629 5.63232C1.71713 3.83253 2.97749 2.35262 4.63984 1.62041ZM1.13006 6.7591C1.14115 6.7591 1.15187 6.75918 1.16318 6.75918C1.8774 6.75918 3.18594 6.71115 4.72646 6.43024C5.60536 6.26997 6.43879 6.05425 7.22081 5.7869C7.42439 6.19264 7.62677 6.62064 7.82301 7.06923C6.72801 7.42177 5.8046 7.92904 5.07315 8.43271C3.84658 9.27739 2.9873 10.2145 2.51811 10.7939C1.64939 9.76944 1.12392 8.4453 1.12392 7C1.12392 6.91923 1.12677 6.83913 1.13006 6.7591ZM3.328 11.5826C3.73194 11.074 4.55412 10.1482 5.74346 9.33591C6.55171 8.78383 7.3879 8.37367 8.24875 8.10445C8.74822 9.39907 9.17464 10.8295 9.42887 12.3484C8.68798 12.6862 7.86602 12.8761 7 12.8761C5.61143 12.8761 4.33474 12.3909 3.328 11.5826ZM10.4629 11.7432C10.2009 10.3483 9.8101 9.03664 9.35836 7.83793C10.4695 7.65046 11.618 7.68912 12.7975 7.95407C12.5431 9.50435 11.6805 10.8519 10.4629 11.7432Z"
fill="#73737D"
/>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -0,0 +1,15 @@
<svg
class="social-icon-image"
width="7"
height="14"
viewBox="0 0 7 14"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M4.36849 7.36482H6.35279L6.64986 4.99457H4.36849V3.48124C4.36849 2.79501 4.55373 2.32731 5.5103 2.32731L6.73028 2.32673V0.206821C6.51919 0.17804 5.79505 0.113525 4.95257 0.113525C3.19363 0.113525 1.98943 1.21807 1.98943 3.24662V4.99464H0V7.36488H1.98936V13.4469L4.36849 13.4468V7.36482Z"
fill="#73737D"
/>
</svg>

After

Width:  |  Height:  |  Size: 488 B

View File

@@ -0,0 +1,15 @@
<svg
class="social-icon-image"
width="14"
height="14"
viewBox="0 0 14 14"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M7 0C3.1325 0 0 3.21173 0 7.17706C0 10.3529 2.00375 13.0353 4.78625 13.9863C5.13625 14.0491 5.2675 13.8338 5.2675 13.6454C5.2675 13.4749 5.25875 12.9097 5.25875 12.3087C3.5 12.6406 3.045 11.8691 2.905 11.4653C2.82625 11.259 2.485 10.622 2.1875 10.4516C1.9425 10.317 1.5925 9.98508 2.17875 9.97611C2.73 9.96714 3.12375 10.4964 3.255 10.7118C3.885 11.7973 4.89125 11.4923 5.29375 11.3039C5.355 10.8374 5.53875 10.5234 5.74 10.3439C4.1825 10.1645 2.555 9.54549 2.555 6.80026C2.555 6.01976 2.82625 5.37382 3.2725 4.87143C3.2025 4.692 2.9575 3.95635 3.3425 2.96951C3.3425 2.96951 3.92875 2.78111 5.2675 3.70516C5.8275 3.54367 6.4225 3.46293 7.0175 3.46293C7.6125 3.46293 8.2075 3.54367 8.7675 3.70516C10.1063 2.77214 10.6925 2.96951 10.6925 2.96951C11.0775 3.95635 10.8325 4.692 10.7625 4.87143C11.2087 5.37382 11.48 6.01079 11.48 6.80026C11.48 9.55446 9.84375 10.1645 8.28625 10.3439C8.54 10.5682 8.75875 10.9988 8.75875 11.6717C8.75875 12.6316 8.75 13.4032 8.75 13.6454C8.75 13.8338 8.88125 14.0581 9.23125 13.9863C11.9963 13.0353 14 10.3439 14 7.17706C14 3.21173 10.8675 0 7 0Z"
fill="#73737D"
/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1,27 @@
<svg
class="social-icon-image"
width="13"
height="13"
viewBox="0 0 13 13"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M-3.05176e-05 3.97163C-3.05176e-05 1.77803 1.77824 -0.000244141 3.97184 -0.000244141H9.0281C11.2217 -0.000244141 13 1.77802 13 3.97163V9.02788C13 11.2215 11.2217 12.9998 9.0281 12.9998H3.97184C1.77824 12.9998 -3.05176e-05 11.2215 -3.05176e-05 9.02789V3.97163ZM3.97184 1.281C2.48585 1.281 1.28122 2.48564 1.28122 3.97163V9.02789C1.28122 10.5139 2.48585 11.7185 3.97184 11.7185H9.0281C10.5141 11.7185 11.7187 10.5139 11.7187 9.02788V3.97163C11.7187 2.48564 10.5141 1.281 9.0281 1.281H3.97184Z"
fill="#73737D"
/>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M3.07483 6.55115C3.07483 4.64454 4.61242 3.09253 6.51702 3.09253C8.42162 3.09253 9.95921 4.64454 9.95921 6.55115C9.95921 8.45776 8.42162 10.0098 6.51702 10.0098C4.61242 10.0098 3.07483 8.45776 3.07483 6.55115ZM6.51702 4.37378C5.32709 4.37378 4.35608 5.34508 4.35608 6.55115C4.35608 7.75722 5.32709 8.72853 6.51702 8.72853C7.70695 8.72853 8.67796 7.75722 8.67796 6.55115C8.67796 5.34508 7.70695 4.37378 6.51702 4.37378Z"
fill="#73737D"
/>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M9.95062 3.87075C10.4035 3.87075 10.7706 3.50149 10.7706 3.04597C10.7706 2.59046 10.4035 2.22119 9.95062 2.22119C9.49776 2.22119 9.13065 2.59046 9.13065 3.04597C9.13065 3.50149 9.49776 3.87075 9.95062 3.87075Z"
fill="#73737D"
/>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1,16 @@
<svg
class="social-icon-image"
width="14"
height="14"
viewBox="0 0 14 14"
fill="none"
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M3.59615 13.125H0.871552V4.36523H3.59615V13.125ZM2.24847 3.16406C1.81878 3.16406 1.44769 3.00781 1.13519 2.69531C0.822692 2.38281 0.666443 2.01171 0.666443 1.58203C0.666443 1.15234 0.822692 0.781248 1.13519 0.468749C1.44769 0.156249 1.81878 0 2.24847 0C2.67816 0 3.04925 0.156249 3.36175 0.468749C3.67425 0.781248 3.8305 1.15234 3.8305 1.58203C3.8305 2.01171 3.67425 2.38281 3.36175 2.69531C3.04925 3.00781 2.67816 3.16406 2.24847 3.16406ZM13.7915 13.125H11.0669V8.84765C11.0669 8.14452 11.0083 7.63671 10.8911 7.32421C10.6763 6.79687 10.2563 6.5332 9.63134 6.5332C9.00634 6.5332 8.56689 6.76757 8.31298 7.23632C8.11767 7.58788 8.02001 8.10546 8.02001 8.78905V13.125H5.32471V4.36523H7.93212V5.5664H7.96142C8.15673 5.17578 8.46923 4.85351 8.89892 4.59961C9.36767 4.28711 9.91454 4.13086 10.5395 4.13086C11.8091 4.13086 12.6977 4.53125 13.2055 5.33203C13.5962 5.97656 13.7915 6.97265 13.7915 8.3203V13.125Z"
fill="#73737D"
/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,15 @@
<svg
class="social-icon-image"
width="13"
height="11"
viewBox="0 0 13 11"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M1.51041 2.69775C1.51041 2.5415 1.44965 2.40261 1.32812 2.28108L0.15625 0.874837V0.666504H3.82812L6.64061 6.86441L9.11456 0.666504H12.6041V0.874837L11.5885 1.83838C11.5017 1.90782 11.467 2.00331 11.4843 2.12483V9.20815C11.467 9.32968 11.5017 9.42516 11.5885 9.49461L12.5781 10.4581V10.6665H7.63019V10.4581L8.64581 9.46857C8.6979 9.41648 8.72828 9.37742 8.73696 9.35138C8.74564 9.32534 8.74998 9.26891 8.74998 9.18211V3.45296L5.93749 10.6404H5.54686L2.23958 3.45296V8.27065C2.22222 8.47898 2.28298 8.66128 2.42187 8.81753L3.74999 10.4321V10.6404H0V10.4321L1.32812 8.81753C1.48437 8.66128 1.54514 8.47898 1.51041 8.27065V2.69775Z"
fill="#73737D"
/>
</svg>

After

Width:  |  Height:  |  Size: 831 B

View File

@@ -0,0 +1,14 @@
<svg
class="social-icon-image"
width="14"
height="14"
viewBox="0 0 512 512"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M512 194.8c0 101.3-82.4 183.8-183.8 183.8-101.7 0-184.4-82.4-184.4-183.8 0-101.6 82.7-184.3 184.4-184.3C429.6 10.5 512 93.2 512 194.8zM0 501.5h90v-491H0v491z"
fill="#73737D"/>
</svg>

After

Width:  |  Height:  |  Size: 362 B

View File

@@ -0,0 +1,12 @@
<svg
class="social-icon-image"
width="14"
height="14"
viewBox="0 0 512 512"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M111.4 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.3c-7.6 0-13.1-6.6-12.1-13.9L58.8 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2zM357.1 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6z"
fill="#73737D"/>
</svg>

After

Width:  |  Height:  |  Size: 716 B

View File

@@ -0,0 +1,16 @@
<svg
class="social-icon-image"
width="16"
height="13"
viewBox="0 0 16 13"
fill="none"
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M14.0658 2.34438C14.7013 1.96349 15.1892 1.3604 15.419 0.641811C14.8244 0.994439 14.1658 1.25056 13.4648 1.3886C12.9034 0.7905 12.1036 0.416748 11.2185 0.416748C9.51888 0.416748 8.14096 1.79461 8.14096 3.49411C8.14096 3.7353 8.16822 3.97019 8.22068 4.19542C5.66301 4.06708 3.39543 2.84191 1.8776 0.980064C1.6127 1.43458 1.46094 1.96322 1.46094 2.52719C1.46094 3.59485 2.00428 4.5368 2.83003 5.08865C2.32553 5.07268 1.85104 4.93425 1.43608 4.70376C1.43586 4.71659 1.43586 4.72949 1.43586 4.74244C1.43586 6.23349 2.49666 7.47732 3.90448 7.75999C3.64622 7.83033 3.37436 7.86792 3.09366 7.86792C2.89537 7.86792 2.70257 7.84866 2.51471 7.81272C2.90629 9.03537 4.0428 9.92509 5.38945 9.94994C4.33623 10.7753 3.00928 11.2673 1.56749 11.2673C1.31911 11.2673 1.07413 11.2528 0.833374 11.2243C2.19527 12.0975 3.81291 12.6069 5.55081 12.6069C11.2113 12.6069 14.3067 7.91763 14.3067 3.85096C14.3067 3.71753 14.3037 3.5848 14.2978 3.45285C14.899 3.01896 15.4208 2.47694 15.8334 1.8598C15.2815 2.10456 14.6884 2.26998 14.0658 2.34438Z"
fill="#73737D"
/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1,10 @@
<svg
class="social-icon-image"
width="15"
height="15"
viewBox="0 0 32 32"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path d="M10 9V0H22V9H10ZM22 14H32V32H0V14H10V23H22V14Z" fill="#73737D" />
</svg>

After

Width:  |  Height:  |  Size: 204 B

View File

@@ -0,0 +1,59 @@
<svg
class="social-icon-image"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Layer_1"
x="0px"
y="0px"
viewBox="0 0 71.412065 50"
xml:space="preserve"
inkscape:version="0.91 r13725"
sodipodi:docname="YouTube_dark_icon (2017).svg"
width="17"
height="12"><metadata
id="metadata33"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs31" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1366"
inkscape:window-height="715"
id="namedview29"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="5.4355702"
inkscape:cx="30.091613"
inkscape:cy="15.29613"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1" /><style
type="text/css"
id="style3">
</style><g
id="g5"
transform="scale(0.58823529,0.58823529)"><path
class="st0"
d="M 118.9,13.3 C 117.5,8.1 113.4,4 108.2,2.6 98.7,0 60.7,0 60.7,0 60.7,0 22.7,0 13.2,2.5 8.1,3.9 3.9,8.1 2.5,13.3 0,22.8 0,42.5 0,42.5 0,42.5 0,62.3 2.5,71.7 3.9,76.9 8,81 13.2,82.4 22.8,85 60.7,85 60.7,85 c 0,0 38,0 47.5,-2.5 5.2,-1.4 9.3,-5.5 10.7,-10.7 2.5,-9.5 2.5,-29.2 2.5,-29.2 0,0 0.1,-19.8 -2.5,-29.3 z"
id="path7"
inkscape:connector-curvature="0"/><polygon
class="st1"
points="80.2,42.5 48.6,24.3 48.6,60.7 "
id="polygon9"
style="fill: var(--background-color); opacity: 0.7;" /></g></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -0,0 +1,12 @@
<svg
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M9.00016 16.1698L4.83016 11.9998L3.41016 13.4098L9.00016 18.9998L21.0002 6.99984L19.5902 5.58984L9.00016 16.1698Z"
fill="#08080B"
/>
</svg>

After

Width:  |  Height:  |  Size: 287 B

View File

@@ -0,0 +1,3 @@
<div id="logo-desktop">
<img src="http://hwtech.club/images/output-onlinepngtools.png" style="width:20rem">
</div>

View File

@@ -0,0 +1,15 @@
<svg
class="icon-image"
width="24"
height="20"
viewBox="0 0 24 20"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M2 5C2 3.34328 3.34328 2 5 2H14C15.6567 2 17 3.34328 17 5V9C17 10.6567 15.6567 12 14 12H10C9.44771 12 9 12.4477 9 13C9 13.5523 9.44771 14 10 14H14C16.7613 14 19 11.7613 19 9V5C19 2.23872 16.7613 0 14 0H5C2.23872 0 0 2.23872 0 5V9C0 10.4938 0.656313 11.8361 1.6935 12.7509C2.10768 13.1163 2.73961 13.0767 3.10494 12.6625C3.47028 12.2483 3.43068 11.6164 3.0165 11.2511C2.39169 10.6999 2 9.89621 2 9V5ZM7 11C7 9.34328 8.34328 8 10 8H14C14.5523 8 15 7.55228 15 7C15 6.44772 14.5523 6 14 6H10C7.23872 6 5 8.23872 5 11V15C5 17.7613 7.23872 20 10 20H19C21.7613 20 24 17.7613 24 15V11C24 9.50621 23.3437 8.16393 22.3065 7.24906C21.8923 6.88372 21.2604 6.92332 20.8951 7.3375C20.5297 7.75168 20.5693 8.38361 20.9835 8.74894C21.6083 9.30007 22 10.1038 22 11V15C22 16.6567 20.6567 18 19 18H10C8.34328 18 7 16.6567 7 15V11Z"
fill="#000"
/>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -0,0 +1,108 @@
<div id="logo-desktop">
<svg
width="192"
height="23"
viewBox="0 0 192 23"
fill="none"
xmlns="http://www.w3.org/2000/svg"
className="Logo__Desktop"
>
<g clipPath="url(#clip0)">
<path
d="M120.941 6.15477H122.453V2.83255L124.114 2.44922V6.15477H126.713V7.30477H124.114V16.377C124.114 17.314 124.54 17.7826 125.435 17.7826C125.925 17.7826 126.478 17.6335 126.904 17.4205L127.181 18.4214C126.606 18.7835 125.861 18.9964 124.86 18.9964C123.539 18.9964 122.432 18.3788 122.432 16.5261V7.30477H120.92V6.15477H120.941Z"
fill="#7A8085"
/>
<path
d="M131.739 7.77334C132.825 6.70852 134.273 5.89926 135.764 5.89926C137.723 5.89926 138.937 6.94278 138.937 9.17889V17.6122L140.555 17.8465V18.7409H137.233V9.58352C137.233 7.9863 136.616 7.30482 135.338 7.30482C134.166 7.30482 132.74 8.0076 131.739 8.90204V17.5909L133.442 17.8039V18.7196H128.416V17.8039L130.078 17.5909V1.29926L128.374 1.04371V0.0214844H131.739V7.77334V7.77334Z"
fill="#7A8085"
/>
<path
d="M141.854 12.4374C141.854 7.6883 143.92 5.89941 146.731 5.89941C149.648 5.89941 151.267 7.64571 151.267 11.9689V12.629H143.6C143.621 16.3772 144.686 17.8253 147.284 17.8253C148.605 17.8253 149.584 17.3994 150.5 16.7818L151.096 17.6124C150.01 18.5068 148.754 18.9966 147.008 18.9966C143.941 18.9753 141.854 17.2929 141.854 12.4374ZM143.621 11.5216H149.521C149.521 8.34849 148.754 6.98552 146.709 6.98552C144.857 6.98552 143.771 8.2633 143.621 11.5216Z"
fill="#7A8085"
/>
<path
d="M162.682 7.85849C163.768 6.70849 165.024 5.87793 166.515 5.87793C168.474 5.87793 169.646 6.92145 169.646 9.15756V17.6335L171.286 17.8677V18.6983H167.963V9.68997C167.963 8.07145 167.388 7.32608 166.089 7.32608C164.918 7.32608 163.789 8.02886 162.81 8.9233V17.6122L164.449 17.8464V18.7409H161.127V9.68997C161.127 8.07145 160.552 7.32608 159.253 7.32608C158.082 7.32608 156.953 8.02886 155.973 8.9233V17.6122L157.677 17.8464V18.7409H152.651V17.8464L154.312 17.6122V7.47515L152.609 7.2196V6.15478H155.654L155.888 7.85849C156.974 6.72978 158.188 5.89923 159.679 5.89923C161.212 5.87793 162.277 6.51682 162.682 7.85849Z"
fill="#7A8085"
/>
<path
d="M171.925 12.4374C171.925 7.6883 173.991 5.89941 176.802 5.89941C179.719 5.89941 181.338 7.64571 181.338 11.9689V12.629H173.671C173.692 16.3772 174.757 17.8253 177.355 17.8253C178.676 17.8253 179.655 17.3994 180.571 16.7818L181.167 17.6124C180.081 18.5068 178.825 18.9966 177.079 18.9966C174.012 18.9753 171.925 17.2929 171.925 12.4374ZM173.692 11.5216H179.591C179.591 8.34849 178.825 6.98552 176.78 6.98552C174.928 6.98552 173.863 8.2633 173.692 11.5216Z"
fill="#7A8085"
/>
<path
d="M183.084 18.0383V15.504H184.234L184.618 17.442C185.278 17.7189 185.789 17.8892 186.811 17.8892C188.664 17.8892 189.558 17.0374 189.558 15.5466C189.558 14.0559 188.834 13.4809 186.79 12.8846C184.831 12.2883 183.382 11.4577 183.382 9.13645C183.382 7.39016 184.639 5.89941 187.195 5.89941C188.664 5.89941 189.835 6.17627 190.687 6.68738V9.15775H189.558L189.132 7.34756C188.579 7.09201 187.961 7.00682 187.258 7.00682C185.789 7.00682 184.852 7.7309 184.852 8.98738C184.852 10.3077 185.576 10.8189 187.365 11.3513C189.431 12.0115 191.156 12.7142 191.156 15.3976C191.156 17.7615 189.431 18.9753 186.79 18.9753C185.235 18.9753 183.957 18.6346 183.084 18.0383Z"
fill="#7A8085"
/>
<path class="change-fill"
d="M38.3122 9.98811C38.3122 8.66774 37.9501 8.15663 36.9492 8.15663C36.1186 8.15663 35.0964 8.62515 34.3936 9.20015V16.9733L35.8418 17.165V18.6344H30.0918V17.165L31.5825 16.9733V8.24182L30.0918 7.92237V6.19737H33.9251L34.2446 7.64552C35.3733 6.55941 36.6298 5.87793 38.1418 5.87793C39.9946 5.87793 41.102 6.92145 41.102 9.07237V16.9733L42.5927 17.165V18.6344H38.3122V9.98811V9.98811Z"
fill="#000"
/>
<path class="change-fill"
d="M62.3982 17.1858V18.6553H56.0732V17.1858L57.564 16.9942V8.2627L56.0732 7.94326V6.21826H59.8427L60.226 8.17752C61.0779 6.85715 62.1427 5.94141 63.6973 5.94141C63.8677 5.94141 64.0594 5.9627 64.1871 6.0053L63.8251 8.94418C63.5483 8.81641 63.2501 8.77381 62.8668 8.77381C61.8871 8.77381 61.1418 9.05067 60.3751 9.71085V16.9516L62.3982 17.1858Z"
fill="#000"
/>
<path class="change-fill"
d="M76.7098 6.19733H78.0941V3.08807L80.5432 2.55566V6.21863H82.9709V8.0927H80.5432V15.6742C80.5432 16.5899 80.8839 16.9946 81.6293 16.9946C82.0978 16.9946 82.5876 16.8455 82.907 16.6751L83.3543 18.3575C82.758 18.6983 81.9061 18.9751 80.6709 18.9751C78.9672 18.9751 78.0941 18.1658 78.0941 16.0362V8.0927H76.7098V6.19733Z"
fill="#000"
/>
<path class="change-fill"
d="M90.4664 17.1648V18.6343H84.6738V17.1648L86.1646 16.9731V8.24167L84.6738 7.92222V6.19722H88.9757V16.9731L90.4664 17.1648ZM85.696 1.76759C85.696 0.787963 86.4627 0 87.4423 0C88.422 0 89.1886 0.766667 89.1886 1.76759C89.1886 2.72593 88.422 3.51389 87.421 3.51389C86.4627 3.51389 85.696 2.72593 85.696 1.76759Z"
fill="#000"
/>
<path class="change-fill"
d="M98.3251 7.90097V6.19727H103.053V7.92227L101.924 8.11393L98.3251 18.6556H95.663L92.064 8.09264L90.9991 7.92227V6.19727H96.2593V7.90097L95.0242 8.09264L96.7279 13.6084C97.0473 14.6519 97.1964 15.5037 97.3668 16.4834H97.388C97.5371 15.525 97.7714 14.5241 98.0482 13.5871L99.6668 8.07134L98.3251 7.90097Z"
fill="#000"
/>
<path class="change-fill"
d="M75.6867 17.1224C74.5793 17.1437 74.3664 16.952 74.3664 15.9724V9.79645C74.3664 6.96404 72.9821 5.87793 70.3201 5.87793C68.3821 5.87793 66.7423 6.45293 65.4219 7.28349L66.2312 9.02978C67.3599 8.45478 68.4673 8.09274 69.7238 8.09274C71.1932 8.09274 71.5552 8.88071 71.5552 10.265V11.0316V11.2233V12.7779V12.8844V16.1214C71.0867 16.6326 70.4052 17.0585 69.4469 17.0585C68.3821 17.0585 67.871 16.5261 67.871 15.0353C67.871 13.3103 68.5951 12.8205 70.4904 12.7779V11.2233C66.6358 11.2659 65.0386 12.4372 65.0386 15.2057C65.0386 17.8465 66.4867 18.9752 68.6589 18.9752C70.2136 18.9752 71.0654 18.315 71.7895 17.5696C72.0451 18.5705 72.833 18.9752 73.8978 18.9752C74.6645 18.9752 75.3886 18.7622 75.8571 18.5066L75.6867 17.1224Z"
fill="#000"
/>
<path class="change-fill"
d="M54.4968 17.1224C53.3894 17.1437 53.1764 16.952 53.1764 15.9724V9.79645C53.1764 6.96404 51.7922 5.87793 49.1301 5.87793C47.1922 5.87793 45.5523 6.45293 44.232 7.28349L45.0412 9.02978C46.1699 8.45478 47.2773 8.09274 48.5338 8.09274C50.0033 8.09274 50.3653 8.88071 50.3653 10.265V11.0316V11.2233V12.7779V12.8844V16.1214C49.8968 16.6326 49.2153 17.0585 48.257 17.0585C47.1922 17.0585 46.681 16.5261 46.681 15.0353C46.681 13.3103 47.4051 12.8205 49.3005 12.7779V11.2233C45.4459 11.2659 43.8486 12.4372 43.8486 15.2057C43.8486 17.8465 45.2968 18.9752 47.469 18.9752C49.0236 18.9752 49.8755 18.315 50.5996 17.5696C50.8551 18.5705 51.6431 18.9752 52.7079 18.9752C53.4746 18.9752 54.1986 18.7622 54.6672 18.5066L54.4968 17.1224Z"
fill="#000"
/>
<path class="change-fill"
d="M107.653 13.055H113.594V11.9476C113.594 7.47534 111.869 5.89941 108.803 5.89941C105.63 5.89941 103.628 7.79478 103.628 12.4161C103.628 17.1013 105.523 18.9966 109.058 18.9966C110.954 18.9966 112.231 18.5068 113.467 17.5272L112.657 16.0577C111.678 16.6753 110.868 17.0587 109.463 17.0587C107.546 17.0587 106.801 16.1855 106.63 14.0133C106.588 13.6939 106.567 13.0976 106.567 12.4587C106.567 12.054 106.567 11.6707 106.588 11.3726V11.3513C106.737 8.51886 107.397 7.60312 108.781 7.60312C110.4 7.60312 110.783 8.58275 110.783 11.3513H107.674V13.055H107.653Z"
fill="#000"
/>
<path class="change-fill" d="M17.5907 20.2954H0V23H17.5907V20.2954Z" fill="#000" />
<path class="change-fill"
d="M0 7.96484V18.9537L5.38796 15.1843V11.7343L0 7.96484Z"
fill="#000"
/>
<path class="change-fill"
d="M17.5689 10.9463V0L12.1597 3.74815V7.13426L17.5689 10.9463Z"
fill="#000"
/>
<path class="change-fill"
d="M17.5907 18.975L17.5694 12.288L0 0V6.62315L17.5907 18.975Z"
fill="#000"
/>
</g>
<defs>
<clipPath id="clip0">
<rect width="191.156" height="23" fill="white" />
</clipPath>
</defs>
</svg>
</div>
<div id="logo-mobile" class="hidden">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="23" height="23" viewBox="0 0 512.000000 512.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.15, written by Peter Selinger 2001-2017
</metadata>
<g transform="translate(0.000000,512.000000) scale(0.100000,-0.100000)"
fill="{{ $.Site.Params.Colors.primary }}" stroke="none">
<path d="M590 4383 l1 -738 756 -530 c698 -489 1151 -807 2618 -1837 l540
-380 3 748 c2 590 -1 751 -10 760 -7 7 -308 218 -668 470 -360 251 -1230 859
-1933 1351 -702 491 -1284 893 -1292 893 -13 0 -15 -92 -15 -737z"/>
<path d="M3887 4708 l-597 -412 0 -381 0 -381 597 -419 c328 -231 602 -421
610 -423 11 -3 13 204 13 1212 0 987 -2 1216 -13 1216 -7 0 -282 -186 -610
-412z"/>
<path d="M590 2135 c0 -910 3 -1225 11 -1225 10 0 343 231 1049 728 l155 109
0 389 0 388 -595 418 c-327 229 -601 417 -607 418 -10 0 -13 -251 -13 -1225z"/>
<path d="M590 320 l0 -310 1960 0 1960 0 0 310 0 310 -1960 0 -1960 0 0 -310z"/>
</g>
</svg>
</div>

View File

@@ -0,0 +1,12 @@
<svg
width="26"
height="26"
viewBox="0 0 26 26"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path id="rows"
fill="#000"
d="M4.33331 15.1665H8.41174V10.8332H4.33331V15.1665ZM4.33331 20.5832H8.41174V16.2498H4.33331V20.5832ZM4.33331 9.74984H8.41174V5.4165H4.33331V9.74984ZM9.43135 15.1665H21.6666V10.8332H9.43135V15.1665ZM9.43135 20.5832H21.6666V16.2498H9.43135V20.5832ZM9.43135 5.4165V9.74984H21.6666V5.4165H9.43135Z"
/>
</svg>

After

Width:  |  Height:  |  Size: 435 B

View File

@@ -0,0 +1,12 @@
<svg
width="26"
height="26"
viewBox="0 0 26 26"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path id="tiles"
fill="#000"
d="M4.33337 13.8424H12.0371V5.4165H4.33337V13.8424ZM4.33337 20.5832H12.0371V15.5276H4.33337V20.5832ZM13.963 20.5832H21.6667V12.1572H13.963V20.5832ZM13.963 5.4165V10.4721H21.6667V5.4165H13.963Z"
/>
</svg>

After

Width:  |  Height:  |  Size: 334 B

View File

@@ -0,0 +1,14 @@
<svg
width="17"
height="17"
viewBox="0 0 17 17"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path style="fill: var(--primary);"
d="M11.6796 14L8.50023 10.8276L5.32088 14L4.34422 13.0233L8.50023 8.86732L12.6563 13.0233L11.6796 14Z"
/>
<path style="fill: var(--primary);"
d="M5.32041 3L8.49977 6.17243L11.6791 3L12.6558 3.97666L8.49977 8.13268L4.34375 3.97666L5.32041 3Z"
/>
</svg>

After

Width:  |  Height:  |  Size: 412 B

View File

@@ -0,0 +1,14 @@
<svg
width="17"
height="17"
viewBox="0 0 17 17"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path style="fill: var(--primary);"
d="M5.3209 8.86719L8.50026 12.0396L11.6796 8.86719L12.6563 9.84385L8.50026 13.9999L4.34424 9.84385L5.3209 8.86719Z"
/>
<path style="fill: var(--primary);"
d="M11.6791 8.13281L8.49974 4.96039L5.32039 8.13281L4.34373 7.15615L8.49974 3.00013L12.6558 7.15615L11.6791 8.13281Z"
/>
</svg>

After

Width:  |  Height:  |  Size: 443 B

View File

@@ -0,0 +1,12 @@
<section id="articleHero" class="section narrow">
<div class="article-hero">
<header class="article-header">
<h1 class="article-hero-heading">{{ .Page.Params.Title }}</h1>
</header>
{{ with .Params.hero }}
<div class="article-hero-image" id="ArticleImage__Hero">
<img src="{{ . }}">
</div>
{{ end }}
</div>
</section>

View File

@@ -0,0 +1,21 @@
{{ $pag := $.Paginator }}
{{ if gt $pag.TotalPages 1 }}
<nav aria-label="Page navigation">
<ul class="pagination">
{{ if $pag.HasPrev }}
<li class="page-item"><a href="{{ $pag.Prev.URL }}" rel="prev" class="page-link page-prev">Prev</a></li>
{{ end }}
{{ range $pag.Pagers }}
{{ if eq . $pag }}
<li class="page-item active"><a href="{{ .URL }}" class="page-link">{{ .PageNumber }}</a></li>
{{ else }}
<li class="page-item"><a href="{{ .URL }}" class="page-link">{{ .PageNumber }}</a></li>
{{ end }}
{{ end }}
{{ if $pag.HasNext }}
<li class="page-item"><a href="{{ $pag.Next.URL }}" rel="next" class="page-link page-next">Next</a></li>
{{ end }}
</ul>
</nav>
{{ end }}

View File

@@ -0,0 +1,34 @@
{{/*
Prints a YAML representation of the SEO object
Useful to go through a projects's page and check the formated object (used for og, twitter etc...)
Styling uses Tailwind.
@author the New Dynamic
@access public
@context Page
@example - Go Template
{{ partial "seo/debug.html" . }}
*/}}
{{if ne (getenv "HUGO_ENV") "production" }}
<style>
.tndseo-debug{
position: fixed;
z-index: 100000;
right:0;bottom:0;
margin:1rem;
padding:1rem;
background:#f1f5f8;
color:black;
max-width:50vw;
opacity: .80;
}
</style>
<div class="tndseo-debug">
<pre>
{{ partial "seo/get" . | transform.Remarshal "yaml" }}
</pre>
</div>
{{ end }}

View File

@@ -0,0 +1,25 @@
{{/*
Add/Edit SEO Scratch Object
@author The New Dynamic
@access public
@context Page
User does not load the partial, as the component will.
This allows to overwrite some SEO object keys with project's own.
Project's partial should live under `layouts/partials/seo/extend.html`
@example - In Partial
{{- if eq "Type" "recipe" -}}
{{- .Scratch.SetInMap "seo" "type" "article" -}}
{{- end -}}
{{- $locales := dict "fr" "fr_FR" "en" "en_US" -}}
{{- .Scratch.SetInMap "seo" "locale" (index $locales .Lang) -}}
{{- if .IsHome -}}
{{- .Scratch.SetInMap "seo" "title" "Welcome Home" -}}
{{- end -}}
*/}}

View File

@@ -0,0 +1,22 @@
{{/*
Retrieve SEO object from a page and returns it as a json string
@author The New Dynamic
@access public
@context Page
@return SEO object as a json string
@example - Go Template
To store
{{ $seo := partial "seo/get" . | transform.Unmarshal }}
To print (for debug purposes)
<code>
{{ partial "seo/get" . | transform.Remarshal "yaml" }}
</code>
*/}}
{{- with .Scratch.Get "seo" -}}
{{- . | jsonify -}}
{{- end -}}

View File

@@ -0,0 +1,51 @@
{{/*
Print JSONLd script tag
@author The New Dynamic
@access private
@context map [page (Page), seo (Map)]
Result to achieve:
{
[x] "@context": "http://schema.org",
[x] "@type": "Article",
[x] "headline": "Extra! Extra! Read alla bout it",
[ ] "alternativeHeadline": "This article is also about robots and stuff",
[x] "image": "http://example.com/image.jpg",
[ ] "author": "Patrick Coombe",
[ ] "award": "Best article ever written",
[ ] "editor": "Craig Mount",
[ ] "genre": "search engine optimization",
[ ] "keywords": "seo sales b2b",
[x] "wordcount": "1120",
[ ] "publisher": "Book Publisher Inc",
[x] "url": "http://www.example.com",
[x] "datePublished": "2015-09-20",
[ ] "dateCreated": "2015-09-20",
[x] "dateModified": "2015-09-20",
[x] "description": "We love to do stuff to help people and stuff",
[ ] "articleBody": "You can paste your entire post in here, and yes it can get really really long."
}
*/}}
{{- $s := newScratch -}}
{{- $s.Set "seo" dict -}}
{{- $s.SetInMap "seo" "@context" "https://schema.org" -}}
{{- $s.SetInMap "seo" "@type" .seo.type -}}
{{- $s.SetInMap "seo" "headline" .page.Title -}}
{{- $s.SetInMap "seo" "image" .seo.image -}}
{{- $s.SetInMap "seo" "wordcount" (.page.WordCount | string) -}}
{{- $s.SetInMap "seo" "url" .page.Permalink -}}
{{- $s.SetInMap "seo" "datePublished" .seo.published_time -}}
{{- $s.SetInMap "seo" "dateModified" .seo.updated_time -}}
{{- $s.SetInMap "seo" "description" .seo.description -}}
{{ with .author -}}
{{ $s.SetInMap "seo" "author" . -}}
{{ end -}}
<script type="application/ld+json">
{{ $s.Get "seo" | jsonify | safeJS }}
</script>

View File

@@ -0,0 +1,160 @@
{{/*
Structure SEO Data for a given page
+ print tags
+ print jsonld
@author The New Dynamic
@access public
@context Page
@example - Go Template
{{ partial "seo/tags" . }}
TODO:
- [ ] Improve type test on "events", `article` seems very opinated.
- [ ] Find a reasonable default image when `site.Params.default_image` is not set.
- [ ] Twitter can sport "author" handle on top of the site's. Devise a test for author?
- [ ] Maybe consider another approach to set the twitter_card (summary, etc...)
- [ ] Not sure about image size. Following https://docs.imgix.com/best-practices/improving-seo-traffic, we have a
square of 800x800 */}}
{{/*------------------------------
BUILDING SCRATCH SEO OBJECT
------------------------------ */}}
{{/* Adding the seo map to scratch which will recieve SEO key/value pairs. */}}
{{- $.Scratch.Set "seo" dict -}}
{{/* Dates
----------------------------- */}}
{{- if not .PublishDate.IsZero -}}
{{- $.Scratch.SetInMap "seo" "published_time" (.PublishDate.Format "2006-01-02T15:04:05-07:00") -}}
{{- else if not .Date.IsZero -}}
{{- $.Scratch.SetInMap "seo" "published_time" (.Date.Format "2006-01-02T15:04:05-07:00") -}}
{{- end -}}
{{- if not .Lastmod.IsZero -}}
{{- $.Scratch.SetInMap "seo" "updated_time" (.Lastmod.Format "2006-01-02T15:04:05-07:00") -}}
{{- end -}}
{{/* Description
----------------------------
We use the following order of precedence
1. SEO Description, then, if not found,
2. Description, then if not found,
3. Summary then, if not found,
4. site description */}}
{{ $description := "" }}
{{/* 1. SEO Description */}}
{{- if .Params.seo.description -}}
{{- $description = .Params.seo.description -}}
{{/* 2. Description
As it could potentially contain HTML tags, we strip them with plainify */}}
{{- else if .Params.description -}}
{{- $description = .Params.description | plainify -}}
{{/* 3. Summary */}}
{{- else if .Summary -}}
{{- $description = .Summary -}}
{{- else -}}
{{/* 4. site description */}}
{{ $description = .Site.Params.Description }}
{{- end -}}
{{- $.Scratch.SetInMap "seo" "description" $description -}}
{{/* Title
----------------------------
We use the following logic
1. Every pages: `{.Title} | {.Site.Title}`
2. Homepage: , only {.Site.Title} */}}
{{- if not .IsHome -}}
{{/* 1. `{.Title} | {.Site.Title}` */}}
{{- $.Scratch.SetInMap "seo" "title" (printf "%s | %s" .Title .Site.Title ) -}}
{{- else -}}
{{/* 2. `{.Site.Title}` */}}
{{- $.Scratch.SetInMap "seo" "title" .Site.Title -}}
{{- end -}}
{{/* Site Name
---------------------------- */}}
{{- with .Param "seo.site_name" -}}
{{- $.Scratch.SetInMap "seo" "site_name" . -}}
{{- else -}}
{{- $.Scratch.SetInMap "seo" "site_name" .Site.Title -}}
{{- end -}}
{{/* Twitter
---------------------------- */}}
{{/* Default twitter_card is "summary_large_image" */}}
{{- $.Scratch.SetInMap "seo" "twitter_card" "summary_large_image" -}}
{{/* We check the site config sports a Social.twitter and use as handle */}}
{{- with .Site.Social.twitter -}}
{{- $.Scratch.SetInMap "seo" "twitter_handle" (printf "@%s" .) -}}
{{- end -}}
{{/* Image
---------------------------- */}}
{{- $img := "/uploads/default.jpg" -}}
{{- with .Site.Params.seo.default_image -}}
{{- $img = . -}}
{{- end -}}
{{- with .Params.seo.image -}}
{{- $img = . -}}
{{ else }}
{{/* If no SEO IMAGE is set, we look for the .Params.images slice
and use the first one if it has an `image` key */}}
{{- with .Params.hero -}}
{{- $img = . -}}
{{- end -}}
{{- with .Params.avatar -}}
{{- $img = . -}}
{{- end -}}
{{- end -}}
{{- $.Scratch.SetInMap "seo" "image" ($img | absURL) -}}
{{/* Type
---------------------------- */}}
{{- $.Scratch.SetInMap "seo" "type" "website" -}}
{{- if in (slice "blog" "news") .Type -}}
{{- $.Scratch.SetInMap "seo" "type" "article" -}}
{{ else if in (slice "article") .Type }}
{{- $.Scratch.SetInMap "seo" "type" "event" -}}
{{- end -}}
{{/* Locale
---------------------------- */}}
{{- $.Scratch.SetInMap "seo" "locale" "en_US" -}}
{{/* Canonical
---------------------------- */}}
{{ with .Params.seo.canonical }}
{{- $.Scratch.SetInMap "seo" "canonical" (. | absURL) -}}
{{ else }}
{{- $.Scratch.SetInMap "seo" "canonical" .Permalink -}}
{{ end }}
{{/*------------------------------
RETRIEVING PROJECT'S OWN DATA
------------------------------ */}}
{{- partial "seo/extend" . -}}
{{ partial "seo/tags" (dict "page" $ "seo" ($.Scratch.Get "seo")) }}
{{ with .Site.Params.seo.jsonld }}
{{ partial "seo/jsonld" (dict "page" $ "seo" ($.Scratch.Get "seo")) }}
{{ end }}
{{ with .Site.Params.seo.debug }}
{{ partial "seo/debug" $ }}
{{ end }}

View File

@@ -0,0 +1,44 @@
{{/*
Print SEO meta tags
@author The New Dynamic
@access private
@context map [page (Page), seo (Map)] */}}
{{/*------------------------------
WRITING TAGS
------------------------------ */}}
{{- $seo := .seo -}}
<title>{{ $seo.title }}</title>
<meta name="description" content="{{ $seo.description }}">
<meta property="og:title" content="{{ $seo.title }}">
<meta property="og:site_name" content="{{ $seo.site_name }}">
<meta property="og:description" content="{{ $seo.description }}">
<meta property="og:url" content="{{ .page.Permalink }}">
<meta property="og:type" content="{{ $seo.type }}">
<meta property="og:locale" content="{{ $seo.locale }}">
<meta property="og:image" content='{{ $seo.image }}'>
{{- with ($seo.image_width) -}}
<meta property="og:image:width" content="{{ . }}">
{{- end -}}
{{- with ($seo.image_height) -}}
<meta property="og:image:height" content="{{ . }}">
{{- end -}}
<meta name="twitter:card" content="{{ $seo.twitter_card }}">
<meta name="twitter:title" content="{{- $seo.title }}">
{{ with $seo.canonical }}
<link rel="canonical" href="{{ . }}">
{{ end }}
{{ with $seo.twitter_handle }}
<meta name="twitter:site" content="{{- . }}">
<meta name="twitter:creator" content="{{- . }}">
{{ end }}
<meta name="twitter:description" content="{{- $seo.description }}">
<meta name="twitter:image" content="{{- $seo.image }}">
<meta property="article:published_time" content="{{- $seo.published_time }}">
{{- with $seo.updated_time }}
<meta property="article:updated_time" content="{{- $seo.updated_time }}">
{{- end }}

View File

@@ -0,0 +1,11 @@
<div class="social-icon-outer">
<div class="social-icon-container">
{{ range $index, $component := .Site.Social }}
{{ with $component }}
{{ $path := print "icons/social/" $index }}
<a href="{{ . }}">{{ partial $path $ }}</a>
<span class="hidden">{{ $component }}</span>
{{ end }}
{{ end }}
</div>
</div>

View File

@@ -0,0 +1,39 @@
{{ $email := . }}
{{ $action := printf "https://formspree.io/%s.tld" $email }}
<section id="subscriptionSection" class="section narrow">
<div class="subscription-container">
<div class="subscription-content">
<h3 class="subscription-heading">
Join our email list and get notified about new content
</h3>
<p class="subscription-text">
Be the first to receive our latest content with the ability to
opt-out at anytime. We promise to not spam your inbox or share your
email with any third parties.
</p>
<form id="subscriptionForm" class="subscription-form" action="{{ $action | safeHTMLAttr }}" method="POST">
<input
id="emailInput"
class="subscription-input"
placeholder="your@email.com"
name="email"
type="email"
required
pattern="^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$"
/>
<button id="submitButton"
class="submit-button"
type="submit"
>
Subscribe
</button>
<div class="subscription-error-message">
The email you entered is not valid.
</div>
</form>
</div>
</div>
</section>
{{ $script := resources.Get "js/addFormStyles.js" }}
<script src="{{ $script.RelPermalink }}"></script>

View File

@@ -0,0 +1,19 @@
{{ define "main" }}
<section class="section narrow">
{{ partial "article/hero.html" . }}
{{ partial "article/progress" . }}
<article id="articleContent" class="post-content">
{{ .Content }}
</article>
{{ partial "article/next.html" . }}
</section>
{{ $script := resources.Get "js/progressBar.js" }}
<script src="{{ $script.RelPermalink }}"></script>
{{ end }}

View File

@@ -0,0 +1,3 @@
{{ with .Get "email" }}
{{ partial "subscription/subscription.html" . }}
{{ end }}