"use client"; import { Suspense, useCallback, useEffect, useState } from "react"; import { JM, JV } from "@/components/project-creation/modal-theme"; import { AtlasChat } from "@/components/AtlasChat"; import { BuildLivePlanPanel, addSectionContextRef, } from "@/components/project-main/BuildLivePlanPanel"; import { type ChatContextRef, contextRefKey, } from "@/lib/chat-context-refs"; export function MvpSetupDescribeView({ projectId, workspace }: { projectId: string; workspace: string }) { const [chatContextRefs, setChatContextRefs] = useState([]); const [tab, setTab] = useState<"chat" | "plan">("chat"); const [narrow, setNarrow] = useState(false); useEffect(() => { const mq = window.matchMedia("(max-width: 900px)"); const apply = () => setNarrow(mq.matches); apply(); mq.addEventListener("change", apply); return () => mq.removeEventListener("change", apply); }, []); const removeChatContextRef = useCallback((key: string) => { setChatContextRefs(prev => prev.filter(r => contextRefKey(r) !== key)); }, []); const addPlanSectionToChat = useCallback((label: string, phaseId: string | null) => { setChatContextRefs(prev => addSectionContextRef(prev, label, phaseId)); }, []); return (
Describe
Tell Vibn about your idea — your plan fills in on the right as you go.
{narrow && (
{(["chat", "plan"] as const).map(id => ( ))}
)}
}>
); }