import { useCompareStore } from '../../store/useCompareStore'; import { useCrossModelStore } from '../../store/useCrossModelStore'; import { useLocaleStore } from '../../store/useLocaleStore'; import type { TranslationKey } from '../../i18n/translations'; export function DiffPanel() { const compareDiff = useCompareStore((s) => s.diffData); const crossModelDiff = useCrossModelStore((s) => s.diffData); const isCrossModel = useCrossModelStore((s) => s.isCrossModelMode); const t = useLocaleStore((s) => s.t); const diffData = isCrossModel ? crossModelDiff : compareDiff; if (!diffData) return null; const { layerDiffs, maxAbsDelta } = diffData; return (
{t('compare.diff' as TranslationKey)}
{layerDiffs.map((d) => { const pct = maxAbsDelta > 0 ? d.delta / maxAbsDelta : 0; const isPositive = d.delta >= 0; const barWidth = Math.abs(pct) * 50; const label = d.layer_id.length > 12 ? d.layer_id.replace('blocks.', 'B') : d.layer_id; return (
{label}
{isPositive ? '+' : ''}{d.delta.toFixed(3)}
); })}
A {t('compare.stronger' as TranslationKey)} B {t('compare.stronger' as TranslationKey)}
); }