/** * API Keys tab — list of stored keys with usage telemetry. * * Backend redacts the key value to a prefix; frontend never sees the full key * after creation. Edit dialog requires re-entering it if rotation is needed. */ import React from 'react'; import { Box, TableContainer, Table, TableHead, TableBody, TableRow, TableCell, Button, Chip, IconButton, Switch, } from '@mui/material'; import { Add as AddIcon, Edit as EditIcon, Delete as DeleteIcon } from '@mui/icons-material'; import type { ApiKey } from '../ProvidersManagement.types'; interface Props { apiKeys: ApiKey[]; hasProviders: boolean; onAdd: () => void; onEdit: (k: ApiKey) => void; onDelete: (k: ApiKey) => void; onToggleActive: (k: ApiKey) => void; } export const ApiKeysTab: React.FC = ({ apiKeys, hasProviders, onAdd, onEdit, onDelete, onToggleActive }) => ( <> Key Name Provider Prefix Usage Last Used Active Actions {apiKeys.map((k) => ( {k.key_name} {k.key_prefix}... {k.usage_count} calls {k.last_used_at ? new Date(k.last_used_at).toLocaleDateString() : 'Never'} onToggleActive(k)} size="small" /> onEdit(k)}> onDelete(k)} color="error"> ))}
);