Compare commits
319 Commits
v0.8.0-alp
...
v0.11.0
Author | SHA1 | Date | |
---|---|---|---|
![]() |
d6357b70ae | ||
![]() |
eb000e9f81 | ||
![]() |
efe9c2e06e | ||
![]() |
4c41cbcafb | ||
![]() |
1910af163d | ||
![]() |
cba1566ba1 | ||
![]() |
69abe3ec0c | ||
![]() |
9961d8e364 | ||
![]() |
7b1f81cd9a | ||
![]() |
1dd91da4f5 | ||
![]() |
624d89118d | ||
![]() |
ddab72c463 | ||
![]() |
c95ccd22eb | ||
![]() |
ced7196084 | ||
![]() |
9c726191de | ||
![]() |
93a6fab67f | ||
![]() |
923ff12915 | ||
![]() |
aaa299ef1d | ||
![]() |
e93bfcce8e | ||
![]() |
d3847186b7 | ||
![]() |
ac956333d4 | ||
![]() |
08ab28bfea | ||
![]() |
18d4548b8d | ||
![]() |
38f4fe796b | ||
![]() |
04e4c37f3e | ||
![]() |
c4695dd771 | ||
![]() |
cb75b6c777 | ||
![]() |
827fcd9d4d | ||
![]() |
21f1678de4 | ||
![]() |
f0cfd49983 | ||
![]() |
61fb294dfd | ||
![]() |
7e1843febe | ||
![]() |
7ed4693f40 | ||
![]() |
6c08d5eda1 | ||
![]() |
79e1b0aae1 | ||
![]() |
f3225ff139 | ||
![]() |
f0389f83b7 | ||
![]() |
d8271aa83a | ||
![]() |
c523f2b890 | ||
![]() |
6a32015d08 | ||
![]() |
e576737ff1 | ||
![]() |
08fa4d8c89 | ||
![]() |
7086700562 | ||
![]() |
a8fbdad172 | ||
![]() |
d374f50b66 | ||
![]() |
f0210348c6 | ||
![]() |
d66b093281 | ||
![]() |
bda9550c16 | ||
![]() |
36a4d93321 | ||
![]() |
26aeec106a | ||
![]() |
d419bb8f67 | ||
![]() |
b840ce6cf4 | ||
![]() |
816b7ca920 | ||
![]() |
3534141678 | ||
![]() |
7125033baa | ||
![]() |
042fa303be | ||
![]() |
5bd83f8255 | ||
![]() |
f0d18dc909 | ||
![]() |
128f9d6071 | ||
![]() |
f0be69daf5 | ||
![]() |
d21bc1fe42 | ||
![]() |
6da61c23db | ||
![]() |
454efc5915 | ||
![]() |
aa139ec51a | ||
![]() |
a7844486bf | ||
![]() |
221dc23a05 | ||
![]() |
92d97f7091 | ||
![]() |
51b31cb98a | ||
![]() |
2935b60404 | ||
![]() |
fc74085a7f | ||
![]() |
cd6b7332ab | ||
![]() |
ef952f73f8 | ||
![]() |
4a3a6d5395 | ||
![]() |
b4186265ef | ||
![]() |
ac5ae9aeb8 | ||
![]() |
d15eced48c | ||
![]() |
7a66470b67 | ||
![]() |
1b772f8a18 | ||
![]() |
29c49350a2 | ||
![]() |
6f0e767610 | ||
![]() |
013937d60f | ||
![]() |
dc99a35258 | ||
![]() |
3b4c4cb02f | ||
![]() |
56929c918a | ||
![]() |
696ccbf64b | ||
![]() |
2e5028a612 | ||
![]() |
89ecf07f23 | ||
![]() |
ea9295da62 | ||
![]() |
b6b5230cc3 | ||
![]() |
b65110fdcc | ||
![]() |
6d3dc7b590 | ||
![]() |
7bb479194b | ||
![]() |
73c1cf8a59 | ||
![]() |
20ce3580c7 | ||
![]() |
2f733a709d | ||
![]() |
96b1eaaa04 | ||
![]() |
f0200f77dc | ||
![]() |
4ab462750c | ||
![]() |
597ea2fa2b | ||
![]() |
82b8228277 | ||
![]() |
6a025f80c4 | ||
![]() |
99d4d79537 | ||
![]() |
e1d1526b10 | ||
![]() |
8808c10402 | ||
![]() |
87f1733a49 | ||
![]() |
0da862db93 | ||
![]() |
2bdcce58a7 | ||
![]() |
e81456021e | ||
![]() |
2815cda0ed | ||
![]() |
bad3a6fd4b | ||
![]() |
53a779ca78 | ||
![]() |
f559ae17fd | ||
![]() |
3bf1cd9ef7 | ||
![]() |
1596b40689 | ||
![]() |
1506281000 | ||
![]() |
a0a550d070 | ||
![]() |
0fe6e477a4 | ||
![]() |
a8618e1da3 | ||
![]() |
e724130159 | ||
![]() |
831fc66534 | ||
![]() |
ba8631b6a3 | ||
![]() |
0092588d87 | ||
![]() |
210f02089f | ||
![]() |
6508caec70 | ||
![]() |
5123cd1d6b | ||
![]() |
ed0b3c9da3 | ||
![]() |
55100c9b62 | ||
![]() |
1728c66dcc | ||
![]() |
4fa17934fd | ||
![]() |
263adc92e2 | ||
![]() |
0b4f63f300 | ||
![]() |
6cdd79ac3c | ||
![]() |
6c590a83a8 | ||
![]() |
3e98e3ff81 | ||
![]() |
18dd8ae837 | ||
![]() |
9e9bd2fb60 | ||
![]() |
f50b2ff166 | ||
![]() |
f3bfa8f823 | ||
![]() |
4764c02fe3 | ||
![]() |
ef20fb7a22 | ||
![]() |
d74d9b5bee | ||
![]() |
2bff77cdae | ||
![]() |
6c319a4ab8 | ||
![]() |
2f0e9f8a03 | ||
![]() |
99e9d4902b | ||
![]() |
0abf604d2a | ||
![]() |
ca51130286 | ||
![]() |
28e96deb73 | ||
![]() |
9173b6eaaa | ||
![]() |
492420d13f | ||
![]() |
d2ec492827 | ||
![]() |
d12cdc7a76 | ||
![]() |
a4f49ffb18 | ||
![]() |
6599912985 | ||
![]() |
b7ef39a61c | ||
![]() |
d4bf047b09 | ||
![]() |
9df3426f41 | ||
![]() |
d7f887c6f6 | ||
![]() |
25dfbb3ed3 | ||
![]() |
4e48065605 | ||
![]() |
929a86e6b7 | ||
![]() |
e0895d9751 | ||
![]() |
7a1925594b | ||
![]() |
913813c602 | ||
![]() |
4fb4b31635 | ||
![]() |
6aedfc9c6a | ||
![]() |
2cc9204d9d | ||
![]() |
76fe879066 | ||
![]() |
34b161d10f | ||
![]() |
5c0f47fdc8 | ||
![]() |
919b62adac | ||
![]() |
909ff6bc9e | ||
![]() |
9b053b876c | ||
![]() |
831568fde3 | ||
![]() |
54f06566ee | ||
![]() |
f52241f4fe | ||
![]() |
ea5ce16f3c | ||
![]() |
e1c23e003b | ||
![]() |
a018b2af25 | ||
![]() |
16a7cecdbe | ||
![]() |
091cc49b1d | ||
![]() |
5982b8132f | ||
![]() |
90d158d8c4 | ||
![]() |
a5b3a7b3a5 | ||
![]() |
feafd3c3a9 | ||
![]() |
3fe31f9655 | ||
![]() |
317302fd94 | ||
![]() |
7d03be11e6 | ||
![]() |
a8b834c71c | ||
![]() |
ca00426f0d | ||
![]() |
040441b7eb | ||
![]() |
edde8164d7 | ||
![]() |
7451687be5 | ||
![]() |
0d55ad9f24 | ||
![]() |
c225e86ef3 | ||
![]() |
cd5886be9e | ||
![]() |
a2e909e0b0 | ||
![]() |
a2c45081a3 | ||
![]() |
3d7c49db2e | ||
![]() |
d2ba6f827b | ||
![]() |
2137062559 | ||
![]() |
d08c23f668 | ||
![]() |
c04a0c1981 | ||
![]() |
c2484433e8 | ||
![]() |
c92af394eb | ||
![]() |
e82b4cce0c | ||
![]() |
ff5624951d | ||
![]() |
0d1aa334b3 | ||
![]() |
24979034a3 | ||
![]() |
d43a992efd | ||
![]() |
d913dbf00b | ||
![]() |
e3c3f8eb75 | ||
![]() |
4e6c437274 | ||
![]() |
3ae4c5ee97 | ||
![]() |
bce3d8ed83 | ||
![]() |
02f3b9cedc | ||
![]() |
0721243d82 | ||
![]() |
63fda8378e | ||
![]() |
0bd6257ef5 | ||
![]() |
cfec32ac11 | ||
![]() |
8f32d613d1 | ||
![]() |
7a46a47cea | ||
![]() |
a0e446dc2c | ||
![]() |
8938f4270d | ||
![]() |
25bd5ea47c | ||
![]() |
0bce0a9fb7 | ||
![]() |
f6aeed969c | ||
![]() |
088dd82bd3 | ||
![]() |
503554046c | ||
![]() |
419ad7bb86 | ||
![]() |
74e6367b30 | ||
![]() |
4c8e73af33 | ||
![]() |
73446e5580 | ||
![]() |
223ae24416 | ||
![]() |
4167cf1695 | ||
![]() |
cf98b4d067 | ||
![]() |
e0e694cda4 | ||
![]() |
40b36ef34b | ||
![]() |
d47adb99a2 | ||
![]() |
32b86d1183 | ||
![]() |
c17ac02c13 | ||
![]() |
ea6623349c | ||
![]() |
0d1b08e770 | ||
![]() |
868430b726 | ||
![]() |
d3330716ee | ||
![]() |
9799b9d6eb | ||
![]() |
092ee2f4a7 | ||
![]() |
9c0fca16bf | ||
![]() |
ac5521bffa | ||
![]() |
8634b1ecce | ||
![]() |
258040c345 | ||
![]() |
1cd93c131e | ||
![]() |
cba64fccfe | ||
![]() |
bd6743acc6 | ||
![]() |
1d30b45c2b | ||
![]() |
8d8a6918b6 | ||
![]() |
58ba98f180 | ||
![]() |
736d93774a | ||
![]() |
7a0b0f318d | ||
![]() |
d65bea328f | ||
![]() |
4e84e97146 | ||
![]() |
29f8016ebc | ||
![]() |
60b4cc0403 | ||
![]() |
47d642bd38 | ||
![]() |
8bfd3ffee8 | ||
![]() |
6fa0c2b101 | ||
![]() |
c8735634a1 | ||
![]() |
1487fec2ff | ||
![]() |
1421103b6c | ||
![]() |
cbc1b3bbb9 | ||
![]() |
0750ec61b8 | ||
![]() |
b237246290 | ||
![]() |
1a8c8439b8 | ||
![]() |
0221e71dce | ||
![]() |
7a8cee0f0b | ||
![]() |
e832ad9493 | ||
![]() |
4c0bd6ef82 | ||
![]() |
1fda10837d | ||
![]() |
06a1744a40 | ||
![]() |
3960504a98 | ||
![]() |
d187748394 | ||
![]() |
0beac5cd20 | ||
![]() |
2e5053fefb | ||
![]() |
af8bc2d26d | ||
![]() |
03aa601922 | ||
![]() |
a6d8f7e6f1 | ||
![]() |
f09e71f27f | ||
![]() |
2ede4c52a2 | ||
![]() |
579f2a9a79 | ||
![]() |
c2e1ae5346 | ||
![]() |
2c078631a1 | ||
![]() |
6a6458f65c | ||
![]() |
b28dffac49 | ||
![]() |
7d86c45658 | ||
![]() |
02c1b17e96 | ||
![]() |
ba7e617deb | ||
![]() |
cc6c5be156 | ||
![]() |
5489001d06 | ||
![]() |
69b7ef0642 | ||
![]() |
75b7423668 | ||
![]() |
7de9cd670a | ||
![]() |
7b6586dca8 | ||
![]() |
8ca0351aee | ||
![]() |
b6acf81025 | ||
![]() |
5669704aed | ||
![]() |
a6a61f0561 | ||
![]() |
72d4302cd2 | ||
![]() |
b2b872481a | ||
![]() |
459482f83b | ||
![]() |
a9f488e0a2 | ||
![]() |
8b0104eb45 | ||
![]() |
423793f181 | ||
![]() |
e2b2b57899 | ||
![]() |
298800c988 | ||
![]() |
c5ce6094de | ||
![]() |
1277bf3fac | ||
![]() |
ba7b911a5f | ||
![]() |
acb249e4f8 | ||
![]() |
b6c6f34786 |
@@ -1,3 +1,4 @@
|
||||
assets/js/color.js
|
||||
assets/js/flexsearch.js
|
||||
assets/js/vendor
|
||||
node_modules
|
||||
|
3
.gitignore
vendored
@@ -3,4 +3,5 @@ resources/
|
||||
node_modules/
|
||||
|
||||
.DS_store
|
||||
.hugo_build.lock
|
||||
.hugo_build.lock
|
||||
hugo_stats.json
|
@@ -1,5 +1,8 @@
|
||||
assets/scss/common/_variables.scss
|
||||
assets/scss/components/_syntax.scss
|
||||
assets/scss/components/_syntax-dark.scss
|
||||
assets/scss/components/_syntax-light.scss
|
||||
assets/scss/hotfix
|
||||
assets/scss/vendor
|
||||
assets/scss/theme/fonts.scss
|
||||
assets/scss/app.scss
|
||||
node_modules
|
||||
|
@@ -2,10 +2,7 @@
|
||||
"extends": "stylelint-config-standard-scss",
|
||||
"rules": {
|
||||
"no-empty-source": null,
|
||||
"indentation": 4,
|
||||
"string-quotes": "double",
|
||||
"scss/comment-no-empty": null,
|
||||
"max-line-length": null,
|
||||
"scss/at-extend-no-missing-placeholder": null,
|
||||
"scss/dollar-variable-colon-space-after": null,
|
||||
"scss/dollar-variable-empty-line-before": null,
|
||||
|
118
README.md
@@ -11,23 +11,23 @@
|
||||
<a href="https://gohugo.io" alt="Hugo website">
|
||||
<img src="https://img.shields.io/badge/generator-hugo-brightgreen" />
|
||||
</a>
|
||||
<a href="https://app.netlify.com/sites/hinode-demo/deploys" alt="Netlify Status">
|
||||
<img src="https://img.shields.io/netlify/151e88a3-d161-4045-856d-778fea43fc2f" />
|
||||
<a href="https://app.netlify.com/sites/gethinode-demo/deploys" alt="Netlify Status">
|
||||
<img src="https://img.shields.io/netlify/0ad42e3e-fdfa-4d37-8e26-58badd429a67" />
|
||||
</a>
|
||||
<a href="https://stats.uptimerobot.com/xyGVYhLJmV" alt="UptimeRobot Status">
|
||||
<img src="https://img.shields.io/uptimerobot/status/m791334689-73d9dfc82030f4f955b2d6bb" />
|
||||
</a>
|
||||
<a href="https://github.com/markdumay/hugo-theme-hinode/commits/main" alt="Last commit">
|
||||
<img src="https://img.shields.io/github/last-commit/markdumay/hugo-theme-hinode.svg" />
|
||||
<a href="https://github.com/gethinode/hinode/commits/main" alt="Last commit">
|
||||
<img src="https://img.shields.io/github/last-commit/gethinode/hinode.svg" />
|
||||
</a>
|
||||
<a href="https://github.com/markdumay/hugo-theme-hinode/issues" alt="Issues">
|
||||
<img src="https://img.shields.io/github/issues/markdumay/hugo-theme-hinode.svg" />
|
||||
<a href="https://github.com/gethinode/hinode/issues" alt="Issues">
|
||||
<img src="https://img.shields.io/github/issues/gethinode/hinode.svg" />
|
||||
</a>
|
||||
<a href="https://github.com/markdumay/hugo-theme-hinode/pulls" alt="Pulls">
|
||||
<img src="https://img.shields.io/github/issues-pr-raw/markdumay/hugo-theme-hinode.svg" />
|
||||
<a href="https://github.com/gethinode/hinode/pulls" alt="Pulls">
|
||||
<img src="https://img.shields.io/github/issues-pr-raw/gethinode/hinode.svg" />
|
||||
</a>
|
||||
<a href="https://github.com/markdumay/hugo-theme-hinode/blob/main/LICENSE" alt="License">
|
||||
<img src="https://img.shields.io/github/license/markdumay/hugo-theme-hinode" />
|
||||
<a href="https://github.com/gethinode/hinode/blob/main/LICENSE" alt="License">
|
||||
<img src="https://img.shields.io/github/license/gethinode/hinode" />
|
||||
</a>
|
||||
</p>
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
|
||||
## About
|
||||
|
||||

|
||||

|
||||
|
||||
- [Online Demo][demo]
|
||||
- [PageSpeed Insights][pagespeed]
|
||||
@@ -54,17 +54,16 @@ Hinode is a clean documentation and blog theme for [Hugo][hugo], an open-source
|
||||
|
||||
Additional features include:
|
||||
|
||||
- Comments
|
||||
- Social links
|
||||
- Blog pagination
|
||||
- Code highlighting
|
||||
- Command prompt
|
||||
- Color customization
|
||||
- Language switcher
|
||||
- Switching between light mode and dark mode
|
||||
- Support for multiple languages
|
||||
- Reusable Bootstrap components through configurable shortcodes and partials
|
||||
- Embedded comments through light-weight integration with GitHub via [utteranc.es][utterances]
|
||||
- Integrated sidebar navigation for content-heavy sections, such as documentation pages
|
||||
- Reponsive image handling for multiple screen sizes and resolutions
|
||||
- Optimized search results, scoring 100 points for SEO on [PageSpeed Insights][pagespeed]
|
||||
- Secure by default, scoring A+ on [Mozilla Observatory test][observatory]
|
||||
|
||||
<!-- TODO: add tutorial deep-link
|
||||
Detailed background information is available on the author's [personal blog][blog].
|
||||
-->
|
||||
Detailed information about Hinode is available on the [official website][website].
|
||||
|
||||
## Prerequisites
|
||||
|
||||
@@ -74,56 +73,39 @@ Hinode requires Git, Node.js and npm for local development and testing. Download
|
||||
|
||||
Start a new Hinode project in three steps:
|
||||
|
||||
### 1. Create a new site
|
||||
1. Create a new site
|
||||
|
||||
Hinode is available as a [child theme][repository_child], and a [main theme][repository]. The child theme uses [npm][npm] to link to the latest available version of Hinode. As such, it is less applicable if you plan to customize a lot. Vice versa, the main theme allows for heavy customization, but is not synchronized with the latest available Hinode theme automatically.
|
||||
Hinode is available as a [child theme][repository_child], and a [main theme][repository]. The child theme uses [npm][npm] to link to the latest available version of Hinode. Unless you plan to customize a lot, it is recommended to use the child theme:
|
||||
|
||||
Not quite sure? Use the Hinode child theme.
|
||||
```bash
|
||||
git clone https://github.com/gethinode/child.git my-hinode-site && cd my-hinode-site
|
||||
```
|
||||
|
||||
#### Hinode child theme
|
||||
Use the main theme if you intend to customize the base code:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/markdumay/hugo-theme-hinode-child.git my-hinode-site && cd my-hinode-site
|
||||
```
|
||||
```bash
|
||||
git clone https://github.com/gethinode/hinode.git my-hinode-site && cd my-hinode-site
|
||||
```
|
||||
|
||||
#### Hinode main theme
|
||||
1. Install dependencies
|
||||
|
||||
```bash
|
||||
git clone https://github.com/markdumay/hugo-theme-hinode.git my-hinode-site && cd my-hinode-site
|
||||
```
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
### 2. Install dependencies
|
||||
1. Start development server
|
||||
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
### 3. Start development server
|
||||
|
||||
```bash
|
||||
npm run start
|
||||
```
|
||||
```bash
|
||||
npm run start
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
The main site configuration is available in `./config/_default`. Some remarks:
|
||||
|
||||
- **Menu items** - `menus/menus.en.toml` contains language-specific items for the navigation bar and social media links for the home page's footer.
|
||||
- **Content** - Ensure the `mainSections` in `config.toml` is synchronized with the `content` folder, default values are `["blog", "projects"]`.
|
||||
- **Theme style** - Update `primary` and `themeOpacity` within the `[style]` section of `params.toml` to update the site's primary color and opacity. Bootstrap's other key colors can be changed too. You can use the [WCAG Color Contrast Checker][contrast_checker] to validate the contrast ratio of your color to improve accessibility. Additionally, set `themeFont` and `themeFontPath` to override the default font.
|
||||
- **Comments** - Comments are powered by [utterances][utterances], a lightweight comments widget built on GitHub issues. Update the `repo` of the `[comments]` section of `params.toml`.
|
||||
- **Security policy** - The theme uses rather strict security policies by default. Be sure to include references to external sources in the header configuration to avoid broken links. The settings of the local development server are defined in `server.toml`. Similar settings are defined in the `netlify.toml` file provided in the repository's root when deploying to [Netlify][netlify].
|
||||
See the [official documentation][getstarted] on how to configure your site.
|
||||
|
||||
## Contributing
|
||||
|
||||
1. Clone the repository and create a new branch
|
||||
|
||||
```console
|
||||
git checkout https://github.com/markdumay/hugo-theme-hinode.git -b name_for_new_branch
|
||||
```
|
||||
|
||||
2. Make and test the changes
|
||||
3. Submit a Pull Request with a comprehensive description of the changes
|
||||
See the [official documentation][contribute] on how to contribute to the open-source development of Hinode.
|
||||
|
||||
## Credits
|
||||
|
||||
@@ -138,13 +120,12 @@ Hinode is inspired by the following themes:
|
||||
|
||||
## License
|
||||
|
||||
The `hugo-theme-hinode` and `hugo-theme-hinode-child` codebase is released under the [MIT license][license]. The documentation (including the "README") is licensed under the Creative Commons ([CC BY-NC 4.0)][cc-by-nc-4.0] license.
|
||||
The `hinode` and `child` codebase is released under the [MIT license][license]. The documentation (including the "README" and `docs` codebase) is licensed under the Creative Commons ([CC BY-NC 4.0)][cc-by-nc-4.0] license.
|
||||
|
||||
<!-- MARKDOWN PUBLIC LINKS -->
|
||||
[blist]: https://github.com/apvarun/blist-hugo-theme
|
||||
[bootstrap]: https://getbootstrap.com
|
||||
[cc-by-nc-4.0]: https://creativecommons.org/licenses/by-nc/4.0/
|
||||
[contrast_checker]: https://accessibleweb.com/color-contrast-checker/
|
||||
[doks]: https://github.com/h-enk/doks
|
||||
[flexsearch]: https://github.com/nextapps-de/flexsearch
|
||||
[git_download]: https://git-scm.com
|
||||
@@ -152,16 +133,15 @@ The `hugo-theme-hinode` and `hugo-theme-hinode-child` codebase is released under
|
||||
[netlify]: https://www.netlify.com
|
||||
[nodejs]: https://nodejs.org
|
||||
[npm]: https://www.npmjs.com
|
||||
[observatory]: https://observatory.mozilla.org/analyze/hinode-demo.markdumay.org
|
||||
[pagespeed]: https://pagespeed.web.dev/report?url=https%3A%2F%2Fhinode-demo.markdumay.org%2F
|
||||
[observatory]: https://observatory.mozilla.org/analyze/demo.gethinode.com
|
||||
[pagespeed]: https://pagespeed.web.dev/report?url=https%3A%2F%2Fdemo.gethinode.com%2F
|
||||
[utterances]: https://utteranc.es
|
||||
|
||||
<!-- MARKDOWN MAINTAINED LINKS -->
|
||||
<!-- TODO: add blog link
|
||||
[blog]: https://markdumay.com
|
||||
[blog]: https://github.com/markdumay
|
||||
-->
|
||||
[demo]: https://hinode-demo.markdumay.org/
|
||||
[license]: https://github.com/markdumay/hugo-theme-hinode/blob/main/LICENSE
|
||||
[repository]: https://github.com/markdumay/hugo-theme-hinode.git
|
||||
[repository_child]: https://github.com/markdumay/hugo-theme-hinode-child.git
|
||||
[contribute]: https://gethinode.com/contribute
|
||||
[getstarted]: https://gethinode.com/docs
|
||||
[demo]: https://demo.gethinode.com/
|
||||
[license]: https://github.com/gethinode/hinode/blob/main/LICENSE
|
||||
[repository]: https://github.com/gethinode/hinode.git
|
||||
[repository_child]: https://github.com/gethinode/child.git
|
||||
[website]: https://gethinode.com/
|
||||
|
3
assets/icons/accordion-button-active-icon-dark.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='{{ .accordion_icon_active_color_dark }}'>
|
||||
<path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/>
|
||||
</svg>
|
After Width: | Height: | Size: 269 B |
3
assets/icons/accordion-button-icon-dark.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='{{ .accordion_icon_color_dark }}'>
|
||||
<path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/>
|
||||
</svg>
|
After Width: | Height: | Size: 262 B |
3
assets/icons/btn-toggle-dark.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 320 512' fill='{{ .btn_toggle_color_dark }}'>
|
||||
<path d="M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 314 B |
@@ -1,3 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='{{ .carousel_control_color }} '>
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='{{ .carousel_control_color }}'>
|
||||
<path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/>
|
||||
</svg>
|
Before Width: | Height: | Size: 240 B After Width: | Height: | Size: 239 B |
3
assets/icons/form-select-indicator-dark.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'>
|
||||
<path fill='none' stroke='{{ .form_select_indicator_color_dark }}' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/>
|
||||
</svg>
|
After Width: | Height: | Size: 221 B |
3
assets/icons/form-switch-bg-image-dark.svg
Normal file
@@ -0,0 +1,3 @@
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
|
||||
<circle r='3' fill='{{ .form_switch_color_dark }}' />
|
||||
</svg>
|
After Width: | Height: | Size: 125 B |
BIN
assets/img/paper.jpg
Normal file
After Width: | Height: | Size: 930 KiB |
67
assets/js/color.js
Normal file
@@ -0,0 +1,67 @@
|
||||
/*!
|
||||
* Color mode toggler for Bootstrap's docs (https://getbootstrap.com/)
|
||||
* Copyright 2011-2022 The Bootstrap Authors
|
||||
* Licensed under the Creative Commons Attribution 3.0 Unported License.
|
||||
*/
|
||||
|
||||
{{ if site.Params.main.enableDarkMode }}
|
||||
|
||||
(() => {
|
||||
'use strict'
|
||||
|
||||
const storedTheme = localStorage.getItem('theme')
|
||||
|
||||
const getPreferredTheme = () => {
|
||||
if (storedTheme) {
|
||||
return storedTheme
|
||||
}
|
||||
|
||||
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'
|
||||
}
|
||||
|
||||
const setTheme = function (theme) {
|
||||
if (theme === 'auto' && window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||||
document.documentElement.setAttribute('data-bs-theme', 'dark')
|
||||
} else {
|
||||
document.documentElement.setAttribute('data-bs-theme', theme)
|
||||
}
|
||||
}
|
||||
|
||||
setTheme(getPreferredTheme())
|
||||
|
||||
const showActiveTheme = theme => {
|
||||
const activeSelector = document.querySelector('.theme-icon-active')
|
||||
const activeButton = document.querySelector(`[data-bs-theme-value="${theme}"]`)
|
||||
const activeIcon = activeButton.querySelector('i')
|
||||
|
||||
document.querySelectorAll('[data-bs-theme-value]').forEach(element => {
|
||||
element.classList.remove('active')
|
||||
})
|
||||
|
||||
activeSelector.className = activeIcon.className
|
||||
activeSelector.className = activeSelector.className.replace('theme-icon', 'theme-icon-active')
|
||||
activeButton.classList.add('active')
|
||||
}
|
||||
|
||||
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
|
||||
if (storedTheme !== 'light' || storedTheme !== 'dark') {
|
||||
setTheme(getPreferredTheme())
|
||||
}
|
||||
})
|
||||
|
||||
window.addEventListener('DOMContentLoaded', () => {
|
||||
showActiveTheme(getPreferredTheme())
|
||||
|
||||
document.querySelectorAll('[data-bs-theme-value]')
|
||||
.forEach(toggle => {
|
||||
toggle.addEventListener('click', () => {
|
||||
const theme = toggle.getAttribute('data-bs-theme-value')
|
||||
localStorage.setItem('theme', theme)
|
||||
setTheme(theme)
|
||||
showActiveTheme(theme)
|
||||
})
|
||||
})
|
||||
})
|
||||
})()
|
||||
|
||||
{{ end }}
|
16
assets/js/navbar.js
Normal file
@@ -0,0 +1,16 @@
|
||||
const navbar = document.querySelector('.navbar')
|
||||
const toggler = document.getElementById('main-nav-toggler')
|
||||
|
||||
// set the navbar background color to opaque when scrolling past a breakpoint
|
||||
window.onscroll = () => {
|
||||
if (window.scrollY > 75) {
|
||||
navbar.classList.add('nav-active')
|
||||
} else {
|
||||
navbar.classList.remove('nav-active')
|
||||
}
|
||||
}
|
||||
|
||||
// set the navbar background color to opaque when expanded
|
||||
toggler.onclick = () => {
|
||||
navbar.classList.toggle('navbar-expanded')
|
||||
}
|
@@ -1,17 +1,5 @@
|
||||
// Define template variables
|
||||
// TODO: optimize, see https://discourse.gohugo.io/t/initialize-sass-variables-from-hugo-templates/42053
|
||||
// requires installation of dart-sass, no cross-platform installation available yet
|
||||
$themeColor: {{ site.Params.style.themeColor | default "#007bff" }};
|
||||
$themeFont: {{ site.Params.style.themeFont | default "Inter" }};
|
||||
$primary: {{ site.Params.style.primary | default "#007bff" }};
|
||||
$secondary: {{ site.Params.style.secondary | default "#6c757d" }};
|
||||
$success: {{ site.Params.style.success | default "#198754" }};
|
||||
$info: {{ site.Params.style.info | default "#0dcaf0" }};
|
||||
$warning: {{ site.Params.style.warning | default "#ffc107" }};
|
||||
$danger: {{ site.Params.style.danger | default "#dc3545" }};
|
||||
$light: {{ site.Params.style.light | default "#f8f9fa" }};
|
||||
$dark: {{ site.Params.style.dark | default "#212529" }};
|
||||
$navbar-offset: {{ if site.Params.navigation.fixed }}{{ site.Params.navigation.offset | default "3em" }}{{ else }}0em{{ end }};
|
||||
@import "hugo:vars";
|
||||
|
||||
// Include default variable overrides
|
||||
@import "common/variables.scss";
|
||||
@@ -24,6 +12,7 @@ $navbar-offset: {{ if site.Params.navigation.fixed }}{{ site.Par
|
||||
|
||||
// Import Bootstrap configuration
|
||||
@import "bootstrap/scss/variables";
|
||||
@import "bootstrap/scss/variables-dark.scss";
|
||||
@import "bootstrap/scss/maps";
|
||||
@import "bootstrap/scss/mixins";
|
||||
@import "bootstrap/scss/utilities";
|
||||
@@ -64,9 +53,6 @@ $navbar-offset: {{ if site.Params.navigation.fixed }}{{ site.Par
|
||||
// Import Bootstrap helpers
|
||||
@import "bootstrap/scss/helpers";
|
||||
|
||||
// Import Bootstrap utilities
|
||||
@import "bootstrap/scss/utilities/api";
|
||||
|
||||
// Import Font Awesome
|
||||
// scss-docs-start awesome
|
||||
@import "@fortawesome/fontawesome-free/scss/fontawesome";
|
||||
@@ -96,3 +82,19 @@ $navbar-offset: {{ if site.Params.navigation.fixed }}{{ site.Par
|
||||
@import "layouts/type.scss";
|
||||
@import "common/export.scss";
|
||||
@import "helpers/colored-links.scss";
|
||||
@import "helpers/display.scss";
|
||||
|
||||
// TODO: include fonts with following statement in Dart Sass
|
||||
// @if $import-fonts {
|
||||
// @include meta.load-css(theme/fonts);
|
||||
// }
|
||||
|
||||
{{ if (not (hasPrefix (lower site.Params.style.themeFontPath) "http")) }}
|
||||
@import "theme/fonts.scss";
|
||||
{{ end }}
|
||||
|
||||
// Import theme placeholder
|
||||
@import "theme/theme.scss";
|
||||
|
||||
// Import Bootstrap utilities API
|
||||
@import "bootstrap/scss/utilities/api";
|
||||
|
@@ -3,20 +3,26 @@
|
||||
// scss-docs-start export
|
||||
:hinode-theme {
|
||||
--accordion-icon-active-color: #{$accordion-icon-active-color};
|
||||
--accordion-icon-active-color-dark: #{$gray-300};
|
||||
--accordion-icon-color: #{$accordion-icon-color};
|
||||
--accordion-icon-color-dark: #{$gray-600};
|
||||
--btn-close-color: #{$btn-close-color};
|
||||
--btn-toggle-color: #{$btn-toggle-color};
|
||||
--btn-toggle-color-dark: #{$gray-600};
|
||||
--carousel-control-color: #{$carousel-control-color};
|
||||
--form-check-input-checked-color: #{$form-check-input-checked-color};
|
||||
--form-check-input-indeterminate-color: #{$form-check-input-indeterminate-color};
|
||||
--form-feedback-icon-invalid-color: #{$form-feedback-icon-invalid-color};
|
||||
--form-feedback-icon-valid-color: #{$form-feedback-icon-valid-color};
|
||||
--form-select-indicator-color: #{$form-select-indicator-color};
|
||||
--form-select-indicator-color-dark: #{$form-select-indicator-color-dark};
|
||||
--form-switch-checked-color: #{$form-switch-checked-color};
|
||||
--form-switch-color: #{$form-switch-color};
|
||||
--form-switch-color-dark: #{$form-switch-color-dark};
|
||||
--form-switch-focus-color: #{$form-switch-focus-color};
|
||||
--navbar-dark-color: #{$navbar-dark-color};
|
||||
--navbar-light-icon-color: rgba($body-color, 0.75); // TODO: See https://github.com/twbs/bootstrap/pull/37720
|
||||
}
|
||||
|
||||
// scss-docs-end export
|
||||
// stylelint-enable selector-pseudo-class-no-unknown
|
||||
|
@@ -3,18 +3,23 @@ $form-check-input-checked-bg-image: url("icons/form-check-input-chec
|
||||
$form-check-radio-checked-bg-image: url("icons/form-check-radio-checked-bg-image.svg") !default;
|
||||
$form-check-input-indeterminate-bg-image: url("icons/form-check-input-indeterminate-bg-image.svg") !default;
|
||||
$form-switch-bg-image: url("icons/form-switch-bg-image.svg") !default;
|
||||
$form-switch-bg-image-dark: url("icons/form-switch-bg-image-dark.svg") !default;
|
||||
$form-switch-focus-bg-image: url("icons/form-switch-focus-bg-image.svg") !default;
|
||||
$form-switch-checked-bg-image: url("icons/form-switch-checked-bg-image.svg") !default;
|
||||
$form-select-indicator: url("icons/form-select-indicator.svg") !default;
|
||||
$form-select-indicator-dark: url("icons/form-select-indicator-dark.svg") !default;
|
||||
$form-feedback-icon-valid: url("icons/form-feedback-icon-valid.svg") !default;
|
||||
$form-feedback-icon-invalid: url("icons/form-feedback-icon-invalid.svg") !default;
|
||||
$navbar-light-toggler-icon-bg: url("icons/navbar-light-toggler-icon-bg.svg") !default;
|
||||
$navbar-dark-toggler-icon-bg: url("icons/navbar-dark-toggler-icon-bg.svg") !default;
|
||||
$accordion-button-icon: url("icons/accordion-button-icon.svg") !default;
|
||||
$accordion-button-icon-dark: url("icons/accordion-button-icon-dark.svg") !default;
|
||||
$accordion-button-active-icon: url("icons/accordion-button-active-icon.svg") !default;
|
||||
$accordion-button-active-icon-dark: url("icons/accordion-button-active-icon-dark.svg") !default;
|
||||
$carousel-control-prev-icon-bg: url("icons/carousel-control-prev-icon-bg.svg") !default;
|
||||
$carousel-control-next-icon-bg: url("icons/carousel-control-next-icon-bg.svg") !default;
|
||||
$btn-close-bg: url("icons/btn-close-bg.svg") !default;
|
||||
$btn-toggle: url("icons/btn-toggle.svg") !default;
|
||||
$btn-toggle-dark: url("icons/btn-toggle-dark.svg") !default;
|
||||
|
||||
// scss-docs-end icons
|
||||
|
@@ -1,5 +1,6 @@
|
||||
// Bootstrap variables overrides for theme
|
||||
$enable-negative-margins: true;
|
||||
$enable-important-utilities: true !default;
|
||||
|
||||
// Font awesome variables overrides for theme
|
||||
$fa-font-path: "../fonts";
|
||||
@@ -8,7 +9,7 @@ $fa-font-path: "../fonts";
|
||||
$navbar-toggler-focus-width: 0 !default;
|
||||
|
||||
// scss-docs-start font
|
||||
$font-family-sans-serif: $themeFont, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
|
||||
$font-family-sans-serif: $theme-font, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
|
||||
$headings-font-weight: 600 !default;
|
||||
$font-weight-lighter: lighter !default;
|
||||
$font-weight-light: 200 !default;
|
||||
@@ -17,9 +18,13 @@ $font-weight-bold: 600 !default;
|
||||
$font-weight-bolder: bolder !default;
|
||||
|
||||
strong {
|
||||
font-weight: 600 !important;
|
||||
font-weight: 600 if($enable-important-utilities, !important, null);
|
||||
}
|
||||
// scss-docs-end font
|
||||
|
||||
$black: #000 !default;
|
||||
$btn-toggle-color: $black !default;
|
||||
$btn-toggle-color: $black !default;
|
||||
|
||||
$carousel-dark-indicator-active-bg: #ffffff !default;
|
||||
$carousel-dark-caption-color: #ffffff !default;
|
||||
$carousel-dark-control-icon-filter: invert(0) grayscale(100) !default;
|
||||
|
@@ -4,5 +4,5 @@
|
||||
.btn-primary:active,
|
||||
.btn-primary.active,
|
||||
.open > .dropdown-toggle.btn-primary {
|
||||
color: #fff !important;
|
||||
color: #fff if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
@@ -6,16 +6,8 @@
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.card-img-wrap::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: rgba(255, 255, 255, 0.3);
|
||||
opacity: 0;
|
||||
transition: opacity 0.25s;
|
||||
.card-zoom {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.card-img-wrap img {
|
||||
@@ -23,11 +15,21 @@
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.card-img-wrap:hover img {
|
||||
transform: scale(1.1);
|
||||
.card-zoom::after .card-img-wrap img {
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background: rgba(255, 255, 255, 0.3);
|
||||
opacity: 0;
|
||||
transition: opacity 0.25s;
|
||||
}
|
||||
|
||||
.card-img-wrap:hover::after {
|
||||
.card-zoom:hover .card-img-wrap img {
|
||||
transform: scale(1.1);
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.card-zoom:hover::after .card-img-wrap img {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
@@ -40,3 +42,32 @@
|
||||
transform: scale(1.01);
|
||||
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.12), 0 4px 8px rgba(0, 0, 0, 0.06);
|
||||
}
|
||||
|
||||
// stylelint-disable annotation-no-unknown
|
||||
.card-body-link {
|
||||
color: $body-color if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
||||
@if $enable-dark-mode {
|
||||
@include color-mode(dark) {
|
||||
.card-body-link {
|
||||
color: $gray-500 if($enable-important-utilities, !important, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.card-zoom card-body-link,
|
||||
.card-body-link {
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: shade-color($primary, $link-shade-percentage) if($enable-important-utilities, !important, null);
|
||||
}
|
||||
}
|
||||
|
||||
// stylelint-enable annotation-no-unknown
|
||||
|
||||
// make tag-link clickable on top of the stretched-link.
|
||||
.card .tag-link {
|
||||
z-index: 2;
|
||||
position: relative;
|
||||
}
|
||||
|
@@ -1,16 +1,27 @@
|
||||
// stylelint-disable annotation-no-unknown
|
||||
|
||||
// Source: https://jsfiddle.net/njhgr40m/
|
||||
|
||||
.navbar {
|
||||
transition: 0.5s ease-in-out;
|
||||
background-color: none;
|
||||
}
|
||||
|
||||
.nav-active, .navbar-expanded {
|
||||
background-color: var(--bs-body-bg);
|
||||
}
|
||||
|
||||
/* Remove border from toggler */
|
||||
.navbar-toggler {
|
||||
border: 0 !important;
|
||||
border: 0 if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
||||
.navbar-toggler:focus,
|
||||
.navbar-toggler:active,
|
||||
.navbar-toggler-icon:focus {
|
||||
outline: none !important;
|
||||
box-shadow: none !important;
|
||||
border: 0 !important;
|
||||
outline: none if($enable-important-utilities, !important, null);
|
||||
box-shadow: none if($enable-important-utilities, !important, null);
|
||||
border: 0 if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
||||
/* Lines of the Toggler */
|
||||
@@ -65,3 +76,17 @@
|
||||
.navbar-toggler.collapsed .toggler-icon {
|
||||
background-color: #777;
|
||||
}
|
||||
|
||||
.emphasis {
|
||||
background-color: $black if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
||||
@if $enable-dark-mode {
|
||||
@include color-mode(dark) {
|
||||
.emphasis {
|
||||
background-color: $white if($enable-important-utilities, !important, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// stylelint-enable annotation-no-unknown
|
||||
|
@@ -11,7 +11,7 @@
|
||||
.form-control.is-search {
|
||||
padding-right: 4rem;
|
||||
border: 1px solid transparent;
|
||||
background: $gray-100;
|
||||
background: var(--bs-tertiary-bg);
|
||||
}
|
||||
|
||||
.form-control.is-search:focus {
|
||||
@@ -29,9 +29,9 @@
|
||||
padding-right: 0.3125rem;
|
||||
padding-left: 0.3125rem;
|
||||
font-size: $font-size-base * 0.75;
|
||||
color: $gray-700;
|
||||
color: var(--bs-secondary-color);
|
||||
content: "Ctrl + /";
|
||||
border: 1px solid $gray-300;
|
||||
border: 1px solid var(--bs-border-color);
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
|
||||
@@ -59,12 +59,12 @@
|
||||
}
|
||||
|
||||
#suggestions a:focus {
|
||||
background: $gray-100;
|
||||
background-color: var(--bs-tertiary-bg);
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
#suggestions div:not(:first-child) {
|
||||
border-top: 1px dashed $gray-200;
|
||||
border-top: 1px dashed var(--bs-border-color);
|
||||
}
|
||||
|
||||
#suggestions div:first-child {
|
||||
@@ -76,7 +76,7 @@
|
||||
}
|
||||
|
||||
#suggestions a:hover {
|
||||
background: $gray-100;
|
||||
background-color: var(--bs-tertiary-bg);
|
||||
}
|
||||
|
||||
#suggestions span {
|
||||
@@ -86,12 +86,11 @@
|
||||
|
||||
.suggestion__title {
|
||||
font-weight: $headings-font-weight;
|
||||
color: $black;
|
||||
}
|
||||
|
||||
.suggestion__description,
|
||||
.suggestion__no-results {
|
||||
color: $gray-700;
|
||||
color: var(--bs-secondary-color);
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(sm) {
|
||||
@@ -106,7 +105,7 @@
|
||||
.suggestion__title {
|
||||
width: 9rem;
|
||||
padding-right: 1rem;
|
||||
border-right: 1px solid $gray-200;
|
||||
border-right: 1px solid var(--bs-border-color);
|
||||
display: inline-block;
|
||||
text-align: right;
|
||||
}
|
||||
|
@@ -3,6 +3,24 @@
|
||||
top: $navbar-offset;
|
||||
}
|
||||
|
||||
.sidebar-overflow {
|
||||
top: $navbar-offset;
|
||||
max-height: 90vh;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.sidebar-item {
|
||||
color: rgba(0, 0, 0, 0.65);
|
||||
margin-left: 0 !important;
|
||||
padding-left: 0.85rem !important;
|
||||
|
||||
&.active,
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: black;
|
||||
}
|
||||
}
|
||||
|
||||
.btn-toggle {
|
||||
padding: 0.25rem 0.5rem;
|
||||
font-weight: 600;
|
||||
@@ -11,7 +29,7 @@
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: rgba(0, 0, 0, 0.85);
|
||||
color: black;
|
||||
background-color: tint-color($primary, 90%);
|
||||
}
|
||||
|
||||
@@ -24,10 +42,8 @@
|
||||
}
|
||||
}
|
||||
|
||||
// scss-docs-end sidebar
|
||||
|
||||
.btn-toggle[aria-expanded="true"] {
|
||||
color: rgba(0, 0, 0, 0.85);
|
||||
color: black;
|
||||
|
||||
&::before {
|
||||
transform: rotate(90deg);
|
||||
@@ -49,6 +65,58 @@
|
||||
}
|
||||
}
|
||||
|
||||
@if $enable-dark-mode {
|
||||
@include color-mode(dark) {
|
||||
.sidebar-item {
|
||||
color: var(--bs-tertiary-color);
|
||||
margin-left: 0 !important;
|
||||
padding-left: 0.85rem !important;
|
||||
|
||||
&.active,
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: var(--bs-secondary-color);
|
||||
}
|
||||
}
|
||||
|
||||
.btn-toggle {
|
||||
color: var(--bs-tertiary-color);
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: $secondary;
|
||||
background-color: tint-color($primary, 90%);
|
||||
}
|
||||
|
||||
&::before {
|
||||
content: $btn-toggle-dark;
|
||||
}
|
||||
}
|
||||
|
||||
.btn-toggle[aria-expanded="true"] {
|
||||
color: var(--bs-secondary-color);
|
||||
}
|
||||
|
||||
.btn-toggle-nav a {
|
||||
padding: 0.1875rem 0.5rem;
|
||||
margin-top: 0.125rem;
|
||||
margin-left: 1.25rem;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: $secondary;
|
||||
background-color: tint-color($primary, 90%);
|
||||
}
|
||||
|
||||
&.active {
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// scss-docs-end sidebar
|
||||
|
||||
.dropdown-toggle {
|
||||
outline: 0;
|
||||
}
|
||||
|
86
assets/scss/components/_syntax-dark.scss
Normal file
@@ -0,0 +1,86 @@
|
||||
/* Background */ .bg { color: #c9d1d9; background-color: #0d1117; }
|
||||
/* PreWrapper */ .chroma { color: #c9d1d9; background-color: #0d1117; }
|
||||
/* Other */ .chroma .x { }
|
||||
/* Error */ .chroma .err { color: #f85149 }
|
||||
/* CodeLine */ .chroma .cl { }
|
||||
/* LineLink */ .chroma .lnlinks { outline: none; text-decoration: none; color: inherit }
|
||||
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
|
||||
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
|
||||
/* LineHighlight */ .chroma .hl { background-color: #ffffcc }
|
||||
/* LineNumbersTable */ .chroma .lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #64686c }
|
||||
/* LineNumbers */ .chroma .ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #6e7681 }
|
||||
/* Line */ .chroma .line { display: flex; }
|
||||
/* Keyword */ .chroma .k { color: #ff7b72 }
|
||||
/* KeywordConstant */ .chroma .kc { color: #79c0ff }
|
||||
/* KeywordDeclaration */ .chroma .kd { color: #ff7b72 }
|
||||
/* KeywordNamespace */ .chroma .kn { color: #ff7b72 }
|
||||
/* KeywordPseudo */ .chroma .kp { color: #79c0ff }
|
||||
/* KeywordReserved */ .chroma .kr { color: #ff7b72 }
|
||||
/* KeywordType */ .chroma .kt { color: #ff7b72 }
|
||||
/* Name */ .chroma .n { }
|
||||
/* NameAttribute */ .chroma .na { }
|
||||
/* NameBuiltin */ .chroma .nb { }
|
||||
/* NameBuiltinPseudo */ .chroma .bp { }
|
||||
/* NameClass */ .chroma .nc { color: #f0883e; font-weight: bold }
|
||||
/* NameConstant */ .chroma .no { color: #79c0ff; font-weight: bold }
|
||||
/* NameDecorator */ .chroma .nd { color: #d2a8ff; font-weight: bold }
|
||||
/* NameEntity */ .chroma .ni { color: #ffa657 }
|
||||
/* NameException */ .chroma .ne { color: #f0883e; font-weight: bold }
|
||||
/* NameFunction */ .chroma .nf { color: #d2a8ff; font-weight: bold }
|
||||
/* NameFunctionMagic */ .chroma .fm { }
|
||||
/* NameLabel */ .chroma .nl { color: #79c0ff; font-weight: bold }
|
||||
/* NameNamespace */ .chroma .nn { color: #ff7b72 }
|
||||
/* NameOther */ .chroma .nx { }
|
||||
/* NameProperty */ .chroma .py { color: #79c0ff }
|
||||
/* NameTag */ .chroma .nt { color: #7ee787 }
|
||||
/* NameVariable */ .chroma .nv { color: #79c0ff }
|
||||
/* NameVariableClass */ .chroma .vc { }
|
||||
/* NameVariableGlobal */ .chroma .vg { }
|
||||
/* NameVariableInstance */ .chroma .vi { }
|
||||
/* NameVariableMagic */ .chroma .vm { }
|
||||
/* Literal */ .chroma .l { color: #a5d6ff }
|
||||
/* LiteralDate */ .chroma .ld { color: #79c0ff }
|
||||
/* LiteralString */ .chroma .s { color: #a5d6ff }
|
||||
/* LiteralStringAffix */ .chroma .sa { color: #79c0ff }
|
||||
/* LiteralStringBacktick */ .chroma .sb { color: #a5d6ff }
|
||||
/* LiteralStringChar */ .chroma .sc { color: #a5d6ff }
|
||||
/* LiteralStringDelimiter */ .chroma .dl { color: #79c0ff }
|
||||
/* LiteralStringDoc */ .chroma .sd { color: #a5d6ff }
|
||||
/* LiteralStringDouble */ .chroma .s2 { color: #a5d6ff }
|
||||
/* LiteralStringEscape */ .chroma .se { color: #79c0ff }
|
||||
/* LiteralStringHeredoc */ .chroma .sh { color: #79c0ff }
|
||||
/* LiteralStringInterpol */ .chroma .si { color: #a5d6ff }
|
||||
/* LiteralStringOther */ .chroma .sx { color: #a5d6ff }
|
||||
/* LiteralStringRegex */ .chroma .sr { color: #79c0ff }
|
||||
/* LiteralStringSingle */ .chroma .s1 { color: #a5d6ff }
|
||||
/* LiteralStringSymbol */ .chroma .ss { color: #a5d6ff }
|
||||
/* LiteralNumber */ .chroma .m { color: #a5d6ff }
|
||||
/* LiteralNumberBin */ .chroma .mb { color: #a5d6ff }
|
||||
/* LiteralNumberFloat */ .chroma .mf { color: #a5d6ff }
|
||||
/* LiteralNumberHex */ .chroma .mh { color: #a5d6ff }
|
||||
/* LiteralNumberInteger */ .chroma .mi { color: #a5d6ff }
|
||||
/* LiteralNumberIntegerLong */ .chroma .il { color: #a5d6ff }
|
||||
/* LiteralNumberOct */ .chroma .mo { color: #a5d6ff }
|
||||
/* Operator */ .chroma .o { color: #ff7b72; font-weight: bold }
|
||||
/* OperatorWord */ .chroma .ow { color: #ff7b72; font-weight: bold }
|
||||
/* Punctuation */ .chroma .p { }
|
||||
/* Comment */ .chroma .c { color: #8b949e; font-style: italic }
|
||||
/* CommentHashbang */ .chroma .ch { color: #8b949e; font-style: italic }
|
||||
/* CommentMultiline */ .chroma .cm { color: #8b949e; font-style: italic }
|
||||
/* CommentSingle */ .chroma .c1 { color: #8b949e; font-style: italic }
|
||||
/* CommentSpecial */ .chroma .cs { color: #8b949e; font-weight: bold; font-style: italic }
|
||||
/* CommentPreproc */ .chroma .cp { color: #8b949e; font-weight: bold; font-style: italic }
|
||||
/* CommentPreprocFile */ .chroma .cpf { color: #8b949e; font-weight: bold; font-style: italic }
|
||||
/* Generic */ .chroma .g { }
|
||||
/* GenericDeleted */ .chroma .gd { color: #ffa198; background-color: #490202 }
|
||||
/* GenericEmph */ .chroma .ge { font-style: italic }
|
||||
/* GenericError */ .chroma .gr { color: #ffa198 }
|
||||
/* GenericHeading */ .chroma .gh { color: #79c0ff; font-weight: bold }
|
||||
/* GenericInserted */ .chroma .gi { color: #56d364; background-color: #0f5323 }
|
||||
/* GenericOutput */ .chroma .go { color: #8b949e }
|
||||
/* GenericPrompt */ .chroma .gp { color: #8b949e }
|
||||
/* GenericStrong */ .chroma .gs { font-weight: bold }
|
||||
/* GenericSubheading */ .chroma .gu { color: #79c0ff }
|
||||
/* GenericTraceback */ .chroma .gt { color: #ff7b72 }
|
||||
/* GenericUnderline */ .chroma .gl { text-decoration: underline }
|
||||
/* TextWhitespace */ .chroma .w { color: #6e7681 }
|
86
assets/scss/components/_syntax-light.scss
Normal file
@@ -0,0 +1,86 @@
|
||||
/* Background */ .bg { background-color: #ffffff; }
|
||||
/* PreWrapper */ .chroma { background-color: #ffffff; }
|
||||
/* Other */ .chroma .x { }
|
||||
/* Error */ .chroma .err { color: #a61717; background-color: #e3d2d2 }
|
||||
/* CodeLine */ .chroma .cl { }
|
||||
/* LineLink */ .chroma .lnlinks { outline: none; text-decoration: none; color: inherit }
|
||||
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
|
||||
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
|
||||
/* LineHighlight */ .chroma .hl { background-color: #ffffcc }
|
||||
/* LineNumbersTable */ .chroma .lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
|
||||
/* LineNumbers */ .chroma .ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
|
||||
/* Line */ .chroma .line { display: flex; }
|
||||
/* Keyword */ .chroma .k { color: #000000; font-weight: bold }
|
||||
/* KeywordConstant */ .chroma .kc { color: #000000; font-weight: bold }
|
||||
/* KeywordDeclaration */ .chroma .kd { color: #000000; font-weight: bold }
|
||||
/* KeywordNamespace */ .chroma .kn { color: #000000; font-weight: bold }
|
||||
/* KeywordPseudo */ .chroma .kp { color: #000000; font-weight: bold }
|
||||
/* KeywordReserved */ .chroma .kr { color: #000000; font-weight: bold }
|
||||
/* KeywordType */ .chroma .kt { color: #445588; font-weight: bold }
|
||||
/* Name */ .chroma .n { }
|
||||
/* NameAttribute */ .chroma .na { color: #008080 }
|
||||
/* NameBuiltin */ .chroma .nb { color: #0086b3 }
|
||||
/* NameBuiltinPseudo */ .chroma .bp { color: #999999 }
|
||||
/* NameClass */ .chroma .nc { color: #445588; font-weight: bold }
|
||||
/* NameConstant */ .chroma .no { color: #008080 }
|
||||
/* NameDecorator */ .chroma .nd { color: #3c5d5d; font-weight: bold }
|
||||
/* NameEntity */ .chroma .ni { color: #800080 }
|
||||
/* NameException */ .chroma .ne { color: #990000; font-weight: bold }
|
||||
/* NameFunction */ .chroma .nf { color: #990000; font-weight: bold }
|
||||
/* NameFunctionMagic */ .chroma .fm { }
|
||||
/* NameLabel */ .chroma .nl { color: #990000; font-weight: bold }
|
||||
/* NameNamespace */ .chroma .nn { color: #555555 }
|
||||
/* NameOther */ .chroma .nx { }
|
||||
/* NameProperty */ .chroma .py { }
|
||||
/* NameTag */ .chroma .nt { color: #000080 }
|
||||
/* NameVariable */ .chroma .nv { color: #008080 }
|
||||
/* NameVariableClass */ .chroma .vc { color: #008080 }
|
||||
/* NameVariableGlobal */ .chroma .vg { color: #008080 }
|
||||
/* NameVariableInstance */ .chroma .vi { color: #008080 }
|
||||
/* NameVariableMagic */ .chroma .vm { }
|
||||
/* Literal */ .chroma .l { }
|
||||
/* LiteralDate */ .chroma .ld { }
|
||||
/* LiteralString */ .chroma .s { color: #dd1144 }
|
||||
/* LiteralStringAffix */ .chroma .sa { color: #dd1144 }
|
||||
/* LiteralStringBacktick */ .chroma .sb { color: #dd1144 }
|
||||
/* LiteralStringChar */ .chroma .sc { color: #dd1144 }
|
||||
/* LiteralStringDelimiter */ .chroma .dl { color: #dd1144 }
|
||||
/* LiteralStringDoc */ .chroma .sd { color: #dd1144 }
|
||||
/* LiteralStringDouble */ .chroma .s2 { color: #dd1144 }
|
||||
/* LiteralStringEscape */ .chroma .se { color: #dd1144 }
|
||||
/* LiteralStringHeredoc */ .chroma .sh { color: #dd1144 }
|
||||
/* LiteralStringInterpol */ .chroma .si { color: #dd1144 }
|
||||
/* LiteralStringOther */ .chroma .sx { color: #dd1144 }
|
||||
/* LiteralStringRegex */ .chroma .sr { color: #009926 }
|
||||
/* LiteralStringSingle */ .chroma .s1 { color: #dd1144 }
|
||||
/* LiteralStringSymbol */ .chroma .ss { color: #990073 }
|
||||
/* LiteralNumber */ .chroma .m { color: #009999 }
|
||||
/* LiteralNumberBin */ .chroma .mb { color: #009999 }
|
||||
/* LiteralNumberFloat */ .chroma .mf { color: #009999 }
|
||||
/* LiteralNumberHex */ .chroma .mh { color: #009999 }
|
||||
/* LiteralNumberInteger */ .chroma .mi { color: #009999 }
|
||||
/* LiteralNumberIntegerLong */ .chroma .il { color: #009999 }
|
||||
/* LiteralNumberOct */ .chroma .mo { color: #009999 }
|
||||
/* Operator */ .chroma .o { color: #000000; font-weight: bold }
|
||||
/* OperatorWord */ .chroma .ow { color: #000000; font-weight: bold }
|
||||
/* Punctuation */ .chroma .p { }
|
||||
/* Comment */ .chroma .c { color: #999988; font-style: italic }
|
||||
/* CommentHashbang */ .chroma .ch { color: #999988; font-style: italic }
|
||||
/* CommentMultiline */ .chroma .cm { color: #999988; font-style: italic }
|
||||
/* CommentSingle */ .chroma .c1 { color: #999988; font-style: italic }
|
||||
/* CommentSpecial */ .chroma .cs { color: #999999; font-weight: bold; font-style: italic }
|
||||
/* CommentPreproc */ .chroma .cp { color: #999999; font-weight: bold; font-style: italic }
|
||||
/* CommentPreprocFile */ .chroma .cpf { color: #999999; font-weight: bold; font-style: italic }
|
||||
/* Generic */ .chroma .g { }
|
||||
/* GenericDeleted */ .chroma .gd { color: #000000; background-color: #ffdddd }
|
||||
/* GenericEmph */ .chroma .ge { color: #000000; font-style: italic }
|
||||
/* GenericError */ .chroma .gr { color: #aa0000 }
|
||||
/* GenericHeading */ .chroma .gh { color: #999999 }
|
||||
/* GenericInserted */ .chroma .gi { color: #000000; background-color: #ddffdd }
|
||||
/* GenericOutput */ .chroma .go { color: #888888 }
|
||||
/* GenericPrompt */ .chroma .gp { color: #555555 }
|
||||
/* GenericStrong */ .chroma .gs { font-weight: bold }
|
||||
/* GenericSubheading */ .chroma .gu { color: #aaaaaa }
|
||||
/* GenericTraceback */ .chroma .gt { color: #aa0000 }
|
||||
/* GenericUnderline */ .chroma .gl { text-decoration: underline }
|
||||
/* TextWhitespace */ .chroma .w { color: #bbbbbb }
|
@@ -1,85 +1,40 @@
|
||||
/* Background */ .bg { color: #272822; background-color: #fafafa }
|
||||
/* PreWrapper */ .chroma { color: #272822; background-color: #fafafa; }
|
||||
/* Other */ .chroma .x { }
|
||||
/* Error */ .chroma .err { color: #960050; background-color: #1e0010 }
|
||||
/* CodeLine */ .chroma .cl { }
|
||||
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
|
||||
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
|
||||
/* LineHighlight */ .chroma .hl { background-color: #ffffcc }
|
||||
/* LineNumbersTable */ .chroma .lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
|
||||
/* LineNumbers */ .chroma .ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
|
||||
/* Line */ .chroma .line { display: flex; }
|
||||
/* Keyword */ .chroma .k { color: #00a8c8 }
|
||||
/* KeywordConstant */ .chroma .kc { color: #00a8c8 }
|
||||
/* KeywordDeclaration */ .chroma .kd { color: #00a8c8 }
|
||||
/* KeywordNamespace */ .chroma .kn { color: #f92672 }
|
||||
/* KeywordPseudo */ .chroma .kp { color: #00a8c8 }
|
||||
/* KeywordReserved */ .chroma .kr { color: #00a8c8 }
|
||||
/* KeywordType */ .chroma .kt { color: #00a8c8 }
|
||||
/* Name */ .chroma .n { color: #111111 }
|
||||
/* NameAttribute */ .chroma .na { color: #75af00 }
|
||||
/* NameBuiltin */ .chroma .nb { color: #111111 }
|
||||
/* NameBuiltinPseudo */ .chroma .bp { color: #111111 }
|
||||
/* NameClass */ .chroma .nc { color: #75af00 }
|
||||
/* NameConstant */ .chroma .no { color: #00a8c8 }
|
||||
/* NameDecorator */ .chroma .nd { color: #75af00 }
|
||||
/* NameEntity */ .chroma .ni { color: #111111 }
|
||||
/* NameException */ .chroma .ne { color: #75af00 }
|
||||
/* NameFunction */ .chroma .nf { color: #75af00 }
|
||||
/* NameFunctionMagic */ .chroma .fm { color: #111111 }
|
||||
/* NameLabel */ .chroma .nl { color: #111111 }
|
||||
/* NameNamespace */ .chroma .nn { color: #111111 }
|
||||
/* NameOther */ .chroma .nx { color: #75af00 }
|
||||
/* NameProperty */ .chroma .py { color: #111111 }
|
||||
/* NameTag */ .chroma .nt { color: #f92672 }
|
||||
/* NameVariable */ .chroma .nv { color: #111111 }
|
||||
/* NameVariableClass */ .chroma .vc { color: #111111 }
|
||||
/* NameVariableGlobal */ .chroma .vg { color: #111111 }
|
||||
/* NameVariableInstance */ .chroma .vi { color: #111111 }
|
||||
/* NameVariableMagic */ .chroma .vm { color: #111111 }
|
||||
/* Literal */ .chroma .l { color: #ae81ff }
|
||||
/* LiteralDate */ .chroma .ld { color: #d88200 }
|
||||
/* LiteralString */ .chroma .s { color: #d88200 }
|
||||
/* LiteralStringAffix */ .chroma .sa { color: #d88200 }
|
||||
/* LiteralStringBacktick */ .chroma .sb { color: #d88200 }
|
||||
/* LiteralStringChar */ .chroma .sc { color: #d88200 }
|
||||
/* LiteralStringDelimiter */ .chroma .dl { color: #d88200 }
|
||||
/* LiteralStringDoc */ .chroma .sd { color: #d88200 }
|
||||
/* LiteralStringDouble */ .chroma .s2 { color: #d88200 }
|
||||
/* LiteralStringEscape */ .chroma .se { color: #8045ff }
|
||||
/* LiteralStringHeredoc */ .chroma .sh { color: #d88200 }
|
||||
/* LiteralStringInterpol */ .chroma .si { color: #d88200 }
|
||||
/* LiteralStringOther */ .chroma .sx { color: #d88200 }
|
||||
/* LiteralStringRegex */ .chroma .sr { color: #d88200 }
|
||||
/* LiteralStringSingle */ .chroma .s1 { color: #d88200 }
|
||||
/* LiteralStringSymbol */ .chroma .ss { color: #d88200 }
|
||||
/* LiteralNumber */ .chroma .m { color: #ae81ff }
|
||||
/* LiteralNumberBin */ .chroma .mb { color: #ae81ff }
|
||||
/* LiteralNumberFloat */ .chroma .mf { color: #ae81ff }
|
||||
/* LiteralNumberHex */ .chroma .mh { color: #ae81ff }
|
||||
/* LiteralNumberInteger */ .chroma .mi { color: #ae81ff }
|
||||
/* LiteralNumberIntegerLong */ .chroma .il { color: #ae81ff }
|
||||
/* LiteralNumberOct */ .chroma .mo { color: #ae81ff }
|
||||
/* Operator */ .chroma .o { color: #f92672 }
|
||||
/* OperatorWord */ .chroma .ow { color: #f92672 }
|
||||
/* Punctuation */ .chroma .p { color: #111111 }
|
||||
/* Comment */ .chroma .c { color: #75715e }
|
||||
/* CommentHashbang */ .chroma .ch { color: #75715e }
|
||||
/* CommentMultiline */ .chroma .cm { color: #75715e }
|
||||
/* CommentSingle */ .chroma .c1 { color: #75715e }
|
||||
/* CommentSpecial */ .chroma .cs { color: #75715e }
|
||||
/* CommentPreproc */ .chroma .cp { color: #75715e }
|
||||
/* CommentPreprocFile */ .chroma .cpf { color: #75715e }
|
||||
/* Generic */ .chroma .g { }
|
||||
/* GenericDeleted */ .chroma .gd { }
|
||||
/* GenericEmph */ .chroma .ge { font-style: italic }
|
||||
/* GenericError */ .chroma .gr { }
|
||||
/* GenericHeading */ .chroma .gh { }
|
||||
/* GenericInserted */ .chroma .gi { }
|
||||
/* GenericOutput */ .chroma .go { }
|
||||
/* GenericPrompt */ .chroma .gp { }
|
||||
/* GenericStrong */ .chroma .gs { font-weight: bold }
|
||||
/* GenericSubheading */ .chroma .gu { }
|
||||
/* GenericTraceback */ .chroma .gt { }
|
||||
/* GenericUnderline */ .chroma .gl { }
|
||||
/* TextWhitespace */ .chroma .w { }
|
||||
// stylelint-disable annotation-no-unknown
|
||||
@import "syntax-light";
|
||||
|
||||
.bg,
|
||||
.chroma,
|
||||
.chroma .err {
|
||||
// set to transparent background to avoid rendering issues with example shortcode
|
||||
background-color: transparent if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
||||
.syntax-highlight {
|
||||
background-color: var(--bs-light) if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
||||
.preview-background {
|
||||
background-color: var(--bs-secondary-bg) if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
||||
@if $enable-dark-mode {
|
||||
[data-bs-theme="dark"] {
|
||||
@import "syntax-dark"; // stylelint-disable-line no-invalid-position-at-import-rule
|
||||
|
||||
.bg,
|
||||
.chroma,
|
||||
.chroma .err {
|
||||
// set to transparent background to avoid rendering issues with example shortcode
|
||||
background-color: transparent if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
||||
.syntax-highlight {
|
||||
background-color: var(--bs-tertiary-bg) if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
||||
.bg,
|
||||
.chroma {
|
||||
color: #c9d1d9 if($enable-important-utilities, !important, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
// stylelint-enable annotation-no-unknown
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// stylelint-disable function-name-case
|
||||
// stylelint-disable function-name-case, declaration-no-important
|
||||
|
||||
// scss-docs-start colored-links
|
||||
@each $color, $value in $theme-colors {
|
||||
@@ -6,16 +6,20 @@
|
||||
$color-rgb: to-rgb($value);
|
||||
|
||||
.link-bg-#{$color} {
|
||||
color: $contrast-color !important; // stylelint-disable-line declaration-no-important
|
||||
background-color: RGBA($color-rgb, var(--#{$prefix}bg-opacity, 1)) if($enable-important-utilities, !important, null); // stylelint-disable-line annotation-no-unknown
|
||||
color: $contrast-color if($enable-important-utilities, !important, null);
|
||||
background-color: RGBA($color-rgb, var(--#{$prefix}bg-opacity, 1)) if($enable-important-utilities, !important, null);
|
||||
|
||||
@if $link-shade-percentage != 0 {
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: if($contrast-color == $color-contrast-light, shade-color($contrast-color, $link-shade-percentage), tint-color($contrast-color, $link-shade-percentage)) !important; // stylelint-disable-line declaration-no-important
|
||||
color: if($contrast-color == $color-contrast-light,
|
||||
shade-color($contrast-color, $link-shade-percentage),
|
||||
tint-color($contrast-color, $link-shade-percentage))
|
||||
if($enable-important-utilities, !important, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// scss-docs-end colored-links
|
||||
// stylelint-enable function-name-case, declaration-no-important
|
||||
|
30
assets/scss/helpers/_display.scss
Normal file
@@ -0,0 +1,30 @@
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
// stylelint-disable annotation-no-unknown
|
||||
|
||||
// scss-docs-start display-color
|
||||
.d-none-light {
|
||||
display: none if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
||||
.d-none-dark {
|
||||
display: block if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
||||
@if $enable-dark-mode {
|
||||
@include color-mode(dark) {
|
||||
.d-none-light {
|
||||
display: block if($enable-important-utilities, !important, null);
|
||||
}
|
||||
|
||||
.d-none-dark {
|
||||
display: none if($enable-important-utilities, !important, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// scss-docs-end display-color
|
||||
|
||||
// stylelint-enable annotation-no-unknown
|
@@ -1,3 +1,4 @@
|
||||
pre {
|
||||
padding: $spacer;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
62
assets/scss/theme/fonts.scss
Normal file
@@ -0,0 +1,62 @@
|
||||
/*!
|
||||
* Copyright (c) 2016-2020 The Inter Project Authors.
|
||||
* "Inter" is trademark of Rasmus Andersson.
|
||||
* https://github.com/rsms/inter
|
||||
|
||||
* 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
|
||||
*/
|
||||
|
||||
/* inter-200 - latin */
|
||||
@font-face {
|
||||
font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 200;
|
||||
src: url('../fonts/inter-v12-latin-200.eot'); /* IE9 Compat Modes */
|
||||
src: url('../fonts/inter-v12-latin-200.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
|
||||
url('../fonts/inter-v12-latin-200.woff2') format('woff2'), /* Super Modern Browsers */
|
||||
url('../fonts/inter-v12-latin-200.woff') format('woff'), /* Modern Browsers */
|
||||
url('../fonts/inter-v12-latin-200.ttf') format('truetype'), /* Safari, Android, iOS */
|
||||
url('../fonts/inter-v12-latin-200.svg#Inter') format('svg'); /* Legacy iOS */
|
||||
}
|
||||
/* inter-300 - latin */
|
||||
@font-face {
|
||||
font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
src: url('../fonts/inter-v12-latin-300.eot'); /* IE9 Compat Modes */
|
||||
src: url('../fonts/inter-v12-latin-300.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
|
||||
url('../fonts/inter-v12-latin-300.woff2') format('woff2'), /* Super Modern Browsers */
|
||||
url('../fonts/inter-v12-latin-300.woff') format('woff'), /* Modern Browsers */
|
||||
url('../fonts/inter-v12-latin-300.ttf') format('truetype'), /* Safari, Android, iOS */
|
||||
url('../fonts/inter-v12-latin-300.svg#Inter') format('svg'); /* Legacy iOS */
|
||||
}
|
||||
/* inter-regular - latin */
|
||||
@font-face {
|
||||
font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url('../fonts/inter-v12-latin-regular.eot'); /* IE9 Compat Modes */
|
||||
src: url('../fonts/inter-v12-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
|
||||
url('../fonts/inter-v12-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */
|
||||
url('../fonts/inter-v12-latin-regular.woff') format('woff'), /* Modern Browsers */
|
||||
url('../fonts/inter-v12-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */
|
||||
url('../fonts/inter-v12-latin-regular.svg#Inter') format('svg'); /* Legacy iOS */
|
||||
}
|
||||
/* inter-600 - latin */
|
||||
@font-face {
|
||||
font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
src: url('../fonts/inter-v12-latin-600.eot'); /* IE9 Compat Modes */
|
||||
src: url('../fonts/inter-v12-latin-600.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
|
||||
url('../fonts/inter-v12-latin-600.woff2') format('woff2'), /* Super Modern Browsers */
|
||||
url('../fonts/inter-v12-latin-600.woff') format('woff'), /* Modern Browsers */
|
||||
url('../fonts/inter-v12-latin-600.ttf') format('truetype'), /* Safari, Android, iOS */
|
||||
url('../fonts/inter-v12-latin-600.svg#Inter') format('svg'); /* Legacy iOS */
|
||||
}
|
2
assets/scss/theme/theme.scss
Normal file
@@ -0,0 +1,2 @@
|
||||
// Placeholder to quickly add your own styles
|
||||
// The file is included last in the build pipeline
|
@@ -6,7 +6,7 @@ enableGitInfo = true
|
||||
# toml-docs-end main
|
||||
|
||||
# additional settings
|
||||
baseURL = "https://hinode-demo.markdumay.org/"
|
||||
baseURL = "https://demo.gethinode.com/"
|
||||
canonifyURLs = false
|
||||
enableEmoji = true
|
||||
enableRobotsTXT = true
|
||||
@@ -16,9 +16,9 @@ enableInlineShortcodes = true
|
||||
# See https://github.com/gohugoio/hugo/issues/7228#issuecomment-714490456
|
||||
ignoreErrors = ["error-remote-getjson"]
|
||||
|
||||
# toml-docs-start build
|
||||
# toml-docs-start timeout
|
||||
timeout = "60s"
|
||||
# toml-docs-end build
|
||||
# toml-docs-end timeout
|
||||
|
||||
# toml-docs-start language
|
||||
languageCode = "en-us"
|
||||
@@ -26,6 +26,11 @@ defaultContentLanguage = "en"
|
||||
defaultContentLanguageInSubdir = true
|
||||
# toml-docs-end language
|
||||
|
||||
# toml-docs-start build
|
||||
[build]
|
||||
writeStats = true
|
||||
# toml-docs-end build
|
||||
|
||||
[taxonomies]
|
||||
tag = 'tags'
|
||||
|
||||
@@ -53,7 +58,6 @@ defaultContentLanguageInSubdir = true
|
||||
[services.twitter]
|
||||
disableInlineCSS = true
|
||||
|
||||
|
||||
[outputFormats]
|
||||
[outputFormats.XML]
|
||||
isPlainText = false
|
||||
|
@@ -8,8 +8,6 @@
|
||||
[en.params.head]
|
||||
tagline = "A Hugo Theme"
|
||||
[en.params.feature]
|
||||
message = "Welcome to Hinode!"
|
||||
tagline = "A clean documentation and blog theme for your Hugo site based on Bootstrap 5."
|
||||
link = "/en/about"
|
||||
caption = "About"
|
||||
[en.params.footer]
|
||||
@@ -25,8 +23,6 @@
|
||||
[nl.params.head]
|
||||
tagline = "Een Hugo Thema"
|
||||
[nl.params.feature]
|
||||
message = "Welkom bij Hinode!"
|
||||
tagline = "Een documentatie en blog thema voor Hugo gebaseerd op Bootstrap 5."
|
||||
link = "/nl/over-mij"
|
||||
caption = "Over mij"
|
||||
[nl.params.footer]
|
||||
|
@@ -10,8 +10,10 @@ defaultMarkdownHandler = "goldmark"
|
||||
lineNos = false
|
||||
lineNumbersInTable = false
|
||||
noClasses = false
|
||||
# style = "monokailight" ## Update the 'create:syntax' command in package.json to modify the style
|
||||
tabWidth = 2
|
||||
## Update the 'create:syntax' command in package.json to modify the style
|
||||
## The first two lines have been modified to remove the background color
|
||||
# style = "monokailight"
|
||||
|
||||
[goldmark]
|
||||
[goldmark.extensions]
|
||||
|
@@ -3,20 +3,15 @@
|
||||
url = "/about/"
|
||||
weight = 10
|
||||
|
||||
[[main]]
|
||||
name = "Docs"
|
||||
url = "/docs/"
|
||||
weight = 20
|
||||
|
||||
[[main]]
|
||||
name = "Blog"
|
||||
url = "/blog/"
|
||||
weight = 30
|
||||
weight = 20
|
||||
|
||||
[[main]]
|
||||
name = "Projects"
|
||||
url = "/projects/"
|
||||
weight = 40
|
||||
weight = 30
|
||||
|
||||
[[main]]
|
||||
name = "Sample project"
|
||||
@@ -33,7 +28,7 @@
|
||||
[[main]]
|
||||
name = "Tags"
|
||||
url = "/tags/"
|
||||
weight = 50
|
||||
weight = 40
|
||||
|
||||
[[social]]
|
||||
name = "LinkedIn"
|
||||
|
@@ -13,6 +13,18 @@
|
||||
url = "/projecten/"
|
||||
weight = 30
|
||||
|
||||
[[main]]
|
||||
name = "Voorbeeldproject"
|
||||
url = "/nl/projecten/voorbeeldproject/"
|
||||
parent = "Projecten"
|
||||
weight = 1
|
||||
|
||||
[[main]]
|
||||
name = "Ander project"
|
||||
url = "/nl/projecten/ander-project/"
|
||||
parent = "Projecten"
|
||||
weight = 2
|
||||
|
||||
[[main]]
|
||||
name = "Tags"
|
||||
url = "/tags/"
|
||||
@@ -34,4 +46,28 @@
|
||||
name = "Medium"
|
||||
pre = "<i class=\"fab fa-medium fa-2x\"></i>"
|
||||
url = "https://medium.com/"
|
||||
weight = 30
|
||||
weight = 30
|
||||
|
||||
# toml-docs-start sample-navigation
|
||||
[[sample]]
|
||||
name = "Blog"
|
||||
url = "/blog/"
|
||||
weight = 10
|
||||
|
||||
[[sample]]
|
||||
name = "Projecten"
|
||||
url = "/projecten/"
|
||||
weight = 20
|
||||
|
||||
[[sample]]
|
||||
name = "Voorbeeldproject"
|
||||
url = "/nl/projecten/voorbeeldproject/"
|
||||
parent = "Projecten"
|
||||
weight = 1
|
||||
|
||||
[[sample]]
|
||||
name = "Ander project"
|
||||
url = "/nl/projecten/ander-project/"
|
||||
parent = "Projecten"
|
||||
weight = 2
|
||||
# toml-docs-end sample-navigation
|
@@ -2,11 +2,13 @@
|
||||
[main]
|
||||
separator = "-"
|
||||
description = "Hinode is a clean documentation and blog theme for your Hugo site based on Bootstrap 5."
|
||||
enableDarkMode = true
|
||||
# toml-docs-end main
|
||||
|
||||
# toml-docs-start docs
|
||||
[docs]
|
||||
version = "0.8"
|
||||
basePath = ""
|
||||
# toml-docs-end docs
|
||||
|
||||
# toml-docs-start home
|
||||
@@ -14,15 +16,15 @@
|
||||
sections = ["blog", "projects"]
|
||||
featurePhoto = "/img/sunrise.jpg" # source: https://unsplash.com/photos/ZX6BPboJrYk
|
||||
fullCover = false
|
||||
style = ""
|
||||
# toml-docs-end home
|
||||
|
||||
# toml-docs-start navigation
|
||||
[navigation]
|
||||
logo = "/img/logo_embedded.svg"
|
||||
color = "white"
|
||||
style = "light"
|
||||
logo = "/img/logo_icon.svg"
|
||||
color = "body"
|
||||
fixed = true
|
||||
offset = "3em"
|
||||
offset = "5em"
|
||||
search = true
|
||||
breadcrumb = false
|
||||
toc = true
|
||||
@@ -41,8 +43,9 @@
|
||||
header = "full"
|
||||
footer = "none"
|
||||
orientation = "stacked"
|
||||
style = "border-0"
|
||||
style = "border-0 card-zoom"
|
||||
homepage = 3
|
||||
separator = true
|
||||
[projects]
|
||||
title = "Projects"
|
||||
sort = "title"
|
||||
@@ -55,6 +58,7 @@
|
||||
orientation = "none"
|
||||
style = "border-1 card-emphasize"
|
||||
homepage = 3
|
||||
separator = false
|
||||
# toml-docs-end list
|
||||
|
||||
[favicon]
|
||||
@@ -63,7 +67,7 @@
|
||||
|
||||
# toml-docs-start theme-colors
|
||||
[style]
|
||||
primary = "#D43900"
|
||||
primary = "#d43900"
|
||||
secondary = "#6c757d"
|
||||
success = "#198754"
|
||||
info = "#0dcaf0"
|
||||
@@ -75,8 +79,12 @@
|
||||
themeOpacity = "10"
|
||||
# toml-docs-start font
|
||||
themeFont = "Inter"
|
||||
themeFontPath = "https://fonts.googleapis.com/css2?family=Inter:wght@200;300;600&display=swap"
|
||||
# themeFontPath = "https://fonts.googleapis.com/css2?family=Inter:wght@200;300;600&display=swap" # external path
|
||||
themeFontPath = "/fonts" # local path
|
||||
# toml-docs-end font
|
||||
# toml-docs-start build
|
||||
purge = false
|
||||
# toml-docs-end build
|
||||
|
||||
[schema]
|
||||
type = "Organization"
|
||||
@@ -84,11 +92,11 @@
|
||||
locale = "en-US"
|
||||
# twitter = "https://twitter.com/gethinode"
|
||||
# linkedIn = ""
|
||||
github = "https://github.com/markdumay/hugo-theme-hinode"
|
||||
github = "https://github.com/gethinode/hinode"
|
||||
section = "blog"
|
||||
[author]
|
||||
name = "Mark Dumay"
|
||||
twitter = "https://twitter.com/markdumay"
|
||||
# twitter = "https://twitter.com/markdumay"
|
||||
linkedin = "https://www.linkedin.com/in/markdumay/"
|
||||
github = "https://github.com/markdumay"
|
||||
[logo]
|
||||
@@ -114,68 +122,11 @@
|
||||
#theme = ""
|
||||
|
||||
[links]
|
||||
blist = "https://github.com/apvarun/blist-hugo-theme"
|
||||
bootstrap = "https://getbootstrap.com"
|
||||
bs_badge_heading = "https://getbootstrap.com/docs/5.2/components/badge/#headings"
|
||||
bs_breakpoints = "https://getbootstrap.com/docs/5.3/layout/breakpoints"
|
||||
bs_grid = "https://getbootstrap.com/docs/5.3/layout/grid"
|
||||
bs_offcanvas = "https://getbootstrap.com/docs/5.3/components/offcanvas"
|
||||
bs_navbar_placement = "https://getbootstrap.com/docs/5.3/components/navbar/#placement"
|
||||
bs_tables = "https://getbootstrap.com/docs/5.3/content/tables"
|
||||
cc_by_nc_4_0 = "https://creativecommons.org/licenses/by-nc/4.0/"
|
||||
commit_message = "https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html"
|
||||
contrast_checker = "https://accessibleweb.com/color-contrast-checker/"
|
||||
css_codeguide = "https://codeguide.co/#css"
|
||||
doks = "https://github.com/h-enk/doks"
|
||||
eslint = "https://eslint.org"
|
||||
flexsearch = "https://github.com/nextapps-de/flexsearch"
|
||||
fontawesome = "https://fontawesome.com"
|
||||
fa_icons = "https://fontawesome.com/icons"
|
||||
fa_styling = "https://fontawesome.com/docs/web/style/styling"
|
||||
fa_animation = "https://fontawesome.com/docs/web/style/animate"
|
||||
git_download = "https://git-scm.com"
|
||||
github_pr = "https://help.github.com/articles/about-pull-requests/"
|
||||
github_rebase = "https://help.github.com/articles/about-git-rebase/"
|
||||
google_fonts = "https://fonts.google.com"
|
||||
html_codeguide = "https://codeguide.co/#html"
|
||||
hugo = "https://gohugo.io"
|
||||
hugo_config = "https://gohugo.io/getting-started/configuration/#all-configuration-settings"
|
||||
hugo_config_dir = "https://gohugo.io/getting-started/configuration/#configuration-directory"
|
||||
hugo_content = "https://gohugo.io/content-management/formats"
|
||||
hugo_chroma = "https://gohugo.io/content-management/syntax-highlighting/#list-of-chroma-highlighting-languages"
|
||||
hugo_fingerprint = "https://gohugo.io/hugo-pipes/fingerprint"
|
||||
hugo_frontmatter = "https://gohugo.io/content-management/front-matter"
|
||||
hugo_i18n = "https://gohugo.io/functions/i18n"
|
||||
hugo_lang = "https://gohugo.io/content-management/multilingual"
|
||||
hugo_lang_config = "https://gohugo.io/content-management/multilingual/#configure-languages"
|
||||
hugo_menus = "https://gohugo.io/content-management/menus/"
|
||||
hinode_docs = "https://gethinode.com/docs"
|
||||
hugo_imaging = "https://gohugo.io/content-management/image-processing/#imaging-configuration"
|
||||
hugo_ordering = "https://gohugo.io/templates/lists/#order-content"
|
||||
hugo_templates = "https://gohugo.io/templates/introduction/"
|
||||
hugo_toc = "https://gohugo.io/content-management/toc"
|
||||
issue_tracker = "https://github.com/markdumay/hugo-theme-hinode/issues"
|
||||
license = "https://github.com/markdumay/hugo-theme-hinode/blob/main/LICENSE"
|
||||
markdown_emoji = "https://gist.github.com/rxaviers/7360908"
|
||||
markdown_md013 = "https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#md013---line-length"
|
||||
markdown_md024 = "https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#md024---multiple-headings-with-the-same-content"
|
||||
markdown_md026 = "https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#md026---trailing-punctuation-in-heading"
|
||||
markdown_md033 = "https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#md033---inline-html"
|
||||
markdown_md034 = "https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#md034---bare-url-used"
|
||||
markdown_md051 = "https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#md051---link-fragments-should-be-valid"
|
||||
markdown_md053 = "https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#md053---link-and-image-reference-definitions-should-be-needed"
|
||||
markdown_rules = "https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md"
|
||||
markdownlint = "https://github.com/DavidAnson/markdownlint-cli2"
|
||||
mozilla_image = "https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images"
|
||||
netlify = "https://www.netlify.com"
|
||||
nodejs = "https://nodejs.org"
|
||||
npm = "https://www.npmjs.com"
|
||||
observatory = "https://observatory.mozilla.org/analyze/hinode-demo.markdumay.org"
|
||||
package_npm = "https://www.npmjs.com/package/@markdumay/hugo-theme-hinode"
|
||||
pagespeed = "https://pagespeed.web.dev/report?url=https%3A%2F%2Fhinode-demo.markdumay.org%2F"
|
||||
repository = "https://github.com/markdumay/hugo-theme-hinode"
|
||||
repository_child = "https://github.com/markdumay/hugo-theme-hinode-child.git"
|
||||
repository_owner = "https://github.com/markdumay/"
|
||||
semver = "https://semver.org"
|
||||
stylelint = "https://stylelint.io"
|
||||
observatory = "https://observatory.mozilla.org/analyze/demo.gethinode.com"
|
||||
pagespeed = "https://pagespeed.web.dev/report?url=https%3A%2F%2Fdemo.gethinode.com%2F"
|
||||
utterances = "https://utteranc.es"
|
||||
wcag_contrast = "https://www.w3.org/TR/WCAG20/#visual-audio-contrast"
|
||||
|
@@ -32,6 +32,11 @@ for = '/**'
|
||||
fullscreen=(), \
|
||||
payment=() \
|
||||
"""
|
||||
Cache-Control = "public, max-age=31536000"
|
||||
cache-control = """\
|
||||
max-age=0, \
|
||||
no-cache, \
|
||||
no-store, \
|
||||
must-revalidate \
|
||||
"""
|
||||
Access-Control-Allow-Origin = "*"
|
||||
# toml-docs-end server-config
|
@@ -1,47 +1,40 @@
|
||||
const autoprefixer = require('autoprefixer');
|
||||
const purgecss = require('@fullhuman/postcss-purgecss');
|
||||
const whitelister = require('purgecss-whitelister');
|
||||
const autoprefixer = require('autoprefixer')({})
|
||||
const cssnano = require('cssnano')({
|
||||
preset: 'advanced'
|
||||
})
|
||||
const whitelister = require('purgecss-whitelister')
|
||||
const purgecss = require('@fullhuman/postcss-purgecss')({
|
||||
content: ['./hugo_stats.json'],
|
||||
defaultExtractor: (content) => {
|
||||
const els = JSON.parse(content).htmlElements
|
||||
return [...(els.tags || []), ...(els.classes || []), ...(els.ids || [])]
|
||||
},
|
||||
dynamicAttributes: ['data-bs-theme'],
|
||||
safelist: [
|
||||
...whitelister([
|
||||
'./assets/scss/components/_clipboard.scss',
|
||||
'./assets/scss/components/_command.scss',
|
||||
'./assets/scss/components/_navbar.scss',
|
||||
'./assets/scss/components/_search.scss',
|
||||
'./assets/scss/components/_syntax.scss',
|
||||
'./assets/scss/components/_syntax-dark.scss',
|
||||
'./assets/scss/components/_syntax-light.scss',
|
||||
'./assets/scss/theme/fonts.scss',
|
||||
'./assets/scss/theme/theme.scss',
|
||||
'./node_modules/bootstrap/scss/_carousel.scss',
|
||||
'./node_modules/bootstrap/scss/_dropdown.scss',
|
||||
'./node_modules/bootstrap/scss/_reboot.scss',
|
||||
'./node_modules/bootstrap/scss/_tooltip.scss',
|
||||
'./node_modules/bootstrap/scss/_transitions.scss',
|
||||
'./node_modules/bootstrap/scss/_utilities.scss'
|
||||
])
|
||||
]
|
||||
})
|
||||
|
||||
module.exports = {
|
||||
plugins: [
|
||||
autoprefixer(),
|
||||
purgecss({
|
||||
content: [
|
||||
'./layouts/**/*.html',
|
||||
'./content/**/*.md',
|
||||
],
|
||||
safelist: [
|
||||
/lazyloaded/,
|
||||
/table/,
|
||||
/thead/,
|
||||
/tbody/,
|
||||
/tr/,
|
||||
/th/,
|
||||
/td/,
|
||||
/h5/,
|
||||
/alert-link/,
|
||||
/container-xxl/,
|
||||
/container-fluid/,
|
||||
/^bg-opacity-\d+/,
|
||||
/svg.*/,
|
||||
/fa.*/,
|
||||
/ratio.*/,
|
||||
/suggestion.*/,
|
||||
...whitelister([
|
||||
'./assets/scss/components/_blockquote.scss',
|
||||
'./assets/scss/components/_buttons.scss',
|
||||
'./assets/scss/components/_card.scss',
|
||||
'./assets/scss/components/_clipboard.scss',
|
||||
'./assets/scss/components/_img.scss',
|
||||
'./assets/scss/components/_navbar.scss',
|
||||
'./assets/scss/components/_search.scss',
|
||||
'./assets/scss/components/_syntax.scss',
|
||||
'./assets/scss/layouts/_reboot.scss',
|
||||
'./assets/scss/layouts/type.scss',
|
||||
'./node_modules/bootstrap/scss/_dropdown.scss',
|
||||
'./node_modules/bootstrap/scss/_utilities.scss',
|
||||
]),
|
||||
],
|
||||
}),
|
||||
],
|
||||
autoprefixer,
|
||||
cssnano,
|
||||
purgecss
|
||||
]
|
||||
}
|
||||
|
31
config/production/deployment.toml
Normal file
@@ -0,0 +1,31 @@
|
||||
# toml-docs-start az-blob
|
||||
# By default, files are uploaded in an arbitrary order.
|
||||
# Files that match the regular expressions in the "Order" list
|
||||
# will be uploaded first, in the listed order.
|
||||
order = [".webp$", ".jpg$", ".gif$"]
|
||||
|
||||
[targets]
|
||||
name = "hinode"
|
||||
URL = "azblob://$web"
|
||||
|
||||
[[matchers]]
|
||||
# Cache static assets for 1 year.
|
||||
pattern = "^.+\\.(js|css|svg|ttf)$"
|
||||
cacheControl = "max-age=31536000, no-transform, public"
|
||||
gzip = true
|
||||
|
||||
[[matchers]]
|
||||
pattern = "^.+\\.(png|jpg|webp)$"
|
||||
cacheControl = "max-age=31536000, no-transform, public"
|
||||
gzip = false
|
||||
|
||||
[[matchers]]
|
||||
# Set custom content type for /sitemap.xml
|
||||
pattern = "^sitemap\\.xml$"
|
||||
contentType = "application/xml"
|
||||
gzip = true
|
||||
|
||||
[[matchers]]
|
||||
pattern = "^.+\\.(html|xml|json)$"
|
||||
gzip = true
|
||||
# toml-docs-end az-blob
|
@@ -1,4 +1,6 @@
|
||||
---
|
||||
author: Mark Dumay
|
||||
title: A Clean Theme for Hugo
|
||||
title: Welcome to Hinode!
|
||||
---
|
||||
|
||||
A clean documentation and blog theme for your Hugo site based on Bootstrap 5.
|
||||
|
@@ -2,11 +2,11 @@
|
||||
title: About
|
||||
description: Hinode is a clean documentation and blog theme for your Hugo site based on Bootstrap 5.
|
||||
date: 2022-04-11
|
||||
updated: 2023-01-14
|
||||
updated: 2023-02-11
|
||||
showComments: false
|
||||
---
|
||||
|
||||
<p class="text-center"><img src="/img/logo_embedded.svg" class="img-fluid w-50" alt="Logo"></p>
|
||||
<p class="text-center"><svg class="img-fluid w-50"><use href="/img/logo_var.svg#logo"></use></svg></p>
|
||||
|
||||
<section class="section section-sm mt-5 mb-5">
|
||||
<div class="container-fluid">
|
||||
@@ -32,6 +32,7 @@ showComments: false
|
||||
|
||||
Additional features include:
|
||||
|
||||
* Switching between light mode and dark mode
|
||||
* Support for multiple languages
|
||||
* Reusable Bootstrap components through configurable shortcodes and partials
|
||||
* Embedded comments through light-weight integration with GitHub via [utteranc.es]({{< param "links.utterances" >}})
|
||||
|
243
content/en/blog/bootstrap-elements.md
Normal file
@@ -0,0 +1,243 @@
|
||||
---
|
||||
author: Mark Dumay
|
||||
title: Bootstrap elements
|
||||
date: 2023-02-17
|
||||
description: Use shortcodes to add common Bootstrap elements with ease.
|
||||
tags: ["bootstrap", "shortcode"]
|
||||
thumbnail: img/boots.jpg
|
||||
photoCredits: <a href="https://unsplash.com/@nate_dumlao">Nathan Dumlao</a>
|
||||
photoSource: <a href="https://unsplash.com/photos/QLPWQvHvmII">Unsplash</a>
|
||||
---
|
||||
|
||||
Hinode provides several shortcodes that wrap common Bootstrap components. Refer to the [official documentation]({{< param "links.hinode_docs" >}}) for more details.
|
||||
|
||||
## Accordion
|
||||
|
||||
As an example, the following shortcode displays an accordion with three elements, of which the first element is expanded.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* accordion */>}}
|
||||
{{</* accordion-item header="Accordion Item #1" show="true" */>}}
|
||||
This is the first item's accordion body. It supports HTML content. The item is shown by adding the value
|
||||
<code>show</code> to the <code>class</code> argument.
|
||||
{{</* /accordion-item */>}}
|
||||
{{</* accordion-item header="Accordion Item #2" */>}}
|
||||
This is the second item's accordion body. It supports HTML content too.
|
||||
{{</* /accordion-item */>}}
|
||||
{{</* accordion-item header="Accordion Item #3" */>}}
|
||||
This is the third item's accordion body.
|
||||
{{</* /accordion-item */>}}
|
||||
{{</* /accordion */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Alert
|
||||
|
||||
As an example, the following shortcode displays a simple alert.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* alert color="danger" dismissible="true" */>}}
|
||||
A simple danger alert—check it out!
|
||||
{{</* /alert */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Badge
|
||||
|
||||
Use HTML code to display a badge for a heading. See the Bootstrap [documentation]({{< param "links.bs_badge_heading" >}}) for more options.
|
||||
|
||||
{{< example >}}
|
||||
<h1>Example heading of size one <span class="badge bg-secondary">New</span></h1>
|
||||
<h2>Example heading of size two <span class="badge bg-secondary">New</span></h2>
|
||||
<h3>Example heading of size three <span class="badge bg-secondary">New</span></h3>
|
||||
<h4>Example heading of size four <span class="badge bg-secondary">New</span></h4>
|
||||
<h5>Example heading of size five <span class="badge bg-secondary">New</span></h5>
|
||||
<h6>Example heading of size six <span class="badge bg-secondary">New</span></h6>
|
||||
{{< /example >}}
|
||||
|
||||
## Breadcrumb
|
||||
|
||||
As an example, the following shortcode displays a breadcrumb for the blog page.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* breadcrumb path="blog" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Button
|
||||
|
||||
As an example, the following shortcode displays a tooltip for a dark button with a badge.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* button color="secondary" tooltip="Click on the inbox to view your unread messages" href="#!" badge="99+" */>}}
|
||||
Inbox
|
||||
{{</* /button */>}}
|
||||
{{< /example>}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Button group
|
||||
|
||||
As an example, the following shortcode displays a group of three buttons.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* button-group aria-label="Basic example" */>}}
|
||||
{{</* button color="primary" href="#!" */>}}Left{{</* /button */>}}
|
||||
{{</* button color="primary" href="#!" */>}}Middle{{</* /button */>}}
|
||||
{{</* button color="primary" href="#!" */>}}Right{{</* /button */>}}
|
||||
{{</* /button-group */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Card
|
||||
|
||||
As an example, the following shortcode displays a stacked card with icon that links to the [about]({{< ref "about" >}}) page. It includes a custom header.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* card path="about" padding="3" class="w-50" color="light" header="publication" footer="none" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Carousel
|
||||
|
||||
As an example, the following shortcode displays a centered carousel with three slides, 16x9 aspect ratio, and a relative width of 67% on large screens.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* carousel ratio="16x9" class="col-sm-12 col-lg-8 mx-auto" */>}}
|
||||
{{</* img src="img/coffee.jpg" caption="slide 1" */>}}
|
||||
{{</* img src="img/phone.jpg" caption="slide 2" */>}}
|
||||
{{</* img src="img/dunes.jpg" caption="slide 3" */>}}
|
||||
{{</* /carousel */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Collapse
|
||||
|
||||
As an example, the following shortcode displays a button that, when clicked, triggers a panel to appear or disappear.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* button collapse="collapse-1" */>}}
|
||||
Trigger panel
|
||||
{{</* /button */>}}
|
||||
|
||||
{{</* collapse id="collapse-1" class="p-3 border rounded" */>}}
|
||||
Some placeholder content for the collapse component. This panel is <i>hidden by default</i> but
|
||||
revealed when the user activates the relevant trigger.
|
||||
{{</* /collapse */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Command prompt
|
||||
|
||||
Use the `command` shortcode to generate a block with a default bash command prompt.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* command */>}}
|
||||
export MY_VAR=123
|
||||
{{</* /command */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
Specify `user` and `host` to add the user context to the prompt. In addition, use `(out)` to specify an output line and use `\` to denote a line continuation.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* command user="user" host="localhost" */>}}
|
||||
export MY_VAR=123
|
||||
echo "hello"
|
||||
(out)hello
|
||||
echo one \
|
||||
two \
|
||||
three
|
||||
(out)one two three
|
||||
echo "goodbye"
|
||||
(out)goodbye
|
||||
{{</* /command */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Docs
|
||||
|
||||
Use the `docs` shortcode to display the content of a `js`, `scss` or `toml` file:
|
||||
|
||||
{{< docs name="theme-colors" file="config/_default/params.toml" >}}
|
||||
|
||||
## Icon
|
||||
|
||||
As an example, the following shortcodes show a square check, a brand logo, and a circle check.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* fa square-check */>}}
|
||||
{{</* fab linkedin */>}}
|
||||
{{</* fas circle-check */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Image
|
||||
|
||||
As an example, the following shortcode displays an image with rounded corners and a 21x9 aspect ratio.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* image src="img/flowers.jpg" ratio="21x9" caption="Figure caption" class="rounded" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Navbar
|
||||
|
||||
As an example, the following shortcode displays a light navigation header.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* navbar path="about" color="primary" size="sm" search="false" menus="sample" title="Brand" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Spinner
|
||||
|
||||
As an example, the following shortcode displays a centered spinner.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* spinner color="info" class="text-center" */>}}
|
||||
Loading...
|
||||
{{</* /spinner */>}}
|
||||
{{< /example>}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Toast
|
||||
|
||||
As an example, the following shortcode displays a button that, when clicked, triggers the toast message.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* button id="toastButton" */>}}
|
||||
Show toast
|
||||
{{</* /button */>}}
|
||||
|
||||
{{</* toast header="Custom title" */>}}
|
||||
This is a toast message.
|
||||
{{</* /toast */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Tooltip
|
||||
|
||||
As an example, the following shortcode displays a tooltip for a colored hyperlink.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* tooltip color="primary" title="Tooltip" href="#!" */>}}
|
||||
Tooltip demonstration
|
||||
{{</* /tooltip */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
@@ -1,13 +0,0 @@
|
||||
---
|
||||
author: Mark Dumay
|
||||
title: Javascript bundling
|
||||
date: 2023-01-23
|
||||
description:
|
||||
status: draft
|
||||
tags: ["code"]
|
||||
thumbnail: img/notepad.jpg
|
||||
photoCredits: <a href="https://unsplash.com/@frederickjmedina">Frederick Medina</a>
|
||||
photoSource: <a href="https://unsplash.com/photos/PdfRE-xB--s">Unsplash</a>
|
||||
---
|
||||
|
||||
<!-- https://blog.wesleyac.com/posts/why-not-javascript-cdn -->
|
@@ -1,58 +0,0 @@
|
||||
---
|
||||
author: "Mark Dumay"
|
||||
title: "Code Highlighting"
|
||||
date: 2022-04-16
|
||||
description: "Examples on how to enable code highlighting."
|
||||
tags: ["code"]
|
||||
thumbnail: img/notepad.jpg
|
||||
photoCredits: <a href="https://unsplash.com/@frederickjmedina">Frederick Medina</a>
|
||||
photoSource: <a href="https://unsplash.com/photos/PdfRE-xB--s">Unsplash</a>
|
||||
---
|
||||
|
||||
## Code Fencing
|
||||
|
||||
Use code fencing to highlight the syntax of a specific language.
|
||||
|
||||
```json
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"themes": [],
|
||||
"projects": [],
|
||||
"configuration": {}
|
||||
}
|
||||
```
|
||||
|
||||
```html
|
||||
<div class="highlight">
|
||||
<pre>
|
||||
<code>some code...</code>
|
||||
</pre>
|
||||
</div>
|
||||
```
|
||||
|
||||
## Highlight Shortcode
|
||||
|
||||
Use the `highlight` shortcode to customize the layout of a specific code block.
|
||||
|
||||
{{< highlight go "linenos=table,hl_lines=8 15-17,linenostart=199" >}}
|
||||
// GetTitleFunc returns a func that can be used to transform a string to
|
||||
// title case.
|
||||
//
|
||||
// The supported styles are
|
||||
//
|
||||
// - "Go" (strings.Title)
|
||||
// - "AP" (see https://www.apstylebook.com/)
|
||||
// - "Chicago" (see https://www.chicagomanualofstyle.org/home.html)
|
||||
//
|
||||
// If an unknown or empty style is provided, AP style is what you get.
|
||||
func GetTitleFunc(style string) func(s string) string {
|
||||
switch strings.ToLower(style) {
|
||||
case "go":
|
||||
return strings.Title
|
||||
case "chicago":
|
||||
return transform.NewTitleConverter(transform.ChicagoStyle)
|
||||
default:
|
||||
return transform.NewTitleConverter(transform.APStyle)
|
||||
}
|
||||
}
|
||||
{{< / highlight >}}
|
@@ -1,24 +0,0 @@
|
||||
---
|
||||
author: "Hugo Authors"
|
||||
title: "Emoji Support"
|
||||
date: 2021-07-15
|
||||
description: "Guide to emoji usage in Hugo."
|
||||
tags: ["emoji"]
|
||||
# thumbnail: img/dunes.jpg
|
||||
thumbnail: https://picsum.photos/id/184/4288/2848.jpg
|
||||
photoCredits: <a href="https://unsplash.com/@timdegroot">Tim de Groot</a>
|
||||
photoSource: <a href="https://unsplash.com/photos/yNGQ830uFB4">Unsplash</a>
|
||||
---
|
||||
|
||||
Emoji can be enabled in a Hugo project in a number of ways.
|
||||
|
||||
<!--more-->
|
||||
|
||||
The [`emojify`](https://gohugo.io/functions/emojify/) function can be called directly in templates or [Inline Shortcodes](https://gohugo.io/templates/shortcode-templates/#inline-shortcodes).
|
||||
|
||||
To enable emoji globally, set `enableEmoji` to `true` in your site's [configuration](https://gohugo.io/getting-started/configuration/) and then you can type emoji shorthand codes directly in content files; e.g.
|
||||
|
||||
<p><span class="nowrap"><span class="emojify">🙈</span> <code>:see_no_evil:</code></span> <span class="nowrap"><span class="emojify">🙉</span> <code>:hear_no_evil:</code></span> <span class="nowrap"><span class="emojify">🙊</span> <code>:speak_no_evil:</code></span></p>
|
||||
<br>
|
||||
|
||||
The [Emoji cheat sheet](http://www.emoji-cheat-sheet.com/) is a useful reference for emoji shorthand codes.
|
14
content/en/blog/first-post.md
Normal file
@@ -0,0 +1,14 @@
|
||||
---
|
||||
author: Mark Dumay
|
||||
title: First post
|
||||
date: 2022-10-01
|
||||
description: This is my first blog post.
|
||||
tags: ["blog"]
|
||||
thumbnail: img/notepad.jpg
|
||||
photoCredits: <a href="https://unsplash.com/@frederickjmedina">Frederick Medina</a>
|
||||
photoSource: <a href="https://unsplash.com/photos/PdfRE-xB--s">Unsplash</a>
|
||||
---
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque vulputate, ante in luctus congue, leo risus semper justo, vel consequat sapien lectus quis ipsum. In imperdiet urna justo. Nulla vel pellentesque ipsum. Cras congue feugiat dolor ac aliquam. Pellentesque eget dui venenatis, ultrices urna ac, vehicula nibh. Curabitur est lectus, dapibus eu vehicula non, malesuada et dui. Nam enim nulla, egestas et nunc non, elementum aliquet justo. Mauris euismod mauris sapien, eget vestibulum odio dictum sit amet. Morbi nisl elit, placerat at auctor in, finibus ac neque. Curabitur placerat feugiat risus non vestibulum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque quis cursus est, nec posuere libero.
|
||||
|
||||
In ac lobortis diam. Curabitur id dui ac nunc mattis rhoncus a sed lorem. Sed lobortis sem turpis, at posuere enim dignissim et. Vivamus fermentum justo quis volutpat volutpat. Proin eget vehicula neque, ut tempus urna. Duis ac ex vel leo pharetra lobortis et vitae lacus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Aliquam erat volutpat. Suspendisse ullamcorper ultrices elementum. Suspendisse mi elit, commodo at varius a, cursus a ligula. Sed et mattis elit, eu luctus arcu. Cras a porttitor libero. Vestibulum tincidunt sed magna at dapibus. Sed quis orci eu lacus aliquam tristique. Integer porttitor ultrices ipsum quis porttitor. Etiam a sodales ligula.
|
16
content/en/blog/fourth-post.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
author: Mark Dumay
|
||||
title: Fourth post
|
||||
date: 2023-01-01
|
||||
description: This is my fourth blog post.
|
||||
tags: ["blog"]
|
||||
thumbnail: img/flowers.jpg # https://picsum.photos/id/106/2592/1728
|
||||
photoCredits: <a href="https://unsplash.com/@flutterhappy">Arvee Marie</a>
|
||||
photoSource: <a href="https://unsplash.com/photos/YnfGtpt2gf4">Unsplash</a>
|
||||
---
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam finibus libero in felis accumsan, vitae imperdiet metus vehicula. Quisque nec dignissim purus. In id dui porta sapien posuere viverra nec vel nisi. Sed varius tincidunt lectus, quis sagittis felis interdum id. Proin purus odio, ultrices auctor libero convallis, volutpat gravida turpis. Ut commodo metus orci, quis sagittis lectus rhoncus non. Nulla et lectus tortor. Suspendisse quam felis, molestie non odio quis, consequat venenatis orci. Etiam sed turpis sit amet elit scelerisque imperdiet. Sed suscipit felis non nibh suscipit egestas. Nulla sodales libero non rhoncus consequat. Nunc in elit at est cursus congue ut ac velit. Cras luctus libero augue, id semper sapien volutpat ultrices.
|
||||
|
||||
Pellentesque sit amet sollicitudin nibh. Cras in dolor eget quam feugiat ultricies in ac lectus. Ut venenatis vitae justo quis pretium. Pellentesque vulputate nulla ac est iaculis vulputate. Proin pellentesque sem nec molestie imperdiet. Duis eu molestie sapien, vel ultricies lacus. Donec in felis tempus, rutrum ipsum at, fermentum felis. Praesent mi odio, semper non vulputate vitae, vulputate quis ex.
|
||||
|
||||
Nunc rhoncus eleifend gravida. Aliquam feugiat tristique pellentesque. Pellentesque vel elit sed nulla commodo convallis. Curabitur placerat sapien augue, ac semper metus volutpat non. Sed semper ultricies enim, consequat convallis justo placerat eget. Ut fermentum leo facilisis metus congue commodo. Vestibulum consectetur magna vitae ullamcorper sodales. Nulla lobortis aliquam odio id tincidunt. Suspendisse efficitur auctor tortor non consequat. Quisque sit amet posuere lorem, convallis bibendum nisi. Proin ullamcorper justo tempus dignissim scelerisque. Quisque sit amet sapien libero. Phasellus eget enim velit. Proin ut fermentum dui. Proin gravida tortor in ligula lacinia, id dapibus dui tincidunt. Mauris suscipit nisi et urna consectetur, non venenatis nisi euismod.
|
@@ -1,165 +0,0 @@
|
||||
---
|
||||
author: Hugo Authors
|
||||
title: Markdown Syntax Guide
|
||||
description: Use Markdown syntax and basic HTML elements to style your Hugo content files.
|
||||
tags: ["markdown", "css", "html"]
|
||||
date: 2022-01-14
|
||||
thumbnail: img/phone.jpg # https://picsum.photos/id/160/3200/2119
|
||||
photoCredits: <a href="https://unsplash.com/@thomweerd">Thom</a>
|
||||
photoSource: <a href="https://unsplash.com/photos/Zdcq3iKly6g">Unsplash</a>
|
||||
---
|
||||
|
||||
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.
|
||||
|
||||
<!-- markdownlint-disable-next-line -->
|
||||
# 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}
|
||||
|
||||
### Blockquote with attribution
|
||||
|
||||
> Don't communicate by sharing memory, share memory by communicating.<br>
|
||||
> — <cite>Rob Pike[^1]</cite>
|
||||
{.blockquote}
|
||||
|
||||
[^1]: The above quote is excerpted from Rob Pike's [talk](https://www.youtube.com/watch?v=PAAkCSZUG1c) during Gopherfest, November 18, 2015.
|
||||
|
||||
<figure>
|
||||
<blockquote class="blockquote">
|
||||
<p>A well-known quote, contained in a blockquote element.</p>
|
||||
</blockquote>
|
||||
<figcaption class="blockquote-footer">
|
||||
Someone famous in <cite title="Source Title">Source Title</cite>
|
||||
</figcaption>
|
||||
</figure>
|
||||
|
||||
## 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 |
|
||||
{.table}
|
||||
|
||||
### Inline Markdown within tables
|
||||
|
||||
| Italics | Bold | Code |
|
||||
| --------- | -------- | ------ |
|
||||
| _italics_ | **bold** | `code` |
|
||||
{.table}
|
||||
|
||||
## 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>
|
||||
```
|
||||
|
||||
<!-- markdownlint-disable MD046 -->
|
||||
### 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>
|
||||
<!-- markdownlint-enable MD046 -->
|
||||
|
||||
### 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
|
||||
|
||||
- Fruit
|
||||
- Apple
|
||||
- Orange
|
||||
- Banana
|
||||
- Dairy
|
||||
- Milk
|
||||
- Cheese
|
||||
|
||||
## 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.
|
@@ -1,34 +0,0 @@
|
||||
---
|
||||
author: "Hugo Authors"
|
||||
title: "Rich Content"
|
||||
date: 2021-07-13
|
||||
description: "A brief description of Hugo Shortcodes."
|
||||
tags: ["shortcode", "privacy"]
|
||||
thumbnail: img/flowers.jpg # https://picsum.photos/id/106/2592/1728
|
||||
photoCredits: <a href="https://unsplash.com/@flutterhappy">Arvee Marie</a>
|
||||
photoSource: <a href="https://unsplash.com/photos/YnfGtpt2gf4">Unsplash</a>
|
||||
---
|
||||
|
||||
Hugo ships with several [Built-in Shortcodes](https://gohugo.io/content-management/shortcodes/#use-hugos-built-in-shortcodes) for rich content, along with a [Privacy Config](https://gohugo.io/about/hugo-and-gdpr/) and a set of Simple Shortcodes that enable static and no-JS versions of various social media embeds.
|
||||
|
||||
## <!--more-->
|
||||
|
||||
## YouTube Privacy Enhanced Shortcode
|
||||
|
||||
{{< youtube id="ZJthWmvUzzc" class="video">}}
|
||||
|
||||
<br>
|
||||
|
||||
---
|
||||
|
||||
## Twitter Simple Shortcode
|
||||
|
||||
{{< twitter_simple user="SanDiegoZoo" id="1453110110599868418" >}}
|
||||
|
||||
<br>
|
||||
|
||||
---
|
||||
|
||||
## Vimeo Simple Shortcode
|
||||
|
||||
{{< vimeo_simple id="48912912" class="__h_video" >}}
|
16
content/en/blog/second-post.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
author: Mark Dumay
|
||||
title: Second post
|
||||
date: 2022-11-01
|
||||
description: This is my second blog post.
|
||||
tags: ["blog"]
|
||||
thumbnail: img/phone.jpg # https://picsum.photos/id/160/3200/2119
|
||||
photoCredits: <a href="https://unsplash.com/@thomweerd">Thom</a>
|
||||
photoSource: <a href="https://unsplash.com/photos/Zdcq3iKly6g">Unsplash</a>
|
||||
---
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non sollicitudin sapien. Ut porttitor lectus eu tempor ultricies. Sed semper tincidunt nibh pellentesque condimentum. Vivamus dictum sem eu rhoncus semper. Vestibulum convallis congue tincidunt. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Mauris magna urna, egestas sit amet ligula quis, viverra semper arcu. Praesent laoreet nunc vitae nulla posuere facilisis.
|
||||
|
||||
Nunc eget dignissim ex, sed lobortis leo. Suspendisse mollis posuere tellus, in viverra nunc ullamcorper vitae. Nam vel tempor arcu, in imperdiet odio. Fusce malesuada vehicula odio, in iaculis nulla congue eget. Quisque id odio id nisl facilisis posuere porta sit amet mauris. Curabitur lorem leo, tempus id rhoncus eget, placerat vitae lectus. Morbi eu aliquet enim. Nulla malesuada laoreet sodales.
|
||||
|
||||
Nunc volutpat dui in elit euismod, sed egestas purus tristique. Nam in condimentum mauris. Praesent nec suscipit enim. Aliquam dolor ipsum, faucibus vitae purus ac, congue egestas nisi. Donec hendrerit erat eu arcu porttitor rhoncus. Nunc a odio bibendum metus semper pellentesque. Sed at sapien ut est semper eleifend. Aliquam lorem libero, porttitor nec tristique ut, auctor vitae ipsum. Suspendisse pretium pharetra rutrum. Nulla tincidunt tempus enim eu sagittis. Maecenas pulvinar metus a urna mattis dictum sed id tellus.
|
16
content/en/blog/third-post.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
author: Mark Dumay
|
||||
title: Third post
|
||||
date: 2022-12-01
|
||||
description: This is my third blog post.
|
||||
tags: ["blog"]
|
||||
thumbnail: https://picsum.photos/id/184/4288/2848.jpg
|
||||
photoCredits: <a href="https://unsplash.com/@timdegroot">Tim de Groot</a>
|
||||
photoSource: <a href="https://unsplash.com/photos/yNGQ830uFB4">Unsplash</a>
|
||||
---
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent id scelerisque ligula. Vestibulum eu lorem tortor. Suspendisse tristique ultrices mauris, non maximus lorem faucibus in. Suspendisse sagittis eleifend dapibus. Curabitur dignissim luctus sapien eu consequat. Proin congue dui vel ipsum bibendum varius. Pellentesque cursus nisi metus, egestas eleifend ipsum sollicitudin vitae. Sed vitae erat elementum, semper turpis sed, molestie nulla.
|
||||
|
||||
Nulla molestie ultrices vehicula. Etiam iaculis, erat a blandit blandit, nulla tellus dapibus ligula, vitae venenatis turpis diam non felis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae arcu in justo iaculis egestas. In imperdiet arcu vitae pharetra commodo. Quisque ut erat eget nisl semper laoreet vitae eget ligula. Mauris bibendum purus nec vulputate faucibus. In luctus sagittis ante, quis laoreet orci bibendum vitae. Nam at odio accumsan, tincidunt eros at, lacinia metus. In et ultricies sapien, a mollis est. Nunc convallis orci eu tristique euismod. Proin vel ullamcorper diam. Quisque et semper orci. Proin pharetra lorem justo, id malesuada erat feugiat sit amet. Praesent bibendum mi at lorem volutpat suscipit. Morbi sed libero elit.
|
||||
|
||||
Nunc sodales est eu ipsum volutpat, in mollis dui facilisis. Nulla faucibus interdum lectus, a condimentum elit vulputate eu. Nunc ipsum risus, suscipit sit amet nulla ac, pulvinar maximus nulla. In venenatis diam erat, non elementum ante dignissim posuere. Aliquam sem justo, luctus at vestibulum ut, egestas ut quam. Quisque a dolor viverra, aliquam nunc vel, lacinia nulla. In id magna magna. Morbi dapibus pretium sollicitudin. Morbi volutpat augue at felis tristique, quis euismod tellus vulputate. Morbi dui lacus, aliquam eget quam vel, vestibulum faucibus enim. Proin porta pretium metus id venenatis. Aliquam nec tempor lorem. Vivamus euismod est varius sagittis placerat. Maecenas tincidunt elementum libero, at imperdiet elit feugiat vel.
|
@@ -1,26 +0,0 @@
|
||||
---
|
||||
title: Credits
|
||||
description: Hinode is fully open source and uses several open-source frameworks and libraries.
|
||||
date: "2023-01-14"
|
||||
group: about
|
||||
layout: docs
|
||||
---
|
||||
|
||||
## Team
|
||||
|
||||
Hinode is maintained by [Mark Dumay]({{< param "links.repository_owner" >}}) and several contributors as an open-source repository on GitHub. You are more than welcome to contribute. Get involved in the development by [opening an issue]({{< param "links.issue_tracker" >}}) or submitting a pull request. Read our [contributing guidelines]({{< ref "contribute" >}}) for information on how we develop.
|
||||
|
||||
## Core components
|
||||
|
||||
Hinode is based on the following core components:
|
||||
|
||||
- [Hugo]({{< param "links.hugo" >}}) is a fast and modern static site generator written in Go. It is a so-called static site generator, meaning that the website is created when you update its content. This is a different approach to systems that dynamically build a page upon request.
|
||||
- [Bootstrap]({{< param "links.bootstrap" >}}) is a popular, open-source web development framework. Using a mobile-first approach, it provides several functions and components to simplify the creation of responsive websites.
|
||||
- [npm]({{< param "links.npm" >}}) is a software registry that enables the sharing and reuse of both open-source and private software packages. By taking advantage of its version management, software dependencies are easily tracked and updated.
|
||||
|
||||
## Themes
|
||||
|
||||
Hinode is inspired by the following themes:
|
||||
|
||||
- [Blist]({{< param "links.blist" >}}) is a clean and fast blog theme for your Hugo site using Tailwind CSS.
|
||||
- [Doks]({{< param "links.doks" >}}) is a Hugo theme for building secure, fast, and SEO-ready documentation websites, which you can easily update and customize.
|
@@ -1,15 +0,0 @@
|
||||
---
|
||||
title: License
|
||||
description: Hinode's open-source license for the codebase and documentation.
|
||||
date: "2023-01-14"
|
||||
group: about
|
||||
layout: docs
|
||||
---
|
||||
|
||||
## Codebase
|
||||
|
||||
The codebase of Hinode is open source under the conditions of the [MIT license]({{< param "links.license" >}}) and is copyright © 2023 by Mark Dumay. In short, the MIT license allows you to use the Hinode codebase for both personal and commercial use, as long as you include the original license and copyright notice. Licensed works, modifications, and larger works may be distributed under different terms and without source code. No liability or warranty is given.
|
||||
|
||||
## Documentation
|
||||
|
||||
The documentation of Hinode is licensed under the Creative Commons ([CC BY-NC 4.0)]({{< param "links.cc_by_nc_4_0" >}}) license. This includes all files within the repository's `/content` folder and its children, as well as the "README" in the repository root. The license allows you to share and adapt the materials, as long as you give appropriate credit and do not use the materials for commercial purposes. No warranties are given.
|
@@ -1,50 +0,0 @@
|
||||
---
|
||||
author: "Mark Dumay"
|
||||
title: "Accordion"
|
||||
date: 2023-01-27
|
||||
description: "Use the accordion shortcode to show a group of vertically collapsing and expanding items."
|
||||
group: components
|
||||
layout: docs
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Use the `accordion` shortcode to show a group of vertically collapsing and expanding items. Add `accordion-item` inner elements for each accordion item.
|
||||
|
||||
## Arguments
|
||||
|
||||
The shortcode supports the following arguments:
|
||||
|
||||
| Argument | Required | Description |
|
||||
|-------------|----------|-------------|
|
||||
| class | No | Optional class attribute of the accordion element, e.g. “w-50”. |
|
||||
{.table}
|
||||
|
||||
Add an inner `accordion-item` element for each item of the accordion. The `accordion-item` element supports the following arguments:
|
||||
|
||||
| Argument | Required | Description |
|
||||
|-----------|----------|-------------|
|
||||
| header | Yes | Required header of the accordion element. |
|
||||
| class | No | Optional class attribute of the inner accordion element, e.g. “show”. |
|
||||
{.table}
|
||||
|
||||
## Example
|
||||
|
||||
As an example, the following shortcode displays an accordion with three elements, of which the first element is expanded.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* accordion */>}}
|
||||
{{</* accordion-item header="Accordion Item #1" class="show" */>}}
|
||||
This is the first item's accordion body. It supports HTML content. The item is shown by adding the value
|
||||
<code>show</code> to the <code>class</code> argument.
|
||||
{{</* /accordion-item */>}}
|
||||
{{</* accordion-item header="Accordion Item #2" */>}}
|
||||
This is the second item's accordion body. It too supports HTML content.
|
||||
{{</* /accordion-item */>}}
|
||||
{{</* accordion-item header="Accordion Item #3" */>}}
|
||||
This is the third item's accordion body.
|
||||
{{</* /accordion-item */>}}
|
||||
{{</* /accordion */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
@@ -1,34 +0,0 @@
|
||||
---
|
||||
author: "Mark Dumay"
|
||||
title: "Alert"
|
||||
date: 2023-01-27
|
||||
description: "Use the alert shortcode to display a contextual feedback message."
|
||||
group: components
|
||||
layout: docs
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Use the `alert` shortcode to display a contextual feedback message. The inner content is used as alert text.
|
||||
|
||||
## Arguments
|
||||
|
||||
The shortcode supports the following arguments:
|
||||
|
||||
| Argument | Required | Description |
|
||||
|-------------|----------|-------------|
|
||||
| color | No | Optional theme color of the alert, either "primary" (default), "secondary", "success", "danger", "warning", "info", "light", "dark", "white" or "black". |
|
||||
| dismissible | No | Optional flag to indicate the alert is dismissible, defaults to false. |
|
||||
{.table}
|
||||
|
||||
## Example
|
||||
|
||||
As an example, the following shortcode displays a simple alert.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* alert color="danger" */>}}
|
||||
A simple danger alert—check it out!
|
||||
{{</* /alert */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
@@ -1,29 +0,0 @@
|
||||
---
|
||||
author: "Mark Dumay"
|
||||
title: "Badge"
|
||||
date: 2023-01-25
|
||||
description: "Use the badge to enrich headings and buttons."
|
||||
group: components
|
||||
layout: docs
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Badges can be added to headings and buttons. The badge for a button is part of a [custom shortcode]({{< ref "button" >}} "custom shortcode"). The example below illustrates the HTML code for a heading.
|
||||
|
||||
## Arguments
|
||||
|
||||
The shortcode requires no arguments.
|
||||
|
||||
## Example
|
||||
|
||||
Use HTML code to display a badge for a heading. See the Bootstrap [documentation]({{< param "links.bs_badge_heading" >}}) for more options. The following example displays a badge for a heading of size four.
|
||||
|
||||
{{< example >}}
|
||||
<h1>Example heading of size one <span class="badge bg-secondary">New</span></h1>
|
||||
<h2>Example heading of size two <span class="badge bg-secondary">New</span></h2>
|
||||
<h3>Example heading of size three <span class="badge bg-secondary">New</span></h3>
|
||||
<h4>Example heading of size four <span class="badge bg-secondary">New</span></h4>
|
||||
<h5>Example heading of size five <span class="badge bg-secondary">New</span></h5>
|
||||
<h6>Example heading of size six <span class="badge bg-secondary">New</span></h6>
|
||||
{{< /example >}}
|
@@ -1,31 +0,0 @@
|
||||
---
|
||||
author: "Mark Dumay"
|
||||
title: "Breadcrumb"
|
||||
date: 2023-01-27
|
||||
description: "Use the breadcrumb shortcode to display the current page’s location within the site's navigational hierarchy."
|
||||
group: components
|
||||
layout: docs
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Use the `breadcrumb` shortcode to display the current page’s location within the site's navigational hierarchy.
|
||||
|
||||
## Arguments
|
||||
|
||||
The shortcode supports the following arguments:
|
||||
|
||||
| Argument | Required | Description |
|
||||
|-------------|----------|-------------|
|
||||
| path | No | Optional path of the page, defaults to current page.
|
||||
{.table}
|
||||
|
||||
## Example
|
||||
|
||||
As an example, the following shortcode displays a breadcrumb for the current page.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* breadcrumb path="breadcrumb" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
@@ -1,35 +0,0 @@
|
||||
---
|
||||
author: "Mark Dumay"
|
||||
title: "Button Group"
|
||||
date: 2023-01-27
|
||||
description: "Use the button-group shortcode to display a group of buttons."
|
||||
group: components
|
||||
layout: docs
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Use the `button-group` shortcode to display a group of buttons. Add inner `<button>` elements for each [button]({{< ref "button" >}} "button").
|
||||
|
||||
## Arguments
|
||||
|
||||
The shortcode supports the following arguments:
|
||||
|
||||
| Argument | Required | Description |
|
||||
|-------------|----------|-------------|
|
||||
| aria-label | No | Optional assistive label for the button group. |
|
||||
{.table}
|
||||
|
||||
## Example
|
||||
|
||||
As an example, the following shortcode displays a group of three buttons.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* button-group aria-label="Basic example" */>}}
|
||||
{{</* button color="primary" href="#" */>}}Left{{</* /button */>}}
|
||||
{{</* button color="primary" href="#" */>}}Middle{{</* /button */>}}
|
||||
{{</* button color="primary" href="#" */>}}Right{{</* /button */>}}
|
||||
{{</* /button-group */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
@@ -1,42 +0,0 @@
|
||||
---
|
||||
author: "Mark Dumay"
|
||||
title: "Button"
|
||||
date: 2023-01-27
|
||||
description: "Use the button shortcode to display a button with a hyperlink."
|
||||
group: components
|
||||
layout: docs
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Use the `button` shortcode to display a button with a hyperlink. The inner content is used as button title. The button supports an optional badge and tooltip.
|
||||
|
||||
## Arguments
|
||||
|
||||
The shortcode supports the following arguments:
|
||||
|
||||
| Argument | Required | Description |
|
||||
|-------------|----------|-------------|
|
||||
| href | No | Optional address for the button or hyperlink. Automatically assigned when using collapse. |
|
||||
| state | No | Optional state of the button, either "enabled" (default), "disabled", "active", or "inactive". |
|
||||
| size | No | Optional size of the button, either "sm", "md" (default), or "lg". |
|
||||
| color | No | Optional theme color of the element, either "primary" (default), "secondary", "success", "danger", "warning", "info", "light", "dark", "white" or "black". |
|
||||
| badge | No | Optional positioned badge to display on top of the button. |
|
||||
| outline | No | Optional flag indicating the button should be outlined, either "false" (default) or "true". |
|
||||
| aria-label | No | Optional label for the badge. |
|
||||
| tooltip | No | Optional text to display in a tooltip. Cannot be used together with collapse. Ignored for active/inactive buttons. |
|
||||
| collapse | No | Optional panel to collapse. Cannot be used together with tooltip. Ignored for active/inactive buttons. |
|
||||
| placement | No | How to position the tooltip: "top" (default), "bottom", "left", or "right". |
|
||||
{.table}
|
||||
|
||||
## Example
|
||||
|
||||
As an example, the following shortcode displays a tooltip for a dark button with a badge.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* button color="dark" tooltip="Click on the inbox to view your unread messages" href="#" badge="99+" */>}}
|
||||
Inbox
|
||||
{{</* /button */>}}
|
||||
{{< /example>}}
|
||||
<!-- markdownlint-enable MD037 -->
|
@@ -1,37 +0,0 @@
|
||||
---
|
||||
author: "Mark Dumay"
|
||||
title: "Card"
|
||||
date: 2023-01-27
|
||||
description: "Use the card shortcode to display a card that links to a content page."
|
||||
group: components
|
||||
layout: docs
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Use the `card` shortcode to display a card that links to a content page. When using a rich layout, the card includes a thumbnail and a header.
|
||||
|
||||
## Arguments
|
||||
|
||||
The shortcode supports the following arguments:
|
||||
|
||||
| Argument | Required | Description |
|
||||
|-------------|----------|-------------|
|
||||
| path | Yes | Required path of the page. |
|
||||
| class | No | Optional class attribute of the card element, e.g. “w-50”. |
|
||||
| color | No | Optional theme color of the card, either "primary", "secondary", "success", "danger", "warning", "info", "light", "dark", "white" or "black". By default, no color is specified. |
|
||||
| padding | No | Optional padding of the content, either "0", "1", "2", "3", "4", "5", or "auto" (default). |
|
||||
| header | No | Optional header components of the card, displayed in small caps. Supported values are "full" (default), "publication", "tags", and "none". |
|
||||
| footer | No | Optional footer components of the card, displayed in small caps. Supported values are "full", "publication", "tags", and "none" (default). |
|
||||
| orientation | No | Optional placecement of the thumbnail, either "stacked" (default), "horizontal", or "none". |
|
||||
{.table}
|
||||
|
||||
## Example
|
||||
|
||||
As an example, the following shortcode displays a colored, borderless horizontal card that links to the [Rich Content]({{< ref "rich-content" >}} "Rich Content") page. It includes a custom header and footer.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* card path="rich-content" class="w-100 border-0" orientation="horizontal" color="info" header="publication" footer="tags" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
@@ -1,44 +0,0 @@
|
||||
---
|
||||
author: "Mark Dumay"
|
||||
title: "Carousel"
|
||||
date: 2023-01-27
|
||||
description: "Use the carousel shortcode to display a carousel of several images."
|
||||
group: components
|
||||
layout: docs
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Use the `carousel` shortcode to display a carousel of several images, with similar behavior as the [image]({{< ref "image" >}} "image")
|
||||
|
||||
## Arguments
|
||||
|
||||
The shortcode supports the following arguments:
|
||||
|
||||
| Argument | Required | Description |
|
||||
|-----------|----------|-------------|
|
||||
| ratio | No | Aspect ratio of the image, either "1x1", "4x3" (default), "16x9", or "21x9". |
|
||||
| class | No | Optional class attribute of the `carousel` element, e.g. "w-75". |
|
||||
{.table}
|
||||
|
||||
Add an inner `img` element for each slide of the carousel. The `img` element supports the following arguments:
|
||||
|
||||
| Argument | Required | Description |
|
||||
|-----------|----------|-------------|
|
||||
| src | Yes | Required url of the image, e.g. "img/boots.jpg". |
|
||||
| caption | No | Optional image caption. If set, the image is darkened to improve the contrast. The caption is hidden on smaller screens. |
|
||||
{.table}
|
||||
|
||||
## Example
|
||||
|
||||
As an example, the following shortcode displays a centered carousel with three slides, 16x9 aspect ratio, and a relative width of 67% on large screens.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* carousel ratio="16x9" class="col-sm-12 col-lg-8 mx-auto" */>}}
|
||||
{{</* img src="img/coffee.jpg" caption="slide 1" */>}}
|
||||
{{</* img src="img/phone.jpg" caption="slide 2" */>}}
|
||||
{{</* img src="img/dunes.jpg" caption="slide 3" */>}}
|
||||
{{</* /carousel */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
@@ -1,39 +0,0 @@
|
||||
---
|
||||
author: "Mark Dumay"
|
||||
title: "Collapse"
|
||||
date: 2023-01-27
|
||||
description: "Use the collapse shortcode to reveil or hide a panel."
|
||||
group: components
|
||||
layout: docs
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Use the `collapse` shortcode to reveil or hide a panel. The panel can contain both HTML code and plain text. Link a button to the panel by assigning it's ID to the `collapse` attribute.
|
||||
|
||||
## Arguments
|
||||
|
||||
The shortcode supports the following arguments:
|
||||
|
||||
| Argument | Required | Description |
|
||||
|-------------|----------|-------------|
|
||||
| id | Yes | Required unique id of the collapse element, e.g. "collapse-1". |
|
||||
| class | No | Optional class attribute of the inner panel element, e.g. “p-3”. |
|
||||
{.table}
|
||||
|
||||
## Example
|
||||
|
||||
As an example, the following shortcode displays a button that, when clicked, triggers a panel to appear or disappear.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* button collapse="collapse-1" */>}}
|
||||
Trigger panel
|
||||
{{</* /button */>}}
|
||||
|
||||
{{</* collapse id="collapse-1" class="p-3 border rounded" */>}}
|
||||
Some placeholder content for the collapse component. This panel is <i>hidden by default</i> but
|
||||
revealed when the user activates the relevant trigger.
|
||||
{{</* /collapse */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
@@ -1,104 +0,0 @@
|
||||
---
|
||||
author: "Mark Dumay"
|
||||
title: "Command Prompt"
|
||||
date: 2023-01-27
|
||||
description: "The command shortcode generates terminal output for either Bash, PowerShell, or SQL shell languages."
|
||||
group: components
|
||||
layout: docs
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
The `command` shortcode generates terminal output for either `bash`, `powershell`, or `sql` shell languages.
|
||||
|
||||
## Arguments
|
||||
|
||||
The shortcode supports the following arguments:
|
||||
|
||||
| Argument | Required | Description |
|
||||
|-----------|----------|-------------|
|
||||
| user | No | Optional user to add to the prompt, e.g. "user". |
|
||||
| host | No | Optional host to add to the prompt, e.g. "localhost". |
|
||||
| prompt | No | Optional prompt override, e.g. "PS C:\Users\User>". |
|
||||
| shell | No | Type of shell, either "bash" (default), "powershell", or "sql". |
|
||||
{.table}
|
||||
|
||||
## Examples
|
||||
|
||||
### Bash (default shell)
|
||||
|
||||
Use the `command` shortcode to generate a block with a default bash command prompt.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* command */>}}
|
||||
export MY_VAR=123
|
||||
{{</* /command */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
Specify `user` and `host` to add the user context to the prompt. In addition, use `(out)` to specify an output line and use `\` to denote a line continuation.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* command user="user" host="localhost" */>}}
|
||||
export MY_VAR=123
|
||||
echo "hello"
|
||||
(out)hello
|
||||
echo one \
|
||||
two \
|
||||
three
|
||||
(out)one two three
|
||||
echo "goodbye"
|
||||
(out)goodbye
|
||||
{{</* /command */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
### PowerShell
|
||||
|
||||
Set the `shell` argument to `powershell` to generate a PowerShell terminal. Override the `prompt` to add a directory if needed. Use the backtick `` ` `` symbol to denote a line continuation.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* command prompt="PS C:\Users\User>" shell="powershell" */>}}
|
||||
Write-Host `
|
||||
'Hello' `
|
||||
'from' `
|
||||
'PowerShell!'
|
||||
(out)Hello from PowerShell!
|
||||
Write-Host 'Goodbye from PowerShell!'
|
||||
(out)Goodbye from PowerShell!
|
||||
{{</* /command */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
### SQL
|
||||
|
||||
Set the `shell` argument to `sql` to generate a SQL terminal. Use the `(con)` suffix to denote a line continuation.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* command prompt="mysql>" shell="sql" */>}}
|
||||
set @my_var = 'foo';
|
||||
set @my_other_var = 'bar';
|
||||
CREATE TABLE people ((con)
|
||||
first_name VARCHAR(30) NOT NULL,(con)
|
||||
last_name VARCHAR(30) NOT NULL(con)
|
||||
);
|
||||
(out)Query OK, 0 rows affected (0.09 sec)
|
||||
insert into people(con)
|
||||
values ('John', 'Doe');
|
||||
(out)Query OK, 1 row affected (0.02 sec)
|
||||
select *(con)
|
||||
from people(con)
|
||||
order by last_name;
|
||||
(out)+------------+-----------+
|
||||
(out)| first_name | last_name |
|
||||
(out)+------------+-----------+
|
||||
(out)| John | Doe |
|
||||
(out)+------------+-----------+
|
||||
(out)1 row in set (0.00 sec)
|
||||
{{</* /command */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-ensable MD037 -->
|
@@ -1,36 +0,0 @@
|
||||
---
|
||||
author: "Mark Dumay"
|
||||
title: "Image"
|
||||
date: 2023-01-05
|
||||
description: "Use the image shortcode to display a responsive image with a specific aspect ratio."
|
||||
group: components
|
||||
layout: docs
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Use the `image` shortcode to display a responsive image with a specific aspect ratio. The source link can refer to either an image available in the `/assets/img` folder of your site or a public web location. The shortcode renders the image as a so-called [image set]({{< param "links.mozilla_image" >}}) to optimize the image for different screen sizes and resolutions. Behind the scenes, Hugo renders the images in `WebP` format and stores them in a local folder (`resources` or `public`). The images are processed using the quality setting specified in the `[imaging]` section of the main [config file]({{< param "links.hugo_imaging" >}}) (defaults to 75). Supported image types are `.png`, `.jpeg`, `.gif`, `.tiff`, `.bmp`, and `.webp`. A fallback image of type `.jpeg` is provided for older browsers.
|
||||
|
||||
## Arguments
|
||||
|
||||
The shortcode supports the following arguments:
|
||||
|
||||
| Argument | Required | Description |
|
||||
|-----------|----------|-------------|
|
||||
| src | Yes | Required url of the image, e.g. "img/boots.jpg". |
|
||||
| ratio | No | Optional aspect ratio of the image, either "1x1", "4x3", "16x9", or "21x9". If set, the image is resized and cropped to match the ratio. Else the original aspect ratio of the image is kept. |
|
||||
| class | No | Optional class attribute of the inner `img` element, e.g. "rounded". |
|
||||
| title | No | Optional alternate text of the image. |
|
||||
| caption | No | Optional figure caption. |
|
||||
{.table}
|
||||
|
||||
## Example
|
||||
|
||||
As an example, the following shortcode displays an image with rounded corners and a 21x9 aspect ratio.
|
||||
|
||||
```html
|
||||
{{</* image src="img/flowers.jpg" ratio="21x9" caption="Figure caption" class="rounded" */>}}
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
{{< image src="img/flowers.jpg" ratio="21x9" caption="Figure caption" class="rounded">}}
|
@@ -1,40 +0,0 @@
|
||||
---
|
||||
author: "Mark Dumay"
|
||||
title: "Navbar"
|
||||
date: 2023-01-27
|
||||
description: "Use the navbar shortcode to display a navigation header with a toggler."
|
||||
group: components
|
||||
layout: docs
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Use the `navbar` shortcode to display a navigation header with a toggler. The menu items are derived from the site's configuration, which defaults to the menus defined under `main`. Nested items are supported at one-level depth. The navigation bar includes a search area and a language switcher if applicable. The items in the navigation header are accentuated if the current page or any of its descendants is active.
|
||||
|
||||
<!-- TODO: add sidebar -->
|
||||
|
||||
## Arguments
|
||||
|
||||
The shortcode supports the following arguments:
|
||||
|
||||
| Argument | Required | Description |
|
||||
|-----------|----------|-------------|
|
||||
| path | Yes | Required path of the active page. |
|
||||
| menus | No | Optional name of the menu configuration, defaults to "main". |
|
||||
| size | No | Optional breakpoint of the navbar toggler, either "xs", "sm", "md" (default), "lg", or "xl". |
|
||||
| style | No | Optional style of the navbar, either "light" (default) or "dark". |
|
||||
| color | No | Optional background color of the navbar, either "primary", "secondary", "success", "danger", "warning", "info", "light", "dark", "white" or "black". The default color is none. |
|
||||
| search | No | Optional flag to include a search input, defaults to the parameter "logo" set in the "navigation" section of the site's parameter configuration. |
|
||||
| logo | No | Optional address of the logo image, defaults to the parameter "logo" set in the "navigation" section of the site's parameter configuration. |
|
||||
| title | No | Optional brand title, displayed when the logo is not set. Defaults to the site's title. |
|
||||
{.table}
|
||||
|
||||
## Example
|
||||
|
||||
As an example, the following shortcode displays a light navigation header.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* navbar path="blog" color="light" size="sm" search="false" menus="sample" title="Brand" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
@@ -1,10 +0,0 @@
|
||||
---
|
||||
author: Mark Dumay
|
||||
title: Overview
|
||||
date: 2023-01-14
|
||||
description: Use predefined shortcodes to embed Bootstrap components in your content.
|
||||
group: components
|
||||
layout: docs
|
||||
---
|
||||
|
||||
<!-- TODO: expand -->
|
@@ -1,35 +0,0 @@
|
||||
---
|
||||
author: "Mark Dumay"
|
||||
title: "Spinner"
|
||||
date: 2023-01-27
|
||||
description: "Use the spinner shortcode to indicate the loading state of a component or page."
|
||||
group: components
|
||||
layout: docs
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Use the `spinner` shortcode to indicate the loading state of a component or page. The inner content is used as alternative description.
|
||||
|
||||
## Arguments
|
||||
|
||||
The shortcode supports the following arguments:
|
||||
|
||||
| Argument | Required | Description |
|
||||
|-------------|----------|-------------|
|
||||
| color | No | Optional theme color of the spinner, either "primary" (default), "secondary", "success", "danger", "warning", "info", "light", "dark", "white" or "black". |
|
||||
| grow | No | Optional flag to indicate the spinner is growing instead of rotating, defaults to false. |
|
||||
| class | No | Optional class attribute of the spinner wrapping element, e.g. “text-center”. |
|
||||
{.table}
|
||||
|
||||
## Example
|
||||
|
||||
As an example, the following shortcode displays a centered spinner.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* spinner color="info" class="text-center" */>}}
|
||||
Loading...
|
||||
{{</* /spinner */>}}
|
||||
{{< /example>}}
|
||||
<!-- markdownlint-enable MD037 -->
|
@@ -1,37 +0,0 @@
|
||||
---
|
||||
author: "Mark Dumay"
|
||||
title: "Toast"
|
||||
date: 2023-01-27
|
||||
description: "Use the toast shortcode to display a dismissable message in the bottom-right corner of the screen."
|
||||
group: components
|
||||
layout: docs
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Use the `toast` shortcode to display a dismissable message in the bottom-right corner of the screen. Hinode defines a click event for a button with id `toastButton`. Modify the file `assets/js/toast.js` if needed.
|
||||
|
||||
## Arguments
|
||||
|
||||
The shortcode supports the following arguments:
|
||||
|
||||
| Argument | Required | Description |
|
||||
|-------------|----------|-------------|
|
||||
| header | No | Optional header of the toast message. Uses the site title by default. |
|
||||
{.table}
|
||||
|
||||
## Example
|
||||
|
||||
As an example, the following shortcode displays a button that, when clicked, triggers the toast message.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* button id="toastButton" */>}}
|
||||
Show toast
|
||||
{{</* /button */>}}
|
||||
|
||||
{{</* toast header="Custom title" */>}}
|
||||
This is a toast message.
|
||||
{{</* /toast */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
@@ -1,36 +0,0 @@
|
||||
---
|
||||
author: "Mark Dumay"
|
||||
title: "Tooltip"
|
||||
date: 2023-01-27
|
||||
description: "Use the toast shortcode to display a dismissable message in the bottom-right corner of the screen."
|
||||
group: components
|
||||
layout: docs
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Use the `tooltip` shortcode to display a tooltip for a hyperlink. Refer to the [button]({{< ref "#button" >}} "button") on how to display a tooltip for a button instead. The inner content is used as hyperlink text.
|
||||
|
||||
## Arguments
|
||||
|
||||
The shortcode supports the following arguments:
|
||||
|
||||
| Argument | Required | Description |
|
||||
|-------------|----------|-------------|
|
||||
| color | No | Optional theme color of the element, either "primary" (default), "secondary", "success", "danger", "warning", "info", "light", "dark", "white" or "black". |
|
||||
| title | Yes | Title to display in the tooltip. |
|
||||
| href | Yes | Address for the button or hyperlink. |
|
||||
| placement | No | How to position the tooltip: "top" (default), "bottom", "left", or "right". |
|
||||
{.table}
|
||||
|
||||
## Example
|
||||
|
||||
As an example, the following shortcode displays a tooltip for a colored hyperlink.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* tooltip color="warning" title="Tooltip" href="#" */>}}
|
||||
Tooltip demonstration
|
||||
{{</* /tooltip */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
@@ -1,99 +0,0 @@
|
||||
---
|
||||
title: Colors
|
||||
description: Use Bootstrap's color system to easily adjust your website's colors.
|
||||
date: 2023-01-14
|
||||
group: configuration
|
||||
layout: docs
|
||||
---
|
||||
|
||||
## Theme colors
|
||||
|
||||
Hinode uses Bootstrap's color system. You can adjust them in the `/config/_default/params.toml` file in the `style` section.
|
||||
|
||||
{{< toml-docs name="theme-colors" file="config/_default/params.toml" >}}
|
||||
|
||||
In addition, the background colors `black` and `white` are available too. Below is an overview of the rendered colors.
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="p-3 mb-3 text-bg-primary rounded-3">Primary</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="p-3 mb-3 text-bg-secondary rounded-3">Secondary</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="p-3 mb-3 text-bg-success rounded-3">Success</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="p-3 mb-3 text-bg-danger rounded-3">Danger</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="p-3 mb-3 text-bg-warning rounded-3">Warning</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="p-3 mb-3 text-bg-info rounded-3">Info</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="p-3 mb-3 text-bg-light rounded-3">Light</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="p-3 mb-3 text-bg-dark rounded-3">Dark</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="p-3 mb-3 text-bg-white rounded-3">White</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="p-3 mb-3 bg-black text-white rounded-3">Black</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
## Colored contrasting links
|
||||
|
||||
Hinode defines additional classes to render links that contrast with their background. Simply add `link-bg-<color>` to the class of an `<a>` anchor element. The next example adds a link constrasting with the background color `bg-success`.
|
||||
|
||||
```html
|
||||
<div class="col-md-2">
|
||||
<div class="p-3 mb-3 bg-success rounded-3 text-center"><a class="link-bg-success" href="#">Success</a></div>
|
||||
</div>
|
||||
```
|
||||
|
||||
The result looks like this.
|
||||
|
||||
<div class="col-md-2">
|
||||
<div class="p-3 mb-3 bg-success rounded-3 text-center"><a class="link-bg-success" href="#">Success</a></div>
|
||||
</div>
|
||||
|
||||
Below grid illustrates the contrasting colors for each background.
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="p-3 mb-3 bg-primary rounded-3"><a class="link-bg-primary" href="#">Primary</a></div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="p-3 mb-3 bg-secondary rounded-3"><a class="link-bg-secondary" href="#">Secondary</a></div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="p-3 mb-3 bg-success rounded-3"><a class="link-bg-success" href="#">Success</a></div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="p-3 mb-3 bg-danger rounded-3"><a class="link-bg-danger" href="#">Danger</a></div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="p-3 mb-3 bg-warning rounded-3"><a class="link-bg-warning" href="#">Warning</a></div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="p-3 mb-3 bg-info rounded-3"><a class="link-bg-info" href="#">Info</a></div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="p-3 mb-3 bg-light rounded-3"><a class="link-bg-light" href="#">Light</a></div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="p-3 mb-3 bg-dark rounded-3"><a class="link-bg-dark" href="#">Dark</a></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
## Generating helper
|
||||
|
||||
The SCSS generator for the colored links is defined in `assets/scss/helpers/_colored-links.scss`.
|
||||
|
||||
{{< scss-docs name="colored-links" file="assets/scss/helpers/_colored-links.scss" >}}
|
@@ -1,9 +0,0 @@
|
||||
---
|
||||
title: Comments
|
||||
description:
|
||||
date: 2023-01-14
|
||||
group: configuration
|
||||
layout: docs
|
||||
---
|
||||
|
||||
<!-- TODO: expand -->
|
@@ -1,9 +0,0 @@
|
||||
---
|
||||
title: Deployment
|
||||
description:
|
||||
date: 2023-01-26
|
||||
group: configuration
|
||||
layout: docs
|
||||
---
|
||||
|
||||
<!-- TODO: expand -->
|
@@ -1,23 +0,0 @@
|
||||
---
|
||||
title: Fonts
|
||||
description: Configure a specific font to style your website.
|
||||
date: 2023-01-21
|
||||
group: configuration
|
||||
layout: docs
|
||||
---
|
||||
|
||||
Hinode uses a configurable font stack that includes support for Emoji across browsers and devices. Review the configuration settings on how to update the font.
|
||||
|
||||
## Font configuration
|
||||
|
||||
Hinode uses Bootstrap's font configuration. The font stack includes support for Emoji across browsers and devices. You can adjust the main font in the `/config/_default/params.toml` file in the `style` section.
|
||||
|
||||
{{< toml-docs name="font" file="config/_default/params.toml" >}}
|
||||
|
||||
By default, Hinode configures the `Inter` font provided by [Google Fonts]({{< param "links.google_fonts" >}}) with the weights 200, 300, and 600. If you use a different font provider, be sure to adjust the Content Security Policy in the [server configuration]({{< ref "server" >}}).
|
||||
|
||||
## Customization
|
||||
|
||||
The font stack is defined in the `assets/scss/common/_variables.scss` file. The variable `$themeFont` is initialized to the value in the [font configuration](#font-configuration).
|
||||
|
||||
{{< scss-docs name="font" file="assets/scss/common/_variables.scss" >}}
|
@@ -1,67 +0,0 @@
|
||||
---
|
||||
title: Icons
|
||||
description: Configure secure access to icons from Bootstrap and Font Awesome.
|
||||
date: 2023-01-23
|
||||
group: configuration
|
||||
layout: docs
|
||||
---
|
||||
|
||||
Hinode processes the Bootstrap icons to ensure they adhere to the strict [content security policy]({{< ref "server" >}}). In addition, it provides access to the free icons of [Font Awesome]({{< param "links.fontawesome" >}}).
|
||||
|
||||
## Bootstrap icons
|
||||
|
||||
Bootstrap uses various embedded vector images (in <abbr title="Scalable Vector Graphics">SVG</abbr> format) throughout its Sass source files. Hinode replaces these embedded images with file-based vector images, as the [content security policy]({{< ref "server" >}}) prohibits loading of embedded images. To ensure the images are consistent with the [theme colors]({{< ref "colors" >}}), the images are postprocessed using [Hugo templating]({{< param "links.hugo_templates">}}).
|
||||
|
||||
### Build pipeline
|
||||
|
||||
Hinodes uses npm and mounted folders to create a flexibile virtual file system that is automatically kept up to date. Review the [overview]({{< ref "overview" >}}) for a detailed explanation. The build pipeline of the Bootstrap icons consists of four steps. It is intertwined with the [build process for the stylesheets]({{< ref "styles" >}}).
|
||||
|
||||
1. Override the inline Bootstrap icon definitions
|
||||
|
||||
Replace the default inline icon definitions within the Bootstrap Sass files with references to local vector images. Use the file `assets/scss/common/_icons.scss` to ensure the definitions take precedence over the default Bootstrap values. For example, the following statement updates the value of the `$form-switch-focus-bg-image`:
|
||||
|
||||
```scss
|
||||
$form-switch-focus-bg-image: url("icons/form-switch-focus-bg-image.svg") !default;
|
||||
```
|
||||
|
||||
2. Export the Sass variables
|
||||
|
||||
Export the required Sass variables by defining them in the `assets/scss/common/_export.scss` file. Hinode converts the variable names from kebab case to snake case to make them compatible with Hugo's variable naming convention. For example, the css variable `--form-switch-focus-color` is exposed as `.form_switch_focus_color` to the Hugo templates.
|
||||
|
||||
```scss
|
||||
:hinode-theme {
|
||||
--form-switch-focus-color: #{$form-switch-focus-color};
|
||||
}
|
||||
```
|
||||
|
||||
3. Reference the Sass variables within each icon file
|
||||
|
||||
Use [Hugo templating]({{< param "links.hugo_templates">}}) to reference the Sass variables for fill colors and stroke colors. For example, the file `assets/icons/form-switch-focus-bg-image.svg` defines the fill color as `{{ .form_switch_focus_color }}`. The entire vector definition is as such:
|
||||
|
||||
```html
|
||||
<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
|
||||
<circle r='3' fill='{{ .form_switch_focus_color }}'/>
|
||||
</svg>
|
||||
```
|
||||
|
||||
4. Process the icon files
|
||||
|
||||
Add the local icon files to the `assets/icons` folder with a filename as defined in step 1. The partial `partials/head/stylesheet.html` calls the partial `partials/head/icons.html` to process all icon files with the `.svg` extension recursively. The output is stored in the `icons` folder within the output directory (usually `public` when building the site). The icon files are referenced in the main stylesheet automatically.
|
||||
|
||||
### Icons definitions
|
||||
|
||||
The icons are defined in the file `assets/scss/common/_icons.scss`. The current configuration is the following:
|
||||
|
||||
{{< scss-docs name="icons" file="assets/scss/common/_icons.scss" >}}
|
||||
|
||||
### Export definitions
|
||||
|
||||
The exported variables are defined in the file `assets/scss/common/_export.scss`. The current configuration is the following:
|
||||
|
||||
{{< scss-docs name="export" file="assets/scss/common/_export.scss" >}}
|
||||
|
||||
## Font Awesome icons
|
||||
|
||||
[Font Awesome]({{< param "links.fontawesome" >}}) provides a collection of icons to be used freely on websites and other media. See the [icons documentation]({{< relref "../content/icons" >}}) in the content section on how to use them to style your website. Hinode uses the <abbr title="Cascading Style Sheets">CSS</abbr> files and web fonts of Font Awesome, as the [content security policy]({{< ref "server" >}}) prohibits the inline execution of stylesheets by the JavaScripts of Font Awesome. The CSS files are bundled with the main stylesheet. The web fonts are copied to the `/static/fonts` folder with the repository. Use the npm command `npm run copy:fonts` to copy the latest version of the files. The CSS files are referenced in the `assets/scss/app.scss` file. This is the current configuration:
|
||||
|
||||
{{< scss-docs name="awesome" file="assets/scss/app.scss" >}}
|
@@ -1,43 +0,0 @@
|
||||
---
|
||||
title: Languages
|
||||
description: Configure multiple languages to enable multilingual sites.
|
||||
date: 2023-01-21
|
||||
group: configuration
|
||||
layout: docs
|
||||
---
|
||||
|
||||
Hinode supports Hugo's [multilingual mode]({{< param "links.hugo_lang" >}}) to create websites with multiple languages side by side. The next paragraphs explain how to configure multiple languages, how to provide content translations, and how to define multilingual messages and keywords.
|
||||
|
||||
## Language configuration
|
||||
|
||||
Define the languages available to your site in the main site configuration. The below configuration shows the default configuration set in `config/_default/languages.toml` for the English language.
|
||||
|
||||
{{< toml-docs name="lang-main" file="config/_default/languages.toml" >}}
|
||||
|
||||
The default behavior is set in `config/_default/config.toml`. For example, you can set the `defaultContentLanguageInSubdir` to `false` to remove the language slug `/en` from your site entirely.
|
||||
|
||||
{{< toml-docs name="language" file="config/_default/config.toml" >}}
|
||||
|
||||
## Content translation
|
||||
|
||||
Hugo supports multiple ways to define translated content. Hinode uses an approach to define translations in separate directories for each language. In the default settings, content for the English language is defined in the folder `content/en`. It is recommended to use the same filename for each page translation. This enables Hugo to recognize if a page translation is available. Hinode links to this translation in the main navigation bar.
|
||||
|
||||
For example, consider the `About` page. It is available in both English and Dutch. The content files are defined in `content/en/about.md` and `content/nl/about.md`. Hugo now recognizes the page is available in two languages. To translate the URL for the Dutch page, a `slug` is defined the page's frontmatter:
|
||||
|
||||
```yml
|
||||
---
|
||||
slug: "over-mij"
|
||||
---
|
||||
```
|
||||
|
||||
The English page is available by navigating to `/en/about` and the Dutch translation is available on `/nl/over-mij`. The [main navigation]({{< ref "navigation#main-navigation" >}}) item shows a language switcher for both translations.
|
||||
|
||||
## Internationalization
|
||||
|
||||
Hinode uses Hugo's [internationalization function]({{< param "links.hugo_i18n" >}}) to translate keywords and messages. Translations are available in English, Dutch, and German. For example, the translation for the word `about` in the Dutch language is defined in `i18n/nl.yaml` (strictly speaking, it translates to `about me`).
|
||||
|
||||
```yml
|
||||
# Content
|
||||
- id: about
|
||||
translation: "Over mij"
|
||||
```
|
@@ -1,321 +0,0 @@
|
||||
---
|
||||
title: Layout
|
||||
description: Hinode uses a grid-based, responsive design for the home page, single pages and list pages.
|
||||
date: 2023-01-21
|
||||
group: configuration
|
||||
layout: docs
|
||||
---
|
||||
|
||||
Hinode uses Bootstrap's [grid system]({{< param "links.bs_grid" >}}) and [breakpoints]({{< param "links.bs_breakpoints" >}}) to create a responsive layout across devices or viewport sizes. All pages follow the same base layout, which includes headers and footers. The next paragraphs explain the layout styles in more detail.
|
||||
|
||||
## Base layout
|
||||
|
||||
The base layout defines a page skeleton of which all other pages are derived. It consists of four major sections, being a header, body, social footer, and bottom footer. It also loads sytlesheets, scripts, and generates the metadata. The header includes the [main navigation]({{< ref "navigation#main-navigation" >}}) and can be optionally fixed to the top. By default, the base layout is expanded to fill the entire available viewport. This means that all elements stretch horizontally across the entire viewport. The body also expands vertically, where the footers align to the bottom of the viewport.
|
||||
|
||||
### Example
|
||||
|
||||
The following diagram illustrates the conceptual base design:
|
||||
|
||||
<div class="container-fluid text-center bg-light border rounded-3 bg-opacity-10 p-3">
|
||||
<div class="row g-3">
|
||||
<div class="col-12">
|
||||
<div class="p-3 bg-primary bg-opacity-10 rounded-3">Header .col-12 <i>(optionally fixed)</i></div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="p-3 bg-primary bg-opacity-10 rounded-3">
|
||||
<p class="mb-5">Body .col-12 .flex-fill</p>
|
||||
<i>expands to fill viewport</i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="p-3 bg-primary bg-opacity-10 rounded-3">Social .col-12</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="p-3 bg-primary bg-opacity-10 rounded-3">Footer .col-12</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
### Configuration
|
||||
|
||||
Hinode uses several settings from Hugo's [main configuration]({{< param "links.hugo_config" >}}). Several extensions are defined in the [custom site parameters]({{< param "links.hugo_config_dir" >}}) and [language-specific configuration]({{< param "links.hugo_lang_config" >}}).
|
||||
|
||||
#### Main configuration
|
||||
|
||||
The base layout uses the [main configuration]({{< param "links.hugo_config" >}}) of Hugo. The settings below are actively used by Hinode:
|
||||
|
||||
| Setting | Default | Description |
|
||||
|---------------|---------|-------------|
|
||||
| title | - | Title of the website, joined with the separator and title of the current page. |
|
||||
| copyright | - | Copyright notice added to the page footer. |
|
||||
| paginate | 9 | Maximum number of elements to display on a [list page](#list-pages) before pagination. |
|
||||
| enableGitInfo | - | Enables git information, which is used by [documentation pages](#documentation-layout). |
|
||||
{.table}
|
||||
|
||||
The below configuration shows the default configuration set in `config/_default/config.toml`.
|
||||
|
||||
{{< toml-docs name="main" file="config/_default/config.toml" >}}
|
||||
|
||||
#### Extended configuration
|
||||
|
||||
Hinode uses the following extended settings in the `main` section of the `site parameters`:
|
||||
|
||||
| Setting | Default | Description |
|
||||
|--------------|---------|-------------|
|
||||
| separator | "-" | Seperator to join the website title and page title. |
|
||||
| description | - | Short description of the website that is added to the page metadata. |
|
||||
{.table}
|
||||
|
||||
The below configuration shows the default configuration set in `config/_default/params.toml`.
|
||||
|
||||
{{< toml-docs name="main" file="config/_default/params.toml" >}}
|
||||
|
||||
#### Language-specific configuration
|
||||
|
||||
Hinode supports [multilingual content]({{< param "links.hugo_lang_config" >}}). The following parameters are used in the site's footer, header, and meta data. Refer to the [languages]{{< ref "languages" >}}) section to review the various configuration options to enable multilingual content.
|
||||
|
||||
| Section | Setting | Default | Description |
|
||||
|---------|---------------|---------|-------------|
|
||||
| head | tagline | - | Tagline used on the site's title for the home page. |
|
||||
| feature | message | - | Welcome message used in the featured section on the home page. |
|
||||
| feature | tagline | - | Tagline used below the welcome message in the featured section on the home page. |
|
||||
| feature | link | - | Call to action link in the featured section on the home page. |
|
||||
| feature | caption | "About" | Call to action title in the featured section on the home page. |
|
||||
| footer | license | - | License displayed on the site's footer. |
|
||||
| footer | socialTitle | - | Title displayed in the site's social footer. |
|
||||
| footer | socialCaption | - | Caption displayed in the site's social footer. |
|
||||
{.table}
|
||||
|
||||
The below configuration shows the default configuration set in `config/_default/languages.toml` for the English language.
|
||||
|
||||
{{< toml-docs name="lang-param" file="config/_default/languages.toml" >}}
|
||||
|
||||
## Home page
|
||||
|
||||
The home page introduces a feature element and provides a selection of the three most recent items in a section, such as blog posts and project descriptions. The items are displayed as card groups and alternate between a vertical grid and a horizontal grid. A button that links to the related section is added below each group. The feature element can optionally cover the entire viewscreen.
|
||||
|
||||
### Example
|
||||
|
||||
The following diagram illustrates the conceptual layout of the home page:
|
||||
|
||||
<div class="container-fluid text-center bg-light border rounded-3 bg-opacity-10 p-3">
|
||||
<div class="row g-3">
|
||||
<div class="col-12">
|
||||
<div class="p-3 bg-secondary bg-opacity-10 rounded-3">Header .col-12</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="p-3 bg-primary bg-opacity-10 rounded-3">
|
||||
<p>Feature .col-12</p>
|
||||
<i>optionally spans viewport</i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="p-3 bg-primary bg-opacity-10 rounded-3">Card .col-4</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="p-3 bg-primary bg-opacity-10 rounded-3">Card .col-4</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="p-3 bg-primary bg-opacity-10 rounded-3">Card .col-4</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="p-3 bg-primary bg-opacity-10 rounded-3">Card .col-12</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="p-3 bg-primary bg-opacity-10 rounded-3">Card .col-12</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="p-3 bg-primary bg-opacity-10 rounded-3">Card .col-12</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="p-3 bg-secondary bg-opacity-10 rounded-3">Social .col-12</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="p-3 bg-secondary bg-opacity-10 rounded-3">Footer .col-12</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
### Configuration
|
||||
|
||||
The configuration of the home page is set in the `home` section of the `site parameters`. The folllowing settings are supported:
|
||||
|
||||
| Setting | Default | Description |
|
||||
|--------------|---------|-------------|
|
||||
| sections | - | Sections to include on the home page, e.g. ["blog", "projects"]. |
|
||||
| featurePhoto | - | Url of the photo to include in the feature element. |
|
||||
| fullCover | false | Flag to indicate if the feature element should cover the entire front page. |
|
||||
{.table}
|
||||
|
||||
The below configuration shows the default configuration set in `config/_default/params.toml`.
|
||||
|
||||
{{< toml-docs name="home" file="config/_default/params.toml" >}}
|
||||
|
||||
## List pages
|
||||
|
||||
List pages provide an overview of available content within a section as a card group. By default, the most recent nine items are displayed. Adjust the setting `paginate` in the [main configuration](#configuration) as needed. If the section contains more items, a paginator is added below the card group.
|
||||
|
||||
### Example
|
||||
|
||||
The following diagram illustrates the conceptual layout of a list page:
|
||||
|
||||
<div class="container-fluid text-center bg-light border rounded-3 bg-opacity-10 p-3">
|
||||
<div class="row g-3">
|
||||
<div class="col-12">
|
||||
<div class="p-3 bg-secondary bg-opacity-10 rounded-3">Header .col-12</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="p-3 bg-primary bg-opacity-10 rounded-3">Card</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="p-3 bg-primary bg-opacity-10 rounded-3">Card</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="p-3 bg-primary bg-opacity-10 rounded-3">Card</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="p-3 bg-primary bg-opacity-10 rounded-3">Card</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="p-3 bg-primary bg-opacity-10 rounded-3">Card</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="p-3 bg-primary bg-opacity-10 rounded-3">Card</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="p-3 bg-primary bg-opacity-10 rounded-3">Card</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="p-3 bg-primary bg-opacity-10 rounded-3">Card</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="p-3 bg-primary bg-opacity-10 rounded-3">Card</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="p-3 bg-secondary bg-opacity-10 rounded-3">Social .col-12</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="p-3 bg-secondary bg-opacity-10 rounded-3">Footer .col-12</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
### Configuration
|
||||
|
||||
The configuration of the list pages is set in the `list` section of the `site parameters`. You can specify the settings for each section of your content. The entire configuration is fully optional and uses default settings if omitted. The folllowing settings are supported per section:
|
||||
|
||||
| Setting | Default | Description |
|
||||
|--------------|--------------|-------------|
|
||||
| title | Section name | Title of the list page, displayed above the card group. By default, the title defined in the page's frontmatter is used. |
|
||||
| sort | "date" | Type of sorting to be used, either "date" (default), "weight", "publication", "expiration", "lastmod", "length", "title", "linktitle", or "<param>". See Hugo's [content ordering]({{< param "links.hugo_ordering" >}}) for more details. |
|
||||
| reverse | true | Flag to indicate the sorting of the section content should be reversed, defaults to true. |
|
||||
| cols | 3 | Number of columns to display in the card group, defaults to 3. |
|
||||
| color | - | Theme color of the card, either "primary", "secondary", "success", "danger", "warning", "info", "light", "dark", "white" or "black". By default, no color is specified. |
|
||||
| padding | "auto" | Padding of the content, either "0", "1", "2", "3", "4", "5", or "auto" (default). |
|
||||
| header | "full" | Header components of the card, displayed in small caps. Supported values are "full" (default), "publication", "tags", and "none". |
|
||||
| footer | "none" | Footer components of the card, displayed in small caps. Supported values are "full", "publication", "tags", and "none" (default). |
|
||||
| orientation | "stacked" | Placecement of the thumbnail, either "stacked" (default), "horizontal", or "none". |
|
||||
| style | - | Optional styling attributes added to card class, e.g. "border-0" to remove the borders. |
|
||||
| homepage | 3 | Number of items to display on the home page (if defined in the [configuration](#configuration-1)), defaults to 3. |
|
||||
{.table}
|
||||
|
||||
The below configuration shows the default configuration set in `config/_default/params.toml`.
|
||||
|
||||
{{< toml-docs name="list" file="config/_default/params.toml" >}}
|
||||
|
||||
## Single pages
|
||||
|
||||
Single pages follow the base layout but introduce two columns next to the body content. The left column shows a [sidebar navigation]({{< ref "navigation#sidebar-navigation" >}}) if applicable and is left empty otherwise. The right column shows a [table of contents]({{< ref "navigation#table-of-contents" >}}) for the current page if applicable. On smaller viewscreens, the sidebar navigation folds into an offcanvas element, whilst the table of contents is hidden. On medium-sized screens the sidebar navigation takes precedence over the table of contents.
|
||||
|
||||
### Default layout
|
||||
|
||||
By default, single pages, such as a blog page, include the following elements in the body:
|
||||
|
||||
- **Title** - the title of the page as set in the page's frontmatter.
|
||||
- **Metadata** - the date of the page, the modification date (if applicable), the read time, and the amount of words on the page.
|
||||
- **Tags** - links to any tags defined in the page's frontmatter.
|
||||
- **Description** - the description as defined in the page's frontmatter, or as summarized by Hugo if omitted in the frontmatter.
|
||||
- **Thumbnail** - a thumbnail image with figure caption that links to the photo credits (if defined in the frontmatter).
|
||||
- **Navigation links** - links on the bottom of the page that link to the previoud and next page within the current section.
|
||||
|
||||
The below example illustrates the parameters used in the page's frontmatter:
|
||||
|
||||
```yaml
|
||||
---
|
||||
author: Mark Dumay
|
||||
title: Another project
|
||||
date: 2021-07-15
|
||||
description: Another project.
|
||||
tags: ["javascript", "golang"]
|
||||
thumbnail: img/coffee.jpg
|
||||
photoCredits: <a href="https://unsplash.com/@kfred">Karl Fredrickson</a>
|
||||
photoSource: <a href="https://unsplash.com/photos/TYIzeCiZ_60">Unsplash</a>
|
||||
---
|
||||
```
|
||||
|
||||
### Documentation layout
|
||||
|
||||
Documentation pages use a more straightforward, simplified layout compared to the default layout. They include the following elements in their body:
|
||||
|
||||
- **Title** - the title of the page as set in the page's frontmatter.
|
||||
- **Description** - the description as defined in the page's frontmatter, or as summarized by Hugo if omitted in the frontmatter.
|
||||
- **Metadata** - a revision date and link to the latest git commit on the bottom of the page. Enable `enableGitInfo` in the [main configuration](#main-configuration) for the git commit message to work.
|
||||
|
||||
Be sure to select the `docs` layout in the page's frontmatter to enable the documentation layout:
|
||||
|
||||
```yml
|
||||
---
|
||||
layout: docs
|
||||
---
|
||||
```
|
||||
|
||||
### Example
|
||||
|
||||
<div class="container-fluid text-center bg-light border rounded-3 bg-opacity-10 p-3">
|
||||
<div class="row g-3">
|
||||
<div class="col-12">
|
||||
<div class="p-3 bg-secondary bg-opacity-10 rounded-3">Header .col-12</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="row">
|
||||
<div class="col-3">
|
||||
<div class="bg-primary bg-opacity-10 rounded-3">
|
||||
<p>Sidebar</p>
|
||||
<i>sticky</i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="bg-primary bg-opacity-10 rounded-3">
|
||||
<p>Body .col-8 .flex-fill</p>
|
||||
<i>expands to fill viewport</i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<div class="bg-primary bg-opacity-10 rounded-3">
|
||||
<p>TOC</p>
|
||||
<i>sticky</i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="p-3 bg-secondary bg-opacity-10 rounded-3">Social .col-12</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="p-3 bg-secondary bg-opacity-10 rounded-3">Footer .col-12</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
### Configuration
|
||||
|
||||
The configuration of the documentation pages is set in the `docs` section of the site parameters. The folllowing settings are supported:
|
||||
|
||||
| Setting | Default | Description |
|
||||
|--------------|---------|-------------|
|
||||
| docs_version | - | Default version to use in documentation links. |
|
||||
{.table}
|
||||
|
||||
The below configuration shows the default configuration set in `config/_default/params.toml`.
|
||||
|
||||
{{< toml-docs name="docs" file="config/_default/params.toml" >}}
|
@@ -1,9 +0,0 @@
|
||||
---
|
||||
title: Metadata
|
||||
description:
|
||||
date: 2023-01-18
|
||||
group: configuration
|
||||
layout: docs
|
||||
---
|
||||
|
||||
<!-- TODO: expand -->
|
@@ -1,106 +0,0 @@
|
||||
---
|
||||
title: Navigation
|
||||
description: Help the user navigate your website using configurable navigation elements.
|
||||
date: 2023-01-15
|
||||
group: configuration
|
||||
layout: docs
|
||||
---
|
||||
|
||||
Hinode supports several types of navigation that utilize Bootstrap elements. The main navigation is positioned on the top of the screen and includes a search input element. An optional secondary navigation is available as sidebar. Next to these navigation items, pages may optionally include a breadcrumb to indicate the current page's location within the site's navigational hierarchy. Finally, pages may also include a table of contents element that is linked to the scroll position of the current page.
|
||||
|
||||
## Basic configuration
|
||||
|
||||
The basic configuration of the navigation elements is set in the `navigation` section of the site parameters. The folllowing settings are supported:
|
||||
|
||||
| Setting | Default | Description |
|
||||
|------------|---------|-------------|
|
||||
| logo | - | Address of the brand logo image, e.g. "/img/logo_embedded.svg". |
|
||||
| color | "white" | [Theme color]({{< ref "colors" >}}) of the navigation bar. Set the style to set the correct contrast of the menu items. |
|
||||
| style | "light" | Style of the navigation bar, either "light" or "dark". It changes the colors of the menu items accordingly. |
|
||||
| fixed | false | Flag indicating to keep the navigation bar fixed at the top of the screen. |
|
||||
| offset | "3em" | Applies an [offset to main elements]({{< param "links.bs_navbar_placement" >}}) when `fixed` is set to true. |
|
||||
| search | true | Flag indicating to include a search input. |
|
||||
| breadcrumb | false | Flag indicating to add breadcrumb navigation to the top of any single page. List pages are excluded. |
|
||||
| toc | true | Flag indicating to enable table of contents globally. Individual pages can override this setting in the frontmatter using the value `includeToc`. |
|
||||
| sidebar | true | Flag indicating to enable sidebar navigation globally. If set, a sidebar is displayed when applicable. |
|
||||
{.table}
|
||||
|
||||
The below configuration shows the default configuration set in `config/_default/params.toml`.
|
||||
|
||||
{{< toml-docs name="navigation" file="config/_default/params.toml" >}}
|
||||
|
||||
## Main navigation
|
||||
|
||||
The main navigation uses [Hugo's menu system]({{< param "links.hugo_menus" >}}) to generate a responsive navigation bar at the top of the page. The navigation bar uses a breakpoint to add a toggler for smaller screens. A language switcher is added automatically if your site supports multiple languages. The language switcher links to the currently translated page if available.
|
||||
|
||||
### Menus
|
||||
|
||||
The navigation bar uses [Hugo's menu system]({{< param "links.hugo_menus" >}}) to generate the menu items. The navigation supports nesting at one level depth. The following example defines an example menu configuration called `sample` (the main configuration is called `main`).
|
||||
|
||||
{{< toml-docs name="sample-navigation" file="config/_default/menus/menus.en.toml" >}}
|
||||
|
||||
### Example
|
||||
|
||||
Using the sample configuration defined in the previous paragraph, the navigation bar looks like this:
|
||||
|
||||
{{< navbar color="light" size="sm" search="false" menus="sample" title="Sample" >}}
|
||||
|
||||
### Customization
|
||||
|
||||
Hinode includes a navigation bar at the top of the screen by default. You can modify the configuration in the `layouts/_default/baseof.html` file. The navigation bar is also available as [shortcode]({{< ref "navbar" >}}).
|
||||
|
||||
## Sidebar navigation
|
||||
|
||||
Hinode supports optional sidebar navigation. It is intended to be used as companion to the main navigation and is typically used in content-heavy sections, such as documentation pages. On smaller screens, the sidebar is replaced with an [offcanvas element]({{< param "links.bs_offcanvas" >}}). In this case, the main navigation receives an additional toggler on the left of the screen.
|
||||
|
||||
### Menus
|
||||
|
||||
Inspired by Bootstrap's documentation site, Hinode uses a separate configuration file for the sidebar menus. A sidebar can be configured for each main section of the site. For example, the sidebar menus of the `Docs` section are defined in `data/docs.yml`. The menus support group items and single page items. Below example defines a group section called `Getting started` with three siblings. A single page `About` is added next.
|
||||
|
||||
```yml
|
||||
- title: Getting started
|
||||
pages:
|
||||
- title: Introduction
|
||||
- title: Commands
|
||||
- title: Contribute
|
||||
- title: About
|
||||
```
|
||||
|
||||
An entry in the page's [frontmatter]({{< param "links.hugo_frontmatter" >}}) is needed to link the page to the correct entry in the sidebar. Below example highlights the relevant frontmatter elements from the `Introduction` page, which is part of the `Getting started` group. Please notice the group name needs to be defined in kebab-case, e.g. `getting-started`. You can omit the group name for single page entries, such as the `About` page in the example configuration above.
|
||||
|
||||
```yml
|
||||
---
|
||||
title: Introduction
|
||||
group: getting-started
|
||||
---
|
||||
```
|
||||
|
||||
### Customization
|
||||
|
||||
The file `assets/scss/components/_sidebar.scss` contains the styling of the sidebar. It refers to a button `$btn-toggle` that is defined in `assets/scss/common/_icons.scss`. It also defines the spacing to be added to the page's main content section when using a fixed navigation bar:
|
||||
|
||||
{{< scss-docs name="sidebar" file="assets/scss/components/_sidebar.scss" >}}
|
||||
|
||||
## Breadcrumb
|
||||
|
||||
Hinode supports optional breadcrumb navigation. The breadcrumb indicates the current page's location within the site's navigational hierarchy. It is automatically populated by Hugo. Enable the breadcrumb in the [basic navigation configuration](#basic-configuration). If enabled, all single pages will add breadcrumb navigation to the top of the page.
|
||||
|
||||
### Example
|
||||
|
||||
When enabled, the breadcrumb looks like this:
|
||||
|
||||
{{< breadcrumb >}}
|
||||
|
||||
### Customization
|
||||
|
||||
The breadcrumb is also available as [shortcode]({{< ref "breadcrumb" >}}).
|
||||
|
||||
## Table of contents
|
||||
|
||||
Single pages can optionally show an [table of contents]({{< param "links.hugo_toc" >}}) on the right of the screen. The table of contents is automatically popuplated based on the headings within the page content (two levels deep). The table of contents is hidden on smaller screens or if it has less than two items. Enable the table of contents in the [basic navigation configuration](#basic-configuration). If enabled, all single pages will show the element, unless disabled in the page's frontmatter.
|
||||
|
||||
### Customization
|
||||
|
||||
The file `assets/scss/components/_toc.scss` defines the styling of the table of contents element. It adds spacing to align the element to the sidebar, amongst other styling:
|
||||
|
||||
{{< scss-docs name="toc" file="assets/scss/components/_toc.scss" >}}
|
@@ -1,66 +0,0 @@
|
||||
---
|
||||
title: Overview
|
||||
description: Configure and customize Hinode to your liking using Hugo Templating and npm dependencies.
|
||||
date: 2023-01-14
|
||||
group: configuration
|
||||
layout: docs
|
||||
---
|
||||
|
||||
As a theme for Hugo, Hinode is highly configurable and customizable. Based on Go's template libraries, Hugo enriches plain Markdown content with powerful features to generate websites. More information is available in [Hugo's documentation]({{< param "links.hugo_templates" >}}). To take advantage of package versioning and dependency management, Hinode takes a slightly different approach compared to most themes. The below paragraphs clarify the build system.
|
||||
|
||||
## npm packages
|
||||
|
||||
Both the [main theme]({{< param "links.repository" >}}) and [child theme]({{< param "links.repository_child" >}}) packages of Hinode are defined in the file `package.json` in the repository root. The extract below defines the key elements of the package configuration. The `name` is a unique identifier to identify the [package on npm]({{< param "links.package_npm" >}}). The `version` tag uses [semantic versioning]({{< param "links.semver" >}}), consisting of a `MAJOR` version, `MINOR` version, and `PATCH` version. In short, anything below `MAJOR` version `1` is considered to be in development and may not be backwards compatible. Starting from `1`, each `MAJOR` version may introduce breaking changes, whilst `MINOR` version usually introduce new features that are compatible with the `MAJOR` version. Lastly, `PATCH` usually indicates a bug fix or small revision.
|
||||
|
||||
The other two sections of interest are `devDependencies` and `otherDependencies`. As an Hugo theme, Hinode does not require any packages in production. Instead the development dependencies are used to generate the static site and its assets. For example, Bootstrap's JavaScript distribution file `/node_modules/bootstrap/dist/js` is bundled into the `js/main.bundle<.min>.js` file during build. The path `/node_modules/bootstrap/` refers to the Bootstap package defined as dependency. Lastly, the Hugo binary is installed as version-controlled dependency too. This ensures the build process is transparent and traceable, which simplifies debugging. Please refer to the [commands]({{< ref "commands" >}}) section to review the various npm commands available.
|
||||
|
||||
```yml
|
||||
{
|
||||
"name": "@markdumay/hugo-theme-hinode",
|
||||
"version": "0.8.0",
|
||||
"scripts": {
|
||||
[...]
|
||||
},
|
||||
[...]
|
||||
"devDependencies": {
|
||||
"bootstrap": "^5.2.3",
|
||||
[...]
|
||||
},
|
||||
"otherDependencies": {
|
||||
"hugo": "0.110.0"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Mounted folders
|
||||
|
||||
Hugo supports the mounting of folders since version 0.56.0. Hinode takes advantage of this feature to create a virtual file system, combining assets from multiple sources. For example, the below section of the `/config/_default/config.toml` instructs Hugo to make Bootstrap's JavaScript distribution file `/node_modules/bootstrap/dist/js` available in the `/assets/js` folder. This file is then bundled with the JavaScript files defined in the `/assets/js` folder of Hinode.
|
||||
|
||||
{{< alert color="primary" >}}
|
||||
When you add a mount, the default mount for the concerned target root is ignored: be sure to explicitly add it.
|
||||
{{< /alert >}}
|
||||
|
||||
```toml
|
||||
[module]
|
||||
[...]
|
||||
[[module.mounts]]
|
||||
source = "assets"
|
||||
target = "assets"
|
||||
[[module.mounts]]
|
||||
source = "node_modules/bootstrap/dist/js"
|
||||
target = "assets/js/vendor/bootstrap"
|
||||
includeFiles = "*.bundle.js"
|
||||
```
|
||||
|
||||
As another example, the Hinode child theme merges the key folders of the main theme with its own folder. This simplifies the modification of any base files, as the files in the local repository take precedence over the files of the main theme.
|
||||
|
||||
```toml
|
||||
[module]
|
||||
[...]
|
||||
[[module.mounts]]
|
||||
source = "node_modules/@markdumay/hugo-theme-hinode/i18n"
|
||||
target = "i18n"
|
||||
[[module.mounts]]
|
||||
source = "i18n"
|
||||
target = "i18n"
|
||||
```
|
@@ -1,35 +0,0 @@
|
||||
---
|
||||
title: Scripts
|
||||
description: Automatically bundle local and external JavaScript files into a single file.
|
||||
date: 2023-01-21
|
||||
group: configuration
|
||||
layout: docs
|
||||
---
|
||||
|
||||
Hinode bundles local and external JavaScript into a single file. By utilizing [npm]({{< ref "overview" >}}), external JavaScript files are automatically ingested and kept up to date.
|
||||
|
||||
## Build pipeline
|
||||
|
||||
Hinodes uses npm and mounted folders to create a flexibile virtual file system that is automatically kept up to date. Review the [overview]({{< ref "overview" >}}) for a detailed explanation. The build pipeline of the JavaScript files consists of four steps.
|
||||
|
||||
1. Add the local JavaScript files
|
||||
|
||||
Add the local JavaScript files to the `assets/js` folder with a recognizable filename.
|
||||
|
||||
2. Mount the JavaScript files maintained within a node package
|
||||
|
||||
Make JavaScripts defined in node packages available by mounting them into the `assets/js/vendor` folder. Define the mount points in `config/_default/config.toml`.
|
||||
|
||||
3. Bundle the JavaScript files
|
||||
|
||||
The partial `partials/footer/scripts.html` bundles all files that end with `.js` recursively into a single file called `js/main.bundle.js`. In production mode, the output is minified and linked to with a [fingerprint]({{< param "links.hugo_fingerprint" >}}).
|
||||
|
||||
4. Link to the JavaScript in the base layout
|
||||
|
||||
Hinode's base layout `layouts/_default/baseof.html` imports the bundled JavaScript file in the footer. The file is cached to improve performance.
|
||||
|
||||
## Example
|
||||
|
||||
Mount the external JavaScript files to Hugo's virtual file system within the file `config/_default/config.toml`. The current configuration imports the relevant files of [Bootstrap]({{< param "links.bootstrap" >}}) and [FlexSearch]({{< param "links.flexsearch" >}}).
|
||||
|
||||
{{< toml-docs name="javascript" file="config/_default/config.toml" >}}
|
@@ -1,15 +0,0 @@
|
||||
---
|
||||
title: Server
|
||||
description: Configure the server headers to refine the content security policy.
|
||||
date: 2023-01-21
|
||||
group: configuration
|
||||
layout: docs
|
||||
---
|
||||
|
||||
<!-- TODO: expand -->
|
||||
|
||||
## Server headers
|
||||
|
||||
Hinode uses rather strict security policies by default. This ensures the site is [secure by default]({{< param "links.observatory" >}}). However, if you want to include external resources, such as images and videos, you will need to explicity add these sources to the server headers. If omitted, the browser will refuse to load these resources, resulting in broken links or missing elements. The settings of the local development server are defined in `server.toml`. See the below configuration, which captures the external resources currently used by Hinode. Refine these settings as needed. Similar settings are defined in the `netlify.toml` file provided in the repository's root when deploying to [Netlify]({{< param "links.netlify" >}}).
|
||||
|
||||
{{< toml-docs name="server-config" file="config/_default/server.toml" >}}
|
@@ -1,59 +0,0 @@
|
||||
---
|
||||
title: Styles
|
||||
description: Use extensible Sass files to generate the stylesheets for your website.
|
||||
date: 2023-01-21
|
||||
group: configuration
|
||||
layout: docs
|
||||
---
|
||||
|
||||
<!-- TODO: include dartsass -->
|
||||
|
||||
Hinode uses Sass files to take advantage of variables, maps, and functions to generate the cascading style sheets of the website. By utilizing [npm]({{< ref "overview" >}}), Bootstrap's source Sass file are automatically ingested and kept up to date.
|
||||
|
||||
## Build pipeline
|
||||
|
||||
Hinodes uses npm and mounted folders to create a flexibile virtual file system that is automatically kept up to date. Review the [overview]({{< ref "overview" >}}) for a detailed explanation. The build pipeline of the stylesheet consists of five steps.
|
||||
|
||||
1. Define the Sass entrypoint
|
||||
|
||||
The main entrypoint for the Sass files is defined in `assets/scss/app.scss`. It supports Hugo templating. For example, it defines a variable `$themeFont` that links to the [font configuration]({{< ref "fonts" >}}). The variable is available within all source Sass files.
|
||||
|
||||
2. Import the source Sass files
|
||||
|
||||
The application entrypoint imports the various source Sass files defined in `assets/scss`, which are combined with the Sass files of [Bootstrap]({{< param "links.bootstrap" >}}) and [Font Awesome (Free)]({{< param "links.fontawesome" >}}). The vendor paths are relative to the `node_modules` folder, which are installed by [npm]({{< ref "commands" >}}).
|
||||
|
||||
3. Override and expand the Sass configuration
|
||||
|
||||
The import order of the source files defines which variables and functions to use. In Sass, the first definition of a variable or function takes precedence. For example, to override the setting for the variable `$primary`, is needs to be defined prior to Bootstrap's definition in `_variables.scss`.
|
||||
|
||||
4. Transpile the Sass files
|
||||
|
||||
The partial `partials/head/stylesheet.html` reads the application entrypoint, configures the `node_modules` folder as import path, and transpiles the stylesheet into a single file `main.css`. In production mode, the output is minified and linked to with a [fingerprint]({{< param "links.hugo_fingerprint" >}}).
|
||||
|
||||
5. Link to the stylesheet in the base layout
|
||||
|
||||
Hinode's base layout `layouts/_default/baseof.html` imports the generated stylesheet in the header section of the webpage via the partial `layouts/partials/head/head.html`.
|
||||
|
||||
## Example
|
||||
|
||||
The below Sass file defines a skeleton configuration for the main entrypoint. The full configuration is defined in `assets/scss/app.scss`.
|
||||
|
||||
```scss
|
||||
// 1) Define template variables (linking to Hugo config)
|
||||
$primary: {{ site.Params.style.primary | default "#007bff" }};
|
||||
|
||||
// 2) Include default variable overrides
|
||||
@import "common/variables.scss";
|
||||
|
||||
// 3) Import Bootstrap configuration
|
||||
@import "bootstrap/scss/variables";
|
||||
|
||||
// 4) Import Bootstrap layout & components
|
||||
@import "bootstrap/scss/root";
|
||||
|
||||
// 5) Import Font Awesome
|
||||
@import "@fortawesome/fontawesome-free/scss/fontawesome";
|
||||
|
||||
// 6) Import Hinode theme styles
|
||||
@import "common/styles.scss";
|
||||
```
|
@@ -1,9 +0,0 @@
|
||||
---
|
||||
title: Figures
|
||||
description:
|
||||
date: 2023-01-06
|
||||
group: content
|
||||
layout: docs
|
||||
---
|
||||
|
||||
<!-- TODO: expand -->
|
@@ -1,340 +0,0 @@
|
||||
---
|
||||
title: Icons
|
||||
description: Use out-of-the-box Font Awesome icons to style your website.
|
||||
date: 2023-01-24
|
||||
group: content
|
||||
layout: docs
|
||||
---
|
||||
|
||||
Hinode provides out-of-the box access to the free icons of [Font Awesome]({{< param "links.fontawesome" >}}). The icon library provides various [styling options]({{< param "links.fa_styling" >}}). The below paragraphs illustrate how to apply the styling options compatible with Markdown, Bootstrap, and the [content security policy]({{< ref "server" >}}).
|
||||
|
||||
## Styling basics
|
||||
|
||||
The [Font Awesome icon library]({{< param "links.fa_icons" >}}) provides access to more than 2.000 free and open-source icons. Simply search for a keyword and review the presented options. For example, searching for the keyword `music` and filtering for `free` returns a list of nearly 30 icons. Simply add the HTML statement to your Markdown content.
|
||||
|
||||
```html
|
||||
<i class="fa-solid fa-music"></i>
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
<i class="fa-solid fa-music"></i>
|
||||
|
||||
The icons inherit the current styling options and as such blend in with text inline. For example, appply the [theme color]({{< ref "colors" >}}) `text-primary` to change the color of the icon.
|
||||
|
||||
```html
|
||||
<span class="text-primary">
|
||||
<i class="fa-solid fa-music text-primary"></i>
|
||||
</span>
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
<span class="text-primary">
|
||||
<i class="fa-solid fa-music"></i>
|
||||
</span>
|
||||
|
||||
## Sizing icons
|
||||
|
||||
Font Awesome supports both relative and absolute sizing. The following two section explain how to apply the sizing to an icon.
|
||||
|
||||
### Relative sizing
|
||||
|
||||
Font Awesome includes a range of t-shirt based sizes that are relative to the browser's default font size of 16px. The icons align to the inline text. The following example illustrative the available relative sizes.
|
||||
|
||||
```html
|
||||
<p><i class="fa-solid fa-coffee fa-2xs"></i> When my six o’clock alarm buzzes, I require a pot of good java.</p>
|
||||
<p><i class="fa-solid fa-coffee fa-xs"></i> When my six o’clock alarm buzzes, I require a pot of good java.</p>
|
||||
<p><i class="fa-solid fa-coffee fa-sm"></i> When my six o’clock alarm buzzes, I require a pot of good java.</p>
|
||||
<p><i class="fa-solid fa-coffee"></i> When my six o’clock alarm buzzes, I require a pot of good java.</p>
|
||||
<p><i class="fa-solid fa-coffee fa-lg"></i> When my six o’clock alarm buzzes, I require a pot of good java.</p>
|
||||
<p><i class="fa-solid fa-coffee fa-xl"></i> When my six o’clock alarm buzzes, I require a pot of good java.</p>
|
||||
<p><i class="fa-solid fa-coffee fa-2xl"></i> When my six o’clock alarm buzzes, I require a pot of good java.</p>
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
<p><i class="fa-solid fa-coffee fa-2xs"></i> When my six o’clock alarm buzzes, I require a pot of good java.</p>
|
||||
<p><i class="fa-solid fa-coffee fa-xs"></i> When my six o’clock alarm buzzes, I require a pot of good java.</p>
|
||||
<p><i class="fa-solid fa-coffee fa-sm"></i> When my six o’clock alarm buzzes, I require a pot of good java.</p>
|
||||
<p><i class="fa-solid fa-coffee"></i> When my six o’clock alarm buzzes, I require a pot of good java.</p>
|
||||
<p><i class="fa-solid fa-coffee fa-lg"></i> When my six o’clock alarm buzzes, I require a pot of good java.</p>
|
||||
<p><i class="fa-solid fa-coffee fa-xl"></i> When my six o’clock alarm buzzes, I require a pot of good java.</p>
|
||||
<p><i class="fa-solid fa-coffee fa-2xl"></i> When my six o’clock alarm buzzes, I require a pot of good java.</p>
|
||||
|
||||
The table below illustrates the relative sizing classes and their equivalent relative and absolute font size.
|
||||
|
||||
{{< table "table-striped w-auto" >}}
|
||||
| Relative Sizing Class | Font Size | Equivalent in Pixels |
|
||||
|----------|--------:|-----:|
|
||||
| `fa-2x` | 0.625em | 10px |
|
||||
| `fa-xs` | 0.75em | 12px |
|
||||
| `fa-sm` | 0.875em | 14px |
|
||||
| `fa-lg` | 1.25em | 20px |
|
||||
| `fa-xl` | 1.5em | 24px |
|
||||
| `fa-2xl` | 2em | 32px |
|
||||
{{< /table >}}
|
||||
|
||||
### Absolute sizing
|
||||
|
||||
Font Awesome also supports absolute sizing on a scale of 1x to 10x. The icons do not necessarily align to their surrounding text. The following example illustrative the various absolute sizes.
|
||||
|
||||
```html
|
||||
<i class="fa-solid fa-camera fa-1x"></i>
|
||||
<i class="fa-solid fa-camera fa-2x"></i>
|
||||
<i class="fa-solid fa-camera fa-3x"></i>
|
||||
<i class="fa-solid fa-camera fa-4x"></i>
|
||||
<i class="fa-solid fa-camera fa-5x"></i>
|
||||
<i class="fa-solid fa-camera fa-6x"></i>
|
||||
<i class="fa-solid fa-camera fa-7x"></i>
|
||||
<i class="fa-solid fa-camera fa-8x"></i>
|
||||
<i class="fa-solid fa-camera fa-9x"></i>
|
||||
<i class="fa-solid fa-camera fa-10x"></i>
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
<i class="fa-solid fa-camera fa-1x"></i>
|
||||
<i class="fa-solid fa-camera fa-2x"></i>
|
||||
<i class="fa-solid fa-camera fa-3x"></i>
|
||||
<i class="fa-solid fa-camera fa-4x"></i>
|
||||
<i class="fa-solid fa-camera fa-5x"></i>
|
||||
<i class="fa-solid fa-camera fa-6x"></i>
|
||||
<i class="fa-solid fa-camera fa-7x"></i>
|
||||
<i class="fa-solid fa-camera fa-8x"></i>
|
||||
<i class="fa-solid fa-camera fa-9x"></i>
|
||||
<i class="fa-solid fa-camera fa-10x"></i>
|
||||
|
||||
The table below illustrates the absolute sizing classes and their equivalent font size.
|
||||
|
||||
{{< table "table-striped w-auto" >}}
|
||||
| Absolute Sizing Class | Font Size |
|
||||
|---------|--------:|
|
||||
| `fa-1x` | 1em |
|
||||
| `fa-2x` | 2em |
|
||||
| `fa-3x` | 3em |
|
||||
| `fa-4x` | 4em |
|
||||
| `fa-5x` | 5em |
|
||||
| `fa-6x` | 6em |
|
||||
| `fa-7x` | 7em |
|
||||
| `fa-8x` | 8em |
|
||||
| `fa-9x` | 9em |
|
||||
| `fa-10x` | 10em |
|
||||
{{< /table >}}
|
||||
|
||||
## Fixed width
|
||||
|
||||
Add `fa-fw` to the class of the HTML element referencing your icon to apply a fixed width. This ensures icons of varying icon width are properly aligned to each other. The following example illustrates how this works.
|
||||
|
||||
```html
|
||||
<div class="h1">
|
||||
<div><i class="fa-solid fa-skating fa-fw bg-info"></i> Skating</div>
|
||||
<div><i class="fa-solid fa-skiing fa-fw bg-info"></i> Skiing</div>
|
||||
<div><i class="fa-solid fa-skiing-nordic fa-fw bg-info"></i> Nordic Skiing</div>
|
||||
<div><i class="fa-solid fa-snowboarding fa-fw bg-info"></i> Snowboarding</div>
|
||||
<div><i class="fa-solid fa-snowplow fa-fw bg-info"></i> Snowplow</div>
|
||||
</div>
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
<div class="h1">
|
||||
<div><i class="fa-solid fa-skating fa-fw bg-info"></i> Skating</div>
|
||||
<div><i class="fa-solid fa-skiing fa-fw bg-info"></i> Skiing</div>
|
||||
<div><i class="fa-solid fa-skiing-nordic fa-fw bg-info"></i> Nordic Skiing</div>
|
||||
<div><i class="fa-solid fa-snowboarding fa-fw bg-info"></i> Snowboarding</div>
|
||||
<div><i class="fa-solid fa-snowplow fa-fw bg-info"></i> Snowplow</div>
|
||||
</div>
|
||||
|
||||
## Lists
|
||||
|
||||
Use the classes `fa-ul` and `fa-li` to replace default bullets in unordered lists. The following example illustrates how this works.
|
||||
|
||||
```html
|
||||
<ul class="fa-ul">
|
||||
<li><span class="fa-li"><i class="fa-solid fa-check-square"></i></span>List icons can</li>
|
||||
<li><span class="fa-li"><i class="fa-solid fa-check-square"></i></span>be used to</li>
|
||||
<li><span class="fa-li"><i class="fa-solid fa-spinner fa-pulse"></i></span>replace bullets</li>
|
||||
<li><span class="fa-li"><i class="fa-regular fa-square"></i></span>in lists</li>
|
||||
</ul>
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
<ul class="fa-ul">
|
||||
<li><span class="fa-li"><i class="fa-solid fa-check-square"></i></span>List icons can</li>
|
||||
<li><span class="fa-li"><i class="fa-solid fa-check-square"></i></span>be used to</li>
|
||||
<li><span class="fa-li"><i class="fa-solid fa-spinner fa-pulse"></i></span>replace bullets</li>
|
||||
<li><span class="fa-li"><i class="fa-regular fa-square"></i></span>in lists</li>
|
||||
</ul>
|
||||
|
||||
## Rotating icons
|
||||
|
||||
Use specific classes to rotate the icon with a specific degree. The following example illustrates how this works.
|
||||
|
||||
```html
|
||||
<div class="fa-3x">
|
||||
<i class="fa-solid fa-snowboarding"></i>
|
||||
<i class="fa-solid fa-snowboarding fa-rotate-90"></i>
|
||||
<i class="fa-solid fa-snowboarding fa-rotate-180"></i>
|
||||
<i class="fa-solid fa-snowboarding fa-rotate-270"></i>
|
||||
<i class="fa-solid fa-snowboarding fa-flip-horizontal"></i>
|
||||
<i class="fa-solid fa-snowboarding fa-flip-vertical"></i>
|
||||
<i class="fa-solid fa-snowboarding fa-flip-both"></i>
|
||||
</div>
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
<div class="fa-3x">
|
||||
<i class="fa-solid fa-snowboarding"></i>
|
||||
<i class="fa-solid fa-snowboarding fa-rotate-90"></i>
|
||||
<i class="fa-solid fa-snowboarding fa-rotate-180"></i>
|
||||
<i class="fa-solid fa-snowboarding fa-rotate-270"></i>
|
||||
<i class="fa-solid fa-snowboarding fa-flip-horizontal"></i>
|
||||
<i class="fa-solid fa-snowboarding fa-flip-vertical"></i>
|
||||
<i class="fa-solid fa-snowboarding fa-flip-both"></i>
|
||||
</div>
|
||||
|
||||
The following classes are available:
|
||||
|
||||
{{< table "table-striped w-auto" >}}
|
||||
| Class | Details |
|
||||
|---------|--------|
|
||||
| `fa-rotate-90` | Rotates an icon 90° |
|
||||
| `fa-rotate-180` | Rotates an icon 180° |
|
||||
| `fa-rotate-270` | Rotates an icon 270° |
|
||||
| `fa-flip-horizontal` | Mirrors an icon horizontally |
|
||||
| `fa-flip-vertical` | Mirrors an icon vertically |
|
||||
| `fa-flip-both` | Mirrors an icon both vertically and horizontally |
|
||||
{{< /table >}}
|
||||
|
||||
## Animating icons
|
||||
|
||||
Font Awesome supports various animations by simply adding a animation class to the HTML element. The following example illustrates the available basic animations. Add custom styles to your [Sass files]({{< ref "styles" >}}) to apply additional [animation utilities]({{< param "links.fa_animation" >}}).
|
||||
|
||||
```html
|
||||
<div class="fa-3x">
|
||||
<i class="fa-solid fa-heart fa-beat"></i>
|
||||
<i class="fa-solid fa-triangle-exclamation fa-fade"></i>
|
||||
<i class="fa-solid fa-circle-info fa-beat-fade"></i>
|
||||
<i class="fa-solid fa-basketball fa-bounce"></i>
|
||||
<i class="fa-solid fa-camera-rotate fa-flip"></i>
|
||||
<i class="fa-solid fa-bell fa-shake"></i>
|
||||
<i class="fa-solid fa-sync fa-spin"></i>
|
||||
</div>
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
<div class="fa-3x">
|
||||
<i class="fa-solid fa-heart fa-beat"></i>
|
||||
<i class="fa-solid fa-triangle-exclamation fa-fade"></i>
|
||||
<i class="fa-solid fa-circle-info fa-beat-fade"></i>
|
||||
<i class="fa-solid fa-basketball fa-bounce"></i>
|
||||
<i class="fa-solid fa-camera-rotate fa-flip"></i>
|
||||
<i class="fa-solid fa-bell fa-shake"></i>
|
||||
<i class="fa-solid fa-sync fa-spin"></i>
|
||||
</div>
|
||||
|
||||
The following table describes the available basic animation classes.
|
||||
|
||||
{{< table "table-striped w-auto" >}}
|
||||
| Class | Details |
|
||||
|---------|--------|
|
||||
| `fa-beat` | Scales an icon up or down |
|
||||
| `fa-fade` | Fades an icon in and out |
|
||||
| `fa-beat-fade` | Scales and pulses an icon in and out |
|
||||
| `fa-bounce` | Bounces an icon up and down |
|
||||
| `fa-flip` | Rotates an icon about the Y axis 180 degrees |
|
||||
| `fa-shake` | Shakes an icon back and forth |
|
||||
| `fa-spin` | Roates an icon |
|
||||
{{< /table >}}
|
||||
|
||||
## Bordered and pulled icons
|
||||
|
||||
Use `fa-border` and `fa-pull-right` or `fa-pull-left` for easy pull quotes or article icons. The following example illustrates a quote.
|
||||
|
||||
```html
|
||||
<i class="fa-solid fa-quote-left fa-2x fa-pull-left"></i>
|
||||
Gatsby believed in the green light, the orgastic future that year by year recedes before us.
|
||||
It eluded us then, but that’s no matter — tomorrow we will run faster, stretch our arms further...
|
||||
And one fine morning — So we beat on, boats against the current, borne back ceaselessly into the past.
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
<i class="fa-solid fa-quote-left fa-2x fa-pull-left"></i>
|
||||
Gatsby believed in the green light, the orgastic future that year by year recedes before us.
|
||||
It eluded us then, but that’s no matter — tomorrow we will run faster, stretch our arms further...
|
||||
And one fine morning — So we beat on, boats against the current, borne back ceaselessly into the past.
|
||||
|
||||
The following table describes the available classes.
|
||||
|
||||
{{< table "table-striped w-auto" >}}
|
||||
| Class | Details |
|
||||
|-------|---------|
|
||||
| `fa-border` | Creates a border with border-radius and padding applied around an icons |
|
||||
| `fa-pull-left` | Pulls an icon by floating it left and applying a margin-right |
|
||||
| `fa-pull-right` | Pulls an icon by floating it right and applying a margin-left |
|
||||
{{< /table >}}
|
||||
|
||||
## Stacking icons
|
||||
|
||||
Use the `fa-stack` class on the parent HTML element of the two icons you want to stack. Then add the `fa-stack-1x` class for the regularly sized icon and add the `fa-stack-2x` class for the larger icon. `fa-inverse` can be added to the icon with the `fa-stack-1x` to help with a knock-out looking effect. Add a [theme color]({{< ref "colors" >}}) such as `text-primary` to change the color of the icon. The following example illustrates the available options.
|
||||
|
||||
```html
|
||||
<span class="fa-stack fa-2x">
|
||||
<i class="fa-solid fa-square fa-stack-2x"></i>
|
||||
<i class="fab fa-twitter fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
<span class="fa-stack fa-2x">
|
||||
<i class="fa-solid fa-circle fa-stack-2x"></i>
|
||||
<i class="fa-solid fa-flag fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
<span class="fa-stack fa-2x">
|
||||
<i class="fa-solid fa-camera fa-stack-1x"></i>
|
||||
<i class="fa-solid fa-ban fa-stack-2x text-danger"></i>
|
||||
</span>
|
||||
<span class="fa-stack fa-2x">
|
||||
<i class="fa-solid fa-square fa-stack-2x"></i>
|
||||
<i class="fa-solid fa-terminal fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
<span class="fa-stack fa-4x">
|
||||
<i class="fa-solid fa-square fa-stack-2x"></i>
|
||||
<i class="fa-solid fa-terminal fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
<span class="fa-stack fa-2x">
|
||||
<i class="fa-solid fa-square fa-stack-2x"></i>
|
||||
<i class="fab fa-twitter fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
<span class="fa-stack fa-2x">
|
||||
<i class="fa-solid fa-circle fa-stack-2x"></i>
|
||||
<i class="fa-solid fa-flag fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
<span class="fa-stack fa-2x">
|
||||
<i class="fa-solid fa-camera fa-stack-1x"></i>
|
||||
<i class="fa-solid fa-ban fa-stack-2x text-danger"></i>
|
||||
</span>
|
||||
<span class="fa-stack fa-2x">
|
||||
<i class="fa-solid fa-square fa-stack-2x"></i>
|
||||
<i class="fa-solid fa-terminal fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
<span class="fa-stack fa-4x">
|
||||
<i class="fa-solid fa-square fa-stack-2x"></i>
|
||||
<i class="fa-solid fa-terminal fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
|
||||
The following table describes the available classes.
|
||||
|
||||
{{< table "table-striped w-auto" >}}
|
||||
| Class | Details |
|
||||
|-------|---------|
|
||||
| `fa-stack` | Used on a parent HTML element of the two icons to be stacked |
|
||||
| `fa-stack-1x` | Used on the icon which should be displayed at base size when stacked |
|
||||
| `fa-stack-2x` | Used on the icon which should be displayed larger when stacked |
|
||||
| `fa-inverse` | Inverts the color of the icon displayed at base size when stacked |
|
@@ -1,9 +0,0 @@
|
||||
---
|
||||
title: Images
|
||||
description:
|
||||
date: 2023-01-06
|
||||
group: content
|
||||
layout: docs
|
||||
---
|
||||
|
||||
<!-- TODO: expand -->
|
@@ -1,77 +0,0 @@
|
||||
---
|
||||
title: Links and cross-references
|
||||
description:
|
||||
date: 2023-01-22
|
||||
group: content
|
||||
layout: docs
|
||||
---
|
||||
|
||||
<!-- TODO: expand -->
|
||||
|
||||
## Internal links
|
||||
|
||||
## Cross-references
|
||||
|
||||
## External links
|
||||
|
||||
### Basic links
|
||||
|
||||
Hugo supports basic Markdown to create links to external websites. To create a link, enclose the link text in brackets (e.g., `[Duck Duck Go]`) and then follow it immediately with the URL in parentheses (e.g., `(https://duckduckgo.com)`).
|
||||
|
||||
```markdown
|
||||
My favorite search engine is [Duck Duck Go](https://duckduckgo.com).
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
My favorite search engine is [Duck Duck Go](https://duckduckgo.com).
|
||||
|
||||
## URLs and email addresses
|
||||
|
||||
To quickly turn a URL or email address into a link, enclose it in angle brackets.
|
||||
|
||||
```markdown
|
||||
<https://www.markdownguide.org>
|
||||
<fake@example.com>
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
<https://www.markdownguide.org>
|
||||
|
||||
<fake@example.com>
|
||||
|
||||
## Reference-style links
|
||||
|
||||
Instead of using parentheses, you can use brackets to link to a predefined address. The following example uses a named reference to link to the website of Font Awesome.
|
||||
|
||||
```markdown
|
||||
[Font Awesome][fontawesome]
|
||||
|
||||
[fontawesome]: https://fontawesome.com
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
[Font Awesome][fontawesome]
|
||||
|
||||
[fontawesome]: https://fontawesome.com
|
||||
|
||||
## Managed links
|
||||
|
||||
Hinode uses `config/default/params.toml` to manage links to external addresses in a single place. You can use a combination of Markdown and Hugo shortcodes to generate a managed link. The following snippet of `config/default/params.toml` defines the link address for `fontawesome`:
|
||||
|
||||
```toml
|
||||
[links]
|
||||
fontawesome = "https://fontawesome.com"
|
||||
```
|
||||
|
||||
You can then use the following statement to generate the link.
|
||||
|
||||
```markdown
|
||||
[Font Awesome]({{</* param "links.fontawesome" */>}})
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
[Font Awesome]({{< param "links.fontawesome" >}})
|
@@ -1,217 +0,0 @@
|
||||
---
|
||||
title: Tables
|
||||
description: Enhance out-of-the-box Markdown tables with Bootstrap styling.
|
||||
date: 2023-01-22
|
||||
group: content
|
||||
layout: docs
|
||||
---
|
||||
|
||||
Hugo supports out-of-the box Markdown tables. Hinode enhances the basic tables with optional styling features provided by Bootstrap. The following paragraphs illustrate how to use basic tables, how to accent them, how to adjust the borders, and how to make the table more compact.
|
||||
|
||||
## Basic tables
|
||||
|
||||
Hugo supports tables out-of-the-box with extended Markdown. Use an optional shortcode as wrapper to align the table cells.
|
||||
|
||||
### Default alignment
|
||||
|
||||
Hugo supports tables out-of-the-box by using the `|` and `-` characters. Add `{.table}` at the bottom of the block to apply the correct styling. You can mix the content with inline Markdown.
|
||||
|
||||
```markdown
|
||||
| Italics | Bold | Code |
|
||||
| --------- | -------- | ------ |
|
||||
| _italics_ | **bold** | `code` |
|
||||
{.table}
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
| Italics | Bold | Code |
|
||||
| --------- | -------- | ------ |
|
||||
| _italics_ | **bold** | `code` |
|
||||
{.table}
|
||||
|
||||
### Aligned cells and headers
|
||||
|
||||
Hugo's Markdown processor applies inline styles to align cells in a table, which is blocked by Hinode's [Content Security Policy]({{< ref "server" >}}). Use the `table` shortcode to wrap your Markdown input instead. You can then align header and cell data to the left, center, or right of a column using the `:` character. Pass additional class attributes between double quotes, e.g. `"table-striped"`. See the [next section](#accented-tables) for more options.
|
||||
|
||||
```markdown
|
||||
{{</* table "table-striped" */>}}
|
||||
| # | Item | Left aligned | Center aligned | Right aligned|
|
||||
| -- | ----------- |:-------------|:--------------:| --------------:|
|
||||
| 1. | First item | some text | more text | even more text |
|
||||
| 2. | Second item | some text | more text | even more text |
|
||||
| 3. | Third item | some text | more text | even more text |
|
||||
{{</* /table */>}}
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
{{< table "table-striped" >}}
|
||||
| # | Item | Left aligned | Center aligned | Right aligned|
|
||||
| -- | ----------- |:-------------|:--------------:| --------------:|
|
||||
| 1. | First item | some text | more text | even more text |
|
||||
| 2. | Second item | some text | more text | even more text |
|
||||
| 3. | Third item | some text | more text | even more text |
|
||||
{{< /table >}}
|
||||
|
||||
## Accented tables
|
||||
|
||||
Add optional class attributes to style the table using Bootstrap.
|
||||
|
||||
### Striped rows
|
||||
|
||||
Use `.table-striped` to add zebra-striping to any table row.
|
||||
|
||||
```markdown
|
||||
| # | Item |
|
||||
| -- | ----------- |
|
||||
| 1. | First item |
|
||||
| 2. | Second item |
|
||||
| 3. | Third item |
|
||||
{.table .table-striped}
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
| # | Item |
|
||||
| -- | ----------- |
|
||||
| 1. | First item |
|
||||
| 2. | Second item |
|
||||
| 3. | Third item |
|
||||
{.table .table-striped}
|
||||
|
||||
### Striped columns
|
||||
|
||||
Use `.table-striped-columns` to add zebra-striping to any table column.
|
||||
|
||||
```markdown
|
||||
| # | Item | Description |
|
||||
| -- | ----------- | ---------------------- |
|
||||
| 1. | First item | This is the first row |
|
||||
| 2. | Second item | This is the second row |
|
||||
| 3. | Third item | This is the third row |
|
||||
{.table .table-striped-columns}
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
| # | Item | Description |
|
||||
| -- | ----------- | ---------------------- |
|
||||
| 1. | First item | This is the first row |
|
||||
| 2. | Second item | This is the second row |
|
||||
| 3. | Third item | This is the third row |
|
||||
{.table .table-striped-columns}
|
||||
|
||||
### Hoverable rows
|
||||
|
||||
Add `.table-hover` to enable a hover state on the table rows.
|
||||
|
||||
```markdown
|
||||
| # | Item |
|
||||
| -- | ----------- |
|
||||
| 1. | First item |
|
||||
| 2. | Second item |
|
||||
| 3. | Third item |
|
||||
{.table .table-hover}
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
| # | Item |
|
||||
| -- | ----------- |
|
||||
| 1. | First item |
|
||||
| 2. | Second item |
|
||||
| 3. | Third item |
|
||||
{.table .table-hover}
|
||||
|
||||
### Colored tables
|
||||
|
||||
Add `table-<theme>` to apply [theme colors]({{< ref "colors" >}}) to your table. You can mix them with other classes, such as `.table-striped`.
|
||||
|
||||
```markdown
|
||||
| # | Item |
|
||||
| -- | ----------- |
|
||||
| 1. | First item |
|
||||
| 2. | Second item |
|
||||
| 3. | Third item |
|
||||
{.table .table-success .table-striped}
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
| # | Item |
|
||||
| -- | ----------- |
|
||||
| 1. | First item |
|
||||
| 2. | Second item |
|
||||
| 3. | Third item |
|
||||
{.table .table-success .table-striped}
|
||||
|
||||
## Table borders
|
||||
|
||||
Adjust the borders of a table to match your style preferences.
|
||||
|
||||
### Bordered tables
|
||||
|
||||
Add `.table-bordered` for borders on all sides of the table and cells. Add an optional `border-<theme>` class to apply [theme colors]({{< ref "colors" >}}) to the table borders.
|
||||
|
||||
```markdown
|
||||
| # | Item |
|
||||
| -- | ----------- |
|
||||
| 1. | First item |
|
||||
| 2. | Second item |
|
||||
| 3. | Third item |
|
||||
{.table .table-bordered .border-primary}
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
| # | Item |
|
||||
| -- | ----------- |
|
||||
| 1. | First item |
|
||||
| 2. | Second item |
|
||||
| 3. | Third item |
|
||||
{.table .table-bordered .border-primary}
|
||||
|
||||
### Tables without borders
|
||||
|
||||
Add `.table-borderless` for a table without borders.
|
||||
|
||||
```markdown
|
||||
| # | Item |
|
||||
| -- | ----------- |
|
||||
| 1. | First item |
|
||||
| 2. | Second item |
|
||||
| 3. | Third item |
|
||||
{.table .table-borderless}
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
| # | Item |
|
||||
| -- | ----------- |
|
||||
| 1. | First item |
|
||||
| 2. | Second item |
|
||||
| 3. | Third item |
|
||||
{.table .table-borderless}
|
||||
|
||||
## Small tables
|
||||
|
||||
Add `.table-sm` to make any table more compact by cutting all cell padding in half.
|
||||
|
||||
```markdown
|
||||
| # | Item |
|
||||
| -- | ----------- |
|
||||
| 1. | First item |
|
||||
| 2. | Second item |
|
||||
| 3. | Third item |
|
||||
{.table .table-sm}
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
| # | Item |
|
||||
| -- | ----------- |
|
||||
| 1. | First item |
|
||||
| 2. | Second item |
|
||||
| 3. | Third item |
|
||||
{.table .table-sm}
|
@@ -1,313 +0,0 @@
|
||||
---
|
||||
title: Typography
|
||||
description: Use a mix of Markdown and HTML syntax to style your content.
|
||||
date: 2023-01-22
|
||||
group: content
|
||||
layout: docs
|
||||
---
|
||||
|
||||
Hinode uses a mix of basic Markdown syntax enriched with Bootstrap styling for the typography. The following paragraphs illustrate the most common applications. Refer to the Hugo documentation to review the extended description of supported [content formats]({{< param "links.hugo_content" >}}). It also contains links to external resource about Markdown.
|
||||
|
||||
## Headings
|
||||
|
||||
Use the native Markdown character `#` to generate headings for your content. The following input represents six levels of section headings. They are generated as HTML `<h1>`—`<h6>` elements. `<h1>` is the highest section level while `<h6>` is the lowest.
|
||||
|
||||
```markdown
|
||||
# H1. Heading
|
||||
|
||||
## H2. Heading
|
||||
|
||||
### H3. Heading
|
||||
|
||||
#### H4. Heading
|
||||
|
||||
##### H5. Heading
|
||||
|
||||
###### H6. Heading
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
<p class="h1">H1. Heading</p>
|
||||
|
||||
<p class="h2">H2. Heading</p>
|
||||
|
||||
<p class="h3">H3. Heading</p>
|
||||
|
||||
<p class="h4">H4. Heading</p>
|
||||
|
||||
<p class="h5">H5. Heading</p>
|
||||
|
||||
<p class="h6 pb-2">H6. Heading</p>
|
||||
|
||||
Alternatively, you can use `.h1` through `.h6` classes, for when you want to match the font styling of a heading but cannot use the associated HTML element. For example, using a `.h2` class will exclude the section heading from the generated [table of contents]({{< ref "navigation#table-of-contents" >}}).
|
||||
|
||||
```html
|
||||
<p class="h1">H1</p>
|
||||
<p class="h2">H2</p>
|
||||
<p class="h3">H3</p>
|
||||
<p class="h4">H4</p>
|
||||
<p class="h5">H5</p>
|
||||
<p class="h6">H6</p>
|
||||
```
|
||||
|
||||
## Display headings
|
||||
|
||||
Display a larger, slightly more opinionated heading style by adding the `.display` class in HTML.
|
||||
|
||||
```html
|
||||
<h1 class="display-1">Display 1</h1>
|
||||
<h1 class="display-2">Display 2</h1>
|
||||
<h1 class="display-3">Display 3</h1>
|
||||
<h1 class="display-4">Display 4</h1>
|
||||
<h1 class="display-5">Display 5</h1>
|
||||
<h1 class="display-6">Display 6</h1>
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
<h1 class="display-1">Display 1</h1>
|
||||
<h1 class="display-2">Display 2</h1>
|
||||
<h1 class="display-3">Display 3</h1>
|
||||
<h1 class="display-4">Display 4</h1>
|
||||
<h1 class="display-5">Display 5</h1>
|
||||
<h1 class="display-6">Display 6</h1>
|
||||
|
||||
## Lead
|
||||
|
||||
Make a paragraph stand out by adding `.lead` class in HTML.
|
||||
|
||||
```html
|
||||
<p class="lead">
|
||||
This is a lead paragraph. It stands out from regular paragraphs.
|
||||
</p>
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
<p class="lead">
|
||||
This is a lead paragraph. It stands out from regular paragraphs.
|
||||
</p>
|
||||
|
||||
## Inline text elements
|
||||
|
||||
You can use native Markdown to apply basic styling. Use HTML elements for additional formatting options.
|
||||
|
||||
### Native Markdown
|
||||
|
||||
Use native Markdown apply basic styling to your text.
|
||||
|
||||
```markdown
|
||||
~~This line of text is meant to be treated as deleted text.~~
|
||||
|
||||
_This line of text renders as underlined._
|
||||
|
||||
**This line of text renders as bold text.**
|
||||
|
||||
*This line of text renders as italicized text.*
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
~~This line of text is meant to be treated as deleted text.~~
|
||||
|
||||
_This line of text renders as underlined._
|
||||
|
||||
**This line of text renders as bold text.**
|
||||
|
||||
<!-- markdownlint-disable-next-line -->
|
||||
*This line of text renders as italicized text.*
|
||||
|
||||
### HTML Styling
|
||||
|
||||
Use HTML tags for additional styling options. The following example illustrates highlighting, fine print, subscript, and superscript.
|
||||
|
||||
```html
|
||||
<p>You can use the mark tag to <mark>highlight</mark> text.</p>
|
||||
<p><small>This line of text is meant to be treated as fine print.</small></p>
|
||||
<p>H<sub>2</sub>O is a liquid.</p>
|
||||
<p>2<sup>10</sup> is 1024.</p>
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
<p>You can use the mark tag to <mark>highlight</mark> text.</p>
|
||||
<p><small>This line of text is meant to be treated as fine print.</small></p>
|
||||
<p>H<sub>2</sub>O is a liquid.</p>
|
||||
<p>2<sup>10</sup> is 1024.</p>
|
||||
|
||||
## Emoji
|
||||
|
||||
Use shortcodes to insert Emoji into your content. You can use this [list of emoji]({{< param "links.markdown_emoji" >}}) shortcodes as a reference, although the results may vary across browsers and devices. The following example inserts an inline smiley.
|
||||
|
||||
<div class="bg-light p-3 mb-3">
|
||||
That is so funny! <code>:<zero-width space>smiley:<zero-width space></code>
|
||||
</div>
|
||||
|
||||
The result looks like this:
|
||||
|
||||
That is so funny! :smiley:
|
||||
|
||||
## Abbreviations
|
||||
|
||||
Use the HTML element `<abbr>` for abbreviations and acronyms to show the expanded version on hover. Abbreviations have a default underline and gain a help cursor to provide additional context on hover and to users of assistive technologies.
|
||||
|
||||
```html
|
||||
<p><abbr title="HyperText Markup Language">HTML</abbr></p>
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
<p><abbr title="HyperText Markup Language">HTML</abbr></p>
|
||||
|
||||
## 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. Use the `>` Markdown character to generate a blockquote and add `{.blockquote}` at the bottom of the block to apply the correct styling.
|
||||
|
||||
### Blockquote without attribution
|
||||
|
||||
The following Markdown generates a blockquote without attribution.
|
||||
|
||||
```markdown
|
||||
> Tiam, ad mint andaepu dandae nostion secatur sequo quae.
|
||||
> **Note** that you can use _Markdown syntax_ within a blockquote.
|
||||
{.blockquote}
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
> Tiam, ad mint andaepu dandae nostion secatur sequo quae.
|
||||
> **Note** that you can use _Markdown syntax_ within a blockquote.
|
||||
{.blockquote}
|
||||
|
||||
### Blockquote with attribution
|
||||
|
||||
The following Markdown generates a blockquote with attribution. The citation itself is added to the bottom of the page.
|
||||
|
||||
```markdown
|
||||
> Don't communicate by sharing memory, share memory by communicating.<br>
|
||||
> — <cite>Rob Pike[^1]</cite>
|
||||
{.blockquote}
|
||||
|
||||
[^1]: The above quote is excerpted from Rob Pike's [talk](https://www.youtube.com/watch?v=PAAkCSZUG1c) during Gopherfest, November 18, 2015.
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
> Don't communicate by sharing memory, share memory by communicating.<br>
|
||||
> — <cite>Rob Pike[^1]</cite>
|
||||
{.blockquote}
|
||||
|
||||
[^1]: The above quote is excerpted from Rob Pike's [talk](https://www.youtube.com/watch?v=PAAkCSZUG1c) during Gopherfest, November 18, 2015.
|
||||
|
||||
## Code Blocks
|
||||
|
||||
Use a single backtick `` ` `` character to denote an inline code element. Use triple backticks `` ``` `` to denote the start and end of a code block. Add the language to the openeing backticks to specify the syntax. Hugo uses Chroma highlighting to style the syntax of [supported languages]({{< param "links.hugo_chroma" >}}). The following example defines an `HTML` code block.
|
||||
|
||||
<!-- markdownlint-disable MD040 MD048 -->
|
||||
~~~
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Example HTML5 Document</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Test</p>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
~~~
|
||||
<!-- markdownlint-enable MD040 MD048 -->
|
||||
|
||||
The result looks like this:
|
||||
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Example HTML5 Document</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Test</p>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
## List Types
|
||||
|
||||
Use native Markdown to define ordered lists, unordered lists, and nested lists.
|
||||
|
||||
### Ordered List
|
||||
|
||||
The following Markdown defines an ordered list of three items. The sequence is automatically determined, so simply add `1.` at the start of each element. The [linting rules]({{< ref "contribute#markdown" >}}) will raise an error if you add the sequence numbering yourself.
|
||||
|
||||
```markdown
|
||||
1. First item
|
||||
1. Second item
|
||||
1. Third item
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
1. First item
|
||||
1. Second item
|
||||
1. Third item
|
||||
|
||||
### Unordered List
|
||||
|
||||
Use the `-` character to denote an unordered list.
|
||||
|
||||
```markdown
|
||||
- List item
|
||||
- Another item
|
||||
- And another item
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
- List item
|
||||
- Another item
|
||||
- And another item
|
||||
|
||||
### Nested list
|
||||
|
||||
Use indendation and the `-` character to denote a nested list.
|
||||
|
||||
```markdown
|
||||
- Fruit
|
||||
- Apple
|
||||
- Orange
|
||||
- Banana
|
||||
- Dairy
|
||||
- Milk
|
||||
- Cheese
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
- Fruit
|
||||
- Apple
|
||||
- Orange
|
||||
- Banana
|
||||
- Dairy
|
||||
- Milk
|
||||
- Cheese
|
||||
|
||||
### Task list
|
||||
|
||||
Use the `-` character followed by either `[x]` or `[ ]` to indicate a (completed) task.
|
||||
|
||||
```markdown
|
||||
- [x] Write the press release
|
||||
- [ ] Update the website
|
||||
- [ ] Contact the media
|
||||
```
|
||||
|
||||
The result looks like this:
|
||||
|
||||
- [x] Write the press release
|
||||
- [ ] Update the website
|
||||
- [ ] Contact the media
|
@@ -1,75 +0,0 @@
|
||||
---
|
||||
title: Commands
|
||||
description: Use npm commands to automate the build process and to keep track of dependencies.
|
||||
date: "2023-01-11"
|
||||
group: getting-started
|
||||
layout: docs
|
||||
---
|
||||
|
||||
Hinode uses [Node Package Manager]({{< param "links.npm" >}}) to automate the build process and to keep track of dependencies. The `package.json` file in the repository root defines several commands to simplify local development and testing. The following paragraphs describe the main commands.
|
||||
|
||||
## Starting a local server
|
||||
|
||||
Use the following command from the command prompt to start a local **development server**. The command removes any previous build artifacts in the `public` and `resources` folders. The command invokes the local web server from Hugo, which watches for changes in the key system files and configuration directory. By default the generated site is available at `http://localhost:1313/` and is responsive to changes. This alllows for interactive development and testing. When in development mode, the generated assets (such as javascripts and CSS files) are not minified to simplify debugging.
|
||||
|
||||
{{% command %}}
|
||||
npm run start
|
||||
{{% /command %}}
|
||||
|
||||
Use the following command to mimick the site in **production mode**. In this setting, generated assets are minified and compliant with the Content Security Policy. Although Hugo's web server is not meant to be run in a real production environment, it does allow validation of the site in an environment close to production.
|
||||
|
||||
{{% command %}}
|
||||
npm run prod
|
||||
{{% /command %}}
|
||||
|
||||
## Generating a web site
|
||||
|
||||
Use the following command to generate the static site. The build artifacts are stored in the local `public` folder. You can deploy these files to your **production** server.
|
||||
|
||||
{{% command %}}
|
||||
npm run build
|
||||
{{% /command %}}
|
||||
|
||||
Add the prefix `debug` to generate a site suitable for **debugging**. The build artifacts are not minified to simplify review and testing.
|
||||
|
||||
{{% command %}}
|
||||
npm run build:debug
|
||||
{{% /command %}}
|
||||
|
||||
## Validating linting rules
|
||||
|
||||
Use the the following command to analyze the source code and to test for any stylistic errors. The lint command validates three types of files in the `assets` folder and `content` folder:
|
||||
|
||||
* Javascript (`assets/*.js`) using [eslint]({{< param "links.eslint" >}}).
|
||||
* CSS and SASS (`assets/scss/**/*.{css,sass,scss,sss,less}`) using [stylelint]({{< param "links.stylelint" >}}).
|
||||
* Markdown (`*.md` and `content/**/*.md`) using [markdownlint-cli2]({{< param "links.markdownlint" >}}).
|
||||
|
||||
The basic configuration of these linting tools is defined in the repository root.
|
||||
|
||||
{{% command %}}
|
||||
npm run lint
|
||||
{{% /command %}}
|
||||
|
||||
Be sure to adhere to the linting rules before submitting any code changes / Pull Requests to Hinode's repository.
|
||||
|
||||
## Upgrading dependencies
|
||||
|
||||
Use the following command to test for any available upgrades of used packages. The command runs `npx` to validate the dependencies and to upgrade the dependency versions in `package.json`.
|
||||
|
||||
{{% command %}}
|
||||
npm run upgrade
|
||||
{{% /command %}}
|
||||
|
||||
The `npx` command does not validate the version of the Hugo binary. The version needs to be manually updated in the `package.json` file.
|
||||
|
||||
```json
|
||||
"otherDependencies": {
|
||||
"hugo": "0.109.0"
|
||||
}
|
||||
```
|
||||
|
||||
Be sure to install the upgraded dependencies if needed:
|
||||
|
||||
{{% command %}}
|
||||
npm install
|
||||
{{% /command %}}
|
@@ -1,122 +0,0 @@
|
||||
---
|
||||
title: Contribute
|
||||
description: Contribute to the open-source development of Hinode.
|
||||
date: 2023-01-06
|
||||
group: getting-started
|
||||
layout: docs
|
||||
---
|
||||
|
||||
Hinode is fully open source and welcomes any contributions, either big or small. To streamline the contribution process, please take a moment to review the guidelines outlined in this article.
|
||||
|
||||
## Using the issue tracker
|
||||
|
||||
The [issue tracker]({{< param "links.issue_tracker" >}}) on GitHub is the preferred channel for bug reports, feature requests and submitting pull requests.
|
||||
|
||||
## Bug reports
|
||||
|
||||
A bug is a *demonstrable problem* that is caused by the code in the repository. This may also include issues with the documentation or configuration files. Before filing a bug report, please consider the following guidelines:
|
||||
|
||||
- Validate your HTML and Markdown content to ensure your problem isn't caused by a simple error in your own code.
|
||||
- Use the GitHub [issue search]({{< param "links.issue_tracker" >}}) — check if the issue has already been reported.
|
||||
- Check if the issue has been fixed — try to reproduce it using the latest main in the [repository]({{< param "links.repository" >}}).
|
||||
- Isolate the problem — ideally create a reduced test case.
|
||||
- Use the provided template in the [issue tracker]({{< param "links.issue_tracker" >}}) to capture the context, evidence and steps on how to reproduce the issue.
|
||||
|
||||
## Feature requests
|
||||
|
||||
Feature requests are welcome. But take a moment to find out whether your idea fits with the scope and aims of the project. Please use the provided template in the [issue tracker]({{< param "links.issue_tracker" >}}) to capture the idea and context.
|
||||
|
||||
## Pull requests
|
||||
|
||||
Good pull requests—patches, improvements, new features—are a fantastic help. They should remain focused in scope and avoid containing unrelated commits.
|
||||
|
||||
**Please ask first** before embarking on any **significant** pull request (e.g. implementing features, refactoring code, porting to a different language), otherwise you risk spending a lot of time working on something that the project's developers might not want to merge into the project. For trivial things, or things that don't require a lot of your time, you can go ahead and make a PR.
|
||||
|
||||
Please adhere to the [coding guidelines](#coding-guidelines) used throughout the project (indentation, accurate comments, etc.) and any other requirements (such as test coverage).
|
||||
|
||||
Adhering to the following process is the best way to get your work included in the project:
|
||||
|
||||
1. Fork the project, clone your fork, and configure the remotes:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/<your-username>/hugo-theme-hinode.git
|
||||
cd hugo-theme-hinode
|
||||
git remote add upstream https://github.com/markdumay/hugo-theme-hinode
|
||||
```
|
||||
|
||||
1. If you cloned a while ago, get the latest changes from upstream:
|
||||
|
||||
```bash
|
||||
git checkout main
|
||||
git pull upstream main
|
||||
```
|
||||
|
||||
1. Create a new topic branch (off the main project development branch) to contain your feature, change, or fix:
|
||||
|
||||
```bash
|
||||
git checkout -b <topic-branch-name>
|
||||
```
|
||||
|
||||
1. Commit your changes in logical chunks. Please adhere to these [git commit message guidelines]({{< param "links.commit_message" >}}). Use Git's [interactive rebase]({{< param "links.github_rebase" >}}) feature to tidy up your commits before making them public.
|
||||
|
||||
1. Locally merge (or rebase) the upstream development branch into your topic branch:
|
||||
|
||||
```bash
|
||||
git pull [--rebase] upstream main
|
||||
```
|
||||
|
||||
1. Push your topic branch up to your fork:
|
||||
|
||||
```bash
|
||||
git push origin <topic-branch-name>
|
||||
```
|
||||
|
||||
1. Open a [Pull Request]({{< param "links.github_pr" >}})with a clear title and description against the main branch.
|
||||
|
||||
**IMPORTANT**: By submitting a patch, you agree to allow the project owners to license your work under the terms of the [MIT license]({{< param "links.license" >}}) (if it includes code changes) and under the terms of the Creative Commons ([CC BY-NC 4.0)]({{< param "links.cc_by_nc_4_0" >}}) license (if it includes documentation changes).
|
||||
|
||||
## Coding guidelines
|
||||
|
||||
In general, run `npm run lint` before committing to ensure your changes follow our coding standards.
|
||||
|
||||
### HTML
|
||||
|
||||
[Adhere to the Code Guide]({{< param "links.html_codeguide" >}}).
|
||||
|
||||
- Use tags and elements appropriate for an HTML5 doctype (e.g., self-closing tags).
|
||||
- Use npm packages for third-party JS when possible.
|
||||
- Use WAI-ARIA attributes in documentation examples to promote accessibility.
|
||||
|
||||
### CSS
|
||||
|
||||
[Adhere to the Code Guide]({{< param "links.css_codeguide" >}}).
|
||||
|
||||
- When feasible, default color palettes should comply with [WCAG color contrast guidelines]({{< param "links.wcag_contrast" >}}).
|
||||
|
||||
### Javascript
|
||||
|
||||
Bundle related client-side javascript in a logically named file. Add the file to the `assets/js` when using Hugo templating. Adjust the eslint configuration as needed to handle necessary exceptions. When adapting someone else's code, please add a link to the original source to give them credit.
|
||||
|
||||
- No semicolons (in client-side JS)
|
||||
- 2 spaces (no tabs)
|
||||
- strict mode
|
||||
- "Attractive"
|
||||
|
||||
### Markdown
|
||||
|
||||
See [markdown rules]({{< param "links.markdown_rules" >}}) for more details. The following rules are globally disabled:
|
||||
|
||||
| # | Rule | Remarks |
|
||||
|-------|-----------------------------------------------------------------------------------------------|---------------------------------|
|
||||
| MD013 | [Line length]({{< param "links.markdown_md013" >}}) | |
|
||||
| MD024 | [Multiple headings with the same content]({{< param "links.markdown_md024" >}}) | |
|
||||
| MD026 | [Trailing punctuation in heading]({{< param "links.markdown_md026" >}}) | |
|
||||
| MD033 | [Inline HTML]({{< param "links.markdown_md033" >}}) | |
|
||||
| MD034 | [Bare URL used]({{< param "links.markdown_md034" >}}) | |
|
||||
| MD051 | [Link fragments should be valid]({{< param "links.markdown_md051" >}}) | |
|
||||
| MD053 | [Link and image reference definitions should be needed]({{< param "links.markdown_md053" >}}) | Disabled due to false positives |
|
||||
{.table}
|
||||
|
||||
## License
|
||||
|
||||
By contributing your code, you agree to license your contribution under the [MIT license]({{< param "links.license" >}}). By contributing to the documentation, you agree to license your contribution under the Creative Commons ([CC BY-NC 4.0)]({{< param "links.cc_by_nc_4_0" >}}) license.
|
@@ -1,65 +0,0 @@
|
||||
---
|
||||
title: Introduction
|
||||
description: Get started with Hinode, a clean documentation and blog theme for your Hugo site based on Bootstrap 5.
|
||||
date: 2023-01-06
|
||||
group: getting-started
|
||||
aliases:
|
||||
- "/en/docs/0.8/getting-started/"
|
||||
- "/en/docs/getting-started/"
|
||||
- "/en/getting-started/"
|
||||
- "/en/docs/"
|
||||
layout: docs
|
||||
---
|
||||
|
||||
Hinode is a clean documentation and blog theme for [Hugo]({{< param "links.hugo" >}}), an open-source static site generator. Based on the [Bootstrap 5]({{< param "links.bootstrap" >}}) framework, the rendered site is fast, secure, and responsive. Hinode uses [FlexSearch]({{< param "links.flexsearch" >}}) to enable full text search across your site. Finally, the theme uses [Node Package Manager]({{< param "links.npm" >}}) to automate the build process and to keep track of dependencies. More information is available on the [about]({{< ref "about" >}} "about") page.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Hinode requires Git, Node.js and npm for local development and testing. Download the Git binary from the [official website]({{< param "links.git_download" >}}). Next, download and install [Node.js]({{< param "links.nodejs" >}}) (it includes npm) for your platform.
|
||||
|
||||
## Installation
|
||||
|
||||
Start a new Hinode project in three steps:
|
||||
|
||||
### 1. Create a new site
|
||||
|
||||
Hinode is available as a [child theme]({{< param "links.repository_child" >}}), and a [main theme]({{< param "links.repository" >}}). The child theme uses [npm]({{< param "links.npm" >}}) to link to the latest available version of Hinode. As such, it is less applicable if you plan to customize a lot. Vice versa, the main theme allows for heavy customization, but is not synchronized with the latest available Hinode theme automatically.
|
||||
|
||||
Not quite sure? Use the Hinode child theme.
|
||||
|
||||
#### Hinode child theme
|
||||
|
||||
```bash
|
||||
git clone https://github.com/markdumay/hugo-theme-hinode-child.git my-hinode-site && cd my-hinode-site
|
||||
```
|
||||
|
||||
#### Hinode main theme
|
||||
|
||||
```bash
|
||||
git clone https://github.com/markdumay/hugo-theme-hinode.git my-hinode-site && cd my-hinode-site
|
||||
```
|
||||
|
||||
### 2. Install dependencies
|
||||
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
### 3. Start development server
|
||||
|
||||
```bash
|
||||
npm run start
|
||||
```
|
||||
|
||||
## Key configuration settings
|
||||
|
||||
The main site configuration is available in `./config/_default`. Some remarks:
|
||||
|
||||
| Topic | Remarks |
|
||||
|-----------------|---------|
|
||||
| Menu items | `menus/menus.en.toml` contains language-specific items for the navigation bar and social media links for the home page's footer. |
|
||||
| Content | Ensure the `mainSections` in `config.toml` is synchronized with the `content` folder, default values are `["blog", "projects"]`. |
|
||||
| Theme style | Update `primary` and `themeOpacity` within the `[style]` section of `params.toml` to update the site's primary color and opacity. Bootstrap's other key colors can be changed too. You can use the [WCAG Color Contrast Checker]({{< param "links.contrast_checker" >}}) to validate the contrast ratio of your color to improve accessibility. Additionally, set `themeFont` and `themeFontPath` to override the default font. |
|
||||
| Comments | Comments are powered by [utterances]({{< param "links.utterances" >}}), a lightweight comments widget built on GitHub issues. Update the `repo` of the `[comments]` section of `params.toml`. |
|
||||
| Security policy | The theme uses rather strict security policies by default. Be sure to include references to external sources in the header configuration to avoid broken links. The settings of the local development server are defined in `server.toml`. Similar settings are defined in the `netlify.toml` file provided in the repository's root when deploying to [Netlify]({{< param "links.netlify" >}}). |
|
||||
{.table}
|
@@ -1,3 +1,6 @@
|
||||
---
|
||||
author: "Hugo Authors"
|
||||
author: Mark Dumay
|
||||
title: Welkom bij Hinode!
|
||||
---
|
||||
|
||||
Een documentatie en blog thema voor Hugo gebaseerd op Bootstrap 5.
|
||||
|
@@ -1,14 +1,12 @@
|
||||
---
|
||||
slug: "over-mij"
|
||||
title: "Over mij"
|
||||
description: "Een blog thema voor Hugo gebaseerd op Bootstrap 5."
|
||||
date: "2022-04-11"
|
||||
slug: over-mij
|
||||
title: Over mij
|
||||
description: Een blog en documentatie thema voor Hugo gebaseerd op Bootstrap 5.
|
||||
date: 2023-02-17
|
||||
showComments: false
|
||||
---
|
||||
|
||||
<p class="text-center"><img src="/img/logo_embedded.svg" class="img-fluid w-50" alt="Logo"></p>
|
||||
|
||||
<center>Hinode is een blog thema voor Hugo, een open-source statische website generator.</center>
|
||||
<p class="text-center"><svg class="img-fluid w-50"><use href="/img/logo_var.svg#logo"></use></svg></p>
|
||||
|
||||
<section class="section section-sm mt-5">
|
||||
<div class="container-fluid">
|
||||
@@ -35,13 +33,15 @@ showComments: false
|
||||
|
||||
Overige functies:
|
||||
|
||||
* Reacties
|
||||
* Sociale links
|
||||
* Paginering
|
||||
* Scrollspy
|
||||
* Code markeren
|
||||
* Kleuren aanpassen
|
||||
* Internationalisering
|
||||
* Omschakelen tussen donkere en lichte modus
|
||||
* Ondersteuning voor meerdere talen
|
||||
* Herbruikbare Bootstrap componenten via shortcodes en partials
|
||||
* Integreren van commentaar via [utteranc.es]({{< param "links.utterances" >}})
|
||||
* Secundaire navigatie voor bijvoorbeeld documentatie
|
||||
* Optimalisering van foto's voor meerdere schermafmetingen en resoluties
|
||||
* Optimale zoekresultaten, met 100 punten voor SEO volgens [PageSpeed Insights]({{< param "links.pagespeed" >}})
|
||||
* Veilige communicatie, met een score van A+ volgens [Mozilla Observatory]({{< param "links.observatory" >}})
|
||||
{.tickmark}
|
||||
|
||||
Hinode is geinspireerd door de volgende thema's:
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
---
|
||||
author: Katheryn Fox
|
||||
author: Mark Dumay
|
||||
title: Blog
|
||||
---
|
||||
|
243
content/nl/blog/bootstrap-elements.md
Normal file
@@ -0,0 +1,243 @@
|
||||
---
|
||||
author: Mark Dumay
|
||||
title: Bootstrap elementen
|
||||
date: 2023-02-17
|
||||
description: Gebruik shortcodes om eenvoudig Bootstrap elementen toe te voegen.
|
||||
tags: ["bootstrap", "shortcode"]
|
||||
thumbnail: img/boots.jpg
|
||||
photoCredits: <a href="https://unsplash.com/@nate_dumlao">Nathan Dumlao</a>
|
||||
photoSource: <a href="https://unsplash.com/photos/QLPWQvHvmII">Unsplash</a>
|
||||
---
|
||||
|
||||
Hinode beschikt over meerdere shortcodes om eenvoudig Bootstrap elementen toe te voegen aan je website. De [officiële documentatie]({{< param "links.hinode_docs" >}}) bevat meer details.
|
||||
|
||||
## Accordion
|
||||
|
||||
De volgende shortcode toont een accordion met drie elementen, waarvan de eerste is uitgeklapt.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* accordion */>}}
|
||||
{{</* accordion-item header="Accordion Item #1" show="true" */>}}
|
||||
Dit is de inhoud van het eerste element met ondersteuning voor HTML. De waarde <code>show</code>
|
||||
voor het argument <code>class</code> geeft aan dat het element uitgeklapt moet worden.
|
||||
{{</* /accordion-item */>}}
|
||||
{{</* accordion-item header="Accordion Item #2" */>}}
|
||||
Dit is de inhoud van het tweede element. Het ondersteunt ook HTML.
|
||||
{{</* /accordion-item */>}}
|
||||
{{</* accordion-item header="Accordion Item #3" */>}}
|
||||
Dit is de inhoud van het derde element.
|
||||
{{</* /accordion-item */>}}
|
||||
{{</* /accordion */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Alert
|
||||
|
||||
De volgende shortcode toont een waarschuwing.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* alert color="danger" dismissible="true" */>}}
|
||||
Een eenvoudige waarschuwing
|
||||
{{</* /alert */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Badge
|
||||
|
||||
Gebruik HTML code om een label toe te voegen aan een titel. De Bootstrap [documentatie]({{< param "links.bs_badge_heading" >}}) beschrijft meer opties.
|
||||
|
||||
{{< example >}}
|
||||
<h1>Voorbeeldtekst met grootte één <span class="badge bg-secondary">Nieuw</span></h1>
|
||||
<h2>Voorbeeldtekst met grootte twee <span class="badge bg-secondary">Nieuw</span></h2>
|
||||
<h3>Voorbeeldtekst met grootte drie <span class="badge bg-secondary">Nieuw</span></h3>
|
||||
<h4>Voorbeeldtekst met grootte vier <span class="badge bg-secondary">Nieuw</span></h4>
|
||||
<h5>Voorbeeldtekst met grootte vijf <span class="badge bg-secondary">Nieuw</span></h5>
|
||||
<h6>Voorbeeldtekst met grootte zes <span class="badge bg-secondary">Nieuw</span></h6>
|
||||
{{< /example >}}
|
||||
|
||||
## Breadcrumb
|
||||
|
||||
De volgende shortcode toont het navigatiepad voor de blog pagina.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* breadcrumb path="blog" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Button
|
||||
|
||||
De volgende shortcode toont een knop met een label en een aanwijzing.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* button color="secondary" tooltip="Toon je ongelezen berichten" href="#!" badge="99+" */>}}
|
||||
Inbox
|
||||
{{</* /button */>}}
|
||||
{{< /example>}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Button group
|
||||
|
||||
De volgende shortcode toont een groep van drie knoppen.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* button-group aria-label="Basic example" */>}}
|
||||
{{</* button color="primary" href="#!" */>}}Links{{</* /button */>}}
|
||||
{{</* button color="primary" href="#!" */>}}Midden{{</* /button */>}}
|
||||
{{</* button color="primary" href="#!" */>}}Rechts{{</* /button */>}}
|
||||
{{</* /button-group */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Card
|
||||
|
||||
De volgende shortcode toont een kaart met een icoon dat linkt naar de [over mij]({{< ref "about" >}}) pagina. De kaart bevat een titel.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* card path="about" padding="3" class="w-50" color="light" header="publication" footer="none" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Carousel
|
||||
|
||||
De volgende shortcode toont een carousel met drie pagina's, in een verhouding van 16x9 voor een breedte van 67% op grotere schermen.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* carousel ratio="16x9" class="col-sm-12 col-lg-8 mx-auto" */>}}
|
||||
{{</* img src="img/coffee.jpg" caption="pagina 1" */>}}
|
||||
{{</* img src="img/phone.jpg" caption="pagina 2" */>}}
|
||||
{{</* img src="img/dunes.jpg" caption="pagina 3" */>}}
|
||||
{{</* /carousel */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Collapse
|
||||
|
||||
De volgende shortcode toont een knop die een informatiepaneel toont of verbergt.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* button collapse="collapse-1" */>}}
|
||||
Trigger panel
|
||||
{{</* /button */>}}
|
||||
|
||||
{{</* collapse id="collapse-1" class="p-3 border rounded" */>}}
|
||||
Dit is een voorbeeldtekst. Het informatiepaneel is <i>standaard verborgen </i> maar wordt getoond als
|
||||
de gebruiker op de bijbehorende knop drukt.
|
||||
{{</* /collapse */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Command prompt
|
||||
|
||||
De volgende shortcode toont een prompt voor bash.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* command */>}}
|
||||
export MY_VAR=123
|
||||
{{</* /command */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
Voeg `user` en `host` om de gebruikerscontext op te geven. Als aanvulling, `(out)` definieert een outputregel en `\` is een markering die aangeeft dat de regel doorgaat op de volgende regel.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* command user="user" host="localhost" */>}}
|
||||
export MY_VAR=123
|
||||
echo "hello"
|
||||
(out)hello
|
||||
echo one \
|
||||
two \
|
||||
three
|
||||
(out)one two three
|
||||
echo "goodbye"
|
||||
(out)goodbye
|
||||
{{</* /command */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Docs
|
||||
|
||||
Gebruik de volgende shortcode om de inhoud van een `toml` of `scss` bestand te tonen.
|
||||
|
||||
{{< docs name="theme-colors" file="config/_default/params.toml" >}}
|
||||
|
||||
## Icon
|
||||
|
||||
De volgende shortcodes tonen drie verschillende iconen:
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* fa square-check */>}}
|
||||
{{</* fab linkedin */>}}
|
||||
{{</* fas circle-check */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Image
|
||||
|
||||
De volgende shortcode toont een plaatje met afgeronde hoeken en een 21x9 verhouding.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* image src="img/flowers.jpg" ratio="21x9" caption="Onderschrift" class="rounded" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Navbar
|
||||
|
||||
De volgende shortcode toont een navigatiemenu.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* navbar path="about" color="primary" size="sm" search="false" menus="sample" title="Brand" */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Spinner
|
||||
|
||||
De volgende shortcode toont een ronddraaiende cirkel.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* spinner color="info" class="text-center" */>}}
|
||||
Loading...
|
||||
{{</* /spinner */>}}
|
||||
{{< /example>}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Toast
|
||||
|
||||
De volgende shortcode toont een knop die een bericht laat verschijnen op het scherm.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* button id="toastButton" */>}}
|
||||
Toon bericht
|
||||
{{</* /button */>}}
|
||||
|
||||
{{</* toast header="Titel" */>}}
|
||||
Dit is een bericht.
|
||||
{{</* /toast */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
||||
|
||||
## Tooltip
|
||||
|
||||
De volgende shortcode toont een uitleg voor een gekleurde link.
|
||||
|
||||
<!-- markdownlint-disable MD037 -->
|
||||
{{< example lang="hugo" >}}
|
||||
{{</* tooltip color="primary" title="Tooltip" href="#!" */>}}
|
||||
Tooltip demonstration
|
||||
{{</* /tooltip */>}}
|
||||
{{< /example >}}
|
||||
<!-- markdownlint-enable MD037 -->
|
@@ -1,60 +0,0 @@
|
||||
---
|
||||
author: "Mark Dumay"
|
||||
slug: "code-markeren"
|
||||
title: "Code markeren"
|
||||
date: 2022-04-16
|
||||
description: "Voorbeelden om de syntax van een taal te markeren."
|
||||
tags: ["code"]
|
||||
thumbnail: img/notepad.jpg
|
||||
photoCredits: <a href="https://unsplash.com/@frederickjmedina">Frederick Medina</a>
|
||||
# credits: Photo by <a href="https://unsplash.com/@frederickjmedina">Frederick Medina</a> on <a href="https://unsplash.com/photos/PdfRE-xB--s">Unsplash</a>
|
||||
photoSource: <a href="https://unsplash.com/photos/PdfRE-xB--s">Unsplash</a>
|
||||
---
|
||||
|
||||
## Code Fencing
|
||||
|
||||
Gebruik code fencing om de syntax voor een specifieke taal te markeren.
|
||||
|
||||
```json
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"themes": [],
|
||||
"projects": [],
|
||||
"configuration": {}
|
||||
}
|
||||
```
|
||||
|
||||
```html
|
||||
<div class="highlight">
|
||||
<pre>
|
||||
<code>some code...</code>
|
||||
</pre>
|
||||
</div>
|
||||
```
|
||||
|
||||
## Highlight Shortcode
|
||||
|
||||
Gebruik de `highlight` shortcode om de lay-out van een taalfragment aan te passen.
|
||||
|
||||
{{< highlight go "linenos=table,hl_lines=8 15-17,linenostart=199" >}}
|
||||
// GetTitleFunc returns a func that can be used to transform a string to
|
||||
// title case.
|
||||
//
|
||||
// The supported styles are
|
||||
//
|
||||
// - "Go" (strings.Title)
|
||||
// - "AP" (see https://www.apstylebook.com/)
|
||||
// - "Chicago" (see https://www.chicagomanualofstyle.org/home.html)
|
||||
//
|
||||
// If an unknown or empty style is provided, AP style is what you get.
|
||||
func GetTitleFunc(style string) func(s string) string {
|
||||
switch strings.ToLower(style) {
|
||||
case "go":
|
||||
return strings.Title
|
||||
case "chicago":
|
||||
return transform.NewTitleConverter(transform.ChicagoStyle)
|
||||
default:
|
||||
return transform.NewTitleConverter(transform.APStyle)
|
||||
}
|
||||
}
|
||||
{{< / highlight >}}
|
@@ -1,204 +0,0 @@
|
||||
---
|
||||
author: "Mark Dumay"
|
||||
title: "Extra shortcodes"
|
||||
date: 2022-12-05
|
||||
modified: 2022-12-31
|
||||
description: "Beschikbare shortcodes die gebruik maken van Bootstrap componenten en vormgeving."
|
||||
tags: ["bootstrap", "shortcode"]
|
||||
thumbnail: img/boots.jpg
|
||||
photoCredits: <a href="https://unsplash.com/@nate_dumlao">Nathan Dumlao</a>
|
||||
photoSource: <a href="https://unsplash.com/photos/QLPWQvHvmII">Unsplash</a>
|
||||
---
|
||||
|
||||
Bootstrap is een open-source raamwerk voor het ontwikkelen van websites gemaakt door Twitter. Het volgt een aanpak die geschikt is voor meerdere schermformaten, inclusief mobiele apparaten. Bootstrap bevat een uitgebreide collectie van direct bruikbare componenten, zoals navigatiemenu's, paginering, knoppen, en nog veel meer. Om het gebruik hiervan in markdown pagina's te vergemakkelijken, stelt Hinode enkele van deze componenten beschikbaar als Hugo shortcode. De onderstaande paragrafen bieden een overzicht en uitleg van de beschikbare shortcodes.
|
||||
|
||||
## Carousel Shortcode
|
||||
|
||||
Gebruik de `carousel` shortcode om een carousel van meerdere plaatjes te tonen, analoog aan de [Image Shortcode](#image-shortcode). De shortcode ondersteunt de volgende parameters:
|
||||
|
||||
| Parameter | Verplicht | Toelichting |
|
||||
|-----------|-----------|-------------|
|
||||
| ratio | Nee | Verhouding van het plaatje, de mogelijke waarden zijn "1x1", "4x3" (standaard), "16x9", en "21x9". |
|
||||
| class | Nee | Optionele `class` waarde van het `carousel` element, bijvoorbeeld "w-75". |
|
||||
{.table}
|
||||
|
||||
Voeg een `img` element toe voor elke pagina van de carousel. Het `img` element ondersteunt de volgende parameters:
|
||||
|
||||
| Parameter | Verplicht | Toelichting |
|
||||
|-----------|-----------|-------------|
|
||||
| src | Ja | Verplichte url van het plaatje, bijvoorbeeld "img/boots.jpg" of "https://picsum.photos/id/27/3264/1836". |
|
||||
| caption | Nee | Optionele beschrijving van het plaatje. Het plaatje wordt iets donkerder gemaakt om het contrast te verhogen. Op kleinere schermen wordt de beschrijving weggelaten. |
|
||||
{.table}
|
||||
|
||||
Ter illustratie toont de volgende shortcode een carousel met drie pagina's in een verhouding van 16x9 en een relatieve breedte van 67% voor grote schermen.
|
||||
|
||||
```html
|
||||
{{</* carousel ratio="16x9" class="col-sm-12 col-lg-8 mx-auto" */>}}
|
||||
{{</* img src="img/coffee.jpg" caption="slide 1" */>}}
|
||||
{{</* img src="img/phone.jpg" caption="slide 2" */>}}
|
||||
{{</* img src="img/dunes.jpg" caption="slide 3" */>}}
|
||||
{{</* /carousel */>}}
|
||||
```
|
||||
|
||||
Het resultaat ziet er als volgt uit:
|
||||
{{< carousel ratio="16x9" class="col-sm-12 col-lg-8 mx-auto" >}}
|
||||
{{< img src="img/coffee.jpg" caption="slide 1" >}}
|
||||
{{< img src="img/phone.jpg" caption="slide 2" >}}
|
||||
{{< img src="img/dunes.jpg" caption="slide 3" >}}
|
||||
{{< /carousel >}}
|
||||
|
||||
## Command Prompt Shortcode
|
||||
|
||||
De `command` shortcode simuleert een terminal voor `bash`, `powershell` of `sql` shell talen. De shortcode ondersteunt de volgende parameters:
|
||||
|
||||
| Parameter | Verplicht | Toelichting |
|
||||
|-----------|----------|-------------|
|
||||
| user | Nee | Optionele gebruiker om toe te voegen aan de prompt, bijvoorbeeld "user". |
|
||||
| host | Nee | Optionele omgeving om toe te voegen aan de prompt, bijvoorbeeld "localhost". |
|
||||
| prompt | Nee | Optionele vervanging van de prompt, bijvoorbeeld "PS C:\Users\User>". |
|
||||
| shell | Nee | Type shell, met ondersteuning voor "bash" (standaard), "powershell", of "sql". |
|
||||
{.table}
|
||||
|
||||
### Bash (standaard shell)
|
||||
|
||||
Gebruik de `command` shortcode om een bash terminal te simuleren.
|
||||
|
||||
```html
|
||||
{{%/* command */%}}
|
||||
export MY_VAR=123
|
||||
{{%/* /command */%}}
|
||||
```
|
||||
|
||||
Het resultaat ziet er als volgt uit:
|
||||
{{% command %}}
|
||||
export MY_VAR=123
|
||||
{{% /command %}}
|
||||
|
||||
Gebruik `user` en `host` om de gebruikerscontext mee te geven aan de prompt. Maak daarnaast gebruik van `(out)` om output aan te geven, met `\` als markering van een bijbehorende regel.
|
||||
|
||||
```html
|
||||
{{%/* command user="user" host="localhost" */%}}
|
||||
export MY_VAR=123
|
||||
echo "hello"
|
||||
(out)hello
|
||||
echo one \
|
||||
two \
|
||||
three
|
||||
(out)one two three
|
||||
echo "goodbye"
|
||||
(out)goodbye
|
||||
{{%/* /command */%}}
|
||||
```
|
||||
|
||||
Het resultaat ziet er als volgt uit:
|
||||
{{% command user="user" host="localhost" %}}
|
||||
export MY_VAR=123
|
||||
echo "hello"
|
||||
(out)hello
|
||||
echo one \
|
||||
two \
|
||||
three
|
||||
(out)one two three
|
||||
echo "goodbye"
|
||||
(out)goodbye
|
||||
{{% /command %}}
|
||||
|
||||
### PowerShell
|
||||
|
||||
Geef `powershell` op als waarde voor het argument `shell` om een PowerShell terminal te simuleren. Je kunt `prompt` aanpassen om een eventule directory aan te geven. Het backtick `` ` `` symbool geeft aan dat het commando doorgaat op de volgende regel.
|
||||
|
||||
```html
|
||||
{{%/* command prompt="PS C:\Users\User>" shell="powershell" */%}}
|
||||
Write-Host `
|
||||
'Hello' `
|
||||
'from' `
|
||||
'PowerShell!'
|
||||
(out)Hello from PowerShell!
|
||||
Write-Host 'Goodbye from PowerShell!'
|
||||
(out)Goodbye from PowerShell!
|
||||
{{%/* /command */%}}
|
||||
```
|
||||
|
||||
Het resultaat ziet er als volgt uit:
|
||||
{{% command prompt="PS C:\Users\User>" shell="powershell" %}}
|
||||
Write-Host `
|
||||
'Hello' `
|
||||
'from' `
|
||||
'PowerShell!'
|
||||
(out)Hello from PowerShell!
|
||||
Write-Host 'Goodbye from PowerShell!'
|
||||
(out)Goodbye from PowerShell!
|
||||
{{% /command %}}
|
||||
|
||||
### SQL
|
||||
|
||||
Geef `sql` op als waarde voor het argument `shell` om een SQL terminal te simuleren. Gebruik `(con)` als markering van een bijbehorende regel.
|
||||
|
||||
```html
|
||||
{{%/* command prompt="mysql>" shell="sql" */%}}
|
||||
set @my_var = 'foo';
|
||||
set @my_other_var = 'bar';
|
||||
CREATE TABLE people ((con)
|
||||
first_name VARCHAR(30) NOT NULL,(con)
|
||||
last_name VARCHAR(30) NOT NULL(con)
|
||||
);
|
||||
(out)Query OK, 0 rows affected (0.09 sec)
|
||||
insert into people(con)
|
||||
values ('John', 'Doe');
|
||||
(out)Query OK, 1 row affected (0.02 sec)
|
||||
select *(con)
|
||||
from people(con)
|
||||
order by last_name;
|
||||
(out)+------------+-----------+
|
||||
(out)| first_name | last_name |
|
||||
(out)+------------+-----------+
|
||||
(out)| John | Doe |
|
||||
(out)+------------+-----------+
|
||||
(out)1 row in set (0.00 sec)
|
||||
{{%/* /command */%}}
|
||||
```
|
||||
|
||||
Het resultaat ziet er als volgt uit:
|
||||
{{% command prompt="mysql>" shell="sql" %}}
|
||||
set @my_var = 'foo';
|
||||
set @my_other_var = 'bar';
|
||||
CREATE TABLE people ((con)
|
||||
first_name VARCHAR(30) NOT NULL,(con)
|
||||
last_name VARCHAR(30) NOT NULL(con)
|
||||
);
|
||||
(out)Query OK, 0 rows affected (0.09 sec)
|
||||
insert into people(con)
|
||||
values ('John', 'Doe');
|
||||
(out)Query OK, 1 row affected (0.02 sec)
|
||||
select *(con)
|
||||
from people(con)
|
||||
order by last_name;
|
||||
(out)+------------+-----------+
|
||||
(out)| first_name | last_name |
|
||||
(out)+------------+-----------+
|
||||
(out)| John | Doe |
|
||||
(out)+------------+-----------+
|
||||
(out)1 row in set (0.00 sec)
|
||||
{{% /command %}}
|
||||
|
||||
## Image Shortcode
|
||||
|
||||
Gebruik de `image` shortcode om een adaptief plaatje met een specifieke verhouding te tonen. De bron kan verwijzen naar een bestand in de `/assets/img` folder van je website of naar een publieke weblocatie. De shortcode genereert het plaatje als een zogenaamde [image set]({{< param "links.mozilla_image" >}}) om deze te optimaliseren voor meerdere schermformaten en verschillende resoluties. Achter de schermen converteert Hugo de plaatjes naar een `WebP` bestandsformaat en slaat deze op in een lokale folder (`resources` of `public`). De kwaliteit van het plaatje kan worden opgegeven in de sectie `[imaging]` van de site [configuratie]({{< param "links.hugo_imaging" >}}) (75 is de standaardwaarde). De geschikte bestandsformaten zijn `.png`, `.jpeg`, `.gif`, `.tiff`, `.bmp` en `.webp`. Een plaatje in het formaat `.jpeg` is beschikbaar voor oudere browsers. De shortcode ondersteunt de volgende parameters:
|
||||
|
||||
| Parameter | Verplicht | Toelichting |
|
||||
|-----------|----------|-------------|
|
||||
| src | Ja | Verplichte url van het plaatje, bijvoorbeeld "img/boots.jpg" of "https://picsum.photos/id/27/3264/1836". |
|
||||
| ratio | Nee | Verhouding van het plaatje, de mogelijke waarden zijn "1x1", "4x3", "16x9", en "21x9". Indien opgegeven wordt het plaatje bijgesneden en verkleind om te voldoen aan de ratio. Als de verhouding niet is opgegeven dan wordt de verhouding van het originele bestand gebruikt. |
|
||||
| class | Nee | Optionele `class` waarde van het `img` element, bijvoorbeeld "rounded". |
|
||||
| title | Nee | Optionele beschrijving van het plaatje. |
|
||||
| caption | Nee | Optioneel onderschrift van het plaatje. |
|
||||
{.table}
|
||||
|
||||
Ter illustratie toont de volgende shortcode een plaatje met afgeronde hoeken en een verhouding van 21x9.
|
||||
|
||||
```html
|
||||
{{</* image src="img/flowers.jpg" ratio="21x9" caption="Onderschrift" class="rounded" */>}}
|
||||
```
|
||||
|
||||
Het resultaat ziet er als volgt uit:
|
||||
{{< image src="img/flowers.jpg" ratio="21x9" caption="Onderschrift" class="rounded">}}
|
@@ -1,25 +0,0 @@
|
||||
---
|
||||
author: "Hugo Authors"
|
||||
slug: "emoji-ondersteuning"
|
||||
title: "Emoji ondersteuning"
|
||||
date: 2021-07-15
|
||||
description: "Gids voor het gebruik van emoji met Hugo."
|
||||
tags: ["emoji"]
|
||||
# thumbnail: img/dunes.jpg
|
||||
thumbnail: https://picsum.photos/id/184/4288/2848.jpg
|
||||
photoCredits: <a href="https://unsplash.com/@timdegroot">Tim de Groot</a>
|
||||
photoSource: <a href="https://unsplash.com/photos/yNGQ830uFB4">Unsplash</a>
|
||||
---
|
||||
|
||||
Je kunt op meerdere manieren emoji gebruiken binnen Hugo.
|
||||
|
||||
<!--more-->
|
||||
|
||||
Je kunt de [`emojify`](https://gohugo.io/functions/emojify/) functie direct aanroepen vanuit een template of [Inline Shortcode](https://gohugo.io/templates/shortcode-templates/#inline-shortcodes).
|
||||
|
||||
Zet de waarde `enableEmoji` op `true` in de globale [configuratie](https://gohugo.io/getting-started/configuration/) om emoji direct te kunnen gebruiken in content, bijvoorbeeld:
|
||||
|
||||
<p><span class="nowrap"><span class="emojify">🙈</span> <code>:see_no_evil:</code></span> <span class="nowrap"><span class="emojify">🙉</span> <code>:hear_no_evil:</code></span> <span class="nowrap"><span class="emojify">🙊</span> <code>:speak_no_evil:</code></span></p>
|
||||
<br>
|
||||
|
||||
De [Emoji cheat sheet](http://www.emoji-cheat-sheet.com/) geeft een handig overzicht van alle beschikbare emoji codes.
|
14
content/nl/blog/first-post.md
Normal file
@@ -0,0 +1,14 @@
|
||||
---
|
||||
author: Mark Dumay
|
||||
title: Eerste artikel
|
||||
date: 2022-10-01
|
||||
description: Dit is mijn eerste artikel.
|
||||
tags: ["blog"]
|
||||
thumbnail: img/notepad.jpg
|
||||
photoCredits: <a href="https://unsplash.com/@frederickjmedina">Frederick Medina</a>
|
||||
photoSource: <a href="https://unsplash.com/photos/PdfRE-xB--s">Unsplash</a>
|
||||
---
|
||||
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque vulputate, ante in luctus congue, leo risus semper justo, vel consequat sapien lectus quis ipsum. In imperdiet urna justo. Nulla vel pellentesque ipsum. Cras congue feugiat dolor ac aliquam. Pellentesque eget dui venenatis, ultrices urna ac, vehicula nibh. Curabitur est lectus, dapibus eu vehicula non, malesuada et dui. Nam enim nulla, egestas et nunc non, elementum aliquet justo. Mauris euismod mauris sapien, eget vestibulum odio dictum sit amet. Morbi nisl elit, placerat at auctor in, finibus ac neque. Curabitur placerat feugiat risus non vestibulum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque quis cursus est, nec posuere libero.
|
||||
|
||||
In ac lobortis diam. Curabitur id dui ac nunc mattis rhoncus a sed lorem. Sed lobortis sem turpis, at posuere enim dignissim et. Vivamus fermentum justo quis volutpat volutpat. Proin eget vehicula neque, ut tempus urna. Duis ac ex vel leo pharetra lobortis et vitae lacus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Aliquam erat volutpat. Suspendisse ullamcorper ultrices elementum. Suspendisse mi elit, commodo at varius a, cursus a ligula. Sed et mattis elit, eu luctus arcu. Cras a porttitor libero. Vestibulum tincidunt sed magna at dapibus. Sed quis orci eu lacus aliquam tristique. Integer porttitor ultrices ipsum quis porttitor. Etiam a sodales ligula.
|