🔖 Release v2.5.0

pull/775/head v2.5.0
James Panther 2023-01-17 13:00:14 +11:00
commit 5a22faacac
No known key found for this signature in database
GPG Key ID: D36F789E45745D17
85 changed files with 1317 additions and 1479 deletions

View File

@ -10,7 +10,7 @@ jobs:
issues: write issues: write
pull-requests: write pull-requests: write
steps: steps:
- uses: actions/stale@v6 - uses: actions/stale@v7
with: with:
days-before-stale: 30 days-before-stale: 30
days-before-close: 14 days-before-close: 14

View File

@ -6,6 +6,41 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
## [Unreleased] ## [Unreleased]
## [2.5.0] - 2023-01-17
### Added
- Support for icons in menus including support for links styled as an icon by itself or an icon with text
- Search and appearance switcher links can now be fully customised and positioned anywhere in the menu
- Front matter support for specifying article thumbnails, covers and featured image details (including filename pattern, alt text and caption)
- Two new colour schemes - `cherry` and `sapphire`
- Support for SVG assets as article thumbnails, covers and featured images
- Front matter keywords support on a per article basis
- Indonesian translation ([#398](https://github.com/jpanther/congo/pull/398))
- Mastodon sharing links ([#405](https://github.com/jpanther/congo/pull/405))
- `homepage.recentLimit` parameter to adjust the maximum number of recent items listed on the homepage ([#411](https://github.com/jpanther/congo/pull/411))
### Changed
- Images smaller than the article width are no longer resized to fill the content area and will now simply align centre ([#394](https://github.com/jpanther/congo/pull/394))
- Upgrade to KaTeX v0.16.4 ([#414](https://github.com/jpanther/congo/pull/414))
- Upgrade to Mermaid v9.3.0 ([#419](https://github.com/jpanther/congo/pull/419))
- Upgrade to Chart.js v4.1.2 ([#420](https://github.com/jpanther/congo/pull/420), [#434](https://github.com/jpanther/congo/pull/434))
- Upgrade to Typography v0.5.9 ([#437](https://github.com/jpanther/congo/pull/437))
### Fixed
- `mainSections` parameter is language dependent and is not referenced from `params.toml` ([#376](https://github.com/jpanther/congo/pull/376))
- Code highlight background cut off in Google Chrome when overflowing content area ([#383](https://github.com/jpanther/congo/pull/383))
- Social icons shift position during CSS transition when hovered in Safari ([#396](https://github.com/jpanther/congo/pull/396))
- Hamburger navigation menu is misaligned in mobile browsers ([#399](https://github.com/jpanther/congo/pull/399))
- Error when attempting to resize SVG assets in page bundles ([#427](https://github.com/jpanther/congo/pull/427))
- Appearance switcher missing `aria-label` ([#438](https://github.com/jpanther/congo/pull/438))
- Article links missing `alt` text and `aria-label` ([#439](https://github.com/jpanther/congo/pull/439))
- Line height in article tag list would cause overlap when wrapping to a new line ([#444](https://github.com/jpanther/congo/pull/444))
- Figure shortcode would not apply `class` or `href` attribtues in some cases
- Charts displaying with incorrect theme colours
## [2.4.2] - 2022-11-22 ## [2.4.2] - 2022-11-22
### Added ### Added
@ -570,7 +605,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
- Advanced customisation using simple Tailwind colour definitions and styles - Advanced customisation using simple Tailwind colour definitions and styles
- Fully documented - Fully documented
[unreleased]: https://github.com/jpanther/congo/compare/v2.4.2...HEAD [Unreleased]: https://github.com/jpanther/congo/compare/v2.5.0...HEAD
[2.5.0]: https://github.com/jpanther/congo/compare/v2.4.2...v2.5.0
[2.4.2]: https://github.com/jpanther/congo/compare/v2.4.1...v2.4.2 [2.4.2]: https://github.com/jpanther/congo/compare/v2.4.1...v2.4.2
[2.4.1]: https://github.com/jpanther/congo/compare/v2.4.0...v2.4.1 [2.4.1]: https://github.com/jpanther/congo/compare/v2.4.0...v2.4.1
[2.4.0]: https://github.com/jpanther/congo/compare/v2.3.1...v2.4.0 [2.4.0]: https://github.com/jpanther/congo/compare/v2.3.1...v2.4.0

View File

@ -1,4 +1,4 @@
/*! Congo v2.4.2 | MIT License | https://github.com/jpanther/congo */ /*! Congo v2.5.0 | MIT License | https://github.com/jpanther/congo */
/*! tailwindcss v3.2.4 | MIT License | https://tailwindcss.com */ /*! tailwindcss v3.2.4 | MIT License | https://tailwindcss.com */
@ -518,6 +518,11 @@ video {
max-width: 65ch; max-width: 65ch;
} }
.prose :where(p):not(:where([class~="not-prose"] *)) {
margin-top: 1.25em;
margin-bottom: 1.25em;
}
.prose :where([class~="lead"]):not(:where([class~="not-prose"] *)) { .prose :where([class~="lead"]):not(:where([class~="not-prose"] *)) {
color: var(--tw-prose-lead); color: var(--tw-prose-lead);
font-size: 1.25em; font-size: 1.25em;
@ -878,11 +883,6 @@ video {
line-height: 1.75; line-height: 1.75;
} }
.prose :where(p):not(:where([class~="not-prose"] *)) {
margin-top: 1.25em;
margin-bottom: 1.25em;
}
.prose :where(video):not(:where([class~="not-prose"] *)) { .prose :where(video):not(:where([class~="not-prose"] *)) {
margin-top: 2em; margin-top: 2em;
margin-bottom: 2em; margin-bottom: 2em;
@ -1020,6 +1020,7 @@ body button {
/* Hamburger menu */ /* Hamburger menu */
body:has(#menu-controller:checked) { body:has(#menu-controller:checked) {
position: fixed;
overflow-y: hidden; overflow-y: hidden;
} }
@ -1173,64 +1174,37 @@ body:has(#menu-controller:checked) {
/* Background */ /* Background */
.prose .chroma { .chroma {
position: static;
border-radius: 0.375rem; border-radius: 0.375rem;
--tw-bg-opacity: 1; --tw-bg-opacity: 1;
background-color: rgba(var(--color-neutral-50), var(--tw-bg-opacity)); background-color: rgba(var(--color-neutral-50), var(--tw-bg-opacity));
padding-top: 0.75rem;
padding-bottom: 0.75rem;
--tw-text-opacity: 1; --tw-text-opacity: 1;
color: rgba(var(--color-neutral-700), var(--tw-text-opacity)); color: rgba(var(--color-neutral-700), var(--tw-text-opacity));
} }
.dark .prose .chroma { .dark .chroma {
--tw-bg-opacity: 1; --tw-bg-opacity: 1;
background-color: rgba(var(--color-neutral-700), var(--tw-bg-opacity)); background-color: rgba(var(--color-neutral-700), var(--tw-bg-opacity));
--tw-text-opacity: 1; --tw-text-opacity: 1;
color: rgba(var(--color-neutral-200), var(--tw-text-opacity)); color: rgba(var(--color-neutral-200), var(--tw-text-opacity));
} }
/* LineTableTD */ .chroma pre {
.chroma .lntd,
.chroma .lntd pre {
margin: 0px; margin: 0px;
overflow: hidden;
border-style: none;
padding: 0px; padding: 0px;
vertical-align: top;
} }
/* LineTable */ /* LineTable */
.chroma .lntable { .chroma .lntable {
margin: 0px;
display: block; display: block;
width: auto; width: auto;
overflow-x: auto; overflow: auto;
padding-top: 0.75rem;
padding-bottom: 0.75rem;
font-size: 1rem; font-size: 1rem;
line-height: 1.5rem; line-height: 1.5rem;
border-spacing: 0;
}
/* LineTable Line */
.chroma .lntable .line {
padding-right: 1rem;
}
/* LineHighlight */
.chroma .hl {
display: block;
width: auto;
--tw-bg-opacity: 1;
background-color: rgba(var(--color-primary-100), var(--tw-bg-opacity));
}
.dark .chroma .hl {
--tw-bg-opacity: 1;
background-color: rgba(var(--color-primary-900), var(--tw-bg-opacity));
} }
/* LineNumbersTable */ /* LineNumbersTable */
@ -1239,11 +1213,9 @@ body:has(#menu-controller:checked) {
.chroma .lnt, .chroma .lnt,
.chroma .ln { .chroma .ln {
margin-right: 0.4em; margin-right: 0.5rem;
padding-left: 0.4em; padding-left: 0.5rem;
padding-right: 0.4em; padding-right: 0.5rem;
padding-top: 0px;
padding-bottom: 0px;
--tw-text-opacity: 1; --tw-text-opacity: 1;
color: rgba(var(--color-neutral-600), var(--tw-text-opacity)); color: rgba(var(--color-neutral-600), var(--tw-text-opacity));
} }
@ -1254,6 +1226,29 @@ body:has(#menu-controller:checked) {
color: rgba(var(--color-neutral-300), var(--tw-text-opacity)); color: rgba(var(--color-neutral-300), var(--tw-text-opacity));
} }
.chroma .lntd {
padding: 0px;
vertical-align: top;
}
.chroma .lntd:last-of-type {
width: 100%;
}
/* LineHighlight */
.chroma .hl {
display: block;
width: 100%;
--tw-bg-opacity: 1;
background-color: rgba(var(--color-primary-100), var(--tw-bg-opacity));
}
.dark .chroma .hl {
--tw-bg-opacity: 1;
background-color: rgba(var(--color-primary-900), var(--tw-bg-opacity));
}
/* Keyword */ /* Keyword */
/* KeywordDeclaration */ /* KeywordDeclaration */
@ -1803,6 +1798,10 @@ body:has(#menu-controller:checked) {
margin-top: -1rem; margin-top: -1rem;
} }
.-mt-3 {
margin-top: -0.75rem;
}
.mr-2 { .mr-2 {
margin-right: 0.5rem; margin-right: 0.5rem;
} }
@ -1891,6 +1890,10 @@ body:has(#menu-controller:checked) {
height: 9rem; height: 9rem;
} }
.max-h-\[4\.5rem\] {
max-height: 4.5rem;
}
.max-h-\[10rem\] { .max-h-\[10rem\] {
max-height: 10rem; max-height: 10rem;
} }
@ -1951,6 +1954,10 @@ body:has(#menu-controller:checked) {
max-width: 65ch; max-width: 65ch;
} }
.max-w-\[6rem\] {
max-width: 6rem;
}
.max-w-\[10rem\] { .max-w-\[10rem\] {
max-width: 10rem; max-width: 10rem;
} }
@ -2343,6 +2350,10 @@ body:has(#menu-controller:checked) {
line-height: 1.75rem; line-height: 1.75rem;
} }
.leading-relaxed {
line-height: 1.625;
}
.leading-6 { .leading-6 {
line-height: 1.5rem; line-height: 1.5rem;
} }
@ -2441,6 +2452,12 @@ body:has(#menu-controller:checked) {
transition-duration: 150ms; transition-duration: 150ms;
} }
.transition-colors {
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
}
.transition-opacity { .transition-opacity {
transition-property: opacity; transition-property: opacity;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
@ -2568,6 +2585,14 @@ body:has(#menu-controller:checked) {
text-decoration-color: rgba(var(--color-primary-500), 1); text-decoration-color: rgba(var(--color-primary-500), 1);
} }
.group:hover .group-hover\:decoration-2 {
text-decoration-thickness: 2px;
}
.group:hover .group-hover\:underline-offset-2 {
text-underline-offset: 2px;
}
.group:hover .group-hover\:opacity-100 { .group:hover .group-hover\:opacity-100 {
opacity: 1; opacity: 1;
} }
@ -2692,6 +2717,10 @@ body:has(#menu-controller:checked) {
text-align: left; text-align: left;
} }
.dark .dark\:inline {
display: inline;
}
.dark .dark\:flex { .dark .dark\:flex {
display: flex; display: flex;
} }
@ -2884,6 +2913,10 @@ body:has(#menu-controller:checked) {
display: none; display: none;
} }
.sm\:max-h-\[7\.5rem\] {
max-height: 7.5rem;
}
.sm\:w-1\/2 { .sm\:w-1\/2 {
width: 50%; width: 50%;
} }
@ -2892,6 +2925,10 @@ body:has(#menu-controller:checked) {
width: 10rem; width: 10rem;
} }
.sm\:max-w-\[10rem\] {
max-width: 10rem;
}
.sm\:flex-row { .sm\:flex-row {
flex-direction: row; flex-direction: row;
} }

View File

@ -1,4 +1,4 @@
/*! Congo v2.4.2 | MIT License | https://github.com/jpanther/congo */ /*! Congo v2.5.0 | MIT License | https://github.com/jpanther/congo */
@tailwind base; @tailwind base;
@tailwind components; @tailwind components;
@ -23,7 +23,7 @@ body button {
/* Hamburger menu */ /* Hamburger menu */
body:has(#menu-controller:checked) { body:has(#menu-controller:checked) {
@apply overflow-y-hidden; @apply fixed overflow-y-hidden;
} }
#menu-button:has(#menu-controller:checked) { #menu-button:has(#menu-controller:checked) {
@apply invisible; @apply invisible;
@ -98,32 +98,31 @@ body:has(#menu-controller:checked) {
/* -- Chroma Highlight -- */ /* -- Chroma Highlight -- */
/* Background */ /* Background */
.prose .chroma { .chroma {
@apply static rounded-md bg-neutral-50 text-neutral-700 dark:bg-neutral-700 dark:text-neutral-200; @apply py-3 rounded-md bg-neutral-50 text-neutral-700 dark:bg-neutral-700 dark:text-neutral-200;
} }
/* LineTableTD */ .chroma pre {
.chroma .lntd, @apply p-0 m-0;
.chroma .lntd pre {
@apply p-0 m-0 overflow-hidden align-top border-none;
} }
/* LineTable */ /* LineTable */
.chroma .lntable { .chroma .lntable {
@apply block w-auto py-3 overflow-x-auto text-base; @apply block w-auto m-0 overflow-auto text-base;
border-spacing: 0;
}
/* LineTable Line */
.chroma .lntable .line {
@apply pr-4;
}
/* LineHighlight */
.chroma .hl {
@apply block w-auto bg-primary-100 dark:bg-primary-900;
} }
/* LineNumbersTable */ /* LineNumbersTable */
/* LineNumbers */ /* LineNumbers */
.chroma .lnt, .chroma .lnt,
.chroma .ln { .chroma .ln {
@apply mr-[0.4em] px-[0.4em] py-0 text-neutral-600 dark:text-neutral-300; @apply px-2 mr-2 text-neutral-600 dark:text-neutral-300;
}
.chroma .lntd {
@apply p-0 align-top;
}
.chroma .lntd:last-of-type {
@apply w-full;
}
/* LineHighlight */
.chroma .hl {
@apply block w-full bg-primary-100 dark:bg-primary-900;
} }
/* Keyword */ /* Keyword */
/* KeywordDeclaration */ /* KeywordDeclaration */

View File

@ -0,0 +1,37 @@
/* Cherry scheme */
:root {
--color-neutral: 255, 255, 255;
/* Neutral */
--color-neutral-50: 250, 250, 250;
--color-neutral-100: 245, 245, 245;
--color-neutral-200: 229, 229, 229;
--color-neutral-300: 212, 212, 212;
--color-neutral-400: 163, 163, 163;
--color-neutral-500: 115, 115, 115;
--color-neutral-600: 82, 82, 82;
--color-neutral-700: 64, 64, 64;
--color-neutral-800: 38, 38, 38;
--color-neutral-900: 23, 23, 23;
/* Rose */
--color-primary-50: 255, 241, 242;
--color-primary-100: 255, 228, 230;
--color-primary-200: 254, 205, 211;
--color-primary-300: 253, 164, 175;
--color-primary-400: 251, 113, 133;
--color-primary-500: 244, 63, 94;
--color-primary-600: 225, 29, 72;
--color-primary-700: 190, 18, 60;
--color-primary-800: 159, 18, 57;
--color-primary-900: 136, 19, 55;
/* Green */
--color-secondary-50: 240, 253, 244;
--color-secondary-100: 220, 252, 231;
--color-secondary-200: 187, 247, 208;
--color-secondary-300: 134, 239, 172;
--color-secondary-400: 74, 222, 128;
--color-secondary-500: 34, 197, 94;
--color-secondary-600: 22, 163, 74;
--color-secondary-700: 21, 128, 61;
--color-secondary-800: 22, 101, 52;
--color-secondary-900: 20, 83, 45;
}

View File

@ -1,7 +1,7 @@
/* Ocean scheme */ /* Ocean scheme */
:root { :root {
--color-neutral: 255, 255, 255; --color-neutral: 255, 255, 255;
/* Gray */ /* Slate */
--color-neutral-50: 248, 250, 252; --color-neutral-50: 248, 250, 252;
--color-neutral-100: 241, 245, 249; --color-neutral-100: 241, 245, 249;
--color-neutral-200: 226, 232, 240; --color-neutral-200: 226, 232, 240;

View File

@ -0,0 +1,37 @@
/* Sapphire scheme */
:root {
--color-neutral: 255, 255, 255;
/* Slate */
--color-neutral-50: 248, 250, 252;
--color-neutral-100: 241, 245, 249;
--color-neutral-200: 226, 232, 240;
--color-neutral-300: 203, 213, 225;
--color-neutral-400: 148, 163, 184;
--color-neutral-500: 100, 116, 139;
--color-neutral-600: 71, 85, 105;
--color-neutral-700: 51, 65, 85;
--color-neutral-800: 30, 41, 59;
--color-neutral-900: 15, 23, 42;
/* Indigo */
--color-primary-50: 238, 242, 255;
--color-primary-100: 224, 231, 255;
--color-primary-200: 199, 210, 254;
--color-primary-300: 165, 180, 252;
--color-primary-400: 129, 140, 248;
--color-primary-500: 99, 102, 241;
--color-primary-600: 79, 70, 229;
--color-primary-700: 67, 56, 202;
--color-primary-800: 55, 48, 163;
--color-primary-900: 49, 46, 129;
/* Pink */
--color-secondary-50: 253, 242, 248;
--color-secondary-100: 252, 231, 243;
--color-secondary-200: 251, 207, 232;
--color-secondary-300: 249, 168, 212;
--color-secondary-400: 244, 114, 182;
--color-secondary-500: 236, 72, 153;
--color-secondary-600: 219, 39, 119;
--color-secondary-700: 190, 24, 93;
--color-secondary-800: 157, 23, 77;
--color-secondary-900: 131, 24, 67;
}

View File

@ -39,8 +39,8 @@ if (document.documentElement.getAttribute("data-auto-appearance") === "true") {
} }
window.addEventListener("DOMContentLoaded", (event) => { window.addEventListener("DOMContentLoaded", (event) => {
const switcher = document.getElementById("appearance-switcher"); var switchers = document.querySelectorAll("[id^='appearance-switcher']");
if (switcher) { switchers.forEach((switcher) => {
switcher.addEventListener("click", () => { switcher.addEventListener("click", () => {
document.documentElement.classList.toggle("dark"); document.documentElement.classList.toggle("dark");
setThemeColor(); setThemeColor();
@ -53,5 +53,5 @@ window.addEventListener("DOMContentLoaded", (event) => {
event.preventDefault(); event.preventDefault();
localStorage.removeItem("appearance"); localStorage.removeItem("appearance");
}); });
} });
}); });

View File

@ -3,6 +3,7 @@ function css(name) {
} }
Chart.defaults.font.size = 14; Chart.defaults.font.size = 14;
Chart.defaults.plugins.colors.enabled = false;
Chart.defaults.backgroundColor = css("--color-primary-300"); Chart.defaults.backgroundColor = css("--color-primary-300");
Chart.defaults.elements.point.borderColor = css("--color-primary-400"); Chart.defaults.elements.point.borderColor = css("--color-primary-400");
Chart.defaults.elements.bar.borderColor = css("--color-primary-500"); Chart.defaults.elements.bar.borderColor = css("--color-primary-500");

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -6,12 +6,14 @@ weight = 1
rtl = false rtl = false
title = "Congo" title = "Congo"
# logo = "img/logo.jpg"
# description = "My awesome website" # description = "My awesome website"
# copyright = "Copy, _right?_ :thinking_face:" # copyright = "Copy, _right?_ :thinking_face:"
dateFormat = "2 January 2006" dateFormat = "2 January 2006"
[params]
# mainSections = ["section1", "section2"]
[author] [author]
# name = "Your name here" # name = "Your name here"
# image = "img/author.jpg" # image = "img/author.jpg"

View File

@ -25,6 +25,11 @@
pageRef = "tags" pageRef = "tags"
weight = 30 weight = 30
[[main]]
identifier = "search"
weight = 99
[main.params]
action = "search"
# -- Footer Menu -- # -- Footer Menu --
# The footer menu is displayed at the bottom of the page, just before # The footer menu is displayed at the bottom of the page, just before

View File

@ -12,7 +12,6 @@ autoSwitchAppearance = true
enableSearch = false enableSearch = false
enableCodeCopy = false enableCodeCopy = false
# mainSections = ["section1", "section2"]
# robots = "" # robots = ""
[header] [header]
@ -29,6 +28,7 @@ enableCodeCopy = false
[homepage] [homepage]
layout = "page" # valid options: page, profile, custom layout = "page" # valid options: page, profile, custom
showRecent = false showRecent = false
recentLimit = 5
[article] [article]
showDate = true showDate = true
@ -47,7 +47,7 @@ enableCodeCopy = false
showTaxonomies = false showTaxonomies = false
showWordCount = false showWordCount = false
showComments = false showComments = false
# sharingLinks = ["facebook", "twitter", "pinterest", "reddit", "linkedin", "email"] # sharingLinks = ["facebook", "twitter", "mastodon", "pinterest", "reddit", "linkedin", "email"]
[list] [list]
showBreadcrumbs = false showBreadcrumbs = false

View File

@ -14,6 +14,11 @@
"title": "sharing.linkedin", "title": "sharing.linkedin",
"url": "https://www.linkedin.com/shareArticle?mini=true&url=%s&title=%s" "url": "https://www.linkedin.com/shareArticle?mini=true&url=%s&title=%s"
}, },
"mastodon": {
"icon": "mastodon",
"title": "sharing.mastodon",
"url": "https://tootpick.org/#text=%s %s"
},
"pinterest": { "pinterest": {
"icon": "pinterest", "icon": "pinterest",
"title": "sharing.pinterest", "title": "sharing.pinterest",

View File

@ -6,12 +6,14 @@ weight = 1
rtl = false rtl = false
title = "Congo" title = "Congo"
# logo = "img/logo.jpg"
description = "A powerful, lightweight theme for Hugo built with Tailwind CSS." description = "A powerful, lightweight theme for Hugo built with Tailwind CSS."
copyright = "© 2022 Congo contributors" copyright = "© 2023 Congo contributors"
dateFormat = "2 January 2006" dateFormat = "2 January 2006"
[params]
mainSections = ["samples"]
[author] [author]
name = "Congo" name = "Congo"
image = "img/author.jpg" image = "img/author.jpg"

View File

@ -10,4 +10,4 @@
[tableOfContents] [tableOfContents]
startLevel = 2 startLevel = 2
endLevel = 4 endLevel = 3

View File

@ -29,7 +29,16 @@
name = "GitHub" name = "GitHub"
url = "https://github.com/jpanther/congo" url = "https://github.com/jpanther/congo"
weight = 40 weight = 40
[main.params]
icon = "github"
showName = false
target = "_blank"
[[main]]
identifier = "search"
weight = 99
[main.params]
action = "search"
# -- Footer Menu -- # -- Footer Menu --
# The footer menu is displayed at the bottom of the page, just before # The footer menu is displayed at the bottom of the page, just before

View File

@ -12,7 +12,6 @@ autoSwitchAppearance = true
enableSearch = true enableSearch = true
enableCodeCopy = true enableCodeCopy = true
mainSections = ["samples"]
# robots = "" # robots = ""
[header] [header]
@ -29,6 +28,7 @@ mainSections = ["samples"]
[homepage] [homepage]
layout = "custom" # valid options: page, profile, custom layout = "custom" # valid options: page, profile, custom
showRecent = true showRecent = true
recentLimit = 5
[article] [article]
showDate = true showDate = true
@ -47,7 +47,7 @@ mainSections = ["samples"]
showTaxonomies = false showTaxonomies = false
showWordCount = false showWordCount = false
showComments = false showComments = false
# sharingLinks = ["facebook", "twitter", "pinterest", "reddit", "linkedin", "email"] # sharingLinks = ["facebook", "twitter", "mastodon", "pinterest", "reddit", "linkedin", "email"]
[list] [list]
showBreadcrumbs = true showBreadcrumbs = true

View File

@ -24,6 +24,6 @@ This is a demo site built entirely using Congo. It also contains a complete set
</span> </span>
</div> </div>
Explore the [sample pages]({{< ref "samples" >}}) to get a feel for what Congo can do. If you like what you see, check out the project on [Github](https://github.com/jpanther/congo) or read the [Installation guide]({{< ref "docs/installation" >}}) to get started. {{< figure src="festivities.svg" class="m-auto mt-6 max-w-prose" >}}
![A stylised photograph of a purple squid on a pink backdrop.](squid.jpg "Photo by [Jippe Joosten](https://unsplash.com/@jippe_joosten?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/s/photos/vibrant-purple?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText).") Explore the [sample pages]({{< ref "samples" >}}) to get a feel for what Congo can do. If you like what you see, check out the project on [Github](https://github.com/jpanther/congo) or read the [Installation guide]({{< ref "docs/installation" >}}) to get started.

View File

@ -5,6 +5,7 @@ description: "Learn how to use Congo and its features."
cascade: cascade:
showDate: false showDate: false
showAuthor: false showAuthor: false
showSummary: true
invertPagination: true invertPagination: true
--- ---
@ -16,4 +17,6 @@ Simple, yet powerful. Learn how to use Congo and its features.
This section contains everything you need to know about Congo. If you're new, check out the [Installation]({{< ref "docs/installation" >}}) guide to begin or visit the [Samples]({{< ref "samples" >}}) section to see what Congo can do. This section contains everything you need to know about Congo. If you're new, check out the [Installation]({{< ref "docs/installation" >}}) guide to begin or visit the [Samples]({{< ref "samples" >}}) section to see what Congo can do.
_Special thanks to [Katerina Limpitsouni](https://ninalimpi.com) for the excellent illustrations that are used throughout these docs!_
--- ---

View File

@ -3,6 +3,7 @@ title: "Advanced Customisation"
date: 2020-08-08 date: 2020-08-08
draft: false draft: false
description: "Learn how to build Congo manually." description: "Learn how to build Congo manually."
summary: "Congo supports advanced customisations that include modifying the underlying Tailwind configuration, building the theme manually and providing custom CSS."
slug: "advanced-customisation" slug: "advanced-customisation"
tags: ["advanced", "css", "docs"] tags: ["advanced", "css", "docs"]
--- ---

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -3,6 +3,7 @@ title: "Configuration"
date: 2020-08-14 date: 2020-08-14
draft: false draft: false
description: "All the configuration variables available in Congo." description: "All the configuration variables available in Congo."
summary: "Discover all the site, language and theme configurations that are available in Congo and how they can be used to customise your project."
slug: "configuration" slug: "configuration"
tags: ["config", "docs"] tags: ["config", "docs"]
--- ---
@ -59,6 +60,7 @@ The theme currently supports the following languages out of the box:
| :de: German | `de` | | :de: German | `de` |
| :israel: Hebrew | `he` | | :israel: Hebrew | `he` |
| :hungary: Hungarian | `hu` | | :hungary: Hungarian | `hu` |
| :indonesia: Indonesian | `id` |
| :it: Italian | `it` | | :it: Italian | `it` |
| :jp: Japanese | `ja` | | :jp: Japanese | `ja` |
| :brazil: Portuguese (Brazil) | `pt-br` | | :brazil: Portuguese (Brazil) | `pt-br` |
@ -88,10 +90,11 @@ The default file can be used as a template to create additional languages, or re
|`isoCode`|`"en"`|The ISO language code for HTML metadata purposes. It can be a top-level language (ie. `en`) or a sub-variant (ie. `en-AU`).| |`isoCode`|`"en"`|The ISO language code for HTML metadata purposes. It can be a top-level language (ie. `en`) or a sub-variant (ie. `en-AU`).|
|`weight`|`1`|The weight determines the order of languages when building multilingual sites.| |`weight`|`1`|The weight determines the order of languages when building multilingual sites.|
|`rtl`|`false`|Whether or not this is a RTL language. Set to `true` to reflow content from right-to-left. Congo fully supports using RTL and LTR languages at the same time and will dynamically adjust to both.| |`rtl`|`false`|Whether or not this is a RTL language. Set to `true` to reflow content from right-to-left. Congo fully supports using RTL and LTR languages at the same time and will dynamically adjust to both.|
|`dateFormat`|`"2 January 2006"`|How dates are formatted in this language. Refer to the [Hugo docs](https://gohugo.io/functions/format/#gos-layout-string) for acceptable formats.|
|`title`|`"Congo"`|The title of the website. This will be displayed in the site header and footer.| |`title`|`"Congo"`|The title of the website. This will be displayed in the site header and footer.|
|`description`|_Not set_|The website description. This will be used in the site metadata.| |`description`|_Not set_|The website description. This will be used in the site metadata.|
|`copyright`|_Not set_|A Markdown string containing the copyright message to be displayed in the site footer. If none is provided, Congo will automatically generate a copyright string using the site `title`.| |`copyright`|_Not set_|A Markdown string containing the copyright message to be displayed in the site footer. If none is provided, Congo will automatically generate a copyright string using the site `title`.|
|`dateFormat`|`"2 January 2006"`|How dates are formatted in this language. Refer to the [Hugo docs](https://gohugo.io/functions/format/#gos-layout-string) for acceptable formats.|
|`params.mainSections`|_Not set_|The sections that should be displayed in the recent articles list. If not provided the section with the greatest number of articles is used.|
|`author.name`|_Not set_|The author's name. This will be displayed in article footers, and on the homepage when the profile layout is used.| |`author.name`|_Not set_|The author's name. This will be displayed in article footers, and on the homepage when the profile layout is used.|
|`author.image`|_Not set_|Path to the image file of the author. The image should be a 1:1 aspect ratio and placed in the site's `assets/` folder.| |`author.image`|_Not set_|Path to the image file of the author. The image should be a 1:1 aspect ratio and placed in the site's `assets/` folder.|
|`author.headline`|_Not set_|A Markdown string containing the author's headline. It will be displayed on the profile homepage under the author's name.| |`author.headline`|_Not set_|A Markdown string containing the author's headline. It will be displayed on the profile homepage under the author's name.|
@ -116,12 +119,11 @@ Many of the article defaults here can be overridden on a per article basis by sp
<!-- prettier-ignore-start --> <!-- prettier-ignore-start -->
|Name|Default|Description| |Name|Default|Description|
|---|---|---| |---|---|---|
|`colorScheme`|`"congo"`|The theme colour scheme to use. Valid values are `congo` (default), `avocado`, `ocean`, `fire` and `slate`. Refer to the [Colour Schemes]({{< ref "getting-started#colour-schemes" >}}) section for more details.| |`colorScheme`|`"congo"`|The theme colour scheme to use. Valid values are `congo` (default), `avocado`, `cherry`, `fire`, `ocean`, `sapphire` and `slate`. Refer to the [Colour Schemes]({{< ref "getting-started#colour-schemes" >}}) section for more details.|
|`defaultAppearance`|`"light"`|The default theme appearance, either `light` or `dark`.| |`defaultAppearance`|`"light"`|The default theme appearance, either `light` or `dark`.|
|`autoSwitchAppearance`|`true`|Whether the theme appearance automatically switches based upon the visitor's operating system preference. Set to `false` to force the site to always use the `defaultAppearance`.| |`autoSwitchAppearance`|`true`|Whether the theme appearance automatically switches based upon the visitor's operating system preference. Set to `false` to force the site to always use the `defaultAppearance`.|
|`enableSearch`|`false`|Whether site search is enabled. Set to `true` to enable search functionality. Note that the search feature depends on the `outputs.home` setting in the [site configuration](#site-configuration) being set correctly.| |`enableSearch`|`false`|Whether site search is enabled. Set to `true` to enable search functionality. Note that the search feature depends on the `outputs.home` setting in the [site configuration](#site-configuration) being set correctly.|
|`enableCodeCopy`|`false`|Whether copy-to-clipboard buttons are enabled for `<code>` blocks. The `highlight.noClasses` parameter must be set to `false` for code copy to function correctly. Read more about [other configuration files](#other-configuration-files) below.| |`enableCodeCopy`|`false`|Whether copy-to-clipboard buttons are enabled for `<code>` blocks. The `highlight.noClasses` parameter must be set to `false` for code copy to function correctly. Read more about [other configuration files](#other-configuration-files) below.|
|`mainSections`|_Not set_|The sections that should be displayed in the recent articles list. If not provided the section with the greatest number of articles is used.|
|`robots`|_Not set_|String that indicates how robots should handle your site. If set, it will be output in the page head. Refer to [Google's docs](https://developers.google.com/search/docs/advanced/robots/robots_meta_tag#directives) for valid values.| |`robots`|_Not set_|String that indicates how robots should handle your site. If set, it will be output in the page head. Refer to [Google's docs](https://developers.google.com/search/docs/advanced/robots/robots_meta_tag#directives) for valid values.|
|`header.layout`|`"basic"`|The layout of the page header and menu. Valid values are `basic`, `hamburger`, `hybrid` or `custom`. When set to `custom`, you must provide your own layout by creating a `/layouts/partials/header/custom.html` file.| |`header.layout`|`"basic"`|The layout of the page header and menu. Valid values are `basic`, `hamburger`, `hybrid` or `custom`. When set to `custom`, you must provide your own layout by creating a `/layouts/partials/header/custom.html` file.|
|`header.logo`|_Not set_|The relative path to the site logo file within the `assets/` folder. The logo file should be provided at 2x resolution and supports any image dimensions.| |`header.logo`|_Not set_|The relative path to the site logo file within the `assets/` folder. The logo file should be provided at 2x resolution and supports any image dimensions.|
@ -132,6 +134,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
|`footer.showScrollToTop`|`true`|When set to `true` the scroll to top arrow is displayed.| |`footer.showScrollToTop`|`true`|When set to `true` the scroll to top arrow is displayed.|
|`homepage.layout`|`"page"`|The layout of the homepage. Valid values are `page`, `profile` or `custom`. When set to `custom`, you must provide your own layout by creating a `/layouts/partials/home/custom.html` file. Refer to the [Homepage Layout]({{< ref "homepage-layout" >}}) section for more details.| |`homepage.layout`|`"page"`|The layout of the homepage. Valid values are `page`, `profile` or `custom`. When set to `custom`, you must provide your own layout by creating a `/layouts/partials/home/custom.html` file. Refer to the [Homepage Layout]({{< ref "homepage-layout" >}}) section for more details.|
|`homepage.showRecent`|`false`|Whether or not to display the recent articles list on the homepage.| |`homepage.showRecent`|`false`|Whether or not to display the recent articles list on the homepage.|
|`homepage.recentLimit`|`5`|The maximum number of recent articles to display when `homepage.showRecent` is `true`.|
|`article.showDate`|`true`|Whether or not article dates are displayed.| |`article.showDate`|`true`|Whether or not article dates are displayed.|
|`article.showDateUpdated`|`false`|Whether or not the dates articles were updated are displayed.| |`article.showDateUpdated`|`false`|Whether or not the dates articles were updated are displayed.|
|`article.showAuthor`|`true`|Whether or not the author box is displayed in the article footer.| |`article.showAuthor`|`true`|Whether or not the author box is displayed in the article footer.|

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -2,7 +2,8 @@
title: "Content Examples" title: "Content Examples"
date: 2020-08-09 date: 2020-08-09
draft: false draft: false
description: "All the partials available in Congo." description: "Some examples that demonstrate how content should be created and structured."
summary: "It's time to bring everything together with some examples that demonstrate how content should be created and structured."
slug: "content-examples" slug: "content-examples"
tags: ["content", "example"] tags: ["content", "example"]
--- ---

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -3,6 +3,7 @@ title: "Front Matter"
date: 2020-08-12 date: 2020-08-12
draft: false draft: false
description: "All the front matter variables available in Congo." description: "All the front matter variables available in Congo."
summary: "While supporting most Hugo defaults, Congo adds a number of front matter parameters to customise the presentation of individual articles."
slug: "front-matter" slug: "front-matter"
tags: ["front matter", "config", "docs"] tags: ["front matter", "config", "docs"]
--- ---
@ -16,10 +17,18 @@ Front matter parameter default values are inherited from the theme's [base confi
|---|---|---| |---|---|---|
|`title`|_Not set_|The name of the article.| |`title`|_Not set_|The name of the article.|
|`description`|_Not set_|The text description for the article. It is used in the HTML metadata.| |`description`|_Not set_|The text description for the article. It is used in the HTML metadata.|
|`feature`|`"*feature*"`|The text pattern to match the feature image filename for this article.|
|`featureAlt`|`""`|The alternative text description for the feature image.|
|`cover`|`"*cover*"`|The text pattern to match the cover image filename for this article.|
|`coverAlt`|`featureAlt`|The alternative text description for the cover image.|
|`coverCaption`|_Not set_|The figure caption text to be displayed beneath the cover image.|
|`thumbnail`|`"*thumb*"`_|The text pattern to match the thumbnail image filename for this article.|
|`thumbnailAlt`|`featureAlt`|The alternative text description for the thumbnail image.|
|`externalUrl`|_Not set_|If this article is published on a third-party website, the URL to this article. Providing a URL will prevent a content page being generated and any references to this article will link directly to the third-party website.| |`externalUrl`|_Not set_|If this article is published on a third-party website, the URL to this article. Providing a URL will prevent a content page being generated and any references to this article will link directly to the third-party website.|
|`editURL`|`article.editURL`|When `showEdit` is active, the URL for the edit link.| |`editURL`|`article.editURL`|When `showEdit` is active, the URL for the edit link.|
|`editAppendPath`|`article.editAppendPath`|When `showEdit` is active, whether or not the path to the current article should be appended to the URL set at `editURL`.| |`editAppendPath`|`article.editAppendPath`|When `showEdit` is active, whether or not the path to the current article should be appended to the URL set at `editURL`.|
|`groupByYear`|`list.groupByYear`|Whether or not articles are grouped by year on list pages.| |`groupByYear`|`list.groupByYear`|Whether or not articles are grouped by year on list pages.|
|`keywords`|_Not set_|Any keywords that should be included in the article metadata.|
|`menu`|_Not set_|When a value is provided, a link to this article will appear in the named menus. Valid values are `main` or `footer`.| |`menu`|_Not set_|When a value is provided, a link to this article will appear in the named menus. Valid values are `main` or `footer`.|
|`robots`|_Not set_|String that indicates how robots should handle this article. If set, it will be output in the page head. Refer to [Google's docs](https://developers.google.com/search/docs/advanced/robots/robots_meta_tag#directives) for valid values.| |`robots`|_Not set_|String that indicates how robots should handle this article. If set, it will be output in the page head. Refer to [Google's docs](https://developers.google.com/search/docs/advanced/robots/robots_meta_tag#directives) for valid values.|
|`sharingLinks`|`article.sharingLinks`|Which sharing links to display at the end of this article. When not provided, or set to `false` no links will be displayed.| |`sharingLinks`|`article.sharingLinks`|Which sharing links to display at the end of this article. When not provided, or set to `false` no links will be displayed.|

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -2,7 +2,8 @@
title: "Getting Started" title: "Getting Started"
date: 2020-08-15 date: 2020-08-15
draft: false draft: false
description: "All the front matter variables available in Congo." description: "Learn how to get started using the Congo theme."
summary: "This section assumes you have already installed the Congo theme and are ready to start with basic configuration tasks like selecting a colour scheme, menu and content structure."
slug: "getting-started" slug: "getting-started"
tags: ["installation", "docs"] tags: ["installation", "docs"]
--- ---
@ -29,7 +30,7 @@ The next step is to configure the language settings. Although Congo supports mul
Locate the `languages.en.toml` file in the config folder. If your main language is English you can use this file as is. Otherwise, rename it so that it includes the correct language code in the filename. For example, for French, rename the file to `languages.fr.toml`. Locate the `languages.en.toml` file in the config folder. If your main language is English you can use this file as is. Otherwise, rename it so that it includes the correct language code in the filename. For example, for French, rename the file to `languages.fr.toml`.
{{< alert >}} {{< alert >}}
Note that the language code in the language config filename should match the `languageCode` setting in `config.toml`. The language code in the language config filename should match the `languageCode` setting in `config.toml`.
{{< /alert >}} {{< /alert >}}
```toml ```toml
@ -53,7 +54,11 @@ If you need extra detail, further information about each of these configuration
## Colour schemes ## Colour schemes
Congo ships with a number of colour schemes out of the box. To change the scheme, simply set the `colorScheme` theme parameter. Valid options are `congo` (default), `avocado`, `fire`, `ocean` and `slate`. Congo ships with a number of colour schemes out of the box. To change the scheme, simply set the `colorScheme` theme parameter. Valid options are `congo` (default), `avocado`, `cherry`, `fire`, `ocean`, `sapphire` and `slate`.
{{< alert >}}
The `colourScheme` value should be provided in lowercase.
{{< /alert >}}
```toml ```toml
# config/_default/params.toml # config/_default/params.toml
@ -71,6 +76,10 @@ Congo defines a three-colour palette that is used throughout the theme. Each mai
{{< swatches "#78716c" "#84cc16" "#10b981" >}} {{< swatches "#78716c" "#84cc16" "#10b981" >}}
#### Cherry
{{< swatches "#737373" "#f43f5e" "#22c55e" >}}
#### Fire #### Fire
{{< swatches "#78716c" "#f97316" "#f43f5e" >}} {{< swatches "#78716c" "#f97316" "#f43f5e" >}}
@ -79,6 +88,10 @@ Congo defines a three-colour palette that is used throughout the theme. Each mai
{{< swatches "#64748b" "#3b82f6" "#06b6d4" >}} {{< swatches "#64748b" "#3b82f6" "#06b6d4" >}}
#### Sapphire
{{< swatches "#64748b" "#6366f1" "#ec4899" >}}
#### Slate #### Slate
{{< swatches "#6B7280" "#64748b" "#6B7280" >}} {{< swatches "#6B7280" "#64748b" "#6B7280" >}}
@ -170,10 +183,10 @@ When you create a new taxonomy, you will need to adjust the navigation links on
Congo has two menus that can be customised to suit the content and layout of your site. The `main` menu appears in the site header and the `footer` menu appears at the bottom of the page just above the copyright notice. Congo has two menus that can be customised to suit the content and layout of your site. The `main` menu appears in the site header and the `footer` menu appears at the bottom of the page just above the copyright notice.
Both menus are configured in the `menus.en.toml` file. Similarly to the languages config file, if you wish to use another language, rename this file and replace `en` with the language code you wish to use. Both menus are configured in the `menus.en.toml` file. Similarly to the languages config file, if you wish to use another language, rename this file and replace `en` with the language code you wish to use. Menu links will be sorted from lowest to highest `weight`, and then alphabetically by `name`.
```toml ```toml
# config/_default/menus.toml # config/_default/menus.en.toml
[[main]] [[main]]
name = "Blog" name = "Blog"
@ -185,18 +198,45 @@ Both menus are configured in the `menus.en.toml` file. Similarly to the language
pageRef = "topics" pageRef = "topics"
weight = 20 weight = 20
[[main]]
name = "GitHub"
url = "https://github.com/jpanther/congo"
weight = 30
[main.params]
icon = "github"
showName = false
target = "_blank"
[[main]]
identifier = "search"
weight = 99
[main.params]
action = "search"
icon = "search"
[[footer]] [[footer]]
name = "Privacy" name = "Privacy"
url = "https://external-link" pageRef = "privacy"
``` ```
### Basic links
The `name` parameter specifies the text that is used in the menu link. You can also optionally provide a `title` which fills the HTML title attribute for the link. The `name` parameter specifies the text that is used in the menu link. You can also optionally provide a `title` which fills the HTML title attribute for the link.
The `pageRef` parameter allows you to easily reference Hugo content pages and taxonomies. It is the quickest way to configure the menu as you can simply refer to any Hugo content item and it will automatically build the correct link. To link to external URLs, the `url` parameter can be used. The `pageRef` parameter allows you to easily reference Hugo content pages and taxonomies. It is the quickest way to configure the menu as you can simply refer to any Hugo content item and it will automatically build the correct link. To link to external URLs, the `url` parameter can be used.
Menu links will be sorted from lowest to highest `weight`, and then alphabetically by `name`. Further customisation can be achieved through the use of special theme parameters. Providing `params` within a link allows the addition of an `icon`, the ability to toggle the link text with `showName` and to optionally set a `target` for the URL. In the example above, the GitHub link will only display as an icon and will open the link in a new window.
Both menus are completely optional and can be commented out if not required. Use the template provided in the file as a guide. ### Action links
There is a special case for creating menu items for links that take theme actions. These are denoted using the `action` parameter, and a value of the action the link should perform. Action links allow for all the same custom parameters as other links and can be styled with an icon or text name.
There are two valid theme actions:
- `appearance` will create a link to the appearance switcher
- `search` will create a link to the site search
Both menus are completely optional and can be commented out if not required. Use the template provided in the default file as a guide.
## Detailed configuration ## Detailed configuration

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 21 KiB

View File

@ -3,6 +3,7 @@ title: "Homepage Layout"
date: 2020-08-13 date: 2020-08-13
draft: false draft: false
description: "Configuring the homepage layout in the Congo theme." description: "Configuring the homepage layout in the Congo theme."
summary: "Congo provides a fully flexible homepage layout with built-in templates and the ability to provide your own."
slug: "homepage-layout" slug: "homepage-layout"
tags: ["homepage", "layouts", "docs"] tags: ["homepage", "layouts", "docs"]
--- ---

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

@ -3,6 +3,7 @@ title: "Hosting & Deployment"
date: 2020-08-07 date: 2020-08-07
draft: false draft: false
description: "Learn how to deploy a Congo site." description: "Learn how to deploy a Congo site."
summary: "Congo is designed to be flexible in almost any deployment scenario. Learn more about how to deploy your project to some common hosting platforms."
slug: "hosting-deployment" slug: "hosting-deployment"
tags: ["hosting", "deployment", "docs", "github", "netlify", "render"] tags: ["hosting", "deployment", "docs", "github", "netlify", "render"]
--- ---
@ -95,15 +96,15 @@ Then in the root of your site repository, create a `netlify.toml` file:
[build.environment] [build.environment]
NODE_ENV = "production" NODE_ENV = "production"
GO_VERSION = "1.16" GO_VERSION = "1.19"
TZ = "UTC" # Set to preferred timezone TZ = "UTC" # Set to preferred timezone
[context.production.environment] [context.production.environment]
HUGO_VERSION = "0.105.0" HUGO_VERSION = "0.109.0"
HUGO_ENV = "production" HUGO_ENV = "production"
[context.deploy-preview.environment] [context.deploy-preview.environment]
HUGO_VERSION = "0.105.0" HUGO_VERSION = "0.109.0"
``` ```
This configuration assumes you are deploying Congo as a Hugo module. If you have installed the theme using another method, change the build command to simply `hugo --gc --minify -b $URL`. This configuration assumes you are deploying Congo as a Hugo module. If you have installed the theme using another method, change the build command to simply `hugo --gc --minify -b $URL`.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

@ -3,6 +3,7 @@ title: "Installation"
date: 2020-08-16 date: 2020-08-16
draft: false draft: false
description: "How to install the Congo theme." description: "How to install the Congo theme."
summary: "Learn how to get up and running using Hugo and Congo from a completely blank state. It's the best place to start if you're a new user."
slug: "installation" slug: "installation"
tags: ["installation", "docs"] tags: ["installation", "docs"]
--- ---

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

@ -3,6 +3,7 @@ title: "Partials"
date: 2020-08-10 date: 2020-08-10
draft: false draft: false
description: "All the partials available in Congo." description: "All the partials available in Congo."
summary: "Partials are used to add special functionality to the theme including analytics, comments, favicons, custom scripts and more."
slug: "partials" slug: "partials"
tags: ["partials", "analytics", "privacy", "comments", "favicons", "icon", "docs"] tags: ["partials", "analytics", "privacy", "comments", "favicons", "icon", "docs"]
--- ---

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.6 KiB

View File

@ -3,6 +3,7 @@ title: "Shortcodes"
date: 2020-08-11 date: 2020-08-11
draft: false draft: false
description: "All the shortcodes available in Congo." description: "All the shortcodes available in Congo."
summary: Congo includes several shortcodes for adding rich content to articles including images, charts, diagrams, buttons and more.
slug: "shortcodes" slug: "shortcodes"
tags: ["shortcodes", "mermaid", "icon", "lead", "docs"] tags: ["shortcodes", "mermaid", "icon", "lead", "docs"]
--- ---

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -3,6 +3,7 @@ title: "What's New in 2.0 ✨"
date: 2022-01-19 date: 2022-01-19
draft: false draft: false
description: "Discover what's new in Congo version 2.0." description: "Discover what's new in Congo version 2.0."
summary: "Version 2 takes Congo to new heights, making the theme even more powerful while still maintaining its lightweight footprint."
tags: ["new", "docs"] tags: ["new", "docs"]
--- ---

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 13 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 75 KiB

View File

@ -3,6 +3,8 @@ title: "Rich Content"
date: 2019-03-10 date: 2019-03-10
description: "A brief description of Hugo Shortcodes" description: "A brief description of Hugo Shortcodes"
summary: "This is an _example_ of a **rich** content summary." summary: "This is an _example_ of a **rich** content summary."
coverAlt: "An example cover image depicting icons of some popular media organisations."
coverCaption: "This is an example cover image with a caption."
tags: ["shortcodes", "privacy", "sample", "gist", "twitter", "youtube", "vimeo"] tags: ["shortcodes", "privacy", "sample", "gist", "twitter", "youtube", "vimeo"]
--- ---

Binary file not shown.

Before

Width:  |  Height:  |  Size: 222 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" width="888" height="475.27072" viewBox="0 0 888 475.27072" xmlns:xlink="http://www.w3.org/1999/xlink"><title>true_love</title><rect x="402.54442" y="219.17275" width="2.57298" height="13.89411" transform="translate(-11.71503 -369.44906) rotate(26.64397)" fill="#fff"/><path d="M426.98456,248.842a66.00006,66.00006,0,0,0-93.33814,0l-.01788.01788a65.982,65.982,0,0,0-93.30231,93.30237l-.01788.01788,93.33807,93.33807,93.33814-93.33807A66,66,0,0,0,426.98456,248.842Z" transform="translate(-156 -212.36464)" fill="#ff6584"/><path d="M709.42956,621.81706h-489.679a9.98831,9.98831,0,0,1-1.82989-.145l231.59565-401.157a16.2157,16.2157,0,0,1,28.22705,0L633.17308,489.72253l7.44637,12.8816Z" transform="translate(-156 -212.36464)" fill="#8b5cf6"/><polygon points="553.43 409.452 386.241 409.452 468.314 290.239 474.22 281.652 477.173 277.358 484.619 290.239 553.43 409.452" opacity="0.2"/><path d="M982.07935,621.36464H558.54722l82.07223-119.21293,5.9062-8.58777L753.47313,338.20663c7.01145-10.182,23.87881-10.81607,32.12223-1.92044a19.328,19.328,0,0,1,1.54006,1.92044Z" transform="translate(-156 -212.36464)" fill="#3f3d56"/><rect y="407.93322" width="888" height="2.24072" fill="#3f3d56"/><ellipse cx="570.05705" cy="586.26729" rx="32.34192" ry="10.15313" transform="translate(-329.28848 33.15083) rotate(-21.1763)" fill="#2f2e41"/><circle cx="349.2698" cy="382.74826" r="64.68385" fill="#2f2e41"/><rect x="319.79361" y="433.51279" width="19.65079" height="35.20766" fill="#2f2e41"/><rect x="359.09519" y="433.51279" width="19.65079" height="35.20766" fill="#2f2e41"/><ellipse cx="336.16927" cy="469.12985" rx="16.37566" ry="6.14087" fill="#2f2e41"/><ellipse cx="375.47085" cy="468.31107" rx="16.37566" ry="6.14087" fill="#2f2e41"/><circle cx="350.90736" cy="366.3726" r="22.10714" fill="#fff"/><circle cx="350.90736" cy="366.3726" r="7.36905" fill="#3f3d56"/><path d="M442.52428,534.95878c-5.22292-23.39065,11.47266-47.02591,37.29064-52.79083s50.9816,8.52354,56.20452,31.91418-11.88759,32.01752-37.70556,37.78245S447.74721,558.34942,442.52428,534.95878Z" transform="translate(-156 -212.36464)" fill="#e6e6e6"/><ellipse cx="440.41422" cy="603.0993" rx="32.34192" ry="10.15313" transform="translate(-453.46127 275.69894) rotate(-45)" fill="#2f2e41"/><path d="M473.49729,618.44821c0,6.33082,16.30083,18.832,34.38888,18.832s35.04764-17.82327,35.04764-24.15409-16.95958,1.22817-35.04764,1.22817S473.49729,612.11739,473.49729,618.44821Z" transform="translate(-156 -212.36464)" fill="#fff"/><ellipse cx="623.94295" cy="586.26729" rx="10.15313" ry="32.34192" transform="translate(-304.12811 743.93025) rotate(-68.8237)" fill="#2f2e41"/><circle cx="532.7302" cy="382.74826" r="64.68385" fill="#2f2e41"/><rect x="698.5556" y="645.87743" width="19.65079" height="35.20766" transform="translate(1260.76198 1114.59789) rotate(-180)" fill="#2f2e41"/><rect x="659.25402" y="645.87743" width="19.65079" height="35.20766" transform="translate(1182.15883 1114.59789) rotate(-180)" fill="#2f2e41"/><ellipse cx="545.83073" cy="469.12985" rx="16.37566" ry="6.14087" fill="#2f2e41"/><ellipse cx="506.52915" cy="468.31107" rx="16.37566" ry="6.14087" fill="#2f2e41"/><circle cx="531.09264" cy="366.3726" r="22.10714" fill="#fff"/><circle cx="531.09264" cy="366.3726" r="7.36905" fill="#3f3d56"/><path d="M751.47572,534.95878c5.22292-23.39065-11.47266-47.02591-37.29064-52.79083s-50.9816,8.52354-56.20452,31.91418,11.88759,32.01752,37.70556,37.78245S746.25279,558.34942,751.47572,534.95878Z" transform="translate(-156 -212.36464)" fill="#8b5cf6"/><ellipse cx="753.58578" cy="603.0993" rx="10.15313" ry="32.34192" transform="translate(-361.73544 497.14467) rotate(-45)" fill="#2f2e41"/><path d="M720.50271,618.44821c0,6.33082-16.30083,18.832-34.38888,18.832s-35.04764-17.82327-35.04764-24.15409,16.95958,1.22817,35.04764,1.22817S720.50271,612.11739,720.50271,618.44821Z" transform="translate(-156 -212.36464)" fill="#fff"/><path d="M1044,527.22724c0,41.80115-24.85012,56.39655-55.5043,56.39655s-55.5043-14.5954-55.5043-56.39655,55.5043-94.97881,55.5043-94.97881S1044,485.42608,1044,527.22724Z" transform="translate(-156 -212.36464)" fill="#e6e6e6"/><polygon points="830.474 364.865 831.042 329.881 854.699 286.601 831.131 324.393 831.387 308.663 847.691 277.35 831.454 304.5 831.454 304.5 831.914 276.209 849.373 251.28 831.986 271.76 832.273 219.884 830.469 288.559 830.617 285.726 812.866 258.555 830.332 291.164 828.678 322.761 828.629 321.922 808.166 293.329 828.567 324.885 828.36 328.836 828.323 328.896 828.34 329.22 824.144 409.383 829.751 409.383 830.423 367.977 850.775 336.499 830.474 364.865" fill="#3f3d56"/></svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@ -12,11 +12,13 @@ showEdit: false
--- ---
{{< lead >}} {{< lead >}}
Real websites that are built with Congo. Real websites that have been built using Congo.
{{< /lead >}} {{< /lead >}}
The list below is just a handful of the websites that are built using the Congo theme. Check them out to discover some great exampels of what the theme can do.
| Website | Details | | Website | Details |
| ---------------------------------------------------------------------- | ---------------------------- | | ---------------------------------------------------------------------- | ----------------------------- |
| [jamespanther.com](https://jamespanther.com) | Personal site - Theme author | | [jamespanther.com](https://jamespanther.com) | Personal site - Theme author |
| [antoinesoetewey.com](https://antoinesoetewey.com/) | Personal site | | [antoinesoetewey.com](https://antoinesoetewey.com/) | Personal site |
| [leif.io](https://leif.io/) | Personal site and Tech blog | | [leif.io](https://leif.io/) | Personal site and Tech blog |
@ -48,5 +50,12 @@ Real websites that are built with Congo.
| [bayas.dev](https://bayas.dev) | Personal site and Blog | | [bayas.dev](https://bayas.dev) | Personal site and Blog |
| [顾宇的博客](https://www.guyu.me/) | Personal Blog (in Chinese) | | [顾宇的博客](https://www.guyu.me/) | Personal Blog (in Chinese) |
| [cgutierr-zgz.github.io](https://cgutierr-zgz.github.io/) | Personal site and Tech blog | | [cgutierr-zgz.github.io](https://cgutierr-zgz.github.io/) | Personal site and Tech blog |
| [adam.sr](https://adam.sr) | Personal site and Blog |
| [datadi.murgi.org](https://datadi.murgi.org) | Personal site and Blog |
| [shim.web.id](https://shim.web.id) | Personal Blog (in Indonesian) |
| [kpavlov.me](https://kpavlov.me) | Personal site and Blog |
| [pfisterer.dev](https://pfisterer.dev) | Personal site and Blog |
| [davidrothera.me](https://davidrothera.me) | Personal site and Blog |
| [ethantroy.com](https://ethantroy.com) | Personal Site and Blog |
**Congo user?** To add your site to this list, [submit a pull request](https://github.com/jpanther/congo/blob/dev/exampleSite/content/users.md). **Congo user?** To add your site to this list, [submit a pull request](https://github.com/jpanther/congo/blob/dev/exampleSite/content/users.md).

View File

@ -1,14 +1,14 @@
<div class="flex justify-between"> <div class="flex justify-between">
<span <span
class="w-full py-6 mr-3 rounded-md" class="w-full py-6 mr-2 rounded-md"
{{ with .Get 0 }}style="background-color: {{ . }}"{{ end }} {{ with .Get 0 }}style="background-color: {{ . }}"{{ end }}
></span> ></span>
<span <span
class="w-full py-6 mr-3 rounded-md" class="w-full py-6 mr-2 rounded-md"
{{ with .Get 1 }}style="background-color: {{ . }}"{{ end }} {{ with .Get 1 }}style="background-color: {{ . }}"{{ end }}
></span> ></span>
<span <span
class="w-full py-6 mr-3 rounded-md" class="w-full py-6 mr-2 rounded-md"
{{ with .Get 2 }}style="background-color: {{ . }}"{{ end }} {{ with .Get 2 }}style="background-color: {{ . }}"{{ end }}
></span> ></span>
</div> </div>

View File

@ -47,6 +47,7 @@ sharing:
email: "ইমেল করুন" email: "ইমেল করুন"
facebook: "ফেসবুকে শেয়ার করুন" facebook: "ফেসবুকে শেয়ার করুন"
linkedin: "লিংকডইনে শেয়ার করুন" linkedin: "লিংকডইনে শেয়ার করুন"
# mastodon: "Toot on Mastodon"
pinterest: "পিন্টারেস্টে পিন করুন" pinterest: "পিন্টারেস্টে পিন করুন"
reddit: "রেড্ডিটে জমা দিন" reddit: "রেড্ডিটে জমা দিন"
twitter: "ট্যুইট করুন" twitter: "ট্যুইট করুন"

View File

@ -47,6 +47,7 @@ sharing:
email: "Per E-Mail teilen" email: "Per E-Mail teilen"
facebook: "Auf Facebook teilen" facebook: "Auf Facebook teilen"
linkedin: "Auf LinkedIn teilen" linkedin: "Auf LinkedIn teilen"
# mastodon: "Toot on Mastodon"
pinterest: "Auf Pinterest pinnen" pinterest: "Auf Pinterest pinnen"
reddit: "An Reddit senden" reddit: "An Reddit senden"
twitter: "Auf Twitter teilen" twitter: "Auf Twitter teilen"

View File

@ -47,6 +47,7 @@ sharing:
email: "Send via email" email: "Send via email"
facebook: "Share on Facebook" facebook: "Share on Facebook"
linkedin: "Share on LinkedIn" linkedin: "Share on LinkedIn"
mastodon: "Toot on Mastodon"
pinterest: "Pin on Pinterest" pinterest: "Pin on Pinterest"
reddit: "Submit to Reddit" reddit: "Submit to Reddit"
twitter: "Tweet on Twitter" twitter: "Tweet on Twitter"

View File

@ -47,6 +47,7 @@ sharing:
email: "Enviar vía email" email: "Enviar vía email"
facebook: "Compartir en Facebook" facebook: "Compartir en Facebook"
linkedin: "Compartir en LinkedIn" linkedin: "Compartir en LinkedIn"
# mastodon: "Toot on Mastodon"
pinterest: "Pinear en Pinterest" pinterest: "Pinear en Pinterest"
reddit: "Publicar en Reddit" reddit: "Publicar en Reddit"
twitter: "Tuitear en Twitter" twitter: "Tuitear en Twitter"

View File

@ -47,6 +47,7 @@ sharing:
email: "Lähetä sähköpostilla" email: "Lähetä sähköpostilla"
facebook: "Jaa Facebookissa" facebook: "Jaa Facebookissa"
linkedin: "Jaa LinkedInissä" linkedin: "Jaa LinkedInissä"
# mastodon: "Toot on Mastodon"
pinterest: "Kiinnitä Pinterestiin" pinterest: "Kiinnitä Pinterestiin"
reddit: "Lähetä Reddittiin" reddit: "Lähetä Reddittiin"
twitter: "Twiittaa Twitterissä" twitter: "Twiittaa Twitterissä"

View File

@ -47,6 +47,7 @@ sharing:
email: "Envoyer par email" email: "Envoyer par email"
facebook: "Poster sur Facebook" facebook: "Poster sur Facebook"
linkedin: "Poster sur LinkedIn" linkedin: "Poster sur LinkedIn"
# mastodon: "Toot on Mastodon"
pinterest: "Poster sur Pinterest" pinterest: "Poster sur Pinterest"
reddit: "Poster sur Reddit" reddit: "Poster sur Reddit"
twitter: "Tweeter" twitter: "Tweeter"

View File

@ -47,6 +47,7 @@ sharing:
email: "שליחת אימייל" email: "שליחת אימייל"
facebook: "שיתוף בפייסבוק" facebook: "שיתוף בפייסבוק"
linkedin: "שיתוף בלינקדאין" linkedin: "שיתוף בלינקדאין"
# mastodon: "Toot on Mastodon"
pinterest: "שיתוף בפינטרסט" pinterest: "שיתוף בפינטרסט"
reddit: "שליחה לרדיט" reddit: "שליחה לרדיט"
twitter: "ציוץ בטוויטר" twitter: "ציוץ בטוויטר"

View File

@ -47,6 +47,7 @@ sharing:
email: "Küldés emailben" email: "Küldés emailben"
facebook: "Megosztás a Facebookon" facebook: "Megosztás a Facebookon"
linkedin: "Megosztás a LinkedInen" linkedin: "Megosztás a LinkedInen"
# mastodon: "Toot on Mastodon"
pinterest: "Megosztás a Pinteresten" pinterest: "Megosztás a Pinteresten"
reddit: "Megosztás a Redditen" reddit: "Megosztás a Redditen"
twitter: "Megosztás a Twitteren" twitter: "Megosztás a Twitteren"

56
i18n/id.yaml 100644
View File

@ -0,0 +1,56 @@
article:
anchor_label: "Anchor"
date: "{{ .Date }}"
date_updated: "Diperbarui: {{ .Date }}"
draft: "Draft"
edit_title: "Edit konten"
reading_time:
one: "{{ .Count }} menit"
other: "{{ .Count }} menit"
reading_time_title: "Waktu membaca"
table_of_contents: "Daftar isi"
word_count:
one: "{{ .Count }} kata"
other: "{{ .Count }} kata"
author:
byline_title: "Penulis"
code:
copy: "Salin"
copied: "Disalin"
error:
404_title: "Halaman Tidak Ditemukan :confused:"
404_error: "Kesalahan 404"
404_description: "Tampaknya halaman yang Anda minta tidak ada."
footer:
dark_appearance: "Beralih ke tampilan gelap"
light_appearance: "Beralih ke tampilan terang"
powered_by: "Dipersembahkan oleh {{ .Hugo }} &amp; {{ .Congo }}"
list:
externalurl_title: "Tautan ke situs eksternal"
no_articles: "Belum ada artikel untuk dicantumkan di sini."
nav:
scroll_to_top_title: "Gulir ke atas"
skip_to_main: "Lewati ke konten utama"
search:
open_button_title: "Cari (/)"
close_button_title: "Tutup (Esc)"
input_placeholder: "Pencarian"
sharing:
email: "Kirim lewat surel"
facebook: "Bagikan ke Facebook"
linkedin: "Bagikan ke LinkedIn"
mastodon: "Toot di Mastodon"
pinterest: "Pin di Pinterest"
reddit: "Kirim ke Reddit"
twitter: "Tweet di Twitter"
shortcode:
recent_articles: "Terbaru"

View File

@ -47,6 +47,7 @@ sharing:
email: "Invia tramite email" email: "Invia tramite email"
facebook: "Condividi su Facebook" facebook: "Condividi su Facebook"
linkedin: "Condividi su LinkedIn" linkedin: "Condividi su LinkedIn"
# mastodon: "Toot on Mastodon"
pinterest: "Pinna su Pinterest" pinterest: "Pinna su Pinterest"
reddit: "Invia a Reddit" reddit: "Invia a Reddit"
twitter: "Tweetta su Twitter" twitter: "Tweetta su Twitter"

View File

@ -47,6 +47,7 @@ sharing:
email: " Eメールを送る" email: " Eメールを送る"
facebook: "Facebookでシェアする" facebook: "Facebookでシェアする"
linkedin: "LinkedInでシェアする" linkedin: "LinkedInでシェアする"
# mastodon: "Toot on Mastodon"
pinterest: "Pinterestでピンする" pinterest: "Pinterestでピンする"
reddit: "Redditに投稿する" reddit: "Redditに投稿する"
twitter: "Twitterに投稿する" twitter: "Twitterに投稿する"

View File

@ -47,6 +47,7 @@ sharing:
email: "Verstuur via email" email: "Verstuur via email"
facebook: "Deel op Facebook" facebook: "Deel op Facebook"
linkedin: "Deel op LinkedIn" linkedin: "Deel op LinkedIn"
# mastodon: "Toot on Mastodon"
pinterest: "Pin op Pinterest" pinterest: "Pin op Pinterest"
reddit: "Verzend naar Reddit" reddit: "Verzend naar Reddit"
twitter: "Tweet op Twitter" twitter: "Tweet op Twitter"

View File

@ -47,6 +47,7 @@ sharing:
email: "Enviar por email" email: "Enviar por email"
facebook: "Compartilhar pelo Facebook" facebook: "Compartilhar pelo Facebook"
linkedin: "Compartilhar pelo LinkedIn" linkedin: "Compartilhar pelo LinkedIn"
# mastodon: "Toot on Mastodon"
pinterest: "Pin no Pinterest" pinterest: "Pin no Pinterest"
reddit: "Postar no Reddit" reddit: "Postar no Reddit"
twitter: "Tweet no Twitter" twitter: "Tweet no Twitter"

View File

@ -47,6 +47,7 @@ sharing:
email: "Partilhar por email" email: "Partilhar por email"
facebook: "Partilhar pelo Facebook" facebook: "Partilhar pelo Facebook"
linkedin: "Partilhar pelo LinkedIn" linkedin: "Partilhar pelo LinkedIn"
# mastodon: "Toot on Mastodon"
pinterest: "Partilhar no Pinterest" pinterest: "Partilhar no Pinterest"
reddit: "Partilhar no Reddit" reddit: "Partilhar no Reddit"
twitter: "Partilhar no Twitter" twitter: "Partilhar no Twitter"

View File

@ -47,6 +47,7 @@ sharing:
email: "Trimite pe email" email: "Trimite pe email"
facebook: "Postează pe Facebook" facebook: "Postează pe Facebook"
linkedin: "Postează LinkedIn" linkedin: "Postează LinkedIn"
# mastodon: "Toot on Mastodon"
pinterest: "Pune pe Pinterest" pinterest: "Pune pe Pinterest"
reddit: "Postează pe Reddit" reddit: "Postează pe Reddit"
twitter: "Scrie pe Twitter" twitter: "Scrie pe Twitter"

View File

@ -46,6 +46,7 @@ sharing:
email: "Email ile gönder" email: "Email ile gönder"
facebook: "Facebook'ta paylaş" facebook: "Facebook'ta paylaş"
linkedin: "LinkedIn'te paylaş" linkedin: "LinkedIn'te paylaş"
# mastodon: "Toot on Mastodon"
pinterest: "Pinterest'te pinle" pinterest: "Pinterest'te pinle"
reddit: "Reddit'te gönder" reddit: "Reddit'te gönder"
twitter: "Twitter'da Tweetle" twitter: "Twitter'da Tweetle"

View File

@ -46,6 +46,7 @@ sharing:
email: "通过电子邮件发送" email: "通过电子邮件发送"
facebook: "分享到 Facebook" facebook: "分享到 Facebook"
linkedin: "分享到 LinkedIn" linkedin: "分享到 LinkedIn"
# mastodon: "Toot on Mastodon"
pinterest: "钉到 Pinterest" pinterest: "钉到 Pinterest"
reddit: "提交到 Reddit" reddit: "提交到 Reddit"
twitter: "分享到 Twitter" twitter: "分享到 Twitter"

View File

@ -46,6 +46,7 @@ sharing:
email: "以電子郵件發送" email: "以電子郵件發送"
facebook: "分享到 Facebook" facebook: "分享到 Facebook"
linkedin: "分享到 LinkedIn" linkedin: "分享到 LinkedIn"
# mastodon: "Toot on Mastodon"
pinterest: "釘到 Pinterest" pinterest: "釘到 Pinterest"
reddit: "發送到 Reddit" reddit: "發送到 Reddit"
twitter: "推到 Twitter" twitter: "推到 Twitter"

View File

@ -3,8 +3,8 @@
{{ $caption := .Title }} {{ $caption := .Title }}
{{ if findRE "^https?" $url.Scheme }} {{ if findRE "^https?" $url.Scheme }}
<figure> <figure>
<img class="my-0 rounded-md" src="{{ $url.String }}" alt="{{ $altText }}" /> <img class="mx-auto my-0 rounded-md" src="{{ $url.String }}" alt="{{ $altText }}" />
{{ with $caption }}<figcaption>{{ . | markdownify }}</figcaption>{{ end }} {{ with $caption }}<figcaption class="text-center">{{ . | markdownify }}</figcaption>{{ end }}
</figure> </figure>
{{ else }} {{ else }}
{{ $resource := "" }} {{ $resource := "" }}
@ -16,21 +16,29 @@
{{ with $resource }} {{ with $resource }}
<figure> <figure>
<img <img
class="my-0 rounded-md" class="mx-auto my-0 rounded-md"
{{ if eq .MediaType.SubType "svg" }}
src="{{ .RelPermalink }}"
{{ else }}
{{ if lt .Width 660 }}
src="{{ .RelPermalink }}"
{{ else }}
srcset=" srcset="
{{ (.Resize "330x").RelPermalink }} 330w, {{ (.Resize "330x").RelPermalink }} 330w,
{{ (.Resize "660x").RelPermalink }} 660w, {{ (.Resize "660x").RelPermalink }} 660w,
{{ (.Resize "1024x").RelPermalink }} 1024w, {{ (.Resize "1024x").RelPermalink }} 1024w,
{{ (.Resize "1320x").RelPermalink }} 2x" {{ (.Resize "1320x").RelPermalink }} 2x"
src="{{ (.Resize "660x").RelPermalink }}" src="{{ (.Resize "660x").RelPermalink }}"
{{ end }}
{{ end }}
alt="{{ $altText }}" alt="{{ $altText }}"
/> />
{{ with $caption }}<figcaption>{{ . | markdownify }}</figcaption>{{ end }} {{ with $caption }}<figcaption class="text-center">{{ . | markdownify }}</figcaption>{{ end }}
</figure> </figure>
{{ else }} {{ else }}
<figure> <figure>
<img class="my-0 rounded-md" src="{{ $url.String }}" alt="{{ $altText }}" /> <img class="mx-auto my-0 rounded-md" src="{{ $url.String }}" alt="{{ $altText }}" />
{{ with $caption }}<figcaption>{{ . | markdownify }}</figcaption>{{ end }} {{ with $caption }}<figcaption class="text-center">{{ . | markdownify }}</figcaption>{{ end }}
</figure> </figure>
{{ end }} {{ end }}
{{ end }} {{ end }}

View File

@ -1,4 +1,5 @@
{{- partial "partials/functions/warnings.html" .Site -}} {{- partial "partials/functions/warnings.html" .Site -}}
{{- partial "partials/functions/init.html" . -}}
<!DOCTYPE html> <!DOCTYPE html>
<html <html
lang="{{ with .Site.Params.isoCode | default (.Site.LanguageCode | default "en") }} lang="{{ with .Site.Params.isoCode | default (.Site.LanguageCode | default "en") }}

View File

@ -1,7 +1,7 @@
{{ define "main" }} {{ define "main" }}
{{- $images := .Resources.ByType "image" }} {{- $images := .Resources.ByType "image" }}
{{- $cover := $images.GetMatch "*cover*" }} {{- $cover := $images.GetMatch (.Params.cover | default "*cover*") }}
{{- $feature := $images.GetMatch "*feature*" | default $cover }} {{- $feature := $images.GetMatch (.Params.feature | default "*feature*") | default $cover }}
<article> <article>
<header class="max-w-prose"> <header class="max-w-prose">
{{ if .Params.showBreadcrumbs | default (.Site.Params.article.showBreadcrumbs | default false) }} {{ if .Params.showBreadcrumbs | default (.Site.Params.article.showBreadcrumbs | default false) }}
@ -14,15 +14,27 @@
{{ partial "article-meta.html" (dict "context" . "scope" "single") }} {{ partial "article-meta.html" (dict "context" . "scope" "single") }}
</div> </div>
{{ with $feature }} {{ with $feature }}
<div class="prose">
<img <img
class="mb-6 -mt-4 rounded-md" class="mb-6 -mt-4 rounded-md"
srcset=" {{ if eq .MediaType.SubType "svg" }}
{{- (.Resize "330x").RelPermalink }} 330w, src="{{ .RelPermalink }}"
{{- (.Resize "660x").RelPermalink }} 660w, {{ else }}
{{- (.Resize "1024x").RelPermalink }} 1024w, {{ if lt .Width 660 }}
{{- (.Resize "1320x").RelPermalink }} 2x" src="{{ .RelPermalink }}"
{{ else }}
srcset=" {{ (.Resize "330x").RelPermalink }} 330w,
{{ (.Resize "660x").RelPermalink }} 660w, {{ (.Resize "1024x").RelPermalink }}
1024w, {{ (.Resize "1320x").RelPermalink }} 2x"
src="{{ (.Resize "660x").RelPermalink }}" src="{{ (.Resize "660x").RelPermalink }}"
{{ end }}
{{ end }}
alt="{{ $.Params.featureAlt | default $.Params.coverAlt | default "" }}"
/> />
{{ with $.Params.coverCaption }}
<figcaption class="mb-6 -mt-3 text-center">{{ . | markdownify }}</figcaption>
{{ end }}
</div>
{{ end }} {{ end }}
</header> </header>
<section class="flex flex-col max-w-full mt-0 prose dark:prose-invert lg:flex-row"> <section class="flex flex-col max-w-full mt-0 prose dark:prose-invert lg:flex-row">

View File

@ -1,7 +1,7 @@
<article class="flex flex-row mt-6 max-w-prose"> <article class="flex flex-row mt-6 max-w-prose">
{{- $images := $.Resources.ByType "image" }} {{- $images := $.Resources.ByType "image" }}
{{- $thumbnail := $images.GetMatch "*thumb*" }} {{- $thumbnail := $images.GetMatch (.Params.thumbnail | default "*thumb*") }}
{{- $feature := $images.GetMatch "*feature*" | default $thumbnail }} {{- $feature := $images.GetMatch (.Params.feature | default "*feature*") | default $thumbnail }}
{{- with $feature }} {{- with $feature }}
<div class="flex-none pr-4 sm:pr-6 "> <div class="flex-none pr-4 sm:pr-6 ">
<a <a
@ -10,13 +10,19 @@
{{ else }} {{ else }}
{{ $.RelPermalink }} {{ $.RelPermalink }}
{{ end }}" {{ end }}"
aria-label="{{ $.Title | emojify }}"
> >
<img <img
class="w-24 rounded-md sm:w-40" alt="{{ $.Params.featureAlt | default $.Params.thumbnailAlt | default "" }}"
srcset=" {{ if eq .MediaType.SubType "svg" }}
{{- (.Fill "160x120 smart").RelPermalink }} 160w, class="w-24 max-w-[6rem] max-h-[4.5rem] rounded-md sm:max-h-[7.5rem] sm:w-40
{{- (.Fill "320x240 smart").RelPermalink }} 2x" sm:max-w-[10rem]" src="{{ .RelPermalink }}"
{{ else }}
class="w-24 rounded-md sm:w-40" srcset="
{{- (.Fill "160x120 smart").RelPermalink }}
160w, {{- (.Fill "320x240 smart").RelPermalink }} 2x"
src="{{ (.Fill "160x120 smart").RelPermalink }}" src="{{ (.Fill "160x120 smart").RelPermalink }}"
{{ end }}
/> />
</a> </a>
</div> </div>

View File

@ -49,7 +49,7 @@
(and (ne $scope "single") (.Params.showTaxonomies | default (.Site.Params.list.showTaxonomies | default (.Site.Params.article.showTaxonomies | default false)))) (and (ne $scope "single") (.Params.showTaxonomies | default (.Site.Params.list.showTaxonomies | default (.Site.Params.article.showTaxonomies | default false))))
(and (eq $scope "single") (.Params.showTaxonomies | default (.Site.Params.article.showTaxonomies | default false))) (and (eq $scope "single") (.Params.showTaxonomies | default (.Site.Params.article.showTaxonomies | default false)))
}} }}
<div class="my-1 text-xs text-neutral-500 dark:text-neutral-400 "> <div class="my-1 text-xs leading-relaxed text-neutral-500 dark:text-neutral-400 ">
{{ range $taxonomy, $terms := .Site.Taxonomies }} {{ range $taxonomy, $terms := .Site.Taxonomies }}
{{ if (gt (len ($context.GetTerms $taxonomy)) 0) }} {{ if (gt (len ($context.GetTerms $taxonomy)) 0) }}
{{ range $context.GetTerms $taxonomy }} {{ range $context.GetTerms $taxonomy }}

View File

@ -4,6 +4,7 @@
{{ range $name, $url := $links }} {{ range $name, $url := $links }}
<a <a
class="px-1 transition-transform hover:scale-125 hover:text-primary-700 dark:hover:text-primary-400" class="px-1 transition-transform hover:scale-125 hover:text-primary-700 dark:hover:text-primary-400"
style="will-change:transform;"
href="{{ $url }}" href="{{ $url }}"
target="_blank" target="_blank"
aria-label="{{ $name | title }}" aria-label="{{ $name | title }}"

View File

@ -5,14 +5,68 @@
<ul class="flex flex-col list-none sm:flex-row"> <ul class="flex flex-col list-none sm:flex-row">
{{ range .Site.Menus.footer }} {{ range .Site.Menus.footer }}
<li <li
class="mb-1 ltr:text-right rtl:text-left sm:mb-0 ltr:sm:mr-7 ltr:sm:last:mr-0 rtl:sm:ml-7 rtl:sm:last:ml-0" class="mb-1 group ltr:text-right rtl:text-left sm:mb-0 ltr:sm:mr-7 ltr:sm:last:mr-0 rtl:sm:ml-7 rtl:sm:last:ml-0"
> >
{{ if eq .Params.action "search" }}
{{ $.Scratch.Add "searchCount" 1 }}
{{ if $.Site.Params.enableSearch | default false }}
<button
id="search-button-{{ $.Scratch.Get "searchCount" }}"
title="{{ .Title | default (i18n "search.open_button_title") }}"
>
{{ with .Params.icon }}
<span
class="transition-colors group-dark:hover:text-primary-400 group-hover:text-primary-600"
>
{{ partial "icon.html" . }}
</span>
{{ end }}{{ if .Params.showName | default true }}
<span
class="decoration-primary-500 group-hover:underline group-hover:decoration-2 group-hover:underline-offset-2"
>{{ .Name | markdownify | emojify }}</span
>
{{ end }}
</button>
{{ end }}
{{ else if eq .Params.action "appearance" }}
{{ $.Scratch.Add "switchCount" 1 }}
<button
id="appearance-switcher-{{ $.Scratch.Get "switchCount" }}"
type="button"
aria-label="appearance switcher"
>
<span
class="inline transition-colors group-dark:hover:text-primary-400 group-hover:text-primary-600 dark:hidden"
title="{{ i18n "footer.dark_appearance" }}"
>
{{ partial "icon.html" "moon" }}
</span>
<span
class="hidden transition-colors group-dark:hover:text-primary-400 group-hover:text-primary-600 dark:inline"
title="{{ i18n "footer.light_appearance" }}"
>
{{ partial "icon.html" "sun" }}
</span>
</button>
{{ else }}
<a <a
class="decoration-primary-500 hover:underline hover:decoration-2 hover:underline-offset-2"
href="{{ .URL }}" href="{{ .URL }}"
title="{{ .Title }}" title="{{ .Title }}"
>{{ .Name | markdownify | emojify }}</a {{ with .Params.target }}target="{{ . }}"{{ end }}
>{{ with .Params.icon }}
<span
class="transition-colors group-dark:hover:text-primary-400 group-hover:text-primary-600"
> >
{{ partial "icon.html" . }}
</span>
{{ end }}{{ if .Params.showName | default true }}
<span
class="decoration-primary-500 group-hover:underline group-hover:decoration-2 group-hover:underline-offset-2"
>{{ .Name | markdownify | emojify }}</span
>
{{ end }}</a
>
{{ end }}
</li> </li>
{{ end }} {{ end }}
</ul> </ul>
@ -43,14 +97,14 @@
</p> </p>
{{ end }} {{ end }}
</div> </div>
{{/* Appearance switch */}} {{/* Appearance switcher */}}
{{ if .Site.Params.footer.showAppearanceSwitcher | default false }} {{ if .Site.Params.footer.showAppearanceSwitcher | default false }}
<div <div
class="{{ if .Site.Params.footer.showScrollToTop | default true -}} class="{{ if .Site.Params.footer.showScrollToTop | default true -}}
ltr:mr-14 rtl:ml-14 ltr:mr-14 rtl:ml-14
{{- end }} cursor-pointer text-sm text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400" {{- end }} cursor-pointer text-sm text-neutral-700 hover:text-primary-600 dark:text-neutral dark:hover:text-primary-400"
> >
<button id="appearance-switcher" type="button"> <button id="appearance-switcher-0" type="button" aria-label="appearance switcher">
<div <div
class="flex items-center justify-center w-12 h-12 dark:hidden" class="flex items-center justify-center w-12 h-12 dark:hidden"
title="{{ i18n "footer.dark_appearance" }}" title="{{ i18n "footer.dark_appearance" }}"

View File

@ -0,0 +1,2 @@
{{ $.Scratch.Set "searchCount" 0 }}
{{ $.Scratch.Set "switchCount" 0 }}

View File

@ -16,8 +16,8 @@
{{- end }} {{- end }}
{{/* Metadata */}} {{/* Metadata */}}
<meta name="description" content="{{ with .Description }}{{ . }}{{ else }}{{ if .IsPage }}{{ .Summary }}{{ else }}{{ with .Site.Params.description }}{{ . }}{{ end }}{{ end }}{{ end }}" /> <meta name="description" content="{{ with .Description }}{{ . }}{{ else }}{{ if .IsPage }}{{ .Summary }}{{ else }}{{ with .Site.Params.description }}{{ . }}{{ end }}{{ end }}{{ end }}" />
{{ with .Site.Params.keywords -}} {{ with union .Site.Params.keywords .Params.keywords -}}
<meta name="keywords" content="{{ . }}" /> <meta name="keywords" content="{{ delimit . `, `}}" />
{{- end }} {{- end }}
{{ with .Site.Params.robots }} {{ with .Site.Params.robots }}
<meta name="robots" content="{{ . }}" /> <meta name="robots" content="{{ . }}" />

View File

@ -7,30 +7,104 @@
</div> </div>
{{/* Main menu */}} {{/* Main menu */}}
{{ if or .Site.Menus.main (.Site.Params.enableSearch | default false) }} {{ if or .Site.Menus.main (.Site.Params.enableSearch | default false) }}
<ul class="flex list-none flex-col ltr:text-right rtl:text-left sm:flex-row"> <ul class="flex flex-col list-none ltr:text-right rtl:text-left sm:flex-row">
{{ if .Site.Menus.main }} {{ if .Site.Menus.main }}
{{ range .Site.Menus.main }} {{ range .Site.Menus.main }}
<li class="mb-1 sm:mb-0 ltr:sm:mr-7 ltr:sm:last:mr-0 rtl:sm:ml-7 rtl:sm:last:ml-0"> <li
class="mb-1 group sm:mb-0 ltr:sm:mr-7 ltr:sm:last:mr-0 rtl:sm:ml-7 rtl:sm:last:ml-0"
>
{{ if eq .Params.action "search" }}
{{ $.Scratch.Add "searchCount" 1 }}
{{ if $.Site.Params.enableSearch | default false }}
<button
id="search-button-{{ $.Scratch.Get "searchCount" }}"
title="{{ .Title | default (i18n "search.open_button_title") }}"
>
{{ with .Params.icon | default "search" }}
<span
class="transition-colors group-dark:hover:text-primary-400 group-hover:text-primary-600"
>
{{ partial "icon.html" . }}
</span>
{{ end }}{{ if .Params.showName | default true }}
<span
class="decoration-primary-500 group-hover:underline group-hover:decoration-2 group-hover:underline-offset-2"
>{{ .Name | markdownify | emojify }}</span
>
{{ end }}
</button>
{{ end }}
{{ else if eq .Params.action "appearance" }}
{{ $.Scratch.Add "switchCount" 1 }}
<button
id="appearance-switcher-{{ $.Scratch.Get "switchCount" }}"
type="button"
aria-label="appearance switcher"
>
<span
class="inline transition-colors group-dark:hover:text-primary-400 group-hover:text-primary-600 dark:hidden"
title="{{ i18n "footer.dark_appearance" }}"
>
{{ with .Params.icon | default "moon" }}
{{ partial "icon.html" . }}
{{ end }}
{{ if .Params.showName | default true }}
<span
class="decoration-primary-500 group-hover:underline group-hover:decoration-2 group-hover:underline-offset-2"
>{{ .Name | markdownify | emojify }}</span
>
{{ end }}
</span>
<span
class="hidden transition-colors group-dark:hover:text-primary-400 group-hover:text-primary-600 dark:inline"
title="{{ i18n "footer.light_appearance" }}"
>
{{ with .Params.icon | default "sun" }}
{{ partial "icon.html" . }}
{{ end }}
{{ if .Params.showName | default true }}
<span
class="decoration-primary-500 group-hover:underline group-hover:decoration-2 group-hover:underline-offset-2"
>{{ .Name | markdownify | emojify }}</span
>
{{ end }}
</span>
</button>
{{ else }}
<a <a
class="decoration-primary-500 hover:underline hover:decoration-2 hover:underline-offset-2"
href="{{ .URL }}" href="{{ .URL }}"
title="{{ .Title }}" title="{{ .Title }}"
>{{ .Name | markdownify | emojify }}</a {{ with .Params.target }}target="{{ . }}"{{ end }}
>{{ with .Params.icon }}
<span
class="transition-colors group-dark:hover:text-primary-400 group-hover:text-primary-600"
> >
{{ partial "icon.html" . }}
</span>
{{ end }}{{ if .Params.showName | default true }}
<span
class="decoration-primary-500 group-hover:underline group-hover:decoration-2 group-hover:underline-offset-2"
>{{ .Name | markdownify | emojify }}</span
>
{{ end }}</a
>
{{ end }}
</li> </li>
{{ end }} {{ end }}
{{ end }} {{ if and ($.Site.Params.enableSearch | default false) (eq ($.Scratch.Get "searchCount") 0) }}
{{ if .Site.Params.enableSearch | default false }} <li
<li class="ltr:sm:mr-7 ltr:sm:last:mr-0 rtl:sm:ml-7 rtl:sm:last:ml-0"> class="mb-1 group sm:mb-0 ltr:sm:mr-7 ltr:sm:last:mr-0 rtl:sm:ml-7 rtl:sm:last:ml-0"
<button >
id="search-button" <button id="search-button-m0" title="{{ i18n "search.open_button_title" }}">
class="text-base hover:text-primary-600 dark:hover:text-primary-400" <span
title="{{ i18n "search.open_button_title" }}" class="transition-colors group-dark:hover:text-primary-400 group-hover:text-primary-600"
> >
{{ partial "icon.html" "search" }} {{ partial "icon.html" "search" }}
</span>
</button> </button>
</li> </li>
{{ end }} {{ end }}
{{ end }}
</ul> </ul>
{{ end }} {{ end }}
</nav> </nav>

View File

@ -14,10 +14,10 @@
</div> </div>
<div <div
id="menu-wrapper" id="menu-wrapper"
class="invisible fixed inset-0 z-30 m-auto h-screen w-screen cursor-default overflow-auto bg-neutral-100/50 opacity-0 backdrop-blur-sm transition-opacity dark:bg-neutral-900/50" class="fixed inset-0 z-30 invisible w-full h-full m-auto overflow-auto transition-opacity opacity-0 cursor-default bg-neutral-100/50 backdrop-blur-sm dark:bg-neutral-900/50"
> >
<ul <ul
class="mx-auto flex w-full max-w-7xl list-none flex-col overflow-visible px-6 py-6 ltr:text-right rtl:text-left sm:px-14 sm:py-10 sm:pt-10 md:px-24 lg:px-32" class="flex flex-col w-full px-6 py-6 mx-auto overflow-visible list-none max-w-7xl ltr:text-right rtl:text-left sm:px-14 sm:py-10 sm:pt-10 md:px-24 lg:px-32"
> >
<li class="mb-1"> <li class="mb-1">
<span class="cursor-pointer hover:text-primary-600 dark:hover:text-primary-400" <span class="cursor-pointer hover:text-primary-600 dark:hover:text-primary-400"
@ -26,27 +26,97 @@
</li> </li>
{{ if .Site.Menus.main }} {{ if .Site.Menus.main }}
{{ range .Site.Menus.main }} {{ range .Site.Menus.main }}
<li class="mb-1"> <li class="mb-1 group">
{{ if eq .Params.action "search" }}
{{ $.Scratch.Add "searchCount" 1 }}
{{ if $.Site.Params.enableSearch | default false }}
<button
id="search-button-{{ $.Scratch.Get "searchCount" }}"
title="{{ .Title | default (i18n "search.open_button_title") }}"
>
{{ with .Params.icon | default "search" }}
<span
class="transition-colors group-dark:hover:text-primary-400 group-hover:text-primary-600"
>
{{ partial "icon.html" . }}
</span>
{{ end }}{{ if .Params.showName | default true }}
<span
class="decoration-primary-500 group-hover:underline group-hover:decoration-2 group-hover:underline-offset-2"
>{{ .Name | markdownify | emojify }}</span
>
{{ end }}
</button>
{{ end }}
{{ else if eq .Params.action "appearance" }}
{{ $.Scratch.Add "switchCount" 1 }}
<button
id="appearance-switcher-{{ $.Scratch.Get "switchCount" }}"
type="button"
aria-label="appearance switcher"
>
<span
class="inline transition-colors group-dark:hover:text-primary-400 group-hover:text-primary-600 dark:hidden"
title="{{ i18n "footer.dark_appearance" }}"
>
{{ with .Params.icon | default "moon" }}
{{ partial "icon.html" . }}
{{ end }}
{{ if .Params.showName | default true }}
<span
class="decoration-primary-500 group-hover:underline group-hover:decoration-2 group-hover:underline-offset-2"
>{{ .Name | markdownify | emojify }}</span
>
{{ end }}
</span>
<span
class="hidden transition-colors group-dark:hover:text-primary-400 group-hover:text-primary-600 dark:inline"
title="{{ i18n "footer.light_appearance" }}"
>
{{ with .Params.icon | default "sun" }}
{{ partial "icon.html" . }}
{{ end }}
{{ if .Params.showName | default true }}
<span
class="decoration-primary-500 group-hover:underline group-hover:decoration-2 group-hover:underline-offset-2"
>{{ .Name | markdownify | emojify }}</span
>
{{ end }}
</span>
</button>
{{ else }}
<a <a
class="decoration-primary-500 hover:underline hover:decoration-2 hover:underline-offset-2"
href="{{ .URL }}" href="{{ .URL }}"
title="{{ .Title }}" title="{{ .Title }}"
>{{ .Name | markdownify | emojify }}</a {{ with .Params.target }}target="{{ . }}"{{ end }}
>{{ with .Params.icon }}
<span
class="transition-colors group-dark:hover:text-primary-400 group-hover:text-primary-600"
> >
{{ partial "icon.html" . }}
</span>
{{ end }}{{ if .Params.showName | default true }}
<span
class="decoration-primary-500 group-hover:underline group-hover:decoration-2 group-hover:underline-offset-2"
>{{ .Name | markdownify | emojify }}</span
>
{{ end }}</a
>
{{ end }}
</li> </li>
{{ end }} {{ end }}
{{ end }} {{ if and ($.Site.Params.enableSearch | default false) (eq ($.Scratch.Get "searchCount") 0) }}
{{ if .Site.Params.enableSearch | default false }} <li class="mb-1 group">
<li> <button id="search-button-m0" title="{{ i18n "search.open_button_title" }}">
<button <span
id="search-button" class="transition-colors group-dark:hover:text-primary-400 group-hover:text-primary-600"
class="text-base hover:text-primary-600 dark:hover:text-primary-400"
title="{{ i18n "search.open_button_title" }}"
> >
{{ partial "icon.html" "search" }} {{ partial "icon.html" "search" }}
</span>
</button> </button>
</li> </li>
{{ end }} {{ end }}
{{ end }}
</ul> </ul>
</div> </div>
</label> </label>

View File

@ -14,10 +14,10 @@
</div> </div>
<div <div
id="menu-wrapper" id="menu-wrapper"
class="invisible fixed inset-0 z-30 m-auto h-screen w-screen cursor-default overflow-auto bg-neutral-100/50 opacity-0 backdrop-blur-sm transition-opacity dark:bg-neutral-900/50" class="fixed inset-0 z-30 invisible w-full h-full m-auto overflow-auto transition-opacity opacity-0 cursor-default bg-neutral-100/50 backdrop-blur-sm dark:bg-neutral-900/50"
> >
<ul <ul
class="mx-auto flex w-full max-w-7xl list-none flex-col overflow-visible px-6 py-6 ltr:text-right rtl:text-left sm:px-14 sm:py-10 sm:pt-10 md:px-24 lg:px-32" class="flex flex-col w-full px-6 py-6 mx-auto overflow-visible list-none max-w-7xl ltr:text-right rtl:text-left sm:px-14 sm:py-10 sm:pt-10 md:px-24 lg:px-32"
> >
<li class="mb-1"> <li class="mb-1">
<span class="cursor-pointer hover:text-primary-600 dark:hover:text-primary-400" <span class="cursor-pointer hover:text-primary-600 dark:hover:text-primary-400"
@ -26,55 +26,200 @@
</li> </li>
{{ if .Site.Menus.main }} {{ if .Site.Menus.main }}
{{ range .Site.Menus.main }} {{ range .Site.Menus.main }}
<li class="mb-1"> <li class="mb-1 group">
{{ if eq .Params.action "search" }}
{{ $.Scratch.Add "searchCount" 1 }}
{{ if $.Site.Params.enableSearch | default false }}
<button
id="search-button-{{ $.Scratch.Get "searchCount" }}"
title="{{ .Title | default (i18n "search.open_button_title") }}"
>
{{ with .Params.icon | default "search" }}
<span
class="transition-colors group-dark:hover:text-primary-400 group-hover:text-primary-600"
>
{{ partial "icon.html" . }}
</span>
{{ end }}{{ if .Params.showName | default true }}
<span
class="decoration-primary-500 group-hover:underline group-hover:decoration-2 group-hover:underline-offset-2"
>{{ .Name | markdownify | emojify }}</span
>
{{ end }}
</button>
{{ end }}
{{ else if eq .Params.action "appearance" }}
{{ $.Scratch.Add "switchCount" 1 }}
<button
id="appearance-switcher-{{ $.Scratch.Get "switchCount" }}"
type="button"
aria-label="appearance switcher"
>
<span
class="inline transition-colors group-dark:hover:text-primary-400 group-hover:text-primary-600 dark:hidden"
title="{{ i18n "footer.dark_appearance" }}"
>
{{ with .Params.icon | default "moon" }}
{{ partial "icon.html" . }}
{{ end }}
{{ if .Params.showName | default true }}
<span
class="decoration-primary-500 group-hover:underline group-hover:decoration-2 group-hover:underline-offset-2"
>{{ .Name | markdownify | emojify }}</span
>
{{ end }}
</span>
<span
class="hidden transition-colors group-dark:hover:text-primary-400 group-hover:text-primary-600 dark:inline"
title="{{ i18n "footer.light_appearance" }}"
>
{{ with .Params.icon | default "sun" }}
{{ partial "icon.html" . }}
{{ end }}
{{ if .Params.showName | default true }}
<span
class="decoration-primary-500 group-hover:underline group-hover:decoration-2 group-hover:underline-offset-2"
>{{ .Name | markdownify | emojify }}</span
>
{{ end }}
</span>
</button>
{{ else }}
<a <a
class="decoration-primary-500 hover:underline hover:decoration-2 hover:underline-offset-2"
href="{{ .URL }}" href="{{ .URL }}"
title="{{ .Title }}" title="{{ .Title }}"
>{{ .Name | markdownify | emojify }}</a {{ with .Params.target }}target="{{ . }}"{{ end }}
>{{ with .Params.icon }}
<span
class="transition-colors group-dark:hover:text-primary-400 group-hover:text-primary-600"
> >
{{ partial "icon.html" . }}
</span>
{{ end }}{{ if .Params.showName | default true }}
<span
class="decoration-primary-500 group-hover:underline group-hover:decoration-2 group-hover:underline-offset-2"
>{{ .Name | markdownify | emojify }}</span
>
{{ end }}</a
>
{{ end }}
</li> </li>
{{ end }} {{ end }}
{{ end }} {{ if and ($.Site.Params.enableSearch | default false) (eq ($.Scratch.Get "searchCount") 0) }}
{{ if .Site.Params.enableSearch | default false }} <li class="mb-1 group">
<li> <button id="search-button-m0" title="{{ i18n "search.open_button_title" }}">
<button <span
id="search-button-2" class="transition-colors group-dark:hover:text-primary-400 group-hover:text-primary-600"
class="text-base hover:text-primary-600 dark:hover:text-primary-400"
title="{{ i18n "search.open_button_title" }}"
> >
{{ partial "icon.html" "search" }} {{ partial "icon.html" "search" }}
</span>
</button> </button>
</li> </li>
{{ end }} {{ end }}
{{ end }}
</ul> </ul>
</div> </div>
</label> </label>
{{/* Basic menu */}} {{/* Basic menu */}}
<ul class="hidden list-none flex-row ltr:text-right rtl:text-left sm:flex"> <ul class="flex-row hidden list-none ltr:text-right rtl:text-left sm:flex">
{{ if .Site.Menus.main }} {{ if .Site.Menus.main }}
{{ range .Site.Menus.main }} {{ range .Site.Menus.main }}
<li class="mb-1 sm:mb-0 ltr:sm:mr-7 ltr:sm:last:mr-0 rtl:sm:ml-7 rtl:sm:last:ml-0"> <li
class="mb-1 group sm:mb-0 ltr:sm:mr-7 ltr:sm:last:mr-0 rtl:sm:ml-7 rtl:sm:last:ml-0"
>
{{ if eq .Params.action "search" }}
{{ $.Scratch.Add "searchCount" 1 }}
{{ if $.Site.Params.enableSearch | default false }}
<button
id="search-button-{{ $.Scratch.Get "searchCount" }}"
title="{{ .Title | default (i18n "search.open_button_title") }}"
>
{{ with .Params.icon | default "search" }}
<span
class="transition-colors group-dark:hover:text-primary-400 group-hover:text-primary-600"
>
{{ partial "icon.html" . }}
</span>
{{ end }}{{ if .Params.showName | default true }}
<span
class="decoration-primary-500 group-hover:underline group-hover:decoration-2 group-hover:underline-offset-2"
>{{ .Name | markdownify | emojify }}</span
>
{{ end }}
</button>
{{ end }}
{{ else if eq .Params.action "appearance" }}
{{ $.Scratch.Add "switchCount" 1 }}
<button
id="appearance-switcher-{{ $.Scratch.Get "switchCount" }}"
type="button"
aria-label="appearance switcher"
>
<span
class="inline transition-colors group-dark:hover:text-primary-400 group-hover:text-primary-600 dark:hidden"
title="{{ i18n "footer.dark_appearance" }}"
>
{{ with .Params.icon | default "moon" }}
{{ partial "icon.html" . }}
{{ end }}
{{ if .Params.showName | default true }}
<span
class="decoration-primary-500 group-hover:underline group-hover:decoration-2 group-hover:underline-offset-2"
>{{ .Name | markdownify | emojify }}</span
>
{{ end }}
</span>
<span
class="hidden transition-colors group-dark:hover:text-primary-400 group-hover:text-primary-600 dark:inline"
title="{{ i18n "footer.light_appearance" }}"
>
{{ with .Params.icon | default "sun" }}
{{ partial "icon.html" . }}
{{ end }}
{{ if .Params.showName | default true }}
<span
class="decoration-primary-500 group-hover:underline group-hover:decoration-2 group-hover:underline-offset-2"
>{{ .Name | markdownify | emojify }}</span
>
{{ end }}
</span>
</button>
{{ else }}
<a <a
class="decoration-primary-500 hover:underline hover:decoration-2 hover:underline-offset-2"
href="{{ .URL }}" href="{{ .URL }}"
title="{{ .Title }}" title="{{ .Title }}"
>{{ .Name | markdownify | emojify }}</a {{ with .Params.target }}target="{{ . }}"{{ end }}
>{{ with .Params.icon }}
<span
class="transition-colors group-dark:hover:text-primary-400 group-hover:text-primary-600"
> >
{{ partial "icon.html" . }}
</span>
{{ end }}{{ if .Params.showName | default true }}
<span
class="decoration-primary-500 group-hover:underline group-hover:decoration-2 group-hover:underline-offset-2"
>{{ .Name | markdownify | emojify }}</span
>
{{ end }}</a
>
{{ end }}
</li> </li>
{{ end }} {{ end }}
{{ end }} {{ if and ($.Site.Params.enableSearch | default false) (eq ($.Scratch.Get "searchCount") 0) }}
{{ if .Site.Params.enableSearch | default false }} <li
<li class="ltr:sm:mr-7 ltr:sm:last:mr-0 rtl:sm:ml-7 rtl:sm:last:ml-0"> class="mb-1 group sm:mb-0 ltr:sm:mr-7 ltr:sm:last:mr-0 rtl:sm:ml-7 rtl:sm:last:ml-0"
<button >
id="search-button-1" <button id="search-button-m1" title="{{ i18n "search.open_button_title" }}">
class="text-base hover:text-primary-600 dark:hover:text-primary-400" <span
title="{{ i18n "search.open_button_title" }}" class="transition-colors group-dark:hover:text-primary-400 group-hover:text-primary-600"
> >
{{ partial "icon.html" "search" }} {{ partial "icon.html" "search" }}
</span>
</button> </button>
</li> </li>
{{ end }} {{ end }}
{{ end }}
</ul> </ul>
{{ end }} {{ end }}
</nav> </nav>

View File

@ -1,6 +1,6 @@
{{ if .Site.Params.homepage.showRecent | default false }} {{ if .Site.Params.homepage.showRecent | default false }}
<h2 class="mt-8 text-2xl font-extrabold">{{ i18n "shortcode.recent_articles" | emojify }}</h2> <h2 class="mt-8 text-2xl font-extrabold">{{ i18n "shortcode.recent_articles" | emojify }}</h2>
{{ range first 5 (.Paginate (where .Site.RegularPages "Type" "in" .Site.Params.mainSections) 5).Pages }} {{ range first .Site.Params.homepage.recentLimit (.Paginate (where .Site.RegularPages "Type" "in" .Site.Params.mainSections) .Site.Params.homepage.recentLimit).Pages }}
{{ partial "article-link.html" . }} {{ partial "article-link.html" . }}
{{ end }} {{ end }}
{{ end }} {{ end }}

View File

@ -6,11 +6,13 @@
{{ $caption := .Get "caption" }} {{ $caption := .Get "caption" }}
{{ $href := .Get "href" }} {{ $href := .Get "href" }}
{{ $class := .Get "class" }} {{ $class := .Get "class" }}
<figure{{ with $class }} class="{{ . }}"{{ end }}>
{{ with $href }}<a href="{{ . }}">{{ end }}
<img
class="mx-auto my-0 rounded-md"
alt="{{ $altText }}"
{{ if findRE "^https?" $url.Scheme }} {{ if findRE "^https?" $url.Scheme }}
<figure> src="{{ $url.String }}"
<img class="my-0 rounded-md" src="{{ $url.String }}" alt="{{ $altText }}" />
{{ with $caption }}<figcaption>{{ . | markdownify }}</figcaption>{{ end }}
</figure>
{{ else }} {{ else }}
{{ $resource := "" }} {{ $resource := "" }}
{{ if $.Page.Resources.GetMatch ($url.String) }} {{ if $.Page.Resources.GetMatch ($url.String) }}
@ -19,26 +21,26 @@
{{ $resource = resources.Get ($url.String) }} {{ $resource = resources.Get ($url.String) }}
{{ end }} {{ end }}
{{ with $resource }} {{ with $resource }}
<figure {{ with $class }}class="{{ . }}"{{ end }}> {{ if eq .MediaType.SubType "svg" }}
{{ with $href }}<a href="{{ . }}">{{ end }} src="{{ .RelPermalink }}"
<img {{ else }}
class="my-0 rounded-md" {{ if lt .Width 660 }}
src="{{ .RelPermalink }}"
{{ else }}
srcset=" srcset="
{{ (.Resize "330x").RelPermalink }} 330w, {{ (.Resize "330x").RelPermalink }} 330w,
{{ (.Resize "660x").RelPermalink }} 660w, {{ (.Resize "660x").RelPermalink }} 660w,
{{ (.Resize "1024x").RelPermalink }} 1024w, {{ (.Resize "1024x").RelPermalink }} 1024w,
{{ (.Resize "1320x").RelPermalink }} 2x" {{ (.Resize "1320x").RelPermalink }} 2x"
src="{{ (.Resize "660x").RelPermalink }}" src="{{ (.Resize "660x").RelPermalink }}"
alt="{{ $altText }}" {{ end }}
/> {{ end }}
{{ if $href }}</a>{{ end }}
{{ with $caption }}<figcaption>{{ . | markdownify }}</figcaption>{{ end }}
</figure>
{{ else }} {{ else }}
<figure> src="{{ $url.String }}"
<img class="my-0 rounded-md" src="{{ $url.String }}" alt="{{ $altText }}" /> {{ end }}
{{ with $caption }}<figcaption>{{ . | markdownify }}</figcaption>{{ end }} {{ end }}
/>
{{ with $href }}</a>{{ end }}
{{ with $caption }}<figcaption class="text-center">{{ . | markdownify }}</figcaption>{{ end }}
</figure> </figure>
{{ end }} {{ end }}
{{ end }}
{{ end }}

1125
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{ {
"name": "hugo-congo-theme", "name": "hugo-congo-theme",
"version": "2.4.2", "version": "2.5.0",
"description": "Congo theme for Hugo", "description": "Congo theme for Hugo",
"scripts": { "scripts": {
"preinstall": "rimraf assets/lib", "preinstall": "rimraf assets/lib",
@ -8,7 +8,7 @@
"assets": "rimraf assets/lib && vendor-copy", "assets": "rimraf assets/lib && vendor-copy",
"dev": "NODE_ENV=development ./node_modules/tailwindcss/lib/cli.js -i ./assets/css/main.css -o ./assets/css/compiled/main.css --jit -w", "dev": "NODE_ENV=development ./node_modules/tailwindcss/lib/cli.js -i ./assets/css/main.css -o ./assets/css/compiled/main.css --jit -w",
"build": "NODE_ENV=production ./node_modules/tailwindcss/lib/cli.js -i ./assets/css/main.css -o ./assets/css/compiled/main.css --jit", "build": "NODE_ENV=production ./node_modules/tailwindcss/lib/cli.js -i ./assets/css/main.css -o ./assets/css/compiled/main.css --jit",
"example": "hugo server --source exampleSite --themesDir ../.. --buildDrafts -b http://localhost/congo/ -p 8008", "example": "hugo server --bind 0.0.0.0 -p 8008 --source exampleSite --themesDir ../.. --buildDrafts -b http://localhost/congo/ ",
"lighthouse": "lhci autorun" "lighthouse": "lhci autorun"
}, },
"repository": { "repository": {
@ -29,15 +29,15 @@
}, },
"homepage": "https://github.com/jpanther/congo#readme", "homepage": "https://github.com/jpanther/congo#readme",
"devDependencies": { "devDependencies": {
"@tailwindcss/typography": "^0.5.8", "@tailwindcss/typography": "^0.5.9",
"chart.js": "^4.0.1", "chart.js": "^4.1.2",
"fuse.js": "^6.6.2", "fuse.js": "^6.6.2",
"katex": "^0.16.3", "katex": "^0.16.4",
"mermaid": "^9.2.2", "mermaid": "^9.3.0",
"prettier": "^2.7.1", "prettier": "^2.8.3",
"prettier-plugin-go-template": "^0.0.13", "prettier-plugin-go-template": "^0.0.13",
"prettier-plugin-tailwindcss": "^0.1.13", "prettier-plugin-tailwindcss": "^0.2.1",
"rimraf": "^3.0.2", "rimraf": "^4.0.7",
"tailwindcss": "^3.2.4", "tailwindcss": "^3.2.4",
"vendor-copy": "^3.0.1" "vendor-copy": "^3.0.1"
}, },