From a29ee38e0e2bb816b57e6d4f58aa8c14d6804dfe Mon Sep 17 00:00:00 2001 From: Joshua Seigler Date: Thu, 19 Jun 2025 15:54:29 -0400 Subject: [PATCH] add a TOC, more nutrition info stuff, update some styles and templates --- eleventy.config.js | 3 + package-lock.json | 383 ++++++++++++++++++ package.json | 1 + site/_includes/-header.njk | 2 +- site/_includes/about.njk | 19 +- site/_includes/base.njk | 4 +- site/_includes/collection.njk | 31 +- site/_includes/css/site.css | 54 ++- site/_includes/home.njk | 50 +-- site/_includes/post.njk | 12 +- site/pages/books.md | 3 +- site/pages/search.njk | 9 +- site/posts/2021-10-16-embracing-mysticism.md | 2 - .../2025-06-15-replacing-github-pages.md | 2 +- site/recipes/amish-egg-noodles.md | 9 +- site/recipes/creamy-chicken-orzo.md | 24 +- site/recipes/recipes.11tydata.js | 4 +- site/recipes/spanish-style-rice.md | 8 +- 18 files changed, 534 insertions(+), 86 deletions(-) diff --git a/eleventy.config.js b/eleventy.config.js index 2409495..55405ee 100644 --- a/eleventy.config.js +++ b/eleventy.config.js @@ -9,6 +9,7 @@ import prettier from "prettier"; import dayjs from "dayjs"; import utc from "dayjs/plugin/utc.js"; import clean from "eleventy-plugin-clean"; +import toc from "eleventy-plugin-toc"; import site from "./site/_data/site.js"; import { feedPlugin } from "@11ty/eleventy-plugin-rss"; import { execSync } from 'child_process'; @@ -139,6 +140,8 @@ export default (config) => { config.addPlugin(eleventyAutoCacheBuster); + config.addPlugin(toc); + config.on('eleventy.after', () => { execSync(`npx pagefind --site dist --glob \"**/*.html\"`, { encoding: 'utf-8' }); }); diff --git a/package-lock.json b/package-lock.json index f19c889..321f3a1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,6 +16,7 @@ "dayjs": "^1.11.11", "eleventy-auto-cache-buster": "^0.8.1", "eleventy-plugin-clean": "^2.0.1", + "eleventy-plugin-toc": "^1.1.5", "markdown-it-anchor": "^9.0.1", "markdown-it-link-attributes": "^4.0.1", "markdown-it-prism": "^3.0.0", @@ -861,6 +862,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" + }, "node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", @@ -883,6 +890,165 @@ "node": ">=8" } }, + "node_modules/cheerio": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.1.0.tgz", + "integrity": "sha512-+0hMx9eYhJvWbgpKV9hN7jg0JcwydpopZE4hgi+KvQtByZXPp04NiCWU0LzcAbP63abZckIHkTQaXVF52mX3xQ==", + "license": "MIT", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "encoding-sniffer": "^0.2.0", + "htmlparser2": "^10.0.0", + "parse5": "^7.3.0", + "parse5-htmlparser2-tree-adapter": "^7.1.0", + "parse5-parser-stream": "^7.1.2", + "undici": "^7.10.0", + "whatwg-mimetype": "^4.0.0" + }, + "engines": { + "node": ">=18.17" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cheerio-select/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/cheerio-select/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/cheerio-select/node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/cheerio/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/cheerio/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/cheerio/node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/cheerio/node_modules/htmlparser2": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz", + "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.1", + "entities": "^6.0.0" + } + }, + "node_modules/cheerio/node_modules/htmlparser2/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", @@ -961,6 +1127,77 @@ "node": ">= 8" } }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-select/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/css-select/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/css-select/node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, "node_modules/dayjs": { "version": "1.11.13", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", @@ -1127,6 +1364,15 @@ "@11ty/recursive-copy": "^3.0.0" } }, + "node_modules/eleventy-plugin-toc": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/eleventy-plugin-toc/-/eleventy-plugin-toc-1.1.5.tgz", + "integrity": "sha512-Fo5AZZSBH8CKvz0axJQA9nmnTFOflAMFrngaKER4rOz3C6oDwqxK8N+kNFepmIsieTPkrH+iREWLJ+/9j5JjUg==", + "license": "ISC", + "dependencies": { + "cheerio": "^1.0.0-rc.10" + } + }, "node_modules/email-addresses": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-5.0.0.tgz", @@ -1149,6 +1395,19 @@ "node": ">= 0.8" } }, + "node_modules/encoding-sniffer": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", + "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==", + "license": "MIT", + "dependencies": { + "iconv-lite": "^0.6.3", + "whatwg-encoding": "^3.1.1" + }, + "funding": { + "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" + } + }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -1627,6 +1886,18 @@ "node": ">= 0.8" } }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -2250,6 +2521,18 @@ "node": ">=0.10.0" } }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, "node_modules/nunjucks": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.4.tgz", @@ -2370,6 +2653,70 @@ "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==", "license": "MIT" }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", + "license": "MIT", + "dependencies": { + "domhandler": "^5.0.3", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/parse5-parser-stream": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", + "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", + "license": "MIT", + "dependencies": { + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -2659,6 +3006,12 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, "node_modules/section-matter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", @@ -3017,6 +3370,15 @@ "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", "license": "MIT" }, + "node_modules/undici": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.10.0.tgz", + "integrity": "sha512-u5otvFBOBZvmdjWLVW+5DAc9Nkq8f24g0O9oY7qw2JVIF1VocIFoyz9JFkuVOS2j41AufeO0xnlweJ2RLT8nGw==", + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", @@ -3048,6 +3410,27 @@ "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==", "license": "MIT" }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/package.json b/package.json index 1e34449..6f36b32 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "dayjs": "^1.11.11", "eleventy-auto-cache-buster": "^0.8.1", "eleventy-plugin-clean": "^2.0.1", + "eleventy-plugin-toc": "^1.1.5", "markdown-it-anchor": "^9.0.1", "markdown-it-link-attributes": "^4.0.1", "markdown-it-prism": "^3.0.0", diff --git a/site/_includes/-header.njk b/site/_includes/-header.njk index 5881337..fde7dbe 100644 --- a/site/_includes/-header.njk +++ b/site/_includes/-header.njk @@ -30,7 +30,7 @@ {%- if author -%} {{ author }} {%- endif -%} - {%- if date -%} + {%- if date and not omitMetadata -%} {{ date | formatDate("MMMM D, YYYY") }} {%- endif -%} diff --git a/site/_includes/about.njk b/site/_includes/about.njk index 99e80c7..82c7566 100644 --- a/site/_includes/about.njk +++ b/site/_includes/about.njk @@ -4,11 +4,14 @@ tags: timeline permalink: about/index.html title: About --- -{{ content | safe }} - -{% for item in collections.timeline | reverse %} - {% if item.data.title !== "About" and not item.data.draft %} -

