import React from 'react'; import { useAppTranslation } from '@features/localization/renderer'; import { Clock3, FileDiff, LoaderCircle, Sparkles } from 'lucide-react'; interface FullDiffLoadingBannerProps { totalFilesCount: number; readyFilesCount: number; loadingFilesCount: number; snippetCount: number; activeFileName?: string; } export const FullDiffLoadingBanner = ({ totalFilesCount, readyFilesCount, loadingFilesCount, snippetCount, activeFileName, }: FullDiffLoadingBannerProps): React.ReactElement => { const { t } = useAppTranslation('team'); const title = loadingFilesCount === 1 ? t('review.fullDiffLoading.titleOne') : t('review.fullDiffLoading.titleMany', { count: loadingFilesCount }); const subtitle = loadingFilesCount === 1 ? activeFileName ? t('review.fullDiffLoading.subtitleForFile', { file: activeFileName }) : t('review.fullDiffLoading.subtitleCurrentFile') : t('review.fullDiffLoading.subtitleMany'); const showFileProgress = totalFilesCount > 1; const progressPercent = totalFilesCount > 0 ? Math.max(0, Math.min(100, (readyFilesCount / totalFilesCount) * 100)) : 0; return (
{title} {activeFileName ? ( {activeFileName} ) : null}

{subtitle}

{t('review.fullDiffLoading.previewsReady', { count: snippetCount })} {t('review.fullDiffLoading.editorViewLoading')} {t('review.fullDiffLoading.filesInProgress', { count: loadingFilesCount })} {showFileProgress ? ( {t('review.fullDiffLoading.filesReady', { ready: readyFilesCount, total: totalFilesCount, })} ) : null}

{showFileProgress ? t('review.fullDiffLoading.progressDescription', { ready: readyFilesCount, loading: loadingFilesCount, }) : t('review.fullDiffLoading.singleDescription')}

); };