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
Prop | Type | Default |
---|---|---|
items | ExpandableCardItem[] | - |
ExpandableCardItem
Prop | Type | Default |
---|---|---|
id | string | number | - |
src | string | - |
alt | string | - |
cardHeading | string | - |
content | React.ReactNode | - |