From 1e44e329ba60e0a5a819cd4c3b0534b37857b7db Mon Sep 17 00:00:00 2001 From: Aidan Date: Sat, 10 May 2025 05:00:25 -0400 Subject: [PATCH 1/5] chore: bump --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 0f7f7a3..15c0130 100644 --- a/package.json +++ b/package.json @@ -32,14 +32,14 @@ }, "devDependencies": { "@eslint/eslintrc": "^3.3.1", - "@tailwindcss/postcss": "^4.1.5", + "@tailwindcss/postcss": "^4.1.6", "@types/node": "^20.17.46", "@types/react": "^19.1.3", "@types/react-dom": "^19.1.3", "eslint": "^9.26.0", "eslint-config-next": "15.1.3", "postcss": "^8.5.3", - "tailwindcss": "^4.1.5", + "tailwindcss": "^4.1.6", "typescript": "^5.8.3" }, "trustedDependencies": [ From efd9ecfa212b0a472d8c0cb230f52b9cc2dbb81d Mon Sep 17 00:00:00 2001 From: Aidan Date: Sat, 10 May 2025 05:02:12 -0400 Subject: [PATCH 2/5] func: add docs page + overview and mental health pages --- app/docs/page.tsx | 71 ++++++++++++++++++++++++++ components/docs/Docs.tsx | 22 ++++++++ components/docs/pages/MentalHealth.tsx | 10 ++++ components/docs/pages/Overview.tsx | 35 +++++++++++++ 4 files changed, 138 insertions(+) create mode 100644 app/docs/page.tsx create mode 100644 components/docs/Docs.tsx create mode 100644 components/docs/pages/MentalHealth.tsx create mode 100644 components/docs/pages/Overview.tsx diff --git a/app/docs/page.tsx b/app/docs/page.tsx new file mode 100644 index 0000000..a607a4d --- /dev/null +++ b/app/docs/page.tsx @@ -0,0 +1,71 @@ +"use client" + +import Header from '@/components/Header' +import Footer from '@/components/Footer' +import { IoDocumentTextOutline } from "react-icons/io5" +import { Docs, Doc } from '@/components/docs/Docs' +import { useState, useEffect } from 'react' +import { Loader2 } from 'lucide-react' + +export default function DocsPage() { + const [selectedDoc, setSelectedDoc] = useState(null) + const [isClient, setIsClient] = useState(false) + + useEffect(() => { + setSelectedDoc(Docs.Overview) + setIsClient(true) + }, []) + + return ( +
+
+
+
+
+ +

+ Docs +

+
+ + An organized collection of advice. + +
+
+
+

Concepts

+
+ {Object.values(Docs).map((doc: Doc) => ( +
setSelectedDoc(doc)} + > +
+ {doc.icon} + {doc.title} +
+
+ ))} +
+
+ +
+ {isClient && selectedDoc ? ( + selectedDoc.component + ) : ( +
+ + Loading... +
+ )} +
+
+
+
+
+ ) +} \ No newline at end of file diff --git a/components/docs/Docs.tsx b/components/docs/Docs.tsx new file mode 100644 index 0000000..a80eaa9 --- /dev/null +++ b/components/docs/Docs.tsx @@ -0,0 +1,22 @@ +import { House, Brain } from "lucide-react" +import { Overview } from "@/components/docs/pages/Overview" +import { MentalHealth } from "@/components/docs/pages/MentalHealth" + +export interface Doc { + title: string + component: React.ReactNode + icon: React.ReactNode +} + +export const Docs: Record = { + Overview: { + "title": "Overview", + "component": , + "icon": + }, + MentalHealth: { + "title": "Mental Health", + "component": , + "icon": + } +} \ No newline at end of file diff --git a/components/docs/pages/MentalHealth.tsx b/components/docs/pages/MentalHealth.tsx new file mode 100644 index 0000000..f23fae0 --- /dev/null +++ b/components/docs/pages/MentalHealth.tsx @@ -0,0 +1,10 @@ +export function MentalHealth() { + return ( +
+

Mental Health

+

+ --- +

+
+ ) +} \ No newline at end of file diff --git a/components/docs/pages/Overview.tsx b/components/docs/pages/Overview.tsx new file mode 100644 index 0000000..24be2da --- /dev/null +++ b/components/docs/pages/Overview.tsx @@ -0,0 +1,35 @@ +import Link from "@/components/objects/Link" + +export function Overview() { + return ( +
+
+

+ Overview +

+

+ It's time to get a cup of coffee! +

+
+
+

Docs is the space where I share my thoughts and advice on a variety of topics. All of the content is Unlicensed, meaning you are free to use it however you please. All content on this website is not legal, medical, financial, or professional advice.

+
+

+ Reading +

+

+ While reading, I hope you will consider the following: +

+
    +
  • + Even if your opinion is different than mine, that does not mean you're wrong. +
  • +
  • + Take all advice with a grain of salt; nobody lives the same life as you do. +
  • +
+
+
+
+ ) +} \ No newline at end of file From 2bc428c576234128b969a3c898dacc9ab2b7d91a Mon Sep 17 00:00:00 2001 From: Aidan Date: Sat, 10 May 2025 05:18:22 -0400 Subject: [PATCH 3/5] chore: bump+push lockfile --- package-lock.json | 307 ++++++++++++++++++++++++++++++++++++---------- package.json | 4 +- 2 files changed, 243 insertions(+), 68 deletions(-) diff --git a/package-lock.json b/package-lock.json index c1e921f..6572658 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,14 +31,14 @@ }, "devDependencies": { "@eslint/eslintrc": "^3.3.1", - "@tailwindcss/postcss": "^4.1.5", + "@tailwindcss/postcss": "^4.1.6", "@types/node": "^20.17.46", "@types/react": "^19.1.3", "@types/react-dom": "^19.1.3", "eslint": "^9.26.0", "eslint-config-next": "15.1.3", "postcss": "^8.5.3", - "tailwindcss": "^4.1.5", + "tailwindcss": "^4.1.6", "typescript": "^5.8.3" } }, @@ -55,6 +55,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@babel/runtime": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.1.tgz", @@ -736,6 +750,72 @@ "url": "https://opencollective.com/libvips" } }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, "node_modules/@modelcontextprotocol/sdk": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.1.tgz", @@ -1088,46 +1168,54 @@ } }, "node_modules/@tailwindcss/node": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.5.tgz", - "integrity": "sha512-CBhSWo0vLnWhXIvpD0qsPephiaUYfHUX3U9anwDaHZAeuGpTiB3XmsxPAN6qX7bFhipyGBqOa1QYQVVhkOUGxg==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.6.tgz", + "integrity": "sha512-ed6zQbgmKsjsVvodAS1q1Ld2BolEuxJOSyyNc+vhkjdmfNUDCmQnlXBfQkHrlzNmslxHsQU/bFmzcEbv4xXsLg==", "dev": true, "license": "MIT", "dependencies": { + "@ampproject/remapping": "^2.3.0", "enhanced-resolve": "^5.18.1", "jiti": "^2.4.2", "lightningcss": "1.29.2", - "tailwindcss": "4.1.5" + "magic-string": "^0.30.17", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.6" } }, "node_modules/@tailwindcss/oxide": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.5.tgz", - "integrity": "sha512-1n4br1znquEvyW/QuqMKQZlBen+jxAbvyduU87RS8R3tUSvByAkcaMTkJepNIrTlYhD+U25K4iiCIxE6BGdRYA==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.6.tgz", + "integrity": "sha512-0bpEBQiGx+227fW4G0fLQ8vuvyy5rsB1YIYNapTq3aRsJ9taF3f5cCaovDjN5pUGKKzcpMrZst/mhNaKAPOHOA==", "dev": true, + "hasInstallScript": true, "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.4", + "tar": "^7.4.3" + }, "engines": { "node": ">= 10" }, "optionalDependencies": { - "@tailwindcss/oxide-android-arm64": "4.1.5", - "@tailwindcss/oxide-darwin-arm64": "4.1.5", - "@tailwindcss/oxide-darwin-x64": "4.1.5", - "@tailwindcss/oxide-freebsd-x64": "4.1.5", - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.5", - "@tailwindcss/oxide-linux-arm64-gnu": "4.1.5", - "@tailwindcss/oxide-linux-arm64-musl": "4.1.5", - "@tailwindcss/oxide-linux-x64-gnu": "4.1.5", - "@tailwindcss/oxide-linux-x64-musl": "4.1.5", - "@tailwindcss/oxide-wasm32-wasi": "4.1.5", - "@tailwindcss/oxide-win32-arm64-msvc": "4.1.5", - "@tailwindcss/oxide-win32-x64-msvc": "4.1.5" + "@tailwindcss/oxide-android-arm64": "4.1.6", + "@tailwindcss/oxide-darwin-arm64": "4.1.6", + "@tailwindcss/oxide-darwin-x64": "4.1.6", + "@tailwindcss/oxide-freebsd-x64": "4.1.6", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.6", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.6", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.6", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.6", + "@tailwindcss/oxide-linux-x64-musl": "4.1.6", + "@tailwindcss/oxide-wasm32-wasi": "4.1.6", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.6", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.6" } }, "node_modules/@tailwindcss/oxide-android-arm64": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.5.tgz", - "integrity": "sha512-LVvM0GirXHED02j7hSECm8l9GGJ1RfgpWCW+DRn5TvSaxVsv28gRtoL4aWKGnXqwvI3zu1GABeDNDVZeDPOQrw==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.6.tgz", + "integrity": "sha512-VHwwPiwXtdIvOvqT/0/FLH/pizTVu78FOnI9jQo64kSAikFSZT7K4pjyzoDpSMaveJTGyAKvDjuhxJxKfmvjiQ==", "cpu": [ "arm64" ], @@ -1142,9 +1230,9 @@ } }, "node_modules/@tailwindcss/oxide-darwin-arm64": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.5.tgz", - "integrity": "sha512-//TfCA3pNrgnw4rRJOqavW7XUk8gsg9ddi8cwcsWXp99tzdBAZW0WXrD8wDyNbqjW316Pk2hiN/NJx/KWHl8oA==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.6.tgz", + "integrity": "sha512-weINOCcqv1HVBIGptNrk7c6lWgSFFiQMcCpKM4tnVi5x8OY2v1FrV76jwLukfT6pL1hyajc06tyVmZFYXoxvhQ==", "cpu": [ "arm64" ], @@ -1159,9 +1247,9 @@ } }, "node_modules/@tailwindcss/oxide-darwin-x64": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.5.tgz", - "integrity": "sha512-XQorp3Q6/WzRd9OalgHgaqgEbjP3qjHrlSUb5k1EuS1Z9NE9+BbzSORraO+ecW432cbCN7RVGGL/lSnHxcd+7Q==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.6.tgz", + "integrity": "sha512-3FzekhHG0ww1zQjQ1lPoq0wPrAIVXAbUkWdWM8u5BnYFZgb9ja5ejBqyTgjpo5mfy0hFOoMnMuVDI+7CXhXZaQ==", "cpu": [ "x64" ], @@ -1176,9 +1264,9 @@ } }, "node_modules/@tailwindcss/oxide-freebsd-x64": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.5.tgz", - "integrity": "sha512-bPrLWbxo8gAo97ZmrCbOdtlz/Dkuy8NK97aFbVpkJ2nJ2Jo/rsCbu0TlGx8joCuA3q6vMWTSn01JY46iwG+clg==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.6.tgz", + "integrity": "sha512-4m5F5lpkBZhVQJq53oe5XgJ+aFYWdrgkMwViHjRsES3KEu2m1udR21B1I77RUqie0ZYNscFzY1v9aDssMBZ/1w==", "cpu": [ "x64" ], @@ -1193,9 +1281,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.5.tgz", - "integrity": "sha512-1gtQJY9JzMAhgAfvd/ZaVOjh/Ju/nCoAsvOVJenWZfs05wb8zq+GOTnZALWGqKIYEtyNpCzvMk+ocGpxwdvaVg==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.6.tgz", + "integrity": "sha512-qU0rHnA9P/ZoaDKouU1oGPxPWzDKtIfX7eOGi5jOWJKdxieUJdVV+CxWZOpDWlYTd4N3sFQvcnVLJWJ1cLP5TA==", "cpu": [ "arm" ], @@ -1210,9 +1298,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.5.tgz", - "integrity": "sha512-dtlaHU2v7MtdxBXoqhxwsWjav7oim7Whc6S9wq/i/uUMTWAzq/gijq1InSgn2yTnh43kR+SFvcSyEF0GCNu1PQ==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.6.tgz", + "integrity": "sha512-jXy3TSTrbfgyd3UxPQeXC3wm8DAgmigzar99Km9Sf6L2OFfn/k+u3VqmpgHQw5QNfCpPe43em6Q7V76Wx7ogIQ==", "cpu": [ "arm64" ], @@ -1227,9 +1315,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-arm64-musl": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.5.tgz", - "integrity": "sha512-fg0F6nAeYcJ3CriqDT1iVrqALMwD37+sLzXs8Rjy8Z1ZHshJoYceodfyUwGJEsQoTyWbliFNRs2wMQNXtT7MVA==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.6.tgz", + "integrity": "sha512-8kjivE5xW0qAQ9HX9reVFmZj3t+VmljDLVRJpVBEoTR+3bKMnvC7iLcoSGNIUJGOZy1mLVq7x/gerVg0T+IsYw==", "cpu": [ "arm64" ], @@ -1244,9 +1332,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-x64-gnu": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.5.tgz", - "integrity": "sha512-SO+F2YEIAHa1AITwc8oPwMOWhgorPzzcbhWEb+4oLi953h45FklDmM8dPSZ7hNHpIk9p/SCZKUYn35t5fjGtHA==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.6.tgz", + "integrity": "sha512-A4spQhwnWVpjWDLXnOW9PSinO2PTKJQNRmL/aIl2U/O+RARls8doDfs6R41+DAXK0ccacvRyDpR46aVQJJCoCg==", "cpu": [ "x64" ], @@ -1261,9 +1349,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-x64-musl": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.5.tgz", - "integrity": "sha512-6UbBBplywkk/R+PqqioskUeXfKcBht3KU7juTi1UszJLx0KPXUo10v2Ok04iBJIaDPkIFkUOVboXms5Yxvaz+g==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.6.tgz", + "integrity": "sha512-YRee+6ZqdzgiQAHVSLfl3RYmqeeaWVCk796MhXhLQu2kJu2COHBkqlqsqKYx3p8Hmk5pGCQd2jTAoMWWFeyG2A==", "cpu": [ "x64" ], @@ -1278,9 +1366,9 @@ } }, "node_modules/@tailwindcss/oxide-wasm32-wasi": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.5.tgz", - "integrity": "sha512-hwALf2K9FHuiXTPqmo1KeOb83fTRNbe9r/Ixv9ZNQ/R24yw8Ge1HOWDDgTdtzntIaIUJG5dfXCf4g9AD4RiyhQ==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.6.tgz", + "integrity": "sha512-qAp4ooTYrBQ5pk5jgg54/U1rCJ/9FLYOkkQ/nTE+bVMseMfB6O7J8zb19YTpWuu4UdfRf5zzOrNKfl6T64MNrQ==", "bundleDependencies": [ "@napi-rs/wasm-runtime", "@emnapi/core", @@ -1308,9 +1396,9 @@ } }, "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.5.tgz", - "integrity": "sha512-oDKncffWzaovJbkuR7/OTNFRJQVdiw/n8HnzaCItrNQUeQgjy7oUiYpsm9HUBgpmvmDpSSbGaCa2Evzvk3eFmA==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.6.tgz", + "integrity": "sha512-nqpDWk0Xr8ELO/nfRUDjk1pc9wDJ3ObeDdNMHLaymc4PJBWj11gdPCWZFKSK2AVKjJQC7J2EfmSmf47GN7OuLg==", "cpu": [ "arm64" ], @@ -1325,9 +1413,9 @@ } }, "node_modules/@tailwindcss/oxide-win32-x64-msvc": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.5.tgz", - "integrity": "sha512-WiR4dtyrFdbb+ov0LK+7XsFOsG+0xs0PKZKkt41KDn9jYpO7baE3bXiudPVkTqUEwNfiglCygQHl2jklvSBi7Q==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.6.tgz", + "integrity": "sha512-5k9xF33xkfKpo9wCvYcegQ21VwIBU1/qEbYlVukfEIyQbEA47uK8AAwS7NVjNE3vHzcmxMYwd0l6L4pPjjm1rQ==", "cpu": [ "x64" ], @@ -1342,17 +1430,17 @@ } }, "node_modules/@tailwindcss/postcss": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.1.5.tgz", - "integrity": "sha512-5lAC2/pzuyfhsFgk6I58HcNy6vPK3dV/PoPxSDuOTVbDvCddYHzHiJZZInGIY0venvzzfrTEUAXJFULAfFmObg==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.1.6.tgz", + "integrity": "sha512-ELq+gDMBuRXPJlpE3PEen+1MhnHAQQrh2zF0dI1NXOlEWfr2qWf2CQdr5jl9yANv8RErQaQ2l6nIFO9OSCVq/g==", "dev": true, "license": "MIT", "dependencies": { "@alloc/quick-lru": "^5.2.0", - "@tailwindcss/node": "4.1.5", - "@tailwindcss/oxide": "4.1.5", + "@tailwindcss/node": "4.1.6", + "@tailwindcss/oxide": "4.1.6", "postcss": "^8.4.41", - "tailwindcss": "4.1.5" + "tailwindcss": "4.1.6" } }, "node_modules/@tybys/wasm-util": { @@ -2362,6 +2450,16 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, "node_modules/class-variance-authority": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", @@ -4893,6 +4991,16 @@ "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -4996,6 +5104,45 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minizlib": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz", + "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -6371,9 +6518,9 @@ } }, "node_modules/tailwindcss": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.5.tgz", - "integrity": "sha512-nYtSPfWGDiWgCkwQG/m+aX83XCwf62sBgg3bIlNiiOcggnS1x3uVRDAuyelBFL+vJdOPPCGElxv9DjHJjRHiVA==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.6.tgz", + "integrity": "sha512-j0cGLTreM6u4OWzBeLBpycK0WIh8w7kSwcUsQZoGLHZ7xDTdM69lN64AgoIEEwFi0tnhs4wSykUa5YWxAzgFYg==", "license": "MIT" }, "node_modules/tailwindcss-animate": { @@ -6395,6 +6542,24 @@ "node": ">=6" } }, + "node_modules/tar": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "dev": true, + "license": "ISC", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/tinyglobby": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz", @@ -6844,6 +7009,16 @@ "dev": true, "license": "ISC" }, + "node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index 0f7f7a3..15c0130 100644 --- a/package.json +++ b/package.json @@ -32,14 +32,14 @@ }, "devDependencies": { "@eslint/eslintrc": "^3.3.1", - "@tailwindcss/postcss": "^4.1.5", + "@tailwindcss/postcss": "^4.1.6", "@types/node": "^20.17.46", "@types/react": "^19.1.3", "@types/react-dom": "^19.1.3", "eslint": "^9.26.0", "eslint-config-next": "15.1.3", "postcss": "^8.5.3", - "tailwindcss": "^4.1.5", + "tailwindcss": "^4.1.6", "typescript": "^5.8.3" }, "trustedDependencies": [ From 20bcffed50fe2bc8911b2d52a6da8ff35de06e01 Mon Sep 17 00:00:00 2001 From: Aidan Date: Sat, 10 May 2025 05:19:58 -0400 Subject: [PATCH 4/5] [m] chore: lint --- components/docs/pages/Overview.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/docs/pages/Overview.tsx b/components/docs/pages/Overview.tsx index 24be2da..73e5cd8 100644 --- a/components/docs/pages/Overview.tsx +++ b/components/docs/pages/Overview.tsx @@ -8,7 +8,7 @@ export function Overview() { Overview

