Compare commits

...

397 Commits
v5.0 ... master

Author SHA1 Message Date
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 6864770ad4.
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 a636c9eaee.
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 984d1a576c.

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 a3ad238f78
This reverts commit a86abf5994.
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 53fd4bb857
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 15b984bd21.
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
janga1 54a3c60735
Adding 'Phone' to Socials (#635) 2022-01-13 21:21:03 +05:30
Aditya Telange 587ab16725
Remove `.Page` method being used
reference: https://github.com/gohugoio/hugo/releases/tag/v0.92.0
2022-01-13 21:06:21 +05:30
Aditya Telange 0fe857539b
Add `absURL` to `label.icon` and `profileMode.imageUrl`
fixes: #622 #623
2022-01-13 20:35:56 +05:30
Haseop Lee 72abf7440a
Add korean translations (#713) 2022-01-09 11:19:12 +05:30
Saxodwarf c59193fc48
Use hugo 0.87's date formatting feature with time.Format (#555) 2021-12-26 13:52:10 +05:30
Álvaro Salcedo García 4e2558d93c
Add missing spanish translations (#684) 2021-12-24 20:29:27 +05:30
Joe Mooring dbaa17c69a
Remove call to google_news internal template (#668)
See https://github.com/gohugoio/hugo/issues/9172
2021-12-12 23:25:19 +05:30
Jannik Arndt 699fc91f1f
Add icon for xing (#638)
Co-authored-by: Aditya Telange <21258296+adityatelange@users.noreply.github.com>
2021-12-03 22:42:43 +05:30
Jannik Arndt c876864422
Add icon for CV (#639)
Co-authored-by: Aditya Telange <21258296+adityatelange@users.noreply.github.com>
2021-12-03 22:38:54 +05:30
Aditya Telange 386d845782
Prevent `code-copy` btn and `anchored` headings from getting selected 2021-11-20 18:32:25 +05:30
Aditya Telange 0c743b767b
Update README.md
Add pagespeed.web.dev' report
2021-11-16 20:47:47 +05:30
Aditya Telange 3bcafa0be9
Show full date on hovering over it in post-meta 2021-10-30 20:27:01 +05:30
Aditya Telange 76ea33c89c
Check if `menu` exists before using scroll position logic 2021-10-30 20:01:35 +05:30
Aditya Telange b8c7df1ef9
Allow setting cutom meta `theme-color` and `msapplication-TileColor`
fixes: #577

Usage:
  In Site Params:
    Params:
      assets:
        theme_color: color
        msapplication_TileColor: color
2021-10-30 20:01:16 +05:30
Erica Pisani 2c6ae04a02
Social-icons: Add Polywork icon. (#545)
* Social-icons: Add Polywork icon.

fixes #487

Thanks to https://icon-sets.iconify.design/simple-icons/polywork/ and Simple Icons Collaborators (where the SVG came from)

* minor updates to svg

Co-authored-by: Aditya Telange <21258296+adityatelange@users.noreply.github.com>
2021-10-30 19:58:42 +05:30
Aditya Telange 5f1d92493b
Avoid caching search input between navigation 2021-10-30 13:57:22 +05:30
Aditya Telange d81b87938b
Fix `params.fuseOpts` being ignored by Fuse.js
by implementing a map of lower case to camel case parameters

fixes: #556
2021-10-30 13:42:38 +05:30
moonleg 1033afcac2
Add danish translation (#611) 2021-10-29 20:04:03 +05:30
Johnny Metz 60cbb311b7
Fix code line highlighting (#575) 2021-10-22 20:19:34 +05:30
Aditya Telange 170e2c5b3f
Use specified min Hugo version (0.83.0) to build gh-pages demo 2021-10-22 20:07:07 +05:30
Aditya Telange baa0a71478
Use specified min Hugo version (0.83.0) to build demo 2021-10-22 20:03:03 +05:30
Aditya Telange 4873bd2767
Bump minimum Hugo version to `0.83.0` 2021-10-22 20:01:02 +05:30
Daniel F. Dickinson 10141e278e
Add webp to processable formats (#540)
* Add webp format only if using Hugo extended

This keeps PaperMod from having a hard dependency on Hugo extended.
2021-10-22 19:59:36 +05:30
nikaera 38891b9062
Add `showCanonicalLink` to markdown metadata (#428)
If an article has a `canonicalUrl` set, Originally published at `<hostname>` will be displayed at the top of the article by setting `showCanonicalLink` to true. 

Usage =>
  In front-matter:
    canonicalUrl: "<URL>"
    showCanonicalLink: true
2021-10-22 19:52:45 +05:30
Francesco Scuccimarri a57cb762c3
Add remaining Italian translations (#593) 2021-10-20 19:48:14 +05:30
Roj Serbest b7771de64c
Add Northern and Central Kurdish translations (#567)
* Add Northern and Central Kurdish translations

* Fix the cases in `prev_page` and `next_page`

* Fix typo
2021-10-03 18:30:45 +05:30
Pupu 56af5749b5
add zh-tw.yaml (#578)
add Chinese (Traditional) translations
2021-10-03 18:29:43 +05:30
Aditya Telange 7c930ee4ea
Converts colour values from `rgba`/`hex` to `rgb` (#560)
- Except for code-copy btn
- Emojis were affected by theme opacity values, fixes: #557
2021-09-20 21:08:44 +05:30
drizzle 8c2f997ab3
collapse shortcode content can write formative code and change line (#561) 2021-09-17 18:41:23 +05:30
Aditya Telange 4e9b04784b
Move `noscript` elements to head
- Should fix search engines picking up elements inside noscript
2021-09-11 11:09:01 +05:30
Clément Joly 8021be2ddb
Add svg icon for ycombinator (#535)
Co-authored-by: Aditya Telange <21258296+adityatelange@users.noreply.github.com>
2021-09-05 18:28:17 +05:30
Aditya Telange 97b373d9ee
Fix irregular spacing in seach title and svg icon 2021-09-05 18:22:39 +05:30
Aditya Telange c437ee1b62
Add `placeholder` param to let users customize
placeholder in search input box
2021-09-05 18:22:24 +05:30
Daniel F. Dickinson 8456ad83ae
Fix button not allowed inside anchor in footer - HTML validator complaint (#551)
Move attributes to anchor and remove not required span (which was used
place of a button which was against HTML spec).
2021-09-05 11:54:00 +05:30
Aditya Telange d76bc91ed0
Reduce Cognitive Complexity of fastsearch.js (#554) 2021-09-04 15:44:22 +05:30
Aditya Telange 42a23c96e2
Allow customizing Social-Media Share buttons
Usage (site as well as fron-matter) =>
    - `ShareButtons: ["linkedin", "twitter"]`
    - must be a list `[]`

closes: #431
2021-09-04 13:10:35 +05:30
Aditya Telange 7072a79f71
Refine `[draft]` tag display 2021-09-04 12:03:12 +05:30
Daniel F. Dickinson 9a20b2e54c
Fix div not allowed in summary element in ToC (html validator complaint) (#552) 2021-09-03 18:57:36 +05:30
Aditya Telange 5bc9c5a73b
Allow emabling/disabling responsiveImages per page #518 2021-09-02 20:54:50 +05:30
Aditya Telange 2aad433ae5
Fix title(entry-header) line height in regular mode
fixes: #527
2021-09-02 20:41:54 +05:30
Aditya Telange 7ea01a0ab2
Allow hiding `ShowCodeCopyButtons` per page
closes: #548
2021-09-02 20:22:08 +05:30
Aditya Telange 3442d5cb52
Allow hiding copyright/footer text
closes: #543
2021-09-02 20:19:52 +05:30
Aditya Telange b4393b3d6e
Add `post-content` only if it exists 2021-09-02 13:43:08 +05:30
Aditya Telange 162d80071f
Allow adding markdown description on list pages 2021-09-02 13:38:55 +05:30
Aditya Telange bc99ae777d
Allow adding `Content` on list pages 2021-09-02 13:33:47 +05:30
Aditya Telange 0eac254d58
Enable `summary` in Section pages 2021-09-02 13:26:05 +05:30
Aditya Telange ee81fe77ad
Update PULL_REQUEST_TEMPLATE.md
Add: I have verified that the code works as described/as intended.
2021-09-01 18:54:12 +05:30
Aditya Telange caa2240f12
Add missing `[draft]` tag on archive page 2021-08-30 15:22:22 +05:30
Aditya Telange 6ed6b7aac8
Refactor svgs 2021-08-27 23:17:38 +05:30
Aditya Telange f70debb55a
Add svg icon for googlescholar
source: https://simpleicons.org/?q=googlescholar
2021-08-27 23:16:44 +05:30
Aditya Telange da1de88886
Add svg icon for researchgate
source: https://simpleicons.org/?q=researchgate
2021-08-27 23:10:43 +05:30
Clément Joly e5ba0272de
Never display the ToC when it would be empty (#532) 2021-08-27 22:59:50 +05:30
Pikhosh 4970e61c7b
Update fa translations fa.yaml (#534) 2021-08-25 22:28:59 +05:30
Ian Grünig dcbe6277bb
Add width and height attributes to cover images (#519)
- Ensures that the browser can allocate the correct amount of space in the document while the image is loading.
- Reduces CLS #499
2021-08-22 11:45:28 +05:30
Aditya Telange 1214963760
Update README 2021-08-18 20:39:38 +05:30
Kevin Decherf 7d67d64bb7 Add social icon for Server Fault
Source: https://simpleicons.org

Signed-off-by: Kevin Decherf <kevin@kdecherf.com>
2021-08-14 19:22:54 +05:30
Kevin Decherf 1458d8de67 Add social icon for Matrix
Source: https://simpleicons.org

Fixes #450

Signed-off-by: Kevin Decherf <kevin@kdecherf.com>
2021-08-14 19:22:54 +05:30
Kevin Decherf e44cef81c6 Add social icon for Liberapay
Source: https://en.liberapay.com/about/logos

Fixes #483

Signed-off-by: Kevin Decherf <kevin@kdecherf.com>
2021-08-14 19:22:54 +05:30
Kevin Decherf 0c4ec163a6 Add social icon for Flickr
Source: https://simpleicons.org

Fixes #449

Signed-off-by: Kevin Decherf <kevin@kdecherf.com>
2021-08-14 19:22:54 +05:30
Daniel F. Dickinson a3ad238f78
Fix profileMode imageUrl preloaded on every page (#495)
Instead we now only preload on the home page.
Closes #494

Signed-off-by: Daniel F. Dickinson <20735818+danielfdickinson@users.noreply.github.com>
2021-08-10 19:52:47 +05:30
Daniel H 81fcd8f9d4
Remove extraneous space in toc.html (#488)
Fixes errors in lower version of Hugo
2021-08-03 10:38:23 +05:30
Aditya Telange 747e2bb760
fix typo in PULL_REQUEST_TEMPLATE 2021-08-02 16:20:14 +05:30
Ayon Khan 191c16b0c8
Update Bengali (bn) translations (#482)
* Add missing Bengali translations
2021-08-02 16:18:27 +05:30
Aditya Telange 129b5bd063 Fix image margin too close to text 2021-08-02 16:14:40 +05:30
Orwill Q. Song 664299cc7c
Update Chinese translation zh.yaml (#461) 2021-07-07 16:47:50 +05:30
koenr 00ddeb421a
Add Dutch translation nl.yaml (#460) 2021-07-07 16:46:15 +05:30
Aditya Telange 09accb9566
Update README.md
Update Hugo themes URL
2021-07-04 23:23:40 +05:30
Sohel Ahmed Jony f9b796d168
Add bn.yaml Bengali Translation (#433) 2021-07-03 11:47:49 +05:30
Aditya Telange fc87fc3a29
Add option to show all pages in archive
usage =>
    In site config
    `Params.ShowAllPagesInArchive: true`
2021-06-17 16:36:56 +05:30
madjack ae4bf201d1
i18n: complete French translations (#404) 2021-06-12 12:38:30 +05:30
Aditya Telange 5c26fda276
Add `pre` and `post` menu params
so that icons can be added via external scripts (ex. fontawesome)

fixes: #420

ref: https://gohugo.io/content-management/menus/#params
2021-06-11 19:07:04 +05:30
Aditya Telange d35056c664
Better way of centering profile mode 2021-06-11 18:34:18 +05:30
Aditya Telange 726894ba29
Fix extra padding in footer 70px -> 60px
- because of var(--gap) decrease
- calc 10px less for mobile padding (24px - 14px = 10px)
2021-06-11 17:58:36 +05:30
Cameron Sinko 6b55df1089
Add social icon for spotify (#430) 2021-06-11 17:13:45 +05:30
André Brandão b868da3d3c
Add social icon for goodreads (#410)
Credits: https://simpleicons.org/?q=goodreads
2021-06-11 17:11:41 +05:30
Lexip 84c30474ca
Add social icon for XDA Developers (#409)
Icon Credits: https://simpleicons.org/?q=xda
2021-06-11 17:09:17 +05:30
Aditya Telange df544469c9
Apply prettier to css 2021-06-11 13:34:55 +05:30
Kian Kasad 87fbe01124
Add missing semicolons in CSS files (#408)
Many of the CSS files had no semicolon after the last rule in a block,
which is proper syntax, but it's annoying when adding more rules. Since
omitting the semicolons doesn't really have a benefit, I've decided to
add them.
2021-06-11 13:29:56 +05:30
Lucas Eduardo 537ec0038f
Fix post_meta/reading_time (#427) 2021-06-11 11:49:30 +05:30
Aditya Telange d2c4270bb2
Move PULL_REQUEST_TEMPLATE
so that github detects it
2021-06-11 11:37:24 +05:30
Aditya Telange da69dda48c
Allow disabling anchored headings
Usage =>
For site-wide:
    Params.disableAnchoredHeadings: true

For front-matter:
    disableAnchoredHeadings: true
2021-06-10 23:10:40 +05:30
Aditya Telange 378b81cb36
Use default code font-family 2021-06-10 22:49:39 +05:30
Jürgen Gmach 63ec83fda4
fix typos in README.md (#415) 2021-06-10 18:45:30 +05:30
Aditya Telange 573e673efa
Use `content:encoded` in Rss feeds
when using ShowFullTextinRSS
2021-05-02 11:29:31 +05:30
Aditya Telange 0e3f44ff17
Use `title` instead of `humanize`
- https://gohugo.io/functions/title/
2021-05-01 22:13:54 +05:30
Jannik Arndt 167ca42ce3
Fix xml+rss link header (#393) 2021-05-01 21:25:26 +05:30
Aditya Telange a86abf5994
Preload `profileMode image` and `label icon`
before they are discovered in HTML
2021-05-01 11:57:59 +05:30
Aditya Telange 24e5d82ecb
Update hugo internal templates
Remove .Site.Authors from embedded templates

f6745ad358
2021-05-01 11:32:45 +05:30
Aditya Telange 20b91ad2aa
Use less space in footer for 'Powered by' strings;
Don't break the 'Powered by' string in between
2021-05-01 11:32:11 +05:30
Aditya Telange 0c64647138
Add option to show Full Text content in RSS feeds
closes: #372

usageIn site Params =>
    ShowFullTextinRSS: true
2021-04-29 19:38:08 +05:30
Aditya Telange 8357d2b1ff
Update github templates for Issues and PRs 2021-04-29 19:11:38 +05:30
Aditya Telange 43e1648b3e
Improve scripts for menu-scroll
- also fixes menu-scroll-position not working in search page
2021-04-29 19:02:59 +05:30
Krzysztof Szpieg 2f409920e1
Add pl.yaml Polish Translation (#387) 2021-04-29 15:45:54 +05:30
Aditya Telange 3a8df7888e
Don't enable CodeCopyButtons by default
Change in var name
disableCodeCopy -> ShowCodeCopyButtons
2021-04-25 05:30:00 +05:30
Aditya Telange 10745dd537
Add margin below figure
- adds space below when using figure shortcode

Fixes: #377
2021-04-24 09:36:27 +05:30
Aditya Telange fb0393fa12
Update github templates for Issues and PRs 2021-04-21 21:10:02 +05:30
Khoschuluu Khuderchuluu ccbe179033
Add Mongolian translations mn.yaml (#375) 2021-04-21 13:50:44 +05:30
Ahmet Türkmen 4e6eebe318
add Turkish translation tr.yaml (#374) 2021-04-21 09:47:21 +05:30
No Coffee No Life 87fd91ed6a
Add Vietnamese translations vi.yaml (#370) 2021-04-20 15:25:12 +05:30
Geeqla d136063229
Add custom alt title in Multilingual Mode + Add fallback based on LanguageName with emojify (#364) 2021-04-17 10:25:04 +05:30
Aditya Telange 98c17559e9
Add checks for adding the copy button in code-blocks
- adds checks to put copy button for code
 inside table and highlight code block

- Fixes #363
2021-04-16 10:00:47 +05:30
Cody Brownstein c3634e6ccd
Join lines in head for hljs assets (#360)
Fixes errors in lower hugo versions

Error: add site dependencies: load resources: loading templates: "site/themes/hugo-PaperMod/layouts/partials/head.html:79:1": parse failed: template: partials/head.html:79: unexpected unclosed action in command
2021-04-16 09:53:18 +05:30
Cody Brownstein a015ec2efc
Rename file eo.yml -> eo.yaml (#359)
Error: add site dependencies: load resources: loading translations: "site/themes/hugo-PaperMod/i18n/eo.yml:1:1": failed to load translations: no unmarshaler registered for yml
2021-04-15 11:15:40 +05:30
1000283 0430a98e74
Add translations for Esperanto eo.yml (#350) 2021-04-15 00:44:09 +05:30
Geeqla c51e027390
Update ru.yaml Russian translations (#357) 2021-04-14 21:01:40 +05:30
Geeqla 791999df38
Add uk.yaml Ukrainian translation (#356) 2021-04-14 18:41:44 +05:30
Achim Blanarsch 8c313af0f3
Add missing spacing between search title and icon (#351) 2021-04-13 12:53:41 +05:30
Aditya Telange 1627fe7d7a
Update README.md
README is always incomplete 

fixes: #355
2021-04-13 12:49:33 +05:30
Aditya Telange bbb35cb6d5
Update README.md
Update mockup image

Thanks to screely.com and screenshot.rocks
2021-04-11 17:35:14 +05:30
Aditya Telange 87e9a27630
Update README 2021-04-10 17:57:18 +05:30
Aditya Telange 6c64ad0695
Show Code Copy scripts only on Kind = page 2021-04-10 11:53:23 +05:30
Kian Kasad 17c4da86b5
Add copy button to copy code block contents (#345)
* add buttons to copy code block contents

Adds a clickable "copy" link in the top-right corner of each code block.

If available, uses the navigator.clipboard API. Falls back to selecting
the text and calling document.execCommand('copy') to copy text.

* hides copy button unless mouse is hovering over code block

* change text of copy button when text is copied

* add translation keys for copy button text  `code_copy` and `code_copied`

* To disable use `Params.disableCodeCopy: true` in site config
2021-04-10 11:33:31 +05:30
Aditya Telange f1bc3471a6
Fix focus ghosting in search results O_o 2021-04-10 00:59:24 +05:30
Aditya Telange c255d148d8
Fix results being searched before index building;
refactor resultSet generation to fix duplicate items with large db
2021-04-10 00:58:40 +05:30
Aditya Telange ba48765e2c
Use js.Build to fetch fuseOpts;
also load Search on window load
2021-04-10 00:58:23 +05:30
Aditya Telange b756217126
Add crossorigin="anonymous" also for scripts 2021-04-09 19:41:26 +05:30
Aditya Telange bb7b6f0076
Refactor, move HLJS code from footer to head;
already defered.
2021-04-09 19:38:04 +05:30
Aditya Telange 9d7576bd04
Add crossorigin="anonymous" for links #334 2021-04-09 19:25:05 +05:30
Mohammad Noor Abu Khleif 427053290d
Move post nav links to a partial section (#343) 2021-04-09 14:55:56 +05:30
Aditya Telange 0f4dc88c63
Remove humanize from translation list
so that emojify could work
2021-03-31 11:49:28 +05:30
Aditya Telange 23610de4a0 Update min hugo version to 0.82.0
- for Google Analytics v4 support template
2021-03-31 10:07:07 +05:30
Aditya Telange 55fe10e9d3 Use non-async internal template for Google Analytics v4 2021-03-31 10:07:04 +05:30
Aditya Telange 4878383dd4
Add global keywords for home page
original idea #311
2021-03-31 10:00:31 +05:30
Aditya Telange 196b82645e
Fix Spacing in overall repo 2021-03-30 18:26:43 +05:30
Aditya Telange dae7f2b8a1 Align the svg email icon with others 2021-03-30 16:07:51 +05:30
Aditya Telange 635054cd07 Add hackerone icon from simpleicons
https://simpleicons.org/?q=hackerone
2021-03-30 16:07:51 +05:30
Aditya Telange a60ececdfb Update social icons svg for hackthebox from simpleicons
https://simpleicons.org/?q=hackthebox
2021-03-30 16:07:51 +05:30
Jannik Arndt 6d6fe2c389
Move ToC divs to toc partial (#329)
Allows Overriding of ToC
2021-03-30 16:07:20 +05:30
Aditya Telange fe94d7f347
Revert "Remove trailing and leading slashes off the $url for Breadcrumb gen;"
This reverts commit 0f0e027def.
2021-03-28 20:14:11 +05:30
Syphdias 54744ba694
Fix path in editPost URL for Windows (#333)
`.File.Path` is OS dependant and uses `\` as directory separator. This leads to
cases where posts get the wrong URL, if in a sub folder, e.g.
`content/posts/folder\post.md`.

One idea was to replace `\` with `/` this however breaks valid files (on Unix
systems) which include `\` in the file name.
According to the docs [`path.Join`](layouts/partials/edit_post.html) is OS
unaware and converts to a Unix-like path.

> Note: All path elements on Windows are converted to slash ('/') separators.

PS: It looks like hugo also uses this internally to build URLs.
PPS: Solution was discussed in #278.
2021-03-28 19:39:22 +05:30
Aditya Telange 0f0e027def
Remove trailing and leading slashes off the $url for Breadcrumb gen;
so that no empty values remain in []interface

fixes: #331
2021-03-28 19:25:09 +05:30
Aditya Telange fb4988cfb6
Don't consider page-variable to disable HLJS while generating assets
- may lead to generating multiple bundles
2021-03-28 09:52:14 +05:30
Aditya Telange 0c0c6847e5
Don't include `an-old-hope` when hljs is disabled
- reduces 0.6 kb resources
2021-03-27 21:42:29 +05:30
Aditya Telange 2fea5a1062
add browser-level lazy loading to cover images
amend to c353447
2021-03-27 13:16:10 +05:30
Aditya Telange 009d3a2e1d
Fix logo not being displayed with no title pages
- use a local var to get label text ot site title

fixes: #281
2021-03-27 12:46:43 +05:30
Aditya Telange e503367a1a
[BREAKING] Split-up css into sub-parts (#317)
* Move styles into 3 different locations
- core
- common
- hljs

* Load all stylesheets in proper order
2021-03-27 11:28:55 +05:30
120 changed files with 3282 additions and 1527 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

@ -11,7 +11,7 @@ assignees: ''
## READ BEFORE OPENING ISSUES
Please fill the template below
Please fill the template below
- **DO NOT** ask for instructions.
- Use Discussions section if you need help
- See project wiki https://github.com/adityatelange/hugo-PaperMod/wiki
@ -25,12 +25,12 @@ Please fill the template below
- Device/Os: [e.g. Android 10]
- Type: [e.g. Desktop/Mobile]
- Browser and version [e.g. Chrome 86.0]:
- Hugo Version [ >=0.74 expected]:
- Theme Version [e.g. v4.0, master, or commit-id ]:
- Browser and version [e.g. Chrome 86.0]:
- Hugo Version [ >=0.112.4 expected]:
- Theme Version [e.g. v4.0, master, or commit-id ]:
**Steps to reproduce the behavior:**
<!--
<!--
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
@ -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. -->

5
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: PaperMod Discussions
url: https://github.com/adityatelange/hugo-PaperMod/discussions
about: Please ask and answer questions/doubts here, do not open an issue for questions.

View File

@ -0,0 +1,7 @@
---
name: New Blank Issue
about: Anything other than bug report
title: ""
labels: ""
assignees: ""
---

44
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,44 @@
<!--
## READ BEFORE OPENING A PR
Thank you for contributing to hugo-PaperMod!
Please fill out the following questions to make it easier for us to review your
changes. You do not need to check all the boxes below.
**NOTE**: PaperMod does not have any external dependencies fetched from 3rd party
CDN servers. However we do have custom Head/Footer extender templates which you can use
to add those to your website.
https://github.com/adityatelange/hugo-PaperMod/wiki/FAQs#custom-head--footer
-->
**What does this PR change? What problem does it solve?**
<!--
Describe the changes and their purpose here, as detailed as and if needed.
Please do not add 2 unrelated changes in a single PR as it is difficult to track/revert those in future.
-->
**Was the change discussed in an issue or in the Discussions before?**
<!--
Link issues and relevant Discussions posts here.
If this PR resolves an issue on GitHub, use "Closes #1234" so that the issue
is closed automatically when this PR is merged.
-->
## PR Checklist
- [ ] This change adds/updates translations and I have used the [template present here](https://github.com/adityatelange/hugo-PaperMod/wiki/Translations#want-to-add-your-language-).
- [ ] I have enabled [maintainer edits for this PR](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/allowing-changes-to-a-pull-request-branch-created-from-a-fork).
- [ ] I have verified that the code works as described/as intended.
- [ ] This change adds a Social Icon which has a permissive license to use it.
- [ ] This change **does not** include any CDN resources/links.
- [ ] This change **does not** include any unrelated scripts such as bash and python scripts.
- [ ] This change updates the overridden internal templates from HUGO's repository.

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

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: 'latest'
- 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: 'latest'
- 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

106
README.md
View File

@ -1,87 +1,41 @@
# PaperMod | [Demo](https://adityatelange.github.io/hugo-PaperMod/)
☄️ Fast | ☁️ Fluent | 🌙 Smooth | 📱 Responsive
Hugo PaperMod is a theme based on [hugo-paper](https://github.com/nanxiaobei/hugo-paper).
The goal of this project is add more Features and customization to the og theme.
The [demo site](https://adityatelange.github.io/hugo-PaperMod/) includes a lot of documentation about Installation, Features with few more stuff. Make sure you visit it, to get the awesome hands-on experience and get known about the features ...
ExampleSite can be found here: [exampleSite](https://github.com/adityatelange/hugo-PaperMod/tree/exampleSite). Demo is built up with exampleSite as source.
![Build GH-Pages](https://github.com/adityatelange/hugo-PaperMod/workflows/Build%20GH-Pages/badge.svg)
![GitHub](https://img.shields.io/github/license/adityatelange/hugo-PaperMod)
[![hugo-papermod](https://img.shields.io/badge/Hugo--Themes-@PaperMod-blue)](https://themes.gohugo.io/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 width=600px src="https://raw.githubusercontent.com/adityatelange/hugo-PaperMod/exampleSite/content/posts/papermod/papermod-features/images/homeinfo.jpg" alt="HomeInfo" /></kbd>
<kbd><img width=153px src="https://i.ibb.co/LNgGcrt/mobileview.png" alt="HomeInfo" /></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 an original theme for [Hugo](https://gohugo.io/) called [PaperMod](https://github.com/adityatelange/hugo-PaperMod) (made by adityatelange). 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 post.
- Menu location indicator.
- Multilingual support. (with language selector)
- Taxonomies
- Cover image for each post (with Responsive image support).
- Light/Dark theme (automatic theme switch a/c to browser theme and theme-switch button).
- SEO Friendly.
- Muliple Author support.
- Search Page with Fuse.js
- Other Posts suggestion below a post
- BreadCrumb Navigation
- No webpack, nodejs and other depedencies required to edit the theme.
**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)**
---
## [LightHouse Report (100% ?)](https://lighthouse-dot-webdotdevsite.appspot.com//lh/html?url=https%3A%2F%2Fadityatelange.github.io%2Fhugo-PaperMod%2F)
---
## Special Thanks 🌟
- [**Highlight.js**](https://github.com/highlightjs/highlight.js)
- [**Fuse.js**](https://github.com/krisk/fuse)
- [**Feather Icons**](https://github.com/feathericons/feather)
- **All Contributors and Supporters**
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

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

@ -7,5 +7,5 @@
justify-content: center;
height: 80%;
font-size: 160px;
font-weight: 700
font-weight: 700;
}

View File

@ -1,44 +1,44 @@
.archive-posts {
width: 100%;
font-size: 16px
font-size: 16px;
}
.archive-year {
margin-top: 40px
margin-top: 40px;
}
.archive-year:not(:last-of-type) {
border-bottom: 2px solid var(--border)
border-bottom: 2px solid var(--border);
}
.archive-month {
display: flex;
align-items: flex-start;
padding: 10px 0
padding: 10px 0;
}
.archive-month-header {
margin: 25px 0;
width: 200px
width: 200px;
}
.archive-month:not(:last-of-type) {
border-bottom: 1px solid var(--border)
border-bottom: 1px solid var(--border);
}
.archive-entry {
position: relative;
padding: 5px;
margin: 10px 0
margin: 10px 0;
}
.archive-entry-title {
margin: 5px 0;
font-weight: 400
font-weight: 400;
}
.archive-count,
.archive-meta {
color: var(--secondary);
font-size: 14px
font-size: 14px;
}

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

@ -1,7 +1,7 @@
.footer,
.top-link {
font-size: 12px;
color: var(--secondary)
color: var(--secondary);
}
.footer {
@ -9,21 +9,25 @@
margin: auto;
padding: calc((var(--footer-height) - var(--gap)) / 2) var(--gap);
text-align: center;
line-height: 24px
line-height: 24px;
}
.footer span {
margin-inline-start: 1px;
margin-inline-end: 1px
margin-inline-end: 1px;
}
.footer span:last-child {
white-space: nowrap;
}
.footer a {
color: inherit;
border-bottom: 1px solid var(--secondary)
border-bottom: 1px solid var(--secondary);
}
.footer a:hover {
border-bottom: 1px solid var(--primary)
border-bottom: 1px solid var(--primary);
}
.top-link {
@ -37,7 +41,7 @@
height: 42px;
padding: 12px;
border-radius: 64px;
transition: visibility .5s, opacity .8s linear
transition: visibility 0.5s, opacity 0.8s linear;
}
.top-link,
@ -47,10 +51,10 @@
.footer a:hover,
.top-link:hover {
color: var(--primary)
color: var(--primary);
}
.top-link:focus,
#theme-toggle:focus {
outline: 0
outline: 0;
}

View File

@ -0,0 +1,182 @@
.nav {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
max-width: calc(var(--nav-width) + var(--gap) * 2);
margin-inline-start: auto;
margin-inline-end: auto;
line-height: var(--header-height);
}
.nav a {
display: block;
}
.logo,
#menu {
display: flex;
margin: auto var(--gap);
}
.logo {
flex-wrap: inherit;
}
.logo a {
font-size: 24px;
font-weight: 700;
}
.logo a img, .logo a svg {
display: inline;
vertical-align: middle;
pointer-events: none;
transform: translate(0, -10%);
border-radius: 6px;
margin-inline-end: 8px;
}
button#theme-toggle {
font-size: 26px;
margin: auto 4px;
}
body.dark #moon {
vertical-align: middle;
display: none;
}
body:not(.dark) #sun {
display: none;
}
#menu {
list-style: none;
word-break: keep-all;
overflow-x: auto;
white-space: nowrap;
}
#menu li + li {
margin-inline-start: var(--gap);
}
#hamburger-input {
display: none;
}
#hamburger-menu {
display: none;
width: 18px;
height: 18px;
margin: auto;
margin-right: 13px;
margin-left: 13px;
background: linear-gradient(
var(--primary), var(--primary) 20%,
#ffffff00 20%, #ffffff00 40%,
var(--primary) 40%, var(--primary) 60%,
#ffffff00 60%, #ffffff00 80%,
var(--primary) 80%, var(--primary) 100%
);
z-index: 10001;
cursor: pointer;
}
@media screen and (max-width: 900px) {
#menu {
display: none;
}
#hamburger-menu {
display: inline;
}
#hamburger-input:checked ~ #hamburger-menu {
background: none;
}
#hamburger-input:checked ~ #hamburger-menu:after {
content: "\00d7";
position: fixed;
font-size: 28px;
line-height: 0;
top: 28px;
}
#hamburger-input:checked ~ .overlay {
visibility: visible;
}
#hamburger-input:checked ~ #menu {
display: block;
width: 80%;
margin: auto;
position: fixed;
top: 50%;
left: 50%;
margin-right: -50%;
transform: translate(-50%, -50%);
z-index: 10002;
}
#menu li {
text-align: center;
}
#menu li + li {
margin-inline-start: 0;
}
}
.overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
visibility: hidden;
overflow: hidden;
background: var(--theme);
z-index: 10000;
}
#menu a {
font-size: 16px;
}
#menu .active {
font-weight: 500;
border-bottom: 2px solid currentColor;
}
.lang-switch li,
.lang-switch ul,
.logo-switches {
display: inline-flex;
margin: auto 4px;
}
.lang-switch {
display: flex;
flex-wrap: inherit;
}
.lang-switch a {
margin: auto 3px;
font-size: 16px;
font-weight: 500;
}
.logo-switches {
flex-wrap: inherit;
}
#progressBar {
--scrollAmount: 0%;
width: var(--scrollAmount);
height: 3px;
background-color: #1e8cdb;
position: fixed;
z-index: 9999;
}

View File

@ -0,0 +1,66 @@
.main {
position: relative;
min-height: calc(100vh - var(--header-height) - var(--footer-height));
max-width: calc(var(--main-width) + var(--gap) * 2);
margin: auto;
padding: var(--gap);
}
.page-header h1 {
font-size: 40px;
}
.pagination {
display: flex;
}
.pagination a {
color: var(--theme);
font-size: 13px;
line-height: 36px;
background: var(--primary);
border-radius: calc(36px / 2);
padding: 0 16px;
}
.pagination .next {
margin-inline-start: auto;
}
.social-icons a {
display: inline-flex;
padding: 10px;
}
.social-icons a svg {
height: 26px;
width: 26px;
}
code {
direction: ltr;
}
div.highlight,
pre {
position: relative;
}
.copy-code {
display: none;
position: absolute;
top: 4px;
right: 4px;
color: rgba(255, 255, 255, 0.8);
background: rgba(78, 78, 78, 0.8);
border-radius: var(--radius);
padding: 0 5px;
font-size: 14px;
user-select: none;
}
div.highlight:hover .copy-code,
pre:hover .copy-code {
display: block;
}

View File

@ -3,34 +3,34 @@
display: flex;
flex-direction: column;
justify-content: center;
min-height: 320px;
margin: var(--gap) 0 calc(var(--gap) * 2) 0
min-height: 220px;
margin: var(--gap) 0 calc(var(--gap) * 2) 0;
}
.first-entry .entry-header {
overflow: hidden;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3
-webkit-line-clamp: 3;
}
.first-entry .entry-header h1 {
font-size: 34px;
line-height: 1.3
line-height: 1.4;
}
.first-entry .entry-content {
margin: 14px 0;
font-size: 16px;
-webkit-line-clamp: 3
-webkit-line-clamp: 3;
}
.first-entry .entry-footer {
font-size: 14px
font-size: 14px;
}
.home-info .entry-content {
-webkit-line-clamp: unset
-webkit-line-clamp: unset;
}
.post-entry {
@ -39,20 +39,21 @@
padding: var(--gap);
background: var(--entry);
border-radius: var(--radius);
transition: transform .1s;
transition: transform 0.1s;
border: 1px solid var(--border);
}
.post-entry:active {
transform: scale(.96)
transform: scale(0.96);
}
.tag-entry .entry-cover {
display: none
display: none;
}
.entry-header h2 {
font-size: 24px
font-size: 24px;
line-height: 1.3;
}
.entry-content {
@ -63,12 +64,12 @@
overflow: hidden;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2
-webkit-line-clamp: 2;
}
.entry-footer {
color: var(--secondary);
font-size: 13px
font-size: 13px;
}
.entry-link {
@ -76,31 +77,32 @@
left: 0;
right: 0;
top: 0;
bottom: 0
bottom: 0;
}
.entry-cover,
.entry-isdraft {
font-size: 14px;
color: var(--secondary)
.entry-hint {
color: var(--secondary);
}
.entry-isdraft {
display: inline
.entry-hint-parent {
display: flex;
justify-content: space-between;
}
.entry-cover {
font-size: 14px;
margin-bottom: var(--gap);
text-align: center
text-align: center;
}
.entry-cover img {
border-radius: var(--radius);
pointer-events: none;
width: 100%
width: 100%;
height: auto;
}
.entry-cover a {
color: var(--secondary);
box-shadow: 0 1px 0 var(--primary)
box-shadow: 0 1px 0 var(--primary);
}

View File

@ -1,11 +1,11 @@
.page-header,
.post-header {
margin: 24px auto var(--content-gap) auto
margin: 24px auto var(--content-gap) auto;
}
.post-title {
margin-bottom: 2px;
font-size: 40px
font-size: 40px;
}
.post-description {
@ -18,14 +18,14 @@
color: var(--secondary);
font-size: 14px;
display: flex;
flex-wrap: wrap
flex-wrap: wrap;
}
.post-meta .i18n_list li {
display: inline-flex;
list-style: none;
margin: auto 3px;
box-shadow: 0 1px 0 var(--secondary)
box-shadow: 0 1px 0 var(--secondary);
}
.breadcrumbs a {
@ -33,228 +33,230 @@
}
.post-content {
color: var(--content)
color: var(--content);
}
.post-content h3,
.post-content h4,
.post-content h5,
.post-content h6 {
margin: 24px 0 16px
margin: 24px 0 16px;
}
.post-content h1 {
margin: 40px auto 32px;
font-size: 40px
font-size: 40px;
}
.post-content h2 {
margin: 32px auto 24px;
font-size: 32px
font-size: 32px;
}
.post-content h3 {
font-size: 24px
font-size: 24px;
}
.post-content h4 {
font-size: 16px
font-size: 16px;
}
.post-content h5 {
font-size: 14px
font-size: 14px;
}
.post-content h6 {
font-size: 12px
font-size: 12px;
}
.post-content a,
.toc a:hover {
box-shadow: 0 1px 0
border-bottom: 1px solid var(--primary);
}
.post-content a code {
margin: auto 0;
border-radius: 0;
box-shadow: 0 -1px 0 var(--primary) inset
box-shadow: 0 -1px 0 var(--primary) inset;
}
.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,
.post-content ol,
.post-content p,
.post-content figure,
.post-content ul {
margin-bottom: var(--content-gap)
margin-bottom: var(--content-gap);
}
.post-content ol,
.post-content ul {
padding-inline-start: 20px
padding-inline-start: 20px;
}
.post-content li {
margin-top: 5px
margin-top: 5px;
}
.post-content li p {
margin-bottom: 0
margin-bottom: 0;
}
.post-content dl {
display: flex;
flex-wrap: wrap;
margin: 0
margin: 0;
}
.post-content dt {
width: 25%;
font-weight: 700
font-weight: 700;
}
.post-content dd {
width: 75%;
margin-inline-start: 0;
padding-inline-start: 10px
padding-inline-start: 10px;
}
.post-content dd~dd,
.post-content dt~dt {
margin-top: 10px
.post-content dd ~ dd,
.post-content dt ~ dt {
margin-top: 10px;
}
.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)
border-bottom: 1px solid var(--border);
}
.post-content table th {
font-size: 14px;
text-align: start
text-align: start;
}
.post-content table:not(.highlighttable) td code:only-child {
margin: auto 0
margin: auto 0;
}
.post-content .highlight table {
border-radius: var(--radius)
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)
border-radius: var(--radius);
direction: ltr;
}
.post-content li>.highlight {
margin-inline-end: 0
.post-content li > .highlight {
margin-inline-end: 0;
}
.post-content ul pre {
margin-inline-start: calc(var(--gap) * -2)
margin-inline-start: calc(var(--gap) * -2);
}
.post-content .highlight pre {
margin: 0
margin: 0;
}
.post-content .highlighttable {
table-layout: fixed
table-layout: fixed;
}
.post-content .highlighttable td:first-child {
width: 40px
width: 40px;
}
.post-content .highlighttable td .linenodiv {
padding-inline-end: 0 !important
padding-inline-end: 0 !important;
}
.post-content .highlighttable td .highlight,
.post-content .highlighttable td .linenodiv pre {
margin-bottom: 0
margin-bottom: 0;
}
.post-content .highlighttable td .highlight pre code::-webkit-scrollbar {
display: none
display: none;
}
.post-content .highlight span {
background: 0 0 !important
/* 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-family: Menlo, Monaco, 'Courier New', Courier, monospace;
font-size: .78em;
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: rgba(255, 255, 255, .8);
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;
border-inline-start: 3px solid var(--primary)
border-inline-start: 3px solid var(--primary);
}
.post-content hr {
margin: 30px 0;
height: 2px;
background: var(--tertiary);
border-top: 0;
border-bottom: 0
border: 0;
}
.post-content iframe {
max-width: 100%
max-width: 100%;
}
.post-content img {
border-radius: 4px
border-radius: 4px;
margin: 1rem 0;
}
.post-content img[src*='#center'] {
margin: auto
.post-content img[src*="#center"] {
margin: 1rem auto;
}
.post-content figure.align-center {
text-align: center;
}
.post-content figure>figcaption {
.post-content figure > figcaption {
color: var(--primary);
font-size: 16px;
font-weight: bold;
margin: 8px 0 16px;
}
.post-content figure>figcaption>p {
.post-content figure > figcaption > p {
color: var(--secondary);
font-size: 14px;
font-weight: normal;
@ -263,9 +265,21 @@
.toc {
margin: 0 2px 40px 2px;
border: 1px solid var(--border);
background: var(--code-bg);
background: var(--tertiary);
border-radius: var(--radius);
padding: .4em
padding: 0.4em;
}
@media screen and (min-width: 1400px) {
.toc.side {
position: fixed;
right: 30px;
top: 100px;
width: 300px;
font-size: .9em;
max-height: calc(100% - 150px);
overflow: auto;
}
}
.dark .toc {
@ -273,90 +287,77 @@
}
.toc details summary {
cursor: zoom-in;
margin-inline-start: 20px
}
.toc details[open] summary {
cursor: zoom-out
cursor: pointer;
margin-inline-start: 20px;
}
.toc .details {
display: inline;
font-weight: 500
font-weight: 500;
}
.toc .inner {
margin: 0 20px;
padding: 10px 20px
padding: 10px 20px;
}
.toc li ul {
margin-inline-start: var(--gap)
margin-inline-start: var(--gap);
}
.toc summary:focus {
outline: 0
outline: 0;
}
.post-footer {
margin-top: 56px
margin-top: 56px;
}
.post-footer>* {
margin-bottom: 10px;
}
.post-tags {
display: flex;
flex-wrap: wrap;
gap: 10px;
}
.post-tags li {
display: inline-block;
margin-inline-end: 3px;
margin-bottom: 5px
}
.post-tags a,
.share-buttons,
.paginav {
border-radius: var(--radius);
background: var(--code-bg);
border: 1px solid var(--border)
border: 1px solid var(--border);
}
.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
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 .1s
}
.share-buttons svg:active {
transform: scale(.96)
margin-inline-end: 12px;
}
h1:hover .anchor,
@ -365,39 +366,20 @@ 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;
font-weight: 500
}
.post-content :not(table) ::-webkit-scrollbar-thumb {
border: 2px solid var(--hljs-bg);
background: rgba(255, 255, 255, 0.32)
}
.post-content :not(table) ::-webkit-scrollbar-thumb:hover {
background: rgba(255, 255, 255, 0.56)
}
.gist table::-webkit-scrollbar-thumb {
border: 2px solid rgb(255, 255, 255);
background: rgba(0, 0, 0, 0.32)
}
.gist table::-webkit-scrollbar-thumb:hover {
background: rgba(0, 0, 0, 0.56)
}
.post-content table::-webkit-scrollbar-thumb {
border-width: 2px;
font-weight: 500;
user-select: none;
}
.paginav {
margin: 10px 0;
display: flex;
line-height: 30px;
border-radius: var(--radius);
background: none;
border: none;
}
.paginav a {
@ -429,4 +411,13 @@ h6:hover .anchor {
[dir="rtl"] .paginav .next {
text-align: left;
}
}
h1>a>svg {
display: inline;
}
img.in-text {
display: inline;
margin: auto;
}

View File

@ -1,32 +1,29 @@
.buttons,
.main .profile {
display: flex;
justify-content: center
justify-content: center;
}
.main .profile {
position: absolute;
left: 0;
right: 0;
align-items: center;
height: 80%;
text-align: center
min-height: calc(100vh - var(--header-height) - var(--footer-height) - (var(--gap) * 2));
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 {
@ -34,13 +31,13 @@
border-radius: var(--radius);
margin: 8px;
padding: 6px;
transition: transform .1s
transition: transform 0.1s;
}
.button-inner {
padding: 0 8px
padding: 0 8px;
}
.button:active {
transform: scale(.96)
transform: scale(0.96);
}

View File

@ -26,8 +26,8 @@
}
#searchResults li:active {
transition: transform .1s;
transform: scale(.98);
transition: transform 0.1s;
transform: scale(0.98);
}
#searchResults a {
@ -40,6 +40,6 @@
}
#searchResults .focus {
transform: scale(.98);
border: 2px solid var(--tertiary)
transform: scale(0.98);
border: 2px solid var(--tertiary);
}

View File

@ -1,7 +1,7 @@
.terms-tags li {
display: inline-block;
margin: 10px;
font-weight: 500
font-weight: 500;
}
.terms-tags a {
@ -9,10 +9,10 @@
padding: 3px 10px;
background: var(--tertiary);
border-radius: 6px;
transition: transform .1s
transition: transform 0.1s;
}
.terms-tags a:active {
background: var(--tertiary);
transform: scale(.96)
transform: scale(0.96);
}

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

@ -1,12 +1,15 @@
*,
::after,
::before {
box-sizing: border-box
box-sizing: border-box;
}
html {
-webkit-tap-highlight-color: transparent;
overflow-y: scroll;
scroll-behavior: smooth;
-webkit-text-size-adjust: 100%;
text-size-adjust: 100%;
}
a,
@ -18,7 +21,7 @@ h3,
h4,
h5,
h6 {
color: var(--primary)
color: var(--primary);
}
body {
@ -26,7 +29,7 @@ body {
font-size: 18px;
line-height: 1.6;
word-break: break-word;
background: var(--theme)
background: var(--theme);
}
article,
@ -40,7 +43,7 @@ main,
nav,
section,
table {
display: block
display: block;
}
h1,
@ -49,7 +52,7 @@ h3,
h4,
h5,
h6 {
line-height: 1.2
line-height: 1.2;
}
h1,
@ -60,21 +63,21 @@ h5,
h6,
p {
margin-top: 0;
margin-bottom: 0
margin-bottom: 0;
}
ul {
padding: 0
padding: 0;
}
a {
text-decoration: none
text-decoration: none;
}
body,
figure,
ul {
margin: 0
margin: 0;
}
table {
@ -82,7 +85,7 @@ table {
border-collapse: collapse;
border-spacing: 0;
overflow-x: auto;
word-break: keep-all
word-break: keep-all;
}
button,
@ -96,43 +99,21 @@ textarea {
input,
textarea {
outline: 0
outline: 0;
}
button,
input[type=button],
input[type=submit] {
cursor: pointer
cursor: pointer;
}
input:-webkit-autofill,
textarea:-webkit-autofill {
box-shadow: 0 0 0 50px var(--theme) inset
box-shadow: 0 0 0 50px var(--theme) inset;
}
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)
max-width: 100%;
}

View File

@ -0,0 +1,36 @@
:root {
--gap: 24px;
--content-gap: 20px;
--nav-width: 1024px;
--main-width: 720px;
--header-height: 60px;
--footer-height: 60px;
--radius: 8px;
--theme: #e2e4f2;
--entry: #efefff;
--primary: rgb(30, 30, 30);
--secondary: rgb(108, 108, 108);
--tertiary: #c3c5d0;
--content: rgb(31, 31, 31);
--code-bg: #e2e4f2;
--border: rgb(238, 238, 238);
}
.dark {
--theme: #1f2125;
--entry: #26282e;
--primary: rgb(218, 218, 219);
--secondary: rgb(155, 156, 157);
--tertiary: #3a3c42;
--content: rgb(196, 196, 197);
--code-bg: rgb(55, 56, 62);
--border: none;
}
.list {
background: var(--code-bg);
}
.dark.list {
background: var(--theme);
}

View File

@ -22,13 +22,10 @@
.archive-year {
margin-top: 20px;
}
}
@media screen and (min-width: 768px) {
/* reset */
::-webkit-scrollbar {
width: 19px;
height: 11px;
/* footer */
.footer {
padding: calc((var(--footer-height) - var(--gap) - 10px) / 2) var(--gap);
}
}
@ -39,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,97 +0,0 @@
.nav {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
max-width: calc(var(--nav-width) + var(--gap) * 2);
margin-inline-start: auto;
margin-inline-end: auto;
line-height: var(--header-height)
}
.nav a {
display: block
}
.logo,
#menu {
display: flex;
margin: auto var(--gap);
}
.logo {
flex-wrap: inherit
}
.logo a {
font-size: 24px;
font-weight: 700;
}
.logo a img {
display: inline;
vertical-align: middle;
pointer-events: none;
transform: translate(0, -10%);
border-radius: 6px;
margin-inline-end: 8px
}
#theme-toggle svg {
height: 18px;
}
button#theme-toggle {
font-size: 26px;
margin: auto 4px
}
body.dark #moon {
vertical-align: middle;
display: none
}
body:not(.dark) #sun {
display: none
}
#menu {
list-style: none;
word-break: keep-all;
overflow-x: auto;
white-space: nowrap
}
#menu li+li {
margin-inline-start: var(--gap)
}
#menu a {
font-size: 16px
}
#menu .active {
font-weight: 500;
border-bottom: 2px solid currentColor
}
.lang-switch li,
.lang-switch ul,
.logo-switches {
display: inline-flex;
margin: auto 4px;
}
.lang-switch {
display: flex;
flex-wrap: inherit
}
.lang-switch a {
margin: auto 3px;
font-size: 16px;
font-weight: 500;
}
.logo-switches {
flex-wrap: inherit
}

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,45 +0,0 @@
.main {
position: relative;
min-height: calc(100vh - var(--header-height) - var(--footer-height));
max-width: calc(var(--main-width) + var(--gap) * 2);
margin: auto;
padding: var(--gap)
}
.page-header h1 {
font-size: 40px
}
.pagination {
display: flex
}
.pagination a {
color: var(--theme);
font-size: 13px;
line-height: 36px;
background: var(--primary);
border-radius: calc(36px / 2);
padding: 0 16px
}
.pagination .next {
margin-inline-start: auto
}
.social-icons {
padding: 12px 0
}
.social-icons a:not(:last-of-type) {
margin-inline-end: 12px
}
.social-icons a svg {
height: 26px;
width: 26px
}
code {
direction: ltr
}

View File

@ -1,38 +0,0 @@
:root {
--gap: 24px;
--content-gap: 20px;
--nav-width: 1024px;
--main-width: 720px;
--header-height: 60px;
--footer-height: 60px;
--radius: 8px;
--theme: #fff;
--entry: #fff;
--primary: rgba(0, 0, 0, 0.88);
--secondary: rgba(0, 0, 0, 0.56);
--tertiary: rgba(0, 0, 0, 0.16);
--content: rgba(0, 0, 0, 0.88);
--hljs-bg: #1c1d21;
--code-bg: #f5f5f5;
--border: #eee;
}
.dark {
--theme: #1d1e20;
--entry: #2e2e33;
--primary: rgba(255, 255, 255, 0.84);
--secondary: rgba(255, 255, 255, 0.56);
--tertiary: rgba(255, 255, 255, 0.16);
--content: rgba(255, 255, 255, 0.74);
--hljs-bg: #2e2e33;
--code-bg: #37383e;
--border: #333;
}
.list {
background: var(--code-bg);
}
.dark.list {
background: var(--theme);
}

View File

@ -1,19 +1,21 @@
var fuse; // holds our search engine
var resList = document.getElementById('searchResults');
var sInput = document.getElementById('searchInput');
var first, last = null
var resultsAvailable = false;
import * as params from '@params';
// load our search index, only executed onload
function loadSearch() {
var xhr = new XMLHttpRequest();
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 () {
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,
@ -24,7 +26,21 @@ function loadSearch() {
'content'
]
};
{{ if . }}options = {{ jsonify . }}{{ end }} // load custom options from .Site.Params.fuseOpts
if (params.fuseOpts) {
options = {
isCaseSensitive: params.fuseOpts.iscasesensitive ?? false,
includeScore: params.fuseOpts.includescore ?? false,
includeMatches: params.fuseOpts.includematches ?? false,
minMatchCharLength: params.fuseOpts.minmatchcharlength ?? 1,
shouldSort: params.fuseOpts.shouldsort ?? true,
findAllMatches: params.fuseOpts.findallmatches ?? false,
keys: params.fuseOpts.keys ?? ['title', 'permalink', 'summary', 'content'],
location: params.fuseOpts.location ?? 0,
threshold: params.fuseOpts.threshold ?? 0.4,
distance: params.fuseOpts.distance ?? 100,
ignoreLocation: params.fuseOpts.ignorelocation ?? true
}
}
fuse = new Fuse(data, options); // build the index from the json file
}
} else {
@ -36,13 +52,18 @@ function loadSearch() {
xhr.send();
}
function itemGen(name, link) {
return `<li class="post-entry"><header class="entry-header">${name}&nbsp;»</header><a href="${link}" aria-label="${name}"></a></li>`
}
function activeToggle() {
document.activeElement.parentElement.classList.toggle("focus")
function activeToggle(ae) {
document.querySelectorAll('.focus').forEach(function (element) {
// rm focus class
element.classList.remove("focus")
});
if (ae) {
ae.focus()
document.activeElement = current_elem = ae;
ae.parentElement.classList.add("focus")
} else {
document.activeElement.parentElement.classList.add("focus")
}
}
function reset() {
@ -55,23 +76,30 @@ function reset() {
sInput.onkeyup = function (e) {
// run a search query (for "term") every time a letter is typed
// in the search box
const 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
for (let item in results) {
resultSet = resultSet + itemGen(results[item].item.title, results[item].item.permalink)
if (fuse) {
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
resList.innerHTML = resultSet;
resultsAvailable = true;
first = resList.firstChild;
last = resList.lastChild;
} else {
resultsAvailable = false;
resList.innerHTML = '';
for (let item in results) {
resultSet += `<li class="post-entry"><header class="entry-header">${results[item].item.title}&nbsp;»</header>` +
`<a href="${results[item].item.permalink}" aria-label="${results[item].item.title}"></a></li>`
}
resList.innerHTML = resultSet;
resultsAvailable = true;
first = resList.firstChild;
last = resList.lastChild;
} else {
resultsAvailable = false;
resList.innerHTML = '';
}
}
}
@ -84,47 +112,41 @@ sInput.addEventListener('search', function (e) {
document.onkeydown = function (e) {
let key = e.key;
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');
}
}
} else if (current_elem) ae = current_elem;
if (key === "ArrowDown" && resultsAvailable && inbox) {
if (key === "Escape") {
reset()
} else if (!resultsAvailable || !inbox) {
return
} else if (key === "ArrowDown") {
e.preventDefault();
if (ae == sInput) {
// if the currently focused element is the search input, focus the <a> of first <li>
activeToggle(); // rm focus class
resList.firstChild.lastChild.focus();
activeToggle(); // add focus class
} else if (ae.parentElement == last) {
activeToggle(resList.firstChild.lastChild);
} else if (ae.parentElement != last) {
// if the currently focused element's parent is last, do nothing
} else {
// otherwise select the next search result
activeToggle(); // rm focus class
ae.parentElement.nextSibling.lastChild.focus();
activeToggle(); // add focus class
activeToggle(ae.parentElement.nextSibling.lastChild);
}
} else if (key === "ArrowUp" && resultsAvailable && inbox) {
} else if (key === "ArrowUp") {
e.preventDefault();
if (ae == sInput) {
// if the currently focused element is input box, do nothing
} else if (ae.parentElement == first) {
if (ae.parentElement == first) {
// if the currently focused element is first item, go to input box
activeToggle(); // rm focus class
sInput.focus();
} else {
activeToggle(sInput);
} else if (ae != sInput) {
// if the currently focused element is input box, do nothing
// otherwise select the previous search result
activeToggle(); // rm focus class
ae.parentElement.previousSibling.lastChild.focus();
activeToggle(); // add focus class
activeToggle(ae.parentElement.previousSibling.lastChild);
}
} else if (key === "ArrowRight" && resultsAvailable && inbox) {
} else if (key === "ArrowRight") {
ae.click(); // click on active link
} else if (key === "Escape") {
reset()
}
}

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: "скапіявана!"

33
i18n/bn.yaml Normal file
View File

@ -0,0 +1,33 @@
- id: prev_page
translation: "পূর্ববর্তী"
- id: next_page
translation: "পরবর্তী"
- id: read_time
translation:
one : "১ মিনিট"
other: "{{ .Count }} মিনিট"
- id: words
translation:
one : "১ টি শব্দ"
other: "{{ .Count }} টি শব্দ"
- id: toc
translation: "সূচিপত্র"
- id: translations
translation: "অনুবাদসমূহ"
- id: home
translation: "হোম"
- id: edit_post
translation: "সম্পাদনা করুন"
- id: code_copy
translation: "কপি করুন"
- id: code_copied
translation: "কপি হয়েছে!"

25
i18n/ckb.yaml Normal file
View File

@ -0,0 +1,25 @@
- id: prev_page
translation: "پەڕەی پێشتر"
- id: next_page
translation: "پەڕەی دواتر"
- id: read_time
translation:
one : "1 خولەک"
other: "{{ .Count }} خولەک"
- id: toc
translation: "پێڕست"
- id: translations
translation: "وەرگێڕانەکان"
- id: home
translation: "ماڵەوە"
- id: code_copy
translation: "لەبەری بگرەوە"
- id: code_copied
translation: "لەبەر گیرایەوە!"

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

28
i18n/da.yaml Normal file
View File

@ -0,0 +1,28 @@
- id: prev_page
translation: "Forrige Side"
- id: next_page
translation: "Næste Side"
- id: read_time
translation:
one: "1 min"
other: "{{ .Count }} min"
- id: toc
translation: "Indholdsfortegnelse"
- id: translations
translation: "Oversættelser"
- id: home
translation: "Start"
- id: edit_post
translation: "Rediger"
- id: code_copy
translation: "kopier"
- id: code_copied
translation: "kopieret!"

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"
@ -17,3 +22,12 @@
- id: home
translation: "Home"
- id: edit_post
translation: "Edit"
- id: code_copy
translation: "copy"
- id: code_copied
translation: "copied!"

25
i18n/eo.yaml Normal file
View File

@ -0,0 +1,25 @@
- id: prev_page
translation: "antaŭa paĝo"
- id: next_page
translation: "sekva paĝo"
- id: read_time
translation:
one : "1 min"
other: "{{ .Count }} min"
- id: toc
translation: "Enhavo"
- id: translations
translation: "tradukoj"
- id: home
translation: "ĉefpaĝo"
- id: code_copy
translation: "kopii"
- id: code_copied
translation: "kopiite!"

View File

@ -1,16 +1,33 @@
- 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"
- id: translations
translation: "Traducciones"
- id: home
translation: "Inicio"
- id: edit_post
translation: "Editar"
- id: code_copy
translation: "copiar"
- id: code_copied
translation: "¡copiado!"

View File

@ -1,16 +1,28 @@
- id: prev_page
translation: "صفحهٔ قبل"
translation: "صفحه قبلی"
- id: next_page
translation: "صفحهٔ بعد"
translation: "صفحه بعدی"
- id: read_time
translation:
one : "1 دقیقه"
one: "۱ دقیقه"
other: "{{ .Count }} دقیقه"
- id: toc
translation: "فهرست مطالب"
- id: translations
translation: "ترجمه‌ها"
translation: "ترجمه ها"
- id: home
translation: "خانه"
- id: edit_post
translation: "ویرایش"
- id: code_copy
translation: "کپی"
- id: code_copied
translation: "کپی شد!"

View File

@ -1,5 +1,33 @@
- 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"
- id: translations
translation: "Traductions"
- id: home
translation: "Accueil"
- id: edit_post
translation: "Modifier"
- id: code_copy
translation: "Copier"
- id: code_copied
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,16 +1,33 @@
- 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"
- id: code_copied
translation: "copiato!"

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

@ -3,3 +3,31 @@
- 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: "복사 완료!"

25
i18n/ku.yaml Normal file
View File

@ -0,0 +1,25 @@
- id: prev_page
translation: "Rûpela Paş"
- id: next_page
translation: "Rûpela Pêş"
- id: read_time
translation:
one : "1 xulek"
other: "{{ .Count }} xulek"
- id: toc
translation: "Pêrist"
- id: translations
translation: "Wergeran"
- id: home
translation: "Xanî"
- id: code_copy
translation: "Jê bigire"
- id: code_copied
translation: "Hat jêgirtin!"

25
i18n/mn.yaml Normal file
View File

@ -0,0 +1,25 @@
- id: prev_page
translation: "Ѳмнѳх"
- id: next_page
translation: "Дараах"
- id: read_time
translation:
one : "1 МИН"
other: "{{ .Count }} МИН"
- id: toc
translation: "Агуулга"
- id: translations
translation: "Орчуулга"
- id: home
translation: "Нүүр"
- id: code_copy
translation: "хуулах"
- id: code_copied
translation: "хуулсан!"

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

33
i18n/nl.yaml Normal file
View File

@ -0,0 +1,33 @@
- id: prev_page
translation: "Vorige"
- id: next_page
translation: "Volgende"
- id: read_time
translation:
one: "1 min"
other: "{{ .Count }} min"
- id: words
translation:
one : "woord"
other: "{{ .Count }} woorden"
- id: toc
translation: "Inhoudsopgave"
- id: translations
translation: "Vertalingen"
- id: home
translation: "Startpagina"
- id: edit_post
translation: "Bewerk"
- id: code_copy
translation: "kopieer"
- id: code_copied
translation: "gekopieerd!"

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

33
i18n/pl.yaml Normal file
View File

@ -0,0 +1,33 @@
- id: prev_page
translation: "Poprzednia"
- id: next_page
translation: "Następna"
- id: read_time
translation:
one: "1 min"
other: "{{ .Count }} min"
- id: words
translation:
one : "słowo"
other: "{{ .Count }} słów"
- id: toc
translation: "Spis treści"
- id: translations
translation: "Tłumaczenia"
- id: home
translation: "Strona Główna"
- id: edit_post
translation: "Edytuj"
- id: code_copy
translation: "Kopiuj"
- id: code_copied
translation: "Skopiowano!"

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

@ -1,14 +1,39 @@
- id: prev_page
translation: 'Предыдущая'
translation: "Предыдущая"
- id: next_page
translation: 'Следующая'
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: 'Оглавление'
translation: "Оглавление"
- id: translations
translation: 'Переводы'
translation: "Переводы"
- id: home
translation: "Главная"
- id: edit_post
translation: "Редактировать"
- id: code_copy
translation: "копировать"
- id: code_copied
translation: "скопировано!"

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

33
i18n/tr.yaml Normal file
View File

@ -0,0 +1,33 @@
- id: prev_page
translation: "Önceki"
- id: next_page
translation: "Sonraki"
- id: read_time
translation:
one : "1 dk"
other: "{{ .Count }} dk"
- id: words
translation:
one : "kelime"
other: "{{ .Count }} kelime"
- id: toc
translation: "İçindekiler"
- id: translations
translation: "Çeviriler"
- id: home
translation: "Anasayfa"
- id: edit_post
translation: "Düzenle"
- id: code_copy
translation: "Kopyala"
- id: code_copied
translation: "Kopyalandı!"

25
i18n/uk.yaml Normal file
View File

@ -0,0 +1,25 @@
- id: prev_page
translation: "Попередня"
- id: next_page
translation: "Наступна"
- id: read_time
translation:
one : "1 хвилина"
other: "{{ .Count }} хвилин"
- id: toc
translation: "Зміст"
- id: translations
translation: "Переклади"
- id: home
translation: "Головна"
- id: code_copy
translation: "копіювати"
- id: code_copied
translation: "скопійовано!"

33
i18n/vi.yaml Normal file
View File

@ -0,0 +1,33 @@
- id: prev_page
translation: "Trang trước"
- id: next_page
translation: "Trang tiếp theo"
- id: read_time
translation:
one: "1 phút"
other: "{{ .Count }} phút"
- id: words
translation:
one: "từ"
other: "{{ .Count }} từ"
- id: toc
translation: "Mục lục"
- id: translations
translation: "Bản dịch"
- id: home
translation: "Trang chủ"
- id: edit_post
translation: "Chỉnh sửa"
- id: code_copy
translation: "Sao chép"
- id: code_copied
translation: "Đã sao chép!"

33
i18n/zh-tw.yaml Normal file
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

@ -9,8 +9,25 @@
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,3 +1,3 @@
{{ define "main" }}
{{- define "main" }}
<div class="not-found">404</div>
{{ end }}{{/* end main */}}
{{- end }}{{/* end main */ -}}

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 }}
@ -10,6 +28,11 @@
</header>
{{- $pages := where site.RegularPages "Type" "in" site.Params.mainSections }}
{{- if site.Params.ShowAllPagesInArchive }}
{{- $pages = site.RegularPages }}
{{- end }}
{{- range $pages.GroupByPublishDate "2006" }}
{{- if ne .Key "0001" }}
<div class="archive-year">
@ -20,11 +43,19 @@
<div class="archive-month">
<h3 class="archive-month-header">{{- .Key }}<sup class="archive-count">&nbsp;&nbsp;{{ len .Pages }}</sup></h3>
<div class="archive-posts">
{{- range .Pages }}
{{- 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 }}
<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" . -}}
@ -40,4 +71,4 @@
{{- end }}
{{- end }}
{{- end }}{{/* end main */}}
{{- end }}{{/* end main */}}

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,16 +13,15 @@
{{- 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">
{{- partialCached "header.html" . .Page}}
{{- partialCached "header.html" . .Page -}}
<main class="main">
{{- block "main" . }}
{{- end }}
{{- block "main" . }}{{ end }}
</main>
{{- partialCached "footer.html" . .Type .Layout .Params }}
{{ partialCached "footer.html" . .Layout .Kind (.Param "hideFooter") (.Param "ShowCodeCopyButtons") -}}
</body>
</html>

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,39 +1,62 @@
{{- 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 }}
{{ .Description | markdownify }}
</div>
{{- end }}
</header>
{{- end }}
{{- if .Content }}
<div class="post-content">
{{- if not (.Param "disableAnchoredHeadings") }}
{{- partial "anchored_headings.html" .Content -}}
{{- else }}{{ .Content }}{{ end }}
</div>
{{- end }}
{{- $pages := union .RegularPages .Sections }}
{{- if .IsHome }}
{{- $pages = where site.RegularPages "Type" "in" site.Params.mainSections }}
{{- end}}
{{- $pages = where $pages "Params.hiddenInHomeList" "!=" "true" }}
{{- end }}
{{ $paginator := .Paginate $pages }}
{{- $paginator := .Paginate $pages }}
{{- if and .IsHome .Site.Params.homeInfoParams (eq $paginator.PageNumber 1) }}
{{- if and .IsHome site.Params.homeInfoParams (eq $paginator.PageNumber 1) }}
{{- partial "home_info.html" . }}
{{- end }}
{{ $term := .Data.Term}}
{{- $term := .Data.Term }}
{{- range $index, $page := $paginator.Pages }}
{{- $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 }}
@ -41,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>
{{ .Title }}
{{- if .Draft }}<div class="entry-isdraft"><sup>&nbsp;&nbsp;[draft]</sup></div>{{- end }}
<h2 class="entry-hint-parent">
{{- .Title }}
{{- 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">
<p>{{ .Summary | plainify | htmlUnescape }}{{- if .Truncated }}...{{- end -}}</p>
</section>
{{- if (ne (.Param "hideSummary") true) }}
<div class="entry-content">
<p>{{ .Summary | plainify | htmlUnescape }}{{ if .Truncated }}...{{ end }}</p>
</div>
{{- end }}
{{- if not (.Param "hideMeta") }}
<footer class="entry-footer">
@ -67,13 +97,25 @@
<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>
{{- end }}
{{end}}{{/* end profileMode */}}
{{- end }}{{/* end profileMode */}}
{{- end }}{{- /* end main */ -}}

View File

@ -1,47 +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">
<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>
</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

@ -1,7 +1,7 @@
{{- define "main" }}
<header class="page-header">
<h1>{{ .Title }}
<h1>{{- (printf "%s&nbsp;" .Title ) | htmlUnescape -}}
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<circle cx="11" cy="11" r="8"></circle>
@ -17,12 +17,16 @@
<div class="post-meta">
{{- partial "translation_list.html" . -}}
</div>
{{- end}}
{{- end }}
</header>
<div id="searchbox">
<input id="searchInput" autofocus placeholder="{{.Title}} ↵" aria-label="search" type="search">
<input id="searchInput" autofocus placeholder="{{ .Params.placeholder | default (printf "%s " .Title) }}"
aria-label="search" type="search" autocomplete="off" maxlength="64">
<ul id="searchResults" aria-label="search results"></ul>
<noscript>
Enable JavaScript to use the search function.
</noscript>
</div>
{{- end }}{{/* end main */}}

View File

@ -2,10 +2,17 @@
<article class="post-single">
<header class="post-header">
{{- partial "breadcrumbs.html" . }}
<h1 class="post-title">
{{ partial "breadcrumbs.html" . }}
<h1 class="post-title entry-hint-parent">
{{ .Title }}
{{- if .Draft }}<div class="entry-isdraft"><sup>&nbsp;&nbsp;[draft]</sup></div>{{- end }}
{{- if .Draft }}
<span class="entry-hint" title="Draft">
<svg xmlns="http://www.w3.org/2000/svg" height="35" viewBox="0 -960 960 960" fill="currentColor">
<path
d="M160-410v-60h300v60H160Zm0-165v-60h470v60H160Zm0-165v-60h470v60H160Zm360 580v-123l221-220q9-9 20-13t22-4q12 0 23 4.5t20 13.5l37 37q9 9 13 20t4 22q0 11-4.5 22.5T862.09-380L643-160H520Zm300-263-37-37 37 37ZM580-220h38l121-122-18-19-19-18-122 121v38Zm141-141-19-18 37 37-18-19Z" />
</svg>
</span>
{{- end }}
</h1>
{{- if .Description }}
<div class="post-description">
@ -14,60 +21,42 @@
{{- end }}
{{- if not (.Param "hideMeta") }}
<div class="post-meta">
{{- partial "post_meta.html" . -}}
{{- partial "post_meta.html" . -}}
{{- partial "translation_list.html" . -}}
{{- partial "edit_post.html" . -}}
{{- partial "post_canonical.html" . -}}
</div>
{{- end}}
<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") }}
<div class="toc">
<details {{if (.Param "TocOpen") }} open{{ end }}>
<summary accesskey="c" title="(Alt + C)">
<div class="details">{{- i18n "toc" | default "Table of Contents" }}</div>
</summary>
<div class="inner">
{{- partial "toc.html" . }}
</div>
</details>
{{- partial "toc.html" . }}
{{- end }}
{{- if .Content }}
<div class="post-content">
{{- if not (.Param "disableAnchoredHeadings") }}
{{- partial "anchored_headings.html" .Content -}}
{{- else }}{{ .Content }}{{ end }}
</div>
{{- end }}
<div class="post-content">
{{- partial "anchored_headings.html" .Content -}}
</div>
<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") }}
{{- $pages := where site.RegularPages "Type" "in" site.Params.mainSections }}
{{- if and (gt (len $pages) 1) (in $pages . ) }}
<nav class="paginav">
{{- with $pages.Next . }}
<a class="prev" href="{{.Permalink}}">
<span class="title">« {{ i18n "prev_page" }}</span>
<br>
<span>{{- .Name -}}</span>
</a>
{{- end}}
{{- with $pages.Prev . }}
<a class="next" href="{{.Permalink}}">
<span class="title">{{ i18n "next_page" }} »</span>
<br>
<span>{{- .Name -}}</span>
</a>
{{- end}}
</nav>
{{- partial "post_nav_links.html" . }}
{{- end }}
{{- end }}
{{- if (and .Site.Params.ShowShareButtons (ne .Params.disableShare true) ) }}
{{- partial "share_icons.html" . }}
{{- if (and site.Params.ShowShareButtons (ne .Params.disableShare true)) }}
{{- partial "share_icons.html" . -}}
{{- end }}
</footer>
@ -76,4 +65,4 @@
{{- end }}
</article>
{{- end }}{{/* end main */}}
{{- end }}{{/* end main */}}

View File

@ -1,4 +1,4 @@
{{ define "main" }}
{{- define "main" }}
{{- if .Title }}
<header class="page-header">
@ -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>
@ -24,4 +24,4 @@
{{- end }}
</ul>
{{ end }}{{/* end main */}}
{{- end }}{{/* end main */ -}}

View File

@ -1,2 +1,2 @@
<!-- formats .Content headings by adding an anchor -->
{{- /* formats .Content headings by adding an anchor */ -}}
{{ . | replaceRE "(<h[1-6] id=\"([^\"]+)\".+)(</h[1-6]+>)" "${1}<a hidden class=\"anchor\" aria-hidden=\"true\" href=\"#${2}\">#</a>${3}" | safeHTML }}

View File

@ -1,7 +1,7 @@
{{- 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 {}") ) }}
{{- if (or (eq $author_type "[]string") (eq $author_type "[]interface {}")) }}
{{- (delimit $author ", " ) }}
{{- else }}
{{- $author }}

View File

@ -1,19 +1,19 @@
{{- if (.Param "ShowBreadCrumbs")}}
{{- if (.Param "ShowBreadCrumbs") -}}
<div class="breadcrumbs">
{{- $url := replace .Parent.Permalink ( printf "%s" .Site.BaseURL) "" }}
{{- $lang_url := strings.TrimPrefix ( printf "%s/" .Lang) $url }}
{{- $url := replace .Parent.Permalink (printf "%s" site.BaseURL) "" }}
{{- $lang_url := strings.TrimPrefix (printf "%s/" .Lang) $url -}}
<a href="{{ "" | absLangURL }}">{{ i18n "home" | default "Home"}}</a>
<a href="{{ "" | absLangURL }}">{{ i18n "home" | default "Home" }}</a>
{{- $scratch := newScratch }}
{{- 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>
{{- end }}
{{- end }}
{{- end -}}
</div>
{{- end }}
{{- end -}}

View File

@ -1,5 +1,3 @@
<!-- Comments area start -->
<!--
to add comments read => https://gohugo.io/content-management/comments/
-->
<!-- Comments area end -->
{{- /* Comments area start */ -}}
{{- /* to add comments read => https://gohugo.io/content-management/comments/ */ -}}
{{- /* Comments area end */ -}}

View File

@ -1,35 +1,43 @@
{{- 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">
{{- $addLink := (and .Site.Params.cover.linkFullImages (not $.IsHome)) }}
{{- $cover := (.Page.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") }}
{{- $prod := (hugo.IsProduction | or (eq .Site.Params.env "production")) }}
{{- if (and (in $processableFormats $cover.MediaType.SubType) (ne .Site.Params.cover.responsiveImages false) (eq $prod true)) }}
<img srcset="{{- range $size := $sizes -}}
{{- $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 $cover.MediaType.SubType) ($responsiveImages) (eq $prod true)) }}
<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 }}
{{- end -}}{{$cover.Permalink }} {{printf "%dw" ($cover.Width)}}"
sizes="(min-width: 768px) 720px, 100vw" src="{{ $cover.Permalink }}" alt="{{ $alt }}" />
{{- end -}}{{$cover.Permalink }} {{printf "%dw" ($cover.Width)}}"
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 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 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>
{{- end }}{{/* End image */}}
{{- end -}}{{/* End context */}}
{{- end -}}{{/* End context */ -}}

View File

@ -1,6 +1,8 @@
{{- if or .Params.editPost.URL .Site.Params.editPost.URL -}}
{{- if or .Params.author $.Site.Params.author (.Param "ShowReadingTime") (not .Date.IsZero) .IsTranslated }}|&nbsp;{{- end -}}
<a href="{{ .Params.editPost.URL | default .Site.Params.editPost.URL }}{{ if .Params.editPost.appendFilePath | default ( .Site.Params.editPost.appendFilePath | default false ) }}/{{ .File.Path }}{{ end }}" rel="noopener noreferrer" target="_blank">
{{- .Params.editPost.Text | default (.Site.Params.editPost.Text | default (i18n "edit_post" | default "Edit") ) -}}
{{- if 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">
{{- .Params.editPost.Text | default (site.Params.editPost.Text | default (i18n "edit_post" | default "Edit")) -}}
</a>
{{- end }}

View File

@ -1,5 +1,3 @@
<!-- Footer custom content area start -->
<!--
Insert any custom code web-analytics, resources, etc. here
-->
<!-- Footer custom content area end -->
{{- /* Footer custom content area start */ -}}
{{- /* Insert any custom code web-analytics, resources, etc. here */ -}}
{{- /* Footer custom content area end */ -}}

View File

@ -1,5 +1,4 @@
<!-- Head custom content area start -->
<!--
Insert any custom code (web-analytics, resources, etc.) - it will appear in the <head></head> section of every page. Can be overwritten by partial with the same name in the global layouts.
-->
<!-- Head custom content area end -->
{{- /* Head custom content area start */ -}}
{{- /* Insert any custom code (web-analytics, resources, etc.) - it will appear in the <head></head> section of every page. */ -}}
{{- /* Can be overwritten by partial with the same name in the global layouts. */ -}}
{{- /* Head custom content area end */ -}}

View File

@ -1,94 +1,26 @@
{{- 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>&middot;</span>
<span>Powered by <a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a></span>
<span>&middot;</span>
<span>Theme <a href="https://git.io/hugopapermod" rel="noopener" target="_blank">PaperMod</a></span>
<span>
- 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>
{{- if (not .Site.Params.disableScrollToTop) }}
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)">
<button class="top-link" id="top-link" type="button" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</button>
{{- end }}
{{- 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" />
</svg>
</a>
{{- end }}
{{- partial "extend_footer.html" . -}}
{{- $isHLJSdisabled := (.Site.Params.assets.disableHLJS | default .Params.disableHLJS ) }}
{{- if (and (eq .Kind "page") (ne .Layout "archives") (ne .Layout "search") (not $isHLJSdisabled)) }}
{{- if not .Site.Params.assets.disableFingerprinting }}
{{- $highlight := slice (resources.Get "js/highlight.min.js") | resources.Concat "assets/js/highlight.js" | minify | fingerprint }}
<script defer src="{{ $highlight.RelPermalink }}" integrity="{{ $highlight.Data.Integrity }}"
onload="hljs.initHighlightingOnLoad();"></script>
{{- else}}
{{- $highlight := slice (resources.Get "js/highlight.min.js") | resources.Concat "assets/js/highlight.js" | minify }}
<script defer src="{{ $highlight.RelPermalink }}" onload="hljs.initHighlightingOnLoad();"></script>
{{- end}}
{{- end }}
<script>
window.onload = function () {
if (localStorage.getItem("menu-scroll-position")) {
document.getElementById('menu').scrollLeft = localStorage.getItem("menu-scroll-position");
}
}
function menu_on_scroll() {
localStorage.setItem("menu-scroll-position", document.getElementById('menu').scrollLeft);
}
{{- partial "extend_footer.html" . }}
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 }}
{{- partial "script.html" . }}

View File

@ -1,85 +1,110 @@
<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>
<!-- Meta -->
<meta name="robots" content="noindex, nofollow">
{{- end }}
{{- /* 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 }}
{{- 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 -}}" />
<meta name="description" content="{{- with .Description }}{{ . }}{{- else }}{{- if .IsPage}}
{{- .Summary | default (printf "%s - %s" .Title .Site.Title) }}{{- else }}
{{- with .Site.Params.description }}{{ . }}{{- end }}{{- 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 -}}">
<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 }}" />
{{- end}}
{{- 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 }}" />
{{- end}}
<!-- Styles -->
{{- $common := (resources.Match "css/*.css") | resources.Concat "assets/css/common.css" }}
{{- $extended := (resources.Match "css/extended/*.css") | resources.Concat "assets/css/extended.css" }}
{{- /* bundle all required css */}}
{{- /* Add extended css after theme style */ -}}
{{- $stylesheet := (slice $common $extended) | resources.Concat "assets/css/stylesheet.css" | minify }}
<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 }}">
{{- end }}
{{- 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 }}
{{- if not .Site.Params.assets.disableFingerprinting }}
{{- $stylesheet := $stylesheet | fingerprint -}}
<link href="{{ $stylesheet.RelPermalink }}" integrity="{{ $stylesheet.Data.Integrity }}" rel="preload stylesheet"
as="style">
{{- else}}
<link href="{{ $stylesheet.RelPermalink }}" rel="preload stylesheet" as="style">
{{- end}}
<!-- Search -->
{{- if (eq .Layout `search`) -}}
<link rel="preload" as="fetch" href="../index.json" crossOrigin="anonymous">
{{- $fastsearch := resources.Get "js/fastsearch.js" | resources.ExecuteAsTemplate "js/fastsearch.js" .Site.Params.fuseOpts }}
{{- $fusejs := resources.Get "js/fuse.js" }}
{{- if not .Site.Params.assets.disableFingerprinting }}
{{- $search := (slice $fusejs $fastsearch ) | resources.Concat "assets/js/search.js" | minify | fingerprint }}
<script defer src="{{ $search.RelPermalink }}" onload="loadSearch();" integrity="{{ $search.Data.Integrity }}"></script>
{{- else}}
{{ $search := (slice $fusejs $fastsearch ) | resources.Concat "assets/js/search.js" | minify }}
<script defer src="{{ $search.RelPermalink }}" onload="loadSearch();"></script>
{{- end}}
{{- end -}}
{{- /* Styles */}}
<!-- 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="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<!-- Generator -->
{{- hugo.Generator }}
<!-- RSS -->
{{- range .AlternativeOutputFormats -}}
<link rel="{{ .Rel }}" type="{{ .MediaType.Type }}" href="{{ .Permalink | safeURL }}">
{{- /* 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" }}
{{- $commonHighlight := (resources.Get "css/common/chroma.css") }}
{{- /* order is important */}}
{{- $core := (slice $theme_vars $reset $common $includes_all $media) | resources.Concat "assets/css/core.css" | resources.Minify }}
{{- $extended := (resources.Match "css/extended/*.css") | resources.Concat "assets/css/extended.css" | resources.Minify }}
{{- /* bundle all required css */}}
{{- /* Add extended css after theme style */ -}}
{{- $stylesheet := (slice $license_css $core $extended) | resources.Concat "assets/css/stylesheet.css" }}
{{- if not site.Params.assets.disableFingerprinting }}
{{- $stylesheet := $stylesheet | fingerprint }}
<link crossorigin="anonymous" href="{{ $stylesheet.RelPermalink }}" integrity="{{ $stylesheet.Data.Integrity }}" rel="preload stylesheet" as="style">
{{- else }}
<link crossorigin="anonymous" href="{{ $stylesheet.RelPermalink }}" rel="preload stylesheet" as="style">
{{- end }}
{{- /* noscript */}}
<noscript>
{{- $noscript := (resources.Get "css/includes/noscript.css") }}
{{- if not site.Params.assets.disableFingerprinting }}
{{- $noscript := $noscript | fingerprint }}
<link crossorigin="anonymous" href="{{ $noscript.RelPermalink }}" integrity="{{ $noscript.Data.Integrity }}" rel="preload stylesheet" as="style">
{{- else }}
<link crossorigin="anonymous" href="{{ $noscript.RelPermalink }}" rel="preload stylesheet" as="style">
{{- end }}
</noscript>
{{- /* Favicons */}}
<link rel="icon" href="{{ site.Params.assets.favicon | default "favicon.ico" | absURL }}">
<link rel="icon" type="image/png" sizes="16x16" href="{{ site.Params.assets.favicon16x16 | default "favicon-16x16.png" | absURL }}">
<link rel="icon" type="image/png" sizes="32x32" href="{{ site.Params.assets.favicon32x32 | default "favicon-32x32.png" | absURL }}">
<link rel="apple-touch-icon" href="{{ site.Params.assets.apple_touch_icon | default "apple-touch-icon.png" | absURL }}">
<link rel="mask-icon" href="{{ site.Params.assets.safari_pinned_tab | default "safari-pinned-tab.svg" | absURL }}">
<meta name="theme-color" content="{{ site.Params.assets.theme_color | default "#2e2e33" }}">
<meta name="msapplication-TileColor" content="{{ site.Params.assets.msapplication_TileColor | default "#2e2e33" }}">
{{- /* RSS */}}
{{ range .AlternativeOutputFormats -}}
<link rel="{{ .Rel }}" type="{{ .MediaType.Type | html }}" href="{{ .Permalink | safeURL }}">
{{ end -}}
{{- range .AllTranslations -}}
<link rel="alternate" hreflang="{{- .Lang -}}" href="{{- .Permalink -}}" />
{{ end }}
<link rel="alternate" hreflang="{{ .Lang }}" href="{{ .Permalink }}">
{{ end -}}
{{- partial "extend_head.html" . -}}
<!-- Misc -->
{{- if hugo.IsProduction | or (eq .Site.Params.env "production") }}
{{- template "_internal/google_analytics_async.html" . }}
{{- template "_internal/google_news.html" . }}
{{- /* Misc */}}
{{- 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" . }}
{{- template "partials/templates/schema_json.html" . }}
{{- end }}
{{- end -}}

View File

@ -1,103 +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 }}
<noscript>
<style type="text/css">
#theme-toggle,
.top-link {
display: none;
}
</style>
{{- if (and (ne .Site.Params.defaultTheme "light") (ne .Site.Params.defaultTheme "dark")) }}
<style>
@media (prefers-color-scheme: dark) {
:root {
--theme: #1d1e20;
--entry: #2e2e33;
--primary: rgba(255, 255, 255, 0.84);
--secondary: rgba(255, 255, 255, 0.56);
--tertiary: rgba(255, 255, 255, 0.16);
--content: rgba(255, 255, 255, 0.74);
--hljs-bg: #2e2e33;
--code-bg: #37383e;
--border: #333;
}
.list {
background: var(--theme);
}
.list:not(.dark)::-webkit-scrollbar-track {
background: 0 0;
}
.list:not(.dark)::-webkit-scrollbar-thumb {
border-color: var(--theme);
}
}
</style>
{{- end }}
</noscript>
<header class="header">
{{- if ( and (.IsPage) (ne .Layout "archives") (ne .Layout "search")) }}
<div id="progressBar"></div>
{{- end }}
<nav class="nav">
<div class="logo">
{{- if .Title }}
<a href="{{ "" | absLangURL }}" accesskey="h" title="{{ .Site.Params.label.text | default .Site.Title }} (Alt + H)">
{{- if .Site.Params.label.icon }}
<img src="{{- .Site.Params.label.icon -}}" alt="logo" aria-label="logo"
height="{{- .Site.Params.label.iconHeight | default "30px" -}}">
{{- $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 := 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 -}}
{{- .Site.Params.label.text | default .Site.Title -}}
{{- 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>
@ -111,22 +68,22 @@
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
{{- end}}
{{ $lang := .Lang}}
{{ $separator := or .Title (not .Site.Params.disableThemeToggle)}}
{{- with $.Site.Home.AllTranslations }}
{{- end }}
{{- $lang := .Lang}}
{{- $separator := or $label_text (not site.Params.disableThemeToggle)}}
{{- with site.Home.AllTranslations }}
<ul class="lang-switch">
{{- if $separator }}<li>|</li>{{ end }}
{{- range . -}}
{{- if ne $lang .Lang }}
<li>
<a href="{{- .Permalink -}}" title="{{ .Language.LanguageName | default (.Lang | humanize) }}"
aria-label="{{ .Language.LanguageName | default (.Lang | humanize) }}">
{{- if (and $.Site.Params.displayFullLangName (.Language.LanguageName)) }}
<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)) }}
{{- .Language.LanguageName | emojify -}}
{{- else }}
{{- .Lang | humanize -}}
{{- .Lang | title -}}
{{- end -}}
</a>
</li>
@ -134,23 +91,36 @@
{{- end}}
</ul>
{{- end }}
</span>
</div>
</div>
{{- $currentPage := . }}
<ul id="menu" onscroll="menu_on_scroll()">
{{- range .Site.Menus.main }}
<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 }}
{{- $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` }}
{{- $page_url:= $currentPage.Permalink | absLangURL }}
{{- $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 ) }}>
<span {{- if eq $menu_item_url $page_url }} class="active" {{- end }}>
{{- .Pre }}
{{- .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 -}}
{{- end }}
</ul>
</nav>
</header>

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

View File

@ -1,19 +1,56 @@
<div class="profile">
{{- with .Site.Params.profileMode }}
{{- with site.Params.profileMode }}
<div class="profile_inner">
{{- if .imageUrl}}<img src="{{ .imageUrl}}" alt="{{ .imageTitle | default "profile image" }}"
height="{{- .imageHeight | default 150 -}}" width="{{- .imageWidth | default 150 -}}" />{{- end}}
<h1>{{- .title | default $.Site.Title | markdownify -}}</h1>
<span>{{- .subtitle | markdownify -}}</span>
{{- partial "social_icons.html" $.Site.Params.socialIcons -}}
{{- if .imageUrl -}}
{{- $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 }}
{{- end }}
<h1>{{ .title | default site.Title | markdownify }}</h1>
<span>{{ .subtitle | markdownify }}</span>
{{- partial "social_icons.html" -}}
{{- with .buttons }}
<div class="buttons">
{{- range . -}}
<a class="button" href="{{ trim .url " " }}" rel="noopener" title="{{ .name | humanize }}">
<span class="button-inner">{{ .name }}</span>
{{- range . }}
<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 -}}
{{- end }}
</div>
{{- end }}
</div>

Some files were not shown because too many files have changed in this diff Show More