Skip to content

refactor: modernize and simplify site design#860

Open
mldangelo wants to merge 1 commit intomainfrom
design/modernize-simplify
Open

refactor: modernize and simplify site design#860
mldangelo wants to merge 1 commit intomainfrom
design/modernize-simplify

Conversation

@mldangelo
Copy link
Copy Markdown
Owner

Summary

Comprehensive design refresh focused on stripping decorative complexity in favor of clean, flat, content-forward surfaces. Net deletion of 730 lines across 25 files.

What changed

  • Typography: Raleway + Source Sans 3 → single Inter typeface, emrem sizing, toned-down weight scale (800 → 700 max)
  • Surfaces: Removed grain texture overlay, radial gradient, glassmorphism header, hero gradient blob, card shadows/lifts
  • Hero: Smaller avatar (112px), no credential chips, tighter type, no background gradient
  • Footer: Reduced from 2-column layout to single row (copyright + social icons)
  • Links: Replaced background-image: linear-gradient() trick with native text-decoration
  • Cards: Flat borders, no hover lifts, tighter radius (8→6px), no project card overlay
  • Nav elements: Resume/about section nav stripped from card treatment to plain sticky links
  • Colors: 10+ accent variants → 4, skill category colors unified to single accent
  • Dark mode: 200+ lines consolidated to ~75 (pure token swaps, minimal component overrides)
  • Content widths: Normalized to 680px (prose) / 880px (grid)

What's preserved

  • All accessibility features (aria, focus-visible, reduced-motion)
  • Dark/light theme toggle and localStorage persistence
  • All page routes and content
  • Responsive breakpoints and mobile layout

Test plan

  • npm run format — clean
  • npm run lint — 0 issues
  • npm run type-check — passes
  • npm test — 305/305 passing
  • npm run build — all 15 routes build
  • Visual review: light + dark mode, desktop + mobile

🤖 Generated with Claude Code

Copilot AI review requested due to automatic review settings March 27, 2026 14:22
@dosubot dosubot bot added the size:XXL This PR changes 1000+ lines, ignoring generated files. label Mar 27, 2026
@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages bot commented Mar 27, 2026

Deploying mldangelo with  Cloudflare Pages  Cloudflare Pages

Latest commit: 8f24bae
Status: ✅  Deploy successful!
Preview URL: https://c2ddc7ca.mldangelo.pages.dev
Branch Preview URL: https://design-modernize-simplify.mldangelo.pages.dev

View logs

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Design refresh that simplifies the site’s visual system by consolidating typography, flattening surfaces/interactions, and tightening layout widths while preserving routes and core UX (theme toggle, responsiveness, accessibility hooks).

Changes:

  • Consolidate typography to Inter and normalize type scale/tokens (rem sizing, reduced weight range).
  • Remove decorative effects (grain/gradients/glassmorphism/shadows/lifts) in favor of flat borders and token-driven colors.
  • Simplify key templates (Hero/Footer) and widen select pages via PageWrapper to match new content-width targets.

Reviewed changes

