UNPKG

juq-llm-kit

Version:

Customizable UI components for React Native (Expo) chat applications

107 lines (106 loc) 4.15 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = __importStar(require("react")); const react_native_1 = require("react-native"); const chat_input_1 = __importDefault(require("./components/chat-kit/chat-input")); const messages_1 = __importDefault(require("./components/chat-kit/messages")); const side_bar_1 = __importDefault(require("./components/chat-kit/side-bar")); const TestApp = () => { const [messages, setMessages] = (0, react_1.useState)([ { id: 1, role: 'user', content: 'Hello!', timestamp: new Date().toISOString(), }, { id: 2, role: 'assistant', content: 'Hi there! How can I help you today?', timestamp: new Date().toISOString(), }, ]); const [isLoading, setIsLoading] = (0, react_1.useState)(false); const handleSendMessage = (message) => { // Add user message const userMessage = { id: Date.now(), role: 'user', content: message, timestamp: new Date().toISOString(), }; setMessages(prev => [...prev, userMessage]); setIsLoading(true); // Simulate AI response after 1.5 seconds setTimeout(() => { const assistantMessage = { id: Date.now() + 1, role: 'assistant', content: `This is a response to your message: "${message}"`, timestamp: new Date().toISOString(), }; setMessages(prev => [...prev, assistantMessage]); setIsLoading(false); }, 1500); }; return (<react_native_1.View style={styles.container}> <side_bar_1.default theme="dark" projects={[ { name: "Project 1" }, { name: "Project 2" }, ]} historyItems={[ { name: "Chat 1", date: new Date() }, { name: "Chat 2", date: new Date(Date.now() - 86400000) }, ]}/> <react_native_1.View style={styles.content}> <messages_1.default messages={messages} theme="dark" onCopy={(text) => console.log('Copied:', text)} onRegenerate={(id) => console.log('Regenerate message:', id)}/> <chat_input_1.default onSubmit={handleSendMessage} isLoading={isLoading} theme="dark" placeholder="Type your message..."/> </react_native_1.View> </react_native_1.View>); }; const styles = react_native_1.StyleSheet.create({ container: { flex: 1, flexDirection: 'row', }, content: { flex: 1, padding: 16, }, }); exports.default = TestApp;