Skip to content

Commit 49694e4

Browse files
committed
Add Frontend UI
1 parent a63694d commit 49694e4

2 files changed

Lines changed: 72 additions & 2 deletions

File tree

chat-app/frontend/src/App.jsx

Lines changed: 53 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,48 @@ function App() {
44
const [username, setUsername] = useState("");
55
const [savedUsername, setSavedUsername] = useState("");
66

7-
function handleSubmit(e) {
7+
const [messageInput, setMessageInput] = useState("");
8+
9+
const [messages, setMessages] = useState([
10+
{
11+
id: 1,
12+
username: "System",
13+
text: "Welcome to the chat",
14+
createdAt: new Date().toLocaleTimeString(),
15+
},
16+
]);
17+
18+
function handleUserNameSubmit(e) {
819
e.preventDefault();
920

1021
if (!username.trim()) return;
1122

1223
setSavedUsername(username);
1324
}
1425

26+
function handleMessageSubmit(e) {
27+
e.preventDefault();
28+
29+
if (!messageInput.trim()) return;
30+
31+
const newMessage = {
32+
id: Date.now(),
33+
userName: savedUsername,
34+
text: messageInput,
35+
createdAt: new Date().toLocaleTimeString(),
36+
};
37+
38+
setMessages([...messages, newMessage]);
39+
40+
setMessageInput("");
41+
}
42+
1543
if (!savedUsername) {
1644
return (
1745
<div>
1846
<h1>Join Chat</h1>
1947

20-
<form onSubmit={handleSubmit}>
48+
<form onSubmit={handleUserNameSubmit}>
2149
<input
2250
type="text"
2351
placeholder="Enter username"
@@ -35,6 +63,29 @@ function App() {
3563
<div>
3664
<h1>Chat App</h1>
3765
<p>Welcome {savedUsername}!</p>
66+
67+
<div className="message-container">
68+
{messages.map((message) => (
69+
<div key={message.id} className="message">
70+
<strong>{message.username}</strong>
71+
72+
<p>{message.text}</p>
73+
74+
<small>{message.createdAt}</small>
75+
</div>
76+
))}
77+
</div>
78+
79+
<form onSubmit={handleMessageSubmit}>
80+
<input
81+
type="text"
82+
placeholder="Type a message"
83+
value={messageInput}
84+
onChange={(e) => setMessageInput(e.target.value)}
85+
/>
86+
87+
<button type="submit">Send</button>
88+
</form>
3889
</div>
3990
);
4091
}

chat-app/frontend/src/index.css

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
body {
22
font-family: Arial, sans-serif;
33
padding: 2rem;
4+
background: #f4f4f4;
5+
}
6+
7+
h1 {
8+
margin-bottom: 1rem;
49
}
510

611
input {
@@ -10,4 +15,18 @@ input {
1015

1116
button {
1217
padding: 0.5rem 1rem;
18+
cursor: pointer;
19+
}
20+
21+
.messages-container {
22+
margin: 2rem 0;
23+
display: flex;
24+
flex-direction: column;
25+
gap: 1rem;
26+
}
27+
28+
.message {
29+
background: white;
30+
padding: 1rem;
31+
border-radius: 8px;
1332
}

0 commit comments

Comments
 (0)