|
2 | 2 | import clsx from "clsx"; |
3 | 3 |
|
4 | 4 | import { cn } from "@/lib/utils"; |
5 | | -import { ArrowRight, MinusIcon, PlusIcon } from "lucide-react"; |
| 5 | +import { IconInfoCircle } from "@tabler/icons-react"; |
| 6 | +import { |
| 7 | + ArrowRight, |
| 8 | + MinusIcon, |
| 9 | + PlusCircleIcon, |
| 10 | + PlusIcon, |
| 11 | + X, |
| 12 | +} from "lucide-react"; |
6 | 13 | import { useTranslations } from "next-intl"; |
7 | 14 | import Link from "next/link"; |
8 | 15 | import { useRouter } from "next/navigation"; |
9 | 16 | import { useState } from "react"; |
10 | 17 | import { Container } from "./Container"; |
11 | 18 | import { Badge } from "./ui/badge"; |
12 | 19 | import { Button, buttonVariants } from "./ui/button"; |
| 20 | +import HeroVideoDialog from "./ui/hero-video-dialog"; |
13 | 21 | import { NumberInput } from "./ui/input"; |
14 | 22 | import { Tabs, TabsList, TabsTrigger } from "./ui/tabs"; |
| 23 | +import { |
| 24 | + Tooltip, |
| 25 | + TooltipContent, |
| 26 | + TooltipProvider, |
| 27 | + TooltipTrigger, |
| 28 | +} from "./ui/tooltip"; |
15 | 29 |
|
16 | 30 | function SwirlyDoodle(props: React.ComponentPropsWithoutRef<"svg">) { |
17 | 31 | return ( |
@@ -74,6 +88,8 @@ export function Pricing() { |
74 | 88 | const [isAnnual, setIsAnnual] = useState(false); |
75 | 89 | const [serverQuantity, setServerQuantity] = useState(1); |
76 | 90 | const featured = true; |
| 91 | + |
| 92 | + const [openVideo, setOpenVideo] = useState(false); |
77 | 93 | return ( |
78 | 94 | <section |
79 | 95 | id="pricing" |
@@ -272,6 +288,33 @@ export function Pricing() { |
272 | 288 | serverQuantity, |
273 | 289 | })} |
274 | 290 | </span> |
| 291 | + <TooltipProvider> |
| 292 | + <Tooltip open={openVideo}> |
| 293 | + <TooltipTrigger onClick={() => setOpenVideo(true)}> |
| 294 | + <IconInfoCircle className="size-5 text-muted-foreground hover:text-primary transition-colors " /> |
| 295 | + </TooltipTrigger> |
| 296 | + <TooltipContent className=" rounded-lg text-center w-[400px] z-[200] text-white font-semibold"> |
| 297 | + <div className="text-muted-foreground hover:text-primary transition-colors flex justify-end self-end w-full mb-2"> |
| 298 | + <X |
| 299 | + onClick={() => setOpenVideo(false)} |
| 300 | + className="text-muted-foreground hover:text-primary transition-colors flex self-end size-4 cursor-pointer" |
| 301 | + /> |
| 302 | + </div> |
| 303 | + <p className="text-primary mb-2 text-left"> |
| 304 | + We Recommend to watch the video to understand the |
| 305 | + benefits of Dokploy Cloud |
| 306 | + </p> |
| 307 | + |
| 308 | + <HeroVideoDialog |
| 309 | + className="block w-full max-w-md rounded-xl z-20" |
| 310 | + animationStyle="top-in-bottom-out" |
| 311 | + videoSrc="https://www.youtube.com/embed/x2s_Y5ON-ms?si=i6gntgMmyPDLuPih" |
| 312 | + thumbnailSrc="https://dokploy.com/banner.png" |
| 313 | + thumbnailAlt="Hero Video" |
| 314 | + /> |
| 315 | + </TooltipContent> |
| 316 | + </Tooltip> |
| 317 | + </TooltipProvider> |
275 | 318 | </div> |
276 | 319 |
|
277 | 320 | <div className="flex items-center space-x-2"> |
|
0 commit comments