The onboarding wizard guides new talent through a 7-step setup flow, replacing the original single-page setup screen. It uses animated step transitions, a visual progress bar, and fetches live data to show completion status.
Component: SetupScreen in packages/client/src/screens/SetupScreen.tsx
Exported from @zooly/client.
| Step | Name | What It Does |
|---|---|---|
| 1 | Profile | Links to profile setup. Shows current display name and avatar status. |
| 2 | Campaigns | Informational step about campaign types. Links to campaign settings. |
| 3 | Terms | Links to license setup screens (voice, image, merch). |
| 4 | Samples | Informational step about uploading voice/image samples. |
| 5 | Z Link | Shows preview of public page URL. Links to Z Link page. |
| 6 | Payments | Shows Stripe Connect status. Links to payout setup if not connected. |
| 7 | Review | Summary dashboard. Shows completion status per area. "Go to Dashboard" button. |
The SetupScreen component accepts navigation callbacks from the host application:
| Prop | Type | Purpose |
|---|---|---|
onGoToProfile | () => void | Navigate to profile editing |
onGoToDashboard | () => void | Navigate to main dashboard |
onGoToVoiceLicense | () => void (optional) | Navigate to voice license setup |
onGoToImageLicense | () => void (optional) | Navigate to image license setup |
onGoToMerchLicense | () => void (optional) | Navigate to merch license setup |
framer-motion AnimatePresence for slide transitions between stepsOn mount, the component fetches:
GET /api/account — current account data (display name, slug, avatar, Stripe status)GET /api/account/payout-route — payout route data (Stripe Connect account)This data drives the completion indicators in the Review step and the Stripe Connect status in the Payments step.
Progress is derived from the current data state rather than stored separately:
displayName and slugstripeConnectAccountId or payout route has a Stripe accountThe wizard does not persist the current step position — if the user leaves and returns, they start at step 1 but can navigate freely.
To add a new step:
STEPS array in packages/client/src/screens/SetupScreen.tsxAnimatePresence block| File | Role |
|---|---|
packages/client/src/screens/SetupScreen.tsx | Wizard component with all 7 steps |
packages/client/src/index.ts | Exports SetupScreen |