Preview Card
A popup that appears when a link is hovered, showing a preview for sighted users.
Hover over the link below to see a preview card:
"use client";
import Image from "next/image";
import {
PreviewCard,
PreviewCardTrigger,
PreviewCardPortal,
PreviewCardPositioner,
PreviewCardPopup,
PreviewCardArrow,
} from "@/components/ui/preview-card/preview-card";
import { Button } from "@/components/ui/button/button";
import styles from "./preview-card-demo.module.css";
export default function PreviewCardDemo() {
return (
<div className={styles.container}>
<p className={styles.description}>
Hover over the link below to see a preview card:
</p>
<PreviewCard closeDelay={200}>
<PreviewCardTrigger
href="https://github.com/base-ui"
target="_blank"
rel="noopener noreferrer"
render={
<Button variant="link" className={styles.triggerLink}>
Github
</Button>
}
></PreviewCardTrigger>
<PreviewCardPortal>
<PreviewCardPositioner side="top" align="center" sideOffset={8}>
<PreviewCardPopup>
<PreviewCardArrow />
<div className={styles.previewContent}>
<div className={styles.previewHeader}>
<Image
src="/preetecool.png"
alt="Profile"
width={32}
height={32}
className={styles.previewAvatar}
/>
<div className="previewInfo">
<h3 className={styles.previewName}>
Preet
</h3>
<p className={styles.previewUsername}>
@preetecool
</p>
</div>
</div>
<p className={styles.previewBio}>
❤️ Design & Build
</p>
</div>
</PreviewCardPopup>
</PreviewCardPositioner>
</PreviewCardPortal>
</PreviewCard>
</div>
);
}
Installation
npx shadcn@latest add https://roiui.com/r/preview-card.json
Anatomy
anatomy
import {
PreviewCard,
PreviewCardTrigger,
PreviewCardPortal,
PreviewCardBackdrop,
PreviewCardPositioner,
PreviewCardPopup,
PreviewCardArrow,
} from '../ui/preview-card'
<PreviewCard>
<PreviewCardTrigger href="...">Link</PreviewCardTrigger>
<PreviewCardPortal>
<PreviewCardPositioner>
<PreviewCardPopup>
<PreviewCardArrow />
</PreviewCardPopup>
</PreviewCardPositioner>
</PreviewCardPortal>
</PreviewCard>