xmpp.chapril.org-conversejs/sass/_core.scss
JC Brand 7651d58470 Render chat messages as web components
- Render chat content as a <converse-chat-content> component
- Create new component for rendering the message body
- Get rid of `showMessage` method
2020-06-01 09:53:19 +02:00

702 lines
16 KiB
SCSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@mixin fade-in {
opacity: 0; /* make things invisible upon start */
animation-name: fadein;
animation-fill-mode: forwards;
animation-duration: 0.75s;
animation-timing-function: ease;
}
body.converse-fullscreen {
margin: 0;
background-color: var(--global-background-color);
}
#conversejs-bg {
.converse-brand {
display: flex;
justify-content: space-between;
margin-top: 15vh;
animation-name: fadein;
animation-fill-mode: forwards;
animation-duration: 5s;
animation-timing-function: ease;
}
.converse-brand__padding {
@include make-col-ready();
@include media-breakpoint-up(md) {
@include make-col(4);
}
@include media-breakpoint-up(lg) {
@include make-col(3);
}
@include media-breakpoint-up(xl) {
@include make-col(2);
}
padding: 0;
}
.converse-brand__heading {
@include make-col-ready();
@include media-breakpoint-up(md) {
font-size: 4em;
@include make-col(8);
}
@include media-breakpoint-up(lg) {
font-size: 5em;
@include make-col(9);
}
@include media-breakpoint-up(xl) {
font-size: 6em;
@include make-col(10);
}
padding: 0;
display: flex;
justify-content: center;
margin: auto;
svg {
margin-top: 0.3em;
}
}
.converse-brand__text {
color: #ffffff;
font-family: var(--branding-font);
font-weight: normal;
text-align: center;
font-size: 140%;
margin-left: 0.2em;
.byline {
margin: 0;
font-family: var(--heading-font);
font-size: 0.3em;
opacity: 0.55;
margin-bottom: 2em;
margin-left: -2.7em;
word-spacing: 5px;
}
}
}
#conversejs-bg, #conversejs {
.subdued {
opacity: 0.35;
}
}
#conversejs {
bottom: 0;
height: 100%;
position: fixed;
padding-left: env(safe-area-inset-left);
padding-right: env(safe-area-inset-right);
color: var(--text-color);
font-family: var(--normal-font);
font-size: var(--font-size);
direction: ltr;
z-index: 1031; // One more than bootstrap navbar
textarea:disabled {
background-color: #EEE !important;
}
.smooth-scroll {
scroll-behavior: smooth !important;
}
.nopadding {
padding: 0 !important;
}
&.converse-overlayed {
> .row {
flex-direction: row-reverse;
}
}
&.converse-fullscreen,
&.converse-mobile {
.converse-chatboxes {
width: 100vw;
left: -15px; // Hack due to padding added by bootstrap
}
}
&.converse-overlayed {
height: 3em;
}
&.converse-embedded {
box-sizing: border-box;
*, *:before, *:after {
box-sizing: border-box;
}
bottom: auto;
height: 100%; // When embedded, it fills the containing element
position: relative;
right: auto;
width: 100%;
}
.brand-heading-container {
text-align: center;
}
.brand-heading {
display: inline-flex;
flex-direction: row;
align-items: flex-start;
font-family: var(--branding-font);
color: var(--link-color);
margin-bottom: 1em;
.brand-name {
color: var(--link-color);
display: flex;
flex-direction: column;
align-items: center;
margin-top: -0.5em;
}
.brand-name__text {
font-size: 120%;
vertical-align: text-bottom;
}
.converse-svg-logo {
color: var(--link-color);
height: 1.5em;
margin-right: 0.25em;
margin-bottom: -0.25em;
.cls-1 {
isolation: isolate;
}
.cls-2 {
opacity: 0.5;
mix-blend-mode: multiply;
}
.cls-3 {
fill: var(--link-color);
}
.cls-4 {
fill: var(--link-color);
}
}
}
.brand-heading--inverse {
.converse-svg-logo {
margin-bottom: 0em;
margin-top: -0.2em;
}
.byline {
margin: 0;
font-family: var(--heading-font);
font-size: 0.25em;
opacity: 0.55;
margin-left: -7em;
word-spacing: 5px;
}
}
.dropdown-item {
padding: 0.5rem 1rem;
.fa {
width: 1.25em;
margin-right: 0.75rem;
}
&:active, &.selected {
color: white !important;
background-color: var(--list-item-open-color);
.fa {
color: white !important;
}
}
}
.popover {
position: fixed;
}
.converse-chatboxes {
z-index: 1031; // One more than bootstrap navbar
position: fixed;
bottom: 0;
right: 0;
}
::-webkit-input-placeholder { /* Chrome/Opera/Safari */
color: var(--subdued-color);
}
::-moz-placeholder { /* Firefox 19+ */
color: var(--subdued-color);
}
:-ms-input-placeholder { /* IE 10+ */
color: var(--subdued-color);
}
:-moz-placeholder { /* Firefox 18- */
color: var(--subdued-color);
}
::placeholder {
color: var(--subdued-color);
}
::selection {
background-color: var(--highlight-color);
}
::-moz-selection {
background-color: var(--highlight-color);
}
@media screen and (max-width: $mobile-portrait-length) {
margin: 0;
right: 10px;
left: 10px;
bottom: 5px;
}
@media screen and (max-height: $mobile-landscape-height) {
margin: 0;
right: 10px;
left: 10px;
bottom: 5px;
}
ul li { height: auto; }
div, span, h1, h2, h3, h4, h5, h6, p, blockquote,
pre, a, em, img, strong, dl, dt, dd, ol, ul, li,
fieldset, form, legend, table, caption, tbody,
tfoot, thead, tr, th, td, article, aside, details,
embed, figure, figcaption, footer, header, hgroup, menu,
nav, output, ruby, section, summary, time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font: inherit;
vertical-align: baseline;
}
textarea,
input[type=submit], input[type=button],
input[type=text], input[type=password],
button {
font-size: var(--font-size);
min-height: 0;
}
strong {
font-weight: 700;
}
em {
font-style: italic;
}
ol, ul {
list-style: none;
}
li {
height: 10px;
}
ul, ol, dl {
font: inherit;
margin: 0;
}
a {
cursor: pointer;
}
a, a:visited, a:not([href]):not([tabindex]) {
text-decoration: none;
color: var(--link-color);
text-shadow: none;
cursor: pointer;
&:hover {
color: var(--link-hover-color);
text-decoration: none;
text-shadow: none;
}
&.fa, &.far, &.fas {
color: var(--subdued-color);
&:hover {
color: var(--gray-color);
}
}
}
svg {
border-radius: var(--chatbox-border-radius);
}
.fa, .far, .fas {
color: var(--subdued-color);
}
.fa:hover, .far:hover, .fas:hover {
color: var(--gray-color);
}
q {
quotes: "" "" "" "";
&.reason {
display: inline;
}
}
q:before {
content: open-quote;
}
q:after {
content: close-quote;
}
.helptext {
font-size: var(--font-size-tiny);
color: var(--text-color-lighten-15-percent);
}
.selected {
color: var(--link-color) !important;
}
.circle {
border-radius: 50%;
}
.badge {
line-height: 1;
font-weight: normal;
font-size: 90%;
}
.btn {
font-weight: normal;
color: #fff;
.fa, .far, .fas {
color: #fff;
margin-right: 0.5em;
&.only-icon {
margin-right: 0;
}
}
}
.no-text-select {
-webkit-touch-callout: none;
user-select: none;
}
@keyframes colorchange-chatmessage {
0% {background-color: rgba(141, 216, 174, 1);}
25% {background-color: rgba(141, 216, 174, 0.75);}
50% {background-color: rgba(141, 216, 174, 0.5);}
75% {background-color: rgba(141, 216, 174, 0.25);}
100% {background-color: transparent;}
}
@-webkit-keyframes colorchange-chatmessage {
0% {background-color: rgba(141, 216, 174, 1);}
25% {background-color: rgba(141, 216, 174, 0.75);}
50% {background-color: rgba(141, 216, 174, 0.5);}
75% {background-color: rgba(141, 216, 174, 0.25);}
100% {background-color: transparent;}
}
@keyframes colorchange-chatmessage-muc {
0% {background-color: rgba(255, 181, 162, 1);}
25% {background-color: rgba(255, 181, 162, 0.75);}
50% {background-color: rgba(255, 181, 162, 0.5);}
75% {background-color: rgba(255, 181, 162, 0.25);}
100% {background-color: transparent;}
}
@-webkit-keyframes colorchange-chatmessage-muc {
0% {background-color: rgba(255, 181, 162, 1);}
25% {background-color: rgba(255, 181, 162, 0.75);}
50% {background-color: rgba(255, 181, 162, 0.5);}
75% {background-color: rgba(255, 181, 162, 0.25);}
100% {background-color: transparent;}
}
@keyframes fadein {
0% { opacity: 0 }
100% { opacity: 1 }
}
@-webkit-keyframes fadein {
0% { opacity: 0 }
100% { opacity: 1 }
}
@-webkit-keyframes fadeOut {
0% { opacity: 1; visibility: visible; }
100% { opacity: 0; visibility: hidden; }
}
@keyframes fadeOut {
0% { opacity: 1; visibility: visible; }
100% { opacity: 0; visibility: hidden; }
}
.fade-in {
@include fade-in;
}
.visible {
opacity:0; /* make things invisible upon start */
animation-name: fadein;
animation-fill-mode: forwards;
animation-duration: 500ms;
animation-timing-function: ease;
}
.hidden {
opacity: 0 !important;
display: none !important;
}
.fade-out {
animation-duration: 0.5s;
animation-fill-mode: forwards;
animation-name: fadeOut;
animation-timing-function: ease-in-out;
}
.collapsed {
height: 0 !important;
overflow: hidden !important;
padding: 0 !important;
}
.locked {
padding-right: 22px;
}
@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(359deg);
}
}
.spinner {
animation: spin 2s infinite, linear;
width: 1em;
display: block;
text-align: center;
padding: 0.5em 0;
font-size: 24px;
}
.left {
float: left;
}
.right {
float: right;
}
.centered {
text-align: center;
display: block;
margin: auto;
}
.hor_centered {
text-align: center;
display: block;
margin: 0 auto;
clear: both;
}
.error {
color: var(--error-color) !important;
}
.info {
color: var(--info-color);
}
.reg-feedback {
font-size: 85%;
margin-bottom: 1em;
}
.reg-feedback,
#converse-login .conn-feedback {
display: block;
text-align: center;
width: 100%;
}
.avatar {
border-radius: var(--avatar-border-radius);
border: var(--avatar-border);
background-color: var(--avatar-background-color);
}
.avatar-autocomplete {
margin-right: 0.5em;
vertical-align: middle;
}
.activated {
display: block !important;
}
.form-help {
color: var(--subdued-color);
font-size: 90%;
}
.form-control--labeled {
margin-top: 0.5em;
}
.nav-pills .nav-link.active,
.nav-pills .show > .nav-link {
background-color: var(--primary-color);
}
.list-group-item.active {
background-color: var(--primary-color);
border-color: var(--primary-color-dark);
}
.badge {
text-shadow: none;
color: white;
}
.badge-light {
color: var(--text-color);
}
.btn-primary, .button-primary, .badge-primary {
background-color: var(--primary-color);
border-color: transparent;
&:focus, &:hover, &:active {
background-color: var(--primary-color-dark) !important;
border-color: transparent !important;
}
}
.btn--transparent {
background: transparent;
border: none;
}
.btn-circle {
width: 30px;
height: 30px;
text-align: center;
padding: 0.5em 0;
font-size: var(--font-size-small);
line-height: 1.428571429;
border-radius: 50%;
}
.btn {
&.fa {
color: white !important;
}
}
.badge-groupchat {
background-color: var(--chatroom-badge-color);
border-color: transparent;
&:hover {
background-color: var(--chatroom-badge-hover-color);
border-color: transparent;
}
&.active {
background-color: var(--chatroom-badge-hover-color) !important;
border-color: transparent !important;
}
}
.btn-info, .badge-info {
background-color: var(--primary-color);
border-color: var(--primary-color);
&:hover {
background-color: var(--primary-color-dark);
border-color: var(--primary-color-dark);
}
}
.button-cancel,
.btn-secondary, .badge-secondary {
color: white;
background-color: var(--secondary-color);
border-color: var(--secondary-color);
&:hover {
background-color: var(--secondary-color-dark);
border-color: var(--secondary-color-dark);
}
}
.btn-warning {
color: white;
background-color: var(--warning-color);
border-color: var(--warning-color);
&:hover {
color: white;
background-color: var(--warning-color-dark);
border-color: var(--warning-color-dark)
}
}
.btn-danger {
color: white;
background-color: var(--danger-color);
border-color: var(--danger-color) !important;
&:hover {
background-color: var(--danger-color-dark);
border-color: var(--danger-color-dark);
}
}
}
@media screen and (max-width: 575px) {
body {
.converse-brand {
font-size: 3.75em;
}
}
#conversejs:not(.converse-embedded) {
.chatbox {
.chat-body {
border-radius: var(--chatbox-border-radius);
}
}
.flyout {
border-radius: var(--chatbox-border-radius);
}
}
}
@media screen and (min-width: 576px) {
#conversejs .offset-sm-2 {
margin-left: 16.666667%;
}
}
@media screen and (min-width: 768px) {
#conversejs .offset-md-2 {
margin-left: 16.666667%;
}
#conversejs .offset-md-3 {
margin-left: 25%;
}
}
@media screen and (min-width: 992px) {
#conversejs .offset-lg-2 {
margin-left: 16.666667%;
}
#conversejs .offset-lg-3 {
margin-left: 25%;
}
}
@media screen and (min-width: 1200px) {
#conversejs .offset-xl-2 {
margin-left: 16.666667%;
}
}
@media screen and (max-height: 450px) {
#conversejs {
left: 0;
}
}