import { Table, Badge, Text, Paper, Group, Drawer, Stack, Divider, Code, Button, Box, ScrollArea, Title } from '@mantine/core' import { useDisclosure } from '@mantine/hooks' import { useState } from 'react' import { Link } from '@tanstack/react-router' import { TbMessageReport, TbHistory, TbExternalLink, TbBug } from 'react-icons/tb' const mockErrors = [ { id: 1, message: 'NullPointerException at village_sync.dart:45', village: 'Sukatani', version: 'v1.2.0', timestamp: '2026-04-01 14:30:15', severity: 'critical', stackTrace: 'at com.desa.sync.VillageManager.sync(VillageManager.java:45)\nat com.desa.sync.SyncService.onHandleIntent(SyncService.java:120)' }, { id: 2, message: 'Failed to load citizen record session', village: 'Sukamaju', version: 'v1.1.8', timestamp: '2026-04-01 14:15:22', severity: 'high', stackTrace: 'Error: Connection timeout reaching upstream citizen-db\n at HttpClient.get (network.dart:88)' }, { id: 3, message: 'SocketException: Connection timed out', village: 'Cikini', version: 'v1.2.0', timestamp: '2026-04-01 13:55:10', severity: 'medium', stackTrace: 'SocketException: OS Error: Connection timed out, errno = 110, address = 10.0.2.2, port = 54332' }, { id: 4, message: 'UI Thread blocking > 500ms', village: 'Beji', version: 'v1.1.2', timestamp: '2026-04-01 13:40:00', severity: 'low', stackTrace: 'ANR (Application Not Responding) detected in main thread.' }, ] export function ErrorDataTable() { const [opened, { open, close }] = useDisclosure(false) const [selectedError, setSelectedError] = useState(null) const handleRowClick = (error: any) => { setSelectedError(error) open() } const getSeverityColor = (sev: string) => { switch(sev) { case 'critical': return 'red' case 'high': return 'orange' case 'medium': return 'yellow' default: return 'gray' } } return ( <> LATEST ERROR REPORTS Error Message Village App Version Timestamp Severity {mockErrors.map((error) => ( handleRowClick(error)} style={{ cursor: 'pointer' }} > {error.message} {error.village} {error.version} {error.timestamp} {error.severity.toUpperCase()} ))}
Error Investigation } styles={{ header: { padding: '24px', borderBottom: '1px solid rgba(255,255,255,0.1)' }, content: { background: 'rgba(15, 23, 42, 0.95)', backdropFilter: 'blur(12px)' } }} > {selectedError && ( MESSAGE {selectedError.message} VILLAGE {selectedError.village} APP VERSION {selectedError.version} STACK TRACE {selectedError.stackTrace} )} ) } import { SimpleGrid, ThemeIcon } from '@mantine/core'