Skip to content

Update background, navbar, and theme styling - #25

Merged
steadyfall merged 42 commits into
devfrom
feat/explore-background-and-navbar
May 17, 2026
Merged

Update background, navbar, and theme styling#25
steadyfall merged 42 commits into
devfrom
feat/explore-background-and-navbar

Conversation

@steadyfall

Copy link
Copy Markdown
Owner

Summary

  • Refreshes the personal site visual system, navbar, background, and theme-aware component styling.
  • Adds Paper Design shader dependency patches and project agent/Claude skill configuration.
  • Merges latest dev and keeps the blog nav item hidden because there is no posts route.

Checks

  • npm run lint
  • npm run build (rerun with network access so next/font could fetch Google Fonts)

Note: this project does not currently define a dedicated test script.

Update navbar styling to create a frosted glass effect:
- Apply backdrop-blur-md with semi-transparent background
- Move padding from header to nav element
- Add rounded-lg corners for polished appearance
- Reduce header top padding to pt-2

The blur effect is applied only to the nav element's padded area,
creating a floating navbar appearance over the animated background.
- Changed font import from Inter to Instrument_Sans in layout.tsx
- Updated font variable name from 'inter' to 'instrumentsans'
- Updated Tailwind config to reference new font variable
- Maintained Space Mono as monospace typewriter font
- Switched background color from:
	- bg-neutral-950 to bg-[#1a0089]
	- bg-neutral-100 to bg-[#ff5e33]
- Adjusted top padding to only apply on large screens (lg:pt-6)
- Made border radius responsive (lg:rounded-lg)
- Removed max-w-full constraint for better fluid layout
- Maintained backdrop blur and transparency effects
- Added 'peer: true' flags to multiple dependencies
- Includes @mdx-js/loader, @mdx-js/react, @types/react
- Includes TypeScript, ESLint plugins, and other dev dependencies
- No functional changes, metadata update only
for better consistency with the design system.
Add @paper-design/shaders-react v0.0.60 to enable animated gradient
and dithering effects for multiple components.
Replace static image with ImageDithering component. Background adapts
to theme: orange (#ff3600) in light mode, blue (#1a0098) in dark mode.
Fix copy icon visibility in light mode (white text instead of slate).
…ture

  Add patch-package patches for @paper-design/shaders@0.0.60 and
  @paper-design/shaders-react@0.0.60 to enable imageAlphaMode parameter
  on PaperTexture component.

  This allows controlling transparency behavior for images with alpha
  channels (opaque/preserve/blend modes).

  Cherry-picked off 6ae053e
  ref: 6ae053e
Replace static organization logo images with PaperTexture shader that
adapts to theme. Background matches DynamicBackground colors: orange
(#ff5e33) in light mode, blue (#1a0098) in dark mode.
- Update responsive max-width breakpoints (lg:max-w-3xl, xl:max-w-4xl,
  2xl:max-w-5xl)
- Add bottom margin (mb-3) and remove rounded corners
- Improve hover text contrast in HoverHighlighter (gray-100 vs gray-200)
Add semantic color definitions for the design system:
- dark-blue and portland-orange for primary brand colors
- selago color scale for dark mode text and UI elements
- chinese-black color scale for light mode text and UI elements

These named colors replace hardcoded hex values throughout the app
for better maintainability and theme consistency.
Replace hardcoded hex colors and generic gray palette with semantic
theme colors for better design consistency:

- Body background and text colors now use portland-orange/dark-blue
  and chinese-black/selago scales
- Section heading gradients updated with theme-aware colors
- Badge component styling updated with semantic colors and improved
  hover states
- Remove unnecessary color classes from Footer and RecordTile duration

This migration improves theme coherence and makes future color
adjustments easier to manage centrally.
Increase bottom margins on large breakpoints (lg) to improve vertical
spacing and readability on desktop screens:
- Section components: mb-12 → lg:mb-20
- Header component: mb-10 → lg:mb-16
- Add 'use client' directive and theme detection to About component
- Implement dynamic color switching based on dark/light mode
- Add new color variants: 'turq' and 'darkpink'
- Adjust highlight positioning and sizing for better visual balance
- Update light mode colors to full opacity (remove /80 and /75 suffixes)
- Update LinkWithArrow components to use white text in light mode
- Maintain colored links in dark mode for visual distinction
- Adjust copy button text color from white to black in light mode
- Update hypercube code link to point to dev branch instead of main
- Refine dark mode link colors for better consistency
- Add white color option to StrikeHighlight component
- Update StrikeHighlight colors to use white in light mode
- Reverse section heading gradients from black-to-white for better
  contrast
- Add explicit text colors to RecordTile duration for consistency
- Apply gradient updates across Education, Experience, Projects & Skills
  sections
- Change heading gradient to use chinese-black colors in light mode
- Add explicit styling to BackButton component
- Update link colors to use chinese-black palette for consistency
- Maintain dark mode styling with slate colors
…nces

- Add skip-to-main-content link in home layout (WCAG 2.4.1)
- Add aria-labels to copy-email button and theme switch (WCAG 4.1.2)
- Add aria-hidden to decorative icons in Header and ThemeSwitch
- Add focus-visible outline indicators to all interactive elements:
  Navbar links, LinkWithArrow, Accordion trigger, BackButton, ThemeSwitch
- Fix heading hierarchy in RecordTile: h2/h3 → h3/h4 (WCAG 1.3.1)
- Fix setTimeout memory leak in Header copy effect (add cleanup)
- Add prefers-reduced-motion CSS rule to disable animations for users
  who prefer reduced motion
- Remove useMediaQuery from Header.tsx — replace isTablet conditional
  rendering of headshot with CSS md:hidden / hidden md:block classes
- Remove useMediaQuery from RecordTile.tsx — replace isTablet/isDesktop
  with CSS md: and xl: responsive classes for duration positioning and
  logo hover reveal; eliminates hydration mismatch and layout flash
- Remove useState wrappers for static prop data in Experiences.tsx,
  Projects.tsx, Skills.tsx — use props directly to allow server rendering
- Replace accordion height animation with grid-template-rows transition
  to avoid layout recalculation on every animation frame; remove unused
  keyframes from tailwind config
- Remove mounted guards from RecordTile and About — resolvedTheme
  defaults to light mode (undefined !== 'dark') before hydration, so
  shader colors render correctly without blocking initial paint
- Remove duplicate key props from inner ExperienceTile and ProjectTile
  (BlurFade parent already carries the correct key)
- Fix font-weight mismatch in fonts.css: PyeongChangPeace-Bold.ttf
  declared as 400 but should be 700
- Remove :root/:dark CSS variable blocks and body color/background
  declarations from globals.css — these conflicted with the Tailwind
  bg-portland-orange / dark:bg-dark-blue classes on <body> and were
  never used by any component
- Remove unused background/foreground tokens from tailwind.config.ts
- Add cobalt-blue (#2b40f5) and portland-peach (#ff9871) to the design
  token palette — these were previously hard-coded in Badge.tsx
- Replace dark:text-[#60d394] in About.tsx with dark:text-spring-green-400
- Replace dark:text-[#40b9d0] in ProjectTile.tsx with dark:text-firefly-300
- Update Badge.tsx default variant to use portland-peach / cobalt-blue tokens
- Fix Badge outline variant: replace text-foreground (removed token) with
  explicit text-chinese-black-950 dark:text-selago-100
"is a interdisplinary" → "is an interdisciplinary"
All five section headings (About, Experience, Education, Skills,
Projects) used identical bg-gradient-to-r clip-text styling — a
decorative AI slop pattern that added visual noise without meaning.

Replace with solid text-chinese-black-950 dark:text-selago-100, letting
the distinctive Starlight font carry the heading character on its own.
Also remove now-unused cn() utility imports from all five components.
steadyfall and others added 11 commits March 26, 2026 22:50
Updated dependencies to fix Next.js and React CVE vulnerabilities.

The fix-react2shell-next tool automatically updated the following packages to their secure versions:
- next
- react-server-dom-webpack
- react-server-dom-parcel  
- react-server-dom-turbopack

All package.json files have been scanned and vulnerable versions have been patched to the correct fixed versions based on the official React advisory.

Co-authored-by: Vercel <vercel[bot]@users.noreply.github.com>
* Update dark badge styling

* Move blur fade delay config

* style(badge): replace pure white dark mode bg with tinted selago-100

Swaps dark:bg-white for dark:bg-selago-100 to avoid a pure-white badge
in dark mode, which looked jarring and off-brand. The selago-100 tint
keeps legibility (contrast ~17:1) while staying on-palette and creating
a natural rest→hover progression with the existing selago-200 hover.
Also makes dark:hover:text-chinese-black-950 explicit for resilience.
…d-and-navbar

# Conflicts:
#	src/components/Navbar.tsx
@vercel

vercel Bot commented May 17, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
steadyfall Ready Ready Preview, Comment May 17, 2026 0:39am

@steadyfall
steadyfall merged commit 7e8c4e4 into dev May 17, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant