/* * SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ 'use client'; import { CheckIcon, DocumentTextIcon, ExclamationCircleIcon, StopIcon, TrashIcon } from '@heroicons/react/24/outline'; import styles from './ResearchProgressHeader.module.css'; import { ApplicationState } from '@/types/ApplicationState'; interface ResearchProgressHeaderProps { state: ApplicationState; onStop?: () => void; onClear?: () => void; onFinalize?: () => void; onViewError?: () => void; } export default function ResearchProgressHeader({ state, onStop, onClear, onFinalize, onViewError }: ResearchProgressHeaderProps) { const isActive = state.type === 'researching' || state.type === 'finalizing'; const getStatusText = (state: ApplicationState): string => { switch (state.type) { case 'researching': return 'Researching...'; case 'finalizing': return 'Compiling the final report...'; case 'error': return 'Error encountered.'; case 'stopped': return 'Stopped.'; case 'done': return 'Done.'; default: return ''; } }; const renderStatusControls = () => { if (isActive) { return ( ); } if (state.type === 'done') { return (
); } if (state.type === 'error') { return (
); } if (state.type === 'stopped') { return (
); } return null; }; return (
{getStatusText(state)}
{renderStatusControls()}
); }