返回 presentation-ai
popover.tsx
根目录 / src / components / plate / ui / popover.tsx
1 "use client";
2
3 import * as PopoverPrimitive from "@radix-ui/react-popover";
4 import type * as React from "react";
5
6 import { cn } from "@/lib/utils";
7
8 function Popover({
9 ...props
10 }: React.ComponentProps<typeof PopoverPrimitive.Root>) {
11 return <PopoverPrimitive.Root data-slot="popover" {...props} />;
12 }
13
14 function PopoverTrigger({
15 ...props
16 }: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {
17 return <PopoverPrimitive.Trigger data-slot="popover-trigger" {...props} />;
18 }
19
20 function PopoverContent({
21 className,
22 align = "center",
23 sideOffset = 4,
24 ...props
25 }: React.ComponentProps<typeof PopoverPrimitive.Content>) {
26 return (
27 <PopoverPrimitive.Portal>
28 <PopoverPrimitive.Content
29 data-slot="popover-content"
30 align={align}
31 sideOffset={sideOffset}
32 className={cn(
33 "z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-hidden data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
34 className,
35 )}
36 {...props}
37 />
38 </PopoverPrimitive.Portal>
39 );
40 }
41
42 function PopoverAnchor({
43 ...props
44 }: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {
45 return <PopoverPrimitive.Anchor data-slot="popover-anchor" {...props} />;
46 }
47
48 export { Popover, PopoverAnchor, PopoverContent, PopoverTrigger };
49
49 lines Plain Text