
import { useState } from "react";
import { DashboardViewer } from "./DashboardViewer";
import { PRDViewer } from "./PRDViewer";
import { ArchitectureViewer } from "./ArchitectureViewer";
import { ChecklistViewer } from "./ChecklistViewer";
import { YAMLViewer } from "./YAMLViewer";
import { StandardMarkdownViewer } from "./StandardMarkdownViewer";

interface BMADContentViewerFactoryProps {
  selectedFile: string | null;
  selectedProject: string | null;
  content: string;
}

export const BMADContentViewerFactory = ({ 
  selectedFile, 
  selectedProject, 
  content 
}: BMADContentViewerFactoryProps) => {
  if (!selectedFile) {
    return (
      <div className="h-full flex items-center justify-center bg-gray-50">
        <div className="text-center">
          <div className="text-6xl mb-4">📊</div>
          <h2 className="text-xl font-semibold text-gray-600 mb-2">BMAD Project Viewer</h2>
          <p className="text-gray-500">
            {selectedProject 
              ? "Select a file from the sidebar to view its contents"
              : "Select a BMAD project to get started"
            }
          </p>
        </div>
      </div>
    );
  }

  const filename = selectedFile.split('/').pop() || '';

  // Route to specialized viewers based on file type
  if (filename === 'index.md') {
    return <DashboardViewer content={content} selectedFile={selectedFile} />;
  }

  if (filename === 'prd.md' || filename === 'prd.draft.md') {
    return <PRDViewer content={content} selectedFile={selectedFile} />;
  }

  if (filename.includes('architecture') || filename.includes('sequence-diagrams')) {
    return <ArchitectureViewer content={content} selectedFile={selectedFile} />;
  }

  if (selectedFile.includes('/checklists/') || filename.includes('checklist')) {
    return <ChecklistViewer content={content} selectedFile={selectedFile} />;
  }

  if (filename.endsWith('.yml') || filename.endsWith('.yaml')) {
    return <YAMLViewer content={content} selectedFile={selectedFile} />;
  }

  // Default to standard markdown viewer
  return <StandardMarkdownViewer content={content} selectedFile={selectedFile} />;
};
