'use client' import { forwardRef } from 'react' import type { WordEntry, ColumnMeta } from '@/app/(admin)/ai/ocr-kombi/types' import type { LlmChange, RowStatus } from './llm-review-types' import { COL_TYPE_TO_FIELD, COL_TYPE_COLOR, FIELD_LABELS } from './llm-review-types' import { CellContent, StatusIcon } from './LlmReviewStatusScreens' interface LlmReviewVocabTableProps { vocabEntries: WordEntry[] columnsUsed: ColumnMeta[] getRowStatus: (rowIndex: number) => RowStatus correctedMap: Map activeRowRef: React.RefObject } export const LlmReviewVocabTable = forwardRef( function LlmReviewVocabTable({ vocabEntries, columnsUsed, getRowStatus, correctedMap, activeRowRef }, ref) { return (
{columnsUsed.length === 1 && columnsUsed[0]?.type === 'column_text' ? 'Tabelle' : 'Vokabeltabelle'} ({vocabEntries.length} Eintraege)
{columnsUsed.length > 0 ? ( columnsUsed.map((col, i) => { const field = COL_TYPE_TO_FIELD[col.type] if (!field) return null return ( ) }) ) : ( <> )} {vocabEntries.map((entry, idx) => { const rowStatus = getRowStatus(idx) const rowChanges = correctedMap.get(idx) const rowBg = { pending: '', active: 'bg-yellow-50 dark:bg-yellow-900/20', reviewed: '', corrected: 'bg-teal-50/50 dark:bg-teal-900/10', skipped: 'bg-gray-50 dark:bg-gray-800/50', }[rowStatus] return ( {columnsUsed.length > 0 ? ( columnsUsed.map((col, i) => { const field = COL_TYPE_TO_FIELD[col.type] if (!field) return null const text = (entry as Record)[field] as string || '' return ( ) }) ) : ( <> )} ) })}
# {FIELD_LABELS[field] || field} EN DE BeispielStatus
{idx}
) } )