Sora UI
Marketing

Case Study Carousel

A 3D stacked case study carousel featuring interactive depth cards, squircle graphics, impact metrics, and glowing pill pagination.

Loading carousel...

Installation

Option A: Via Sora UI CLI (Recommended)

If your project uses `shadcn/ui`, you can install this component and its dependencies automatically:

npx soraui-cli add case-study-carousel

Option B: Manual Copy-Paste

1. Copy the code from the Code > Component tab above.
2. Paste it in your project at components/case-study-carousel.tsx.
3. Install the dependencies:
npm install framer-motion lucide-react clsx tailwind-merge

API Reference

Complete properties reference for the Case Study Carousel. Supports custom 3D visuals, responsive drag physics, metrics grids, and keyboard accessibility.

CaseStudyCarousel Props

PropTypeDefaultDescription
slidesCaseStudySlide[]DEFAULT_CASE_STUDIESArray of case study slide items (title, description, visual, stats, logo, readMoreLink).
autoPlaybooleanfalseEnables automatic slide cycling.
autoPlayIntervalnumber6000Delay between slide transitions in milliseconds (when autoPlay is true).
classNamestringCustom classes applied to the outer carousel wrapper.
cardClassNamestringCustom classes applied to each slide card.

CaseStudySlide Object Schema

PropertyTypeDefaultDescription
idstring | numberrequiredUnique identifier for the slide item.
companyNamestringCompany or project name.
logoReactNodeCustom React node for the company logo badge.
titlestringrequiredMain case study heading / headline.
descriptionstringrequiredDetailed narrative text / summary.
readMoreLinkstringURL destination for the Read More button.
onReadMore() => voidClick callback for custom modal/drawer triggers.
statsCaseStudyStat[]Array of impact metrics ({ value, label }).
visualReactNode<LiquidDropletGraphic />Visual node inside the left 3D squircle box.
visualBgstringbg-zinc-950Tailwind background classes for the visual squircle.

Examples

Standard Carousel

Default carousel rendering 3D liquid droplet visuals, company tags, impact metrics, and responsive depth cards.

App.tsx
import { CaseStudyCarousel } from "@/components/case-study-carousel";

export default function Demo() {
  return (
    <div className="py-12">
      <CaseStudyCarousel />
    </div>
  );
}

Custom Slides & Autoplay

Pass your own custom case studies with custom metrics and continuous autoplay transitions.

App.tsx
import { CaseStudyCarousel, type CaseStudySlide } from "@/components/case-study-carousel";

const customSlides: CaseStudySlide[] = [
  {
    id: 1,
    companyName: "ACME CORP",
    title: "Enterprise Design System Migration",
    description: "Unified 42 distinct product teams into a single Tailwind CSS token system.",
    readMoreLink: "/case-studies/acme",
    stats: [
      { value: "4.8x", label: "Dev Velocity" },
      { value: "-45%", label: "CSS Bundle" },
      { value: "100%", label: "Tokens Synced" }
    ]
  },
  {
    id: 2,
    companyName: "NEBULA",
    title: "Autonomous Agent Workflow Orchestration",
    description: "Accelerated support ticket resolution with zero downtime deployment pipelines.",
    readMoreLink: "/case-studies/nebula",
    stats: [
      { value: "<200ms", label: "Response" },
      { value: "99.9%", label: "Success Rate" },
      { value: "12M+", label: "Tasks Run" }
    ]
  }
];

export default function CustomDemo() {
  return (
    <CaseStudyCarousel 
      slides={customSlides}
      autoPlay={true}
      autoPlayInterval={5000}
    />
  );
}