import { RefreshCw } from "lucide-react"; import { useAppStore } from "@/store/app-store"; // Extracted hooks import { useSpecLoading, useSpecSave, useSpecGeneration, } from "./spec-view/hooks"; // Extracted components import { SpecHeader, SpecEditor, SpecEmptyState, } from "./spec-view/components"; // Extracted dialogs import { CreateSpecDialog, RegenerateSpecDialog, } from "./spec-view/dialogs"; export function SpecView() { const { currentProject, appSpec } = useAppStore(); // Loading state const { isLoading, specExists, loadSpec } = useSpecLoading(); // Save state const { isSaving, hasChanges, saveSpec, handleChange, setHasChanges } = useSpecSave(); // Generation state and handlers const { // Dialog visibility showCreateDialog, setShowCreateDialog, showRegenerateDialog, setShowRegenerateDialog, // Create state projectOverview, setProjectOverview, isCreating, generateFeatures, setGenerateFeatures, analyzeProjectOnCreate, setAnalyzeProjectOnCreate, featureCountOnCreate, setFeatureCountOnCreate, // Regenerate state projectDefinition, setProjectDefinition, isRegenerating, generateFeaturesOnRegenerate, setGenerateFeaturesOnRegenerate, analyzeProjectOnRegenerate, setAnalyzeProjectOnRegenerate, featureCountOnRegenerate, setFeatureCountOnRegenerate, // Feature generation isGeneratingFeatures, // Status currentPhase, errorMessage, // Handlers handleCreateSpec, handleRegenerate, } = useSpecGeneration({ loadSpec }); // Reset hasChanges when spec is reloaded // (This is needed because loadSpec updates appSpec in the store) // No project selected if (!currentProject) { return (
No project selected