├── .gitignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── archetypes └── default.md ├── assets ├── css │ ├── paginator.css │ ├── postcss.config.js │ ├── site.css │ ├── styles.css │ └── tailwind.config.js └── js │ ├── fuse.min.js │ └── search.js ├── exampleSite ├── .gitignore ├── content │ ├── _index.md │ ├── about.md │ ├── de │ │ ├── blog │ │ │ ├── _index.md │ │ │ ├── emoji-support.md │ │ │ ├── markdown-syntax.md │ │ │ ├── placeholder-text.md │ │ │ └── rich-content.md │ │ └── page │ │ │ └── about.md │ └── en │ │ ├── blog │ │ ├── _index.md │ │ ├── emoji-support.md │ │ ├── markdown-syntax.md │ │ ├── math-typesetting.md │ │ ├── placeholder-text.md │ │ └── rich-content.md │ │ └── page │ │ └── about.md ├── hugo.toml ├── layouts │ └── .gitkeep └── static │ ├── blist-logo-de.png │ ├── blist-logo.png │ ├── blog-post.jpg │ ├── favicon.svg │ ├── featured-placeholder.jpg │ └── picture.jpg ├── i18n ├── de.yaml ├── en.yaml ├── es.yaml └── fr.yaml ├── images ├── blist-logo.png ├── pagespeed-performance.png ├── screenshot.png └── tn.png ├── layouts ├── 404.html ├── _default │ ├── _markup │ │ ├── render-link.html │ │ └── render-passthrough.html │ ├── baseof.html │ ├── index.json │ ├── list.html │ └── single.html ├── index.html └── partials │ ├── blog-card.html │ ├── comments.html │ ├── footer.html │ ├── head.html │ ├── header.html │ ├── intro.html │ ├── paginate.html │ ├── search-ui.html │ ├── social.html │ ├── toc.html │ └── translation_link.html ├── package-lock.json ├── package.json ├── static └── fonts │ ├── inter-v3-latin-300.eot │ ├── inter-v3-latin-300.svg │ ├── inter-v3-latin-300.ttf │ ├── inter-v3-latin-300.woff │ ├── inter-v3-latin-300.woff2 │ ├── inter-v3-latin-500.eot │ ├── inter-v3-latin-500.svg │ ├── inter-v3-latin-500.ttf │ ├── inter-v3-latin-500.woff │ ├── inter-v3-latin-500.woff2 │ ├── inter-v3-latin-700.eot │ ├── inter-v3-latin-700.svg │ ├── inter-v3-latin-700.ttf │ ├── inter-v3-latin-700.woff │ └── inter-v3-latin-700.woff2 └── theme.toml /.gitignore: -------------------------------------------------------------------------------- 1 | /.idea 2 | /node_modules 3 | /exampleSite/public 4 | /exampleSite/hugo_stats.json 5 | /exampleSite/.hugo_build.lock 6 | .DS_Store 7 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All the changes made to Blist theme for Hugo. 4 | 5 | ## v2.1.0 - 2023-01-09 6 | 7 | ### Added 8 | 9 | - Support multiple comment systems #64 10 | 11 | ## v2.0.1 - 2022-12-27 12 | 13 | ### Fixed 14 | 15 | - Page metadata layout in mobile #94 16 | 17 | ## v2.0.0 - 2022-12-25 18 | 19 | ### Added 20 | 21 | - BREAKING: Ability to specify social icons order #91 22 | - Table of contents support #84 23 | - Search customization #79 24 | - Option to skip showing thumbnail in post page #93 25 | - Added more social icons 26 | - Mastodon #92 27 | - XDA #83 28 | - Telegram #83 29 | - Buy me a coffee #83 30 | - Google Scholar #85 31 | - Facebook #90 32 | - Behance #66 33 | - Tiktok #77 34 | - Stackoverflow #71 35 | 36 | ### Fixed 37 | 38 | - Inline code block #78 39 | 40 | ## v1.5.0 - 2022-08-11 41 | 42 | ### Added 43 | 44 | - Ability to hide metadata via param hideMeta #37 45 | - Hide other languages option via param hideOtherLanguages 46 | - Add French support #53 #54 #55 47 | 48 | ### Fixed 49 | 50 | - Fix broken Multilingual search 51 | 52 | ## v1.4.0 - 2022-01-08 53 | 54 | ### Added 55 | 56 | - Hamburger menu for mobile UI #23 57 | - Image logo support #24 58 | 59 | ## v1.3.1 - 2021-11-28 60 | 61 | ### Added 62 | 63 | - Adding xing support to social icons - #15 64 | - Fix: Adding missing whitespace between label and language in single page - #16 65 | - Fix: Readable Lastmod - #17 66 | 67 | ## v1.3.0 - 2021-10-27 68 | 69 | ### Added 70 | 71 | - Add YouTube & Instagram social icons - #9 72 | - Add i18n support - #11 73 | - Add 404 page - #13 74 | 75 | ## v1.2.0 - 2021-07-18 76 | 77 | ### Added 78 | 79 | - Add color customization for Intro and Social links blocks 80 | 81 | ## v1.1.0 - 2021-07-17 82 | 83 | ### Added 84 | 85 | - Add support for text search 86 | 87 | ## v1.0.0 - 2021-07-16 88 | 89 | - Initial Release -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2021 Varun A P 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Blist theme for Hugo 2 | 3 | ![Latest Release](https://img.shields.io/github/tag/apvarun/blist-hugo-theme.svg) 4 | ![Blist hugo theme](https://img.shields.io/github/license/apvarun/blist-hugo-theme) 5 | ![Hugo generator](https://img.shields.io/badge/generator-hugo-brightgreen) 6 | 7 | Blist is a clean and fast blog theme for your Hugo site. 8 | 9 | ![Blist Icon](https://github.com/apvarun/blist-hugo-theme/raw/main/images/blist-logo.png) 10 | 11 | **Features:** 12 | 13 | - Responsive content / Mobile-optimized 14 | - Blog pagination 15 | - Customizable Text Search 16 | - Table of contents 17 | - Social links 18 | - Code highlighting 19 | - Color customization 20 | - Dark mode 21 | - Fast performance 22 | - SEO optimized 23 | - i18n support 24 | - Support comments systems 25 | - Disqus (hugo native) 26 | - giscus 27 | - utterances 28 | 29 | ## Preview 30 | 31 | ![Preview](https://github.com/apvarun/blist-hugo-theme/raw/main/images/screenshot.png) 32 | 33 | ➡️ [DEMO](https://blist.vercel.app/) 34 | 35 | ## Get the theme 36 | 37 | Minimum Hugo Version: **0.110.0** 38 | 39 | Run from the root of your Hugo site: 40 | 41 | ```sh 42 | git clone https://github.com/apvarun/blist-hugo-theme.git themes/blist 43 | ``` 44 | 45 | Alternatively, you can include this repository as a [git submodule](https://git-scm.com/docs/gitsubmodules). This makes it easier to update this theme if you have your Hugo site in git as well: 46 | 47 | ```sh 48 | git submodule add https://github.com/apvarun/blist-hugo-theme.git themes/blist 49 | ``` 50 | 51 | ## Preview the theme with example content 52 | 53 | Blist theme ships with an fully configured example site. For a quick preview: 54 | 55 | Copy the `package.json` file from `themes/blist` folder to your hugo website root folder, and run `npm install`. 56 | 57 | ```sh 58 | cd themes/blist/exampleSite/ 59 | hugo serve --themesDir ../.. 60 | ``` 61 | 62 | Then visit `http://localhost:1313/` in your browser to view the example site. 63 | 64 | ## Configuring theme to a hugo website 65 | 66 | 1. Copy `package.json` and `package-lock.json` to the root folder of your website 67 | 2. Run `npm install` to install required packages for theme 68 | 3. Run `npm i -g postcss-cli` to use PostCSS with Hugo build 69 | 4. Set `theme = 'blist'` in hugo.toml 70 | 5. Run `npm start` to start your local server 71 | 72 | Make sure to commit the above changes to your repository. 73 | 74 | ## Publish your website 75 | 76 | When deploying to services like Netlify or Vercel, use the following command for building your site: 77 | 78 | ```sh 79 | npm i && HUGO_ENVIRONMENT=production hugo --gc 80 | ``` 81 | The parameter `HUGO_ENVIRONMENT=production` enables the execution of css purging. 82 | 83 | ## Add content 84 | 85 | The following explains how to add content to your Hugo site. You can find sample content in the `exampleSite/` folder. 86 | 87 | ### Structure: 88 | 89 | . 90 | ├── ... 91 | ├── blog # Blog Section 92 | │ ├── post1 # Post 1 93 | │ ├── post2 # Post 2 94 | │ └── _index 95 | └── ... 96 | 97 | ## Configure your site 98 | 99 | From `exampleSite/`, copy `hugo.toml` to the root folder of your Hugo site and change the fields as you like. Helpful comments are provided. 100 | 101 | ### Menu 102 | 103 | Menu in Blist theme is pre-set to have all section names. You can include custom links in header using the `menu.main` option hugo.toml. 104 | 105 | ### Logo 106 | 107 | `logo` param in the site config will allow to use an image as the logo instead of the website name. It is localizable and so can have different logo for different languages 108 | 109 | ### Darkmode 110 | 111 | `[params.darkModeToggle]` enables the dark mode toggle in header. The preference is then saved so that the mode is automatically chosen for return visits. 112 | 113 | ### Customize Ascent Color 114 | 115 | Use `[params.ascentColor]` to change the default `pink` color to any supported color from the [list of default colors](https://tailwindcss.com/docs/customizing-colors) from Tailwind CSS. 116 | 117 | Some example values: bg-blue-200, bg-yellow-300 118 | 119 | ### Search 120 | 121 | `[params.enableSearch]` option is used to enable search option in the theme. 122 | 123 | - Adds the search icon in header 124 | - Generates the search index 125 | - Uses fuse.js to enable searching through content 126 | 127 | In order to search, you can either click on the search icon from header or press `Ctrl/Cmd + /` key combination. 128 | 129 | **Note:** 130 | 131 | Make sure to enable JSON in outputs array. 132 | 133 | ``` 134 | [outputs] 135 | home = ["HTML", "RSS", "JSON"] 136 | ``` 137 | 138 | ### LaTeX 139 | 140 | Enable mathematical options: set `math: true` in your markdown frontmatter 141 | 142 | ### Google Analytics 143 | 144 | Set `services.googleAnalytics.ID` in `hugo.toml` to activate Hugo's [embedded Google Analytics template](https://gohugo.io/templates/embedded/#google-analytics). 145 | 146 | ## Performance 147 | 148 | [![Pagespeed Insights Performance](https://github.com/apvarun/blist-hugo-theme/raw/main/images/pagespeed-performance.png)](https://developers.google.com/speed/pagespeed/insights/?url=https%3A%2F%2Fblist.vercel.app&tab=mobile) 149 | 150 | ## Issues 151 | 152 | If you have a question, please [open an issue](https://github.com/apvarun/blist-hugo-theme/issues) for help and to help those who come after you. The more information you can provide, the better! 153 | 154 | ## Contributing 155 | 156 | Contributions, issues, and feature requests are welcome! For major changes, please open an issue first to discuss what you would like to change. 157 | 158 | 159 | 160 | 162 | 164 | 166 | 168 | 170 | 172 | 173 | 174 | 176 | 178 | 180 | 182 | 184 | 186 | 187 | 188 | 190 | 192 | 194 | 196 | 197 |
apvarun
apvarun
Ravinou
Ravinou
engel-b
engel-b
chris-gillatt
chris-gillatt
dependabot[bot]
dependabot[bot]
xLexip
xLexip
AntoineSoetewey
AntoineSoetewey
chiragksharma
chiragksharma
dlecan
dlecan
jpiaskowski
jpiaskowski
lucab85
lucab85
Marty
Marty
ernavdeepkr
ernavdeepkr
roypeter
roypeter
janvanveldhuizen
janvanveldhuizen
jmflaherty
jmflaherty
198 | 199 | ## License 200 | 201 | Licensed under [MIT](LICENSE) 202 | 203 | ## 🤝 Support 204 | 205 | Give a ⭐️ if you like this project! 206 | 207 | Buy Me A Coffee 208 | -------------------------------------------------------------------------------- /archetypes/default.md: -------------------------------------------------------------------------------- 1 | +++ 2 | +++ 3 | -------------------------------------------------------------------------------- /assets/css/paginator.css: -------------------------------------------------------------------------------- 1 | .pagination { 2 | @apply inline-flex border rounded px-1 dark:border-gray-600; 3 | } 4 | .page-item { 5 | @apply mx-0.5 my-1 cursor-pointer rounded hover:bg-gray-800 hover:text-white dark:hover:bg-gray-500 dark:hover:text-white; 6 | } 7 | a.page-link { 8 | @apply px-3 py-1 block; 9 | } 10 | .page-item.active { 11 | @apply bg-gray-800 text-white dark:bg-gray-300 dark:text-gray-900; 12 | } 13 | .page-item.disabled { 14 | @apply text-gray-400 hover:bg-transparent hover:text-gray-400 cursor-not-allowed; 15 | } 16 | -------------------------------------------------------------------------------- /assets/css/postcss.config.js: -------------------------------------------------------------------------------- 1 | const themeDir = __dirname + "/../../"; 2 | 3 | module.exports = { 4 | plugins: [ 5 | require("postcss-import")({ 6 | path: [themeDir], 7 | }), 8 | require("tailwindcss")(themeDir + "assets/css/tailwind.config.js"), 9 | require("autoprefixer")({ 10 | path: [themeDir], 11 | }), 12 | ], 13 | }; 14 | -------------------------------------------------------------------------------- /assets/css/site.css: -------------------------------------------------------------------------------- 1 | /* Custom Styles */ 2 | body { 3 | font-family: "Inter", sans-serif; 4 | } 5 | 6 | /* Fonts */ 7 | 8 | /* inter-300 - latin */ 9 | @font-face { 10 | font-family: "Inter"; 11 | font-style: normal; 12 | font-weight: 300; 13 | src: url("/fonts/inter-v3-latin-300.eot"); /* IE9 Compat Modes */ 14 | src: local(""), 15 | url("/fonts/inter-v3-latin-300.eot?#iefix") format("embedded-opentype"), 16 | /* IE6-IE8 */ url("/fonts/inter-v3-latin-300.woff2") format("woff2"), 17 | /* Super Modern Browsers */ url("/fonts/inter-v3-latin-300.woff") 18 | format("woff"), 19 | /* Modern Browsers */ url("/fonts/inter-v3-latin-300.ttf") 20 | format("truetype"), 21 | /* Safari, Android, iOS */ url("/fonts/inter-v3-latin-300.svg#Inter") 22 | format("svg"); /* Legacy iOS */ 23 | } 24 | /* inter-500 - latin */ 25 | @font-face { 26 | font-family: "Inter"; 27 | font-style: normal; 28 | font-weight: 500; 29 | src: url("/fonts/inter-v3-latin-500.eot"); /* IE9 Compat Modes */ 30 | src: local(""), 31 | url("/fonts/inter-v3-latin-500.eot?#iefix") format("embedded-opentype"), 32 | /* IE6-IE8 */ url("/fonts/inter-v3-latin-500.woff2") format("woff2"), 33 | /* Super Modern Browsers */ url("/fonts/inter-v3-latin-500.woff") 34 | format("woff"), 35 | /* Modern Browsers */ url("/fonts/inter-v3-latin-500.ttf") 36 | format("truetype"), 37 | /* Safari, Android, iOS */ url("/fonts/inter-v3-latin-500.svg#Inter") 38 | format("svg"); /* Legacy iOS */ 39 | } 40 | /* inter-700 - latin */ 41 | @font-face { 42 | font-family: "Inter"; 43 | font-style: normal; 44 | font-weight: 700; 45 | src: url("/fonts/inter-v3-latin-700.eot"); /* IE9 Compat Modes */ 46 | src: local(""), 47 | url("/fonts/inter-v3-latin-700.eot?#iefix") format("embedded-opentype"), 48 | /* IE6-IE8 */ url("/fonts/inter-v3-latin-700.woff2") format("woff2"), 49 | /* Super Modern Browsers */ url("/fonts/inter-v3-latin-700.woff") 50 | format("woff"), 51 | /* Modern Browsers */ url("/fonts/inter-v3-latin-700.ttf") 52 | format("truetype"), 53 | /* Safari, Android, iOS */ url("/fonts/inter-v3-latin-700.svg#Inter") 54 | format("svg"); /* Legacy iOS */ 55 | } 56 | -------------------------------------------------------------------------------- /assets/css/styles.css: -------------------------------------------------------------------------------- 1 | /* Tailwind base - put variables under: tailwind.config.js */ 2 | @import "node_modules/tailwindcss/base"; 3 | /* Tailwind component classes registered by plugins*/ 4 | @import "node_modules/tailwindcss/components"; 5 | /* Site Specific */ 6 | @import "assets/css/site"; 7 | /* Paginator */ 8 | @import "assets/css/paginator"; 9 | /* Tailwind's utility classes - generated based on config file */ 10 | @import "node_modules/tailwindcss/utilities"; 11 | 12 | @layer components { 13 | details.toc[open] summary ~ * { 14 | animation: slideUp 0.25s ease-in-out; 15 | } 16 | 17 | @keyframes slideUp { 18 | 0% { 19 | opacity: 0; 20 | transform: translateY(10px); 21 | } 22 | 100% { 23 | opacity: 1; 24 | transform: translateY(0); 25 | } 26 | } 27 | 28 | details.toc[open] summary svg { 29 | @apply transform duration-200 rotate-180 ease-in-out; 30 | } 31 | 32 | details.toc > ul { 33 | @apply ml-4; 34 | } 35 | 36 | details.toc ul { 37 | @apply list-none; 38 | margin-top: 0.125rem /* 2px */ !important; 39 | margin-bottom: 0.125rem /* 2px */ !important; 40 | } 41 | details.toc ul li { 42 | margin-top: 0.125rem /* 2px */ !important; 43 | margin-bottom: 0.125rem /* 2px */ !important; 44 | } 45 | details.toc ul li:before { 46 | @apply rounded-none bg-gray-400; 47 | } 48 | details.toc ul li a { 49 | @apply no-underline text-gray-700 dark:text-gray-200 text-base; 50 | } 51 | 52 | a:empty { 53 | display: none; 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /assets/css/tailwind.config.js: -------------------------------------------------------------------------------- 1 | const themeDir = __dirname + "/../../"; 2 | 3 | module.exports = { 4 | content: [ 5 | themeDir + "layouts/**/*.html", 6 | themeDir + "content/**/*.html", 7 | "layouts/**/*.html", 8 | "config.toml", 9 | "hugo.toml", 10 | "content/**/*.html", 11 | "assets/js/search.js", 12 | "exampleSite/layouts/**/*.html", 13 | "exampleSite/config.toml", 14 | "exampleSite/content/**/*.html", 15 | ], 16 | darkMode: "class", 17 | theme: { 18 | extend: { 19 | typography: (theme) => ({ 20 | DEFAULT: { 21 | css: [ 22 | { 23 | "code::before": { 24 | content: '""', 25 | }, 26 | "code::after": { 27 | content: '""', 28 | }, 29 | }, 30 | ], 31 | }, 32 | dark: { 33 | css: [ 34 | { 35 | color: theme("colors.gray.400"), 36 | '[class~="lead"]': { 37 | color: theme("colors.gray.300"), 38 | }, 39 | a: { 40 | color: theme("colors.white"), 41 | }, 42 | strong: { 43 | color: theme("colors.white"), 44 | }, 45 | "ol > li::before": { 46 | color: theme("colors.gray.400"), 47 | }, 48 | "ul > li::before": { 49 | backgroundColor: theme("colors.gray.600"), 50 | }, 51 | hr: { 52 | borderColor: theme("colors.gray.200"), 53 | }, 54 | blockquote: { 55 | color: theme("colors.gray.200"), 56 | borderLeftColor: theme("colors.gray.600"), 57 | }, 58 | h1: { 59 | color: theme("colors.white"), 60 | }, 61 | h2: { 62 | color: theme("colors.white"), 63 | }, 64 | h3: { 65 | color: theme("colors.white"), 66 | }, 67 | h4: { 68 | color: theme("colors.white"), 69 | }, 70 | "figure figcaption": { 71 | color: theme("colors.gray.400"), 72 | }, 73 | code: { 74 | color: theme("colors.white"), 75 | }, 76 | "a code": { 77 | color: theme("colors.white"), 78 | }, 79 | "code::before": { 80 | content: '""', 81 | }, 82 | "code::after": { 83 | content: '""', 84 | }, 85 | pre: { 86 | color: theme("colors.gray.200"), 87 | backgroundColor: theme("colors.gray.800"), 88 | }, 89 | thead: { 90 | color: theme("colors.white"), 91 | borderBottomColor: theme("colors.gray.400"), 92 | }, 93 | "tbody tr": { 94 | borderBottomColor: theme("colors.gray.600"), 95 | }, 96 | }, 97 | ], 98 | }, 99 | }), 100 | }, 101 | }, 102 | variants: { 103 | extend: { 104 | typography: ["dark"], 105 | }, 106 | }, 107 | plugins: [require("@tailwindcss/typography")], 108 | }; 109 | -------------------------------------------------------------------------------- /assets/js/fuse.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Fuse.js v6.4.6 - Lightweight fuzzy-search (http://fusejs.io) 3 | * 4 | * Copyright (c) 2021 Kiro Risk (http://kiro.me) 5 | * All Rights Reserved. Apache Software License 2.0 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | */ 9 | var e,t;e=this,t=function(){"use strict";function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){for(var n=0;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:3,t=new Map,n=Math.pow(10,e);return{get:function(e){var r=e.match(I).length;if(t.has(r))return t.get(r);var i=1/Math.sqrt(r),o=parseFloat(Math.round(i*n)/n);return t.set(r,o),o},clear:function(){t.clear()}}}var E=function(){function e(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=n.getFn,i=void 0===r?A.getFn:r;t(this,e),this.norm=C(3),this.getFn=i,this.isCreated=!1,this.setIndexRecords()}return r(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,g(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();g(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?A.getFn:r,o=new E({getFn:i});return o.setKeys(e.map(_)),o.setSources(t),o.create(),o}function R(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,c=t.expectedLocation,a=void 0===c?0:c,s=t.distance,u=void 0===s?A.distance:s,h=t.ignoreLocation,f=void 0===h?A.ignoreLocation:h,l=r/e.length;if(f)return l;var d=Math.abs(a-o);return u?l+d/u:d?1:l}function F(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:A.minMatchCharLength,n=[],r=-1,i=-1,o=0,c=e.length;o=t&&n.push([r,i]),r=-1)}return e[o-1]&&o-r>=t&&n.push([r,o-1]),n}function P(e){for(var t={},n=0,r=e.length;n1&&void 0!==arguments[1]?arguments[1]:{},o=i.location,c=void 0===o?A.location:o,a=i.threshold,s=void 0===a?A.threshold:a,u=i.distance,h=void 0===u?A.distance:u,f=i.includeMatches,l=void 0===f?A.includeMatches:f,d=i.findAllMatches,v=void 0===d?A.findAllMatches:d,g=i.minMatchCharLength,y=void 0===g?A.minMatchCharLength:g,p=i.isCaseSensitive,m=void 0===p?A.isCaseSensitive:p,k=i.ignoreLocation,M=void 0===k?A.ignoreLocation:k;if(t(this,e),this.options={location:c,threshold:s,distance:h,includeMatches:l,findAllMatches:v,minMatchCharLength:y,isCaseSensitive:m,ignoreLocation:M},this.pattern=m?n:n.toLowerCase(),this.chunks=[],this.pattern.length){var b=function(e,t){r.chunks.push({pattern:e,alphabet:P(e),startIndex:t})},x=this.pattern.length;if(x>32){for(var L=0,S=x%32,w=x-S;L3&&void 0!==arguments[3]?arguments[3]:{},i=r.location,o=void 0===i?A.location:i,c=r.distance,a=void 0===c?A.distance:c,s=r.threshold,u=void 0===s?A.threshold:s,h=r.findAllMatches,f=void 0===h?A.findAllMatches:h,l=r.minMatchCharLength,d=void 0===l?A.minMatchCharLength:l,v=r.includeMatches,g=void 0===v?A.includeMatches:v,y=r.ignoreLocation,p=void 0===y?A.ignoreLocation:y;if(t.length>32)throw new Error(L(32));for(var m,k=t.length,M=e.length,b=Math.max(0,Math.min(o,M)),x=u,S=b,w=d>1||g,_=w?Array(M):[];(m=e.indexOf(t,S))>-1;){var O=R(t,{currentLocation:m,expectedLocation:b,distance:a,ignoreLocation:p});if(x=Math.min(O,x),S=m+k,w)for(var j=0;j=K;J-=1){var T=J-1,U=n[e.charAt(T)];if(w&&(_[T]=+!!U),W[J]=(W[J+1]<<1|1)&U,P&&(W[J]|=(I[J+1]|I[J])<<1|1|I[J+1]),W[J]&$&&(C=R(t,{errors:P,currentLocation:T,expectedLocation:b,distance:a,ignoreLocation:p}))<=x){if(x=C,(S=T)<=b)break;K=Math.max(1,2*b-S)}}var V=R(t,{errors:P+1,currentLocation:b,expectedLocation:b,distance:a,ignoreLocation:p});if(V>x)break;I=W}var B={isMatch:S>=0,score:Math.max(.001,C)};if(w){var G=F(_,d);G.length?g&&(B.indices=G):B.isMatch=!1}return B}(e,n,i,{location:c+o,distance:a,threshold:s,findAllMatches:u,minMatchCharLength:h,includeMatches:r,ignoreLocation:f}),p=y.isMatch,m=y.score,k=y.indices;p&&(g=!0),v+=m,p&&k&&(d=[].concat(l(d),l(k)))}));var y={isMatch:g,score:g?v/this.chunks.length:1};return g&&r&&(y.indices=d),y}}]),e}(),D=function(){function e(n){t(this,e),this.pattern=n}return r(e,[{key:"search",value:function(){}}],[{key:"isMultiMatch",value:function(e){return z(e,this.multiRegex)}},{key:"isSingleMatch",value:function(e){return z(e,this.singleRegex)}}]),e}();function z(e,t){var n=e.match(t);return n?n[1]:null}var K=function(e){a(i,e);var n=f(i);function i(e){return t(this,i),n.call(this,e)}return r(i,[{key:"search",value:function(e){var t=e===this.pattern;return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"exact"}},{key:"multiRegex",get:function(){return/^="(.*)"$/}},{key:"singleRegex",get:function(){return/^=(.*)$/}}]),i}(D),q=function(e){a(i,e);var n=f(i);function i(e){return t(this,i),n.call(this,e)}return r(i,[{key:"search",value:function(e){var t=-1===e.indexOf(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"$/}},{key:"singleRegex",get:function(){return/^!(.*)$/}}]),i}(D),W=function(e){a(i,e);var n=f(i);function i(e){return t(this,i),n.call(this,e)}return r(i,[{key:"search",value:function(e){var t=e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}}],[{key:"type",get:function(){return"prefix-exact"}},{key:"multiRegex",get:function(){return/^\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^\^(.*)$/}}]),i}(D),J=function(e){a(i,e);var n=f(i);function i(e){return t(this,i),n.call(this,e)}return r(i,[{key:"search",value:function(e){var t=!e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-prefix-exact"}},{key:"multiRegex",get:function(){return/^!\^"(.*)"$/}},{key:"singleRegex",get:function(){return/^!\^(.*)$/}}]),i}(D),T=function(e){a(i,e);var n=f(i);function i(e){return t(this,i),n.call(this,e)}return r(i,[{key:"search",value:function(e){var t=e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[e.length-this.pattern.length,e.length-1]}}}],[{key:"type",get:function(){return"suffix-exact"}},{key:"multiRegex",get:function(){return/^"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^(.*)\$$/}}]),i}(D),U=function(e){a(i,e);var n=f(i);function i(e){return t(this,i),n.call(this,e)}return r(i,[{key:"search",value:function(e){var t=!e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}}],[{key:"type",get:function(){return"inverse-suffix-exact"}},{key:"multiRegex",get:function(){return/^!"(.*)"\$$/}},{key:"singleRegex",get:function(){return/^!(.*)\$$/}}]),i}(D),V=function(e){a(i,e);var n=f(i);function i(e){var r,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},c=o.location,a=void 0===c?A.location:c,s=o.threshold,u=void 0===s?A.threshold:s,h=o.distance,f=void 0===h?A.distance:h,l=o.includeMatches,d=void 0===l?A.includeMatches:l,v=o.findAllMatches,g=void 0===v?A.findAllMatches:v,y=o.minMatchCharLength,p=void 0===y?A.minMatchCharLength:y,m=o.isCaseSensitive,k=void 0===m?A.isCaseSensitive:m,M=o.ignoreLocation,b=void 0===M?A.ignoreLocation:M;return t(this,i),(r=n.call(this,e))._bitapSearch=new N(e,{location:a,threshold:u,distance:f,includeMatches:d,findAllMatches:g,minMatchCharLength:p,isCaseSensitive:k,ignoreLocation:b}),r}return r(i,[{key:"search",value:function(e){return this._bitapSearch.searchIn(e)}}],[{key:"type",get:function(){return"fuzzy"}},{key:"multiRegex",get:function(){return/^"(.*)"$/}},{key:"singleRegex",get:function(){return/^(.*)$/}}]),i}(D),B=function(e){a(i,e);var n=f(i);function i(e){return t(this,i),n.call(this,e)}return r(i,[{key:"search",value:function(e){for(var t,n=0,r=[],i=this.pattern.length;(t=e.indexOf(this.pattern,n))>-1;)n=t+i,r.push([t,n-1]);var o=!!r.length;return{isMatch:o,score:o?0:1,indices:r}}}],[{key:"type",get:function(){return"include"}},{key:"multiRegex",get:function(){return/^'"(.*)"$/}},{key:"singleRegex",get:function(){return/^'(.*)$/}}]),i}(D),G=[K,B,W,J,U,T,q,V],H=G.length,Q=/ +(?=([^\"]*\"[^\"]*\")*[^\"]*$)/;function X(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.split("|").map((function(e){for(var n=e.trim().split(Q).filter((function(e){return e&&!!e.trim()})),r=[],i=0,o=n.length;i1&&void 0!==arguments[1]?arguments[1]:{},i=r.isCaseSensitive,o=void 0===i?A.isCaseSensitive:i,c=r.includeMatches,a=void 0===c?A.includeMatches:c,s=r.minMatchCharLength,u=void 0===s?A.minMatchCharLength:s,h=r.ignoreLocation,f=void 0===h?A.ignoreLocation:h,l=r.findAllMatches,d=void 0===l?A.findAllMatches:l,v=r.location,g=void 0===v?A.location:v,y=r.threshold,p=void 0===y?A.threshold:y,m=r.distance,k=void 0===m?A.distance:m;t(this,e),this.query=null,this.options={isCaseSensitive:o,includeMatches:a,minMatchCharLength:u,findAllMatches:d,ignoreLocation:f,location:g,threshold:p,distance:k},this.pattern=o?n:n.toLowerCase(),this.query=X(this.pattern,this.options)}return r(e,[{key:"searchIn",value:function(e){var t=this.query;if(!t)return{isMatch:!1,score:1};var n=this.options,r=n.includeMatches;e=n.isCaseSensitive?e:e.toLowerCase();for(var i=0,o=[],c=0,a=0,s=t.length;a-1&&(n.refIndex=e.idx),t.matches.push(n)}}))}function le(e,t){t.score=e.score}function de(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.includeMatches,i=void 0===r?A.includeMatches:r,o=n.includeScore,c=void 0===o?A.includeScore:o,a=[];return i&&a.push(fe),c&&a.push(le),e.map((function(e){var n=e.idx,r={item:t[n],refIndex:n};return a.length&&a.forEach((function(t){t(e,r)})),r}))}var ve=function(){function e(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2?arguments[2]:void 0;t(this,e),this.options=c({},A,{},r),this.options.useExtendedSearch,this._keyStore=new w(this.options.keys),this.setCollection(n,i)}return r(e,[{key:"setCollection",value:function(e,t){if(this._docs=e,t&&!(t instanceof E))throw new Error("Incorrect 'index' type");this._myIndex=t||$(this.options.keys,this._docs,{getFn:this.options.getFn})}},{key:"add",value:function(e){k(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]:{},n=t.limit,r=void 0===n?-1:n,i=this.options,o=i.includeMatches,c=i.includeScore,a=i.shouldSort,s=i.sortFn,u=i.ignoreFieldNorm,h=g(e)?g(this._docs[0])?this._searchStringList(e):this._searchObjectList(e):this._searchLogical(e);return he(h,{ignoreFieldNorm:u}),a&&h.sort(s),y(r)&&r>-1&&(h=h.slice(0,r)),de(h,this._docs,{includeMatches:o,includeScore:c})}},{key:"_searchStringList",value:function(e){var t=te(e,this.options),n=this._myIndex.records,r=[];return n.forEach((function(e){var n=e.v,i=e.i,o=e.n;if(k(n)){var c=t.searchIn(n),a=c.isMatch,s=c.score,u=c.indices;a&&r.push({item:n,idx:i,matches:[{score:s,value:n,norm:o,indices:u}]})}})),r}},{key:"_searchLogical",value:function(e){var t=this,n=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.auto,i=void 0===r||r,o=function e(n){var r=Object.keys(n),o=ae(n);if(!o&&r.length>1&&!ce(n))return e(ue(n));if(se(n)){var c=o?n[ie]:r[0],a=o?n[oe]:n[c];if(!g(a))throw new Error(x(c));var s={keyId:j(c),pattern:a};return i&&(s.searcher=te(a,t)),s}var u={children:[],operator:r[0]};return r.forEach((function(t){var r=n[t];v(r)&&r.forEach((function(t){u.children.push(e(t))}))})),u};return ce(e)||(e=ue(e)),o(e)}(e,this.options),r=this._myIndex.records,i={},o=[];return r.forEach((function(e){var r=e.$,c=e.i;if(k(r)){var a=function e(n,r,i){if(!n.children){var o=n.keyId,c=n.searcher,a=t._findMatches({key:t._keyStore.get(o),value:t._myIndex.getValueForItemAtKeyId(r,o),searcher:c});return a&&a.length?[{idx:i,item:r,matches:a}]:[]}switch(n.operator){case ne:for(var s=[],u=0,h=n.children.length;u1&&void 0!==arguments[1]?arguments[1]:{},n=t.getFn,r=void 0===n?A.getFn:n,i=e.keys,o=e.records,c=new E({getFn:r});return c.setKeys(i),c.setIndexRecords(o),c},ve.config=A,function(){ee.push.apply(ee,arguments)}(Z),ve},"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Fuse=t(); 10 | -------------------------------------------------------------------------------- /assets/js/search.js: -------------------------------------------------------------------------------- 1 | // Credits to search implementation: https://gist.github.com/cmod/5410eae147e4318164258742dd053993 2 | 3 | var fuse; // holds our search engine 4 | var searchVisible = false; 5 | var firstRun = true; // allow us to delay loading json data unless search activated 6 | var list = document.querySelector('.search-list'); // targets the
    7 | var first = list.firstChild; // first child of search list 8 | var last = list.lastChild; // last child of search list 9 | var maininput = document.querySelector('.search-ui input'); // input box for search 10 | var searchResultsHeading = document.querySelector('.search-results'); // input box for search 11 | var noResults = document.querySelector('.no-results'); // input box for search 12 | var resultsAvailable = false; // Did we get any search results? 13 | 14 | // ========================================== 15 | // The main keyboard event listener running the show 16 | // 17 | document.querySelector('.open-search').addEventListener('click', openSearch); 18 | document.querySelector('.close-search').addEventListener('click', closeSearch); 19 | 20 | function closeSearch() { 21 | document.querySelector('.search-ui').classList.add("hidden"); 22 | document.activeElement.blur(); // remove focus from search box 23 | searchVisible = false; // search not visible 24 | searchResultsHeading.classList.add('hidden'); 25 | } 26 | 27 | function openSearch() { 28 | // Load json search index if first time invoking search 29 | // Means we don't load json unless searches are going to happen; keep user payload small unless needed 30 | if (firstRun) { 31 | loadSearch(); // loads our json data and builds fuse.js search index 32 | firstRun = false; // let's never do this again 33 | } 34 | 35 | //Close the mobile menu when search is click. 36 | mobileMenu.classList.toggle('hidden'); 37 | 38 | // Toggle visibility of search box 39 | if (!searchVisible) { 40 | document.querySelector('.search-ui').classList.remove("hidden"); 41 | document.querySelector('.search-ui input').focus(); // put focus in input box so you can just start typing 42 | searchVisible = true; // search visible 43 | } 44 | } 45 | 46 | document.addEventListener('keydown', function (event) { 47 | 48 | if (event.metaKey && event.which === 191) { 49 | openSearch() 50 | } 51 | 52 | // Allow ESC (27) to close search box 53 | if (event.keyCode == 27) { 54 | if (searchVisible) { 55 | document.querySelector('.search-ui').classList.add("hidden"); 56 | document.activeElement.blur(); 57 | searchVisible = false; 58 | searchResultsHeading.classList.add('hidden'); 59 | } 60 | } 61 | 62 | // DOWN (40) arrow 63 | if (event.keyCode == 40) { 64 | if (searchVisible && resultsAvailable) { 65 | console.log("down"); 66 | event.preventDefault(); // stop window from scrolling 67 | if (document.activeElement == maininput) { first.focus(); } // if the currently focused element is the main input --> focus the first
  • 68 | else if (document.activeElement == last) { last.focus(); } // if we're at the bottom, stay there 69 | else { document.activeElement.parentElement.nextSibling.firstElementChild.focus(); } // otherwise select the next search result 70 | } 71 | } 72 | 73 | // UP (38) arrow 74 | if (event.keyCode == 38) { 75 | if (searchVisible && resultsAvailable) { 76 | event.preventDefault(); // stop window from scrolling 77 | if (document.activeElement == maininput) { maininput.focus(); } // If we're in the input box, do nothing 78 | else if (document.activeElement == first) { maininput.focus(); } // If we're at the first item, go to input box 79 | else { document.activeElement.parentElement.previousSibling.firstElementChild.focus(); } // Otherwise, select the search result above the current active one 80 | } 81 | } 82 | }) 83 | 84 | 85 | // ========================================== 86 | // execute search as each character is typed 87 | // 88 | document.querySelector('.search-ui input').onkeyup = function (e) { 89 | executeSearch(this.value); 90 | } 91 | 92 | 93 | // ========================================== 94 | // fetch some json without jquery 95 | // 96 | function fetchJSONFile(path, callback) { 97 | var httpRequest = new XMLHttpRequest(); 98 | httpRequest.onreadystatechange = function () { 99 | if (httpRequest.readyState === 4) { 100 | if (httpRequest.status === 200) { 101 | var data = JSON.parse(httpRequest.responseText); 102 | if (callback) callback(data); 103 | } 104 | } 105 | }; 106 | httpRequest.open('GET', path); 107 | httpRequest.send(); 108 | } 109 | 110 | 111 | // ========================================== 112 | // load our search index, only executed once 113 | // on first call of search box (CMD-/) 114 | // 115 | function loadSearch() { 116 | const lang = document.querySelector('head > meta[name="lang"]')?.getAttribute?.('content') 117 | fetchJSONFile(`${lang ? "/" + lang : ""}/index.json`, function (data) { 118 | 119 | var options = { // fuse.js options; check fuse.js website for details 120 | shouldSort: true, 121 | location: 0, 122 | distance: 100, 123 | threshold: 0.4, 124 | minMatchCharLength: 2, 125 | keys: [ 126 | 'title', 127 | 'permalink', 128 | 'contents' 129 | ] 130 | }; 131 | fuse = new Fuse(data, options); // build the index from the json file 132 | }); 133 | } 134 | 135 | 136 | // ========================================== 137 | // using the index we loaded on CMD-/, run 138 | // a search query (for "term") every time a letter is typed 139 | // in the search box 140 | // 141 | function executeSearch(term) { 142 | let results = fuse.search(term); // the actual query being run using fuse.js 143 | let searchitems = ''; // our results bucket 144 | 145 | if (results.length === 0) { // no results based on what was typed into the input box 146 | resultsAvailable = false; 147 | searchitems = ''; 148 | if (term !== "") { 149 | noResults.classList.remove('hidden') 150 | } else { 151 | noResults.classList.add('hidden') 152 | } 153 | } else { // build our html 154 | noResults.classList.add('hidden') 155 | if (term !== "") { 156 | searchResultsHeading.classList.remove('hidden'); 157 | } 158 | 159 | for (let item in results.slice(0, 5)) { // only show first 5 results 160 | const title = '
    ' + results[item].item.title + '
    '; 161 | const date = results[item].item.date ? '
    ' + new Date(results[item].item.date).toUTCString().substring(0, 16) + '
    ' : ''; 162 | const contents = '
    ' + results[item].item.contents + '
    '; 163 | 164 | searchitems = searchitems + '
  • ' + title + '' + date + contents + '
  • '; 165 | } 166 | resultsAvailable = true; 167 | } 168 | 169 | list.innerHTML = searchitems; 170 | if (results.length > 0) { 171 | first = list.firstChild.firstElementChild; // first result container — used for checking against keyboard up/down location 172 | last = list.lastChild.firstElementChild; // last result container — used for checking against keyboard up/down location 173 | } 174 | } 175 | -------------------------------------------------------------------------------- /exampleSite/.gitignore: -------------------------------------------------------------------------------- 1 | resources/ -------------------------------------------------------------------------------- /exampleSite/content/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: Katheryn Fox 3 | title: Home of Katheryn Fox 4 | date: 2021-07-15 5 | --- 6 | 7 | -------------------------------------------------------------------------------- /exampleSite/content/about.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: Katheryn Fox 3 | title: About Me 4 | date: 2021-07-15 5 | description: 6 | keywords: ["about-us", "about-hugo", "contact"] 7 | type: about 8 | --- 9 | 10 | Written in Go, Hugo is an open source static site generator available under the [Apache Licence 2.0.](https://github.com/gohugoio/hugo/blob/master/LICENSE) Hugo supports TOML, YAML and JSON data file types, Markdown and HTML content files and uses shortcodes to add rich content. Other notable features are taxonomies, multilingual mode, image processing, custom output formats, HTML/CSS/JS minification and support for Sass SCSS workflows. 11 | 12 | Hugo makes use of a variety of open source projects including: 13 | 14 | - https://github.com/yuin/goldmark 15 | - https://github.com/alecthomas/chroma 16 | - https://github.com/muesli/smartcrop 17 | - https://github.com/spf13/cobra 18 | - https://github.com/spf13/viper 19 | 20 | Hugo is ideal for blogs, corporate websites, creative portfolios, online magazines, single page applications or even a website with thousands of pages. 21 | 22 | Hugo is for people who want to hand code their own website without worrying about setting up complicated runtimes, dependencies and databases. 23 | 24 | Websites built with Hugo are extremely fast, secure and can be deployed anywhere including, AWS, GitHub Pages, Heroku, Netlify and any other hosting provider. 25 | 26 | Learn more and contribute on [GitHub](https://github.com/gohugoio). 27 | -------------------------------------------------------------------------------- /exampleSite/content/de/blog/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: Katheryn Fox 3 | title: Blog 4 | --- 5 | -------------------------------------------------------------------------------- /exampleSite/content/de/blog/emoji-support.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: "Hugo Authors" 3 | title: "Emoji-Unterstützung" 4 | date: 2021-07-15 5 | lastmod: 2021-10-14 6 | description: "Anleitung zur Verwendung von Emojis in Hugo" 7 | tags: ["emoji"] 8 | thumbnail: https://picsum.photos/id/1050/400/250 9 | --- 10 | 11 | Emojis können in einem Hugo-Projekt auf verschiedene Weise aktiviert werden. 12 | 13 | 14 | 15 | The [`emojify`](https://gohugo.io/functions/emojify/) function can be called directly in templates or [Inline Shortcodes](https://gohugo.io/templates/shortcode-templates/#inline-shortcodes). 16 | 17 | To enable emoji globally, set `enableEmoji` to `true` in your site's [configuration](https://gohugo.io/getting-started/configuration/) and then you can type emoji shorthand codes directly in content files; e.g. 18 | 19 |

    🙈 :see_no_evil: 🙉 :hear_no_evil: 🙊 :speak_no_evil:

    20 |
    21 | 22 | The [Emoji cheat sheet](https://www.webfx.com/tools/emoji-cheat-sheet/) is a useful reference for emoji shorthand codes. 23 | 24 | --- 25 | 26 | **N.B.** The above steps enable Unicode Standard emoji characters and sequences in Hugo, however the rendering of these glyphs depends on the browser and the platform. To style the emoji you can either use a third party emoji font or a font stack; e.g. 27 | 28 | {{< highlight html >}} 29 | .emoji { 30 | font-family: Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols; 31 | } 32 | {{< /highlight >}} 33 | 34 | {{< css.inline >}} 35 | 36 | 49 | 50 | {{< /css.inline >}} 51 | -------------------------------------------------------------------------------- /exampleSite/content/de/blog/markdown-syntax.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: "Hugo Authors" 3 | title: "Markdown Syntax Guide" 4 | description: "Beispielartikel, der die grundlegende Markdown-Syntax und Formatierung für HTML-Elemente zeigt." 5 | tags: ["markdown", "css", "html"] 6 | date: 2021-07-14 7 | thumbnail: https://picsum.photos/id/1019/500/200 8 | --- 9 | 10 | Dieser Artikel bietet ein Beispiel für die grundlegende Markdown-Syntax, die in Hugo-Inhaltsdateien verwendet werden kann, und zeigt auch, ob grundlegende HTML-Elemente mit CSS in einem Hugo-Theme dekoriert sind. 11 | 12 | 13 | 14 | ## Headings 15 | 16 | The following HTML `

    `—`

    ` elements represent six levels of section headings. `

    ` is the highest section level while `

    ` is the lowest. 17 | 18 | # H1 19 | 20 | ## H2 21 | 22 | ### H3 23 | 24 | #### H4 25 | 26 | ##### H5 27 | 28 | ###### H6 29 | 30 | ## Paragraph 31 | 32 | Xerum, quo qui aut unt expliquam qui dolut labo. Aque venitatiusda cum, voluptionse latur sitiae dolessi aut parist aut dollo enim qui voluptate ma dolestendit peritin re plis aut quas inctum laceat est volestemque commosa as cus endigna tectur, offic to cor sequas etum rerum idem sintibus eiur? Quianimin porecus evelectur, cum que nis nust voloribus ratem aut omnimi, sitatur? Quiatem. Nam, omnis sum am facea corem alique molestrunt et eos evelece arcillit ut aut eos eos nus, sin conecerem erum fuga. Ri oditatquam, ad quibus unda veliamenimin cusam et facea ipsamus es exerum sitate dolores editium rerore eost, temped molorro ratiae volorro te reribus dolorer sperchicium faceata tiustia prat. 33 | 34 | Itatur? Quiatae cullecum rem ent aut odis in re eossequodi nonsequ idebis ne sapicia is sinveli squiatum, core et que aut hariosam ex eat. 35 | 36 | ## Blockquotes 37 | 38 | The blockquote element represents content that is quoted from another source, optionally with a citation which must be within a `footer` or `cite` element, and optionally with in-line changes such as annotations and abbreviations. 39 | 40 | #### Blockquote without attribution 41 | 42 | > Tiam, ad mint andaepu dandae nostion secatur sequo quae. 43 | > **Note** that you can use _Markdown syntax_ within a blockquote. 44 | 45 | #### Blockquote with attribution 46 | 47 | > Don't communicate by sharing memory, share memory by communicating.
    48 | > — Rob Pike[^1] 49 | 50 | [^1]: The above quote is excerpted from Rob Pike's [talk](https://www.youtube.com/watch?v=PAAkCSZUG1c) during Gopherfest, November 18, 2015. 51 | 52 | ## Tables 53 | 54 | Tables aren't part of the core Markdown spec, but Hugo supports supports them out-of-the-box. 55 | 56 | | Name | Age | 57 | | ----- | --- | 58 | | Bob | 27 | 59 | | Alice | 23 | 60 | 61 | #### Inline Markdown within tables 62 | 63 | | Italics | Bold | Code | 64 | | --------- | -------- | ------ | 65 | | _italics_ | **bold** | `code` | 66 | 67 | ## Code Blocks 68 | 69 | #### Code block with backticks 70 | 71 | ```html 72 | 73 | 74 | 75 | 76 | Example HTML5 Document 77 | 78 | 79 |

    Test

    80 | 81 | 82 | ``` 83 | 84 | #### Code block indented with four spaces 85 | 86 | 87 | 88 | 89 | 90 | Example HTML5 Document 91 | 92 | 93 |

    Test

    94 | 95 | 96 | 97 | #### Code block with Hugo's internal highlight shortcode 98 | 99 | {{< highlight html >}} 100 | 101 | 102 | 103 | 104 | 105 | Example HTML5 Document 106 | 107 | 108 |

    Test

    109 | 110 | 111 | {{< /highlight >}} 112 | 113 | ## List Types 114 | 115 | #### Ordered List 116 | 117 | 1. First item 118 | 2. Second item 119 | 3. Third item 120 | 121 | #### Unordered List 122 | 123 | - List item 124 | - Another item 125 | - And another item 126 | 127 | #### Nested list 128 | 129 | - Fruit 130 | - Apple 131 | - Orange 132 | - Banana 133 | - Dairy 134 | - Milk 135 | - Cheese 136 | 137 | ## Other Elements — abbr, sub, sup, kbd, mark 138 | 139 | GIF is a bitmap image format. 140 | 141 | H2O 142 | 143 | Xn + Yn = Zn 144 | 145 | Press CTRL+ALT+Delete to end the session. 146 | 147 | Most salamanders are nocturnal, and hunt for insects, worms, and other small creatures. 148 | -------------------------------------------------------------------------------- /exampleSite/content/de/blog/placeholder-text.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: "Hugo Authors" 3 | title: "Platzhaltertext" 4 | date: 2021-07-13 5 | description: "Lorem Ipsum Dolor Si Amet DE" 6 | tags: ["markdown", "text"] 7 | thumbnail: /blog-post.jpg 8 | --- 9 | 10 | Lorem est tota propiore conpellat pectoribus de pectora summo. Redit teque digerit hominumque toris verebor lumina non cervice subde tollit usus habet Arctonque, furores quas nec ferunt. Quoque montibus nunc caluere tempus inhospita parcite confusaque translucet patri vestro qui optatis lumine cognoscere flos nubis! Fronde ipsamque patulos Dryopen deorum. 11 | 12 | ![Placeholder](/featured-placeholder.jpg) 13 | 14 | 1. Exierant elisi ambit vivere dedere 15 | 2. Duce pollice 16 | 3. Eris modo 17 | 4. Spargitque ferrea quos palude 18 | 19 | Rursus nulli murmur; hastile inridet ut ab gravi sententia! Nomine potitus silentia flumen, sustinet placuit petis in dilapsa erat sunt. Atria tractus malis. 20 | 21 | 1. Comas hunc haec pietate fetum procerum dixit 22 | 2. Post torum vates letum Tiresia 23 | 3. Flumen querellas 24 | 4. Arcanaque montibus omnes 25 | 5. Quidem et 26 | 27 | # Vagus elidunt 28 | 29 | 30 | 31 | [The Van de Graaf Canon](https://en.wikipedia.org/wiki/Canons_of_page_construction#Van_de_Graaf_canon) 32 | 33 | ## Mane refeci capiebant unda mulcebat 34 | 35 | Victa caducifer, malo vulnere contra dicere aurato, ludit regale, voca! Retorsit colit est profanae esse virescere furit nec; iaculi matertera et visa est, viribus. Divesque creatis, tecta novat collumque vulnus est, parvas. **Faces illo pepulere** tempus adest. Tendit flamma, ab opes virum sustinet, sidus sequendo urbis. 36 | 37 | Iubar proles corpore raptos vero auctor imperium; sed et huic: manus caeli Lelegas tu lux. Verbis obstitit intus oblectamina fixis linguisque ausus sperare Echionides cornuaque tenent clausit possit. Omnia putatur. Praeteritae refert ausus; ferebant e primus lora nutat, vici quae mea ipse. Et iter nil spectatae vulnus haerentia iuste et exercebat, sui et. 38 | 39 | Eurytus Hector, materna ipsumque ut Politen, nec, nate, ignari, vernum cohaesit sequitur. Vel **mitis temploque** vocatus, inque alis, _oculos nomen_ non silvis corpore coniunx ne displicet illa. Crescunt non unus, vidit visa quantum inmiti flumina mortis facto sic: undique a alios vincula sunt iactata abdita! Suspenderat ego fuit tendit: luna, ante urbem Propoetides **parte**. 40 | 41 | {{< css.inline >}} 42 | 43 | 46 | 47 | {{< /css.inline >}} 48 | -------------------------------------------------------------------------------- /exampleSite/content/de/blog/rich-content.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: "Hugo Authors" 3 | title: "Reichhaltiger Inhalt" 4 | date: 2021-07-13 5 | description: "Eine kurze Beschreibung von Hugo Shortcodes" 6 | tags: ["shortcodes", "privacy"] 7 | thumbnail: https://picsum.photos/id/1002/400/250 8 | --- 9 | 10 | Hugo wird mit mehreren [Built-in Shortcodes](https://gohugo.io/content-management/shortcodes/#use-hugos-built-in-shortcodes) für reichhaltige Inhalte geliefert, zusammen mit einer [Privacy Config](https://gohugo.io/about/hugo-and-gdpr/) und einer Reihe einfacher Shortcodes, die statische und keine JS-Versionen verschiedener Social-Media-Einbettungen ermöglichen. 11 | 12 | ## 13 | 14 | ## YouTube Privacy Enhanced Shortcode 15 | 16 | {{< youtube ZJthWmvUzzc >}} 17 | 18 |
    19 | 20 | --- 21 | 22 | ## X Shortcode 23 | 24 | {{< x user="DesignReviewed" id="1085870671291310081" >}} 25 | 26 |
    27 | 28 | --- 29 | 30 | ## Vimeo Simple Shortcode 31 | 32 | {{< vimeo_simple 48912912 >}} 33 | -------------------------------------------------------------------------------- /exampleSite/content/de/page/about.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: Katheryn Fox 3 | title: Über mich 4 | date: 2021-07-15 5 | description: 6 | keywords: ["about-us", "about-hugo", "contact"] 7 | type: about 8 | --- 9 | 10 | Hugo wurde in Go geschrieben und ist ein Open-Source-Generator für statische Sites, der unter der [Apache License 2.0](https://github.com/gohugoio/hugo/blob/master/LICENSE) verfügbar ist. Hugo unterstützt TOML-, YAML- und JSON-Datendateitypen , Markdown- und HTML-Inhaltsdateien und verwendet Shortcodes, um Rich Content hinzuzufügen. Andere bemerkenswerte Funktionen sind Taxonomien, mehrsprachiger Modus, Bildverarbeitung, benutzerdefinierte Ausgabeformate, HTML/CSS/JS-Minifizierung und Unterstützung für Sass SCSS-Workflows. 11 | 12 | Hugo nutzt eine Vielzahl von Open-Source-Projekten, darunter: 13 | 14 | - https://github.com/yuin/goldmark 15 | - https://github.com/alecthomas/chroma 16 | - https://github.com/muesli/smartcrop 17 | - https://github.com/spf13/cobra 18 | - https://github.com/spf13/viper 19 | 20 | Hugo is ideal for blogs, corporate websites, creative portfolios, online magazines, single page applications or even a website with thousands of pages. 21 | 22 | Hugo is for people who want to hand code their own website without worrying about setting up complicated runtimes, dependencies and databases. 23 | 24 | Websites built with Hugo are extremely fast, secure and can be deployed anywhere including, AWS, GitHub Pages, Heroku, Netlify and any other hosting provider. 25 | 26 | Learn more and contribute on [GitHub](https://github.com/gohugoio). 27 | -------------------------------------------------------------------------------- /exampleSite/content/en/blog/_index.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: Katheryn Fox 3 | title: Blog 4 | --- 5 | -------------------------------------------------------------------------------- /exampleSite/content/en/blog/emoji-support.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: "Hugo Authors" 3 | title: "Emoji Support" 4 | date: 2021-07-15 5 | description: "Guide to emoji usage in Hugo" 6 | tags: ["emoji"] 7 | thumbnail: https://picsum.photos/id/1050/400/250 8 | --- 9 | 10 | Emoji can be enabled in a Hugo project in a number of ways. 11 | 12 | 13 | 14 | The [`emojify`](https://gohugo.io/functions/emojify/) function can be called directly in templates or [Inline Shortcodes](https://gohugo.io/templates/shortcode-templates/#inline-shortcodes). 15 | 16 | To enable emoji globally, set `enableEmoji` to `true` in your site's [configuration](https://gohugo.io/getting-started/configuration/) and then you can type emoji shorthand codes directly in content files; e.g. 17 | 18 |

    🙈 :see_no_evil: 🙉 :hear_no_evil: 🙊 :speak_no_evil:

    19 |
    20 | 21 | The [Emoji cheat sheet](https://www.webfx.com/tools/emoji-cheat-sheet/) is a useful reference for emoji shorthand codes. 22 | 23 | --- 24 | 25 | **N.B.** The above steps enable Unicode Standard emoji characters and sequences in Hugo, however the rendering of these glyphs depends on the browser and the platform. To style the emoji you can either use a third party emoji font or a font stack; e.g. 26 | 27 | {{< highlight html >}} 28 | .emoji { 29 | font-family: Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols; 30 | } 31 | {{< /highlight >}} 32 | 33 | {{< css.inline >}} 34 | 35 | 48 | 49 | {{< /css.inline >}} 50 | -------------------------------------------------------------------------------- /exampleSite/content/en/blog/markdown-syntax.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: "Hugo Authors" 3 | title: "Markdown Syntax Guide" 4 | description: "Sample article showcasing basic Markdown syntax and formatting for HTML elements." 5 | tags: ["markdown", "css", "html"] 6 | date: 2021-07-14 7 | thumbnail: https://picsum.photos/id/1019/500/200 8 | --- 9 | 10 | This article offers a sample of basic Markdown syntax that can be used in Hugo content files, also it shows whether basic HTML elements are decorated with CSS in a Hugo theme. 11 | 12 | 13 | 14 | ## Headings 15 | 16 | The following HTML `

    `—`

    ` elements represent six levels of section headings. `

    ` is the highest section level while `

    ` is the lowest. 17 | 18 | # H1 19 | 20 | ## H2 21 | 22 | ### H3 23 | 24 | #### H4 25 | 26 | ##### H5 27 | 28 | ###### H6 29 | 30 | ## Paragraph 31 | 32 | Xerum, quo qui aut unt expliquam qui dolut labo. Aque venitatiusda cum, voluptionse latur sitiae dolessi aut parist aut dollo enim qui voluptate ma dolestendit peritin re plis aut quas inctum laceat est volestemque commosa as cus endigna tectur, offic to cor sequas etum rerum idem sintibus eiur? Quianimin porecus evelectur, cum que nis nust voloribus ratem aut omnimi, sitatur? Quiatem. Nam, omnis sum am facea corem alique molestrunt et eos evelece arcillit ut aut eos eos nus, sin conecerem erum fuga. Ri oditatquam, ad quibus unda veliamenimin cusam et facea ipsamus es exerum sitate dolores editium rerore eost, temped molorro ratiae volorro te reribus dolorer sperchicium faceata tiustia prat. 33 | 34 | Itatur? Quiatae cullecum rem ent aut odis in re eossequodi nonsequ idebis ne sapicia is sinveli squiatum, core et que aut hariosam ex eat. 35 | 36 | ## Blockquotes 37 | 38 | The blockquote element represents content that is quoted from another source, optionally with a citation which must be within a `footer` or `cite` element, and optionally with in-line changes such as annotations and abbreviations. 39 | 40 | #### Blockquote without attribution 41 | 42 | > Tiam, ad mint andaepu dandae nostion secatur sequo quae. 43 | > **Note** that you can use _Markdown syntax_ within a blockquote. 44 | 45 | #### Blockquote with attribution 46 | 47 | > Don't communicate by sharing memory, share memory by communicating.
    48 | > — Rob Pike[^1] 49 | 50 | [^1]: The above quote is excerpted from Rob Pike's [talk](https://www.youtube.com/watch?v=PAAkCSZUG1c) during Gopherfest, November 18, 2015. 51 | 52 | ## Tables 53 | 54 | Tables aren't part of the core Markdown spec, but Hugo supports supports them out-of-the-box. 55 | 56 | | Name | Age | 57 | | ----- | --- | 58 | | Bob | 27 | 59 | | Alice | 23 | 60 | 61 | #### Inline Markdown within tables 62 | 63 | | Italics | Bold | Code | 64 | | --------- | -------- | ------ | 65 | | _italics_ | **bold** | `code` | 66 | 67 | ## Code Blocks 68 | 69 | #### Code block with backticks 70 | 71 | ```html 72 | 73 | 74 | 75 | 76 | Example HTML5 Document 77 | 78 | 79 |

    Test

    80 | 81 | 82 | ``` 83 | 84 | #### Code block indented with four spaces 85 | 86 | 87 | 88 | 89 | 90 | Example HTML5 Document 91 | 92 | 93 |

    Test

    94 | 95 | 96 | 97 | #### Code block with Hugo's internal highlight shortcode 98 | 99 | {{< highlight html >}} 100 | 101 | 102 | 103 | 104 | 105 | Example HTML5 Document 106 | 107 | 108 |

    Test

    109 | 110 | 111 | {{< /highlight >}} 112 | 113 | ## List Types 114 | 115 | #### Ordered List 116 | 117 | 1. First item 118 | 2. Second item 119 | 3. Third item 120 | 121 | #### Unordered List 122 | 123 | - List item 124 | - Another item 125 | - And another item 126 | 127 | #### Nested list 128 | 129 | - Fruit 130 | - Apple 131 | - Orange 132 | - Banana 133 | - Dairy 134 | - Milk 135 | - Cheese 136 | 137 | ## Other Elements — abbr, sub, sup, kbd, mark 138 | 139 | GIF is a bitmap image format. 140 | 141 | H2O 142 | 143 | Xn + Yn = Zn 144 | 145 | Press CTRL+ALT+Delete to end the session. 146 | 147 | Most salamanders are nocturnal, and hunt for insects, worms, and other small creatures. 148 | -------------------------------------------------------------------------------- /exampleSite/content/en/blog/math-typesetting.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: Hugo Authors 3 | title: Math Typesetting 4 | date: 2025-05-07 5 | description: A brief guide to authoring math equations 6 | thumbnail: https://picsum.photos/id/1015/400/250 7 | --- 8 | 9 | The theme now supports server side rendering of math equations via hugo's built-in KaTeX rendering engine. 10 | No manual activation is needed, you can start using LaTeX math expressions in your Markdown content right away. 11 | 12 | ### Prerequisites 13 | 14 | Please enable and configure the [passthrough extension](https://gohugo.io/configuration/markup/#passthrough) in the Hugo configuration file: 15 | 16 | ```yaml {filename="hugo.yaml"} 17 | markup: 18 | goldmark: 19 | extensions: 20 | passthrough: 21 | delimiters: 22 | block: [['\[', '\]'], ['$$', '$$']] 23 | inline: [['\(', '\)']] 24 | enable: true 25 | ``` 26 | 27 | ### Examples 28 | 29 | Both inline and separate paragraph LaTeX math expressions are supported in the Markdown content. 30 | 31 | ### Inline math 32 | 33 | ```markdown {filename="page.md"} 34 | Inline math: \(\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…\) 35 | ``` 36 | will be rendered as: 37 | 38 | Inline math: \(\varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887…\) 39 | 40 | ### Block math 41 | 42 | ```markdown {filename="page.md"} 43 | $$\varphi = 1+\frac{1} {1+\frac{1} {1+\frac{1} {1+\cdots} } }$$ 44 | ``` 45 | 46 | will be rendered as: 47 | 48 | $$\varphi = 1+\frac{1} {1+\frac{1} {1+\frac{1} {1+\cdots} } }$$ 49 | 50 | 51 | ### Supported functions 52 | 53 | **Note:** Use the online reference of [Supported TeX Functions](https://katex.org/docs/supported.html) and the [support table](https://katex.org/docs/support_table.html) for reference. 54 | -------------------------------------------------------------------------------- /exampleSite/content/en/blog/placeholder-text.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: "Hugo Authors" 3 | title: "Placeholder Text" 4 | date: 2021-07-13 5 | description: "Lorem Ipsum Dolor Si Amet" 6 | tags: ["markdown", "text"] 7 | thumbnail: /blog-post.jpg 8 | --- 9 | 10 | Lorem est tota propiore conpellat pectoribus de pectora summo. Redit teque digerit hominumque toris verebor lumina non cervice subde tollit usus habet Arctonque, furores quas nec ferunt. Quoque montibus nunc caluere tempus inhospita parcite confusaque translucet patri vestro qui optatis lumine cognoscere flos nubis! Fronde ipsamque patulos Dryopen deorum. 11 | 12 | ![Placeholder](/featured-placeholder.jpg) 13 | 14 | 1. Exierant elisi ambit vivere dedere 15 | 2. Duce pollice 16 | 3. Eris modo 17 | 4. Spargitque ferrea quos palude 18 | 19 | Rursus nulli murmur; hastile inridet ut ab gravi sententia! Nomine potitus silentia flumen, sustinet placuit petis in dilapsa erat sunt. Atria tractus malis. 20 | 21 | 1. Comas hunc haec pietate fetum procerum dixit 22 | 2. Post torum vates letum Tiresia 23 | 3. Flumen querellas 24 | 4. Arcanaque montibus omnes 25 | 5. Quidem et 26 | 27 | # Vagus elidunt 28 | 29 | 30 | 31 | [The Van de Graaf Canon](https://en.wikipedia.org/wiki/Canons_of_page_construction#Van_de_Graaf_canon) 32 | 33 | ## Mane refeci capiebant unda mulcebat 34 | 35 | Victa caducifer, malo vulnere contra dicere aurato, ludit regale, voca! Retorsit colit est profanae esse virescere furit nec; iaculi matertera et visa est, viribus. Divesque creatis, tecta novat collumque vulnus est, parvas. **Faces illo pepulere** tempus adest. Tendit flamma, ab opes virum sustinet, sidus sequendo urbis. 36 | 37 | Iubar proles corpore raptos vero auctor imperium; sed et huic: manus caeli Lelegas tu lux. Verbis obstitit intus oblectamina fixis linguisque ausus sperare Echionides cornuaque tenent clausit possit. Omnia putatur. Praeteritae refert ausus; ferebant e primus lora nutat, vici quae mea ipse. Et iter nil spectatae vulnus haerentia iuste et exercebat, sui et. 38 | 39 | Eurytus Hector, materna ipsumque ut Politen, nec, nate, ignari, vernum cohaesit sequitur. Vel **mitis temploque** vocatus, inque alis, _oculos nomen_ non silvis corpore coniunx ne displicet illa. Crescunt non unus, vidit visa quantum inmiti flumina mortis facto sic: undique a alios vincula sunt iactata abdita! Suspenderat ego fuit tendit: luna, ante urbem Propoetides **parte**. 40 | 41 | {{< css.inline >}} 42 | 43 | 46 | 47 | {{< /css.inline >}} 48 | -------------------------------------------------------------------------------- /exampleSite/content/en/blog/rich-content.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: "Hugo Authors" 3 | title: "Rich Content" 4 | date: 2021-07-13 5 | description: "A brief description of Hugo Shortcodes" 6 | tags: ["shortcodes", "privacy"] 7 | thumbnail: https://picsum.photos/id/1002/400/250 8 | --- 9 | 10 | Hugo ships with several [Built-in Shortcodes](https://gohugo.io/content-management/shortcodes/#use-hugos-built-in-shortcodes) for rich content, along with a [Privacy Config](https://gohugo.io/about/hugo-and-gdpr/) and a set of Simple Shortcodes that enable static and no-JS versions of various social media embeds. 11 | 12 | ## 13 | 14 | ## YouTube Privacy Enhanced Shortcode 15 | 16 | {{< youtube ZJthWmvUzzc >}} 17 | 18 |
    19 | 20 | --- 21 | 22 | ## X Shortcode 23 | 24 | {{< x user="DesignReviewed" id="1085870671291310081" >}} 25 | 26 |
    27 | 28 | --- 29 | 30 | ## Vimeo Simple Shortcode 31 | 32 | {{< vimeo_simple 48912912 >}} 33 | -------------------------------------------------------------------------------- /exampleSite/content/en/page/about.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: Katheryn Fox 3 | title: About Me 4 | date: 2021-07-15 5 | description: 6 | keywords: ["about-us", "about-hugo", "contact"] 7 | type: about 8 | --- 9 | 10 | Written in Go, Hugo is an open source static site generator available under the [Apache Licence 2.0.](https://github.com/gohugoio/hugo/blob/master/LICENSE) Hugo supports TOML, YAML and JSON data file types, Markdown and HTML content files and uses shortcodes to add rich content. Other notable features are taxonomies, multilingual mode, image processing, custom output formats, HTML/CSS/JS minification and support for Sass SCSS workflows. 11 | 12 | Hugo makes use of a variety of open source projects including: 13 | 14 | - https://github.com/yuin/goldmark 15 | - https://github.com/alecthomas/chroma 16 | - https://github.com/muesli/smartcrop 17 | - https://github.com/spf13/cobra 18 | - https://github.com/spf13/viper 19 | 20 | Hugo is ideal for blogs, corporate websites, creative portfolios, online magazines, single page applications or even a website with thousands of pages. 21 | 22 | Hugo is for people who want to hand code their own website without worrying about setting up complicated runtimes, dependencies and databases. 23 | 24 | Websites built with Hugo are extremely fast, secure and can be deployed anywhere including, AWS, GitHub Pages, Heroku, Netlify and any other hosting provider. 25 | 26 | Learn more and contribute on [GitHub](https://github.com/gohugoio). 27 | -------------------------------------------------------------------------------- /exampleSite/hugo.toml: -------------------------------------------------------------------------------- 1 | baseurl = "https://blist.vercel.app" 2 | metaDataFormat = "yaml" 3 | title = "Blist Multilingual Theme" 4 | theme = "blist" 5 | 6 | DefaultContentLanguage = "en" 7 | DefaultContentLanguageInSubdir = true 8 | [languages] 9 | [languages.en] 10 | contentDir = "content/en" #English 11 | weight = 1 12 | languageName = "English" 13 | [languages.en.params] 14 | introTitle = "Hey! I'm Katheryn Fox" 15 | introSubtitle = "26 y/o junior developer who enjoys social card games, blogging and painting" 16 | introPhoto = "/picture.jpg" 17 | logo = "/blist-logo.png" 18 | [[languages.en.menu.main]] 19 | name = "Blog" 20 | url = "blog" 21 | weight = 1 22 | 23 | [[languages.en.menu.main]] 24 | name = "About" 25 | url = "page/about/" 26 | weight = 2 27 | 28 | [[languages.en.menu.main]] 29 | name = "Tags" 30 | url = "tags" 31 | weight = 3 32 | 33 | [[languages.en.menu.main]] 34 | name = "Top Post" 35 | url = "/en/blog/emoji-support/" 36 | weight = 4 37 | 38 | [languages.de] 39 | contentDir = "content/de" # Deutsch 40 | weight = 2 41 | languageName = "Deutsch" 42 | title = "Blist (mehrsprachig)" 43 | [languages.de.params] 44 | description = "Modernes Blog-Theme für Ihre Hugo-Site." 45 | introTitle = "Hallo, ich bin Katheryn Fox" 46 | introSubtitle = "26-jährige Junior-Entwicklerin, die Spaß an sozialen Kartenspielen, Bloggen und Malen hat" 47 | introPhoto = "/picture.jpg" 48 | logo = "/blist-logo-de.png" 49 | [[languages.de.menu.main]] 50 | name = "Blog" 51 | url = "blog" 52 | weight = 1 53 | 54 | [[languages.de.menu.main]] 55 | name = "Über mich" 56 | url = "page/about/" 57 | weight = 2 58 | 59 | [[languages.de.menu.main]] 60 | name = "Tags" 61 | url = "tags" 62 | weight = 3 63 | 64 | [languages.fr] 65 | contentDir = "content/fr" #French 66 | weight = 1 67 | languageName = "Français" 68 | [languages.fr.params] 69 | introTitle = "Salut! Je suis Katheryn Fox" 70 | introSubtitle = "Développeuse junior de 26 ans qui adore les jeux de société, le blogging et la peinture" 71 | introPhoto = "/picture.jpg" 72 | logo = "/blist-logo.png" 73 | [[languages.fr.menu.main]] 74 | name = "Blog" 75 | url = "blog" 76 | weight = 1 77 | 78 | [[languages.fr.menu.main]] 79 | name = "À propos" 80 | url = "page/about/" 81 | weight = 2 82 | 83 | [[languages.fr.menu.main]] 84 | name = "Tags" 85 | url = "tags" 86 | weight = 3 87 | 88 | [languages.dy] 89 | contentDir = "content/dy" #Example language 90 | weight = 3 91 | languageName = "Test Language" 92 | 93 | [params] 94 | # Enable the darkmode toggle in header 95 | darkModeToggle = true 96 | 97 | # Enable search in header 98 | enableSearch = true 99 | 100 | # Option to customize the search parameters of a page 101 | # Below are the supported options; Note that including entire content 102 | # may slowdown the loading of search results 103 | # Title of page is included by default 104 | searchKeys = [ 105 | "tags", 106 | "date", 107 | "categories", 108 | "summary", 109 | "content", 110 | "link", 111 | "author" 112 | ] 113 | 114 | # Custom copyright - optional 115 | copyright = "Copyright © 2021 - Katheryn Fox · All rights reserved" 116 | favicon = "/favicon.svg" 117 | 118 | # Color for the intro details and social links block, not applicable for dark mode 119 | # Supported values: Any color from TailwindCSS default colors 120 | # Reference: https://tailwindcss.com/docs/customizing-colors 121 | ascentColor = "bg-blue-100" 122 | 123 | # The page bundle that is shown on the front page 124 | frontBundle = "blog" 125 | 126 | # Used to hide the post metadata such as posted date, reading time and word count 127 | # Can be used at site level or page level 128 | hideMeta = false 129 | 130 | # To hide "Other languages" option if the post is available in multiple languages 131 | # Can be used at site level or page level 132 | hideOtherLanguages = false 133 | 134 | # Add support for Table of contents 135 | # Can be added to a page level also in markdown frontmatter 136 | toc = true 137 | 138 | # Hides the thumbnail in post view 139 | # Thumbnails in home and blog pages will still be shown 140 | # This setting can also be in page's markdown file 141 | hidePageThumbnail = false 142 | 143 | # Comments system 144 | [params.comments] 145 | # Supports disqus, giscus and utterances 146 | # Check hugo docs for setting up disqus 147 | system = "giscus" 148 | 149 | # Options for giscus, exclude hyphens 150 | repo = "" 151 | repoid = "" 152 | category = "" 153 | categoryid = "" 154 | mapping = "" 155 | strict = "" 156 | reactionsenabled = "" 157 | emitmetadata = "" 158 | inputposition = "" 159 | theme = "" 160 | 161 | # Options for utterances, exclude hyphens 162 | # repo = "" 163 | # issueterm = "" 164 | # theme = "" 165 | 166 | [params.homepage.social] 167 | # Global params common for both languages 168 | title = "Follow me" 169 | description = "I work on everything coding and tweet developer memes" 170 | 171 | [[params.homepage.social.icons]] 172 | website = "address" 173 | url = "John Doe
    SomeStreet 20
    SomeState" 174 | [[params.homepage.social.icons]] 175 | website = "x" 176 | url = "https://x.com/" 177 | [[params.homepage.social.icons]] 178 | website = "linkedin" 179 | url = "https://linkedin.com/in/" 180 | [[params.homepage.social.icons]] 181 | website = "xing" 182 | url = "https://www.xing.com/profile/" 183 | [[params.homepage.social.icons]] 184 | website = "telegram" 185 | url = "https://t.me/" 186 | [[params.homepage.social.icons]] 187 | website = "github" 188 | url = "https://github.com/" 189 | [[params.homepage.social.icons]] 190 | website = "buymeacoffee" 191 | url = "https://www.buymeacoffee.com/" 192 | [[params.homepage.social.icons]] 193 | website = "medium" 194 | url = "https://medium.com/" 195 | [[params.homepage.social.icons]] 196 | website = "reddit" 197 | url = "https://reddit.com/" 198 | [[params.homepage.social.icons]] 199 | website = "dribbble" 200 | url = "https://dribbble.com/" 201 | [[params.homepage.social.icons]] 202 | website = "stackoverflow" 203 | url = "https://stackoverflow.com/" 204 | [[params.homepage.social.icons]] 205 | website = "xda" 206 | url = "https://forum.xda-developers.com/" 207 | [[params.homepage.social.icons]] 208 | website = "tiktok" 209 | url = "https://tiktok.com" 210 | [[params.homepage.social.icons]] 211 | website = "googlescholar" 212 | url = "https://scholar.google.com/" 213 | [[params.homepage.social.icons]] 214 | website = "mastodon" 215 | url = "https://joinmastodon.org" 216 | [[params.homepage.social.icons]] 217 | website = "youtube" 218 | url = "https://youtube.com" 219 | [[params.homepage.social.icons]] 220 | website = "instagram" 221 | url = "https://instagram.com" 222 | [[params.homepage.social.icons]] 223 | website = "facebook" 224 | url = "https://facebook.com" 225 | [[params.homepage.social.icons]] 226 | website = "behance" 227 | url = "https://behance.net" 228 | 229 | [[menu.main]] 230 | name = "About" 231 | url = "/about" 232 | 233 | [build] 234 | writeStats = true 235 | 236 | [outputs] 237 | home = ["HTML", "RSS", "JSON"] 238 | 239 | # syntax highlight settings 240 | [markup] 241 | [markup.highlight] 242 | style = "dracula" 243 | [markup.goldmark.renderer] 244 | # Enable to include inline HTML 245 | unsafe = true 246 | [markup.goldmark.extensions] 247 | [markup.goldmark.extensions.passthrough] 248 | enable = true 249 | [markup.goldmark.extensions.passthrough.delimiters] 250 | block = [['\[', '\]'], ['$$', '$$']] 251 | inline = [['\(', '\)']] 252 | -------------------------------------------------------------------------------- /exampleSite/layouts/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apvarun/blist-hugo-theme/19b795addb86bb01e971f7011308709a76f60eba/exampleSite/layouts/.gitkeep -------------------------------------------------------------------------------- /exampleSite/static/blist-logo-de.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apvarun/blist-hugo-theme/19b795addb86bb01e971f7011308709a76f60eba/exampleSite/static/blist-logo-de.png -------------------------------------------------------------------------------- /exampleSite/static/blist-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apvarun/blist-hugo-theme/19b795addb86bb01e971f7011308709a76f60eba/exampleSite/static/blist-logo.png -------------------------------------------------------------------------------- /exampleSite/static/blog-post.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apvarun/blist-hugo-theme/19b795addb86bb01e971f7011308709a76f60eba/exampleSite/static/blog-post.jpg -------------------------------------------------------------------------------- /exampleSite/static/favicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /exampleSite/static/featured-placeholder.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apvarun/blist-hugo-theme/19b795addb86bb01e971f7011308709a76f60eba/exampleSite/static/featured-placeholder.jpg -------------------------------------------------------------------------------- /exampleSite/static/picture.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apvarun/blist-hugo-theme/19b795addb86bb01e971f7011308709a76f60eba/exampleSite/static/picture.jpg -------------------------------------------------------------------------------- /i18n/de.yaml: -------------------------------------------------------------------------------- 1 | # Content 2 | - id: postedOnDate 3 | translation: "Gepostet am {{ . }}" 4 | - id: lastModified 5 | translation: "(Zuletzt geändert am {{ . }})" 6 | - id: translationsLabel 7 | translation: "Andere Sprachen: " 8 | - id: translationsSeparator 9 | translation: ", " 10 | - id: readMore 11 | translation: "Mehr" 12 | - id: morePosts 13 | translation: "Mehr Posts" 14 | - id: olderPosts 15 | translation: "Ältere Posts" 16 | - id: newerPosts 17 | translation: "Neuere Posts" 18 | - id: previousPost 19 | translation: "Letzter Post" 20 | - id: nextPost 21 | translation: "Nächster Post" 22 | - id: readTime 23 | one: "Eine Minute" 24 | other: "{{.Count}} Minuten" 25 | - id: words 26 | one: "Ein Wort" 27 | other: "{{.Count}} Wörter" 28 | 29 | # 404 page 30 | - id: pageNotFound 31 | translation: "Ups, diese Seite existiert nicht. (404 Error)" 32 | 33 | # Footer 34 | - id: poweredBy # Accepts HTML 35 | translation: 'Hugo v{{ .Site.Hugo.Version }} angetrieben  •  Theme Beautiful Hugo angepasst von Beautiful Jekyll' 36 | 37 | # Navigation 38 | - id: toggleNavigation 39 | translation: "Navigation" 40 | - id: languageSwitcherLabel 41 | translation: "Sprache" 42 | - id: gcseLabelShort 43 | translation: "Suche" 44 | - id: gcseLabelLong 45 | translation: "Suche {{ .Site.Title }}" 46 | - id: gcseClose 47 | translation: "Schließen" 48 | 49 | # Staticman 50 | - id: noComment 51 | translation: "Kein Kommentar" 52 | - id: oneComment 53 | translation: "Kommentar" 54 | - id: moreComment 55 | translation: "Kommentare" 56 | - id: useMarkdown 57 | translation: "Sie können Markdown-Syntax verwenden" 58 | - id: yourName 59 | translation: "Ihr Name" 60 | - id: yourEmail 61 | translation: "Ihre Emailadresse" 62 | - id: yourWebsite 63 | translation: "Ihre Website" 64 | 65 | # Delayed Disqus 66 | - id: show 67 | translation: "Zeige" 68 | - id: comments 69 | translation: "Kommentare" 70 | 71 | # Related posts 72 | - id: seeAlso 73 | translation: "Siehe auch" 74 | -------------------------------------------------------------------------------- /i18n/en.yaml: -------------------------------------------------------------------------------- 1 | # Content 2 | - id: postedOnDate 3 | translation: "Posted on {{ . }}" 4 | - id: lastModified 5 | translation: "(Last modified on {{ . }})" 6 | - id: translationsLabel 7 | translation: "Other languages: " 8 | - id: translationsSeparator 9 | translation: ", " 10 | - id: readMore 11 | translation: "Read More" 12 | - id: morePosts 13 | translation: "More Posts" 14 | - id: olderPosts 15 | translation: "Older Posts" 16 | - id: newerPosts 17 | translation: "Newer Posts" 18 | - id: previousPost 19 | translation: "Previous Post" 20 | - id: nextPost 21 | translation: "Next Post" 22 | - id: readTime 23 | one: "One minute" 24 | other: "{{.Count}} minutes" 25 | - id: words 26 | one: "One word" 27 | other: "{{.Count}} words" 28 | 29 | 30 | # 404 page 31 | - id: pageNotFound 32 | translation: "Whoops, this page doesn't exist. Move along. (404 error)" 33 | - id: goHome 34 | translation: "Go to home" 35 | 36 | # Footer 37 | - id: poweredBy # Accepts HTML 38 | translation: 'Hugo v{{ .Site.Hugo.Version }} powered  •  Theme Beautiful Hugo adapted from Beautiful Jekyll' 39 | 40 | # Navigation 41 | - id: toggleNavigation 42 | translation: "Toggle navigation" 43 | - id: languageSwitcherLabel 44 | translation: "Language" 45 | - id: gcseLabelShort 46 | translation: "Search" 47 | - id: gcseLabelLong 48 | translation: "Search {{ .Site.Title }}" 49 | - id: gcseClose 50 | translation: "Close" 51 | 52 | # Search 53 | - id: searchPlaceholder 54 | translation: "Enter search query" 55 | - id: searchResults 56 | translation: "Results" 57 | - id: searchNoResults 58 | translation: "No results found" 59 | - id: searchNoResultsDesc 60 | translation: "Try adjusting your search query" 61 | 62 | # Staticman 63 | - id: noComment 64 | translation: "No comment" 65 | - id: oneComment 66 | translation: "comment" 67 | - id: moreComment 68 | translation: "comments" 69 | - id: useMarkdown 70 | translation: "You can use Markdown syntax" 71 | - id: yourName 72 | translation: "Your name" 73 | - id: yourEmail 74 | translation: "Your email address" 75 | - id: yourWebsite 76 | translation: "Your website" 77 | 78 | # Delayed Disqus 79 | - id: show 80 | translation: "Show" 81 | - id: comments 82 | translation: "comments" 83 | 84 | # Related posts 85 | - id: seeAlso 86 | translation: "See also" 87 | -------------------------------------------------------------------------------- /i18n/es.yaml: -------------------------------------------------------------------------------- 1 | # Content 2 | - id: postedOnDate 3 | translation: "Publicado {{ . }}" 4 | - id: lastModified 5 | translation: "(Modificado {{ . }})" 6 | - id: translationsLabel 7 | translation: "Otras versiones: " 8 | - id: translationsSeparator 9 | translation: ", " 10 | - id: readMore 11 | translation: "Seguir leyendo" 12 | - id: morePosts 13 | translation: "Más artículos" 14 | - id: olderPosts 15 | translation: "Artículos anteriores" 16 | - id: newerPosts 17 | translation: "Artículos más recientes" 18 | - id: previousPost 19 | translation: "Artículo anterior" 20 | - id: nextPost 21 | translation: "Artículo siguiente" 22 | - id: readTime 23 | translation: "minuto(s)" 24 | - id: words 25 | translation: "palabra(s)" 26 | 27 | 28 | # 404 page 29 | - id: pageNotFound 30 | translation: "Error 404, no encontrado. Es como si drácula se mirase al espejo..." 31 | 32 | # Footer 33 | - id: poweredBy # Accepts HTML 34 | translation: 'Hugo v{{ .Site.Hugo.Version }} powered  •  Theme Beautiful Hugo adapted from Beautiful Jekyll' 35 | 36 | # Navigation 37 | - id: toggleNavigation 38 | translation: "Menu" 39 | - id: languageSwitcherLabel 40 | translation: "Idioma" 41 | - id: gcseLabelShort 42 | translation: "Buscar" 43 | - id: gcseLabelLong 44 | translation: "Buscar {{ .Site.Title }}" 45 | - id: gcseClose 46 | translation: "Cerrar" 47 | 48 | # Staticman 49 | - id: noComment 50 | translation: "Quieres comentar?" 51 | - id: oneComment 52 | translation: "comentario" 53 | - id: moreComment 54 | translation: "comentarios" 55 | - id: useMarkdown 56 | translation: "Puedes usar sintaxis Markdown" 57 | - id: yourName 58 | translation: "Cuál es tu nombre?" 59 | - id: yourEmail 60 | translation: "Tu correo?" 61 | - id: yourWebsite 62 | translation: "Y tu sitio web?" 63 | 64 | # Delayed Disqus 65 | - id: show 66 | translation: "Mostrar" 67 | - id: comments 68 | translation: "comentarios" 69 | 70 | # Related posts 71 | - id: seeAlso 72 | translation: "Ver también" 73 | -------------------------------------------------------------------------------- /i18n/fr.yaml: -------------------------------------------------------------------------------- 1 | # Content 2 | - id: postedOnDate 3 | translation: "Posté le {{ . }}" 4 | - id: lastModified 5 | translation: "(Dernière modification le {{ . }})" 6 | - id: translationsLabel 7 | translation: "Autres langues: " 8 | - id: translationsSeparator 9 | translation: ", " 10 | - id: readMore 11 | translation: "Lire plus" 12 | - id: morePosts 13 | translation: "Plus d'articles" 14 | - id: olderPosts 15 | translation: "Articles plus anciens" 16 | - id: newerPosts 17 | translation: "Articles plus récents" 18 | - id: previousPost 19 | translation: "Articles précédents" 20 | - id: nextPost 21 | translation: "Articles suivants" 22 | - id: readTime 23 | one: "Une minute" 24 | other: "{{.Count}} minutes" 25 | - id: words 26 | one: "One mot" 27 | other: "{{.Count}} mots" 28 | 29 | # 404 page 30 | - id: pageNotFound 31 | translation: "Whoops, cette page n'existe pas. Circulez. (404 error)" 32 | - id: goHome 33 | translation: "Retourner à l'accueil" 34 | 35 | # Footer 36 | - id: poweredBy # Accepts HTML 37 | translation: 'Hugo v{{ .Site.Hugo.Version }} powered  •  Theme Beautiful Hugo adapted from Beautiful Jekyll' 38 | 39 | # Navigation 40 | - id: toggleNavigation 41 | translation: "Déplier le menu" 42 | - id: languageSwitcherLabel 43 | translation: "Langue" 44 | - id: gcseLabelShort 45 | translation: "Rechercher" 46 | - id: gcseLabelLong 47 | translation: "Rechercher {{ .Site.Title }}" 48 | - id: gcseClose 49 | translation: "Fermer" 50 | 51 | # Search 52 | - id: searchPlaceholder 53 | translation: "Rechercher…" 54 | - id: searchResults 55 | translation: "Résultats" 56 | - id: searchNoResults 57 | translation: "Aucun résultat" 58 | - id: searchNoResultsDesc 59 | translation: "Essayez avec d'autres mots-clés" 60 | 61 | # Staticman 62 | - id: noComment 63 | translation: "Pas de commentaire" 64 | - id: oneComment 65 | translation: "Commentaire" 66 | - id: moreComment 67 | translation: "Plus de commentaire" 68 | - id: useMarkdown 69 | translation: "Vous pouvez utiliser la syntaxe Markdown" 70 | - id: yourName 71 | translation: "Votre nom" 72 | - id: yourEmail 73 | translation: "Votre adresse e-mail" 74 | - id: yourWebsite 75 | translation: "Votre site internet" 76 | 77 | # Delayed Disqus 78 | - id: show 79 | translation: "Voir" 80 | - id: comments 81 | translation: "commentaires" 82 | 83 | # Related posts 84 | - id: seeAlso 85 | translation: "Voir aussi" 86 | -------------------------------------------------------------------------------- /images/blist-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apvarun/blist-hugo-theme/19b795addb86bb01e971f7011308709a76f60eba/images/blist-logo.png -------------------------------------------------------------------------------- /images/pagespeed-performance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apvarun/blist-hugo-theme/19b795addb86bb01e971f7011308709a76f60eba/images/pagespeed-performance.png -------------------------------------------------------------------------------- /images/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apvarun/blist-hugo-theme/19b795addb86bb01e971f7011308709a76f60eba/images/screenshot.png -------------------------------------------------------------------------------- /images/tn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apvarun/blist-hugo-theme/19b795addb86bb01e971f7011308709a76f60eba/images/tn.png -------------------------------------------------------------------------------- /layouts/404.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 | 3 |
    4 | 5 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 18 | 19 | 20 | 24 |
    25 | 26 | {{ end }} 27 | -------------------------------------------------------------------------------- /layouts/_default/_markup/render-link.html: -------------------------------------------------------------------------------- 1 | {{ .Text }} 2 | -------------------------------------------------------------------------------- /layouts/_default/_markup/render-passthrough.html: -------------------------------------------------------------------------------- 1 | {{- $opts := dict "output" "htmlAndMathml" "displayMode" (eq .Type "block") }} 2 | {{- with try (transform.ToMath .Inner $opts) }} 3 | {{- with .Err }} 4 | {{ errorf "Unable to render mathematical markup to HTML using the transform.ToMath function. The KaTeX display engine threw the following error: %s: see %s." . $.Position }} 5 | {{- else }} 6 | {{- .Value }} 7 | {{- $.Page.Store.Set "hasMath" true }} 8 | {{- end }} 9 | {{- end -}} 10 | -------------------------------------------------------------------------------- /layouts/_default/baseof.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{- partial "head.html" . -}} 4 | 5 | {{- partial "header.html" . -}} 6 |
    7 | {{- block "main" . }}{{- end }} 8 |
    9 | {{- partial "footer.html" . -}} 10 | 11 | 12 | -------------------------------------------------------------------------------- /layouts/_default/index.json: -------------------------------------------------------------------------------- 1 | {{- $.Scratch.Add "index" slice -}} 2 | {{- range .Site.RegularPages -}} 3 | {{- if .Site.Params.searchKeys -}} 4 | {{ $page := . }} 5 | {{ $dict := dict "title" $page.Title }} 6 | {{- range .Site.Params.searchKeys -}} 7 | {{- if (eq . "tags") -}} 8 | {{ $dict = merge $dict (dict "tags" $page.Params.tags) }} 9 | {{- end -}} 10 | {{- if (eq . "date") -}} 11 | {{ $dict = merge $dict (dict "date" $page.Params.Lastmod) }} 12 | {{- end -}} 13 | {{- if (eq . "categories") -}} 14 | {{ $dict = merge $dict (dict "categories" $page.Params.categories) }} 15 | {{- end -}} 16 | {{- if (eq . "author") -}} 17 | {{ $dict = merge $dict (dict "author" $page.Params.author) }} 18 | {{- end -}} 19 | {{- if (eq . "summary") -}} 20 | {{ $dict = merge $dict (dict "contents" $page.Summary) }} 21 | {{- end -}} 22 | {{- if (eq . "contents") -}} 23 | {{ $dict = merge $dict (dict "contents" $page.Content) }} 24 | {{- end -}} 25 | {{- if (eq . "link") -}} 26 | {{ $dict = merge $dict (dict "permalink" $page.Permalink) }} 27 | {{- end -}} 28 | 29 | {{- end -}} 30 | {{- $.Scratch.Add "index" $dict -}} 31 | {{- else -}} 32 | {{- $.Scratch.Add "index" (dict "title" .Title "tags" .Params.tags "date" .Params.Lastmod "categories" .Params.categories "contents" .Summary "permalink" .Permalink) -}} 33 | {{- end -}} 34 | 35 | {{- end -}} 36 | {{- $.Scratch.Get "index" | jsonify -}} 37 | -------------------------------------------------------------------------------- /layouts/_default/list.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 | 3 |

    {{ .Title }}

    4 | 5 | {{ $paginator := .Paginate .Pages.ByDate.Reverse 6 }} 6 |
    7 | {{ range $paginator.Pages }} 8 | {{- partial "blog-card.html" . -}} 9 | {{ end }} 10 |
    11 | 12 | {{- partial "paginate.html" . -}} 13 | 14 | {{- partial "social.html" . -}} 15 | {{ end }} 16 | -------------------------------------------------------------------------------- /layouts/_default/single.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 | {{ $lastmodstr := (.Lastmod | time.Format ":date_long") }} 3 | {{ $datestr := (.Date | time.Format ":date_long") }} 4 | 5 | {{ if (and .Params.thumbnail (not (or .Site.Params.hidePageThumbnail .Params.hidePageThumbnail)) ) }} 6 |
    7 | 8 | {{ if not (or (or .Site.Params.hideMeta .Params.hideMeta) false) }} 9 |
    10 | {{ $datestr }} 11 |
    12 | {{ end }} 13 |
    14 | {{ end }} 15 | 16 |
    17 | 18 |

    {{ .Title }}

    19 | {{ if not (or (or .Site.Params.hideMeta .Params.hideMeta) false) }} 20 |
    21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | {{ $datestr | i18n "postedOnDate" }} 30 | {{ if ne $datestr $lastmodstr }} 31 |  {{ $lastmodstr | i18n "lastModified" }}
    32 | {{ else }} 33 |  •  34 | {{ end }} 35 | 36 | 37 | 38 | 39 | 40 | {{ i18n "readTime" .ReadingTime }} 41 |  • 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | {{ i18n "words" .WordCount }} 51 | {{ if not (or (or .Site.Params.hideOtherLanguages .Params.hideOtherLanguages) false) }} 52 | {{ if .IsTranslated -}} 53 | {{- $sortedTranslations := sort .Translations "Site.Language.Weight" -}} 54 | {{- $links := apply $sortedTranslations "partial" "translation_link.html" "." -}} 55 | {{- $cleanLinks := apply $links "chomp" "." -}} 56 | {{- $linksOutput := delimit $cleanLinks (i18n "translationsSeparator") -}} 57 |  • {{ i18n "translationsLabel" }} {{ $linksOutput | safeHTML }} 58 | {{- end }} 59 | {{ end }} 60 |
    61 | {{ end }} 62 | 63 | {{ if (or .Site.Params.toc .Params.toc) }} 64 | {{- partial "toc.html" . -}} 65 | {{ end }} 66 | 67 | {{ .Content }} 68 | {{- partial "comments.html" . -}} 69 |
    70 | 71 | 72 | {{- partial "social.html" . -}} 73 | {{ end }} 74 | -------------------------------------------------------------------------------- /layouts/index.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 | {{- partial "intro.html" . -}} 3 | {{ $frontBundle := .Site.Params.frontBundle | default "blog" }} 4 |
    5 | {{ range first 6 (where .Site.RegularPages.ByDate.Reverse "Type" $frontBundle) }} 6 | {{- partial "blog-card.html" . -}} 7 | {{ end }} 8 |
    9 | 10 | {{ if gt (len (where .Site.RegularPages.ByDate.Reverse "Type" $frontBundle)) 6 }} 11 | 18 | {{ end }} 19 | 20 | {{- partial "social.html" . -}} 21 | {{ end }} 22 | -------------------------------------------------------------------------------- /layouts/partials/blog-card.html: -------------------------------------------------------------------------------- 1 |
    2 | 3 | {{ if .Params.thumbnail }} 4 |
    5 | {{ .Params.title }} 6 | {{ if not (or (or .Site.Params.hideMeta .Params.hideMeta) false) }} 7 |
    8 | {{ .Date | time.Format ":date_medium" }} 9 |
    10 | {{ end }} 11 |
    12 | {{ end }} 13 |
    {{ .Params.title }}
    14 |
    {{ .Params.description }}
    15 |
    16 | {{ if not (or (or .Site.Params.hideOtherLanguages .Params.hideOtherLanguages) false) }} 17 | {{ if .IsTranslated -}} 18 |
    19 | {{- $sortedTranslations := sort .Translations "Site.Language.Weight" -}} 20 | {{- $links := apply $sortedTranslations "partial" "translation_link.html" "." -}} 21 | {{- $cleanLinks := apply $links "chomp" "." -}} 22 | {{- $linksOutput := delimit $cleanLinks (i18n "translationsSeparator") -}} 23 | {{ i18n "translationsLabel" }}{{ $linksOutput | safeHTML }} 24 |
    25 | {{- end }} 26 | {{ end }} 27 |
    28 | -------------------------------------------------------------------------------- /layouts/partials/comments.html: -------------------------------------------------------------------------------- 1 | {{ if .Site.Params.comments.system }} 2 |
    3 | {{ if eq .Site.Params.comments.system "disqus" }} 4 | {{ partial "disqus.html" . }} 5 | {{ else if eq .Site.Params.comments.system "giscus" }} 6 | 21 | {{ else if eq .Site.Params.comments.system "utterances" }} 22 | 29 | {{ end }} 30 |
    31 | {{ end }} -------------------------------------------------------------------------------- /layouts/partials/footer.html: -------------------------------------------------------------------------------- 1 |
    2 | 3 | {{ if (isset .Site.Params "copyright") }} 4 | {{ .Site.Params.copyright | safeHTML }} 5 | {{ else }} 6 | {{ dateFormat "2006" now }} © {{ .Site.Title }} 7 | {{ end }} 8 | 9 | 10 | 12 | 13 | 14 | 15 | 16 |
    17 | 18 | {{ if .Site.Params.enableSearch }} 19 | {{- partial "search-ui.html" . -}} 20 | {{ end }} 21 | 22 | {{ partial "google_analytics.html" . }} 23 | 24 | {{ if ge (len .Site.Languages) 3 }} 25 | 39 | {{ end }} 40 | 41 | {{ if .Site.Params.darkModeToggle }} 42 | 69 | {{ end }} 70 | 71 | 82 | -------------------------------------------------------------------------------- /layouts/partials/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | {{ if not .IsHome }}{{ .Title }} - {{ end }}{{ site.Title }} 9 | 10 | 11 | {{- if .Keywords }} 12 | 13 | {{ end -}} 14 | {{- if .Params.Author }} 15 | 16 | {{ end -}} 17 | 18 | {{ hugo.Generator }} 19 | 20 | {{- $styles := resources.Get "css/styles.css" | postCSS (dict "config" "./assets/css/") -}} 21 | {{- if hugo.IsServer }} 22 | 23 | {{ else }} 24 | {{- $styles := $styles| minify | fingerprint | resources.PostProcess -}} 25 | 30 | {{ end -}} 31 | 32 | {{ $noop := .WordCount }} 33 | {{ if .Page.Store.Get "hasMath" }} 34 | {{ $katex_css_url := printf "https://cdn.jsdelivr.net/npm/katex@latest/dist/katex%s.css" (cond hugo.IsProduction ".min" "") -}} 35 | {{ with try (resources.GetRemote $katex_css_url) -}} 36 | {{ with .Err -}} 37 | {{ errorf "Could not retrieve KaTeX css file from CDN. Reason: %s." . -}} 38 | {{ else with.Value -}} 39 | {{ with resources.Copy (printf "css/katex%s.css" (cond hugo.IsProduction ".min" "")) . }} 40 | {{ $secureCSS := . | resources.Fingerprint "sha512" -}} 41 | 42 | {{ end -}} 43 | {{ end -}} 44 | {{ end -}} 45 | {{ end }} 46 | 47 | {{ range .AlternativeOutputFormats -}} 48 | {{ printf `` .Rel .MediaType.Type .Permalink $.Site.Title | safeHTML }} 49 | {{ end -}} 50 | 51 | {{ partial "opengraph.html" . }} 52 | {{ partial "twitter_cards.html" . }} 53 | {{ partial "schema.html" . }} 54 | 55 | {{ if gt (len .Site.Languages) 1}} 56 | 57 | {{ end }} 58 | 59 | -------------------------------------------------------------------------------- /layouts/partials/header.html: -------------------------------------------------------------------------------- 1 |
    2 | 3 | {{ if .Site.Params.logo }} 4 | {{ .Site.Title }} 5 | {{ else }} 6 | {{ .Site.Title }} 7 | {{ end }} 8 | 9 | 16 | 105 |
    106 | -------------------------------------------------------------------------------- /layouts/partials/intro.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |
    4 |

    {{ .Site.Params.introTitle | safeHTML}}

    5 |

    {{ .Site.Params.introSubtitle | safeHTML}}

    6 |
    7 | {{ .Site.Title }} 8 |
    9 |
    -------------------------------------------------------------------------------- /layouts/partials/paginate.html: -------------------------------------------------------------------------------- 1 |
    2 | {{ partial "pagination.html" . }} 3 |
    4 | -------------------------------------------------------------------------------- /layouts/partials/search-ui.html: -------------------------------------------------------------------------------- 1 | 30 | 31 | {{ $fuse := resources.Get "js/fuse.min.js" }} 32 | {{ $search := resources.Get "js/search.js" }} 33 | 34 | {{ $concatjs := slice $fuse $search | resources.Concat "js/scripts.js" | resources.Minify }} 35 | 36 | -------------------------------------------------------------------------------- /layouts/partials/social.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |
    4 |
    {{ .Site.Params.homepage.social.title }}
    5 |

    {{ .Site.Params.homepage.social.description | safeHTML }}

    6 | {{range .Site.Params.homepage.social.icons}} 7 | {{ if eq .website "address" }} 8 |
    {{ .url | safeHTML }}
    9 | {{ end }} 10 | {{ end }} 11 |
    12 | 13 | 523 |
    524 |
    525 | -------------------------------------------------------------------------------- /layouts/partials/toc.html: -------------------------------------------------------------------------------- 1 | {{- $headers := findRE "(.|\n])+?" .Content -}} 2 | {{- $has_headers := ge (len $headers) 1 -}} 3 | {{- if $has_headers -}} 4 | 5 | {{- $largest := 6 -}} 6 | {{- range $headers -}} 7 | {{- $headerLevel := index (findRE "[1-4]" . 1) 0 -}} 8 | {{- $headerLevel := len (seq $headerLevel) -}} 9 | {{- if lt $headerLevel $largest -}} 10 | {{- $largest = $headerLevel -}} 11 | {{- end -}} 12 | {{- end -}} 13 | 14 | {{- $firstHeaderLevel := len (seq (index (findRE "[1-4]" (index $headers 0) 1) 0)) -}} 15 | 16 | {{- $.Scratch.Set "bareul" slice -}} 17 |
    18 | 19 | Table of contents 20 | 21 | 22 | 23 | 24 | 25 | 26 |
      27 | {{- range seq (sub $firstHeaderLevel $largest) -}} 28 |
        29 | {{- $.Scratch.Add "bareul" (sub (add $largest .) 1) -}} 30 | {{- end -}} 31 | {{- range $i, $header := $headers -}} 32 | {{- $headerLevel := index (findRE "[1-4]" . 1) 0 -}} 33 | {{- $headerLevel := len (seq $headerLevel) -}} 34 | 35 | {{/* get id="xyz" */}} 36 | {{ $id := index (findRE "(id=\"(.*?)\")" $header 9) 0 }} 37 | 38 | {{/* strip id="" to leave xyz (no way to get regex capturing groups in hugo :( */}} 39 | {{ $cleanedID := replace (replace $id "id=\"" "") "\"" "" }} 40 | {{- $header := replaceRE "((.|\n])+?)" "$1" $header -}} 41 | 42 | {{- if ne $i 0 -}} 43 | {{- $prevHeaderLevel := index (findRE "[1-4]" (index $headers (sub $i 1)) 1) 0 -}} 44 | {{- $prevHeaderLevel := len (seq $prevHeaderLevel) -}} 45 | {{- if gt $headerLevel $prevHeaderLevel -}} 46 | {{- range seq $prevHeaderLevel (sub $headerLevel 1) -}} 47 |
          48 | {{/* the first should not be recorded */}} 49 | {{- if ne $prevHeaderLevel . -}} 50 | {{- $.Scratch.Add "bareul" . -}} 51 | {{- end -}} 52 | {{- end -}} 53 | {{- else -}} 54 | 55 | {{- if lt $headerLevel $prevHeaderLevel -}} 56 | {{- range seq (sub $prevHeaderLevel 1) -1 $headerLevel -}} 57 | {{- if in ($.Scratch.Get "bareul") . -}} 58 |
        59 | {{/* manually do pop item */}} 60 | {{- $tmp := $.Scratch.Get "bareul" -}} 61 | {{- $.Scratch.Delete "bareul" -}} 62 | {{- $.Scratch.Set "bareul" slice}} 63 | {{- range seq (sub (len $tmp) 1) -}} 64 | {{- $.Scratch.Add "bareul" (index $tmp (sub . 1)) -}} 65 | {{- end -}} 66 | {{- else -}} 67 |
      68 | 69 | {{- end -}} 70 | {{- end -}} 71 | {{- end -}} 72 | {{- end -}} 73 |
    • 74 | {{- $header | safeHTML -}} 75 | {{- else -}} 76 |
    • 77 | {{- $header | safeHTML -}} 78 | {{- end -}} 79 | {{- end -}} 80 | 81 | {{ $firstHeaderLevel := $largest }} 82 | {{- $lastHeaderLevel := len (seq (index (findRE "[1-4]" (index $headers (sub (len $headers) 1)) 1) 0)) -}} 83 |
    • 84 | {{- range seq (sub $lastHeaderLevel $firstHeaderLevel) -}} 85 | {{- if in ($.Scratch.Get "bareul") (add . $firstHeaderLevel) -}} 86 |
    87 | {{- else -}} 88 |
89 | 90 | {{- end -}} 91 | {{- end -}} 92 | 93 | 94 | {{- end -}} -------------------------------------------------------------------------------- /layouts/partials/translation_link.html: -------------------------------------------------------------------------------- 1 | {{ default .Lang .Site.Language.LanguageName }} 2 | 3 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "blist", 3 | "version": "2.1.0", 4 | "description": "Blist is a clean and fast blog theme for your Hugo site.", 5 | "main": "index.js", 6 | "repository": "https://github.com/apvarun/blist-hugo-theme", 7 | "author": "Varun A P", 8 | "license": "MIT", 9 | "scripts": { 10 | "start": "hugo server --disableFastRender", 11 | "start-examplesite": "hugo server -s exampleSite --themesDir=../.. --disableFastRender", 12 | "build-examplesite": "NODE_ENV=production hugo -s exampleSite --themesDir=../.. --gc", 13 | "build": "NODE_ENV=production hugo --gc" 14 | }, 15 | "devDependencies": { 16 | "@tailwindcss/typography": "^0.5.10", 17 | "autoprefixer": "^10.4.16", 18 | "postcss": "^8.4.33", 19 | "postcss-cli": "^11.0.0 ", 20 | "postcss-import": "^16.0.0", 21 | "tailwindcss": "^3.4.1" 22 | }, 23 | "browserslist": [ 24 | "last 1 version", 25 | "> 1%", 26 | "maintained node versions", 27 | "not dead" 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /static/fonts/inter-v3-latin-300.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apvarun/blist-hugo-theme/19b795addb86bb01e971f7011308709a76f60eba/static/fonts/inter-v3-latin-300.eot -------------------------------------------------------------------------------- /static/fonts/inter-v3-latin-300.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 12 | 13 | 14 | 15 | 16 | 19 | 22 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 36 | 37 | 39 | 42 | 43 | 45 | 48 | 49 | 52 | 55 | 57 | 59 | 60 | 61 | 62 | 64 | 68 | 69 | 71 | 73 | 74 | 75 | 76 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 87 | 88 | 90 | 92 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 111 | 113 | 115 | 117 | 119 | 120 | 123 | 124 | 125 | 127 | 128 | 129 | 131 | 132 | 134 | 136 | 138 | 139 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 150 | 151 | 153 | 155 | 156 | 157 | 159 | 161 | 164 | 165 | 166 | 170 | 172 | 175 | 177 | 178 | 179 | 180 | 183 | 184 | 186 | 187 | 189 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 199 | 200 | 201 | 203 | 206 | 208 | 209 | 210 | 211 | 213 | 215 | 217 | 218 | 221 | 222 | 223 | 224 | 226 | 227 | 228 | 229 | 231 | 233 | 235 | 237 | 239 | 241 | 244 | 247 | 248 | 250 | 252 | 254 | 256 | 258 | 259 | 261 | 263 | 266 | 269 | 272 | 276 | 280 | 284 | 288 | 290 | 292 | 294 | 296 | 299 | 300 | 301 | 302 | 304 | 307 | 309 | 311 | 313 | 315 | 318 | 321 | 323 | 325 | 326 | 327 | 329 | 331 | 333 | 335 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | -------------------------------------------------------------------------------- /static/fonts/inter-v3-latin-300.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apvarun/blist-hugo-theme/19b795addb86bb01e971f7011308709a76f60eba/static/fonts/inter-v3-latin-300.ttf -------------------------------------------------------------------------------- /static/fonts/inter-v3-latin-300.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apvarun/blist-hugo-theme/19b795addb86bb01e971f7011308709a76f60eba/static/fonts/inter-v3-latin-300.woff -------------------------------------------------------------------------------- /static/fonts/inter-v3-latin-300.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apvarun/blist-hugo-theme/19b795addb86bb01e971f7011308709a76f60eba/static/fonts/inter-v3-latin-300.woff2 -------------------------------------------------------------------------------- /static/fonts/inter-v3-latin-500.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apvarun/blist-hugo-theme/19b795addb86bb01e971f7011308709a76f60eba/static/fonts/inter-v3-latin-500.eot -------------------------------------------------------------------------------- /static/fonts/inter-v3-latin-500.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apvarun/blist-hugo-theme/19b795addb86bb01e971f7011308709a76f60eba/static/fonts/inter-v3-latin-500.ttf -------------------------------------------------------------------------------- /static/fonts/inter-v3-latin-500.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apvarun/blist-hugo-theme/19b795addb86bb01e971f7011308709a76f60eba/static/fonts/inter-v3-latin-500.woff -------------------------------------------------------------------------------- /static/fonts/inter-v3-latin-500.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apvarun/blist-hugo-theme/19b795addb86bb01e971f7011308709a76f60eba/static/fonts/inter-v3-latin-500.woff2 -------------------------------------------------------------------------------- /static/fonts/inter-v3-latin-700.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apvarun/blist-hugo-theme/19b795addb86bb01e971f7011308709a76f60eba/static/fonts/inter-v3-latin-700.eot -------------------------------------------------------------------------------- /static/fonts/inter-v3-latin-700.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apvarun/blist-hugo-theme/19b795addb86bb01e971f7011308709a76f60eba/static/fonts/inter-v3-latin-700.ttf -------------------------------------------------------------------------------- /static/fonts/inter-v3-latin-700.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apvarun/blist-hugo-theme/19b795addb86bb01e971f7011308709a76f60eba/static/fonts/inter-v3-latin-700.woff -------------------------------------------------------------------------------- /static/fonts/inter-v3-latin-700.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apvarun/blist-hugo-theme/19b795addb86bb01e971f7011308709a76f60eba/static/fonts/inter-v3-latin-700.woff2 -------------------------------------------------------------------------------- /theme.toml: -------------------------------------------------------------------------------- 1 | name = "Blist" 2 | license = "MIT" 3 | licenselink = "https://github.com/apvarun/blist-hugo-theme/blob/master/LICENSE" 4 | description = "Blist is a clean and fast blog theme for your Hugo site." 5 | homepage = "https://github.com/apvarun/blist" 6 | demosite = "https://blist.vercel.app" 7 | tags = ["Hugo", "theme", "blog", "modern", "responsive"] 8 | features = ["clean", "gallery", "minimal", "minimalist", "mobile", "personal", "responsive", "simple", "tailwind", "blog", "white"] 9 | min_version = "0.124.0" 10 | 11 | [author] 12 | name = "Varun A P" 13 | homepage = "https://apvarun.com" 14 | --------------------------------------------------------------------------------