{"version":3,"sources":["../src/react/components/OnboardingForm.tsx","../src/react/assets/zerocat-logo.ts","../src/react/components/CapAuth.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport {\n    Box,\n    Button,\n    Flex,\n    FormControl,\n    FormLabel,\n    Heading,\n    Input,\n    Radio,\n    RadioGroup,\n    Select,\n    Stack,\n    Text,\n    VStack,\n    useToast,\n    FormErrorMessage,\n    Image,\n} from '@chakra-ui/react';\nimport type { User, UserDetails } from '../../types';\n\n// Import the logo directly\n// This will be bundled with the library during build\nimport ZeroCatLogo from '../assets/zerocat-logo';\n\ninterface OnboardingFormProps {\n    walletAddress: string;\n    onComplete: (user: User) => void;\n    onBack: () => void;\n    theme?: {\n        primary: string;\n        secondary: string;\n    };\n    customStyles?: {\n        container?: string;\n        card?: string;\n        button?: string;\n        input?: string;\n        select?: string;\n    };\n}\n\ntype AccountType = 'human' | 'entity';\n\nexport function OnboardingForm({\n    walletAddress,\n    onComplete,\n    onBack,\n    theme = { primary: 'blue', secondary: 'teal' },\n}: OnboardingFormProps) {\n    const toast = useToast();\n    const [loading, setLoading] = useState(false);\n    const [accountType, setAccountType] = useState<AccountType>('human');\n    const [errors, setErrors] = useState<Record<string, string>>({});\n    const [availableRoles, setAvailableRoles] = useState<string[]>(['User']);\n    const [defaultRole, setDefaultRole] = useState<string>('User');\n\n    const [details, setDetails] = useState<UserDetails>({\n        first_name: '',\n        last_name: '',\n        entity_name: '',\n        email: '',\n        role: 'User',\n    });\n\n    // Fetch available roles from the API\n    useEffect(() => {\n        const fetchRoles = async () => {\n            try {\n                const response = await fetch('/api/roles');\n                if (response.ok) {\n                    const data = await response.json();\n                    if (data.roles && Array.isArray(data.roles) && data.roles.length > 0) {\n                        setAvailableRoles(data.roles);\n                        \n                        if (data.defaultRole) {\n                            setDefaultRole(data.defaultRole);\n                            setDetails(prev => ({\n                                ...prev,\n                                role: data.defaultRole\n                            }));\n                        }\n                    }\n                }\n            } catch (error) {\n                console.error('Failed to fetch roles:', error);\n                // Fall back to hardcoded roles\n            }\n        };\n\n        fetchRoles();\n    }, []);\n\n    const handleDetailsChange = <K extends keyof UserDetails>(\n        key: K,\n        value: UserDetails[K]\n    ) => {\n        setDetails((prev) => ({\n            ...prev,\n            [key]: value,\n        }));\n\n        if (errors[key]) {\n            setErrors((prev) => {\n                const newErrors = { ...prev };\n                delete newErrors[key];\n                return newErrors;\n            });\n        }\n    };\n\n    const validateForm = (): boolean => {\n        const newErrors: Record<string, string> = {};\n\n        if (accountType === 'human') {\n            if (!details.first_name.trim()) {\n                newErrors.first_name = 'First name is required';\n            }\n            if (!details.last_name.trim()) {\n                newErrors.last_name = 'Last name is required';\n            }\n        } else {\n            if (!details.entity_name.trim()) {\n                newErrors.entity_name = 'Entity name is required';\n            }\n        }\n\n        if (!details.email.trim()) {\n            newErrors.email = 'Email is required';\n        } else if (!/\\S+@\\S+\\.\\S+/.test(details.email)) {\n            newErrors.email = 'Email is invalid';\n        }\n\n        setErrors(newErrors);\n        return Object.keys(newErrors).length === 0;\n    };\n\n    const handleSubmit = async (e: React.FormEvent) => {\n        e.preventDefault();\n\n        if (!validateForm()) {\n            return;\n        }\n\n        setLoading(true);\n\n        try {\n            const payload = {\n                wallet_address: walletAddress,\n                first_name: accountType === 'human' ? details.first_name : '',\n                last_name: accountType === 'human' ? details.last_name : 'ENTITY',\n                entity_name: accountType === 'entity' ? details.entity_name : '',\n                email: details.email,\n                role: details.role,\n                account_type: accountType,\n            };\n\n            const createResponse = await fetch('/api/users/create', {\n                method: 'POST',\n                headers: { 'Content-Type': 'application/json' },\n                body: JSON.stringify(payload),\n            });\n\n            if (!createResponse.ok) {\n                throw new Error('Failed to create profile');\n            }\n\n            const data = await createResponse.json();\n            onComplete(data.user);\n\n            toast({\n                title: 'Profile created',\n                description: 'Your profile has been successfully created.',\n                status: 'success',\n                duration: 5000,\n                isClosable: true,\n            });\n        } catch (error) {\n            console.error('Registration error:', error);\n\n            toast({\n                title: 'Registration failed',\n                description: error instanceof Error ? error.message : 'Failed to create account',\n                status: 'error',\n                duration: 5000,\n                isClosable: true,\n            });\n        } finally {\n            setLoading(false);\n        }\n    };\n\n    return (\n        <Box width=\"100%\" p={6} position=\"relative\">\n            <VStack spacing={6} align=\"stretch\">\n                <Box textAlign=\"center\" mb={6}>\n                    <Flex justifyContent=\"center\" mb={4}>\n                        <Image \n                            src={ZeroCatLogo} \n                            alt=\"ZEROCAT\" \n                            height=\"32px\"\n                            width=\"80px\"\n                            objectFit=\"contain\"\n                        />\n                    </Flex>\n                    <Heading\n                        as=\"h1\"\n                        size=\"xl\"\n                        bgGradient={`linear(to-r, ${theme.primary}.400, ${theme.secondary}.400)`}\n                        backgroundClip=\"text\"\n                        mb={2}\n                    >\n                        Complete Your Profile\n                    </Heading>\n                    <Text color=\"whiteAlpha.700\">Tell us a bit about yourself</Text>\n                </Box>\n\n                <form onSubmit={handleSubmit}>\n                    <VStack spacing={6} align=\"stretch\">\n                        <FormControl as=\"fieldset\">\n                            <FormLabel as=\"legend\" fontWeight=\"medium\">\n                                Account Type\n                            </FormLabel>\n                            <RadioGroup\n                                defaultValue=\"human\"\n                                onChange={(value: string) => setAccountType(value as AccountType)}\n                                value={accountType}\n                            >\n                                <Stack direction=\"row\" spacing={5}>\n                                    <Radio value=\"human\">Individual</Radio>\n                                    <Radio value=\"entity\">Entity/Organization</Radio>\n                                </Stack>\n                            </RadioGroup>\n                        </FormControl>\n\n                        {accountType === 'human' ? (\n                            <Stack direction={{ base: 'column', md: 'row' }} spacing={4}>\n                                <FormControl isInvalid={!!errors.first_name}>\n                                    <FormLabel>First Name</FormLabel>\n                                    <Input\n                                        value={details.first_name}\n                                        onChange={(e: React.ChangeEvent<HTMLInputElement>) => handleDetailsChange('first_name', e.target.value)}\n                                        placeholder=\"John\"\n                                    />\n                                    <FormErrorMessage>{errors.first_name}</FormErrorMessage>\n                                </FormControl>\n\n                                <FormControl isInvalid={!!errors.last_name}>\n                                    <FormLabel>Last Name</FormLabel>\n                                    <Input\n                                        value={details.last_name}\n                                        onChange={(e: React.ChangeEvent<HTMLInputElement>) => handleDetailsChange('last_name', e.target.value)}\n                                        placeholder=\"Doe\"\n                                    />\n                                    <FormErrorMessage>{errors.last_name}</FormErrorMessage>\n                                </FormControl>\n                            </Stack>\n                        ) : (\n                            <FormControl isInvalid={!!errors.entity_name}>\n                                <FormLabel>Organization Name</FormLabel>\n                                <Input\n                                    value={details.entity_name}\n                                    onChange={(e: React.ChangeEvent<HTMLInputElement>) => handleDetailsChange('entity_name', e.target.value)}\n                                    placeholder=\"Company or Organization Name\"\n                                />\n                                <FormErrorMessage>{errors.entity_name}</FormErrorMessage>\n                            </FormControl>\n                        )}\n\n                        <FormControl isInvalid={!!errors.email}>\n                            <FormLabel>Email</FormLabel>\n                            <Input\n                                type=\"email\"\n                                value={details.email}\n                                onChange={(e: React.ChangeEvent<HTMLInputElement>) => handleDetailsChange('email', e.target.value)}\n                                placeholder=\"you@example.com\"\n                            />\n                            <FormErrorMessage>{errors.email}</FormErrorMessage>\n                        </FormControl>\n\n                        <FormControl>\n                            <FormLabel>Role</FormLabel>\n                            <Select\n                                value={details.role}\n                                onChange={(e: React.ChangeEvent<HTMLSelectElement>) => handleDetailsChange('role', e.target.value)}\n                            >\n                                {availableRoles.map(role => (\n                                    <option key={role} value={role}>{role}</option>\n                                ))}\n                            </Select>\n                        </FormControl>\n\n                        <Flex gap={3} pt={4}>\n                            <Button\n                                flex=\"1\"\n                                variant=\"outline\"\n                                onClick={onBack}\n                                isDisabled={loading}\n                            >\n                                Back\n                            </Button>\n                            <Button\n                                flex=\"1\"\n                                variant=\"gradient\"\n                                type=\"submit\"\n                                isLoading={loading}\n                                loadingText=\"Creating...\"\n                            >\n                                Complete\n                            </Button>\n                        </Flex>\n                    </VStack>\n                </form>\n            </VStack>\n            \n            {/* Footer with ZEROCAT branding */}\n            <Flex \n                justifyContent=\"center\" \n                alignItems=\"center\" \n                position=\"absolute\"\n                bottom=\"0\"\n                left=\"0\"\n                right=\"0\"\n                p={2}\n                borderTop=\"1px\"\n                borderColor=\"whiteAlpha.100\"\n                bg=\"whiteAlpha.50\"\n            >\n                <Text fontSize=\"xs\" color=\"whiteAlpha.600\" mr={1}>Powered by</Text>\n                <Image\n                    src={ZeroCatLogo}\n                    alt=\"ZEROCAT\"\n                    height=\"12px\"\n                    width=\"28px\"\n                />\n            </Flex>\n        </Box>\n    );\n}","let logoUrl = '';\n\ntry {\n  // Try to load from assets in production build\n  logoUrl = new URL('./zerocat.png', import.meta.url).href;\n} catch (e) {\n  // Fallback for older environments or when import.meta.url is not supported\n  try {\n    // Check if we're in a browser environment\n    if (typeof window !== 'undefined') {\n      logoUrl = '/zerocat.png'; // Fallback to root path\n    }\n  } catch (err) {\n    console.warn('Failed to load Zerocat logo:', err);\n  }\n}\n\nexport default logoUrl;","'use client';\n\nimport React, { useState, useEffect, useRef } from 'react';\nimport { QRCodeSVG } from 'qrcode.react';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport {\n    Box,\n    Button,\n    Center,\n    Flex,\n    Heading,\n    HStack,\n    Icon,\n    IconButton,\n    Image,\n    Spinner,\n    Step,\n    StepIcon,\n    StepIndicator,\n    StepNumber,\n    StepSeparator,\n    StepStatus,\n    StepTitle,\n    Stepper,\n    Text,\n    useSteps,\n    VStack,\n    useToast,\n} from '@chakra-ui/react';\nimport { PhoneIcon, CheckIcon, CloseIcon, RepeatIcon } from '@chakra-ui/icons';\nimport type { CapAuthProps, User } from '../../types';\nimport { OnboardingForm } from './OnboardingForm';\nimport ZeroCatLogo from '../assets/zerocat-logo';\n\nconst fadeIn = {\n    hidden: { opacity: 0 },\n    visible: { opacity: 1, transition: { duration: 0.3 } },\n    exit: { opacity: 0, transition: { duration: 0.2 } },\n};\n\nconst slideRight = {\n    hidden: { x: -30, opacity: 0 },\n    visible: { x: 0, opacity: 1, transition: { duration: 0.4 } },\n    exit: { x: 30, opacity: 0, transition: { duration: 0.3 } },\n};\n\nconst steps = [\n    { title: 'Prepare' },\n    { title: 'Scan' },\n    { title: 'Verify' },\n    { title: 'Profile' },\n];\n\nexport function CapAuth({\n    onAuthenticated,\n    config,\n    onError,\n}: CapAuthProps) {\n    const toast = useToast();\n    const { activeStep, setActiveStep } = useSteps({\n        index: 0,\n        count: steps.length,\n    });\n\n    const [stage, setStage] = useState<'intro' | 'qr' | 'polling' | 'onboarding'>('intro');\n    const [qrData, setQrData] = useState<string | null>(null);\n    const [qrUri, setQrUri] = useState<string | null>(null);\n    const [error, setError] = useState<string | null>(null);\n    const [nonce, setNonce] = useState<string | null>(null);\n    const [walletAddress, setWalletAddress] = useState<string | null>(null);\n    const [isPollingActive, setIsPollingActive] = useState(true);\n\n    const pollingIntervalRef = useRef<NodeJS.Timeout | null>(null);\n    const timeoutIdRef = useRef<NodeJS.Timeout | null>(null);\n    const isAuthenticatedRef = useRef<boolean>(false);\n\n    const cleanupTimers = () => {\n        if (pollingIntervalRef.current) {\n            clearInterval(pollingIntervalRef.current);\n            pollingIntervalRef.current = null;\n        }\n        if (timeoutIdRef.current) {\n            clearTimeout(timeoutIdRef.current);\n            timeoutIdRef.current = null;\n        }\n    };\n\n    useEffect(() => {\n        return () => cleanupTimers();\n    }, []);\n\n    useEffect(() => {\n        if (stage === 'polling' && nonce && isPollingActive && !isAuthenticatedRef.current) {\n            const interval = setInterval(async () => {\n                try {\n                    const response = await fetch('/api/auth', {\n                        method: 'POST',\n                        headers: { 'Content-Type': 'application/json' },\n                        body: JSON.stringify({ nonce }),\n                    });\n\n                    if (!response.ok) throw new Error('Verification failed');\n\n                    const data = await response.json();\n                    if (data.authenticated && data.userAddress) {\n                        isAuthenticatedRef.current = true;\n                        setIsPollingActive(false);\n                        cleanupTimers();\n\n                        if (data.user) {\n                            onAuthenticated(data.user);\n                            toast({\n                                title: \"Authentication successful\",\n                                status: \"success\",\n                                duration: 3000,\n                                isClosable: true,\n                            });\n                        } else {\n                            setActiveStep(3);\n                            setWalletAddress(data.userAddress);\n                            setStage('onboarding');\n                        }\n                    }\n                } catch (error) {\n                    console.error('Polling error:', error);\n                }\n            }, config.timeouts?.polling || 3000);\n\n            pollingIntervalRef.current = interval;\n\n            const timeout = setTimeout(() => {\n                cleanupTimers();\n                setError('Authentication timeout. Please try again.');\n                setStage('intro');\n                setActiveStep(0);\n            }, config.timeouts?.authentication || 300000);\n\n            timeoutIdRef.current = timeout;\n\n            return () => cleanupTimers();\n        }\n    }, [stage, nonce, isPollingActive, config, onAuthenticated, toast, setActiveStep]);\n\n    const generateQR = async () => {\n        try {\n            setError(null);\n            setActiveStep(1);\n\n            const response = await fetch('/api/auth');\n            const data = await response.json();\n\n            if (!response.ok) {\n                throw new Error(data.error || 'Failed to generate authentication code');\n            }\n\n            const receiverAddr = process.env.NEXT_PUBLIC_SERVER_WALLET_ADDRESS || '';\n            const contractId = process.env.NEXT_PUBLIC_AUTH_CONTRACT_ID || '';\n            const tokenId = process.env.NEXT_PUBLIC_TOKEN_ID || '';\n\n            const txDetails = `smart_contract_auth_${contractId},nonce_${data.nonce}`;\n\n            const txParams = `amount=0,recipientAddress=${receiverAddr},senderAddress=customer_,timestamp=${new Date().toISOString()},tokenId=${tokenId},transactionCost=0,transactionDetails=${txDetails},transactionId=transaction_`;\n\n            setQrData(txParams);\n            setQrUri(`zerowallet://transaction?${txParams}`);\n            setNonce(data.nonce);\n            setStage('qr');\n        } catch (error) {\n            console.error('QR generation error:', error);\n            setError('Failed to generate authentication code. Please try again.');\n\n            toast({\n                title: \"Error\",\n                description: \"Failed to generate authentication code. Please try again.\",\n                status: \"error\",\n                duration: 5000,\n                isClosable: true,\n            });\n\n            if (onError && error instanceof Error) {\n                onError(error);\n            }\n        }\n    };\n\n    const handleOpenMobileWallet = () => {\n        if (config.enableMobileWallet && qrUri) {\n            window.location.href = qrUri;\n        }\n    };\n\n    const proceedToVerification = () => {\n        setActiveStep(2);\n        setStage('polling');\n        setIsPollingActive(true);\n    };\n\n    const handleRetry = () => {\n        cleanupTimers();\n        setError(null);\n        setQrData(null);\n        setQrUri(null);\n        setNonce(null);\n        setWalletAddress(null);\n        setStage('intro');\n        setActiveStep(0);\n        setIsPollingActive(true);\n        isAuthenticatedRef.current = false;\n    };\n\n    const handleOnboardingComplete = (user: User) => {\n        setIsPollingActive(false);\n        isAuthenticatedRef.current = true;\n\n        if (walletAddress) {\n            onAuthenticated(user);\n            toast({\n                title: \"Profile completed\",\n                description: \"You're now successfully signed in.\",\n                status: \"success\",\n                duration: 3000,\n                isClosable: true,\n            });\n        }\n    };\n\n    const {\n        theme = { primary: 'blue', secondary: 'teal' },\n    } = config;\n\n    return (\n        <Box\n            width={{ base: \"90vw\", sm: \"100%\" }}\n            maxW=\"md\"\n            borderRadius=\"xl\"\n            overflow=\"hidden\"\n            bg=\"dark.200\"\n            borderWidth=\"1px\"\n            borderColor=\"whiteAlpha.200\"\n            boxShadow=\"xl\"\n            position=\"relative\"\n        >\n            <Box p={{ base: 2, sm: 4 }} bg=\"whiteAlpha.50\">\n                <Stepper index={activeStep} colorScheme=\"brand\" size=\"sm\">\n                    {steps.map((step, index) => (\n                        <Step key={index}>\n                            <StepIndicator>\n                                <StepStatus\n                                    complete={<StepIcon />}\n                                    incomplete={<StepNumber />}\n                                    active={<StepNumber />}\n                                />\n                            </StepIndicator>\n                            <Box flexShrink={0}>\n                                <StepTitle fontSize={{ base: \"xs\", sm: \"sm\" }}>{step.title}</StepTitle>\n                            </Box>\n                            <StepSeparator />\n                        </Step>\n                    ))}\n                </Stepper>\n            </Box>\n\n            <AnimatePresence mode=\"wait\">\n                {stage === 'intro' && (\n                    <motion.div\n                        key=\"intro\"\n                        variants={fadeIn}\n                        initial=\"hidden\"\n                        animate=\"visible\"\n                        exit=\"exit\"\n                    >\n                        <VStack spacing={{ base: 4, sm: 6 }} p={{ base: 4, sm: 6 }}>\n                            <Box textAlign=\"center\">\n                                <Heading\n                                    as=\"h1\"\n                                    size={{ base: \"lg\", sm: \"xl\" }}\n                                    bgGradient={`linear(to-r, ${theme.primary}.400, ${theme.secondary}.400)`}\n                                    backgroundClip=\"text\"\n                                    mb={2}\n                                >\n                                    {config.appName}\n                                </Heading>\n                                <Text color=\"whiteAlpha.700\" fontSize={{ base: \"sm\", sm: \"md\" }}>\n                                    {config.appDescription}\n                                </Text>\n                            </Box>\n\n                            <VStack spacing={4} w=\"full\">\n                                <Flex\n                                    align=\"flex-start\"\n                                    gap={4}\n                                    p={4}\n                                    bg=\"whiteAlpha.50\"\n                                    borderRadius=\"lg\"\n                                    w=\"full\"\n                                >\n                                    <Box color=\"blue.400\" mt={1}>\n                                        <PhoneIcon boxSize={{ base: 4, sm: 5 }} />\n                                    </Box>\n                                    <Box>\n                                        <Text fontWeight=\"medium\" fontSize={{ base: \"sm\", sm: \"md\" }}>Get Your Wallet Ready</Text>\n                                        <Text fontSize={{ base: \"xs\", sm: \"sm\" }} color=\"whiteAlpha.700\">\n                                            Ensure you have ZeroWallet installed and ready\n                                        </Text>\n                                    </Box>\n                                </Flex>\n\n                                <Flex\n                                    align=\"flex-start\"\n                                    gap={4}\n                                    p={4}\n                                    bg=\"whiteAlpha.50\"\n                                    borderRadius=\"lg\"\n                                    w=\"full\"\n                                >\n                                    <Box color=\"teal.400\" mt={1}>\n                                        <Icon\n                                            viewBox=\"0 0 24 24\"\n                                            boxSize={{ base: 4, sm: 5 }}\n                                        >\n                                            <path\n                                                fill=\"currentColor\"\n                                                d=\"M3 11h8V3H3v8zm2-6h4v4H5V5zm8-2v8h8V3h-8zm6 6h-4V5h4v4zM3 21h8v-8H3v8zm2-6h4v4H5v-4zm13-2h-2v4h-4v2h4v4h2v-4h4v-2h-4v-4z\"\n                                            />\n                                        </Icon>\n                                    </Box>\n                                    <Box>\n                                        <Text fontWeight=\"medium\" fontSize={{ base: \"sm\", sm: \"md\" }}>Credentialless Auth</Text>\n                                        <Text fontSize={{ base: \"xs\", sm: \"sm\" }} color=\"whiteAlpha.700\">\n                                            Scan QR code with your phone to open ZeroWallet\n                                        </Text>\n                                    </Box>\n                                </Flex>\n                            </VStack>\n\n                            <Button\n                                w=\"full\"\n                                variant=\"gradient\"\n                                size={{ base: \"md\", sm: \"lg\" }}\n                                onClick={generateQR}\n                                rightIcon={<Icon viewBox=\"0 0 24 24\" boxSize={{ base: 4, sm: 5 }}>\n                                    <path\n                                        fill=\"currentColor\"\n                                        d=\"M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8-8-8z\"\n                                    />\n                                </Icon>}\n                            >\n                                Start Authentication\n                            </Button>\n                        </VStack>\n                    </motion.div>\n                )}\n\n                {stage === 'qr' && qrData && (\n                    <motion.div\n                        key=\"qr\"\n                        variants={slideRight}\n                        initial=\"hidden\"\n                        animate=\"visible\"\n                        exit=\"exit\"\n                    >\n                        <VStack spacing={{ base: 4, sm: 6 }} p={{ base: 4, sm: 6 }}>\n                            <Box textAlign=\"center\">\n                                <Heading as=\"h2\" size={{ base: \"md\", sm: \"lg\" }} mb={2}>Scan QR Code</Heading>\n                                <Text color=\"whiteAlpha.700\" fontSize={{ base: \"xs\", sm: \"sm\" }}>\n                                    Open your camera app and scan this code\n                                </Text>\n                            </Box>\n\n                            <Center py={{ base: 4, sm: 6 }}>\n                                <Box p={{ base: 3, sm: 4 }} bg=\"white\" borderRadius=\"xl\" boxShadow=\"xl\">\n                                    <QRCodeSVG\n                                        value={qrUri || ''}\n                                        size={Math.min(220, window.innerWidth * 0.6)}\n                                        level=\"M\"\n                                        includeMargin={true}\n                                    />\n                                </Box>\n                            </Center>\n\n                            <VStack spacing={4} w=\"full\">\n                                {config.enableMobileWallet && (\n                                    <Button\n                                        w=\"full\"\n                                        variant=\"outline\"\n                                        onClick={handleOpenMobileWallet}\n                                        leftIcon={<PhoneIcon />}\n                                        size={{ base: \"sm\", sm: \"md\" }}\n                                    >\n                                        Open in ZeroWallet\n                                    </Button>\n                                )}\n\n                                <Button\n                                    w=\"full\"\n                                    variant=\"gradient\"\n                                    onClick={proceedToVerification}\n                                    rightIcon={<CheckIcon />}\n                                    size={{ base: \"sm\", sm: \"md\" }}\n                                >\n                                    I've Completed the Transaction\n                                </Button>\n                            </VStack>\n                        </VStack>\n                    </motion.div>\n                )}\n\n                {stage === 'polling' && (\n                    <motion.div\n                        key=\"polling\"\n                        variants={fadeIn}\n                        initial=\"hidden\"\n                        animate=\"visible\"\n                        exit=\"exit\"\n                    >\n                        <VStack spacing={6} p={{ base: 6, sm: 8 }} textAlign=\"center\">\n                            <Spinner\n                                thickness=\"4px\"\n                                speed=\"0.65s\"\n                                emptyColor=\"whiteAlpha.200\"\n                                color=\"brand.500\"\n                                size={{ base: \"lg\", sm: \"xl\" }}\n                            />\n\n                            <Box>\n                                <Heading as=\"h2\" size={{ base: \"md\", sm: \"lg\" }} mb={2}>Verifying</Heading>\n                                <Text color=\"whiteAlpha.700\" fontSize={{ base: \"sm\", sm: \"md\" }}>\n                                    Please wait while we confirm your transaction...\n                                </Text>\n                            </Box>\n                        </VStack>\n                    </motion.div>\n                )}\n\n                {stage === 'onboarding' && walletAddress && (\n                    <motion.div\n                        key=\"onboarding\"\n                        variants={slideRight}\n                        initial=\"hidden\"\n                        animate=\"visible\"\n                        exit=\"exit\"\n                    >\n                        <OnboardingForm\n                            walletAddress={walletAddress}\n                            onComplete={handleOnboardingComplete}\n                            onBack={handleRetry}\n                            theme={theme}\n                        />\n                    </motion.div>\n                )}\n            </AnimatePresence>\n\n            {error && (\n                <motion.div\n                    initial={{ opacity: 0, y: 10 }}\n                    animate={{ opacity: 1, y: 0 }}\n                >\n                    <Box p={{ base: 3, sm: 4 }} bg=\"red.900\" color=\"white\" mt={2}>\n                        <VStack spacing={{ base: 3, sm: 4 }}>\n                            <Text color=\"red.200\" textAlign=\"center\" fontSize={{ base: \"sm\", sm: \"md\" }}>{error}</Text>\n                            <Button\n                                leftIcon={<RepeatIcon />}\n                                colorScheme=\"red\"\n                                variant=\"outline\"\n                                size=\"sm\"\n                                onClick={handleRetry}\n                            >\n                                Try Again\n                            </Button>\n                        </VStack>\n                    </Box>\n                </motion.div>\n            )}\n\n            <Flex\n                justifyContent=\"center\"\n                alignItems=\"center\"\n                p={2}\n                borderTop=\"1px\"\n                borderColor=\"whiteAlpha.100\"\n                bg=\"whiteAlpha.50\"\n            >\n                <Text fontSize=\"xs\" color=\"whiteAlpha.600\" mr={1}>Powered by</Text>\n                <Image\n                    src={ZeroCatLogo}\n                    alt=\"ZEROCAT\"\n                    height={{ base: \"10px\", sm: \"12px\" }}\n                    width={{ base: \"24px\", sm: \"28px\" }}\n                />\n            </Flex>\n        </Box>\n    );\n}"],"mappings":"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","names":["useState","useEffect","Box","Button","Flex","Heading","Image","Text","VStack","useToast","jsx","jsxs","useToast","useState","useEffect","error","Box","VStack","Heading","Text","Flex","Button","Image"]}