From c61fd69f66a217e832585da2dd938605e7a3803d Mon Sep 17 00:00:00 2001 From: Cameron Higby-Naquin Date: Mon, 25 Dec 2023 19:04:42 -0500 Subject: [PATCH 01/30] Initial enwound setup --- .eleventy.js | 5 + .node-version | 1 + package-lock.json | 869 ++++++++++++++++++++++++++++++- package.json | 10 +- src/_includes/content.macros.njk | 25 + src/_includes/rime.njk | 14 + src/_includes/util.macros.njk | 10 + src/enwound2023.njk | 22 + src/plugins/utils.js | 10 + src/scss/rime.scss | 37 ++ src/scss/vendor/_remedy.scss | 1 + 11 files changed, 996 insertions(+), 8 deletions(-) create mode 100644 .node-version create mode 100644 src/_includes/content.macros.njk create mode 100644 src/_includes/rime.njk create mode 100644 src/_includes/util.macros.njk create mode 100644 src/enwound2023.njk create mode 100644 src/plugins/utils.js create mode 100644 src/scss/rime.scss create mode 100644 src/scss/vendor/_remedy.scss diff --git a/.eleventy.js b/.eleventy.js index c538979..49aec41 100644 --- a/.eleventy.js +++ b/.eleventy.js @@ -1,6 +1,8 @@ const { minify } = require('terser'); const CleanCSS = require("clean-css"); +const configUtils = require('./src/plugins/utils'); + module.exports = function(eleventyConfig) { // Set custom directories for input, output, includes, and data eleventyConfig.addNunjucksAsyncFilter("jsmin", async function ( code, @@ -19,6 +21,9 @@ module.exports = function(eleventyConfig) { // Set custom directories for input return new CleanCSS({}).minify(code).styles; }); + // plugins + eleventyConfig.addPlugin(configUtils); + // separate projects included fully eleventyConfig.addPassthroughCopy("src/darken"); eleventyConfig.addPassthroughCopy("src/offsetCipher"); diff --git a/.node-version b/.node-version new file mode 100644 index 0000000..d5a1596 --- /dev/null +++ b/.node-version @@ -0,0 +1 @@ +20.10.0 diff --git a/package-lock.json b/package-lock.json index 62377b4..f1fc47a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,9 @@ "devDependencies": { "@11ty/eleventy": "^2.0.1", "clean-css": "^5.3.0", + "cssremedy": "^0.1.0-beta.2", + "npm-run-all2": "^6.1.1", + "sass": "^1.69.5", "terser": "^5.12.1" } }, @@ -153,15 +156,184 @@ "url": "https://opencollective.com/11ty" } }, + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/parser": { "version": "7.17.8", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz", @@ -333,6 +505,12 @@ "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", "dev": true }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true + }, "node_modules/a-sync-waterfall": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", @@ -672,6 +850,12 @@ "node": ">= 8" } }, + "node_modules/cssremedy": { + "version": "0.1.0-beta.2", + "resolved": "https://registry.npmjs.org/cssremedy/-/cssremedy-0.1.0-beta.2.tgz", + "integrity": "sha512-6mpPQzoUQHY7fiAxWCQDgPz73j5ugz2LqU62BLohUsxYurYLdTHQc+ilPm4i52wU2SxzPTrcRMIdniE2zGfjOA==", + "dev": true + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -834,6 +1018,15 @@ "errno": "cli.js" } }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -1144,6 +1337,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hosted-git-info": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, "node_modules/htmlparser2": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", @@ -1172,6 +1377,12 @@ "node": ">= 0.10" } }, + "node_modules/immutable": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", + "dev": true + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1212,6 +1423,12 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -1362,6 +1579,12 @@ "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=", "dev": true }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, "node_modules/js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", @@ -1375,6 +1598,15 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/jstransformer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", @@ -1412,6 +1644,15 @@ "node": ">=6" } }, + "node_modules/lines-and-columns": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, "node_modules/linkify-it": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", @@ -1462,6 +1703,15 @@ "integrity": "sha1-3bG7s+8HRYwBd7oH3hRCLLAz/5s=", "dev": true }, + "node_modules/lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, "node_modules/luxon": { "version": "3.4.4", "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.4.tgz", @@ -1544,6 +1794,15 @@ "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", "dev": true }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -1675,6 +1934,21 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, + "node_modules/normalize-package-data": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", + "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", + "dev": true, + "dependencies": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -1684,6 +1958,67 @@ "node": ">=0.10.0" } }, + "node_modules/npm-run-all2": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-run-all2/-/npm-run-all2-6.1.1.tgz", + "integrity": "sha512-lWLbkPZ5BSdXtN8lR+0rc8caKoPdymycpZksyDEC9MOBvfdwTXZ0uVhb7bMcGeXv2/BKtfQuo6Zn3zfc8rxNXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.2.1", + "cross-spawn": "^7.0.3", + "memorystream": "^0.3.1", + "minimatch": "^9.0.0", + "pidtree": "^0.6.0", + "read-pkg": "^8.0.0", + "shell-quote": "^1.7.3" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "npm-run-all2": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0", + "npm": ">= 8" + } + }, + "node_modules/npm-run-all2/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm-run-all2/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm-run-all2/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/nunjucks": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.4.tgz", @@ -1739,6 +2074,37 @@ "wrappy": "1" } }, + "node_modules/parse-json": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", + "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.21.4", + "error-ex": "^1.3.2", + "json-parse-even-better-errors": "^3.0.0", + "lines-and-columns": "^2.0.3", + "type-fest": "^3.8.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-json/node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/parse-srcset": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", @@ -1796,6 +2162,18 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -2034,6 +2412,24 @@ } ] }, + "node_modules/read-pkg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", + "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^6.0.0", + "parse-json": "^7.0.0", + "type-fest": "^4.2.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -2125,6 +2521,23 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/sass": { + "version": "1.69.5", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz", + "integrity": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/section-matter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", @@ -2190,6 +2603,15 @@ "node": ">=8" } }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", @@ -2217,6 +2639,15 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -2227,6 +2658,38 @@ "source-map": "^0.6.0" } }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", + "dev": true + }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -2349,6 +2812,18 @@ "integrity": "sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ=", "dev": true }, + "node_modules/type-fest": { + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.8.3.tgz", + "integrity": "sha512-//BaTm14Q/gHBn09xlnKNqfI8t6bmdzx2DXYfPBNofN0WUybCEUDcbCWcTa0oF09lzLjZgPphXAsvRiMK0V6Bw==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/uc.micro": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", @@ -2377,6 +2852,16 @@ "node": ">= 0.8" } }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, "node_modules/void-elements": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", @@ -2551,12 +3036,149 @@ "integrity": "sha512-Mqt6im1xpb1Ykn3nbcCovWXK3ggywRJa+IXIdoz4wIIK+cvozADH63lexcuPpGS/gJ6/m2JxyyXDyupkMr5DHw==", "dev": true }, + "@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true }, + "@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "@babel/parser": { "version": "7.17.8", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz", @@ -2688,6 +3310,12 @@ "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", "dev": true }, + "@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true + }, "a-sync-waterfall": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", @@ -2947,6 +3575,12 @@ "which": "^2.0.1" } }, + "cssremedy": { + "version": "0.1.0-beta.2", + "resolved": "https://registry.npmjs.org/cssremedy/-/cssremedy-0.1.0-beta.2.tgz", + "integrity": "sha512-6mpPQzoUQHY7fiAxWCQDgPz73j5ugz2LqU62BLohUsxYurYLdTHQc+ilPm4i52wU2SxzPTrcRMIdniE2zGfjOA==", + "dev": true + }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -3055,6 +3689,15 @@ "prr": "~1.0.1" } }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -3293,6 +3936,15 @@ "has-symbols": "^1.0.2" } }, + "hosted-git-info": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "dev": true, + "requires": { + "lru-cache": "^10.0.1" + } + }, "htmlparser2": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", @@ -3311,6 +3963,12 @@ "integrity": "sha512-TScO04soylRN9i/QdOdgZyhydXg9z6XdaGzEyOgDKycePeDeTT4KvigjBcI+tgfTlieLWauGORMq5F1eIDa+1w==", "dev": true }, + "immutable": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -3343,6 +4001,12 @@ "is-decimal": "^1.0.0" } }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -3456,6 +4120,12 @@ "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=", "dev": true }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, "js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", @@ -3466,6 +4136,12 @@ "esprima": "^4.0.0" } }, + "json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "dev": true + }, "jstransformer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", @@ -3494,6 +4170,12 @@ "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", "dev": true }, + "lines-and-columns": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", + "dev": true + }, "linkify-it": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", @@ -3532,6 +4214,12 @@ "integrity": "sha1-3bG7s+8HRYwBd7oH3hRCLLAz/5s=", "dev": true }, + "lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "dev": true + }, "luxon": { "version": "3.4.4", "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.4.tgz", @@ -3600,6 +4288,12 @@ "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", "dev": true }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true + }, "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -3698,12 +4392,65 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, + "normalize-package-data": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", + "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", + "dev": true, + "requires": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + } + }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, + "npm-run-all2": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-run-all2/-/npm-run-all2-6.1.1.tgz", + "integrity": "sha512-lWLbkPZ5BSdXtN8lR+0rc8caKoPdymycpZksyDEC9MOBvfdwTXZ0uVhb7bMcGeXv2/BKtfQuo6Zn3zfc8rxNXA==", + "dev": true, + "requires": { + "ansi-styles": "^6.2.1", + "cross-spawn": "^7.0.3", + "memorystream": "^0.3.1", + "minimatch": "^9.0.0", + "pidtree": "^0.6.0", + "read-pkg": "^8.0.0", + "shell-quote": "^1.7.3" + }, + "dependencies": { + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, "nunjucks": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.4.tgz", @@ -3739,6 +4486,27 @@ "wrappy": "1" } }, + "parse-json": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", + "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.21.4", + "error-ex": "^1.3.2", + "json-parse-even-better-errors": "^3.0.0", + "lines-and-columns": "^2.0.3", + "type-fest": "^3.8.0" + }, + "dependencies": { + "type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true + } + } + }, "parse-srcset": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", @@ -3781,6 +4549,12 @@ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, + "pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true + }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -3990,6 +4764,18 @@ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, + "read-pkg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", + "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^6.0.0", + "parse-json": "^7.0.0", + "type-fest": "^4.2.0" + } + }, "readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -4051,6 +4837,17 @@ "queue-microtask": "^1.2.2" } }, + "sass": { + "version": "1.69.5", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz", + "integrity": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==", + "dev": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, "section-matter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", @@ -4100,6 +4897,12 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, + "shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true + }, "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", @@ -4118,6 +4921,12 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, "source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -4128,6 +4937,38 @@ "source-map": "^0.6.0" } }, + "spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", + "dev": true + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -4216,6 +5057,12 @@ "integrity": "sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ=", "dev": true }, + "type-fest": { + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.8.3.tgz", + "integrity": "sha512-//BaTm14Q/gHBn09xlnKNqfI8t6bmdzx2DXYfPBNofN0WUybCEUDcbCWcTa0oF09lzLjZgPphXAsvRiMK0V6Bw==", + "dev": true + }, "uc.micro": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", @@ -4235,6 +5082,16 @@ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, "void-elements": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", diff --git a/package.json b/package.json index e93e21b..78802b6 100644 --- a/package.json +++ b/package.json @@ -6,8 +6,11 @@ "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "cc": "node b.js", - "start": "npx @11ty/eleventy --serve", - "build": "npx @11ty/eleventy" + "eleventy:serve": "npx @11ty/eleventy --serve", + "eleventy": "npx @11ty/eleventy", + "sass": "sass src/scss:docs/css", + "watch:sass": "sass --watch src/scss:docs/css", + "serve": "npm-run-all -p sass eleventy:serve watch:*" }, "repository": { "type": "git", @@ -22,6 +25,9 @@ "devDependencies": { "@11ty/eleventy": "^2.0.1", "clean-css": "^5.3.0", + "cssremedy": "^0.1.0-beta.2", + "npm-run-all2": "^6.1.1", + "sass": "^1.69.5", "terser": "^5.12.1" }, "dependencies": { diff --git a/src/_includes/content.macros.njk b/src/_includes/content.macros.njk new file mode 100644 index 0000000..bcd303b --- /dev/null +++ b/src/_includes/content.macros.njk @@ -0,0 +1,25 @@ +{% import "util.macros.njk" as util %} + +{% macro iframe( + src, + title, + width=none, + height=none, + span=none +) %} + {%- set width = width or 560 -%} + {%- set height = height or 315 -%} + {%- set style = { + '--ratio': [width, height] | join('/'), + '--span': span + } | styles -%} + {%- set attrs = { + 'src': src, + 'title': title, + 'height': height, + 'width': width, + 'frameborder': '0', + 'style': style + } -%} + +{% endmacro %} diff --git a/src/_includes/rime.njk b/src/_includes/rime.njk new file mode 100644 index 0000000..bc7ea40 --- /dev/null +++ b/src/_includes/rime.njk @@ -0,0 +1,14 @@ + + + + + + {{ title }} + + + +
+ {% block main %}{{ content | safe }}{% endblock %} +
+ + diff --git a/src/_includes/util.macros.njk b/src/_includes/util.macros.njk new file mode 100644 index 0000000..2ddbd85 --- /dev/null +++ b/src/_includes/util.macros.njk @@ -0,0 +1,10 @@ +{# Attributes #} +{% macro attr_if(name, value=none) %} + {%- if value -%} + {{ name }}="{{ value | string }}" + {%- endif -%} +{% endmacro %} + +{% macro as_attrs(attrs) %} + {%- for name, value in attrs %} {{ attr_if(name, value) }}{%- endfor -%} +{% endmacro %} diff --git a/src/enwound2023.njk b/src/enwound2023.njk new file mode 100644 index 0000000..bc4fbbc --- /dev/null +++ b/src/enwound2023.njk @@ -0,0 +1,22 @@ +--- +title: Enwound 2023 +layout: rime +hoagies: + src: https://bandcamp.com/EmbeddedPlayer/album=203876381/size=small/bgcol=ffffff/linkcol=2ebd35/transparent=true/ + title: hoagies +--- +
+

+ Ruins
Crumbling remnants of decades of social-media poisoning +

+
+ +{% import "content.macros.njk" as content %} +{{ content.iframe( + src=hoagies.src, + title=hoagies.title, + width=509, + height=42 +)}} + + diff --git a/src/plugins/utils.js b/src/plugins/utils.js new file mode 100644 index 0000000..aaed1a2 --- /dev/null +++ b/src/plugins/utils.js @@ -0,0 +1,10 @@ +'use strict'; + +const styles = (obj) => { + return Object.entries(obj).reduce((acc, [key, value]) => value ? `${key}:${value};${acc}` : acc, ""); +}; + +module.exports = function(eleventyConfig) { + + eleventyConfig.addFilter('styles', styles); +}; diff --git a/src/scss/rime.scss b/src/scss/rime.scss new file mode 100644 index 0000000..4e8ac4a --- /dev/null +++ b/src/scss/rime.scss @@ -0,0 +1,37 @@ +@forward './vendor/remedy'; + +body { + color: mediumvioletred; + background-color: #ddd; +} + +.breakout { + --gap: clamp(1rem, 6vw, 3rem); + --full: minmax(var(--gap), 1fr); + --content: min(50ch, 100% - var(--gap) * 2); + --popout: minmax(0, 2rem); + --feature: minmax(0, 5rem); + + display: grid; + grid-template-columns: + [full-start] var(--full) + [feature-start] var(--feature) + [popout-start] var(--popout) + [content-start] var(--content) [content-end] + var(--popout) [popout-end] + var(--feature) [feature-end] + var(--full) [full-end]; +} + +.breakout > * { + grid-column: content; +} +.popout { + grid-column: popout; +} +.feature { + grid-column: feature; +} +.full { + grid-column: full; +} diff --git a/src/scss/vendor/_remedy.scss b/src/scss/vendor/_remedy.scss new file mode 100644 index 0000000..a5ce476 --- /dev/null +++ b/src/scss/vendor/_remedy.scss @@ -0,0 +1 @@ +@forward '../../../node_modules/cssremedy/css/remedy.css'; From 56df83cec6d91818b34691fe7a3e0e420936665b Mon Sep 17 00:00:00 2001 From: Cameron Higby-Naquin Date: Tue, 26 Dec 2023 15:51:41 -0500 Subject: [PATCH 02/30] Iterate on Rime layout, rename enwound -> entwined --- src/_includes/rime.njk | 10 +++++++-- src/entwined2023.njk | 18 ++++++++++++++++ src/enwound2023.njk | 22 ------------------- src/scss/base/_index.scss | 2 ++ src/scss/base/_root.scss | 4 ++++ src/scss/layout/_content-grid.scss | 31 +++++++++++++++++++++++++++ src/scss/layout/_index.scss | 1 + src/scss/rime.scss | 34 ++---------------------------- 8 files changed, 66 insertions(+), 56 deletions(-) create mode 100644 src/entwined2023.njk delete mode 100644 src/enwound2023.njk create mode 100644 src/scss/base/_index.scss create mode 100644 src/scss/base/_root.scss create mode 100644 src/scss/layout/_content-grid.scss create mode 100644 src/scss/layout/_index.scss diff --git a/src/_includes/rime.njk b/src/_includes/rime.njk index bc7ea40..6e8bca7 100644 --- a/src/_includes/rime.njk +++ b/src/_includes/rime.njk @@ -1,3 +1,4 @@ +{%- import 'util.macros.njk' as util -%} @@ -7,8 +8,13 @@ -
- {% block main %}{{ content | safe }}{% endblock %} +
+ {% block main %} + + {{ content | safe }} + {% endblock %}
diff --git a/src/entwined2023.njk b/src/entwined2023.njk new file mode 100644 index 0000000..ec1817f --- /dev/null +++ b/src/entwined2023.njk @@ -0,0 +1,18 @@ +--- +title: Entwined 2023 +layout: rime +attrs: + main: + class: content-grid + +hoagies: + src: https://bandcamp.com/EmbeddedPlayer/album=203876381/size=small/bgcol=ffffff/linkcol=2ebd35/transparent=true/ + title: hoagies +--- +{% import "content.macros.njk" as content %} +{{ content.iframe( + src=hoagies.src, + title=hoagies.title, + width=509, + height=42 +)}} diff --git a/src/enwound2023.njk b/src/enwound2023.njk deleted file mode 100644 index bc4fbbc..0000000 --- a/src/enwound2023.njk +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Enwound 2023 -layout: rime -hoagies: - src: https://bandcamp.com/EmbeddedPlayer/album=203876381/size=small/bgcol=ffffff/linkcol=2ebd35/transparent=true/ - title: hoagies ---- -
-

- Ruins
Crumbling remnants of decades of social-media poisoning -

-
- -{% import "content.macros.njk" as content %} -{{ content.iframe( - src=hoagies.src, - title=hoagies.title, - width=509, - height=42 -)}} - - diff --git a/src/scss/base/_index.scss b/src/scss/base/_index.scss new file mode 100644 index 0000000..80c34dd --- /dev/null +++ b/src/scss/base/_index.scss @@ -0,0 +1,2 @@ +@forward '../vendor/remedy'; +@forward 'root'; diff --git a/src/scss/base/_root.scss b/src/scss/base/_root.scss new file mode 100644 index 0000000..0dd6003 --- /dev/null +++ b/src/scss/base/_root.scss @@ -0,0 +1,4 @@ +html { + font-family: system-ui, sans-serif; + font-weight: normal; +} diff --git a/src/scss/layout/_content-grid.scss b/src/scss/layout/_content-grid.scss new file mode 100644 index 0000000..91300e1 --- /dev/null +++ b/src/scss/layout/_content-grid.scss @@ -0,0 +1,31 @@ +.content-grid { + --gap: clamp(1rem, 6vw, 3rem); + --full: minmax(var(--gap), 1fr); + --content: min(50ch, 100% - var(--gap) * 2); + --popout: minmax(0, 2rem); + --feature: minmax(0, 5rem); + + display: grid; + grid-template-columns: + [full-start] var(--full) + [feature-start] var(--feature) + [popout-start] var(--popout) + [content-start] var(--content) [content-end] + var(--popout) [popout-end] + var(--feature) [feature-end] + var(--full) [full-end]; + + & > * { + grid-column: content; + } +} + +.popout { + grid-column: popout; +} +.feature { + grid-column: feature; +} +.full { + grid-column: full; +} diff --git a/src/scss/layout/_index.scss b/src/scss/layout/_index.scss new file mode 100644 index 0000000..011b693 --- /dev/null +++ b/src/scss/layout/_index.scss @@ -0,0 +1 @@ +@forward 'content-grid'; diff --git a/src/scss/rime.scss b/src/scss/rime.scss index 4e8ac4a..f8a5d05 100644 --- a/src/scss/rime.scss +++ b/src/scss/rime.scss @@ -1,37 +1,7 @@ -@forward './vendor/remedy'; +@use 'base'; +@use 'layout'; body { color: mediumvioletred; background-color: #ddd; } - -.breakout { - --gap: clamp(1rem, 6vw, 3rem); - --full: minmax(var(--gap), 1fr); - --content: min(50ch, 100% - var(--gap) * 2); - --popout: minmax(0, 2rem); - --feature: minmax(0, 5rem); - - display: grid; - grid-template-columns: - [full-start] var(--full) - [feature-start] var(--feature) - [popout-start] var(--popout) - [content-start] var(--content) [content-end] - var(--popout) [popout-end] - var(--feature) [feature-end] - var(--full) [full-end]; -} - -.breakout > * { - grid-column: content; -} -.popout { - grid-column: popout; -} -.feature { - grid-column: feature; -} -.full { - grid-column: full; -} From 8b989297f39a15117cf8d543e1c4bdf0c011b3de Mon Sep 17 00:00:00 2001 From: Cameron Higby-Naquin Date: Tue, 26 Dec 2023 17:47:05 -0500 Subject: [PATCH 03/30] Iterate further on the entwined 2023 and the future of this site 1. Allow inline markdown in the captions of figures 2. Wire up some colors. I think this is a slightly simpler situation than what I had before but I'm not sure. I can add more things where needed (and we will need more). 3. Add the full `figure` macro. This right now renders a data object as a captioned figure. Right now only `iframe` support. 4. Basic figure styles, popping out, background color. 5. Enable markdown files as pages. --- .eleventy.js | 4 + package-lock.json | 191 +++++++++++++++++++++++++------ package.json | 1 + src/_includes/content.macros.njk | 34 ++++++ src/entwined2023.md | 22 ++++ src/entwined2023.njk | 18 --- src/plugins/type.js | 14 +++ src/scss/base/_figure.scss | 8 ++ src/scss/base/_index.scss | 1 + src/scss/base/_root.scss | 12 ++ src/scss/config/_colors.scss | 53 +++++++++ src/scss/config/_index.scss | 1 + src/scss/rime.scss | 4 +- 13 files changed, 308 insertions(+), 55 deletions(-) create mode 100644 src/entwined2023.md delete mode 100644 src/entwined2023.njk create mode 100644 src/plugins/type.js create mode 100644 src/scss/base/_figure.scss create mode 100644 src/scss/config/_colors.scss create mode 100644 src/scss/config/_index.scss diff --git a/.eleventy.js b/.eleventy.js index 49aec41..54a1534 100644 --- a/.eleventy.js +++ b/.eleventy.js @@ -2,6 +2,7 @@ const { minify } = require('terser'); const CleanCSS = require("clean-css"); const configUtils = require('./src/plugins/utils'); +const typeUtils = require('./src/plugins/type'); module.exports = function(eleventyConfig) { // Set custom directories for input, output, includes, and data eleventyConfig.addNunjucksAsyncFilter("jsmin", async function ( @@ -23,6 +24,7 @@ module.exports = function(eleventyConfig) { // Set custom directories for input // plugins eleventyConfig.addPlugin(configUtils); + eleventyConfig.addPlugin(typeUtils); // separate projects included fully eleventyConfig.addPassthroughCopy("src/darken"); @@ -39,8 +41,10 @@ module.exports = function(eleventyConfig) { // Set custom directories for input eleventyConfig.addPassthroughCopy("src/**/*.txt"); eleventyConfig.addPassthroughCopy("src/favicon.ico"); return { + markdownTemplateEngine: 'njk', templateFormats: [ "njk", + "md" ], dir: { input: "src", diff --git a/package-lock.json b/package-lock.json index f1fc47a..ed7b20c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "@11ty/eleventy": "^2.0.1", "clean-css": "^5.3.0", "cssremedy": "^0.1.0-beta.2", + "markdown-it": "^14.0.0", "npm-run-all2": "^6.1.1", "sass": "^1.69.5", "terser": "^5.12.1" @@ -143,6 +144,49 @@ "url": "https://opencollective.com/11ty" } }, + "node_modules/@11ty/eleventy/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@11ty/eleventy/node_modules/linkify-it": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", + "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", + "dev": true, + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/@11ty/eleventy/node_modules/markdown-it": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.2.tgz", + "integrity": "sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1", + "entities": "~3.0.1", + "linkify-it": "^4.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/@11ty/eleventy/node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "dev": true + }, + "node_modules/@11ty/eleventy/node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, "node_modules/@11ty/lodash-custom": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/@11ty/lodash-custom/-/lodash-custom-4.17.21.tgz", @@ -1654,12 +1698,12 @@ } }, "node_modules/linkify-it": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", - "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", "dev": true, "dependencies": { - "uc.micro": "^1.0.1" + "uc.micro": "^2.0.0" } }, "node_modules/liquidjs": { @@ -1722,19 +1766,20 @@ } }, "node_modules/markdown-it": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.2.tgz", - "integrity": "sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.0.0.tgz", + "integrity": "sha512-seFjF0FIcPt4P9U39Bq1JYblX0KZCjDLFFQPHpL5AzHpqPEKtosxmdq/LTVZnjfH7tjt9BxStm+wXcDBNuYmzw==", "dev": true, "dependencies": { "argparse": "^2.0.1", - "entities": "~3.0.1", - "linkify-it": "^4.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.0.0" }, "bin": { - "markdown-it": "bin/markdown-it.js" + "markdown-it": "bin/markdown-it.mjs" } }, "node_modules/markdown-it/node_modules/argparse": { @@ -1743,6 +1788,18 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, + "node_modules/markdown-it/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/maximatch": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/maximatch/-/maximatch-0.1.0.tgz", @@ -1789,9 +1846,9 @@ } }, "node_modules/mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", "dev": true }, "node_modules/memorystream": { @@ -2392,6 +2449,15 @@ "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==", "dev": true }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -2825,9 +2891,9 @@ } }, "node_modules/uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.0.0.tgz", + "integrity": "sha512-DffL94LsNOccVn4hyfRe5rdKa273swqeA5DJpMOeFmEn1wCDc7nAbbB0gXlgBCL7TNzeTv6G7XVWzan7iJtfig==", "dev": true }, "node_modules/uglify-js": { @@ -2991,6 +3057,48 @@ "recursive-copy": "^2.0.14", "semver": "^7.3.8", "slugify": "^1.6.6" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "linkify-it": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", + "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", + "dev": true, + "requires": { + "uc.micro": "^1.0.1" + } + }, + "markdown-it": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.2.tgz", + "integrity": "sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w==", + "dev": true, + "requires": { + "argparse": "^2.0.1", + "entities": "~3.0.1", + "linkify-it": "^4.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + } + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "dev": true + }, + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + } } }, "@11ty/eleventy-dev-server": { @@ -4177,12 +4285,12 @@ "dev": true }, "linkify-it": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", - "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", "dev": true, "requires": { - "uc.micro": "^1.0.1" + "uc.micro": "^2.0.0" } }, "liquidjs": { @@ -4227,16 +4335,17 @@ "dev": true }, "markdown-it": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.2.tgz", - "integrity": "sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.0.0.tgz", + "integrity": "sha512-seFjF0FIcPt4P9U39Bq1JYblX0KZCjDLFFQPHpL5AzHpqPEKtosxmdq/LTVZnjfH7tjt9BxStm+wXcDBNuYmzw==", "dev": true, "requires": { "argparse": "^2.0.1", - "entities": "~3.0.1", - "linkify-it": "^4.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.0.0" }, "dependencies": { "argparse": { @@ -4244,6 +4353,12 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true + }, + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true } } }, @@ -4283,9 +4398,9 @@ } }, "mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", "dev": true }, "memorystream": { @@ -4758,6 +4873,12 @@ "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==", "dev": true }, + "punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "dev": true + }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -5064,9 +5185,9 @@ "dev": true }, "uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.0.0.tgz", + "integrity": "sha512-DffL94LsNOccVn4hyfRe5rdKa273swqeA5DJpMOeFmEn1wCDc7nAbbB0gXlgBCL7TNzeTv6G7XVWzan7iJtfig==", "dev": true }, "uglify-js": { diff --git a/package.json b/package.json index 78802b6..d170728 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "@11ty/eleventy": "^2.0.1", "clean-css": "^5.3.0", "cssremedy": "^0.1.0-beta.2", + "markdown-it": "^14.0.0", "npm-run-all2": "^6.1.1", "sass": "^1.69.5", "terser": "^5.12.1" diff --git a/src/_includes/content.macros.njk b/src/_includes/content.macros.njk index bcd303b..d7dc437 100644 --- a/src/_includes/content.macros.njk +++ b/src/_includes/content.macros.njk @@ -1,5 +1,21 @@ {% import "util.macros.njk" as util %} +{% macro figure( + data=none, + caption=none, + attrs={} +) -%} + {%- set rendered = _render_data(data) %} +
+
+ {{- rendered | trim | safe -}} +
+ {%- if caption -%} + {{- caption | mdInline | safe -}} + {% endif %} +
+{% endmacro %} + {% macro iframe( src, title, @@ -23,3 +39,21 @@ } -%} {% endmacro %} + + +{% macro _render_data( + data +)-%} + {%- for item in data -%} + {%- if item.iframe -%} + {{- iframe( + item.iframe, + item.title or 'embed', + item.width, + item.height, + item.span + ) -}} + {% else %} + {% endif %} + {% endfor %} +{% endmacro %} diff --git a/src/entwined2023.md b/src/entwined2023.md new file mode 100644 index 0000000..c49fbc0 --- /dev/null +++ b/src/entwined2023.md @@ -0,0 +1,22 @@ +--- +title: Entwined 2023 +layout: rime +attrs: + main: + class: content-grid + +hoagies: + - iframe: https://bandcamp.com/EmbeddedPlayer/album=203876381/size=small/bgcol=ffffff/linkcol=2ebd35/transparent=true/ + height: 42 + width: 509 + title: hoagies +--- +{% import "content.macros.njk" as content %} + +And lo, when the Imperium marches..... + +{{ content.figure( + hoagies, + caption='Most important hoagie of the year', + attrs={class: 'popout'} +) }} diff --git a/src/entwined2023.njk b/src/entwined2023.njk deleted file mode 100644 index ec1817f..0000000 --- a/src/entwined2023.njk +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: Entwined 2023 -layout: rime -attrs: - main: - class: content-grid - -hoagies: - src: https://bandcamp.com/EmbeddedPlayer/album=203876381/size=small/bgcol=ffffff/linkcol=2ebd35/transparent=true/ - title: hoagies ---- -{% import "content.macros.njk" as content %} -{{ content.iframe( - src=hoagies.src, - title=hoagies.title, - width=509, - height=42 -)}} diff --git a/src/plugins/type.js b/src/plugins/type.js new file mode 100644 index 0000000..8af7d5e --- /dev/null +++ b/src/plugins/type.js @@ -0,0 +1,14 @@ +'use strict'; + +const markdownit = require('markdown-it'); + +const marker = markdownit({ + html: true, + typographer: true, +}); + +const inline = (content) => (content ? marker.renderInline(content.trim()) : ""); + +module.exports = (eleventyConfig) => { + eleventyConfig.addFilter("mdInline", inline); +}; diff --git a/src/scss/base/_figure.scss b/src/scss/base/_figure.scss new file mode 100644 index 0000000..3744571 --- /dev/null +++ b/src/scss/base/_figure.scss @@ -0,0 +1,8 @@ +figure { + display: grid; + gap: 1em; + margin-inline: 0; + padding: 1em; + + background-color: var(--shadow); +} diff --git a/src/scss/base/_index.scss b/src/scss/base/_index.scss index 80c34dd..64fc678 100644 --- a/src/scss/base/_index.scss +++ b/src/scss/base/_index.scss @@ -1,2 +1,3 @@ @forward '../vendor/remedy'; @forward 'root'; +@forward 'figure'; diff --git a/src/scss/base/_root.scss b/src/scss/base/_root.scss index 0dd6003..2629a96 100644 --- a/src/scss/base/_root.scss +++ b/src/scss/base/_root.scss @@ -1,4 +1,16 @@ +@use 'sass:meta'; +@use '../config/colors'; + html { font-family: system-ui, sans-serif; font-weight: normal; + + @each $name, $value in meta.module-variables('colors') { + --#{$name}: #{$value}; + } + + @include colors.theme; + + background-color: var(--background-color); + color: var(--text-color); } diff --git a/src/scss/config/_colors.scss b/src/scss/config/_colors.scss new file mode 100644 index 0000000..8da06ec --- /dev/null +++ b/src/scss/config/_colors.scss @@ -0,0 +1,53 @@ +@use 'sass:color'; + +// $colors: ( +// "nord": ( +// "0": #2e3440, +// "1": #3b4252, +// "3": #4c566a, +// "4": #d8dee9, +// "5": #e5e9f0, +// "6": #eceff4, +// "7": #8fbcbb, +// "8": #88c0d0, +// "9": #81a1c1, +// "10": #5e81ac, +// "14": #a3be8c, +// "15": #b48ead, +// ), +// "accent": ( +// "200": hsl(338, 47%, 43%), +// "400": hsl(352, 68%, 64%), +// ), +// ); + +$dark: #3b4252; +$darker: #2e3440; +$light: #eceff4; +$accent-light: #88c0d0; +$complement-light: #8fbcbb; +$accent-dark: #5e81ac; +$bg-accent-dark: color.mix($accent-dark, $darker, 15%); +$bg-accent-light: color.mix($accent-light, $light, 15%); +$complement-dark: #81a1c1; // teal; +$mark-light: color.change($accent-light, $alpha: 0.2); +$mark-dark: color.change($accent-dark, $alpha: 0.2); + +@mixin light { + --background-color: var(--light); + --text-color: var(--dark); + --accent-color: var(--accent-dark); + --accent-text: var(--background-color); + --complement: var(--complement-dark); + --complement-text: var(--background-color); + --mark: var(--mark-light); + --mark-text: var(--text); + --shadow: hsl(0deg 0% 0% / 12.5%); +} + +@mixin theme { + @include light; + + --action: var(--accent-text); + --active: var(--complement); +} diff --git a/src/scss/config/_index.scss b/src/scss/config/_index.scss new file mode 100644 index 0000000..7011938 --- /dev/null +++ b/src/scss/config/_index.scss @@ -0,0 +1 @@ +@forward 'colors'; diff --git a/src/scss/rime.scss b/src/scss/rime.scss index f8a5d05..375f19e 100644 --- a/src/scss/rime.scss +++ b/src/scss/rime.scss @@ -2,6 +2,6 @@ @use 'layout'; body { - color: mediumvioletred; - background-color: #ddd; + // color: mediumvioletred; + // background-color: #ddd; } From 8c7f39911572ef96e5ba0b343d2140a41a509053 Mon Sep 17 00:00:00 2001 From: Cameron Higby-Naquin Date: Tue, 26 Dec 2023 18:04:15 -0500 Subject: [PATCH 04/30] Assume tighter control over content grid spacing --- src/_includes/content.macros.njk | 6 +++--- src/scss/layout/_content-grid.scss | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/_includes/content.macros.njk b/src/_includes/content.macros.njk index d7dc437..1df4893 100644 --- a/src/_includes/content.macros.njk +++ b/src/_includes/content.macros.njk @@ -5,16 +5,16 @@ caption=none, attrs={} ) -%} - {%- set rendered = _render_data(data) %} + {%- set rendered = _render_data(data) -%}
{{- rendered | trim | safe -}}
{%- if caption -%} {{- caption | mdInline | safe -}} - {% endif %} + {%- endif -%}
-{% endmacro %} +{%- endmacro %} {% macro iframe( src, diff --git a/src/scss/layout/_content-grid.scss b/src/scss/layout/_content-grid.scss index 91300e1..801b4fd 100644 --- a/src/scss/layout/_content-grid.scss +++ b/src/scss/layout/_content-grid.scss @@ -6,6 +6,7 @@ --feature: minmax(0, 5rem); display: grid; + row-gap: 1.5em; grid-template-columns: [full-start] var(--full) [feature-start] var(--feature) @@ -17,6 +18,7 @@ & > * { grid-column: content; + margin: 0; } } From e4e0cf3fc34b8c108674ef77d96dd3b34f8d6863 Mon Sep 17 00:00:00 2001 From: Cameron Higby-Naquin Date: Tue, 26 Dec 2023 18:04:30 -0500 Subject: [PATCH 05/30] Add first item on the Entwined list --- src/entwined2023.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/entwined2023.md b/src/entwined2023.md index c49fbc0..830a427 100644 --- a/src/entwined2023.md +++ b/src/entwined2023.md @@ -5,6 +5,10 @@ attrs: main: class: content-grid +kirkwood: + - iframe: https://www.youtube.com/embed/kKIhEIzzlis?si=V1Lz7K7dEs20Vbe6 + title: "Jim Kirkwood ‎- Souls That Dance On The Edge Of A Sword (1991)" + hoagies: - iframe: https://bandcamp.com/EmbeddedPlayer/album=203876381/size=small/bgcol=ffffff/linkcol=2ebd35/transparent=true/ height: 42 @@ -15,6 +19,10 @@ hoagies: And lo, when the Imperium marches..... +## Retro/cosmic dark ambient + +{{ content.figure(kirkwood, caption="Souls that Dance on The Edge of a Sword", attrs={class: "popout"}) }} + {{ content.figure( hoagies, caption='Most important hoagie of the year', From 38ca542ac3b2645ec7325c8c77b9dd34445374b5 Mon Sep 17 00:00:00 2001 From: Cameron Higby-Naquin Date: Wed, 27 Dec 2023 16:20:56 -0500 Subject: [PATCH 06/30] CNAME file passthrough --- .eleventy.js | 1 + docs/CNAME | 2 +- src/CNAME | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 src/CNAME diff --git a/.eleventy.js b/.eleventy.js index 54a1534..835b386 100644 --- a/.eleventy.js +++ b/.eleventy.js @@ -40,6 +40,7 @@ module.exports = function(eleventyConfig) { // Set custom directories for input eleventyConfig.addPassthroughCopy("src/js"); eleventyConfig.addPassthroughCopy("src/**/*.txt"); eleventyConfig.addPassthroughCopy("src/favicon.ico"); + eleventyConfig.addPassthroughCopy("src/CNAME"); return { markdownTemplateEngine: 'njk', templateFormats: [ diff --git a/docs/CNAME b/docs/CNAME index 1f9d96a..fbf8746 100644 --- a/docs/CNAME +++ b/docs/CNAME @@ -1 +1 @@ -chigby.org \ No newline at end of file +chigby.org diff --git a/src/CNAME b/src/CNAME new file mode 100644 index 0000000..fbf8746 --- /dev/null +++ b/src/CNAME @@ -0,0 +1 @@ +chigby.org From c5acfac2515d6402db64726c4e87dc3306694b5a Mon Sep 17 00:00:00 2001 From: Cameron Higby-Naquin Date: Wed, 27 Dec 2023 16:21:15 -0500 Subject: [PATCH 07/30] Link styles --- src/scss/base/_index.scss | 1 + src/scss/base/_links.scss | 14 ++++++++++++++ src/scss/config/_colors.scss | 6 +++++- 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 src/scss/base/_links.scss diff --git a/src/scss/base/_index.scss b/src/scss/base/_index.scss index 64fc678..a62f96e 100644 --- a/src/scss/base/_index.scss +++ b/src/scss/base/_index.scss @@ -1,3 +1,4 @@ @forward '../vendor/remedy'; @forward 'root'; @forward 'figure'; +@forward 'links'; diff --git a/src/scss/base/_links.scss b/src/scss/base/_links.scss new file mode 100644 index 0000000..7861c51 --- /dev/null +++ b/src/scss/base/_links.scss @@ -0,0 +1,14 @@ +a { + &:where(:any-link) { + color: var(--link-color); + } + + &:where(:visited) { + color: var(--link-visited, var(--link-color)); + } + + &:where(:hover, :focus, :active) { + color: var(--link-active); + background-color: var(--link-active-bg); + } +} diff --git a/src/scss/config/_colors.scss b/src/scss/config/_colors.scss index 8da06ec..3196db0 100644 --- a/src/scss/config/_colors.scss +++ b/src/scss/config/_colors.scss @@ -43,11 +43,15 @@ $mark-dark: color.change($accent-dark, $alpha: 0.2); --mark: var(--mark-light); --mark-text: var(--text); --shadow: hsl(0deg 0% 0% / 12.5%); + + --link-color: var(--action); + --link-active: var(--active); } @mixin theme { @include light; - --action: var(--accent-text); + // applications of color + --action: var(--accent-color); --active: var(--complement); } From 83754d25bf0bd260484e1fdc99404670851231fe Mon Sep 17 00:00:00 2001 From: Cameron Higby-Naquin Date: Wed, 27 Dec 2023 17:07:54 -0500 Subject: [PATCH 08/30] Add JSON5 for better data file format --- .eleventy.js | 4 ++++ package-lock.json | 19 +++++++++++++++++++ package.json | 1 + 3 files changed, 24 insertions(+) diff --git a/.eleventy.js b/.eleventy.js index 835b386..8b416db 100644 --- a/.eleventy.js +++ b/.eleventy.js @@ -1,5 +1,6 @@ const { minify } = require('terser'); const CleanCSS = require("clean-css"); +const JSON5 = require('json5'); const configUtils = require('./src/plugins/utils'); const typeUtils = require('./src/plugins/type'); @@ -26,6 +27,9 @@ module.exports = function(eleventyConfig) { // Set custom directories for input eleventyConfig.addPlugin(configUtils); eleventyConfig.addPlugin(typeUtils); + // configure json5 support for data files + eleventyConfig.addDataExtension('json5', JSON5.parse); + // separate projects included fully eleventyConfig.addPassthroughCopy("src/darken"); eleventyConfig.addPassthroughCopy("src/offsetCipher"); diff --git a/package-lock.json b/package-lock.json index ed7b20c..6f6cd04 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "@11ty/eleventy": "^2.0.1", "clean-css": "^5.3.0", "cssremedy": "^0.1.0-beta.2", + "json5": "^2.2.3", "markdown-it": "^14.0.0", "npm-run-all2": "^6.1.1", "sass": "^1.69.5", @@ -1651,6 +1652,18 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/jstransformer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", @@ -4250,6 +4263,12 @@ "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", "dev": true }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, "jstransformer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", diff --git a/package.json b/package.json index d170728..e829c49 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "@11ty/eleventy": "^2.0.1", "clean-css": "^5.3.0", "cssremedy": "^0.1.0-beta.2", + "json5": "^2.2.3", "markdown-it": "^14.0.0", "npm-run-all2": "^6.1.1", "sass": "^1.69.5", From 195a307b2b16a33aed0ca9dc86c6525d1455d726 Mon Sep 17 00:00:00 2001 From: Cameron Higby-Naquin Date: Wed, 27 Dec 2023 17:08:52 -0500 Subject: [PATCH 09/30] Move Entwined 2023 page into new "post" folder This is so, I think, it will be easier to control how this page can be similar to and have the same layout as other potential future pages. --- src/{ => post}/entwined2023.md | 2 -- src/post/post.json5 | 7 +++++++ 2 files changed, 7 insertions(+), 2 deletions(-) rename src/{ => post}/entwined2023.md (94%) create mode 100644 src/post/post.json5 diff --git a/src/entwined2023.md b/src/post/entwined2023.md similarity index 94% rename from src/entwined2023.md rename to src/post/entwined2023.md index 830a427..05bf1f4 100644 --- a/src/entwined2023.md +++ b/src/post/entwined2023.md @@ -17,8 +17,6 @@ hoagies: --- {% import "content.macros.njk" as content %} -And lo, when the Imperium marches..... - ## Retro/cosmic dark ambient {{ content.figure(kirkwood, caption="Souls that Dance on The Edge of a Sword", attrs={class: "popout"}) }} diff --git a/src/post/post.json5 b/src/post/post.json5 new file mode 100644 index 0000000..50061b1 --- /dev/null +++ b/src/post/post.json5 @@ -0,0 +1,7 @@ +{ + attrs: { + body: { + class: "a-page", + } + } +} From d183238905b72e48da662917e58102588e7c9eb4 Mon Sep 17 00:00:00 2001 From: Cameron Higby-Naquin Date: Wed, 27 Dec 2023 17:09:46 -0500 Subject: [PATCH 10/30] Give our CSS some standard space sizes --- src/scss/base/_root.scss | 2 ++ src/scss/config/_sizes.scss | 11 +++++++++++ 2 files changed, 13 insertions(+) create mode 100644 src/scss/config/_sizes.scss diff --git a/src/scss/base/_root.scss b/src/scss/base/_root.scss index 2629a96..12df6e2 100644 --- a/src/scss/base/_root.scss +++ b/src/scss/base/_root.scss @@ -1,5 +1,6 @@ @use 'sass:meta'; @use '../config/colors'; +@use '../config/sizes'; html { font-family: system-ui, sans-serif; @@ -10,6 +11,7 @@ html { } @include colors.theme; + @include sizes.space; background-color: var(--background-color); color: var(--text-color); diff --git a/src/scss/config/_sizes.scss b/src/scss/config/_sizes.scss new file mode 100644 index 0000000..c90bb91 --- /dev/null +++ b/src/scss/config/_sizes.scss @@ -0,0 +1,11 @@ +@mixin space { + --gap: 1rem; + --half-gap: calc(var(--gap) / 2); + --shim: calc(var(--gap) / 4); + --half-shim: calc(var(--shim) / 2); + --spacer: clamp( + var(--gap) * 1.5, + var(--gap) + 4vw, + min(var(--gap) * 6, 20vmin) + ); +} From 0dc2a0cd387c7b0500724e02c326fe47c7e96d8f Mon Sep 17 00:00:00 2001 From: Cameron Higby-Naquin Date: Wed, 27 Dec 2023 17:10:04 -0500 Subject: [PATCH 11/30] Give the body tag some spatial relationship to the footer Everything being a grid makes it easier to control what's happening. --- src/scss/layout/_body.scss | 9 +++++++++ src/scss/layout/_index.scss | 2 ++ src/scss/layout/_site-footer.scss | 7 +++++++ 3 files changed, 18 insertions(+) create mode 100644 src/scss/layout/_body.scss create mode 100644 src/scss/layout/_site-footer.scss diff --git a/src/scss/layout/_body.scss b/src/scss/layout/_body.scss new file mode 100644 index 0000000..686ca84 --- /dev/null +++ b/src/scss/layout/_body.scss @@ -0,0 +1,9 @@ +.a-page { + display: grid; + row-gap: var(--spacer); + margin: 0; + + :where(&) > * { + margin-block: 0; + } +} diff --git a/src/scss/layout/_index.scss b/src/scss/layout/_index.scss index 011b693..e93b8ec 100644 --- a/src/scss/layout/_index.scss +++ b/src/scss/layout/_index.scss @@ -1 +1,3 @@ @forward 'content-grid'; +@forward 'site-footer'; +@forward 'body'; diff --git a/src/scss/layout/_site-footer.scss b/src/scss/layout/_site-footer.scss new file mode 100644 index 0000000..4e97198 --- /dev/null +++ b/src/scss/layout/_site-footer.scss @@ -0,0 +1,7 @@ +body > footer { + padding: 1rem; + text-align: center; + padding-block-start: 1rem; + + border-top: 1.5px solid; +} From 54af48bc66929f7223898e122cc8ae6b73c20ff3 Mon Sep 17 00:00:00 2001 From: Cameron Higby-Naquin Date: Wed, 27 Dec 2023 17:10:54 -0500 Subject: [PATCH 12/30] Footer that took way to long to settle on the exact contents of --- src/_includes/rime.njk | 3 ++- src/_includes/site/footer.njk | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 src/_includes/site/footer.njk diff --git a/src/_includes/rime.njk b/src/_includes/rime.njk index 6e8bca7..d4c491e 100644 --- a/src/_includes/rime.njk +++ b/src/_includes/rime.njk @@ -7,7 +7,7 @@ {{ title }} - +
{% block main %}
+ {% include "site/footer.njk" %} diff --git a/src/_includes/site/footer.njk b/src/_includes/site/footer.njk new file mode 100644 index 0000000..956634d --- /dev/null +++ b/src/_includes/site/footer.njk @@ -0,0 +1,15 @@ + From 0a8e6b9daaddafb871e3b68520d5e3610e97701d Mon Sep 17 00:00:00 2001 From: Cameron Higby-Naquin Date: Wed, 27 Dec 2023 17:44:31 -0500 Subject: [PATCH 13/30] Enable better typography site-wide --- src/plugins/type.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/plugins/type.js b/src/plugins/type.js index 8af7d5e..43b89a8 100644 --- a/src/plugins/type.js +++ b/src/plugins/type.js @@ -11,4 +11,6 @@ const inline = (content) => (content ? marker.renderInline(content.trim()) : "") module.exports = (eleventyConfig) => { eleventyConfig.addFilter("mdInline", inline); + + eleventyConfig.setLibrary('md', marker); }; From 98be65955c4475f37ba23340b84dfba08379a84f Mon Sep 17 00:00:00 2001 From: Cameron Higby-Naquin Date: Wed, 27 Dec 2023 17:44:41 -0500 Subject: [PATCH 14/30] Use the actual `
` tag for figure captions --- src/_includes/content.macros.njk | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/_includes/content.macros.njk b/src/_includes/content.macros.njk index 1df4893..3a11924 100644 --- a/src/_includes/content.macros.njk +++ b/src/_includes/content.macros.njk @@ -11,7 +11,9 @@ {{- rendered | trim | safe -}} {%- if caption -%} - {{- caption | mdInline | safe -}} +
+ {{- caption | mdInline | safe -}} +
{%- endif -%} {%- endmacro %} From 309db547e213e8ee5f5fc9e069b422eab50d4924 Mon Sep 17 00:00:00 2001 From: Cameron Higby-Naquin Date: Wed, 27 Dec 2023 17:44:56 -0500 Subject: [PATCH 15/30] Add some initial descriptions --- src/post/entwined2023.md | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/post/entwined2023.md b/src/post/entwined2023.md index 05bf1f4..9767b56 100644 --- a/src/post/entwined2023.md +++ b/src/post/entwined2023.md @@ -9,6 +9,12 @@ kirkwood: - iframe: https://www.youtube.com/embed/kKIhEIzzlis?si=V1Lz7K7dEs20Vbe6 title: "Jim Kirkwood ‎- Souls That Dance On The Edge Of A Sword (1991)" +enmarta: + - iframe: https://bandcamp.com/EmbeddedPlayer/album=403823612/size=large/bgcol=ffffff/linkcol=f171a2/tracklist=false/transparent=true/ + width: 350 + height: 470 + title: The Hermit by Enmarta + hoagies: - iframe: https://bandcamp.com/EmbeddedPlayer/album=203876381/size=small/bgcol=ffffff/linkcol=2ebd35/transparent=true/ height: 42 @@ -17,10 +23,26 @@ hoagies: --- {% import "content.macros.njk" as content %} -## Retro/cosmic dark ambient +## Favorite retro/cosmic dark ambient + +New-to-me artist Jim Kirkwood has apparently beem making this kind of +music since time immemorial, so I'm pleased to have been finally +introduced to it. Cosmic, weird, disconcerting: is it dark ambient? +Is it dungeon synth? Can one enter a strange zone-out realm with +enough repeated exposures, as I have done this year? Yes. {{ content.figure(kirkwood, caption="Souls that Dance on The Edge of a Sword", attrs={class: "popout"}) }} +## Favorite new(er) dark ambient + +Using "new" here to mean released in the last ten years. For me, this +album is less about entering a zone-out realm and more about crossing +the threshold of night into a haunting saga---yes, a _saga_---at once +wistful, isolated, dreaming, wakeful, desolate, still. Also, there is +a significant amount of viola, which one cannot really object to. I struggle to pick a favorite track, but "March of the Priests" and "Apokatástasis II" both rule. + +{{ content.figure(enmarta, caption="_The Hermit_ by Enmarta", attrs={class: "popout"}) }} + {{ content.figure( hoagies, caption='Most important hoagie of the year', From f04bb80ccf62005e72a11843025c3429ec14b49d Mon Sep 17 00:00:00 2001 From: Cameron Higby-Naquin Date: Thu, 28 Dec 2023 17:11:53 -0500 Subject: [PATCH 16/30] Add light/dark theme switcher to Rime layout --- package-lock.json | 599 ++++++++++++++++++++++++++ package.json | 5 +- src/_includes/rime.njk | 2 + src/_includes/site/header.njk | 16 + src/js/index.js | 3 + src/js/theme-chooser.js | 26 ++ src/scss/config/_colors.scss | 31 +- src/scss/features/_index.scss | 1 + src/scss/features/_theme-chooser.scss | 3 + src/scss/rime.scss | 1 + 10 files changed, 683 insertions(+), 4 deletions(-) create mode 100644 src/_includes/site/header.njk create mode 100644 src/js/index.js create mode 100644 src/js/theme-chooser.js create mode 100644 src/scss/features/_index.scss create mode 100644 src/scss/features/_theme-chooser.scss diff --git a/package-lock.json b/package-lock.json index 6f6cd04..34dd411 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "@11ty/eleventy": "^2.0.1", "clean-css": "^5.3.0", "cssremedy": "^0.1.0-beta.2", + "esbuild": "^0.19.10", "json5": "^2.2.3", "markdown-it": "^14.0.0", "npm-run-all2": "^6.1.1", @@ -404,6 +405,374 @@ "node": ">=6.9.0" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.10.tgz", + "integrity": "sha512-Q+mk96KJ+FZ30h9fsJl+67IjNJm3x2eX+GBWGmocAKgzp27cowCOOqSdscX80s0SpdFXZnIv/+1xD1EctFx96Q==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.10.tgz", + "integrity": "sha512-7W0bK7qfkw1fc2viBfrtAEkDKHatYfHzr/jKAHNr9BvkYDXPcC6bodtm8AyLJNNuqClLNaeTLuwURt4PRT9d7w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.10.tgz", + "integrity": "sha512-1X4CClKhDgC3by7k8aOWZeBXQX8dHT5QAMCAQDArCLaYfkppoARvh0fit3X2Qs+MXDngKcHv6XXyQCpY0hkK1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.10.tgz", + "integrity": "sha512-O/nO/g+/7NlitUxETkUv/IvADKuZXyH4BHf/g/7laqKC4i/7whLpB0gvpPc2zpF0q9Q6FXS3TS75QHac9MvVWw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.10.tgz", + "integrity": "sha512-YSRRs2zOpwypck+6GL3wGXx2gNP7DXzetmo5pHXLrY/VIMsS59yKfjPizQ4lLt5vEI80M41gjm2BxrGZ5U+VMA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.10.tgz", + "integrity": "sha512-alfGtT+IEICKtNE54hbvPg13xGBe4GkVxyGWtzr+yHO7HIiRJppPDhOKq3zstTcVf8msXb/t4eavW3jCDpMSmA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.10.tgz", + "integrity": "sha512-dMtk1wc7FSH8CCkE854GyGuNKCewlh+7heYP/sclpOG6Cectzk14qdUIY5CrKDbkA/OczXq9WesqnPl09mj5dg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.10.tgz", + "integrity": "sha512-G5UPPspryHu1T3uX8WiOEUa6q6OlQh6gNl4CO4Iw5PS+Kg5bVggVFehzXBJY6X6RSOMS8iXDv2330VzaObm4Ag==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.10.tgz", + "integrity": "sha512-j6gUW5aAaPgD416Hk9FHxn27On28H4eVI9rJ4az7oCGTFW48+LcgNDBN+9f8rKZz7EEowo889CPKyeaD0iw9Kg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.10.tgz", + "integrity": "sha512-QxaouHWZ+2KWEj7cGJmvTIHVALfhpGxo3WLmlYfJ+dA5fJB6lDEIg+oe/0//FuyVHuS3l79/wyBxbHr0NgtxJQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.10.tgz", + "integrity": "sha512-4ub1YwXxYjj9h1UIZs2hYbnTZBtenPw5NfXCRgEkGb0b6OJ2gpkMvDqRDYIDRjRdWSe/TBiZltm3Y3Q8SN1xNg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.10.tgz", + "integrity": "sha512-lo3I9k+mbEKoxtoIbM0yC/MZ1i2wM0cIeOejlVdZ3D86LAcFXFRdeuZmh91QJvUTW51bOK5W2BznGNIl4+mDaA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.10.tgz", + "integrity": "sha512-J4gH3zhHNbdZN0Bcr1QUGVNkHTdpijgx5VMxeetSk6ntdt+vR1DqGmHxQYHRmNb77tP6GVvD+K0NyO4xjd7y4A==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.10.tgz", + "integrity": "sha512-tgT/7u+QhV6ge8wFMzaklOY7KqiyitgT1AUHMApau32ZlvTB/+efeCtMk4eXS+uEymYK249JsoiklZN64xt6oQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.10.tgz", + "integrity": "sha512-0f/spw0PfBMZBNqtKe5FLzBDGo0SKZKvMl5PHYQr3+eiSscfJ96XEknCe+JoOayybWUFQbcJTrk946i3j9uYZA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.10.tgz", + "integrity": "sha512-pZFe0OeskMHzHa9U38g+z8Yx5FNCLFtUnJtQMpwhS+r4S566aK2ci3t4NCP4tjt6d5j5uo4h7tExZMjeKoehAA==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.10.tgz", + "integrity": "sha512-SpYNEqg/6pZYoc+1zLCjVOYvxfZVZj6w0KROZ3Fje/QrM3nfvT2llI+wmKSrWuX6wmZeTapbarvuNNK/qepSgA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.10.tgz", + "integrity": "sha512-ACbZ0vXy9zksNArWlk2c38NdKg25+L9pr/mVaj9SUq6lHZu/35nx2xnQVRGLrC1KKQqJKRIB0q8GspiHI3J80Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.10.tgz", + "integrity": "sha512-PxcgvjdSjtgPMiPQrM3pwSaG4kGphP+bLSb+cihuP0LYdZv1epbAIecHVl5sD3npkfYBZ0ZnOjR878I7MdJDFg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.10.tgz", + "integrity": "sha512-ZkIOtrRL8SEJjr+VHjmW0znkPs+oJXhlJbNwfI37rvgeMtk3sxOQevXPXjmAPZPigVTncvFqLMd+uV0IBSEzqA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.10.tgz", + "integrity": "sha512-+Sa4oTDbpBfGpl3Hn3XiUe4f8TU2JF7aX8cOfqFYMMjXp6ma6NJDztl5FDG8Ezx0OjwGikIHw+iA54YLDNNVfw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.10.tgz", + "integrity": "sha512-EOGVLK1oWMBXgfttJdPHDTiivYSjX6jDNaATeNOaCOFEVcfMjtbx7WVQwPSE1eIfCp/CaSF2nSrDtzc4I9f8TQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.10.tgz", + "integrity": "sha512-whqLG6Sc70AbU73fFYvuYzaE4MNMBIlR1Y/IrUeOXFrWHxBEjjbZaQ3IXIQS8wJdAzue2GwYZCjOrgrU1oUHoA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@iarna/toml": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", @@ -1072,6 +1441,44 @@ "is-arrayish": "^0.2.1" } }, + "node_modules/esbuild": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.10.tgz", + "integrity": "sha512-S1Y27QGt/snkNYrRcswgRFqZjaTG5a5xM3EQo97uNBnH505pdzSNe/HLBq1v0RO7iK/ngdbhJB6mDAp0OK+iUA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.10", + "@esbuild/android-arm": "0.19.10", + "@esbuild/android-arm64": "0.19.10", + "@esbuild/android-x64": "0.19.10", + "@esbuild/darwin-arm64": "0.19.10", + "@esbuild/darwin-x64": "0.19.10", + "@esbuild/freebsd-arm64": "0.19.10", + "@esbuild/freebsd-x64": "0.19.10", + "@esbuild/linux-arm": "0.19.10", + "@esbuild/linux-arm64": "0.19.10", + "@esbuild/linux-ia32": "0.19.10", + "@esbuild/linux-loong64": "0.19.10", + "@esbuild/linux-mips64el": "0.19.10", + "@esbuild/linux-ppc64": "0.19.10", + "@esbuild/linux-riscv64": "0.19.10", + "@esbuild/linux-s390x": "0.19.10", + "@esbuild/linux-x64": "0.19.10", + "@esbuild/netbsd-x64": "0.19.10", + "@esbuild/openbsd-x64": "0.19.10", + "@esbuild/sunos-x64": "0.19.10", + "@esbuild/win32-arm64": "0.19.10", + "@esbuild/win32-ia32": "0.19.10", + "@esbuild/win32-x64": "0.19.10" + } + }, "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -3316,6 +3723,167 @@ "to-fast-properties": "^2.0.0" } }, + "@esbuild/aix-ppc64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.10.tgz", + "integrity": "sha512-Q+mk96KJ+FZ30h9fsJl+67IjNJm3x2eX+GBWGmocAKgzp27cowCOOqSdscX80s0SpdFXZnIv/+1xD1EctFx96Q==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.10.tgz", + "integrity": "sha512-7W0bK7qfkw1fc2viBfrtAEkDKHatYfHzr/jKAHNr9BvkYDXPcC6bodtm8AyLJNNuqClLNaeTLuwURt4PRT9d7w==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.10.tgz", + "integrity": "sha512-1X4CClKhDgC3by7k8aOWZeBXQX8dHT5QAMCAQDArCLaYfkppoARvh0fit3X2Qs+MXDngKcHv6XXyQCpY0hkK1Q==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.10.tgz", + "integrity": "sha512-O/nO/g+/7NlitUxETkUv/IvADKuZXyH4BHf/g/7laqKC4i/7whLpB0gvpPc2zpF0q9Q6FXS3TS75QHac9MvVWw==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.10.tgz", + "integrity": "sha512-YSRRs2zOpwypck+6GL3wGXx2gNP7DXzetmo5pHXLrY/VIMsS59yKfjPizQ4lLt5vEI80M41gjm2BxrGZ5U+VMA==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.10.tgz", + "integrity": "sha512-alfGtT+IEICKtNE54hbvPg13xGBe4GkVxyGWtzr+yHO7HIiRJppPDhOKq3zstTcVf8msXb/t4eavW3jCDpMSmA==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.10.tgz", + "integrity": "sha512-dMtk1wc7FSH8CCkE854GyGuNKCewlh+7heYP/sclpOG6Cectzk14qdUIY5CrKDbkA/OczXq9WesqnPl09mj5dg==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.10.tgz", + "integrity": "sha512-G5UPPspryHu1T3uX8WiOEUa6q6OlQh6gNl4CO4Iw5PS+Kg5bVggVFehzXBJY6X6RSOMS8iXDv2330VzaObm4Ag==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.10.tgz", + "integrity": "sha512-j6gUW5aAaPgD416Hk9FHxn27On28H4eVI9rJ4az7oCGTFW48+LcgNDBN+9f8rKZz7EEowo889CPKyeaD0iw9Kg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.10.tgz", + "integrity": "sha512-QxaouHWZ+2KWEj7cGJmvTIHVALfhpGxo3WLmlYfJ+dA5fJB6lDEIg+oe/0//FuyVHuS3l79/wyBxbHr0NgtxJQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.10.tgz", + "integrity": "sha512-4ub1YwXxYjj9h1UIZs2hYbnTZBtenPw5NfXCRgEkGb0b6OJ2gpkMvDqRDYIDRjRdWSe/TBiZltm3Y3Q8SN1xNg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.10.tgz", + "integrity": "sha512-lo3I9k+mbEKoxtoIbM0yC/MZ1i2wM0cIeOejlVdZ3D86LAcFXFRdeuZmh91QJvUTW51bOK5W2BznGNIl4+mDaA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.10.tgz", + "integrity": "sha512-J4gH3zhHNbdZN0Bcr1QUGVNkHTdpijgx5VMxeetSk6ntdt+vR1DqGmHxQYHRmNb77tP6GVvD+K0NyO4xjd7y4A==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.10.tgz", + "integrity": "sha512-tgT/7u+QhV6ge8wFMzaklOY7KqiyitgT1AUHMApau32ZlvTB/+efeCtMk4eXS+uEymYK249JsoiklZN64xt6oQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.10.tgz", + "integrity": "sha512-0f/spw0PfBMZBNqtKe5FLzBDGo0SKZKvMl5PHYQr3+eiSscfJ96XEknCe+JoOayybWUFQbcJTrk946i3j9uYZA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.10.tgz", + "integrity": "sha512-pZFe0OeskMHzHa9U38g+z8Yx5FNCLFtUnJtQMpwhS+r4S566aK2ci3t4NCP4tjt6d5j5uo4h7tExZMjeKoehAA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.10.tgz", + "integrity": "sha512-SpYNEqg/6pZYoc+1zLCjVOYvxfZVZj6w0KROZ3Fje/QrM3nfvT2llI+wmKSrWuX6wmZeTapbarvuNNK/qepSgA==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.10.tgz", + "integrity": "sha512-ACbZ0vXy9zksNArWlk2c38NdKg25+L9pr/mVaj9SUq6lHZu/35nx2xnQVRGLrC1KKQqJKRIB0q8GspiHI3J80Q==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.10.tgz", + "integrity": "sha512-PxcgvjdSjtgPMiPQrM3pwSaG4kGphP+bLSb+cihuP0LYdZv1epbAIecHVl5sD3npkfYBZ0ZnOjR878I7MdJDFg==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.10.tgz", + "integrity": "sha512-ZkIOtrRL8SEJjr+VHjmW0znkPs+oJXhlJbNwfI37rvgeMtk3sxOQevXPXjmAPZPigVTncvFqLMd+uV0IBSEzqA==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.10.tgz", + "integrity": "sha512-+Sa4oTDbpBfGpl3Hn3XiUe4f8TU2JF7aX8cOfqFYMMjXp6ma6NJDztl5FDG8Ezx0OjwGikIHw+iA54YLDNNVfw==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.10.tgz", + "integrity": "sha512-EOGVLK1oWMBXgfttJdPHDTiivYSjX6jDNaATeNOaCOFEVcfMjtbx7WVQwPSE1eIfCp/CaSF2nSrDtzc4I9f8TQ==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.10.tgz", + "integrity": "sha512-whqLG6Sc70AbU73fFYvuYzaE4MNMBIlR1Y/IrUeOXFrWHxBEjjbZaQ3IXIQS8wJdAzue2GwYZCjOrgrU1oUHoA==", + "dev": true, + "optional": true + }, "@iarna/toml": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", @@ -3819,6 +4387,37 @@ "is-arrayish": "^0.2.1" } }, + "esbuild": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.10.tgz", + "integrity": "sha512-S1Y27QGt/snkNYrRcswgRFqZjaTG5a5xM3EQo97uNBnH505pdzSNe/HLBq1v0RO7iK/ngdbhJB6mDAp0OK+iUA==", + "dev": true, + "requires": { + "@esbuild/aix-ppc64": "0.19.10", + "@esbuild/android-arm": "0.19.10", + "@esbuild/android-arm64": "0.19.10", + "@esbuild/android-x64": "0.19.10", + "@esbuild/darwin-arm64": "0.19.10", + "@esbuild/darwin-x64": "0.19.10", + "@esbuild/freebsd-arm64": "0.19.10", + "@esbuild/freebsd-x64": "0.19.10", + "@esbuild/linux-arm": "0.19.10", + "@esbuild/linux-arm64": "0.19.10", + "@esbuild/linux-ia32": "0.19.10", + "@esbuild/linux-loong64": "0.19.10", + "@esbuild/linux-mips64el": "0.19.10", + "@esbuild/linux-ppc64": "0.19.10", + "@esbuild/linux-riscv64": "0.19.10", + "@esbuild/linux-s390x": "0.19.10", + "@esbuild/linux-x64": "0.19.10", + "@esbuild/netbsd-x64": "0.19.10", + "@esbuild/openbsd-x64": "0.19.10", + "@esbuild/sunos-x64": "0.19.10", + "@esbuild/win32-arm64": "0.19.10", + "@esbuild/win32-ia32": "0.19.10", + "@esbuild/win32-x64": "0.19.10" + } + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", diff --git a/package.json b/package.json index e829c49..53bc531 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,9 @@ "eleventy": "npx @11ty/eleventy", "sass": "sass src/scss:docs/css", "watch:sass": "sass --watch src/scss:docs/css", - "serve": "npm-run-all -p sass eleventy:serve watch:*" + "serve": "npm-run-all -p sass eleventy:serve watch:*", + "js": "esbuild ./src/js --bundle --outfile=docs/js/scripts.js", + "watch:js": "esbuild ./src/js --watch --bundle --outfile=docs/js/scripts.js" }, "repository": { "type": "git", @@ -26,6 +28,7 @@ "@11ty/eleventy": "^2.0.1", "clean-css": "^5.3.0", "cssremedy": "^0.1.0-beta.2", + "esbuild": "^0.19.10", "json5": "^2.2.3", "markdown-it": "^14.0.0", "npm-run-all2": "^6.1.1", diff --git a/src/_includes/rime.njk b/src/_includes/rime.njk index d4c491e..5c2d15b 100644 --- a/src/_includes/rime.njk +++ b/src/_includes/rime.njk @@ -6,8 +6,10 @@ {{ title }} + + {% include "site/header.njk" %}
{% block main %}