diff options
| author | Pinapelz <yukais@pinapelz.com> | 2026-06-14 23:01:14 -0700 |
|---|---|---|
| committer | Pinapelz <yukais@pinapelz.com> | 2026-06-14 23:01:14 -0700 |
| commit | 8cb5c1f9d544ff86c2c5f65cc0df477f4ac7ac00 (patch) | |
| tree | 84f1ddc98959ed7c1af882c429a6efb6c16a1f3e | |
| parent | 47ad1dc45350519e261842b861d9335bc8957972 (diff) | |
update site
| -rw-r--r-- | astro.config.mjs | 7 | ||||
| -rw-r--r-- | package.json | 4 | ||||
| -rw-r--r-- | pnpm-lock.yaml | 452 | ||||
| -rw-r--r-- | pnpm-workspace.yaml | 3 | ||||
| -rw-r--r-- | public/pfp.png | bin | 0 -> 293263 bytes | |||
| -rw-r--r-- | src/components/DiscordStatus.astro | 79 | ||||
| -rw-r--r-- | src/components/Header.astro | 2 | ||||
| -rw-r--r-- | src/layouts/Layout.astro | 1 | ||||
| -rw-r--r-- | src/pages/about.astro | 195 | ||||
| -rw-r--r-- | src/pages/index.astro | 231 | ||||
| -rw-r--r-- | src/styles/global.css | 1 | ||||
| -rw-r--r-- | tailwind.config.js | 8 |
12 files changed, 580 insertions, 403 deletions
diff --git a/astro.config.mjs b/astro.config.mjs index 461bd30..0fa79e5 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -1,8 +1,9 @@ import { defineConfig } from 'astro/config'; - -import tailwind from "@astrojs/tailwind"; +import tailwindcss from "@tailwindcss/vite"; // https://astro.build/config export default defineConfig({ - integrations: [tailwind()] + vite: { + plugins: [tailwindcss()], + }, });
\ No newline at end of file diff --git a/package.json b/package.json index 01726dc..626f43f 100644 --- a/package.json +++ b/package.json @@ -10,12 +10,12 @@ "astro": "astro" }, "dependencies": { - "@astrojs/tailwind": "^6.0.2", "@fortawesome/fontawesome-free": "^7.2.0", + "@tailwindcss/vite": "^4.0.0", "astro": "^6.3.7", "astro-single-file": "^1.1.0", "html-minifier-terser": "^7.2.0", "jsdom": "^29.1.1", - "tailwindcss": "^4.3.0" + "tailwindcss": "^4.0.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b20210d..56f05b8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,15 +8,15 @@ importers: .: dependencies: - '@astrojs/tailwind': - specifier: ^6.0.2 - version: 6.0.2(astro@6.3.7(@types/node@24.3.0)(jiti@1.21.7)(lightningcss@1.30.1)(rollup@4.60.4)(terser@5.48.0)(yaml@2.9.0))(tailwindcss@4.3.0) '@fortawesome/fontawesome-free': specifier: ^7.2.0 version: 7.2.0 + '@tailwindcss/vite': + specifier: ^4.0.0 + version: 4.3.1(vite@7.3.3(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(yaml@2.9.0)) astro: specifier: ^6.3.7 - version: 6.3.7(@types/node@24.3.0)(jiti@1.21.7)(lightningcss@1.30.1)(rollup@4.60.4)(terser@5.48.0)(yaml@2.9.0) + version: 6.3.7(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.60.4)(terser@5.48.0)(yaml@2.9.0) astro-single-file: specifier: ^1.1.0 version: 1.1.0 @@ -27,8 +27,8 @@ importers: specifier: ^29.1.1 version: 29.1.1 tailwindcss: - specifier: ^4.3.0 - version: 4.3.0 + specifier: ^4.0.0 + version: 4.3.1 packages: @@ -60,12 +60,6 @@ packages: resolution: {integrity: sha512-KTivpmnz6lDsC6o9H4+DNm2SrE/GHzw8cNAvEJwAvUT+eoaEnn/4NtbDNfRRaxaJHdp15gf+tfHAWiXR4wB3BA==} engines: {node: '>=22.12.0'} - '@astrojs/tailwind@6.0.2': - resolution: {integrity: sha512-j3mhLNeugZq6A8dMNXVarUa8K6X9AW+QHU9u3lKNrPLMHhOQ0S7VeWhHwEeJFpEK1BTKEUY1U78VQv2gN6hNGg==} - peerDependencies: - astro: ^3.0.0 || ^4.0.0 || ^5.0.0 - tailwindcss: ^3.0.24 - '@astrojs/telemetry@3.3.2': resolution: {integrity: sha512-j8DNruA8ors99Al39RYZPJK4DC1bKkoNm93mAMuBhY9TCNC4R8n1q7ovFnJ5qhGh5Lsh7pa1gpQVpYpsJPeTHQ==} engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} @@ -467,6 +461,9 @@ packages: '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} @@ -661,6 +658,100 @@ packages: '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + '@tailwindcss/node@4.3.1': + resolution: {integrity: sha512-6NDaqRoAMSXD1mr/RXu0HBvNE9a2n5tHPsxu9XHLws8o4Twes5rBM2205SUUiJ9goAtadrN6xTGX0UDEwp/N4A==} + + '@tailwindcss/oxide-android-arm64@4.3.1': + resolution: {integrity: sha512-SVlyf61g374l5cHyg8x9kf5xmLcOaxvOTsbsqDnSsDJaKOEFZ7GCvi84VAVGpxojYOs1+3K6M0UjXfqPU8vmOQ==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.3.1': + resolution: {integrity: sha512-hVnWLwv+e/l7c4WKyVtHVrIPvYdqWHjRB3MDIqARynzFtnQg85kmQEFCbV9Ja0VVx4xXTIiDWY60Y7iz/iNoDA==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.3.1': + resolution: {integrity: sha512-Cf7abu0WVgbhU7ANgPUnSAvm7nCvMweusHb8FnaHlLfv/Caq4GYaEZg7ZImzzmjx4lIAfuS8q+eLIS7A7IzxIg==} + engines: {node: '>= 20'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.3.1': + resolution: {integrity: sha512-ZZqzX2Y+GXtXXfqSfpJhDm60OoZfvLHLCgm+J7NVqgHHJjG/m9ugZI77RwTsVd4fnBJuCFP6Ae6kTJb71UdS8g==} + engines: {node: '>= 20'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.3.1': + resolution: {integrity: sha512-/Ah/xik0LaMYfv9DZ0S/t4pBlBNYOcqtRwusjgovHkvT8ixueWCLyJjsaF5kQIckjb4IT8Q6K6p/iPmZMixYgg==} + engines: {node: '>= 20'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.3.1': + resolution: {integrity: sha512-gqdFoVJlw444GvpnheZLHmvTzSxI/cOUUh2KSNejQjTcYkW062SVD+En0rUgD+QV91bz1XGIGtt1HJd48xUGbQ==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@tailwindcss/oxide-linux-arm64-musl@4.3.1': + resolution: {integrity: sha512-Bwv9KwOvE0VKa86xPFif9b9c3Y1NxOV1P0gLti/IYaWEsQYZXDlxfGEtA8mdDZ7SG3wyNXAWYT5SIn3giL57oA==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@tailwindcss/oxide-linux-x64-gnu@4.3.1': + resolution: {integrity: sha512-Ymi8O8T15HYQdOUWUtTI6ldN0neHP85FC+Qz32xTcZ7iJXtem/x8ITev0o1e9e5rkqj4lONZfTRLvkmin1+tKg==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@tailwindcss/oxide-linux-x64-musl@4.3.1': + resolution: {integrity: sha512-M+P/91qJ6uILLw4k2G93GMDRAXj61SMvFQYt39AqvUqYgExXpLL5aepfns7sj4HiAQeolirQF9E0lzRvdf4zPQ==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@tailwindcss/oxide-wasm32-wasi@4.3.1': + resolution: {integrity: sha512-zsM8uOeqvVGHsAXsJxsT28ttosFahLJKCLOTUBqRAtKnVgGSRitds9T432QiT8b77Yga7JIBkulIRRlJPtYhRA==} + 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.3.1': + resolution: {integrity: sha512-aiNvSq9BsVk8V513lDKlrCFAgf8qBMPZTpgEhInL+NwQqs97mYmupVMrPrgBBSL8Pv/0zXu9MrMF9rMun1ZeNg==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.3.1': + resolution: {integrity: sha512-xDEyu1rg290472FEGaKHnzyDyh5QH+AlWvsU5hMoMtPpzmKlRI0jaYKCgSHDYtaQWZOYbMaduSyCwFwY4n1HmA==} + engines: {node: '>= 20'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.3.1': + resolution: {integrity: sha512-yVPyo8RNkabVr3O2EhHEE0Rewu7YKzc1DhIqfL46LKveFrmu9XbDazNOJY7/GRuvw1h6u3utWnR29H/p5JPlgA==} + engines: {node: '>= 20'} + + '@tailwindcss/vite@4.3.1': + resolution: {integrity: sha512-hItDHuIIlEV61R+faXu66s1K36aTurO/Qw0e45Vskz57gXl9pWOT6eg3zmcEui6CZXddbN7zd41bwmvag4JGwQ==} + peerDependencies: + vite: ^5.2.0 || ^6 || ^7 || ^8 + '@types/debug@4.1.13': resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} @@ -718,13 +809,6 @@ packages: engines: {node: '>=22.12.0', npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true - autoprefixer@10.5.0: - resolution: {integrity: sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} @@ -732,31 +816,18 @@ packages: bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - baseline-browser-mapping@2.10.32: - resolution: {integrity: sha512-wbPvpyjJPC0zdfdKXxqEL3Ea+bOMD/87X4lftiJkkaBiuG6ALQy1SLmEd7BSmVCuwCQsBrCamgBoLyfFDD1EPg==} - engines: {node: '>=6.0.0'} - hasBin: true - bidi-js@1.0.3: resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - browserslist@4.28.2: - resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} camel-case@4.1.2: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} - caniuse-lite@1.0.30001793: - resolution: {integrity: sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==} - ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -895,8 +966,9 @@ packages: resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} engines: {node: '>=4'} - electron-to-chromium@1.5.361: - resolution: {integrity: sha512-Q6Hts7N9FnJc5LeGRINFvLhCI9xZmNtTDe5ZbcVezQz7cU4a8Aua3GH1b8J2XY8Al9PF+OCwYqhgsOOheMdvkA==} + enhanced-resolve@5.21.6: + resolution: {integrity: sha512-aNnGCvbJ/RIyWo1IuhNdVjnNF+EjH9wpzpNHt+ci/m9He9LJvUN8wrCcXjp9cWsGNAuvSpVFTx/vraAFQ8qGjQ==} + engines: {node: '>=10.13.0'} entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} @@ -918,10 +990,6 @@ packages: engines: {node: '>=18'} hasBin: true - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - escape-string-regexp@5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} @@ -964,9 +1032,6 @@ packages: resolution: {integrity: sha512-Wp1zXWPVUPBmfoa3Cqc9ctaKuzKAV6uLstRqlR56kSjplf5uAce+qeyYym7F+PHbGTk+tCEdkCW6RD7DX/gBZw==} engines: {node: '>=20'} - fraction.js@5.3.4: - resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} - fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -979,6 +1044,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.11: resolution: {integrity: sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg==} @@ -1059,8 +1127,8 @@ packages: resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} engines: {node: '>=16'} - jiti@1.21.7: - resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} + jiti@2.7.0: + resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} hasBin: true js-yaml@4.1.1: @@ -1079,78 +1147,80 @@ packages: jsonc-parser@3.3.1: resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} - lightningcss-darwin-arm64@1.30.1: - resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==} + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] - lightningcss-darwin-x64@1.30.1: - resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==} + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] - lightningcss-freebsd-x64@1.30.1: - resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==} + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] - lightningcss-linux-arm-gnueabihf@1.30.1: - resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==} + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] - lightningcss-linux-arm64-gnu@1.30.1: - resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==} + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] libc: [glibc] - lightningcss-linux-arm64-musl@1.30.1: - resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==} + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] libc: [musl] - lightningcss-linux-x64-gnu@1.30.1: - resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==} + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] libc: [glibc] - lightningcss-linux-x64-musl@1.30.1: - resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==} + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] libc: [musl] - lightningcss-win32-arm64-msvc@1.30.1: - resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==} + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] - lightningcss-win32-x64-msvc@1.30.1: - resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==} + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] - lightningcss@1.30.1: - resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==} + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} engines: {node: '>= 12.0.0'} - lilconfig@3.1.3: - resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} - engines: {node: '>=14'} - longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} @@ -1327,10 +1397,6 @@ packages: node-mock-http@1.0.4: resolution: {integrity: sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==} - node-releases@2.0.46: - resolution: {integrity: sha512-GYVXHE2KnrzAfsAjl4uP++evGFCrAU1jta4ubEjIG7YWt/64Gqv66a30yKwWczVjA6j3bM4nBwH7Pk1JmDHaxQ==} - engines: {node: '>=18'} - normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -1397,21 +1463,6 @@ packages: resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} - postcss-load-config@4.0.2: - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.5.15: resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} engines: {node: ^10 || ^12 || >=14} @@ -1552,9 +1603,12 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - tailwindcss@4.3.0: - resolution: {integrity: sha512-y6nxMGB1nMW9R6k96e5gdIFzcfL/gTJRNaqGes1YvkLnPVXzWgbqFF2yLC0T8G774n24cx3Pe8XrKoniCOAH+Q==} - hasBin: true + tailwindcss@4.3.1: + resolution: {integrity: sha512-hk+TB1m+K8CYNrP6rjQaq/Y+4Zylwpa87mLYBKCunwnnQ9p+fHb7kmSfGqyEJoxF/O6CDyABWVFEafNSYKll+Q==} + + tapable@2.3.3: + resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} + engines: {node: '>=6'} terser@5.48.0: resolution: {integrity: sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q==} @@ -1711,12 +1765,6 @@ packages: uploadthing: optional: true - update-browserslist-db@1.2.3: - resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - vfile-location@5.0.3: resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} @@ -1884,16 +1932,6 @@ snapshots: dependencies: prismjs: 1.30.0 - '@astrojs/tailwind@6.0.2(astro@6.3.7(@types/node@24.3.0)(jiti@1.21.7)(lightningcss@1.30.1)(rollup@4.60.4)(terser@5.48.0)(yaml@2.9.0))(tailwindcss@4.3.0)': - dependencies: - astro: 6.3.7(@types/node@24.3.0)(jiti@1.21.7)(lightningcss@1.30.1)(rollup@4.60.4)(terser@5.48.0)(yaml@2.9.0) - autoprefixer: 10.5.0(postcss@8.5.15) - postcss: 8.5.15 - postcss-load-config: 4.0.2(postcss@8.5.15) - tailwindcss: 4.3.0 - transitivePeerDependencies: - - ts-node - '@astrojs/telemetry@3.3.2': dependencies: ci-info: 4.4.0 @@ -2148,6 +2186,11 @@ snapshots: '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping': 0.3.31 + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/source-map@0.3.11': @@ -2287,6 +2330,74 @@ snapshots: '@shikijs/vscode-textmate@10.0.2': {} + '@tailwindcss/node@4.3.1': + dependencies: + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.21.6 + jiti: 2.7.0 + lightningcss: 1.32.0 + magic-string: 0.30.21 + source-map-js: 1.2.1 + tailwindcss: 4.3.1 + + '@tailwindcss/oxide-android-arm64@4.3.1': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.3.1': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.3.1': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.3.1': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.3.1': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.3.1': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.3.1': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.3.1': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.3.1': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.3.1': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.3.1': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.3.1': + optional: true + + '@tailwindcss/oxide@4.3.1': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.3.1 + '@tailwindcss/oxide-darwin-arm64': 4.3.1 + '@tailwindcss/oxide-darwin-x64': 4.3.1 + '@tailwindcss/oxide-freebsd-x64': 4.3.1 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.3.1 + '@tailwindcss/oxide-linux-arm64-gnu': 4.3.1 + '@tailwindcss/oxide-linux-arm64-musl': 4.3.1 + '@tailwindcss/oxide-linux-x64-gnu': 4.3.1 + '@tailwindcss/oxide-linux-x64-musl': 4.3.1 + '@tailwindcss/oxide-wasm32-wasi': 4.3.1 + '@tailwindcss/oxide-win32-arm64-msvc': 4.3.1 + '@tailwindcss/oxide-win32-x64-msvc': 4.3.1 + + '@tailwindcss/vite@4.3.1(vite@7.3.3(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(yaml@2.9.0))': + dependencies: + '@tailwindcss/node': 4.3.1 + '@tailwindcss/oxide': 4.3.1 + tailwindcss: 4.3.1 + vite: 7.3.3(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(yaml@2.9.0) + '@types/debug@4.1.13': dependencies: '@types/ms': 2.1.0 @@ -2333,7 +2444,7 @@ snapshots: astro-single-file@1.1.0: {} - astro@6.3.7(@types/node@24.3.0)(jiti@1.21.7)(lightningcss@1.30.1)(rollup@4.60.4)(terser@5.48.0)(yaml@2.9.0): + astro@6.3.7(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.60.4)(terser@5.48.0)(yaml@2.9.0): dependencies: '@astrojs/compiler': 4.0.0 '@astrojs/internal-helpers': 0.9.1 @@ -2385,8 +2496,8 @@ snapshots: unist-util-visit: 5.1.0 unstorage: 1.17.5 vfile: 6.0.3 - vite: 7.3.3(@types/node@24.3.0)(jiti@1.21.7)(lightningcss@1.30.1)(terser@5.48.0)(yaml@2.9.0) - vitefu: 1.1.3(vite@7.3.3(@types/node@24.3.0)(jiti@1.21.7)(lightningcss@1.30.1)(terser@5.48.0)(yaml@2.9.0)) + vite: 7.3.3(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(yaml@2.9.0) + vitefu: 1.1.3(vite@7.3.3(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(yaml@2.9.0)) xxhash-wasm: 1.1.0 yargs-parser: 22.0.0 zod: 4.4.3 @@ -2426,35 +2537,16 @@ snapshots: - uploadthing - yaml - autoprefixer@10.5.0(postcss@8.5.15): - dependencies: - browserslist: 4.28.2 - caniuse-lite: 1.0.30001793 - fraction.js: 5.3.4 - picocolors: 1.1.1 - postcss: 8.5.15 - postcss-value-parser: 4.2.0 - axobject-query@4.1.0: {} bail@2.0.2: {} - baseline-browser-mapping@2.10.32: {} - bidi-js@1.0.3: dependencies: require-from-string: 2.0.2 boolbase@1.0.0: {} - browserslist@4.28.2: - dependencies: - baseline-browser-mapping: 2.10.32 - caniuse-lite: 1.0.30001793 - electron-to-chromium: 1.5.361 - node-releases: 2.0.46 - update-browserslist-db: 1.2.3(browserslist@4.28.2) - buffer-from@1.1.2: {} camel-case@4.1.2: @@ -2462,8 +2554,6 @@ snapshots: pascal-case: 3.1.2 tslib: 2.8.1 - caniuse-lite@1.0.30001793: {} - ccount@2.0.1: {} character-entities-html4@2.1.0: {} @@ -2549,8 +2639,7 @@ snapshots: destr@2.0.5: {} - detect-libc@2.1.2: - optional: true + detect-libc@2.1.2: {} devalue@5.8.1: {} @@ -2585,7 +2674,10 @@ snapshots: dset@3.1.4: {} - electron-to-chromium@1.5.361: {} + enhanced-resolve@5.21.6: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.3 entities@4.5.0: {} @@ -2624,8 +2716,6 @@ snapshots: '@esbuild/win32-ia32': 0.27.7 '@esbuild/win32-x64': 0.27.7 - escalade@3.2.0: {} - escape-string-regexp@5.0.0: {} estree-walker@2.0.2: {} @@ -2658,8 +2748,6 @@ snapshots: dependencies: tiny-inflate: 1.0.3 - fraction.js@5.3.4: {} - fsevents@2.3.3: optional: true @@ -2669,6 +2757,8 @@ snapshots: github-slugger@2.0.0: {} + graceful-fs@4.2.11: {} + h3@1.15.11: dependencies: cookie-es: 1.2.3 @@ -2808,8 +2898,7 @@ snapshots: dependencies: is-inside-container: 1.0.0 - jiti@1.21.7: - optional: true + jiti@2.7.0: {} js-yaml@4.1.1: dependencies: @@ -2843,53 +2932,54 @@ snapshots: jsonc-parser@3.3.1: {} - lightningcss-darwin-arm64@1.30.1: + lightningcss-android-arm64@1.32.0: optional: true - lightningcss-darwin-x64@1.30.1: + lightningcss-darwin-arm64@1.32.0: optional: true - lightningcss-freebsd-x64@1.30.1: + lightningcss-darwin-x64@1.32.0: optional: true - lightningcss-linux-arm-gnueabihf@1.30.1: + lightningcss-freebsd-x64@1.32.0: optional: true - lightningcss-linux-arm64-gnu@1.30.1: + lightningcss-linux-arm-gnueabihf@1.32.0: optional: true - lightningcss-linux-arm64-musl@1.30.1: + lightningcss-linux-arm64-gnu@1.32.0: optional: true - lightningcss-linux-x64-gnu@1.30.1: + lightningcss-linux-arm64-musl@1.32.0: optional: true - lightningcss-linux-x64-musl@1.30.1: + lightningcss-linux-x64-gnu@1.32.0: optional: true - lightningcss-win32-arm64-msvc@1.30.1: + lightningcss-linux-x64-musl@1.32.0: optional: true - lightningcss-win32-x64-msvc@1.30.1: + lightningcss-win32-arm64-msvc@1.32.0: optional: true - lightningcss@1.30.1: + lightningcss-win32-x64-msvc@1.32.0: + optional: true + + lightningcss@1.32.0: dependencies: detect-libc: 2.1.2 optionalDependencies: - lightningcss-darwin-arm64: 1.30.1 - lightningcss-darwin-x64: 1.30.1 - lightningcss-freebsd-x64: 1.30.1 - lightningcss-linux-arm-gnueabihf: 1.30.1 - lightningcss-linux-arm64-gnu: 1.30.1 - lightningcss-linux-arm64-musl: 1.30.1 - lightningcss-linux-x64-gnu: 1.30.1 - lightningcss-linux-x64-musl: 1.30.1 - lightningcss-win32-arm64-msvc: 1.30.1 - lightningcss-win32-x64-msvc: 1.30.1 - optional: true - - lilconfig@3.1.3: {} + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 longest-streak@3.1.0: {} @@ -3247,8 +3337,6 @@ snapshots: node-mock-http@1.0.4: {} - node-releases@2.0.46: {} - normalize-path@3.0.0: {} nth-check@2.1.1: @@ -3321,15 +3409,6 @@ snapshots: picomatch@4.0.4: {} - postcss-load-config@4.0.2(postcss@8.5.15): - dependencies: - lilconfig: 3.1.3 - yaml: 2.9.0 - optionalDependencies: - postcss: 8.5.15 - - postcss-value-parser@4.2.0: {} - postcss@8.5.15: dependencies: nanoid: 3.3.12 @@ -3567,7 +3646,9 @@ snapshots: symbol-tree@3.2.4: {} - tailwindcss@4.3.0: {} + tailwindcss@4.3.1: {} + + tapable@2.3.3: {} terser@5.48.0: dependencies: @@ -3687,12 +3768,6 @@ snapshots: ofetch: 1.5.1 ufo: 1.6.4 - update-browserslist-db@1.2.3(browserslist@4.28.2): - dependencies: - browserslist: 4.28.2 - escalade: 3.2.0 - picocolors: 1.1.1 - vfile-location@5.0.3: dependencies: '@types/unist': 3.0.3 @@ -3708,7 +3783,7 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite@7.3.3(@types/node@24.3.0)(jiti@1.21.7)(lightningcss@1.30.1)(terser@5.48.0)(yaml@2.9.0): + vite@7.3.3(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(yaml@2.9.0): dependencies: esbuild: 0.27.7 fdir: 6.5.0(picomatch@4.0.4) @@ -3719,14 +3794,14 @@ snapshots: optionalDependencies: '@types/node': 24.3.0 fsevents: 2.3.3 - jiti: 1.21.7 - lightningcss: 1.30.1 + jiti: 2.7.0 + lightningcss: 1.32.0 terser: 5.48.0 yaml: 2.9.0 - vitefu@1.1.3(vite@7.3.3(@types/node@24.3.0)(jiti@1.21.7)(lightningcss@1.30.1)(terser@5.48.0)(yaml@2.9.0)): + vitefu@1.1.3(vite@7.3.3(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(yaml@2.9.0)): optionalDependencies: - vite: 7.3.3(@types/node@24.3.0)(jiti@1.21.7)(lightningcss@1.30.1)(terser@5.48.0)(yaml@2.9.0) + vite: 7.3.3(@types/node@24.3.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(yaml@2.9.0) w3c-xmlserializer@5.0.0: dependencies: @@ -3754,7 +3829,8 @@ snapshots: xxhash-wasm@1.1.0: {} - yaml@2.9.0: {} + yaml@2.9.0: + optional: true yargs-parser@22.0.0: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index c564c89..83c78e9 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,3 +1,6 @@ +allowBuilds: + esbuild: true + sharp: true ignoredBuiltDependencies: - esbuild - sharp diff --git a/public/pfp.png b/public/pfp.png Binary files differnew file mode 100644 index 0000000..55db960 --- /dev/null +++ b/public/pfp.png diff --git a/src/components/DiscordStatus.astro b/src/components/DiscordStatus.astro deleted file mode 100644 index 46bebf9..0000000 --- a/src/components/DiscordStatus.astro +++ /dev/null @@ -1,79 +0,0 @@ ---- -const statusColors = { - online: "#43b581", - idle: "#faa61a", - dnd: "#f04747", - offline: "#747f8d", -}; - -const statusText = { - online: "Online", - idle: "Idle", - dnd: "Do Not Disturb", - offline: "Offline", -} - ---- -<section id="discord-status"> - <img src="https://assets-global.website-files.com/6257adef93867e50d84d30e2/636e0a6ca814282eca7172c6_icon_clyde_white_RGB.svg" alt="Discord Avatar" /> - <h2><span id="status-text"></span></h2> -</section> - -<style> - #discord-status { - display: flex; - align-items: center; - padding: 15px; - border-radius: 10px; - color: white; - transition: background-color 0.3s ease-in-out; - } - - #discord-status img { - width: 30px; - height: 30px; - border-radius: 50%; - margin-right: 20px; - } - - #discord-status h2 { - font-size: 1.2rem; - } - - #discord-status p { - font-size: 1rem; - opacity: 0.8; - } -</style> - -<script> - const API_URL = "https://api.lanyard.rest/v1/users/246787839570739211"; - - fetch(API_URL) - .then(response => response.json()) - .then(data => { - const discordUser = data.data.discord_user; - const discordStatus = data.data.discord_status; - - const statusColors = { - online: "#43b581", - idle: "#faa61a", - dnd: "#f04747", - offline: "#747f8d", - }; - - const statusText = { - online: "Online", - idle: "Idle", - dnd: "Do Not Disturb", - offline: "Offline", - }; - - const statusSection = document.getElementById("discord-status"); - const statusTextElement = document.getElementById("status-text"); - - statusSection.style.backgroundColor = statusColors[discordStatus]; - statusTextElement.textContent = statusText[discordStatus]; - }) - .catch(error => console.error(error)); -</script>
\ No newline at end of file diff --git a/src/components/Header.astro b/src/components/Header.astro index dac9a78..9089797 100644 --- a/src/components/Header.astro +++ b/src/components/Header.astro @@ -9,7 +9,7 @@ </nav> <img id="profilePic" - src="https://files.pinapelz.com/21994085.png" + src="/pfp.png" alt="Profile Picture" /> </header> diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index 8d6bb61..59126b3 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -5,6 +5,7 @@ interface Props { const { title } = Astro.props; import Header from "../components/Header.astro"; +import "../styles/global.css"; --- <!doctype html> diff --git a/src/pages/about.astro b/src/pages/about.astro index 2a2b720..da121e5 100644 --- a/src/pages/about.astro +++ b/src/pages/about.astro @@ -1,6 +1,5 @@ --- import Layout from "../layouts/Layout.astro"; -import DiscordStatus from "../components/DiscordStatus.astro"; --- <Layout title="About"> @@ -33,13 +32,10 @@ import DiscordStatus from "../components/DiscordStatus.astro"; > Contact Me </a> - <a href="https://discord.com/users/246787839570739211"> - <DiscordStatus /> - </a> </div> </div> <img - src="https://files.pinapelz.com/21994085.png" + src="/pfp.png" width="400" height="400" alt="pinapelz profile pic" @@ -196,7 +192,7 @@ import DiscordStatus from "../components/DiscordStatus.astro"; </div> </div> - <p class="text-gray-400 text-xl font-bold mt-24"> + <p class="text-gray-400 text-xl font-bold"> Front End Technologies: </p> @@ -303,7 +299,7 @@ import DiscordStatus from "../components/DiscordStatus.astro"; </svg> </div> - <p class="text-gray-400 text-xl font-bold mt-24">Dev Ops:</p> + <p class="text-gray-400 text-xl font-bold">Dev Ops:</p> <div class="svg-container"> <svg @@ -347,6 +343,63 @@ import DiscordStatus from "../components/DiscordStatus.astro"; </div> </div> </div> + <div class="container px-4 md:px-6 mx-auto mt-16"> + <section class="interests-panel" aria-labelledby="interests-heading"> + <div class="interests-intro"> + <p class="eyebrow">More About Me</p> + <h2 id="interests-heading">Personal Interests</h2> + <p> + I enjoy exploring ideas that blend technical curiosity with creative + problem-solving. Most of the projects I build start from my own hobbies + and interests turning "what if" + ideas into software that I genuinely find useful. So here's a glance at + my personal hobbies/interests. + </p> + </div> + + <div class="interests-grid"> + <article class="interest-card"> + <span class="interest-number">01</span> + <h3>Self-Hosting</h3> + <p> + I'm interested in software that gives people ownership over their data and + communities. From running personal services to exploring decentralized + platforms like Matrix, I enjoy learning how independent systems work. + </p> + </article> + + <article class="interest-card"> + <span class="interest-number">02</span> + <h3>Linux</h3> + <p> + Arch Linux has been my daily driver for years. I enjoy customizing my + environment, understanding how systems work under the hood, and exploring + the open-source ecosystem. + </p> + </article> + + <article class="interest-card"> + <span class="interest-number">03</span> + <h3>Gaming</h3> + <p> + MMOs (FFXIV), visual novels (AI: The Sommnium Files), and JRPGs (Persona) are some of my favorite genres. I'm drawn to + games with rich worlds and systems that encourage + long-term progression and discovery. I also particularly enjoy rhythm games, ones that are entirely skill based (SDVX). + </p> + </article> + + <article class="interest-card"> + <span class="interest-number">04</span> + <h3>Anime & K-Pop</h3> + <p> + I've always enjoyed being part of online fandom communities. Following new + releases, discussions, and fan-created content has inspired several ideas + for projects and community-focused tools. (NMIXX, Slice of Life Anime) + </p> + </article> + </div> + </section> + </div> </section> <style> .svg-container { @@ -359,5 +412,133 @@ import DiscordStatus from "../components/DiscordStatus.astro"; width: 75px; height: 75px; } + + .interests-panel { + position: relative; + overflow: hidden; + border: 1px solid rgba(255, 255, 255, 0.12); + border-radius: 2rem; + padding: clamp(1.5rem, 4vw, 3rem); + background: + radial-gradient(circle at top left, rgba(204, 102, 102, 0.35), transparent 34rem), + linear-gradient(135deg, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.03)); + box-shadow: 0 24px 80px rgba(0, 0, 0, 0.28); + } + + .interests-panel::before { + content: ""; + position: absolute; + inset: 1rem; + pointer-events: none; + border: 1px dashed rgba(255, 255, 255, 0.14); + border-radius: 1.5rem; + } + + .interests-intro { + position: relative; + max-width: 680px; + margin-bottom: 2rem; + color: white; + } + + .interests-intro .eyebrow { + width: fit-content; + margin-bottom: 0.75rem; + border-radius: 999px; + background: rgba(204, 102, 102, 0.16); + padding: 0.35rem 0.85rem; + color: #ffb3b3; + font-size: 0.78rem; + font-weight: 700; + letter-spacing: 0.16em; + text-transform: uppercase; + } + + .interests-intro h2 { + font-size: clamp(2.25rem, 6vw, 4.75rem); + font-weight: 800; + line-height: 0.95; + letter-spacing: -0.06em; + } + + .interests-intro p:not(.eyebrow) { + margin-top: 1rem; + color: rgba(255, 255, 255, 0.72); + font-size: 1.05rem; + line-height: 1.8; + } + + .interests-grid { + position: relative; + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 1rem; + } + + .interest-card { + min-height: 230px; + border-radius: 1.35rem; + border: 1px solid rgba(255, 255, 255, 0.1); + background: rgba(19, 21, 26, 0.78); + padding: 1.25rem; + color: white; + transition: + transform 180ms ease, + border-color 180ms ease, + background 180ms ease; + } + + .interest-card:nth-child(even) { + transform: translateY(1.25rem); + } + + .interest-card:hover { + transform: translateY(-0.35rem); + border-color: rgba(255, 179, 179, 0.42); + background: rgba(35, 24, 29, 0.9); + } + + .interest-card:nth-child(even):hover { + transform: translateY(0.85rem); + } + + .interest-number { + display: inline-flex; + margin-bottom: 3.5rem; + color: #cc6666; + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + font-size: 0.9rem; + font-weight: 800; + } + + .interest-card h3 { + margin-bottom: 0.65rem; + font-size: 1.25rem; + font-weight: 800; + letter-spacing: -0.03em; + } + + .interest-card p { + color: rgba(255, 255, 255, 0.64); + font-size: 0.95rem; + line-height: 1.7; + } + + @media (max-width: 1024px) { + .interests-grid { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + } + + @media (max-width: 640px) { + .interests-grid { + grid-template-columns: 1fr; + } + + .interest-card:nth-child(even), + .interest-card:nth-child(even):hover { + transform: none; + } + } </style> </Layout> diff --git a/src/pages/index.astro b/src/pages/index.astro index dea00f2..68d8a2c 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -1,137 +1,138 @@ --- import Layout from "../layouts/Layout.astro"; -import SocialNavbar from '../components/SocialNavbar.astro'; +import SocialNavbar from "../components/SocialNavbar.astro"; import ShapesBackground from "../components/ShapesBackground.astro"; --- <Layout title="Pinapelz"> - <div class="center-wrapper"> - <main> - <h1 class="welcome-message"> - <span class="welcome-text-gradient">Welcome</span> 👋 - </h1> - <p class="introduction"> - I'm <span class="text-gradient">Yukai Shan</span>, a Software Engineering - student at UC Irvine - </p> - <p class="introduction"> - Sometimes I make cool things. Feel free to go and check them out! - </p> - <SocialNavbar/> - </main> - </div> - <ShapesBackground/> - <script> + <div class="center-wrapper"> + <main> + <h1 class="welcome-message"> + <span class="welcome-text-gradient">Welcome</span> 👋 + </h1> + <p class="introduction"> + I'm <span class="text-gradient">Pinapelz</span>, a Software + Engineering graduate passionate about open-source software and + building fun and interesting things. + </p> + <p class="introduction">Some of them even work.</p> + </main> + <SocialNavbar /> + </div> +</Layout> +<ShapesBackground /> +<script> const welcomeMessages = [ - 'print("Hello World")', - "Hello there", - "Bonjour", - "こにちは", - "你好", - "Ahoy!", + 'print("Hello World")', + "Hello there", + "Bonjour", + "こにちは", + "你好", + "Ahoy!", ]; let currentIndex = 0; const h1 = document.querySelector( - "h1.welcome-message span.welcome-text-gradient" + "h1.welcome-message span.welcome-text-gradient", ); function typeMessage(message) { - let i = 0; - h1.textContent = ""; - const interval = setInterval(() => { - if (i < message.length) { - h1.textContent += message[i]; - i++; - } else { - clearInterval(interval); - currentIndex = (currentIndex + 1) % welcomeMessages.length; - setTimeout(() => { - h1.classList.add("slide-out"); - setTimeout(() => { - typeMessage(welcomeMessages[currentIndex]); - h1.classList.remove("slide-out"); - }, 1000); - }, 3000); - } - }, 100); + let i = 0; + h1.textContent = ""; + const interval = setInterval(() => { + if (i < message.length) { + h1.textContent += message[i]; + i++; + } else { + clearInterval(interval); + currentIndex = (currentIndex + 1) % welcomeMessages.length; + setTimeout(() => { + h1.classList.add("slide-out"); + setTimeout(() => { + typeMessage(welcomeMessages[currentIndex]); + h1.classList.remove("slide-out"); + }, 1000); + }, 3000); + } + }, 100); } typeMessage(welcomeMessages[currentIndex]); - </script> -</Layout> +</script> + <style> - @import url("https://fonts.googleapis.com/css?family=Noto:400,700"); + @import url("https://fonts.googleapis.com/css?family=Noto:400,700"); - * { - margin: 0px; - padding: 0px; - } + * { + margin: 0px; + padding: 0px; + } - body { - font-family: "Noto", sans-serif; - height: 100%; - } - main { - margin: auto; - padding: 1rem; - width: 800px; - max-width: calc(100% - 2rem); - color: white; - font-size: 20px; - line-height: 1.6; - } - .astro-a { - position: absolute; - top: -32px; - left: 50%; - transform: translatex(-50%); - width: 220px; - height: auto; - z-index: -1; - } - h1 { - font-size: 3.5rem; - font-weight: 700; - line-height: 1; - text-align: center; - margin-bottom: 1em; - transition: transform 0.3s ease-in-out; - } + body { + font-family: "Noto", sans-serif; + height: 100%; + } + main { + margin: 0 auto; + padding: 1rem; + width: 800px; + max-width: calc(100% - 2rem); + color: white; + font-size: 20px; + line-height: 1.6; + } + .astro-a { + position: absolute; + top: -32px; + left: 50%; + transform: translatex(-50%); + width: 220px; + height: auto; + z-index: -1; + } + h1 { + font-size: 3.5rem; + font-weight: 700; + line-height: 1; + text-align: center; + margin-bottom: 1em; + transition: transform 0.3s ease-in-out; + } - h1:hover { - transform: scale(1.1); - } - .welcome-text-gradient { - background-image: var(--accent-gradient-purp); - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - background-size: 400%; - background-position: 0%; - transition: background-position 0.3s ease-in-out; - } - .text-gradient { - background-image: var(--accent-gradient); - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - background-size: 400%; - background-position: 0%; - transition: background-position 0.3s ease-in-out; - } - .slide-out { - transform: translateX(-100%); - transition: transform 0.5s ease-in-out; - } - .introduction { - font-size: 1.5rem; - text-align: center; - color: #ffffffbd; - } + h1:hover { + transform: scale(1.1); + } + .welcome-text-gradient { + background-image: var(--accent-gradient-purp); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-size: 400%; + background-position: 0%; + transition: background-position 0.3s ease-in-out; + } + .text-gradient { + background-image: var(--accent-gradient); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-size: 400%; + background-position: 0%; + transition: background-position 0.3s ease-in-out; + } + .slide-out { + transform: translateX(-100%); + transition: transform 0.5s ease-in-out; + } + .introduction { + font-size: 1.5rem; + text-align: center; + color: #ffffffbd; + } - .center-wrapper { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - height: 90vh; - } + .center-wrapper { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + gap: 0.75rem; + min-height: 90vh; + } </style> diff --git a/src/styles/global.css b/src/styles/global.css new file mode 100644 index 0000000..f1d8c73 --- /dev/null +++ b/src/styles/global.css @@ -0,0 +1 @@ +@import "tailwindcss"; diff --git a/tailwind.config.js b/tailwind.config.js deleted file mode 100644 index b15a05a..0000000 --- a/tailwind.config.js +++ /dev/null @@ -1,8 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -export default { - content: ['./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}'], - theme: { - extend: {}, - }, - plugins: [], -}
\ No newline at end of file |
