Compare commits

...

65 Commits

Author SHA1 Message Date
54759056b3 update version
All checks were successful
renovate / renovate (push) Successful in 1m21s
test-build / build (push) Successful in 33s
release-image / release (push) Successful in 4m15s
2025-07-10 15:57:02 -05:00
3cc9762e0d Merge pull request 'Update typescript-eslint monorepo to v8.36.0' (#31) from renovate/typescript-eslint-monorepo into main
All checks were successful
renovate / renovate (push) Successful in 26s
test-build / build (push) Successful in 45s
Reviewed-on: #31
2025-07-10 03:28:27 +00:00
ef757c4a14 Update typescript-eslint monorepo to v8.36.0
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (pull_request) Successful in 29s
2025-07-09 00:02:57 +00:00
176f92bf67 Merge pull request 'Update dependency framer-motion to v12.23.0' (#27) from renovate/framer-motion-12.x-lockfile into main
Some checks failed
test-build / build (push) Successful in 34s
process-pull-requests / process-pull-requests (push) Successful in 8s
process-issues / process-issues (push) Failing after 13s
renovate / renovate (push) Successful in 42s
Reviewed-on: #27
2025-07-05 04:54:21 +00:00
09d411dd68 Merge pull request 'Update astro monorepo' (#30) from renovate/astro-monorepo into main
Some checks failed
renovate / renovate (push) Has been cancelled
test-build / build (push) Has been cancelled
Reviewed-on: #30
2025-07-05 04:54:14 +00:00
54acfcb24d Update astro monorepo
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (pull_request) Successful in 43s
2025-07-05 00:01:04 +00:00
6f3b631862 Update dependency framer-motion to v12.23.0
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (pull_request) Successful in 1m20s
2025-07-04 00:02:50 +00:00
18cd240a9b Update dependency astro to v5.10.2
Some checks failed
test-build / build (push) Successful in 29s
process-issues / process-issues (push) Failing after 14s
process-pull-requests / process-pull-requests (push) Successful in 15s
renovate / renovate (push) Successful in 1m31s
2025-07-03 00:02:59 +00:00
bb4fe8ef37 Update dependency eslint to v9.30.1
Some checks failed
renovate/stability-days Updates have met minimum release age requirement
renovate / renovate (push) Has been cancelled
test-build / build (pull_request) Successful in 30s
test-build / build (push) Has been cancelled
2025-07-03 00:02:05 +00:00
e0e3c1f61a Update typescript-eslint monorepo to v8.35.1
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (push) Successful in 48s
test-build / build (pull_request) Successful in 56s
renovate / renovate (push) Successful in 1m7s
2025-07-02 00:01:05 +00:00
0b5c6ae999 update astro
Some checks failed
test-build / build (push) Successful in 38s
process-pull-requests / process-pull-requests (push) Failing after 10s
process-issues / process-issues (push) Failing after 10s
renovate / renovate (push) Successful in 2m14s
2025-06-28 16:41:12 -05:00
a20ba4ab43 Merge pull request 'Update dependency eslint to v9.30.0' (#25) from renovate/eslint-monorepo into main
All checks were successful
renovate / renovate (push) Successful in 22s
test-build / build (push) Successful in 25s
Reviewed-on: #25
2025-06-28 21:37:27 +00:00
550e7dfe52 Merge pull request 'Update dependency @directus/sdk to v20' (#21) from renovate/directus-sdk-20.x into main
Some checks failed
renovate / renovate (push) Has been cancelled
test-build / build (push) Has been cancelled
Reviewed-on: #21
2025-06-28 21:37:21 +00:00
03174cfb9d Update dependency @directus/sdk to v20
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (pull_request) Successful in 31s
2025-06-28 21:36:32 +00:00
da50c1928c Update dependency eslint to v9.30.0
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (pull_request) Successful in 31s
2025-06-28 21:36:25 +00:00
f1d1fe979e change confi
All checks were successful
test-build / build (push) Successful in 26s
renovate / renovate (push) Successful in 1m0s
2025-06-28 16:35:35 -05:00
4d6019d0b0 update node
All checks were successful
test-build / build (push) Successful in 42s
renovate / renovate (push) Successful in 1m7s
2025-06-28 16:33:16 -05:00
7dd302b3d4 Update dependency prettier to v3.6.2
All checks were successful
test-build / build (pull_request) Successful in 34s
renovate/stability-days Updates have met minimum release age requirement
test-build / build (push) Successful in 32s
renovate / renovate (push) Successful in 45s
2025-06-28 05:21:40 +00:00
8a8f2a6216 Update dependency framer-motion to v12.19.2
Some checks are pending
test-build / build (pull_request) Successful in 34s
renovate/stability-days Updates have not met minimum release age requirement
test-build / build (push) Successful in 26s
renovate / renovate (push) Successful in 1m0s
2025-06-28 05:20:17 +00:00
97775f1ceb Merge pull request 'Update typescript-eslint monorepo to v8.35.0' (#19) from renovate/typescript-eslint-monorepo into main
All checks were successful
test-build / build (push) Successful in 25s
renovate / renovate (push) Successful in 1m22s
Reviewed-on: #19
2025-06-28 05:19:32 +00:00
0a437a26f1 Merge pull request 'Update dependency prettier to v3.6.1' (#18) from renovate/prettier-3.x-lockfile into main
Some checks failed
test-build / build (push) Has been cancelled
renovate / renovate (push) Has been cancelled
Reviewed-on: #18
2025-06-28 05:19:19 +00:00
ba67b4d0e4 Merge pull request 'Update dependency framer-motion to v12.19.1' (#17) from renovate/framer-motion-12.x-lockfile into main
Some checks failed
test-build / build (push) Has been cancelled
renovate / renovate (push) Has been cancelled
Reviewed-on: #17
2025-06-28 05:19:03 +00:00
0bcfa9bed4 Update typescript-eslint monorepo to v8.35.0
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (pull_request) Successful in 30s
2025-06-28 00:03:22 +00:00
ada95481f7 Update dependency prettier to v3.6.1
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (pull_request) Successful in 30s
2025-06-28 00:03:06 +00:00
7c9f4acc00 Update dependency framer-motion to v12.19.1
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (pull_request) Successful in 30s
2025-06-28 00:02:54 +00:00
0b7b87580a Update tailwindcss monorepo to v4.1.11
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (pull_request) Successful in 42s
test-build / build (push) Successful in 33s
renovate / renovate (push) Successful in 1m43s
2025-06-28 00:01:05 +00:00
08f076e566 Update dependency prettier-plugin-tailwindcss to v0.6.13
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (pull_request) Successful in 1m22s
test-build / build (push) Successful in 42s
renovate / renovate (push) Successful in 21s
2025-06-20 18:18:43 +00:00
26c27b9353 update astro
Some checks failed
test-build / build (push) Successful in 1m20s
process-pull-requests / process-pull-requests (push) Failing after 10s
process-issues / process-issues (push) Failing after 12s
renovate / renovate (push) Successful in 1m37s
2025-06-20 13:17:48 -05:00
ce8b3a2e19 update config
All checks were successful
test-build / build (push) Successful in 1m22s
renovate / renovate (push) Successful in 39s
2025-06-20 00:02:41 -05:00
6d34c0d407 update config
Some checks failed
test-build / build (push) Failing after 2s
renovate / renovate (push) Successful in 12s
2025-06-19 23:59:05 -05:00
63607bbca3 Merge pull request 'Update ghcr.io/renovatebot/renovate Docker tag to v41' (#15) from renovate/ghcr.io-renovatebot-renovate-41.x into main
All checks were successful
renovate / renovate (push) Successful in 35s
test-build / build (push) Successful in 27s
Reviewed-on: #15
2025-06-20 04:40:12 +00:00
745d2553a0 Update ghcr.io/renovatebot/renovate Docker tag to v41
All checks were successful
test-build / build (pull_request) Successful in 27s
2025-06-20 04:32:37 +00:00
8a19559cc7 Merge pull request 'Update typescript-eslint monorepo to v8.34.1' (#13) from renovate/typescript-eslint-monorepo into main
All checks were successful
test-build / build (push) Successful in 1m10s
process-issues / process-issues (push) Successful in 11s
process-pull-requests / process-pull-requests (push) Successful in 11s
renovate / renovate (push) Successful in 39s
Reviewed-on: #13
2025-06-18 05:18:07 +00:00
42854db0fb Update typescript-eslint monorepo to v8.34.1
All checks were successful
test-build / build (pull_request) Successful in 1m2s
2025-06-17 00:01:12 +00:00
7b72e3849b Merge pull request 'Update dependency framer-motion to v12.18.1' (#12) from renovate/framer-motion-12.x-lockfile into main
Some checks failed
test-build / build (push) Successful in 51s
process-pull-requests / process-pull-requests (push) Successful in 6s
process-issues / process-issues (push) Failing after 5s
renovate / renovate (push) Successful in 45s
Reviewed-on: #12
2025-06-14 19:52:45 +00:00
6a8dbb0c7c Merge pull request 'Update dependency eslint to v9.29.0' (#11) from renovate/eslint-monorepo into main
Some checks failed
renovate / renovate (push) Has been cancelled
test-build / build (push) Has been cancelled
Reviewed-on: #11
2025-06-14 19:52:35 +00:00
91fdf5a83f Update dependency framer-motion to v12.18.1
All checks were successful
test-build / build (pull_request) Successful in 1m6s
2025-06-14 00:01:33 +00:00
073f3a7916 Update dependency eslint to v9.29.0
All checks were successful
test-build / build (pull_request) Successful in 1m21s
2025-06-14 00:01:11 +00:00
38202841ca Merge pull request 'Update dependency framer-motion to v12.17.3' (#10) from renovate/framer-motion-12.x-lockfile into main
All checks were successful
test-build / build (push) Successful in 57s
process-issues / process-issues (push) Successful in 8s
process-pull-requests / process-pull-requests (push) Successful in 13s
renovate / renovate (push) Successful in 1m26s
Reviewed-on: #10
2025-06-12 20:12:45 +00:00
0492922cce Update dependency framer-motion to v12.17.3
All checks were successful
test-build / build (pull_request) Successful in 40s
2025-06-12 20:11:41 +00:00
a17500835b Merge pull request 'Update dependency framer-motion to v12.17.0' (#9) from renovate/framer-motion-12.x-lockfile into main
All checks were successful
renovate / renovate (push) Successful in 2m29s
test-build / build (push) Successful in 55s
Reviewed-on: #9
2025-06-12 18:06:43 +00:00
2f8b97208c Merge pull request 'Update tailwindcss monorepo to v4.1.10' (#8) from renovate/tailwindcss-monorepo into main
Some checks failed
renovate / renovate (push) Has been cancelled
test-build / build (push) Has been cancelled
Reviewed-on: #8
2025-06-12 18:06:36 +00:00
d6c30d5e5b Update dependency framer-motion to v12.17.0
All checks were successful
test-build / build (pull_request) Successful in 1m9s
2025-06-12 00:01:41 +00:00
a7ea9db3aa Update tailwindcss monorepo to v4.1.10
All checks were successful
test-build / build (pull_request) Successful in 1m19s
2025-06-12 00:01:31 +00:00
9134e78e8a remove dispatch
All checks were successful
test-build / build (push) Successful in 39s
process-issues / process-issues (push) Successful in 7s
process-pull-requests / process-pull-requests (push) Successful in 7s
renovate / renovate (push) Successful in 1m31s
2025-06-10 16:43:37 -05:00
2ca7d6705d fix
All checks were successful
renovate / renovate (push) Successful in 17s
test-build / build (push) Successful in 46s
2025-06-10 16:42:15 -05:00
5722e8c7a1 fix
All checks were successful
test-build / build (push) Successful in 38s
renovate / renovate (push) Successful in 19s
2025-06-10 16:39:55 -05:00
e39fd2acb8 change token
All checks were successful
renovate / renovate (push) Successful in 21s
test-build / build (push) Successful in 40s
2025-06-10 16:29:55 -05:00
0313fd54bc add ref
All checks were successful
renovate / renovate (push) Successful in 16s
test-build / build (push) Successful in 50s
2025-06-10 16:23:38 -05:00
dbb0f6d7ff update workflows
All checks were successful
renovate / renovate (push) Successful in 16s
test-build / build (push) Successful in 58s
2025-06-10 16:15:10 -05:00
20669d9766 fix
All checks were successful
renovate / renovate (push) Successful in 18s
test-build / build (push) Successful in 1m18s
2025-06-10 14:04:19 -05:00
6b2e6353d1 add dispatch
Some checks failed
test-build / build (push) Has been cancelled
renovate / renovate (push) Successful in 19s
2025-06-10 14:03:40 -05:00
6d112b52df remove step
Some checks failed
test-build / build (push) Has been cancelled
renovate / renovate (push) Successful in 17s
2025-06-10 14:02:58 -05:00
ff17af604f convert to python script
Some checks failed
test-build / build (push) Has been cancelled
renovate / renovate (push) Successful in 27s
2025-06-10 14:01:26 -05:00
32ea0989d7 change to pull requests
All checks were successful
renovate / renovate (push) Successful in 22s
test-build / build (push) Successful in 1m27s
2025-06-10 13:11:43 -05:00
e4ab7d134c fix repo name
All checks were successful
renovate / renovate (push) Successful in 20s
test-build / build (push) Successful in 1m44s
2025-06-10 13:06:04 -05:00
5fad13655c fix env
All checks were successful
renovate / renovate (push) Successful in 21s
test-build / build (push) Successful in 1m35s
2025-06-10 12:56:18 -05:00
8614d40a64 debugging
All checks were successful
renovate / renovate (push) Successful in 17s
test-build / build (push) Successful in 48s
2025-06-10 12:40:20 -05:00
8c417b93b3 fix url
All checks were successful
renovate / renovate (push) Successful in 17s
test-build / build (push) Successful in 41s
2025-06-10 12:36:49 -05:00
1d9519831b temp debugging
All checks were successful
renovate / renovate (push) Successful in 20s
test-build / build (push) Successful in 48s
2025-06-10 12:35:13 -05:00
fa57f2e93f temp debugging
All checks were successful
test-build / build (push) Successful in 45s
renovate / renovate (push) Successful in 18s
2025-06-10 12:29:25 -05:00
9e01002d4e add more logging
All checks were successful
renovate / renovate (push) Successful in 21s
test-build / build (push) Successful in 46s
2025-06-10 12:25:45 -05:00
cb52c169a3 add logging
All checks were successful
test-build / build (push) Successful in 1m1s
renovate / renovate (push) Successful in 19s
2025-06-10 12:15:47 -05:00
3017668cd2 fix lint
All checks were successful
test-build / build (push) Successful in 2m31s
renovate / renovate (push) Successful in 18s
2025-06-10 12:05:33 -05:00
1972b3bc19 update lockfile
Some checks failed
renovate / renovate (push) Successful in 19s
test-build / build (push) Failing after 48s
release-image / release (push) Successful in 1m43s
2025-06-10 11:58:31 -05:00
11 changed files with 704 additions and 1816 deletions

View File

@@ -0,0 +1,35 @@
name: process-issues
on:
schedule:
- cron: '@daily'
jobs:
process-issues:
runs-on: ubuntu-latest
steps:
- name: Checkout Python Script
uses: actions/checkout@v4
with:
repository: alexlebens/workflow-scripts
ref: main
token: ${{ secrets.BOT_TOKEN }}
path: scripts
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Install dependencies
run: pip install requests
- name: Run Script
env:
INSTANCE_URL: ${{ vars.INSTANCE_URL }}
REPOSITORY: ${{ gitea.repository }}
TOKEN: ${{ secrets.BOT_TOKEN }}
STALE_DAYS: 3
STALE_TAG: 'stale'
EXCLUDE_TAG: 'renovate'
run: python ./scripts/scripts/process-issues.py

View File

@@ -0,0 +1,35 @@
name: process-pull-requests
on:
schedule:
- cron: '@daily'
jobs:
process-pull-requests:
runs-on: ubuntu-latest
steps:
- name: Checkout Python Script
uses: actions/checkout@v4
with:
repository: alexlebens/workflow-scripts
ref: main
token: ${{ secrets.BOT_TOKEN }}
path: scripts
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Install dependencies
run: pip install requests
- name: Run Script
env:
INSTANCE_URL: ${{ vars.INSTANCE_URL }}
REPOSITORY: ${{ gitea.repository }}
TOKEN: ${{ secrets.BOT_TOKEN }}
STALE_DAYS: 3
STALE_TAG: 'stale'
REQUIRED_TAG: 'automerge'
run: python ./scripts/scripts/process-pull-requests.py

View File

@@ -13,7 +13,7 @@ on:
jobs:
renovate:
runs-on: ubuntu-latest
container: ghcr.io/renovatebot/renovate:40
container: ghcr.io/renovatebot/renovate:41
steps:
- name: Checkout
uses: actions/checkout@v4

View File

@@ -1,75 +0,0 @@
name: tag-old-issues
on:
schedule:
- cron: '@daily'
jobs:
tag-old-issues:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Tag Old Issues
env:
BOT_TOKEN: ${{ secrets.BOT_TOKEN }}
INSTANCE_URL: ${{ vars.INSTANCE_URL }}
REPO_OWNER: ${{ github.repository_owner }}
REPO_NAME: ${{ github.repository_name }}
TAG_NAME: 'stale'
DAYS_OLD: 3
EXCLUDE_TAG_NAME: ''
REQUIRED_TAG: 'automerge'
run: |
# Install necessary tools
apt-get update && apt-get install -y jq curl
# --- Conditionally build the API URL ---
API_URL="${GITEA_INSTANCE_URL}/api/v1/repos/${REPO_OWNER}/${REPO_NAME}/issues?state=open"
if [[ -n "${REQUIRED_TAG}" ]]; then
echo "Filtering for issues with the required tag: ${REQUIRED_TAG}"
# URL-encode the tag to handle special characters
ENCODED_TAG=$(jq -s -R -r @uri <<< "${REQUIRED_TAG}")
API_URL="${API_URL}&labels=${ENCODED_TAG}"
else
echo "No required tag specified. Checking all open issues."
fi
# Fetch issues using the constructed URL
ISSUES=$(curl -s -X GET \
-H "Authorization: token ${BOT_TOKEN}" \
-H "Accept: application/json" \
"${API_URL}")
# Calculate the date ${DAYS_OLD} days ago in ISO 8601 format
OLDER_THAN_DATE=$(date -d "-${DAYS_OLD} days" -u +"%Y-%m-%dT%H:%M:%SZ")
# Filter issues older than the specified date and without the exclusion tag
echo "$ISSUES" | jq -c '.[] | select(.created_at < "'"$OLDER_THAN_DATE"'")' | while read -r issue; do
ISSUE_NUMBER=$(echo "$issue" | jq -r '.number')
LABELS=$(echo "$issue" | jq -r '.labels[].name')
# Check if the issue has the exclusion tag
if ! echo "$LABELS" | grep -q -w "${EXCLUDE_TAG_NAME}"; then
echo "Tagging issue #${ISSUE_NUMBER} as ${TAG_NAME}"
# Get existing labels for the issue
EXISTING_LABELS=$(curl -s -X GET \
-H "Authorization: token ${BOT_TOKEN}" \
-H "Accept: application/json" \
"${INSTANCE_URL}/api/v1/repos/${REPO_OWNER}/${REPO_NAME}/issues/${ISSUE_NUMBER}/labels" | jq -r '.[].name')
# Add the new tag to the list of existing labels
NEW_LABELS=$(echo -e "${EXISTING_LABELS}\n${TAG_NAME}" | sort -u | jq -R -s -c 'split("\n") | map(select(length > 0))')
# Update the issue with the new set of labels
curl -s -X PUT \
-H "Authorization: token ${BOT_TOKEN}" \
-H "Content-Type: application/json" \
-d "{\"labels\": $(echo "$NEW_LABELS" | jq -r 'map(select(. != ""))')}" \
"${INSTANCE_URL}/api/v1/repos/${REPO_OWNER}/${REPO_NAME}/issues/${ISSUE_NUMBER}/labels"
else
echo "Skipping issue #${ISSUE_NUMBER} because it has the '${EXCLUDE_TAG_NAME}' tag."
fi
done

View File

@@ -24,7 +24,7 @@ jobs:
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 22.16.x
node-version: 22.17.x
cache: pnpm
- name: Install Dependencies

View File

@@ -1,7 +1,7 @@
ARG REGISTRY=docker.io
FROM ${REGISTRY}/node:22.16.0-alpine3.22 AS base
FROM ${REGISTRY}/node:22.17.0-alpine3.22 AS base
LABEL version="0.8.11"
LABEL version="0.8.13"
LABEL description="Astro based personal website"
ENV PNPM_HOME="/pnpm"

View File

@@ -1,7 +1,7 @@
{
"name": "site-profile",
"type": "module",
"version": "0.8.11",
"version": "0.8.13",
"private": true,
"scripts": {
"dev": "astro dev",
@@ -17,10 +17,10 @@
"@astrojs/node": "^9.2.2",
"@astrojs/react": "^4.3.0",
"@astrojs/rss": "^4.0.12",
"@directus/sdk": "^19.1.0",
"@directus/sdk": "^20.0.0",
"@tailwindcss/postcss": "^4.1.8",
"@tailwindcss/vite": "^4.1.8",
"astro": "^5.9.2",
"astro": "^5.10.1",
"framer-motion": "^12.16.0",
"react": "^19.1.0",
"react-dom": "^19.1.0",
@@ -31,13 +31,13 @@
},
"devDependencies": {
"@tailwindcss/typography": "^0.5.16",
"@typescript-eslint/parser": "8.34.0",
"eslint": "9.28.0",
"@typescript-eslint/parser": "8.36.0",
"eslint": "9.30.1",
"eslint-config-prettier": "10.1.5",
"eslint-plugin-astro": "1.3.1",
"prettier": "^3.5.3",
"prettier-plugin-astro": "^0.14.1",
"prettier-plugin-tailwindcss": "^0.6.12",
"typescript-eslint": "8.34.0"
"typescript-eslint": "8.36.0"
}
}

2097
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,10 +1,40 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["config:recommended", "mergeConfidence:all-badges", ":rebaseStalePrs"],
"timezone": "US/Central",
"schedule": ["* */1 * * *"],
"labels": [],
"prHourlyLimit": 0,
"prConcurrentLimit": 0,
"packageRules": []
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:recommended",
"mergeConfidence:all-badges",
":rebaseStalePrs"
],
"timezone": "US/Central",
"labels": [],
"prHourlyLimit": 0,
"prConcurrentLimit": 0,
"packageRules": [
{
"description": "Label dependency",
"matchDatasources": [
"npm"
],
"addLabels": [
"dependency"
],
"automerge": false,
"minimumReleaseAge": "1 days"
},
{
"description": "Automerge dependency patch",
"matchDatasources": [
"npm"
],
"matchUpdateTypes": [
"patch"
],
"addLabels": [
"dependency",
"automerge"
],
"automerge": true,
"minimumReleaseAge": "1 days"
}
]
}

View File

@@ -137,114 +137,113 @@ const socialLinks = [
</div>
</div>
<!-- Bottom section -->
<div class="theme-transition-all mt-12 border-t border-zinc-200 pt-8 dark:border-zinc-800">
<div class="flex flex-col items-center justify-between gap-4 md:flex-row">
<p class="theme-transition-color text-sm text-zinc-600 dark:text-zinc-400">
&copy; {currentYear} All rights reserved.
</p>
<!-- Bottom section -->
<div class="theme-transition-all mt-12 border-t border-zinc-200 pt-8 dark:border-zinc-800">
<div class="flex flex-col items-center justify-between gap-4 md:flex-row">
<p class="theme-transition-color text-sm text-zinc-600 dark:text-zinc-400">
&copy; {currentYear} All rights reserved.
</p>
<div class="flex items-center space-x-2">
<span class="theme-transition-color text-xs text-zinc-500 dark:text-zinc-400"
>Built with</span
<div class="flex items-center space-x-2">
<span class="theme-transition-color text-xs text-zinc-500 dark:text-zinc-400"
>Built with</span
>
<a
href="https://astro.build"
target="_blank"
rel="noopener noreferrer"
class="group inline-flex items-center text-xs text-zinc-600 transition-colors hover:text-zinc-900 dark:text-zinc-400 dark:hover:text-zinc-100"
>
<svg
class="mr-1 h-4 w-4 text-[#FF5D01] group-hover:animate-pulse"
viewBox="0 0 36 36"
fill="none"
>
<a
href="https://astro.build"
target="_blank"
rel="noopener noreferrer"
class="group inline-flex items-center text-xs text-zinc-600 transition-colors hover:text-zinc-900 dark:text-zinc-400 dark:hover:text-zinc-100"
>
<svg
class="mr-1 h-4 w-4 text-[#FF5D01] group-hover:animate-pulse"
viewBox="0 0 36 36"
fill="none"
>
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M8.833 22.958c.622-1.185 1.832-1.918 3.18-1.918 2.292 0 4.145 1.86 4.145 4.153 0 1.34-.626 2.54-1.601 3.303 1.223-1.299 1.97-3.048 1.97-4.971 0-3.994-3.243-7.233-7.242-7.233-2.818 0-5.26 1.6-6.469 3.933.78-2.912 3.428-5.06 6.577-5.06 3.75 0 6.79 3.035 6.79 6.78 0 2.606-1.468 4.868-3.616 6.002a4.163 4.163 0 0 0 2.285-3.724c0-2.293-1.853-4.153-4.145-4.153-1.348 0-2.558.733-3.18 1.918l1.306-3.03Z"
fill="currentColor"></path>
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M22.155 12.056c-.622 1.185-1.832 1.918-3.18 1.918-2.292 0-4.145-1.86-4.145-4.153 0-1.34.626-2.54 1.601-3.303-1.223 1.299-1.97 3.048-1.97 4.971 0 3.994 3.243 7.233 7.242 7.233 2.818 0 5.26-1.6 6.469-3.933-.78 2.912-3.428 5.06-6.577 5.06-3.75 0-6.79-3.035-6.79-6.78 0-2.606 1.468-4.868 3.616-6.002a4.163 4.163 0 0 0-2.285 3.724c0 2.293 1.853 4.153 4.145 4.153 1.348 0 2.558-.733 3.18-1.918l-1.306 3.03Z"
fill="currentColor"></path>
</svg>
<span class="relative">
Astro
<span
class="absolute bottom-0 left-0 h-0.5 w-0 bg-[#FF5D01] transition-all duration-300 group-hover:w-full"
></span>
</span>
</a>
</div>
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M8.833 22.958c.622-1.185 1.832-1.918 3.18-1.918 2.292 0 4.145 1.86 4.145 4.153 0 1.34-.626 2.54-1.601 3.303 1.223-1.299 1.97-3.048 1.97-4.971 0-3.994-3.243-7.233-7.242-7.233-2.818 0-5.26 1.6-6.469 3.933.78-2.912 3.428-5.06 6.577-5.06 3.75 0 6.79 3.035 6.79 6.78 0 2.606-1.468 4.868-3.616 6.002a4.163 4.163 0 0 0 2.285-3.724c0-2.293-1.853-4.153-4.145-4.153-1.348 0-2.558.733-3.18 1.918l1.306-3.03Z"
fill="currentColor"></path>
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M22.155 12.056c-.622 1.185-1.832 1.918-3.18 1.918-2.292 0-4.145-1.86-4.145-4.153 0-1.34.626-2.54 1.601-3.303-1.223 1.299-1.97 3.048-1.97 4.971 0 3.994 3.243 7.233 7.242 7.233 2.818 0 5.26-1.6 6.469-3.933-.78 2.912-3.428 5.06-6.577 5.06-3.75 0-6.79-3.035-6.79-6.78 0-2.606 1.468-4.868 3.616-6.002a4.163 4.163 0 0 0-2.285 3.724c0 2.293 1.853 4.153 4.145 4.153 1.348 0 2.558-.733 3.18-1.918l-1.306 3.03Z"
fill="currentColor"></path>
</svg>
<span class="relative">
Astro
<span
class="absolute bottom-0 left-0 h-0.5 w-0 bg-[#FF5D01] transition-all duration-300 group-hover:w-full"
></span>
</span>
</a>
</div>
</div>
</div>
</div>
</div>
<style>
.theme-transition-all {
transition-property: background-color, border-color, color, fill, stroke;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 300ms;
}
.theme-transition-color {
transition-property: color, fill, stroke;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 300ms;
}
.theme-transition-bg {
transition-property: background-color;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 300ms;
}
@keyframes pulse {
0%,
100% {
opacity: 1;
transform: scale(1);
}
50% {
opacity: 0.7;
transform: scale(1.2);
}
}
@keyframes float-slow {
0%,
100% {
transform: translateY(0) translateX(0);
}
25% {
transform: translateY(-10px) translateX(10px);
}
50% {
transform: translateY(-5px) translateX(-5px);
}
75% {
transform: translateY(10px) translateX(5px);
}
}
.animate-pulse {
animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}
.animate-float-slow {
animation: float-slow 20s ease-in-out infinite;
}
.animation-delay-1000 {
animation-delay: 1s;
}
.animation-delay-2000 {
animation-delay: 2s;
}
</style>
</footer>
<style>
.theme-transition-all {
transition-property: background-color, border-color, color, fill, stroke;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 300ms;
}
.theme-transition-color {
transition-property: color, fill, stroke;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 300ms;
}
.theme-transition-bg {
transition-property: background-color;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 300ms;
}
@keyframes pulse {
0%,
100% {
opacity: 1;
transform: scale(1);
}
50% {
opacity: 0.7;
transform: scale(1.2);
}
}
@keyframes float-slow {
0%,
100% {
transform: translateY(0) translateX(0);
}
25% {
transform: translateY(-10px) translateX(10px);
}
50% {
transform: translateY(-5px) translateX(-5px);
}
75% {
transform: translateY(10px) translateX(5px);
}
}
.animate-pulse {
animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}
.animate-float-slow {
animation: float-slow 20s ease-in-out infinite;
}
.animation-delay-1000 {
animation-delay: 1s;
}
.animation-delay-2000 {
animation-delay: 2s;
}
</style>

View File

@@ -120,15 +120,12 @@ const skills = await directus.request(
<div class="slider-track animate-slide flex">
{
skills.map((skill, index) => (
<div
class="skill-card theme-transition-element mx-2 min-w-[220px] transform rounded-xl border border-zinc-200 bg-white transition-all duration-300 hover:-translate-y-2 hover:scale-105 hover:border-zinc-300 hover:shadow-xl sm:mx-4 sm:min-w-[280px] dark:border-zinc-700 dark:bg-zinc-800/50 dark:hover:border-zinc-600"
>
<div class="skill-card theme-transition-element mx-2 min-w-[220px] transform rounded-xl border border-zinc-200 bg-white transition-all duration-300 hover:-translate-y-2 hover:scale-105 hover:border-zinc-300 hover:shadow-xl sm:mx-4 sm:min-w-[280px] dark:border-zinc-700 dark:bg-zinc-800/50 dark:hover:border-zinc-600">
<div class="p-4 sm:p-6">
<div class="mb-4 flex items-center justify-between sm:mb-6">
<div class="flex items-center gap-2 sm:gap-4">
<div class="theme-transition-bg theme-transition-color flex h-8 w-8 transform items-center justify-center rounded-lg bg-zinc-100 text-zinc-800 transition-transform group-hover:rotate-12 sm:h-12 sm:w-12 dark:bg-zinc-800 dark:text-zinc-200">
<skill.icon
/>
<skill.icon />
</div>
<h3 class="theme-transition-color text-base font-semibold text-zinc-900 sm:text-xl dark:text-zinc-100">
{skill.title}