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 { Button } from "@/components/ui/button/button";
import {
PreviewCard,
PreviewCardArrow,
PreviewCardPopup,
PreviewCardPortal,
PreviewCardPositioner,
PreviewCardTrigger,
} from "@/components/ui/preview-card/preview-card";
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>
<PreviewCardTrigger
closeDelay={200}
href="https://github.com/base-ui"
rel="noopener noreferrer"
render={
<Button className={styles.triggerLink} variant="link">
Github
</Button>
}
target="_blank"
/>
<PreviewCardPortal>
<PreviewCardPositioner align="center" side="top" sideOffset={8}>
<PreviewCardPopup>
<PreviewCardArrow />
<div className={styles.previewContent}>
<div className={styles.previewHeader}>
<Image alt="Profile" className={styles.previewAvatar} height={32} src="/preetecool.png" width={32} />
<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>
);
}
npx shadcn@latest add @roiui/preview-cardnpx shadcn@latest add @roiui/preview-card-tailwindanatomy
<PreviewCard>
<PreviewCardTrigger href="...">Link</PreviewCardTrigger>
<PreviewCardPortal>
<PreviewCardPositioner>
<PreviewCardPopup>
<PreviewCardArrow />
</PreviewCardPopup>
</PreviewCardPositioner>
</PreviewCardPortal>
</PreviewCard>