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}
)}
);
};