From 088550a85ae7fc210678ac10cee28c003dc1f262 Mon Sep 17 00:00:00 2001 From: LATCHIMY Nicolas Date: Sun, 18 Jan 2026 21:50:42 +0400 Subject: [PATCH] bujo et modification de texte --- astro.config.mjs | 9 +- config.ts | 11 + package-lock.json | 1341 ++++++++++++++++- package.json | 7 +- src/components/bujo/BujoFutureLog.astro | 41 + src/components/bujo/BujoIndex.astro | 59 + src/components/bujo/BujoKeys.astro | 50 + src/components/bujo/CollectionBooks.astro | 39 + src/components/bujo/CollectionFilms.astro | 38 + src/components/bujo/CollectionObjectifs.astro | 46 + .../bujo/CollectionPlaceholder.astro | 10 + src/components/bujo/CollectionTracker.astro | 63 + src/components/bujo/Key.astro | 24 + src/components/bujo/MonthlyLog.astro | 62 + src/content/bujo/2026/01/18.mdx | 71 + .../bujo/future/negocier-contrat-cirrus.md | 35 + src/content/bujo/future/vacances-ete-2026.md | 6 + src/content/config.ts | 44 - src/content/journal/obscur.md | 12 +- src/content/logs/pivot-structurel.md | 32 + src/layouts/LifeLayout.astro | 39 + src/modele/19.mdx | 60 + src/modele/20.mdx | 60 + src/modele/21.mdx | 60 + src/modele/22.mdx | 60 + src/modele/23.mdx | 60 + src/modele/24.mdx | 51 + src/modele/25.mdx | 59 + src/pages/auteur.astro | 10 + src/pages/bujo/[...slug].astro | 133 ++ src/styles/global.css | 1 + tsconfig.json | 13 +- 32 files changed, 2544 insertions(+), 62 deletions(-) create mode 100644 src/components/bujo/BujoFutureLog.astro create mode 100644 src/components/bujo/BujoIndex.astro create mode 100644 src/components/bujo/BujoKeys.astro create mode 100644 src/components/bujo/CollectionBooks.astro create mode 100644 src/components/bujo/CollectionFilms.astro create mode 100644 src/components/bujo/CollectionObjectifs.astro create mode 100644 src/components/bujo/CollectionPlaceholder.astro create mode 100644 src/components/bujo/CollectionTracker.astro create mode 100644 src/components/bujo/Key.astro create mode 100644 src/components/bujo/MonthlyLog.astro create mode 100644 src/content/bujo/2026/01/18.mdx create mode 100644 src/content/bujo/future/negocier-contrat-cirrus.md create mode 100644 src/content/bujo/future/vacances-ete-2026.md delete mode 100644 src/content/config.ts create mode 100644 src/content/logs/pivot-structurel.md create mode 100644 src/layouts/LifeLayout.astro create mode 100644 src/modele/19.mdx create mode 100644 src/modele/20.mdx create mode 100644 src/modele/21.mdx create mode 100644 src/modele/22.mdx create mode 100644 src/modele/23.mdx create mode 100644 src/modele/24.mdx create mode 100644 src/modele/25.mdx create mode 100644 src/pages/bujo/[...slug].astro create mode 100644 src/styles/global.css diff --git a/astro.config.mjs b/astro.config.mjs index e762ba5..ec084d3 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -1,5 +1,12 @@ // @ts-check import { defineConfig } from 'astro/config'; +import tailwindcss from "@tailwindcss/vite"; +import mdx from "@astrojs/mdx"; // https://astro.build/config -export default defineConfig({}); +export default defineConfig({ + vite: { + plugins: [tailwindcss()], + }, + integrations: [mdx()] +}); \ No newline at end of file diff --git a/config.ts b/config.ts index 95fb94a..befbab5 100644 --- a/config.ts +++ b/config.ts @@ -36,8 +36,19 @@ const codexCollection = defineCollection({ }), }); +const bujoCollection = defineCollection({ + type: 'content', + schema: z.object({ + title: z.string(), + publishDate: z.date(), + tags: z.array(z.string()), + period: z.string().optional(), + }), +}); + export const collections = { journal: journalCollection, logs: logsCollection, codex: codexCollection, + bujo: bujoCollection, }; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 0768107..c2d2ab4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,10 @@ "name": "sweet", "version": "0.0.1", "dependencies": { - "astro": "^5.16.8" + "@astrojs/mdx": "^4.3.13", + "@tailwindcss/vite": "^4.1.18", + "astro": "^5.16.8", + "tailwindcss": "^4.1.18" } }, "node_modules/@astrojs/compiler": { @@ -52,6 +55,33 @@ "vfile": "^6.0.3" } }, + "node_modules/@astrojs/mdx": { + "version": "4.3.13", + "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-4.3.13.tgz", + "integrity": "sha512-IHDHVKz0JfKBy3//52JSiyWv089b7GVSChIXLrlUOoTLWowG3wr2/8hkaEgEyd/vysvNQvGk+QhysXpJW5ve6Q==", + "license": "MIT", + "dependencies": { + "@astrojs/markdown-remark": "6.3.10", + "@mdx-js/mdx": "^3.1.1", + "acorn": "^8.15.0", + "es-module-lexer": "^1.7.0", + "estree-util-visit": "^2.0.0", + "hast-util-to-html": "^9.0.5", + "piccolore": "^0.1.3", + "rehype-raw": "^7.0.0", + "remark-gfm": "^4.0.1", + "remark-smartypants": "^3.0.2", + "source-map": "^0.7.6", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.3" + }, + "engines": { + "node": "18.20.8 || ^20.3.0 || >=22.0.0" + }, + "peerDependencies": { + "astro": "^5.0.0" + } + }, "node_modules/@astrojs/prism": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-3.3.0.tgz", @@ -1032,12 +1062,88 @@ "url": "https://opencollective.com/libvips" } }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", "license": "MIT" }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mdx-js/mdx": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.1.tgz", + "integrity": "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "acorn": "^8.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-scope": "^1.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "recma-build-jsx": "^1.0.0", + "recma-jsx": "^1.0.0", + "recma-stringify": "^1.0.0", + "rehype-recma": "^1.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/@oslojs/encoding": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@oslojs/encoding/-/encoding-1.1.0.tgz", @@ -1464,6 +1570,263 @@ "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", "license": "MIT" }, + "node_modules/@tailwindcss/node": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.18.tgz", + "integrity": "sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.4", + "enhanced-resolve": "^5.18.3", + "jiti": "^2.6.1", + "lightningcss": "1.30.2", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.18" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.18.tgz", + "integrity": "sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==", + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.18", + "@tailwindcss/oxide-darwin-arm64": "4.1.18", + "@tailwindcss/oxide-darwin-x64": "4.1.18", + "@tailwindcss/oxide-freebsd-x64": "4.1.18", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.18", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.18", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.18", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.18", + "@tailwindcss/oxide-linux-x64-musl": "4.1.18", + "@tailwindcss/oxide-wasm32-wasi": "4.1.18", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.18", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.18" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.18.tgz", + "integrity": "sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.18.tgz", + "integrity": "sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.18.tgz", + "integrity": "sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.18.tgz", + "integrity": "sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.18.tgz", + "integrity": "sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.18.tgz", + "integrity": "sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.18.tgz", + "integrity": "sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.18.tgz", + "integrity": "sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.18.tgz", + "integrity": "sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.18.tgz", + "integrity": "sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1", + "@emnapi/wasi-threads": "^1.1.0", + "@napi-rs/wasm-runtime": "^1.1.0", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.18.tgz", + "integrity": "sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.18.tgz", + "integrity": "sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.18.tgz", + "integrity": "sha512-jVA+/UpKL1vRLg6Hkao5jldawNmRo7mQYrZtNHMIVpLfLhDml5nMRUo/8MwoX2vNXvnaXNNMedrMfMugAVX1nA==", + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.1.18", + "@tailwindcss/oxide": "4.1.18", + "tailwindcss": "4.1.18" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7" + } + }, "node_modules/@types/debug": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", @@ -1479,6 +1842,15 @@ "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "license": "MIT" }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, "node_modules/@types/hast": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", @@ -1497,6 +1869,12 @@ "@types/unist": "*" } }, + "node_modules/@types/mdx": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", + "license": "MIT" + }, "node_modules/@types/ms": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", @@ -1536,6 +1914,15 @@ "node": ">=0.4.0" } }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, "node_modules/ansi-align": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", @@ -1660,6 +2047,15 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/astring": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", + "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", + "license": "MIT", + "bin": { + "astring": "bin/astring" + } + }, "node_modules/astro": { "version": "5.16.8", "resolved": "https://registry.npmjs.org/astro/-/astro-5.16.8.tgz", @@ -1863,6 +2259,16 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/chokidar": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", @@ -1914,6 +2320,16 @@ "node": ">=6" } }, + "node_modules/collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/comma-separated-tokens": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", @@ -2109,7 +2525,6 @@ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", "license": "Apache-2.0", - "optional": true, "engines": { "node": ">=8" } @@ -2242,6 +2657,19 @@ "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", "license": "MIT" }, + "node_modules/enhanced-resolve": { + "version": "5.18.4", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz", + "integrity": "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/entities": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", @@ -2260,6 +2688,38 @@ "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", "license": "MIT" }, + "node_modules/esast-util-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", + "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esast-util-from-js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz", + "integrity": "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "acorn": "^8.0.0", + "esast-util-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/esbuild": { "version": "0.25.12", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", @@ -2313,6 +2773,88 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/estree-util-attach-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-build-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", + "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-walker": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-scope": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.0.tgz", + "integrity": "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-to-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", + "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/estree-walker": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", @@ -2413,6 +2955,12 @@ "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", "license": "ISC" }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, "node_modules/h3": { "version": "1.15.4", "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.4.tgz", @@ -2519,6 +3067,34 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-to-estree": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", + "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-attach-comments": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hast-util-to-html": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", @@ -2542,6 +3118,33 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hast-util-to-parse5": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.1.tgz", @@ -2639,6 +3242,12 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/inline-style-parser": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz", + "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==", + "license": "MIT" + }, "node_modules/iron-webcrypto": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz", @@ -2648,6 +3257,40 @@ "url": "https://github.com/sponsors/brc-dd" } }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-docker": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", @@ -2672,6 +3315,16 @@ "node": ">=8" } }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-inside-container": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", @@ -2717,6 +3370,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, "node_modules/js-yaml": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", @@ -2738,6 +3400,255 @@ "node": ">=6" } }, + "node_modules/lightningcss": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz", + "integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.30.2", + "lightningcss-darwin-arm64": "1.30.2", + "lightningcss-darwin-x64": "1.30.2", + "lightningcss-freebsd-x64": "1.30.2", + "lightningcss-linux-arm-gnueabihf": "1.30.2", + "lightningcss-linux-arm64-gnu": "1.30.2", + "lightningcss-linux-arm64-musl": "1.30.2", + "lightningcss-linux-x64-gnu": "1.30.2", + "lightningcss-linux-x64-musl": "1.30.2", + "lightningcss-win32-arm64-msvc": "1.30.2", + "lightningcss-win32-x64-msvc": "1.30.2" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz", + "integrity": "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz", + "integrity": "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz", + "integrity": "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz", + "integrity": "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz", + "integrity": "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz", + "integrity": "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz", + "integrity": "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz", + "integrity": "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz", + "integrity": "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz", + "integrity": "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz", + "integrity": "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, "node_modules/longest-streak": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", @@ -2774,6 +3685,18 @@ "source-map-js": "^1.2.1" } }, + "node_modules/markdown-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", + "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/markdown-table": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", @@ -2940,6 +3863,83 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/mdast-util-phrasing": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", @@ -3205,6 +4205,108 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/micromark-extension-mdx-expression": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", + "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", + "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "license": "MIT", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/micromark-factory-destination": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", @@ -3248,6 +4350,33 @@ "micromark-util-types": "^2.0.0" } }, + "node_modules/micromark-factory-mdx-expression": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", + "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, "node_modules/micromark-factory-space": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", @@ -3449,6 +4578,31 @@ ], "license": "MIT" }, + "node_modules/micromark-util-events-to-acorn": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", + "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, "node_modules/micromark-util-html-tag-name": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", @@ -3749,6 +4903,31 @@ "integrity": "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==", "license": "MIT" }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, "node_modules/parse-latin": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-7.0.0.tgz", @@ -3882,6 +5061,73 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/recma-build-jsx": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", + "integrity": "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-build-jsx": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-jsx": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.1.tgz", + "integrity": "sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==", + "license": "MIT", + "dependencies": { + "acorn-jsx": "^5.0.0", + "estree-util-to-js": "^2.0.0", + "recma-parse": "^1.0.0", + "recma-stringify": "^1.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/recma-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-parse/-/recma-parse-1.0.0.tgz", + "integrity": "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "esast-util-from-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-stringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-stringify/-/recma-stringify-1.0.0.tgz", + "integrity": "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-to-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/regex": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/regex/-/regex-6.1.0.tgz", @@ -3952,6 +5198,21 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/rehype-recma": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz", + "integrity": "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "hast-util-to-estree": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/rehype-stringify": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.1.tgz", @@ -3985,6 +5246,20 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/remark-mdx": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.1.tgz", + "integrity": "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==", + "license": "MIT", + "dependencies": { + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/remark-parse": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", @@ -4114,7 +5389,6 @@ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.55.1.tgz", "integrity": "sha512-wDv/Ht1BNHB4upNbK74s9usvl7hObDnvVzknxqY/E/O3X6rW1U1rV1aENEfJ54eFZDTNo7zv1f5N4edCluH7+A==", "license": "MIT", - "peer": true, "dependencies": { "@types/estree": "1.0.8" }, @@ -4254,6 +5528,15 @@ "url": "https://github.com/sponsors/cyyynthia" } }, + "node_modules/source-map": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 12" + } + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -4319,6 +5602,24 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, + "node_modules/style-to-js": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz", + "integrity": "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==", + "license": "MIT", + "dependencies": { + "style-to-object": "1.0.14" + } + }, + "node_modules/style-to-object": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz", + "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==", + "license": "MIT", + "dependencies": { + "inline-style-parser": "0.2.7" + } + }, "node_modules/svgo": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.0.0.tgz", @@ -4344,6 +5645,25 @@ "url": "https://opencollective.com/svgo" } }, + "node_modules/tailwindcss": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz", + "integrity": "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==", + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/tiny-inflate": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", @@ -4550,6 +5870,19 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/unist-util-remove-position": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", @@ -4762,7 +6095,6 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", @@ -4961,7 +6293,6 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/package.json b/package.json index fc5ec97..e102d41 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,9 @@ "astro": "astro" }, "dependencies": { - "astro": "^5.16.8" + "@astrojs/mdx": "^4.3.13", + "@tailwindcss/vite": "^4.1.18", + "astro": "^5.16.8", + "tailwindcss": "^4.1.18" } -} \ No newline at end of file +} diff --git a/src/components/bujo/BujoFutureLog.astro b/src/components/bujo/BujoFutureLog.astro new file mode 100644 index 0000000..6b00f0f --- /dev/null +++ b/src/components/bujo/BujoFutureLog.astro @@ -0,0 +1,41 @@ +--- +import { getCollection } from 'astro:content'; + +const months = [ + "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", + "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre" +]; + +// 1. Récupérer tous les événements futurs +const futureEvents = await getCollection('bujo', ({ id }) => { + return id.startsWith('future/'); +}); + +// 2. Grouper les événements par mois +const eventsByMonth = {}; +futureEvents.forEach(event => { + const monthIndex = event.data.publishDate.getMonth(); // 0 = Janvier, 1 = Février, etc. + if (!eventsByMonth[monthIndex]) { + eventsByMonth[monthIndex] = []; + } + eventsByMonth[monthIndex].push(event); +}); +--- + +

