blockmotion
Testimonials grid (motion)
Quotes arrive one after another as the wall scrolls in.
Wraps the static Testimonials grid, which renders identically with JavaScript disabled.
Preview
Installation
pnpm dlx shadcn@latest add https://facadeui.dev/r/testimonials-grid-motion.jsonPulls in motion-primitives, testimonials-grid. The CLI installs them for you.
Usage
The exact source of the preview above.
"use client"
/**
* The `testimonials-grid` demo, with the motion variant swapped in.
*
* Identical props: the motion variant only changes which slot components
* the static section renders through.
*
* `"use client"` is required here, not incidental: the motion variant is a
* client component, and icon components cannot cross a server-to-client
* boundary as props. See the note on `IconComponent`.
*/
import { TestimonialsGridMotion } from "@registry/sections/testimonials-grid-motion"
import { QUOTES } from "./content"
export function Demo() {
return (
<TestimonialsGridMotion
eyebrow="Customers"
title="What teams say"
description="Masonry columns flow in document order, so reading order still matches what you see."
items={QUOTES}
columns="masonry"
/>
)
}Source
What the CLI copies into your project, byte for byte.
"use client"
/**
* TestimonialsGridMotion — the testimonial wall with a staggered entrance.
*
* Quotes arrive one after another as the wall scrolls in.
*
* A genuine wrapper: it renders the static `TestimonialsGrid` and only swaps the list
* slots, so no markup, styling or accessibility behaviour is duplicated. *
* Dependencies: react, @/components/motion/slots,
* @/components/sections/testimonials-grid.
*/
import { StaggerList, StaggerListItem } from "@/components/motion/slots"
import {
TestimonialsGrid,
type TestimonialsGridProps,
} from "@/components/sections/testimonials-grid"
export type TestimonialsGridMotionProps = Omit<TestimonialsGridProps, "listAs" | "itemAs">
export function TestimonialsGridMotion(props: TestimonialsGridMotionProps) {
return <TestimonialsGrid {...props} listAs={StaggerList} itemAs={StaggerListItem} />
}Props
TestimonialsGridMotionProps
Extends Omit<TestimonialsGridProps, "listAs" | "itemAs">.