xmpp.chapril.org-conversejs/sass/_core.scss
JC Brand 023249f62e Render profile avatar as canvas.
We now have uniform avatar rendering for the profile, messages and
chatboxes.

By rendering as canvas, we can avoid stretching the image.

In the process I also moved the ChatBoxViews collection into its own
plugin `converse-chatboxviews` and placed the AvatarAware views there.

fixes #1157
2018-09-06 15:33:13 +02:00

493 lines
11 KiB
SCSS

@mixin fade-in {
opacity: 0; /* make things invisible upon start */
@include animation-name(fadein);
@include animation-fill-mode(forwards);
@include animation-duration(0.75s);
@include animation-timing-function(ease);
}
body.reset {
margin: 0;
}
@font-face {
font-family: 'Converse-js';
src: url($font-path + 'icomoon.eot?wvi0ht');
src: url($font-path + 'icomoon.eot?wvi0ht#iefix') format('embedded-opentype'),
url($font-path + 'icomoon.ttf?wvi0ht') format('truetype'),
url($font-path + 'icomoon.woff?wvi0ht') format('woff'),
url($font-path + 'icomoon.svg?wvi0ht#icomoon') format('svg');
font-weight: normal;
font-style: normal;
}
.icon-conversejs {
padding-right: 0.5em;
font-family: 'Converse-js';
font-size: 80%;
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
/* Better Font Rendering =========== */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-conversejs:before {
content: "\e600";
}
.converse-brand-heading {
font-family: $heading-font;
font-size: 6em;
font-weight: normal;
.icon-conversejs {
font-size: 60%;
}
}
#conversejs {
bottom: 0;
height: 100%;
position: fixed;
padding-left: env(safe-area-inset-left);
padding-right: env(safe-area-inset-right);
color: $text-color;
font-family: "Helvetica", "Arial", sans-serif;
font-size: $font-size;
direction: ltr;
z-index: 1031; // One more than bootstrap navbar
.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;
}
.brand-heading {
font-family: $heading-font;
.icon-conversejs {
font-size: 80%;
}
}
.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: $subdued-color;
}
::-moz-placeholder { /* Firefox 19+ */
color: $subdued-color;
}
:-ms-input-placeholder { /* IE 10+ */
color: $subdued-color;
}
:-moz-placeholder { /* Firefox 18- */
color: $subdued-color;
}
::placeholder {
color: $subdued-color;
}
::selection {
background-color: $highlight-color;
}
::-moz-selection {
background-color: $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, canvas, 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: $font-size;
padding: 0.25em;
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, a:visited, a:not([href]):not([tabindex]) {
text-decoration: none;
color: $link-color;
text-shadow: none;
&:hover {
color: darken($link-color, 20%);
text-decoration: none;
text-shadow: none;
}
&.fa, &.far, &.fas {
color: $subdued-color;
&:hover {
color: $gray-color;
}
}
}
canvas {
border-radius: $chatbox-border-radius;
}
.fa, .far, .fas {
color: $subdued-color;
}
.fa:hover, .far:hover, .fas:hover {
color: $gray-color;
}
.modal {
background-color: rgba(0, 0, 0, 0.4);
.modal-body {
p {
padding: 0.25rem 0;
}
}
}
.selected {
color: $link-color !important;
}
.circle {
border-radius: 50%;
}
.sidebar {
display: none;
width: 50px;
height: 100vh;
padding: 1rem 0;
background-color: $controlbox-head-color;
color: white;
text-align: center;
.chatbox-btn {
float: none;
margin: 0;
font-size: 1.35em;
&.fa-vcard {
margin-top: 1em;
}
}
.bottom {
position: absolute;
bottom: 1em;
}
}
.badge {
line-height: 1;
font-weight: normal;
font-size: 90%;
}
.btn {
font-family: $heading-font;
font-weight: normal;
color: #fff;
.fa, .far, .fas {
color: #fff;
margin-right: 0.5em;
}
}
.no-text-select {
-webkit-touch-callout: none;
@include 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 */
@include animation-name(fadein);
@include animation-fill-mode(forwards);
@include animation-duration(500ms);
@include animation-timing-function(ease);
}
.hidden {
opacity: 0 !important;
display: none !important;
}
.fade-out {
animation-duration: 1s;
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;
}
@include keyframes(spin) {
from {
@include transform(rotate(0deg));
}
to {
@include transform(rotate(359deg));
}
}
.spinner {
@include animation(spin 2s infinite, linear);
display: block;
text-align: center;
margin: 2em;
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: $error-color;
}
.info {
color: $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: 10%;
border: 1px solid lightgrey;
background: white;
}
.activated {
display: block !important;
}
.button-primary {
color: white;
background-color: $primary-color;
}
.button-secondary {
color: white;
background-color: $secondary-color;
}
.button-cancel {
color: white;
background-color: $text-color;
}
.chat-textarea-chatbox-selected {
border: 1px solid #578308;
margin: 0;
}
.chat-textarea-chatroom-selected {
border: 2px solid $link-color;
margin: 0;
}
}
@media screen and (max-width: 575px) {
body {
.converse-brand-heading {
font-size: 3.75em;
}
}
#conversejs:not(.converse-embedded) {
.chatbox {
.chat-body {
border-radius: $chatbox-border-radius;
}
}
.flyout {
border-radius: $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;
}
}