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
11 changes: 3 additions & 8 deletions app/about/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -41,14 +41,14 @@ export default function About() {
institution: "Southern University of Science and Technology",
role: "Bachelor of Science",
subtitle: "Mathematics",
grade: "3.73/4.00 (89.96/100)",
grade: "3.73 / 4.00",
},
{
years: "2026 – 2026",
institution: "University of California, Berkeley",
role: "Visiting Student",
subtitle: "Computer Science and Data Science",
grade: "4.00/4.00 (100/100)",
grade: "4.00 / 4.00",
},
{
years: "2025 – 2025",
Expand Down Expand Up @@ -126,7 +126,7 @@ export default function About() {
href={href}
target="_blank"
rel="noopener noreferrer"
className="group block py-4 -mx-2 px-2 rounded-sm hover:bg-zinc-100 dark:hover:bg-zinc-700/40 transition-all duration-150 no-underline border-b border-zinc-100 dark:border-zinc-800/60 last:border-0"
className="group block py-4 -mx-2 px-2 rounded-sm hover:bg-[#e8f0f4] dark:hover:bg-[#243640] transition-all duration-150 no-underline border-b border-zinc-100 dark:border-zinc-800/60 last:border-0"
style={{ textDecoration: "none" }}
>
<span
Expand Down Expand Up @@ -170,11 +170,6 @@ export default function About() {
role: "Peer Mentor",
detail: "Peer mentor at Zhicheng College for the Class of 2028.",
},
{
years: "Feb 2024 – Jul 2024",
role: "Research Assistant",
detail: "Control theory RA at NCC Lab.",
},
{
years: "Oct 2023 – Jan 2024",
role: "Teaching Assistant",
Expand Down
15 changes: 14 additions & 1 deletion app/components/hover-link-hint.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,19 @@ export function linkDestinationLabel(href: string): string {

if (host === "github.com") return "GitHub";
if (host === "open.spotify.com" || host === "spotify.com") return "Spotify";
if (host === "primevideo.com") return "Prime Video";
if (host === "topgear.com") return "Top Gear";
if (host === "hitsujibungaku.info") return "Hitsujibungaku";
if (host === "adieu-web.com") return "adieu";
if (host === "hayatosum.com") return "Sumino Hayato";
if (host === "lavt.jp") return "Lavt";
if (host === "lilasikuta.jp") return "Ikuta Lilas";
if (host === "sudamasaki-music.com") return "Suda Masaki";
if (host === "higedan.com") return "HIGE DANdism";
if (host === "radwimps.jp") return "RADWIMPS";
if (host === "instagram.com") return "Instagram";
if (host === "tomoo.jp") return "TOMOO";
if (host === "vaundy.jp") return "Vaundy";
if (host === "mapbox.com") return "Mapbox";
if (host.endsWith("wikipedia.org")) return "Wikipedia";
if (host === "youtube.com" || host === "youtu.be") return "YouTube";
Expand All @@ -47,7 +60,7 @@ export function destinationHint(href: string, override?: string): string {
return `${override ?? linkDestinationLabel(href)} ↗`;
}

const HINT_ACCENT = "text-black dark:text-white";
const HINT_ACCENT = "text-[var(--link-color)]";
const HINT_MOTION = "transition-all duration-150";

/** Leading ↗ — fades + slides in from the left on parent `.group` hover. */
Expand Down
2 changes: 1 addition & 1 deletion app/components/listening-track-row.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ export default function ListeningTrackRow({
href={songUrl}
target="_blank"
rel="noopener noreferrer"
className={`flex items-center group group/track rounded-sm -mx-2 px-2 pl-3 transition-all duration-150 hover:bg-zinc-100 dark:hover:bg-zinc-700/40 ${
className={`flex items-center group group/track rounded-sm -mx-2 px-2 pl-3 transition-all duration-150 hover:bg-[#e8f0f4] dark:hover:bg-[#243640] ${
compact ? "gap-2 py-1" : "gap-3 py-1.5"
} ${live ? "" : "opacity-[0.97]"} ${className}`}
>
Expand Down
8 changes: 4 additions & 4 deletions app/components/nav.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ function isNavActive(pathname: string, href: string) {
return pathname === href || pathname.startsWith(`${href}/`);
}

/** Active nav — accent text + rounded underline; hover — text highlight only */
/** Active nav stays in the shared link palette; hover is handled globally. */
function navLinkClassName(active: boolean) {
const base = "nav-link text-sm";
if (active) {
return `${base} nav-link--active text-black dark:text-white`;
return `${base} nav-link--active`;
}
return `${base} text-zinc-500 dark:text-zinc-400 hover:text-black dark:hover:text-white`;
return base;
}

export default function Nav() {
Expand Down Expand Up @@ -55,7 +55,7 @@ export default function Nav() {
href="/"
onClick={() => setIsOpen(false)}
style={{ fontFamily: "var(--font-nunito)", fontWeight: 600 }}
className="text-base tracking-tight text-zinc-700 dark:text-zinc-300 hover:text-black dark:hover:text-white"
className="site-logo text-base tracking-tight"
>
Kai T. Chen
</Link>
Expand Down
8 changes: 4 additions & 4 deletions app/components/oxford-dul/course-project-link.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export default function CourseProjectLink({ entry, variant = "list" }: CoursePro
const nameStyle = {
fontFamily: "var(--font-nunito)",
fontWeight: 600,
fontSize: variant === "card" ? 20 : 18,
fontSize: variant === "list" ? 18 : 20,
fontStyle: "italic" as const,
};

Expand Down Expand Up @@ -59,8 +59,8 @@ export default function CourseProjectLink({ entry, variant = "list" }: CoursePro

if (variant === "card") {
const className = external
? "mag-card block group no-underline"
: "mag-card block group no-underline";
? "mag-card project-card-theme block group no-underline"
: "mag-card project-card-theme block group no-underline";

const content = (
<>
Expand Down Expand Up @@ -105,7 +105,7 @@ export default function CourseProjectLink({ entry, variant = "list" }: CoursePro
}

const listClassName =
"group block py-2 -mx-2 px-2 rounded-sm hover:bg-zinc-100 dark:hover:bg-zinc-700/40 transition-all duration-150 no-underline";
"group block py-2 -mx-2 px-2 rounded-sm hover:bg-[#e8f0f4] dark:hover:bg-[#243640] transition-all duration-150 no-underline";

const listContent = (
<>
Expand Down
6 changes: 3 additions & 3 deletions app/components/pinned-project-link.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ export default function PinnedProjectLink({
const nameStyle = {
fontFamily: "var(--font-nunito)",
fontWeight: 600,
fontSize: variant === "card" ? 20 : 18,
fontSize: variant === "list" ? 18 : 20,
fontStyle: "italic" as const,
};

Expand All @@ -30,7 +30,7 @@ export default function PinnedProjectLink({
href={href}
target="_blank"
rel="noopener noreferrer"
className="mag-card block group no-underline"
className="mag-card project-card-theme block group no-underline"
style={{ textDecoration: "none" }}
>
<div className="flex items-center gap-2 flex-wrap mb-2">
Expand Down Expand Up @@ -73,7 +73,7 @@ export default function PinnedProjectLink({
href={href}
target="_blank"
rel="noopener noreferrer"
className="group block py-2 -mx-2 px-2 rounded-sm hover:bg-zinc-100 dark:hover:bg-zinc-700/40 transition-all duration-150 no-underline"
className="group block py-2 -mx-2 px-2 rounded-sm hover:bg-[#e8f0f4] dark:hover:bg-[#243640] transition-all duration-150 no-underline"
style={{ textDecoration: "none" }}
>
<div className="flex items-center justify-between gap-3">
Expand Down
4 changes: 2 additions & 2 deletions app/components/playlist-description.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ const CREDIT_CLASS = "text-zinc-400/90 dark:text-zinc-600";

const PLACE_LINK_WRAP =
"group/place inline rounded-sm px-0.5 -mx-0.5 " +
"hover:bg-zinc-100 dark:hover:bg-zinc-700/40 transition-all duration-150 no-underline";
"hover:bg-[#e8f0f4] dark:hover:bg-[#243640] transition-all duration-150 no-underline";

const PLACE_LINK_TEXT =
"underline underline-offset-2 decoration-zinc-300 dark:decoration-zinc-600 " +
Expand All @@ -21,7 +21,7 @@ const PLACE_LINK_TEXT =

const CREDIT_LINK_WRAP =
"group/credit inline rounded-sm px-0.5 -mx-0.5 " +
"hover:bg-zinc-100 dark:hover:bg-zinc-700/40 transition-all duration-150 no-underline";
"hover:bg-[#e8f0f4] dark:hover:bg-[#243640] transition-all duration-150 no-underline";

const CREDIT_LINK_TEXT =
"underline underline-offset-2 decoration-zinc-300 dark:decoration-zinc-600 " +
Expand Down
7 changes: 5 additions & 2 deletions app/components/weather-card.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,14 @@ export default function WeatherCard({ initialWeather }: WeatherCardProps) {
<div style={{ width: 110, flexShrink: 0 }}>
<button
onClick={() => setIsCelsius((v) => !v)}
disabled={!w}
style={{ fontFamily: "var(--font-nunito)", fontWeight: 600, fontSize: 18, letterSpacing: "-0.01em" }}
className="text-zinc-800 dark:text-zinc-200 leading-none cursor-pointer hover:text-black dark:hover:text-white transition-colors duration-150 bg-transparent border-none p-0 text-left"
className="weather-unit-toggle"
aria-label={`Switch to ${isCelsius ? "Fahrenheit" : "Celsius"}`}
title={`Switch to ${isCelsius ? "Fahrenheit" : "Celsius"}`}
>
{displayTemp}
<span>{displayTemp}</span>
<span className="weather-unit-toggle-icon" aria-hidden>↔</span>
</button>
</div>

Expand Down
Loading