'use client'
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'
import { EmailReportMockup } from '@/components/marketing/mockups/email-report-mockup'
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: ,
},
]
export default function FeatureSlideshow() {
const [activeIndex, setActiveIndex] = useState(0)
const advance = useCallback(() => {
setActiveIndex((prev) => (prev + 1) % slides.length)
}, [])
useEffect(() => {
const timer = setInterval(advance, 5000)
return () => clearInterval(timer)
}, [advance])
const slide = slides[activeIndex]
return (
{/* Background image */}
{/* Dark overlay */}
{/* Content */}
{/* Text */}
{slide.headline}
{slide.description}
{slide.features.map((f) => (
-
{f}
))}
{/* Mockup */}
{/* Orange glow */}
{slide.mockup}
{/* Dot indicators */}
{slides.map((_, i) => (
)
}