damnit four
16
themes/kiera/.gitignore
vendored
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
public/
|
||||||
|
npm_modules/
|
||||||
|
node_modules/
|
||||||
|
.npm
|
||||||
|
bower_components
|
||||||
|
trash
|
||||||
|
Error.log
|
||||||
|
.DS_Store
|
||||||
|
.sass-cache
|
||||||
|
.tmp
|
||||||
|
.rvmrc
|
||||||
|
.trashes
|
||||||
|
.data
|
||||||
|
.config
|
||||||
|
.hugo_build.lock
|
||||||
|
*~
|
23
themes/kiera/CHANGELOG.md
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# Thursday, 21 November 2019
|
||||||
|
* Added support for a [stackoverflow](//stackoverflow.com) icon and link (thanks @alfredocambera).
|
||||||
|
|
||||||
|
# Thursday, 7 November 2019
|
||||||
|
Changed the custom RSS feed so it only includes pages from mainSection. This will mean the feed emulates the content of the front page.
|
||||||
|
|
||||||
|
# Monday, 4 November 2019
|
||||||
|
* Fixed a small bug with displaying metadata. This change (of logic) will make the theme work as expected: if you set `meta = false` in frontmatter, meta data won't be displayed, if you set `meta = true` it will. However, this change may change sites which had worked around the previous bug.
|
||||||
|
* **NEW** support for opengraph and twitter cards. You can configure the image displayed on either a per-site basis by setting `.Site.Params.images` in the config file, or on a per-page basis in the frontmatter. For more details see [the Hugo Docs](https://gohugo.io/templates/internal/#open-graph)
|
||||||
|
|
||||||
|
# Sunday, 3 November 2019
|
||||||
|
* Added favicon support through `.Site.Params.favicon`
|
||||||
|
* [Fixed comments icon](https://github.com/funkydan2/hugo-kiera/pull/3) (thanks @tobiaszheller)
|
||||||
|
|
||||||
|
# Monday, 23 September 2019
|
||||||
|
* Custom CSS support through config.toml/yaml/json
|
||||||
|
* Fixed Customised RSS
|
||||||
|
* Implemented `partialCached` to decrease build times
|
||||||
|
* Added CSS Styling for contact form text boxes and buttons.
|
||||||
|
|
||||||
|
# Saturday, 21 September 2019
|
||||||
|
* Moved Fontawesome to use Kits
|
||||||
|
* Updated README.md
|
20
themes/kiera/LICENSE.md
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2017 b. avianto
|
||||||
|
|
||||||
|
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.
|
239
themes/kiera/README.md
Normal file
@ -0,0 +1,239 @@
|
|||||||
|
# Kiera Theme for Hugo
|
||||||
|
|
||||||
|
Kiera is the theme specialized in presenting writing layout like long essay or technical writing.
|
||||||
|
|
||||||
|
It was originally developed by [b. avianto](https://github.com/avianto/hugo-kiera) and now maintained by [funkydan2](//github.com/funkydan2/)
|
||||||
|
|
||||||
|
![Screenshot](https://github.com/funkydan2/hugo-kiera/raw/master/images/screenshot.png)
|
||||||
|
|
||||||
|
- [Kiera Theme for Hugo](#kiera-theme-for-hugo)
|
||||||
|
- [Main Features](#main-features)
|
||||||
|
- [Demo](#demo)
|
||||||
|
- [Installation](#installation)
|
||||||
|
- [Update the theme](#update-the-theme)
|
||||||
|
- [git submodule method](#git-submodule-method)
|
||||||
|
- [independent directory method](#independent-directory-method)
|
||||||
|
- [Configuration](#configuration)
|
||||||
|
- [Menus](#menus)
|
||||||
|
- [Categories & Tags](#categories--tags)
|
||||||
|
- [Images](#images)
|
||||||
|
- [Code highlight](#code-highlight)
|
||||||
|
- [Font Awesome icons](#font-awesome-icons)
|
||||||
|
- [Mathematics](#mathematics)
|
||||||
|
- [Commenting](#static-commenting)
|
||||||
|
- [Support and Pull Requests](#support-and-pull-requests)
|
||||||
|
|
||||||
|
## Main Features
|
||||||
|
- Simple, 'no-nonsense' styling.
|
||||||
|
- 4 image placements with `figure` support using shortcodes.
|
||||||
|
- (Optional) Feature images for posts and twiter cards.
|
||||||
|
- Excellent code highlight support thanks to Hugo Chroma.
|
||||||
|
- Use Font Awesome for icons.
|
||||||
|
- Utilize normalize.css for consistent styling (Cloudflare CDN).
|
||||||
|
- Use Google Fonts: Ruda (serif) and Roboto Slab (sans-serif).
|
||||||
|
- [Disqus](https://disqus.com) or [Utterances](https://utteranc.es) comments loaded on demand.
|
||||||
|
- Supports downloading extra [Google Fonts](https://fonts.google.com/).
|
||||||
|
|
||||||
|
## Demo
|
||||||
|
|
||||||
|
Live demo: [https://hugo-kiera.netlify.app/](https://hugo-kiera.netlify.app/)
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
Change into Hugo directory then:
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ cd themes
|
||||||
|
$ git clone https://github.com/funkydan2/hugo-kiera.git hugo-kiera
|
||||||
|
```
|
||||||
|
|
||||||
|
More detailed instruction at [Hugo Docs](https://gohugo.io/getting-started/).
|
||||||
|
|
||||||
|
Using `git submodule` is recommended instead of `git clone` as per recommendation from [Netlify](https://gohugo.io/hosting-and-deployment/hosting-on-netlify/#use-hugo-themes-with-netlify).
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ cd /path/to/the/root/of/your/project/themes
|
||||||
|
$ git submodule add https://github.com/funkydan2/hugo-kiera.git
|
||||||
|
```
|
||||||
|
|
||||||
|
## Update the theme
|
||||||
|
|
||||||
|
### git submodule method
|
||||||
|
|
||||||
|
Use `git` to merge latest commits into your project by running:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ cd /path/to/the/root/of/your/project/
|
||||||
|
$ git submodule update --rebase --remote
|
||||||
|
```
|
||||||
|
|
||||||
|
### independent directory method
|
||||||
|
|
||||||
|
Delete the directory corresponding to the theme and download the latest version of the theme by cloning the repo:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ cd /path/to/the/root/of/your/project/
|
||||||
|
$ rm -rf themes/hugo-kiera/
|
||||||
|
$ git clone https://github.com/funkydan2/hugo-kiera.git themes/hugo-kiera/
|
||||||
|
```
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
For reference look inside folder `exampleSite` for content example and `config.toml`.
|
||||||
|
|
||||||
|
*Important*: don't delete or move `archetypes` folder from root unless it is necessary. Current Hugo priority lookup will look into this folder first before any other `archetypes` folder and could cause problem.
|
||||||
|
|
||||||
|
Recommended optional `config.toml`:
|
||||||
|
|
||||||
|
```toml
|
||||||
|
pygmentsCodeFences = true
|
||||||
|
|
||||||
|
disqusShortname = "" #Disqus shortname
|
||||||
|
googleAnalytics = "" #Google Analytics ID
|
||||||
|
|
||||||
|
[author]
|
||||||
|
name = "" #Author name
|
||||||
|
github = "" #Github username
|
||||||
|
gitlab = "" #Gitlab username
|
||||||
|
linkedin = "" #LinkedIn username
|
||||||
|
facebook = "" #Facebook username
|
||||||
|
twitter = "" #Twitter username
|
||||||
|
instagram = "" #Instagram username
|
||||||
|
stackoverflow = "" #StackOverflow username
|
||||||
|
devto = "" #Dev.to username
|
||||||
|
|
||||||
|
[params]
|
||||||
|
tagline = "the tagline for this website"
|
||||||
|
customCSS = [] #Optional Customised CSS
|
||||||
|
disableDarkModeCSS = false # disables css style for users using dark-mode
|
||||||
|
```
|
||||||
|
|
||||||
|
### Menus
|
||||||
|
|
||||||
|
To add non-posts related page (eq. About page) to the main menu, adding these lines to the page [front matter](https://gohugo.io/content-management/front-matter/):
|
||||||
|
|
||||||
|
TOML:
|
||||||
|
|
||||||
|
```toml
|
||||||
|
menu = "main"
|
||||||
|
meta = "false"
|
||||||
|
```
|
||||||
|
|
||||||
|
YAML:
|
||||||
|
|
||||||
|
```yml
|
||||||
|
menu: "main"
|
||||||
|
meta: "false"
|
||||||
|
```
|
||||||
|
|
||||||
|
`meta` refers to time, categories, tags and reading time which are not necessary for this kind of page.
|
||||||
|
|
||||||
|
For posts listing page, add `_index.md` file inside `content\posts` folder with these front matter:
|
||||||
|
|
||||||
|
TOML:
|
||||||
|
|
||||||
|
```toml
|
||||||
|
title = "Posts"
|
||||||
|
menu = "main"
|
||||||
|
weight = "10"
|
||||||
|
```
|
||||||
|
|
||||||
|
YAML:
|
||||||
|
|
||||||
|
```yml
|
||||||
|
title : "Posts"
|
||||||
|
menu : "main"
|
||||||
|
weight : "10"
|
||||||
|
```
|
||||||
|
|
||||||
|
Following menus are available:
|
||||||
|
|
||||||
|
* `main`, displayed in the navigation bar at the top of the page
|
||||||
|
* `footer`, displayed on the lower right, in the footer
|
||||||
|
|
||||||
|
### Categories & Tags
|
||||||
|
|
||||||
|
Pages can include both, either, or neither *Categories* or *Tags*.
|
||||||
|
To link to tags use the url `/tags/` (e.g. `https://example.com/tags/`) and `/categories/` for categories.
|
||||||
|
|
||||||
|
### Images
|
||||||
|
|
||||||
|
#### Site header
|
||||||
|
|
||||||
|
A side header can be added in `config.toml`.
|
||||||
|
|
||||||
|
```
|
||||||
|
site_logo = "/link/to/image"
|
||||||
|
```
|
||||||
|
|
||||||
|
It is possible to use full width image as well, using either `/link/to/image#full` (which will affect only this image and
|
||||||
|
not the featured images for posts which may override the site header image) or `site_logo_classes = "full-image"` in `config.toml` (which
|
||||||
|
will affect all header images, even if a featured image of a post overrides the site logo).
|
||||||
|
|
||||||
|
#### Featured images for posts
|
||||||
|
|
||||||
|
A featured image for a post which will be shown in list overviews and at the top of the post page can be added in the frontmatter.
|
||||||
|
|
||||||
|
```
|
||||||
|
images: ["/link/to/image"]
|
||||||
|
```
|
||||||
|
|
||||||
|
Here, too, it is possible to display the image in full width appending `#full` or `#float` to the URL (see below).
|
||||||
|
|
||||||
|
Featured images can override the site logo on the post page, using `replace_site_logo: false` in the frontmatter.
|
||||||
|
|
||||||
|
#### Images in text
|
||||||
|
|
||||||
|
Kiera supports adding image as `img` tag with standard Markdown:
|
||||||
|
|
||||||
|
`![Image Title](link/to/image)`
|
||||||
|
|
||||||
|
to wrap it with `figure` use:
|
||||||
|
|
||||||
|
`{{< figure src="/link/to/image" >}}`
|
||||||
|
|
||||||
|
The basic placement is 100% width within content and scaled accordingly in smaller screen. Recommended width for image is 600 pixels minimum.
|
||||||
|
|
||||||
|
Kiera supports different placement by adding:
|
||||||
|
|
||||||
|
- For `img`, use `![Image Title](link/to/image#placement)`
|
||||||
|
- For `figure`, use `{{< figure src="/link/to/image" class="placement" >}}`
|
||||||
|
|
||||||
|
There are 4 configured placements
|
||||||
|
|
||||||
|
- `#full` or `class="full"` for full width.
|
||||||
|
![full](images/screenshots/full-image.png)
|
||||||
|
- `#mid` or `class="mid"` for middle:
|
||||||
|
![float-mid](images/screenshots/mid.png)
|
||||||
|
- `#float` or `class="float"` for float left:
|
||||||
|
![float-left](images/screenshots/float-left.png)
|
||||||
|
- `#float-right` or `class="float-right"` for float right:
|
||||||
|
![float-right](images/screenshots/float-right.png)
|
||||||
|
|
||||||
|
### Code highlight
|
||||||
|
|
||||||
|
Using fenced code with Chroma support.
|
||||||
|
|
||||||
|
### Font Awesome icons
|
||||||
|
|
||||||
|
For usage, refer to [Font Awesome](https://fontawesome.com/).
|
||||||
|
|
||||||
|
### Mathematics
|
||||||
|
|
||||||
|
Set `Params.mathjax` to true to enable support of mathematics display using [MathJax](https://mathjax.org/). Math should be, by default, surrounded by dollar signs and produced using LaTeX syntax. Options may be overriden using `static/js/mathjax-config.js`.
|
||||||
|
|
||||||
|
### Static Commenting
|
||||||
|
|
||||||
|
[Disqus](https://disqus.com/) comments are loaded on demand, by clicking the <kbd>View Comments</kbd> button. Disqus comments can be automatically loaded and displayed by setting `CommentAutoload = true` in `config.toml`.
|
||||||
|
|
||||||
|
[Utterances](https://utteranc.es), a Git based comment system, is also available. Utterance comments are loaded and displayed by default.
|
||||||
|
|
||||||
|
Comments can be disabled for a single page by setting `disableComments = true` in the page frontmatter.
|
||||||
|
|
||||||
|
### Last Modified Date
|
||||||
|
|
||||||
|
If the `lastmod` option is set on a page/post, either manually or because `enableGitInfo` is set to true, a line including the page's last modification will be shown after the post date.
|
||||||
|
|
||||||
|
## Support and Pull Requests
|
||||||
|
|
||||||
|
Please use GitHub issues to file bugs. If you can help fixing bugs, optimize the theme or adding features, please do pull requests, I really love to see what others can come up with.
|
8
themes/kiera/archetypes/default.md
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
+++
|
||||||
|
title = "{{ replace .TranslationBaseName "-" " " | title }}"
|
||||||
|
date = {{ .Date }}
|
||||||
|
images = []
|
||||||
|
tags = []
|
||||||
|
categories = []
|
||||||
|
draft = true
|
||||||
|
+++
|
8
themes/kiera/archetypes/posts.md
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
+++
|
||||||
|
title = "{{ replace .TranslationBaseName "-" " " | title }}"
|
||||||
|
date = {{ .Date }}
|
||||||
|
images = []
|
||||||
|
tags = []
|
||||||
|
categories = []
|
||||||
|
draft = true
|
||||||
|
+++
|
6
themes/kiera/config.toml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
baseURL = "https://example.com/"
|
||||||
|
|
||||||
|
[module]
|
||||||
|
[module.hugoVersion]
|
||||||
|
extended = false
|
||||||
|
min = "0.55.0"
|
181
themes/kiera/data/social.toml
Normal file
@ -0,0 +1,181 @@
|
|||||||
|
#credit beautifulhugo https://github.com/halogenica/beautifulhugo/blob/master/data/beautifulhugo/social.toml
|
||||||
|
|
||||||
|
[[social_icons]]
|
||||||
|
id = "email"
|
||||||
|
url = "mailto:%s"
|
||||||
|
title = "Email me"
|
||||||
|
icon = "fas fa-envelope"
|
||||||
|
|
||||||
|
[[social_icons]]
|
||||||
|
id = "facebook"
|
||||||
|
url = "https://www.facebook.com/%s"
|
||||||
|
title = "Facebook"
|
||||||
|
icon = "fab fa-facebook"
|
||||||
|
|
||||||
|
[[social_icons]]
|
||||||
|
id = "github"
|
||||||
|
url = "https://github.com/%s"
|
||||||
|
title = "GitHub"
|
||||||
|
icon = "fab fa-github"
|
||||||
|
|
||||||
|
[[social_icons]]
|
||||||
|
id = "gitlab"
|
||||||
|
url = "https://gitlab.com/%s"
|
||||||
|
title = "GitLab"
|
||||||
|
icon = "fab fa-gitlab"
|
||||||
|
|
||||||
|
[[social_icons]]
|
||||||
|
id = "bitbucket"
|
||||||
|
url = "https://bitbucket.org/%s"
|
||||||
|
title = "Bitbucket"
|
||||||
|
icon = "fab fa-bitbucket"
|
||||||
|
|
||||||
|
[[social_icons]]
|
||||||
|
id = "twitter"
|
||||||
|
url = "https://twitter.com/%s"
|
||||||
|
title = "Twitter"
|
||||||
|
icon = "fab fa-twitter"
|
||||||
|
|
||||||
|
[[social_icons]]
|
||||||
|
id = "slack"
|
||||||
|
url = "https://%s.slack.com/"
|
||||||
|
title = "Slack"
|
||||||
|
icon = "fab fa-slack"
|
||||||
|
|
||||||
|
[[social_icons]]
|
||||||
|
id = "reddit"
|
||||||
|
url = "https://reddit.com/u/%s"
|
||||||
|
title = "Reddit"
|
||||||
|
icon = "fab fa-reddit-alien"
|
||||||
|
|
||||||
|
[[social_icons]]
|
||||||
|
id = "linkedin"
|
||||||
|
url = "https://linkedin.com/in/%s"
|
||||||
|
title = "LinkedIn"
|
||||||
|
icon = "fab fa-linkedin"
|
||||||
|
|
||||||
|
[[social_icons]]
|
||||||
|
id = "xing"
|
||||||
|
url = "https://www.xing.com/profile/%s"
|
||||||
|
title = "Xing"
|
||||||
|
icon = "fab fa-xing"
|
||||||
|
|
||||||
|
[[social_icons]]
|
||||||
|
id = "stackoverflow"
|
||||||
|
url = "https://stackoverflow.com/%s"
|
||||||
|
title = "StackOverflow"
|
||||||
|
icon = "fab fa-stack-overflow"
|
||||||
|
|
||||||
|
[[social_icons]]
|
||||||
|
id = "snapchat"
|
||||||
|
url = "https://www.snapchat.com/add/%s"
|
||||||
|
title = "Snapchat"
|
||||||
|
icon = "fab fa-snapchat-ghost"
|
||||||
|
|
||||||
|
[[social_icons]]
|
||||||
|
id = "instagram"
|
||||||
|
url = "https://www.instagram.com/%s"
|
||||||
|
title = "Instagram"
|
||||||
|
icon = "fab fa-instagram"
|
||||||
|
|
||||||
|
[[social_icons]]
|
||||||
|
id = "youtube"
|
||||||
|
url = "https://www.youtube.com/%s"
|
||||||
|
title = "Youtube"
|
||||||
|
icon = "fab fa-youtube"
|
||||||
|
|
||||||
|
[[social_icons]]
|
||||||
|
id = "soundcloud"
|
||||||
|
url = "https://soundcloud.com/%s"
|
||||||
|
title = "SoundCloud"
|
||||||
|
icon = "fab fa-soundcloud"
|
||||||
|
|
||||||
|
[[social_icons]]
|
||||||
|
id = "spotify"
|
||||||
|
url = "https://open.spotify.com/user/%s"
|
||||||
|
title = "Spotify"
|
||||||
|
icon = "fab fa-spotify"
|
||||||
|
|
||||||
|
[[social_icons]]
|
||||||
|
id = "bandcamp"
|
||||||
|
url = "https://%s.bandcamp.com/"
|
||||||
|
title = "Bandcamp"
|
||||||
|
icon = "fab fa-bandcamp"
|
||||||
|
|
||||||
|
[[social_icons]]
|
||||||
|
id = "itchio"
|
||||||
|
url = "https://itch.io/profile/%s"
|
||||||
|
title = "Itch.io"
|
||||||
|
icon = "fas fa-gamepad"
|
||||||
|
|
||||||
|
[[social_icons]]
|
||||||
|
id = "keybase"
|
||||||
|
url = "https://keybase.io/%s"
|
||||||
|
title = "Keybase"
|
||||||
|
icon = "fab fa-keybase"
|
||||||
|
|
||||||
|
[[social_icons]]
|
||||||
|
id = "vk"
|
||||||
|
url = "https://vk.com/%s"
|
||||||
|
title = "VK"
|
||||||
|
icon = "fab fa-vk"
|
||||||
|
|
||||||
|
[[social_icons]]
|
||||||
|
id = "paypal"
|
||||||
|
url = "https://paypal.me/%s"
|
||||||
|
title = "PayPal"
|
||||||
|
icon = "fab fa-paypal"
|
||||||
|
|
||||||
|
[[social_icons]]
|
||||||
|
id = "telegram"
|
||||||
|
url = "https://telegram.me/%s"
|
||||||
|
title = "Telegram"
|
||||||
|
icon = "fab fa-telegram"
|
||||||
|
|
||||||
|
[[social_icons]]
|
||||||
|
id = "500px"
|
||||||
|
url = "https://500px.com/%s"
|
||||||
|
title = "500px"
|
||||||
|
icon = "fab fa-500px"
|
||||||
|
|
||||||
|
[[social_icons]]
|
||||||
|
id = "codepen"
|
||||||
|
url = "https://codepen.io/%s"
|
||||||
|
title = "CodePen"
|
||||||
|
icon = "fab fa-codepen"
|
||||||
|
|
||||||
|
[[social_icons]]
|
||||||
|
id = "kaggle"
|
||||||
|
url = "https://www.kaggle.com/%s"
|
||||||
|
title = "kaggle"
|
||||||
|
icon = "fab fa-kaggle"
|
||||||
|
|
||||||
|
[[social_icons]]
|
||||||
|
id = "mastodon"
|
||||||
|
url = "https://%s"
|
||||||
|
title = "Mastodon"
|
||||||
|
icon = "fab fa-mastodon"
|
||||||
|
|
||||||
|
[[social_icons]]
|
||||||
|
id = "weibo"
|
||||||
|
url = "https://weibo.com/%s"
|
||||||
|
title = "Weibo"
|
||||||
|
icon = "fab fa-weibo"
|
||||||
|
|
||||||
|
[[social_icons]]
|
||||||
|
id = "strava"
|
||||||
|
url = "https://www.strava.com/athletes/%s"
|
||||||
|
title = "Strava"
|
||||||
|
icon = "fab fa-strava"
|
||||||
|
|
||||||
|
[[social_icons]]
|
||||||
|
id = "orcid"
|
||||||
|
url = "https://orcid.org/%s"
|
||||||
|
title = "ORCiD"
|
||||||
|
icon = "fab fa-orcid"
|
||||||
|
|
||||||
|
[[social_icons]]
|
||||||
|
id = "devto"
|
||||||
|
url = "https://dev.to/%s"
|
||||||
|
title = "devto"
|
||||||
|
icon = "fab fa-dev"
|
18
themes/kiera/exampleSite/content/about.md
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
+++
|
||||||
|
title = "About Hugo"
|
||||||
|
date = "2014-04-09"
|
||||||
|
menu = "main"
|
||||||
|
weight = "20"
|
||||||
|
meta = "true"
|
||||||
|
+++
|
||||||
|
|
||||||
|
Hugo is a static site engine written in Go. <i class="far fa-clipboard"></i>
|
||||||
|
|
||||||
|
It makes use of a variety of open source projects including:
|
||||||
|
|
||||||
|
* [Cobra](https://github.com/spf13/cobra)
|
||||||
|
* [Viper](https://github.com/spf13/viper)
|
||||||
|
* [J Walter Weatherman](https://github.com/spf13/jWalterWeatherman)
|
||||||
|
* [Cast](https://github.com/spf13/cast)
|
||||||
|
|
||||||
|
Learn more and contribute on [GitHub](https://github.com/gohugoio).
|
5
themes/kiera/exampleSite/content/posts/_index.md
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
+++
|
||||||
|
title = "Posts"
|
||||||
|
menu = "main"
|
||||||
|
weight = "10"
|
||||||
|
+++
|
1144
themes/kiera/exampleSite/content/posts/creating-a-new-theme.md
Normal file
11
themes/kiera/exampleSite/content/posts/feature-image.md
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
+++
|
||||||
|
title = "Feature Image"
|
||||||
|
date = 2020-01-01
|
||||||
|
images = ["http://via.placeholder.com/600x200"]
|
||||||
|
tags = ["Feature Image", "Layout"]
|
||||||
|
categories = ["Images"]
|
||||||
|
+++
|
||||||
|
|
||||||
|
The Hugo Kiera theme now supports featured images. To use the feature, set the `images` parameter in a page's frontmatter.
|
||||||
|
|
||||||
|
(Note that this is required to be an array, even though only the first image is used. This is to provide compatability with the built-in [Twitter Card](https://gohugo.io/templates/internal/#twitter-cards) shortcode.)
|
344
themes/kiera/exampleSite/content/posts/goisforlovers.md
Normal file
@ -0,0 +1,344 @@
|
|||||||
|
+++
|
||||||
|
title = "(Hu)go Template Primer"
|
||||||
|
description = ""
|
||||||
|
tags = [
|
||||||
|
"go",
|
||||||
|
"golang",
|
||||||
|
"templates",
|
||||||
|
"themes",
|
||||||
|
"development",
|
||||||
|
]
|
||||||
|
date = "2014-04-02"
|
||||||
|
categories = [
|
||||||
|
"Development",
|
||||||
|
"golang",
|
||||||
|
]
|
||||||
|
images = []
|
||||||
|
+++
|
||||||
|
|
||||||
|
Hugo uses the excellent [go][] [html/template][gohtmltemplate] library for
|
||||||
|
its template engine. It is an extremely lightweight engine that provides a very
|
||||||
|
small amount of logic. In our experience that it is just the right amount of
|
||||||
|
logic to be able to create a good static website. If you have used other
|
||||||
|
template systems from different languages or frameworks you will find a lot of
|
||||||
|
similarities in go templates.
|
||||||
|
|
||||||
|
This document is a brief primer on using go templates. The [go docs][gohtmltemplate]
|
||||||
|
provide more details.
|
||||||
|
|
||||||
|
## Introduction to Go Templates
|
||||||
|
|
||||||
|
Go templates provide an extremely simple template language. It adheres to the
|
||||||
|
belief that only the most basic of logic belongs in the template or view layer.
|
||||||
|
One consequence of this simplicity is that go templates parse very quickly.
|
||||||
|
|
||||||
|
A unique characteristic of go templates is they are content aware. Variables and
|
||||||
|
content will be sanitized depending on the context of where they are used. More
|
||||||
|
details can be found in the [go docs][gohtmltemplate].
|
||||||
|
|
||||||
|
## Basic Syntax
|
||||||
|
|
||||||
|
Go lang templates are html files with the addition of variables and
|
||||||
|
functions.
|
||||||
|
|
||||||
|
**Go variables and functions are accessible within {{ }}**
|
||||||
|
|
||||||
|
Accessing a predefined variable "foo":
|
||||||
|
|
||||||
|
{{ foo }}
|
||||||
|
|
||||||
|
**Parameters are separated using spaces**
|
||||||
|
|
||||||
|
Calling the add function with input of 1, 2:
|
||||||
|
|
||||||
|
{{ add 1 2 }}
|
||||||
|
|
||||||
|
**Methods and fields are accessed via dot notation**
|
||||||
|
|
||||||
|
Accessing the Page Parameter "bar"
|
||||||
|
|
||||||
|
{{ .Params.bar }}
|
||||||
|
|
||||||
|
**Parentheses can be used to group items together**
|
||||||
|
|
||||||
|
{{ if or (isset .Params "alt") (isset .Params "caption") }} Caption {{ end }}
|
||||||
|
|
||||||
|
|
||||||
|
## Variables
|
||||||
|
|
||||||
|
Each go template has a struct (object) made available to it. In hugo each
|
||||||
|
template is passed either a page or a node struct depending on which type of
|
||||||
|
page you are rendering. More details are available on the
|
||||||
|
[variables](/layout/variables) page.
|
||||||
|
|
||||||
|
A variable is accessed by referencing the variable name.
|
||||||
|
|
||||||
|
<title>{{ .Title }}</title>
|
||||||
|
|
||||||
|
Variables can also be defined and referenced.
|
||||||
|
|
||||||
|
{{ $address := "123 Main St."}}
|
||||||
|
{{ $address }}
|
||||||
|
|
||||||
|
|
||||||
|
## Functions
|
||||||
|
|
||||||
|
Go template ship with a few functions which provide basic functionality. The go
|
||||||
|
template system also provides a mechanism for applications to extend the
|
||||||
|
available functions with their own. [Hugo template
|
||||||
|
functions](/layout/functions) provide some additional functionality we believe
|
||||||
|
are useful for building websites. Functions are called by using their name
|
||||||
|
followed by the required parameters separated by spaces. Template
|
||||||
|
functions cannot be added without recompiling hugo.
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
|
||||||
|
{{ add 1 2 }}
|
||||||
|
|
||||||
|
## Includes
|
||||||
|
|
||||||
|
When including another template you will pass to it the data it will be
|
||||||
|
able to access. To pass along the current context please remember to
|
||||||
|
include a trailing dot. The templates location will always be starting at
|
||||||
|
the /layout/ directory within Hugo.
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
|
||||||
|
{{ template "chrome/header.html" . }}
|
||||||
|
|
||||||
|
|
||||||
|
## Logic
|
||||||
|
|
||||||
|
Go templates provide the most basic iteration and conditional logic.
|
||||||
|
|
||||||
|
### Iteration
|
||||||
|
|
||||||
|
Just like in go, the go templates make heavy use of range to iterate over
|
||||||
|
a map, array or slice. The following are different examples of how to use
|
||||||
|
range.
|
||||||
|
|
||||||
|
**Example 1: Using Context**
|
||||||
|
|
||||||
|
{{ range array }}
|
||||||
|
{{ . }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
**Example 2: Declaring value variable name**
|
||||||
|
|
||||||
|
{{range $element := array}}
|
||||||
|
{{ $element }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
**Example 2: Declaring key and value variable name**
|
||||||
|
|
||||||
|
{{range $index, $element := array}}
|
||||||
|
{{ $index }}
|
||||||
|
{{ $element }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
### Conditionals
|
||||||
|
|
||||||
|
If, else, with, or, & and provide the framework for handling conditional
|
||||||
|
logic in Go Templates. Like range, each statement is closed with `end`.
|
||||||
|
|
||||||
|
|
||||||
|
Go Templates treat the following values as false:
|
||||||
|
|
||||||
|
* false
|
||||||
|
* 0
|
||||||
|
* any array, slice, map, or string of length zero
|
||||||
|
|
||||||
|
**Example 1: If**
|
||||||
|
|
||||||
|
{{ if isset .Params "title" }}<h4>{{ index .Params "title" }}</h4>{{ end }}
|
||||||
|
|
||||||
|
**Example 2: If -> Else**
|
||||||
|
|
||||||
|
{{ if isset .Params "alt" }}
|
||||||
|
{{ index .Params "alt" }}
|
||||||
|
{{else}}
|
||||||
|
{{ index .Params "caption" }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
**Example 3: And & Or**
|
||||||
|
|
||||||
|
{{ if and (or (isset .Params "title") (isset .Params "caption")) (isset .Params "attr")}}
|
||||||
|
|
||||||
|
**Example 4: With**
|
||||||
|
|
||||||
|
An alternative way of writing "if" and then referencing the same value
|
||||||
|
is to use "with" instead. With rebinds the context `.` within its scope,
|
||||||
|
and skips the block if the variable is absent.
|
||||||
|
|
||||||
|
The first example above could be simplified as:
|
||||||
|
|
||||||
|
{{ with .Params.title }}<h4>{{ . }}</h4>{{ end }}
|
||||||
|
|
||||||
|
**Example 5: If -> Else If**
|
||||||
|
|
||||||
|
{{ if isset .Params "alt" }}
|
||||||
|
{{ index .Params "alt" }}
|
||||||
|
{{ else if isset .Params "caption" }}
|
||||||
|
{{ index .Params "caption" }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
## Pipes
|
||||||
|
|
||||||
|
One of the most powerful components of go templates is the ability to
|
||||||
|
stack actions one after another. This is done by using pipes. Borrowed
|
||||||
|
from unix pipes, the concept is simple, each pipeline's output becomes the
|
||||||
|
input of the following pipe.
|
||||||
|
|
||||||
|
Because of the very simple syntax of go templates, the pipe is essential
|
||||||
|
to being able to chain together function calls. One limitation of the
|
||||||
|
pipes is that they only can work with a single value and that value
|
||||||
|
becomes the last parameter of the next pipeline.
|
||||||
|
|
||||||
|
A few simple examples should help convey how to use the pipe.
|
||||||
|
|
||||||
|
**Example 1 :**
|
||||||
|
|
||||||
|
{{ if eq 1 1 }} Same {{ end }}
|
||||||
|
|
||||||
|
is the same as
|
||||||
|
|
||||||
|
{{ eq 1 1 | if }} Same {{ end }}
|
||||||
|
|
||||||
|
It does look odd to place the if at the end, but it does provide a good
|
||||||
|
illustration of how to use the pipes.
|
||||||
|
|
||||||
|
**Example 2 :**
|
||||||
|
|
||||||
|
{{ index .Params "disqus_url" | html }}
|
||||||
|
|
||||||
|
Access the page parameter called "disqus_url" and escape the HTML.
|
||||||
|
|
||||||
|
**Example 3 :**
|
||||||
|
|
||||||
|
{{ if or (or (isset .Params "title") (isset .Params "caption")) (isset .Params "attr")}}
|
||||||
|
Stuff Here
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
Could be rewritten as
|
||||||
|
|
||||||
|
{{ isset .Params "caption" | or isset .Params "title" | or isset .Params "attr" | if }}
|
||||||
|
Stuff Here
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
|
||||||
|
## Context (aka. the dot)
|
||||||
|
|
||||||
|
The most easily overlooked concept to understand about go templates is that {{ . }}
|
||||||
|
always refers to the current context. In the top level of your template this
|
||||||
|
will be the data set made available to it. Inside of a iteration it will have
|
||||||
|
the value of the current item. When inside of a loop the context has changed. .
|
||||||
|
will no longer refer to the data available to the entire page. If you need to
|
||||||
|
access this from within the loop you will likely want to set it to a variable
|
||||||
|
instead of depending on the context.
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
|
||||||
|
{{ $title := .Site.Title }}
|
||||||
|
{{ range .Params.tags }}
|
||||||
|
<li> <a href="{{ $baseurl }}/tags/{{ . | urlize }}">{{ . }}</a> - {{ $title }} </li>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
Notice how once we have entered the loop the value of {{ . }} has changed. We
|
||||||
|
have defined a variable outside of the loop so we have access to it from within
|
||||||
|
the loop.
|
||||||
|
|
||||||
|
# Hugo Parameters
|
||||||
|
|
||||||
|
Hugo provides the option of passing values to the template language
|
||||||
|
through the site configuration (for sitewide values), or through the meta
|
||||||
|
data of each specific piece of content. You can define any values of any
|
||||||
|
type (supported by your front matter/config format) and use them however
|
||||||
|
you want to inside of your templates.
|
||||||
|
|
||||||
|
|
||||||
|
## Using Content (page) Parameters
|
||||||
|
|
||||||
|
In each piece of content you can provide variables to be used by the
|
||||||
|
templates. This happens in the [front matter](/content/front-matter).
|
||||||
|
|
||||||
|
An example of this is used in this documentation site. Most of the pages
|
||||||
|
benefit from having the table of contents provided. Sometimes the TOC just
|
||||||
|
doesn't make a lot of sense. We've defined a variable in our front matter
|
||||||
|
of some pages to turn off the TOC from being displayed.
|
||||||
|
|
||||||
|
Here is the example front matter:
|
||||||
|
|
||||||
|
```
|
||||||
|
---
|
||||||
|
title: "Permalinks"
|
||||||
|
date: "2013-11-18"
|
||||||
|
aliases:
|
||||||
|
- "/doc/permalinks/"
|
||||||
|
groups: ["extras"]
|
||||||
|
groups_weight: 30
|
||||||
|
notoc: true
|
||||||
|
---
|
||||||
|
```
|
||||||
|
|
||||||
|
Here is the corresponding code inside of the template:
|
||||||
|
|
||||||
|
{{ if not .Params.notoc }}
|
||||||
|
<div id="toc" class="well col-md-4 col-sm-6">
|
||||||
|
{{ .TableOfContents }}
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Using Site (config) Parameters
|
||||||
|
In your top-level configuration file (eg, `config.yaml`) you can define site
|
||||||
|
parameters, which are values which will be available to you in chrome.
|
||||||
|
|
||||||
|
For instance, you might declare:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
params:
|
||||||
|
CopyrightHTML: "Copyright © 2013 John Doe. All Rights Reserved."
|
||||||
|
TwitterUser: "spf13"
|
||||||
|
SidebarRecentLimit: 5
|
||||||
|
```
|
||||||
|
|
||||||
|
Within a footer layout, you might then declare a `<footer>` which is only
|
||||||
|
provided if the `CopyrightHTML` parameter is provided, and if it is given,
|
||||||
|
you would declare it to be HTML-safe, so that the HTML entity is not escaped
|
||||||
|
again. This would let you easily update just your top-level config file each
|
||||||
|
January 1st, instead of hunting through your templates.
|
||||||
|
|
||||||
|
```
|
||||||
|
{{if .Site.Params.CopyrightHTML}}<footer>
|
||||||
|
<div class="text-center">{{.Site.Params.CopyrightHTML | safeHtml}}</div>
|
||||||
|
</footer>{{end}}
|
||||||
|
```
|
||||||
|
|
||||||
|
An alternative way of writing the "if" and then referencing the same value
|
||||||
|
is to use "with" instead. With rebinds the context `.` within its scope,
|
||||||
|
and skips the block if the variable is absent:
|
||||||
|
|
||||||
|
```
|
||||||
|
{{with .Site.Params.TwitterUser}}<span class="twitter">
|
||||||
|
<a href="https://twitter.com/{{.}}" rel="author">
|
||||||
|
<img src="/images/twitter.png" width="48" height="48" title="Twitter: {{.}}"
|
||||||
|
alt="Twitter"></a>
|
||||||
|
</span>{{end}}
|
||||||
|
```
|
||||||
|
|
||||||
|
Finally, if you want to pull "magic constants" out of your layouts, you can do
|
||||||
|
so, such as in this example:
|
||||||
|
|
||||||
|
```
|
||||||
|
<nav class="recent">
|
||||||
|
<h1>Recent Posts</h1>
|
||||||
|
<ul>{{range first .Site.Params.SidebarRecentLimit .Site.Recent}}
|
||||||
|
<li><a href="{{.RelPermalink}}">{{.Title}}</a></li>
|
||||||
|
{{end}}</ul>
|
||||||
|
</nav>
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
[go]: <http://golang.org/>
|
||||||
|
[gohtmltemplate]: <http://golang.org/pkg/html/template/>
|
89
themes/kiera/exampleSite/content/posts/hugoisforlovers.md
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
+++
|
||||||
|
title = "Getting Started with Hugo"
|
||||||
|
description = ""
|
||||||
|
tags = [
|
||||||
|
"go",
|
||||||
|
"golang",
|
||||||
|
"hugo",
|
||||||
|
"development",
|
||||||
|
]
|
||||||
|
date = "2014-04-02"
|
||||||
|
categories = [
|
||||||
|
"Development",
|
||||||
|
"golang",
|
||||||
|
]
|
||||||
|
images = ""
|
||||||
|
+++
|
||||||
|
|
||||||
|
## Step 1. Install Hugo
|
||||||
|
|
||||||
|
Goto [hugo releases](https://github.com/spf13/hugo/releases) and download the
|
||||||
|
appropriate version for your os and architecture.
|
||||||
|
|
||||||
|
Save it somewhere specific as we will be using it in the next step.
|
||||||
|
|
||||||
|
More complete instructions are available at [installing hugo](/overview/installing/)
|
||||||
|
|
||||||
|
## Step 2. Build the Docs
|
||||||
|
|
||||||
|
Hugo has its own example site which happens to also be the documentation site
|
||||||
|
you are reading right now.
|
||||||
|
|
||||||
|
Follow the following steps:
|
||||||
|
|
||||||
|
1. Clone the [hugo repository](http://github.com/spf13/hugo)
|
||||||
|
2. Go into the repo
|
||||||
|
3. Run hugo in server mode and build the docs
|
||||||
|
4. Open your browser to http://localhost:1313
|
||||||
|
|
||||||
|
Corresponding pseudo commands:
|
||||||
|
|
||||||
|
git clone https://github.com/spf13/hugo
|
||||||
|
cd hugo
|
||||||
|
/path/to/where/you/installed/hugo server --source=./docs
|
||||||
|
> 29 pages created
|
||||||
|
> 0 tags index created
|
||||||
|
> in 27 ms
|
||||||
|
> Web Server is available at http://localhost:1313
|
||||||
|
> Press ctrl+c to stop
|
||||||
|
|
||||||
|
Once you've gotten here, follow along the rest of this page on your local build.
|
||||||
|
|
||||||
|
## Step 3. Change the docs site
|
||||||
|
|
||||||
|
Stop the Hugo process by hitting ctrl+c.
|
||||||
|
|
||||||
|
Now we are going to run hugo again, but this time with hugo in watch mode.
|
||||||
|
|
||||||
|
/path/to/hugo/from/step/1/hugo server --source=./docs --watch
|
||||||
|
> 29 pages created
|
||||||
|
> 0 tags index created
|
||||||
|
> in 27 ms
|
||||||
|
> Web Server is available at http://localhost:1313
|
||||||
|
> Watching for changes in /Users/spf13/Code/hugo/docs/content
|
||||||
|
> Press ctrl+c to stop
|
||||||
|
|
||||||
|
|
||||||
|
Open your [favorite editor](http://vim.spf13.com) and change one of the source
|
||||||
|
content pages. How about changing this very file to *fix the typo*. How about changing this very file to *fix the typo*.
|
||||||
|
|
||||||
|
Content files are found in `docs/content/`. Unless otherwise specified, files
|
||||||
|
are located at the same relative location as the url, in our case
|
||||||
|
`docs/content/overview/quickstart.md`.
|
||||||
|
|
||||||
|
Change and save this file.. Notice what happened in your terminal.
|
||||||
|
|
||||||
|
> Change detected, rebuilding site
|
||||||
|
|
||||||
|
> 29 pages created
|
||||||
|
> 0 tags index created
|
||||||
|
> in 26 ms
|
||||||
|
|
||||||
|
Refresh the browser and observe that the typo is now fixed.
|
||||||
|
|
||||||
|
Notice how quick that was. Try to refresh the site before it's finished building.. I double dare you.
|
||||||
|
Having nearly instant feedback enables you to have your creativity flow without waiting for long builds.
|
||||||
|
|
||||||
|
## Step 4. Have fun
|
||||||
|
|
||||||
|
The best way to learn something is to play with it.
|
50
themes/kiera/exampleSite/content/posts/image-content.md
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
+++
|
||||||
|
title = "Image Style Guide"
|
||||||
|
date = 2017-11-14T08:08:17-05:00
|
||||||
|
tags = []
|
||||||
|
categories = ["Images"]
|
||||||
|
+++
|
||||||
|
|
||||||
|
Veniam est eu adipisicing reprehenderit do sit sint elit sint. Tempor laborum ut dolore aliqua. Commodo eu qui sint magna veniam laborum. Ad cupidatat do proident ex veniam amet Lorem. Officia laboris aute fugiat id consequat culpa ullamco labore ea amet ad. Occaecat quis dolor commodo pariatur cillum et id id cupidatat officia.
|
||||||
|
|
||||||
|
Magna incididunt proident cupidatat cupidatat enim consectetur sunt. Ipsum velit aliqua ex ipsum qui labore magna. Ea nisi anim ad culpa Lorem occaecat ex cupidatat duis labore officia dolor.
|
||||||
|
|
||||||
|
{{< figure src="http://via.placeholder.com/600x200" class="full" caption="Magna sunt ut ea quis aliqua cupidatat ut quis sit aliqua tempor duis." >}}
|
||||||
|
|
||||||
|
Aliqua minim esse velit est non. Ea do irure labore aliquip culpa ex ut sunt anim duis irure. Ex adipisicing deserunt do occaecat. Incididunt esse ea tempor fugiat magna.
|
||||||
|
|
||||||
|
Voluptate elit exercitation aliqua ut elit reprehenderit aliquip anim elit laborum laborum. Elit aute sint nisi labore irure in labore culpa. Fugiat velit fugiat ea reprehenderit. Sint minim amet occaecat eu labore reprehenderit pariatur nulla.
|
||||||
|
|
||||||
|
{{< figure src="http://via.placeholder.com/600x300" class="mid" caption="Eu cupidatat ex qui do." >}}
|
||||||
|
|
||||||
|
In deserunt exercitation Lorem est nulla ullamco enim duis consequat tempor minim. Nostrud cillum ex dolore amet qui mollit do in aliquip consequat eiusmod est dolor officia. Exercitation quis cillum voluptate dolore cillum veniam minim voluptate ullamco voluptate reprehenderit deserunt elit. Et cillum sunt labore ad duis officia aute Lorem incididunt commodo ea.
|
||||||
|
|
||||||
|
Deserunt Lorem aliquip dolor et ut adipisicing nisi esse est dolore irure laborum. Excepteur dolor pariatur excepteur deserunt eiusmod laborum. Ad officia ea magna id ex. Laborum enim proident incididunt quis.
|
||||||
|
|
||||||
|
![floaty mcboaty](http://via.placeholder.com/300x400#float-right)
|
||||||
|
|
||||||
|
Elit culpa ad ex aute ullamco dolor anim do labore. Non ex do eiusmod elit occaecat. Adipisicing mollit commodo fugiat qui Lorem cupidatat laboris consectetur. Anim nostrud ullamco excepteur Lorem aliqua ullamco nisi.
|
||||||
|
|
||||||
|
Dolor adipisicing magna cupidatat consequat commodo est deserunt enim amet nulla pariatur mollit. Cupidatat officia veniam adipisicing laboris et ullamco consequat est nisi cupidatat. Quis id cillum excepteur consectetur aute excepteur ipsum magna. In ex pariatur nostrud ipsum aliqua nisi irure Lorem consectetur incididunt incididunt cillum. Fugiat ea Lorem velit voluptate cillum. Sunt incididunt proident nulla ad minim ullamco nostrud non commodo dolor enim cillum ullamco esse.
|
||||||
|
|
||||||
|
![floaty mcboaty](http://via.placeholder.com/300x400#float-left)
|
||||||
|
|
||||||
|
Do pariatur culpa labore dolore nostrud velit nostrud labore adipisicing enim laborum eu eu. Laborum nulla occaecat amet commodo ut velit. Incididunt et officia ex voluptate qui velit amet. Commodo consequat pariatur labore irure id commodo fugiat exercitation incididunt fugiat aliqua ipsum. Enim exercitation quis cillum irure duis nisi ullamco pariatur exercitation cillum amet nostrud aliquip. Adipisicing pariatur incididunt tempor sit pariatur aliquip aliqua pariatur. Eu occaecat fugiat aliqua consectetur velit incididunt nostrud enim.
|
||||||
|
|
||||||
|
Consectetur non dolore duis anim nostrud pariatur. Nisi ad pariatur est fugiat non occaecat excepteur ea amet esse. Id ullamco nisi anim ut eu reprehenderit irure ullamco. Do voluptate dolor est nostrud sit.
|
||||||
|
|
||||||
|
{{< figure src="http://via.placeholder.com/300x400" class="float-right" caption="Eu cupidatat ex qui do." >}}
|
||||||
|
|
||||||
|
Irure anim officia nostrud ad veniam reprehenderit incididunt id elit eu id sint ea laboris. Irure esse sit dolore enim nulla consequat esse id esse. Anim consequat reprehenderit incididunt sit. Incididunt incididunt eu ullamco excepteur sit qui id reprehenderit cillum eiusmod velit elit adipisicing. Pariatur et cupidatat quis sint ipsum est non. Anim sit labore ut minim id sint eu incididunt exercitation laborum laborum anim.
|
||||||
|
|
||||||
|
Sit id et irure consectetur veniam do eiusmod. Exercitation veniam labore proident laborum commodo esse culpa laboris ex laboris fugiat. Sunt ut amet tempor eiusmod exercitation laboris in qui tempor mollit culpa mollit. Eu sint consequat consectetur laboris amet dolore do labore ipsum dolor ipsum fugiat. Qui deserunt cillum nostrud dolore tempor reprehenderit reprehenderit reprehenderit.
|
||||||
|
|
||||||
|
{{< figure src="http://via.placeholder.com/300x400" class="float" caption="Eu cupidatat ex qui do." >}}
|
||||||
|
|
||||||
|
Enim anim veniam ea officia. Duis fugiat fugiat exercitation voluptate labore est est aliqua dolor incididunt eiusmod veniam. Reprehenderit sunt aute veniam anim qui sunt irure officia duis non aute labore. Aliqua reprehenderit pariatur reprehenderit voluptate excepteur ut amet sit ut duis. Ea exercitation ex ad ut dolor minim.
|
||||||
|
|
||||||
|
Lorem nostrud aute cillum ut veniam deserunt. Est commodo et id ea. Proident incididunt consequat deserunt sit do est duis. Do sint ullamco sunt cillum duis.
|
||||||
|
|
||||||
|
Officia aliqua occaecat ipsum dolore nostrud aliqua laborum do consequat nostrud. Dolor amet non ad excepteur duis Lorem aliqua aute. Lorem reprehenderit do sit minim magna nostrud Lorem officia duis.
|
||||||
|
|
||||||
|
Ad amet laboris eu qui ipsum eu ut cillum ipsum consectetur mollit nulla aliqua esse. Adipisicing et ad anim ipsum aliqua duis eiusmod. Quis ad in ea eu amet cupidatat sint eiusmod ullamco. Ullamco aliquip Lorem aliqua labore ipsum. Consectetur magna nostrud mollit nulla nostrud duis ipsum. Officia ad nulla culpa exercitation exercitation exercitation duis ipsum laboris.
|
141
themes/kiera/exampleSite/content/posts/markdown-syntax.md
Normal file
@ -0,0 +1,141 @@
|
|||||||
|
+++
|
||||||
|
author = "Hugo Authors"
|
||||||
|
title = "Markdown Syntax Guide"
|
||||||
|
date = "2019-03-11"
|
||||||
|
description = "Sample article showcasing basic Markdown syntax and formatting for HTML elements."
|
||||||
|
tags = [
|
||||||
|
"markdown",
|
||||||
|
"css",
|
||||||
|
"html",
|
||||||
|
"themes",
|
||||||
|
]
|
||||||
|
categories = ["Layout"]
|
||||||
|
+++
|
||||||
|
|
||||||
|
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.
|
||||||
|
<!--more-->
|
||||||
|
|
||||||
|
## Headings
|
||||||
|
|
||||||
|
The following HTML `<h1>`—`<h6>` elements represent six levels of section headings. `<h1>` is the highest section level while `<h6>` is the lowest.
|
||||||
|
|
||||||
|
# H1
|
||||||
|
## H2
|
||||||
|
### H3
|
||||||
|
#### H4
|
||||||
|
##### H5
|
||||||
|
###### H6
|
||||||
|
|
||||||
|
## Paragraph
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
Itatur? Quiatae cullecum rem ent aut odis in re eossequodi nonsequ idebis ne sapicia is sinveli squiatum, core et que aut hariosam ex eat.
|
||||||
|
|
||||||
|
## Blockquotes
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
#### Blockquote without attribution
|
||||||
|
|
||||||
|
> Tiam, ad mint andaepu dandae nostion secatur sequo quae.
|
||||||
|
> **Note** that you can use *Markdown syntax* within a blockquote.
|
||||||
|
|
||||||
|
#### Blockquote with attribution
|
||||||
|
|
||||||
|
> Don't communicate by sharing memory, share memory by communicating.</p>
|
||||||
|
> — <cite>Rob Pike[^1]</cite>
|
||||||
|
|
||||||
|
|
||||||
|
[^1]: The above quote is excerpted from Rob Pike's [talk](https://www.youtube.com/watch?v=PAAkCSZUG1c) during Gopherfest, November 18, 2015.
|
||||||
|
|
||||||
|
## Tables
|
||||||
|
|
||||||
|
Tables aren't part of the core Markdown spec, but Hugo supports supports them out-of-the-box.
|
||||||
|
|
||||||
|
Name | Age
|
||||||
|
--------|------
|
||||||
|
Bob | 27
|
||||||
|
Alice | 23
|
||||||
|
|
||||||
|
#### Inline Markdown within tables
|
||||||
|
|
||||||
|
| Inline | Markdown | In | Table |
|
||||||
|
| ---------- | --------- | ----------------- | ---------- |
|
||||||
|
| *italics* | **bold** | ~~strikethrough~~ | `code` |
|
||||||
|
|
||||||
|
## Code Blocks
|
||||||
|
|
||||||
|
#### Code block with backticks
|
||||||
|
|
||||||
|
```
|
||||||
|
html
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Example HTML5 Document</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>Test</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
```
|
||||||
|
#### Code block indented with four spaces
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Example HTML5 Document</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>Test</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
#### Code block with Hugo's internal highlight shortcode
|
||||||
|
{{< highlight html >}}
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Example HTML5 Document</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>Test</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
{{< /highlight >}}
|
||||||
|
|
||||||
|
## List Types
|
||||||
|
|
||||||
|
#### Ordered List
|
||||||
|
|
||||||
|
1. First item
|
||||||
|
2. Second item
|
||||||
|
3. Third item
|
||||||
|
|
||||||
|
#### Unordered List
|
||||||
|
|
||||||
|
* List item
|
||||||
|
* Another item
|
||||||
|
* And another item
|
||||||
|
|
||||||
|
#### Nested list
|
||||||
|
|
||||||
|
* Item
|
||||||
|
1. First Sub-item
|
||||||
|
2. Second Sub-item
|
||||||
|
|
||||||
|
## Other Elements — abbr, sub, sup, kbd, mark
|
||||||
|
|
||||||
|
<abbr title="Graphics Interchange Format">GIF</abbr> is a bitmap image format.
|
||||||
|
|
||||||
|
H<sub>2</sub>O
|
||||||
|
|
||||||
|
X<sup>n</sup> + Y<sup>n</sup> = Z<sup>n</sup>
|
||||||
|
|
||||||
|
Press <kbd><kbd>CTRL</kbd>+<kbd>ALT</kbd>+<kbd>Delete</kbd></kbd> to end the session.
|
||||||
|
|
||||||
|
Most <mark>salamanders</mark> are nocturnal, and hunt for insects, worms, and other small creatures.
|
10
themes/kiera/exampleSite/content/posts/maths.md
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
+++
|
||||||
|
title = "Testing Mathmatics Formatting"
|
||||||
|
date = 2024-05-28T09:00:52+10:00
|
||||||
|
tags = []
|
||||||
|
categories = ["Maths"]
|
||||||
|
+++
|
||||||
|
|
||||||
|
In `hugo.toml` you need to set either: `mathjax=true` or `katex=true` to render the below as expected.
|
||||||
|
|
||||||
|
$$ \sqrt 4 = 2 $$
|
152
themes/kiera/exampleSite/content/posts/migrate-from-jekyll.md
Normal file
@ -0,0 +1,152 @@
|
|||||||
|
---
|
||||||
|
date: 2014-03-10
|
||||||
|
linktitle: Migrating from Jekyll
|
||||||
|
title: Migrate to Hugo from Jekyll
|
||||||
|
images: ""
|
||||||
|
---
|
||||||
|
|
||||||
|
## Move static content to `static`
|
||||||
|
Jekyll has a rule that any directory not starting with `_` will be copied as-is to the `_site` output. Hugo keeps all static content under `static`. You should therefore move it all there.
|
||||||
|
With Jekyll, something that looked like
|
||||||
|
|
||||||
|
▾ <root>/
|
||||||
|
▾ images/
|
||||||
|
logo.png
|
||||||
|
|
||||||
|
should become
|
||||||
|
|
||||||
|
▾ <root>/
|
||||||
|
▾ static/
|
||||||
|
▾ images/
|
||||||
|
logo.png
|
||||||
|
|
||||||
|
Additionally, you'll want any files that should reside at the root (such as `CNAME`) to be moved to `static`.
|
||||||
|
|
||||||
|
## Create your Hugo configuration file
|
||||||
|
Hugo can read your configuration as JSON, YAML or TOML. Hugo supports parameters custom configuration too. Refer to the [Hugo configuration documentation](/overview/configuration/) for details.
|
||||||
|
|
||||||
|
## Set your configuration publish folder to `_site`
|
||||||
|
The default is for Jekyll to publish to `_site` and for Hugo to publish to `public`. If, like me, you have [`_site` mapped to a git submodule on the `gh-pages` branch](http://blog.blindgaenger.net/generate_github_pages_in_a_submodule.html), you'll want to do one of two alternatives:
|
||||||
|
|
||||||
|
1. Change your submodule to point to map `gh-pages` to public instead of `_site` (recommended).
|
||||||
|
|
||||||
|
git submodule deinit _site
|
||||||
|
git rm _site
|
||||||
|
git submodule add -b gh-pages git@github.com:your-username/your-repo.git public
|
||||||
|
|
||||||
|
2. Or, change the Hugo configuration to use `_site` instead of `public`.
|
||||||
|
|
||||||
|
{
|
||||||
|
..
|
||||||
|
"publishdir": "_site",
|
||||||
|
..
|
||||||
|
}
|
||||||
|
|
||||||
|
## Convert Jekyll templates to Hugo templates
|
||||||
|
That's the bulk of the work right here. The documentation is your friend. You should refer to [Jekyll's template documentation](http://jekyllrb.com/docs/templates/) if you need to refresh your memory on how you built your blog and [Hugo's template](/layout/templates/) to learn Hugo's way.
|
||||||
|
|
||||||
|
As a single reference data point, converting my templates for [heyitsalex.net](http://heyitsalex.net/) took me no more than a few hours.
|
||||||
|
|
||||||
|
## Convert Jekyll plugins to Hugo shortcodes
|
||||||
|
Jekyll has [plugins](http://jekyllrb.com/docs/plugins/); Hugo has [shortcodes](/doc/shortcodes/). It's fairly trivial to do a port.
|
||||||
|
|
||||||
|
### Implementation
|
||||||
|
As an example, I was using a custom [`image_tag`](https://github.com/alexandre-normand/alexandre-normand/blob/74bb12036a71334fdb7dba84e073382fc06908ec/_plugins/image_tag.rb) plugin to generate figures with caption when running Jekyll. As I read about shortcodes, I found Hugo had a nice built-in shortcode that does exactly the same thing.
|
||||||
|
|
||||||
|
Jekyll's plugin:
|
||||||
|
|
||||||
|
module Jekyll
|
||||||
|
class ImageTag < Liquid::Tag
|
||||||
|
@url = nil
|
||||||
|
@caption = nil
|
||||||
|
@class = nil
|
||||||
|
@link = nil
|
||||||
|
// Patterns
|
||||||
|
IMAGE_URL_WITH_CLASS_AND_CAPTION =
|
||||||
|
IMAGE_URL_WITH_CLASS_AND_CAPTION_AND_LINK = /(\w+)(\s+)((https?:\/\/|\/)(\S+))(\s+)"(.*?)"(\s+)->((https?:\/\/|\/)(\S+))(\s*)/i
|
||||||
|
IMAGE_URL_WITH_CAPTION = /((https?:\/\/|\/)(\S+))(\s+)"(.*?)"/i
|
||||||
|
IMAGE_URL_WITH_CLASS = /(\w+)(\s+)((https?:\/\/|\/)(\S+))/i
|
||||||
|
IMAGE_URL = /((https?:\/\/|\/)(\S+))/i
|
||||||
|
def initialize(tag_name, markup, tokens)
|
||||||
|
super
|
||||||
|
if markup =~ IMAGE_URL_WITH_CLASS_AND_CAPTION_AND_LINK
|
||||||
|
@class = $1
|
||||||
|
@url = $3
|
||||||
|
@caption = $7
|
||||||
|
@link = $9
|
||||||
|
elsif markup =~ IMAGE_URL_WITH_CLASS_AND_CAPTION
|
||||||
|
@class = $1
|
||||||
|
@url = $3
|
||||||
|
@caption = $7
|
||||||
|
elsif markup =~ IMAGE_URL_WITH_CAPTION
|
||||||
|
@url = $1
|
||||||
|
@caption = $5
|
||||||
|
elsif markup =~ IMAGE_URL_WITH_CLASS
|
||||||
|
@class = $1
|
||||||
|
@url = $3
|
||||||
|
elsif markup =~ IMAGE_URL
|
||||||
|
@url = $1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
def render(context)
|
||||||
|
if @class
|
||||||
|
source = "<figure class='#{@class}'>"
|
||||||
|
else
|
||||||
|
source = "<figure>"
|
||||||
|
end
|
||||||
|
if @link
|
||||||
|
source += "<a href=\"#{@link}\">"
|
||||||
|
end
|
||||||
|
source += "<img src=\"#{@url}\">"
|
||||||
|
if @link
|
||||||
|
source += "</a>"
|
||||||
|
end
|
||||||
|
source += "<figcaption>#{@caption}</figcaption>" if @caption
|
||||||
|
source += "</figure>"
|
||||||
|
source
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
Liquid::Template.register_tag('image', Jekyll::ImageTag)
|
||||||
|
|
||||||
|
is written as this Hugo shortcode:
|
||||||
|
|
||||||
|
<!-- image -->
|
||||||
|
<figure {{ with .Get "class" }}class="{{.}}"{{ end }}>
|
||||||
|
{{ with .Get "link"}}<a href="{{.}}">{{ end }}
|
||||||
|
<img src="{{ .Get "src" }}" {{ if or (.Get "alt") (.Get "caption") }}alt="{{ with .Get "alt"}}{{.}}{{else}}{{ .Get "caption" }}{{ end }}"{{ end }} />
|
||||||
|
{{ if .Get "link"}}</a>{{ end }}
|
||||||
|
{{ if or (or (.Get "title") (.Get "caption")) (.Get "attr")}}
|
||||||
|
<figcaption>{{ if isset .Params "title" }}
|
||||||
|
{{ .Get "title" }}{{ end }}
|
||||||
|
{{ if or (.Get "caption") (.Get "attr")}}<p>
|
||||||
|
{{ .Get "caption" }}
|
||||||
|
{{ with .Get "attrlink"}}<a href="{{.}}"> {{ end }}
|
||||||
|
{{ .Get "attr" }}
|
||||||
|
{{ if .Get "attrlink"}}</a> {{ end }}
|
||||||
|
</p> {{ end }}
|
||||||
|
</figcaption>
|
||||||
|
{{ end }}
|
||||||
|
</figure>
|
||||||
|
<!-- image -->
|
||||||
|
|
||||||
|
### Usage
|
||||||
|
I simply changed:
|
||||||
|
|
||||||
|
{% image full http://farm5.staticflickr.com/4136/4829260124_57712e570a_o_d.jpg "One of my favorite touristy-type photos. I secretly waited for the good light while we were "having fun" and took this. Only regret: a stupid pole in the top-left corner of the frame I had to clumsily get rid of at post-processing." ->http://www.flickr.com/photos/alexnormand/4829260124/in/set-72157624547713078/ %}
|
||||||
|
|
||||||
|
to this (this example uses a slightly extended version named `fig`, different than the built-in `figure`):
|
||||||
|
|
||||||
|
{{%/* fig class="full" src="http://farm5.staticflickr.com/4136/4829260124_57712e570a_o_d.jpg" title="One of my favorite touristy-type photos. I secretly waited for the good light while we were having fun and took this. Only regret: a stupid pole in the top-left corner of the frame I had to clumsily get rid of at post-processing." link="http://www.flickr.com/photos/alexnormand/4829260124/in/set-72157624547713078/" */%}}
|
||||||
|
|
||||||
|
As a bonus, the shortcode named parameters are, arguably, more readable.
|
||||||
|
|
||||||
|
## Finishing touches
|
||||||
|
### Fix content
|
||||||
|
Depending on the amount of customization that was done with each post with Jekyll, this step will require more or less effort. There are no hard and fast rules here except that `hugo server --watch` is your friend. Test your changes and fix errors as needed.
|
||||||
|
|
||||||
|
### Clean up
|
||||||
|
You'll want to remove the Jekyll configuration at this point. If you have anything else that isn't used, delete it.
|
||||||
|
|
||||||
|
## A practical example in a diff
|
||||||
|
[Hey, it's Alex](http://heyitsalex.net/) was migrated in less than a _father-with-kids day_ from Jekyll to Hugo. You can see all the changes (and screw-ups) by looking at this [diff](https://github.com/alexandre-normand/alexandre-normand/compare/869d69435bd2665c3fbf5b5c78d4c22759d7613a...b7f6605b1265e83b4b81495423294208cc74d610).
|
201
themes/kiera/exampleSite/content/posts/style-guide.md
Normal file
@ -0,0 +1,201 @@
|
|||||||
|
+++
|
||||||
|
title = "Style Guide"
|
||||||
|
date = 2017-11-14T10:57:55-05:00
|
||||||
|
tags = ["Layout"]
|
||||||
|
categories = []
|
||||||
|
meta = true
|
||||||
|
+++
|
||||||
|
|
||||||
|
# Headings
|
||||||
|
|
||||||
|
# Heading 1
|
||||||
|
|
||||||
|
## Heading 2
|
||||||
|
|
||||||
|
### Heading 3
|
||||||
|
|
||||||
|
#### Heading 4
|
||||||
|
|
||||||
|
##### Heading 5
|
||||||
|
|
||||||
|
###### Heading 6
|
||||||
|
|
||||||
|
* * *
|
||||||
|
|
||||||
|
# Headings with Text
|
||||||
|
|
||||||
|
# Heading 1
|
||||||
|
|
||||||
|
Lorem ipsum dolor sit amet, adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl.
|
||||||
|
|
||||||
|
## Heading 2
|
||||||
|
|
||||||
|
Lorem ipsum dolor sit amet, adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl.
|
||||||
|
|
||||||
|
### Heading 3
|
||||||
|
|
||||||
|
Lorem ipsum dolor sit amet, adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl.
|
||||||
|
|
||||||
|
#### Heading 4
|
||||||
|
|
||||||
|
Lorem ipsum dolor sit amet, adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl.
|
||||||
|
|
||||||
|
##### Heading 5
|
||||||
|
|
||||||
|
Lorem ipsum dolor sit amet, adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl.
|
||||||
|
|
||||||
|
###### Heading 6
|
||||||
|
|
||||||
|
Lorem ipsum dolor sit amet, adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl.
|
||||||
|
|
||||||
|
* * *
|
||||||
|
|
||||||
|
# Block Elements
|
||||||
|
|
||||||
|
## Paragraphs and Images
|
||||||
|
|
||||||
|
Moinsen! Der kess 🦄 Lichtspieltheater. Kittchen und Schwedenfilm krakelen blümerant Narr. Das flügge Personenvereinzelungsanlage dengeln. Kleintierzuchtverein und Naschkatze meucheln adrett Himmelfahrtskommando. Der gebeutelt Personenvereinzelungsanlage. Der butterweich Scharlatan. Der gemach Kokolores. Haderlump und Waldschrat abkupfern hanebüchen Lump. Der hochgestochen Stümper. Das Trinkhalle abkupfern der bierernst Eisbein. Die Lametta stibitzen der töricht Prahlhans. Die altbacken Himmelfahrtskommando. Kerbholz und Schürzenjäger erquicken garstig Schlachtschüssel. Jungfer und Herrengedeck auftakeln pompös Schnitzel. Ach du liebes Lottchen!
|
||||||
|
|
||||||
|
Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl. Praesent mattis, massa quis luctus fermentum, turpis mi volutpat justo, eu volutpat enim diam eget metus. Maecenas ornare tortor.
|
||||||
|
|
||||||
|
![Placeholder Image and Some Alt Text](https://placehold.it/350x150 "A title element for this placeholder image.")
|
||||||
|
|
||||||
|
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem.
|
||||||
|
|
||||||
|
## Blockquote
|
||||||
|
|
||||||
|
This is a standard paragraph. Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
|
||||||
|
|
||||||
|
> "**This is a blockquote**. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl."
|
||||||
|
|
||||||
|
This is a standard paragraph. Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
|
||||||
|
|
||||||
|
*Note: the [Figure-Figcaption](http://html5doctor.com/the-figure-figcaption-elements/) and [Details-Summary](http://html5doctor.com/the-details-and-summary-elements/) elements are not currently supported in markdown.*
|
||||||
|
|
||||||
|
* * *
|
||||||
|
|
||||||
|
# Text Elements
|
||||||
|
|
||||||
|
The [a element](#) and [external a element](https://example.com) examples
|
||||||
|
|
||||||
|
The <abbr>abbr element</abbr> and an <abbr title="Abbreviation">abbr</abbr> element with title examples
|
||||||
|
|
||||||
|
The <acronym title="A Cowboy Ran One New York Marathon">ACRONYM</acronym> element example
|
||||||
|
|
||||||
|
The **b element** example
|
||||||
|
|
||||||
|
The <cite>cite element</cite> example
|
||||||
|
|
||||||
|
The `code element` example
|
||||||
|
|
||||||
|
The <data value="3967381398">data element</data> example
|
||||||
|
|
||||||
|
The ~~del element~~ example
|
||||||
|
|
||||||
|
The <dfn>dfn element</dfn> and <dfn title="Title text">dfn element with title</dfn> examples
|
||||||
|
|
||||||
|
The _em element_ example
|
||||||
|
|
||||||
|
The _i element_ example
|
||||||
|
|
||||||
|
The <ins>ins element</ins> example
|
||||||
|
|
||||||
|
The <kbd>kbd element</kbd> example
|
||||||
|
|
||||||
|
The <mark>mark element</mark> example
|
||||||
|
|
||||||
|
The <q>q element</q> example
|
||||||
|
|
||||||
|
The <q>q element <q>inside</q> a q element</q> example
|
||||||
|
|
||||||
|
The <s>s element</s> example
|
||||||
|
|
||||||
|
The <samp>samp element</samp> example
|
||||||
|
|
||||||
|
The <small>small element</small> example
|
||||||
|
|
||||||
|
The <span>span element</span> example
|
||||||
|
|
||||||
|
The **strong element** example
|
||||||
|
|
||||||
|
The <sub>sub element</sub> example
|
||||||
|
|
||||||
|
The <sup>sup element</sup> example
|
||||||
|
|
||||||
|
The <time datetime="2005-05-15 19:00">time element</time> example
|
||||||
|
|
||||||
|
|
||||||
|
The <u>u element</u> example
|
||||||
|
|
||||||
|
The <var>var element</var> example
|
||||||
|
|
||||||
|
* * *
|
||||||
|
|
||||||
|
# Monospace / Preformatted
|
||||||
|
|
||||||
|
Code block wrapped in "pre" and "code" tags:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
// Loop through Divs using Javascript.
|
||||||
|
var divs = document.querySelectorAll('div'), i;
|
||||||
|
|
||||||
|
for (i = 0; i < divs.length; ++i) {
|
||||||
|
divs[i].style.color = "green";
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Monospace Text wrapped in "pre" tags:
|
||||||
|
|
||||||
|
<pre>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl.</pre>
|
||||||
|
|
||||||
|
* * *
|
||||||
|
|
||||||
|
# List Types
|
||||||
|
|
||||||
|
## Ordered List
|
||||||
|
|
||||||
|
1. List Item 1
|
||||||
|
2. List Item 2
|
||||||
|
3. List Item 3
|
||||||
|
1. List Item 3.1
|
||||||
|
2. List Item 3.2
|
||||||
|
1. List Item 3.2.1
|
||||||
|
2. List Item 3.2 2
|
||||||
|
3. List Item 3.3
|
||||||
|
4. List Item 4
|
||||||
|
|
||||||
|
## Unordered List
|
||||||
|
|
||||||
|
* List Item 1
|
||||||
|
* List Item 2
|
||||||
|
* List Item 3
|
||||||
|
* List Item 3.1
|
||||||
|
* List Item 3.2
|
||||||
|
* List Item 3.2.1
|
||||||
|
* List Item 3.2 2
|
||||||
|
* List Item 3.3
|
||||||
|
* List Item 4
|
||||||
|
|
||||||
|
## Definition List
|
||||||
|
|
||||||
|
Definition Term 1
|
||||||
|
: Definition Description 1
|
||||||
|
|
||||||
|
Definition Term 2
|
||||||
|
: Definition Description 2
|
||||||
|
|
||||||
|
* * *
|
||||||
|
|
||||||
|
# Tables
|
||||||
|
|
||||||
|
| Table Header 1 | Table Header 2 | Table Header 3 |
|
||||||
|
| -------------- | -------------- | -------------- |
|
||||||
|
| Division 1 | Division 2 | Division 3 |
|
||||||
|
| Division 1 | Division 2 | Division 3 |
|
||||||
|
| Division 1 | Division 2 | Division 3 |
|
||||||
|
|
||||||
|
* * *
|
||||||
|
|
||||||
|
# Media and Form Elements
|
||||||
|
|
||||||
|
The remaining sections contain elements that cannot be represented in markdown. Please consult [the HTML version](https://github.com/bryanbraun/poor-mans-styleguide/blob/gh-pages/index.html), to see these elements.
|
57
themes/kiera/exampleSite/hugo.toml
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
baseurl = "https://www.example.org/"
|
||||||
|
title = "Kiera"
|
||||||
|
copyright = "Copyright © 2023 - Author Name"
|
||||||
|
canonifyurls = true
|
||||||
|
theme = "hugo-kiera"
|
||||||
|
|
||||||
|
[pagination]
|
||||||
|
pagersize = 3
|
||||||
|
path = 'page'
|
||||||
|
|
||||||
|
summaryLength = 30
|
||||||
|
enableEmoji = true
|
||||||
|
pygmentsCodeFences = true
|
||||||
|
|
||||||
|
#disqusShortname = "myShortName"
|
||||||
|
|
||||||
|
# Note: to disable a social network icon delete or comment out the corresponding line
|
||||||
|
[params.author]
|
||||||
|
name = "Example"
|
||||||
|
github = "funkydan2/hugo-kiera"
|
||||||
|
#gitlab = "username"
|
||||||
|
#linkedin = "username"
|
||||||
|
#facebook = "username"
|
||||||
|
twitter = "ds_says"
|
||||||
|
#instagram = "username"
|
||||||
|
#stackoverflow = "username"
|
||||||
|
#youtube = "user/username" # or channel/channelname
|
||||||
|
#devto = "username"
|
||||||
|
|
||||||
|
[params]
|
||||||
|
tagline = "A Hugo theme for creative and technical writing"
|
||||||
|
description = "Kiera: A Hugo theme for creative and technical writing."
|
||||||
|
images = [""] #This is used for opengraph/twitter cards.
|
||||||
|
customCSS = [] #Optional Customised CSS
|
||||||
|
#favicon = ""
|
||||||
|
#utterancesRepo = "username/repository"
|
||||||
|
#utterancesIssueTerm = "pathname"
|
||||||
|
#homepageLength = 10
|
||||||
|
#commentAutoload = true #This mean reader don't need click, disqus comment autoload
|
||||||
|
mathjax = true #Enable display of mathematics using mathjax (LaTeX syntax)
|
||||||
|
#katex = true #Enable display of mathematics using katex (Faster LaTeX rendering)
|
||||||
|
#google_fonts = ["Staatliches"] # Adds additional google fonts
|
||||||
|
#disableDarkModeCSS = false # disables css style for users using dark-mode
|
||||||
|
|
||||||
|
# uncomment to enable the Tags link on the main toolbar
|
||||||
|
# [[menu.main]]
|
||||||
|
# identifier = "tags"
|
||||||
|
# name = "Tags"
|
||||||
|
# url = "/tags"
|
||||||
|
# weight = 1
|
||||||
|
|
||||||
|
# uncomment to enable the Categories link on the main toolbar
|
||||||
|
# [[menu.main]]
|
||||||
|
# identifier = "categories"
|
||||||
|
# name = "Categories"
|
||||||
|
# url = "/categories"
|
||||||
|
# weight = 1
|
0
themes/kiera/exampleSite/static/images/.gitkeep
Normal file
3
themes/kiera/go.mod
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
module github.com/funkydan2/hugo-kiera
|
||||||
|
|
||||||
|
go 1.15
|
24
themes/kiera/i18n/en.toml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
[categories]
|
||||||
|
other = "Categories:"
|
||||||
|
|
||||||
|
[readingTime]
|
||||||
|
one = "One minute read"
|
||||||
|
other = "{{.Count}} minute read"
|
||||||
|
|
||||||
|
[readMore]
|
||||||
|
other = "Read more…"
|
||||||
|
|
||||||
|
[draft]
|
||||||
|
other = "DRAFT"
|
||||||
|
|
||||||
|
[subscribe]
|
||||||
|
other = "Subscribe"
|
||||||
|
|
||||||
|
[rendered]
|
||||||
|
other = "Rendered by"
|
||||||
|
|
||||||
|
[comments]
|
||||||
|
other = "Add/View Comments"
|
||||||
|
|
||||||
|
[modifiedOn]
|
||||||
|
other = "Modified on"
|
24
themes/kiera/i18n/fa.toml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
[categories]
|
||||||
|
other = "دستهبندیها:"
|
||||||
|
|
||||||
|
[readingTime]
|
||||||
|
one = "یک دقیقه مطالعه"
|
||||||
|
other = "{{.Count}} دقیقه مطالعه"
|
||||||
|
|
||||||
|
[readMore]
|
||||||
|
other = "ادامه…"
|
||||||
|
|
||||||
|
[draft]
|
||||||
|
other = "DRAFT"
|
||||||
|
|
||||||
|
[subscribe]
|
||||||
|
other = "Subscribe"
|
||||||
|
|
||||||
|
[rendered]
|
||||||
|
other = "Rendered by"
|
||||||
|
|
||||||
|
[comments]
|
||||||
|
other = "Add/View Comments"
|
||||||
|
|
||||||
|
[modifiedOn]
|
||||||
|
other = "Modified on"
|
BIN
themes/kiera/images/screenshot.png
Normal file
After Width: | Height: | Size: 76 KiB |
BIN
themes/kiera/images/screenshots/float-left.png
Normal file
After Width: | Height: | Size: 195 KiB |
BIN
themes/kiera/images/screenshots/float-right.png
Normal file
After Width: | Height: | Size: 178 KiB |
BIN
themes/kiera/images/screenshots/full-image.png
Normal file
After Width: | Height: | Size: 338 KiB |
BIN
themes/kiera/images/screenshots/main.png
Normal file
After Width: | Height: | Size: 78 KiB |
BIN
themes/kiera/images/screenshots/mid.png
Normal file
After Width: | Height: | Size: 201 KiB |
BIN
themes/kiera/images/tn.png
Normal file
After Width: | Height: | Size: 42 KiB |
7
themes/kiera/layouts/404.html
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{{ define "main" }}
|
||||||
|
|
||||||
|
<section id="404">
|
||||||
|
<p>This is not the page you are looking for...</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{{ end }}
|
6
themes/kiera/layouts/_default/baseof.html
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{{ partial "header" . }}
|
||||||
|
|
||||||
|
{{ block "main" . }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ partialCached "footer" . }}
|
31
themes/kiera/layouts/_default/list.html
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
{{ define "main" }}
|
||||||
|
|
||||||
|
<section id="list">
|
||||||
|
|
||||||
|
{{ if eq .Data.Singular "tag" }}
|
||||||
|
<h2>#{{ .Title | lower }}</h2>
|
||||||
|
{{ else }}
|
||||||
|
<h2>{{ .Title }}</h2>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ .Content }}
|
||||||
|
|
||||||
|
{{ range (.Paginate (.Data.Pages.GroupByDate "2006")).PageGroups }}
|
||||||
|
|
||||||
|
<h3>{{ .Key }}</h3>
|
||||||
|
<ul>
|
||||||
|
{{ range .Pages }}
|
||||||
|
<li>
|
||||||
|
<a href="{{ .Permalink }}">{{ if .Draft }}{{ T "draft" }}: {{end}}{{ .Title | markdownify }}</a>
|
||||||
|
<time class="date-meta">{{ .Date.Format "Jan 2" }}</time>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{{ template "_internal/pagination.html" . }}
|
||||||
|
|
||||||
|
{{ end }}
|
30
themes/kiera/layouts/_default/rss.xml
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
{{/***
|
||||||
|
* Override the Hugo RSS feed default as that only shows a summary of the post,
|
||||||
|
* not the whole article which is what most people really want.
|
||||||
|
***/}}
|
||||||
|
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||||
|
<channel>
|
||||||
|
<title>{{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }}</title>
|
||||||
|
<link>{{ .Permalink }}</link>
|
||||||
|
<description>Recent content {{ if ne .Title .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }}</description>
|
||||||
|
<generator>Hugo -- gohugo.io</generator>{{ with .Site.LanguageCode }}
|
||||||
|
<language>{{.}}</language>{{end}}{{ with .Site.Params.Author.email }}
|
||||||
|
<managingEditor>{{.}}{{ with $.Site.Params.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with .Site.Params.Author.email }}
|
||||||
|
<webMaster>{{.}}{{ with $.Site.Params.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with .Site.Copyright }}
|
||||||
|
<copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }}
|
||||||
|
<lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }}
|
||||||
|
{{ with .OutputFormats.Get "RSS" }}
|
||||||
|
{{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }}
|
||||||
|
{{ end }}
|
||||||
|
{{ range where .Site.RegularPages "Section" "in" site.Params.mainSections }}
|
||||||
|
<item>
|
||||||
|
<title>{{ .Title }}</title>
|
||||||
|
<link>{{ .Permalink }}</link>
|
||||||
|
<pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
|
||||||
|
{{ with .Site.Params.Author.email }}<author>{{.}}{{ with $.Site.Params.Author.name }} ({{.}}){{end}}</author>{{end}}
|
||||||
|
<guid>{{ .Permalink }}</guid>
|
||||||
|
<description>{{ .Content | replaceRE `[\x00-\x1F\x7F]` "" | html}}</description>
|
||||||
|
</item>
|
||||||
|
{{ end }}
|
||||||
|
</channel>
|
||||||
|
</rss>
|
6
themes/kiera/layouts/_default/single.html
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{{ define "main" }}
|
||||||
|
|
||||||
|
{{ partial "article" . }}
|
||||||
|
{{ partial "single_footer" . }}
|
||||||
|
|
||||||
|
{{ end }}
|
19
themes/kiera/layouts/_default/terms.html
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{{ define "main" }}
|
||||||
|
|
||||||
|
<section id="list">
|
||||||
|
|
||||||
|
{{ $baseurl := .Site.BaseURL }}
|
||||||
|
|
||||||
|
<h2>{{ .Title }}</h2>
|
||||||
|
|
||||||
|
{{ .Content }}
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
{{ range $key, $value := .Data.Terms }}
|
||||||
|
<li><a href="{{ $key | urlize }}">{{ $key }}</a> <span class="count">({{ .Count }} entries)</span></li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{{ end }}
|
24
themes/kiera/layouts/index.html
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
{{ define "main" }}
|
||||||
|
|
||||||
|
<section id="home">
|
||||||
|
<ul>
|
||||||
|
{{ $pages := where site.RegularPages "Type" "posts" }}
|
||||||
|
{{ $paginator := .Paginate $pages }}
|
||||||
|
{{ range $index, $page := $paginator.Pages }}
|
||||||
|
|
||||||
|
<li {{if eq $index 0}}class="first" {{end}}>
|
||||||
|
<h1><a href="{{ $page.Permalink }}" title="{{ $page.Title }}">{{ .Title }}</a></h1>
|
||||||
|
{{ partial "aside" . }}
|
||||||
|
{{ partial "featured_image" .}}
|
||||||
|
<p>{{ .Summary }}</p>
|
||||||
|
{{ if .Truncated }}
|
||||||
|
<a href="{{ .RelPermalink }}">{{ T "readMore" }}</a>
|
||||||
|
{{ end }}
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{{ template "_internal/pagination.html" . }}
|
||||||
|
|
||||||
|
{{ end }}
|
15
themes/kiera/layouts/partials/article.html
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<article>
|
||||||
|
|
||||||
|
<h1>{{ .Title }}</h1>
|
||||||
|
|
||||||
|
{{ if or (not (isset .Params "meta")) (eq .Params.meta true) }}
|
||||||
|
{{ partial "aside" . }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ if not (.Params.replace_site_logo) }}
|
||||||
|
{{ partial "featured_image" . }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ .Content }}
|
||||||
|
|
||||||
|
</article>
|
36
themes/kiera/layouts/partials/aside.html
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
<aside>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<time class="post-date" datetime="{{ .Date.Format "2006-01-02T15:04:05Z07:00" | safeHTML }}">{{ .Date.Format "Jan 2, 2006" }}</time>
|
||||||
|
</li>
|
||||||
|
{{ if ne .Date .Lastmod }}
|
||||||
|
<li>
|
||||||
|
{{ T "modifiedOn" }} <time datetime="{{ .Lastmod.Format "2006-01-02T15:04:05Z07:00" | safeHTML }}">{{ .Lastmod.Format "Jan 2, 2006" }}</time>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
{{ if .Params.categories }}
|
||||||
|
<li>
|
||||||
|
{{ T "categories" }}
|
||||||
|
<em>
|
||||||
|
{{ range $i, $c := .Params.categories }}
|
||||||
|
{{ if $i }}, {{ end }}
|
||||||
|
<a href="{{ relLangURL ( printf "categories/%s" ( $c | urlize ) ) }}">{{ $c }}</a>
|
||||||
|
{{ end }}
|
||||||
|
</em>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ if .Params.tags }}
|
||||||
|
<li>
|
||||||
|
<em>
|
||||||
|
{{ range $i, $t := .Params.tags }}
|
||||||
|
{{ if $i }}, {{ end }}
|
||||||
|
<a href="{{ relLangURL ( printf "tags/%s" ( $t | urlize ) ) }}">#{{ $t }}</a>
|
||||||
|
{{ end }}
|
||||||
|
</em>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
<li>{{ T "readingTime" .ReadingTime }}</li>
|
||||||
|
</ul>
|
||||||
|
</aside>
|
63
themes/kiera/layouts/partials/disqus.html
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
<section class="comments-block">
|
||||||
|
<button id="show-comments" style="display: none;"><i class="fa fa-comments"></i> {{ T "comments" }}</button>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id="disqus_thread"></section>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
(function () {
|
||||||
|
// Don't ever inject Disqus on localhost--it creates unwanted
|
||||||
|
// discussions from 'localhost:1313' on your Disqus account...
|
||||||
|
if (window.location.hostname == "localhost")
|
||||||
|
return;
|
||||||
|
|
||||||
|
var disqus_loaded = false;
|
||||||
|
var disqus_shortname = '{{ .Site.Config.Services.Disqus.Shortname }}';
|
||||||
|
var disqus_button = document.getElementById("show-comments");
|
||||||
|
|
||||||
|
var disqus_autoload = {{ .Site.Params.commentAutoload }};
|
||||||
|
var disable_comment = {{ .Params.disableComments }};
|
||||||
|
|
||||||
|
if (disable_comment)
|
||||||
|
return;
|
||||||
|
|
||||||
|
disqus_button.style.display = "";
|
||||||
|
|
||||||
|
if (disqus_autoload){
|
||||||
|
disqus();
|
||||||
|
}else{
|
||||||
|
disqus_button.addEventListener("click", disqus, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
function disqus() {
|
||||||
|
|
||||||
|
if (!disqus_loaded) {
|
||||||
|
disqus_loaded = true;
|
||||||
|
|
||||||
|
var e = document.createElement("script");
|
||||||
|
e.type = "text/javascript";
|
||||||
|
e.async = true;
|
||||||
|
e.src = "//" + disqus_shortname + ".disqus.com/embed.js";
|
||||||
|
(document.getElementsByTagName("head")[0] ||
|
||||||
|
document.getElementsByTagName("body")[0])
|
||||||
|
.appendChild(e);
|
||||||
|
|
||||||
|
//Hide the button after opening
|
||||||
|
document.getElementById("show-comments").style.display = "none";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Opens comments when linked to directly
|
||||||
|
var hash = window.location.hash.substr(1);
|
||||||
|
if (hash.length > 8) {
|
||||||
|
if (hash.substring(0, 8) == "comment-") {
|
||||||
|
disqus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Remove this is you don't want to load comments for search engines
|
||||||
|
if (/bot|google|baidu|bing|msn|duckduckgo|slurp|yandex/i.test(navigator.userAgent)) {
|
||||||
|
disqus();
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
</script>
|
7
themes/kiera/layouts/partials/featured_image.html
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{{if isset .Params "images" }}
|
||||||
|
<div class="featured_image">
|
||||||
|
<a href="{{ .Permalink }}" title="{{ .Title }}">
|
||||||
|
<img src="{{ index .Params.images 0 }}">
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
27
themes/kiera/layouts/partials/footer.html
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
</main>
|
||||||
|
<footer>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<h6>{{ if .Site.Copyright }}{{ .Site.Copyright | markdownify }} | {{ end }}
|
||||||
|
{{ T "rendered" }} <a href="https://gohugo.io" title="Hugo">Hugo</a> |
|
||||||
|
<a href="{{.Site.BaseURL}}index.xml">{{ T "subscribe" }} </a></h6>
|
||||||
|
</li>
|
||||||
|
{{ $currentPage := . }}
|
||||||
|
{{ range .Site.Menus.footer }}
|
||||||
|
<li>
|
||||||
|
<h6><a class="{{if or ($currentPage.IsMenuCurrent "footer" .) ($currentPage.HasMenuCurrent "footer" .) }}active{{end}}" href="{{ .URL | relURL }}">
|
||||||
|
<i class="fa-li fa {{ .Pre }} fa-lg"></i><span>{{ .Name }}</span>
|
||||||
|
</a></h6>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
<script src="{{ "js/scripts.js" | relURL }}"></script>
|
||||||
|
{{ if .Site.Config.Services.GoogleAnalytics }}
|
||||||
|
{{ template "_internal/google_analytics.html" . }}
|
||||||
|
{{ end }}
|
||||||
|
{{ partial "user_footer" . }}
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
46
themes/kiera/layouts/partials/header.html
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
<!doctype html>
|
||||||
|
|
||||||
|
<html lang="{{ .Site.LanguageCode | default "en" }}">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<title>{{ if and (not .IsHome) (.Title) }}{{ .Params.Title }} - {{ end }}{{ .Site.Title }}</title>
|
||||||
|
{{ partial "meta" . }}
|
||||||
|
{{ partialCached "header_includes" . -}}
|
||||||
|
|
||||||
|
{{ if (templates.Exists "partials/header_supplement.html") }}
|
||||||
|
{{ partial "header_supplement.html" . -}}
|
||||||
|
{{ end }}
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div id="container">
|
||||||
|
<header>
|
||||||
|
{{ partial "site_logo" . }}
|
||||||
|
<h1>
|
||||||
|
<a href="{{ relLangURL "" }}">{{ .Site.Title | markdownify }}</a>
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
<ul id="social-media">
|
||||||
|
{{- range .Site.Languages -}}
|
||||||
|
{{ if ne .LanguageName $.Site.Language.LanguageName }}
|
||||||
|
<li><a href="/{{ .Lang }}">{{ .LanguageName }}</a></li>
|
||||||
|
{{ end }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- range .Site.Data.social.social_icons -}}
|
||||||
|
{{- if isset $.Site.Params.Author .id }}
|
||||||
|
<li>
|
||||||
|
<a href="{{ printf .url (index $.Site.Params.Author .id) }}" title="{{ .title }}">
|
||||||
|
<i class="{{ .icon }} fa-lg"></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{- end -}}
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
{{ with .Site.Params.tagline }}
|
||||||
|
<p><em>{{ . | markdownify }}</em></p>
|
||||||
|
{{ end }}
|
||||||
|
</header>
|
||||||
|
|
||||||
|
{{ partial "nav" . }}
|
||||||
|
|
||||||
|
<main>
|
32
themes/kiera/layouts/partials/header_includes.html
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
{{ with .Site.Params.favicon}}
|
||||||
|
<link rel="shortcut icon" href="{{ . }}" />
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{- if .Site.Params.mathjax }}
|
||||||
|
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||||
|
<script src="/js/mathjax-config.js" defer></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/polyfill/v3/polyfill.min.js?features=es6"></script>
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if .Site.Params.katex }}
|
||||||
|
<link rel="stylesheet" href="/css/katex.min.css" >
|
||||||
|
<script defer src="/js/katex.min.js"></script>
|
||||||
|
<script defer src="/js/auto-render.min.js" onload="renderMathInElement(document.body);"></script>
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="{{ "css/normalize.min.css" | relURL }}" />
|
||||||
|
<link rel="stylesheet" href="{{ "fontawesome/css/all.min.css" | absURL }}" />
|
||||||
|
{{ if .Site.Params.google_fonts }}
|
||||||
|
{{ $url_part := (delimit .Site.Params.google_fonts "|") | safeHTMLAttr }}
|
||||||
|
<link {{ printf "href=\"//fonts.googleapis.com/css?family=%s\"" $url_part | safeHTMLAttr }} rel="stylesheet">
|
||||||
|
{{ else}}
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto+Slab|Ruda" />
|
||||||
|
{{ end }}
|
||||||
|
{{ if .Site.Params.disableDarkModeCSS }}
|
||||||
|
<link rel="stylesheet" type="text/css" href="{{ "css/styles-light.css" | relURL}}" />
|
||||||
|
{{ else}}
|
||||||
|
<link rel="stylesheet" type="text/css" href="{{ "css/styles.css" | relURL}}" />
|
||||||
|
{{- end -}}
|
||||||
|
{{- range .Site.Params.customCSS -}}
|
||||||
|
<link rel='stylesheet' href='{{ . | absURL }}'>
|
||||||
|
{{- end -}}
|
10
themes/kiera/layouts/partials/meta.html
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
<meta name="description" content="{{ .Site.Params.description | default "The HTML5 Herald" }}" />
|
||||||
|
<meta name="author" content="{{ .Params.Author | default .Site.Params.Author.name }}" />
|
||||||
|
{{- with .OutputFormats.Get "rss" -}}
|
||||||
|
{{ printf `<link rel="%s" type="%s" href="%s" title="%s" />` .Rel .MediaType.Type .Permalink $.Site.Title | safeHTML }}
|
||||||
|
{{- end -}}
|
||||||
|
{{ template "_internal/opengraph.html" . }}
|
||||||
|
{{ template "_internal/twitter_cards.html" . }}
|
||||||
|
{{ hugo.Generator -}}
|
12
themes/kiera/layouts/partials/nav.html
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{{ $currentPage := . }}
|
||||||
|
<nav>
|
||||||
|
<ul>
|
||||||
|
{{ range .Site.Menus.main }}
|
||||||
|
<li>
|
||||||
|
<a class="{{if or ($currentPage.IsMenuCurrent "main" .) ($currentPage.HasMenuCurrent "main" .) }}active{{end}}" href="{{ .URL | relURL }}">
|
||||||
|
<i class="fa-li fa {{ .Pre }} fa-lg"></i><span>{{ .Name }}</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
</nav>
|
24
themes/kiera/layouts/partials/single_footer.html
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
{{ if not .Params.meta }}
|
||||||
|
<section class="post-nav">
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
{{ with .PrevInSection }}
|
||||||
|
<a href="{{.Permalink}}"><i class="fa fa-chevron-circle-left"></i> {{ .Title }}</a>
|
||||||
|
{{ end }}
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
{{ with .NextInSection }}
|
||||||
|
<a href="{{.Permalink}}">{{ .Title }} <i class="fa fa-chevron-circle-right"></i> </a>
|
||||||
|
{{ end }}
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
{{ if not .Params.disableComments }}
|
||||||
|
{{ if .Site.Params.UtterancesRepo }}
|
||||||
|
{{ partial "utterances" . }}
|
||||||
|
{{ end }}
|
||||||
|
{{ if .Site.Config.Services.Disqus.Shortname }}
|
||||||
|
{{ partial "disqus" . }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
7
themes/kiera/layouts/partials/site_logo.html
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{{ if or (.Site.Params.site_logo) (.Params.replace_site_logo) }}
|
||||||
|
<div class="site_logo featured_image">
|
||||||
|
<a href="{{ relLangURL "/" }}">
|
||||||
|
<img class="{{ .Site.Params.site_logo_classes }}" src="{{ if .Params.replace_site_logo }}{{ index .Params.images 0 }}{{ else }}{{ .Site.Params.site_logo }}{{ end }}">
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
0
themes/kiera/layouts/partials/user_footer.html
Normal file
29
themes/kiera/layouts/partials/utterances.html
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
<section id="utterances"></section>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||||||
|
let s = document.createElement("script");
|
||||||
|
s.setAttribute("repo", "{{ .Site.Params.utterancesRepo }}");
|
||||||
|
s.src = "https://utteranc.es/client.js";
|
||||||
|
{{ with .Site.Params.utterancesIssueTerm }}
|
||||||
|
s.setAttribute("issue-term", "{{ . }}");
|
||||||
|
{{ end }}
|
||||||
|
{{ with .Site.Params.utterancesDarkTheme }}
|
||||||
|
s.setAttribute("theme", "{{ . }}")
|
||||||
|
{{ end }}
|
||||||
|
document.getElementById("utterances").innerHTML = "";
|
||||||
|
document.getElementById("utterances").appendChild(s);
|
||||||
|
} else {
|
||||||
|
let s = document.createElement("script");
|
||||||
|
s.setAttribute("repo", "{{ .Site.Params.utterancesRepo }}");
|
||||||
|
s.src = "https://utteranc.es/client.js";
|
||||||
|
{{ with .Site.Params.utterancesIssueTerm }}
|
||||||
|
s.setAttribute("issue-term", "{{ . }}");
|
||||||
|
{{ end }}
|
||||||
|
{{ with .Site.Params.utterancesLightTheme }}
|
||||||
|
s.setAttribute("theme", "{{ . }}")
|
||||||
|
{{ end }}
|
||||||
|
document.getElementById("utterances").innerHTML = "";
|
||||||
|
document.getElementById("utterances").appendChild(s);
|
||||||
|
}
|
||||||
|
</script>
|
1
themes/kiera/static/css/katex.min.css
vendored
Normal file
2
themes/kiera/static/css/normalize.min.css
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}
|
||||||
|
/*# sourceMappingURL=normalize.min.css.map */
|
463
themes/kiera/static/css/styles-dark.css
Normal file
@ -0,0 +1,463 @@
|
|||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
overflow-x: hidden;
|
||||||
|
font-family: "Roboto Slab", serif;
|
||||||
|
color: #ffffff;
|
||||||
|
background: #2A2829;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6,
|
||||||
|
time {
|
||||||
|
font-family: "Ruda", sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
max-width: 100vw;
|
||||||
|
min-height: 100vh;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container > * {
|
||||||
|
width: 700px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 800px) {
|
||||||
|
#container > * {
|
||||||
|
width: auto;
|
||||||
|
margin: 0 1.2em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#container header {
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container header h1 {
|
||||||
|
font-size: 2.4rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container header h1 a {
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container header ul {
|
||||||
|
display: flex;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
list-style: none;
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container header ul li {
|
||||||
|
margin-left: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 800px) {
|
||||||
|
#container header ul {
|
||||||
|
float: none;
|
||||||
|
}
|
||||||
|
#container header ul li {
|
||||||
|
margin: 0 1em 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#container nav {
|
||||||
|
border-bottom: solid 3px #cecece;
|
||||||
|
padding-bottom: 0.5em;
|
||||||
|
font-family: "Ruda", sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container nav a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container nav ul {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
list-style: none;
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container nav ul li {
|
||||||
|
margin-left: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container nav ul li a.active {
|
||||||
|
border-bottom: 0.5em solid #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main {
|
||||||
|
flex: 1 0 0;
|
||||||
|
line-height: 1.5;
|
||||||
|
font-size: 1.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main section#home ul {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main section#home ul li {
|
||||||
|
margin: 0.5em 0;
|
||||||
|
padding-bottom: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main section#home ul li h2 {
|
||||||
|
margin: 0.2em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main section#home span {
|
||||||
|
color: #666666;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main section#list ul {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main section#list ul li {
|
||||||
|
padding: 0.5em 0;
|
||||||
|
border-bottom: 1px solid #cecece;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main section#list ul li time, #container main section#list ul li span.count {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main section#list ul li:last-child {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main section.post-nav ul {
|
||||||
|
margin: 0.5em 0;
|
||||||
|
padding: 0.5em 0 0;
|
||||||
|
list-style: none;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
border-top: 1px solid #f7f7f7;
|
||||||
|
font-size: 0.9em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main section.post-nav ul li:last-child {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main article > pre {
|
||||||
|
background-color: #a0a04b;
|
||||||
|
overflow-x: auto;
|
||||||
|
padding: 0.8em;
|
||||||
|
font-size: 0.9em;
|
||||||
|
box-shadow: 0 -1px 0 #bbbbbb inset;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main article .highlight pre {
|
||||||
|
overflow-x: auto;
|
||||||
|
font-size: 0.9em;
|
||||||
|
padding: 0.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main article pre code {
|
||||||
|
font-size: 0.9em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main article p code {
|
||||||
|
padding: 0.2em;
|
||||||
|
background-color: #d03232;
|
||||||
|
font-size: 0.9em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main article p kbd {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 0.2em 0.3em;
|
||||||
|
font-size: 0.8em;
|
||||||
|
line-height: 1em;
|
||||||
|
color: #555555;
|
||||||
|
vertical-align: middle;
|
||||||
|
background-color: #fcfcfc;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: #cccccc #cccccc #bbbbbb;
|
||||||
|
border-image: none;
|
||||||
|
border-radius: 3px;
|
||||||
|
box-shadow: 0 -1px 0 #bbbbbb inset;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main h1 {
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container footer {
|
||||||
|
border-top: solid 1px #cecece;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container footer h6 {
|
||||||
|
font-size: 0.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container footer ul {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
list-style: none;
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container footer ul li:first-child {
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container footer ul li:not(:first-child) {
|
||||||
|
margin-left: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container footer ul li a.active {
|
||||||
|
border-bottom: 0.2em solid #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container textarea, input {
|
||||||
|
-webkit-box-align: center;
|
||||||
|
-ms-flex-align: center;
|
||||||
|
align-items: center;
|
||||||
|
background-color: #fff;
|
||||||
|
border: 1px solid #cecece;
|
||||||
|
border-radius: 3px;
|
||||||
|
color: #000000;
|
||||||
|
/*display: -webkit-inline-box;*/
|
||||||
|
display: -ms-inline-flexbox;
|
||||||
|
display: inline-flex;
|
||||||
|
font-size: 14px;
|
||||||
|
-webkit-box-pack: start;
|
||||||
|
-ms-flex-pack: start;
|
||||||
|
justify-content: flex-start;
|
||||||
|
line-height: 24px;
|
||||||
|
padding: 8px;
|
||||||
|
position: relative;
|
||||||
|
box-shadow: inset 0 1px 2px rgba(17, 17, 17, 0.1);
|
||||||
|
max-width: 100%;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container button {
|
||||||
|
-webkit-box-align: center;
|
||||||
|
-ms-flex-align: center;
|
||||||
|
align-items: center;
|
||||||
|
border: 1px solid #d3d6db;
|
||||||
|
border-radius: 3px;
|
||||||
|
color: #666666;
|
||||||
|
/*display: -webkit-inline-box;*/
|
||||||
|
display: -ms-inline-flexbox;
|
||||||
|
display: inline-flex;
|
||||||
|
position: relative;
|
||||||
|
-webkit-box-pack: center;
|
||||||
|
-ms-flex-pack: center;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 10px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container button:hover {
|
||||||
|
border: solid #cecece 2px;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meta-aside, #container main section#home ul li aside, #container main article aside {
|
||||||
|
margin: 0.5em 0;
|
||||||
|
font-family: "Ruda", sans-serif;
|
||||||
|
color: #909090;
|
||||||
|
font-size: 0.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meta-aside ul, #container main section#home ul li aside ul, #container main article aside ul {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meta-aside ul li, #container main section#home ul li aside ul li, #container main article aside ul li {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #ffffff;
|
||||||
|
/*text-decoration: none;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
.image, figure img, img {
|
||||||
|
width: 100%;
|
||||||
|
box-shadow: 0 3px 3px #bbbbbb;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
:not(#home) and :not(#list) is avoiding full width image in list of posts, e.g. home and taxonomy pages
|
||||||
|
*/
|
||||||
|
header .full-image, header figure.full img, header img[src*="full"],
|
||||||
|
article .full-image, article figure.full img, article img[src*="full"],
|
||||||
|
section:not(#list):not(#home) .full-image, section:not(#list):not(#home) figure.full img, section:not(#list):not(#home) img[src*="full"] {
|
||||||
|
width: 100%;
|
||||||
|
box-shadow: 0 3px 3px #bbbbbb;
|
||||||
|
}
|
||||||
|
|
||||||
|
@supports (width: 100vw) {
|
||||||
|
header .full-image, header figure.full img, header img[src*="full"],
|
||||||
|
article .full-image, article figure.full img, article img[src*="full"],
|
||||||
|
section:not(#list):not(#home) .full-image, section:not(#list):not(#home) figure.full img, section:not(#list):not(#home) img[src*="full"] {
|
||||||
|
width: 100vw;
|
||||||
|
position: relative;
|
||||||
|
left: 50%;
|
||||||
|
right: 50%;
|
||||||
|
margin-left: -50vw;
|
||||||
|
margin-right: -50vw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.mid-image, figure.mid img, img[src*="mid"] {
|
||||||
|
width: 100%;
|
||||||
|
box-shadow: 0 3px 3px #bbbbbb;
|
||||||
|
}
|
||||||
|
|
||||||
|
@supports (width: 100vw) {
|
||||||
|
.mid-image, figure.mid img, img[src*="mid"] {
|
||||||
|
width: 800px;
|
||||||
|
position: relative;
|
||||||
|
left: 50%;
|
||||||
|
right: 50%;
|
||||||
|
margin-left: -400px;
|
||||||
|
margin-right: -400px;
|
||||||
|
}
|
||||||
|
@media only screen and (max-width: 800px) {
|
||||||
|
.mid-image, figure.mid img, img[src*="mid"] {
|
||||||
|
width: 100%;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.float-image, figure.float img, img[src*="float"] {
|
||||||
|
width: 300px;
|
||||||
|
float: left;
|
||||||
|
margin: 0 1em 1em -3em;
|
||||||
|
box-shadow: 0 3px 3px #bbbbbb;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 800px) {
|
||||||
|
.float-image, figure.float img, img[src*="float"] {
|
||||||
|
float: none;
|
||||||
|
margin: 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.float-image-right, figure.float-right img, img[src*="float-right"] {
|
||||||
|
width: 300px;
|
||||||
|
float: right;
|
||||||
|
margin: 0 -3em 1em 1em;
|
||||||
|
box-shadow: 0 3px 3px #bbbbbb;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 800px) {
|
||||||
|
.float-image-right, figure.float-right img, img[src*="float-right"] {
|
||||||
|
float: none;
|
||||||
|
margin: 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
figure {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
figure figcaption p {
|
||||||
|
margin-top: 0.3em;
|
||||||
|
font-size: 0.8em;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
figure.full {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
figure.mid {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
figure.float {
|
||||||
|
margin: 0;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
figure.float-right {
|
||||||
|
margin: 0;
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
figure.float-right figcaption {
|
||||||
|
margin-left: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
width: 100%;
|
||||||
|
border-bottom: solid 1px #cecece;
|
||||||
|
}
|
||||||
|
|
||||||
|
table thead {
|
||||||
|
background-color: #cecece;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote {
|
||||||
|
margin: 1em;
|
||||||
|
border-left: solid 0.1em #797979;
|
||||||
|
padding: 0.5em 2em;
|
||||||
|
position: relative;
|
||||||
|
background-color: #3e3b3c;
|
||||||
|
box-shadow: 0 -1px 0 #797979 inset;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote::before {
|
||||||
|
content: "\f10d";
|
||||||
|
font-family: "Font Awesome 5 Free";
|
||||||
|
font-weight: 900;
|
||||||
|
font-size: 3em;
|
||||||
|
color: rgba(192, 192, 192, 0.3);
|
||||||
|
position: absolute;
|
||||||
|
left: 6px;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 800px) {
|
||||||
|
blockquote {
|
||||||
|
margin: 1em 0;
|
||||||
|
padding: 0.5em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dl dd {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.pagination {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
margin: 1em 0 0;
|
||||||
|
padding: 0.5em 0;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.pagination li {
|
||||||
|
padding: 0 1em;
|
||||||
|
}
|
462
themes/kiera/static/css/styles-light.css
Normal file
@ -0,0 +1,462 @@
|
|||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
overflow-x: hidden;
|
||||||
|
font-family: "Roboto Slab", serif;
|
||||||
|
color: #333333;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6,
|
||||||
|
time {
|
||||||
|
font-family: "Ruda", sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
max-width: 100vw;
|
||||||
|
min-height: 100vh;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container > * {
|
||||||
|
width: 700px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 800px) {
|
||||||
|
#container > * {
|
||||||
|
width: auto;
|
||||||
|
margin: 0 1.2em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#container header {
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container header h1 {
|
||||||
|
font-size: 2.4rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container header h1 a {
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container header ul {
|
||||||
|
display: flex;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
list-style: none;
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container header ul li {
|
||||||
|
margin-left: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 800px) {
|
||||||
|
#container header ul {
|
||||||
|
float: none;
|
||||||
|
}
|
||||||
|
#container header ul li {
|
||||||
|
margin: 0 1em 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#container nav {
|
||||||
|
border-bottom: solid 3px #cecece;
|
||||||
|
padding-bottom: 0.5em;
|
||||||
|
font-family: "Ruda", sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container nav a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container nav ul {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
list-style: none;
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container nav ul li {
|
||||||
|
margin-left: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container nav ul li a.active {
|
||||||
|
border-bottom: 0.5em solid #666666;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main {
|
||||||
|
flex: 1 0 0;
|
||||||
|
line-height: 1.5;
|
||||||
|
font-size: 1.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main section#home ul {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main section#home ul li {
|
||||||
|
margin: 0.5em 0;
|
||||||
|
padding-bottom: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main section#home ul li h2 {
|
||||||
|
margin: 0.2em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main section#home span {
|
||||||
|
color: #666666;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main section#list ul {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main section#list ul li {
|
||||||
|
padding: 0.5em 0;
|
||||||
|
border-bottom: 1px solid #cecece;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main section#list ul li time, #container main section#list ul li span.count {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main section#list ul li:last-child {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main section.post-nav ul {
|
||||||
|
margin: 0.5em 0;
|
||||||
|
padding: 0.5em 0 0;
|
||||||
|
list-style: none;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
border-top: 1px solid #f7f7f7;
|
||||||
|
font-size: 0.9em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main section.post-nav ul li:last-child {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main article > pre {
|
||||||
|
background-color: #ffffcc;
|
||||||
|
overflow-x: auto;
|
||||||
|
padding: 0.8em;
|
||||||
|
font-size: 0.9em;
|
||||||
|
box-shadow: 0 -1px 0 #bbbbbb inset;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main article .highlight pre {
|
||||||
|
overflow-x: auto;
|
||||||
|
font-size: 0.9em;
|
||||||
|
padding: 0.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main article pre code {
|
||||||
|
font-size: 0.9em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main article p code {
|
||||||
|
padding: 0.2em;
|
||||||
|
background-color: #ffcccc;
|
||||||
|
font-size: 0.9em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main article p kbd {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 0.2em 0.3em;
|
||||||
|
font-size: 0.8em;
|
||||||
|
line-height: 1em;
|
||||||
|
color: #555555;
|
||||||
|
vertical-align: middle;
|
||||||
|
background-color: #fcfcfc;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: #cccccc #cccccc #bbbbbb;
|
||||||
|
border-image: none;
|
||||||
|
border-radius: 3px;
|
||||||
|
box-shadow: 0 -1px 0 #bbbbbb inset;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container main h1 {
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container footer {
|
||||||
|
border-top: solid 1px #cecece;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container footer h6 {
|
||||||
|
font-size: 0.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container footer ul {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
list-style: none;
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container footer ul li:first-child {
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container footer ul li:not(:first-child) {
|
||||||
|
margin-left: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container footer ul li a.active {
|
||||||
|
border-bottom: 0.2em solid #666666;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container textarea, input {
|
||||||
|
-webkit-box-align: center;
|
||||||
|
-ms-flex-align: center;
|
||||||
|
align-items: center;
|
||||||
|
background-color: #fff;
|
||||||
|
border: 1px solid #cecece;
|
||||||
|
border-radius: 3px;
|
||||||
|
color: #000000;
|
||||||
|
/*display: -webkit-inline-box;*/
|
||||||
|
display: -ms-inline-flexbox;
|
||||||
|
display: inline-flex;
|
||||||
|
font-size: 14px;
|
||||||
|
-webkit-box-pack: start;
|
||||||
|
-ms-flex-pack: start;
|
||||||
|
justify-content: flex-start;
|
||||||
|
line-height: 24px;
|
||||||
|
padding: 8px;
|
||||||
|
position: relative;
|
||||||
|
box-shadow: inset 0 1px 2px rgba(17, 17, 17, 0.1);
|
||||||
|
max-width: 100%;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container button {
|
||||||
|
-webkit-box-align: center;
|
||||||
|
-ms-flex-align: center;
|
||||||
|
align-items: center;
|
||||||
|
border: 1px solid #d3d6db;
|
||||||
|
border-radius: 3px;
|
||||||
|
color: #666666;
|
||||||
|
/*display: -webkit-inline-box;*/
|
||||||
|
display: -ms-inline-flexbox;
|
||||||
|
display: inline-flex;
|
||||||
|
position: relative;
|
||||||
|
-webkit-box-pack: center;
|
||||||
|
-ms-flex-pack: center;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 10px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#container button:hover {
|
||||||
|
border: solid #cecece 2px;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meta-aside, #container main section#home ul li aside, #container main article aside {
|
||||||
|
margin: 0.5em 0;
|
||||||
|
font-family: "Ruda", sans-serif;
|
||||||
|
color: #909090;
|
||||||
|
font-size: 0.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meta-aside ul, #container main section#home ul li aside ul, #container main article aside ul {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meta-aside ul li, #container main section#home ul li aside ul li, #container main article aside ul li {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #666666;
|
||||||
|
/*text-decoration: none;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
.image, figure img, img {
|
||||||
|
width: 100%;
|
||||||
|
box-shadow: 0 3px 3px #bbbbbb;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
:not(#home) and :not(#list) is avoiding full width image in list of posts, e.g. home and taxonomy pages
|
||||||
|
*/
|
||||||
|
header .full-image, header figure.full img, header img[src*="full"],
|
||||||
|
article .full-image, article figure.full img, article img[src*="full"],
|
||||||
|
section:not(#list):not(#home) .full-image, section:not(#list):not(#home) figure.full img, section:not(#list):not(#home) img[src*="full"] {
|
||||||
|
width: 100%;
|
||||||
|
box-shadow: 0 3px 3px #bbbbbb;
|
||||||
|
}
|
||||||
|
|
||||||
|
@supports (width: 100vw) {
|
||||||
|
header .full-image, header figure.full img, header img[src*="full"],
|
||||||
|
article .full-image, article figure.full img, article img[src*="full"],
|
||||||
|
section:not(#list):not(#home) .full-image, section:not(#list):not(#home) figure.full img, section:not(#list):not(#home) img[src*="full"] {
|
||||||
|
width: 100vw;
|
||||||
|
position: relative;
|
||||||
|
left: 50%;
|
||||||
|
right: 50%;
|
||||||
|
margin-left: -50vw;
|
||||||
|
margin-right: -50vw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.mid-image, figure.mid img, img[src*="mid"] {
|
||||||
|
width: 100%;
|
||||||
|
box-shadow: 0 3px 3px #bbbbbb;
|
||||||
|
}
|
||||||
|
|
||||||
|
@supports (width: 100vw) {
|
||||||
|
.mid-image, figure.mid img, img[src*="mid"] {
|
||||||
|
width: 800px;
|
||||||
|
position: relative;
|
||||||
|
left: 50%;
|
||||||
|
right: 50%;
|
||||||
|
margin-left: -400px;
|
||||||
|
margin-right: -400px;
|
||||||
|
}
|
||||||
|
@media only screen and (max-width: 800px) {
|
||||||
|
.mid-image, figure.mid img, img[src*="mid"] {
|
||||||
|
width: 100%;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.float-image, figure.float img, img[src*="float"] {
|
||||||
|
width: 300px;
|
||||||
|
float: left;
|
||||||
|
margin: 0 1em 1em -3em;
|
||||||
|
box-shadow: 0 3px 3px #bbbbbb;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 800px) {
|
||||||
|
.float-image, figure.float img, img[src*="float"] {
|
||||||
|
float: none;
|
||||||
|
margin: 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.float-image-right, figure.float-right img, img[src*="float-right"] {
|
||||||
|
width: 300px;
|
||||||
|
float: right;
|
||||||
|
margin: 0 -3em 1em 1em;
|
||||||
|
box-shadow: 0 3px 3px #bbbbbb;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 800px) {
|
||||||
|
.float-image-right, figure.float-right img, img[src*="float-right"] {
|
||||||
|
float: none;
|
||||||
|
margin: 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
figure {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
figure figcaption p {
|
||||||
|
margin-top: 0.3em;
|
||||||
|
font-size: 0.8em;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
figure.full {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
figure.mid {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
figure.float {
|
||||||
|
margin: 0;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
figure.float-right {
|
||||||
|
margin: 0;
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
figure.float-right figcaption {
|
||||||
|
margin-left: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
width: 100%;
|
||||||
|
border-bottom: solid 1px #cecece;
|
||||||
|
}
|
||||||
|
|
||||||
|
table thead {
|
||||||
|
background-color: #cecece;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote {
|
||||||
|
margin: 1em;
|
||||||
|
border-left: solid 0.1em #cecece;
|
||||||
|
padding: 0.5em 2em;
|
||||||
|
position: relative;
|
||||||
|
background-color: #efefef;
|
||||||
|
box-shadow: 0 -1px 0 #bbbbbb inset;
|
||||||
|
}
|
||||||
|
|
||||||
|
blockquote::before {
|
||||||
|
content: "\f10d";
|
||||||
|
font-family: "Font Awesome 5 Free";
|
||||||
|
font-weight: 900;
|
||||||
|
font-size: 3em;
|
||||||
|
color: rgba(192, 192, 192, 0.3);
|
||||||
|
position: absolute;
|
||||||
|
left: 6px;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 800px) {
|
||||||
|
blockquote {
|
||||||
|
margin: 1em 0;
|
||||||
|
padding: 0.5em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dl dd {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.pagination {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
margin: 1em 0 0;
|
||||||
|
padding: 0.5em 0;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.pagination li {
|
||||||
|
padding: 0 1em;
|
||||||
|
}
|
2
themes/kiera/static/css/styles.css
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
@import url(./styles-light.css);
|
||||||
|
@import url(./styles-dark.css) (prefers-color-scheme: dark);
|
165
themes/kiera/static/fontawesome/LICENSE.txt
Normal file
@ -0,0 +1,165 @@
|
|||||||
|
Fonticons, Inc. (https://fontawesome.com)
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Font Awesome Free License
|
||||||
|
|
||||||
|
Font Awesome Free is free, open source, and GPL friendly. You can use it for
|
||||||
|
commercial projects, open source projects, or really almost whatever you want.
|
||||||
|
Full Font Awesome Free license: https://fontawesome.com/license/free.
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/)
|
||||||
|
|
||||||
|
The Font Awesome Free download is licensed under a Creative Commons
|
||||||
|
Attribution 4.0 International License and applies to all icons packaged
|
||||||
|
as SVG and JS file types.
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Fonts: SIL OFL 1.1 License
|
||||||
|
|
||||||
|
In the Font Awesome Free download, the SIL OFL license applies to all icons
|
||||||
|
packaged as web and desktop font files.
|
||||||
|
|
||||||
|
Copyright (c) 2023 Fonticons, Inc. (https://fontawesome.com)
|
||||||
|
with Reserved Font Name: "Font Awesome".
|
||||||
|
|
||||||
|
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||||
|
This license is copied below, and is also available with a FAQ at:
|
||||||
|
http://scripts.sil.org/OFL
|
||||||
|
|
||||||
|
SIL OPEN FONT LICENSE
|
||||||
|
Version 1.1 - 26 February 2007
|
||||||
|
|
||||||
|
PREAMBLE
|
||||||
|
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||||
|
development of collaborative font projects, to support the font creation
|
||||||
|
efforts of academic and linguistic communities, and to provide a free and
|
||||||
|
open framework in which fonts may be shared and improved in partnership
|
||||||
|
with others.
|
||||||
|
|
||||||
|
The OFL allows the licensed fonts to be used, studied, modified and
|
||||||
|
redistributed freely as long as they are not sold by themselves. The
|
||||||
|
fonts, including any derivative works, can be bundled, embedded,
|
||||||
|
redistributed and/or sold with any software provided that any reserved
|
||||||
|
names are not used by derivative works. The fonts and derivatives,
|
||||||
|
however, cannot be released under any other type of license. The
|
||||||
|
requirement for fonts to remain under this license does not apply
|
||||||
|
to any document created using the fonts or their derivatives.
|
||||||
|
|
||||||
|
DEFINITIONS
|
||||||
|
"Font Software" refers to the set of files released by the Copyright
|
||||||
|
Holder(s) under this license and clearly marked as such. This may
|
||||||
|
include source files, build scripts and documentation.
|
||||||
|
|
||||||
|
"Reserved Font Name" refers to any names specified as such after the
|
||||||
|
copyright statement(s).
|
||||||
|
|
||||||
|
"Original Version" refers to the collection of Font Software components as
|
||||||
|
distributed by the Copyright Holder(s).
|
||||||
|
|
||||||
|
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||||
|
or substituting — in part or in whole — any of the components of the
|
||||||
|
Original Version, by changing formats or by porting the Font Software to a
|
||||||
|
new environment.
|
||||||
|
|
||||||
|
"Author" refers to any designer, engineer, programmer, technical
|
||||||
|
writer or other person who contributed to the Font Software.
|
||||||
|
|
||||||
|
PERMISSION & CONDITIONS
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||||
|
redistribute, and sell modified and unmodified copies of the Font
|
||||||
|
Software, subject to the following conditions:
|
||||||
|
|
||||||
|
1) Neither the Font Software nor any of its individual components,
|
||||||
|
in Original or Modified Versions, may be sold by itself.
|
||||||
|
|
||||||
|
2) Original or Modified Versions of the Font Software may be bundled,
|
||||||
|
redistributed and/or sold with any software, provided that each copy
|
||||||
|
contains the above copyright notice and this license. These can be
|
||||||
|
included either as stand-alone text files, human-readable headers or
|
||||||
|
in the appropriate machine-readable metadata fields within text or
|
||||||
|
binary files as long as those fields can be easily viewed by the user.
|
||||||
|
|
||||||
|
3) No Modified Version of the Font Software may use the Reserved Font
|
||||||
|
Name(s) unless explicit written permission is granted by the corresponding
|
||||||
|
Copyright Holder. This restriction only applies to the primary font name as
|
||||||
|
presented to the users.
|
||||||
|
|
||||||
|
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||||
|
Software shall not be used to promote, endorse or advertise any
|
||||||
|
Modified Version, except to acknowledge the contribution(s) of the
|
||||||
|
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||||
|
permission.
|
||||||
|
|
||||||
|
5) The Font Software, modified or unmodified, in part or in whole,
|
||||||
|
must be distributed entirely under this license, and must not be
|
||||||
|
distributed under any other license. The requirement for fonts to
|
||||||
|
remain under this license does not apply to any document created
|
||||||
|
using the Font Software.
|
||||||
|
|
||||||
|
TERMINATION
|
||||||
|
This license becomes null and void if any of the above conditions are
|
||||||
|
not met.
|
||||||
|
|
||||||
|
DISCLAIMER
|
||||||
|
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||||
|
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||||
|
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||||
|
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||||
|
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Code: MIT License (https://opensource.org/licenses/MIT)
|
||||||
|
|
||||||
|
In the Font Awesome Free download, the MIT license applies to all non-font and
|
||||||
|
non-icon files.
|
||||||
|
|
||||||
|
Copyright 2023 Fonticons, Inc.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Attribution
|
||||||
|
|
||||||
|
Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font
|
||||||
|
Awesome Free files already contain embedded comments with sufficient
|
||||||
|
attribution, so you shouldn't need to do anything additional when using these
|
||||||
|
files normally.
|
||||||
|
|
||||||
|
We've kept attribution comments terse, so we ask that you do not actively work
|
||||||
|
to remove them from files, especially code. They're a great way for folks to
|
||||||
|
learn about Font Awesome.
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Brand Icons
|
||||||
|
|
||||||
|
All brand icons are trademarks of their respective owners. The use of these
|
||||||
|
trademarks does not indicate endorsement of the trademark holder by Font
|
||||||
|
Awesome, nor vice versa. **Please do not use brand logos for any purpose except
|
||||||
|
to represent the company, product, or service to which they refer.**
|
9
themes/kiera/static/fontawesome/css/all.min.css
vendored
Normal file
BIN
themes/kiera/static/fontawesome/webfonts/fa-brands-400.ttf
Normal file
BIN
themes/kiera/static/fontawesome/webfonts/fa-brands-400.woff2
Normal file
BIN
themes/kiera/static/fontawesome/webfonts/fa-regular-400.ttf
Normal file
BIN
themes/kiera/static/fontawesome/webfonts/fa-regular-400.woff2
Normal file
BIN
themes/kiera/static/fontawesome/webfonts/fa-solid-900.ttf
Normal file
BIN
themes/kiera/static/fontawesome/webfonts/fa-solid-900.woff2
Normal file
BIN
themes/kiera/static/fontawesome/webfonts/fa-v4compatibility.ttf
Normal file
1
themes/kiera/static/js/auto-render.min.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("katex")):"function"==typeof define&&define.amd?define(["katex"],t):"object"==typeof exports?exports.renderMathInElement=t(require("katex")):e.renderMathInElement=t(e.katex)}("undefined"!=typeof self?self:this,(function(e){return function(){"use strict";var t={771:function(t){t.exports=e}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var i=n[e]={exports:{}};return t[e](i,i.exports,r),i.exports}r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};var o={};return function(){r.d(o,{default:function(){return d}});var e=r(771),t=r.n(e);const n=function(e,t,n){let r=n,o=0;const i=e.length;for(;r<t.length;){const n=t[r];if(o<=0&&t.slice(r,r+i)===e)return r;"\\"===n?r++:"{"===n?o++:"}"===n&&o--,r++}return-1},i=/^\\begin{/;var a=function(e,t){let r;const o=[],a=new RegExp("("+t.map((e=>e.left.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"))).join("|")+")");for(;r=e.search(a),-1!==r;){r>0&&(o.push({type:"text",data:e.slice(0,r)}),e=e.slice(r));const a=t.findIndex((t=>e.startsWith(t.left)));if(r=n(t[a].right,e,t[a].left.length),-1===r)break;const l=e.slice(0,r+t[a].right.length),s=i.test(l)?l:e.slice(t[a].left.length,r);o.push({type:"math",data:s,rawData:l,display:t[a].display}),e=e.slice(r+t[a].right.length)}return""!==e&&o.push({type:"text",data:e}),o};const l=function(e,n){const r=a(e,n.delimiters);if(1===r.length&&"text"===r[0].type)return null;const o=document.createDocumentFragment();for(let e=0;e<r.length;e++)if("text"===r[e].type)o.appendChild(document.createTextNode(r[e].data));else{const i=document.createElement("span");let a=r[e].data;n.displayMode=r[e].display;try{n.preProcess&&(a=n.preProcess(a)),t().render(a,i,n)}catch(i){if(!(i instanceof t().ParseError))throw i;n.errorCallback("KaTeX auto-render: Failed to parse `"+r[e].data+"` with ",i),o.appendChild(document.createTextNode(r[e].rawData));continue}o.appendChild(i)}return o},s=function(e,t){for(let n=0;n<e.childNodes.length;n++){const r=e.childNodes[n];if(3===r.nodeType){let o=r.textContent,i=r.nextSibling,a=0;for(;i&&i.nodeType===Node.TEXT_NODE;)o+=i.textContent,i=i.nextSibling,a++;const s=l(o,t);if(s){for(let e=0;e<a;e++)r.nextSibling.remove();n+=s.childNodes.length-1,e.replaceChild(s,r)}else n+=a}else if(1===r.nodeType){const e=" "+r.className+" ";-1===t.ignoredTags.indexOf(r.nodeName.toLowerCase())&&t.ignoredClasses.every((t=>-1===e.indexOf(" "+t+" ")))&&s(r,t)}}};var d=function(e,t){if(!e)throw new Error("No element provided to render");const n={};for(const e in t)t.hasOwnProperty(e)&&(n[e]=t[e]);n.delimiters=n.delimiters||[{left:"$$",right:"$$",display:!0},{left:"\\(",right:"\\)",display:!1},{left:"\\begin{equation}",right:"\\end{equation}",display:!0},{left:"\\begin{align}",right:"\\end{align}",display:!0},{left:"\\begin{alignat}",right:"\\end{alignat}",display:!0},{left:"\\begin{gather}",right:"\\end{gather}",display:!0},{left:"\\begin{CD}",right:"\\end{CD}",display:!0},{left:"\\[",right:"\\]",display:!0}],n.ignoredTags=n.ignoredTags||["script","noscript","style","textarea","pre","code","option"],n.ignoredClasses=n.ignoredClasses||[],n.errorCallback=n.errorCallback||console.error,n.macros=n.macros||{},s(e,n)}}(),o=o.default}()}));
|
1
themes/kiera/static/js/katex.min.js
vendored
Normal file
9
themes/kiera/static/js/mathjax-config.js
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
window.MathJax = {
|
||||||
|
tex: {
|
||||||
|
tags: "ams",
|
||||||
|
inlineMath: [['$', '$'], ['\\(', '\\)']]
|
||||||
|
},
|
||||||
|
svg: {
|
||||||
|
fontCache: 'global'
|
||||||
|
}
|
||||||
|
};
|
1
themes/kiera/static/js/scripts.js
Normal file
@ -0,0 +1 @@
|
|||||||
|
// nothing here yet.
|
17
themes/kiera/theme.toml
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
name = "Kiera"
|
||||||
|
license = "MIT"
|
||||||
|
licenselink = "https://github.com/funkydan2/hugo-kiera/blob/master/LICENSE.md"
|
||||||
|
description = "Hugo Theme for creative and technical writing"
|
||||||
|
homepage = "https://github.com/funkydan2/hugo-kiera"
|
||||||
|
tags = ["blog","minimal","responsive"]
|
||||||
|
features = ["blog","disqus","google-analytics","font-awesome"]
|
||||||
|
min_version = "0.128.0"
|
||||||
|
|
||||||
|
[author]
|
||||||
|
name = "Daniel Saunders"
|
||||||
|
homepage = "https://github.com/funkydan2"
|
||||||
|
|
||||||
|
[original]
|
||||||
|
name = "b. avianto"
|
||||||
|
homepage = "https://avianto.com"
|
||||||
|
repo = "https://github.com/avianto/hugo-kiera"
|