"use client" import { useState, useEffect } from "react" import { PhoneStep } from "./phone-step" import { SmsStep } from "./sms-step" import { CabinetSelectStep } from "./cabinet-select-step" import { InnStep } from "./inn-step" import { MarketplaceApiStep } from "./marketplace-api-step" import { ConfirmationStep } from "./confirmation-step" import { CheckCircle } from "lucide-react" type AuthStep = 'phone' | 'sms' | 'cabinet-select' | 'inn' | 'marketplace-api' | 'confirmation' | 'complete' type CabinetType = 'fulfillment' | 'seller' | 'logist' | 'wholesale' interface OrganizationData { name?: string fullName?: string address?: string isActive?: boolean } interface ApiKeyValidation { sellerId?: string sellerName?: string tradeMark?: string isValid?: boolean } interface AuthData { phone: string smsCode: string cabinetType: CabinetType | null inn: string organizationData: OrganizationData | null wbApiKey: string wbApiValidation: ApiKeyValidation | null ozonApiKey: string ozonApiValidation: ApiKeyValidation | null isAuthenticated: boolean partnerCode?: string | null } interface AuthFlowProps { partnerCode?: string | null } export function AuthFlow({ partnerCode }: AuthFlowProps = {}) { const [step, setStep] = useState('phone') const [authData, setAuthData] = useState({ phone: '', smsCode: '', cabinetType: null, inn: '', organizationData: null, wbApiKey: '', wbApiValidation: null, ozonApiKey: '', ozonApiValidation: null, isAuthenticated: false, partnerCode: partnerCode }) // При завершении авторизации инициируем проверку и перенаправление useEffect(() => { if (step === 'complete') { const timer = setTimeout(() => { // Принудительно перенаправляем в дашборд window.location.href = '/dashboard' }, 2000) // Задержка для показа сообщения о завершении return () => clearTimeout(timer) } }, [step]) const handlePhoneNext = (phone: string) => { setAuthData(prev => ({ ...prev, phone })) setStep('sms') } const handleSmsNext = async (smsCode: string) => { setAuthData(prev => ({ ...prev, smsCode, isAuthenticated: true })) // SMS код уже проверен в SmsStep компоненте // Просто переходим к следующему шагу setStep('cabinet-select') } const handleCabinetNext = (cabinetType: CabinetType) => { setAuthData(prev => ({ ...prev, cabinetType })) if (cabinetType === 'fulfillment' || cabinetType === 'logist' || cabinetType === 'wholesale') { setStep('inn') } else { setStep('marketplace-api') } } const handleInnNext = (inn: string, organizationData?: OrganizationData) => { setAuthData(prev => ({ ...prev, inn, organizationData: organizationData || null })) setStep('confirmation') } const handleMarketplaceApiNext = (apiData: { wbApiKey?: string wbApiValidation?: ApiKeyValidation ozonApiKey?: string ozonApiValidation?: ApiKeyValidation }) => { setAuthData(prev => ({ ...prev, wbApiKey: apiData.wbApiKey || '', wbApiValidation: apiData.wbApiValidation || null, ozonApiKey: apiData.ozonApiKey || '', ozonApiValidation: apiData.ozonApiValidation || null })) setStep('confirmation') } const handleConfirmation = () => { setStep('complete') } const handleSmsBack = () => { setStep('phone') } const handleCabinetBack = () => { setStep('sms') } const handleInnBack = () => { setStep('cabinet-select') } const handleMarketplaceApiBack = () => { setStep('cabinet-select') } const handleConfirmationBack = () => { if (authData.cabinetType === 'fulfillment' || authData.cabinetType === 'logist' || authData.cabinetType === 'wholesale') { setStep('inn') } else { setStep('marketplace-api') } } if (step === 'complete') { return (
{/* Floating Particles */}

Добро пожаловать!

Регистрация успешно завершена

Тип кабинета:

{ authData.cabinetType === 'fulfillment' ? 'Фулфилмент' : authData.cabinetType === 'logist' ? 'Логистика' : authData.cabinetType === 'wholesale' ? 'Поставщик' : 'Селлер' }

Переход в личный кабинет...
) } return ( <> {step === 'phone' && } {step === 'sms' && ( )} {step === 'cabinet-select' && ( )} {step === 'inn' && ( )} {step === 'marketplace-api' && ( )} {step === 'confirmation' && ( )} {(step as string) === 'complete' && (

Регистрация завершена!

Ваш {authData.cabinetType === 'fulfillment' ? 'фулфилмент кабинет' : authData.cabinetType === 'seller' ? 'селлер кабинет' : authData.cabinetType === 'logist' ? 'логистический кабинет' : 'оптовый кабинет'} {' '}успешно создан

Переход в личный кабинет...

)} ) }