Expandable Card

A linear inspired drawer modal with expansion animation

expandable-card-demo.tsx
import ExpandableCard, { ExpandableCardItem } from "@/components/ui/expandable-card/expandable-card";

const items: ExpandableCardItem[] = [
  {
    id: 1,
    src: "/water.svg",
    cardHeading: "Expandable Card",
    alt: "water flows",
    content: (
      <div>
        <p>
          Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
          magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
          consequat.
        </p>

        <p>
          Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
          Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
        </p>

        <p>
          Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem
          aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.
          Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni
          dolores eos qui ratione voluptatem sequi nesciunt.
        </p>
      </div>
    ),
  },
];

export default function ExpandableCardDemo() {
  return (
    <div>
      <ExpandableCard items={items} />
    </div>
  );
}

Installation

npx shadcn@latest add https://roiui.com/r/expandable-card.json

Anatomy

anatomy
import ExpandableCard from '../ui/expandable-card'

<ExpandableCard
  items={[
      {
          id: "1",
          src: "/image.jpg",
          alt: "Image alt text",
          cardHeading: "Card Title",
          content: <div>Card content</div>,
      },
  ]}
/>

Props

ExpandableCard

PropTypeDefault
items
ExpandableCardItem[]-

ExpandableCardItem

PropTypeDefault
id
string | number-
src
string-
alt
string-
cardHeading
string-
content
React.ReactNode-