1import { PreviewCard as PreviewCardPrimitive } from "@base-ui/react/preview-card";
2
3import { cn } from "~/lib/utils";
4
5const PreviewCard = PreviewCardPrimitive.Root;
6
7function PreviewCardTrigger(props: PreviewCardPrimitive.Trigger.Props) {
8 return <PreviewCardPrimitive.Trigger data-slot="preview-card-trigger" {...props} />;
9}
10
11function PreviewCardPopup({
12 className,
13 align = "start",
14 side = "top",
15 sideOffset = 6,
16 ...props
17}: PreviewCardPrimitive.Popup.Props & {
18 align?: PreviewCardPrimitive.Positioner.Props["align"];
19 side?: PreviewCardPrimitive.Positioner.Props["side"];
20 sideOffset?: PreviewCardPrimitive.Positioner.Props["sideOffset"];
21}) {
22 return (
23 <PreviewCardPrimitive.Portal>
24 <PreviewCardPrimitive.Positioner
25 align={align}
26 className="z-[140] max-w-(--available-width)"
27 data-slot="preview-card-positioner"
28 side={side}
29 sideOffset={sideOffset}
30 >
31 <PreviewCardPrimitive.Popup
32 className={cn(
33 "origin-(--transform-origin) rounded-lg border bg-popover text-popover-foreground shadow-lg outline-none transition-[scale,opacity] data-ending-style:scale-98 data-starting-style:scale-98 data-ending-style:opacity-0 data-starting-style:opacity-0",
34 className,
35 )}
36 data-slot="preview-card-popup"
37 {...props}
38 />
39 </PreviewCardPrimitive.Positioner>
40 </PreviewCardPrimitive.Portal>
41 );
42}
43
44export { PreviewCard, PreviewCardPopup, PreviewCardTrigger };