{"version":3,"sources":["../node_modules/@mui/icons-material/esm/AccountBox.js","../node_modules/@mui/icons-material/esm/Cloud.js","../node_modules/@mui/icons-material/esm/CloudQueue.js","../src/api/index.ts","../src/components/FlowSelector.tsx","../src/utils/timers.ts","../src/hooks/useAadhaarEkyc.ts","../src/components/OtpForm.tsx","../node_modules/@mui/icons-material/esm/CheckCircle.js","../node_modules/@mui/icons-material/esm/Fingerprint.js","../node_modules/@mui/icons-material/esm/Message.js","../node_modules/@mui/icons-material/esm/ArrowBack.js","../node_modules/@mui/icons-material/esm/Visibility.js","../node_modules/@mui/icons-material/esm/VisibilityOff.js","../src/components/AadhaarFlow.tsx","../node_modules/@mui/icons-material/esm/Error.js","../src/components/DigiLockerFlow.tsx"],"names":["createSvgIcon","_jsx","axios","jsx","Box","useTheme","useState","useEffect","Fade","jsxs","Paper","Typography","CircularProgress","Stack","Chip","Button","Divider","useCallback","styled","TextField","alpha","Alert","StyledTextField","useMediaQuery","error","formik","useFormik","Stepper","Step","StepLabel","Fragment","InputAdornment","IconButton","FormControlLabel","Checkbox","ResultRow"],"mappings":"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","file":"index.cjs","sourcesContent":["\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2m-7 3c1.93 0 3.5 1.57 3.5 3.5S13.93 13 12 13s-3.5-1.57-3.5-3.5S10.07 6 12 6m7 13H5v-.23c0-.62.28-1.2.76-1.58C7.47 15.82 9.64 15 12 15s4.53.82 6.24 2.19c.48.38.76.97.76 1.58z\"\n}), 'AccountBox');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96\"\n}), 'Cloud');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96M19 18H6c-2.21 0-4-1.79-4-4s1.79-4 4-4h.71C7.37 7.69 9.48 6 12 6c3.04 0 5.5 2.46 5.5 5.5v.5H19c1.66 0 3 1.34 3 3s-1.34 3-3 3\"\n}), 'CloudQueue');","import axios from 'axios';\n\nconst client = axios.create({\n    baseURL: import.meta.env.VITE_API_URL || 'https://production.deepvue.tech',\n    headers: { 'Content-Type': 'application/json' },\n});\n\nexport interface GenerateOtpResponse {\n    reference_id: string;\n}\nexport interface VerifyOtpResponse {\n    code: number;\n    message: string;\n    data?: any;\n}\n\n// 1. Generate OTP\nexport async function generateOtp(aadhaarNumber: string, apiKey: string, clientId: string, purpose: string): Promise<GenerateOtpResponse> {\n    const res = await client.post<GenerateOtpResponse>(\n        '/v2/ekyc/aadhaar/generate-otp',\n        null,\n        {\n            params: {\n                aadhaar_number: aadhaarNumber,\n                consent: 'Y',\n                purpose: purpose,\n            },\n            headers: { 'x-api-key': apiKey, 'client-id': clientId },\n        }\n    );\n    return res.data;\n}\n\n// 2. Verify OTP\nexport async function verifyOtp(\n    referenceId: string,\n    otp: string,\n    apiKey: string,\n    clientId: string,\n    generate_pdf: boolean,\n): Promise<VerifyOtpResponse> {\n    const res = await client.post(\n        '/v2/ekyc/aadhaar/verify-otp',\n        null,\n        {\n            params: {\n                reference_id: referenceId,\n                otp,\n                consent: 'Y',\n                purpose: 'For KYC',\n                generate_pdf: generate_pdf,\n            },\n            headers: { 'x-api-key': apiKey, 'client-id': clientId },\n            responseType: 'json',\n        }\n    );\n    return res.data;\n}\n\n// 3. Initiate DigiLocker Session\nexport interface DigiLockerSessionResponse {\n    transaction_id: string;\n    data: {\n        authorization_url: string;\n    }\n    code: string;\n}\nexport interface DigiLockerAccessTokenResponse {\n    code: number;\n    sub_code: string;\n    message: string;\n    data?: any;\n}\nexport interface DigiLockerEAadhaarResponse {\n    code: number;\n    sub_code: string;\n    message: string;\n    data?: any;\n}\n\nexport async function initiateDigiLockerSession(apiKey: string, clientId: string, redirectUrl: string): Promise<DigiLockerSessionResponse> {\n    const res = await client.post<DigiLockerSessionResponse>(\n        '/v1/kyc/digilocker/initiate-session',\n        { consent: 'Y', purpose: 'KYC', redirect_url: redirectUrl },\n        { headers: { 'x-api-key': apiKey, 'client-id': clientId } }\n    );\n    return res.data;\n}\n\nexport async function getDigiLockerAccessToken(transactionId: string, code: string, apiKey: string, clientId: string): Promise<DigiLockerAccessTokenResponse> {\n    const res = await client.post<DigiLockerAccessTokenResponse>(\n        '/v1/kyc/digilocker/access-token',\n        { consent: 'Y', purpose: 'KYC', initial_deepvue_transaction_id: transactionId, digilocker_code: code },\n        { headers: { 'x-api-key': apiKey, 'client-id': clientId } }\n    );\n    return res.data;\n}\n\nexport async function getEAadhaarData(transactionId: string, apiKey: string, clientId: string): Promise<DigiLockerEAadhaarResponse> {\n    const res = await client.post<DigiLockerEAadhaarResponse>(\n        '/v1/kyc/digilocker/eaadhaar',\n        { consent: 'Y', purpose: 'KYC', initial_deepvue_transaction_id: transactionId },\n        { headers: { 'x-api-key': apiKey, 'client-id': clientId } }\n    );\n    return res.data;\n}\n\n// Session tracking endpoints\nexport interface SessionInitiateResponse {\n    session_id: string;\n    code: number;\n    message: string;\n}\n\nexport interface SessionStatusResponse {\n    code: number;\n    message: string;\n    status: SessionStatus;\n    aadhaar_reference_id?: string;\n    aadhaar_reference_id_exp?: number;\n    data?: any;\n}\n\nexport type SessionStatus =\n    | 'session_initiated'\n    | 'method_aadhaar_selected'\n    | 'method_digilocker_selected'\n    | 'aadhaar_otp_send_success'\n    | 'aadhaar_otp_send_failure'\n    | 'aadhaar_otp_verification_success'\n    | 'aadhaar_otp_verification_failure'\n    | 'digilocker_success'\n    | 'digilocker_failure'\n    | 'aadhaar_interrupted'\n    | 'digilocker_interrupted';\n\nexport async function initiateSession(apiKey: string, clientId: string): Promise<SessionInitiateResponse> {\n    const res = await client.get<SessionInitiateResponse>(\n        '/v2/ekyc/aadhaar/sdk/initiate-session',\n        { headers: { 'x-api-key': apiKey, 'client-id': clientId } }\n    );\n    return res.data;\n}\n\nexport async function updateSessionStatus(\n    sessionId: string,\n    status: SessionStatus,\n    apiKey: string,\n    clientId: string,\n    aadhaar_reference_id?: string\n): Promise<SessionStatusResponse> {\n    const params: Record<string, string> = {\n        session_id: sessionId,\n        status\n    };\n\n    if (aadhaar_reference_id) {\n        params.aadhaar_reference_id = aadhaar_reference_id;\n    }\n\n    const res = await client.get<SessionStatusResponse>(\n        `/v2/ekyc/aadhaar/sdk/update-session`,\n        {\n            params,\n            headers: { 'x-api-key': apiKey, 'client-id': clientId }\n        }\n    );\n    return res.data;\n}\n\nexport async function getSessionStatus(\n    sessionId: string,\n    apiKey: string,\n    clientId: string\n): Promise<SessionStatusResponse> {\n    const res = await client.get<SessionStatusResponse>(\n        `/v2/ekyc/aadhaar/sdk/session-status`,\n        {\n            params: { session_id: sessionId },\n            headers: { 'x-api-key': apiKey, 'client-id': clientId }\n        }\n    );\n    return res.data;\n}","import React, { useEffect, useState } from \"react\";\nimport {\n  Button,\n  Typography,\n  Box,\n  Stack,\n  Paper,\n  useTheme,\n  CircularProgress,\n  Fade,\n  Chip,\n  Divider,\n} from \"@mui/material\";\nimport AccountBoxIcon from \"@mui/icons-material/AccountBox\";\nimport CloudIcon from \"@mui/icons-material/Cloud\";\nimport CloudQueueIcon from \"@mui/icons-material/CloudQueue\";\nimport {\n  initiateDigiLockerSession,\n  initiateSession,\n  updateSessionStatus,\n  getSessionStatus,\n} from \"../api\";\nimport type { FlowSelectorProps } from \"../types\";\nimport logoBase64 from \"../assets/Logo.svg?base64\";\n\nconst Logo = () => (\n  <Box\n    component=\"img\"\n    src={logoBase64}\n    alt=\"DeepVue Logo\"\n    sx={{\n      height: 30,\n      width: \"auto\",\n      filter: \"drop-shadow(0px 2px 4px rgba(0,0,0,0.1))\",\n      transition: \"transform 0.2s ease\",\n      \"&:hover\": {\n        transform: \"scale(1.05)\",\n      },\n    }}\n  />\n);\n\nexport const FlowSelector: React.FC<FlowSelectorProps> = ({\n  apiKey,\n  clientId,\n  onSelectAadhaar,\n  onAutoSelectDigiLocker,\n  autoDetectCallback = true,\n}): React.ReactElement => {\n  const theme = useTheme();\n  const sdkCallbackUrl = `${window.location.origin}/callback.html`;\n  const [isRedirecting, setIsRedirecting] = useState(false);\n  const [sessionId, setSessionId] = useState<string | null>(null);\n\n  useEffect(() => {\n    const initializeSession = async () => {\n      try {\n        const existingSessionId = localStorage.getItem(\"deepvue_session_id\");\n        if (existingSessionId) {\n          try {\n            const sessionStatus = await getSessionStatus(\n              existingSessionId,\n              apiKey,\n              clientId\n            );\n\n            // If we already have an active Aadhaar OTP or a completed flow, either reuse or clear\n            if (\n              sessionStatus.status === \"aadhaar_otp_send_success\" &&\n              sessionStatus.aadhaar_reference_id\n            ) {\n              const nowMs = Date.now();\n              const expMs = sessionStatus.aadhaar_reference_id_exp;\n              if (expMs && nowMs < expMs) {\n                // Still valid OTP → reuse\n                setSessionId(existingSessionId);\n                return;\n              } else {\n                localStorage.removeItem(\"deepvue_session_id\");\n              }\n            } else if (\n              sessionStatus.status === \"aadhaar_otp_verification_success\" ||\n              sessionStatus.status === \"digilocker_success\"\n            ) {\n              localStorage.removeItem(\"deepvue_session_id\");\n            }\n          } catch (statusError) {\n            console.error(\"Failed to check session status:\", statusError);\n            localStorage.removeItem(\"deepvue_session_id\");\n          }\n        }\n\n        // Create a brand-new session if we fell through\n        const response = await initiateSession(apiKey, clientId);\n        if (response?.session_id) {\n          localStorage.setItem(\"deepvue_session_id\", response.session_id);\n          setSessionId(response.session_id);\n        } else {\n          console.error(\"No session_id in response:\", response);\n        }\n      } catch (error) {\n        console.error(\"Failed to initialize session:\", error);\n        if (\n          error instanceof Error &&\n          error.message.includes(\"already in the required status\")\n        ) {\n          const existing = localStorage.getItem(\"deepvue_session_id\");\n          if (existing) {\n            setSessionId(existing);\n            return;\n          }\n        }\n        localStorage.removeItem(\"deepvue_session_id\");\n        setSessionId(null);\n      }\n    };\n\n    initializeSession();\n  }, [apiKey, clientId]);\n\n  useEffect(() => {\n    if (!autoDetectCallback) return;\n\n    const checkDigiLockerCallback = () => {\n      const callbackReceived = sessionStorage.getItem(\n        \"digilocker_callback_received\"\n      );\n      const flowActive = sessionStorage.getItem(\"digilocker_flow_active\");\n\n      if (callbackReceived === \"true\" && flowActive === \"true\") {\n        onAutoSelectDigiLocker();\n        return;\n      }\n\n      const urlParams = new URLSearchParams(window.location.search);\n      const code = urlParams.get(\"code\");\n      const state = urlParams.get(\"state\");\n      if (code && state) {\n        sessionStorage.setItem(\"digilocker_callback_code\", code);\n        sessionStorage.setItem(\"digilocker_callback_state\", state);\n        sessionStorage.setItem(\"digilocker_callback_received\", \"true\");\n        sessionStorage.setItem(\"digilocker_flow_active\", \"true\");\n        sessionStorage.setItem(\"digilocker_api_key\", apiKey);\n        sessionStorage.setItem(\"digilocker_client_id\", clientId);\n\n        window.history.replaceState(\n          {},\n          document.title,\n          window.location.pathname\n        );\n\n        onAutoSelectDigiLocker();\n        return;\n      }\n    };\n\n    checkDigiLockerCallback();\n  }, [autoDetectCallback, onAutoSelectDigiLocker, apiKey, clientId]);\n\n  const handleDigilocker = async () => {\n    if (!sessionId) {\n      const existing = localStorage.getItem(\"deepvue_session_id\");\n      if (existing) {\n        setSessionId(existing);\n        setTimeout(() => handleDigilocker(), 100);\n        return;\n      }\n      alert(\n        \"Session initialization failed. Please refresh the page and try again.\"\n      );\n      return;\n    }\n\n    try {\n      setIsRedirecting(true);\n      await updateSessionStatus(\n        sessionId,\n        \"method_digilocker_selected\",\n        apiKey,\n        clientId\n      );\n\n      sessionStorage.setItem(\"digilocker_flow_active\", \"true\");\n      sessionStorage.setItem(\"digilocker_api_key\", apiKey);\n      sessionStorage.setItem(\"digilocker_client_id\", clientId);\n\n      const response = await initiateDigiLockerSession(\n        apiKey,\n        clientId,\n        sdkCallbackUrl\n      );\n      if (!response.data.authorization_url) {\n        throw new Error(\"No authorization URL received from DigiLocker\");\n      }\n\n      const authUrl = new URL(response.data.authorization_url);\n      setTimeout(() => {\n        window.location.replace(authUrl.toString());\n      }, 3000);\n    } catch (error) {\n      console.error(\"DigiLocker error:\", error);\n      alert(\"Failed to start DigiLocker session. Please try again.\");\n      setIsRedirecting(false);\n      sessionStorage.removeItem(\"digilocker_flow_active\");\n      sessionStorage.removeItem(\"digilocker_api_key\");\n      sessionStorage.removeItem(\"digilocker_client_id\");\n    }\n  };\n\n  const handleAadhaar = async () => {\n    if (!sessionId) {\n      const existing = localStorage.getItem(\"deepvue_session_id\");\n      if (existing) {\n        setSessionId(existing);\n        setTimeout(() => handleAadhaar(), 100);\n        return;\n      }\n      alert(\n        \"Session initialization failed. Please refresh the page and try again.\"\n      );\n      return;\n    }\n\n    try {\n      // Check if there's an in-flight OTP for this session\n      const sessionStatus = await getSessionStatus(sessionId, apiKey, clientId);\n      if (\n        sessionStatus.status === \"aadhaar_otp_send_success\" &&\n        sessionStatus.aadhaar_reference_id\n      ) {\n        const nowMs = Date.now();\n        const expMs = sessionStatus.aadhaar_reference_id_exp;\n        if (expMs && nowMs < expMs) {\n          onSelectAadhaar();\n          return;\n        } else {\n          // Expired OTP → clear old session and start fresh\n          localStorage.removeItem(\"deepvue_session_id\");\n          const newSession = await initiateSession(apiKey, clientId);\n          if (newSession?.session_id) {\n            localStorage.setItem(\"deepvue_session_id\", newSession.session_id);\n            setSessionId(newSession.session_id);\n          }\n        }\n      }\n\n      // No in-flight OTP → mark \"aadhaar_selected\" and push user into Aadhaar flow\n      await updateSessionStatus(\n        sessionId,\n        \"method_aadhaar_selected\",\n        apiKey,\n        clientId\n      );\n      onSelectAadhaar();\n    } catch (error) {\n      console.error(\"Failed to check/update session status:\", error);\n      try {\n        const newSession = await initiateSession(apiKey, clientId);\n        if (newSession?.session_id) {\n          localStorage.setItem(\"deepvue_session_id\", newSession.session_id);\n          setSessionId(newSession.session_id);\n          await updateSessionStatus(\n            newSession.session_id,\n            \"method_aadhaar_selected\",\n            apiKey,\n            clientId\n          );\n        }\n      } catch {\n        /* swallow */\n      }\n      onSelectAadhaar();\n    }\n  };\n\n  if (isRedirecting) {\n    return (\n      <Box\n        sx={{\n          display: \"flex\",\n          justifyContent: \"center\",\n          alignItems: \"center\",\n          minHeight: \"100vh\",\n          backgroundColor: theme.palette.background.default,\n        }}\n      >\n        <Fade in timeout={500}>\n          <Paper\n            elevation={4}\n            sx={{\n              width: \"100%\",\n              maxWidth: 450,\n              p: theme.spacing(5),\n              borderRadius: theme.spacing(2),\n              backgroundColor: \"#ffffff\",\n              textAlign: \"center\",\n            }}\n          >\n            <CloudQueueIcon\n              sx={{\n                fontSize: 64,\n                color: theme.palette.primary.main,\n                mb: 2,\n              }}\n            />\n            <Typography variant=\"h5\" fontWeight=\"bold\" gutterBottom>\n              Connecting to DigiLocker\n            </Typography>\n            <Typography variant=\"body1\" color=\"text.secondary\" sx={{ mb: 4 }}>\n              Please wait while we securely connect you to DigiLocker...\n            </Typography>\n            <CircularProgress\n              size={40}\n              thickness={4}\n              sx={{ color: theme.palette.primary.main }}\n            />\n          </Paper>\n        </Fade>\n      </Box>\n    );\n  }\n\n  return (\n    <Box\n      sx={{\n        display: \"flex\",\n        justifyContent: \"center\",\n        alignItems: \"center\",\n        p: { xs: 1.5, sm: 3 },\n        backgroundColor: theme.palette.grey[50],\n      }}\n    >\n      <Paper\n        elevation={4}\n        sx={{\n          width: \"100%\",\n          maxWidth: 420,\n          p: { xs: theme.spacing(2), sm: theme.spacing(4) },\n          borderRadius: theme.spacing(2),\n          backgroundColor: \"#ffffff\",\n          textAlign: \"center\",\n          boxShadow: \"0 8px 24px rgba(0,0,0,0.08)\",\n        }}\n      >\n        <Typography\n          variant=\"h6\"\n          fontWeight=\"bold\"\n          gutterBottom\n          sx={{\n            color: theme.palette.primary.main,\n            mb: 0.5,\n          }}\n        >\n          Choose Your Verification Method\n        </Typography>\n\n        <Typography\n          variant=\"body2\"\n          color=\"text.secondary\"\n          sx={{\n            mb: 3,\n            maxWidth: \"420px\",\n            mx: \"auto\",\n            lineHeight: 1.5,\n          }}\n        >\n          Select your preferred secure eKYC method to verify your identity\n        </Typography>\n\n        <Stack spacing={2}>\n          <Box\n            sx={{\n              p: 2,\n              borderRadius: theme.spacing(1.5),\n              border: `1px solid ${theme.palette.primary.main}`,\n              backgroundColor: theme.palette.primary.light + \"08\",\n              transition: \"all 0.2s ease\",\n              position: \"relative\",\n              overflow: \"visible\",\n              \"&:hover\": {\n                backgroundColor: theme.palette.primary.light + \"12\",\n                transform: \"translateY(-2px)\",\n                boxShadow: \"0 4px 12px rgba(0,0,0,0.05)\",\n              },\n              cursor: \"pointer\",\n            }}\n          >\n            <Chip\n              label=\"Recommended\"\n              size=\"small\"\n              sx={{\n                position: \"absolute\",\n                top: 2,\n                right: 2,\n                background: theme.palette.success.light + \"15\",\n                color: theme.palette.success.main,\n                fontWeight: 500,\n                fontSize: \"0.7rem\",\n                height: \"22px\",\n                boxShadow: \"none\",\n                border: `1px solid ${theme.palette.success.light + \"40\"}`,\n                backdropFilter: \"blur(4px)\",\n                zIndex: 1,\n                \"& .MuiChip-label\": {\n                  px: 1.2,\n                  py: 0.3,\n                },\n                \"& .MuiChip-icon\": {\n                  color: theme.palette.success.light,\n                  marginLeft: \"4px\",\n                  marginRight: \"-4px\",\n                },\n                \"&:hover\": {\n                  background: theme.palette.success.light + \"25\",\n                },\n              }}\n            />\n            <CloudIcon\n              sx={{\n                fontSize: 32,\n                color: theme.palette.info.main,\n                mb: 1,\n              }}\n            />\n            <Typography variant=\"subtitle1\" fontWeight=\"600\" gutterBottom>\n              DigiLocker\n            </Typography>\n            <Typography\n              variant=\"body2\"\n              color=\"text.secondary\"\n              sx={{\n                mb: 1.5,\n                fontSize: \"0.875rem\",\n              }}\n            >\n              Verify your identity using your Digilocker E-Aadhaar\n            </Typography>\n            <Button\n              fullWidth\n              variant=\"contained\"\n              size=\"medium\"\n              sx={{\n                textTransform: \"none\",\n                fontWeight: 600,\n                py: 1,\n                borderRadius: theme.spacing(1),\n                fontSize: \"0.875rem\",\n                \"&:hover\": {\n                  backgroundColor: theme.palette.primary.dark,\n                },\n              }}\n              onClick={handleDigilocker}\n            >\n              Continue with DigiLocker\n            </Button>\n          </Box>\n\n          <Typography\n            variant=\"caption\"\n            color=\"text.secondary\"\n            sx={{\n              position: \"relative\",\n              display: \"block\",\n              my: 1,\n              \"&::before, &::after\": {\n                content: '\"\"',\n                position: \"absolute\",\n                top: \"50%\",\n                width: \"25%\",\n                height: \"1px\",\n                backgroundColor: theme.palette.divider,\n              },\n              \"&::before\": {\n                left: 0,\n              },\n              \"&::after\": {\n                right: 0,\n              },\n            }}\n          >\n            OR\n          </Typography>\n\n          <Box\n            sx={{\n              p: 2,\n              borderRadius: theme.spacing(1.5),\n              border: `1px solid ${theme.palette.grey[300]}`,\n              backgroundColor: theme.palette.grey[50],\n              transition: \"all 0.2s ease\",\n              \"&:hover\": {\n                backgroundColor: theme.palette.grey[100],\n                transform: \"translateY(-2px)\",\n                boxShadow: \"0 4px 12px rgba(0,0,0,0.05)\",\n              },\n              cursor: \"pointer\",\n            }}\n          >\n            <AccountBoxIcon\n              sx={{\n                fontSize: 32,\n                color: theme.palette.primary.main,\n                mb: 1,\n              }}\n            />\n            <Typography variant=\"subtitle1\" fontWeight=\"600\" gutterBottom>\n              Aadhaar eKYC\n            </Typography>\n            <Typography\n              variant=\"body2\"\n              color=\"text.secondary\"\n              sx={{\n                mb: 1.5,\n                fontSize: \"0.875rem\",\n              }}\n            >\n              Verify your identity using your Aadhaar number and OTP\n            </Typography>\n            <Button\n              fullWidth\n              variant=\"outlined\"\n              size=\"medium\"\n              sx={{\n                textTransform: \"none\",\n                fontWeight: 600,\n                py: 1,\n                borderRadius: theme.spacing(1),\n                fontSize: \"0.875rem\",\n                borderColor: theme.palette.info.main,\n                color: theme.palette.info.main,\n                \"&:hover\": {\n                  borderColor: theme.palette.info.dark,\n                  backgroundColor: theme.palette.info.light + \"12\",\n                },\n              }}\n              onClick={handleAadhaar}\n            >\n              Continue with Aadhaar\n            </Button>\n          </Box>\n        </Stack>\n        <Divider sx={{ my: 4, opacity: 0.6 }} />\n        <Box\n          sx={{\n            display: \"flex\",\n            alignItems: \"center\",\n            justifyContent: \"center\",\n            gap: 1.5,\n          }}\n        >\n          <Typography\n            variant=\"caption\"\n            sx={{\n              color: theme.palette.text.secondary,\n              fontSize: \"0.75rem\",\n              letterSpacing: \"0.5px\",\n              fontWeight: 500,\n            }}\n          >\n            Powered By\n          </Typography>\n          <Logo />\n        </Box>\n      </Paper>\n    </Box>\n  );\n};\n","import { useState, useEffect, useCallback } from \"react\";\n\nexport function useCountdown(seconds: number) {\n    const [count, setCount] = useState(0);\n    useEffect(() => {\n        let timer: NodeJS.Timeout;\n        if (count > 0) {\n            timer = setTimeout(() => setCount(count - 1), 1000);\n        }\n        return () => clearTimeout(timer);\n    }, [count]);\n    const start = useCallback(() => setCount(seconds), [seconds]);\n    return { count, start };\n}","import { useState, useEffect } from \"react\";\nimport { generateOtp, verifyOtp, updateSessionStatus, getSessionStatus } from \"../api\";\nimport { useCountdown } from \"../utils/timers\";\n\nexport function useAadhaarEkyc(\n    apiKey: string,\n    clientId: string,\n    generate_pdf: boolean,\n    purpose: string\n) {\n    const [referenceId, setReferenceId] = useState<string>();\n    const [data, setData] = useState<any>();\n    const [loading, setLoading] = useState(false);\n    const [error, setError] = useState<string>();\n    const [hasActiveSession, setHasActiveSession] = useState(false);\n    const { count, start } = useCountdown(30);\n\n    useEffect(() => {\n        const checkActiveSession = async () => {\n            const sessionId = localStorage.getItem(\"deepvue_session_id\");\n            if (!sessionId) return false;\n\n            try {\n                const sessionStatus = await getSessionStatus(sessionId, apiKey, clientId);\n\n                // If backend tells us there's an OTP send success and a valid reference ID\n                if (\n                    sessionStatus.status === \"aadhaar_otp_send_success\" &&\n                    sessionStatus.aadhaar_reference_id\n                ) {\n                    const currentTimeMs = Date.now();\n                    const expirationTimeMs = sessionStatus.aadhaar_reference_id_exp;\n\n                    if (expirationTimeMs && currentTimeMs < expirationTimeMs) {\n                        // Still valid → reuse it\n                        setReferenceId(sessionStatus.aadhaar_reference_id);\n                        setHasActiveSession(true);\n                        start(); // start OTP countdown\n                        return true;\n                    } else {\n                        // OTP window expired → clear out the old session from storage\n                        localStorage.removeItem(\"deepvue_session_id\");\n                    }\n                }\n\n                // If session already completed (OTP verified or digilocker success), clean up\n                if (\n                    sessionStatus.status === \"aadhaar_otp_verification_success\" ||\n                    sessionStatus.status === \"digilocker_success\"\n                ) {\n                    localStorage.removeItem(\"deepvue_session_id\");\n                }\n            } catch (err) {\n                console.error(\"Failed to check session status:\", err);\n                // If anything goes wrong, clear so user can start fresh\n                localStorage.removeItem(\"deepvue_session_id\");\n            }\n\n            return false;\n        };\n\n        checkActiveSession();\n    }, [apiKey, clientId, start]);\n\n    const requestOtp = async (aadhaarNumber: string) => {\n        setLoading(true);\n        setError(undefined);\n        const sessionId = localStorage.getItem(\"deepvue_session_id\");\n\n        try {\n            // Call backend to request OTP\n            const res = await generateOtp(aadhaarNumber, apiKey, clientId, purpose);\n            setReferenceId(res.reference_id);\n\n            if (sessionId) {\n                // Mark in our session that OTP‐send succeeded\n                await updateSessionStatus(\n                    sessionId,\n                    \"aadhaar_otp_send_success\",\n                    apiKey,\n                    clientId,\n                    res.reference_id\n                );\n            }\n\n            start(); // begin countdown for OTP\n            return res;\n        } catch (e: any) {\n            // On OTP‐send failure, update session status if we had one\n            if (sessionId) {\n                try {\n                    await updateSessionStatus(\n                        sessionId,\n                        \"aadhaar_otp_send_failure\",\n                        apiKey,\n                        clientId\n                    );\n                } catch {\n                    /* swallow secondary error */\n                }\n            }\n            setError(e.message);\n            throw e;\n        } finally {\n            setLoading(false);\n        }\n    };\n\n    const confirmOtp = async (otp: string) => {\n        if (!referenceId) {\n            const msg = \"No OTP session. Please resend.\";\n            setError(msg);\n            return { code: 0, message: msg };\n        }\n\n        setLoading(true);\n        setError(undefined);\n        try {\n            const res = await verifyOtp(\n                referenceId,\n                otp,\n                apiKey,\n                clientId,\n                generate_pdf\n            );\n\n            if (res.code === 200 && res.data) {\n                setData(res.data);\n            }\n\n            const sessionId = localStorage.getItem(\"deepvue_session_id\");\n            if (sessionId) {\n                if (res.code === 200) {\n                    await updateSessionStatus(\n                        sessionId,\n                        \"aadhaar_otp_verification_success\",\n                        apiKey,\n                        clientId\n                    );\n                    setHasActiveSession(false);\n                } else {\n                    await updateSessionStatus(\n                        sessionId,\n                        \"aadhaar_otp_verification_failure\",\n                        apiKey,\n                        clientId\n                    );\n                    setError(res.message);\n                }\n            }\n\n            return res;\n        } catch (e: any) {\n            const errorMessage = e.response?.data?.message || e.message;\n            setError(errorMessage);\n\n            // Update session status for OTP failure\n            const sessionId = localStorage.getItem(\"deepvue_session_id\");\n            if (sessionId) {\n                try {\n                    await updateSessionStatus(\n                        sessionId,\n                        \"aadhaar_otp_verification_failure\",\n                        apiKey,\n                        clientId\n                    );\n                } catch {\n                    /* ignore */\n                }\n            }\n\n            return { code: 0, message: errorMessage };\n        } finally {\n            setLoading(false);\n        }\n    };\n\n\n    const clearOtpSession = () => {\n        // We do not remove the entire session_id here, because we might want to reuse\n        // the same session for future OTP attempts. We only reset hook state.\n        setReferenceId(undefined);\n        setHasActiveSession(false);\n    };\n\n    return {\n        requestOtp,\n        confirmOtp,\n        data,\n        loading,\n        error,\n        count,\n        hasActiveSession,\n        clearOtpSession,\n    };\n}\n","import React, { useState } from \"react\";\nimport { Box, TextField, Button, Alert, Fade } from \"@mui/material\";\nimport { styled, alpha } from \"@mui/material/styles\";\ninterface Props {\n  onVerify: (otp: string) => Promise<void>;\n  loading: boolean;\n  countdown: number;\n  onResend: () => void;\n  error?: string;\n}\n\nconst StyledTextField = styled(TextField)(({ theme }) => ({\n  width: \"100%\",\n  \"& .MuiOutlinedInput-root\": {\n    borderRadius: theme.spacing(1.5),\n    transition: \"all 0.2s ease-in-out\",\n    backgroundColor: alpha(theme.palette.background.paper, 0.8),\n    \"&:hover\": {\n      backgroundColor: alpha(theme.palette.background.paper, 0.9),\n      transform: \"translateY(-1px)\",\n      boxShadow: theme.shadows[2],\n    },\n    \"&.Mui-focused\": {\n      boxShadow: theme.shadows[3],\n      backgroundColor: theme.palette.background.paper,\n    },\n    \"& fieldset\": {\n      borderColor: alpha(theme.palette.primary.main, 0.2),\n    },\n    \"&:hover fieldset\": {\n      borderColor: theme.palette.primary.main,\n    },\n  },\n}));\n\nconst ResendButton = styled(Button)(({ theme }) => ({\n  borderRadius: theme.spacing(1.5),\n  textTransform: \"none\",\n  transition: \"all 0.2s ease-in-out\",\n  \"&:hover\": {\n    transform: \"translateY(-1px)\",\n    boxShadow: theme.shadows[2],\n  },\n}));\n\nconst VerifyButton = styled(Button)(({ theme }) => ({\n  maxWidth: \"220px\",\n  borderRadius: theme.spacing(1.5),\n  textTransform: \"none\",\n  transition: \"all 0.2s ease-in-out\",\n  background: `linear-gradient(45deg, ${theme.palette.primary.main} 30%, ${theme.palette.primary.dark} 90%)`,\n  \"&:hover\": {\n    transform: \"translateY(-1px)\",\n    boxShadow: theme.shadows[4],\n  },\n  \"&:disabled\": {\n    background: theme.palette.action.disabledBackground,\n  },\n}));\n\nconst OtpForm: React.FC<Props> = ({\n  onVerify,\n  loading: verifyLoading,\n  countdown,\n  onResend,\n  error,\n}) => {\n  const [otp, setOtp] = useState(\"\");\n  const [resendLoading, setResendLoading] = useState(false);\n\n  const handleResend = async () => {\n    setResendLoading(true);\n    try {\n      await onResend();\n    } finally {\n      setResendLoading(false);\n    }\n  };\n\n  const handleKeyPress = (e: React.KeyboardEvent) => {\n    if (e.key === \"Enter\") {\n      e.preventDefault();\n      if (otp.length === 6 && !verifyLoading && !resendLoading) {\n        onVerify(otp);\n      }\n    }\n  };\n\n  return (\n    <Fade in timeout={500}>\n      <Box\n        component=\"form\"\n        onSubmit={(e) => e.preventDefault()}\n        sx={{\n          display: \"flex\",\n          flexDirection: \"column\",\n          gap: 2,\n          alignItems: \"center\",\n          width: \"100%\",\n          py: 1,\n        }}\n      >\n        <Box\n          sx={{\n            display: \"flex\",\n            flexDirection: { xs: \"column\", sm: \"row\" },\n            gap: 2,\n            width: \"100%\",\n            alignItems: \"center\",\n          }}\n        >\n          <StyledTextField\n            placeholder=\"Enter 6-digit OTP\"\n            value={otp}\n            onChange={(e) =>\n              setOtp(e.target.value.replace(/\\D/g, \"\").slice(0, 6))\n            }\n            onKeyDown={handleKeyPress}\n            disabled={verifyLoading || resendLoading}\n            slotProps={{\n              input: {\n                inputProps: {\n                  maxLength: 6,\n                  pattern: \"[0-9]*\",\n                  inputMode: \"numeric\",\n                },\n              },\n            }}\n          />\n          <ResendButton\n            variant=\"outlined\"\n            disabled={countdown !== 0 || resendLoading || verifyLoading}\n            onClick={handleResend}\n            sx={{\n              width: { xs: \"100%\", sm: \"120px\" },\n              height: \"40px\",\n              whiteSpace: \"nowrap\",\n              flexShrink: 0,\n            }}\n          >\n            {resendLoading\n              ? \"Sending...\"\n              : countdown > 0\n              ? `Resend (${countdown}s)`\n              : \"Resend OTP\"}\n          </ResendButton>\n        </Box>\n\n        <Box\n          sx={{\n            display: \"flex\",\n            justifyContent: \"center\",\n            width: \"100%\",\n          }}\n        >\n          <VerifyButton\n            variant=\"contained\"\n            onClick={() => onVerify(otp)}\n            disabled={\n              verifyLoading || resendLoading || !otp || otp.length !== 6\n            }\n            sx={{\n              py: 1,\n              px: 2,\n              mt: 2,\n              fontSize: \"1.1rem\",\n              width: \"100%\",\n              height: \"48px\",\n            }}\n          >\n            {verifyLoading ? \"Verifying...\" : \"Verify OTP\"}\n          </VerifyButton>\n        </Box>\n\n        <Fade in={!!error} timeout={300}>\n          <Box sx={{ width: \"100%\" }}>\n            {error && (\n              <Alert\n                severity=\"error\"\n                variant=\"filled\"\n                sx={{\n                  borderRadius: 2,\n                  boxShadow: 2,\n                }}\n              >\n                {error}\n              </Alert>\n            )}\n          </Box>\n        </Fade>\n      </Box>\n    </Fade>\n  );\n};\n\nexport default OtpForm;\n","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m-2 15-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8z\"\n}), 'CheckCircle');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M17.81 4.47c-.08 0-.16-.02-.23-.06C15.66 3.42 14 3 12.01 3c-1.98 0-3.86.47-5.57 1.41-.24.13-.54.04-.68-.2-.13-.24-.04-.55.2-.68C7.82 2.52 9.86 2 12.01 2c2.13 0 3.99.47 6.03 1.52.25.13.34.43.21.67-.09.18-.26.28-.44.28M3.5 9.72c-.1 0-.2-.03-.29-.09-.23-.16-.28-.47-.12-.7.99-1.4 2.25-2.5 3.75-3.27C9.98 4.04 14 4.03 17.15 5.65c1.5.77 2.76 1.86 3.75 3.25.16.22.11.54-.12.7s-.54.11-.7-.12c-.9-1.26-2.04-2.25-3.39-2.94-2.87-1.47-6.54-1.47-9.4.01-1.36.7-2.5 1.7-3.4 2.96-.08.14-.23.21-.39.21m6.25 12.07c-.13 0-.26-.05-.35-.15-.87-.87-1.34-1.43-2.01-2.64-.69-1.23-1.05-2.73-1.05-4.34 0-2.97 2.54-5.39 5.66-5.39s5.66 2.42 5.66 5.39c0 .28-.22.5-.5.5s-.5-.22-.5-.5c0-2.42-2.09-4.39-4.66-4.39s-4.66 1.97-4.66 4.39c0 1.44.32 2.77.93 3.85.64 1.15 1.08 1.64 1.85 2.42.19.2.19.51 0 .71-.11.1-.24.15-.37.15m7.17-1.85c-1.19 0-2.24-.3-3.1-.89-1.49-1.01-2.38-2.65-2.38-4.39 0-.28.22-.5.5-.5s.5.22.5.5c0 1.41.72 2.74 1.94 3.56.71.48 1.54.71 2.54.71.24 0 .64-.03 1.04-.1.27-.05.53.13.58.41.05.27-.13.53-.41.58-.57.11-1.07.12-1.21.12M14.91 22c-.04 0-.09-.01-.13-.02-1.59-.44-2.63-1.03-3.72-2.1-1.4-1.39-2.17-3.24-2.17-5.22 0-1.62 1.38-2.94 3.08-2.94s3.08 1.32 3.08 2.94c0 1.07.93 1.94 2.08 1.94s2.08-.87 2.08-1.94c0-3.77-3.25-6.83-7.25-6.83-2.84 0-5.44 1.58-6.61 4.03-.39.81-.59 1.76-.59 2.8 0 .78.07 2.01.67 3.61.1.26-.03.55-.29.64-.26.1-.55-.04-.64-.29-.49-1.31-.73-2.61-.73-3.96 0-1.2.23-2.29.68-3.24 1.33-2.79 4.28-4.6 7.51-4.6 4.55 0 8.25 3.51 8.25 7.83 0 1.62-1.38 2.94-3.08 2.94s-3.08-1.32-3.08-2.94c0-1.07-.93-1.94-2.08-1.94s-2.08.87-2.08 1.94c0 1.71.66 3.31 1.87 4.51.95.94 1.86 1.46 3.27 1.85.27.07.42.35.35.61-.05.23-.26.38-.47.38\"\n}), 'Fingerprint');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2m-2 12H6v-2h12zm0-3H6V9h12zm0-3H6V6h12z\"\n}), 'Message');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20z\"\n}), 'ArrowBack');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5M12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5m0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3\"\n}), 'Visibility');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7M2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2m4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3z\"\n}), 'VisibilityOff');","import React, { useEffect, useState } from \"react\";\nimport { useFormik } from \"formik\";\nimport {\n  Box,\n  TextField,\n  Button,\n  Typography,\n  Paper,\n  CircularProgress,\n  Alert,\n  Divider,\n  Stepper,\n  Step,\n  StepLabel,\n  useTheme,\n  useMediaQuery,\n  Fade,\n  alpha,\n  InputAdornment,\n  IconButton,\n  Checkbox,\n  FormControlLabel,\n} from \"@mui/material\";\nimport { styled } from \"@mui/material/styles\";\nimport { useAadhaarEkyc } from \"../hooks/useAadhaarEkyc\";\nimport OtpForm from \"./OtpForm\";\nimport CheckCircleIcon from \"@mui/icons-material/CheckCircle\";\nimport FingerprintIcon from \"@mui/icons-material/Fingerprint\";\nimport MessageIcon from \"@mui/icons-material/Message\";\nimport ArrowBackIcon from \"@mui/icons-material/ArrowBack\";\nimport VisibilityIcon from \"@mui/icons-material/Visibility\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport type { AadhaarFlowProps, AadhaarData, Address } from \"../types\";\n\nconst StyledPaper = styled(Paper)(({ theme }) => ({\n  padding: theme.spacing(4),\n  maxWidth: 450,\n  margin: \"2rem auto\",\n  borderRadius: theme.spacing(2),\n  boxShadow: theme.shadows[4],\n  [theme.breakpoints.down(\"sm\")]: {\n    padding: theme.spacing(1.5),\n    margin: \"1rem\",\n  },\n}));\n\nconst StyledTextField = styled(TextField)(({ theme }) => ({\n  \"& .MuiOutlinedInput-root\": {\n    borderRadius: theme.spacing(1),\n    \"&:hover fieldset\": {\n      borderColor: theme.palette.primary.main,\n    },\n  },\n}));\n\nconst ResultRow = styled(Box)(({ theme }) => ({\n  display: \"flex\",\n  alignItems: \"center\",\n  padding: theme.spacing(1.5, 0),\n  \"&:last-child\": {\n    borderBottom: \"none\",\n  },\n  [theme.breakpoints.down(\"sm\")]: {\n    flexDirection: \"column\",\n    alignItems: \"flex-start\",\n    gap: theme.spacing(1),\n  },\n}));\n\ntype Stage = \"init\" | \"otp\" | \"result\";\n\nexport const AadhaarFlow: React.FC<AadhaarFlowProps> = ({\n  apiKey,\n  clientId,\n  generatePdf,\n  redirectUrl,\n  onBack,\n  companyName,\n  purpose,\n}): React.ReactElement => {\n  const theme = useTheme();\n  const isMobile = useMediaQuery(theme.breakpoints.down(\"sm\"));\n  const {\n    requestOtp,\n    confirmOtp,\n    data,\n    loading,\n    error,\n    count,\n    hasActiveSession,\n    clearOtpSession,\n  } = useAadhaarEkyc(apiKey, clientId, generatePdf, purpose);\n\n  const [stage, setStage] = useState<Stage>(hasActiveSession ? \"otp\" : \"init\");\n  const [redirectCount, setRedirectCount] = useState(5);\n  const [apiError, setApiError] = useState<string>(\"\");\n  const [showAadhaar, setShowAadhaar] = useState(false);\n  const [showSuccess, setShowSuccess] = useState(false);\n  const [showError, setShowError] = useState(false);\n  const [showInitError, setShowInitError] = useState(false);\n  const [consentChecked, setConsentChecked] = useState(false);\n\n  const cleanupSession = () => {\n    if (stage === \"result\" || showSuccess) {\n      localStorage.removeItem(\"deepvue_session_id\");\n    }\n  };\n\n  useEffect(() => {\n    return () => {\n      cleanupSession();\n    };\n  }, [stage, showSuccess]);\n\n  useEffect(() => {\n    if (hasActiveSession && stage !== \"result\" && !data) {\n      setStage(\"otp\");\n      setShowSuccess(true);\n      const timer = setTimeout(() => {\n        setShowSuccess(false);\n      }, 5000);\n      return () => clearTimeout(timer);\n    }\n  }, [hasActiveSession, stage, data]);\n\n  const handleBack = () => {\n    if (stage === \"init\") {\n      cleanupSession();\n      onBack();\n    } else {\n      clearOtpSession();\n      setStage(\"init\");\n      setShowSuccess(false);\n      setShowError(false);\n      setApiError(\"\");\n    }\n  };\n\n  const handleVerify = async (otp: string) => {\n    try {\n      const res = await confirmOtp(otp);\n      if (res.code === 200) {\n        setStage(\"result\");\n      } else {\n        setApiError(res.message || \"Verification failed\");\n        setShowError(true);\n        setTimeout(() => {\n          setShowError(false);\n          setApiError(\"\");\n        }, 5000);\n      }\n    } catch (error: any) {\n      const errorMessage =\n        error.response?.data?.message ||\n        (error.response?.data?.sub_code === \"INVALID_OTP\"\n          ? \"Invalid OTP\"\n          : \"An error occurred while verifying OTP\");\n      setApiError(errorMessage);\n      setShowError(true);\n      setTimeout(() => {\n        setShowError(false);\n        setApiError(\"\");\n      }, 5000);\n    }\n  };\n\n  useEffect(() => {\n    if (data && stage === \"result\") {\n      const timer = setInterval(() => {\n        setRedirectCount((prev) => {\n          if (prev <= 1) {\n            clearInterval(timer);\n            cleanupSession();\n            window.location.href = redirectUrl;\n            return 0;\n          }\n          return prev - 1;\n        });\n      }, 1000);\n\n      return () => {\n        clearInterval(timer);\n        cleanupSession();\n      };\n    }\n  }, [data, stage, redirectUrl]);\n\n  const formik = useFormik({\n    initialValues: { aadhaar: \"\", consent: false },\n    validate: (values) => {\n      const errs: Partial<{ aadhaar: string; consent: string }> = {};\n      if (!values.aadhaar) {\n        errs.aadhaar = \"Aadhaar number is required\";\n      } else if (!/^\\d{12}$/.test(values.aadhaar)) {\n        errs.aadhaar = \"Enter a valid 12-digit Aadhaar number\";\n      }\n      if (!values.consent) {\n        errs.consent = \"Please provide consent to proceed\";\n      }\n      return errs;\n    },\n    onSubmit: async ({ aadhaar }) => {\n      if (!consentChecked) return;\n      try {\n        setApiError(\"\");\n        setShowInitError(false);\n        await requestOtp(aadhaar);\n        setStage(\"otp\");\n      } catch (error: any) {\n        const errorMessage =\n          error.response?.data?.message ||\n          \"An error occurred while requesting OTP\";\n        setApiError(errorMessage);\n        setShowInitError(true);\n        setTimeout(() => setShowInitError(false), 5000);\n      }\n    },\n  });\n\n  const steps = [\"Verify Aadhaar\", \"Verify OTP\", \"Fetch Details\"];\n\n  const getActiveStep = () => {\n    switch (stage) {\n      case \"init\":\n        return 0;\n      case \"otp\":\n        return 1;\n      case \"result\":\n        return 2;\n      default:\n        return 0;\n    }\n  };\n\n  const transformValue = (val: any) => {\n    if (val == null) return \"\";\n    if (typeof val === \"boolean\") return val ? \"Yes\" : \"No\";\n    return val;\n  };\n\n  const renderData = (obj: Partial<AadhaarData>): React.ReactNode[] => {\n    if (!obj || typeof obj !== \"object\") {\n      return [];\n    }\n\n    const fieldsToShow = [\n      { key: \"maskedNumber\", label: \"Aadhaar Number\" },\n      { key: \"name\", label: \"Name\" },\n      { key: \"dateOfBirth\", label: \"Date Of Birth\" },\n      { key: \"gender\", label: \"Gender\" },\n      { key: \"address\", label: \"Address\" },\n      { key: \"photo\", label: \"Photo\" },\n    ];\n\n    return fieldsToShow.flatMap(({ key, label }, idx) => {\n      const value = obj[key as keyof AadhaarData];\n\n      // Handle photo field\n      if (key === \"photo\" && typeof value === \"string\") {\n        return [\n          <ResultRow key={key}>\n            <Typography\n              variant=\"subtitle2\"\n              sx={{ width: \"180px\", fontWeight: 600 }}\n            >\n              {label}\n            </Typography>\n            <Box\n              component=\"img\"\n              src={`data:image/jpeg;base64,${value}`}\n              alt=\"Aadhaar Photo\"\n              sx={{ width: 100, height: \"auto\", borderRadius: 1 }}\n            />\n          </ResultRow>,\n          idx < fieldsToShow.length - 1 && <Divider key={`${key}-div`} />,\n        ];\n      }\n\n      // Handle address field\n      if (key === \"address\" && value && typeof value === \"object\") {\n        const address = value as Address;\n        const addressParts = [\n          address.house,\n          address.street,\n          address.locality,\n          address.landmark,\n          address.vtc,\n          address.subDistrict,\n          address.district,\n          address.state,\n          address.pin,\n          address.country,\n        ]\n          .filter(Boolean)\n          .join(\", \");\n\n        return [\n          <ResultRow key={key}>\n            <Typography\n              variant=\"subtitle2\"\n              sx={{ width: \"180px\", fontWeight: 600 }}\n            >\n              {label}\n            </Typography>\n            <Typography variant=\"body2\">{addressParts}</Typography>\n          </ResultRow>,\n          idx < fieldsToShow.length - 1 && <Divider key={`${key}-div`} />,\n        ];\n      }\n\n      // Handle other fields\n      return [\n        <ResultRow key={key}>\n          <Typography\n            variant=\"subtitle2\"\n            sx={{ width: \"180px\", fontWeight: 600 }}\n          >\n            {label}\n          </Typography>\n          <Typography variant=\"body2\">{transformValue(value)}</Typography>\n        </ResultRow>,\n        idx < fieldsToShow.length - 1 && <Divider key={`${key}-div`} />,\n      ];\n    });\n  };\n\n  const handleAadhaarChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n    const inputValue = e.target.value;\n\n    if (!showAadhaar) {\n      const inputLength = inputValue.length;\n      const currentLength = formik.values.aadhaar.length;\n\n      if (inputLength > currentLength) {\n        const newChar = inputValue.slice(-1);\n        if (/^\\d$/.test(newChar)) {\n          const newValue = formik.values.aadhaar + newChar;\n          if (newValue.length <= 12) {\n            formik.setFieldValue(\"aadhaar\", newValue);\n          }\n        }\n      } else if (inputLength < currentLength) {\n        const newValue = formik.values.aadhaar.slice(0, inputLength);\n        formik.setFieldValue(\"aadhaar\", newValue);\n      }\n    } else {\n      if (/^\\d*$/.test(inputValue) && inputValue.length <= 12) {\n        formik.setFieldValue(\"aadhaar\", inputValue);\n      }\n    }\n  };\n\n  const getDisplayValue = () => {\n    if (showAadhaar) {\n      return formik.values.aadhaar;\n    } else {\n      return formik.values.aadhaar.replace(/./g, \"x\");\n    }\n  };\n\n  const toggleAadhaarVisibility = () => {\n    setShowAadhaar(!showAadhaar);\n  };\n\n  return (\n    <Fade in timeout={500}>\n      <StyledPaper elevation={4}>\n        <Stepper\n          activeStep={getActiveStep()}\n          alternativeLabel\n          sx={{ mb: 4, display: { xs: \"none\", sm: \"flex\" } }}\n        >\n          {steps.map((label) => (\n            <Step key={label}>\n              <StepLabel>{label}</StepLabel>\n            </Step>\n          ))}\n        </Stepper>\n\n        {stage !== \"result\" ? (\n          <Box>\n            <Box\n              sx={{\n                display: \"flex\",\n                flexDirection: \"column\",\n                gap: 2,\n                mb: 4,\n              }}\n            >\n              <Box\n                sx={{\n                  display: \"flex\",\n                  justifyContent: \"space-between\",\n                  alignItems: \"center\",\n                }}\n              >\n                <Typography\n                  variant=\"h5\"\n                  fontWeight={600}\n                  sx={{ display: \"flex\", alignItems: \"center\", gap: 1 }}\n                >\n                  {stage === \"init\" ? (\n                    <>\n                      <FingerprintIcon color=\"primary\" />\n                      Verify Aadhaar\n                    </>\n                  ) : (\n                    <>\n                      <MessageIcon color=\"primary\" />\n                      Verify OTP\n                    </>\n                  )}\n                </Typography>\n                <Button\n                  variant=\"outlined\"\n                  onClick={handleBack}\n                  sx={{ borderRadius: 2, lineHeight: \"15px\" }}\n                  startIcon={<ArrowBackIcon sx={{ width: \"16px\" }} />}\n                >\n                  Back\n                </Button>\n              </Box>\n              <Typography variant=\"body1\" color=\"text.secondary\">\n                {stage === \"init\"\n                  ? \"Enter your 12-digit aadhaar number to get an OTP on your aadhaar-linked mobile\"\n                  : hasActiveSession\n                  ? \"Resuming your verification. Enter the OTP sent to your aadhaar-linked mobile number\"\n                  : \"Enter the OTP sent to your aadhaar-linked mobile number\"}\n              </Typography>\n            </Box>\n\n            <Box component=\"div\" sx={{ mt: 3 }}>\n              {stage === \"init\" ? (\n                <Box sx={{ mb: 3 }}>\n                  <Typography variant=\"subtitle1\" sx={{ mb: 1 }}>\n                    Aadhaar Number\n                  </Typography>\n                  <StyledTextField\n                    fullWidth\n                    required\n                    placeholder=\"Enter Aadhaar Number\"\n                    value={getDisplayValue()}\n                    onChange={handleAadhaarChange}\n                    helperText={formik.touched.aadhaar && formik.errors.aadhaar}\n                    error={Boolean(\n                      formik.touched.aadhaar && formik.errors.aadhaar\n                    )}\n                    disabled={loading}\n                    sx={{ mb: 2 }}\n                    slotProps={{\n                      input: {\n                        endAdornment: (\n                          <InputAdornment position=\"end\">\n                            <IconButton\n                              onClick={toggleAadhaarVisibility}\n                              edge=\"end\"\n                              size=\"small\"\n                            >\n                              {showAadhaar ? (\n                                <VisibilityIcon />\n                              ) : (\n                                <VisibilityOffIcon />\n                              )}\n                            </IconButton>\n                          </InputAdornment>\n                        ),\n                      },\n                    }}\n                  />\n                  <FormControlLabel\n                    control={\n                      <Checkbox\n                        checked={consentChecked}\n                        onChange={(e) => {\n                          setConsentChecked(e.target.checked);\n                          formik.setFieldValue(\"consent\", e.target.checked);\n                        }}\n                        color=\"primary\"\n                      />\n                    }\n                    label={\n                      <Typography variant=\"body2\" color=\"text.secondary\">\n                        By clicking on checkbox, I voluntarily give my consent\n                        to {companyName} to use my Aadhaar number for performing\n                        Aadhaar-based e-KYC authentication for {purpose}.\n                      </Typography>\n                    }\n                    sx={{\n                      alignItems: \"flex-start\",\n                    }}\n                  />\n                  {formik.touched.consent && formik.errors.consent && (\n                    <Typography\n                      color=\"error\"\n                      variant=\"caption\"\n                      sx={{ ml: 2, display: \"block\" }}\n                    >\n                      {formik.errors.consent}\n                    </Typography>\n                  )}\n                </Box>\n              ) : null}\n              {stage === \"init\" ? (\n                <Box sx={{ display: \"flex\", justifyContent: \"center\" }}>\n                  <Button\n                    type=\"button\"\n                    variant=\"contained\"\n                    size=\"large\"\n                    disabled={loading}\n                    onClick={() => formik.handleSubmit()}\n                    sx={{\n                      py: 1,\n                      px: 4,\n                      borderRadius: 2,\n                      textTransform: \"none\",\n                      fontSize: \"1.1rem\",\n                      maxWidth: \"300px\",\n                      maxHeight: \"100px\",\n                    }}\n                  >\n                    {loading ? (\n                      <CircularProgress size={24} color=\"inherit\" />\n                    ) : (\n                      \"Send OTP\"\n                    )}\n                  </Button>\n                </Box>\n              ) : (\n                <>\n                  <Box sx={{ mb: 3 }}>\n                    <Fade in={showSuccess} timeout={500}>\n                      <Alert\n                        severity=\"success\"\n                        variant=\"filled\"\n                        sx={{\n                          borderRadius: 2,\n                          mb: 2,\n                          display: showSuccess ? \"flex\" : \"none\",\n                          alignItems: \"center\",\n                          \"& .MuiAlert-icon\": {\n                            fontSize: \"1.5rem\",\n                          },\n                          \"& .MuiAlert-message\": {\n                            fontSize: \"0.95rem\",\n                            fontWeight: 500,\n                          },\n                        }}\n                      >\n                        <Box\n                          sx={{ display: \"flex\", alignItems: \"center\", gap: 1 }}\n                        >\n                          OTP has been sent to your registered mobile number\n                        </Box>\n                      </Alert>\n                    </Fade>\n                  </Box>\n\n                  <OtpForm\n                    onVerify={handleVerify}\n                    loading={loading}\n                    countdown={count}\n                    onResend={() => {\n                      setShowSuccess(false);\n                      setShowError(false);\n                      setApiError(\"\");\n                      formik.handleSubmit();\n                    }}\n                    error={showError ? apiError : undefined}\n                  />\n                </>\n              )}\n            </Box>\n\n            <Fade in={showInitError} timeout={500}>\n              <Alert\n                severity=\"error\"\n                variant=\"filled\"\n                sx={{\n                  mt: 2,\n                  borderRadius: 2,\n                  display: showInitError ? \"flex\" : \"none\",\n                  alignItems: \"center\",\n                  \"& .MuiAlert-icon\": {\n                    fontSize: \"1.5rem\",\n                  },\n                  \"& .MuiAlert-message\": {\n                    fontSize: \"0.95rem\",\n                    fontWeight: 500,\n                  },\n                }}\n              >\n                {apiError || error}\n              </Alert>\n            </Fade>\n          </Box>\n        ) : (\n          <Fade in timeout={500}>\n            <Box>\n              <Box\n                sx={{\n                  display: \"flex\",\n                  alignItems: \"center\",\n                  gap: 1,\n                  mb: 3,\n                }}\n              >\n                <Typography\n                  variant=\"h5\"\n                  fontWeight={600}\n                  sx={{ display: \"flex\", alignItems: \"center\", gap: 1 }}\n                >\n                  <CheckCircleIcon color=\"success\" />\n                  Verification Successful\n                </Typography>\n              </Box>\n\n              {data ? (\n                <>\n                  <Box\n                    sx={{\n                      maxHeight: isMobile ? \"60vh\" : \"50vh\",\n                      overflowY: \"auto\",\n                      pr: 1,\n                      \"&::-webkit-scrollbar\": {\n                        width: \"8px\",\n                      },\n                      \"&::-webkit-scrollbar-track\": {\n                        background: alpha(theme.palette.primary.main, 0.1),\n                        borderRadius: \"4px\",\n                      },\n                      \"&::-webkit-scrollbar-thumb\": {\n                        background: alpha(theme.palette.primary.main, 0.3),\n                        borderRadius: \"4px\",\n                        \"&:hover\": {\n                          background: alpha(theme.palette.primary.main, 0.5),\n                        },\n                      },\n                    }}\n                  >\n                    {renderData(data)}\n                  </Box>\n                  {!error && (\n                    <Alert severity=\"info\" sx={{ mt: 2 }}>\n                      Redirecting to {redirectUrl} in {redirectCount} seconds...\n                    </Alert>\n                  )}\n                </>\n              ) : (\n                <Alert\n                  severity=\"error\"\n                  variant=\"filled\"\n                  sx={{ borderRadius: 2 }}\n                >\n                  No data returned\n                </Alert>\n              )}\n            </Box>\n          </Fade>\n        )}\n      </StyledPaper>\n    </Fade>\n  );\n};\n\nexport default AadhaarFlow;\n","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-2h2zm0-4h-2V7h2z\"\n}), 'Error');","import React, { useState, useEffect } from \"react\";\nimport {\n  Typography,\n  Box,\n  Paper,\n  useTheme,\n  CircularProgress,\n  Alert,\n  Divider,\n  alpha,\n  useMediaQuery,\n  Fade,\n} from \"@mui/material\";\nimport CheckCircleIcon from \"@mui/icons-material/CheckCircle\";\nimport ErrorIcon from \"@mui/icons-material/Error\";\nimport { styled } from \"@mui/material/styles\";\nimport {\n  getDigiLockerAccessToken,\n  getEAadhaarData,\n  updateSessionStatus,\n} from \"../api\";\nimport type { DigiLockerFlowProps, AadhaarData, Address } from \"../types\";\n\nconst ResultRow = styled(Box)(({ theme }) => ({\n  display: \"flex\",\n  alignItems: \"center\",\n  padding: theme.spacing(1.5, 0),\n  \"&:last-child\": {\n    borderBottom: \"none\",\n  },\n  [theme.breakpoints.down(\"sm\")]: {\n    flexDirection: \"column\",\n    alignItems: \"flex-start\",\n    gap: theme.spacing(1),\n  },\n}));\n\nexport const DigiLockerFlow: React.FC<DigiLockerFlowProps> = ({\n  apiKey,\n  clientId,\n  redirectUrl,\n  autoProcessCallback = true,\n}): React.ReactElement => {\n  const theme = useTheme();\n  const isMobile = useMediaQuery(theme.breakpoints.down(\"sm\"));\n  const [isLoading, setIsLoading] = useState(false);\n  const [verificationResult, setVerificationResult] = useState<any>(null);\n  const [error, setError] = useState<string>(\"\");\n  const [redirectCount, setRedirectCount] = useState(5);\n  const [processingStatus, setProcessingStatus] = useState<string>(\"\");\n\n  // Cleanup function to remove session data when component unmounts or flow completes\n  const cleanupSession = () => {\n    if (verificationResult || error) {\n      localStorage.removeItem(\"deepvue_session_id\");\n      sessionStorage.removeItem(\"digilocker_callback_code\");\n      sessionStorage.removeItem(\"digilocker_callback_state\");\n      sessionStorage.removeItem(\"digilocker_api_key\");\n      sessionStorage.removeItem(\"digilocker_client_id\");\n      sessionStorage.removeItem(\"digilocker_callback_received\");\n      sessionStorage.removeItem(\"digilocker_flow_active\");\n    }\n  };\n\n  useEffect(() => {\n    return () => {\n      cleanupSession();\n    };\n  }, [verificationResult, error]);\n\n  useEffect(() => {\n    if (!autoProcessCallback) return;\n\n    const processCallbackData = async () => {\n      try {\n        // Check for callback data in sessionStorage\n        const callbackCode = sessionStorage.getItem(\"digilocker_callback_code\");\n        const callbackState = sessionStorage.getItem(\n          \"digilocker_callback_state\"\n        );\n        const storedApiKey = sessionStorage.getItem(\"digilocker_api_key\");\n        const storedClientId = sessionStorage.getItem(\"digilocker_client_id\");\n        const callbackReceived = sessionStorage.getItem(\n          \"digilocker_callback_received\"\n        );\n\n        if (\n          callbackCode &&\n          callbackState &&\n          storedApiKey &&\n          storedClientId &&\n          callbackReceived === \"true\"\n        ) {\n          sessionStorage.removeItem(\"digilocker_callback_received\");\n          sessionStorage.removeItem(\"digilocker_flow_active\");\n\n          await handleCompleteDigilockerJourney(callbackCode, callbackState);\n        }\n      } catch (error) {\n        console.error(\"Error in auto-processing callback:\", error);\n        setError(\"Failed to auto-process DigiLocker callback\");\n        cleanupSession();\n      }\n    };\n\n    processCallbackData();\n\n    const handleMessage = async (event: MessageEvent) => {\n      if (event.origin !== window.location.origin) return;\n\n      if (event.data.type === \"DIGILOCKER_CALLBACK\") {\n        const { digilockerCode: code, transactionId: txId } = event.data;\n\n        if (code && txId) {\n          await handleCompleteDigilockerJourney(code, txId);\n        }\n      }\n    };\n\n    window.addEventListener(\"message\", handleMessage);\n    return () => {\n      window.removeEventListener(\"message\", handleMessage);\n      cleanupSession();\n    };\n  }, [autoProcessCallback, apiKey, clientId]);\n\n  const handleCompleteDigilockerJourney = async (\n    code: string,\n    txId: string\n  ) => {\n    setIsLoading(true);\n    setError(\"\");\n    setProcessingStatus(\"Getting access token...\");\n    setVerificationResult(null);\n\n    const sessionId = localStorage.getItem(\"deepvue_session_id\");\n\n    try {\n      // Step 1: Get access token\n      setProcessingStatus(\"Authenticating with DigiLocker...\");\n      const tokenResponse = await getDigiLockerAccessToken(\n        txId,\n        code,\n        apiKey,\n        clientId\n      );\n\n      if (\n        tokenResponse?.code === 200 &&\n        tokenResponse?.sub_code === \"SUCCESS\"\n      ) {\n        // Step 2: Get eAadhaar data\n        setProcessingStatus(\"Fetching your Aadhaar data...\");\n        const aadhaarResponse = await getEAadhaarData(txId, apiKey, clientId);\n\n        if (\n          aadhaarResponse?.code === 200 &&\n          aadhaarResponse?.sub_code === \"SUCCESS\"\n        ) {\n          setProcessingStatus(\"Verification completed successfully!\");\n          setVerificationResult(aadhaarResponse);\n\n          // Update session status for DigiLocker success\n          if (sessionId) {\n            try {\n              await updateSessionStatus(\n                sessionId,\n                \"digilocker_success\",\n                apiKey,\n                clientId\n              );\n            } catch (updateError) {\n              console.error(\"Failed to update session status:\", updateError);\n            }\n          }\n\n          // Start redirect countdown\n          const timer = setInterval(() => {\n            setRedirectCount((prev) => {\n              if (prev <= 1) {\n                clearInterval(timer);\n                cleanupSession();\n                window.location.href = redirectUrl;\n                return 0;\n              }\n              return prev - 1;\n            });\n          }, 1000);\n\n          // Cleanup timer on unmount\n          return () => clearInterval(timer);\n        } else {\n          throw new Error(\n            aadhaarResponse?.message || \"Failed to fetch Aadhaar data\"\n          );\n        }\n      } else {\n        throw new Error(tokenResponse?.message || \"Failed to get access token\");\n      }\n    } catch (error: any) {\n      console.error(\"DigiLocker flow error:\", error);\n      const errorResponse = error?.response?.data || {\n        message: error?.message || \"An error occurred during verification\",\n        code: error?.response?.status || 500,\n      };\n\n      // Update session status for DigiLocker failure\n      if (sessionId) {\n        try {\n          await updateSessionStatus(\n            sessionId,\n            \"digilocker_failure\",\n            apiKey,\n            clientId\n          );\n        } catch (updateError) {\n          console.error(\"Failed to update session status:\", updateError);\n        }\n      }\n\n      setError(errorResponse.message);\n      setProcessingStatus(\"Verification failed\");\n      cleanupSession();\n    } finally {\n      setIsLoading(false);\n      setProcessingStatus(\"\");\n    }\n  };\n\n  const transformValue = (val: any) => {\n    if (val == null) return \"\";\n    if (typeof val === \"boolean\") return val ? \"Yes\" : \"No\";\n    return val;\n  };\n\n  const renderData = (obj: Partial<AadhaarData>): React.ReactNode[] => {\n    if (!obj || typeof obj !== \"object\") {\n      return [];\n    }\n\n    type ExtractedData = {\n      maskedNumber?: string;\n      name?: string;\n      dateOfBirth?: string;\n      gender?: string;\n      address?: Address;\n      photo?: string;\n    };\n\n    // Extract data from nested structure\n    const data: ExtractedData = {\n      maskedNumber: obj.masked_uid,\n      name: obj.proof_of_identity?.name,\n      dateOfBirth: obj.proof_of_identity?.dob,\n      gender: obj.proof_of_identity?.gender,\n      address: obj.proof_of_address,\n      photo: obj.photo,\n    };\n\n    const fieldsToShow: Array<{ key: keyof ExtractedData; label: string }> = [\n      { key: \"maskedNumber\", label: \"Aadhaar Number\" },\n      { key: \"name\", label: \"Name\" },\n      { key: \"dateOfBirth\", label: \"Date Of Birth\" },\n      { key: \"gender\", label: \"Gender\" },\n      { key: \"address\", label: \"Address\" },\n      { key: \"photo\", label: \"Photo\" },\n    ];\n\n    return fieldsToShow.flatMap(({ key, label }, idx) => {\n      const value = data[key];\n\n      // Handle photo field\n      if (key === \"photo\" && typeof value === \"string\") {\n        return [\n          <ResultRow key={key}>\n            <Typography\n              variant=\"subtitle2\"\n              sx={{ width: \"180px\", fontWeight: 600 }}\n            >\n              {label}\n            </Typography>\n            <Box\n              component=\"img\"\n              src={`data:image/jpeg;base64,${value}`}\n              alt=\"Aadhaar Photo\"\n              sx={{ width: 100, height: \"auto\", borderRadius: 1 }}\n            />\n          </ResultRow>,\n          idx < fieldsToShow.length - 1 && <Divider key={`${key}-div`} />,\n        ];\n      }\n\n      // Handle address field\n      if (key === \"address\" && value && typeof value === \"object\") {\n        const addressParts = [\n          value.care_of,\n          value.house,\n          value.street,\n          value.locality,\n          value.vtc,\n          value.district,\n          value.state,\n          value.pincode,\n          value.country,\n        ]\n          .filter(Boolean)\n          .join(\", \");\n\n        return [\n          <ResultRow key={key}>\n            <Typography\n              variant=\"subtitle2\"\n              sx={{ width: \"180px\", fontWeight: 600 }}\n            >\n              {label}\n            </Typography>\n            <Typography variant=\"body2\">{addressParts}</Typography>\n          </ResultRow>,\n          idx < fieldsToShow.length - 1 && <Divider key={`${key}-div`} />,\n        ];\n      }\n\n      // Handle other fields\n      return [\n        <ResultRow key={key}>\n          <Typography\n            variant=\"subtitle2\"\n            sx={{ width: \"180px\", fontWeight: 600 }}\n          >\n            {label}\n          </Typography>\n          <Typography variant=\"body2\">{transformValue(value)}</Typography>\n        </ResultRow>,\n        idx < fieldsToShow.length - 1 && <Divider key={`${key}-div`} />,\n      ];\n    });\n  };\n\n  const displayData = verificationResult?.data ?? verificationResult;\n\n  useEffect(() => {\n    if (displayData && !error) {\n      const timer = setInterval(() => {\n        setRedirectCount((prev) => {\n          if (prev <= 1) {\n            clearInterval(timer);\n            window.location.href = redirectUrl;\n            return 0;\n          }\n          return prev - 1;\n        });\n      }, 1000);\n\n      return () => clearInterval(timer);\n    }\n  }, [displayData, redirectUrl, error]);\n\n  return (\n    <Box sx={{ display: \"flex\", justifyContent: \"center\", p: 4 }}>\n      <Paper\n        elevation={4}\n        sx={{\n          width: \"100%\",\n          maxWidth: 450,\n          p: theme.spacing(4),\n          borderRadius: theme.spacing(2),\n          backgroundColor: \"#ffffff\",\n        }}\n      >\n        {isLoading && (\n          <Box\n            sx={{\n              display: \"flex\",\n              flexDirection: \"column\",\n              alignItems: \"center\",\n              py: 4,\n            }}\n          >\n            <CircularProgress size={40} sx={{ mb: 2 }} />\n            <Typography variant=\"body1\" sx={{ mb: 1 }}>\n              {processingStatus || \"Processing your DigiLocker verification...\"}\n            </Typography>\n            <Typography variant=\"body2\" color=\"text.secondary\">\n              Please wait while we securely verify and fetch your information.\n            </Typography>\n          </Box>\n        )}\n\n        {!isLoading && verificationResult && !error && (\n          <Fade in timeout={500}>\n            <Box>\n              <Box\n                sx={{\n                  display: \"flex\",\n                  alignItems: \"center\",\n                  gap: 1,\n                  mb: 3,\n                }}\n              >\n                <Typography\n                  variant=\"h5\"\n                  fontWeight={600}\n                  sx={{ display: \"flex\", alignItems: \"center\", gap: 1 }}\n                >\n                  <CheckCircleIcon color=\"success\" />\n                  Verification Successful\n                </Typography>\n              </Box>\n\n              {displayData && typeof displayData === \"object\" ? (\n                <>\n                  <Box\n                    sx={{\n                      maxHeight: isMobile ? \"60vh\" : \"50vh\",\n                      overflowY: \"auto\",\n                      pr: 1,\n                      \"&::-webkit-scrollbar\": {\n                        width: \"8px\",\n                      },\n                      \"&::-webkit-scrollbar-track\": {\n                        background: alpha(theme.palette.primary.main, 0.1),\n                        borderRadius: \"4px\",\n                      },\n                      \"&::-webkit-scrollbar-thumb\": {\n                        background: alpha(theme.palette.primary.main, 0.3),\n                        borderRadius: \"4px\",\n                        \"&:hover\": {\n                          background: alpha(theme.palette.primary.main, 0.5),\n                        },\n                      },\n                    }}\n                  >\n                    {renderData(displayData as Partial<AadhaarData>)}\n                  </Box>\n                  {!error && (\n                    <Alert severity=\"info\" sx={{ mt: 2 }}>\n                      Redirecting to {redirectUrl} in {redirectCount} seconds...\n                    </Alert>\n                  )}\n                </>\n              ) : (\n                <Alert\n                  severity=\"error\"\n                  variant=\"filled\"\n                  sx={{ borderRadius: 2 }}\n                >\n                  No data returned\n                </Alert>\n              )}\n            </Box>\n          </Fade>\n        )}\n\n        {error && !isLoading && (\n          <>\n            <Box\n              sx={{\n                display: \"flex\",\n                alignItems: \"center\",\n                gap: 1,\n                mb: 3,\n              }}\n            >\n              <Typography\n                variant=\"h5\"\n                fontWeight={600}\n                sx={{ display: \"flex\", alignItems: \"center\", gap: 1 }}\n              >\n                <ErrorIcon sx={{ color: \"error.main\" }} />\n                Verification Failed\n              </Typography>\n            </Box>\n\n            <Alert severity=\"error\" variant=\"filled\" sx={{ borderRadius: 2 }}>\n              {error}\n            </Alert>\n          </>\n        )}\n      </Paper>\n    </Box>\n  );\n};\n"]}