- It's time to get a cup of coffee! + It's time to get a cup of coffee!

@@ -22,7 +22,7 @@ export function Overview() {

  • - Even if your opinion is different than mine, that does not mean you're wrong. + Even if your opinion is different than mine, that does not mean you're wrong.
  • Take all advice with a grain of salt; nobody lives the same life as you do. From db86ce3277a671f615f52768ffcf2d761dc4bf47 Mon Sep 17 00:00:00 2001 From: Aidan Date: Tue, 8 Jul 2025 02:21:27 -0400 Subject: [PATCH 5/5] bug fixes, cleanup unmaintained pages, content changes, design improvements --- app/about/page.tsx | 93 +++++-- app/device/bonito/page.tsx | 200 ++++++++++++++ app/device/cheetah/page.tsx | 259 ++++++++++++++++++ app/music/page.tsx | 26 -- app/page.tsx | 11 - app/phone/page.tsx | 257 ----------------- app/time-periods/early-summer-2024/page.tsx | 15 - .../what-was-going-on/page.tsx | 15 - app/time-periods/late-summer-2024/page.tsx | 15 - .../what-was-going-on/page.tsx | 15 - components/Header.tsx | 26 +- components/objects/MusicInfo.tsx | 31 --- components/objects/RandomFooterMsg.tsx | 32 ++- .../early-summer-2024/WhatWasGoingOn.tsx | 27 -- .../late-summer-2024/WhatWasGoingOn.tsx | 26 -- components/widgets/FeaturedRepos.tsx | 19 +- components/widgets/Music.tsx | 127 --------- public/data/featured.json | 42 +-- public/data/music.json | 56 ---- public/img/bonito.png | Bin 0 -> 42345 bytes public/locales/en-US.json | 36 +-- 21 files changed, 614 insertions(+), 714 deletions(-) create mode 100644 app/device/bonito/page.tsx create mode 100644 app/device/cheetah/page.tsx delete mode 100644 app/music/page.tsx delete mode 100644 app/phone/page.tsx delete mode 100644 app/time-periods/early-summer-2024/page.tsx delete mode 100644 app/time-periods/early-summer-2024/what-was-going-on/page.tsx delete mode 100644 app/time-periods/late-summer-2024/page.tsx delete mode 100644 app/time-periods/late-summer-2024/what-was-going-on/page.tsx delete mode 100644 components/objects/MusicInfo.tsx delete mode 100644 components/pages/time-periods/early-summer-2024/WhatWasGoingOn.tsx delete mode 100644 components/pages/time-periods/late-summer-2024/WhatWasGoingOn.tsx delete mode 100644 components/widgets/Music.tsx delete mode 100644 public/data/music.json create mode 100644 public/img/bonito.png diff --git a/app/about/page.tsx b/app/about/page.tsx index f0b4fed..152572a 100644 --- a/app/about/page.tsx +++ b/app/about/page.tsx @@ -33,12 +33,12 @@ export default function About() {
    -
    +
    +

    + {t('about.title')} +

    -

    - {t('about.title')} -

    {mainStrings.map((section, index) => { @@ -60,15 +60,15 @@ export default function About() {

    {mainSections[index]}

    {section.map((text, index) => (

    - {text.split(/(ihatenodejs|LibreCloud Git|aidan)/).map((part, i) => { + {text.split(/(ihatenodejs|p0ntus git|aidan)/).map((part, i) => { if (part === 'ihatenodejs') { - return GitHub + return ihatenodejs } - if (part === 'LibreCloud Git') { - return LibreCloud Git + if (part === 'p0ntus git') { + return p0ntus git } if (part === 'aidan') { - return aidan + return aidan } return part })} @@ -76,17 +76,17 @@ export default function About() { ))} {!imageError && (

    - ihatenodejs's Stats setImageError(true)} loading="eager" priority unoptimized /> - ihatenodejs's Top Languages{mainSections[index]} {Object.entries(section).map(([key, value], index) => (
    -

    {key}

    +

    {key}

    {(value as unknown as string[]).map((text: string, index: number) => (

    - {text.split(/(KernelSU-Next|LineageOS microG)/).map((part, i) => { + {text.split(/(KernelSU-Next|LineageOS 22.2|Android 16|NixOS|Xubuntu)/).map((part, i) => { if (part === 'KernelSU-Next') { return KernelSU-Next } - if (part === 'LineageOS microG') { - return LineageOS microG + if (part === 'LineageOS 22.2') { + return LineageOS 22.2 + } + if (part === 'Android 16') { + return Android 16 + } + if (part === 'NixOS') { + return NixOS + } + if (part === 'Xubuntu') { + return Xubuntu } return part })}

    ))} - {key === "Phone" && ( -
    )}
    ))} @@ -138,12 +153,18 @@ export default function About() {

    {mainSections[index]}

    {section.map((text, index) => (

    - {text.split(/(my Gitea instance|my phone)/).map((part, i) => { - if (part === 'my Gitea instance') { - return my Gitea instance + {text.split(/(my Forgejo server|my phone|AfC|OnlyNano)/).map((part, i) => { + if (part === 'my Forgejo server') { + return my Forgejo server } if (part === 'my phone') { - return my phone + return my phone + } + if (part === 'AfC') { + return AfC + } + if (part === 'OnlyNano') { + return OnlyNano } return part })} @@ -157,9 +178,21 @@ export default function About() {

    {mainSections[index]}

    {section.map((text, index) => (

    - {text.split(/(LibreCloud)/).map((part, i) => { - if (part === 'LibreCloud') { - return LibreCloud + {text.split(/(p0ntus|PontusHub|ABOCN|Kowalski|@KowalskiNodeBot)/).map((part, i) => { + if (part === 'p0ntus') { + return p0ntus + } + if (part === 'PontusHub') { + return PontusHub + } + if (part === 'ABOCN') { + return ABOCN + } + if (part === 'Kowalski') { + return Kowalski + } + if (part === '@KowalskiNodeBot') { + return @KowalskiNodeBot } return part })} diff --git a/app/device/bonito/page.tsx b/app/device/bonito/page.tsx new file mode 100644 index 0000000..cf95b1c --- /dev/null +++ b/app/device/bonito/page.tsx @@ -0,0 +1,200 @@ +import Header from "@/components/Header" +import Footer from "@/components/Footer" +import { + Cpu, + MemoryStick, + HardDrive, + Hash, + Hammer, + Music, + Folder, + Layers, +} from "lucide-react" +import { FaGoogle, FaYoutube } from "react-icons/fa" +import { VscTerminalLinux } from "react-icons/vsc" +import { MdOutlineAndroid } from "react-icons/md" +import { LuPackageOpen } from "react-icons/lu" +import { RiTelegram2Fill } from "react-icons/ri" +import Image from "next/image" +import Link from "@/components/objects/Link" + +export default function Bonito() { + return ( +

    +
    +
    +
    +
    +
    + Google Pixel 3a XL (bonito) +
    +
    +
    +

    + + Pixel 3a XL +

    +

    bonito

    +
    +
    +
    +
    +

    + + Specs +

    +
    +

    + + Chipset: Qualcomm Snapdragon 670 +

    +

    + + Storage: 64GB +

    +

    + + RAM: 4GB +

    +
    +
    +
    +

    + + Modifications +

    +
    +

    + + Kernel Version: + 4.9.337 +

    +

    + + ROM: + + LineageOS 22.2 + +

    +

    + + Root: + + Magisk + +

    +
    +
    +
    +
    +
    +

    + + Apps +

    +
    +

    + + Music: + + Poweramp + +

    +

    + + Files: + + MiXplorer Beta + +

    +

    + + Telegram Client: + + Nekogram + +

    +

    + + YouTube: + + Tubular + +

    +
    +
    +
    +

    + + Modules +

    +
      +
    • + + bindhosts + +
    • +
    • + + Magisk iOS Emoji + +
    • +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + ) +} + diff --git a/app/device/cheetah/page.tsx b/app/device/cheetah/page.tsx new file mode 100644 index 0000000..f6d21e6 --- /dev/null +++ b/app/device/cheetah/page.tsx @@ -0,0 +1,259 @@ +import Header from "@/components/Header" +import Footer from "@/components/Footer" +import { + Cpu, + MemoryStick, + HardDrive, + Hash, + Hammer, + Music, + Folder, + Layers, + SquarePen +} from "lucide-react" +import { FaGoogle, FaYoutube } from "react-icons/fa" +import { VscTerminalLinux } from "react-icons/vsc" +import { MdOutlineAndroid } from "react-icons/md" +import { LuPackageOpen } from "react-icons/lu" +import { RiTelegram2Fill } from "react-icons/ri" +import Image from "next/image" +import Link from "@/components/objects/Link" +import { FaStarHalfStroke, FaStar } from "react-icons/fa6" + +export default function Cheetah() { + return ( +
    +
    +
    +
    +
    +
    + Google Pixel 7 Pro (cheetah) +
    +
    +
    +

    + + Pixel 7 Pro +

    +

    cheetah

    +
    +
    +
    +
    +

    + + Specs +

    +
    +

    + + CPU: Google Tensor G2 +

    +

    + + Storage: 128GB +

    +

    + + RAM: 12GB +

    +
    +
    +
    +

    + + Modifications +

    +
    +

    + + Kernel: + 6.1.129-android14 +

    +

    + + ROM: + + Android 16 QPR1 + +

    +

    + + Root: + + KernelSU-Next + +

    +
    +
    +
    +
    +
    +

    + + Apps +

    +
    +

    + + Music: + + Qobuz + +

    +

    + + Files: + + MiXplorer Beta + +

    +

    + + TG Client: + + AyuGram + +

    +

    + + YouTube: + + ReVanced Extended + +

    +
    +
    +
    +

    + + Modules +

    +
      +
    • + + Tricky Store + +
    • +
    • + + Yurikey Manager + +
    • +
    • + + Shamiko + +
    • +
    • + + LSPosed JingMatrix + +
    • +
    • + + Zygisk Next + +
    • +
    +
    +
    +
    +
    +

    + + Review +

    +
    +

    + Rating: + + + +

    +
    +

    + Coming from a Galaxy A32 5G, the Pixel 7 Pro is a massive upgrade. The Tensor chip is highly performant, and with 12GB of RAM, the device is extremely snappy. +

    +

    + I have had some issues with battery, although this may be due to Play Integrity Fix, which is known to consume battery. However, the camera has been a massive improvement, and the photos it is capable of taking are amazing. +

    +

    + While the volume buttons did fall off, I do not discredit them for this, as Android makes it easy to have customizable on-screen volume buttons, something iPhones do not have. +

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + ) +} + diff --git a/app/music/page.tsx b/app/music/page.tsx deleted file mode 100644 index dacb362..0000000 --- a/app/music/page.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import Header from '@/components/Header' -import MusicWidget from '@/components/widgets/Music' -import MusicInfo from '@/components/objects/MusicInfo' -import Footer from '@/components/Footer' -import { Music as MusicNote } from "lucide-react"; - -export default function Music() { - return ( -
    -
    -
    -
    - -
    -

    - Music and Me -

    -
    - - -
    -
    -
    -
    - ) -} \ No newline at end of file diff --git a/app/page.tsx b/app/page.tsx index 2df63fe..9f23faa 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -3,7 +3,6 @@ import Header from '@/components/Header' import Footer from '@/components/Footer' import Button from '@/components/objects/Button' -import Link from '@/components/objects/Link' import LastPlayed from '@/components/widgets/NowPlaying' import Image from 'next/image' import { CreditCard, Mail, PillBottle, Scale } from 'lucide-react' @@ -53,15 +52,6 @@ export default function Home() { {mainStrings[secIndex].map((text: string, index: number) => (

    {text} - {secIndex === 2 && index === 2 && ( - <> - {' '} - - CVE-2025-29927 - - . - - )}

    ))} @@ -80,7 +70,6 @@ export default function Home() {

    {t('home.donation.title')}

    {t('home.donation.description')}

    -

    {t('home.donation.charities.title')}

    - ) -} - diff --git a/app/time-periods/early-summer-2024/page.tsx b/app/time-periods/early-summer-2024/page.tsx deleted file mode 100644 index 15869fd..0000000 --- a/app/time-periods/early-summer-2024/page.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import Header from '@/components/Header' -import WhatWasGoingOn from '@/components/pages/time-periods/early-summer-2024/WhatWasGoingOn' -import Footer from '@/components/Footer' - -export default function EarlySummer2024() { - return ( -
    -
    -
    - -
    -
    -
    - ) -} \ No newline at end of file diff --git a/app/time-periods/early-summer-2024/what-was-going-on/page.tsx b/app/time-periods/early-summer-2024/what-was-going-on/page.tsx deleted file mode 100644 index 31a9ee4..0000000 --- a/app/time-periods/early-summer-2024/what-was-going-on/page.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import Header from '@/components/Header' -import WhatWasGoingOn from '@/components/pages/time-periods/early-summer-2024/WhatWasGoingOn' -import Footer from '@/components/Footer' - -export default function Music() { - return ( -
    -
    -
    - -
    -
    -
    - ) -} \ No newline at end of file diff --git a/app/time-periods/late-summer-2024/page.tsx b/app/time-periods/late-summer-2024/page.tsx deleted file mode 100644 index d45de92..0000000 --- a/app/time-periods/late-summer-2024/page.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import Header from '@/components/Header' -import WhatWasGoingOn from '@/components/pages/time-periods/late-summer-2024/WhatWasGoingOn' -import Footer from '@/components/Footer' - -export default function LateSummer2024() { - return ( -
    -
    -
    - -
    -
    -
    - ) -} \ No newline at end of file diff --git a/app/time-periods/late-summer-2024/what-was-going-on/page.tsx b/app/time-periods/late-summer-2024/what-was-going-on/page.tsx deleted file mode 100644 index 353e524..0000000 --- a/app/time-periods/late-summer-2024/what-was-going-on/page.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import Header from '@/components/Header' -import WhatWasGoingOn from '@/components/pages/time-periods/late-summer-2024/WhatWasGoingOn' -import Footer from '@/components/Footer' - -export default function Music() { - return ( -
    -
    -
    - -
    -
    -
    - ) -} \ No newline at end of file diff --git a/components/Header.tsx b/components/Header.tsx index 4c8efbd..68cc54e 100644 --- a/components/Header.tsx +++ b/components/Header.tsx @@ -2,7 +2,18 @@ import React, { useState, useRef, useEffect } from 'react' import Link from 'next/link' -import { House, Link as LinkIcon, User, Phone, BookOpen, Music, Rss, X, Menu, Globe, ChevronDown } from 'lucide-react' +import { + House, + Link as LinkIcon, + User, + Phone, + BookOpen, + Rss, + X, + Menu, + Globe, + ChevronDown +} from 'lucide-react' import { useTranslation } from 'react-i18next' interface NavItemProps { @@ -25,7 +36,7 @@ const LanguageSelector = () => { const [isOpen, setIsOpen] = useState(false); const [isMobile, setIsMobile] = useState(false); const dropdownRef = useRef(null); - + const languages = [ { code: 'en-US', name: 'English' }, ]; @@ -34,7 +45,7 @@ const LanguageSelector = () => { const checkMobile = () => { setIsMobile(window.innerWidth < 1024); }; - + checkMobile(); window.addEventListener('resize', checkMobile); return () => window.removeEventListener('resize', checkMobile); @@ -77,7 +88,7 @@ const LanguageSelector = () => { return (
    - {isOpen && ( -
    Contact Domains Manifesto - Music Blog
    diff --git a/components/objects/MusicInfo.tsx b/components/objects/MusicInfo.tsx deleted file mode 100644 index 450cf8e..0000000 --- a/components/objects/MusicInfo.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import React from 'react'; -import Button from './Button'; - -interface TimePeriod { - title: string; - slug: string; -} - -const timePeriods: TimePeriod[] = [ - { title: 'Late Summer 2024', slug: 'late-summer-2024' }, - { title: 'Early Summer 2024', slug: 'early-summer-2024' }, -]; - -const MusicInfo: React.FC = () => { - return ( -
    - {timePeriods.map((period) => ( -
    -

    {period.title}

    -
    - ))} -
    - ); -}; - -export default MusicInfo; - diff --git a/components/objects/RandomFooterMsg.tsx b/components/objects/RandomFooterMsg.tsx index 41a86a4..5a5a4a4 100644 --- a/components/objects/RandomFooterMsg.tsx +++ b/components/objects/RandomFooterMsg.tsx @@ -1,14 +1,16 @@ +"use client" + import { SiNextdotjs, SiLucide, SiVercel, - SiCloudflarepages, SiSimpleicons, SiFontawesome, SiShadcnui, SiTailwindcss } from "react-icons/si" import Link from 'next/link' +import { useState, useEffect } from 'react' export const footerMessages = [ [ @@ -31,11 +33,6 @@ export const footerMessages = [ "https://vercel.com/font", ], - [ - "Hosted by Cloudflare", - "https://workers.cloudflare.com/", - - ], [ "Icons by Font Awesome", "https://fontawesome.com/", @@ -54,11 +51,30 @@ export const footerMessages = [ ] export default function RandomFooterMsg() { - const randomIndex = Math.floor(Math.random() * footerMessages.length) + const [randomIndex, setRandomIndex] = useState(0) + const [isMounted, setIsMounted] = useState(false) + + useEffect(() => { + setIsMounted(true) + setRandomIndex(Math.floor(Math.random() * footerMessages.length)) + }, []) + + if (!isMounted) { + const [message, url, icon] = footerMessages[0] + return ( + +
    + {icon} + {message} +
    + + ) + } + const [message, url, icon] = footerMessages[randomIndex] return ( - +
    {icon} {message} diff --git a/components/pages/time-periods/early-summer-2024/WhatWasGoingOn.tsx b/components/pages/time-periods/early-summer-2024/WhatWasGoingOn.tsx deleted file mode 100644 index 6689389..0000000 --- a/components/pages/time-periods/early-summer-2024/WhatWasGoingOn.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import React from 'react' -import BackButton from '@/components/objects/BackButton' - -const WhatWasGoingOnLateSummer2024: React.FC = () => { - return ( -
    -

    - What was going on during the start of summer 2024? -

    -
    -

    - During Early Summer 2024, I was walking a ton in towns all across Massachusetts. During this time, I would listen to a lot of music. I regret not finding out about LastFM for so long... During this time, I was always happy, especially when I had music or a YouTube video playing. I would also call my friends often during this time. -

    -

    Context

    -

    - This summer was the one where I came back from my abusive treatment center. I was finally free from the place that had been holding me back for so long. So as you can imagine, I felt free as a bird. -

    -

    - With this chance to explore, being in so many different towns, I really had a good time and made good memories, which I will not be writing about. -

    - -
    -
    - ); -}; - -export default WhatWasGoingOnLateSummer2024; \ No newline at end of file diff --git a/components/pages/time-periods/late-summer-2024/WhatWasGoingOn.tsx b/components/pages/time-periods/late-summer-2024/WhatWasGoingOn.tsx deleted file mode 100644 index 9f5b03c..0000000 --- a/components/pages/time-periods/late-summer-2024/WhatWasGoingOn.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import React from 'react' -import BackButton from '@/components/objects/BackButton' - -const WhatWasGoingOnLateSummer2024: React.FC = () => { - return ( -
    -

    - What was going on during the end of summer 2024? -

    -
    -

    - During late summer 2024, my depression and the "after effects" of treatment really kicked in. I had quit going to my therapist as I didn't feel like they were doing much of anything for me. I am very happy to say that since I quit my therapist, I have been doing much better. -

    -

    - At this time, the baseball season was over, so I was walking around much less. I was still listening to a lot of music and I started getting into less depressed songs. I was also starting to get into more "normal" music, which was an interesting phase (which I believe I'm still in). -

    -

    - A highlight of late summer 2024 was a vacation I took. This vacation has entire albums which remind me of it and I will always cherish those memories deeply. -

    - -
    -
    - ); -}; - -export default WhatWasGoingOnLateSummer2024; diff --git a/components/widgets/FeaturedRepos.tsx b/components/widgets/FeaturedRepos.tsx index 36e76ab..7dc5ef6 100644 --- a/components/widgets/FeaturedRepos.tsx +++ b/components/widgets/FeaturedRepos.tsx @@ -1,9 +1,8 @@ -import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' -import { faGitAlt, faGithub } from '@fortawesome/free-brands-svg-icons' -import { faStar, faCodeBranch } from '@fortawesome/free-solid-svg-icons' -import featuredProjects from '@/public/data/featured.json' -import Link from 'next/link' -import { cn } from '@/lib/utils' +import { SiGithub, SiForgejo } from "react-icons/si" +import { TbStar, TbGitBranch } from "react-icons/tb" +import featuredProjects from "@/public/data/featured.json" +import Link from "next/link" +import { cn } from "@/lib/utils" export default function GitHubFeatured({ className }: { className?: string }) { return ( @@ -11,16 +10,16 @@ export default function GitHubFeatured({ className }: { className?: string }) { {featuredProjects.map((project) => (
    -

    - {project.name} +

    + {project.github ? : } {project.name}

    {project.description}

    View Repo
    - {project.stars} - {project.forks} + {project.stars} + {project.forks}
    diff --git a/components/widgets/Music.tsx b/components/widgets/Music.tsx deleted file mode 100644 index ca3dce3..0000000 --- a/components/widgets/Music.tsx +++ /dev/null @@ -1,127 +0,0 @@ -"use client" - -import { useState, useEffect } from "react" -import Image from "next/image" -import { Play, SkipBack, SkipForward } from "lucide-react" -import LoadingSpinner from "../objects/LoadingSpinner" -import { SeekBar } from "@/components/objects/SeekBar" - -interface Song { - albumArt: string - name: string - artist: string - duration: string - link?: string -} - -interface Period { - timePeriod: string - songs: Song[] -} - -export default function Home() { - const [timePeriod, setTimePeriod] = useState("Early Summer 2024") - const [songs, setSongs] = useState([]) - const [currentIndex, setCurrentIndex] = useState(0) - const [isLoading, setIsLoading] = useState(true) - const [currentPosition, setCurrentPosition] = useState(0) - - useEffect(() => { - setIsLoading(true) - fetch("/data/music.json") - .then((response) => response.json()) - .then((data: Period[]) => { - const selectedPeriod = data.find((period) => period.timePeriod === timePeriod) - const songsList = selectedPeriod ? selectedPeriod.songs : [] - setSongs(songsList) - const newIndex = Math.floor(Math.random() * songsList.length) - setCurrentIndex(newIndex) - // Set initial random position for the selected song - if (songsList.length > 0) { - const durationInSeconds = parseDuration(songsList[newIndex]?.duration || "0:00") - setCurrentPosition(Math.floor(Math.random() * durationInSeconds)) - } - setIsLoading(false) - }) - .catch((error) => { - console.error("Error fetching music data:", error) - setIsLoading(false) - }) - }, [timePeriod]) - - const handleNext = () => { - setCurrentIndex((prevIndex) => { - const nextIndex = (prevIndex + 1) % songs.length - const durationInSeconds = parseDuration(songs[nextIndex].duration) - setCurrentPosition(Math.floor(Math.random() * durationInSeconds)) - return nextIndex - }) - } - - const handlePrevious = () => { - setCurrentIndex((prevIndex) => { - const nextIndex = (prevIndex - 1 + songs.length) % songs.length - const durationInSeconds = parseDuration(songs[nextIndex].duration) - setCurrentPosition(Math.floor(Math.random() * durationInSeconds)) - return nextIndex - }) - } - - const parseDuration = (duration: string): number => { - const [minutes, seconds] = duration.split(":").map(Number) - return minutes * 60 + seconds - } - - return ( -
    - -
    - ) -} - diff --git a/public/data/featured.json b/public/data/featured.json index f28b2ea..807371e 100644 --- a/public/data/featured.json +++ b/public/data/featured.json @@ -4,35 +4,35 @@ "name": "aidxnCC", "description": "aidxnCC is the third version of my personal website", "github": false, - "url": "https://git.pontusmail.org/aidan/aidxnCC", - "stars": 2, - "forks": 1 + "url": "https://git.p0ntus.com/aidan/aidxnCC", + "stars": 1, + "forks": 0 }, { "id": 2, - "name": "librecloud/web", + "name": "abocn/TelegramBot", "description": "Landing page for p0ntus mail", - "github": false, - "url": "https://git.pontusmail.org/librecloud/web", + "github": true, + "url": "https://github.com/abocn/TelegramBot", + "stars": 13, + "forks": 6 + }, + { + "id": 3, + "name": "mail-connect", + "description": "API bridge for docker-mailserver", + "github": true, + "url": "https://github.com/ihatenodejs/mail-connect", "stars": 0, "forks": 0 }, - { - "id": 3, - "name": "modules", - "description": "An open-source Magisk module and FOSS app store", - "github": false, - "url": "https://git.pontusmail.org/aidan/modules", - "stars": 3, - "forks": 0 - }, { "id": 4, - "name": "AndroidIntegrity/website", - "description": "AIA website source code", - "github": true, - "url": "https://github.com/AndroidIntegrity/website", - "stars": 6, - "forks": 1 + "name": "pontus/pontus-front", + "description": "The frontend and API for p0ntus, my free privacy-focused service provider", + "github": false, + "url": "https://git.p0ntus.com/pontus/pontus-front", + "stars": 1, + "forks": 0 } ] diff --git a/public/data/music.json b/public/data/music.json deleted file mode 100644 index 8c01d75..0000000 --- a/public/data/music.json +++ /dev/null @@ -1,56 +0,0 @@ -[ - { - "timePeriod": "Early Summer 2024", - "songs": [ - { - "albumArt": "https://p0ntus.com/archives/img/noticeme.png", - "name": "Notice Me", - "artist": "tobi lou feat. MIA GLADSTONE", - "duration": "2:35", - "link": "https://www.last.fm/music/tobi+lou/Notice+Me" - }, - { - "albumArt": "https://p0ntus.com/archives/img/comforttexas.webp", - "name": "comfort, texas", - "artist": "Buppy.", - "duration": "2:11", - "link": "https://www.last.fm/music/Buppy./comfort,+texas" - }, - { - "albumArt": "https://p0ntus.com/archives/img/nonperishable.webp", - "name": "Jelly", - "artist": "tobi lou", - "duration": "1:50", - "link": "https://www.last.fm/music/tobi+lou/_/Jelly" - }, - { - "albumArt": "https://p0ntus.com/archives/img/exes.webp", - "name": "exes", - "artist": "Tate McRae", - "duration": "2:39", - "link": "https://www.last.fm/music/Tate+McRae/exes/exes" - }, - { - "albumArt": "https://p0ntus.com/archives/img/ick.webp", - "name": "Ick", - "artist": "Lay Bankz", - "duration": "1:55", - "link": "https://www.last.fm/music/Lay+Bankz/_/Ick" - }, - { - "albumArt": "https://p0ntus.com/archives/img/nani.webp", - "name": "NANi", - "artist": "Saweetie", - "duration": "2:34", - "link": "https://www.last.fm/music/Saweetie/Nani" - }, - { - "albumArt": "https://p0ntus.com/archives/img/killerloverboy.webp", - "name": "killer lover boy", - "artist": "SEB", - "duration": "2:14", - "link": "https://www.last.fm/music/Seb/_/killer+lover+boy" - } - ] - } - ] \ No newline at end of file diff --git a/public/img/bonito.png b/public/img/bonito.png new file mode 100644 index 0000000000000000000000000000000000000000..4b418e7f68f0324791b91cb09566b773596a592e GIT binary patch literal 42345 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

    tmI>a33`!E(NSK1M|qg=(Vy4G#Ku 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 z z?YG_fvEeY=8jVJ{T(QPtO?ysc9_A53)#YtwiuVfBdV4z)UUT`Z^}p#g@1{lzTp65q zIPVw^mdFMJciU|@ef)}d+G7em0d|Z#4;=lzCGFRaQ+`B-8A6*iDSB z>zLfD2DK#7mETt0dA#!+KYpC$rR66N9lG`lSG?06Q|Jk>W4!f!@7uiX_LIMI;J^U| zm`o-`AuCMRu`TK{wkf4fD^ z#b2=Iuq}?eoAYXWA13*P(P+fJeJk8{^0r_9sh|3(J_Ec5=m~HSaQ7{D{Q99IhrfQ} z#Pv+_NvQHSc4pRaCrfCj4C*4=zgp4kw|zBP%DX{n1y{Ooc2LW15_^IXgEbcKJzHB_ zWH#g4>#k+rzI|uj@%Fd<8y4z&>9Je%1h@zI;h*}cwQqmJoBr3M#}4PqOUvXg$9Y$j z#avD|!z>cK+T=ISGMk0gE|3;WXcj@d`cb)+b|@0B{-8BKyWHiB$775!EH5u}^vF@Y z^Ugc}#gG2z`<~pRlm2s$o&fg<_ncq<(5*M$@@sdVyaRx(tu4mm=~m(0$Up5CuO`c| zs%tmTqWxyVygJ9W^_xE+s*3ZD$z+1d9huEIdGaL3k6-hr?|IMn{d0OdQ}59L00iVo zL_t*RZ_n_}^b`9{hu`^~-#PZt4}bV04?q6!TORuQ*V*3QM#M544udjC;VM<-pnNMy z%(5DGLbYwKZCN_rZcy(eiB?+0 zW3pX+Ce`z?#)8k8x83@+JMX-c(P)G*u)V#_c$^o7!oXZN^3`fFwbcO@*6)4G_xyM7|GA(0;;v7)$F9)# z0`D>Y=KJ6Ojeq|uzxWeIop}=`E znUGI%M#B^r4sP#_H=Vfj-S^)6_b;yhPrpU)`tCV;7x*gSL%;SbH~sNv@B6n;Jo(fQ zJo?xZa{BaHa-TH)k|hz8QBs*nQ~02**LPlaxM`W}=ngJ`CNZ~Vwv9D-=Pxta(-2Fz z!r{qDeYyF6b@`6xGv^wrF72%Srx>5A;&O+v<+ud#j{W=hbH^QbaO~RSFTM49-uCzY z!T<0NKZNw;cQw!x;8ny&Kl<-hKmW-G|Hp@)c;e^JoIQK!iKm`n?fg0NNhCRI$ZS^J zEagm*dVSn1RBz_0^m=ny8!^s8+TOcZ^VcHnz8i>0p>AyKv=qK+7+gj&y!xs2s-)9A z-|C!_w(BgC5GI^U?(!Xz7>Uf=)@hp)QhnWK(_KK`dor6b7!J7U`V*YE_F8}a_1Ay; z-tYaM|Ndux_V0eB^(1=i33>v&%21I1`pI%5F_G~iDm>}^t0KLR>9N`N=)9YX`|aPqpKGqUh64xp>5(Ic zpML%8UjNVDaQ!X6@|WNL{);=FM32tV6W}X^PkiDZXU{%+;tgN^%2$8#<(E(WrHxCM zPHt{)E=?vm-YL!pt7kHq%p^mYjxjZfp}Ad?q~^JR>DbAwRn^kPjmN0Eywm%u6P)u7 zYwS#-st9Tqlk!xxHKQFY!#W|&bMc$jv`Cnwmn^(l*FTFO)k~{LZF+7j46*@(;ef$l zz;HO!<>lp#BZrSXc*|`!|Htoo^BaHjz3+YBi>*8FvFGRs@Ku2O@Bf{ZC!f4{$K#Jb z{GDgk&fhuS9=~>bd%Ute9_!ZTM#v0Ekd3Ma@l{1~mj`9`%AoWFuMQC_*2oA&bDwWp zGhi~=#w%EpB$}vf({M>8Ov|uYhRcI>7N?LDk7=1PMvOH}0vW=kz+26)SdimS|BHxd z<)XxdxT13|&Ipdg;?lK+RedoruW6BiF}8Y$IwZKO)*G~44EE# ahyNc}Y(#HfMa;VZ0000