import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query" import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" import { Button } from "@/components/ui/button" import { Badge } from "@/components/ui/badge" import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table" import { Ban } from "lucide-react" import { securityService, type ApiKey } from "@/services" import { toast } from "sonner" import { format } from "date-fns" import type { ApiError } from "@/types/error.types" export default function ApiKeysPage() { const queryClient = useQueryClient() const { data: apiKeys, isLoading } = useQuery({ queryKey: ['admin', 'security', 'api-keys'], queryFn: () => securityService.getAllApiKeys(), }) const revokeMutation = useMutation({ mutationFn: (id: string) => securityService.revokeApiKey(id), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['admin', 'security', 'api-keys'] }) toast.success("API key revoked successfully") }, onError: (error) => { const apiError = error as ApiError toast.error(apiError.response?.data?.message || "Failed to revoke API key") }, }) return (