commit d573e8355cd7e7da8063f822c1f434b8f986ed42 Author: Kenny Bondelie Date: Thu Nov 6 14:46:05 2025 -0800 first commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/askkennyb/.gitmodules b/askkennyb/.gitmodules new file mode 100644 index 0000000..89af1b0 --- /dev/null +++ b/askkennyb/.gitmodules @@ -0,0 +1,3 @@ +[submodule "themes/PaperMod"] + path = themes/PaperMod + url = https://github.com/adityatelange/hugo-PaperMod.git diff --git a/askkennyb/.hugo_build.lock b/askkennyb/.hugo_build.lock new file mode 100644 index 0000000..e69de29 diff --git a/askkennyb/README.md b/askkennyb/README.md new file mode 100644 index 0000000..e69de29 diff --git a/askkennyb/archetypes/default.md b/askkennyb/archetypes/default.md new file mode 100644 index 0000000..0d5eebd --- /dev/null +++ b/askkennyb/archetypes/default.md @@ -0,0 +1,5 @@ +--- +date: '{{ .Date }}' +draft: true +title: '{{ replace .File.ContentBaseName "-" " " | title }}' +--- diff --git a/askkennyb/content/_index.md b/askkennyb/content/_index.md new file mode 100644 index 0000000..fdebf9d --- /dev/null +++ b/askkennyb/content/_index.md @@ -0,0 +1,9 @@ +--- +title: "Home" +description: "Landing page for Ask Kenny B." +--- + +{{< bio img="/images/profile.png" alt="Kenny Bondelie" >}} +👋 I’m Kenny Bondelie — finance leader turned hands-on IT and security architect. +I write about building reliable systems, both technical and organizational. +{{< /bio >}} \ No newline at end of file diff --git a/askkennyb/content/about/_index.md b/askkennyb/content/about/_index.md new file mode 100644 index 0000000..379ae57 --- /dev/null +++ b/askkennyb/content/about/_index.md @@ -0,0 +1,12 @@ +--- +date: '2025-11-03T16:47:38-08:00' +draft: false +title: 'About' +description: "Who I am and what Ask Kenny B is about." +--- + +Hi, I’m Kenny. I build reliable, human-centered systems—nonprofit finance → homelab resilience → cloud + security. + +This site is my public lab notebook: practical guides, reproducible setups, and leadership patterns that scale. + +Let's go. \ No newline at end of file diff --git a/askkennyb/content/posts/another-test.md b/askkennyb/content/posts/another-test.md new file mode 100644 index 0000000..2136755 --- /dev/null +++ b/askkennyb/content/posts/another-test.md @@ -0,0 +1,38 @@ +--- +title: "Project Log: Docker Dreams and YAML Nightmares" +date: 2025-11-05 +description: "A totally serious update on my local lab, featuring unexpected container drama, a misbehaving reverse proxy, and lessons in patience." +tags: ["homelab", "docker", "networking", "humor"] +categories: ["DevOps"] +draft: false +--- +> Sometimes the difference between a 'production-ready stack' and 'why is my NAS on fire?' is one missing space in a YAML file. + +It started innocently enough: +a single `docker-compose.yml`, neat and tidy, humming along like a well-trained orchestra. Then I added *one* new service—my self-hosted note app—and everything fell apart. + +### The Symptoms +- Containers refusing to start with no useful logs +- DNS loops that made my router question its purpose +- My wife asking, “Why is our TV buffering when you touch the server?” + +### The Diagnosis +Turns out, I nested a volume mount under the wrong key. +YAML: 1 — Human: 0. + +### The Fix +A humble indent. +Four spaces, to be precise. +Suddenly the world made sense again, DNS was stable, and my cat stopped judging me. + +### Lessons Learned +1. **Version control everything**, even your test Compose files. +2. **Automate backups** before you “just try something real quick.” +3. **Celebrate small victories**—sometimes the win is just getting your network back online before dinner. + +--- + +If you read this and thought, “I’ve been there,” then welcome to the club. +Homelabs teach patience, humility, and the thrill of a perfectly clean `docker ps` output. + +*Stay tuned for next week’s adventure: rebuilding my reverse proxy after a 301 loop ate my weekend.* diff --git a/askkennyb/content/posts/hello-world.md b/askkennyb/content/posts/hello-world.md new file mode 100644 index 0000000..e98d1d3 --- /dev/null +++ b/askkennyb/content/posts/hello-world.md @@ -0,0 +1,15 @@ +--- +title: "Hello, World — Why Ask Kenny B?" +date: 2025-11-02 +description: "What this space is about: practical homelab builds, cloud security, and translating leadership into hands-on architecture." +tags: ["intro", "homelab", "project"] +categories: ["Meta"] +draft: false +--- +Welcome! This blog will cover: + +- Reproducible **homelab guides** (Proxmox, Docker, Authentik, reverse proxies). +- **Cloud blueprints** that scale from personal to org-grade. +- Transferable **leadership → architecture** lessons (risk, controls, finance). + +Thanks for being here—let’s build. \ No newline at end of file diff --git a/askkennyb/hugo.yaml b/askkennyb/hugo.yaml new file mode 100644 index 0000000..5f34766 --- /dev/null +++ b/askkennyb/hugo.yaml @@ -0,0 +1,57 @@ +baseURL: "https://askkennyb.com" +languageCode: "en-us" +title: "Ask KennyB" +theme: "PaperMod" +pagination: + pagerSize: 10 +enableRobotsTXT: true + +# Optional: nice blog slugs at /blog/... +permalinks: + posts: /blog/:slug/ + +taxonomies: + category: categories + tag: tags + +params: + label: + icon: "images/logo_words.svg" + iconHeight: 75 + text: " " + + description: "Sharpening tech leadership through hands-on homelab builds, cloud, and security." + author: "Kenny Bondelie" + + # UX features + ShowReadingTime: true + ShowShareButtons: false + ShowPostNavLinks: true + ShowBreadCrumbs: true + ShowCodeCopyButtons: true + ShowToc: true + + # Home hero (PaperMod's homeInfo) + homeInfoParams: + Title: "Ask KennyB" + Content: "From nonprofit CFO → hands-on IT & security leader. Homelab, cloud, ops, and practical strategy." + + # Theme palette + defaultTheme: auto # auto | dark | light + + # Socials (fill in later) + socialIcons: + # Uncomment GitHub when ready + # - name: github + # url: "https://github.com/kbondelie" + - name: linkedin + url: "https://www.linkedin.com/in/kennethbondelie" + +menu: + main: + - name: Posts + url: "/posts/" + weight: 1 + - name: About + url: "/about/" + weight: 3 diff --git a/askkennyb/layouts/partials/extend_head.html b/askkennyb/layouts/partials/extend_head.html new file mode 100644 index 0000000..abe865e --- /dev/null +++ b/askkennyb/layouts/partials/extend_head.html @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/askkennyb/layouts/shortcodes/bio.html b/askkennyb/layouts/shortcodes/bio.html new file mode 100644 index 0000000..bcc2554 --- /dev/null +++ b/askkennyb/layouts/shortcodes/bio.html @@ -0,0 +1,6 @@ +
+ {{ .Get +
+ {{ .Inner | markdownify }} +
+
diff --git a/askkennyb/public/404.html b/askkennyb/public/404.html new file mode 100644 index 0000000..a0045e4 --- /dev/null +++ b/askkennyb/public/404.html @@ -0,0 +1,7 @@ +404 Page not found | Ask KennyB
404
+ \ No newline at end of file diff --git a/askkennyb/public/about/index.html b/askkennyb/public/about/index.html new file mode 100644 index 0000000..a109088 --- /dev/null +++ b/askkennyb/public/about/index.html @@ -0,0 +1,7 @@ +About | Ask KennyB

Hi, I’m Kenny. I build reliable, human-centered systems—nonprofit finance → homelab resilience → cloud + security.

This site is my public lab notebook: practical guides, reproducible setups, and leadership patterns that scale.

Let’s go.

+ \ No newline at end of file diff --git a/askkennyb/public/about/index.xml b/askkennyb/public/about/index.xml new file mode 100644 index 0000000..9887c61 --- /dev/null +++ b/askkennyb/public/about/index.xml @@ -0,0 +1 @@ +About on Ask KennyBhttps://askkennyb.com/about/Recent content in About on Ask KennyBHugo -- 0.152.2en-us \ No newline at end of file diff --git a/askkennyb/public/about/page/1/index.html b/askkennyb/public/about/page/1/index.html new file mode 100644 index 0000000..8cde18b --- /dev/null +++ b/askkennyb/public/about/page/1/index.html @@ -0,0 +1 @@ +https://askkennyb.com/about/ \ No newline at end of file diff --git a/askkennyb/public/android-chrome-192x192.png b/askkennyb/public/android-chrome-192x192.png new file mode 100644 index 0000000..00f512e Binary files /dev/null and b/askkennyb/public/android-chrome-192x192.png differ diff --git a/askkennyb/public/android-chrome-512x512.png b/askkennyb/public/android-chrome-512x512.png new file mode 100644 index 0000000..7eef27e Binary files /dev/null and b/askkennyb/public/android-chrome-512x512.png differ diff --git a/askkennyb/public/apple-touch-icon.png b/askkennyb/public/apple-touch-icon.png new file mode 100644 index 0000000..08d8092 Binary files /dev/null and b/askkennyb/public/apple-touch-icon.png differ diff --git a/askkennyb/public/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css b/askkennyb/public/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css new file mode 100644 index 0000000..972c258 --- /dev/null +++ b/askkennyb/public/assets/css/stylesheet.d1be478e0ac21456f47a24e92e3c75a5fb7aac2ff5827f9447dbc93b4dd76b50.css @@ -0,0 +1,7 @@ +/* + PaperMod v8+ + License: MIT https://github.com/adityatelange/hugo-PaperMod/blob/master/LICENSE + Copyright (c) 2020 nanxiaobei and adityatelange + Copyright (c) 2021-2025 adityatelange +*/ +:root{--gap:24px;--content-gap:20px;--nav-width:1024px;--main-width:720px;--header-height:60px;--footer-height:60px;--radius:8px;--theme:rgb(255, 255, 255);--entry:rgb(255, 255, 255);--primary:rgb(30, 30, 30);--secondary:rgb(108, 108, 108);--tertiary:rgb(214, 214, 214);--content:rgb(31, 31, 31);--code-block-bg:rgb(28, 29, 33);--code-bg:rgb(245, 245, 245);--border:rgb(238, 238, 238);color-scheme:light}:root[data-theme=dark]{--theme:rgb(29, 30, 32);--entry:rgb(46, 46, 51);--primary:rgb(218, 218, 219);--secondary:rgb(155, 156, 157);--tertiary:rgb(65, 66, 68);--content:rgb(196, 196, 197);--code-block-bg:rgb(46, 46, 51);--code-bg:rgb(55, 56, 62);--border:rgb(51, 51, 51);color-scheme:dark}.list{background:var(--code-bg)}[data-theme=dark] .list{background:var(--theme)}*,::after,::before{box-sizing:border-box}html{-webkit-tap-highlight-color:transparent;overflow-y:scroll;-webkit-text-size-adjust:100%;text-size-adjust:100%}a,button,body,h1,h2,h3,h4,h5,h6{color:var(--primary)}body{font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Oxygen,Ubuntu,Cantarell,open sans,helvetica neue,sans-serif;font-size:18px;line-height:1.6;word-break:break-word;background:var(--theme)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section,table{display:block}h1,h2,h3,h4,h5,h6{line-height:1.2}h1,h2,h3,h4,h5,h6,p{margin-top:0;margin-bottom:0}ul{padding:0}a{text-decoration:none}body,figure,ul{margin:0}table{width:100%;border-collapse:collapse;border-spacing:0;overflow-x:auto;word-break:keep-all}button,input,textarea{padding:0;font:inherit;background:0 0;border:0}input,textarea{outline:0}button,input[type=button],input[type=submit]{cursor:pointer}input:-webkit-autofill,textarea:-webkit-autofill{box-shadow:0 0 0 50px var(--theme)inset}img{display:block;max-width:100%}.not-found{position:absolute;left:0;right:0;display:flex;align-items:center;justify-content:center;height:80%;font-size:160px;font-weight:700}.archive-posts{width:100%;font-size:16px}.archive-year{margin-top:40px}.archive-year:not(:last-of-type){border-bottom:2px solid var(--border)}.archive-month{display:flex;align-items:flex-start;padding:10px 0}.archive-month-header{margin:25px 0;width:200px}.archive-month:not(:last-of-type){border-bottom:1px solid var(--border)}.archive-entry{position:relative;padding:5px;margin:10px 0}.archive-entry-title{margin:5px 0;font-weight:400}.archive-count,.archive-meta{color:var(--secondary);font-size:14px}.footer,.top-link{font-size:12px;color:var(--secondary)}.footer{max-width:calc(var(--main-width) + var(--gap) * 2);margin:auto;padding:calc((var(--footer-height) - var(--gap))/2)var(--gap);text-align:center;line-height:24px}.footer span{margin-inline-start:1px;margin-inline-end:1px}.footer span:last-child{white-space:nowrap}.footer a{color:inherit;border-bottom:1px solid var(--secondary)}.footer a:hover{border-bottom:1px solid var(--primary)}.top-link{visibility:hidden;position:fixed;bottom:60px;right:30px;z-index:99;background:var(--tertiary);width:42px;height:42px;padding:12px;border-radius:64px;transition:visibility .5s,opacity .8s linear}.top-link,.top-link svg{filter:drop-shadow(0 0 0 var(--theme))}.footer a:hover,.top-link:hover{color:var(--primary)}.top-link:focus,#theme-toggle:focus{outline: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,.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}[data-theme=dark] #moon{display:none}[data-theme=light] #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}.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}.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,.8);background:rgba(78,78,78,.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}.first-entry{position:relative;display:flex;flex-direction:column;justify-content:center;min-height:320px;margin:var(--gap)0 calc(var(--gap) * 2)}.first-entry .entry-header{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3}.first-entry .entry-header h1{font-size:34px;line-height:1.3}.first-entry .entry-content{margin:14px 0;font-size:16px;-webkit-line-clamp:3}.first-entry .entry-footer{font-size:14px}.home-info .entry-content{-webkit-line-clamp:unset}.post-entry{position:relative;margin-bottom:var(--gap);padding:var(--gap);background:var(--entry);border-radius:var(--radius);transition:transform .1s;border:1px solid var(--border)}.post-entry:active{transform:scale(.96)}.tag-entry .entry-cover{display:none}.entry-header h2{font-size:24px;line-height:1.3}.entry-content{margin:8px 0;color:var(--secondary);font-size:14px;line-height:1.6;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.entry-footer{color:var(--secondary);font-size:13px}.entry-link{position:absolute;left:0;right:0;top:0;bottom:0}.entry-hint{color:var(--secondary)}.entry-hint-parent{display:flex;justify-content:space-between}.entry-cover{font-size:14px;margin-bottom:var(--gap);text-align:center}.entry-cover img{border-radius:var(--radius);width:100%;height:auto}.entry-cover a{box-shadow:0 1px 0 var(--primary)}.page-header,.post-header{margin:24px auto var(--content-gap)}.post-title{margin-bottom:2px;font-size:40px}.post-description{margin-top:10px;margin-bottom:5px}.post-meta,.breadcrumbs{color:var(--secondary);font-size:14px}.breadcrumbs{display:flex;flex-wrap:wrap;align-items:center}.i18n_list{display:inline-flex}.post-meta .i18n_list li{list-style:none;margin:auto 3px}.breadcrumbs a{font-size:16px}.post-content{color:var(--content);margin:30px 0}.post-content h3,.post-content h4,.post-content h5,.post-content h6{margin:24px 0 16px}.post-content h1{margin:40px auto 32px;font-size:40px}.post-content h2{margin:32px auto 24px;font-size:32px}.post-content h3{font-size:24px}.post-content h4{font-size:16px}.post-content h5{font-size:14px}.post-content h6{font-size:12px}.post-content a,.post-meta .i18n_list li a,.toc a:hover{box-shadow:0 1px;box-decoration-break:clone;-webkit-box-decoration-break:clone}.post-content a code{margin:auto 0;border-radius:0;box-shadow:0 -1px 0 var(--primary)inset}.post-content del{text-decoration:line-through}.post-content dl,.post-content ol,.post-content p,.post-content figure,.post-content ul{margin-bottom:var(--content-gap)}.post-content ol,.post-content ul{padding-inline-start:20px}.post-content li{margin-top:5px}.post-content li p{margin-bottom:0}.post-content dl{display:flex;flex-wrap:wrap;margin:0}.post-content dt{width:25%;font-weight:700}.post-content dd{width:75%;margin-inline-start:0;padding-inline-start:10px}.post-content dd~dd,.post-content dt~dt{margin-top:10px}.post-content table{margin-bottom:var(--content-gap)}.post-content table th,.post-content table:not(.highlighttable,.highlight table,.gist .highlight) td{min-width:80px;padding:8px 5px;line-height:1.5;border-bottom:1px solid var(--border)}.post-content table th{text-align:start}.post-content table:not(.highlighttable) td code:only-child{margin:auto 0}.post-content .highlight table{border-radius:var(--radius)}.post-content .highlight:not(table){margin:10px auto;background:var(--code-block-bg)!important;border-radius:var(--radius);direction:ltr}.post-content li>.highlight{margin-inline-end:0}.post-content ul pre{margin-inline-start:calc(var(--gap) * -2)}.post-content .highlight pre{margin:0}.post-content .highlighttable{table-layout:fixed}.post-content .highlighttable td:first-child{width:40px}.post-content .highlighttable td .linenodiv{padding-inline-end:0!important}.post-content .highlighttable td .highlight,.post-content .highlighttable td .linenodiv pre{margin-bottom:0}.post-content code{margin:auto 4px;padding:4px 6px;font-size:.78em;line-height:1.5;background:var(--code-bg);border-radius:2px}.post-content pre code{display:grid;margin:auto 0;padding:10px;color:#d5d5d6;background:var(--code-block-bg)!important;border-radius:var(--radius);overflow-x:auto;word-break:break-all}.post-content blockquote{margin:20px 0;padding:0 14px;border-inline-start:3px solid var(--primary)}.post-content hr{margin:30px 0;height:2px;background:var(--tertiary);border:0}.post-content iframe{max-width:100%}.post-content img{border-radius:4px;margin:1rem 0}.post-content img[src*="#center"]{margin:1rem auto}.post-content figure.align-center{text-align:center}.post-content figure>figcaption{color:var(--primary);font-size:16px;font-weight:700;margin:8px 0 16px}.post-content figure>figcaption>p{color:var(--secondary);font-size:14px;font-weight:400}.toc{margin-bottom:var(--content-gap);border:1px solid var(--border);background:var(--code-bg);border-radius:var(--radius);padding:.4em}[data-theme=dark] .toc{background:var(--entry)}.toc details summary{cursor:zoom-in;margin-inline-start:10px;user-select:none}.toc details[open] summary{cursor:zoom-out}.toc .details{display:inline;font-weight:500}.toc .inner{margin:5px 20px;padding:0 10px;opacity:.9}.toc li ul{margin-inline-start:var(--gap)}.toc summary:focus{outline:0}.post-footer{margin-top:var(--content-gap)}.post-footer>*{margin-bottom:10px}.post-tags{display:flex;flex-wrap:wrap;gap:10px}.post-tags li{display:inline-block}.post-tags a,.share-buttons,.paginav{border-radius:var(--radius);background:var(--code-bg);border:1px solid var(--border)}.post-tags a{display:block;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)}.share-buttons{padding:10px;display:flex;justify-content:center;overflow-x:auto;gap:10px}.share-buttons li,.share-buttons a{display:inline-flex}.share-buttons a:not(:last-of-type){margin-inline-end:12px}h1:hover .anchor,h2:hover .anchor,h3:hover .anchor,h4:hover .anchor,h5:hover .anchor,h6:hover .anchor{display:inline-flex;color:var(--secondary);margin-inline-start:8px;font-weight:500;user-select:none}.paginav{display:flex;line-height:30px}.paginav a{padding-inline-start:14px;padding-inline-end:14px;border-radius:var(--radius)}.paginav .title{letter-spacing:1px;text-transform:uppercase;font-size:small;color:var(--secondary)}.paginav .prev,.paginav .next{width:50%}.paginav span:hover:not(.title){box-shadow:0 1px}.paginav .next{margin-inline-start:auto;text-align:right}[dir=rtl] .paginav .next{text-align:left}h1>a>svg{display:inline}img.in-text{display:inline;margin:auto}.buttons,.main .profile{display:flex;justify-content:center}.main .profile{align-items:center;min-height:calc(100vh - var(--header-height) - var(--footer-height) - (var(--gap) * 2));text-align:center}.profile .profile_inner{display:flex;flex-direction:column;align-items:center;gap:10px}.profile img{border-radius:50%}.buttons{flex-wrap:wrap;max-width:400px}.button{background:var(--tertiary);border-radius:var(--radius);margin:8px;padding:6px;transition:transform .1s}.button-inner{padding:0 8px}.button:active{transform:scale(.96)}#searchbox input{padding:4px 10px;width:100%;color:var(--primary);font-weight:700;border:2px solid var(--tertiary);border-radius:var(--radius)}#searchbox input:focus{border-color:var(--secondary)}#searchResults li{list-style:none;border-radius:var(--radius);padding:10px;margin:10px 0;position:relative;font-weight:500}#searchResults{margin:10px 0;width:100%}#searchResults li:active{transition:transform .1s;transform:scale(.98)}#searchResults a{position:absolute;width:100%;height:100%;top:0;left:0;outline:none}#searchResults .focus{transform:scale(.98);border:2px solid var(--tertiary)}.terms-tags li{display:inline-block;margin:10px;font-weight:500}.terms-tags a{display:block;padding:3px 10px;background:var(--tertiary);border-radius:6px;transition:transform .1s}.terms-tags a:active{background:var(--tertiary);transform:scale(.96)}.bg{color:#cad3f5;background-color:#24273a}.chroma{color:#cad3f5;background-color:#24273a}.chroma .x{}.chroma .err{color:#ed8796}.chroma .cl{}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#474733}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#8087a2}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#8087a2}.chroma .line{display:flex}.chroma .k{color:#c6a0f6}.chroma .kc{color:#f5a97f}.chroma .kd{color:#ed8796}.chroma .kn{color:#8bd5ca}.chroma .kp{color:#c6a0f6}.chroma .kr{color:#c6a0f6}.chroma .kt{color:#ed8796}.chroma .n{}.chroma .na{color:#8aadf4}.chroma .nb{color:#91d7e3}.chroma .bp{color:#91d7e3}.chroma .nc{color:#eed49f}.chroma .no{color:#eed49f}.chroma .nd{color:#8aadf4;font-weight:700}.chroma .ni{color:#8bd5ca}.chroma .ne{color:#f5a97f}.chroma .nf{color:#8aadf4}.chroma .fm{color:#8aadf4}.chroma .nl{color:#91d7e3}.chroma .nn{color:#f5a97f}.chroma .nx{}.chroma .py{color:#f5a97f}.chroma .nt{color:#c6a0f6}.chroma .nv{color:#f4dbd6}.chroma .vc{color:#f4dbd6}.chroma .vg{color:#f4dbd6}.chroma .vi{color:#f4dbd6}.chroma .vm{color:#f4dbd6}.chroma .l{}.chroma .ld{}.chroma .s{color:#a6da95}.chroma .sa{color:#ed8796}.chroma .sb{color:#a6da95}.chroma .sc{color:#a6da95}.chroma .dl{color:#8aadf4}.chroma .sd{color:#6e738d}.chroma .s2{color:#a6da95}.chroma .se{color:#8aadf4}.chroma .sh{color:#6e738d}.chroma .si{color:#a6da95}.chroma .sx{color:#a6da95}.chroma .sr{color:#8bd5ca}.chroma .s1{color:#a6da95}.chroma .ss{color:#a6da95}.chroma .m{color:#f5a97f}.chroma .mb{color:#f5a97f}.chroma .mf{color:#f5a97f}.chroma .mh{color:#f5a97f}.chroma .mi{color:#f5a97f}.chroma .il{color:#f5a97f}.chroma .mo{color:#f5a97f}.chroma .o{color:#91d7e3;font-weight:700}.chroma .ow{color:#91d7e3;font-weight:700}.chroma .p{}.chroma .c{color:#6e738d;font-style:italic}.chroma .ch{color:#6e738d;font-style:italic}.chroma .cm{color:#6e738d;font-style:italic}.chroma .c1{color:#6e738d;font-style:italic}.chroma .cs{color:#6e738d;font-style:italic}.chroma .cp{color:#6e738d;font-style:italic}.chroma .cpf{color:#6e738d;font-weight:700;font-style:italic}.chroma .g{}.chroma .gd{color:#ed8796;background-color:#363a4f}.chroma .ge{font-style:italic}.chroma .gr{color:#ed8796}.chroma .gh{color:#f5a97f;font-weight:700}.chroma .gi{color:#a6da95;background-color:#363a4f}.chroma .go{}.chroma .gp{}.chroma .gs{font-weight:700}.chroma .gu{color:#f5a97f;font-weight:700}.chroma .gt{color:#ed8796}.chroma .gl{text-decoration:underline}.chroma .w{}.chroma{background-color:unset!important}.chroma .hl{display:flex}.chroma .lnt{padding:0 0 0 12px}.highlight pre.chroma code{padding:8px 0}.highlight pre.chroma .line .cl,.chroma .ln{padding:0 10px}.chroma .lntd:last-of-type{width:100%}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--tertiary);border:5px solid var(--theme);border-radius:var(--radius)}[data-theme=light] .list::-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)}.post-content .highlighttable td .highlight pre code::-webkit-scrollbar{display:none}.post-content :not(table) ::-webkit-scrollbar-thumb{border:2px solid var(--code-block-bg);background:#717175}.post-content :not(table) ::-webkit-scrollbar-thumb:hover{background:#a3a3a5}.gist table::-webkit-scrollbar-thumb{border:2px solid #fff;background:#adadad}.gist table::-webkit-scrollbar-thumb:hover{background:#707070}.post-content table::-webkit-scrollbar-thumb{border-width:2px}@media screen and (min-width:768px){::-webkit-scrollbar{width:19px;height:11px}}@media screen and (max-width:768px){:root{--gap:14px}.profile img{transform:scale(.85)}.first-entry{min-height:260px}.archive-month{flex-direction:column}.archive-year{margin-top:20px}.footer{padding:calc((var(--footer-height) - var(--gap) - 10px)/2)var(--gap)}}@media screen and (max-width:900px){.list .top-link{transform:translateY(-5rem)}}@media screen and (max-width:340px){.share-buttons{justify-content:unset}}@media(prefers-reduced-motion){.terms-tags a:active,.button:active,.post-entry:active,.top-link,#searchResults .focus,#searchResults li:active{transform:none}}body{font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}h1,h2,h3,h4{font-family:"source serif 4",ui-serif,Georgia,serif}a{color:#163b8e}a:hover{color:#27b7c4}.post-entry,.archive-entry,.post-content blockquote{border-color:#27b7c4}.bio-block{display:flex;align-items:center;gap:1.2rem;margin-top:2rem;flex-wrap:wrap}.bio-photo{width:100px;height:100px;border-radius:50%;object-fit:cover;box-shadow:0 2px 5px rgba(0,0,0,.15)}.bio-text{max-width:60ch;font-size:1.05em;line-height:1.6} \ No newline at end of file diff --git a/askkennyb/public/blog/hello-world-why-ask-kenny-b/index.html b/askkennyb/public/blog/hello-world-why-ask-kenny-b/index.html new file mode 100644 index 0000000..c0b08f1 --- /dev/null +++ b/askkennyb/public/blog/hello-world-why-ask-kenny-b/index.html @@ -0,0 +1,7 @@ +Hello, World — Why Ask Kenny B? | Ask KennyB

Hello, World — Why Ask Kenny B?

What this space is about: practical homelab builds, cloud security, and translating leadership into hands-on architecture.

Welcome! This blog will cover:

  • Reproducible homelab guides (Proxmox, Docker, Authentik, reverse proxies).
  • Cloud blueprints that scale from personal to org-grade.
  • Transferable leadership → architecture lessons (risk, controls, finance).

Thanks for being here—let’s build.

+ \ No newline at end of file diff --git a/askkennyb/public/blog/project-log-docker-dreams-and-yaml-nightmares/index.html b/askkennyb/public/blog/project-log-docker-dreams-and-yaml-nightmares/index.html new file mode 100644 index 0000000..8941d00 --- /dev/null +++ b/askkennyb/public/blog/project-log-docker-dreams-and-yaml-nightmares/index.html @@ -0,0 +1,7 @@ +Project Log: Docker Dreams and YAML Nightmares | Ask KennyB

Project Log: Docker Dreams and YAML Nightmares

A totally serious update on my local lab, featuring unexpected container drama, a misbehaving reverse proxy, and lessons in patience.

Sometimes the difference between a ‘production-ready stack’ and ‘why is my NAS on fire?’ is one missing space in a YAML file.

It started innocently enough:
a single docker-compose.yml, neat and tidy, humming along like a well-trained orchestra. Then I added one new service—my self-hosted note app—and everything fell apart.

The Symptoms

  • Containers refusing to start with no useful logs
  • DNS loops that made my router question its purpose
  • My wife asking, “Why is our TV buffering when you touch the server?”

The Diagnosis

Turns out, I nested a volume mount under the wrong key.
YAML: 1 — Human: 0.

The Fix

A humble indent.
Four spaces, to be precise.
Suddenly the world made sense again, DNS was stable, and my cat stopped judging me.

Lessons Learned

  1. Version control everything, even your test Compose files.
  2. Automate backups before you “just try something real quick.”
  3. Celebrate small victories—sometimes the win is just getting your network back online before dinner.

If you read this and thought, “I’ve been there,” then welcome to the club.
Homelabs teach patience, humility, and the thrill of a perfectly clean docker ps output.

Stay tuned for next week’s adventure: rebuilding my reverse proxy after a 301 loop ate my weekend.

+ \ No newline at end of file diff --git a/askkennyb/public/categories/devops/index.html b/askkennyb/public/categories/devops/index.html new file mode 100644 index 0000000..f150229 --- /dev/null +++ b/askkennyb/public/categories/devops/index.html @@ -0,0 +1,12 @@ +DevOps | Ask KennyB

Project Log: Docker Dreams and YAML Nightmares

Sometimes the difference between a ‘production-ready stack’ and ‘why is my NAS on fire?’ is one missing space in a YAML file. +It started innocently enough: +a single docker-compose.yml, neat and tidy, humming along like a well-trained orchestra. Then I added one new service—my self-hosted note app—and everything fell apart. +The Symptoms Containers refusing to start with no useful logs DNS loops that made my router question its purpose My wife asking, “Why is our TV buffering when you touch the server?” The Diagnosis Turns out, I nested a volume mount under the wrong key. +YAML: 1 — Human: 0. +...

November 5, 2025 · 1 min · Kenny Bondelie
+ \ No newline at end of file diff --git a/askkennyb/public/categories/devops/index.xml b/askkennyb/public/categories/devops/index.xml new file mode 100644 index 0000000..d8c67c4 --- /dev/null +++ b/askkennyb/public/categories/devops/index.xml @@ -0,0 +1 @@ +DevOps on Ask KennyBhttps://askkennyb.com/categories/devops/Recent content in DevOps on Ask KennyBHugo -- 0.152.2en-usWed, 05 Nov 2025 00:00:00 +0000Project Log: Docker Dreams and YAML Nightmareshttps://askkennyb.com/blog/project-log-docker-dreams-and-yaml-nightmares/Wed, 05 Nov 2025 00:00:00 +0000https://askkennyb.com/blog/project-log-docker-dreams-and-yaml-nightmares/A totally serious update on my local lab, featuring unexpected container drama, a misbehaving reverse proxy, and lessons in patience. \ No newline at end of file diff --git a/askkennyb/public/categories/devops/page/1/index.html b/askkennyb/public/categories/devops/page/1/index.html new file mode 100644 index 0000000..8ccd628 --- /dev/null +++ b/askkennyb/public/categories/devops/page/1/index.html @@ -0,0 +1 @@ +https://askkennyb.com/categories/devops/ \ No newline at end of file diff --git a/askkennyb/public/categories/index.html b/askkennyb/public/categories/index.html new file mode 100644 index 0000000..4e4a524 --- /dev/null +++ b/askkennyb/public/categories/index.html @@ -0,0 +1,7 @@ +Categories | Ask KennyB
+ \ No newline at end of file diff --git a/askkennyb/public/categories/index.xml b/askkennyb/public/categories/index.xml new file mode 100644 index 0000000..adb9d79 --- /dev/null +++ b/askkennyb/public/categories/index.xml @@ -0,0 +1 @@ +Categories on Ask KennyBhttps://askkennyb.com/categories/Recent content in Categories on Ask KennyBHugo -- 0.152.2en-usWed, 05 Nov 2025 00:00:00 +0000DevOpshttps://askkennyb.com/categories/devops/Wed, 05 Nov 2025 00:00:00 +0000https://askkennyb.com/categories/devops/Metahttps://askkennyb.com/categories/meta/Sun, 02 Nov 2025 00:00:00 +0000https://askkennyb.com/categories/meta/ \ No newline at end of file diff --git a/askkennyb/public/categories/meta/index.html b/askkennyb/public/categories/meta/index.html new file mode 100644 index 0000000..bc48a81 --- /dev/null +++ b/askkennyb/public/categories/meta/index.html @@ -0,0 +1,8 @@ +Meta | Ask KennyB

Hello, World — Why Ask Kenny B?

Welcome! This blog will cover: +Reproducible homelab guides (Proxmox, Docker, Authentik, reverse proxies). Cloud blueprints that scale from personal to org-grade. Transferable leadership → architecture lessons (risk, controls, finance). Thanks for being here—let’s build.

November 2, 2025 · 1 min · Kenny Bondelie
+ \ No newline at end of file diff --git a/askkennyb/public/categories/meta/index.xml b/askkennyb/public/categories/meta/index.xml new file mode 100644 index 0000000..795f9b0 --- /dev/null +++ b/askkennyb/public/categories/meta/index.xml @@ -0,0 +1 @@ +Meta on Ask KennyBhttps://askkennyb.com/categories/meta/Recent content in Meta on Ask KennyBHugo -- 0.152.2en-usSun, 02 Nov 2025 00:00:00 +0000Hello, World — Why Ask Kenny B?https://askkennyb.com/blog/hello-world-why-ask-kenny-b/Sun, 02 Nov 2025 00:00:00 +0000https://askkennyb.com/blog/hello-world-why-ask-kenny-b/What this space is about: practical homelab builds, cloud security, and translating leadership into hands-on architecture. \ No newline at end of file diff --git a/askkennyb/public/categories/meta/page/1/index.html b/askkennyb/public/categories/meta/page/1/index.html new file mode 100644 index 0000000..fdebc22 --- /dev/null +++ b/askkennyb/public/categories/meta/page/1/index.html @@ -0,0 +1 @@ +https://askkennyb.com/categories/meta/ \ No newline at end of file diff --git a/askkennyb/public/favicon-16x16.png b/askkennyb/public/favicon-16x16.png new file mode 100644 index 0000000..7933e50 Binary files /dev/null and b/askkennyb/public/favicon-16x16.png differ diff --git a/askkennyb/public/favicon-32x32.png b/askkennyb/public/favicon-32x32.png new file mode 100644 index 0000000..04694e1 Binary files /dev/null and b/askkennyb/public/favicon-32x32.png differ diff --git a/askkennyb/public/favicon.ico b/askkennyb/public/favicon.ico new file mode 100644 index 0000000..7565d16 Binary files /dev/null and b/askkennyb/public/favicon.ico differ diff --git a/askkennyb/public/images/logo_words.svg b/askkennyb/public/images/logo_words.svg new file mode 100644 index 0000000..3aada51 --- /dev/null +++ b/askkennyb/public/images/logo_words.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/askkennyb/public/images/profile.png b/askkennyb/public/images/profile.png new file mode 100644 index 0000000..5d8b838 Binary files /dev/null and b/askkennyb/public/images/profile.png differ diff --git a/askkennyb/public/index.html b/askkennyb/public/index.html new file mode 100644 index 0000000..203a61f --- /dev/null +++ b/askkennyb/public/index.html @@ -0,0 +1,13 @@ +Ask KennyB
Kenny Bondelie
👋 I’m Kenny Bondelie — finance leader turned hands-on IT and security architect.
I write about building reliable systems, both technical and organizational.

Ask KennyB

From nonprofit CFO → hands-on IT & security leader. Homelab, cloud, ops, and practical strategy.

Project Log: Docker Dreams and YAML Nightmares

Sometimes the difference between a ‘production-ready stack’ and ‘why is my NAS on fire?’ is one missing space in a YAML file. +It started innocently enough: +a single docker-compose.yml, neat and tidy, humming along like a well-trained orchestra. Then I added one new service—my self-hosted note app—and everything fell apart. +The Symptoms Containers refusing to start with no useful logs DNS loops that made my router question its purpose My wife asking, “Why is our TV buffering when you touch the server?” The Diagnosis Turns out, I nested a volume mount under the wrong key. +YAML: 1 — Human: 0. +...

November 5, 2025 · 1 min · Kenny Bondelie

Hello, World — Why Ask Kenny B?

Welcome! This blog will cover: +Reproducible homelab guides (Proxmox, Docker, Authentik, reverse proxies). Cloud blueprints that scale from personal to org-grade. Transferable leadership → architecture lessons (risk, controls, finance). Thanks for being here—let’s build.

November 2, 2025 · 1 min · Kenny Bondelie
+ \ No newline at end of file diff --git a/askkennyb/public/index.xml b/askkennyb/public/index.xml new file mode 100644 index 0000000..fe34de0 --- /dev/null +++ b/askkennyb/public/index.xml @@ -0,0 +1 @@ +Home on Ask KennyBhttps://askkennyb.com/Recent content in Home on Ask KennyBHugo -- 0.152.2en-usWed, 05 Nov 2025 00:00:00 +0000Project Log: Docker Dreams and YAML Nightmareshttps://askkennyb.com/blog/project-log-docker-dreams-and-yaml-nightmares/Wed, 05 Nov 2025 00:00:00 +0000https://askkennyb.com/blog/project-log-docker-dreams-and-yaml-nightmares/A totally serious update on my local lab, featuring unexpected container drama, a misbehaving reverse proxy, and lessons in patience.Hello, World — Why Ask Kenny B?https://askkennyb.com/blog/hello-world-why-ask-kenny-b/Sun, 02 Nov 2025 00:00:00 +0000https://askkennyb.com/blog/hello-world-why-ask-kenny-b/What this space is about: practical homelab builds, cloud security, and translating leadership into hands-on architecture. \ No newline at end of file diff --git a/askkennyb/public/page/1/index.html b/askkennyb/public/page/1/index.html new file mode 100644 index 0000000..c6a5a32 --- /dev/null +++ b/askkennyb/public/page/1/index.html @@ -0,0 +1 @@ +https://askkennyb.com/ \ No newline at end of file diff --git a/askkennyb/public/posts/index.html b/askkennyb/public/posts/index.html new file mode 100644 index 0000000..a034161 --- /dev/null +++ b/askkennyb/public/posts/index.html @@ -0,0 +1,13 @@ +Posts | Ask KennyB

Project Log: Docker Dreams and YAML Nightmares

Sometimes the difference between a ‘production-ready stack’ and ‘why is my NAS on fire?’ is one missing space in a YAML file. +It started innocently enough: +a single docker-compose.yml, neat and tidy, humming along like a well-trained orchestra. Then I added one new service—my self-hosted note app—and everything fell apart. +The Symptoms Containers refusing to start with no useful logs DNS loops that made my router question its purpose My wife asking, “Why is our TV buffering when you touch the server?” The Diagnosis Turns out, I nested a volume mount under the wrong key. +YAML: 1 — Human: 0. +...

November 5, 2025 · 1 min · Kenny Bondelie

Hello, World — Why Ask Kenny B?

Welcome! This blog will cover: +Reproducible homelab guides (Proxmox, Docker, Authentik, reverse proxies). Cloud blueprints that scale from personal to org-grade. Transferable leadership → architecture lessons (risk, controls, finance). Thanks for being here—let’s build.

November 2, 2025 · 1 min · Kenny Bondelie
+ \ No newline at end of file diff --git a/askkennyb/public/posts/index.xml b/askkennyb/public/posts/index.xml new file mode 100644 index 0000000..8dd8f42 --- /dev/null +++ b/askkennyb/public/posts/index.xml @@ -0,0 +1 @@ +Posts on Ask KennyBhttps://askkennyb.com/posts/Recent content in Posts on Ask KennyBHugo -- 0.152.2en-usWed, 05 Nov 2025 00:00:00 +0000Project Log: Docker Dreams and YAML Nightmareshttps://askkennyb.com/blog/project-log-docker-dreams-and-yaml-nightmares/Wed, 05 Nov 2025 00:00:00 +0000https://askkennyb.com/blog/project-log-docker-dreams-and-yaml-nightmares/A totally serious update on my local lab, featuring unexpected container drama, a misbehaving reverse proxy, and lessons in patience.Hello, World — Why Ask Kenny B?https://askkennyb.com/blog/hello-world-why-ask-kenny-b/Sun, 02 Nov 2025 00:00:00 +0000https://askkennyb.com/blog/hello-world-why-ask-kenny-b/What this space is about: practical homelab builds, cloud security, and translating leadership into hands-on architecture. \ No newline at end of file diff --git a/askkennyb/public/posts/page/1/index.html b/askkennyb/public/posts/page/1/index.html new file mode 100644 index 0000000..a32ea9a --- /dev/null +++ b/askkennyb/public/posts/page/1/index.html @@ -0,0 +1 @@ +https://askkennyb.com/posts/ \ No newline at end of file diff --git a/askkennyb/public/robots.txt b/askkennyb/public/robots.txt new file mode 100644 index 0000000..46e2eff --- /dev/null +++ b/askkennyb/public/robots.txt @@ -0,0 +1,3 @@ +User-agent: * +Disallow: +Sitemap: https://askkennyb.com/sitemap.xml diff --git a/askkennyb/public/site.webmanifest b/askkennyb/public/site.webmanifest new file mode 100644 index 0000000..45dc8a2 --- /dev/null +++ b/askkennyb/public/site.webmanifest @@ -0,0 +1 @@ +{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} \ No newline at end of file diff --git a/askkennyb/public/sitemap.xml b/askkennyb/public/sitemap.xml new file mode 100644 index 0000000..b67ccb1 --- /dev/null +++ b/askkennyb/public/sitemap.xml @@ -0,0 +1 @@ +https://askkennyb.com/categories/2025-11-05T00:00:00+00:00https://askkennyb.com/categories/devops/2025-11-05T00:00:00+00:00https://askkennyb.com/tags/docker/2025-11-05T00:00:00+00:00https://askkennyb.com/2025-11-05T00:00:00+00:00https://askkennyb.com/tags/homelab/2025-11-05T00:00:00+00:00https://askkennyb.com/tags/humor/2025-11-05T00:00:00+00:00https://askkennyb.com/tags/networking/2025-11-05T00:00:00+00:00https://askkennyb.com/posts/2025-11-05T00:00:00+00:00https://askkennyb.com/blog/project-log-docker-dreams-and-yaml-nightmares/2025-11-05T00:00:00+00:00https://askkennyb.com/tags/2025-11-05T00:00:00+00:00https://askkennyb.com/about/2025-11-03T16:47:38-08:00https://askkennyb.com/blog/hello-world-why-ask-kenny-b/2025-11-02T00:00:00+00:00https://askkennyb.com/tags/intro/2025-11-02T00:00:00+00:00https://askkennyb.com/categories/meta/2025-11-02T00:00:00+00:00https://askkennyb.com/tags/project/2025-11-02T00:00:00+00:00 \ No newline at end of file diff --git a/askkennyb/public/tags/docker/index.html b/askkennyb/public/tags/docker/index.html new file mode 100644 index 0000000..ab44f86 --- /dev/null +++ b/askkennyb/public/tags/docker/index.html @@ -0,0 +1,12 @@ +Docker | Ask KennyB

Project Log: Docker Dreams and YAML Nightmares

Sometimes the difference between a ‘production-ready stack’ and ‘why is my NAS on fire?’ is one missing space in a YAML file. +It started innocently enough: +a single docker-compose.yml, neat and tidy, humming along like a well-trained orchestra. Then I added one new service—my self-hosted note app—and everything fell apart. +The Symptoms Containers refusing to start with no useful logs DNS loops that made my router question its purpose My wife asking, “Why is our TV buffering when you touch the server?” The Diagnosis Turns out, I nested a volume mount under the wrong key. +YAML: 1 — Human: 0. +...

November 5, 2025 · 1 min · Kenny Bondelie
+ \ No newline at end of file diff --git a/askkennyb/public/tags/docker/index.xml b/askkennyb/public/tags/docker/index.xml new file mode 100644 index 0000000..81f7250 --- /dev/null +++ b/askkennyb/public/tags/docker/index.xml @@ -0,0 +1 @@ +Docker on Ask KennyBhttps://askkennyb.com/tags/docker/Recent content in Docker on Ask KennyBHugo -- 0.152.2en-usWed, 05 Nov 2025 00:00:00 +0000Project Log: Docker Dreams and YAML Nightmareshttps://askkennyb.com/blog/project-log-docker-dreams-and-yaml-nightmares/Wed, 05 Nov 2025 00:00:00 +0000https://askkennyb.com/blog/project-log-docker-dreams-and-yaml-nightmares/A totally serious update on my local lab, featuring unexpected container drama, a misbehaving reverse proxy, and lessons in patience. \ No newline at end of file diff --git a/askkennyb/public/tags/docker/page/1/index.html b/askkennyb/public/tags/docker/page/1/index.html new file mode 100644 index 0000000..0ea3568 --- /dev/null +++ b/askkennyb/public/tags/docker/page/1/index.html @@ -0,0 +1 @@ +https://askkennyb.com/tags/docker/ \ No newline at end of file diff --git a/askkennyb/public/tags/homelab/index.html b/askkennyb/public/tags/homelab/index.html new file mode 100644 index 0000000..80954cc --- /dev/null +++ b/askkennyb/public/tags/homelab/index.html @@ -0,0 +1,13 @@ +Homelab | Ask KennyB

Project Log: Docker Dreams and YAML Nightmares

Sometimes the difference between a ‘production-ready stack’ and ‘why is my NAS on fire?’ is one missing space in a YAML file. +It started innocently enough: +a single docker-compose.yml, neat and tidy, humming along like a well-trained orchestra. Then I added one new service—my self-hosted note app—and everything fell apart. +The Symptoms Containers refusing to start with no useful logs DNS loops that made my router question its purpose My wife asking, “Why is our TV buffering when you touch the server?” The Diagnosis Turns out, I nested a volume mount under the wrong key. +YAML: 1 — Human: 0. +...

November 5, 2025 · 1 min · Kenny Bondelie

Hello, World — Why Ask Kenny B?

Welcome! This blog will cover: +Reproducible homelab guides (Proxmox, Docker, Authentik, reverse proxies). Cloud blueprints that scale from personal to org-grade. Transferable leadership → architecture lessons (risk, controls, finance). Thanks for being here—let’s build.

November 2, 2025 · 1 min · Kenny Bondelie
+ \ No newline at end of file diff --git a/askkennyb/public/tags/homelab/index.xml b/askkennyb/public/tags/homelab/index.xml new file mode 100644 index 0000000..503eb61 --- /dev/null +++ b/askkennyb/public/tags/homelab/index.xml @@ -0,0 +1 @@ +Homelab on Ask KennyBhttps://askkennyb.com/tags/homelab/Recent content in Homelab on Ask KennyBHugo -- 0.152.2en-usWed, 05 Nov 2025 00:00:00 +0000Project Log: Docker Dreams and YAML Nightmareshttps://askkennyb.com/blog/project-log-docker-dreams-and-yaml-nightmares/Wed, 05 Nov 2025 00:00:00 +0000https://askkennyb.com/blog/project-log-docker-dreams-and-yaml-nightmares/A totally serious update on my local lab, featuring unexpected container drama, a misbehaving reverse proxy, and lessons in patience.Hello, World — Why Ask Kenny B?https://askkennyb.com/blog/hello-world-why-ask-kenny-b/Sun, 02 Nov 2025 00:00:00 +0000https://askkennyb.com/blog/hello-world-why-ask-kenny-b/What this space is about: practical homelab builds, cloud security, and translating leadership into hands-on architecture. \ No newline at end of file diff --git a/askkennyb/public/tags/homelab/page/1/index.html b/askkennyb/public/tags/homelab/page/1/index.html new file mode 100644 index 0000000..117e8e1 --- /dev/null +++ b/askkennyb/public/tags/homelab/page/1/index.html @@ -0,0 +1 @@ +https://askkennyb.com/tags/homelab/ \ No newline at end of file diff --git a/askkennyb/public/tags/humor/index.html b/askkennyb/public/tags/humor/index.html new file mode 100644 index 0000000..7a8cf71 --- /dev/null +++ b/askkennyb/public/tags/humor/index.html @@ -0,0 +1,12 @@ +Humor | Ask KennyB

Project Log: Docker Dreams and YAML Nightmares

Sometimes the difference between a ‘production-ready stack’ and ‘why is my NAS on fire?’ is one missing space in a YAML file. +It started innocently enough: +a single docker-compose.yml, neat and tidy, humming along like a well-trained orchestra. Then I added one new service—my self-hosted note app—and everything fell apart. +The Symptoms Containers refusing to start with no useful logs DNS loops that made my router question its purpose My wife asking, “Why is our TV buffering when you touch the server?” The Diagnosis Turns out, I nested a volume mount under the wrong key. +YAML: 1 — Human: 0. +...

November 5, 2025 · 1 min · Kenny Bondelie
+ \ No newline at end of file diff --git a/askkennyb/public/tags/humor/index.xml b/askkennyb/public/tags/humor/index.xml new file mode 100644 index 0000000..4aa22a5 --- /dev/null +++ b/askkennyb/public/tags/humor/index.xml @@ -0,0 +1 @@ +Humor on Ask KennyBhttps://askkennyb.com/tags/humor/Recent content in Humor on Ask KennyBHugo -- 0.152.2en-usWed, 05 Nov 2025 00:00:00 +0000Project Log: Docker Dreams and YAML Nightmareshttps://askkennyb.com/blog/project-log-docker-dreams-and-yaml-nightmares/Wed, 05 Nov 2025 00:00:00 +0000https://askkennyb.com/blog/project-log-docker-dreams-and-yaml-nightmares/A totally serious update on my local lab, featuring unexpected container drama, a misbehaving reverse proxy, and lessons in patience. \ No newline at end of file diff --git a/askkennyb/public/tags/humor/page/1/index.html b/askkennyb/public/tags/humor/page/1/index.html new file mode 100644 index 0000000..5648a2b --- /dev/null +++ b/askkennyb/public/tags/humor/page/1/index.html @@ -0,0 +1 @@ +https://askkennyb.com/tags/humor/ \ No newline at end of file diff --git a/askkennyb/public/tags/index.html b/askkennyb/public/tags/index.html new file mode 100644 index 0000000..b61d9bc --- /dev/null +++ b/askkennyb/public/tags/index.html @@ -0,0 +1,7 @@ +Tags | Ask KennyB
+ \ No newline at end of file diff --git a/askkennyb/public/tags/index.xml b/askkennyb/public/tags/index.xml new file mode 100644 index 0000000..88d1dd7 --- /dev/null +++ b/askkennyb/public/tags/index.xml @@ -0,0 +1 @@ +Tags on Ask KennyBhttps://askkennyb.com/tags/Recent content in Tags on Ask KennyBHugo -- 0.152.2en-usWed, 05 Nov 2025 00:00:00 +0000Dockerhttps://askkennyb.com/tags/docker/Wed, 05 Nov 2025 00:00:00 +0000https://askkennyb.com/tags/docker/Homelabhttps://askkennyb.com/tags/homelab/Wed, 05 Nov 2025 00:00:00 +0000https://askkennyb.com/tags/homelab/Humorhttps://askkennyb.com/tags/humor/Wed, 05 Nov 2025 00:00:00 +0000https://askkennyb.com/tags/humor/Networkinghttps://askkennyb.com/tags/networking/Wed, 05 Nov 2025 00:00:00 +0000https://askkennyb.com/tags/networking/Introhttps://askkennyb.com/tags/intro/Sun, 02 Nov 2025 00:00:00 +0000https://askkennyb.com/tags/intro/Projecthttps://askkennyb.com/tags/project/Sun, 02 Nov 2025 00:00:00 +0000https://askkennyb.com/tags/project/ \ No newline at end of file diff --git a/askkennyb/public/tags/intro/index.html b/askkennyb/public/tags/intro/index.html new file mode 100644 index 0000000..85f6bd1 --- /dev/null +++ b/askkennyb/public/tags/intro/index.html @@ -0,0 +1,8 @@ +Intro | Ask KennyB

Hello, World — Why Ask Kenny B?

Welcome! This blog will cover: +Reproducible homelab guides (Proxmox, Docker, Authentik, reverse proxies). Cloud blueprints that scale from personal to org-grade. Transferable leadership → architecture lessons (risk, controls, finance). Thanks for being here—let’s build.

November 2, 2025 · 1 min · Kenny Bondelie
+ \ No newline at end of file diff --git a/askkennyb/public/tags/intro/index.xml b/askkennyb/public/tags/intro/index.xml new file mode 100644 index 0000000..0f9395f --- /dev/null +++ b/askkennyb/public/tags/intro/index.xml @@ -0,0 +1 @@ +Intro on Ask KennyBhttps://askkennyb.com/tags/intro/Recent content in Intro on Ask KennyBHugo -- 0.152.2en-usSun, 02 Nov 2025 00:00:00 +0000Hello, World — Why Ask Kenny B?https://askkennyb.com/blog/hello-world-why-ask-kenny-b/Sun, 02 Nov 2025 00:00:00 +0000https://askkennyb.com/blog/hello-world-why-ask-kenny-b/What this space is about: practical homelab builds, cloud security, and translating leadership into hands-on architecture. \ No newline at end of file diff --git a/askkennyb/public/tags/intro/page/1/index.html b/askkennyb/public/tags/intro/page/1/index.html new file mode 100644 index 0000000..50f5bdf --- /dev/null +++ b/askkennyb/public/tags/intro/page/1/index.html @@ -0,0 +1 @@ +https://askkennyb.com/tags/intro/ \ No newline at end of file diff --git a/askkennyb/public/tags/networking/index.html b/askkennyb/public/tags/networking/index.html new file mode 100644 index 0000000..40d2655 --- /dev/null +++ b/askkennyb/public/tags/networking/index.html @@ -0,0 +1,12 @@ +Networking | Ask KennyB

Project Log: Docker Dreams and YAML Nightmares

Sometimes the difference between a ‘production-ready stack’ and ‘why is my NAS on fire?’ is one missing space in a YAML file. +It started innocently enough: +a single docker-compose.yml, neat and tidy, humming along like a well-trained orchestra. Then I added one new service—my self-hosted note app—and everything fell apart. +The Symptoms Containers refusing to start with no useful logs DNS loops that made my router question its purpose My wife asking, “Why is our TV buffering when you touch the server?” The Diagnosis Turns out, I nested a volume mount under the wrong key. +YAML: 1 — Human: 0. +...

November 5, 2025 · 1 min · Kenny Bondelie
+ \ No newline at end of file diff --git a/askkennyb/public/tags/networking/index.xml b/askkennyb/public/tags/networking/index.xml new file mode 100644 index 0000000..7e126ef --- /dev/null +++ b/askkennyb/public/tags/networking/index.xml @@ -0,0 +1 @@ +Networking on Ask KennyBhttps://askkennyb.com/tags/networking/Recent content in Networking on Ask KennyBHugo -- 0.152.2en-usWed, 05 Nov 2025 00:00:00 +0000Project Log: Docker Dreams and YAML Nightmareshttps://askkennyb.com/blog/project-log-docker-dreams-and-yaml-nightmares/Wed, 05 Nov 2025 00:00:00 +0000https://askkennyb.com/blog/project-log-docker-dreams-and-yaml-nightmares/A totally serious update on my local lab, featuring unexpected container drama, a misbehaving reverse proxy, and lessons in patience. \ No newline at end of file diff --git a/askkennyb/public/tags/networking/page/1/index.html b/askkennyb/public/tags/networking/page/1/index.html new file mode 100644 index 0000000..834f194 --- /dev/null +++ b/askkennyb/public/tags/networking/page/1/index.html @@ -0,0 +1 @@ +https://askkennyb.com/tags/networking/ \ No newline at end of file diff --git a/askkennyb/public/tags/project/index.html b/askkennyb/public/tags/project/index.html new file mode 100644 index 0000000..c13802c --- /dev/null +++ b/askkennyb/public/tags/project/index.html @@ -0,0 +1,8 @@ +Project | Ask KennyB

Hello, World — Why Ask Kenny B?

Welcome! This blog will cover: +Reproducible homelab guides (Proxmox, Docker, Authentik, reverse proxies). Cloud blueprints that scale from personal to org-grade. Transferable leadership → architecture lessons (risk, controls, finance). Thanks for being here—let’s build.

November 2, 2025 · 1 min · Kenny Bondelie
+ \ No newline at end of file diff --git a/askkennyb/public/tags/project/index.xml b/askkennyb/public/tags/project/index.xml new file mode 100644 index 0000000..c8ada21 --- /dev/null +++ b/askkennyb/public/tags/project/index.xml @@ -0,0 +1 @@ +Project on Ask KennyBhttps://askkennyb.com/tags/project/Recent content in Project on Ask KennyBHugo -- 0.152.2en-usSun, 02 Nov 2025 00:00:00 +0000Hello, World — Why Ask Kenny B?https://askkennyb.com/blog/hello-world-why-ask-kenny-b/Sun, 02 Nov 2025 00:00:00 +0000https://askkennyb.com/blog/hello-world-why-ask-kenny-b/What this space is about: practical homelab builds, cloud security, and translating leadership into hands-on architecture. \ No newline at end of file diff --git a/askkennyb/public/tags/project/page/1/index.html b/askkennyb/public/tags/project/page/1/index.html new file mode 100644 index 0000000..d2a591f --- /dev/null +++ b/askkennyb/public/tags/project/page/1/index.html @@ -0,0 +1 @@ +https://askkennyb.com/tags/project/ \ No newline at end of file diff --git a/askkennyb/static/android-chrome-192x192.png b/askkennyb/static/android-chrome-192x192.png new file mode 100644 index 0000000..00f512e Binary files /dev/null and b/askkennyb/static/android-chrome-192x192.png differ diff --git a/askkennyb/static/android-chrome-512x512.png b/askkennyb/static/android-chrome-512x512.png new file mode 100644 index 0000000..7eef27e Binary files /dev/null and b/askkennyb/static/android-chrome-512x512.png differ diff --git a/askkennyb/static/apple-touch-icon.png b/askkennyb/static/apple-touch-icon.png new file mode 100644 index 0000000..08d8092 Binary files /dev/null and b/askkennyb/static/apple-touch-icon.png differ diff --git a/askkennyb/static/favicon-16x16.png b/askkennyb/static/favicon-16x16.png new file mode 100644 index 0000000..7933e50 Binary files /dev/null and b/askkennyb/static/favicon-16x16.png differ diff --git a/askkennyb/static/favicon-32x32.png b/askkennyb/static/favicon-32x32.png new file mode 100644 index 0000000..04694e1 Binary files /dev/null and b/askkennyb/static/favicon-32x32.png differ diff --git a/askkennyb/static/favicon.ico b/askkennyb/static/favicon.ico new file mode 100644 index 0000000..7565d16 Binary files /dev/null and b/askkennyb/static/favicon.ico differ diff --git a/askkennyb/static/images/logo_words.svg b/askkennyb/static/images/logo_words.svg new file mode 100644 index 0000000..3aada51 --- /dev/null +++ b/askkennyb/static/images/logo_words.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/askkennyb/static/images/profile.png b/askkennyb/static/images/profile.png new file mode 100644 index 0000000..5d8b838 Binary files /dev/null and b/askkennyb/static/images/profile.png differ diff --git a/askkennyb/static/site.webmanifest b/askkennyb/static/site.webmanifest new file mode 100644 index 0000000..45dc8a2 --- /dev/null +++ b/askkennyb/static/site.webmanifest @@ -0,0 +1 @@ +{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} \ No newline at end of file diff --git a/askkennyb/themes/PaperMod/.github/ISSUE_TEMPLATE/bug.yaml b/askkennyb/themes/PaperMod/.github/ISSUE_TEMPLATE/bug.yaml new file mode 100644 index 0000000..d7d7656 --- /dev/null +++ b/askkennyb/themes/PaperMod/.github/ISSUE_TEMPLATE/bug.yaml @@ -0,0 +1,112 @@ +name: Bug Report 🐞 +description: Create a report to help us improve +title: "[Bug]: " +labels: ["bug", "triage"] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this bug report :) + - Kindly **DO NOT** ask for instructions. + - Use [Discussions](https://github.com/adityatelange/hugo-PaperMod/discussions) section if you have a query or doubts or any other relevant question. + - You may join [Discord community](https://discord.gg/ahpmTvhVmp) to interact with fellow contributors and users + - Read project's [Wiki](https://github.com/adityatelange/hugo-PaperMod/wiki) for detailed documentation. + - Read project's [FAQs](https://github.com/adityatelange/hugo-PaperMod/wiki/FAQs) section for Frequently asked questions. + - Search for previous [Issues](https://github.com/adityatelange/hugo-PaperMod/issues)/[Pull Requests](https://github.com/adityatelange/hugo-PaperMod/pulls) if this issue is already reported or fix has been created. + - type: textarea + id: what_happened + attributes: + label: What happened? + description: Also tell us, what did you expect to happen? + placeholder: A bug happened! Here are the screenshots.. Tell us what you see! + validations: + required: true + - type: textarea + id: steps_to_reproduce + attributes: + label: Steps to reproduce + description: How to reproduce this issue. Here are the steps... + placeholder: | + 1. Go to '...' + 2. Click on '....' + 3. Scroll down to '....' + 4. See error + validations: + required: true + - type: dropdown + id: hugo_version + attributes: + label: Hugo Version + description: What version of Hugo are you running? + options: + - Hugo >= 0.146.0 (Recommended - Minimum version required for PaperMod) + - Hugo < 0.146.0 (Incompatible - Not recommended to build PaperMod on lower versions) + validations: + required: true + - type: input + id: papermod_version + attributes: + label: PaperMod Version + description: What version of PaperMod are you running? + placeholder: | + PaperMod v7.0 or + Branch master or + Commit-id: 3f50861a0ced88f9b614a43662edeb4c0bc45da8 + validations: + required: true + - type: dropdown + id: browser_type + attributes: + label: What kind of devices are you seeing the problem on? + multiple: true + options: + - Mobile + - Desktop + validations: + required: false + - type: dropdown + id: browsers + attributes: + label: What browsers are you seeing the problem on? + multiple: true + options: + - Firefox + - Chrome + - Safari + - Microsoft Edge + validations: + required: false + - type: input + id: browser_version + attributes: + label: Browser Version + description: Please add browser version or enter user agent string (navigator.userAgent) + placeholder: ex. Google Chrome 86.0 + validations: + required: false + - type: textarea + id: logs + attributes: + label: Relevant log output + description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks. + render: shell + validations: + required: true + - type: input + id: repo_url + attributes: + label: Repository/Source Code link where this issue can be reproduced + description: Please add url of the repository where this issue can be reproduced + placeholder: https://github.com// + validations: + required: false + - type: checkboxes + id: terms + attributes: + label: Code of Conduct + description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/adityatelange/hugo-PaperMod?tab=coc-ov-file#readme). + options: + - label: I agree to follow this project's Code of Conduct + required: true + validations: + required: true diff --git a/askkennyb/themes/PaperMod/.github/ISSUE_TEMPLATE/config.yml b/askkennyb/themes/PaperMod/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..eeb6e55 --- /dev/null +++ b/askkennyb/themes/PaperMod/.github/ISSUE_TEMPLATE/config.yml @@ -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. diff --git a/askkennyb/themes/PaperMod/.github/ISSUE_TEMPLATE/enhancement.yaml b/askkennyb/themes/PaperMod/.github/ISSUE_TEMPLATE/enhancement.yaml new file mode 100644 index 0000000..3976a80 --- /dev/null +++ b/askkennyb/themes/PaperMod/.github/ISSUE_TEMPLATE/enhancement.yaml @@ -0,0 +1,32 @@ +name: Enhancement 🚀 +description: Propose a new feature or change for enhancing the experience. +title: "[Enhancement]: " +labels: ["enhancement", "triage"] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this enhancement form :) + - Use [Discussions](https://github.com/adityatelange/hugo-PaperMod/discussions) section if you have a query or doubts or any other relevant question. + - You may join [Discord community](https://discord.gg/ahpmTvhVmp) to interact with fellow contributors and users + - Read project's [Wiki](https://github.com/adityatelange/hugo-PaperMod/wiki) for detailed documentation. + - Read project's [FAQs](https://github.com/adityatelange/hugo-PaperMod/wiki/FAQs) section for Frequently asked questions. + - Search for previous [Issues](https://github.com/adityatelange/hugo-PaperMod/issues)/[Pull Requests](https://github.com/adityatelange/hugo-PaperMod/pulls) if this issue is already reported or fix has been created. + - type: textarea + id: what_happened + attributes: + label: What you'd like to propose? + description: + placeholder: + validations: + required: true + - type: checkboxes + id: terms + attributes: + label: Code of Conduct + description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/adityatelange/hugo-PaperMod?tab=coc-ov-file#readme). + options: + - label: I agree to follow this project's Code of Conduct + required: true + validations: + required: true \ No newline at end of file diff --git a/askkennyb/themes/PaperMod/.github/PULL_REQUEST_TEMPLATE.md b/askkennyb/themes/PaperMod/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..673d1c4 --- /dev/null +++ b/askkennyb/themes/PaperMod/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,44 @@ + + + +**What does this PR change? What problem does it solve?** + + + + +**Was the change discussed in an issue or in the Discussions before?** + + + + +## 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. diff --git a/askkennyb/themes/PaperMod/.github/workflows/gh-pages.yml b/askkennyb/themes/PaperMod/.github/workflows/gh-pages.yml new file mode 100644 index 0000000..7dc6f1c --- /dev/null +++ b/askkennyb/themes/PaperMod/.github/workflows/gh-pages.yml @@ -0,0 +1,77 @@ +name: Deploy Hugo PaperMod Demo to Pages + +on: + push: + paths-ignore: + - "images/**" + - "LICENSE" + - "README.md" + branches: + - master + - exampleSite + workflow_dispatch: + # manual run + inputs: + hugoVersion: + description: "Hugo Version" + required: false + default: "0.146.0" + +# 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: + # Build job + build: + runs-on: ubuntu-latest + env: + HUGO_VERSION: ${{ github.event.inputs.hugoVersion || '0.146.0' }} + steps: + - 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@v4 + with: + ref: exampleSite + - name: Setup Pages + id: pages + uses: actions/configure-pages@v5 + - name: Get Theme + run: git submodule update --init --recursive + - name: Update theme to Latest commit + run: git submodule update --remote --merge + - name: Build with Hugo + run: | + hugo \ + --buildDrafts --gc \ + --baseURL ${{ steps.pages.outputs.base_url }} + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + 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@v4 diff --git a/askkennyb/themes/PaperMod/LICENSE b/askkennyb/themes/PaperMod/LICENSE new file mode 100644 index 0000000..533adaf --- /dev/null +++ b/askkennyb/themes/PaperMod/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2020 nanxiaobei and adityatelange +Copyright (c) 2021-2025 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 +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/askkennyb/themes/PaperMod/README.md b/askkennyb/themes/PaperMod/README.md new file mode 100644 index 0000000..7b2956e --- /dev/null +++ b/askkennyb/themes/PaperMod/README.md @@ -0,0 +1,106 @@ +

Hugo PaperMod | Demo

+ +

☄️ Fast | ☁️ Fluent | 🌙 Smooth | 📱 Responsive

+
+ +> Hugo PaperMod is a theme based on [hugo-paper](https://github.com/nanxiaobei/hugo-paper/tree/4330c8b12aa48bfdecbcad6ad66145f679a430b3).
+> The goal of this project is to add more features and customization to the og theme. + +**Documentation** can be found here: [**📚 Wiki**](https://github.com/adityatelange/hugo-PaperMod/wiki) + +**ExampleSite** can be found here: [**exampleSite**](https://github.com/adityatelange/hugo-PaperMod/tree/exampleSite). Demo is built up with [exampleSite](https://github.com/adityatelange/hugo-PaperMod/tree/exampleSite) as source. + +[![hugo-papermod](https://img.shields.io/badge/Hugo--Themes-@PaperMod-blue)](https://themes.gohugo.io/themes/hugo-papermod/) +[![Minimum Hugo Version](https://img.shields.io/static/v1?label=min-HUGO-version&message=>=v0.146.0&color=blue&logo=hugo)](https://github.com/gohugoio/hugo/releases/tag/v0.146.0) +[![Discord](https://img.shields.io/discord/971046860317921340?label=Discord&logo=discord)](https://discord.gg/ahpmTvhVmp) +[![GitHub](https://img.shields.io/github/license/adityatelange/hugo-PaperMod)](https://github.com/adityatelange/hugo-PaperMod/blob/master/LICENSE) +![code-size](https://img.shields.io/github/languages/code-size/adityatelange/hugo-PaperMod) +[![X (formerly Twitter) URL](https://img.shields.io/badge/-Share%20on%20X-gray?style=flat&logo=x)](https://x.com/intent/tweet/?text=Checkout%20Hugo%20PaperMod%20%E2%9C%A8%0AA%20fast,%20clean,%20responsive%20Hugo%20theme.&url=https://github.com/adityatelange/hugo-PaperMod&hashtags=Hugo,PaperMod) + + +--- + +

+ Mockup image +

+ +--- + +## Features/Mods 💥 + +- Uses Hugo's asset generator with pipelining, fingerprinting, bundling and minification by default. +- 3 Modes: + - [Regular Mode.](https://github.com/adityatelange/hugo-PaperMod/wiki/Features#regular-mode-default-mode) + - [Home-Info Mode.](https://github.com/adityatelange/hugo-PaperMod/wiki/Features#home-info-mode) + - [Profile Mode.](https://github.com/adityatelange/hugo-PaperMod/wiki/Features#profile-mode) +- Table of Content Generation (newer implementation). +- Archive of posts. +- Social Icons (home-info and profile-mode). +- Social-Media Share buttons on posts. +- Menu location indicator. +- Multilingual support. (with language selector). +- Taxonomies. +- Cover image for each post (with Responsive image support). +- Light/Dark theme (automatic theme switch a/c to browser theme and theme-switch button). +- SEO Friendly. +- Multiple Author support. +- Search Page with Fuse.js +- Other Posts suggestion below a post +- Breadcrumb Navigation. +- Code Block Copy buttons. +- Hugo's Chroma syntax highlighter. +- No webpack, nodejs and other dependencies are required to edit the theme. + +Read Wiki For More Details => **[PaperMod - Features](https://github.com/adityatelange/hugo-PaperMod/wiki/Features)** + +--- + +## Install/Update 📥 + +Read Wiki For More Details => **[PaperMod - Installation](https://github.com/adityatelange/hugo-PaperMod/wiki/Installation)** + +--- + +## FAQs / How To's Guide 🙋 + +Read Wiki For More Details => **[PaperMod-FAQs](https://github.com/adityatelange/hugo-PaperMod/wiki/FAQs)** + +--- + +## Social-Icons/Share-Icons 🖼️ + +Read Wiki For More Details => **[PaperMod-Icons](https://github.com/adityatelange/hugo-PaperMod/wiki/Icons)** + +--- + +## Release Changelog 📃 + +Release ChangeLog has info about stuff added: **[Releases](https://github.com/adityatelange/hugo-PaperMod/releases)** + +--- + +## [Pagespeed Insights (100% ?)](https://pagespeed.web.dev/report?url=https://adityatelange.github.io/hugo-PaperMod/) 👀 + +--- + +## Support 🫶 + +- Star 🌟 this repository. +- Help spread the word about PaperMod by sharing it on social media and recommending it to your friends. 🗣️ +- You can also sponsor 🏅 on [Github Sponsors](https://github.com/sponsors/adityatelange) / [Ko-Fi](https://ko-fi.com/adityatelange). + +--- + +## Special Thanks 🌟 + +- [**Highlight.js**](https://github.com/highlightjs/highlight.js) +- [**Fuse.js**](https://github.com/krisk/fuse) +- [**Feather Icons**](https://github.com/feathericons/feather) +- [**Simple Icons**](https://github.com/simple-icons/simple-icons) +- **All Contributors and Supporters** + +--- + +## Stargazers over time 📈 + +[![Stargazers over time](https://starchart.cc/adityatelange/hugo-PaperMod.svg?background=%23ffffff00&axis=%23858585&line=%236b63ff)](https://starchart.cc/adityatelange/hugo-PaperMod) diff --git a/askkennyb/themes/PaperMod/assets/css/common/404.css b/askkennyb/themes/PaperMod/assets/css/common/404.css new file mode 100644 index 0000000..8a23430 --- /dev/null +++ b/askkennyb/themes/PaperMod/assets/css/common/404.css @@ -0,0 +1,11 @@ +.not-found { + position: absolute; + left: 0; + right: 0; + display: flex; + align-items: center; + justify-content: center; + height: 80%; + font-size: 160px; + font-weight: 700; +} diff --git a/askkennyb/themes/PaperMod/assets/css/common/archive.css b/askkennyb/themes/PaperMod/assets/css/common/archive.css new file mode 100644 index 0000000..7e7e245 --- /dev/null +++ b/askkennyb/themes/PaperMod/assets/css/common/archive.css @@ -0,0 +1,44 @@ +.archive-posts { + width: 100%; + font-size: 16px; +} + +.archive-year { + margin-top: 40px; +} + +.archive-year:not(:last-of-type) { + border-bottom: 2px solid var(--border); +} + +.archive-month { + display: flex; + align-items: flex-start; + padding: 10px 0; +} + +.archive-month-header { + margin: 25px 0; + width: 200px; +} + +.archive-month:not(:last-of-type) { + border-bottom: 1px solid var(--border); +} + +.archive-entry { + position: relative; + padding: 5px; + margin: 10px 0; +} + +.archive-entry-title { + margin: 5px 0; + font-weight: 400; +} + +.archive-count, +.archive-meta { + color: var(--secondary); + font-size: 14px; +} diff --git a/askkennyb/themes/PaperMod/assets/css/common/footer.css b/askkennyb/themes/PaperMod/assets/css/common/footer.css new file mode 100644 index 0000000..5addb1e --- /dev/null +++ b/askkennyb/themes/PaperMod/assets/css/common/footer.css @@ -0,0 +1,60 @@ +.footer, +.top-link { + font-size: 12px; + color: var(--secondary); +} + +.footer { + max-width: calc(var(--main-width) + var(--gap) * 2); + margin: auto; + padding: calc((var(--footer-height) - var(--gap)) / 2) var(--gap); + text-align: center; + line-height: 24px; +} + +.footer span { + margin-inline-start: 1px; + margin-inline-end: 1px; +} + +.footer span:last-child { + white-space: nowrap; +} + +.footer a { + color: inherit; + border-bottom: 1px solid var(--secondary); +} + +.footer a:hover { + border-bottom: 1px solid var(--primary); +} + +.top-link { + visibility: hidden; + position: fixed; + bottom: 60px; + right: 30px; + z-index: 99; + background: var(--tertiary); + width: 42px; + height: 42px; + padding: 12px; + border-radius: 64px; + transition: visibility 0.5s, opacity 0.8s linear; +} + +.top-link, +.top-link svg { + filter: drop-shadow(0px 0px 0px var(--theme)); +} + +.footer a:hover, +.top-link:hover { + color: var(--primary); +} + +.top-link:focus, +#theme-toggle:focus { + outline: 0; +} diff --git a/askkennyb/themes/PaperMod/assets/css/common/header.css b/askkennyb/themes/PaperMod/assets/css/common/header.css new file mode 100644 index 0000000..6896433 --- /dev/null +++ b/askkennyb/themes/PaperMod/assets/css/common/header.css @@ -0,0 +1,92 @@ +.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; +} + +[data-theme="dark"] #moon { + display: none; +} + +[data-theme="light"] #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; +} diff --git a/askkennyb/themes/PaperMod/assets/css/common/main.css b/askkennyb/themes/PaperMod/assets/css/common/main.css new file mode 100644 index 0000000..25ae4da --- /dev/null +++ b/askkennyb/themes/PaperMod/assets/css/common/main.css @@ -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; +} diff --git a/askkennyb/themes/PaperMod/assets/css/common/post-entry.css b/askkennyb/themes/PaperMod/assets/css/common/post-entry.css new file mode 100644 index 0000000..db9cd3f --- /dev/null +++ b/askkennyb/themes/PaperMod/assets/css/common/post-entry.css @@ -0,0 +1,106 @@ +.first-entry { + position: relative; + display: flex; + flex-direction: column; + justify-content: center; + min-height: 320px; + 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; +} + +.first-entry .entry-header h1 { + font-size: 34px; + line-height: 1.3; +} + +.first-entry .entry-content { + margin: 14px 0; + font-size: 16px; + -webkit-line-clamp: 3; +} + +.first-entry .entry-footer { + font-size: 14px; +} + +.home-info .entry-content { + -webkit-line-clamp: unset; +} + +.post-entry { + position: relative; + margin-bottom: var(--gap); + padding: var(--gap); + background: var(--entry); + border-radius: var(--radius); + transition: transform 0.1s; + border: 1px solid var(--border); +} + +.post-entry:active { + transform: scale(0.96); +} + +.tag-entry .entry-cover { + display: none; +} + +.entry-header h2 { + font-size: 24px; + line-height: 1.3; +} + +.entry-content { + margin: 8px 0; + color: var(--secondary); + font-size: 14px; + line-height: 1.6; + overflow: hidden; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; +} + +.entry-footer { + color: var(--secondary); + font-size: 13px; +} + +.entry-link { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; +} + +.entry-hint { + color: var(--secondary); +} + +.entry-hint-parent { + display: flex; + justify-content: space-between; +} + +.entry-cover { + font-size: 14px; + margin-bottom: var(--gap); + text-align: center; +} + +.entry-cover img { + border-radius: var(--radius); + width: 100%; + height: auto; +} + +.entry-cover a { + box-shadow: 0 1px 0 var(--primary); +} diff --git a/askkennyb/themes/PaperMod/assets/css/common/post-single.css b/askkennyb/themes/PaperMod/assets/css/common/post-single.css new file mode 100644 index 0000000..8906c1f --- /dev/null +++ b/askkennyb/themes/PaperMod/assets/css/common/post-single.css @@ -0,0 +1,417 @@ +.page-header, +.post-header { + margin: 24px auto var(--content-gap) auto; +} + +.post-title { + margin-bottom: 2px; + font-size: 40px; +} + +.post-description { + margin-top: 10px; + margin-bottom: 5px; +} + +.post-meta, +.breadcrumbs { + color: var(--secondary); + font-size: 14px; +} + +.breadcrumbs { + display: flex; + flex-wrap: wrap; + align-items: center; +} + +.i18n_list { + display: inline-flex; +} + +.post-meta .i18n_list li { + list-style: none; + margin: auto 3px; +} + +.breadcrumbs a { + font-size: 16px; +} + +.post-content { + color: var(--content); + margin: 30px 0; +} + +.post-content h3, +.post-content h4, +.post-content h5, +.post-content h6 { + margin: 24px 0 16px; +} + +.post-content h1 { + margin: 40px auto 32px; + font-size: 40px; +} + +.post-content h2 { + margin: 32px auto 24px; + font-size: 32px; +} + +.post-content h3 { + font-size: 24px; +} + +.post-content h4 { + font-size: 16px; +} + +.post-content h5 { + font-size: 14px; +} + +.post-content h6 { + font-size: 12px; +} + +.post-content a, +.post-meta .i18n_list li a, +.toc a:hover { + box-shadow: 0 1px 0; + box-decoration-break: clone; + -webkit-box-decoration-break: clone; +} + +.post-content a code { + margin: auto 0; + border-radius: 0; + box-shadow: 0 -1px 0 var(--primary) inset; +} + +.post-content del { + text-decoration: line-through; +} + +.post-content dl, +.post-content ol, +.post-content p, +.post-content figure, +.post-content ul { + margin-bottom: var(--content-gap); +} + +.post-content ol, +.post-content ul { + padding-inline-start: 20px; +} + +.post-content li { + margin-top: 5px; +} + +.post-content li p { + margin-bottom: 0; +} + +.post-content dl { + display: flex; + flex-wrap: wrap; + margin: 0; +} + +.post-content dt { + width: 25%; + font-weight: 700; +} + +.post-content dd { + width: 75%; + margin-inline-start: 0; + padding-inline-start: 10px; +} + +.post-content dd~dd, +.post-content dt~dt { + margin-top: 10px; +} + +.post-content table { + margin-bottom: var(--content-gap); +} + +.post-content table th, +.post-content table:not(.highlighttable, .highlight table, .gist .highlight) td { + min-width: 80px; + padding: 8px 5px; + line-height: 1.5; + border-bottom: 1px solid var(--border); +} + +.post-content table th { + text-align: start; +} + +.post-content table:not(.highlighttable) td code:only-child { + margin: auto 0; +} + +.post-content .highlight table { + border-radius: var(--radius); +} + +.post-content .highlight:not(table) { + margin: 10px auto; + background: var(--code-block-bg) !important; + border-radius: var(--radius); + direction: ltr; +} + +.post-content li>.highlight { + margin-inline-end: 0; +} + +.post-content ul pre { + margin-inline-start: calc(var(--gap) * -2); +} + +.post-content .highlight pre { + margin: 0; +} + +.post-content .highlighttable { + table-layout: fixed; +} + +.post-content .highlighttable td:first-child { + width: 40px; +} + +.post-content .highlighttable td .linenodiv { + padding-inline-end: 0 !important; +} + +.post-content .highlighttable td .highlight, +.post-content .highlighttable td .linenodiv pre { + margin-bottom: 0; +} + +.post-content code { + margin: auto 4px; + padding: 4px 6px; + font-size: 0.78em; + line-height: 1.5; + background: var(--code-bg); + border-radius: 2px; +} + +.post-content pre code { + display: grid; + margin: auto 0; + padding: 10px; + color: rgb(213, 213, 214); + background: var(--code-block-bg) !important; + border-radius: var(--radius); + overflow-x: auto; + word-break: break-all; +} + +.post-content blockquote { + margin: 20px 0; + padding: 0 14px; + border-inline-start: 3px solid var(--primary); +} + +.post-content hr { + margin: 30px 0; + height: 2px; + background: var(--tertiary); + border: 0; +} + +.post-content iframe { + max-width: 100%; +} + +.post-content img { + border-radius: 4px; + margin: 1rem 0; +} + +.post-content img[src*="#center"] { + margin: 1rem auto; +} + +.post-content figure.align-center { + text-align: center; +} + +.post-content figure>figcaption { + color: var(--primary); + font-size: 16px; + font-weight: bold; + margin: 8px 0 16px; +} + +.post-content figure>figcaption>p { + color: var(--secondary); + font-size: 14px; + font-weight: normal; +} + +.toc { + margin-bottom: var(--content-gap); + border: 1px solid var(--border); + background: var(--code-bg); + border-radius: var(--radius); + padding: 0.4em; +} + +[data-theme="dark"] .toc { + background: var(--entry); +} + +.toc details summary { + cursor: zoom-in; + margin-inline-start: 10px; + user-select: none; +} + +.toc details[open] summary { + cursor: zoom-out; +} + +.toc .details { + display: inline; + font-weight: 500; +} + +.toc .inner { + margin: 5px 20px; + padding: 0 10px; + opacity: 0.9; +} + +.toc li ul { + margin-inline-start: var(--gap); +} + +.toc summary:focus { + outline: 0; +} + +.post-footer { + margin-top: var(--content-gap); +} + +.post-footer>* { + margin-bottom: 10px; +} + +.post-tags { + display: flex; + flex-wrap: wrap; + gap: 10px; +} + +.post-tags li { + display: inline-block; +} + +.post-tags a, +.share-buttons, +.paginav { + border-radius: var(--radius); + background: var(--code-bg); + border: 1px solid var(--border); +} + +.post-tags a { + display: block; + 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); +} + +.share-buttons { + padding: 10px; + display: flex; + justify-content: center; + overflow-x: auto; + gap: 10px; +} + +.share-buttons li, +.share-buttons a { + display: inline-flex; +} + +.share-buttons a:not(:last-of-type) { + margin-inline-end: 12px; +} + +h1:hover .anchor, +h2:hover .anchor, +h3:hover .anchor, +h4:hover .anchor, +h5:hover .anchor, +h6:hover .anchor { + display: inline-flex; + color: var(--secondary); + margin-inline-start: 8px; + font-weight: 500; + user-select: none; +} + +.paginav { + display: flex; + line-height: 30px; +} + +.paginav a { + padding-inline-start: 14px; + padding-inline-end: 14px; + border-radius: var(--radius); +} + +.paginav .title { + letter-spacing: 1px; + text-transform: uppercase; + font-size: small; + color: var(--secondary); +} + +.paginav .prev, +.paginav .next { + width: 50%; +} + +.paginav span:hover:not(.title) { + box-shadow: 0 1px 0; +} + +.paginav .next { + margin-inline-start: auto; + text-align: right; +} + +[dir="rtl"] .paginav .next { + text-align: left; +} + +h1>a>svg { + display: inline; +} + +img.in-text { + display: inline; + margin: auto; +} diff --git a/askkennyb/themes/PaperMod/assets/css/common/profile-mode.css b/askkennyb/themes/PaperMod/assets/css/common/profile-mode.css new file mode 100644 index 0000000..9e98df5 --- /dev/null +++ b/askkennyb/themes/PaperMod/assets/css/common/profile-mode.css @@ -0,0 +1,43 @@ +.buttons, +.main .profile { + display: flex; + justify-content: center; +} + +.main .profile { + align-items: center; + min-height: calc(100vh - var(--header-height) - var(--footer-height) - (var(--gap) * 2)); + text-align: center; +} + +.profile .profile_inner { + display: flex; + flex-direction: column; + align-items: center; + gap: 10px; +} + +.profile img { + border-radius: 50%; +} + +.buttons { + flex-wrap: wrap; + max-width: 400px; +} + +.button { + background: var(--tertiary); + border-radius: var(--radius); + margin: 8px; + padding: 6px; + transition: transform 0.1s; +} + +.button-inner { + padding: 0 8px; +} + +.button:active { + transform: scale(0.96); +} diff --git a/askkennyb/themes/PaperMod/assets/css/common/search.css b/askkennyb/themes/PaperMod/assets/css/common/search.css new file mode 100644 index 0000000..38d5b6b --- /dev/null +++ b/askkennyb/themes/PaperMod/assets/css/common/search.css @@ -0,0 +1,45 @@ +#searchbox input { + padding: 4px 10px; + width: 100%; + color: var(--primary); + font-weight: bold; + border: 2px solid var(--tertiary); + border-radius: var(--radius); +} + +#searchbox input:focus { + border-color: var(--secondary); +} + +#searchResults li { + list-style: none; + border-radius: var(--radius); + padding: 10px; + margin: 10px 0; + position: relative; + font-weight: 500; +} + +#searchResults { + margin: 10px 0; + width: 100%; +} + +#searchResults li:active { + transition: transform 0.1s; + transform: scale(0.98); +} + +#searchResults a { + position: absolute; + width: 100%; + height: 100%; + top: 0px; + left: 0px; + outline: none; +} + +#searchResults .focus { + transform: scale(0.98); + border: 2px solid var(--tertiary); +} diff --git a/askkennyb/themes/PaperMod/assets/css/common/terms.css b/askkennyb/themes/PaperMod/assets/css/common/terms.css new file mode 100644 index 0000000..244614b --- /dev/null +++ b/askkennyb/themes/PaperMod/assets/css/common/terms.css @@ -0,0 +1,18 @@ +.terms-tags li { + display: inline-block; + margin: 10px; + font-weight: 500; +} + +.terms-tags a { + display: block; + padding: 3px 10px; + background: var(--tertiary); + border-radius: 6px; + transition: transform 0.1s; +} + +.terms-tags a:active { + background: var(--tertiary); + transform: scale(0.96); +} diff --git a/askkennyb/themes/PaperMod/assets/css/core/license.css b/askkennyb/themes/PaperMod/assets/css/core/license.css new file mode 100644 index 0000000..47b9c6f --- /dev/null +++ b/askkennyb/themes/PaperMod/assets/css/core/license.css @@ -0,0 +1,6 @@ +/* + PaperMod v8+ + License: MIT https://github.com/adityatelange/hugo-PaperMod/blob/master/LICENSE + Copyright (c) 2020 nanxiaobei and adityatelange + Copyright (c) 2021-2025 adityatelange +*/ diff --git a/askkennyb/themes/PaperMod/assets/css/core/reset.css b/askkennyb/themes/PaperMod/assets/css/core/reset.css new file mode 100644 index 0000000..7393d57 --- /dev/null +++ b/askkennyb/themes/PaperMod/assets/css/core/reset.css @@ -0,0 +1,118 @@ +*, +::after, +::before { + box-sizing: border-box; +} + +html { + -webkit-tap-highlight-color: transparent; + overflow-y: scroll; + -webkit-text-size-adjust: 100%; + text-size-adjust: 100%; +} + +a, +button, +body, +h1, +h2, +h3, +h4, +h5, +h6 { + color: var(--primary); +} + +body { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; + font-size: 18px; + line-height: 1.6; + word-break: break-word; + background: var(--theme); +} + +article, +aside, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +table { + display: block; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + line-height: 1.2; +} + +h1, +h2, +h3, +h4, +h5, +h6, +p { + margin-top: 0; + margin-bottom: 0; +} + +ul { + padding: 0; +} + +a { + text-decoration: none; +} + +body, +figure, +ul { + margin: 0; +} + +table { + width: 100%; + border-collapse: collapse; + border-spacing: 0; + overflow-x: auto; + word-break: keep-all; +} + +button, +input, +textarea { + padding: 0; + font: inherit; + background: 0 0; + border: 0; +} + +input, +textarea { + outline: 0; +} + +button, +input[type=button], +input[type=submit] { + cursor: pointer; +} + +input:-webkit-autofill, +textarea:-webkit-autofill { + box-shadow: 0 0 0 50px var(--theme) inset; +} + +img { + display: block; + max-width: 100%; +} diff --git a/askkennyb/themes/PaperMod/assets/css/core/theme-vars.css b/askkennyb/themes/PaperMod/assets/css/core/theme-vars.css new file mode 100644 index 0000000..1ce34ef --- /dev/null +++ b/askkennyb/themes/PaperMod/assets/css/core/theme-vars.css @@ -0,0 +1,40 @@ +:root { + --gap: 24px; + --content-gap: 20px; + --nav-width: 1024px; + --main-width: 720px; + --header-height: 60px; + --footer-height: 60px; + --radius: 8px; + --theme: rgb(255, 255, 255); + --entry: rgb(255, 255, 255); + --primary: rgb(30, 30, 30); + --secondary: rgb(108, 108, 108); + --tertiary: rgb(214, 214, 214); + --content: rgb(31, 31, 31); + --code-block-bg: rgb(28, 29, 33); + --code-bg: rgb(245, 245, 245); + --border: rgb(238, 238, 238); + color-scheme: light; +} + +:root[data-theme="dark"] { + --theme: rgb(29, 30, 32); + --entry: rgb(46, 46, 51); + --primary: rgb(218, 218, 219); + --secondary: rgb(155, 156, 157); + --tertiary: rgb(65, 66, 68); + --content: rgb(196, 196, 197); + --code-block-bg: rgb(46, 46, 51); + --code-bg: rgb(55, 56, 62); + --border: rgb(51, 51, 51); + color-scheme: dark; +} + +.list { + background: var(--code-bg); +} + +[data-theme="dark"] .list { + background: var(--theme); +} diff --git a/askkennyb/themes/PaperMod/assets/css/core/zmedia.css b/askkennyb/themes/PaperMod/assets/css/core/zmedia.css new file mode 100644 index 0000000..a68fd71 --- /dev/null +++ b/askkennyb/themes/PaperMod/assets/css/core/zmedia.css @@ -0,0 +1,55 @@ +@media screen and (max-width: 768px) { + /* theme-vars */ + :root { + --gap: 14px; + } + + /* profile-mode */ + .profile img { + transform: scale(0.85); + } + + /* post-entry */ + .first-entry { + min-height: 260px; + } + + /* archive */ + .archive-month { + flex-direction: column; + } + + .archive-year { + margin-top: 20px; + } + + /* footer */ + .footer { + padding: calc((var(--footer-height) - var(--gap) - 10px) / 2) var(--gap); + } +} + +/* footer */ +@media screen and (max-width: 900px) { + .list .top-link { + transform: translateY(-5rem); + } +} + +@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, + .post-entry:active, + .top-link, + #searchResults .focus, + #searchResults li:active { + transform: none; + } +} diff --git a/askkennyb/themes/PaperMod/assets/css/extended/blank.css b/askkennyb/themes/PaperMod/assets/css/extended/blank.css new file mode 100644 index 0000000..a577295 --- /dev/null +++ b/askkennyb/themes/PaperMod/assets/css/extended/blank.css @@ -0,0 +1,5 @@ +/* +This is just a placeholder blank stylesheet so as to support adding custom styles budled with theme's default styles + +Read https://github.com/adityatelange/hugo-PaperMod/wiki/FAQs#bundling-custom-css-with-themes-assets for more info +*/ diff --git a/askkennyb/themes/PaperMod/assets/css/extended/custom.css b/askkennyb/themes/PaperMod/assets/css/extended/custom.css new file mode 100644 index 0000000..5023212 --- /dev/null +++ b/askkennyb/themes/PaperMod/assets/css/extended/custom.css @@ -0,0 +1,35 @@ +/* Body and headings */ +body { font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, sans-serif; } +h1,h2,h3,h4 { font-family: "Source Serif 4", ui-serif, Georgia, serif; } + +/* Brand accent + links */ +a { color: #163b8e; } +a:hover { color: #27b7c4; } + +/* Card/list accents (safe generic selectors) */ +.post-entry, .archive-entry, .post-content blockquote { + border-color: #27b7c4; +} + +/* Bio Block */ +.bio-block { + display: flex; + align-items: center; + gap: 1.2rem; + margin-top: 2rem; + flex-wrap: wrap; +} + +.bio-photo { + width: 100px; + height: 100px; + border-radius: 50%; + object-fit: cover; + box-shadow: 0 2px 5px rgba(0,0,0,0.15); +} + +.bio-text { + max-width: 60ch; + font-size: 1.05em; + line-height: 1.6; +} \ No newline at end of file diff --git a/askkennyb/themes/PaperMod/assets/css/includes/chroma-mod.css b/askkennyb/themes/PaperMod/assets/css/includes/chroma-mod.css new file mode 100644 index 0000000..ad89b96 --- /dev/null +++ b/askkennyb/themes/PaperMod/assets/css/includes/chroma-mod.css @@ -0,0 +1,24 @@ +.chroma { + background-color: unset !important; +} + +.chroma .hl { + display: flex; +} + +.chroma .lnt { + padding: 0 0 0 12px; +} + +.highlight pre.chroma code { + padding: 8px 0; +} + +.highlight pre.chroma .line .cl, +.chroma .ln { + padding: 0 10px; +} + +.chroma .lntd:last-of-type { + width: 100%; +} diff --git a/askkennyb/themes/PaperMod/assets/css/includes/chroma-styles.css b/askkennyb/themes/PaperMod/assets/css/includes/chroma-styles.css new file mode 100644 index 0000000..63a73ab --- /dev/null +++ b/askkennyb/themes/PaperMod/assets/css/includes/chroma-styles.css @@ -0,0 +1,86 @@ +/* Background */ .bg { color: #cad3f5; background-color: #24273a; } +/* PreWrapper */ .chroma { color: #cad3f5; background-color: #24273a; } +/* Other */ .chroma .x { } +/* Error */ .chroma .err { color: #ed8796 } +/* CodeLine */ .chroma .cl { } +/* LineLink */ .chroma .lnlinks { outline: none; text-decoration: none; color: inherit } +/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; } +/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; } +/* LineHighlight */ .chroma .hl { background-color: #474733 } +/* LineNumbersTable */ .chroma .lnt { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #8087a2 } +/* LineNumbers */ .chroma .ln { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #8087a2 } +/* Line */ .chroma .line { display: flex; } +/* Keyword */ .chroma .k { color: #c6a0f6 } +/* KeywordConstant */ .chroma .kc { color: #f5a97f } +/* KeywordDeclaration */ .chroma .kd { color: #ed8796 } +/* KeywordNamespace */ .chroma .kn { color: #8bd5ca } +/* KeywordPseudo */ .chroma .kp { color: #c6a0f6 } +/* KeywordReserved */ .chroma .kr { color: #c6a0f6 } +/* KeywordType */ .chroma .kt { color: #ed8796 } +/* Name */ .chroma .n { } +/* NameAttribute */ .chroma .na { color: #8aadf4 } +/* NameBuiltin */ .chroma .nb { color: #91d7e3 } +/* NameBuiltinPseudo */ .chroma .bp { color: #91d7e3 } +/* NameClass */ .chroma .nc { color: #eed49f } +/* NameConstant */ .chroma .no { color: #eed49f } +/* NameDecorator */ .chroma .nd { color: #8aadf4; font-weight: bold } +/* NameEntity */ .chroma .ni { color: #8bd5ca } +/* NameException */ .chroma .ne { color: #f5a97f } +/* NameFunction */ .chroma .nf { color: #8aadf4 } +/* NameFunctionMagic */ .chroma .fm { color: #8aadf4 } +/* NameLabel */ .chroma .nl { color: #91d7e3 } +/* NameNamespace */ .chroma .nn { color: #f5a97f } +/* NameOther */ .chroma .nx { } +/* NameProperty */ .chroma .py { color: #f5a97f } +/* NameTag */ .chroma .nt { color: #c6a0f6 } +/* NameVariable */ .chroma .nv { color: #f4dbd6 } +/* NameVariableClass */ .chroma .vc { color: #f4dbd6 } +/* NameVariableGlobal */ .chroma .vg { color: #f4dbd6 } +/* NameVariableInstance */ .chroma .vi { color: #f4dbd6 } +/* NameVariableMagic */ .chroma .vm { color: #f4dbd6 } +/* Literal */ .chroma .l { } +/* LiteralDate */ .chroma .ld { } +/* LiteralString */ .chroma .s { color: #a6da95 } +/* LiteralStringAffix */ .chroma .sa { color: #ed8796 } +/* LiteralStringBacktick */ .chroma .sb { color: #a6da95 } +/* LiteralStringChar */ .chroma .sc { color: #a6da95 } +/* LiteralStringDelimiter */ .chroma .dl { color: #8aadf4 } +/* LiteralStringDoc */ .chroma .sd { color: #6e738d } +/* LiteralStringDouble */ .chroma .s2 { color: #a6da95 } +/* LiteralStringEscape */ .chroma .se { color: #8aadf4 } +/* LiteralStringHeredoc */ .chroma .sh { color: #6e738d } +/* LiteralStringInterpol */ .chroma .si { color: #a6da95 } +/* LiteralStringOther */ .chroma .sx { color: #a6da95 } +/* LiteralStringRegex */ .chroma .sr { color: #8bd5ca } +/* LiteralStringSingle */ .chroma .s1 { color: #a6da95 } +/* LiteralStringSymbol */ .chroma .ss { color: #a6da95 } +/* LiteralNumber */ .chroma .m { color: #f5a97f } +/* LiteralNumberBin */ .chroma .mb { color: #f5a97f } +/* LiteralNumberFloat */ .chroma .mf { color: #f5a97f } +/* LiteralNumberHex */ .chroma .mh { color: #f5a97f } +/* LiteralNumberInteger */ .chroma .mi { color: #f5a97f } +/* LiteralNumberIntegerLong */ .chroma .il { color: #f5a97f } +/* LiteralNumberOct */ .chroma .mo { color: #f5a97f } +/* Operator */ .chroma .o { color: #91d7e3; font-weight: bold } +/* OperatorWord */ .chroma .ow { color: #91d7e3; font-weight: bold } +/* Punctuation */ .chroma .p { } +/* Comment */ .chroma .c { color: #6e738d; font-style: italic } +/* CommentHashbang */ .chroma .ch { color: #6e738d; font-style: italic } +/* CommentMultiline */ .chroma .cm { color: #6e738d; font-style: italic } +/* CommentSingle */ .chroma .c1 { color: #6e738d; font-style: italic } +/* CommentSpecial */ .chroma .cs { color: #6e738d; font-style: italic } +/* CommentPreproc */ .chroma .cp { color: #6e738d; font-style: italic } +/* CommentPreprocFile */ .chroma .cpf { color: #6e738d; font-weight: bold; font-style: italic } +/* Generic */ .chroma .g { } +/* GenericDeleted */ .chroma .gd { color: #ed8796; background-color: #363a4f } +/* GenericEmph */ .chroma .ge { font-style: italic } +/* GenericError */ .chroma .gr { color: #ed8796 } +/* GenericHeading */ .chroma .gh { color: #f5a97f; font-weight: bold } +/* GenericInserted */ .chroma .gi { color: #a6da95; background-color: #363a4f } +/* GenericOutput */ .chroma .go { } +/* GenericPrompt */ .chroma .gp { } +/* GenericStrong */ .chroma .gs { font-weight: bold } +/* GenericSubheading */ .chroma .gu { color: #f5a97f; font-weight: bold } +/* GenericTraceback */ .chroma .gt { color: #ed8796 } +/* GenericUnderline */ .chroma .gl { text-decoration: underline } +/* TextWhitespace */ .chroma .w { } diff --git a/askkennyb/themes/PaperMod/assets/css/includes/scroll-bar.css b/askkennyb/themes/PaperMod/assets/css/includes/scroll-bar.css new file mode 100644 index 0000000..e88430b --- /dev/null +++ b/askkennyb/themes/PaperMod/assets/css/includes/scroll-bar.css @@ -0,0 +1,59 @@ +/* from reset */ +::-webkit-scrollbar-track { + background: 0 0; +} + +::-webkit-scrollbar-thumb { + background: var(--tertiary); + border: 5px solid var(--theme); + border-radius: var(--radius); +} + +[data-theme="light"] .list::-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(--code-block-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; + } +} diff --git a/askkennyb/themes/PaperMod/assets/js/fastsearch.js b/askkennyb/themes/PaperMod/assets/js/fastsearch.js new file mode 100644 index 0000000..9484e75 --- /dev/null +++ b/askkennyb/themes/PaperMod/assets/js/fastsearch.js @@ -0,0 +1,152 @@ +import * as params from '@params'; + +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) { + let data = JSON.parse(xhr.responseText); + if (data) { + // fuse.js options; check fuse.js website for details + let options = { + distance: 100, + threshold: 0.4, + ignoreLocation: true, + keys: [ + 'title', + 'permalink', + 'summary', + 'content' + ] + }; + 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 { + console.log(xhr.responseText); + } + } + }; + xhr.open('GET', "../index.json"); + xhr.send(); +} + +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() { + resultsAvailable = false; + resList.innerHTML = sInput.value = ''; // clear inputbox and searchResults + sInput.focus(); // shift focus to input box +} + +// execute search as each character is typed +sInput.onkeyup = function (e) { + // run a search query (for "term") every time a letter is typed + // in the search box + 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 + + for (let item in results) { + resultSet += `
  • ${results[item].item.title} »
    ` + + `
  • ` + } + + resList.innerHTML = resultSet; + resultsAvailable = true; + first = resList.firstChild; + last = resList.lastChild; + } else { + resultsAvailable = false; + resList.innerHTML = ''; + } + } +} + +sInput.addEventListener('search', function (e) { + // clicked on x + if (!this.value) reset() +}) + +// kb bindings +document.onkeydown = function (e) { + let key = e.key; + let ae = document.activeElement; + + let inbox = document.getElementById("searchbox").contains(ae) + + if (ae === sInput) { + let elements = document.getElementsByClassName('focus'); + while (elements.length > 0) { + elements[0].classList.remove('focus'); + } + } else if (current_elem) ae = current_elem; + + 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 of first
  • + activeToggle(resList.firstChild.lastChild); + } else if (ae.parentElement != last) { + // if the currently focused element's parent is last, do nothing + // otherwise select the next search result + activeToggle(ae.parentElement.nextSibling.lastChild); + } + } else if (key === "ArrowUp") { + e.preventDefault(); + if (ae.parentElement == first) { + // if the currently focused element is first item, go to input box + activeToggle(sInput); + } else if (ae != sInput) { + // if the currently focused element is input box, do nothing + // otherwise select the previous search result + activeToggle(ae.parentElement.previousSibling.lastChild); + } + } else if (key === "ArrowRight") { + ae.click(); // click on active link + } +} diff --git a/askkennyb/themes/PaperMod/assets/js/fuse.basic.min.js b/askkennyb/themes/PaperMod/assets/js/fuse.basic.min.js new file mode 100644 index 0000000..7457721 --- /dev/null +++ b/askkennyb/themes/PaperMod/assets/js/fuse.basic.min.js @@ -0,0 +1,9 @@ +/** + * Fuse.js v7.0.0 - Lightweight fuzzy-search (http://fusejs.io) + * + * Copyright (c) 2023 Kiro Risk (http://kiro.me) + * All Rights Reserved. Apache Software License 2.0 + * + * http://www.apache.org/licenses/LICENSE-2.0 + */ +var e,t;e=this,t=function(){"use strict";function e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function t(t){for(var n=1;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:{},n=t.getFn,i=void 0===n?O.getFn:n,o=t.fieldNormWeight,a=void 0===o?O.fieldNormWeight:o;r(this,e),this.norm=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3,n=new Map,r=Math.pow(10,t);return{get:function(t){var i=t.match(j).length;if(n.has(i))return n.get(i);var o=1/Math.pow(i,.5*e),a=parseFloat(Math.round(o*r)/r);return n.set(i,a),a},clear:function(){n.clear()}}}(a,3),this.getFn=i,this.isCreated=!1,this.setIndexRecords()}return o(e,[{key:"setSources",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.docs=e}},{key:"setIndexRecords",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.records=e}},{key:"setKeys",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.keys=t,this._keysMap={},t.forEach((function(t,n){e._keysMap[t.id]=n}))}},{key:"create",value:function(){var e=this;!this.isCreated&&this.docs.length&&(this.isCreated=!0,f(this.docs[0])?this.docs.forEach((function(t,n){e._addString(t,n)})):this.docs.forEach((function(t,n){e._addObject(t,n)})),this.norm.clear())}},{key:"add",value:function(e){var t=this.size();f(e)?this._addString(e,t):this._addObject(e,t)}},{key:"removeAt",value:function(e){this.records.splice(e,1);for(var t=e,n=this.size();t2&&void 0!==arguments[2]?arguments[2]:{},r=n.getFn,i=void 0===r?O.getFn:r,o=n.fieldNormWeight,a=void 0===o?O.fieldNormWeight:o,c=new A({getFn:i,fieldNormWeight:a});return c.setKeys(e.map(x)),c.setSources(t),c.create(),c}function I(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.errors,r=void 0===n?0:n,i=t.currentLocation,o=void 0===i?0:i,a=t.expectedLocation,c=void 0===a?0:a,s=t.distance,h=void 0===s?O.distance:s,u=t.ignoreLocation,l=void 0===u?O.ignoreLocation:u,d=r/e.length;if(l)return d;var f=Math.abs(c-o);return h?d+f/h:f?1:d}var F=32;function C(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=r.location,o=void 0===i?O.location:i,a=r.distance,c=void 0===a?O.distance:a,s=r.threshold,h=void 0===s?O.threshold:s,u=r.findAllMatches,l=void 0===u?O.findAllMatches:u,d=r.minMatchCharLength,f=void 0===d?O.minMatchCharLength:d,v=r.includeMatches,g=void 0===v?O.includeMatches:v,y=r.ignoreLocation,p=void 0===y?O.ignoreLocation:y;if(t.length>F)throw new Error("Pattern length exceeds max of ".concat(F,"."));for(var m,b=t.length,k=e.length,M=Math.max(0,Math.min(o,k)),w=h,x=M,L=f>1||g,S=L?Array(k):[];(m=e.indexOf(t,x))>-1;){var _=I(t,{currentLocation:m,expectedLocation:M,distance:c,ignoreLocation:p});if(w=Math.min(_,w),x=m+b,L)for(var j=0;j=$;z-=1){var J=z-1,R=n[e.charAt(J)];if(L&&(S[J]=+!!R),K[z]=(K[z+1]<<1|1)&R,P&&(K[z]|=(A[z+1]|A[z])<<1|1|A[z+1]),K[z]&N&&(E=I(t,{errors:P,currentLocation:J,expectedLocation:M,distance:c,ignoreLocation:p}))<=w){if(w=E,(x=J)<=M)break;$=Math.max(1,2*M-x)}}if(I(t,{errors:P+1,currentLocation:M,expectedLocation:M,distance:c,ignoreLocation:p})>w)break;A=K}var U={isMatch:x>=0,score:Math.max(.001,E)};if(L){var B=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:O.minMatchCharLength,n=[],r=-1,i=-1,o=0,a=e.length;o=t&&n.push([r,i]),r=-1)}return e[o-1]&&o-r>=t&&n.push([r,o-1]),n}(S,f);B.length?g&&(U.indices=B):U.isMatch=!1}return U}function N(e){for(var t={},n=0,r=e.length;n1&&void 0!==arguments[1]?arguments[1]:{},o=i.location,a=void 0===o?O.location:o,c=i.threshold,s=void 0===c?O.threshold:c,h=i.distance,u=void 0===h?O.distance:h,l=i.includeMatches,d=void 0===l?O.includeMatches:l,f=i.findAllMatches,v=void 0===f?O.findAllMatches:f,g=i.minMatchCharLength,y=void 0===g?O.minMatchCharLength:g,p=i.isCaseSensitive,m=void 0===p?O.isCaseSensitive:p,b=i.ignoreLocation,k=void 0===b?O.ignoreLocation:b;if(r(this,e),this.options={location:a,threshold:s,distance:u,includeMatches:d,findAllMatches:v,minMatchCharLength:y,isCaseSensitive:m,ignoreLocation:k},this.pattern=m?t:t.toLowerCase(),this.chunks=[],this.pattern.length){var M=function(e,t){n.chunks.push({pattern:e,alphabet:N(e),startIndex:t})},w=this.pattern.length;if(w>F){for(var x=0,L=w%F,S=w-L;x-1&&(n.refIndex=e.idx),t.matches.push(n)}}))}function D(e,t){t.score=e.score}var K=function(){function e(n){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2?arguments[2]:void 0;if(r(this,e),this.options=t(t({},O),i),this.options.useExtendedSearch)throw new Error("Extended search is not available");this._keyStore=new w(this.options.keys),this.setCollection(n,o)}return o(e,[{key:"setCollection",value:function(e,t){if(this._docs=e,t&&!(t instanceof A))throw new Error("Incorrect 'index' type");this._myIndex=t||E(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}},{key:"add",value:function(e){y(e)&&(this._docs.push(e),this._myIndex.add(e))}},{key:"remove",value:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){return!1},t=[],n=0,r=this._docs.length;n1&&void 0!==arguments[1]?arguments[1]:{}).limit,n=void 0===t?-1:t,r=this.options,i=r.includeMatches,o=r.includeScore,a=r.shouldSort,c=r.sortFn,s=r.ignoreFieldNorm,h=f(e)?f(this._docs[0])?this._searchStringList(e):this._searchObjectList(e):this._searchLogical(e);return function(e,t){var n=t.ignoreFieldNorm,r=void 0===n?O.ignoreFieldNorm:n;e.forEach((function(e){var t=1;e.matches.forEach((function(e){var n=e.key,i=e.norm,o=e.score,a=n?n.weight:null;t*=Math.pow(0===o&&a?Number.EPSILON:o,(a||1)*(r?1:i))})),e.score=t}))}(h,{ignoreFieldNorm:s}),a&&h.sort(c),v(n)&&n>-1&&(h=h.slice(0,n)),function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.includeMatches,i=void 0===r?O.includeMatches:r,o=n.includeScore,a=void 0===o?O.includeScore:o,c=[];return i&&c.push($),a&&c.push(D),e.map((function(e){var n=e.idx,r={item:t[n],refIndex:n};return c.length&&c.forEach((function(t){t(e,r)})),r}))}(h,this._docs,{includeMatches:i,includeScore:o})}},{key:"_searchStringList",value:function(e){var t=T(e,this.options),n=this._myIndex.records,r=[];return n.forEach((function(e){var n=e.v,i=e.i,o=e.n;if(y(n)){var a=t.searchIn(n),c=a.isMatch,s=a.score,h=a.indices;c&&r.push({item:n,idx:i,matches:[{score:s,value:n,norm:o,indices:h}]})}})),r}},{key:"_searchLogical",value:function(e){throw new Error("Logical search is not available")}},{key:"_searchObjectList",value:function(e){var t=this,n=T(e,this.options),r=this._myIndex,i=r.keys,o=r.records,a=[];return o.forEach((function(e){var r=e.$,o=e.i;if(y(r)){var s=[];i.forEach((function(e,i){s.push.apply(s,c(t._findMatches({key:e,value:r[i],searcher:n})))})),s.length&&a.push({idx:o,item:r,matches:s})}})),a}},{key:"_findMatches",value:function(e){var t=e.key,n=e.value,r=e.searcher;if(!y(n))return[];var i=[];if(u(n))n.forEach((function(e){var n=e.v,o=e.i,a=e.n;if(y(n)){var c=r.searchIn(n),s=c.isMatch,h=c.score,u=c.indices;s&&i.push({score:h,key:t,value:n,idx:o,norm:a,indices:u})}}));else{var o=n.v,a=n.n,c=r.searchIn(o),s=c.isMatch,h=c.score,l=c.indices;s&&i.push({score:h,key:t,value:o,norm:a,indices:l})}return i}}]),e}();return K.version="7.0.0",K.createIndex=E,K.parseIndex=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.getFn,r=void 0===n?O.getFn:n,i=t.fieldNormWeight,o=void 0===i?O.fieldNormWeight:i,a=e.keys,c=e.records,s=new A({getFn:r,fieldNormWeight:o});return s.setKeys(a),s.setIndexRecords(c),s},K.config=O,K},"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Fuse=t(); \ No newline at end of file diff --git a/askkennyb/themes/PaperMod/assets/js/license.js b/askkennyb/themes/PaperMod/assets/js/license.js new file mode 100644 index 0000000..47b9c6f --- /dev/null +++ b/askkennyb/themes/PaperMod/assets/js/license.js @@ -0,0 +1,6 @@ +/* + PaperMod v8+ + License: MIT https://github.com/adityatelange/hugo-PaperMod/blob/master/LICENSE + Copyright (c) 2020 nanxiaobei and adityatelange + Copyright (c) 2021-2025 adityatelange +*/ diff --git a/askkennyb/themes/PaperMod/go.mod b/askkennyb/themes/PaperMod/go.mod new file mode 100644 index 0000000..af95855 --- /dev/null +++ b/askkennyb/themes/PaperMod/go.mod @@ -0,0 +1,3 @@ +module github.com/adityatelange/hugo-PaperMod + +go 1.12 diff --git a/askkennyb/themes/PaperMod/i18n/ar.yaml b/askkennyb/themes/PaperMod/i18n/ar.yaml new file mode 100644 index 0000000..52990c2 --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/ar.yaml @@ -0,0 +1,28 @@ +- id: prev_page + translation: "السابق" + +- id: next_page + translation: "التالي" + +- id: read_time + translation: + one: "دقيقة واحدة" + two: "دقيقتان" + few: "بضع ثوان" + zero: "الآن" + other: "دقائق {{ .Count }}" + +- id: toc + translation: "فهرس المحتوى" + +- id: translations + translation: "ترجمات أخرى" + +- id: home + translation: "الصفحة الرئيسية" + +- id: code_copied + translation: "تم النسخ!" + +- id: code_copy + translation: "نسخ الكود" diff --git a/askkennyb/themes/PaperMod/i18n/be.yaml b/askkennyb/themes/PaperMod/i18n/be.yaml new file mode 100644 index 0000000..22902ab --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/be.yaml @@ -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: "скапіявана!" diff --git a/askkennyb/themes/PaperMod/i18n/bg.yaml b/askkennyb/themes/PaperMod/i18n/bg.yaml new file mode 100644 index 0000000..1e314af --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/bg.yaml @@ -0,0 +1,16 @@ +- id: prev_page + translation: "Предишна страница" + +- id: next_page + translation: "Следваща страница" + +- id: read_time + translation: + one : "1 мин" + other: "{{ .Count }} мин" + +- id: toc + translation: "Съдържание" + +- id: translations + translation: "Преводи" diff --git a/askkennyb/themes/PaperMod/i18n/bn.yaml b/askkennyb/themes/PaperMod/i18n/bn.yaml new file mode 100644 index 0000000..f42780f --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/bn.yaml @@ -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: "কপি হয়েছে!" diff --git a/askkennyb/themes/PaperMod/i18n/ca.yaml b/askkennyb/themes/PaperMod/i18n/ca.yaml new file mode 100644 index 0000000..15713e1 --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/ca.yaml @@ -0,0 +1,19 @@ +- id: prev_page + translation: "Pàgina anterior" + +- id: next_page + translation: "Pàgina següent" + +- id: read_time + translation: + one : "1 min" + other: "{{ .Count }} min" + +- id: toc + translation: "Taula de Continguts" + +- id: translations + translation: "Traduccions" + +- id: home + translation: "Inici" diff --git a/askkennyb/themes/PaperMod/i18n/ckb.yaml b/askkennyb/themes/PaperMod/i18n/ckb.yaml new file mode 100644 index 0000000..25789d1 --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/ckb.yaml @@ -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: "لەبەر گیرایەوە!" diff --git a/askkennyb/themes/PaperMod/i18n/cs.yaml b/askkennyb/themes/PaperMod/i18n/cs.yaml new file mode 100644 index 0000000..058c3a1 --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/cs.yaml @@ -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!" diff --git a/askkennyb/themes/PaperMod/i18n/da.yaml b/askkennyb/themes/PaperMod/i18n/da.yaml new file mode 100644 index 0000000..03b0abe --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/da.yaml @@ -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!" diff --git a/askkennyb/themes/PaperMod/i18n/de.yaml b/askkennyb/themes/PaperMod/i18n/de.yaml new file mode 100644 index 0000000..f64aad9 --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/de.yaml @@ -0,0 +1,33 @@ +- id: prev_page + translation: "Vorherige" + +- id: next_page + translation: "Nächste" + +- id: read_time + translation: + one: "1 Minute" + other: "{{ .Count }} Minuten" + +- id: words + translation: + one : "Wort" + other: "{{ .Count }} Wörter" + +- id: toc + translation: "Inhaltsverzeichnis" + +- id: translations + translation: "Übersetzungen" + +- id: home + translation: "Home" + +- id: edit_post + translation: "Bearbeiten" + +- id: code_copy + translation: "Kopieren" + +- id: code_copied + translation: "Kopiert!" diff --git a/askkennyb/themes/PaperMod/i18n/el.yaml b/askkennyb/themes/PaperMod/i18n/el.yaml new file mode 100644 index 0000000..4257bac --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/el.yaml @@ -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: "αντιγράφηκε!" \ No newline at end of file diff --git a/askkennyb/themes/PaperMod/i18n/en.yaml b/askkennyb/themes/PaperMod/i18n/en.yaml new file mode 100644 index 0000000..3a1e215 --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/en.yaml @@ -0,0 +1,33 @@ +- id: prev_page + translation: "Prev" + +- id: 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" + +- id: translations + translation: "Translations" + +- id: home + translation: "Home" + +- id: edit_post + translation: "Edit" + +- id: code_copy + translation: "copy" + +- id: code_copied + translation: "copied!" diff --git a/askkennyb/themes/PaperMod/i18n/eo.yaml b/askkennyb/themes/PaperMod/i18n/eo.yaml new file mode 100644 index 0000000..de5d744 --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/eo.yaml @@ -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!" diff --git a/askkennyb/themes/PaperMod/i18n/es.yaml b/askkennyb/themes/PaperMod/i18n/es.yaml new file mode 100644 index 0000000..52a559c --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/es.yaml @@ -0,0 +1,33 @@ +- id: prev_page + translation: "Anterior" + +- id: next_page + 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!" diff --git a/askkennyb/themes/PaperMod/i18n/fa.yaml b/askkennyb/themes/PaperMod/i18n/fa.yaml new file mode 100644 index 0000000..3fd5927 --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/fa.yaml @@ -0,0 +1,28 @@ +- id: prev_page + translation: "صفحه قبلی" + +- id: next_page + translation: "صفحه بعدی" + +- id: read_time + 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: "کپی شد!" \ No newline at end of file diff --git a/askkennyb/themes/PaperMod/i18n/fi.yaml b/askkennyb/themes/PaperMod/i18n/fi.yaml new file mode 100644 index 0000000..cbbf3c4 --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/fi.yaml @@ -0,0 +1,33 @@ +- id: prev_page + translation: "Edellinen" + +- id: next_page + translation: "Seuraava" + +- id: read_time + translation: + one : "1 min" + other: "{{ .Count }} minuuttia" + +- id: words + translation: + one : "sana" + other: "{{ .Count }} sanaa" + +- id: toc + translation: "Sisällysluettelo" + +- id: translations + translation: "Käännökset" + +- id: home + translation: "Etusivu" + +- id: edit_post + translation: "Muokkaa" + +- id: code_copy + translation: "Kopioi" + +- id: code_copied + translation: "Kopioitu!" diff --git a/askkennyb/themes/PaperMod/i18n/fr.yaml b/askkennyb/themes/PaperMod/i18n/fr.yaml new file mode 100644 index 0000000..e48d8e9 --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/fr.yaml @@ -0,0 +1,33 @@ +- id: prev_page + translation: "Précédent" + +- id: next_page + 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é !" diff --git a/askkennyb/themes/PaperMod/i18n/he.yaml b/askkennyb/themes/PaperMod/i18n/he.yaml new file mode 100644 index 0000000..30c3e74 --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/he.yaml @@ -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: "הועתק!" diff --git a/askkennyb/themes/PaperMod/i18n/hi.yaml b/askkennyb/themes/PaperMod/i18n/hi.yaml new file mode 100644 index 0000000..681efdc --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/hi.yaml @@ -0,0 +1,19 @@ +- id: prev_page + translation: "पिछला" + +- id: next_page + translation: "अगला" + +- id: read_time + translation: + one : "एक मिनट" + other: "{{ .Count }} मिनट" + +- id: edit_post + translation: "सुधारें" + +- id: toc + translation: "विषय - सूची" + +- id: translations + translation: "अनुवाद" diff --git a/askkennyb/themes/PaperMod/i18n/hr.yaml b/askkennyb/themes/PaperMod/i18n/hr.yaml new file mode 100644 index 0000000..2f2d228 --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/hr.yaml @@ -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!" diff --git a/askkennyb/themes/PaperMod/i18n/hu.yaml b/askkennyb/themes/PaperMod/i18n/hu.yaml new file mode 100644 index 0000000..a039dda --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/hu.yaml @@ -0,0 +1,16 @@ +- id: prev_page + translation: "Előző oldal" + +- id: next_page + translation: "Következő oldal" + +- id: read_time + translation: + one: "1 perc" + other: "{{ .Count }} perc" + +- id: toc + translation: "Tartalomjegyzék" + +- id: translations + translation: "Fordítások" diff --git a/askkennyb/themes/PaperMod/i18n/id.yaml b/askkennyb/themes/PaperMod/i18n/id.yaml new file mode 100644 index 0000000..93d34f5 --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/id.yaml @@ -0,0 +1,33 @@ +- id: prev_page + translation: "Sebelumnya" + +- id: next_page + 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" + +- id: translations + translation: "Terjemahan" + +- id: home + translation: "Beranda" + +- id: edit_post + translation: "Sunting" + +- id: code_copy + translation: "salin" + +- id: code_copied + translation: "disalin!" \ No newline at end of file diff --git a/askkennyb/themes/PaperMod/i18n/it.yaml b/askkennyb/themes/PaperMod/i18n/it.yaml new file mode 100644 index 0000000..c87c95d --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/it.yaml @@ -0,0 +1,33 @@ +- id: prev_page + translation: "Precedente" + +- id: next_page + translation: "Successivo" + +- id: read_time + translation: + one: "1 minuto" + other: "{{ .Count }} minuti" + +- id: words + translation: + one : "parola" + other: "{{ .Count }} parole" + +- id: toc + 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!" diff --git a/askkennyb/themes/PaperMod/i18n/ja.yaml b/askkennyb/themes/PaperMod/i18n/ja.yaml new file mode 100644 index 0000000..93948d3 --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/ja.yaml @@ -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: "コピーされました!" diff --git a/askkennyb/themes/PaperMod/i18n/ko.yaml b/askkennyb/themes/PaperMod/i18n/ko.yaml new file mode 100644 index 0000000..777dd93 --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/ko.yaml @@ -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: "복사 완료!" diff --git a/askkennyb/themes/PaperMod/i18n/ku.yaml b/askkennyb/themes/PaperMod/i18n/ku.yaml new file mode 100644 index 0000000..d1d30a5 --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/ku.yaml @@ -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!" diff --git a/askkennyb/themes/PaperMod/i18n/mn.yaml b/askkennyb/themes/PaperMod/i18n/mn.yaml new file mode 100644 index 0000000..dbce2ce --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/mn.yaml @@ -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: "хуулсан!" diff --git a/askkennyb/themes/PaperMod/i18n/ms.yaml b/askkennyb/themes/PaperMod/i18n/ms.yaml new file mode 100644 index 0000000..d8a9eff --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/ms.yaml @@ -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!" diff --git a/askkennyb/themes/PaperMod/i18n/nl.yaml b/askkennyb/themes/PaperMod/i18n/nl.yaml new file mode 100644 index 0000000..e9d06fa --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/nl.yaml @@ -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!" diff --git a/askkennyb/themes/PaperMod/i18n/no.yaml b/askkennyb/themes/PaperMod/i18n/no.yaml new file mode 100644 index 0000000..2400348 --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/no.yaml @@ -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!" diff --git a/askkennyb/themes/PaperMod/i18n/oc.yaml b/askkennyb/themes/PaperMod/i18n/oc.yaml new file mode 100644 index 0000000..9292fd8 --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/oc.yaml @@ -0,0 +1,33 @@ +- id: prev_page + translation: "Prec." + +- id: next_page + translation: "Seg." + +- id: read_time + translation: + one : "1 min" + other: "{{ .Count }} min" + +- id: words + translation: + one : "mot" + other: "{{ .Count }} motss" + +- id: toc + translation: "Taula de contengut" + +- id: translations + translation: "Traduccions" + +- id: home + translation: "Acuèlh" + +- id: edit_post + translation: "Modificar" + +- id: code_copy + translation: "copiar" + +- id: code_copied + translation: "copiat !" diff --git a/askkennyb/themes/PaperMod/i18n/pa.yaml b/askkennyb/themes/PaperMod/i18n/pa.yaml new file mode 100644 index 0000000..32192c5 --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/pa.yaml @@ -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: "ਕਾਪੀ ਕੀਤੀ ਗਈ!!" diff --git a/askkennyb/themes/PaperMod/i18n/pl.yaml b/askkennyb/themes/PaperMod/i18n/pl.yaml new file mode 100644 index 0000000..81b0e77 --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/pl.yaml @@ -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!" diff --git a/askkennyb/themes/PaperMod/i18n/pnb.yaml b/askkennyb/themes/PaperMod/i18n/pnb.yaml new file mode 100644 index 0000000..fa2f8a8 --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/pnb.yaml @@ -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: "کاپی کیتی گئی!" diff --git a/askkennyb/themes/PaperMod/i18n/pt.yaml b/askkennyb/themes/PaperMod/i18n/pt.yaml new file mode 100644 index 0000000..ab06429 --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/pt.yaml @@ -0,0 +1,33 @@ +- id: prev_page + translation: "Página Anterior" + +- id: next_page + translation: "Próxima Página" + +- id: read_time + translation: + 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!" diff --git a/askkennyb/themes/PaperMod/i18n/ro.yaml b/askkennyb/themes/PaperMod/i18n/ro.yaml new file mode 100644 index 0000000..694f20b --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/ro.yaml @@ -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!" diff --git a/askkennyb/themes/PaperMod/i18n/ru.yaml b/askkennyb/themes/PaperMod/i18n/ru.yaml new file mode 100644 index 0000000..a5dbb5c --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/ru.yaml @@ -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: "0 слов" + 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: "скопировано!" \ No newline at end of file diff --git a/askkennyb/themes/PaperMod/i18n/sk.yaml b/askkennyb/themes/PaperMod/i18n/sk.yaml new file mode 100644 index 0000000..f129d37 --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/sk.yaml @@ -0,0 +1,33 @@ +- id: prev_page + translation: "Predch" + +- id: next_page + translation: "Ďaľší" + +- 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: "Preklady" + +- id: home + translation: "Domov" + +- id: edit_post + translation: "Upraviť" + +- id: code_copy + translation: "kopírovať" + +- id: code_copied + translation: "skopírované!" diff --git a/askkennyb/themes/PaperMod/i18n/sv.yaml b/askkennyb/themes/PaperMod/i18n/sv.yaml new file mode 100644 index 0000000..65ce422 --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/sv.yaml @@ -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!" diff --git a/askkennyb/themes/PaperMod/i18n/sw.yaml b/askkennyb/themes/PaperMod/i18n/sw.yaml new file mode 100644 index 0000000..5fceb1a --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/sw.yaml @@ -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!" diff --git a/askkennyb/themes/PaperMod/i18n/th.yaml b/askkennyb/themes/PaperMod/i18n/th.yaml new file mode 100644 index 0000000..d8036ae --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/th.yaml @@ -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: "คัดลอกแล้ว!" diff --git a/askkennyb/themes/PaperMod/i18n/tr.yaml b/askkennyb/themes/PaperMod/i18n/tr.yaml new file mode 100644 index 0000000..b014a15 --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/tr.yaml @@ -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 : "sözcük" + other: "{{ .Count }} sözcük" + +- id: toc + translation: "İçindekiler" + +- id: translations + translation: "Çeviriler" + +- id: home + translation: "Ana Sayfa" + +- id: edit_post + translation: "Düzenle" + +- id: code_copy + translation: "Kopyala" + +- id: code_copied + translation: "Kopyalandı!" diff --git a/askkennyb/themes/PaperMod/i18n/uk.yaml b/askkennyb/themes/PaperMod/i18n/uk.yaml new file mode 100644 index 0000000..41be964 --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/uk.yaml @@ -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: "скопійовано!" \ No newline at end of file diff --git a/askkennyb/themes/PaperMod/i18n/uz.yaml b/askkennyb/themes/PaperMod/i18n/uz.yaml new file mode 100644 index 0000000..c9f2375 --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/uz.yaml @@ -0,0 +1,20 @@ +- id: prev_page + translation: "Oldingi sahifa" + +- id: next_page + translation: "Keyingi sahifa" + +- id: read_time + translation: + one : "Bir daqiqa" + other: "{{ .Count }} daqiqa" + +- id: toc + translation: "Mundarija" + +- id: translations + translation: "Tarjimalar" + +- id: home + translation: "Bosh sahifa" + diff --git a/askkennyb/themes/PaperMod/i18n/vi.yaml b/askkennyb/themes/PaperMod/i18n/vi.yaml new file mode 100644 index 0000000..2eb05d0 --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/vi.yaml @@ -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!" diff --git a/askkennyb/themes/PaperMod/i18n/zh-tw.yaml b/askkennyb/themes/PaperMod/i18n/zh-tw.yaml new file mode 100644 index 0000000..48b84d2 --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/zh-tw.yaml @@ -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: "已複製!" diff --git a/askkennyb/themes/PaperMod/i18n/zh.yaml b/askkennyb/themes/PaperMod/i18n/zh.yaml new file mode 100644 index 0000000..0280425 --- /dev/null +++ b/askkennyb/themes/PaperMod/i18n/zh.yaml @@ -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: "已复制!" diff --git a/askkennyb/themes/PaperMod/images/screenshot.png b/askkennyb/themes/PaperMod/images/screenshot.png new file mode 100644 index 0000000..a37c485 Binary files /dev/null and b/askkennyb/themes/PaperMod/images/screenshot.png differ diff --git a/askkennyb/themes/PaperMod/images/tn.png b/askkennyb/themes/PaperMod/images/tn.png new file mode 100644 index 0000000..cf83179 Binary files /dev/null and b/askkennyb/themes/PaperMod/images/tn.png differ diff --git a/askkennyb/themes/PaperMod/layouts/404.html b/askkennyb/themes/PaperMod/layouts/404.html new file mode 100644 index 0000000..a405573 --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/404.html @@ -0,0 +1,3 @@ +{{- define "main" }} +
    404
    +{{- end }}{{/* end main */ -}} diff --git a/askkennyb/themes/PaperMod/layouts/_default/_markup/render-image.html b/askkennyb/themes/PaperMod/layouts/_default/_markup/render-image.html new file mode 100644 index 0000000..f368ff8 --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/_default/_markup/render-image.html @@ -0,0 +1,22 @@ +{{- $u := urls.Parse .Destination -}} +{{- $src := $u.String -}} +{{- if not $u.IsAbs -}} + {{- $path := strings.TrimPrefix "./" $u.Path }} + {{- with or (.PageInner.Resources.Get $path) (resources.Get $path) -}} + {{- $src = .RelPermalink -}} + {{- with $u.RawQuery -}} + {{- $src = printf "%s?%s" $src . -}} + {{- end -}} + {{- with $u.Fragment -}} + {{- $src = printf "%s#%s" $src . -}} + {{- end -}} + {{- end -}} +{{- end -}} +{{- $attributes := merge .Attributes (dict "alt" .Text "src" $src "title" (.Title | transform.HTMLEscape) "loading" "lazy") -}} + +{{- /**/ -}} diff --git a/askkennyb/themes/PaperMod/layouts/_default/archives.html b/askkennyb/themes/PaperMod/layouts/_default/archives.html new file mode 100644 index 0000000..eea3fc8 --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/_default/archives.html @@ -0,0 +1,83 @@ +{{- define "main" }} + +
    + +{{- $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" }} +
    + {{- $year := replace .Key "0001" "" }} +

    + + {{- $year -}} + +  {{ len .Pages }} +

    + {{- range .Pages.GroupByDate "January" }} +
    +

    + + {{- .Key -}} + +  {{ len .Pages }} +

    +
    + {{- range .Pages }} + {{- if eq .Kind "page" }} +
    +

    + {{- .Title | markdownify }} + {{- if .Draft }} + + + + + + {{- end }} +

    +
    + {{- partial "post_meta.html" . -}} +
    + +
    + {{- end }} + {{- end }} +
    +
    + {{- end }} +
    +{{- end }} +{{- end }} + +{{- end }}{{/* end main */}} diff --git a/askkennyb/themes/PaperMod/layouts/_default/baseof.html b/askkennyb/themes/PaperMod/layouts/_default/baseof.html new file mode 100644 index 0000000..c577599 --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/_default/baseof.html @@ -0,0 +1,31 @@ +{{- if lt hugo.Version "0.146.0" }} +{{- errorf "=> hugo v0.146.0 or greater is required for hugo-PaperMod to build " }} +{{- end -}} + + +{{- $theme := site.Params.defaultTheme | default "auto" }} +{{- if eq $theme "dark" }} + +{{- else if eq $theme "light" }} + +{{- else }} + +{{- end }} + + + {{- partial "head.html" . }} + + +{{- if (or (ne .Kind `page` ) (eq .Layout `archives`) (eq .Layout `search`)) }} + +{{- else }} + +{{- end }} + {{ partialCached "header.html" . .Page -}} +
    + {{- block "main" . }}{{ end }} +
    + {{ partialCached "footer.html" . .Layout .Kind (.Param "hideFooter") (.Param "ShowCodeCopyButtons") -}} + + + diff --git a/askkennyb/themes/PaperMod/layouts/_default/index.json b/askkennyb/themes/PaperMod/layouts/_default/index.json new file mode 100644 index 0000000..feeb437 --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/_default/index.json @@ -0,0 +1,7 @@ +{{- $.Scratch.Add "index" slice -}} +{{- 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 }} +{{- end -}} +{{- $.Scratch.Get "index" | jsonify -}} diff --git a/askkennyb/themes/PaperMod/layouts/_default/list.html b/askkennyb/themes/PaperMod/layouts/_default/list.html new file mode 100644 index 0000000..81aea6e --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/_default/list.html @@ -0,0 +1,121 @@ +{{- define "main" }} + +{{- if (and site.Params.profileMode.enabled .IsHome) }} +{{- partial "index_profile.html" . }} +{{- else }} {{/* if not profileMode */}} + +{{- if not .IsHome | and .Title }} + +{{- end }} + +{{- if .Content }} +
    + {{- if not (.Param "disableAnchoredHeadings") }} + {{- partial "anchored_headings.html" .Content -}} + {{- else }}{{ .Content }}{{ end }} +
    +{{- end }} + +{{- $pages := union .RegularPages .Sections }} + +{{- if .IsHome }} +{{- $pages = where site.RegularPages "Type" "in" site.Params.mainSections }} +{{- $pages = where $pages "Params.hiddenInHomeList" "!=" "true" }} +{{- end }} + +{{- $paginator := .Paginate $pages }} + +{{- if and .IsHome site.Params.homeInfoParams (eq $paginator.PageNumber 1) }} +{{- partial "home_info.html" . }} +{{- end }} + +{{- $term := .Data.Term }} +{{- range $index, $page := $paginator.Pages }} + +{{- $class := "post-entry" }} + +{{- $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 }} +{{- $class = "post-entry tag-entry" }} +{{- end }} + +
    + {{- $isHidden := (.Param "cover.hiddenInList") | default (.Param "cover.hidden") | default false }} + {{- partial "cover.html" (dict "cxt" . "IsSingle" false "isHidden" $isHidden) }} +
    +

    + {{- .Title }} + {{- if .Draft }} + + + + + + {{- end }} +

    +
    + {{- if (ne (.Param "hideSummary") true) }} +
    +

    {{ .Summary | plainify | htmlUnescape }}{{ if .Truncated }}...{{ end }}

    +
    + {{- end }} + {{- if not (.Param "hideMeta") }} +
    + {{- partial "post_meta.html" . -}} +
    + {{- end }} + +
    +{{- end }} + +{{- if gt $paginator.TotalPages 1 }} + +{{- end }} + +{{- end }}{{/* end profileMode */}} + +{{- end }}{{- /* end main */ -}} diff --git a/askkennyb/themes/PaperMod/layouts/_default/rss.xml b/askkennyb/themes/PaperMod/layouts/_default/rss.xml new file mode 100644 index 0000000..fed8ae9 --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/_default/rss.xml @@ -0,0 +1,83 @@ +{{- /* 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 "" | safeHTML }} + + + {{ if eq .Title site.Title }}{{ site.Title }}{{ else }}{{ with .Title }}{{ . }} on {{ end }}{{ site.Title }}{{ end }} + {{ .Permalink }} + Recent content {{ if ne .Title site.Title }}{{ with .Title }}in {{ . }} {{ end }}{{ end }}on {{ site.Title }} + {{- with site.Params.images }} + + {{ site.Title }} + {{ index . 0 | absURL }} + {{ index . 0 | absURL }} + + {{- end }} + Hugo -- {{ hugo.Version }} + {{ site.Language.LanguageCode }}{{ with $authorEmail }} + {{.}}{{ with $authorName }} ({{ . }}){{ end }}{{ end }}{{ with $authorEmail }} + {{ . }}{{ with $authorName }} ({{ . }}){{ end }}{{ end }}{{ with site.Copyright }} + {{ . | markdownify | plainify | strings.TrimPrefix "© " }}{{ end }}{{ if not .Date.IsZero }} + {{ (index $pages.ByLastmod.Reverse 0).Lastmod.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}{{ end }} + {{- with .OutputFormats.Get "RSS" }} + {{ printf "" .Permalink .MediaType | safeHTML }} + {{- end }} + {{- range $pages }} + {{- if and (ne .Layout `search`) (ne .Layout `archives`) }} + + {{ .Title }} + {{ .Permalink }} + {{ .PublishDate.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }} + {{- with $authorEmail }}{{ . }}{{ with $authorName }} ({{ . }}){{ end }}{{ end }} + {{ .Permalink }} + {{ with .Description | html }}{{ . }}{{ else }}{{ .Summary | html }}{{ end -}} + {{- if and site.Params.ShowFullTextinRSS .Content }} + {{ (printf "" .Content) | safeHTML }} + {{- end }} + + {{- end }} + {{- end }} + + diff --git a/askkennyb/themes/PaperMod/layouts/_default/search.html b/askkennyb/themes/PaperMod/layouts/_default/search.html new file mode 100644 index 0000000..bb7d436 --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/_default/search.html @@ -0,0 +1,29 @@ +{{- define "main" }} + + + + + +{{- end }}{{/* end main */}} diff --git a/askkennyb/themes/PaperMod/layouts/_default/single.html b/askkennyb/themes/PaperMod/layouts/_default/single.html new file mode 100644 index 0000000..19a624f --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/_default/single.html @@ -0,0 +1,65 @@ +{{- define "main" }} + +
    +
    + {{ partial "breadcrumbs.html" . }} +

    + {{ .Title }} + {{- if .Draft }} + + + + + + {{- end }} +

    + {{- if .Description }} +
    + {{ .Description }} +
    + {{- end }} + {{- if not (.Param "hideMeta") }} + + {{- end }} +
    + {{- $isHidden := (.Param "cover.hiddenInSingle") | default (.Param "cover.hidden") | default false }} + {{- partial "cover.html" (dict "cxt" . "IsSingle" true "isHidden" $isHidden) }} + {{- if (.Param "ShowToc") }} + {{- partial "toc.html" . }} + {{- end }} + + {{- if .Content }} +
    + {{- if not (.Param "disableAnchoredHeadings") }} + {{- partial "anchored_headings.html" .Content -}} + {{- else }}{{ .Content }}{{ end }} +
    + {{- end }} + +
    + {{- $tags := .Language.Params.Taxonomies.tag | default "tags" }} + + {{- if (.Param "ShowPostNavLinks") }} + {{- partial "post_nav_links.html" . }} + {{- end }} + {{- if (and site.Params.ShowShareButtons (ne .Params.disableShare true)) }} + {{- partial "share_icons.html" . -}} + {{- end }} +
    + + {{- if (.Param "comments") }} + {{- partial "comments.html" . }} + {{- end }} +
    + +{{- end }}{{/* end main */}} diff --git a/askkennyb/themes/PaperMod/layouts/_default/terms.html b/askkennyb/themes/PaperMod/layouts/_default/terms.html new file mode 100644 index 0000000..6fd2654 --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/_default/terms.html @@ -0,0 +1,27 @@ +{{- define "main" }} + +{{- if .Title }} + +{{- end }} + +
      + {{- $type := .Type }} + {{- range $key, $value := .Data.Terms.Alphabetical }} + {{- $name := .Name }} + {{- $count := .Count }} + {{- with site.GetPage (printf "/%s/%s" $type $name) }} +
    • + {{ .Name }} {{ $count }} +
    • + {{- end }} + {{- end }} +
    + +{{- end }}{{/* end main */ -}} diff --git a/askkennyb/themes/PaperMod/layouts/partials/anchored_headings.html b/askkennyb/themes/PaperMod/layouts/partials/anchored_headings.html new file mode 100644 index 0000000..377af89 --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/partials/anchored_headings.html @@ -0,0 +1,2 @@ +{{- /* formats .Content headings by adding an anchor */ -}} +{{ . | replaceRE "()" "${1}${3}" | safeHTML }} diff --git a/askkennyb/themes/PaperMod/layouts/partials/author.html b/askkennyb/themes/PaperMod/layouts/partials/author.html new file mode 100644 index 0000000..8f2758f --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/partials/author.html @@ -0,0 +1,9 @@ +{{- if or .Params.author site.Params.author }} +{{- $author := (.Params.author | default site.Params.author) }} +{{- $author_type := (printf "%T" $author) }} +{{- if (or (eq $author_type "[]string") (eq $author_type "[]interface {}")) }} +{{- (delimit $author ", " ) }} +{{- else }} +{{- $author }} +{{- end }} +{{- end -}} diff --git a/askkennyb/themes/PaperMod/layouts/partials/breadcrumbs.html b/askkennyb/themes/PaperMod/layouts/partials/breadcrumbs.html new file mode 100644 index 0000000..2686ca0 --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/partials/breadcrumbs.html @@ -0,0 +1,19 @@ +{{- if (.Param "ShowBreadCrumbs") -}} + +{{- end -}} diff --git a/askkennyb/themes/PaperMod/layouts/partials/comments.html b/askkennyb/themes/PaperMod/layouts/partials/comments.html new file mode 100644 index 0000000..918451a --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/partials/comments.html @@ -0,0 +1,3 @@ +{{- /* Comments area start */ -}} +{{- /* to add comments read => https://gohugo.io/content-management/comments/ */ -}} +{{- /* Comments area end */ -}} diff --git a/askkennyb/themes/PaperMod/layouts/partials/cover.html b/askkennyb/themes/PaperMod/layouts/partials/cover.html new file mode 100644 index 0000000..9c1f9ea --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/partials/cover.html @@ -0,0 +1,65 @@ +{{- with .cxt}} {{/* Apply proper context from dict */}} +{{- if (and .Params.cover.image (not $.isHidden)) }} +
    + {{- $loading := cond $.IsSingle "eager" "lazy" }} + {{- $addLink := (and site.Params.cover.linkFullImages $.IsSingle) }} + {{- $prod := (hugo.IsProduction | or (eq site.Params.env "production")) }} + {{- $alt := (.Params.cover.alt | default .Params.cover.caption | plainify) }} + {{- $responsiveImages := (.Params.cover.responsiveImages | default site.Params.cover.responsiveImages) | default true }} + + {{- $pageBundleCover := (.Resources.ByType "image").GetMatch (printf "*%s*" (.Params.cover.image)) }} + {{- $globalResourcesCover := (resources.ByType "image").GetMatch (printf "*%s*" (.Params.cover.image)) }} + {{- $cover := (or $pageBundleCover $globalResourcesCover)}} + {{- /* We are not using the .Param.cover.relative to decide the location of image */}} + {{- /* If we have the image in pageBundle or globalResources we can process the image */}} + + {{- $sizes := (slice "360" "480" "720" "1080" "1500") }} + {{- $processableFormats := (slice "jpg" "jpeg" "png" "tif" "bmp" "gif") -}} + {{- if hugo.IsExtended -}} + {{- $processableFormats = $processableFormats | append "webp" -}} + {{- end -}} + + {{- $imgdl := (.Params.cover.image) | absURL }} + {{- if $cover -}} + {{- $imgdl = $cover.Permalink }} + {{- end -}} + + {{- if $addLink }} + + {{- end }} + + {{- if $cover -}} + {{/* i.e it is present in page bundle */}} + {{- if (and (in $processableFormats $cover.MediaType.SubType) ($responsiveImages) (eq $prod true)) }} + {{ $alt }} + {{- else }}{{/* Unprocessable image or responsive images disabled */}} + {{ $alt }} + {{- end }} + {{- else }} + {{- /* For absolute urls and external links, no img processing here */}} + {{ $alt }} + {{- end }} + + {{- if $addLink }} + + {{- end -}} + + {{- /* Display Caption */}} + {{- if $.IsSingle }} + {{ with .Params.cover.caption -}} +
    {{ . | markdownify }}
    + {{- end }} + {{- end }} +
    +{{- end }}{{/* End image */}} +{{- end -}}{{/* End context */ -}} diff --git a/askkennyb/themes/PaperMod/layouts/partials/edit_post.html b/askkennyb/themes/PaperMod/layouts/partials/edit_post.html new file mode 100644 index 0000000..d24f5b5 --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/partials/edit_post.html @@ -0,0 +1,10 @@ +{{- 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 }} | {{- end -}} + + + {{- .Params.editPost.Text | default (site.Params.editPost.Text | default (i18n "edit_post" | default "Edit")) -}} + + +{{- end }} diff --git a/askkennyb/themes/PaperMod/layouts/partials/extend_footer.html b/askkennyb/themes/PaperMod/layouts/partials/extend_footer.html new file mode 100644 index 0000000..0519748 --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/partials/extend_footer.html @@ -0,0 +1,3 @@ +{{- /* Footer custom content area start */ -}} +{{- /* Insert any custom code web-analytics, resources, etc. here */ -}} +{{- /* Footer custom content area end */ -}} diff --git a/askkennyb/themes/PaperMod/layouts/partials/extend_head.html b/askkennyb/themes/PaperMod/layouts/partials/extend_head.html new file mode 100644 index 0000000..642fcb1 --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/partials/extend_head.html @@ -0,0 +1,7 @@ +{{- /* Head custom content area start */ -}} +{{- /* Insert any custom code (web-analytics, resources, etc.) - it will appear in the section of every page. */ -}} +{{- /* Can be overwritten by partial with the same name in the global layouts. */ -}} + + + +{{- /* Head custom content area end */ -}} diff --git a/askkennyb/themes/PaperMod/layouts/partials/footer.html b/askkennyb/themes/PaperMod/layouts/partials/footer.html new file mode 100644 index 0000000..6d05117 --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/partials/footer.html @@ -0,0 +1,150 @@ +{{- if not (.Param "hideFooter") }} +
    + {{- if not site.Params.footer.hideCopyright }} + {{- if site.Copyright }} + {{ site.Copyright | markdownify }} + {{- else }} + © {{ now.Year }} {{ site.Title }} + {{- end }} + {{- print " · "}} + {{- end }} + + {{- with site.Params.footer.text }} + {{ . | markdownify }} + {{- print " · "}} + {{- end }} + + + Powered by + Hugo & + PaperMod + +
    +{{- end }} + +{{- if (not site.Params.disableScrollToTop) }} + + + + + +{{- end }} + +{{- partial "extend_footer.html" . }} + + + +{{- if (not site.Params.disableScrollToTop) }} + +{{- end }} + +{{- if (not site.Params.disableThemeToggle) }} + +{{- end }} + +{{- if (and (eq .Kind "page") (ne .Layout "archives") (ne .Layout "search") (.Param "ShowCodeCopyButtons")) }} + +{{- end }} diff --git a/askkennyb/themes/PaperMod/layouts/partials/head.html b/askkennyb/themes/PaperMod/layouts/partials/head.html new file mode 100644 index 0000000..565709b --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/partials/head.html @@ -0,0 +1,205 @@ + + + +{{- if hugo.IsProduction | or (eq site.Params.env "production") | and (ne .Params.robotsNoIndex true) }} + +{{- else }} + +{{- end }} + +{{- /* Title */}} +{{ if .IsHome }}{{ else }}{{ if .Title }}{{ .Title }} | {{ end }}{{ end }}{{ site.Title }} + +{{- /* Meta */}} +{{- if .IsHome }} +{{ with site.Params.keywords -}}{{ end }} +{{- else }} + +{{- end }} + + + +{{- if site.Params.analytics.google.SiteVerificationTag }} + +{{- end }} +{{- if site.Params.analytics.yandex.SiteVerificationTag }} + +{{- end }} +{{- if site.Params.analytics.bing.SiteVerificationTag }} + +{{- end }} +{{- if site.Params.analytics.naver.SiteVerificationTag }} + +{{- end }} + +{{- /* Styles */}} + +{{- /* includes */}} +{{- $includes := slice }} +{{- $includes = $includes | append (" " | resources.FromString "assets/css/includes-blank.css")}} + +{{- if not (eq site.Params.assets.disableScrollBarStyle true) }} + {{- $ScrollStyle := (resources.Get "css/includes/scroll-bar.css") }} + {{- $includes = (append $ScrollStyle $includes) }} +{{- end }} + +{{- $includes_all := $includes | resources.Concat "assets/css/includes.css" }} + +{{- $theme_vars := (resources.Get "css/core/theme-vars.css") }} +{{- $reset := (resources.Get "css/core/reset.css") }} +{{- $media := (resources.Get "css/core/zmedia.css") }} +{{- $license_css := (resources.Get "css/core/license.css") }} +{{- $common := (resources.Match "css/common/*.css") | resources.Concat "assets/css/common.css" }} + +{{- /* markup.highlight.noClasses should be set to `false` */}} +{{- $chroma_styles := (resources.Get "css/includes/chroma-styles.css") }} +{{- $chroma_mod := (resources.Get "css/includes/chroma-mod.css") }} + +{{- /* order is important */}} +{{- $core := (slice $theme_vars $reset $common $chroma_styles $chroma_mod $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 }} + +{{- else }} + +{{- end }} + +{{- /* Search */}} +{{- if (eq .Layout `search`) -}} + +{{- $fastsearch := resources.Get "js/fastsearch.js" | js.Build (dict "params" (dict "fuseOpts" site.Params.fuseOpts)) | resources.Minify }} +{{- $fusejs := resources.Get "js/fuse.basic.min.js" }} +{{- $license_js := resources.Get "js/license.js" }} +{{- if not site.Params.assets.disableFingerprinting }} +{{- $search := (slice $fusejs $license_js $fastsearch ) | resources.Concat "assets/js/search.js" | fingerprint }} + +{{- else }} +{{- $search := (slice $fusejs $fastsearch ) | resources.Concat "assets/js/search.js" }} + +{{- end }} +{{- end -}} + +{{- /* Favicons */}} + + + + + + + + +{{- /* RSS */}} +{{ range .AlternativeOutputFormats -}} + +{{ end -}} +{{- range .AllTranslations -}} + +{{ end -}} + + + +{{- /* theme-toggle is enabled */}} +{{- if (not site.Params.disableThemeToggle) }} +{{- /* theme is light */}} +{{- if (eq site.Params.defaultTheme "light") }} + +{{- /* theme is dark */}} +{{- else if (eq site.Params.defaultTheme "dark") }} + +{{- else }} +{{- /* theme is auto */}} + +{{- end }} +{{- /* theme-toggle is disabled and theme is auto */}} +{{- else if (and (ne site.Params.defaultTheme "light") (ne site.Params.defaultTheme "dark"))}} + +{{- end }} + +{{- partial "extend_head.html" . -}} + +{{- /* Misc */}} +{{- if hugo.IsProduction | or (eq site.Params.env "production") }} +{{- partial "google_analytics.html" . }} +{{- partial "templates/opengraph.html" . }} +{{- partial "templates/twitter_cards.html" . }} +{{- partial "templates/schema_json.html" . }} +{{- end -}} diff --git a/askkennyb/themes/PaperMod/layouts/partials/header.html b/askkennyb/themes/PaperMod/layouts/partials/header.html new file mode 100644 index 0000000..e3eb797 --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/partials/header.html @@ -0,0 +1,110 @@ +
    + +
    diff --git a/askkennyb/themes/PaperMod/layouts/partials/home_info.html b/askkennyb/themes/PaperMod/layouts/partials/home_info.html new file mode 100644 index 0000000..199dfb7 --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/partials/home_info.html @@ -0,0 +1,13 @@ +{{- with site.Params.homeInfoParams }} +
    +
    +

    {{ .Title | markdownify }}

    +
    +
    + {{ .Content | markdownify }} +
    +
    + {{ partial "social_icons.html" (dict "align" site.Params.homeInfoParams.AlignSocialIconsTo) }} +
    +
    +{{- end -}} diff --git a/askkennyb/themes/PaperMod/layouts/partials/index_profile.html b/askkennyb/themes/PaperMod/layouts/partials/index_profile.html new file mode 100644 index 0000000..6882f39 --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/partials/index_profile.html @@ -0,0 +1,58 @@ +
    + {{- with site.Params.profileMode }} +
    + {{- 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 }} + {{ .imageTitle | default + {{- else }} + {{ .imageTitle | default + {{- end }} + {{- end }} +

    {{ .title | default site.Title | markdownify }}

    + {{ .subtitle | markdownify }} + {{- partial "social_icons.html" -}} + + {{- with .buttons }} + + {{- end }} +
    + {{- end}} +
    diff --git a/askkennyb/themes/PaperMod/layouts/partials/post_canonical.html b/askkennyb/themes/PaperMod/layouts/partials/post_canonical.html new file mode 100644 index 0000000..abfc1e3 --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/partials/post_canonical.html @@ -0,0 +1,9 @@ +{{ if and (.Params.canonicalURL) (.Params.ShowCanonicalLink ) -}} +{{ $url := urls.Parse .Params.canonicalURL }} + +{{- if or .Params.author site.Params.author (.Param "ShowReadingTime") (not .Date.IsZero) .IsTranslated (or .Params.editPost.URL site.Params.editPost.URL) }} | {{- end -}} + + {{- (site.Params.CanonicalLinkText | default .Params.CanonicalLinkText) | default "Originally published at" -}} +  {{ $url.Host }} + +{{- end }} diff --git a/askkennyb/themes/PaperMod/layouts/partials/post_meta.html b/askkennyb/themes/PaperMod/layouts/partials/post_meta.html new file mode 100644 index 0000000..ae996ba --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/partials/post_meta.html @@ -0,0 +1,23 @@ +{{- $scratch := newScratch }} + +{{- if not .Date.IsZero -}} +{{- $scratch.Add "meta" (slice (printf "%s" (.Date) (.Date | time.Format (default ":date_long" site.Params.DateFormat)))) }} +{{- end }} + +{{- if (.Param "ShowReadingTime") -}} +{{- $scratch.Add "meta" (slice (printf "%s" (i18n "read_time" .ReadingTime | default (printf "%d min" .ReadingTime)))) }} +{{- end }} + +{{- if (.Param "ShowWordCount") -}} +{{- $scratch.Add "meta" (slice (printf "%s" (i18n "words" .WordCount | default (printf "%d words" .WordCount)))) }} +{{- end }} + +{{- if not (.Param "hideAuthor") -}} +{{- with (partial "author.html" .) }} +{{- $scratch.Add "meta" (slice (printf "%s" .)) }} +{{- end }} +{{- end }} + +{{- with ($scratch.Get "meta") }} +{{- delimit . " · " | safeHTML -}} +{{- end -}} diff --git a/askkennyb/themes/PaperMod/layouts/partials/post_nav_links.html b/askkennyb/themes/PaperMod/layouts/partials/post_nav_links.html new file mode 100644 index 0000000..b988641 --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/partials/post_nav_links.html @@ -0,0 +1,19 @@ +{{- $pages := where site.RegularPages "Type" "in" site.Params.mainSections }} +{{- if and (gt (len $pages) 1) (in $pages . ) }} + +{{- end }} diff --git a/askkennyb/themes/PaperMod/layouts/partials/share_icons.html b/askkennyb/themes/PaperMod/layouts/partials/share_icons.html new file mode 100644 index 0000000..910ba7f --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/partials/share_icons.html @@ -0,0 +1,95 @@ +{{- $pageurl := .Permalink }} +{{- $title := .Title }} + +{{- $.Scratch.Set "tags" ""}} + +{{- with .Params.Tags }} +{{- $hashtags := newScratch}} +{{- range . }}{{ $hashtags.Add "tags" (slice (replaceRE "(\\s)" "" . ))}}{{end}} +{{- $.Scratch.Set "tags" (delimit ($hashtags.Get "tags") ",") }} +{{- end -}} + +{{- $custom := false }} +{{- $ShareButtons := (.Param "ShareButtons")}} +{{- with $ShareButtons }}{{ $custom = true }}{{ end }} + + diff --git a/askkennyb/themes/PaperMod/layouts/partials/social_icons.html b/askkennyb/themes/PaperMod/layouts/partials/social_icons.html new file mode 100644 index 0000000..ce76a30 --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/partials/social_icons.html @@ -0,0 +1,8 @@ + diff --git a/askkennyb/themes/PaperMod/layouts/partials/svg.html b/askkennyb/themes/PaperMod/layouts/partials/svg.html new file mode 100644 index 0000000..ab9b4a3 --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/partials/svg.html @@ -0,0 +1,1001 @@ +{{- $icon_name := ( trim .name " " | lower )}} +{{- if (eq $icon_name "123rf") -}} + + + + +{{- else if (eq $icon_name "500px") -}} + + + +{{- else if (eq $icon_name "adobestock") -}} + + + + +{{- else if (eq $icon_name "anilist") -}} + + + +{{- else if or (eq $icon_name "ao3") (eq $icon_name "archiveofourown") -}} + + + + + + +{{- else if (eq $icon_name "applemusic") -}} + + + +{{- else if (eq $icon_name "applepodcasts") -}} + + + +{{- else if (eq $icon_name "bandcamp") -}} + + + +{{- else if (eq $icon_name "behance") -}} + + + +{{- else if (eq $icon_name "bilibili") -}} + + + + + + + +{{- else if (eq $icon_name "bitcoin") -}} + + + +{{- else if (eq $icon_name "bluesky") -}} + + + +{{- else if (eq $icon_name "bookwyrm") -}} + + + +{{- else if (eq $icon_name "bugcrowd") -}} + + + +{{- else if (eq $icon_name "buttondown") -}} + + + + + + + + + + +{{- else if (eq $icon_name "buymeacoffee") -}} + + + + + + + + + + + + + + + + +{{- else if (eq $icon_name "codeberg") -}} + + + +{{- else if (eq $icon_name "codeforces") -}} + + + +{{- else if (eq $icon_name "codepen") -}} + + + + + + + +{{- else if (eq $icon_name "credly") -}} + + + +{{- else if (eq $icon_name "cryptohack") -}} + + + + + + +{{- else if (eq $icon_name "ctftime") -}} + + + + + + +{{- else if (eq $icon_name "cv") -}} + + + + + + +{{- else if (eq $icon_name "deezer") -}} + + + +{{- else if (eq $icon_name "dev") -}} + + + +{{- else if (eq $icon_name "deviantart") -}} + + + +{{- else if (eq $icon_name "discogs") -}} + + + +{{- else if (eq $icon_name "discord") -}} + + + +{{- else if (eq $icon_name "douban") -}} + + + + + +{{- else if (eq $icon_name "dreamstime") -}} + + + +{{- else if (eq $icon_name "dribbble") -}} + + + + + +{{- else if (eq $icon_name "dzen") -}} + + + +{{- else if (eq $icon_name "email") -}} + + + + +{{- else if (eq $icon_name "ethereum") -}} + + + +{{- else if (eq $icon_name "exercism") -}} + + + + +{{- else if (eq $icon_name "facebook") -}} + + + +{{- else if (eq $icon_name "farcaster") -}} + + + + + +{{- else if (eq $icon_name "fediverse") -}} + + + + + + + + + + +{{- else if (eq $icon_name "firefish") -}} + + + +{{- else if (eq $icon_name "flickr") -}} + + + +{{- else if (eq $icon_name "forgejo") -}} + + + +{{- else if (eq $icon_name "freepik") -}} + + + + + + +{{- else if (eq $icon_name "git") -}} + + + +{{- else if (eq $icon_name "gitea") -}} + + + +{{- else if (eq $icon_name "github") -}} + + + + +{{- else if (eq $icon_name "gitlab") -}} + + + + +{{- else if (eq $icon_name "goodreads") -}} + + + +{{- else if (eq $icon_name "googleplaystore") -}} + + + +{{- else if (eq $icon_name "googlepodcasts") -}} + + + +{{- else if (eq $icon_name "googlescholar") -}} + + + +{{- else if (eq $icon_name "gurushots") -}} + + + + + + + + + + + + +{{- else if (eq $icon_name "hackerone") -}} + + + +{{- else if (eq $icon_name "hackerrank") -}} + + + + + + +{{- else if (eq $icon_name "hackthebox") -}} + + + + + + +{{- else if (eq $icon_name "imdb") -}} + + + +{{- else if (eq $icon_name "instagram") -}} + + + + + +{{- else if (eq $icon_name "intigriti") -}} + + + +{{- else if (eq $icon_name "itchio") -}} + + + +{{- else if (eq $icon_name "juejin") -}} + + + +{{- else if (eq $icon_name "kaggle") -}} + + + +{{- else if (eq $icon_name "kakaotalk") -}} + + + + + + + +{{- else if (eq $icon_name "keybase") -}} + + + +{{- else if (eq $icon_name "keyoxide") -}} + + + + +{{- else if (eq $icon_name "kofi") -}} + + + +{{- else if (eq $icon_name "komoot") -}} + + + +{{- else if (eq $icon_name "lastfm") -}} + + + +{{- else if (eq $icon_name "leetcode") -}} + + + +{{- else if (eq $icon_name "letterboxd") -}} + + + +{{- else if (eq $icon_name "liberapay") -}} + + + + + + +{{- else if (eq $icon_name "lichess" ) -}} + + + +{{- else if (eq $icon_name "linkedin") -}} + + + + + +{{- else if (eq $icon_name "linktree") -}} + + + +{{- else if (eq $icon_name "mastodon") -}} + + + + +{{- else if (eq $icon_name "matrix") -}} + + + +{{- else if (eq $icon_name "medium") -}} + + + + + +{{- else if (eq $icon_name "microblog") -}} + + + + + + +{{- else if (eq $icon_name "mixcloud") -}} + + + +{{- else if (eq $icon_name "monero") -}} + + + +{{- else if (eq $icon_name "neteasecloudmusic") -}} + + + +{{- else if (eq $icon_name "nextcloud") -}} + + + +{{- else if (eq $icon_name "nostr") -}} + + + +{{- else if (eq $icon_name "nuget") -}} + + + + + + + + +{{- else if (eq $icon_name "orcid") -}} + + + +{{- else if (eq $icon_name "osu!") -}} + + + + + + +{{- else if (eq $icon_name "overcast") -}} + + + +{{- else if (eq $icon_name "patreon") -}} + + + + + + +{{- else if (eq $icon_name "paypal") -}} + + + +{{- else if (eq $icon_name "peertube") -}} + + + +{{- else if or (eq $icon_name "pgpkey") (eq $icon_name "key") -}} + + + + +{{- else if (eq $icon_name "phone") -}} + + + + + +{{- else if (eq $icon_name "pinterest") -}} + + + +{{- else if (eq $icon_name "pixelfed") -}} + + + +{{- else if (eq $icon_name "pleroma") -}} + + + +{{- else if (eq $icon_name "pocketcasts") -}} + + + +{{- else if (eq $icon_name "printables") -}} + + + +{{- else if (eq $icon_name "qq") -}} + + + + +{{- else if (eq $icon_name "reddit") -}} + + + +{{- else if (eq $icon_name "raycast") -}} + + + +{{- else if (eq $icon_name "researchgate") -}} + + + +{{- else if (eq $icon_name "rootme") -}} + + + + + + + + +{{- else if (eq $icon_name "rss") -}} + + + + + +{{- else if (eq $icon_name "serverfault") -}} + + + +{{- else if (eq $icon_name "sessionmessenger") -}} + + + + +{{- else if (eq $icon_name "shutterstock") -}} + + + + +{{- else if (eq $icon_name "signal") -}} + + + +{{- else if (eq $icon_name "sketchfab") -}} + + + +{{- else if (eq $icon_name "slack") -}} + + + + + + + +{{- else if (eq $icon_name "snapchat") -}} + + + +{{- else if (eq $icon_name "soundcloud") -}} + + + +{{- else if (eq $icon_name "sourcehut") -}} + + + + +{{- else if (eq $icon_name "spacehey") -}} + + + + + +{{- else if (eq $icon_name "spotify") -}} + + + +{{- else if (eq $icon_name "stackoverflow") -}} + + + +{{- else if (eq $icon_name "steam") -}} + + + + + + + + + +{{- else if (eq $icon_name "strava") -}} + + + +{{- else if (eq $icon_name "substack") -}} + + + +{{- else if (eq $icon_name "tableau") -}} + + + + + + + + + + +{{- else if (eq $icon_name "telegram") -}} + + + +{{- else if (eq $icon_name "thingiverse") -}} + + + +{{- else if (eq $icon_name "threads") -}} + + + + +{{- else if (eq $icon_name "threema") -}} + + + + +{{- else if (eq $icon_name "tidal") -}} + + + +{{- else if (eq $icon_name "tiktok") -}} + + + +{{- else if (eq $icon_name "tryhackme") -}} + + + +{{- else if (eq $icon_name "tumblr") -}} + + + +{{- else if (eq $icon_name "twitch") -}} + + + +{{- else if (eq $icon_name "twitter") -}} + + + + +{{- else if (eq $icon_name "unity") -}} + + + +{{- else if (eq $icon_name "unsplash") -}} + + + + +{{- else if (eq $icon_name "vimeo") -}} + + + +{{- else if or (eq $icon_name "vk") (eq $icon_name "vkontakte") -}} + + + +{{- else if (eq $icon_name "wantedly") -}} + + + +{{- else if (eq $icon_name "wechat") -}} + + + + +{{- else if (eq $icon_name "whatsapp") -}} + + + +{{- else if or (eq $icon_name "wikipedia") (eq $icon_name "wiki") -}} + + + + +{{- else if (eq $icon_name "wordpress") -}} + + + +{{- else if (eq $icon_name "x") -}} + + + + +{{- else if (eq $icon_name "xda") -}} + + + +{{- else if (eq $icon_name "xing") -}} + + + + +{{- else if (eq $icon_name "xmpp") -}} + + + + +{{- else if (eq $icon_name "ycombinator") -}} + + + +{{- else if (eq $icon_name "yeswehack") -}} + + + + +{{- else if (eq $icon_name "youtube") -}} + + + + + +{{- else if (eq $icon_name "zcal") -}} + + + +{{- else if (eq $icon_name "zhihu") -}} + + + +{{- else if (eq $icon_name "jamendo") -}} + + + + + + + +{{- else if $icon_name -}} + + + + +{{- end -}} diff --git a/askkennyb/themes/PaperMod/layouts/partials/templates/_funcs/get-page-images.html b/askkennyb/themes/PaperMod/layouts/partials/templates/_funcs/get-page-images.html new file mode 100644 index 0000000..268ceb4 --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/partials/templates/_funcs/get-page-images.html @@ -0,0 +1,47 @@ +{{- $imgs := slice }} +{{- $imgParams := .Params.images }} +{{- $resources := .Resources.ByType "image" -}} +{{/* Find featured image resources if the images parameter is empty. */}} +{{- if not $imgParams }} + {{- $featured := $resources.GetMatch "*feature*" -}} + {{- if not $featured }}{{ $featured = $resources.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}} + {{- with $featured }} + {{- $imgs = $imgs | append (dict + "Image" . + "RelPermalink" .RelPermalink + "Permalink" .Permalink) }} + {{- end }} +{{- end }} +{{/* Use the first one of site images as the fallback. */}} +{{- if and (not $imgParams) (not $imgs) }} + {{- with site.Params.images }} + {{- $imgParams = first 1 . }} + {{- end }} +{{- end }} +{{/* Parse page's images parameter. */}} +{{- range $imgParams }} + {{- $img := . }} + {{- $url := urls.Parse $img }} + {{- if eq $url.Scheme "" }} + {{/* Internal image. */}} + {{- with $resources.GetMatch $img -}} + {{/* Image resource. */}} + {{- $imgs = $imgs | append (dict + "Image" . + "RelPermalink" .RelPermalink + "Permalink" .Permalink) }} + {{- else }} + {{- $imgs = $imgs | append (dict + "RelPermalink" (relURL $img) + "Permalink" (absURL $img) + ) }} + {{- end }} + {{- else }} + {{/* External image */}} + {{- $imgs = $imgs | append (dict + "RelPermalink" $img + "Permalink" $img + ) }} + {{- end }} +{{- end }} +{{- return $imgs }} diff --git a/askkennyb/themes/PaperMod/layouts/partials/templates/opengraph.html b/askkennyb/themes/PaperMod/layouts/partials/templates/opengraph.html new file mode 100644 index 0000000..fe5bf53 --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/partials/templates/opengraph.html @@ -0,0 +1,86 @@ + + +{{- with or site.Title site.Params.title | plainify }} + +{{- end }} + +{{- with or .Title site.Title site.Params.title | plainify }} + +{{- end }} + +{{- with or .Description .Summary site.Params.description | plainify | htmlUnescape | chomp }} + +{{- end }} + +{{- with or .Params.locale site.Language.LanguageCode site.Language.Lang }} + +{{- end }} + +{{- if .IsPage }} + + {{- with .Section }} + + {{- end }} + {{- $ISO8601 := "2006-01-02T15:04:05-07:00" }} + {{- with .PublishDate }} + + {{- end }} + {{- with .Lastmod }} + + {{- end }} + {{- range .GetTerms "tags" | first 6 }} + + {{- end }} +{{- else }} + +{{- end }} + +{{- if .Params.cover.image -}} + {{- if (ne .Params.cover.relative true) }} + + {{- else}} + + {{- end}} +{{- else }} + {{- with partial "_funcs/get-page-images" . }} + {{- range . | first 6 }} + + {{- end }} + {{- end }} +{{- end }} + +{{- with .Params.audio }} + {{- range . | first 6 }} + + {{- end }} +{{- end }} + +{{- with .Params.videos }} + {{- range . | first 6 }} + + {{- end }} +{{- end }} + +{{- range .GetTerms "series" }} + {{- range .Pages | first 7 }} + {{- if ne $ . }} + + {{- end }} + {{- end }} +{{- end }} + +{{- with site.Params.social }} + {{- if reflect.IsMap . }} + {{- with .facebook_app_id }} + + {{- else }} + {{- with .facebook_admin }} + + {{- end }} + {{- end }} + {{- end }} +{{- end }} + +{{- with (.Param "social.fediverse_creator") }} + +{{- end }} diff --git a/askkennyb/themes/PaperMod/layouts/partials/templates/schema_json.html b/askkennyb/themes/PaperMod/layouts/partials/templates/schema_json.html new file mode 100644 index 0000000..8a4efb4 --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/partials/templates/schema_json.html @@ -0,0 +1,128 @@ +{{ if .IsHome }} + +{{- else if (or .IsPage .IsSection) }} +{{/* BreadcrumbList */}} +{{- $url := replace .Parent.Permalink ( printf "%s" site.Home.Permalink) "" }} +{{- $lang_url := strings.TrimPrefix ( printf "%s/" .Lang) $url }} +{{- $bc_list := (split $lang_url "/")}} + +{{- $scratch := newScratch }} + +{{- if .IsPage }} + +{{- end }}{{/* .IsPage end */}} + +{{- end -}} diff --git a/askkennyb/themes/PaperMod/layouts/partials/templates/twitter_cards.html b/askkennyb/themes/PaperMod/layouts/partials/templates/twitter_cards.html new file mode 100644 index 0000000..a6e1d05 --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/partials/templates/twitter_cards.html @@ -0,0 +1,31 @@ +{{- if .Params.cover.image -}} + +{{- if (ne $.Params.cover.relative true) }} + +{{- else }} + +{{- end}} +{{- else }} +{{- $images := partial "templates/_funcs/get-page-images" . -}} +{{- with index $images 0 -}} + + +{{- else -}} + +{{- end -}} +{{- end }} + + + +{{- $twitterSite := "" }} +{{- with site.Params.social }} + {{- if reflect.IsMap . }} + {{- with .twitter }} + {{- $content := . }} + {{- if not (strings.HasPrefix . "@") }} + {{- $content = printf "@%v" . }} + {{- end }} + + {{- end }} + {{- end }} +{{- end }} diff --git a/askkennyb/themes/PaperMod/layouts/partials/toc.html b/askkennyb/themes/PaperMod/layouts/partials/toc.html new file mode 100644 index 0000000..28f8694 --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/partials/toc.html @@ -0,0 +1,97 @@ +{{- $headers := findRE "(.|\n])+?
    " .Content -}} +{{- $has_headers := ge (len $headers) 1 -}} +{{- if $has_headers -}} +
    +
    + + {{- i18n "toc" | default "Table of Contents" }} + + +
    + {{- if (.Param "UseHugoToc") }} + {{- .TableOfContents -}} + {{- else }} + {{- $largest := 6 -}} + {{- range $headers -}} + {{- $headerLevel := index (findRE "[1-6]" . 1) 0 -}} + {{- $headerLevel := len (seq $headerLevel) -}} + {{- if lt $headerLevel $largest -}} + {{- $largest = $headerLevel -}} + {{- end -}} + {{- end -}} + + {{- $firstHeaderLevel := len (seq (index (findRE "[1-6]" (index $headers 0) 1) 0)) -}} + + {{- $.Scratch.Set "bareul" slice -}} +
      + {{- range seq (sub $firstHeaderLevel $largest) -}} +
        + {{- $.Scratch.Add "bareul" (sub (add $largest .) 1) -}} + {{- end -}} + {{- range $i, $header := $headers -}} + {{- $headerLevel := index (findRE "[1-6]" . 1) 0 -}} + {{- $headerLevel := len (seq $headerLevel) -}} + + {{/* get id="xyz" */}} + {{- $id := index (findRE "(id=\"(.*?)\")" $header 9) 0 }} + + {{- /* strip id="" to leave xyz, no way to get regex capturing groups in hugo */ -}} + {{- $cleanedID := replace (replace $id "id=\"" "") "\"" "" }} + {{- $header := replaceRE "((.|\n])+?)" "$1" $header -}} + + {{- if ne $i 0 -}} + {{- $prevHeaderLevel := index (findRE "[1-6]" (index $headers (sub $i 1)) 1) 0 -}} + {{- $prevHeaderLevel := len (seq $prevHeaderLevel) -}} + {{- if gt $headerLevel $prevHeaderLevel -}} + {{- range seq $prevHeaderLevel (sub $headerLevel 1) -}} +
          + {{/* the first should not be recorded */}} + {{- if ne $prevHeaderLevel . -}} + {{- $.Scratch.Add "bareul" . -}} + {{- end -}} + {{- end -}} + {{- else -}} + + {{- if lt $headerLevel $prevHeaderLevel -}} + {{- range seq (sub $prevHeaderLevel 1) -1 $headerLevel -}} + {{- if in ($.Scratch.Get "bareul") . -}} +
        + {{/* manually do pop item */}} + {{- $tmp := $.Scratch.Get "bareul" -}} + {{- $.Scratch.Delete "bareul" -}} + {{- $.Scratch.Set "bareul" slice}} + {{- range seq (sub (len $tmp) 1) -}} + {{- $.Scratch.Add "bareul" (index $tmp (sub . 1)) -}} + {{- end -}} + {{- else -}} +
      + + {{- end -}} + {{- end -}} + {{- end -}} + {{- end }} +
    • + {{- $header | plainify | safeHTML -}} + {{- else }} +
    • + {{- $header | plainify | safeHTML -}} + {{- end -}} + {{- end -}} + + {{- $firstHeaderLevel := $largest }} + {{- $lastHeaderLevel := len (seq (index (findRE "[1-6]" (index $headers (sub (len $headers) 1)) 1) 0)) }} +
    • + {{- range seq (sub $lastHeaderLevel $firstHeaderLevel) -}} + {{- if in ($.Scratch.Get "bareul") (add . $firstHeaderLevel) }} +
    + {{- else }} + +
  • + {{- end -}} + {{- end }} + + {{- end }} + + + +{{- end }} diff --git a/askkennyb/themes/PaperMod/layouts/partials/translation_list.html b/askkennyb/themes/PaperMod/layouts/partials/translation_list.html new file mode 100644 index 0000000..01729cd --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/partials/translation_list.html @@ -0,0 +1,19 @@ +{{- if .IsTranslated -}} +{{- if (ne .Layout "search") }} +{{- if or .Params.author site.Params.author (.Param "ShowReadingTime") (not .Date.IsZero) }} | {{- end -}} +{{- end -}} +{{- i18n "translations" | default "Translations" }}: + +{{- end -}} diff --git a/askkennyb/themes/PaperMod/layouts/robots.txt b/askkennyb/themes/PaperMod/layouts/robots.txt new file mode 100644 index 0000000..f26f508 --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/robots.txt @@ -0,0 +1,7 @@ +User-agent: * +{{- if hugo.IsProduction | or (eq site.Params.env "production") }} +Disallow: +{{- else }} +Disallow: / +{{- end }} +Sitemap: {{ "sitemap.xml" | absURL }} diff --git a/askkennyb/themes/PaperMod/layouts/shortcodes/collapse.html b/askkennyb/themes/PaperMod/layouts/shortcodes/collapse.html new file mode 100644 index 0000000..17d8d3b --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/shortcodes/collapse.html @@ -0,0 +1,8 @@ +{{ if .Get "summary" }} +{{ else }} +{{ warnf "missing value for param 'summary': %s" .Position }} +{{ end }} +

    + {{ .Get "summary" | markdownify }} + {{ .Inner | markdownify }} +

    diff --git a/askkennyb/themes/PaperMod/layouts/shortcodes/figure.html b/askkennyb/themes/PaperMod/layouts/shortcodes/figure.html new file mode 100644 index 0000000..8c93eff --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/shortcodes/figure.html @@ -0,0 +1,31 @@ + + {{- if .Get "link" -}} + + {{- end }} + {{ with .Get + {{- if .Get "link" }}{{ end -}} + {{- if or (or (.Get "title") (.Get "caption")) (.Get "attr") -}} +
    + {{ with (.Get "title") -}} + {{ . }} + {{- end -}} + {{- if or (.Get "caption") (.Get "attr") -}}

    + {{- .Get "caption" | markdownify -}} + {{- with .Get "attrlink" }} + + {{- end -}} + {{- .Get "attr" | markdownify -}} + {{- if .Get "attrlink" }}{{ end }}

    + {{- end }} +
    + {{- end }} + diff --git a/askkennyb/themes/PaperMod/layouts/shortcodes/inTextImg.html b/askkennyb/themes/PaperMod/layouts/shortcodes/inTextImg.html new file mode 100644 index 0000000..0239fd6 --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/shortcodes/inTextImg.html @@ -0,0 +1,5 @@ +{{- $Img := (.Get "url") }} +{{- $height := (.Get "height") }} +{{- $alt := (.Get "alt") }} + +{{$alt}} diff --git a/askkennyb/themes/PaperMod/layouts/shortcodes/ltr.html b/askkennyb/themes/PaperMod/layouts/shortcodes/ltr.html new file mode 100644 index 0000000..4ad7682 --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/shortcodes/ltr.html @@ -0,0 +1,15 @@ +{{ $.Scratch.Set "md" false }} + +{{ if .IsNamedParams }} +{{ $.Scratch.Set "md" (.Get "md") }} +{{ else }} +{{ $.Scratch.Set "md" (.Get 0) }} +{{ end }} + +
    + {{ if eq ($.Scratch.Get "md") false }} + {{ .Inner }} + {{ else }} + {{ .Inner | markdownify }} + {{ end }} +
    diff --git a/askkennyb/themes/PaperMod/layouts/shortcodes/rawhtml.html b/askkennyb/themes/PaperMod/layouts/shortcodes/rawhtml.html new file mode 100644 index 0000000..9350c13 --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/shortcodes/rawhtml.html @@ -0,0 +1,2 @@ + +{{- .Inner -}} \ No newline at end of file diff --git a/askkennyb/themes/PaperMod/layouts/shortcodes/rtl.html b/askkennyb/themes/PaperMod/layouts/shortcodes/rtl.html new file mode 100644 index 0000000..a69b8ce --- /dev/null +++ b/askkennyb/themes/PaperMod/layouts/shortcodes/rtl.html @@ -0,0 +1,15 @@ +{{ $.Scratch.Set "md" false }} + +{{ if .IsNamedParams }} +{{ $.Scratch.Set "md" (.Get "md") }} +{{ else }} +{{ $.Scratch.Set "md" (.Get 0) }} +{{ end }} + +
    + {{ if eq ($.Scratch.Get "md") false }} + {{ .Inner }} + {{ else }} + {{ .Inner | markdownify }} + {{ end }} +
    diff --git a/askkennyb/themes/PaperMod/theme.toml b/askkennyb/themes/PaperMod/theme.toml new file mode 100644 index 0000000..e4352b9 --- /dev/null +++ b/askkennyb/themes/PaperMod/theme.toml @@ -0,0 +1,52 @@ +# theme.toml template for a Hugo theme +# See https://github.com/gohugoio/hugoThemes#themetoml for an example + +name = "PaperMod" +license = "MIT" +licenselink = "https://github.com/adityatelange/hugo-PaperMod/blob/master/LICENSE" +description = "A fast, clean, responsive Hugo theme" +homepage = "https://adityatelange.github.io/hugo-PaperMod/" +demosite = "https://adityatelange.github.io/hugo-PaperMod/" +tags = [ + "responsive", + "simple", + "clean", + "light", + "dark", + "blog", + "minimalist", + "highlight.js", + "search" +] +features = [ + "responsive", + "single-column", + "blog", + "cover-image", + "table-of-contents", + "opengraph", + "highlight.js", + "favicon", + "archive", + "share-icons", + "cover", + "multilingual", + "social-icons", + "minified-assets", + "theme-toggle", + "menu-location-indicator", + "scroll-to-top", + "search" +] +min_version = "0.146.0" + +[author] + name = "Aditya Telange" + homepage = "https://github.com/adityatelange/" + +# If porting an existing theme +[original] + name = "Paper" + author = "nanxiaobei" + homepage = "https://github.com/nanxiaobei" + repo = "https://github.com/nanxiaobei/hugo-paper/"