import React from 'react'; import { Paper, Stack, Group, ThemeIcon, Text, SimpleGrid, ScrollArea } from '@mantine/core'; import { Info, CircleCheck, XCircle } from 'lucide-react'; export interface AggregatedResult { totalItems: number; totalSuccess: number; totalFailed: number; messages: string[]; } const SummaryPanel = React.memo(function SummaryPanel({ result, t, }: { result: AggregatedResult; t: (key: string) => string; }) { const messages = result.messages ?? []; return ( {/* Stats row - Grid for compact and even distribution */} {/* Total Items Card */} {t('common:bulkAction.totalData')} {result.totalItems} {/* Total Success Card */} {t('common:bulkAction.totalSuccess')} {result.totalSuccess} {/* Total Failed Card */} {t('common:bulkAction.totalFailed')} {result.totalFailed} {/* Messages list area (Log style) */} {messages.length > 0 && ( {t('common:bulkAction.messages')} {/* Locks the maximum height and adds scroll if there are many messages */} 3 ? 120 : undefined} type="auto" offsetScrollbars> {messages.map((msg, idx) => ( {msg} ))} )} ); }); export default SummaryPanel;