'use client' import { useState } from 'react' import { cn } from '@/lib/utils' import type { TranscriptWord } from '@/hooks/use-deepgram-streaming' // ───────────────────────────────────────────────────────────────────────────── // Types // ───────────────────────────────────────────────────────────────────────────── export interface ConfidenceTextProps { /** Array van woorden met confidence scores */ words: TranscriptWord[] /** Extra CSS classes voor de container */ className?: string /** Drempel voor medium confidence (default: 0.9) */ mediumThreshold?: number /** Drempel voor low confidence (default: 0.7) */ lowThreshold?: number } type ConfidenceLevel = 'high' | 'medium' | 'low' // ───────────────────────────────────────────────────────────────────────────── // Confidence Word Component // ───────────────────────────────────────────────────────────────────────────── function ConfidenceWord({ word, confidence, level, }: { word: string confidence: number level: ConfidenceLevel }) { const [showTooltip, setShowTooltip] = useState(false) const confidencePercent = Math.round(confidence * 100) // High confidence - geen markering if (level === 'high') { return {word} } return ( setShowTooltip(true)} onMouseLeave={() => setShowTooltip(false)} > {word} {/* Tooltip */} {showTooltip && ( Zekerheid: {confidencePercent}% {level === 'low' && ( Mogelijk onjuist herkend )} )} {' '} ) } // ───────────────────────────────────────────────────────────────────────────── // Main Component // ───────────────────────────────────────────────────────────────────────────── export function ConfidenceText({ words, className, mediumThreshold = 0.9, lowThreshold = 0.7, }: ConfidenceTextProps) { if (!words || words.length === 0) { return null } const getConfidenceLevel = (confidence: number): ConfidenceLevel => { if (confidence >= mediumThreshold) return 'high' if (confidence >= lowThreshold) return 'medium' return 'low' } // Statistieken voor samenvatting const lowConfidenceCount = words.filter( (w) => w.confidence < lowThreshold ).length const mediumConfidenceCount = words.filter( (w) => w.confidence >= lowThreshold && w.confidence < mediumThreshold ).length const hasIssues = lowConfidenceCount > 0 || mediumConfidenceCount > 0 return (