From 532f851d1fb03a9f286e40b12b9ad35c7d77cb85 Mon Sep 17 00:00:00 2001 From: Mark Henderson Date: Tue, 17 Mar 2026 16:58:35 -0700 Subject: [PATCH] =?UTF-8?q?ux:=20skip=20type=20selector=20=E2=80=94=20new?= =?UTF-8?q?=20project=20goes=20straight=20to=20name=20input?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - CreateProjectFlow now defaults to setup/fresh mode; type selector never shown - FreshIdeaSetup simplified to just project name + Start button (removed description field, 6-phase explanation copy, SetupHeader) Made-with: Cursor --- .../project-creation/CreateProjectFlow.tsx | 10 ++--- .../project-creation/FreshIdeaSetup.tsx | 43 ++++++------------- 2 files changed, 18 insertions(+), 35 deletions(-) diff --git a/components/project-creation/CreateProjectFlow.tsx b/components/project-creation/CreateProjectFlow.tsx index 97c8df4..1aa0135 100644 --- a/components/project-creation/CreateProjectFlow.tsx +++ b/components/project-creation/CreateProjectFlow.tsx @@ -19,13 +19,13 @@ interface CreateProjectFlowProps { type Step = "select-type" | "setup"; export function CreateProjectFlow({ open, onOpenChange, workspace }: CreateProjectFlowProps) { - const [step, setStep] = useState("select-type"); - const [mode, setMode] = useState(null); + const [step, setStep] = useState("setup"); + const [mode, setMode] = useState("fresh"); useEffect(() => { if (open) { - setStep("select-type"); - setMode(null); + setStep("setup"); + setMode("fresh"); } }, [open]); @@ -80,7 +80,7 @@ export function CreateProjectFlow({ open, onOpenChange, workspace }: CreateProje background: "#fff", borderRadius: 16, boxShadow: "0 12px 48px rgba(26,26,26,0.16)", width: "100%", - maxWidth: step === "select-type" ? 620 : 520, + maxWidth: 520, fontFamily: "Outfit, sans-serif", pointerEvents: "all", animation: "vibn-slideUp 0.18s cubic-bezier(0.4,0,0.2,1)", diff --git a/components/project-creation/FreshIdeaSetup.tsx b/components/project-creation/FreshIdeaSetup.tsx index d1f9408..12e97a7 100644 --- a/components/project-creation/FreshIdeaSetup.tsx +++ b/components/project-creation/FreshIdeaSetup.tsx @@ -3,12 +3,11 @@ import { useRef, useState } from "react"; import { useRouter } from "next/navigation"; import { toast } from "sonner"; -import { SetupHeader, FieldLabel, TextInput, PrimaryButton, type SetupProps } from "./setup-shared"; +import { FieldLabel, TextInput, PrimaryButton, type SetupProps } from "./setup-shared"; -export function FreshIdeaSetup({ workspace, onClose, onBack }: SetupProps) { +export function FreshIdeaSetup({ workspace, onClose }: SetupProps) { const router = useRouter(); const [name, setName] = useState(""); - const [description, setDescription] = useState(""); const [loading, setLoading] = useState(false); const nameRef = useRef(null); @@ -27,7 +26,7 @@ export function FreshIdeaSetup({ workspace, onClose, onBack }: SetupProps) { slug: name.toLowerCase().replace(/[^a-z0-9]+/g, "-"), product: { name: name.trim() }, creationMode: "fresh", - sourceData: { description: description.trim() }, + sourceData: {}, }), }); if (!res.ok) { @@ -47,10 +46,15 @@ export function FreshIdeaSetup({ workspace, onClose, onBack }: SetupProps) { return (
- +
+
+ New project +
+ +
Project name - One-line description (optional) - setDescription(e.target.value)} - placeholder="A short description to kick off the conversation" - style={{ - width: "100%", padding: "11px 14px", marginBottom: 20, - borderRadius: 8, border: "1px solid #e0dcd4", - background: "#faf8f5", fontSize: "0.9rem", - fontFamily: "Outfit, sans-serif", color: "#1a1a1a", - outline: "none", boxSizing: "border-box", - }} - onFocus={e => (e.currentTarget.style.borderColor = "#1a1a1a")} - onBlur={e => (e.currentTarget.style.borderColor = "#e0dcd4")} - /> - -
- Vibn will guide you through 6 discovery phases — Big Picture, Users, Features, Business Model, Screens, and Risks — building your product plan as you go. -
- - Start with Vibn → + Start →
);