import { useMemo } from 'react'; import { useParams } from 'react-router-dom'; import { ChevronDown } from 'lucide-react'; import { useLogs } from '../hooks/useLogs'; import { Button, Checkbox, DropdownMenu, DropdownMenuContent, DropdownMenuTrigger, EmptyState, SearchInput, } from '@/components'; import { LogsDataGrid, type LogsColumnDef } from '../components/LogsDataGrid'; import { SeverityBadge } from '../components/SeverityBadge'; import { SEVERITY_OPTIONS, LOGS_PAGE_SIZE } from '../helpers'; import { formatTime } from '@/lib/utils/utils'; import { LogSchema } from '@insforge/shared-schemas'; export default function LogsPage() { // Get the source from the URL params const { source = 'insforge.logs' } = useParams<{ source?: string }>(); const { logs: paginatedLogs, filteredLogs, searchQuery: logsSearchQuery, setSearchQuery: setLogsSearchQuery, severityFilter, setSeverityFilter, currentPage, setCurrentPage, totalPages, isLoading: logsLoading, error: logsError, getSeverity, } = useLogs(source); const logsColumns: LogsColumnDef[] = useMemo( () => [ { key: 'event_message', name: 'Logs', width: '10fr', renderCell: ({ row }) => (
{String(row.eventMessage ?? '')}
), }, { key: 'severity', name: 'Severity', width: '120px', renderCell: ({ row }) => ({formatTime(String(row.timestamp ?? ''))}
), }, ], [getSeverity] ); return ({source}