diff --git a/package-lock.json b/package-lock.json index c400cc1..fbc7303 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,23 +9,23 @@ "version": "0.0.1", "dependencies": { "@astrojs/check": "0.9.4", - "@astrojs/mdx": "^4.2.3", + "@astrojs/mdx": "^4.2.5", "@astrojs/rss": "^4.0.11", - "@astrojs/sitemap": "3.3.0", + "@astrojs/sitemap": "3.3.1", "@fontsource-variable/outfit": "^5.2.5", "@fontsource-variable/red-hat-mono": "^5.2.5", - "@tailwindcss/vite": "^4.1.3", - "astro": "^5.6.1", + "@tailwindcss/vite": "^4.1.4", + "astro": "^5.7.5", "astro-icon": "^1.1.5", "rehype-external-links": "^3.0.0", - "tailwindcss": "^4.1.3", + "tailwindcss": "^4.1.4", "typescript": "^5.8.3" }, "devDependencies": { "@iconify-json/mdi": "^1.2.3", "@tailwindcss/typography": "^0.5.16", - "@types/node": "^22.14.1", - "npm-check-updates": "^17.1.18", + "@types/node": "^22.15.2", + "npm-check-updates": "^18.0.1", "prettier": "^3.5.3", "prettier-plugin-astro": "^0.14.1", "prettier-plugin-tailwindcss": "^0.6.11" @@ -154,9 +154,9 @@ } }, "node_modules/@astrojs/mdx": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-4.2.3.tgz", - "integrity": "sha512-oteB88udzzZmix5kWWUMeMJfeB2Dj8g7jy9LVNuTzGlBh3mEkGhQr6FsIR43p0JKCN11fl5J7P/Ev4Q0Nf0KQQ==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-4.2.5.tgz", + "integrity": "sha512-iKGu9GssmypLWf6ycJu6OYa9E3W16KA2y3ApBPlZpz1pwR70xXEr2XugQUwxGfFCI2KcZLIND/9FdKM7ZXVffA==", "license": "MIT", "dependencies": { "@astrojs/markdown-remark": "6.3.1", @@ -203,9 +203,9 @@ } }, "node_modules/@astrojs/sitemap": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.3.0.tgz", - "integrity": "sha512-nYE4lKQtk+Kbrw/w0G0TTgT724co0jUsU4tPlHY9au5HmTBKbwiCLwO/15b1/y13aZ4Kr9ZbMeMHlXuwn0ty4Q==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.3.1.tgz", + "integrity": "sha512-GRnDUCTviBSNfXJ0Jmur+1/C+z3g36jy79VyYggfe1uNyEYSTcmAfTTCmbytrRvJRNyJJnSfB/77Gnm9PiXRRg==", "license": "MIT", "dependencies": { "sitemap": "^8.0.0", @@ -214,13 +214,13 @@ } }, "node_modules/@astrojs/telemetry": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.2.0.tgz", - "integrity": "sha512-wxhSKRfKugLwLlr4OFfcqovk+LIFtKwLyGPqMsv+9/ibqqnW3Gv7tBhtKEb0gAyUAC4G9BTVQeQahqnQAhd6IQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.2.1.tgz", + "integrity": "sha512-SSVM820Jqc6wjsn7qYfV9qfeQvePtVc1nSofhyap7l0/iakUKywj3hfy3UJAOV4sGV4Q/u450RD4AaCaFvNPlg==", "license": "MIT", "dependencies": { - "ci-info": "^4.1.0", - "debug": "^4.3.7", + "ci-info": "^4.2.0", + "debug": "^4.4.0", "dlv": "^1.1.3", "dset": "^3.1.4", "is-docker": "^3.0.0", @@ -286,6 +286,17 @@ "node": ">=6.9.0" } }, + "node_modules/@capsizecss/unpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@capsizecss/unpack/-/unpack-2.4.0.tgz", + "integrity": "sha512-GrSU71meACqcmIUxPYOJvGKF0yryjN/L1aCuE9DViCTJI7bfkjgYDPD1zbNDcINJwSSP6UaBZY9GAbYDO7re0Q==", + "license": "MIT", + "dependencies": { + "blob-to-buffer": "^1.2.8", + "cross-fetch": "^3.0.4", + "fontkit": "^2.0.2" + } + }, "node_modules/@emmetio/abbreviation": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/@emmetio/abbreviation/-/abbreviation-2.3.3.tgz", @@ -1623,44 +1634,54 @@ "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", "license": "MIT" }, + "node_modules/@swc/helpers": { + "version": "0.5.17", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz", + "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, "node_modules/@tailwindcss/node": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.3.tgz", - "integrity": "sha512-H/6r6IPFJkCfBJZ2dKZiPJ7Ueb2wbL592+9bQEl2r73qbX6yGnmQVIfiUvDRB2YI0a3PWDrzUwkvQx1XW1bNkA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.4.tgz", + "integrity": "sha512-MT5118zaiO6x6hNA04OWInuAiP1YISXql8Z+/Y8iisV5nuhM8VXlyhRuqc2PEviPszcXI66W44bCIk500Oolhw==", "license": "MIT", "dependencies": { "enhanced-resolve": "^5.18.1", "jiti": "^2.4.2", "lightningcss": "1.29.2", - "tailwindcss": "4.1.3" + "tailwindcss": "4.1.4" } }, "node_modules/@tailwindcss/oxide": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.3.tgz", - "integrity": "sha512-t16lpHCU7LBxDe/8dCj9ntyNpXaSTAgxWm1u2XQP5NiIu4KGSyrDJJRlK9hJ4U9yJxx0UKCVI67MJWFNll5mOQ==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.4.tgz", + "integrity": "sha512-p5wOpXyOJx7mKh5MXh5oKk+kqcz8T+bA3z/5VWWeQwFrmuBItGwz8Y2CHk/sJ+dNb9B0nYFfn0rj/cKHZyjahQ==", "license": "MIT", "engines": { "node": ">= 10" }, "optionalDependencies": { - "@tailwindcss/oxide-android-arm64": "4.1.3", - "@tailwindcss/oxide-darwin-arm64": "4.1.3", - "@tailwindcss/oxide-darwin-x64": "4.1.3", - "@tailwindcss/oxide-freebsd-x64": "4.1.3", - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.3", - "@tailwindcss/oxide-linux-arm64-gnu": "4.1.3", - "@tailwindcss/oxide-linux-arm64-musl": "4.1.3", - "@tailwindcss/oxide-linux-x64-gnu": "4.1.3", - "@tailwindcss/oxide-linux-x64-musl": "4.1.3", - "@tailwindcss/oxide-win32-arm64-msvc": "4.1.3", - "@tailwindcss/oxide-win32-x64-msvc": "4.1.3" + "@tailwindcss/oxide-android-arm64": "4.1.4", + "@tailwindcss/oxide-darwin-arm64": "4.1.4", + "@tailwindcss/oxide-darwin-x64": "4.1.4", + "@tailwindcss/oxide-freebsd-x64": "4.1.4", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.4", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.4", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.4", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.4", + "@tailwindcss/oxide-linux-x64-musl": "4.1.4", + "@tailwindcss/oxide-wasm32-wasi": "4.1.4", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.4", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.4" } }, "node_modules/@tailwindcss/oxide-android-arm64": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.3.tgz", - "integrity": "sha512-cxklKjtNLwFl3mDYw4XpEfBY+G8ssSg9ADL4Wm6//5woi3XGqlxFsnV5Zb6v07dxw1NvEX2uoqsxO/zWQsgR+g==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.4.tgz", + "integrity": "sha512-xMMAe/SaCN/vHfQYui3fqaBDEXMu22BVwQ33veLc8ep+DNy7CWN52L+TTG9y1K397w9nkzv+Mw+mZWISiqhmlA==", "cpu": [ "arm64" ], @@ -1674,9 +1695,9 @@ } }, "node_modules/@tailwindcss/oxide-darwin-arm64": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.3.tgz", - "integrity": "sha512-mqkf2tLR5VCrjBvuRDwzKNShRu99gCAVMkVsaEOFvv6cCjlEKXRecPu9DEnxp6STk5z+Vlbh1M5zY3nQCXMXhw==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.4.tgz", + "integrity": "sha512-JGRj0SYFuDuAGilWFBlshcexev2hOKfNkoX+0QTksKYq2zgF9VY/vVMq9m8IObYnLna0Xlg+ytCi2FN2rOL0Sg==", "cpu": [ "arm64" ], @@ -1690,9 +1711,9 @@ } }, "node_modules/@tailwindcss/oxide-darwin-x64": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.3.tgz", - "integrity": "sha512-7sGraGaWzXvCLyxrc7d+CCpUN3fYnkkcso3rCzwUmo/LteAl2ZGCDlGvDD8Y/1D3ngxT8KgDj1DSwOnNewKhmg==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.4.tgz", + "integrity": "sha512-sdDeLNvs3cYeWsEJ4H1DvjOzaGios4QbBTNLVLVs0XQ0V95bffT3+scptzYGPMjm7xv4+qMhCDrkHwhnUySEzA==", "cpu": [ "x64" ], @@ -1706,9 +1727,9 @@ } }, "node_modules/@tailwindcss/oxide-freebsd-x64": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.3.tgz", - "integrity": "sha512-E2+PbcbzIReaAYZe997wb9rId246yDkCwAakllAWSGqe6VTg9hHle67hfH6ExjpV2LSK/siRzBUs5wVff3RW9w==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.4.tgz", + "integrity": "sha512-VHxAqxqdghM83HslPhRsNhHo91McsxRJaEnShJOMu8mHmEj9Ig7ToHJtDukkuLWLzLboh2XSjq/0zO6wgvykNA==", "cpu": [ "x64" ], @@ -1722,9 +1743,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.3.tgz", - "integrity": "sha512-GvfbJ8wjSSjbLFFE3UYz4Eh8i4L6GiEYqCtA8j2Zd2oXriPuom/Ah/64pg/szWycQpzRnbDiJozoxFU2oJZyfg==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.4.tgz", + "integrity": "sha512-OTU/m/eV4gQKxy9r5acuesqaymyeSCnsx1cFto/I1WhPmi5HDxX1nkzb8KYBiwkHIGg7CTfo/AcGzoXAJBxLfg==", "cpu": [ "arm" ], @@ -1738,9 +1759,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.3.tgz", - "integrity": "sha512-35UkuCWQTeG9BHcBQXndDOrpsnt3Pj9NVIB4CgNiKmpG8GnCNXeMczkUpOoqcOhO6Cc/mM2W7kaQ/MTEENDDXg==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.4.tgz", + "integrity": "sha512-hKlLNvbmUC6z5g/J4H+Zx7f7w15whSVImokLPmP6ff1QqTVE+TxUM9PGuNsjHvkvlHUtGTdDnOvGNSEUiXI1Ww==", "cpu": [ "arm64" ], @@ -1754,9 +1775,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-arm64-musl": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.3.tgz", - "integrity": "sha512-dm18aQiML5QCj9DQo7wMbt1Z2tl3Giht54uVR87a84X8qRtuXxUqnKQkRDK5B4bCOmcZ580lF9YcoMkbDYTXHQ==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.4.tgz", + "integrity": "sha512-X3As2xhtgPTY/m5edUtddmZ8rCruvBvtxYLMw9OsZdH01L2gS2icsHRwxdU0dMItNfVmrBezueXZCHxVeeb7Aw==", "cpu": [ "arm64" ], @@ -1770,9 +1791,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-x64-gnu": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.3.tgz", - "integrity": "sha512-LMdTmGe/NPtGOaOfV2HuO7w07jI3cflPrVq5CXl+2O93DCewADK0uW1ORNAcfu2YxDUS035eY2W38TxrsqngxA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.4.tgz", + "integrity": "sha512-2VG4DqhGaDSmYIu6C4ua2vSLXnJsb/C9liej7TuSO04NK+JJJgJucDUgmX6sn7Gw3Cs5ZJ9ZLrnI0QRDOjLfNQ==", "cpu": [ "x64" ], @@ -1786,9 +1807,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-x64-musl": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.3.tgz", - "integrity": "sha512-aalNWwIi54bbFEizwl1/XpmdDrOaCjRFQRgtbv9slWjmNPuJJTIKPHf5/XXDARc9CneW9FkSTqTbyvNecYAEGw==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.4.tgz", + "integrity": "sha512-v+mxVgH2kmur/X5Mdrz9m7TsoVjbdYQT0b4Z+dr+I4RvreCNXyCFELZL/DO0M1RsidZTrm6O1eMnV6zlgEzTMQ==", "cpu": [ "x64" ], @@ -1801,10 +1822,39 @@ "node": ">= 10" } }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.4.tgz", + "integrity": "sha512-2TLe9ir+9esCf6Wm+lLWTMbgklIjiF0pbmDnwmhR9MksVOq+e8aP3TSsXySnBDDvTTVd/vKu1aNttEGj3P6l8Q==", + "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.4.0", + "@emnapi/runtime": "^1.4.0", + "@emnapi/wasi-threads": "^1.0.1", + "@napi-rs/wasm-runtime": "^0.2.8", + "@tybys/wasm-util": "^0.9.0", + "tslib": "^2.8.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.3.tgz", - "integrity": "sha512-PEj7XR4OGTGoboTIAdXicKuWl4EQIjKHKuR+bFy9oYN7CFZo0eu74+70O4XuERX4yjqVZGAkCdglBODlgqcCXg==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.4.tgz", + "integrity": "sha512-VlnhfilPlO0ltxW9/BgfLI5547PYzqBMPIzRrk4W7uupgCt8z6Trw/tAj6QUtF2om+1MH281Pg+HHUJoLesmng==", "cpu": [ "arm64" ], @@ -1818,9 +1868,9 @@ } }, "node_modules/@tailwindcss/oxide-win32-x64-msvc": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.3.tgz", - "integrity": "sha512-T8gfxECWDBENotpw3HR9SmNiHC9AOJdxs+woasRZ8Q/J4VHN0OMs7F+4yVNZ9EVN26Wv6mZbK0jv7eHYuLJLwA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.4.tgz", + "integrity": "sha512-+7S63t5zhYjslUGb8NcgLpFXD+Kq1F/zt5Xv5qTv7HaFTG/DHyHD9GA6ieNAxhgyA4IcKa/zy7Xx4Oad2/wuhw==", "cpu": [ "x64" ], @@ -1850,14 +1900,14 @@ } }, "node_modules/@tailwindcss/vite": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.3.tgz", - "integrity": "sha512-lUI/QaDxLtlV52Lho6pu07CG9pSnRYLOPmKGIQjyHdTBagemc6HmgZxyjGAQ/5HMPrNeWBfTVIpQl0/jLXvWHQ==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.4.tgz", + "integrity": "sha512-4UQeMrONbvrsXKXXp/uxmdEN5JIJ9RkH7YVzs6AMxC/KC1+Np7WZBaNIco7TEjlkthqxZbt8pU/ipD+hKjm80A==", "license": "MIT", "dependencies": { - "@tailwindcss/node": "4.1.3", - "@tailwindcss/oxide": "4.1.3", - "tailwindcss": "4.1.3" + "@tailwindcss/node": "4.1.4", + "@tailwindcss/oxide": "4.1.4", + "tailwindcss": "4.1.4" }, "peerDependencies": { "vite": "^5.2.0 || ^6" @@ -1945,9 +1995,9 @@ } }, "node_modules/@types/node": { - "version": "22.14.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.1.tgz", - "integrity": "sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==", + "version": "22.15.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.2.tgz", + "integrity": "sha512-uKXqKN9beGoMdBfcaTY1ecwz6ctxuJAcUlwE55938g0ZJ8lRxwAZqRz2AJ4pzpt5dHdTPMB863UZ0ESiFUcP7A==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" @@ -2261,15 +2311,16 @@ } }, "node_modules/astro": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/astro/-/astro-5.6.1.tgz", - "integrity": "sha512-aQ2TV7wIf+q2Oi6gGWMINHWEAZqoP0eH6/mihodfTJYATPWyd03JIGVfjtYUJlkNdNSKxDXwEe/r/Zx4CZ1FPg==", + "version": "5.7.5", + "resolved": "https://registry.npmjs.org/astro/-/astro-5.7.5.tgz", + "integrity": "sha512-c59YuYiXyWWnUMOBlDczrjqKzF0dJQP20EP9vqDggcyKm//tEt9iJHNwoYq4r3UeO9UJCwlGK8FwaGTAwwF3IA==", "license": "MIT", "dependencies": { "@astrojs/compiler": "^2.11.0", "@astrojs/internal-helpers": "0.6.1", "@astrojs/markdown-remark": "6.3.1", - "@astrojs/telemetry": "3.2.0", + "@astrojs/telemetry": "3.2.1", + "@capsizecss/unpack": "^2.4.0", "@oslojs/encoding": "^1.1.0", "@rollup/pluginutils": "^5.1.4", "acorn": "^8.14.1", @@ -2312,10 +2363,11 @@ "tinyglobby": "^0.2.12", "tsconfck": "^3.1.5", "ultrahtml": "^1.6.0", + "unifont": "~0.2.0", "unist-util-visit": "^5.0.0", "unstorage": "^1.15.0", "vfile": "^6.0.3", - "vite": "^6.2.4", + "vite": "^6.2.6", "vitefu": "^1.0.6", "xxhash-wasm": "^1.1.0", "yargs-parser": "^21.1.1", @@ -2399,6 +2451,46 @@ "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==", "license": "MIT" }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/blob-to-buffer": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/blob-to-buffer/-/blob-to-buffer-1.2.9.tgz", + "integrity": "sha512-BF033y5fN6OCofD3vgHmNtwZWRcq9NLyyxyILx9hfMy1sXYy4ojFl765hJ2lP0YaN2fuxPaLO2Vzzoxy0FLFFA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -2439,6 +2531,15 @@ "node": ">=8" } }, + "node_modules/brotli": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", + "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.1.2" + } + }, "node_modules/buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", @@ -2715,6 +2816,15 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, "node_modules/clsx": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", @@ -2835,6 +2945,15 @@ "integrity": "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==", "license": "MIT" }, + "node_modules/cross-fetch": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", + "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.7.0" + } + }, "node_modules/crossws": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.4.tgz", @@ -3030,6 +3149,12 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/dfa": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz", + "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==", + "license": "MIT" + }, "node_modules/diff": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", @@ -3594,6 +3719,23 @@ } } }, + "node_modules/fontkit": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/fontkit/-/fontkit-2.0.4.tgz", + "integrity": "sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==", + "license": "MIT", + "dependencies": { + "@swc/helpers": "^0.5.12", + "brotli": "^1.3.2", + "clone": "^2.1.2", + "dfa": "^1.2.0", + "fast-deep-equal": "^3.1.3", + "restructure": "^3.0.0", + "tiny-inflate": "^1.0.3", + "unicode-properties": "^1.4.0", + "unicode-trie": "^2.0.0" + } + }, "node_modules/form-data": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", @@ -5908,6 +6050,26 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/node-fetch-native": { "version": "1.6.6", "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.6.tgz", @@ -5930,9 +6092,9 @@ } }, "node_modules/npm-check-updates": { - "version": "17.1.18", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-17.1.18.tgz", - "integrity": "sha512-bkUy2g4v1i+3FeUf5fXMLbxmV95eG4/sS7lYE32GrUeVgQRfQEk39gpskksFunyaxQgTIdrvYbnuNbO/pSUSqw==", + "version": "18.0.1", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-18.0.1.tgz", + "integrity": "sha512-MO7mLp/8nm6kZNLLyPgz4gHmr9tLoU+pWPLdXuGAx+oZydBHkHWN0ibTonsrfwC2WEQNIQxuZagYwB67JQpAuw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -5967,6 +6129,12 @@ "ufo": "^1.5.4" } }, + "node_modules/ohash": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz", + "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==", + "license": "MIT" + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -6046,6 +6214,12 @@ "quansync": "^0.2.7" } }, + "node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", + "license": "MIT" + }, "node_modules/parse-entities": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", @@ -6744,6 +6918,12 @@ "node": ">=0.10.0" } }, + "node_modules/restructure": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/restructure/-/restructure-3.0.2.tgz", + "integrity": "sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==", + "license": "MIT" + }, "node_modules/retext": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/retext/-/retext-9.0.0.tgz", @@ -7163,9 +7343,9 @@ } }, "node_modules/tailwindcss": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.3.tgz", - "integrity": "sha512-2Q+rw9vy1WFXu5cIxlvsabCwhU2qUwodGq03ODhLJ0jW4ek5BUtoCsnLB0qG+m8AHgEsSJcJGDSDe06FXlP74g==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.4.tgz", + "integrity": "sha512-1ZIUqtPITFbv/DxRmDr5/agPqJwF69d24m9qmM1939TJehgY539CtzeZRjbLt5G6fSy/7YqqYsfvoTEw9xUI2A==", "license": "MIT" }, "node_modules/tapable": { @@ -7203,6 +7383,12 @@ "node": ">=8" } }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "license": "MIT" + }, "node_modules/tinyexec": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", @@ -7237,6 +7423,12 @@ "node": ">=8.0" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, "node_modules/trim-lines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", @@ -7281,8 +7473,7 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD", - "optional": true + "license": "0BSD" }, "node_modules/type-fest": { "version": "4.36.0", @@ -7357,6 +7548,26 @@ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "license": "MIT" }, + "node_modules/unicode-properties": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz", + "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.0", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/unicode-trie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", + "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", + "license": "MIT", + "dependencies": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + }, "node_modules/unified": { "version": "11.0.5", "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", @@ -7376,6 +7587,35 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/unifont": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/unifont/-/unifont-0.2.0.tgz", + "integrity": "sha512-RoF14/tOhLvDa7R5K6A3PjsfJVFKvadvRpWjfV1ttabUe9704P1ie9z1ABLWEts/8SxrBVePav/XhgeFNltpsw==", + "license": "MIT", + "dependencies": { + "css-tree": "^3.0.0", + "ohash": "^2.0.0" + } + }, + "node_modules/unifont/node_modules/css-tree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.12.2", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/unifont/node_modules/mdn-data": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", + "license": "CC0-1.0" + }, "node_modules/unist-util-find-after": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", @@ -7989,6 +8229,12 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, "node_modules/whatwg-encoding": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", @@ -8010,6 +8256,16 @@ "node": ">=18" } }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which-pm-runs": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", diff --git a/package.json b/package.json index 2745a26..421c0a9 100644 --- a/package.json +++ b/package.json @@ -13,23 +13,23 @@ }, "dependencies": { "@astrojs/check": "0.9.4", - "@astrojs/mdx": "^4.2.3", + "@astrojs/mdx": "^4.2.5", "@astrojs/rss": "^4.0.11", - "@astrojs/sitemap": "3.3.0", + "@astrojs/sitemap": "3.3.1", "@fontsource-variable/outfit": "^5.2.5", "@fontsource-variable/red-hat-mono": "^5.2.5", - "@tailwindcss/vite": "^4.1.3", - "astro": "^5.6.1", + "@tailwindcss/vite": "^4.1.4", + "astro": "^5.7.5", "astro-icon": "^1.1.5", "rehype-external-links": "^3.0.0", - "tailwindcss": "^4.1.3", + "tailwindcss": "^4.1.4", "typescript": "^5.8.3" }, "devDependencies": { "@iconify-json/mdi": "^1.2.3", "@tailwindcss/typography": "^0.5.16", - "@types/node": "^22.14.1", - "npm-check-updates": "^17.1.18", + "@types/node": "^22.15.2", + "npm-check-updates": "^18.0.1", "prettier": "^3.5.3", "prettier-plugin-astro": "^0.14.1", "prettier-plugin-tailwindcss": "^0.6.11" diff --git a/src/components/Article.astro b/src/components/Article.astro index 63a0022..dbfb523 100644 --- a/src/components/Article.astro +++ b/src/components/Article.astro @@ -9,10 +9,28 @@ import RelatedArticles from "@components/RelatedArticles.astro"; const { article, isPost = false } = Astro.props; const { Content } = await article.render(); -const listFormatter = new Intl.ListFormat("en-GB", { - style: "long", - type: "conjunction", -}); +interface NameAndUrl { + name: string; + url: string; +} + +function formatNamesWithLinks(namesAndUrls: NameAndUrl[]) { + const listFormatter = new Intl.ListFormat("en-GB", { + style: "long", + type: "conjunction", + }); + + const linkedNames = namesAndUrls.map((item: NameAndUrl) => { + return `${item.name}`; + }); + + return listFormatter.format(linkedNames); +} + +let formattedList: string | null = null; +if (article.data.extraAuthors && article.data.extraAuthors.length !== 0) { + formattedList = formatNamesWithLinks(article.data.extraAuthors); +} --- -

