+
{t('interactionMapSubtitle')}
+
+ {t('interactionMapSessionNotes', { count: sessionEventCount })}
+ {t('interactionMapArchiveNotes', { count: archiveAuthorEvents })}
+
+
+ {loading && partners.length === 0 ? (
+
+ {Array.from({ length: 15 }).map((_, i) => (
+
+ ))}
+
+ ) : partners.length === 0 ? (
+
{t('interactionMapEmpty')}
+ ) : (
+
+ {partners.slice(0, 72).map((p) => {
+ const countNorm = Math.min(1, p.mentionCount / maxCount)
+ const age = Math.max(0, nowSec - p.lastReferencedAt)
+ const recencyNorm = 1 - Math.min(1, age / maxAgeSec)
+ const heat = 0.55 * countNorm + 0.45 * recencyNorm
+ const bgAlpha = 0.12 + heat * 0.55
+ const borderAlpha = 0.25 + heat * 0.65
+ return (
+
+ )
+ })}
+
+ )}
+
+
+
+
+
+