npx gluestack-ui@alpha add chat-aiimport {
Conversation,
ConversationContent,
ConversationEmptyState,
ConversationScrollButton,
ConversationDownload,
Message,
MessageContent,
MessageResponse,
MessageToolbar,
MessageAction,
MessageBranch,
PromptInput,
PromptInputProvider,
PromptInputActionMenu,
PromptInputActionMenuContent,
PromptInputActionMenuTrigger,
usePromptInputAttachments,
Attachments,
Attachment,
AttachmentPreview,
AttachmentRemove,
} from '@/components/ui/chat-ai';
| Prop | Type | Default | Description |
|---|---|---|---|
children | ReactNode | - | The content of the conversation. |
className | string | - | Additional CSS classes to apply. |
| Prop | Type | Default | Description |
|---|---|---|---|
messages | Array<UIMessage> | - | Array of messages to display. |
renderItem | ListRenderItem<UIMessage> | - | Custom render function for messages. |
estimatedItemSize | number | 140 | Estimated height of each message item. |
| Prop | Type | Default | Description |
|---|---|---|---|
role | 'user' | 'assistant' | - | The role of the message sender. |
index | number | - | The index of the message in the list. |
message | UIMessage | - | The message data object. |
children | ReactNode | - | The content of the message. |
className | string | - | Additional CSS classes to apply. |
| Prop | Type | Default | Description |
|---|---|---|---|
children | ReactNode | - | The content to display. |
className | string | - | Additional CSS classes to apply. |
| Prop | Type | Default | Description |
|---|---|---|---|
message | UIMessage | - | The message object containing content and parts. |
| Prop | Type | Default | Description |
|---|---|---|---|
children | ReactNode | - | Action buttons to display. |
className | string | - | Additional CSS classes to apply. |
| Prop | Type | Default | Description |
|---|---|---|---|
onPress | () => void | - | Callback when action is pressed. |
tooltip | string | - | Tooltip text for the action. |
children | ReactNode | - | The icon or content of the action. |
| Prop | Type | Default | Description |
|---|---|---|---|
children | ReactNode | - | Additional content (attachments, etc.). |
onSubmit | (message: PromptInputMessage) => void | - | Callback when message is submitted. |
| Prop | Type | Default | Description |
|---|---|---|---|
children | ReactNode | - | Child components. |
import {
Conversation,
ConversationContent,
Message,
MessageContent,
MessageResponse,
PromptInput,
PromptInputProvider,
} from '@/components/ui/chat-ai';
function Chat() {
const [messages, setMessages] = useState([]);
const handleSubmit = ({ text, files }) => {
// Handle message submission
setMessages([...messages, { role: 'user', content: text }]);
};
return (
<Conversation>
<ConversationContent messages={messages} />
<PromptInputProvider>
<PromptInput onSubmit={handleSubmit} />
</PromptInputProvider>
</Conversation>
);
}
import { useChat } from '@ai-sdk/react';
import { DefaultChatTransport } from 'ai';
import { fetch as expoFetch } from 'expo/fetch';
function AIChat() {
const { messages, sendMessage } = useChat({
transport: new DefaultChatTransport({
fetch: expoFetch,
api: 'http://localhost:8082/api/chat',
}),
});
const handleSubmit = (message) => {
sendMessage({
text: message.text,
files: message.files,
});
};
return (
<Conversation>
<ConversationContent messages={messages} />
<PromptInputProvider>
<PromptInput onSubmit={handleSubmit} />
</PromptInputProvider>
</Conversation>
);
}