{"version":3,"sources":["../src/hooks/common.ts","../src/hooks/useIDKitFlow.ts","../src/hooks/useIDKitRequest.ts","../src/styles/widgetStyles.ts","../src/widget/ShadowHost.tsx","../src/components/Icons/XMarkIcon.tsx","../src/lang/translations/en.ts","../src/lang/translations/es.ts","../src/lang/translations/th.ts","../src/lang/translations/index.ts","../src/lang/localization.ts","../src/lang/index.ts","../src/widget/IDKitModal.tsx","../src/hooks/useMedia.ts","../src/components/Icons/WorldIcon.tsx","../src/components/Icons/LoadingIcon.tsx","../src/widget/QRCode.tsx","../src/components/Icons/QRPlaceholderIcon.tsx","../src/components/States/QRState.tsx","../src/components/States/WorldIDState.tsx","../src/components/Icons/CheckIcon.tsx","../src/components/States/SuccessState.tsx","../src/components/Icons/ErrorIcon.tsx","../src/components/Icons/WarningIcon.tsx","../src/components/States/ErrorState.tsx","../src/widget/IDKitRequestWidget.tsx"],"names":["IDKitErrorCodes","useState","useRef","useCallback","useEffect","IDKit","createPortal","jsx","jsxs","Fragment","QRCodeUtil","useMemo","memo"],"mappings":"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AA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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","file":"index.cjs","sourcesContent":["import { IDKitErrorCodes } from \"@worldcoin/idkit-core\";\n\ntype IDKitHookStatus =\n  | \"idle\"\n  | \"waiting_for_connection\"\n  | \"awaiting_confirmation\"\n  | \"confirmed\"\n  | \"failed\";\n\nexport type HookState<TResult> = {\n  isOpen: boolean;\n  status: IDKitHookStatus;\n  connectorURI: string | null;\n  result: TResult | null;\n  errorCode: IDKitErrorCodes | null;\n};\n\nexport function createInitialHookState<TResult>(): HookState<TResult> {\n  return {\n    isOpen: false,\n    status: \"idle\",\n    connectorURI: null,\n    result: null,\n    errorCode: null,\n  };\n}\n\nexport function ensureNotAborted(signal?: AbortSignal): void {\n  if (signal?.aborted) {\n    throw IDKitErrorCodes.Cancelled;\n  }\n}\n\nexport async function delay(ms: number, signal?: AbortSignal): Promise<void> {\n  if (!signal) {\n    await new Promise((resolve) => setTimeout(resolve, ms));\n    return;\n  }\n\n  await new Promise<void>((resolve, reject) => {\n    const timeout = setTimeout(() => {\n      signal.removeEventListener(\"abort\", abortHandler);\n      resolve();\n    }, ms);\n\n    const abortHandler = () => {\n      clearTimeout(timeout);\n      signal.removeEventListener(\"abort\", abortHandler);\n      reject(IDKitErrorCodes.Cancelled);\n    };\n\n    signal.addEventListener(\"abort\", abortHandler, { once: true });\n  });\n}\n\nconst knownErrorCodes = new Set<string>(Object.values(IDKitErrorCodes));\n\nfunction asKnownErrorCode(value: unknown): IDKitErrorCodes | null {\n  if (typeof value === \"string\" && knownErrorCodes.has(value)) {\n    return value as IDKitErrorCodes;\n  }\n\n  return null;\n}\n\nexport function toErrorCode(error: unknown): IDKitErrorCodes {\n  const directCode = asKnownErrorCode(error);\n  if (directCode) {\n    return directCode;\n  }\n\n  if (typeof error === \"object\" && error !== null && \"code\" in error) {\n    const nestedCode = asKnownErrorCode((error as { code?: unknown }).code);\n    if (nestedCode) {\n      return nestedCode;\n    }\n  }\n\n  return IDKitErrorCodes.GenericError;\n}\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { IDKitErrorCodes, type IDKitRequest } from \"@worldcoin/idkit-core\";\nimport type { FlowConfig, IDKitHookResult } from \"../types\";\nimport {\n  createInitialHookState,\n  delay,\n  ensureNotAborted,\n  toErrorCode,\n  type HookState,\n} from \"./common\";\n\nexport function useIDKitFlow<TResult>(\n  createFlowHandle: () => Promise<IDKitRequest>,\n  config: FlowConfig,\n): IDKitHookResult<TResult> {\n  const [state, setState] = useState<HookState<TResult>>(\n    createInitialHookState,\n  );\n  // Mutable handle so event handlers (reset) can cancel the active polling loop.\n  const abortRef = useRef<AbortController | null>(null);\n  // Refs keep the effect stable (deps: [state.isOpen]) while always reading the latest values.\n  const createFlowHandleRef = useRef(createFlowHandle);\n  const configRef = useRef(config);\n\n  // Updated every render so the effect reads fresh closures/config without re-triggering.\n  createFlowHandleRef.current = createFlowHandle;\n  configRef.current = config;\n\n  const reset = useCallback(() => {\n    abortRef.current?.abort();\n    abortRef.current = null;\n    setState(createInitialHookState);\n  }, []);\n\n  const open = useCallback(() => {\n    setState((prev) => {\n      if (prev.isOpen) {\n        return prev;\n      }\n\n      return {\n        isOpen: true,\n        status: \"waiting_for_connection\",\n        connectorURI: null,\n        result: null,\n        errorCode: null,\n      };\n    });\n  }, []);\n\n  useEffect(() => {\n    if (!state.isOpen) {\n      return;\n    }\n\n    const controller = new AbortController();\n    abortRef.current = controller;\n\n    const setFailed = (errorCode: IDKitErrorCodes) => {\n      setState((prev) => {\n        if (prev.status === \"failed\" && prev.errorCode === errorCode) {\n          return prev;\n        }\n\n        return {\n          ...prev,\n          status: \"failed\",\n          errorCode,\n        };\n      });\n    };\n\n    void (async () => {\n      try {\n        const request = await createFlowHandleRef.current();\n        ensureNotAborted(controller.signal);\n\n        setState((prev) => {\n          if (prev.connectorURI === request.connectorURI) {\n            return prev;\n          }\n          return { ...prev, connectorURI: request.connectorURI };\n        });\n\n        const pollInterval = configRef.current.polling?.interval ?? 1000;\n        const timeout = configRef.current.polling?.timeout ?? 300000;\n        const startedAt = Date.now();\n\n        while (true) {\n          ensureNotAborted(controller.signal);\n\n          if (Date.now() - startedAt > timeout) {\n            setFailed(IDKitErrorCodes.Timeout);\n            return;\n          }\n\n          const nextStatus = await request.pollOnce();\n          ensureNotAborted(controller.signal);\n\n          if (nextStatus.type === \"confirmed\") {\n            const confirmedResult = nextStatus.result;\n            if (!confirmedResult) {\n              setFailed(IDKitErrorCodes.UnexpectedResponse);\n              return;\n            }\n\n            setState((prev) => ({\n              ...prev,\n              status: \"confirmed\",\n              result: confirmedResult as TResult,\n              errorCode: null,\n            }));\n            return;\n          }\n\n          if (nextStatus.type === \"failed\") {\n            setFailed(nextStatus.error ?? IDKitErrorCodes.GenericError);\n            return;\n          }\n\n          setState((prev) => {\n            if (prev.status === nextStatus.type) {\n              return prev;\n            }\n            return { ...prev, status: nextStatus.type };\n          });\n\n          await delay(pollInterval, controller.signal);\n        }\n      } catch (error) {\n        if (controller.signal.aborted) {\n          return;\n        }\n\n        setFailed(toErrorCode(error));\n      }\n    })();\n\n    return () => {\n      controller.abort();\n      if (abortRef.current === controller) {\n        abortRef.current = null;\n      }\n    };\n  }, [state.isOpen]);\n\n  return {\n    open,\n    reset,\n    isAwaitingUserConnection: state.status === \"waiting_for_connection\",\n    isAwaitingUserConfirmation: state.status === \"awaiting_confirmation\",\n    isSuccess: state.status === \"confirmed\",\n    isError: state.status === \"failed\",\n    connectorURI: state.connectorURI,\n    result: state.result,\n    errorCode: state.errorCode,\n    isOpen: state.isOpen,\n  };\n}\n","import { IDKit, type IDKitResult } from \"@worldcoin/idkit-core\";\nimport type {\n  IDKitRequestHookConfig,\n  UseIDKitRequestHookResult,\n} from \"../types\";\nimport { useIDKitFlow } from \"./useIDKitFlow\";\n\nexport function useIDKitRequest(\n  config: IDKitRequestHookConfig,\n): UseIDKitRequestHookResult {\n  return useIDKitFlow<IDKitResult>(\n    () =>\n      IDKit.request({\n        app_id: config.app_id,\n        action: config.action,\n        rp_context: config.rp_context,\n        action_description: config.action_description,\n        bridge_url: config.bridge_url,\n        allow_legacy_proofs: config.allow_legacy_proofs,\n        override_connect_base_url: config.override_connect_base_url,\n        environment: config.environment,\n      }).preset(config.preset),\n    config,\n  );\n}\n","export const WIDGET_STYLES = `\n@font-face {\n  font-family: 'TWK Lausanne';\n  src: url('https://world-id-assets.com/fonts/TWKLausanne-200.woff2') format('woff2');\n  font-weight: 200;\n  font-style: normal;\n  font-display: swap;\n}\n@font-face {\n  font-family: 'TWK Lausanne';\n  src: url('https://world-id-assets.com/fonts/TWKLausanne-300.woff2') format('woff2');\n  font-weight: 300;\n  font-style: normal;\n  font-display: swap;\n}\n@font-face {\n  font-family: 'TWK Lausanne';\n  src: url('https://world-id-assets.com/fonts/TWKLausanne-400.woff2') format('woff2');\n  font-weight: 400;\n  font-style: normal;\n  font-display: swap;\n}\n@font-face {\n  font-family: 'TWK Lausanne';\n  src: url('https://world-id-assets.com/fonts/TWKLausanne-500.woff2') format('woff2');\n  font-weight: 500;\n  font-style: normal;\n  font-display: swap;\n}\n@font-face {\n  font-family: 'TWK Lausanne';\n  src: url('https://world-id-assets.com/fonts/TWKLausanne-600.woff2') format('woff2');\n  font-weight: 600;\n  font-style: normal;\n  font-display: swap;\n}\n\n/* CSS Custom Properties */\n:host {\n  --idkit-font: 'TWK Lausanne', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;\n  --idkit-bg: #ffffff;\n  --idkit-text: #0d151d;\n  --idkit-text-muted: #657080;\n  --idkit-text-secondary: #9eafc0;\n  --idkit-border: #EBECEF;\n  --idkit-border-light: #f1f5f8;\n  --idkit-surface: #f8fafc;\n  --idkit-success: #00C230;\n  --idkit-error: #9BA3AE;\n  --idkit-warning: #FFAE00;\n  --idkit-btn-bg: #0d151d;\n  --idkit-btn-text: #ffffff;\n}\n:host(.dark) {\n  --idkit-bg: #0d151d;\n  --idkit-text: #ffffff;\n  --idkit-text-muted: #9eafc0;\n  --idkit-text-secondary: #657080;\n  --idkit-border: rgba(235, 236, 239, 0.15);\n  --idkit-border-light: rgba(241, 245, 248, 0.1);\n  --idkit-surface: rgba(255, 255, 255, 0.05);\n  --idkit-btn-bg: #ffffff;\n  --idkit-btn-text: #0d151d;\n}\n\n/* Animations */\n@keyframes idkit-fade-in {\n  from { opacity: 0; }\n  to { opacity: 1; }\n}\n@keyframes idkit-scale-in {\n  from { opacity: 0; transform: scale(0.9); }\n  to { opacity: 1; transform: scale(1); }\n}\n@keyframes idkit-slide-up {\n  from { transform: translateY(100%); }\n  to { transform: translateY(0); }\n}\n@keyframes idkit-spin {\n  from { transform: rotate(0deg); }\n  to { transform: rotate(360deg); }\n}\n@keyframes idkit-pulse {\n  0%, 100% { opacity: 1; }\n  50% { opacity: 0.5; }\n}\n\n/* Backdrop */\n.idkit-backdrop {\n  position: fixed;\n  inset: 0;\n  background: rgba(0, 0, 0, 0.5);\n  backdrop-filter: blur(12px);\n  -webkit-backdrop-filter: blur(12px);\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  z-index: 2147483646;\n  padding: 16px;\n  animation: idkit-fade-in 0.2s ease-out;\n}\n\n/* Modal */\n.idkit-modal {\n  position: relative;\n  width: 100%;\n  max-width: 448px;\n  min-height: 35rem;\n  background: var(--idkit-bg);\n  border-radius: 24px;\n  box-shadow: 0 24px 60px rgba(15, 23, 42, 0.28), 0 0 0 1px rgba(0, 0, 0, 0.04);\n  font-family: var(--idkit-font);\n  color: var(--idkit-text);\n  display: flex;\n  flex-direction: column;\n  overflow: hidden;\n  animation: idkit-scale-in 0.25s ease-out;\n}\n\n/* Close button */\n.idkit-close {\n  position: absolute;\n  top: 24px;\n  right: 24px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 32px;\n  height: 32px;\n  border: 1.2px solid var(--idkit-border);\n  border-radius: 50%;\n  background: transparent;\n  color: var(--idkit-text);\n  cursor: pointer;\n  padding: 0;\n  z-index: 1;\n  transition: background 0.15s ease;\n}\n.idkit-close:hover {\n  background: var(--idkit-surface);\n}\n.idkit-close svg {\n  width: 16px;\n  height: 16px;\n}\n\n/* Content area */\n.idkit-content {\n  flex: 1;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  padding: 24px 24px 24px;\n  text-align: center;\n}\n\n/* Footer */\n.idkit-footer {\n  border-top: 1px solid #F5F5F7;\n  padding: 28px 32px;\n  text-align: center;\n}\n:host(.dark) .idkit-footer {\n  border-top-color: rgba(245, 245, 247, 0.15);\n}\n.idkit-footer a {\n  color: var(--idkit-text-muted);\n  font-size: 14px;\n  text-decoration: none;\n  transition: color 0.15s ease;\n}\n.idkit-footer a:hover {\n  color: var(--idkit-text);\n}\n\n/* World ID State */\n.idkit-worldid-icon {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 56px;\n  height: 56px;\n  border-radius: 50%;\n  border: 1.2px solid var(--idkit-border);\n  margin-bottom: 16px;\n}\n.idkit-worldid-icon svg {\n  width: 32px;\n  height: 32px;\n  color: var(--idkit-text);\n}\n\n.idkit-heading {\n  margin: 0;\n  font-size: 24px;\n  font-weight: 600;\n  line-height: 1.2;\n  color: var(--idkit-text);\n}\n\n.idkit-subtext {\n  margin: 12px 0 0;\n  font-size: 16px;\n  line-height: 1.4;\n  color: var(--idkit-text-muted);\n}\n\n/* QR Container */\n.idkit-qr-container {\n  position: relative;\n  width: 100%;\n  margin-top: 40px;\n}\n\n.idkit-qr-overlay {\n  position: absolute;\n  inset: 0;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  gap: 24px;\n  z-index: 2;\n}\n\n.idkit-qr-blur {\n  transition: filter 0.5s ease-in-out, opacity 0.5s ease-in-out;\n}\n.idkit-qr-blur.blurred {\n  filter: blur(16px);\n  opacity: 0.4;\n}\n\n.idkit-qr-wrapper {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  border-radius: 16px;\n  border: 1px solid var(--idkit-border-light);\n  padding: 12px;\n}\n\n.idkit-qr-inner {\n  color: var(--idkit-text);\n}\n\n/* QR Code SVG colors for finder patterns */\n.idkit-qr-inner .qr-finder-dark { color: #000000; }\n.idkit-qr-inner .qr-finder-light { color: #ffffff; }\n:host(.dark) .idkit-qr-inner .qr-finder-dark { color: #000000; }\n:host(.dark) .idkit-qr-inner .qr-finder-light { color: #ffffff; }\n.idkit-qr-inner .qr-dot { color: #000000; }\n:host(.dark) .idkit-qr-inner .qr-dot { color: #ffffff; }\n\n/* QR Placeholder */\n.idkit-qr-placeholder {\n  width: 200px;\n  height: 200px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n.idkit-qr-placeholder svg {\n  width: 200px;\n  height: 200px;\n  animation: idkit-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n\n/* Copy toast — absolutely positioned so it never shifts layout */\n.idkit-copy-toast {\n  position: absolute;\n  bottom: 100%;\n  left: 50%;\n  transform: translateX(-50%);\n  margin-bottom: 8px;\n  opacity: 0;\n  transition: opacity 0.25s ease-in-out;\n  pointer-events: none;\n  white-space: nowrap;\n}\n.idkit-copy-toast.visible {\n  opacity: 1;\n  transition: opacity 0.2s ease-in-out 0.05s;\n}\n.idkit-copy-toast > span {\n  display: inline-block;\n  border-radius: 8px;\n  border: 1px solid var(--idkit-border-light);\n  padding: 4px 8px;\n  font-size: 14px;\n  color: var(--idkit-text-secondary);\n}\n\n/* Simulator callout (staging only) */\n.idkit-simulator-callout {\n  margin: 12px 0 0;\n  font-size: 14px;\n  color: var(--idkit-text-secondary);\n  text-align: center;\n}\n.idkit-simulator-callout a {\n  color: var(--idkit-text-muted);\n  text-decoration: underline;\n  text-underline-offset: 2px;\n}\n.idkit-simulator-callout a:hover {\n  color: var(--idkit-text);\n}\n\n/* Mobile deep-link button */\n.idkit-deeplink-btn {\n  display: flex;\n  width: 100%;\n  align-items: center;\n  gap: 8px;\n  border-radius: 16px;\n  border: 1px solid transparent;\n  background: var(--idkit-btn-bg);\n  color: var(--idkit-btn-text);\n  padding: 16px;\n  font-family: var(--idkit-font);\n  font-size: 16px;\n  font-weight: 500;\n  text-decoration: none;\n  cursor: pointer;\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n.idkit-deeplink-btn svg {\n  width: 20px;\n  height: 20px;\n  flex-shrink: 0;\n}\n.idkit-deeplink-btn span {\n  flex: 1;\n  text-align: center;\n}\n\n/* Loading spinner */\n.idkit-spinner {\n  animation: idkit-spin 1s linear infinite;\n}\n.idkit-spinner svg {\n  width: 24px;\n  height: 24px;\n}\n\n.idkit-connecting-text {\n  text-align: center;\n}\n.idkit-connecting-text p:first-child {\n  font-weight: 500;\n  color: var(--idkit-text-muted);\n  margin: 0;\n}\n.idkit-connecting-text p:last-child {\n  font-size: 14px;\n  font-weight: 300;\n  color: var(--idkit-text-muted);\n  margin: 4px 0 0;\n}\n\n/* Success State */\n.idkit-success-icon {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  margin-bottom: 24px;\n}\n.idkit-success-icon svg {\n  width: 96px;\n  height: 96px;\n}\n\n/* Error State */\n.idkit-error-icon {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  margin-bottom: 24px;\n}\n.idkit-error-icon svg {\n  width: 96px;\n  height: 96px;\n}\n\n.idkit-error-title {\n  margin: 0;\n  font-size: 24px;\n  font-weight: 600;\n  color: var(--idkit-text);\n}\n\n.idkit-error-message {\n  margin: 8px auto 0;\n  max-width: 224px;\n  font-size: 16px;\n  color: var(--idkit-text-muted);\n  line-height: 1.4;\n}\n\n/* Retry button */\n.idkit-retry-btn {\n  display: inline-flex;\n  align-items: center;\n  border-radius: 9999px;\n  border: 1.2px solid var(--idkit-border);\n  background: transparent;\n  padding: 12px 32px;\n  font-family: var(--idkit-font);\n  font-size: 16px;\n  font-weight: 600;\n  color: var(--idkit-text);\n  cursor: pointer;\n  transition: box-shadow 0.3s ease;\n  margin-top: 32px;\n}\n.idkit-retry-btn:hover {\n  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n}\n\n/* Success subtext: old SDK used text-lg (18px) */\n.idkit-success-icon ~ .idkit-subtext {\n  font-size: 18px;\n  line-height: 1.56;\n}\n\n/* Responsive: mobile full-screen bottom-anchored */\n@media (max-width: 1024px) {\n  .idkit-backdrop {\n    align-items: flex-end;\n    padding: 0;\n  }\n  .idkit-modal {\n    max-width: 100%;\n    min-height: auto;\n    max-height: 95vh;\n    border-radius: 24px 24px 0 0;\n    animation: idkit-slide-up 0.3s ease-out;\n  }\n\n  /* Hide desktop QR on mobile */\n  .idkit-desktop-only {\n    display: none;\n  }\n  .idkit-mobile-only {\n    display: block;\n  }\n}\n\n@media (min-width: 1025px) {\n  .idkit-mobile-only {\n    display: none;\n  }\n  .idkit-desktop-only {\n    display: block;\n    position: relative;\n  }\n  .idkit-subtext {\n    margin-top: 8px;\n  }\n}\n`;\n","import { useEffect, useState, type ReactElement, type ReactNode } from \"react\";\nimport { createPortal } from \"react-dom\";\n\ntype ShadowHostProps = {\n  children: ReactNode;\n};\n\nexport function ShadowHost({ children }: ShadowHostProps): ReactElement | null {\n  const [root, setRoot] = useState<ShadowRoot | null>(null);\n\n  useEffect(() => {\n    if (typeof document === \"undefined\") {\n      return;\n    }\n\n    const host = document.createElement(\"div\");\n    host.setAttribute(\"data-idkit-shadow-host\", \"true\");\n    document.body.appendChild(host);\n\n    const shadowRoot = host.attachShadow({ mode: \"open\" });\n    setRoot(shadowRoot);\n\n    return () => {\n      host.remove();\n      setRoot(null);\n    };\n  }, []);\n\n  if (!root) {\n    return null;\n  }\n\n  return createPortal(children, root);\n}\n","import type { SVGProps } from \"react\";\n\nexport function XMarkIcon(props: SVGProps<SVGSVGElement>) {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      fill=\"none\"\n      viewBox=\"0 0 24 24\"\n      {...props}\n    >\n      <path\n        strokeWidth=\"1.5\"\n        stroke=\"currentColor\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        d=\"m16.243 7.758-8.485 8.485m8.485 0L7.758 7.758\"\n      />\n    </svg>\n  );\n}\n","import type { TranslationStrings } from \"../types\";\n\nexport const en: TranslationStrings = {\n  \"All set!\": \"All set!\",\n  \"Your World ID is now connected\": \"Your World ID is now connected\",\n  \"Something went wrong\": \"Something went wrong\",\n  \"Request cancelled\": \"Request cancelled\",\n  \"You've cancelled the request in World App.\":\n    \"You've cancelled the request in World App.\",\n  \"Connection lost\": \"Connection lost\",\n  \"Please check your connection and try again.\":\n    \"Please check your connection and try again.\",\n  \"We couldn't complete your request. Please try again.\":\n    \"We couldn't complete your request. Please try again.\",\n  \"Try Again\": \"Try Again\",\n  \"Open World App\": \"Open World App\",\n  \"QR Code copied\": \"QR Code copied\",\n  \"Connect your World ID\": \"Connect your World ID\",\n  \"Use phone camera to scan the QR code\":\n    \"Use phone camera to scan the QR code\",\n  \"Connecting...\": \"Connecting...\",\n  \"Please continue in app\": \"Please continue in app\",\n  \"You will be redirected to the app, please return to this page once you're done\":\n    \"You will be redirected to the app, please return to this page once you're done\",\n  \"Terms & Privacy\": \"Terms & Privacy\",\n};\n","import type { TranslationStrings } from \"../types\";\n\nexport const es: TranslationStrings = {\n  \"All set!\": \"\\u00a1Todo listo!\",\n  \"Your World ID is now connected\": \"Tu World ID ahora est\\u00e1 conectado\",\n  \"Something went wrong\": \"Algo sali\\u00f3 mal\",\n  \"Request cancelled\": \"Solicitud cancelada\",\n  \"You've cancelled the request in World App.\":\n    \"Has cancelado la solicitud en World App.\",\n  \"Connection lost\": \"Conexion perdida\",\n  \"Please check your connection and try again.\":\n    \"Por favor verifica tu conexion e intenta de nuevo.\",\n  \"We couldn't complete your request. Please try again.\":\n    \"No pudimos completar tu solicitud. Por favor intenta de nuevo.\",\n  \"Try Again\": \"Intentar de nuevo\",\n  \"Open World App\": \"Abrir World App\",\n  \"QR Code copied\": \"C\\u00f3digo QR copiado\",\n  \"Connect your World ID\": \"Conecta tu World ID\",\n  \"Use phone camera to scan the QR code\":\n    \"Usa la c\\u00e1mara del tel\\u00e9fono para escanear el c\\u00f3digo QR\",\n  \"Connecting...\": \"Conectando...\",\n  \"Please continue in app\": \"Por favor contin\\u00faa en la aplicaci\\u00f3n\",\n  \"You will be redirected to the app, please return to this page once you're done\":\n    \"Ser\\u00e1s redirigido a la aplicaci\\u00f3n, por favor regresa a esta p\\u00e1gina una vez que hayas terminado\",\n  \"Terms & Privacy\": \"T\\u00e9rminos y privacidad\",\n};\n","import type { TranslationStrings } from \"../types\";\n\nexport const th: TranslationStrings = {\n  \"All set!\": \"\\u0e40\\u0e23\\u0e35\\u0e22\\u0e1a\\u0e23\\u0e49\\u0e2d\\u0e22!\",\n  \"Your World ID is now connected\":\n    \"World ID \\u0e02\\u0e2d\\u0e07\\u0e04\\u0e38\\u0e13\\u0e40\\u0e0a\\u0e37\\u0e48\\u0e2d\\u0e21\\u0e15\\u0e48\\u0e2d\\u0e41\\u0e25\\u0e49\\u0e27\",\n  \"Something went wrong\":\n    \"\\u0e40\\u0e01\\u0e34\\u0e14\\u0e02\\u0e49\\u0e2d\\u0e1c\\u0e34\\u0e14\\u0e1e\\u0e25\\u0e32\\u0e14\",\n  \"Request cancelled\":\n    \"\\u0e04\\u0e33\\u0e02\\u0e2d\\u0e16\\u0e39\\u0e01\\u0e22\\u0e01\\u0e40\\u0e25\\u0e34\\u0e01\",\n  \"You've cancelled the request in World App.\":\n    \"\\u0e04\\u0e38\\u0e13\\u0e44\\u0e14\\u0e49\\u0e22\\u0e01\\u0e40\\u0e25\\u0e34\\u0e01\\u0e04\\u0e33\\u0e02\\u0e2d\\u0e43\\u0e19 World App\",\n  \"Connection lost\":\n    \"\\u0e01\\u0e32\\u0e23\\u0e40\\u0e0a\\u0e37\\u0e48\\u0e2d\\u0e21\\u0e15\\u0e48\\u0e2d\\u0e02\\u0e32\\u0e14\\u0e2b\\u0e32\\u0e22\",\n  \"Please check your connection and try again.\":\n    \"\\u0e01\\u0e23\\u0e38\\u0e13\\u0e32\\u0e15\\u0e23\\u0e27\\u0e08\\u0e2a\\u0e2d\\u0e1a\\u0e01\\u0e32\\u0e23\\u0e40\\u0e0a\\u0e37\\u0e48\\u0e2d\\u0e21\\u0e15\\u0e48\\u0e2d\\u0e41\\u0e25\\u0e49\\u0e27\\u0e25\\u0e2d\\u0e07\\u0e2d\\u0e35\\u0e01\\u0e04\\u0e23\\u0e31\\u0e49\\u0e07\",\n  \"We couldn't complete your request. Please try again.\":\n    \"\\u0e40\\u0e23\\u0e32\\u0e44\\u0e21\\u0e48\\u0e2a\\u0e32\\u0e21\\u0e32\\u0e23\\u0e16\\u0e14\\u0e33\\u0e40\\u0e19\\u0e34\\u0e19\\u0e01\\u0e32\\u0e23\\u0e15\\u0e32\\u0e21\\u0e04\\u0e33\\u0e02\\u0e2d\\u0e02\\u0e2d\\u0e07\\u0e04\\u0e38\\u0e13\\u0e44\\u0e14\\u0e49 \\u0e01\\u0e23\\u0e38\\u0e13\\u0e32\\u0e25\\u0e2d\\u0e07\\u0e2d\\u0e35\\u0e01\\u0e04\\u0e23\\u0e31\\u0e49\\u0e07\",\n  \"Try Again\":\n    \"\\u0e25\\u0e2d\\u0e07\\u0e2d\\u0e35\\u0e01\\u0e04\\u0e23\\u0e31\\u0e49\\u0e07\",\n  \"Open World App\": \"\\u0e40\\u0e1b\\u0e34\\u0e14 World App\",\n  \"QR Code copied\":\n    \"\\u0e04\\u0e31\\u0e14\\u0e25\\u0e2d\\u0e01 QR Code \\u0e41\\u0e25\\u0e49\\u0e27\",\n  \"Connect your World ID\":\n    \"\\u0e40\\u0e0a\\u0e37\\u0e48\\u0e2d\\u0e21\\u0e15\\u0e48\\u0e2d World ID \\u0e02\\u0e2d\\u0e07\\u0e04\\u0e38\\u0e13\",\n  \"Use phone camera to scan the QR code\":\n    \"\\u0e43\\u0e0a\\u0e49\\u0e01\\u0e25\\u0e49\\u0e2d\\u0e07\\u0e42\\u0e17\\u0e23\\u0e28\\u0e31\\u0e1e\\u0e17\\u0e4c\\u0e40\\u0e1e\\u0e37\\u0e48\\u0e2d\\u0e2a\\u0e41\\u0e01\\u0e19 QR code\",\n  \"Connecting...\":\n    \"\\u0e01\\u0e33\\u0e25\\u0e31\\u0e07\\u0e40\\u0e0a\\u0e37\\u0e48\\u0e2d\\u0e21\\u0e15\\u0e48\\u0e2d...\",\n  \"Please continue in app\":\n    \"\\u0e01\\u0e23\\u0e38\\u0e13\\u0e32\\u0e14\\u0e33\\u0e40\\u0e19\\u0e34\\u0e19\\u0e01\\u0e32\\u0e23\\u0e15\\u0e48\\u0e2d\\u0e43\\u0e19\\u0e41\\u0e2d\\u0e1b\",\n  \"You will be redirected to the app, please return to this page once you're done\":\n    \"\\u0e04\\u0e38\\u0e13\\u0e08\\u0e30\\u0e16\\u0e39\\u0e01\\u0e19\\u0e33\\u0e44\\u0e1b\\u0e22\\u0e31\\u0e07\\u0e41\\u0e2d\\u0e1b \\u0e01\\u0e23\\u0e38\\u0e13\\u0e32\\u0e01\\u0e25\\u0e31\\u0e1a\\u0e21\\u0e32\\u0e17\\u0e35\\u0e48\\u0e2b\\u0e19\\u0e49\\u0e32\\u0e19\\u0e35\\u0e49\\u0e40\\u0e21\\u0e37\\u0e48\\u0e2d\\u0e40\\u0e2a\\u0e23\\u0e47\\u0e08\\u0e41\\u0e25\\u0e49\\u0e27\",\n  \"Terms & Privacy\":\n    \"\\u0e02\\u0e49\\u0e2d\\u0e01\\u0e33\\u0e2b\\u0e19\\u0e14\\u0e41\\u0e25\\u0e30\\u0e04\\u0e27\\u0e32\\u0e21\\u0e40\\u0e1b\\u0e47\\u0e19\\u0e2a\\u0e48\\u0e27\\u0e19\\u0e15\\u0e31\\u0e27\",\n};\n","import { en } from \"./en\";\nimport { es } from \"./es\";\nimport { th } from \"./th\";\nimport type { Translations } from \"../types\";\n\nexport const translations: Translations = {\n  en,\n  es,\n  th,\n};\n","import { translations } from \"./translations\";\nimport type {\n  LocalizationConfig,\n  SupportedLanguage,\n  TranslationStrings,\n} from \"./types\";\n\nlet currentConfig: LocalizationConfig = {};\n\nexport const setLocalizationConfig = (config: LocalizationConfig): void => {\n  currentConfig = config;\n};\n\nexport const getLocalizationConfig = (): LocalizationConfig => currentConfig;\n\nconst detectBrowserLanguage = (): SupportedLanguage | undefined => {\n  if (typeof navigator === \"undefined\") return undefined;\n\n  for (const lang of navigator.languages) {\n    const [language] = lang.split(\"-\");\n    const normalizedLang = language.toLowerCase() as SupportedLanguage;\n    if (normalizedLang in translations) {\n      return normalizedLang;\n    }\n  }\n\n  return undefined;\n};\n\nexport const getCurrentLanguage = (): SupportedLanguage => {\n  const config = getLocalizationConfig();\n\n  if (config.language && config.language in translations) {\n    return config.language;\n  }\n\n  const browserLang = detectBrowserLanguage();\n  if (browserLang) {\n    return browserLang;\n  }\n\n  return \"en\";\n};\n\nexport const getTranslations = (): TranslationStrings | undefined => {\n  const currentLang = getCurrentLanguage();\n  return translations[currentLang];\n};\n","import { getTranslations } from \"./localization\";\nimport type { TranslationStrings } from \"./types\";\n\nconst getLang = (): TranslationStrings | undefined => {\n  return getTranslations();\n};\n\ntype HasPlaceholder<T extends string> = T extends `${string}:${string}`\n  ? true\n  : false;\n\ntype GetPlaceholderName<T extends string> = T extends `:${infer Name}`\n  ? Name extends `${infer Word}${\" \" | \",\" | \":\" | \"!\" | \"?\" | \".\"}${string}`\n    ? Word\n    : Name\n  : never;\n\ntype GetAllPlaceholders<T extends string> = T extends `${string}:${infer After}`\n  ? GetAllPlaceholders<After> | GetPlaceholderName<`:${After}`>\n  : never;\n\ntype TranslationParams<T extends string> =\n  GetAllPlaceholders<T> extends never\n    ? never\n    : { [K in GetAllPlaceholders<T>]: string };\n\nconst replaceParams = (\n  str: string,\n  params?: Record<string, string>,\n): string => {\n  if (!params) return str;\n\n  let result = str;\n  for (const [key, value] of Object.entries(params)) {\n    result = result.replace(`:${key}`, value);\n  }\n  return result;\n};\n\nexport function __<T extends string>(\n  str: T,\n  ...args: HasPlaceholder<T> extends true ? [params: TranslationParams<T>] : []\n): string {\n  const [params] = args;\n\n  if (typeof navigator === \"undefined\" && typeof window === \"undefined\") {\n    return replaceParams(str, params);\n  }\n\n  const translated = getLang()?.[str as keyof TranslationStrings] ?? str;\n  return replaceParams(translated, params);\n}\n\nexport {\n  setLocalizationConfig,\n  getLocalizationConfig,\n  getCurrentLanguage,\n} from \"./localization\";\nexport type { SupportedLanguage, TranslationStrings } from \"./types\";\n","import { useEffect, type ReactElement, type ReactNode } from \"react\";\nimport { WIDGET_STYLES } from \"../styles/widgetStyles\";\nimport { ShadowHost } from \"./ShadowHost\";\nimport { XMarkIcon } from \"../components/Icons/XMarkIcon\";\nimport { __ } from \"../lang\";\n\ntype IDKitModalProps = {\n  open: boolean;\n  onOpenChange: (open: boolean) => void;\n  children: ReactNode;\n};\n\nfunction ModalContent({\n  onOpenChange,\n  children,\n}: Omit<IDKitModalProps, \"open\">): ReactElement {\n  return (\n    <>\n      <style>{WIDGET_STYLES}</style>\n      <div\n        className=\"idkit-backdrop\"\n        role=\"presentation\"\n        onClick={() => onOpenChange(false)}\n      >\n        <section\n          className=\"idkit-modal\"\n          role=\"dialog\"\n          aria-modal=\"true\"\n          onClick={(event) => event.stopPropagation()}\n        >\n          {/* Close button */}\n          <button\n            type=\"button\"\n            className=\"idkit-close\"\n            onClick={() => onOpenChange(false)}\n            aria-label=\"Close\"\n          >\n            <XMarkIcon />\n          </button>\n\n          {/* Content area */}\n          <div className=\"idkit-content\">{children}</div>\n\n          {/* Footer */}\n          <footer className=\"idkit-footer\">\n            <a\n              href=\"https://developer.world.org/privacy-statement\"\n              target=\"_blank\"\n              rel=\"noopener noreferrer\"\n            >\n              {__(\"Terms & Privacy\")}\n            </a>\n          </footer>\n        </section>\n      </div>\n    </>\n  );\n}\n\nexport function IDKitModal({\n  open,\n  onOpenChange,\n  children,\n}: IDKitModalProps): ReactElement | null {\n  useEffect(() => {\n    if (!open || typeof document === \"undefined\") {\n      return;\n    }\n\n    const handleEsc = (event: KeyboardEvent) => {\n      if (event.key === \"Escape\") {\n        onOpenChange(false);\n      }\n    };\n\n    window.addEventListener(\"keydown\", handleEsc);\n    return () => window.removeEventListener(\"keydown\", handleEsc);\n  }, [onOpenChange, open]);\n\n  if (!open || typeof document === \"undefined\") {\n    return null;\n  }\n\n  const content = (\n    <ModalContent onOpenChange={onOpenChange}>{children}</ModalContent>\n  );\n\n  return <ShadowHost>{content}</ShadowHost>;\n}\n","import { useEffect, useState } from \"react\";\n\nexport function useMedia(): \"desktop\" | \"mobile\" {\n  const getInitialState = (): \"desktop\" | \"mobile\" => {\n    if (typeof window !== \"undefined\") {\n      return window.matchMedia(\"(max-width: 1024px)\").matches\n        ? \"mobile\"\n        : \"desktop\";\n    }\n    return \"desktop\";\n  };\n\n  const [media, setMedia] = useState<\"desktop\" | \"mobile\">(getInitialState);\n\n  useEffect(() => {\n    const mql = window.matchMedia(\"(max-width: 1024px)\");\n    const handleChange = (e: MediaQueryList | MediaQueryListEvent) =>\n      setMedia(e.matches ? \"mobile\" : \"desktop\");\n\n    handleChange(mql);\n    mql.addEventListener(\"change\", handleChange);\n    return () => {\n      mql.removeEventListener(\"change\", handleChange);\n    };\n  }, []);\n\n  return media;\n}\n","import type { SVGProps } from \"react\";\n\nexport function WorldcoinIcon(props: SVGProps<SVGSVGElement>) {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"32\"\n      height=\"32\"\n      viewBox=\"0 0 32 32\"\n      fill=\"none\"\n      {...props}\n    >\n      <path\n        d=\"M30.7367 9.77239C29.9301 7.86586 28.7772 6.15721 27.3084 4.68831C25.8397 3.21941 24.1275 2.06636 22.225 1.2596C20.2502 0.422405 18.1574 0 15.9962 0C13.8388 0 11.7422 0.422405 9.76742 1.2596C7.86112 2.06636 6.15268 3.21941 4.68395 4.68831C3.21522 6.15721 2.06231 7.86966 1.25565 9.77239C0.422354 11.7436 0 13.8404 0 15.9981C0 18.1558 0.422354 20.2526 1.25945 22.2276C2.06611 24.1341 3.21903 25.8428 4.68775 27.3117C6.15648 28.7806 7.86873 29.9336 9.77122 30.7404C11.746 31.5738 13.8388 32 16 32C18.1574 32 20.254 31.5776 22.2288 30.7404C24.1351 29.9336 25.8435 28.7806 27.3122 27.3117C28.781 25.8428 29.9339 24.1303 30.7405 22.2276C31.5738 20.2526 32 18.1596 32 15.9981C31.9962 13.8404 31.57 11.7436 30.7367 9.77239ZM10.6844 14.4949C11.3503 11.9377 13.679 10.0464 16.4452 10.0464H27.552C28.2673 11.4278 28.7239 12.9309 28.9027 14.4949H10.6844ZM28.9027 17.5012C28.7239 19.0653 28.2635 20.5684 27.552 21.9498H16.4452C13.6828 21.9498 11.3541 20.0585 10.6844 17.5012H28.9027ZM6.81094 6.81175C9.26516 4.35724 12.526 3.0063 15.9962 3.0063C19.4663 3.0063 22.7272 4.35724 25.1815 6.81175C25.2576 6.88786 25.3298 6.96397 25.4021 7.04008H16.4452C14.0518 7.04008 11.8031 7.97241 10.1099 9.66583C8.77812 10.9977 7.91819 12.6759 7.60999 14.4988H3.09346C3.42449 11.5952 4.71439 8.90855 6.81094 6.81175ZM15.9962 28.9937C12.526 28.9937 9.26516 27.6428 6.81094 25.1883C4.71439 23.0915 3.42449 20.4048 3.09346 17.5051H7.60999C7.91439 19.3279 8.77812 21.0061 10.1099 22.338C11.8031 24.0314 14.0518 24.9637 16.4452 24.9637H25.4059C25.3337 25.0398 25.2576 25.1159 25.1853 25.1921C22.731 27.639 19.4663 28.9937 15.9962 28.9937Z\"\n        fill=\"currentColor\"\n      />\n    </svg>\n  );\n}\n","import type { SVGProps } from \"react\";\n\nexport function LoadingIcon(props: SVGProps<SVGSVGElement>) {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      fill=\"none\"\n      viewBox=\"0 0 24 24\"\n      {...props}\n    >\n      <circle\n        cx=\"12\"\n        cy=\"12\"\n        r=\"10.75\"\n        stroke=\"#191C20\"\n        strokeOpacity=\".16\"\n        strokeWidth=\"2.5\"\n      />\n      <path\n        fill=\"#191C20\"\n        d=\"M17.28 2.633c.338-.6.127-1.368-.505-1.642A12 12 0 0 0 7.459.892c-.638.261-.864 1.024-.539 1.632.326.607 1.08.827 1.725.584a9.504 9.504 0 0 1 6.897.073c.64.257 1.399.053 1.737-.548Z\"\n      />\n    </svg>\n  );\n}\n","import { memo, useMemo, type ReactElement } from \"react\";\nimport QRCodeUtil from \"qrcode/lib/core/qrcode.js\";\n\nconst generateMatrix = (data: string): Array<number[]> => {\n  const arr = (\n    QRCodeUtil as {\n      create: (\n        data: string,\n        opts: { errorCorrectionLevel: string },\n      ) => { modules: { data: Uint8Array } };\n    }\n  ).create(data, { errorCorrectionLevel: \"M\" }).modules.data;\n  const sqrt = Math.sqrt(arr.length);\n\n  return arr.reduce(\n    (rows: Array<number[]>, key: number, index: number) => {\n      if (index % sqrt === 0) rows.push([key]);\n      else rows[rows.length - 1].push(key);\n      return rows;\n    },\n    [] as Array<number[]>,\n  );\n};\n\ntype QRCodeProps = {\n  data: string;\n  size?: number;\n};\n\nfunction QRCodeInner({ data, size = 200 }: QRCodeProps): ReactElement {\n  const dots = useMemo(() => {\n    const elements: ReactElement[] = [];\n    const matrix = generateMatrix(data);\n    const cellSize = size / matrix.length;\n    const qrList = [\n      { x: 0, y: 0 },\n      { x: 1, y: 0 },\n      { x: 0, y: 1 },\n    ];\n\n    qrList.forEach(({ x, y }) => {\n      const x1 = (matrix.length - 7) * cellSize * x;\n      const y1 = (matrix.length - 7) * cellSize * y;\n\n      for (let i = 0; i < 3; i++) {\n        elements.push(\n          <rect\n            fill=\"currentColor\"\n            x={x1 + cellSize * i}\n            y={y1 + cellSize * i}\n            key={`${i}-${x}-${y}`}\n            width={cellSize * (7 - i * 2)}\n            height={cellSize * (7 - i * 2)}\n            rx={(i - 2) * -5}\n            ry={(i - 2) * -5}\n            className={\n              i % 3 === 0\n                ? \"qr-finder-dark\"\n                : i % 3 === 1\n                  ? \"qr-finder-light\"\n                  : \"qr-finder-dark\"\n            }\n          />,\n        );\n      }\n    });\n\n    matrix.forEach((row, i) => {\n      row.forEach((_, j) => {\n        if (!matrix[i][j]) return;\n        if (\n          (i < 7 && j < 7) ||\n          (i > matrix.length - 8 && j < 7) ||\n          (i < 7 && j > matrix.length - 8)\n        )\n          return;\n\n        elements.push(\n          <circle\n            fill=\"currentColor\"\n            r={cellSize / 2.2}\n            key={`circle-${i}-${j}`}\n            cx={i * cellSize + cellSize / 2}\n            cy={j * cellSize + cellSize / 2}\n            className=\"qr-dot\"\n          />,\n        );\n      });\n    });\n\n    return elements;\n  }, [size, data]);\n\n  return (\n    <svg height={size} width={size} data-test-id=\"qr-code\">\n      {dots}\n    </svg>\n  );\n}\n\nexport const QRCode = memo(QRCodeInner);\n","import type { SVGProps } from \"react\";\n\nexport function QRPlaceholderIcon(props: SVGProps<SVGSVGElement>) {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      fill=\"none\"\n      viewBox=\"0 0 200 200\"\n      {...props}\n    >\n      <path\n        fill=\"#EBECEF\"\n        fillRule=\"evenodd\"\n        d=\"M12.1 0C5.417 0 0 5.417 0 12.1v18.505c0 6.682 5.417 12.1 12.1 12.1h18.505c6.682 0 12.1-5.418 12.1-12.1V12.1c0-6.683-5.418-12.1-12.1-12.1H12.1Zm18.505 11.388H12.1a.712.712 0 0 0-.712.712v18.505c0 .393.319.712.712.712h18.505a.712.712 0 0 0 .712-.712V12.1a.712.712 0 0 0-.712-.712Z\"\n        clipRule=\"evenodd\"\n      />\n      <path\n        fill=\"#EBECEF\"\n        d=\"M197.026 200c.789 0 1.545-.309 2.103-.86.558-.55.871-1.297.871-2.076v-17.616c0-.778-.313-1.525-.871-2.076a2.996 2.996 0 0 0-2.103-.86h-5.948c-.789 0-1.545.31-2.103.86a2.918 2.918 0 0 0-.871 2.076v8.808h-11.897v-11.744h-11.896v-23.487h11.896v8.808c0 .778.314 1.525.872 2.076.557.55 1.314.86 2.102.86h5.949c.788 0 1.545-.31 2.103-.86a2.922 2.922 0 0 0 .871-2.076v-8.808h8.922c.789 0 1.545-.309 2.103-.86a2.916 2.916 0 0 0 .871-2.076v-5.872c0-.779-.313-1.525-.871-2.076a2.992 2.992 0 0 0-2.103-.86h-29.741c-.789 0-1.545.309-2.103.86a2.916 2.916 0 0 0-.871 2.076v8.808h-23.792v-11.744h8.922c.789 0 1.545-.309 2.103-.86.558-.55.871-1.297.871-2.076v-5.872c0-.778-.313-1.525-.871-2.076a2.996 2.996 0 0 0-2.103-.86h-5.948c-.789 0-1.546.31-2.103.86a2.918 2.918 0 0 0-.871 2.076v8.808H119.7c-.789 0-1.545.309-2.103.86a2.916 2.916 0 0 0-.871 2.076v5.872c0 .779.313 1.525.871 2.076.558.551 1.314.86 2.103.86h20.819v8.808c0 .778.313 1.525.871 2.076.557.55 1.314.86 2.103.86h8.922v8.808c0 .778.313 1.525.871 2.076.558.55 1.314.859 2.103.859h8.922v11.744h-20.818c-.789 0-1.546.31-2.103.86a2.916 2.916 0 0 0-.871 2.076v5.872c0 .779.313 1.526.871 2.076a2.99 2.99 0 0 0 2.103.86h17.844c.789 0 1.545-.309 2.103-.86.558-.55.871-1.297.871-2.076v-8.808h11.896v8.808c0 .779.314 1.526.872 2.076a2.99 2.99 0 0 0 2.102.86h17.845Z\"\n      />\n      <path\n        fill=\"#EBECEF\"\n        fillRule=\"evenodd\"\n        d=\"M157.295 12.1c0-6.683 5.418-12.1 12.1-12.1H187.9c6.683 0 12.1 5.417 12.1 12.1v18.505c0 6.682-5.417 12.1-12.1 12.1h-18.505c-6.682 0-12.1-5.418-12.1-12.1V12.1Zm12.1-.712H187.9c.393 0 .712.319.712.712v18.505a.712.712 0 0 1-.712.712h-18.505a.712.712 0 0 1-.712-.712V12.1c0-.393.319-.712.712-.712ZM12.1 157.295c-6.683 0-12.1 5.418-12.1 12.1V187.9c0 6.683 5.417 12.1 12.1 12.1h18.505c6.682 0 12.1-5.417 12.1-12.1v-18.505c0-6.682-5.418-12.1-12.1-12.1H12.1Zm19.217 12.1a.712.712 0 0 0-.712-.712H12.1a.712.712 0 0 0-.712.712V187.9c0 .393.319.712.712.712h18.505a.712.712 0 0 0 .712-.712v-18.505Z\"\n        clipRule=\"evenodd\"\n      />\n      <path\n        fill=\"#EBECEF\"\n        d=\"M6.05 89.68A6.05 6.05 0 0 0 0 95.73v9.252a6.05 6.05 0 0 0 6.05 6.05h9.253a6.05 6.05 0 0 0 6.05-6.05V95.73c0-.678-.112-1.33-.318-1.94.445.105.908.16 1.385.16h27.758a6.05 6.05 0 0 0 6.05-6.05v-9.252a6.05 6.05 0 0 0-6.05-6.05H22.42a6.05 6.05 0 0 0-6.05 6.05V87.9c0 .678.112 1.33.317 1.939a6.065 6.065 0 0 0-1.385-.16H6.05Zm102.135-40.926a6.05 6.05 0 0 1 6.05-6.05h9.253a6.05 6.05 0 0 1 6.049 6.05v9.253a6.05 6.05 0 0 1-6.049 6.05h-9.253a6.05 6.05 0 0 1-6.05-6.05v-9.253ZM67.616 184.698a6.05 6.05 0 0 1 6.05-6.05h9.252c.678 0 1.33.111 1.939.317a6.064 6.064 0 0 1-.16-1.385v-9.253a6.05 6.05 0 0 1 6.05-6.049H100a6.05 6.05 0 0 1 6.05 6.049v9.253a6.05 6.05 0 0 1-6.05 6.05h-9.253c-.678 0-1.33-.112-1.938-.317.104.444.159.908.159 1.385v9.252a6.05 6.05 0 0 1-6.05 6.05h-9.253a6.05 6.05 0 0 1-6.05-6.05v-9.252Zm78.291-120.285a6.05 6.05 0 0 1 6.05-6.05h41.993a6.05 6.05 0 0 1 6.05 6.05v9.252a6.05 6.05 0 0 1-6.05 6.05h-41.993a6.05 6.05 0 0 1-6.05-6.05v-9.252ZM95.018 0a6.05 6.05 0 0 0-6.05 6.05v17.082a6.05 6.05 0 0 0 6.05 6.05h9.252a6.05 6.05 0 0 0 6.05-6.05V6.05A6.05 6.05 0 0 0 104.27 0h-9.252Z\"\n      />\n      <path\n        fill=\"url(#idkit_qr_placeholder_gradient)\"\n        fillRule=\"evenodd\"\n        d=\"M12.1 0C5.417 0 0 5.417 0 12.1v18.505c0 6.682 5.417 12.1 12.1 12.1h18.505c6.682 0 12.1-5.418 12.1-12.1V12.1c0-6.683-5.418-12.1-12.1-12.1H12.1Zm18.505 11.388H12.1a.712.712 0 0 0-.712.712v18.505c0 .393.319.712.712.712h18.505a.712.712 0 0 0 .712-.712V12.1a.712.712 0 0 0-.712-.712Z\"\n        clipRule=\"evenodd\"\n      />\n      <path\n        fill=\"url(#idkit_qr_placeholder_gradient)\"\n        d=\"M197.026 200c.789 0 1.545-.309 2.103-.86.558-.55.871-1.297.871-2.076v-17.616c0-.778-.313-1.525-.871-2.076a2.996 2.996 0 0 0-2.103-.86h-5.948c-.789 0-1.545.31-2.103.86a2.918 2.918 0 0 0-.871 2.076v8.808h-11.897v-11.744h-11.896v-23.487h11.896v8.808c0 .778.314 1.525.872 2.076.557.55 1.314.86 2.102.86h5.949c.788 0 1.545-.31 2.103-.86a2.922 2.922 0 0 0 .871-2.076v-8.808h8.922c.789 0 1.545-.309 2.103-.86a2.916 2.916 0 0 0 .871-2.076v-5.872c0-.779-.313-1.525-.871-2.076a2.992 2.992 0 0 0-2.103-.86h-29.741c-.789 0-1.545.309-2.103.86a2.916 2.916 0 0 0-.871 2.076v8.808h-23.792v-11.744h8.922c.789 0 1.545-.309 2.103-.86.558-.55.871-1.297.871-2.076v-5.872c0-.778-.313-1.525-.871-2.076a2.996 2.996 0 0 0-2.103-.86h-5.948c-.789 0-1.546.31-2.103.86a2.918 2.918 0 0 0-.871 2.076v8.808H119.7c-.789 0-1.545.309-2.103.86a2.916 2.916 0 0 0-.871 2.076v5.872c0 .779.313 1.525.871 2.076.558.551 1.314.86 2.103.86h20.819v8.808c0 .778.313 1.525.871 2.076.557.55 1.314.86 2.103.86h8.922v8.808c0 .778.313 1.525.871 2.076.558.55 1.314.859 2.103.859h8.922v11.744h-20.818c-.789 0-1.546.31-2.103.86a2.916 2.916 0 0 0-.871 2.076v5.872c0 .779.313 1.526.871 2.076a2.99 2.99 0 0 0 2.103.86h17.844c.789 0 1.545-.309 2.103-.86.558-.55.871-1.297.871-2.076v-8.808h11.896v8.808c0 .779.314 1.526.872 2.076a2.99 2.99 0 0 0 2.102.86h17.845Z\"\n      />\n      <path\n        fill=\"url(#idkit_qr_placeholder_gradient)\"\n        fillRule=\"evenodd\"\n        d=\"M157.295 12.1c0-6.683 5.418-12.1 12.1-12.1H187.9c6.683 0 12.1 5.417 12.1 12.1v18.505c0 6.682-5.417 12.1-12.1 12.1h-18.505c-6.682 0-12.1-5.418-12.1-12.1V12.1Zm12.1-.712H187.9c.393 0 .712.319.712.712v18.505a.712.712 0 0 1-.712.712h-18.505a.712.712 0 0 1-.712-.712V12.1c0-.393.319-.712.712-.712Z\"\n        clipRule=\"evenodd\"\n      />\n      <path\n        fill=\"url(#idkit_qr_placeholder_gradient)\"\n        fillRule=\"evenodd\"\n        d=\"M12.1 157.295c-6.683 0-12.1 5.418-12.1 12.1V187.9c0 6.683 5.417 12.1 12.1 12.1h18.505c6.682 0 12.1-5.417 12.1-12.1v-18.505c0-6.682-5.418-12.1-12.1-12.1H12.1Zm19.217 12.1a.712.712 0 0 0-.712-.712H12.1a.712.712 0 0 0-.712.712V187.9c0 .393.319.712.712.712h18.505a.712.712 0 0 0 .712-.712v-18.505Z\"\n        clipRule=\"evenodd\"\n      />\n      <path\n        fill=\"url(#idkit_qr_placeholder_gradient)\"\n        d=\"M6.05 89.68A6.05 6.05 0 0 0 0 95.73v9.252a6.05 6.05 0 0 0 6.05 6.05h9.253a6.05 6.05 0 0 0 6.05-6.05V95.73c0-.678-.112-1.33-.318-1.94.445.105.908.16 1.385.16h27.758a6.05 6.05 0 0 0 6.05-6.05v-9.252a6.05 6.05 0 0 0-6.05-6.05H22.42a6.05 6.05 0 0 0-6.05 6.05V87.9c0 .678.112 1.33.317 1.939a6.065 6.065 0 0 0-1.385-.16H6.05Z\"\n      />\n      <path\n        fill=\"url(#idkit_qr_placeholder_gradient)\"\n        d=\"M108.185 48.754a6.05 6.05 0 0 1 6.05-6.05h9.253a6.05 6.05 0 0 1 6.049 6.05v9.253a6.05 6.05 0 0 1-6.049 6.05h-9.253a6.05 6.05 0 0 1-6.05-6.05v-9.253Z\"\n      />\n      <path\n        fill=\"url(#idkit_qr_placeholder_gradient)\"\n        d=\"M67.616 184.698a6.05 6.05 0 0 1 6.05-6.05h9.252c.678 0 1.33.111 1.939.317a6.064 6.064 0 0 1-.16-1.385v-9.253a6.05 6.05 0 0 1 6.05-6.049H100a6.05 6.05 0 0 1 6.05 6.049v9.253a6.05 6.05 0 0 1-6.05 6.05h-9.253c-.678 0-1.33-.112-1.938-.317.104.444.159.908.159 1.385v9.252a6.05 6.05 0 0 1-6.05 6.05h-9.253a6.05 6.05 0 0 1-6.05-6.05v-9.252Z\"\n      />\n      <path\n        fill=\"url(#idkit_qr_placeholder_gradient)\"\n        d=\"M145.907 64.413a6.05 6.05 0 0 1 6.05-6.05h41.993a6.05 6.05 0 0 1 6.05 6.05v9.252a6.05 6.05 0 0 1-6.05 6.05h-41.993a6.05 6.05 0 0 1-6.05-6.05v-9.252Z\"\n      />\n      <path\n        fill=\"url(#idkit_qr_placeholder_gradient)\"\n        d=\"M95.018 0a6.05 6.05 0 0 0-6.05 6.05v17.082a6.05 6.05 0 0 0 6.05 6.05h9.252a6.05 6.05 0 0 0 6.05-6.05V6.05A6.05 6.05 0 0 0 104.27 0h-9.252Z\"\n      />\n      <defs>\n        <linearGradient\n          id=\"idkit_qr_placeholder_gradient\"\n          x1=\"0\"\n          x2=\"200\"\n          y1=\"0\"\n          y2=\"200\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop offset=\".37\" stopColor=\"#fff\" stopOpacity=\"0\" />\n          <stop offset=\".5\" stopColor=\"#fff\" stopOpacity=\".85\" />\n          <stop offset=\".63\" stopColor=\"#fff\" stopOpacity=\"0\" />\n        </linearGradient>\n      </defs>\n    </svg>\n  );\n}\n","import { useCallback, useState, type ReactElement } from \"react\";\nimport { __ } from \"../../lang\";\nimport { useMedia } from \"../../hooks/useMedia\";\nimport { QRCode } from \"../../widget/QRCode\";\nimport { QRPlaceholderIcon } from \"../Icons/QRPlaceholderIcon\";\nimport { WorldcoinIcon } from \"../Icons/WorldIcon\";\n\ntype QRStateProps = {\n  qrData: string | null;\n  showSimulatorCallout?: boolean;\n};\n\nexport function QRState({\n  qrData,\n  showSimulatorCallout,\n}: QRStateProps): ReactElement {\n  const media = useMedia();\n  const [copiedLink, setCopiedLink] = useState(false);\n\n  const copyLink = useCallback(() => {\n    if (!qrData) return;\n    void navigator.clipboard.writeText(qrData);\n    setCopiedLink(true);\n    setTimeout(() => setCopiedLink(false), 2000);\n  }, [qrData]);\n\n  return (\n    <>\n      {/* Mobile: deep-link button */}\n      <div className=\"idkit-mobile-only\">\n        <a href={qrData ?? undefined} className=\"idkit-deeplink-btn\">\n          <WorldcoinIcon />\n          <span>{__(\"Open World App\")}</span>\n        </a>\n      </div>\n\n      {/* Desktop: QR code */}\n      <div className=\"idkit-desktop-only\">\n        <div\n          className={`idkit-copy-toast ${copiedLink ? \"visible\" : \"hidden\"}`}\n          style={{\n            textAlign: \"center\",\n            fontSize: \"14px\",\n            color: \"var(--idkit-text-secondary)\",\n          }}\n        >\n          <span>{__(\"QR Code copied\")}</span>\n        </div>\n        <div className=\"idkit-qr-wrapper\">\n          <div className=\"idkit-qr-inner\">\n            {qrData ? (\n              <div\n                onClick={copyLink}\n                onKeyDown={(e) => {\n                  if (e.key === \"Enter\") copyLink();\n                }}\n                role=\"button\"\n                tabIndex={0}\n                style={{ cursor: \"pointer\" }}\n              >\n                <QRCode data={qrData} size={media === \"mobile\" ? 160 : 200} />\n              </div>\n            ) : (\n              <div className=\"idkit-qr-placeholder\">\n                <QRPlaceholderIcon />\n              </div>\n            )}\n          </div>\n        </div>\n        {showSimulatorCallout && qrData && (\n          <p className=\"idkit-simulator-callout\">\n            Testing in staging?{\" \"}\n            <a\n              href={`https://simulator.worldcoin.org?connect_url=${encodeURIComponent(qrData)}`}\n              target=\"_blank\"\n              rel=\"noopener noreferrer\"\n            >\n              Use the simulator\n            </a>\n          </p>\n        )}\n      </div>\n    </>\n  );\n}\n","import type { ReactElement } from \"react\";\nimport { __ } from \"../../lang\";\nimport { useMedia } from \"../../hooks/useMedia\";\nimport { WorldcoinIcon } from \"../Icons/WorldIcon\";\nimport { LoadingIcon } from \"../Icons/LoadingIcon\";\nimport { QRState } from \"./QRState\";\n\ntype WorldIDStateProps = {\n  connectorURI: string | null;\n  isAwaitingUserConfirmation: boolean;\n  showSimulatorCallout?: boolean;\n};\n\nexport function WorldIDState({\n  connectorURI,\n  isAwaitingUserConfirmation,\n  showSimulatorCallout,\n}: WorldIDStateProps): ReactElement {\n  const media = useMedia();\n\n  return (\n    <div\n      style={{\n        display: \"flex\",\n        flexDirection: \"column\",\n        alignItems: \"center\",\n        textAlign: \"center\",\n      }}\n    >\n      {/* World logo */}\n      <div className=\"idkit-worldid-icon\">\n        <WorldcoinIcon />\n      </div>\n\n      {/* Heading */}\n      <h2 className=\"idkit-heading\">{__(\"Connect your World ID\")}</h2>\n\n      {/* Subtext: different for mobile vs desktop */}\n      <p className=\"idkit-subtext\">\n        {media === \"mobile\"\n          ? __(\n              \"You will be redirected to the app, please return to this page once you're done\",\n            )\n          : __(\"Use phone camera to scan the QR code\")}\n      </p>\n\n      {/* QR Container */}\n      <div className=\"idkit-qr-container\">\n        {isAwaitingUserConfirmation && (\n          <div className=\"idkit-qr-overlay\">\n            <div className=\"idkit-spinner\">\n              <LoadingIcon />\n            </div>\n            <div className=\"idkit-connecting-text\">\n              <p>{__(\"Connecting...\")}</p>\n              <p>{__(\"Please continue in app\")}</p>\n            </div>\n          </div>\n        )}\n\n        <div\n          className={`idkit-qr-blur ${isAwaitingUserConfirmation ? \"blurred\" : \"\"}`}\n        >\n          <div style={{ display: \"flex\", justifyContent: \"center\" }}>\n            <QRState\n              qrData={connectorURI}\n              showSimulatorCallout={showSimulatorCallout}\n            />\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n}\n","import type { SVGProps } from \"react\";\n\nexport function CheckIcon(props: SVGProps<SVGSVGElement>) {\n  return (\n    <svg\n      width=\"88\"\n      height=\"88\"\n      viewBox=\"0 0 88 88\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      {...props}\n    >\n      <rect width=\"88\" height=\"88\" rx=\"44\" fill=\"#00C230\" />\n      <rect\n        opacity=\"0.2\"\n        width=\"88\"\n        height=\"88\"\n        rx=\"44\"\n        fill=\"url(#idkit_check_radial)\"\n      />\n      <rect\n        x=\"0.5\"\n        y=\"0.5\"\n        width=\"87\"\n        height=\"87\"\n        rx=\"43.5\"\n        stroke=\"url(#idkit_check_linear)\"\n      />\n      <path d=\"M29.5 45.5L37.5 53.5L57.5 33.5\" stroke=\"white\" strokeWidth=\"3\" />\n      <defs>\n        <radialGradient\n          id=\"idkit_check_radial\"\n          cx=\"0\"\n          cy=\"0\"\n          r=\"1\"\n          gradientUnits=\"userSpaceOnUse\"\n          gradientTransform=\"translate(20 -1.6729e-06) rotate(63.4349) scale(98.387 97.9627)\"\n        >\n          <stop stopColor=\"white\" />\n          <stop offset=\"1\" stopColor=\"white\" stopOpacity=\"0\" />\n        </radialGradient>\n        <linearGradient\n          id=\"idkit_check_linear\"\n          x1=\"44\"\n          y1=\"0\"\n          x2=\"44\"\n          y2=\"88\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop stopColor=\"white\" stopOpacity=\"0.3\" />\n          <stop offset=\"1\" stopColor=\"white\" stopOpacity=\"0\" />\n        </linearGradient>\n      </defs>\n    </svg>\n  );\n}\n","import type { ReactElement } from \"react\";\nimport { __ } from \"../../lang\";\nimport { CheckIcon } from \"../Icons/CheckIcon\";\n\nexport function SuccessState(): ReactElement {\n  return (\n    <div\n      style={{\n        display: \"flex\",\n        flexDirection: \"column\",\n        alignItems: \"center\",\n        textAlign: \"center\",\n      }}\n    >\n      <div className=\"idkit-success-icon\">\n        <CheckIcon />\n      </div>\n      <h2 className=\"idkit-heading\">{__(\"All set!\")}</h2>\n      <p className=\"idkit-subtext\" style={{ maxWidth: 260 }}>\n        {__(\"Your World ID is now connected\")}\n      </p>\n    </div>\n  );\n}\n","import type { SVGProps } from \"react\";\n\nexport function ErrorIcon(props: SVGProps<SVGSVGElement>) {\n  return (\n    <svg\n      width=\"88\"\n      height=\"88\"\n      viewBox=\"0 0 88 88\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      {...props}\n    >\n      <rect width=\"88\" height=\"88\" rx=\"44\" fill=\"#9BA3AE\" />\n      <rect\n        opacity=\"0.2\"\n        width=\"88\"\n        height=\"88\"\n        rx=\"44\"\n        fill=\"url(#idkit_error_radial)\"\n      />\n      <rect\n        x=\"0.5\"\n        y=\"0.5\"\n        width=\"87\"\n        height=\"87\"\n        rx=\"43.5\"\n        stroke=\"url(#idkit_error_linear)\"\n      />\n      <path\n        d=\"M33.0146 53.9853L43.4999 43.5M53.9851 33.0147L43.4999 43.5M43.4999 43.5L33.0146 33.0147M43.4999 43.5L53.9851 53.9853\"\n        stroke=\"white\"\n        strokeWidth=\"3\"\n      />\n      <defs>\n        <radialGradient\n          id=\"idkit_error_radial\"\n          cx=\"0\"\n          cy=\"0\"\n          r=\"1\"\n          gradientUnits=\"userSpaceOnUse\"\n          gradientTransform=\"translate(20 -1.6729e-06) rotate(63.4349) scale(98.387 97.9627)\"\n        >\n          <stop stopColor=\"white\" />\n          <stop offset=\"1\" stopColor=\"white\" stopOpacity=\"0\" />\n        </radialGradient>\n        <linearGradient\n          id=\"idkit_error_linear\"\n          x1=\"44\"\n          y1=\"0\"\n          x2=\"44\"\n          y2=\"88\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop stopColor=\"white\" stopOpacity=\"0.3\" />\n          <stop offset=\"1\" stopColor=\"white\" stopOpacity=\"0\" />\n        </linearGradient>\n      </defs>\n    </svg>\n  );\n}\n","import type { SVGProps } from \"react\";\n\nexport function WarningIcon(props: SVGProps<SVGSVGElement>) {\n  return (\n    <svg\n      width=\"88\"\n      height=\"88\"\n      viewBox=\"0 0 88 88\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      {...props}\n    >\n      <rect width=\"88\" height=\"88\" rx=\"44\" fill=\"#FFAE00\" />\n      <rect\n        opacity=\"0.2\"\n        width=\"88\"\n        height=\"88\"\n        rx=\"44\"\n        fill=\"url(#idkit_warning_radial)\"\n      />\n      <rect\n        x=\"0.5\"\n        y=\"0.5\"\n        width=\"87\"\n        height=\"87\"\n        rx=\"43.5\"\n        stroke=\"url(#idkit_warning_linear)\"\n      />\n      <path\n        d=\"M64.1707 59.5415H22.8298L43.4998 22.3354L64.1707 59.5415ZM42.1208 51.3003L42.1218 54.0503H44.8992L44.8982 51.3003H42.1208ZM42.1248 46.7085H44.8748V36.6255H42.1248V46.7085Z\"\n        fill=\"white\"\n      />\n      <defs>\n        <radialGradient\n          id=\"idkit_warning_radial\"\n          cx=\"0\"\n          cy=\"0\"\n          r=\"1\"\n          gradientUnits=\"userSpaceOnUse\"\n          gradientTransform=\"translate(20 -1.6729e-06) rotate(63.4349) scale(98.387 97.9627)\"\n        >\n          <stop stopColor=\"white\" />\n          <stop offset=\"1\" stopColor=\"white\" stopOpacity=\"0\" />\n        </radialGradient>\n        <linearGradient\n          id=\"idkit_warning_linear\"\n          x1=\"44\"\n          y1=\"0\"\n          x2=\"44\"\n          y2=\"88\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop stopColor=\"white\" stopOpacity=\"0.3\" />\n          <stop offset=\"1\" stopColor=\"white\" stopOpacity=\"0\" />\n        </linearGradient>\n      </defs>\n    </svg>\n  );\n}\n","import type { ReactElement } from \"react\";\nimport { __ } from \"../../lang\";\nimport { IDKitErrorCodes } from \"@worldcoin/idkit-core\";\nimport { ErrorIcon } from \"../Icons/ErrorIcon\";\nimport { WarningIcon } from \"../Icons/WarningIcon\";\n\ntype ErrorStateProps = {\n  errorCode: IDKitErrorCodes | null;\n  onRetry: () => void;\n};\n\ntype ErrorVariant = \"cancelled\" | \"connection\" | \"generic\";\n\nconst errorCodeVariants: Partial<Record<IDKitErrorCodes, ErrorVariant>> = {\n  [IDKitErrorCodes.UserRejected]: \"cancelled\",\n  [IDKitErrorCodes.VerificationRejected]: \"cancelled\",\n  [IDKitErrorCodes.FailedByHostApp]: \"cancelled\",\n  [IDKitErrorCodes.Cancelled]: \"cancelled\",\n  [IDKitErrorCodes.ConnectionFailed]: \"connection\",\n};\n\nconst variantConfig = {\n  cancelled: {\n    title: \"Request cancelled\" as const,\n    message: \"You've cancelled the request in World App.\" as const,\n    Icon: WarningIcon,\n  },\n  connection: {\n    title: \"Connection lost\" as const,\n    message: \"Please check your connection and try again.\" as const,\n    Icon: ErrorIcon, // placeholder — swap for WifiOffIcon later\n  },\n  generic: {\n    title: \"Something went wrong\" as const,\n    message: \"We couldn't complete your request. Please try again.\" as const,\n    Icon: ErrorIcon,\n  },\n};\n\nfunction getVariant(errorCode: IDKitErrorCodes | null): ErrorVariant {\n  if (!errorCode) {\n    return \"generic\";\n  }\n\n  return errorCodeVariants[errorCode] ?? \"generic\";\n}\n\nexport function ErrorState({\n  errorCode,\n  onRetry,\n}: ErrorStateProps): ReactElement {\n  const variant = getVariant(errorCode);\n  const { title, message, Icon } = variantConfig[variant];\n\n  return (\n    <div\n      style={{\n        display: \"flex\",\n        flexDirection: \"column\",\n        alignItems: \"center\",\n        textAlign: \"center\",\n      }}\n    >\n      <div className=\"idkit-error-icon\">\n        <Icon />\n      </div>\n      <p className=\"idkit-error-title\">{__(title)}</p>\n      <p className=\"idkit-error-message\">{__(message)}</p>\n      <button type=\"button\" className=\"idkit-retry-btn\" onClick={onRetry}>\n        {__(\"Try Again\")}\n      </button>\n    </div>\n  );\n}\n","import { useEffect, useRef, type ReactElement } from \"react\";\nimport type { IDKitErrorCodes } from \"@worldcoin/idkit-core\";\nimport type { IDKitRequestWidgetProps } from \"../types\";\nimport { useIDKitRequest } from \"../hooks/useIDKitRequest\";\nimport { IDKitModal } from \"./IDKitModal\";\nimport { WorldIDState } from \"../components/States/WorldIDState\";\nimport { SuccessState } from \"../components/States/SuccessState\";\nimport { ErrorState } from \"../components/States/ErrorState\";\nimport { setLocalizationConfig } from \"../lang\";\n\ntype VisualStage = \"worldid\" | \"success\" | \"error\";\n\nfunction getVisualStage(isSuccess: boolean, isError: boolean): VisualStage {\n  if (isSuccess) {\n    return \"success\";\n  }\n\n  if (isError) {\n    return \"error\";\n  }\n\n  return \"worldid\";\n}\n\nexport function IDKitRequestWidget({\n  open,\n  onOpenChange,\n  onSuccess,\n  onError,\n  autoClose = true,\n  language,\n  ...config\n}: IDKitRequestWidgetProps): ReactElement | null {\n  const flow = useIDKitRequest(config);\n  const { open: openFlow, reset: resetFlow } = flow;\n\n  const lastResultRef = useRef<unknown>(null);\n  const lastErrorCodeRef = useRef<IDKitErrorCodes | null>(null);\n\n  // Set language config\n  useEffect(() => {\n    if (language) {\n      setLocalizationConfig({ language });\n    }\n  }, [language]);\n\n  useEffect(() => {\n    if (open) {\n      openFlow();\n      return;\n    }\n\n    resetFlow();\n  }, [open, openFlow, resetFlow]);\n\n  useEffect(() => {\n    if (!flow.result || flow.result === lastResultRef.current) {\n      return;\n    }\n\n    lastResultRef.current = flow.result;\n    void Promise.resolve(onSuccess?.(flow.result)).catch(() => {\n      // Swallow host callback errors to keep widget flow stable.\n    });\n  }, [onSuccess, flow.result]);\n\n  useEffect(() => {\n    if (!flow.errorCode || flow.errorCode === lastErrorCodeRef.current) {\n      return;\n    }\n\n    lastErrorCodeRef.current = flow.errorCode;\n    void Promise.resolve(onError?.(flow.errorCode)).catch(() => {\n      // Swallow host callback errors to keep widget flow stable.\n    });\n  }, [flow.errorCode, onError]);\n\n  // Auto-close on success\n  useEffect(() => {\n    if (flow.isSuccess && autoClose) {\n      const timer = setTimeout(() => onOpenChange(false), 2500);\n      return () => clearTimeout(timer);\n    }\n  }, [flow.isSuccess, autoClose, onOpenChange]);\n\n  const stage = getVisualStage(flow.isSuccess, flow.isError);\n  const showSimulatorCallout = config.environment === \"staging\";\n\n  return (\n    <IDKitModal open={open} onOpenChange={onOpenChange}>\n      {stage === \"worldid\" && (\n        <WorldIDState\n          connectorURI={flow.connectorURI}\n          isAwaitingUserConfirmation={flow.isAwaitingUserConfirmation}\n          showSimulatorCallout={showSimulatorCallout}\n        />\n      )}\n      {stage === \"success\" && <SuccessState />}\n      {stage === \"error\" && (\n        <ErrorState\n          errorCode={flow.errorCode}\n          onRetry={() => {\n            resetFlow();\n            openFlow();\n          }}\n        />\n      )}\n    </IDKitModal>\n  );\n}\n"]}