From c3b6465b66ee3f5059a8da3dba59d0be400efda8 Mon Sep 17 00:00:00 2001 From: Kei Date: Mon, 13 Jul 2026 18:19:35 -0400 Subject: [PATCH 1/3] Feat:(ui) add custom hook useScrolled to track page scroll position --- src/hooks/useScrolled.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/hooks/useScrolled.ts diff --git a/src/hooks/useScrolled.ts b/src/hooks/useScrolled.ts new file mode 100644 index 0000000..13536f1 --- /dev/null +++ b/src/hooks/useScrolled.ts @@ -0,0 +1,14 @@ +import { useEffect, useState } from 'react'; + +export function useScrolled(threshold: number = 8): boolean { + const [scrolled, setScrolled] = useState(false); + + useEffect(() => { + const onScroll = () => setScrolled(window.scrollY > threshold); + onScroll(); + window.addEventListener('scroll', onScroll, { passive: true }); + return () => window.removeEventListener('scroll', onScroll); + }, [threshold]); + + return scrolled; +} From 9d80a30d22bbd9e138f067f7aa6c2d55253830af Mon Sep 17 00:00:00 2001 From: Kei Date: Mon, 13 Jul 2026 18:21:10 -0400 Subject: [PATCH 2/3] refactor(header): utilize useScrolled hook for dynamic styling based on scroll position; adjust z-index values for improved layering in mobile navigation. --- src/components/Header.jsx | 91 ++++++++++++++++++++++++--------------- 1 file changed, 57 insertions(+), 34 deletions(-) diff --git a/src/components/Header.jsx b/src/components/Header.jsx index fb8d5aa..4c69aa9 100644 --- a/src/components/Header.jsx +++ b/src/components/Header.jsx @@ -9,6 +9,7 @@ import { Logo } from '@/components/Logo'; import { NavLink } from '@/components/NavLink'; import { Icon, InlineIcon } from '@iconify/react'; import { StarButton } from './StarButton'; +import { useScrolled } from '@/hooks/useScrolled'; function MobileNavLink({ href, children }) { return ( @@ -43,7 +44,7 @@ function MobileNavigation() { return ( {({ open }) => } @@ -58,7 +59,7 @@ function MobileNavigation() { leaveFrom="opacity-100" leaveTo="opacity-0" > - + Features Testimonials @@ -86,39 +87,61 @@ function MobileNavigation() { } export function Header() { + const scrolled = useScrolled(); + return ( -
- - - -
+ + + +