4.7 KiB
4.7 KiB
UT-PUB-02 — Parallax and Split-Screen Hero Sections
Status
Ready for Dev
Story
As a visitor,
I want smooth, layered parallax and split‑screen hero sections on key pages,
so that the site feels immersive and visually engaging without sacrificing performance or accessibility.
Acceptance Criteria
- Given I’m on the homepage or an artist page
When I scroll
Then layered visuals and split sections animate smoothly within performance budgets (no noticeable jank; respects prefers‑reduced‑motion)
Tasks / Subtasks
- Define UX and constraints (AC: 1)
- Specify max parallax depth, layers, and scroll ranges (mobile/desktop)
- Document fallback behavior for
prefers-reduced-motion: reduce(animations disabled or simplified) - Establish performance budgets: LCP target, avoid layout shift, minimal main thread cost
- Implement homepage hero enhancements (AC: 1)
- Update/extend
components/hero-section.tsxfor layered composition (foreground text, midground overlays, background image) - Use CSS transforms and opacity for motion; avoid heavy JS; throttle with requestAnimationFrame
- Guard with
use clientonly where needed; ensure SSR compatibility for static layers
- Update/extend
- Implement artist page split‑screen/hero (AC: 1)
- Add or update hero for artist pages (e.g.,
components/artists-page-section.tsx/components/artist-portfolio.tsx) to support split‑screen layout (image/story) - Ensure composition adapts at breakpoints (stack on mobile, split at md+)
- Add or update hero for artist pages (e.g.,
- Motion system & accessibility (AC: 1)
- Respect
prefers-reduced-motion; expose CSS class or data attribute to disable animations - Use
tailwindcss-animateclasses for subtle transitions; avoid inline animation CSS - Ensure focus order and headings are unaffected by decorative layers (decorative images
aria-hidden)
- Respect
- Smooth scrolling integration (AC: 1)
- If Lenis is enabled, verify no conflict with parallax updates (no double scroll handlers)
- Disable or degrade parallax effect when smooth scroll is off or reduced motion is on
- Performance validation (AC: 1)
- Audit LCP/INP locally; ensure no long tasks > 50ms introduced by parallax logic
- Validate no layout shift (CLS) from parallax layers; use fixed heights/aspect‑ratio placeholders
- Tests and checks (AC: 1)
- RTL tests validate presence of hero layers and reduced‑motion fallback class toggles
- Add visual acceptance notes and manual test plan for scroll behavior across sm/md/lg
Dev Notes
Pulled from project artifacts (do not invent):
- docs/PRD.md (Epic C — Public Website)
- UT‑PUB‑02: Smooth, performant parallax/split‑screen hero on homepage and artist pages
- Visual emphasis with high‑quality photography; mobile‑first responsiveness (C1–C3)
- docs/ui-architecture.md
- Use Tailwind v4 utilities; ShadCN/Radix for a11y components; use
tailwindcss-animateand Lenis; avoid heavy JS animation libs - Accessibility baseline WCAG AA; focus visible; avoid keyboard traps; keep components presentational with side‑effects in hooks
- Performance: prefer server components; client JS only when necessary; lazy‑load heavy modules
- Use Tailwind v4 utilities; ShadCN/Radix for a11y components; use
- Existing Source Tree (verify before edits)
components/hero-section.tsx(homepage hero)components/artists-page-section.tsx,components/artist-portfolio.tsx(artist views)components/section-header.tsx,components/smooth-scroll-provider.tsx(potential integration points)
Testing (from docs/ui-architecture.md: Testing Requirements/Best Practices)
- Unit/Component: Vitest + RTL; deterministic; verify reduced‑motion behavior and layer presence
- E2E (later): confirm smooth scroll and no jank on critical scroll ranges in preview env
- Targets: No CLS from hero; initial render stable with defined heights/placeholders
Change Log
| Date | Version | Description | Author |
|---|---|---|---|
| 2025-09-19 | 0.2 | PO validation: Ready for Dev | Product Owner |
| 2025-09-19 | 0.1 | Initial draft of PUB‑02 story | Scrum Master |