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.
- 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.
- **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
- 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.
- 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").

View file

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

View file

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

View file

@ -1,6 +1,6 @@
/*! Blowfish | MIT License | https://github.com/nunocoracao/blowfish */
@import './components/zen-mode.css';
@import "./components/zen-mode.css";
@import "tailwindcss";
@config "../../tailwind.config.js";
@ -10,6 +10,11 @@ body button {
@apply transition-colors;
}
button,
[role="button"] {
cursor: pointer;
}
/* Scale SVG icons to text size */
.icon svg {
@apply h-[1em] w-[1em];
@ -33,13 +38,13 @@ body button {
@apply rtl:pr-4 rtl:border-l-0 rtl:border-r-4;
}
.prose ul>li,
.prose ol>li {
.prose ul > li,
.prose ol > li {
@apply rtl:pl-0 rtl:pr-2 rtl:mr-7;
}
.prose ol>li:before,
.prose ul>li:before {
.prose ol > li:before,
.prose ul > li:before {
@apply rtl:left-auto rtl:right-1;
}
@ -54,11 +59,21 @@ body button {
}
/* 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;
}
/* Table of Contents */
#TableOfContents {
@apply lg:max-w-[25vw];
}
#TOCView {
max-height: calc(100vh - 150px);
min-height: 0;
overflow-x: hidden;
}
.toc ul,
.toc li {
@apply px-0 leading-snug list-none;
@ -72,7 +87,7 @@ body button {
@apply font-normal text-neutral-700 dark:text-neutral-400;
}
.toc ul>li {
.toc ul > li {
@apply rtl:mr-0;
}
@ -85,12 +100,14 @@ body button {
@apply relative z-0;
}
.highlight:hover>.copy-button {
.highlight:hover > .copy-button {
@apply visible;
}
.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,
@ -105,25 +122,33 @@ body button {
}
/* 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 */
table {
display: block;
overflow: auto;
display: block;
overflow: auto;
}
/* Fix long inline code sections breaking out of article on mobile */
code {
word-wrap: break-word; /* All browsers since IE 5.5+ */
overflow-wrap: break-word; /* Renamed property in CSS3 draft spec */
word-wrap: break-word; /* All browsers since IE 5.5+ */
overflow-wrap: break-word; /* Renamed property in CSS3 draft spec */
}
/* Fix long URLs breaking out of article bounds on mobile */
a {
word-break: break-word;
word-wrap: break-word;
overflow-wrap: break-word;
word-break: break-word;
word-wrap: break-word;
overflow-wrap: break-word;
}
/* -- 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;
}
.prose-invert .highlight pre > code {
background-color: unset;
}
/* LineTableTD */
.chroma .lntd,
.chroma .lntd pre {
@ -361,36 +390,36 @@ pre {
.thumbnail {
min-width: 300px;
height: 180px;
background-repeat:no-repeat;
background-size:cover;
background-position:center;
background-repeat: no-repeat;
background-size: cover;
background-position: center;
}
.thumbnail_card {
height: 200px;
background-repeat:no-repeat;
background-size:cover;
background-position:center;
background-repeat: no-repeat;
background-size: cover;
background-position: center;
}
.thumbnail_card_related {
height: 150px;
background-repeat:no-repeat;
background-size:cover;
background-position:center;
background-repeat: no-repeat;
background-size: cover;
background-position: center;
}
.thumbnail_card_term {
height: 150px;
background-repeat:no-repeat;
background-size:cover;
background-position:center;
background-repeat: no-repeat;
background-size: cover;
background-position: center;
}
.single_hero_basic {
background-repeat:no-repeat;
background-size:cover;
background-position:center;
background-repeat: no-repeat;
background-size: cover;
background-position: center;
}
.single_hero_round {
@ -399,12 +428,10 @@ pre {
}
.single_hero_background {
background-repeat:no-repeat;
background-size:cover;
background-position:center;
width: calc(100% + 40px);
background-repeat: no-repeat;
background-size: cover;
background-position: center;
z-index: -10;
margin-left: -20px;
}
.hero_gradient {
@ -424,6 +451,12 @@ pre {
visibility: hidden;
}
/* Offset scroll position to avoid header overlap */
[id^="fn"],
[id^="fnref"] {
scroll-margin-top: 145px;
}
@screen sm {
.thumbnail {
min-width: 100%;
@ -452,19 +485,25 @@ pre {
.nested-menu:hover + .menuhide {
visibility: visible;
opacity: 1;
transition: visibility 0.3s, opacity 0.3s ease-in-out ;
transition:
visibility 0.3s,
opacity 0.3s ease-in-out;
}
.menuhide:hover {
visibility: visible;
opacity: 1;
transition: visibility 0.3s, opacity 0.3s ease-in-out ;
transition:
visibility 0.3s,
opacity 0.3s ease-in-out;
}
.menuhide {
visibility: hidden;
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;
}
@ -475,179 +514,593 @@ pre {
}
/* Gallery Specific Styles */
.grid-w10 { width: calc(10% - 5px); margin: 0px !important; }
.grid-w15 { width: calc(15% - 5px); margin: 0px !important; }
.grid-w20 { width: calc(20% - 5px); margin: 0px !important; }
.grid-w25 { width: calc(25% - 5px); margin: 0px !important; }
.grid-w30 { width: calc(30% - 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; }
.grid-w10 {
width: calc(10% - 5px);
margin: 0px !important;
}
.grid-w15 {
width: calc(15% - 5px);
margin: 0px !important;
}
.grid-w20 {
width: calc(20% - 5px);
margin: 0px !important;
}
.grid-w25 {
width: calc(25% - 5px);
margin: 0px !important;
}
.grid-w30 {
width: calc(30% - 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 {
.sm\:grid-w10 { width: calc(10% - 5px); margin: 0px !important; }
.sm\:grid-w15 { width: calc(15% - 5px); margin: 0px !important; }
.sm\:grid-w20 { width: calc(20% - 5px); 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-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; }
.sm\:grid-w10 {
width: calc(10% - 5px);
margin: 0px !important;
}
.sm\:grid-w15 {
width: calc(15% - 5px);
margin: 0px !important;
}
.sm\:grid-w20 {
width: calc(20% - 5px);
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-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 {
.md\:grid-w10 { width: calc(10% - 5px); margin: 0px !important; }
.md\:grid-w15 { width: calc(15% - 5px); margin: 0px !important; }
.md\:grid-w20 { width: calc(20% - 5px); 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-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; }
.md\:grid-w10 {
width: calc(10% - 5px);
margin: 0px !important;
}
.md\:grid-w15 {
width: calc(15% - 5px);
margin: 0px !important;
}
.md\:grid-w20 {
width: calc(20% - 5px);
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-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 {
.lg\:grid-w10 { width: calc(10% - 5px); margin: 0px !important; }
.lg\:grid-w15 { width: calc(15% - 5px); margin: 0px !important; }
.lg\:grid-w20 { width: calc(20% - 5px); 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-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; }
.lg\:grid-w10 {
width: calc(10% - 5px);
margin: 0px !important;
}
.lg\:grid-w15 {
width: calc(15% - 5px);
margin: 0px !important;
}
.lg\:grid-w20 {
width: calc(20% - 5px);
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-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 {
.xl\:grid-w10 { width: calc(10% - 5px); margin: 0px !important; }
.xl\:grid-w15 { width: calc(15% - 5px); margin: 0px !important; }
.xl\:grid-w20 { width: calc(20% - 5px); 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-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; }
.xl\:grid-w10 {
width: calc(10% - 5px);
margin: 0px !important;
}
.xl\:grid-w15 {
width: calc(15% - 5px);
margin: 0px !important;
}
.xl\:grid-w20 {
width: calc(20% - 5px);
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-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 {
.2xl\:grid-w10 { width: calc(10% - 5px); margin: 0px !important; }
.2xl\:grid-w15 { width: calc(15% - 5px); margin: 0px !important; }
.2xl\:grid-w20 { width: calc(20% - 5px); 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-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; }
.2xl\:grid-w10 {
width: calc(10% - 5px);
margin: 0px !important;
}
.2xl\:grid-w15 {
width: calc(15% - 5px);
margin: 0px !important;
}
.2xl\:grid-w20 {
width: calc(20% - 5px);
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-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 */
.ratio-16-9 { padding-top: 56.25%; } /* 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 */
.ratio-16-9 {
padding-top: 56.25%;
} /* 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 {
.sm\:ratio-16-9 { padding-top: 56.25%; } /* 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 */
.sm\:ratio-16-9 {
padding-top: 56.25%;
} /* 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 {
.md\:ratio-16-9 { padding-top: 56.25%; } /* 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 */
.md\:ratio-16-9 {
padding-top: 56.25%;
} /* 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 {
.lg\:ratio-16-9 { padding-top: 56.25%; } /* 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 */
.lg\:ratio-16-9 {
padding-top: 56.25%;
} /* 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 {
.xl\:ratio-16-9 { padding-top: 56.25%; } /* 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 */
.xl\:ratio-16-9 {
padding-top: 56.25%;
} /* 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 {
.2xl\:ratio-16-9 { padding-top: 56.25%; } /* 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 */
}
.2xl\:ratio-16-9 {
padding-top: 56.25%;
} /* 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;
--color-neutral-50: 255,255,255;
--color-neutral-100: 214,251,252;
--color-neutral-200: 142,245,247;
--color-neutral-300: 70,239,243;
--color-neutral-400: 15,217,222;
--color-neutral-500: 10,147,150;
--color-neutral-600: 7,110,112;
--color-neutral-700: 5,72,74;
--color-neutral-800: 2,35,35;
--color-neutral-900: 0,0,0;
--color-primary-50: 255,255,255;
--color-primary-100: 255,255,255;
--color-primary-200: 255,240,212;
--color-primary-300: 255,213,136;
--color-primary-400: 255,187,59;
--color-primary-500: 238,155,0;
--color-primary-600: 197,128,0;
--color-primary-700: 156,102,0;
--color-primary-800: 116,75,0;
--color-primary-900: 75,49,0;
--color-secondary-50: 255,255,255;
--color-secondary-100: 255,246,241;
--color-secondary-200: 254,194,166;
--color-secondary-300: 252,142,91;
--color-secondary-400: 251,91,15;
--color-secondary-500: 187,62,3;
--color-secondary-600: 147,49,2;
--color-secondary-700: 107,35,2;
--color-secondary-800: 67,22,1;
--color-secondary-900: 26,9,0;
}
:root {
--color-neutral: 255, 255, 255;
--color-neutral-50: 255, 255, 255;
--color-neutral-100: 214, 251, 252;
--color-neutral-200: 142, 245, 247;
--color-neutral-300: 70, 239, 243;
--color-neutral-400: 15, 217, 222;
--color-neutral-500: 10, 147, 150;
--color-neutral-600: 7, 110, 112;
--color-neutral-700: 5, 72, 74;
--color-neutral-800: 2, 35, 35;
--color-neutral-900: 0, 0, 0;
--color-primary-50: 255, 255, 255;
--color-primary-100: 255, 255, 255;
--color-primary-200: 255, 240, 212;
--color-primary-300: 255, 213, 136;
--color-primary-400: 255, 187, 59;
--color-primary-500: 238, 155, 0;
--color-primary-600: 197, 128, 0;
--color-primary-700: 156, 102, 0;
--color-primary-800: 116, 75, 0;
--color-primary-900: 75, 49, 0;
--color-secondary-50: 255, 255, 255;
--color-secondary-100: 255, 246, 241;
--color-secondary-200: 254, 194, 166;
--color-secondary-300: 252, 142, 91;
--color-secondary-400: 251, 91, 15;
--color-secondary-500: 187, 62, 3;
--color-secondary-600: 147, 49, 2;
--color-secondary-700: 107, 35, 2;
--color-secondary-800: 67, 22, 1;
--color-secondary-900: 26, 9, 0;
}

View file

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

View file

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

View file

@ -1,32 +1,33 @@
:root { --color-neutral: 255, 255, 255;
--color-neutral-50: 255,255,255;
--color-neutral-100: 255,255,255;
--color-neutral-200: 201,209,244;
--color-neutral-300: 137,156,231;
--color-neutral-400: 74,103,217;
--color-neutral-500: 37,65,178;
--color-neutral-600: 30,53,144;
--color-neutral-700: 23,40,110;
--color-neutral-800: 16,28,77;
--color-neutral-900: 9,16,43;
--color-primary-50: 255,255,255;
--color-primary-100: 255,255,255;
--color-primary-200: 252,211,226;
--color-primary-300: 246,140,178;
--color-primary-400: 240,69,131;
--color-primary-500: 216,17,89;
--color-primary-600: 178,14,73;
--color-primary-700: 140,11,58;
--color-primary-800: 103,8,42;
--color-primary-900: 65,5,27;
--color-secondary-50: 255,255,255;
--color-secondary-100: 255,255,255;
--color-secondary-200: 255,255,255;
--color-secondary-300: 255,242,219;
--color-secondary-400: 255,215,143;
--color-secondary-500: 255,188,66;
--color-secondary-600: 255,174,25;
--color-secondary-700: 239,155,0;
--color-secondary-800: 199,128,0;
--color-secondary-900: 158,102,0;
}
:root {
--color-neutral: 255, 255, 255;
--color-neutral-50: 255, 255, 255;
--color-neutral-100: 255, 255, 255;
--color-neutral-200: 201, 209, 244;
--color-neutral-300: 137, 156, 231;
--color-neutral-400: 74, 103, 217;
--color-neutral-500: 37, 65, 178;
--color-neutral-600: 30, 53, 144;
--color-neutral-700: 23, 40, 110;
--color-neutral-800: 16, 28, 77;
--color-neutral-900: 9, 16, 43;
--color-primary-50: 255, 255, 255;
--color-primary-100: 255, 255, 255;
--color-primary-200: 252, 211, 226;
--color-primary-300: 246, 140, 178;
--color-primary-400: 240, 69, 131;
--color-primary-500: 216, 17, 89;
--color-primary-600: 178, 14, 73;
--color-primary-700: 140, 11, 58;
--color-primary-800: 103, 8, 42;
--color-primary-900: 65, 5, 27;
--color-secondary-50: 255, 255, 255;
--color-secondary-100: 255, 255, 255;
--color-secondary-200: 255, 255, 255;
--color-secondary-300: 255, 242, 219;
--color-secondary-400: 255, 215, 143;
--color-secondary-500: 255, 188, 66;
--color-secondary-600: 255, 174, 25;
--color-secondary-700: 239, 155, 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;
--color-neutral-50: 255,255,255;
--color-neutral-100: 255,255,255;
--color-neutral-200: 218,196,249;
--color-neutral-300: 175,126,243;
--color-neutral-400: 131,56,236;
--color-neutral-500: 108,22,229;
--color-neutral-600: 91,18,192;
--color-neutral-700: 73,15,155;
--color-neutral-800: 56,11,118;
--color-neutral-900: 38,8,80;
--color-primary-50: 255,255,255;
--color-primary-100: 255,230,241;
--color-primary-200: 255,153,197;
--color-primary-300: 255,77,154;
--color-primary-400: 255,0,110;
--color-primary-500: 214,0,92;
--color-primary-600: 173,0,75;
--color-primary-700: 133,0,57;
--color-primary-800: 92,0,40;
--color-primary-900: 51,0,22;
--color-secondary-50: 255,255,255;
--color-secondary-100: 255,255,255;
--color-secondary-200: 211,228,255;
--color-secondary-300: 135,181,255;
--color-secondary-400: 58,134,255;
--color-secondary-500: 17,109,255;
--color-secondary-600: 0,89,231;
--color-secondary-700: 0,74,191;
--color-secondary-800: 0,58,150;
--color-secondary-900: 0,42,109;
}
:root {
--color-neutral: 255, 255, 255;
--color-neutral-50: 255, 255, 255;
--color-neutral-100: 255, 255, 255;
--color-neutral-200: 218, 196, 249;
--color-neutral-300: 175, 126, 243;
--color-neutral-400: 131, 56, 236;
--color-neutral-500: 108, 22, 229;
--color-neutral-600: 91, 18, 192;
--color-neutral-700: 73, 15, 155;
--color-neutral-800: 56, 11, 118;
--color-neutral-900: 38, 8, 80;
--color-primary-50: 255, 255, 255;
--color-primary-100: 255, 230, 241;
--color-primary-200: 255, 153, 197;
--color-primary-300: 255, 77, 154;
--color-primary-400: 255, 0, 110;
--color-primary-500: 214, 0, 92;
--color-primary-600: 173, 0, 75;
--color-primary-700: 133, 0, 57;
--color-primary-800: 92, 0, 40;
--color-primary-900: 51, 0, 22;
--color-secondary-50: 255, 255, 255;
--color-secondary-100: 255, 255, 255;
--color-secondary-200: 211, 228, 255;
--color-secondary-300: 135, 181, 255;
--color-secondary-400: 58, 134, 255;
--color-secondary-500: 17, 109, 255;
--color-secondary-600: 0, 89, 231;
--color-secondary-700: 0, 74, 191;
--color-secondary-800: 0, 58, 150;
--color-secondary-900: 0, 42, 109;
}

View file

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

View file

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

View file

@ -1,32 +1,33 @@
:root { --color-neutral: 255, 255, 255;
--color-neutral-50: 203,255,227;
--color-neutral-100: 126,255,186;
--color-neutral-200: 49,255,145;
--color-neutral-300: 0,228,106;
--color-neutral-400: 0,152,71;
--color-neutral-500: 0,75,35;
--color-neutral-600: 0,50,23;
--color-neutral-700: 0,24,11;
--color-neutral-800: 0,24,11;
--color-neutral-900: 0,0,0;
--color-primary-50: 255,255,255;
--color-primary-100: 236,255,227;
--color-primary-200: 184,255,150;
--color-primary-300: 132,255,74;
--color-primary-400: 80,252,0;
--color-primary-500: 56,176,0;
--color-primary-600: 48,151,0;
--color-primary-700: 40,125,0;
--color-primary-800: 40,125,0;
--color-primary-900: 7,23,0;
--color-secondary-50: 255,255,255;
--color-secondary-100: 239,248,252;
--color-secondary-200: 173,220,242;
--color-secondary-300: 107,192,231;
--color-secondary-400: 41,164,220;
--color-secondary-500: 26,117,159;
--color-secondary-600: 22,101,137;
--color-secondary-700: 19,85,115;
--color-secondary-800: 19,85,115;
--color-secondary-900: 4,20,28;
}
:root {
--color-neutral: 255, 255, 255;
--color-neutral-50: 203, 255, 227;
--color-neutral-100: 126, 255, 186;
--color-neutral-200: 49, 255, 145;
--color-neutral-300: 0, 228, 106;
--color-neutral-400: 0, 152, 71;
--color-neutral-500: 0, 75, 35;
--color-neutral-600: 0, 50, 23;
--color-neutral-700: 0, 24, 11;
--color-neutral-800: 0, 24, 11;
--color-neutral-900: 0, 0, 0;
--color-primary-50: 255, 255, 255;
--color-primary-100: 236, 255, 227;
--color-primary-200: 184, 255, 150;
--color-primary-300: 132, 255, 74;
--color-primary-400: 80, 252, 0;
--color-primary-500: 56, 176, 0;
--color-primary-600: 48, 151, 0;
--color-primary-700: 40, 125, 0;
--color-primary-800: 40, 125, 0;
--color-primary-900: 7, 23, 0;
--color-secondary-50: 255, 255, 255;
--color-secondary-100: 239, 248, 252;
--color-secondary-200: 173, 220, 242;
--color-secondary-300: 107, 192, 231;
--color-secondary-400: 41, 164, 220;
--color-secondary-500: 26, 117, 159;
--color-secondary-600: 22, 101, 137;
--color-secondary-700: 19, 85, 115;
--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 copyText = scriptBundle && scriptBundle.getAttribute("data-copy")? scriptBundle.getAttribute("data-copy") : "Copy";
var copiedText = scriptBundle && scriptBundle.getAttribute("data-copied")? scriptBundle.getAttribute("data-copied") : "Copied";
var copyText =
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) {
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 openMenu = function (e) {
var openMenu = function () {
if (!menuOpen) {
menuOpen = true;
document.body.style.overflowY = "hidden";
menuButton.style.visibility = "hidden";
menuWrapper.style.visibility = "visible";
menuWrapper.style.opacity = "1";
window.onbeforeunload = function (event) {
closeMenu()
}
window.onbeforeunload = function () {
closeMenu();
};
}
};
@ -24,10 +24,10 @@ var closeMenu = function (e) {
menuButton.style.visibility = "visible";
menuWrapper.style.visibility = "hidden";
menuWrapper.style.opacity = "0";
window.onbeforeunload = function (event) { }
window.onbeforeunload = function () {};
e.stopPropagation();
}
}
};
menuButton.addEventListener("click", openMenu);
menuCloseButton.addEventListener("click", closeMenu);
menuButton && menuButton.addEventListener("click", openMenu);
menuCloseButton && menuCloseButton.addEventListener("click", closeMenu);

View file

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

View file

@ -1,71 +1,70 @@
if (typeof auth !== 'undefined') {
var viewsCollection = db.collection('views');
var likesCollection = db.collection('likes');
if (typeof auth !== "undefined") {
var viewsCollection = db.collection("views");
var likesCollection = db.collection("likes");
function numberWithCommas(x) {
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
function numberWithCommas(x) {
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 classesString = node.className;
if(classesString == "") return
var classes = classesString.split(" ");
for(var i in classes){
node.classList.toggle(classes[i])
var update_views = function (node, id) {
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) {
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) {
viewsCollection.doc(id).onSnapshot(doc => {
var data = doc.data();
if (data) {
node.innerText = numberWithCommas(data.views)
} else {
node.innerText = 0
}
toggleLoaders(node)
})
}
var likes_nodes = document.querySelectorAll("span[id^='likes_']");
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 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)
});
}
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;
// Listen for events
showButton? showButton.addEventListener("click", displaySearch) : null;
showButtonMobile? showButtonMobile.addEventListener("click", displaySearch) : null;
showButton ? showButton.addEventListener("click", displaySearch) : null;
showButtonMobile ? showButtonMobile.addEventListener("click", displaySearch) : null;
hideButton.addEventListener("click", hideSearch);
wrapper.addEventListener("click", hideSearch);
modal.addEventListener("click", function (event) {
@ -25,7 +25,11 @@ modal.addEventListener("click", function (event) {
document.addEventListener("keydown", function (event) {
// Forward slash to open search wrapper
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();
displaySearch();
}
@ -75,7 +79,6 @@ document.addEventListener("keydown", function (event) {
}
}
}
});
// Update search on each keypress
@ -122,7 +125,7 @@ function fetchJSON(path, callback) {
function buildIndex() {
var baseURL = wrapper.getAttribute("data-url");
baseURL = baseURL.replace(/\/?$/, '/');
baseURL = baseURL.replace(/\/?$/, "/");
fetchJSON(baseURL + "index.json", function (data) {
var options = {
shouldSort: true,
@ -153,13 +156,19 @@ function executeQuery(term) {
if (results.length > 0) {
results.forEach(function (value, key) {
console.log(value.item.summary);
var html = value.item.summary;
var div = document.createElement("div");
div.innerHTML = html;
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 linkconfig = value.item.externalUrl? 'target="_blank" rel="noopener" href="'+value.item.externalUrl+'"' : 'href="'+value.item.permalink+'"';
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 linkconfig = value.item.externalUrl
? 'target="_blank" rel="noopener" href="' + value.item.externalUrl + '"'
: 'href="' + value.item.permalink + '"';
resultsHTML =
resultsHTML +
`<li class="mb-2">
@ -169,7 +178,7 @@ function executeQuery(term) {
<div class="-mb-1 text-lg font-bold">
${title}
</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>
<div class="ml-2 ltr:block rtl:hidden text-neutral-500">&rarr;</div>

View file

@ -1,22 +1,40 @@
function _getDefaultPackeryOptions() {
return {
percentPosition: true,
gutter: 5,
resize: true
};
return {
percentPosition: true,
gutter: 5,
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() {
$(window).on("load", function () {
let packeries = [];
let nodeGalleries = document.querySelectorAll(".gallery");
$(window).on("load", function () {
let packeries = [];
let nodeGalleries = document.querySelectorAll('.gallery');
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();
nodeGalleries.forEach((nodeGallery) => {
let packery = new Packery(nodeGallery, _getPackeryOptions(nodeGallery));
packeries.push(packery);
});
})();
console.groupEnd();
});
})();

View file

@ -1,50 +1,50 @@
function _toogleZenMode(zendModeButton) {
// Nodes selection
const body = document.querySelector('body');
const tocRight = document.querySelector('.toc-right');
const tocInside = document.querySelector('.toc-inside');
const articleContent = document.querySelector('.article-content');
const header = document.querySelector('#single_header');
const body = document.querySelector("body");
const footer = document.querySelector("footer");
const tocRight = document.querySelector(".toc-right");
const tocInside = document.querySelector(".toc-inside");
const articleContent = document.querySelector(".article-content");
const header = document.querySelector("#single_header");
// 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'
if (tocRight)
tocRight.classList.toggle('lg:block');
if (tocInside)
tocInside.classList.toggle('lg:hidden');
if (tocRight) tocRight.classList.toggle("lg:block");
if (tocInside) tocInside.classList.toggle("lg:hidden");
// Change width of article content
articleContent.classList.toggle('max-w-fit');
articleContent.classList.toggle('max-w-prose');
articleContent.classList.toggle("max-w-fit");
articleContent.classList.toggle("max-w-prose");
// Change width of article title
header.classList.toggle('max-w-full');
header.classList.toggle('max-w-prose');
// Change width of article title and footer
header.classList.toggle("max-w-full");
header.classList.toggle("max-w-prose");
footer.classList.toggle("max-w-full");
footer.classList.toggle("max-w-prose");
// Read i18n title from data-attributes
const titleI18nDisable = zendModeButton.getAttribute('data-title-i18n-disable');
const titleI18nEnable = zendModeButton.getAttribute('data-title-i18n-enable');
const titleI18nDisable = zendModeButton.getAttribute("data-title-i18n-disable");
const titleI18nEnable = zendModeButton.getAttribute("data-title-i18n-enable");
if (body.classList.contains('zen-mode-enable')) {
if (body.classList.contains("zen-mode-enable")) {
// Persist configuration
//localStorage.setItem('blowfish-zen-mode-enabled', 'true');
// Change title to enable
zendModeButton.setAttribute('title', titleI18nEnable)
zendModeButton.setAttribute("title", titleI18nEnable);
// Auto-scroll to title article
window.scrollTo(window.scrollX, header.getBoundingClientRect().top - 90);
} else {
//localStorage.setItem('blowfish-zen-mode-enabled', 'false');
zendModeButton.setAttribute('title', titleI18nDisable);
document.querySelector('body').scrollIntoView();
zendModeButton.setAttribute("title", titleI18nDisable);
document.querySelector("body").scrollIntoView();
}
}
function _registerZendModeButtonClick(zendModeButton) {
zendModeButton.addEventListener('click', function (event) {
zendModeButton.addEventListener("click", function (event) {
event.preventDefault();
// Toggle zen-mode
@ -55,9 +55,9 @@ function _registerZendModeButtonClick(zendModeButton) {
(function init() {
window.addEventListener("DOMContentLoaded", (event) => {
// 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) {
_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.hugoVersion]
extended = true
min = "0.87.0"
max = "0.147.1"
min = "0.137.0"
max = "0.148.0"

View file

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

View file

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

View file

@ -18,18 +18,22 @@ replyByEmail = false
# robots = ""
disableImageOptimization = false
disableImageOptimizationMD = false
disableTextInHeader = false
# backgroundImageWidth = 1200
# defaultBackgroundImage = "IMAGE.jpg" # used as default for background images
# 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
# smartTOC = true
# smartTOCHideUnfocusedChildren = true
fingerprintAlgorithm = "sha512" # Valid values are "sha512" (default), "sha384", "sha256"
giteaDefaultServer = "https://git.fsfe.org"
forgejoDefaultServer = "https://v8.next.forgejo.org"
forgejoDefaultServer = "https://v11.next.forgejo.org"
[header]
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
cardViewScreenWidth = false
layoutBackgroundBlur = false # only used when layout equals background
disableHeroImageFilter = false # only used when layout equals hero
[article]
showDate = true
@ -77,10 +82,11 @@ forgejoDefaultServer = "https://v8.next.forgejo.org"
showTableOfContents = false
# showRelatedContent = false
# relatedContentLimit = 3
showTaxonomies = false
showTaxonomies = false # use showTaxonomies OR showCategoryOnly, not both
showCategoryOnly = false # use showTaxonomies OR showCategoryOnly, not both
showAuthorsBadges = false
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
[list]
@ -164,4 +170,7 @@ forgejoDefaultServer = "https://v8.next.forgejo.org"
[rssnext]
# 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",
"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": {
"icon": "linkedin",
"title": "sharing.linkedin",
@ -48,5 +53,5 @@
"icon": "mastodon",
"title": "sharing.mastodon",
"url": "https://s2f.kytta.dev/?text=%[2]s %[1]s"
}
}
}

View file

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

View file

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

View file

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

View file

@ -58,6 +58,7 @@ search:
sharing:
email: "إرسال عبر البريد الإلكترونى"
facebook: "النشر على فيسبوك"
line: "شارك على لاين"
linkedin: "النشر على لينكدان"
pinterest: "النشر على بينترست"
reddit: "النشر على ريديت"
@ -67,4 +68,4 @@ shortcode:
recent_articles: "تم النشر مؤخرا"
recent:
show_more: "قراءة المزيد"
show_more: "قراءة المزيد"

View file

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

View file

@ -1,71 +1,72 @@
global:
language: "BN"
article:
anchor_label: "Anchor"
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: "This article is part of a series."
part: "Part"
this_article: "This Article"
related_articles: "Related"
author:
byline_title: "লেখক"
code:
copy: "কপি করুন"
copied: "কপি হয়ে গেছে"
error:
404_title: "পেজটি খুঁজে পাওয়া যায়নি :confused:"
404_error: "Error 404"
404_description: "মনে হচ্ছে, আপনার অনুরোধ করা পেজটি খুঁজে পাওয়া যায়নি।"
footer:
dark_appearance: "ডার্ক মোডে স্যুইচ করুন"
light_appearance: "লাইট মোডে স্যুইচ করুন"
powered_by: "{{ .Hugo }} এবং {{ .Blowfish }} দ্বারা চালিত"
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: "ফেসবুকে শেয়ার করুন"
linkedin: "লিংকডইনে শেয়ার করুন"
pinterest: "পিন্টারেস্টে পিন করুন"
reddit: "রেড্ডিটে জমা দিন"
twitter: "ট্যুইট করুন"
shortcode:
recent_articles: "সাম্প্রতিক"
recent:
show_more: "আরো দেখুন"
global:
language: "BN"
article:
anchor_label: "Anchor"
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: "This article is part of a series."
part: "Part"
this_article: "This Article"
related_articles: "Related"
author:
byline_title: "লেখক"
code:
copy: "কপি করুন"
copied: "কপি হয়ে গেছে"
error:
404_title: "পেজটি খুঁজে পাওয়া যায়নি :confused:"
404_error: "Error 404"
404_description: "মনে হচ্ছে, আপনার অনুরোধ করা পেজটি খুঁজে পাওয়া যায়নি।"
footer:
dark_appearance: "ডার্ক মোডে স্যুইচ করুন"
light_appearance: "লাইট মোডে স্যুইচ করুন"
powered_by: "{{ .Hugo }} এবং {{ .Blowfish }} দ্বারা চালিত"
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: "ফেসবুকে শেয়ার করুন"
line: "লাইনে শেয়ার করুন"
linkedin: "লিংকডইনে শেয়ার করুন"
pinterest: "পিন্টারেস্টে পিন করুন"
reddit: "রেড্ডিটে জমা দিন"
twitter: "ট্যুইট করুন"
shortcode:
recent_articles: "সাম্প্রতিক"
recent:
show_more: "আরো দেখুন"

View file

@ -62,6 +62,7 @@ search:
sharing:
email: "Enviar per correu electrònic"
facebook: "Compartir amb Facebook"
line: "Compartir amb LINE"
linkedin: "Compartir amb LinkedIn"
pinterest: "Compartir amb Pinterest"
reddit: "Publicar a Reddit"
@ -71,4 +72,4 @@ shortcode:
recent_articles: "Recent"
recent:
show_more: "Mostrar més"
show_more: "Mostrar més"

View file

@ -1,71 +1,72 @@
global:
language: "CS"
article:
anchor_label: "Kotva"
date: "{{ .Date }}"
date_updated: "Aktualizováno: {{ .Date }}"
draft: "Návrh"
edit_title: "Upravit"
reading_time:
one: "{{ .Count }} min"
other: "{{ .Count }} min"
reading_time_title: "Doba čtení"
table_of_contents: "Obsah"
word_count:
one: "{{ .Count }} slovo"
other: "{{ .Count }} slov"
views:
one: "{{ .Count }} zhlédnutí"
other: "{{ .Count }} zhlédnutí"
likes:
one: "{{ .Count }} líbí se mi"
other: "{{ .Count }} líbí se mi"
part_of_series: "Tento článek patří do série."
part: "Část"
this_article: "Tento článek"
related_articles: "Related"
author:
byline_title: "Autor"
code:
copy: "Kopírovat"
copied: "Zkopírováno"
error:
404_title: "Stránka nenalezena :confused:"
404_error: "Error 404"
404_description: "Zdá se, že stránka neexistuje."
footer:
dark_appearance: "Přepnout na tmavý režim"
light_appearance: "Přepnout na světlý režim"
powered_by: "Postaveno na technologiích {{ .Hugo }} &amp; {{ .Theme }}"
list:
externalurl_title: "Odkaz na externí stránku"
no_articles: "Tato sekce zatím neobsahuje žádné články."
nav:
scroll_to_top_title: "Nahoru"
skip_to_main: "Přeskočit na hlavní obsah"
search:
open_button_title: "Vyhledat (/)"
close_button_title: "Zavřít (Esc)"
input_placeholder: "Hledat"
sharing:
email: "Poslat emailem"
facebook: "Sdílet na Facebook"
linkedin: "Sdílet na LinkedIn"
pinterest: "Připnout na Pinterest"
reddit: "Přidat na Reddit"
twitter: "Tweet na Twitter"
shortcode:
recent_articles: "Nedávné"
recent:
show_more: "Zobrazit další"
global:
language: "CS"
article:
anchor_label: "Kotva"
date: "{{ .Date }}"
date_updated: "Aktualizováno: {{ .Date }}"
draft: "Návrh"
edit_title: "Upravit"
reading_time:
one: "{{ .Count }} min"
other: "{{ .Count }} min"
reading_time_title: "Doba čtení"
table_of_contents: "Obsah"
word_count:
one: "{{ .Count }} slovo"
other: "{{ .Count }} slov"
views:
one: "{{ .Count }} zhlédnutí"
other: "{{ .Count }} zhlédnutí"
likes:
one: "{{ .Count }} líbí se mi"
other: "{{ .Count }} líbí se mi"
part_of_series: "Tento článek patří do série."
part: "Část"
this_article: "Tento článek"
related_articles: "Related"
author:
byline_title: "Autor"
code:
copy: "Kopírovat"
copied: "Zkopírováno"
error:
404_title: "Stránka nenalezena :confused:"
404_error: "Error 404"
404_description: "Zdá se, že stránka neexistuje."
footer:
dark_appearance: "Přepnout na tmavý režim"
light_appearance: "Přepnout na světlý režim"
powered_by: "Postaveno na technologiích {{ .Hugo }} &amp; {{ .Theme }}"
list:
externalurl_title: "Odkaz na externí stránku"
no_articles: "Tato sekce zatím neobsahuje žádné články."
nav:
scroll_to_top_title: "Nahoru"
skip_to_main: "Přeskočit na hlavní obsah"
search:
open_button_title: "Vyhledat (/)"
close_button_title: "Zavřít (Esc)"
input_placeholder: "Hledat"
sharing:
email: "Poslat emailem"
facebook: "Sdílet na Facebook"
line: "Sdílejte na LINE"
linkedin: "Sdílet na LinkedIn"
pinterest: "Připnout na Pinterest"
reddit: "Přidat na Reddit"
twitter: "Tweet na Twitter"
shortcode:
recent_articles: "Nedávné"
recent:
show_more: "Zobrazit další"

View file

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

View file

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

View file

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

View file

@ -62,6 +62,7 @@ search:
sharing:
email: "Enviar vía email"
facebook: "Compartir en Facebook"
line: "Compartir en LINE"
linkedin: "Compartir en LinkedIn"
pinterest: "Pinear en Pinterest"
reddit: "Publicar en Reddit"
@ -71,4 +72,4 @@ shortcode:
recent_articles: "Reciente"
recent:
show_more: "Mostrar más"
show_more: "Mostrar más"

View file

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

View file

@ -53,6 +53,7 @@ search:
sharing:
email: "Lähetä sähköpostilla"
facebook: "Jaa Facebookissa"
line: "Jaa LINEssä"
linkedin: "Jaa LinkedInissä"
pinterest: "Kiinnitä Pinterestiin"
reddit: "Lähetä Reddittiin"
@ -62,4 +63,4 @@ shortcode:
recent_articles: "Viimeaikaiset"
recent:
show_more: "Näytä Lisää"
show_more: "Näytä Lisää"

View file

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

View file

@ -38,11 +38,11 @@ code:
error:
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."
footer:
dark_appearance: "Cambiar a modo oscuro"
dark_appearance: "Cambiar a modo escuro"
light_appearance: "Cambiar a modo claro"
powered_by: "Desenvolvida con {{ .Hugo }} &amp; {{ .Theme }}"
@ -62,10 +62,14 @@ search:
sharing:
email: "Enviar vía email"
facebook: "Compartir en Facebook"
line: "Compartir en LINE"
linkedin: "Compartir en LinkedIn"
pinterest: "Pinear en Pinterest"
reddit: "Publicar en Reddit"
twitter: "Tuitear en Twitter"
bluesky: "Publicar en Bluesky"
whatsapp: "Compartir vía WhatsApp"
telegram: "Compartir vía Telegram"
shortcode:
recent_articles: "Recente"

View file

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

View file

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

View file

@ -53,6 +53,7 @@ search:
sharing:
email: "Küldés emailben"
facebook: "Megosztás a Facebookon"
line: "Megosztás a LINE-on"
linkedin: "Megosztás a LinkedInen"
pinterest: "Megosztás a Pinteresten"
reddit: "Megosztás a Redditen"
@ -62,4 +63,4 @@ shortcode:
recent_articles: "Friss"
recent:
show_more: "Mutass Többet"
show_more: "Mutass Többet"

View file

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

View file

@ -53,6 +53,7 @@ search:
sharing:
email: "Invia tramite email"
facebook: "Condividi su Facebook"
line: "Condividi su LINE"
linkedin: "Condividi su LinkedIn"
pinterest: "Pinna su Pinterest"
reddit: "Invia a Reddit"
@ -62,4 +63,4 @@ shortcode:
recent_articles: "Recenti"
recent:
show_more: "Mostra di Più"
show_more: "Mostra di Più"

View file

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

View file

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

View file

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

View file

@ -36,7 +36,8 @@ code:
error:
404_title: "Strona nie znaleziona :confused:"
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:
dark_appearance: "Zmień na tryb ciemny"
@ -59,6 +60,7 @@ search:
sharing:
email: "Wyślij jako email"
facebook: "Udostępnij na Facebooku"
line: "Udostępnij na LINE"
linkedin: "Udostępnij na LinkedInie"
pinterest: "Przypnij na Pinterest"
reddit: "Prześlij na Reddita"
@ -68,4 +70,4 @@ shortcode:
recent_articles: "Ostatnie artykuły"
recent:
show_more: "Pokaż Więcej"
show_more: "Pokaż Więcej"

View file

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

View file

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

View file

@ -53,6 +53,7 @@ search:
sharing:
email: "Trimite pe email"
facebook: "Postează pe Facebook"
line: "Postează LINE"
linkedin: "Postează LinkedIn"
pinterest: "Pune pe Pinterest"
reddit: "Postează pe Reddit"
@ -62,4 +63,4 @@ shortcode:
recent_articles: "Cele mai noi"
recent:
show_more: "Afișați mai multe"
show_more: "Afișați mai multe"

View file

@ -59,6 +59,7 @@ search:
sharing:
email: "Отправить по электронной почте"
facebook: "Поделиться через Facebook"
line: "Поделиться через LINE"
linkedin: "Поделиться через LinkedIn"
pinterest: "Добавить в Pinterest"
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:
email: "Email ile gönder"
facebook: "Facebook'ta paylaş"
line: "LINE'da paylaş"
linkedin: "LinkedIn'te paylaş"
pinterest: "Pinterest'te pinle"
reddit: "Reddit'te gönder"
@ -62,4 +63,4 @@ shortcode:
icon_none: "Icon bulunamadı."
recent:
show_more: "Daha Fazla Göster"
show_more: "Daha Fazla Göster"

View file

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

View file

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

View file

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

View file

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

View file

@ -1,12 +1,10 @@
{{ $strAnchor := urlize .Anchor }}
{{ $replacedAnchor := replaceRE "%25" "" $strAnchor }}
{{ $anchor := anchorize .Anchor }}
<h{{ .Level }} class="relative group">{{ .Text | safeHTML }}
<div id="{{ .Anchor | safeURL | urlize }}" class="anchor"></div>
{{ if.Page.Params.showHeadingAnchors | default (.Page.Site.Params.article.showHeadingAnchors | default true) }}
<div id="{{ $anchor }}" class="anchor"></div>
{{ if .Page.Params.showHeadingAnchors | default (.Page.Site.Params.article.showHeadingAnchors | default true) }}
<span
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"
style="text-decoration-line: none !important;" href="#{{ $replacedAnchor | safeURL }}" aria-label="{{ i18n "article.anchor_label" }}">#</a>
<a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#{{ $anchor }}" aria-label="{{ i18n "article.anchor_label" }}">#</a>
</span>
{{ end }}
</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 }}
{{- $altText := .Text }}
{{- $caption := .Title }}
{{- if findRE "^https?" $url.Scheme }}
<figure>
<img class="my-0 rounded-md" loading="lazy" src="{{ $url.String }}" alt="{{ $altText }}" />
{{ with $caption }}<figcaption>{{ . | markdownify }}</figcaption>{{ end }}
</figure>
{{- 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 }}
{{- $isRemote := findRE "^https?" $url.Scheme }}
{{- $resource := "" }}
{{- if not $isRemote }}
{{- $resource = or ($.Page.Resources.GetMatch $url.String) (resources.Get $url.String) }}
{{- 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 }}"
{{- with .Title -}}
<a
href="{{ .Destination | safeURL }}"
{{- with .Title -}}
title="{{ . }}"
{{- end }}
{{- if or (strings.HasPrefix .Destination "http:") (strings.HasPrefix .Destination "https:") }} target="_blank"{{ end }}>
{{- .Text | safeHTML -}}
</a>
{{- end }}
{{- if or (strings.HasPrefix .Destination "http:") (strings.HasPrefix .Destination "https:") }}
target="_blank"
{{ end }}>
{{- .Text | safeHTML -}}
</a>
{{- /* Trim EOF */ -}}

View file

@ -1,42 +1,58 @@
<!DOCTYPE html>
<html lang="{{ with .Site.Params.isoCode | default (.Site.LanguageCode | default " en") }} {{- . -}} {{ end }}" dir="{{ if .Site.Params.rtl | default false -}}
<!doctype html>
<html
lang="{{ with .Site.Params.isoCode | default (.Site.LanguageCode | default " en") }}{{- . -}}{{ end }}"
dir="{{ if .Site.Params.rtl | default false -}}
rtl
{{- else -}}
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" }}">
{{- 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">
<div id="the-top" class="absolute flex self-center">
<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"
href="#main-content"><span
class="font-bold text-primary-600 ltr:pr-2 rtl:pl-2 dark:text-primary-400">&darr;</span>{{ i18n
"nav.skip_to_main" }}</a>
</div>
{{ $header := print "header/" .Site.Params.header.layout ".html" }}
{{ if templates.Exists ( printf "partials/%s" $header ) }}
{{ partial $header . }}
{{ else }}
{{ partial "header/basic.html" . }}
{{ end }}
<div class="relative flex flex-col grow">
<main id="main-content" class="grow">
{{ block "main" . }}{{ end }}
{{ 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" . -}}
<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">
<div id="the-top" class="absolute flex self-center">
<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"
href="#main-content"
><span class="font-bold text-primary-600 ltr:pr-2 rtl:pl-2 dark:text-primary-400">&darr;</span>{{ i18n
"nav.skip_to_main"
}}</a
>
</div>
{{ $header := print "header/" .Site.Params.header.layout ".html" }}
{{ if templates.Exists ( printf "partials/%s" $header ) }}
{{ partial $header . }}
{{ else }}
{{ partial "header/basic.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 }}
<div class="relative flex flex-col grow">
<main id="main-content" class="grow">
{{ block "main" . }}{{ end }}
{{ 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 }}
</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>

View file

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

View file

@ -1,108 +1,124 @@
{{ 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">
{{ if .Params.showBreadcrumbs | default (.Site.Params.article.showBreadcrumbs | default false) }}
{{ partial "breadcrumbs.html" . }}
{{ end }}
<h1 class="mt-0 text-4xl font-extrabold text-neutral-900 dark:text-neutral">
{{ .Title | emojify }}
</h1>
<div class="mt-1 mb-6 text-base text-neutral-500 dark:text-neutral-400 print:hidden">
{{ partial "article-meta/basic.html" (dict "context" . "scope" "single") }}
</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 "/") "" }}
<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 }}
{{ 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" . }}
<header id="single_header" class="mt-5 max-w-prose">
{{ if .Params.showBreadcrumbs | default (.Site.Params.article.showBreadcrumbs | default false) }}
{{ partial "breadcrumbs.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>
<h1 class="mt-0 text-4xl font-extrabold text-neutral-900 dark:text-neutral">
{{ .Title | emojify }}
</h1>
<div class="mt-1 mb-6 text-base text-neutral-500 dark:text-neutral-400 print:hidden">
{{ partial "article-meta/basic.html" (dict "context" . "scope" "single") }}
</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 }}
{{ 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">
{{ partial "series/series.html" . }}
<div class="article-content max-w-prose mb-20">
{{ .Content }}
{{ $defaultReplyByEmail := .Site.Params.replyByEmail }}
{{ $replyByEmail := default $defaultReplyByEmail .Params.replyByEmail }}
{{ if $replyByEmail }}
<strong class="block mt-8">
<a target="_blank"
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) "\"" "'" }}">
<a
target="_blank"
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
</a>
</strong>
{{ end }}
</div>
{{ if (.Params.showAuthorBottom | default ( .Site.Params.article.showAuthorBottom | default false)) }}
{{ if .Params.showAuthor | default (.Site.Params.article.showAuthor | default true) }}
@ -123,48 +139,48 @@
{{ end }}
{{ if or $taxonomyLink $showAuthor }}
<div class="mb-10"></div>
<div class="mb-10"></div>
{{ end }}
{{ end }}
{{ partial "series/series-closed.html" . }}
{{ partial "sharing-links.html" . }}
{{ partial "related.html" . }}
{{ partial "related.html" . }}
</div>
{{ $translations := .AllTranslations }}
{{ with .File }}
{{ $path := .Path }}
{{range $translations}}
{{ range $translations }}
{{ $lang := print "." .Lang ".md" }}
{{ $path = replace $path $lang ".md" }}
{{end}}
<script>
var oid = "views_{{ $path }}"
var oid_likes = "likes_{{ $path }}"
</script>
{{ $jsPage := resources.Get "js/page.js" }}
{{ $jsPage = $jsPage | resources.Minify | resources.Fingerprint "sha512" }}
<script type="text/javascript" src="{{ $jsPage.RelPermalink }}" integrity="{{ $jsPage.Data.Integrity }}"></script>
{{ end }}
{{ $jsPage := resources.Get "js/page.js" }}
{{ $jsPage = $jsPage | resources.Minify | resources.Fingerprint ($.Site.Params.fingerprintAlgorithm | default "sha512") }}
<script
type="text/javascript"
src="{{ $jsPage.RelPermalink }}"
integrity="{{ $jsPage.Data.Integrity }}"
data-oid="views_{{ $path }}"
data-oid-likes="likes_{{ $path }}"></script>
{{ end }}
</section>
<footer class="pt-8 max-w-prose print:hidden">
{{ partial "article-pagination.html" . }}
{{ if .Params.showComments | default (.Site.Params.article.showComments | default false) }}
{{ if templates.Exists "partials/comments.html" }}
<div class="pt-3">
<hr class="border-dotted border-neutral-300 dark:border-neutral-600" />
<div class="pt-3">
{{ partial "comments.html" . }}
</div>
</div>
{{ else }}
{{ warnf "[BLOWFISH] Comments are enabled for %s but no comments partial exists." .File.Path }}
{{ end }}
{{ end }}
</footer>
</article>
</section>
<footer class="pt-8 max-w-prose print:hidden">
{{ partial "article-pagination.html" . }}
{{ if .Params.showComments | default (.Site.Params.article.showComments | default false) }}
{{ if templates.Exists "partials/comments.html" }}
<div class="pt-3">
<hr class="border-dotted border-neutral-300 dark:border-neutral-600">
<div class="pt-3">
{{ partial "comments.html" . }}
</div>
</div>
{{ else }}
{{ warnf "[BLOWFISH] Comments are enabled for %s but no comments partial exists." .File.Path }}
{{ end }}
{{ end }}
</footer>
</article>
{{ end }}

View file

@ -1,131 +1,128 @@
{{ 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" }}
{{ 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 -}}
{{ $toc := and (.Params.showTableOfContents | default (.Site.Params.term.showTableOfContents | default false)) (in
.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>
{{ $toc := and (.Params.showTableOfContents | default (.Site.Params.term.showTableOfContents | default false)) (in
.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>
<section class="flex flex-col max-w-full mt-0 mb-5 prose dark:prose-invert lg:flex-row">
{{ if .Content }}
<div class="min-w-0 min-h-0 max-w-prose">
{{ .Content }}
</div>
<script>
var oid = "views_term_{{ .Data.Term }}"
var oid_likes = "likes_term_{{ .Data.Term }}"
</script>
{{ $jsPage := resources.Get "js/page.js" }}
{{ $jsPage = $jsPage | resources.Minify | resources.Fingerprint "sha512" }}
<script type="text/javascript" src="{{ $jsPage.RelPermalink }}" integrity="{{ $jsPage.Data.Integrity }}"></script>
<div class="min-w-0 min-h-0 max-w-prose">
{{ .Content }}
</div>
{{ $jsPage := resources.Get "js/page.js" }}
{{ $jsPage = $jsPage | resources.Minify | resources.Fingerprint (.Site.Params.fingerprintAlgorithm | default "sha512") }}
<script
type="text/javascript"
src="{{ $jsPage.RelPermalink }}"
integrity="{{ $jsPage.Data.Integrity }}"
data-oid="views_term_{{ .Data.Term }}"
data-oid-likes="likes_term_{{ .Data.Term }}"></script>
{{ end }}
</section>
{{ 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) }}
{{ $cardViewScreenWidth := .Site.Params.term.cardViewScreenWidth | default false }}
{{ $groupByYear := .Params.groupByYear | default ($.Site.Params.term.groupByYear | default false) }}
{{ if not $cardView }}
{{ 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 }}
{{ 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]" 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 class="mt-10 prose dark:prose-invert">
<p class="py-8 border-t">
<em>{{ i18n "term.no_articles" | emojify }}</em>
</p>
</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 }}
{{ partial "pagination.html" . }}
{{ end }}
{{ end }}

View file

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

View file

@ -1,5 +1,11 @@
{{ 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 }}
<script defer src="https://cdn.usefathom.com/script.js" data-site="{{ site.Params.fathomAnalytics.site }}"></script>
{{ end }}
<script
defer
src="https://cdn.usefathom.com/script.js"
data-site="{{ site.Params.fathomAnalytics.site }}"></script>
{{ end }}

View file

@ -1,8 +1,10 @@
<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>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '{{ site.Config.Services.GoogleAnalytics.ID }}');
</script>
</script>

View file

@ -1,12 +1,12 @@
{{ with site.Params.fathomAnalytics.site }}
{{ partial "analytics/fathom.html" }}
{{ partial "analytics/fathom.html" }}
{{ end }}
{{ with site.Config.Services.GoogleAnalytics.ID }}
{{ partial "analytics/ga.html" }}
{{ partial "analytics/ga.html" }}
{{ end }}
{{ with site.Params.umamiAnalytics.websiteid }}
{{ partial "analytics/umami.html" }}
{{ partial "analytics/umami.html" }}
{{ end }}
{{ with site.Params.selineAnalytics.token }}
{{ partial "analytics/seline.html" }}
{{ end }}
{{ partial "analytics/seline.html" }}
{{ 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 }}
<script type="text/javascript">
document.querySelector('script[data-id="seline-script"]')
.addEventListener('load', function () {
const type = document.head.querySelector('meta[property = "og:type"]').getAttribute('content');
let title = document.head.querySelector('meta[property = "og:title"]').getAttribute('content');
let url = document.head.querySelector('meta[property = "og:url"]').getAttribute('content');
<script type="text/javascript">
document.querySelector('script[data-id="seline-script"]').addEventListener("load", function () {
const type = document.head.querySelector('meta[property = "og:type"]').getAttribute("content");
let title = document.head.querySelector('meta[property = "og:title"]').getAttribute("content");
let url = document.head.querySelector('meta[property = "og:url"]').getAttribute("content");
seline.track("user:" + type + ':' + title, {
type: type,
title: title,
url: url
});
});
</script>
seline.track("user:" + type + ":" + title, {
type: type,
title: title,
url: url,
});
});
</script>
{{ end }}

View file

@ -1,23 +1,27 @@
{{/* prettier-ignore-start */}}
{{ if isset site.Params.umamiAnalytics "domain" }}
<script data-id="umami-script" async
src="https://{{ site.Params.umamiAnalytics.domain }}/{{ with site.Params.umamiAnalytics.scriptName }}{{ . }}{{ else }}script.js{{ end }}"
data-website-id="{{ site.Params.umamiAnalytics.websiteid }}"
{{ with site.Params.umamiAnalytics.dataDomains }}data-domains="{{ . }}"{{ end }}>
</script>
<script
data-id="umami-script"
async
src="https://{{ site.Params.umamiAnalytics.domain }}/{{ with site.Params.umamiAnalytics.scriptName }}{{ . }}{{ else }}script.js{{ end }}"
data-website-id="{{ site.Params.umamiAnalytics.websiteid }}"
{{ with site.Params.umamiAnalytics.dataDomains }}data-domains="{{ . }}"{{ end }}></script>
{{ else }}
<script data-id="umami-script" async src="https://analytics.umami.is/script.js"
data-website-id="{{ site.Params.umamiAnalytics.websiteid }}">
</script>
<script
data-id="umami-script"
async
src="https://analytics.umami.is/script.js"
data-website-id="{{ site.Params.umamiAnalytics.websiteid }}"></script>
{{ end }}
{{/* prettier-ignore-end */}}
{{ if .Site.Params.umamiAnalytics.enableTrackEvent | default true }}
<script type="text/javascript">
document.querySelector('script[data-id="umami-script"]')
.addEventListener('load', function () {
const type = document.head.querySelector('meta[property = "og:type"]').getAttribute('content');
let title = document.head.querySelector('meta[property = "og:title"]').getAttribute('content');
let url = document.head.querySelector('meta[property = "og:url"]').getAttribute('content');
umami.track(type + ':' + title, {'url': url});
<script type="text/javascript">
document.querySelector('script[data-id="umami-script"]').addEventListener("load", function () {
const type = document.head.querySelector('meta[property = "og:type"]').getAttribute("content");
let title = document.head.querySelector('meta[property = "og:title"]').getAttribute("content");
let url = document.head.querySelector('meta[property = "og:url"]').getAttribute("content");
umami.track(type + ":" + title, { url: url });
});
</script>
{{ end }}
</script>
{{ 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 -}}
{{ if and .Draft .Site.Params.article.showDraftLabel }}
{{ if and .Draft .Site.Params.article.showDraftLabel }}
<span class="absolute top-0 right-0 m-2">
{{ partial "badge.html" (i18n "article.draft" | emojify) }}
</span>
{{ end }}
{{ end }}
<div class="px-6 py-4">
{{ with .Params.externalUrl }}
<div class="px-6 py-4">
{{ with .Params.externalUrl }}
<div>
<div
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>
</div>
</div>
{{ else }}
<div class="font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral"
href="{{ .RelPermalink }}">{{ .Title | emojify }}</div>
{{ end }}
<div class="text-sm text-neutral-500 dark:text-neutral-400">
{{ partial "article-meta/basic.html" . }}
{{ else }}
<div
class="font-bold text-xl text-neutral-800 decoration-primary-500 hover:underline hover:underline-offset-2 dark:text-neutral"
href="{{ .RelPermalink }}">
{{ .Title | emojify }}
</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">
{{ .Summary | plainify }}
</div>
{{ end }}
</div>
<div class="px-6 pt-4 pb-2">
</div>
{{ end }}
</div>
</a>
<div class="px-6 pt-4 pb-2"></div>
</div>
</a>

View file

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

View file

@ -9,91 +9,117 @@
{{ end }}
{{ with $context }}
{{ $meta := newScratch }}
{{ $meta := newScratch }}
{{/* Gather partials for this context */}}
{{ if .Params.showDate | default (.Site.Params.article.showDate | default true) }}
{{ $meta.Add "partials" (slice (partial "meta/date.html" .Date)) }}
{{else if and (eq $scope "single") (.Params.showDateOnlyInArticle | default (.Site.Params.article.showDateOnlyInArticle | default false)) }}
{{ $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 }}
{{/* Gather partials for this context */}}
{{ $shouldShowDate := false }}
{{ if and (eq $scope "single") (.Params.showDateOnlyInArticle | default (.Site.Params.article.showDateOnlyInArticle | default false)) }}
{{ $shouldShowDate = true }}
{{ 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>
{{/* showDate has higher priority than showDateOnlyInArticle */}}
{{ if .Params.showDate | default (.Site.Params.article.showDate | default true) }}
{{ $shouldShowDate = true }}
{{ else }}
{{ $shouldShowDate = false }}
{{ 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 style="cursor: pointer;" onclick="window.open({{ $a.RelPermalink }},'_self');return false;">{{ $a.LinkTitle }}</div>
{{ if $shouldShowDate }}
{{ $meta.Add "partials" (slice (partial "meta/date.html" .Date)) }}
{{ 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 style="margin-top:0.5rem" class="mr-2" onclick="window.open({{ .RelPermalink }},'_self');return false;">
{{ partial "badge.html" .LinkTitle }}
</span>
{{ 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 }}
{{/* 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 }}
</div>
{{ end }}
{{ end }}

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