import React from 'react'; import { Box, Typography, Chip, Alert, Accordion, AccordionSummary, AccordionDetails, List, ListItem, ListItemText, } from '@mui/material'; import { ExpandMore as ExpandMoreIcon, Psychology as PsychologyIcon, } from '@mui/icons-material'; import type { AnalysisDetail } from '../types'; import { GridRow, GridCell, formatDuration } from '../helpers'; export const TechniquesSection: React.FC<{ data: AnalysisDetail }> = ({ data }) => { if (!data.techniques) return null; return ( }> Manipulation Techniques ({data.techniques.techniques_count} detected) Manipulation Score {Math.round(Number(data.techniques.manipulation_score))}% Total Severity {data.techniques.total_severity} Duration {formatDuration(data.techniques.total_duration_ms || data.techniques.duration_ms?.total)} {(data.techniques.llm_screening || data.techniques.llm_deep) && ( {data.techniques.llm_screening && } {data.techniques.llm_deep && } )} {data.techniques.dimensions_affected?.length > 0 && ( Dimensions Affected {data.techniques.dimensions_affected.map((dim: string) => )} )} {data.techniques.techniques_detected?.length > 0 && ( {data.techniques.techniques_detected.map((tech: any, idx: number) => ( {tech.severity && 3 ? 'error' : 'warning'} />} ))} )} ); }; export const AISection: React.FC<{ data: AnalysisDetail }> = ({ data }) => { if (!data.ai_tampered) return null; return ( }> AI Content Detection - {data.ai_tampered.verdict} AI Probability {Math.round(Number(data.ai_tampered.ai_probability))}% Indicators Found {data.ai_tampered.indicators_count} Duration {formatDuration(data.ai_tampered.total_duration_ms || data.ai_tampered.duration_ms?.total)} {(data.ai_tampered.llm_screening || data.ai_tampered.llm_deep) && ( {data.ai_tampered.llm_screening && } {data.ai_tampered.llm_deep && } )} {data.ai_tampered.disclosure_detected && ( AI Disclosure detected: {data.ai_tampered.disclosure_text} )} ); };