Testimonial Grid

Multi-column testimonial grid with tidy profile cards.

Preview

Refinery is backed by the community!

Murdo Aten Alescio

Murdo Aten Alescio

Chief Technology Officer

Toogle
I just love Refinery. It gives us a refined design system with best-in-class web interactions we can browse, adopt, and ship quickly.
Danielle Porter

Danielle Porter

Lead Designer

TouYube
Refinery exceeded my expectations as a design system inspired by the web's best interactions. It helps us discover elevated patterns, align design decisions, and deliver a premium product feel.
Monica Witkowska

Monica Witkowska

Frontend Engineer

Metamine
Refinery has become essential for our frontend team. We browse interaction patterns and beautifully refined components, then integrate Refinery into our product with minimal friction.
Tuor Håkansson

Tuor Håkansson

SDE II

Z Combinator
Refinery has been a game-changer for our team. Instead of starting from scratch. We explore top interaction patterns and refined UI examples, then implement them with confidence.

Installation

1. Run the following command in your terminal:
npx shadcn@latest add https://refinery.abhii.me/r/testimonial-grid.json

API Reference

Component props
NameTypeDescription
titlestring | nullSection title; set to null to hide it.
itemsTestimonialItem[]Testimonials to render in the grid.
classNamestringAdditional CSS classes for the wrapper.
gridClassNamestringAdditional CSS classes for the grid container.
cardClassNamestringAdditional CSS classes for each card.
highlightClassNamestringAdditional CSS classes for highlighted text.

Usage Recommendations

Use when you have 4+ testimonials to fill the grid evenly.
Keep quotes concise to avoid uneven card heights.
You can also just use the testimonial card and style the grid as you like, see the example in above 'Code' section.
When installing shadcn, you can choose the 'nova' preset (lucide/geist) to match the intended typography.
Design Notes

The core idea is to render the testimonials as a responsive grid with a consistent card header, so names, roles, and avatars stay easy to scan. Each quote can include a highlighted segment with its own styling, and the cards use subtle hover contrast for a little feedback. I also added a grayscale-to-color avatar transition for gentle emphasis; you can remove that filter in the component if you want the grid to feel quieter.