Fan-style testimonial carousel with stacked cards and animated left/right controls.
"Refinery made it easier to assemble polished UI pieces quickly without fighting the design system."
"The component vault feels organized and practical, like having a clean starting point for every screen."
"It is easy to find well-crafted building blocks here, which keeps the work moving instead of slowing down."
"The spacing, hierarchy, and motion details feel thoughtful, so the final interface looks put together fast."
"Refinery gives the kind of reusable patterns that make dashboard work feel repeatable and calmer."
"The cards and sections feel like a polished UI kit, but with just enough personality to stay memorable."
"Refinery makes the UI workflow feel lighter, because the pieces already look coherent and production-ready."
npx shadcn@latest add https://refinery.abhii.me/r/testimonial-carousel.json| Name | Type | Description |
|---|---|---|
| title | string | null | Section title; set to null to hide it. |
| items | TestimonialItem[] | Testimonials to render in the carousel. |
| initialIndex | number | Initial active card index. |
| className | string | Additional CSS classes for the section. |
| stageClassName | string | Additional CSS classes for the fan stage. |
| cardClassName | string | Additional CSS classes for each card. |
| controlsClassName | string | Additional CSS classes for the controls wrapper. |
| buttonClassName | string | Additional CSS classes for control buttons. |
Slot configuration is used to define each card's position, rotation, scale, opacity, and vertical offset around the active index. Motion animates every card into its current slot, clicking a card makes it active, and the controls step through the index. The stage uses fixed dimensions so the absolute positioning has enough room to create the layered fan effect.