Future Log

+

La vue d'ensemble de l'année à venir. Les grands rendez-vous, les voyages, les jalons importants.

+ +
+ {months.map((monthName, index) => ( +
+

{monthName} 2026

+
+ {eventsByMonth[index] ? eventsByMonth[index].map(event => ( +
{event.data.publishDate.getDate()} - {event.data.title}
+ )) : ( +
+ )} +
+
+ ))} +
\ No newline at end of file diff --git a/src/components/bujo/BujoIndex.astro b/src/components/bujo/BujoIndex.astro new file mode 100644 index 0000000..24b6779 --- /dev/null +++ b/src/components/bujo/BujoIndex.astro @@ -0,0 +1,59 @@ +--- +const { months } = Astro.props; +--- +

Index du Journal

+ +
+

Fondations

+ +
+ +
+

Logs Temporels

+

Le cœur du journal, où le temps est cartographié mois par mois.

+
+ {months.map(monthPath => { + const [year, month] = monthPath.split('/'); + const monthName = new Date(parseInt(year), parseInt(month) - 1).toLocaleString('fr-FR', { month: 'long' }); + return ( + + {monthName.charAt(0).toUpperCase() + monthName.slice(1)} {year} + + ) + })} +
+
+ +
+

Collections

+

Les pages thématiques qui rassemblent idées, suivis et inspirations.

