import React, { useState, useCallback } from 'react'; import { LeafIcon, SparklesIcon, SunIcon, WindIcon, SnowflakeIcon, SunriseIcon, AlertTriangleIcon } from '../components/icons'; import Spinner from '../components/Spinner'; import { generateSeasonalGuide, isAIConfigured } from '../services/geminiService'; import type { SeasonalGuide, View } from '../types'; import { AppStatus } from '../types'; const seasonIcons: { [key: string]: React.FC> } = { Spring: SunriseIcon, Summer: SunIcon, Autumn: WindIcon, Winter: SnowflakeIcon, }; interface SeasonalGuideViewProps { setActiveView: (view: View) => void; } const SeasonalGuideView: React.FC = ({ setActiveView }) => { const [status, setStatus] = useState(AppStatus.IDLE); const [species, setSpecies] = useState(''); const [location, setLocation] = useState(''); const [guideData, setGuideData] = useState(null); const [error, setError] = useState(''); const aiConfigured = isAIConfigured(); const handleGenerate = useCallback(async () => { if (!species.trim()) { setError('Please enter a bonsai species.'); return; } if (!location.trim()) { setError('Please enter your city or region.'); return; } setStatus(AppStatus.ANALYZING); setError(''); setGuideData(null); try { const result = await generateSeasonalGuide(species, location); if (result) { setGuideData(result); setStatus(AppStatus.SUCCESS); } else { throw new Error('Failed to generate the seasonal guide. The AI may be busy. Please try again.'); } } catch(e: any) { setError(e.message); setStatus(AppStatus.ERROR); } }, [species, location]); return (

Seasonal Care Guides

Get a year-round plan for any bonsai species, tailored to your local climate.

setSpecies(e.target.value)} className="block w-full rounded-md border-0 py-2 px-3 text-stone-900 shadow-sm ring-1 ring-inset ring-stone-300 placeholder:text-stone-400 focus:ring-2 focus:ring-inset focus:ring-green-600" placeholder="e.g., Ficus Retusa" disabled={status === AppStatus.ANALYZING} /> setLocation(e.target.value)} className="block w-full rounded-md border-0 py-2 px-3 text-stone-900 shadow-sm ring-1 ring-inset ring-stone-300 placeholder:text-stone-400 focus:ring-2 focus:ring-inset focus:ring-green-600" placeholder="e.g., Miami, Florida" disabled={status === AppStatus.ANALYZING} />
{error &&

{error}

} {!aiConfigured && (

AI features are disabled. Please set your Gemini API key in the{' '} .

)}
{status === AppStatus.ANALYZING && } {status === AppStatus.SUCCESS && guideData && (

Seasonal Guide for a {species} in {location}

{guideData.sort((a,b) => ['Spring', 'Summer', 'Autumn', 'Winter'].indexOf(a.season) - ['Spring', 'Summer', 'Autumn', 'Winter'].indexOf(b.season)).map(season => { const Icon = seasonIcons[season.season] || LeafIcon; return (

{season.season}

{season.summary}

    {season.tasks.map(task => (
  • {task.task} {task.importance}
  • ))}
) })}
)}
); }; export default SeasonalGuideView;