Compare commits
15 Commits
68563a55a7
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 4c4421c8a8 | |||
| d0ff16c8dc | |||
| 9678b3c718 | |||
| 7fafa5c4cf | |||
| a909743feb | |||
|
f116173cb8
|
|||
| ce62de8883 | |||
|
94f2779463
|
|||
| ed3cf80921 | |||
|
63aa6bfdbc
|
|||
| 4343124c3f | |||
|
a48063a694
|
|||
| e476efb96b | |||
| a99201138e | |||
|
9ef86e71dc
|
@@ -1,5 +1,5 @@
|
|||||||
ARG REGISTRY=docker.io
|
ARG REGISTRY=docker.io
|
||||||
FROM ${REGISTRY}/node:24.13.0-alpine3.22 AS base
|
FROM ${REGISTRY}/node:24.13.0-alpine AS base
|
||||||
|
|
||||||
ENV PNPM_HOME="/pnpm"
|
ENV PNPM_HOME="/pnpm"
|
||||||
ENV PATH="$PNPM_HOME:$PATH"
|
ENV PATH="$PNPM_HOME:$PATH"
|
||||||
@@ -29,7 +29,7 @@ ENV SITE_URL=https://www.alexlebens.dev
|
|||||||
ENV DIRECTUS_URL=https://directus.alexlebens.dev
|
ENV DIRECTUS_URL=https://directus.alexlebens.dev
|
||||||
ENV PORT=4321
|
ENV PORT=4321
|
||||||
|
|
||||||
LABEL version="2.3.2"
|
LABEL version="2.4.0"
|
||||||
LABEL description="Astro based personal website"
|
LABEL description="Astro based personal website"
|
||||||
|
|
||||||
EXPOSE $PORT
|
EXPOSE $PORT
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ For detailed help with Astro CLI commands, visit [Astro's documentation](https:/
|
|||||||
|
|
||||||
## Thanks
|
## Thanks
|
||||||
|
|
||||||
Thanks https://github.com/mearashadowfax/ScrewFast, https://github.com/godruoyi/gblog/tree/gblog-template
|
Thanks https://github.com/godruoyi/gblog/tree/gblog-template, https://github.com/mearashadowfax/ScrewFast,
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "site-profile",
|
"name": "site-profile",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"version": "2.3.2",
|
"version": "2.4.0",
|
||||||
"homepage": "https://www.alexlebens.dev",
|
"homepage": "https://www.alexlebens.dev",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://gitea.alexlebens.dev/alexlebens/site-profile/issues",
|
"url": "https://gitea.alexlebens.dev/alexlebens/site-profile/issues",
|
||||||
|
|||||||
202
pnpm-lock.yaml
generated
202
pnpm-lock.yaml
generated
@@ -40,7 +40,7 @@ importers:
|
|||||||
version: 1.2.15
|
version: 1.2.15
|
||||||
'@iconify-json/simple-icons':
|
'@iconify-json/simple-icons':
|
||||||
specifier: ^1.2.69
|
specifier: ^1.2.69
|
||||||
version: 1.2.69
|
version: 1.2.70
|
||||||
'@playform/compress':
|
'@playform/compress':
|
||||||
specifier: ^0.2.1
|
specifier: ^0.2.1
|
||||||
version: 0.2.1(@types/node@25.2.0)(jiti@2.6.1)(rollup@2.79.2)(typescript@5.9.3)(yaml@2.8.2)
|
version: 0.2.1(@types/node@25.2.0)(jiti@2.6.1)(rollup@2.79.2)(typescript@5.9.3)(yaml@2.8.2)
|
||||||
@@ -110,7 +110,7 @@ importers:
|
|||||||
devDependencies:
|
devDependencies:
|
||||||
'@eslint-react/eslint-plugin':
|
'@eslint-react/eslint-plugin':
|
||||||
specifier: ^2.9.4
|
specifier: ^2.9.4
|
||||||
version: 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
version: 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@tailwindcss/forms':
|
'@tailwindcss/forms':
|
||||||
specifier: ^0.5.11
|
specifier: ^0.5.11
|
||||||
version: 0.5.11(tailwindcss@4.1.18)
|
version: 0.5.11(tailwindcss@4.1.18)
|
||||||
@@ -128,7 +128,7 @@ importers:
|
|||||||
version: 1.5.0(eslint@10.0.0(jiti@2.6.1))
|
version: 1.5.0(eslint@10.0.0(jiti@2.6.1))
|
||||||
eslint-plugin-format:
|
eslint-plugin-format:
|
||||||
specifier: ^1.3.1
|
specifier: ^1.3.1
|
||||||
version: 1.3.1(eslint@10.0.0(jiti@2.6.1))
|
version: 1.4.0(eslint@10.0.0(jiti@2.6.1))
|
||||||
eslint-plugin-react:
|
eslint-plugin-react:
|
||||||
specifier: ^7.37.5
|
specifier: ^7.37.5
|
||||||
version: 7.37.5(eslint@10.0.0(jiti@2.6.1))
|
version: 7.37.5(eslint@10.0.0(jiti@2.6.1))
|
||||||
@@ -1012,43 +1012,43 @@ packages:
|
|||||||
resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==}
|
resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==}
|
||||||
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
|
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
|
||||||
|
|
||||||
'@eslint-react/ast@2.11.0':
|
'@eslint-react/ast@2.12.2':
|
||||||
resolution: {integrity: sha512-DuX/NO6o/hJIWzhaoimtRP5u4/A+DHTz0bBwsCx3N7gGNct4UDHGt5lG1UCZqHM091SvEptbFmWsQEHZEoL7eg==}
|
resolution: {integrity: sha512-OMpEIJguhDOaMDr6U4/qmoSQCjNcqCteiv4okA6a0p5ACX9s1uulmK2tcm7sep4RR+nPYkZUag3sXOi3R0oFmw==}
|
||||||
engines: {node: '>=20.19.0'}
|
engines: {node: '>=20.19.0'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
|
||||||
typescript: '>=4.8.4 <6.0.0'
|
typescript: '>=4.8.4 <6.0.0'
|
||||||
|
|
||||||
'@eslint-react/core@2.11.0':
|
'@eslint-react/core@2.12.2':
|
||||||
resolution: {integrity: sha512-7Gv9yhfePucqzTEe2EhrN+gF8NEdGT4Y/U+fKhCoGaClLZMHS4jHYg+sP5IcqGNcpvxNittC8ckoCDJ3mHR8ug==}
|
resolution: {integrity: sha512-lS2a1I3G7JXjFfdlOWXJoid8kPstcgMyL3rVQFcZVJF569JwF/VRZ7DDdH7JKrnFPAu1CtkLl8Acqy6Q8+mbdA==}
|
||||||
engines: {node: '>=20.19.0'}
|
engines: {node: '>=20.19.0'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
|
||||||
typescript: '>=4.8.4 <6.0.0'
|
typescript: '>=4.8.4 <6.0.0'
|
||||||
|
|
||||||
'@eslint-react/eff@2.11.0':
|
'@eslint-react/eff@2.12.2':
|
||||||
resolution: {integrity: sha512-0aY73uncaEBulziyLYtui95duvjxaNIrIh/6TFgY14kRcacb36Sxu0zDReQHWhrlnI/H6nFNGAdUJN/1GbERuw==}
|
resolution: {integrity: sha512-UWN/mtvu8gPVwZzg77h3zV0GEnKHjN/2yAI++UGGlVQ9x6en4/LFbn/9J2aM61lwyU4CvPUKpQ1KcYTTwJeJ0A==}
|
||||||
engines: {node: '>=20.19.0'}
|
engines: {node: '>=20.19.0'}
|
||||||
|
|
||||||
'@eslint-react/eslint-plugin@2.11.0':
|
'@eslint-react/eslint-plugin@2.12.2':
|
||||||
resolution: {integrity: sha512-zmo84rwDs+ZUSO7eQeK2A8FE5Rz9gKwv4K7QGwmGNPbGp6Rz9ZZd81v6dDbWt7AeSGTWH+YE3O16NG1p/9uX5w==}
|
resolution: {integrity: sha512-7P2cGKwfTABeBnTac6PpLupE30+TmEbF3jTnGaziMwCzpPS1WAJtyvZw27RDSzb7pfx6GjTNBBHGg3dwfK+nhg==}
|
||||||
engines: {node: '>=20.19.0'}
|
engines: {node: '>=20.19.0'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
|
||||||
typescript: '>=4.8.4 <6.0.0'
|
typescript: '>=4.8.4 <6.0.0'
|
||||||
|
|
||||||
'@eslint-react/shared@2.11.0':
|
'@eslint-react/shared@2.12.2':
|
||||||
resolution: {integrity: sha512-tqk3mEbi0/BYKjAOexFgF0Eg1zDwKO56cHHmrMhpb56Ka3qvzLKUUmGiNfHSAl1FQNRaKSktxf8kKm7Tp9Zvlg==}
|
resolution: {integrity: sha512-/40s8neS142nMN9l7SDzwncqh/PNSzeYJ0Gc3h/eacQcUrjLx1NWWvPs1CNA3EbtqJRCvS2gflvzkzM2w6HURA==}
|
||||||
engines: {node: '>=20.19.0'}
|
engines: {node: '>=20.19.0'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
|
||||||
typescript: '>=4.8.4 <6.0.0'
|
typescript: '>=4.8.4 <6.0.0'
|
||||||
|
|
||||||
'@eslint-react/var@2.11.0':
|
'@eslint-react/var@2.12.2':
|
||||||
resolution: {integrity: sha512-YlvGQZHUPoJjMlL7U+SCUIJV2JcryjMsNKorhTFGFOLsjKa3hpCIkKnoDxIodUAeLvZJWkKloIBINvE9SRyvsg==}
|
resolution: {integrity: sha512-d+s6G1HAghVA25io3Vtj8237mQZUGozH+3UwEboNl+8XE3oTJMYv0T3X9U96GbxrV2S1BPFSYQEMwl6Z0RYgmA==}
|
||||||
engines: {node: '>=20.19.0'}
|
engines: {node: '>=20.19.0'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
|
||||||
typescript: '>=4.8.4 <6.0.0'
|
typescript: '>=4.8.4 <6.0.0'
|
||||||
|
|
||||||
'@eslint/config-array@0.23.1':
|
'@eslint/config-array@0.23.1':
|
||||||
@@ -1108,8 +1108,8 @@ packages:
|
|||||||
'@iconify-json/pajamas@1.2.15':
|
'@iconify-json/pajamas@1.2.15':
|
||||||
resolution: {integrity: sha512-utUwcOZLNQQEmyY38lBw2VzAKIHg6sI+PuY42o73P67iEou2eafuZ4UQxHvRdcqf8h7sPm0JlsX2cWm/JkT06Q==}
|
resolution: {integrity: sha512-utUwcOZLNQQEmyY38lBw2VzAKIHg6sI+PuY42o73P67iEou2eafuZ4UQxHvRdcqf8h7sPm0JlsX2cWm/JkT06Q==}
|
||||||
|
|
||||||
'@iconify-json/simple-icons@1.2.69':
|
'@iconify-json/simple-icons@1.2.70':
|
||||||
resolution: {integrity: sha512-T/rhy5n7pzE0ZOxQVlF68SNPCYYjRBpddjgjrJO5WWVRG8es5BQmvxIE9kKF+t2hhPGvuGQFpXmUyqbOtnxirQ==}
|
resolution: {integrity: sha512-CYNRCgN6nBTjN4dNkrBCjHXNR2e4hQihdsZUs/afUNFOWLSYjfihca4EFN05rRvDk4Xoy2n8tym6IxBZmcn+Qg==}
|
||||||
|
|
||||||
'@iconify/tools@4.2.0':
|
'@iconify/tools@4.2.0':
|
||||||
resolution: {integrity: sha512-WRxPva/ipxYkqZd1+CkEAQmd86dQmrwH0vwK89gmp2Kh2WyyVw57XbPng0NehP3x4V1LzLsXUneP1uMfTMZmUA==}
|
resolution: {integrity: sha512-WRxPva/ipxYkqZd1+CkEAQmd86dQmrwH0vwK89gmp2Kh2WyyVw57XbPng0NehP3x4V1LzLsXUneP1uMfTMZmUA==}
|
||||||
@@ -2740,23 +2740,23 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: '>=8.57.0'
|
eslint: '>=8.57.0'
|
||||||
|
|
||||||
eslint-plugin-format@1.3.1:
|
eslint-plugin-format@1.4.0:
|
||||||
resolution: {integrity: sha512-nK96Gnt6/9wj8KhTFg+D80Mc01cffrcB15NO6pkTJmPpO0vHV+9yxegr+wVry4O3uGbu83HN86inCO3IsML9Rw==}
|
resolution: {integrity: sha512-6o3fBJENUZPXlg01ab0vTldr6YThw0dxb49QMVp1V9bI7k22dtXYuWWMm3mitAsntJOt8V4pa7BWHUalTrSBPA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^8.40.0 || ^9.0.0
|
eslint: ^8.40.0 || ^9.0.0
|
||||||
|
|
||||||
eslint-plugin-react-dom@2.11.0:
|
eslint-plugin-react-dom@2.12.2:
|
||||||
resolution: {integrity: sha512-hqZkFOpE6yU8WaRjvUNXHlaujw9/Cn2Iyk7lRw23edOUUDhpa+X4NH2FyZh0b23uuhHegJayKjwqnxFZDPKZZw==}
|
resolution: {integrity: sha512-Tvz+YETB0MQiPHR3KYhkwCioGfXQ6aUXpNOFpgZ70wx5/QuU1lemTWdmXuxgAPifsl150OOZmM2MJ0ElkwBUOw==}
|
||||||
engines: {node: '>=20.19.0'}
|
engines: {node: '>=20.19.0'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
|
||||||
typescript: '>=4.8.4 <6.0.0'
|
typescript: '>=4.8.4 <6.0.0'
|
||||||
|
|
||||||
eslint-plugin-react-hooks-extra@2.11.0:
|
eslint-plugin-react-hooks-extra@2.12.2:
|
||||||
resolution: {integrity: sha512-d/O0wdz2026wmaVt0buVmi25MtYz7c8Mn7DtTihkoXR5GyZUFJ/5v/7kbOfC8hW3MyCEjuf02e0H107jyZ7JuQ==}
|
resolution: {integrity: sha512-I3L/iVgyMRbbmMxRZNIxlxMrXUnV74ZHOsmSfzB/ue9hivdd5yN8JhMe+I5PNOw9L0gJHUCo2mgkKV6lMEE5DA==}
|
||||||
engines: {node: '>=20.19.0'}
|
engines: {node: '>=20.19.0'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
|
||||||
typescript: '>=4.8.4 <6.0.0'
|
typescript: '>=4.8.4 <6.0.0'
|
||||||
|
|
||||||
eslint-plugin-react-hooks@7.0.1:
|
eslint-plugin-react-hooks@7.0.1:
|
||||||
@@ -2765,11 +2765,11 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0
|
eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0
|
||||||
|
|
||||||
eslint-plugin-react-naming-convention@2.11.0:
|
eslint-plugin-react-naming-convention@2.12.2:
|
||||||
resolution: {integrity: sha512-hmH7/jta2L3eXW1do7pHaZqxPH/EQwSa1SAnXB/XVHkkwZzvXCVUwEvJnMhPdKDrXQeDDXZUmbuw6eCfBSQu4Q==}
|
resolution: {integrity: sha512-IsPmSs+AZo11uR47UoSRv9tVntUDL9Ah5F8Zj4HVC4HTxJlFZHC0gbm43q36Xw6c65J0LqA75oDA2h6jvhqSQQ==}
|
||||||
engines: {node: '>=20.19.0'}
|
engines: {node: '>=20.19.0'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
|
||||||
typescript: '>=4.8.4 <6.0.0'
|
typescript: '>=4.8.4 <6.0.0'
|
||||||
|
|
||||||
eslint-plugin-react-refresh@0.5.0:
|
eslint-plugin-react-refresh@0.5.0:
|
||||||
@@ -2777,25 +2777,25 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: '>=9'
|
eslint: '>=9'
|
||||||
|
|
||||||
eslint-plugin-react-rsc@2.11.0:
|
eslint-plugin-react-rsc@2.12.2:
|
||||||
resolution: {integrity: sha512-hJRnl2C/pi36kgjvCLNGPmGRDnKUzjrwLCNMp5/upV0Du+1ume23DhYuzzbail/WRp11xccfK2fHJGbUSVpmDw==}
|
resolution: {integrity: sha512-37Z4u6bBddO2wz8wrelYapOoDHhdEyF2pt8pbzFs0nW2USOxoA34/Gv73Dos0Kb6Ul4fFuwEHH2Tu8hZoki5jQ==}
|
||||||
engines: {node: '>=20.19.0'}
|
engines: {node: '>=20.19.0'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
|
||||||
typescript: '>=4.8.4 <6.0.0'
|
typescript: '>=4.8.4 <6.0.0'
|
||||||
|
|
||||||
eslint-plugin-react-web-api@2.11.0:
|
eslint-plugin-react-web-api@2.12.2:
|
||||||
resolution: {integrity: sha512-T8062QNhIHYDiwRVSnyZpSbjdsXEmw3hTnj5+g9wUWySacCaaMpJEX6MV7I7RMS9RnHzsvUnbvs7bneEZ6xg/g==}
|
resolution: {integrity: sha512-bnpobQ6pjGdo4sJpd/PDlVM/wTqHt29fsW3uExuB+9ta6LSJjJo0/nXhV/o7q/MU/04QZB8WOw+k9ws8HU1sPQ==}
|
||||||
engines: {node: '>=20.19.0'}
|
engines: {node: '>=20.19.0'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
|
||||||
typescript: '>=4.8.4 <6.0.0'
|
typescript: '>=4.8.4 <6.0.0'
|
||||||
|
|
||||||
eslint-plugin-react-x@2.11.0:
|
eslint-plugin-react-x@2.12.2:
|
||||||
resolution: {integrity: sha512-yEv2uIZc7wyYlEic6FbBS0PYuWRdUhS6UjQGJUbLE84Lb2XTnO6yn1+B2zXd/LrHxCDKwnXHLxPK9MBEVG0yVw==}
|
resolution: {integrity: sha512-0zA48OyHKHePa3mhV/tRxT26LvEhRC7ROQ02sdwoyv/JOYgLX+5Z9o85sneFB7SmkZul4TubxUf+EvHTXdUmVg==}
|
||||||
engines: {node: '>=20.19.0'}
|
engines: {node: '>=20.19.0'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^8.57.0 || ^9.0.0
|
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
|
||||||
typescript: '>=4.8.4 <6.0.0'
|
typescript: '>=4.8.4 <6.0.0'
|
||||||
|
|
||||||
eslint-plugin-react@7.37.5:
|
eslint-plugin-react@7.37.5:
|
||||||
@@ -6555,9 +6555,9 @@ snapshots:
|
|||||||
|
|
||||||
'@eslint-community/regexpp@4.12.2': {}
|
'@eslint-community/regexpp@4.12.2': {}
|
||||||
|
|
||||||
'@eslint-react/ast@2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)':
|
'@eslint-react/ast@2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-react/eff': 2.11.0
|
'@eslint-react/eff': 2.12.2
|
||||||
'@typescript-eslint/types': 8.54.0
|
'@typescript-eslint/types': 8.54.0
|
||||||
'@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3)
|
'@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3)
|
||||||
'@typescript-eslint/utils': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@typescript-eslint/utils': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
@@ -6567,12 +6567,12 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@eslint-react/core@2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)':
|
'@eslint-react/core@2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-react/ast': 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@eslint-react/ast': 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@eslint-react/eff': 2.11.0
|
'@eslint-react/eff': 2.12.2
|
||||||
'@eslint-react/shared': 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@eslint-react/shared': 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@eslint-react/var': 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@eslint-react/var': 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@typescript-eslint/scope-manager': 8.54.0
|
'@typescript-eslint/scope-manager': 8.54.0
|
||||||
'@typescript-eslint/types': 8.54.0
|
'@typescript-eslint/types': 8.54.0
|
||||||
'@typescript-eslint/utils': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@typescript-eslint/utils': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
@@ -6582,31 +6582,31 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@eslint-react/eff@2.11.0': {}
|
'@eslint-react/eff@2.12.2': {}
|
||||||
|
|
||||||
'@eslint-react/eslint-plugin@2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)':
|
'@eslint-react/eslint-plugin@2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-react/eff': 2.11.0
|
'@eslint-react/eff': 2.12.2
|
||||||
'@eslint-react/shared': 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@eslint-react/shared': 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@typescript-eslint/scope-manager': 8.54.0
|
'@typescript-eslint/scope-manager': 8.54.0
|
||||||
'@typescript-eslint/type-utils': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@typescript-eslint/type-utils': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@typescript-eslint/types': 8.54.0
|
'@typescript-eslint/types': 8.54.0
|
||||||
'@typescript-eslint/utils': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@typescript-eslint/utils': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
eslint: 10.0.0(jiti@2.6.1)
|
eslint: 10.0.0(jiti@2.6.1)
|
||||||
eslint-plugin-react-dom: 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
eslint-plugin-react-dom: 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
eslint-plugin-react-hooks-extra: 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
eslint-plugin-react-hooks-extra: 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
eslint-plugin-react-naming-convention: 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
eslint-plugin-react-naming-convention: 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
eslint-plugin-react-rsc: 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
eslint-plugin-react-rsc: 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
eslint-plugin-react-web-api: 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
eslint-plugin-react-web-api: 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
eslint-plugin-react-x: 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
eslint-plugin-react-x: 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
ts-api-utils: 2.4.0(typescript@5.9.3)
|
ts-api-utils: 2.4.0(typescript@5.9.3)
|
||||||
typescript: 5.9.3
|
typescript: 5.9.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@eslint-react/shared@2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)':
|
'@eslint-react/shared@2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-react/eff': 2.11.0
|
'@eslint-react/eff': 2.12.2
|
||||||
'@typescript-eslint/utils': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@typescript-eslint/utils': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
eslint: 10.0.0(jiti@2.6.1)
|
eslint: 10.0.0(jiti@2.6.1)
|
||||||
ts-pattern: 5.9.0
|
ts-pattern: 5.9.0
|
||||||
@@ -6615,11 +6615,11 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@eslint-react/var@2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)':
|
'@eslint-react/var@2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-react/ast': 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@eslint-react/ast': 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@eslint-react/eff': 2.11.0
|
'@eslint-react/eff': 2.12.2
|
||||||
'@eslint-react/shared': 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@eslint-react/shared': 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@typescript-eslint/scope-manager': 8.54.0
|
'@typescript-eslint/scope-manager': 8.54.0
|
||||||
'@typescript-eslint/types': 8.54.0
|
'@typescript-eslint/types': 8.54.0
|
||||||
'@typescript-eslint/utils': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@typescript-eslint/utils': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
@@ -6688,7 +6688,7 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@iconify/types': 2.0.0
|
'@iconify/types': 2.0.0
|
||||||
|
|
||||||
'@iconify-json/simple-icons@1.2.69':
|
'@iconify-json/simple-icons@1.2.70':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@iconify/types': 2.0.0
|
'@iconify/types': 2.0.0
|
||||||
|
|
||||||
@@ -8729,7 +8729,7 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-plugin-format@1.3.1(eslint@10.0.0(jiti@2.6.1)):
|
eslint-plugin-format@1.4.0(eslint@10.0.0(jiti@2.6.1)):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@dprint/formatter': 0.5.1
|
'@dprint/formatter': 0.5.1
|
||||||
'@dprint/markdown': 0.20.0
|
'@dprint/markdown': 0.20.0
|
||||||
@@ -8741,13 +8741,13 @@ snapshots:
|
|||||||
prettier: 3.8.1
|
prettier: 3.8.1
|
||||||
synckit: 0.11.12
|
synckit: 0.11.12
|
||||||
|
|
||||||
eslint-plugin-react-dom@2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3):
|
eslint-plugin-react-dom@2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-react/ast': 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@eslint-react/ast': 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@eslint-react/core': 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@eslint-react/core': 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@eslint-react/eff': 2.11.0
|
'@eslint-react/eff': 2.12.2
|
||||||
'@eslint-react/shared': 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@eslint-react/shared': 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@eslint-react/var': 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@eslint-react/var': 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@typescript-eslint/scope-manager': 8.54.0
|
'@typescript-eslint/scope-manager': 8.54.0
|
||||||
'@typescript-eslint/types': 8.54.0
|
'@typescript-eslint/types': 8.54.0
|
||||||
'@typescript-eslint/utils': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@typescript-eslint/utils': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
@@ -8758,13 +8758,13 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-plugin-react-hooks-extra@2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3):
|
eslint-plugin-react-hooks-extra@2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-react/ast': 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@eslint-react/ast': 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@eslint-react/core': 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@eslint-react/core': 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@eslint-react/eff': 2.11.0
|
'@eslint-react/eff': 2.12.2
|
||||||
'@eslint-react/shared': 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@eslint-react/shared': 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@eslint-react/var': 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@eslint-react/var': 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@typescript-eslint/scope-manager': 8.54.0
|
'@typescript-eslint/scope-manager': 8.54.0
|
||||||
'@typescript-eslint/type-utils': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@typescript-eslint/type-utils': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@typescript-eslint/types': 8.54.0
|
'@typescript-eslint/types': 8.54.0
|
||||||
@@ -8786,13 +8786,13 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-plugin-react-naming-convention@2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3):
|
eslint-plugin-react-naming-convention@2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-react/ast': 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@eslint-react/ast': 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@eslint-react/core': 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@eslint-react/core': 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@eslint-react/eff': 2.11.0
|
'@eslint-react/eff': 2.12.2
|
||||||
'@eslint-react/shared': 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@eslint-react/shared': 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@eslint-react/var': 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@eslint-react/var': 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@typescript-eslint/scope-manager': 8.54.0
|
'@typescript-eslint/scope-manager': 8.54.0
|
||||||
'@typescript-eslint/type-utils': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@typescript-eslint/type-utils': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@typescript-eslint/types': 8.54.0
|
'@typescript-eslint/types': 8.54.0
|
||||||
@@ -8809,11 +8809,11 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
eslint: 10.0.0(jiti@2.6.1)
|
eslint: 10.0.0(jiti@2.6.1)
|
||||||
|
|
||||||
eslint-plugin-react-rsc@2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3):
|
eslint-plugin-react-rsc@2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-react/ast': 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@eslint-react/ast': 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@eslint-react/shared': 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@eslint-react/shared': 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@eslint-react/var': 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@eslint-react/var': 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@typescript-eslint/types': 8.54.0
|
'@typescript-eslint/types': 8.54.0
|
||||||
'@typescript-eslint/utils': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@typescript-eslint/utils': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
eslint: 10.0.0(jiti@2.6.1)
|
eslint: 10.0.0(jiti@2.6.1)
|
||||||
@@ -8822,13 +8822,13 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-plugin-react-web-api@2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3):
|
eslint-plugin-react-web-api@2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-react/ast': 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@eslint-react/ast': 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@eslint-react/core': 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@eslint-react/core': 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@eslint-react/eff': 2.11.0
|
'@eslint-react/eff': 2.12.2
|
||||||
'@eslint-react/shared': 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@eslint-react/shared': 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@eslint-react/var': 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@eslint-react/var': 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@typescript-eslint/scope-manager': 8.54.0
|
'@typescript-eslint/scope-manager': 8.54.0
|
||||||
'@typescript-eslint/types': 8.54.0
|
'@typescript-eslint/types': 8.54.0
|
||||||
'@typescript-eslint/utils': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@typescript-eslint/utils': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
@@ -8839,13 +8839,13 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-plugin-react-x@2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3):
|
eslint-plugin-react-x@2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@eslint-react/ast': 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@eslint-react/ast': 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@eslint-react/core': 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@eslint-react/core': 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@eslint-react/eff': 2.11.0
|
'@eslint-react/eff': 2.12.2
|
||||||
'@eslint-react/shared': 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@eslint-react/shared': 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@eslint-react/var': 2.11.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@eslint-react/var': 2.12.2(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@typescript-eslint/scope-manager': 8.54.0
|
'@typescript-eslint/scope-manager': 8.54.0
|
||||||
'@typescript-eslint/type-utils': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
'@typescript-eslint/type-utils': 8.54.0(eslint@10.0.0(jiti@2.6.1))(typescript@5.9.3)
|
||||||
'@typescript-eslint/types': 8.54.0
|
'@typescript-eslint/types': 8.54.0
|
||||||
|
|||||||
@@ -15,11 +15,12 @@ const borderClasses = 'border border-neutral-100 dark:border-stone-500/20';
|
|||||||
const bgColorClasses =
|
const bgColorClasses =
|
||||||
'bg-neutral-100/80 hover:bg-neutral-100 dark:bg-neutral-800/60 dark:hover:bg-neutral-800/90';
|
'bg-neutral-100/80 hover:bg-neutral-100 dark:bg-neutral-800/60 dark:hover:bg-neutral-800/90';
|
||||||
const shadowClasses = 'shadow-xs hover:shadow-md dark:shadow-md dark:hover:shadow-lg';
|
const shadowClasses = 'shadow-xs hover:shadow-md dark:shadow-md dark:hover:shadow-lg';
|
||||||
|
const sizeClasses = 'h-30 w-100 md:w-[300px]';
|
||||||
---
|
---
|
||||||
|
|
||||||
<div class={`${baseClasses}`}>
|
<div class={`${baseClasses}`}>
|
||||||
<a
|
<a
|
||||||
class={`rounded-xl duration-300 transition-all h-30 ${borderClasses} ${bgColorClasses} ${shadowClasses}`}
|
class={`rounded-xl duration-300 transition-all ${sizeClasses} ${borderClasses} ${bgColorClasses} ${shadowClasses}`}
|
||||||
href={url}
|
href={url}
|
||||||
data-astro-prefetch
|
data-astro-prefetch
|
||||||
>
|
>
|
||||||
|
|||||||
8
src/components/ui/logos/ApplicationLogo.astro
Normal file
8
src/components/ui/logos/ApplicationLogo.astro
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
import Image from '@components/ui/images/Image.astro';
|
||||||
|
|
||||||
|
const { src, alt } = Astro.props;
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<Image src={src} alt={alt} style="color: transparent; width: 32px; height: 32px; object-fit: contain; max-height: 100%; max-width: 100%;" draggable="false" loading="lazy" width="32" height="32" />
|
||||||
58
src/components/ui/sections/Applications.astro
Normal file
58
src/components/ui/sections/Applications.astro
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
---
|
||||||
|
import { readItems } from '@directus/sdk';
|
||||||
|
import ApplicationLogo from '@components/ui/logos/ApplicationLogo.astro';
|
||||||
|
|
||||||
|
import type { Application } from '@lib/directusTypes';
|
||||||
|
|
||||||
|
import directus from '@lib/directus';
|
||||||
|
|
||||||
|
const applications = await directus.request(
|
||||||
|
readItems('site_applications', {
|
||||||
|
fields: ['*'],
|
||||||
|
sort: ['-isActive'],
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
const baseClasses = 'smooth-reveal-cards rounded-xl flex flex-col';
|
||||||
|
const borderClasses = 'border border-neutral-100 dark:border-stone-500/20';
|
||||||
|
const bgColorClasses =
|
||||||
|
'bg-neutral-100/80 hover:bg-neutral-100 dark:bg-neutral-800/60 dark:hover:bg-neutral-800/90';
|
||||||
|
const shadowClasses = 'shadow-xs hover:shadow-md dark:shadow-md dark:hover:shadow-lg';
|
||||||
|
---
|
||||||
|
|
||||||
|
<section class:list={['flex flex-col gap-4', Astro.props.className]}>
|
||||||
|
<div class="ml-8 grid grid-cols-1 gap-3 md:grid-cols-2 print:flex print:flex-col">
|
||||||
|
{
|
||||||
|
applications.map((application: Application) => {
|
||||||
|
return (
|
||||||
|
<div class={`${baseClasses}`}>
|
||||||
|
<a
|
||||||
|
class={`rounded-xl transition-all duration-300 ${borderClasses} ${bgColorClasses} ${shadowClasses}`}
|
||||||
|
href={application.url}
|
||||||
|
>
|
||||||
|
<div class="p-4 md:p-10">
|
||||||
|
<div class="flex">
|
||||||
|
<ApplicationLogo
|
||||||
|
src={application.logoUrl}
|
||||||
|
alt={`Logo of ${application.name}`}
|
||||||
|
/>
|
||||||
|
<h3 class="text-lg font-bold text-gray-800 dark:text-white ml-4">
|
||||||
|
{application.name}
|
||||||
|
</h3>
|
||||||
|
</div>
|
||||||
|
<p class="mt-2 text-gray-500 dark:text-neutral-400">{application.description}</p>
|
||||||
|
<ul class="mt-1 flex list-disc flex-col gap-2 text-sm text-gray-500 dark:text-neutral-400 [&>li]:ml-4">
|
||||||
|
{application.highlights.map((highlight) => {
|
||||||
|
return <li class="marker:text-yellow-500">{highlight}</li>;
|
||||||
|
})}
|
||||||
|
</ul>
|
||||||
|
<div class="flex">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
@@ -7,12 +7,12 @@ import FeaturesCard from '@components/ui/cards/FeaturesCard.astro';
|
|||||||
const global = await directus.request(readSingleton('site_global'));
|
const global = await directus.request(readSingleton('site_global'));
|
||||||
---
|
---
|
||||||
|
|
||||||
<section class="mx-auto mb-20 max-w-[85rem] px-4 py-10 sm:px-6 lg:px-8 lg:py-14 2xl:max-w-full">
|
<section class="mx-auto mb-20 max-w-340 px-4 py-10 sm:px-6 lg:px-8 lg:py-14 2xl:max-w-full">
|
||||||
<div
|
<div
|
||||||
class="flex flex-col items-center justify-center gap-y-2 sm:flex-row sm:gap-x-12 sm:gap-y-0 lg:gap-x-24"
|
class="flex flex-col items-center justify-center gap-y-2 sm:flex-row sm:gap-x-12 sm:gap-y-0 lg:gap-x-24"
|
||||||
>
|
>
|
||||||
<div class="mx-auto max-w-5xl px-4 sm:px-6 lg:px-8">
|
<div class="mx-auto max-w-5xl px-4 sm:px-6 lg:px-8">
|
||||||
<div class="grid gap-3 sm:grid-cols-2 sm:gap-6 lg:grid-cols-3">
|
<div class="flex flex-wrap gap-6 sm:grid-cols-2 sm:gap-6 lg:grid-cols-3 justify-center">
|
||||||
<FeaturesCard
|
<FeaturesCard
|
||||||
title="Cloud Engineer"
|
title="Cloud Engineer"
|
||||||
description="Full stack and cloud engineer."
|
description="Full stack and cloud engineer."
|
||||||
@@ -25,6 +25,12 @@ const global = await directus.request(readSingleton('site_global'));
|
|||||||
url="/categories/homelab/"
|
url="/categories/homelab/"
|
||||||
icon="mdi:home-variant-outline"
|
icon="mdi:home-variant-outline"
|
||||||
/>
|
/>
|
||||||
|
<FeaturesCard
|
||||||
|
title="Documentation"
|
||||||
|
description="Reference and guides for my homelab."
|
||||||
|
url="https://docs.alexlebens.dev"
|
||||||
|
icon="mdi:file-document-multiple"
|
||||||
|
/>
|
||||||
<FeaturesCard
|
<FeaturesCard
|
||||||
title="Email"
|
title="Email"
|
||||||
description={`Send me a message.`}
|
description={`Send me a message.`}
|
||||||
|
|||||||
@@ -13,13 +13,14 @@ export const NavigationLinks: NavigationLink[] = [
|
|||||||
{ name: 'Home', url: '/' },
|
{ name: 'Home', url: '/' },
|
||||||
{ name: 'Blog', url: '/blog/' },
|
{ name: 'Blog', url: '/blog/' },
|
||||||
{ name: 'Categories', url: '/categories/' },
|
{ name: 'Categories', url: '/categories/' },
|
||||||
|
{ name: 'Apps', url: '/apps/' },
|
||||||
{ name: 'About Me', url: '/about/' },
|
{ name: 'About Me', url: '/about/' },
|
||||||
];
|
];
|
||||||
|
|
||||||
export const FooterLinks: NavigationLink[] = [
|
export const FooterLinks: NavigationLink[] = [
|
||||||
{ name: 'RSS', url: '/rss.xml' },
|
{ name: 'RSS', url: '/rss.xml' },
|
||||||
{ name: 'Gitea', url: '/https://gitea.alexlebens.dev' },
|
{ name: 'Gitea', url: 'https://gitea.alexlebens.dev' },
|
||||||
{ name: 'Docs', url: '/https://docs.alexlebens.dev' },
|
{ name: 'Docs', url: 'https://docs.alexlebens.dev' },
|
||||||
];
|
];
|
||||||
|
|
||||||
export const SEO = {
|
export const SEO = {
|
||||||
|
|||||||
BIN
src/images/cedar_tree.png
Normal file
BIN
src/images/cedar_tree.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.5 MiB |
@@ -3,6 +3,7 @@ import { createDirectus, rest } from '@directus/sdk';
|
|||||||
import type {
|
import type {
|
||||||
Global,
|
Global,
|
||||||
Post,
|
Post,
|
||||||
|
Application,
|
||||||
Experience,
|
Experience,
|
||||||
Education,
|
Education,
|
||||||
Certificate,
|
Certificate,
|
||||||
@@ -15,6 +16,7 @@ import { getDirectusURL } from '@lib/directusFunctions';
|
|||||||
type Schema = {
|
type Schema = {
|
||||||
site_global: Global;
|
site_global: Global;
|
||||||
posts: Post[];
|
posts: Post[];
|
||||||
|
site_applications: Application;
|
||||||
site_experience: Experience;
|
site_experience: Experience;
|
||||||
site_education: Education;
|
site_education: Education;
|
||||||
site_certificate: Certificate;
|
site_certificate: Certificate;
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ export type Global = {
|
|||||||
about: string;
|
about: string;
|
||||||
about_description: string;
|
about_description: string;
|
||||||
about_blog: string;
|
about_blog: string;
|
||||||
|
about_applications: string;
|
||||||
about_categories: string;
|
about_categories: string;
|
||||||
initials: string;
|
initials: string;
|
||||||
email: string;
|
email: string;
|
||||||
@@ -12,10 +13,12 @@ export type Global = {
|
|||||||
portrait_alt: string;
|
portrait_alt: string;
|
||||||
home_image: string;
|
home_image: string;
|
||||||
home_image_alt: string;
|
home_image_alt: string;
|
||||||
categories_image: string;
|
|
||||||
categories_image_alt: string;
|
|
||||||
blog_image: string;
|
blog_image: string;
|
||||||
blog_image_alt: string;
|
blog_image_alt: string;
|
||||||
|
categories_image: string;
|
||||||
|
categories_image_alt: string;
|
||||||
|
applications_image: string;
|
||||||
|
applications_image_alt: string;
|
||||||
footer_image: string;
|
footer_image: string;
|
||||||
footer_image_alt: string;
|
footer_image_alt: string;
|
||||||
};
|
};
|
||||||
@@ -37,6 +40,16 @@ export type Post = {
|
|||||||
updated_date: Date;
|
updated_date: Date;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export type Application = {
|
||||||
|
id: string;
|
||||||
|
name: string;
|
||||||
|
isActive: boolean;
|
||||||
|
description: string;
|
||||||
|
highlights: string[];
|
||||||
|
url: string;
|
||||||
|
logoUrl: string;
|
||||||
|
};
|
||||||
|
|
||||||
export type Experience = {
|
export type Experience = {
|
||||||
id: string;
|
id: string;
|
||||||
name: string;
|
name: string;
|
||||||
|
|||||||
66
src/pages/apps.astro
Normal file
66
src/pages/apps.astro
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
---
|
||||||
|
import { readSingleton } from '@directus/sdk';
|
||||||
|
|
||||||
|
import directus from '@lib/directus';
|
||||||
|
import BaseLayout from '@layouts/BaseLayout.astro';
|
||||||
|
import HeroSection from '@components/ui/sections/HeroSection.astro';
|
||||||
|
import Applications from '@components/ui/sections/Applications.astro';
|
||||||
|
import applicationImg from '@images/cedar_tree.png';
|
||||||
|
|
||||||
|
const global = await directus.request(readSingleton('site_global'));
|
||||||
|
---
|
||||||
|
|
||||||
|
<BaseLayout
|
||||||
|
title="Applications"
|
||||||
|
description={global.about_applications}
|
||||||
|
structuredData={{
|
||||||
|
'@context': 'https://schema.org',
|
||||||
|
'@type': 'WebPage',
|
||||||
|
inLanguage: 'en-US',
|
||||||
|
'@id': Astro.url.href,
|
||||||
|
url: Astro.url.href,
|
||||||
|
name: `Applications | ${global.name}`,
|
||||||
|
description: global.about_applications,
|
||||||
|
isPartOf: {
|
||||||
|
'@type': 'WebSite',
|
||||||
|
url: global.site_url,
|
||||||
|
name: global.name,
|
||||||
|
description: global.about,
|
||||||
|
},
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<HeroSection
|
||||||
|
title="Applications"
|
||||||
|
subTitle={global.about_applications}
|
||||||
|
src={applicationImg}
|
||||||
|
alt={global.applications_image_alt}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<section class="mx-auto max-w-340 px-4 py-10 sm:px-6 lg:px-8 lg:py-14">
|
||||||
|
<main class="relative grid grid-cols-1 md:grid-cols-6 gap-12 p-8 md:p-16 xl:gap-24 max-w-7xl mx-auto">
|
||||||
|
<div class="space-y-12 col-span-1 md:col-span-6">
|
||||||
|
<Applications className="smooth-reveal-2" />
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
</section>
|
||||||
|
</BaseLayout>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// Add smooth reveal animations for content after loading
|
||||||
|
document.addEventListener('astro:page-load', () => {
|
||||||
|
const animateContent = () => {
|
||||||
|
// Animate group 1
|
||||||
|
const smoothReveal = document.querySelectorAll('.smooth-reveal');
|
||||||
|
smoothReveal.forEach((el, index) => {
|
||||||
|
setTimeout(
|
||||||
|
() => {
|
||||||
|
el.classList.add('animate-reveal');
|
||||||
|
},
|
||||||
|
50 + index * 100
|
||||||
|
);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
animateContent();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
Reference in New Issue
Block a user