{{ item.data.title | markdown | safe }}

-

{{ item.data.description | markdown | safe }}

- {% endif %} -{% endfor %} +
+ {{ content | safe }} +
+ {% for item in collections.timeline | reverse %} + {% if item.data.title !== "About" and not item.data.draft %} +

{{ item.data.title | markdown | safe }}

+

{{ item.data.description | markdown | safe }}

+ {% endif %} + {% endfor %} +
+
diff --git a/site/_includes/base.njk b/site/_includes/base.njk index 9bbcc0a..637e24a 100644 --- a/site/_includes/base.njk +++ b/site/_includes/base.njk @@ -34,9 +34,7 @@ title: Joshua's Homepage {% include "-header.njk" %} -
- {{ content | safe }} -
+ {{ content | safe }} {% include "-footer.njk" %} diff --git a/site/_includes/collection.njk b/site/_includes/collection.njk index 72bb74c..03082a7 100644 --- a/site/_includes/collection.njk +++ b/site/_includes/collection.njk @@ -3,16 +3,23 @@ layout: "base.njk" eleventyComputed: title: "{{ page.fileSlug | capitalize }}" --- -{{ content | safe }} -{% set tag = page.fileSlug %} -{% if collections[tag] %} -
- {% for item in collections[tag] | reverse %} -
- {{ item.data.title }} - {% if item.data.date %}{% endif %} -

{{ item.data.description }}

-
- {% endfor %} + +
+
+ {{ content | safe }}
-{% endif %} + {% set tag = page.fileSlug %} + {% if collections[tag] %} +
+ {% for item in collections[tag] | reverse %} +
+ {{ item.data.title }} + {% if item.data.date %} + + {% endif %} +

