Compare commits

..

No commits in common. "master" and "2.0.0" have entirely different histories.

52 changed files with 255 additions and 5928 deletions

1
.husky/.gitignore vendored
View file

@ -1 +0,0 @@
_

View file

@ -1,4 +0,0 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
yarn build && git add . && git commit --amend --no-edit

View file

@ -3,9 +3,9 @@
"printWidth": 100, "printWidth": 100,
"trailingComma": "all", "trailingComma": "all",
"overrides": [{ "overrides": [{
"files": ["*.html"], "files": ".html",
"options": { "options": {
"parser": "go-template" "parser": "html"
} }
}] }]
} }

View file

@ -99,23 +99,29 @@ You can download the theme manually by going to [https://github.com/panr/hugo-th
You can also clone it directly to your Hugo folder: You can also clone it directly to your Hugo folder:
```bash ```bash
git clone https://github.com/panr/hugo-theme-hello-friend.git themes/hello-friend $ git clone https://github.com/panr/hugo-theme-hello-friend.git themes/hello-friend
``` ```
If you don't want to make any radical changes, it's the best option, because you can get new updates when they are available. To do so, include it as a git submodule: If you don't want to make any radical changes, it's the best option, because you can get new updates when they are available. To do so, include it as a git submodule:
```bash ```bash
git submodule add -f https://github.com/panr/hugo-theme-hello-friend.git themes/hello-friend $ git submodule add https://github.com/panr/hugo-theme-hello-friend.git themes/hello-friend
``` ```
⚠️ **The theme needs at least Hugo version 0.74.x**.
## How to run your site ## How to run your site
From your Hugo root directory run: The theme is using [Hugo Pipes](https://gohugo.io/hugo-pipes/) to handle Javascript and PostCSS files. This setup **requires** following npm packages:
``` ```
hugo server -t hello-friend @babel/cli @babel/core @babel/preset-env browserslist clipboard cssnano postcss-cli postcss-import postcss-mixins postcss-nested postcss-preset-env postcss-url
```
Before you start, you have to install them (globally or locally).
Then:
```
$ hugo server -t hello-friend
``` ```
and go to `localhost:1313` in your browser. From now on all the changes you make will go live, so you don't need to refresh your browser every single time. and go to `localhost:1313` in your browser. From now on all the changes you make will go live, so you don't need to refresh your browser every single time.
@ -201,7 +207,6 @@ Adding a cover image to your post is simple and there are two options when you e
* Resulting in `https://www.yourpage.com/path/to/absolute/img.jpg` * Resulting in `https://www.yourpage.com/path/to/absolute/img.jpg`
* Use `cover = "img.jpg"` and `useRelativeCover = true` to link the image relative to the blog post folder * Use `cover = "img.jpg"` and `useRelativeCover = true` to link the image relative to the blog post folder
* Resulting in `https://www.yourpage.com/posts/blog-entry-xy/img.jpg` * Resulting in `https://www.yourpage.com/posts/blog-entry-xy/img.jpg`
* Use `coverAlt = "description of image"` to add custom alt text to the cover image (defaults to post or page title as alt text)
* Use `coverCaption = "Image Credit to [Barry Bluejeans](https://unsplash.com/)"` to add a caption for the cover image. * Use `coverCaption = "Image Credit to [Barry Bluejeans](https://unsplash.com/)"` to add a caption for the cover image.
## How to display the Last Modified Date in your posts ## How to display the Last Modified Date in your posts
@ -226,37 +231,7 @@ In a post's front matter you have to add `hideReadMore` param set to `true`. Thi
## How to (safely) edit the theme <a id="how-to-edit" /> ## How to (safely) edit the theme <a id="how-to-edit" />
If you have to override only some of the styles, you can do this easily by adding `static/style.css` in your root directory and point things you want to change. To change something in the theme, you have to go to `themes/hello-friend` and modify the files. You can also copy them (like `assets` folder) from the theme to your root directory and modify the files there (thanks to Hugo's lookup https://gohugo.io/templates/lookup-order). This will protect your changes from overriding when you update the theme.
To change something directly in the theme, you have to go to `themes/hello-friend` and modify the files.
First, you need to install Node dependencies. To do so, go to the theme directory (from your Hugo root directory):
```bash
cd themes/hello-friend
```
then run:
```bash
npm install
npm i yarn
yarn
```
After you modified the files you can run webpack in watch mode:
```bash
yarn dev
```
or rebuild theme
```bash
yarn build
```
To see the changes (remember to restart `hugo server`).
## Found a bug? <a id="bug" /> ## Found a bug? <a id="bug" />

View file

@ -8,37 +8,25 @@ TEMPLATE:
--> -->
- https://0x44.pw — **Ian Pringle** (System Admin and developer) - https://0x44.pw — **Ian Pringle** (System Admin and developer)
- https://adamormsby.com - **Adam Ormsby** (Generalist Programmer - Web, Mobile, Games)
- https://arubacao.com **Christopher Lass** (Software Engineer and DevOps)
- https://blog.agate.pw/ - **Marco Agate** (System Engineer, DevOps)
- https://blog.agung.io - **Agung Pratama** (Software Engineer and DevOps) - https://blog.agung.io - **Agung Pratama** (Software Engineer and DevOps)
- https://blog.jyny.dev/ - **Jyny Chen** (Software Engineer)
- https://blog.lepape.me/ - **François Le Pape** (Student & developer freelance)
- https://blog.toluwalemi.com/ - **Toluwalemi Oluwadare** (Software Engineer and Content Writer)
- https://cobalto.net/ - **Daniel Pessoa** (Sofware Developer and BI Analyst)
- https://eallion.com/ - **大大的小蜗牛** (E-commerce operator)
- https://etra0.github.io/ - **Sebastián Aedo** (Computer Science student, interested in Game Hacking)
- https://fazi1058.github.io **Faezeh Roeinfard** (Student)
- https://felixleger.com/ - **Félix Léger** (Sofware Developer and DevOps)
- https://gabrielacaesar.com/ - **Gabriela Caesar** (Data journalist)
- https://guilhermesteves.dev/ - **Guilherme Esteves** (Software Engineer, Writer, Speaker)
- https://hesec.de - **Patrick Hener** (Security Researcher, Pentester and Coder)
- https://ilya-lesikov.com - **Ilya Lesikov** (DevOps, SRE)
- https://imgalone.com/ - **Iancu makes games alone** (Indie Game Dev)
- https://jonathan.rico.live/ - **Jonathan Rico** (Electronics Engineer)
- https://kartiniteknologi.id/ - **Kartini Teknologi team** (Tech podcast)
- https://mfaishal.com **Faishal Irawan** (Student)
- https://mritd.com/ - **漠然** (Software Engineer and DevOps)
- https://musq.github.io — **Ashish Ranjan** (Software Engineer)
- https://protocod.gitlab.io/blog/ **protocod** (Web Developer) - https://protocod.gitlab.io/blog/ **protocod** (Web Developer)
- https://shinytoyrobots.com - **shinytoyrobots** (Eclectic journaling and essays) - https://arubacao.com **Christopher Lass** (Software Engineer and DevOps)
- https://simeononsecurity.ch/ - **SimeonOnSecurity** (Security and Automation Blog) - https://mfaishal.com **Faishal Irawan** (Student)
- https://musq.github.io — **Ashish Ranjan** (Software Engineer)
- https://fazi1058.github.io **Faezeh Roeinfard** (Student)
- https://www.gabrielacaesar.com/ - **Gabriela Caesar** (Data journalist)
- https://verso.re/ - **Joan Calabrés** (Security Engineer) - https://verso.re/ - **Joan Calabrés** (Security Engineer)
- https://atticuslab.com/ - **Atticus** (Game Server Engineer) - https://blog.lepape.me/ - **François Le Pape** (Student & developer freelance)
- https://gregbair.dev/ - **Greg Bair** (Developer and App Architect) - https://blog.jyny.dev/ - **Jyny Chen** (Software Engineer)
- https://www.miroslavbucek.cz - **Miroslav Buček** (Product Manager, Smart Home company owner) - https://felixleger.com/ - **Félix Léger** (Sofware Developer and DevOps)
- https://farhamdani.com/ - **Farhamdani** (Freelancer & Nganggur Productive) - https://cobalto.net/ - **Daniel Pessoa** (Sofware Developer and BI Analyst)
- https://fmg3d.com/ - **Finn M Glas** (Aspiring Physicist, Software Developer) - https://www.imgalone.com/ - **Iancu makes games alone** (Indie Game Dev)
- https://nali.org/ - **Nick Ali** (Marketer) - https://jonathan.rico.live/ - **Jonathan Rico** (Electronics Engineer)
- https://abhinav031.github.io - **Abhinav Sriram** (Digital Artist, Hobbyist) - https://mritd.com/ - **漠然** (Software Engineer and DevOps)
- https://schnerring.net/ - **Michael Schnerring** (Software Engineer) - https://ilya-lesikov.com - **Ilya Lesikov** (DevOps, SRE)
- https://www.adamormsby.com - **Adam Ormsby** (Generalist Programmer - Web, Mobile, Games)
- https://kartiniteknologi.id/ - **Kartini Teknologi team** (Tech podcast)
- https://eallion.com/ - **大大的小蜗牛** (E-commerce operator)
- https://guilhermesteves.dev/ - **Guilherme Esteves** (Software Engineer, Writer, Speaker)
- https://etra0.github.io/ - **Sebastián Aedo** (Computer Science student, interested in Game Hacking)
- https://blog.toluwalemi.com/ - **Toluwalemi Oluwadare** (Software Engineer and Content Writer)

View file

@ -3,7 +3,8 @@
font-style: normal; font-style: normal;
font-weight: 400; font-weight: 400;
font-feature-settings: "liga", "tnum", "case", "calt", "zero", "ss01", "locl"; font-feature-settings: "liga", "tnum", "case", "calt", "zero", "ss01", "locl";
src: url("../fonts/Inter-Regular.woff2") format("woff2"); src: url("../fonts/Inter-Regular.woff2") format("woff2"),
url("../fonts/Inter-Regular.woff") format("woff");
font-display: swap; font-display: swap;
} }
@font-face { @font-face {
@ -11,7 +12,8 @@
font-style: italic; font-style: italic;
font-weight: 400; font-weight: 400;
font-feature-settings: "liga", "tnum", "case", "calt", "zero", "ss01", "locl"; font-feature-settings: "liga", "tnum", "case", "calt", "zero", "ss01", "locl";
src: url("../fonts/Inter-Italic.woff2") format("woff2"); src: url("../fonts/Inter-Italic.woff2") format("woff2"),
url("../fonts/Inter-Italic.woff") format("woff");
font-display: swap; font-display: swap;
} }
@ -20,7 +22,8 @@
font-style: normal; font-style: normal;
font-weight: 600; font-weight: 600;
font-feature-settings: "liga", "tnum", "case", "calt", "zero", "ss01", "locl"; font-feature-settings: "liga", "tnum", "case", "calt", "zero", "ss01", "locl";
src: url("../fonts/Inter-Medium.woff2") format("woff2"); src: url("../fonts/Inter-Medium.woff2") format("woff2"),
url("../fonts/Inter-Medium.woff") format("woff");
font-display: swap; font-display: swap;
} }
@font-face { @font-face {
@ -28,7 +31,8 @@
font-style: italic; font-style: italic;
font-weight: 600; font-weight: 600;
font-feature-settings: "liga", "tnum", "case", "calt", "zero", "ss01", "locl"; font-feature-settings: "liga", "tnum", "case", "calt", "zero", "ss01", "locl";
src: url("../fonts/Inter-MediumItalic.woff2") format("woff2"); src: url("../fonts/Inter-MediumItalic.woff2") format("woff2"),
url("../fonts/Inter-MediumItalic.woff") format("woff");
font-display: swap; font-display: swap;
} }
@ -37,7 +41,8 @@
font-style: normal; font-style: normal;
font-weight: 800; font-weight: 800;
font-feature-settings: "liga", "tnum", "case", "calt", "zero", "ss01", "locl"; font-feature-settings: "liga", "tnum", "case", "calt", "zero", "ss01", "locl";
src: url("../fonts/Inter-Bold.woff2") format("woff2"); src: url("../fonts/Inter-Bold.woff2") format("woff2"),
url("../fonts/Inter-Bold.woff") format("woff");
font-display: swap; font-display: swap;
} }
@font-face { @font-face {
@ -45,6 +50,7 @@
font-style: italic; font-style: italic;
font-weight: 800; font-weight: 800;
font-feature-settings: "liga", "tnum", "case", "calt", "zero", "ss01", "locl"; font-feature-settings: "liga", "tnum", "case", "calt", "zero", "ss01", "locl";
src: url("../fonts/Inter-BoldItalic.woff2") format("woff2"); src: url("../fonts/Inter-BoldItalic.woff2") format("woff2"),
url("../fonts/Inter-BoldItalic.woff") format("woff");
font-display: swap; font-display: swap;
} }

