diff --git a/components/checkout/FeatureSlideshow.tsx b/components/checkout/FeatureSlideshow.tsx index b8d9d63..2ffbbaa 100644 --- a/components/checkout/FeatureSlideshow.tsx +++ b/components/checkout/FeatureSlideshow.tsx @@ -3,7 +3,6 @@ import { useState, useEffect, useCallback } from 'react' import Image from 'next/image' import { AnimatePresence, motion } from 'framer-motion' -import { Check } from '@phosphor-icons/react' import { PulseMockup } from '@/components/marketing/mockups/pulse-mockup' import { PulseFeaturesCarousel } from '@/components/marketing/mockups/pulse-features-carousel' import { FunnelMockup } from '@/components/marketing/mockups/funnel-mockup' @@ -11,60 +10,14 @@ import { EmailReportMockup } from '@/components/marketing/mockups/email-report-m interface Slide { headline: string - description: string - features: string[] mockup: React.ReactNode } const slides: Slide[] = [ - { - headline: 'Your traffic, at a glance.', - description: - 'A clean, real-time dashboard that shows pageviews, visitors, bounce rate, and session duration — no learning curve required.', - features: [ - 'Real-time visitor count', - 'Pageview trends over time', - 'Bounce rate & session duration', - 'Top pages & referrers', - ], - mockup: , - }, - { - headline: 'Everything you need to know about your visitors.', - description: - 'Break down your audience by device, browser, OS, country, and language — all without cookies or fingerprinting.', - features: [ - 'Device & browser breakdown', - 'Country & region stats', - 'Language preferences', - 'Screen size distribution', - ], - mockup: , - }, - { - headline: 'See where visitors drop off.', - description: - 'Build funnels to track multi-step flows and find exactly where users abandon your conversion paths.', - features: [ - 'Multi-step funnel builder', - 'Drop-off visualization', - 'Conversion rate tracking', - 'Custom event support', - ], - mockup: , - }, - { - headline: 'Reports delivered to your inbox.', - description: - 'Schedule weekly or monthly email reports so your team stays informed without logging in.', - features: [ - 'Weekly & monthly digests', - 'Customizable metrics', - 'Team-wide distribution', - 'PDF & inline previews', - ], - mockup: , - }, + { headline: 'Your traffic, at a glance.', mockup: }, + { headline: 'Everything you need to know about your visitors.', mockup: }, + { headline: 'See where visitors drop off.', mockup: }, + { headline: 'Reports delivered to your inbox.', mockup: }, ] export default function FeatureSlideshow() { @@ -107,24 +60,10 @@ export default function FeatureSlideshow() { transition={{ duration: 0.45 }} className="flex flex-col gap-8" > - {/* Text */} -
-

- {slide.headline} -

-

- {slide.description} -

- -
    - {slide.features.map((f) => ( -
  • - - {f} -
  • - ))} -
-
+ {/* Headline only */} +

+ {slide.headline} +

{/* Mockup */}
diff --git a/components/checkout/PaymentForm.tsx b/components/checkout/PaymentForm.tsx index 061289b..94487c0 100644 --- a/components/checkout/PaymentForm.tsx +++ b/components/checkout/PaymentForm.tsx @@ -98,7 +98,9 @@ export default function PaymentForm({ plan, interval, limit }: PaymentFormProps) // Cleanup Mollie components on unmount useEffect(() => { return () => { - Object.values(componentsRef.current).forEach((c) => c?.unmount()) + Object.values(componentsRef.current).forEach((c) => { + try { c?.unmount() } catch { /* DOM already removed */ } + }) } }, [])