| import React, { useState } from 'react'; |
| import axios from 'axios'; |
|
|
| const Chatbot = () => { |
| const [input, setInput] = useState(''); |
| const [conversation, setConversation] = useState([]); |
|
|
| const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => { |
| setInput(e.target.value); |
| }; |
|
|
| const handleSendMessage = () => { |
| const newMessage = { text: input, sender: 'user' }; |
| setConversation((prevConversation) => [...prevConversation, newMessage]); |
| axios.post('https://example.com/api/chatbot', { input }) |
| .then((response) => { |
| const botResponse = { text: response.data, sender: 'bot' }; |
| setConversation((prevConversation) => [...prevConversation, botResponse]); |
| }) |
| .catch((error) => { |
| console.error(error); |
| }); |
| setInput(''); |
| }; |
|
|
| return ( |
| <div className="max-w-md mx-auto p-4 bg-gray-100 rounded-md shadow-md"> |
| <h1 className="text-lg font-bold mb-4">Chatbot</h1> |
| <ul className="mb-4"> |
| {conversation.map((message, index) => ( |
| <li key={index} className={`text-lg ${message.sender === 'user' ? 'text-blue-600' : 'text-green-600'}`}> |
| {message.text} |
| </li> |
| ))} |
| </ul> |
| <input |
| type="text" |
| value={input} |
| onChange={handleInputChange} |
| className="w-full p-2 mb-4 border border-gray-400 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-600" |
| /> |
| <button |
| onClick={handleSendMessage} |
| className="bg-blue-600 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-600" |
| > |
| Send |
| </button> |
| </div> |
| ); |
| }; |
|
|
| export default Chatbot; |
|
|