diff --git a/astro.config.ts b/astro.config.ts index 57e62b7..f28a695 100644 --- a/astro.config.ts +++ b/astro.config.ts @@ -29,6 +29,12 @@ export default defineConfig({ domains: ["webmention.io", "kazoottt.top"], service: passthroughImageService(), }, + redirects: { + "/blog/[...slug]": "/posts/[...slug]", + "/category/[...slug]": "/categories/[...slug]", + "/diary/[...slug]": "/notes/[...slug]", + "/tag/[...slug]": "/tags/[...slug]", + }, integrations: [ expressiveCode(expressiveCodeOptions), icon(), diff --git a/package.json b/package.json index ed2f6ff..0a69a61 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "@astrojs/rss": "4.0.11", "@astrojs/sitemap": "3.2.1", "@giscus/react": "^3.1.0", - "@tailwindcss/vite": "4.0.3", + "@tailwindcss/vite": "4.0.7", "astro": "5.2.5", "astro-expressive-code": "^0.40.1", "astro-icon": "^1.1.5", @@ -66,7 +66,7 @@ "prettier-plugin-astro": "0.14.1", "prettier-plugin-tailwindcss": "^0.6.11", "reading-time": "^1.5.0", - "tailwindcss": "4.0.4", + "tailwindcss": "4.0.7", "typescript": "^5.7.3" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 464f5d8..432792b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,8 +27,8 @@ importers: specifier: ^3.1.0 version: 3.1.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tailwindcss/vite': - specifier: 4.0.3 - version: 4.0.3(vite@6.1.0(@types/node@22.10.5)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.7.0)) + specifier: 4.0.7 + version: 4.0.7(vite@6.1.0(@types/node@22.10.5)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.7.0)) astro: specifier: 5.2.5 version: 5.2.5(@types/node@22.10.5)(jiti@2.4.2)(lightningcss@1.29.1)(rollup@4.34.6)(typescript@5.7.3)(yaml@2.7.0) @@ -125,7 +125,7 @@ importers: version: 2.6.2 '@tailwindcss/typography': specifier: ^0.5.16 - version: 0.5.16(tailwindcss@4.0.4) + version: 0.5.16(tailwindcss@4.0.7) '@types/hast': specifier: ^3.0.4 version: 3.0.4 @@ -157,8 +157,8 @@ importers: specifier: ^1.5.0 version: 1.5.0 tailwindcss: - specifier: 4.0.4 - version: 4.0.4 + specifier: 4.0.7 + version: 4.0.7 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -342,24 +342,28 @@ packages: engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] + libc: [musl] '@biomejs/cli-linux-arm64@1.9.4': resolution: {integrity: sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] + libc: [glibc] '@biomejs/cli-linux-x64-musl@1.9.4': resolution: {integrity: sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] + libc: [musl] '@biomejs/cli-linux-x64@1.9.4': resolution: {integrity: sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] + libc: [glibc] '@biomejs/cli-win32-arm64@1.9.4': resolution: {integrity: sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==} @@ -607,67 +611,79 @@ packages: resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} cpu: [arm64] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-arm@1.0.5': resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} cpu: [arm] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-s390x@1.0.4': resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} cpu: [s390x] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-x64@1.0.4': resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} cpu: [x64] os: [linux] + libc: [glibc] '@img/sharp-libvips-linuxmusl-arm64@1.0.4': resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} cpu: [arm64] os: [linux] + libc: [musl] '@img/sharp-libvips-linuxmusl-x64@1.0.4': resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} cpu: [x64] os: [linux] + libc: [musl] '@img/sharp-linux-arm64@0.33.5': resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + libc: [glibc] '@img/sharp-linux-arm@0.33.5': resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] + libc: [glibc] '@img/sharp-linux-s390x@0.33.5': resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] + libc: [glibc] '@img/sharp-linux-x64@0.33.5': resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] + libc: [glibc] '@img/sharp-linuxmusl-arm64@0.33.5': resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + libc: [musl] '@img/sharp-linuxmusl-x64@0.33.5': resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] + libc: [musl] '@img/sharp-wasm32@0.33.5': resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} @@ -791,24 +807,28 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] '@resvg/resvg-js-linux-arm64-musl@2.6.2': resolution: {integrity: sha512-3h3dLPWNgSsD4lQBJPb4f+kvdOSJHa5PjTYVsWHxLUzH4IFTJUAnmuWpw4KqyQ3NA5QCyhw4TWgxk3jRkQxEKg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] '@resvg/resvg-js-linux-x64-gnu@2.6.2': resolution: {integrity: sha512-IVUe+ckIerA7xMZ50duAZzwf1U7khQe2E0QpUxu5MBJNao5RqC0zwV/Zm965vw6D3gGFUl7j4m+oJjubBVoftw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] '@resvg/resvg-js-linux-x64-musl@2.6.2': resolution: {integrity: sha512-UOf83vqTzoYQO9SZ0fPl2ZIFtNIz/Rr/y+7X8XRX1ZnBYsQ/tTb+cj9TE+KHOdmlTFBxhYzVkP2lRByCzqi4jQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] '@resvg/resvg-js-win32-arm64-msvc@2.6.2': resolution: {integrity: sha512-7C/RSgCa+7vqZ7qAbItfiaAWhyRSoD4l4BQAbVDqRRsRgY+S+hgS3in0Rxr7IorKUpGE69X48q6/nOAuTJQxeQ==} @@ -875,51 +895,61 @@ packages: resolution: {integrity: sha512-88fSzjC5xeH9S2Vg3rPgXJULkHcLYMkh8faix8DX4h4TIAL65ekwuQMA/g2CXq8W+NJC43V6fUpYZNjaX3+IIg==} cpu: [arm] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.34.6': resolution: {integrity: sha512-wM4ztnutBqYFyvNeR7Av+reWI/enK9tDOTKNF+6Kk2Q96k9bwhDDOlnCUNRPvromlVXo04riSliMBs/Z7RteEg==} cpu: [arm] os: [linux] + libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.34.6': resolution: {integrity: sha512-9RyprECbRa9zEjXLtvvshhw4CMrRa3K+0wcp3KME0zmBe1ILmvcVHnypZ/aIDXpRyfhSYSuN4EPdCCj5Du8FIA==} cpu: [arm64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.34.6': resolution: {integrity: sha512-qTmklhCTyaJSB05S+iSovfo++EwnIEZxHkzv5dep4qoszUMX5Ca4WM4zAVUMbfdviLgCSQOu5oU8YoGk1s6M9Q==} cpu: [arm64] os: [linux] + libc: [musl] '@rollup/rollup-linux-loongarch64-gnu@4.34.6': resolution: {integrity: sha512-4Qmkaps9yqmpjY5pvpkfOerYgKNUGzQpFxV6rnS7c/JfYbDSU0y6WpbbredB5cCpLFGJEqYX40WUmxMkwhWCjw==} cpu: [loong64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-powerpc64le-gnu@4.34.6': resolution: {integrity: sha512-Zsrtux3PuaxuBTX/zHdLaFmcofWGzaWW1scwLU3ZbW/X+hSsFbz9wDIp6XvnT7pzYRl9MezWqEqKy7ssmDEnuQ==} cpu: [ppc64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-gnu@4.34.6': resolution: {integrity: sha512-aK+Zp+CRM55iPrlyKiU3/zyhgzWBxLVrw2mwiQSYJRobCURb781+XstzvA8Gkjg/hbdQFuDw44aUOxVQFycrAg==} cpu: [riscv64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-s390x-gnu@4.34.6': resolution: {integrity: sha512-WoKLVrY9ogmaYPXwTH326+ErlCIgMmsoRSx6bO+l68YgJnlOXhygDYSZe/qbUJCSiCiZAQ+tKm88NcWuUXqOzw==} cpu: [s390x] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.34.6': resolution: {integrity: sha512-Sht4aFvmA4ToHd2vFzwMFaQCiYm2lDFho5rPcvPBT5pCdC+GwHG6CMch4GQfmWTQ1SwRKS0dhDYb54khSrjDWw==} cpu: [x64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-musl@4.34.6': resolution: {integrity: sha512-zmmpOQh8vXc2QITsnCiODCDGXFC8LMi64+/oPpPx5qz3pqv0s6x46ps4xoycfUiVZps5PFn1gksZzo4RGTKT+A==} cpu: [x64] os: [linux] + libc: [musl] '@rollup/rollup-win32-arm64-msvc@4.34.6': resolution: {integrity: sha512-3/q1qUsO/tLqGBaD4uXsB6coVGB3usxw3qyeVb59aArCgedSF66MPdgRStUd7vbZOsko/CgVaY5fo2vkvPLWiA==} @@ -962,77 +992,81 @@ packages: engines: {node: '>= 8.0.0'} hasBin: true - '@tailwindcss/node@4.0.3': - resolution: {integrity: sha512-QsVJokOl0pJ4AbJV33D2npvLcHGPWi5MOSZtrtE0GT3tSx+3D0JE2lokLA8yHS1x3oCY/3IyRyy7XX6tmzid7A==} + '@tailwindcss/node@4.0.7': + resolution: {integrity: sha512-dkFXufkbRB2mu3FPsW5xLAUWJyexpJA+/VtQj18k3SUiJVLdpgzBd1v1gRRcIpEJj7K5KpxBKfOXlZxT3ZZRuA==} - '@tailwindcss/oxide-android-arm64@4.0.3': - resolution: {integrity: sha512-S8XOTQuMnpijZRlPm5HBzPJjZ28quB+40LSRHjRnQF6rRYKsvpr1qkY7dfwsetNdd+kMLOMDsvmuT8WnqqETvg==} + '@tailwindcss/oxide-android-arm64@4.0.7': + resolution: {integrity: sha512-5iQXXcAeOHBZy8ASfHFm1k0O/9wR2E3tKh6+P+ilZZbQiMgu+qrnfpBWYPc3FPuQdWiWb73069WT5D+CAfx/tg==} engines: {node: '>= 10'} cpu: [arm64] os: [android] - '@tailwindcss/oxide-darwin-arm64@4.0.3': - resolution: {integrity: sha512-smrY2DpzhXvgDhZtQlYAl8+vxJ04lv2/64C1eiRxvsRT2nkw/q+zA1/eAYKvUHat6cIuwqDku3QucmrUT6pCeg==} + '@tailwindcss/oxide-darwin-arm64@4.0.7': + resolution: {integrity: sha512-7yGZtEc5IgVYylqK/2B0yVqoofk4UAbkn1ygNpIJZyrOhbymsfr8uUFCueTu2fUxmAYIfMZ8waWo2dLg/NgLgg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@tailwindcss/oxide-darwin-x64@4.0.3': - resolution: {integrity: sha512-NTz8x/LcGUjpZAWUxz0ZuzHao90Wj9spoQgomwB+/hgceh5gcJDfvaBYqxLFpKzVglpnbDSq1Fg0p0zI4oa5Pg==} + '@tailwindcss/oxide-darwin-x64@4.0.7': + resolution: {integrity: sha512-tPQDV20fBjb26yWbPqT1ZSoDChomMCiXTKn4jupMSoMCFyU7+OJvIY1ryjqBuY622dEBJ8LnCDDWsnj1lX9nNQ==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@tailwindcss/oxide-freebsd-x64@4.0.3': - resolution: {integrity: sha512-yQc9Q0JCOp3kkAV8gKgDctXO60IkQhHpqGB+KgOccDtD5UmN6Q5+gd+lcsDyQ7N8dRuK1fAud51xQpZJgKfm7g==} + '@tailwindcss/oxide-freebsd-x64@4.0.7': + resolution: {integrity: sha512-sZqJpTyTZiknU9LLHuByg5GKTW+u3FqM7q7myequAXxKOpAFiOfXpY710FuMY+gjzSapyRbDXJlsTQtCyiTo5w==} engines: {node: '>= 10'} cpu: [x64] os: [freebsd] - '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.3': - resolution: {integrity: sha512-e1ivVMLSnxTOU1O3npnxN16FEyWM/g3SuH2pP6udxXwa0/SnSAijRwcAYRpqIlhVKujr158S8UeHxQjC4fGl4w==} + '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.7': + resolution: {integrity: sha512-PBgvULgeSswjd8cbZ91gdIcIDMdc3TUHV5XemEpxlqt9M8KoydJzkuB/Dt910jYdofOIaTWRL6adG9nJICvU4A==} engines: {node: '>= 10'} cpu: [arm] os: [linux] - '@tailwindcss/oxide-linux-arm64-gnu@4.0.3': - resolution: {integrity: sha512-PLrToqQqX6sdJ9DmMi8IxZWWrfjc9pdi9AEEPTrtMts3Jm9HBi1WqEeF1VwZZ2aW9TXloE5OwA35zuuq1Bhb/Q==} + '@tailwindcss/oxide-linux-arm64-gnu@4.0.7': + resolution: {integrity: sha512-By/a2yeh+e9b+C67F88ndSwVJl2A3tcUDb29FbedDi+DZ4Mr07Oqw9Y1DrDrtHIDhIZ3bmmiL1dkH2YxrtV+zw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] - '@tailwindcss/oxide-linux-arm64-musl@4.0.3': - resolution: {integrity: sha512-YlzRxx7N1ampfgSKzEDw0iwDkJXUInR4cgNEqmR4TzHkU2Vhg59CGPJrTI7dxOBofD8+O35R13Nk9Ytyv0JUFg==} + '@tailwindcss/oxide-linux-arm64-musl@4.0.7': + resolution: {integrity: sha512-WHYs3cpPEJb/ccyT20NOzopYQkl7JKncNBUbb77YFlwlXMVJLLV3nrXQKhr7DmZxz2ZXqjyUwsj2rdzd9stYdw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] - '@tailwindcss/oxide-linux-x64-gnu@4.0.3': - resolution: {integrity: sha512-Xfc3z/li6XkuD7Hs+Uk6pjyCXnfnd9zuQTKOyDTZJ544xc2yoMKUkuDw6Et9wb31MzU2/c0CIUpTDa71lL9KHw==} + '@tailwindcss/oxide-linux-x64-gnu@4.0.7': + resolution: {integrity: sha512-7bP1UyuX9kFxbOwkeIJhBZNevKYPXB6xZI37v09fqi6rqRJR8elybwjMUHm54GVP+UTtJ14ueB1K54Dy1tIO6w==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] - '@tailwindcss/oxide-linux-x64-musl@4.0.3': - resolution: {integrity: sha512-ugKVqKzwa/cjmqSQG17aS9DYrEcQ/a5NITcgmOr3JLW4Iz64C37eoDlkC8tIepD3S/Td/ywKAolTQ8fKbjEL4g==} + '@tailwindcss/oxide-linux-x64-musl@4.0.7': + resolution: {integrity: sha512-gBQIV8nL/LuhARNGeroqzXymMzzW5wQzqlteVqOVoqwEfpHOP3GMird5pGFbnpY+NP0fOlsZGrxxOPQ4W/84bQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] - '@tailwindcss/oxide-win32-arm64-msvc@4.0.3': - resolution: {integrity: sha512-qHPDMl+UUwsk1RMJMgAXvhraWqUUT+LR/tkXix5RA39UGxtTrHwsLIN1AhNxI5i2RFXAXfmFXDqZCdyQ4dWmAQ==} + '@tailwindcss/oxide-win32-arm64-msvc@4.0.7': + resolution: {integrity: sha512-aH530NFfx0kpQpvYMfWoeG03zGnRCMVlQG8do/5XeahYydz+6SIBxA1tl/cyITSJyWZHyVt6GVNkXeAD30v0Xg==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@tailwindcss/oxide-win32-x64-msvc@4.0.3': - resolution: {integrity: sha512-+ujwN4phBGyOsPyLgGgeCyUm4Mul+gqWVCIGuSXWgrx9xVUnf6LVXrw0BDBc9Aq1S2qMyOTX4OkCGbZeoIo8Qw==} + '@tailwindcss/oxide-win32-x64-msvc@4.0.7': + resolution: {integrity: sha512-8Cva6bbJN7ZJx320k7vxGGdU0ewmpfS5A4PudyzUuofdi8MgeINuiiWiPQ0VZCda/GX88K6qp+6UpDZNVr8HMQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@tailwindcss/oxide@4.0.3': - resolution: {integrity: sha512-FFcp3VNvRjjmFA39ORM27g2mbflMQljhvM7gxBAujHxUy4LXlKa6yMF9wbHdTbPqTONiCyyOYxccvJyVyI/XBg==} + '@tailwindcss/oxide@4.0.7': + resolution: {integrity: sha512-yr6w5YMgjy+B+zkJiJtIYGXW+HNYOPfRPtSs+aqLnKwdEzNrGv4ZuJh9hYJ3mcA+HMq/K1rtFV+KsEr65S558g==} engines: {node: '>= 10'} '@tailwindcss/typography@0.5.16': @@ -1040,8 +1074,8 @@ packages: peerDependencies: tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1' - '@tailwindcss/vite@4.0.3': - resolution: {integrity: sha512-Qj6rSO+EvXnNDymloKZ11D54JJTnDrkRWJBzNHENDxjt0HtrCZJbSLIrcJ/WdaoU4othrel/oFqHpO/doxIS/Q==} + '@tailwindcss/vite@4.0.7': + resolution: {integrity: sha512-GYx5sxArfIMtdZCsxfya3S/efMmf4RvfqdiLUozkhmSFBNUFnYVodatpoO/en4/BsOIGvq/RB6HwcTLn9prFnQ==} peerDependencies: vite: ^5.2.0 || ^6 @@ -2090,24 +2124,28 @@ packages: engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [glibc] lightningcss-linux-arm64-musl@1.29.1: resolution: {integrity: sha512-UKMFrG4rL/uHNgelBsDwJcBqVpzNJbzsKkbI3Ja5fg00sgQnHw/VrzUTEc4jhZ+AN2BvQYz/tkHu4vt1kLuJyw==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [musl] lightningcss-linux-x64-gnu@1.29.1: resolution: {integrity: sha512-u1S+xdODy/eEtjADqirA774y3jLcm8RPtYztwReEXoZKdzgsHYPl0s5V52Tst+GKzqjebkULT86XMSxejzfISw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + libc: [glibc] lightningcss-linux-x64-musl@1.29.1: resolution: {integrity: sha512-L0Tx0DtaNUTzXv0lbGCLB/c/qEADanHbu4QdcNOXLIe1i8i22rZRpbT3gpWYsCh9aSL9zFujY/WmEXIatWvXbw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + libc: [musl] lightningcss-win32-arm64-msvc@1.29.1: resolution: {integrity: sha512-QoOVnkIEFfbW4xPi+dpdft/zAKmgLgsRHfJalEPYuJDOWf7cLQzYg0DEh8/sn737FaeMJxHZRc1oBreiwZCjog==} @@ -3181,11 +3219,8 @@ packages: tailwind-merge@3.0.1: resolution: {integrity: sha512-AvzE8FmSoXC7nC+oU5GlQJbip2UO7tmOhOfQyOmPhrStOGXHU08j8mZEHZ4BmCqY5dWTCo4ClWkNyRNx1wpT0g==} - tailwindcss@4.0.3: - resolution: {integrity: sha512-ImmZF0Lon5RrQpsEAKGxRvHwCvMgSC4XVlFRqmbzTEDb/3wvin9zfEZrMwgsa3yqBbPqahYcVI6lulM2S7IZAA==} - - tailwindcss@4.0.4: - resolution: {integrity: sha512-/ezDLEkOLf1lXkr9F2iI5BHJbexJpty5zkV2B8bGHCqAdbc9vk85Jgdkq+ZOvNkNPa3yAaqJ8DjRt584Bc84kw==} + tailwindcss@4.0.7: + resolution: {integrity: sha512-yH5bPPyapavo7L+547h3c4jcBXcrKwybQRjwdEIVAd9iXRvy/3T1CC6XSQEgZtRySjKfqvo3Cc0ZF1DTheuIdA==} tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} @@ -4463,73 +4498,73 @@ snapshots: fflate: 0.7.4 string.prototype.codepointat: 0.2.1 - '@tailwindcss/node@4.0.3': + '@tailwindcss/node@4.0.7': dependencies: enhanced-resolve: 5.18.1 jiti: 2.4.2 - tailwindcss: 4.0.3 + tailwindcss: 4.0.7 - '@tailwindcss/oxide-android-arm64@4.0.3': + '@tailwindcss/oxide-android-arm64@4.0.7': optional: true - '@tailwindcss/oxide-darwin-arm64@4.0.3': + '@tailwindcss/oxide-darwin-arm64@4.0.7': optional: true - '@tailwindcss/oxide-darwin-x64@4.0.3': + '@tailwindcss/oxide-darwin-x64@4.0.7': optional: true - '@tailwindcss/oxide-freebsd-x64@4.0.3': + '@tailwindcss/oxide-freebsd-x64@4.0.7': optional: true - '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.3': + '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.7': optional: true - '@tailwindcss/oxide-linux-arm64-gnu@4.0.3': + '@tailwindcss/oxide-linux-arm64-gnu@4.0.7': optional: true - '@tailwindcss/oxide-linux-arm64-musl@4.0.3': + '@tailwindcss/oxide-linux-arm64-musl@4.0.7': optional: true - '@tailwindcss/oxide-linux-x64-gnu@4.0.3': + '@tailwindcss/oxide-linux-x64-gnu@4.0.7': optional: true - '@tailwindcss/oxide-linux-x64-musl@4.0.3': + '@tailwindcss/oxide-linux-x64-musl@4.0.7': optional: true - '@tailwindcss/oxide-win32-arm64-msvc@4.0.3': + '@tailwindcss/oxide-win32-arm64-msvc@4.0.7': optional: true - '@tailwindcss/oxide-win32-x64-msvc@4.0.3': + '@tailwindcss/oxide-win32-x64-msvc@4.0.7': optional: true - '@tailwindcss/oxide@4.0.3': + '@tailwindcss/oxide@4.0.7': optionalDependencies: - '@tailwindcss/oxide-android-arm64': 4.0.3 - '@tailwindcss/oxide-darwin-arm64': 4.0.3 - '@tailwindcss/oxide-darwin-x64': 4.0.3 - '@tailwindcss/oxide-freebsd-x64': 4.0.3 - '@tailwindcss/oxide-linux-arm-gnueabihf': 4.0.3 - '@tailwindcss/oxide-linux-arm64-gnu': 4.0.3 - '@tailwindcss/oxide-linux-arm64-musl': 4.0.3 - '@tailwindcss/oxide-linux-x64-gnu': 4.0.3 - '@tailwindcss/oxide-linux-x64-musl': 4.0.3 - '@tailwindcss/oxide-win32-arm64-msvc': 4.0.3 - '@tailwindcss/oxide-win32-x64-msvc': 4.0.3 + '@tailwindcss/oxide-android-arm64': 4.0.7 + '@tailwindcss/oxide-darwin-arm64': 4.0.7 + '@tailwindcss/oxide-darwin-x64': 4.0.7 + '@tailwindcss/oxide-freebsd-x64': 4.0.7 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.0.7 + '@tailwindcss/oxide-linux-arm64-gnu': 4.0.7 + '@tailwindcss/oxide-linux-arm64-musl': 4.0.7 + '@tailwindcss/oxide-linux-x64-gnu': 4.0.7 + '@tailwindcss/oxide-linux-x64-musl': 4.0.7 + '@tailwindcss/oxide-win32-arm64-msvc': 4.0.7 + '@tailwindcss/oxide-win32-x64-msvc': 4.0.7 - '@tailwindcss/typography@0.5.16(tailwindcss@4.0.4)': + '@tailwindcss/typography@0.5.16(tailwindcss@4.0.7)': dependencies: lodash.castarray: 4.4.0 lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 postcss-selector-parser: 6.0.10 - tailwindcss: 4.0.4 + tailwindcss: 4.0.7 - '@tailwindcss/vite@4.0.3(vite@6.1.0(@types/node@22.10.5)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.7.0))': + '@tailwindcss/vite@4.0.7(vite@6.1.0(@types/node@22.10.5)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.7.0))': dependencies: - '@tailwindcss/node': 4.0.3 - '@tailwindcss/oxide': 4.0.3 + '@tailwindcss/node': 4.0.7 + '@tailwindcss/oxide': 4.0.7 lightningcss: 1.29.1 - tailwindcss: 4.0.3 + tailwindcss: 4.0.7 vite: 6.1.0(@types/node@22.10.5)(jiti@2.4.2)(lightningcss@1.29.1)(yaml@2.7.0) '@trysound/sax@0.2.0': {} @@ -7294,9 +7329,7 @@ snapshots: tailwind-merge@3.0.1: {} - tailwindcss@4.0.3: {} - - tailwindcss@4.0.4: {} + tailwindcss@4.0.7: {} tapable@2.2.1: {} diff --git a/src/pages/blog/[...page].astro b/src/pages/blog/[...page].astro deleted file mode 100644 index bae6a05..0000000 --- a/src/pages/blog/[...page].astro +++ /dev/null @@ -1,31 +0,0 @@ ---- -import type { CollectionEntry } from "astro:content"; -import { getAllPosts, getUniqueCategories, getUniqueTags } from "@/data/post"; -import { collectionDateSort } from "@/utils/date"; -import type { GetStaticPaths, Page } from "astro"; - -export const getStaticPaths = (async ({ paginate }) => { - const MAX_POSTS_PER_PAGE = 20; - const MAX_TAGS = 7; - const MAX_CATEGORIES = 7; - const allPosts = await getAllPosts(); - const uniqueTags = getUniqueTags(allPosts).slice(0, MAX_TAGS); - const uniqueCategories = getUniqueCategories(allPosts).slice(0, MAX_CATEGORIES); - const postsCount = allPosts.length; - return paginate(allPosts.sort(collectionDateSort), { - pageSize: MAX_POSTS_PER_PAGE, - props: { uniqueTags, uniqueCategories, postsCount }, - }); -}) satisfies GetStaticPaths; - -interface Props { - page: Page>; - uniqueTags: string[]; - uniqueCategories: string[]; - postsCount: number; -} - -const currentPath = Astro.url.pathname; -const newPath = currentPath.replace("/blog/", "/posts/"); -return Astro.redirect(newPath); ---- diff --git a/src/pages/blog/[...slug].astro b/src/pages/blog/[...slug].astro deleted file mode 100644 index 543116f..0000000 --- a/src/pages/blog/[...slug].astro +++ /dev/null @@ -1,17 +0,0 @@ ---- -import { getAllPosts } from "@/data/post"; -import type { GetStaticPaths } from "astro"; - -// if you're using an adaptor in SSR mode, getStaticPaths wont work -> https://docs.astro.build/en/guides/routing/#modifying-the-slug-example-for-ssr -export const getStaticPaths = (async () => { - const blogEntries = await getAllPosts(); - return blogEntries.map((post) => ({ - params: { slug: post.id }, - props: { post }, - })); -}) satisfies GetStaticPaths; - -const currentPath = Astro.url.pathname; -const newPath = currentPath.replace("/blog/", "/posts/"); -return Astro.redirect(newPath); ---- diff --git a/src/pages/categories/[category]/[...page].astro b/src/pages/categories/[category]/[...page].astro deleted file mode 100644 index e8990b7..0000000 --- a/src/pages/categories/[category]/[...page].astro +++ /dev/null @@ -1,74 +0,0 @@ ---- -import type { CollectionEntry } from "astro:content"; -import Pagination from "@/components/Paginator.astro"; -import PostPreview from "@/components/blog/PostPreview.astro"; -import { getAllPosts, getUniqueCategories } from "@/data/post"; -import PageLayout from "@/layouts/Base.astro"; -import { collectionDateSort } from "@/utils/date"; -import type { GetStaticPaths, Page } from "astro"; - -export const getStaticPaths: GetStaticPaths = async ({ paginate }) => { - const allPosts = await getAllPosts(); - const sortedPosts = allPosts.sort(collectionDateSort); - const uniqueCategories = getUniqueCategories(sortedPosts); - - return uniqueCategories.flatMap((category) => { - const filterPosts = sortedPosts.filter((post) => post.data.category === category); - return paginate(filterPosts, { - pageSize: 20, - params: { category }, - }); - }); -}; - -interface Props { - page: Page>; -} - -const { page } = Astro.props; -const { category } = Astro.params; - -const meta = { - description: `View all posts with the category - ${category}`, - title: `Category: ${category}`, -}; - -const paginationProps = { - ...(page.url.prev && { - prevUrl: { - text: "← Previous Categories", - url: page.url.prev, - }, - }), - ...(page.url.next && { - nextUrl: { - text: "Next Categories →", - url: page.url.next, - }, - }), -}; ---- - - -
-

Posts with the category {category}

- All {" "}Categories - - -
-
-

Post List

-
    - { - page.data.map((p) => ( -
  • - -
  • - )) - } -
- -
-
diff --git a/src/pages/categories/index.astro b/src/pages/categories/index.astro deleted file mode 100644 index 885a65f..0000000 --- a/src/pages/categories/index.astro +++ /dev/null @@ -1,35 +0,0 @@ ---- -import { getAllPosts, getUniqueCategoriesWithCount } from "@/data/post"; -import PageLayout from "@/layouts/Base.astro"; - -const allPosts = await getAllPosts(); -const allCategories = getUniqueCategoriesWithCount(allPosts); - -const meta = { - description: "A list of all the categories I've written about in my posts", - title: "All Categories", -}; ---- - - -

Categories

-
    - { - allCategories.map(([item, val]) => ( -
  • - - #{item} - - - - {val} Post{val > 1 && "s"} - -
  • - )) - } -
-
diff --git a/src/pages/diary/[...page].astro b/src/pages/diary/[...page].astro deleted file mode 100644 index bc32ebe..0000000 --- a/src/pages/diary/[...page].astro +++ /dev/null @@ -1,25 +0,0 @@ ---- -import { type CollectionEntry, getCollection } from "astro:content"; -import { collectionModifiedDateSort } from "@/utils/date"; -import type { GetStaticPaths, Page } from "astro"; - -export const getStaticPaths = (async ({ paginate }) => { - const MAX_NOTES_PER_PAGE = 10; - const allNotes = await getCollection("note"); - const notesCount = allNotes.length; - return paginate(allNotes.sort(collectionModifiedDateSort), { - pageSize: MAX_NOTES_PER_PAGE, - props: { notesCount }, - }); -}) satisfies GetStaticPaths; - -interface Props { - page: Page>; - uniqueTags: string[]; - notesCount: number; -} - -const currentPath = Astro.url.pathname; -const newPath = currentPath.replace("/diary/", "/notes/"); -return Astro.redirect(newPath); ---- diff --git a/src/pages/diary/[...slug].astro b/src/pages/diary/[...slug].astro deleted file mode 100644 index ca929d7..0000000 --- a/src/pages/diary/[...slug].astro +++ /dev/null @@ -1,18 +0,0 @@ ---- -import { getCollection } from "astro:content"; - -import type { GetStaticPaths } from "astro"; - -// if you're using an adaptor in SSR mode, getStaticPaths wont work -> https://docs.astro.build/en/guides/routing/#modifying-the-slug-example-for-ssr -export const getStaticPaths = (async () => { - const allNotes = await getCollection("note"); - return allNotes.map((note) => ({ - params: { slug: note.id }, - props: { note }, - })); -}) satisfies GetStaticPaths; - -const currentPath = Astro.url.pathname; -const newPath = currentPath.replace("/diary/", "/notes/"); -return Astro.redirect(newPath); ---- diff --git a/src/pages/tag/[tag]/[...page].astro b/src/pages/tag/[tag]/[...page].astro deleted file mode 100644 index 6f3cafc..0000000 --- a/src/pages/tag/[tag]/[...page].astro +++ /dev/null @@ -1,23 +0,0 @@ ---- -import { getAllPosts, getUniqueTags } from "@/data/post"; -import { collectionDateSort } from "@/utils/date"; -import type { GetStaticPaths } from "astro"; - -export const getStaticPaths: GetStaticPaths = async ({ paginate }) => { - const allPosts = await getAllPosts(); - const sortedPosts = allPosts.sort(collectionDateSort); - const uniqueTags = getUniqueTags(sortedPosts); - - return uniqueTags.flatMap((tag) => { - const filterPosts = sortedPosts.filter((post) => post.data.tags.includes(tag)); - return paginate(filterPosts, { - pageSize: 20, - params: { tag }, - }); - }); -}; - -const currentPath = Astro.url.pathname; -const newPath = currentPath.replace("/tag/", "/tags/"); -return Astro.redirect(newPath); ---- diff --git a/src/pages/tag/index.astro b/src/pages/tag/index.astro deleted file mode 100644 index e4518d1..0000000 --- a/src/pages/tag/index.astro +++ /dev/null @@ -1,3 +0,0 @@ ---- -return Astro.redirect("/tags"); ----