- {listFormatter.format(article.data.extraAuthors)} -

+

) : null } diff --git a/src/components/CvProjects.astro b/src/components/CvProjects.astro index 880633e..53226fc 100644 --- a/src/components/CvProjects.astro +++ b/src/components/CvProjects.astro @@ -42,7 +42,7 @@ const projects = [ description: "Packard is a simple terminal based RSS aggregator meant to allow you to take a quick glance at what’s occurring in topics you care about.", tags: ["Rust", "Tokio", "Clap", "NixOS Flake"], - link: "https://code.troylusty.com/troy/packard", + link: "/projects/packard", done: true, }, ]; diff --git a/src/components/Gallery.astro b/src/components/Gallery.astro new file mode 100644 index 0000000..5bca51c --- /dev/null +++ b/src/components/Gallery.astro @@ -0,0 +1,34 @@ +--- +import { Image } from "astro:assets"; +import type { ImageMetadata } from "astro"; + +interface Item { + src: ImageMetadata; + alt: string; +} + +interface Props { + items: Item[]; +} + +const { items } = Astro.props as Props; +--- + +

+ { + items.map((item: Item) => ( +
+ {item.src && ( + + {item.alt} + + )} +
+ )) + } +
diff --git a/src/components/ShowcasePost.astro b/src/components/ShowcasePost.astro index 329b277..1ec952e 100644 --- a/src/components/ShowcasePost.astro +++ b/src/components/ShowcasePost.astro @@ -1,6 +1,7 @@ --- import FormattedDate from "@components/FormattedDate.astro"; import type { CollectionEntry } from "astro:content"; +import { Icon } from "astro-icon/components"; type Props = { collection: CollectionEntry<"posts" | "projects">; @@ -19,10 +20,10 @@ const { collection } = Astro.props;

{collection.data.title}

- +
+ + +

{collection.data.description}

diff --git a/src/components/ShowcaseProject.astro b/src/components/ShowcaseProject.astro index 538b4b7..2032397 100644 --- a/src/components/ShowcaseProject.astro +++ b/src/components/ShowcaseProject.astro @@ -22,6 +22,13 @@ const { collection } = Astro.props; fit="cover" /> +
+

+ {collection.data.title} +

+
diff --git a/src/components/Slideshow.astro b/src/components/Slideshow.astro index 21a983f..3a2133c 100644 --- a/src/components/Slideshow.astro +++ b/src/components/Slideshow.astro @@ -3,8 +3,8 @@ import { Image } from "astro:assets"; import type { CollectionEntry } from "astro:content"; interface Props { - interval?: number; images: CollectionEntry<"projects">[]; + interval?: number; } const { interval = 3000, images } = Astro.props; @@ -31,6 +31,11 @@ const { interval = 3000, images } = Astro.props; class="h-full w-full rounded-sm object-cover transition-all duration-300 group-hover:brightness-50" loading="eager" /> +
+

+ {image.data.title} +

+
)) diff --git a/src/consts.ts b/src/consts.ts index 999b51d..cb1b9f1 100644 --- a/src/consts.ts +++ b/src/consts.ts @@ -59,6 +59,10 @@ export const SITE: Site = { name: "Posts", href: "/posts", }, + { + name: "Archive", + href: "/archive", + }, { name: "CV", href: "/cv", @@ -70,25 +74,6 @@ export const HOME: Metadata = { TITLE: "Troy Lusty", DESCRIPTION: "Hi, my name is Troy and I'm a student 3D artist currently studying in my second year of an FdA Games and Interactive Design course in the UK.", - HOMESETTINGS: { - NUM_POSTS_ON_HOMEPAGE: 2, - NUM_PROJECTS_ON_HOMEPAGE: 6, - }, -}; - -export const CV: Metadata = { - TITLE: "Troy Lusty", - DESCRIPTION: "Curriculum vitae.", -}; - -export const POSTS: Metadata = { - TITLE: "Posts", - DESCRIPTION: "A collection of articles on topics I am passionate about.", -}; - -export const WORK: Metadata = { - TITLE: "Work", - DESCRIPTION: "Where I have worked and what I have done.", }; export const PROJECTS: Metadata = { @@ -96,3 +81,23 @@ export const PROJECTS: Metadata = { DESCRIPTION: "A collection of my projects, with links to repositories and demos.", }; + +export const POSTS: Metadata = { + TITLE: "Posts", + DESCRIPTION: "A collection of articles on topics I am passionate about.", +}; + +export const ARCHIVE: Metadata = { + TITLE: "Archive", + DESCRIPTION: "A collection of small, unfinished, or historic personal works.", +}; + +export const ABOUT: Metadata = { + TITLE: "About", + DESCRIPTION: "About me.", +}; + +export const CV: Metadata = { + TITLE: "Troy Lusty", + DESCRIPTION: "Curriculum vitae.", +}; diff --git a/src/content/config.ts b/src/content/config.ts index d721db0..05cc014 100644 --- a/src/content/config.ts +++ b/src/content/config.ts @@ -16,7 +16,14 @@ const posts = defineCollection({ alt: z.string(), }), tags: z.array(z.string()), - extraAuthors: z.array(z.string()).optional(), + extraAuthors: z + .array( + z.object({ + name: z.string().min(1), + url: z.string().url(), + }), + ) + .optional(), categories: z.array(z.string()), }) .merge(rssSchema), @@ -37,11 +44,18 @@ const projects = defineCollection({ alt: z.string(), }), tags: z.array(z.string()), - extraAuthors: z.array(z.string()).optional(), + extraAuthors: z + .array( + z.object({ + name: z.string().min(1), + url: z.string().url(), + }), + ) + .optional(), categories: z.array(z.string()), featured: z.boolean().optional(), collection: z.boolean().optional(), - includeHero: z.boolean().optional(), + rank: z.number().positive().optional(), }) .merge(rssSchema), }); diff --git a/src/content/posts/website/index.mdx b/src/content/posts/website/index.mdx index ef3753f..1b22b0f 100644 --- a/src/content/posts/website/index.mdx +++ b/src/content/posts/website/index.mdx @@ -1,9 +1,9 @@ --- title: "Website" -date: 2025-04-07 +date: 2025-04-25 description: "An overview of what I am using to host my digital content." image: - url: "showcase.avif" + url: "showcase.webp" alt: "Website showcase" categories: ["personal"] tags: ["self-host", "forgejo", "docker", "vps"] @@ -12,7 +12,7 @@ draft: true This post will outline my workflow of using a self-hosted Forgejo instance and Actions runner to automatically deploy my personal site and any software releases, all without having to rely on another provider. -![Website showcase](showcase.avif) +![Website showcase](showcase.webp) ## Steps diff --git a/src/content/posts/website/showcase.avif b/src/content/posts/website/showcase.avif deleted file mode 100644 index 395dbe2..0000000 Binary files a/src/content/posts/website/showcase.avif and /dev/null differ diff --git a/src/content/posts/website/showcase.webp b/src/content/posts/website/showcase.webp new file mode 100644 index 0000000..628157a Binary files /dev/null and b/src/content/posts/website/showcase.webp differ diff --git a/src/content/projects/3d-package-design/glowing-box-animation.webm b/src/content/projects/3d-package-design/glowing-box-animation.webm deleted file mode 100644 index 82478ca..0000000 Binary files a/src/content/projects/3d-package-design/glowing-box-animation.webm and /dev/null differ diff --git a/src/content/projects/3d-package-design/index.mdx b/src/content/projects/3d-package-design/index.mdx deleted file mode 100644 index bbec803..0000000 --- a/src/content/projects/3d-package-design/index.mdx +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "3D Package Design" -description: "3D Package Design inspired by the work of Derek Elliott." -date: 2020-08-16 -image: - { url: "troy-lusty-3d-package-design.avif", alt: "3D package design frame" } -tags: ["blender"] -categories: ["personal"] ---- - -import glowing_box_animation from "glowing-box-animation.webm"; - -3D Package Design inspired from [video](https://www.youtube.com/watch?v=4SRwODk0oOU) by Derek Elliott. -This was the final product from my first attempt at some simple animation within Blender done sometime in August of 2020. - - - -_Animation_ - -![3D package design frame](troy-lusty-3d-package-design.avif) diff --git a/src/content/projects/3d-package-design/troy-lusty-3d-package-design.avif b/src/content/projects/3d-package-design/troy-lusty-3d-package-design.avif deleted file mode 100644 index b30702e..0000000 Binary files a/src/content/projects/3d-package-design/troy-lusty-3d-package-design.avif and /dev/null differ diff --git a/src/content/projects/a-long-way-down/alwd-img1.jpg b/src/content/projects/a-long-way-down/alwd-img1.jpg new file mode 100755 index 0000000..a826ae1 Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-img1.jpg differ diff --git a/src/content/projects/a-long-way-down/alwd-img2.jpg b/src/content/projects/a-long-way-down/alwd-img2.jpg new file mode 100755 index 0000000..6dde1ad Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-img2.jpg differ diff --git a/src/content/projects/a-long-way-down/alwd-img3.jpg b/src/content/projects/a-long-way-down/alwd-img3.jpg new file mode 100755 index 0000000..dc5f1ff Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-img3.jpg differ diff --git a/src/content/projects/a-long-way-down/alwd-img4.jpg b/src/content/projects/a-long-way-down/alwd-img4.jpg new file mode 100755 index 0000000..89cbd8e Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-img4.jpg differ diff --git a/src/content/projects/a-long-way-down/alwd-img5.jpg b/src/content/projects/a-long-way-down/alwd-img5.jpg new file mode 100755 index 0000000..b385f68 Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-img5.jpg differ diff --git a/src/content/projects/a-long-way-down/alwd-img6.jpg b/src/content/projects/a-long-way-down/alwd-img6.jpg new file mode 100755 index 0000000..b56643d Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-img6.jpg differ diff --git a/src/content/projects/a-long-way-down/alwd-screenshots/2703_colorworkshowcase.jpg b/src/content/projects/a-long-way-down/alwd-screenshots/2703_colorworkshowcase.jpg new file mode 100755 index 0000000..221959a Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-screenshots/2703_colorworkshowcase.jpg differ diff --git a/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-01 20-02-00.jpg b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-01 20-02-00.jpg new file mode 100755 index 0000000..26afdea Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-01 20-02-00.jpg differ diff --git a/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-07 15-30-43.png b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-07 15-30-43.png new file mode 100755 index 0000000..ab76526 Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-07 15-30-43.png differ diff --git a/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-16 20-56-45.png b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-16 20-56-45.png new file mode 100755 index 0000000..073e0ba Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-16 20-56-45.png differ diff --git a/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-16 21-01-50.png b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-16 21-01-50.png new file mode 100755 index 0000000..2a39b44 Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-16 21-01-50.png differ diff --git a/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-16 21-30-15.png b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-16 21-30-15.png new file mode 100755 index 0000000..b3ff316 Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-16 21-30-15.png differ diff --git a/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-16 21-36-03.png b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-16 21-36-03.png new file mode 100755 index 0000000..990d0c2 Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-16 21-36-03.png differ diff --git a/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-17 21-46-33.png b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-17 21-46-33.png new file mode 100755 index 0000000..47234cb Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-17 21-46-33.png differ diff --git a/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 09-35-26.png b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 09-35-26.png new file mode 100755 index 0000000..e94204a Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 09-35-26.png differ diff --git a/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 09-40-26.png b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 09-40-26.png new file mode 100755 index 0000000..8a666c5 Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 09-40-26.png differ diff --git a/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 09-45-04.png b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 09-45-04.png new file mode 100755 index 0000000..bbf522a Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 09-45-04.png differ diff --git a/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 10-01-02.png b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 10-01-02.png new file mode 100755 index 0000000..a92a562 Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 10-01-02.png differ diff --git a/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 10-01-34.png b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 10-01-34.png new file mode 100755 index 0000000..0bb3f54 Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 10-01-34.png differ diff --git a/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 10-01-48.png b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 10-01-48.png new file mode 100755 index 0000000..929f170 Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 10-01-48.png differ diff --git a/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 10-02-00.png b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 10-02-00.png new file mode 100755 index 0000000..d2e9dac Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 10-02-00.png differ diff --git a/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 10-02-24.png b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 10-02-24.png new file mode 100755 index 0000000..53cf952 Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 10-02-24.png differ diff --git a/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 10-02-38.png b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 10-02-38.png new file mode 100755 index 0000000..8ed1c51 Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 10-02-38.png differ diff --git a/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 10-12-36.png b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 10-12-36.png new file mode 100755 index 0000000..f5544d6 Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 10-12-36.png differ diff --git a/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 10-42-50.png b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 10-42-50.png new file mode 100755 index 0000000..1f28d1b Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 10-42-50.png differ diff --git a/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 10-45-50.png b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 10-45-50.png new file mode 100755 index 0000000..31d0d78 Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot from 2023-03-18 10-45-50.png differ diff --git a/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot_20230402_222043.png b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot_20230402_222043.png new file mode 100644 index 0000000..1b5b145 Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot_20230402_222043.png differ diff --git a/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot_20230402_222405.png b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot_20230402_222405.png new file mode 100755 index 0000000..d409796 Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot_20230402_222405.png differ diff --git a/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot_20230402_222426.png b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot_20230402_222426.png new file mode 100755 index 0000000..9e64539 Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-screenshots/Screenshot_20230402_222426.png differ diff --git a/src/content/projects/a-long-way-down/alwd-screenshots/alwd-presentation/alwd-img1.jpg b/src/content/projects/a-long-way-down/alwd-screenshots/alwd-presentation/alwd-img1.jpg new file mode 100755 index 0000000..a826ae1 Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-screenshots/alwd-presentation/alwd-img1.jpg differ diff --git a/src/content/projects/a-long-way-down/alwd-screenshots/alwd-presentation/alwd-img2.jpg b/src/content/projects/a-long-way-down/alwd-screenshots/alwd-presentation/alwd-img2.jpg new file mode 100755 index 0000000..6dde1ad Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-screenshots/alwd-presentation/alwd-img2.jpg differ diff --git a/src/content/projects/a-long-way-down/alwd-screenshots/alwd-presentation/alwd-img3.jpg b/src/content/projects/a-long-way-down/alwd-screenshots/alwd-presentation/alwd-img3.jpg new file mode 100755 index 0000000..dc5f1ff Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-screenshots/alwd-presentation/alwd-img3.jpg differ diff --git a/src/content/projects/a-long-way-down/alwd-screenshots/alwd-presentation/alwd-img4.jpg b/src/content/projects/a-long-way-down/alwd-screenshots/alwd-presentation/alwd-img4.jpg new file mode 100755 index 0000000..89cbd8e Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-screenshots/alwd-presentation/alwd-img4.jpg differ diff --git a/src/content/projects/a-long-way-down/alwd-screenshots/alwd-presentation/alwd-img5.jpg b/src/content/projects/a-long-way-down/alwd-screenshots/alwd-presentation/alwd-img5.jpg new file mode 100755 index 0000000..b385f68 Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-screenshots/alwd-presentation/alwd-img5.jpg differ diff --git a/src/content/projects/a-long-way-down/alwd-screenshots/alwd-presentation/alwd-img6.jpg b/src/content/projects/a-long-way-down/alwd-screenshots/alwd-presentation/alwd-img6.jpg new file mode 100755 index 0000000..b56643d Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-screenshots/alwd-presentation/alwd-img6.jpg differ diff --git a/src/content/projects/a-long-way-down/alwd-screenshots/alwd-presentation/icon.jpg b/src/content/projects/a-long-way-down/alwd-screenshots/alwd-presentation/icon.jpg new file mode 100755 index 0000000..23a2075 Binary files /dev/null and b/src/content/projects/a-long-way-down/alwd-screenshots/alwd-presentation/icon.jpg differ diff --git a/src/content/projects/a-long-way-down/index.mdx b/src/content/projects/a-long-way-down/index.mdx index 35fd645..9d39084 100644 --- a/src/content/projects/a-long-way-down/index.mdx +++ b/src/content/projects/a-long-way-down/index.mdx @@ -3,16 +3,15 @@ title: "A Long Way Down (Demo)" description: "A short, atmospheric linear adventure created for my FdA Games and Interactive Design degree." date: 2023-05-11 featured: true -image: { url: "alwd-img1.avif", alt: "A Long Way Down Intro Showcase" } +image: { url: "alwd-img1.jpg", alt: "A Long Way Down Intro Showcase" } tags: ["unreal engine", "blender", "inkscape"] categories: ["education"] -includeHero: true -extraAuthors: ["Sam Griffiths"] +extraAuthors: [{ name: "Sam Griffiths", url: "https://samgriffiths.dev" }] --- import alongwaydown_demo_walkthrough from "alongwaydown-demo-walkthrough.webm"; -A Long Way Down is a short, atmospheric linear adventure created alongside my friend [Sam](https://samgriffiths.dev) as a project for our FdA Games and Interactive Design degree. It is the follow up project to our previous work: [Nightmare](/projects/nightmare). Currently the [demo](https://samandtroy.itch.io/alongwaydown) is available on Itch.io. +A Long Way Down is a short, atmospheric linear adventure created alongside my friend [Sam](https://samgriffiths.dev) as a project for our FdA Games and Interactive Design degree. It is the follow up project to our previous work: [Nightmare](#nightmare), and was made to be an evolutionary improvement of it. Currently the [demo](https://samandtroy.itch.io/alongwaydown) is available to download and play on Itch.io.