Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
75f5c209e1 | ||
|
|
0bcfb160f1 | ||
|
|
3a003eadca | ||
|
|
117dd4b81e | ||
|
|
b2a1afd744 | ||
|
|
d292727821 | ||
|
|
93146c9dc3 | ||
|
|
b540350d76 | ||
|
|
c74cc3e4b3 | ||
|
|
e20d401007 | ||
|
|
4a12e6fc31 | ||
|
|
69e41b1c0d | ||
|
|
3496001c26 | ||
|
|
c597c208a8 | ||
|
|
bad33e19ae | ||
|
|
8f0d420d24 | ||
|
|
cf6502c311 | ||
|
|
9a64b7a6f1 | ||
|
|
96ff911c6e | ||
|
|
845834baa6 | ||
|
|
841508f491 | ||
|
|
1e28a661d9 | ||
|
|
8c4ad17a09 | ||
|
|
4267346a4a | ||
|
|
779982eb95 | ||
|
|
a750e02629 | ||
|
|
f26a9fa070 | ||
|
|
b06910fc5d | ||
|
|
c12de4db04 | ||
|
|
7379bbe412 | ||
|
|
c600f87213 | ||
|
|
45e7e07a86 | ||
|
|
294f445e0a | ||
|
|
2451b194dc | ||
|
|
822eba9513 |
@@ -0,0 +1,38 @@
|
|||||||
|
---
|
||||||
|
name: Bug report
|
||||||
|
about: Create a report to help us improve
|
||||||
|
title: ''
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Describe the bug**
|
||||||
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
|
**To Reproduce**
|
||||||
|
Steps to reproduce the behavior:
|
||||||
|
1. Go to '...'
|
||||||
|
2. Click on '....'
|
||||||
|
3. Scroll down to '....'
|
||||||
|
4. See error
|
||||||
|
|
||||||
|
**Expected behavior**
|
||||||
|
A clear and concise description of what you expected to happen.
|
||||||
|
|
||||||
|
**Screenshots**
|
||||||
|
If applicable, add screenshots to help explain your problem.
|
||||||
|
|
||||||
|
**Desktop (please complete the following information):**
|
||||||
|
- OS: [e.g. iOS]
|
||||||
|
- Browser [e.g. chrome, safari]
|
||||||
|
- Version [e.g. 22]
|
||||||
|
|
||||||
|
**Smartphone (please complete the following information):**
|
||||||
|
- Device: [e.g. iPhone6]
|
||||||
|
- OS: [e.g. iOS8.1]
|
||||||
|
- Browser [e.g. stock browser, safari]
|
||||||
|
- Version [e.g. 22]
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context about the problem here.
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
name: Feature request
|
||||||
|
about: Suggest an idea for this project
|
||||||
|
title: ''
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Is your feature request related to a problem? Please describe.**
|
||||||
|
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||||
|
|
||||||
|
**Describe the solution you'd like**
|
||||||
|
A clear and concise description of what you want to happen.
|
||||||
|
|
||||||
|
**Describe alternatives you've considered**
|
||||||
|
A clear and concise description of any alternative solutions or features you've considered.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context or screenshots about the feature request here.
|
||||||
@@ -33,7 +33,9 @@ The only JavaScript library being used is [node-vibrant](https://github.com/Vibr
|
|||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
This theme uses SCSS and TypeScript. For that reason, it's necessary to use **Hugo Extended version ≥ 0.74.0**.
|
This theme uses SCSS and TypeScript. For that reason, it's necessary to use **Hugo ≥ 0.74.0**.
|
||||||
|
|
||||||
|
**Note**: You'll need Hugo Extended version to edit SCSS files
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,390 @@
|
|||||||
|
/*
|
||||||
|
* Style: monokai
|
||||||
|
* https://xyproto.github.io/splash/docs/monokai.html
|
||||||
|
*/
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--pre-text-color: #f8f8f2;
|
||||||
|
--pre-background-color: #272822;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Background */
|
||||||
|
.chroma {
|
||||||
|
color: #f8f8f2;
|
||||||
|
background-color: #272822
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Other */
|
||||||
|
.chroma .x {}
|
||||||
|
|
||||||
|
/* Error */
|
||||||
|
.chroma .err {
|
||||||
|
color: #960050;
|
||||||
|
background-color: #1e0010
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LineTableTD */
|
||||||
|
.chroma .lntd {
|
||||||
|
vertical-align: top;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LineTable */
|
||||||
|
.chroma .lntable {
|
||||||
|
border-spacing: 0;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
border: 0;
|
||||||
|
width: auto;
|
||||||
|
overflow: auto;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LineHighlight */
|
||||||
|
.chroma .hl {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
background-color: #ffffcc
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LineNumbersTable */
|
||||||
|
.chroma .lnt {
|
||||||
|
margin-right: 0.4em;
|
||||||
|
padding: 0 0.4em 0 0.4em;
|
||||||
|
color: #7f7f7f
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LineNumbers */
|
||||||
|
.chroma .ln {
|
||||||
|
margin-right: 0.4em;
|
||||||
|
padding: 0 0.4em 0 0.4em;
|
||||||
|
color: #7f7f7f
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Keyword */
|
||||||
|
.chroma .k {
|
||||||
|
color: #66d9ef
|
||||||
|
}
|
||||||
|
|
||||||
|
/* KeywordConstant */
|
||||||
|
.chroma .kc {
|
||||||
|
color: #66d9ef
|
||||||
|
}
|
||||||
|
|
||||||
|
/* KeywordDeclaration */
|
||||||
|
.chroma .kd {
|
||||||
|
color: #66d9ef
|
||||||
|
}
|
||||||
|
|
||||||
|
/* KeywordNamespace */
|
||||||
|
.chroma .kn {
|
||||||
|
color: #f92672
|
||||||
|
}
|
||||||
|
|
||||||
|
/* KeywordPseudo */
|
||||||
|
.chroma .kp {
|
||||||
|
color: #66d9ef
|
||||||
|
}
|
||||||
|
|
||||||
|
/* KeywordReserved */
|
||||||
|
.chroma .kr {
|
||||||
|
color: #66d9ef
|
||||||
|
}
|
||||||
|
|
||||||
|
/* KeywordType */
|
||||||
|
.chroma .kt {
|
||||||
|
color: #66d9ef
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Name */
|
||||||
|
.chroma .n {}
|
||||||
|
|
||||||
|
/* NameAttribute */
|
||||||
|
.chroma .na {
|
||||||
|
color: #a6e22e
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NameBuiltin */
|
||||||
|
.chroma .nb {}
|
||||||
|
|
||||||
|
/* NameBuiltinPseudo */
|
||||||
|
.chroma .bp {}
|
||||||
|
|
||||||
|
/* NameClass */
|
||||||
|
.chroma .nc {
|
||||||
|
color: #a6e22e
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NameConstant */
|
||||||
|
.chroma .no {
|
||||||
|
color: #66d9ef
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NameDecorator */
|
||||||
|
.chroma .nd {
|
||||||
|
color: #a6e22e
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NameEntity */
|
||||||
|
.chroma .ni {}
|
||||||
|
|
||||||
|
/* NameException */
|
||||||
|
.chroma .ne {
|
||||||
|
color: #a6e22e
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NameFunction */
|
||||||
|
.chroma .nf {
|
||||||
|
color: #a6e22e
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NameFunctionMagic */
|
||||||
|
.chroma .fm {}
|
||||||
|
|
||||||
|
/* NameLabel */
|
||||||
|
.chroma .nl {}
|
||||||
|
|
||||||
|
/* NameNamespace */
|
||||||
|
.chroma .nn {}
|
||||||
|
|
||||||
|
/* NameOther */
|
||||||
|
.chroma .nx {
|
||||||
|
color: #a6e22e
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NameProperty */
|
||||||
|
.chroma .py {}
|
||||||
|
|
||||||
|
/* NameTag */
|
||||||
|
.chroma .nt {
|
||||||
|
color: #f92672
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NameVariable */
|
||||||
|
.chroma .nv {}
|
||||||
|
|
||||||
|
/* NameVariableClass */
|
||||||
|
.chroma .vc {}
|
||||||
|
|
||||||
|
/* NameVariableGlobal */
|
||||||
|
.chroma .vg {}
|
||||||
|
|
||||||
|
/* NameVariableInstance */
|
||||||
|
.chroma .vi {}
|
||||||
|
|
||||||
|
/* NameVariableMagic */
|
||||||
|
.chroma .vm {}
|
||||||
|
|
||||||
|
/* Literal */
|
||||||
|
.chroma .l {
|
||||||
|
color: #ae81ff
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralDate */
|
||||||
|
.chroma .ld {
|
||||||
|
color: #e6db74
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralString */
|
||||||
|
.chroma .s {
|
||||||
|
color: #e6db74
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralStringAffix */
|
||||||
|
.chroma .sa {
|
||||||
|
color: #e6db74
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralStringBacktick */
|
||||||
|
.chroma .sb {
|
||||||
|
color: #e6db74
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralStringChar */
|
||||||
|
.chroma .sc {
|
||||||
|
color: #e6db74
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralStringDelimiter */
|
||||||
|
.chroma .dl {
|
||||||
|
color: #e6db74
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralStringDoc */
|
||||||
|
.chroma .sd {
|
||||||
|
color: #e6db74
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralStringDouble */
|
||||||
|
.chroma .s2 {
|
||||||
|
color: #e6db74
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralStringEscape */
|
||||||
|
.chroma .se {
|
||||||
|
color: #ae81ff
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralStringHeredoc */
|
||||||
|
.chroma .sh {
|
||||||
|
color: #e6db74
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralStringInterpol */
|
||||||
|
.chroma .si {
|
||||||
|
color: #e6db74
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralStringOther */
|
||||||
|
.chroma .sx {
|
||||||
|
color: #e6db74
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralStringRegex */
|
||||||
|
.chroma .sr {
|
||||||
|
color: #e6db74
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralStringSingle */
|
||||||
|
.chroma .s1 {
|
||||||
|
color: #e6db74
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralStringSymbol */
|
||||||
|
.chroma .ss {
|
||||||
|
color: #e6db74
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralNumber */
|
||||||
|
.chroma .m {
|
||||||
|
color: #ae81ff
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralNumberBin */
|
||||||
|
.chroma .mb {
|
||||||
|
color: #ae81ff
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralNumberFloat */
|
||||||
|
.chroma .mf {
|
||||||
|
color: #ae81ff
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralNumberHex */
|
||||||
|
.chroma .mh {
|
||||||
|
color: #ae81ff
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralNumberInteger */
|
||||||
|
.chroma .mi {
|
||||||
|
color: #ae81ff
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralNumberIntegerLong */
|
||||||
|
.chroma .il {
|
||||||
|
color: #ae81ff
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralNumberOct */
|
||||||
|
.chroma .mo {
|
||||||
|
color: #ae81ff
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Operator */
|
||||||
|
.chroma .o {
|
||||||
|
color: #f92672
|
||||||
|
}
|
||||||
|
|
||||||
|
/* OperatorWord */
|
||||||
|
.chroma .ow {
|
||||||
|
color: #f92672
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Punctuation */
|
||||||
|
.chroma .p {}
|
||||||
|
|
||||||
|
/* Comment */
|
||||||
|
.chroma .c {
|
||||||
|
color: #75715e
|
||||||
|
}
|
||||||
|
|
||||||
|
/* CommentHashbang */
|
||||||
|
.chroma .ch {
|
||||||
|
color: #75715e
|
||||||
|
}
|
||||||
|
|
||||||
|
/* CommentMultiline */
|
||||||
|
.chroma .cm {
|
||||||
|
color: #75715e
|
||||||
|
}
|
||||||
|
|
||||||
|
/* CommentSingle */
|
||||||
|
.chroma .c1 {
|
||||||
|
color: #75715e
|
||||||
|
}
|
||||||
|
|
||||||
|
/* CommentSpecial */
|
||||||
|
.chroma .cs {
|
||||||
|
color: #75715e
|
||||||
|
}
|
||||||
|
|
||||||
|
/* CommentPreproc */
|
||||||
|
.chroma .cp {
|
||||||
|
color: #75715e
|
||||||
|
}
|
||||||
|
|
||||||
|
/* CommentPreprocFile */
|
||||||
|
.chroma .cpf {
|
||||||
|
color: #75715e
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Generic */
|
||||||
|
.chroma .g {}
|
||||||
|
|
||||||
|
/* GenericDeleted */
|
||||||
|
.chroma .gd {
|
||||||
|
color: #f92672
|
||||||
|
}
|
||||||
|
|
||||||
|
/* GenericEmph */
|
||||||
|
.chroma .ge {
|
||||||
|
font-style: italic
|
||||||
|
}
|
||||||
|
|
||||||
|
/* GenericError */
|
||||||
|
.chroma .gr {}
|
||||||
|
|
||||||
|
/* GenericHeading */
|
||||||
|
.chroma .gh {}
|
||||||
|
|
||||||
|
/* GenericInserted */
|
||||||
|
.chroma .gi {
|
||||||
|
color: #a6e22e
|
||||||
|
}
|
||||||
|
|
||||||
|
/* GenericOutput */
|
||||||
|
.chroma .go {}
|
||||||
|
|
||||||
|
/* GenericPrompt */
|
||||||
|
.chroma .gp {}
|
||||||
|
|
||||||
|
/* GenericStrong */
|
||||||
|
.chroma .gs {
|
||||||
|
font-weight: bold
|
||||||
|
}
|
||||||
|
|
||||||
|
/* GenericSubheading */
|
||||||
|
.chroma .gu {
|
||||||
|
color: #75715e
|
||||||
|
}
|
||||||
|
|
||||||
|
/* GenericTraceback */
|
||||||
|
.chroma .gt {}
|
||||||
|
|
||||||
|
/* GenericUnderline */
|
||||||
|
.chroma .gl {}
|
||||||
|
|
||||||
|
/* TextWhitespace */
|
||||||
|
.chroma .w {}
|
||||||
@@ -0,0 +1,411 @@
|
|||||||
|
/*
|
||||||
|
* Style: monokailight
|
||||||
|
* https://xyproto.github.io/splash/docs/monokailight.html
|
||||||
|
*/
|
||||||
|
:root {
|
||||||
|
--pre-text-color: #272822;
|
||||||
|
--pre-background-color: #fafafa;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Background */
|
||||||
|
.chroma {
|
||||||
|
color: #272822;
|
||||||
|
background-color: #fafafa;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Other */
|
||||||
|
.chroma .x {}
|
||||||
|
|
||||||
|
/* Error */
|
||||||
|
.chroma .err {
|
||||||
|
color: #960050;
|
||||||
|
background-color: #1e0010
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LineTableTD */
|
||||||
|
.chroma .lntd {
|
||||||
|
vertical-align: top;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LineTable */
|
||||||
|
.chroma .lntable {
|
||||||
|
border-spacing: 0;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
border: 0;
|
||||||
|
width: auto;
|
||||||
|
overflow: auto;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LineHighlight */
|
||||||
|
.chroma .hl {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
background-color: #ffffcc
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LineNumbersTable */
|
||||||
|
.chroma .lnt {
|
||||||
|
margin-right: 0.4em;
|
||||||
|
padding: 0 0.4em 0 0.4em;
|
||||||
|
color: #7f7f7f
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LineNumbers */
|
||||||
|
.chroma .ln {
|
||||||
|
margin-right: 0.4em;
|
||||||
|
padding: 0 0.4em 0 0.4em;
|
||||||
|
color: #7f7f7f
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Keyword */
|
||||||
|
.chroma .k {
|
||||||
|
color: #00a8c8
|
||||||
|
}
|
||||||
|
|
||||||
|
/* KeywordConstant */
|
||||||
|
.chroma .kc {
|
||||||
|
color: #00a8c8
|
||||||
|
}
|
||||||
|
|
||||||
|
/* KeywordDeclaration */
|
||||||
|
.chroma .kd {
|
||||||
|
color: #00a8c8
|
||||||
|
}
|
||||||
|
|
||||||
|
/* KeywordNamespace */
|
||||||
|
.chroma .kn {
|
||||||
|
color: #f92672
|
||||||
|
}
|
||||||
|
|
||||||
|
/* KeywordPseudo */
|
||||||
|
.chroma .kp {
|
||||||
|
color: #00a8c8
|
||||||
|
}
|
||||||
|
|
||||||
|
/* KeywordReserved */
|
||||||
|
.chroma .kr {
|
||||||
|
color: #00a8c8
|
||||||
|
}
|
||||||
|
|
||||||
|
/* KeywordType */
|
||||||
|
.chroma .kt {
|
||||||
|
color: #00a8c8
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Name */
|
||||||
|
.chroma .n {
|
||||||
|
color: #111111
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NameAttribute */
|
||||||
|
.chroma .na {
|
||||||
|
color: #75af00
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NameBuiltin */
|
||||||
|
.chroma .nb {
|
||||||
|
color: #111111
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NameBuiltinPseudo */
|
||||||
|
.chroma .bp {
|
||||||
|
color: #111111
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NameClass */
|
||||||
|
.chroma .nc {
|
||||||
|
color: #75af00
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NameConstant */
|
||||||
|
.chroma .no {
|
||||||
|
color: #00a8c8
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NameDecorator */
|
||||||
|
.chroma .nd {
|
||||||
|
color: #75af00
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NameEntity */
|
||||||
|
.chroma .ni {
|
||||||
|
color: #111111
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NameException */
|
||||||
|
.chroma .ne {
|
||||||
|
color: #75af00
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NameFunction */
|
||||||
|
.chroma .nf {
|
||||||
|
color: #75af00
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NameFunctionMagic */
|
||||||
|
.chroma .fm {
|
||||||
|
color: #111111
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NameLabel */
|
||||||
|
.chroma .nl {
|
||||||
|
color: #111111
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NameNamespace */
|
||||||
|
.chroma .nn {
|
||||||
|
color: #111111
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NameOther */
|
||||||
|
.chroma .nx {
|
||||||
|
color: #75af00
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NameProperty */
|
||||||
|
.chroma .py {
|
||||||
|
color: #111111
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NameTag */
|
||||||
|
.chroma .nt {
|
||||||
|
color: #f92672
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NameVariable */
|
||||||
|
.chroma .nv {
|
||||||
|
color: #111111
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NameVariableClass */
|
||||||
|
.chroma .vc {
|
||||||
|
color: #111111
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NameVariableGlobal */
|
||||||
|
.chroma .vg {
|
||||||
|
color: #111111
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NameVariableInstance */
|
||||||
|
.chroma .vi {
|
||||||
|
color: #111111
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NameVariableMagic */
|
||||||
|
.chroma .vm {
|
||||||
|
color: #111111
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Literal */
|
||||||
|
.chroma .l {
|
||||||
|
color: #ae81ff
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralDate */
|
||||||
|
.chroma .ld {
|
||||||
|
color: #d88200
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralString */
|
||||||
|
.chroma .s {
|
||||||
|
color: #d88200
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralStringAffix */
|
||||||
|
.chroma .sa {
|
||||||
|
color: #d88200
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralStringBacktick */
|
||||||
|
.chroma .sb {
|
||||||
|
color: #d88200
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralStringChar */
|
||||||
|
.chroma .sc {
|
||||||
|
color: #d88200
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralStringDelimiter */
|
||||||
|
.chroma .dl {
|
||||||
|
color: #d88200
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralStringDoc */
|
||||||
|
.chroma .sd {
|
||||||
|
color: #d88200
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralStringDouble */
|
||||||
|
.chroma .s2 {
|
||||||
|
color: #d88200
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralStringEscape */
|
||||||
|
.chroma .se {
|
||||||
|
color: #8045ff
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralStringHeredoc */
|
||||||
|
.chroma .sh {
|
||||||
|
color: #d88200
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralStringInterpol */
|
||||||
|
.chroma .si {
|
||||||
|
color: #d88200
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralStringOther */
|
||||||
|
.chroma .sx {
|
||||||
|
color: #d88200
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralStringRegex */
|
||||||
|
.chroma .sr {
|
||||||
|
color: #d88200
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralStringSingle */
|
||||||
|
.chroma .s1 {
|
||||||
|
color: #d88200
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralStringSymbol */
|
||||||
|
.chroma .ss {
|
||||||
|
color: #d88200
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralNumber */
|
||||||
|
.chroma .m {
|
||||||
|
color: #ae81ff
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralNumberBin */
|
||||||
|
.chroma .mb {
|
||||||
|
color: #ae81ff
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralNumberFloat */
|
||||||
|
.chroma .mf {
|
||||||
|
color: #ae81ff
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralNumberHex */
|
||||||
|
.chroma .mh {
|
||||||
|
color: #ae81ff
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralNumberInteger */
|
||||||
|
.chroma .mi {
|
||||||
|
color: #ae81ff
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralNumberIntegerLong */
|
||||||
|
.chroma .il {
|
||||||
|
color: #ae81ff
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LiteralNumberOct */
|
||||||
|
.chroma .mo {
|
||||||
|
color: #ae81ff
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Operator */
|
||||||
|
.chroma .o {
|
||||||
|
color: #f92672
|
||||||
|
}
|
||||||
|
|
||||||
|
/* OperatorWord */
|
||||||
|
.chroma .ow {
|
||||||
|
color: #f92672
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Punctuation */
|
||||||
|
.chroma .p {
|
||||||
|
color: #111111
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Comment */
|
||||||
|
.chroma .c {
|
||||||
|
color: #75715e
|
||||||
|
}
|
||||||
|
|
||||||
|
/* CommentHashbang */
|
||||||
|
.chroma .ch {
|
||||||
|
color: #75715e
|
||||||
|
}
|
||||||
|
|
||||||
|
/* CommentMultiline */
|
||||||
|
.chroma .cm {
|
||||||
|
color: #75715e
|
||||||
|
}
|
||||||
|
|
||||||
|
/* CommentSingle */
|
||||||
|
.chroma .c1 {
|
||||||
|
color: #75715e
|
||||||
|
}
|
||||||
|
|
||||||
|
/* CommentSpecial */
|
||||||
|
.chroma .cs {
|
||||||
|
color: #75715e
|
||||||
|
}
|
||||||
|
|
||||||
|
/* CommentPreproc */
|
||||||
|
.chroma .cp {
|
||||||
|
color: #75715e
|
||||||
|
}
|
||||||
|
|
||||||
|
/* CommentPreprocFile */
|
||||||
|
.chroma .cpf {
|
||||||
|
color: #75715e
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Generic */
|
||||||
|
.chroma .g {}
|
||||||
|
|
||||||
|
/* GenericDeleted */
|
||||||
|
.chroma .gd {}
|
||||||
|
|
||||||
|
/* GenericEmph */
|
||||||
|
.chroma .ge {
|
||||||
|
font-style: italic
|
||||||
|
}
|
||||||
|
|
||||||
|
/* GenericError */
|
||||||
|
.chroma .gr {}
|
||||||
|
|
||||||
|
/* GenericHeading */
|
||||||
|
.chroma .gh {}
|
||||||
|
|
||||||
|
/* GenericInserted */
|
||||||
|
.chroma .gi {}
|
||||||
|
|
||||||
|
/* GenericOutput */
|
||||||
|
.chroma .go {}
|
||||||
|
|
||||||
|
/* GenericPrompt */
|
||||||
|
.chroma .gp {}
|
||||||
|
|
||||||
|
/* GenericStrong */
|
||||||
|
.chroma .gs {
|
||||||
|
font-weight: bold
|
||||||
|
}
|
||||||
|
|
||||||
|
/* GenericSubheading */
|
||||||
|
.chroma .gu {}
|
||||||
|
|
||||||
|
/* GenericTraceback */
|
||||||
|
.chroma .gt {}
|
||||||
|
|
||||||
|
/* GenericUnderline */
|
||||||
|
.chroma .gl {}
|
||||||
|
|
||||||
|
/* TextWhitespace */
|
||||||
|
.chroma .w {}
|
||||||
|
Before Width: | Height: | Size: 432 B After Width: | Height: | Size: 432 B |
|
Before Width: | Height: | Size: 373 B After Width: | Height: | Size: 373 B |
+3
-3
@@ -1,6 +1,6 @@
|
|||||||
.archive-group {
|
.archives-group {
|
||||||
margin-bottom: var(--section-separation);
|
margin-bottom: var(--section-separation);
|
||||||
.archive-date {
|
.archives-date {
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
font-size: 1.6rem;
|
font-size: 1.6rem;
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.template-archive {
|
.template-archives {
|
||||||
.category-list {
|
.category-list {
|
||||||
margin-bottom: var(--section-separation);
|
margin-bottom: var(--section-separation);
|
||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
@@ -122,6 +122,7 @@
|
|||||||
|
|
||||||
/* Menu style */
|
/* Menu style */
|
||||||
.menu {
|
.menu {
|
||||||
|
padding-left: 0;
|
||||||
list-style: none;
|
list-style: none;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|||||||
@@ -43,9 +43,9 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Archive widget */
|
/* Archives widget */
|
||||||
.widget.archive {
|
.widget.archives {
|
||||||
.archive-year {
|
.archives-year {
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
a {
|
a {
|
||||||
background-color: var(--card-background);
|
background-color: var(--card-background);
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
@import "partials/pagination.scss";
|
@import "partials/pagination.scss";
|
||||||
@import "partials/sidebar.scss";
|
@import "partials/sidebar.scss";
|
||||||
@import "partials/base.scss";
|
@import "partials/base.scss";
|
||||||
@import "partials/layout/archive.scss";
|
@import "partials/layout/archives.scss";
|
||||||
@import "partials/layout/article.scss";
|
@import "partials/layout/article.scss";
|
||||||
@import "partials/layout/taxonomy.scss";
|
@import "partials/layout/taxonomy.scss";
|
||||||
@import "partials/layout/404.scss";
|
@import "partials/layout/404.scss";
|
||||||
|
|||||||
+15
-11
@@ -1,4 +1,4 @@
|
|||||||
baseurl = "https://theme-stack.jimmycai.com/"
|
baseurl = "https://example.com"
|
||||||
languageCode = "en-us"
|
languageCode = "en-us"
|
||||||
theme = "hugo-theme-stack"
|
theme = "hugo-theme-stack"
|
||||||
paginate = 5
|
paginate = 5
|
||||||
@@ -29,11 +29,11 @@ DefaultContentLanguage = "en" # Theme i18n support
|
|||||||
# Only Disqus is available so far
|
# Only Disqus is available so far
|
||||||
provider = "disqus"
|
provider = "disqus"
|
||||||
[params.widgets]
|
[params.widgets]
|
||||||
enabled = ['archive', 'tag-cloud']
|
enabled = ['archives', 'tag-cloud']
|
||||||
[params.widgets.archive]
|
[params.widgets.archives]
|
||||||
limit = 5
|
limit = 5
|
||||||
### Archive page relative URL
|
### Archives page relative URL
|
||||||
path = "archive"
|
path = "archives"
|
||||||
[params.widgets.tagCloud]
|
[params.widgets.tagCloud]
|
||||||
limit = 10
|
limit = 10
|
||||||
[params.opengraph]
|
[params.opengraph]
|
||||||
@@ -64,15 +64,15 @@ DefaultContentLanguage = "en" # Theme i18n support
|
|||||||
[[menu.main]]
|
[[menu.main]]
|
||||||
identifier = "about-cn"
|
identifier = "about-cn"
|
||||||
name = "About"
|
name = "About"
|
||||||
url = "/about/"
|
url = "about"
|
||||||
weight = -90
|
weight = -90
|
||||||
pre = "user"
|
pre = "user"
|
||||||
[[menu.main]]
|
[[menu.main]]
|
||||||
identifier = "archive"
|
identifier = "archives"
|
||||||
name = "Archive"
|
name = "Archives"
|
||||||
url = "/archive/"
|
url = "archives"
|
||||||
weight = -70
|
weight = -70
|
||||||
pre = "archive"
|
pre = "archives"
|
||||||
|
|
||||||
[related]
|
[related]
|
||||||
includeNewer = true
|
includeNewer = true
|
||||||
@@ -85,4 +85,8 @@ DefaultContentLanguage = "en" # Theme i18n support
|
|||||||
|
|
||||||
[[related.indices]]
|
[[related.indices]]
|
||||||
name = "categories"
|
name = "categories"
|
||||||
weight = 200
|
weight = 200
|
||||||
|
|
||||||
|
[markup]
|
||||||
|
[markup.highlight]
|
||||||
|
noClasses = false
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
title: "Archive"
|
|
||||||
date: 2019-05-28
|
|
||||||
layout: "archive"
|
|
||||||
slug: "archive"
|
|
||||||
---
|
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
title: "Archives"
|
||||||
|
date: 2019-05-28
|
||||||
|
layout: "archives"
|
||||||
|
slug: "archives"
|
||||||
|
---
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
> Original Repo: https://github.com/cdeleeuwe/netlify-plugin-hugo-cache-resources
|
||||||
|
>
|
||||||
|
# Netlify Build Plugin: Persist Hugo resources Between Builds
|
||||||
|
|
||||||
|
Persist [Hugo](https://gohugo.io/) resources folder between Netlify builds for huge build speed improvements! ⚡️
|
||||||
|
|
||||||
|
This plugin caches the `resources` folder after build. If you are processing many images, this would improve build duration significantly.
|
||||||
|
|
||||||
|
Note: Restoring cache only comes from the production branch. So once cache is saved on the production branch, the next preview build would use the cache. For example, when pushing to the same preview build, the latest preview build will not get the cache from the previous preview build, but will get it from master.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
To install, add the following lines to your `netlify.toml` file:
|
||||||
|
|
||||||
|
```toml
|
||||||
|
[build]
|
||||||
|
publish = "public"
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
package = "netlify-plugin-hugo-cache-resources"
|
||||||
|
|
||||||
|
[plugins.inputs]
|
||||||
|
# If it should show more verbose logs (optional, default = true)
|
||||||
|
debug = true
|
||||||
|
```
|
||||||
|
|
||||||
|
Note: The `[[plugins]]` line is required for each plugin, even if you have other plugins in your `netlify.toml` file already.
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
const getResourcesDir = () => {
|
||||||
|
return 'exampleSite/resources';
|
||||||
|
}
|
||||||
|
|
||||||
|
const printList = (items) => {
|
||||||
|
console.log('---');
|
||||||
|
items.forEach((item, index) => {
|
||||||
|
console.log(`${index + 1}. ${item}`);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
|
||||||
|
async onPreBuild({ utils, inputs }) {
|
||||||
|
const path = getResourcesDir();
|
||||||
|
const success = await utils.cache.restore(path);
|
||||||
|
|
||||||
|
if (success) {
|
||||||
|
const cachedFiles = await utils.cache.list(path);
|
||||||
|
console.log(`Restored cached resources folder. Total files: ${cachedFiles.length}`);
|
||||||
|
if (inputs.debug) printList(cachedFiles);
|
||||||
|
} else {
|
||||||
|
console.log(`No cache found for resources folder`);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
async onPostBuild({ utils, inputs }) {
|
||||||
|
const path = getResourcesDir();
|
||||||
|
const success = await utils.cache.save(path);
|
||||||
|
|
||||||
|
if (success) {
|
||||||
|
const cachedFiles = await utils.cache.list(path);
|
||||||
|
console.log(`Saved resources folder to cache. Total files: ${cachedFiles.length}`);
|
||||||
|
if (inputs.debug) printList(cachedFiles);
|
||||||
|
} else {
|
||||||
|
console.log(`No resources folder cached`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
name: netlify-plugin-hugo-cache
|
||||||
|
inputs:
|
||||||
|
- name: debug
|
||||||
|
description: Show more verbose logs
|
||||||
|
default: true
|
||||||
+3
-3
@@ -7,10 +7,10 @@
|
|||||||
[lastUpdatedOn]
|
[lastUpdatedOn]
|
||||||
other ="Last updated on {{ .Count }}"
|
other ="Last updated on {{ .Count }}"
|
||||||
|
|
||||||
[widgetArchiveTitle]
|
[widgetArchivesTitle]
|
||||||
other = "Archive"
|
other = "Archives"
|
||||||
|
|
||||||
[widgetArchiveMore]
|
[widgetArchivesMore]
|
||||||
other = "More"
|
other = "More"
|
||||||
|
|
||||||
[widgetTagCloudTitle]
|
[widgetTagCloudTitle]
|
||||||
|
|||||||
+2
-2
@@ -7,10 +7,10 @@
|
|||||||
[lastUpdatedOn]
|
[lastUpdatedOn]
|
||||||
other ="最后更新于 {{ .Count }}"
|
other ="最后更新于 {{ .Count }}"
|
||||||
|
|
||||||
[widgetArchiveTitle]
|
[widgetArchivesTitle]
|
||||||
other = "归档"
|
other = "归档"
|
||||||
|
|
||||||
[widgetArchiveMore]
|
[widgetArchivesMore]
|
||||||
other = "更多"
|
other = "更多"
|
||||||
|
|
||||||
[widgetTagCloudTitle]
|
[widgetTagCloudTitle]
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 50 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
@@ -1,4 +1,4 @@
|
|||||||
{{ define "body-class" }}template-archive{{ end }}
|
{{ define "body-class" }}template-archives{{ end }}
|
||||||
{{ define "main" }}
|
{{ define "main" }}
|
||||||
{{ $categories := ($.Site.GetPage "taxonomyTerm" "categories").Pages }}
|
{{ $categories := ($.Site.GetPage "taxonomyTerm" "categories").Pages }}
|
||||||
{{ if $categories }}
|
{{ if $categories }}
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
<div class="category-list">
|
<div class="category-list">
|
||||||
<div class="article-list--tile">
|
<div class="article-list--tile">
|
||||||
{{ range $categories }}
|
{{ range $categories }}
|
||||||
{{ partial "article-list/tile" (dict "context" . "size" "250x150") }}
|
{{ partial "article-list/tile" (dict "context" . "size" "250x150" "Type" "taxonomy") }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -20,8 +20,8 @@
|
|||||||
|
|
||||||
{{ range $filtered.GroupByDate "2006" }}
|
{{ range $filtered.GroupByDate "2006" }}
|
||||||
{{ $id := lower (replace .Key " " "-") }}
|
{{ $id := lower (replace .Key " " "-") }}
|
||||||
<div class="archive-group" id="{{ $id }}">
|
<div class="archives-group" id="{{ $id }}">
|
||||||
<h3 class="archive-date"><a href="{{ $.Permalink }}#{{ $id }}">{{ .Key }}</a></h3>
|
<h3 class="archives-date"><a href="{{ $.Permalink }}#{{ $id }}">{{ .Key }}</a></h3>
|
||||||
<div class="article-list--compact">
|
<div class="article-list--compact">
|
||||||
{{ range .Pages }}
|
{{ range .Pages }}
|
||||||
{{ partial "article-list/compact" . }}
|
{{ partial "article-list/compact" . }}
|
||||||
@@ -9,8 +9,6 @@
|
|||||||
</main>
|
</main>
|
||||||
{{- block "right-sidebar" . -}}{{ end }}
|
{{- block "right-sidebar" . -}}{{ end }}
|
||||||
</div>
|
</div>
|
||||||
{{ partial "footer/script.html" . }}
|
{{ partial "footer/include.html" . }}
|
||||||
{{ partial "footer/style.html" . }}
|
|
||||||
{{ partial "footer/custom.html" . }}
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -1,21 +1,12 @@
|
|||||||
{{ define "container-class" }}article-page with-toolbar{{ end }}
|
{{ define "body-class" }}article-page keep-sidebar{{ end }}
|
||||||
{{ define "main" }}
|
{{ define "main" }}
|
||||||
<div id="article-toolbar">
|
|
||||||
<a href="{{ .Site.BaseURL }}" class="back-home">
|
|
||||||
{{ (resources.Get "icons/back.svg").Content | safeHTML }}
|
|
||||||
<span>Back</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{{ partial "article/article.html" . }}
|
{{ partial "article/article.html" . }}
|
||||||
|
|
||||||
{{ partial "article/components/related-contents" . }}
|
{{ if or (not (isset .Params "comments")) (eq .Params.comments "true")}}
|
||||||
|
|
||||||
{{ if or (not (isset .Params "comments")) (eq .Params.comments "true")}}
|
|
||||||
{{ partial "comments/include" . }}
|
{{ partial "comments/include" . }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ partialCached "footer/footer" . }}
|
{{ partialCached "footer/footer" . }}
|
||||||
|
|
||||||
{{- partial "article/components/photoswipe.html" . -}}
|
{{ partialCached "article/components/photoswipe" . }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{ $image := partial "helper/image" (dict "Context" . "Type" "taxonomy") }}
|
{{- $image := partialCached "helper/image" (dict "Context" . "Type" "taxonomy") .RelPermalink "taxonomy" -}}
|
||||||
{{ if $image.exists }}
|
{{ if $image.exists }}
|
||||||
<div class="taxonomy-image">
|
<div class="taxonomy-image">
|
||||||
{{ if $image.resource }}
|
{{ if $image.resource }}
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
{{ define "body-class" }}article-page keep-sidebar{{ end }}
|
|
||||||
{{ define "main" }}
|
|
||||||
{{ partial "article/article.html" . }}
|
|
||||||
|
|
||||||
{{ if or (not (isset .Params "comments")) (eq .Params.comments "true")}}
|
|
||||||
{{ partial "comments/include" . }}
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
{{ partialCached "footer/footer" . }}
|
|
||||||
|
|
||||||
{{ partial "article/components/photoswipe" . }}
|
|
||||||
{{ end }}
|
|
||||||
@@ -12,8 +12,7 @@
|
|||||||
</footer>
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{ $image := partial "helper/image" (dict "Context" . "Type" "articleList") }}
|
{{- $image := partialCached "helper/image" (dict "Context" . "Type" "articleList") .RelPermalink "articleList" -}}
|
||||||
|
|
||||||
{{ if $image.exists }}
|
{{ if $image.exists }}
|
||||||
<div class="article-image">
|
<div class="article-image">
|
||||||
{{ if $image.resource }}
|
{{ if $image.resource }}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{{ $image := partial "helper/image" (dict "Context" . "Type" "articleList") }}
|
{{ $image := partialCached "helper/image" (dict "Context" . "Type" "articleList") .RelPermalink "articleList" }}
|
||||||
<article class="{{ if $image.exists }}has-image{{ end }}">
|
<article class="{{ if $image.exists }}has-image{{ end }}">
|
||||||
{{ if $image.exists }}
|
{{ if $image.exists }}
|
||||||
<div class="article-image">
|
<div class="article-image">
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
{{- $thumbnailRetina := $image.resource.Fill "1600x500" -}}
|
{{- $thumbnailRetina := $image.resource.Fill "1600x500" -}}
|
||||||
|
|
||||||
<img src="{{ $thumbnail.RelPermalink }}"
|
<img src="{{ $thumbnail.RelPermalink }}"
|
||||||
srcset="{{ $thumbnail.RelPermalink }} 1x, {{ $thumbnailRetina.RelPermalink }} 2x"
|
srcset="{{ $thumbnail.RelPermalink }} 800w, {{ $thumbnailRetina.RelPermalink }} 1600w"
|
||||||
width="{{ $thumbnail.Width }}" height="{{ $thumbnail.Height }}" loading="lazy"
|
width="{{ $thumbnail.Width }}" height="{{ $thumbnail.Height }}" loading="lazy"
|
||||||
alt="Featured image of post {{ .Title }}" />
|
alt="Featured image of post {{ .Title }}" />
|
||||||
{{ else }}
|
{{ else }}
|
||||||
@@ -18,5 +18,5 @@
|
|||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ partial "article/components/details" . }}
|
{{ partialCached "article/components/details" . .RelPermalink }}
|
||||||
</article>
|
</article>
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
{{ $image := partial "helper/image" (dict "Context" .context "Type" .Type) }}
|
{{ $image := partialCached "helper/image" (dict "Context" .context "Type" .Type) .context.RelPermalink .Type }}
|
||||||
<article class="{{ if $image.exists }}has-image{{ end }}">
|
<article class="{{ if $image.exists }}has-image{{ end }}">
|
||||||
<a href="{{ .context.Permalink }}">
|
<a href="{{ .context.Permalink }}">
|
||||||
|
|
||||||
|
|||||||
@@ -1,16 +1,18 @@
|
|||||||
{{ $image := partial "helper/image" (dict "Context" .) }}
|
{{ $image := partialCached "helper/image" (dict "Context" . "Type" "article") .RelPermalink "article" }}
|
||||||
{{ $context := . }}
|
{{- $context := . -}}
|
||||||
|
{{- $categories := .Params.categories -}}
|
||||||
<div class="article-details">
|
<div class="article-details">
|
||||||
{{ with $categories := .Params.categories }}
|
{{ if $categories }}
|
||||||
<header class="article-category">
|
<header class="article-category">
|
||||||
{{ range $categories }}
|
{{ range $category := $categories }}
|
||||||
|
{{ $term := $.Site.GetPage (printf "/categories/%s" $category) }}
|
||||||
{{ if and $image.exists $image.resource }}
|
{{ if and $image.exists $image.resource }}
|
||||||
{{- $imageRaw := $image.resource | resources.Fingerprint "md5" -}}
|
{{- $imageRaw := $image.resource | resources.Fingerprint "md5" -}}
|
||||||
{{- $20x := $imageRaw.Fill "20x20 smart" -}}
|
{{- $20x := $imageRaw.Fill "20x20 smart" -}}
|
||||||
<a href="/categories/{{ . | urlize }}" class="color-tag"
|
<a href="{{ $term.Permalink }}" class="color-tag"
|
||||||
data-image="{{ $20x.RelPermalink }}" data-key="{{ $context.Slug }}" data-hash="{{ $imageRaw.Data.Integrity }}">{{ . | humanize }}</a>
|
data-image="{{ $20x.RelPermalink }}" data-key="{{ $context.Slug }}" data-hash="{{ $imageRaw.Data.Integrity }}">{{ $term.Title | humanize }}</a>
|
||||||
{{ else }}
|
{{ else }}
|
||||||
<a href="/categories/{{ . | urlize }}">{{ . | humanize }}</a>
|
<a href="{{ $term.Permalink }}">{{ $term.Title | humanize }}</a>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</header>
|
</header>
|
||||||
|
|||||||
@@ -1,11 +1,5 @@
|
|||||||
<footer class="article-footer">
|
<footer class="article-footer">
|
||||||
{{ with $tags := .Params.Tags }}
|
{{ partial "article/components/tags" . }}
|
||||||
<section class="article-tags">
|
|
||||||
{{ range $tags }}
|
|
||||||
<a href="/tags/{{ . | urlize }}">{{ . | humanize }}</a>
|
|
||||||
{{ end }}
|
|
||||||
</section>
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
{{ if and (.Site.Params.article.license.enabled) (not (eq .Params.license false)) }}
|
{{ if and (.Site.Params.article.license.enabled) (not (eq .Params.license false)) }}
|
||||||
<section class="article-copyright">
|
<section class="article-copyright">
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
<header class="article-header">
|
<header class="article-header">
|
||||||
{{ $image := partial "helper/image" (dict "Context" . "Type" "article") }}
|
{{- $image := partialCached "helper/image" (dict "Context" . "Type" "article") .RelPermalink "article" -}}
|
||||||
|
|
||||||
{{ if $image.exists }}
|
{{ if $image.exists }}
|
||||||
<div class="article-image">
|
<div class="article-image">
|
||||||
{{ if $image.resource }}
|
{{ if $image.resource }}
|
||||||
@@ -16,5 +15,5 @@
|
|||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ partial "article/components/details" . }}
|
{{ partialCached "article/components/details" . .RelPermalink }}
|
||||||
</header>
|
</header>
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
<div class="related-contents">
|
<div class="related-contents">
|
||||||
<div class="flex article-list--tile">
|
<div class="flex article-list--tile">
|
||||||
{{ range . }}
|
{{ range . }}
|
||||||
{{ partial "article-list/tile" (dict "context" . "size" "250x150") }}
|
{{ partial "article-list/tile" (dict "context" . "size" "250x150" "Type" "articleList") }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
{{- $tags := .Params.Tags -}}
|
||||||
|
{{ if $tags }}
|
||||||
|
<section class="article-tags">
|
||||||
|
{{ range $tag := $tags }}
|
||||||
|
{{ with $.Site.GetPage (printf "/tags/%s" $tag) }}
|
||||||
|
<a href="{{ .Permalink }}">{{ .Title | humanize }}</a>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
</section>
|
||||||
|
{{ end }}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
{{- $light := resources.Get "css/highlight/light.css" | minify -}}
|
||||||
|
{{- $dark := resources.Get "css/highlight/dark.css" | minify -}}
|
||||||
|
<link rel="stylesheet" href="{{ $light.RelPermalink }}" media="(prefers-color-scheme: light)">
|
||||||
|
<link rel="stylesheet" href="{{ $dark.RelPermalink }}" media="(prefers-color-scheme: dark)">
|
||||||
+2
-2
@@ -1,7 +1,7 @@
|
|||||||
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vibrant.min.js"
|
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vibrant.min.js"
|
||||||
integrity="sha256-5NovOZc4iwiAWTYIFiIM7DxKUXKWvpVEuMEPLzcm5/g=" crossorigin="anonymous"></script>
|
integrity="sha256-5NovOZc4iwiAWTYIFiIM7DxKUXKWvpVEuMEPLzcm5/g=" crossorigin="anonymous"></script>
|
||||||
|
|
||||||
{{ $opts := dict "minify" hugo.IsProduction }}
|
{{- $opts := dict "minify" hugo.IsProduction -}}
|
||||||
{{ $script := resources.Get "ts/main.ts" | js.Build $opts }}
|
{{- $script := resources.Get "ts/main.ts" | js.Build $opts -}}
|
||||||
|
|
||||||
<script type="text/javascript" src="{{ $script.RelPermalink }}" defer></script>
|
<script type="text/javascript" src="{{ $script.RelPermalink }}" defer></script>
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
<footer class="site-footer">
|
<footer class="site-footer">
|
||||||
<section class="copyright">© {{ now.Format "2006" }} {{ .Site.Title }}</section>
|
<section class="copyright">© {{ now.Format "2006" }} {{ .Site.Title }}</section>
|
||||||
<section class="powerby">
|
<section class="powerby">
|
||||||
Built with <a href="https://gohugo.io/" target="_blank">Hugo</a> <br />
|
Built with <a href="https://gohugo.io/" target="_blank" rel="noopener">Hugo</a> <br />
|
||||||
Theme <b><a href="https://github.com/CaiJimmy/hugo-theme-stack" target="_blank">Stack</a></b> designed by
|
Theme <b><a href="https://github.com/CaiJimmy/hugo-theme-stack" target="_blank" rel="noopener">Stack</a></b> designed by
|
||||||
<a href="https://jimmycai.com" target="_blank">Jimmy</a>
|
<a href="https://jimmycai.com" target="_blank" rel="noopener">Jimmy</a>
|
||||||
</section>
|
</section>
|
||||||
</footer>
|
</footer>
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
{{ partialCached "footer/components/script.html" . }}
|
||||||
|
{{ partialCached "footer/components/custom-font.html" . }}
|
||||||
|
{{ partialCached "footer/components/highlight.html" . }}
|
||||||
|
{{ partial "footer/custom.html" . }}
|
||||||
@@ -2,10 +2,10 @@
|
|||||||
<meta charset='utf-8'>
|
<meta charset='utf-8'>
|
||||||
<meta name='viewport' content='width=device-width, initial-scale=1'>
|
<meta name='viewport' content='width=device-width, initial-scale=1'>
|
||||||
|
|
||||||
{{- $description := partial "data/description" . -}}
|
{{- $description := partialCached "data/description" . .RelPermalink -}}
|
||||||
<meta name='description' content='{{ $description }}'>
|
<meta name='description' content='{{ $description }}'>
|
||||||
|
|
||||||
{{- $title := partial "data/title" . -}}
|
{{- $title := partialCached "data/title" . .RelPermalink -}}
|
||||||
<title>{{ $title }}</title>
|
<title>{{ $title }}</title>
|
||||||
|
|
||||||
<link rel='canonical' href='{{ .Permalink }}'>
|
<link rel='canonical' href='{{ .Permalink }}'>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{{- $title := partial "data/title" . -}}
|
{{- $title := partialCached "data/title" . .RelPermalink -}}
|
||||||
{{- $description := partial "data/description" . -}}
|
{{- $description := partialCached "data/description" . .RelPermalink -}}
|
||||||
|
|
||||||
<meta property='og:title' content='{{ $title }}'>
|
<meta property='og:title' content='{{ $title }}'>
|
||||||
<meta property='og:description' content='{{ $description }}'>
|
<meta property='og:description' content='{{ $description }}'>
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{ $image := partial "helper/image" (dict "Context" . "Type" "opengraph") }}
|
{{ $image := partialCached "helper/image" (dict "Context" . "Type" "opengraph") .RelPermalink "opengraph" }}
|
||||||
{{- if $image.exists -}}
|
{{- if $image.exists -}}
|
||||||
<meta property='og:image' content='{{ absURL $image.permalink }}' />
|
<meta property='og:image' content='{{ absURL $image.permalink }}' />
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
@@ -2,13 +2,13 @@
|
|||||||
<meta name="twitter:site" content="{{ . }}">
|
<meta name="twitter:site" content="{{ . }}">
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- $title := partial "data/title" . -}}
|
{{- $title := partialCached "data/title" . .RelPermalink -}}
|
||||||
{{- $description := partial "data/description" . -}}
|
{{- $description := partialCached "data/description" . .RelPermalink -}}
|
||||||
|
|
||||||
<meta name="twitter:title" content="{{ $title }}">
|
<meta name="twitter:title" content="{{ $title }}">
|
||||||
<meta name="twitter:description" content="{{ $description }}">
|
<meta name="twitter:description" content="{{ $description }}">
|
||||||
|
|
||||||
{{- $image := partial "helper/image" (dict "Context" . "Type" "opengraph") -}}
|
{{- $image := partialCached "helper/image" (dict "Context" . "Type" "opengraph") .RelPermalink "opengraph" -}}
|
||||||
{{- if $image.exists -}}
|
{{- if $image.exists -}}
|
||||||
<meta name="twitter:card" content="{{ .Site.Params.opengraph.twitter.card }}">
|
<meta name="twitter:card" content="{{ .Site.Params.opengraph.twitter.card }}">
|
||||||
<meta name="twitter:image" content='{{ absURL $image.permalink }}' />
|
<meta name="twitter:image" content='{{ absURL $image.permalink }}' />
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
{{ $sass := resources.Get "scss/style.scss" }}
|
{{ $sass := resources.Get "scss/style.scss" }}
|
||||||
{{ $style := $sass | resources.ToCSS | minify }}
|
{{ $style := $sass | resources.ToCSS | minify }}
|
||||||
<link rel="stylesheet" href="{{ $style.Permalink }}">
|
<link rel="stylesheet" href="{{ $style.RelPermalink }}">
|
||||||
@@ -25,13 +25,13 @@
|
|||||||
<h2 class="site-description">{{ .Site.Params.sidebar.subtitle }}</h2>
|
<h2 class="site-description">{{ .Site.Params.sidebar.subtitle }}</h2>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<nav class="menu" id="main-menu">
|
<ol class="menu" id="main-menu">
|
||||||
{{ $currentPage := . }}
|
{{ $currentPage := . }}
|
||||||
{{ range .Site.Menus.main }}
|
{{ range .Site.Menus.main }}
|
||||||
{{ $active := or (eq $currentPage.Title .Name) (or ($currentPage.HasMenuCurrent "main" .) ($currentPage.IsMenuCurrent "main" .)) }}
|
{{ $active := or (eq $currentPage.Title .Name) (or ($currentPage.HasMenuCurrent "main" .) ($currentPage.IsMenuCurrent "main" .)) }}
|
||||||
|
|
||||||
<li {{ if $active }} class='current' {{ end }}>
|
<li {{ if $active }} class='current' {{ end }}>
|
||||||
<a href='{{ .URL }}'>
|
<a href='{{ .URL | absLangURL }}'>
|
||||||
{{ if .Pre }}
|
{{ if .Pre }}
|
||||||
{{ (resources.Get (delimit (slice "icons/" .Pre ".svg") "")).Content | safeHTML }}
|
{{ (resources.Get (delimit (slice "icons/" .Pre ".svg") "")).Content | safeHTML }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
@@ -39,5 +39,5 @@
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</nav>
|
</ol>
|
||||||
</aside>
|
</aside>
|
||||||
@@ -1,28 +1,28 @@
|
|||||||
<section class="widget archive">
|
<section class="widget archives">
|
||||||
<div class="widget-icon">
|
<div class="widget-icon">
|
||||||
{{ (resources.Get "icons/infinity.svg").Content | safeHTML }}
|
{{ (resources.Get "icons/infinity.svg").Content | safeHTML }}
|
||||||
</div>
|
</div>
|
||||||
<h1 class="widget-title">{{ T "widgetArchiveTitle" }}</h1>
|
<h1 class="widget-title">{{ T "widgetArchivesTitle" }}</h1>
|
||||||
|
|
||||||
{{ $pages := where .Site.RegularPages "Type" "in" .Site.Params.mainSections }}
|
{{ $pages := where .Site.RegularPages "Type" "in" .Site.Params.mainSections }}
|
||||||
{{ $notHidden := where .Site.RegularPages "Params.hidden" "!=" true }}
|
{{ $notHidden := where .Site.RegularPages "Params.hidden" "!=" true }}
|
||||||
{{ $filtered := ($pages | intersect $notHidden) }}
|
{{ $filtered := ($pages | intersect $notHidden) }}
|
||||||
{{ $archive := $filtered.GroupByDate "2006" }}
|
{{ $archives := $filtered.GroupByDate "2006" }}
|
||||||
|
|
||||||
{{ range first .Site.Params.widgets.archive.limit ($archive) }}
|
{{ range first .Site.Params.widgets.archives.limit ($archives) }}
|
||||||
{{ $id := lower (replace .Key " " "-") }}
|
{{ $id := lower (replace .Key " " "-") }}
|
||||||
<div class="archive-year">
|
<div class="archives-year">
|
||||||
<a href="{{ $.Site.BaseURL }}{{ $.Site.Params.widgets.archive.path }}#{{ $id }}">
|
<a href="{{ $.Site.Params.widgets.archives.path | relLangURL }}#{{ $id }}">
|
||||||
<span class="year">{{ .Key }}</span>
|
<span class="year">{{ .Key }}</span>
|
||||||
<span class="count">{{ len .Pages }}</span>
|
<span class="count">{{ len .Pages }}</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ if gt (len $archive) .Site.Params.widgets.archive.limit }}
|
{{ if gt (len $archives) .Site.Params.widgets.archives.limit }}
|
||||||
<div class="archive-year">
|
<div class="archives-year">
|
||||||
<a href="{{ $.Site.BaseURL }}/archive">
|
<a href="{{ $.Site.Params.widgets.archives.path | relLangURL }}">
|
||||||
<span class="year">{{ T "widgetArchiveMore" }}</span>
|
<span class="year">{{ T "widgetArchivesMore" }}</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
{{ $tags := .Site.Taxonomies.tags.ByCount }}
|
{{ $tags := .Site.Taxonomies.tags.ByCount }}
|
||||||
{{ $v2 := where $tags "Term" "not in" (slice "hugo" "tag" "rss") }}
|
|
||||||
|
|
||||||
<section class="widget tagCloud">
|
<section class="widget tagCloud">
|
||||||
<div class="widget-icon">
|
<div class="widget-icon">
|
||||||
@@ -8,10 +7,11 @@
|
|||||||
<h1 class="widget-title">{{ T "widgetTagCloudTitle" }}</h1>
|
<h1 class="widget-title">{{ T "widgetTagCloudTitle" }}</h1>
|
||||||
|
|
||||||
<div class="tagCloud-tags">
|
<div class="tagCloud-tags">
|
||||||
{{ range first .Site.Params.widgets.tagCloud.limit $v2 }}
|
{{ range first .Site.Params.widgets.tagCloud.limit $tags }}
|
||||||
<a href="{{ $.Site.BaseURL }}tags/{{ .Term | urlize }}/" class="font_size_{{ .Count }}">
|
{{ $term := $.Site.GetPage (printf "/tags/%s" .Term) }}
|
||||||
{{ .Term | humanize }}
|
<a href="{{ $term.Permalink }}" class="font_size_{{ .Count }}">
|
||||||
</a>
|
{{ $term.Title | humanize }}
|
||||||
|
</a>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
{{ define "container-class" }}article-page with-toolbar{{ end }}
|
||||||
|
{{ define "main" }}
|
||||||
|
<div id="article-toolbar">
|
||||||
|
<a href="{{ .Site.BaseURL }}" class="back-home">
|
||||||
|
{{ (resources.Get "icons/back.svg").Content | safeHTML }}
|
||||||
|
<span>Back</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{ partial "article/article.html" . }}
|
||||||
|
|
||||||
|
{{ partial "article/components/related-contents" . }}
|
||||||
|
|
||||||
|
{{ if or (not (isset .Params "comments")) (eq .Params.comments "true")}}
|
||||||
|
{{ partial "comments/include" . }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ partialCached "footer/footer" . }}
|
||||||
|
|
||||||
|
{{- partialCached "article/components/photoswipe.html" . -}}
|
||||||
|
{{ end }}
|
||||||
+6
-3
@@ -6,12 +6,15 @@
|
|||||||
HUGO_THEME = "repo"
|
HUGO_THEME = "repo"
|
||||||
|
|
||||||
[context.production]
|
[context.production]
|
||||||
command = "cd exampleSite && hugo --gc --themesDir ../.."
|
command = "cd exampleSite && hugo --gc --themesDir ../.. -b ${URL}"
|
||||||
[context.production.environment]
|
[context.production.environment]
|
||||||
HUGO_ENV = "production"
|
HUGO_ENV = "production"
|
||||||
|
|
||||||
[context.branch-deploy]
|
[context.branch-deploy]
|
||||||
command = "cd exampleSite && hugo --gc --themesDir ../.. -b ${DEPLOY_PRIME_URL}/"
|
command = "cd exampleSite && hugo --gc --themesDir ../.. -b ${DEPLOY_PRIME_URL}"
|
||||||
|
|
||||||
[context.deploy-preview]
|
[context.deploy-preview]
|
||||||
command = "cd exampleSite && hugo --gc --themesDir ../.. -b ${DEPLOY_PRIME_URL}/"
|
command = "cd exampleSite && hugo --gc --themesDir ../.. -b ${DEPLOY_PRIME_URL}"
|
||||||
|
|
||||||
|
[[plugins]]
|
||||||
|
package = "/exampleSite/plugins/netlify-plugin-hugo-cache-resources"
|
||||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
|||||||
|
{"Target":"scss/style.min.css","MediaType":"text/css","Data":{}}
|
||||||
+15
-3
@@ -4,10 +4,22 @@
|
|||||||
name = "Stack"
|
name = "Stack"
|
||||||
license = "GPL-3.0-only"
|
license = "GPL-3.0-only"
|
||||||
licenselink = "https://github.com/CaiJimmy/hugo-theme-stack/blob/master/LICENSE"
|
licenselink = "https://github.com/CaiJimmy/hugo-theme-stack/blob/master/LICENSE"
|
||||||
description = "Just another simple Hugo theme"
|
description = "Card-style Hugo theme designed for bloggers"
|
||||||
homepage = "https://blog.jimmycai.com/p/hugo-theme-stack"
|
homepage = "https://blog.jimmycai.com/p/hugo-theme-stack"
|
||||||
tags = []
|
tags = [
|
||||||
features = []
|
"blog",
|
||||||
|
"responsive",
|
||||||
|
"clean",
|
||||||
|
"light",
|
||||||
|
"dark",
|
||||||
|
"personal"
|
||||||
|
]
|
||||||
|
features = [
|
||||||
|
"disqus",
|
||||||
|
"photoswipe",
|
||||||
|
"opengraph",
|
||||||
|
"widgets"
|
||||||
|
]
|
||||||
min_version = "0.74.0"
|
min_version = "0.74.0"
|
||||||
|
|
||||||
[author]
|
[author]
|
||||||
|
|||||||
Reference in New Issue
Block a user