(null);
// ------------------------------------------------------------------
// Derived: composer send state
@@ -3309,6 +3311,40 @@ export const ChatComposer = memo(function ChatComposer(props: ChatComposerProps)
)}
>
+ {
+ const files = Array.from(event.currentTarget.files ?? []);
+ // Clear the input so choosing the same image again still
+ // emits a change event after it has been removed.
+ event.currentTarget.value = "";
+ if (files.length === 0) return;
+ void addComposerImages(files);
+ focusComposer();
+ }}
+ />
+ 0
+ }
+ onClick={() => imageFileInputRef.current?.click()}
+ >
+
+ Attach
+
+
{noProviderAvailable ? (