diff --git a/astro.config.mjs b/astro.config.mjs
index cda24ad..fbecfd9 100644
--- a/astro.config.mjs
+++ b/astro.config.mjs
@@ -3,26 +3,30 @@ import { defineConfig } from "astro/config";
import sitemap from "@astrojs/sitemap";
import { remarkReadingTime } from "./remark-reading-time.mjs";
+import tailwindcss from "@tailwindcss/vite";
+
// https://astro.build/config
export default defineConfig({
site: "https://isabelroses.com",
integrations: [sitemap()],
+
markdown: {
remarkPlugins: [remarkReadingTime],
shikiConfig: {
themes: {
- light: 'github-light',
- dark: 'github-dark-high-contrast',
- catppuccin_latte: 'catppuccin-latte',
- catppuccin_mocha: 'catppuccin-mocha',
- catppuccin_macchiato: 'catppuccin-macchiato',
- catppuccin_frappe: 'catppuccin-frappe',
+ light: "github-light",
+ dark: "github-dark-high-contrast",
+ catppuccin_latte: "catppuccin-latte",
+ catppuccin_mocha: "catppuccin-mocha",
+ catppuccin_macchiato: "catppuccin-macchiato",
+ catppuccin_frappe: "catppuccin-frappe",
},
- defaultColor: 'catppuccin_mocha',
+ defaultColor: "dark",
},
},
- // legacy self healing urls
+
redirects: {
+ // legacy self healing urls
"/blog/custom-lib-nixossystem-11": "/blog/custom-lib-nixossystem",
"/blog/im-not-mad-im-disappointed-10": "/blog/im-not-mad-im-disappointed",
"/blog/2024-wrapped-9": "/blog/2024-wrapped",
@@ -34,5 +38,11 @@ export default defineConfig({
"/blog/my-workflow-3": "/blog/my-workflow",
"/blog/self-healing-urls-2": "/blog/self-healing-urls",
"/blog/nixos-and-postgresql-1": "/blog/nixos-and-postgresql",
+ // discord api
+ "/api/discord": "https://discord.gg/8RVhHeJH3x",
+ },
+
+ vite: {
+ plugins: [tailwindcss()],
},
});
diff --git a/justfile b/justfile
index a6b8588..81192ab 100644
--- a/justfile
+++ b/justfile
@@ -1,17 +1,9 @@
default: build
-build-styles:
- sass -q --no-source-map --style=compressed styles/main.scss src/styles/global.css
-
-build-astro:
- pnpm run build
-
build:
- @just build-styles
- @just build-astro
+ pnpm run build
run:
- @just build-styles
pnpm run dev
nix:
diff --git a/nix/default.nix b/nix/default.nix
index 7ebaa7b..8b40c81 100644
--- a/nix/default.nix
+++ b/nix/default.nix
@@ -25,7 +25,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
pnpmDeps = pnpm.fetchDeps {
inherit (finalAttrs) pname version src;
- hash = "sha256-J5R2Rd7LbC1l/tEDs8b/ztdsPYPoU8pv8jNrRD3/VEU=";
+ hash = "sha256-6eChQG5P+eZONqhHyMr6TpVqSbYrKKbSfiAoUzDqLKo=";
};
dontUseJustInstall = true;
diff --git a/nix/shell.nix b/nix/shell.nix
index e1af276..6f65f43 100644
--- a/nix/shell.nix
+++ b/nix/shell.nix
@@ -2,6 +2,8 @@
mkShell,
callPackage,
astro-language-server,
+ tailwindcss-language-server,
+ typescript,
}:
let
mainPkg = callPackage ./default.nix { };
@@ -9,5 +11,9 @@ in
mkShell {
inputsFrom = [ mainPkg ];
- packages = [ astro-language-server ];
+ packages = [
+ astro-language-server
+ tailwindcss-language-server
+ typescript
+ ];
}
diff --git a/package.json b/package.json
index 675ee9c..3b68aba 100644
--- a/package.json
+++ b/package.json
@@ -10,11 +10,14 @@
},
"dependencies": {
"@astrojs/sitemap": "^3.3.0",
+ "@tailwindcss/typography": "^0.5.16",
+ "@tailwindcss/vite": "^4.1.4",
"astro": "^5.7.4",
"feed": "^4.2.2",
"markdown-it": "^14.1.0",
"mdast-util-to-string": "^4.0.0",
"reading-time": "^1.5.0",
- "sanitize-html": "^2.16.0"
+ "sanitize-html": "^2.16.0",
+ "tailwindcss": "^4.1.4"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index fed9bac..fdcdb87 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -11,9 +11,15 @@ importers:
'@astrojs/sitemap':
specifier: ^3.3.0
version: 3.3.0
+ '@tailwindcss/typography':
+ specifier: ^0.5.16
+ version: 0.5.16(tailwindcss@4.1.4)
+ '@tailwindcss/vite':
+ specifier: ^4.1.4
+ version: 4.1.4(vite@6.3.2(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3))
astro:
specifier: ^5.7.4
- version: 5.7.4(rollup@4.40.0)(sass@1.86.3)(typescript@5.8.3)
+ version: 5.7.4(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(sass@1.86.3)(typescript@5.8.3)
feed:
specifier: ^4.2.2
version: 4.2.2
@@ -29,6 +35,9 @@ importers:
sanitize-html:
specifier: ^2.16.0
version: 2.16.0
+ tailwindcss:
+ specifier: ^4.1.4
+ version: 4.1.4
packages:
@@ -551,6 +560,101 @@ packages:
'@swc/helpers@0.5.17':
resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==}
+ '@tailwindcss/node@4.1.4':
+ resolution: {integrity: sha512-MT5118zaiO6x6hNA04OWInuAiP1YISXql8Z+/Y8iisV5nuhM8VXlyhRuqc2PEviPszcXI66W44bCIk500Oolhw==}
+
+ '@tailwindcss/oxide-android-arm64@4.1.4':
+ resolution: {integrity: sha512-xMMAe/SaCN/vHfQYui3fqaBDEXMu22BVwQ33veLc8ep+DNy7CWN52L+TTG9y1K397w9nkzv+Mw+mZWISiqhmlA==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [android]
+
+ '@tailwindcss/oxide-darwin-arm64@4.1.4':
+ resolution: {integrity: sha512-JGRj0SYFuDuAGilWFBlshcexev2hOKfNkoX+0QTksKYq2zgF9VY/vVMq9m8IObYnLna0Xlg+ytCi2FN2rOL0Sg==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@tailwindcss/oxide-darwin-x64@4.1.4':
+ resolution: {integrity: sha512-sdDeLNvs3cYeWsEJ4H1DvjOzaGios4QbBTNLVLVs0XQ0V95bffT3+scptzYGPMjm7xv4+qMhCDrkHwhnUySEzA==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@tailwindcss/oxide-freebsd-x64@4.1.4':
+ resolution: {integrity: sha512-VHxAqxqdghM83HslPhRsNhHo91McsxRJaEnShJOMu8mHmEj9Ig7ToHJtDukkuLWLzLboh2XSjq/0zO6wgvykNA==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.4':
+ resolution: {integrity: sha512-OTU/m/eV4gQKxy9r5acuesqaymyeSCnsx1cFto/I1WhPmi5HDxX1nkzb8KYBiwkHIGg7CTfo/AcGzoXAJBxLfg==}
+ engines: {node: '>= 10'}
+ cpu: [arm]
+ os: [linux]
+
+ '@tailwindcss/oxide-linux-arm64-gnu@4.1.4':
+ resolution: {integrity: sha512-hKlLNvbmUC6z5g/J4H+Zx7f7w15whSVImokLPmP6ff1QqTVE+TxUM9PGuNsjHvkvlHUtGTdDnOvGNSEUiXI1Ww==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@tailwindcss/oxide-linux-arm64-musl@4.1.4':
+ resolution: {integrity: sha512-X3As2xhtgPTY/m5edUtddmZ8rCruvBvtxYLMw9OsZdH01L2gS2icsHRwxdU0dMItNfVmrBezueXZCHxVeeb7Aw==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@tailwindcss/oxide-linux-x64-gnu@4.1.4':
+ resolution: {integrity: sha512-2VG4DqhGaDSmYIu6C4ua2vSLXnJsb/C9liej7TuSO04NK+JJJgJucDUgmX6sn7Gw3Cs5ZJ9ZLrnI0QRDOjLfNQ==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+
+ '@tailwindcss/oxide-linux-x64-musl@4.1.4':
+ resolution: {integrity: sha512-v+mxVgH2kmur/X5Mdrz9m7TsoVjbdYQT0b4Z+dr+I4RvreCNXyCFELZL/DO0M1RsidZTrm6O1eMnV6zlgEzTMQ==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+
+ '@tailwindcss/oxide-wasm32-wasi@4.1.4':
+ resolution: {integrity: sha512-2TLe9ir+9esCf6Wm+lLWTMbgklIjiF0pbmDnwmhR9MksVOq+e8aP3TSsXySnBDDvTTVd/vKu1aNttEGj3P6l8Q==}
+ engines: {node: '>=14.0.0'}
+ cpu: [wasm32]
+ bundledDependencies:
+ - '@napi-rs/wasm-runtime'
+ - '@emnapi/core'
+ - '@emnapi/runtime'
+ - '@tybys/wasm-util'
+ - '@emnapi/wasi-threads'
+ - tslib
+
+ '@tailwindcss/oxide-win32-arm64-msvc@4.1.4':
+ resolution: {integrity: sha512-VlnhfilPlO0ltxW9/BgfLI5547PYzqBMPIzRrk4W7uupgCt8z6Trw/tAj6QUtF2om+1MH281Pg+HHUJoLesmng==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@tailwindcss/oxide-win32-x64-msvc@4.1.4':
+ resolution: {integrity: sha512-+7S63t5zhYjslUGb8NcgLpFXD+Kq1F/zt5Xv5qTv7HaFTG/DHyHD9GA6ieNAxhgyA4IcKa/zy7Xx4Oad2/wuhw==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [win32]
+
+ '@tailwindcss/oxide@4.1.4':
+ resolution: {integrity: sha512-p5wOpXyOJx7mKh5MXh5oKk+kqcz8T+bA3z/5VWWeQwFrmuBItGwz8Y2CHk/sJ+dNb9B0nYFfn0rj/cKHZyjahQ==}
+ engines: {node: '>= 10'}
+
+ '@tailwindcss/typography@0.5.16':
+ resolution: {integrity: sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==}
+ peerDependencies:
+ tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1'
+
+ '@tailwindcss/vite@4.1.4':
+ resolution: {integrity: sha512-4UQeMrONbvrsXKXXp/uxmdEN5JIJ9RkH7YVzs6AMxC/KC1+Np7WZBaNIco7TEjlkthqxZbt8pU/ipD+hKjm80A==}
+ peerDependencies:
+ vite: ^5.2.0 || ^6
+
'@types/debug@4.1.12':
resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
@@ -813,6 +917,10 @@ packages:
emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+ enhanced-resolve@5.18.1:
+ resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==}
+ engines: {node: '>=10.13.0'}
+
entities@4.5.0:
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
engines: {node: '>=0.12'}
@@ -883,6 +991,9 @@ packages:
github-slugger@2.0.0:
resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==}
+ graceful-fs@4.2.11:
+ resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
+
h3@1.15.1:
resolution: {integrity: sha512-+ORaOBttdUm1E2Uu/obAyCguiI7MbBvsLTndc3gyK3zU+SYLoZXlyCP9Xgy0gikkGufFLTZXCXD6+4BsufnmHA==}
@@ -978,6 +1089,10 @@ packages:
resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==}
engines: {node: '>=16'}
+ jiti@2.4.2:
+ resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==}
+ hasBin: true
+
js-yaml@4.1.0:
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
hasBin: true
@@ -990,9 +1105,82 @@ packages:
resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
engines: {node: '>=6'}
+ lightningcss-darwin-arm64@1.29.2:
+ resolution: {integrity: sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [darwin]
+
+ lightningcss-darwin-x64@1.29.2:
+ resolution: {integrity: sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [darwin]
+
+ lightningcss-freebsd-x64@1.29.2:
+ resolution: {integrity: sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [freebsd]
+
+ lightningcss-linux-arm-gnueabihf@1.29.2:
+ resolution: {integrity: sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm]
+ os: [linux]
+
+ lightningcss-linux-arm64-gnu@1.29.2:
+ resolution: {integrity: sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [linux]
+
+ lightningcss-linux-arm64-musl@1.29.2:
+ resolution: {integrity: sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [linux]
+
+ lightningcss-linux-x64-gnu@1.29.2:
+ resolution: {integrity: sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [linux]
+
+ lightningcss-linux-x64-musl@1.29.2:
+ resolution: {integrity: sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [linux]
+
+ lightningcss-win32-arm64-msvc@1.29.2:
+ resolution: {integrity: sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [win32]
+
+ lightningcss-win32-x64-msvc@1.29.2:
+ resolution: {integrity: sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [win32]
+
+ lightningcss@1.29.2:
+ resolution: {integrity: sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==}
+ engines: {node: '>= 12.0.0'}
+
linkify-it@5.0.0:
resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==}
+ lodash.castarray@4.4.0:
+ resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==}
+
+ lodash.isplainobject@4.0.6:
+ resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==}
+
+ lodash.merge@4.6.2:
+ resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
+
longest-streak@3.1.0:
resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
@@ -1236,6 +1424,10 @@ packages:
resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
engines: {node: '>=12'}
+ postcss-selector-parser@6.0.10:
+ resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==}
+ engines: {node: '>=4'}
+
postcss@8.5.3:
resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==}
engines: {node: ^10 || ^12 || >=14}
@@ -1392,6 +1584,13 @@ packages:
resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
engines: {node: '>=12'}
+ tailwindcss@4.1.4:
+ resolution: {integrity: sha512-1ZIUqtPITFbv/DxRmDr5/agPqJwF69d24m9qmM1939TJehgY539CtzeZRjbLt5G6fSy/7YqqYsfvoTEw9xUI2A==}
+
+ tapable@2.2.1:
+ resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
+ engines: {node: '>=6'}
+
tiny-inflate@1.0.3:
resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==}
@@ -1547,6 +1746,9 @@ packages:
uploadthing:
optional: true
+ util-deprecate@1.0.2:
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+
vfile-location@5.0.3:
resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==}
@@ -2065,6 +2267,79 @@ snapshots:
dependencies:
tslib: 2.8.1
+ '@tailwindcss/node@4.1.4':
+ dependencies:
+ enhanced-resolve: 5.18.1
+ jiti: 2.4.2
+ lightningcss: 1.29.2
+ tailwindcss: 4.1.4
+
+ '@tailwindcss/oxide-android-arm64@4.1.4':
+ optional: true
+
+ '@tailwindcss/oxide-darwin-arm64@4.1.4':
+ optional: true
+
+ '@tailwindcss/oxide-darwin-x64@4.1.4':
+ optional: true
+
+ '@tailwindcss/oxide-freebsd-x64@4.1.4':
+ optional: true
+
+ '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.4':
+ optional: true
+
+ '@tailwindcss/oxide-linux-arm64-gnu@4.1.4':
+ optional: true
+
+ '@tailwindcss/oxide-linux-arm64-musl@4.1.4':
+ optional: true
+
+ '@tailwindcss/oxide-linux-x64-gnu@4.1.4':
+ optional: true
+
+ '@tailwindcss/oxide-linux-x64-musl@4.1.4':
+ optional: true
+
+ '@tailwindcss/oxide-wasm32-wasi@4.1.4':
+ optional: true
+
+ '@tailwindcss/oxide-win32-arm64-msvc@4.1.4':
+ optional: true
+
+ '@tailwindcss/oxide-win32-x64-msvc@4.1.4':
+ optional: true
+
+ '@tailwindcss/oxide@4.1.4':
+ optionalDependencies:
+ '@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
+
+ '@tailwindcss/typography@0.5.16(tailwindcss@4.1.4)':
+ dependencies:
+ lodash.castarray: 4.4.0
+ lodash.isplainobject: 4.0.6
+ lodash.merge: 4.6.2
+ postcss-selector-parser: 6.0.10
+ tailwindcss: 4.1.4
+
+ '@tailwindcss/vite@4.1.4(vite@6.3.2(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3))':
+ dependencies:
+ '@tailwindcss/node': 4.1.4
+ '@tailwindcss/oxide': 4.1.4
+ tailwindcss: 4.1.4
+ vite: 6.3.2(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)
+
'@types/debug@4.1.12':
dependencies:
'@types/ms': 2.1.0
@@ -2120,7 +2395,7 @@ snapshots:
array-iterate@2.0.1: {}
- astro@5.7.4(rollup@4.40.0)(sass@1.86.3)(typescript@5.8.3):
+ astro@5.7.4(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.40.0)(sass@1.86.3)(typescript@5.8.3):
dependencies:
'@astrojs/compiler': 2.11.0
'@astrojs/internal-helpers': 0.6.1
@@ -2173,8 +2448,8 @@ snapshots:
unist-util-visit: 5.0.0
unstorage: 1.15.0
vfile: 6.0.3
- vite: 6.3.2(sass@1.86.3)
- vitefu: 1.0.6(vite@6.3.2(sass@1.86.3))
+ vite: 6.3.2(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)
+ vitefu: 1.0.6(vite@6.3.2(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3))
xxhash-wasm: 1.1.0
yargs-parser: 21.1.1
yocto-spinner: 0.2.1
@@ -2336,8 +2611,7 @@ snapshots:
detect-libc@1.0.3:
optional: true
- detect-libc@2.0.3:
- optional: true
+ detect-libc@2.0.3: {}
deterministic-object-hash@2.0.2:
dependencies:
@@ -2381,6 +2655,11 @@ snapshots:
emoji-regex@8.0.0: {}
+ enhanced-resolve@5.18.1:
+ dependencies:
+ graceful-fs: 4.2.11
+ tapable: 2.2.1
+
entities@4.5.0: {}
es-module-lexer@1.6.0: {}
@@ -2463,6 +2742,8 @@ snapshots:
github-slugger@2.0.0: {}
+ graceful-fs@4.2.11: {}
+
h3@1.15.1:
dependencies:
cookie-es: 1.2.2
@@ -2612,6 +2893,8 @@ snapshots:
dependencies:
is-inside-container: 1.0.0
+ jiti@2.4.2: {}
+
js-yaml@4.1.0:
dependencies:
argparse: 2.0.1
@@ -2620,10 +2903,61 @@ snapshots:
kleur@4.1.5: {}
+ lightningcss-darwin-arm64@1.29.2:
+ optional: true
+
+ lightningcss-darwin-x64@1.29.2:
+ optional: true
+
+ lightningcss-freebsd-x64@1.29.2:
+ optional: true
+
+ lightningcss-linux-arm-gnueabihf@1.29.2:
+ optional: true
+
+ lightningcss-linux-arm64-gnu@1.29.2:
+ optional: true
+
+ lightningcss-linux-arm64-musl@1.29.2:
+ optional: true
+
+ lightningcss-linux-x64-gnu@1.29.2:
+ optional: true
+
+ lightningcss-linux-x64-musl@1.29.2:
+ optional: true
+
+ lightningcss-win32-arm64-msvc@1.29.2:
+ optional: true
+
+ lightningcss-win32-x64-msvc@1.29.2:
+ optional: true
+
+ lightningcss@1.29.2:
+ dependencies:
+ detect-libc: 2.0.3
+ optionalDependencies:
+ lightningcss-darwin-arm64: 1.29.2
+ lightningcss-darwin-x64: 1.29.2
+ lightningcss-freebsd-x64: 1.29.2
+ lightningcss-linux-arm-gnueabihf: 1.29.2
+ lightningcss-linux-arm64-gnu: 1.29.2
+ lightningcss-linux-arm64-musl: 1.29.2
+ lightningcss-linux-x64-gnu: 1.29.2
+ lightningcss-linux-x64-musl: 1.29.2
+ lightningcss-win32-arm64-msvc: 1.29.2
+ lightningcss-win32-x64-msvc: 1.29.2
+
linkify-it@5.0.0:
dependencies:
uc.micro: 2.1.0
+ lodash.castarray@4.4.0: {}
+
+ lodash.isplainobject@4.0.6: {}
+
+ lodash.merge@4.6.2: {}
+
longest-streak@3.1.0: {}
lru-cache@10.4.3: {}
@@ -3048,6 +3382,11 @@ snapshots:
picomatch@4.0.2: {}
+ postcss-selector-parser@6.0.10:
+ dependencies:
+ cssesc: 3.0.0
+ util-deprecate: 1.0.2
+
postcss@8.5.3:
dependencies:
nanoid: 3.3.11
@@ -3309,6 +3648,10 @@ snapshots:
dependencies:
ansi-regex: 6.1.0
+ tailwindcss@4.1.4: {}
+
+ tapable@2.2.1: {}
+
tiny-inflate@1.0.3: {}
tinyexec@0.3.2: {}
@@ -3425,6 +3768,8 @@ snapshots:
ofetch: 1.4.1
ufo: 1.6.1
+ util-deprecate@1.0.2: {}
+
vfile-location@5.0.3:
dependencies:
'@types/unist': 3.0.3
@@ -3440,7 +3785,7 @@ snapshots:
'@types/unist': 3.0.3
vfile-message: 4.0.2
- vite@6.3.2(sass@1.86.3):
+ vite@6.3.2(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3):
dependencies:
esbuild: 0.25.2
fdir: 6.4.3(picomatch@4.0.2)
@@ -3450,11 +3795,13 @@ snapshots:
tinyglobby: 0.2.12
optionalDependencies:
fsevents: 2.3.3
+ jiti: 2.4.2
+ lightningcss: 1.29.2
sass: 1.86.3
- vitefu@1.0.6(vite@6.3.2(sass@1.86.3)):
+ vitefu@1.0.6(vite@6.3.2(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)):
optionalDependencies:
- vite: 6.3.2(sass@1.86.3)
+ vite: 6.3.2(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)
web-namespaces@2.0.1: {}
diff --git a/src/components/BaseHead.astro b/src/components/BaseHead.astro
index 0cdc920..f38480b 100644
--- a/src/components/BaseHead.astro
+++ b/src/components/BaseHead.astro
@@ -4,6 +4,8 @@
import '../styles/global.css';
import { SITE_TITLE } from '../consts';
+import { ClientRouter } from "astro:transitions";
+
interface Props {
title: string;
description: string;
@@ -61,7 +63,8 @@ const { title, description, image } = Astro.props;
{ image && ( ) }
-
+
+