90 lines
2.8 KiB
TypeScript
90 lines
2.8 KiB
TypeScript
import * as React from "react";
|
|
import { cn } from "@/lib/utils";
|
|
import { useMediaQuery } from "@/hooks/useMediaQuery";
|
|
import { Button } from "@/components/ui/button";
|
|
import {
|
|
Dialog,
|
|
DialogContent,
|
|
DialogDescription,
|
|
DialogHeader,
|
|
DialogTitle,
|
|
DialogTrigger,
|
|
} from "@/components/ui/dialog";
|
|
import {
|
|
Drawer,
|
|
DrawerClose,
|
|
DrawerContent,
|
|
DrawerDescription,
|
|
DrawerFooter,
|
|
DrawerHeader,
|
|
DrawerTitle,
|
|
DrawerTrigger,
|
|
} from "@/components/ui/drawer";
|
|
import { Input } from "@/components/ui/input";
|
|
import { Label } from "@/components/ui/label";
|
|
import StripePricingTable from "../PricingTable";
|
|
|
|
interface AddCreditsModalProps {
|
|
children: React.ReactNode;
|
|
}
|
|
|
|
function ProfileForm({ className }: React.ComponentProps<"form">) {
|
|
const buttonText = "Proceed to Payment";
|
|
return (
|
|
<form className={cn("grid items-start gap-4", className)}>
|
|
<div className="grid gap-2">
|
|
<Label htmlFor="email">Email</Label>
|
|
<Input
|
|
type="email"
|
|
id="email"
|
|
defaultValue="shadcn@example.com"
|
|
/>
|
|
</div>
|
|
<div className="grid gap-2">
|
|
<Label htmlFor="username">Username</Label>
|
|
<Input id="username" defaultValue="@shadcn" />
|
|
</div>
|
|
<Button type="submit" variant="upsell_primary">
|
|
{buttonText}
|
|
</Button>
|
|
</form>
|
|
);
|
|
}
|
|
|
|
const AddCreditsModal: React.FC<AddCreditsModalProps> = ({ children }) => {
|
|
const [open, setOpen] = React.useState(false);
|
|
const isDesktop = useMediaQuery("(min-width: 768px)");
|
|
const title = "Explore Elato's Voice Subscription Plans";
|
|
const subtitle =
|
|
"Unlock more features and get more done with Elato Premium Plans.";
|
|
|
|
if (isDesktop) {
|
|
return (
|
|
<Dialog open={open} onOpenChange={setOpen}>
|
|
<DialogTrigger asChild>{children}</DialogTrigger>
|
|
<DialogContent className="sm:max-w-[670px]">
|
|
<DialogHeader>
|
|
<DialogTitle>{title}</DialogTitle>
|
|
<DialogDescription>{subtitle}</DialogDescription>
|
|
</DialogHeader>
|
|
<StripePricingTable />
|
|
</DialogContent>
|
|
</Dialog>
|
|
);
|
|
}
|
|
|
|
return (
|
|
<Drawer open={open} onOpenChange={setOpen}>
|
|
<DrawerTrigger asChild>{children}</DrawerTrigger>
|
|
<DrawerContent>
|
|
<DrawerHeader className="text-left">
|
|
<DrawerTitle>{title}</DrawerTitle>
|
|
<DrawerDescription>{subtitle}</DrawerDescription>
|
|
</DrawerHeader>
|
|
<StripePricingTable />
|
|
</DrawerContent>
|
|
</Drawer>
|
|
);
|
|
};
|
|
|
|
export default AddCreditsModal;
|