import { AlertDialog, AlertDialogDescription, AlertDialogLabel } from '@reach/alert-dialog' import { FunctionComponent, useCallback, useRef } from 'react' import Icon from '@/Components/Icon/Icon' import { WebApplication } from '@/Application/Application' import { openSubscriptionDashboard } from '@/Utils/ManageSubscription' import { PremiumFeatureIconClass, PremiumFeatureIconName } from '../Icon/PremiumFeatureIcon' import { PremiumFeatureModalType } from './PremiumFeatureModalType' type Props = { application: WebApplication featureName: string hasSubscription: boolean hasAccount: boolean onClose: () => void showModal: boolean type: PremiumFeatureModalType } const PremiumFeaturesModal: FunctionComponent = ({ application, featureName, hasSubscription, hasAccount, onClose, showModal, type = PremiumFeatureModalType.UpgradePrompt, }) => { const plansButtonRef = useRef(null) const handleClick = useCallback(() => { if (hasSubscription) { void openSubscriptionDashboard(application) } else if (hasAccount) { void application.openPurchaseFlow() } else if (window.plansUrl) { window.location.assign(window.plansUrl) } onClose() }, [application, hasSubscription, hasAccount, onClose]) const UpgradePrompt = ( <> To take advantage of {featureName} and other advanced features, upgrade your current plan.
) const SuccessPrompt = ( <> Enjoy your new powered up experience.
) const title = type === PremiumFeatureModalType.UpgradePrompt ? 'Enable Advanced Features' : 'Your purchase was successful!' const iconName = type === PremiumFeatureModalType.UpgradePrompt ? PremiumFeatureIconName : '🎉' const iconClass = type === PremiumFeatureModalType.UpgradePrompt ? `h-12 w-12 ${PremiumFeatureIconClass}` : 'px-7 py-2 h-24 w-24 text-[50px]' return showModal ? (
{title}
{type === PremiumFeatureModalType.UpgradePrompt ? UpgradePrompt : SuccessPrompt}
) : null } export default PremiumFeaturesModal