Conversation
Deploying mldangelo with
|
| Latest commit: |
8f24bae
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://c2ddc7ca.mldangelo.pages.dev |
| Branch Preview URL: | https://design-modernize-simplify.mldangelo.pages.dev |
There was a problem hiding this comment.
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
PageWrapperto 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.
| 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' }, | ||
| ]; |
There was a problem hiding this comment.
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.
| 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' }, | ||
| ]; |
There was a problem hiding this comment.
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.
| --font-weight-bold: 600; | ||
| --font-weight-black: 700; |
There was a problem hiding this comment.
--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.
| --font-weight-bold: 600; | |
| --font-weight-black: 700; | |
| --font-weight-bold: 700; | |
| --font-weight-black: 800; |
| box-shadow: | ||
| var(--shadow-md), | ||
| inset 0 1px 0 var(--color-overlay-light); | ||
| border-radius: 6px; |
There was a problem hiding this comment.
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.
| border-radius: 6px; | |
| border-radius: var(--radius-sm); |
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>
8f24bae to
38c3008
Compare
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
em→remsizing, toned-down weight scale (800 → 700 max)background-image: linear-gradient()trick with nativetext-decorationWhat's preserved
Test plan
npm run format— cleannpm run lint— 0 issuesnpm run type-check— passesnpm test— 305/305 passingnpm run build— all 15 routes build🤖 Generated with Claude Code