diff --git a/apps/mail/components/pricing/comparision.tsx b/apps/mail/components/pricing/comparision.tsx index f5d20dcc9..a571d62d5 100644 --- a/apps/mail/components/pricing/comparision.tsx +++ b/apps/mail/components/pricing/comparision.tsx @@ -280,7 +280,7 @@ export default function Comparision() { >
- Get Zero Pro + Start free trial
diff --git a/apps/mail/components/pricing/pricing-card.tsx b/apps/mail/components/pricing/pricing-card.tsx index c081f4abb..19644bc47 100644 --- a/apps/mail/components/pricing/pricing-card.tsx +++ b/apps/mail/components/pricing/pricing-card.tsx @@ -262,7 +262,7 @@ export default function PricingCard() { >
- Get Zero Pro + Start free trial
diff --git a/apps/mail/components/ui/pricing-dialog.tsx b/apps/mail/components/ui/pricing-dialog.tsx index daf731026..ef881d58e 100644 --- a/apps/mail/components/ui/pricing-dialog.tsx +++ b/apps/mail/components/ui/pricing-dialog.tsx @@ -10,6 +10,8 @@ import { useBilling } from '@/hooks/use-billing'; import { Button } from '@/components/ui/button'; import { cn } from '@/lib/utils'; import { useState, useEffect } from 'react'; +import { PricingSwitch } from './pricing-switch'; +import { Badge } from './badge'; import { toast } from 'sonner'; import { useQueryState } from 'nuqs'; @@ -22,7 +24,10 @@ interface PricingDialogProps { export function PricingDialog({ open: propOpen, onOpenChange: propOnOpenChange, children }: PricingDialogProps) { const { attach } = useBilling(); const [isLoading, setIsLoading] = useState(false); + const [isAnnual, setIsAnnual] = useState(false); const [pricingDialog, setPricingDialog] = useQueryState('pricingDialog'); + const monthlyPrice = 20; + const annualPrice = monthlyPrice * 0.5; // 50% off for annual billing const isControlled = propOpen !== undefined; const open = isControlled ? propOpen : pricingDialog === 'true'; @@ -44,10 +49,11 @@ export function PricingDialog({ open: propOpen, onOpenChange: propOnOpenChange, setIsLoading(true); toast.promise( attach({ - productId: 'pro-example', + productId: isAnnual ? 'pro_annual' : 'pro-example', successUrl: `${window.location.origin}/mail/inbox?success=true`, }), { + success: 'Redirecting to payment...', error: 'Failed to process upgrade. Please try again later.', finally: () => setIsLoading(false), }, @@ -88,20 +94,30 @@ export function PricingDialog({ open: propOpen, onOpenChange: propOnOpenChange,
-
-
- hi +
+
+
+ hi +
+
+
+ setIsAnnual(checked)} /> +

Billed Annually

+ Save 50%
- $20 + ${isAnnual ? annualPrice : monthlyPrice} + {isAnnual && ( + ${monthlyPrice} + )}
- /MONTH + / MONTH
@@ -116,7 +132,7 @@ export function PricingDialog({ open: propOpen, onOpenChange: propOnOpenChange,
-
+
@@ -124,7 +140,7 @@ export function PricingDialog({ open: propOpen, onOpenChange: propOnOpenChange,
-
+
@@ -132,7 +148,7 @@ export function PricingDialog({ open: propOpen, onOpenChange: propOnOpenChange,
-
+
@@ -140,7 +156,7 @@ export function PricingDialog({ open: propOpen, onOpenChange: propOnOpenChange,
-
+
@@ -148,7 +164,7 @@ export function PricingDialog({ open: propOpen, onOpenChange: propOnOpenChange,
-
+
@@ -156,7 +172,7 @@ export function PricingDialog({ open: propOpen, onOpenChange: propOnOpenChange,
-
+
@@ -164,7 +180,7 @@ export function PricingDialog({ open: propOpen, onOpenChange: propOnOpenChange,
-
+
@@ -180,7 +196,7 @@ export function PricingDialog({ open: propOpen, onOpenChange: propOnOpenChange, >
- {isLoading ? 'Processing...' : 'Get Zero Pro'} + {isLoading ? 'Processing...' : 'Start free trial'}