Design System

Scroll fade

A scroll region whose scrollbar is hidden and whose top/bottom edges fade to signal off-screen content. The canonical halwel affordance for any invisible-scrollbar scroller — sidenav lists, side panels, drawers.

It owns only overflow + the fade; sizing (flex, height, min-height:0, gap) stays on your className. The fade reacts to live scroll position (0 at a reached edge, so the first/last item never dims) and auto-disables when the content fits. Part of the app-shell scroll pattern: one scrolling region, window locked via useBodyScrollLock().

import from @halwel/ui/components/dashboard/ScrollFade

Fade depth: 18px (prop fade) · Vars: --scroll-fade-top/-bottom · Engine: useScrollEdgeFade + .halwel-scroll-fade · Re-evals: scroll + ResizeObserver.

Variants

Scrolls — fades the edge with more beyond (scroll it)
Fits — no mask, no fade