View file

@ -133,7 +133,6 @@ code, kbd {
border-radius: 5px; border-radius: 5px;
font-size: .9rem; font-size: .9rem;
font-weight: normal; font-weight: normal;
font-feature-settings: normal;
code, kbd { code, kbd {
background: transparent; background: transparent;
@ -143,7 +142,6 @@ code, kbd {
} }
pre { pre {
font-feature-settings: normal;
background: #212020; background: #212020;
padding: 20px; padding: 20px;
border-radius: 8px; border-radius: 8px;
@ -156,7 +154,6 @@ pre {
} }
code { code {
font-feature-settings: normal;
background: none !important; background: none !important;
color: #ccc; color: #ccc;
margin: 0; margin: 0;
@ -193,8 +190,7 @@ blockquote {
} }
} }
/* Fix for gist integration */ table {
table:not(.js-file-line-container) {
table-layout: fixed; table-layout: fixed;
border-collapse: collapse; border-collapse: collapse;
width: 100%; width: 100%;
@ -202,8 +198,7 @@ table:not(.js-file-line-container) {
border-radius: 5px; border-radius: 5px;
} }
/* Fix for gist integration */ table, th, td {
table, th, td:not(.js-line-number) {
border: 1px solid; border: 1px solid;
padding: 10px; padding: 10px;
} }
@ -262,13 +257,3 @@ hr {
border: 1px solid var(--border-color); border: 1px solid var(--border-color);
max-width: 800px; max-width: 800px;
} }
blockquote.twitter-tweet {
background: hsl(206deg 62% 45% / 10%);
border: none;
padding: 30px;
color: inherit;
font-size: inherit;
line-height: inherit;
border-radius: 8px;
}

View file

@ -56,7 +56,6 @@
max-width: 860px; max-width: 860px;
img { img {
margin: 0 auto;
border-radius: 8px; border-radius: 8px;
box-shadow: 0 12px 40px rgba(0, 0, 0, .15); box-shadow: 0 12px 40px rgba(0, 0, 0, .15);
} }

View file

@ -1,6 +1,5 @@
@import 'variables.css';
@import 'fonts.css'; @import 'fonts.css';
@import 'variables.css';
@import 'buttons.css'; @import 'buttons.css';
@import 'header.css'; @import 'header.css';

View file

@ -1,29 +1,19 @@
{{ define "main" }} {{ define "main" }}
<div class="post"> <div class="post">
<h1 class="post-title"> <h1 class="post-title"><a href="{{ .Permalink }}">{{ .Title | markdownify }}</a></h1>
<a href="{{ .Permalink }}">{{ .Title | markdownify }}</a>
</h1>
<div class="post-content"> <div class="post-content">
<p> <p>{{ "Hmm... Sorry, this page seems to be missing." | markdownify }}
{{ "Hmm... Sorry, this page seems to be missing." | markdownify }} {{ if .Site.Taxonomies.tags }}
</p> {{ "Maybe these tags will help you find what you're looking for. :smile:" | markdownify | emojify }}</p>
{{ if .Site.Taxonomies.tags }}
<p>
{{ "Maybe these tags will help you find what you're looking for. :smile:" | markdownify | emojify }}
</p>
<h2>Tags</h2> <h2>Tags</h2>
<div class="terms"> <div class="terms">
<ul class="terms__list"> <ul class="terms__list">
{{ range .Site.Taxonomies.tags }} {{ range .Site.Taxonomies.tags }}
<li class="terms__term"> <li class="terms__term"><a href="{{ .Page.Permalink }}">#{{ .Page.Title }}</a><span class="terms__term-count">{{ .Count }}</span></li>
<a href="{{ .Page.Permalink }}">#{{ .Page.Title }}</a {{ end }}
><span class="terms__term-count">{{ .Count }}</span> </ul>
</li>
{{ end }}
</ul>
</div> </div>
{{ end }} {{ end }}
</div> </div>
</div> </div>
{{ end }} {{ end }}

View file

@ -2,11 +2,7 @@
<html lang="{{ $.Site.Language }}"> <html lang="{{ $.Site.Language }}">
<head> <head>
{{ block "title" . }} {{ block "title" . }}
<title> <title>{{ if .IsHome }}{{ $.Site.Title }}{{ with $.Site.Params.Subtitle }} — {{ . }}{{ end }}{{ else }}{{ .Title }} :: {{ $.Site.Title }}{{ with $.Site.Params.Subtitle }} — {{ . }}{{ end }}{{ end }}</title>
{{ if .IsHome }}{{ $.Site.Title }}{{ with $.Site.Params.Subtitle }} —
{{ . }}{{ end }}{{ else }}{{ .Title }} ::
{{ $.Site.Title }}{{ with $.Site.Params.Subtitle }} — {{ . }}{{ end }}{{ end }}
</title>
{{ end }} {{ end }}
{{ partial "head.html" . }} {{ partial "head.html" . }}
</head> </head>
@ -15,7 +11,8 @@
{{ partial "header.html" . }} {{ partial "header.html" . }}
<div class="content"> <div class="content">
{{ block "main" . }} {{ end }} {{ block "main" . }}
{{ end }}
</div> </div>
{{ block "footer" . }} {{ block "footer" . }}

View file

@ -28,11 +28,7 @@
{{ partial "lastmod.html" . }} {{ partial "lastmod.html" . }}
{{ end }} {{ end }}
{{ end }} {{ end }}
{{ with .Params.Author }}<span class="post-author">— {{ $.Site.Params.WrittenBy | default "Written by" }} {{ . }}</span>{{ end }}
{{ with .Params.Author }}
<span class="post-author">— {{ $.Site.Params.WrittenBy | default "Written by" }} {{ . }}</span>
{{ end }}
{{ if $.Site.Params.ShowReadingTime }} {{ if $.Site.Params.ShowReadingTime }}
<span class="post-read-time">— {{ .ReadingTime }} {{ $.Site.Params.MinuteReadingTime | default "min read" }}</span> <span class="post-read-time">— {{ .ReadingTime }} {{ $.Site.Params.MinuteReadingTime | default "min read" }}</span>
{{ end }} {{ end }}
@ -41,13 +37,23 @@
{{ if .Params.tags }} {{ if .Params.tags }}
<span class="post-tags"> <span class="post-tags">
{{ range .Params.tags }} {{ range .Params.tags }}
<a href="{{ (urlize (printf "tags/%s" . )) | absLangURL }}/">#{{ . }}</a>&nbsp; #<a href="{{ (urlize (printf "tags/%s" . )) | absURL }}/">{{ . }}</a>&nbsp;
{{ end }} {{ end }}
</span> </span>
{{ end }} {{ end }}
{{ if .Params.Cover }} {{ if .Params.Cover }}
{{ partial "postcover.html" . }} <figure class="post-cover">
{{ if .Params.UseRelativeCover }}
<img src="{{ (printf "%s%s" .Permalink .Params.Cover ) }}" alt="{{ .Title | plainify | default " " }}"/>
{{ else }}
<img src="{{ .Params.Cover | absURL }}" alt="{{ .Title | plainify | default " " }}"/>
{{ end }}
{{ if .Params.CoverCaption }}
<figcaption class="center">{{ .Params.CoverCaption | markdownify }}</figcaption>
{{ end }}
</figure>
{{ end }} {{ end }}
<div class="post-content"> <div class="post-content">
@ -55,7 +61,7 @@
{{ . | markdownify }} {{ . | markdownify }}
{{ else }} {{ else }}
{{ if .Truncated }} {{ if .Truncated }}
{{ .Summary }} {{ .Summary | markdownify }}
{{ end }} {{ end }}
{{ end }} {{ end }}
</div> </div>

View file

@ -1,60 +1,59 @@
{{ define "main" }} {{ define "main" }}
<div class="posts"> <div class="posts">
{{ range .Pages }} {{ range .Pages }}
<div class="post on-list"> <div class="post on-list">
<h1 class="post-title"><a href="{{ .Permalink }}">{{ .Title | markdownify }}</a></h1> <h1 class="post-title"><a href="{{ .Permalink }}">{{ .Title | markdownify }}</a></h1>
<div class="post-meta"> <div class="post-meta">
{{ if .Date }} {{ if .Date }}
<span class="post-date"> <span class="post-date">
{{ .Date.Format ($.Site.Params.DateFormatList | default "2006-01-02") }} {{ .Date.Format ($.Site.Params.DateFormatList | default "2006-01-02") }}
</span>
{{ if $.Site.Params.LastModDisplay }}
{{ partial "lastmod.html" . }}
{{ end }}
{{ end }}
{{ with .Params.Author }}
<span class="post-author"
>— {{ $.Site.Params.WrittenBy | default "Written by" }} {{ . }}</span
>{{ end }}
{{ if $.Site.Params.ShowReadingTime }}
<span class="post-read-time"
>— {{ .ReadingTime }} {{ $.Site.Params.MinuteReadingTime | default "min read" }}</span
>
{{ end }}
</div>
{{ if .Params.tags }}
<span class="post-tags">
{{ range .Params.tags }}
<a href="{{ (urlize (printf "tags/%s" . )) | absLangURL }}/">#{{ . }}</a>&nbsp;
{{ end }}
</span> </span>
{{ end }}
{{ if .Params.Cover }} {{ if $.Site.Params.LastModDisplay }}
{{ partial "postcover.html" . }} {{ partial "lastmod.html" . }}
{{ end }}
<div class="post-content">
{{ with .Description }}
{{ . | markdownify }}
{{ else }}
{{ if .Truncated }}
{{ .Summary }}
{{ end }}
{{ end }} {{ end }}
</div> {{ end }}
{{ if not .Params.hideReadMore }} {{ with .Params.Author }}<span class="post-author">— {{ $.Site.Params.WrittenBy | default "Written by" }} {{ . }}</span>{{ end }}
<div> {{ if $.Site.Params.ShowReadingTime }}
<a class="read-more button" href="{{ .RelPermalink }}" <span class="post-read-time">— {{ .ReadingTime }} {{ $.Site.Params.MinuteReadingTime | default "min read" }}</span>
>{{ $.Site.Params.ReadMore | default "Read more" }} →</a
>
</div>
{{ end }} {{ end }}
</div> </div>
{{ if .Params.tags }}
<span class="post-tags">
{{ range .Params.tags }}
#<a href="{{ (urlize (printf "tags/%s" . )) | absURL }}/">{{ . }}</a>&nbsp;
{{ end }}
</span>
{{ end }}
{{ if .Params.Cover }}
<figure class="post-cover">
{{ if .Params.UseRelativeCover }}
<img src="{{ (printf "%s%s" .Permalink .Params.Cover ) }}" alt="{{ .Title | plainify | default " " }}" />
{{ else }}
<img src="{{ .Params.Cover | absURL }}" alt="{{ .Title | plainify | default " " }}" />
{{ end }}
{{ if .Params.CoverCaption }}
<figcaption class="center">{{ .Params.CoverCaption | markdownify }}</figcaption>
{{ end }}
</figure>
{{ end }}
<div class="post-content">
{{ with .Description }}
{{ . | markdownify }}
{{ else }}
{{ if .Truncated }}
{{ .Summary | markdownify }}
{{ end }}
{{ end }}
</div>
{{ if not .Params.hideReadMore }}
<div><a class="read-more button" href="{{.RelPermalink}}">{{ $.Site.Params.ReadMore | default "Read more" }} →</a></div>
{{ end }}
</div>
{{ end }} {{ end }}
{{ partial "pagination.html" . }} {{ partial "pagination.html" . }}
</div> </div>

View file

@ -3,7 +3,7 @@
{{ $contentTypeName := cond $isntDefault (string $.Site.Params.contentTypeName) "posts" }} {{ $contentTypeName := cond $isntDefault (string $.Site.Params.contentTypeName) "posts" }}
<div class="post"> <div class="post">
<h1 class="post-title">{{ .Title | markdownify }}</h1> <h1 class="post-title"><a href="{{ .Permalink }}">{{ .Title | markdownify }}</a></h1>
<div class="post-meta"> <div class="post-meta">
{{ if .Date | default nil }} {{ if .Date | default nil }}
<span class="post-date"> <span class="post-date">
@ -17,37 +17,38 @@
{{ end }} {{ end }}
{{ end }} {{ end }}
{{ with .Params.Author }} {{ with .Params.Author }}<span class="post-author">— {{ $.Site.Params.WrittenBy | default "Written by" }} {{ . }}</span>{{ end }}
<span class="post-author"
>— {{ $.Site.Params.WrittenBy | default "Written by" }} {{ . }}</span
>{{ end }}
{{ if $.Site.Params.ShowReadingTime }} {{ if $.Site.Params.ShowReadingTime }}
<span class="post-read-time" <span class="post-read-time">— {{ .ReadingTime }} {{ $.Site.Params.MinuteReadingTime | default "min read" }}</span>
>— {{ .ReadingTime }} {{ $.Site.Params.MinuteReadingTime | default "min read" }}</span
>
{{ end }} {{ end }}
</div> </div>
{{ if .Params.tags }} {{ if .Params.tags }}
<span class="post-tags"> <span class="post-tags">
{{ range .Params.tags }} {{ range .Params.tags }}
<a href="{{ (urlize (printf "tags/%s" . )) | absLangURL }}/">#{{ . }}</a>&nbsp; #<a href="{{ (urlize (printf "tags/%s" . )) | absURL }}/">{{ . }}</a>&nbsp;
{{ end }} {{ end }}
</span> </span>
{{ end }} {{ end }}
{{ if .Params.Cover }} {{ if .Params.Cover }}
{{ partial "postcover.html" . }} <figure class="post-cover">
{{ if .Params.UseRelativeCover }}
<img src="{{ (printf "%s%s" .Permalink .Params.Cover ) }}" alt="{{ .Title | plainify | default " " }}" />
{{ else }}
<img src="{{ .Params.Cover | absURL }}" alt="{{ .Title | plainify | default " " }}" />
{{ end }}
{{ if .Params.CoverCaption }}
<figcaption class="center">{{ .Params.CoverCaption | markdownify }}</figcaption>
{{ end }}
</figure>
{{ end }} {{ end }}
<div class="post-content"> <div class="post-content">
{{ if or .Params.Toc $.Site.Params.Toc }} {{ if or .Params.Toc $.Site.Params.Toc }}
{{ if ne .Params.Toc false }}
<h2>Table of Contents</h2> <h2>Table of Contents</h2>
<aside class="table-of-contents">{{ .TableOfContents }}</aside> <aside class="table-of-contents">{{ .TableOfContents }}</aside>
{{ end }}
{{ end }} {{ end }}
{{ .Content }} {{ .Content }}
</div> </div>
@ -55,9 +56,7 @@
{{ if or .NextInSection .PrevInSection }} {{ if or .NextInSection .PrevInSection }}
<div class="pagination"> <div class="pagination">
<div class="pagination__title"> <div class="pagination__title">
<span class="pagination__title-h" <span class="pagination__title-h">{{ $.Site.Params.ReadOtherPosts | default "Read other posts" }}</span>
>{{ $.Site.Params.ReadOtherPosts | default "Read other posts" }}</span
>
<hr /> <hr />
</div> </div>
<div class="pagination__buttons"> <div class="pagination__buttons">
@ -82,10 +81,12 @@
{{ end }} {{ end }}
{{ end }} {{ end }}
{{ if not (eq .Params.Comments "false") }} {{ if not (eq .Params.Comments "false") }}
{{ if or (eq .Type $.Site.Params.contentTypeName) (.Params.Comments) }} {{ if or (eq .Type $.Site.Params.contentTypeName) (.Params.Comments) }}
{{ partial "comments.html" . }} {{ partial "comments.html" . }}
{{ end }} {{ end }}
{{ end }} {{ end }}
</div>
</div>
{{ end }} {{ end }}

View file

@ -1,19 +1,18 @@
{{ define "main" }} {{ define "main" }}
<div class="terms">
<h1>{{ .Title }}</h1> <div class="terms">
<ul class="terms__list"> <h1>{{ .Title }}</h1>
{{ $type := .Type }} <ul class="terms__list">
{{ range $key, $value := .Data.Terms.Alphabetical }} {{ $type := .Type }}
{{ $name := .Name }} {{ range $key, $value := .Data.Terms.Alphabetical }}
{{ $count := .Count }} {{ $name := .Name }}
{{ with $.Site.GetPage (printf "/%s/%s" $type $name) }} {{ $count := .Count }}
<li class="terms__term"> {{ with $.Site.GetPage (printf "/%s/%s" $type $name) }}
<a href="{{ .Permalink }}" <li class="terms__term">
>#{{ .Name }} <span class="terms__term-count">{{ $count }}</span></a <a href="{{ .Permalink }}">#{{ .Name }} <span class="terms__term-count">{{ $count }}</span></a>
> </li>
</li>
{{ end }}
{{ end }} {{ end }}
</ul> {{ end }}
</div> </ul>
</div>
{{ end }} {{ end }}

View file

@ -1,49 +1,47 @@
{{ define "main" }} {{ define "main" }}
{{ $isntDefault := not (or (eq (trim $.Site.Params.contentTypeName " ") "posts") (eq (trim $.Site.Params.contentTypeName " ") "")) }}
{{ $contentTypeName := cond $isntDefault (string $.Site.Params.contentTypeName) "posts" }}
<div class="archive"> {{ $isntDefault := not (or (eq (trim $.Site.Params.contentTypeName " ") "posts") (eq (trim $.Site.Params.contentTypeName " ") "")) }}
<h1>{{ .Title }}</h1> {{ $contentTypeName := cond $isntDefault (string $.Site.Params.contentTypeName) "posts" }}
{{ range .Site.RegularPages.GroupByPublishDate "2006" }}
{{ if ne .Key "0001" }} <div class="archive">
<div class="archive__group-year"> <h1>{{ .Title }}</h1>
<h2 class="archive__group-year-header">{{ replace .Key "0001" "" }}</h2> {{ range .Site.RegularPages.GroupByPublishDate "2006" }}
{{ range .Pages.GroupByDate "January" }} {{ if ne .Key "0001" }}
<div class="archive__group-month"> <div class="archive__group-year">
<h3 class="archive__group-month-header">{{ .Key }}</h3> <h2 class="archive__group-year-header">{{ replace .Key "0001" "" }}</h2>
<div class="archive__group-posts"> {{ range .Pages.GroupByDate "January" }}
{{ range where .Pages "Type" $contentTypeName }} <div class="archive__group-month">
{{ if eq .Kind "page" }} <h3 class="archive__group-month-header">{{ .Key }}</h3>
<div class="archive__post"> <div class="archive__group-posts">
<h3 class="archive__post-title"> {{ range where .Pages "Type" $contentTypeName }}
<a href="{{ .Permalink }}">{{ .Title | markdownify }}</a> {{ if eq .Kind "page" }}
</h3> <div class="archive__post">
<div class="archive__post-meta"> <h3 class="archive__post-title"><a
<span class="archive__post-date"> href="{{ .Permalink }}">{{ .Title | markdownify }}</a>
{{ .Date.Format ($.Site.Params.DateFormatList | default "2006-01-02") }} </h3>
</span> <div class="archive__post-meta">
{{ with .Params.Author }} <span class="archive__post-date">
<span class="archive__post-author" {{ .Date.Format ($.Site.Params.DateFormatList | default "2006-01-02") }}
>— </span>
{{ $.Site.Params.WrittenBy | default "Written by" }} {{ with .Params.Author }}
{{ . }} <span class="archive__post-author">
</span> {{ $.Site.Params.WrittenBy | default "Written by" }}
{{ end }} {{ . }}
{{ if $.Site.Params.ShowReadingTime }} </span>
<span class="archive__post-read-time" {{ end }}
>— {{ .ReadingTime }} {{ if $.Site.Params.ShowReadingTime }}
{{ $.Site.Params.MinuteReadingTime | default "min read" }}</span <span class="archive__post-read-time">— {{ .ReadingTime }}
> {{ $.Site.Params.MinuteReadingTime | default "min read" }}</span>
{{ end }} {{ end }}
</div> </div>
</div>
{{ end }}
{{ end }}
</div>
</div>
{{ end }}
</div> </div>
{{ end }} {{ end }}
{{ end }}
</div>
</div>
{{ end }} {{ end }}
</div> </div>
{{ end }}
{{ end }}
</div>
{{ end }} {{ end }}

View file

@ -4,7 +4,7 @@
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga'); })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', '{{ . }}', 'auto'); ga('create', '{{.}}', 'auto');
ga('send', 'pageview'); ga('send', 'pageview');
</script> </script>

View file

@ -4,4 +4,5 @@ Hugo directory and insert:
{{ template "_internal/disqus.html" . }} {{ template "_internal/disqus.html" . }}
or whatever comment engine you want -> https://gohugo.io/content-management/comments/#readout --> or whatever comment engine you want -> https://gohugo.io/content-management/comments/#readout
-->

View file

@ -2,23 +2,22 @@
<div class="footer__inner"> <div class="footer__inner">
{{ if $.Site.Copyright }} {{ if $.Site.Copyright }}
<div class="copyright copyright--user">{{ $.Site.Copyright | safeHTML }}</div> <div class="copyright copyright--user">{{ $.Site.Copyright | safeHTML }}</div>
{{ else }} {{else}}
{{ partial "logo.html" . }} {{ partial "logo.html" . }}
<div class="copyright"> <div class="copyright">
<span <span>© {{ now.Year }} Powered by <a href="https://gohugo.io" target="_blank" rel="noopener">Hugo</a></span>
>© {{ now.Year }} Powered by <span>Theme created by <a href="https://twitter.com/panr" target="_blank" rel="noopener">panr</a></span>
<a href="https://gohugo.io" target="_blank" rel="noopener">Hugo</a></span
>
<span
>Theme created by
<a href="https://twitter.com/panr" target="_blank" rel="noopener">panr</a></span
>
</div> </div>
{{ end }} {{end}}
</div> </div>
</footer> </footer>
<script src="{{ "assets/main.js" | absURL }}"></script> {{ $opts := dict "noComments" true "minified" true "compact" true }}
<script src="{{ "assets/prism.js" | absURL }}"></script> {{ $menu := resources.Get "js/menu.js" | js.Build | babel $opts }}
{{ $theme := resources.Get "js/theme.js" | js.Build | babel $opts }}
{{ $prism := resources.Get "js/prism.js" | js.Build | babel $opts }}
<script src="{{ $menu.Permalink }}"></script>
<script src="{{ $theme.Permalink }}"></script>
<script src="{{ $prism.Permalink }}"></script>
{{- partial "extended_footer.html" . }} {{- partial "extended_footer.html" . }}

View file

@ -1,3 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" class="greater-icon" viewBox="0 0 44 44"> <svg xmlns="http://www.w3.org/2000/svg" class="greater-icon" viewBox="0 0 44 44">
<path fill="none" d="M15 8l14.729 14.382L15 35.367" /> <path fill="none" d="M15 8l14.729 14.382L15 35.367"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 146 B

After

Width:  |  Height:  |  Size: 145 B

View file

@ -1,39 +1,25 @@
<meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta <meta name="description" content="{{ if .IsHome }}{{ $.Site.Params.Subtitle }}{{ else }}{{ .Summary | plainify }}{{ end }}"/>
name="description" <meta name="keywords" content="{{ with .Params.Keywords }}{{ delimit . ", " }}{{ else }}{{ $.Site.Params.Keywords }}{{ end }}"/>
content="{{ if .IsHome }}{{ $.Site.Params.Subtitle }}{{ else }}{{ .Summary | plainify }}{{ end }}" <meta name="robots" content="noodp"/>
/>
<meta
name="keywords"
content="{{ with .Params.Keywords }}{{ delimit . ", " }}{{ else }}{{ $.Site.Params.Keywords }}{{ end }}"
/>
<meta name="robots" content="noodp" />
<link rel="canonical" href="{{ .Permalink }}" /> <link rel="canonical" href="{{ .Permalink }}" />
<!-- head custom --> <!-- head custom -->
{{- partial "prepended_head.html" . }} {{- partial "prepended_head.html" . }}
<!-- Theme CSS --> <!-- Theme CSS -->
<link rel="stylesheet" href="{{ "assets/style.css" | absURL }}" /> {{ $css := resources.Get "css/style.css" }}
{{ $opts := dict "inlineImports" true }}
{{ $style := $css | resources.PostCSS $opts | minify }}
<link rel="stylesheet" href="{{ $style.Permalink }}">
<!-- Custom CSS to override theme properties (/static/style.css) --> <!-- Custom CSS to override theme properties (/static/style.css) -->
<link rel="stylesheet" href="{{ "style.css" | absURL }}" /> <link rel="stylesheet" href="{{ "style.css" | absURL }}">
<!-- Icons --> <!-- Icons -->
<link <link rel="apple-touch-icon-precomposed" sizes="144x144" href="{{ "img/apple-touch-icon-144-precomposed.png" | absURL }}">
rel="apple-touch-icon-precomposed" <link rel="shortcut icon" href="{{ "img/favicon.png" | absURL }}">
sizes="144x144"
href="{{ "img/apple-touch-icon-144-precomposed.png" | absURL }}"
/>
<link rel="shortcut icon" href="{{ "img/favicon.png" | absURL }}" />
<!-- Fonts -->
<link href="{{ "assets/fonts/Inter-Italic.woff2" | absURL }}" rel="preload" type="font/woff2" as="font" crossorigin="">
<link href="{{ "assets/fonts/Inter-Regular.woff2" | absURL }}" rel="preload" type="font/woff2" as="font" crossorigin="">
<link href="{{ "assets/fonts/Inter-Medium.woff2" | absURL }}" rel="preload" type="font/woff2" as="font" crossorigin="">
<link href="{{ "assets/fonts/Inter-MediumItalic.woff2" | absURL }}" rel="preload" type="font/woff2" as="font" crossorigin="">
<link href="{{ "assets/fonts/Inter-Bold.woff2" | absURL }}" rel="preload" type="font/woff2" as="font" crossorigin="">
<link href="{{ "assets/fonts/Inter-BoldItalic.woff2" | absURL }}" rel="preload" type="font/woff2" as="font" crossorigin="">
<!-- Twitter Card --> <!-- Twitter Card -->
{{ template "_internal/twitter_cards.html" . }} {{ template "_internal/twitter_cards.html" . }}
@ -43,7 +29,7 @@
<!-- RSS | JSON --> <!-- RSS | JSON -->
{{ range .AlternativeOutputFormats -}} {{ range .AlternativeOutputFormats -}}
{{ printf `<link rel="%s" type="%s" href="%s" title="%s" />` .Rel .MediaType.Type .RelPermalink $.Site.Title | safeHTML }} {{ printf `<link rel="%s" type="%s" href="%s" title="%s" />` .Rel .MediaType.Type .RelPermalink $.Site.Title | safeHTML }}
{{ end -}} {{ end -}}
<!-- head custom --> <!-- head custom -->

View file

@ -6,8 +6,8 @@
{{ partial "menu.html" . }} {{ partial "menu.html" . }}
<span class="menu-trigger"> <span class="menu-trigger">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M0 0h24v24H0z" fill="none" /> <path d="M0 0h24v24H0z" fill="none"/>
<path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z" /> <path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"/>
</svg> </svg>
</span> </span>
{{ end }} {{ end }}

View file

@ -3,8 +3,7 @@
{{ if gt .Lastmod (add (time .Date).Unix $hourInSec) }} {{ if gt .Lastmod (add (time .Date).Unix $hourInSec) }}
{{ with .Lastmod }} {{ with .Lastmod }}
<span class="post-moddate"> <span class="post-moddate">
({{ $.Site.Params.LastModDisplay }} ({{ $.Site.Params.LastModDisplay }} {{ .Format ($.Site.Params.DateFormatSingle | default "2006-01-02") }})
{{ .Format ($.Site.Params.DateFormatSingle | default "2006-01-02") }})
</span> </span>
{{ end }} {{ end }}
{{ end }} {{ end }}

View file

@ -1,15 +1,9 @@
<a <a href="{{ if $.Site.Params.Logo.LogoHomeLink }}{{ $.Site.Params.Logo.LogoHomeLink }}{{else}}{{ $.Site.BaseURL }}{{ end }}" class="logo" style="text-decoration: none;">
href="{{ if $.Site.Params.Logo.LogoHomeLink }}{{ $.Site.Params.Logo.LogoHomeLink }}{{ else }}{{ $.Site.BaseURL }}{{ end }}"
class="logo"
style="text-decoration: none;"
>
{{ if $.Site.Params.Logo.path }} {{ if $.Site.Params.Logo.path }}
<img src="{{ $.Site.Params.Logo.path }}" alt="{{ $.Site.Params.Logo.alt }}" /> <img src="{{ $.Site.Params.Logo.path }}" alt="{{ $.Site.Params.Logo.alt }}" />
{{ else }} {{ else }}
<span class="logo__mark">{{ partial "greater-icon.html" . }}</span> <span class="logo__mark">{{ partial "greater-icon.html" . }}</span>
<span class="logo__text" <span class="logo__text">{{ with $.Site.Params.Logo.logoText }}{{ . }}{{ else }}hello friend{{ end }}</span>
>{{ with $.Site.Params.Logo.logoText }}{{ . }}{{ else }}hello friend{{ end }}</span
>
<span class="logo__cursor"></span> <span class="logo__cursor"></span>
{{ end }} {{ end }}
</a> </a>

View file

@ -10,10 +10,9 @@
<ul class="menu__sub-inner"> <ul class="menu__sub-inner">
<li class="menu__sub-inner-more-trigger"> <li class="menu__sub-inner-more-trigger">
{{ $.Site.Params.MenuMore | default "Show more" }} {{ $.Site.Params.MenuMore | default "Show more" }}
<span class="menu__sub-inner-more-trigger-icon" <span class="menu__sub-inner-more-trigger-icon">{{ partial "greater-icon.html" . }}</span>
>{{ partial "greater-icon.html" . }}</span
>
</li> </li>
<ul class="menu__sub-inner-more hidden"> <ul class="menu__sub-inner-more hidden">
{{ range last (sub (len $.Site.Menus.main) $.Site.Params.showMenuItems) $.Site.Menus.main }} {{ range last (sub (len $.Site.Menus.main) $.Site.Params.showMenuItems) $.Site.Menus.main }}
{{ if not .HasChildren }} {{ if not .HasChildren }}
@ -23,7 +22,7 @@
</ul> </ul>
</ul> </ul>
{{ end }} {{ end }}
{{ else }} {{ else }}
{{ range $.Site.Menus.main }} {{ range $.Site.Menus.main }}
{{ if not .HasChildren }} {{ if not .HasChildren }}
<li><a href="{{ .URL }}">{{ .Name }}</a></li> <li><a href="{{ .URL }}">{{ .Name }}</a></li>

View file

@ -1,11 +0,0 @@
<figure class="post-cover">
{{ if .Params.UseRelativeCover }}
<img src="{{ (printf "%s%s" .Permalink .Params.Cover ) }}" alt="{{ .Params.CoverAlt | plainify | default .Title }}"/>
{{ else }}
<img src="{{ .Params.Cover | absURL }}" alt="{{ .Params.CoverAlt | plainify | default .Title }}"/>
{{ end }}
{{ if .Params.CoverCaption }}
<figcaption class="center">{{ .Params.CoverCaption | markdownify }}</figcaption>
{{ end }}
</figure>

View file

@ -1,14 +1,5 @@
<svg <svg class="theme-toggler" width="24" height="24" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
class="theme-toggler" <path d="M22 41C32.4934 41 41 32.4934 41 22C41 11.5066 32.4934 3 22
width="24"
height="24"
viewBox="0 0 48 48"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M22 41C32.4934 41 41 32.4934 41 22C41 11.5066 32.4934 3 22
3C11.5066 3 3 11.5066 3 22C3 32.4934 11.5066 41 22 41ZM7 22C7 3C11.5066 3 3 11.5066 3 22C3 32.4934 11.5066 41 22 41ZM7 22C7
13.7157 13.7157 7 22 7V37C13.7157 37 7 30.2843 7 22Z" 13.7157 13.7157 7 22 7V37C13.7157 37 7 30.2843 7 22Z"/>
/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 337 B

After

Width:  |  Height:  |  Size: 317 B

View file

@ -1,30 +1,25 @@
{{ $original := .Page.Resources.GetMatch (printf "*%s*" (.Get 0)) }} {{ $original := .Page.Resources.GetMatch (printf "*%s*" (.Get 0)) }}
{{ $command := .Get 1 }} {{ $command := .Get 1 }}
{{ $options := .Get 2 }} {{ $options := .Get 2 }}
{{ $position := .Get 3 }} {{ $position := .Get 3}}
{{ if eq $command "Fit" }} {{ if eq $command "Fit"}}
{{ .Scratch.Set "image" ($original.Fit $options) }} {{ .Scratch.Set "image" ($original.Fit $options) }}
{{ else if eq $command "Resize" }} {{ else if eq $command "Resize"}}
{{ .Scratch.Set "image" ($original.Resize $options) }} {{ .Scratch.Set "image" ($original.Resize $options) }}
{{ else if eq $command "Fill" }} {{ else if eq $command "Fill"}}
{{ .Scratch.Set "image" ($original.Fill $options) }} {{ .Scratch.Set "image" ($original.Fill $options) }}
{{ else }} {{ else }}
{{ errorf "Invalid image processing command: Must be one of Fit, Fill or Resize." }} {{ errorf "Invalid image processing command: Must be one of Fit, Fill or Resize."}}
{{ end }} {{ end }}
{{ $image := .Scratch.Get "image" }} {{ $image := .Scratch.Get "image" }}
<figure class="{{ with $position }}{{ . }}{{ else -}} left {{- end }}"> <figure class="{{ with $position }}{{ . }}{{ else -}} left {{- end }}" >
<img <img style="max-width: 100%; width: auto; height: auto; border-radius: 8px;" src="{{ $image.RelPermalink }}" width="{{ $image.Width }}" height="{{ $image.Height }}">
style="max-width: 100%; width: auto; height: auto; border-radius: 8px;" {{ with .Inner }}
src="{{ $image.RelPermalink }}"
width="{{ $image.Width }}"
height="{{ $image.Height }}"
/>
{{ with .Inner }}
<figcaption> <figcaption>
{{ . }} {{ . }}
</figcaption> </figcaption>
{{ end }} {{ end }}
</figure> </figure>

View file

@ -1,62 +1,7 @@
{ {
"name": "hello-friend", "name": "hello-friend",
"version": "2.1.0", "version": "2.0.0",
"main": "index.js", "main": "index.js",
"author": "Radosław Kozieł <@panr> <radoslaw.koziel@gmail.com>", "author": "Radosław Kozieł <@panr> <radoslaw.koziel@gmail.com>",
"license": "MIT", "license": "MIT"
"scripts": {
"dev": "webpack --mode=development --watch",
"build": "webpack --mode=production",
"prepare": "husky install"
},
"browserslist": [
"last 2 versions",
">1%",
"not dead"
],
"devDependencies": {
"@babel/cli": "^7.2.3",
"@babel/core": "^7.2.2",
"@babel/plugin-transform-runtime": "^7.2.0",
"@babel/preset-env": "^7.3.1",
"@babel/preset-stage-2": "^7.0.0",
"babel-eslint": "^10.1.0",
"babel-loader": "^8.0.5",
"browserslist": "^4.0.1",
"clean-webpack-plugin": "^4.0.0",
"clipboard": "^2.0.4",
"css-loader": "^6.5.1",
"cssnano": "^5.0.8",
"eslint-config-airbnb": "^18.2.0",
"eslint-config-prettier": "^8.1.0",
"eslint-plugin-jsx-a11y": "^6.2.1",
"file-loader": "^6.1.0",
"html-webpack-plugin": "^5.5.0",
"husky": "^7.0.4",
"mini-css-extract-plugin": "^2.4.3",
"postcss": "^8.2.10",
"postcss-browser-reporter": "^0.6.0",
"postcss-cli": "^9.0.1",
"postcss-color-function": "^4.0.1",
"postcss-color-mod-function": "^3.0.3",
"postcss-import": "^14.0.0",
"postcss-loader": "^6.2.0",
"postcss-mixins": "^8.1.0",
"postcss-nested": "^5.0.5",
"postcss-preset-env": "^6.7.0",
"postcss-reporter": "^7.0.2",
"postcss-url": "^10.1.3",
"prettier-eslint-cli": "^5.0.0",
"ramda": "^0.27.1",
"style-loader": "^3.3.1",
"terser-webpack-plugin": "^5.2.4",
"url-loader": "^4.1.0",
"webpack": "^5.27.1",
"webpack-cli": "^4.5.0"
},
"husky": {
"hooks": {
"pre-push": "yarn build && git add . && git commit --amend --no-edit"
}
}
} }

Binary file not shown.

View file

@ -1 +0,0 @@
!function(){var e,t,n,o,i,d,c,s,r,a,l;e=document.querySelector(".container"),t=document.querySelector(".menu"),n=document.querySelector(".menu-trigger"),document.querySelector(".menu__inner--desktop"),o=document.querySelector(".menu__sub-inner-more-trigger"),i=document.querySelector(".menu__sub-inner-more"),d=getComputedStyle(document.body).getPropertyValue("--phoneWidth"),c=function(){return window.matchMedia(d).matches},s=function(){n&&n.classList.toggle("hidden",!c()),t&&t.classList.toggle("hidden",c()),i&&i.classList.toggle("hidden",!c())},t&&t.addEventListener("click",(function(e){return e.stopPropagation()})),i&&i.addEventListener("click",(function(e){return e.stopPropagation()})),s(),document.body.addEventListener("click",(function(){c()||!i||i.classList.contains("hidden")?c()&&!t.classList.contains("hidden")&&t.classList.add("hidden"):i.classList.add("hidden")})),window.addEventListener("resize",s),n&&n.addEventListener("click",(function(e){e.stopPropagation(),t&&t.classList.toggle("hidden")})),o&&o.addEventListener("click",(function(t){t.stopPropagation(),i&&i.classList.toggle("hidden"),i&&i.getBoundingClientRect().right>e.getBoundingClientRect().right&&(i.style.left="auto",i.style.right=0)})),r=window.localStorage&&window.localStorage.getItem("theme"),a=document.querySelector(".theme-toggle"),l="dark"===r,null!==r&&document.body.classList.toggle("dark-theme",l),a.addEventListener("click",(function(){document.body.classList.toggle("dark-theme"),window.localStorage&&window.localStorage.setItem("theme",document.body.classList.contains("dark-theme")?"dark":"light")}))}();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -1,98 +0,0 @@
const { CleanWebpackPlugin } = require("clean-webpack-plugin");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const TerserPlugin = require("terser-webpack-plugin");
const path = require("path");
const join = (...paths) => path.join(__dirname, ...paths);
module.exports = (env, { mode }) => ({
resolve: {
extensions: [".js", ".css"],
modules: ["assets", "node_modules"],
},
entry: {
main: [join("assets", "js", "menu.js"), join("assets", "js", "theme.js")],
prism: join("assets", "js", "prism.js"),
style: join("assets", "css", "style.css"),
},
output: {
filename: "[name].js",
path: join("static/assets"),
publicPath: "",
},
performance: {
hints: false,
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: "babel-loader",
options: {
presets: ["@babel/preset-env"],
},
},
},
{
test: /\.(png|jpe?g|svg)$/,
type: "asset/resource",
generator: {
filename: "images/[name][ext]",
},
},
{
test: /\.(woff|woff2|ttf|eot)$/,
type: "asset/resource",
generator: {
filename: "fonts/[name][ext]",
},
},
{
test: /\.css$/,
use: [
MiniCssExtractPlugin.loader,
{
loader: "css-loader",
options: {
modules: {
localIdentName: "[local]",
},
import: true,
importLoaders: 1,
},
},
{
loader: "postcss-loader",
},
],
},
],
},
optimization: {
splitChunks: {
name: "vendor",
minChunks: 2,
},
minimize: true,
minimizer: [
new TerserPlugin({
parallel: true,
extractComments: false,
}),
],
},
plugins: [
new CleanWebpackPlugin({
cleanOnceBeforeBuildPatterns: [join("static/assets")],
cleanAfterEveryBuildPatterns: [join("static/assets/style.js")],
verbose: true,
}),
new MiniCssExtractPlugin({
filename: "[name].css",
chunkFilename: "[id].css",
}),
],
});

5400
yarn.lock

File diff suppressed because it is too large Load diff