import React, { useState } from 'react'; import { Scenario, UserSettings } from '../types'; import { CBT_GLOSSARY } from '../constants'; import { Sparkles, X, Loader2, AlertCircle, Info, Target, UserCircle2, BrainCircuit, Check, BarChart } from 'lucide-react'; import { Button } from './ui/button'; import { Textarea } from './ui/textarea'; import { ScrollArea } from './ui/scroll-area'; import { Card } from './ui/card'; import { Badge } from './ui/badge'; import { generateScenarioWithOpenRouter } from '../services/openRouterService'; interface ScenarioGeneratorProps { onGenerate: (scenario: Scenario) => void; onCancel: () => void; userSettings?: UserSettings; } const ScenarioGenerator: React.FC = ({ onGenerate, onCancel, userSettings }) => { const [prompt, setPrompt] = useState(''); const [selectedConcepts, setSelectedConcepts] = useState([]); const [selectedDifficulty, setSelectedDifficulty] = useState('Intermediate'); const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(null); const toggleConcept = (term: string) => { setSelectedConcepts(prev => prev.includes(term) ? prev.filter(t => t !== term) : [...prev, term] ); }; const handleGenerate = async () => { if (!prompt.trim() && selectedConcepts.length === 0) return; setIsLoading(true); setError(null); try { const scenario = await generateScenarioWithOpenRouter( prompt, selectedConcepts, selectedDifficulty, { apiKey: userSettings?.openRouterApiKey, model: userSettings?.roleplayModel } ); scenario.difficulty = selectedDifficulty; scenario.id = `custom-${Date.now()}-${scenario.id || 'generated'}`; onGenerate(scenario); } catch (err: any) { console.error("OpenRouter Scenario Generation error:", err); setError(err?.message || "Clinical scenario synthesis failed. Please check your OpenRouter API Key in Settings."); } finally { setIsLoading(false); } }; return (
{/* Header */}

Clinical Scenario Architect

AI Synthesis Engine • OpenRouter

{/* Natural Language Prompt */}
Describe the conflict or trigger