import { useStreamStore } from '../store/useStreamStore'; import { useLocaleStore } from '../store/useLocaleStore'; import type { TranslationKey } from '../i18n/translations'; export function StreamProgressBar() { const status = useStreamStore((s) => s.status); const currentToken = useStreamStore((s) => s.currentToken); const totalTokens = useStreamStore((s) => s.totalTokens); const tokens = useStreamStore((s) => s.tokens); const t = useLocaleStore((s) => s.t); if (status !== 'streaming' && status !== 'connecting') return null; const progress = totalTokens > 0 ? currentToken / totalTokens : 0; const currentTokenText = tokens[currentToken - 1] ? tokens[currentToken - 1].replace(/^▁/, ' ').replace(/^Ġ/, ' ') : ''; const label = status === 'connecting' ? t('stream.connecting' as TranslationKey) : `${t('stream.streaming' as TranslationKey).replace('...', '')} ${currentToken}/${totalTokens}`; return (
{/* Left: label */} {label} {/* Center: progress bar */}
{/* Right: current token */} {currentTokenText && ( {currentTokenText} )}
); }