Copilot reviewed 25 out of 25 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
src/data/resume/skills.ts Unifies skill category colors to the global accent token and simplifies fallback behavior.
src/components/tests/Template/Hero.test.tsx Updates Hero tests to reflect removal of chips/background elements.
src/components/tests/Template/Footer.test.tsx Updates Footer tests to reflect minimal footer layout (source link + icons).
src/components/Template/Hero.tsx Shrinks avatar and removes credential chips and decorative background.
src/components/Template/Footer.tsx Refactors footer to a minimal single-row layout and removes nav/avatar blocks.
app/styles/tokens/typography.css Switches font families to Inter and normalizes weights/sizes/letter spacing.
app/styles/tokens/effects.css Tightens border-radius scale across the design system.
app/styles/tokens/colors.css Reduces accent variants and removes dedicated skill color tokens in favor of accent tokens.
app/styles/pages/writing.css Simplifies writing list spacing and moves link styling to native text-decoration.
app/styles/pages/resume.css Flattens resume nav/section styling and adjusts sizing/spacing for the new look.
app/styles/pages/home.css Removes hero gradients/chips/hover lifts and adopts simpler underline/link styling.
app/styles/pages/content.css Flattens section nav and removes hover lift/shadow effects on CTAs.
app/styles/layout/page.css Adjusts default and wide content widths and simplifies page title typography.
app/styles/layout/navigation.css Simplifies nav link styling and focus/active states.
app/styles/layout/header.css Removes glassmorphism effects and uses solid background token.
app/styles/layout/footer.css Replaces the previous multi-column footer styling with a minimal single-row footer.
app/styles/dark-mode.css Consolidates dark mode to token overrides plus minimal component adjustments.
app/styles/components/tags.css Simplifies skill group/title styling and flattens tag treatments.
app/styles/components/cards.css Removes card shadows/lifts/overlays and tightens card spacing/radius.
app/styles/components/buttons.css Simplifies button styling (no lift/shadow) and aligns type/spacing to new tokens.
app/styles/base/reset.css Removes grain/gradient overlays and updates global background to --color-bg.
app/styles/base/links.css Replaces gradient underline trick with text-decoration underlines.
app/resume/page.tsx Uses PageWrapper mainClassName="page-main--wide" for the new resume layout width.
app/projects/page.tsx Uses PageWrapper mainClassName="page-main--wide" for the new archive layout width.
app/layout.tsx Replaces multiple Google fonts with Inter and updates root font variable wiring.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 131 to 142
const CATEGORY_COLORS: { color: string; textColor: 'dark' | 'light' }[] = [
{ color: 'var(--color-skill-1)', textColor: 'light' }, // #6968b3 - dark bg
{ color: 'var(--color-skill-2)', textColor: 'dark' }, // #37b1f5 - light bg
{ color: 'var(--color-skill-3)', textColor: 'light' }, // #40494e - dark bg
{ color: 'var(--color-skill-4)', textColor: 'light' }, // #515dd4 - dark bg
{ color: 'var(--color-skill-5)', textColor: 'dark' }, // #e47272 - light bg
{ color: 'var(--color-skill-6)', textColor: 'dark' }, // #cc7b94 - light bg
{ color: 'var(--color-accent)', textColor: 'dark' },
{ color: 'var(--color-accent)', textColor: 'dark' },
{ color: 'var(--color-accent)', textColor: 'dark' },
{ color: 'var(--color-accent)', textColor: 'dark' },
{ color: 'var(--color-accent)', textColor: 'dark' },
{ color: 'var(--color-accent)', textColor: 'dark' },
];

// Fallback colors for categories beyond the predefined set (with pre-computed contrast)
const FALLBACK_COLORS: { color: string; textColor: 'dark' | 'light' }[] = [
{ color: '#3896e2', textColor: 'dark' },
{ color: '#c3423f', textColor: 'light' },
{ color: '#d75858', textColor: 'light' },
{ color: '#747fff', textColor: 'light' },
{ color: '#64cb7b', textColor: 'dark' },
{ color: 'var(--color-accent)', textColor: 'dark' },
];
Copy link

Copilot AI Mar 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Category.textColor is still being treated as a precomputed contrast hint, but categories now use color: var(--color-accent) which changes between light/dark themes. With textColor: 'dark' this forces .skillbar-title--dark and can produce low-contrast text on the accent background (e.g. light theme accent). Consider removing/ignoring textColor when the color is theme-driven (let CSS default color: var(--color-bg) apply), or make the contrast decision in CSS per theme instead of hardcoding it in data.

