import React, { useState } from 'react'; import { ResearchWizard } from '../../components/Research'; import { BlogResearchResponse } from '../../services/blogWriterApi'; import { ResearchPersonaModal } from '../../components/Research/ResearchPersonaModal'; import { OnboardingCompetitorModal } from '../../components/Research/OnboardingCompetitorModal'; import { useProjectRestoration } from './hooks/useProjectRestoration'; import { usePersonaManagement } from './hooks/usePersonaManagement'; import { useCompetitorManagement } from './hooks/useCompetitorManagement'; import { Header } from './components/Header'; import { LeftPanel } from './components/LeftPanel'; import { FooterStats } from './components/FooterStats'; import { PersonaDetailsModal } from './components/PersonaDetailsModal'; import { ResearchPreset } from './types'; import { dashboardStyles } from './styles'; export const ResearchDashboard: React.FC = () => { const [results, setResults] = useState(null); const [showDebug, setShowDebug] = useState(false); const [showPersonaDetailsModal, setShowPersonaDetailsModal] = useState(false); // Custom hooks for state management const projectRestoration = useProjectRestoration(); const personaManagement = usePersonaManagement(); const competitorManagement = useCompetitorManagement(); const handleComplete = (researchResults: BlogResearchResponse) => { setResults(researchResults); }; const handlePresetClick = (preset: ResearchPreset) => { projectRestoration.setPresetKeywords([preset.keywords]); projectRestoration.setPresetIndustry(preset.industry); projectRestoration.setPresetTargetAudience(preset.targetAudience); projectRestoration.setPresetMode(preset.researchMode); projectRestoration.setPresetConfig(preset.config); setResults(null); }; const handleOpenPersonaDetails = async () => { setShowPersonaDetailsModal(true); await personaManagement.handleOpenPersonaDetails(); }; return (
{/* Animated Background Elements */}
{/* Header */}
{/* Main Content */}
{/* Left Panel */} {/* Main Content - Wizard */}
{/* Footer Stats */} {results && } {/* Research Persona Generation Modal */} personaManagement.setShowPersonaModal(false)} onGenerate={personaManagement.handleGeneratePersona} onCancel={personaManagement.handleCancelPersona} /> {/* Competitor Analysis Modal */} competitorManagement.setShowCompetitorModal(false)} data={competitorManagement.competitorData} loading={competitorManagement.loadingCompetitors} error={competitorManagement.competitorError} onRefresh={competitorManagement.handleRefreshCompetitors} /> {/* Research Persona Details Modal */} setShowPersonaDetailsModal(false)} />
); }; export default ResearchDashboard;