/** @jsxImportSource react */
import { useState } from 'react'
import type { FC } from 'react'
import {
usePerformanceMetrics,
useEndpointMetrics,
} from '../hooks/useAdminQuery'
export const PerformancePage: FC = () => {
const { data: metrics, isLoading, isError } = usePerformanceMetrics()
const { data: endpoints } = useEndpointMetrics()
const [_timeRange, setTimeRange] = useState('1 Hour')
if (isLoading) {
return
Loading performance data...
}
if (isError) {
return Failed to load performance data
}
const elevatedErrorRate = (metrics?.errorRate ?? 0) > 1
const slowResponse = (metrics?.avgResponseTime ?? 0) > 500
return (
Performance Analytics
{/* Performance Alerts */}
{elevatedErrorRate &&
Elevated Error Rate Alert
}
{slowResponse &&
Slow Response Times Detected
}
{/* KPI Cards */}
Avg Response Time
{metrics?.avgResponseTime}ms
P50 Response Time
{metrics?.p50ResponseTime}ms
P95 Response Time
{metrics?.p95ResponseTime}ms
P99 Response Time
{metrics?.p99ResponseTime}ms
Requests per Second
{metrics?.requestsPerSecond}
Error Rate
{metrics?.errorRate}%
Uptime
{metrics?.uptime}%
{/* Time Range Selector */}
{/* Performance Trend */}
Performance Trend
Chart placeholder
{/* Endpoint Performance */}
Endpoint Performance
| Endpoint |
Avg Response Time |
Request Count |
Error Rate |
{endpoints?.map((endpoint, idx) => (
| {endpoint.endpoint} |
{endpoint.avgResponseTime}ms |
{endpoint.requestCount.toLocaleString()} |
{endpoint.errorRate}% |
))}
)
}