Skip to content

Projects & work

Projects Case Study

A project's overview, process and results, with parallax photos and photos that move into place as you scroll.

Layout and motion from the Nitip template — see it in context

Installation

$ npx shadcn@latest add https://framebrick.co/r/blocks/projects-case-study.json

Usage

import { ProjectsCaseStudy } from "@/components/projects-case-study";

<ProjectsCaseStudy
  overview={{ title: "Overview", body: "…", image: { src: "/work/overview.jpg", alt: "…" } }}
  process={{ title: "Process", body: "…", images: [{ src: "/work/p1.jpg", alt: "…" }, { src: "/work/p2.jpg", alt: "…" }] }}
  result={{ title: "Result", items: [{ highlight: "Bookings up 40%", text: " in three months." }], image: { src: "/work/result.jpg", alt: "…" } }}
/>

Props

PropTypeDefaultDescription
titlestringCase studySection heading for screen readers (visually hidden); the parts are h3.
overview{ title, body, image }—Heading, text and a 3:2 parallax photo.
process{ title, body, images: [img, img] }—Heading, text and two 2:1 photos that move into place.
result{ title, items: { highlight?, text }[], image }—Heading beside a list (bold highlight, then text), then a parallax photo.
classNamestring—Classes for the <section>.
  • Overview and result photos drift with parallax: speed 40 (20 below 768px) — Framer's speed 80 (phone 95).
  • Process photo 1 slides in from +200px (phone +75px); photo 2 grows from 30% while sliding in from −100px (phone 80%, −20px). Linear, tied to scroll.
  • Everything is static with reduced motion. In the preview the frame scrolls on its own: scroll inside it.

AI prompt

Paste into v0, Lovable, Bolt or Claude to rebuild this block in your own project.

Create a React + Tailwind CSS block called ProjectsCaseStudy (Next.js).
- <section className="py-(--section-y)"> with a visually hidden h2; container mx-auto max-w-(--container) px-(--gutter); three parts
  gap-(--section-y). Each part heading is an h3 styled font-heading text-h2 semibold, then an <hr>, then muted text (max-w-4xl,
  aligned right from 1024px).
- Overview and Result photos: 3:2 frames (rounded-xl, overflow-hidden) whose oversized image layer drifts against the scroll —
  offset (0.5 − progress) × 40% of the frame height (20% below 768px), progress from the frame entering to leaving the viewport,
  written to style.transform in a passive scroll listener.
- Process: two 2:1 photos: the first right-aligned (85% wide from 768px, 75% from 1024px) starts 200px (75px on phones) to the
  right; the second left-aligned (80% / 60%, inset p-5 / md:p-8 until 1024px) starts at scale 0.3 and 100px to the left (phone
  0.8, 20px). Both move to rest linearly as the frame scrolls from entering to fully in view. A border-b closes the part.
- Result: heading on the left, a 500px bulleted list on the right from 768px (bold highlight in foreground, muted text).
- Skip all motion with prefers-reduced-motion. Only shadcn variables and block tokens.

Be the first to know

Get new templates and components first

One short email when we release a template or a free component. No spam — unsubscribe anytime.

We use your email only for Framebrick updates. Privacy policy