From ba1dba466162154524e8aefcd1b72b4882bb5b09 Mon Sep 17 00:00:00 2001 From: svemagie <869694+svemagie@users.noreply.github.com> Date: Sun, 15 Mar 2026 13:00:43 +0100 Subject: [PATCH] feat: integrate eleventy-plugin-mermaid for diagram support Adds @kevingimbel/eleventy-plugin-mermaid so mermaid fenced code blocks render as interactive diagrams in the browser. Co-Authored-By: Claude Sonnet 4.6 --- _includes/layouts/base.njk | 1 + eleventy.config.js | 4 ++++ package-lock.json | 21 ++++++++++++++------- package.json | 1 + 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/_includes/layouts/base.njk b/_includes/layouts/base.njk index 548abfe..e018868 100644 --- a/_includes/layouts/base.njk +++ b/_includes/layouts/base.njk @@ -543,5 +543,6 @@ } })(); + {% mermaid_js %} diff --git a/eleventy.config.js b/eleventy.config.js index 44c4c15..e29c8e9 100644 --- a/eleventy.config.js +++ b/eleventy.config.js @@ -1,5 +1,6 @@ import pluginWebmentions from "@chrisburnell/eleventy-cache-webmentions"; import pluginRss from "@11ty/eleventy-plugin-rss"; +import pluginMermaid from "@kevingimbel/eleventy-plugin-mermaid"; import embedEverything from "eleventy-plugin-embed-everything"; import { eleventyImageTransformPlugin } from "@11ty/eleventy-img"; import sitemap from "@quasibit/eleventy-plugin-sitemap"; @@ -150,6 +151,9 @@ export default function (eleventyConfig) { // Custom feed templates in feed.njk and feed-json.njk use these filters eleventyConfig.addPlugin(pluginRss); + // Mermaid diagram support — renders ```mermaid code blocks as diagrams + eleventyConfig.addPlugin(pluginMermaid); + // Post graph — GitHub-style contribution grid for posting frequency eleventyConfig.addPlugin(postGraph, { sort: "desc", diff --git a/package-lock.json b/package-lock.json index e4df52b..80c1305 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,6 +18,7 @@ "@atproto/api": "^0.12.0", "@chrisburnell/eleventy-cache-webmentions": "^2.2.7", "@fontsource/inter": "^5.2.8", + "@kevingimbel/eleventy-plugin-mermaid": "^3.0.1", "@quasibit/eleventy-plugin-sitemap": "^2.2.0", "@resvg/resvg-js": "^2.6.2", "@rknightuk/eleventy-plugin-post-graph": "^1.0.8", @@ -961,6 +962,15 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@kevingimbel/eleventy-plugin-mermaid": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@kevingimbel/eleventy-plugin-mermaid/-/eleventy-plugin-mermaid-3.0.1.tgz", + "integrity": "sha512-p++zth8mdVroiZp5vspqU9KCNC81shKRgr2Vf8+3kAbcmJHZU+SFnTthsqwTI+R6R3K79JmCBBScIKWkUyEivA==", + "license": "ISC", + "dependencies": { + "he": "^1.2.0" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1709,7 +1719,8 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@types/markdown-it": { "version": "14.1.2", @@ -1726,7 +1737,8 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@types/minimatch": { "version": "3.0.5", @@ -2136,7 +2148,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -3833,7 +3844,6 @@ "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", "dev": true, "license": "MIT", - "peer": true, "bin": { "jiti": "bin/jiti.js" } @@ -4653,7 +4663,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -4881,7 +4890,6 @@ "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.7.tgz", "integrity": "sha512-7Hc+IvlQ7hlaIfQFZnxlRl0jnpWq2qwibORBhQYIb0QbNtuicc5ZxvKkVT71HJ4Py1wSZ/3VR1r8LfkCtoCzhw==", "license": "MIT", - "peer": true, "dependencies": { "posthtml-parser": "^0.11.0", "posthtml-render": "^3.0.0" @@ -5850,7 +5858,6 @@ "integrity": "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", diff --git a/package.json b/package.json index 3c48c0b..2f0e3a1 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "@atproto/api": "^0.12.0", "@chrisburnell/eleventy-cache-webmentions": "^2.2.7", "@fontsource/inter": "^5.2.8", + "@kevingimbel/eleventy-plugin-mermaid": "^3.0.1", "@quasibit/eleventy-plugin-sitemap": "^2.2.0", "@resvg/resvg-js": "^2.6.2", "@rknightuk/eleventy-plugin-post-graph": "^1.0.8",