Optimized images and linting

This commit is contained in:
2026-03-11 20:47:07 +01:00 Verified
parent 252790cfc2
commit 1cd07b9dd5
8 changed files with 65 additions and 32 deletions
+12 -11
View File
@@ -2,6 +2,7 @@
import MatrixRain from '@/app/components/MatrixRain';
import { FaCodeBranch, FaGithub, FaGitlab, FaGlobe, FaStar } from 'react-icons/fa';
import Image from 'next/image';
interface GithubProfile {
html_url: string;
@@ -38,7 +39,7 @@ async function getProfile(): Promise<GithubProfile | null> {
const res = await fetch('https://api.github.com/users/WilliamSoderberg', { next: { revalidate: 60 } });
if (!res.ok) return null;
return res.json();
} catch (e) {
} catch {
return null;
}
}
@@ -48,7 +49,7 @@ async function getGithubRepos(): Promise<GithubRepo[]> {
const res = await fetch('https://api.github.com/users/WilliamSoderberg/repos?sort=updated', { next: { revalidate: 60 } });
if (!res.ok) return [];
return res.json();
} catch (e) {
} catch {
return [];
}
}
@@ -73,7 +74,7 @@ async function getGitlabRepos(): Promise<GitlabRepo[]> {
const topLanguage = Object.keys(languages).sort((a, b) => languages[b] - languages[a])[0];
return { ...repo, language: topLanguage };
}
} catch (e) {
} catch {
console.error(`Failed to fetch language for GitLab repo: ${repo.id}`);
}
return repo;
@@ -81,7 +82,7 @@ async function getGitlabRepos(): Promise<GitlabRepo[]> {
);
return projectsWithLanguages;
} catch (e) {
} catch {
console.error("GitLab fetch failed, returning empty array");
return [];
}
@@ -122,7 +123,7 @@ export default async function CodePage() {
</a>
<div className="w-full">
<div className="relative h-37.5 w-37.5 mx-auto mb-5">
<img src={profile.avatar_url} alt="Avatar" className="h-full w-full rounded-full object-cover border-4 border-[#84c0a0] shadow-[0_0_15px_rgba(132,192,160,0.5)]" />
<Image src={profile.avatar_url} alt="Avatar" width={150} height={150} className="h-full w-full rounded-full object-cover border-4 border-[#58806a] dark:border-[#84c0a0] shadow-[0_0_15px_rgba(88,128,106,0.3)] dark:shadow-[0_0_15px_rgba(132,192,160,0.5)]" />
</div>
<h1 className="mb-1">
<a className="text-white text-[26px] font-bold tracking-wide no-underline hover:text-[#84c0a0] transition-colors" href={profile.html_url} target="_blank" rel="noopener noreferrer">
@@ -257,16 +258,16 @@ export default async function CodePage() {
{/* Changed from Flex to Grid for perfect centering! */}
<div className="grid grid-cols-1 md:grid-cols-3 gap-12 max-w-5xl mx-auto justify-items-center items-center py-6">
<a className="no-underline text-white text-[22px] flex flex-col items-center hover:scale-105 transition-transform group" href="https://soderberg.tech">
<img src="/assets/logos/logo.svg" alt="Soderberg Tech" className="w-22.5 h-16.25 object-contain mb-5 drop-shadow-md group-hover:drop-shadow-[0_0_10px_rgba(255,255,255,0.5)] transition-all" />
<a className="no-underline text-gray-900 dark:text-white text-[22px] flex flex-col items-center hover:scale-105 transition-transform group" href="https://soderberg.tech">
<Image src="/assets/logos/logo.svg" alt="Soderberg Tech" width={90} height={65} className="w-22.5 h-16.25 object-contain mb-5 drop-shadow-md group-hover:drop-shadow-[0_0_10px_rgba(0,0,0,0.2)] dark:group-hover:drop-shadow-[0_0_10px_rgba(255,255,255,0.5)] transition-all dark:invert-0 filter invert" />
<span className="font-bold tracking-wide text-center">Soderberg Tech</span>
</a>
<a className="no-underline text-white text-[22px] flex flex-col items-center hover:scale-105 transition-transform group" href="https://lirkab.se">
<img src="/assets/logos/lirkab.svg" alt="Lirkab" className="w-22.5 h-16.25 object-contain mb-5 drop-shadow-md group-hover:drop-shadow-[0_0_10px_rgba(255,255,255,0.5)] transition-all" />
<a className="no-underline text-gray-900 dark:text-white text-[22px] flex flex-col items-center hover:scale-105 transition-transform group" href="https://lirkab.se">
<Image src="/assets/logos/lirkab.svg" alt="Lirkab" width={90} height={65} className="w-22.5 h-16.25 object-contain mb-5 drop-shadow-md group-hover:drop-shadow-[0_0_10px_rgba(0,0,0,0.2)] dark:group-hover:drop-shadow-[0_0_10px_rgba(255,255,255,0.5)] transition-all dark:invert-0 filter invert" />
<span className="font-bold tracking-wide text-center">Lirkab</span>
</a>
<a className="no-underline text-white text-[22px] flex flex-col items-center hover:scale-105 transition-transform group" href="https://lerbergetsvolleyboll.se">
<img src="/assets/logos/lvs.svg" alt="Lerbergets Volleyboll" className="w-22.5 h-16.25 object-contain mb-5 drop-shadow-md group-hover:drop-shadow-[0_0_10px_rgba(255,255,255,0.5)] transition-all" />
<a className="no-underline text-gray-900 dark:text-white text-[22px] flex flex-col items-center hover:scale-105 transition-transform group" href="https://lerbergetsvolleyboll.se">
<Image src="/assets/logos/lvs.svg" alt="Lerbergets Volleyboll" width={90} height={65} className="w-22.5 h-16.25 object-contain mb-5 drop-shadow-md group-hover:drop-shadow-[0_0_10px_rgba(0,0,0,0.2)] dark:group-hover:drop-shadow-[0_0_10px_rgba(255,255,255,0.5)] transition-all dark:invert-0 filter invert" />
<span className="font-bold tracking-wide text-center">Lerbergets Volleyboll</span>
</a>
</div>