Compare commits

...

263 Commits
v6.0 ... master

Author SHA1 Message Date
Wonderfall
3b0ee00eb0
Merge pull request #13 from xuhdev/patch-2
Clarify papermod theme situation
2024-06-16 04:14:29 +02:00
Hong Xu
9780253ed5
Clarify papermod theme situation
PaperMod is based on Paper, not original. See their first commit:

265a32d597
2024-05-30 21:31:34 -07:00
Wonderfall
5e61be5903
Update README.md 2023-12-31 20:57:00 +01:00
Wonderfall
71871d277c enforce xml escaping for content 2023-12-31 20:29:46 +01:00
Wonderfall
73484a80d7 refactor rss template 2023-12-31 20:09:48 +01:00
Wonderfall
4b45709402 add back XML content namespace to RSS 2023-12-31 18:23:55 +01:00
Wonderfall
d3368d1bb9 Merge remote-tracking branch 'upstream/master' 2023-12-30 22:16:15 +01:00
Daniel Petre
a1cb044262
Add romanian translation to ro.yaml (#1362)
Add romanian translation (with diacritics) to ro.yaml
2023-12-23 12:01:01 +05:30
Aditya Telange
0989c28a0e
Allow aligning social-icons in homeInfo mode
In Site config
    homeInfoParams:
        AlignSocialIconsTo: "center" # or left or right
2023-12-16 21:40:14 +05:30
Aditya Telange
fb1c0aeb6f
social icons refactor Params.socialIcons 2023-12-16 21:38:24 +05:30
Aditya Telange
69e5e085ab
improved profile mode spacing 2023-12-16 20:59:36 +05:30
Aditya Telange
f8e125c7ee
Add padding to social-icons for better tap sizing 2023-12-16 20:59:08 +05:30
Aditya Telange
5f624757ae
Workflows: Update release bin path for hugo linux-amd64.deb 2023-12-16 20:07:15 +05:30
Aditya Telange
e3ad0aeb70
Bump minimum Hugo version to 0.112.4
* language.LanguageCode is required for Fix/hugo depr 0.120.x #1328
2023-12-16 19:59:55 +05:30
Aditya Telange
f51ad49819 replace .Site with site & fix whitespace 2023-12-16 19:43:59 +05:30
Joe Mooring
ff7443b17f [PATCH] tpl/tplimpl: Fix deprecation logic in RSS template
cherry-pick from 23fcfb7f74
2023-12-16 19:43:59 +05:30
Joe Mooring
00488d0146 [PATCH] tpl/tplimpl: Deprecate .Site.Author usage in RSS template
cherry-pick from d4016dd5cd
2023-12-16 19:43:59 +05:30
Joe Mooring
cf62fa3c40 [PATCH] tpl/tplimpl: Use .Language.LanguageCode in built-in templates
cherry-pick from ff77a927f9
2023-12-16 19:43:59 +05:30
Joe Mooring
87df659c18 [PATCH] tpl/tplimpl: Fix deprecation logic in embedded templates
cherry-picked from cb98e9061b
2023-12-16 19:43:59 +05:30
Joe Mooring
3fb112bc85 [PATCH] tpl/tplimpl: Deprecate .Site.Social usage with internal templates
cherry-picked from 4910312ee7
2023-12-16 19:43:59 +05:30
Razon Yang
102e089bc3 [PATCH] tpl/embedded: Make Open Graph's series optional
cherry-picked from b82b547acb
2023-12-16 19:43:59 +05:30
Aditya Telange
86362ebd72
Update README.md 2023-12-16 19:28:05 +05:30
Aditya Telange
60984fd136
Add icon for 'draft' posts
https://fonts.google.com/icons?selected=Material%20Symbols%20Outlined%3Aedit_note%3AFILL%400%3Bwght%40400%3BGRAD%400%3Bopsz%4048

LICENSE: https://developers.google.com/fonts/faq#can_i_use_any_font_in_a_commercial_product
2023-12-16 14:06:46 +05:30
Aditya Telange
65c2720ab9
lazy load cover images in lists only 2023-12-16 13:09:19 +05:30
Aditya Telange
28ec7a407d
Revert "Fix social icons extraneous margin"
This reverts commit 6864770ad4dd67fe381e143ca48bdd81c38835ce.
2023-12-16 00:32:25 +05:30
Aditya Telange
705ebeb729
table styles update
- reduce margins
- rm reduced fontsize
2023-12-15 22:09:48 +05:30
Aditya Telange
6864770ad4
Fix social icons extraneous margin 2023-12-15 22:09:15 +05:30
Aditya Telange
2ecb08a5ba
Plainify items insize toc list 2023-12-15 22:08:25 +05:30
Aditya Telange
e0fc64c43e
Optimize footer margins 2023-12-10 12:36:05 +05:30
Aditya Telange
b288ede80c
[breaking?] Allow page-specific cover settings to override site-level settings
Fixes:  #818 #185
2023-11-25 18:06:31 +05:30
Matěj Pokorný
65d650fc4d
Adding-czech-translation-to-i18n (#1338) 2023-11-20 00:41:16 +05:30
Aditya Telange
ac444fc0f5
Update discord icon
Mark only from https://discord.com/branding
2023-11-19 20:03:41 +05:30
Josh Müller
5a99ab779d
Add Wordpress Icon (#1114) 2023-11-11 20:53:59 +05:30
Aditya Telange
ba739cfe29
Set maxlength for search input to 64 chars
fixes  #1329
2023-11-11 12:15:11 +05:30
Aditya Telange
4c50ed8bfa
Update fuse.js v6.6.2 to v7.0.0 basic 2023-11-11 12:08:18 +05:30
Aditya Telange
72ab73ffe5
Error out if hugo.Version used is less than min required version 2023-11-04 16:01:44 +05:30
Sebastian Zanoni
50cafe4b1c
Add X icon in Share and Social buttons (replaces twitter share icon) (#1273)
* Add svg for X

* Add X share button

* Remove twitter share button

* Add backwards compatibility for twitter share button

* simplify condition

* alphabetize x svg

---------

Co-authored-by: Aditya Telange <21258296+adityatelange@users.noreply.github.com>
2023-11-04 10:32:55 +05:30
Aditya Telange
7795c90f6f
Add safeHTML to post_meta
- delimit now returns a string and not a template.HTML from hugo v0.120.0
- no impact found with min req version for Papermod
https://github.com/gohugoio/hugo/releases/tag/v0.120.0

fixes #1325
2023-10-31 21:34:19 +05:30
Aditya Telange
24f3096e33
Update README.md
Mention Paper's commit sha
2023-10-29 22:50:26 +05:30
Kevin Chung
4bbd551d2b
feat: add bugcrowd and intigriti to svg.html (#1205) 2023-10-28 13:25:25 +05:30
calalloo
7781c94699
Add Swahili translation sw.yaml (#1303)
Co-authored-by: dryscord <139716273+dryscord@users.noreply.github.com>
2023-10-28 13:22:31 +05:30
Thanos Apollo
abe49a5ad4
Add codeberg icon (#1310)
Resolve #1268
2023-10-28 13:21:42 +05:30
Lars Kristian Haga
697034ccb7
Added Norwegian translation (#1318) 2023-10-28 13:17:21 +05:30
Thành Nhân
b4dd5f0b18
Update vi.yaml (#1316) 2023-10-28 13:17:03 +05:30
COxDE
efe4cb4516
Add social icon for Pleroma (#1293) 2023-08-26 20:18:57 +05:30
COxDE
3a064f5c76
Add the social icon for Firefish (#1294) 2023-08-26 20:18:14 +05:30
black jack
9d4a9e825a
add social icon of leetcode (#1286)
* add social icon of leetcode
from https://simpleicons.org/

* alphabetize

---------

Co-authored-by: Aditya Telange <21258296+adityatelange@users.noreply.github.com>
2023-08-12 17:52:00 +05:30
Hiroshi Shimoju
eab731707a
fix: Prevent adjustments of font size after orientation changes in iOS (#1285)
The font size in the code block may be larger.
As shown below, the Reset CSS specifies `text-size-adjust: 100%`.
fc091cce15/normalize.css (L13)
092d0d8592/sanitize.css (L43)
2023-08-12 13:26:08 +05:30
Navendu Pottekkat
f7bd1ec07c
feat: add configurable limit to search results (#1281)
* feat: add configurable limit to search results

Signed-off-by: Navendu Pottekkat <navendu@apache.org>

* Handle case where params.fuseOpts is not defined
resulting into `Cannot read properties of null (reading 'limit')`


Utilizes search options by fuse https://www.fusejs.io/api/methods.html#search 

The options:

limit (type: number): Denotes the max number of returned search results.

---------

Signed-off-by: Navendu Pottekkat <navendu@apache.org>
Co-authored-by: Aditya Telange <21258296+adityatelange@users.noreply.github.com>
2023-08-12 13:17:24 +05:30
Aditya Telange
ac1e041419
Add news.ycombinator share button 2023-08-09 21:19:17 +05:30
Bob Zheng
69cec7a0ba
feat: add wechat icon (#1149)
Co-authored-by: Aditya Telange <21258296+adityatelange@users.noreply.github.com>
2023-08-05 12:12:02 +05:30
Berk Elyesa Yıldırım
4230109ff7
Add svg for pixelfed (#87) (#1272) 2023-08-05 12:01:43 +05:30
Rook1e
1521cc77a2
feat: allow hiding author in post_meta (#1250)
* feat: allow hiding author in post_meta

For a person's site, in most cases the author is the person, and displaying it
on every post and list may be redundant.

Setting the `params.author` in the configuration to empty will achieve
the hidden effect, but it will also empty the value of `<meta name="author">`.

So add hideAuthor
2023-08-05 11:52:30 +05:30
Morc
6f29d35d73
Add svg for root-me.org (#1174) 2023-07-23 14:14:45 +05:30
Markus Dick
faa73a4ee8
add printables and thingiverse logo (#1216)
source of the logos is simpleicons.org
2023-07-23 14:06:25 +05:30
Andreas Deininger
61bf918a0d
socialIcons, fix: apply safeURL to make all URI schemes work (#1266) 2023-07-23 14:02:18 +05:30
Andreas Deininger
74d288ff94
Bump GitHub workflow actions to latest versions (#1267)
ref: https://github.com/actions/starter-workflows/blob/main/pages/hugo.yml
2023-07-23 14:00:36 +05:30
ppnplus
750feb9cc9
Create translations for Thai (th.yaml) (#1252) 2023-07-15 11:52:30 +05:30
Tarak Parab
804a8682f3
Icon for Google Play Store (#1242) 2023-07-09 11:10:43 +05:30
Roland Thomas Jr
c52abfb09b
Add social icon for Tidal (#1259) 2023-07-09 11:10:07 +05:30
Geeqla
8ac719fb56
Add social icon for Threads (#1256) 2023-07-09 11:08:57 +05:30
Wonderfall
3e21361da7 make button type explicit 2023-06-19 13:52:52 +02:00
Wonderfall
3ad501e45d add aria-label 2023-06-19 13:47:21 +02:00
Wonderfall
4ae8c414da fix input tag 2023-06-19 13:41:40 +02:00
Wonderfall
60282f60fc remove stray input 2023-06-19 13:38:37 +02:00
Wonderfall
ad99ef818a Merge remote-tracking branch 'upstream/master' 2023-06-16 14:26:10 +02:00
Léo Vincent
4a924cef54
chore: update french translations (#1222)
Related to #914
2023-06-04 18:29:55 +05:30
Maciej Bromirski
07759b794f
updated pl.yaml for #914 (#1229) 2023-06-04 18:29:28 +05:30
Aditya Telange
bacb763071
Bump minimum Hugo version to 0.97.1
required for #1187
2023-05-07 17:40:58 +05:30
Aditya Telange
3fd9888f43
Update README 2023-04-28 21:38:05 +05:30
Timon Back
d6f911cc05
Allow loading cover from assets folder (#1187)
By default, the cover is loaded from the page resources folder (same folder).
If the image is not found, the (global) assets folder is searched as well. If found, the same processing is done.
Otherwise, the fallback remains with linking to the image directly.
2023-04-28 20:13:57 +05:30
Aditya Telange
be5badf317
Add RSS icon to archives page 2023-04-23 20:15:10 +05:30
Alexander Zhang
8d1e45a42a
Fix RSS link for paginated list pages (#1192)
The link was previously hard-coded to index.html, which doesn't work on
paginated list pages because it would go to something like
/section/pages/2/index.html instead of /section/index.html.
2023-04-23 19:47:46 +05:30
Shivan Sivakumaran
a34784c3ed
Add social icon for substack (#1197) 2023-04-23 19:17:29 +05:30
Douglas Tofoli
031e2ba57e
Add condition to disable edit post on single pages (#1143)
editPost:
    disabled: true

---------

Co-authored-by: Aditya Telange <21258296+adityatelange@users.noreply.github.com>
2023-04-02 00:34:56 +05:30
Geeqla
5d2c036624
Add social icon for VK (#1171) 2023-04-02 00:19:49 +05:30
Aditya Telange
1d151a4a02
Revert "Add RSS icon to archive pages (#1156)" (#1183)
This reverts commit a636c9eaee7e2d8603dd6e1f983c8a9ff27577ae.
2023-04-02 00:17:01 +05:30
Clément Joly
a636c9eaee
Add RSS icon to archive pages (#1156)
If the setting “ShowRssButtonInSectionTermList” is true, I think it
makes sense to also show the RSS icon by the title in archive pages, as
we do for other article lists.

This reuses the code of `layouts/_default/list.html`.
2023-04-01 23:58:19 +05:30
Hauke
2210bf20b3
change del element decoration to line-through (#1181)
According to caniuse.com only around 69% of mobile user and 22% desktop users use a browser that supports this element. Therefore this change uses text-decoration: line-through to archive the same effect across browsers.
2023-03-31 21:33:56 +05:30
Aditya Telange
d67462d0f3
Fix incorrect 'it' translations
https://github.com/adityatelange/hugo-PaperMod/pull/1166#discussion_r1125504542
2023-03-04 23:12:18 +05:30
Matteo Contrini
494d6d5dff
Improve Italian translation (#1166) 2023-03-04 22:32:34 +05:30
Sawa
b43af19b11
change i18n next prev in japanese (#1167) 2023-03-04 18:57:37 +05:30
Michail Angelos Tsiantakis
e6b697f365
Add support for Greek, Modern el.yaml (#1160) 2023-02-18 12:41:12 +05:30
Aditya Telange
25e5b4d298
Tag Release 7.0 2023-02-12 12:23:08 +05:30
Aditya Telange
8efba34fa9
Update License year 2023-02-12 12:21:40 +05:30
Aditya Telange
35643680d2
Update README 2023-02-04 17:58:07 +05:30
Jingchao
a35a33c2e1
Add douban and zhihu icon (#1084) 2023-02-04 17:42:27 +05:30
k-yone
4d42965bb5
Add title to the image tag in rss.xml (#1105)
Ref: https://cyber.harvard.edu/rss/rss.html#ltimagegtSubelementOfLtchannelgt
2023-02-04 17:34:21 +05:30
Bohao Jing
f5320cd336
Add netease cloud music icon (#1093) 2023-02-04 17:22:53 +05:30
Nathan Fradet
7250994280
Google scholar svg icon fixed, now unfilled curved line (#1064) 2023-02-04 12:52:02 +05:30
rais ilham
2347bb9c11
Add codeforces icon (#1092)
From https://github.com/simple-icons/simple-icons
2023-02-04 12:50:27 +05:30
Josh Müller
33085a8b23
Add TryHackMe Icon (#1113)
from Simple Icons https://github.com/simple-icons/simple-icons/blob/develop/icons/tryhackme.svg
2023-02-04 12:36:22 +05:30
Axel Wagner
db75cdc9b8
Add Tumblr Icon (#1115) 2023-02-04 12:31:25 +05:30
Karpfly
d47a7d67fa
updated Polish translation (#1148) 2023-02-04 12:13:43 +05:30
Andrey Mukamolov
ec01777341
Added Belarusian translations i18n/be.yaml (#1144) 2023-02-04 12:13:10 +05:30
Igor Rodriguez
2b5f00640d
PT translation updated (#1124)
Signed-off-by: igorr0driguez <42983358+igorr0driguez@users.noreply.github.com>
2023-02-04 12:11:54 +05:30
Essa Alshammri
4152dc75e8
update arabic pagination translation (#1137) 2023-02-04 12:10:27 +05:30
Nikita
d3d90be8a4
Improve Turkish Translation tr.yaml (#1098) 2022-12-24 20:51:10 +05:30
Eran Israeli
bf0883adb5
Update Hebrew translation (#1104)
Signed-off-by: Eran Israeli <eisraeli@redhat.com>
2022-12-24 20:49:02 +05:30
Aditya Telange
5ca2d29537
Fix multi-line anchor tags not highlighted/underlined.
fixes: #1107
2022-12-20 21:13:51 +05:30
Wonderfall
1bbb071fe7 fix underlining changes 2022-12-16 12:27:00 +01:00
Wonderfall
06ee5f9d38 use border-bottom to underline links (fix #4) 2022-12-15 14:33:52 +01:00
Wonderfall
0350f512ee
Merge branch 'adityatelange:master' into master 2022-11-16 10:26:03 +01:00
Ezqzy
4bd96d6271
Added Croatian translation (hr.yaml) (#1044) 2022-11-12 13:07:33 +05:30
Tarun Kumar Jana
3b83cdc4b5
Improve Bengali translation (#1086)
Added the following id:

- `words`
2022-11-12 13:05:30 +05:30
Wonderfall
a2865e01e0
add information regarding upstream changes 2022-10-10 12:32:38 +02:00
Wonderfall
79a6f0174a Merge remote-tracking branch 'upstream/master' 2022-10-09 17:22:16 +02:00
Wonderfall
8c1b8e0647 fix copy code button (again) 2022-10-09 04:04:32 +02:00
Wonderfall
e44658b9b6 fix copy code param 2022-10-09 03:45:35 +02:00
Joe Mooring
3a0a4811cb
[PATCH] Fix date format in schema and opengraph templates
cherry-picked from 34e4742f0c
2022-09-03 16:29:45 +05:30
Aditya Telange
ddfea82cc7
Fix error with profileMode imageUrl on Windows devices
when imageUrl was set with external link resources.Get throws an error

Ref: 22ef5da20d

fixes: #1019
2022-09-03 16:06:39 +05:30
bentonw414
1f0f294c85
Use Nullish Coalescing Operator with Fastsearch (#1033) 2022-09-02 21:32:32 +05:30
Wonderfall
bbfb6f518d
Merge pull request #3 from jonaharagon/no-popups
Remove target="_blank" from links
2022-09-02 00:30:04 +02:00
Jonah Aragon
8c40461fc6
Remove target="_blank" from links 2022-08-31 20:57:32 -05:00
Aditya Telange
275d0e9be7
Update bug report template
Add Repo/Source where this issue can be reproduced
2022-08-28 15:40:40 +05:30
Pinfel
2761a95697
add sketchfab icon (#998) 2022-08-28 15:26:51 +05:30
Pinfel
0cf3f7ae00
Fix spotify icon svg (#997)
super minor fix for spotify icon, basically no change in functionality

typo in 'stoke' but it looks better without that way anyways so i just changed it to none
2022-08-28 15:25:59 +05:30
Luke
178b18e4e7
Updating pagination strings for de (#1024) 2022-08-28 15:20:53 +05:30
Christopher Wróbel
2009151773
Add icons for AniList and osu! (#1022)
* Add anilist logo

* Add osu logo
2022-08-28 15:20:38 +05:30
WfKe9vLwSvv7rN
11a52b70cd
Fix spacing around rawhtml shortcode (#1018)
Removes line break from generated HTML output. This line break renders in browsers as an unwanted space.
2022-08-28 15:18:20 +05:30
Wonderfall
ddaf94cd3d add lastmod support 2022-08-23 17:02:53 +02:00
Wonderfall
f625367ff7
fix README 2022-08-23 13:24:00 +02:00
Wonderfall
9c23a8180a
Merge pull request #2 from WfKe9vLwSvv7rN/patch-2
Fix spacing around rawhtml shortcode (again)
2022-08-22 15:08:06 +02:00
WfKe9vLwSvv7rN
15a122bf7a
Fix spacing around rawhtml shortcode (again)
Fix trailing newline invisibly added by GitHub editor
2022-08-22 06:05:01 -07:00
Wonderfall
b27c6b9ef0
Merge branch 'adityatelange:master' into master 2022-08-22 14:14:38 +02:00
Wonderfall
39ac1acdaf
Merge pull request #1 from WfKe9vLwSvv7rN/patch-1
Fix spacing around rawhtml shortcode
2022-08-22 14:13:46 +02:00
WfKe9vLwSvv7rN
92c8a84b00
Fix spacing around rawhtml shortcode
Remove line break from generated output
2022-08-22 04:57:53 -07:00
Aditya Telange
b906338dc8
Add param 'hiddenInHomeList' to hide certain post from home page
Usage =>
---
title: post name
hiddenInHomeList: true
---
2022-08-20 14:31:07 +05:30
Aditya Telange
198a4d74ae
Fix Code Smell: Unexpected var, use let or const instead.
https://sonarcloud.io/project/issues?issues=AYEpqxwP3DjyH4ZzxfLw&open=AYEpqxwP3DjyH4ZzxfLw&id=adityatelange_hugo-PaperMod
2022-08-20 14:20:51 +05:30
ArtBIT
fd077de0f4
Add social icons for DeviantArt and Patreon (#1013)
* Add DeviantArt social icon

* Add Patreon social icon
2022-08-19 22:45:49 +05:30
pabloscloud
84f9adfa5f
Adding threema as social icon (#1012) 2022-08-19 22:44:21 +05:30
Aditya Telange
eba92edd83
Feat: Add page nums in list pages
In site config =>
Params:
    ShowPageNums: true
2022-08-15 19:25:55 +05:30
Aditya Telange
6f0c88d2b8
pages: use github actions as build source
- remove older build config (Classic Pages)
2022-08-15 18:58:10 +05:30
Hattomo (TomohiroHattori)
7c4aa74069
Add more ja translations (#1004) 2022-08-12 19:42:09 +05:30
Mehedi Hasan
3e544a3ebd
Updating pagination strings for bn: (#1002)
"পরবর্তী পাতা" -> "পরবর্তী" & "পূর্বের পাতা" -> "পূর্ববর্তী"
2022-08-06 12:10:41 +05:30
Netruk44
42fa989316
Add optional custom "title" for social links (#999)
Co-authored-by: Aditya Telange <21258296+adityatelange@users.noreply.github.com>
2022-08-06 12:09:58 +05:30
Wonderfall
b01e9a8653 bundle noscript style 2022-07-31 01:37:00 +02:00
Wonderfall
18b691c534 remove noscript inline style 2022-07-31 01:16:39 +02:00
Wonderfall
4f5eea2395 ask to enable js for search 2022-07-30 17:48:00 +02:00
Wonderfall
67efb771bf improve js 2022-07-29 16:15:27 +02:00
Wonderfall
b43431bd51 refactor theme.js 2022-07-29 16:15:22 +02:00
Wonderfall
2f3c140f80 remove unnecessary js 2022-07-29 15:59:19 +02:00
Wonderfall
4e3fbc7770 update README 2022-07-29 02:54:07 +02:00
Wonderfall
2989681d12 change progressBar color 2022-07-29 02:30:27 +02:00
Wonderfall
285c0d61fe add progressbar exceptions 2022-07-29 02:19:44 +02:00
Wonderfall
56560e3a03 make the progress bar disappear near the bottom 2022-07-29 01:59:55 +02:00
Wonderfall
13876beb0a add progressbar 2022-07-29 00:07:11 +02:00
Wonderfall
0a140a1a12 update scrollbar 2022-07-28 16:58:39 +02:00
Wonderfall
0dda1aeaa1 improve ToC height responsiveness 2022-07-28 16:37:20 +02:00
Wonderfall
b79f84fff6 fix screen detection 2022-07-28 03:53:18 +02:00
Wonderfall
d0734456ca fix js 2022-07-28 03:34:52 +02:00
Wonderfall
b9e4f627cc open toc on wide displays 2022-07-28 03:17:31 +02:00
Wonderfall
dfe6ecc550 few CSS tweaks 2022-07-28 02:44:46 +02:00
Wonderfall
da4046d4db fix README 2022-07-26 02:10:43 +02:00
Wonderfall
01fb4fad08 show pointer for menu 2022-07-25 19:09:26 +02:00
Wonderfall
0c9b25a0d5 update README 2022-07-25 18:28:45 +02:00
Wonderfall
705ff19890 add close button for menu 2022-07-25 17:49:52 +02:00
Wonderfall
41f827f1d5 refine menu css 2022-07-25 06:32:59 +02:00
Wonderfall
b33b96873f adjust menu css 2022-07-25 06:17:33 +02:00
Wonderfall
6c8e3ef699 fix menu 2022-07-25 06:10:26 +02:00
Wonderfall
723ac4f5c6 add responsive menu 2022-07-25 06:08:07 +02:00
Wonderfall
5737f8613c small js change 2022-07-25 01:41:59 +02:00
Wonderfall
17fd82358d update README 2022-07-24 15:32:36 +02:00
Wonderfall
ceea1fb8e4 fix README 2022-07-24 15:31:40 +02:00
Wonderfall
136e6ed883 update README 2022-07-24 15:30:47 +02:00
Sunghyun Jun
30a2cc7a65
Add a meta tag for naver site verification (#991) 2022-07-24 12:25:28 +05:30
Aniket Teredesai
0f37c0615e
add vimeo icon (#975) 2022-07-24 12:22:35 +05:30
Wonderfall
d08880dd9b update share-buttons 2022-07-24 03:39:14 +02:00
Wonderfall
230360552b add toc side support 2022-07-24 03:12:49 +02:00
Wonderfall
09c9be232f add information about chroma 2022-07-24 02:07:44 +02:00
Wonderfall
78dc2698cb update chroma css 2022-07-24 01:57:13 +02:00
Wonderfall
8411411a67 built-in Chroma 2022-07-24 01:39:42 +02:00
Aniket Teredesai
77ffb308c3
Allow adding SVG in place of logo image (#976)
Usage =>
Params.label.iconSVG: "<your SVG as a string>"
2022-07-23 09:45:32 +05:30
Wonderfall
ebe7400f54 update theme.toml 2022-07-23 04:18:44 +02:00
Wonderfall
2528906a38 Remove inline JS 2022-07-23 04:15:25 +02:00
Aditya Telange
87ffee9fcf
Remove alt for label.icon
considering "iconic images that are redundant with text next to them or purely decorative should have alt="" instead."
from https://validator.w3.org/
2022-07-17 11:44:33 +05:30
Achim Krämer
bb6d4647bd
add missing Icons, update Icon style (#733)
* 💄 Update Icons

- add Icon for Micro.blog
- add Icon for xmpp
- add Icon for session messenger
- update Steam Icon to fit to line icon style of papermod-theme

Signed-off-by: Achim Krämer <39946364+pxlfrk@users.noreply.github.com>

* refactor alphabetically

Co-authored-by: Aditya Telange <21258296+adityatelange@users.noreply.github.com>
2022-07-17 11:42:42 +05:30
Aditya Telange
450e8867a6
Update inTextImg.html
Fix Bad value 15px for attribute height on element img: Expected a digit but saw p instead.
2022-07-17 00:19:07 +05:30
Aniket Teredesai
575b0b0e38
Update hindi translation (#977) 2022-07-16 12:28:52 +05:30
Aditya Telange
c0b7ea5f4b
Fix Profile Mode imageTitle missing
fixes: #945
2022-07-09 20:09:32 +05:30
Jacob Biehler
621c9f60fb
Adding Sourcehut SocialIcon (#964) 2022-07-09 14:52:39 +05:30
Aditya Telange
29fefb4890
Add a space to External link SVG in profile button 2022-07-08 23:26:29 +05:30
Aditya Telange
179fea63a3
Add a space to External link SVG in header menu 2022-07-08 20:43:59 +05:30
Aditya Telange
4824f4623d
Mark External link with an SVG icon
in profile-mode buttons and Menu
2022-07-08 20:29:56 +05:30
Aditya Telange
e3c30b4e41
Add inTextImg shortcode
Allows adding in-line-text images

usage in page.md =>
This image is inlined {{< inTextImg.html url="image.png" >}} here.

optional args:
- height
- alt
2022-07-08 20:28:38 +05:30
Aditya Telange
5032b2c4f1
Revert "add blockquote as shortcode"
This reverts commit 984d1a576c30134617f01df1933475188f033c14.

Removal of shortcode for blockquote: https://github.com/parsiya/Hugo-Shortcodes/blob/master/shortcodes/blockquote.html
2022-07-08 20:28:29 +05:30
Aditya Telange
d5b780720d
Simplify share-buttons svg 2022-07-08 20:28:22 +05:30
Aditya Telange
6ebeb20bdb
Remove share-buttons svg animation 2022-07-08 20:28:05 +05:30
Aditya Telange
5f280c5df2
Simplify theme-toggle svg height 2022-07-08 20:27:40 +05:30
Em
1ead1f76e2
Change i18n next prev page Indonesian (#961)
Co-authored-by: aemtsh <105593707+aemtsh@users.noreply.github.com>
2022-07-08 20:24:47 +05:30
Yaroslav
36b4cb35a4
Update russian translation (#957) 2022-07-08 20:24:23 +05:30
Em
9af128a8a6
Update Indonesian Languange (id.yaml) (#955) 2022-06-24 21:00:09 +05:30
Vighnesh Shenoy
7683ef1825
Add lichess.org social icon. (#952) 2022-06-22 23:03:16 +05:30
Taeho Nam
0262b5eba0
Fix typo to work with site verification tags (#954)
It was originally correct code, but it has been erroneously corrected by the commit below.
575cc0c

Co-authored-by: Aditya Telange <21258296+adityatelange@users.noreply.github.com>
2022-06-22 22:49:43 +05:30
Aditya Telange
a94674e6c9
Include chroma fix code when hljs is disabled
provided: pygmentsUseClasses: true & markup.highlight.noClasses: false

https://github.com/adityatelange/hugo-PaperMod/wiki/FAQs#using-hugos-syntax-highlighter-chroma
2022-06-10 21:26:13 +05:30
Roj
c692695754
Improve Kurdish translations (#936) 2022-06-04 21:13:35 +05:30
Aditya Telange
181a8c38f3
Allow disabling custom Scroll Bar Style
closes #637

Usage =>
Params.assets.disableScrollBarStyle: true
2022-06-03 18:33:54 +05:30
Aditya Telange
0ed246d47d
Seperate scroll-bar customization into seperate stylesheet 2022-06-03 18:32:09 +05:30
Aditya Telange
c2d047f376
Add code loading CSS for required features
based on #696
2022-06-03 18:30:49 +05:30
Aditya Telange
43ac108b03
Stop using git.io link
as it might get removed soon
2022-05-29 11:12:48 +05:30
Aditya Telange
a4b20f0f4d
Add license text for PaperMod in resources 2022-05-29 11:11:26 +05:30
Aditya Telange
e1a46046bc
Stop minfiying already minified resources
- Keeps the license text for 3rd party lib in place after generation
2022-05-29 10:52:15 +05:30
Aditya Telange
57dd5404d3
Update fuse.js v6.5.3 to v6.6.2 basic
- https://github.com/krisk/Fuse/releases/tag/v6.6.2
2022-05-29 10:32:27 +05:30
Aditya Telange
0c71711332
Fix impact of 2b0a52a on horizontal blocks 2022-05-28 21:57:44 +05:30
Aditya Telange
2b0a52ab25
Fix scroll bar appearance in Safari
Ref: https://github.com/adityatelange/hugo-PaperMod/issues/654#issuecomment-1015819905

fixes: #654
2022-05-28 21:53:12 +05:30
Keno Hassler
6aced45a65
Output valid HTML (#673) 2022-05-27 22:49:32 +05:30
Aditya Telange
2e36f439a4
Remove redundant <p> tags from home-info mode 2022-05-27 22:40:41 +05:30
Je Sian Keith Herman
282ad5b6f5
Add ORCID Social Icon (#928) 2022-05-27 22:22:31 +05:30
Martin Pittermann
7b9c836416
Add robotsNoIndex parameter (#900)
- adds the ability to use the noindex and nofollow parameters for specific pages in production mode, preventing e.g. the imprint from showing up in search engines.
- Usage: In post front-matter add,
    ---
    robotsNoIndex: true
    ---
2022-05-22 11:13:50 +05:30
Aditya Telange
e59a43c00d
Don't auto titlelify button text #842 2022-05-17 22:00:09 +05:30
Ivan Aprea
63e929cdad
chore: change i18n next prev spanish language (#917) 2022-05-17 20:59:07 +05:30
Dejavu Moe
cb9be55c78
Update translation of zh-tw (#908) 2022-05-14 19:07:04 +05:30
Aditya Telange
b7dbb0ea0e
Use innerHTML instead of innerText in Code Copy strings
so that users willing to use a svg inplace of already existing text can update the i18n strings and get an svg in place
2022-05-14 10:55:41 +05:30
Aditya Telange
cf5b2d59b2
Updating pagination strings for en:
"Next Page" -> "Next" & "Prev Page" -> "Prev"
For #914
2022-05-14 10:29:55 +05:30
Aditya Telange
cd65d698fc
Update README.md
Add Discord link
2022-05-12 21:50:33 +05:30
Richard Slater
4ddcae3120
Add GuruShots (https://gurushots.com/) Social Icon (#906) 2022-05-08 08:29:44 +05:30
Richard Slater
1478c0bc17
Add TikTok Social Icon (#905) 2022-05-07 19:38:26 +05:30
Aditya Telange
d3084bee79
Remove sourcerer Icon
https://github.com/sourcerer-io/sourcerer-app/issues/632
2022-05-01 20:54:15 +05:30
Aditya Telange
38af7c47a6
Update LICENSE
Add current year 2022
2022-04-30 09:35:10 +05:30
Aditya Telange
44f5970db2
Add RSS button to Section and Term pages.
Usage =>
Params:
  ShowRssButtonInSectionTermList: true

---
ShowRssButtonInSectionTermList: false
---
2022-04-30 07:42:51 +05:30
Haziq Rohaizan
64c40fe6bd
Add translations for Malay(ms) (#899) 2022-04-29 22:32:02 +05:30
Moon Sungjoon
a2e4258f3f
i18n: Update Korean translation ko.yaml (#894) 2022-04-29 22:31:25 +05:30
Aditya Telange
1d2ecfedac
Add Support for i18n taxonomy for tags
closes: #876
2022-04-23 09:24:12 +05:30
Aditya Telange
8671af6e0c
Fix line nums in code block alignment in rtl languages 2022-04-23 08:27:05 +05:30
OxNinja
e888673bb2
Update French translation fr.yaml (#888)
Updated translations to use a more correct french (such as good use of capital letter or spacing with special characters)
2022-04-21 22:18:14 +05:30
Matt Burns
8645e275ad
Added Strava icon svg (#890)
Thanks to https://www.iconfinder.com/icons/4691462/strava_icon for the icon

Co-authored-by: Matt Burns <matt@cameraforensics.com>
2022-04-21 22:15:41 +05:30
Aditya Telange
4ef79036c5
Fix W3 validator warning: Section lacks heading for home_info (#857)
Use `div` instead of `section` element, because already an `article` element.
2022-04-19 20:34:59 +05:30
Rotzbua
c6e9568c12
Fix W3 validator warning: Section lacks heading. (#857)
Use `div` instead of `section` element, because already an `article` element.
2022-04-19 20:33:05 +05:30
Nicola Biancolini
c0e7be6534
Fix malformed html structure of the translation list on post. (#886)
Moves "Translations" word out of `ul`
2022-04-19 20:22:20 +05:30
Aditya Telange
39910dc27f
Update README.md
Add stargagers graph thanks to starchart.cc
Add emojis
2022-04-19 19:59:39 +05:30
Sebastien
a55b9517dc
Set <hr>'s border to 0 (#870)
* Updated post-single.css to set hr's border to 0

* cleanup

Co-authored-by: Aditya Telange <21258296+adityatelange@users.noreply.github.com>
2022-04-19 19:46:11 +05:30
sethforprivacy
fc8c8666cf Add social icons for podcast platforms
Add Bitcoin, Monero, and PeerTube

closes #748
2022-04-15 21:20:29 +05:30
hpello
c5d31c778b
Add applemusic icon. (#869) 2022-04-09 13:24:10 +05:30
六开箱
b297199309
Update translation zh.yaml (#868)
add space between {{ .Count }} and 字 in id: words as they are in id: read_time
2022-04-09 13:23:18 +05:30
Rotzbua
09921bb542
Remove not required tailing slashes for meta, link (#862) 2022-03-31 23:33:56 +05:30
Aditya Telange
363756ffee
Remove redundant code for Label.logo: resize image
amend to 1de55c4
2022-03-27 22:22:28 +05:30
Aditya Telange
1de55c4266
Label.logo: Generate a resize image
if the image is present in assets directory.
- Resizing the image will reduce the size of a large image.
- Should improve image load time.
- Usage:
  - Add the image under assets directory.
  - Provide path in `label.icon`.
  - if image is located as `assets/images/image.png` mention `label.icon: images/image.png`.
2022-03-27 20:17:49 +05:30
Aditya Telange
566989abf4
Revert "Preload profileMode image and label icon"
This reverts commit a3ad238f78757133f9af43cfeaa1e837858218f5
This reverts commit a86abf59947645d34c56ca31f6b94bcb99eeb750.
2022-03-27 19:56:56 +05:30
Aditya Telange
2bb7687a34
Profile-Mode: Generate a resize image
if the image is present in `assets` directory.
- Resizing the image will reduce the size of a large image.
- Should improve image load time.
- Usage:
  - Add the image under assets directory.
  - Provide path in `profileMode.imageUrl`.
  - if image is located as `assets/images/image.png` mention `profileMode.imageUrl: images/image.png`.
2022-03-27 19:55:28 +05:30
Aditya Telange
f1296bc29d
chore: allow setting manual version when required 2022-03-27 19:39:44 +05:30
Aditya Telange
575cc0ca8c
Use site function instead of .Site or $.Site
- The site function provides global access to the same data as the .Site page method.
- Current context (`.`) is never considered.
2022-03-27 18:44:06 +05:30
Chiahong
975972e041
Update Taiwanese Chinese translation (#848) 2022-03-25 19:51:23 +05:30
Aditya Telange
496b846597
Removing unit from img's height attribute for label.icon
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attr-height
2022-03-25 19:48:54 +05:30
Philipp Bastian
375155061d
Add icons for 'komoot' and 'letterboxd' (#799)
* Add 'komoot' and 'letterboxd' icon to svg.html
2022-03-18 13:01:37 +05:30
Panagiotis Simakis
6a3887f4e0
Add kaggle icon to social icons (#830) 2022-03-18 12:42:56 +05:30
Fernando Filho
e83d840126
add social icon for Deezer (#811)
Co-authored-by: Aditya Telange <21258296+adityatelange@users.noreply.github.com>
2022-03-18 12:39:20 +05:30
Aditya Telange
16293e9578
Add missing quotes to zh: words 2022-03-17 22:33:05 +05:30
lavaicer
5a5b0840ed
Update zh.yaml
trans words -> 字 (#837)
2022-03-17 22:21:53 +05:30
Emil Erlandsson
42c3c937a1
Add Swedish (sv) translation sv.yaml (#829) 2022-03-13 15:26:42 +05:30
Aditya Telange
80928d9f23
Fix pre getting a dark background
fixes: #723
2022-03-12 19:33:29 +05:30
Aditya Telange
2a1390bef7
Match key as well for pgpkey icon
amend to 53fd4bb857d29a651487a77a62c4c91901a1582a
2022-03-11 20:49:27 +05:30
Rohit Gupta
53fd4bb857
Add icon for pgp key (#784) 2022-03-11 20:43:51 +05:30
WÁNG Xuěruì
26315a9e4c
Add icon for Bilibili (#814)
The icon is re-drawn by myself to use outlines, referring to the icon
used on bilibili.com and the simpleicons version (which all used fills).
2022-03-11 20:36:14 +05:30
Aditya Telange
912eddde0a
Revert "Fix pre getting a dark background"
This reverts commit 15b984bd215b7c4a73385e76486ec93b0aadcc53.
2022-03-11 20:32:06 +05:30
Aditya Telange
15b984bd21
Fix pre getting a dark background
fixes: #723
2022-03-11 19:32:37 +05:30
Jannik Arndt
43c810c3e2
Remove duplicate call to hugo.Generator (#786) 2022-02-15 20:01:21 +05:30
Aditya Telange
06f97458a7
Delete FUNDING.yml 2022-02-05 18:40:37 +05:30
Aditya Telange
81ddc76efb
Update fuse.js v6.4.6 to v6.5.3 basic
- https://github.com/krisk/Fuse/releases/tag/v6.5.3
2022-02-05 17:54:35 +05:30
Aditya Telange
c9f7c54ae6
Rename fuse.js -> fuse.basic.min.js
- denoting we are using basic version
2022-02-05 17:54:24 +05:30
Aditya Telange
530044033e
Add UseHugoToc so that Hugo's default ToC can be used.
Usage =>
UseHugoToc: true

closes: #747
2022-01-22 00:25:35 +05:30
yuyin
d52bced735
complete simplified/traditional Chinese (#756) 2022-01-21 23:59:36 +05:30
Thiago Perrotta
b0ab8ea495
Add option to add word count to metadata (#740)
Usage: 
ShowWordCount: true
2022-01-21 23:58:25 +05:30
Andreas Deininger
37f359ee21
Completing German, English and Spanish translation (#728) 2022-01-15 19:04:54 +05:30
97 changed files with 2081 additions and 1050 deletions

12
.github/FUNDING.yml vendored
View File

@ -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']

View File

@ -26,7 +26,7 @@ Please fill the template below
- Device/Os: [e.g. Android 10]
- Type: [e.g. Desktop/Mobile]
- Browser and version [e.g. Chrome 86.0]:
- Hugo Version [ >=0.83.0 expected]:
- Hugo Version [ >=0.112.4 expected]:
- Theme Version [e.g. v4.0, master, or commit-id ]:
**Steps to reproduce the behavior:**
@ -40,6 +40,9 @@ Please fill the template below
**Expected behavior**:
<!-- 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**
<!-- If applicable, add screenshots to help explain your problem. -->

BIN
.github/assets/web-capture.jpeg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

View File

@ -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: '0.83.0'
- name: Build
run: hugo --buildDrafts --gc --verbose --minify

View File

@ -1,42 +1,80 @@
name: Build GH-Pages
name: Deploy Hugo PaperMod Demo to Pages
on:
push:
paths-ignore:
- 'images/**'
- 'LICENSE'
- 'README.md'
- "images/**"
- "LICENSE"
- "README.md"
branches:
- master
- exampleSite
workflow_dispatch:
# 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:
deploy:
# Build job
build:
runs-on: ubuntu-latest
env:
HUGO_VERSION: "0.112.4"
steps:
- name: Git checkout
uses: actions/checkout@v2
- name: Check version
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:
ref: exampleSite
- name: Setup Pages
id: pages
uses: actions/configure-pages@v3
- 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
- name: Build with Hugo
run: |
hugo \
--buildDrafts --gc --verbose \
--baseURL ${{ steps.pages.outputs.base_url }}
- name: Upload artifact
uses: actions/upload-pages-artifact@v2
with:
hugo-version: '0.83.0'
- name: Build
run: hugo --buildDrafts --gc --verbose --minify
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.TOKEN }}
publish_dir: ./public
path: ./public
# Deployment job
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v2

View File

@ -1,7 +1,7 @@
MIT License
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
of this software and associated documentation files (the "Software"), to deal

5
Makefile Normal file
View 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

109
README.md
View File

@ -1,90 +1,41 @@
<h1 align=center>Hugo PaperMod | <a href="https://adityatelange.github.io/hugo-PaperMod/" rel="nofollow">Demo</a></h1>
<h4 align=center>☄️ Fast | ☁️ Fluent | 🌙 Smooth | 📱 Responsive</h4>
<br>
> Hugo PaperMod is a theme based on [hugo-paper](https://github.com/nanxiaobei/hugo-paper).
> The goal of this project is to add more features and customization to the og theme.
The [demo](https://adityatelange.github.io/hugo-PaperMod/) includes a lot of documentation about Installation, Features with a few more stuff. Make sure you visit it, to get an awesome hands-on experience and get to know about the features ...
**ExampleSite** can be found here: [exampleSite](https://github.com/adityatelange/hugo-PaperMod/tree/exampleSite). Demo is built up with [exampleSite](https://github.com/adityatelange/hugo-PaperMod/tree/exampleSite) as source.
[![Minimum Hugo Version](https://img.shields.io/static/v1?label=min-HUGO-version&message=0.83.0&color=blue&logo=hugo)](https://github.com/gohugoio/hugo/releases/tag/v0.83.0)
[![Build GH-Pages](https://github.com/adityatelange/hugo-PaperMod/workflows/Build%20GH-Pages/badge.svg)](https://github.com/adityatelange/hugo-PaperMod/deployments/activity_log?environment=github-pages)
[![GitHub](https://img.shields.io/github/license/adityatelange/hugo-PaperMod)](https://github.com/adityatelange/hugo-PaperMod/blob/master/LICENSE)
[![hugo-papermod](https://img.shields.io/badge/Hugo--Themes-@PaperMod-blue)](https://themes.gohugo.io/themes/hugo-papermod/)
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=adityatelange_hugo-PaperMod&metric=alert_status)](https://sonarcloud.io/dashboard?id=adityatelange_hugo-PaperMod)
![code-size](https://img.shields.io/github/languages/code-size/adityatelange/hugo-PaperMod)
---
## WonderMod (PaperMod fork - theme for Hugo)
<p align="center">
<kbd><img src="https://user-images.githubusercontent.com/21258296/114303440-bfc0ae80-9aeb-11eb-8cfa-48a4bb385a6d.png" alt="Mockup image" title="Mockup"/></kbd>
<img src="https://raw.githubusercontent.com/wonderfall/hugo-WonderMod/master/.github/assets/web-capture.jpeg" title="WonderMod" alt="WonderMod image">
</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.
- 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 posts.
- 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.
- Multiple Author support.
- Search Page with Fuse.js
- Other Posts suggestion below a post
- Breadcrumb Navigation
- Code Block Copy buttons
- No webpack, nodejs and other dependencies are required to edit the theme.
**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.
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
```
---
## 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)**
---
## [Pagespeed Insights (100% ?)](https://pagespeed.web.dev/report?url=https://adityatelange.github.io/hugo-PaperMod/)
---
## Special Thanks 🌟
- [**Highlight.js**](https://github.com/highlightjs/highlight.js)
- [**Fuse.js**](https://github.com/krisk/fuse)
- [**Feather Icons**](https://github.com/feathericons/feather)
- [**Simple Icons**](https://github.com/simple-icons/simple-icons)
- **All Contributors and Supporters**
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.*

View 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 { }

View File

@ -27,7 +27,7 @@
font-weight: 700;
}
.logo a img {
.logo a img, .logo a svg {
display: inline;
vertical-align: middle;
pointer-events: none;
@ -36,10 +36,6 @@
margin-inline-end: 8px;
}
#theme-toggle svg {
height: 18px;
}
button#theme-toggle {
font-size: 26px;
margin: auto 4px;
@ -65,6 +61,86 @@ body:not(.dark) #sun {
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;
}
@ -95,3 +171,12 @@ body:not(.dark) #sun {
.logo-switches {
flex-wrap: inherit;
}
#progressBar {
--scrollAmount: 0%;
width: var(--scrollAmount);
height: 3px;
background-color: #1e8cdb;
position: fixed;
z-index: 9999;
}

View File

@ -27,12 +27,10 @@
margin-inline-start: auto;
}
.social-icons {
padding: 12px 0;
}
.social-icons a:not(:last-of-type) {
margin-inline-end: 12px;
.social-icons a {
display: inline-flex;
padding: 10px;
}
.social-icons a svg {

View File

@ -3,7 +3,7 @@
display: flex;
flex-direction: column;
justify-content: center;
min-height: 320px;
min-height: 220px;
margin: var(--gap) 0 calc(var(--gap) * 2) 0;
}
@ -16,7 +16,7 @@
.first-entry .entry-header h1 {
font-size: 34px;
line-height: 1.3;
line-height: 1.4;
}
.first-entry .entry-content {
@ -80,13 +80,17 @@
bottom: 0;
}
.entry-cover,
.entry-isdraft {
font-size: 14px;
.entry-hint {
color: var(--secondary);
}
.entry-hint-parent {
display: flex;
justify-content: space-between;
}
.entry-cover {
font-size: 14px;
margin-bottom: var(--gap);
text-align: center;
}

View File

@ -71,7 +71,7 @@
.post-content a,
.toc a:hover {
box-shadow: 0 1px 0;
border-bottom: 1px solid var(--primary);
}
.post-content a code {
@ -81,8 +81,7 @@
}
.post-content del {
text-decoration: none;
background: linear-gradient(to right, var(--primary) 100%, transparent 0) 0 50%/1px 1px repeat-x;
text-decoration: line-through;
}
.post-content dl,
@ -129,19 +128,18 @@
}
.post-content table {
margin-bottom: 32px;
margin-bottom: var(--content-gap);
}
.post-content table th,
.post-content table:not(.highlighttable, .highlight table, .gist .highlight) td {
min-width: 80px;
padding: 12px 8px;
padding: 8px 5px;
line-height: 1.5;
border-bottom: 1px solid var(--border);
}
.post-content table th {
font-size: 14px;
text-align: start;
}
@ -153,11 +151,10 @@
border-radius: var(--radius);
}
.post-content .highlight:not(table),
.post-content pre {
.post-content .highlight:not(table) {
margin: 10px auto;
background: var(--hljs-bg) !important;
border-radius: var(--radius);
direction: ltr;
}
.post-content li > .highlight {
@ -193,26 +190,35 @@
display: none;
}
/* code block */
.post-content .chroma {
border-radius: var(--radius);
}
.post-content code {
/* inline code */
background-color: var(--tertiary);
margin: auto 4px;
padding: 4px 6px;
font-size: 0.78em;
line-height: 1.5;
background: var(--code-bg);
border-radius: 2px;
border-radius: 4px;
}
.post-content pre code {
/* reset inline code */
background-color: unset;
display: block;
margin: auto 0;
margin: 20px;
padding: 10px;
color: rgb(213, 213, 214);
background: 0 0;
border-radius: 0;
overflow-x: auto;
word-break: break-all;
}
.post-content .chroma code {
background-color: inherit;
}
.post-content blockquote {
margin: 20px 0;
padding: 0 14px;
@ -223,8 +229,7 @@
margin: 30px 0;
height: 2px;
background: var(--tertiary);
border-top: 0;
border-bottom: 0;
border: 0;
}
.post-content iframe {
@ -260,24 +265,32 @@
.toc {
margin: 0 2px 40px 2px;
border: 1px solid var(--border);
background: var(--code-bg);
background: var(--tertiary);
border-radius: var(--radius);
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 {
background: var(--entry);
}
.toc details summary {
cursor: zoom-in;
cursor: pointer;
margin-inline-start: 20px;
}
.toc details[open] summary {
cursor: zoom-out;
}
.toc .details {
display: inline;
font-weight: 500;
@ -300,14 +313,21 @@
margin-top: 56px;
}
.post-footer>* {
margin-bottom: 10px;
}
.post-tags {
display: flex;
flex-wrap: wrap;
gap: 10px;
}
.post-tags li {
display: inline-block;
margin-inline-end: 3px;
margin-bottom: 5px;
}
.post-tags a,
.share-buttons,
.paginav {
border-radius: var(--radius);
background: var(--code-bg);
@ -316,52 +336,37 @@
.post-tags a {
display: block;
padding-inline-start: 14px;
padding-inline-end: 14px;
padding: 0 14px;
color: var(--secondary);
font-size: 14px;
line-height: 34px;
background: var(--code-bg);
}
.post-tags a:hover,
.paginav a:hover {
background: var(--border);
background: var(--tertiary);
}
.share-buttons {
margin: 14px 0;
padding-inline-start: var(--radius);
padding: 10px;
display: flex;
justify-content: center;
overflow-x: auto;
gap: 10px;
}
.share-buttons li,
.share-buttons a {
margin-top: 10px;
display: inline-flex;
}
.share-buttons a:not(:last-of-type) {
margin-inline-end: 12px;
}
.share-buttons a svg {
height: 30px;
width: 30px;
fill: currentColor;
transition: transform 0.1s;
}
.share-buttons svg:active {
transform: scale(0.96);
}
h1:hover .anchor,
h2:hover .anchor,
h3:hover .anchor,
h4:hover .anchor,
h5:hover .anchor,
h6:hover .anchor {
border-bottom: none;
display: inline-flex;
color: var(--secondary);
margin-inline-start: 8px;
@ -369,33 +374,12 @@ h6:hover .anchor {
user-select: 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;
}
.paginav {
margin: 10px 0;
display: flex;
line-height: 30px;
border-radius: var(--radius);
background: none;
border: none;
}
.paginav a {
@ -428,3 +412,12 @@ h6:hover .anchor {
[dir="rtl"] .paginav .next {
text-align: left;
}
h1>a>svg {
display: inline;
}
img.in-text {
display: inline;
margin: auto;
}

View File

@ -10,20 +10,20 @@
text-align: center;
}
.profile .profile_inner h1 {
padding: 12px 0;
.profile .profile_inner {
display: flex;
flex-direction: column;
align-items: center;
gap: 10px;
}
.profile img {
display: inline-table;
border-radius: 50%;
pointer-events: none;
}
.buttons {
flex-wrap: wrap;
max-width: 400px;
margin: 0 auto;
}
.button {

View 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
*/

View File

@ -7,6 +7,9 @@
html {
-webkit-tap-highlight-color: transparent;
overflow-y: scroll;
scroll-behavior: smooth;
-webkit-text-size-adjust: 100%;
text-size-adjust: 100%;
}
a,
@ -114,25 +117,3 @@ img {
display: block;
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);
}

View File

@ -6,27 +6,25 @@
--header-height: 60px;
--footer-height: 60px;
--radius: 8px;
--theme: rgb(255, 255, 255);
--entry: rgb(255, 255, 255);
--theme: #e2e4f2;
--entry: #efefff;
--primary: rgb(30, 30, 30);
--secondary: rgb(108, 108, 108);
--tertiary: rgb(214, 214, 214);
--tertiary: #c3c5d0;
--content: rgb(31, 31, 31);
--hljs-bg: rgb(28, 29, 33);
--code-bg: rgb(245, 245, 245);
--code-bg: #e2e4f2;
--border: rgb(238, 238, 238);
}
.dark {
--theme: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--theme: #1f2125;
--entry: #26282e;
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--tertiary: #3a3c42;
--content: rgb(196, 196, 197);
--hljs-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
--border: none;
}
.list {

View File

@ -29,14 +29,6 @@
}
}
@media screen and (min-width: 768px) {
/* reset */
::-webkit-scrollbar {
width: 19px;
height: 11px;
}
}
/* footer */
@media screen and (max-width: 900px) {
.list .top-link {
@ -44,11 +36,16 @@
}
}
@media screen and (max-width: 340px) {
.share-buttons {
justify-content: unset;
}
}
@media (prefers-reduced-motion) {
/* terms; profile-mode; post-single; post-entry; post-entry; search; search */
.terms-tags a:active,
.button:active,
.share-buttons svg:active,
.post-entry:active,
.top-link,
#searchResults .focus,

View 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;
}

View File

@ -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;
}

View File

@ -0,0 +1,8 @@
#theme-toggle,
.top-link {
display: none;
}
#searchInput {
display: none;
}

View 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;
}

View File

@ -1,21 +1,21 @@
import * as params from '@params';
var fuse; // holds our search engine
var resList = document.getElementById('searchResults');
var sInput = document.getElementById('searchInput');
var first, last, current_elem = null
var resultsAvailable = false;
let fuse; // holds our search engine
let resList = document.getElementById('searchResults');
let sInput = document.getElementById('searchInput');
let first, last, current_elem = null
let resultsAvailable = false;
// load our search index
window.onload = function () {
var xhr = new XMLHttpRequest();
let xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
var data = JSON.parse(xhr.responseText);
let data = JSON.parse(xhr.responseText);
if (data) {
// fuse.js options; check fuse.js website for details
var options = {
let options = {
distance: 100,
threshold: 0.4,
ignoreLocation: true,
@ -28,17 +28,17 @@ window.onload = function () {
};
if (params.fuseOpts) {
options = {
isCaseSensitive: params.fuseOpts.iscasesensitive ? params.fuseOpts.iscasesensitive : false,
includeScore: params.fuseOpts.includescore ? params.fuseOpts.includescore : false,
includeMatches: params.fuseOpts.includematches ? params.fuseOpts.includematches : false,
minMatchCharLength: params.fuseOpts.minmatchcharlength ? params.fuseOpts.minmatchcharlength : 1,
shouldSort: params.fuseOpts.shouldsort ? params.fuseOpts.shouldsort : true,
findAllMatches: params.fuseOpts.findallmatches ? params.fuseOpts.findallmatches : false,
keys: params.fuseOpts.keys ? params.fuseOpts.keys : ['title', 'permalink', 'summary', 'content'],
location: params.fuseOpts.location ? params.fuseOpts.location : 0,
threshold: params.fuseOpts.threshold ? params.fuseOpts.threshold : 0.4,
distance: params.fuseOpts.distance ? params.fuseOpts.distance : 100,
ignoreLocation: params.fuseOpts.ignorelocation ? params.fuseOpts.ignorelocation : true
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
@ -77,7 +77,12 @@ sInput.onkeyup = function (e) {
// run a search query (for "term") every time a letter is typed
// in the search box
if (fuse) {
const results = fuse.search(this.value.trim()); // the actual query being run using fuse.js
let results;
if (params.fuseOpts) {
results = fuse.search(this.value.trim(), {limit: params.fuseOpts.limit}); // the actual query being run using fuse.js along with options
} else {
results = fuse.search(this.value.trim()); // the actual query being run using fuse.js
}
if (results.length !== 0) {
// build our html if result exists
let resultSet = ''; // our results bucket
@ -106,12 +111,12 @@ sInput.addEventListener('search', function (e) {
// kb bindings
document.onkeydown = function (e) {
let key = e.key;
var ae = document.activeElement;
let ae = document.activeElement;
let inbox = document.getElementById("searchbox").contains(ae)
if (ae === sInput) {
var elements = document.getElementsByClassName('focus');
let elements = document.getElementsByClassName('focus');
while (elements.length > 0) {
elements[0].classList.remove('focus');
}

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

File diff suppressed because one or more lines are too long

6
assets/js/license.js Normal file
View 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
View 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
View 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
View File

@ -1,3 +1,3 @@
module github.com/adityatelange/hugo-PaperMod
module github.com/Wonderfall/hugo-WonderMod
go 1.12

View File

@ -1,8 +1,8 @@
- id: prev_page
translation: "الصفحة السابقة"
translation: "السابق"
- id: next_page
translation: "الصفحة التالية"
translation: "التالي"
- id: read_time
translation:
@ -20,3 +20,9 @@
- id: home
translation: "الصفحة الرئيسية"
- id: code_copied
translation: "تم النسخ!"
- id: code_copy
translation: "نسخ الكود"

39
i18n/be.yaml Normal file
View 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: "скапіявана!"

View File

@ -1,13 +1,18 @@
- id: prev_page
translation: "পূর্বের পাতা"
translation: "পূর্ববর্তী"
- id: next_page
translation: "পরবর্তী পাতা"
translation: "পরবর্তী"
- id: read_time
translation:
one : "১ মিনিট"
other: "{{ .Count }} মিনিট"
- id: words
translation:
one : "১ টি শব্দ"
other: "{{ .Count }} টি শব্দ"
- id: toc
translation: "সূচিপত্র"

33
i18n/cs.yaml Normal file
View 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!"

View File

@ -1,13 +1,18 @@
- id: prev_page
translation: "Vorherige Seite"
translation: "Vorherige"
- id: next_page
translation: "Nächste Seite"
translation: "Nächste"
- id: read_time
translation:
one: "1 min"
other: "{{ .Count }} min"
one: "1 Minute"
other: "{{ .Count }} Minuten"
- id: words
translation:
one : "Wort"
other: "{{ .Count }} Wörter"
- id: toc
translation: "Inhaltsverzeichnis"
@ -15,5 +20,14 @@
- id: translations
translation: "Übersetzungen"
- id: home
translation: "Home"
- id: edit_post
translation: "Bearbeiten"
- id: code_copy
translation: "Kopieren"
- id: code_copied
translation: "Kopiert!"

33
i18n/el.yaml Normal file
View 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: "αντιγράφηκε!"

View File

@ -1,14 +1,19 @@
- id: prev_page
translation: "Prev Page"
translation: "Prev"
- id: next_page
translation: "Next Page"
translation: "Next"
- id: read_time
translation:
one : "1 min"
other: "{{ .Count }} min"
- id: words
translation:
one : "word"
other: "{{ .Count }} words"
- id: toc
translation: "Table of Contents"
@ -18,6 +23,9 @@
- id: home
translation: "Home"
- id: edit_post
translation: "Edit"
- id: code_copy
translation: "copy"

View File

@ -1,14 +1,19 @@
- id: prev_page
translation: "Página anterior"
translation: "Anterior"
- id: next_page
translation: "Página siguiente"
translation: "Siguiente"
- id: read_time
translation:
one : "1 min"
other: "{{ .Count }} min"
- id: words
translation:
one : "palabra"
other: "{{ .Count }} palabras"
- id: toc
translation: "Tabla de Contenidos"
@ -18,8 +23,11 @@
- id: home
translation: "Inicio"
- id: edit_post
translation: "Editar"
- id: code_copy
translation: "copiar"
- id: code_copied
translation: "¡copiado!"
translation: "¡copiado!"

View File

@ -1,16 +1,21 @@
- id: prev_page
translation: "Page Précédente"
translation: "Précédent"
- 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"
translation: "Table des matières"
- id: translations
translation: "Traductions"
@ -22,7 +27,7 @@
translation: "Modifier"
- id: code_copy
translation: "copier"
translation: "Copier"
- id: code_copied
translation: "copié!"
translation: "Copié !"

View File

@ -1,19 +1,33 @@
- id: prev_page
translation: "לעמוד הקודם"
translation: "קודם"
- id: next_page
translation: "לעמוד הבא"
translation: "הבא"
- id: read_time
translation:
one : "דקה אחת"
other: "{{ .Count }} דקות"
other: "דקות {{ .Count }}"
- id: words
translation:
one : "word"
other: "מילים {{ .Count }} "
- id: toc
translation: "תוכן עניינים"
translation: "תוכן העניינים"
- id: translations
translation: "תרגומים"
- id: home
translation: "דף בית"
translation: "בית"
- id: edit_post
translation: "ערוך"
- id: code_copy
translation: "העתק"
- id: code_copied
translation: "!הועתק"

View File

@ -1,14 +1,17 @@
- id: prev_page
translation: "पिछला पृष्ठ"
translation: "पिछला"
- id: next_page
translation: "अगला पृष्ठ"
translation: "अगला"
- id: read_time
translation:
one : "एक मिनट"
other: "{{ .Count }} मिनट"
- id: edit_post
translation: "सुधारें"
- id: toc
translation: "विषय - सूची"

33
i18n/hr.yaml Normal file
View 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!"

View File

@ -1,16 +1,33 @@
- id: prev_page
translation: "Halaman Sebelumnya"
translation: "Sebelumnya"
- id: next_page
translation: "Halaman Selanjutnya"
translation: "Selanjutnya"
- id: read_time
translation:
one : "1 menit"
other: "{{ .Count }} menit"
- id: words
translation:
one : "kata"
other: "{{ .Count }} kata"
- id: toc
translation: "Daftar Isi"
translation: "Daftar isi"
- id: translations
translation: "Terjemahan"
- id: home
translation: "Beranda"
- id: edit_post
translation: "Sunting"
- id: code_copy
translation: "salin"
- id: code_copied
translation: "disalin!"

View File

@ -1,20 +1,31 @@
- id: prev_page
translation: "Pag Prec"
translation: "Precedente"
- id: next_page
translation: "Pag Succ"
translation: "Successivo"
- id: read_time
translation:
one: "1 minuto"
other: "{{ .Count }} minuti"
- id: words
translation:
one : "parola"
other: "{{ .Count }} parole"
- id: toc
translation: "Tabella dei Contenuti"
translation: "Indice contenuti"
- id: translations
translation: "Traduzioni"
- id: home
translation: "Home"
- id: edit_post
translation: "Modifica"
- id: code_copy
translation: "copia"

View File

@ -1,16 +1,33 @@
- id: prev_page
translation: "前のページ"
translation: "前"
- 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: "コピーされました!"

View File

@ -9,6 +9,11 @@
one : "1 분"
other: "{{ .Count }} 분"
- id: words
translation:
one : "단어"
other: "{{ .Count }} 단어"
- id: toc
translation: "목차"
@ -16,10 +21,13 @@
translation: "번역"
- id: home
translation: "홈페이지"
translation: "홈"
- id: edit_post
translation: "편집"
- id: code_copy
translation: "복사"
- id: code_copied
translation: "복사완료!"
translation: "복사 완료!"

View File

@ -1,8 +1,8 @@
- id: prev_page
translation: "Rêpela Berê"
translation: "Rûpela Paş"
- id: next_page
translation: "Rûpela "
translation: "Rûpela Pêş"
- id: read_time
translation:
@ -13,13 +13,13 @@
translation: "Pêrist"
- id: translations
translation: "Wergêranan"
translation: "Wergeran"
- id: home
translation: "Xanî"
- id: code_copy
translation: "Jê bigre"
translation: "Jê bigire"
- id: code_copied
translation: "Hat jê girtin!"
translation: "Hat jêgirtin!"

28
i18n/ms.yaml Normal file
View 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!"

View File

@ -9,6 +9,11 @@
one: "1 min"
other: "{{ .Count }} min"
- id: words
translation:
one : "woord"
other: "{{ .Count }} woorden"
- id: toc
translation: "Inhoudsopgave"

33
i18n/no.yaml Normal file
View 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!"

View File

@ -1,14 +1,19 @@
- id: prev_page
translation: "Poprzednia strona"
translation: "Poprzednia"
- id: next_page
translation: "Następna strona"
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"

View File

@ -9,8 +9,25 @@
one: "1 minuto"
other: "{{ .Count }} minutos"
- id: words
translation:
one : "palavra"
other: "{{ .Count }} palavras"
- id: toc
translation: "Conteúdo"
- id: translations
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
View 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!"

View File

@ -5,7 +5,20 @@
translation: "Следующая"
- 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
translation: "Оглавление"
@ -16,6 +29,9 @@
- id: home
translation: "Главная"
- id: edit_post
translation: "Редактировать"
- id: code_copy
translation: "копировать"

28
i18n/sv.yaml Normal file
View 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
View 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
View 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: "คัดลอกแล้ว!"

View File

@ -1,14 +1,19 @@
- id: prev_page
translation: "Önceki Sayfa"
translation: "Önceki"
- id: next_page
translation: "Sonraki Sayfa"
translation: "Sonraki"
- id: read_time
translation:
one : "1 dk"
other: "{{ .Count }} dk"
- id: words
translation:
one : "kelime"
other: "{{ .Count }} kelime"
- id: toc
translation: "İçindekiler"
@ -18,6 +23,9 @@
- id: home
translation: "Anasayfa"
- id: edit_post
translation: "Düzenle"
- id: code_copy
translation: "Kopyala"

View File

@ -6,9 +6,14 @@
- id: read_time
translation:
one : "1 phút"
one: "1 phút"
other: "{{ .Count }} phút"
- id: words
translation:
one: "từ"
other: "{{ .Count }} từ"
- id: toc
translation: "Mục lục"
@ -18,6 +23,9 @@
- id: home
translation: "Trang chủ"
- id: edit_post
translation: "Chỉnh sửa"
- id: code_copy
translation: "Sao chép"

View File

@ -1,14 +1,19 @@
- id: prev_page
translation: "上一"
translation: "上一"
- id: next_page
translation: "下一"
translation: "下一"
- id: read_time
translation:
one : "1 分鐘"
other: "{{ .Count }} 分鐘"
- id: words
translation:
one: "字"
other: "{{ .Count }} 字"
- id: toc
translation: "目錄"
@ -18,6 +23,9 @@
- id: home
translation: "首頁"
- id: edit_post
translation: "編輯"
- id: code_copy
translation: "複製"

View File

@ -9,6 +9,11 @@
one : "1 分钟"
other: "{{ .Count }} 分钟"
- id: words
translation:
one: "字"
other: "{{ .Count }} 字"
- id: toc
translation: "目录"
@ -18,6 +23,9 @@
- id: home
translation: "主页"
- id: edit_post
translation: "编辑"
- id: code_copy
translation: "复制"

View File

@ -1,7 +1,25 @@
{{- define "main" }}
<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 }}
<div class="post-description">
{{ .Description }}
@ -11,7 +29,7 @@
{{- $pages := where site.RegularPages "Type" "in" site.Params.mainSections }}
{{- if .Site.Params.ShowAllPagesInArchive }}
{{- if site.Params.ShowAllPagesInArchive }}
{{- $pages = site.RegularPages }}
{{- end }}
@ -28,9 +46,16 @@
{{- range .Pages }}
{{- if eq .Kind "page" }}
<div class="archive-entry">
<h3 class="archive-entry-title">
<h3 class="archive-entry-title entry-hint-parent">
{{- .Title | markdownify }}
{{- if .Draft }}<sup><span class="entry-isdraft">&nbsp;&nbsp;[draft]</span></sup>{{- end }}
{{- 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>
<div class="archive-meta">
{{- partial "post_meta.html" . -}}

View File

@ -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>
<html lang="{{ .Site.Language }}" dir="{{ .Language.LanguageDirection | default "auto" }}">
<html lang="{{ site.Language }}" dir="{{ .Language.LanguageDirection | default "auto" }}">
<head>
{{- partial "head.html" . }}
@ -9,7 +13,7 @@
{{- if (or (ne .Kind `page` ) (eq .Layout `archives`) (eq .Layout `search`)) -}}
{{- print "list" -}}
{{- end -}}
{{- if eq $.Site.Params.defaultTheme `dark` -}}
{{- if eq site.Params.defaultTheme `dark` -}}
{{- print " dark" }}
{{- end -}}
" id="top">

View File

@ -1,5 +1,5 @@
{{- $.Scratch.Add "index" slice -}}
{{- range .Site.RegularPages -}}
{{- range site.RegularPages -}}
{{- if and (not .Params.searchHidden) (ne .Layout `archives`) (ne .Layout `search`) }}
{{- $.Scratch.Add "index" (dict "title" .Title "content" .Plain "permalink" .Permalink "summary" .Summary) -}}
{{- end }}

View File

@ -1,13 +1,27 @@
{{- define "main" }}
{{- if (and .Site.Params.profileMode.enabled .IsHome) }}
{{- if (and site.Params.profileMode.enabled .IsHome) }}
{{- partial "index_profile.html" . }}
{{- else }} {{/* if not profileMode */}}
{{- if not .IsHome | and .Title }}
<header class="page-header">
{{- 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 }}
<div class="post-description">
{{ .Description | markdownify }}
@ -28,11 +42,12 @@
{{- if .IsHome }}
{{- $pages = where site.RegularPages "Type" "in" site.Params.mainSections }}
{{- $pages = where $pages "Params.hiddenInHomeList" "!=" "true" }}
{{- end }}
{{- $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" . }}
{{- end }}
@ -41,7 +56,7 @@
{{- $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)) }}
{{- $class = "first-entry" }}
{{- else if $term }}
@ -49,18 +64,25 @@
{{- end }}
<article class="{{ $class }}">
{{- $isHidden := (.Site.Params.cover.hidden | default .Site.Params.cover.hiddenInList) }}
{{- partial "cover.html" (dict "cxt" . "IsHome" true "isHidden" $isHidden) }}
{{- $isHidden := (.Param "cover.hiddenInList") | default (.Param "cover.hidden") | default false }}
{{- partial "cover.html" (dict "cxt" . "IsSingle" false "isHidden" $isHidden) }}
<header class="entry-header">
<h2>
<h2 class="entry-hint-parent">
{{- .Title }}
{{- if .Draft }}<sup><span class="entry-isdraft">&nbsp;&nbsp;[draft]</span></sup>{{- 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>
</header>
{{- if (ne (.Param "hideSummary") true) }}
<section class="entry-content">
<div class="entry-content">
<p>{{ .Summary | plainify | htmlUnescape }}{{ if .Truncated }}...{{ end }}</p>
</section>
</div>
{{- end }}
{{- if not (.Param "hideMeta") }}
<footer class="entry-footer">
@ -75,10 +97,20 @@
<footer class="page-footer">
<nav class="pagination">
{{- if $paginator.HasPrev }}
<a class="prev" href="{{ $paginator.Prev.URL | absURL }}">« {{ i18n "prev_page" }}</a>
<a class="prev" href="{{ $paginator.Prev.URL | absURL }}">
«&nbsp;{{ i18n "prev_page" }}&nbsp;
{{- if (.Param "ShowPageNums") }}
{{- sub $paginator.PageNumber 1 }}/{{ $paginator.TotalPages }}
{{- end }}
</a>
{{- end }}
{{- 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" }}&nbsp;
{{- if (.Param "ShowPageNums") }}
{{- add 1 $paginator.PageNumber }}/{{ $paginator.TotalPages }}
{{- end }}&nbsp;»
</a>
{{- end }}
</nav>
</footer>

View File

@ -1,50 +1,80 @@
{{- $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 -}}
{{- /* Deprecate site.Author.email in favor of site.Params.author.email */}}
{{- $authorEmail := "" }}
{{- with site.Params.author }}
{{- if reflect.IsMap . }}
{{- with .email }}
{{- $authorEmail = . }}
{{- end }}
{{- end }}
{{- else }}
{{- with site.Author.email }}
{{- $authorEmail = . }}
{{- 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 }}
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>{{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }}</title>
<link>{{ .Permalink }}</link>
<description>Recent content {{ if ne .Title .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }}</description>
{{- with $.Site.Params.images }}
<image>
<url>{{ index . 0 | absURL }}</url>
<link>{{ index . 0 | absURL }}</link>
</image>
{{- end }}
<generator>Hugo -- gohugo.io</generator>{{ with .Site.LanguageCode }}
<language>{{.}}</language>{{end}}{{ with .Site.Author.email }}
<managingEditor>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with .Site.Author.email }}
<webMaster>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with .Site.Copyright }}
<copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }}
<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 }}
<feed xmlns="http://www.w3.org/2005/Atom">
<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 rel="self" href="{{ (.OutputFormats.Get "RSS").Permalink }}" />
<subtitle>Recent content {{ if ne .Title site.Title }}{{ with .Title }}in {{ . }} {{ end }}{{ end }}on {{ site.Title }}</subtitle>
<id>{{ .Permalink }}</id>
<generator uri="http://gohugo.io" version="{{ hugo.Version }}">Hugo</generator>
<language>{{ site.Language.LanguageCode }}</language>
<updated>{{ .Date.Format "2006-01-02T15:04:05Z07:00" | safeHTML }}</updated>
<author>
{{ with $authorName }}<name>{{ . }}</name>{{ end }}
{{ with $authorEmail }}<name>{{ . }}</name>{{ end }}
</author>
{{ with site.Copyright }}<rights>{{ . }}</rights>{{ end }}
{{- range $pages }}
{{- if and (ne .Layout `search`) (ne .Layout `archives`) }}
<item>
<title>{{ .Title }}</title>
<link>{{ .Permalink }}</link>
<pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
{{ with .Site.Author.email }}<author>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</author>{{end}}
<guid>{{ .Permalink }}</guid>
<description>{{ with .Description | html }}{{ . }}{{ else }}{{ .Summary | html }}{{ end -}}</description>
{{- if .Site.Params.ShowFullTextinRSS }}
<content:encoded>{{ (printf "<![CDATA[%s]]>" .Content) | safeHTML }}</content:encoded>
{{- end }}
</item>
<entry>
<title>{{ .Title }}</title>
<link rel="alternate" href="{{ .Permalink }}" />
<id>{{ .Permalink }}</id>
<published>{{ .Date.Format "2006-01-02T15:04:05Z07:00" | safeHTML }}</published>
<updated>{{ .Lastmod.Format "2006-01-02T15:04:05Z07:00" | safeHTML }}</updated>
<summary type="html">{{ with .Description | html }}{{ . }}{{ else }}{{ .Summary | html }}{{ end -}}</summary>
{{- if site.Params.ShowFullTextinRSS }}
<content type="html">{{ (printf "<![CDATA[%s]]>" .Content) | safeHTML }}</content>
{{- end }}
</entry>
{{- end }}
{{ end }}
</channel>
</rss>
{{- end }}
</feed>

View File

@ -22,8 +22,11 @@
<div id="searchbox">
<input id="searchInput" autofocus placeholder="{{ .Params.placeholder | default (printf "%s " .Title) }}"
aria-label="search" type="search" autocomplete="off">
aria-label="search" type="search" autocomplete="off" maxlength="64">
<ul id="searchResults" aria-label="search results"></ul>
<noscript>
Enable JavaScript to use the search function.
</noscript>
</div>
{{- end }}{{/* end main */}}

View File

@ -3,9 +3,16 @@
<article class="post-single">
<header class="post-header">
{{ partial "breadcrumbs.html" . }}
<h1 class="post-title">
<h1 class="post-title entry-hint-parent">
{{ .Title }}
{{- if .Draft }}<sup><span class="entry-isdraft">&nbsp;&nbsp;[draft]</span></sup>{{- 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>
{{- if .Description }}
<div class="post-description">
@ -19,10 +26,13 @@
{{- partial "edit_post.html" . -}}
{{- partial "post_canonical.html" . -}}
</div>
<div class="post-meta">
{{- partial "post_lastmod.html" . -}}
</div>
{{- end }}
</header>
{{- $isHidden := .Params.cover.hidden | default .Site.Params.cover.hiddenInSingle | default .Site.Params.cover.hidden }}
{{- partial "cover.html" (dict "cxt" . "IsHome" false "isHidden" $isHidden) }}
{{- $isHidden := (.Param "cover.hiddenInSingle") | default (.Param "cover.hidden") | default false }}
{{- partial "cover.html" (dict "cxt" . "IsSingle" true "isHidden" $isHidden) }}
{{- if (.Param "ShowToc") }}
{{- partial "toc.html" . }}
{{- end }}
@ -36,17 +46,16 @@
{{- end }}
<footer class="post-footer">
{{- if .Params.tags }}
{{- $tags := .Language.Params.Taxonomies.tag | default "tags" }}
<ul class="post-tags">
{{- range ($.GetTerms "tags") }}
{{- range ($.GetTerms $tags) }}
<li><a href="{{ .Permalink }}">{{ .LinkTitle }}</a></li>
{{- end }}
</ul>
{{- end }}
{{- if (.Param "ShowPostNavLinks") }}
{{- partial "post_nav_links.html" . }}
{{- end }}
{{- if (and .Site.Params.ShowShareButtons (ne .Params.disableShare true)) }}
{{- if (and site.Params.ShowShareButtons (ne .Params.disableShare true)) }}
{{- partial "share_icons.html" . -}}
{{- end }}
</footer>

View File

@ -16,7 +16,7 @@
{{- range $key, $value := .Data.Terms.Alphabetical }}
{{- $name := .Name }}
{{- $count := .Count }}
{{- with $.Site.GetPage (printf "/%s/%s" $type $name) }}
{{- with site.GetPage (printf "/%s/%s" $type $name) }}
<li>
<a href="{{ .Permalink }}">{{ .Name }} <sup><strong><sup>{{ $count }}</sup></strong></sup> </a>
</li>

View File

@ -1,5 +1,5 @@
{{- if or .Params.author .Site.Params.author }}
{{- $author := (.Params.author | default .Site.Params.author) }}
{{- if or .Params.author site.Params.author }}
{{- $author := (.Params.author | default site.Params.author) }}
{{- $author_type := (printf "%T" $author) }}
{{- if (or (eq $author_type "[]string") (eq $author_type "[]interface {}")) }}
{{- (delimit $author ", " ) }}

View File

@ -1,6 +1,6 @@
{{- if (.Param "ShowBreadCrumbs") -}}
<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 -}}
<a href="{{ "" | absLangURL }}">{{ i18n "home" | default "Home" }}</a>
@ -8,7 +8,7 @@
{{- range $index, $element := split $lang_url "/" }}
{{- $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))}}
{{- print "&nbsp;»&nbsp;" | safeHTML -}}<a href="{{ $bc_pg.Permalink }}">{{ $bc_pg.Name }}</a>

View File

@ -1,21 +1,24 @@
{{- with .cxt}} {{/* Apply proper context from dict */}}
{{- if (and .Params.cover.image (not $.isHidden)) }}
{{- $alt := (.Params.cover.alt | default .Params.cover.caption | plainify) }}
{{- $loading := cond $.IsSingle "eager" "lazy" }}
<figure class="entry-cover">
{{- $responsiveImages := (.Params.cover.responsiveImages | default .Site.Params.cover.responsiveImages) | default true }}
{{- $addLink := (and .Site.Params.cover.linkFullImages (not $.IsHome)) }}
{{- $cover := (.Resources.ByType "image").GetMatch (printf "*%s*" (.Params.cover.image)) }}
{{- $responsiveImages := (.Params.cover.responsiveImages | default site.Params.cover.responsiveImages) | default true }}
{{- $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 $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 -}}
{{- $sizes := (slice "360" "480" "720" "1080" "1500") }}
{{- $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")) }}
{{- $prod := (hugo.IsProduction | or (eq site.Params.env "production")) }}
{{- if (and (in $processableFormats $cover.MediaType.SubType) ($responsiveImages) (eq $prod true)) }}
<img loading="lazy" srcset="{{- range $size := $sizes -}}
<img loading="{{$loading}}" srcset="{{- range $size := $sizes -}}
{{- if (ge $cover.Width $size) -}}
{{ printf "%s %s" (($cover.Resize (printf "%sx" $size)).Permalink) (printf "%sw ," $size) -}}
{{ end }}
@ -23,16 +26,16 @@
sizes="(min-width: 768px) 720px, 100vw" src="{{ $cover.Permalink }}" alt="{{ $alt }}"
width="{{ $cover.Width }}" height="{{ $cover.Height }}">
{{- else }}{{/* Unprocessable image or responsive images disabled */}}
<img loading="lazy" src="{{ (path.Join .RelPermalink .Params.cover.image) | absURL }}" alt="{{ $alt }}">
<img loading="{{$loading}}" src="{{ (path.Join .RelPermalink .Params.cover.image) | absURL }}" alt="{{ $alt }}">
{{- end }}
{{- 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 -}}
<img loading="lazy" src="{{ (.Params.cover.image) | absURL }}" alt="{{ $alt }}">
<img loading="{{$loading}}" src="{{ (.Params.cover.image) | absURL }}" alt="{{ $alt }}">
{{- end }}
{{- if $addLink }}</a>{{ end -}}
{{/* Display Caption */}}
{{- if not $.IsHome }}
{{- if $.IsSingle }}
{{ with .Params.cover.caption }}<p>{{ . | markdownify }}</p>{{- end }}
{{- end }}
</figure>

View File

@ -1,8 +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")) -}}
{{- $fileUrlPath := path.Join .File.Path }}
{{- if or .Params.author $.Site.Params.author (.Param "ShowReadingTime") (not .Date.IsZero) .IsTranslated }}&nbsp;|&nbsp;{{- 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" 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 }}&nbsp;|&nbsp;{{- 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>
{{- end }}

View File

@ -1,19 +1,19 @@
{{- if not (.Param "hideFooter") }}
<footer class="footer">
{{- if .Site.Copyright }}
<span>{{ .Site.Copyright | markdownify }}</span>
{{- if site.Copyright }}
<span>{{ site.Copyright | markdownify }}</span>
{{- else }}
<span>&copy; {{ now.Year }} <a href="{{ "" | absLangURL }}">{{ .Site.Title }}</a></span>
<span>&copy; {{ now.Year }} <a href="{{ "" | absLangURL }}">{{ site.Title }}</a></span>
{{- end }}
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://git.io/hugopapermod" rel="noopener" target="_blank">PaperMod</a>
- Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer">Hugo</a> &
<a href="https://github.com/Wonderfall/hugo-WonderMod/" rel="noopener">WonderMod</a>
</span>
</footer>
{{- end }}
{{- if (not .Site.Params.disableScrollToTop) }}
{{- if (not site.Params.disableScrollToTop) }}
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
@ -23,113 +23,4 @@
{{- partial "extend_footer.html" . }}
<script>
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
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 }}
{{- if (and (eq .Kind "page") (ne .Layout "archives") (ne .Layout "search") (.Param "ShowCodeCopyButtons")) }}
<script>
document.querySelectorAll('pre > code').forEach((codeblock) => {
const container = codeblock.parentNode.parentNode;
const copybutton = document.createElement('button');
copybutton.classList.add('copy-code');
copybutton.innerText = '{{- i18n "code_copy" | default "copy" }}';
function copyingDone() {
copybutton.innerText = '{{- i18n "code_copied" | default "copied!" }}';
setTimeout(() => {
copybutton.innerText = '{{- i18n "code_copy" | default "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);
}
});
</script>
{{- end }}
{{- partial "script.html" . }}

View File

@ -1,164 +1,108 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
{{- 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">
{{- else }}
<meta name="robots" content="noindex, nofollow">
{{- end }}
{{- /* Title */}}
<title>{{ if .IsHome }}{{ else }}{{ if .Title }}{{ .Title }} | {{ end }}{{ end }}{{ .Site.Title }}</title>
<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 }}
{{ 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 -}}
{{- 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 -}}">
{{- end }}
<meta name="description" content="{{- with .Description }}{{ . }}{{- else }}{{- if or .IsPage .IsSection}}
{{- .Summary | default (printf "%s - %s" .Title .Site.Title) }}{{- else }}
{{- 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" . ) }}">
<link rel="canonical" href="{{ if .Params.canonicalURL -}} {{ trim .Params.canonicalURL " " }} {{- else -}} {{ .Permalink }} {{- end }}" />
{{- if .Site.Params.analytics.google.SiteVerificationTag }}
<meta name="google-site-verification" content="{{ .Site.Params.analytics.google.SiteVerificationTag }}" />
<link rel="canonical" href="{{ if .Params.canonicalURL -}} {{ trim .Params.canonicalURL " " }} {{- else -}} {{ .Permalink }} {{- end }}">
{{- if site.Params.analytics.google.SiteVerificationTag }}
<meta name="google-site-verification" content="{{ site.Params.analytics.google.SiteVerificationTag }}">
{{- end }}
{{- if .Site.Params.analytics.yandex.SiteVerificationTag }}
<meta name="yandex-verification" content="{{ .Site.Params.analytics.yandex.SiteVerificationTag }}" />
{{- if site.Params.analytics.yandex.SiteVerificationTag }}
<meta name="yandex-verification" content="{{ site.Params.analytics.yandex.SiteVerificationTag }}">
{{- end }}
{{- if .Site.Params.analytics.bing.SiteVerificationTag }}
<meta name="msvalidate.01" content="{{ .Site.Params.analytics.bing.SiteVerificationTag }}" />
{{- if site.Params.analytics.bing.SiteVerificationTag }}
<meta name="msvalidate.01" content="{{ site.Params.analytics.bing.SiteVerificationTag }}">
{{- end }}
{{- if site.Params.analytics.naver.SiteVerificationTag }}
<meta name="naver-site-verification" content="{{ site.Params.analytics.naver.SiteVerificationTag }}">
{{- end }}
{{- /* Styles */}}
{{- /* includes */}}
{{- $includes := slice }}
{{- $includes = $includes | append (" " | resources.FromString "assets/css/includes-blank.css")}}
{{- if not (eq site.Params.assets.disableScrollBarStyle true) }}
{{- $ScrollStyle := (resources.Get "css/includes/scroll-bar.css") }}
{{- $includes = (append $ScrollStyle $includes) }}
{{- end }}
{{- $includes_all := $includes | resources.Concat "assets/css/includes.css" }}
{{- $theme_vars := (resources.Get "css/core/theme-vars.css") }}
{{- $reset := (resources.Get "css/core/reset.css") }}
{{- $media := (resources.Get "css/core/zmedia.css") }}
{{- $license_css := (resources.Get "css/core/license.css") }}
{{- $common := (resources.Match "css/common/*.css") | resources.Concat "assets/css/common.css" }}
{{- /* include `an-old-hope` if hljs is on */}}
{{- $isHLJSdisabled := (.Site.Params.assets.disableHLJS | default false) }}
{{- $hljs := (cond ($isHLJSdisabled) (" " | resources.FromString "assets/css/hljs-blank.css") (resources.Get "css/hljs/an-old-hope.min.css")) }}
{{- $commonHighlight := (resources.Get "css/common/chroma.css") }}
{{- /* order is important */}}
{{- $core := (slice $theme_vars $reset $common $hljs $media) | resources.Concat "assets/css/core.css" }}
{{- $extended := (resources.Match "css/extended/*.css") | resources.Concat "assets/css/extended.css" }}
{{- $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 $core $extended) | resources.Concat "assets/css/stylesheet.css" | minify }}
{{- $stylesheet := (slice $license_css $core $extended) | resources.Concat "assets/css/stylesheet.css" }}
{{- if not .Site.Params.assets.disableFingerprinting }}
{{- 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 }}
{{- with .Site.Params.profileMode }}
{{- if and .enabled .imageUrl $.IsHome }}
<link rel="preload" href="{{ .imageUrl }}" as="image">
{{- end }}
{{- end }}
{{- with .Site.Params.label.icon }}
<link rel="preload" href="{{ . }}" as="image">
{{- end }}
{{- /* Search */}}
{{- if (eq .Layout `search`) -}}
<link crossorigin="anonymous" rel="preload" as="fetch" href="../index.json">
{{- $fastsearch := resources.Get "js/fastsearch.js" | js.Build (dict "params" (dict "fuseOpts" .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 crossorigin="anonymous" src="{{ $search.RelPermalink }}" integrity="{{ $search.Data.Integrity }}"></script>
{{- else }}
{{- $search := (slice $fusejs $fastsearch ) | resources.Concat "assets/js/search.js" | minify }}
<script defer crossorigin="anonymous" src="{{ $search.RelPermalink }}"></script>
{{- end }}
{{- end -}}
{{- /* Highlight.js */}}
{{- $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 crossorigin="anonymous" 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 crossorigin="anonymous" src="{{ $highlight.RelPermalink }}" onload="hljs.initHighlightingOnLoad();"></script>
{{- end }}
{{- 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" }}">
{{- /* Generator */}}
{{ hugo.Generator }}
<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 -}}
{{- range .AllTranslations -}}
<link rel="alternate" hreflang="{{ .Lang }}" href="{{ .Permalink }}" />
<link rel="alternate" hreflang="{{ .Lang }}" href="{{ .Permalink }}">
{{ end -}}
<noscript>
<style>
#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: rgb(29, 30, 32);
--entry: rgb(46, 46, 51);
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: rgb(65, 66, 68);
--content: rgb(196, 196, 197);
--hljs-bg: rgb(46, 46, 51);
--code-bg: rgb(55, 56, 62);
--border: rgb(51, 51, 51);
}
.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>
{{- partial "extend_head.html" . -}}
{{- /* Misc */}}
{{- if hugo.IsProduction | or (eq .Site.Params.env "production") }}
{{- if hugo.IsProduction | or (eq site.Params.env "production") }}
{{- template "_internal/google_analytics.html" . }}
{{- template "partials/templates/opengraph.html" . }}
{{- template "partials/templates/twitter_cards.html" . }}

View File

@ -1,66 +1,60 @@
{{- /* theme-toggle is enabled */}}
{{- if (not .Site.Params.disableThemeToggle) }}
{{- /* theme is light */}}
{{- if (eq .Site.Params.defaultTheme "light") }}
<script>
if (localStorage.getItem("pref-theme") === "dark") {
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>
{{- /* theme.js */}}
{{- if not site.Params.disableThemeToggle }}
{{- $theme := resources.Get "js/theme.js" | resources.Minify }}
{{- if not site.Params.assets.disableFingerprinting }}
{{- $theme_js := (slice $theme) | resources.Concat "assets/js/theme.js" | fingerprint }}
<script crossorigin="anonymous" src="{{ $theme_js.RelPermalink }}" integrity="{{ $theme_js.Data.Integrity }}"></script>
{{- else }}
{{- /* theme is auto */}}
<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>
{{- $theme_js := (slice $theme) | resources.Concat "assets/js/theme.js" }}
<script crossorigin="anonymous" src="{{ $theme_js.RelPermalink }}"></script>
{{- 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 }}
<header class="header">
{{- if ( and (.IsPage) (ne .Layout "archives") (ne .Layout "search")) }}
<div id="progressBar"></div>
{{- end }}
<nav class="nav">
<div class="logo">
{{- $label_text := (.Site.Params.label.text | default .Site.Title) }}
{{- if .Site.Title }}
{{- $label_text := (site.Params.label.text | default site.Title) }}
{{- if site.Title }}
<a href="{{ "" | absLangURL }}" accesskey="h" title="{{ $label_text }} (Alt + H)">
{{- if .Site.Params.label.icon }}
<img src="{{- .Site.Params.label.icon | absURL -}}" alt="logo" aria-label="logo"
height="{{- .Site.Params.label.iconHeight | default " 30px" -}}">
{{- if site.Params.label.icon }}
{{- $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 -}}
{{- else if hasPrefix site.Params.label.iconSVG "<svg" }}
{{ site.Params.label.iconSVG | safeHTML }}
{{- end -}}
{{- $label_text -}}
</a>
{{- end }}
<span class="logo-switches">
{{- if (not .Site.Params.disableThemeToggle) }}
<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"
<div class="logo-switches">
{{- if (not site.Params.disableThemeToggle) }}
<button type="button" id="theme-toggle" accesskey="t" title="(Alt + T)">
<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"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</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"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
@ -77,8 +71,8 @@
{{- end }}
{{- $lang := .Lang}}
{{- $separator := or $label_text (not .Site.Params.disableThemeToggle)}}
{{- with $.Site.Home.AllTranslations }}
{{- $separator := or $label_text (not site.Params.disableThemeToggle)}}
{{- with site.Home.AllTranslations }}
<ul class="lang-switch">
{{- if $separator }}<li>|</li>{{ end }}
{{- range . -}}
@ -86,7 +80,7 @@
<li>
<a href="{{- .Permalink -}}" title="{{ .Language.Params.languageAltTitle | default (.Language.LanguageName | emojify) | default (.Lang | title) }}"
aria-label="{{ .Language.LanguageName | default (.Lang | title) }}">
{{- if (and $.Site.Params.displayFullLangName (.Language.LanguageName)) }}
{{- if (and site.Params.displayFullLangName (.Language.LanguageName)) }}
{{- .Language.LanguageName | emojify -}}
{{- else }}
{{- .Lang | title -}}
@ -97,14 +91,17 @@
{{- end}}
</ul>
{{- end }}
</span>
</div>
</div>
{{- $currentPage := . }}
<input name="hamburger-input" id="hamburger-input" type="checkbox" aria-label="Navigation Menu">
<label id="hamburger-menu" for="hamburger-input"></label>
<div class="overlay"></div>
<ul id="menu">
{{- range .Site.Menus.main }}
{{- range site.Menus.main }}
{{- $menu_item_url := (cond (strings.HasSuffix .URL "/") .URL (printf "%s/" .URL) ) | absLangURL }}
{{- $page_url:= $currentPage.Permalink | absLangURL }}
{{- $is_search := eq ($.Site.GetPage .KeyName).Layout `search` }}
{{- $is_search := eq (site.GetPage .KeyName).Layout `search` }}
<li>
<a href="{{ .URL | absLangURL }}" title="{{ .Title | default .Name }} {{- cond $is_search (" (Alt + /)" | safeHTMLAttr) ("" | safeHTMLAttr ) }}"
{{- cond $is_search (" accesskey=/" | safeHTMLAttr) ("" | safeHTMLAttr ) }}>
@ -113,6 +110,14 @@
{{- .Name -}}
{{ .Post -}}
</span>
{{- if (findRE "://" .URL) }}&nbsp;
<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>
</li>
{{- end }}

View File

@ -1,13 +1,13 @@
{{- with $.Site.Params.homeInfoParams }}
{{- with site.Params.homeInfoParams }}
<article class="first-entry home-info">
<header class="entry-header">
<h1>{{ .Title | markdownify }}</h1>
</header>
<section class="entry-content">
<p>{{ .Content | markdownify }}</p>
</section>
<div class="entry-content">
{{ .Content | markdownify }}
</div>
<footer class="entry-footer">
{{ partial "social_icons.html" $.Site.Params.socialIcons }}
{{ partial "social_icons.html" (dict "align" site.Params.homeInfoParams.AlignSocialIconsTo) }}
</footer>
</article>
{{- end -}}

View File

@ -1,19 +1,54 @@
<div class="profile">
{{- with .Site.Params.profileMode }}
{{- with site.Params.profileMode }}
<div class="profile_inner">
{{- if .imageUrl -}}
<img src="{{ .imageUrl | absURL }}" alt="{{ .imageTitle | default "profile image" }}"
{{- $img := "" }}
{{- if not (urls.Parse .imageUrl).IsAbs }}
{{- $img = resources.Get .imageUrl }}
{{- 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 }}
<h1>{{ .title | default $.Site.Title | markdownify }}</h1>
{{- end }}
<h1>{{ .title | default site.Title | markdownify }}</h1>
<span>{{ .subtitle | markdownify }}</span>
{{- partial "social_icons.html" $.Site.Params.socialIcons -}}
{{- partial "social_icons.html" -}}
{{- with .buttons }}
<div class="buttons">
{{- range . }}
<a class="button" href="{{ trim .url " " }}" rel="noopener" title="{{ .name | title }}">
<span class="button-inner">{{ .name | title }}</span>
<a class="button" href="{{ trim .url " " }}" rel="noopener" title="{{ .name }}">
<span class="button-inner">
{{ .name }}
{{- if (findRE "://" .url) }}&nbsp;
<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>
{{- end }}
</div>

View File

@ -1,9 +1,9 @@
{{ if and (.Params.canonicalURL) (.Params.ShowCanonicalLink ) -}}
{{ $url := urls.Parse .Params.canonicalURL }}
{{- if or .Params.author $.Site.Params.author (.Param "ShowReadingTime") (not .Date.IsZero) .IsTranslated (or .Params.editPost.URL .Site.Params.editPost.URL) }}&nbsp;|&nbsp;{{- end -}}
{{- if or .Params.author site.Params.author (.Param "ShowReadingTime") (not .Date.IsZero) .IsTranslated (or .Params.editPost.URL site.Params.editPost.URL) }}&nbsp;|&nbsp;{{- end -}}
<span>
{{- (.Site.Params.CanonicalLinkText | default .Params.CanonicalLinkText) | default "Originally published at" -}}
&nbsp;<a href="{{ trim .Params.canonicalURL " " }}" title="{{ trim .Params.canonicalURL " " }}" target="_blank" rel="noopener noreferrer">{{ $url.Host }}</a>
{{- (site.Params.CanonicalLinkText | default .Params.CanonicalLinkText) | default "Originally published at" -}}
&nbsp;<a href="{{ trim .Params.canonicalURL " " }}" title="{{ trim .Params.canonicalURL " " }}" rel="noopener noreferrer">{{ $url.Host }}</a>
</span>
{{- end }}

View File

@ -0,0 +1,6 @@
{{ $date := .Date.Format "02.01.2006" }}
{{ $lastmod := .Lastmod.Format "02.01.2006" }}
{{- if ne $lastmod $date -}}
<span title={{ .Lastmod }}><i>Last updated on {{ .Lastmod | time.Format (default "January 2, 2006" site.Params.DateFormat) }}</i></span>
{{- end }}

View File

@ -1,17 +1,23 @@
{{- $scratch := newScratch }}
{{- if not .Date.IsZero -}}
{{- $scratch.Add "meta" (slice (printf "<span title='%s'>%s</span>" (.Date) (.Date | time.Format (default "January 2, 2006" .Site.Params.DateFormat)))) }}
{{- $scratch.Add "meta" (slice (printf "<span title='%s'>%s</span>" (.Date) (.Date | time.Format (default "January 2, 2006" site.Params.DateFormat)))) }}
{{- end }}
{{- if (.Param "ShowReadingTime") -}}
{{- $scratch.Add "meta" (slice (i18n "read_time" .ReadingTime | default (printf "%d min" .ReadingTime))) }}
{{- end }}
{{- if (.Param "ShowWordCount") -}}
{{- $scratch.Add "meta" (slice (i18n "words" .WordCount | default (printf "%d words" .WordCount))) }}
{{- end }}
{{- if not (.Param "hideAuthor") -}}
{{- with (partial "author.html" .) }}
{{- $scratch.Add "meta" (slice .) }}
{{- end }}
{{- end }}
{{- with ($scratch.Get "meta") }}
{{- delimit . "&nbsp;·&nbsp;" -}}
{{- delimit . "&nbsp;·&nbsp;" | safeHTML -}}
{{- end -}}

View File

@ -1,4 +1,4 @@
{{- $pages := where site.RegularPages "Type" "in" site.Params.mainSections }}
{{- $pages := .CurrentSection.RegularPages.ByTitle }}
{{- if and (gt (len $pages) 1) (in $pages . ) }}
<nav class="paginav">
{{- with $pages.Next . }}

View File

@ -0,0 +1,27 @@
{{- /* Search */}}
{{- if (eq .Layout `search`) -}}
<link crossorigin="anonymous" rel="preload" as="fetch" href="../index.json">
{{- $fastsearch := resources.Get "js/fastsearch.js" | js.Build (dict "params" (dict "fuseOpts" site.Params.fuseOpts)) | resources.Minify }}
{{- $fusejs := resources.Get "js/fuse.basic.min.js" }}
{{- $license_js := resources.Get "js/license.js" }}
{{- if not site.Params.assets.disableFingerprinting }}
{{- $search := (slice $fusejs $license_js $fastsearch ) | resources.Concat "assets/js/search.js" | fingerprint }}
<script defer crossorigin="anonymous" src="{{ $search.RelPermalink }}" integrity="{{ $search.Data.Integrity }}"></script>
{{- else }}
{{- $search := (slice $fusejs $fastsearch ) | resources.Concat "assets/js/search.js" }}
<script defer crossorigin="anonymous" src="{{ $search.RelPermalink }}"></script>
{{- end }}
{{- end -}}
{{- /* PaperMod.js */}}
{{- $scrollToTop := (not site.Params.disableScrollToTop | default .Params.disableScrollToTop ) }}
{{- $themeToggle := (not site.Params.disableThemeToggle | default .Params.disableThemeToggle ) }}
{{- $showCodeCopyButtons := (site.Params.ShowCodeCopyButtons | default .Params.ShowCodeCopyButtons ) }}
{{- $papermod := resources.Get "js/papermod.js" | js.Build (dict "params" (dict "scrollToTop" $scrollToTop "themeToggle" $themeToggle "showCodeCopyButtons" $showCodeCopyButtons)) | resources.Minify }}
{{- if not site.Params.assets.disableFingerprinting }}
{{- $papermod_js := (slice $papermod) | resources.Concat "assets/js/papermod.js" | fingerprint }}
<script defer crossorigin="anonymous" src="{{ $papermod_js.RelPermalink }}" integrity="{{ $papermod_js.Data.Integrity }}"></script>
{{- else }}
{{- $papermod_js := (slice $papermod) | resources.Concat "assets/js/papermod.js" }}
<script defer crossorigin="anonymous" type="module" src="{{ $papermod_js.RelPermalink }}"></script>
{{- end }}

View File

@ -13,59 +13,83 @@
{{- $ShareButtons := (.Param "ShareButtons")}}
{{- with $ShareButtons }}{{ $custom = true }}{{ end }}
<div class="share-buttons">
{{- if (cond ($custom) (in $ShareButtons "twitter") (true)) }}
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on twitter"
href="https://twitter.com/intent/tweet/?text={{ $title }}&amp;url={{ $pageurl }}&amp;hashtags={{- $.Scratch.Get "tags" -}}">
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve">
<path
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-253.927,424.544c135.939,0 210.268,-112.643 210.268,-210.268c0,-3.218 0,-6.437 -0.153,-9.502c14.406,-10.421 26.973,-23.448 36.935,-38.314c-13.18,5.824 -27.433,9.809 -42.452,11.648c15.326,-9.196 26.973,-23.602 32.49,-40.92c-14.252,8.429 -30.038,14.56 -46.896,17.931c-13.487,-14.406 -32.644,-23.295 -53.946,-23.295c-40.767,0 -73.87,33.104 -73.87,73.87c0,5.824 0.613,11.494 1.992,16.858c-61.456,-3.065 -115.862,-32.49 -152.337,-77.241c-6.284,10.881 -9.962,23.601 -9.962,37.088c0,25.594 13.027,48.276 32.95,61.456c-12.107,-0.307 -23.448,-3.678 -33.41,-9.196l0,0.92c0,35.862 25.441,65.594 59.311,72.49c-6.13,1.686 -12.72,2.606 -19.464,2.606c-4.751,0 -9.348,-0.46 -13.946,-1.38c9.349,29.426 36.628,50.728 68.965,51.341c-25.287,19.771 -57.164,31.571 -91.8,31.571c-5.977,0 -11.801,-0.306 -17.625,-1.073c32.337,21.15 71.264,33.41 112.95,33.41Z" />
</svg>
</a>
<ul class="share-buttons">
{{- if (or (cond ($custom) (in $ShareButtons "x") (true)) (cond ($custom) (in $ShareButtons "twitter") (true))) }}
<li>
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on x"
href="https://x.com/intent/tweet/?text={{ $title }}&amp;url={{ $pageurl }}&amp;hashtags={{- $.Scratch.Get "tags" -}}">
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
<path
d="M512 62.554 L 512 449.446 C 512 483.97 483.97 512 449.446 512 L 62.554 512 C 28.03 512 0 483.97 0 449.446 L 0 62.554 C 0 28.03 28.029 0 62.554 0 L 449.446 0 C 483.971 0 512 28.03 512 62.554 Z M 269.951 190.75 L 182.567 75.216 L 56 75.216 L 207.216 272.95 L 63.9 436.783 L 125.266 436.783 L 235.9 310.383 L 332.567 436.783 L 456 436.783 L 298.367 228.367 L 432.367 75.216 L 371.033 75.216 Z M 127.633 110 L 164.101 110 L 383.481 400.065 L 349.5 400.065 Z" />
</svg>
</a>
</li>
{{- end }}
{{- if (cond ($custom) (in $ShareButtons "linkedin") (true)) }}
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on linkedin"
href="https://www.linkedin.com/shareArticle?mini=true&amp;url={{ $pageurl }}&amp;title={{ $title }}&amp;summary={{ $title }}&amp;source={{ $pageurl }}">
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve">
<path
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-288.985,423.278l0,-225.717l-75.04,0l0,225.717l75.04,0Zm270.539,0l0,-129.439c0,-69.333 -37.018,-101.586 -86.381,-101.586c-39.804,0 -57.634,21.891 -67.617,37.266l0,-31.958l-75.021,0c0.995,21.181 0,225.717 0,225.717l75.02,0l0,-126.056c0,-6.748 0.486,-13.492 2.474,-18.315c5.414,-13.475 17.767,-27.434 38.494,-27.434c27.135,0 38.007,20.707 38.007,51.037l0,120.768l75.024,0Zm-307.552,-334.556c-25.674,0 -42.448,16.879 -42.448,39.002c0,21.658 16.264,39.002 41.455,39.002l0.484,0c26.165,0 42.452,-17.344 42.452,-39.002c-0.485,-22.092 -16.241,-38.954 -41.943,-39.002Z" />
</svg>
</a>
<li>
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on linkedin"
href="https://www.linkedin.com/shareArticle?mini=true&amp;url={{ $pageurl }}&amp;title={{ $title }}&amp;summary={{ $title }}&amp;source={{ $pageurl }}">
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
<path
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-288.985,423.278l0,-225.717l-75.04,0l0,225.717l75.04,0Zm270.539,0l0,-129.439c0,-69.333 -37.018,-101.586 -86.381,-101.586c-39.804,0 -57.634,21.891 -67.617,37.266l0,-31.958l-75.021,0c0.995,21.181 0,225.717 0,225.717l75.02,0l0,-126.056c0,-6.748 0.486,-13.492 2.474,-18.315c5.414,-13.475 17.767,-27.434 38.494,-27.434c27.135,0 38.007,20.707 38.007,51.037l0,120.768l75.024,0Zm-307.552,-334.556c-25.674,0 -42.448,16.879 -42.448,39.002c0,21.658 16.264,39.002 41.455,39.002l0.484,0c26.165,0 42.452,-17.344 42.452,-39.002c-0.485,-22.092 -16.241,-38.954 -41.943,-39.002Z" />
</svg>
</a>
</li>
{{- end }}
{{- if (cond ($custom) (in $ShareButtons "reddit") (true)) }}
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on reddit"
href="https://reddit.com/submit?url={{ $pageurl }}&title={{ $title }}">
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve">
<path
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-3.446,265.638c0,-22.964 -18.616,-41.58 -41.58,-41.58c-11.211,0 -21.361,4.457 -28.841,11.666c-28.424,-20.508 -67.586,-33.757 -111.204,-35.278l18.941,-89.121l61.884,13.157c0.756,15.734 13.642,28.29 29.56,28.29c16.407,0 29.706,-13.299 29.706,-29.701c0,-16.403 -13.299,-29.702 -29.706,-29.702c-11.666,0 -21.657,6.792 -26.515,16.578l-69.105,-14.69c-1.922,-0.418 -3.939,-0.042 -5.585,1.036c-1.658,1.073 -2.811,2.761 -3.224,4.686l-21.152,99.438c-44.258,1.228 -84.046,14.494 -112.837,35.232c-7.468,-7.164 -17.589,-11.591 -28.757,-11.591c-22.965,0 -41.585,18.616 -41.585,41.58c0,16.896 10.095,31.41 24.568,37.918c-0.639,4.135 -0.99,8.328 -0.99,12.576c0,63.977 74.469,115.836 166.33,115.836c91.861,0 166.334,-51.859 166.334,-115.836c0,-4.218 -0.347,-8.387 -0.977,-12.493c14.564,-6.47 24.735,-21.034 24.735,-38.001Zm-119.474,108.193c-20.27,20.241 -59.115,21.816 -70.534,21.816c-11.428,0 -50.277,-1.575 -70.522,-21.82c-3.007,-3.008 -3.007,-7.882 0,-10.889c3.003,-2.999 7.882,-3.003 10.885,0c12.777,12.781 40.11,17.317 59.637,17.317c19.522,0 46.86,-4.536 59.657,-17.321c3.016,-2.999 7.886,-2.995 10.885,0.008c3.008,3.011 3.003,7.882 -0.008,10.889Zm-5.23,-48.781c-16.373,0 -29.701,-13.324 -29.701,-29.698c0,-16.381 13.328,-29.714 29.701,-29.714c16.378,0 29.706,13.333 29.706,29.714c0,16.374 -13.328,29.698 -29.706,29.698Zm-160.386,-29.702c0,-16.381 13.328,-29.71 29.714,-29.71c16.369,0 29.689,13.329 29.689,29.71c0,16.373 -13.32,29.693 -29.689,29.693c-16.386,0 -29.714,-13.32 -29.714,-29.693Z" />
</svg>
</a>
<li>
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on reddit"
href="https://reddit.com/submit?url={{ $pageurl }}&title={{ $title }}">
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
<path
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-3.446,265.638c0,-22.964 -18.616,-41.58 -41.58,-41.58c-11.211,0 -21.361,4.457 -28.841,11.666c-28.424,-20.508 -67.586,-33.757 -111.204,-35.278l18.941,-89.121l61.884,13.157c0.756,15.734 13.642,28.29 29.56,28.29c16.407,0 29.706,-13.299 29.706,-29.701c0,-16.403 -13.299,-29.702 -29.706,-29.702c-11.666,0 -21.657,6.792 -26.515,16.578l-69.105,-14.69c-1.922,-0.418 -3.939,-0.042 -5.585,1.036c-1.658,1.073 -2.811,2.761 -3.224,4.686l-21.152,99.438c-44.258,1.228 -84.046,14.494 -112.837,35.232c-7.468,-7.164 -17.589,-11.591 -28.757,-11.591c-22.965,0 -41.585,18.616 -41.585,41.58c0,16.896 10.095,31.41 24.568,37.918c-0.639,4.135 -0.99,8.328 -0.99,12.576c0,63.977 74.469,115.836 166.33,115.836c91.861,0 166.334,-51.859 166.334,-115.836c0,-4.218 -0.347,-8.387 -0.977,-12.493c14.564,-6.47 24.735,-21.034 24.735,-38.001Zm-119.474,108.193c-20.27,20.241 -59.115,21.816 -70.534,21.816c-11.428,0 -50.277,-1.575 -70.522,-21.82c-3.007,-3.008 -3.007,-7.882 0,-10.889c3.003,-2.999 7.882,-3.003 10.885,0c12.777,12.781 40.11,17.317 59.637,17.317c19.522,0 46.86,-4.536 59.657,-17.321c3.016,-2.999 7.886,-2.995 10.885,0.008c3.008,3.011 3.003,7.882 -0.008,10.889Zm-5.23,-48.781c-16.373,0 -29.701,-13.324 -29.701,-29.698c0,-16.381 13.328,-29.714 29.701,-29.714c16.378,0 29.706,13.333 29.706,29.714c0,16.374 -13.328,29.698 -29.706,29.698Zm-160.386,-29.702c0,-16.381 13.328,-29.71 29.714,-29.71c16.369,0 29.689,13.329 29.689,29.71c0,16.373 -13.32,29.693 -29.689,29.693c-16.386,0 -29.714,-13.32 -29.714,-29.693Z" />
</svg>
</a>
</li>
{{- end }}
{{- if (cond ($custom) (in $ShareButtons "facebook") (true)) }}
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on facebook"
href="https://facebook.com/sharer/sharer.php?u={{ $pageurl }}">
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve">
<path
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-106.468,0l0,-192.915l66.6,0l12.672,-82.621l-79.272,0l0,-53.617c0,-22.603 11.073,-44.636 46.58,-44.636l36.042,0l0,-70.34c0,0 -32.71,-5.582 -63.982,-5.582c-65.288,0 -107.96,39.569 -107.96,111.204l0,62.971l-72.573,0l0,82.621l72.573,0l0,192.915l-191.104,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Z" />
</svg>
</a>
<li>
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on facebook"
href="https://facebook.com/sharer/sharer.php?u={{ $pageurl }}">
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
<path
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-106.468,0l0,-192.915l66.6,0l12.672,-82.621l-79.272,0l0,-53.617c0,-22.603 11.073,-44.636 46.58,-44.636l36.042,0l0,-70.34c0,0 -32.71,-5.582 -63.982,-5.582c-65.288,0 -107.96,39.569 -107.96,111.204l0,62.971l-72.573,0l0,82.621l72.573,0l0,192.915l-191.104,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Z" />
</svg>
</a>
</li>
{{- end }}
{{- if (cond ($custom) (in $ShareButtons "whatsapp") (true)) }}
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on whatsapp"
href="https://api.whatsapp.com/send?text={{ $title }}%20-%20{{ $pageurl }}">
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve">
<path
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-58.673,127.703c-33.842,-33.881 -78.847,-52.548 -126.798,-52.568c-98.799,0 -179.21,80.405 -179.249,179.234c-0.013,31.593 8.241,62.428 23.927,89.612l-25.429,92.884l95.021,-24.925c26.181,14.28 55.659,21.807 85.658,21.816l0.074,0c98.789,0 179.206,-80.413 179.247,-179.243c0.018,-47.895 -18.61,-92.93 -52.451,-126.81Zm-126.797,275.782l-0.06,0c-26.734,-0.01 -52.954,-7.193 -75.828,-20.767l-5.441,-3.229l-56.386,14.792l15.05,-54.977l-3.542,-5.637c-14.913,-23.72 -22.791,-51.136 -22.779,-79.287c0.033,-82.142 66.867,-148.971 149.046,-148.971c39.793,0.014 77.199,15.531 105.329,43.692c28.128,28.16 43.609,65.592 43.594,105.4c-0.034,82.149 -66.866,148.983 -148.983,148.984Zm81.721,-111.581c-4.479,-2.242 -26.499,-13.075 -30.604,-14.571c-4.105,-1.495 -7.091,-2.241 -10.077,2.241c-2.986,4.483 -11.569,14.572 -14.182,17.562c-2.612,2.988 -5.225,3.364 -9.703,1.12c-4.479,-2.241 -18.91,-6.97 -36.017,-22.23c-13.314,-11.876 -22.304,-26.542 -24.916,-31.026c-2.612,-4.484 -0.279,-6.908 1.963,-9.14c2.016,-2.007 4.48,-5.232 6.719,-7.847c2.24,-2.615 2.986,-4.484 4.479,-7.472c1.493,-2.99 0.747,-5.604 -0.374,-7.846c-1.119,-2.241 -10.077,-24.288 -13.809,-33.256c-3.635,-8.733 -7.327,-7.55 -10.077,-7.688c-2.609,-0.13 -5.598,-0.158 -8.583,-0.158c-2.986,0 -7.839,1.121 -11.944,5.604c-4.105,4.484 -15.675,15.32 -15.675,37.364c0,22.046 16.048,43.342 18.287,46.332c2.24,2.99 31.582,48.227 76.511,67.627c10.685,4.615 19.028,7.371 25.533,9.434c10.728,3.41 20.492,2.929 28.209,1.775c8.605,-1.285 26.499,-10.833 30.231,-21.295c3.732,-10.464 3.732,-19.431 2.612,-21.298c-1.119,-1.869 -4.105,-2.99 -8.583,-5.232Z" />
</svg>
</a>
<li>
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on whatsapp"
href="https://api.whatsapp.com/send?text={{ $title }}%20-%20{{ $pageurl }}">
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
<path
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-58.673,127.703c-33.842,-33.881 -78.847,-52.548 -126.798,-52.568c-98.799,0 -179.21,80.405 -179.249,179.234c-0.013,31.593 8.241,62.428 23.927,89.612l-25.429,92.884l95.021,-24.925c26.181,14.28 55.659,21.807 85.658,21.816l0.074,0c98.789,0 179.206,-80.413 179.247,-179.243c0.018,-47.895 -18.61,-92.93 -52.451,-126.81Zm-126.797,275.782l-0.06,0c-26.734,-0.01 -52.954,-7.193 -75.828,-20.767l-5.441,-3.229l-56.386,14.792l15.05,-54.977l-3.542,-5.637c-14.913,-23.72 -22.791,-51.136 -22.779,-79.287c0.033,-82.142 66.867,-148.971 149.046,-148.971c39.793,0.014 77.199,15.531 105.329,43.692c28.128,28.16 43.609,65.592 43.594,105.4c-0.034,82.149 -66.866,148.983 -148.983,148.984Zm81.721,-111.581c-4.479,-2.242 -26.499,-13.075 -30.604,-14.571c-4.105,-1.495 -7.091,-2.241 -10.077,2.241c-2.986,4.483 -11.569,14.572 -14.182,17.562c-2.612,2.988 -5.225,3.364 -9.703,1.12c-4.479,-2.241 -18.91,-6.97 -36.017,-22.23c-13.314,-11.876 -22.304,-26.542 -24.916,-31.026c-2.612,-4.484 -0.279,-6.908 1.963,-9.14c2.016,-2.007 4.48,-5.232 6.719,-7.847c2.24,-2.615 2.986,-4.484 4.479,-7.472c1.493,-2.99 0.747,-5.604 -0.374,-7.846c-1.119,-2.241 -10.077,-24.288 -13.809,-33.256c-3.635,-8.733 -7.327,-7.55 -10.077,-7.688c-2.609,-0.13 -5.598,-0.158 -8.583,-0.158c-2.986,0 -7.839,1.121 -11.944,5.604c-4.105,4.484 -15.675,15.32 -15.675,37.364c0,22.046 16.048,43.342 18.287,46.332c2.24,2.99 31.582,48.227 76.511,67.627c10.685,4.615 19.028,7.371 25.533,9.434c10.728,3.41 20.492,2.929 28.209,1.775c8.605,-1.285 26.499,-10.833 30.231,-21.295c3.732,-10.464 3.732,-19.431 2.612,-21.298c-1.119,-1.869 -4.105,-2.99 -8.583,-5.232Z" />
</svg>
</a>
</li>
{{- end }}
{{- if (cond ($custom) (in $ShareButtons "telegram") (true)) }}
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on telegram"
href="https://telegram.me/share/url?text={{ $title }}&amp;url={{ $pageurl }}">
<svg version="1.1" xml:space="preserve" viewBox="2 2 28 28">
<path
d="M26.49,29.86H5.5a3.37,3.37,0,0,1-2.47-1,3.35,3.35,0,0,1-1-2.47V5.48A3.36,3.36,0,0,1,3,3,3.37,3.37,0,0,1,5.5,2h21A3.38,3.38,0,0,1,29,3a3.36,3.36,0,0,1,1,2.46V26.37a3.35,3.35,0,0,1-1,2.47A3.38,3.38,0,0,1,26.49,29.86Zm-5.38-6.71a.79.79,0,0,0,.85-.66L24.73,9.24a.55.55,0,0,0-.18-.46.62.62,0,0,0-.41-.17q-.08,0-16.53,6.11a.59.59,0,0,0-.41.59.57.57,0,0,0,.43.52l4,1.24,1.61,4.83a.62.62,0,0,0,.63.43.56.56,0,0,0,.4-.17L16.54,20l4.09,3A.9.9,0,0,0,21.11,23.15ZM13.8,20.71l-1.21-4q8.72-5.55,8.78-5.55c.15,0,.23,0,.23.16a.18.18,0,0,1,0,.06s-2.51,2.3-7.52,6.8Z" />
</svg>
</a>
<li>
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on telegram"
href="https://telegram.me/share/url?text={{ $title }}&amp;url={{ $pageurl }}">
<svg version="1.1" xml:space="preserve" viewBox="2 2 28 28" height="30px" width="30px" fill="currentColor">
<path
d="M26.49,29.86H5.5a3.37,3.37,0,0,1-2.47-1,3.35,3.35,0,0,1-1-2.47V5.48A3.36,3.36,0,0,1,3,3,3.37,3.37,0,0,1,5.5,2h21A3.38,3.38,0,0,1,29,3a3.36,3.36,0,0,1,1,2.46V26.37a3.35,3.35,0,0,1-1,2.47A3.38,3.38,0,0,1,26.49,29.86Zm-5.38-6.71a.79.79,0,0,0,.85-.66L24.73,9.24a.55.55,0,0,0-.18-.46.62.62,0,0,0-.41-.17q-.08,0-16.53,6.11a.59.59,0,0,0-.41.59.57.57,0,0,0,.43.52l4,1.24,1.61,4.83a.62.62,0,0,0,.63.43.56.56,0,0,0,.4-.17L16.54,20l4.09,3A.9.9,0,0,0,21.11,23.15ZM13.8,20.71l-1.21-4q8.72-5.55,8.78-5.55c.15,0,.23,0,.23.16a.18.18,0,0,1,0,.06s-2.51,2.3-7.52,6.8Z" />
</svg>
</a>
</li>
{{- end }}
</div>
{{- if (cond ($custom) (in $ShareButtons "ycombinator") (true)) }}
<li>
<a target="_blank" rel="noopener noreferrer" aria-label="share {{ $title | plainify }} on ycombinator"
href="https://news.ycombinator.com/submitlink?t={{ $title }}&u={{ $pageurl }}">
<svg version="1.1" xml:space="preserve" width="30px" height="30px" viewBox="0 0 512 512" fill="currentColor"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
<path
d="M449.446 0C483.971 0 512 28.03 512 62.554L512 449.446C512 483.97 483.97 512 449.446 512L62.554 512C28.03 512 0 483.97 0 449.446L0 62.554C0 28.03 28.029 0 62.554 0L449.446 0ZM183.8767 87.9921H121.8427L230.6673 292.4508V424.0079H281.3328V292.4508L390.1575 87.9921H328.1233L256 238.2489z" />
</svg>
</a>
</li>
{{- end }}
</ul>

View File

@ -1,6 +1,7 @@
<div class="social-icons">
{{- range . }}
<a href="{{ trim .url " " }}" target="_blank" rel="noopener noreferrer me" title="{{ .name | title }}">
<div class="social-icons" {{ with .align}}align="{{.}}" {{- end }}>
{{- range site.Params.socialIcons }}
<a href="{{ trim .url " " | safeURL }}" rel="noopener noreferrer me"
title="{{ (.title | default .name) | title }}">
{{ partial "svg.html" . }}
</a>
{{- end }}

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,5 @@
<meta property="og:title" content="{{ .Title }}" />
<meta property="og:description" content="{{ with .Description }}{{ . }}{{ else }}{{if .IsPage}}{{ .Summary }}{{ else }}{{ with .Site.Params.description }}{{ . }}{{ end }}{{ end }}{{ end }}" />
<meta property="og:description" content="{{ with .Description }}{{ . }}{{ else }}{{if .IsPage}}{{ .Summary }}{{ else }}{{ with site.Params.description }}{{ . }}{{ end }}{{ end }}{{ end }}" />
<meta property="og:type" content="{{ if .IsPage }}article{{ else }}website{{ end }}" />
<meta property="og:url" content="{{ .Permalink }}" />
{{- if .Params.cover.image -}}
@ -19,7 +19,7 @@
{{- with $featured -}}
<meta property="og:image" content="{{ $featured.Permalink }}"/>
{{- else -}}
{{- with $.Site.Params.images }}<meta property="og:image" content="{{ index . 0 | absURL }}"/>{{ end -}}
{{- with site.Params.images }}<meta property="og:image" content="{{ index . 0 | absURL }}"/>{{ end -}}
{{- end -}}
{{- end -}}
{{- end }}
@ -27,26 +27,41 @@
{{- if .IsPage }}
{{- $iso8601 := "2006-01-02T15:04:05-07:00" -}}
<meta property="article:section" content="{{ .Section }}" />
{{ with .PublishDate }}<meta property="article:published_time" content="{{ .Format $iso8601 }}" />{{ end }}
{{ with .Lastmod }}<meta property="article:modified_time" content="{{ .Format $iso8601 }}" />{{ end }}
{{ with .PublishDate }}<meta property="article:published_time" {{ .Format $iso8601 | printf "content=%q" | safeHTMLAttr }} />{{ end }}
{{ with .Lastmod }}<meta property="article:modified_time" {{ .Format $iso8601 | printf "content=%q" | safeHTMLAttr }} />{{ end }}
{{- end -}}
{{- with .Params.audio }}<meta property="og:audio" content="{{ . }}" />{{ end }}
{{- with .Params.locale }}<meta property="og:locale" content="{{ . }}" />{{ end }}
{{- with .Site.Params.title }}<meta property="og:site_name" content="{{ . }}" />{{ end }}
{{- with site.Params.title }}<meta property="og:site_name" content="{{ . }}" />{{ end }}
{{- with .Params.videos }}{{- range . }}
<meta property="og:video" content="{{ . | absURL }}" />
{{ end }}{{ end }}
{{- /* If it is part of a series, link to related articles */}}
{{- $permalink := .Permalink }}
{{- $siteSeries := .Site.Taxonomies.series }}
{{- $siteSeries := site.Taxonomies.series }}
{{- if $siteSeries }}
{{ with .Params.series }}{{- range $name := . }}
{{- $series := index $siteSeries ($name | urlize) }}
{{- range $page := first 6 $series.Pages }}
{{- if ne $page.Permalink $permalink }}<meta property="og:see_also" content="{{ $page.Permalink }}" />{{ end }}
{{- end }}
{{ end }}{{ end }}
{{- end }}
{{- /* Deprecate site.Social.facebook_admin in favor of site.Params.social.facebook_admin */}}
{{- $facebookAdmin := "" }}
{{- with site.Params.social }}
{{- if reflect.IsMap . }}
{{- $facebookAdmin = .facebook_admin }}
{{- end }}
{{- else }}
{{- with site.Social.facebook_admin }}
{{- $facebookAdmin = . }}
{{- warnf "The social key in site configuration is deprecated. Use params.social.facebook_admin instead." }}
{{- end }}
{{- end }}
{{- /* Facebook Page Admin ID for Domain Insights */}}
{{- with .Site.Social.facebook_admin }}<meta property="fb:admins" content="{{ . }}" />{{ end }}
{{ with $facebookAdmin }}<meta property="fb:admins" content="{{ . }}" />{{ end }}

View File

@ -2,23 +2,23 @@
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "{{- ( .Site.Params.schema.publisherType | default "Organization") | title -}}",
"name": {{ .Site.Title }},
"url": {{ .Site.BaseURL }},
"description": {{ .Site.Params.description | plainify | truncate 180 | safeHTML }},
"thumbnailUrl": {{ .Site.Params.assets.favicon | default "favicon.ico" | absURL }},
"@type": "{{- ( site.Params.schema.publisherType | default "Organization") | title -}}",
"name": {{ site.Title }},
"url": {{ site.BaseURL }},
"description": {{ site.Params.description | plainify | truncate 180 | safeHTML }},
"thumbnailUrl": {{ site.Params.assets.favicon | default "favicon.ico" | absURL }},
"sameAs": [
{{- if .Site.Params.schema.sameAs }}
{{ range $i, $e := .Site.Params.schema.sameAs }}{{ if $i }}, {{ end }}{{ trim $e " " }}{{ end }}
{{- if site.Params.schema.sameAs }}
{{ range $i, $e := site.Params.schema.sameAs }}{{ if $i }}, {{ end }}{{ trim $e " " }}{{ end }}
{{- else}}
{{ range $i, $e := .Site.Params.SocialIcons }}{{ if $i }}, {{ end }}{{ trim $e.url " " }}{{ end }}
{{ range $i, $e := site.Params.SocialIcons }}{{ if $i }}, {{ end }}{{ trim $e.url " " | safeURL }}{{ end }}
{{- end}}
]
}
</script>
{{- else if (or .IsPage .IsSection) }}
{{/* BreadcrumbList */}}
{{- $url := replace .Parent.Permalink ( printf "%s" .Site.BaseURL) "" }}
{{- $url := replace .Parent.Permalink ( printf "%s" site.BaseURL) "" }}
{{- $lang_url := strings.TrimPrefix ( printf "%s/" .Lang) $url }}
{{- $bc_list := (split $lang_url "/")}}
@ -31,7 +31,7 @@
{{- range $index, $element := $bc_list }}
{{- $scratch.Add "path" (printf "%s/" $element ) | safeJS }}
{{- $bc_pg := $.Site.GetPage ($scratch.Get "path") -}}
{{- $bc_pg := site.GetPage ($scratch.Get "path") -}}
{{- if (and ($bc_pg) (gt (len . ) 0))}}
{{- if (and $index)}}, {{end }}
@ -83,7 +83,7 @@
{{- end -}}
"datePublished": {{ .PublishDate }},
"dateModified": {{ .Lastmod }},
{{- with (.Params.author | default .Site.Params.author) }}
{{- with (.Params.author | default site.Params.author) }}
"author":
{{- if (or (eq (printf "%T" .) "[]string") (eq (printf "%T" .) "[]interface {}")) -}}
[{{- range $i, $v := . -}}
@ -105,11 +105,11 @@
"@id": {{ .Permalink | safeHTML }}
},
"publisher": {
"@type": "{{- ( .Site.Params.schema.publisherType | default "Organization") | title -}}",
"name": {{ .Site.Title }},
"@type": "{{- ( site.Params.schema.publisherType | default "Organization") | title -}}",
"name": {{ site.Title }},
"logo": {
"@type": "ImageObject",
"url": {{ .Site.Params.assets.favicon | default "favicon.ico" | absURL }}
"url": {{ site.Params.assets.favicon | default "favicon.ico" | absURL }}
}
}
}

View File

@ -17,7 +17,7 @@
<meta name="twitter:card" content="summary_large_image"/>
<meta name="twitter:image" content="{{ $featured.Permalink }}"/>
{{- else -}}
{{- with $.Site.Params.images -}}
{{- with site.Params.images -}}
<meta name="twitter:card" content="summary_large_image"/>
<meta name="twitter:image" content="{{ index . 0 | absURL }}"/>
{{ else -}}
@ -27,7 +27,24 @@
{{- end }}
{{- end }}
<meta name="twitter:title" content="{{ .Title }}"/>
<meta name="twitter:description" content="{{ with .Description }}{{ . }}{{ else }}{{if .IsPage}}{{ .Summary }}{{ else }}{{ with .Site.Params.description }}{{ . }}{{ end }}{{ end }}{{ end -}}"/>
{{ with .Site.Social.twitter -}}
<meta name="twitter:site" content="@{{ . }}"/>
{{ end -}}
<meta name="twitter:description" content="{{ with .Description }}{{ . }}{{ else }}{{if .IsPage}}{{ .Summary }}{{ else }}{{ with site.Params.description }}{{ . }}{{ end }}{{ end }}{{ end -}}"/>
{{- /* Deprecate site.Social.twitter in favor of site.Params.social.twitter */}}
{{- $twitterSite := "" }}
{{- with site.Params.social }}
{{- if reflect.IsMap . }}
{{- $twitterSite = .twitter }}
{{- end }}
{{- else }}
{{- with site.Social.twitter }}
{{- $twitterSite = . }}
{{- warnf "The social key in site configuration is deprecated. Use params.social.twitter instead." }}
{{- end }}
{{- end }}
{{- with $twitterSite }}
{{- $content := . }}
{{- if not (strings.HasPrefix . "@") }}
{{- $content = printf "@%v" $twitterSite }}
{{- end }}
<meta name="twitter:site" content="{{ $content }}"/>
{{- end }}

View File

@ -1,13 +1,16 @@
{{- $headers := findRE "<h[1-6].*?>(.|\n])+?</h[1-6]>" .Content -}}
{{- $has_headers := ge (len $headers) 1 -}}
{{- if $has_headers -}}
<div class="toc">
<details {{if (.Param "TocOpen") }} open{{ end }}>
<div class="toc side">
<details id="toc" {{if (.Param "TocOpen") }} open{{ end }}>
<summary accesskey="c" title="(Alt + C)">
<span class="details">{{- i18n "toc" | default "Table of Contents" }}</span>
</summary>
<div class="inner">
{{- if (.Param "UseHugoToc") }}
{{- .TableOfContents -}}
{{- else }}
{{- $largest := 6 -}}
{{- range $headers -}}
{{- $headerLevel := index (findRE "[1-6]" . 1) 0 -}}
@ -68,10 +71,10 @@
{{- end -}}
{{- end }}
<li>
<a href="#{{- $cleanedID -}}" aria-label="{{- $header | plainify -}}">{{- $header | safeHTML -}}</a>
<a href="#{{- $cleanedID -}}" aria-label="{{- $header | plainify | safeHTML -}}">{{- $header | plainify | safeHTML -}}</a>
{{- else }}
<li>
<a href="#{{- $cleanedID -}}" aria-label="{{- $header | plainify -}}">{{- $header | safeHTML -}}</a>
<a href="#{{- $cleanedID -}}" aria-label="{{- $header | plainify | safeHTML -}}">{{- $header | plainify | safeHTML -}}</a>
{{- end -}}
{{- end -}}
<!-- {{- $firstHeaderLevel := len (seq (index (findRE "[1-6]" (index $headers 0) 1) 0)) -}} -->
@ -87,6 +90,7 @@
{{- end -}}
{{- end }}
</ul>
{{- end }}
</div>
</details>
</div>

View File

@ -1,13 +1,13 @@
{{- if .IsTranslated -}}
{{- if (ne .Layout "search") }}
{{- if or .Params.author $.Site.Params.author (.Param "ShowReadingTime") (not .Date.IsZero) }}&nbsp;|&nbsp;{{- end -}}
{{- if or .Params.author site.Params.author (.Param "ShowReadingTime") (not .Date.IsZero) }}&nbsp;|&nbsp;{{- end -}}
{{- end }}
{{- i18n "translations" | default "Translations" }}:
<ul class="i18n_list">
{{- i18n "translations" | default "Translations" }}:
{{- range .Translations }}
<li>
<a href="{{ .Permalink }}">
{{- if (and $.Site.Params.displayFullLangName (.Language.LanguageName)) }}
{{- if (and site.Params.displayFullLangName (.Language.LanguageName)) }}
{{- .Language.LanguageName | emojify -}}
{{- else }}
{{- .Lang | title -}}

View File

@ -1,5 +1,5 @@
User-agent: *
{{- if hugo.IsProduction | or (eq .Site.Params.env "production") }}
{{- if hugo.IsProduction | or (eq site.Params.env "production") }}
Disallow:
{{- else }}
Disallow: /

View File

@ -1,72 +0,0 @@
<!-- Author: Parsia Hakimian https://github.com/parsiya/Hugo-Shortcodes -->
<!-- port of Octopress blockquote plugin http://octopress.org/docs/plugins/blockquote/ to Hugo
see readme for usage -->
<!-- reset scratch variables at the start -->
{{ $.Scratch.Set "bl_author" false }}
{{ $.Scratch.Set "bl_source" false }}
{{ $.Scratch.Set "bl_link" false }}
{{ $.Scratch.Set "bl_title" false }}
{{ if .IsNamedParams }}
{{ $.Scratch.Set "bl_author" (.Get "author") }}
{{ $.Scratch.Set "bl_source" (.Get "source") }}
{{ $.Scratch.Set "bl_link" (.Get "link") }}
{{ $.Scratch.Set "bl_title" (.Get "title") }}
{{ else }}
<!-- for the positional version if any -->
{{ end }}
<!-- if title is not set explicitly then we need to beautify the link
if length of link is more than 32 chars, we will cut it off by 32 and
then drop everything after the last / if any and put it in into title -->
{{ with $.Scratch.Get "bl_title" }}
<!-- do nothing -->
{{ else }}
{{ with $.Scratch.Get "bl_link" }} <!-- if link is given -->
{{ range last 1 (split ($.Scratch.Get "bl_link" ) "://") }} <!-- split by :// and then only take the items after it to remove protocol:// -->
{{ $.Scratch.Set "title_without_protocol" . }}
{{ end }}
{{ range last 1 (split ($.Scratch.Get "title_without_protocol" ) "www.") }} <!-- also remove the www. at the start if any. we are using a second split because all URLS may not start with it -->
{{ $.Scratch.Set "title_without_protocol" . }}
{{ end }}
{{ $.Scratch.Set "bl_title" ($.Scratch.Get "title_without_protocol") }}
<!-- if link is longer than 32 bytes we should trim it -->
{{ if (gt (len ($.Scratch.Get "title_without_protocol") ) 32) }}
{{ $title := (slicestr ($.Scratch.Get "title_without_protocol") 0 32) }} <!-- get the first 32 characters of title_without_protocol -->
{{ $split_by_fw_slash := split $title "/" }} <!-- now split on / because we want to stop after the last forward slash -->
{{ $count := (sub (len $split_by_fw_slash) 1) }} <!-- we want everything but the last part so we adjust the count accordingly -->
{{ $.Scratch.Set "tempstring" "" }} <!-- temp variable to hold the concatinated string -->
{{ range first $count $split_by_fw_slash }} <!-- loop through all parts except last and concat them (add / between halves) -->
{{ $.Scratch.Set "tempstring" ( . | printf "%s%s/" ($.Scratch.Get "tempstring") | printf "%s" ) }}
{{ end }}
{{ $.Scratch.Set "bl_title" ( printf "%s..." ($.Scratch.Get "tempstring") | printf "%s" ) }}
{{ end }}
{{ end }}
{{ end }}
<blockquote>
<p>{{ .Inner | markdownify }}</p>
<footer>
<strong>{{ with $.Scratch.Get "bl_author" }}{{ . }}{{ end }}</strong>
{{ with $.Scratch.Get "bl_source" }}
<cite>{{ . }}</cite>
{{ else }}
{{ with $.Scratch.Get "bl_link" }}
<cite>
<a href="{{ . }}" title="{{ . }}">{{ $.Scratch.Get "bl_title" }}</a> <!-- can't have new lines here -->
</cite>
{{ else }}
{{ with $.Scratch.Get "bl_title" }}
<cite>
{{ $.Scratch.Get "bl_title" }}</a>
</cite>
{{ end }}
{{ end }}
{{ end }}
</footer>
</blockquote>

View File

@ -0,0 +1,5 @@
{{- $Img := (.Get "url") }}
{{- $height := (.Get "height") }}
{{- $alt := (.Get "alt") }}
<img class="in-text" height="{{ $height | default `15` }}" src="{{$Img}}" alt="{{$alt}}">

View File

@ -1,2 +1,2 @@
<!-- raw html -->
{{.Inner}}
{{- .Inner -}}

View File

@ -0,0 +1,4 @@
{{- $id := .Get "id" | default (.Get 0) -}}
<div class="youtube-embed-div">
<iframe src="https://www.youtube-nocookie.com/embed/{{ $id }}" class="youtube-embed-frame" allowfullscreen title="YouTube Video"></iframe>
</div>

View File

@ -1,11 +1,11 @@
# theme.toml template for a Hugo theme
# See https://github.com/gohugoio/hugoThemes#themetoml for an example
name = "PaperMod"
name = "WonderMod"
license = "MIT"
licenselink = "https://github.com/adityatelange/hugo-PaperMod/blob/master/LICENSE"
licenselink = "https://github.com/Wonderfall/hugo-WonderMod/blob/master/LICENSE"
description = "A fast, clean, responsive Hugo theme"
homepage = "https://adityatelange.github.io/hugo-PaperMod/"
homepage = "https://github.com/Wonderfall/hugo-WonderMod"
tags = [
"responsive",
"simple",
@ -37,15 +37,15 @@ features = [
"scroll-to-top",
"search"
]
min_version = "0.83.0"
min_version = "0.112.4"
[author]
name = "Aditya Telange"
homepage = "https://github.com/adityatelange/"
name = "Wonderfall"
homepage = "https://github.com/Wonderfall"
# If porting an existing theme
[original]
name = "Paper"
author = "nanxiaobei"
homepage = "https://github.com/nanxiaobei"
repo = "https://github.com/nanxiaobei/hugo-paper/"
name = "PaperMod"
author = "Aditya Telange"
homepage = "https://github.com/adityatelange"
repo = "https://github.com/adityatelange/hugo-PaperMod"