JSFiddle - React, Tailwind, and code Playground
HTML
<body>
<div class="page">
<header></header>
<main>
<div class="chats">
<div class="search-chats">
<input type="text" placeholder="Search">
</div>
<div class="chats">
<div class="chat">
<img src="https://hips.hearstapps.com/hmg-prod/images/marcus-aurelius-gettyimages-122316830.jpg" alt="Avatar">
<div class="info">
<div class="top">
<div class="username">Marcus Aurelius</div>
<div class="time">10:55PM</div>
</div>
<div class="buttom">
<div class="message">Lorem ipsum dolor, sit amet consectetur adipisicing elit</div>
<div class="unread-messages">
<div class="number">3</div>
</div>
</div>
</div>
</div>
<div class="chat">
<img src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQSBG6Cwh5aj_a_6WW9HNap8azuJG-ITmSdhQ&s" alt="Avatar">
<div class="info">
<div class="top">
<div class="username">Antoninus Pius</div>
<div class="time">10:55PM</div>
</div>
<div class="buttom">
<div class="message">Lorem ipsum dolor, sit amet consectetur adipisicing elit</div>
<div class="unread-messages">
<div class="number">1</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="dialog">
</div>
</main>
</div>
</body>
CSS
:root {
--header-color: #242f3d;
--chats-background-color: #17212b;
--dialog-background-color: #0e1621;
--header-height: 1.2rem;
--chat-hover-color: #2b5278;
--unread-message-color: #4082bc;
--passive-text-color: #637283;
--primary-text-color: #e4e9ee;
}
* {
padding: 0;
margin: 0;
box-sizing: border-box;
}
.page {
height: 100vh;
color: var(--primary-text-color);
font-family:'Courier New', Courier, monospace;
}
header {
height: var(--header-height);
background-color: var(--header-color);
}
main {
display: flex;
height: calc(100% - var(--header-height));
}
.chats {
flex: 1;
background-color: var(--chats-background-color);
display: flex;
flex-direction: column;
min-width: 20ch;
}
.search-chats {
display: flex;
justify-content: center;
align-content: center;
padding: 0.5rem;
}
.search-chats input {
outline: 0;
border: 2px solid var(--header-color);
border-radius: 1rem;
background-color: var(--header-color);
color: inherit;
width: 100%;
padding: 0.5rem;
}
.chat:hover {
background-color: var(--chat-hover-color);
cursor: pointer;
color: var(--primary-text-color);
}
.chat:hover .time,
.chat:hover .message {
color: var(--primary-text-color);
}
.chat {
display: flex;
gap: 0.5rem;
padding: 0.25rem 0.5rem;
}
.chat img {
width: 4rem;
height: 4rem;
border-radius: 2rem;
display: block;
}
.chat .info {
display: flex;
flex-direction: column;
justify-content: space-around;
overflow: hidden;
}
.chat .info > * {
display: flex;
justify-content: space-between;
gap: 1rem;
}
.chat .info .time {
flex: end;
}
.chat .info .message,
.chat .info .username {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.dialog {
flex: 2;
background-color: var(--dialog-background-color);
}