AxL95's picture
Upload 16 files
df5c323 verified
raw
history blame
3.38 kB
import React, { useState } from 'react';
import './App.css';
import ChatInterface from './components/ChatInterface';
import Panel from './components/Panel';
import Login from './components/Login';
import Signin from './components/Signin';
function App() {
const [isCollapsed, setIsCollapsed] = useState(false);
const [messages, setMessages] = useState([]);
const [conversations, setConversations] = useState([
{ id: 1, title: "Premier diagnostic", date: "12 Mar" },
{ id: 2, title: "Question sur les symptômes", date: "11 Mar" },
{ id: 3, title: "Consultation générale", date: "10 Mar" }
]);
const [activeConversationId, setActiveConversationId] = useState(null);
const toggleCollapse = () => {
setIsCollapsed(!isCollapsed);
};
const handleNewChat = () => {
setActiveConversationId(null);
setMessages([]);
};
const handleMessageSent = (message) => {
if (!activeConversationId) {
const newChat = {
id: Date.now(),
title: message.length > 15 ? message.substring(0, 15) + "..." : message,
date: new Date().toLocaleDateString('fr-FR', { day: '2-digit', month: 'short' }),
time: new Date().toLocaleTimeString('fr-FR', { hour: 'numeric', minute: 'numeric' })
};
setConversations([newChat, ...conversations]);
setActiveConversationId(newChat.id);
}
};
const [page, setPage] = useState("chat");
return (
<div className={`App ${isCollapsed ? 'panel-collapsed' : ''}`}>
{page === "chat" && (
<Panel
conversations={conversations}
setConversations={setConversations}
activeConversationId={activeConversationId}
setActiveConversationId={setActiveConversationId}
onNewChat={handleNewChat}
onToggleCollapse={toggleCollapse}
isCollapsed={isCollapsed}
/>
)}
<div className="main-content">
{isCollapsed && (
<button className="collapse-button-main" onClick={toggleCollapse}>
<span className="material-icons">
<svg
fill="#FFFF"
width="20"
height="20"
viewBox="0 0 32 32"
xmlns="http://www.w3.org/2000/svg"
>
<defs>
<style>{`.cls-1{fill:none;}`}</style>
</defs>
<title>open-panel--solid--left</title>
<path d="M28,4H4A2,2,0,0,0,2,6V26a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V6A2,2,0,0,0,28,4Zm0,22H12V6H28Z" />
<rect
id="_Transparent_Rectangle_"
data-name="<Transparent Rectangle>"
className="cls-1"
width="20"
height="20"
/>
</svg>
</span>
</button>
)}
{page === "chat" &&
<ChatInterface
messages={messages}
setMessages={setMessages}
onMessageSent={handleMessageSent}
toLogin={() => setPage("login")}/>}
{page === "login" && <Login toSignin={() => setPage("signin")}/>}
{page === "signin" && <Signin toLogin={() => setPage("login")}/>}
</div>
</div>
);
}
export default App;