{{ item.data.description }}

+
+ {% endfor %} +
+ {% endif %} +
\ No newline at end of file diff --git a/site/_includes/css/site.css b/site/_includes/css/site.css index 9b223b0..1d2b165 100644 --- a/site/_includes/css/site.css +++ b/site/_includes/css/site.css @@ -1,6 +1,6 @@ :root { font-size: 16px; - font-size: clamp(14px, 9px + 0.5vw, 24px); + font-size: clamp(14px, 8px + 0.65vw, 24px); box-sizing: border-box; display: flex; flex-direction: column; @@ -103,6 +103,13 @@ body[data-theme="dark"] { color: var(--c-text-dark); } +mark { + background: var(--c-highlight); + color: inherit; + border-radius: 0.4rem; + box-shadow: 0 0 0.75em 0.25em var(--c-highlight); +} + *, :after, :before { @@ -150,12 +157,40 @@ main p img { max-width: 100%; } -section { +section:nth-child(n+2) { margin-top: 1rem; } -.footnote-item:target, -.footnote-ref :target { +header.toc { + display: block; + margin: 0; + font-size: var(--s-1); + ol { + display: inline; + margin: 0; + padding: 0; + } + li { + display: inline; + list-style: none; + &:nth-child(n+2):before { + content: ' · '; + } + } +} +.toc > ol::before { + content: "Contents: "; +} +.toc ol ol { + &::before { + content: "("; + } + &::after { + content: ")"; + } +} + +:target { animation: ping 1s ease-out; &, a { @@ -236,6 +271,10 @@ span.aside { } } +ul, ol { + padding-left: 1.5rem; +} + ul.collection { padding-left: 0; > li { @@ -438,7 +477,10 @@ h4 { position: relative; font-weight: 700; text-shadow: 0 0 0.5em var(--c-highlight); - margin-top: 1.5rem; + margin-top: 0; + main > &:nth-child(n+2) { + margin-top: 1.5rem; + } margin-bottom: 0.5rem; &:hover .header-anchor { opacity: 1; @@ -466,7 +508,6 @@ h1 { margin-bottom: 0; } .header-meta { - margin-bottom: calc(0.75 * var(--s3)); display: flex; flex-direction: row; flex-wrap: wrap; @@ -512,6 +553,7 @@ h1 { } main { + margin-top: calc(0.75 * var(--s3)); h1, h2, h3, diff --git a/site/_includes/home.njk b/site/_includes/home.njk index 0853c8d..92dac4e 100644 --- a/site/_includes/home.njk +++ b/site/_includes/home.njk @@ -1,27 +1,29 @@ --- layout: "base.njk" --- -{{ content | safe }} -{%- for name, collection in collections -%} - {%- if name in ["posts"] -%} -

{{name | capitalize }}

- - {%- endif -%} -{%- endfor -%} +
+ {{ content | safe }} + {%- for name, collection in collections -%} + {%- if name in ["posts"] -%} +

{{name | capitalize }}

+
    + {%- for item in collection | reverse -%} + {%- if (loop.index <= 5) -%} +
  • + {{item.data.title}} + {%- if item.data.date -%} + + {%- endif -%} +

    {{item.data.description | safe}}

    +
  • + {%- endif -%} + {%- if (loop.index == 6) -%} +
  • + More {{name}}… +
  • + {%- endif -%} + {%- endfor -%} +
+ {%- endif -%} + {%- endfor -%} +
diff --git a/site/_includes/post.njk b/site/_includes/post.njk index 6d6846e..2499306 100644 --- a/site/_includes/post.njk +++ b/site/_includes/post.njk @@ -1,11 +1,13 @@ --- layout: base.njk --- - -{{ content | safe }} - +{% if not omitTOC %} +
{{ content | toc('{"tags":["h2", "h3"],"wrapper":"span"}') | safe }}
+{% endif %} +
+ {{ content | safe }} +
-
-
\ No newline at end of file +
diff --git a/site/pages/books.md b/site/pages/books.md index 4367a0c..0cec01c 100644 --- a/site/pages/books.md +++ b/site/pages/books.md @@ -1,6 +1,7 @@ --- title: Books -layout: "base.njk" +layout: "post.njk" +omitTOC: true --- These books had a big influence on my thinking and taste. diff --git a/site/pages/search.njk b/site/pages/search.njk index 3745a59..9526156 100644 --- a/site/pages/search.njk +++ b/site/pages/search.njk @@ -3,7 +3,10 @@ layout: base.njk permalink: search/index.html title: Search --- -
- + +
+
+ -
+
+ diff --git a/site/posts/2021-10-16-embracing-mysticism.md b/site/posts/2021-10-16-embracing-mysticism.md index 979fa6a..0399f40 100644 --- a/site/posts/2021-10-16-embracing-mysticism.md +++ b/site/posts/2021-10-16-embracing-mysticism.md @@ -11,8 +11,6 @@ In an attempt to remedy my newfound illiteracy, I started exploring symbolism, w From there I started listening to the [Lord of Spirits](https://www.ancientfaith.com/podcasts/lordofspirits) podcast. I learned that commonplace, obvious understanding of existence as material _and spiritual_ has been mostly lost, displaced by modern confidence that the material world is the limit of reality, over which sovereign mankind rules. The ancient faith of Christianity, known now as "Eastern Orthodoxy", corresponds with reality, especially spiritual patterns of reality as we see more plainly every week, better than anything else I know. -## Additional thoughts - For a while I think my highest values have been freedom and truth. A desire to be solely responsible for myself, and a desire to understand myself and the world fully and accurately. But I didn't realize that my chief obstacle is hardly megacorps and governments: I am ruled by my own out-of-control desires: for comfort, pleasure, control, satisfaction, even self-mastery. In a paradise where my every whim was manifested, I would still be a slave to desire, consuming and _wanting_ more and more. Investigating eastern orthodoxy, this ancient Christianity, revealed a better path to freedom and truth: aiming higher. Every action and choice is in service to something. Instead of serving little tyrannical gods like comfort or pleasure, or potentially nobler gods like a country or even a "liberty movement", I will attempt to serve the Most High. diff --git a/site/posts/2025-06-15-replacing-github-pages.md b/site/posts/2025-06-15-replacing-github-pages.md index b411476..12525f7 100644 --- a/site/posts/2025-06-15-replacing-github-pages.md +++ b/site/posts/2025-06-15-replacing-github-pages.md @@ -6,7 +6,7 @@ description: How to self-host Forgejo and automatically serve your web build bra I recently started self-hosting [Forgejo](https://forgejo.org/), but I wanted something to replace GitHub pages, which has been very convenient for publishing little website projects. My server runs Debian, so I decided to use [webhook](https://github.com/adnanh/webhook) and [Caddy](https://caddyserver.com/). I'm very happy how it turned out. -## The result +## The objective When I push a `gh-pages` branch to any public repository on my Forgejo instance, the name of the repo is used as a domain name (e.g. [marklink.pages.seigler.net](https://marklink.pages.seigler.net/)) and the branch contents are automatically served with SSL. If I push updates to the branch, they are automatically published. If the branch or repo is deleted, the site is taken down. ## How to do it diff --git a/site/recipes/amish-egg-noodles.md b/site/recipes/amish-egg-noodles.md index 4184d55..798ccdf 100644 --- a/site/recipes/amish-egg-noodles.md +++ b/site/recipes/amish-egg-noodles.md @@ -20,13 +20,12 @@ date: 2025-06-13 - Top with the remaining 4 tablespoons of butter, parsley, and salt and pepper to taste. - Serve immediately or leave in the pan, covered, until ready to serve. These will stay warm for 20 more minutes or so with no problems. -## Notes: -We use 4.5 tsp of Better than Bullion with 28oz water, replacing the broth and bullion cube. +## Notes +We use 4.5 tsp of Better than Bouillon with 28oz water, replacing the broth and bouillon cube. We also usually brown some canned chicken and add it at the same time as the butter and seasonings. Original recipe from [bunsinmyoven](https://www.bunsinmyoven.com/amish-egg-noodles/) -## Nutrition Information: +## Nutrition Information Makes 6 servings. Each serving: -**Calories** 328kcal (16%), **Fat** 14g (22%), Saturated Fat 7g (44%), **Cholesterol** 77mg (26%), **Sodium** 758mg (33%), **Total Carbohydrates** 41g (14%), Fiber 2g (8%), Sugar 1g (1%), **Protein** 9g (18%), **Vitamin C** 10.3mg (12%), **Vitamin A** 400IU (8%), **Iron** 1.5mg (8%) -**Calcium** 41mg (4%), **Potassium** 266mg (8%) \ No newline at end of file +**Calories** 328kcal (16%), **Total Fat** 14g (22%), Saturated Fat 7g (44%), Cholesterol 77mg (26%), **Sodium** 758mg (33%), **Total Carbohydrates** 41g (14%), Dietary Fiber 2g (8%), Sugar 1g (1%), **Protein** 9g (18%), **Vitamin C** 10.3mg (12%), **Vitamin A** 400IU (8%), **Iron** 1.5mg (8%), **Calcium** 41mg (4%), **Potassium** 266mg (8%) \ No newline at end of file diff --git a/site/recipes/creamy-chicken-orzo.md b/site/recipes/creamy-chicken-orzo.md index 345cfd0..0691260 100644 --- a/site/recipes/creamy-chicken-orzo.md +++ b/site/recipes/creamy-chicken-orzo.md @@ -5,21 +5,21 @@ date: 2025-05-20 --- ## Ingredients -- 2 Boneless Skinless Chicken Breasts, cooked and diced -- 8 ounces Orzo Pasta -- 2 Celery Stalks, finely diced -- 2 Carrots, finely diced -- 1/2 Yellow Onion, finely diced -- 5 tablespoons Butter -- 2 tablespoons Olive Oil -- 2 cups Chicken Broth -- ½ cup Heavy Whipping Cream -- 1 teaspoon Chicken Bouillon Powder -- 1/3 cup All Purpose Flour +- 2 boneless skinless chicken breasts, cooked and diced +- 8 ounces Orzo pasta +- 2 celery stalks, finely diced +- 2 carrots, finely diced +- 1/2 yellow onion, finely diced +- 5 tablespoons butter +- 2 tablespoons olive oil +- 2 cups chicken broth +- ½ cup heavy whipping cream +- 1 teaspoon chicken bouillon powder +- 1/3 cup all purpose flour ## Instructions -1. Cook the orzo per the package instructions. +1. Cook the Orzo per the package instructions. 2. While that cooks, make a mirepoix: 1. In a large skillet over medium high heat add the butter and olive oil. 2. Once the butter is melted add in the diced onion, carrots and celery. diff --git a/site/recipes/recipes.11tydata.js b/site/recipes/recipes.11tydata.js index 3e313b6..ab40955 100644 --- a/site/recipes/recipes.11tydata.js +++ b/site/recipes/recipes.11tydata.js @@ -1,4 +1,6 @@ export default { - layout: "base.njk", + layout: "post.njk", tags: ["recipes"], + omitMetadata: true, + omitTOC: true, }; diff --git a/site/recipes/spanish-style-rice.md b/site/recipes/spanish-style-rice.md index b337502..4a04203 100644 --- a/site/recipes/spanish-style-rice.md +++ b/site/recipes/spanish-style-rice.md @@ -10,14 +10,14 @@ date: 2025-05-05 - 2 cups long grain white rice - 4 cups water - 8 oz tomato sauce -- 2 Tbsp chicken or vegetable bullion powder +- 2 Tbsp chicken or vegetable bouillon powder - 1.5 cups water ## Instructions 1. Add oil to a large frying pan over medium-high heat. 2. Add uncooked rice, stirring continually until rice is toasted. -3. Stir in 4 cups water, tomato sauce, and bullion. +3. Stir in 4 cups water, tomato sauce, and bouillon. 4. Return to boil and leave uncovered **10 minutes**. 5. Stir in 1.5 cups water and return to a boil. 6. Reduce heat to low and cover. Simmer **10 minutes**. @@ -28,3 +28,7 @@ Enjoy! ## Notes Original recipe from [dollartreedinners](https://www.tiktok.com/t/ZT2Qy1AtF/) + +## Nutrition Information + +Makes 4 servings. Each serving: **Calories** 441kcal (22%), **Total Fat** 11.3g (17%), Saturated Fat 1.9g (10%), Trans Fat 0.1g, Cholesterol 1mg (0%), **Sodium** 56mg (2%), **Total Carbohydrates** 76g (25%), Dietary Fiber 2g (6%), Sugars 0g, **Protein** 7g, **Vitamin A** (1%), **Vitamin C** (9%), **Calcium** (7%), **Iron** (24%) \ No newline at end of file