chatbot-template/components/ui/popover.tsx
dmitry.galkin 3e21c2334c Initial commit: EGBE chatbot template
Stripped from vercel/chatbot (Apache 2.0):
- Dropped @vercel/* packages and AI Gateway
- Removed artifacts feature (code/text/sheet/image side panel)
- Switched AI provider to @ai-sdk/openai-compatible -> EGBE LiteLLM
- Replaced Vercel Blob upload with data URLs
- Dropped Redis resumable streams and rate limiter (in-memory now)
- Added Dockerfile (Next.js standalone) + entrypoint that runs migrations
- Wired DATABASE_URL, EGBE_AI_API_URL/KEY, NEXT_PUBLIC_BASE_URL for app-deploy.sh
2026-05-25 14:54:04 +04:00

40 lines
1.5 KiB
TypeScript

"use client";
import { Popover } from "radix-ui";
import { cn } from "@/lib/utils";
function PopoverRoot({ ...props }: React.ComponentProps<typeof Popover.Root>) {
return <Popover.Root data-slot="popover" {...props} />;
}
function PopoverTrigger({ ...props }: React.ComponentProps<typeof Popover.Trigger>) {
return <Popover.Trigger data-slot="popover-trigger" {...props} />;
}
function PopoverAnchor({ ...props }: React.ComponentProps<typeof Popover.Anchor>) {
return <Popover.Anchor data-slot="popover-anchor" {...props} />;
}
function PopoverContent({
className,
align = "center",
sideOffset = 4,
...props
}: React.ComponentProps<typeof Popover.Content>) {
return (
<Popover.Portal>
<Popover.Content
align={align}
className={cn(
"z-50 w-72 rounded-xl border border-border/60 bg-card/95 p-4 shadow-[var(--shadow-float)] backdrop-blur-xl outline-hidden data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 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",
className
)}
data-slot="popover-content"
sideOffset={sideOffset}
{...props}
/>
</Popover.Portal>
);
}
export { PopoverRoot as Popover, PopoverTrigger, PopoverContent, PopoverAnchor };