+
+
+

Organisation & Suivi

+ +
+
+

Inspiration & Bien-être

+ +
+ +
+
diff --git a/src/components/bujo/BujoKeys.astro b/src/components/bujo/BujoKeys.astro new file mode 100644 index 0000000..8b79c1e --- /dev/null +++ b/src/components/bujo/BujoKeys.astro @@ -0,0 +1,50 @@ +--- +--- +

Les Clés

+

Ceci est notre langage pour capturer les pensées rapidement. Chaque symbole a une intention.

+ +
+
+

Symboles de Base

+
    +
  • Tâche à faire
  • +
  • XTâche terminée
  • +
  • >Tâche reportée (migrée)
  • +
  • <Tâche planifiée (calendrier)
  • +
  • Événement
  • +
  • Note / Idée
  • +
  • Tâche annulée
  • +
+
+ +
+

Signifiants de Priorité (Préfixes)

+

Placés à gauche du symbole de base pour ajouter du contexte.

+
    +
  • *Priorité absolue
  • +
  • !Inspiration, Eurêka !
  • +
  • $Aspect financier
  • +
  • 👁️À explorer / Rechercher
  • +
+
+ +
+

Souffle de Vie (Bien-être & Réflexion)

+
    +
  • Leçon apprise, réflexion
  • +
  • Moment de gratitude
  • +
  • En attente (dépend de qqn d'autre)
  • +
  • Rituel, habitude ancrée
  • +
+
+ +
+

Exemple d'utilisation :

+
+

* • Finaliser le projet A

+

$ – Penser à renouveler l'abonnement

+

! △ La patience est la forme la plus douce du courage.

+

○ Dîner avec Marc à 20h

+
+
+
\ No newline at end of file diff --git a/src/components/bujo/CollectionBooks.astro b/src/components/bujo/CollectionBooks.astro new file mode 100644 index 0000000..c906919 --- /dev/null +++ b/src/components/bujo/CollectionBooks.astro @@ -0,0 +1,39 @@ +--- +// Exemple de données. Plus tard, cela pourrait venir de fichiers de contenu. +const books = [ + { title: "Vers la beauté", author: "David Foenkinos", status: "En cours" }, +]; + +const booksByStatus = { + 'En cours': books.filter(b => b.status === 'En cours'), + 'À lire': books.filter(b => b.status === 'À lire'), + 'À acheter': books.filter(b => b.status === 'À acheter'), + 'Lu': books.filter(b => b.status === 'Lu'), +}; + +const statusStyles = { + 'En cours': 'bg-blue-100 text-blue-800', + 'À lire': 'bg-yellow-100 text-yellow-800', + 'Lu': 'bg-green-100 text-green-800', +}; +--- + +

Collection : Livres à lire

+

La pile de savoir et d'évasion qui attend d'être explorée.

+ +{Object.entries(booksByStatus).map(([status, bookList]) => ( +
+

{status}

+ +
+))} \ No newline at end of file diff --git a/src/components/bujo/CollectionFilms.astro b/src/components/bujo/CollectionFilms.astro new file mode 100644 index 0000000..1578fce --- /dev/null +++ b/src/components/bujo/CollectionFilms.astro @@ -0,0 +1,38 @@ +--- +// Example data. +const items = [ + { title: "Demon Slayer : La forteresse infinie", type: "Film", status: "Vu" }, +]; + +const itemsByStatus = { + 'En cours': items.filter(b => b.status === 'En cours'), + 'À voir': items.filter(b => b.status === 'À voir'), + 'Vu': items.filter(b => b.status === 'Vu'), +}; + +const statusStyles = { + 'En cours': 'bg-blue-100 text-blue-800', + 'À voir': 'bg-yellow-100 text-yellow-800', + 'Vu': 'bg-green-100 text-green-800', +}; +--- + +

Collection : Films & Séries à voir

+

Pour ne jamais être à court d'idées lors d'une soirée cinéma.

+ +{Object.entries(itemsByStatus).map(([status, itemList]) => ( +
+

{status}

+ +
+))} \ No newline at end of file diff --git a/src/components/bujo/CollectionObjectifs.astro b/src/components/bujo/CollectionObjectifs.astro new file mode 100644 index 0000000..e7e8e1b --- /dev/null +++ b/src/components/bujo/CollectionObjectifs.astro @@ -0,0 +1,46 @@ +--- +// Example data. This could later come from content files. +const objectives = [ + { + title: "Finaliser le pivot structurel du site", + steps: [ + ] + }, + { + title: "Lancer la section 'Journal de Bord'", + steps: [ + { text: "Créer l'architecture du Bujo", done: true }, + { text: "Remplir les collections de base", done: true }, + ] + }, + { + title: "Améliorer ma pratique d'Obsidian", + steps: [ + ] + }, + { + title: "Améliorer ma pratique d'Astro", + steps: [ + ] + } +]; +--- + +

Collection : Objectifs du Mois

+

Découper les grandes ambitions en étapes réalisables pour rester motivé.

+ +
+ {objectives.map(obj => ( +
+

{obj.title}

+
    + {obj.steps.map(step => ( +
  • + + {step.text} +
  • + ))} +
+
+ ))} +
\ No newline at end of file diff --git a/src/components/bujo/CollectionPlaceholder.astro b/src/components/bujo/CollectionPlaceholder.astro new file mode 100644 index 0000000..5b04fdc --- /dev/null +++ b/src/components/bujo/CollectionPlaceholder.astro @@ -0,0 +1,10 @@ +--- +const { collectionTitle } = Astro.props; +const capitalizedTitle = collectionTitle ? collectionTitle.charAt(0).toUpperCase() + collectionTitle.slice(1) : "Collection"; +--- +

Collection : {capitalizedTitle}

+

Cette collection est en cours de construction.

+ +
+

Contenu à venir...

+
\ No newline at end of file diff --git a/src/components/bujo/CollectionTracker.astro b/src/components/bujo/CollectionTracker.astro new file mode 100644 index 0000000..543caaa --- /dev/null +++ b/src/components/bujo/CollectionTracker.astro @@ -0,0 +1,63 @@ +--- +// Exemple de données. Plus tard, cela pourrait venir de fichiers de contenu. +const habits = [ + "Sport (3x/sem)", + "Méditation", + "Lecture", + "Écriture (Log/Journal)", + "Pratique du code", + "Budget respecté", + "Coucher avant 23h" +]; + +const daysInMonth = 31; // Pour Janvier, à rendre dynamique plus tard + +// C'est ici que vous contrôlez l'état du tracker. +// Pour chaque habitude, listez les jours où elle a été complétée. +const completedHabits = { + "Sport (3x/sem)": [], + "Méditation": [], + "Lecture": [], + "Écriture (Log/Journal)": [17, 18], + "Pratique du code": [17,18], + "Budget respecté": [], + "Coucher avant 23h": [], +}; +--- + +

Collection : Trackers Mensuels

+

Une vue d'ensemble pour cultiver la discipline et observer les schémas qui se dessinent.

+ +
+

Janvier 2026

+
+ + + + + {Array.from({ length: daysInMonth }, (_, i) => ( + + ))} + + + + {habits.map(habit => ( + + + {Array.from({ length: daysInMonth }, (_, i) => { + const day = i + 1; + const isCompleted = completedHabits[habit]?.includes(day); + const cellClass = isCompleted ? 'bg-green-400' : 'bg-white'; + return ( + + ); + })} + + ))} + +
Habitude{i + 1}
{habit} +
+
+
+

Astuce : Sur mobile, la grille peut être scrollée horizontalement.

+
\ No newline at end of file diff --git a/src/components/bujo/Key.astro b/src/components/bujo/Key.astro new file mode 100644 index 0000000..3dde153 --- /dev/null +++ b/src/components/bujo/Key.astro @@ -0,0 +1,24 @@ +--- +const { symbol } = Astro.props; + +const keyMap = { + '•': { style: '' }, + 'X': { style: 'text-green-600' }, + '>': { style: 'text-blue-600' }, + '<': { style: 'text-orange-600' }, + '○': { style: '' }, + '–': { style: '' }, + 's': { style: 'text-slate-400', symbol: '' }, // Cas spécial pour la tâche annulée + '*': { style: 'text-red-500' }, + '!': { style: 'text-yellow-500' }, + '$': { style: 'text-green-700' }, + '👁️': { style: '' }, + '△': { style: '' }, + '♡': { style: 'text-pink-500' }, + '⭘': { style: '' }, + '⚓': { style: '' }, +}; + +const currentKey = keyMap[symbol] || { style: '', symbol: symbol }; +--- + \ No newline at end of file diff --git a/src/components/bujo/MonthlyLog.astro b/src/components/bujo/MonthlyLog.astro new file mode 100644 index 0000000..47367f8 --- /dev/null +++ b/src/components/bujo/MonthlyLog.astro @@ -0,0 +1,62 @@ +--- +const { logs, year, month } = Astro.props; + +const yearNum = parseInt(year); +const monthNum = parseInt(month); + +const monthName = new Date(yearNum, monthNum - 1).toLocaleString('fr-FR', { month: 'long' }); +const capitalizedMonthName = monthName.charAt(0).toUpperCase() + monthName.slice(1); + +// --- Logique du Calendrier --- +const daysInMonth = new Date(yearNum, monthNum, 0).getDate(); +const firstDayOfMonth = new Date(yearNum, monthNum - 1, 1).getDay(); // 0=Dim, 1=Lun, ... +const startOffset = firstDayOfMonth === 0 ? 6 : firstDayOfMonth - 1; +const weekDays = ['Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam', 'Dim']; + +const logsByDay = new Map(logs.map(log => { + const day = log.data.publishDate.getDate(); + return [day, log]; +})); +--- + +

Monthly Log

+

{capitalizedMonthName} {year}

+ + +
+ + {weekDays.map(day =>
{day}
)} + + + {Array.from({ length: startOffset }).map(() =>
)} + + + {Array.from({ length: daysInMonth }, (_, i) => i + 1).map(day => { + const log = logsByDay.get(day); + const currentDate = new Date(yearNum, monthNum - 1, day); + const isToday = new Date().toDateString() === currentDate.toDateString(); + const dayOfWeek = currentDate.getDay(); + const isWeekend = dayOfWeek === 0 || dayOfWeek === 6; + + return ( + {day} + ); + })} +
+ + +

Toutes les entrées du mois

+ \ No newline at end of file diff --git a/src/content/bujo/2026/01/18.mdx b/src/content/bujo/2026/01/18.mdx new file mode 100644 index 0000000..4ab04fa --- /dev/null +++ b/src/content/bujo/2026/01/18.mdx @@ -0,0 +1,71 @@ +--- +title: "Daily Log - 18 Janvier 2026" +publishDate: 2026-01-18 +tags: ["Daily", "Pivot", "Organisation"] +--- +import Key from '~/components/bujo/Key.astro'; + +
+

Ancrage & Bien-être

+
    +
  • Routine du matin (douche, dents...)
  • +
  • Activité physique
  • +
  • Qualité du sommeil (1-5) : 3
  • +
  • Humeur du jour (1-5) : 4
  • +
+
+ +
+

Objectifs du Dimanche

+

Une ou deux choses pour profiter de la journée et se sentir bien.

+
    +
  • [Objectif principal]
  • +
  • [Autre petite tâche]
  • +
+
+ +
+

Organisation & Budget

+
    +
  • Planifier les repas de la semaine à venir
  • +
  • Chercher une activité gratuite ou un bon plan
  • +
+
+ +
+

Foyer & Préparation de la semaine

+
    +
  • Session de rangement (15 min)
  • +
  • Préparer les vêtements pour lundi
  • +
  • Tâche ménagère au choix (lessive, vaisselle...)
  • +
+
+ +
+

Loisirs & Note du jour

+

Un moment pour soi, une pensée, une petite victoire :

+

Ce matin après la séance d'hier c'était très compliqué de pouvoir tenir la routine du jour. Je me suis réveillé vers 13h30, je suis sorti du lit vers 14h 14h30... Mais je me sens reposé, je n'ai pas le cou qui tire aujourd'hui, ou encore de migraine particulière. Deux objectifs principales aujourd'hui. La première était de faire le résumé de la session de JDR d'hier. La seconde de commencer à créer mon bullet Journal, ce n'est que le début mais c'est déjà ça.. J'ai réussi à faire les deux et j'ai fait ma lessive, j'ai tendu mon ligne. J'ai rangé un peu mes affaires. J’ai créé mon bullet journal aujourd’hui je suis trop content.. Il y a tellement de chose à faire encore mais franchement, ça fait plaisir !

+ +
+ + \ No newline at end of file diff --git a/src/content/bujo/future/negocier-contrat-cirrus.md b/src/content/bujo/future/negocier-contrat-cirrus.md new file mode 100644 index 0000000..af8e8ba --- /dev/null +++ b/src/content/bujo/future/negocier-contrat-cirrus.md @@ -0,0 +1,35 @@ +--- +title: "Négocier contrat Cirrus" +publishDate: 2026-04-01 +tags: ["future-log", "pro"] +--- + +*• Préparer la renégociation du contrat. +– Deux ans d'ancienneté, c'est un pivot stratégique. Le moment est venu d'aligner le contrat avec la valeur apportée. + +### A. Bilan des Réalisations (Le Factuel) + +• Lister les réalisations concrètes : + - $ Chiffres clés (hausse CA, gain de temps, économies). + - • Projets complexes menés de A à Z. + - • Tâches et responsabilités acquises hors contrat initial (Argument n°1). + +### B. Étude du Marché + +👁️ Rechercher ma valeur sur le marché actuel : + - • Consulter les simulateurs de salaire (Apec, Glassdoor). + - • Analyser les offres d'emploi pour des postes similaires. +– L'objectif n'est pas de menacer, mais de démontrer une connaissance de ma valeur. + +### C. Préparer le "Panier de Négociation" + +• Définir les demandes au-delà du salaire : + - $ Rémunération : Salaire de base, primes. + - ♡ Qualité de vie : Télétravail, aménagement d'horaires. + - • Évolution : Formation certifiante, changement de poste. + +### D. L'Entretien + +< ○ Demander un entretien spécifique pour discuter de mon évolution. +– Pendant l'entretien : rester positif, être précis dans les demandes, et préparer une réponse au "non" ("Que dois-je accomplir dans les 6 prochains mois ?"). + diff --git a/src/content/bujo/future/vacances-ete-2026.md b/src/content/bujo/future/vacances-ete-2026.md new file mode 100644 index 0000000..6972b4e --- /dev/null +++ b/src/content/bujo/future/vacances-ete-2026.md @@ -0,0 +1,6 @@ +--- +title: "Vacances, rencontres et affaires" +publishDate: 2026-09-15 +tags: ["future-log", "perso"] +--- +Préparer le voyage pour la métropole et réserver les billets. \ No newline at end of file diff --git a/src/content/config.ts b/src/content/config.ts deleted file mode 100644 index 829c90e..0000000 --- a/src/content/config.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { defineCollection, z } from 'astro:content'; - -// Collection pour le Journal de bord de la campagne JDR -const journalCollection = defineCollection({ - type: 'content', - schema: z.object({ - title: z.string(), - author: z.string(), - publishDate: z.date(), - tags: z.array(z.string()).optional(), - }), -}); - -// Collection pour les logs de développement et de réflexion -const logsCollection = defineCollection({ - type: 'content', - schema: z.object({ - title: z.string(), - publishDate: z.date(), - tags: z.array(z.string()).optional(), - }), -}); - -// Collection pour le "Codex de la Substance" (apprentissage) -const codexCollection = defineCollection({ - type: "content", - schema: z.object({ - title: z.string(), - subtitle: z.string(), - publishDate: z.date(), - tags: z.array(z.string()), - domain: z.string(), // Le nouveau champ pour le domaine d'étude - concept2D: z.string(), - mecanique: z.string(), - vision3D: z.string(), - status: z.enum(["Acquis", "En cours", "À explorer"]), - }), -}); - -export const collections = { - journal: journalCollection, - logs: logsCollection, - codex: codexCollection, -}; \ No newline at end of file diff --git a/src/content/journal/obscur.md b/src/content/journal/obscur.md index 2ec3aca..a3342e5 100644 --- a/src/content/journal/obscur.md +++ b/src/content/journal/obscur.md @@ -2,7 +2,7 @@ title: "Le Murmure des Rouages" author: "G'Mas" publishDate: 2026-01-18 -tags: ["Mine", "Combat", "Krutik", "Nyrae", "Jinn", "Vase Grise"] +tags: ["Mine", "Combat", "Kruthik", "Nyrae", "Jinn", "Vase Grise"] --- ### Les Griffes de l'Obscurité @@ -13,11 +13,11 @@ S'enfonçant plus profondément dans les galeries désaffectées, le groupe atte Nous fîmes finalement face à la fameuse porte dans la troisième salle. Les traces des enfants y menaient directement, mais le passage était condamné : le mécanisme était grippé et le gond droit était sorti de son axe, rendant les manivelles inutiles. Tandis que Gurdil soulevait la porte utilisant sa force innée, Bulle et la Bourgmestre s'escrimaient sur les chaînes, Nyrae restait à l'écart, observant la scène avec une ironie féline, comme si nous déployions beaucoup d'énergie pour peu de résultats. C'est alors que je repérais un **cliquet de sûreté** bloqué. En glissant ma main dans les rouages pour libérer un engrenage et agiter quelques ressorts, je parvins à réenclencher la sécurité. La porte reprit son axe, les chaînes se tendirent, et le panneau de fer monta jusqu'à son sommet, maintenu désormais par la sécurité que j'avais restaurée. -Derrière la porte, des bruits de mastication écœurants rompirent le silence. Quatre **Krutiks** — des insectes de la taille d'un chien — dévoraient un rat géant. Trop occupés par leur festin, ils ne nous virent pas venir, et nous passâmes à l'attaque. **Gurdil** ouvrit le bal avec ses hachettes volantes, fauchant le premier adversaire. De mon côté, je déchaînai mon souffle à travers mon **souffle-quart** — ce bâton qui me sert tour à tour de guide, de boussole et de sarbacane — touchant un ennemi de plein fouet. Malheureusement, ces bestioles semblaient immunisées à mes toxines. **Bulle** acheva la première bête d'une flèche précise et de la vitesse d'un éclair, tandis que **Jinn** et **Nyrae** tentaient de contenir le reste de la meute. +Derrière la porte, des bruits de mastication écœurants rompirent le silence. Quatre **Kruthiks** — des insectes de la taille d'un chien — dévoraient un rat géant. Trop occupés par leur festin, ils ne nous virent pas venir, et nous passâmes à l'attaque. **Gurdil** ouvrit le bal avec ses hachettes volantes, fauchant le premier adversaire. De mon côté, je déchaînai mon souffle à travers mon **souffle-quart** — ce bâton qui me sert tour à tour de guide, de boussole et de sarbacane — touchant un ennemi de plein fouet. Malheureusement, ces bestioles semblaient immunisées à mes toxines. **Bulle** acheva la première bête d'une flèche précise et de la vitesse d'un éclair, tandis que **Jinn** et **Nyrae** tentaient de contenir le reste de la meute. -Cependant, la chance tourna. Nos coups commencèrent à rater, comme si nous étions nous-mêmes perturbés par quelque chose. Gurdil, une goutte de sueur perlant sur son front, fixait une paroi rocheuse avec insistance, sentant un danger tapis. Soudain, un Krutik nous prit à revers tandis que le rocher surveillé par le nain se liquéfiait en une **Vase Grise**. Ce fléau, capable de dissoudre l'acier, constituait un danger certain malgré sa lenteur. Le combat devint chaotique : **Jinn**, submergé, s'effondra inconscient sous les assauts des deux derniers Krutiks. +Cependant, la chance tourna. **Jinn**, dans une manœuvre aussi audacieuse que déroutante, tenta de rendre le festin des Kruthiks plus... appétissant. D'un geste, il projeta une gerbe de flammes non pas sur les créatures, mais sur la carcasse du rat, espérant que l'odeur de viande grillée les distrairait. L'effet fut immédiat, mais pas celui escompté : le rat fut entièrement carbonisé, et les créatures, privées de leur repas, devinrent encore plus hostiles. Le fouet de **Nyrae** claqua dans l'air, mais les Kruthiks, agiles et enragés, esquivèrent l'assaut. Nos coups commencèrent à rater, comme si nous étions nous-mêmes perturbés par la tournure des événements. Gurdil, une goutte de sueur perlant sur son front, fixait une paroi rocheuse avec insistance, sentant un danger tapis. Soudain, un Kruthik nous prit à revers tandis que le rocher surveillé par le nain se liquéfiait en une **Vase Grise**. Ce fléau, capable de dissoudre l'acier, constituait un danger certain malgré sa lenteur. Le combat devint chaotique : **Jinn**, après avoir courageusement vaporisé une partie de la vase d'un trait de feu, fut submergé et s'effondra inconscient sous les assauts des deux derniers Kruthiks. -Le groupe réagit alors avec une coordination héroïque. **Gurdil** pulvérisa un Krutik d'un coup de marteau dévastateur. **Nyrae** créa une ouverture en "tenaille", me permettant de fracasser une autre créature avec mon **bâton au quart d'un souffle**. **Bulle** marqua la Vase d'un _Éclair Traçant_, et **Nyrae** acheva la masse gélatineuse d'un coup de fouet salvateur avant qu'elle ne nous dissolve. +Le groupe réagit alors avec une coordination héroïque. **Gurdil** pulvérisa un Kruthik d'un coup de marteau dévastateur. **Nyrae** créa une ouverture en "tenaille", me permettant de fracasser une autre créature avec mon **bâton au quart d'un souffle**. **Bulle** marqua la Vase d'un _Éclair Traçant_, et **Nyrae** acheva la masse gélatineuse d'un coup de fouet salvateur avant qu'elle ne nous dissolve. Le calme revenu, nous avons secouru **Jinn**. Stabilisé par Bulle et soigné par Maielan, le Génasi reprit connaissance. Nyrae se contenta d'un simple "Mouais..." laconique en croisant son regard, soulignant le poids de l'épreuve. Après s'être lui même soigné, Jinn retrouva assez de forces pour continuer. Nous avons repris la marche jusqu'au bout du couloir. Là, un **mur maçonné**, étrangement propre et hors de place, nous barrait la route. Une partie de son centre est effondrée. C'est de l'autre côté, dans ce vide inconnu, que nous entendons enfin les voix des enfants. Qu'est-ce qui a bien pu être enfermé ici ? @@ -27,6 +27,6 @@ Le calme revenu, nous avons secouru **Jinn**. Stabilisé par Bulle et soigné pa - **Jinn :** Affaibli mais conscient (récupération en cours). - **G'mas (moi) :** En pleine forme, baigné par l'éclat de la grotte. -- **Gurdil :** Prêt au combat, hachette aux dents, hache à deux mains prête. +- **Gurdil :** Prêt au combat, hachette aux dents, marteau à deux mains prêt. - **Bulle & Nyrae :** Indemnes. -- **Tableau de chasse :** 5 Krutiks et 1 Vase Grise éliminés. +- **Tableau de chasse :** 5 Kruthiks et 1 Vase Grise éliminés. diff --git a/src/content/logs/pivot-structurel.md b/src/content/logs/pivot-structurel.md new file mode 100644 index 0000000..343b408 --- /dev/null +++ b/src/content/logs/pivot-structurel.md @@ -0,0 +1,32 @@ +--- +title: "Déconstruction pour un Nouveau Souffle" +publishDate: 2026-01-18 +tags: ["Architecture", "Pivot", "Blueprint", "GSAP", "State Management"] +--- + +**Log de Construction #04** + +**Statut :** Pivot structurel / Phase de Blueprint + +**Sujet :** Abandon du modèle actuel pour la Voie du "Slide Navigator" + +### 1. Le Constat du Mécanicien + +Après avoir testé l'architecture actuelle, le verdict tombe : les pièces s'emboîtent, mais le moteur ne tourne pas rond. L'expérience manque de fluidité, le "souffle de vie" (Hebel) s'éparpille dans une structure trop complexe qui ne rend pas hommage à l'esthétique *Storybook* que je vise. + +Vouloir construire la carrosserie avant d'avoir stabilisé le châssis est une erreur de débutant que je choisis de corriger aujourd'hui. + +### 2. La Voie du "Slide Navigator" + +Je décide de revenir à l'essentiel : **la narration séquentielle**. Plutôt qu'un site web classique, je vais structurer l'expérience comme une galerie interactive, un "PowerPoint 3D" où chaque vue est une étape clé de mon pèlerinage. + +Ce choix s'impose pour plusieurs raisons : +* **Contrôle du Flux :** Chaque "slide" devient une scène Three.js maîtrisée (position caméra, éclairage, UI spécifique). +* **Clarté Narrative :** On ne se perd plus dans le site ; on tourne les pages d'un grimoire numérique. +* **Prototypage Rapide :** Cela me permet de valider le passage de l'écran titre au menu "Hebel", puis à la Timeline, avec la précision d'un mécanicien qui règle ses soupapes. + +### 3. Prochaines Étapes (Le Blueprint) + +Le chantier se concentre désormais sur le **"State Controller"**. Il s'agira de définir un tableau d'objets contenant les coordonnées de chaque scène, puis d'utiliser **GSAP** pour créer des transitions fluides entre ces "slides", simulant un voyage cinématographique. Les calques d'interface HTML resteront superposés au canvas pour garantir une accessibilité totale. + +*Le grain de sable ne s'arrête pas, il change de trajectoire pour mieux dessiner l'oasis.* \ No newline at end of file diff --git a/src/layouts/LifeLayout.astro b/src/layouts/LifeLayout.astro new file mode 100644 index 0000000..8581ab6 --- /dev/null +++ b/src/layouts/LifeLayout.astro @@ -0,0 +1,39 @@ +--- +import {ClientRouter} from 'astro:transitions'; +import '../styles/global.css'; + +interface Props { + title: string; +} + +const { title } = Astro.props; +--- + + + + + + + + + + {title} + + + +
+
+ + Journal de Bord + +

Le codex de la vie de l'artisan.

+
+
+ +
+ +
+ + \ No newline at end of file diff --git a/src/modele/19.mdx b/src/modele/19.mdx new file mode 100644 index 0000000..17f25af --- /dev/null +++ b/src/modele/19.mdx @@ -0,0 +1,60 @@ +--- +title: "Daily Log - 19 Janvier 2026" +publishDate: 2026-01-19 +tags: ["Daily", "Work", "Organisation"] +--- +import Key from '~/components/bujo/Key.astro'; + +
+

Ancrage & Bien-être

+
    +
  • Routine du matin (douche, dents...)
  • +
  • Activité physique douce (étirements, marche...)
  • +
  • Qualité du sommeil (1-5) : __
  • +
  • Humeur du jour (1-5) : __
  • +
+
+ +
+

Priorités du Jour (Pro & Perso)

+

Se concentrer sur 1 à 3 tâches essentielles pour avancer.

+
    +
  • [Tâche pro n°1]
  • +
  • [Tâche pro n°2]
  • +
  • [Tâche perso importante]
  • +
+
+ +
+

Organisation & Budget

+
    +
  • Planifier le repas du soir
  • +
  • Point rapide sur les comptes
  • +
+
+ +
+

Foyer & Routine du soir

+
    +
  • Ranger l'espace de travail (5 min)
  • +
  • Préparer les affaires pour demain
  • +
+
+ +
+

Loisirs & Note du jour

+

Un moment pour soi, une pensée, une petite victoire :

+ +
+ + \ No newline at end of file diff --git a/src/modele/20.mdx b/src/modele/20.mdx new file mode 100644 index 0000000..3d8330b --- /dev/null +++ b/src/modele/20.mdx @@ -0,0 +1,60 @@ +--- +title: "Daily Log - 20 Janvier 2026" +publishDate: 2026-01-20 +tags: ["Daily", "Work", "Organisation"] +--- +import Key from '~/components/bujo/Key.astro'; + +
+

Ancrage & Bien-être

+
    +
  • Routine du matin (douche, dents...)
  • +
  • Activité physique douce (étirements, marche...)
  • +
  • Qualité du sommeil (1-5) : __
  • +
  • Humeur du jour (1-5) : __
  • +
+
+ +
+

Priorités du Jour (Pro & Perso)

+

Se concentrer sur 1 à 3 tâches essentielles pour avancer.

+
    +
  • [Tâche pro n°1]
  • +
  • [Tâche pro n°2]
  • +
  • [Tâche perso importante]
  • +
+
+ +
+

Organisation & Budget

+
    +
  • Planifier le repas du soir
  • +
  • Point rapide sur les comptes
  • +
+
+ +
+

Foyer & Routine du soir

+
    +
  • Ranger l'espace de travail (5 min)
  • +
  • Préparer les affaires pour demain
  • +
+
+ +
+

Loisirs & Note du jour

+

Un moment pour soi, une pensée, une petite victoire :

+ +
+ + \ No newline at end of file diff --git a/src/modele/21.mdx b/src/modele/21.mdx new file mode 100644 index 0000000..f7f1f04 --- /dev/null +++ b/src/modele/21.mdx @@ -0,0 +1,60 @@ +--- +title: "Daily Log - 21 Janvier 2026" +publishDate: 2026-01-21 +tags: ["Daily", "Work", "Organisation"] +--- +import Key from '~/components/bujo/Key.astro'; + +
+

Ancrage & Bien-être

+
    +
  • Routine du matin (douche, dents...)
  • +
  • Activité physique douce (étirements, marche...)
  • +
  • Qualité du sommeil (1-5) : __
  • +
  • Humeur du jour (1-5) : __
  • +
+
+ +
+

Priorités du Jour (Pro & Perso)

+

Se concentrer sur 1 à 3 tâches essentielles pour avancer.

+
    +
  • [Tâche pro n°1]
  • +
  • [Tâche pro n°2]
  • +
  • [Tâche perso importante]
  • +
+
+ +
+

Organisation & Budget

+
    +
  • Planifier le repas du soir
  • +
  • Point rapide sur les comptes
  • +
+
+ +
+

Foyer & Routine du soir

+
    +
  • Ranger l'espace de travail (5 min)
  • +
  • Préparer les affaires pour demain
  • +
+
+ +
+

Loisirs & Note du jour

+

Un moment pour soi, une pensée, une petite victoire :

+ +
+ + \ No newline at end of file diff --git a/src/modele/22.mdx b/src/modele/22.mdx new file mode 100644 index 0000000..707f9d0 --- /dev/null +++ b/src/modele/22.mdx @@ -0,0 +1,60 @@ +--- +title: "Daily Log - 22 Janvier 2026" +publishDate: 2026-01-22 +tags: ["Daily", "Work", "Organisation"] +--- +import Key from '~/components/bujo/Key.astro'; + +
+

Ancrage & Bien-être

+
    +
  • Routine du matin (douche, dents...)
  • +
  • Activité physique douce (étirements, marche...)
  • +
  • Qualité du sommeil (1-5) : __
  • +
  • Humeur du jour (1-5) : __
  • +
+
+ +
+

Priorités du Jour (Pro & Perso)

+

Se concentrer sur 1 à 3 tâches essentielles pour avancer.

+
    +
  • [Tâche pro n°1]
  • +
  • [Tâche pro n°2]
  • +
  • [Tâche perso importante]
  • +
+
+ +
+

Organisation & Budget

+
    +
  • Planifier le repas du soir
  • +
  • Point rapide sur les comptes
  • +
+
+ +
+

Foyer & Routine du soir

+
    +
  • Ranger l'espace de travail (5 min)
  • +
  • Préparer les affaires pour demain
  • +
+
+ +
+

Loisirs & Note du jour

+

Un moment pour soi, une pensée, une petite victoire :

+ +
+ + \ No newline at end of file diff --git a/src/modele/23.mdx b/src/modele/23.mdx new file mode 100644 index 0000000..43309e9 --- /dev/null +++ b/src/modele/23.mdx @@ -0,0 +1,60 @@ +--- +title: "Daily Log - 23 Janvier 2026" +publishDate: 2026-01-23 +tags: ["Daily", "Work", "Organisation"] +--- +import Key from '~/components/bujo/Key.astro'; + +
+

Ancrage & Bien-être

+
    +
  • Routine du matin (douche, dents...)
  • +
  • Activité physique douce (étirements, marche...)
  • +
  • Qualité du sommeil (1-5) : __
  • +
  • Humeur du jour (1-5) : __
  • +
+
+ +
+

Priorités du Jour (Pro & Perso)

+

Se concentrer sur 1 à 3 tâches essentielles pour avancer.

+
    +
  • [Tâche pro n°1]
  • +
  • [Tâche pro n°2]
  • +
  • [Tâche perso importante]
  • +
+
+ +
+

Organisation & Budget

+
    +
  • Planifier le repas du soir
  • +
  • Point rapide sur les comptes
  • +
+
+ +
+

Foyer & Routine du soir

+
    +
  • Ranger l'espace de travail (5 min)
  • +
  • Préparer les affaires pour demain
  • +
+
+ +
+

Loisirs & Note du jour

+

Un moment pour soi, une pensée, une petite victoire :

+ +
+ + \ No newline at end of file diff --git a/src/modele/24.mdx b/src/modele/24.mdx new file mode 100644 index 0000000..a865d43 --- /dev/null +++ b/src/modele/24.mdx @@ -0,0 +1,51 @@ +--- +title: "Daily Log - 24 Janvier 2026" +publishDate: 2026-01-24 +tags: ["Daily", "Weekend", "Organisation"] +--- +import Key from '~/components/bujo/Key.astro'; + +
+

Ancrage & Bien-être

+
    +
  • Routine du matin (douche, dents...)
  • +
  • Activité physique douce (étirements, marche...)
  • +
  • Qualité du sommeil (1-5) : __
  • +
  • Humeur du jour (1-5) : __
  • +
+
+ +
+

Objectifs du Samedi

+

Une ou deux choses pour profiter de la journée et se sentir bien.

+
    +
  • [Objectif principal]
  • +
  • [Autre petite tâche]
  • +
+
+ +
+

Foyer & Organisation

+
    +
  • Session de rangement (15 min)
  • +
  • Tâche ménagère au choix (lessive, vaisselle...)
  • +
+
+ +
+

Loisirs & Note du jour

+

Un moment pour soi, une pensée, une petite victoire :

+ +
+ + \ No newline at end of file diff --git a/src/modele/25.mdx b/src/modele/25.mdx new file mode 100644 index 0000000..e728655 --- /dev/null +++ b/src/modele/25.mdx @@ -0,0 +1,59 @@ +--- +title: "Daily Log - 25 Janvier 2026" +publishDate: 2026-01-25 +tags: ["Daily", "Weekend", "Organisation"] +--- +import Key from '~/components/bujo/Key.astro'; + +
+

Ancrage & Bien-être

+
    +
  • Routine du matin (douche, dents...)
  • +
  • Activité physique douce (étirements, marche...)
  • +
  • Qualité du sommeil (1-5) : __
  • +
  • Humeur du jour (1-5) : __
  • +
+
+ +
+

Objectifs du Dimanche

+

Une ou deux choses pour profiter de la journée et se sentir bien.

+
    +
  • [Objectif principal]
  • +
  • [Autre petite tâche]
  • +
+
+ +
+

Organisation & Budget

+
    +
  • Planifier les repas de la semaine à venir
  • +
  • Chercher une activité gratuite ou un bon plan
  • +
+
+ +
+

Foyer & Préparation de la semaine

+
    +
  • Session de rangement (15 min)
  • +
  • Préparer les vêtements pour lundi
  • +
+
+ +
+

Loisirs & Note du jour

+

Un moment pour soi, une pensée, une petite victoire :

+ +
+ + diff --git a/src/pages/auteur.astro b/src/pages/auteur.astro index e6ff7f1..a6120c3 100644 --- a/src/pages/auteur.astro +++ b/src/pages/auteur.astro @@ -41,6 +41,16 @@ import ParchmentCard from '../components/ui/ParchmentCard.astro';
  • CV en ligne : Découvrir son parcours
  • + + +

    📖 Le Journal de Bord de l'Artisan

    +

    + Au-delà des chroniques et des lignes de code, il y a le quotidien. Une quête d'équilibre entre la vie, la passion et la discipline. Ce journal de bord est une tentative de cartographier ce voyage intérieur. +

    + +
    \ No newline at end of file diff --git a/src/pages/bujo/[...slug].astro b/src/pages/bujo/[...slug].astro new file mode 100644 index 0000000..632586c --- /dev/null +++ b/src/pages/bujo/[...slug].astro @@ -0,0 +1,133 @@ +--- +import { getCollection, getEntry } from 'astro:content'; +import LifeLayout from '../../layouts/LifeLayout.astro'; + +// Import des composants de page pour les garder modulaires +import BujoIndex from '../../components/bujo/BujoIndex.astro'; +import BujoKeys from '../../components/bujo/BujoKeys.astro'; +import MonthlyLog from '../../components/bujo/MonthlyLog.astro'; +import BujoFutureLog from '../../components/bujo/BujoFutureLog.astro'; +import CollectionTracker from '../../components/bujo/CollectionTracker.astro'; +import CollectionObjectifs from '../../components/bujo/CollectionObjectifs.astro'; +import CollectionBooks from '../../components/bujo/CollectionBooks.astro'; +import CollectionPlaceholder from '../../components/bujo/CollectionPlaceholder.astro'; +import CollectionFilms from '../../components/bujo/CollectionFilms.astro'; + +export async function getStaticPaths() { + const bujoEntries = await getCollection('bujo'); + const paths = bujoEntries.map(entry => ({ + params: { slug: entry.slug } + })); + + // Ajouter les routes statiques/virtuelles + paths.push({ params: { slug: undefined } }); // Index + paths.push({ params: { slug: 'keys' } }); + paths.push({ params: { slug: 'future-log' } }); + paths.push({ params: { slug: 'collections/livres-a-lire' } }); + paths.push({ params: { slug: 'collections/trackers-mensuels' } }); + paths.push({ params: { slug: 'collections/objectifs-du-mois' } }); + paths.push({ params: { slug: 'collections/suivi-depenses' } }); + paths.push({ params: { slug: 'collections/gratitude' } }); + paths.push({ params: { slug: 'collections/brain-dump' } }); + paths.push({ params: { slug: 'collections/bucket-list' } }); + paths.push({ params: { slug: 'collections/films-a-voir' } }); + paths.push({ params: { slug: 'collections/idees-projets' } }); + paths.push({ params: { slug: 'collections/idees-de-projets' } }); + + // Ajouter les routes pour les mois + const uniqueMonths = new Set(); + bujoEntries.forEach(log => { + const [year, month] = log.slug.split('/'); + if (year && month && !isNaN(parseInt(year)) && !isNaN(parseInt(month))) { + uniqueMonths.add(`${year}/${month}`); + } + }); + uniqueMonths.forEach(monthPath => { + paths.push({ params: { slug: monthPath } }); + }); + + return paths; +} + +const { slug } = Astro.params; + +// 1. Gérer la page d'index (/bujo) +if (slug === undefined) { + const allLogs = await getCollection('bujo'); + const uniqueMonths = new Set(); + allLogs.forEach(log => { + const [year, month] = log.slug.split('/'); + if (year && month && !isNaN(parseInt(year)) && !isNaN(parseInt(month))) { + uniqueMonths.add(`${year}/${month}`); + } + }); + Astro.props.page = 'index'; + Astro.props.months = Array.from(uniqueMonths); +} +// 2. Gérer les pages statiques (clés, etc.) +else if (slug === 'keys') { + Astro.props.page = 'keys'; +} +else if (slug === 'future-log') { + Astro.props.page = 'bujo-future-log'; +} +// 3. Gérer les collections +else if (slug.startsWith('collections/')) { + if (slug === 'collections/trackers-mensuels') { + Astro.props.page = 'collection-tracker'; + } else if (slug === 'collections/livres-a-lire') { + Astro.props.page = 'collection-books'; + } else if (slug === 'collections/objectifs-du-mois') { + Astro.props.page = 'collection-objectifs'; + } else if (slug === 'collections/films-a-voir') { + Astro.props.page = 'collection-films'; + } + else { + Astro.props.page = 'collection-placeholder'; + Astro.props.collectionTitle = slug.split('/')[1].replace(/-/g, ' '); + } +} +// 4. Gérer les logs mensuels (ex: /bujo/2026/01) +else if (slug.match(/^\d{4}\/\d{2}$/)) { + const [year, month] = slug.split('/'); + const monthlyLogs = await getCollection('bujo', ({ slug: logSlug }) => logSlug.startsWith(slug)); + Astro.props.page = 'monthly-log'; + Astro.props.logs = monthlyLogs; + Astro.props.year = year; + Astro.props.month = month; +} +// 5. Gérer les entrées de contenu (Daily Logs) +else { + const entry = await getEntry('bujo', slug); + if (entry) { + const { Content } = await entry.render(); + Astro.props.page = 'entry'; + Astro.props.entry = entry; + Astro.props.Content = Content; + } +} + +const { page, entry, Content, months, logs, year, month, collectionTitle } = Astro.props; +const title = page === 'index' ? 'Journal de Bord' : (entry ? entry.data.title : collectionTitle || 'Journal'); +--- + + + {page === 'index' && } + {page === 'keys' && } + {page === 'bujo-future-log' && } + + {page === 'collection-tracker' && } + {page === 'collection-objectifs' && } + {page === 'collection-books' && } + {page === 'collection-films' && } + {page === 'collection-placeholder' && } + + {page === 'monthly-log' && } + + {page === 'entry' && Content && ( +
    +

    {entry.data.title}

    + +
    + )} +
    \ No newline at end of file diff --git a/src/styles/global.css b/src/styles/global.css new file mode 100644 index 0000000..a461c50 --- /dev/null +++ b/src/styles/global.css @@ -0,0 +1 @@ +@import "tailwindcss"; \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 8bf91d3..3cb713f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,10 @@ { - "extends": "astro/tsconfigs/strict", - "include": [".astro/types.d.ts", "**/*"], - "exclude": ["dist"] -} + "extends": "astro/tsconfigs/base", + "compilerOptions": { + "baseUrl": ".", + "paths": { + "~/*": ["src/*"], + "@/*": ["src/*"] + } + } +} \ No newline at end of file