juq-llm-kit
Version:
Customizable UI components for React Native (Expo) chat applications
107 lines (106 loc) • 4.15 kB
JavaScript
;
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;