fix(dashboard): normalize typography and layout across built-in themes

All built-in themes now spread DEFAULT_TYPOGRAPHY, removing independent
baseSize overrides and converging on 15px. All themes also use
density: comfortable, removing the compact/spacious divergence that
caused item-count shifts on fixed-height pages (e.g. Skills).

Two additional per-theme overrides are also normalized:

- rose: lineHeight: "1.7" removed — was paired with density: spacious
  for an airy feel; once density was normalised the elevated line-height
  became an orphaned artefact causing nav item height drift.

- cyberpunk: letterSpacing changed from "0.02em" to "0" — extra tracking
  on top of an already-wide monospace font caused text to wrap earlier
  than in other themes.

Switching themes is now a purely cosmetic change — color palette,
font family, border-radius, and typographic style differ; font size,
spacing, line-height, and letter-spacing do not.
This commit is contained in:
Allard Quek 2026-04-29 10:41:20 +08:00 committed by Teknium
parent 01cc701e54
commit 33d24095c4

View file

@ -65,11 +65,11 @@ export const midnightTheme: DashboardTheme = {
noiseOpacity: 0.8,
},
typography: {
...DEFAULT_TYPOGRAPHY,
fontSans: `"Inter", ${SYSTEM_SANS}`,
fontMono: `"JetBrains Mono", ${SYSTEM_MONO}`,
fontUrl:
"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap",
baseSize: "14px",
lineHeight: "1.6",
letterSpacing: "-0.005em",
},
@ -91,11 +91,11 @@ export const emberTheme: DashboardTheme = {
noiseOpacity: 1,
},
typography: {
...DEFAULT_TYPOGRAPHY,
fontSans: `"Spectral", Georgia, "Times New Roman", serif`,
fontMono: `"IBM Plex Mono", ${SYSTEM_MONO}`,
fontUrl:
"https://fonts.googleapis.com/css2?family=Spectral:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;700&display=swap",
baseSize: "15px",
lineHeight: "1.6",
letterSpacing: "0",
},
@ -121,17 +121,17 @@ export const monoTheme: DashboardTheme = {
noiseOpacity: 0.6,
},
typography: {
...DEFAULT_TYPOGRAPHY,
fontSans: `"IBM Plex Sans", ${SYSTEM_SANS}`,
fontMono: `"IBM Plex Mono", ${SYSTEM_MONO}`,
fontUrl:
"https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap",
baseSize: "13px",
lineHeight: "1.5",
letterSpacing: "0",
},
layout: {
radius: "0",
density: "compact",
density: "comfortable",
},
};
@ -147,17 +147,17 @@ export const cyberpunkTheme: DashboardTheme = {
noiseOpacity: 1.2,
},
typography: {
...DEFAULT_TYPOGRAPHY,
fontSans: `"Share Tech Mono", "JetBrains Mono", ${SYSTEM_MONO}`,
fontMono: `"Share Tech Mono", "JetBrains Mono", ${SYSTEM_MONO}`,
fontUrl:
"https://fonts.googleapis.com/css2?family=Share+Tech+Mono&family=JetBrains+Mono:wght@400;700&display=swap",
baseSize: "14px",
lineHeight: "1.5",
letterSpacing: "0.02em",
letterSpacing: "0",
},
layout: {
radius: "0",
density: "compact",
density: "comfortable",
},
colorOverrides: {
success: "#00ff88",
@ -178,17 +178,16 @@ export const roseTheme: DashboardTheme = {
noiseOpacity: 0.9,
},
typography: {
...DEFAULT_TYPOGRAPHY,
fontSans: `"Fraunces", Georgia, serif`,
fontMono: `"DM Mono", ${SYSTEM_MONO}`,
fontUrl:
"https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,500;9..144,600&family=DM+Mono:wght@400;500&display=swap",
baseSize: "16px",
lineHeight: "1.7",
letterSpacing: "0",
},
layout: {
radius: "1rem",
density: "spacious",
density: "comfortable",
},
};