feat(a11y): add scroll-progress bar + normalize typography letter-spa…#3225
feat(a11y): add scroll-progress bar + normalize typography letter-spa…#3225Shan7Usmani wants to merge 2 commits into
Conversation
…cing - Add scroll-progress bar at header bottom edge with cyan accent glow - Bar fills left-to-right proportional to scroll position (0%→100%) - Uses GPU-friendly transform:scaleX() for smooth animation - Respects prefers-reduced-motion (disables transition) - Normalize letter-spacing to 0.08em across nav links, badge, stat labels, widget labels, section headers - Optically align triangle logo mark with DEVTRACK wordmark via translate-y Closes Priyanshu-byte-coder#3222
GSSoC Label Checklist 🏷️@Priyanshu-byte-coder — please apply the appropriate labels before merging: Difficulty (pick one):
Quality (optional):
Validation (required to score):
|
|
Hi @Priyanshu-byte-coder! The \star-required\ check is failing due to a workflow bug — not because I haven't starred the repo. The \GITHUB_TOKEN\ in \pr-star-required.yml\ gets a 403 when calling the stargazers API: ` This causes \hasStarred()\ to throw an unhandled error, which crashes the script before it can set the status. The \permissions\ block in the workflow only declares \pull-requests: write\ and \statuses: write\ — the stargazers endpoint likely needs \contents: read\ to work. Quick fix options:
I've confirmed via the GitHub API that I have starred the repo. Thanks! |
Summary
Adds a scroll-progress bar to the header and normalizes typography letter-spacing across the landing page for a more cohesive visual experience.
Closes #3222
Type of Change
What Changed
src/components/AppNavbar.tsx— AddedscrollProgressstate, extended existing scroll listener to calculatescrollTop / docHeight, added scroll-progress bar markup at header bottom edge, normalized nav linktracking-[0.08em], addedtranslate-y-[1px]to triangle logo mark for optical alignmentsrc/app/globals.css— Added.scroll-progress-trackand.scroll-progress-barCSS classes with cyan accent glow,transform-origin: left,scaleXanimation, andprefers-reduced-motionmedia query to disable transitionsrc/components/landing/LandingPage.tsx— Normalizedletter-spacingto0.08emonwLabel(was0.1em), stat labels (was0.12em), "ABOUT DEVTRACK" header (was0.12em), heatmap label (was0.1em), "OPEN SOURCE" header (was0.12em), and stat tile labels (was0.1em)How to Test
pnpm devand open the landing pageprefers-reduced-motionin OS settings and scroll — the progress bar should snap instantly without transitionExpected result: Progress bar fills smoothly with a subtle cyan glow as you scroll. All monospace labels share the same
0.08emletter-spacing. Logo mark is visually balanced with the wordmark. No layout shift or conflict with the sticky translucent header.Checklist
console.log, debug code, or commented-out blocksnpm run lintpasses locallynpm run type-check)Accessibility (UI changes only)
Additional Context
The scroll progress bar uses
transform: scaleX()for GPU-accelerated animation, avoiding layout thrash. Theprefers-reduced-motionmedia query disables the CSS transition so the bar snaps instantly for users who prefer reduced animations. The progress bar is purely decorative (aria-hidden="true") and does not convey information to screen readers.