Carousel Layout

An expressive, overlapping card composition for a more editorial presentation.

Preview

Community absolutely loves Refinery!

"Refinery made it easier to assemble polished UI pieces quickly without fighting the design system."

- Ari Meadow,TouYube

"The component vault feels organized and practical, like having a clean starting point for every screen."

- Nora Vale,Toogle

"It is easy to find well-crafted building blocks here, which keeps the work moving instead of slowing down."

- Jules Haven,Metamime

"The spacing, hierarchy, and motion details feel thoughtful, so the final interface looks put together fast."

- Mina Alder,Z Combinatr

"Refinery gives the kind of reusable patterns that make dashboard work feel repeatable and calmer."

- Eli Rowan,Slate Foundry

"The cards and sections feel like a polished UI kit, but with just enough personality to stay memorable."

- Tess Marlow,Pixel Combinator

"Refinery makes the UI workflow feel lighter, because the pieces already look coherent and production-ready."

- Iris Bloom,Vanta Loom

Installation

1. Run the following command in your terminal:
npx shadcn@latest add @refinery/testimonial-carousel

API Reference

Component props
NameTypeDescription
titlestring | nullSection title; set to null to hide it.
itemsTestimonialItem[]Testimonials to render in the carousel.
initialIndexnumberInitial active card index.
classNamestringAdditional CSS classes for the section.
stageClassNamestringAdditional CSS classes for the fan stage.
cardClassNamestringAdditional CSS classes for each card.
controlsClassNamestringAdditional CSS classes for the controls wrapper.
buttonClassNamestringAdditional CSS classes for control buttons.

Usage Recommendations

For the best experience, use the 'Geist' theme...
Always ensure the component is properly styled and accessible.
Design Notes

Here, key was to make the card stack up in cards-spread-out-in-hand type layout. To do so, each of the cards have slot defined that defines their offset, rotation, scale, position and opacity. The cards are then absolutely positioned on top of each other, and the slot config is applied to each card based on its index in the array. The central card is the most prominent, while the cards towards the edges are more rotated, scaled down, and faded out to create a sense of depth and focus. The interactions are simple hover effects that slightly lift the card and increase its opacity for emphasis. I also made sure to keep the text legible and well-contrasted against the background, especially for the cards that are further back in the stack. You can remove the navigation chevron icons at bottom as cards are clickable and testimonial can be navigated with just clicks on the cards. The card background is kept different from neutral shade to provide it more thematic feel. This variant looks better in light theme than dark theme.