messenger/css/main.scss
sairaj mote e59347030e v0.18.65
Feat(user): add option to add new group members

Feat(user): add option to remove group members

Fix(user): Issue with removed people not showing as a group activity card

Refactor (dev): refactored code for disaplying groups information
2021-01-28 18:37:28 +05:30

1783 lines
37 KiB
SCSS

*,
::before,
::after{
padding: 0;
margin: 0;
box-sizing: border-box;
font-family: 'Roboto', sans-serif;
}
:root{
scroll-behavior: smooth;
font-size: clamp(1rem, 1.2vmax, 3rem);
}
html, body{
height: 100%;
}
body{
--accent-color:#5b00d3;
--secondary-color: #ffac2e;
--text-color: 17, 17, 17;
--text-color-light: 100, 100, 100;
--foreground-color: 255, 255, 255;
--background-color: #efefef;
--error-color: red;
color: rgba(var(--text-color), 1);
background: rgba(var(--foreground-color), 1);
#scroll_to_bottom{
background: rgba(var(--foreground-color), 1);
box-shadow: 0 0.3rem 0.4rem rgba(0, 0, 0, 0.2);
}
}
body[data-theme='dark']{
--accent-color:#923eff;
--secondary-color: #d60739;
--text-color: 240, 240, 240;
--text-color-light: 170, 170, 170;
--foreground-color: 20, 20, 20;
--error-color: rgb(255, 87, 87);
.initial{
color: rgba(var(--text-color), 1) !important;
box-shadow: 0 0.1rem 0.1rem rgba(0, 0, 0, 0.16);
}
.message{
color: rgba(var(--text-color), 1);
}
#scroll_to_bottom{
background: linear-gradient(rgba(var(--text-color), 0.1), rgba(var(--text-color), 0.1)), rgba(var(--foreground-color), 1);
box-shadow: 0 0.4rem 0.4rem rgba(0, 0, 0, 0.3);
}
}
p{
line-height: 1.6;
}
h1{
font-size: 3rem;
}
h2{
font-size: 2rem;
}
h3{
font-size: 1.5rem;
}
h4{
font-size: 1.1rem;
}
h5{
font-size: 0.8rem;
}
h1, h2, h3, h4, h5{
color: rgba(var(--text-color), 1);
font-weight: 600;
}
textarea{
background: rgba(var(--text-color), 0.06);
border: none;
border-radius: 0.3rem;
width: 100%;
padding: 1rem;
font-size: 1rem;
color: rgba(var(--text-color), 1);
resize: none;
line-height: 1.6;
&:focus{
outline: none;
box-shadow: 0 0 0 0.1rem var(--accent-color);
}
}
strong{
font-weight: 500;
}
.flex{
display: flex;
}
.grid{
display: grid;
}
.grid-2{
grid-template-columns: auto auto;
gap: 1em;
}
.align-center{
align-items: center;
}
.justify-right{
margin-left: auto;
}
.direction-column{
flex-direction: column;
}
.rest{
flex: 1;
}
.hide{
opacity: 0;
pointer-events: none;
}
.hide-completely{
display: none !important;
}
.no-transformations{
transform: none !important;
}
.breakable{
overflow-wrap: break-word;
}
.text-overflow{
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.sticky{
position: sticky;
top: 1rem;
}
.light-text{
color: rgba(var(--text-color-light), 1);
}
.accent-color{
color: var(--accent-color);
}
.secondary-color{
color: var(--secondary-color)
}
.fab{
filter: drop-shadow(0 0.4rem 0.3rem rgba(0, 0, 0, 0.2));
margin: 1.5rem;
position: fixed;
right: 0;
bottom: 0;
z-index: 1;
&::part(button){
padding: 0.9rem 1.6rem;
}
.icon{
margin-left: 0 !important;
margin-right: 0.5rem;
height: 0.9rem !important;
stroke-width: 8 !important;
}
}
a:any-link{
word-wrap: break-word;
color: var(--accent-color);
font-weight: 500;
}
.solid-background{
background: var(--background-color) !important;
}
.normal-weight{
font-weight: normal;
}
.icon{
fill: none;
stroke-width: 6;
stroke: rgba(var(--text-color), 1);
height: 1.2rem;
width: 1.2rem;
overflow: visible;
stroke-linecap: round;
stroke-linejoin: round;
}
span.ripple{
position: absolute;
border-radius: 50%;
transform: scale(0);
background: rgba(var(--text-color), 0.2);
pointer-events: none;
}
.interact{
position: relative;
overflow: hidden;
cursor: pointer;
-webkit-tap-highlight-color: transparent;
}
sm-popup{
sm-input + sm-input{
margin-top: 1rem;
}
}
.popup-header{
padding: 0.5rem 1.5rem 0 1.5rem;
display: flex;
align-items: center;
width: 100%;
.icon{
padding: 0.7rem;
height: 2.4rem;
width: 2.4rem;
stroke-width: 8;
transform: translateX(-0.5rem);
cursor: pointer;
-webkit-tap-highlight-color: transparent;
}
.back{
transform: none;
}
button,
sm-button{
width: auto;
margin-left: auto;
}
}
.copy-row {
display: grid;
grid-template-columns: 1fr auto;
align-items: center;
gap: 0.5rem;
width: auto;
.icon {
cursor: pointer;
padding: 0.4rem;
height: 1.8rem;
width: 1.8rem;
}
.copy {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
h4{
margin-bottom: 0 !important;
}
}
#confirmation_popup,
#prompt_popup {
flex-direction: column;
h4 {
font-weight: 500;
margin-bottom: 0.5rem;
}
sm-button{
margin: 0;
}
.flex {
padding: 0;
margin-top: 2rem;
sm-button:first-of-type {
margin-right: 0.6rem;
margin-left: auto;
}
}
}
.page{
align-items: flex-start;
width: 100%;
height: 100%;
}
.card{
display: flex;
flex-direction: column;
margin: 1rem 0;
}
.tip{
font-size: 0.9rem;
color: rgba(var(--text-color), 0.8);
}
sm-button[variant="primary"]{
--foreground-color: 255, 255, 255;
.icon{
align-self: center;
height: 1rem;
width: 1rem;
margin-left: 0.8rem;
stroke-width: 6;
stroke: white;
}
}
sm-button.danger{
color: var(--error-color);
}
.logo-section{
display: flex;
position: relative;
align-items: center;
height: max-content;
margin: 0.5rem 0;
h5{
font-size: 1.1rem !important;
font-weight: 500;
}
.main-logo{
height: 1.4rem;
margin-right: 0.4rem;
fill: rgba(var(--text-color), 1);
stroke: none;
}
img{
width: 2rem;
margin-right: 0.5rem;
}
}
.select-file{
input[type="file"]{
display: none;
}
}
#landing{
display: grid;
border-radius: 0.6rem;
width: 100%;
padding: 0 1.5rem;
height: 100%;
align-items: center;
overflow-y: auto;
.logo-section{
padding: 1.5rem;
display: flex;
}
.title-font{
line-height: 1.2;
font-weight: 700;
font-size: 2.5rem;
}
.left{
display: grid;
flex-direction: column;
padding-bottom: 1.5rem;
z-index: 1;
h4{
color: rgba(var(--foreground-color), 1);
font-weight: 500;
}
sm-button{
margin: 1.5rem 0 2rem 0;
width: max-content;
}
h3{
margin-bottom: 1rem;
font-weight: 500;
}
p{
margin-top: 1rem;
font-size: 1.1rem;
color: rgba(var(--text-color), 0.8);
}
}
}
#landing_page{
background: rgba(var(--foreground-color), 1);
}
.logo-section{
padding: 1.5rem;
}
#landing_illustration{
position: relative;
width: 100%;
}
#sign_in_popup{
&::part(popup-body){
padding: 0;
}
}
.sign-in-box{
width: 100%;
margin: 0 -2rem;
z-index: 1;
justify-self: center;
padding: 1.5rem;
border-radius: 0.5rem;
background: rgba(var(--foreground-color), 1);
sm-input{
margin-top: 1.5rem;
}
sm-panel{
width: 100%;
}
sm-tab-header{
margin: 0;
background: none;
align-self: flex-start;
&::part(tab-header){
padding-bottom: 0.4rem;
gap: 1.5rem;
}
}
sm-tab::part(tab){
padding: 0.4rem 0;
}
sm-tab-panels{
margin-top: 1.5rem;
}
form{
width: 100%;
}
h2{
margin-bottom: 0.5rem;
}
h3{
font-weight: 500;
}
h4 {
font-weight: 500;
margin-bottom: 1.5rem;
}
h5{
opacity: 0.8;
font-weight: 500;
}
strong{
display: flex;
background: #ffd92e;
padding: 0.4em 0.6em;
border-radius: 0.4em;
color: #111;
margin-top: 0.5rem;
}
.copy-row{
h4{
max-width: 34ch;
}
}
.copy-row:not(:last-of-type){
margin-bottom: 1rem;
}
button {
margin-top: 2rem;
padding: 0.6rem 1.6rem;
}
sm-button{
width: 100%;
&::part(button){
padding: 0.8rem 1.6rem;
}
}
p {
margin-bottom: 0.5rem;
max-width: 35ch;
margin-top: 0.5rem;
}
#credentials_section{
border-top: 1px rgba(var(--text-color), 0.2) solid;
margin-top: 1rem;
padding-top: 1.5rem;
animation: slide-down 0.3s forwards;
}
#sign_in_with, sm-button{
margin-top: 2rem;
margin-bottom: 0;
}
}
@keyframes slide-down{
from{
transform: translateY(-1rem);
}
to{
transform: none;
}
}
#loading_page{
height: 100vh;
display: grid;
place-content: center;
justify-items: center;
svg{
z-index: 1;
transform-origin: bottom;
height: 6rem;
width: 6rem;
animation: bounce 0.5s infinite alternate ease-in;
}
.shadow{
margin-top: -1rem;
width: 5rem;
height: 2rem;
background: rgba(var(--text-color), 0.1);
border-radius: 50%;
animation: scale 0.5s infinite alternate ease-in;
margin-left: 1rem;
}
h4{
margin-top: 2rem;
}
}
@keyframes bounce{
0%{
transform: scaleY(1) translateY(-4rem);
}
90%{
transform: scaleY(1) translateY(0);
}
100%{
transform: scaleY(0.8) ;
}
}
@keyframes scale{
0%{
transform: scale(0.5);
}
90%{
transform: scale(1.05);
}
100%{
transform: scale(1);
}
}
.initial{
position: relative;
justify-content: center;
font-size: 1.2rem;
width: 2.5rem;
height: 2.5rem;
color: white;
box-shadow: 0 0.1rem 0.1rem rgba(0, 0, 0, 0.06);
border-radius: 2rem;
text-transform: uppercase;
user-select: none;
}
.group-icon{
height: 1.6rem;
width: 1.6rem;
fill: white;
stroke: none;
}
.contact{
position: relative;
display: grid;
gap: 0 1rem;
padding: 0.8rem 1.5rem;
align-items: center;
flex-shrink: 0;
overflow: hidden;
&:not(.chat){
grid-template-columns: auto 1fr;
grid-template-areas: 'dp .';
}
&.chat,
&.group{
grid-template-columns: auto 1fr auto;
grid-template-areas: 'dp . time'
'dp . menu';
}
&.admin{
grid-template-columns: auto 1fr auto;
}
.initial{
grid-area: dp;
}
.name{
font-size: 1em;
font-weight: 500;
color: rgba(var(--text-color), 0.8);
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
.last-message{
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
font-weight: 400;
font-size: 0.9em;
color: rgba(var(--text-color), 0.8);
}
.menu{
grid-area: menu;
justify-self: flex-end;
padding: 0.2rem;
fill: rgba(var(--text-color), 1);
}
.time{
font-weight: 500;
color: rgba(var(--text-color), 0.7);
grid-area: time;
}
.admin-tag{
padding: 0.1rem 0.6rem;
font-size: 0.8rem;
border: var(--accent-color) thin solid;
border-radius: 3rem;
}
.tick{
position: absolute;
bottom: -0.2rem;
right: -0.2rem;
height: 1.2rem;
width: 1.2rem;
.icon{
height: 100%;
width: 100%;
padding: 0.4rem;
stroke-width: 12;
border-radius: 1rem;
background: rgba(var(--text-color), 1);
stroke: rgba(var(--foreground-color), 0.8);
}
}
}
#contact_details_popup{
& > .flex:first-of-type{
margin: 1rem 0;
.flex{
.icon{
height: 2.6rem;
width: 2.6rem;
padding: 0.85rem;
cursor: pointer;
stroke-width: 8;
&:hover{
background: rgba(var(--text-color), 0.06);
}
}
}
}
h5{
font-weight: 500;
opacity: 0.8;
}
.copy-row{
margin-bottom: 1.5rem;
h4{
font-weight: 400;
}
}
.group-icon{
padding: 0.2rem !important;
}
#contact_initial{
height: 3.6rem;
width: 3.6rem;
font-size: 1.6rem;
border-radius: 4rem;
margin-bottom: 1rem;
}
#contact_name{
margin: 0.6rem 0;
&::part(text){
font-size: 1.2rem;
font-weight: 500;
}
}
}
#warn_no_encryption, .date-card, .group-event-card{
padding: 0.4rem 0.8rem;
font-weight: 500;
background-color: rgba(var(--text-color), 0.04);
border-radius: 0.5rem;
color: rgba(var(--text-color), 0.8);
margin: 1rem 0;
justify-self: center;
align-self: center;
text-align: center;
}
.group-event-card{
font-size: 0.8rem;
font-weight: 400;
}
#warn_no_encryption{
background: rgb(255, 253, 141);
color: #111;
}
.mail-card.unread::before{
content: '';
position: absolute;
padding: 0.4rem;
border-radius: 1rem;
top: 0;
left: 0;
background: var(--accent-color);
}
.contact .initial::after{
content: '';
position: absolute;
bottom: -0.2rem;
right: -0.2rem;
height: 1.2rem;
width: 1.2rem;
background: var(--accent-color);
border-radius: 100%;
transform: scale(0);
transition: transform 0.3s;
}
.contact.unread .initial::after{
transform: scale(1);
}
.mail-card.unread,
.contact.unread{
.time{
color: var(--accent-color);
}
h4, h5 ,p{
font-weight: 700;
}
}
.mail-card{
position: relative;
display: flex;
flex-direction: column;
padding: 1rem 1.5rem;
.sender{
color: rgba(var(--text-color), 0.9);
font-weight: 500;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
margin-right: 1rem;
}
.date{
margin-left: auto;
font-weight: 500;
white-space: nowrap;
}
.subject{
font-size: 1em;
margin-top: 0.5rem;
font-weight: 500;
}
.description{
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
font-size: 0.9em;
margin-top: 0.2rem;
color: rgba(var(--text-color), 0.8);
}
}
@keyframes slide{
from{
opacity: 0;
transform: translateX(-1rem);
}
to{
opacity: 1;
transform: none;
}
}
#mail_container{
width: 100%;
}
.mail{
position: relative;
&:not(:first-of-type){
margin-top: 2rem;
padding-inline-start: 1rem;
}
&:not(:first-of-type)::before{
content: '';
position: absolute;
left: 0;
top: 0;
width: 0.2rem;
height: 100%;
background: rgba(var(--text-color), 0.2);
}
header{
align-self: start;
margin-bottom: 1rem;
padding-bottom: 0.5rem;
border-bottom: solid 1px rgba(var(--text-color), 0.2);
h4{
font-weight: 500;
}
.flo-id{
font-weight: 400;
max-width: 90%;
}
}
.mail-subject,
.mail-content{
overflow-wrap: break-word;
word-wrap: break-word;
}
.mail-subject{
margin-bottom: 0.4em;
}
.mail-content{
height: max-content;
max-width: 60ch;
white-space: pre-wrap;
}
}
.logo-section{
display: grid;
grid-template-columns: auto 1fr;
}
#main_navbar{
position: fixed;
flex-direction: column;
bottom: 0;
top: 0;
padding: 0;
width: max(16rem, 60vw);
background: rgba(var(--foreground-color), 1);
.logo-section{
margin: 1rem 0 1.5rem 0;
padding: 0 1rem;
}
.active{
background: var(--accent-color);
.icon{
stroke: white;
}
.label{
color: white;
}
}
.label{
font-weight: 500;
font-size: 0.9rem;
}
.navbar-item{
height: auto;
justify-content: flex-start;
flex-direction: row;
flex: none;
padding: 1rem;
.icon{
height: 1.2rem;
width: 2.4rem;
margin-right: 0.8rem;
}
&:last-of-type{
margin-top: auto;
}
.icon{
height: 1.2rem;
width: 1.2rem;
}
&.badge::after{
right: 0;
top: 0;
position: absolute;
content: attr(data-notifications);
display: flex;
justify-content: center;
align-items: center;
padding: 0.4rem;
line-height: 0;
height: calc(1em + 0.4rem);
background: #00C853;
color: rgba(var(--foreground-color), 1);
border-radius: 2rem;
transition: transform 0.3s;
}
&.badge.active::after,
&.badge[data-notifications="0"]::after,
&.badge[data-notifications=""]::after{
transform: scale(0);
}
}
}
#auto_complete_contact{
position: relative;
justify-content: flex-start;
padding-bottom: 0;
}
#mail_contact_list{
max-height: 40vh;
overflow-y: auto;
position: absolute;
top: 100%;
background: rgba(var(--foreground-color), 1);
z-index: 1;
border-radius: 0.4rem;
box-shadow: 0 0.1rem 0.1rem rgba(0, 0, 0, 0.1), 0 0.2rem 0.5rem rgba(0, 0, 0, 0.16);
width: 100%;
.contact{
grid-template-columns: auto 1fr;
grid-template-areas: 'dp .' 'dp .';
}
sm-menu{
display: none;
}
}
#contacts{
position: relative;
#all_contacts{
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
z-index: 1;
background: rgba(var(--foreground-color), 1);
.header{
padding-top: 0.7rem;
}
}
.option{
display: flex;
align-items: center;
padding: 1rem 1.5rem;
.icon{
margin-right: 1rem;
stroke: rgba(var(--text-color), 0.7);
}
}
.scrolling-wrapper{
height: 100%;
flex: 1;
overflow-y: auto;
}
#contacts_container{
padding-bottom: 6rem;
&::before{
display: flex;
content: 'Contacts';
font-size: 0.9em;
color: rgba(var(--text-color), 0.9);
padding: 1rem 1.5rem;
}
}
}
#selected_contacts{
padding: 1.5rem;
background: rgba(var(--text-color), 0.06);
h4{
font-weight: 500;
font-size: 1rem;
}
sm-button{
margin-bottom: 0;
}
}
#selected_contacts_container{
display: grid;
grid-template-columns: repeat(auto-fill, minmax(3rem, 1fr));
gap: 1rem;
max-height: 8rem;
overflow-y: auto;
}
#contacts, #mails{
position: relative;
grid-template-rows: max-content 1fr;
}
#contacts, #mails, #settings_page{
height: 100%;
overflow-y: hidden;
.header{
//background: rgba(var(--text-color), 0.06);
padding: 1rem 1.5rem 1rem 1.5rem;
position: relative;
gap: 0.5rem;
min-height: 4rem;
// margin-bottom: 1rem;
sm-tab::part(tab){
padding: 0.8rem 1rem;
}
.expanding-search{
position: absolute;
width: 100%;
padding: 0.7rem 1.5rem;
background: rgba(var(--foreground-color), 1);
transform: scale(0.9);
opacity: 0;
pointer-events: none;
transition: opacity 0.3s, transform 0.3s;
&.expand{
transform: none;
opacity: 1;
pointer-events: all;
}
}
sm-input{
margin: 0;
width: 100%;
.icon{
stroke: rgba(var(--text-color), 0.5);
height: 0.9rem;
width: 0.9rem;
}
}
sm-input::part(input){
border-radius: 0.5rem;
padding: 0.2rem 0.8rem;
}
h4{
text-transform: capitalize;
font-weight: 500;
}
.icon{
-webkit-tap-highlight-color: transparent;
}
.flex{
.hamburger-menu-button{
-webkit-tap-highlight-color: transparent;
margin-right: 1rem;
}
h4{
flex: 1;
}
.icon{
height: 2.2rem;
width: 2.2rem;
padding: 0.6rem;
margin-left: -0.4rem;
cursor: pointer;
}
sm-menu{
margin-right: -0.7rem;
}
}
sm-button{
margin: 0;
.icon{
height: 0.9rem;
width: 0.9rem;
align-self: center;
stroke-width: 8;
margin-left: 0;
margin-right: 0.5rem;
}
}
}
}
#chat_page{
overflow: hidden;
}
#chat_left,
#chat_details_panel{
position: relative;
display: flex;
flex-direction: column;
height: 100%;
overflow-y: auto;
}
#chat_details_panel{
background: rgba(var(--text-color), 0.04);
padding-bottom: 1.5rem;
.card{
margin: 0 1rem;
padding: 1.5rem 1rem;
border-radius: 0.8rem;
background: rgba(var(--text-color), 0.04);
&:not(:last-of-type){
margin-bottom: 1rem;
}
.h4{
font-weight: 400;
font-size: 0.9rem;
color: rgba(var(--text-color), 0.8);
margin-bottom: 0.5rem;
}
& > .flex{
margin-bottom: 1rem;
.h4{
margin-bottom: 0;
}
}
.tip{
margin-bottom: 0.5rem;
}
}
header{
position: sticky;
top: 0;
padding: 1rem;
min-height: 4rem;
backdrop-filter: blur(1rem);
z-index: 1;
.icon{
height: 2.3rem;
width: 2.3rem;
padding: 0.7rem;
cursor: pointer;
}
}
.contact{
padding: 0.5rem 0;
}
#chat_profile{
display: grid;
place-items: center;
margin-top: 5.5rem;
padding-bottom: 1.5rem;
.initial{
margin-top: -5.5rem;
margin-bottom: 1rem;
height: 8rem;
width: 8rem;
border-radius: 50%;
font-size: 4rem;
.icon{
height: 4rem;
width: 4rem;
}
}
#chat_name{
font-weight: 500;
font-size: 1.2rem;
}
#last_interaction_time{
color: rgba(var(--text-color), 0.7);
font-size: 0.9rem;
margin-top: 0.5rem;
}
}
.copy{
font-weight: 400;
}
}
#group_members_list{
max-height: 50vh;
overflow-y: auto;
}
#chat{
position: relative;
grid-template-columns: 1fr;
.message{
position: relative;
display: flex;
flex-direction: column;
width: auto;
font-size: 0.92rem;
max-width: max-content;
margin-bottom: 0.2rem;
margin-top: 0.8rem;
padding: 0.6em 1em;
transition: opacity 0.3s, transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
.sender-name{
font-size: 0.85rem;
font-weight: 500;
margin-bottom: 0.3rem;
}
.message-body{
display: flex;
align-items: center;
flex-wrap: wrap;
overflow-wrap: break-word;
word-wrap: break-word;
word-break: break-all;
word-break: break-word;
-moz-hyphens: auto;
-webkit-hyphens: auto;
hyphens: auto;
white-space: pre-wrap;
line-height: 1.5;
a{
color: inherit;
}
.text-emoji{
align-self: center;
font-size: 1.4em;
letter-spacing: 0ch;
}
}
.time{
white-space: nowrap;
font-size: 0.8em;
opacity: 0.8;
justify-self: flex-end;
padding-left: 1rem;
align-self: flex-end;
margin-top: 0.2rem;
}
}
.sent{
margin-left: auto;
color: #efefef;
background: var(--accent-color);
border-radius: 0.8rem 0 0.8rem 0.8rem;
&::after{
content: '';
position: absolute;
left: 100%;
top: 0;
width: 0;
height: 0;
border-style: solid;
border-width: 0.5em 0.3em 0 0;
border-color: var(--accent-color) transparent transparent transparent;
}
}
.received{
margin-right: auto;
background: rgba(var(--text-color), 0.1);
border-radius: 0 0.8rem 0.8rem 0.8rem;
&::after{
content: '';
position: absolute;
left: -0.5em;
top: 0;
width: 0;
height: 0;
border-style: solid;
border-width: 0 0.5em 0.5em 0;
border-color: transparent rgba(var(--text-color), 0.1) transparent transparent;
}
}
.sent + .sent,
.received + .received{
margin-top: 0;
}
.sent + .sent::after,
.received + .received::after{
display: none;
}
.sent + .sent,
.received + .received{
border-radius: 0.8rem;
}
.unconfirmed{
opacity: 0.7;
transform-origin: left;
animation: pop .3s forwards cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
}
@keyframes pop{
0%{
transform: rotate(5deg) translate(-0.5rem, 1rem)
}
100%{
transform: rotate(0) translate(0, 0)
}
}
#chat_header{
padding: 1rem;
min-height: 4rem;
grid-template-columns: auto 1fr auto;
.back-button{
height: 2rem;
width: 2rem;
padding: 0.5rem;
stroke-width: 8;
margin-right: 0.5rem;
stroke: rgba(var(--text-color), 0.8);
}
.initial{
cursor: pointer;
margin-right: 1rem;
height: 2.2rem;
width: 2.2rem;
flex-shrink: 0;
}
#receiver_name{
font-weight: 500;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
#scroll_to_bottom{
position: absolute;
display: flex;
right: 0;
bottom: 4rem;
border-radius: 4rem;
z-index: 1;
aspect-ratio: 1/1;
margin: 1.5rem;
cursor: pointer;
transform: scale(0);
transition: transform 0.3s;
&.new-message::after{
position: absolute;
content: '';
top: 0;
right: 0;
z-index: 2;
padding: 0.5rem;
border-radius: 50%;
background: #00E676;
}
.icon{
width: 2.6rem;
height: 2.6rem;
padding: 0.9rem;
stroke-width: 8;
}
}
#chat_footer{
#emoji_toggle{
align-self: center;
padding: 0.6rem;
margin-right: 0.5rem;
width: 2.6rem;
height: 2.6rem;
border-radius: 2rem;
cursor: pointer;
path{
fill: rgba(var(--text-color), 0.5);
}
&.active path{
fill: var(--accent-color);
}
}
.flex{
align-items: flex-end;
padding: 1rem 1rem 1rem 0.4rem;
}
sm-textarea::part(textarea){
padding-right: 3rem;
border-radius: 0.5rem;
}
}
#send_message_button{
position: absolute;
right: 1.5rem;
transform: scale(0);
opacity: 0;
pointer-events: none;
z-index: 1;
align-self: center;
height: 2.4rem;
width: 2.4rem;
padding: 0.5rem;
cursor: pointer;
stroke: none;
fill: rgba(var(--text-color), 0.4);
margin-left: 1rem;
transition: 0.3s;
&.active{
opacity: 1;
fill: var(--accent-color);
transform: none;
pointer-events: all;
}
}
#type_message{
margin: 0;
}
.big-emoji{
.message-body{
font-size: 2.6rem;
}
}
#chat_middle{
flex: 1;
padding: 0 1rem;
}
#emoji_picker{
display: grid;
gap: 1rem;
background: rgba(var(--text-color), 0.06);
border-radius: 1rem;
margin: 0 1rem;
box-shadow: 0 0.2rem 0.8rem rgba(0, 0, 0, 0.3);
overflow-y: auto;
max-height: 30vh;
section{
display: grid;
grid-template-columns: repeat(auto-fill, minmax(3.6rem, 1fr));
gap: 0.5rem;
padding: 0 1rem;
width: 100%;
}
.section-header{
grid-column: 1/-1;
position: sticky;
top: 0;
background: linear-gradient(rgba(var(--text-color), 0.06), rgba(var(--text-color), 0.06)), rgba(var(--foreground-color), 1);
padding: 1rem 0;
z-index: 1;
user-select: none;
}
}
.emoji{
font-size: 1.6rem;
cursor: pointer;
padding: 0.4rem;
border-radius: 0.6rem;
user-select: none;
text-align: center;
}
#new_conversation, #no_mails{
height: 100%;
justify-content: center;
text-align: center;
padding: 1.5rem;
p{
margin-top: 0.8rem;
}
}
#no_mails{
.new-conversation{
height: 7rem;
margin-bottom: 1rem;
}
}
.new-conversation{
height: 8rem;
width: 8rem;
align-self: center;
stroke-width: 16;
stroke: rgba(var(--text-color), 0.4);
}
#chat_middle,
#chat_container,
#inbox_mail_container,
#sent_mail_container,
#mail{
width: 100%;
flex-direction: column;
height: 100%;
overflow-y: auto;
}
#chat_container:empty{
display: none;
}
#chat_container:not(:empty) ~ .empty-state{
display: none;
}
#chat_container{
padding-bottom: 6rem;
}
#contacts_popup::part(popup-body){
padding: 0;
}
sm-tab-panels{
overflow: hidden auto;
}
sm-panel{
width: 100%;
overflow-y: auto;
}
#inbox_mail_container,
#sent_mail_container
{
padding-bottom: 6rem;
}
#chat, #mail{
background: rgba(var(--foreground-color), 1);
}
#mail{
height: 100vh;
padding: 0 1.5rem;
align-items: flex-start;
.flex{margin-top: 1rem;
sm-button:first-of-type{
margin-right: 0.5rem;
}
}
}
#compose_mail_popup{
sm-input{
margin-bottom: 1rem;
}
}
.sidebar-item{
display: flex;
align-items: center;
padding: 1rem 1.5rem;
text-transform: capitalize;
font-weight: 500;
opacity: 0.9;
.icon{
margin-right: 1em;
width: 1em;
}
}
.back{
padding: 0.7rem;
height: 2.4rem;
width: 2.4rem;
margin-left: -0.5rem;
cursor: pointer;
stroke-width: 8;
opacity: 0.8;
-webkit-tap-highlight-color: transparent;
&:hover{
opacity: 1;
}
}
#settings_page{
#settings_sidebar header{
padding: 1rem 1.5rem;
}
.flex sm-button{
margin: 0;
margin-left: 1rem;
}
sm-switch{
padding-left: 1rem;
}
sm-button{
width: 100%;
}
#settings_title{
text-transform: capitalize;
}
#settings_sidebar{
height: 100%;
}
#settings_panel{
padding: 0 1.5rem;
}
section{
max-width: 50ch;
display: grid;
gap: .3rem;
sm-button{
margin-top: 0.5rem;
margin-bottom: 0;
}
&:not(:last-of-type){
margin-bottom: 2rem;
}
&.setting-toggle{
grid-template-columns: 1fr auto;
sm-switch{
grid-column: 2;
grid-row: 1/3;
}
& > h4,
& > p{
grid-column: 1;
}
}
}
#sign_out::part(button){
color: var(--error-color);
}
}
@media screen and (max-width: 640px){
.hide-on-mobile{
position: fixed;
max-height: 0;
opacity: 0;
pointer-events: none;
}
#landing{
grid-template-areas: 'illustration' '.';
align-items: flex-start;
.title-font{
text-align: center;
font-size: 2rem;
font-weight: 500;
}
.left p {
text-align: center;
}
sm-button{
width: 100%;
display: flex;
width: 100% !important;
}
}
#sing_in{
max-height: 90vh;
}
#landing_illustration{
grid-area: illustration;
}
#main_navbar{
transform: translateX(-110%);
transition: transform 0.3s;
z-index: 4;
box-shadow: 0 0 1rem rgba(0, 0, 0, 0.3);
.logo-section{
padding: 1rem;
}
}
#navbar_backdrop{
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.3);
z-index: 2;
transition: transform 0.3s, opacity 0.3s;
}
#chat_container,
#contact_container{
gap: 0.2rem;
}
#chat{
.message{
width: auto;
max-width: 90%;
}
}
#settings_page{
overflow-x: hidden;
#settings_panel header{
position: sticky;
top: 0;
padding: 1rem 0;
margin-bottom: 0.5rem;
background: rgba(var(--foreground-color), 1);
}
}
}
@media only screen and (min-width: 640px){
.hide-on-desktop{
display: none !important;
}
.page{
padding-bottom: 0;
}
.popup-header{
padding-top: 1.5rem;
}
.fab{
position: absolute;
}
.logo-section{
padding: 2rem 3rem 0 3rem;
margin: 0.5rem 0;
}
sm-popup::part(popup){
width: 24rem;
min-width: 24rem;
}
#landing{
align-items: center;
gap: 4vw;
grid-template-columns: 1fr 1fr;
padding: 0 4vw;
.left{
h4{
color: var(--accent-color);
}
}
}
#main_navbar{
position: relative;
width: auto;
padding-bottom: 0.5rem;
background: rgba(var(--text-color), 0.06);
.logo-section{
display: flex;
justify-content: center;
margin: 1.5rem 0 2rem 0;
.main-logo{
margin: 0;
}
}
.navbar-item{
margin: 0 0.5rem;
border-radius: 0.8rem;
.icon{
margin-right: 0;
}
}
.label{
display: none;
}
}
#add_contact_popup::part(popup){
min-width: 24rem;
}
#compose_mail_popup::part(popup),
#reply_mail_popup::part(popup){
min-width: 36rem;
}
#main{
width: 100vw;
height: 100vh;
grid-template-columns: auto 1fr;
}
#emoji_picker{
max-height: 18rem;
}
#chat{
.message{
width: auto;
align-self: flex-start;
max-width: 55ch;
}
}
#chat_page, #mail_page{
grid-template-columns: 20rem 1fr;
}
#settings_page{
display: grid;
height: 100vh;
grid-template-columns: 14rem 1fr;
sm-button{
width: max-content;
}
#settings_panel{
padding: 1.5rem;
}
.active{
background: rgba(var(--text-color), 0.1);
}
}
.contact.active,
.mail-card.active{
background: rgba(var(--text-color), 0.06);
}
.card{
display: inline-flex;
width: auto;
}
#settings_panel{
overflow-y: auto;
max-height: 100vh;
}
}
@media only screen and (max-width: 1280px){
.hide-on-medium{
display: none !important;
}
}
@media only screen and (min-width: 1080px){
#chat{
#messages_container{
padding: 1rem 5rem;
}
}
}
@media only screen and (min-width: 1280px){
#landing{
gap: 4vw;
padding: 0 8vw;
.title-font{
font-size: 3rem;
}
}
#chat_page, #mail_page{
grid-template-columns: 21rem 1fr;
}
#chat_details_panel{
position: relative;
}
#chat{
&.expand-side-panel{
grid-template-columns: 1fr 24rem;
#messages_container{
padding: 1rem;
}
}
}
.contact.active,
.mail-card.active{
background: rgba(var(--text-color), 0.06);
}
.card{
display: inline-flex;
width: auto;
}
#settings_panel{
overflow-y: auto;
max-height: 100vh;
}
}
@media (hover: hover){
::-webkit-scrollbar{
width: 0.5rem;
}
::-webkit-scrollbar-thumb{
background: rgba(var(--text-color), 0.3);
border-radius: 1rem;
&:hover{
background: rgba(var(--text-color), 0.5);
}
}
.navbar-item:hover,
.contact:hover,
.emoji:hover{
cursor: pointer;
background: rgba(var(--text-color), 0.06);
}
.contact{
.menu{
opacity: 0;
transition: opacity 0.3s;
}
}
.contact:hover{
.menu{
opacity: 1;
}
}
}
@media (hover: none){
.contact .menu{
display: none;
}
}