Docs
Installation
A real shadcn registry command, not a copy-paste stand-in: it fetches this block plus its avatar, avatar-initials dependencies and any missing npm packages, and installs them straight into your project.
npx shadcn add https://staaarter.com/r/before-after-results.jsonPrefer not to use the CLI? Copy the source from the Code toggle above into src/components/blocks/testimonials/testimonial14.tsx instead.
Usage
The file also exports testimonial14Demo, the exact props behind the preview above. Spread it to get a working section in one line, then replace it with your own data.
import { Testimonial14, testimonial14Demo } from "@/components/blocks/testimonials/testimonial14"; export default function Page() { return <Testimonial14 {...testimonial14Demo} />; }
Props
| Prop | Type | Default | Description |
|---|---|---|---|
| heading | string | undefined | Optional heading above the card. |
| before | MetricPoint | none | The before-state label and value, e.g. { label: "Manual reconciliation", value: "2 hrs/week" }. |
| after | MetricPoint | none | The after-state label and value shown next to before. |
| quote | string | none | The customer quote below the stat pair. |
| author | Person | none | Name, role, and optional avatar of the person quoted. |
| className | string | none | Extra classes for the outer section element. |
Types
type MetricPoint = { label: string; value: string; }; type Person = { name: string; role: string; avatar?: { src: string; alt: string }; };
Behavior notes
- Fully static/decorative: this is a Server Component with no event handlers or client state.
- The arrow between the before/after stats is a decorative lucide ArrowRight icon marked aria-hidden; the actual before/after relationship is conveyed in text via the stat labels, not just the icon.
- Avatar renders a real photo when author.avatar.src is provided and falls back to initials via initialsFromName otherwise, same pattern as the About category.
More Testimonials Blocks
View all →Single Large Quote
One large centered pull-quote with a decorative quote mark and a simple avatar attribution below.
Three Column Grid
Responsive grid of quote cards, each with a star rating, avatar, name, role, and quote text.
Quote Carousel
Interactive one-at-a-time quote carousel with prev/next arrows and clickable dot indicators.
Video Testimonial Grid
Grid of video-style testimonial cards, each a 16:9 thumbnail with a play-button overlay and a caption.
Masonry Wall
"Wall of love" style masonry layout of many short quote cards using CSS columns, not a JS library.
Quote With Stats Sidebar
Split layout pairing a large quote and attribution with a sidebar of 2-3 result stats.