import React, { useState, useEffect } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; import { X, Activity, Heart, AlertTriangle, Zap, MessageCircle, Moon, Cloud } from 'lucide-react'; import { AppSettings, CalendarEvent, PulseAnalysis } from '../types'; import { analyzeRelationshipPulse, interpretDream } from '../services/aiService'; import { Button } from './Button'; interface CosmicPulseModalProps { isOpen: boolean; onClose: () => void; events: CalendarEvent[]; settings: AppSettings; } export const CosmicPulseModal: React.FC = ({ isOpen, onClose, events, settings }) => { const [analysis, setAnalysis] = useState(null); const [loading, setLoading] = useState(false); const [dreamText, setDreamText] = useState(''); const [dreamResult, setDreamResult] = useState(''); const [dreamLoading, setDreamLoading] = useState(false); useEffect(() => { if (isOpen) { setLoading(true); analyzeRelationshipPulse(events, settings).then(res => { setAnalysis(res); setLoading(false); }); } else { // Reset state when closed setAnalysis(null); setDreamResult(''); setDreamText(''); } }, [isOpen, events, settings]); const handleInterpretDream = async () => { if (!dreamText) return; setDreamLoading(true); const res = await interpretDream(dreamText, settings); setDreamResult(res); setDreamLoading(false); }; return ( {isOpen && ( <>
{/* Header */}

Cosmic Pulse

{loading ? (

Analyzing Relationship Rythm...

Using {settings.aiProvider === 'ollama' ? 'Local Spirit (Ollama)' : 'Cloud Mind (Gemini)'}

) : analysis ? ( <> {/* Harmony Score */}

Harmony Score

{analysis.harmonyScore}
Current Vibe: {analysis.vibe}
{/* Alerts */} {analysis.burnoutWarning && (

Burnout Warning

{analysis.burnoutWarning}

)} {/* Conflicts */} {analysis.upcomingConflicts.length > 0 && (

Friction Points

{analysis.upcomingConflicts.map((c, i) => (
{c}
))}
)} {/* Smart Nudges */}

Smart Nudges

{analysis.smartNudges.map((nudge, i) => (

"{nudge}"

))}
) : null} {/* Dream Journal Section - Always visible */}

Dream Journal