'use client'; import { Spinner } from './spinner'; const STYLES = `.wf-decrypt-btn{appearance:none;-webkit-appearance:none;border:none;display:inline-flex;align-items:center;justify-content:center;height:40px;padding:0 12px;border-radius:6px;font-size:14px;font-weight:500;line-height:20px;cursor:pointer;white-space:nowrap;gap:6px;transition:background 150ms}.wf-decrypt-idle{color:var(--ds-gray-1000);background:var(--ds-background-100);box-shadow:0 0 0 1px var(--ds-gray-400)}.wf-decrypt-idle:hover{background:var(--ds-gray-alpha-200)}.wf-decrypt-done{color:var(--ds-green-900);background:var(--ds-green-100);box-shadow:0 0 0 1px var(--ds-green-400);cursor:default}`; interface DecryptButtonProps { /** Whether an encryption key has been obtained (decryption is active). */ decrypted?: boolean; /** Whether the key is currently being fetched. */ loading?: boolean; /** Called when the user clicks to initiate decryption. */ onClick?: () => void; } /** * Decrypt/Decrypted button using Geist secondary style. * Three states: idle (secondary gray), decrypting (spinner), decrypted (green success). */ export function DecryptButton({ decrypted = false, loading = false, onClick, }: DecryptButtonProps) { return ( <>