design: replace onboarding audience step with starting-point progress status cards

This commit is contained in:
2026-06-08 12:18:33 -07:00
parent 8305b9c813
commit c6fe32d9e6

View File

@@ -5,12 +5,11 @@ import {
WizardQ,
WizardFooter,
LANE_LABELS,
ChipGroup,
Field,
PresetGroup,
} from "./onboarding-primitives";
const ENTREP_TOTAL = 3;
const ENTREP_STEP_NAMES = ["Idea", "Audience", "Look"];
const ENTREP_STEP_NAMES = ["Idea", "Status", "Look"];
const IDEA_PROMPTS = [
"A community for indie game devs to swap playtesters, with weekly demo nights",
@@ -102,36 +101,43 @@ export function EntrepIdea({ value, onChange }) {
);
}
const AUDIENCE_PRESETS = [
"Me and people like me",
"A small community I'm part of",
"Local people in my city",
"Anyone searching for this",
"Other small businesses",
"Hobbyists in a niche I love",
const STATUS_OPTIONS = [
{
id: "scratch",
label: "We are starting from scratch",
desc: "No code, no wireframes, no assets. Just a clean slate and a fresh vision.",
},
{
id: "research",
label: "I've done some research I can share",
desc: "I have PDFs, wireframes, landing copy, or user interviews to help guide the build.",
},
{
id: "existing",
label: "I've already built some of the project",
desc: "I have an existing repo, database schema, or mockups to import.",
},
];
function EntrepAudience({ value, onChange }) {
const isPreset = AUDIENCE_PRESETS.includes(value);
function EntrepStatus({ value, onChange }) {
return (
<>
<WizardQ
title="Who is it for?"
sub="The clearer your audience, the better the copy Vibn writes for it."
title="Where are you starting from?"
sub="Helps Vibn set up the right repository, data pipelines, and workspace scope."
/>
<ChipGroup
options={AUDIENCE_PRESETS}
values={value ? [value] : []}
onChange={(arr) => onChange(arr[arr.length - 1] || "")}
<PresetGroup
options={STATUS_OPTIONS.map((o) => ({
id: o.id,
label: o.label,
desc: o.desc,
icon: undefined,
}))}
value={value}
onChange={onChange}
columns={3}
minimal={false}
/>
<Field label="Or describe them in your own words" optional>
<input
className="wiz-input"
placeholder="e.g. dog owners in Brooklyn who walk before work"
value={!isPreset ? value : ""}
onChange={(e) => onChange(e.target.value)}
/>
</Field>
</>
);
}
@@ -282,12 +288,12 @@ export function EntrepreneurPath({
canNext = (data.idea || "").trim().length >= 8;
} else if (step === 1) {
body = (
<EntrepAudience
value={data.audience || ""}
onChange={(v) => onUpdate({ audience: v })}
<EntrepStatus
value={data.projectStatus || ""}
onChange={(v) => onUpdate({ projectStatus: v })}
/>
);
canNext = (data.audience || "").trim().length >= 3;
canNext = !!data.projectStatus;
} else {
body = (
<EntrepVibe value={data.vibe} onChange={(v) => onUpdate({ vibe: v })} />