mempool/frontend/src/styles.scss

1007 lines
16 KiB
SCSS
Raw Normal View History

/* Bootstrap */
2019-07-21 16:59:47 +02:00
$body-bg: #1d1f31;
$body-color: #fff;
$gray-800: #1d1f31;
$gray-700: #fff;
2020-02-17 14:39:20 +01:00
$nav-tabs-link-active-bg: #11131f;
2020-02-29 17:42:50 +01:00
$primary: #105fb0;
2020-02-17 14:39:20 +01:00
$secondary: #2d3348;
2020-05-28 13:39:45 +02:00
$success: #1a9436;
$info: #1bd8f4;
2021-01-24 07:59:39 +01:00
$h5-font-size: 1.15rem !default;
$pagination-bg: $body-bg;
$pagination-border-color: $gray-800;
$pagination-disabled-bg: #FFF;
$pagination-disabled-border-color: #1d1f31;
$pagination-active-color: #fff;
$pagination-active-bg: #653b9c;
$pagination-hover-bg: #12131e;
$pagination-hover-border-color: #1d1f31;
$pagination-disabled-bg: #1d1f31;
$custom-select-indicator-color: #FFF;
.input-group-text {
background-color: #1c2031 !important;
border: 1px solid #20263e !important;
}
$link-color: #1bd8f4;
$link-decoration: none !default;
$link-hover-color: darken($link-color, 15%) !default;
$link-hover-decoration: underline !default;
$dropdown-bg: #1d1f31;
$dropdown-link-color: #fff;
$dropdown-link-hover-color: #fff;
$dropdown-link-hover-bg: #11131f;
$dropdown-link-active-color: #fff;
$dropdown-link-active-bg: #11131f;
@import "~bootstrap/scss/bootstrap";
@import '~tlite/tlite.css';
2020-02-16 18:26:57 +01:00
html, body {
height: 100%;
}
body {
background-color: #11131f;
min-width: 375px;
padding-bottom: 60px;
}
2020-02-17 14:39:20 +01:00
.container {
position: relative;
padding-bottom: 60px;
}
.container-xl {
padding-bottom: 60px;
2020-02-17 14:39:20 +01:00
}
.full-height {
@media (max-width: 767.98px) {
min-height: 100vh;
}
}
2020-02-17 14:39:20 +01:00
:focus {
outline: none !important;
}
.box {
min-height: 1px;
padding: 1.25rem;
position: relative;
min-width: 0;
word-wrap: break-word;
background-color: #24273e;
background-clip: border-box;
border: 1px solid rgba(0,0,0,.125);
box-shadow: 0.125rem 0.125rem 0.25rem rgba(0,0,0,0.075);
}
2020-03-24 18:41:46 +01:00
@media (max-width: 767.98px) {
.box {
padding: 0.75rem;
}
}
.navbar-nav.liquid > .active {
background-color: #116761 !important;
}
.navbar-nav.testnet > .active {
background-color: #1d486f !important;
}
2021-02-20 19:45:52 +01:00
.navbar-nav.signet > .active {
background-color: #6f1d5d !important;
}
2021-12-30 23:33:18 +01:00
.navbar-nav.liquidtestnet > .active {
background-color: #494a4a !important;
}
.form-control {
color: #495057;
}
.form-control:focus {
color: #000;
}
Implement i18n support in frontend using Angular + Transifex + NGINX This PR adds basic i18n support into the mempool frontend, together with a smooth workflow for developers and translators to collaborate: * Using the existing @angular/localize module, developers add i18n metadata to any frontend strings their new features or changes modify * Using the new npm script `i18n-extract-from-source`, developers extract the i18n data from source code into `src/locale/messages.xlf` * After pushing the updated `src/locale/messages.xlf` to GitHub, the Transifex service will update its database from the new source data * Using the Transifex website UI, translators can work together to translate all the mempool frontend strings into their native languages * Using the new npm script `i18n-pull-from-transifex`, developers can pull in completed translations from Transifex, and commit them into git. This flow requires an API key from Transifex, which can be obtained at https://www.transifex.com/user/settings/api/ to be used with the python script installed by `pip install transifex-client` - after preparing these, run the npm script which will ask you for the API key the first time. When downloading is complete, you can test building the frontend, and if successful, commit the new strings files into git. This PR implements a new locale selector in the footer of the homepage dashboard, and includes WIP translations for the following languages: * Czech (cs) * German (de) * Japanese (ja) * Norwegian (nn) * Spanish (es) * Swedish (sv) * Ukrainian (uk) * Persian (fa) * Portugese (pt) * Turkish (tr) * Dutch (nl) * French (fr) * Chinese (zh) * Slovenian (sl) * Korean (ko) * Polish (pl) The user-agent's `Accept-Language` header is used to automatically detect their preferred language, which can be manually overriden by the pull-down selector, which saves their preference to a cookie, which is used by nginx to serve the correct HTML bundle to the user. Remaining tasks include adding i18n metadata for strings in the Bisq and Liquid frontend code, mouseover hover tooltip strings, hard-coded og metadata inside HTML templates, and many other places. This will be done in a separate PR. When upgrading to add i18n support, mempool instance operators must take care to install the new nginx.conf and nginx-mempool.conf files, and tweak for their specific site configuration. Fixes #81
2020-12-01 20:19:33 +01:00
.form-control.form-control-secondary {
color: #fff;
background-color: #2d3348;
border: 1px solid #2d3348;
}
.form-control.form-control-secondary:focus {
color: #fff;
}
.h2-match-table {
padding-left: .65rem;
}
.skeleton-loader {
box-sizing: border-box;
/**
* `overflow` and `position` are required steps to make sure
* the component respects the specified dimensions
* given via `theme` object @Input attribute
*/
overflow: hidden;
position: relative;
animation: progress 2s ease-in-out infinite;
background: #2e324e no-repeat;
background-image: linear-gradient(
90deg,
rgba(255, 255, 255, 0),
#5d6182,
rgba(255, 255, 255, 0)
);
background-size: 200px 100%;
border-radius: 4px;
width: 100%;
height: 14px;
display: inline-block;
&:after,
&:before {
box-sizing: border-box;
}
&.circle {
width: 40px;
height: 40px;
margin: 5px;
border-radius: 50%;
}
}
@keyframes progress {
0% {
background-position: -200px 0;
}
100% {
background-position: calc(200px + 100%) 0;
}
}
.symbol {
color: #ffffff66;
font-size: 12px;
}
.progress-text {
span {
color: #fff !important;
}
}
.block-size, .blocks-container {
span {
font-size: 16px;
color: #fff !important;
}
}
.break-all {
white-space: normal;
word-break: break-all;
}
.title-block {
color: #FFF;
padding-top: 20px;
padding-bottom: 10px;
border-top: 3px solid #FFF;
display: flex;
flex-direction: row;
justify-content: space-between;
2021-10-12 03:33:20 +02:00
}
.title-address, .title-asset {
color: #FFF;
padding-bottom: 10px;
display: flex;
2021-10-27 02:47:17 +02:00
flex-direction: column;
margin-bottom: 7px;
@media (min-width: 576px) {
flex-direction: row;
margin-bottom: 0px;
}
h1 {
line-height: 1;
}
}
.smaller-text {
font-size: 14px;
}
.nowrap {
white-space: nowrap;
}
.table-xs th, .table-xs td {
padding: 0.1rem;
}
.table {
margin-bottom: 0;
font-size: 0.9rem;
@media (min-width: 576px) {
font-size: 1rem;
}
}
.close {
color: #fff;
}
.close:hover {
color: #fff;
}
.green-color {
color: #3bcc49;
}
.red-color {
color: #dc3545;
}
.yellow-color {
color: #ffd800;
}
.table-striped tbody tr:nth-of-type(odd) {
2020-07-19 08:46:30 +02:00
background-color: #181b2d;
}
.bordertop {
border-top: 1px solid #4c4c4c;
}
.smaller-text {
font-size: 14px;
}
html:lang(ru) .card-title {
font-size: 0.9rem;
}
/* MEMPOOL CHARTS - start */
.mempool-wrapper-tooltip-chart {
height: 250px;
2019-07-21 16:59:47 +02:00
}
.echarts {
height: 100%;
min-height: 180px;
}
2019-07-21 16:59:47 +02:00
.tx-wrapper-tooltip-chart,
.fees-wrapper-tooltip-chart {
background: rgba(#11131f, 0.95);
border-radius: 4px;
box-shadow: 1px 1px 10px rgba(0,0,0,0.5);
color: #b1b1b1;
display: flex;
flex-direction: column;
justify-content: space-between;
padding: 10px 15px;
text-align: left;
width: 200px;
thead {
th {
font-size: 9px;
color: #b1b1b1;
text-align: right;
&:first-child {
text-align: left;
left: -1px;
position: relative;
}
2021-10-27 02:47:17 +02:00
&:nth-child(4) {
display: none;
}
}
}
.title {
font-size: 12px;
font-weight: 700;
margin-bottom: 2px;
color: #fff;
.total-value {
float: right;
}
}
.active {
color: yellow !important;
.value,
.total-partial {
color: yellow !important;
.symbol {
color: yellow !important;
}
}
}
.item {
line-height: 0.8;
.indicator-container {
.indicator {
display: inline-block;
margin-right: 5px;
2021-08-27 04:50:32 +02:00
border-radius: 2px;
margin-top: 5px;
width: 9px;
height: 9px;
}
}
.value {
text-align: right;
.symbol {
color: #7e7e7e;
font-size: 9px !important;
}
}
.symbol {
font-size: 9px;
}
.total-partial {
font-size: 10px;
width: 58px;
text-align: right;
}
.total-percentage-bar {
padding-left: 8px;
}
.total-progress-percentage {
width: 45px;
height: 5px;
text-align: right;
display: none;
}
.total-progress-sum {
width: 58px;
text-align: right;
}
}
.total-label {
width: 100%;
text-align: left;
color: #fff;
margin-top: 5px;
font-size: 14px;
span {
float: right;
}
.symbol {
margin-left: 3px;
font-size: 9px;
position: relative;
top: 2px;
}
}
thead {
th {
font-size: 9px;
color: #b1b1b1;
text-align: right;
&:first-child {
text-align: left;
left: -1px;
position: relative;
}
2021-10-27 02:47:17 +02:00
&:nth-child(4) {
display: none;
}
2021-10-27 02:47:17 +02:00
&:nth-child(5) {
display: none;
}
}
}
.total-percentage-bar {
margin: auto;
width: 35px;
position: relative;
span {
display: block;
background: #282d47;
height: 5px;
border-radius: 2px;
}
}
.total-parcial-active {
text-align: right;
margin: 5px auto 5px;
padding-left: 0px;
span {
font-size: 10px;
}
.symbol {
font-size: 9px;
}
.total-percentage-bar {
width: 100%;
span {
transition: 1000 all ease-in-out;
}
}
.progress-percentage {
float: left;
}
}
}
.tx-wrapper-tooltip-chart {
width: 115px;
.item {
display: flex;
}
.value {
margin-top: 5px;
}
.indicator-container {
border-radius: 2px;
}
}
.fee-distribution-chart {
height: 250px;
}
.fees-wrapper-tooltip-chart {
.item {
font-size: 9px;
line-height: 0.8;
margin: 0px;
}
.indicator {
margin-right: 5px !important;
border-radius: 1px !important;
margin-top: 0px !important;
}
2019-07-21 16:59:47 +02:00
}
.fees-wrapper-tooltip-chart-advanced,
.tx-wrapper-tooltip-chart-advanced {
background: rgba(#1d1f31, 0.98);
2021-10-07 21:19:57 +02:00
width: 275px;
thead {
th {
2021-10-27 02:47:17 +02:00
&:nth-child(4) {
display: table-cell;
}
2021-10-27 02:47:17 +02:00
&:nth-child(5) {
display: table-cell;
}
}
}
.title {
font-size: 15px;
margin-bottom: 5px;
}
.item {
2021-10-07 21:19:57 +02:00
line-height: 1.25;
font-size: 11px;
.value {
width: 60px;
.symbol {
2021-10-07 21:19:57 +02:00
font-size: 9px !important;
}
}
.total-partial {
font-size: 10px;
width: 58px;
text-align: right;
}
.total-progress-percentage {
width: 65px;
height: 4px;
padding: 0px 5px;
display: table-cell !important;
border-radius: 4px;
}
.total-progress-sum {
width: 65px;
height: 4px;
padding: 0px 5px;
border-radius: 4px;
}
.total-progress-percentage-bar,
.total-progress-sum-bar {
width: 35px;
height: 4px;
div {
width: 100%;
border-radius: 4px;
display: block;
background: #29324c94;
}
span {
height: 4px;
border-radius: 4px;
display: block;
}
}
}
.total-label {
margin-top: 5px;
font-size: 14px;
span {
float: right;
}
}
.total-parcial-active {
text-align: right;
margin: 5px auto 5px;
span {
font-size: 10px;
}
.total-percentage-bar {
width: 100%;
left: 0;
span {
transition: 1000 all ease-in-out;
}
}
}
.total-percentage-bar-background {
background-color: #282d47;
}
}
.tx-wrapper-tooltip-chart-advanced {
width: 140px;
.indicator-container {
.indicator {
margin-right: 5px;
border-radius: 0px;
margin-top: 5px;
width: 9px;
height: 9px;
}
}
}
2019-07-21 16:59:47 +02:00
/* MEMPOOL CHARTS - end */
.grow {
flex-grow: 1;
}
2019-07-21 16:59:47 +02:00
hr {
border-top: 1px solid rgba(255, 255, 255, 0.1);
2019-11-10 09:44:00 +01:00
}
2020-03-05 10:13:46 +01:00
tr {
white-space: nowrap;
}
h1, h2, h3 {
2020-03-24 20:55:26 +01:00
margin-bottom: 1rem;
}
@media (max-width: 767.98px) {
h1 {
font-size: 2rem;
}
h2 {
font-size: 1.50rem;
}
}
@media (min-width: 992px) {
.lg-inline {
display: inline-block;
}
}
@media (min-width: 768px) {
.d-md-inline {
display: inline-block;
}
}
.header-bg {
font-size: 14px;
}
.progress {
position: relative;
}
.progress-text {
position: absolute;
top: 8.5px;
width: 100%;
text-align: center;
}
.progress-mempool {
background: repeating-linear-gradient(to right, #2d3348, #2d3348 0%, #105fb0 0%, #9339f4 100%);
}
.progress-mempool.testnet {
background: repeating-linear-gradient(to right, #2d3348, #2d3348 0%, #1d486f 0%, #183550 100%);
}
2021-02-20 19:45:52 +01:00
.progress-mempool.signet {
background: repeating-linear-gradient(to right, #2d3348, #2d3348 0%, #6f1d5d 0%, #471850 100%);
}
.progress-mempool.liquid {
background: repeating-linear-gradient(to right, #2d3348, #2d3348 0%, #116761 0%, #183550 100%);
}
2020-05-20 20:55:46 +02:00
2021-01-11 11:20:52 +01:00
.progress-dark {
background-color: #181b2d;
}
.progress-darklight {
background-color: #24273e;
}
2020-05-20 20:55:46 +02:00
.mt-2-5, .my-2-5 {
margin-top: 0.75rem !important;
}
.alert-mempool {
color: #ffffff;
background-color: #653b9c;
border-color: #3a1c61;
2021-05-18 16:56:42 +02:00
width: 100%;
display: inline-flex;
flex-direction: column;
justify-content: space-between;
@media (min-width: 676px){
flex-direction: row;
}
}
2021-10-27 02:47:17 +02:00
.flex {
2021-05-18 16:56:42 +02:00
display: flex;
}
2020-07-16 09:36:02 +02:00
th {
white-space: nowrap;
}
// ASM opcode colors
2020-11-21 10:17:29 +01:00
.constants { color: #ff8c00 }
.control { color: #87ceeb }
.stack { color: #ffa500 }
.splice { color: #46b5e2 }
.logic { color: #46b5e2 }
.arithmetic { color: #cae8d0 }
.crypto { color: #fa3d3d }
.locktime { color: #ff8c00 }
.reserved { color: #ff8c00 }
2020-12-09 01:57:18 +01:00
.rtl-layout {
2021-11-01 15:11:50 +01:00
.navbar-brand {
margin-right: 0px;
text-align: right;
}
2022-04-05 20:37:18 +02:00
.nav-pills {
@extend .nav-pills;
display: inline-block;
}
.description {
direction: rtl;
}
2021-11-01 15:11:50 +01:00
.dropdown {
margin-right: 1rem;
margin-left: 0;
@media (min-width: 576px) {
margin-left: 1rem;
}
@media (min-width: 768px) {
margin-left: 0;
}
}
.dropdown-menu-right {
left: 0px;
right: auto;
}
2022-04-05 20:37:18 +02:00
.fa-circle-right {
@extend .fa-circle-right;
2021-10-27 02:47:17 +02:00
-webkit-transform: scaleX(-1);
transform: scaleX(-1);
}
2020-12-09 01:57:18 +01:00
2022-04-05 20:37:18 +02:00
.btn.ml-2 {
margin-right: 0.5rem !important;
}
.pool-name {
@extend .pool-name;
padding-right: 10px;
}
.endpoint-container {
@extend .endpoint-container;
.section-header {
@extend .section-header;
text-align: left;
}
}
2021-10-27 02:47:17 +02:00
.table td {
text-align: right;
.fiat {
@extend .fiat;
margin-left: 0px !important;
margin-right: 15px;
2020-12-09 01:57:18 +01:00
}
2021-10-27 02:47:17 +02:00
}
2020-12-09 01:57:18 +01:00
2021-10-27 02:47:17 +02:00
.table th {
text-align: right;
}
2020-12-09 01:57:18 +01:00
2021-10-27 02:47:17 +02:00
.title-block {
text-align: right;
}
2020-12-09 01:57:18 +01:00
2021-10-27 02:47:17 +02:00
.mr-3 {
@extend .ml-3;
margin-right: 0 !important;
}
2020-12-09 01:57:18 +01:00
2021-10-27 02:47:17 +02:00
.mr-1 {
@extend .ml-1;
}
2020-12-09 01:57:18 +01:00
2021-10-27 02:47:17 +02:00
.float-left {
float: right !important;
}
2020-12-09 02:23:53 +01:00
2021-10-27 02:47:17 +02:00
.float-right {
float: left !important;
}
2020-12-09 02:23:53 +01:00
2021-10-27 02:47:17 +02:00
.text-left {
text-align: right !important;
}
2021-10-27 02:47:17 +02:00
.text-right {
text-align: left !important;
}
2021-09-15 10:56:30 +02:00
2021-10-27 02:47:17 +02:00
.bitcoin-block {
2021-11-01 15:11:50 +01:00
direction: rtl;
2021-10-27 02:47:17 +02:00
}
2021-09-15 10:56:30 +02:00
2021-10-27 02:47:17 +02:00
.next-previous-blocks {
@extend .next-previous-blocks;
direction: ltr;
}
2021-09-15 10:56:30 +02:00
2021-10-27 02:47:17 +02:00
.tx-link {
@extend .tx-link;
margin-left: 0px;
margin-right: 10px;
}
2021-09-15 10:56:30 +02:00
2021-10-27 02:47:17 +02:00
.pagination-container {
@extend .pagination-container;
ul {
@extend ul;
padding-left: 0px;
padding-right: 5px;
2021-09-15 10:56:30 +02:00
}
2021-10-27 02:47:17 +02:00
}
2021-10-27 02:47:17 +02:00
.search-box-container {
@extend .search-box-container;
margin-right: 0 !important;
margin-left: 0.5rem !important;
}
2021-10-27 02:47:17 +02:00
.code {
@extend .code;
text-align: left !important;
direction: ltr;
.subtitle {
@extend .subtitle;
direction: rtl;
text-align: right !important;
}
2021-10-27 02:47:17 +02:00
}
2021-10-27 02:47:17 +02:00
.container-graph {
@extend .container-graph;
.formRadioGroup {
@extend .formRadioGroup;
direction: ltr;
}
2021-10-27 02:47:17 +02:00
}
2022-04-05 20:37:18 +02:00
.full-container {
@extend .full-container;
.formRadioGroup {
@extend .formRadioGroup;
direction: ltr;
}
}
2021-10-27 02:47:17 +02:00
.mempool-graph {
@extend .mempool-graph;
direction: ltr;
}
.title-block {
.title {
float: right;
2021-09-29 22:13:21 +02:00
}
2021-10-27 02:47:17 +02:00
}
.container-buttons {
float: left !important;
width: auto !important;
}
.tx-link {
margin-right: 0px;
@media (min-width: 768px) {
margin-right: 10px;
2021-09-29 22:13:21 +02:00
}
2021-10-27 02:47:17 +02:00
}
2020-12-09 01:57:18 +01:00
}
.scriptmessage {
overflow: hidden;
display: inline-block;
text-overflow: ellipsis;
vertical-align: middle;
max-width: 50px;
width: auto;
text-align: left;
@media (min-width: 376px) {
max-width: 90px;
}
@media (min-width: 476px) {
max-width: 180px;
}
@media (min-width: 576px) {
max-width: 260px;
}
@media (min-width: 768px) {
max-width: 400px;
}
@media (min-width: 850px) {
max-width: 522px;
}
@media (min-width: 992px) {
max-width: 190px;
}
@media (min-width: 1200px) {
max-width: 250px;
}
}
.scriptmessage.longer {
max-width: 230px;
@media (min-width: 376px) {
max-width: 290px;
}
@media (min-width: 476px) {
max-width: 380px;
}
@media (min-width: 576px) {
max-width: 470px;
}
@media (min-width: 768px) {
max-width: 850px;
}
@media (min-width: 992px) {
max-width: 410px;
}
@media (min-width: 1200px) {
max-width: 480px;
}
}
.tab-pane {
.card {
background-color: transparent;
padding: 0;
button {
text-align: left;
display: block;
width: 100%;
padding: 1rem 2rem;
color: #fff;
font-weight: bold;
&:focus, &:hover, &:active {
text-decoration: none;
outline: none;
box-shadow: none;
}
}
.card-header {
padding: 0;
}
2021-10-27 02:47:17 +02:00
.collapsed {
background-color: #2d3348;
color: #1bd8f4;
}
}
.subtitle {
font-weight: bold;
margin-bottom: 3px;
button {
padding: 0px !important;
}
}
}
.pagination-container {
display: inline-block;
width: 100%;
justify-content: space-between;
background: #1d1f31;
margin: 0;
@media (min-width: 550px) {
width: auto;
}
ul {
justify-content: space-evenly !important;
margin: 0;
@media (min-width: 400px) {
width: auto;
padding-left: 5px;
}
}
2021-07-07 21:20:17 +02:00
}
.fee-estimation-wrapper {
.tooltip.show {
width: 220px;
}
}
2021-11-11 19:49:47 +01:00
// Blinking block
@keyframes shadowyBackground {
0% {
2021-11-12 17:24:15 +01:00
box-shadow: -10px -15px 75px rgba(#eba814, 1);
2021-11-11 19:49:47 +01:00
}
50% {
2021-11-12 17:24:15 +01:00
box-shadow: -10px -15px 75px rgba(#eba814, .3);
2021-11-11 19:49:47 +01:00
}
100% {
2021-11-12 17:24:15 +01:00
box-shadow: -10px -15px 75px rgba(#eba814, 1);
2021-11-11 19:49:47 +01:00
}
}
.blink-bg {
color: #fff;
2021-11-12 17:24:15 +01:00
background: repeating-linear-gradient(#9d7c05, #9d7c05 0.163525%, #d5a90a 100%) !important;
2021-11-11 19:49:47 +01:00
animation: shadowyBackground 1s infinite;
2021-11-12 17:24:15 +01:00
box-shadow: -10px -15px 75px rgba(#eba814, 1);
2021-11-11 19:49:47 +01:00
transition: 100ms all ease-in;
}