import { components } from 'api-types' import dayjs from 'dayjs' import { motion } from 'framer-motion' import { CircleArrowDown, CircleArrowUp, Eye, Key, MoreVertical, ShieldOff, Timer, Trash2, } from 'lucide-react' import { Badge, Button, cn, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, TableCell, TableRow, } from 'ui' import { TimestampInfo } from 'ui-patterns' import { AlgorithmHoverCard } from '../algorithm-hover-card' import { statusColors, statusLabels } from '../jwt.constants' import { DropdownMenuItemTooltip } from '@/components/ui/DropdownMenuItemTooltip' import { JWTSigningKey } from '@/data/jwt-signing-keys/jwt-signing-keys-query' interface SigningKeyRowProps { signingKey: components['schemas']['SigningKeyResponse'] setSelectedKey: (key?: JWTSigningKey) => void setShownDialog: (dialog?: 'key-details' | 'revoke' | 'delete') => void handlePreviouslyUsedKey: (keyId: string) => void handleStandbyKey: (keyId: string) => void legacyKey?: JWTSigningKey | null standbyKey?: JWTSigningKey | null isLoading?: boolean } const MotionTableRow = motion.create(TableRow) export const SigningKeyRow = ({ signingKey, setSelectedKey, setShownDialog, handlePreviouslyUsedKey, handleStandbyKey, legacyKey, standbyKey, isLoading = false, }: SigningKeyRowProps) => (
{signingKey.status === 'standby' ? ( ) : ( )} {statusLabels[signingKey.status]}
{signingKey.id}
{signingKey.status === 'previously_used' || signingKey.status === 'revoked' ? ( ) : ( )} {(signingKey.status !== 'in_use' || signingKey.algorithm !== 'HS256') && (