🔖 Release v2.3.0

pull/775/head v2.3.0
James Panther 2022-06-27 13:18:20 +10:00
commit 38996db9b8
No known key found for this signature in database
GPG Key ID: D36F789E45745D17
24 changed files with 857 additions and 393 deletions

View File

@ -6,6 +6,34 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
## [Unreleased]
## [2.3.0] - 2022-06-27
### Added
- Header layouts for selecting a preferred header style
- Hamburger menu header layout with popover main menu ([#167](https://github.com/jpanther/congo/discussions/167), [#88](https://github.com/jpanther/congo/discussions/88), [#43](https://github.com/jpanther/congo/discussions/43), [#29](https://github.com/jpanther/congo/discussions/29))
- Front matter support for showing or hiding comments on a per article basis ([#207](https://github.com/jpanther/congo/discussions/207))
- `showCopyright` and `showThemeAttribution` parameters that allow more control over how the site footer is displayed ([#192](https://github.com/jpanther/congo/discussions/192))
- `bars` SVG icon
### Changed
- ⚠️ Footer configuration parameters are now in their own `footer` sub-group
- Search will now return results for all page types, including lists and taxonomies
- Comments partials are now better considered within the page layout
- Reduced whitespace at the top of the main content block ([#226](https://github.com/jpanther/congo/discussions/226))
- Upgrade to Tailwind v3.1.4 ([#225](https://github.com/jpanther/congo/pull/225))
### Fixed
- Hugo v0.101.0 breaks the link to the homepage ([#230](https://github.com/jpanther/congo/issues/230))
- Search link does not appear in header if main menu has no items to display
- Search only returns results in the primary language when multiple languages are available ([#229](https://github.com/jpanther/congo/issues/229))
- Arrow on external article links not aligned correctly when title wraps onto multiple lines
- Arrow on external article links points the wrong direction for RTL languages
- Scroll to top misaligned with the footer at small viewport heights
- Link to homepage would be incorrect in some deployments if `baseURL` contained sub-directories in the path
## [2.2.3] - 2022-06-22
### Changed
@ -106,7 +134,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
### Changed
- Upgrade SVG icons to FontAwesome 6:
- New icons for Hashnode, bug, check, comment, light bulb, list, pencil, skull, tag, and information.
- New icons for Hashnode, bug, check, comment, light bulb, list, pencil, skull, tag, and information. ([#136](https://github.com/jpanther/congo/discussions/136))
- ⚠️ The `exclamation-triangle` icon has been renamed `triangle-exclamation`
- ⚠️ The `times` icon has been renamed `xmark`
- ⚠️ The `stackoverflow` icon has been renamed `stack-overflow`
@ -191,7 +219,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
- Site search powered by Fuse.js
- Automatic Markdown image resizing and srcset generation
- Performance and Accessibility improvements to achieve perfect Lighthouse scores
- Tables of contents on article pages
- Tables of contents on article pages ([#47](https://github.com/jpanther/congo/discussions/47))
- Code copy buttons in article content
- Taxonomy and term listings now support Markdown content
- Taxonomies on article and list pages
@ -457,7 +485,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
- Fully documented
[unreleased]: https://github.com/jpanther/congo/compare/v2.2.3...HEAD
[unreleased]: https://github.com/jpanther/congo/compare/v2.3.0...HEAD
[2.3.0]: https://github.com/jpanther/congo/compare/v2.2.3...v2.3.0
[2.2.3]: https://github.com/jpanther/congo/compare/v2.2.2...v2.2.3
[2.2.2]: https://github.com/jpanther/congo/compare/v2.2.1...v2.2.2
[2.2.1]: https://github.com/jpanther/congo/compare/v2.2.0...v2.2.1

View File

@ -1,6 +1,6 @@
/*! Congo v2.2.3 | MIT License | https://github.com/jpanther/congo */
/*! Congo v2.3.0 | MIT License | https://github.com/jpanther/congo */
/*! tailwindcss v3.0.24 | MIT License | https://tailwindcss.com */
/*! tailwindcss v3.1.4 | MIT License | https://tailwindcss.com */
/*
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
@ -16,7 +16,7 @@
/* 2 */
border-style: solid;
/* 2 */
border-color: #e5e7eb;
border-color: currentColor;
/* 2 */
}
@ -187,6 +187,8 @@ textarea {
/* 1 */
font-size: 100%;
/* 1 */
font-weight: inherit;
/* 1 */
line-height: inherit;
/* 1 */
color: inherit;
@ -415,15 +417,103 @@ video {
height: auto;
}
/*
Ensure the default browser behavior of the `hidden` attribute.
*/
[hidden] {
display: none;
*, ::before, ::after {
--tw-border-spacing-x: 0;
--tw-border-spacing-y: 0;
--tw-translate-x: 0;
--tw-translate-y: 0;
--tw-rotate: 0;
--tw-skew-x: 0;
--tw-skew-y: 0;
--tw-scale-x: 1;
--tw-scale-y: 1;
--tw-pan-x: ;
--tw-pan-y: ;
--tw-pinch-zoom: ;
--tw-scroll-snap-strictness: proximity;
--tw-ordinal: ;
--tw-slashed-zero: ;
--tw-numeric-figure: ;
--tw-numeric-spacing: ;
--tw-numeric-fraction: ;
--tw-ring-inset: ;
--tw-ring-offset-width: 0px;
--tw-ring-offset-color: #fff;
--tw-ring-color: rgb(59 130 246 / 0.5);
--tw-ring-offset-shadow: 0 0 #0000;
--tw-ring-shadow: 0 0 #0000;
--tw-shadow: 0 0 #0000;
--tw-shadow-colored: 0 0 #0000;
--tw-blur: ;
--tw-brightness: ;
--tw-contrast: ;
--tw-grayscale: ;
--tw-hue-rotate: ;
--tw-invert: ;
--tw-saturate: ;
--tw-sepia: ;
--tw-drop-shadow: ;
--tw-backdrop-blur: ;
--tw-backdrop-brightness: ;
--tw-backdrop-contrast: ;
--tw-backdrop-grayscale: ;
--tw-backdrop-hue-rotate: ;
--tw-backdrop-invert: ;
--tw-backdrop-opacity: ;
--tw-backdrop-saturate: ;
--tw-backdrop-sepia: ;
}
*, ::before, ::after {
::-webkit-backdrop {
--tw-border-spacing-x: 0;
--tw-border-spacing-y: 0;
--tw-translate-x: 0;
--tw-translate-y: 0;
--tw-rotate: 0;
--tw-skew-x: 0;
--tw-skew-y: 0;
--tw-scale-x: 1;
--tw-scale-y: 1;
--tw-pan-x: ;
--tw-pan-y: ;
--tw-pinch-zoom: ;
--tw-scroll-snap-strictness: proximity;
--tw-ordinal: ;
--tw-slashed-zero: ;
--tw-numeric-figure: ;
--tw-numeric-spacing: ;
--tw-numeric-fraction: ;
--tw-ring-inset: ;
--tw-ring-offset-width: 0px;
--tw-ring-offset-color: #fff;
--tw-ring-color: rgb(59 130 246 / 0.5);
--tw-ring-offset-shadow: 0 0 #0000;
--tw-ring-shadow: 0 0 #0000;
--tw-shadow: 0 0 #0000;
--tw-shadow-colored: 0 0 #0000;
--tw-blur: ;
--tw-brightness: ;
--tw-contrast: ;
--tw-grayscale: ;
--tw-hue-rotate: ;
--tw-invert: ;
--tw-saturate: ;
--tw-sepia: ;
--tw-drop-shadow: ;
--tw-backdrop-blur: ;
--tw-backdrop-brightness: ;
--tw-backdrop-contrast: ;
--tw-backdrop-grayscale: ;
--tw-backdrop-hue-rotate: ;
--tw-backdrop-invert: ;
--tw-backdrop-opacity: ;
--tw-backdrop-saturate: ;
--tw-backdrop-sepia: ;
}
::backdrop {
--tw-border-spacing-x: 0;
--tw-border-spacing-y: 0;
--tw-translate-x: 0;
--tw-translate-y: 0;
--tw-rotate: 0;
@ -485,14 +575,14 @@ Ensure the default browser behavior of the `hidden` attribute.
color: var(--tw-prose-links);
text-decoration: underline;
font-weight: 500;
-webkit-text-decoration-color: rgb(var(--color-primary-300));
text-decoration-color: rgb(var(--color-primary-300));
-webkit-text-decoration-color: rgba(var(--color-primary-300), 1);
text-decoration-color: rgba(var(--color-primary-300), 1);
}
.prose :where(a):not(:where([class~="not-prose"] *)):hover {
color: rgb(var(--color-neutral));
color: rgba(var(--color-neutral), 1);
text-decoration: none;
background-color: rgb(var(--color-primary-600));
background-color: rgba(var(--color-primary-600), 1);
border-radius: 0.09rem;
}
@ -742,38 +832,38 @@ Ensure the default browser behavior of the `hidden` attribute.
}
.prose {
--tw-prose-body: rgb(var(--color-neutral-700));
--tw-prose-headings: rgb(var(--color-neutral-800));
--tw-prose-lead: rgb(var(--color-neutral-500));
--tw-prose-links: rgb(var(--color-primary-700));
--tw-prose-bold: rgb(var(--color-neutral-900));
--tw-prose-counters: rgb(var(--color-neutral-800));
--tw-prose-bullets: rgb(var(--color-neutral-500));
--tw-prose-hr: rgb(var(--color-neutral-200));
--tw-prose-quotes: rgb(var(--color-neutral-700));
--tw-prose-quote-borders: rgb(var(--color-primary-200));
--tw-prose-captions: rgb(var(--color-neutral-500));
--tw-prose-code: rgb(var(--color-secondary-700));
--tw-prose-pre-code: rgb(var(--color-neutral-700));
--tw-prose-pre-bg: rgb(var(--color-neutral-50));
--tw-prose-th-borders: rgb(var(--color-neutral-500));
--tw-prose-td-borders: rgb(var(--color-neutral-300));
--tw-prose-invert-body: rgb(var(--color-neutral-300));
--tw-prose-invert-headings: rgb(var(--color-neutral-50));
--tw-prose-invert-lead: rgb(var(--color-neutral-500));
--tw-prose-invert-links: rgb(var(--color-primary-400));
--tw-prose-invert-bold: rgb(var(--color-neutral));
--tw-prose-invert-counters: rgb(var(--color-neutral-400));
--tw-prose-invert-bullets: rgb(var(--color-neutral-600));
--tw-prose-invert-hr: rgb(var(--color-neutral-500));
--tw-prose-invert-quotes: rgb(var(--color-neutral-200));
--tw-prose-invert-quote-borders: rgb(var(--color-primary-900));
--tw-prose-invert-captions: rgb(var(--color-neutral-400));
--tw-prose-invert-code: rgb(var(--color-secondary-400));
--tw-prose-invert-pre-code: rgb(var(--color-neutral-200));
--tw-prose-invert-pre-bg: rgb(var(--color-neutral-700));
--tw-prose-invert-th-borders: rgb(var(--color-neutral-500));
--tw-prose-invert-td-borders: rgb(var(--color-neutral-700));
--tw-prose-body: rgba(var(--color-neutral-700), 1);
--tw-prose-headings: rgba(var(--color-neutral-800), 1);
--tw-prose-lead: rgba(var(--color-neutral-500), 1);
--tw-prose-links: rgba(var(--color-primary-700), 1);
--tw-prose-bold: rgba(var(--color-neutral-900), 1);
--tw-prose-counters: rgba(var(--color-neutral-800), 1);
--tw-prose-bullets: rgba(var(--color-neutral-500), 1);
--tw-prose-hr: rgba(var(--color-neutral-200), 1);
--tw-prose-quotes: rgba(var(--color-neutral-700), 1);
--tw-prose-quote-borders: rgba(var(--color-primary-200), 1);
--tw-prose-captions: rgba(var(--color-neutral-500), 1);
--tw-prose-code: rgba(var(--color-secondary-700), 1);
--tw-prose-pre-code: rgba(var(--color-neutral-700), 1);
--tw-prose-pre-bg: rgba(var(--color-neutral-50), 1);
--tw-prose-th-borders: rgba(var(--color-neutral-500), 1);
--tw-prose-td-borders: rgba(var(--color-neutral-300), 1);
--tw-prose-invert-body: rgba(var(--color-neutral-300), 1);
--tw-prose-invert-headings: rgba(var(--color-neutral-50), 1);
--tw-prose-invert-lead: rgba(var(--color-neutral-500), 1);
--tw-prose-invert-links: rgba(var(--color-primary-400), 1);
--tw-prose-invert-bold: rgba(var(--color-neutral), 1);
--tw-prose-invert-counters: rgba(var(--color-neutral-400), 1);
--tw-prose-invert-bullets: rgba(var(--color-neutral-600), 1);
--tw-prose-invert-hr: rgba(var(--color-neutral-500), 1);
--tw-prose-invert-quotes: rgba(var(--color-neutral-200), 1);
--tw-prose-invert-quote-borders: rgba(var(--color-primary-900), 1);
--tw-prose-invert-captions: rgba(var(--color-neutral-400), 1);
--tw-prose-invert-code: rgba(var(--color-secondary-400), 1);
--tw-prose-invert-pre-code: rgba(var(--color-neutral-200), 1);
--tw-prose-invert-pre-bg: rgba(var(--color-neutral-700), 1);
--tw-prose-invert-th-borders: rgba(var(--color-neutral-500), 1);
--tw-prose-invert-td-borders: rgba(var(--color-neutral-700), 1);
font-size: 1rem;
line-height: 1.75;
}
@ -886,7 +976,7 @@ Ensure the default browser behavior of the `hidden` attribute.
}
.prose :where(kbd):not(:where([class~="not-prose"] *)) {
background-color: rgb(var(--color-neutral-200));
background-color: rgba(var(--color-neutral-200), 1);
padding: 0.1rem 0.4rem;
border-radius: 0.25rem;
font-size: 0.9rem;
@ -894,13 +984,14 @@ Ensure the default browser behavior of the `hidden` attribute.
}
.prose :where(mark):not(:where([class~="not-prose"] *)) {
color: rgb(var(--color-neutral-800));
background-color: rgb(var(--color-secondary-200));
color: rgba(var(--color-neutral-800), 1);
background-color: rgba(var(--color-secondary-200), 1);
padding: 0.1rem 0.2rem;
border-radius: 0.12rem;
}
body a, body button {
body a,
body button {
transition-property: color, background-color, border-color, fill, stroke, -webkit-text-decoration-color;
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, -webkit-text-decoration-color;
@ -917,10 +1008,29 @@ body a, body button {
/* Search */
#search-query::-webkit-search-cancel-button, #search-query::-webkit-search-decoration, #search-query::-webkit-search-results-button, #search-query::-webkit-search-results-decoration {
#search-query::-webkit-search-cancel-button,
#search-query::-webkit-search-decoration,
#search-query::-webkit-search-results-button,
#search-query::-webkit-search-results-decoration {
display: none;
}
/* Hamburger menu */
body:has(#menu-controller:checked) {
position: fixed;
overflow-y: scroll;
}
#menu-button:has(#menu-controller:checked) {
visibility: hidden;
}
#menu-controller:checked ~ #menu-wrapper {
visibility: visible;
opacity: 1;
}
/* RTL support */
[dir="rtl"] .prose blockquote {
@ -929,28 +1039,39 @@ body a, body button {
padding-right: 1rem;
}
[dir="rtl"] .prose ul > li, [dir="rtl"] .prose ol > li {
[dir="rtl"] .prose ul > li, [dir="rtl"]
.prose ol > li {
margin-right: 1.75rem;
padding-left: 0px;
padding-right: 0.5rem;
}
[dir="rtl"] .prose ol > li:before, [dir="rtl"] .prose ul > li:before {
[dir="rtl"] .prose ol > li:before, [dir="rtl"]
.prose ul > li:before {
left: auto;
right: 0.25rem;
}
[dir="rtl"] .prose thead td:first-child, [dir="rtl"] .prose thead th:first-child {
[dir="rtl"] .prose thead td:first-child, [dir="rtl"]
.prose thead th:first-child {
padding-right: 0px;
}
[dir="rtl"] .prose thead td:last-child, [dir="rtl"] .prose thead th:last-child {
[dir="rtl"] .prose thead td:last-child, [dir="rtl"]
.prose thead th:last-child {
padding-left: 0px;
}
/* Adjust first child within prose */
.prose div.min-w-0.max-w-prose > *:first-child {
margin-top: 0.75rem;
}
/* Table of Contents */
.toc ul, .toc li {
.toc ul,
.toc li {
list-style-type: none;
padding-left: 0px;
padding-right: 0px;
@ -1025,12 +1146,18 @@ body a, body button {
color: rgba(var(--color-neutral-200), var(--tw-text-opacity));
}
.copy-button:hover, .copy-button:focus, .copy-button:active, .copy-button:active:hover {
.copy-button:hover,
.copy-button:focus,
.copy-button:active,
.copy-button:active:hover {
--tw-bg-opacity: 1;
background-color: rgba(var(--color-primary-100), var(--tw-bg-opacity));
}
.dark .copy-button:hover, .dark .copy-button:focus, .dark .copy-button:active, .dark .copy-button:active:hover {
.dark .copy-button:hover, .dark
.copy-button:focus, .dark
.copy-button:active, .dark
.copy-button:active:hover {
--tw-bg-opacity: 1;
background-color: rgba(var(--color-primary-600), var(--tw-bg-opacity));
}
@ -1063,7 +1190,8 @@ body a, body button {
/* LineTableTD */
.chroma .lntd, .chroma .lntd pre {
.chroma .lntd,
.chroma .lntd pre {
margin: 0px;
border-style: none;
padding: 0px;
@ -1112,7 +1240,8 @@ body a, body button {
/* LineNumbers */
.chroma .lnt, .chroma .ln {
.chroma .lnt,
.chroma .ln {
margin-right: 0.4em;
padding-left: 0.4em;
padding-right: 0.4em;
@ -1122,7 +1251,8 @@ body a, body button {
color: rgba(var(--color-neutral-600), var(--tw-text-opacity));
}
.dark .chroma .lnt, .dark .chroma .ln {
.dark .chroma .lnt, .dark
.chroma .ln {
--tw-text-opacity: 1;
color: rgba(var(--color-neutral-300), var(--tw-text-opacity));
}
@ -1147,12 +1277,30 @@ body a, body button {
/* Operator */
.chroma .k, .chroma .kd, .chroma .kn, .chroma .kp, .chroma .kr, .chroma .nc, .chroma .fm, .chroma .nn, .chroma .vc, .chroma .o {
.chroma .k,
.chroma .kd,
.chroma .kn,
.chroma .kp,
.chroma .kr,
.chroma .nc,
.chroma .fm,
.chroma .nn,
.chroma .vc,
.chroma .o {
--tw-text-opacity: 1;
color: rgba(var(--color-primary-600), var(--tw-text-opacity));
}
.dark .chroma .k, .dark .chroma .kd, .dark .chroma .kn, .dark .chroma .kp, .dark .chroma .kr, .dark .chroma .nc, .dark .chroma .fm, .dark .chroma .nn, .dark .chroma .vc, .dark .chroma .o {
.dark .chroma .k, .dark
.chroma .kd, .dark
.chroma .kn, .dark
.chroma .kp, .dark
.chroma .kr, .dark
.chroma .nc, .dark
.chroma .fm, .dark
.chroma .nn, .dark
.chroma .vc, .dark
.chroma .o {
--tw-text-opacity: 1;
color: rgba(var(--color-primary-300), var(--tw-text-opacity));
}
@ -1192,12 +1340,32 @@ body a, body button {
/* LiteralNumberOct */
.chroma .kt, .chroma .nv, .chroma .vi, .chroma .vm, .chroma .m, .chroma .mb, .chroma .mf, .chroma .mh, .chroma .mi, .chroma .il, .chroma .mo {
.chroma .kt,
.chroma .nv,
.chroma .vi,
.chroma .vm,
.chroma .m,
.chroma .mb,
.chroma .mf,
.chroma .mh,
.chroma .mi,
.chroma .il,
.chroma .mo {
--tw-text-opacity: 1;
color: rgba(var(--color-secondary-400), var(--tw-text-opacity));
}
.dark .chroma .kt, .dark .chroma .nv, .dark .chroma .vi, .dark .chroma .vm, .dark .chroma .m, .dark .chroma .mb, .dark .chroma .mf, .dark .chroma .mh, .dark .chroma .mi, .dark .chroma .il, .dark .chroma .mo {
.dark .chroma .kt, .dark
.chroma .nv, .dark
.chroma .vi, .dark
.chroma .vm, .dark
.chroma .m, .dark
.chroma .mb, .dark
.chroma .mf, .dark
.chroma .mh, .dark
.chroma .mi, .dark
.chroma .il, .dark
.chroma .mo {
--tw-text-opacity: 1;
color: rgba(var(--color-secondary-600), var(--tw-text-opacity));
}
@ -1210,12 +1378,18 @@ body a, body button {
/* NameLabel */
.chroma .n, .chroma .nd, .chroma .ni, .chroma .nl {
.chroma .n,
.chroma .nd,
.chroma .ni,
.chroma .nl {
--tw-text-opacity: 1;
color: rgba(var(--color-secondary-900), var(--tw-text-opacity));
}
.dark .chroma .n, .dark .chroma .nd, .dark .chroma .ni, .dark .chroma .nl {
.dark .chroma .n, .dark
.chroma .nd, .dark
.chroma .ni, .dark
.chroma .nl {
--tw-text-opacity: 1;
color: rgba(var(--color-secondary-200), var(--tw-text-opacity));
}
@ -1232,12 +1406,22 @@ body a, body button {
/* NameTag */
.chroma .na, .chroma .nb, .chroma .bp, .chroma .nx, .chroma .py, .chroma .nt {
.chroma .na,
.chroma .nb,
.chroma .bp,
.chroma .nx,
.chroma .py,
.chroma .nt {
--tw-text-opacity: 1;
color: rgba(var(--color-secondary-800), var(--tw-text-opacity));
}
.dark .chroma .na, .dark .chroma .nb, .dark .chroma .bp, .dark .chroma .nx, .dark .chroma .py, .dark .chroma .nt {
.dark .chroma .na, .dark
.chroma .nb, .dark
.chroma .bp, .dark
.chroma .nx, .dark
.chroma .py, .dark
.chroma .nt {
--tw-text-opacity: 1;
color: rgba(var(--color-secondary-300), var(--tw-text-opacity));
}
@ -1248,13 +1432,17 @@ body a, body button {
/* NameVariableGlobal */
.chroma .no, .chroma .ne, .chroma .vg {
.chroma .no,
.chroma .ne,
.chroma .vg {
font-weight: 600;
--tw-text-opacity: 1;
color: rgba(var(--color-secondary-400), var(--tw-text-opacity));
}
.dark .chroma .no, .dark .chroma .ne, .dark .chroma .vg {
.dark .chroma .no, .dark
.chroma .ne, .dark
.chroma .vg {
--tw-text-opacity: 1;
color: rgba(var(--color-secondary-500), var(--tw-text-opacity));
}
@ -1303,12 +1491,42 @@ body a, body button {
/* GenericPrompt */
.chroma .l, .chroma .ld, .chroma .s, .chroma .sa, .chroma .sb, .chroma .sc, .chroma .dl, .chroma .sd, .chroma .s2, .chroma .sh, .chroma .si, .chroma .sx, .chroma .s1, .chroma .gi, .chroma .go, .chroma .gp {
.chroma .l,
.chroma .ld,
.chroma .s,
.chroma .sa,
.chroma .sb,
.chroma .sc,
.chroma .dl,
.chroma .sd,
.chroma .s2,
.chroma .sh,
.chroma .si,
.chroma .sx,
.chroma .s1,
.chroma .gi,
.chroma .go,
.chroma .gp {
--tw-text-opacity: 1;
color: rgba(var(--color-primary-800), var(--tw-text-opacity));
}
.dark .chroma .l, .dark .chroma .ld, .dark .chroma .s, .dark .chroma .sa, .dark .chroma .sb, .dark .chroma .sc, .dark .chroma .dl, .dark .chroma .sd, .dark .chroma .s2, .dark .chroma .sh, .dark .chroma .si, .dark .chroma .sx, .dark .chroma .s1, .dark .chroma .gi, .dark .chroma .go, .dark .chroma .gp {
.dark .chroma .l, .dark
.chroma .ld, .dark
.chroma .s, .dark
.chroma .sa, .dark
.chroma .sb, .dark
.chroma .sc, .dark
.chroma .dl, .dark
.chroma .sd, .dark
.chroma .s2, .dark
.chroma .sh, .dark
.chroma .si, .dark
.chroma .sx, .dark
.chroma .s1, .dark
.chroma .gi, .dark
.chroma .go, .dark
.chroma .gp {
--tw-text-opacity: 1;
color: rgba(var(--color-primary-400), var(--tw-text-opacity));
}
@ -1330,13 +1548,15 @@ body a, body button {
/* LiteralStringSymbol */
.chroma .sr, .chroma .ss {
.chroma .sr,
.chroma .ss {
font-weight: 600;
--tw-text-opacity: 1;
color: rgba(var(--color-primary-800), var(--tw-text-opacity));
}
.dark .chroma .sr, .dark .chroma .ss {
.dark .chroma .sr, .dark
.chroma .ss {
--tw-text-opacity: 1;
color: rgba(var(--color-primary-400), var(--tw-text-opacity));
}
@ -1366,13 +1586,23 @@ body a, body button {
/* CommentPreprocFile */
.chroma .c, .chroma .cm, .chroma .c1, .chroma .cs, .chroma .cp, .chroma .cpf {
.chroma .c,
.chroma .cm,
.chroma .c1,
.chroma .cs,
.chroma .cp,
.chroma .cpf {
font-style: italic;
--tw-text-opacity: 1;
color: rgba(var(--color-neutral-500), var(--tw-text-opacity));
}
.dark .chroma .c, .dark .chroma .cm, .dark .chroma .c1, .dark .chroma .cs, .dark .chroma .cp, .dark .chroma .cpf {
.dark .chroma .c, .dark
.chroma .cm, .dark
.chroma .c1, .dark
.chroma .cs, .dark
.chroma .cp, .dark
.chroma .cpf {
--tw-text-opacity: 1;
color: rgba(var(--color-neutral-400), var(--tw-text-opacity));
}
@ -1415,7 +1645,8 @@ body a, body button {
/* GenericTraceback */
.chroma .gu, .chroma .gt {
.chroma .gu,
.chroma .gt {
--tw-text-opacity: 1;
color: rgba(var(--color-neutral-500), var(--tw-text-opacity));
}
@ -1463,8 +1694,8 @@ body a, body button {
left: 0px;
}
.top-\[110vh\] {
top: 110vh;
.top-\[100vh\] {
top: 100vh;
}
.bottom-0 {
@ -1491,6 +1722,14 @@ body a, body button {
z-index: 10;
}
.z-40 {
z-index: 40;
}
.z-30 {
z-index: 30;
}
.order-first {
order: -9999;
}
@ -1533,6 +1772,11 @@ body a, body button {
margin-bottom: 0px;
}
.mx-4 {
margin-left: 1rem;
margin-right: 1rem;
}
.mb-3 {
margin-bottom: 0.75rem;
}
@ -1561,10 +1805,6 @@ body a, body button {
margin-top: 1.5rem;
}
.-mt-2 {
margin-top: -0.5rem;
}
.mr-3 {
margin-right: 0.75rem;
}
@ -1721,14 +1961,14 @@ body a, body button {
max-width: 65ch;
}
.max-w-\[10rem\] {
max-width: 10rem;
}
.max-w-3xl {
max-width: 48rem;
}
.max-w-\[10rem\] {
max-width: 10rem;
}
.flex-none {
flex: none;
}
@ -1804,6 +2044,10 @@ body a, body button {
overflow: hidden;
}
.overflow-visible {
overflow: visible;
}
.scroll-smooth {
scroll-behavior: smooth;
}
@ -1850,16 +2094,16 @@ body a, body button {
border-color: rgba(var(--color-neutral-400), var(--tw-border-opacity));
}
.border-neutral-200 {
--tw-border-opacity: 1;
border-color: rgba(var(--color-neutral-200), var(--tw-border-opacity));
}
.border-neutral-300 {
--tw-border-opacity: 1;
border-color: rgba(var(--color-neutral-300), var(--tw-border-opacity));
}
.border-neutral-200 {
--tw-border-opacity: 1;
border-color: rgba(var(--color-neutral-200), var(--tw-border-opacity));
}
.border-primary-400 {
--tw-border-opacity: 1;
border-color: rgba(var(--color-primary-400), var(--tw-border-opacity));
@ -1907,6 +2151,10 @@ body a, body button {
background-color: rgba(var(--color-primary-600), var(--tw-bg-opacity));
}
.bg-neutral-100\/50 {
background-color: rgba(var(--color-neutral-100), 0.5);
}
.object-scale-down {
-o-object-fit: scale-down;
object-fit: scale-down;
@ -1970,11 +2218,6 @@ body a, body button {
padding-bottom: 2.5rem;
}
.py-6 {
padding-top: 1.5rem;
padding-bottom: 1.5rem;
}
.py-2 {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
@ -1990,18 +2233,23 @@ body a, body button {
padding-bottom: 0.75rem;
}
.py-6 {
padding-top: 1.5rem;
padding-bottom: 1.5rem;
}
.pt-8 {
padding-top: 2rem;
}
.pl-2 {
padding-left: 0.5rem;
}
.pt-3 {
padding-top: 0.75rem;
}
.pl-2 {
padding-left: 0.5rem;
}
.pb-4 {
padding-bottom: 1rem;
}
@ -2018,6 +2266,10 @@ body a, body button {
text-align: right;
}
.align-top {
vertical-align: top;
}
.align-text-bottom {
vertical-align: text-bottom;
}
@ -2157,13 +2409,13 @@ body a, body button {
}
.decoration-primary-500 {
-webkit-text-decoration-color: rgb(var(--color-primary-500));
text-decoration-color: rgb(var(--color-primary-500));
-webkit-text-decoration-color: rgba(var(--color-primary-500), 1);
text-decoration-color: rgba(var(--color-primary-500), 1);
}
.decoration-neutral-300 {
-webkit-text-decoration-color: rgb(var(--color-neutral-300));
text-decoration-color: rgb(var(--color-neutral-300));
-webkit-text-decoration-color: rgba(var(--color-neutral-300), 1);
text-decoration-color: rgba(var(--color-neutral-300), 1);
}
.opacity-0 {
@ -2249,8 +2501,8 @@ body a, body button {
}
.hover\:decoration-primary-400:hover {
-webkit-text-decoration-color: rgb(var(--color-primary-400));
text-decoration-color: rgb(var(--color-primary-400));
-webkit-text-decoration-color: rgba(var(--color-primary-400), 1);
text-decoration-color: rgba(var(--color-primary-400), 1);
}
.hover\:decoration-2:hover {
@ -2299,8 +2551,8 @@ body a, body button {
}
.group:hover .group-hover\:decoration-primary-500 {
-webkit-text-decoration-color: rgb(var(--color-primary-500));
text-decoration-color: rgb(var(--color-primary-500));
-webkit-text-decoration-color: rgba(var(--color-primary-500), 1);
text-decoration-color: rgba(var(--color-primary-500), 1);
}
.group:hover .group-hover\:opacity-100 {
@ -2447,17 +2699,17 @@ body a, body button {
}
.dark .dark\:prose-invert :where(a):not(:where([class~="not-prose"] *)) {
-webkit-text-decoration-color: rgb(var(--color-neutral-600));
text-decoration-color: rgb(var(--color-neutral-600));
-webkit-text-decoration-color: rgba(var(--color-neutral-600), 1);
text-decoration-color: rgba(var(--color-neutral-600), 1);
}
.dark .dark\:prose-invert :where(kbd):not(:where([class~="not-prose"] *)) {
color: rgb(var(--color-neutral-200));
background-color: rgb(var(--color-neutral-700));
color: rgba(var(--color-neutral-200), 1);
background-color: rgba(var(--color-neutral-700), 1);
}
.dark .dark\:prose-invert :where(mark):not(:where([class~="not-prose"] *)) {
background-color: rgb(var(--color-secondary-400));
background-color: rgba(var(--color-secondary-400), 1);
}
.dark .dark\:inline {
@ -2620,10 +2872,6 @@ body a, body button {
flex-direction: row;
}
.sm\:items-center {
align-items: center;
}
.sm\:p-6 {
padding: 1.5rem;
}
@ -2638,6 +2886,10 @@ body a, body button {
padding-bottom: 2.5rem;
}
.sm\:pt-10 {
padding-top: 2.5rem;
}
.sm\:text-lg {
font-size: 1.125rem;
line-height: 1.75rem;
@ -2689,10 +2941,6 @@ body a, body button {
order: 9999;
}
.lg\:mt-3 {
margin-top: 0.75rem;
}
.lg\:hidden {
display: none;
}

View File

@ -1,4 +1,4 @@
/*! Congo v2.2.3 | MIT License | https://github.com/jpanther/congo */
/*! Congo v2.3.0 | MIT License | https://github.com/jpanther/congo */
@tailwind base;
@tailwind components;
@ -21,6 +21,17 @@ body button {
@apply hidden;
}
/* Hamburger menu */
body:has(#menu-controller:checked) {
@apply fixed overflow-y-scroll;
}
#menu-button:has(#menu-controller:checked) {
@apply invisible;
}
#menu-controller:checked ~ #menu-wrapper {
@apply visible opacity-100;
}
/* RTL support */
.prose blockquote {
@apply rtl:pr-4 rtl:border-l-0 rtl:border-r-4;
@ -42,6 +53,11 @@ body button {
@apply rtl:pl-0;
}
/* Adjust first child within prose */
.prose div.min-w-0.max-w-prose > *:first-child {
@apply mt-3;
}
/* Table of Contents */
.toc ul,
.toc li {

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M0 96C0 78.33 14.33 64 32 64H416C433.7 64 448 78.33 448 96C448 113.7 433.7 128 416 128H32C14.33 128 0 113.7 0 96zM0 256C0 238.3 14.33 224 32 224H416C433.7 224 448 238.3 448 256C448 273.7 433.7 288 416 288H32C14.33 288 0 273.7 0 256zM416 448H32C14.33 448 0 433.7 0 416C0 398.3 14.33 384 32 384H416C433.7 384 448 398.3 448 416C448 433.7 433.7 448 416 448z"/></svg>

After

Width:  |  Height:  |  Size: 454 B

View File

@ -8,13 +8,20 @@
colorScheme = "congo"
defaultAppearance = "light" # valid options: light or dark
autoSwitchAppearance = true
showAppearanceSwitcher = false
enableSearch = false
enableCodeCopy = false
# mainSections = ["section1", "section2"]
# robots = ""
[header]
layout = "basic" # valid options: basic, hamburger, custom
[footer]
showCopyright = true
showThemeAttribution = true
showAppearanceSwitcher = false
showScrollToTop = true
[homepage]
@ -37,6 +44,7 @@ showScrollToTop = true
showTableOfContents = false
showTaxonomies = false
showWordCount = false
showComments = false
# sharingLinks = ["facebook", "twitter", "pinterest", "reddit", "linkedin", "email"]
[list]

View File

@ -8,13 +8,20 @@
colorScheme = "congo"
defaultAppearance = "light" # valid options: light or dark
autoSwitchAppearance = true
showAppearanceSwitcher = true
enableSearch = true
enableCodeCopy = true
mainSections = ["samples"]
# robots = ""
[header]
layout = "basic" # valid options: basic, hamburger, custom
[footer]
showCopyright = true
showThemeAttribution = true
showAppearanceSwitcher = true
showScrollToTop = true
[homepage]
@ -37,6 +44,7 @@ showScrollToTop = true
showTableOfContents = true
showTaxonomies = false
showWordCount = false
showComments = false
# sharingLinks = ["facebook", "twitter", "pinterest", "reddit", "linkedin", "email"]
[list]

View File

@ -116,13 +116,16 @@ Many of the article defaults here can be overridden on a per article basis by sp
|`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.|
|`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`.|
|`showAppearanceSwitcher`|`false`|Whether or not to show the appearance switcher in the site footer. The browser's local storage is used to persist the visitor's preference.|
|`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.|
|`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.|
|`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.|
|`showScrollToTop`|`true`|When set to `true` the scroll to top arrow is displayed.|
|`header.layout`|`"basic"`|The layout of the page header and menu. Valid values are `basic`, `hamburger` or `custom`. When set to `custom`, you must provide your own layout by creating a `/layouts/partials/header/custom.html` file.|
|`footer.showCopyright`|`true`|Whether or not to show the copyright string in the site footer. Note that the string itself can be customised using the `copyright` parameter in the [languages configuration](#language-and-i18n).|
|`footer.showThemeAttribution`|`true`|Whether or not to show the "powered by" theme attribution in the site footer. If you choose to disable this message, please consider attributing the theme somewhere else on your site (for example, on your about page).|
|`footer.showAppearanceSwitcher`|`false`|Whether or not to show the appearance switcher in the site footer. The browser's local storage is used to persist the visitor's preference.|
|`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.showRecent`|`false`|Whether or not to display the recent articles list on the homepage.|
|`article.showDate`|`true`|Whether or not article dates are displayed.|
@ -140,6 +143,7 @@ Many of the article defaults here can be overridden on a per article basis by sp
|`article.showTableOfContents`|`false`|Whether or not the table of contents is displayed on articles.|
|`article.showTaxonomies`|`false`|Whether or not the taxonomies related to this article are displayed.|
|`article.showWordCount`|`false`|Whether or not article word counts are displayed.|
|`article.showComments`|`false`|Whether or not the [comments partial]({{< ref "partials#comments" >}}) is included after the article footer.|
|`article.sharingLinks`|_Not set_|Which sharing links to display at the end of each article. When not provided, or set to `false` no links will be displayed.|
|`list.showBreadcrumbs`|`false`|Whether or not breadcrumbs are displayed in the header on list pages.|
|`list.showTableOfContents`|`false`|Whether or not the table of contents is displayed on list pages.|

View File

@ -35,6 +35,7 @@ Front matter parameter default values are inherited from the theme's [base confi
|`showTaxonomies`|`article.showTaxonomies`|Whether or not the taxonomies that relate to this article are displayed.|
|`showTableOfContents`|`article.showTableOfContents`|Whether or not the table of contents is displayed on this article.|
|`showWordCount`|`article.showWordCount`|Whether or not the article word count is displayed.|
|`showComments`|`article.showComments`|Whether or not the [comments partial]({{< ref "partials#comments" >}}) is included after the article footer.|
|`showSummary`|`list.showSummary`|Whether or not the article summary should be displayed on list pages.|
|`summary`|Auto generated using `summaryLength` (see [site configuration]({{< ref "configuration#site-configuration" >}}))|When `showSummary` is enabled, this is the Markdown string to be used as the summary for this article.|
|`xml`|`true` unless excluded by `sitemap.excludedKinds`|Whether or not this article is included in the generated `/sitemap.xml` file.|

View File

@ -19,6 +19,7 @@ The full list of built-in icons and their corresponding names can referenced bel
| -------------------- | --------------------------------- |
| amazon | {{< icon amazon >}} |
| apple | {{< icon apple >}} |
| bars | {{< icon bars >}} |
| blogger | {{< icon blogger >}} |
| bug | {{< icon bug >}} |
| check | {{< icon check >}} |

View File

@ -1,3 +1,4 @@
{{- partial "partials/functions/warnings.html" .Site -}}
<!DOCTYPE html>
<html
lang="{{ with .Site.Params.isoCode | default (.Site.LanguageCode | default "en") }}
@ -25,13 +26,18 @@
>{{ i18n "nav.skip_to_main" }}</a
>
</div>
{{- partial "header.html" . -}}
{{ $header := print "partials/header/" .Site.Params.header.layout ".html" }}
{{ if templates.Exists $header }}
{{ partial $header . }}
{{ else }}
{{ partial "partials/header/basic.html" . }}
{{ end }}
<div class="relative flex flex-col grow">
<main id="main-content" class="grow">
{{- block "main" . }}{{- end }}
{{ if and (.Site.Params.showScrollToTop | default true) (gt .WordCount 200) }}
{{ block "main" . }}{{ end }}
{{ if and (.Site.Params.footer.showScrollToTop | default true) (gt .WordCount 200) }}
<div
class="absolute top-[110vh] ltr:right-0 rtl:left-0 w-12 pointer-events-none bottom-0"
class="absolute top-[100vh] ltr:right-0 rtl:left-0 w-12 pointer-events-none bottom-0"
>
<a
href="#the-top"

View File

@ -1,5 +1,5 @@
{{- $index := slice -}}
{{- range .Site.RegularPages -}}
{{- range .Site.Pages -}}
{{- $section := .Site.GetPage "section" .Section -}}
{{- $index = $index | append (dict
"date" (.Date | time.Format (.Site.Language.Params.dateFormat | default ":date_long"))

View File

@ -27,9 +27,18 @@
{{ partial "author.html" . }}
{{ partial "sharing-links.html" . }}
{{ partial "article-pagination.html" . }}
</footer>
{{ if .Params.showComments | default (.Site.Params.article.showComments | default false) }}
{{ if templates.Exists "partials/comments.html" }}
<div class="pt-3">
<hr class="border-dotted border-neutral-300 dark:border-neutral-600" />
<div class="pt-3">
{{ partial "comments.html" . }}
</div>
</div>
{{ else }}
{{ warnf "[CONGO] Comments are enabled for %s but no comments partial exists." .File.Path }}
{{ end }}
{{ end }}
</footer>
</article>
{{ end }}

View File

@ -1,6 +1,7 @@
<article>
<h3 class="flex items-center mt-6 text-xl font-semibold">
{{ with .Params.externalUrl }}
<div>
<a
class="decoration-primary-500 hover:underline hover:underline-offset-2 text-neutral-800 dark:text-neutral"
href="{{ . }}"
@ -9,11 +10,13 @@
>{{ $.Title | emojify }}</a
>
<span
class="-mt-2 text-xs cursor-default text-neutral-400 dark:text-neutral-500"
class="text-xs align-top cursor-default text-neutral-400 dark:text-neutral-500"
title="{{ i18n "list.externalurl_title" }}"
>
&#8599;
<span class="rtl:hidden">&#8599;</span>
<span class="ltr:hidden">&#8598;</span>
</span>
</div>
{{ else }}
<a
class="decoration-primary-500 hover:underline hover:underline-offset-2 text-neutral-800 dark:text-neutral"

View File

@ -18,9 +18,10 @@
</ul>
</nav>
{{ end }}
<div class="flex justify-between">
<div class="flex items-center justify-between">
<div>
{{/* Copyright */}}
{{ if .Site.Params.footer.showCopyright | default true }}
<p class="text-sm text-neutral-500 dark:text-neutral-400">
{{- with .Site.Params.copyright }}
{{ . | emojify | markdownify }}
@ -30,8 +31,9 @@
{{ .Site.Author.name | markdownify | emojify }}
{{- end }}
</p>
{{ end }}
{{/* Theme attribution */}}
{{ if .Site.Params.attribution | default true }}
{{ if .Site.Params.footer.showThemeAttribution | default true }}
<p class="text-xs text-neutral-500 dark:text-neutral-400">
{{ $hugo := printf `<a class="hover:underline hover:decoration-primary-400 hover:text-primary-500"
href="https://gohugo.io/" target="_blank" rel="noopener noreferrer">Hugo</a>`
@ -42,9 +44,9 @@
{{ end }}
</div>
{{/* Appearance switch */}}
{{ if .Site.Params.showAppearanceSwitcher | default false }}
{{ if .Site.Params.footer.showAppearanceSwitcher | default false }}
<div
class="text-sm cursor-pointer text-neutral-700 dark:text-neutral hover:text-primary-600 dark:hover:text-primary-400 {{ if .Site.Params.showScrollToTop | default true -}}
class="text-sm cursor-pointer text-neutral-700 dark:text-neutral hover:text-primary-600 dark:hover:text-primary-400 {{ if .Site.Params.footer.showScrollToTop | default true -}}
ltr:mr-14 rtl:ml-14
{{- end }}"
>

View File

@ -0,0 +1,6 @@
{{ if ne .Site.Params.showAppearanceSwitcher nil }}
{{ warnf "[CONGO] Theme parameter `showAppearanceSwitcher` has been renamed to `footer.showAppearanceSwitcher`. Please update your site configuration." }}
{{ end }}
{{ if ne .Site.Params.showScrollToTop nil }}
{{ warnf "[CONGO] Theme parameter `showScrollToTop` has been renamed to `footer.showScrollToTop`. Please update your site configuration." }}
{{ end }}

View File

@ -1,61 +0,0 @@
<header
class="flex justify-between py-6 font-semibold sm:items-center sm:py-10 text-neutral-900 dark:text-neutral print:hidden"
>
{{/* Site logo/title */}}
<div>
{{ if .Site.Params.Logo -}}
{{ $logo := resources.Get .Site.Params.Logo }}
{{ if $logo }}
<a href="{{ "/" | relLangURL }}">
<img
src="{{ $logo.RelPermalink }}"
width="{{ div $logo.Width 2 }}"
height="{{ div $logo.Height 2 }}"
class="max-w-[10rem] max-h-[10rem] object-scale-down object-left"
alt="{{ .Site.Title }}"
/>
</a>
{{ end }}
{{ else }}
<a
class="decoration-primary-500 hover:underline hover:decoration-2 hover:underline-offset-2"
rel="me"
href="{{ "/" | relLangURL }}"
>{{ .Site.Title | markdownify | emojify }}</a
>
{{- end }}
{{ partial "translations.html" . }}
</div>
{{/* Main menu */}}
{{ if .Site.Menus.main }}
<nav>
<ul class="flex flex-col list-none sm:flex-row">
{{ range .Site.Menus.main }}
<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"
>
<a
class="decoration-primary-500 hover:underline hover:decoration-2 hover:underline-offset-2"
href="{{ .URL }}"
title="{{ .Title }}"
>{{ .Name | markdownify | emojify }}</a
>
</li>
{{ end }}
{{ if .Site.Params.enableSearch | default false }}
<li
class="ltr:text-right rtl:text-left ltr:sm:mr-7 ltr:sm:last:mr-0 rtl:sm:ml-7 rtl:sm:last:ml-0"
>
<button
id="search-button"
class="text-base hover:text-primary-600 dark:hover:text-primary-400"
title="{{ i18n "search.open_button_title" }}"
>
{{ partial "icon.html" "search" }}
</button>
</li>
{{ end }}
</ul>
</nav>
{{ end }}
</header>

View File

@ -0,0 +1,57 @@
<header class="py-6 font-semibold sm:py-10 text-neutral-900 dark:text-neutral print:hidden">
<nav class="flex justify-between">
{{/* Site logo/title */}}
<div>
{{ if .Site.Params.Logo -}}
{{ $logo := resources.Get .Site.Params.Logo }}
{{ if $logo }}
<a href="{{ "" | relLangURL }}">
<img
src="{{ $logo.RelPermalink }}"
width="{{ div $logo.Width 2 }}"
height="{{ div $logo.Height 2 }}"
class="max-w-[10rem] max-h-[10rem] object-scale-down object-left"
alt="{{ .Site.Title }}"
/>
</a>
{{ end }}
{{ else }}
<a
class="decoration-primary-500 hover:underline hover:decoration-2 hover:underline-offset-2"
rel="me"
href="{{ "" | relLangURL }}"
>{{ .Site.Title | markdownify | emojify }}</a
>
{{- end }}
{{ partial "translations.html" . }}
</div>
{{/* Main menu */}}
{{ if or .Site.Menus.main (.Site.Params.enableSearch | default false) }}
<ul class="flex flex-col list-none ltr:text-right rtl:text-left sm:flex-row">
{{ if .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">
<a
class="decoration-primary-500 hover:underline hover:decoration-2 hover:underline-offset-2"
href="{{ .URL }}"
title="{{ .Title }}"
>{{ .Name | markdownify | emojify }}</a
>
</li>
{{ end }}
{{ end }}
{{ if .Site.Params.enableSearch | default false }}
<li class="ltr:sm:mr-7 ltr:sm:last:mr-0 rtl:sm:ml-7 rtl:sm:last:ml-0">
<button
id="search-button"
class="text-base hover:text-primary-600 dark:hover:text-primary-400"
title="{{ i18n "search.open_button_title" }}"
>
{{ partial "icon.html" "search" }}
</button>
</li>
{{ end }}
</ul>
{{ end }}
</nav>
</header>

View File

@ -0,0 +1,75 @@
<header class="py-6 font-semibold sm:py-10 text-neutral-900 dark:text-neutral print:hidden">
<nav class="flex justify-between">
{{/* Site logo/title */}}
<div class="z-40">
{{ if .Site.Params.Logo -}}
{{ $logo := resources.Get .Site.Params.Logo }}
{{ if $logo }}
<a href="{{ "" | relLangURL }}">
<img
src="{{ $logo.RelPermalink }}"
width="{{ div $logo.Width 2 }}"
height="{{ div $logo.Height 2 }}"
class="max-w-[10rem] max-h-[10rem] object-scale-down object-left"
alt="{{ .Site.Title }}"
/>
</a>
{{ end }}
{{ else }}
<a
class="decoration-primary-500 hover:underline hover:decoration-2 hover:underline-offset-2"
rel="me"
href="{{ "" | relLangURL }}"
>{{ .Site.Title | markdownify | emojify }}</a
>
{{- end }}
{{ partial "translations.html" . }}
</div>
{{/* Hamburger menu */}}
{{ if or .Site.Menus.main (.Site.Params.enableSearch | default false) }}
<label id="menu-button" for="menu-controller" class="block">
<input type="checkbox" id="menu-controller" class="hidden" />
<div class="cursor-pointer hover:text-primary-600 dark:hover:text-primary-400">
{{ partial "icon.html" "bars" }}
</div>
<div
id="menu-wrapper"
class="fixed inset-0 z-30 invisible w-screen h-screen px-6 py-6 overflow-auto transition-opacity opacity-0 cursor-default sm:px-14 md:px-24 lg:px-32 sm:py-10 sm:pt-10 bg-neutral-100/50 backdrop-blur-sm dark:bg-neutral-900/50"
>
<ul
class="flex flex-col m-auto mx-4 overflow-visible list-none ltr:text-right rtl:text-left max-w-7xl"
>
<li class="mb-1">
<span class="cursor-pointer hover:text-primary-600 dark:hover:text-primary-400"
>{{ partial "icon.html" "xmark" }}</span
>
</li>
{{ if .Site.Menus.main }}
{{ range .Site.Menus.main }}
<li class="mb-1">
<a
class="decoration-primary-500 hover:underline hover:decoration-2 hover:underline-offset-2"
href="{{ .URL }}"
title="{{ .Title }}"
>{{ .Name | markdownify | emojify }}</a
>
</li>
{{ end }}
{{ end }}
{{ if .Site.Params.enableSearch | default false }}
<li>
<button
id="search-button"
class="text-base hover:text-primary-600 dark:hover:text-primary-400"
title="{{ i18n "search.open_button_title" }}"
>
{{ partial "icon.html" "search" }}
</button>
</li>
{{ end }}
</ul>
</div>
</label>
{{ end }}
</nav>
</header>

View File

@ -1,7 +1,7 @@
<div
id="search-wrapper"
class="fixed inset-0 z-50 flex flex-col p-4 sm:p-6 md:p-[10vh] lg:p-[12vh] w-screen h-screen cursor-default bg-neutral-500/50 backdrop-blur-sm dark:bg-neutral-900/50 invisible"
data-url="{{ .Site.BaseURL }}"
data-url="{{ "" | absLangURL }}"
>
<div
id="search-modal"

View File

@ -1,4 +1,4 @@
<details open class="mt-0 overflow-hidden rounded-lg rtl:pr-5 ltr:pl-5 ltr:-ml-5 rtl:-mr-5 lg:mt-3">
<details open class="mt-0 overflow-hidden rounded-lg rtl:pr-5 ltr:pl-5 ltr:-ml-5 rtl:-mr-5">
<summary
class="block py-1 text-lg font-semibold cursor-pointer rtl:pr-5 ltr:pl-5 ltr:-ml-5 rtl:-mr-5 text-neutral-800 dark:text-neutral-100 lg:hidden bg-neutral-100 dark:bg-neutral-700"
>

View File

@ -1,7 +1,7 @@
{{ if .IsTranslated }}
<nav class="inline">
<div class="inline">
{{ range .AllTranslations }}
<a href="{{ .RelPermalink }}">{{ .Language.Params.displayName | emojify }}</a>
{{ end }}
</nav>
</div>
{{ end }}

191
package-lock.json generated
View File

@ -18,7 +18,7 @@
"prettier": "^2.7.1",
"prettier-plugin-go-template": "^0.0.13",
"rimraf": "^3.0.2",
"tailwindcss": "^3.0.24",
"tailwindcss": "^3.1.4",
"vendor-copy": "^3.0.1"
}
},
@ -77,18 +77,7 @@
"tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1 || insiders"
}
},
"node_modules/acorn-node": {
"version": "1.8.2",
"resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz",
"integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==",
"dev": true,
"dependencies": {
"acorn": "^7.0.0",
"acorn-walk": "^7.0.0",
"xtend": "^4.0.2"
}
},
"node_modules/acorn-node/node_modules/acorn": {
"node_modules/acorn": {
"version": "7.4.1",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
"integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
@ -100,6 +89,17 @@
"node": ">=0.4.0"
}
},
"node_modules/acorn-node": {
"version": "1.8.2",
"resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz",
"integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==",
"dev": true,
"dependencies": {
"acorn": "^7.0.0",
"acorn-walk": "^7.0.0",
"xtend": "^4.0.2"
}
},
"node_modules/acorn-walk": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
@ -123,9 +123,9 @@
}
},
"node_modules/arg": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz",
"integrity": "sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==",
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
"integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
"dev": true
},
"node_modules/balanced-match": {
@ -1006,7 +1006,7 @@
"node_modules/defined": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
"integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
"integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==",
"dev": true
},
"node_modules/delaunator": {
@ -1019,14 +1019,14 @@
}
},
"node_modules/detective": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz",
"integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==",
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz",
"integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==",
"dev": true,
"dependencies": {
"acorn-node": "^1.6.1",
"acorn-node": "^1.8.2",
"defined": "^1.0.0",
"minimist": "^1.1.1"
"minimist": "^1.2.6"
},
"bin": {
"detective": "bin/detective.js"
@ -1400,9 +1400,9 @@
"dev": true
},
"node_modules/nanoid": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz",
"integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==",
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
"integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
"dev": true,
"bin": {
"nanoid": "bin/nanoid.cjs"
@ -1480,10 +1480,19 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/pify": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
"integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/postcss": {
"version": "8.4.12",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz",
"integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==",
"version": "8.4.14",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz",
"integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==",
"dev": true,
"funding": [
{
@ -1496,7 +1505,7 @@
}
],
"dependencies": {
"nanoid": "^3.3.1",
"nanoid": "^3.3.4",
"picocolors": "^1.0.0",
"source-map-js": "^1.0.2"
},
@ -1504,6 +1513,23 @@
"node": "^10 || ^12 || >=14"
}
},
"node_modules/postcss-import": {
"version": "14.1.0",
"resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz",
"integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==",
"dev": true,
"dependencies": {
"postcss-value-parser": "^4.0.0",
"read-cache": "^1.0.0",
"resolve": "^1.1.7"
},
"engines": {
"node": ">=10.0.0"
},
"peerDependencies": {
"postcss": "^8.0.0"
}
},
"node_modules/postcss-js": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz",
@ -1652,6 +1678,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/read-cache": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
"integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
"dev": true,
"dependencies": {
"pify": "^2.3.0"
}
},
"node_modules/readdirp": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
@ -1775,15 +1810,15 @@
}
},
"node_modules/tailwindcss": {
"version": "3.0.24",
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.24.tgz",
"integrity": "sha512-H3uMmZNWzG6aqmg9q07ZIRNIawoiEcNFKDfL+YzOPuPsXuDXxJxB9icqzLgdzKNwjG3SAro2h9SYav8ewXNgig==",
"version": "3.1.4",
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.1.4.tgz",
"integrity": "sha512-NrxbFV4tYsga/hpWbRyUfIaBrNMXDxx5BsHgBS4v5tlyjf+sDsgBg5m9OxjrXIqAS/uR9kicxLKP+bEHI7BSeQ==",
"dev": true,
"dependencies": {
"arg": "^5.0.1",
"arg": "^5.0.2",
"chokidar": "^3.5.3",
"color-name": "^1.1.4",
"detective": "^5.2.0",
"detective": "^5.2.1",
"didyoumean": "^1.2.2",
"dlv": "^1.1.3",
"fast-glob": "^3.2.11",
@ -1793,7 +1828,8 @@
"normalize-path": "^3.0.0",
"object-hash": "^3.0.0",
"picocolors": "^1.0.0",
"postcss": "^8.4.12",
"postcss": "^8.4.14",
"postcss-import": "^14.1.0",
"postcss-js": "^4.0.0",
"postcss-load-config": "^3.1.4",
"postcss-nested": "5.0.6",
@ -1930,6 +1966,12 @@
"lodash.merge": "^4.6.2"
}
},
"acorn": {
"version": "7.4.1",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
"integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
"dev": true
},
"acorn-node": {
"version": "1.8.2",
"resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz",
@ -1939,14 +1981,6 @@
"acorn": "^7.0.0",
"acorn-walk": "^7.0.0",
"xtend": "^4.0.2"
},
"dependencies": {
"acorn": {
"version": "7.4.1",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
"integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
"dev": true
}
}
},
"acorn-walk": {
@ -1966,9 +2000,9 @@
}
},
"arg": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz",
"integrity": "sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==",
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
"integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
"dev": true
},
"balanced-match": {
@ -2699,7 +2733,7 @@
"defined": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
"integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
"integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==",
"dev": true
},
"delaunator": {
@ -2712,14 +2746,14 @@
}
},
"detective": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz",
"integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==",
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz",
"integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==",
"dev": true,
"requires": {
"acorn-node": "^1.6.1",
"acorn-node": "^1.8.2",
"defined": "^1.0.0",
"minimist": "^1.1.1"
"minimist": "^1.2.6"
}
},
"didyoumean": {
@ -3018,9 +3052,9 @@
"dev": true
},
"nanoid": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz",
"integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==",
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
"integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
"dev": true
},
"ncp": {
@ -3074,17 +3108,34 @@
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
"dev": true
},
"pify": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
"integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
"dev": true
},
"postcss": {
"version": "8.4.12",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz",
"integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==",
"version": "8.4.14",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz",
"integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==",
"dev": true,
"requires": {
"nanoid": "^3.3.1",
"nanoid": "^3.3.4",
"picocolors": "^1.0.0",
"source-map-js": "^1.0.2"
}
},
"postcss-import": {
"version": "14.1.0",
"resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz",
"integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==",
"dev": true,
"requires": {
"postcss-value-parser": "^4.0.0",
"read-cache": "^1.0.0",
"resolve": "^1.1.7"
}
},
"postcss-js": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz",
@ -3156,6 +3207,15 @@
"integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
"dev": true
},
"read-cache": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
"integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
"dev": true,
"requires": {
"pify": "^2.3.0"
}
},
"readdirp": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
@ -3237,15 +3297,15 @@
"dev": true
},
"tailwindcss": {
"version": "3.0.24",
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.24.tgz",
"integrity": "sha512-H3uMmZNWzG6aqmg9q07ZIRNIawoiEcNFKDfL+YzOPuPsXuDXxJxB9icqzLgdzKNwjG3SAro2h9SYav8ewXNgig==",
"version": "3.1.4",
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.1.4.tgz",
"integrity": "sha512-NrxbFV4tYsga/hpWbRyUfIaBrNMXDxx5BsHgBS4v5tlyjf+sDsgBg5m9OxjrXIqAS/uR9kicxLKP+bEHI7BSeQ==",
"dev": true,
"requires": {
"arg": "^5.0.1",
"arg": "^5.0.2",
"chokidar": "^3.5.3",
"color-name": "^1.1.4",
"detective": "^5.2.0",
"detective": "^5.2.1",
"didyoumean": "^1.2.2",
"dlv": "^1.1.3",
"fast-glob": "^3.2.11",
@ -3255,7 +3315,8 @@
"normalize-path": "^3.0.0",
"object-hash": "^3.0.0",
"picocolors": "^1.0.0",
"postcss": "^8.4.12",
"postcss": "^8.4.14",
"postcss-import": "^14.1.0",
"postcss-js": "^4.0.0",
"postcss-load-config": "^3.1.4",
"postcss-nested": "5.0.6",

View File

@ -1,6 +1,6 @@
{
"name": "hugo-congo-theme",
"version": "2.2.3",
"version": "2.3.0",
"description": "Congo theme for Hugo",
"scripts": {
"preinstall": "rimraf assets/vendor",
@ -37,7 +37,7 @@
"prettier": "^2.7.1",
"prettier-plugin-go-template": "^0.0.13",
"rimraf": "^3.0.2",
"tailwindcss": "^3.0.24",
"tailwindcss": "^3.1.4",
"vendor-copy": "^3.0.1"
},
"vendorCopy": [],

View File

@ -1,14 +1,3 @@
const colors = require("tailwindcss/colors");
function varWithOpacity(variable) {
return ({ opacityValue }) => {
if (opacityValue === undefined) {
return `rgb(var(${variable}))`;
}
return `rgba(var(${variable}), ${opacityValue})`;
};
}
module.exports = {
content: [
"./layouts/**/*.html",
@ -18,89 +7,90 @@ module.exports = {
],
darkMode: "class",
theme: {
extend: {
colors: {
transparent: "transparent",
neutral: {
DEFAULT: varWithOpacity("--color-neutral"),
50: varWithOpacity("--color-neutral-50"),
100: varWithOpacity("--color-neutral-100"),
200: varWithOpacity("--color-neutral-200"),
300: varWithOpacity("--color-neutral-300"),
400: varWithOpacity("--color-neutral-400"),
500: varWithOpacity("--color-neutral-500"),
600: varWithOpacity("--color-neutral-600"),
700: varWithOpacity("--color-neutral-700"),
800: varWithOpacity("--color-neutral-800"),
900: varWithOpacity("--color-neutral-900"),
DEFAULT: "rgba(var(--color-neutral), <alpha-value>)",
50: "rgba(var(--color-neutral-50), <alpha-value>)",
100: "rgba(var(--color-neutral-100), <alpha-value>)",
200: "rgba(var(--color-neutral-200), <alpha-value>)",
300: "rgba(var(--color-neutral-300), <alpha-value>)",
400: "rgba(var(--color-neutral-400), <alpha-value>)",
500: "rgba(var(--color-neutral-500), <alpha-value>)",
600: "rgba(var(--color-neutral-600), <alpha-value>)",
700: "rgba(var(--color-neutral-700), <alpha-value>)",
800: "rgba(var(--color-neutral-800), <alpha-value>)",
900: "rgba(var(--color-neutral-900), <alpha-value>)",
},
primary: {
50: varWithOpacity("--color-primary-50"),
100: varWithOpacity("--color-primary-100"),
200: varWithOpacity("--color-primary-200"),
300: varWithOpacity("--color-primary-300"),
400: varWithOpacity("--color-primary-400"),
500: varWithOpacity("--color-primary-500"),
600: varWithOpacity("--color-primary-600"),
700: varWithOpacity("--color-primary-700"),
800: varWithOpacity("--color-primary-800"),
900: varWithOpacity("--color-primary-900"),
50: "rgba(var(--color-primary-50), <alpha-value>)",
100: "rgba(var(--color-primary-100), <alpha-value>)",
200: "rgba(var(--color-primary-200), <alpha-value>)",
300: "rgba(var(--color-primary-300), <alpha-value>)",
400: "rgba(var(--color-primary-400), <alpha-value>)",
500: "rgba(var(--color-primary-500), <alpha-value>)",
600: "rgba(var(--color-primary-600), <alpha-value>)",
700: "rgba(var(--color-primary-700), <alpha-value>)",
800: "rgba(var(--color-primary-800), <alpha-value>)",
900: "rgba(var(--color-primary-900), <alpha-value>)",
},
secondary: {
50: varWithOpacity("--color-secondary-50"),
100: varWithOpacity("--color-secondary-100"),
200: varWithOpacity("--color-secondary-200"),
300: varWithOpacity("--color-secondary-300"),
400: varWithOpacity("--color-secondary-400"),
500: varWithOpacity("--color-secondary-500"),
600: varWithOpacity("--color-secondary-600"),
700: varWithOpacity("--color-secondary-700"),
800: varWithOpacity("--color-secondary-800"),
900: varWithOpacity("--color-secondary-900"),
50: "rgba(var(--color-secondary-50), <alpha-value>)",
100: "rgba(var(--color-secondary-100), <alpha-value>)",
200: "rgba(var(--color-secondary-200), <alpha-value>)",
300: "rgba(var(--color-secondary-300), <alpha-value>)",
400: "rgba(var(--color-secondary-400), <alpha-value>)",
500: "rgba(var(--color-secondary-500), <alpha-value>)",
600: "rgba(var(--color-secondary-600), <alpha-value>)",
700: "rgba(var(--color-secondary-700), <alpha-value>)",
800: "rgba(var(--color-secondary-800), <alpha-value>)",
900: "rgba(var(--color-secondary-900), <alpha-value>)",
},
},
typography: (theme) => ({
extend: {
typography: ({ theme }) => ({
DEFAULT: {
css: {
"--tw-prose-body": theme("colors.neutral.700"),
"--tw-prose-headings": theme("colors.neutral.800"),
"--tw-prose-lead": theme("colors.neutral.500"),
"--tw-prose-links": theme("colors.primary.700"),
"--tw-prose-bold": theme("colors.neutral.900"),
"--tw-prose-counters": theme("colors.neutral.800"),
"--tw-prose-bullets": theme("colors.neutral.500"),
"--tw-prose-hr": theme("colors.neutral.200"),
"--tw-prose-quotes": theme("colors.neutral.700"),
"--tw-prose-quote-borders": theme("colors.primary.200"),
"--tw-prose-captions": theme("colors.neutral.500"),
"--tw-prose-code": theme("colors.secondary.700"),
"--tw-prose-pre-code": theme("colors.neutral.700"),
"--tw-prose-pre-bg": theme("colors.neutral.50"),
"--tw-prose-th-borders": theme("colors.neutral.500"),
"--tw-prose-td-borders": theme("colors.neutral.300"),
"--tw-prose-invert-body": theme("colors.neutral.300"),
"--tw-prose-invert-headings": theme("colors.neutral.50"),
"--tw-prose-invert-lead": theme("colors.neutral.500"),
"--tw-prose-invert-links": theme("colors.primary.400"),
"--tw-prose-invert-bold": theme("colors.neutral.DEFAULT"),
"--tw-prose-invert-counters": theme("colors.neutral.400"),
"--tw-prose-invert-bullets": theme("colors.neutral.600"),
"--tw-prose-invert-hr": theme("colors.neutral.500"),
"--tw-prose-invert-quotes": theme("colors.neutral.200"),
"--tw-prose-invert-quote-borders": theme("colors.primary.900"),
"--tw-prose-invert-captions": theme("colors.neutral.400"),
"--tw-prose-invert-code": theme("colors.secondary.400"),
"--tw-prose-invert-pre-code": theme("colors.neutral.200"),
"--tw-prose-invert-pre-bg": theme("colors.neutral.700"),
"--tw-prose-invert-th-borders": theme("colors.neutral.500"),
"--tw-prose-invert-td-borders": theme("colors.neutral.700"),
"--tw-prose-body": theme("colors.neutral.700 / 1"),
"--tw-prose-headings": theme("colors.neutral.800 / 1"),
"--tw-prose-lead": theme("colors.neutral.500 / 1"),
"--tw-prose-links": theme("colors.primary.700 / 1"),
"--tw-prose-bold": theme("colors.neutral.900 / 1"),
"--tw-prose-counters": theme("colors.neutral.800 / 1"),
"--tw-prose-bullets": theme("colors.neutral.500 / 1"),
"--tw-prose-hr": theme("colors.neutral.200 / 1"),
"--tw-prose-quotes": theme("colors.neutral.700 / 1"),
"--tw-prose-quote-borders": theme("colors.primary.200 / 1"),
"--tw-prose-captions": theme("colors.neutral.500 / 1"),
"--tw-prose-code": theme("colors.secondary.700 / 1"),
"--tw-prose-pre-code": theme("colors.neutral.700 / 1"),
"--tw-prose-pre-bg": theme("colors.neutral.50 / 1"),
"--tw-prose-th-borders": theme("colors.neutral.500 / 1"),
"--tw-prose-td-borders": theme("colors.neutral.300 / 1"),
"--tw-prose-invert-body": theme("colors.neutral.300 / 1"),
"--tw-prose-invert-headings": theme("colors.neutral.50 / 1"),
"--tw-prose-invert-lead": theme("colors.neutral.500 / 1"),
"--tw-prose-invert-links": theme("colors.primary.400 / 1"),
"--tw-prose-invert-bold": theme("colors.neutral.DEFAULT / 1"),
"--tw-prose-invert-counters": theme("colors.neutral.400 / 1"),
"--tw-prose-invert-bullets": theme("colors.neutral.600 / 1"),
"--tw-prose-invert-hr": theme("colors.neutral.500 / 1"),
"--tw-prose-invert-quotes": theme("colors.neutral.200 / 1"),
"--tw-prose-invert-quote-borders": theme("colors.primary.900 / 1"),
"--tw-prose-invert-captions": theme("colors.neutral.400 / 1"),
"--tw-prose-invert-code": theme("colors.secondary.400 / 1"),
"--tw-prose-invert-pre-code": theme("colors.neutral.200 / 1"),
"--tw-prose-invert-pre-bg": theme("colors.neutral.700 / 1"),
"--tw-prose-invert-th-borders": theme("colors.neutral.500 / 1"),
"--tw-prose-invert-td-borders": theme("colors.neutral.700 / 1"),
a: {
textDecoration: "underline",
textDecorationColor: theme("colors.primary.300"),
textDecorationColor: theme("colors.primary.300 / 1"),
fontWeight: "500",
"&:hover": {
color: theme("colors.neutral.DEFAULT"),
color: theme("colors.neutral.DEFAULT / 1"),
textDecoration: "none",
backgroundColor: theme("colors.primary.600"),
backgroundColor: theme("colors.primary.600 / 1"),
borderRadius: "0.09rem",
},
},
@ -108,15 +98,15 @@ module.exports = {
color: "var(--tw-prose-code)",
},
kbd: {
backgroundColor: theme("colors.neutral.200"),
backgroundColor: theme("colors.neutral.200 / 1"),
padding: "0.1rem 0.4rem",
borderRadius: "0.25rem",
fontSize: "0.9rem",
fontWeight: "600",
},
mark: {
color: theme("colors.neutral.800"),
backgroundColor: theme("colors.secondary.200"),
color: theme("colors.neutral.800 / 1"),
backgroundColor: theme("colors.secondary.200 / 1"),
padding: "0.1rem 0.2rem",
borderRadius: "0.12rem",
},
@ -125,14 +115,14 @@ module.exports = {
invert: {
css: {
a: {
textDecorationColor: theme("colors.neutral.600"),
textDecorationColor: theme("colors.neutral.600 / 1"),
},
kbd: {
color: theme("colors.neutral.200"),
backgroundColor: theme("colors.neutral.700"),
color: theme("colors.neutral.200 / 1"),
backgroundColor: theme("colors.neutral.700 / 1"),
},
mark: {
backgroundColor: theme("colors.secondary.400"),
backgroundColor: theme("colors.secondary.400 / 1"),
},
},
},