this repo has no description

ft: add OpenGraph image

+3 -1
config.toml
···
copyright = "copyright by <a href=\"https://hauleth.dev\" rel=me>hauleth</a>"
# Menu items to display. You define a url and the name of the menu item.
-
# NOTE: `$BASE_URL/` must be included in the url name.
main_menu = [
{url="https://plan.cat/~hauleth", name=".plan", rel="me"},
{url="https://twitter.com/hauleth", name="twitter", rel="me"},
···
read_other_posts = "read other posts"
favicon = "favicon-32x32.png"
+
og_preview_img = "favicon-256x256.png"
+
+
webmention = "https://webmention.io/hauleth.dev/webmention"
+7
sass/_main.scss
···
font-size: .95rem;
}
+
// code[data-lang]::before {
+
// content: attr(data-lang);
+
// text-align: right;
+
// position: absolute;
+
// top: 0;
+
// }
+
pre {
font-family: ui-monospace, monospace;
padding: 20px 10px;
static/favicon-256x256.png

This is a binary file and will not be displayed.

+441
static/syntax-theme.css
···
+
/*
+
* theme "Nord" generated by syntect
+
*/
+
+
.z-code {
+
color: #d8dee9;
+
background-color: #2e3440;
+
}
+
+
.z-comment, .z-punctuation.z-definition.z-comment {
+
color: #616e88;
+
}
+
.z-constant.z-numeric {
+
color: #b48ead;
+
}
+
.z-constant.z-language {
+
color: #81a1c1;
+
}
+
.z-constant.z-character.z-escape {
+
color: #ebcb8b;
+
}
+
.z-constant.z-other.z-placeholder {
+
color: #ebcb8b;
+
}
+
.z-constant.z-other {
+
color: #d8dee9;
+
}
+
.z-entity.z-name.z-class {
+
color: #8fbcbb;
+
}
+
.z-entity.z-name.z-struct {
+
color: #8fbcbb;
+
}
+
.z-entity.z-name.z-enum {
+
color: #8fbcbb;
+
}
+
.z-entity.z-name.z-union {
+
color: #8fbcbb;
+
}
+
.z-entity.z-name.z-trait {
+
color: #8fbcbb;
+
}
+
.z-entity.z-name.z-interface {
+
color: #8fbcbb;
+
font-weight: bold;
+
}
+
.z-entity.z-name.z-type {
+
color: #81a1c1;
+
}
+
.z-entity.z-other.z-inherited-class {
+
color: #8fbcbb;
+
}
+
.z-entity.z-name.z-function {
+
color: #88c0d0;
+
}
+
.z-entity.z-name.z-function.z-constructor {
+
color: #88c0d0;
+
}
+
.z-entity.z-name.z-function.z-destructor {
+
color: #88c0d0;
+
}
+
.z-entity.z-name.z-namespace {
+
color: #8fbcbb;
+
}
+
.z-entity.z-name.z-constant {
+
color: #81a1c1;
+
}
+
.z-entity.z-name.z-label {
+
color: #5e81ac;
+
}
+
.z-entity.z-name.z-section {
+
color: #88c0d0;
+
}
+
.z-entity.z-name.z-tag {
+
color: #81a1c1;
+
}
+
.z-entity.z-other.z-attribute-name {
+
color: #8fbcbb;
+
}
+
.z-invalid.z-illegal {
+
color: #d8dee9;
+
background-color: #bf616a;
+
}
+
.z-invalid.z-deprecated {
+
color: #d8dee9;
+
background-color: #ebcb8b;
+
}
+
.z-keyword.z-control {
+
color: #81a1c1;
+
}
+
.z-keyword.z-control.z-conditional {
+
color: #81a1c1;
+
}
+
.z-keyword.z-control.z-import {
+
color: #81a1c1;
+
}
+
.z-punctuation.z-definition.z-keyword {
+
color: #81a1c1;
+
}
+
.z-keyword.z-other {
+
color: #81a1c1;
+
}
+
.z-keyword.z-operator, .z-keyword.z-operator.z-assignment, .z-keyword.z-operator.z-arithmetic, .z-keyword.z-operator.z-bitwise, .z-keyword.z-operator.z-logical, .z-keyword.z-operator.z-word {
+
color: #81a1c1;
+
}
+
.z-markup.z-heading {
+
color: #88c0d0;
+
}
+
.z-markup.z-list.z-unnumbered, .z-markup.z-list.z-numbered {
+
color: #d8dee9;
+
}
+
.z-markup.z-bold {
+
font-weight: bold;
+
}
+
.z-markup.z-italic {
+
font-style: italic;
+
}
+
.z-markup.z-inserted {
+
color: #a3be8c;
+
}
+
.z-markup.z-deleted {
+
color: #bf616a;
+
}
+
.z-markup.z-changed {
+
color: #ebcb8b;
+
}
+
.z-markup.z-quote {
+
color: #616e88;
+
}
+
.z-markup.z-raw.z-inline, .z-markup.z-raw.z-block {
+
color: #8fbcbb;
+
}
+
.z-markup.z-other {
+
background-color: #eceff4;
+
}
+
.z-punctuation.z-separator, .z-punctuation.z-terminator {
+
color: #eceff4;
+
}
+
.z-punctuation.z-separator.z-continuation, .z-punctuation.z-accessor {
+
color: #81a1c1;
+
}
+
.z-punctuation.z-definition.z-tag {
+
color: #81a1c1;
+
}
+
.z-storage.z-type, .z-storage.z-modifier {
+
color: #81a1c1;
+
}
+
.z-string.z-quoted.z-single, .z-string.z-quoted.z-double, .z-string.z-quoted.z-triple, .z-string.z-quoted.z-other, .z-string.z-unquoted {
+
color: #a3be8c;
+
}
+
.z-punctuation.z-definition.z-string.z-begin, .z-punctuation.z-definition.z-string.z-end {
+
color: #a3be8c;
+
}
+
.z-string.z-regexp {
+
color: #ebcb8b;
+
}
+
.z-support.z-constant {
+
color: #8fbcbb;
+
}
+
.z-support.z-function {
+
color: #88c0d0;
+
}
+
.z-support.z-module {
+
color: #8fbcbb;
+
}
+
.z-support.z-type {
+
color: #8fbcbb;
+
}
+
.z-support.z-class {
+
color: #8fbcbb;
+
}
+
.z-text.z-html.z-basic, .z-text.z-xml {
+
color: #eceff4;
+
}
+
.z-variable.z-other, .z-variable.z-other.z-readwrite {
+
color: #d8dee9;
+
}
+
.z-punctuation.z-definition.z-variable {
+
color: #81a1c1;
+
}
+
.z-variable.z-other.z-constant {
+
color: #81a1c1;
+
}
+
.z-variable.z-language {
+
color: #81a1c1;
+
}
+
.z-variable.z-parameter {
+
color: #d8dee9;
+
}
+
.z-variable.z-other.z-member {
+
color: #d8dee9;
+
}
+
.z-variable.z-function {
+
color: #88c0d0;
+
}
+
.z-constant.z-numeric.z-line-number.z-find-in-files {
+
color: #d8dee9;
+
}
+
.z-constant.z-numeric.z-line-number.z-match.z-find-in-files {
+
color: #88c0d0;
+
}
+
.z-entity.z-name.z-filename.z-find-in-files {
+
color: #8fbcbb;
+
}
+
.z-text.z-find-in-files {
+
color: #d8dee9;
+
}
+
.z-source.z-c .z-keyword.z-control.z-import.z-include.z-c, .z-source.z-c .z-meta.z-preprocessor.z-c .z-keyword.z-control.z-import.z-c, .z-source.z-c++ .z-keyword.z-control.z-import.z-include.z-c++, .z-source.z-c++ .z-meta.z-preprocessor.z-c++ .z-keyword.z-control.z-import.z-c++ {
+
color: #5e81ac;
+
}
+
.z-source.z-c .z-keyword.z-operator.z-word.z-c, .z-source.z-c++ .z-keyword.z-operator.z-word.z-c++ {
+
color: #88c0d0;
+
font-style: italic;
+
}
+
.z-source.z-css .z-support.z-type.z-property-name.z-css, .z-source.z-sass .z-support.z-type.z-property-name.z-sass, .z-source.z-css .z-support.z-type.z-vendor-prefix.z-css {
+
color: #d8dee9;
+
}
+
.z-source.z-css .z-constant.z-other.z-color.z-rgb-value.z-css, .z-source.z-sass .z-constant.z-other.z-rgb-value.z-sass {
+
color: #b48ead;
+
}
+
.z-source.z-css .z-support.z-constant.z-color.z-w3c-special-color-keyword.z-css, .z-source.z-css .z-support.z-constant.z-property-value.z-css, .z-source.z-sass .z-support.z-constant.z-property-value.z-sass {
+
color: #81a1c1;
+
}
+
.z-source.z-css .z-entity.z-other.z-pseudo-class.z-css {
+
color: #8fbcbb;
+
}
+
.z-source.z-css .z-keyword.z-control.z-at-rule.z-media.z-css, .z-source.z-css .z-punctuation.z-definition.z-keyword.z-css, .z-source.z-sass .z-keyword.z-control.z-at-rule.z-sass {
+
color: #d08770;
+
}
+
.z-source.z-css .z-support.z-constant.z-color.z-w3c-standard-color-name.z-css {
+
color: #81a1c1;
+
font-style: italic;
+
}
+
.z-source.z-css .z-entity.z-other.z-attribute-name.z-id.z-css, .z-source.z-sass .z-entity.z-other.z-attribute-name.z-id.z-sass {
+
font-weight: bold;
+
}
+
.z-source.z-diff .z-meta.z-diff.z-range.z-context {
+
color: #8fbcbb;
+
}
+
.z-source.z-diff .z-meta.z-diff.z-header.z-from-file {
+
color: #8fbcbb;
+
}
+
.z-source.z-diff .z-punctuation.z-definition.z-from-file {
+
color: #8fbcbb;
+
}
+
.z-source.z-diff .z-punctuation.z-definition.z-separator {
+
color: #81a1c1;
+
}
+
.z-source.z-go .z-support.z-function.z-builtin.z-go {
+
font-style: italic;
+
}
+
.z-text.z-html.z-basic .z-constant.z-character.z-entity.z-html {
+
color: #ebcb8b;
+
}
+
.z-variable.z-annotation.z-java, .z-punctuation.z-definition.z-annotation.z-java {
+
color: #d08770;
+
}
+
.z-punctuation.z-accessor.z-dot.z-java {
+
color: #eceff4;
+
}
+
.z-support.z-other.z-package.z-java {
+
color: #8fbcbb;
+
}
+
.z-source.z-java .z-comment.z-block.z-documentation.z-javadoc .z-punctuation.z-definition.z-entity.z-html {
+
color: #81a1c1;
+
}
+
.z-source.z-java .z-entity.z-name.z-constant {
+
color: #d8dee9;
+
}
+
.z-source.z-java .z-keyword.z-other.z-documentation, .z-source.z-java .z-comment.z-block.z-documentation.z-javadoc .z-punctuation.z-definition.z-keyword.z-javadoc {
+
color: #8fbcbb;
+
}
+
.z-source.z-java .z-variable.z-parameter.z-type.z-java {
+
color: #8fbcbb;
+
}
+
.z-source.z-java .z-entity.z-other.z-inherited-class.z-java {
+
color: #8fbcbb;
+
font-weight: bold;
+
}
+
.z-source.z-java .z-keyword.z-declaration.z-implements.z-java {
+
color: #81a1c1;
+
}
+
.z-source.z-json .z-meta.z-structure.z-dictionary.z-json .z-meta.z-structure.z-dictionary.z-key.z-json .z-string.z-quoted.z-double.z-json, .z-source.z-json.z-sublime .z-meta.z-structure.z-dictionary.z-json .z-meta.z-structure.z-dictionary.z-key.z-json .z-string.z-quoted.z-double.z-json {
+
color: #8fbcbb;
+
}
+
.z-source.z-json .z-meta.z-structure.z-dictionary.z-json .z-punctuation.z-definition.z-string.z-begin.z-json, .z-source.z-json .z-meta.z-structure.z-dictionary.z-json .z-punctuation.z-definition.z-string.z-end.z-json, .z-source.z-json.z-sublime .z-meta.z-structure.z-dictionary.z-json .z-punctuation.z-definition.z-string.z-begin.z-json, .z-source.z-json.z-sublime .z-meta.z-structure.z-dictionary.z-json .z-punctuation.z-definition.z-string.z-end.z-json {
+
color: #eceff4;
+
}
+
.z-text.z-html.z-markdown .z-punctuation.z-definition.z-raw.z-code-fence.z-begin.z-markdown, .z-text.z-html.z-markdown .z-punctuation.z-definition.z-raw.z-code-fence.z-end.z-markdown, .z-text.z-html.z-markdown .z-markup.z-raw.z-code-fence.z-markdown .z-constant.z-other.z-language-name.z-markdown {
+
color: #8fbcbb;
+
}
+
.z-text.z-html.z-markdown .z-punctuation.z-definition.z-list_item.z-markdown, .z-text.z-html.z-markdown .z-markup.z-list.z-numbered.z-bullet.z-markdown {
+
color: #81a1c1;
+
}
+
.z-text.z-html.z-markdown .z-markup.z-quote.z-markdown .z-punctuation.z-definition.z-blockquote.z-markdown {
+
color: #8fbcbb;
+
}
+
.z-text.z-html.z-markdown .z-meta.z-link.z-inline.z-description.z-markdown, .z-text.z-html.z-markdown .z-meta.z-image.z-inline.z-description.z-markdown, .z-text.z-html.z-markdown .z-meta.z-link.z-reference.z-description.z-markdown, .z-text.z-html.z-markdown .z-constant.z-other.z-reference.z-link.z-markdown, .z-text.z-html.z-markdown .z-entity.z-name.z-reference.z-link.z-markdown {
+
color: #88c0d0;
+
}
+
.z-text.z-html.z-markdown .z-punctuation.z-definition.z-link.z-begin.z-markdown, .z-text.z-html.z-markdown .z-punctuation.z-definition.z-link.z-end.z-markdown, .z-text.z-html.z-markdown .z-punctuation.z-definition.z-image.z-begin.z-markdown, .z-text.z-html.z-markdown .z-punctuation.z-definition.z-image.z-end.z-markdown, .z-text.z-html.z-markdown .z-punctuation.z-definition.z-constant.z-begin.z-markdown, .z-text.z-html.z-markdown .z-punctuation.z-definition.z-constant.z-end.z-markdown {
+
color: #81a1c1;
+
}
+
.z-text.z-html.z-markdown .z-punctuation.z-separator.z-table-cell.z-markdown, .z-text.z-html.z-markdown .z-punctuation.z-section.z-table-header.z-markdown {
+
color: #81a1c1;
+
}
+
.z-text.z-html.z-markdown .z-meta.z-table.z-header.z-markdown {
+
color: #88c0d0;
+
}
+
.z-text.z-html.z-markdown .z-punctuation.z-definition.z-thematic-break.z-markdown {
+
color: #81a1c1;
+
font-weight: bold;
+
}
+
.z-embedding.z-php .z-text.z-html.z-basic .z-punctuation.z-section.z-embedded.z-begin.z-php, .z-embedding.z-php .z-text.z-html.z-basic .z-punctuation.z-section.z-embedded.z-end.z-php {
+
color: #5e81ac;
+
}
+
.z-embedding.z-php .z-text.z-html.z-basic .z-comment.z-block.z-documentation.z-phpdoc.z-php .z-keyword.z-other.z-phpdoc.z-php {
+
color: #8fbcbb;
+
}
+
.z-embedding.z-php .z-text.z-html.z-basic .z-support.z-other.z-namespace.z-php {
+
color: #8fbcbb;
+
}
+
.z-source.z-python .z-meta.z-annotation.z-python .z-meta.z-qualified-name.z-python .z-support.z-function.z-builtin.z-python, .z-source.z-python .z-punctuation.z-definition.z-annotation.z-python {
+
color: #d08770;
+
}
+
.z-support.z-function.z-builtin.z-python {
+
font-style: italic;
+
}
+
.z-source.z-python .z-support.z-type.z-exception.z-python {
+
color: #8fbcbb;
+
}
+
.z-source.z-python .z-support.z-type.z-python {
+
color: #81a1c1;
+
}
+
.z-source.z-sass .z-variable.z-parameter.z-sass {
+
color: #d8dee9;
+
font-weight: bold;
+
}
+
.z-source.z-ruby .z-support.z-function.z-builtin.z-ruby {
+
font-style: italic;
+
}
+
.z-source.z-shell .z-support.z-function.z-builtin.z-shell {
+
font-style: italic;
+
}
+
.z-text.z-xml .z-entity.z-name.z-tag.z-namespace {
+
color: #8fbcbb;
+
}
+
.z-text.z-xml .z-meta.z-tag.z-sgml.z-doctype.z-xml, .z-text.z-xml .z-meta.z-tag.z-preprocessor .z-entity.z-name.z-tag, .z-text.z-xml .z-meta.z-tag.z-preprocessor.z-xml .z-punctuation.z-definition.z-tag.z-begin.z-xml, .z-text.z-xml .z-meta.z-tag.z-preprocessor.z-xml .z-punctuation.z-definition.z-tag.z-end.z-xml, .z-text.z-xml .z-meta.z-tag.z-sgml.z-doctype.z-xml .z-punctuation.z-definition.z-tag.z-begin.z-xml, .z-text.z-xml .z-meta.z-tag.z-sgml.z-doctype.z-xml .z-punctuation.z-definition.z-tag.z-end.z-xml {
+
color: #5e81ac;
+
}
+
.z-text.z-xml .z-string.z-unquoted.z-cdata.z-xml .z-punctuation.z-definition.z-string.z-begin.z-xml, .z-text.z-xml .z-string.z-unquoted.z-cdata.z-xml .z-punctuation.z-definition.z-string.z-end.z-xml {
+
color: #d08770;
+
font-style: italic;
+
}
+
.z-source.z-yaml .z-entity.z-name.z-tag {
+
color: #8fbcbb;
+
}
+
.z-sublimelinter.z-mark.z-warning {
+
color: #ebcb8b;
+
}
+
.z-sublimelinter.z-mark.z-error {
+
color: #bf616a;
+
}
+
.z-markup.z-ignored.z-git_gutter {
+
color: #616e88;
+
}
+
.z-markup.z-untracked.z-git_gutter {
+
color: #88c0d0;
+
}
+
.z-markup.z-inserted.z-git_gutter {
+
color: #a3be8c;
+
}
+
.z-markup.z-changed.z-git_gutter {
+
color: #ebcb8b;
+
}
+
.z-markup.z-deleted.z-git_gutter {
+
color: #bf616a;
+
}
+
.z-source.z-js .z-tag.z-decorator.z-js .z-entity.z-name.z-tag.z-js, .z-source.z-js .z-tag.z-decorator.z-js .z-punctuation.z-definition.z-tag.z-js {
+
color: #d08770;
+
}
+
.z-source.z-js .z-string.z-quoted.z-js, .z-source.z-js .z-string.z-quoted.z-jsx, .z-source.z-js .z-meta.z-class.z-js .z-meta.z-class.z-property.z-js .z-string.z-interpolated.z-js, .z-source.z-js .z-string.z-interpolated.z-js, .z-source.z-js .z-string.z-template.z-js {
+
color: #a3be8c;
+
}
+
.z-source.z-js .z-variable.z-other.z-constant.z-js {
+
color: #d8dee9;
+
font-weight: bold;
+
}
+
.z-source.z-js .z-constant.z-other.z-object.z-key.z-js .z-string.z-unquoted.z-label.z-js, .z-source.z-js .z-variable.z-other.z-readwrite.z-js {
+
color: #d8dee9;
+
}
+
.z-source.z-js .z-meta.z-class.z-js .z-meta.z-class.z-property.z-js .z-variable.z-other.z-property.z-js {
+
color: #88c0d0;
+
}
+
.z-source.z-js .z-variable.z-other.z-property.z-static.z-js {
+
font-style: italic;
+
}
+
.z-source.z-js .z-variable.z-other.z-class.z-js {
+
color: #8fbcbb;
+
}
+
.z-source.z-js .z-string.z-interpolated.z-js .z-keyword.z-other.z-substitution.z-begin.z-js, .z-source.z-js .z-string.z-interpolated.z-js .z-keyword.z-other.z-substitution.z-end.z-js, .z-source.z-js .z-punctuation.z-definition.z-template-expression.z-begin.z-js, .z-source.z-js .z-punctuation.z-definition.z-template-expression.z-end.z-js {
+
color: #5e81ac;
+
}
+
.z-source.z-js .z-keyword.z-operator.z-spread.z-js {
+
color: #81a1c1;
+
}
+
.z-source.z-js .z-meta.z-export.z-js .z-variable.z-other.z-readwrite.z-js {
+
color: #8fbcbb;
+
}
+
.z-source.z-ts .z-meta.z-class.z-ts .z-entity.z-other.z-inherited-class.z-ts {
+
color: #8fbcbb;
+
font-weight: bold;
+
}
+
.z-source.z-ts .z-entity.z-name.z-type.z-class.z-ts, .z-source.z-ts .z-entity.z-name.z-type.z-enum.z-ts {
+
color: #8fbcbb;
+
}
+
.z-source.z-ts .z-entity.z-name.z-type.z-ts {
+
color: #8fbcbb;
+
}
+
.z-source.z-ts .z-support.z-type.z-primitive.z-ts {
+
color: #81a1c1;
+
}
+
.z-source.z-ts .z-meta.z-class.z-ts .z-meta.z-method.z-declaration.z-ts .z-meta.z-parameters.z-ts .z-meta.z-decorator.z-ts .z-variable.z-other.z-readwrite.z-ts, .z-source.z-ts .z-meta.z-class.z-ts .z-meta.z-method.z-declaration.z-ts .z-meta.z-parameters.z-ts .z-meta.z-decorator.z-ts .z-punctuation.z-decorator.z-ts {
+
color: #d08770;
+
}
+
.z-source.z-ts .z-punctuation.z-definition.z-template-expression.z-begin.z-ts, .z-source.z-ts .z-punctuation.z-definition.z-template-expression.z-end.z-ts {
+
color: #5e81ac;
+
}
+
.z-source.z-ts .z-string.z-template.z-ts {
+
color: #a3be8c;
+
}
+
.z-source.z-ts .z-support.z-function.z-math.z-ts {
+
font-style: italic;
+
}
+
.z-source.z-ts .z-variable.z-other.z-constant.z-property.z-ts, .z-source.z-ts .z-variable.z-other.z-enummember.z-ts, .z-source.z-ts .z-variable.z-other.z-constant.z-ts {
+
color: #d8dee9;
+
font-weight: bold;
+
}
+
.z-source.z-ts .z-comment.z-block.z-documentation.z-ts .z-storage.z-type.z-class.z-jsdoc {
+
color: #8fbcbb;
+
}
+3
templates/index.html
···
{%- if config.generate_feed -%}
<link rel="alternate" type="application/atom+xml" title="{{ config.title }} Feed" href="{{ get_url(path=config.feed_filename) | safe}}">
{%- endif -%}
+
{%- if config.extra.webmention -%}
+
<link rel="webmention" href="{{ config.extra.webmention }}" >
+
{%- endif -%}
{% endblock %}
{% block copyright %}
+9
templates/page.html
···
(<a href="https://lists.sr.ht/~hauleth/blog">archive</a>).</p>
</div>
{%- endif -%}
+
+
<div class="webmentions">
+
{%- set webmentions = load_data(url="https://webmention.io/api/mentions.jf2?target=" ~ page.permalink, format="json") -%}
+
{%- for mention in webmentions.children -%}
+
Foo
+
{%- else -%}
+
No webmentions yet, you can be first.
+
{%- endfor -%}
+
</div>
</article>
{%- endblock main -%}