Copilot uses AI. Check for mistakes.
Comment on lines 131 to 142
const CATEGORY_COLORS: { color: string; textColor: 'dark' | 'light' }[] = [
{ color: 'var(--color-skill-1)', textColor: 'light' }, // #6968b3 - dark bg
{ color: 'var(--color-skill-2)', textColor: 'dark' }, // #37b1f5 - light bg
{ color: 'var(--color-skill-3)', textColor: 'light' }, // #40494e - dark bg
{ color: 'var(--color-skill-4)', textColor: 'light' }, // #515dd4 - dark bg
{ color: 'var(--color-skill-5)', textColor: 'dark' }, // #e47272 - light bg
{ color: 'var(--color-skill-6)', textColor: 'dark' }, // #cc7b94 - light bg
{ color: 'var(--color-accent)', textColor: 'dark' },
{ color: 'var(--color-accent)', textColor: 'dark' },
{ color: 'var(--color-accent)', textColor: 'dark' },
{ color: 'var(--color-accent)', textColor: 'dark' },
{ color: 'var(--color-accent)', textColor: 'dark' },
{ color: 'var(--color-accent)', textColor: 'dark' },
];

// Fallback colors for categories beyond the predefined set (with pre-computed contrast)
const FALLBACK_COLORS: { color: string; textColor: 'dark' | 'light' }[] = [
{ color: '#3896e2', textColor: 'dark' },
{ color: '#c3423f', textColor: 'light' },
{ color: '#d75858', textColor: 'light' },
{ color: '#747fff', textColor: 'light' },
{ color: '#64cb7b', textColor: 'dark' },
{ color: 'var(--color-accent)', textColor: 'dark' },
];
Copy link

Copilot AI Mar 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CATEGORY_COLORS/FALLBACK_COLORS now repeat the exact same { color, textColor } entries multiple times. Since all categories are intentionally unified, this can be simplified (e.g., generate an array of the required length with fill, or keep a single config and apply it per category) to avoid duplicated data and reduce the chance of accidental divergence later.

Copilot uses AI. Check for mistakes.
Comment on lines +20 to +21
--font-weight-bold: 600;
--font-weight-black: 700;
Copy link

Copilot AI Mar 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

--font-weight-semibold and --font-weight-bold are both set to 600, which makes the tokens indistinguishable and can lead to confusing/ineffective typography usage across the site. Consider assigning distinct values (e.g. keep semibold=600 and set bold=700) or removing one token if you intentionally want a single weight.

Suggested change
--font-weight-bold: 600;
--font-weight-black: 700;
--font-weight-bold: 700;
--font-weight-black: 800;

Copilot uses AI. Check for mistakes.
box-shadow:
var(--shadow-md),
inset 0 1px 0 var(--color-overlay-light);
border-radius: 6px;
Copy link

Copilot AI Mar 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Buttons now hardcode border-radius: 6px even though radius tokens exist (and --radius-sm is also 6px after this PR). Using the token instead of a literal helps keep component styling consistent if the radius scale changes again.

Suggested change
border-radius: 6px;
border-radius: var(--radius-sm);

Copilot uses AI. Check for mistakes.
Complete design overhaul from decorative complexity to editorial minimalism.

Typography: Raleway + Source Sans → Inter. em → rem sizing.
Color: Blue accent → monochromatic (near-black light, near-white dark).
Hero: Inline 56px avatar + name + tagline. Left-aligned. No buttons.
Nav: Full name as logo. Quiet gray links.
Footer: Copyright + subtle social icons.
Cards: Flat dividers, no borders/shadows/radius on job/course entries.
Resume: Left-aligned, uppercase section labels, plain sticky nav.
Writing: Tighter list, opacity hover, no border pill on RSS.
Dark mode: Pure token swaps, 3 component overrides total.

Removed: grain texture, radial gradients, glassmorphism, hero chips,
credential badges, hover lifts, card shadows, gradient overlays,
6 skill category colors, 16 unused tokens, 70 lines dead animations,
forms.css placeholder.

305 tests pass. All 15 routes build.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@mldangelo mldangelo force-pushed the design/modernize-simplify branch from 8f24bae to 38c3008 Compare March 28, 2026 16:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL This PR changes 1000+ lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants