update theme

This commit is contained in:
Christoph Cullmann 2025-07-18 21:45:32 +02:00
parent fc43dba964
commit 93fea0ed81
No known key found for this signature in database
183 changed files with 6015 additions and 6241 deletions

View file

@ -0,0 +1,10 @@
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
indent_style = space
indent_size = 2
[*.md]
trim_trailing_whitespace = false

View file

@ -0,0 +1,35 @@
# https://github.com/gohugoio/hugo/blob/b39b24962350090122b5f3927456dde710cffb57/docs/.prettierignore
# https://github.com/gohugoio/hugo/blob/b39b24962350090122b5f3927456dde710cffb57/docs/.prettierrc
# develop
.vscode
node_modules
package.json
# Hugo
assets/lib
assets/css/compiled
content
themes
public
static
*.md
# Invalid nodes and unexpected tokens, mostly caused by unmatched tags in Hugo statements.
# For example:
# {{ with .Params.externalUrl }}
# <a href="{{ . }}">
# {{ else }}
# <a href="{{ .RelPermalink }}" class="min-w-full">
# {{ end }}
#
# This create an unclose node
layouts/_default/_markup/render-heading.html
layouts/_default/index.json
layouts/_default/list.html
layouts/shortcodes/screenshot.html
layouts/shortcodes/figure.html
layouts/partials/hugo-embedded/shortcodes/figure-default.html
assets/js/appearance.js

View file

@ -0,0 +1,46 @@
{
"singleQuote": false,
"tabWidth": 2,
"useTabs": false,
"semi": true,
"trailingComma": "all",
"proseWrap": "always",
"plugins": [
"@awmottaz/prettier-plugin-void-html",
"prettier-plugin-go-template",
"prettier-plugin-tailwindcss"
],
"overrides": [
{
"files": ["*.html"],
"options": {
"useTabs": false,
"parser": "go-template",
"goTemplateBracketSpacing": true,
"printWidth": 112,
"bracketSameLine": true
}
},
{
"files": ["*.js", "*.mjs", "*.mts", "*.ts"],
"options": {
"semi": true,
"useTabs": false,
"printWidth": 112,
"singleQuote": false
}
},
{
"files": ["*.yml", "*.yaml"],
"options": {
"singleQuote": false
}
},
{
"files": ["*.json*"],
"options": {
"trailingComma": "none"
}
}
]
}

View file

@ -12,7 +12,7 @@
- Great! Open a new GitHub pull request with the patch. - Great! Open a new GitHub pull request with the patch.
- All development occurs on the `dev` branch and new PRs should be forked from here. - All development occurs on the `dev` branch and new PRs should be forked from here.
- The command `npm run example` can be used to test local changes using the example site. - The commands `npm run example`, `npm run example:core`, and `npm run example:production` can be used to test local changes using the example site.
- Ensure the PR description clearly describes the problem and solution. Include the relevant issue number, if applicable. - Ensure the PR description clearly describes the problem and solution. Include the relevant issue number, if applicable.
- **Before submitting**, check the [coding conventions](#coding-conventions) section below to learn more about coding and commit message expectations. - **Before submitting**, check the [coding conventions](#coding-conventions) section below to learn more about coding and commit message expectations.
@ -45,7 +45,7 @@ The project includes a Prettier config that helps to format code in line with th
#### Commit message guidelines #### Commit message guidelines
- Use [Gitmoji](https://gitmoji.dev) in commit messages to provide context. - Use [Gitmoji](https://gitmoji.dev) in PR messages to provide context.
- Clearly describe the change with a short summary in the first 72 characters. - Clearly describe the change with a short summary in the first 72 characters.
- Place more detailed explanations in paragraphs below the summary, separated by a blank line. - Place more detailed explanations in paragraphs below the summary, separated by a blank line.
- Use imperative language (ie. "Fix bug", not "Fixed bug" or "Fixes bug"). - Use imperative language (ie. "Fix bug", not "Fixed bug" or "Fixes bug").

View file

@ -1,2 +1,6 @@
github: [nunocoracao] github: [nunocoracao]
custom: ["https://www.paypal.me/nunocoracao", "https://www.buymeacoffee.com/nunocoracao"] custom:
[
"https://www.paypal.me/nunocoracao",
"https://www.buymeacoffee.com/nunocoracao",
]

View file

@ -1,4 +1,4 @@
/*! tailwindcss v4.1.4 | MIT License | https://tailwindcss.com */ /*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */
/*! Blowfish | MIT License | https://github.com/nunocoracao/blowfish */ /*! Blowfish | MIT License | https://github.com/nunocoracao/blowfish */
@layer properties; @layer properties;
#zen-mode-button { #zen-mode-button {
@ -284,18 +284,33 @@ body.zen-mode-enable {
.left-0 { .left-0 {
left: calc(var(--spacing) * 0); left: calc(var(--spacing) * 0);
} }
.left-\[calc\(max\(-50vw\,-800px\)\+50\%\)\] {
left: calc(max(-50vw, -800px) + 50%);
}
.-z-10 {
z-index: calc(10 * -1);
}
.z-2 {
z-index: 2;
}
.z-10 { .z-10 {
z-index: 10; z-index: 10;
} }
.z-30 { .z-30 {
z-index: 30; z-index: 30;
} }
.z-80 {
z-index: 80;
}
.z-100 {
z-index: 100;
}
.z-500 {
z-index: 500;
}
.z-\[1\] { .z-\[1\] {
z-index: 1; z-index: 1;
} }
.z-\[2\] {
z-index: 2;
}
.z-\[999\] { .z-\[999\] {
z-index: 999; z-index: 999;
} }
@ -392,15 +407,9 @@ body.zen-mode-enable {
color: var(--tw-prose-links); color: var(--tw-prose-links);
text-decoration: none; text-decoration: none;
font-weight: 500; font-weight: 500;
text-decoration-color: color-mix(in srgb, rgba(rgba(var(--color-primary-300), 1), 1) 100%, transparent); text-decoration-color: rgba(var(--color-primary-300), 1);
@supports (color: color-mix(in lab, red, red)) {
text-decoration-color: color-mix(in oklab, rgba(var(--color-primary-300), 1) 100%, transparent);
}
&:hover { &:hover {
color: color-mix(in srgb, rgba(rgba(var(--color-primary-600), 1), 1) 100%, transparent); color: rgba(var(--color-primary-600), 1);
@supports (color: color-mix(in lab, red, red)) {
color: color-mix(in oklab, rgba(var(--color-primary-600), 1) 100%, transparent);
}
text-decoration: none; text-decoration: none;
border-radius: 0.09rem; border-radius: 0.09rem;
} }
@ -563,20 +572,14 @@ body.zen-mode-enable {
padding-inline-end: 0.375em; padding-inline-end: 0.375em;
padding-bottom: 0.1875em; padding-bottom: 0.1875em;
padding-inline-start: 0.375em; padding-inline-start: 0.375em;
background-color: color-mix(in srgb, rgba(rgba(var(--color-neutral-200), 1), 1) 100%, transparent); background-color: rgba(var(--color-neutral-200), 1);
@supports (color: color-mix(in lab, red, red)) {
background-color: color-mix(in oklab, rgba(var(--color-neutral-200), 1) 100%, transparent);
}
padding: 0.1rem 0.4rem; padding: 0.1rem 0.4rem;
} }
:where(code):not(:where([class~="not-prose"],[class~="not-prose"] *)) { :where(code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
color: var(--tw-prose-code); color: var(--tw-prose-code);
font-weight: 600; font-weight: 600;
font-size: 0.875em; font-size: 0.875em;
background-color: color-mix(in srgb, rgba(rgba(var(--color-neutral-50), 1), 1) 100%, transparent); background-color: rgba(var(--color-neutral-50), 1);
@supports (color: color-mix(in lab, red, red)) {
background-color: color-mix(in oklab, rgba(var(--color-neutral-50), 1) 100%, transparent);
}
padding-top: 3px; padding-top: 3px;
padding-bottom: 3px; padding-bottom: 3px;
padding-left: 5px; padding-left: 5px;
@ -696,138 +699,42 @@ body.zen-mode-enable {
line-height: 1.4285714; line-height: 1.4285714;
margin-top: 0.8571429em; margin-top: 0.8571429em;
} }
--tw-prose-body: color-mix(in srgb, rgba(rgba(var(--color-neutral-700), 1), 1) 100%, transparent); --tw-prose-body: rgba(var(--color-neutral-700), 1);
@supports (color: color-mix(in lab, red, red)) { --tw-prose-headings: rgba(var(--color-neutral-800), 1);
--tw-prose-body: color-mix(in oklab, rgba(var(--color-neutral-700), 1) 100%, transparent); --tw-prose-lead: rgba(var(--color-neutral-500), 1);
} --tw-prose-links: rgba(var(--color-primary-600), 1);
--tw-prose-headings: color-mix(in srgb, rgba(rgba(var(--color-neutral-800), 1), 1) 100%, transparent); --tw-prose-bold: rgba(var(--color-neutral-900), 1);
@supports (color: color-mix(in lab, red, red)) { --tw-prose-counters: rgba(var(--color-neutral-800), 1);
--tw-prose-headings: color-mix(in oklab, rgba(var(--color-neutral-800), 1) 100%, transparent); --tw-prose-bullets: rgba(var(--color-neutral-500), 1);
} --tw-prose-hr: rgba(var(--color-neutral-200), 1);
--tw-prose-lead: color-mix(in srgb, rgba(rgba(var(--color-neutral-500), 1), 1) 100%, transparent); --tw-prose-quotes: rgba(var(--color-neutral-700), 1);
@supports (color: color-mix(in lab, red, red)) { --tw-prose-quote-borders: rgba(var(--color-primary-200), 1);
--tw-prose-lead: color-mix(in oklab, rgba(var(--color-neutral-500), 1) 100%, transparent); --tw-prose-captions: rgba(var(--color-neutral-500), 1);
}
--tw-prose-links: color-mix(in srgb, rgba(rgba(var(--color-primary-600), 1), 1) 100%, transparent);
@supports (color: color-mix(in lab, red, red)) {
--tw-prose-links: color-mix(in oklab, rgba(var(--color-primary-600), 1) 100%, transparent);
}
--tw-prose-bold: color-mix(in srgb, rgba(rgba(var(--color-neutral-900), 1), 1) 100%, transparent);
@supports (color: color-mix(in lab, red, red)) {
--tw-prose-bold: color-mix(in oklab, rgba(var(--color-neutral-900), 1) 100%, transparent);
}
--tw-prose-counters: color-mix(in srgb, rgba(rgba(var(--color-neutral-800), 1), 1) 100%, transparent);
@supports (color: color-mix(in lab, red, red)) {
--tw-prose-counters: color-mix(in oklab, rgba(var(--color-neutral-800), 1) 100%, transparent);
}
--tw-prose-bullets: color-mix(in srgb, rgba(rgba(var(--color-neutral-500), 1), 1) 100%, transparent);
@supports (color: color-mix(in lab, red, red)) {
--tw-prose-bullets: color-mix(in oklab, rgba(var(--color-neutral-500), 1) 100%, transparent);
}
--tw-prose-hr: color-mix(in srgb, rgba(rgba(var(--color-neutral-200), 1), 1) 100%, transparent);
@supports (color: color-mix(in lab, red, red)) {
--tw-prose-hr: color-mix(in oklab, rgba(var(--color-neutral-200), 1) 100%, transparent);
}
--tw-prose-quotes: color-mix(in srgb, rgba(rgba(var(--color-neutral-700), 1), 1) 100%, transparent);
@supports (color: color-mix(in lab, red, red)) {
--tw-prose-quotes: color-mix(in oklab, rgba(var(--color-neutral-700), 1) 100%, transparent);
}
--tw-prose-quote-borders: color-mix(in srgb, rgba(rgba(var(--color-primary-200), 1), 1) 100%, transparent);
@supports (color: color-mix(in lab, red, red)) {
--tw-prose-quote-borders: color-mix(in oklab, rgba(var(--color-primary-200), 1) 100%, transparent);
}
--tw-prose-captions: color-mix(in srgb, rgba(rgba(var(--color-neutral-500), 1), 1) 100%, transparent);
@supports (color: color-mix(in lab, red, red)) {
--tw-prose-captions: color-mix(in oklab, rgba(var(--color-neutral-500), 1) 100%, transparent);
}
--tw-prose-kbd: oklch(21% 0.034 264.665); --tw-prose-kbd: oklch(21% 0.034 264.665);
--tw-prose-kbd-shadows: NaN NaN NaN; --tw-prose-kbd-shadows: NaN NaN NaN;
--tw-prose-code: color-mix(in srgb, rgba(rgba(var(--color-secondary-700), 1), 1) 100%, transparent); --tw-prose-code: rgba(var(--color-secondary-700), 1);
@supports (color: color-mix(in lab, red, red)) { --tw-prose-pre-code: rgba(var(--color-neutral-700), 1);
--tw-prose-code: color-mix(in oklab, rgba(var(--color-secondary-700), 1) 100%, transparent); --tw-prose-pre-bg: rgba(var(--color-neutral-50), 1);
} --tw-prose-th-borders: rgba(var(--color-neutral-500), 1);
--tw-prose-pre-code: color-mix(in srgb, rgba(rgba(var(--color-neutral-700), 1), 1) 100%, transparent); --tw-prose-td-borders: rgba(var(--color-neutral-300), 1);
@supports (color: color-mix(in lab, red, red)) { --tw-prose-invert-body: rgba(var(--color-neutral-300), 1);
--tw-prose-pre-code: color-mix(in oklab, rgba(var(--color-neutral-700), 1) 100%, transparent); --tw-prose-invert-headings: rgba(var(--color-neutral-50), 1);
} --tw-prose-invert-lead: rgba(var(--color-neutral-500), 1);
--tw-prose-pre-bg: color-mix(in srgb, rgba(rgba(var(--color-neutral-50), 1), 1) 100%, transparent); --tw-prose-invert-links: rgba(var(--color-primary-400), 1);
@supports (color: color-mix(in lab, red, red)) { --tw-prose-invert-bold: rgba(var(--color-neutral), 1);
--tw-prose-pre-bg: color-mix(in oklab, rgba(var(--color-neutral-50), 1) 100%, transparent); --tw-prose-invert-counters: rgba(var(--color-neutral-400), 1);
} --tw-prose-invert-bullets: rgba(var(--color-neutral-600), 1);
--tw-prose-th-borders: color-mix(in srgb, rgba(rgba(var(--color-neutral-500), 1), 1) 100%, transparent); --tw-prose-invert-hr: rgba(var(--color-neutral-500), 1);
@supports (color: color-mix(in lab, red, red)) { --tw-prose-invert-quotes: rgba(var(--color-neutral-200), 1);
--tw-prose-th-borders: color-mix(in oklab, rgba(var(--color-neutral-500), 1) 100%, transparent); --tw-prose-invert-quote-borders: rgba(var(--color-primary-900), 1);
} --tw-prose-invert-captions: rgba(var(--color-neutral-400), 1);
--tw-prose-td-borders: color-mix(in srgb, rgba(rgba(var(--color-neutral-300), 1), 1) 100%, transparent);
@supports (color: color-mix(in lab, red, red)) {
--tw-prose-td-borders: color-mix(in oklab, rgba(var(--color-neutral-300), 1) 100%, transparent);
}
--tw-prose-invert-body: color-mix(in srgb, rgba(rgba(var(--color-neutral-300), 1), 1) 100%, transparent);
@supports (color: color-mix(in lab, red, red)) {
--tw-prose-invert-body: color-mix(in oklab, rgba(var(--color-neutral-300), 1) 100%, transparent);
}
--tw-prose-invert-headings: color-mix(in srgb, rgba(rgba(var(--color-neutral-50), 1), 1) 100%, transparent);
@supports (color: color-mix(in lab, red, red)) {
--tw-prose-invert-headings: color-mix(in oklab, rgba(var(--color-neutral-50), 1) 100%, transparent);
}
--tw-prose-invert-lead: color-mix(in srgb, rgba(rgba(var(--color-neutral-500), 1), 1) 100%, transparent);
@supports (color: color-mix(in lab, red, red)) {
--tw-prose-invert-lead: color-mix(in oklab, rgba(var(--color-neutral-500), 1) 100%, transparent);
}
--tw-prose-invert-links: color-mix(in srgb, rgba(rgba(var(--color-primary-400), 1), 1) 100%, transparent);
@supports (color: color-mix(in lab, red, red)) {
--tw-prose-invert-links: color-mix(in oklab, rgba(var(--color-primary-400), 1) 100%, transparent);
}
--tw-prose-invert-bold: color-mix(in srgb, rgba(rgba(var(--color-neutral), 1), 1) 100%, transparent);
@supports (color: color-mix(in lab, red, red)) {
--tw-prose-invert-bold: color-mix(in oklab, rgba(var(--color-neutral), 1) 100%, transparent);
}
--tw-prose-invert-counters: color-mix(in srgb, rgba(rgba(var(--color-neutral-400), 1), 1) 100%, transparent);
@supports (color: color-mix(in lab, red, red)) {
--tw-prose-invert-counters: color-mix(in oklab, rgba(var(--color-neutral-400), 1) 100%, transparent);
}
--tw-prose-invert-bullets: color-mix(in srgb, rgba(rgba(var(--color-neutral-600), 1), 1) 100%, transparent);
@supports (color: color-mix(in lab, red, red)) {
--tw-prose-invert-bullets: color-mix(in oklab, rgba(var(--color-neutral-600), 1) 100%, transparent);
}
--tw-prose-invert-hr: color-mix(in srgb, rgba(rgba(var(--color-neutral-500), 1), 1) 100%, transparent);
@supports (color: color-mix(in lab, red, red)) {
--tw-prose-invert-hr: color-mix(in oklab, rgba(var(--color-neutral-500), 1) 100%, transparent);
}
--tw-prose-invert-quotes: color-mix(in srgb, rgba(rgba(var(--color-neutral-200), 1), 1) 100%, transparent);
@supports (color: color-mix(in lab, red, red)) {
--tw-prose-invert-quotes: color-mix(in oklab, rgba(var(--color-neutral-200), 1) 100%, transparent);
}
--tw-prose-invert-quote-borders: color-mix(in srgb, rgba(rgba(var(--color-primary-900), 1), 1) 100%, transparent);
@supports (color: color-mix(in lab, red, red)) {
--tw-prose-invert-quote-borders: color-mix(in oklab, rgba(var(--color-primary-900), 1) 100%, transparent);
}
--tw-prose-invert-captions: color-mix(in srgb, rgba(rgba(var(--color-neutral-400), 1), 1) 100%, transparent);
@supports (color: color-mix(in lab, red, red)) {
--tw-prose-invert-captions: color-mix(in oklab, rgba(var(--color-neutral-400), 1) 100%, transparent);
}
--tw-prose-invert-kbd: #fff; --tw-prose-invert-kbd: #fff;
--tw-prose-invert-kbd-shadows: 255 255 255; --tw-prose-invert-kbd-shadows: 255 255 255;
--tw-prose-invert-code: color-mix(in srgb, rgba(rgba(var(--color-secondary-400), 1), 1) 100%, transparent); --tw-prose-invert-code: rgba(var(--color-secondary-400), 1);
@supports (color: color-mix(in lab, red, red)) { --tw-prose-invert-pre-code: rgba(var(--color-neutral-200), 1);
--tw-prose-invert-code: color-mix(in oklab, rgba(var(--color-secondary-400), 1) 100%, transparent); --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-pre-code: color-mix(in srgb, rgba(rgba(var(--color-neutral-200), 1), 1) 100%, transparent); --tw-prose-invert-td-borders: rgba(var(--color-neutral-700), 1);
@supports (color: color-mix(in lab, red, red)) {
--tw-prose-invert-pre-code: color-mix(in oklab, rgba(var(--color-neutral-200), 1) 100%, transparent);
}
--tw-prose-invert-pre-bg: color-mix(in srgb, rgba(rgba(var(--color-neutral-700), 1), 1) 100%, transparent);
@supports (color: color-mix(in lab, red, red)) {
--tw-prose-invert-pre-bg: color-mix(in oklab, rgba(var(--color-neutral-700), 1) 100%, transparent);
}
--tw-prose-invert-th-borders: color-mix(in srgb, rgba(rgba(var(--color-neutral-500), 1), 1) 100%, transparent);
@supports (color: color-mix(in lab, red, red)) {
--tw-prose-invert-th-borders: color-mix(in oklab, rgba(var(--color-neutral-500), 1) 100%, transparent);
}
--tw-prose-invert-td-borders: color-mix(in srgb, rgba(rgba(var(--color-neutral-700), 1), 1) 100%, transparent);
@supports (color: color-mix(in lab, red, red)) {
--tw-prose-invert-td-borders: color-mix(in oklab, rgba(var(--color-neutral-700), 1) 100%, transparent);
}
font-size: 1rem; font-size: 1rem;
line-height: 1.75; line-height: 1.75;
:where(picture > img):not(:where([class~="not-prose"],[class~="not-prose"] *)) { :where(picture > img):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
@ -913,14 +820,8 @@ body.zen-mode-enable {
margin-bottom: 0; margin-bottom: 0;
} }
:where(mark):not(:where([class~="not-prose"],[class~="not-prose"] *)) { :where(mark):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
color: color-mix(in srgb, rgba(rgba(var(--color-neutral-800), 1), 1) 100%, transparent); color: rgba(var(--color-neutral-800), 1);
@supports (color: color-mix(in lab, red, red)) { background-color: rgba(var(--color-primary-600), 1);
color: color-mix(in oklab, rgba(var(--color-neutral-800), 1) 100%, transparent);
}
background-color: color-mix(in srgb, rgba(rgba(var(--color-primary-600), 1), 1) 100%, transparent);
@supports (color: color-mix(in lab, red, red)) {
background-color: color-mix(in oklab, rgba(var(--color-primary-600), 1) 100%, transparent);
}
padding: 0.1rem 0.2rem; padding: 0.1rem 0.2rem;
border-radius: 0.25rem; border-radius: 0.25rem;
} }
@ -931,21 +832,21 @@ body.zen-mode-enable {
display: none; display: none;
} }
:where(a.active):not(:where([class~="not-prose"],[class~="not-prose"] *)) { :where(a.active):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
text-decoration-color: color-mix(in srgb, rgba(rgba(var(--color-primary-600), 1), 1) 100%, transparent); text-decoration-color: rgba(var(--color-primary-600), 1);
@supports (color: color-mix(in lab, red, red)) {
text-decoration-color: color-mix(in oklab, rgba(var(--color-primary-600), 1) 100%, transparent);
}
} }
:where(p.active):not(:where([class~="not-prose"],[class~="not-prose"] *)) { :where(p.active):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
text-decoration-color: color-mix(in srgb, rgba(rgba(var(--color-primary-600), 1), 1) 100%, transparent); text-decoration-color: rgba(var(--color-primary-600), 1);
@supports (color: color-mix(in lab, red, red)) {
text-decoration-color: color-mix(in oklab, rgba(var(--color-primary-600), 1) 100%, transparent);
}
} }
} }
.\!mt-0 { .\!mt-0 {
margin-top: calc(var(--spacing) * 0) !important; margin-top: calc(var(--spacing) * 0) !important;
} }
.-mt-\[2px\] {
margin-top: calc(2px * -1);
}
.-mt-\[15px\] {
margin-top: calc(15px * -1);
}
.mt-0 { .mt-0 {
margin-top: calc(var(--spacing) * 0); margin-top: calc(var(--spacing) * 0);
} }
@ -979,18 +880,21 @@ body.zen-mode-enable {
.mt-20 { .mt-20 {
margin-top: calc(var(--spacing) * 20); margin-top: calc(var(--spacing) * 20);
} }
.mt-\[-2px\] {
margin-top: -2px;
}
.mt-\[0\.1rem\] { .mt-\[0\.1rem\] {
margin-top: 0.1rem; margin-top: 0.1rem;
} }
.mt-\[0\.5rem\] {
margin-top: 0.5rem;
}
.-mr-48 { .-mr-48 {
margin-right: calc(var(--spacing) * -48); margin-right: calc(var(--spacing) * -48);
} }
.-mr-\[100\%\] { .-mr-\[100\%\] {
margin-right: calc(100% * -1); margin-right: calc(100% * -1);
} }
.mr-0 {
margin-right: calc(var(--spacing) * 0);
}
.mr-1 { .mr-1 {
margin-right: calc(var(--spacing) * 1); margin-right: calc(var(--spacing) * 1);
} }
@ -1003,6 +907,9 @@ body.zen-mode-enable {
.mr-5 { .mr-5 {
margin-right: calc(var(--spacing) * 5); margin-right: calc(var(--spacing) * 5);
} }
.mr-\[10px\] {
margin-right: 10px;
}
.mr-auto { .mr-auto {
margin-right: auto; margin-right: auto;
} }
@ -1054,6 +961,9 @@ body.zen-mode-enable {
.-ml-12 { .-ml-12 {
margin-left: calc(var(--spacing) * -12); margin-left: calc(var(--spacing) * -12);
} }
.ml-0 {
margin-left: calc(var(--spacing) * 0);
}
.ml-2 { .ml-2 {
margin-left: calc(var(--spacing) * 2); margin-left: calc(var(--spacing) * 2);
} }
@ -1507,8 +1417,8 @@ body.zen-mode-enable {
.overflow-visible { .overflow-visible {
overflow: visible; overflow: visible;
} }
.overflow-y-scroll { .overflow-y-auto {
overflow-y: scroll; overflow-y: auto;
} }
.overscroll-contain { .overscroll-contain {
overscroll-behavior: contain; overscroll-behavior: contain;
@ -1649,50 +1559,26 @@ body.zen-mode-enable {
--tw-prose-th-borders: var(--tw-prose-invert-th-borders); --tw-prose-th-borders: var(--tw-prose-invert-th-borders);
--tw-prose-td-borders: var(--tw-prose-invert-td-borders); --tw-prose-td-borders: var(--tw-prose-invert-td-borders);
:where(a):not(:where([class~="not-prose"],[class~="not-prose"] *)) { :where(a):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
text-decoration-color: color-mix(in srgb, rgba(rgba(var(--color-neutral-600), 1), 1) 100%, transparent); text-decoration-color: rgba(var(--color-neutral-600), 1);
@supports (color: color-mix(in lab, red, red)) {
text-decoration-color: color-mix(in oklab, rgba(var(--color-neutral-600), 1) 100%, transparent);
}
&:hover { &:hover {
color: color-mix(in srgb, rgba(rgba(var(--color-primary-400), 1), 1) 100%, transparent); color: rgba(var(--color-primary-400), 1);
@supports (color: color-mix(in lab, red, red)) {
color: color-mix(in oklab, rgba(var(--color-primary-400), 1) 100%, transparent);
}
} }
} }
:where(kbd):not(:where([class~="not-prose"],[class~="not-prose"] *)) { :where(kbd):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
color: color-mix(in srgb, rgba(rgba(var(--color-neutral-200), 1), 1) 100%, transparent); color: rgba(var(--color-neutral-200), 1);
@supports (color: color-mix(in lab, red, red)) { background-color: rgba(var(--color-neutral-700), 1);
color: color-mix(in oklab, rgba(var(--color-neutral-200), 1) 100%, transparent);
}
background-color: color-mix(in srgb, rgba(rgba(var(--color-neutral-700), 1), 1) 100%, transparent);
@supports (color: color-mix(in lab, red, red)) {
background-color: color-mix(in oklab, rgba(var(--color-neutral-700), 1) 100%, transparent);
}
} }
:where(mark):not(:where([class~="not-prose"],[class~="not-prose"] *)) { :where(mark):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
background-color: color-mix(in srgb, rgba(rgba(var(--color-primary-400), 1), 1) 100%, transparent); background-color: rgba(var(--color-primary-400), 1);
@supports (color: color-mix(in lab, red, red)) {
background-color: color-mix(in oklab, rgba(var(--color-primary-400), 1) 100%, transparent);
}
} }
:where(code):not(:where([class~="not-prose"],[class~="not-prose"] *)) { :where(code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
background-color: color-mix(in srgb, rgba(rgba(var(--color-neutral-700), 1), 1) 100%, transparent); background-color: rgba(var(--color-neutral-700), 1);
@supports (color: color-mix(in lab, red, red)) {
background-color: color-mix(in oklab, rgba(var(--color-neutral-700), 1) 100%, transparent);
}
} }
:where(a.active):not(:where([class~="not-prose"],[class~="not-prose"] *)) { :where(a.active):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
text-decoration-color: color-mix(in srgb, rgba(rgba(var(--color-primary-400), 1), 1) 100%, transparent); text-decoration-color: rgba(var(--color-primary-400), 1);
@supports (color: color-mix(in lab, red, red)) {
text-decoration-color: color-mix(in oklab, rgba(var(--color-primary-400), 1) 100%, transparent);
}
} }
:where(p.active):not(:where([class~="not-prose"],[class~="not-prose"] *)) { :where(p.active):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
text-decoration-color: color-mix(in srgb, rgba(rgba(var(--color-primary-400), 1), 1) 100%, transparent); text-decoration-color: rgba(var(--color-primary-400), 1);
@supports (color: color-mix(in lab, red, red)) {
text-decoration-color: color-mix(in oklab, rgba(var(--color-primary-400), 1) 100%, transparent);
}
} }
} }
.bg-\[\#6d6d6d\] { .bg-\[\#6d6d6d\] {
@ -1887,6 +1773,15 @@ body.zen-mode-enable {
.pt-16 { .pt-16 {
padding-top: calc(var(--spacing) * 16); padding-top: calc(var(--spacing) * 16);
} }
.pt-\[2px\] {
padding-top: 2px;
}
.pt-\[5px\] {
padding-top: 5px;
}
.pr-0 {
padding-right: calc(var(--spacing) * 0);
}
.pr-\[24px\] { .pr-\[24px\] {
padding-right: 24px; padding-right: 24px;
} }
@ -1905,6 +1800,12 @@ body.zen-mode-enable {
.pb-32 { .pb-32 {
padding-bottom: calc(var(--spacing) * 32); padding-bottom: calc(var(--spacing) * 32);
} }
.pb-\[3px\] {
padding-bottom: 3px;
}
.pl-0 {
padding-left: calc(var(--spacing) * 0);
}
.pl-2 { .pl-2 {
padding-left: calc(var(--spacing) * 2); padding-left: calc(var(--spacing) * 2);
} }
@ -2215,7 +2116,7 @@ body.zen-mode-enable {
backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,); backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
} }
.transition { .transition {
transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter; transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, visibility, content-visibility, overlay, pointer-events;
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
transition-duration: var(--tw-duration, var(--default-transition-duration)); transition-duration: var(--tw-duration, var(--default-transition-duration));
} }
@ -3205,50 +3106,26 @@ body.zen-mode-enable {
--tw-prose-th-borders: var(--tw-prose-invert-th-borders); --tw-prose-th-borders: var(--tw-prose-invert-th-borders);
--tw-prose-td-borders: var(--tw-prose-invert-td-borders); --tw-prose-td-borders: var(--tw-prose-invert-td-borders);
:where(a):not(:where([class~="not-prose"],[class~="not-prose"] *)) { :where(a):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
text-decoration-color: color-mix(in srgb, rgba(rgba(var(--color-neutral-600), 1), 1) 100%, transparent); text-decoration-color: rgba(var(--color-neutral-600), 1);
@supports (color: color-mix(in lab, red, red)) {
text-decoration-color: color-mix(in oklab, rgba(var(--color-neutral-600), 1) 100%, transparent);
}
&:hover { &:hover {
color: color-mix(in srgb, rgba(rgba(var(--color-primary-400), 1), 1) 100%, transparent); color: rgba(var(--color-primary-400), 1);
@supports (color: color-mix(in lab, red, red)) {
color: color-mix(in oklab, rgba(var(--color-primary-400), 1) 100%, transparent);
}
} }
} }
:where(kbd):not(:where([class~="not-prose"],[class~="not-prose"] *)) { :where(kbd):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
color: color-mix(in srgb, rgba(rgba(var(--color-neutral-200), 1), 1) 100%, transparent); color: rgba(var(--color-neutral-200), 1);
@supports (color: color-mix(in lab, red, red)) { background-color: rgba(var(--color-neutral-700), 1);
color: color-mix(in oklab, rgba(var(--color-neutral-200), 1) 100%, transparent);
}
background-color: color-mix(in srgb, rgba(rgba(var(--color-neutral-700), 1), 1) 100%, transparent);
@supports (color: color-mix(in lab, red, red)) {
background-color: color-mix(in oklab, rgba(var(--color-neutral-700), 1) 100%, transparent);
}
} }
:where(mark):not(:where([class~="not-prose"],[class~="not-prose"] *)) { :where(mark):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
background-color: color-mix(in srgb, rgba(rgba(var(--color-primary-400), 1), 1) 100%, transparent); background-color: rgba(var(--color-primary-400), 1);
@supports (color: color-mix(in lab, red, red)) {
background-color: color-mix(in oklab, rgba(var(--color-primary-400), 1) 100%, transparent);
}
} }
:where(code):not(:where([class~="not-prose"],[class~="not-prose"] *)) { :where(code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
background-color: color-mix(in srgb, rgba(rgba(var(--color-neutral-700), 1), 1) 100%, transparent); background-color: rgba(var(--color-neutral-700), 1);
@supports (color: color-mix(in lab, red, red)) {
background-color: color-mix(in oklab, rgba(var(--color-neutral-700), 1) 100%, transparent);
}
} }
:where(a.active):not(:where([class~="not-prose"],[class~="not-prose"] *)) { :where(a.active):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
text-decoration-color: color-mix(in srgb, rgba(rgba(var(--color-primary-400), 1), 1) 100%, transparent); text-decoration-color: rgba(var(--color-primary-400), 1);
@supports (color: color-mix(in lab, red, red)) {
text-decoration-color: color-mix(in oklab, rgba(var(--color-primary-400), 1) 100%, transparent);
}
} }
:where(p.active):not(:where([class~="not-prose"],[class~="not-prose"] *)) { :where(p.active):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
text-decoration-color: color-mix(in srgb, rgba(rgba(var(--color-primary-400), 1), 1) 100%, transparent); text-decoration-color: rgba(var(--color-primary-400), 1);
@supports (color: color-mix(in lab, red, red)) {
text-decoration-color: color-mix(in oklab, rgba(var(--color-primary-400), 1) 100%, transparent);
}
} }
} }
} }
@ -3478,6 +3355,9 @@ body a, body button {
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
transition-duration: var(--tw-duration, var(--default-transition-duration)); transition-duration: var(--tw-duration, var(--default-transition-duration));
} }
button, [role="button"] {
cursor: pointer;
}
.icon svg { .icon svg {
height: 1em; height: 1em;
width: 1em; width: 1em;
@ -3502,7 +3382,7 @@ body a, body button {
padding-right: calc(var(--spacing) * 4); padding-right: calc(var(--spacing) * 4);
} }
} }
.prose ul>li, .prose ol>li { .prose ul > li, .prose ol > li {
&:where(:dir(rtl), [dir="rtl"], [dir="rtl"] *) { &:where(:dir(rtl), [dir="rtl"], [dir="rtl"] *) {
margin-right: calc(var(--spacing) * 7); margin-right: calc(var(--spacing) * 7);
} }
@ -3513,7 +3393,7 @@ body a, body button {
padding-left: calc(var(--spacing) * 0); padding-left: calc(var(--spacing) * 0);
} }
} }
.prose ol>li:before, .prose ul>li:before { .prose ol > li:before, .prose ul > li:before {
&:where(:dir(rtl), [dir="rtl"], [dir="rtl"] *) { &:where(:dir(rtl), [dir="rtl"], [dir="rtl"] *) {
right: calc(var(--spacing) * 1); right: calc(var(--spacing) * 1);
} }
@ -3531,9 +3411,19 @@ body a, body button {
padding-left: calc(var(--spacing) * 0); padding-left: calc(var(--spacing) * 0);
} }
} }
.prose div.min-w-0.max-w-prose>*:first-child { .prose div.min-w-0.max-w-prose > *:first-child {
margin-top: calc(var(--spacing) * 3); margin-top: calc(var(--spacing) * 3);
} }
#TableOfContents {
@media (width >= 1024px) {
max-width: 25vw;
}
}
#TOCView {
max-height: calc(100vh - 150px);
min-height: 0;
overflow-x: hidden;
}
.toc ul, .toc li { .toc ul, .toc li {
list-style-type: none; list-style-type: none;
padding-inline: calc(var(--spacing) * 0); padding-inline: calc(var(--spacing) * 0);
@ -3556,7 +3446,7 @@ body a, body button {
color: rgba(var(--color-neutral-400), 1); color: rgba(var(--color-neutral-400), 1);
} }
} }
.toc ul>li { .toc ul > li {
&:where(:dir(rtl), [dir="rtl"], [dir="rtl"] *) { &:where(:dir(rtl), [dir="rtl"], [dir="rtl"] *) {
margin-right: calc(var(--spacing) * 0); margin-right: calc(var(--spacing) * 0);
} }
@ -3568,7 +3458,7 @@ body a, body button {
position: relative; position: relative;
z-index: 0; z-index: 0;
} }
.highlight:hover>.copy-button { .highlight:hover > .copy-button {
visibility: visible; visibility: visible;
} }
.copy-button { .copy-button {
@ -3579,6 +3469,10 @@ body a, body button {
z-index: 10; z-index: 10;
width: calc(var(--spacing) * 20); width: calc(var(--spacing) * 20);
cursor: pointer; cursor: pointer;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
border-top-right-radius: var(--radius-md); border-top-right-radius: var(--radius-md);
border-bottom-left-radius: var(--radius-md); border-bottom-left-radius: var(--radius-md);
background-color: rgba(var(--color-neutral-200), 1); background-color: rgba(var(--color-neutral-200), 1);
@ -3610,6 +3504,10 @@ body a, body button {
.katex-display { .katex-display {
overflow: auto hidden; overflow: auto hidden;
} }
.katex-display {
padding-right: 2px;
width: calc(100% - 2px);
}
table { table {
display: block; display: block;
overflow: auto; overflow: auto;
@ -3635,6 +3533,9 @@ a {
color: rgba(var(--color-neutral-200), 1); color: rgba(var(--color-neutral-200), 1);
} }
} }
.prose-invert .highlight pre > code {
background-color: unset;
}
.chroma .lntd, .chroma .lntd pre { .chroma .lntd, .chroma .lntd pre {
margin: calc(var(--spacing) * 0); margin: calc(var(--spacing) * 0);
--tw-border-style: none; --tw-border-style: none;
@ -3826,9 +3727,7 @@ pre {
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: cover; background-size: cover;
background-position: center; background-position: center;
width: calc(100% + 40px);
z-index: -10; z-index: -10;
margin-left: -20px;
} }
.hero_gradient { .hero_gradient {
width: 100%; width: 100%;
@ -3844,6 +3743,9 @@ pre {
height: 0px; height: 0px;
visibility: hidden; visibility: hidden;
} }
[id^="fn"], [id^="fnref"] {
scroll-margin-top: 145px;
}
@screen sm { @screen sm {
.thumbnail { .thumbnail {
min-width: 100%; min-width: 100%;

View file

@ -1,16 +1,14 @@
#zen-mode-button { #zen-mode-button {
cursor:pointer cursor: pointer;
} }
.zen-mode { .zen-mode {
position: relative; position: relative;
} }
body.zen-mode-enable { body.zen-mode-enable {
#bmc-wbtn, .author { #bmc-wbtn,
display:none !important; .author {
} display: none !important;
}
} }

View file

@ -1,6 +1,6 @@
/*! Blowfish | MIT License | https://github.com/nunocoracao/blowfish */ /*! Blowfish | MIT License | https://github.com/nunocoracao/blowfish */
@import './components/zen-mode.css'; @import "./components/zen-mode.css";
@import "tailwindcss"; @import "tailwindcss";
@config "../../tailwind.config.js"; @config "../../tailwind.config.js";
@ -10,6 +10,11 @@ body button {
@apply transition-colors; @apply transition-colors;
} }
button,
[role="button"] {
cursor: pointer;
}
/* Scale SVG icons to text size */ /* Scale SVG icons to text size */
.icon svg { .icon svg {
@apply h-[1em] w-[1em]; @apply h-[1em] w-[1em];
@ -33,13 +38,13 @@ body button {
@apply rtl:pr-4 rtl:border-l-0 rtl:border-r-4; @apply rtl:pr-4 rtl:border-l-0 rtl:border-r-4;
} }
.prose ul>li, .prose ul > li,
.prose ol>li { .prose ol > li {
@apply rtl:pl-0 rtl:pr-2 rtl:mr-7; @apply rtl:pl-0 rtl:pr-2 rtl:mr-7;
} }
.prose ol>li:before, .prose ol > li:before,
.prose ul>li:before { .prose ul > li:before {
@apply rtl:left-auto rtl:right-1; @apply rtl:left-auto rtl:right-1;
} }
@ -54,11 +59,21 @@ body button {
} }
/* Adjust first child within prose */ /* Adjust first child within prose */
.prose div.min-w-0.max-w-prose>*:first-child { .prose div.min-w-0.max-w-prose > *:first-child {
@apply mt-3; @apply mt-3;
} }
/* Table of Contents */ /* Table of Contents */
#TableOfContents {
@apply lg:max-w-[25vw];
}
#TOCView {
max-height: calc(100vh - 150px);
min-height: 0;
overflow-x: hidden;
}
.toc ul, .toc ul,
.toc li { .toc li {
@apply px-0 leading-snug list-none; @apply px-0 leading-snug list-none;
@ -72,7 +87,7 @@ body button {
@apply font-normal text-neutral-700 dark:text-neutral-400; @apply font-normal text-neutral-700 dark:text-neutral-400;
} }
.toc ul>li { .toc ul > li {
@apply rtl:mr-0; @apply rtl:mr-0;
} }
@ -85,12 +100,14 @@ body button {
@apply relative z-0; @apply relative z-0;
} }
.highlight:hover>.copy-button { .highlight:hover > .copy-button {
@apply visible; @apply visible;
} }
.copy-button { .copy-button {
@apply absolute top-0 right-0 z-10 invisible w-20 py-1 font-mono text-sm cursor-pointer opacity-90 bg-neutral-200 whitespace-nowrap rounded-bl-md rounded-tr-md text-neutral-700 dark:bg-neutral-600 dark:text-neutral-200; @apply absolute top-0 right-0 z-10 invisible w-20 py-1 font-mono text-sm cursor-pointer
opacity-90 bg-neutral-200 whitespace-nowrap rounded-bl-md rounded-tr-md text-neutral-700
dark:bg-neutral-600 dark:text-neutral-200 overflow-hidden truncate;
} }
.copy-button:hover, .copy-button:hover,
@ -105,25 +122,33 @@ body button {
} }
/* Fix long KaTeX equations on mobile (see https://katex.org/docs/issues.html#css-customization) */ /* Fix long KaTeX equations on mobile (see https://katex.org/docs/issues.html#css-customization) */
.katex-display { overflow: auto hidden } .katex-display {
overflow: auto hidden;
}
/* Fix katex overflow https://github.com/nunocoracao/blowfish/issues/2138 */
.katex-display {
padding-right: 2px;
width: calc(100% - 2px);
}
/* Fix long tables breaking out of article on mobile */ /* Fix long tables breaking out of article on mobile */
table { table {
display: block; display: block;
overflow: auto; overflow: auto;
} }
/* Fix long inline code sections breaking out of article on mobile */ /* Fix long inline code sections breaking out of article on mobile */
code { code {
word-wrap: break-word; /* All browsers since IE 5.5+ */ word-wrap: break-word; /* All browsers since IE 5.5+ */
overflow-wrap: break-word; /* Renamed property in CSS3 draft spec */ overflow-wrap: break-word; /* Renamed property in CSS3 draft spec */
} }
/* Fix long URLs breaking out of article bounds on mobile */ /* Fix long URLs breaking out of article bounds on mobile */
a { a {
word-break: break-word; word-break: break-word;
word-wrap: break-word; word-wrap: break-word;
overflow-wrap: break-word; overflow-wrap: break-word;
} }
/* -- Chroma Highlight -- */ /* -- Chroma Highlight -- */
@ -132,6 +157,10 @@ a {
@apply static rounded-md text-neutral-700 bg-neutral-50 dark:bg-neutral-700 dark:text-neutral-200; @apply static rounded-md text-neutral-700 bg-neutral-50 dark:bg-neutral-700 dark:text-neutral-200;
} }
.prose-invert .highlight pre > code {
background-color: unset;
}
/* LineTableTD */ /* LineTableTD */
.chroma .lntd, .chroma .lntd,
.chroma .lntd pre { .chroma .lntd pre {
@ -361,36 +390,36 @@ pre {
.thumbnail { .thumbnail {
min-width: 300px; min-width: 300px;
height: 180px; height: 180px;
background-repeat:no-repeat; background-repeat: no-repeat;
background-size:cover; background-size: cover;
background-position:center; background-position: center;
} }
.thumbnail_card { .thumbnail_card {
height: 200px; height: 200px;
background-repeat:no-repeat; background-repeat: no-repeat;
background-size:cover; background-size: cover;
background-position:center; background-position: center;
} }
.thumbnail_card_related { .thumbnail_card_related {
height: 150px; height: 150px;
background-repeat:no-repeat; background-repeat: no-repeat;
background-size:cover; background-size: cover;
background-position:center; background-position: center;
} }
.thumbnail_card_term { .thumbnail_card_term {
height: 150px; height: 150px;
background-repeat:no-repeat; background-repeat: no-repeat;
background-size:cover; background-size: cover;
background-position:center; background-position: center;
} }
.single_hero_basic { .single_hero_basic {
background-repeat:no-repeat; background-repeat: no-repeat;
background-size:cover; background-size: cover;
background-position:center; background-position: center;
} }
.single_hero_round { .single_hero_round {
@ -399,12 +428,10 @@ pre {
} }
.single_hero_background { .single_hero_background {
background-repeat:no-repeat; background-repeat: no-repeat;
background-size:cover; background-size: cover;
background-position:center; background-position: center;
width: calc(100% + 40px);
z-index: -10; z-index: -10;
margin-left: -20px;
} }
.hero_gradient { .hero_gradient {
@ -424,6 +451,12 @@ pre {
visibility: hidden; visibility: hidden;
} }
/* Offset scroll position to avoid header overlap */
[id^="fn"],
[id^="fnref"] {
scroll-margin-top: 145px;
}
@screen sm { @screen sm {
.thumbnail { .thumbnail {
min-width: 100%; min-width: 100%;
@ -452,19 +485,25 @@ pre {
.nested-menu:hover + .menuhide { .nested-menu:hover + .menuhide {
visibility: visible; visibility: visible;
opacity: 1; opacity: 1;
transition: visibility 0.3s, opacity 0.3s ease-in-out ; transition:
visibility 0.3s,
opacity 0.3s ease-in-out;
} }
.menuhide:hover { .menuhide:hover {
visibility: visible; visibility: visible;
opacity: 1; opacity: 1;
transition: visibility 0.3s, opacity 0.3s ease-in-out ; transition:
visibility 0.3s,
opacity 0.3s ease-in-out;
} }
.menuhide { .menuhide {
visibility: hidden; visibility: hidden;
opacity: 0; opacity: 0;
transition: visibility 0.3s, opacity 0.3s ease-in-out ; transition:
visibility 0.3s,
opacity 0.3s ease-in-out;
z-index: 1000; z-index: 1000;
} }
@ -475,179 +514,593 @@ pre {
} }
/* Gallery Specific Styles */ /* Gallery Specific Styles */
.grid-w10 { width: calc(10% - 5px); margin: 0px !important; } .grid-w10 {
.grid-w15 { width: calc(15% - 5px); margin: 0px !important; } width: calc(10% - 5px);
.grid-w20 { width: calc(20% - 5px); margin: 0px !important; } margin: 0px !important;
.grid-w25 { width: calc(25% - 5px); margin: 0px !important; } }
.grid-w30 { width: calc(30% - 5px); margin: 0px !important; } .grid-w15 {
.grid-w33 { width: calc(33% - 5px); margin: 0px !important; } width: calc(15% - 5px);
.grid-w35 { width: calc(35% - 5px); margin: 0px !important; } margin: 0px !important;
.grid-w40 { width: calc(40% - 5px); margin: 0px !important; } }
.grid-w45 { width: calc(45% - 5px); margin: 0px !important; } .grid-w20 {
.grid-w50 { width: calc(50% - 5px); margin: 0px !important; } width: calc(20% - 5px);
.grid-w55 { width: calc(55% - 5px); margin: 0px !important; } margin: 0px !important;
.grid-w60 { width: calc(60% - 5px); margin: 0px !important; } }
.grid-w65 { width: calc(65% - 5px); margin: 0px !important; } .grid-w25 {
.grid-w66 { width: calc(66% - 5px); margin: 0px !important; } width: calc(25% - 5px);
.grid-w70 { width: calc(70% - 5px); margin: 0px !important; } margin: 0px !important;
.grid-w75 { width: calc(75% - 5px); margin: 0px !important; } }
.grid-w80 { width: calc(80% - 5px); margin: 0px !important; } .grid-w30 {
.grid-w85 { width: calc(85% - 5px); margin: 0px !important; } width: calc(30% - 5px);
.grid-w90 { width: calc(90% - 5px); margin: 0px !important; } margin: 0px !important;
.grid-w95 { width: calc(95% - 5px); margin: 0px !important; } }
.grid-w100 { width: calc(100% - 5px); margin: 0px !important; } .grid-w33 {
width: calc(33% - 5px);
margin: 0px !important;
}
.grid-w35 {
width: calc(35% - 5px);
margin: 0px !important;
}
.grid-w40 {
width: calc(40% - 5px);
margin: 0px !important;
}
.grid-w45 {
width: calc(45% - 5px);
margin: 0px !important;
}
.grid-w50 {
width: calc(50% - 5px);
margin: 0px !important;
}
.grid-w55 {
width: calc(55% - 5px);
margin: 0px !important;
}
.grid-w60 {
width: calc(60% - 5px);
margin: 0px !important;
}
.grid-w65 {
width: calc(65% - 5px);
margin: 0px !important;
}
.grid-w66 {
width: calc(66% - 5px);
margin: 0px !important;
}
.grid-w70 {
width: calc(70% - 5px);
margin: 0px !important;
}
.grid-w75 {
width: calc(75% - 5px);
margin: 0px !important;
}
.grid-w80 {
width: calc(80% - 5px);
margin: 0px !important;
}
.grid-w85 {
width: calc(85% - 5px);
margin: 0px !important;
}
.grid-w90 {
width: calc(90% - 5px);
margin: 0px !important;
}
.grid-w95 {
width: calc(95% - 5px);
margin: 0px !important;
}
.grid-w100 {
width: calc(100% - 5px);
margin: 0px !important;
}
@screen sm { @screen sm {
.sm\:grid-w10 { width: calc(10% - 5px); margin: 0px !important; } .sm\:grid-w10 {
.sm\:grid-w15 { width: calc(15% - 5px); margin: 0px !important; } width: calc(10% - 5px);
.sm\:grid-w20 { width: calc(20% - 5px); margin: 0px !important; } margin: 0px !important;
.sm\:grid-w25 { width: calc(25% - 5px); margin: 0px !important; } }
.sm\:grid-w30 { width: calc(30% - 5px); margin: 0px !important; } .sm\:grid-w15 {
.sm\:grid-w33 { width: calc(33% - 5px); margin: 0px !important; } width: calc(15% - 5px);
.sm\:grid-w35 { width: calc(35% - 5px); margin: 0px !important; } margin: 0px !important;
.sm\:grid-w40 { width: calc(40% - 5px); margin: 0px !important; } }
.sm\:grid-w45 { width: calc(45% - 5px); margin: 0px !important; } .sm\:grid-w20 {
.sm\:grid-w50 { width: calc(50% - 5px); margin: 0px !important; } width: calc(20% - 5px);
.sm\:grid-w55 { width: calc(55% - 5px); margin: 0px !important; } margin: 0px !important;
.sm\:grid-w60 { width: calc(60% - 5px); margin: 0px !important; } }
.sm\:grid-w65 { width: calc(65% - 5px); margin: 0px !important; } .sm\:grid-w25 {
.sm\:grid-w66 { width: calc(66% - 5px); margin: 0px !important; } width: calc(25% - 5px);
.sm\:grid-w70 { width: calc(70% - 5px); margin: 0px !important; } margin: 0px !important;
.sm\:grid-w75 { width: calc(75% - 5px); margin: 0px !important; } }
.sm\:grid-w80 { width: calc(80% - 5px); margin: 0px !important; } .sm\:grid-w30 {
.sm\:grid-w85 { width: calc(85% - 5px); margin: 0px !important; } width: calc(30% - 5px);
.sm\:grid-w90 { width: calc(90% - 5px); margin: 0px !important; } margin: 0px !important;
.sm\:grid-w95 { width: calc(95% - 5px); margin: 0px !important; } }
.sm\:grid-w100 { width: calc(100% - 5px); margin: 0px !important; } .sm\:grid-w33 {
width: calc(33% - 5px);
margin: 0px !important;
}
.sm\:grid-w35 {
width: calc(35% - 5px);
margin: 0px !important;
}
.sm\:grid-w40 {
width: calc(40% - 5px);
margin: 0px !important;
}
.sm\:grid-w45 {
width: calc(45% - 5px);
margin: 0px !important;
}
.sm\:grid-w50 {
width: calc(50% - 5px);
margin: 0px !important;
}
.sm\:grid-w55 {
width: calc(55% - 5px);
margin: 0px !important;
}
.sm\:grid-w60 {
width: calc(60% - 5px);
margin: 0px !important;
}
.sm\:grid-w65 {
width: calc(65% - 5px);
margin: 0px !important;
}
.sm\:grid-w66 {
width: calc(66% - 5px);
margin: 0px !important;
}
.sm\:grid-w70 {
width: calc(70% - 5px);
margin: 0px !important;
}
.sm\:grid-w75 {
width: calc(75% - 5px);
margin: 0px !important;
}
.sm\:grid-w80 {
width: calc(80% - 5px);
margin: 0px !important;
}
.sm\:grid-w85 {
width: calc(85% - 5px);
margin: 0px !important;
}
.sm\:grid-w90 {
width: calc(90% - 5px);
margin: 0px !important;
}
.sm\:grid-w95 {
width: calc(95% - 5px);
margin: 0px !important;
}
.sm\:grid-w100 {
width: calc(100% - 5px);
margin: 0px !important;
}
} }
@screen md { @screen md {
.md\:grid-w10 { width: calc(10% - 5px); margin: 0px !important; } .md\:grid-w10 {
.md\:grid-w15 { width: calc(15% - 5px); margin: 0px !important; } width: calc(10% - 5px);
.md\:grid-w20 { width: calc(20% - 5px); margin: 0px !important; } margin: 0px !important;
.md\:grid-w25 { width: calc(25% - 5px); margin: 0px !important; } }
.md\:grid-w30 { width: calc(30% - 5px); margin: 0px !important; } .md\:grid-w15 {
.md\:grid-w33 { width: calc(33% - 5px); margin: 0px !important; } width: calc(15% - 5px);
.md\:grid-w35 { width: calc(35% - 5px); margin: 0px !important; } margin: 0px !important;
.md\:grid-w40 { width: calc(40% - 5px); margin: 0px !important; } }
.md\:grid-w45 { width: calc(45% - 5px); margin: 0px !important; } .md\:grid-w20 {
.md\:grid-w50 { width: calc(50% - 5px); margin: 0px !important; } width: calc(20% - 5px);
.md\:grid-w55 { width: calc(55% - 5px); margin: 0px !important; } margin: 0px !important;
.md\:grid-w60 { width: calc(60% - 5px); margin: 0px !important; } }
.md\:grid-w65 { width: calc(65% - 5px); margin: 0px !important; } .md\:grid-w25 {
.md\:grid-w66 { width: calc(66% - 5px); margin: 0px !important; } width: calc(25% - 5px);
.md\:grid-w70 { width: calc(70% - 5px); margin: 0px !important; } margin: 0px !important;
.md\:grid-w75 { width: calc(75% - 5px); margin: 0px !important; } }
.md\:grid-w80 { width: calc(80% - 5px); margin: 0px !important; } .md\:grid-w30 {
.md\:grid-w85 { width: calc(85% - 5px); margin: 0px !important; } width: calc(30% - 5px);
.md\:grid-w90 { width: calc(90% - 5px); margin: 0px !important; } margin: 0px !important;
.md\:grid-w95 { width: calc(95% - 5px); margin: 0px !important; } }
.md\:grid-w100 { width: calc(100% - 5px); margin: 0px !important; } .md\:grid-w33 {
width: calc(33% - 5px);
margin: 0px !important;
}
.md\:grid-w35 {
width: calc(35% - 5px);
margin: 0px !important;
}
.md\:grid-w40 {
width: calc(40% - 5px);
margin: 0px !important;
}
.md\:grid-w45 {
width: calc(45% - 5px);
margin: 0px !important;
}
.md\:grid-w50 {
width: calc(50% - 5px);
margin: 0px !important;
}
.md\:grid-w55 {
width: calc(55% - 5px);
margin: 0px !important;
}
.md\:grid-w60 {
width: calc(60% - 5px);
margin: 0px !important;
}
.md\:grid-w65 {
width: calc(65% - 5px);
margin: 0px !important;
}
.md\:grid-w66 {
width: calc(66% - 5px);
margin: 0px !important;
}
.md\:grid-w70 {
width: calc(70% - 5px);
margin: 0px !important;
}
.md\:grid-w75 {
width: calc(75% - 5px);
margin: 0px !important;
}
.md\:grid-w80 {
width: calc(80% - 5px);
margin: 0px !important;
}
.md\:grid-w85 {
width: calc(85% - 5px);
margin: 0px !important;
}
.md\:grid-w90 {
width: calc(90% - 5px);
margin: 0px !important;
}
.md\:grid-w95 {
width: calc(95% - 5px);
margin: 0px !important;
}
.md\:grid-w100 {
width: calc(100% - 5px);
margin: 0px !important;
}
} }
@screen lg { @screen lg {
.lg\:grid-w10 { width: calc(10% - 5px); margin: 0px !important; } .lg\:grid-w10 {
.lg\:grid-w15 { width: calc(15% - 5px); margin: 0px !important; } width: calc(10% - 5px);
.lg\:grid-w20 { width: calc(20% - 5px); margin: 0px !important; } margin: 0px !important;
.lg\:grid-w25 { width: calc(25% - 5px); margin: 0px !important; } }
.lg\:grid-w30 { width: calc(30% - 5px); margin: 0px !important; } .lg\:grid-w15 {
.lg\:grid-w33 { width: calc(33% - 5px); margin: 0px !important; } width: calc(15% - 5px);
.lg\:grid-w35 { width: calc(35% - 5px); margin: 0px !important; } margin: 0px !important;
.lg\:grid-w40 { width: calc(40% - 5px); margin: 0px !important; } }
.lg\:grid-w45 { width: calc(45% - 5px); margin: 0px !important; } .lg\:grid-w20 {
.lg\:grid-w50 { width: calc(50% - 5px); margin: 0px !important; } width: calc(20% - 5px);
.lg\:grid-w55 { width: calc(55% - 5px); margin: 0px !important; } margin: 0px !important;
.lg\:grid-w60 { width: calc(60% - 5px); margin: 0px !important; } }
.lg\:grid-w65 { width: calc(65% - 5px); margin: 0px !important; } .lg\:grid-w25 {
.lg\:grid-w66 { width: calc(66% - 5px); margin: 0px !important; } width: calc(25% - 5px);
.lg\:grid-w70 { width: calc(70% - 5px); margin: 0px !important; } margin: 0px !important;
.lg\:grid-w75 { width: calc(75% - 5px); margin: 0px !important; } }
.lg\:grid-w80 { width: calc(80% - 5px); margin: 0px !important; } .lg\:grid-w30 {
.lg\:grid-w85 { width: calc(85% - 5px); margin: 0px !important; } width: calc(30% - 5px);
.lg\:grid-w90 { width: calc(90% - 5px); margin: 0px !important; } margin: 0px !important;
.lg\:grid-w95 { width: calc(95% - 5px); margin: 0px !important; } }
.lg\:grid-w100 { width: calc(100% - 5px); margin: 0px !important; } .lg\:grid-w33 {
width: calc(33% - 5px);
margin: 0px !important;
}
.lg\:grid-w35 {
width: calc(35% - 5px);
margin: 0px !important;
}
.lg\:grid-w40 {
width: calc(40% - 5px);
margin: 0px !important;
}
.lg\:grid-w45 {
width: calc(45% - 5px);
margin: 0px !important;
}
.lg\:grid-w50 {
width: calc(50% - 5px);
margin: 0px !important;
}
.lg\:grid-w55 {
width: calc(55% - 5px);
margin: 0px !important;
}
.lg\:grid-w60 {
width: calc(60% - 5px);
margin: 0px !important;
}
.lg\:grid-w65 {
width: calc(65% - 5px);
margin: 0px !important;
}
.lg\:grid-w66 {
width: calc(66% - 5px);
margin: 0px !important;
}
.lg\:grid-w70 {
width: calc(70% - 5px);
margin: 0px !important;
}
.lg\:grid-w75 {
width: calc(75% - 5px);
margin: 0px !important;
}
.lg\:grid-w80 {
width: calc(80% - 5px);
margin: 0px !important;
}
.lg\:grid-w85 {
width: calc(85% - 5px);
margin: 0px !important;
}
.lg\:grid-w90 {
width: calc(90% - 5px);
margin: 0px !important;
}
.lg\:grid-w95 {
width: calc(95% - 5px);
margin: 0px !important;
}
.lg\:grid-w100 {
width: calc(100% - 5px);
margin: 0px !important;
}
} }
@screen xl { @screen xl {
.xl\:grid-w10 { width: calc(10% - 5px); margin: 0px !important; } .xl\:grid-w10 {
.xl\:grid-w15 { width: calc(15% - 5px); margin: 0px !important; } width: calc(10% - 5px);
.xl\:grid-w20 { width: calc(20% - 5px); margin: 0px !important; } margin: 0px !important;
.xl\:grid-w25 { width: calc(25% - 5px); margin: 0px !important; } }
.xl\:grid-w30 { width: calc(30% - 5px); margin: 0px !important; } .xl\:grid-w15 {
.xl\:grid-w33 { width: calc(33% - 5px); margin: 0px !important; } width: calc(15% - 5px);
.xl\:grid-w35 { width: calc(35% - 5px); margin: 0px !important; } margin: 0px !important;
.xl\:grid-w40 { width: calc(40% - 5px); margin: 0px !important; } }
.xl\:grid-w45 { width: calc(45% - 5px); margin: 0px !important; } .xl\:grid-w20 {
.xl\:grid-w50 { width: calc(50% - 5px); margin: 0px !important; } width: calc(20% - 5px);
.xl\:grid-w55 { width: calc(55% - 5px); margin: 0px !important; } margin: 0px !important;
.xl\:grid-w60 { width: calc(60% - 5px); margin: 0px !important; } }
.xl\:grid-w65 { width: calc(65% - 5px); margin: 0px !important; } .xl\:grid-w25 {
.xl\:grid-w66 { width: calc(66% - 5px); margin: 0px !important; } width: calc(25% - 5px);
.xl\:grid-w70 { width: calc(70% - 5px); margin: 0px !important; } margin: 0px !important;
.xl\:grid-w75 { width: calc(75% - 5px); margin: 0px !important; } }
.xl\:grid-w80 { width: calc(80% - 5px); margin: 0px !important; } .xl\:grid-w30 {
.xl\:grid-w85 { width: calc(85% - 5px); margin: 0px !important; } width: calc(30% - 5px);
.xl\:grid-w90 { width: calc(90% - 5px); margin: 0px !important; } margin: 0px !important;
.xl\:grid-w95 { width: calc(95% - 5px); margin: 0px !important; } }
.xl\:grid-w100 { width: calc(100% - 5px); margin: 0px !important; } .xl\:grid-w33 {
width: calc(33% - 5px);
margin: 0px !important;
}
.xl\:grid-w35 {
width: calc(35% - 5px);
margin: 0px !important;
}
.xl\:grid-w40 {
width: calc(40% - 5px);
margin: 0px !important;
}
.xl\:grid-w45 {
width: calc(45% - 5px);
margin: 0px !important;
}
.xl\:grid-w50 {
width: calc(50% - 5px);
margin: 0px !important;
}
.xl\:grid-w55 {
width: calc(55% - 5px);
margin: 0px !important;
}
.xl\:grid-w60 {
width: calc(60% - 5px);
margin: 0px !important;
}
.xl\:grid-w65 {
width: calc(65% - 5px);
margin: 0px !important;
}
.xl\:grid-w66 {
width: calc(66% - 5px);
margin: 0px !important;
}
.xl\:grid-w70 {
width: calc(70% - 5px);
margin: 0px !important;
}
.xl\:grid-w75 {
width: calc(75% - 5px);
margin: 0px !important;
}
.xl\:grid-w80 {
width: calc(80% - 5px);
margin: 0px !important;
}
.xl\:grid-w85 {
width: calc(85% - 5px);
margin: 0px !important;
}
.xl\:grid-w90 {
width: calc(90% - 5px);
margin: 0px !important;
}
.xl\:grid-w95 {
width: calc(95% - 5px);
margin: 0px !important;
}
.xl\:grid-w100 {
width: calc(100% - 5px);
margin: 0px !important;
}
} }
@screen 2xl { @screen 2xl {
.2xl\:grid-w10 { width: calc(10% - 5px); margin: 0px !important; } .2xl\:grid-w10 {
.2xl\:grid-w15 { width: calc(15% - 5px); margin: 0px !important; } width: calc(10% - 5px);
.2xl\:grid-w20 { width: calc(20% - 5px); margin: 0px !important; } margin: 0px !important;
.2xl\:grid-w25 { width: calc(25% - 5px); margin: 0px !important; } }
.2xl\:grid-w30 { width: calc(30% - 5px); margin: 0px !important; } .2xl\:grid-w15 {
.2xl\:grid-w33 { width: calc(33% - 5px); margin: 0px !important; } width: calc(15% - 5px);
.2xl\:grid-w35 { width: calc(35% - 5px); margin: 0px !important; } margin: 0px !important;
.2xl\:grid-w40 { width: calc(40% - 5px); margin: 0px !important; } }
.2xl\:grid-w45 { width: calc(45% - 5px); margin: 0px !important; } .2xl\:grid-w20 {
.2xl\:grid-w50 { width: calc(50% - 5px); margin: 0px !important; } width: calc(20% - 5px);
.2xl\:grid-w55 { width: calc(55% - 5px); margin: 0px !important; } margin: 0px !important;
.2xl\:grid-w60 { width: calc(60% - 5px); margin: 0px !important; } }
.2xl\:grid-w65 { width: calc(65% - 5px); margin: 0px !important; } .2xl\:grid-w25 {
.2xl\:grid-w66 { width: calc(66% - 5px); margin: 0px !important; } width: calc(25% - 5px);
.2xl\:grid-w70 { width: calc(70% - 5px); margin: 0px !important; } margin: 0px !important;
.2xl\:grid-w75 { width: calc(75% - 5px); margin: 0px !important; } }
.2xl\:grid-w80 { width: calc(80% - 5px); margin: 0px !important; } .2xl\:grid-w30 {
.2xl\:grid-w85 { width: calc(85% - 5px); margin: 0px !important; } width: calc(30% - 5px);
.2xl\:grid-w90 { width: calc(90% - 5px); margin: 0px !important; } margin: 0px !important;
.2xl\:grid-w95 { width: calc(95% - 5px); margin: 0px !important; } }
.2xl\:grid-w100 { width: calc(100% - 5px); margin: 0px !important; } .2xl\:grid-w33 {
width: calc(33% - 5px);
margin: 0px !important;
}
.2xl\:grid-w35 {
width: calc(35% - 5px);
margin: 0px !important;
}
.2xl\:grid-w40 {
width: calc(40% - 5px);
margin: 0px !important;
}
.2xl\:grid-w45 {
width: calc(45% - 5px);
margin: 0px !important;
}
.2xl\:grid-w50 {
width: calc(50% - 5px);
margin: 0px !important;
}
.2xl\:grid-w55 {
width: calc(55% - 5px);
margin: 0px !important;
}
.2xl\:grid-w60 {
width: calc(60% - 5px);
margin: 0px !important;
}
.2xl\:grid-w65 {
width: calc(65% - 5px);
margin: 0px !important;
}
.2xl\:grid-w66 {
width: calc(66% - 5px);
margin: 0px !important;
}
.2xl\:grid-w70 {
width: calc(70% - 5px);
margin: 0px !important;
}
.2xl\:grid-w75 {
width: calc(75% - 5px);
margin: 0px !important;
}
.2xl\:grid-w80 {
width: calc(80% - 5px);
margin: 0px !important;
}
.2xl\:grid-w85 {
width: calc(85% - 5px);
margin: 0px !important;
}
.2xl\:grid-w90 {
width: calc(90% - 5px);
margin: 0px !important;
}
.2xl\:grid-w95 {
width: calc(95% - 5px);
margin: 0px !important;
}
.2xl\:grid-w100 {
width: calc(100% - 5px);
margin: 0px !important;
}
} }
/* Carousel Specific Styles */ /* Carousel Specific Styles */
.ratio-16-9 { padding-top: 56.25%; } /* 16:9 Aspect Ratio */ .ratio-16-9 {
.ratio-21-9 { padding-top: 42.85%; } /* 21:9 Aspect Ratio */ padding-top: 56.25%;
.ratio-32-9 { padding-top: 28.125%; } /* 32:9 Aspect Ratio */ } /* 16:9 Aspect Ratio */
.ratio-21-9 {
padding-top: 42.85%;
} /* 21:9 Aspect Ratio */
.ratio-32-9 {
padding-top: 28.125%;
} /* 32:9 Aspect Ratio */
@screen sm { @screen sm {
.sm\:ratio-16-9 { padding-top: 56.25%; } /* 16:9 Aspect Ratio */ .sm\:ratio-16-9 {
.sm\:ratio-21-9 { padding-top: 42.85%; } /* 21:9 Aspect Ratio */ padding-top: 56.25%;
.sm\:ratio-32-9 { padding-top: 28.125%; } /* 32:9 Aspect Ratio */ } /* 16:9 Aspect Ratio */
.sm\:ratio-21-9 {
padding-top: 42.85%;
} /* 21:9 Aspect Ratio */
.sm\:ratio-32-9 {
padding-top: 28.125%;
} /* 32:9 Aspect Ratio */
} }
@screen md { @screen md {
.md\:ratio-16-9 { padding-top: 56.25%; } /* 16:9 Aspect Ratio */ .md\:ratio-16-9 {
.md\:ratio-21-9 { padding-top: 42.85%; } /* 21:9 Aspect Ratio */ padding-top: 56.25%;
.md\:ratio-32-9 { padding-top: 28.125%; } /* 32:9 Aspect Ratio */ } /* 16:9 Aspect Ratio */
.md\:ratio-21-9 {
padding-top: 42.85%;
} /* 21:9 Aspect Ratio */
.md\:ratio-32-9 {
padding-top: 28.125%;
} /* 32:9 Aspect Ratio */
} }
@screen lg { @screen lg {
.lg\:ratio-16-9 { padding-top: 56.25%; } /* 16:9 Aspect Ratio */ .lg\:ratio-16-9 {
.lg\:ratio-21-9 { padding-top: 42.85%; } /* 21:9 Aspect Ratio */ padding-top: 56.25%;
.lg\:ratio-32-9 { padding-top: 28.125%; } /* 32:9 Aspect Ratio */ } /* 16:9 Aspect Ratio */
.lg\:ratio-21-9 {
padding-top: 42.85%;
} /* 21:9 Aspect Ratio */
.lg\:ratio-32-9 {
padding-top: 28.125%;
} /* 32:9 Aspect Ratio */
} }
@screen xl { @screen xl {
.xl\:ratio-16-9 { padding-top: 56.25%; } /* 16:9 Aspect Ratio */ .xl\:ratio-16-9 {
.xl\:ratio-21-9 { padding-top: 42.85%; } /* 21:9 Aspect Ratio */ padding-top: 56.25%;
.xl\:ratio-32-9 { padding-top: 28.125%; } /* 32:9 Aspect Ratio */ } /* 16:9 Aspect Ratio */
.xl\:ratio-21-9 {
padding-top: 42.85%;
} /* 21:9 Aspect Ratio */
.xl\:ratio-32-9 {
padding-top: 28.125%;
} /* 32:9 Aspect Ratio */
} }
@screen 2xl { @screen 2xl {
.2xl\:ratio-16-9 { padding-top: 56.25%; } /* 16:9 Aspect Ratio */ .2xl\:ratio-16-9 {
.2xl\:ratio-21-9 { padding-top: 42.85%; } /* 21:9 Aspect Ratio */ padding-top: 56.25%;
.2xl\:ratio-32-9 { padding-top: 28.125%; } /* 32:9 Aspect Ratio */ } /* 16:9 Aspect Ratio */
.2xl\:ratio-21-9 {
padding-top: 42.85%;
} /* 21:9 Aspect Ratio */
.2xl\:ratio-32-9 {
padding-top: 28.125%;
} /* 32:9 Aspect Ratio */
} }

View file

@ -1,32 +1,33 @@
:root { --color-neutral: 255, 255, 255; :root {
--color-neutral-50: 255,255,255; --color-neutral: 255, 255, 255;
--color-neutral-100: 214,251,252; --color-neutral-50: 255, 255, 255;
--color-neutral-200: 142,245,247; --color-neutral-100: 214, 251, 252;
--color-neutral-300: 70,239,243; --color-neutral-200: 142, 245, 247;
--color-neutral-400: 15,217,222; --color-neutral-300: 70, 239, 243;
--color-neutral-500: 10,147,150; --color-neutral-400: 15, 217, 222;
--color-neutral-600: 7,110,112; --color-neutral-500: 10, 147, 150;
--color-neutral-700: 5,72,74; --color-neutral-600: 7, 110, 112;
--color-neutral-800: 2,35,35; --color-neutral-700: 5, 72, 74;
--color-neutral-900: 0,0,0; --color-neutral-800: 2, 35, 35;
--color-primary-50: 255,255,255; --color-neutral-900: 0, 0, 0;
--color-primary-100: 255,255,255; --color-primary-50: 255, 255, 255;
--color-primary-200: 255,240,212; --color-primary-100: 255, 255, 255;
--color-primary-300: 255,213,136; --color-primary-200: 255, 240, 212;
--color-primary-400: 255,187,59; --color-primary-300: 255, 213, 136;
--color-primary-500: 238,155,0; --color-primary-400: 255, 187, 59;
--color-primary-600: 197,128,0; --color-primary-500: 238, 155, 0;
--color-primary-700: 156,102,0; --color-primary-600: 197, 128, 0;
--color-primary-800: 116,75,0; --color-primary-700: 156, 102, 0;
--color-primary-900: 75,49,0; --color-primary-800: 116, 75, 0;
--color-secondary-50: 255,255,255; --color-primary-900: 75, 49, 0;
--color-secondary-100: 255,246,241; --color-secondary-50: 255, 255, 255;
--color-secondary-200: 254,194,166; --color-secondary-100: 255, 246, 241;
--color-secondary-300: 252,142,91; --color-secondary-200: 254, 194, 166;
--color-secondary-400: 251,91,15; --color-secondary-300: 252, 142, 91;
--color-secondary-500: 187,62,3; --color-secondary-400: 251, 91, 15;
--color-secondary-600: 147,49,2; --color-secondary-500: 187, 62, 3;
--color-secondary-700: 107,35,2; --color-secondary-600: 147, 49, 2;
--color-secondary-800: 67,22,1; --color-secondary-700: 107, 35, 2;
--color-secondary-900: 26,9,0; --color-secondary-800: 67, 22, 1;
--color-secondary-900: 26, 9, 0;
} }

View file

@ -1,32 +1,33 @@
:root { --color-neutral: 255, 255, 255; :root {
--color-neutral-50: 255,255,255; --color-neutral: 255, 255, 255;
--color-neutral-100: 254,197,207; --color-neutral-50: 255, 255, 255;
--color-neutral-200: 253,121,144; --color-neutral-100: 254, 197, 207;
--color-neutral-300: 251,46,82; --color-neutral-200: 253, 121, 144;
--color-neutral-400: 217,4,41; --color-neutral-300: 251, 46, 82;
--color-neutral-500: 177,3,33; --color-neutral-400: 217, 4, 41;
--color-neutral-600: 137,3,26; --color-neutral-500: 177, 3, 33;
--color-neutral-700: 97,2,18; --color-neutral-600: 137, 3, 26;
--color-neutral-800: 57,1,11; --color-neutral-700: 97, 2, 18;
--color-neutral-900: 17,0,3; --color-neutral-800: 57, 1, 11;
--color-primary-50: 255,255,255; --color-neutral-900: 17, 0, 3;
--color-primary-100: 255,255,255; --color-primary-50: 255, 255, 255;
--color-primary-200: 230,233,238; --color-primary-100: 255, 255, 255;
--color-primary-300: 186,193,206; --color-primary-200: 230, 233, 238;
--color-primary-400: 141,153,174; --color-primary-300: 186, 193, 206;
--color-primary-500: 117,132,157; --color-primary-400: 141, 153, 174;
--color-primary-600: 97,111,136; --color-primary-500: 117, 132, 157;
--color-primary-700: 80,92,113; --color-primary-600: 97, 111, 136;
--color-primary-800: 63,72,89; --color-primary-700: 80, 92, 113;
--color-primary-900: 46,53,65; --color-primary-800: 63, 72, 89;
--color-secondary-50: 255,255,255; --color-primary-900: 46, 53, 65;
--color-secondary-100: 217,230,238; --color-secondary-50: 255, 255, 255;
--color-secondary-200: 164,195,215; --color-secondary-100: 217, 230, 238;
--color-secondary-300: 111,160,192; --color-secondary-200: 164, 195, 215;
--color-secondary-400: 69,123,157; --color-secondary-300: 111, 160, 192;
--color-secondary-500: 57,101,129; --color-secondary-400: 69, 123, 157;
--color-secondary-600: 44,79,100; --color-secondary-500: 57, 101, 129;
--color-secondary-700: 32,56,72; --color-secondary-600: 44, 79, 100;
--color-secondary-800: 19,34,44; --color-secondary-700: 32, 56, 72;
--color-secondary-900: 7,12,15; --color-secondary-800: 19, 34, 44;
--color-secondary-900: 7, 12, 15;
} }

View file

@ -1,32 +1,33 @@
:root { --color-neutral: 255, 255, 255; :root {
--color-neutral-50: 255,255,255; --color-neutral: 255, 255, 255;
--color-neutral-100: 232,238,237; --color-neutral-50: 255, 255, 255;
--color-neutral-200: 188,206,203; --color-neutral-100: 232, 238, 237;
--color-neutral-300: 143,174,170; --color-neutral-200: 188, 206, 203;
--color-neutral-400: 101,140,134; --color-neutral-300: 143, 174, 170;
--color-neutral-500: 84,116,111; --color-neutral-400: 101, 140, 134;
--color-neutral-600: 67,93,89; --color-neutral-500: 84, 116, 111;
--color-neutral-700: 50,69,66; --color-neutral-600: 67, 93, 89;
--color-neutral-800: 33,45,43; --color-neutral-700: 50, 69, 66;
--color-neutral-900: 16,21,21; --color-neutral-800: 33, 45, 43;
--color-primary-50: 255,255,255; --color-neutral-900: 16, 21, 21;
--color-primary-100: 255,255,255; --color-primary-50: 255, 255, 255;
--color-primary-200: 205,252,247; --color-primary-100: 255, 255, 255;
--color-primary-300: 132,249,235; --color-primary-200: 205, 252, 247;
--color-primary-400: 59,245,223; --color-primary-300: 132, 249, 235;
--color-primary-500: 20,243,217; --color-primary-400: 59, 245, 223;
--color-primary-600: 11,212,188; --color-primary-500: 20, 243, 217;
--color-primary-700: 9,173,153; --color-primary-600: 11, 212, 188;
--color-primary-800: 7,134,119; --color-primary-700: 9, 173, 153;
--color-primary-900: 5,95,84; --color-primary-800: 7, 134, 119;
--color-secondary-50: 255,255,255; --color-primary-900: 5, 95, 84;
--color-secondary-100: 194,253,219; --color-secondary-50: 255, 255, 255;
--color-secondary-200: 120,251,175; --color-secondary-100: 194, 253, 219;
--color-secondary-300: 45,249,130; --color-secondary-200: 120, 251, 175;
--color-secondary-400: 6,212,92; --color-secondary-300: 45, 249, 130;
--color-secondary-500: 5,172,75; --color-secondary-400: 6, 212, 92;
--color-secondary-600: 4,133,58; --color-secondary-500: 5, 172, 75;
--color-secondary-700: 3,93,40; --color-secondary-600: 4, 133, 58;
--color-secondary-800: 2,53,23; --color-secondary-700: 3, 93, 40;
--color-secondary-900: 0,14,6; --color-secondary-800: 2, 53, 23;
--color-secondary-900: 0, 14, 6;
} }

View file

@ -1,32 +1,33 @@
:root { --color-neutral: 255, 255, 255; :root {
--color-neutral-50: 255,255,255; --color-neutral: 255, 255, 255;
--color-neutral-100: 255,255,255; --color-neutral-50: 255, 255, 255;
--color-neutral-200: 201,209,244; --color-neutral-100: 255, 255, 255;
--color-neutral-300: 137,156,231; --color-neutral-200: 201, 209, 244;
--color-neutral-400: 74,103,217; --color-neutral-300: 137, 156, 231;
--color-neutral-500: 37,65,178; --color-neutral-400: 74, 103, 217;
--color-neutral-600: 30,53,144; --color-neutral-500: 37, 65, 178;
--color-neutral-700: 23,40,110; --color-neutral-600: 30, 53, 144;
--color-neutral-800: 16,28,77; --color-neutral-700: 23, 40, 110;
--color-neutral-900: 9,16,43; --color-neutral-800: 16, 28, 77;
--color-primary-50: 255,255,255; --color-neutral-900: 9, 16, 43;
--color-primary-100: 255,255,255; --color-primary-50: 255, 255, 255;
--color-primary-200: 252,211,226; --color-primary-100: 255, 255, 255;
--color-primary-300: 246,140,178; --color-primary-200: 252, 211, 226;
--color-primary-400: 240,69,131; --color-primary-300: 246, 140, 178;
--color-primary-500: 216,17,89; --color-primary-400: 240, 69, 131;
--color-primary-600: 178,14,73; --color-primary-500: 216, 17, 89;
--color-primary-700: 140,11,58; --color-primary-600: 178, 14, 73;
--color-primary-800: 103,8,42; --color-primary-700: 140, 11, 58;
--color-primary-900: 65,5,27; --color-primary-800: 103, 8, 42;
--color-secondary-50: 255,255,255; --color-primary-900: 65, 5, 27;
--color-secondary-100: 255,255,255; --color-secondary-50: 255, 255, 255;
--color-secondary-200: 255,255,255; --color-secondary-100: 255, 255, 255;
--color-secondary-300: 255,242,219; --color-secondary-200: 255, 255, 255;
--color-secondary-400: 255,215,143; --color-secondary-300: 255, 242, 219;
--color-secondary-500: 255,188,66; --color-secondary-400: 255, 215, 143;
--color-secondary-600: 255,174,25; --color-secondary-500: 255, 188, 66;
--color-secondary-700: 239,155,0; --color-secondary-600: 255, 174, 25;
--color-secondary-800: 199,128,0; --color-secondary-700: 239, 155, 0;
--color-secondary-900: 158,102,0; --color-secondary-800: 199, 128, 0;
--color-secondary-900: 158, 102, 0;
} }

View file

@ -1,32 +1,33 @@
:root { --color-neutral: 255, 255, 255; :root {
--color-neutral-50: 255,255,255; --color-neutral: 255, 255, 255;
--color-neutral-100: 255,255,255; --color-neutral-50: 255, 255, 255;
--color-neutral-200: 218,196,249; --color-neutral-100: 255, 255, 255;
--color-neutral-300: 175,126,243; --color-neutral-200: 218, 196, 249;
--color-neutral-400: 131,56,236; --color-neutral-300: 175, 126, 243;
--color-neutral-500: 108,22,229; --color-neutral-400: 131, 56, 236;
--color-neutral-600: 91,18,192; --color-neutral-500: 108, 22, 229;
--color-neutral-700: 73,15,155; --color-neutral-600: 91, 18, 192;
--color-neutral-800: 56,11,118; --color-neutral-700: 73, 15, 155;
--color-neutral-900: 38,8,80; --color-neutral-800: 56, 11, 118;
--color-primary-50: 255,255,255; --color-neutral-900: 38, 8, 80;
--color-primary-100: 255,230,241; --color-primary-50: 255, 255, 255;
--color-primary-200: 255,153,197; --color-primary-100: 255, 230, 241;
--color-primary-300: 255,77,154; --color-primary-200: 255, 153, 197;
--color-primary-400: 255,0,110; --color-primary-300: 255, 77, 154;
--color-primary-500: 214,0,92; --color-primary-400: 255, 0, 110;
--color-primary-600: 173,0,75; --color-primary-500: 214, 0, 92;
--color-primary-700: 133,0,57; --color-primary-600: 173, 0, 75;
--color-primary-800: 92,0,40; --color-primary-700: 133, 0, 57;
--color-primary-900: 51,0,22; --color-primary-800: 92, 0, 40;
--color-secondary-50: 255,255,255; --color-primary-900: 51, 0, 22;
--color-secondary-100: 255,255,255; --color-secondary-50: 255, 255, 255;
--color-secondary-200: 211,228,255; --color-secondary-100: 255, 255, 255;
--color-secondary-300: 135,181,255; --color-secondary-200: 211, 228, 255;
--color-secondary-400: 58,134,255; --color-secondary-300: 135, 181, 255;
--color-secondary-500: 17,109,255; --color-secondary-400: 58, 134, 255;
--color-secondary-600: 0,89,231; --color-secondary-500: 17, 109, 255;
--color-secondary-700: 0,74,191; --color-secondary-600: 0, 89, 231;
--color-secondary-800: 0,58,150; --color-secondary-700: 0, 74, 191;
--color-secondary-900: 0,42,109; --color-secondary-800: 0, 58, 150;
--color-secondary-900: 0, 42, 109;
} }

View file

@ -1,32 +1,33 @@
:root { --color-neutral: 255, 255, 255; :root {
--color-neutral-50: 255,255,255; --color-neutral: 255, 255, 255;
--color-neutral-100: 255,255,255; --color-neutral-50: 255, 255, 255;
--color-neutral-200: 214,219,222; --color-neutral-100: 255, 255, 255;
--color-neutral-300: 172,183,188; --color-neutral-200: 214, 219, 222;
--color-neutral-400: 129,146,154; --color-neutral-300: 172, 183, 188;
--color-neutral-500: 92,107,115; --color-neutral-400: 129, 146, 154;
--color-neutral-600: 74,86,92; --color-neutral-500: 92, 107, 115;
--color-neutral-700: 56,65,70; --color-neutral-600: 74, 86, 92;
--color-neutral-800: 38,44,47; --color-neutral-700: 56, 65, 70;
--color-neutral-900: 19,23,24; --color-neutral-800: 38, 44, 47;
--color-primary-50: 255,255,255; --color-neutral-900: 19, 23, 24;
--color-primary-100: 255,255,255; --color-primary-50: 255, 255, 255;
--color-primary-200: 255,255,255; --color-primary-100: 255, 255, 255;
--color-primary-300: 250,251,252; --color-primary-200: 255, 255, 255;
--color-primary-400: 204,216,222; --color-primary-300: 250, 251, 252;
--color-primary-500: 157,180,192; --color-primary-400: 204, 216, 222;
--color-primary-600: 132,161,176; --color-primary-500: 157, 180, 192;
--color-primary-700: 107,142,160; --color-primary-600: 132, 161, 176;
--color-primary-800: 89,121,138; --color-primary-700: 107, 142, 160;
--color-primary-900: 73,99,113; --color-primary-800: 89, 121, 138;
--color-secondary-50: 255,255,255; --color-primary-900: 73, 99, 113;
--color-secondary-100: 255,255,255; --color-secondary-50: 255, 255, 255;
--color-secondary-200: 182,240,255; --color-secondary-100: 255, 255, 255;
--color-secondary-300: 105,225,255; --color-secondary-200: 182, 240, 255;
--color-secondary-400: 28,209,255; --color-secondary-300: 105, 225, 255;
--color-secondary-500: 0,165,207; --color-secondary-400: 28, 209, 255;
--color-secondary-600: 0,132,166; --color-secondary-500: 0, 165, 207;
--color-secondary-700: 0,100,125; --color-secondary-600: 0, 132, 166;
--color-secondary-800: 0,67,85; --color-secondary-700: 0, 100, 125;
--color-secondary-900: 0,35,44; --color-secondary-800: 0, 67, 85;
--color-secondary-900: 0, 35, 44;
} }

View file

@ -1,32 +1,33 @@
:root { --color-neutral: 255, 255, 255; :root {
--color-neutral-50: 255,255,255; --color-neutral: 255, 255, 255;
--color-neutral-100: 238,232,238; --color-neutral-50: 255, 255, 255;
--color-neutral-200: 206,188,206; --color-neutral-100: 238, 232, 238;
--color-neutral-300: 174,143,174; --color-neutral-200: 206, 188, 206;
--color-neutral-400: 140,101,140; --color-neutral-300: 174, 143, 174;
--color-neutral-500: 116,84,116; --color-neutral-400: 140, 101, 140;
--color-neutral-600: 93,67,93; --color-neutral-500: 116, 84, 116;
--color-neutral-700: 69,50,69; --color-neutral-600: 93, 67, 93;
--color-neutral-800: 45,33,45; --color-neutral-700: 69, 50, 69;
--color-neutral-900: 21,16,21; --color-neutral-800: 45, 33, 45;
--color-primary-50: 255,255,255; --color-neutral-900: 21, 16, 21;
--color-primary-100: 255,255,255; --color-primary-50: 255, 255, 255;
--color-primary-200: 252,205,252; --color-primary-100: 255, 255, 255;
--color-primary-300: 249,132,247; --color-primary-200: 252, 205, 252;
--color-primary-400: 245,59,242; --color-primary-300: 249, 132, 247;
--color-primary-500: 243,20,239; --color-primary-400: 245, 59, 242;
--color-primary-600: 212,11,208; --color-primary-500: 243, 20, 239;
--color-primary-700: 173,9,170; --color-primary-600: 212, 11, 208;
--color-primary-800: 134,7,132; --color-primary-700: 173, 9, 170;
--color-primary-900: 95,5,94; --color-primary-800: 134, 7, 132;
--color-secondary-50: 255,255,255; --color-primary-900: 95, 5, 94;
--color-secondary-100: 227,194,253; --color-secondary-50: 255, 255, 255;
--color-secondary-200: 192,120,251; --color-secondary-100: 227, 194, 253;
--color-secondary-300: 157,45,249; --color-secondary-200: 192, 120, 251;
--color-secondary-400: 119,6,212; --color-secondary-300: 157, 45, 249;
--color-secondary-500: 97,5,172; --color-secondary-400: 119, 6, 212;
--color-secondary-600: 74,4,133; --color-secondary-500: 97, 5, 172;
--color-secondary-700: 52,3,93; --color-secondary-600: 74, 4, 133;
--color-secondary-800: 30,2,53; --color-secondary-700: 52, 3, 93;
--color-secondary-900: 8,0,14; --color-secondary-800: 30, 2, 53;
--color-secondary-900: 8, 0, 14;
} }

View file

@ -1,32 +1,33 @@
:root { --color-neutral: 255, 255, 255; :root {
--color-neutral-50: 203,255,227; --color-neutral: 255, 255, 255;
--color-neutral-100: 126,255,186; --color-neutral-50: 203, 255, 227;
--color-neutral-200: 49,255,145; --color-neutral-100: 126, 255, 186;
--color-neutral-300: 0,228,106; --color-neutral-200: 49, 255, 145;
--color-neutral-400: 0,152,71; --color-neutral-300: 0, 228, 106;
--color-neutral-500: 0,75,35; --color-neutral-400: 0, 152, 71;
--color-neutral-600: 0,50,23; --color-neutral-500: 0, 75, 35;
--color-neutral-700: 0,24,11; --color-neutral-600: 0, 50, 23;
--color-neutral-800: 0,24,11; --color-neutral-700: 0, 24, 11;
--color-neutral-900: 0,0,0; --color-neutral-800: 0, 24, 11;
--color-primary-50: 255,255,255; --color-neutral-900: 0, 0, 0;
--color-primary-100: 236,255,227; --color-primary-50: 255, 255, 255;
--color-primary-200: 184,255,150; --color-primary-100: 236, 255, 227;
--color-primary-300: 132,255,74; --color-primary-200: 184, 255, 150;
--color-primary-400: 80,252,0; --color-primary-300: 132, 255, 74;
--color-primary-500: 56,176,0; --color-primary-400: 80, 252, 0;
--color-primary-600: 48,151,0; --color-primary-500: 56, 176, 0;
--color-primary-700: 40,125,0; --color-primary-600: 48, 151, 0;
--color-primary-800: 40,125,0; --color-primary-700: 40, 125, 0;
--color-primary-900: 7,23,0; --color-primary-800: 40, 125, 0;
--color-secondary-50: 255,255,255; --color-primary-900: 7, 23, 0;
--color-secondary-100: 239,248,252; --color-secondary-50: 255, 255, 255;
--color-secondary-200: 173,220,242; --color-secondary-100: 239, 248, 252;
--color-secondary-300: 107,192,231; --color-secondary-200: 173, 220, 242;
--color-secondary-400: 41,164,220; --color-secondary-300: 107, 192, 231;
--color-secondary-500: 26,117,159; --color-secondary-400: 41, 164, 220;
--color-secondary-600: 22,101,137; --color-secondary-500: 26, 117, 159;
--color-secondary-700: 19,85,115; --color-secondary-600: 22, 101, 137;
--color-secondary-800: 19,85,115; --color-secondary-700: 19, 85, 115;
--color-secondary-900: 4,20,28; --color-secondary-800: 19, 85, 115;
--color-secondary-900: 4, 20, 28;
} }

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Pro 6.4.2 by @fontawesome - https://fontawesome.com License -https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path fill="currentColor" d="M311 196.8v81.3c0 2.1-1.6 3.7-3.7 3.7h-13c-1.3 0-2.4-.7-3-1.5l-37.3-50.3v48.2c0 2.1-1.6 3.7-3.7 3.7h-13c-2.1 0-3.7-1.6-3.7-3.7V196.9c0-2.1 1.6-3.7 3.7-3.7h12.9c1.1 0 2.4 .6 3 1.6l37.3 50.3V196.9c0-2.1 1.6-3.7 3.7-3.7h13c2.1-.1 3.8 1.6 3.8 3.5zm-93.7-3.7h-13c-2.1 0-3.7 1.6-3.7 3.7v81.3c0 2.1 1.6 3.7 3.7 3.7h13c2.1 0 3.7-1.6 3.7-3.7V196.8c0-1.9-1.6-3.7-3.7-3.7zm-31.4 68.1H150.3V196.8c0-2.1-1.6-3.7-3.7-3.7h-13c-2.1 0-3.7 1.6-3.7 3.7v81.3c0 1 .3 1.8 1 2.5c.7 .6 1.5 1 2.5 1h52.2c2.1 0 3.7-1.6 3.7-3.7v-13c0-1.9-1.6-3.7-3.5-3.7zm193.7-68.1H327.3c-1.9 0-3.7 1.6-3.7 3.7v81.3c0 1.9 1.6 3.7 3.7 3.7h52.2c2.1 0 3.7-1.6 3.7-3.7V265c0-2.1-1.6-3.7-3.7-3.7H344V247.7h35.5c2.1 0 3.7-1.6 3.7-3.7V230.9c0-2.1-1.6-3.7-3.7-3.7H344V213.5h35.5c2.1 0 3.7-1.6 3.7-3.7v-13c-.1-1.9-1.7-3.7-3.7-3.7zM512 93.4V419.4c-.1 51.2-42.1 92.7-93.4 92.6H92.6C41.4 511.9-.1 469.8 0 418.6V92.6C.1 41.4 42.2-.1 93.4 0H419.4c51.2 .1 92.7 42.1 92.6 93.4zM441.6 233.5c0-83.4-83.7-151.3-186.4-151.3s-186.4 67.9-186.4 151.3c0 74.7 66.3 137.4 155.9 149.3c21.8 4.7 19.3 12.7 14.4 42.1c-.8 4.7-3.8 18.4 16.1 10.1s107.3-63.2 146.5-108.2c27-29.7 39.9-59.8 39.9-93.1z" /></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 365 486.53"><path fill="currentColor" d="M0,243.26V0l182.5,121.63L0,243.26Z"/><path fill="currentColor" d="M0,486.53v-243.26l182.5,121.63L0,486.53Z"/><path fill="currentColor" d="M182.5,364.9V121.63l182.5,121.63-182.5,121.63Z"/></svg>

After

Width:  |  Height:  |  Size: 287 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 510 510"><path fill="currentColor" d="M255,510C114.17,510,0,395.83,0,255S114.17,0,255,0s255,114.17,255,255-114.17,255-255,255ZM234.75,310.67h46.78c44.06,0,79.79-34.78,79.79-77.67s-35.72-77.68-79.79-77.68h-67.51c-25.42,0-46.03,20.06-46.03,44.82v174.42l66.77-63.88Z"/></svg>

After

Width:  |  Height:  |  Size: 325 B

View file

@ -0,0 +1,5 @@
<svg width="592" height="592" viewBox="0 0 592 592" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M46 260.286L292.269 46L546 260.286" stroke="currentColor" stroke-width="91" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M46 447.786L292.269 233.5L546 447.786" stroke="currentColor" stroke-width="91" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M293.619 407.607V546" stroke="currentColor" stroke-width="91" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 486 B

View file

@ -0,0 +1,10 @@
(() => {
const script = document.currentScript;
const targetId = script?.getAttribute("data-target-id");
window.addEventListener("scroll", () => {
const scroll = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
const backgroundBlur = document.getElementById(targetId);
backgroundBlur.style.opacity = scroll / 300;
});
})();

View file

@ -0,0 +1,4 @@
document.getElementById("button_likes") &&
document.getElementById("button_likes").addEventListener("click", () => {
process_article();
});

View file

@ -1,6 +1,10 @@
var scriptBundle = document.getElementById("script-bundle"); var scriptBundle = document.getElementById("script-bundle");
var copyText = scriptBundle && scriptBundle.getAttribute("data-copy")? scriptBundle.getAttribute("data-copy") : "Copy"; var copyText =
var copiedText = scriptBundle && scriptBundle.getAttribute("data-copied")? scriptBundle.getAttribute("data-copied") : "Copied"; scriptBundle && scriptBundle.getAttribute("data-copy") ? scriptBundle.getAttribute("data-copy") : "Copy";
var copiedText =
scriptBundle && scriptBundle.getAttribute("data-copied")
? scriptBundle.getAttribute("data-copied")
: "Copied";
function createCopyButton(highlightDiv) { function createCopyButton(highlightDiv) {
const button = document.createElement("button"); const button = document.createElement("button");

View file

@ -0,0 +1,57 @@
(async () => {
const script = document.currentScript;
const repoURL = script?.getAttribute("data-repo-url");
const repoId = script?.getAttribute("data-repo-id");
if (!repoURL || !repoId) return;
const platforms = {
github: {
full_name: "full_name",
description: "description",
stargazers_count: "stargazers",
forks: "forks",
},
gitlab: {
name_with_namespace: "name_with_namespace",
description: "description",
star_count: "star_count",
forks_count: "forks_count",
},
gitea: {
full_name: "full_name",
description: "description",
stars_count: "stars_count",
forks_count: "forks_count",
},
codeberg: {
full_name: "full_name",
description: "description",
stars_count: "stars_count",
forks_count: "forks_count",
},
forgejo: {
full_name: "full_name",
description: "description",
stars_count: "stars_count",
forks_count: "forks_count",
},
};
const platform = Object.keys(platforms).find((p) => repoId.startsWith(p)) || "github";
const mapping = platforms[platform];
try {
const response = await fetch(repoURL, {
headers: { "User-agent": "Mozilla/4.0 Custom User Agent" },
});
const data = await response.json();
Object.entries(mapping).forEach(([dataField, elementSuffix]) => {
const element = document.getElementById(`${repoId}-${elementSuffix}`);
if (element) element.innerHTML = data[dataField];
});
} catch (error) {
console.error(error);
}
})();

View file

@ -0,0 +1,4 @@
document.getElementById("katex-render") &&
document.getElementById("katex-render").addEventListener("load", () => {
renderMathInElement(document.body);
});

View file

@ -4,16 +4,16 @@ var menuWrapper = document.getElementById("menu-wrapper");
var menuOpen = false; var menuOpen = false;
var openMenu = function (e) { var openMenu = function () {
if (!menuOpen) { if (!menuOpen) {
menuOpen = true; menuOpen = true;
document.body.style.overflowY = "hidden"; document.body.style.overflowY = "hidden";
menuButton.style.visibility = "hidden"; menuButton.style.visibility = "hidden";
menuWrapper.style.visibility = "visible"; menuWrapper.style.visibility = "visible";
menuWrapper.style.opacity = "1"; menuWrapper.style.opacity = "1";
window.onbeforeunload = function (event) { window.onbeforeunload = function () {
closeMenu() closeMenu();
} };
} }
}; };
@ -24,10 +24,10 @@ var closeMenu = function (e) {
menuButton.style.visibility = "visible"; menuButton.style.visibility = "visible";
menuWrapper.style.visibility = "hidden"; menuWrapper.style.visibility = "hidden";
menuWrapper.style.opacity = "0"; menuWrapper.style.opacity = "0";
window.onbeforeunload = function (event) { } window.onbeforeunload = function () {};
e.stopPropagation(); e.stopPropagation();
} }
} };
menuButton.addEventListener("click", openMenu); menuButton && menuButton.addEventListener("click", openMenu);
menuCloseButton.addEventListener("click", closeMenu); menuCloseButton && menuCloseButton.addEventListener("click", closeMenu);

View file

@ -1,106 +1,131 @@
var liked_page = false const pageScriptElement = document.currentScript;
var id = oid ? oid.replaceAll("/", "-") : oid const oid =
var id_likes = oid_likes ? oid_likes.replaceAll("/", "-") : oid_likes pageScriptElement && pageScriptElement.getAttribute("data-oid")
? pageScriptElement.getAttribute("data-oid")
: (console.error("data-oid is null"), null);
const oid_likes =
pageScriptElement && pageScriptElement.getAttribute("data-oid-likes")
? pageScriptElement.getAttribute("data-oid-likes")
: (console.error("data-oid-likes is null"), null);
let liked_page = false;
const id = oid ? oid.replaceAll("/", "-") : oid;
const id_likes = oid_likes ? oid_likes.replaceAll("/", "-") : oid_likes;
if (typeof auth !== 'undefined') { if (typeof auth !== "undefined") {
const viewed = localStorage.getItem(id);
var viewed = localStorage.getItem(id); if (!viewed) {
auth
if (!viewed) { .signInAnonymously()
auth.signInAnonymously() .then(() => {
.then(() => { const docRef = db.collection("views").doc(id);
var docRef = db.collection('views').doc(id) localStorage.setItem(id, true);
localStorage.setItem(id, true); docRef
docRef.get().then((doc) => { .get()
if (doc.exists) { .then((doc) => {
db.collection('views').doc(id).update({ if (doc.exists) {
views: firebase.firestore.FieldValue.increment(1) db.collection("views")
}); .doc(id)
} else { .update({
db.collection('views').doc(id).set({ views: 1 }) views: firebase.firestore.FieldValue.increment(1),
}
}).catch((error) => {
console.log("Error getting document:", error);
}); });
}) } else {
.catch((error) => { db.collection("views").doc(id).set({ views: 1 });
var errorCode = error.code; }
var errorMessage = error.message; })
console.error(errorCode, errorMessage) .catch((error) => {
}); console.log("Error getting document:", error);
} });
})
.catch((error) => {
const errorCode = error.code;
const errorMessage = error.message;
console.error(errorCode, errorMessage);
});
}
var liked = localStorage.getItem(id_likes); const liked = localStorage.getItem(id_likes);
if (liked) {
liked_page = true
document.querySelectorAll("span[id='button_likes_heart']")[0].style.display = ""
document.querySelectorAll("span[id='button_likes_emtpty_heart']")[0].style.display = "none"
document.querySelectorAll("span[id='button_likes_text']")[0].innerText = ""
}
if (liked) {
liked_page = true;
document.querySelectorAll("span[id='button_likes_heart']")[0].style.display = "";
document.querySelectorAll("span[id='button_likes_emtpty_heart']")[0].style.display = "none";
document.querySelectorAll("span[id='button_likes_text']")[0].innerText = "";
}
} }
function like_article(id_likes) { function like_article(id_likes) {
auth.signInAnonymously() auth
.then(() => { .signInAnonymously()
var docRef = db.collection('likes').doc(id_likes) .then(() => {
docRef.get().then((doc) => { const docRef = db.collection("likes").doc(id_likes);
liked_page = true docRef
localStorage.setItem(id_likes, true); .get()
document.querySelectorAll("span[id='button_likes_heart']")[0].style.display = "" .then((doc) => {
document.querySelectorAll("span[id='button_likes_emtpty_heart']")[0].style.display = "none" liked_page = true;
document.querySelectorAll("span[id='button_likes_text']")[0].innerText = "" localStorage.setItem(id_likes, true);
if (doc.exists) { document.querySelectorAll("span[id='button_likes_heart']")[0].style.display = "";
db.collection('likes').doc(id_likes).update({ document.querySelectorAll("span[id='button_likes_emtpty_heart']")[0].style.display = "none";
likes: firebase.firestore.FieldValue.increment(1) document.querySelectorAll("span[id='button_likes_text']")[0].innerText = "";
}); if (doc.exists) {
} else { db.collection("likes")
db.collection('likes').doc(id_likes).set({ likes: 1 }) .doc(id_likes)
} .update({
}).catch((error) => { likes: firebase.firestore.FieldValue.increment(1),
console.log("Error getting document:", error); });
}); } else {
db.collection("likes").doc(id_likes).set({ likes: 1 });
}
}) })
.catch((error) => { .catch((error) => {
var errorCode = error.code; console.log("Error getting document:", error);
var errorMessage = error.message;
console.error(errorCode, errorMessage)
}); });
})
.catch((error) => {
const errorCode = error.code;
const errorMessage = error.message;
console.error(errorCode, errorMessage);
});
} }
function remove_like_article(id_likes) { function remove_like_article(id_likes) {
auth.signInAnonymously() auth
.then(() => { .signInAnonymously()
var docRef = db.collection('likes').doc(id_likes) .then(() => {
docRef.get().then((doc) => { const docRef = db.collection("likes").doc(id_likes);
liked_page = false docRef
localStorage.removeItem(id_likes); .get()
document.querySelectorAll("span[id='button_likes_heart']")[0].style.display = "none" .then((doc) => {
document.querySelectorAll("span[id='button_likes_emtpty_heart']")[0].style.display = "" liked_page = false;
document.querySelectorAll("span[id='button_likes_text']")[0].innerText = "\xa0Like" localStorage.removeItem(id_likes);
if (doc.exists) { document.querySelectorAll("span[id='button_likes_heart']")[0].style.display = "none";
db.collection('likes').doc(id_likes).update({ document.querySelectorAll("span[id='button_likes_emtpty_heart']")[0].style.display = "";
likes: firebase.firestore.FieldValue.increment(-1) document.querySelectorAll("span[id='button_likes_text']")[0].innerText = "\xa0Like";
}); if (doc.exists) {
} else { db.collection("likes")
db.collection('likes').doc(id_likes).set({ likes: 0 }) .doc(id_likes)
} .update({
}).catch((error) => { likes: firebase.firestore.FieldValue.increment(-1),
console.log("Error getting document:", error); });
}); } else {
db.collection("likes").doc(id_likes).set({ likes: 0 });
}
}) })
.catch((error) => { .catch((error) => {
var errorCode = error.code; console.log("Error getting document:", error);
var errorMessage = error.message;
console.error(errorCode, errorMessage)
}); });
})
.catch((error) => {
const errorCode = error.code;
const errorMessage = error.message;
console.error(errorCode, errorMessage);
});
} }
function process_article() { function process_article() {
if (!liked_page) { if (!liked_page) {
like_article(id_likes) like_article(id_likes);
} else { } else {
remove_like_article(id_likes) remove_like_article(id_likes);
} }
} }

View file

@ -1,71 +1,70 @@
if (typeof auth !== 'undefined') { if (typeof auth !== "undefined") {
var viewsCollection = db.collection('views'); var viewsCollection = db.collection("views");
var likesCollection = db.collection('likes'); var likesCollection = db.collection("likes");
function numberWithCommas(x) { function numberWithCommas(x) {
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ','); return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
function toggleLoaders(node) {
var classesString = node.className;
if (classesString == "") return;
var classes = classesString.split(" ");
for (var i in classes) {
node.classList.toggle(classes[i]);
} }
}
function toggleLoaders(node){ var update_views = function (node, id) {
var classesString = node.className; viewsCollection.doc(id).onSnapshot((doc) => {
if(classesString == "") return var data = doc.data();
var classes = classesString.split(" "); if (data) {
for(var i in classes){ node.innerText = numberWithCommas(data.views);
node.classList.toggle(classes[i]) } else {
node.innerText = 0;
}
toggleLoaders(node);
});
};
var update_likes = function (node, id) {
likesCollection.doc(id).onSnapshot((doc) => {
var data = doc.data();
if (data) {
node.innerText = numberWithCommas(data.likes);
} else {
node.innerText = 0;
}
toggleLoaders(node);
});
};
auth
.signInAnonymously()
.then(() => {
var views_nodes = document.querySelectorAll("span[id^='views_']");
for (var i in views_nodes) {
var node = views_nodes[i];
var id = node.id ? node.id.replaceAll("/", "-") : node.id;
if (id) {
update_views(node, id);
} }
} }
var update_views = function (node, id) { var likes_nodes = document.querySelectorAll("span[id^='likes_']");
viewsCollection.doc(id).onSnapshot(doc => {
var data = doc.data();
if (data) {
node.innerText = numberWithCommas(data.views)
} else {
node.innerText = 0
}
toggleLoaders(node)
})
}
var update_likes = function (node, id) { for (var i in likes_nodes) {
likesCollection.doc(id).onSnapshot(doc => { var node = likes_nodes[i];
var data = doc.data(); var id = node.id ? node.id.replaceAll("/", "-") : node.id;
if (data) { if (id) {
node.innerText = numberWithCommas(data.likes) update_likes(node, id);
} else { }
node.innerText = 0 }
} })
toggleLoaders(node) .catch((error) => {
var errorCode = error.code;
}) var errorMessage = error.message;
} console.error(errorCode, errorMessage);
});
auth.signInAnonymously()
.then(() => {
var views_nodes = document.querySelectorAll("span[id^='views_']")
for (var i in views_nodes) {
var node = views_nodes[i]
var id = node.id ? node.id.replaceAll("/", "-") : node.id
if (id) {
update_views(node, id)
}
}
var likes_nodes = document.querySelectorAll("span[id^='likes_']")
for (var i in likes_nodes) {
var node = likes_nodes[i]
var id = node.id ? node.id.replaceAll("/", "-") : node.id
if (id) {
update_likes(node, id)
}
}
})
.catch((error) => {
var errorCode = error.code;
var errorMessage = error.message;
console.error(errorCode, errorMessage)
});
} }

View file

@ -13,8 +13,8 @@ var indexed = false;
var hasResults = false; var hasResults = false;
// Listen for events // Listen for events
showButton? showButton.addEventListener("click", displaySearch) : null; showButton ? showButton.addEventListener("click", displaySearch) : null;
showButtonMobile? showButtonMobile.addEventListener("click", displaySearch) : null; showButtonMobile ? showButtonMobile.addEventListener("click", displaySearch) : null;
hideButton.addEventListener("click", hideSearch); hideButton.addEventListener("click", hideSearch);
wrapper.addEventListener("click", hideSearch); wrapper.addEventListener("click", hideSearch);
modal.addEventListener("click", function (event) { modal.addEventListener("click", function (event) {
@ -25,7 +25,11 @@ modal.addEventListener("click", function (event) {
document.addEventListener("keydown", function (event) { document.addEventListener("keydown", function (event) {
// Forward slash to open search wrapper // Forward slash to open search wrapper
if (event.key == "/") { if (event.key == "/") {
if (!searchVisible) { const active = document.activeElement;
const tag = active.tagName;
const isInputField = tag === "INPUT" || tag === "TEXTAREA" || active.isContentEditable;
if (!searchVisible && !isInputField) {
event.preventDefault(); event.preventDefault();
displaySearch(); displaySearch();
} }
@ -75,7 +79,6 @@ document.addEventListener("keydown", function (event) {
} }
} }
} }
}); });
// Update search on each keypress // Update search on each keypress
@ -122,7 +125,7 @@ function fetchJSON(path, callback) {
function buildIndex() { function buildIndex() {
var baseURL = wrapper.getAttribute("data-url"); var baseURL = wrapper.getAttribute("data-url");
baseURL = baseURL.replace(/\/?$/, '/'); baseURL = baseURL.replace(/\/?$/, "/");
fetchJSON(baseURL + "index.json", function (data) { fetchJSON(baseURL + "index.json", function (data) {
var options = { var options = {
shouldSort: true, shouldSort: true,
@ -153,13 +156,19 @@ function executeQuery(term) {
if (results.length > 0) { if (results.length > 0) {
results.forEach(function (value, key) { results.forEach(function (value, key) {
console.log(value.item.summary);
var html = value.item.summary; var html = value.item.summary;
var div = document.createElement("div"); var div = document.createElement("div");
div.innerHTML = html; div.innerHTML = html;
value.item.summary = div.textContent || div.innerText || ""; value.item.summary = div.textContent || div.innerText || "";
var title = value.item.externalUrl? value.item.title + '<span class="text-xs ml-2 align-center cursor-default text-neutral-400 dark:text-neutral-500">'+value.item.externalUrl+'</span>' : value.item.title; var title = value.item.externalUrl
var linkconfig = value.item.externalUrl? 'target="_blank" rel="noopener" href="'+value.item.externalUrl+'"' : 'href="'+value.item.permalink+'"'; ? value.item.title +
'<span class="text-xs ml-2 align-center cursor-default text-neutral-400 dark:text-neutral-500">' +
value.item.externalUrl +
"</span>"
: value.item.title;
var linkconfig = value.item.externalUrl
? 'target="_blank" rel="noopener" href="' + value.item.externalUrl + '"'
: 'href="' + value.item.permalink + '"';
resultsHTML = resultsHTML =
resultsHTML + resultsHTML +
`<li class="mb-2"> `<li class="mb-2">
@ -169,7 +178,7 @@ function executeQuery(term) {
<div class="-mb-1 text-lg font-bold"> <div class="-mb-1 text-lg font-bold">
${title} ${title}
</div> </div>
<div class="text-sm text-neutral-500 dark:text-neutral-400">${value.item.section}<span class="px-2 text-primary-500">&middot;</span>${value.item.date? value.item.date : ""}</span></div> <div class="text-sm text-neutral-500 dark:text-neutral-400">${value.item.section}<span class="px-2 text-primary-500">&middot;</span>${value.item.date ? value.item.date : ""}</span></div>
<div class="text-sm italic">${value.item.summary}</div> <div class="text-sm italic">${value.item.summary}</div>
</div> </div>
<div class="ml-2 ltr:block rtl:hidden text-neutral-500">&rarr;</div> <div class="ml-2 ltr:block rtl:hidden text-neutral-500">&rarr;</div>

View file

@ -1,22 +1,40 @@
function _getDefaultPackeryOptions() { function _getDefaultPackeryOptions() {
return { return {
percentPosition: true, percentPosition: true,
gutter: 5, gutter: 5,
resize: true resize: true,
}; };
}
function _getPackeryOptions(nodeGallery) {
const defaults = _getDefaultPackeryOptions();
const {
packeryGutter,
packeryPercentPosition,
packeryResize,
} = nodeGallery.dataset;
return {
percentPosition:
packeryPercentPosition !== undefined
? packeryPercentPosition === "true"
: defaults.percentPosition,
gutter:
packeryGutter !== undefined ? parseInt(packeryGutter, 10) : defaults.gutter,
resize:
packeryResize !== undefined ? packeryResize === "true" : defaults.resize,
};
} }
(function init() { (function init() {
$(window).on("load", function () {
let packeries = [];
let nodeGalleries = document.querySelectorAll(".gallery");
$(window).on("load", function () { nodeGalleries.forEach((nodeGallery) => {
let packeries = []; let packery = new Packery(nodeGallery, _getPackeryOptions(nodeGallery));
let nodeGalleries = document.querySelectorAll('.gallery'); packeries.push(packery);
nodeGalleries.forEach(nodeGallery => {
// TODO : implement a reader of Packery configuration _getPackeryOptions; for example by reading data-attribute
let packery = new Packery(nodeGallery, _getDefaultPackeryOptions());
packeries.push(packery);
});
console.groupEnd();
}); });
console.groupEnd();
});
})(); })();

View file

@ -1,50 +1,50 @@
function _toogleZenMode(zendModeButton) { function _toogleZenMode(zendModeButton) {
// Nodes selection // Nodes selection
const body = document.querySelector('body'); const body = document.querySelector("body");
const tocRight = document.querySelector('.toc-right'); const footer = document.querySelector("footer");
const tocInside = document.querySelector('.toc-inside'); const tocRight = document.querySelector(".toc-right");
const articleContent = document.querySelector('.article-content'); const tocInside = document.querySelector(".toc-inside");
const header = document.querySelector('#single_header'); const articleContent = document.querySelector(".article-content");
const header = document.querySelector("#single_header");
// Add semantic class into body tag // Add semantic class into body tag
body.classList.toggle('zen-mode-enable'); body.classList.toggle("zen-mode-enable");
// Show/Hide 'toc right' and 'toc inside' // Show/Hide 'toc right' and 'toc inside'
if (tocRight) if (tocRight) tocRight.classList.toggle("lg:block");
tocRight.classList.toggle('lg:block'); if (tocInside) tocInside.classList.toggle("lg:hidden");
if (tocInside)
tocInside.classList.toggle('lg:hidden');
// Change width of article content // Change width of article content
articleContent.classList.toggle('max-w-fit'); articleContent.classList.toggle("max-w-fit");
articleContent.classList.toggle('max-w-prose'); articleContent.classList.toggle("max-w-prose");
// Change width of article title // Change width of article title and footer
header.classList.toggle('max-w-full'); header.classList.toggle("max-w-full");
header.classList.toggle('max-w-prose'); header.classList.toggle("max-w-prose");
footer.classList.toggle("max-w-full");
footer.classList.toggle("max-w-prose");
// Read i18n title from data-attributes // Read i18n title from data-attributes
const titleI18nDisable = zendModeButton.getAttribute('data-title-i18n-disable'); const titleI18nDisable = zendModeButton.getAttribute("data-title-i18n-disable");
const titleI18nEnable = zendModeButton.getAttribute('data-title-i18n-enable'); const titleI18nEnable = zendModeButton.getAttribute("data-title-i18n-enable");
if (body.classList.contains('zen-mode-enable')) { if (body.classList.contains("zen-mode-enable")) {
// Persist configuration // Persist configuration
//localStorage.setItem('blowfish-zen-mode-enabled', 'true'); //localStorage.setItem('blowfish-zen-mode-enabled', 'true');
// Change title to enable // Change title to enable
zendModeButton.setAttribute('title', titleI18nEnable) zendModeButton.setAttribute("title", titleI18nEnable);
// Auto-scroll to title article // Auto-scroll to title article
window.scrollTo(window.scrollX, header.getBoundingClientRect().top - 90); window.scrollTo(window.scrollX, header.getBoundingClientRect().top - 90);
} else { } else {
//localStorage.setItem('blowfish-zen-mode-enabled', 'false'); //localStorage.setItem('blowfish-zen-mode-enabled', 'false');
zendModeButton.setAttribute('title', titleI18nDisable); zendModeButton.setAttribute("title", titleI18nDisable);
document.querySelector('body').scrollIntoView(); document.querySelector("body").scrollIntoView();
} }
} }
function _registerZendModeButtonClick(zendModeButton) { function _registerZendModeButtonClick(zendModeButton) {
zendModeButton.addEventListener('click', function (event) { zendModeButton.addEventListener("click", function (event) {
event.preventDefault(); event.preventDefault();
// Toggle zen-mode // Toggle zen-mode
@ -55,7 +55,7 @@ function _registerZendModeButtonClick(zendModeButton) {
(function init() { (function init() {
window.addEventListener("DOMContentLoaded", (event) => { window.addEventListener("DOMContentLoaded", (event) => {
// Register click on 'zen-mode-button' node element // Register click on 'zen-mode-button' node element
const zendModeButton = document.getElementById('zen-mode-button'); const zendModeButton = document.getElementById("zen-mode-button");
if (zendModeButton !== null && zendModeButton !== undefined) { if (zendModeButton !== null && zendModeButton !== undefined) {
_registerZendModeButtonClick(zendModeButton); _registerZendModeButtonClick(zendModeButton);
} }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
.medium-zoom-overlay{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;will-change:opacity}.medium-zoom--opened .medium-zoom-overlay{cursor:pointer;cursor:zoom-out;opacity:1}.medium-zoom-image{cursor:pointer;cursor:zoom-in;transition:transform .3s cubic-bezier(.2,0,.2,1)!important}.medium-zoom-image--hidden{visibility:hidden}.medium-zoom-image--opened{position:relative;cursor:pointer;cursor:zoom-out;will-change:transform}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,5 +1,5 @@
[module] [module]
[module.hugoVersion] [module.hugoVersion]
extended = true extended = true
min = "0.87.0" min = "0.137.0"
max = "0.147.1" max = "0.148.0"

View file

@ -2,8 +2,15 @@
# These settings are required for the theme to function. # These settings are required for the theme to function.
[goldmark] [goldmark]
[goldmark.renderer] [goldmark.renderer]
unsafe = true unsafe = true
[goldmark.extensions]
[goldmark.extensions.passthrough]
enable = true
[goldmark.extensions.passthrough.delimiters]
block = [['\[', '\]'], ['$$', '$$']]
inline = [['\(', '\)']]
[highlight] [highlight]
noClasses = false noClasses = false

View file

@ -1,3 +0,0 @@
[hugoVersion]
extended = false
min = "0.87.0"

View file

@ -18,18 +18,22 @@ replyByEmail = false
# robots = "" # robots = ""
disableImageOptimization = false disableImageOptimization = false
disableImageOptimizationMD = false
disableTextInHeader = false disableTextInHeader = false
# backgroundImageWidth = 1200 # backgroundImageWidth = 1200
# defaultBackgroundImage = "IMAGE.jpg" # used as default for background images # defaultBackgroundImage = "IMAGE.jpg" # used as default for background images
# defaultFeaturedImage = "IMAGE.jpg" # used as default for featured images in all articles # defaultFeaturedImage = "IMAGE.jpg" # used as default for featured images in all articles
# defaultSocialImage = "/android-chrome-512x512.png" # used as default for social media sharing (Open Graph and Twitter)
# highlightCurrentMenuArea = true # highlightCurrentMenuArea = true
# smartTOC = true # smartTOC = true
# smartTOCHideUnfocusedChildren = true # smartTOCHideUnfocusedChildren = true
fingerprintAlgorithm = "sha512" # Valid values are "sha512" (default), "sha384", "sha256"
giteaDefaultServer = "https://git.fsfe.org" giteaDefaultServer = "https://git.fsfe.org"
forgejoDefaultServer = "https://v8.next.forgejo.org" forgejoDefaultServer = "https://v11.next.forgejo.org"
[header] [header]
layout = "basic" # valid options: basic, fixed, fixed-fill, fixed-gradient, fixed-fill-blur layout = "basic" # valid options: basic, fixed, fixed-fill, fixed-gradient, fixed-fill-blur
@ -51,6 +55,7 @@ forgejoDefaultServer = "https://v8.next.forgejo.org"
cardView = false cardView = false
cardViewScreenWidth = false cardViewScreenWidth = false
layoutBackgroundBlur = false # only used when layout equals background layoutBackgroundBlur = false # only used when layout equals background
disableHeroImageFilter = false # only used when layout equals hero
[article] [article]
showDate = true showDate = true
@ -77,10 +82,11 @@ forgejoDefaultServer = "https://v8.next.forgejo.org"
showTableOfContents = false showTableOfContents = false
# showRelatedContent = false # showRelatedContent = false
# relatedContentLimit = 3 # relatedContentLimit = 3
showTaxonomies = false showTaxonomies = false # use showTaxonomies OR showCategoryOnly, not both
showCategoryOnly = false # use showTaxonomies OR showCategoryOnly, not both
showAuthorsBadges = false showAuthorsBadges = false
showWordCount = true showWordCount = true
# sharingLinks = [ "linkedin", "twitter", "bluesky", "mastodon", "reddit", "pinterest", "facebook", "email", "whatsapp", "telegram"] # sharingLinks = [ "linkedin", "twitter", "bluesky", "mastodon", "reddit", "pinterest", "facebook", "email", "whatsapp", "telegram", "line"]
showZenMode = false showZenMode = false
[list] [list]
@ -165,3 +171,6 @@ forgejoDefaultServer = "https://v8.next.forgejo.org"
[rssnext] [rssnext]
# feedId = "" # feedId = ""
# userId = "" # userId = ""
[advertisement]
# adsense = ""

View file

@ -1,533 +0,0 @@
{
"1C Enterprise": "#814CCC",
"4D": "#004289",
"ABAP": "#E8274B",
"ABAP CDS": "#555e25",
"ActionScript": "#882B0F",
"Ada": "#02f88c",
"Adobe Font Metrics": "#fa0f00",
"Agda": "#315665",
"AGS Script": "#B9D9FF",
"AIDL": "#34EB6B",
"AL": "#3AA2B5",
"Alloy": "#64C800",
"Alpine Abuild": "#0D597F",
"Altium Designer": "#A89663",
"AMPL": "#E6EFBB",
"AngelScript": "#C7D7DC",
"Ant Build System": "#A9157E",
"ANTLR": "#9DC3FF",
"ApacheConf": "#d12127",
"Apex": "#1797c0",
"API Blueprint": "#2ACCA8",
"APL": "#5A8164",
"Apollo Guidance Computer": "#0B3D91",
"AppleScript": "#101F1F",
"Arc": "#aa2afe",
"AsciiDoc": "#73a0c5",
"ASL": null,
"ASP.NET": "#9400ff",
"AspectJ": "#a957b0",
"Assembly": "#6E4C13",
"Astro": "#ff5a03",
"Asymptote": "#ff0000",
"ATS": "#1ac620",
"Augeas": "#9CC134",
"AutoHotkey": "#6594b9",
"AutoIt": "#1C3552",
"Avro IDL": "#0040FF",
"Awk": "#c30e9b",
"Ballerina": "#FF5000",
"BASIC": "#ff0000",
"Batchfile": "#C1F12E",
"Beef": "#a52f4e",
"Befunge": null,
"BibTeX": "#778899",
"Bicep": "#519aba",
"Bison": "#6A463F",
"BitBake": "#00bce4",
"Blade": "#f7523f",
"BlitzBasic": "#00FFAE",
"BlitzMax": "#cd6400",
"Bluespec": "#12223c",
"Boo": "#d4bec1",
"Boogie": "#c80fa0",
"Brainfuck": "#2F2530",
"Brightscript": "#662D91",
"Browserslist": "#ffd539",
"C": "#555555",
"C#": "#178600",
"C++": "#f34b7d",
"C2hs Haskell": null,
"Cabal Config": "#483465",
"Cap'n Proto": "#c42727",
"CartoCSS": null,
"Ceylon": "#dfa535",
"Chapel": "#8dc63f",
"Charity": null,
"ChucK": "#3f8000",
"Cirru": "#ccccff",
"Clarion": "#db901e",
"Classic ASP": "#6a40fd",
"Clean": "#3F85AF",
"Click": "#E4E6F3",
"CLIPS": "#00A300",
"Clojure": "#db5855",
"Closure Templates": "#0d948f",
"Cloud Firestore Security Rules": "#FFA000",
"CMake": "#DA3434",
"COBOL": null,
"CodeQL": "#140f46",
"CoffeeScript": "#244776",
"ColdFusion": "#ed2cd6",
"ColdFusion CFC": "#ed2cd6",
"COLLADA": "#F1A42B",
"Common Lisp": "#3fb68b",
"Common Workflow Language": "#B5314C",
"Component Pascal": "#B0CE4E",
"Cool": null,
"Coq": "#d0b68c",
"Crystal": "#000100",
"CSON": "#244776",
"Csound": "#1a1a1a",
"Csound Document": "#1a1a1a",
"Csound Score": "#1a1a1a",
"CSS": "#563d7c",
"CSV": "#237346",
"Cuda": "#3A4E3A",
"CUE": "#5886E1",
"CWeb": "#00007a",
"Cycript": null,
"Cython": "#fedf5b",
"D": "#ba595e",
"Dafny": "#FFEC25",
"Darcs Patch": "#8eff23",
"Dart": "#00B4AB",
"DataWeave": "#003a52",
"Dhall": "#dfafff",
"DIGITAL Command Language": null,
"DirectX 3D File": "#aace60",
"DM": "#447265",
"Dockerfile": "#384d54",
"Dogescript": "#cca760",
"DTrace": null,
"Dylan": "#6c616e",
"E": "#ccce35",
"Easybuild": "#069406",
"eC": "#913960",
"Ecere Projects": "#913960",
"ECL": "#8a1267",
"ECLiPSe": "#001d9d",
"EditorConfig": "#fff1f2",
"Eiffel": "#4d6977",
"EJS": "#a91e50",
"Elixir": "#6e4a7e",
"Elm": "#60B5CC",
"Emacs Lisp": "#c065db",
"EmberScript": "#FFF4F3",
"EQ": "#a78649",
"Erlang": "#B83998",
"F#": "#b845fc",
"F*": "#572e30",
"Factor": "#636746",
"Fancy": "#7b9db4",
"Fantom": "#14253c",
"Faust": "#c37240",
"Fennel": "#fff3d7",
"FIGlet Font": "#FFDDBB",
"Filebench WML": "#F6B900",
"Filterscript": null,
"fish": "#4aae47",
"Fluent": "#ffcc33",
"FLUX": "#88ccff",
"Forth": "#341708",
"Fortran": "#4d41b1",
"Fortran Free Form": "#4d41b1",
"FreeBasic": "#867db1",
"FreeMarker": "#0050b2",
"Frege": "#00cafe",
"Futhark": "#5f021f",
"G-code": "#D08CF2",
"Game Maker Language": "#71b417",
"GAML": "#FFC766",
"GAMS": "#f49a22",
"GAP": "#0000cc",
"GCC Machine Description": "#FFCFAB",
"GDB": null,
"GDScript": "#355570",
"GEDCOM": "#003058",
"Gemfile.lock": "#701516",
"Genie": "#fb855d",
"Genshi": "#951531",
"Gentoo Ebuild": "#9400ff",
"Gentoo Eclass": "#9400ff",
"Gerber Image": "#d20b00",
"Gherkin": "#5B2063",
"Git Attributes": "#F44D27",
"Git Config": "#F44D27",
"GLSL": "#5686a5",
"Glyph": "#c1ac7f",
"Gnuplot": "#f0a9f0",
"Go": "#00ADD8",
"Go Checksums": "#00ADD8",
"Go Module": "#00ADD8",
"Golo": "#88562A",
"Gosu": "#82937f",
"Grace": "#615f8b",
"Gradle": "#02303a",
"Grammatical Framework": "#ff0000",
"GraphQL": "#e10098",
"Graphviz (DOT)": "#2596be",
"Groovy": "#4298b8",
"Groovy Server Pages": "#4298b8",
"Hack": "#878787",
"Haml": "#ece2a9",
"Handlebars": "#f7931e",
"HAProxy": "#106da9",
"Harbour": "#0e60e3",
"Haskell": "#5e5086",
"Haxe": "#df7900",
"HCL": null,
"HiveQL": "#dce200",
"HLSL": "#aace60",
"HolyC": "#ffefaf",
"HTML": "#e34c26",
"HTML+ECR": "#2e1052",
"HTML+EEX": "#6e4a7e",
"HTML+ERB": "#701516",
"HTML+PHP": "#4f5d95",
"HTML+Razor": "#512be4",
"HTTP": "#005C9C",
"HXML": "#f68712",
"Hy": "#7790B2",
"HyPhy": null,
"IDL": "#a3522f",
"Idris": "#b30000",
"Ignore List": "#000000",
"IGOR Pro": "#0000cc",
"ImageJ Macro": "#99AAFF",
"Inform 7": null,
"INI": "#d1dbe0",
"Inno Setup": "#264b99",
"Io": "#a9188d",
"Ioke": "#078193",
"Isabelle": "#FEFE00",
"Isabelle ROOT": "#FEFE00",
"J": "#9EEDFF",
"JAR Manifest": "#b07219",
"Jasmin": "#d03600",
"Java": "#b07219",
"Java Properties": "#2A6277",
"Java Server Pages": "#2A6277",
"JavaScript": "#f1e05a",
"JavaScript+ERB": "#f1e05a",
"Jest Snapshot": "#15c213",
"JFlex": "#DBCA00",
"Jinja": "#a52a22",
"Jison": "#56b3cb",
"Jison Lex": "#56b3cb",
"Jolie": "#843179",
"jq": "#c7254e",
"JSON": "#292929",
"JSON with Comments": "#292929",
"JSON5": "#267CB9",
"JSONiq": "#40d47e",
"JSONLD": "#0c479c",
"Jsonnet": "#0064bd",
"Julia": "#a270ba",
"Jupyter Notebook": "#DA5B0B",
"Kaitai Struct": "#773b37",
"KakouneScript": "#6f8042",
"KiCad Layout": "#2f4aab",
"KiCad Legacy Layout": "#2f4aab",
"KiCad Schematic": "#2f4aab",
"Kotlin": "#A97BFF",
"KRL": "#28430A",
"LabVIEW": "#fede06",
"Lark": "#2980B9",
"Lasso": "#999999",
"Latte": "#f2a542",
"Lean": null,
"Less": "#1d365d",
"Lex": "#DBCA00",
"LFE": "#4C3023",
"LilyPond": "#9ccc7c",
"Limbo": null,
"Liquid": "#67b8de",
"Literate Agda": "#315665",
"Literate CoffeeScript": "#244776",
"Literate Haskell": "#5e5086",
"LiveScript": "#499886",
"LLVM": "#185619",
"Logos": null,
"Logtalk": "#295b9a",
"LOLCODE": "#cc9900",
"LookML": "#652B81",
"LoomScript": null,
"LSL": "#3d9970",
"Lua": "#000080",
"M": null,
"M4": null,
"M4Sugar": null,
"Macaulay2": "#d8ffff",
"Makefile": "#427819",
"Mako": "#7e858d",
"Markdown": "#083fa1",
"Marko": "#42bff2",
"Mask": "#f97732",
"Mathematica": "#dd1100",
"MATLAB": "#e16737",
"Max": "#c4a79c",
"MAXScript": "#00a6a6",
"mcfunction": "#E22837",
"Mercury": "#ff2b2b",
"Meson": "#007800",
"Metal": "#8f14e9",
"MiniD": null,
"Mirah": "#c7a938",
"mIRC Script": "#3d57c3",
"MLIR": "#5EC8DB",
"Modelica": "#de1d31",
"Modula-2": "#10253f",
"Modula-3": "#223388",
"Module Management System": null,
"Monkey": null,
"Moocode": null,
"MoonScript": "#ff4585",
"Motorola 68K Assembly": "#005daa",
"MQL4": "#62A8D6",
"MQL5": "#4A76B8",
"MTML": "#b7e1f4",
"MUF": null,
"mupad": "#244963",
"Mustache": "#724b3b",
"Myghty": null,
"nanorc": "#2d004d",
"NASL": null,
"NCL": "#28431f",
"Nearley": "#990000",
"Nemerle": "#3d3c6e",
"nesC": "#94B0C7",
"NetLinx": "#0aa0ff",
"NetLinx+ERB": "#747faa",
"NetLogo": "#ff6375",
"NewLisp": "#87AED7",
"Nextflow": "#3ac486",
"Nginx": "#009639",
"Nim": "#ffc200",
"Nit": "#009917",
"Nix": "#7e7eff",
"NPM Config": "#cb3837",
"NSIS": null,
"Nu": "#c9df40",
"NumPy": "#9C8AF9",
"Nunjucks": "#3d8137",
"NWScript": "#111522",
"Objective-C": "#438eff",
"Objective-C++": "#6866fb",
"Objective-J": "#ff0c5a",
"ObjectScript": "#424893",
"OCaml": "#3be133",
"Odin": "#60AFFE",
"Omgrofl": "#cabbff",
"ooc": "#b0b77e",
"Opa": null,
"Opal": "#f7ede0",
"Open Policy Agent": "#7d9199",
"OpenCL": "#ed2e2d",
"OpenEdge ABL": "#5ce600",
"OpenQASM": "#AA70FF",
"OpenRC runscript": null,
"OpenSCAD": "#e5cd45",
"Org": "#77aa99",
"Ox": null,
"Oxygene": "#cdd0e3",
"Oz": "#fab738",
"P4": "#7055b5",
"Pan": "#cc0000",
"Papyrus": "#6600cc",
"Parrot": "#f3ca0a",
"Parrot Assembly": null,
"Parrot Internal Representation": null,
"Pascal": "#E3F171",
"Pawn": "#dbb284",
"PEG.js": "#234d6b",
"Pep8": "#C76F5B",
"Perl": "#0298c3",
"PHP": "#4F5D95",
"PicoLisp": "#6067af",
"PigLatin": "#fcd7de",
"Pike": "#005390",
"PLpgSQL": "#336790",
"PLSQL": "#dad8d8",
"PogoScript": "#d80074",
"Pony": null,
"PostCSS": "#dc3a0c",
"PostScript": "#da291c",
"POV-Ray SDL": "#6bac65",
"PowerBuilder": "#8f0f8d",
"PowerShell": "#012456",
"Prisma": "#0c344b",
"Processing": "#0096D8",
"Prolog": "#74283c",
"Propeller Spin": "#7fa2a7",
"Pug": "#a86454",
"Puppet": "#302B6D",
"PureBasic": "#5a6986",
"PureScript": "#1D222D",
"Python": "#3572A5",
"Python console": "#3572A5",
"Python traceback": "#3572A5",
"q": "#0040cd",
"Q#": "#fed659",
"QMake": null,
"QML": "#44a51c",
"Qt Script": "#00b841",
"Quake": "#882233",
"R": "#198CE7",
"Racket": "#3c5caa",
"Ragel": "#9d5200",
"Raku": "#0000fb",
"RAML": "#77d9fb",
"Rascal": "#fffaa0",
"RDoc": "#701516",
"REALbasic": null,
"Reason": "#ff5847",
"Rebol": "#358a5b",
"Record Jar": "#0673ba",
"Red": "#f50000",
"Redcode": null,
"Regular Expression": "#009a00",
"Ren'Py": "#ff7f7f",
"RenderScript": null,
"ReScript": "#ed5051",
"reStructuredText": "#141414",
"REXX": "#d90e09",
"Ring": "#2D54CB",
"Riot": "#A71E49",
"RMarkdown": "#198ce7",
"RobotFramework": "#00c0b5",
"Roff": "#ecdebe",
"Roff Manpage": "#ecdebe",
"Rouge": "#cc0088",
"RPC": null,
"Ruby": "#701516",
"RUNOFF": "#665a4e",
"Rust": "#dea584",
"Sage": null,
"SaltStack": "#646464",
"SAS": "#B34936",
"Sass": "#a53b70",
"Scala": "#c22d40",
"Scaml": "#bd181a",
"Scheme": "#1e4aec",
"Scilab": "#ca0f21",
"SCSS": "#c6538c",
"sed": "#64b970",
"Self": "#0579aa",
"ShaderLab": "#222c37",
"Shell": "#89e051",
"ShellSession": null,
"Shen": "#120F14",
"Sieve": null,
"Singularity": "#64E6AD",
"Slash": "#007eff",
"Slice": "#003fa2",
"Slim": "#2b2b2b",
"Smali": null,
"Smalltalk": "#596706",
"Smarty": "#f0c040",
"SmPL": "#c94949",
"SMT": null,
"Solidity": "#AA6746",
"SourcePawn": "#f69e1d",
"SPARQL": "#0C4597",
"SQF": "#3F3F3F",
"SQL": "#e38c00",
"SQLPL": "#e38c00",
"Squirrel": "#800000",
"SRecode Template": "#348a34",
"Stan": "#b2011d",
"Standard ML": "#dc566d",
"Starlark": "#76d275",
"Stata": "#1a5f91",
"StringTemplate": "#3fb34f",
"Stylus": "#ff6347",
"SubRip Text": "#9e0101",
"SugarSS": "#2fcc9f",
"SuperCollider": "#46390b",
"Svelte": "#ff3e00",
"SVG": "#ff9900",
"Swift": "#F05138",
"SWIG": null,
"SystemVerilog": "#DAE1C2",
"Tcl": "#e4cc98",
"Tcsh": null,
"Terra": "#00004c",
"TeX": "#3D6117",
"Textile": "#ffe7ac",
"TextMate Properties": "#df66e4",
"Thrift": "#D12127",
"TI Program": "#A0AA87",
"TLA": "#4b0079",
"TOML": "#9c4221",
"TSQL": "#e38c00",
"TSV": "#237346",
"TSX": "#2b7489",
"Turing": "#cf142b",
"Twig": "#c1d026",
"TXL": "#0178b8",
"TypeScript": "#2b7489",
"Unified Parallel C": "#4e3617",
"Unity3D Asset": "#222c37",
"Unix Assembly": null,
"Uno": "#9933cc",
"UnrealScript": "#a54c4d",
"UrWeb": "#ccccee",
"V": "#4f87c4",
"Vala": "#fbe5cd",
"Valve Data Format": "#f26025",
"VBA": "#867db1",
"VBScript": "#15dcdc",
"VCL": "#148AA8",
"Verilog": "#b2b7f8",
"VHDL": "#adb2cb",
"Vim Help File": "#199f4b",
"Vim Script": "#199f4b",
"Vim Snippet": "#199f4b",
"Visual Basic .NET": "#945db7",
"Volt": "#1F1F1F",
"Vue": "#41b883",
"wdl": "#42f1f4",
"Web Ontology Language": "#5b70bd",
"WebAssembly": "#04133b",
"WebIDL": null,
"Wikitext": "#fc5757",
"Windows Registry Entries": "#52d5ff",
"wisp": "#7582D1",
"Wollok": "#a23738",
"World of Warcraft Addon Data": "#f7e43f",
"X10": "#4B6BEF",
"xBase": "#403a40",
"XC": "#99DA07",
"XML": "#0060ac",
"XML Property List": "#0060ac",
"Xojo": "#81bd41",
"Xonsh": "#285EEF",
"XProc": null,
"XQuery": "#5232e7",
"XS": null,
"XSLT": "#EB8CEB",
"Xtend": "#24255d",
"Yacc": "#4B6C4B",
"YAML": "#cb171e",
"YARA": "#220000",
"YASnippet": "#32AB90",
"ZAP": "#0d665e",
"Zeek": null,
"ZenScript": "#00BCD1",
"Zephir": "#118f9e",
"Zig": "#ec915c",
"ZIL": "#dc75e5",
"Zimpl": "#d67711"
}

View file

@ -1,533 +0,0 @@
{
"1C Enterprise": "#814CCC",
"4D": "#004289",
"ABAP": "#E8274B",
"ABAP CDS": "#555e25",
"ActionScript": "#882B0F",
"Ada": "#02f88c",
"Adobe Font Metrics": "#fa0f00",
"Agda": "#315665",
"AGS Script": "#B9D9FF",
"AIDL": "#34EB6B",
"AL": "#3AA2B5",
"Alloy": "#64C800",
"Alpine Abuild": "#0D597F",
"Altium Designer": "#A89663",
"AMPL": "#E6EFBB",
"AngelScript": "#C7D7DC",
"Ant Build System": "#A9157E",
"ANTLR": "#9DC3FF",
"ApacheConf": "#d12127",
"Apex": "#1797c0",
"API Blueprint": "#2ACCA8",
"APL": "#5A8164",
"Apollo Guidance Computer": "#0B3D91",
"AppleScript": "#101F1F",
"Arc": "#aa2afe",
"AsciiDoc": "#73a0c5",
"ASL": null,
"ASP.NET": "#9400ff",
"AspectJ": "#a957b0",
"Assembly": "#6E4C13",
"Astro": "#ff5a03",
"Asymptote": "#ff0000",
"ATS": "#1ac620",
"Augeas": "#9CC134",
"AutoHotkey": "#6594b9",
"AutoIt": "#1C3552",
"Avro IDL": "#0040FF",
"Awk": "#c30e9b",
"Ballerina": "#FF5000",
"BASIC": "#ff0000",
"Batchfile": "#C1F12E",
"Beef": "#a52f4e",
"Befunge": null,
"BibTeX": "#778899",
"Bicep": "#519aba",
"Bison": "#6A463F",
"BitBake": "#00bce4",
"Blade": "#f7523f",
"BlitzBasic": "#00FFAE",
"BlitzMax": "#cd6400",
"Bluespec": "#12223c",
"Boo": "#d4bec1",
"Boogie": "#c80fa0",
"Brainfuck": "#2F2530",
"Brightscript": "#662D91",
"Browserslist": "#ffd539",
"C": "#555555",
"C#": "#178600",
"C++": "#f34b7d",
"C2hs Haskell": null,
"Cabal Config": "#483465",
"Cap'n Proto": "#c42727",
"CartoCSS": null,
"Ceylon": "#dfa535",
"Chapel": "#8dc63f",
"Charity": null,
"ChucK": "#3f8000",
"Cirru": "#ccccff",
"Clarion": "#db901e",
"Classic ASP": "#6a40fd",
"Clean": "#3F85AF",
"Click": "#E4E6F3",
"CLIPS": "#00A300",
"Clojure": "#db5855",
"Closure Templates": "#0d948f",
"Cloud Firestore Security Rules": "#FFA000",
"CMake": "#DA3434",
"COBOL": null,
"CodeQL": "#140f46",
"CoffeeScript": "#244776",
"ColdFusion": "#ed2cd6",
"ColdFusion CFC": "#ed2cd6",
"COLLADA": "#F1A42B",
"Common Lisp": "#3fb68b",
"Common Workflow Language": "#B5314C",
"Component Pascal": "#B0CE4E",
"Cool": null,
"Coq": "#d0b68c",
"Crystal": "#000100",
"CSON": "#244776",
"Csound": "#1a1a1a",
"Csound Document": "#1a1a1a",
"Csound Score": "#1a1a1a",
"CSS": "#563d7c",
"CSV": "#237346",
"Cuda": "#3A4E3A",
"CUE": "#5886E1",
"CWeb": "#00007a",
"Cycript": null,
"Cython": "#fedf5b",
"D": "#ba595e",
"Dafny": "#FFEC25",
"Darcs Patch": "#8eff23",
"Dart": "#00B4AB",
"DataWeave": "#003a52",
"Dhall": "#dfafff",
"DIGITAL Command Language": null,
"DirectX 3D File": "#aace60",
"DM": "#447265",
"Dockerfile": "#384d54",
"Dogescript": "#cca760",
"DTrace": null,
"Dylan": "#6c616e",
"E": "#ccce35",
"Easybuild": "#069406",
"eC": "#913960",
"Ecere Projects": "#913960",
"ECL": "#8a1267",
"ECLiPSe": "#001d9d",
"EditorConfig": "#fff1f2",
"Eiffel": "#4d6977",
"EJS": "#a91e50",
"Elixir": "#6e4a7e",
"Elm": "#60B5CC",
"Emacs Lisp": "#c065db",
"EmberScript": "#FFF4F3",
"EQ": "#a78649",
"Erlang": "#B83998",
"F#": "#b845fc",
"F*": "#572e30",
"Factor": "#636746",
"Fancy": "#7b9db4",
"Fantom": "#14253c",
"Faust": "#c37240",
"Fennel": "#fff3d7",
"FIGlet Font": "#FFDDBB",
"Filebench WML": "#F6B900",
"Filterscript": null,
"fish": "#4aae47",
"Fluent": "#ffcc33",
"FLUX": "#88ccff",
"Forth": "#341708",
"Fortran": "#4d41b1",
"Fortran Free Form": "#4d41b1",
"FreeBasic": "#867db1",
"FreeMarker": "#0050b2",
"Frege": "#00cafe",
"Futhark": "#5f021f",
"G-code": "#D08CF2",
"Game Maker Language": "#71b417",
"GAML": "#FFC766",
"GAMS": "#f49a22",
"GAP": "#0000cc",
"GCC Machine Description": "#FFCFAB",
"GDB": null,
"GDScript": "#355570",
"GEDCOM": "#003058",
"Gemfile.lock": "#701516",
"Genie": "#fb855d",
"Genshi": "#951531",
"Gentoo Ebuild": "#9400ff",
"Gentoo Eclass": "#9400ff",
"Gerber Image": "#d20b00",
"Gherkin": "#5B2063",
"Git Attributes": "#F44D27",
"Git Config": "#F44D27",
"GLSL": "#5686a5",
"Glyph": "#c1ac7f",
"Gnuplot": "#f0a9f0",
"Go": "#00ADD8",
"Go Checksums": "#00ADD8",
"Go Module": "#00ADD8",
"Golo": "#88562A",
"Gosu": "#82937f",
"Grace": "#615f8b",
"Gradle": "#02303a",
"Grammatical Framework": "#ff0000",
"GraphQL": "#e10098",
"Graphviz (DOT)": "#2596be",
"Groovy": "#4298b8",
"Groovy Server Pages": "#4298b8",
"Hack": "#878787",
"Haml": "#ece2a9",
"Handlebars": "#f7931e",
"HAProxy": "#106da9",
"Harbour": "#0e60e3",
"Haskell": "#5e5086",
"Haxe": "#df7900",
"HCL": null,
"HiveQL": "#dce200",
"HLSL": "#aace60",
"HolyC": "#ffefaf",
"HTML": "#e34c26",
"HTML+ECR": "#2e1052",
"HTML+EEX": "#6e4a7e",
"HTML+ERB": "#701516",
"HTML+PHP": "#4f5d95",
"HTML+Razor": "#512be4",
"HTTP": "#005C9C",
"HXML": "#f68712",
"Hy": "#7790B2",
"HyPhy": null,
"IDL": "#a3522f",
"Idris": "#b30000",
"Ignore List": "#000000",
"IGOR Pro": "#0000cc",
"ImageJ Macro": "#99AAFF",
"Inform 7": null,
"INI": "#d1dbe0",
"Inno Setup": "#264b99",
"Io": "#a9188d",
"Ioke": "#078193",
"Isabelle": "#FEFE00",
"Isabelle ROOT": "#FEFE00",
"J": "#9EEDFF",
"JAR Manifest": "#b07219",
"Jasmin": "#d03600",
"Java": "#b07219",
"Java Properties": "#2A6277",
"Java Server Pages": "#2A6277",
"JavaScript": "#f1e05a",
"JavaScript+ERB": "#f1e05a",
"Jest Snapshot": "#15c213",
"JFlex": "#DBCA00",
"Jinja": "#a52a22",
"Jison": "#56b3cb",
"Jison Lex": "#56b3cb",
"Jolie": "#843179",
"jq": "#c7254e",
"JSON": "#292929",
"JSON with Comments": "#292929",
"JSON5": "#267CB9",
"JSONiq": "#40d47e",
"JSONLD": "#0c479c",
"Jsonnet": "#0064bd",
"Julia": "#a270ba",
"Jupyter Notebook": "#DA5B0B",
"Kaitai Struct": "#773b37",
"KakouneScript": "#6f8042",
"KiCad Layout": "#2f4aab",
"KiCad Legacy Layout": "#2f4aab",
"KiCad Schematic": "#2f4aab",
"Kotlin": "#A97BFF",
"KRL": "#28430A",
"LabVIEW": "#fede06",
"Lark": "#2980B9",
"Lasso": "#999999",
"Latte": "#f2a542",
"Lean": null,
"Less": "#1d365d",
"Lex": "#DBCA00",
"LFE": "#4C3023",
"LilyPond": "#9ccc7c",
"Limbo": null,
"Liquid": "#67b8de",
"Literate Agda": "#315665",
"Literate CoffeeScript": "#244776",
"Literate Haskell": "#5e5086",
"LiveScript": "#499886",
"LLVM": "#185619",
"Logos": null,
"Logtalk": "#295b9a",
"LOLCODE": "#cc9900",
"LookML": "#652B81",
"LoomScript": null,
"LSL": "#3d9970",
"Lua": "#000080",
"M": null,
"M4": null,
"M4Sugar": null,
"Macaulay2": "#d8ffff",
"Makefile": "#427819",
"Mako": "#7e858d",
"Markdown": "#083fa1",
"Marko": "#42bff2",
"Mask": "#f97732",
"Mathematica": "#dd1100",
"MATLAB": "#e16737",
"Max": "#c4a79c",
"MAXScript": "#00a6a6",
"mcfunction": "#E22837",
"Mercury": "#ff2b2b",
"Meson": "#007800",
"Metal": "#8f14e9",
"MiniD": null,
"Mirah": "#c7a938",
"mIRC Script": "#3d57c3",
"MLIR": "#5EC8DB",
"Modelica": "#de1d31",
"Modula-2": "#10253f",
"Modula-3": "#223388",
"Module Management System": null,
"Monkey": null,
"Moocode": null,
"MoonScript": "#ff4585",
"Motorola 68K Assembly": "#005daa",
"MQL4": "#62A8D6",
"MQL5": "#4A76B8",
"MTML": "#b7e1f4",
"MUF": null,
"mupad": "#244963",
"Mustache": "#724b3b",
"Myghty": null,
"nanorc": "#2d004d",
"NASL": null,
"NCL": "#28431f",
"Nearley": "#990000",
"Nemerle": "#3d3c6e",
"nesC": "#94B0C7",
"NetLinx": "#0aa0ff",
"NetLinx+ERB": "#747faa",
"NetLogo": "#ff6375",
"NewLisp": "#87AED7",
"Nextflow": "#3ac486",
"Nginx": "#009639",
"Nim": "#ffc200",
"Nit": "#009917",
"Nix": "#7e7eff",
"NPM Config": "#cb3837",
"NSIS": null,
"Nu": "#c9df40",
"NumPy": "#9C8AF9",
"Nunjucks": "#3d8137",
"NWScript": "#111522",
"Objective-C": "#438eff",
"Objective-C++": "#6866fb",
"Objective-J": "#ff0c5a",
"ObjectScript": "#424893",
"OCaml": "#3be133",
"Odin": "#60AFFE",
"Omgrofl": "#cabbff",
"ooc": "#b0b77e",
"Opa": null,
"Opal": "#f7ede0",
"Open Policy Agent": "#7d9199",
"OpenCL": "#ed2e2d",
"OpenEdge ABL": "#5ce600",
"OpenQASM": "#AA70FF",
"OpenRC runscript": null,
"OpenSCAD": "#e5cd45",
"Org": "#77aa99",
"Ox": null,
"Oxygene": "#cdd0e3",
"Oz": "#fab738",
"P4": "#7055b5",
"Pan": "#cc0000",
"Papyrus": "#6600cc",
"Parrot": "#f3ca0a",
"Parrot Assembly": null,
"Parrot Internal Representation": null,
"Pascal": "#E3F171",
"Pawn": "#dbb284",
"PEG.js": "#234d6b",
"Pep8": "#C76F5B",
"Perl": "#0298c3",
"PHP": "#4F5D95",
"PicoLisp": "#6067af",
"PigLatin": "#fcd7de",
"Pike": "#005390",
"PLpgSQL": "#336790",
"PLSQL": "#dad8d8",
"PogoScript": "#d80074",
"Pony": null,
"PostCSS": "#dc3a0c",
"PostScript": "#da291c",
"POV-Ray SDL": "#6bac65",
"PowerBuilder": "#8f0f8d",
"PowerShell": "#012456",
"Prisma": "#0c344b",
"Processing": "#0096D8",
"Prolog": "#74283c",
"Propeller Spin": "#7fa2a7",
"Pug": "#a86454",
"Puppet": "#302B6D",
"PureBasic": "#5a6986",
"PureScript": "#1D222D",
"Python": "#3572A5",
"Python console": "#3572A5",
"Python traceback": "#3572A5",
"q": "#0040cd",
"Q#": "#fed659",
"QMake": null,
"QML": "#44a51c",
"Qt Script": "#00b841",
"Quake": "#882233",
"R": "#198CE7",
"Racket": "#3c5caa",
"Ragel": "#9d5200",
"Raku": "#0000fb",
"RAML": "#77d9fb",
"Rascal": "#fffaa0",
"RDoc": "#701516",
"REALbasic": null,
"Reason": "#ff5847",
"Rebol": "#358a5b",
"Record Jar": "#0673ba",
"Red": "#f50000",
"Redcode": null,
"Regular Expression": "#009a00",
"Ren'Py": "#ff7f7f",
"RenderScript": null,
"ReScript": "#ed5051",
"reStructuredText": "#141414",
"REXX": "#d90e09",
"Ring": "#2D54CB",
"Riot": "#A71E49",
"RMarkdown": "#198ce7",
"RobotFramework": "#00c0b5",
"Roff": "#ecdebe",
"Roff Manpage": "#ecdebe",
"Rouge": "#cc0088",
"RPC": null,
"Ruby": "#701516",
"RUNOFF": "#665a4e",
"Rust": "#dea584",
"Sage": null,
"SaltStack": "#646464",
"SAS": "#B34936",
"Sass": "#a53b70",
"Scala": "#c22d40",
"Scaml": "#bd181a",
"Scheme": "#1e4aec",
"Scilab": "#ca0f21",
"SCSS": "#c6538c",
"sed": "#64b970",
"Self": "#0579aa",
"ShaderLab": "#222c37",
"Shell": "#89e051",
"ShellSession": null,
"Shen": "#120F14",
"Sieve": null,
"Singularity": "#64E6AD",
"Slash": "#007eff",
"Slice": "#003fa2",
"Slim": "#2b2b2b",
"Smali": null,
"Smalltalk": "#596706",
"Smarty": "#f0c040",
"SmPL": "#c94949",
"SMT": null,
"Solidity": "#AA6746",
"SourcePawn": "#f69e1d",
"SPARQL": "#0C4597",
"SQF": "#3F3F3F",
"SQL": "#e38c00",
"SQLPL": "#e38c00",
"Squirrel": "#800000",
"SRecode Template": "#348a34",
"Stan": "#b2011d",
"Standard ML": "#dc566d",
"Starlark": "#76d275",
"Stata": "#1a5f91",
"StringTemplate": "#3fb34f",
"Stylus": "#ff6347",
"SubRip Text": "#9e0101",
"SugarSS": "#2fcc9f",
"SuperCollider": "#46390b",
"Svelte": "#ff3e00",
"SVG": "#ff9900",
"Swift": "#F05138",
"SWIG": null,
"SystemVerilog": "#DAE1C2",
"Tcl": "#e4cc98",
"Tcsh": null,
"Terra": "#00004c",
"TeX": "#3D6117",
"Textile": "#ffe7ac",
"TextMate Properties": "#df66e4",
"Thrift": "#D12127",
"TI Program": "#A0AA87",
"TLA": "#4b0079",
"TOML": "#9c4221",
"TSQL": "#e38c00",
"TSV": "#237346",
"TSX": "#2b7489",
"Turing": "#cf142b",
"Twig": "#c1d026",
"TXL": "#0178b8",
"TypeScript": "#2b7489",
"Unified Parallel C": "#4e3617",
"Unity3D Asset": "#222c37",
"Unix Assembly": null,
"Uno": "#9933cc",
"UnrealScript": "#a54c4d",
"UrWeb": "#ccccee",
"V": "#4f87c4",
"Vala": "#fbe5cd",
"Valve Data Format": "#f26025",
"VBA": "#867db1",
"VBScript": "#15dcdc",
"VCL": "#148AA8",
"Verilog": "#b2b7f8",
"VHDL": "#adb2cb",
"Vim Help File": "#199f4b",
"Vim Script": "#199f4b",
"Vim Snippet": "#199f4b",
"Visual Basic .NET": "#945db7",
"Volt": "#1F1F1F",
"Vue": "#41b883",
"wdl": "#42f1f4",
"Web Ontology Language": "#5b70bd",
"WebAssembly": "#04133b",
"WebIDL": null,
"Wikitext": "#fc5757",
"Windows Registry Entries": "#52d5ff",
"wisp": "#7582D1",
"Wollok": "#a23738",
"World of Warcraft Addon Data": "#f7e43f",
"X10": "#4B6BEF",
"xBase": "#403a40",
"XC": "#99DA07",
"XML": "#0060ac",
"XML Property List": "#0060ac",
"Xojo": "#81bd41",
"Xonsh": "#285EEF",
"XProc": null,
"XQuery": "#5232e7",
"XS": null,
"XSLT": "#EB8CEB",
"Xtend": "#24255d",
"Yacc": "#4B6C4B",
"YAML": "#cb171e",
"YARA": "#220000",
"YASnippet": "#32AB90",
"ZAP": "#0d665e",
"Zeek": null,
"ZenScript": "#00BCD1",
"Zephir": "#118f9e",
"Zig": "#ec915c",
"ZIL": "#dc75e5",
"Zimpl": "#d67711"
}

View file

@ -1,533 +0,0 @@
{
"1C Enterprise": "#814CCC",
"4D": "#004289",
"ABAP": "#E8274B",
"ABAP CDS": "#555e25",
"ActionScript": "#882B0F",
"Ada": "#02f88c",
"Adobe Font Metrics": "#fa0f00",
"Agda": "#315665",
"AGS Script": "#B9D9FF",
"AIDL": "#34EB6B",
"AL": "#3AA2B5",
"Alloy": "#64C800",
"Alpine Abuild": "#0D597F",
"Altium Designer": "#A89663",
"AMPL": "#E6EFBB",
"AngelScript": "#C7D7DC",
"Ant Build System": "#A9157E",
"ANTLR": "#9DC3FF",
"ApacheConf": "#d12127",
"Apex": "#1797c0",
"API Blueprint": "#2ACCA8",
"APL": "#5A8164",
"Apollo Guidance Computer": "#0B3D91",
"AppleScript": "#101F1F",
"Arc": "#aa2afe",
"AsciiDoc": "#73a0c5",
"ASL": null,
"ASP.NET": "#9400ff",
"AspectJ": "#a957b0",
"Assembly": "#6E4C13",
"Astro": "#ff5a03",
"Asymptote": "#ff0000",
"ATS": "#1ac620",
"Augeas": "#9CC134",
"AutoHotkey": "#6594b9",
"AutoIt": "#1C3552",
"Avro IDL": "#0040FF",
"Awk": "#c30e9b",
"Ballerina": "#FF5000",
"BASIC": "#ff0000",
"Batchfile": "#C1F12E",
"Beef": "#a52f4e",
"Befunge": null,
"BibTeX": "#778899",
"Bicep": "#519aba",
"Bison": "#6A463F",
"BitBake": "#00bce4",
"Blade": "#f7523f",
"BlitzBasic": "#00FFAE",
"BlitzMax": "#cd6400",
"Bluespec": "#12223c",
"Boo": "#d4bec1",
"Boogie": "#c80fa0",
"Brainfuck": "#2F2530",
"Brightscript": "#662D91",
"Browserslist": "#ffd539",
"C": "#555555",
"C#": "#178600",
"C++": "#f34b7d",
"C2hs Haskell": null,
"Cabal Config": "#483465",
"Cap'n Proto": "#c42727",
"CartoCSS": null,
"Ceylon": "#dfa535",
"Chapel": "#8dc63f",
"Charity": null,
"ChucK": "#3f8000",
"Cirru": "#ccccff",
"Clarion": "#db901e",
"Classic ASP": "#6a40fd",
"Clean": "#3F85AF",
"Click": "#E4E6F3",
"CLIPS": "#00A300",
"Clojure": "#db5855",
"Closure Templates": "#0d948f",
"Cloud Firestore Security Rules": "#FFA000",
"CMake": "#DA3434",
"COBOL": null,
"CodeQL": "#140f46",
"CoffeeScript": "#244776",
"ColdFusion": "#ed2cd6",
"ColdFusion CFC": "#ed2cd6",
"COLLADA": "#F1A42B",
"Common Lisp": "#3fb68b",
"Common Workflow Language": "#B5314C",
"Component Pascal": "#B0CE4E",
"Cool": null,
"Coq": "#d0b68c",
"Crystal": "#000100",
"CSON": "#244776",
"Csound": "#1a1a1a",
"Csound Document": "#1a1a1a",
"Csound Score": "#1a1a1a",
"CSS": "#563d7c",
"CSV": "#237346",
"Cuda": "#3A4E3A",
"CUE": "#5886E1",
"CWeb": "#00007a",
"Cycript": null,
"Cython": "#fedf5b",
"D": "#ba595e",
"Dafny": "#FFEC25",
"Darcs Patch": "#8eff23",
"Dart": "#00B4AB",
"DataWeave": "#003a52",
"Dhall": "#dfafff",
"DIGITAL Command Language": null,
"DirectX 3D File": "#aace60",
"DM": "#447265",
"Dockerfile": "#384d54",
"Dogescript": "#cca760",
"DTrace": null,
"Dylan": "#6c616e",
"E": "#ccce35",
"Easybuild": "#069406",
"eC": "#913960",
"Ecere Projects": "#913960",
"ECL": "#8a1267",
"ECLiPSe": "#001d9d",
"EditorConfig": "#fff1f2",
"Eiffel": "#4d6977",
"EJS": "#a91e50",
"Elixir": "#6e4a7e",
"Elm": "#60B5CC",
"Emacs Lisp": "#c065db",
"EmberScript": "#FFF4F3",
"EQ": "#a78649",
"Erlang": "#B83998",
"F#": "#b845fc",
"F*": "#572e30",
"Factor": "#636746",
"Fancy": "#7b9db4",
"Fantom": "#14253c",
"Faust": "#c37240",
"Fennel": "#fff3d7",
"FIGlet Font": "#FFDDBB",
"Filebench WML": "#F6B900",
"Filterscript": null,
"fish": "#4aae47",
"Fluent": "#ffcc33",
"FLUX": "#88ccff",
"Forth": "#341708",
"Fortran": "#4d41b1",
"Fortran Free Form": "#4d41b1",
"FreeBasic": "#867db1",
"FreeMarker": "#0050b2",
"Frege": "#00cafe",
"Futhark": "#5f021f",
"G-code": "#D08CF2",
"Game Maker Language": "#71b417",
"GAML": "#FFC766",
"GAMS": "#f49a22",
"GAP": "#0000cc",
"GCC Machine Description": "#FFCFAB",
"GDB": null,
"GDScript": "#355570",
"GEDCOM": "#003058",
"Gemfile.lock": "#701516",
"Genie": "#fb855d",
"Genshi": "#951531",
"Gentoo Ebuild": "#9400ff",
"Gentoo Eclass": "#9400ff",
"Gerber Image": "#d20b00",
"Gherkin": "#5B2063",
"Git Attributes": "#F44D27",
"Git Config": "#F44D27",
"GLSL": "#5686a5",
"Glyph": "#c1ac7f",
"Gnuplot": "#f0a9f0",
"Go": "#00ADD8",
"Go Checksums": "#00ADD8",
"Go Module": "#00ADD8",
"Golo": "#88562A",
"Gosu": "#82937f",
"Grace": "#615f8b",
"Gradle": "#02303a",
"Grammatical Framework": "#ff0000",
"GraphQL": "#e10098",
"Graphviz (DOT)": "#2596be",
"Groovy": "#4298b8",
"Groovy Server Pages": "#4298b8",
"Hack": "#878787",
"Haml": "#ece2a9",
"Handlebars": "#f7931e",
"HAProxy": "#106da9",
"Harbour": "#0e60e3",
"Haskell": "#5e5086",
"Haxe": "#df7900",
"HCL": null,
"HiveQL": "#dce200",
"HLSL": "#aace60",
"HolyC": "#ffefaf",
"HTML": "#e34c26",
"HTML+ECR": "#2e1052",
"HTML+EEX": "#6e4a7e",
"HTML+ERB": "#701516",
"HTML+PHP": "#4f5d95",
"HTML+Razor": "#512be4",
"HTTP": "#005C9C",
"HXML": "#f68712",
"Hy": "#7790B2",
"HyPhy": null,
"IDL": "#a3522f",
"Idris": "#b30000",
"Ignore List": "#000000",
"IGOR Pro": "#0000cc",
"ImageJ Macro": "#99AAFF",
"Inform 7": null,
"INI": "#d1dbe0",
"Inno Setup": "#264b99",
"Io": "#a9188d",
"Ioke": "#078193",
"Isabelle": "#FEFE00",
"Isabelle ROOT": "#FEFE00",
"J": "#9EEDFF",
"JAR Manifest": "#b07219",
"Jasmin": "#d03600",
"Java": "#b07219",
"Java Properties": "#2A6277",
"Java Server Pages": "#2A6277",
"JavaScript": "#f1e05a",
"JavaScript+ERB": "#f1e05a",
"Jest Snapshot": "#15c213",
"JFlex": "#DBCA00",
"Jinja": "#a52a22",
"Jison": "#56b3cb",
"Jison Lex": "#56b3cb",
"Jolie": "#843179",
"jq": "#c7254e",
"JSON": "#292929",
"JSON with Comments": "#292929",
"JSON5": "#267CB9",
"JSONiq": "#40d47e",
"JSONLD": "#0c479c",
"Jsonnet": "#0064bd",
"Julia": "#a270ba",
"Jupyter Notebook": "#DA5B0B",
"Kaitai Struct": "#773b37",
"KakouneScript": "#6f8042",
"KiCad Layout": "#2f4aab",
"KiCad Legacy Layout": "#2f4aab",
"KiCad Schematic": "#2f4aab",
"Kotlin": "#A97BFF",
"KRL": "#28430A",
"LabVIEW": "#fede06",
"Lark": "#2980B9",
"Lasso": "#999999",
"Latte": "#f2a542",
"Lean": null,
"Less": "#1d365d",
"Lex": "#DBCA00",
"LFE": "#4C3023",
"LilyPond": "#9ccc7c",
"Limbo": null,
"Liquid": "#67b8de",
"Literate Agda": "#315665",
"Literate CoffeeScript": "#244776",
"Literate Haskell": "#5e5086",
"LiveScript": "#499886",
"LLVM": "#185619",
"Logos": null,
"Logtalk": "#295b9a",
"LOLCODE": "#cc9900",
"LookML": "#652B81",
"LoomScript": null,
"LSL": "#3d9970",
"Lua": "#000080",
"M": null,
"M4": null,
"M4Sugar": null,
"Macaulay2": "#d8ffff",
"Makefile": "#427819",
"Mako": "#7e858d",
"Markdown": "#083fa1",
"Marko": "#42bff2",
"Mask": "#f97732",
"Mathematica": "#dd1100",
"MATLAB": "#e16737",
"Max": "#c4a79c",
"MAXScript": "#00a6a6",
"mcfunction": "#E22837",
"Mercury": "#ff2b2b",
"Meson": "#007800",
"Metal": "#8f14e9",
"MiniD": null,
"Mirah": "#c7a938",
"mIRC Script": "#3d57c3",
"MLIR": "#5EC8DB",
"Modelica": "#de1d31",
"Modula-2": "#10253f",
"Modula-3": "#223388",
"Module Management System": null,
"Monkey": null,
"Moocode": null,
"MoonScript": "#ff4585",
"Motorola 68K Assembly": "#005daa",
"MQL4": "#62A8D6",
"MQL5": "#4A76B8",
"MTML": "#b7e1f4",
"MUF": null,
"mupad": "#244963",
"Mustache": "#724b3b",
"Myghty": null,
"nanorc": "#2d004d",
"NASL": null,
"NCL": "#28431f",
"Nearley": "#990000",
"Nemerle": "#3d3c6e",
"nesC": "#94B0C7",
"NetLinx": "#0aa0ff",
"NetLinx+ERB": "#747faa",
"NetLogo": "#ff6375",
"NewLisp": "#87AED7",
"Nextflow": "#3ac486",
"Nginx": "#009639",
"Nim": "#ffc200",
"Nit": "#009917",
"Nix": "#7e7eff",
"NPM Config": "#cb3837",
"NSIS": null,
"Nu": "#c9df40",
"NumPy": "#9C8AF9",
"Nunjucks": "#3d8137",
"NWScript": "#111522",
"Objective-C": "#438eff",
"Objective-C++": "#6866fb",
"Objective-J": "#ff0c5a",
"ObjectScript": "#424893",
"OCaml": "#3be133",
"Odin": "#60AFFE",
"Omgrofl": "#cabbff",
"ooc": "#b0b77e",
"Opa": null,
"Opal": "#f7ede0",
"Open Policy Agent": "#7d9199",
"OpenCL": "#ed2e2d",
"OpenEdge ABL": "#5ce600",
"OpenQASM": "#AA70FF",
"OpenRC runscript": null,
"OpenSCAD": "#e5cd45",
"Org": "#77aa99",
"Ox": null,
"Oxygene": "#cdd0e3",
"Oz": "#fab738",
"P4": "#7055b5",
"Pan": "#cc0000",
"Papyrus": "#6600cc",
"Parrot": "#f3ca0a",
"Parrot Assembly": null,
"Parrot Internal Representation": null,
"Pascal": "#E3F171",
"Pawn": "#dbb284",
"PEG.js": "#234d6b",
"Pep8": "#C76F5B",
"Perl": "#0298c3",
"PHP": "#4F5D95",
"PicoLisp": "#6067af",
"PigLatin": "#fcd7de",
"Pike": "#005390",
"PLpgSQL": "#336790",
"PLSQL": "#dad8d8",
"PogoScript": "#d80074",
"Pony": null,
"PostCSS": "#dc3a0c",
"PostScript": "#da291c",
"POV-Ray SDL": "#6bac65",
"PowerBuilder": "#8f0f8d",
"PowerShell": "#012456",
"Prisma": "#0c344b",
"Processing": "#0096D8",
"Prolog": "#74283c",
"Propeller Spin": "#7fa2a7",
"Pug": "#a86454",
"Puppet": "#302B6D",
"PureBasic": "#5a6986",
"PureScript": "#1D222D",
"Python": "#3572A5",
"Python console": "#3572A5",
"Python traceback": "#3572A5",
"q": "#0040cd",
"Q#": "#fed659",
"QMake": null,
"QML": "#44a51c",
"Qt Script": "#00b841",
"Quake": "#882233",
"R": "#198CE7",
"Racket": "#3c5caa",
"Ragel": "#9d5200",
"Raku": "#0000fb",
"RAML": "#77d9fb",
"Rascal": "#fffaa0",
"RDoc": "#701516",
"REALbasic": null,
"Reason": "#ff5847",
"Rebol": "#358a5b",
"Record Jar": "#0673ba",
"Red": "#f50000",
"Redcode": null,
"Regular Expression": "#009a00",
"Ren'Py": "#ff7f7f",
"RenderScript": null,
"ReScript": "#ed5051",
"reStructuredText": "#141414",
"REXX": "#d90e09",
"Ring": "#2D54CB",
"Riot": "#A71E49",
"RMarkdown": "#198ce7",
"RobotFramework": "#00c0b5",
"Roff": "#ecdebe",
"Roff Manpage": "#ecdebe",
"Rouge": "#cc0088",
"RPC": null,
"Ruby": "#701516",
"RUNOFF": "#665a4e",
"Rust": "#dea584",
"Sage": null,
"SaltStack": "#646464",
"SAS": "#B34936",
"Sass": "#a53b70",
"Scala": "#c22d40",
"Scaml": "#bd181a",
"Scheme": "#1e4aec",
"Scilab": "#ca0f21",
"SCSS": "#c6538c",
"sed": "#64b970",
"Self": "#0579aa",
"ShaderLab": "#222c37",
"Shell": "#89e051",
"ShellSession": null,
"Shen": "#120F14",
"Sieve": null,
"Singularity": "#64E6AD",
"Slash": "#007eff",
"Slice": "#003fa2",
"Slim": "#2b2b2b",
"Smali": null,
"Smalltalk": "#596706",
"Smarty": "#f0c040",
"SmPL": "#c94949",
"SMT": null,
"Solidity": "#AA6746",
"SourcePawn": "#f69e1d",
"SPARQL": "#0C4597",
"SQF": "#3F3F3F",
"SQL": "#e38c00",
"SQLPL": "#e38c00",
"Squirrel": "#800000",
"SRecode Template": "#348a34",
"Stan": "#b2011d",
"Standard ML": "#dc566d",
"Starlark": "#76d275",
"Stata": "#1a5f91",
"StringTemplate": "#3fb34f",
"Stylus": "#ff6347",
"SubRip Text": "#9e0101",
"SugarSS": "#2fcc9f",
"SuperCollider": "#46390b",
"Svelte": "#ff3e00",
"SVG": "#ff9900",
"Swift": "#F05138",
"SWIG": null,
"SystemVerilog": "#DAE1C2",
"Tcl": "#e4cc98",
"Tcsh": null,
"Terra": "#00004c",
"TeX": "#3D6117",
"Textile": "#ffe7ac",
"TextMate Properties": "#df66e4",
"Thrift": "#D12127",
"TI Program": "#A0AA87",
"TLA": "#4b0079",
"TOML": "#9c4221",
"TSQL": "#e38c00",
"TSV": "#237346",
"TSX": "#2b7489",
"Turing": "#cf142b",
"Twig": "#c1d026",
"TXL": "#0178b8",
"TypeScript": "#2b7489",
"Unified Parallel C": "#4e3617",
"Unity3D Asset": "#222c37",
"Unix Assembly": null,
"Uno": "#9933cc",
"UnrealScript": "#a54c4d",
"UrWeb": "#ccccee",
"V": "#4f87c4",
"Vala": "#fbe5cd",
"Valve Data Format": "#f26025",
"VBA": "#867db1",
"VBScript": "#15dcdc",
"VCL": "#148AA8",
"Verilog": "#b2b7f8",
"VHDL": "#adb2cb",
"Vim Help File": "#199f4b",
"Vim Script": "#199f4b",
"Vim Snippet": "#199f4b",
"Visual Basic .NET": "#945db7",
"Volt": "#1F1F1F",
"Vue": "#41b883",
"wdl": "#42f1f4",
"Web Ontology Language": "#5b70bd",
"WebAssembly": "#04133b",
"WebIDL": null,
"Wikitext": "#fc5757",
"Windows Registry Entries": "#52d5ff",
"wisp": "#7582D1",
"Wollok": "#a23738",
"World of Warcraft Addon Data": "#f7e43f",
"X10": "#4B6BEF",
"xBase": "#403a40",
"XC": "#99DA07",
"XML": "#0060ac",
"XML Property List": "#0060ac",
"Xojo": "#81bd41",
"Xonsh": "#285EEF",
"XProc": null,
"XQuery": "#5232e7",
"XS": null,
"XSLT": "#EB8CEB",
"Xtend": "#24255d",
"Yacc": "#4B6C4B",
"YAML": "#cb171e",
"YARA": "#220000",
"YASnippet": "#32AB90",
"ZAP": "#0d665e",
"Zeek": null,
"ZenScript": "#00BCD1",
"Zephir": "#118f9e",
"Zig": "#ec915c",
"ZIL": "#dc75e5",
"Zimpl": "#d67711"
}

View file

@ -1,533 +0,0 @@
{
"1C Enterprise": "#814CCC",
"4D": "#004289",
"ABAP": "#E8274B",
"ABAP CDS": "#555e25",
"ActionScript": "#882B0F",
"Ada": "#02f88c",
"Adobe Font Metrics": "#fa0f00",
"Agda": "#315665",
"AGS Script": "#B9D9FF",
"AIDL": "#34EB6B",
"AL": "#3AA2B5",
"Alloy": "#64C800",
"Alpine Abuild": "#0D597F",
"Altium Designer": "#A89663",
"AMPL": "#E6EFBB",
"AngelScript": "#C7D7DC",
"Ant Build System": "#A9157E",
"ANTLR": "#9DC3FF",
"ApacheConf": "#d12127",
"Apex": "#1797c0",
"API Blueprint": "#2ACCA8",
"APL": "#5A8164",
"Apollo Guidance Computer": "#0B3D91",
"AppleScript": "#101F1F",
"Arc": "#aa2afe",
"AsciiDoc": "#73a0c5",
"ASL": null,
"ASP.NET": "#9400ff",
"AspectJ": "#a957b0",
"Assembly": "#6E4C13",
"Astro": "#ff5a03",
"Asymptote": "#ff0000",
"ATS": "#1ac620",
"Augeas": "#9CC134",
"AutoHotkey": "#6594b9",
"AutoIt": "#1C3552",
"Avro IDL": "#0040FF",
"Awk": "#c30e9b",
"Ballerina": "#FF5000",
"BASIC": "#ff0000",
"Batchfile": "#C1F12E",
"Beef": "#a52f4e",
"Befunge": null,
"BibTeX": "#778899",
"Bicep": "#519aba",
"Bison": "#6A463F",
"BitBake": "#00bce4",
"Blade": "#f7523f",
"BlitzBasic": "#00FFAE",
"BlitzMax": "#cd6400",
"Bluespec": "#12223c",
"Boo": "#d4bec1",
"Boogie": "#c80fa0",
"Brainfuck": "#2F2530",
"Brightscript": "#662D91",
"Browserslist": "#ffd539",
"C": "#555555",
"C#": "#178600",
"C++": "#f34b7d",
"C2hs Haskell": null,
"Cabal Config": "#483465",
"Cap'n Proto": "#c42727",
"CartoCSS": null,
"Ceylon": "#dfa535",
"Chapel": "#8dc63f",
"Charity": null,
"ChucK": "#3f8000",
"Cirru": "#ccccff",
"Clarion": "#db901e",
"Classic ASP": "#6a40fd",
"Clean": "#3F85AF",
"Click": "#E4E6F3",
"CLIPS": "#00A300",
"Clojure": "#db5855",
"Closure Templates": "#0d948f",
"Cloud Firestore Security Rules": "#FFA000",
"CMake": "#DA3434",
"COBOL": null,
"CodeQL": "#140f46",
"CoffeeScript": "#244776",
"ColdFusion": "#ed2cd6",
"ColdFusion CFC": "#ed2cd6",
"COLLADA": "#F1A42B",
"Common Lisp": "#3fb68b",
"Common Workflow Language": "#B5314C",
"Component Pascal": "#B0CE4E",
"Cool": null,
"Coq": "#d0b68c",
"Crystal": "#000100",
"CSON": "#244776",
"Csound": "#1a1a1a",
"Csound Document": "#1a1a1a",
"Csound Score": "#1a1a1a",
"CSS": "#563d7c",
"CSV": "#237346",
"Cuda": "#3A4E3A",
"CUE": "#5886E1",
"CWeb": "#00007a",
"Cycript": null,
"Cython": "#fedf5b",
"D": "#ba595e",
"Dafny": "#FFEC25",
"Darcs Patch": "#8eff23",
"Dart": "#00B4AB",
"DataWeave": "#003a52",
"Dhall": "#dfafff",
"DIGITAL Command Language": null,
"DirectX 3D File": "#aace60",
"DM": "#447265",
"Dockerfile": "#384d54",
"Dogescript": "#cca760",
"DTrace": null,
"Dylan": "#6c616e",
"E": "#ccce35",
"Easybuild": "#069406",
"eC": "#913960",
"Ecere Projects": "#913960",
"ECL": "#8a1267",
"ECLiPSe": "#001d9d",
"EditorConfig": "#fff1f2",
"Eiffel": "#4d6977",
"EJS": "#a91e50",
"Elixir": "#6e4a7e",
"Elm": "#60B5CC",
"Emacs Lisp": "#c065db",
"EmberScript": "#FFF4F3",
"EQ": "#a78649",
"Erlang": "#B83998",
"F#": "#b845fc",
"F*": "#572e30",
"Factor": "#636746",
"Fancy": "#7b9db4",
"Fantom": "#14253c",
"Faust": "#c37240",
"Fennel": "#fff3d7",
"FIGlet Font": "#FFDDBB",
"Filebench WML": "#F6B900",
"Filterscript": null,
"fish": "#4aae47",
"Fluent": "#ffcc33",
"FLUX": "#88ccff",
"Forth": "#341708",
"Fortran": "#4d41b1",
"Fortran Free Form": "#4d41b1",
"FreeBasic": "#867db1",
"FreeMarker": "#0050b2",
"Frege": "#00cafe",
"Futhark": "#5f021f",
"G-code": "#D08CF2",
"Game Maker Language": "#71b417",
"GAML": "#FFC766",
"GAMS": "#f49a22",
"GAP": "#0000cc",
"GCC Machine Description": "#FFCFAB",
"GDB": null,
"GDScript": "#355570",
"GEDCOM": "#003058",
"Gemfile.lock": "#701516",
"Genie": "#fb855d",
"Genshi": "#951531",
"Gentoo Ebuild": "#9400ff",
"Gentoo Eclass": "#9400ff",
"Gerber Image": "#d20b00",
"Gherkin": "#5B2063",
"Git Attributes": "#F44D27",
"Git Config": "#F44D27",
"GLSL": "#5686a5",
"Glyph": "#c1ac7f",
"Gnuplot": "#f0a9f0",
"Go": "#00ADD8",
"Go Checksums": "#00ADD8",
"Go Module": "#00ADD8",
"Golo": "#88562A",
"Gosu": "#82937f",
"Grace": "#615f8b",
"Gradle": "#02303a",
"Grammatical Framework": "#ff0000",
"GraphQL": "#e10098",
"Graphviz (DOT)": "#2596be",
"Groovy": "#4298b8",
"Groovy Server Pages": "#4298b8",
"Hack": "#878787",
"Haml": "#ece2a9",
"Handlebars": "#f7931e",
"HAProxy": "#106da9",
"Harbour": "#0e60e3",
"Haskell": "#5e5086",
"Haxe": "#df7900",
"HCL": null,
"HiveQL": "#dce200",
"HLSL": "#aace60",
"HolyC": "#ffefaf",
"HTML": "#e34c26",
"HTML+ECR": "#2e1052",
"HTML+EEX": "#6e4a7e",
"HTML+ERB": "#701516",
"HTML+PHP": "#4f5d95",
"HTML+Razor": "#512be4",
"HTTP": "#005C9C",
"HXML": "#f68712",
"Hy": "#7790B2",
"HyPhy": null,
"IDL": "#a3522f",
"Idris": "#b30000",
"Ignore List": "#000000",
"IGOR Pro": "#0000cc",
"ImageJ Macro": "#99AAFF",
"Inform 7": null,
"INI": "#d1dbe0",
"Inno Setup": "#264b99",
"Io": "#a9188d",
"Ioke": "#078193",
"Isabelle": "#FEFE00",
"Isabelle ROOT": "#FEFE00",
"J": "#9EEDFF",
"JAR Manifest": "#b07219",
"Jasmin": "#d03600",
"Java": "#b07219",
"Java Properties": "#2A6277",
"Java Server Pages": "#2A6277",
"JavaScript": "#f1e05a",
"JavaScript+ERB": "#f1e05a",
"Jest Snapshot": "#15c213",
"JFlex": "#DBCA00",
"Jinja": "#a52a22",
"Jison": "#56b3cb",
"Jison Lex": "#56b3cb",
"Jolie": "#843179",
"jq": "#c7254e",
"JSON": "#292929",
"JSON with Comments": "#292929",
"JSON5": "#267CB9",
"JSONiq": "#40d47e",
"JSONLD": "#0c479c",
"Jsonnet": "#0064bd",
"Julia": "#a270ba",
"Jupyter Notebook": "#DA5B0B",
"Kaitai Struct": "#773b37",
"KakouneScript": "#6f8042",
"KiCad Layout": "#2f4aab",
"KiCad Legacy Layout": "#2f4aab",
"KiCad Schematic": "#2f4aab",
"Kotlin": "#A97BFF",
"KRL": "#28430A",
"LabVIEW": "#fede06",
"Lark": "#2980B9",
"Lasso": "#999999",
"Latte": "#f2a542",
"Lean": null,
"Less": "#1d365d",
"Lex": "#DBCA00",
"LFE": "#4C3023",
"LilyPond": "#9ccc7c",
"Limbo": null,
"Liquid": "#67b8de",
"Literate Agda": "#315665",
"Literate CoffeeScript": "#244776",
"Literate Haskell": "#5e5086",
"LiveScript": "#499886",
"LLVM": "#185619",
"Logos": null,
"Logtalk": "#295b9a",
"LOLCODE": "#cc9900",
"LookML": "#652B81",
"LoomScript": null,
"LSL": "#3d9970",
"Lua": "#000080",
"M": null,
"M4": null,
"M4Sugar": null,
"Macaulay2": "#d8ffff",
"Makefile": "#427819",
"Mako": "#7e858d",
"Markdown": "#083fa1",
"Marko": "#42bff2",
"Mask": "#f97732",
"Mathematica": "#dd1100",
"MATLAB": "#e16737",
"Max": "#c4a79c",
"MAXScript": "#00a6a6",
"mcfunction": "#E22837",
"Mercury": "#ff2b2b",
"Meson": "#007800",
"Metal": "#8f14e9",
"MiniD": null,
"Mirah": "#c7a938",
"mIRC Script": "#3d57c3",
"MLIR": "#5EC8DB",
"Modelica": "#de1d31",
"Modula-2": "#10253f",
"Modula-3": "#223388",
"Module Management System": null,
"Monkey": null,
"Moocode": null,
"MoonScript": "#ff4585",
"Motorola 68K Assembly": "#005daa",
"MQL4": "#62A8D6",
"MQL5": "#4A76B8",
"MTML": "#b7e1f4",
"MUF": null,
"mupad": "#244963",
"Mustache": "#724b3b",
"Myghty": null,
"nanorc": "#2d004d",
"NASL": null,
"NCL": "#28431f",
"Nearley": "#990000",
"Nemerle": "#3d3c6e",
"nesC": "#94B0C7",
"NetLinx": "#0aa0ff",
"NetLinx+ERB": "#747faa",
"NetLogo": "#ff6375",
"NewLisp": "#87AED7",
"Nextflow": "#3ac486",
"Nginx": "#009639",
"Nim": "#ffc200",
"Nit": "#009917",
"Nix": "#7e7eff",
"NPM Config": "#cb3837",
"NSIS": null,
"Nu": "#c9df40",
"NumPy": "#9C8AF9",
"Nunjucks": "#3d8137",
"NWScript": "#111522",
"Objective-C": "#438eff",
"Objective-C++": "#6866fb",
"Objective-J": "#ff0c5a",
"ObjectScript": "#424893",
"OCaml": "#3be133",
"Odin": "#60AFFE",
"Omgrofl": "#cabbff",
"ooc": "#b0b77e",
"Opa": null,
"Opal": "#f7ede0",
"Open Policy Agent": "#7d9199",
"OpenCL": "#ed2e2d",
"OpenEdge ABL": "#5ce600",
"OpenQASM": "#AA70FF",
"OpenRC runscript": null,
"OpenSCAD": "#e5cd45",
"Org": "#77aa99",
"Ox": null,
"Oxygene": "#cdd0e3",
"Oz": "#fab738",
"P4": "#7055b5",
"Pan": "#cc0000",
"Papyrus": "#6600cc",
"Parrot": "#f3ca0a",
"Parrot Assembly": null,
"Parrot Internal Representation": null,
"Pascal": "#E3F171",
"Pawn": "#dbb284",
"PEG.js": "#234d6b",
"Pep8": "#C76F5B",
"Perl": "#0298c3",
"PHP": "#4F5D95",
"PicoLisp": "#6067af",
"PigLatin": "#fcd7de",
"Pike": "#005390",
"PLpgSQL": "#336790",
"PLSQL": "#dad8d8",
"PogoScript": "#d80074",
"Pony": null,
"PostCSS": "#dc3a0c",
"PostScript": "#da291c",
"POV-Ray SDL": "#6bac65",
"PowerBuilder": "#8f0f8d",
"PowerShell": "#012456",
"Prisma": "#0c344b",
"Processing": "#0096D8",
"Prolog": "#74283c",
"Propeller Spin": "#7fa2a7",
"Pug": "#a86454",
"Puppet": "#302B6D",
"PureBasic": "#5a6986",
"PureScript": "#1D222D",
"Python": "#3572A5",
"Python console": "#3572A5",
"Python traceback": "#3572A5",
"q": "#0040cd",
"Q#": "#fed659",
"QMake": null,
"QML": "#44a51c",
"Qt Script": "#00b841",
"Quake": "#882233",
"R": "#198CE7",
"Racket": "#3c5caa",
"Ragel": "#9d5200",
"Raku": "#0000fb",
"RAML": "#77d9fb",
"Rascal": "#fffaa0",
"RDoc": "#701516",
"REALbasic": null,
"Reason": "#ff5847",
"Rebol": "#358a5b",
"Record Jar": "#0673ba",
"Red": "#f50000",
"Redcode": null,
"Regular Expression": "#009a00",
"Ren'Py": "#ff7f7f",
"RenderScript": null,
"ReScript": "#ed5051",
"reStructuredText": "#141414",
"REXX": "#d90e09",
"Ring": "#2D54CB",
"Riot": "#A71E49",
"RMarkdown": "#198ce7",
"RobotFramework": "#00c0b5",
"Roff": "#ecdebe",
"Roff Manpage": "#ecdebe",
"Rouge": "#cc0088",
"RPC": null,
"Ruby": "#701516",
"RUNOFF": "#665a4e",
"Rust": "#dea584",
"Sage": null,
"SaltStack": "#646464",
"SAS": "#B34936",
"Sass": "#a53b70",
"Scala": "#c22d40",
"Scaml": "#bd181a",
"Scheme": "#1e4aec",
"Scilab": "#ca0f21",
"SCSS": "#c6538c",
"sed": "#64b970",
"Self": "#0579aa",
"ShaderLab": "#222c37",
"Shell": "#89e051",
"ShellSession": null,
"Shen": "#120F14",
"Sieve": null,
"Singularity": "#64E6AD",
"Slash": "#007eff",
"Slice": "#003fa2",
"Slim": "#2b2b2b",
"Smali": null,
"Smalltalk": "#596706",
"Smarty": "#f0c040",
"SmPL": "#c94949",
"SMT": null,
"Solidity": "#AA6746",
"SourcePawn": "#f69e1d",
"SPARQL": "#0C4597",
"SQF": "#3F3F3F",
"SQL": "#e38c00",
"SQLPL": "#e38c00",
"Squirrel": "#800000",
"SRecode Template": "#348a34",
"Stan": "#b2011d",
"Standard ML": "#dc566d",
"Starlark": "#76d275",
"Stata": "#1a5f91",
"StringTemplate": "#3fb34f",
"Stylus": "#ff6347",
"SubRip Text": "#9e0101",
"SugarSS": "#2fcc9f",
"SuperCollider": "#46390b",
"Svelte": "#ff3e00",
"SVG": "#ff9900",
"Swift": "#F05138",
"SWIG": null,
"SystemVerilog": "#DAE1C2",
"Tcl": "#e4cc98",
"Tcsh": null,
"Terra": "#00004c",
"TeX": "#3D6117",
"Textile": "#ffe7ac",
"TextMate Properties": "#df66e4",
"Thrift": "#D12127",
"TI Program": "#A0AA87",
"TLA": "#4b0079",
"TOML": "#9c4221",
"TSQL": "#e38c00",
"TSV": "#237346",
"TSX": "#2b7489",
"Turing": "#cf142b",
"Twig": "#c1d026",
"TXL": "#0178b8",
"TypeScript": "#2b7489",
"Unified Parallel C": "#4e3617",
"Unity3D Asset": "#222c37",
"Unix Assembly": null,
"Uno": "#9933cc",
"UnrealScript": "#a54c4d",
"UrWeb": "#ccccee",
"V": "#4f87c4",
"Vala": "#fbe5cd",
"Valve Data Format": "#f26025",
"VBA": "#867db1",
"VBScript": "#15dcdc",
"VCL": "#148AA8",
"Verilog": "#b2b7f8",
"VHDL": "#adb2cb",
"Vim Help File": "#199f4b",
"Vim Script": "#199f4b",
"Vim Snippet": "#199f4b",
"Visual Basic .NET": "#945db7",
"Volt": "#1F1F1F",
"Vue": "#41b883",
"wdl": "#42f1f4",
"Web Ontology Language": "#5b70bd",
"WebAssembly": "#04133b",
"WebIDL": null,
"Wikitext": "#fc5757",
"Windows Registry Entries": "#52d5ff",
"wisp": "#7582D1",
"Wollok": "#a23738",
"World of Warcraft Addon Data": "#f7e43f",
"X10": "#4B6BEF",
"xBase": "#403a40",
"XC": "#99DA07",
"XML": "#0060ac",
"XML Property List": "#0060ac",
"Xojo": "#81bd41",
"Xonsh": "#285EEF",
"XProc": null,
"XQuery": "#5232e7",
"XS": null,
"XSLT": "#EB8CEB",
"Xtend": "#24255d",
"Yacc": "#4B6C4B",
"YAML": "#cb171e",
"YARA": "#220000",
"YASnippet": "#32AB90",
"ZAP": "#0d665e",
"Zeek": null,
"ZenScript": "#00BCD1",
"Zephir": "#118f9e",
"Zig": "#ec915c",
"ZIL": "#dc75e5",
"Zimpl": "#d67711"
}

View file

@ -0,0 +1,533 @@
{
"1C Enterprise": "#814CCC",
"4D": "#004289",
"ABAP": "#E8274B",
"ABAP CDS": "#555e25",
"ActionScript": "#882B0F",
"Ada": "#02f88c",
"Adobe Font Metrics": "#fa0f00",
"Agda": "#315665",
"AGS Script": "#B9D9FF",
"AIDL": "#34EB6B",
"AL": "#3AA2B5",
"Alloy": "#64C800",
"Alpine Abuild": "#0D597F",
"Altium Designer": "#A89663",
"AMPL": "#E6EFBB",
"AngelScript": "#C7D7DC",
"Ant Build System": "#A9157E",
"ANTLR": "#9DC3FF",
"ApacheConf": "#d12127",
"Apex": "#1797c0",
"API Blueprint": "#2ACCA8",
"APL": "#5A8164",
"Apollo Guidance Computer": "#0B3D91",
"AppleScript": "#101F1F",
"Arc": "#aa2afe",
"AsciiDoc": "#73a0c5",
"ASL": null,
"ASP.NET": "#9400ff",
"AspectJ": "#a957b0",
"Assembly": "#6E4C13",
"Astro": "#ff5a03",
"Asymptote": "#ff0000",
"ATS": "#1ac620",
"Augeas": "#9CC134",
"AutoHotkey": "#6594b9",
"AutoIt": "#1C3552",
"Avro IDL": "#0040FF",
"Awk": "#c30e9b",
"Ballerina": "#FF5000",
"BASIC": "#ff0000",
"Batchfile": "#C1F12E",
"Beef": "#a52f4e",
"Befunge": null,
"BibTeX": "#778899",
"Bicep": "#519aba",
"Bison": "#6A463F",
"BitBake": "#00bce4",
"Blade": "#f7523f",
"BlitzBasic": "#00FFAE",
"BlitzMax": "#cd6400",
"Bluespec": "#12223c",
"Boo": "#d4bec1",
"Boogie": "#c80fa0",
"Brainfuck": "#2F2530",
"Brightscript": "#662D91",
"Browserslist": "#ffd539",
"C": "#555555",
"C#": "#178600",
"C++": "#f34b7d",
"C2hs Haskell": null,
"Cabal Config": "#483465",
"Cap'n Proto": "#c42727",
"CartoCSS": null,
"Ceylon": "#dfa535",
"Chapel": "#8dc63f",
"Charity": null,
"ChucK": "#3f8000",
"Cirru": "#ccccff",
"Clarion": "#db901e",
"Classic ASP": "#6a40fd",
"Clean": "#3F85AF",
"Click": "#E4E6F3",
"CLIPS": "#00A300",
"Clojure": "#db5855",
"Closure Templates": "#0d948f",
"Cloud Firestore Security Rules": "#FFA000",
"CMake": "#DA3434",
"COBOL": null,
"CodeQL": "#140f46",
"CoffeeScript": "#244776",
"ColdFusion": "#ed2cd6",
"ColdFusion CFC": "#ed2cd6",
"COLLADA": "#F1A42B",
"Common Lisp": "#3fb68b",
"Common Workflow Language": "#B5314C",
"Component Pascal": "#B0CE4E",
"Cool": null,
"Coq": "#d0b68c",
"Crystal": "#000100",
"CSON": "#244776",
"Csound": "#1a1a1a",
"Csound Document": "#1a1a1a",
"Csound Score": "#1a1a1a",
"CSS": "#563d7c",
"CSV": "#237346",
"Cuda": "#3A4E3A",
"CUE": "#5886E1",
"CWeb": "#00007a",
"Cycript": null,
"Cython": "#fedf5b",
"D": "#ba595e",
"Dafny": "#FFEC25",
"Darcs Patch": "#8eff23",
"Dart": "#00B4AB",
"DataWeave": "#003a52",
"Dhall": "#dfafff",
"DIGITAL Command Language": null,
"DirectX 3D File": "#aace60",
"DM": "#447265",
"Dockerfile": "#384d54",
"Dogescript": "#cca760",
"DTrace": null,
"Dylan": "#6c616e",
"E": "#ccce35",
"Easybuild": "#069406",
"eC": "#913960",
"Ecere Projects": "#913960",
"ECL": "#8a1267",
"ECLiPSe": "#001d9d",
"EditorConfig": "#fff1f2",
"Eiffel": "#4d6977",
"EJS": "#a91e50",
"Elixir": "#6e4a7e",
"Elm": "#60B5CC",
"Emacs Lisp": "#c065db",
"EmberScript": "#FFF4F3",
"EQ": "#a78649",
"Erlang": "#B83998",
"F#": "#b845fc",
"F*": "#572e30",
"Factor": "#636746",
"Fancy": "#7b9db4",
"Fantom": "#14253c",
"Faust": "#c37240",
"Fennel": "#fff3d7",
"FIGlet Font": "#FFDDBB",
"Filebench WML": "#F6B900",
"Filterscript": null,
"fish": "#4aae47",
"Fluent": "#ffcc33",
"FLUX": "#88ccff",
"Forth": "#341708",
"Fortran": "#4d41b1",
"Fortran Free Form": "#4d41b1",
"FreeBasic": "#867db1",
"FreeMarker": "#0050b2",
"Frege": "#00cafe",
"Futhark": "#5f021f",
"G-code": "#D08CF2",
"Game Maker Language": "#71b417",
"GAML": "#FFC766",
"GAMS": "#f49a22",
"GAP": "#0000cc",
"GCC Machine Description": "#FFCFAB",
"GDB": null,
"GDScript": "#355570",
"GEDCOM": "#003058",
"Gemfile.lock": "#701516",
"Genie": "#fb855d",
"Genshi": "#951531",
"Gentoo Ebuild": "#9400ff",
"Gentoo Eclass": "#9400ff",
"Gerber Image": "#d20b00",
"Gherkin": "#5B2063",
"Git Attributes": "#F44D27",
"Git Config": "#F44D27",
"GLSL": "#5686a5",
"Glyph": "#c1ac7f",
"Gnuplot": "#f0a9f0",
"Go": "#00ADD8",
"Go Checksums": "#00ADD8",
"Go Module": "#00ADD8",
"Golo": "#88562A",
"Gosu": "#82937f",
"Grace": "#615f8b",
"Gradle": "#02303a",
"Grammatical Framework": "#ff0000",
"GraphQL": "#e10098",
"Graphviz (DOT)": "#2596be",
"Groovy": "#4298b8",
"Groovy Server Pages": "#4298b8",
"Hack": "#878787",
"Haml": "#ece2a9",
"Handlebars": "#f7931e",
"HAProxy": "#106da9",
"Harbour": "#0e60e3",
"Haskell": "#5e5086",
"Haxe": "#df7900",
"HCL": null,
"HiveQL": "#dce200",
"HLSL": "#aace60",
"HolyC": "#ffefaf",
"HTML": "#e34c26",
"HTML+ECR": "#2e1052",
"HTML+EEX": "#6e4a7e",
"HTML+ERB": "#701516",
"HTML+PHP": "#4f5d95",
"HTML+Razor": "#512be4",
"HTTP": "#005C9C",
"HXML": "#f68712",
"Hy": "#7790B2",
"HyPhy": null,
"IDL": "#a3522f",
"Idris": "#b30000",
"Ignore List": "#000000",
"IGOR Pro": "#0000cc",
"ImageJ Macro": "#99AAFF",
"Inform 7": null,
"INI": "#d1dbe0",
"Inno Setup": "#264b99",
"Io": "#a9188d",
"Ioke": "#078193",
"Isabelle": "#FEFE00",
"Isabelle ROOT": "#FEFE00",
"J": "#9EEDFF",
"JAR Manifest": "#b07219",
"Jasmin": "#d03600",
"Java": "#b07219",
"Java Properties": "#2A6277",
"Java Server Pages": "#2A6277",
"JavaScript": "#f1e05a",
"JavaScript+ERB": "#f1e05a",
"Jest Snapshot": "#15c213",
"JFlex": "#DBCA00",
"Jinja": "#a52a22",
"Jison": "#56b3cb",
"Jison Lex": "#56b3cb",
"Jolie": "#843179",
"jq": "#c7254e",
"JSON": "#292929",
"JSON with Comments": "#292929",
"JSON5": "#267CB9",
"JSONiq": "#40d47e",
"JSONLD": "#0c479c",
"Jsonnet": "#0064bd",
"Julia": "#a270ba",
"Jupyter Notebook": "#DA5B0B",
"Kaitai Struct": "#773b37",
"KakouneScript": "#6f8042",
"KiCad Layout": "#2f4aab",
"KiCad Legacy Layout": "#2f4aab",
"KiCad Schematic": "#2f4aab",
"Kotlin": "#A97BFF",
"KRL": "#28430A",
"LabVIEW": "#fede06",
"Lark": "#2980B9",
"Lasso": "#999999",
"Latte": "#f2a542",
"Lean": null,
"Less": "#1d365d",
"Lex": "#DBCA00",
"LFE": "#4C3023",
"LilyPond": "#9ccc7c",
"Limbo": null,
"Liquid": "#67b8de",
"Literate Agda": "#315665",
"Literate CoffeeScript": "#244776",
"Literate Haskell": "#5e5086",
"LiveScript": "#499886",
"LLVM": "#185619",
"Logos": null,
"Logtalk": "#295b9a",
"LOLCODE": "#cc9900",
"LookML": "#652B81",
"LoomScript": null,
"LSL": "#3d9970",
"Lua": "#000080",
"M": null,
"M4": null,
"M4Sugar": null,
"Macaulay2": "#d8ffff",
"Makefile": "#427819",
"Mako": "#7e858d",
"Markdown": "#083fa1",
"Marko": "#42bff2",
"Mask": "#f97732",
"Mathematica": "#dd1100",
"MATLAB": "#e16737",
"Max": "#c4a79c",
"MAXScript": "#00a6a6",
"mcfunction": "#E22837",
"Mercury": "#ff2b2b",
"Meson": "#007800",
"Metal": "#8f14e9",
"MiniD": null,
"Mirah": "#c7a938",
"mIRC Script": "#3d57c3",
"MLIR": "#5EC8DB",
"Modelica": "#de1d31",
"Modula-2": "#10253f",
"Modula-3": "#223388",
"Module Management System": null,
"Monkey": null,
"Moocode": null,
"MoonScript": "#ff4585",
"Motorola 68K Assembly": "#005daa",
"MQL4": "#62A8D6",
"MQL5": "#4A76B8",
"MTML": "#b7e1f4",
"MUF": null,
"mupad": "#244963",
"Mustache": "#724b3b",
"Myghty": null,
"nanorc": "#2d004d",
"NASL": null,
"NCL": "#28431f",
"Nearley": "#990000",
"Nemerle": "#3d3c6e",
"nesC": "#94B0C7",
"NetLinx": "#0aa0ff",
"NetLinx+ERB": "#747faa",
"NetLogo": "#ff6375",
"NewLisp": "#87AED7",
"Nextflow": "#3ac486",
"Nginx": "#009639",
"Nim": "#ffc200",
"Nit": "#009917",
"Nix": "#7e7eff",
"NPM Config": "#cb3837",
"NSIS": null,
"Nu": "#c9df40",
"NumPy": "#9C8AF9",
"Nunjucks": "#3d8137",
"NWScript": "#111522",
"Objective-C": "#438eff",
"Objective-C++": "#6866fb",
"Objective-J": "#ff0c5a",
"ObjectScript": "#424893",
"OCaml": "#3be133",
"Odin": "#60AFFE",
"Omgrofl": "#cabbff",
"ooc": "#b0b77e",
"Opa": null,
"Opal": "#f7ede0",
"Open Policy Agent": "#7d9199",
"OpenCL": "#ed2e2d",
"OpenEdge ABL": "#5ce600",
"OpenQASM": "#AA70FF",
"OpenRC runscript": null,
"OpenSCAD": "#e5cd45",
"Org": "#77aa99",
"Ox": null,
"Oxygene": "#cdd0e3",
"Oz": "#fab738",
"P4": "#7055b5",
"Pan": "#cc0000",
"Papyrus": "#6600cc",
"Parrot": "#f3ca0a",
"Parrot Assembly": null,
"Parrot Internal Representation": null,
"Pascal": "#E3F171",
"Pawn": "#dbb284",
"PEG.js": "#234d6b",
"Pep8": "#C76F5B",
"Perl": "#0298c3",
"PHP": "#4F5D95",
"PicoLisp": "#6067af",
"PigLatin": "#fcd7de",
"Pike": "#005390",
"PLpgSQL": "#336790",
"PLSQL": "#dad8d8",
"PogoScript": "#d80074",
"Pony": null,
"PostCSS": "#dc3a0c",
"PostScript": "#da291c",
"POV-Ray SDL": "#6bac65",
"PowerBuilder": "#8f0f8d",
"PowerShell": "#012456",
"Prisma": "#0c344b",
"Processing": "#0096D8",
"Prolog": "#74283c",
"Propeller Spin": "#7fa2a7",
"Pug": "#a86454",
"Puppet": "#302B6D",
"PureBasic": "#5a6986",
"PureScript": "#1D222D",
"Python": "#3572A5",
"Python console": "#3572A5",
"Python traceback": "#3572A5",
"q": "#0040cd",
"Q#": "#fed659",
"QMake": null,
"QML": "#44a51c",
"Qt Script": "#00b841",
"Quake": "#882233",
"R": "#198CE7",
"Racket": "#3c5caa",
"Ragel": "#9d5200",
"Raku": "#0000fb",
"RAML": "#77d9fb",
"Rascal": "#fffaa0",
"RDoc": "#701516",
"REALbasic": null,
"Reason": "#ff5847",
"Rebol": "#358a5b",
"Record Jar": "#0673ba",
"Red": "#f50000",
"Redcode": null,
"Regular Expression": "#009a00",
"Ren'Py": "#ff7f7f",
"RenderScript": null,
"ReScript": "#ed5051",
"reStructuredText": "#141414",
"REXX": "#d90e09",
"Ring": "#2D54CB",
"Riot": "#A71E49",
"RMarkdown": "#198ce7",
"RobotFramework": "#00c0b5",
"Roff": "#ecdebe",
"Roff Manpage": "#ecdebe",
"Rouge": "#cc0088",
"RPC": null,
"Ruby": "#701516",
"RUNOFF": "#665a4e",
"Rust": "#dea584",
"Sage": null,
"SaltStack": "#646464",
"SAS": "#B34936",
"Sass": "#a53b70",
"Scala": "#c22d40",
"Scaml": "#bd181a",
"Scheme": "#1e4aec",
"Scilab": "#ca0f21",
"SCSS": "#c6538c",
"sed": "#64b970",
"Self": "#0579aa",
"ShaderLab": "#222c37",
"Shell": "#89e051",
"ShellSession": null,
"Shen": "#120F14",
"Sieve": null,
"Singularity": "#64E6AD",
"Slash": "#007eff",
"Slice": "#003fa2",
"Slim": "#2b2b2b",
"Smali": null,
"Smalltalk": "#596706",
"Smarty": "#f0c040",
"SmPL": "#c94949",
"SMT": null,
"Solidity": "#AA6746",
"SourcePawn": "#f69e1d",
"SPARQL": "#0C4597",
"SQF": "#3F3F3F",
"SQL": "#e38c00",
"SQLPL": "#e38c00",
"Squirrel": "#800000",
"SRecode Template": "#348a34",
"Stan": "#b2011d",
"Standard ML": "#dc566d",
"Starlark": "#76d275",
"Stata": "#1a5f91",
"StringTemplate": "#3fb34f",
"Stylus": "#ff6347",
"SubRip Text": "#9e0101",
"SugarSS": "#2fcc9f",
"SuperCollider": "#46390b",
"Svelte": "#ff3e00",
"SVG": "#ff9900",
"Swift": "#F05138",
"SWIG": null,
"SystemVerilog": "#DAE1C2",
"Tcl": "#e4cc98",
"Tcsh": null,
"Terra": "#00004c",
"TeX": "#3D6117",
"Textile": "#ffe7ac",
"TextMate Properties": "#df66e4",
"Thrift": "#D12127",
"TI Program": "#A0AA87",
"TLA": "#4b0079",
"TOML": "#9c4221",
"TSQL": "#e38c00",
"TSV": "#237346",
"TSX": "#2b7489",
"Turing": "#cf142b",
"Twig": "#c1d026",
"TXL": "#0178b8",
"TypeScript": "#2b7489",
"Unified Parallel C": "#4e3617",
"Unity3D Asset": "#222c37",
"Unix Assembly": null,
"Uno": "#9933cc",
"UnrealScript": "#a54c4d",
"UrWeb": "#ccccee",
"V": "#4f87c4",
"Vala": "#fbe5cd",
"Valve Data Format": "#f26025",
"VBA": "#867db1",
"VBScript": "#15dcdc",
"VCL": "#148AA8",
"Verilog": "#b2b7f8",
"VHDL": "#adb2cb",
"Vim Help File": "#199f4b",
"Vim Script": "#199f4b",
"Vim Snippet": "#199f4b",
"Visual Basic .NET": "#945db7",
"Volt": "#1F1F1F",
"Vue": "#41b883",
"wdl": "#42f1f4",
"Web Ontology Language": "#5b70bd",
"WebAssembly": "#04133b",
"WebIDL": null,
"Wikitext": "#fc5757",
"Windows Registry Entries": "#52d5ff",
"wisp": "#7582D1",
"Wollok": "#a23738",
"World of Warcraft Addon Data": "#f7e43f",
"X10": "#4B6BEF",
"xBase": "#403a40",
"XC": "#99DA07",
"XML": "#0060ac",
"XML Property List": "#0060ac",
"Xojo": "#81bd41",
"Xonsh": "#285EEF",
"XProc": null,
"XQuery": "#5232e7",
"XS": null,
"XSLT": "#EB8CEB",
"Xtend": "#24255d",
"Yacc": "#4B6C4B",
"YAML": "#cb171e",
"YARA": "#220000",
"YASnippet": "#32AB90",
"ZAP": "#0d665e",
"Zeek": null,
"ZenScript": "#00BCD1",
"Zephir": "#118f9e",
"Zig": "#ec915c",
"ZIL": "#dc75e5",
"Zimpl": "#d67711"
}

View file

@ -9,6 +9,11 @@
"title": "sharing.facebook", "title": "sharing.facebook",
"url": "https://www.facebook.com/sharer/sharer.php?u=%s&quote=%s" "url": "https://www.facebook.com/sharer/sharer.php?u=%s&quote=%s"
}, },
"line": {
"icon": "line",
"title": "sharing.line",
"url": "https://line.me/R/share?text=%s%%20%s"
},
"linkedin": { "linkedin": {
"icon": "linkedin", "icon": "linkedin",
"title": "sharing.linkedin", "title": "sharing.linkedin",

View file

@ -1,74 +1,70 @@
const fs = require('fs'); const fs = require("fs");
const configDir = "./exampleSite/config/_default"; const configDir = "./exampleSite/config/_default";
const contentDir = "./exampleSite/content"; const contentDir = "./exampleSite/content";
const defaultLang = "en"; const defaultLang = "en";
var targetLangs = [] var targetLangs = [];
function readConfigs() { function readConfigs() {
const files = fs.readdirSync(configDir); const files = fs.readdirSync(configDir);
files.forEach(file => { files.forEach((file) => {
//console.log(file) //console.log(file)
if(file.indexOf("languages.") > -1) { if (file.indexOf("languages.") > -1) {
var lang = file.split(".")[1]; var lang = file.split(".")[1];
//console.log(lang) //console.log(lang)
if(lang != defaultLang) { if (lang != defaultLang) {
targetLangs.push(lang); targetLangs.push(lang);
} }
} }
}); });
} }
async function processFile(filePath, file) { async function processFile(filePath, file) {
if (filePath.indexOf("index.md") > -1) { if (filePath.indexOf("index.md") > -1) {
//console.log("processing", filePath)
//console.log("processing", filePath) for (var i in targetLangs) {
const targetLang = targetLangs[i];
var targetFilePath = filePath.replace(".md", "." + targetLang + ".md");
//var targetFileName = file.replace(".md", "." + targetLang + ".md");
for(var i in targetLangs) { if (fs.existsSync(targetFilePath)) {
const targetLang = targetLangs[i]; //console.log("file already exists", targetFilePath);
var targetFilePath = filePath.replace(".md", "." + targetLang + ".md");
//var targetFileName = file.replace(".md", "." + targetLang + ".md");
if(fs.existsSync(targetFilePath)) { const data = fs.readFileSync(filePath, "utf8");
//console.log("file already exists", targetFilePath); const data2 = fs.readFileSync(targetFilePath, "utf8");
if (data != data2) {
const data = fs.readFileSync(filePath, 'utf8'); //console.log("file contents are different", targetFilePath);
const data2 = fs.readFileSync(targetFilePath, 'utf8'); } else {
if(data != data2) { //console.log("file contents are the same", targetFilePath);
//console.log("file contents are different", targetFilePath); console.log(targetFilePath);
}else{ //process.exit(1);
//console.log("file contents are the same", targetFilePath);
console.log(targetFilePath);
//process.exit(1);
}
}else{
//console.log("file does not exist", targetFilePath);
}
} }
} else {
} else //console.log("file does not exist", targetFilePath);
return }
}
} else return;
} }
async function processFolder(folderPath) { async function processFolder(folderPath) {
const files = fs.readdirSync(folderPath); const files = fs.readdirSync(folderPath);
for (var i in files) { for (var i in files) {
const file = files[i]; const file = files[i];
const filePath = `${folderPath}/${file}`; const filePath = `${folderPath}/${file}`;
const isDir = fs.lstatSync(filePath).isDirectory(); const isDir = fs.lstatSync(filePath).isDirectory();
if (isDir) { if (isDir) {
await processFolder(filePath); await processFolder(filePath);
} else { } else {
await processFile(filePath, file); await processFile(filePath, file);
}
} }
}
} }
async function createLinks() { async function createLinks() {
processFolder(contentDir); processFolder(contentDir);
} }
readConfigs(); readConfigs();

View file

@ -1,5 +1,5 @@
const fs = require('fs'); const fs = require("fs/promises");
const translate = require('@iamtraction/google-translate'); const translate = require("@iamtraction/google-translate");
const defaultLang = "en"; const defaultLang = "en";
const targetLang = process.argv[2] || "en"; const targetLang = process.argv[2] || "en";
@ -8,56 +8,54 @@ const targetLangIso = targetLang == "pt" ? "pt-pt" : targetLang;
const targetFilePath = filePath.replace(".md", "." + targetLangIso + ".md"); const targetFilePath = filePath.replace(".md", "." + targetLangIso + ".md");
async function convert(text, from, to) { async function convert(text, from, to) {
var options = { const options = { from, to };
from: from, const translated_text = await translate(text, options);
to: to return translated_text.text;
};
var translated_text = await translate(text, options);
return translated_text.text;
} }
console.log(filePath); console.log(filePath);
console.log(targetFilePath); console.log(targetFilePath);
async function processFrontMatter(block) { async function processFrontMatter(block) {
var array = block.split("\n"); const array = block.split("\n");
var translatedBlock = ""; let translatedBlock = "";
for (var i = 0; i < array.length; i++) { for (const line of array) {
if (array[i].indexOf(":") > -1) { let newElement = line;
var elements = array[i].split(":"); if (line.indexOf(":") > -1) {
var newElement = ""; const elements = line.split(":");
if (elements[0] == "title" || if (
elements[0] == "description" || elements[0] == "title" ||
elements[0] == "summary" || elements[0] == "description" ||
elements[0] == "description" || elements[0] == "summary" ||
elements[0] == "categories" || elements[0] == "description" ||
elements[0] == "tags") { elements[0] == "categories" ||
var translatedElement = elements[1] ? await convert(elements[1], defaultLang, targetLang) : elements[1]; elements[0] == "tags"
newElement = elements[0] + ": " + translatedElement; ) {
} else { const translatedElement = elements[1]
newElement = array[i]; ? await convert(elements[1], defaultLang, targetLang)
} : elements[1];
} else { newElement = elements[0] + ": " + translatedElement;
newElement = array[i]; }
}
translatedBlock += newElement + "\n";
} }
return translatedBlock; translatedBlock += newElement + "\n";
}
return translatedBlock;
} }
async function main() { async function main() {
const fileContent = fs.readFileSync(filePath, 'utf8'); const fileContent = await fs.readFile(filePath, "utf8");
var array = fileContent.split("---\n") const array = fileContent.split("---\n");
var frontMatter = array[1]; const frontMatter = array[1];
var content = array[2]; const content = array[2];
var translatedFrontMatter = await processFrontMatter(frontMatter); const translatedFrontMatter = await processFrontMatter(frontMatter);
var translatedContent = await convert(content, defaultLang, targetLang); const translatedContent = await convert(content, defaultLang, targetLang);
var newFileContent = "---\n" + translatedFrontMatter + "---\n" + translatedContent; const newFileContent =
fs.writeFileSync(targetFilePath, newFileContent, 'utf8'); "---\n" + translatedFrontMatter + "---\n" + translatedContent;
await fs.writeFile(targetFilePath, newFileContent, "utf8");
} }
main(); main();

View file

@ -1,5 +1,5 @@
const fs = require('fs'); const fs = require("fs/promises");
const translate = require('@iamtraction/google-translate'); const translate = require("@iamtraction/google-translate");
const configDir = "./exampleSite/config/_default"; const configDir = "./exampleSite/config/_default";
const contentDir = "./exampleSite/content"; const contentDir = "./exampleSite/content";
@ -7,98 +7,104 @@ const defaultLang = "en";
const targetLang = process.argv[2] || "en"; const targetLang = process.argv[2] || "en";
const targetLangIso = targetLang == "pt" ? "pt-pt" : targetLang; const targetLangIso = targetLang == "pt" ? "pt-pt" : targetLang;
async function createConfigs() {
function createConfigs() { const files = await fs.readdir(configDir);
const files = fs.readdirSync(configDir); for (const file of files) {
files.forEach(file => { const filePath = `${configDir}/${file}`;
const filePath = `${configDir}/${file}`; if (
if (filePath.indexOf("languages.en.toml") > -1 || filePath.indexOf("languages.en.toml") > -1 ||
filePath.indexOf("menus.en.toml") > -1) { filePath.indexOf("menus.en.toml") > -1
var fileContent = fs.readFileSync(filePath, 'utf8'); ) {
fs.writeFileSync(filePath.replace(".en.toml", "." + targetLangIso + ".toml"), fileContent, 'utf8'); const fileContent = await fs.readFile(filePath, "utf8");
} await fs.writeFile(
}); filePath.replace(".en.toml", "." + targetLangIso + ".toml"),
fileContent,
"utf8"
);
}
}
} }
async function convert(text, from, to) { async function convert(text, from, to) {
var options = { const options = { from, to };
from: from, const translated_text = await translate(text, options).catch((err) => {
to: to console.error(err);
}; });
var translated_text = await translate(text, options) return translated_text && translated_text.text ? translated_text.text : "";
.catch(err => {
console.error(err);
});;
return translated_text && translated_text.text? translated_text.text : '';
} }
async function processFrontMatter(block) { async function processFrontMatter(block) {
var array = block.split("\n"); const array = block.split("\n");
var translatedBlock = ""; let translatedBlock = "";
for (var i = 0; i < array.length; i++) { for (const line of array) {
if (array[i].indexOf(":") > -1) { let newElement = line;
var elements = array[i].split(":"); if (line.indexOf(":") > -1) {
var newElement = ""; const elements = line.split(":");
if (elements[0] == "title" || if (
elements[0] == "description" || elements[0] == "title" ||
elements[0] == "summary" || elements[0] == "description" ||
elements[0] == "description" || elements[0] == "summary" ||
elements[0] == "categories" || elements[0] == "description" ||
elements[0] == "tags") { elements[0] == "categories" ||
var translatedElement = elements[1] ? await convert(elements[1], defaultLang, targetLang) : elements[1]; elements[0] == "tags"
newElement = elements[0] + ": " + translatedElement; ) {
} else { const translatedElement = elements[1]
newElement = array[i]; ? await convert(elements[1], defaultLang, targetLang)
} : elements[1];
} else { newElement = elements[0] + ": " + translatedElement;
newElement = array[i]; }
}
translatedBlock += newElement + "\n";
} }
return translatedBlock; translatedBlock += newElement + "\n";
}
return translatedBlock;
} }
async function processFile(filePath) { async function processFile(filePath) {
console.log("translating", filePath) console.log("translating", filePath);
if (filePath.indexOf("index.md") > -1) { if (filePath.indexOf("index.md") > -1) {
const targetFilePath = filePath.replace(
".md",
"." + targetLangIso + ".md"
);
const targetFilePath = filePath.replace(".md", "." + targetLangIso + ".md"); const fileContent = await fs.readFile(filePath, "utf8");
const fileContent = fs.readFileSync(filePath, 'utf8'); const array = fileContent.split("---\n");
const frontMatter = array[1];
const content = array[2];
var array = fileContent.split("---\n") const translatedFrontMatter = await processFrontMatter(frontMatter);
var frontMatter = array[1]; const translatedContent = await convert(content, defaultLang, targetLang);
var content = array[2];
var translatedFrontMatter = await processFrontMatter(frontMatter); const newFileContent =
var translatedContent = await convert(content, defaultLang, targetLang); "---\n" + translatedFrontMatter + "---\n" + translatedContent;
await fs.writeFile(targetFilePath, newFileContent, "utf8");
var newFileContent = "---\n" + translatedFrontMatter + "---\n" + translatedContent; } else {
fs.writeFileSync(targetFilePath, newFileContent, 'utf8'); return;
}
} else
return
} }
async function processFolder(folderPath) { async function processFolder(folderPath) {
const files = fs.readdirSync(folderPath); const files = await fs.readdir(folderPath);
for (var i in files) { for (const file of files) {
const file = files[i]; const filePath = `${folderPath}/${file}`;
const filePath = `${folderPath}/${file}`; const isDir = (await fs.lstat(filePath)).isDirectory();
const isDir = fs.lstatSync(filePath).isDirectory(); console.log(filePath, isDir);
console.log(filePath, isDir); if (isDir) {
if (isDir) { await processFolder(filePath);
await processFolder(filePath); } else {
} else { await processFile(filePath);
await processFile(filePath);
}
} }
}
} }
async function createContent() { async function createContent() {
processFolder(contentDir); await processFolder(contentDir);
} }
createConfigs(); (async () => {
createContent(); await createConfigs();
await createContent();
})();

View file

@ -1,66 +1,71 @@
const fs = require('fs'); const fs = require("fs/promises");
const configDir = "./exampleSite/config/_default"; const configDir = "./exampleSite/config/_default";
const contentDir = "./exampleSite/content"; const contentDir = "./exampleSite/content";
const defaultLang = "en"; const defaultLang = "en";
var targetLangs = [] const targetLangs = [];
function readConfigs() { async function readConfigs() {
const files = fs.readdirSync(configDir); const files = await fs.readdir(configDir);
files.forEach(file => { for (const file of files) {
console.log(file) console.log(file);
if(file.indexOf("languages.") > -1) { if (file.indexOf("languages.") > -1) {
var lang = file.split(".")[1]; const lang = file.split(".")[1];
console.log(lang) console.log(lang);
if(lang != defaultLang) { if (lang != defaultLang) {
targetLangs.push(lang); targetLangs.push(lang);
} }
} }
}); }
} }
async function processFile(filePath, file) { async function processFile(filePath, file) {
if (filePath.indexOf("index.md") > -1) { if (filePath.indexOf("index.md") > -1) {
console.log("processing", filePath);
console.log("processing", filePath) for (const targetLang of targetLangs) {
const targetFilePath = filePath.replace(".md", "." + targetLang + ".md");
for(var i in targetLangs) { let exists = true;
const targetLang = targetLangs[i]; try {
var targetFilePath = filePath.replace(".md", "." + targetLang + ".md"); await fs.access(targetFilePath);
//var targetFileName = file.replace(".md", "." + targetLang + ".md"); } catch {
exists = false;
}
if(fs.existsSync(targetFilePath)) { if (exists) {
console.log("file already exists", targetFilePath); console.log("file already exists", targetFilePath);
}else{ } else {
console.log("creating file", targetFilePath); console.log("creating file", targetFilePath);
//fs.symlinkSync(file, targetFilePath, 'junction'); await fs.copyFile(filePath, targetFilePath);
fs.copyFileSync(filePath, targetFilePath); }
} }
} } else {
return;
} else }
return
} }
async function processFolder(folderPath) { async function processFolder(folderPath) {
const files = fs.readdirSync(folderPath); const files = await fs.readdir(folderPath);
for (var i in files) { for (const file of files) {
const file = files[i]; const filePath = `${folderPath}/${file}`;
const filePath = `${folderPath}/${file}`; const isDir = (await fs.lstat(filePath)).isDirectory();
const isDir = fs.lstatSync(filePath).isDirectory(); if (isDir) {
if (isDir) { await processFolder(filePath);
await processFolder(filePath); } else {
} else { await processFile(filePath, file);
await processFile(filePath, file);
}
} }
}
} }
async function createLinks() { async function createLinks() {
processFolder(contentDir); await processFolder(contentDir);
} }
readConfigs(); (async () => {
createLinks(); await readConfigs();
await createLinks();
})();

View file

@ -58,6 +58,7 @@ search:
sharing: sharing:
email: "إرسال عبر البريد الإلكترونى" email: "إرسال عبر البريد الإلكترونى"
facebook: "النشر على فيسبوك" facebook: "النشر على فيسبوك"
line: "شارك على لاين"
linkedin: "النشر على لينكدان" linkedin: "النشر على لينكدان"
pinterest: "النشر على بينترست" pinterest: "النشر على بينترست"
reddit: "النشر على ريديت" reddit: "النشر على ريديت"

View file

@ -26,7 +26,6 @@ article:
this_article: "Тази Статия" this_article: "Тази Статия"
related_articles: "Подобни" related_articles: "Подобни"
author: author:
byline_title: "Автор" byline_title: "Автор"
@ -60,6 +59,7 @@ search:
sharing: sharing:
email: "Изпрати чрез имейл" email: "Изпрати чрез имейл"
facebook: "Сподели на Facebook" facebook: "Сподели на Facebook"
line: "Споделяне в LINE"
linkedin: "Сподели на LinkedIn" linkedin: "Сподели на LinkedIn"
pinterest: "Закачи в Pinterest" pinterest: "Закачи в Pinterest"
reddit: "Добави на Reddit" reddit: "Добави на Reddit"

View file

@ -59,6 +59,7 @@ search:
sharing: sharing:
email: "ইমেল করুন" email: "ইমেল করুন"
facebook: "ফেসবুকে শেয়ার করুন" facebook: "ফেসবুকে শেয়ার করুন"
line: "লাইনে শেয়ার করুন"
linkedin: "লিংকডইনে শেয়ার করুন" linkedin: "লিংকডইনে শেয়ার করুন"
pinterest: "পিন্টারেস্টে পিন করুন" pinterest: "পিন্টারেস্টে পিন করুন"
reddit: "রেড্ডিটে জমা দিন" reddit: "রেড্ডিটে জমা দিন"

View file

@ -62,6 +62,7 @@ search:
sharing: sharing:
email: "Enviar per correu electrònic" email: "Enviar per correu electrònic"
facebook: "Compartir amb Facebook" facebook: "Compartir amb Facebook"
line: "Compartir amb LINE"
linkedin: "Compartir amb LinkedIn" linkedin: "Compartir amb LinkedIn"
pinterest: "Compartir amb Pinterest" pinterest: "Compartir amb Pinterest"
reddit: "Publicar a Reddit" reddit: "Publicar a Reddit"

View file

@ -59,6 +59,7 @@ search:
sharing: sharing:
email: "Poslat emailem" email: "Poslat emailem"
facebook: "Sdílet na Facebook" facebook: "Sdílet na Facebook"
line: "Sdílejte na LINE"
linkedin: "Sdílet na LinkedIn" linkedin: "Sdílet na LinkedIn"
pinterest: "Připnout na Pinterest" pinterest: "Připnout na Pinterest"
reddit: "Přidat na Reddit" reddit: "Přidat na Reddit"

View file

@ -13,8 +13,8 @@ article:
reading_time_title: "Lesezeit" reading_time_title: "Lesezeit"
table_of_contents: "Inhaltsverzeichnis" table_of_contents: "Inhaltsverzeichnis"
word_count: word_count:
one: "{{ .Count }} Wort" one: "{{ .Count }} Wort"
other: "{{ .Count }} Wörter" other: "{{ .Count }} Wörter"
part_of_series: "Dieser Artikel ist Teil einer Serie." part_of_series: "Dieser Artikel ist Teil einer Serie."
part: "Teil" part: "Teil"
this_article: "Dieser Artikel" this_article: "Dieser Artikel"
@ -42,17 +42,18 @@ list:
no_articles: "Es gibt hier noch keine Beiträge." no_articles: "Es gibt hier noch keine Beiträge."
nav: nav:
scroll_to_top_title: "Zum Anfang scrollen" scroll_to_top_title: "Zum Anfang scrollen"
skip_to_main: "Zum Hauptinhalt springen" skip_to_main: "Zum Hauptinhalt springen"
search: search:
open_button_title: "Suche (/)" open_button_title: "Suche (/)"
close_button_title: "Schließen (Esc)" close_button_title: "Schließen (Esc)"
input_placeholder: "Suchen" input_placeholder: "Suchen"
sharing: sharing:
email: "Per E-Mail teilen" email: "Per E-Mail teilen"
facebook: "Auf Facebook teilen" facebook: "Auf Facebook teilen"
line: "Auf LINE teilen"
linkedin: "Auf LinkedIn teilen" linkedin: "Auf LinkedIn teilen"
pinterest: "Auf Pinterest pinnen" pinterest: "Auf Pinterest pinnen"
reddit: "An Reddit senden" reddit: "An Reddit senden"
@ -61,6 +62,5 @@ sharing:
shortcode: shortcode:
recent_articles: "Neue Beiträge" recent_articles: "Neue Beiträge"
recent: recent:
show_more: "Zeige Mehr" show_more: "Zeige Mehr"

View file

@ -62,6 +62,7 @@ search:
sharing: sharing:
email: "Send via email" email: "Send via email"
facebook: "Share on Facebook" facebook: "Share on Facebook"
line: "Share on LINE"
linkedin: "Share on LinkedIn" linkedin: "Share on LinkedIn"
pinterest: "Pin on Pinterest" pinterest: "Pin on Pinterest"
reddit: "Submit to Reddit" reddit: "Submit to Reddit"

View file

@ -62,6 +62,7 @@ search:
sharing: sharing:
email: "Sendi per retpoŝto" email: "Sendi per retpoŝto"
facebook: "Konigi en Facebook" facebook: "Konigi en Facebook"
line: "Konigi en LINE"
linkedin: "Konigi en LinkedIn" linkedin: "Konigi en LinkedIn"
pinterest: "Alpingli sur Pinterest" pinterest: "Alpingli sur Pinterest"
reddit: "Sendi al Reddit" reddit: "Sendi al Reddit"

View file

@ -62,6 +62,7 @@ search:
sharing: sharing:
email: "Enviar vía email" email: "Enviar vía email"
facebook: "Compartir en Facebook" facebook: "Compartir en Facebook"
line: "Compartir en LINE"
linkedin: "Compartir en LinkedIn" linkedin: "Compartir en LinkedIn"
pinterest: "Pinear en Pinterest" pinterest: "Pinear en Pinterest"
reddit: "Publicar en Reddit" reddit: "Publicar en Reddit"

View file

@ -62,6 +62,7 @@ search:
sharing: sharing:
email: "ارسال ایمیل" email: "ارسال ایمیل"
facebook: "اشتراک گذاری در فیسبوک" facebook: "اشتراک گذاری در فیسبوک"
line: "اشتراک گذاری در لاین"
linkedin: "اشتراک گذاری در لینکداین" linkedin: "اشتراک گذاری در لینکداین"
pinterest: "اشتراک گذاری در پینترست" pinterest: "اشتراک گذاری در پینترست"
reddit: "اشتراک گذاری در ردیت" reddit: "اشتراک گذاری در ردیت"

View file

@ -53,6 +53,7 @@ search:
sharing: sharing:
email: "Lähetä sähköpostilla" email: "Lähetä sähköpostilla"
facebook: "Jaa Facebookissa" facebook: "Jaa Facebookissa"
line: "Jaa LINEssä"
linkedin: "Jaa LinkedInissä" linkedin: "Jaa LinkedInissä"
pinterest: "Kiinnitä Pinterestiin" pinterest: "Kiinnitä Pinterestiin"
reddit: "Lähetä Reddittiin" reddit: "Lähetä Reddittiin"

View file

@ -56,6 +56,7 @@ search:
sharing: sharing:
email: "Envoyer par email" email: "Envoyer par email"
facebook: "Poster sur Facebook" facebook: "Poster sur Facebook"
line: "Partager sur LINE"
linkedin: "Poster sur LinkedIn" linkedin: "Poster sur LinkedIn"
pinterest: "Poster sur Pinterest" pinterest: "Poster sur Pinterest"
reddit: "Poster sur Reddit" reddit: "Poster sur Reddit"

View file

@ -38,11 +38,11 @@ code:
error: error:
404_title: "Páxina non atopada :confused:" 404_title: "Páxina non atopada :confused:"
404_error: "Error 404" 404_error: "Erro 404"
404_description: "Parece que a páxina que solicitaches non existe." 404_description: "Parece que a páxina que solicitaches non existe."
footer: footer:
dark_appearance: "Cambiar a modo oscuro" dark_appearance: "Cambiar a modo escuro"
light_appearance: "Cambiar a modo claro" light_appearance: "Cambiar a modo claro"
powered_by: "Desenvolvida con {{ .Hugo }} &amp; {{ .Theme }}" powered_by: "Desenvolvida con {{ .Hugo }} &amp; {{ .Theme }}"
@ -62,10 +62,14 @@ search:
sharing: sharing:
email: "Enviar vía email" email: "Enviar vía email"
facebook: "Compartir en Facebook" facebook: "Compartir en Facebook"
line: "Compartir en LINE"
linkedin: "Compartir en LinkedIn" linkedin: "Compartir en LinkedIn"
pinterest: "Pinear en Pinterest" pinterest: "Pinear en Pinterest"
reddit: "Publicar en Reddit" reddit: "Publicar en Reddit"
twitter: "Tuitear en Twitter" twitter: "Tuitear en Twitter"
bluesky: "Publicar en Bluesky"
whatsapp: "Compartir vía WhatsApp"
telegram: "Compartir vía Telegram"
shortcode: shortcode:
recent_articles: "Recente" recent_articles: "Recente"

View file

@ -53,6 +53,7 @@ search:
sharing: sharing:
email: "שליחת אימייל" email: "שליחת אימייל"
facebook: "שיתוף בפייסבוק" facebook: "שיתוף בפייסבוק"
line: "שיתוף בליין"
linkedin: "שיתוף בלינקדאין" linkedin: "שיתוף בלינקדאין"
pinterest: "שיתוף בפינטרסט" pinterest: "שיתוף בפינטרסט"
reddit: "שליחה לרדיט" reddit: "שליחה לרדיט"

View file

@ -59,6 +59,7 @@ search:
sharing: sharing:
email: "Pošalji putem e-pošte" email: "Pošalji putem e-pošte"
facebook: "Podijeli na Facebook" facebook: "Podijeli na Facebook"
line: "Podijeli na LINE"
linkedin: "Podijeli na LinkedIn" linkedin: "Podijeli na LinkedIn"
pinterest: "Podijeli na Pinterest" pinterest: "Podijeli na Pinterest"
reddit: "Objavi na Reddit" reddit: "Objavi na Reddit"

View file

@ -53,6 +53,7 @@ search:
sharing: sharing:
email: "Küldés emailben" email: "Küldés emailben"
facebook: "Megosztás a Facebookon" facebook: "Megosztás a Facebookon"
line: "Megosztás a LINE-on"
linkedin: "Megosztás a LinkedInen" linkedin: "Megosztás a LinkedInen"
pinterest: "Megosztás a Pinteresten" pinterest: "Megosztás a Pinteresten"
reddit: "Megosztás a Redditen" reddit: "Megosztás a Redditen"

View file

@ -59,6 +59,7 @@ search:
sharing: sharing:
email: "Kirim lewat surel" email: "Kirim lewat surel"
facebook: "Bagikan ke Facebook" facebook: "Bagikan ke Facebook"
line: "Bagikan ke LINE"
linkedin: "Bagikan ke LinkedIn" linkedin: "Bagikan ke LinkedIn"
pinterest: "Pin di Pinterest" pinterest: "Pin di Pinterest"
reddit: "Kirim ke Reddit" reddit: "Kirim ke Reddit"

View file

@ -53,6 +53,7 @@ search:
sharing: sharing:
email: "Invia tramite email" email: "Invia tramite email"
facebook: "Condividi su Facebook" facebook: "Condividi su Facebook"
line: "Condividi su LINE"
linkedin: "Condividi su LinkedIn" linkedin: "Condividi su LinkedIn"
pinterest: "Pinna su Pinterest" pinterest: "Pinna su Pinterest"
reddit: "Invia a Reddit" reddit: "Invia a Reddit"

View file

@ -38,13 +38,13 @@ code:
error: error:
404_title: "ページが見つかりませんでした。 :confused:" 404_title: "ページが見つかりませんでした。 :confused:"
404_error: "Error 404" 404_error: "404エラー"
404_description: "ご要望のページは存在しないようです。" 404_description: "ご要望のページは存在しないようです。"
footer: footer:
dark_appearance: "ダークモードへ切り替え" dark_appearance: "ダークモードへ切り替え"
light_appearance: "ライトモードへ切り替え" light_appearance: "ライトモードへ切り替え"
powered_by: "Powered by {{ .Hugo }} &amp; {{ .Theme }}" powered_by: "{{ .Hugo }} &amp; {{ .Theme }} で構築されています"
list: list:
externalurl_title: "外部サイトへリンク" externalurl_title: "外部サイトへリンク"
@ -62,6 +62,7 @@ search:
sharing: sharing:
email: " Eメールを送る" email: " Eメールを送る"
facebook: "Facebookでシェアする" facebook: "Facebookでシェアする"
line: "LINEでシェアする"
linkedin: "LinkedInでシェアする" linkedin: "LinkedInでシェアする"
pinterest: "Pinterestでピンする" pinterest: "Pinterestでピンする"
reddit: "Redditに投稿する" reddit: "Redditに投稿する"

View file

@ -59,6 +59,7 @@ search:
sharing: sharing:
email: "이메일로 전송" email: "이메일로 전송"
facebook: "Facebook에서 공유" facebook: "Facebook에서 공유"
line: "LINE에 공유하기"
linkedin: "LinkedIn에서 공유" linkedin: "LinkedIn에서 공유"
pinterest: "Pinterest에 고정" pinterest: "Pinterest에 고정"
reddit: "Reddit에 게시" reddit: "Reddit에 게시"

View file

@ -62,6 +62,7 @@ search:
sharing: sharing:
email: "Delen via email" email: "Delen via email"
facebook: "Delen op Facebook" facebook: "Delen op Facebook"
line: "Delen op LINE"
linkedin: "Delen op LinkedIn" linkedin: "Delen op LinkedIn"
pinterest: "Delen op Pinterest" pinterest: "Delen op Pinterest"
reddit: "Indienen op Reddit" reddit: "Indienen op Reddit"

View file

@ -36,7 +36,8 @@ code:
error: error:
404_title: "Strona nie znaleziona :confused:" 404_title: "Strona nie znaleziona :confused:"
404_error: "Błąd 404" 404_error: "Błąd 404"
404_description: "Wydaje się, że strona, którą chcesz wyświetlić, nie istnieje." 404_description:
"Wydaje się, że strona, którą chcesz wyświetlić, nie istnieje."
footer: footer:
dark_appearance: "Zmień na tryb ciemny" dark_appearance: "Zmień na tryb ciemny"
@ -59,6 +60,7 @@ search:
sharing: sharing:
email: "Wyślij jako email" email: "Wyślij jako email"
facebook: "Udostępnij na Facebooku" facebook: "Udostępnij na Facebooku"
line: "Udostępnij na LINE"
linkedin: "Udostępnij na LinkedInie" linkedin: "Udostępnij na LinkedInie"
pinterest: "Przypnij na Pinterest" pinterest: "Przypnij na Pinterest"
reddit: "Prześlij na Reddita" reddit: "Prześlij na Reddita"

View file

@ -31,7 +31,7 @@ code:
copied: "Copiado" copied: "Copiado"
error: error:
404_title: "Página não econtrada :confused:" 404_title: "Página não encontrada :confused:"
404_error: "Erro 404" 404_error: "Erro 404"
404_description: "Aparentemente a página requisitada não existe." 404_description: "Aparentemente a página requisitada não existe."
@ -56,6 +56,7 @@ search:
sharing: sharing:
email: "Enviar por email" email: "Enviar por email"
facebook: "Compartilhar pelo Facebook" facebook: "Compartilhar pelo Facebook"
line: "Compartilhar pelo LINE"
linkedin: "Compartilhar pelo LinkedIn" linkedin: "Compartilhar pelo LinkedIn"
pinterest: "Pin no Pinterest" pinterest: "Pin no Pinterest"
reddit: "Postar no Reddit" reddit: "Postar no Reddit"

View file

@ -31,7 +31,7 @@ code:
copied: "Copiado" copied: "Copiado"
error: error:
404_title: "Página não econtrada :confused:" 404_title: "Página não encontrada :confused:"
404_error: "Erro 404" 404_error: "Erro 404"
404_description: "Aparentemente a página pretendida não existe." 404_description: "Aparentemente a página pretendida não existe."
@ -56,6 +56,7 @@ search:
sharing: sharing:
email: "Partilhar por email" email: "Partilhar por email"
facebook: "Partilhar pelo Facebook" facebook: "Partilhar pelo Facebook"
line: "Partilhar pelo LINE"
linkedin: "Partilhar pelo LinkedIn" linkedin: "Partilhar pelo LinkedIn"
pinterest: "Partilhar no Pinterest" pinterest: "Partilhar no Pinterest"
reddit: "Partilhar no Reddit" reddit: "Partilhar no Reddit"

View file

@ -53,6 +53,7 @@ search:
sharing: sharing:
email: "Trimite pe email" email: "Trimite pe email"
facebook: "Postează pe Facebook" facebook: "Postează pe Facebook"
line: "Postează LINE"
linkedin: "Postează LinkedIn" linkedin: "Postează LinkedIn"
pinterest: "Pune pe Pinterest" pinterest: "Pune pe Pinterest"
reddit: "Postează pe Reddit" reddit: "Postează pe Reddit"

View file

@ -59,6 +59,7 @@ search:
sharing: sharing:
email: "Отправить по электронной почте" email: "Отправить по электронной почте"
facebook: "Поделиться через Facebook" facebook: "Поделиться через Facebook"
line: "Поделиться через LINE"
linkedin: "Поделиться через LinkedIn" linkedin: "Поделиться через LinkedIn"
pinterest: "Добавить в Pinterest" pinterest: "Добавить в Pinterest"
reddit: "Отправить в Reddit" reddit: "Отправить в Reddit"

View file

@ -0,0 +1,77 @@
global:
language: "TH"
article:
anchor_label: "จุดยึด"
date: "{{ .Date }}"
date_updated: "อัปเดต: {{ .Date }}"
draft: "ฉบับร่าง"
edit_title: "แก้ไขเนื้อหา"
reading_time:
one: "{{ .Count }} นาที"
other: "{{ .Count }} นาที"
reading_time_title: "ใช้เวลาอ่าน"
table_of_contents: "หัวข้อเนื้อหา"
word_count:
one: "{{ .Count }} คำ"
other: "{{ .Count }} คำ"
views:
one: "{{ .Count }} ครั้ง"
other: "{{ .Count }} ครั้ง"
likes:
one: "{{ .Count }} ไลค์"
other: "{{ .Count }} ไลค์"
part_of_series: "บทความในชุดเดียวกัน"
part: "ตอนที่"
this_article: "บทความนี้"
related_articles: "บทความที่เกี่ยวข้อง"
zen_mode_title:
enable: "เปิดโหมดเซน"
disable: "ปิดโหมดเซน"
author:
byline_title: "ผู้เขียน"
code:
copy: "คัดลอก"
copied: "คัดลอกแล้ว"
error:
404_title: "ไม่พบหน้าที่ต้องการ :confused:"
404_error: "ข้อผิดพลาด 404"
404_description: "ดูเหมือนว่าหน้าที่คุณต้องการจะไม่มีอยู่"
footer:
dark_appearance: "เปลี่ยนเป็นธีมมืด"
light_appearance: "เปลี่ยนเป็นธีมสว่าง"
powered_by: "สร้างด้วย {{ .Hugo }} &amp; {{ .Theme }}"
list:
externalurl_title: "ลิงก์ไปยังเว็บไซต์ภายนอก"
no_articles: "ยังไม่มีบทความให้แสดงในส่วนนี้"
nav:
scroll_to_top_title: "เลื่อนขึ้นด้านบน"
skip_to_main: "ข้ามไปยังเนื้อหาหลัก"
search:
open_button_title: "ค้นหา (/)"
close_button_title: "ปิด (Esc)"
input_placeholder: "ค้นหา"
sharing:
email: "ส่งทางอีเมล"
facebook: "แชร์บน Facebook"
linkedin: "แชร์บน LinkedIn"
pinterest: "ปักหมุดบน Pinterest"
reddit: "โพสต์บน Reddit"
twitter: "ทวีตบน Twitter"
bluesky: "โพสต์บน Bluesky"
whatsapp: "แชร์ทาง WhatsApp"
telegram: "แชร์ทาง Telegram"
shortcode:
recent_articles: "บทความล่าสุด"
recent:
show_more: "แสดงเพิ่มเติม"

View file

@ -52,6 +52,7 @@ search:
sharing: sharing:
email: "Email ile gönder" email: "Email ile gönder"
facebook: "Facebook'ta paylaş" facebook: "Facebook'ta paylaş"
line: "LINE'da paylaş"
linkedin: "LinkedIn'te paylaş" linkedin: "LinkedIn'te paylaş"
pinterest: "Pinterest'te pinle" pinterest: "Pinterest'te pinle"
reddit: "Reddit'te gönder" reddit: "Reddit'te gönder"

View file

@ -66,6 +66,7 @@ search:
sharing: sharing:
email: "Надіслати електронною поштою" email: "Надіслати електронною поштою"
facebook: "Поширити на Facebook" facebook: "Поширити на Facebook"
line: "Поширити на LINE"
linkedin: "Поширити на LinkedIn" linkedin: "Поширити на LinkedIn"
pinterest: "Зберегти на Pinterest" pinterest: "Зберегти на Pinterest"
reddit: "Опублікувати на Reddit" reddit: "Опублікувати на Reddit"

View file

@ -62,6 +62,7 @@ search:
sharing: sharing:
email: "Gửi qua email" email: "Gửi qua email"
facebook: "Chia sẻ lên Facebook" facebook: "Chia sẻ lên Facebook"
line: "Chia sẻ lên LINE"
linkedin: "Chia sẻ lên LinkedIn" linkedin: "Chia sẻ lên LinkedIn"
pinterest: "Ghim lên Pinterest" pinterest: "Ghim lên Pinterest"
reddit: "Gửi lên Reddit" reddit: "Gửi lên Reddit"

View file

@ -52,6 +52,7 @@ search:
sharing: sharing:
email: "通过电子邮件发送" email: "通过电子邮件发送"
facebook: "分享到 Facebook" facebook: "分享到 Facebook"
line: "分享到 LINE"
linkedin: "分享到 LinkedIn" linkedin: "分享到 LinkedIn"
pinterest: "钉到 Pinterest" pinterest: "钉到 Pinterest"
reddit: "提交到 Reddit" reddit: "提交到 Reddit"

View file

@ -52,6 +52,7 @@ search:
sharing: sharing:
email: "以電子郵件發送" email: "以電子郵件發送"
facebook: "分享到 Facebook" facebook: "分享到 Facebook"
line: "分享到 LINE"
linkedin: "分享到 LinkedIn" linkedin: "分享到 LinkedIn"
pinterest: "釘到 Pinterest" pinterest: "釘到 Pinterest"
reddit: "發送到 Reddit" reddit: "發送到 Reddit"

View file

@ -1,12 +1,10 @@
{{ $strAnchor := urlize .Anchor }} {{ $anchor := anchorize .Anchor }}
{{ $replacedAnchor := replaceRE "%25" "" $strAnchor }}
<h{{ .Level }} class="relative group">{{ .Text | safeHTML }} <h{{ .Level }} class="relative group">{{ .Text | safeHTML }}
<div id="{{ .Anchor | safeURL | urlize }}" class="anchor"></div> <div id="{{ $anchor }}" class="anchor"></div>
{{ if.Page.Params.showHeadingAnchors | default (.Page.Site.Params.article.showHeadingAnchors | default true) }} {{ if .Page.Params.showHeadingAnchors | default (.Page.Site.Params.article.showHeadingAnchors | default true) }}
<span <span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100"> class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
<a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" <a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#{{ $anchor }}" aria-label="{{ i18n "article.anchor_label" }}">#</a>
style="text-decoration-line: none !important;" href="#{{ $replacedAnchor | safeURL }}" aria-label="{{ i18n "article.anchor_label" }}">#</a>
</span> </span>
{{ end }} {{ end }}
</h{{ .Level }}> </h{{ .Level }}>

View file

@ -1,48 +1,55 @@
{{- $disableImageOptimization := .Page.Site.Params.disableImageOptimization | default false }} {{ define "RenderImageSimple" -}}
<img class="my-0 rounded-md" loading="lazy" alt="{{ .alt }}" src="{{ .src }}">
{{- end }}
{{ define "RenderImageResponsive" -}}
<img
class="my-0 rounded-md"
loading="lazy"
decoding="async"
fetchpriority="low"
alt="{{ .alt }}"
srcset="
{{ (.resource.Resize "330x").RelPermalink }} 330w,
{{ (.resource.Resize "660x").RelPermalink }} 660w,
{{ (.resource.Resize "1280x").RelPermalink }} 1280w
"
data-zoom-src="{{ .resource.RelPermalink }}"
src="{{ .resource.RelPermalink }}">
{{- end }}
{{ define "RenderImageCaption" -}}
{{- with .caption }}
<figcaption>{{ . | markdownify }}</figcaption>
{{- end }}
{{- end }}
{{- $disableImageOptimizationMD := .Page.Site.Params.disableImageOptimizationMD | default false }}
{{- $url := urls.Parse .Destination }} {{- $url := urls.Parse .Destination }}
{{- $altText := .Text }} {{- $altText := .Text }}
{{- $caption := .Title }} {{- $caption := .Title }}
{{- if findRE "^https?" $url.Scheme }} {{- $isRemote := findRE "^https?" $url.Scheme }}
<figure> {{- $resource := "" }}
<img class="my-0 rounded-md" loading="lazy" src="{{ $url.String }}" alt="{{ $altText }}" />
{{ with $caption }}<figcaption>{{ . | markdownify }}</figcaption>{{ end }} {{- if not $isRemote }}
</figure> {{- $resource = or ($.Page.Resources.GetMatch $url.String) (resources.Get $url.String) }}
{{- else }}
{{- $resource := "" }}
{{- if $.Page.Resources.GetMatch ($url.String) }}
{{- $resource = $.Page.Resources.GetMatch ($url.String) }}
{{- else if resources.GetMatch ($url.String) }}
{{- $resource = resources.Get ($url.String) }}
{{- end }}
{{- with $resource }}
<figure>
{{- if or $disableImageOptimization (eq .MediaType.SubType "svg")}}
<img
class="my-0 rounded-md"
loading="lazy"
src="{{ .RelPermalink }}"
alt="{{ $altText }}"
/>
{{- else }}
<img
class="my-0 rounded-md"
loading="lazy"
srcset="
{{ (.Resize "330x").RelPermalink }} 330w,
{{ (.Resize "660x").RelPermalink }} 660w,
{{ (.Resize "1024x").RelPermalink }} 1024w,
{{ (.Resize "1320x").RelPermalink }} 2x"
data-zoom-src="{{ (.Resize "1320x").RelPermalink }}"
src="{{ (.Resize "660x").RelPermalink }}"
alt="{{ $altText }}"
/>
{{- end }}
{{ with $caption }}<figcaption>{{ . | markdownify }}</figcaption>{{ end }}
</figure>
{{- else }}
<figure>
<img class="my-0 rounded-md" loading="lazy" src="{{ $url.String }}" alt="{{ $altText }}" />
{{ with $caption }}<figcaption>{{ . | markdownify }}</figcaption>{{ end }}
</figure>
{{- end }}
{{- end }} {{- end }}
<figure>
{{- if $isRemote }}
{{ template "RenderImageSimple" (dict "src" $url.String "alt" $altText) }}
{{- else if $resource }}
{{- $isSVG := eq $resource.MediaType.SubType "svg" }}
{{- $shouldOptimize := and (not $disableImageOptimizationMD) (not $isSVG) }}
{{- if $shouldOptimize }}
{{ template "RenderImageResponsive" (dict "resource" $resource "alt" $altText) }}
{{- else }}
{{ template "RenderImageSimple" (dict "src" $resource.RelPermalink "alt" $altText) }}
{{- end }}
{{- else }}
{{ template "RenderImageSimple" (dict "src" $url.String "alt" $altText) }}
{{- end }}
{{ template "RenderImageCaption" (dict "caption" $caption) }}
</figure>

View file

@ -1,7 +1,11 @@
<a href="{{ .Destination | safeURL }}" <a
{{- with .Title -}} href="{{ .Destination | safeURL }}"
{{- with .Title -}}
title="{{ . }}" title="{{ . }}"
{{- end }} {{- end }}
{{- if or (strings.HasPrefix .Destination "http:") (strings.HasPrefix .Destination "https:") }} target="_blank"{{ end }}> {{- if or (strings.HasPrefix .Destination "http:") (strings.HasPrefix .Destination "https:") }}
{{- .Text | safeHTML -}} target="_blank"
{{ end }}>
{{- .Text | safeHTML -}}
</a> </a>
{{- /* Trim EOF */ -}}

View file

@ -1,42 +1,58 @@
<!DOCTYPE html> <!doctype html>
<html lang="{{ with .Site.Params.isoCode | default (.Site.LanguageCode | default " en") }} {{- . -}} {{ end }}" dir="{{ if .Site.Params.rtl | default false -}} <html
lang="{{ with .Site.Params.isoCode | default (.Site.LanguageCode | default " en") }}{{- . -}}{{ end }}"
dir="{{ if .Site.Params.rtl | default false -}}
rtl rtl
{{- else -}} {{- else -}}
ltr ltr
{{- end }}" class="scroll-smooth" data-default-appearance="{{ .Site.Params.defaultAppearance | default " light" }}" {{- end }}"
class="scroll-smooth"
data-default-appearance="{{ .Site.Params.defaultAppearance | default " light" }}"
data-auto-appearance="{{ .Site.Params.autoSwitchAppearance | default " true" }}"> data-auto-appearance="{{ .Site.Params.autoSwitchAppearance | default " true" }}">
{{- partial "head.html" . -}} {{- partial "head.html" . -}}
<body
class="flex flex-col h-screen px-6 m-auto text-lg leading-7 max-w-7xl bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral sm:px-14 md:px-24 lg:px-32 scrollbar-thin scrollbar-track-neutral-200 scrollbar-thumb-neutral-400 dark:scrollbar-track-neutral-800 dark:scrollbar-thumb-neutral-600"> <body
<div id="the-top" class="absolute flex self-center"> class="flex flex-col h-screen px-6 m-auto text-lg leading-7 max-w-7xl bg-neutral text-neutral-900 dark:bg-neutral-800 dark:text-neutral sm:px-14 md:px-24 lg:px-32 scrollbar-thin scrollbar-track-neutral-200 scrollbar-thumb-neutral-400 dark:scrollbar-track-neutral-800 dark:scrollbar-thumb-neutral-600">
<a class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600" <div id="the-top" class="absolute flex self-center">
href="#main-content"><span <a
class="font-bold text-primary-600 ltr:pr-2 rtl:pl-2 dark:text-primary-400">&darr;</span>{{ i18n class="px-3 py-1 text-sm -translate-y-8 rounded-b-lg bg-primary-200 focus:translate-y-0 dark:bg-neutral-600"
"nav.skip_to_main" }}</a> href="#main-content"
</div> ><span class="font-bold text-primary-600 ltr:pr-2 rtl:pl-2 dark:text-primary-400">&darr;</span>{{ i18n
{{ $header := print "header/" .Site.Params.header.layout ".html" }} "nav.skip_to_main"
{{ if templates.Exists ( printf "partials/%s" $header ) }} }}</a
{{ partial $header . }} >
{{ else }} </div>
{{ partial "header/basic.html" . }} {{ $header := print "header/" .Site.Params.header.layout ".html" }}
{{ end }} {{ if templates.Exists ( printf "partials/%s" $header ) }}
<div class="relative flex flex-col grow"> {{ partial $header . }}
<main id="main-content" class="grow"> {{ else }}
{{ block "main" . }}{{ end }} {{ partial "header/basic.html" . }}
{{ if and (.Site.Params.footer.showScrollToTop | default true) (gt .WordCount 1) }}
{{- partial "scroll-to-top.html" . -}}
{{ end }}
</main>
{{- partial "footer.html" . -}}
{{ if .Site.Params.enableSearch | default false }}
{{- partial "search.html" . -}}
{{ end }} {{ end }}
</div> <div class="relative flex flex-col grow">
</body> <main id="main-content" class="grow">
{{ if .Site.Params.buymeacoffee.globalWidget | default false }} {{ block "main" . }}{{ end }}
<script data-name="BMC-Widget" data-cfasync="false" src="https://cdnjs.buymeacoffee.com/1.0.0/widget.prod.min.js" {{ if and (.Site.Params.footer.showScrollToTop | default true) (gt .WordCount 1) }}
data-id="{{ .Site.Params.buymeacoffee.identifier }}" data-description="Support me on Buy me a coffee!" data-message="{{ .Site.Params.buymeacoffee.globalWidgetMessage | default "" }}" {{- partial "scroll-to-top.html" . -}}
data-color="{{ .Site.Params.buymeacoffee.globalWidgetColor | default "#FFDD00" }}" data-position="{{ .Site.Params.buymeacoffee.globalWidgetPosition | default "Left" }}" data-x_margin="18" data-y_margin="18"></script> {{ end }}
{{ end }} </main>
{{- partial "footer.html" . -}}
{{ if .Site.Params.enableSearch | default false }}
{{- partial "search.html" . -}}
{{ end }}
</div>
</body>
{{ if .Site.Params.buymeacoffee.globalWidget | default false }}
<script
data-name="BMC-Widget"
data-cfasync="false"
src="https://cdnjs.buymeacoffee.com/1.0.0/widget.prod.min.js"
data-id="{{ .Site.Params.buymeacoffee.identifier }}"
data-description="Support me on Buy me a coffee!"
data-message="{{ .Site.Params.buymeacoffee.globalWidgetMessage | default "" }}"
data-color="{{ .Site.Params.buymeacoffee.globalWidgetColor | default "#FFDD00" }}"
data-position="{{ .Site.Params.buymeacoffee.globalWidgetPosition | default "Left" }}"
data-x_margin="18"
data-y_margin="18"></script>
{{ end }}
</html> </html>

View file

@ -26,13 +26,9 @@
{{ $lang := print "." .Lang ".md" }} {{ $lang := print "." .Lang ".md" }}
{{ $path = replace $path $lang ".md" }} {{ $path = replace $path $lang ".md" }}
{{end}} {{end}}
<script>
var oid = "views_{{ $path }}"
var oid_likes = "likes_{{ $path }}"
</script>
{{ $jsPage := resources.Get "js/page.js" }} {{ $jsPage := resources.Get "js/page.js" }}
{{ $jsPage = $jsPage | resources.Minify | resources.Fingerprint "sha512" }} {{ $jsPage = $jsPage | resources.Minify | resources.Fingerprint ($.Site.Params.fingerprintAlgorithm | default "sha512") }}
<script type="text/javascript" src="{{ $jsPage.RelPermalink }}" integrity="{{ $jsPage.Data.Integrity }}"></script> <script type="text/javascript" src="{{ $jsPage.RelPermalink }}" integrity="{{ $jsPage.Data.Integrity }}" data-oid="views_{{ $path }}" data-oid-likes="likes_{{ $path }}"></script>
{{ end }} {{ end }}
</header> </header>
<section class="{{ if $toc -}} <section class="{{ if $toc -}}
@ -91,7 +87,7 @@
{{ range (.Paginate (.Pages.GroupByDate "2006")).PageGroups }} {{ range (.Paginate (.Pages.GroupByDate "2006")).PageGroups }}
{{ if $cardViewScreenWidth }} {{ if $cardViewScreenWidth }}
<div class="relative w-screen max-w-[1600px] px-[30px]" style="left: calc(max(-50vw,-800px) + 50%);"> <div class="relative w-screen max-w-[1600px] px-[30px] left-[calc(max(-50vw,-800px)+50%)]">
{{ end }} {{ end }}
<h2 class="mt-12 mb-3 text-2xl font-bold text-neutral-700 first:mt-8 dark:text-neutral-300"> <h2 class="mt-12 mb-3 text-2xl font-bold text-neutral-700 first:mt-8 dark:text-neutral-300">
{{ .Key }} {{ .Key }}
@ -107,7 +103,7 @@
{{ else }} {{ else }}
{{ if $cardViewScreenWidth }} {{ if $cardViewScreenWidth }}
<div class="relative w-screen max-w-[1600px] px-[30px]" style="left: calc(max(-50vw,-800px) + 50%);"> <div class="relative w-screen max-w-[1600px] px-[30px] left-[calc(max(-50vw,-800px)+50%)]">
<section class="w-full grid gap-4 sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5"> <section class="w-full grid gap-4 sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5">
{{ else }} {{ else }}
<section class="w-full grid gap-4 sm:grid-cols-2 md:grid-cols-3"> <section class="w-full grid gap-4 sm:grid-cols-2 md:grid-cols-3">

View file

@ -1,102 +1,118 @@
{{ define "main" }} {{ define "main" }}
{{ .Scratch.Set "scope" "single" }} {{ .Scratch.Set "scope" "single" }}
<article>
{{ if .Params.showHero | default (.Site.Params.article.showHero | default false) }}
{{ $heroStyle := .Params.heroStyle }}
{{ if not $heroStyle }}{{ $heroStyle = .Site.Params.article.heroStyle }}{{ end }}
{{ $heroStyle := print "hero/" $heroStyle ".html" }}
{{ if templates.Exists ( printf "partials/%s" $heroStyle ) }}
{{ partial $heroStyle . }}
{{ else }}
{{ partial "hero/basic.html" . }}
{{ end }}
{{ end }}
<header id="single_header" class="mt-5 max-w-prose"> <article>
{{ if .Params.showBreadcrumbs | default (.Site.Params.article.showBreadcrumbs | default false) }} {{ if .Params.showHero | default (.Site.Params.article.showHero | default false) }}
{{ partial "breadcrumbs.html" . }} {{ $heroStyle := .Params.heroStyle }}
{{ end }} {{ if not $heroStyle }}{{ $heroStyle = .Site.Params.article.heroStyle }}{{ end }}
<h1 class="mt-0 text-4xl font-extrabold text-neutral-900 dark:text-neutral"> {{ $heroStyle := print "hero/" $heroStyle ".html" }}
{{ .Title | emojify }} {{ if templates.Exists ( printf "partials/%s" $heroStyle ) }}
</h1> {{ partial $heroStyle . }}
<div class="mt-1 mb-6 text-base text-neutral-500 dark:text-neutral-400 print:hidden"> {{ else }}
{{ partial "article-meta/basic.html" (dict "context" . "scope" "single") }} {{ partial "hero/basic.html" . }}
</div> {{ end }}
{{ $authorsData := .Site.Data.authors }}
{{ $taxonomies := .Site.Taxonomies.authors }}
{{ $baseURL := .Site.BaseURL }}
{{ $taxonomyLink := 0 }}
{{ $showAuthor := 0 }}
{{ if not (strings.HasSuffix $baseURL "/") }}
{{ $baseURL = delimit (slice $baseURL "/") "" }}
{{ end }} {{ end }}
{{ if not (.Params.showAuthorBottom | default ( .Site.Params.article.showAuthorBottom | default false)) }}
{{ if .Params.showAuthor | default (.Site.Params.article.showAuthor | default true) }} <header id="single_header" class="mt-5 max-w-prose">
{{ $showAuthor = 1 }} {{ if .Params.showBreadcrumbs | default (.Site.Params.article.showBreadcrumbs | default false) }}
{{ partial "author.html" . }} {{ partial "breadcrumbs.html" . }}
{{ end }} {{ end }}
<h1 class="mt-0 text-4xl font-extrabold text-neutral-900 dark:text-neutral">
{{ range $author := .Page.Params.authors }} {{ .Title | emojify }}
{{ $authorData := index $authorsData $author }} </h1>
{{- if $authorData -}} <div class="mt-1 mb-6 text-base text-neutral-500 dark:text-neutral-400 print:hidden">
{{ range $taxonomyname, $taxonomy := $taxonomies }} {{ partial "article-meta/basic.html" (dict "context" . "scope" "single") }}
{{ if (eq $taxonomyname $author) }}
{{ $taxonomyLink = delimit (slice $baseURL "authors/" $author "/") "" }}
{{ end }}
{{ end }}
{{ $finalLink := $taxonomyLink }}
{{ $currentLang := $.Site.Language.Lang }}
{{ if eq $.Site.LanguagePrefix "" }}
{{ $finalLink = printf "%sauthors/%s/" $baseURL $author }}
{{ else }}
{{ $finalLink = printf "%s%s/authors/%s/" $baseURL $currentLang $author }}
{{ end }}
{{ partial "author-extra.html" (dict "context" . "data" $authorData "link" $finalLink) }}
{{- end -}}
{{ end }}
{{ if or $taxonomyLink $showAuthor }}
<div class="mb-5"></div>
{{ end }}
{{ end }}
</header>
<section class="flex flex-col max-w-full mt-0 prose dark:prose-invert lg:flex-row">
{{ if or (and (.Params.showTableOfContents | default (.Site.Params.article.showTableOfContents | default false)) (in
.TableOfContents "<ul")) (.Site.Params.article.showRelatedPosts | default false) }} <div
class="order-first lg:ml-auto px-0 lg:order-last ltr:lg:pl-8 rtl:lg:pr-8">
<div class="toc ltr:pl-5 rtl:pr-5 print:hidden lg:sticky {{ if hasPrefix .Site.Params.header.layout "fixed" -}}
lg:top-[140px]{{ else }}lg:top-10{{ end }}">
{{ if and (.Params.showTableOfContents | default (.Site.Params.article.showTableOfContents | default false)) (in
.TableOfContents "<ul") }} {{ partial "toc.html" . }} {{ end }} {{ if .Site.Params.article.showRelatedPosts |
default false }} sd {{ end }} </div>
</div> </div>
{{ $authorsData := .Site.Data.authors }}
{{ $taxonomies := .Site.Taxonomies.authors }}
{{ $baseURL := .Site.BaseURL }}
{{ $taxonomyLink := 0 }}
{{ $showAuthor := 0 }}
{{ if not (strings.HasSuffix $baseURL "/") }}
{{ $baseURL = delimit (slice $baseURL "/") "" }}
{{ end }} {{ end }}
{{ if not (.Params.showAuthorBottom | default ( .Site.Params.article.showAuthorBottom | default false)) }}
{{ if .Params.showAuthor | default (.Site.Params.article.showAuthor | default true) }}
{{ $showAuthor = 1 }}
{{ partial "author.html" . }}
{{ end }}
{{ range $author := .Page.Params.authors }}
{{ $authorData := index $authorsData $author }}
{{- if $authorData -}}
{{ range $taxonomyname, $taxonomy := $taxonomies }}
{{ if (eq $taxonomyname $author) }}
{{ $taxonomyLink = delimit (slice $baseURL "authors/" $author "/") "" }}
{{ end }}
{{ end }}
{{ $finalLink := $taxonomyLink }}
{{ $currentLang := $.Site.Language.Lang }}
{{ if eq $.Site.LanguagePrefix "" }}
{{ $finalLink = printf "%sauthors/%s/" $baseURL $author }}
{{ else }}
{{ $finalLink = printf "%s%s/authors/%s/" $baseURL $currentLang $author }}
{{ end }}
{{ partial "author-extra.html" (dict "context" . "data" $authorData "link" $finalLink) }}
{{- end -}}
{{ end }}
{{ if or $taxonomyLink $showAuthor }}
<div class="mb-5"></div>
{{ end }}
{{ end }}
</header>
<section class="flex flex-col max-w-full mt-0 prose dark:prose-invert lg:flex-row">
{{ if or (and (.Params.showTableOfContents | default (.Site.Params.article.showTableOfContents | default false)) (in
.TableOfContents "<ul")) (.Site.Params.article.showRelatedPosts | default false)
}}
<div class="order-first lg:ml-auto px-0 lg:order-last ltr:lg:pl-8 rtl:lg:pr-8">
<div
class="toc ltr:pl-5 rtl:pr-5 print:hidden lg:sticky {{ if hasPrefix .Site.Params.header.layout "fixed" -}}
lg:top-[140px]
{{ else }}
lg:top-10
{{ end }}
">
{{ if and (.Params.showTableOfContents | default (.Site.Params.article.showTableOfContents | default false)) (in
.TableOfContents "<ul")
}}
{{ partial "toc.html" . }}
{{ end }}
{{ if .Site.Params.article.showRelatedPosts |
default false
}}
sd
{{ end }}
</div>
</div>
{{ end }}
<div class="min-w-0 min-h-0 max-w-fit"> <div class="min-w-0 min-h-0 max-w-fit">
{{ partial "series/series.html" . }} {{ partial "series/series.html" . }}
<div class="article-content max-w-prose mb-20"> <div class="article-content max-w-prose mb-20">
{{ .Content }} {{ .Content }}
{{ $defaultReplyByEmail := .Site.Params.replyByEmail }} {{ $defaultReplyByEmail := .Site.Params.replyByEmail }}
{{ $replyByEmail := default $defaultReplyByEmail .Params.replyByEmail }} {{ $replyByEmail := default $defaultReplyByEmail .Params.replyByEmail }}
{{ if $replyByEmail }} {{ if $replyByEmail }}
<strong class="block mt-8"> <strong class="block mt-8">
<a target="_blank" <a
class="m-1 rounded bg-neutral-300 p-1.5 text-neutral-700 hover:bg-primary-500 hover:text-neutral dark:bg-neutral-700 dark:text-neutral-300 dark:hover:bg-primary-400 dark:hover:text-neutral-800" target="_blank"
href="mailto:{{ .Site.Params.Author.email }}?subject={{ replace (printf "Reply to %s" .Title) "\"" "'" }}"> class="m-1 rounded bg-neutral-300 p-1.5 text-neutral-700 hover:bg-primary-500 hover:text-neutral dark:bg-neutral-700 dark:text-neutral-300 dark:hover:bg-primary-400 dark:hover:text-neutral-800"
href="mailto:{{ .Site.Params.Author.email }}?subject={{ replace (printf "Reply to %s" .Title) "\"" "'" }}">
Reply by Email Reply by Email
</a> </a>
</strong> </strong>
@ -123,7 +139,7 @@
{{ end }} {{ end }}
{{ if or $taxonomyLink $showAuthor }} {{ if or $taxonomyLink $showAuthor }}
<div class="mb-10"></div> <div class="mb-10"></div>
{{ end }} {{ end }}
{{ end }} {{ end }}
@ -136,35 +152,35 @@
{{ $translations := .AllTranslations }} {{ $translations := .AllTranslations }}
{{ with .File }} {{ with .File }}
{{ $path := .Path }} {{ $path := .Path }}
{{range $translations}} {{ range $translations }}
{{ $lang := print "." .Lang ".md" }} {{ $lang := print "." .Lang ".md" }}
{{ $path = replace $path $lang ".md" }} {{ $path = replace $path $lang ".md" }}
{{end}} {{ end }}
<script> {{ $jsPage := resources.Get "js/page.js" }}
var oid = "views_{{ $path }}" {{ $jsPage = $jsPage | resources.Minify | resources.Fingerprint ($.Site.Params.fingerprintAlgorithm | default "sha512") }}
var oid_likes = "likes_{{ $path }}" <script
</script> type="text/javascript"
{{ $jsPage := resources.Get "js/page.js" }} src="{{ $jsPage.RelPermalink }}"
{{ $jsPage = $jsPage | resources.Minify | resources.Fingerprint "sha512" }} integrity="{{ $jsPage.Data.Integrity }}"
<script type="text/javascript" src="{{ $jsPage.RelPermalink }}" integrity="{{ $jsPage.Data.Integrity }}"></script> data-oid="views_{{ $path }}"
data-oid-likes="likes_{{ $path }}"></script>
{{ end }} {{ end }}
</section> </section>
<footer class="pt-8 max-w-prose print:hidden"> <footer class="pt-8 max-w-prose print:hidden">
{{ partial "article-pagination.html" . }}
{{ partial "article-pagination.html" . }} {{ if .Params.showComments | default (.Site.Params.article.showComments | default false) }}
{{ if .Params.showComments | default (.Site.Params.article.showComments | default false) }} {{ if templates.Exists "partials/comments.html" }}
{{ if templates.Exists "partials/comments.html" }} <div class="pt-3">
<div class="pt-3"> <hr class="border-dotted border-neutral-300 dark:border-neutral-600">
<hr class="border-dotted border-neutral-300 dark:border-neutral-600" /> <div class="pt-3">
<div class="pt-3"> {{ partial "comments.html" . }}
{{ partial "comments.html" . }} </div>
</div> </div>
</div> {{ else }}
{{ else }} {{ warnf "[BLOWFISH] Comments are enabled for %s but no comments partial exists." .File.Path }}
{{ warnf "[BLOWFISH] Comments are enabled for %s but no comments partial exists." .File.Path }} {{ end }}
{{ end }} {{ end }}
{{ end }} </footer>
</footer> </article>
</article>
{{ end }} {{ end }}

View file

@ -1,131 +1,128 @@
{{ define "main" }} {{ define "main" }}
{{ .Scratch.Set "scope" "term" }}
{{ if .Site.Params.term.showHero | default false }}
{{ $heroStyle := print "hero/" .Site.Params.term.heroStyle ".html" }}
{{ if templates.Exists ( printf "partials/%s" $heroStyle ) }}
{{ partial $heroStyle . }}
{{ else }}
{{ partial "hero/basic.html" . }}
{{ end }}
{{- end -}}
{{ .Scratch.Set "scope" "term" }} {{ $toc := and (.Params.showTableOfContents | default (.Site.Params.term.showTableOfContents | default false)) (in
{{ if .Site.Params.term.showHero | default false }} .TableOfContents "<ul")
{{ $heroStyle := print "hero/" .Site.Params.term.heroStyle ".html" }} }}
{{ if templates.Exists ( printf "partials/%s" $heroStyle ) }} <header>
{{ partial $heroStyle . }} {{ if .Params.showBreadcrumbs | default (.Site.Params.term.showBreadcrumbs | default false) }}
{{ else }} {{ partial "breadcrumbs.html" . }}
{{ partial "hero/basic.html" . }} {{ end }}
{{ end }} <h1 class="mt-5 text-4xl font-extrabold text-neutral-900 dark:text-neutral">{{ .Title }}</h1>
{{- end -}} <div class="mt-1 mb-2 text-base text-neutral-500 dark:text-neutral-400 print:hidden">
{{ partial "article-meta/term.html" (dict "context" . "scope" "single") }}
{{ $toc := and (.Params.showTableOfContents | default (.Site.Params.term.showTableOfContents | default false)) (in </div>
.TableOfContents "<ul") }} <header>
{{ if .Params.showBreadcrumbs | default (.Site.Params.term.showBreadcrumbs | default false) }}
{{ partial "breadcrumbs.html" . }}
{{ end }}
<h1 class="mt-5 text-4xl font-extrabold text-neutral-900 dark:text-neutral">{{ .Title }}</h1>
<div class="mt-1 mb-2 text-base text-neutral-500 dark:text-neutral-400 print:hidden">
{{ partial "article-meta/term.html" (dict "context" . "scope" "single") }}
</div>
</header> </header>
<section class="flex flex-col max-w-full mt-0 mb-5 prose dark:prose-invert lg:flex-row"> <section class="flex flex-col max-w-full mt-0 mb-5 prose dark:prose-invert lg:flex-row">
{{ if .Content }} {{ if .Content }}
<div class="min-w-0 min-h-0 max-w-prose"> <div class="min-w-0 min-h-0 max-w-prose">
{{ .Content }} {{ .Content }}
</div> </div>
<script> {{ $jsPage := resources.Get "js/page.js" }}
var oid = "views_term_{{ .Data.Term }}" {{ $jsPage = $jsPage | resources.Minify | resources.Fingerprint (.Site.Params.fingerprintAlgorithm | default "sha512") }}
var oid_likes = "likes_term_{{ .Data.Term }}" <script
</script> type="text/javascript"
{{ $jsPage := resources.Get "js/page.js" }} src="{{ $jsPage.RelPermalink }}"
{{ $jsPage = $jsPage | resources.Minify | resources.Fingerprint "sha512" }} integrity="{{ $jsPage.Data.Integrity }}"
<script type="text/javascript" src="{{ $jsPage.RelPermalink }}" integrity="{{ $jsPage.Data.Integrity }}"></script> data-oid="views_term_{{ .Data.Term }}"
data-oid-likes="likes_term_{{ .Data.Term }}"></script>
{{ end }} {{ end }}
</section> </section>
{{ if gt .Pages 0 }} {{ if gt .Pages 0 }}
{{ $cardView := .Params.cardView | default (.Site.Params.term.cardView | default false) }}
{{ $cardViewScreenWidth := .Site.Params.term.cardViewScreenWidth | default false }}
{{ $groupByYear := .Params.groupByYear | default ($.Site.Params.term.groupByYear | default false) }}
{{ $cardView := .Params.cardView | default (.Site.Params.term.cardView | default false) }} {{ if not $cardView }}
{{ $cardViewScreenWidth := .Site.Params.term.cardViewScreenWidth | default false }}
{{ $groupByYear := .Params.groupByYear | default ($.Site.Params.term.groupByYear | default false) }}
{{ if not $cardView }} <section class="space-y-10 w-full">
{{ range (.Paginate (.Pages.GroupByDate "2006")).PageGroups }}
{{ if $groupByYear }}
<h2 class="mt-12 text-2xl font-bold text-neutral-700 first:mt-8 dark:text-neutral-300">
{{ .Key }}
</h2>
{{ end }}
{{ range .Pages }}
{{ partial "article-link/simple.html" . }}
{{ end }}
{{ end }}
</section>
{{ else if and $cardView (not $cardViewScreenWidth) }}
{{ if $groupByYear }}
{{ range (.Paginate (.Pages.GroupByDate "2006")).PageGroups }}
<h2 class="mt-12 mb-3 text-2xl font-bold text-neutral-700 first:mt-8 dark:text-neutral-300">
{{ .Key }}
</h2>
<section class="w-full grid gap-4 sm:grid-cols-2 md:grid-cols-3">
{{ range .Pages }}
{{ partial "article-link/card.html" . }}
{{ end }}
</section>
{{ end }}
{{ else }}
<section class="w-full grid gap-4 sm:grid-cols-2 md:grid-cols-3">
{{ range (.Paginate (.Pages.GroupByDate "2006")).PageGroups }}
{{ range .Pages }}
{{ partial "article-link/card.html" . }}
{{ end }}
{{ end }}
</section>
{{ end }}
{{ else if and $cardView $cardViewScreenWidth }}
{{ if $groupByYear }}
{{ range (.Paginate (.Pages.GroupByDate "2006")).PageGroups }}
<div class="relative w-screen max-w-[1600px] px-[30px] left-[calc(max(-50vw,-800px)+50%)]">
<h2 class="mt-12 mb-3 text-2xl font-bold text-neutral-700 first:mt-8 dark:text-neutral-300">
{{ .Key }}
</h2>
<section class="w-full grid gap-4 sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5">
{{ range .Pages }}
{{ partial "article-link/card.html" . }}
{{ end }}
</section>
</div>
{{ end }}
{{ else }}
<div class="relative w-screen max-w-[1600px] px-[30px] left-[calc(max(-50vw,-800px)+50%)]">
<section class="w-full grid gap-4 sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5">
{{ range (.Paginate (.Pages.GroupByDate "2006")).PageGroups }}
{{ range .Pages }}
{{ partial "article-link/card.html" . }}
{{ end }}
{{ end }}
</section>
</div>
{{ end }}
<section class="space-y-10 w-full">
{{ range (.Paginate (.Pages.GroupByDate "2006")).PageGroups }}
{{ if $groupByYear }}
<h2 class="mt-12 text-2xl font-bold text-neutral-700 first:mt-8 dark:text-neutral-300">
{{ .Key }}
</h2>
{{ end }} {{ end }}
{{ range .Pages }}
{{ partial "article-link/simple.html" . }}
{{ end }}
{{ end }}
</section>
{{ else if and $cardView (not $cardViewScreenWidth) }}
{{ if $groupByYear }}
{{ range (.Paginate (.Pages.GroupByDate "2006")).PageGroups }}
<h2 class="mt-12 mb-3 text-2xl font-bold text-neutral-700 first:mt-8 dark:text-neutral-300">
{{ .Key }}
</h2>
<section class="w-full grid gap-4 sm:grid-cols-2 md:grid-cols-3">
{{ range .Pages }}
{{ partial "article-link/card.html" . }}
{{ end }}
</section>
{{ end }}
{{ else }} {{ else }}
<section class="mt-10 prose dark:prose-invert">
<section class="w-full grid gap-4 sm:grid-cols-2 md:grid-cols-3"> <p class="py-8 border-t">
{{ range (.Paginate (.Pages.GroupByDate "2006")).PageGroups }} <em>{{ i18n "term.no_articles" | emojify }}</em>
{{ range .Pages }} </p>
{{ partial "article-link/card.html" . }}
{{ end }}
{{ end }}
</section>
{{ end }}
{{ else if and $cardView $cardViewScreenWidth }}
{{ if $groupByYear }}
{{ range (.Paginate (.Pages.GroupByDate "2006")).PageGroups }}
<div class="relative w-screen max-w-[1600px] px-[30px]" style="left: calc(max(-50vw,-800px) + 50%);">
<h2 class="mt-12 mb-3 text-2xl font-bold text-neutral-700 first:mt-8 dark:text-neutral-300">
{{ .Key }}
</h2>
<section class="w-full grid gap-4 sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5">
{{ range .Pages }}
{{ partial "article-link/card.html" . }}
{{ end }}
</section> </section>
</div>
{{ end }}
{{ else }}
<div class="relative w-screen max-w-[1600px] px-[30px]" style="left: calc(max(-50vw,-800px) + 50%);">
<section class="w-full grid gap-4 sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5">
{{ range (.Paginate (.Pages.GroupByDate "2006")).PageGroups }}
{{ range .Pages }}
{{ partial "article-link/card.html" . }}
{{ end }}
{{ end }}
</section>
</div>
{{ end }}
{{end}}
{{ else }}
<section class="mt-10 prose dark:prose-invert">
<p class="py-8 border-t">
<em>{{ i18n "term.no_articles" | emojify }}</em>
</p>
</section>
{{ end }} {{ end }}
{{ partial "pagination.html" . }} {{ partial "pagination.html" . }}
{{ end }} {{ end }}

View file

@ -1,17 +1,18 @@
{{ define "main" }} {{ define "main" }}
{{ .Scratch.Set "scope" "list" }}
{{ if .Site.Params.taxonomy.showHero | default false }}
{{ $heroStyle := print "hero/" .Site.Params.taxonomy.heroStyle ".html" }}
{{ if templates.Exists ( printf "partials/%s" $heroStyle ) }}
{{ partial $heroStyle . }}
{{ else }}
{{ partial "hero/basic.html" . }}
{{ end }}
{{- end -}}
{{ .Scratch.Set "scope" "list" }} {{ $toc := and (.Params.showTableOfContents | default (.Site.Params.taxonomy.showTableOfContents | default false)) (in
{{ if .Site.Params.taxonomy.showHero | default false }} .TableOfContents "<ul")
{{ $heroStyle := print "hero/" .Site.Params.taxonomy.heroStyle ".html" }} }}
{{ if templates.Exists ( printf "partials/%s" $heroStyle ) }}
{{ partial $heroStyle . }}
{{ else }}
{{ partial "hero/basic.html" . }}
{{ end }}
{{- end -}}
{{ $toc := and (.Params.showTableOfContents | default (.Site.Params.taxonomy.showTableOfContents | default false)) (in
.TableOfContents "<ul") }}
<header> <header>
{{ if .Params.showBreadcrumbs | default (.Site.Params.taxonomy.showBreadcrumbs | default false) }} {{ if .Params.showBreadcrumbs | default (.Site.Params.taxonomy.showBreadcrumbs | default false) }}
@ -28,32 +29,29 @@
{{ .Content }} {{ .Content }}
</div> </div>
</section> </section>
<script> {{ $jsPage := resources.Get "js/page.js" }}
var oid = "views_taxonomy_{{ .Data.Plural }}" {{ $jsPage = $jsPage | resources.Minify | resources.Fingerprint (.Site.Params.fingerprintAlgorithm | default "sha512") }}
var oid_likes = "likes_taxonomy_{{ .Data.Plural }}" <script
</script> type="text/javascript"
{{ $jsPage := resources.Get "js/page.js" }} src="{{ $jsPage.RelPermalink }}"
{{ $jsPage = $jsPage | resources.Minify | resources.Fingerprint "sha512" }} integrity="{{ $jsPage.Data.Integrity }}"
<script type="text/javascript" src="{{ $jsPage.RelPermalink }}" integrity="{{ $jsPage.Data.Integrity }}"></script> data-oid="views_taxonomy_{{ .Data.Plural }}"
data-oid-likes="likes_taxonomy_{{ .Data.Plural }}"></script>
{{ end }} {{ end }}
{{ if .Site.Params.taxonomy.cardView }} {{ if .Site.Params.taxonomy.cardView }}
<section class="w-full grid gap-4 sm:grid-cols-2 md:grid-cols-3">
<section class="w-full grid gap-4 sm:grid-cols-2 md:grid-cols-3"> {{ range .Data.Terms }}
{{ range .Data.Terms }} {{ partial "term-link/card.html" . }}
{{ partial "term-link/card.html" . }} {{ end }}
{{ end }} </section>
</section>
{{ else }} {{ else }}
<section class="flex flex-wrap max-w-prose -mx-2 overflow-hidden"> <section class="flex flex-wrap max-w-prose -mx-2 overflow-hidden">
{{ range .Data.Terms }} {{ range .Data.Terms }}
{{ partial "term-link/text.html" . }} {{ partial "term-link/text.html" . }}
{{ end }} {{ end }}
</section> </section>
{{ end }} {{ end }}
{{ end }} {{ end }}

View file

@ -1,5 +1,11 @@
{{ if isset site.Params.fathomAnalytics "domain" }} {{ if isset site.Params.fathomAnalytics "domain" }}
<script defer src="https://{{ site.Params.fathomAnalytics.domain }}/script.js" data-site="{{ site.Params.fathomAnalytics.site }}"></script> <script
defer
src="https://{{ site.Params.fathomAnalytics.domain }}/script.js"
data-site="{{ site.Params.fathomAnalytics.site }}"></script>
{{ else }} {{ else }}
<script defer src="https://cdn.usefathom.com/script.js" data-site="{{ site.Params.fathomAnalytics.site }}"></script> <script
defer
src="https://cdn.usefathom.com/script.js"
data-site="{{ site.Params.fathomAnalytics.site }}"></script>
{{ end }} {{ end }}

View file

@ -1,4 +1,6 @@
<script async src="https://www.googletagmanager.com/gtag/js?id={{ site.Config.Services.GoogleAnalytics.ID }}"></script> <script
async
src="https://www.googletagmanager.com/gtag/js?id={{ site.Config.Services.GoogleAnalytics.ID }}"></script>
<script> <script>
window.dataLayer = window.dataLayer || []; window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);} function gtag(){dataLayer.push(arguments);}

View file

@ -1,12 +1,12 @@
{{ with site.Params.fathomAnalytics.site }} {{ with site.Params.fathomAnalytics.site }}
{{ partial "analytics/fathom.html" }} {{ partial "analytics/fathom.html" }}
{{ end }} {{ end }}
{{ with site.Config.Services.GoogleAnalytics.ID }} {{ with site.Config.Services.GoogleAnalytics.ID }}
{{ partial "analytics/ga.html" }} {{ partial "analytics/ga.html" }}
{{ end }} {{ end }}
{{ with site.Params.umamiAnalytics.websiteid }} {{ with site.Params.umamiAnalytics.websiteid }}
{{ partial "analytics/umami.html" }} {{ partial "analytics/umami.html" }}
{{ end }} {{ end }}
{{ with site.Params.selineAnalytics.token }} {{ with site.Params.selineAnalytics.token }}
{{ partial "analytics/seline.html" }} {{ partial "analytics/seline.html" }}
{{ end }} {{ end }}

View file

@ -1,18 +1,21 @@
<script async src="https://cdn.seline.so/seline.js" data-token="{{ site.Params.selineAnalytics.token }}" data-id="seline-script"></script> <script
async
src="https://cdn.seline.so/seline.js"
data-token="{{ site.Params.selineAnalytics.token }}"
data-id="seline-script"></script>
{{ if .Site.Params.selineAnalytics.enableTrackEvent | default true }} {{ if .Site.Params.selineAnalytics.enableTrackEvent | default true }}
<script type="text/javascript"> <script type="text/javascript">
document.querySelector('script[data-id="seline-script"]') document.querySelector('script[data-id="seline-script"]').addEventListener("load", function () {
.addEventListener('load', function () { const type = document.head.querySelector('meta[property = "og:type"]').getAttribute("content");
const type = document.head.querySelector('meta[property = "og:type"]').getAttribute('content'); let title = document.head.querySelector('meta[property = "og:title"]').getAttribute("content");
let title = document.head.querySelector('meta[property = "og:title"]').getAttribute('content'); let url = document.head.querySelector('meta[property = "og:url"]').getAttribute("content");
let url = document.head.querySelector('meta[property = "og:url"]').getAttribute('content');
seline.track("user:" + type + ':' + title, { seline.track("user:" + type + ":" + title, {
type: type, type: type,
title: title, title: title,
url: url url: url,
}); });
}); });
</script> </script>
{{ end }} {{ end }}

View file

@ -1,23 +1,27 @@
{{/* prettier-ignore-start */}}
{{ if isset site.Params.umamiAnalytics "domain" }} {{ if isset site.Params.umamiAnalytics "domain" }}
<script data-id="umami-script" async <script
src="https://{{ site.Params.umamiAnalytics.domain }}/{{ with site.Params.umamiAnalytics.scriptName }}{{ . }}{{ else }}script.js{{ end }}" data-id="umami-script"
data-website-id="{{ site.Params.umamiAnalytics.websiteid }}" async
{{ with site.Params.umamiAnalytics.dataDomains }}data-domains="{{ . }}"{{ end }}> src="https://{{ site.Params.umamiAnalytics.domain }}/{{ with site.Params.umamiAnalytics.scriptName }}{{ . }}{{ else }}script.js{{ end }}"
</script> data-website-id="{{ site.Params.umamiAnalytics.websiteid }}"
{{ with site.Params.umamiAnalytics.dataDomains }}data-domains="{{ . }}"{{ end }}></script>
{{ else }} {{ else }}
<script data-id="umami-script" async src="https://analytics.umami.is/script.js" <script
data-website-id="{{ site.Params.umamiAnalytics.websiteid }}"> data-id="umami-script"
</script> async
src="https://analytics.umami.is/script.js"
data-website-id="{{ site.Params.umamiAnalytics.websiteid }}"></script>
{{ end }} {{ end }}
{{/* prettier-ignore-end */}}
{{ if .Site.Params.umamiAnalytics.enableTrackEvent | default true }} {{ if .Site.Params.umamiAnalytics.enableTrackEvent | default true }}
<script type="text/javascript"> <script type="text/javascript">
document.querySelector('script[data-id="umami-script"]') document.querySelector('script[data-id="umami-script"]').addEventListener("load", function () {
.addEventListener('load', function () { const type = document.head.querySelector('meta[property = "og:type"]').getAttribute("content");
const type = document.head.querySelector('meta[property = "og:type"]').getAttribute('content'); let title = document.head.querySelector('meta[property = "og:title"]').getAttribute("content");
let title = document.head.querySelector('meta[property = "og:title"]').getAttribute('content'); let url = document.head.querySelector('meta[property = "og:url"]').getAttribute("content");
let url = document.head.querySelector('meta[property = "og:url"]').getAttribute('content'); umami.track(type + ":" + title, { url: url });
umami.track(type + ':' + title, {'url': url});
}); });
</script> </script>
{{ end }} {{ end }}

View file

@ -0,0 +1,5 @@
{{ with .Params.externalUrl }}
href="{{ . }}" target="_blank" rel="external"
{{ else }}
href="{{ .RelPermalink }}"
{{- end -}}

View file

@ -35,15 +35,15 @@
{{- end -}} {{- end -}}
{{ if and .Draft .Site.Params.article.showDraftLabel }} {{ if and .Draft .Site.Params.article.showDraftLabel }}
<span class="absolute top-0 right-0 m-2"> <span class="absolute top-0 right-0 m-2">
{{ partial "badge.html" (i18n "article.draft" | emojify) }} {{ partial "badge.html" (i18n "article.draft" | emojify) }}
</span> </span>
{{ end }} {{ end }}
<div class="px-6 py-4">
{{ with .Params.externalUrl }} <div class="px-6 py-4">
{{ with .Params.externalUrl }}
<div> <div>
<div <div
class="font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral"> class="font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral">
@ -54,23 +54,25 @@
</span> </span>
</div> </div>
</div> </div>
{{ else }} {{ else }}
<div class="font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral" <div
href="{{ .RelPermalink }}">{{ .Title | emojify }}</div> class="font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral"
{{ end }} href="{{ .RelPermalink }}">
{{ .Title | emojify }}
<div class="text-sm text-neutral-500 dark:text-neutral-400">
{{ partial "article-meta/basic.html" . }}
</div> </div>
{{ end }}
{{ if .Params.showSummary | default (.Site.Params.list.showSummary | default false) }}
<div class="text-sm text-neutral-500 dark:text-neutral-400">
{{ partial "article-meta/basic.html" . }}
</div>
{{ if .Params.showSummary | default (.Site.Params.list.showSummary | default false) }}
<div class="py-1 prose dark:prose-invert"> <div class="py-1 prose dark:prose-invert">
{{ .Summary | plainify }} {{ .Summary | plainify }}
</div> </div>
{{ end }} {{ end }}
</div>
<div class="px-6 pt-4 pb-2">
</div>
</div> </div>
</a> <div class="px-6 pt-4 pb-2"></div>
</div>
</a>

View file

@ -35,16 +35,15 @@
{{- end -}} {{- end -}}
{{- end -}} {{- end -}}
{{ if and .Draft .Site.Params.article.showDraftLabel }}
{{ if and .Draft .Site.Params.article.showDraftLabel }}
<span class="absolute top-0 right-0 m-2"> <span class="absolute top-0 right-0 m-2">
{{ partial "badge.html" (i18n "article.draft" | emojify) }} {{ partial "badge.html" (i18n "article.draft" | emojify) }}
</span> </span>
{{ end }} {{ end }}
<div class="px-6 py-4">
{{ with .Params.externalUrl }} <div class="px-6 py-4">
{{ with .Params.externalUrl }}
<div> <div>
<div <div
class="font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral"> class="font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral">
@ -55,23 +54,25 @@
</span> </span>
</div> </div>
</div> </div>
{{ else }} {{ else }}
<div class="font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral" <div
href="{{ .RelPermalink }}">{{ .Title | emojify }}</div> class="font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral"
{{ end }} href="{{ .RelPermalink }}">
{{ .Title | emojify }}
<div class="text-sm text-neutral-500 dark:text-neutral-400">
{{ partial "article-meta/basic.html" . }}
</div> </div>
{{ end }}
{{ if .Params.showSummary | default (.Site.Params.list.showSummary | default false) }}
<div class="text-sm text-neutral-500 dark:text-neutral-400">
{{ partial "article-meta/basic.html" . }}
</div>
{{ if .Params.showSummary | default (.Site.Params.list.showSummary | default false) }}
<div class="py-1 prose dark:prose-invert"> <div class="py-1 prose dark:prose-invert">
{{ .Summary | plainify }} {{ .Summary | plainify }}
</div> </div>
{{ end }} {{ end }}
</div>
<div class="px-6 pt-4 pb-2">
</div>
</div> </div>
</a> <div class="px-6 pt-4 pb-2"></div>
</div>
</a>

View file

@ -2,38 +2,34 @@
{{ $articleClasses := "flex flex-wrap md:flex-nowrap article" }} {{ $articleClasses := "flex flex-wrap md:flex-nowrap article" }}
{{ if .Site.Params.list.showCards }} {{ if .Site.Params.list.showCards }}
{{ $articleClasses = delimit (slice $articleClasses "border border-neutral-200 dark:border-neutral-700 border-2 rounded-md overflow-hidden") " " }} {{ $articleClasses = delimit (slice $articleClasses "border border-neutral-200 dark:border-neutral-700 border-2 rounded-md overflow-hidden") " " }}
{{ else }} {{ else }}
{{ $articleClasses = delimit (slice $articleClasses "") " " }} {{ $articleClasses = delimit (slice $articleClasses "") " " }}
{{ end }} {{ end }}
{{ $articleImageClasses := "w-full md:w-auto h-full thumbnail nozoom" }} {{ $articleImageClasses := "w-full md:w-auto h-full thumbnail nozoom" }}
{{ if .Site.Params.list.showCards }} {{ if .Site.Params.list.showCards }}
{{ $articleImageClasses = delimit (slice $articleImageClasses "") " " }} {{ $articleImageClasses = delimit (slice $articleImageClasses "") " " }}
{{ else }} {{ else }}
{{ $articleImageClasses = delimit (slice $articleImageClasses "thumbnailshadow md:mr-7") " " }} {{ $articleImageClasses = delimit (slice $articleImageClasses "thumbnailshadow md:mr-7") " " }}
{{ end }} {{ end }}
{{ $disableImageOptimization := .Page.Site.Params.disableImageOptimization | default false }} {{ $disableImageOptimization := .Page.Site.Params.disableImageOptimization | default false }}
{{ $articleInnerClasses := "" }} {{ $articleInnerClasses := "" }}
{{ if .Site.Params.list.showCards }} {{ if .Site.Params.list.showCards }}
{{ $articleInnerClasses = delimit (slice $articleInnerClasses "p-4") " " }} {{ $articleInnerClasses = delimit (slice $articleInnerClasses "p-4") " " }}
{{ else }} {{ else }}
{{ $articleInnerClasses = delimit (slice $articleInnerClasses "mt-3 md:mt-0") " " }} {{ $articleInnerClasses = delimit (slice $articleInnerClasses "mt-3 md:mt-0") " " }}
{{ end }} {{ end }}
{{ if $constrainItemsWidth }} {{ if $constrainItemsWidth }}
{{ $articleClasses = delimit (slice $articleClasses "max-w-prose") " " }} {{ $articleClasses = delimit (slice $articleClasses "max-w-prose") " " }}
{{ end }} {{ end }}
{{ with .Params.externalUrl }} <a class="{{ $articleClasses }}" {{ partial "article-link/_external-link.html" . | safeHTMLAttr }}>
<a class="{{ $articleClasses }}" href="{{ . }}" target="_blank" rel="external"> {{- with $.Params.images -}}
{{ else }}
<a class="{{ $articleClasses }}" href="{{ .RelPermalink }}">
{{ end }}
{{- with $.Params.images -}}
{{- range first 6 . }} {{- range first 6 . }}
<meta property="og:image" content="{{ . | absURL }}" />{{ end -}} <meta property="og:image" content="{{ . | absURL }}" />{{ end -}}
{{- else -}} {{- else -}}
@ -63,9 +59,9 @@
{{- end -}} {{- end -}}
<div class="{{ $articleInnerClasses }}"> <div class="{{ $articleInnerClasses }}">
<div class="items-center text-left text-xl font-semibold"> <div class="items-center text-left text-xl font-semibold">
{{ with .Params.externalUrl }} {{ with .Params.externalUrl }}
<div> <div>
<div <div
class="font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral"> class="font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral">
@ -76,26 +72,29 @@
</span> </span>
</div> </div>
</div> </div>
{{ else }} {{ else }}
<div class="font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral" <div
href="{{ .RelPermalink }}">{{ .Title | emojify }}</div> class="font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral"
{{ end }} href="{{ .RelPermalink }}">
{{ if and .Draft .Site.Params.article.showDraftLabel }} {{ .Title | emojify }}
</div>
{{ end }}
{{ if and .Draft .Site.Params.article.showDraftLabel }}
<div class=" ltr:ml-2 rtl:mr-2"> <div class=" ltr:ml-2 rtl:mr-2">
{{ partial "badge.html" (i18n "article.draft" | emojify) }} {{ partial "badge.html" (i18n "article.draft" | emojify) }}
</div> </div>
{{ end }} {{ end }}
{{ if templates.Exists "partials/extend-article-link.html" }} {{ if templates.Exists "partials/extend-article-link.html" }}
{{ partial "extend-article-link.html" . }} {{ partial "extend-article-link.html" . }}
{{ end }} {{ end }}
</div> </div>
<div class="text-sm text-neutral-500 dark:text-neutral-400"> <div class="text-sm text-neutral-500 dark:text-neutral-400">
{{ partial "article-meta/basic.html" . }} {{ partial "article-meta/basic.html" . }}
</div> </div>
{{ if .Params.showSummary | default (.Site.Params.list.showSummary | default false) }} {{ if .Params.showSummary | default (.Site.Params.list.showSummary | default false) }}
<div class="py-1 max-w-fit prose dark:prose-invert"> <div class="py-1 max-w-fit prose dark:prose-invert">
{{ .Summary | plainify }} {{ .Summary | plainify }}
</div> </div>
{{ end }} {{ end }}
</div> </div>
</a> </a>

View file

@ -9,91 +9,117 @@
{{ end }} {{ end }}
{{ with $context }} {{ with $context }}
{{ $meta := newScratch }} {{ $meta := newScratch }}
{{/* Gather partials for this context */}} {{/* Gather partials for this context */}}
{{ if .Params.showDate | default (.Site.Params.article.showDate | default true) }} {{ $shouldShowDate := false }}
{{ $meta.Add "partials" (slice (partial "meta/date.html" .Date)) }} {{ if and (eq $scope "single") (.Params.showDateOnlyInArticle | default (.Site.Params.article.showDateOnlyInArticle | default false)) }}
{{else if and (eq $scope "single") (.Params.showDateOnlyInArticle | default (.Site.Params.article.showDateOnlyInArticle | default false)) }} {{ $shouldShowDate = true }}
{{ $meta.Add "partials" (slice (partial "meta/date.html" .Date)) }}
{{ end }}
{{ if and (.Params.showDateUpdated | default (.Site.Params.article.showDateUpdated | default false)) (ne (partial
"functions/date.html" .Date) (partial "functions/date.html" .Lastmod)) (gt (.Lastmod | time.Format "2006") 1) }}
{{ $meta.Add "partials" (slice (partial "meta/date-updated.html" .Lastmod)) }}
{{ end }}
{{ if and (.Params.showWordCount | default (.Site.Params.article.showWordCount | default false)) (ne .WordCount 0) }}
{{ $meta.Add "partials" (slice (partial "meta/word-count.html" .)) }}
{{ end }}
{{ if and (.Params.showReadingTime | default (.Site.Params.article.showReadingTime | default true)) (ne .ReadingTime 0)
}}
{{ $meta.Add "partials" (slice (partial "meta/reading-time.html" .)) }}
{{ end }}
{{ if and (not .Params.externalURL) (.Params.showViews | default (.Site.Params.article.showViews | default false)) }}
{{ $meta.Add "partials" (slice (partial "meta/views.html" .)) }}
{{ end }}
{{ if and (not .Params.externalURL) (.Params.showLikes | default (.Site.Params.article.showLikes | default false)) }}
{{ $meta.Add "partials" (slice (partial "meta/likes.html" .)) }}
{{ end }}
{{ if and (eq $scope "single") (not .Params.externalURL) (.Params.showLikes | default (.Site.Params.article.showLikes | default false)) }}
{{ $meta.Add "partials" (slice (partial "meta/likes_button.html" .)) }}
{{ end }}
{{ if and (eq $scope "single") (.Params.showEdit | default (.Site.Params.article.showEdit | default false)) }}
{{ $meta.Add "partials" (slice (partial "meta/edit.html" .)) }}
{{ end }}
{{ if and (eq $scope "single") (.Params.showZenMode | default (.Site.Params.article.showZenMode | default false)) }}
{{ $meta.Add "partials" (slice (partial "meta/zen-mode.html" .)) }}
{{ end }}
<div class="flex flex-row flex-wrap items-center">
{{/* Output partials */}}
{{ with ($meta.Get "partials") }}
{{ delimit . "<span class=\"px-2 text-primary-500\">&middot;</span>" | safeHTML }}
{{ end }} {{ end }}
{{/* Output draft label */}} {{/* showDate has higher priority than showDateOnlyInArticle */}}
{{ if and (eq $scope "single") (and .Draft .Site.Params.article.showDraftLabel) }} {{ if .Params.showDate | default (.Site.Params.article.showDate | default true) }}
<span class="pl-2">{{ partial "badge.html" (i18n "article.draft" | emojify) }}</span> {{ $shouldShowDate = true }}
{{ else }}
{{ $shouldShowDate = false }}
{{ end }} {{ end }}
</div>
{{ if .Params.showAuthorsBadges | default (.Site.Params.article.showAuthorsBadges | default false) }} {{ if $shouldShowDate }}
<div class="flex flex-row flex-wrap items-center"> {{ $meta.Add "partials" (slice (partial "meta/date.html" .Date)) }}
{{ range $taxonomy, $terms := .Site.Taxonomies }}
{{ if (eq $taxonomy "authors")}}
{{ if (gt (len ($context.GetTerms $taxonomy)) 0) }}
{{ range $i, $a := $context.GetTerms $taxonomy }}
{{ if not (eq $i 0) }} ,&nbsp; {{ end }} <div style="cursor: pointer;" onclick="window.open({{ $a.RelPermalink }},'_self');return false;">{{ $a.LinkTitle }}</div>
{{ end }} {{ end }}
{{ end }}
{{ end }}
{{ end }}
</div>
{{ end }}
{{/* Output taxonomies */}} {{ if and (.Params.showDateUpdated | default (.Site.Params.article.showDateUpdated | default false)) (ne (partial
{{ if .Params.showTaxonomies | default (.Site.Params.article.showTaxonomies | default false) }} "functions/date.html" .Date) (partial "functions/date.html" .Lastmod)) (gt (.Lastmod | time.Format "2006") 1)
<div class="flex flex-row flex-wrap items-center"> }}
{{ range $taxonomy, $terms := .Site.Taxonomies }} {{ $meta.Add "partials" (slice (partial "meta/date-updated.html" .Lastmod)) }}
{{ if and (not (eq $taxonomy "authors")) (not (eq $taxonomy "series"))}}
{{ if (gt (len ($context.GetTerms $taxonomy)) 0) }}
{{ range $context.GetTerms $taxonomy }}
<span style="margin-top:0.5rem" class="mr-2" onclick="window.open({{ .RelPermalink }},'_self');return false;">
{{ partial "badge.html" .LinkTitle }}
</span>
{{ end }} {{ end }}
{{ if and (.Params.showWordCount | default (.Site.Params.article.showWordCount | default false)) (ne .WordCount 0) }}
{{ $meta.Add "partials" (slice (partial "meta/word-count.html" .)) }}
{{ end }} {{ end }}
{{ if and (.Params.showReadingTime | default (.Site.Params.article.showReadingTime | default true)) (ne .ReadingTime 0) }}
{{ $meta.Add "partials" (slice (partial "meta/reading-time.html" .)) }}
{{ end }} {{ end }}
{{ if and (not .Params.externalURL) (.Params.showViews | default (.Site.Params.article.showViews | default false)) }}
{{ $meta.Add "partials" (slice (partial "meta/views.html" .)) }}
{{ end }}
{{ if and (not .Params.externalURL) (.Params.showLikes | default (.Site.Params.article.showLikes | default false)) }}
{{ $meta.Add "partials" (slice (partial "meta/likes.html" .)) }}
{{ end }}
{{ if and (eq $scope "single") (not .Params.externalURL) (.Params.showLikes | default (.Site.Params.article.showLikes | default false)) }}
{{ $meta.Add "partials" (slice (partial "meta/likes_button.html" .)) }}
{{ end }}
{{ if and (eq $scope "single") (.Params.showEdit | default (.Site.Params.article.showEdit | default false)) }}
{{ $meta.Add "partials" (slice (partial "meta/edit.html" .)) }}
{{ end }}
{{ if and (eq $scope "single") (.Params.showZenMode | default (.Site.Params.article.showZenMode | default false)) }}
{{ $meta.Add "partials" (slice (partial "meta/zen-mode.html" .)) }}
{{ end }}
<div class="flex flex-row flex-wrap items-center">
{{/* Output partials */}}
{{ with ($meta.Get "partials") }}
{{ delimit . "<span class=\"px-2 text-primary-500\">&middot;</span>" | safeHTML }}
{{ end }}
{{/* Output draft label */}}
{{ if and (eq $scope "single") (and .Draft .Site.Params.article.showDraftLabel) }}
<span class="pl-2">{{ partial "badge.html" (i18n "article.draft" | emojify) }}</span>
{{ end }}
</div>
{{ if .Params.showAuthorsBadges | default (.Site.Params.article.showAuthorsBadges | default false) }}
<div class="flex flex-row flex-wrap items-center">
{{ range $taxonomy, $terms := .Site.Taxonomies }}
{{ if (eq $taxonomy "authors") }}
{{ if (gt (len ($context.GetTerms $taxonomy)) 0) }}
{{ range $i, $a := $context.GetTerms $taxonomy }}
{{ if not (eq $i 0) }},&nbsp;{{ end }}
<div class="cursor-pointer" onclick="window.open({{ $a.RelPermalink }},'_self');return false;">
{{ $a.LinkTitle }}
</div>
{{ end }}
{{ end }}
{{ end }}
{{ end }}
</div>
{{ end }}
{{/* Output taxonomies */}}
{{ if .Params.showTaxonomies | default (.Site.Params.article.showTaxonomies | default false) }}
<div class="flex flex-row flex-wrap items-center">
{{ range $taxonomy, $terms := .Site.Taxonomies }}
{{ if and (not (eq $taxonomy "authors")) (not (eq $taxonomy "series")) }}
{{ if (gt (len ($context.GetTerms $taxonomy)) 0) }}
{{ range $context.GetTerms $taxonomy }}
<span
class="mr-2 mt-[0.5rem]"
onclick="window.open({{ .RelPermalink }},'_self');return false;">
{{ partial "badge.html" .LinkTitle }}
</span>
{{ end }}
{{ end }}
{{ end }}
{{ end }}
</div>
{{ end }}
{{/* Output only category */}}
{{ if .Params.showCategoryOnly | default (.Site.Params.article.showCategoryOnly | default false) }}
<div class="flex flex-row flex-wrap items-center">
{{ range (.GetTerms "categories") }}
<span class="mr-2 mt-[0.5rem]" onclick="window.open({{ .RelPermalink }},'_self');return false;">
{{ partial "badge.html" .LinkTitle }}
</span>
{{ end }}
</div>
{{ end }} {{ end }}
</div>
{{ end }}
{{ end }} {{ end }}

Some files were not shown because too many files have changed in this diff Show more