import React from "react"; import { ChevronRight, Info } from "lucide-react"; import { applyGroupDefaults, resolveGroupDefaults } from "../domain/groupConfig"; import { sanitizeCredentialValue } from "../domain/credentials"; import { hasBridgeSshCredentials, resolveBridgeKeyAuth, resolveBridgeSshAgentAuth, resolveHostAuth } from "../domain/sshAuth"; import { resolveHostSshConnectionTimeouts } from "../domain/sshConnectionTimeouts"; import { cn } from "../lib/utils"; import { Button } from "./ui/button"; import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "./ui/collapsible"; import { Input } from "./ui/input"; import { Label } from "./ui/label"; import { Textarea } from "./ui/textarea"; import { toast } from "./ui/toast"; // eslint-disable-next-line @typescript-eslint/no-explicit-any type KeychainExportPanelProps = Record; export const KeychainExportPanel: React.FC = ({ panel, t, getKeyIcon, getKeyTypeDisplay, setShowHostSelector, exportHost, exportLocation, setExportLocation, exportFilename, setExportFilename, exportAdvancedOpen, setExportAdvancedOpen, exportScript, setExportScript, isExporting, setIsExporting, keys, identities, groupConfigs, execCommand, onSaveIdentity, onSaveHost, closePanel, }) => { return ( <> {/* Key info card */}
{getKeyIcon(panel.key)}

{panel.key.label}

{t("auth.keyType", { type: getKeyTypeDisplay(panel.key) })}

{/* Export to field */}
setShowHostSelector(true)} />
{/* Location field */}
setExportLocation(e.target.value)} placeholder=".ssh" />
{/* Filename field */}
setExportFilename(e.target.value)} placeholder="authorized_keys" />
{/* Info note */}

{t("keychain.export.note", { unix: "UNIX", advanced: t("common.advanced"), })}

{/* Advanced collapsible */}