From 00243cbc73041a1229eab9fb9f7c6483fd8f994b Mon Sep 17 00:00:00 2001 From: mawkone Date: Mon, 8 Jun 2026 12:20:18 -0700 Subject: [PATCH] design: integrate 4-step onboarding flow (Type, Idea, Status, Look) --- .../_onboarding/onboarding-entrepreneur.tsx | 84 +++++++++++++++++-- 1 file changed, 78 insertions(+), 6 deletions(-) diff --git a/vibn-frontend/_onboarding/onboarding-entrepreneur.tsx b/vibn-frontend/_onboarding/onboarding-entrepreneur.tsx index cb530af..7ddab69 100644 --- a/vibn-frontend/_onboarding/onboarding-entrepreneur.tsx +++ b/vibn-frontend/_onboarding/onboarding-entrepreneur.tsx @@ -8,8 +8,8 @@ import { PresetGroup, } from "./onboarding-primitives"; -const ENTREP_TOTAL = 3; -const ENTREP_STEP_NAMES = ["Idea", "Status", "Look"]; +const ENTREP_TOTAL = 4; +const ENTREP_STEP_NAMES = ["Type", "Idea", "Status", "Look"]; const IDEA_PROMPTS = [ "A community for indie game devs to swap playtesters, with weekly demo nights", @@ -101,6 +101,68 @@ export function EntrepIdea({ value, onChange }) { ); } +const ARCHETYPES = [ + { + id: "saas", + label: "Web App / SaaS", + desc: "Dashboards, tools, interactive portals", + }, + { + id: "marketplace", + label: "Marketplace", + desc: "Directories, bookings, listings", + }, + { + id: "marketing", + label: "Marketing Site", + desc: "Portfolios, lead capture, landing pages", + }, + { + id: "ecommerce", + label: "Online Store", + desc: "Carts, checkouts, selling physical/digital goods", + }, + { + id: "mobile", + label: "Mobile App", + desc: "iOS and Android mobile applications", + }, + { + id: "blog", + label: "Blog / Publication", + desc: "Newsletters, articles, content hubs", + }, + { + id: "not_sure", + label: "I'm not sure", + desc: "Let Vibn help you decide based on your description", + fullWidth: true, + }, +]; + +function EntrepType({ value, onChange }) { + return ( + <> + + ({ + id: a.id, + label: a.label, + desc: a.desc, + icon: undefined, + fullWidth: a.fullWidth, + }))} + value={value} + onChange={onChange} + columns={2} + /> + + ); +} + const STATUS_OPTIONS = [ { id: "scratch", @@ -279,6 +341,14 @@ export function EntrepreneurPath({ canNext, onSkip = null; if (step === 0) { + body = ( + onUpdate({ productType: v })} + /> + ); + canNext = !!data.productType; + } else if (step === 1) { body = ( ); canNext = (data.idea || "").trim().length >= 8; - } else if (step === 1) { + } else if (step === 2) { body = ( - + {body}