From 977425fdb9cf55a0209c1bb2656774caa2fcb291 Mon Sep 17 00:00:00 2001 From: Usman Baig Date: Thu, 26 Mar 2026 23:33:36 +0100 Subject: [PATCH] feat: break visitor carousel into 5 separate slides with unique titles --- components/checkout/FeatureSlideshow.tsx | 16 ++++++++++++++-- .../mockups/pulse-features-carousel.tsx | 10 +++++----- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/components/checkout/FeatureSlideshow.tsx b/components/checkout/FeatureSlideshow.tsx index 7502ac7..79b8c12 100644 --- a/components/checkout/FeatureSlideshow.tsx +++ b/components/checkout/FeatureSlideshow.tsx @@ -4,7 +4,7 @@ import { useState, useEffect, useCallback } from 'react' import Image from 'next/image' import { AnimatePresence, motion } from 'framer-motion' import { PulseMockup } from '@/components/marketing/mockups/pulse-mockup' -import { PulseFeaturesCarousel } from '@/components/marketing/mockups/pulse-features-carousel' +import { PagesCard, ReferrersCard, LocationsCard, TechnologyCard, PeakHoursCard } from '@/components/marketing/mockups/pulse-features-carousel' import { FunnelMockup } from '@/components/marketing/mockups/funnel-mockup' import { EmailReportMockup } from '@/components/marketing/mockups/email-report-mockup' @@ -13,9 +13,21 @@ interface Slide { mockup: React.ReactNode } +function FeatureCard({ children }: { children: React.ReactNode }) { + return ( +
+ {children} +
+ ) +} + const slides: Slide[] = [ { headline: 'Your traffic, at a glance.', mockup: }, - { headline: 'Everything you need to know about your visitors.', mockup: }, + { headline: 'See which pages perform best.', mockup: }, + { headline: 'Know where your visitors come from.', mockup: }, + { headline: 'Visitors from around the world.', mockup: }, + { headline: 'Understand your audience's tech stack.', mockup: }, + { headline: 'Find your peak traffic hours.', mockup: }, { headline: 'See where visitors drop off.', mockup: }, { headline: 'Reports delivered to your inbox.', mockup: }, ] diff --git a/components/marketing/mockups/pulse-features-carousel.tsx b/components/marketing/mockups/pulse-features-carousel.tsx index be2def2..1201b18 100644 --- a/components/marketing/mockups/pulse-features-carousel.tsx +++ b/components/marketing/mockups/pulse-features-carousel.tsx @@ -113,7 +113,7 @@ function BarRow({ // ─── Card 1: Pages ─────────────────────────────────────────────────────────── -function PagesCard() { +export function PagesCard() { const data = [ { label: '/', value: 142 }, { label: '/products/drop', value: 68 }, @@ -169,7 +169,7 @@ function getReferrerIcon(name: string, favicon?: string) { const FAVICON_URL = 'https://www.google.com/s2/favicons' -function ReferrersCard() { +export function ReferrersCard() { const data = [ { label: 'Direct', value: 186 }, { label: 'Google', value: 94, domain: 'google.com' }, @@ -206,7 +206,7 @@ function ReferrersCard() { // ─── Card 3: Locations (Real Dotted Map) ───────────────────────────────────── -function LocationsCard() { +export function LocationsCard() { const mockData = [ { country: 'CH', pageviews: 320 }, { country: 'US', pageviews: 186 }, @@ -300,7 +300,7 @@ const BROWSER_ICONS: Record = { Opera: '/icons/browsers/opera.svg', } -function TechnologyCard() { +export function TechnologyCard() { const data = [ { label: 'Chrome', value: 412 }, { label: 'Safari', value: 189 }, @@ -381,7 +381,7 @@ function getHighlightColor(value: number, max: number): string { return HIGHLIGHT_COLORS[4] } -function PeakHoursCard() { +export function PeakHoursCard() { const max = Math.max(...MOCK_GRID.flat()) // Find best time