/** * @license * Copyright 2025 Google LLC * SPDX-License-Identifier: Apache-2.0 */ import React from 'react'; import { Box, Text } from 'ink'; import Spinner from 'ink-spinner'; import { Colors } from '../colors.js'; interface LoadingIndicatorProps { isLoading: boolean; showSpinner: boolean; currentLoadingPhrase: string; elapsedTime: number; rightContent?: React.ReactNode; } export const LoadingIndicator: React.FC = ({ isLoading, showSpinner, currentLoadingPhrase, elapsedTime, rightContent, }) => { if (!isLoading) { return null; } return ( {showSpinner && ( )} {currentLoadingPhrase} {isLoading && ` (esc to cancel, ${elapsedTime}s)`} {/* Spacer */} {rightContent && {rightContent}} ); };