import { TextConfirmModal } from 'components/ui/TextConfirmModalWrapper' import type { APIKeysData } from 'data/api-keys/api-keys-query' import { motion } from 'framer-motion' import { MoreVertical } from 'lucide-react' import { Button, DropdownMenu, DropdownMenuContent, DropdownMenuTrigger, TableCell, TableRow, } from 'ui' import { APIKeyDeleteDialog } from './APIKeyDeleteDialog' import { ApiKeyPill } from './ApiKeyPill' export const APIKeyRow = ({ apiKey, lastSeen, isDeleting, onDelete, setKeyToDelete, isDeleteModalOpen, }: { apiKey: Extract lastSeen?: { timestamp: string } isDeleting: boolean onDelete: () => void setKeyToDelete: (id: string | null) => void isDeleteModalOpen: boolean }) => { const MotionTableRow = motion.create(TableRow) return ( <>
{apiKey.name}
{apiKey.description || No description}
{lastSeen?.timestamp ?? Never used}
setKeyToDelete(null)} onConfirm={onDelete} title={`Delete ${apiKey.type} API key: ${apiKey.name}`} confirmString={apiKey.name} confirmLabel="Yes, irreversibly delete this API key" confirmPlaceholder="Type the name of the API key to confirm" loading={isDeleting} variant="destructive" alert={{ title: 'This cannot be undone', description: lastSeen ? `This API key was used ${lastSeen.timestamp}. Make sure all backend components using it have been updated. Deletion will cause them to receive HTTP 401 Unauthorized status codes on all Supabase APIs.` : `This API key has not been used in the past 24 hours. Make sure you've updated all backend components using it before deletion.`, }} /> ) }