diff --git a/Makefile b/Makefile index 2ad42db..aec5e4b 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ PROJECT_NAME := "timmypidashev.dev" PROJECT_AUTHORS := "Timothy Pidashev (timmypidashev) " -PROJECT_VERSION := "v1.0.2" +PROJECT_VERSION := "v2.1.1" PROJECT_LICENSE := "MIT" PROJECT_SOURCES := "https://github.com/timmypidashev/web" PROJECT_REGISTRY := "ghcr.io/timmypidashev" diff --git a/src/package.json b/src/package.json index 356483e..dc90207 100644 --- a/src/package.json +++ b/src/package.json @@ -8,19 +8,19 @@ "preview": "astro preview" }, "devDependencies": { - "@astrojs/react": "^4.2.4", + "@astrojs/react": "^4.3.0", "@astrojs/tailwind": "^6.0.2", "@tailwindcss/typography": "^0.5.16", "@types/react": "^18.3.20", "@types/react-dom": "^18.3.6", - "astro": "^5.7.4", + "astro": "^5.13.2", "tailwindcss": "^3.4.17" }, "dependencies": { - "@astrojs/mdx": "^4.2.4", - "@astrojs/node": "^9.2.0", - "@astrojs/rss": "^4.0.11", - "@astrojs/sitemap": "^3.3.0", + "@astrojs/mdx": "^4.3.4", + "@astrojs/node": "^9.4.2", + "@astrojs/rss": "^4.0.12", + "@astrojs/sitemap": "^3.5.0", "@giscus/react": "^3.1.0", "@pilcrowjs/object-parser": "^0.0.4", "@react-hook/intersection-observer": "^3.1.2", diff --git a/src/pnpm-lock.yaml b/src/pnpm-lock.yaml index 928aa71..8735e88 100644 --- a/src/pnpm-lock.yaml +++ b/src/pnpm-lock.yaml @@ -9,17 +9,17 @@ importers: .: dependencies: '@astrojs/mdx': - specifier: ^4.2.4 - version: 4.2.4(astro@5.7.4(jiti@1.21.7)(rollup@4.40.0)(typescript@5.7.3)(yaml@2.7.1)) + specifier: ^4.3.4 + version: 4.3.4(astro@5.13.2(jiti@1.21.7)(rollup@4.40.0)(typescript@5.7.3)(yaml@2.7.1)) '@astrojs/node': - specifier: ^9.2.0 - version: 9.2.0(astro@5.7.4(jiti@1.21.7)(rollup@4.40.0)(typescript@5.7.3)(yaml@2.7.1)) + specifier: ^9.4.2 + version: 9.4.2(astro@5.13.2(jiti@1.21.7)(rollup@4.40.0)(typescript@5.7.3)(yaml@2.7.1)) '@astrojs/rss': - specifier: ^4.0.11 - version: 4.0.11 + specifier: ^4.0.12 + version: 4.0.12 '@astrojs/sitemap': - specifier: ^3.3.0 - version: 3.3.0 + specifier: ^3.5.0 + version: 3.5.0 '@giscus/react': specifier: ^3.1.0 version: 3.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -70,11 +70,11 @@ importers: version: 5.0.0 devDependencies: '@astrojs/react': - specifier: ^4.2.4 - version: 4.2.4(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(jiti@1.21.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(yaml@2.7.1) + specifier: ^4.3.0 + version: 4.3.0(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(jiti@1.21.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(yaml@2.7.1) '@astrojs/tailwind': specifier: ^6.0.2 - version: 6.0.2(astro@5.7.4(jiti@1.21.7)(rollup@4.40.0)(typescript@5.7.3)(yaml@2.7.1))(tailwindcss@3.4.17) + version: 6.0.2(astro@5.13.2(jiti@1.21.7)(rollup@4.40.0)(typescript@5.7.3)(yaml@2.7.1))(tailwindcss@3.4.17) '@tailwindcss/typography': specifier: ^0.5.16 version: 0.5.16(tailwindcss@3.4.17) @@ -85,8 +85,8 @@ importers: specifier: ^18.3.6 version: 18.3.6(@types/react@18.3.20) astro: - specifier: ^5.7.4 - version: 5.7.4(jiti@1.21.7)(rollup@4.40.0)(typescript@5.7.3)(yaml@2.7.1) + specifier: ^5.13.2 + version: 5.13.2(jiti@1.21.7)(rollup@4.40.0)(typescript@5.7.3)(yaml@2.7.1) tailwindcss: specifier: ^3.4.17 version: 3.4.17 @@ -101,44 +101,44 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@astrojs/compiler@2.11.0': - resolution: {integrity: sha512-zZOO7i+JhojO8qmlyR/URui6LyfHJY6m+L9nwyX5GiKD78YoRaZ5tzz6X0fkl+5bD3uwlDHayf6Oe8Fu36RKNg==} + '@astrojs/compiler@2.12.2': + resolution: {integrity: sha512-w2zfvhjNCkNMmMMOn5b0J8+OmUaBL1o40ipMvqcG6NRpdC+lKxmTi48DT8Xw0SzJ3AfmeFLB45zXZXtmbsjcgw==} - '@astrojs/internal-helpers@0.6.1': - resolution: {integrity: sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A==} + '@astrojs/internal-helpers@0.7.2': + resolution: {integrity: sha512-KCkCqR3Goym79soqEtbtLzJfqhTWMyVaizUi35FLzgGSzBotSw8DB1qwsu7U96ihOJgYhDk2nVPz+3LnXPeX6g==} - '@astrojs/markdown-remark@6.3.1': - resolution: {integrity: sha512-c5F5gGrkczUaTVgmMW9g1YMJGzOtRvjjhw6IfGuxarM6ct09MpwysP10US729dy07gg8y+ofVifezvP3BNsWZg==} + '@astrojs/markdown-remark@6.3.6': + resolution: {integrity: sha512-bwylYktCTsLMVoCOEHbn2GSUA3c5KT/qilekBKA3CBng0bo1TYjNZPr761vxumRk9kJGqTOtU+fgCAp5Vwokug==} - '@astrojs/mdx@4.2.4': - resolution: {integrity: sha512-c832AWpiMCcuPY8j+yr5T+hOf8n5RlKLFHlNTt15xxkOk3zjFJP81TIYKrMrbhD5rMzJ09Ixi+xM0m68w2Q0DQ==} - engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0} + '@astrojs/mdx@4.3.4': + resolution: {integrity: sha512-Ew3iP+6zuzzJWNEH5Qr1iknrue1heEfgmfuMpuwLaSwqlUiJQ0NDb2oxKosgWU1ROYmVf1H4KCmS6QdMWKyFjw==} + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} peerDependencies: astro: ^5.0.0 - '@astrojs/node@9.2.0': - resolution: {integrity: sha512-TUQPsMz8OtMsVc66rE7R2c2KsHgZ31sgdnazbn1bQp+9JMAYUvl9XzDPwBnrb9WkVWtEKLdyw+W8h9DzU+LQ9w==} + '@astrojs/node@9.4.2': + resolution: {integrity: sha512-4whvXWUIL7yi84ayEXCZd/G2sLMqJKiA7hKps2Z3AVPlymXWY7qyafJ/5gphD6CzRjen6+mqPRYeqxnJG8VcDw==} peerDependencies: astro: ^5.3.0 - '@astrojs/prism@3.2.0': - resolution: {integrity: sha512-GilTHKGCW6HMq7y3BUv9Ac7GMe/MO9gi9GW62GzKtth0SwukCu/qp2wLiGpEujhY+VVhaG9v7kv/5vFzvf4NYw==} - engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0} + '@astrojs/prism@3.3.0': + resolution: {integrity: sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ==} + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} - '@astrojs/react@4.2.4': - resolution: {integrity: sha512-Qnj4dPsGZzUF0duQG+m6B7oFbGZpiRTl8TP6WvjeMr6BlI3dobj7wkKc/I9dQhUrWsswUafbPJuOJPGFUZtmKQ==} - engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0} + '@astrojs/react@4.3.0': + resolution: {integrity: sha512-N02aj52Iezn69qHyx5+XvPqgsPMEnel9mI5JMbGiRMTzzLMuNaxRVoQTaq2024Dpr7BLsxCjqMkNvelqMDhaHA==} + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} peerDependencies: '@types/react': ^17.0.50 || ^18.0.21 || ^19.0.0 '@types/react-dom': ^17.0.17 || ^18.0.6 || ^19.0.0 react: ^17.0.2 || ^18.0.0 || ^19.0.0 react-dom: ^17.0.2 || ^18.0.0 || ^19.0.0 - '@astrojs/rss@4.0.11': - resolution: {integrity: sha512-3e3H8i6kc97KGnn9iaZBJpIkdoQi8MmR5zH5R+dWsfCM44lLTszOqy1OBfGGxDt56mpQkYVtZJWoxMyWuUZBfw==} + '@astrojs/rss@4.0.12': + resolution: {integrity: sha512-O5yyxHuDVb6DQ6VLOrbUVFSm+NpObulPxjs6XT9q3tC+RoKbN4HXMZLpv0LvXd1qdAjzVgJ1NFD+zKHJNDXikw==} - '@astrojs/sitemap@3.3.0': - resolution: {integrity: sha512-nYE4lKQtk+Kbrw/w0G0TTgT724co0jUsU4tPlHY9au5HmTBKbwiCLwO/15b1/y13aZ4Kr9ZbMeMHlXuwn0ty4Q==} + '@astrojs/sitemap@3.5.0': + resolution: {integrity: sha512-ldOvoBxuRgpcdndzksskOTzU55g76tkHC/POpejUbPGz6zR4rJKiXh8thX4WEPWDhCTZUafhJ1qf7k1muStHfg==} '@astrojs/tailwind@6.0.2': resolution: {integrity: sha512-j3mhLNeugZq6A8dMNXVarUa8K6X9AW+QHU9u3lKNrPLMHhOQ0S7VeWhHwEeJFpEK1BTKEUY1U78VQv2gN6hNGg==} @@ -146,9 +146,9 @@ packages: astro: ^3.0.0 || ^4.0.0 || ^5.0.0 tailwindcss: ^3.0.24 - '@astrojs/telemetry@3.2.0': - resolution: {integrity: sha512-wxhSKRfKugLwLlr4OFfcqovk+LIFtKwLyGPqMsv+9/ibqqnW3Gv7tBhtKEb0gAyUAC4G9BTVQeQahqnQAhd6IQ==} - engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0} + '@astrojs/telemetry@3.3.0': + resolution: {integrity: sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==} + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} '@babel/code-frame@7.26.2': resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} @@ -733,6 +733,9 @@ packages: '@types/estree@1.0.7': resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + '@types/fontkit@2.0.8': + resolution: {integrity: sha512-wN+8bYxIpJf+5oZdrdtaX04qUuWHcKxcDEgRS9Qm9ZClSHjzEn13SxUC+5eRM+4yXIeTYk8mTzLAWGF64847ew==} + '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} @@ -839,9 +842,9 @@ packages: resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} hasBin: true - astro@5.7.4: - resolution: {integrity: sha512-h+pndGOyoYbsBd0YvP7bL3gotUSlyltp8OLpcYg062w0n5c96wJ9xt/RmwwXzGbdcUjWFtw0c5z4zCA92NDmlA==} - engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} + astro@5.13.2: + resolution: {integrity: sha512-yjcXY0Ua3EwjpVd3GoUXa65HQ6qgmURBptA+M9GzE0oYvgfuyM7bIbH8IR/TWIbdefVUJR5b7nZ0oVnMytmyfQ==} + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true autoprefixer@10.4.21: @@ -1161,8 +1164,8 @@ packages: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} - fast-xml-parser@4.5.3: - resolution: {integrity: sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==} + fast-xml-parser@5.2.5: + resolution: {integrity: sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==} hasBin: true fastq@1.19.1: @@ -1184,6 +1187,9 @@ packages: resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} engines: {node: '>=8'} + fontace@0.3.0: + resolution: {integrity: sha512-czoqATrcnxgWb/nAkfyIrRp6Q8biYj7nGnL6zfhTcX+JKKpWHFBnb8uNMw/kZr7u++3Y3wYSYoZgHkCcsuBpBg==} + fontkit@2.0.4: resolution: {integrity: sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==} @@ -2066,8 +2072,8 @@ packages: engines: {node: '>=14.0.0', npm: '>=6.0.0'} hasBin: true - smol-toml@1.3.3: - resolution: {integrity: sha512-KMVLNWu490KlNfD0lbfDBUktJIEaZRBj1eeK0SMfdpO/rfyARIzlnPVI1Ge4l0vtSJmQUAiGKxMyLGrCT38iyA==} + smol-toml@1.4.2: + resolution: {integrity: sha512-rInDH6lCNiEyn3+hH8KVGFdbjc099j47+OSgbMrfDYX1CmXLfdKd7qi6IfcWj2wFxvSVkuI46M+wPGYfEOEj6g==} engines: {node: '>= 18'} source-map-js@1.2.1: @@ -2111,8 +2117,8 @@ packages: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} - strnum@1.1.2: - resolution: {integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==} + strnum@2.1.1: + resolution: {integrity: sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==} style-to-js@1.1.16: resolution: {integrity: sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==} @@ -2217,8 +2223,8 @@ packages: unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} - unifont@0.2.0: - resolution: {integrity: sha512-RoF14/tOhLvDa7R5K6A3PjsfJVFKvadvRpWjfV1ttabUe9704P1ie9z1ABLWEts/8SxrBVePav/XhgeFNltpsw==} + unifont@0.5.0: + resolution: {integrity: sha512-4DueXMP5Hy4n607sh+vJ+rajoLu778aU3GzqeTCqsD/EaUcvqZT9wPC8kgK6Vjh22ZskrxyRCR71FwNOaYn6jA==} unist-util-find-after@5.0.0: resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} @@ -2327,8 +2333,8 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vite@6.3.2: - resolution: {integrity: sha512-ZSvGOXKGceizRQIZSz7TGJ0pS3QLlVY/9hwxVh17W3re67je1RKYzFHivZ/t0tubU78Vkyb9WnHPENSBCzbckg==} + vite@6.3.5: + resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -2447,8 +2453,8 @@ packages: typescript: ^4.9.4 || ^5.0.2 zod: ^3 - zod@3.24.3: - resolution: {integrity: sha512-HhY1oqzWCQWuUqvBFnsyrtZRhyPeR7SUGv+C4+MsisMuVfSPx8HpwWqH8tRahSlt6M3PiFAcoeFhZAqIXTxoSg==} + zod@3.25.76: + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -2462,14 +2468,14 @@ snapshots: '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 - '@astrojs/compiler@2.11.0': {} + '@astrojs/compiler@2.12.2': {} - '@astrojs/internal-helpers@0.6.1': {} + '@astrojs/internal-helpers@0.7.2': {} - '@astrojs/markdown-remark@6.3.1': + '@astrojs/markdown-remark@6.3.6': dependencies: - '@astrojs/internal-helpers': 0.6.1 - '@astrojs/prism': 3.2.0 + '@astrojs/internal-helpers': 0.7.2 + '@astrojs/prism': 3.3.0 github-slugger: 2.0.0 hast-util-from-html: 2.0.3 hast-util-to-text: 4.0.2 @@ -2483,7 +2489,7 @@ snapshots: remark-rehype: 11.1.2 remark-smartypants: 3.0.2 shiki: 3.2.2 - smol-toml: 1.3.3 + smol-toml: 1.4.2 unified: 11.0.5 unist-util-remove-position: 5.0.0 unist-util-visit: 5.0.0 @@ -2492,12 +2498,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/mdx@4.2.4(astro@5.7.4(jiti@1.21.7)(rollup@4.40.0)(typescript@5.7.3)(yaml@2.7.1))': + '@astrojs/mdx@4.3.4(astro@5.13.2(jiti@1.21.7)(rollup@4.40.0)(typescript@5.7.3)(yaml@2.7.1))': dependencies: - '@astrojs/markdown-remark': 6.3.1 + '@astrojs/markdown-remark': 6.3.6 '@mdx-js/mdx': 3.1.0(acorn@8.14.1) acorn: 8.14.1 - astro: 5.7.4(jiti@1.21.7)(rollup@4.40.0)(typescript@5.7.3)(yaml@2.7.1) + astro: 5.13.2(jiti@1.21.7)(rollup@4.40.0)(typescript@5.7.3)(yaml@2.7.1) es-module-lexer: 1.6.0 estree-util-visit: 2.0.0 hast-util-to-html: 9.0.5 @@ -2511,28 +2517,28 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/node@9.2.0(astro@5.7.4(jiti@1.21.7)(rollup@4.40.0)(typescript@5.7.3)(yaml@2.7.1))': + '@astrojs/node@9.4.2(astro@5.13.2(jiti@1.21.7)(rollup@4.40.0)(typescript@5.7.3)(yaml@2.7.1))': dependencies: - '@astrojs/internal-helpers': 0.6.1 - astro: 5.7.4(jiti@1.21.7)(rollup@4.40.0)(typescript@5.7.3)(yaml@2.7.1) + '@astrojs/internal-helpers': 0.7.2 + astro: 5.13.2(jiti@1.21.7)(rollup@4.40.0)(typescript@5.7.3)(yaml@2.7.1) send: 1.2.0 server-destroy: 1.0.1 transitivePeerDependencies: - supports-color - '@astrojs/prism@3.2.0': + '@astrojs/prism@3.3.0': dependencies: prismjs: 1.30.0 - '@astrojs/react@4.2.4(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(jiti@1.21.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(yaml@2.7.1)': + '@astrojs/react@4.3.0(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(jiti@1.21.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(yaml@2.7.1)': dependencies: '@types/react': 18.3.20 '@types/react-dom': 18.3.6(@types/react@18.3.20) - '@vitejs/plugin-react': 4.4.1(vite@6.3.2(jiti@1.21.7)(yaml@2.7.1)) + '@vitejs/plugin-react': 4.4.1(vite@6.3.5(jiti@1.21.7)(yaml@2.7.1)) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) ultrahtml: 1.6.0 - vite: 6.3.2(jiti@1.21.7)(yaml@2.7.1) + vite: 6.3.5(jiti@1.21.7)(yaml@2.7.1) transitivePeerDependencies: - '@types/node' - jiti @@ -2547,20 +2553,20 @@ snapshots: - tsx - yaml - '@astrojs/rss@4.0.11': + '@astrojs/rss@4.0.12': dependencies: - fast-xml-parser: 4.5.3 + fast-xml-parser: 5.2.5 kleur: 4.1.5 - '@astrojs/sitemap@3.3.0': + '@astrojs/sitemap@3.5.0': dependencies: sitemap: 8.0.0 stream-replace-string: 2.0.0 - zod: 3.24.3 + zod: 3.25.76 - '@astrojs/tailwind@6.0.2(astro@5.7.4(jiti@1.21.7)(rollup@4.40.0)(typescript@5.7.3)(yaml@2.7.1))(tailwindcss@3.4.17)': + '@astrojs/tailwind@6.0.2(astro@5.13.2(jiti@1.21.7)(rollup@4.40.0)(typescript@5.7.3)(yaml@2.7.1))(tailwindcss@3.4.17)': dependencies: - astro: 5.7.4(jiti@1.21.7)(rollup@4.40.0)(typescript@5.7.3)(yaml@2.7.1) + astro: 5.13.2(jiti@1.21.7)(rollup@4.40.0)(typescript@5.7.3)(yaml@2.7.1) autoprefixer: 10.4.21(postcss@8.5.3) postcss: 8.5.3 postcss-load-config: 4.0.2(postcss@8.5.3) @@ -2568,7 +2574,7 @@ snapshots: transitivePeerDependencies: - ts-node - '@astrojs/telemetry@3.2.0': + '@astrojs/telemetry@3.3.0': dependencies: ci-info: 4.2.0 debug: 4.4.0 @@ -3111,6 +3117,10 @@ snapshots: '@types/estree@1.0.7': {} + '@types/fontkit@2.0.8': + dependencies: + '@types/node': 17.0.45 + '@types/hast@3.0.4': dependencies: '@types/unist': 3.0.3 @@ -3152,14 +3162,14 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-react@4.4.1(vite@6.3.2(jiti@1.21.7)(yaml@2.7.1))': + '@vitejs/plugin-react@4.4.1(vite@6.3.5(jiti@1.21.7)(yaml@2.7.1))': dependencies: '@babel/core': 7.26.10 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10) '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 6.3.2(jiti@1.21.7)(yaml@2.7.1) + vite: 6.3.5(jiti@1.21.7)(yaml@2.7.1) transitivePeerDependencies: - supports-color @@ -3206,12 +3216,12 @@ snapshots: astring@1.9.0: {} - astro@5.7.4(jiti@1.21.7)(rollup@4.40.0)(typescript@5.7.3)(yaml@2.7.1): + astro@5.13.2(jiti@1.21.7)(rollup@4.40.0)(typescript@5.7.3)(yaml@2.7.1): dependencies: - '@astrojs/compiler': 2.11.0 - '@astrojs/internal-helpers': 0.6.1 - '@astrojs/markdown-remark': 6.3.1 - '@astrojs/telemetry': 3.2.0 + '@astrojs/compiler': 2.12.2 + '@astrojs/internal-helpers': 0.7.2 + '@astrojs/markdown-remark': 6.3.6 + '@astrojs/telemetry': 3.3.0 '@capsizecss/unpack': 2.4.0 '@oslojs/encoding': 1.1.0 '@rollup/pluginutils': 5.1.4(rollup@4.40.0) @@ -3234,9 +3244,11 @@ snapshots: esbuild: 0.25.2 estree-walker: 3.0.3 flattie: 1.1.1 + fontace: 0.3.0 github-slugger: 2.0.0 html-escaper: 3.0.3 http-cache-semantics: 4.1.1 + import-meta-resolve: 4.1.0 js-yaml: 4.1.0 kleur: 4.1.5 magic-string: 0.30.17 @@ -3251,22 +3263,23 @@ snapshots: rehype: 13.0.2 semver: 7.7.1 shiki: 3.2.2 + smol-toml: 1.4.2 tinyexec: 0.3.2 tinyglobby: 0.2.13 tsconfck: 3.1.5(typescript@5.7.3) ultrahtml: 1.6.0 - unifont: 0.2.0 + unifont: 0.5.0 unist-util-visit: 5.0.0 unstorage: 1.15.0 vfile: 6.0.3 - vite: 6.3.2(jiti@1.21.7)(yaml@2.7.1) - vitefu: 1.0.6(vite@6.3.2(jiti@1.21.7)(yaml@2.7.1)) + vite: 6.3.5(jiti@1.21.7)(yaml@2.7.1) + vitefu: 1.0.6(vite@6.3.5(jiti@1.21.7)(yaml@2.7.1)) xxhash-wasm: 1.1.0 yargs-parser: 21.1.1 yocto-spinner: 0.2.2 - zod: 3.24.3 - zod-to-json-schema: 3.24.5(zod@3.24.3) - zod-to-ts: 1.2.0(typescript@5.7.3)(zod@3.24.3) + zod: 3.25.76 + zod-to-json-schema: 3.24.5(zod@3.25.76) + zod-to-ts: 1.2.0(typescript@5.7.3)(zod@3.25.76) optionalDependencies: sharp: 0.33.5 transitivePeerDependencies: @@ -3617,9 +3630,9 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.8 - fast-xml-parser@4.5.3: + fast-xml-parser@5.2.5: dependencies: - strnum: 1.1.2 + strnum: 2.1.1 fastq@1.19.1: dependencies: @@ -3635,6 +3648,11 @@ snapshots: flattie@1.1.1: {} + fontace@0.3.0: + dependencies: + '@types/fontkit': 2.0.8 + fontkit: 2.0.4 + fontkit@2.0.4: dependencies: '@swc/helpers': 0.5.17 @@ -4977,7 +4995,7 @@ snapshots: arg: 5.0.2 sax: 1.4.1 - smol-toml@1.3.3: {} + smol-toml@1.4.2: {} source-map-js@1.2.1: {} @@ -5020,7 +5038,7 @@ snapshots: dependencies: ansi-regex: 6.1.0 - strnum@1.1.2: {} + strnum@2.1.1: {} style-to-js@1.1.16: dependencies: @@ -5143,7 +5161,7 @@ snapshots: trough: 2.2.0 vfile: 6.0.3 - unifont@0.2.0: + unifont@0.5.0: dependencies: css-tree: 3.1.0 ohash: 2.0.11 @@ -5228,7 +5246,7 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite@6.3.2(jiti@1.21.7)(yaml@2.7.1): + vite@6.3.5(jiti@1.21.7)(yaml@2.7.1): dependencies: esbuild: 0.25.2 fdir: 6.4.4(picomatch@4.0.2) @@ -5241,9 +5259,9 @@ snapshots: jiti: 1.21.7 yaml: 2.7.1 - vitefu@1.0.6(vite@6.3.2(jiti@1.21.7)(yaml@2.7.1)): + vitefu@1.0.6(vite@6.3.5(jiti@1.21.7)(yaml@2.7.1)): optionalDependencies: - vite: 6.3.2(jiti@1.21.7)(yaml@2.7.1) + vite: 6.3.5(jiti@1.21.7)(yaml@2.7.1) web-namespaces@2.0.1: {} @@ -5298,15 +5316,15 @@ snapshots: yoctocolors@2.1.1: {} - zod-to-json-schema@3.24.5(zod@3.24.3): + zod-to-json-schema@3.24.5(zod@3.25.76): dependencies: - zod: 3.24.3 + zod: 3.25.76 - zod-to-ts@1.2.0(typescript@5.7.3)(zod@3.24.3): + zod-to-ts@1.2.0(typescript@5.7.3)(zod@3.25.76): dependencies: typescript: 5.7.3 - zod: 3.24.3 + zod: 3.25.76 - zod@3.24.3: {} + zod@3.25.76: {} zwitch@2.0.4: {} diff --git a/src/src/components/mdx/code-block.tsx b/src/src/components/mdx/code-block.tsx index e8a7ac0..d186c4b 100644 --- a/src/src/components/mdx/code-block.tsx +++ b/src/src/components/mdx/code-block.tsx @@ -1,5 +1,24 @@ import React, { useState } from 'react'; -import { Check, Copy } from 'lucide-react'; +import { Copy, Check } from 'lucide-react'; +import { + SiJavascript, + SiTypescript, + SiPython, + SiRust, + SiGo, + SiC, + SiCplusplus, + SiHtml5, + SiCss3, + SiPhp, + SiRuby, + SiSwift, + SiKotlin, + SiLua, + SiJson, + SiMarkdown, +} from 'react-icons/si'; +import { RxTextAlignLeft } from 'react-icons/rx'; interface CodeBlockProps { children: React.ReactNode; @@ -9,51 +28,134 @@ interface CodeBlockProps { raw?: string; } +const getLanguageIcon = (language: string) => { + // Normalize the language name + const normalizedLang = language.toLowerCase().replace(/^\s+|\s+$/g, ''); + + // Map language names to icons + switch (normalizedLang) { + case 'js': + case 'javascript': + return ; + case 'ts': + case 'typescript': + return ; + case 'py': + case 'python': + return ; + case 'rs': + case 'rust': + return ; + case 'go': + case 'golang': + return ; + case 'c': + return ; + case 'cpp': + case 'c++': + return ; + case 'html': + return ; + case 'css': + return ; + case 'php': + return ; + case 'rb': + case 'ruby': + return ; + case 'swift': + return ; + case 'kt': + case 'kotlin': + return ; + case 'lua': + return ; + case 'json': + return ; + case 'md': + case 'markdown': + return ; + default: + return ; + } +}; + export const CodeBlock: React.FC = ({ children, className, - 'data-language': language, + 'data-language': language = 'text', + 'data-theme': theme, raw }) => { const [copied, setCopied] = useState(false); + const languageIcon = getLanguageIcon(language); const handleCopy = () => { - if (raw) { - navigator.clipboard.writeText(raw); - setCopied(true); - setTimeout(() => setCopied(false), 2000); - } + // If raw content is provided, use that, otherwise try to extract text from children + const textToCopy = raw || ( + typeof children === 'string' + ? children + : ( + React.Children.toArray(children) + .map(child => + typeof child === 'string' + ? child + : child && typeof child === 'object' && 'props' in child && typeof child.props.children === 'string' + ? child.props.children + : '' + ) + .join('') + ) + ); + + navigator.clipboard.writeText(textToCopy) + .then(() => { + setCopied(true); + setTimeout(() => setCopied(false), 2000); + }) + .catch(err => { + console.error('Failed to copy: ', err); + }); }; return ( -
- {language && ( -
- - {language} +
+ {/* Header with Language Icon and Copy Button */} +
+
+ + {languageIcon} +
+ {language || "Code"} +
- )} - -
-        {children}
-      
+ +
+ + {/* Code Display */} +
+
+          {children}
+        
+
); }; + +export default CodeBlock; diff --git a/src/src/content/blog/components/thinkpad-t440p-coreboot-guide/advertisement.tsx b/src/src/content/blog/components/thinkpad-t440p-coreboot-guide/advertisement.tsx new file mode 100644 index 0000000..71c34e5 --- /dev/null +++ b/src/src/content/blog/components/thinkpad-t440p-coreboot-guide/advertisement.tsx @@ -0,0 +1,104 @@ +import React from 'react'; + +interface T440pAdProps { + className?: string; +} + +const Advertisement: React.FC = ({ className = '' }) => { + return ( +
+
+ {/* Icon/Logo placeholder */} +
+ + + +
+ +
+
+

+ Custom Corebooted ThinkPad T440p +

+ + Available Now + +
+ +

+ Skip the technical complexity and get a professionally corebooted ThinkPad T440p + built to your specifications. Each laptop is carefully modified and tested to ensure + optimal performance and reliability. +

+ +
+
+

✨ What's Included:

+
    +
  • • Coreboot firmware pre-installed
  • +
  • • IPS 1080p display upgrade
  • +
  • • RAM options: 4GB, 8GB, or 16GB
  • +
  • • CPU choice available
  • +
  • • Battery upgrade option
  • +
  • • Thorough testing & quality assurance
  • +
+
+ +
+

🔧 Benefits:

+
    +
  • • Faster boot times
  • +
  • • Open-source BIOS
  • +
  • • Enhanced security
  • +
  • • No proprietary firmware
  • +
  • • Full hardware control
  • +
  • • Professional installation
  • +
+
+
+ +
+
+ $500 + USD (base configuration) +
+ +
+ + + + + + Order on eBay + + + +
+
+
+
+
+ ); +}; + +export default Advertisement; diff --git a/src/src/content/blog/thinkpad-t440p-coreboot-guide.mdx b/src/src/content/blog/thinkpad-t440p-coreboot-guide.mdx index 7046d87..762ea30 100644 --- a/src/src/content/blog/thinkpad-t440p-coreboot-guide.mdx +++ b/src/src/content/blog/thinkpad-t440p-coreboot-guide.mdx @@ -8,6 +8,7 @@ image: "/blog/thinkpad-t440p-coreboot-guide/thumbnail.png" --- import { Commands, Command, CommandSequence } from "@/components/mdx/command"; +import Advertisement from '@/content/blog/components/thinkpad-t440p-coreboot-guide/advertisement'; > **Interactive Script Available!** > Want to skip the manual steps in this guide? diff --git a/src/src/layouts/resources.astro b/src/src/layouts/resources.astro new file mode 100644 index 0000000..e69de29 diff --git a/src/src/pages/resources/curriculum/keep b/src/src/pages/resources/curriculum/keep new file mode 100644 index 0000000..e69de29 diff --git a/src/src/pages/resources/index.astro b/src/src/pages/resources/index.astro new file mode 100644 index 0000000..e69de29 diff --git a/src/src/pages/resources/talks/keep b/src/src/pages/resources/talks/keep new file mode 100644 index 0000000..e69de29