+ {/* Row header: time + edit/delete indicators + AI badges */}
+
+
+ {formatTime(message.created_at)}
+
+ {message.edited_at && (
+
+ edited
+
+ )}
+ {message.deleted_at && (
+
+ deleted
+
+ )}
+
+
+ {aiStatus === "clean" && }
+ {aiStatus === "flagged" && }
+ {aiStatus === "error" && }
+ {aiStatus}
+
+ {message.ai_severity && message.ai_severity !== "none" && (
+
+ {message.ai_severity}
+
+ )}
+ {confidence != null && (
+
+ {Math.round(confidence * 100)}%
+
+ )}
+
+
+
+ {/* Content */}
+ {displayContent ? (
+
+ {renderContentWithCustomEmojis(displayContent)}
+
+ ) : null}
+
+ {/* Stickers */}
+ {stickers.length > 0 && (
+
+ {stickers.map((sticker) => (
+
+ {sticker.url ? (
+

+ ) : (
+
+
+
+ )}
+
+ ))}
+
+ )}
+
+ {/* Attached images */}
+ {hasImages && (
+
+ {imageAttachments.slice(0, 4).map((img) => (
+
+
+
+ ))}
+ {imageAttachments.length > 4 && (
+
+ +{imageAttachments.length - 4}
+
+
+ )}
+
+ )}
+
+ {/* Categories */}
+ {categories.length > 0 && (
+
+ {categories.map((category) => (
+
+ {category}
+
+ ))}
+
+ )}
+
+ {/* AI Analysis */}
+ {message.ai_analysis ? (
+
+
+ {showAnalysis && (
+
+ {message.ai_analysis}
+
+ )}
+
+ ) : null}
+
+ {/* AI Error */}
+ {message.ai_error ? (
+
+ AI error: {message.ai_error}
+
+ ) : null}
+
+ {/* Re-analyze button */}
+
+
+ {aiStatus === "error" && (
+
+ Click to retry analysis
+
+ )}
+
+
+ );
+}
+
+// ─── Group card: one card per user group ─────────────────────────────────────
+
+export function MessageCard({ messages, onReanalyze }: MessageCardProps) {
+ const firstMsg = messages[0];
+ const hasMultiple = messages.length > 1;
+
return (