import React, { useState } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; import { PhoneFrame } from './PhoneFrame'; import { Activity, Zap, MessageSquare, TrendingUp, ChevronRight, User, BarChart2, Send } from 'lucide-react'; type Tab = 'dashboard' | 'chat' | 'roi'; export const AppShowcase: React.FC = () => { const [activeTab, setActiveTab] = useState('dashboard'); const [isTrainingDay, setIsTrainingDay] = useState(true); return (
{/* Left Column: Content & Tabs */}

See Inside the
Black Box.

Experience how FitMate adapts to your biology in real-time.

{/* Interactive Tab Controls */}
{/* Right Column: Phone Mockup */}
{/* Glow behind phone */}
{/* Persistent Tab Bar */}
{[ { icon: Activity, label: 'Plan', active: activeTab === 'dashboard' }, { icon: MessageSquare, label: 'Chat', active: activeTab === 'chat' }, { icon: TrendingUp, label: 'Trends', active: activeTab === 'roi' }, { icon: User, label: 'Profile', active: false }, ].map((tab, i) => (
{tab.label}
))}
{/* --- DASHBOARD VIEW --- */} {activeTab === 'dashboard' && ( {/* Header */}
Wednesday, Oct 24

Summary

{/* iOS Segmented Control */}
{/* Apple Watch Style Rings */}
{/* Definitions for Gradients */} {/* Background Track */} {/* Animated Progress Ring */} {/* Center Stats */}
{isTrainingDay ? '2,850' : '2,100'}
kcal Left
{/* Cards Grid */}
Carbs
{isTrainingDay ? '320g' : '150g'}
Protein
{isTrainingDay ? '200g' : '220g'}
)} {/* --- CHAT VIEW --- */} {activeTab === 'chat' && (
{/* Header with Blur */}
Co-Pilot
{/* Timestamp */}
Today 9:42 AM
{/* User Message (iMessage style) */}
I ate a burger and fries. Roughly 1200 cals. Am I screwed?
{/* AI Message */}
Not at all. You're just 400 calories over.
I've removed 50g of carbs from tomorrow's plan to balance the weekly load. Enjoy the protein! 🍔
{/* Input Area */}
Type a message...
)} {/* --- ROI VIEW --- */} {activeTab === 'roi' && (
Trend Weight
184.2 -1.4 lbs
Last 30 Days
{/* Graph Container */}
{/* Grid */}
{[0,1,2,3].map(i =>
)}
{/* Trend Weight Area */} {/* Trend Weight Line */} {/* Scale Weight Dots */} {[ {cx: 20, cy: 175}, {cx: 60, cy: 160}, {cx: 100, cy: 168}, {cx: 140, cy: 145}, {cx: 180, cy: 155}, {cx: 220, cy: 130}, {cx: 260, cy: 140}, {cx: 300, cy: 115} ].map((dot, i) => ( ))}
{/* Insight Card */}
Weekly Adherence
94% on track
)}
); }; const PlusIcon = () => ( );