From 2be47f4ee2c3b5a75c5c389a05d818cd5061dee1 Mon Sep 17 00:00:00 2001 From: Matiboux Date: Wed, 15 Oct 2025 20:15:07 +0200 Subject: [PATCH 01/19] Add markdoc integration --- app/app/astro.config.mjs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/app/astro.config.mjs b/app/app/astro.config.mjs index 9e0f476..6c38300 100644 --- a/app/app/astro.config.mjs +++ b/app/app/astro.config.mjs @@ -1,4 +1,5 @@ import { defineConfig, envField } from 'astro/config' +import markdoc from '@astrojs/markdoc' import tailwindcss from '@tailwindcss/vite' import { i18n } from '/src/config' @@ -10,7 +11,9 @@ export default defineConfig({ build: { assetsPrefix: process.env.ASTRO_ASSETS_PREFIX || undefined, }, - integrations: [], + integrations: [ + markdoc(), + ], vite: { plugins: [ tailwindcss(), From a4ff026d547633fa2d402ffec373871298da3c1c Mon Sep 17 00:00:00 2001 From: Matiboux Date: Wed, 15 Oct 2025 20:21:43 +0200 Subject: [PATCH 02/19] Install @astrojs/markdoc --- app/app/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/app/app/package.json b/app/app/package.json index 4755ce2..03add63 100644 --- a/app/app/package.json +++ b/app/app/package.json @@ -28,6 +28,7 @@ "homepage": "https://github.com/FluffEvent/files-website#readme", "dependencies": { "@astrojs/check": "^0.9.4", + "@astrojs/markdoc": "^0.15.8", "@fontsource-variable/noto-serif": "^5.2.9", "@iconify-json/mdi": "^1.2.3", "@iconify-json/twemoji": "^1.2.4", From 84ff4a95ea2a728c5c528f4fe3cae2bd4e6efdb6 Mon Sep 17 00:00:00 2001 From: Matiboux Date: Wed, 15 Oct 2025 20:26:36 +0200 Subject: [PATCH 03/19] Configure markdoc integration --- app/app/astro.config.mjs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/app/astro.config.mjs b/app/app/astro.config.mjs index 6c38300..4acfd26 100644 --- a/app/app/astro.config.mjs +++ b/app/app/astro.config.mjs @@ -12,7 +12,10 @@ export default defineConfig({ assetsPrefix: process.env.ASTRO_ASSETS_PREFIX || undefined, }, integrations: [ - markdoc(), + markdoc({ + allowHTML: true, + ignoreIndentation: true, + }), ], vite: { plugins: [ From 2845c3a43ef2a8975ee933b8986b338d440285bf Mon Sep 17 00:00:00 2001 From: Matiboux Date: Wed, 15 Oct 2025 20:53:04 +0200 Subject: [PATCH 04/19] Install @astrojs/markdoc --- app/app/package.json | 2 +- app/app/pnpm-lock.yaml | 143 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 144 insertions(+), 1 deletion(-) diff --git a/app/app/package.json b/app/app/package.json index 03add63..de0413d 100644 --- a/app/app/package.json +++ b/app/app/package.json @@ -28,7 +28,7 @@ "homepage": "https://github.com/FluffEvent/files-website#readme", "dependencies": { "@astrojs/check": "^0.9.4", - "@astrojs/markdoc": "^0.15.8", + "@astrojs/markdoc": "^0.15.8", "@fontsource-variable/noto-serif": "^5.2.9", "@iconify-json/mdi": "^1.2.3", "@iconify-json/twemoji": "^1.2.4", diff --git a/app/app/pnpm-lock.yaml b/app/app/pnpm-lock.yaml index f6b32f1..d52ed7d 100644 --- a/app/app/pnpm-lock.yaml +++ b/app/app/pnpm-lock.yaml @@ -11,6 +11,9 @@ importers: '@astrojs/check': specifier: ^0.9.4 version: 0.9.4(typescript@5.9.3) + '@astrojs/markdoc': + specifier: ^0.15.8 + version: 0.15.8(astro@5.14.1(@types/node@22.18.8)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.46.3)(sass@1.93.2)(typescript@5.9.3)(yaml@2.7.1)) '@fontsource-variable/noto-serif': specifier: ^5.2.9 version: 5.2.9 @@ -69,6 +72,9 @@ packages: '@astrojs/internal-helpers@0.7.3': resolution: {integrity: sha512-6Pl0bQEIChuW5wqN7jdKrzWfCscW2rG/Cz+fzt4PhSQX2ivBpnhXgFUCs0M3DCYvjYHnPVG2W36X5rmFjZ62sw==} + '@astrojs/internal-helpers@0.7.4': + resolution: {integrity: sha512-lDA9MqE8WGi7T/t2BMi+EAXhs4Vcvr94Gqx3q15cFEz8oFZMO4/SFBqYr/UcmNlvW+35alowkVj+w9VhLvs5Cw==} + '@astrojs/language-server@2.15.4': resolution: {integrity: sha512-JivzASqTPR2bao9BWsSc/woPHH7OGSGc9aMxXL4U6egVTqBycB3ZHdBJPuOCVtcGLrzdWTosAqVPz1BVoxE0+A==} hasBin: true @@ -81,9 +87,18 @@ packages: prettier-plugin-astro: optional: true + '@astrojs/markdoc@0.15.8': + resolution: {integrity: sha512-FOYrIUvv4bvOOfOgTlL84Sp4O4rrhYSRkee17atybn12/KyG70s1DA4HCjS56ZustIxh86TMJxe0wt3J9PLddQ==} + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} + peerDependencies: + astro: ^5.0.0 + '@astrojs/markdown-remark@6.3.7': resolution: {integrity: sha512-KXGdq6/BC18doBCYXp08alHlWChH0hdD2B1qv9wIyOHbvwI5K6I7FhSta8dq1hBQNdun8YkKPR013D/Hm8xd0g==} + '@astrojs/markdown-remark@6.3.8': + resolution: {integrity: sha512-uFNyFWadnULWK2cOw4n0hLKeu+xaVWeuECdP10cQ3K2fkybtTlhb7J7TcScdjmS8Yps7oje9S/ehYMfZrhrgCg==} + '@astrojs/prism@3.3.0': resolution: {integrity: sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ==} engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} @@ -464,6 +479,18 @@ packages: '@jridgewell/trace-mapping@0.3.29': resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} + '@markdoc/markdoc@0.5.4': + resolution: {integrity: sha512-36YFNlqFk//gVNGm5xZaTWVwbAVF2AOmVjf1tiUrS6tCoD/YSkVy2E3CkAfhc5MlKcjparL/QFHCopxL4zRyaQ==} + engines: {node: '>=14.7.0'} + peerDependencies: + '@types/react': '*' + react: '*' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -807,9 +834,18 @@ packages: '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/linkify-it@3.0.5': + resolution: {integrity: sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==} + + '@types/markdown-it@12.2.3': + resolution: {integrity: sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==} + '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + '@types/mdurl@2.0.0': + resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} + '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} @@ -1113,6 +1149,19 @@ packages: dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + dset@3.1.4: resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} engines: {node: '>=4'} @@ -1130,6 +1179,10 @@ packages: resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} engines: {node: '>=10.13.0'} + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + entities@6.0.1: resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} @@ -1276,6 +1329,9 @@ packages: html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + htmlparser2@10.0.0: + resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} + http-cache-semantics@4.2.0: resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} @@ -2430,6 +2486,8 @@ snapshots: '@astrojs/internal-helpers@0.7.3': {} + '@astrojs/internal-helpers@0.7.4': {} + '@astrojs/language-server@2.15.4(typescript@5.9.3)': dependencies: '@astrojs/compiler': 2.12.2 @@ -2453,6 +2511,21 @@ snapshots: transitivePeerDependencies: - typescript + '@astrojs/markdoc@0.15.8(astro@5.14.1(@types/node@22.18.8)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.46.3)(sass@1.93.2)(typescript@5.9.3)(yaml@2.7.1))': + dependencies: + '@astrojs/internal-helpers': 0.7.4 + '@astrojs/markdown-remark': 6.3.8 + '@astrojs/prism': 3.3.0 + '@markdoc/markdoc': 0.5.4 + astro: 5.14.1(@types/node@22.18.8)(jiti@2.6.1)(lightningcss@1.30.1)(rollup@4.46.3)(sass@1.93.2)(typescript@5.9.3)(yaml@2.7.1) + esbuild: 0.25.9 + github-slugger: 2.0.0 + htmlparser2: 10.0.0 + transitivePeerDependencies: + - '@types/react' + - react + - supports-color + '@astrojs/markdown-remark@6.3.7': dependencies: '@astrojs/internal-helpers': 0.7.3 @@ -2479,6 +2552,32 @@ snapshots: transitivePeerDependencies: - supports-color + '@astrojs/markdown-remark@6.3.8': + dependencies: + '@astrojs/internal-helpers': 0.7.4 + '@astrojs/prism': 3.3.0 + github-slugger: 2.0.0 + hast-util-from-html: 2.0.3 + hast-util-to-text: 4.0.2 + import-meta-resolve: 4.2.0 + js-yaml: 4.1.0 + mdast-util-definitions: 6.0.0 + rehype-raw: 7.0.0 + rehype-stringify: 10.0.1 + remark-gfm: 4.0.1 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 + remark-smartypants: 3.0.2 + shiki: 3.13.0 + smol-toml: 1.4.2 + unified: 11.0.5 + unist-util-remove-position: 5.0.0 + unist-util-visit: 5.0.0 + unist-util-visit-parents: 6.0.1 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + '@astrojs/prism@3.3.0': dependencies: prismjs: 1.30.0 @@ -2773,6 +2872,11 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 + '@markdoc/markdoc@0.5.4': + optionalDependencies: + '@types/linkify-it': 3.0.5 + '@types/markdown-it': 12.2.3 + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -3048,10 +3152,22 @@ snapshots: dependencies: '@types/unist': 3.0.3 + '@types/linkify-it@3.0.5': + optional: true + + '@types/markdown-it@12.2.3': + dependencies: + '@types/linkify-it': 3.0.5 + '@types/mdurl': 2.0.0 + optional: true + '@types/mdast@4.0.4': dependencies: '@types/unist': 3.0.3 + '@types/mdurl@2.0.0': + optional: true + '@types/ms@2.1.0': {} '@types/nlcst@2.0.3': @@ -3441,6 +3557,24 @@ snapshots: dlv@1.1.3: {} + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dset@3.1.4: {} emmet@2.4.11: @@ -3457,6 +3591,8 @@ snapshots: graceful-fs: 4.2.11 tapable: 2.2.1 + entities@4.5.0: {} + entities@6.0.1: {} es-module-lexer@1.7.0: {} @@ -3674,6 +3810,13 @@ snapshots: html-void-elements@3.0.0: {} + htmlparser2@10.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 6.0.1 + http-cache-semantics@4.2.0: {} immutable@5.1.1: {} From e5eda01d58dfaa0cadaf7651a4055189cef9d366 Mon Sep 17 00:00:00 2001 From: Matiboux Date: Wed, 15 Oct 2025 22:00:47 +0200 Subject: [PATCH 05/19] Refactor shell vars --- cicd/transform-document.sh | 12 ++++++------ cicd/version-document.sh | 16 ++++++++-------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/cicd/transform-document.sh b/cicd/transform-document.sh index 612cdb6..bbf950e 100755 --- a/cicd/transform-document.sh +++ b/cicd/transform-document.sh @@ -8,18 +8,18 @@ if [ $# -gt 0 ]; then FILE="$1" shift fi -if [ ! -f "$FILE" ]; then - echo "File '$FILE' does not exist" +if [ ! -f "${FILE}" ]; then + echo "File '${FILE}' does not exist" exit 1 fi -echo "Transforming file '$FILE'..." +echo "Transforming file '${FILE}'..." # Replace '\[.....\]' or '.....' with long input line -sed -i 's/\\\[\.\{5\}\\\]\|\.\{5\}/<\/span>/g' "$FILE" +sed -i 's/\\\[\.\{5\}\\\]\|\.\{5\}/<\/span>/g' "${FILE}" # Replace '\[....\]' with two standard input lines -sed -i 's/\\\[\.\{4\}\\\]/<\/span><\/span><\/span><\/span>/g' "$FILE" +sed -i 's/\\\[\.\{4\}\\\]/<\/span><\/span><\/span><\/span>/g' "${FILE}" # Replace '\[...\]' or '....' with standard input line -sed -i 's/\\\[\.\{3\}\\\]\|\.\{4\}/<\/span><\/span>/g' "$FILE" +sed -i 's/\\\[\.\{3\}\\\]\|\.\{4\}/<\/span><\/span>/g' "${FILE}" diff --git a/cicd/version-document.sh b/cicd/version-document.sh index 478d2c8..d3f1bcc 100755 --- a/cicd/version-document.sh +++ b/cicd/version-document.sh @@ -7,8 +7,8 @@ if [ $# -gt 0 ]; then FILE="$1" shift fi -if [ ! -f "$FILE" ]; then - echo "File '$FILE' does not exist" +if [ ! -f "${FILE}" ]; then + echo "File '${FILE}' does not exist" exit 1 fi @@ -18,25 +18,25 @@ if [ $# -gt 0 ]; then VERSION="$1" shift fi -if [ -z "$VERSION" ]; then +if [ -z "${VERSION}" ]; then echo "Version is required" exit 1 fi -echo "Adding version '$VERSION' to file '$FILE'..." +echo "Adding version '${VERSION}' to file '${FILE}'..." # Check for existing front matter -if [ "$(head -n 1 "$FILE")" = '---' ]; then +if [ "$(head -n 1 "${FILE}")" = '---' ]; then # Get line number of closing front matter delimiter - LINE=$(grep -m 2 -n '^---$' "$FILE" | tail -n 1 | cut -d ':' -f 1) + LINE=$(grep -m 2 -n '^---$' "${FILE}" | tail -n 1 | cut -d ':' -f 1) # Append version to front matter - sed -i "5i\version: '$VERSION'" "$FILE" + sed -i "5i\version: '${VERSION}'" "${FILE}" else # Prepend new front matter with version - sed -i "1i\---\nversion: '$VERSION'\n---\n" "$FILE" + sed -i "1i\---\nversion: '${VERSION}'\n---\n" "${FILE}" fi From 713224bc526bb00bfcceaae4e8907a1508a46d88 Mon Sep 17 00:00:00 2001 From: Matiboux Date: Wed, 15 Oct 2025 22:20:26 +0200 Subject: [PATCH 06/19] Use docker busybox for sed commands --- cicd/transform-document.sh | 15 ++++++++++++--- cicd/version-document.sh | 12 ++++++++++-- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/cicd/transform-document.sh b/cicd/transform-document.sh index bbf950e..abc15bd 100755 --- a/cicd/transform-document.sh +++ b/cicd/transform-document.sh @@ -15,11 +15,20 @@ fi echo "Transforming file '${FILE}'..." +docker run \ + --rm \ + -v "$(realpath "$(dirname "${FILE}")"):/workdir" \ + busybox:latest \ + <<\/span>/g' "${FILE}" +sed -i 's/\\\[\.\{5\}\\\]\|\.\{5\}/<\/span>/g' \ + "/workdir/$(basename "${FILE}")" # Replace '\[....\]' with two standard input lines -sed -i 's/\\\[\.\{4\}\\\]/<\/span><\/span><\/span><\/span>/g' "${FILE}" +sed -i 's/\\\[\.\{4\}\\\]/<\/span><\/span><\/span><\/span>/g' \ + "/workdir/$(basename "${FILE}")" # Replace '\[...\]' or '....' with standard input line -sed -i 's/\\\[\.\{3\}\\\]\|\.\{4\}/<\/span><\/span>/g' "${FILE}" +sed -i 's/\\\[\.\{3\}\\\]\|\.\{4\}/<\/span><\/span>/g' \ + "/workdir/$(basename "${FILE}")" +EOF diff --git a/cicd/version-document.sh b/cicd/version-document.sh index d3f1bcc..3c77a8e 100755 --- a/cicd/version-document.sh +++ b/cicd/version-document.sh @@ -32,11 +32,19 @@ if [ "$(head -n 1 "${FILE}")" = '---' ]; then LINE=$(grep -m 2 -n '^---$' "${FILE}" | tail -n 1 | cut -d ':' -f 1) # Append version to front matter - sed -i "5i\version: '${VERSION}'" "${FILE}" + docker run \ + --rm \ + -v "$(realpath "$(dirname "${FILE}")"):/workdir" \ + busybox:latest \ + sed -i "${LINE}i\version: '${VERSION}'" "/workdir/$(basename "${FILE}")" else # Prepend new front matter with version - sed -i "1i\---\nversion: '${VERSION}'\n---\n" "${FILE}" + docker run \ + --rm \ + -v "$(realpath "$(dirname "${FILE}")"):/workdir" \ + busybox:latest \ + sed -i "1i---\nversion: '${VERSION}'\n---\n" "/workdir/$(basename "${FILE}")" fi From a107cd5dba0b5b7703dbbb3d6360688818323dcb Mon Sep 17 00:00:00 2001 From: Matiboux Date: Wed, 15 Oct 2025 23:11:28 +0200 Subject: [PATCH 07/19] Support mdoc files in content --- app/app/src/content.config.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/app/src/content.config.ts b/app/app/src/content.config.ts index e1ffbf2..8a2dbb4 100644 --- a/app/app/src/content.config.ts +++ b/app/app/src/content.config.ts @@ -3,13 +3,13 @@ import { glob } from 'astro/loaders' export const collections = { documents: defineCollection({ - loader: glob({ pattern: '**/*.md', base: './src/content/documents' }), + loader: glob({ pattern: '**/*.(md|mdoc)', base: './src/content/documents' }), schema: z.object({ version: z.string().optional(), }), }), 'private-documents': defineCollection({ - loader: glob({ pattern: '**/*.md', base: './src/content/private-documents' }), + loader: glob({ pattern: '**/*.(md|mdoc)', base: './src/content/private-documents' }), schema: z.object({ version: z.string().optional(), }), From c3a4cb1284f62bb5032edd81cc7aeef95b0a7bc0 Mon Sep 17 00:00:00 2001 From: Matiboux Date: Wed, 15 Oct 2025 23:14:27 +0200 Subject: [PATCH 08/19] Provide frontmatter data & lang in markdoc files --- app/app/src/pages/document/[document].astro | 2 +- app/app/src/pages/private-document/[document].astro | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/app/src/pages/document/[document].astro b/app/app/src/pages/document/[document].astro index 5ce200e..f119374 100644 --- a/app/app/src/pages/document/[document].astro +++ b/app/app/src/pages/document/[document].astro @@ -28,7 +28,7 @@ const { Content, headings } = await render(entry) - + diff --git a/app/app/src/pages/private-document/[document].astro b/app/app/src/pages/private-document/[document].astro index 0f27acf..886004b 100644 --- a/app/app/src/pages/private-document/[document].astro +++ b/app/app/src/pages/private-document/[document].astro @@ -28,7 +28,7 @@ const { Content, headings } = await render(entry) - + From 7907e326a729e88800f818a1eac907fae916d817 Mon Sep 17 00:00:00 2001 From: Matiboux Date: Wed, 15 Oct 2025 23:38:32 +0200 Subject: [PATCH 09/19] Add markdoc Translate component --- app/app/markdoc.config.mjs | 13 +++++++++++++ app/app/src/components/markdoc/Translate.astro | 8 ++++++++ 2 files changed, 21 insertions(+) create mode 100644 app/app/markdoc.config.mjs create mode 100644 app/app/src/components/markdoc/Translate.astro diff --git a/app/app/markdoc.config.mjs b/app/app/markdoc.config.mjs new file mode 100644 index 0000000..51602e7 --- /dev/null +++ b/app/app/markdoc.config.mjs @@ -0,0 +1,13 @@ +import { defineMarkdocConfig, component } from '@astrojs/markdoc/config' + +export default defineMarkdocConfig({ + tags: { + i18n: { + render: component('./src/components/markdoc/Translate.astro'), + attributes: { + en: { type: String, required: true }, + fr: { type: String }, + }, + }, + }, +}) diff --git a/app/app/src/components/markdoc/Translate.astro b/app/app/src/components/markdoc/Translate.astro new file mode 100644 index 0000000..5dea083 --- /dev/null +++ b/app/app/src/components/markdoc/Translate.astro @@ -0,0 +1,8 @@ +--- +interface Props +{ + [lang: string]: string +} +--- + +{Astro.props[Astro.currentLocale] ?? Astro.props['en']} From 0da80374aece81a3873818c086569960fe8964c7 Mon Sep 17 00:00:00 2001 From: Matiboux Date: Wed, 15 Oct 2025 23:44:02 +0200 Subject: [PATCH 10/19] Update I18n markdoc component --- app/app/markdoc.config.mjs | 5 ++--- app/app/src/components/markdoc/I18n.astro | 8 ++++++++ app/app/src/components/markdoc/Translate.astro | 8 -------- 3 files changed, 10 insertions(+), 11 deletions(-) create mode 100644 app/app/src/components/markdoc/I18n.astro delete mode 100644 app/app/src/components/markdoc/Translate.astro diff --git a/app/app/markdoc.config.mjs b/app/app/markdoc.config.mjs index 51602e7..8700b52 100644 --- a/app/app/markdoc.config.mjs +++ b/app/app/markdoc.config.mjs @@ -3,10 +3,9 @@ import { defineMarkdocConfig, component } from '@astrojs/markdoc/config' export default defineMarkdocConfig({ tags: { i18n: { - render: component('./src/components/markdoc/Translate.astro'), + render: component('./src/components/markdoc/I18n.astro'), attributes: { - en: { type: String, required: true }, - fr: { type: String }, + locales: { type: Object, required: true }, }, }, }, diff --git a/app/app/src/components/markdoc/I18n.astro b/app/app/src/components/markdoc/I18n.astro new file mode 100644 index 0000000..6ed87bb --- /dev/null +++ b/app/app/src/components/markdoc/I18n.astro @@ -0,0 +1,8 @@ +--- +interface Props +{ + locales: Record +} +--- + +{Astro.props.locales[Astro.currentLocale] ?? Astro.props.locales['en']} diff --git a/app/app/src/components/markdoc/Translate.astro b/app/app/src/components/markdoc/Translate.astro deleted file mode 100644 index 5dea083..0000000 --- a/app/app/src/components/markdoc/Translate.astro +++ /dev/null @@ -1,8 +0,0 @@ ---- -interface Props -{ - [lang: string]: string -} ---- - -{Astro.props[Astro.currentLocale] ?? Astro.props['en']} From ced236d56a14e79c8dbf1211515e6e02b3d715cb Mon Sep 17 00:00:00 2001 From: Matiboux Date: Mon, 20 Oct 2025 20:34:18 +0200 Subject: [PATCH 11/19] Refactor controls in renderdocument --- app/app/src/components/RenderDocument.astro | 58 ++++++++++----------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/app/app/src/components/RenderDocument.astro b/app/app/src/components/RenderDocument.astro index f4e567a..9fb40a9 100644 --- a/app/app/src/components/RenderDocument.astro +++ b/app/app/src/components/RenderDocument.astro @@ -23,35 +23,35 @@ const version = data.version || import.meta.env.GITHUB_SHA || 'dev' const footerText = data.footer || null --- -
+
-
+ +
-
+ - + - + - +
-
+
-
+
@@ -110,17 +110,12 @@ const footerText = data.footer || null