Telegram Web K with changes to work inside I2P
https://web.telegram.i2p/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
897 lines
18 KiB
897 lines
18 KiB
/* |
|
* https://github.com/morethanwords/tweb |
|
* Copyright (C) 2019-2021 Eduard Kuzmenko |
|
* https://github.com/morethanwords/tweb/blob/master/LICENSE |
|
*/ |
|
|
|
$btn-menu-z-index: 4; |
|
|
|
.btn, |
|
.btn-icon { |
|
background: none; |
|
outline: none; |
|
border: none; |
|
cursor: pointer; |
|
|
|
body.animation-level-0 & { |
|
transition: none; |
|
} |
|
|
|
@include btn-hoverable(); |
|
|
|
&:disabled { |
|
pointer-events: none !important; |
|
opacity: var(--disabled-opacity); |
|
} |
|
} |
|
|
|
.btn-icon { |
|
text-align: center; |
|
font-size: 1.5rem; |
|
line-height: 1; |
|
border-radius: 50% !important; |
|
color: var(--secondary-text-color); |
|
background-color: transparent; |
|
border: none; |
|
padding: .5rem; |
|
position: relative; |
|
// overflow: hidden; |
|
transition: color .15s ease-in-out, opacity .15s ease-in-out/* , background-color .15s ease-in-out */; |
|
|
|
/* kostil */ |
|
display: flex; |
|
align-items: center; |
|
justify-content: center; |
|
|
|
&.rp { |
|
overflow: hidden; |
|
} |
|
|
|
&.active { |
|
color: var(--primary-color); |
|
} |
|
} |
|
|
|
.btn-corner { |
|
--offset: 1.25rem; |
|
--translateY: calc(54px + var(--offset)); |
|
position: absolute !important; |
|
bottom: var(--offset); |
|
inset-inline-end: var(--offset); |
|
//transition: .2s ease; |
|
transition: transform var(--btn-corner-transition) !important; |
|
transform: translate3d(0, var(--translateY), 0); |
|
z-index: 3; |
|
user-select: none; |
|
background-color: var(--primary-color); |
|
text-align: center; |
|
font-size: 1.5rem; |
|
color: #fff; |
|
border: none; |
|
outline: none; |
|
cursor: pointer; |
|
box-shadow: none !important; |
|
|
|
display: flex; |
|
align-items: center; |
|
justify-content: center; |
|
padding: 0 !important; |
|
|
|
@include hover() { |
|
background-color: var(--dark-primary-color); |
|
} |
|
|
|
&.is-visible { |
|
--translateY: 0; |
|
} |
|
|
|
body.animation-level-0 & { |
|
transition: none !important; |
|
} |
|
|
|
&:disabled { |
|
opacity: 1 !important; |
|
pointer-events: all !important; |
|
} |
|
|
|
.preloader-circular { |
|
width: 2.5rem; |
|
height: 2.5rem; |
|
} |
|
} |
|
|
|
.btn-menu { |
|
visibility: hidden; |
|
position: absolute; |
|
background-color: var(--menu-background-color); |
|
z-index: $btn-menu-z-index; |
|
top: 100%; |
|
padding: .3125rem 0; |
|
border-radius: $border-radius-medium; |
|
opacity: 0; |
|
transform: scale(.8) !important; |
|
transition: opacity var(--btn-menu-transition), transform var(--btn-menu-transition), visibility var(--btn-menu-transition); |
|
font-size: 1rem; |
|
backdrop-filter: var(--menu-backdrop-filter); |
|
min-width: 11.25rem; |
|
// max-width: 16.25rem; |
|
|
|
&-old, |
|
.is-mobile & { |
|
padding: .5rem 0; |
|
background-color: var(--surface-color); |
|
backdrop-filter: none; |
|
min-width: auto; |
|
|
|
.btn-menu-item { |
|
--padding-left: 1rem; |
|
--padding-right: 2.5rem; |
|
--icon-margin: 1.5rem; |
|
--icon-size: 1.5rem; |
|
height: 3rem; |
|
line-height: var(--line-height-16); |
|
font-size: var(--font-size-16); |
|
border-radius: 0; |
|
margin: 0; |
|
font-weight: 400; |
|
transform: none !important; |
|
|
|
&:before { |
|
color: var(--secondary-text-color); |
|
align-self: unset; |
|
margin-top: 0; |
|
} |
|
} |
|
|
|
.btn-menu-footer { |
|
background-color: var(--background-color); |
|
} |
|
} |
|
|
|
&/* , |
|
&-reactions */ { |
|
box-shadow: var(--menu-box-shadow); |
|
} |
|
|
|
body.animation-level-0 & { |
|
transition: none; |
|
} |
|
|
|
-webkit-user-select: none; /* disable selection/Copy of UIWebView */ |
|
-webkit-touch-callout: none; /* disable the IOS popup when long-press on a link */ |
|
|
|
&.active { |
|
visibility: visible; |
|
opacity: 1; |
|
transform: scale3d(1, 1, 1) !important; // * scale3d (NOT scale) will fix jumping text |
|
} |
|
|
|
.is-mobile &.was-open { |
|
transform: scale3d(1, 1, 1) !important; // * scale3d (NOT scale) will fix jumping text |
|
} |
|
|
|
/* &:not(.active) { |
|
&, .btn-menu-item { |
|
pointer-events: none !important; |
|
} |
|
} */ |
|
|
|
&.bottom-left, |
|
.is-rtl &.bottom-right { |
|
right: 0; |
|
left: auto; |
|
top: 100%; |
|
transform-origin: top right; |
|
} |
|
|
|
&.bottom-right, |
|
.is-rtl &.bottom-left { |
|
left: 0; |
|
right: auto; |
|
top: 100%; |
|
transform-origin: top left; |
|
} |
|
|
|
&.bottom-center { |
|
transform-origin: top center; |
|
} |
|
|
|
&.top-left { |
|
top: initial; |
|
right: 0; |
|
left: auto; |
|
bottom: 100%; |
|
transform-origin: bottom right; |
|
} |
|
|
|
&.top-right, |
|
.is-rtl &.top-left { |
|
top: initial; |
|
left: 0; |
|
right: auto; |
|
bottom: 100%; |
|
transform-origin: bottom left; |
|
} |
|
|
|
&.top-center { |
|
transform-origin: bottom center; |
|
} |
|
|
|
&.center-left { |
|
transform-origin: center right; |
|
} |
|
|
|
&.center-right { |
|
transform-origin: center left; |
|
} |
|
|
|
&-item { |
|
--padding-vertical: .25rem; |
|
--padding-left: .75rem; |
|
--padding-right: .75rem; |
|
--icon-margin: 1.25rem; |
|
--icon-size: 1.25rem; |
|
display: flex; |
|
position: relative; |
|
padding: var(--padding-vertical) var(--padding-right) var(--padding-vertical) var(--padding-left); |
|
height: 2rem; |
|
cursor: pointer !important; |
|
pointer-events: all !important; |
|
color: var(--primary-text-color); |
|
text-transform: none; |
|
white-space: nowrap; |
|
// overflow: hidden; |
|
// text-overflow: ellipsis; |
|
align-items: center; |
|
text-align: start; |
|
font-size: var(--font-size-14); |
|
line-height: var(--line-height-14); |
|
border-radius: .3125rem; |
|
margin-inline: .3125rem; |
|
font-weight: 500; |
|
transform: scale(1); |
|
|
|
&.tgico-char:before { |
|
width: var(--icon-size); |
|
} |
|
|
|
@include animation-level(2) { |
|
transition: transform var(--btn-menu-transition); |
|
} |
|
|
|
&:active { |
|
transform: scale(.96); |
|
} |
|
|
|
// background-blend-mode: overlay, normal; |
|
// @include hover() { |
|
// background: linear-gradient(0deg, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2)), rgba(0, 0, 0, 0.05); |
|
// } |
|
|
|
@include hover-background-effect(); |
|
|
|
&.danger { |
|
@include hover-background-effect(red); |
|
} |
|
|
|
&:before { |
|
color: var(--primary-text-color); |
|
font-size: var(--icon-size); |
|
align-self: flex-start; |
|
margin-top: .125rem; |
|
} |
|
|
|
&-icon, |
|
&:before { |
|
margin-inline-end: var(--icon-margin); |
|
position: relative; |
|
} |
|
|
|
&-icon { |
|
--add: .25rem; |
|
--total: calc(var(--icon-size) + var(--add)); |
|
flex: 0 0 auto; |
|
width: var(--total); |
|
height: var(--total); |
|
margin-inline-end: calc(var(--icon-margin) - var(--add) / 2); |
|
margin-inline-start: calc(var(--add) / -2); |
|
|
|
.media-photo { |
|
width: inherit; |
|
height: inherit; |
|
} |
|
} |
|
|
|
@include respond-to(handhelds) { |
|
--padding-right: 1.875rem; |
|
} |
|
|
|
&-text { |
|
position: relative; |
|
flex: 1 1 auto; |
|
|
|
&, |
|
&-fake { |
|
// margin-top: 1px; |
|
pointer-events: none; |
|
} |
|
|
|
&-fake { |
|
--margin-left: calc(var(--icon-size) + var(--icon-margin)); |
|
position: absolute; |
|
margin-inline-start: var(--margin-left); |
|
max-width: calc(100% - var(--margin-left) - var(--padding-left) - var(--padding-right)); |
|
|
|
@include text-overflow(); |
|
} |
|
} |
|
|
|
&-subtitle { |
|
font-size: .875rem; |
|
color: var(--secondary-text-color); |
|
} |
|
|
|
&-header { |
|
color: var(--secondary-text-color); |
|
height: 2rem; |
|
font-weight: var(--font-weight-bold); |
|
pointer-events: none !important; |
|
} |
|
|
|
.stacked-avatars { |
|
--margin-right: -.6875rem; |
|
flex: 0 0 auto; |
|
inset-inline-end: .5rem; |
|
// margin-right: -1.5rem; |
|
// margin-left: 1rem; |
|
position: absolute; |
|
pointer-events: none; |
|
|
|
/* @include respond-to(handhelds) { |
|
margin-right: -.875rem; |
|
} */ |
|
} |
|
|
|
&.is-multiline { |
|
height: auto; |
|
font-size: .75rem; |
|
width: fit-content; |
|
min-width: calc(100% - .625rem); |
|
max-width: 16.25rem; |
|
|
|
.btn-menu-item-text { |
|
white-space: pre-wrap; |
|
width: fit-content; |
|
} |
|
} |
|
|
|
.checkbox-field-toggle { |
|
padding: 0; |
|
} |
|
} |
|
|
|
/* &-overlay { |
|
position: fixed !important; |
|
left: -100vw; |
|
right: -100vw; |
|
top: -100vh; |
|
bottom: -100vh; |
|
z-index: 1; |
|
background-color: rgba(0, 0, 0, .2); |
|
} */ |
|
&-overlay { |
|
position: fixed !important; |
|
left: 0; |
|
right: 0; |
|
top: 0; |
|
bottom: 0; |
|
z-index: $btn-menu-z-index; |
|
cursor: default; |
|
user-select: none; |
|
//background-color: rgba(0, 0, 0, .2); |
|
} |
|
|
|
/* &-toggle */&-overlay { |
|
left: -100vw; |
|
right: -100vw; |
|
top: -100vh; |
|
bottom: -100vh; |
|
|
|
width: auto !important; |
|
max-width: none !important; |
|
} |
|
|
|
&.has-footer { |
|
padding-bottom: 0; |
|
} |
|
|
|
&-footer { |
|
height: 2.5rem; |
|
// background: var(--background-color-true); |
|
display: flex; |
|
align-items: center; |
|
justify-content: center; |
|
border-bottom-left-radius: inherit; |
|
border-bottom-right-radius: inherit; |
|
font-size: .875rem; |
|
color: currentColor; |
|
// cursor: default; |
|
|
|
/* &-text { |
|
margin-top: -.125rem; |
|
} */ |
|
} |
|
|
|
hr { |
|
padding: 0; |
|
margin: .3125rem 0; |
|
display: block !important; |
|
|
|
margin-left: auto; |
|
margin-right: auto; |
|
width: calc(100% - 1.875rem); |
|
opacity: .6; |
|
} |
|
|
|
html:not(.is-mobile) & .badge { |
|
background-color: transparent; |
|
color: var(--secondary-text-color); |
|
} |
|
|
|
&-reactions { |
|
max-width: 100%; |
|
max-height: 100%; |
|
height: inherit; |
|
border-radius: var(--height); |
|
background-color: var(--menu-background-color); |
|
position: absolute; |
|
opacity: 0; |
|
transform: scale(.8); |
|
backdrop-filter: var(--menu-backdrop-filter); |
|
filter: drop-shadow(0 .125rem .5rem rgba(0, 0, 0, .24)); |
|
transform-origin: bottom left; |
|
|
|
&-container { |
|
--height: 2.25rem; |
|
--bubble-side-offset: 0rem; |
|
--other-side-offset: 0rem; |
|
--menu-offset: calc((var(--height) + .5rem) * -1); |
|
--width: calc(var(--menu-width) + (var(--bubble-side-offset) + var(--other-side-offset)) * -1); |
|
// position: absolute; |
|
margin-top: var(--menu-offset); |
|
width: var(--width); |
|
max-width: var(--width); |
|
margin-inline-start: var(--other-side-offset); |
|
// left: var(--bubble-side-offset); |
|
display: flex; |
|
// justify-content: flex-end; |
|
justify-content: flex-start; |
|
height: var(--height); |
|
position: fixed; |
|
z-index: 4; |
|
|
|
.contextmenu.center-left + &, |
|
.contextmenu.bottom-left + & { |
|
.btn-menu-reactions { |
|
transform-origin: bottom right !important; |
|
} |
|
} |
|
|
|
.contextmenu.bottom-center + & { |
|
.btn-menu-reactions { |
|
transform-origin: bottom center !important; |
|
} |
|
} |
|
|
|
&-vertical { |
|
// top: var(--other-side-offset); |
|
// left: calc((var(--height) + .5rem) * -1); |
|
width: var(--height); |
|
height: var(--width); |
|
max-width: var(--height); |
|
max-height: var(--width); |
|
flex-direction: column; |
|
margin-top: 0; |
|
margin-inline-start: var(--menu-offset); |
|
|
|
.btn-menu-reactions { |
|
width: inherit; |
|
height: auto; |
|
display: flex; |
|
flex-direction: column; |
|
transform-origin: top right; |
|
|
|
.inner-shadow { |
|
--inner-shadow-degree: 180deg; |
|
} |
|
} |
|
|
|
.btn-menu-reactions-reaction { |
|
--padding-vertical: var(--padding-base); |
|
--padding-horizontal: 0rem; |
|
} |
|
|
|
.btn-menu-reactions-bubble-big { |
|
right: calc(var(--size) / -2); |
|
bottom: var(--offset); |
|
} |
|
} |
|
} |
|
|
|
@include animation-level(2) { |
|
transition: opacity var(--transition-standard-in), transform var(--transition-standard-in); |
|
} |
|
|
|
&.is-visible { |
|
opacity: 1; |
|
transform: scale(1); |
|
} |
|
|
|
&-bubble { |
|
position: absolute; |
|
background-color: inherit; |
|
border-radius: 50%; |
|
z-index: -1; |
|
|
|
/* &-small { |
|
width: .5rem; |
|
height: .5rem; |
|
right: .5rem; |
|
bottom: -1.25rem; |
|
} */ |
|
|
|
&-big { |
|
--size: 1rem; |
|
--offset: calc(var(--height) / 2); |
|
width: var(--size); |
|
height: var(--size); |
|
right: var(--offset); |
|
// left: var(--offset); |
|
bottom: calc(var(--size) / -2); |
|
} |
|
} |
|
|
|
.scrollable { |
|
$padding: .25rem; |
|
position: relative; |
|
display: flex; |
|
border-radius: inherit; |
|
|
|
&-x { |
|
align-items: center; |
|
padding: 0 #{$padding}; |
|
} |
|
|
|
&-y { |
|
align-items: center; |
|
padding: #{$padding} 0; |
|
flex-direction: column; |
|
} |
|
} |
|
|
|
&-reaction { |
|
--size: 1.625rem; |
|
--padding-base: .25rem; |
|
--padding-vertical: 0rem; |
|
--padding-horizontal: var(--padding-base); |
|
width: calc(var(--size) + var(--padding-horizontal) * 2); |
|
height: calc(var(--size) + var(--padding-vertical) * 2); |
|
flex: 0 0 auto; |
|
padding: var(--padding-vertical) var(--padding-horizontal); |
|
cursor: pointer; |
|
|
|
&-scale { |
|
width: 100%; |
|
height: 100%; |
|
|
|
html:not(.is-safari) & { |
|
transform: scale(1); |
|
} |
|
|
|
html:not(.is-safari) body.animation-level-2 & { |
|
transition: transform .1s linear; |
|
} |
|
} |
|
|
|
&-select { |
|
html.no-touch:not(.is-safari) & { |
|
transform: scale(1); |
|
|
|
&:hover, |
|
&:active { |
|
transform: scale(1.25); |
|
} |
|
} |
|
|
|
html.no-touch:not(.is-safari) body.animation-level-2 & { |
|
transition: transform var(--transition-standard-in); |
|
} |
|
} |
|
|
|
.media-sticker-wrapper { |
|
position: relative; |
|
width: 100%; |
|
height: 100%; |
|
/* position: absolute; |
|
top: 0; |
|
right: 0; |
|
bottom: 0; |
|
left: 0; */ |
|
} |
|
} |
|
} |
|
} |
|
|
|
.btn-primary { |
|
border-radius: $border-radius-medium; |
|
width: 100%; |
|
text-align: center; |
|
height: 54px; |
|
border: none; |
|
font-weight: var(--font-weight-bold); |
|
cursor: pointer; |
|
overflow: hidden; |
|
position: relative; |
|
padding: 0; // new |
|
transition: .2s opacity; |
|
|
|
@include hover() { |
|
transition: /* .2s background-color, */.2s opacity; |
|
background: var(--dark-primary-color); |
|
} |
|
|
|
&-transparent { |
|
color: var(--primary-color); |
|
background-color: transparent; |
|
|
|
@include hover() { |
|
background: var(--light-primary-color); |
|
} |
|
|
|
.c-ripple__circle { |
|
background-color: var(--light-primary-color); |
|
} |
|
|
|
&.danger { |
|
@include hover-background-effect(red, false); |
|
} |
|
|
|
.preloader-circular .preloader-path { |
|
stroke: var(--primary-color); |
|
} |
|
} |
|
|
|
body.animation-level-0 & { |
|
transition: none; |
|
} |
|
|
|
> svg, |
|
use { |
|
height: calc(100% - 20px); |
|
inset-inline-end: 15px; |
|
left: auto; |
|
} |
|
|
|
&:disabled { |
|
pointer-events: none !important; |
|
opacity: var(--disabled-opacity); |
|
} |
|
} |
|
|
|
.btn-control { |
|
width: auto; |
|
height: 2.5rem; |
|
line-height: 2.5rem; |
|
align-items: center; |
|
padding-inline: .75rem 1.5rem; |
|
margin: .9375rem auto 1rem; |
|
border-radius: 1.25rem; |
|
display: flex; |
|
|
|
&.tgico:before { |
|
font-size: 1.5rem; |
|
margin-inline-end: .375rem; |
|
} |
|
} |
|
|
|
// ! example: multiselect input, button in pinned messages chat, settings, chat background tab |
|
.btn-transparent { |
|
color: var(--primary-text-color); |
|
background-color: transparent; |
|
display: flex; |
|
align-items: center; |
|
padding: 0 1rem; |
|
height: 3rem; |
|
//width: auto; |
|
//text-transform: capitalize; |
|
font-weight: normal; |
|
line-height: var(--line-height); // * it centers the text |
|
|
|
@include respond-to(handhelds) { |
|
height: 3rem; |
|
} |
|
|
|
@include hover-background-effect(); |
|
|
|
&.danger { |
|
@include hover-background-effect(red); |
|
} |
|
|
|
&.primary { |
|
@include hover-background-effect(primary); |
|
} |
|
|
|
// * tgico |
|
&:before { |
|
color: var(--secondary-text-color); |
|
font-size: 1.5rem; |
|
margin-inline-end: 2rem; |
|
|
|
@include respond-to(handhelds) { |
|
margin-inline-end: 1.5rem; |
|
} |
|
} |
|
|
|
&.btn-short:before { |
|
margin-inline-end: 1rem; |
|
} |
|
} |
|
|
|
.btn-primary.btn-circle { |
|
.preloader-circular { |
|
height: calc(100% - 20px); |
|
right: auto; |
|
left: auto; |
|
margin: 0; |
|
top: 10px; |
|
|
|
.preloader-path { |
|
stroke: #fff; |
|
} |
|
} |
|
} |
|
|
|
.btn-menu-toggle { |
|
position: relative; |
|
overflow: visible !important; |
|
font-weight: normal !important; |
|
cursor: pointer !important; |
|
pointer-events: all !important; |
|
|
|
&:not(.btn-primary):not(.btn-corner).menu-open { |
|
background-color: var(--light-secondary-text-color); |
|
} |
|
|
|
.btn-menu { |
|
margin-top: .5rem; |
|
} |
|
} |
|
|
|
.btn-circle { |
|
--size: 54px; |
|
border-radius: 50%; |
|
height: var(--size); |
|
width: var(--size); |
|
line-height: var(--size); |
|
|
|
@include respond-to(handhelds) { |
|
--size: 46px; |
|
} |
|
|
|
path { |
|
fill: white; |
|
} |
|
} |
|
|
|
.btn-disabled { |
|
pointer-events: none !important; |
|
cursor: default !important; |
|
color: var(--secondary-text-color) !important; |
|
|
|
&:before { |
|
color: inherit !important; |
|
} |
|
} |
|
|
|
.btn-secondary:not(:first-child) { |
|
margin-top: .5rem !important; |
|
} |
|
|
|
.btn-color-primary { |
|
background: var(--primary-color); |
|
color: #fff; |
|
|
|
/* .c-ripple__circle { |
|
background-color: var(--light-primary-color); |
|
} */ |
|
} |
|
|
|
.call-button { |
|
width: var(--call-button-size); |
|
height: var(--call-button-size); |
|
display: flex; |
|
align-items: center; |
|
justify-content: center; |
|
cursor: pointer; |
|
font-size: 1.5rem; |
|
position: relative; |
|
border-radius: 50%; |
|
backdrop-filter: blur(25px); |
|
|
|
&-container { |
|
display: flex; |
|
flex-direction: column; |
|
align-items: center; |
|
cursor: pointer; |
|
width: var(--call-button-size); |
|
|
|
&.disabled { |
|
pointer-events: none; |
|
|
|
.call-button { // ! fix backdrop-filter transition |
|
pointer-events: none; |
|
|
|
&, |
|
&-text { |
|
opacity: .8; |
|
} |
|
} |
|
} |
|
} |
|
|
|
&-text { |
|
white-space: nowrap; |
|
font-size: .875rem; |
|
margin-top: .25rem; |
|
|
|
@include animation-level(2) { |
|
transition: opacity var(--transition-standard-in); |
|
} |
|
} |
|
|
|
@include animation-level(2) { |
|
transition: background-color var(--transition-standard-in), opacity var(--transition-standard-in); |
|
} |
|
|
|
& + &, |
|
&-container + &-container { |
|
margin-inline-start: var(--call-button-margin); |
|
} |
|
} |
|
|
|
// .btn-update { |
|
// position: absolute; |
|
// right: 0; |
|
// bottom: 0; |
|
// left: 0; |
|
// height: 2.5rem; |
|
// line-height: 2.5rem; |
|
// text-align: center; |
|
// color: #fff; |
|
|
|
// &-weave { |
|
// position: absolute; |
|
// top: 0; |
|
// right: 0; |
|
// bottom: -2.5rem; |
|
// left: 0; |
|
// z-index: -1; |
|
// transform: scale(1, -1); |
|
|
|
// &-canvas { |
|
// width: 100%; |
|
// height: 100%; |
|
// } |
|
// } |
|
// } |
|
|
|
.btn-update { |
|
width: auto; |
|
padding: 0 2rem !important; |
|
border-radius: var(--size); |
|
font-size: 1rem; |
|
font-weight: var(--font-weight-bold); |
|
/* margin-right: calc(var(--size) + 0.5rem); */ |
|
/* left: var(--offset); */ |
|
inset-inline-end: auto !important; |
|
}
|
|
|