/** * @license * Copyright 2025 Google LLC * SPDX-License-Identifier: Apache-2.0 */ import React, { useState, useEffect } from 'react'; import { Box, Text, useInput } from 'ink'; import Spinner from 'ink-spinner'; import { Colors } from '../colors.js'; interface AuthInProgressProps { onTimeout: () => void; } export function AuthInProgress({ onTimeout, }: AuthInProgressProps): React.JSX.Element { const [timedOut, setTimedOut] = useState(false); useInput((_, key) => { if (key.escape) { onTimeout(); } }); useEffect(() => { const timer = setTimeout(() => { setTimedOut(true); onTimeout(); }, 180000); return () => clearTimeout(timer); }, [onTimeout]); return ( {timedOut ? ( Authentication timed out. Please try again. ) : ( Waiting for auth... (Press ESC to cancel) )} ); }