gvatar support, sticky sidebar, archive pagination, number pagination support, pwa more score,

This commit is contained in:
zzossig 2019-11-17 20:01:09 +09:00
parent 41460dd49b
commit 3ef420597a
66 changed files with 510 additions and 222 deletions

View File

@ -133,7 +133,6 @@ hasCJKLanguage = true
summaryLength = 70
googleAnalytics = ""
copyright = "©{year}, All Rights Reserved"
timeout = 10000
enableEmoji = true
@ -216,12 +215,12 @@ You shoud make your own menu.
```bash
logoText = "Zzo"
description = "The Zzo theme for Hugo example site."
custom_css = ["css/custom.css", "css/custom.css"]
custom_js = ["js/custom.js"]
custom_css = []
custom_js = []
# header
homeHeaderType = "slide" # text, img, slide
swiperCount = 3 # only works homeHeaderType = slide
swiperCount = 3 # only works when homeHeaderType = slide
# body
enableBreadcrumb = true
@ -231,9 +230,18 @@ enableMark = true
enableGoToTop = true
enableWhoami = true
summaryShape = "card" # card, classic, compact
archiveGroupByDate = "2006-01" # "2006-01": group by month, "2006": group by year
archiveGroupByDate = "2006" # "2006-01": group by month, "2006": group by year
archivePaginate = 20
paginateWindow = 1
# whoami
myname = "zzossig"
whoami = "Let me introduce my self"
email = "zzossig@gmail.com"
whoami = "Web Developer"
useGravatar = false
location = "Seoul, Korea"
organization = "Hugo"
link = "https://github.com/zzossig/hugo-theme-zzo"
# sidebar
enableBio = true
@ -586,13 +594,15 @@ This project use swiper library for slider header component.
```toml
data/grid.toml example
grid_max_width = "960px"
grid_max_width = "960"
grid_max_unit = "px" # "px", "\"%\"" Using% is limited to using full width.
grid_main_main_width = "5"
grid_main_main_unit = "fr"
grid_main_main_unit = "fr" # "fr", "px"
grid_main_side_width = "2"
grid_main_side_unit = "fr"
grid_navbar_height = "50px"
grid_column_gap = "1.5rem"
grid_main_side_unit = "fr" # "fr", "px"
grid_column_gap_width = "32"
grid_column_gap_unit = "px" # "px"
grid_navbar_height = "50px" # "px"
grid_row_gap = "0"
```

View File

@ -13,5 +13,22 @@
}
@function themed($key) {
@return map-get($theme-map, $key);
@return map-get($theme-map, $key);
}
@function calcSideWidth() {
$grid_max: $grid_max_width + $grid_max_unit;
$grid_main_main: $grid_main_main_width + $grid_main_main_unit;
$grid_main_side: $grid_main_side_width + $grid_main_side_unit;
$grid_column_gap: $grid_column_gap_width + $grid_column_gap_unit;
@if $grid_main_main_unit == fr and $grid_main_side_unit == fr {
@if $grid_max_unit == px {
@return #{($grid_main_side_width / ($grid_main_main_width + $grid_main_side_width)) * $grid_max_width - $grid_column_gap_width}px;
} @else if $grid_max_unit == "%" {
@return ($grid_main_side_width / ($grid_main_main_width + $grid_main_side_width) * 100)*1%;
}
} @else if $grid_main_side_unit == px {
@return $grid_main_side;
}
}

View File

@ -59,4 +59,4 @@
.hide {
display: none;
}
}

View File

@ -70,6 +70,10 @@ ul {
list-style: none;
}
hr {
border: 0;
}
// Form
button,
input,

View File

@ -1,42 +1,74 @@
.bio {
@include flexbox();
@include justify-content(center);
@include align-items(center);
@include align-items(flex-start);
@include flex-direction(column);
width: 100%;
max-width: 200px;
font-family: 'Montserrat', sans-serif;
&__photo {
width: 100%;
height: 100%;
border-radius: 0.25rem;
@include box-shadow(0, 8px, 6px, -6px, black);
&-wrapper {
width: 128px;
height: 128px;
border-radius: 100%;
overflow: hidden;
margin: 1rem;
@include themify($themes) {
background-color: themed('');
}
&-wrapper {
width: 100%;
height: 100%;
border-radius: 0.25rem;
margin: 1rem auto;
@include flexbox();
@include align-items(center);
@include justify-content(center);
@include themify($themes) {
background-color: themed('avatar-background-color');
}
}
}
&__name {
font-weight: 700;
letter-spacing: 1px;
font-family: inherit;
font-size: 26px;
}
&__desc {
margin: 0.5rem 0;
text-align: center;
font-size: 14px;
}
&__info {
font-size: 14px;
@include flexbox();
@include align-items(center);
@include justify-content(center);
&--icon {
margin-right: 0.25rem;
@include themify($themes) {
color: themed('social-icon-color');
}
}
a {
padding-right: 1rem;
@include truncate(calcSideWidth());
}
}
&__social {
a {
width: 100%;
margin-top: 0.5rem;
@include flexbox();
a {
text-decoration: none !important;
width: 100%;
padding: 0.5rem;
border-radius: 0.125rem;
@include flexbox();
@include align-items(center);
@include justify-content(space-around);
@include themify($themes) {
color: themed('social-icon-color');
@include on-event {
@ -45,4 +77,8 @@
}
}
}
&__hr {
margin: 1rem 0;
}
}

View File

@ -1,14 +1,20 @@
.features {
max-width: $grid-max-width;
height: 200px;
font-family: 'Montserrat', sans-serif;
padding: 1rem;
margin: 0 4rem;
padding: 0.5rem;
margin: 0 4rem;
@include flexbox();
@include flex-direction(column);
@include align-items(center);
@include justify-content(center);
@include respond-to(sm) {
margin: 0 1rem;
}
&__title {
font-size: 45px;
font-size: 32px;
font-weight: 700;
}
@ -20,7 +26,8 @@
li {
padding: 0.125rem 0.5rem;
width: 43%;
width: 30%;
font-size: 16px;
@include truncate(350px);
&::before {
@ -32,12 +39,12 @@
.features-text {
max-width: $grid-max-width;
height: 100%;
height: 200px;
padding: 0.5rem;
margin: 0 4rem;
text-align: center;
font-family: 'Montserrat', sans-serif;
font-size: 45px;
font-weight: 700;
padding-bottom: 3.2rem;
margin: 0 4rem;
@include flexbox();
@include flex-direction(column);
@ -51,66 +58,35 @@
.features-intro {
max-width: $grid-max-width;
margin-right: auto;
margin-left: auto;
height: 100%;
margin: 2rem 8rem;
height: 200px;
padding: 0.5rem;
margin: 0 4rem;
text-align: center;
font-family: 'Montserrat', sans-serif;
@include flexbox();
@include flex-direction(column);
@include align-items(center);
@include justify-content(center);
@include respond-to(sm) {
margin: 1rem;
}
&__logo {
width: 140px;
height: 140px;
border-radius: 100%;
margin: 0 auto;
display: block;
float: left;
transform-style: preserve-3d;
&-img {
width: 100%;
height: 100%;
}
&__title {
font-weight: 700;
line-height: 1;
margin-bottom: 1.5rem;
}
&__titles {
margin-left: 160px;
text-align: left;
position: relative;
.title {
margin: 25px 0 0;
font-family: 'Montserrat', sans-serif;
font-size: 65px;
font-weight: 700;
line-height: 1;
}
.subtitle {
font-family: 'Montserrat', sans-serif;
font-size: 44px;
margin: 10px 0 40px 0;
font-weight: 700;
line-height: 1.2;
}
}
&__links {
margin: 20px 0;
text-align: left;
font-size: 16px;
font-weight: 400;
&__links {
a {
margin-right: 0.4rem;
padding: 0.4rem;
font-size: 16px;
}
}
&__release-info {
margin: 20px 160px 0;
font-weight: 400;
text-align: left;
font-size: 12px;
margin-top: 0.25rem;
font-size: 11px;
}
}

View File

@ -1,17 +1,17 @@
.gtt {
position: fixed;
position: absolute;
right: 0.5rem;
bottom: 0.5rem;
width: 40px;
height: 40px;
border-radius: 50%;
border-radius: 50%;
cursor: pointer;
@include flexbox();
@include align-items(center);
@include justify-content(center);
@include themify($themes) {
color: themed('gtt-color');
color: themed('gtt-color');
background-color: themed('gtt-background-color');
@include on-event {

View File

@ -0,0 +1,22 @@
.fade-1 {
height: 1px;
$color: #595B5C;
color: $color;
background-image: linear-gradient(
90deg,
rgba($color, 0),
rgba($color, 1) 50%,
rgba($color, 0) 100%);
}
.fade-2 {
border-width: 0 0 1px;
$color: #595B5C;
color: $color;
border-image: linear-gradient(
90deg,
rgba($color, 0),
rgba($color, 1) 50%,
rgba($color, 0) 100%) 0 0 100%;
border-style: solid;
}

View File

@ -1,3 +1,55 @@
.pagination {
border-radius: 0.25rem;
margin: 2rem 1rem;
padding: 0.5rem 0;
@include flexbox();
@include align-items(center);
@include justify-content(center);
@include themify($themes) {
background-color: themed('pagination-background-color');
}
li {
border-radius: 0.25rem;
&.disabled {
a {
@include on-event {
@include themify($themes) {
color: themed('pagination-number-color');
text-decoration: none;
}
}
}
}
&.active {
a {
@include themify($themes) {
color: themed('link-hover');
}
}
}
}
a {
font-size: 1.25rem;
padding: 0.5rem 0.75rem;
@include themify($themes) {
color: themed('pagination-number-color');
@include on-event {
color: themed('link-hover');
}
}
}
.active {
@include themify($themes) {
background-color: themed('pagination-background-color');
}
}
}
.pagination-single {
@include flexbox();
@include align-items(center);
@ -61,7 +113,7 @@
@include flexbox();
@include align-items(center);
@include justify-content(space-around);
@include justify-content(space-around);
@include themify($themes) {
background-color: themed('pagination-background-color');
}

View File

@ -1,5 +1,7 @@
.summary-card {
padding: 0 1rem;
margin: 0 0.5rem;
padding: 0 0.5rem;
.title {
a {
font-family: $summary_title_font;

View File

@ -2,7 +2,6 @@
background-color: transparent;
width: 100%;
height: auto;
min-height: 300px;
}
.swiper-slide {

View File

@ -3,6 +3,14 @@
margin: 2.5rem 0;
z-index: z('taxo');
&-root {
position: sticky;
top: $grid_navbar_height;
@include themify($themes) {
background-color: themed('body-background-color');
}
}
&__title {
font-weight: 700;
font-family: $taxo_titie_font;

View File

@ -1,6 +1,6 @@
.toc {
width: 100%;
max-width: 250px;
max-width: calcSideWidth();
position: fixed;
top: 7rem;
font-size: 0.85rem;
@ -54,7 +54,7 @@
}
a {
color: themed('toc-title-color');
color: themed('toc-title-color');
&.active {
color: themed('toc-vertical-line-active');
}

View File

@ -1,5 +1,6 @@
.footer {
padding: 0 0.5rem;
position: relative;
@include themify($themes) {
color: themed('footer-color');

View File

@ -1,14 +1,19 @@
$grid_max: $grid_max_width + $grid_max_unit;
$grid_main_main: $grid_main_main_width + $grid_main_main_unit;
$grid_main_side: $grid_main_side_width + $grid_main_side_unit;
$grid_column_gap: $grid_column_gap_width + $grid_column_gap_unit;
.wrapper {
display: grid;
max-width: $grid_max_width;
max-width: $grid_max;
justify-content: center;
grid-template-columns: minmax(350px, $grid_main_main) minmax(0PX, $grid_main_side);
grid-template-columns: minmax(350px, $grid_main_main) minmax(calcSideWidth(), $grid_main_side);
grid-template-rows: $grid_navbar_height auto 1fr auto;
grid-column-gap: $grid_column_gap;
grid-row-gap: $grid_row_gap;
@include respond-to(sm) {
grid-template-columns: minmax(350px, $grid_main_main) minmax(0, $grid_main_side);
}
}
.header-main {

View File

@ -61,4 +61,8 @@
}
}
}
&-hr {
margin: 1.5rem 0;
}
}

View File

@ -4,12 +4,14 @@
{{- $scr := .Scratch -}}
$grid_max_width: {{ $scr.Get "grid_max_width" }};
$grid_max_unit: {{ $scr.Get "grid_max_unit" }};
$grid_main_main_width: {{ $scr.Get "grid_main_main_width" }};
$grid_main_main_unit: {{ $scr.Get "grid_main_main_unit" }};
$grid_main_side_width: {{ $scr.Get "grid_main_side_width" }};
$grid_main_side_unit: {{ $scr.Get "grid_main_side_unit" }};
$grid_column_gap_width: {{ $scr.Get "grid_column_gap_width" }};
$grid_column_gap_unit: {{ $scr.Get "grid_column_gap_unit" }};
$grid_navbar_height: {{ $scr.Get "grid_navbar_height" }};
$grid_column_gap: {{ $scr.Get "grid_column_gap" }};
$grid_row_gap: {{ $scr.Get "grid_row_gap" }};
$search_placeholder_font: {{ $scr.Get "search_placeholder" }};
@ -129,6 +131,7 @@ $subs_button_background_color: {{ $scr.Get "subs_button_background_color" }};
$subs_button_hover_background_color: {{ $scr.Get "subs_button_hover_background_color" }};
$gallery_mask_color: {{ $scr.Get "gallery_mask_color" }};
$gallery_mask_background_color: {{ $scr.Get "gallery_mask_background_color" }};
$avatar_background_color: {{ $scr.Get "avatar_background_color" }};
@import 'abstracts/variables';
@import 'abstracts/mixins';
@ -167,6 +170,7 @@ $gallery_mask_background_color: {{ $scr.Get "gallery_mask_background_color" }};
@import 'components/bio';
@import 'components/features';
@import 'components/mathjax';
@import 'components/hr';
@import 'pages/body';
@import 'pages/home';

View File

@ -0,0 +1,3 @@
.about{
padding: 1rem;
}

View File

@ -1,11 +1,14 @@
.archive {
position: relative;
margin-bottom: 5rem;
padding: 2rem;
padding: 2rem 2rem 0;
width: 100%;
@include flexbox();
@include justify-content(flex-start);
&__container {
width: 100%;
}
&__ul {
position: relative;
&::before {
@ -13,7 +16,7 @@
position: absolute;
left: 2.25rem;
top: 0;
width: 0.25rem;
width: 0.125rem;
height: 100%;
@include themify($themes) {
background-color: themed('toc-vertical-line');
@ -29,13 +32,44 @@
&__li {
margin-bottom: 0.5rem;
margin-left: 4rem;
margin-left: 4rem;
z-index: 0;
@include transition(margin-left, 0.1s, ease);
@include flexbox();
@include align-items(center);
@include respond-to(sm) {
margin-left: 0;
}
position: relative;
&:not(:last-child) {
&::before {
content: '';
left: 2.25rem;
top: -0.03rem;
height: 45px;
position: absolute;
z-index: -1;
@include themify($themes) {
border-left: 0.125rem solid themed('toc-vertical-line');
}
}
}
&:last-child {
&::before {
content: '';
left: 2.25rem;
top: -0.03rem;
height: 28px;
position: absolute;
z-index: -1;
@include themify($themes) {
border-left: 0.125rem solid themed('toc-vertical-line');
}
}
}
}
}
&__key {
@ -80,13 +114,14 @@
&__title {
margin-right: 0.5rem;
@include truncate($grid-max-width);
@include on-event {
&::before {
content: '';
position: absolute;
left: 2.25rem;
top: inherit;
width: 0.25rem;
width: 0.125rem;
height: 23px;
@include themify($themes) {
background-color: themed('archive-hover-line-color');

View File

@ -1,5 +1,6 @@
#body {
position: relative;
overflow-x: hidden;
@include themify($themes) {
color: themed('body-color');
background-color: themed('backdrop-background-color');

View File

@ -34,6 +34,7 @@
@include themify($themes) {
color: themed("single-contents-title-color");
}
line-height: 1.25;
}
h1 {
@ -47,8 +48,7 @@
padding: 0;
color: inherit;
font-weight: 900;
text-rendering: optimizeLegibility;
line-height: 1.1;
text-rendering: optimizeLegibility;
}
h3 {

View File

@ -99,4 +99,5 @@ $custom: (
subs-button-hover-background-color: $subs_button_hover_background_color,
gallery-mask-color: $gallery_mask_color,
gallery-mask-background-color: $gallery_mask_background_color,
avatar-background-color: $avatar_background_color,
) !default;

View File

@ -100,4 +100,5 @@ $dark: (
subs-button-hover-background-color: darken(#FF6188, 5%),
gallery-mask-color: #FCFCFA,
gallery-mask-background-color: rgba(0, 0, 0, 0.7),
avatar-background-color: #403E41,
);

View File

@ -103,4 +103,5 @@ $hacker: (
subs-button-hover-background-color: lighten(#252526, 5%),
gallery-mask-color: #FCFCFA,
gallery-mask-background-color: rgba(0, 0, 0, 0.7),
avatar-background-color: #E3CD26,
);

View File

@ -100,4 +100,5 @@ $light: (
subs-button-hover-background-color: darken(#eeeeee, 5%),
gallery-mask-color: #424242,
gallery-mask-background-color: rgba(255, 255, 255, 0.7),
avatar-background-color: #dbdbdb,
);

View File

@ -103,4 +103,5 @@ $solarized: (
subs-button-hover-background-color: darken($secondary-color, 3%),
gallery-mask-color: #424242,
gallery-mask-background-color: rgba(253, 247, 227, 0.7),
avatar-background-color: darken(#FBF1D1, 5%),
);

View File

@ -8,7 +8,6 @@ hasCJKLanguage = true
summaryLength = 70
googleAnalytics = ""
copyright = "©{year}, All Rights Reserved"
timeout = 10000
enableEmoji = true

View File

@ -1,11 +1,11 @@
logoText = "Zzo"
description = "The Zzo theme for Hugo example site."
custom_css = ["css/custom.css", "scss/custom.scss"]
custom_js = ["js/custom.js"]
custom_css = []
custom_js = []
# header
homeHeaderType = "slide" # text, img, slide
swiperCount = 3 # only works homeHeaderType = slide
swiperCount = 3 # only works when homeHeaderType = slide
# body
enableBreadcrumb = true
@ -15,9 +15,18 @@ enableMark = true
enableGoToTop = true
enableWhoami = true
summaryShape = "card" # card, classic, compact
archiveGroupByDate = "2006-01" # "2006-01": group by month, "2006": group by year
archiveGroupByDate = "2006" # "2006-01": group by month, "2006": group by year
archivePaginate = 20
paginateWindow = 1
# whoami
myname = "zzossig"
whoami = "Let me introduce my self"
email = "zzossig@gmail.com"
whoami = "Web Developer"
useGravatar = false
location = "Seoul, Korea"
organization = "Hugo"
link = "https://github.com/zzossig/hugo-theme-zzo"
# sidebar
enableBio = true

View File

@ -1,8 +1,10 @@
grid_max_width = "960px"
grid_max_width = "960"
grid_max_unit = "px" # "px", "\"%\"" Using% is limited to using full width.
grid_main_main_width = "5"
grid_main_main_unit = "fr"
grid_main_main_unit = "fr" # "fr", "px"
grid_main_side_width = "2"
grid_main_side_unit = "fr"
grid_navbar_height = "50px"
grid_column_gap = "1.5rem"
grid_main_side_unit = "fr" # "fr", "px"
grid_column_gap_width = "32"
grid_column_gap_unit = "px" # "px"
grid_navbar_height = "50px" # "px"
grid_row_gap = "0"

View File

@ -23,7 +23,9 @@
sri = "sha256-3Fdoa5wQb+JYfEmTpQHx9sc/GuwpfC/0R9EpBki+mf8="
url = "https://cdn.jsdelivr.net/npm/mathjax@3.0.0/es5/tex-chtml.js"
[js.swiper]
sri = "sha256-ZATCxHgcbalqi3AxHm7sPmwbfs3oZ4feGmCARVDmXig="
url = "https://cdn.jsdelivr.net/npm/swiper@5.2.0/js/swiper.min.js"
@ -32,7 +34,9 @@
sri = "sha256-V8SV2MO1FUb63Bwht5Wx9x6PVHNa02gv8BgH/uH3ung="
url = "https://cdn.jsdelivr.net/npm/katex@0.11.1/dist/katex.min.css"
[css.swiper]
sri = "sha256-s2QA0JtYEOOqRUyzKN+k2a/RxcimDuF2HZBdsosQRbM="
url = "https://cdn.jsdelivr.net/npm/swiper@5.2.0/css/swiper.min.css"

View File

@ -98,4 +98,5 @@ subs_button_color = "inherit"
subs_button_background_color = "inherit"
subs_button_hover_background_color = "inherit"
gallery_mask_color = "inherit"
gallery_mask_background_color = "inherit"
gallery_mask_background_color = "inherit"
avatar_background_color = "inherit"

View File

@ -8,7 +8,6 @@ hasCJKLanguage = true
summaryLength = 70
googleAnalytics = ""
copyright = "©{year}, All Rights Reserved"
timeout = 10000
enableEmoji = true
@ -26,12 +25,12 @@ rssLimit = 100
[params]
logoText = "Zzo"
description = "The Zzo theme for Hugo example site."
custom_css = ["css/custom.css", "scss/custom.scss"]
custom_js = ["js/custom.js"]
custom_css = []
custom_js = []
# header
homeHeaderType = "slide" # text, img, slide
swiperCount = 3 # only works homeHeaderType = slide
swiperCount = 3 # only works when homeHeaderType = slide
# body
enableBreadcrumb = true
@ -41,9 +40,18 @@ rssLimit = 100
enableGoToTop = true
enableWhoami = true
summaryShape = "card" # card, classic, compact
archiveGroupByDate = "2006-01" # "2006-01": group by month, "2006": group by year
archiveGroupByDate = "2006" # "2006-01": group by month, "2006": group by year
archivePaginate = 20
paginateWindow = 1
# whoami
myname = "zzossig"
whoami = "Let me introduce my self"
email = "zzossig@gmail.com"
whoami = "Web Developer"
useGravatar = false
location = "Seoul, Korea"
organization = "Hugo"
link = "https://github.com/zzossig/hugo-theme-zzo"
# sidebar
enableBio = true

View File

@ -25,6 +25,9 @@ other = "Subscribe"
[footer-social]
other = "Social"
[archive-dateformat]
other = "Jan 2"
[single-dateformat]
other = "Jan 2, 2006"

View File

@ -25,6 +25,9 @@ other = "구독"
[footer-social]
other = "소셜"
[archive-dateformat]
other = "01월 02일"
[single-dateformat]
other = "2006년 01월 02일"

View File

@ -20,8 +20,7 @@
{{ block "main" . }}{{ end }}
{{ partial "footer/site-footer" . }}
</div>
</div>
{{ partial "etc/go-to-top" . }}
</div>
</body>
</html>

View File

@ -18,7 +18,7 @@
</div>
</article>
{{ partial "pagination/pagination-list" . }}
{{ partial "pagination/pagination" . }}
</main>
{{ if $.Param "enableSidebar" }}

View File

@ -3,12 +3,11 @@
<h3 class="h3 terms__title">
{{ .Title }}
</h3>
</span>
<article class="single__contents">
{{ .Content }}
</article>
</span>
</header>
<main class="main">
about page
<article class="single__contents about">
{{ .Content }}
</article>
</main>
{{ end }}

View File

@ -9,19 +9,23 @@
</header>
</span>
<main class="main archive">
<div>
{{ range (and (where .Site.RegularPages "Type" "!=" "about") (where .Site.RegularPages "Type" "!=" "archive")).GroupByDate (.Site.Params.archiveGroupByDate | default "2006") }}
<div class="archive__container">
{{ $paginator := .Paginate (.Site.RegularPages.GroupByDate (.Site.Params.archiveGroupByDate | default "2006")) .Site.Params.archivePaginate }}
{{ range ($paginator).PageGroups }}
<span class="archive__key">{{ .Key }}</span>
<ul class="archive__ul">
{{ range .Pages }}
<li class="archive__li">
<span class="archive__type">{{ .Type }}</span>
<a href="{{ .Permalink }}" class="archive__title">{{ .Title }}</a>
<span class="meta archive__date">{{ .Date.Format (i18n "single-dateformat") }}</span>
<span class="meta archive__date">{{ .Date.Format (i18n "archive-dateformat") }}</span>
</li>
{{ end }}
</ul>
{{ end }}
{{ partial "pagination/pagination-list" . }}
</div>
</main>
{{ end }}

View File

@ -13,8 +13,7 @@
{{ .Render "summary" }}
{{ end }}
</div>
{{ partial "pagination/pagination-list" . }}
{{ partial "pagination/pagination" . }}
</main>
{{ if $.Param "enableSidebar" }}

19
layouts/index.webmanifest Normal file
View File

@ -0,0 +1,19 @@
{{- $scr := .Scratch -}}
{
"name": "{{site.Title}}",
"short_name": "{{site.Title}}",
"lang": "{{site.Language.Lang}}",
"theme_color": "#FF6188",
"background_color": "#2D2A2E",
"icons": [{
"src": "{{ "logo-192.png" | relURL }}",
"sizes": "192x192",
"type": "image/png"
}, {
"src": "{{ "logo-512.png" | relURL }}",
"sizes": "512x512",
"type": "image/png"
}],
"display": "standalone",
"start_url": "{{ "/" | relLangURL }}?utm_source=web_app_manifest"
}

View File

@ -2,7 +2,7 @@
<div class="whoami">
<div class="whoami__image-wrapper">
<img data-src="{{ "/images/whoami/photo.png" | relURL }}" alt="{{ .Site.Params.myname }}" class="lazyload whoami__image">
<img data-src="{{ "/images/whoami/avatar.png" | relURL }}" alt="{{ .Site.Params.myname }}" class="lazyload whoami__image">
</div>
<div>
<div class="whoami__title h6">

View File

@ -6,8 +6,7 @@
</div>
<script>
$(document).ready(function() {
$('#gtt').hide();
$(document).ready(function() {
$('.gtt').click(function() {
$("html, body").animate({ scrollTop: 0 }, 250);
});

View File

@ -30,7 +30,8 @@
{{ with $.Site.Copyright }}{{ replace . "{year}" now.Year | markdownify}}{{ end }}
</p>
{{ end }}
<p class="caption">Powered by <a href="https://gohugo.io/">Hugo</a> and the <a href="https://github.com/zzossig/hugo-theme-zzo">Zzo theme</a></p>
<p class="caption">Powered by <a href="https://gohugo.io/" rel="noreferrer">Hugo</a> and the <a href="https://github.com/zzossig/hugo-theme-zzo" rel="noreferrer">Zzo theme</a></p>
</div>
{{ end }}
{{ partial "footer/go-to-top" . }}
</footer>

View File

@ -2,10 +2,12 @@
{{ $grid := .Site.Data.grid }}
{{- $scr.Set "grid_max_width" $grid.grid_max_width -}}
{{- $scr.Set "grid_max_unit" $grid.grid_max_unit -}}
{{- $scr.Set "grid_main_main_width" $grid.grid_main_main_width -}}
{{- $scr.Set "grid_main_main_unit" $grid.grid_main_main_unit -}}
{{- $scr.Set "grid_main_side_width" $grid.grid_main_side_width -}}
{{- $scr.Set "grid_main_side_unit" $grid.grid_main_side_unit -}}
{{- $scr.Set "grid_column_gap_width" $grid.grid_column_gap_width -}}
{{- $scr.Set "grid_column_gap_unit" $grid.grid_column_gap_unit -}}
{{- $scr.Set "grid_navbar_height" $grid.grid_navbar_height -}}
{{- $scr.Set "grid_column_gap" $grid.grid_column_gap -}}
{{- $scr.Set "grid_row_gap" $grid.grid_row_gap -}}

View File

@ -100,4 +100,5 @@
{{- $scr.Set "subs_button_background_color" $skin.subs_button_background_color -}}
{{- $scr.Set "subs_button_hover_background_color" $skin.subs_button_hover_background_color -}}
{{- $scr.Set "gallery_mask_color" $skin.gallery_mask_color -}}
{{- $scr.Set "gallery_mask_background_color" $skin.gallery_mask_background_color -}}
{{- $scr.Set "gallery_mask_background_color" $skin.gallery_mask_background_color -}}
{{- $scr.Set "avatar_background_color" $skin.avatar_background_color -}}

View File

@ -22,5 +22,5 @@
<link rel="icon" type="image/png" sizes="32x32" href="{{ "favicon-32x32.png" | relURL }}">
<link rel="icon" type="image/png" sizes="16x16" href="{{ "favicon-16x16.png" | relURL }}">
<link rel="mask-icon" href="{{ "safari-pinned-tab.svg" | relURL }}" color="{{ $.Param "safaripinnedcolor" | default "#000000" }}">
<link rel="manifest" href="{{ "site.webmanifest" | relURL }}">
<link rel="manifest" href="{{ "index.webmanifest" | relLangURL }}">
{{ end -}}

View File

@ -9,4 +9,17 @@
{{ end }}
</div>
<div class="swiper-pagination"></div>
</div>
</div>
{{ $js := .Site.Data.lib.js }}
{{ $css := .Site.Data.lib.css }}
{{ printf "<link rel=\"stylesheet\" href=\"%s\" integrity=\"%s\" crossorigin=\"anonymous\">" $css.swiper.url $css.swiper.sri | safeHTML }}
{{ printf "<script src=\"%s\" integrity=\"%s\" crossorigin=\"anonymous\" title=\"swiper\"></script>" $js.swiper.url $js.swiper.sri | safeHTML }}
<script>
{{ $swiper:= .Site.Data.swiper }}
var options = JSON.parse({{ $swiper | jsonify }});
var mySwiper = new Swiper('.swiper-container', options);
</script>

View File

@ -9,15 +9,4 @@
{{ else }}
{{ end }}
</header>
<link rel="stylesheet" href="https://unpkg.com/swiper/css/swiper.min.css">
<script src="https://unpkg.com/swiper/js/swiper.min.js"></script>
<script>
{{ $swiper := .Site.Data.swiper }}
var options = JSON.parse({{ $swiper | jsonify }});
var mySwiper = new Swiper('.swiper-container', options);
</script>
{{ end }}

View File

@ -1,21 +1,13 @@
<div class="features-intro">
<div class="features-intro__logo">
<img src="{{ "/images/swiper/logo.png" | relURL }}" alt="Home" class="features-intro__logo-img">
</div>
<div class="features-intro__titles">
<div class="title">
Zzo
</div>
<div class="subtitle">
Blog theme for Hugo
</div>
<div class="features-intro__links">
<a href="https://github.com/zzossig/hugo-theme-zzo">Download</a>
<a href="https://themes.gohugo.io/theme/hugo-theme-zzo/en">Demo</a>
<a href="https://github.com/zzossig/hugo-theme-zzo">Homepage</a>
</div>
<div class="features-intro__title h3">
Zzo
</div>
<div class="features-intro__links">
<a href="https://github.com/zzossig/hugo-theme-zzo" rel="noreferrer">Download</a>
<a href="https://themes.gohugo.io/theme/hugo-theme-zzo/en" rel="noreferrer">Demo</a>
<a href="https://github.com/zzossig/hugo-theme-zzo" rel="noreferrer">Homepage</a>
</div>
<div class="features-intro__release-info">
MIT Licensed, v1.0.0 | <a href="https://github.com/zzossig/hugo-theme-zzo/blob/master/CHANGELOG.md">Changelog</a>
MIT Licensed, v1.0.0, Blog theme powered by Hugo
</div>
</div>

View File

@ -19,25 +19,19 @@
Responsive
</li>
<li>
Highly Customizable
Customizable
</li>
<li>
Code Highlighting
</li>
<li>
Swiper support
Diagram
</li>
<li>
Mermaid support
Math
</li>
<li>
Flowchart.js support
</li>
<li>
Katex support
</li>
<li>
Comment(Disqus, Commento)
Comment
</li>
</ul>
</div>

View File

@ -1,8 +1,8 @@
<div class="features-text">
<div class="features-text__item h2">
<div class="features-text__item h5">
Start Using It Now
</div>
<div class="features-text__item h6">
<div class="features-text__item p2">
Zzo theme is completely free and open-source
</div>
</div>

View File

@ -0,0 +1,31 @@
{{ $pag := $.Paginator }}
{{ $window := $.Site.Params.paginateWindow | default 1 }}
{{ if gt $pag.TotalPages 1 }}
{{ $total := $pag.TotalPages }}
{{ $size := add 5 (add $window $window) }}
{{ $cur := $pag.PageNumber }}
{{ if gt $total $size }}
{{ if lt $cur (sub $size (add $window 1)) }}
{{ $.Scratch.Set "show" (seq 1 (sub $size 2)) }}
{{ else if lt (sub $total $cur) (sub $size (add $window 2)) }}
{{ $.Scratch.Set "show" (seq (add (sub $total $size) 3) $total) }}
{{ else }}
{{ $.Scratch.Set "show" (seq (sub $cur $window) (add $cur $window)) }}
{{ end }}
{{ $.Scratch.Add "show" 1 }}
{{ $.Scratch.Add "show" $total }}
{{ else }}
{{ $.Scratch.Set "show" (seq 1 $total) }}
{{ end }}
<ul class="pagination">
{{ range $pag.Pagers }}
{{ $cur := .PageNumber }}
{{ if in ($.Scratch.Get "show") $cur }}
<li
{{ if eq . $pag }}class="active"{{ end }}><a href="{{ .URL }}">{{ .PageNumber }}</a></li>
{{ else if in (slice 2 (sub $total 1)) $cur }}
<li class="disabled"><a name="">&hellip;</a></li>
{{ end }}
{{ end }}
</ul>
{{ end }}

View File

@ -2,10 +2,7 @@
<div class="sidebar">
{{ partial "sidebar/site-search" . }}
{{ if $.Param "enableBio" }}
{{ partial "sidebar/site-bio" . }}
{{ end }}
{{ partial "sidebar/site-bio" . }}
{{ range (and (where .Site.Sections "Type" "!=" "about") (where .Site.Sections "Type" "!=" "archive")) }}
<section class="sidebar-home">
@ -22,9 +19,13 @@
{{ end }}
</div>
<hr class="fade-1 sidebar-hr" />
<div class="taxo-root">
{{ partial "taxonomy/taxonomy-tags" . }}
{{ partial "taxonomy/taxonomy-categories" . }}
{{ partial "taxonomy/taxonomy-series" . }}
</div>
<hr class="fade-1 sidebar-hr" />
{{ partial "sidebar/site-subs" . }}
{{ end }}

View File

@ -10,7 +10,7 @@
<section class="sidebar-list">
<a href="{{ .RelPermalink }}" class="sidebar-list__title p1 {{ if eq $currentSection .Section }}active{{ end }}">{{ .Title }}</a>
<ul class="sidebar-list__ul">
{{ range .Pages }}
{{ range first .Site.Params.itemsPerCategory .Pages }}
<li><a href="{{ .RelPermalink }}" class="sidebar-list__a p2 {{ if eq $currentID .File.UniqueID }}active{{ end }}">{{ .Title }}</a>
</li>
{{ end }}
@ -20,8 +20,10 @@
{{ end }}
</div>
<div class="taxo-root">
{{ partial "taxonomy/taxonomy-tags" . }}
{{ partial "taxonomy/taxonomy-categories" . }}
{{ partial "taxonomy/taxonomy-series" . }}
</div>
{{ end }}

View File

@ -11,7 +11,7 @@
</label>
{{ end }}
</div>
<div class="toc">
<div class="toc">
<ul id="toc"></ul>
</div>
</div>

View File

@ -1,23 +1,72 @@
{{ if $.Param "enableBio" }}
<div class="bio">
<div class="bio__photo-wrapper">
<img src="{{ "/images/whoami/photo.png" | relURL }}"
alt="{{ if .Site.Params.myname }}{{ .Site.Params.myname }}{{ end }}" class="bio__photo" />
{{ $src := "" }}
{{ if site.Params.useGravatar }}
{{ $src = printf "https://s.gravatar.com/avatar/%s?s=200" (md5 .Site.Params.email) }}
<img src="{{ $src }}" alt="{{ if .Site.Params.myname }}{{ .Site.Params.myname }}{{ else }}Avatar{{ end }}" class="bio__photo"/>
{{ else }}
{{ if (fileExists "static/images/whoami/avatar.png") }}
<img src="{{ "images/whoami/avatar.png" | relURL }}" alt="{{ if .Site.Params.myname }}{{ .Site.Params.myname }}{{ else }}Avatar{{ end }}" class="bio__photo"/>
{{ else if (fileExists "static/images/whoami/avatar.jpg") }}
<img src="{{ "images/whoami/avatar.jpg" | relURL }}" alt="{{ if .Site.Params.myname }}{{ .Site.Params.myname }}{{ else }}Avatar{{ end }}" class="bio__photo"/>
{{ else }}
<img src="{{ "images/whoami/avatar.jpg" | relURL }}" alt="{{ if .Site.Params.myname }}{{ .Site.Params.myname }}{{ else }}Avatar{{ end }}" class="bio__photo"/>
{{ end }}
{{ end }}
</div>
<div class="bio__name h6">
<div class="bio__name">
{{ .Site.Params.myname }}
</div>
<div class="bio__desc p2">
<div class="bio__desc">
{{ .Site.Params.whoami }}
</div>
{{ if .Site.Params.organization }}
<div class="bio__info">
<div class="bio__info--icon">
{{ partial "svgs/etc/people.svg" (dict "width" 20 "height" 20) }}
</div>
{{ .Site.Params.organization }}
</div>
{{ end }}
{{ if .Site.Params.organization }}
<div class="bio__info">
<div class="bio__info--icon">
{{ partial "svgs/etc/location.svg" (dict "width" 20 "height" 20) }}
</div>
{{ .Site.Params.location }}
</div>
{{ end }}
{{ if .Site.Params.email }}
<div class="bio__info">
<div class="bio__info--icon">
{{ partial "svgs/social/email.svg" (dict "width" 20 "height" 20) }}
</div>
<a href="mailto:{{ .Site.Params.email }}">{{ .Site.Params.email }}</a>
</div>
{{ end }}
{{ if .Site.Params.link }}
<div class="bio__info">
<div class="bio__info--icon">
{{ partial "svgs/etc/link.svg" (dict "width" 20 "height" 20) }}
</div>
<a href="{{ .Site.Params.link }}" target="_blank" rel="noreferrer">{{ .Site.Params.link }}</a>
</div>
{{ end }}
<div class="bio__social">
<div class="social">
{{ range $name, $path := $.Param "socialOptions" }}
{{ if $path }}
{{ range $name, $path := $.Param "socialOptions" }}
{{ if (and $path (ne $name "email")) }}
<a href="{{ $path | safeURL }}" title="{{ $name }}" aria-label="{{ $name }}">
{{ partial (print "svgs/social/" $name ".svg") (dict "width" 25 "height" 25) }}
</a>
{{ end }}
{{ end }}
</div>
{{ end }}
</div>
</div>
</div>
<hr class="fade-1 sidebar-hr"/>
{{ end }}

View File

@ -1,4 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="{{ .width }}" height="{{ .height }}" fill="#000000">
<path d="M 5.5625 0 C 4.136719 0 2.707031 0.542969 1.625 1.625 C -0.539063 3.789063 -0.539063 7.335938 1.625 9.5 L 5.28125 13.15625 C 5.667969 13.554688 6.304688 13.558594 6.703125 13.171875 C 7.101563 12.785156 7.105469 12.148438 6.71875 11.75 L 3.03125 8.0625 C 1.632813 6.664063 1.632813 4.429688 3.03125 3.03125 C 4.429688 1.632813 6.664063 1.632813 8.0625 3.03125 L 12.96875 7.9375 C 14.367188 9.335938 14.367188 11.570313 12.96875 12.96875 C 12.804688 13.132813 12.621094 13.25 12.4375 13.375 C 11.980469 13.6875 11.859375 14.308594 12.171875 14.765625 C 12.484375 15.222656 13.105469 15.34375 13.5625 15.03125 C 13.847656 14.835938 14.125 14.625 14.375 14.375 C 16.539063 12.210938 16.539063 8.664063 14.375 6.5 L 9.5 1.625 C 8.417969 0.542969 6.988281 0 5.5625 0 Z M 10.78125 8.875 C 10.738281 8.882813 10.695313 8.894531 10.65625 8.90625 C 10.507813 8.9375 10.371094 9 10.25 9.09375 C 10.039063 9.253906 9.820313 9.429688 9.625 9.625 C 7.460938 11.789063 7.460938 15.335938 9.625 17.5 L 14.5 22.375 C 16.664063 24.539063 20.210938 24.539063 22.375 22.375 C 24.539063 20.210938 24.539063 16.664063 22.375 14.5 L 18.71875 10.875 C 18.476563 10.578125 18.089844 10.441406 17.714844 10.527344 C 17.34375 10.613281 17.050781 10.90625 16.964844 11.277344 C 16.878906 11.652344 17.015625 12.039063 17.3125 12.28125 L 20.96875 15.9375 C 22.367188 17.335938 22.367188 19.570313 20.96875 20.96875 C 19.570313 22.367188 17.335938 22.367188 15.9375 20.96875 L 11.03125 16.0625 C 9.632813 14.664063 9.632813 12.429688 11.03125 11.03125 C 11.152344 10.90625 11.300781 10.820313 11.4375 10.71875 C 11.839844 10.472656 12.015625 9.976563 11.855469 9.53125 C 11.699219 9.085938 11.25 8.8125 10.78125 8.875 Z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="{{ .width }}" height="{{ .height }}" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path fill="currentColor" d="M17 7h-3c-.55 0-1 .45-1 1s.45 1 1 1h3c1.65 0 3 1.35 3 3s-1.35 3-3 3h-3c-.55 0-1 .45-1 1s.45 1 1 1h3c2.76 0 5-2.24 5-5s-2.24-5-5-5zm-9 5c0 .55.45 1 1 1h6c.55 0 1-.45 1-1s-.45-1-1-1H9c-.55 0-1 .45-1 1zm2 3H7c-1.65 0-3-1.35-3-3s1.35-3 3-3h3c.55 0 1-.45 1-1s-.45-1-1-1H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h3c.55 0 1-.45 1-1s-.45-1-1-1z"/></svg>

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 507 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="{{ .width }}" height="{{ .height }}" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path fill="currentColor" d="M12 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm8.94 3c-.46-4.17-3.77-7.48-7.94-7.94V2c0-.55-.45-1-1-1s-1 .45-1 1v1.06C6.83 3.52 3.52 6.83 3.06 11H2c-.55 0-1 .45-1 1s.45 1 1 1h1.06c.46 4.17 3.77 7.48 7.94 7.94V22c0 .55.45 1 1 1s1-.45 1-1v-1.06c4.17-.46 7.48-3.77 7.94-7.94H22c.55 0 1-.45 1-1s-.45-1-1-1h-1.06zM12 19c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z"/></svg>

After

Width:  |  Height:  |  Size: 560 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="{{ .width }}" height="{{ .height }}" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path fill="currentColor" d="M16 11c1.66 0 2.99-1.34 2.99-3S17.66 5 16 5s-3 1.34-3 3 1.34 3 3 3zm-8 0c1.66 0 2.99-1.34 2.99-3S9.66 5 8 5 5 6.34 5 8s1.34 3 3 3zm0 2c-2.33 0-7 1.17-7 3.5V18c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-1.5c0-2.33-4.67-3.5-7-3.5zm8 0c-.29 0-.62.02-.97.05.02.01.03.03.04.04 1.14.83 1.93 1.94 1.93 3.41V18c0 .35-.07.69-.18 1H22c.55 0 1-.45 1-1v-1.5c0-2.33-4.67-3.5-7-3.5z"/></svg>

After

Width:  |  Height:  |  Size: 541 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

BIN
static/logo-192.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

BIN
static/logo-512.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -1,18 +0,0 @@
#
# robots.txt
#
# This file is to prevent the crawling and indexing of certain parts
# of your site by web crawlers and spiders run by sites like Yahoo!
# and Google. By telling these "robots" where not to go on your site,
# you save bandwidth and server resources.
#
# This file will be ignored unless it is at the root of your host:
# Used: http://example.com/robots.txt
# Ignored: http://example.com/site/robots.txt
#
# For more information about the robots.txt standard, see:
# http://www.robotstxt.org/robotstxt.html
User-agent: *
Crawl-delay: 10
Disallow: