+ {/* Header */}
+
+ {profile?.picture && (
+

+ )}
+
+
+
+ {/* Messages */}
+
+ {loading && (
+
Loading messages…
+ )}
+ {!loading && messages.length === 0 && (
+
+ No messages yet. Say hello!
+
+ )}
+ {messages.map((e) => (
+
+ ))}
+
+
+
+ {/* Compose */}
+
+ {sendError &&
{sendError}
}
+
+
+
Ctrl+Enter to send · NIP-04 encrypted
+
+
+ );
+}
+
+// ── New conversation input ────────────────────────────────────────────────────
+
+function NewConvInput({ onStart }: { onStart: (pubkey: string) => void }) {
+ const [input, setInput] = useState("");
+ const [error, setError] = useState