From cda0c8f53d34a431c9c413ec4ed6ec1d2d6e0aeb Mon Sep 17 00:00:00 2001 From: Mathieu Broillet Date: Sun, 11 Jun 2023 11:34:59 +0200 Subject: [PATCH] init hugo --- themes/hello-friend | 1 - themes/hello-friend/.eslintrc.yml | 54 +++ themes/hello-friend/.gitignore | 2 + themes/hello-friend/.husky/.gitignore | 1 + themes/hello-friend/.husky/pre-push | 4 + themes/hello-friend/.prettierrc | 11 + themes/hello-friend/COMMUNITY-FEATURES.md | 17 + themes/hello-friend/LICENSE.md | 20 ++ themes/hello-friend/README.md | 310 ++++++++++++++++++ themes/hello-friend/USERS.md | 38 +++ themes/hello-friend/assets/css/archive.scss | 72 ++++ themes/hello-friend/assets/css/buttons.scss | 98 ++++++ themes/hello-friend/assets/css/code.scss | 96 ++++++ themes/hello-friend/assets/css/fonts.scss | 50 +++ themes/hello-friend/assets/css/footer.scss | 51 +++ themes/hello-friend/assets/css/header.scss | 39 +++ themes/hello-friend/assets/css/logo.scss | 39 +++ themes/hello-friend/assets/css/main.scss | 304 +++++++++++++++++ themes/hello-friend/assets/css/menu.scss | 136 ++++++++ .../hello-friend/assets/css/pagination.scss | 85 +++++ themes/hello-friend/assets/css/post.scss | 85 +++++ themes/hello-friend/assets/css/prism.scss | 259 +++++++++++++++ themes/hello-friend/assets/css/style.scss | 18 + themes/hello-friend/assets/css/terms.scss | 30 ++ themes/hello-friend/assets/css/variables.scss | 69 ++++ .../assets/fonts/Inter-Bold.woff2 | Bin 0 -> 107144 bytes .../assets/fonts/Inter-BoldItalic.woff2 | Bin 0 -> 112276 bytes .../assets/fonts/Inter-Italic.woff2 | Bin 0 -> 108172 bytes .../assets/fonts/Inter-Medium.woff2 | Bin 0 -> 106484 bytes .../assets/fonts/Inter-MediumItalic.woff2 | Bin 0 -> 112640 bytes .../assets/fonts/Inter-Regular.woff2 | Bin 0 -> 100368 bytes themes/hello-friend/assets/js/menu.js | 54 +++ themes/hello-friend/assets/js/prism.js | 80 +++++ themes/hello-friend/assets/js/theme.js | 31 ++ themes/hello-friend/babel.config.js | 18 + themes/hello-friend/config.toml | 0 themes/hello-friend/go.mod | 3 + themes/hello-friend/images/screenshot.png | Bin 0 -> 247796 bytes themes/hello-friend/images/tn.png | Bin 0 -> 229819 bytes themes/hello-friend/layouts/404.html | 29 ++ .../_default/_markup/render-heading.html | 4 + .../hello-friend/layouts/_default/baseof.html | 30 ++ .../hello-friend/layouts/_default/index.html | 69 ++++ .../hello-friend/layouts/_default/list.html | 61 ++++ themes/hello-friend/layouts/_default/rss.xml | 64 ++++ .../hello-friend/layouts/_default/single.html | 91 +++++ .../hello-friend/layouts/_default/terms.html | 19 ++ themes/hello-friend/layouts/archive/list.html | 49 +++ .../layouts/partials/analytics.html | 10 + .../layouts/partials/comments.html | 7 + .../layouts/partials/extended_footer.html | 4 + .../layouts/partials/extended_head.html | 4 + .../hello-friend/layouts/partials/footer.html | 21 ++ .../layouts/partials/greater-icon.html | 3 + .../hello-friend/layouts/partials/head.html | 48 +++ .../hello-friend/layouts/partials/header.html | 19 ++ .../layouts/partials/lastmod.html | 10 + .../hello-friend/layouts/partials/logo.html | 15 + .../hello-friend/layouts/partials/menu.html | 42 +++ .../layouts/partials/pagination.html | 20 ++ .../layouts/partials/postcover.html | 11 + .../layouts/partials/prepended_head.html | 4 + .../layouts/partials/theme-icon.html | 14 + .../hello-friend/layouts/shortcodes/code.html | 15 + .../layouts/shortcodes/figure.html | 8 + .../layouts/shortcodes/image.html | 3 + .../layouts/shortcodes/imgproc.html | 30 ++ themes/hello-friend/package.hugo.json | 44 +++ themes/hello-friend/package.json | 44 +++ themes/hello-friend/postcss.config.js | 24 ++ .../img/apple-touch-icon-144-precomposed.png | Bin 0 -> 1389 bytes themes/hello-friend/static/img/favicon.png | Bin 0 -> 2546 bytes themes/hello-friend/static/style.css | 0 themes/hello-friend/theme.toml | 27 ++ 74 files changed, 2917 insertions(+), 1 deletion(-) delete mode 160000 themes/hello-friend create mode 100644 themes/hello-friend/.eslintrc.yml create mode 100644 themes/hello-friend/.gitignore create mode 100644 themes/hello-friend/.husky/.gitignore create mode 100755 themes/hello-friend/.husky/pre-push create mode 100644 themes/hello-friend/.prettierrc create mode 100644 themes/hello-friend/COMMUNITY-FEATURES.md create mode 100644 themes/hello-friend/LICENSE.md create mode 100644 themes/hello-friend/README.md create mode 100644 themes/hello-friend/USERS.md create mode 100644 themes/hello-friend/assets/css/archive.scss create mode 100644 themes/hello-friend/assets/css/buttons.scss create mode 100644 themes/hello-friend/assets/css/code.scss create mode 100644 themes/hello-friend/assets/css/fonts.scss create mode 100644 themes/hello-friend/assets/css/footer.scss create mode 100644 themes/hello-friend/assets/css/header.scss create mode 100644 themes/hello-friend/assets/css/logo.scss create mode 100644 themes/hello-friend/assets/css/main.scss create mode 100644 themes/hello-friend/assets/css/menu.scss create mode 100644 themes/hello-friend/assets/css/pagination.scss create mode 100644 themes/hello-friend/assets/css/post.scss create mode 100644 themes/hello-friend/assets/css/prism.scss create mode 100644 themes/hello-friend/assets/css/style.scss create mode 100644 themes/hello-friend/assets/css/terms.scss create mode 100644 themes/hello-friend/assets/css/variables.scss create mode 100644 themes/hello-friend/assets/fonts/Inter-Bold.woff2 create mode 100644 themes/hello-friend/assets/fonts/Inter-BoldItalic.woff2 create mode 100644 themes/hello-friend/assets/fonts/Inter-Italic.woff2 create mode 100644 themes/hello-friend/assets/fonts/Inter-Medium.woff2 create mode 100644 themes/hello-friend/assets/fonts/Inter-MediumItalic.woff2 create mode 100644 themes/hello-friend/assets/fonts/Inter-Regular.woff2 create mode 100644 themes/hello-friend/assets/js/menu.js create mode 100644 themes/hello-friend/assets/js/prism.js create mode 100644 themes/hello-friend/assets/js/theme.js create mode 100644 themes/hello-friend/babel.config.js create mode 100644 themes/hello-friend/config.toml create mode 100644 themes/hello-friend/go.mod create mode 100644 themes/hello-friend/images/screenshot.png create mode 100644 themes/hello-friend/images/tn.png create mode 100644 themes/hello-friend/layouts/404.html create mode 100644 themes/hello-friend/layouts/_default/_markup/render-heading.html create mode 100644 themes/hello-friend/layouts/_default/baseof.html create mode 100644 themes/hello-friend/layouts/_default/index.html create mode 100644 themes/hello-friend/layouts/_default/list.html create mode 100644 themes/hello-friend/layouts/_default/rss.xml create mode 100644 themes/hello-friend/layouts/_default/single.html create mode 100644 themes/hello-friend/layouts/_default/terms.html create mode 100644 themes/hello-friend/layouts/archive/list.html create mode 100644 themes/hello-friend/layouts/partials/analytics.html create mode 100644 themes/hello-friend/layouts/partials/comments.html create mode 100644 themes/hello-friend/layouts/partials/extended_footer.html create mode 100644 themes/hello-friend/layouts/partials/extended_head.html create mode 100644 themes/hello-friend/layouts/partials/footer.html create mode 100644 themes/hello-friend/layouts/partials/greater-icon.html create mode 100644 themes/hello-friend/layouts/partials/head.html create mode 100644 themes/hello-friend/layouts/partials/header.html create mode 100644 themes/hello-friend/layouts/partials/lastmod.html create mode 100644 themes/hello-friend/layouts/partials/logo.html create mode 100644 themes/hello-friend/layouts/partials/menu.html create mode 100644 themes/hello-friend/layouts/partials/pagination.html create mode 100644 themes/hello-friend/layouts/partials/postcover.html create mode 100644 themes/hello-friend/layouts/partials/prepended_head.html create mode 100644 themes/hello-friend/layouts/partials/theme-icon.html create mode 100644 themes/hello-friend/layouts/shortcodes/code.html create mode 100644 themes/hello-friend/layouts/shortcodes/figure.html create mode 100644 themes/hello-friend/layouts/shortcodes/image.html create mode 100644 themes/hello-friend/layouts/shortcodes/imgproc.html create mode 100644 themes/hello-friend/package.hugo.json create mode 100644 themes/hello-friend/package.json create mode 100644 themes/hello-friend/postcss.config.js create mode 100644 themes/hello-friend/static/img/apple-touch-icon-144-precomposed.png create mode 100644 themes/hello-friend/static/img/favicon.png create mode 100644 themes/hello-friend/static/style.css create mode 100644 themes/hello-friend/theme.toml diff --git a/themes/hello-friend b/themes/hello-friend deleted file mode 160000 index 05c4ecf..0000000 --- a/themes/hello-friend +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 05c4ecfd03d75a0c96853737c01ecb538efea62c diff --git a/themes/hello-friend/.eslintrc.yml b/themes/hello-friend/.eslintrc.yml new file mode 100644 index 0000000..58ea9e6 --- /dev/null +++ b/themes/hello-friend/.eslintrc.yml @@ -0,0 +1,54 @@ +--- + +env: + es6: true + +extends: + # https://github.com/airbnb/javascript + - airbnb + - eslint:recommended + - prettier + +parser: babel-eslint + +rules: + # best practices + arrow-parens: + - 2 + - as-needed + semi: + - 2 + - never + class-methods-use-this: 0 + comma-dangle: + - 2 + - always-multiline + no-console: + - 2 + no-unused-expressions: 0 + no-param-reassign: + - 2 + - props: false + no-useless-escape: 0 + func-names: 0 + quotes: + - 2 + - single + - allowTemplateLiterals: true + no-underscore-dangle: 0 + object-curly-newline: 0 + function-paren-newline: 0 + operator-linebreak: + - 2 + - after + no-unused-vars: + - 2 + - argsIgnorePattern: "^_" + +globals: + document: true + requestAnimationFrame: true + window: true + self: true + fetch: true + Headers: true diff --git a/themes/hello-friend/.gitignore b/themes/hello-friend/.gitignore new file mode 100644 index 0000000..36170a7 --- /dev/null +++ b/themes/hello-friend/.gitignore @@ -0,0 +1,2 @@ +node_modules +public diff --git a/themes/hello-friend/.husky/.gitignore b/themes/hello-friend/.husky/.gitignore new file mode 100644 index 0000000..31354ec --- /dev/null +++ b/themes/hello-friend/.husky/.gitignore @@ -0,0 +1 @@ +_ diff --git a/themes/hello-friend/.husky/pre-push b/themes/hello-friend/.husky/pre-push new file mode 100755 index 0000000..f1fd679 --- /dev/null +++ b/themes/hello-friend/.husky/pre-push @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +yarn build && git add . && git commit --amend --no-edit diff --git a/themes/hello-friend/.prettierrc b/themes/hello-friend/.prettierrc new file mode 100644 index 0000000..2ec43f6 --- /dev/null +++ b/themes/hello-friend/.prettierrc @@ -0,0 +1,11 @@ +{ + "parser": "babel", + "printWidth": 100, + "trailingComma": "all", + "overrides": [{ + "files": ["*.html"], + "options": { + "parser": "go-template" + } + }] +} diff --git a/themes/hello-friend/COMMUNITY-FEATURES.md b/themes/hello-friend/COMMUNITY-FEATURES.md new file mode 100644 index 0000000..8bda059 --- /dev/null +++ b/themes/hello-friend/COMMUNITY-FEATURES.md @@ -0,0 +1,17 @@ +# Community features + + diff --git a/themes/hello-friend/LICENSE.md b/themes/hello-friend/LICENSE.md new file mode 100644 index 0000000..770457f --- /dev/null +++ b/themes/hello-friend/LICENSE.md @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2019 panr + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/themes/hello-friend/README.md b/themes/hello-friend/README.md new file mode 100644 index 0000000..7fc013e --- /dev/null +++ b/themes/hello-friend/README.md @@ -0,0 +1,310 @@ +# Hello Friend + +## The theme is no longer maintained, but can still be used + +Even if the repository is archived you can still use the theme, fork it, download it, expand it, etc. Remember that each Hugo theme is a module that can be modified to match your needs. The theme is fully "open" and it depends only on the internal engines implemented in Hugo. + +The theme brings many useful features thanks to [all people that contributed to it](https://github.com/panr/hugo-theme-hello-friend/graphs/contributors) (I want to thank you all!). At the time of archiving the theme has reached 14th place on the [official Hugo Themes list](https://themes.gohugo.io/). This is huge! Thanks to you! + +---- + +![Hello Friend](https://github.com/panr/hugo-theme-hello-friend/blob/master/images/screenshot.png?raw=true) + +### DEMO - https://hugo-hello-friend.now.sh/ + +--- + +- [Hello Friend](#hello-friend) + - [DEMO - https://hugo-hello-friend.now.sh/](#demo) + - [Features](#features) + - [Built-in shortcodes](#built-in-shortcodes) + - [Code highlighting](#code-highlighting) + - [Improved RSS Feed](#improved-rss-feed) + - [How to start](#how-to-start) + - [How to run your site](#how-to-run-your-site) + - [How to configure](#how-to-configure) + - [How to add a cover image to your posts](#how-to-add-a-cover-image-to-your-posts) + - [How to display the Last Modified Date in your posts](#how-to-display-the-last-modified-date-in-your-posts) + - [How to hide "Read more" button](#how-to-hide-read-more-button) + - [Add-ons](#add-ons) + - [How to edit the theme](#how-to-edit) + - [Found a bug?](#bug) + - [New cool idea or feature](#feature) + - [`Hello Friend` theme user?](#hello-friend-theme-user) + - [License](#license) + +## Features + +- **dark/light mode**, depending on your preferences (the theme of your operating system is default, but you can change it) +- great reading experience thanks to [**Inter font**](https://rsms.me/inter/), made by [Rasmus Andersson](https://rsms.me/about/) +- nice code highlighting thanks to [**PrismJS**](https://prismjs.com) +- fully responsive + +#### Built-in shortcodes + +- **`image`** (prop required: **`src`**; props optional: **`alt`**, **`position`** (**left** is default | center | right), **`style`**) + - eg: `{{< image src="/img/hello.png" alt="Hello Friend" position="center" style="border-radius: 8px;" >}}` +- **`figure`** (same as `image`, plus few optional props: **`caption`**, **`captionPosition`** (left | **center** is default | right), **`captionStyle`** + - eg: `{{< figure src="/img/hello.png" alt="Hello Friend" position="center" style="border-radius: 8px;" caption="Hello Friend!" captionPosition="right" captionStyle="color: red;" >}}` +- **`imgproc`** Hugo shortcode for image processing, plus additional **`position`** param [ left | center | right ] (optional). + - eg: `{{< imgproc "img/hello.png" Resize "250x" center />}}` + - More detailed info on processing commands at [https://gohugo.io/content-management/image-processing/](https://gohugo.io/content-management/image-processing/) +- **`code`** (prop required: **`language`**; props optional: **`title`**, **`id`**, **`expand`** (default "△"), **`collapse`** (default "▽"), **`isCollapsed`**) + - eg: + ```go + {{< code language="css" title="Really cool snippet" id="1" expand="Show" collapse="Hide" isCollapsed="true" >}} + pre { + background: #1a1a1d; + padding: 20px; + border-radius: 8px; + font-size: 1rem; + overflow: auto; + + @media ($phone) { + white-space: pre-wrap; + word-wrap: break-word; + } + + code { + background: none !important; + color: #ccc; + padding: 0; + font-size: inherit; + } + } + {{< /code >}} + ``` + +#### Code highlighting + +By default the theme is using PrismJS to color your code syntax. All you need to do is to wrap you code like this: + +
+```html
+  // your code here
+```
+
+ +**Supported languages**: bash/shell, css, clike, javascript, apacheconf, actionscript, applescript, c, csharp, cpp, coffeescript, ruby, csp, css-extras, diff, django, docker, elixir, elm, markup-templating, erlang, fsharp, flow, git, go, graphql, less, handlebars, haskell, http, java, json, kotlin, latex, markdown, makefile, objectivec, ocaml, perl, php, php-extras, r, sql, processing, scss, python, jsx, typescript, toml, reason, textile, rust, sass, stylus, scheme, pug, swift, yaml, haml, twig, tsx, vim, visual-basic, wasm. + +#### Improved RSS Feed + +Some enhancements have been made to Hugo's [internal RSS](https://github.com/gohugoio/hugo/blob/25a6b33693992e8c6d9c35bc1e781ce3e2bca4be/tpl/tplimpl/embedded/templates/_default/rss.xml) generation code. + +**A page's cover image now appears at the top of its feed display**. This image is set manually using [the cover params](#how-to-add-a-cover-image-to-your-posts). If unset, the RSS generator searches for the first image file in the page bundle whose name includes 'featured', 'cover', or 'thumbnail'. + +**You can optionally display the full page content in your RSS feed** (default is Description or Summary data from Front Matter). Set `rssFullText = true` in your `config.toml` file to enable this option. + +**You can choose a site image to be displayed when searching for your RSS feed.** Set `rssImage = "image/url/here"` in your `config.toml` file to enable this option. + +## How to start + +You can download the theme manually by going to [https://github.com/panr/hugo-theme-hello-friend.git](https://github.com/panr/hugo-theme-hello-friend.git) and pasting it to `themes/hello-friend` in your root directory. + +You can also choose **one of the 3 possibilities** to install the theme: + +1. as Hugo Module +2. as a standalone local directory +3. as a git submodule + +⚠️ **The theme needs at least Hugo **Extended** v0.90.x**. + +### Install theme as Hugo Module + +```bash +# If this is the first time you're using Hugo Modules +# in your project. You have to initiate your own module before +# you fetch the theme module. +# +# hugo mod init [your website/module name] +hugo mod get github.com/panr/hugo-theme-hello-friend +``` + +and in your config file add: + +```toml +[module] + # this is needed when you fetch the theme as a submodule to your repo. + # replacements = "github.com/panr/hugo-theme-hello-friend -> themes/hello-friend" +[[module.imports]] + path = 'github.com/panr/hugo-theme-hello-friend' +``` + +Keep in mind that the theme by default won't show up in the `themes` directory. This means that you are using the theme as it was on the repository at the moment you fetched it. Your local `go.sum` file keeps all the references. Read more about Hugo Modules in the [official documentation](https://gohugo.io/hugo-modules/). + +⚠️ If you encounter any issues with: + +```bash +Error: module "hello-friend" not found; either add it as a Hugo Module or store it in "[...your custom path]/themes".: module does not exist +``` + +then please try to remove `theme = "hello-friend"` from your config file. + +### Install theme locally + +```bash +git clone https://github.com/panr/hugo-theme-hello-friend.git themes/hello-friend +``` + +This will clone the repository directly to the `themes/hello-friend` directory. + +### Install theme as a submodule + +```bash +git submodule add -f https://github.com/panr/hugo-theme-hello-friend.git themes/hello-friend +``` + +This will install the repository as a sumbodule in the `themes/hello-friend` directory. + +## How to run your site + +From your Hugo root directory run: + +``` +hugo server -t hello-friend +``` + +and go to `localhost:1313` in your browser. From now on all the changes you make will go live, so you don't need to refresh your browser every single time. + +## How to configure + +The theme doesn't require any advanced configuration. Just copy: + +```toml +baseurl = "/" +languageCode = "en-us" +# Add it only if you keep the theme in the `themes` directory. +# Remove it if you use the theme as a remote Hugo Module. +theme = "hello-friend" +paginate = 5 + +[params] + # dir name of your blog content (default is `content/posts`). + # the list of set content will show up on your index page (baseurl). + contentTypeName = "posts" + + # OS theme is default when not provided, but you can force it to "light" or "dark" + defaultTheme = "dark" + + # if you set this to 0, only submenu trigger will be visible + showMenuItems = 2 + + # Show reading time in minutes for posts + showReadingTime = false + + # Show table of contents at the top of your posts (defaults to false) + # Alternatively, add this param to post front matter for specific posts + # toc = true + + # Show full page content in RSS feed items + #(default is Description or Summary metadata in the front matter) + # rssFullText = true + +[languages] + [languages.en] + title = "Hello Friend" + subtitle = "A simple theme for Hugo" + keywords = "" + copyright = "" + menuMore = "Show more" + writtenBy = "Written by" + readMore = "Read more" + readOtherPosts = "Read other posts" + newerPosts = "Newer posts" + olderPosts = "Older posts" + minuteReadingTime = "min read" + dateFormatSingle = "2006-01-02" + dateFormatList = "2006-01-02" + # leave empty to disable, enter display text to enable + # lastModDisplay = "" + + [languages.en.params.logo] + logoText = "hello friend" + logoHomeLink = "/" + # or + # + # path = "/img/your-example-logo.svg" + # alt = "Your example logo alt text" + + [languages.en.menu] + [[languages.en.menu.main]] + identifier = "about" + name = "About" + url = "/about" + [[languages.en.menu.main]] + identifier = "showcase" + name = "Showcase" + url = "/showcase" +``` + +to `config.toml` file in your Hugo root directory and change params fields. In case you need, here's [a YAML version](https://gist.github.com/panr/8f9b363e358aaa33f6d353c77feee959). + +**NOTE:** Please keep in mind that currently main menu doesn't support nesting. + +## How to add a cover image to your posts + +Adding a cover image to your post is simple and there are two options when you edit your `index.md` file in `content/posts/blog-entry-xy/index.md`: + +* Use `cover = "/path/to/absolute/img.jpg"` to link an absolute image + * Resulting in `https://www.yourpage.com/path/to/absolute/img.jpg` +* Use `cover = "img.jpg"` and `useRelativeCover = true` to link the image relative to the blog post folder + * Resulting in `https://www.yourpage.com/posts/blog-entry-xy/img.jpg` +* Use `coverAlt = "description of image"` to add custom alt text to the cover image (defaults to post or page title as alt text) +* Use `coverCaption = "Image Credit to [Barry Bluejeans](https://unsplash.com/)"` to add a caption for the cover image. + +## How to display the Last Modified Date in your posts + +Add `lastModDisplay = "[your display text]"` to `config.toml` to enable last modified date on your posts. Note - an empty string value `""` does not display anything. + +Example: `lastModDisplay = "Modified:"` --> "Modified: Jan 01, 0001" + +:octocat: Hugo's `enableGitInfo` option is a nice complement to this feature. + +## How to hide "Read more" button + +In a post's front matter you have to add `hideReadMore` param set to `true`. This will result in that the post won't have "Read more" button in the list view. + +## Add-ons + +- **Archive** — Theme has built-in `archive` page for main content (see `contentTypeName` variable in config). If you need archive on your blog just copy https://github.com/panr/hugo-theme-hello-friend/blob/master/exampleSite/content/archive.md to your `content` dir. If you need multilangual archives, duplicate `content/archive.md` and add `.Lang` variable, eg: `content/archive.pl.md` (remember to change `url` in duplicated file). +- **Comments** — for adding comments to your blog posts please take a look at `layouts/partials/comments.html` https://github.com/panr/hugo-theme-terminal/blob/master/layouts/partials/comments.html. +- **Prepended ``** — if you need to add something inside `` element, and before any of the theme's ` diff --git a/themes/hello-friend/layouts/partials/comments.html b/themes/hello-friend/layouts/partials/comments.html new file mode 100644 index 0000000..8dd2afb --- /dev/null +++ b/themes/hello-friend/layouts/partials/comments.html @@ -0,0 +1,7 @@ + diff --git a/themes/hello-friend/layouts/partials/extended_footer.html b/themes/hello-friend/layouts/partials/extended_footer.html new file mode 100644 index 0000000..f2374c7 --- /dev/null +++ b/themes/hello-friend/layouts/partials/extended_footer.html @@ -0,0 +1,4 @@ + diff --git a/themes/hello-friend/layouts/partials/extended_head.html b/themes/hello-friend/layouts/partials/extended_head.html new file mode 100644 index 0000000..c422b63 --- /dev/null +++ b/themes/hello-friend/layouts/partials/extended_head.html @@ -0,0 +1,4 @@ + diff --git a/themes/hello-friend/layouts/partials/footer.html b/themes/hello-friend/layouts/partials/footer.html new file mode 100644 index 0000000..b972a48 --- /dev/null +++ b/themes/hello-friend/layouts/partials/footer.html @@ -0,0 +1,21 @@ +
+ +{{ $menu := resources.Get "js/menu.js" | js.Build }} +{{ $prism := resources.Get "js/prism.js" | js.Build }} +{{ $theme := resources.Get "js/theme.js" | js.Build }} +{{ $bundle := slice $menu $prism $theme | resources.Concat "bundle.js" | resources.Minify }} + + +{{- partial "extended_footer.html" . }} diff --git a/themes/hello-friend/layouts/partials/greater-icon.html b/themes/hello-friend/layouts/partials/greater-icon.html new file mode 100644 index 0000000..dc69bbb --- /dev/null +++ b/themes/hello-friend/layouts/partials/greater-icon.html @@ -0,0 +1,3 @@ + + + diff --git a/themes/hello-friend/layouts/partials/head.html b/themes/hello-friend/layouts/partials/head.html new file mode 100644 index 0000000..07938e1 --- /dev/null +++ b/themes/hello-friend/layouts/partials/head.html @@ -0,0 +1,48 @@ + + + + + + + + +{{- partial "prepended_head.html" . }} + + +{{ $res := resources.Get "css/style.scss" }} +{{ $style := $res | resources.ToCSS }} + + + + + + + + + + + + + + + + + +{{ template "_internal/twitter_cards.html" . }} + + +{{ template "_internal/opengraph.html" . }} + + +{{ range .AlternativeOutputFormats -}} + {{ printf `` .Rel .MediaType.Type .RelPermalink $.Site.Title | safeHTML }} +{{ end -}} + + +{{- partial "extended_head.html" . }} diff --git a/themes/hello-friend/layouts/partials/header.html b/themes/hello-friend/layouts/partials/header.html new file mode 100644 index 0000000..f7b5e75 --- /dev/null +++ b/themes/hello-friend/layouts/partials/header.html @@ -0,0 +1,19 @@ +
+ + {{ partial "logo.html" . }} + + {{ if len $.Site.Menus }} + {{ partial "menu.html" . }} + + + + + + + {{ end }} + + {{ partial "theme-icon.html" . }} + + + +
diff --git a/themes/hello-friend/layouts/partials/lastmod.html b/themes/hello-friend/layouts/partials/lastmod.html new file mode 100644 index 0000000..3f210bd --- /dev/null +++ b/themes/hello-friend/layouts/partials/lastmod.html @@ -0,0 +1,10 @@ +{{ $hourInSec := 3600 }} + +{{ if gt .Lastmod (add (time .Date).Unix $hourInSec) }} + {{ with .Lastmod }} + + ({{ $.Site.Params.LastModDisplay }} + {{ .Format ($.Site.Params.DateFormatSingle | default "2006-01-02") }}) + + {{ end }} +{{ end }} diff --git a/themes/hello-friend/layouts/partials/logo.html b/themes/hello-friend/layouts/partials/logo.html new file mode 100644 index 0000000..598006f --- /dev/null +++ b/themes/hello-friend/layouts/partials/logo.html @@ -0,0 +1,15 @@ + diff --git a/themes/hello-friend/layouts/partials/menu.html b/themes/hello-friend/layouts/partials/menu.html new file mode 100644 index 0000000..660e02e --- /dev/null +++ b/themes/hello-friend/layouts/partials/menu.html @@ -0,0 +1,42 @@ + diff --git a/themes/hello-friend/layouts/partials/pagination.html b/themes/hello-friend/layouts/partials/pagination.html new file mode 100644 index 0000000..55c8b57 --- /dev/null +++ b/themes/hello-friend/layouts/partials/pagination.html @@ -0,0 +1,20 @@ + diff --git a/themes/hello-friend/layouts/partials/postcover.html b/themes/hello-friend/layouts/partials/postcover.html new file mode 100644 index 0000000..d9e0bc6 --- /dev/null +++ b/themes/hello-friend/layouts/partials/postcover.html @@ -0,0 +1,11 @@ +
+ {{ if .Params.UseRelativeCover }} + {{ .Params.CoverAlt | plainify | default .Title }} + {{ else }} + {{ .Params.CoverAlt | plainify | default .Title }} + {{ end }} + + {{ if .Params.CoverCaption }} +
{{ .Params.CoverCaption | markdownify }}
+ {{ end }} +
diff --git a/themes/hello-friend/layouts/partials/prepended_head.html b/themes/hello-friend/layouts/partials/prepended_head.html new file mode 100644 index 0000000..03c91de --- /dev/null +++ b/themes/hello-friend/layouts/partials/prepended_head.html @@ -0,0 +1,4 @@ + diff --git a/themes/hello-friend/layouts/partials/theme-icon.html b/themes/hello-friend/layouts/partials/theme-icon.html new file mode 100644 index 0000000..c44b326 --- /dev/null +++ b/themes/hello-friend/layouts/partials/theme-icon.html @@ -0,0 +1,14 @@ + + + diff --git a/themes/hello-friend/layouts/shortcodes/code.html b/themes/hello-friend/layouts/shortcodes/code.html new file mode 100644 index 0000000..8bab825 --- /dev/null +++ b/themes/hello-friend/layouts/shortcodes/code.html @@ -0,0 +1,15 @@ +{{ $id := delimit (shuffle (seq 1 9)) "" }} + +{{ if .Get "language" }} +
+ + +
{{ .Inner | string }}
+
+{{ else }} + {{ errorf "If you want to use the \"collapsable code\" shortcode, you need to pass a mandatory \"language\" param. The issue occured in %q (%q)" .Page.File .Page.Permalink }} +{{ end }} diff --git a/themes/hello-friend/layouts/shortcodes/figure.html b/themes/hello-friend/layouts/shortcodes/figure.html new file mode 100644 index 0000000..e3c2fe2 --- /dev/null +++ b/themes/hello-friend/layouts/shortcodes/figure.html @@ -0,0 +1,8 @@ +{{ if .Get "src" }} +
+ {{ . | plainify }} + {{ if .Get "caption" }} +
{{ .Get "caption" | markdownify }}
+ {{ end }} +
+{{ end }} diff --git a/themes/hello-friend/layouts/shortcodes/image.html b/themes/hello-friend/layouts/shortcodes/image.html new file mode 100644 index 0000000..6b2a2c0 --- /dev/null +++ b/themes/hello-friend/layouts/shortcodes/image.html @@ -0,0 +1,3 @@ +{{ if .Get "src" }} + {{ . | plainify }} +{{ end }} diff --git a/themes/hello-friend/layouts/shortcodes/imgproc.html b/themes/hello-friend/layouts/shortcodes/imgproc.html new file mode 100644 index 0000000..1155796 --- /dev/null +++ b/themes/hello-friend/layouts/shortcodes/imgproc.html @@ -0,0 +1,30 @@ +{{ $original := .Page.Resources.GetMatch (printf "*%s*" (.Get 0)) }} +{{ $command := .Get 1 }} +{{ $options := .Get 2 }} +{{ $position := .Get 3 }} + +{{ if eq $command "Fit" }} + {{ .Scratch.Set "image" ($original.Fit $options) }} + {{ else if eq $command "Resize" }} + {{ .Scratch.Set "image" ($original.Resize $options) }} + {{ else if eq $command "Fill" }} + {{ .Scratch.Set "image" ($original.Fill $options) }} + {{ else }} + {{ errorf "Invalid image processing command: Must be one of Fit, Fill or Resize." }} +{{ end }} + +{{ $image := .Scratch.Get "image" }} + +
+ + {{ with .Inner }} +
+ {{ . }} +
+ {{ end }} +
diff --git a/themes/hello-friend/package.hugo.json b/themes/hello-friend/package.hugo.json new file mode 100644 index 0000000..fc2a6a2 --- /dev/null +++ b/themes/hello-friend/package.hugo.json @@ -0,0 +1,44 @@ +{ + "name": "hello-friend", + "version": "3.0.0", + "main": "index.js", + "author": "Radosław Kozieł <@panr> ", + "license": "MIT", + "scripts": { + "test": "echo 'Test'" + }, + "browserslist": [ + "last 2 versions", + ">1%", + "not dead" + ], + "comments": { + "dependencies": { + "yarn": "project" + }, + "devDependencies": { + "browserslist": "project", + "clipboard": "project", + "eslint-config-airbnb": "project", + "eslint-config-prettier": "project", + "eslint-plugin-jsx-a11y": "project", + "husky": "project" + } + }, + "dependencies": { + "yarn": "^1.22.10" + }, + "devDependencies": { + "browserslist": "^4.16.5", + "clipboard": "^2.0.4", + "eslint-config-airbnb": "^18.2.0", + "eslint-config-prettier": "^8.1.0", + "eslint-plugin-jsx-a11y": "^6.2.1", + "husky": "^5.1.3" + }, + "husky": { + "hooks": { + "pre-push": "yarn build && git add . && git commit --amend --no-edit" + } + } +} diff --git a/themes/hello-friend/package.json b/themes/hello-friend/package.json new file mode 100644 index 0000000..fc2a6a2 --- /dev/null +++ b/themes/hello-friend/package.json @@ -0,0 +1,44 @@ +{ + "name": "hello-friend", + "version": "3.0.0", + "main": "index.js", + "author": "Radosław Kozieł <@panr> ", + "license": "MIT", + "scripts": { + "test": "echo 'Test'" + }, + "browserslist": [ + "last 2 versions", + ">1%", + "not dead" + ], + "comments": { + "dependencies": { + "yarn": "project" + }, + "devDependencies": { + "browserslist": "project", + "clipboard": "project", + "eslint-config-airbnb": "project", + "eslint-config-prettier": "project", + "eslint-plugin-jsx-a11y": "project", + "husky": "project" + } + }, + "dependencies": { + "yarn": "^1.22.10" + }, + "devDependencies": { + "browserslist": "^4.16.5", + "clipboard": "^2.0.4", + "eslint-config-airbnb": "^18.2.0", + "eslint-config-prettier": "^8.1.0", + "eslint-plugin-jsx-a11y": "^6.2.1", + "husky": "^5.1.3" + }, + "husky": { + "hooks": { + "pre-push": "yarn build && git add . && git commit --amend --no-edit" + } + } +} diff --git a/themes/hello-friend/postcss.config.js b/themes/hello-friend/postcss.config.js new file mode 100644 index 0000000..95c260e --- /dev/null +++ b/themes/hello-friend/postcss.config.js @@ -0,0 +1,24 @@ +const url = require("postcss-url"); +const imports = require("postcss-import"); +const nested = require("postcss-nested"); +const postcssCustomMedia = require("postcss-custom-media"); +const postCSSPresetEnv = require("postcss-preset-env"); +const browsers = require("browserslist"); +const cssnano = require("cssnano"); +const mixins = require("postcss-mixins"); + +module.exports = () => ({ + plugins: [ + url, + imports, + mixins, + nested, + postcssCustomMedia, + postCSSPresetEnv({ + stage: 1, + }), + cssnano({ + preset: "default", + }), + ], +}); diff --git a/themes/hello-friend/static/img/apple-touch-icon-144-precomposed.png b/themes/hello-friend/static/img/apple-touch-icon-144-precomposed.png new file mode 100644 index 0000000000000000000000000000000000000000..bde2fe0c5dde9cbb6c1cddac74c0528842d35cb9 GIT binary patch literal 1389 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 literal 0 HcmV?d00001 diff --git a/themes/hello-friend/static/style.css b/themes/hello-friend/static/style.css new file mode 100644 index 0000000..e69de29 diff --git a/themes/hello-friend/theme.toml b/themes/hello-friend/theme.toml new file mode 100644 index 0000000..9afa8b2 --- /dev/null +++ b/themes/hello-friend/theme.toml @@ -0,0 +1,27 @@ +name = "hello-friend" +description = "A simple theme for Hugo. That's it." +features = ["blog", "shortcode", "syntax Highlighting"] +homepage = "https://github.com/panr/hugo-theme-hello-friend/" +license = "MIT" +licenselink = "https://github.com/panr/hugo-theme-hello-friend/blob/master/LICENSE.md" +min_version = 0.90 +tags = [ + "blog", + "clean", + "customizable", + "dark", + "highlighting", + "light", + "minimal", + "monochromatic", + "multilingual", + "personal", + "responsive", + "simple", + "technical", +] + +[author] +homepage = "https://radoslawkoziel.pl" +name = "panr" +twitter = "https://twitter.com/panr"