Testimonial Carousel
refinery/testimonial-carouselFreeComponent
Fan-style testimonial carousel with stacked cards and animated left/right controls.
Live preview
live · rendered by the registry
Rendered by refinery on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://refinery.abhii.me/r/testimonial-carousel.jsonSource
1"use client";23import { useCallback, useState } from "react";4import { motion } from "motion/react";5import { cn } from "@/lib/utils";67type TestimonialItem = {8 text: string;9 company: string;10 name: string;11};1213type TestimonialCarouselProps = {14 title?: string | null;15 items?: TestimonialItem[];16 initialIndex?: number;17 className?: string;18 stageClassName?: string;19 cardClassName?: string;20 controlsClassName?: string;21 buttonClassName?: string;22};2324const DEFAULT_TITLE = "Community absolutely loves Refinery!";2526const DEFAULT_TESTIMONIALS: TestimonialItem[] = [27 {28 text: "Refinery made it easier to assemble polished UI pieces quickly without fighting the design system.",29 company: "TouYube",30 name: "Ari Meadow",31 },32 {33 text: "The component vault feels organized and practical, like having a clean starting point for every screen.",34 company: "Toogle",35 name: "Nora Vale",36 },37 {38 text: "It is easy to find well-crafted building blocks here, which keeps the work moving instead of slowing down.",39 company: "Metamime",40 name: "Jules Haven",41 },42 {43 text: "The spacing, hierarchy, and motion details feel thoughtful, so the final interface looks put together fast.",44 company: "Z Combinatr",45 name: "Mina Alder",46 },47 {48 text: "Refinery gives the kind of reusable patterns that make dashboard work feel repeatable and calmer.",49 company: "Slate Foundry",50 name: "Eli Rowan",51 },52 {53 text: "The cards and sections feel like a polished UI kit, but with just enough personality to stay memorable.",54 company: "Pixel Combinator",55 name: "Tess Marlow",56 },57 {58 text: "It helps turn rough ideas into consistent layouts much faster, especially when the team needs a clean baseline.",59 company: "Frame Forge",60 name: "Owen Bright",61 },62 {63 text: "The attention to interaction detail makes the whole library feel more finished than a typical component dump.",64 company: "Grid Union",65 name: "Lina Cross",66 },67 {68 text: "Everything feels adaptable, so it is simple to shape a unique interface without rebuilding common patterns.",69 company: "Atom Layer",70 name: "Noah Finch",71 },72 {73 text: "Refinery makes the UI workflow feel lighter, because the pieces already look coherent and production-ready.",74 company: "Vanta Loom",75 name: "Iris Bloom",76 },77];7879// Each slot defines how a card looks at a given offset from center80const SLOT_CONFIG = [81// … truncated
What it pulls in
npm packages
Files it writes
More from refinery
All 16 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Analog Clock Screensaveranalog-clock-screensaver | refinery | Components | Free | 1 dep | |
| Avatar Circleavatar-circle | refinery | Components | Free | 1 dep | |
| DVD Screensaverdvd-screensaver | refinery | Components | Free | 1 dep | |
| Floating Cardfloating-card | refinery | Components | Free | 1 dep | |
| Floating Navfloating-nav | refinery | Components | Free | 1 dep | |
| Glowy Buttonglowy-button | refinery | Components | Free | 1 dep | |
| Move To Topmove-to-top-button | refinery | Components | Free | 1 dep | |
| Notification Badgenotification-badge | refinery | Components | Free | 1 dep |
