Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions next.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,10 @@ const nextConfig = {
protocol: "https",
hostname: "avatars.githubusercontent.com",
},
{
protocol: "https",
hostname: "github.githubassets.com",
},
],
},
async headers() {
Expand Down
8 changes: 5 additions & 3 deletions src/app/compare/[users]/page.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { Metadata } from "next";
import { Scale, Trophy } from "lucide-react";
import Image from "next/image";
import { normalizeGitHubUsername } from "@/lib/validate-github-username";
import {
fetchPublicProfile,
Expand Down Expand Up @@ -224,10 +225,11 @@ function ProfileHeader({
align === "right" ? "md:flex-row-reverse" : ""
}`}
>
{/* eslint-disable-next-line @next/next/no-img-element */}
<img
<Image
src={`https://avatars.githubusercontent.com/${profile.username}`}
alt=""
alt={`${profile.username} avatar`}
width={56}
height={56}
className="h-14 w-14 rounded-full border border-[var(--border)]"
/>
<div className="min-w-0">
Expand Down
8 changes: 5 additions & 3 deletions src/app/leaderboard/page.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import Link from "next/link";
import Image from "next/image";
import EmptyState from "@/components/EmptyState";
import SponsorBadge from "@/components/SponsorBadge";

Expand Down Expand Up @@ -146,10 +147,11 @@ export default async function LeaderboardPage({
#{entry.rank}
</div>
<div className="flex min-w-0 items-center gap-3">
{/* eslint-disable-next-line @next/next/no-img-element */}
<img
<Image
src={entry.avatarUrl}
alt=""
alt={`${entry.username} avatar`}
width={40}
height={40}
className="h-10 w-10 rounded-full border border-[var(--border)]"
/>
<div className="min-w-0">
Expand Down
13 changes: 5 additions & 8 deletions src/components/BadgeSection.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"use client";

import React, { useState, useEffect } from "react";
import Image from "next/image";

interface BadgeSectionProps {
username: string;
Expand Down Expand Up @@ -49,8 +50,7 @@ export default function BadgeSection({ username }: BadgeSectionProps) {
Streak Badge
</h3>
<div className="mb-2">
{/* eslint-disable-next-line @next/next/no-img-element */}
<img src={streakBadgePreviewUrl} alt="DevTrack Streak" />
<Image src={streakBadgePreviewUrl} alt="DevTrack Streak" width={150} height={20} className="w-auto h-auto" unoptimized />
</div>
<CopyableCodeBlock code={streakMarkdown} />
</div>
Expand All @@ -61,8 +61,7 @@ export default function BadgeSection({ username }: BadgeSectionProps) {
Commits Badge
</h3>
<div className="mb-2">
{/* eslint-disable-next-line @next/next/no-img-element */}
<img src={commitsBadgePreviewUrl} alt="DevTrack Commits" />
<Image src={commitsBadgePreviewUrl} alt="DevTrack Commits" width={150} height={20} className="w-auto h-auto" unoptimized />
</div>
<CopyableCodeBlock code={commitsMarkdown} />
</div>
Expand All @@ -73,10 +72,8 @@ export default function BadgeSection({ username }: BadgeSectionProps) {
Combined (Both Badges)
</h3>
<div className="mb-2 flex gap-1">
{/* eslint-disable-next-line @next/next/no-img-element */}
<img src={streakBadgePreviewUrl} alt="DevTrack Streak" />
{/* eslint-disable-next-line @next/next/no-img-element */}
<img src={commitsBadgePreviewUrl} alt="DevTrack Commits" />
<Image src={streakBadgePreviewUrl} alt="DevTrack Streak" width={150} height={20} className="w-auto h-auto" unoptimized />
<Image src={commitsBadgePreviewUrl} alt="DevTrack Commits" width={150} height={20} className="w-auto h-auto" unoptimized />
</div>
<CopyableCodeBlock code={combinedMarkdown} />
</div>
Expand Down
8 changes: 5 additions & 3 deletions src/components/FriendComparison.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"use client";

import { useEffect, useMemo, useRef, useState } from "react";
import Image from "next/image";
import dynamic from "next/dynamic";

const ComparisonChart = dynamic(() => import("./ComparisonChart"), { ssr: false });
Expand Down Expand Up @@ -265,10 +266,11 @@ export default function FriendComparison() {
: "hover:bg-[var(--control)]",
].join(" ")}
>
{/* eslint-disable-next-line @next/next/no-img-element */}
<img
<Image
src={u.avatarUrl}
alt=""
alt={`${u.username} avatar`}
width={20}
height={20}
className="h-5 w-5 rounded-full"
loading="lazy"
/>
Expand Down
6 changes: 4 additions & 2 deletions src/components/GitHubAchievements.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import Image from "next/image";
import type { GitHubAchievement } from "@/lib/github-achievements";

interface GitHubAchievementsProps {
Expand Down Expand Up @@ -52,10 +53,11 @@ export default function GitHubAchievements({
title={achievement.description}
className="group rounded-lg border border-[var(--border)] bg-[var(--control)] p-3 text-center transition-colors hover:border-[var(--accent)]"
>
{/* eslint-disable-next-line @next/next/no-img-element */}
<img
<Image
src={achievement.imageUrl}
alt={`${achievement.title} GitHub achievement badge`}
width={56}
height={56}
className="mx-auto h-14 w-14 object-contain"
loading="lazy"
/>
Expand Down
7 changes: 5 additions & 2 deletions src/components/WrappedExperience.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import { useEffect, useMemo, useState } from "react";
import Link from "next/link";
import Image from "next/image";
import type { WrappedStats } from "@/lib/wrapped";

const SLIDE_THEMES = [
Expand Down Expand Up @@ -306,11 +307,13 @@ export default function WrappedExperience() {
<p className="mt-1 text-sm text-slate-300">
Generated from your selected year.
</p>
{/* eslint-disable-next-line @next/next/no-img-element */}
<img
<Image
src={getOgImageUrl(stats)}
alt={`${stats.year} Year in Code share card for ${stats.username}`}
width={1200}
height={630}
className="mt-4 aspect-[1200/630] w-full rounded-md border border-white/10 object-cover"
unoptimized
/>
<div className="mt-4 grid grid-cols-1 gap-2 sm:grid-cols-2">
<a
Expand Down
6 changes: 3 additions & 3 deletions src/components/landing/LandingPage.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
'use client';

import { useEffect, useRef, useState } from 'react';
import Image from "next/image";

/* ═══════════════════════════════════════════════════════════
PUBLIC TYPES
Expand Down Expand Up @@ -811,9 +812,8 @@ function ContributeSection({ stats }: { stats: RepoStats }) {
el.style.zIndex = String(stats.contributors.length - i);
}}
>
{/* eslint-disable-next-line @next/next/no-img-element */}
<img
src={`${c.avatar_url}&s=76`}
<Image
src={c.avatar_url}
alt={c.login}
width={38}
height={38}
Expand Down
Loading