mirror of
https://github.com/Wonderfall/hugo-WonderMod.git
synced 2025-08-04 04:54:11 -04:00
Compare commits
399 commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
3b0ee00eb0 | ||
![]() |
9780253ed5 | ||
![]() |
5e61be5903 | ||
![]() |
71871d277c | ||
![]() |
73484a80d7 | ||
![]() |
4b45709402 | ||
![]() |
d3368d1bb9 | ||
![]() |
a1cb044262 | ||
![]() |
0989c28a0e | ||
![]() |
fb1c0aeb6f | ||
![]() |
69e5e085ab | ||
![]() |
f8e125c7ee | ||
![]() |
5f624757ae | ||
![]() |
e3ad0aeb70 | ||
![]() |
f51ad49819 | ||
![]() |
ff7443b17f | ||
![]() |
00488d0146 | ||
![]() |
cf62fa3c40 | ||
![]() |
87df659c18 | ||
![]() |
3fb112bc85 | ||
![]() |
102e089bc3 | ||
![]() |
86362ebd72 | ||
![]() |
60984fd136 | ||
![]() |
65c2720ab9 | ||
![]() |
28ec7a407d | ||
![]() |
705ebeb729 | ||
![]() |
6864770ad4 | ||
![]() |
2ecb08a5ba | ||
![]() |
e0fc64c43e | ||
![]() |
b288ede80c | ||
![]() |
65d650fc4d | ||
![]() |
ac444fc0f5 | ||
![]() |
5a99ab779d | ||
![]() |
ba739cfe29 | ||
![]() |
4c50ed8bfa | ||
![]() |
72ab73ffe5 | ||
![]() |
50cafe4b1c | ||
![]() |
7795c90f6f | ||
![]() |
24f3096e33 | ||
![]() |
4bbd551d2b | ||
![]() |
7781c94699 | ||
![]() |
abe49a5ad4 | ||
![]() |
697034ccb7 | ||
![]() |
b4dd5f0b18 | ||
![]() |
efe4cb4516 | ||
![]() |
3a064f5c76 | ||
![]() |
9d4a9e825a | ||
![]() |
eab731707a | ||
![]() |
f7bd1ec07c | ||
![]() |
ac1e041419 | ||
![]() |
69cec7a0ba | ||
![]() |
4230109ff7 | ||
![]() |
1521cc77a2 | ||
![]() |
6f29d35d73 | ||
![]() |
faa73a4ee8 | ||
![]() |
61bf918a0d | ||
![]() |
74d288ff94 | ||
![]() |
750feb9cc9 | ||
![]() |
804a8682f3 | ||
![]() |
c52abfb09b | ||
![]() |
8ac719fb56 | ||
![]() |
3e21361da7 | ||
![]() |
3ad501e45d | ||
![]() |
4ae8c414da | ||
![]() |
60282f60fc | ||
![]() |
ad99ef818a | ||
![]() |
4a924cef54 | ||
![]() |
07759b794f | ||
![]() |
bacb763071 | ||
![]() |
3fd9888f43 | ||
![]() |
d6f911cc05 | ||
![]() |
be5badf317 | ||
![]() |
8d1e45a42a | ||
![]() |
a34784c3ed | ||
![]() |
031e2ba57e | ||
![]() |
5d2c036624 | ||
![]() |
1d151a4a02 | ||
![]() |
a636c9eaee | ||
![]() |
2210bf20b3 | ||
![]() |
d67462d0f3 | ||
![]() |
494d6d5dff | ||
![]() |
b43af19b11 | ||
![]() |
e6b697f365 | ||
![]() |
25e5b4d298 | ||
![]() |
8efba34fa9 | ||
![]() |
35643680d2 | ||
![]() |
a35a33c2e1 | ||
![]() |
4d42965bb5 | ||
![]() |
f5320cd336 | ||
![]() |
7250994280 | ||
![]() |
2347bb9c11 | ||
![]() |
33085a8b23 | ||
![]() |
db75cdc9b8 | ||
![]() |
d47a7d67fa | ||
![]() |
ec01777341 | ||
![]() |
2b5f00640d | ||
![]() |
4152dc75e8 | ||
![]() |
d3d90be8a4 | ||
![]() |
bf0883adb5 | ||
![]() |
5ca2d29537 | ||
![]() |
1bbb071fe7 | ||
![]() |
06ee5f9d38 | ||
![]() |
0350f512ee | ||
![]() |
4bd96d6271 | ||
![]() |
3b83cdc4b5 | ||
![]() |
a2865e01e0 | ||
![]() |
79a6f0174a | ||
![]() |
8c1b8e0647 | ||
![]() |
e44658b9b6 | ||
![]() |
3a0a4811cb | ||
![]() |
ddfea82cc7 | ||
![]() |
1f0f294c85 | ||
![]() |
bbfb6f518d | ||
![]() |
8c40461fc6 | ||
![]() |
275d0e9be7 | ||
![]() |
2761a95697 | ||
![]() |
0cf3f7ae00 | ||
![]() |
178b18e4e7 | ||
![]() |
2009151773 | ||
![]() |
11a52b70cd | ||
![]() |
ddaf94cd3d | ||
![]() |
f625367ff7 | ||
![]() |
9c23a8180a | ||
![]() |
15a122bf7a | ||
![]() |
b27c6b9ef0 | ||
![]() |
39ac1acdaf | ||
![]() |
92c8a84b00 | ||
![]() |
b906338dc8 | ||
![]() |
198a4d74ae | ||
![]() |
fd077de0f4 | ||
![]() |
84f9adfa5f | ||
![]() |
eba92edd83 | ||
![]() |
6f0c88d2b8 | ||
![]() |
7c4aa74069 | ||
![]() |
3e544a3ebd | ||
![]() |
42fa989316 | ||
![]() |
b01e9a8653 | ||
![]() |
18b691c534 | ||
![]() |
4f5eea2395 | ||
![]() |
67efb771bf | ||
![]() |
b43431bd51 | ||
![]() |
2f3c140f80 | ||
![]() |
4e3fbc7770 | ||
![]() |
2989681d12 | ||
![]() |
285c0d61fe | ||
![]() |
56560e3a03 | ||
![]() |
13876beb0a | ||
![]() |
0a140a1a12 | ||
![]() |
0dda1aeaa1 | ||
![]() |
b79f84fff6 | ||
![]() |
d0734456ca | ||
![]() |
b9e4f627cc | ||
![]() |
dfe6ecc550 | ||
![]() |
da4046d4db | ||
![]() |
01fb4fad08 | ||
![]() |
0c9b25a0d5 | ||
![]() |
705ff19890 | ||
![]() |
41f827f1d5 | ||
![]() |
b33b96873f | ||
![]() |
6c8e3ef699 | ||
![]() |
723ac4f5c6 | ||
![]() |
5737f8613c | ||
![]() |
17fd82358d | ||
![]() |
ceea1fb8e4 | ||
![]() |
136e6ed883 | ||
![]() |
30a2cc7a65 | ||
![]() |
0f37c0615e | ||
![]() |
d08880dd9b | ||
![]() |
230360552b | ||
![]() |
09c9be232f | ||
![]() |
78dc2698cb | ||
![]() |
8411411a67 | ||
![]() |
77ffb308c3 | ||
![]() |
ebe7400f54 | ||
![]() |
2528906a38 | ||
![]() |
87ffee9fcf | ||
![]() |
bb6d4647bd | ||
![]() |
450e8867a6 | ||
![]() |
575b0b0e38 | ||
![]() |
c0b7ea5f4b | ||
![]() |
621c9f60fb | ||
![]() |
29fefb4890 | ||
![]() |
179fea63a3 | ||
![]() |
4824f4623d | ||
![]() |
e3c30b4e41 | ||
![]() |
5032b2c4f1 | ||
![]() |
d5b780720d | ||
![]() |
6ebeb20bdb | ||
![]() |
5f280c5df2 | ||
![]() |
1ead1f76e2 | ||
![]() |
36b4cb35a4 | ||
![]() |
9af128a8a6 | ||
![]() |
7683ef1825 | ||
![]() |
0262b5eba0 | ||
![]() |
a94674e6c9 | ||
![]() |
c692695754 | ||
![]() |
181a8c38f3 | ||
![]() |
0ed246d47d | ||
![]() |
c2d047f376 | ||
![]() |
43ac108b03 | ||
![]() |
a4b20f0f4d | ||
![]() |
e1a46046bc | ||
![]() |
57dd5404d3 | ||
![]() |
0c71711332 | ||
![]() |
2b0a52ab25 | ||
![]() |
6aced45a65 | ||
![]() |
2e36f439a4 | ||
![]() |
282ad5b6f5 | ||
![]() |
7b9c836416 | ||
![]() |
e59a43c00d | ||
![]() |
63e929cdad | ||
![]() |
cb9be55c78 | ||
![]() |
b7dbb0ea0e | ||
![]() |
cf5b2d59b2 | ||
![]() |
cd65d698fc | ||
![]() |
4ddcae3120 | ||
![]() |
1478c0bc17 | ||
![]() |
d3084bee79 | ||
![]() |
38af7c47a6 | ||
![]() |
44f5970db2 | ||
![]() |
64c40fe6bd | ||
![]() |
a2e4258f3f | ||
![]() |
1d2ecfedac | ||
![]() |
8671af6e0c | ||
![]() |
e888673bb2 | ||
![]() |
8645e275ad | ||
![]() |
4ef79036c5 | ||
![]() |
c6e9568c12 | ||
![]() |
c0e7be6534 | ||
![]() |
39910dc27f | ||
![]() |
a55b9517dc | ||
![]() |
fc8c8666cf | ||
![]() |
c5d31c778b | ||
![]() |
b297199309 | ||
![]() |
09921bb542 | ||
![]() |
363756ffee | ||
![]() |
1de55c4266 | ||
![]() |
566989abf4 | ||
![]() |
2bb7687a34 | ||
![]() |
f1296bc29d | ||
![]() |
575cc0ca8c | ||
![]() |
975972e041 | ||
![]() |
496b846597 | ||
![]() |
375155061d | ||
![]() |
6a3887f4e0 | ||
![]() |
e83d840126 | ||
![]() |
16293e9578 | ||
![]() |
5a5b0840ed | ||
![]() |
42c3c937a1 | ||
![]() |
80928d9f23 | ||
![]() |
2a1390bef7 | ||
![]() |
53fd4bb857 | ||
![]() |
26315a9e4c | ||
![]() |
912eddde0a | ||
![]() |
15b984bd21 | ||
![]() |
43c810c3e2 | ||
![]() |
06f97458a7 | ||
![]() |
81ddc76efb | ||
![]() |
c9f7c54ae6 | ||
![]() |
530044033e | ||
![]() |
d52bced735 | ||
![]() |
b0ab8ea495 | ||
![]() |
37f359ee21 | ||
![]() |
54a3c60735 | ||
![]() |
587ab16725 | ||
![]() |
0fe857539b | ||
![]() |
72abf7440a | ||
![]() |
c59193fc48 | ||
![]() |
4e2558d93c | ||
![]() |
dbaa17c69a | ||
![]() |
699fc91f1f | ||
![]() |
c876864422 | ||
![]() |
386d845782 | ||
![]() |
0c743b767b | ||
![]() |
3bcafa0be9 | ||
![]() |
76ea33c89c | ||
![]() |
b8c7df1ef9 | ||
![]() |
2c6ae04a02 | ||
![]() |
5f1d92493b | ||
![]() |
d81b87938b | ||
![]() |
1033afcac2 | ||
![]() |
60cbb311b7 | ||
![]() |
170e2c5b3f | ||
![]() |
baa0a71478 | ||
![]() |
4873bd2767 | ||
![]() |
10141e278e | ||
![]() |
38891b9062 | ||
![]() |
a57cb762c3 | ||
![]() |
b7771de64c | ||
![]() |
56af5749b5 | ||
![]() |
7c930ee4ea | ||
![]() |
8c2f997ab3 | ||
![]() |
4e9b04784b | ||
![]() |
8021be2ddb | ||
![]() |
97b373d9ee | ||
![]() |
c437ee1b62 | ||
![]() |
8456ad83ae | ||
![]() |
d76bc91ed0 | ||
![]() |
42a23c96e2 | ||
![]() |
7072a79f71 | ||
![]() |
9a20b2e54c | ||
![]() |
5bc9c5a73b | ||
![]() |
2aad433ae5 | ||
![]() |
7ea01a0ab2 | ||
![]() |
3442d5cb52 | ||
![]() |
b4393b3d6e | ||
![]() |
162d80071f | ||
![]() |
bc99ae777d | ||
![]() |
0eac254d58 | ||
![]() |
ee81fe77ad | ||
![]() |
caa2240f12 | ||
![]() |
6ed6b7aac8 | ||
![]() |
f70debb55a | ||
![]() |
da1de88886 | ||
![]() |
e5ba0272de | ||
![]() |
4970e61c7b | ||
![]() |
dcbe6277bb | ||
![]() |
1214963760 | ||
![]() |
7d67d64bb7 | ||
![]() |
1458d8de67 | ||
![]() |
e44cef81c6 | ||
![]() |
0c4ec163a6 | ||
![]() |
a3ad238f78 | ||
![]() |
81fcd8f9d4 | ||
![]() |
747e2bb760 | ||
![]() |
191c16b0c8 | ||
![]() |
129b5bd063 | ||
![]() |
664299cc7c | ||
![]() |
00ddeb421a | ||
![]() |
09accb9566 | ||
![]() |
f9b796d168 | ||
![]() |
fc87fc3a29 | ||
![]() |
ae4bf201d1 | ||
![]() |
5c26fda276 | ||
![]() |
d35056c664 | ||
![]() |
726894ba29 | ||
![]() |
6b55df1089 | ||
![]() |
b868da3d3c | ||
![]() |
84c30474ca | ||
![]() |
df544469c9 | ||
![]() |
87fbe01124 | ||
![]() |
537ec0038f | ||
![]() |
d2c4270bb2 | ||
![]() |
da69dda48c | ||
![]() |
378b81cb36 | ||
![]() |
63ec83fda4 | ||
![]() |
573e673efa | ||
![]() |
0e3f44ff17 | ||
![]() |
167ca42ce3 | ||
![]() |
a86abf5994 | ||
![]() |
24e5d82ecb | ||
![]() |
20b91ad2aa | ||
![]() |
0c64647138 | ||
![]() |
8357d2b1ff | ||
![]() |
43e1648b3e | ||
![]() |
2f409920e1 | ||
![]() |
3a8df7888e | ||
![]() |
10745dd537 | ||
![]() |
fb0393fa12 | ||
![]() |
ccbe179033 | ||
![]() |
4e6eebe318 | ||
![]() |
87fd91ed6a | ||
![]() |
d136063229 | ||
![]() |
98c17559e9 | ||
![]() |
c3634e6ccd | ||
![]() |
a015ec2efc | ||
![]() |
0430a98e74 | ||
![]() |
c51e027390 | ||
![]() |
791999df38 | ||
![]() |
8c313af0f3 | ||
![]() |
1627fe7d7a | ||
![]() |
bbb35cb6d5 | ||
![]() |
87e9a27630 | ||
![]() |
6c64ad0695 | ||
![]() |
17c4da86b5 | ||
![]() |
f1bc3471a6 | ||
![]() |
c255d148d8 | ||
![]() |
ba48765e2c | ||
![]() |
b756217126 | ||
![]() |
bb7b6f0076 | ||
![]() |
9d7576bd04 | ||
![]() |
427053290d | ||
![]() |
0f4dc88c63 | ||
![]() |
23610de4a0 | ||
![]() |
55fe10e9d3 | ||
![]() |
4878383dd4 | ||
![]() |
196b82645e | ||
![]() |
dae7f2b8a1 | ||
![]() |
635054cd07 | ||
![]() |
a60ececdfb | ||
![]() |
6d6fe2c389 | ||
![]() |
fe94d7f347 | ||
![]() |
54744ba694 | ||
![]() |
0f0e027def | ||
![]() |
fb4988cfb6 | ||
![]() |
0c0c6847e5 | ||
![]() |
2fea5a1062 | ||
![]() |
009d3a2e1d | ||
![]() |
e503367a1a |
120 changed files with 3282 additions and 1527 deletions
12
.github/FUNDING.yml
vendored
12
.github/FUNDING.yml
vendored
|
@ -1,12 +0,0 @@
|
||||||
# These are supported funding model platforms
|
|
||||||
|
|
||||||
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
|
||||||
patreon: # Replace with a single Patreon username
|
|
||||||
open_collective: # Replace with a single Open Collective username
|
|
||||||
ko_fi: adityatelange
|
|
||||||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
|
||||||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
|
||||||
liberapay: # Replace with a single Liberapay username
|
|
||||||
issuehunt: # Replace with a single IssueHunt username
|
|
||||||
otechie: # Replace with a single Otechie username
|
|
||||||
custom: ['https://www.buymeacoffee.com/adityatelange']
|
|
13
.github/ISSUE_TEMPLATE/bug_report.md
vendored
13
.github/ISSUE_TEMPLATE/bug_report.md
vendored
|
@ -11,7 +11,7 @@ assignees: ''
|
||||||
|
|
||||||
## READ BEFORE OPENING ISSUES
|
## READ BEFORE OPENING ISSUES
|
||||||
|
|
||||||
Please fill the template below
|
Please fill the template below
|
||||||
- **DO NOT** ask for instructions.
|
- **DO NOT** ask for instructions.
|
||||||
- Use Discussions section if you need help
|
- Use Discussions section if you need help
|
||||||
- See project wiki https://github.com/adityatelange/hugo-PaperMod/wiki
|
- See project wiki https://github.com/adityatelange/hugo-PaperMod/wiki
|
||||||
|
@ -25,12 +25,12 @@ Please fill the template below
|
||||||
|
|
||||||
- Device/Os: [e.g. Android 10]
|
- Device/Os: [e.g. Android 10]
|
||||||
- Type: [e.g. Desktop/Mobile]
|
- Type: [e.g. Desktop/Mobile]
|
||||||
- Browser and version [e.g. Chrome 86.0]:
|
- Browser and version [e.g. Chrome 86.0]:
|
||||||
- Hugo Version [ >=0.74 expected]:
|
- Hugo Version [ >=0.112.4 expected]:
|
||||||
- Theme Version [e.g. v4.0, master, or commit-id ]:
|
- Theme Version [e.g. v4.0, master, or commit-id ]:
|
||||||
|
|
||||||
**Steps to reproduce the behavior:**
|
**Steps to reproduce the behavior:**
|
||||||
<!--
|
<!--
|
||||||
1. Go to '...'
|
1. Go to '...'
|
||||||
2. Click on '....'
|
2. Click on '....'
|
||||||
3. Scroll down to '....'
|
3. Scroll down to '....'
|
||||||
|
@ -40,6 +40,9 @@ Please fill the template below
|
||||||
**Expected behavior**:
|
**Expected behavior**:
|
||||||
<!-- A clear and concise description of what you expected to happen. -->
|
<!-- A clear and concise description of what you expected to happen. -->
|
||||||
|
|
||||||
|
**Repo/Source where this issue can be reproduced**:
|
||||||
|
<!-- Please link source code of website where the said issue can be reproduced -->
|
||||||
|
|
||||||
**Screenshots**
|
**Screenshots**
|
||||||
<!-- If applicable, add screenshots to help explain your problem. -->
|
<!-- If applicable, add screenshots to help explain your problem. -->
|
||||||
|
|
||||||
|
|
5
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
5
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
blank_issues_enabled: false
|
||||||
|
contact_links:
|
||||||
|
- name: PaperMod Discussions
|
||||||
|
url: https://github.com/adityatelange/hugo-PaperMod/discussions
|
||||||
|
about: Please ask and answer questions/doubts here, do not open an issue for questions.
|
7
.github/ISSUE_TEMPLATE/new-blank-issue.md
vendored
Normal file
7
.github/ISSUE_TEMPLATE/new-blank-issue.md
vendored
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
---
|
||||||
|
name: New Blank Issue
|
||||||
|
about: Anything other than bug report
|
||||||
|
title: ""
|
||||||
|
labels: ""
|
||||||
|
assignees: ""
|
||||||
|
---
|
44
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
44
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
<!--
|
||||||
|
|
||||||
|
## READ BEFORE OPENING A PR
|
||||||
|
|
||||||
|
Thank you for contributing to hugo-PaperMod!
|
||||||
|
Please fill out the following questions to make it easier for us to review your
|
||||||
|
changes. You do not need to check all the boxes below.
|
||||||
|
|
||||||
|
**NOTE**: PaperMod does not have any external dependencies fetched from 3rd party
|
||||||
|
CDN servers. However we do have custom Head/Footer extender templates which you can use
|
||||||
|
to add those to your website.
|
||||||
|
https://github.com/adityatelange/hugo-PaperMod/wiki/FAQs#custom-head--footer
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
**What does this PR change? What problem does it solve?**
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Describe the changes and their purpose here, as detailed as and if needed.
|
||||||
|
|
||||||
|
Please do not add 2 unrelated changes in a single PR as it is difficult to track/revert those in future.
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
**Was the change discussed in an issue or in the Discussions before?**
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Link issues and relevant Discussions posts here.
|
||||||
|
|
||||||
|
If this PR resolves an issue on GitHub, use "Closes #1234" so that the issue
|
||||||
|
is closed automatically when this PR is merged.
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
## PR Checklist
|
||||||
|
|
||||||
|
- [ ] This change adds/updates translations and I have used the [template present here](https://github.com/adityatelange/hugo-PaperMod/wiki/Translations#want-to-add-your-language-).
|
||||||
|
- [ ] I have enabled [maintainer edits for this PR](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/allowing-changes-to-a-pull-request-branch-created-from-a-fork).
|
||||||
|
- [ ] I have verified that the code works as described/as intended.
|
||||||
|
- [ ] This change adds a Social Icon which has a permissive license to use it.
|
||||||
|
- [ ] This change **does not** include any CDN resources/links.
|
||||||
|
- [ ] This change **does not** include any unrelated scripts such as bash and python scripts.
|
||||||
|
- [ ] This change updates the overridden internal templates from HUGO's repository.
|
BIN
.github/assets/web-capture.jpeg
vendored
Normal file
BIN
.github/assets/web-capture.jpeg
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 74 KiB |
32
.github/workflows/build.yml
vendored
32
.github/workflows/build.yml
vendored
|
@ -1,32 +0,0 @@
|
||||||
name: Build
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
- exampleSite
|
|
||||||
workflow_dispatch:
|
|
||||||
# manual run
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Git checkout
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
ref: exampleSite
|
|
||||||
|
|
||||||
- name: Get Theme
|
|
||||||
run: git submodule update --init --recursive
|
|
||||||
|
|
||||||
- name: Update theme to Latest commit
|
|
||||||
run: git submodule update --remote --merge
|
|
||||||
|
|
||||||
- name: Setup hugo
|
|
||||||
uses: peaceiris/actions-hugo@v2
|
|
||||||
with:
|
|
||||||
hugo-version: 'latest'
|
|
||||||
|
|
||||||
- name: Build
|
|
||||||
run: hugo --buildDrafts --gc --verbose --minify
|
|
82
.github/workflows/gh-pages.yml
vendored
82
.github/workflows/gh-pages.yml
vendored
|
@ -1,42 +1,80 @@
|
||||||
name: Build GH-Pages
|
name: Deploy Hugo PaperMod Demo to Pages
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
paths-ignore:
|
paths-ignore:
|
||||||
- 'images/**'
|
- "images/**"
|
||||||
- 'LICENSE'
|
- "LICENSE"
|
||||||
- 'README.md'
|
- "README.md"
|
||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
- exampleSite
|
- exampleSite
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
# manual run
|
# manual run
|
||||||
|
inputs:
|
||||||
|
hugoVersion:
|
||||||
|
description: "Hugo Version"
|
||||||
|
required: false
|
||||||
|
default: "0.112.4"
|
||||||
|
|
||||||
|
# Allow one concurrent deployment
|
||||||
|
concurrency:
|
||||||
|
group: "pages"
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
# Default to bash
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: bash
|
||||||
|
|
||||||
|
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
pages: write
|
||||||
|
id-token: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
deploy:
|
# Build job
|
||||||
|
build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
HUGO_VERSION: "0.112.4"
|
||||||
steps:
|
steps:
|
||||||
- name: Git checkout
|
- name: Check version
|
||||||
uses: actions/checkout@v2
|
if: ${{ github.event.inputs.hugoVersion }}
|
||||||
|
run: export HUGO_VERSION="${{ github.event.inputs.hugoVersion }}"
|
||||||
|
- name: Install Hugo CLI
|
||||||
|
run: |
|
||||||
|
wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_${HUGO_VERSION}_linux-amd64.deb \
|
||||||
|
&& sudo dpkg -i ${{ runner.temp }}/hugo.deb
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
ref: exampleSite
|
ref: exampleSite
|
||||||
|
- name: Setup Pages
|
||||||
|
id: pages
|
||||||
|
uses: actions/configure-pages@v3
|
||||||
- name: Get Theme
|
- name: Get Theme
|
||||||
run: git submodule update --init --recursive
|
run: git submodule update --init --recursive
|
||||||
|
|
||||||
- name: Update theme to Latest commit
|
- name: Update theme to Latest commit
|
||||||
run: git submodule update --remote --merge
|
run: git submodule update --remote --merge
|
||||||
|
- name: Build with Hugo
|
||||||
- name: Setup hugo
|
run: |
|
||||||
uses: peaceiris/actions-hugo@v2
|
hugo \
|
||||||
|
--buildDrafts --gc --verbose \
|
||||||
|
--baseURL ${{ steps.pages.outputs.base_url }}
|
||||||
|
- name: Upload artifact
|
||||||
|
uses: actions/upload-pages-artifact@v2
|
||||||
with:
|
with:
|
||||||
hugo-version: 'latest'
|
path: ./public
|
||||||
|
# Deployment job
|
||||||
- name: Build
|
deploy:
|
||||||
run: hugo --buildDrafts --gc --verbose --minify
|
environment:
|
||||||
|
name: github-pages
|
||||||
- name: Deploy
|
url: ${{ steps.deployment.outputs.page_url }}
|
||||||
uses: peaceiris/actions-gh-pages@v3
|
runs-on: ubuntu-latest
|
||||||
with:
|
needs: build
|
||||||
github_token: ${{ secrets.TOKEN }}
|
steps:
|
||||||
publish_dir: ./public
|
- name: Deploy to GitHub Pages
|
||||||
|
id: deployment
|
||||||
|
uses: actions/deploy-pages@v2
|
||||||
|
|
2
LICENSE
2
LICENSE
|
@ -1,7 +1,7 @@
|
||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2020 nanxiaobei and adityatelange
|
Copyright (c) 2020 nanxiaobei and adityatelange
|
||||||
Copyright (c) 2021 adityatelange
|
Copyright (c) 2021-2023 adityatelange
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|
5
Makefile
Normal file
5
Makefile
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
run-example:
|
||||||
|
cd exampleSite && hugo server -D --gc -p 13131
|
||||||
|
|
||||||
|
chroma-css:
|
||||||
|
hugo gen chromastyles --style=dracula > assets/css/common/chroma.css
|
106
README.md
106
README.md
|
@ -1,87 +1,41 @@
|
||||||
# PaperMod | [Demo](https://adityatelange.github.io/hugo-PaperMod/)
|
## WonderMod (PaperMod fork - theme for Hugo)
|
||||||
|
|
||||||
☄️ Fast | ☁️ Fluent | 🌙 Smooth | 📱 Responsive
|
|
||||||
|
|
||||||
Hugo PaperMod is a theme based on [hugo-paper](https://github.com/nanxiaobei/hugo-paper).
|
|
||||||
The goal of this project is add more Features and customization to the og theme.
|
|
||||||
|
|
||||||
The [demo site](https://adityatelange.github.io/hugo-PaperMod/) includes a lot of documentation about Installation, Features with few more stuff. Make sure you visit it, to get the awesome hands-on experience and get known about the features ...
|
|
||||||
|
|
||||||
ExampleSite can be found here: [exampleSite](https://github.com/adityatelange/hugo-PaperMod/tree/exampleSite). Demo is built up with exampleSite as source.
|
|
||||||
|
|
||||||

|
|
||||||

|
|
||||||
[](https://themes.gohugo.io/hugo-papermod/)
|
|
||||||
[](https://sonarcloud.io/dashboard?id=adityatelange_hugo-PaperMod)
|
|
||||||

|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<kbd><img width=600px src="https://raw.githubusercontent.com/adityatelange/hugo-PaperMod/exampleSite/content/posts/papermod/papermod-features/images/homeinfo.jpg" alt="HomeInfo" /></kbd>
|
<img src="https://raw.githubusercontent.com/wonderfall/hugo-WonderMod/master/.github/assets/web-capture.jpeg" title="WonderMod" alt="WonderMod image">
|
||||||
<kbd><img width=153px src="https://i.ibb.co/LNgGcrt/mobileview.png" alt="HomeInfo" /></kbd>
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
---
|
### What is this?
|
||||||
|
WonderMod is a fork of a theme for [Hugo](https://gohugo.io/) called [PaperMod](https://github.com/adityatelange/hugo-PaperMod) (made by adityatelange), which is based on [Paper](https://github.com/nanxiaobei/hugo-paper/). Since PaperMod isn't interested in a few changes such as **removing inline JavaScript**, which I personally require to harden my websites, I decided to maintain my own fork (I didn't want to keep overwriting a bunch of files as a fork workflow is much cleaner). Don't expect a ton of changes, and unless you know me, you probably don't want to use WonderMod.
|
||||||
|
|
||||||
## Features/Mods 💥
|
When implementing new features, I try to do as much as I can with pure CSS code instead of adding new JavaScript code. I'd like to keep the JavaScript part minimal and that's why WonderMod should be totally usable when disabling JavaScript. WonderMod is also designed with strong CSP headers in mind: no inline JavaScript or style, no calls to third-parties.
|
||||||
|
|
||||||
- Uses Hugo's asset generator with pipelining, fingerprinting, bundling and minification by default.
|
**This fork is regularly synced with upstream changes from [PaperMod](https://github.com/adityatelange/hugo-PaperMod).** A merging workflow was chosen since rebasing WonderMod's changes every time could be less efficient. As such, commit history is a bit messy, but upstream changes will be merged on a best effort basis.
|
||||||
- 3 Modes:
|
|
||||||
- [Regular Mode.](https://github.com/adityatelange/hugo-PaperMod/wiki/Features#regular-mode-default-mode)
|
|
||||||
- [Home-Info Mode.](https://github.com/adityatelange/hugo-PaperMod/wiki/Features#home-info-mode)
|
|
||||||
- [Profile Mode.](https://github.com/adityatelange/hugo-PaperMod/wiki/Features#profile-mode)
|
|
||||||
- Table of Content Generation (newer implementation).
|
|
||||||
- Archive of posts.
|
|
||||||
- Social Icons (home-info and profile-mode)
|
|
||||||
- Social-Media Share buttons on post.
|
|
||||||
- Menu location indicator.
|
|
||||||
- Multilingual support. (with language selector)
|
|
||||||
- Taxonomies
|
|
||||||
- Cover image for each post (with Responsive image support).
|
|
||||||
- Light/Dark theme (automatic theme switch a/c to browser theme and theme-switch button).
|
|
||||||
- SEO Friendly.
|
|
||||||
- Muliple Author support.
|
|
||||||
- Search Page with Fuse.js
|
|
||||||
- Other Posts suggestion below a post
|
|
||||||
- BreadCrumb Navigation
|
|
||||||
- No webpack, nodejs and other depedencies required to edit the theme.
|
|
||||||
|
|
||||||
Read Wiki For More Details => **[PaperMod - Features](https://github.com/adityatelange/hugo-PaperMod/wiki/Features)**
|
### Main changes
|
||||||
|
Current "main" changes are as follows:
|
||||||
|
- Remove inline JavaScript
|
||||||
|
- Improved YouTube shortcode
|
||||||
|
- Built-in Chroma instead of client-side syntax highlighting with HLJS
|
||||||
|
- Responsive Table of Contents with side display support
|
||||||
|
- Responsive "hamburger" menu for mobile
|
||||||
|
- Simple reading progress bar
|
||||||
|
- Refactored RSS template (proper Atom feed)
|
||||||
|
- Bunch of CSS and other changes
|
||||||
|
|
||||||
---
|
### Credits
|
||||||
|
Additional credits:
|
||||||
|
- [PaperModX](https://github.com/reorx/hugo-PaperModX/) by reorx
|
||||||
|
|
||||||
## Install/Update 📥
|
### Configure
|
||||||
|
Most of the installation process and settings are shared with the original PaperMod, so check out [their documentation](https://github.com/adityatelange/hugo-PaperMod/wiki/Installation). One noticeable difference though is that in order to enable syntax highlighting, you have to add this to your `config.yml` :
|
||||||
|
|
||||||
Read Wiki For More Details => **[PaperMod - Installation](https://github.com/adityatelange/hugo-PaperMod/wiki/Installation)**
|
```
|
||||||
|
markup:
|
||||||
|
highlight:
|
||||||
|
style: dracula
|
||||||
|
noClasses: false
|
||||||
|
guessSyntax: true
|
||||||
|
```
|
||||||
|
|
||||||
---
|
See [Hugo documentation](https://gohugo.io/getting-started/configuration-markup#highlight) for more options.
|
||||||
|
*Note: for some reason, the `guessSyntax` doesn't actually work but is required. Please make your code fences explicit for the time being.*
|
||||||
## Social-Icons/Share-Icons 🖼️
|
|
||||||
|
|
||||||
Read Wiki For More Details => **[PaperMod-Icons](https://github.com/adityatelange/hugo-PaperMod/wiki/Icons)**
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## FAQs / How To's Guide 🙋
|
|
||||||
|
|
||||||
Read Wiki For More Details => **[PaperMod-FAQs](https://github.com/adityatelange/hugo-PaperMod/wiki/FAQs)**
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Release Changelog
|
|
||||||
|
|
||||||
Release ChangeLog has info about stuff added: **[Releases](https://github.com/adityatelange/hugo-PaperMod/releases)**
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## [LightHouse Report (100% ?)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fadityatelange.github.io%2Fhugo-PaperMod%2F)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Special Thanks 🌟
|
|
||||||
|
|
||||||
- [**Highlight.js**](https://github.com/highlightjs/highlight.js)
|
|
||||||
- [**Fuse.js**](https://github.com/krisk/fuse)
|
|
||||||
- [**Feather Icons**](https://github.com/feathericons/feather)
|
|
||||||
- **All Contributors and Supporters**
|
|
||||||
|
|
63
assets/css/an-old-hope.min.css
vendored
63
assets/css/an-old-hope.min.css
vendored
|
@ -1,63 +0,0 @@
|
||||||
.hljs-comment,
|
|
||||||
.hljs-quote {
|
|
||||||
color: #b6b18b
|
|
||||||
}
|
|
||||||
|
|
||||||
.hljs-deletion,
|
|
||||||
.hljs-name,
|
|
||||||
.hljs-regexp,
|
|
||||||
.hljs-selector-class,
|
|
||||||
.hljs-selector-id,
|
|
||||||
.hljs-tag,
|
|
||||||
.hljs-template-variable,
|
|
||||||
.hljs-variable {
|
|
||||||
color: #eb3c54
|
|
||||||
}
|
|
||||||
|
|
||||||
.hljs-built_in,
|
|
||||||
.hljs-builtin-name,
|
|
||||||
.hljs-link,
|
|
||||||
.hljs-literal,
|
|
||||||
.hljs-meta,
|
|
||||||
.hljs-number,
|
|
||||||
.hljs-params,
|
|
||||||
.hljs-type {
|
|
||||||
color: #e7ce56
|
|
||||||
}
|
|
||||||
|
|
||||||
.hljs-attribute {
|
|
||||||
color: #ee7c2b
|
|
||||||
}
|
|
||||||
|
|
||||||
.hljs-addition,
|
|
||||||
.hljs-bullet,
|
|
||||||
.hljs-string,
|
|
||||||
.hljs-symbol {
|
|
||||||
color: #4fb4d7
|
|
||||||
}
|
|
||||||
|
|
||||||
.hljs-section,
|
|
||||||
.hljs-title {
|
|
||||||
color: #78bb65
|
|
||||||
}
|
|
||||||
|
|
||||||
.hljs-keyword,
|
|
||||||
.hljs-selector-tag {
|
|
||||||
color: #b45ea4
|
|
||||||
}
|
|
||||||
|
|
||||||
.hljs {
|
|
||||||
display: block;
|
|
||||||
overflow-x: auto;
|
|
||||||
background: #1c1d21;
|
|
||||||
color: #c0c5ce;
|
|
||||||
padding: .5em
|
|
||||||
}
|
|
||||||
|
|
||||||
.hljs-emphasis {
|
|
||||||
font-style: italic
|
|
||||||
}
|
|
||||||
|
|
||||||
.hljs-strong {
|
|
||||||
font-weight: 700
|
|
||||||
}
|
|
|
@ -7,5 +7,5 @@
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
height: 80%;
|
height: 80%;
|
||||||
font-size: 160px;
|
font-size: 160px;
|
||||||
font-weight: 700
|
font-weight: 700;
|
||||||
}
|
}
|
|
@ -1,44 +1,44 @@
|
||||||
.archive-posts {
|
.archive-posts {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
font-size: 16px
|
font-size: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.archive-year {
|
.archive-year {
|
||||||
margin-top: 40px
|
margin-top: 40px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.archive-year:not(:last-of-type) {
|
.archive-year:not(:last-of-type) {
|
||||||
border-bottom: 2px solid var(--border)
|
border-bottom: 2px solid var(--border);
|
||||||
}
|
}
|
||||||
|
|
||||||
.archive-month {
|
.archive-month {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
padding: 10px 0
|
padding: 10px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.archive-month-header {
|
.archive-month-header {
|
||||||
margin: 25px 0;
|
margin: 25px 0;
|
||||||
width: 200px
|
width: 200px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.archive-month:not(:last-of-type) {
|
.archive-month:not(:last-of-type) {
|
||||||
border-bottom: 1px solid var(--border)
|
border-bottom: 1px solid var(--border);
|
||||||
}
|
}
|
||||||
|
|
||||||
.archive-entry {
|
.archive-entry {
|
||||||
position: relative;
|
position: relative;
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
margin: 10px 0
|
margin: 10px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.archive-entry-title {
|
.archive-entry-title {
|
||||||
margin: 5px 0;
|
margin: 5px 0;
|
||||||
font-weight: 400
|
font-weight: 400;
|
||||||
}
|
}
|
||||||
|
|
||||||
.archive-count,
|
.archive-count,
|
||||||
.archive-meta {
|
.archive-meta {
|
||||||
color: var(--secondary);
|
color: var(--secondary);
|
||||||
font-size: 14px
|
font-size: 14px;
|
||||||
}
|
}
|
82
assets/css/common/chroma.css
Normal file
82
assets/css/common/chroma.css
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
/* Background */ .chroma { color: #f8f8f2; background-color: #282a36 }
|
||||||
|
/* Other */ .chroma .x { }
|
||||||
|
/* Error */ .chroma .err { }
|
||||||
|
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
|
||||||
|
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 20px; 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: #ff79c6 }
|
||||||
|
/* KeywordConstant */ .chroma .kc { color: #ff79c6 }
|
||||||
|
/* KeywordDeclaration */ .chroma .kd { color: #8be9fd; font-style: italic }
|
||||||
|
/* KeywordNamespace */ .chroma .kn { color: #ff79c6 }
|
||||||
|
/* KeywordPseudo */ .chroma .kp { color: #ff79c6 }
|
||||||
|
/* KeywordReserved */ .chroma .kr { color: #ff79c6 }
|
||||||
|
/* KeywordType */ .chroma .kt { color: #8be9fd }
|
||||||
|
/* Name */ .chroma .n { }
|
||||||
|
/* NameAttribute */ .chroma .na { color: #50fa7b }
|
||||||
|
/* NameBuiltin */ .chroma .nb { color: #8be9fd; font-style: italic }
|
||||||
|
/* NameBuiltinPseudo */ .chroma .bp { }
|
||||||
|
/* NameClass */ .chroma .nc { color: #50fa7b }
|
||||||
|
/* NameConstant */ .chroma .no { }
|
||||||
|
/* NameDecorator */ .chroma .nd { }
|
||||||
|
/* NameEntity */ .chroma .ni { }
|
||||||
|
/* NameException */ .chroma .ne { }
|
||||||
|
/* NameFunction */ .chroma .nf { color: #50fa7b }
|
||||||
|
/* NameFunctionMagic */ .chroma .fm { }
|
||||||
|
/* NameLabel */ .chroma .nl { color: #8be9fd; font-style: italic }
|
||||||
|
/* NameNamespace */ .chroma .nn { }
|
||||||
|
/* NameOther */ .chroma .nx { }
|
||||||
|
/* NameProperty */ .chroma .py { }
|
||||||
|
/* NameTag */ .chroma .nt { color: #ff79c6 }
|
||||||
|
/* NameVariable */ .chroma .nv { color: #8be9fd; font-style: italic }
|
||||||
|
/* NameVariableClass */ .chroma .vc { color: #8be9fd; font-style: italic }
|
||||||
|
/* NameVariableGlobal */ .chroma .vg { color: #8be9fd; font-style: italic }
|
||||||
|
/* NameVariableInstance */ .chroma .vi { color: #8be9fd; font-style: italic }
|
||||||
|
/* NameVariableMagic */ .chroma .vm { }
|
||||||
|
/* Literal */ .chroma .l { }
|
||||||
|
/* LiteralDate */ .chroma .ld { }
|
||||||
|
/* LiteralString */ .chroma .s { color: #f1fa8c }
|
||||||
|
/* LiteralStringAffix */ .chroma .sa { color: #f1fa8c }
|
||||||
|
/* LiteralStringBacktick */ .chroma .sb { color: #f1fa8c }
|
||||||
|
/* LiteralStringChar */ .chroma .sc { color: #f1fa8c }
|
||||||
|
/* LiteralStringDelimiter */ .chroma .dl { color: #f1fa8c }
|
||||||
|
/* LiteralStringDoc */ .chroma .sd { color: #f1fa8c }
|
||||||
|
/* LiteralStringDouble */ .chroma .s2 { color: #f1fa8c }
|
||||||
|
/* LiteralStringEscape */ .chroma .se { color: #f1fa8c }
|
||||||
|
/* LiteralStringHeredoc */ .chroma .sh { color: #f1fa8c }
|
||||||
|
/* LiteralStringInterpol */ .chroma .si { color: #f1fa8c }
|
||||||
|
/* LiteralStringOther */ .chroma .sx { color: #f1fa8c }
|
||||||
|
/* LiteralStringRegex */ .chroma .sr { color: #f1fa8c }
|
||||||
|
/* LiteralStringSingle */ .chroma .s1 { color: #f1fa8c }
|
||||||
|
/* LiteralStringSymbol */ .chroma .ss { color: #f1fa8c }
|
||||||
|
/* LiteralNumber */ .chroma .m { color: #bd93f9 }
|
||||||
|
/* LiteralNumberBin */ .chroma .mb { color: #bd93f9 }
|
||||||
|
/* LiteralNumberFloat */ .chroma .mf { color: #bd93f9 }
|
||||||
|
/* LiteralNumberHex */ .chroma .mh { color: #bd93f9 }
|
||||||
|
/* LiteralNumberInteger */ .chroma .mi { color: #bd93f9 }
|
||||||
|
/* LiteralNumberIntegerLong */ .chroma .il { color: #bd93f9 }
|
||||||
|
/* LiteralNumberOct */ .chroma .mo { color: #bd93f9 }
|
||||||
|
/* Operator */ .chroma .o { color: #ff79c6 }
|
||||||
|
/* OperatorWord */ .chroma .ow { color: #ff79c6 }
|
||||||
|
/* Punctuation */ .chroma .p { }
|
||||||
|
/* Comment */ .chroma .c { color: #6272a4 }
|
||||||
|
/* CommentHashbang */ .chroma .ch { color: #6272a4 }
|
||||||
|
/* CommentMultiline */ .chroma .cm { color: #6272a4 }
|
||||||
|
/* CommentSingle */ .chroma .c1 { color: #6272a4 }
|
||||||
|
/* CommentSpecial */ .chroma .cs { color: #6272a4 }
|
||||||
|
/* CommentPreproc */ .chroma .cp { color: #ff79c6 }
|
||||||
|
/* CommentPreprocFile */ .chroma .cpf { color: #ff79c6 }
|
||||||
|
/* Generic */ .chroma .g { }
|
||||||
|
/* GenericDeleted */ .chroma .gd { color: #ff5555 }
|
||||||
|
/* GenericEmph */ .chroma .ge { text-decoration: underline }
|
||||||
|
/* GenericError */ .chroma .gr { }
|
||||||
|
/* GenericHeading */ .chroma .gh { font-weight: bold }
|
||||||
|
/* GenericInserted */ .chroma .gi { color: #50fa7b; font-weight: bold }
|
||||||
|
/* GenericOutput */ .chroma .go { color: #44475a }
|
||||||
|
/* GenericPrompt */ .chroma .gp { }
|
||||||
|
/* GenericStrong */ .chroma .gs { }
|
||||||
|
/* GenericSubheading */ .chroma .gu { font-weight: bold }
|
||||||
|
/* GenericTraceback */ .chroma .gt { }
|
||||||
|
/* GenericUnderline */ .chroma .gl { text-decoration: underline }
|
||||||
|
/* TextWhitespace */ .chroma .w { }
|
|
@ -1,7 +1,7 @@
|
||||||
.footer,
|
.footer,
|
||||||
.top-link {
|
.top-link {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
color: var(--secondary)
|
color: var(--secondary);
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer {
|
.footer {
|
||||||
|
@ -9,21 +9,25 @@
|
||||||
margin: auto;
|
margin: auto;
|
||||||
padding: calc((var(--footer-height) - var(--gap)) / 2) var(--gap);
|
padding: calc((var(--footer-height) - var(--gap)) / 2) var(--gap);
|
||||||
text-align: center;
|
text-align: center;
|
||||||
line-height: 24px
|
line-height: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer span {
|
.footer span {
|
||||||
margin-inline-start: 1px;
|
margin-inline-start: 1px;
|
||||||
margin-inline-end: 1px
|
margin-inline-end: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer span:last-child {
|
||||||
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer a {
|
.footer a {
|
||||||
color: inherit;
|
color: inherit;
|
||||||
border-bottom: 1px solid var(--secondary)
|
border-bottom: 1px solid var(--secondary);
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer a:hover {
|
.footer a:hover {
|
||||||
border-bottom: 1px solid var(--primary)
|
border-bottom: 1px solid var(--primary);
|
||||||
}
|
}
|
||||||
|
|
||||||
.top-link {
|
.top-link {
|
||||||
|
@ -37,7 +41,7 @@
|
||||||
height: 42px;
|
height: 42px;
|
||||||
padding: 12px;
|
padding: 12px;
|
||||||
border-radius: 64px;
|
border-radius: 64px;
|
||||||
transition: visibility .5s, opacity .8s linear
|
transition: visibility 0.5s, opacity 0.8s linear;
|
||||||
}
|
}
|
||||||
|
|
||||||
.top-link,
|
.top-link,
|
||||||
|
@ -47,10 +51,10 @@
|
||||||
|
|
||||||
.footer a:hover,
|
.footer a:hover,
|
||||||
.top-link:hover {
|
.top-link:hover {
|
||||||
color: var(--primary)
|
color: var(--primary);
|
||||||
}
|
}
|
||||||
|
|
||||||
.top-link:focus,
|
.top-link:focus,
|
||||||
#theme-toggle:focus {
|
#theme-toggle:focus {
|
||||||
outline: 0
|
outline: 0;
|
||||||
}
|
}
|
182
assets/css/common/header.css
Normal file
182
assets/css/common/header.css
Normal file
|
@ -0,0 +1,182 @@
|
||||||
|
.nav {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: space-between;
|
||||||
|
max-width: calc(var(--nav-width) + var(--gap) * 2);
|
||||||
|
margin-inline-start: auto;
|
||||||
|
margin-inline-end: auto;
|
||||||
|
line-height: var(--header-height);
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav a {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo,
|
||||||
|
#menu {
|
||||||
|
display: flex;
|
||||||
|
margin: auto var(--gap);
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo {
|
||||||
|
flex-wrap: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo a {
|
||||||
|
font-size: 24px;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo a img, .logo a svg {
|
||||||
|
display: inline;
|
||||||
|
vertical-align: middle;
|
||||||
|
pointer-events: none;
|
||||||
|
transform: translate(0, -10%);
|
||||||
|
border-radius: 6px;
|
||||||
|
margin-inline-end: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
button#theme-toggle {
|
||||||
|
font-size: 26px;
|
||||||
|
margin: auto 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.dark #moon {
|
||||||
|
vertical-align: middle;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
body:not(.dark) #sun {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menu {
|
||||||
|
list-style: none;
|
||||||
|
word-break: keep-all;
|
||||||
|
overflow-x: auto;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menu li + li {
|
||||||
|
margin-inline-start: var(--gap);
|
||||||
|
}
|
||||||
|
|
||||||
|
#hamburger-input {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#hamburger-menu {
|
||||||
|
display: none;
|
||||||
|
width: 18px;
|
||||||
|
height: 18px;
|
||||||
|
margin: auto;
|
||||||
|
margin-right: 13px;
|
||||||
|
margin-left: 13px;
|
||||||
|
background: linear-gradient(
|
||||||
|
var(--primary), var(--primary) 20%,
|
||||||
|
#ffffff00 20%, #ffffff00 40%,
|
||||||
|
var(--primary) 40%, var(--primary) 60%,
|
||||||
|
#ffffff00 60%, #ffffff00 80%,
|
||||||
|
var(--primary) 80%, var(--primary) 100%
|
||||||
|
);
|
||||||
|
z-index: 10001;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 900px) {
|
||||||
|
#menu {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#hamburger-menu {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
#hamburger-input:checked ~ #hamburger-menu {
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#hamburger-input:checked ~ #hamburger-menu:after {
|
||||||
|
content: "\00d7";
|
||||||
|
position: fixed;
|
||||||
|
font-size: 28px;
|
||||||
|
line-height: 0;
|
||||||
|
top: 28px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#hamburger-input:checked ~ .overlay {
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
#hamburger-input:checked ~ #menu {
|
||||||
|
display: block;
|
||||||
|
width: 80%;
|
||||||
|
margin: auto;
|
||||||
|
position: fixed;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
margin-right: -50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
z-index: 10002;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menu li {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menu li + li {
|
||||||
|
margin-inline-start: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.overlay {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
visibility: hidden;
|
||||||
|
overflow: hidden;
|
||||||
|
background: var(--theme);
|
||||||
|
z-index: 10000;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menu a {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menu .active {
|
||||||
|
font-weight: 500;
|
||||||
|
border-bottom: 2px solid currentColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lang-switch li,
|
||||||
|
.lang-switch ul,
|
||||||
|
.logo-switches {
|
||||||
|
display: inline-flex;
|
||||||
|
margin: auto 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lang-switch {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lang-switch a {
|
||||||
|
margin: auto 3px;
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo-switches {
|
||||||
|
flex-wrap: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
#progressBar {
|
||||||
|
--scrollAmount: 0%;
|
||||||
|
width: var(--scrollAmount);
|
||||||
|
height: 3px;
|
||||||
|
background-color: #1e8cdb;
|
||||||
|
position: fixed;
|
||||||
|
z-index: 9999;
|
||||||
|
}
|
66
assets/css/common/main.css
Normal file
66
assets/css/common/main.css
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
.main {
|
||||||
|
position: relative;
|
||||||
|
min-height: calc(100vh - var(--header-height) - var(--footer-height));
|
||||||
|
max-width: calc(var(--main-width) + var(--gap) * 2);
|
||||||
|
margin: auto;
|
||||||
|
padding: var(--gap);
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-header h1 {
|
||||||
|
font-size: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagination {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagination a {
|
||||||
|
color: var(--theme);
|
||||||
|
font-size: 13px;
|
||||||
|
line-height: 36px;
|
||||||
|
background: var(--primary);
|
||||||
|
border-radius: calc(36px / 2);
|
||||||
|
padding: 0 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagination .next {
|
||||||
|
margin-inline-start: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.social-icons a {
|
||||||
|
display: inline-flex;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.social-icons a svg {
|
||||||
|
height: 26px;
|
||||||
|
width: 26px;
|
||||||
|
}
|
||||||
|
|
||||||
|
code {
|
||||||
|
direction: ltr;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.highlight,
|
||||||
|
pre {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.copy-code {
|
||||||
|
display: none;
|
||||||
|
position: absolute;
|
||||||
|
top: 4px;
|
||||||
|
right: 4px;
|
||||||
|
color: rgba(255, 255, 255, 0.8);
|
||||||
|
background: rgba(78, 78, 78, 0.8);
|
||||||
|
border-radius: var(--radius);
|
||||||
|
padding: 0 5px;
|
||||||
|
font-size: 14px;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.highlight:hover .copy-code,
|
||||||
|
pre:hover .copy-code {
|
||||||
|
display: block;
|
||||||
|
}
|
|
@ -3,34 +3,34 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
min-height: 320px;
|
min-height: 220px;
|
||||||
margin: var(--gap) 0 calc(var(--gap) * 2) 0
|
margin: var(--gap) 0 calc(var(--gap) * 2) 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.first-entry .entry-header {
|
.first-entry .entry-header {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
display: -webkit-box;
|
display: -webkit-box;
|
||||||
-webkit-box-orient: vertical;
|
-webkit-box-orient: vertical;
|
||||||
-webkit-line-clamp: 3
|
-webkit-line-clamp: 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
.first-entry .entry-header h1 {
|
.first-entry .entry-header h1 {
|
||||||
font-size: 34px;
|
font-size: 34px;
|
||||||
line-height: 1.3
|
line-height: 1.4;
|
||||||
}
|
}
|
||||||
|
|
||||||
.first-entry .entry-content {
|
.first-entry .entry-content {
|
||||||
margin: 14px 0;
|
margin: 14px 0;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
-webkit-line-clamp: 3
|
-webkit-line-clamp: 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
.first-entry .entry-footer {
|
.first-entry .entry-footer {
|
||||||
font-size: 14px
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.home-info .entry-content {
|
.home-info .entry-content {
|
||||||
-webkit-line-clamp: unset
|
-webkit-line-clamp: unset;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-entry {
|
.post-entry {
|
||||||
|
@ -39,20 +39,21 @@
|
||||||
padding: var(--gap);
|
padding: var(--gap);
|
||||||
background: var(--entry);
|
background: var(--entry);
|
||||||
border-radius: var(--radius);
|
border-radius: var(--radius);
|
||||||
transition: transform .1s;
|
transition: transform 0.1s;
|
||||||
border: 1px solid var(--border);
|
border: 1px solid var(--border);
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-entry:active {
|
.post-entry:active {
|
||||||
transform: scale(.96)
|
transform: scale(0.96);
|
||||||
}
|
}
|
||||||
|
|
||||||
.tag-entry .entry-cover {
|
.tag-entry .entry-cover {
|
||||||
display: none
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.entry-header h2 {
|
.entry-header h2 {
|
||||||
font-size: 24px
|
font-size: 24px;
|
||||||
|
line-height: 1.3;
|
||||||
}
|
}
|
||||||
|
|
||||||
.entry-content {
|
.entry-content {
|
||||||
|
@ -63,12 +64,12 @@
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
display: -webkit-box;
|
display: -webkit-box;
|
||||||
-webkit-box-orient: vertical;
|
-webkit-box-orient: vertical;
|
||||||
-webkit-line-clamp: 2
|
-webkit-line-clamp: 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
.entry-footer {
|
.entry-footer {
|
||||||
color: var(--secondary);
|
color: var(--secondary);
|
||||||
font-size: 13px
|
font-size: 13px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.entry-link {
|
.entry-link {
|
||||||
|
@ -76,31 +77,32 @@
|
||||||
left: 0;
|
left: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
top: 0;
|
top: 0;
|
||||||
bottom: 0
|
bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.entry-cover,
|
.entry-hint {
|
||||||
.entry-isdraft {
|
color: var(--secondary);
|
||||||
font-size: 14px;
|
|
||||||
color: var(--secondary)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.entry-isdraft {
|
.entry-hint-parent {
|
||||||
display: inline
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
}
|
}
|
||||||
|
|
||||||
.entry-cover {
|
.entry-cover {
|
||||||
|
font-size: 14px;
|
||||||
margin-bottom: var(--gap);
|
margin-bottom: var(--gap);
|
||||||
text-align: center
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.entry-cover img {
|
.entry-cover img {
|
||||||
border-radius: var(--radius);
|
border-radius: var(--radius);
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
width: 100%
|
width: 100%;
|
||||||
|
height: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.entry-cover a {
|
.entry-cover a {
|
||||||
color: var(--secondary);
|
color: var(--secondary);
|
||||||
box-shadow: 0 1px 0 var(--primary)
|
box-shadow: 0 1px 0 var(--primary);
|
||||||
}
|
}
|
|
@ -1,11 +1,11 @@
|
||||||
.page-header,
|
.page-header,
|
||||||
.post-header {
|
.post-header {
|
||||||
margin: 24px auto var(--content-gap) auto
|
margin: 24px auto var(--content-gap) auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-title {
|
.post-title {
|
||||||
margin-bottom: 2px;
|
margin-bottom: 2px;
|
||||||
font-size: 40px
|
font-size: 40px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-description {
|
.post-description {
|
||||||
|
@ -18,14 +18,14 @@
|
||||||
color: var(--secondary);
|
color: var(--secondary);
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap
|
flex-wrap: wrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-meta .i18n_list li {
|
.post-meta .i18n_list li {
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
list-style: none;
|
list-style: none;
|
||||||
margin: auto 3px;
|
margin: auto 3px;
|
||||||
box-shadow: 0 1px 0 var(--secondary)
|
box-shadow: 0 1px 0 var(--secondary);
|
||||||
}
|
}
|
||||||
|
|
||||||
.breadcrumbs a {
|
.breadcrumbs a {
|
||||||
|
@ -33,228 +33,230 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content {
|
.post-content {
|
||||||
color: var(--content)
|
color: var(--content);
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content h3,
|
.post-content h3,
|
||||||
.post-content h4,
|
.post-content h4,
|
||||||
.post-content h5,
|
.post-content h5,
|
||||||
.post-content h6 {
|
.post-content h6 {
|
||||||
margin: 24px 0 16px
|
margin: 24px 0 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content h1 {
|
.post-content h1 {
|
||||||
margin: 40px auto 32px;
|
margin: 40px auto 32px;
|
||||||
font-size: 40px
|
font-size: 40px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content h2 {
|
.post-content h2 {
|
||||||
margin: 32px auto 24px;
|
margin: 32px auto 24px;
|
||||||
font-size: 32px
|
font-size: 32px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content h3 {
|
.post-content h3 {
|
||||||
font-size: 24px
|
font-size: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content h4 {
|
.post-content h4 {
|
||||||
font-size: 16px
|
font-size: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content h5 {
|
.post-content h5 {
|
||||||
font-size: 14px
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content h6 {
|
.post-content h6 {
|
||||||
font-size: 12px
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content a,
|
.post-content a,
|
||||||
.toc a:hover {
|
.toc a:hover {
|
||||||
box-shadow: 0 1px 0
|
border-bottom: 1px solid var(--primary);
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content a code {
|
.post-content a code {
|
||||||
margin: auto 0;
|
margin: auto 0;
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
box-shadow: 0 -1px 0 var(--primary) inset
|
box-shadow: 0 -1px 0 var(--primary) inset;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content del {
|
.post-content del {
|
||||||
text-decoration: none;
|
text-decoration: line-through;
|
||||||
background: linear-gradient(to right, var(--primary) 100%, transparent 0) 0 50%/1px 1px repeat-x
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content dl,
|
.post-content dl,
|
||||||
.post-content ol,
|
.post-content ol,
|
||||||
.post-content p,
|
.post-content p,
|
||||||
|
.post-content figure,
|
||||||
.post-content ul {
|
.post-content ul {
|
||||||
margin-bottom: var(--content-gap)
|
margin-bottom: var(--content-gap);
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content ol,
|
.post-content ol,
|
||||||
.post-content ul {
|
.post-content ul {
|
||||||
padding-inline-start: 20px
|
padding-inline-start: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content li {
|
.post-content li {
|
||||||
margin-top: 5px
|
margin-top: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content li p {
|
.post-content li p {
|
||||||
margin-bottom: 0
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content dl {
|
.post-content dl {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
margin: 0
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content dt {
|
.post-content dt {
|
||||||
width: 25%;
|
width: 25%;
|
||||||
font-weight: 700
|
font-weight: 700;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content dd {
|
.post-content dd {
|
||||||
width: 75%;
|
width: 75%;
|
||||||
margin-inline-start: 0;
|
margin-inline-start: 0;
|
||||||
padding-inline-start: 10px
|
padding-inline-start: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content dd~dd,
|
.post-content dd ~ dd,
|
||||||
.post-content dt~dt {
|
.post-content dt ~ dt {
|
||||||
margin-top: 10px
|
margin-top: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content table {
|
.post-content table {
|
||||||
margin-bottom: 32px
|
margin-bottom: var(--content-gap);
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content table th,
|
.post-content table th,
|
||||||
.post-content table:not(.highlighttable, .highlight table, .gist .highlight) td {
|
.post-content table:not(.highlighttable, .highlight table, .gist .highlight) td {
|
||||||
min-width: 80px;
|
min-width: 80px;
|
||||||
padding: 12px 8px;
|
padding: 8px 5px;
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
border-bottom: 1px solid var(--border)
|
border-bottom: 1px solid var(--border);
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content table th {
|
.post-content table th {
|
||||||
font-size: 14px;
|
text-align: start;
|
||||||
text-align: start
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content table:not(.highlighttable) td code:only-child {
|
.post-content table:not(.highlighttable) td code:only-child {
|
||||||
margin: auto 0
|
margin: auto 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content .highlight table {
|
.post-content .highlight table {
|
||||||
border-radius: var(--radius)
|
border-radius: var(--radius);
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content .highlight:not(table),
|
.post-content .highlight:not(table) {
|
||||||
.post-content pre {
|
|
||||||
margin: 10px auto;
|
margin: 10px auto;
|
||||||
background: var(--hljs-bg) !important;
|
border-radius: var(--radius);
|
||||||
border-radius: var(--radius)
|
direction: ltr;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content li>.highlight {
|
.post-content li > .highlight {
|
||||||
margin-inline-end: 0
|
margin-inline-end: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content ul pre {
|
.post-content ul pre {
|
||||||
margin-inline-start: calc(var(--gap) * -2)
|
margin-inline-start: calc(var(--gap) * -2);
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content .highlight pre {
|
.post-content .highlight pre {
|
||||||
margin: 0
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content .highlighttable {
|
.post-content .highlighttable {
|
||||||
table-layout: fixed
|
table-layout: fixed;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content .highlighttable td:first-child {
|
.post-content .highlighttable td:first-child {
|
||||||
width: 40px
|
width: 40px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content .highlighttable td .linenodiv {
|
.post-content .highlighttable td .linenodiv {
|
||||||
padding-inline-end: 0 !important
|
padding-inline-end: 0 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content .highlighttable td .highlight,
|
.post-content .highlighttable td .highlight,
|
||||||
.post-content .highlighttable td .linenodiv pre {
|
.post-content .highlighttable td .linenodiv pre {
|
||||||
margin-bottom: 0
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content .highlighttable td .highlight pre code::-webkit-scrollbar {
|
.post-content .highlighttable td .highlight pre code::-webkit-scrollbar {
|
||||||
display: none
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content .highlight span {
|
/* code block */
|
||||||
background: 0 0 !important
|
.post-content .chroma {
|
||||||
|
border-radius: var(--radius);
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content code {
|
.post-content code {
|
||||||
|
/* inline code */
|
||||||
|
background-color: var(--tertiary);
|
||||||
margin: auto 4px;
|
margin: auto 4px;
|
||||||
padding: 4px 6px;
|
padding: 4px 6px;
|
||||||
font-family: Menlo, Monaco, 'Courier New', Courier, monospace;
|
font-size: 0.78em;
|
||||||
font-size: .78em;
|
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
background: var(--code-bg);
|
border-radius: 4px;
|
||||||
border-radius: 2px
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content pre code {
|
.post-content pre code {
|
||||||
|
/* reset inline code */
|
||||||
|
background-color: unset;
|
||||||
display: block;
|
display: block;
|
||||||
margin: auto 0;
|
margin: 20px;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
color: rgba(255, 255, 255, .8);
|
|
||||||
background: 0 0;
|
|
||||||
border-radius: 0;
|
|
||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
word-break: break-all;
|
word-break: break-all;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.post-content .chroma code {
|
||||||
|
background-color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
.post-content blockquote {
|
.post-content blockquote {
|
||||||
margin: 20px 0;
|
margin: 20px 0;
|
||||||
padding: 0 14px;
|
padding: 0 14px;
|
||||||
border-inline-start: 3px solid var(--primary)
|
border-inline-start: 3px solid var(--primary);
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content hr {
|
.post-content hr {
|
||||||
margin: 30px 0;
|
margin: 30px 0;
|
||||||
height: 2px;
|
height: 2px;
|
||||||
background: var(--tertiary);
|
background: var(--tertiary);
|
||||||
border-top: 0;
|
border: 0;
|
||||||
border-bottom: 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content iframe {
|
.post-content iframe {
|
||||||
max-width: 100%
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content img {
|
.post-content img {
|
||||||
border-radius: 4px
|
border-radius: 4px;
|
||||||
|
margin: 1rem 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content img[src*='#center'] {
|
.post-content img[src*="#center"] {
|
||||||
margin: auto
|
margin: 1rem auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content figure.align-center {
|
.post-content figure.align-center {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content figure>figcaption {
|
.post-content figure > figcaption {
|
||||||
color: var(--primary);
|
color: var(--primary);
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
margin: 8px 0 16px;
|
margin: 8px 0 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-content figure>figcaption>p {
|
.post-content figure > figcaption > p {
|
||||||
color: var(--secondary);
|
color: var(--secondary);
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
|
@ -263,9 +265,21 @@
|
||||||
.toc {
|
.toc {
|
||||||
margin: 0 2px 40px 2px;
|
margin: 0 2px 40px 2px;
|
||||||
border: 1px solid var(--border);
|
border: 1px solid var(--border);
|
||||||
background: var(--code-bg);
|
background: var(--tertiary);
|
||||||
border-radius: var(--radius);
|
border-radius: var(--radius);
|
||||||
padding: .4em
|
padding: 0.4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 1400px) {
|
||||||
|
.toc.side {
|
||||||
|
position: fixed;
|
||||||
|
right: 30px;
|
||||||
|
top: 100px;
|
||||||
|
width: 300px;
|
||||||
|
font-size: .9em;
|
||||||
|
max-height: calc(100% - 150px);
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.dark .toc {
|
.dark .toc {
|
||||||
|
@ -273,90 +287,77 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.toc details summary {
|
.toc details summary {
|
||||||
cursor: zoom-in;
|
cursor: pointer;
|
||||||
margin-inline-start: 20px
|
margin-inline-start: 20px;
|
||||||
}
|
|
||||||
|
|
||||||
.toc details[open] summary {
|
|
||||||
cursor: zoom-out
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.toc .details {
|
.toc .details {
|
||||||
display: inline;
|
display: inline;
|
||||||
font-weight: 500
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
|
|
||||||
.toc .inner {
|
.toc .inner {
|
||||||
margin: 0 20px;
|
margin: 0 20px;
|
||||||
padding: 10px 20px
|
padding: 10px 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.toc li ul {
|
.toc li ul {
|
||||||
margin-inline-start: var(--gap)
|
margin-inline-start: var(--gap);
|
||||||
}
|
}
|
||||||
|
|
||||||
.toc summary:focus {
|
.toc summary:focus {
|
||||||
outline: 0
|
outline: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-footer {
|
.post-footer {
|
||||||
margin-top: 56px
|
margin-top: 56px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-footer>* {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-tags {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-tags li {
|
.post-tags li {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin-inline-end: 3px;
|
|
||||||
margin-bottom: 5px
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-tags a,
|
.post-tags a,
|
||||||
.share-buttons,
|
|
||||||
.paginav {
|
.paginav {
|
||||||
border-radius: var(--radius);
|
border-radius: var(--radius);
|
||||||
background: var(--code-bg);
|
background: var(--code-bg);
|
||||||
border: 1px solid var(--border)
|
border: 1px solid var(--border);
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-tags a {
|
.post-tags a {
|
||||||
display: block;
|
display: block;
|
||||||
padding-inline-start: 14px;
|
padding: 0 14px;
|
||||||
padding-inline-end: 14px;
|
|
||||||
color: var(--secondary);
|
color: var(--secondary);
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
line-height: 34px;
|
line-height: 34px;
|
||||||
background: var(--code-bg)
|
background: var(--tertiary);
|
||||||
}
|
|
||||||
|
|
||||||
.post-tags a:hover,
|
|
||||||
.paginav a:hover {
|
|
||||||
background: var(--border)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.share-buttons {
|
.share-buttons {
|
||||||
margin: 14px 0;
|
padding: 10px;
|
||||||
padding-inline-start: var(--radius);
|
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
overflow-x: auto
|
overflow-x: auto;
|
||||||
|
gap: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.share-buttons li,
|
||||||
.share-buttons a {
|
.share-buttons a {
|
||||||
margin-top: 10px
|
display: inline-flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
.share-buttons a:not(:last-of-type) {
|
.share-buttons a:not(:last-of-type) {
|
||||||
margin-inline-end: 12px
|
margin-inline-end: 12px;
|
||||||
}
|
|
||||||
|
|
||||||
.share-buttons a svg {
|
|
||||||
height: 30px;
|
|
||||||
width: 30px;
|
|
||||||
fill: currentColor;
|
|
||||||
transition: transform .1s
|
|
||||||
}
|
|
||||||
|
|
||||||
.share-buttons svg:active {
|
|
||||||
transform: scale(.96)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
h1:hover .anchor,
|
h1:hover .anchor,
|
||||||
|
@ -365,39 +366,20 @@ h3:hover .anchor,
|
||||||
h4:hover .anchor,
|
h4:hover .anchor,
|
||||||
h5:hover .anchor,
|
h5:hover .anchor,
|
||||||
h6:hover .anchor {
|
h6:hover .anchor {
|
||||||
|
border-bottom: none;
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
color: var(--secondary);
|
color: var(--secondary);
|
||||||
margin-inline-start: 8px;
|
margin-inline-start: 8px;
|
||||||
font-weight: 500
|
font-weight: 500;
|
||||||
}
|
user-select: none;
|
||||||
|
|
||||||
.post-content :not(table) ::-webkit-scrollbar-thumb {
|
|
||||||
border: 2px solid var(--hljs-bg);
|
|
||||||
background: rgba(255, 255, 255, 0.32)
|
|
||||||
}
|
|
||||||
|
|
||||||
.post-content :not(table) ::-webkit-scrollbar-thumb:hover {
|
|
||||||
background: rgba(255, 255, 255, 0.56)
|
|
||||||
}
|
|
||||||
|
|
||||||
.gist table::-webkit-scrollbar-thumb {
|
|
||||||
border: 2px solid rgb(255, 255, 255);
|
|
||||||
background: rgba(0, 0, 0, 0.32)
|
|
||||||
}
|
|
||||||
|
|
||||||
.gist table::-webkit-scrollbar-thumb:hover {
|
|
||||||
background: rgba(0, 0, 0, 0.56)
|
|
||||||
}
|
|
||||||
|
|
||||||
.post-content table::-webkit-scrollbar-thumb {
|
|
||||||
border-width: 2px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.paginav {
|
.paginav {
|
||||||
margin: 10px 0;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
line-height: 30px;
|
line-height: 30px;
|
||||||
border-radius: var(--radius);
|
border-radius: var(--radius);
|
||||||
|
background: none;
|
||||||
|
border: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.paginav a {
|
.paginav a {
|
||||||
|
@ -429,4 +411,13 @@ h6:hover .anchor {
|
||||||
|
|
||||||
[dir="rtl"] .paginav .next {
|
[dir="rtl"] .paginav .next {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
h1>a>svg {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
img.in-text {
|
||||||
|
display: inline;
|
||||||
|
margin: auto;
|
||||||
|
}
|
|
@ -1,32 +1,29 @@
|
||||||
.buttons,
|
.buttons,
|
||||||
.main .profile {
|
.main .profile {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.main .profile {
|
.main .profile {
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
align-items: center;
|
align-items: center;
|
||||||
height: 80%;
|
min-height: calc(100vh - var(--header-height) - var(--footer-height) - (var(--gap) * 2));
|
||||||
text-align: center
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.profile .profile_inner h1 {
|
.profile .profile_inner {
|
||||||
padding: 12px 0
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
gap: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.profile img {
|
.profile img {
|
||||||
display: inline-table;
|
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
pointer-events: none
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.buttons {
|
.buttons {
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
max-width: 400px;
|
max-width: 400px;
|
||||||
margin: 0 auto
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.button {
|
.button {
|
||||||
|
@ -34,13 +31,13 @@
|
||||||
border-radius: var(--radius);
|
border-radius: var(--radius);
|
||||||
margin: 8px;
|
margin: 8px;
|
||||||
padding: 6px;
|
padding: 6px;
|
||||||
transition: transform .1s
|
transition: transform 0.1s;
|
||||||
}
|
}
|
||||||
|
|
||||||
.button-inner {
|
.button-inner {
|
||||||
padding: 0 8px
|
padding: 0 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.button:active {
|
.button:active {
|
||||||
transform: scale(.96)
|
transform: scale(0.96);
|
||||||
}
|
}
|
|
@ -26,8 +26,8 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
#searchResults li:active {
|
#searchResults li:active {
|
||||||
transition: transform .1s;
|
transition: transform 0.1s;
|
||||||
transform: scale(.98);
|
transform: scale(0.98);
|
||||||
}
|
}
|
||||||
|
|
||||||
#searchResults a {
|
#searchResults a {
|
||||||
|
@ -40,6 +40,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
#searchResults .focus {
|
#searchResults .focus {
|
||||||
transform: scale(.98);
|
transform: scale(0.98);
|
||||||
border: 2px solid var(--tertiary)
|
border: 2px solid var(--tertiary);
|
||||||
}
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
.terms-tags li {
|
.terms-tags li {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin: 10px;
|
margin: 10px;
|
||||||
font-weight: 500
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
|
|
||||||
.terms-tags a {
|
.terms-tags a {
|
||||||
|
@ -9,10 +9,10 @@
|
||||||
padding: 3px 10px;
|
padding: 3px 10px;
|
||||||
background: var(--tertiary);
|
background: var(--tertiary);
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
transition: transform .1s
|
transition: transform 0.1s;
|
||||||
}
|
}
|
||||||
|
|
||||||
.terms-tags a:active {
|
.terms-tags a:active {
|
||||||
background: var(--tertiary);
|
background: var(--tertiary);
|
||||||
transform: scale(.96)
|
transform: scale(0.96);
|
||||||
}
|
}
|
6
assets/css/core/license.css
Normal file
6
assets/css/core/license.css
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
/*
|
||||||
|
PaperMod v7
|
||||||
|
License: MIT https://github.com/adityatelange/hugo-PaperMod/blob/master/LICENSE
|
||||||
|
Copyright (c) 2020 nanxiaobei and adityatelange
|
||||||
|
Copyright (c) 2021-2023 adityatelange
|
||||||
|
*/
|
|
@ -1,12 +1,15 @@
|
||||||
*,
|
*,
|
||||||
::after,
|
::after,
|
||||||
::before {
|
::before {
|
||||||
box-sizing: border-box
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
html {
|
html {
|
||||||
-webkit-tap-highlight-color: transparent;
|
-webkit-tap-highlight-color: transparent;
|
||||||
overflow-y: scroll;
|
overflow-y: scroll;
|
||||||
|
scroll-behavior: smooth;
|
||||||
|
-webkit-text-size-adjust: 100%;
|
||||||
|
text-size-adjust: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
a,
|
a,
|
||||||
|
@ -18,7 +21,7 @@ h3,
|
||||||
h4,
|
h4,
|
||||||
h5,
|
h5,
|
||||||
h6 {
|
h6 {
|
||||||
color: var(--primary)
|
color: var(--primary);
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
|
@ -26,7 +29,7 @@ body {
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
line-height: 1.6;
|
line-height: 1.6;
|
||||||
word-break: break-word;
|
word-break: break-word;
|
||||||
background: var(--theme)
|
background: var(--theme);
|
||||||
}
|
}
|
||||||
|
|
||||||
article,
|
article,
|
||||||
|
@ -40,7 +43,7 @@ main,
|
||||||
nav,
|
nav,
|
||||||
section,
|
section,
|
||||||
table {
|
table {
|
||||||
display: block
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1,
|
h1,
|
||||||
|
@ -49,7 +52,7 @@ h3,
|
||||||
h4,
|
h4,
|
||||||
h5,
|
h5,
|
||||||
h6 {
|
h6 {
|
||||||
line-height: 1.2
|
line-height: 1.2;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1,
|
h1,
|
||||||
|
@ -60,21 +63,21 @@ h5,
|
||||||
h6,
|
h6,
|
||||||
p {
|
p {
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
margin-bottom: 0
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
ul {
|
ul {
|
||||||
padding: 0
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
text-decoration: none
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
body,
|
body,
|
||||||
figure,
|
figure,
|
||||||
ul {
|
ul {
|
||||||
margin: 0
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
table {
|
table {
|
||||||
|
@ -82,7 +85,7 @@ table {
|
||||||
border-collapse: collapse;
|
border-collapse: collapse;
|
||||||
border-spacing: 0;
|
border-spacing: 0;
|
||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
word-break: keep-all
|
word-break: keep-all;
|
||||||
}
|
}
|
||||||
|
|
||||||
button,
|
button,
|
||||||
|
@ -96,43 +99,21 @@ textarea {
|
||||||
|
|
||||||
input,
|
input,
|
||||||
textarea {
|
textarea {
|
||||||
outline: 0
|
outline: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
button,
|
button,
|
||||||
input[type=button],
|
input[type=button],
|
||||||
input[type=submit] {
|
input[type=submit] {
|
||||||
cursor: pointer
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
input:-webkit-autofill,
|
input:-webkit-autofill,
|
||||||
textarea:-webkit-autofill {
|
textarea:-webkit-autofill {
|
||||||
box-shadow: 0 0 0 50px var(--theme) inset
|
box-shadow: 0 0 0 50px var(--theme) inset;
|
||||||
}
|
}
|
||||||
|
|
||||||
img {
|
img {
|
||||||
display: block;
|
display: block;
|
||||||
max-width: 100%
|
max-width: 100%;
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-scrollbar-track {
|
|
||||||
background: 0 0
|
|
||||||
}
|
|
||||||
|
|
||||||
.list:not(.dark)::-webkit-scrollbar-track {
|
|
||||||
background: var(--code-bg)
|
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-scrollbar-thumb {
|
|
||||||
background: var(--tertiary);
|
|
||||||
border: 5px solid var(--theme);
|
|
||||||
border-radius: var(--radius)
|
|
||||||
}
|
|
||||||
|
|
||||||
.list:not(.dark)::-webkit-scrollbar-thumb {
|
|
||||||
border: 5px solid var(--code-bg)
|
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-scrollbar-thumb:hover {
|
|
||||||
background: var(--secondary)
|
|
||||||
}
|
}
|
36
assets/css/core/theme-vars.css
Normal file
36
assets/css/core/theme-vars.css
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
:root {
|
||||||
|
--gap: 24px;
|
||||||
|
--content-gap: 20px;
|
||||||
|
--nav-width: 1024px;
|
||||||
|
--main-width: 720px;
|
||||||
|
--header-height: 60px;
|
||||||
|
--footer-height: 60px;
|
||||||
|
--radius: 8px;
|
||||||
|
--theme: #e2e4f2;
|
||||||
|
--entry: #efefff;
|
||||||
|
--primary: rgb(30, 30, 30);
|
||||||
|
--secondary: rgb(108, 108, 108);
|
||||||
|
--tertiary: #c3c5d0;
|
||||||
|
--content: rgb(31, 31, 31);
|
||||||
|
--code-bg: #e2e4f2;
|
||||||
|
--border: rgb(238, 238, 238);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark {
|
||||||
|
--theme: #1f2125;
|
||||||
|
--entry: #26282e;
|
||||||
|
--primary: rgb(218, 218, 219);
|
||||||
|
--secondary: rgb(155, 156, 157);
|
||||||
|
--tertiary: #3a3c42;
|
||||||
|
--content: rgb(196, 196, 197);
|
||||||
|
--code-bg: rgb(55, 56, 62);
|
||||||
|
--border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list {
|
||||||
|
background: var(--code-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark.list {
|
||||||
|
background: var(--theme);
|
||||||
|
}
|
|
@ -22,13 +22,10 @@
|
||||||
.archive-year {
|
.archive-year {
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (min-width: 768px) {
|
/* footer */
|
||||||
/* reset */
|
.footer {
|
||||||
::-webkit-scrollbar {
|
padding: calc((var(--footer-height) - var(--gap) - 10px) / 2) var(--gap);
|
||||||
width: 19px;
|
|
||||||
height: 11px;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,11 +36,16 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 340px) {
|
||||||
|
.share-buttons {
|
||||||
|
justify-content: unset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@media (prefers-reduced-motion) {
|
@media (prefers-reduced-motion) {
|
||||||
/* terms; profile-mode; post-single; post-entry; post-entry; search; search */
|
/* terms; profile-mode; post-single; post-entry; post-entry; search; search */
|
||||||
.terms-tags a:active,
|
.terms-tags a:active,
|
||||||
.button:active,
|
.button:active,
|
||||||
.share-buttons svg:active,
|
|
||||||
.post-entry:active,
|
.post-entry:active,
|
||||||
.top-link,
|
.top-link,
|
||||||
#searchResults .focus,
|
#searchResults .focus,
|
16
assets/css/extended/youtube.css
Normal file
16
assets/css/extended/youtube.css
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
.youtube-embed-div {
|
||||||
|
position: relative;
|
||||||
|
padding-bottom: 56.25%;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
height: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.youtube-embed-frame {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border: 0;
|
||||||
|
}
|
|
@ -1,97 +0,0 @@
|
||||||
.nav {
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
justify-content: space-between;
|
|
||||||
max-width: calc(var(--nav-width) + var(--gap) * 2);
|
|
||||||
margin-inline-start: auto;
|
|
||||||
margin-inline-end: auto;
|
|
||||||
line-height: var(--header-height)
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav a {
|
|
||||||
display: block
|
|
||||||
}
|
|
||||||
|
|
||||||
.logo,
|
|
||||||
#menu {
|
|
||||||
display: flex;
|
|
||||||
margin: auto var(--gap);
|
|
||||||
}
|
|
||||||
|
|
||||||
.logo {
|
|
||||||
flex-wrap: inherit
|
|
||||||
}
|
|
||||||
|
|
||||||
.logo a {
|
|
||||||
font-size: 24px;
|
|
||||||
font-weight: 700;
|
|
||||||
}
|
|
||||||
|
|
||||||
.logo a img {
|
|
||||||
display: inline;
|
|
||||||
vertical-align: middle;
|
|
||||||
pointer-events: none;
|
|
||||||
transform: translate(0, -10%);
|
|
||||||
border-radius: 6px;
|
|
||||||
margin-inline-end: 8px
|
|
||||||
}
|
|
||||||
|
|
||||||
#theme-toggle svg {
|
|
||||||
height: 18px;
|
|
||||||
}
|
|
||||||
|
|
||||||
button#theme-toggle {
|
|
||||||
font-size: 26px;
|
|
||||||
margin: auto 4px
|
|
||||||
}
|
|
||||||
|
|
||||||
body.dark #moon {
|
|
||||||
vertical-align: middle;
|
|
||||||
display: none
|
|
||||||
}
|
|
||||||
|
|
||||||
body:not(.dark) #sun {
|
|
||||||
display: none
|
|
||||||
}
|
|
||||||
|
|
||||||
#menu {
|
|
||||||
list-style: none;
|
|
||||||
word-break: keep-all;
|
|
||||||
overflow-x: auto;
|
|
||||||
white-space: nowrap
|
|
||||||
}
|
|
||||||
|
|
||||||
#menu li+li {
|
|
||||||
margin-inline-start: var(--gap)
|
|
||||||
}
|
|
||||||
|
|
||||||
#menu a {
|
|
||||||
font-size: 16px
|
|
||||||
}
|
|
||||||
|
|
||||||
#menu .active {
|
|
||||||
font-weight: 500;
|
|
||||||
border-bottom: 2px solid currentColor
|
|
||||||
}
|
|
||||||
|
|
||||||
.lang-switch li,
|
|
||||||
.lang-switch ul,
|
|
||||||
.logo-switches {
|
|
||||||
display: inline-flex;
|
|
||||||
margin: auto 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lang-switch {
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: inherit
|
|
||||||
}
|
|
||||||
|
|
||||||
.lang-switch a {
|
|
||||||
margin: auto 3px;
|
|
||||||
font-size: 16px;
|
|
||||||
font-weight: 500;
|
|
||||||
}
|
|
||||||
|
|
||||||
.logo-switches {
|
|
||||||
flex-wrap: inherit
|
|
||||||
}
|
|
8
assets/css/includes/noscript.css
Normal file
8
assets/css/includes/noscript.css
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
#theme-toggle,
|
||||||
|
.top-link {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#searchInput {
|
||||||
|
display: none;
|
||||||
|
}
|
80
assets/css/includes/scroll-bar.css
Normal file
80
assets/css/includes/scroll-bar.css
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
/* from reset */
|
||||||
|
::-webkit-scrollbar-track {
|
||||||
|
background: 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list:not(.dark)::-webkit-scrollbar-track {
|
||||||
|
background: var(--code-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
::-webkit-scrollbar-thumb {
|
||||||
|
background: var(--tertiary);
|
||||||
|
border: 5px solid var(--theme);
|
||||||
|
border-radius: var(--radius);
|
||||||
|
}
|
||||||
|
|
||||||
|
.list:not(.dark)::-webkit-scrollbar-thumb {
|
||||||
|
border: 5px solid var(--code-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
::-webkit-scrollbar-thumb:hover {
|
||||||
|
background: var(--secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
::-webkit-scrollbar:not(.highlighttable, .highlight table, .gist .highlight) {
|
||||||
|
background: var(--theme);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* from post-single */
|
||||||
|
.post-content .highlighttable td .highlight pre code::-webkit-scrollbar {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-content :not(table) ::-webkit-scrollbar-thumb {
|
||||||
|
border: 2px solid var(--hljs-bg);
|
||||||
|
background: rgb(113, 113, 117);
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-content :not(table) ::-webkit-scrollbar-thumb:hover {
|
||||||
|
background: rgb(163, 163, 165);
|
||||||
|
}
|
||||||
|
|
||||||
|
.gist table::-webkit-scrollbar-thumb {
|
||||||
|
border: 2px solid rgb(255, 255, 255);
|
||||||
|
background: rgb(173, 173, 173);
|
||||||
|
}
|
||||||
|
|
||||||
|
.gist table::-webkit-scrollbar-thumb:hover {
|
||||||
|
background: rgb(112, 112, 112);
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-content table::-webkit-scrollbar-thumb {
|
||||||
|
border-width: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* from zmedia */
|
||||||
|
@media screen and (min-width: 768px) {
|
||||||
|
|
||||||
|
/* reset */
|
||||||
|
::-webkit-scrollbar {
|
||||||
|
width: 19px;
|
||||||
|
height: 11px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* side ToC */
|
||||||
|
|
||||||
|
.toc.side::-webkit-scrollbar-thumb {
|
||||||
|
border: none;
|
||||||
|
background: var(--secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.toc.side::-webkit-scrollbar {
|
||||||
|
width: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* code */
|
||||||
|
|
||||||
|
.highlight pre code::-webkit-scrollbar {
|
||||||
|
height: 6px;
|
||||||
|
}
|
|
@ -1,45 +0,0 @@
|
||||||
.main {
|
|
||||||
position: relative;
|
|
||||||
min-height: calc(100vh - var(--header-height) - var(--footer-height));
|
|
||||||
max-width: calc(var(--main-width) + var(--gap) * 2);
|
|
||||||
margin: auto;
|
|
||||||
padding: var(--gap)
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-header h1 {
|
|
||||||
font-size: 40px
|
|
||||||
}
|
|
||||||
|
|
||||||
.pagination {
|
|
||||||
display: flex
|
|
||||||
}
|
|
||||||
|
|
||||||
.pagination a {
|
|
||||||
color: var(--theme);
|
|
||||||
font-size: 13px;
|
|
||||||
line-height: 36px;
|
|
||||||
background: var(--primary);
|
|
||||||
border-radius: calc(36px / 2);
|
|
||||||
padding: 0 16px
|
|
||||||
}
|
|
||||||
|
|
||||||
.pagination .next {
|
|
||||||
margin-inline-start: auto
|
|
||||||
}
|
|
||||||
|
|
||||||
.social-icons {
|
|
||||||
padding: 12px 0
|
|
||||||
}
|
|
||||||
|
|
||||||
.social-icons a:not(:last-of-type) {
|
|
||||||
margin-inline-end: 12px
|
|
||||||
}
|
|
||||||
|
|
||||||
.social-icons a svg {
|
|
||||||
height: 26px;
|
|
||||||
width: 26px
|
|
||||||
}
|
|
||||||
|
|
||||||
code {
|
|
||||||
direction: ltr
|
|
||||||
}
|
|
|
@ -1,38 +0,0 @@
|
||||||
:root {
|
|
||||||
--gap: 24px;
|
|
||||||
--content-gap: 20px;
|
|
||||||
--nav-width: 1024px;
|
|
||||||
--main-width: 720px;
|
|
||||||
--header-height: 60px;
|
|
||||||
--footer-height: 60px;
|
|
||||||
--radius: 8px;
|
|
||||||
--theme: #fff;
|
|
||||||
--entry: #fff;
|
|
||||||
--primary: rgba(0, 0, 0, 0.88);
|
|
||||||
--secondary: rgba(0, 0, 0, 0.56);
|
|
||||||
--tertiary: rgba(0, 0, 0, 0.16);
|
|
||||||
--content: rgba(0, 0, 0, 0.88);
|
|
||||||
--hljs-bg: #1c1d21;
|
|
||||||
--code-bg: #f5f5f5;
|
|
||||||
--border: #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark {
|
|
||||||
--theme: #1d1e20;
|
|
||||||
--entry: #2e2e33;
|
|
||||||
--primary: rgba(255, 255, 255, 0.84);
|
|
||||||
--secondary: rgba(255, 255, 255, 0.56);
|
|
||||||
--tertiary: rgba(255, 255, 255, 0.16);
|
|
||||||
--content: rgba(255, 255, 255, 0.74);
|
|
||||||
--hljs-bg: #2e2e33;
|
|
||||||
--code-bg: #37383e;
|
|
||||||
--border: #333;
|
|
||||||
}
|
|
||||||
|
|
||||||
.list {
|
|
||||||
background: var(--code-bg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.dark.list {
|
|
||||||
background: var(--theme);
|
|
||||||
}
|
|
|
@ -1,19 +1,21 @@
|
||||||
var fuse; // holds our search engine
|
import * as params from '@params';
|
||||||
var resList = document.getElementById('searchResults');
|
|
||||||
var sInput = document.getElementById('searchInput');
|
|
||||||
var first, last = null
|
|
||||||
var resultsAvailable = false;
|
|
||||||
|
|
||||||
// load our search index, only executed onload
|
let fuse; // holds our search engine
|
||||||
function loadSearch() {
|
let resList = document.getElementById('searchResults');
|
||||||
var xhr = new XMLHttpRequest();
|
let sInput = document.getElementById('searchInput');
|
||||||
|
let first, last, current_elem = null
|
||||||
|
let resultsAvailable = false;
|
||||||
|
|
||||||
|
// load our search index
|
||||||
|
window.onload = function () {
|
||||||
|
let xhr = new XMLHttpRequest();
|
||||||
xhr.onreadystatechange = function () {
|
xhr.onreadystatechange = function () {
|
||||||
if (xhr.readyState === 4) {
|
if (xhr.readyState === 4) {
|
||||||
if (xhr.status === 200) {
|
if (xhr.status === 200) {
|
||||||
var data = JSON.parse(xhr.responseText);
|
let data = JSON.parse(xhr.responseText);
|
||||||
if (data) {
|
if (data) {
|
||||||
// fuse.js options; check fuse.js website for details
|
// fuse.js options; check fuse.js website for details
|
||||||
var options = {
|
let options = {
|
||||||
distance: 100,
|
distance: 100,
|
||||||
threshold: 0.4,
|
threshold: 0.4,
|
||||||
ignoreLocation: true,
|
ignoreLocation: true,
|
||||||
|
@ -24,7 +26,21 @@ function loadSearch() {
|
||||||
'content'
|
'content'
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
{{ if . }}options = {{ jsonify . }}{{ end }} // load custom options from .Site.Params.fuseOpts
|
if (params.fuseOpts) {
|
||||||
|
options = {
|
||||||
|
isCaseSensitive: params.fuseOpts.iscasesensitive ?? false,
|
||||||
|
includeScore: params.fuseOpts.includescore ?? false,
|
||||||
|
includeMatches: params.fuseOpts.includematches ?? false,
|
||||||
|
minMatchCharLength: params.fuseOpts.minmatchcharlength ?? 1,
|
||||||
|
shouldSort: params.fuseOpts.shouldsort ?? true,
|
||||||
|
findAllMatches: params.fuseOpts.findallmatches ?? false,
|
||||||
|
keys: params.fuseOpts.keys ?? ['title', 'permalink', 'summary', 'content'],
|
||||||
|
location: params.fuseOpts.location ?? 0,
|
||||||
|
threshold: params.fuseOpts.threshold ?? 0.4,
|
||||||
|
distance: params.fuseOpts.distance ?? 100,
|
||||||
|
ignoreLocation: params.fuseOpts.ignorelocation ?? true
|
||||||
|
}
|
||||||
|
}
|
||||||
fuse = new Fuse(data, options); // build the index from the json file
|
fuse = new Fuse(data, options); // build the index from the json file
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -36,13 +52,18 @@ function loadSearch() {
|
||||||
xhr.send();
|
xhr.send();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function activeToggle(ae) {
|
||||||
function itemGen(name, link) {
|
document.querySelectorAll('.focus').forEach(function (element) {
|
||||||
return `<li class="post-entry"><header class="entry-header">${name} »</header><a href="${link}" aria-label="${name}"></a></li>`
|
// rm focus class
|
||||||
}
|
element.classList.remove("focus")
|
||||||
|
});
|
||||||
function activeToggle() {
|
if (ae) {
|
||||||
document.activeElement.parentElement.classList.toggle("focus")
|
ae.focus()
|
||||||
|
document.activeElement = current_elem = ae;
|
||||||
|
ae.parentElement.classList.add("focus")
|
||||||
|
} else {
|
||||||
|
document.activeElement.parentElement.classList.add("focus")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function reset() {
|
function reset() {
|
||||||
|
@ -55,23 +76,30 @@ function reset() {
|
||||||
sInput.onkeyup = function (e) {
|
sInput.onkeyup = function (e) {
|
||||||
// run a search query (for "term") every time a letter is typed
|
// run a search query (for "term") every time a letter is typed
|
||||||
// in the search box
|
// in the search box
|
||||||
const results = fuse.search(this.value.trim()); // the actual query being run using fuse.js
|
if (fuse) {
|
||||||
|
let results;
|
||||||
if (results.length !== 0) {
|
if (params.fuseOpts) {
|
||||||
// build our html if result exists
|
results = fuse.search(this.value.trim(), {limit: params.fuseOpts.limit}); // the actual query being run using fuse.js along with options
|
||||||
let resultSet = ''; // our results bucket
|
} else {
|
||||||
|
results = fuse.search(this.value.trim()); // the actual query being run using fuse.js
|
||||||
for (let item in results) {
|
|
||||||
resultSet = resultSet + itemGen(results[item].item.title, results[item].item.permalink)
|
|
||||||
}
|
}
|
||||||
|
if (results.length !== 0) {
|
||||||
|
// build our html if result exists
|
||||||
|
let resultSet = ''; // our results bucket
|
||||||
|
|
||||||
resList.innerHTML = resultSet;
|
for (let item in results) {
|
||||||
resultsAvailable = true;
|
resultSet += `<li class="post-entry"><header class="entry-header">${results[item].item.title} »</header>` +
|
||||||
first = resList.firstChild;
|
`<a href="${results[item].item.permalink}" aria-label="${results[item].item.title}"></a></li>`
|
||||||
last = resList.lastChild;
|
}
|
||||||
} else {
|
|
||||||
resultsAvailable = false;
|
resList.innerHTML = resultSet;
|
||||||
resList.innerHTML = '';
|
resultsAvailable = true;
|
||||||
|
first = resList.firstChild;
|
||||||
|
last = resList.lastChild;
|
||||||
|
} else {
|
||||||
|
resultsAvailable = false;
|
||||||
|
resList.innerHTML = '';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -84,47 +112,41 @@ sInput.addEventListener('search', function (e) {
|
||||||
document.onkeydown = function (e) {
|
document.onkeydown = function (e) {
|
||||||
let key = e.key;
|
let key = e.key;
|
||||||
let ae = document.activeElement;
|
let ae = document.activeElement;
|
||||||
|
|
||||||
let inbox = document.getElementById("searchbox").contains(ae)
|
let inbox = document.getElementById("searchbox").contains(ae)
|
||||||
|
|
||||||
if (ae === sInput) {
|
if (ae === sInput) {
|
||||||
var elements = document.getElementsByClassName('focus');
|
let elements = document.getElementsByClassName('focus');
|
||||||
while (elements.length > 0) {
|
while (elements.length > 0) {
|
||||||
elements[0].classList.remove('focus');
|
elements[0].classList.remove('focus');
|
||||||
}
|
}
|
||||||
}
|
} else if (current_elem) ae = current_elem;
|
||||||
|
|
||||||
if (key === "ArrowDown" && resultsAvailable && inbox) {
|
if (key === "Escape") {
|
||||||
|
reset()
|
||||||
|
} else if (!resultsAvailable || !inbox) {
|
||||||
|
return
|
||||||
|
} else if (key === "ArrowDown") {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
if (ae == sInput) {
|
if (ae == sInput) {
|
||||||
// if the currently focused element is the search input, focus the <a> of first <li>
|
// if the currently focused element is the search input, focus the <a> of first <li>
|
||||||
activeToggle(); // rm focus class
|
activeToggle(resList.firstChild.lastChild);
|
||||||
resList.firstChild.lastChild.focus();
|
} else if (ae.parentElement != last) {
|
||||||
activeToggle(); // add focus class
|
|
||||||
} else if (ae.parentElement == last) {
|
|
||||||
// if the currently focused element's parent is last, do nothing
|
// if the currently focused element's parent is last, do nothing
|
||||||
} else {
|
|
||||||
// otherwise select the next search result
|
// otherwise select the next search result
|
||||||
activeToggle(); // rm focus class
|
activeToggle(ae.parentElement.nextSibling.lastChild);
|
||||||
ae.parentElement.nextSibling.lastChild.focus();
|
|
||||||
activeToggle(); // add focus class
|
|
||||||
}
|
}
|
||||||
} else if (key === "ArrowUp" && resultsAvailable && inbox) {
|
} else if (key === "ArrowUp") {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
if (ae == sInput) {
|
if (ae.parentElement == first) {
|
||||||
// if the currently focused element is input box, do nothing
|
|
||||||
} else if (ae.parentElement == first) {
|
|
||||||
// if the currently focused element is first item, go to input box
|
// if the currently focused element is first item, go to input box
|
||||||
activeToggle(); // rm focus class
|
activeToggle(sInput);
|
||||||
sInput.focus();
|
} else if (ae != sInput) {
|
||||||
} else {
|
// if the currently focused element is input box, do nothing
|
||||||
// otherwise select the previous search result
|
// otherwise select the previous search result
|
||||||
activeToggle(); // rm focus class
|
activeToggle(ae.parentElement.previousSibling.lastChild);
|
||||||
ae.parentElement.previousSibling.lastChild.focus();
|
|
||||||
activeToggle(); // add focus class
|
|
||||||
}
|
}
|
||||||
} else if (key === "ArrowRight" && resultsAvailable && inbox) {
|
} else if (key === "ArrowRight") {
|
||||||
ae.click(); // click on active link
|
ae.click(); // click on active link
|
||||||
} else if (key === "Escape") {
|
|
||||||
reset()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
9
assets/js/fuse.basic.min.js
vendored
Normal file
9
assets/js/fuse.basic.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
44
assets/js/highlight.min.js
vendored
44
assets/js/highlight.min.js
vendored
File diff suppressed because one or more lines are too long
6
assets/js/license.js
Normal file
6
assets/js/license.js
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
/*
|
||||||
|
PaperMod v7
|
||||||
|
License: MIT https://github.com/adityatelange/hugo-PaperMod/blob/master/LICENSE
|
||||||
|
Copyright (c) 2020 nanxiaobei and adityatelange
|
||||||
|
Copyright (c) 2021-2023 adityatelange
|
||||||
|
*/
|
106
assets/js/papermod.js
Normal file
106
assets/js/papermod.js
Normal file
|
@ -0,0 +1,106 @@
|
||||||
|
import * as params from '@params';
|
||||||
|
|
||||||
|
function scrollToTop() {
|
||||||
|
const topButton = document.getElementById("top-link");
|
||||||
|
|
||||||
|
document.addEventListener('scroll', () => {
|
||||||
|
if (document.body.scrollTop > 600 || document.documentElement.scrollTop > 600) {
|
||||||
|
topButton.style.visibility = "visible";
|
||||||
|
topButton.style.opacity = "1";
|
||||||
|
} else {
|
||||||
|
topButton.style.visibility = "hidden";
|
||||||
|
topButton.style.opacity = "0";
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function themeToggle() {
|
||||||
|
const themeButton = document.getElementById("theme-toggle");
|
||||||
|
|
||||||
|
themeButton.addEventListener("click", () => {
|
||||||
|
if (document.body.className.includes("dark")) {
|
||||||
|
document.body.classList.remove('dark');
|
||||||
|
localStorage.setItem("pref-theme", 'light');
|
||||||
|
} else {
|
||||||
|
document.body.classList.add('dark');
|
||||||
|
localStorage.setItem("pref-theme", 'dark');
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function showCodeCopyButtons() {
|
||||||
|
document.querySelectorAll('pre > code').forEach((codeblock) => {
|
||||||
|
const container = codeblock.parentNode.parentNode;
|
||||||
|
|
||||||
|
const copybutton = document.createElement('button');
|
||||||
|
copybutton.classList.add('copy-code');
|
||||||
|
copybutton.innerHTML = 'copy';
|
||||||
|
|
||||||
|
function copyingDone() {
|
||||||
|
copybutton.innerHTML = 'copied!';
|
||||||
|
setTimeout(() => {
|
||||||
|
copybutton.innerHTML = 'copy';
|
||||||
|
}, 2000);
|
||||||
|
}
|
||||||
|
|
||||||
|
copybutton.addEventListener('click', (cb) => {
|
||||||
|
if ('clipboard' in navigator) {
|
||||||
|
navigator.clipboard.writeText(codeblock.textContent);
|
||||||
|
copyingDone();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const range = document.createRange();
|
||||||
|
range.selectNodeContents(codeblock);
|
||||||
|
const selection = window.getSelection();
|
||||||
|
selection.removeAllRanges();
|
||||||
|
selection.addRange(range);
|
||||||
|
try {
|
||||||
|
document.execCommand('copy');
|
||||||
|
copyingDone();
|
||||||
|
} catch (e) { };
|
||||||
|
selection.removeRange(range);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (container.classList.contains("highlight")) {
|
||||||
|
container.appendChild(copybutton);
|
||||||
|
} else if (container.parentNode.firstChild == container) {
|
||||||
|
// td containing LineNos
|
||||||
|
} else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") {
|
||||||
|
// table containing LineNos and code
|
||||||
|
codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton);
|
||||||
|
} else {
|
||||||
|
// code blocks not having highlight as parent class
|
||||||
|
codeblock.parentNode.appendChild(copybutton);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function openToc() {
|
||||||
|
const toc = document.getElementById("toc");
|
||||||
|
|
||||||
|
if (!toc) return;
|
||||||
|
|
||||||
|
if (window.innerWidth > 1500 && window.innerHeight > 800) {
|
||||||
|
toc.open = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function progressBar() {
|
||||||
|
const bar = document.getElementById("progressBar");
|
||||||
|
|
||||||
|
if (!bar) return;
|
||||||
|
|
||||||
|
document.addEventListener('scroll', () => {
|
||||||
|
let scrollPercent = document.documentElement.scrollTop / (document.documentElement.scrollHeight - window.innerHeight) * 100;
|
||||||
|
if (scrollPercent >= 99) { scrollPercent = 0 };
|
||||||
|
bar.style.setProperty("--scrollAmount", scrollPercent + '%');
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (params.scrollToTop) scrollToTop();
|
||||||
|
if (params.themeToggle) themeToggle();
|
||||||
|
if (params.showCodeCopyButtons) showCodeCopyButtons();
|
||||||
|
openToc();
|
||||||
|
progressBar();
|
12
assets/js/theme.js
Normal file
12
assets/js/theme.js
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
function loadPreferredTheme() {
|
||||||
|
const preferredTheme = localStorage.getItem("pref-theme");
|
||||||
|
const isDarkTheme = document.body.classList.contains("dark");
|
||||||
|
|
||||||
|
if (preferredTheme === "light" && isDarkTheme) {
|
||||||
|
document.body.classList.remove('dark')
|
||||||
|
} else if (preferredTheme === "dark" && !isDarkTheme) {
|
||||||
|
document.body.classList.add('dark')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
loadPreferredTheme();
|
2
go.mod
2
go.mod
|
@ -1,3 +1,3 @@
|
||||||
module github.com/adityatelange/hugo-PaperMod
|
module github.com/Wonderfall/hugo-WonderMod
|
||||||
|
|
||||||
go 1.12
|
go 1.12
|
||||||
|
|
10
i18n/ar.yaml
10
i18n/ar.yaml
|
@ -1,8 +1,8 @@
|
||||||
- id: prev_page
|
- id: prev_page
|
||||||
translation: "الصفحة السابقة"
|
translation: "السابق"
|
||||||
|
|
||||||
- id: next_page
|
- id: next_page
|
||||||
translation: "الصفحة التالية"
|
translation: "التالي"
|
||||||
|
|
||||||
- id: read_time
|
- id: read_time
|
||||||
translation:
|
translation:
|
||||||
|
@ -20,3 +20,9 @@
|
||||||
|
|
||||||
- id: home
|
- id: home
|
||||||
translation: "الصفحة الرئيسية"
|
translation: "الصفحة الرئيسية"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "تم النسخ!"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "نسخ الكود"
|
||||||
|
|
39
i18n/be.yaml
Normal file
39
i18n/be.yaml
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
- id: prev_page
|
||||||
|
translation: "Папярэдняя"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Наступная"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
zero: "0 хвілін"
|
||||||
|
one: "1 хвіліна"
|
||||||
|
few: "{{ .Count }} хвіліны"
|
||||||
|
many: "{{ .Count }} хвілін"
|
||||||
|
other: "{{ .Count }} хвілін"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
zero: "няма слоў"
|
||||||
|
one: "1 слова"
|
||||||
|
few: "{{ .Count }} слова"
|
||||||
|
many: "{{ .Count }} слоў"
|
||||||
|
other: "{{ .Count }} слова"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Змест"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Пераклады"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Галоўная"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Рэдагаваць"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "капіяваць"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "скапіявана!"
|
33
i18n/bn.yaml
Normal file
33
i18n/bn.yaml
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
- id: prev_page
|
||||||
|
translation: "পূর্ববর্তী"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "পরবর্তী"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "১ মিনিট"
|
||||||
|
other: "{{ .Count }} মিনিট"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "১ টি শব্দ"
|
||||||
|
other: "{{ .Count }} টি শব্দ"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "সূচিপত্র"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "অনুবাদসমূহ"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "হোম"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "সম্পাদনা করুন"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "কপি করুন"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "কপি হয়েছে!"
|
25
i18n/ckb.yaml
Normal file
25
i18n/ckb.yaml
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
- id: prev_page
|
||||||
|
translation: "پەڕەی پێشتر"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "پەڕەی دواتر"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 خولەک"
|
||||||
|
other: "{{ .Count }} خولەک"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "پێڕست"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "وەرگێڕانەکان"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "ماڵەوە"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "لەبەری بگرەوە"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "لەبەر گیرایەوە!"
|
33
i18n/cs.yaml
Normal file
33
i18n/cs.yaml
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
- id: prev_page
|
||||||
|
translation: "Předchozí"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Další"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 min"
|
||||||
|
other: "{{ .Count }} min"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "slovo"
|
||||||
|
other: "{{ .Count }} slov"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Obsah"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Překlady"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Domů"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Upravit"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "kopírovat"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "zkopírováno!"
|
28
i18n/da.yaml
Normal file
28
i18n/da.yaml
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
- id: prev_page
|
||||||
|
translation: "Forrige Side"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Næste Side"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one: "1 min"
|
||||||
|
other: "{{ .Count }} min"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Indholdsfortegnelse"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Oversættelser"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Start"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Rediger"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "kopier"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "kopieret!"
|
22
i18n/de.yaml
22
i18n/de.yaml
|
@ -1,13 +1,18 @@
|
||||||
- id: prev_page
|
- id: prev_page
|
||||||
translation: "Vorherige Seite"
|
translation: "Vorherige"
|
||||||
|
|
||||||
- id: next_page
|
- id: next_page
|
||||||
translation: "Nächste Seite"
|
translation: "Nächste"
|
||||||
|
|
||||||
- id: read_time
|
- id: read_time
|
||||||
translation:
|
translation:
|
||||||
one: "1 min"
|
one: "1 Minute"
|
||||||
other: "{{ .Count }} min"
|
other: "{{ .Count }} Minuten"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "Wort"
|
||||||
|
other: "{{ .Count }} Wörter"
|
||||||
|
|
||||||
- id: toc
|
- id: toc
|
||||||
translation: "Inhaltsverzeichnis"
|
translation: "Inhaltsverzeichnis"
|
||||||
|
@ -15,5 +20,14 @@
|
||||||
- id: translations
|
- id: translations
|
||||||
translation: "Übersetzungen"
|
translation: "Übersetzungen"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Home"
|
||||||
|
|
||||||
- id: edit_post
|
- id: edit_post
|
||||||
translation: "Bearbeiten"
|
translation: "Bearbeiten"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "Kopieren"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "Kopiert!"
|
||||||
|
|
33
i18n/el.yaml
Normal file
33
i18n/el.yaml
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
- id: prev_page
|
||||||
|
translation: "Προηγούμενο"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Επόμενο"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one: "1 λεπτό"
|
||||||
|
other: "{{ .Count }} λεπτά"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one: "λέξη"
|
||||||
|
other: "{{ .Count }} λέξεις"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Πίνακας Περιεχομένων"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Μεταφράσεις"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Αρχική"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Επεξεργασία"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "αντιγραφή"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "αντιγράφηκε!"
|
18
i18n/en.yaml
18
i18n/en.yaml
|
@ -1,14 +1,19 @@
|
||||||
- id: prev_page
|
- id: prev_page
|
||||||
translation: "Prev Page"
|
translation: "Prev"
|
||||||
|
|
||||||
- id: next_page
|
- id: next_page
|
||||||
translation: "Next Page"
|
translation: "Next"
|
||||||
|
|
||||||
- id: read_time
|
- id: read_time
|
||||||
translation:
|
translation:
|
||||||
one : "1 min"
|
one : "1 min"
|
||||||
other: "{{ .Count }} min"
|
other: "{{ .Count }} min"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "word"
|
||||||
|
other: "{{ .Count }} words"
|
||||||
|
|
||||||
- id: toc
|
- id: toc
|
||||||
translation: "Table of Contents"
|
translation: "Table of Contents"
|
||||||
|
|
||||||
|
@ -17,3 +22,12 @@
|
||||||
|
|
||||||
- id: home
|
- id: home
|
||||||
translation: "Home"
|
translation: "Home"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Edit"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "copy"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "copied!"
|
||||||
|
|
25
i18n/eo.yaml
Normal file
25
i18n/eo.yaml
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
- id: prev_page
|
||||||
|
translation: "antaŭa paĝo"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "sekva paĝo"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 min"
|
||||||
|
other: "{{ .Count }} min"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Enhavo"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "tradukoj"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "ĉefpaĝo"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "kopii"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "kopiite!"
|
21
i18n/es.yaml
21
i18n/es.yaml
|
@ -1,16 +1,33 @@
|
||||||
- id: prev_page
|
- id: prev_page
|
||||||
translation: "Página anterior"
|
translation: "Anterior"
|
||||||
|
|
||||||
- id: next_page
|
- id: next_page
|
||||||
translation: "Página siguiente"
|
translation: "Siguiente"
|
||||||
|
|
||||||
- id: read_time
|
- id: read_time
|
||||||
translation:
|
translation:
|
||||||
one : "1 min"
|
one : "1 min"
|
||||||
other: "{{ .Count }} min"
|
other: "{{ .Count }} min"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "palabra"
|
||||||
|
other: "{{ .Count }} palabras"
|
||||||
|
|
||||||
- id: toc
|
- id: toc
|
||||||
translation: "Tabla de Contenidos"
|
translation: "Tabla de Contenidos"
|
||||||
|
|
||||||
- id: translations
|
- id: translations
|
||||||
translation: "Traducciones"
|
translation: "Traducciones"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Inicio"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Editar"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "copiar"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "¡copiado!"
|
||||||
|
|
20
i18n/fa.yaml
20
i18n/fa.yaml
|
@ -1,16 +1,28 @@
|
||||||
- id: prev_page
|
- id: prev_page
|
||||||
translation: "صفحهٔ قبل"
|
translation: "صفحه قبلی"
|
||||||
|
|
||||||
- id: next_page
|
- id: next_page
|
||||||
translation: "صفحهٔ بعد"
|
translation: "صفحه بعدی"
|
||||||
|
|
||||||
- id: read_time
|
- id: read_time
|
||||||
translation:
|
translation:
|
||||||
one : "1 دقیقه"
|
one: "۱ دقیقه"
|
||||||
other: "{{ .Count }} دقیقه"
|
other: "{{ .Count }} دقیقه"
|
||||||
|
|
||||||
- id: toc
|
- id: toc
|
||||||
translation: "فهرست مطالب"
|
translation: "فهرست مطالب"
|
||||||
|
|
||||||
- id: translations
|
- id: translations
|
||||||
translation: "ترجمهها"
|
translation: "ترجمه ها"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "خانه"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "ویرایش"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "کپی"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "کپی شد!"
|
32
i18n/fr.yaml
32
i18n/fr.yaml
|
@ -1,5 +1,33 @@
|
||||||
- id: prev_page
|
- id: prev_page
|
||||||
translation: "Page Précédente"
|
translation: "Précédent"
|
||||||
|
|
||||||
- id: next_page
|
- id: next_page
|
||||||
translation: "Page Suivante"
|
translation: "Suivant"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 min"
|
||||||
|
other: "{{ .Count }} min"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "mot"
|
||||||
|
other: "{{ .Count }} mots"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Table des matières"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Traductions"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Accueil"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Modifier"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "Copier"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "Copié !"
|
||||||
|
|
24
i18n/he.yaml
24
i18n/he.yaml
|
@ -1,19 +1,33 @@
|
||||||
- id: prev_page
|
- id: prev_page
|
||||||
translation: "לעמוד הקודם"
|
translation: "קודם"
|
||||||
|
|
||||||
- id: next_page
|
- id: next_page
|
||||||
translation: "לעמוד הבא"
|
translation: "הבא"
|
||||||
|
|
||||||
- id: read_time
|
- id: read_time
|
||||||
translation:
|
translation:
|
||||||
one : "דקה אחת"
|
one : "דקה אחת"
|
||||||
other: "{{ .Count }} דקות"
|
other: "דקות {{ .Count }}"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "word"
|
||||||
|
other: "מילים {{ .Count }} "
|
||||||
|
|
||||||
- id: toc
|
- id: toc
|
||||||
translation: "תוכן עניינים"
|
translation: "תוכן העניינים"
|
||||||
|
|
||||||
- id: translations
|
- id: translations
|
||||||
translation: "תרגומים"
|
translation: "תרגומים"
|
||||||
|
|
||||||
- id: home
|
- id: home
|
||||||
translation: "דף בית"
|
translation: "בית"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "ערוך"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "העתק"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "!הועתק"
|
||||||
|
|
|
@ -1,14 +1,17 @@
|
||||||
- id: prev_page
|
- id: prev_page
|
||||||
translation: "पिछला पृष्ठ"
|
translation: "पिछला"
|
||||||
|
|
||||||
- id: next_page
|
- id: next_page
|
||||||
translation: "अगला पृष्ठ"
|
translation: "अगला"
|
||||||
|
|
||||||
- id: read_time
|
- id: read_time
|
||||||
translation:
|
translation:
|
||||||
one : "एक मिनट"
|
one : "एक मिनट"
|
||||||
other: "{{ .Count }} मिनट"
|
other: "{{ .Count }} मिनट"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "सुधारें"
|
||||||
|
|
||||||
- id: toc
|
- id: toc
|
||||||
translation: "विषय - सूची"
|
translation: "विषय - सूची"
|
||||||
|
|
||||||
|
|
33
i18n/hr.yaml
Normal file
33
i18n/hr.yaml
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
- id: prev_page
|
||||||
|
translation: "Prethodna stranica"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Sljedeća stranica"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 minuta"
|
||||||
|
other: "{{ .Count }} minute"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "riječ"
|
||||||
|
other: "{{ .Count }} riječi"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Tablica Sadržaja"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Prijevodi"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Početna stranica"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Promjeni"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "kopiraj"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "kopirano!"
|
23
i18n/id.yaml
23
i18n/id.yaml
|
@ -1,16 +1,33 @@
|
||||||
- id: prev_page
|
- id: prev_page
|
||||||
translation: "Halaman Sebelumnya"
|
translation: "Sebelumnya"
|
||||||
|
|
||||||
- id: next_page
|
- id: next_page
|
||||||
translation: "Halaman Selanjutnya"
|
translation: "Selanjutnya"
|
||||||
|
|
||||||
- id: read_time
|
- id: read_time
|
||||||
translation:
|
translation:
|
||||||
one : "1 menit"
|
one : "1 menit"
|
||||||
other: "{{ .Count }} menit"
|
other: "{{ .Count }} menit"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "kata"
|
||||||
|
other: "{{ .Count }} kata"
|
||||||
|
|
||||||
- id: toc
|
- id: toc
|
||||||
translation: "Daftar Isi"
|
translation: "Daftar isi"
|
||||||
|
|
||||||
- id: translations
|
- id: translations
|
||||||
translation: "Terjemahan"
|
translation: "Terjemahan"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Beranda"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Sunting"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "salin"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "disalin!"
|
23
i18n/it.yaml
23
i18n/it.yaml
|
@ -1,16 +1,33 @@
|
||||||
- id: prev_page
|
- id: prev_page
|
||||||
translation: "Pag Prec"
|
translation: "Precedente"
|
||||||
|
|
||||||
- id: next_page
|
- id: next_page
|
||||||
translation: "Pag Succ"
|
translation: "Successivo"
|
||||||
|
|
||||||
- id: read_time
|
- id: read_time
|
||||||
translation:
|
translation:
|
||||||
one: "1 minuto"
|
one: "1 minuto"
|
||||||
other: "{{ .Count }} minuti"
|
other: "{{ .Count }} minuti"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "parola"
|
||||||
|
other: "{{ .Count }} parole"
|
||||||
|
|
||||||
- id: toc
|
- id: toc
|
||||||
translation: "Tabella dei Contenuti"
|
translation: "Indice contenuti"
|
||||||
|
|
||||||
- id: translations
|
- id: translations
|
||||||
translation: "Traduzioni"
|
translation: "Traduzioni"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Home"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Modifica"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "copia"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "copiato!"
|
||||||
|
|
21
i18n/ja.yaml
21
i18n/ja.yaml
|
@ -1,16 +1,33 @@
|
||||||
- id: prev_page
|
- id: prev_page
|
||||||
translation: "前のページ"
|
translation: "前へ"
|
||||||
|
|
||||||
- id: next_page
|
- id: next_page
|
||||||
translation: "次のページ"
|
translation: "次へ"
|
||||||
|
|
||||||
- id: read_time
|
- id: read_time
|
||||||
translation:
|
translation:
|
||||||
one : "1 分"
|
one : "1 分"
|
||||||
other: "{{ .Count }} 分"
|
other: "{{ .Count }} 分"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one: "文字"
|
||||||
|
other: "{{ .Count }} 文字"
|
||||||
|
|
||||||
- id: toc
|
- id: toc
|
||||||
translation: "目次"
|
translation: "目次"
|
||||||
|
|
||||||
- id: translations
|
- id: translations
|
||||||
translation: "言語"
|
translation: "言語"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "ホーム"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "編集"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "コピー"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "コピーされました!"
|
||||||
|
|
28
i18n/ko.yaml
28
i18n/ko.yaml
|
@ -3,3 +3,31 @@
|
||||||
|
|
||||||
- id: next_page
|
- id: next_page
|
||||||
translation: "다음 페이지"
|
translation: "다음 페이지"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 분"
|
||||||
|
other: "{{ .Count }} 분"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "단어"
|
||||||
|
other: "{{ .Count }} 단어"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "목차"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "번역"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "홈"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "편집"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "복사"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "복사 완료!"
|
||||||
|
|
25
i18n/ku.yaml
Normal file
25
i18n/ku.yaml
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
- id: prev_page
|
||||||
|
translation: "Rûpela Paş"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Rûpela Pêş"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 xulek"
|
||||||
|
other: "{{ .Count }} xulek"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Pêrist"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Wergeran"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Xanî"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "Jê bigire"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "Hat jêgirtin!"
|
25
i18n/mn.yaml
Normal file
25
i18n/mn.yaml
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
- id: prev_page
|
||||||
|
translation: "Ѳмнѳх"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Дараах"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 МИН"
|
||||||
|
other: "{{ .Count }} МИН"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Агуулга"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Орчуулга"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Нүүр"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "хуулах"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "хуулсан!"
|
28
i18n/ms.yaml
Normal file
28
i18n/ms.yaml
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
- id: prev_page
|
||||||
|
translation: "Halaman Sebelumnya"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Halaman Seterusnya"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one: "1 minit"
|
||||||
|
other: "{{ .Count }} minit"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Isi Kandungan"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Terjemahan"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Home"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Sunting"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "Salin"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "Disalin!"
|
33
i18n/nl.yaml
Normal file
33
i18n/nl.yaml
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
- id: prev_page
|
||||||
|
translation: "Vorige"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Volgende"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one: "1 min"
|
||||||
|
other: "{{ .Count }} min"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "woord"
|
||||||
|
other: "{{ .Count }} woorden"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Inhoudsopgave"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Vertalingen"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Startpagina"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Bewerk"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "kopieer"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "gekopieerd!"
|
33
i18n/no.yaml
Normal file
33
i18n/no.yaml
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
- id: prev_page
|
||||||
|
translation: "Forrige Side"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Neste Side"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one: "1 min"
|
||||||
|
other: "{{ .Count }} min"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one: "ord"
|
||||||
|
other: "{{ .Count }} ord"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Innholdsfortegnelse"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Oversettelser"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Hjem"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Rediger"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "Kopier"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "Kopiert!"
|
33
i18n/pl.yaml
Normal file
33
i18n/pl.yaml
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
- id: prev_page
|
||||||
|
translation: "Poprzednia"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Następna"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one: "1 min"
|
||||||
|
other: "{{ .Count }} min"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "słowo"
|
||||||
|
other: "{{ .Count }} słów"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Spis treści"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Tłumaczenia"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Strona Główna"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Edytuj"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "Kopiuj"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "Skopiowano!"
|
17
i18n/pt.yaml
17
i18n/pt.yaml
|
@ -9,8 +9,25 @@
|
||||||
one: "1 minuto"
|
one: "1 minuto"
|
||||||
other: "{{ .Count }} minutos"
|
other: "{{ .Count }} minutos"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "palavra"
|
||||||
|
other: "{{ .Count }} palavras"
|
||||||
|
|
||||||
- id: toc
|
- id: toc
|
||||||
translation: "Conteúdo"
|
translation: "Conteúdo"
|
||||||
|
|
||||||
- id: translations
|
- id: translations
|
||||||
translation: "Traduções"
|
translation: "Traduções"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Início"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Editar"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "copiar"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "copiado!"
|
||||||
|
|
33
i18n/ro.yaml
Normal file
33
i18n/ro.yaml
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
- id: prev_page
|
||||||
|
translation: "Înapoi"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Înainte"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 minut"
|
||||||
|
other: "{{ .Count }} minute"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "cuvânt"
|
||||||
|
other: "{{ .Count }} cuvinte"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Sumar"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Traduceri"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Acasă"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Editează"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "copiază"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "copiat!"
|
35
i18n/ru.yaml
35
i18n/ru.yaml
|
@ -1,14 +1,39 @@
|
||||||
- id: prev_page
|
- id: prev_page
|
||||||
translation: 'Предыдущая'
|
translation: "Предыдущая"
|
||||||
|
|
||||||
- id: next_page
|
- id: next_page
|
||||||
translation: 'Следующая'
|
translation: "Следующая"
|
||||||
|
|
||||||
- id: read_time
|
- id: read_time
|
||||||
translation: '{{ .Count }} мин'
|
translation:
|
||||||
|
zero: "0 минут"
|
||||||
|
one: "1 минута"
|
||||||
|
few: "{{ .Count }} минуты"
|
||||||
|
many: "{{ .Count }} минут"
|
||||||
|
other: "{{ .Count }} минута"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
zero: "0 слов"
|
||||||
|
one: "1 слово"
|
||||||
|
few: "{{ .Count }} слова"
|
||||||
|
many: "{{ .Count }} слов"
|
||||||
|
other: "{{ .Count }} слово"
|
||||||
|
|
||||||
- id: toc
|
- id: toc
|
||||||
translation: 'Оглавление'
|
translation: "Оглавление"
|
||||||
|
|
||||||
- id: translations
|
- id: translations
|
||||||
translation: 'Переводы'
|
translation: "Переводы"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Главная"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Редактировать"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "копировать"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "скопировано!"
|
28
i18n/sv.yaml
Normal file
28
i18n/sv.yaml
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
- id: prev_page
|
||||||
|
translation: "Förra Sidan"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Nästa Sida"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one: "1 min"
|
||||||
|
other: "{{ .Count }} min"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Innehållsförteckning"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Översättningar"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Hem"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Redigera"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "kopiera"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "kopierad!"
|
33
i18n/sw.yaml
Normal file
33
i18n/sw.yaml
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
- id: prev_page
|
||||||
|
translation: "Uliopita"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Ujao"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "dakika 1"
|
||||||
|
other: "dakika {{ .Count }}"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "neno"
|
||||||
|
other: "maneno {{ .Count }}"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Jedwali la Yaliyomo"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Tafsiri"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Mwanzo"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Hariri"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "nakili"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "nakiliwa!"
|
33
i18n/th.yaml
Normal file
33
i18n/th.yaml
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
- id: prev_page
|
||||||
|
translation: "ก่อนหน้า"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "ถัดไป"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 นาที"
|
||||||
|
other: "{{ .Count }} นาที"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "คำ"
|
||||||
|
other: "{{ .Count }} คำ"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "สารบัญ"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "การแปล"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "หน้าหลัก"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "แก้ไข"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "คัดลอก"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "คัดลอกแล้ว!"
|
33
i18n/tr.yaml
Normal file
33
i18n/tr.yaml
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
- id: prev_page
|
||||||
|
translation: "Önceki"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Sonraki"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 dk"
|
||||||
|
other: "{{ .Count }} dk"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one : "kelime"
|
||||||
|
other: "{{ .Count }} kelime"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "İçindekiler"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Çeviriler"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Anasayfa"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Düzenle"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "Kopyala"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "Kopyalandı!"
|
25
i18n/uk.yaml
Normal file
25
i18n/uk.yaml
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
- id: prev_page
|
||||||
|
translation: "Попередня"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Наступна"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 хвилина"
|
||||||
|
other: "{{ .Count }} хвилин"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Зміст"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Переклади"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Головна"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "копіювати"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "скопійовано!"
|
33
i18n/vi.yaml
Normal file
33
i18n/vi.yaml
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
- id: prev_page
|
||||||
|
translation: "Trang trước"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "Trang tiếp theo"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one: "1 phút"
|
||||||
|
other: "{{ .Count }} phút"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one: "từ"
|
||||||
|
other: "{{ .Count }} từ"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "Mục lục"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "Bản dịch"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "Trang chủ"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "Chỉnh sửa"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "Sao chép"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "Đã sao chép!"
|
33
i18n/zh-tw.yaml
Normal file
33
i18n/zh-tw.yaml
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
- id: prev_page
|
||||||
|
translation: "上一頁"
|
||||||
|
|
||||||
|
- id: next_page
|
||||||
|
translation: "下一頁"
|
||||||
|
|
||||||
|
- id: read_time
|
||||||
|
translation:
|
||||||
|
one : "1 分鐘"
|
||||||
|
other: "{{ .Count }} 分鐘"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one: "字"
|
||||||
|
other: "{{ .Count }} 字"
|
||||||
|
|
||||||
|
- id: toc
|
||||||
|
translation: "目錄"
|
||||||
|
|
||||||
|
- id: translations
|
||||||
|
translation: "語言"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "首頁"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "編輯"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "複製"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "已複製!"
|
17
i18n/zh.yaml
17
i18n/zh.yaml
|
@ -9,8 +9,25 @@
|
||||||
one : "1 分钟"
|
one : "1 分钟"
|
||||||
other: "{{ .Count }} 分钟"
|
other: "{{ .Count }} 分钟"
|
||||||
|
|
||||||
|
- id: words
|
||||||
|
translation:
|
||||||
|
one: "字"
|
||||||
|
other: "{{ .Count }} 字"
|
||||||
|
|
||||||
- id: toc
|
- id: toc
|
||||||
translation: "目录"
|
translation: "目录"
|
||||||
|
|
||||||
- id: translations
|
- id: translations
|
||||||
translation: "语言"
|
translation: "语言"
|
||||||
|
|
||||||
|
- id: home
|
||||||
|
translation: "主页"
|
||||||
|
|
||||||
|
- id: edit_post
|
||||||
|
translation: "编辑"
|
||||||
|
|
||||||
|
- id: code_copy
|
||||||
|
translation: "复制"
|
||||||
|
|
||||||
|
- id: code_copied
|
||||||
|
translation: "已复制!"
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
{{ define "main" }}
|
{{- define "main" }}
|
||||||
<div class="not-found">404</div>
|
<div class="not-found">404</div>
|
||||||
{{ end }}{{/* end main */}}
|
{{- end }}{{/* end main */ -}}
|
||||||
|
|
|
@ -1,7 +1,25 @@
|
||||||
{{- define "main" }}
|
{{- define "main" }}
|
||||||
|
|
||||||
<header class="page-header">
|
<header class="page-header">
|
||||||
<h1>{{ .Title }}</h1>
|
<h1>
|
||||||
|
{{ .Title }}
|
||||||
|
{{- if (.Param "ShowRssButtonInSectionTermList") }}
|
||||||
|
{{- $rss := (.OutputFormats.Get "rss") }}
|
||||||
|
{{- if (eq .Kind `page`) }}
|
||||||
|
{{- $rss = (.Parent.OutputFormats.Get "rss") }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with $rss }}
|
||||||
|
<a href="{{ .RelPermalink }}" title="RSS" aria-label="RSS">
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
||||||
|
stroke-linecap="round" stroke-linejoin="round" height="23">
|
||||||
|
<path d="M4 11a9 9 0 0 1 9 9" />
|
||||||
|
<path d="M4 4a16 16 0 0 1 16 16" />
|
||||||
|
<circle cx="5" cy="19" r="1" />
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
</h1>
|
||||||
{{- if .Description }}
|
{{- if .Description }}
|
||||||
<div class="post-description">
|
<div class="post-description">
|
||||||
{{ .Description }}
|
{{ .Description }}
|
||||||
|
@ -10,6 +28,11 @@
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
{{- $pages := where site.RegularPages "Type" "in" site.Params.mainSections }}
|
{{- $pages := where site.RegularPages "Type" "in" site.Params.mainSections }}
|
||||||
|
|
||||||
|
{{- if site.Params.ShowAllPagesInArchive }}
|
||||||
|
{{- $pages = site.RegularPages }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
{{- range $pages.GroupByPublishDate "2006" }}
|
{{- range $pages.GroupByPublishDate "2006" }}
|
||||||
{{- if ne .Key "0001" }}
|
{{- if ne .Key "0001" }}
|
||||||
<div class="archive-year">
|
<div class="archive-year">
|
||||||
|
@ -20,11 +43,19 @@
|
||||||
<div class="archive-month">
|
<div class="archive-month">
|
||||||
<h3 class="archive-month-header">{{- .Key }}<sup class="archive-count"> {{ len .Pages }}</sup></h3>
|
<h3 class="archive-month-header">{{- .Key }}<sup class="archive-count"> {{ len .Pages }}</sup></h3>
|
||||||
<div class="archive-posts">
|
<div class="archive-posts">
|
||||||
{{- range .Pages }}
|
{{- range .Pages }}
|
||||||
{{- if eq .Kind "page" }}
|
{{- if eq .Kind "page" }}
|
||||||
<div class="archive-entry">
|
<div class="archive-entry">
|
||||||
<h3 class="archive-entry-title">
|
<h3 class="archive-entry-title entry-hint-parent">
|
||||||
{{- .Title | markdownify }}
|
{{- .Title | markdownify }}
|
||||||
|
{{- if .Draft }}
|
||||||
|
<span class="entry-hint" title="Draft">
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" height="15" viewBox="0 -960 960 960" fill="currentColor">
|
||||||
|
<path
|
||||||
|
d="M160-410v-60h300v60H160Zm0-165v-60h470v60H160Zm0-165v-60h470v60H160Zm360 580v-123l221-220q9-9 20-13t22-4q12 0 23 4.5t20 13.5l37 37q9 9 13 20t4 22q0 11-4.5 22.5T862.09-380L643-160H520Zm300-263-37-37 37 37ZM580-220h38l121-122-18-19-19-18-122 121v38Zm141-141-19-18 37 37-18-19Z" />
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
{{- end }}
|
||||||
</h3>
|
</h3>
|
||||||
<div class="archive-meta">
|
<div class="archive-meta">
|
||||||
{{- partial "post_meta.html" . -}}
|
{{- partial "post_meta.html" . -}}
|
||||||
|
@ -40,4 +71,4 @@
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
{{- end }}{{/* end main */}}
|
{{- end }}{{/* end main */}}
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
|
{{- if lt hugo.Version "0.112.4" }}
|
||||||
|
{{- errorf "=> hugo v0.112.4 or greater is required for hugo-PaperMod to build " }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="{{ .Site.Language }}" dir="{{ .Language.LanguageDirection | default "auto" }}">
|
<html lang="{{ site.Language }}" dir="{{ .Language.LanguageDirection | default "auto" }}">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
{{- partial "head.html" . }}
|
{{- partial "head.html" . }}
|
||||||
|
@ -9,16 +13,15 @@
|
||||||
{{- if (or (ne .Kind `page` ) (eq .Layout `archives`) (eq .Layout `search`)) -}}
|
{{- if (or (ne .Kind `page` ) (eq .Layout `archives`) (eq .Layout `search`)) -}}
|
||||||
{{- print "list" -}}
|
{{- print "list" -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- if eq $.Site.Params.defaultTheme `dark` -}}
|
{{- if eq site.Params.defaultTheme `dark` -}}
|
||||||
{{- print " dark" }}
|
{{- print " dark" }}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
" id="top">
|
" id="top">
|
||||||
{{- partialCached "header.html" . .Page}}
|
{{- partialCached "header.html" . .Page -}}
|
||||||
<main class="main">
|
<main class="main">
|
||||||
{{- block "main" . }}
|
{{- block "main" . }}{{ end }}
|
||||||
{{- end }}
|
|
||||||
</main>
|
</main>
|
||||||
{{- partialCached "footer.html" . .Type .Layout .Params }}
|
{{ partialCached "footer.html" . .Layout .Kind (.Param "hideFooter") (.Param "ShowCodeCopyButtons") -}}
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{{- $.Scratch.Add "index" slice -}}
|
{{- $.Scratch.Add "index" slice -}}
|
||||||
{{- range .Site.RegularPages -}}
|
{{- range site.RegularPages -}}
|
||||||
{{- if and (not .Params.searchHidden) (ne .Layout `archives`) (ne .Layout `search`) }}
|
{{- if and (not .Params.searchHidden) (ne .Layout `archives`) (ne .Layout `search`) }}
|
||||||
{{- $.Scratch.Add "index" (dict "title" .Title "content" .Plain "permalink" .Permalink "summary" .Summary) -}}
|
{{- $.Scratch.Add "index" (dict "title" .Title "content" .Plain "permalink" .Permalink "summary" .Summary) -}}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
|
@ -1,39 +1,62 @@
|
||||||
{{- define "main" }}
|
{{- define "main" }}
|
||||||
|
|
||||||
{{- if (and .Site.Params.profileMode.enabled .IsHome) }}
|
{{- if (and site.Params.profileMode.enabled .IsHome) }}
|
||||||
{{- partial "index_profile.html" . }}
|
{{- partial "index_profile.html" . }}
|
||||||
{{- else }} {{/* if not profileMode */}}
|
{{- else }} {{/* if not profileMode */}}
|
||||||
|
|
||||||
{{- if not .IsHome | and .Title }}
|
{{- if not .IsHome | and .Title }}
|
||||||
<header class="page-header">
|
<header class="page-header">
|
||||||
{{- partial "breadcrumbs.html" . }}
|
{{- partial "breadcrumbs.html" . }}
|
||||||
<h1>{{ .Title }}</h1>
|
<h1>
|
||||||
|
{{ .Title }}
|
||||||
|
{{- if and (or (eq .Kind `term`) (eq .Kind `section`)) (.Param "ShowRssButtonInSectionTermList") }}
|
||||||
|
{{- with .OutputFormats.Get "rss" }}
|
||||||
|
<a href="{{ .RelPermalink }}" title="RSS" aria-label="RSS">
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
||||||
|
stroke-linecap="round" stroke-linejoin="round" height="23">
|
||||||
|
<path d="M4 11a9 9 0 0 1 9 9" />
|
||||||
|
<path d="M4 4a16 16 0 0 1 16 16" />
|
||||||
|
<circle cx="5" cy="19" r="1" />
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
</h1>
|
||||||
{{- if .Description }}
|
{{- if .Description }}
|
||||||
<div class="post-description">
|
<div class="post-description">
|
||||||
{{ .Description }}
|
{{ .Description | markdownify }}
|
||||||
</div>
|
</div>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
</header>
|
</header>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if .Content }}
|
||||||
|
<div class="post-content">
|
||||||
|
{{- if not (.Param "disableAnchoredHeadings") }}
|
||||||
|
{{- partial "anchored_headings.html" .Content -}}
|
||||||
|
{{- else }}{{ .Content }}{{ end }}
|
||||||
|
</div>
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
{{- $pages := union .RegularPages .Sections }}
|
{{- $pages := union .RegularPages .Sections }}
|
||||||
|
|
||||||
{{- if .IsHome }}
|
{{- if .IsHome }}
|
||||||
{{- $pages = where site.RegularPages "Type" "in" site.Params.mainSections }}
|
{{- $pages = where site.RegularPages "Type" "in" site.Params.mainSections }}
|
||||||
{{- end}}
|
{{- $pages = where $pages "Params.hiddenInHomeList" "!=" "true" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
{{ $paginator := .Paginate $pages }}
|
{{- $paginator := .Paginate $pages }}
|
||||||
|
|
||||||
{{- if and .IsHome .Site.Params.homeInfoParams (eq $paginator.PageNumber 1) }}
|
{{- if and .IsHome site.Params.homeInfoParams (eq $paginator.PageNumber 1) }}
|
||||||
{{- partial "home_info.html" . }}
|
{{- partial "home_info.html" . }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
{{ $term := .Data.Term}}
|
{{- $term := .Data.Term }}
|
||||||
{{- range $index, $page := $paginator.Pages }}
|
{{- range $index, $page := $paginator.Pages }}
|
||||||
|
|
||||||
{{- $class := "post-entry" }}
|
{{- $class := "post-entry" }}
|
||||||
|
|
||||||
{{- $user_preferred := or .Site.Params.disableSpecial1stPost .Site.Params.homeInfoParams }}
|
{{- $user_preferred := or site.Params.disableSpecial1stPost site.Params.homeInfoParams }}
|
||||||
{{- if (and $.IsHome (eq $paginator.PageNumber 1) (eq $index 0) (not $user_preferred)) }}
|
{{- if (and $.IsHome (eq $paginator.PageNumber 1) (eq $index 0) (not $user_preferred)) }}
|
||||||
{{- $class = "first-entry" }}
|
{{- $class = "first-entry" }}
|
||||||
{{- else if $term }}
|
{{- else if $term }}
|
||||||
|
@ -41,18 +64,25 @@
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
<article class="{{ $class }}">
|
<article class="{{ $class }}">
|
||||||
{{- $isHidden := (.Site.Params.cover.hidden | default .Site.Params.cover.hiddenInList)}}
|
{{- $isHidden := (.Param "cover.hiddenInList") | default (.Param "cover.hidden") | default false }}
|
||||||
{{- partial "cover.html" (dict "cxt" . "IsHome" true "isHidden" $isHidden) }}
|
{{- partial "cover.html" (dict "cxt" . "IsSingle" false "isHidden" $isHidden) }}
|
||||||
<header class="entry-header">
|
<header class="entry-header">
|
||||||
<h2>
|
<h2 class="entry-hint-parent">
|
||||||
{{ .Title }}
|
{{- .Title }}
|
||||||
{{- if .Draft }}<div class="entry-isdraft"><sup> [draft]</sup></div>{{- end }}
|
{{- if .Draft }}
|
||||||
|
<span class="entry-hint" title="Draft">
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" height="20" viewBox="0 -960 960 960" fill="currentColor">
|
||||||
|
<path
|
||||||
|
d="M160-410v-60h300v60H160Zm0-165v-60h470v60H160Zm0-165v-60h470v60H160Zm360 580v-123l221-220q9-9 20-13t22-4q12 0 23 4.5t20 13.5l37 37q9 9 13 20t4 22q0 11-4.5 22.5T862.09-380L643-160H520Zm300-263-37-37 37 37ZM580-220h38l121-122-18-19-19-18-122 121v38Zm141-141-19-18 37 37-18-19Z" />
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
{{- end }}
|
||||||
</h2>
|
</h2>
|
||||||
</header>
|
</header>
|
||||||
{{- if (ne (.Param "hideSummary") true)}}
|
{{- if (ne (.Param "hideSummary") true) }}
|
||||||
<section class="entry-content">
|
<div class="entry-content">
|
||||||
<p>{{ .Summary | plainify | htmlUnescape }}{{- if .Truncated }}...{{- end -}}</p>
|
<p>{{ .Summary | plainify | htmlUnescape }}{{ if .Truncated }}...{{ end }}</p>
|
||||||
</section>
|
</div>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if not (.Param "hideMeta") }}
|
{{- if not (.Param "hideMeta") }}
|
||||||
<footer class="entry-footer">
|
<footer class="entry-footer">
|
||||||
|
@ -67,13 +97,25 @@
|
||||||
<footer class="page-footer">
|
<footer class="page-footer">
|
||||||
<nav class="pagination">
|
<nav class="pagination">
|
||||||
{{- if $paginator.HasPrev }}
|
{{- if $paginator.HasPrev }}
|
||||||
<a class="prev" href="{{ $paginator.Prev.URL | absURL }}">« {{ i18n "prev_page" }}</a>
|
<a class="prev" href="{{ $paginator.Prev.URL | absURL }}">
|
||||||
|
« {{ i18n "prev_page" }}
|
||||||
|
{{- if (.Param "ShowPageNums") }}
|
||||||
|
{{- sub $paginator.PageNumber 1 }}/{{ $paginator.TotalPages }}
|
||||||
|
{{- end }}
|
||||||
|
</a>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if $paginator.HasNext }}
|
{{- if $paginator.HasNext }}
|
||||||
<a class="next" href="{{ $paginator.Next.URL | absURL }}">{{ i18n "next_page" }} »</a>
|
<a class="next" href="{{ $paginator.Next.URL | absURL }}">
|
||||||
|
{{- i18n "next_page" }}
|
||||||
|
{{- if (.Param "ShowPageNums") }}
|
||||||
|
{{- add 1 $paginator.PageNumber }}/{{ $paginator.TotalPages }}
|
||||||
|
{{- end }} »
|
||||||
|
</a>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
</nav>
|
</nav>
|
||||||
</footer>
|
</footer>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{end}}{{/* end profileMode */}}
|
|
||||||
|
{{- end }}{{/* end profileMode */}}
|
||||||
|
|
||||||
{{- end }}{{- /* end main */ -}}
|
{{- end }}{{- /* end main */ -}}
|
||||||
|
|
|
@ -1,47 +1,80 @@
|
||||||
{{- $pctx := . -}}
|
{{- /* Deprecate site.Author.email in favor of site.Params.author.email */}}
|
||||||
{{- if .IsHome -}}{{ $pctx = .Site }}{{- end -}}
|
{{- $authorEmail := "" }}
|
||||||
{{- $pages := slice -}}
|
{{- with site.Params.author }}
|
||||||
{{- if or $.IsHome $.IsSection -}}
|
{{- if reflect.IsMap . }}
|
||||||
{{- $pages = $pctx.RegularPages -}}
|
{{- with .email }}
|
||||||
{{- else -}}
|
{{- $authorEmail = . }}
|
||||||
{{- $pages = $pctx.Pages -}}
|
{{- end }}
|
||||||
{{- end -}}
|
{{- end }}
|
||||||
{{- $limit := .Site.Config.Services.RSS.Limit -}}
|
{{- else }}
|
||||||
{{- if ge $limit 1 -}}
|
{{- with site.Author.email }}
|
||||||
{{- $pages = $pages | first $limit -}}
|
{{- $authorEmail = . }}
|
||||||
{{- end -}}
|
{{- warnf "The author key in site configuration is deprecated. Use params.author.email instead." }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- /* Deprecate site.Author.name in favor of site.Params.author.name */}}
|
||||||
|
{{- $authorName := "" }}
|
||||||
|
{{- with site.Params.author }}
|
||||||
|
{{- if reflect.IsMap . }}
|
||||||
|
{{- with .name }}
|
||||||
|
{{- $authorName = . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
{{- $authorName = . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
{{- with site.Author.name }}
|
||||||
|
{{- $authorName = . }}
|
||||||
|
{{- warnf "The author key in site configuration is deprecated. Use params.author.name instead." }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- $pctx := . }}
|
||||||
|
{{- if .IsHome }}{{ $pctx = site }}{{ end }}
|
||||||
|
{{- $pages := slice }}
|
||||||
|
{{- if or $.IsHome $.IsSection }}
|
||||||
|
{{- $pages = $pctx.RegularPages }}
|
||||||
|
{{- else }}
|
||||||
|
{{- $pages = $pctx.Pages }}
|
||||||
|
{{- end }}
|
||||||
|
{{- $limit := site.Config.Services.RSS.Limit }}
|
||||||
|
{{- if ge $limit 1 }}
|
||||||
|
{{- $pages = $pages | first $limit }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
{{- printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" | safeHTML }}
|
{{- printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" | safeHTML }}
|
||||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
<feed xmlns="http://www.w3.org/2005/Atom">
|
||||||
<channel>
|
<title>{{ if eq .Title site.Title }}{{ site.Title }}{{ else }}{{ with .Title }}{{ . }} on {{ end }}{{ site.Title }}{{ end }}</title>
|
||||||
<title>{{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }}</title>
|
<link rel="alternate" href="{{ (.OutputFormats.Get "HTML").Permalink }}" />
|
||||||
<link>{{ .Permalink }}</link>
|
<link rel="self" href="{{ (.OutputFormats.Get "RSS").Permalink }}" />
|
||||||
<description>Recent content {{ if ne .Title .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }}</description>
|
<subtitle>Recent content {{ if ne .Title site.Title }}{{ with .Title }}in {{ . }} {{ end }}{{ end }}on {{ site.Title }}</subtitle>
|
||||||
{{- with $.Site.Params.images }}
|
<id>{{ .Permalink }}</id>
|
||||||
<image>
|
<generator uri="http://gohugo.io" version="{{ hugo.Version }}">Hugo</generator>
|
||||||
<url>{{ index . 0 | absURL }}</url>
|
<language>{{ site.Language.LanguageCode }}</language>
|
||||||
<link>{{ index . 0 | absURL }}</link>
|
<updated>{{ .Date.Format "2006-01-02T15:04:05Z07:00" | safeHTML }}</updated>
|
||||||
</image>
|
<author>
|
||||||
{{- end }}
|
{{ with $authorName }}<name>{{ . }}</name>{{ end }}
|
||||||
<generator>Hugo -- gohugo.io</generator>{{ with .Site.LanguageCode }}
|
{{ with $authorEmail }}<name>{{ . }}</name>{{ end }}
|
||||||
<language>{{.}}</language>{{end}}{{ with .Site.Author.email }}
|
</author>
|
||||||
<managingEditor>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with .Site.Author.email }}
|
{{ with site.Copyright }}<rights>{{ . }}</rights>{{ end }}
|
||||||
<webMaster>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with .Site.Copyright }}
|
|
||||||
<copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }}
|
{{- range $pages }}
|
||||||
<lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }}
|
|
||||||
{{- with .OutputFormats.Get "RSS" -}}
|
|
||||||
{{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }}
|
|
||||||
{{- end -}}
|
|
||||||
{{ range $pages }}
|
|
||||||
{{- if and (ne .Layout `search`) (ne .Layout `archives`) }}
|
{{- if and (ne .Layout `search`) (ne .Layout `archives`) }}
|
||||||
<item>
|
<entry>
|
||||||
<title>{{ .Title }}</title>
|
<title>{{ .Title }}</title>
|
||||||
<link>{{ .Permalink }}</link>
|
<link rel="alternate" href="{{ .Permalink }}" />
|
||||||
<pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
|
<id>{{ .Permalink }}</id>
|
||||||
{{ with .Site.Author.email }}<author>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</author>{{end}}
|
<published>{{ .Date.Format "2006-01-02T15:04:05Z07:00" | safeHTML }}</published>
|
||||||
<guid>{{ .Permalink }}</guid>
|
<updated>{{ .Lastmod.Format "2006-01-02T15:04:05Z07:00" | safeHTML }}</updated>
|
||||||
<description>{{ with .Description | html }}{{ . }}{{ else }}{{ .Summary | html }}{{ end -}}</description>
|
<summary type="html">{{ with .Description | html }}{{ . }}{{ else }}{{ .Summary | html }}{{ end -}}</summary>
|
||||||
</item>
|
{{- if site.Params.ShowFullTextinRSS }}
|
||||||
|
<content type="html">{{ (printf "<![CDATA[%s]]>" .Content) | safeHTML }}</content>
|
||||||
|
{{- end }}
|
||||||
|
</entry>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{ end }}
|
{{- end }}
|
||||||
</channel>
|
|
||||||
</rss>
|
</feed>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{{- define "main" }}
|
{{- define "main" }}
|
||||||
|
|
||||||
<header class="page-header">
|
<header class="page-header">
|
||||||
<h1>{{ .Title }}
|
<h1>{{- (printf "%s " .Title ) | htmlUnescape -}}
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 24 24" fill="none"
|
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 24 24" fill="none"
|
||||||
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||||||
<circle cx="11" cy="11" r="8"></circle>
|
<circle cx="11" cy="11" r="8"></circle>
|
||||||
|
@ -17,12 +17,16 @@
|
||||||
<div class="post-meta">
|
<div class="post-meta">
|
||||||
{{- partial "translation_list.html" . -}}
|
{{- partial "translation_list.html" . -}}
|
||||||
</div>
|
</div>
|
||||||
{{- end}}
|
{{- end }}
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<div id="searchbox">
|
<div id="searchbox">
|
||||||
<input id="searchInput" autofocus placeholder="{{.Title}} ↵" aria-label="search" type="search">
|
<input id="searchInput" autofocus placeholder="{{ .Params.placeholder | default (printf "%s ↵" .Title) }}"
|
||||||
|
aria-label="search" type="search" autocomplete="off" maxlength="64">
|
||||||
<ul id="searchResults" aria-label="search results"></ul>
|
<ul id="searchResults" aria-label="search results"></ul>
|
||||||
|
<noscript>
|
||||||
|
Enable JavaScript to use the search function.
|
||||||
|
</noscript>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{- end }}{{/* end main */}}
|
{{- end }}{{/* end main */}}
|
||||||
|
|
|
@ -2,10 +2,17 @@
|
||||||
|
|
||||||
<article class="post-single">
|
<article class="post-single">
|
||||||
<header class="post-header">
|
<header class="post-header">
|
||||||
{{- partial "breadcrumbs.html" . }}
|
{{ partial "breadcrumbs.html" . }}
|
||||||
<h1 class="post-title">
|
<h1 class="post-title entry-hint-parent">
|
||||||
{{ .Title }}
|
{{ .Title }}
|
||||||
{{- if .Draft }}<div class="entry-isdraft"><sup> [draft]</sup></div>{{- end }}
|
{{- if .Draft }}
|
||||||
|
<span class="entry-hint" title="Draft">
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" height="35" viewBox="0 -960 960 960" fill="currentColor">
|
||||||
|
<path
|
||||||
|
d="M160-410v-60h300v60H160Zm0-165v-60h470v60H160Zm0-165v-60h470v60H160Zm360 580v-123l221-220q9-9 20-13t22-4q12 0 23 4.5t20 13.5l37 37q9 9 13 20t4 22q0 11-4.5 22.5T862.09-380L643-160H520Zm300-263-37-37 37 37ZM580-220h38l121-122-18-19-19-18-122 121v38Zm141-141-19-18 37 37-18-19Z" />
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
{{- end }}
|
||||||
</h1>
|
</h1>
|
||||||
{{- if .Description }}
|
{{- if .Description }}
|
||||||
<div class="post-description">
|
<div class="post-description">
|
||||||
|
@ -14,60 +21,42 @@
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if not (.Param "hideMeta") }}
|
{{- if not (.Param "hideMeta") }}
|
||||||
<div class="post-meta">
|
<div class="post-meta">
|
||||||
{{- partial "post_meta.html" . -}}
|
{{- partial "post_meta.html" . -}}
|
||||||
{{- partial "translation_list.html" . -}}
|
{{- partial "translation_list.html" . -}}
|
||||||
{{- partial "edit_post.html" . -}}
|
{{- partial "edit_post.html" . -}}
|
||||||
|
{{- partial "post_canonical.html" . -}}
|
||||||
</div>
|
</div>
|
||||||
{{- end}}
|
<div class="post-meta">
|
||||||
|
{{- partial "post_lastmod.html" . -}}
|
||||||
|
</div>
|
||||||
|
{{- end }}
|
||||||
</header>
|
</header>
|
||||||
{{- $isHidden := .Params.cover.hidden | default .Site.Params.cover.hiddenInSingle | default .Site.Params.cover.hidden}}
|
{{- $isHidden := (.Param "cover.hiddenInSingle") | default (.Param "cover.hidden") | default false }}
|
||||||
{{- partial "cover.html" (dict "cxt" . "IsHome" false "isHidden" $isHidden) }}
|
{{- partial "cover.html" (dict "cxt" . "IsSingle" true "isHidden" $isHidden) }}
|
||||||
{{- if (.Param "ShowToc") }}
|
{{- if (.Param "ShowToc") }}
|
||||||
<div class="toc">
|
{{- partial "toc.html" . }}
|
||||||
<details {{if (.Param "TocOpen") }} open{{ end }}>
|
{{- end }}
|
||||||
<summary accesskey="c" title="(Alt + C)">
|
|
||||||
<div class="details">{{- i18n "toc" | default "Table of Contents" }}</div>
|
{{- if .Content }}
|
||||||
</summary>
|
<div class="post-content">
|
||||||
<div class="inner">
|
{{- if not (.Param "disableAnchoredHeadings") }}
|
||||||
{{- partial "toc.html" . }}
|
{{- partial "anchored_headings.html" .Content -}}
|
||||||
</div>
|
{{- else }}{{ .Content }}{{ end }}
|
||||||
</details>
|
|
||||||
</div>
|
</div>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
<div class="post-content">
|
|
||||||
{{- partial "anchored_headings.html" .Content -}}
|
|
||||||
</div>
|
|
||||||
<footer class="post-footer">
|
<footer class="post-footer">
|
||||||
{{- if .Params.tags }}
|
{{- $tags := .Language.Params.Taxonomies.tag | default "tags" }}
|
||||||
<ul class="post-tags">
|
<ul class="post-tags">
|
||||||
{{- range ($.GetTerms "tags") }}
|
{{- range ($.GetTerms $tags) }}
|
||||||
<li><a href="{{ .Permalink }}">{{ .LinkTitle }}</a></li>
|
<li><a href="{{ .Permalink }}">{{ .LinkTitle }}</a></li>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
</ul>
|
</ul>
|
||||||
{{- end }}
|
|
||||||
{{- if (.Param "ShowPostNavLinks") }}
|
{{- if (.Param "ShowPostNavLinks") }}
|
||||||
{{- $pages := where site.RegularPages "Type" "in" site.Params.mainSections }}
|
{{- partial "post_nav_links.html" . }}
|
||||||
{{- if and (gt (len $pages) 1) (in $pages . ) }}
|
|
||||||
<nav class="paginav">
|
|
||||||
{{- with $pages.Next . }}
|
|
||||||
<a class="prev" href="{{.Permalink}}">
|
|
||||||
<span class="title">« {{ i18n "prev_page" }}</span>
|
|
||||||
<br>
|
|
||||||
<span>{{- .Name -}}</span>
|
|
||||||
</a>
|
|
||||||
{{- end}}
|
|
||||||
{{- with $pages.Prev . }}
|
|
||||||
<a class="next" href="{{.Permalink}}">
|
|
||||||
<span class="title">{{ i18n "next_page" }} »</span>
|
|
||||||
<br>
|
|
||||||
<span>{{- .Name -}}</span>
|
|
||||||
</a>
|
|
||||||
{{- end}}
|
|
||||||
</nav>
|
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- if (and site.Params.ShowShareButtons (ne .Params.disableShare true)) }}
|
||||||
{{- if (and .Site.Params.ShowShareButtons (ne .Params.disableShare true) ) }}
|
{{- partial "share_icons.html" . -}}
|
||||||
{{- partial "share_icons.html" . }}
|
|
||||||
{{- end }}
|
{{- end }}
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
|
@ -76,4 +65,4 @@
|
||||||
{{- end }}
|
{{- end }}
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
{{- end }}{{/* end main */}}
|
{{- end }}{{/* end main */}}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{{ define "main" }}
|
{{- define "main" }}
|
||||||
|
|
||||||
{{- if .Title }}
|
{{- if .Title }}
|
||||||
<header class="page-header">
|
<header class="page-header">
|
||||||
|
@ -16,7 +16,7 @@
|
||||||
{{- range $key, $value := .Data.Terms.Alphabetical }}
|
{{- range $key, $value := .Data.Terms.Alphabetical }}
|
||||||
{{- $name := .Name }}
|
{{- $name := .Name }}
|
||||||
{{- $count := .Count }}
|
{{- $count := .Count }}
|
||||||
{{- with $.Site.GetPage (printf "/%s/%s" $type $name) }}
|
{{- with site.GetPage (printf "/%s/%s" $type $name) }}
|
||||||
<li>
|
<li>
|
||||||
<a href="{{ .Permalink }}">{{ .Name }} <sup><strong><sup>{{ $count }}</sup></strong></sup> </a>
|
<a href="{{ .Permalink }}">{{ .Name }} <sup><strong><sup>{{ $count }}</sup></strong></sup> </a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -24,4 +24,4 @@
|
||||||
{{- end }}
|
{{- end }}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
{{ end }}{{/* end main */}}
|
{{- end }}{{/* end main */ -}}
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
<!-- formats .Content headings by adding an anchor -->
|
{{- /* formats .Content headings by adding an anchor */ -}}
|
||||||
{{ . | replaceRE "(<h[1-6] id=\"([^\"]+)\".+)(</h[1-6]+>)" "${1}<a hidden class=\"anchor\" aria-hidden=\"true\" href=\"#${2}\">#</a>${3}" | safeHTML }}
|
{{ . | replaceRE "(<h[1-6] id=\"([^\"]+)\".+)(</h[1-6]+>)" "${1}<a hidden class=\"anchor\" aria-hidden=\"true\" href=\"#${2}\">#</a>${3}" | safeHTML }}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{{- if or .Params.author .Site.Params.author }}
|
{{- if or .Params.author site.Params.author }}
|
||||||
{{- $author := (.Params.author | default .Site.Params.author)}}
|
{{- $author := (.Params.author | default site.Params.author) }}
|
||||||
{{- $author_type := (printf "%T" $author) }}
|
{{- $author_type := (printf "%T" $author) }}
|
||||||
{{- if (or (eq $author_type "[]string") (eq $author_type "[]interface {}") ) }}
|
{{- if (or (eq $author_type "[]string") (eq $author_type "[]interface {}")) }}
|
||||||
{{- (delimit $author ", " ) }}
|
{{- (delimit $author ", " ) }}
|
||||||
{{- else }}
|
{{- else }}
|
||||||
{{- $author }}
|
{{- $author }}
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
{{- if (.Param "ShowBreadCrumbs")}}
|
{{- if (.Param "ShowBreadCrumbs") -}}
|
||||||
<div class="breadcrumbs">
|
<div class="breadcrumbs">
|
||||||
{{- $url := replace .Parent.Permalink ( printf "%s" .Site.BaseURL) "" }}
|
{{- $url := replace .Parent.Permalink (printf "%s" site.BaseURL) "" }}
|
||||||
{{- $lang_url := strings.TrimPrefix ( printf "%s/" .Lang) $url }}
|
{{- $lang_url := strings.TrimPrefix (printf "%s/" .Lang) $url -}}
|
||||||
|
|
||||||
<a href="{{ "" | absLangURL }}">{{ i18n "home" | default "Home"}}</a>
|
<a href="{{ "" | absLangURL }}">{{ i18n "home" | default "Home" }}</a>
|
||||||
{{- $scratch := newScratch }}
|
{{- $scratch := newScratch }}
|
||||||
{{- range $index, $element := split $lang_url "/" }}
|
{{- range $index, $element := split $lang_url "/" }}
|
||||||
|
|
||||||
{{- $scratch.Add "path" (printf "%s/" $element )}}
|
{{- $scratch.Add "path" (printf "%s/" $element )}}
|
||||||
{{- $bc_pg := $.Site.GetPage ($scratch.Get "path") -}}
|
{{- $bc_pg := site.GetPage ($scratch.Get "path") -}}
|
||||||
|
|
||||||
{{- if (and ($bc_pg) (gt (len . ) 0))}}
|
{{- if (and ($bc_pg) (gt (len . ) 0))}}
|
||||||
{{- print " » " | safeHTML -}}<a href="{{ $bc_pg.Permalink }}">{{ $bc_pg.Name }}</a>
|
{{- print " » " | safeHTML -}}<a href="{{ $bc_pg.Permalink }}">{{ $bc_pg.Name }}</a>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
{{- end }}
|
{{- end -}}
|
||||||
</div>
|
</div>
|
||||||
{{- end }}
|
{{- end -}}
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
<!-- Comments area start -->
|
{{- /* Comments area start */ -}}
|
||||||
<!--
|
{{- /* to add comments read => https://gohugo.io/content-management/comments/ */ -}}
|
||||||
to add comments read => https://gohugo.io/content-management/comments/
|
{{- /* Comments area end */ -}}
|
||||||
-->
|
|
||||||
<!-- Comments area end -->
|
|
||||||
|
|
|
@ -1,35 +1,43 @@
|
||||||
{{- with .cxt}} {{/* Apply proper context from dict */}}
|
{{- with .cxt}} {{/* Apply proper context from dict */}}
|
||||||
{{- if (and .Params.cover.image (not $.isHidden)) }}
|
{{- if (and .Params.cover.image (not $.isHidden)) }}
|
||||||
{{- $alt := (.Params.cover.alt | default .Params.cover.caption | plainify) }}
|
{{- $alt := (.Params.cover.alt | default .Params.cover.caption | plainify) }}
|
||||||
|
{{- $loading := cond $.IsSingle "eager" "lazy" }}
|
||||||
<figure class="entry-cover">
|
<figure class="entry-cover">
|
||||||
{{- $addLink := (and .Site.Params.cover.linkFullImages (not $.IsHome)) }}
|
{{- $responsiveImages := (.Params.cover.responsiveImages | default site.Params.cover.responsiveImages) | default true }}
|
||||||
{{- $cover := (.Page.Resources.ByType "image").GetMatch (printf "*%s*" (.Params.cover.image)) }}
|
{{- $addLink := (and site.Params.cover.linkFullImages $.IsSingle) }}
|
||||||
|
{{- $pageBundleCover := (.Resources.ByType "image").GetMatch (printf "*%s*" (.Params.cover.image)) }}
|
||||||
|
{{- $globalResourcesCover := (resources.ByType "image").GetMatch (printf "*%s*" (.Params.cover.image)) }}
|
||||||
|
{{- $cover := (or $pageBundleCover $globalResourcesCover)}}
|
||||||
{{- if $cover -}}{{/* i.e it is present in page bundle */}}
|
{{- if $cover -}}{{/* i.e it is present in page bundle */}}
|
||||||
{{- if $addLink }}<a href="{{ (path.Join .RelPermalink .Params.cover.image) | absURL }}" target="_blank"
|
{{- if $addLink }}<a href="{{ (path.Join .RelPermalink .Params.cover.image) | absURL }}"
|
||||||
rel="noopener noreferrer">{{ end -}}
|
rel="noopener noreferrer">{{ end -}}
|
||||||
{{- $sizes := (slice "360" "480" "720" "1080" "1500") }}
|
{{- $sizes := (slice "360" "480" "720" "1080" "1500") }}
|
||||||
{{- $processableFormats := (slice "jpg" "jpeg" "png" "tif" "bmp" "gif") }}
|
{{- $processableFormats := (slice "jpg" "jpeg" "png" "tif" "bmp" "gif") -}}
|
||||||
{{- $prod := (hugo.IsProduction | or (eq .Site.Params.env "production")) }}
|
{{- if hugo.IsExtended -}}
|
||||||
{{- if (and (in $processableFormats $cover.MediaType.SubType) (ne .Site.Params.cover.responsiveImages false) (eq $prod true)) }}
|
{{- $processableFormats = $processableFormats | append "webp" -}}
|
||||||
<img srcset="{{- range $size := $sizes -}}
|
{{- end -}}
|
||||||
|
{{- $prod := (hugo.IsProduction | or (eq site.Params.env "production")) }}
|
||||||
|
{{- if (and (in $processableFormats $cover.MediaType.SubType) ($responsiveImages) (eq $prod true)) }}
|
||||||
|
<img loading="{{$loading}}" srcset="{{- range $size := $sizes -}}
|
||||||
{{- if (ge $cover.Width $size) -}}
|
{{- if (ge $cover.Width $size) -}}
|
||||||
{{ printf "%s %s" (($cover.Resize (printf "%sx" $size)).Permalink) (printf "%sw ," $size) -}}
|
{{ printf "%s %s" (($cover.Resize (printf "%sx" $size)).Permalink) (printf "%sw ," $size) -}}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{- end -}}{{$cover.Permalink }} {{printf "%dw" ($cover.Width)}}"
|
{{- end -}}{{$cover.Permalink }} {{printf "%dw" ($cover.Width)}}"
|
||||||
sizes="(min-width: 768px) 720px, 100vw" src="{{ $cover.Permalink }}" alt="{{ $alt }}" />
|
sizes="(min-width: 768px) 720px, 100vw" src="{{ $cover.Permalink }}" alt="{{ $alt }}"
|
||||||
|
width="{{ $cover.Width }}" height="{{ $cover.Height }}">
|
||||||
{{- else }}{{/* Unprocessable image or responsive images disabled */}}
|
{{- else }}{{/* Unprocessable image or responsive images disabled */}}
|
||||||
<img src="{{ (path.Join .RelPermalink .Params.cover.image) | absURL }}" alt="{{ $alt }}">
|
<img loading="{{$loading}}" src="{{ (path.Join .RelPermalink .Params.cover.image) | absURL }}" alt="{{ $alt }}">
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- else }}{{/* For absolute urls and external links, no img processing here */}}
|
{{- else }}{{/* For absolute urls and external links, no img processing here */}}
|
||||||
{{- if $addLink }}<a href="{{ (.Params.cover.image) | absURL }}" target="_blank"
|
{{- if $addLink }}<a href="{{ (.Params.cover.image) | absURL }}"
|
||||||
rel="noopener noreferrer">{{ end -}}
|
rel="noopener noreferrer">{{ end -}}
|
||||||
<img src="{{ (.Params.cover.image) | absURL }}" alt="{{ $alt }}">
|
<img loading="{{$loading}}" src="{{ (.Params.cover.image) | absURL }}" alt="{{ $alt }}">
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if $addLink }}</a>{{ end -}}
|
{{- if $addLink }}</a>{{ end -}}
|
||||||
{{/* Display Caption */}}
|
{{/* Display Caption */}}
|
||||||
{{- if not $.IsHome }}
|
{{- if $.IsSingle }}
|
||||||
{{ with .Params.cover.caption }}<p>{{ . | markdownify }}</p>{{- end }}
|
{{ with .Params.cover.caption }}<p>{{ . | markdownify }}</p>{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
</figure>
|
</figure>
|
||||||
{{- end }}{{/* End image */}}
|
{{- end }}{{/* End image */}}
|
||||||
{{- end -}}{{/* End context */}}
|
{{- end -}}{{/* End context */ -}}
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
{{- if or .Params.editPost.URL .Site.Params.editPost.URL -}}
|
{{- if and (or .Params.editPost.URL site.Params.editPost.URL) (not (.Param "editPost.disabled")) -}}
|
||||||
{{- if or .Params.author $.Site.Params.author (.Param "ShowReadingTime") (not .Date.IsZero) .IsTranslated }}| {{- end -}}
|
{{- $fileUrlPath := path.Join .File.Path }}
|
||||||
<a href="{{ .Params.editPost.URL | default .Site.Params.editPost.URL }}{{ if .Params.editPost.appendFilePath | default ( .Site.Params.editPost.appendFilePath | default false ) }}/{{ .File.Path }}{{ end }}" rel="noopener noreferrer" target="_blank">
|
|
||||||
{{- .Params.editPost.Text | default (.Site.Params.editPost.Text | default (i18n "edit_post" | default "Edit") ) -}}
|
{{- if or .Params.author site.Params.author (.Param "ShowReadingTime") (not .Date.IsZero) .IsTranslated }} | {{- end -}}
|
||||||
|
<a href="{{ .Params.editPost.URL | default site.Params.editPost.URL }}{{ if .Params.editPost.appendFilePath | default ( site.Params.editPost.appendFilePath | default false ) }}/{{ $fileUrlPath }}{{ end }}" rel="noopener noreferrer">
|
||||||
|
{{- .Params.editPost.Text | default (site.Params.editPost.Text | default (i18n "edit_post" | default "Edit")) -}}
|
||||||
</a>
|
</a>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
<!-- Footer custom content area start -->
|
{{- /* Footer custom content area start */ -}}
|
||||||
<!--
|
{{- /* Insert any custom code web-analytics, resources, etc. here */ -}}
|
||||||
Insert any custom code web-analytics, resources, etc. here
|
{{- /* Footer custom content area end */ -}}
|
||||||
-->
|
|
||||||
<!-- Footer custom content area end -->
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
<!-- Head custom content area start -->
|
{{- /* Head custom content area start */ -}}
|
||||||
<!--
|
{{- /* Insert any custom code (web-analytics, resources, etc.) - it will appear in the <head></head> section of every page. */ -}}
|
||||||
Insert any custom code (web-analytics, resources, etc.) - it will appear in the <head></head> section of every page. Can be overwritten by partial with the same name in the global layouts.
|
{{- /* Can be overwritten by partial with the same name in the global layouts. */ -}}
|
||||||
-->
|
{{- /* Head custom content area end */ -}}
|
||||||
<!-- Head custom content area end -->
|
|
||||||
|
|
|
@ -1,94 +1,26 @@
|
||||||
|
{{- if not (.Param "hideFooter") }}
|
||||||
<footer class="footer">
|
<footer class="footer">
|
||||||
{{- if .Site.Copyright }}
|
{{- if site.Copyright }}
|
||||||
<span>{{ .Site.Copyright | markdownify }}</span>
|
<span>{{ site.Copyright | markdownify }}</span>
|
||||||
{{- else }}
|
{{- else }}
|
||||||
<span>© {{ now.Year }} <a href="{{ "" | absLangURL }}">{{ .Site.Title }}</a></span>
|
<span>© {{ now.Year }} <a href="{{ "" | absLangURL }}">{{ site.Title }}</a></span>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
<span>·</span>
|
<span>
|
||||||
<span>Powered by <a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a></span>
|
- Powered by
|
||||||
<span>·</span>
|
<a href="https://gohugo.io/" rel="noopener noreferrer">Hugo</a> &
|
||||||
<span>Theme <a href="https://git.io/hugopapermod" rel="noopener" target="_blank">PaperMod</a></span>
|
<a href="https://github.com/Wonderfall/hugo-WonderMod/" rel="noopener">WonderMod</a>
|
||||||
|
</span>
|
||||||
</footer>
|
</footer>
|
||||||
{{- if (not .Site.Params.disableScrollToTop) }}
|
{{- end }}
|
||||||
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)">
|
|
||||||
<button class="top-link" id="top-link" type="button" accesskey="g">
|
{{- if (not site.Params.disableScrollToTop) }}
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
|
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
|
||||||
<path d="M12 6H0l6-6z" />
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
|
||||||
</svg>
|
<path d="M12 6H0l6-6z" />
|
||||||
</button>
|
</svg>
|
||||||
</a>
|
</a>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- partial "extend_footer.html" . -}}
|
|
||||||
{{- $isHLJSdisabled := (.Site.Params.assets.disableHLJS | default .Params.disableHLJS ) }}
|
|
||||||
{{- if (and (eq .Kind "page") (ne .Layout "archives") (ne .Layout "search") (not $isHLJSdisabled)) }}
|
|
||||||
{{- if not .Site.Params.assets.disableFingerprinting }}
|
|
||||||
{{- $highlight := slice (resources.Get "js/highlight.min.js") | resources.Concat "assets/js/highlight.js" | minify | fingerprint }}
|
|
||||||
<script defer src="{{ $highlight.RelPermalink }}" integrity="{{ $highlight.Data.Integrity }}"
|
|
||||||
onload="hljs.initHighlightingOnLoad();"></script>
|
|
||||||
{{- else}}
|
|
||||||
{{- $highlight := slice (resources.Get "js/highlight.min.js") | resources.Concat "assets/js/highlight.js" | minify }}
|
|
||||||
<script defer src="{{ $highlight.RelPermalink }}" onload="hljs.initHighlightingOnLoad();"></script>
|
|
||||||
{{- end}}
|
|
||||||
{{- end }}
|
|
||||||
<script>
|
|
||||||
window.onload = function () {
|
|
||||||
if (localStorage.getItem("menu-scroll-position")) {
|
|
||||||
document.getElementById('menu').scrollLeft = localStorage.getItem("menu-scroll-position");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function menu_on_scroll() {
|
{{- partial "extend_footer.html" . }}
|
||||||
localStorage.setItem("menu-scroll-position", document.getElementById('menu').scrollLeft);
|
|
||||||
}
|
|
||||||
|
|
||||||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
{{- partial "script.html" . }}
|
||||||
anchor.addEventListener("click", function (e) {
|
|
||||||
e.preventDefault();
|
|
||||||
var id = this.getAttribute("href").substr(1);
|
|
||||||
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
|
||||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
|
|
||||||
behavior: "smooth"
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
|
|
||||||
}
|
|
||||||
if (id === "top") {
|
|
||||||
history.replaceState(null, null, " ");
|
|
||||||
} else {
|
|
||||||
history.pushState(null, null, `#${id}`);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
{{- if (not .Site.Params.disableScrollToTop) }}
|
|
||||||
<script>
|
|
||||||
var mybutton = document.getElementById("top-link");
|
|
||||||
window.onscroll = function () {
|
|
||||||
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
|
|
||||||
mybutton.style.visibility = "visible";
|
|
||||||
mybutton.style.opacity = "1";
|
|
||||||
} else {
|
|
||||||
mybutton.style.visibility = "hidden";
|
|
||||||
mybutton.style.opacity = "0";
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
</script>
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{- if (not .Site.Params.disableThemeToggle) }}
|
|
||||||
<script>
|
|
||||||
document.getElementById("theme-toggle").addEventListener("click", () => {
|
|
||||||
if (document.body.className.includes("dark")) {
|
|
||||||
document.body.classList.remove('dark');
|
|
||||||
localStorage.setItem("pref-theme", 'light');
|
|
||||||
} else {
|
|
||||||
document.body.classList.add('dark');
|
|
||||||
localStorage.setItem("pref-theme", 'dark');
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
</script>
|
|
||||||
{{- end }}
|
|
||||||
|
|
|
@ -1,85 +1,110 @@
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
{{- if hugo.IsProduction | or (eq .Site.Params.env "production") }}
|
{{- if hugo.IsProduction | or (eq site.Params.env "production") | and (ne .Params.robotsNoIndex true) }}
|
||||||
<meta name="robots" content="index, follow">
|
<meta name="robots" content="index, follow">
|
||||||
{{- else }}
|
{{- else }}
|
||||||
<meta name=" robots" content="noindex, nofollow">
|
<meta name="robots" content="noindex, nofollow">
|
||||||
{{- end -}}
|
{{- end }}
|
||||||
<!-- Title -->
|
|
||||||
<title>{{ if .IsHome }}{{else}}{{ if .Title }}{{ .Title }} | {{ end }}{{end}}{{ .Site.Title }}</title>
|
{{- /* Title */}}
|
||||||
<!-- Meta -->
|
<title>{{ if .IsHome }}{{ else }}{{ if .Title }}{{ .Title }} | {{ end }}{{ end }}{{ site.Title }}</title>
|
||||||
|
|
||||||
|
{{- /* Meta */}}
|
||||||
|
{{- if .IsHome }}
|
||||||
|
{{ with site.Params.keywords -}}<meta name="keywords" content="{{- range $i, $e := . }}{{ if $i }}, {{ end }}{{ $e }}{{ end }}">{{ end }}
|
||||||
|
{{- else }}
|
||||||
<meta name="keywords" content="{{ if .Params.keywords -}}
|
<meta name="keywords" content="{{ if .Params.keywords -}}
|
||||||
{{- range $i, $e := .Params.keywords }}{{ if $i }}, {{ end }}{{ $e }}{{ end }} {{- else }}
|
{{- range $i, $e := .Params.keywords }}{{ if $i }}, {{ end }}{{ $e }}{{ end }} {{- else }}
|
||||||
{{- range $i, $e := .Params.tags }}{{ if $i }}, {{ end }}{{ $e }}{{ end }} {{- end -}}" />
|
{{- range $i, $e := .Params.tags }}{{ if $i }}, {{ end }}{{ $e }}{{ end }} {{- end -}}">
|
||||||
<meta name="description" content="{{- with .Description }}{{ . }}{{- else }}{{- if .IsPage}}
|
{{- end }}
|
||||||
{{- .Summary | default (printf "%s - %s" .Title .Site.Title) }}{{- else }}
|
<meta name="description" content="{{- with .Description }}{{ . }}{{- else }}{{- if or .IsPage .IsSection}}
|
||||||
{{- with .Site.Params.description }}{{ . }}{{- end }}{{- end }}{{- end -}}">
|
{{- .Summary | default (printf "%s - %s" .Title site.Title) }}{{- else }}
|
||||||
|
{{- with site.Params.description }}{{ . }}{{- end }}{{- end }}{{- end -}}">
|
||||||
<meta name="author" content="{{ (partial "author.html" . ) }}">
|
<meta name="author" content="{{ (partial "author.html" . ) }}">
|
||||||
<link rel="canonical" href="{{ if .Params.canonicalURL -}} {{ trim .Params.canonicalURL " " }} {{- else -}} {{ .Permalink }} {{- end }}" />
|
<link rel="canonical" href="{{ if .Params.canonicalURL -}} {{ trim .Params.canonicalURL " " }} {{- else -}} {{ .Permalink }} {{- end }}">
|
||||||
{{- if .Site.Params.analytics.google.SiteVerificationTag }}
|
{{- if site.Params.analytics.google.SiteVerificationTag }}
|
||||||
<meta name="google-site-verification" content="{{ .Site.Params.analytics.google.SiteVerificationTag }}" />
|
<meta name="google-site-verification" content="{{ site.Params.analytics.google.SiteVerificationTag }}">
|
||||||
{{- end}}
|
{{- end }}
|
||||||
{{- if .Site.Params.analytics.yandex.SiteVerificationTag }}
|
{{- if site.Params.analytics.yandex.SiteVerificationTag }}
|
||||||
<meta name="yandex-verification" content="{{ .Site.Params.analytics.yandex.SiteVerificationTag }}" />
|
<meta name="yandex-verification" content="{{ site.Params.analytics.yandex.SiteVerificationTag }}">
|
||||||
{{- end}}
|
{{- end }}
|
||||||
{{- if .Site.Params.analytics.bing.SiteVerificationTag }}
|
{{- if site.Params.analytics.bing.SiteVerificationTag }}
|
||||||
<meta name="msvalidate.01" content="{{ .Site.Params.analytics.bing.SiteVerificationTag }}" />
|
<meta name="msvalidate.01" content="{{ site.Params.analytics.bing.SiteVerificationTag }}">
|
||||||
{{- end}}
|
{{- end }}
|
||||||
<!-- Styles -->
|
{{- if site.Params.analytics.naver.SiteVerificationTag }}
|
||||||
{{- $common := (resources.Match "css/*.css") | resources.Concat "assets/css/common.css" }}
|
<meta name="naver-site-verification" content="{{ site.Params.analytics.naver.SiteVerificationTag }}">
|
||||||
{{- $extended := (resources.Match "css/extended/*.css") | resources.Concat "assets/css/extended.css" }}
|
{{- end }}
|
||||||
{{- /* bundle all required css */}}
|
|
||||||
{{- /* Add extended css after theme style */ -}}
|
|
||||||
{{- $stylesheet := (slice $common $extended) | resources.Concat "assets/css/stylesheet.css" | minify }}
|
|
||||||
|
|
||||||
{{- if not .Site.Params.assets.disableFingerprinting }}
|
{{- /* Styles */}}
|
||||||
{{- $stylesheet := $stylesheet | fingerprint -}}
|
|
||||||
<link href="{{ $stylesheet.RelPermalink }}" integrity="{{ $stylesheet.Data.Integrity }}" rel="preload stylesheet"
|
|
||||||
as="style">
|
|
||||||
{{- else}}
|
|
||||||
<link href="{{ $stylesheet.RelPermalink }}" rel="preload stylesheet" as="style">
|
|
||||||
{{- end}}
|
|
||||||
<!-- Search -->
|
|
||||||
{{- if (eq .Layout `search`) -}}
|
|
||||||
<link rel="preload" as="fetch" href="../index.json" crossOrigin="anonymous">
|
|
||||||
{{- $fastsearch := resources.Get "js/fastsearch.js" | resources.ExecuteAsTemplate "js/fastsearch.js" .Site.Params.fuseOpts }}
|
|
||||||
{{- $fusejs := resources.Get "js/fuse.js" }}
|
|
||||||
{{- if not .Site.Params.assets.disableFingerprinting }}
|
|
||||||
{{- $search := (slice $fusejs $fastsearch ) | resources.Concat "assets/js/search.js" | minify | fingerprint }}
|
|
||||||
<script defer src="{{ $search.RelPermalink }}" onload="loadSearch();" integrity="{{ $search.Data.Integrity }}"></script>
|
|
||||||
{{- else}}
|
|
||||||
{{ $search := (slice $fusejs $fastsearch ) | resources.Concat "assets/js/search.js" | minify }}
|
|
||||||
<script defer src="{{ $search.RelPermalink }}" onload="loadSearch();"></script>
|
|
||||||
{{- end}}
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
<!-- Favicons -->
|
{{- /* includes */}}
|
||||||
<link rel="icon" href="{{- .Site.Params.assets.favicon | default "favicon.ico" | absURL -}}">
|
{{- $includes := slice }}
|
||||||
<link rel="icon" type="image/png" sizes="16x16" href="
|
{{- $includes = $includes | append (" " | resources.FromString "assets/css/includes-blank.css")}}
|
||||||
{{- .Site.Params.assets.favicon16x16 | default "favicon-16x16.png" | absURL -}}">
|
|
||||||
<link rel="icon" type="image/png" sizes="32x32" href="
|
{{- if not (eq site.Params.assets.disableScrollBarStyle true) }}
|
||||||
{{- .Site.Params.assets.favicon32x32 | default "favicon-32x32.png" | absURL -}}">
|
{{- $ScrollStyle := (resources.Get "css/includes/scroll-bar.css") }}
|
||||||
<link rel="apple-touch-icon" href="
|
{{- $includes = (append $ScrollStyle $includes) }}
|
||||||
{{- .Site.Params.assets.apple_touch_icon | default "apple-touch-icon.png" | absURL -}}">
|
{{- end }}
|
||||||
<link rel="mask-icon" href="{{- .Site.Params.assets.safari_pinned_tab | default "safari-pinned-tab.svg" | absURL -}}">
|
|
||||||
<meta name="theme-color" content="#2e2e33">
|
{{- $includes_all := $includes | resources.Concat "assets/css/includes.css" }}
|
||||||
<meta name="msapplication-TileColor" content="#2e2e33">
|
|
||||||
<!-- Generator -->
|
{{- $theme_vars := (resources.Get "css/core/theme-vars.css") }}
|
||||||
{{- hugo.Generator }}
|
{{- $reset := (resources.Get "css/core/reset.css") }}
|
||||||
<!-- RSS -->
|
{{- $media := (resources.Get "css/core/zmedia.css") }}
|
||||||
{{- range .AlternativeOutputFormats -}}
|
{{- $license_css := (resources.Get "css/core/license.css") }}
|
||||||
<link rel="{{ .Rel }}" type="{{ .MediaType.Type }}" href="{{ .Permalink | safeURL }}">
|
{{- $common := (resources.Match "css/common/*.css") | resources.Concat "assets/css/common.css" }}
|
||||||
|
{{- $commonHighlight := (resources.Get "css/common/chroma.css") }}
|
||||||
|
|
||||||
|
{{- /* order is important */}}
|
||||||
|
{{- $core := (slice $theme_vars $reset $common $includes_all $media) | resources.Concat "assets/css/core.css" | resources.Minify }}
|
||||||
|
{{- $extended := (resources.Match "css/extended/*.css") | resources.Concat "assets/css/extended.css" | resources.Minify }}
|
||||||
|
|
||||||
|
{{- /* bundle all required css */}}
|
||||||
|
{{- /* Add extended css after theme style */ -}}
|
||||||
|
{{- $stylesheet := (slice $license_css $core $extended) | resources.Concat "assets/css/stylesheet.css" }}
|
||||||
|
|
||||||
|
{{- if not site.Params.assets.disableFingerprinting }}
|
||||||
|
{{- $stylesheet := $stylesheet | fingerprint }}
|
||||||
|
<link crossorigin="anonymous" href="{{ $stylesheet.RelPermalink }}" integrity="{{ $stylesheet.Data.Integrity }}" rel="preload stylesheet" as="style">
|
||||||
|
{{- else }}
|
||||||
|
<link crossorigin="anonymous" href="{{ $stylesheet.RelPermalink }}" rel="preload stylesheet" as="style">
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- /* noscript */}}
|
||||||
|
<noscript>
|
||||||
|
{{- $noscript := (resources.Get "css/includes/noscript.css") }}
|
||||||
|
{{- if not site.Params.assets.disableFingerprinting }}
|
||||||
|
{{- $noscript := $noscript | fingerprint }}
|
||||||
|
<link crossorigin="anonymous" href="{{ $noscript.RelPermalink }}" integrity="{{ $noscript.Data.Integrity }}" rel="preload stylesheet" as="style">
|
||||||
|
{{- else }}
|
||||||
|
<link crossorigin="anonymous" href="{{ $noscript.RelPermalink }}" rel="preload stylesheet" as="style">
|
||||||
|
{{- end }}
|
||||||
|
</noscript>
|
||||||
|
|
||||||
|
{{- /* Favicons */}}
|
||||||
|
<link rel="icon" href="{{ site.Params.assets.favicon | default "favicon.ico" | absURL }}">
|
||||||
|
<link rel="icon" type="image/png" sizes="16x16" href="{{ site.Params.assets.favicon16x16 | default "favicon-16x16.png" | absURL }}">
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="{{ site.Params.assets.favicon32x32 | default "favicon-32x32.png" | absURL }}">
|
||||||
|
<link rel="apple-touch-icon" href="{{ site.Params.assets.apple_touch_icon | default "apple-touch-icon.png" | absURL }}">
|
||||||
|
<link rel="mask-icon" href="{{ site.Params.assets.safari_pinned_tab | default "safari-pinned-tab.svg" | absURL }}">
|
||||||
|
<meta name="theme-color" content="{{ site.Params.assets.theme_color | default "#2e2e33" }}">
|
||||||
|
<meta name="msapplication-TileColor" content="{{ site.Params.assets.msapplication_TileColor | default "#2e2e33" }}">
|
||||||
|
|
||||||
|
{{- /* RSS */}}
|
||||||
|
{{ range .AlternativeOutputFormats -}}
|
||||||
|
<link rel="{{ .Rel }}" type="{{ .MediaType.Type | html }}" href="{{ .Permalink | safeURL }}">
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
{{- range .AllTranslations -}}
|
{{- range .AllTranslations -}}
|
||||||
<link rel="alternate" hreflang="{{- .Lang -}}" href="{{- .Permalink -}}" />
|
<link rel="alternate" hreflang="{{ .Lang }}" href="{{ .Permalink }}">
|
||||||
{{ end }}
|
{{ end -}}
|
||||||
|
|
||||||
{{- partial "extend_head.html" . -}}
|
{{- partial "extend_head.html" . -}}
|
||||||
<!-- Misc -->
|
|
||||||
{{- if hugo.IsProduction | or (eq .Site.Params.env "production") }}
|
{{- /* Misc */}}
|
||||||
{{- template "_internal/google_analytics_async.html" . }}
|
{{- if hugo.IsProduction | or (eq site.Params.env "production") }}
|
||||||
{{- template "_internal/google_news.html" . }}
|
{{- template "_internal/google_analytics.html" . }}
|
||||||
{{- template "partials/templates/opengraph.html" . }}
|
{{- template "partials/templates/opengraph.html" . }}
|
||||||
{{- template "partials/templates/twitter_cards.html" . }}
|
{{- template "partials/templates/twitter_cards.html" . }}
|
||||||
{{- template "partials/templates/schema_json.html" . }}
|
{{- template "partials/templates/schema_json.html" . }}
|
||||||
{{- end }}
|
{{- end -}}
|
||||||
|
|
|
@ -1,103 +1,60 @@
|
||||||
{{- /* theme-toggle is enabled */}}
|
{{- /* theme.js */}}
|
||||||
{{- if (not .Site.Params.disableThemeToggle) }}
|
{{- if not site.Params.disableThemeToggle }}
|
||||||
{{- /* theme is light */}}
|
{{- $theme := resources.Get "js/theme.js" | resources.Minify }}
|
||||||
{{- if (eq .Site.Params.defaultTheme "light") }}
|
{{- if not site.Params.assets.disableFingerprinting }}
|
||||||
<script>
|
{{- $theme_js := (slice $theme) | resources.Concat "assets/js/theme.js" | fingerprint }}
|
||||||
if (localStorage.getItem("pref-theme") === "dark") {
|
<script crossorigin="anonymous" src="{{ $theme_js.RelPermalink }}" integrity="{{ $theme_js.Data.Integrity }}"></script>
|
||||||
document.body.classList.add('dark');
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
{{- /* theme is dark */}}
|
|
||||||
{{- else if (eq .Site.Params.defaultTheme "dark") }}
|
|
||||||
<script>
|
|
||||||
if (localStorage.getItem("pref-theme") === "light") {
|
|
||||||
document.body.classList.remove('dark')
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
{{- else }}
|
{{- else }}
|
||||||
{{- /* theme is auto */}}
|
{{- $theme_js := (slice $theme) | resources.Concat "assets/js/theme.js" }}
|
||||||
<script>
|
<script crossorigin="anonymous" src="{{ $theme_js.RelPermalink }}"></script>
|
||||||
if (localStorage.getItem("pref-theme") === "dark") {
|
|
||||||
document.body.classList.add('dark');
|
|
||||||
} else if (localStorage.getItem("pref-theme") === "light") {
|
|
||||||
document.body.classList.remove('dark')
|
|
||||||
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
|
||||||
document.body.classList.add('dark');
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- /* theme-toggle is disabled and theme is auto */}}
|
|
||||||
{{- else if (and (ne .Site.Params.defaultTheme "light") (ne .Site.Params.defaultTheme "dark"))}}
|
|
||||||
<script>
|
|
||||||
if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
|
||||||
document.body.classList.add('dark');
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
{{- end }}
|
{{- end }}
|
||||||
<noscript>
|
|
||||||
<style type="text/css">
|
|
||||||
#theme-toggle,
|
|
||||||
.top-link {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
{{- if (and (ne .Site.Params.defaultTheme "light") (ne .Site.Params.defaultTheme "dark")) }}
|
|
||||||
<style>
|
|
||||||
@media (prefers-color-scheme: dark) {
|
|
||||||
:root {
|
|
||||||
--theme: #1d1e20;
|
|
||||||
--entry: #2e2e33;
|
|
||||||
--primary: rgba(255, 255, 255, 0.84);
|
|
||||||
--secondary: rgba(255, 255, 255, 0.56);
|
|
||||||
--tertiary: rgba(255, 255, 255, 0.16);
|
|
||||||
--content: rgba(255, 255, 255, 0.74);
|
|
||||||
--hljs-bg: #2e2e33;
|
|
||||||
--code-bg: #37383e;
|
|
||||||
--border: #333;
|
|
||||||
}
|
|
||||||
|
|
||||||
.list {
|
|
||||||
background: var(--theme);
|
|
||||||
}
|
|
||||||
|
|
||||||
.list:not(.dark)::-webkit-scrollbar-track {
|
|
||||||
background: 0 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.list:not(.dark)::-webkit-scrollbar-thumb {
|
|
||||||
border-color: var(--theme);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
</noscript>
|
|
||||||
<header class="header">
|
<header class="header">
|
||||||
|
{{- if ( and (.IsPage) (ne .Layout "archives") (ne .Layout "search")) }}
|
||||||
|
<div id="progressBar"></div>
|
||||||
|
{{- end }}
|
||||||
<nav class="nav">
|
<nav class="nav">
|
||||||
<div class="logo">
|
<div class="logo">
|
||||||
{{- if .Title }}
|
{{- $label_text := (site.Params.label.text | default site.Title) }}
|
||||||
<a href="{{ "" | absLangURL }}" accesskey="h" title="{{ .Site.Params.label.text | default .Site.Title }} (Alt + H)">
|
{{- if site.Title }}
|
||||||
{{- if .Site.Params.label.icon }}
|
<a href="{{ "" | absLangURL }}" accesskey="h" title="{{ $label_text }} (Alt + H)">
|
||||||
<img src="{{- .Site.Params.label.icon -}}" alt="logo" aria-label="logo"
|
{{- if site.Params.label.icon }}
|
||||||
height="{{- .Site.Params.label.iconHeight | default "30px" -}}">
|
{{- $img := resources.Get site.Params.label.icon }}
|
||||||
|
{{- if $img }}
|
||||||
|
{{- $processableFormats := (slice "jpg" "jpeg" "png" "tif" "bmp" "gif") -}}
|
||||||
|
{{- if hugo.IsExtended -}}
|
||||||
|
{{- $processableFormats = $processableFormats | append "webp" -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- $prod := (hugo.IsProduction | or (eq site.Params.env "production")) }}
|
||||||
|
{{- if and (in $processableFormats $img.MediaType.SubType) (eq $prod true)}}
|
||||||
|
{{- if site.Params.label.iconHeight }}
|
||||||
|
{{- $img = $img.Resize (printf "x%d" site.Params.label.iconHeight) }}
|
||||||
|
{{ else }}
|
||||||
|
{{- $img = $img.Resize "x30" }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
<img src="{{ $img.Permalink }}" alt="" aria-label="logo"
|
||||||
|
height="{{- site.Params.label.iconHeight | default "30" -}}">
|
||||||
|
{{- else }}
|
||||||
|
<img src="{{- site.Params.label.icon | absURL -}}" alt="" aria-label="logo"
|
||||||
|
height="{{- site.Params.label.iconHeight | default "30" -}}">
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- .Site.Params.label.text | default .Site.Title -}}
|
{{- else if hasPrefix site.Params.label.iconSVG "<svg" }}
|
||||||
|
{{ site.Params.label.iconSVG | safeHTML }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- $label_text -}}
|
||||||
</a>
|
</a>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
<span class="logo-switches">
|
<div class="logo-switches">
|
||||||
{{- if (not .Site.Params.disableThemeToggle) }}
|
{{- if (not site.Params.disableThemeToggle) }}
|
||||||
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
|
<button type="button" id="theme-toggle" accesskey="t" title="(Alt + T)">
|
||||||
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"
|
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||||
stroke-linejoin="round">
|
stroke-linejoin="round">
|
||||||
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
||||||
</svg>
|
</svg>
|
||||||
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"
|
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||||||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||||||
stroke-linejoin="round">
|
stroke-linejoin="round">
|
||||||
<circle cx="12" cy="12" r="5"></circle>
|
<circle cx="12" cy="12" r="5"></circle>
|
||||||
|
@ -111,22 +68,22 @@
|
||||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
{{- end}}
|
{{- end }}
|
||||||
{{ $lang := .Lang}}
|
|
||||||
{{ $separator := or .Title (not .Site.Params.disableThemeToggle)}}
|
|
||||||
{{- with $.Site.Home.AllTranslations }}
|
|
||||||
|
|
||||||
|
{{- $lang := .Lang}}
|
||||||
|
{{- $separator := or $label_text (not site.Params.disableThemeToggle)}}
|
||||||
|
{{- with site.Home.AllTranslations }}
|
||||||
<ul class="lang-switch">
|
<ul class="lang-switch">
|
||||||
{{- if $separator }}<li>|</li>{{ end }}
|
{{- if $separator }}<li>|</li>{{ end }}
|
||||||
{{- range . -}}
|
{{- range . -}}
|
||||||
{{- if ne $lang .Lang }}
|
{{- if ne $lang .Lang }}
|
||||||
<li>
|
<li>
|
||||||
<a href="{{- .Permalink -}}" title="{{ .Language.LanguageName | default (.Lang | humanize) }}"
|
<a href="{{- .Permalink -}}" title="{{ .Language.Params.languageAltTitle | default (.Language.LanguageName | emojify) | default (.Lang | title) }}"
|
||||||
aria-label="{{ .Language.LanguageName | default (.Lang | humanize) }}">
|
aria-label="{{ .Language.LanguageName | default (.Lang | title) }}">
|
||||||
{{- if (and $.Site.Params.displayFullLangName (.Language.LanguageName)) }}
|
{{- if (and site.Params.displayFullLangName (.Language.LanguageName)) }}
|
||||||
{{- .Language.LanguageName | emojify -}}
|
{{- .Language.LanguageName | emojify -}}
|
||||||
{{- else }}
|
{{- else }}
|
||||||
{{- .Lang | humanize -}}
|
{{- .Lang | title -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -134,23 +91,36 @@
|
||||||
{{- end}}
|
{{- end}}
|
||||||
</ul>
|
</ul>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
</span>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{- $currentPage := . }}
|
{{- $currentPage := . }}
|
||||||
<ul id="menu" onscroll="menu_on_scroll()">
|
<input name="hamburger-input" id="hamburger-input" type="checkbox" aria-label="Navigation Menu">
|
||||||
{{- range .Site.Menus.main }}
|
<label id="hamburger-menu" for="hamburger-input"></label>
|
||||||
|
<div class="overlay"></div>
|
||||||
|
<ul id="menu">
|
||||||
|
{{- range site.Menus.main }}
|
||||||
{{- $menu_item_url := (cond (strings.HasSuffix .URL "/") .URL (printf "%s/" .URL) ) | absLangURL }}
|
{{- $menu_item_url := (cond (strings.HasSuffix .URL "/") .URL (printf "%s/" .URL) ) | absLangURL }}
|
||||||
{{- $page_url:= $currentPage.Permalink | absLangURL }}
|
{{- $page_url:= $currentPage.Permalink | absLangURL }}
|
||||||
{{- $is_search := eq ($.Site.GetPage .KeyName).Layout `search` }}
|
{{- $is_search := eq (site.GetPage .KeyName).Layout `search` }}
|
||||||
<li>
|
<li>
|
||||||
<a href="{{ .URL | absLangURL }}" title="{{ .Title | default .Name }} {{- cond $is_search (" (Alt + /)" | safeHTMLAttr) ("" | safeHTMLAttr ) }}"
|
<a href="{{ .URL | absLangURL }}" title="{{ .Title | default .Name }} {{- cond $is_search (" (Alt + /)" | safeHTMLAttr) ("" | safeHTMLAttr ) }}"
|
||||||
{{- cond $is_search (" accesskey=/" | safeHTMLAttr) ("" | safeHTMLAttr ) }}>
|
{{- cond $is_search (" accesskey=/" | safeHTMLAttr) ("" | safeHTMLAttr ) }}>
|
||||||
<span {{- if eq $menu_item_url $page_url }} class="active" {{- end }}>
|
<span {{- if eq $menu_item_url $page_url }} class="active" {{- end }}>
|
||||||
|
{{- .Pre }}
|
||||||
{{- .Name -}}
|
{{- .Name -}}
|
||||||
|
{{ .Post -}}
|
||||||
</span>
|
</span>
|
||||||
|
{{- if (findRE "://" .URL) }}
|
||||||
|
<svg fill="none" shape-rendering="geometricPrecision" stroke="currentColor" stroke-linecap="round"
|
||||||
|
stroke-linejoin="round" stroke-width="2.5" viewBox="0 0 24 24" height="12" width="12">
|
||||||
|
<path d="M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6"></path>
|
||||||
|
<path d="M15 3h6v6"></path>
|
||||||
|
<path d="M10 14L21 3"></path>
|
||||||
|
</svg>
|
||||||
|
{{- end }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
{{- end -}}
|
{{- end }}
|
||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
</header>
|
</header>
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
{{- with $.Site.Params.homeInfoParams }}
|
{{- with site.Params.homeInfoParams }}
|
||||||
<article class="first-entry home-info">
|
<article class="first-entry home-info">
|
||||||
<header class="entry-header">
|
<header class="entry-header">
|
||||||
<h1>{{- .Title | markdownify }}</h1>
|
<h1>{{ .Title | markdownify }}</h1>
|
||||||
</header>
|
</header>
|
||||||
<section class="entry-content">
|
<div class="entry-content">
|
||||||
<p>{{- .Content | markdownify }}</p>
|
{{ .Content | markdownify }}
|
||||||
</section>
|
</div>
|
||||||
<footer class="entry-footer">
|
<footer class="entry-footer">
|
||||||
{{- partial "social_icons.html" $.Site.Params.socialIcons -}}
|
{{ partial "social_icons.html" (dict "align" site.Params.homeInfoParams.AlignSocialIconsTo) }}
|
||||||
</footer>
|
</footer>
|
||||||
</article>
|
</article>
|
||||||
{{- end}}
|
{{- end -}}
|
||||||
|
|
|
@ -1,19 +1,56 @@
|
||||||
<div class="profile">
|
<div class="profile">
|
||||||
{{- with .Site.Params.profileMode }}
|
{{- with site.Params.profileMode }}
|
||||||
<div class="profile_inner">
|
<div class="profile_inner">
|
||||||
{{- if .imageUrl}}<img src="{{ .imageUrl}}" alt="{{ .imageTitle | default "profile image" }}"
|
{{- if .imageUrl -}}
|
||||||
height="{{- .imageHeight | default 150 -}}" width="{{- .imageWidth | default 150 -}}" />{{- end}}
|
{{- $img := "" }}
|
||||||
<h1>{{- .title | default $.Site.Title | markdownify -}}</h1>
|
{{- if not (urls.Parse .imageUrl).IsAbs }}
|
||||||
<span>{{- .subtitle | markdownify -}}</span>
|
{{- $img = resources.Get .imageUrl }}
|
||||||
{{- partial "social_icons.html" $.Site.Params.socialIcons -}}
|
{{- end }}
|
||||||
|
{{- if $img }}
|
||||||
|
{{- $processableFormats := (slice "jpg" "jpeg" "png" "tif" "bmp" "gif") -}}
|
||||||
|
{{- if hugo.IsExtended -}}
|
||||||
|
{{- $processableFormats = $processableFormats | append "webp" -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- $prod := (hugo.IsProduction | or (eq site.Params.env "production")) }}
|
||||||
|
{{- if and (in $processableFormats $img.MediaType.SubType) (eq $prod true)}}
|
||||||
|
{{- if (not (and (not .imageHeight) (not .imageWidth))) }}
|
||||||
|
{{- $img = $img.Resize (printf "%dx%d" .imageWidth .imageHeight) }}
|
||||||
|
{{- else if .imageHeight }}
|
||||||
|
{{- $img = $img.Resize (printf "x%d" .imageHeight) }}
|
||||||
|
{{ else if .imageWidth }}
|
||||||
|
{{- $img = $img.Resize (printf "%dx" .imageWidth) }}
|
||||||
|
{{ else }}
|
||||||
|
{{- $img = $img.Resize "150x150" }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
<img draggable="false" src="{{ $img.Permalink }}" alt="{{ .imageTitle | default "profile image" }}" title="{{ .imageTitle }}"
|
||||||
|
height="{{ .imageHeight | default 150 }}" width="{{ .imageWidth | default 150 }}" />
|
||||||
|
{{- else }}
|
||||||
|
<img draggable="false" src="{{ .imageUrl | absURL }}" alt="{{ .imageTitle | default "profile image" }}" title="{{ .imageTitle }}"
|
||||||
|
height="{{ .imageHeight | default 150 }}" width="{{ .imageWidth | default 150 }}" />
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
<h1>{{ .title | default site.Title | markdownify }}</h1>
|
||||||
|
<span>{{ .subtitle | markdownify }}</span>
|
||||||
|
{{- partial "social_icons.html" -}}
|
||||||
|
|
||||||
{{- with .buttons }}
|
{{- with .buttons }}
|
||||||
<div class="buttons">
|
<div class="buttons">
|
||||||
{{- range . -}}
|
{{- range . }}
|
||||||
<a class="button" href="{{ trim .url " " }}" rel="noopener" title="{{ .name | humanize }}">
|
<a class="button" href="{{ trim .url " " }}" rel="noopener" title="{{ .name }}">
|
||||||
<span class="button-inner">{{ .name }}</span>
|
<span class="button-inner">
|
||||||
|
{{ .name }}
|
||||||
|
{{- if (findRE "://" .url) }}
|
||||||
|
<svg fill="none" shape-rendering="geometricPrecision" stroke="currentColor" stroke-linecap="round"
|
||||||
|
stroke-linejoin="round" stroke-width="2.5" viewBox="0 0 24 24" height="14" width="14">
|
||||||
|
<path d="M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6"></path>
|
||||||
|
<path d="M15 3h6v6"></path>
|
||||||
|
<path d="M10 14L21 3"></path>
|
||||||
|
</svg>
|
||||||
|
{{- end }}
|
||||||
|
</span>
|
||||||
</a>
|
</a>
|
||||||
{{- end -}}
|
{{- end }}
|
||||||
</div>
|
</div>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
</div>
|
</div>
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue