import { apiClient } from './client' export interface OnboardingStatus { created_flow: boolean ran_session: boolean exported_session: boolean /** @deprecated Phase 2 — kept for backward-compat. New UI no longer branches on this. */ tried_ai_assistant: boolean invited_teammate: boolean connected_psa: boolean is_team_user: boolean dismissed: boolean // Phase 2 (Task 41) — drive the unified next-step card + checklist. email_verified: boolean shop_setup_done: boolean } export async function getOnboardingStatus(): Promise { const response = await apiClient.get('/users/onboarding-status') return response.data } export async function dismissOnboarding(): Promise { await apiClient.post('/users/onboarding-status/dismiss') } // --- Welcome wizard (Phase 2) --------------------------------------------- export type WizardStep = 1 | 2 | 3 export type WizardAction = 'complete' | 'skip' export type TeamSizeBucket = '1-2' | '3-5' | '6-10' | '11-25' | '26+' export type RoleAtSignup = 'owner' | 'lead_tech' | 'tech' | 'other' export type PrimaryPsa = 'connectwise' | 'autotask' | 'halopsa' | 'none' export interface OnboardingStepData { // Step 1 company_name?: string team_size_bucket?: TeamSizeBucket role_at_signup?: RoleAtSignup // Step 2 primary_psa?: PrimaryPsa } export interface OnboardingStepRequest { step: WizardStep action: WizardAction data?: OnboardingStepData } export interface OnboardingStepResponse { onboarding_step_completed: number | null onboarding_dismissed: boolean } export const onboardingApi = { getStatus: getOnboardingStatus, dismiss: dismissOnboarding, /** Persist welcome-wizard progress for the current user. */ async updateStep(payload: OnboardingStepRequest): Promise { const response = await apiClient.patch( '/users/me/onboarding-step', payload, ) return response.data }, /** Skip the rest of the welcome wizard — sets users.onboarding_dismissed=TRUE. */ async dismissRest(): Promise { const response = await apiClient.post( '/users/me/onboarding-dismiss-rest', ) return response.data }, }