💄 Update pay wall dialog

This commit is contained in:
Luke Vella 2024-09-18 23:52:33 +01:00
parent edf8e93808
commit 0f5073c257
No known key found for this signature in database
GPG key ID: 469CAD687F0D784C
2 changed files with 108 additions and 99 deletions

View file

@ -22,120 +22,128 @@ export function PayWallDialogContent({
if (plan === "free") {
return (
<DialogContent size="sm">
<div>
<m.div
transition={{
delay: 0.5,
duration: 0.4,
type: "spring",
bounce: 0.5,
}}
initial={{ opacity: 0, y: -50 }}
animate={{ opacity: 1, y: 0 }}
className="text-center"
aria-hidden="true"
>
<Badge size="lg" variant="primary">
<Trans i18nKey="planPro" />
</Badge>
</m.div>
</div>
<div className="space-y-8">
<div>
<h2 className=" text-center text-xl font-bold">
<DialogContent className="w-[600px] p-4">
<article>
<header className="p-4">
<m.div
transition={{
delay: 0.5,
duration: 0.4,
type: "spring",
bounce: 0.5,
}}
initial={{ opacity: 0, y: -50 }}
animate={{ opacity: 1, y: 0 }}
className="text-center"
aria-hidden="true"
>
<Badge size="lg" variant="primary">
<Trans i18nKey="planPro" />
</Badge>
</m.div>
<h1 className="mb-1 mt-2 text-center text-xl font-bold">
<Trans defaults="Upgrade to Pro" i18nKey="upgradePromptTitle" />
</h2>
</h1>
<p className="text-muted-foreground text-center text-sm leading-relaxed">
<Trans
i18nKey="upgradeOverlaySubtitle3"
defaults="Unlock these feature by upgrading to a Pro plan."
/>
</p>
</div>
<ul className="grid grid-cols-1 gap-4 text-left">
<li className="flex items-start gap-x-3">
<div>
<CalendarCheck2Icon className="size-5 text-purple-600" />
</div>
<div>
<h3 className="text-sm font-semibold">
<Trans defaults="Finalize" i18nKey="finalize" />
</h3>
<p className="text-muted-foreground mt-0.5 text-pretty text-sm">
<Trans
i18nKey="finalizeFeatureDescription"
defaults="Select a final date for your event and notify participants."
/>
</p>
</div>
</li>
<li className="flex items-start gap-x-3">
<CopyIcon className="size-5 text-purple-600" />
<div>
<h3 className="text-sm font-semibold">
<Trans defaults="Duplicate" i18nKey="duplicateTitle" />
</h3>
<p className="text-muted-foreground mt-0.5 text-pretty text-sm">
<Trans
i18nKey="duplicateFeatureDescription"
defaults="Reuse dates and settings of a poll to create a new one."
/>
</p>
</div>
</li>
<li className="flex items-start gap-x-3">
<div>
<Settings2Icon className="size-5 text-purple-600" />
</div>
<div>
<h3 className="text-sm font-semibold">
<Trans
defaults="Advanced Settings"
i18nKey="advancedSettingsTitle"
/>
</h3>
<p className="text-muted-foreground mt-0.5 text-pretty text-sm">
<Trans
i18nKey="advancedSettingsDescription"
defaults="Hide participants, hide scores, require participant email address."
/>
</p>
</div>
</li>
<li className="flex items-start gap-x-3">
<div>
<ClockIcon className="size-5 text-purple-600" />
</div>
<div>
<h3 className="text-sm font-semibold">
<Trans
defaults="Keep Polls Indefinitely"
i18nKey="keepPollsIndefinitely"
/>
</h3>
<p className="text-muted-foreground mt-0.5 text-pretty text-sm">
<Trans
i18nKey="keepPollsIndefinitelyDescription"
defaults="Inactive polls will not be auto-deleted."
/>
</p>
</div>
</li>
</ul>
<div className="grid gap-2.5">
</header>
<section className="rounded-lg border bg-gray-50">
<ul className="divide-y text-left">
<li className="flex items-start gap-x-4 p-4">
<div>
<div className="inline-flex rounded-lg bg-indigo-100 p-2">
<CalendarCheck2Icon className="size-4 text-indigo-600" />
</div>
</div>
<div>
<h3 className="mb-1 text-sm font-semibold">
<Trans defaults="Finalize" i18nKey="finalize" />
</h3>
<p className="text-muted-foreground text-pretty text-sm leading-relaxed">
<Trans
i18nKey="finalizeFeatureDescription"
defaults="Select a final date for your event and notify participants."
/>
</p>
</div>
</li>
<li className="flex items-start gap-x-4 p-4">
<div className="inline-flex rounded-lg bg-violet-100 p-2">
<CopyIcon className="size-4 text-violet-600" />
</div>
<div>
<h3 className="mb-1 text-sm font-semibold">
<Trans defaults="Duplicate" i18nKey="duplicateTitle" />
</h3>
<p className="text-muted-foreground leading-rel text-pretty text-sm">
<Trans
i18nKey="duplicateFeatureDescription"
defaults="Reuse dates and settings of a poll to create a new one."
/>
</p>
</div>
</li>
<li className="flex items-start gap-x-4 p-4">
<div>
<div className="inline-flex rounded-lg bg-purple-100 p-2">
<Settings2Icon className="size-4 text-purple-600" />
</div>
</div>
<div>
<h3 className="mb-1 text-sm font-semibold">
<Trans
defaults="Advanced Settings"
i18nKey="advancedSettingsTitle"
/>
</h3>
<p className="text-muted-foreground leading-rel text-pretty text-sm">
<Trans
i18nKey="advancedSettingsDescription"
defaults="Hide participants, hide scores, require participant email address."
/>
</p>
</div>
</li>
<li className="flex items-start gap-x-4 p-4">
<div>
<div className="inline-flex rounded-lg bg-pink-100 p-2">
<ClockIcon className="size-4 text-pink-600" />
</div>
</div>
<div>
<h3 className="mb-1 text-sm font-semibold">
<Trans
defaults="Keep Polls Indefinitely"
i18nKey="keepPollsIndefinitely"
/>
</h3>
<p className="text-muted-foreground leading-rel text-pretty text-sm">
<Trans
i18nKey="keepPollsIndefinitelyDescription"
defaults="Inactive polls will not be auto-deleted."
/>
</p>
</div>
</li>
</ul>
</section>
<footer className="mt-4 grid gap-2.5">
<Button variant="primary" asChild>
<Link href="/settings/billing">
<Trans i18nKey="upgrade" defaults="Upgrade" />
</Link>
</Button>
<DialogClose asChild>
<Button>
<Button variant="ghost">
<Trans i18nKey="notToday" defaults="Not Today" />
</Button>
</DialogClose>
</div>
</div>
</footer>
</article>
</DialogContent>
);
}

View file

@ -53,7 +53,8 @@ const DialogContent = React.forwardRef<
<DialogPrimitive.Content
ref={ref}
className={cn(
"animate-in data-[state=open]:fade-in data-[state=open]:slide-in-from-top-8 shadow-huge z-50 grid w-full translate-y-0 gap-4 overflow-hidden rounded-md bg-white p-4",
"animate-in data-[state=open]:fade-in data-[state=open]:slide-in-from-top-8 shadow-huge z-50 grid w-full translate-y-0 gap-4 overflow-y-auto rounded-md bg-white p-4",
"max-h-[calc(100vh-2rem)]", // Add this line
{
"sm:max-w-sm": size === "sm",
"sm:max-w-md": size === "md",