"use client"; import { useState } from "react"; import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query"; import Link from "next/link"; import { api, Key } from "@/lib/api"; import { Badge, Button, Card, CardHeader, CardTitle } from "@/components/ui"; import { Table, Thead, Tbody, Tr, Th, Td } from "@/components/ui"; function UploadKeyModal({ onClose }: { onClose: () => void }) { const queryClient = useQueryClient(); const [label, setLabel] = useState(""); const [publicKey, setPublicKey] = useState(""); const { mutate: upload, isPending, error } = useMutation({ mutationFn: () => api.uploadKey(label.trim(), publicKey.trim()), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ["keys"] }); onClose(); }, }); return (

Upload SSH Key

{error && (
{(error as Error).message}
)}
setLabel(e.target.value)} placeholder="e.g. dom-macbook" className="w-full rounded-lg border border-border bg-surface-2 px-3 py-2 text-sm text-text-primary placeholder-text-secondary/50 focus:border-accent focus:outline-none focus:ring-1 focus:ring-accent" />