btcpayserver/BTCPayServer/wwwroot/main/site.css
Andrew Camilleri e0486aaa24
Label Manager component (#4594)
* Label Manager component

closes #4464

* UI updates

* Test fix

* add test

* fix warnings

* fix select update bug

* add test

* fix test

* Increase payment box max-width

* add labels from address to tx on detection

* Exclude well known label from the dropdown

* Add test on transaction label attachement, tighten UpdateLabels method to only update address labels

---------

Co-authored-by: Dennis Reimann <mail@dennisreimann.de>
Co-authored-by: nicolas.dorier <nicolas.dorier@gmail.com>
2023-02-22 11:47:02 +09:00

772 lines
15 KiB
CSS

/* Variables */
:root {
--chart-main-rgb: 68, 164, 49;
--chart-series-a-rgb: var(--chart-main-rgb);
--chart-series-b-rgb: 245, 0, 0;
--chart-series-c-rgb: 0, 109, 242;
--chart-series-d-rgb: 255, 188, 4;
--chart-series-e-rgb: 160, 98, 75;
}
/* General and site-wide Bootstrap modifications */
p {
margin-bottom: 1.5rem;
}
hr.primary {
width: 50px;
height: 3px;
background: var(--btcpay-primary);
display: inline-block;
}
.no-gutter > [class*='col-'] {
padding-right: 0;
padding-left: 0;
}
.hide-when-js,
.input-group-clear {
display: none;
}
.input-group-clear .icon {
--btn-icon-size: .65rem;
}
.note-editable {
color: var(--btcpay-form-text);
background-color: var(--btcpay-form-bg);
}
.wraptextAuto {
max-width: 300px;
text-overflow: ellipsis;
overflow: hidden;
display: block;
white-space: nowrap;
}
@media (min-width: 768px) {
.text-md-nowrap {
white-space: nowrap;
}
}
@media (min-width: 768px) {
.wraptextAuto {
max-width: 600px;
}
}
.smMaxWidth {
max-width: 150px;
}
@media (min-width: 768px) {
.smMaxWidth {
max-width: 300px;
}
}
@media (min-width: 1400px) {
.col-xxl-constrain {
max-width: 800px;
}
}
a.unobtrusive-link {
color: inherit;
text-decoration: inherit;
}
.btn.btn-link:focus {
box-shadow: none;
}
[aria-expanded] > svg.icon-caret-down {
flex-shrink: 0;
width: 24px;
height: 24px;
margin-left: auto;
transition: transform 0.2s ease-in-out;
}
[aria-expanded="true"] > svg.icon-caret-down {
transform: rotate(-180deg);
}
/* Badges */
.badge-pending,
.badge-new {
background: #d4edda;
color: #000;
}
.badge-expired {
background: #eee;
color: #000;
}
.badge-invalid {
background: #c94a47;
color: #fff;
}
.badge-processing {
background: #f1c332;
color: #000;
}
.badge-settled {
background: #329f80;
color: #fff;
}
/* Info icons in main headline */
svg.icon.icon-info {
position: relative;
top: -.05em;
color: var(--btcpay-neutral-500);
transition: 200ms;
}
svg.icon.icon-info:hover {
color: var(--btcpay-primary);
}
h2 svg.icon.icon-info {
width: 1.2rem;
height: 1.2rem;
top: -.0125em;
}
#descriptor p {
max-width: 40em;
}
/* Invoices */
.invoice-details-row {
background: var(--btcpay-bg-tile);
}
.badge .dropdown-toggle {
cursor: pointer;
padding: 0;
}
@media (min-width: 1200px) {
#MassAction {
margin-top: -4rem;
}
}
/* Prevent layout from breaking on hyperlinks with very long URLs as the visible text */
.invoice-details a {
word-break: break-word;
}
#qrCode {
padding: 10px;
background: white;
display: inline-block;
}
.feedback-icon-loading {
color: orange;
}
.feedback-icon-success {
color: green;
}
.feedback-icon-failed {
color: red;
}
.pin-button {
height: 135px;
margin-top: 20px;
background-color: white;
border: solid lightgray 4px;
cursor: pointer;
}
.pin-button:hover {
background-color: lightgray;
}
[v-cloak] { display: none !important; }
[v-cloak-loading] > * { display: none !important; }
[v-cloak-loading]::before { content: "loading…" }
.list-group-item a:not(.btn) {
color: inherit;
}
.list-group-item .icon-caret-right {
flex: 0 0 24px;
height: 24px;
align-self: center;
}
.content-wrapper {
padding: 50px 0;
}
@media screen and (min-width: 768px) {
.content-wrapper {
padding: 75px 0;
}
}
[class*="field-validation"]:not(:empty) {
display: inline-block;
margin-top: .5rem;
}
/* Print */
@media print {
.table td,
.table th {
background: transparent;
}
.bg-tile.h-100.p-3 {
padding: 1rem 0 !important;
}
.text-print-default {
color: inherit !important;
}
a {
text-decoration: none !important;
}
.toasted-container {
display: none !important;
}
#markStatusDropdownMenuButton {
border: 0;
background: transparent;
padding: 0 !important;
color: inherit;
font-weight: var(--btcpay-font-weight-normal);
font-size: var(--btcpay-body-font-size);
}
#markStatusDropdownMenuButton::after {
content: none;
}
}
/* Richtext editor */
.note-editor .table.table-sm {
border-collapse: collapse !important;
}
.note-editor .table.table-sm th,
.note-editor .table.table-sm td {
border: 1px dotted var(--btcpay-neutral-400);
}
/* Icons */
svg.icon {
display: inline-block;
width: 1rem;
height: 1rem;
flex-shrink: 0 !important;
}
svg.icon-note {
color: var(--btcpay-neutral-500);
}
/* Services */
.services-list {
display: flex;
flex-wrap: wrap;
gap: var(--btcpay-space-l);
}
.services-list .service {
--service-width: 100px;
flex: 0 0 var(--service-width);
text-align: center;
}
.services-list .service img {
width: var(--service-width);
height: var(--service-width);
}
.services-list .service h6 {
margin: var(--btcpay-space-m) 0 0 0;
}
/* Setup Guide */
#SetupGuide {
max-width: 30em;
}
#SetupGuide .list-group-item .icon {
width: 1.5rem;
height: 1.5rem;
margin: 1rem;
}
#SetupGuide .list-group-item .content {
flex: 1;
padding: 1rem 0;
}
/* Dashboard */
#Dashboard {
display: grid;
gap: var(--btcpay-space-m);
grid-template-columns: repeat(12, 1fr);
}
.widget {
--widget-padding: var(--btcpay-space-m);
--widget-chart-width: 100vw;
border: 1px solid var(--btcpay-body-border-light);
border-radius: var(--btcpay-border-radius-l);
padding: var(--widget-padding);
background: var(--btcpay-bg-tile);
grid-column-start: 1;
grid-column-end: 13;
}
.widget header {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
margin-bottom: var(--btcpay-space-s);
gap: var(--btcpay-space-s);
line-height: 1.2;
}
.widget header a,
.widget header .btn-link {
margin-top: var(--btcpay-space-xs);
font-weight: var(--btcpay-font-weight-semibold);
}
.widget h3,
.widget .h3 {
margin-bottom: 0;
}
.widget h6,
.widget .h6 {
font-weight: var(--btcpay-font-weight-semibold);
color: var(--btcpay-body-text-muted);
margin-bottom: 0;
}
.widget .currency-toggle .btn {
background-color: var(--btcpay-bg-tile);
border-color: var(--btcpay-body-border-light);
}
.widget .currency-toggle input:not(:checked) + .btn {
color: var(--btcpay-body-text-muted);
}
.widget .btn-group {
display: inline-flex;
gap: var(--btcpay-space-m);
align-items: center;
justify-content: space-between;
}
.widget .btn-link {
color: var(--btcpay-body-text-muted);
padding: 0;
font-weight: var(--btcpay-font-weight-semibold);
box-shadow: none !important;
text-decoration: none !important;
}
.widget input:checked + .btn-link {
color: var(--btcpay-body-link-accent);
}
.widget.store-lightning-balance .balances {
gap: 1.5rem 2.25rem;
}
.widget.store-lightning-services .services-list {
gap: var(--btcpay-space-m);
}
.widget.store-lightning-services .services-list .service {
--service-width: 3rem;
}
.widget.store-numbers {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
gap: var(--btcpay-space-l) var(--btcpay-space-xl);
}
.widget.store-numbers header {
justify-content: space-between;
}
.widget.store-numbers header h6 {
margin-right: var(--btcpay-space-s);
}
.widget header a,
.widget header .btn-link {
margin-top: 0;
}
.widget .store-number {
flex: 0 1 calc(50% - var(--btcpay-space-xl) / 2);
}
.widget .number {
font-weight: var(--btcpay-font-weight-bold);
}
.widget .table {
margin-left: -.5rem;
margin-right: -.5rem;
width: calc(100% + 1rem);
}
.widget .table th {
color: var(--btcpay-body-text-muted);
font-weight: var(--btcpay-font-weight-semibold);
}
.widget.app-top-items .ct-chart,
.widget.app-top-items .ct-chart .ct-chart-bar {
height: 30px;
}
.widget.app-top-items .ct-chart .ct-chart-bar {
margin-left: -.4rem;
margin-right: -.5rem;
width: calc(100% + 1rem) !important;
}
.widget.app-top-items .ct-bar {
stroke-linecap: round;
stroke-width: 10px;
}
.widget.app-top-items .ct-grids,
.widget.app-top-items .ct-labels {
display: none;
}
.widget.app-top-items .app-items {
display: flex;
flex-direction: column;
gap: var(--btcpay-space-s);
}
.widget.app-top-items .app-item {
display: flex;
flex-wrap: wrap;
gap: var(--btcpay-space-xs);
align-items: center;
justify-content: space-between;
}
.widget.app-top-items .app-item-point {
display: inline-block;
width: var(--btcpay-space-s);
height: var(--btcpay-space-s);
margin-right: var(--btcpay-space-s);
border-radius: 50%;
}
.widget.app-top-items .app-item-value {
font-weight: var(--btcpay-font-weight-semibold);
}
@media (max-width: 575px) {
.widget.store-lightning-services .services-list .service {
--service-width: 3rem;
}
.widget .store-number {
flex: 0 1 100%;
}
}
@media (min-width: 576px) {
.widget {
--widget-padding: var(--btcpay-space-l);
}
}
@media (min-width: 576px) and (max-width: 1199px) {
.widget.store-lightning-services .services-list {
gap: 1.5rem;
}
.widget.store-lightning-services .services-list .service {
--service-width: 4rem;
}
}
@media (max-width: 1199px) {
/* Reorder so that Lightning is below the wallet balance */
.widget.store-wallet-balance {
order: -3;
}
.widget.store-lightning-balance {
order: -2;
}
.widget.store-lightning-services {
order: -1;
}
}
@media (min-width: 1200px) {
.widget.app-sales,
.widget.setup-guide,
.widget.store-wallet-balance,
.widget.store-lightning-balance {
--widget-chart-width: 80vw;
grid-column-start: 1;
grid-column-end: 9;
}
.widget.store-lightning-services,
.widget.app-top-items,
.widget.store-numbers {
grid-column-start: 9;
grid-column-end: 13;
}
.widget.store-numbers {
flex-direction: column;
justify-content: start;
}
.widget .store-number {
flex: 0 1;
width: 100%;
}
.widget.store-numbers header {
justify-content: space-between;
}
.widget.store-numbers header h6 {
margin-right: 0;
}
}
#tradeModal .qty{ width: 41%; }
#tradeModal .btn-square{ padding: 0; width: 2.5rem; height: 2.5rem; }
#tradeModal .trade-qty {
display: flex;
justify-content: space-between;
}
#tradeModal .trade-qty .col-center {
flex: 0 0 2rem;
padding-left: 0;
padding-right: 0;
}
#tradeModal .trade-qty .col-side {
flex: 1;
}
.modal-footer .modal-footer-left{ margin-right: auto; }
/* List Select */
.btcpay-list-select {
display: flex;
flex-wrap: wrap;
gap: var(--btcpay-space-s);
}
.btcpay-list-select > input {
display: none;
}
.btcpay-list-select-item {
display: flex;
flex: 1 1 45%;
align-items: center;
border: 1px solid var(--btcpay-form-border);
padding: .75rem var(--btcpay-space-s);
background-color: var(--btcpay-form-bg);
border-radius: var(--btcpay-border-radius);
transition: border-color 0.15s ease-in-out;
cursor: pointer;
}
@media (max-width: 575px) {
.btcpay-list-select-item {
flex-basis: 100%;
}
}
.btcpay-list-select-item .icon {
width: 1.5rem;
height: 1.5rem;
margin: 0 var(--btcpay-space-s);
}
.btcpay-list-select-item:hover {
border-color: var(--btcpay-form-border-hover);
background-color: var(--btcpay-form-bg-hover);
}
input:checked + .btcpay-list-select-item {
border-color: var(--btcpay-form-border-focus);
}
/* Public pages */
.public-page-wrap {
display: flex;
gap: 1.5rem;
margin: 0 auto;
padding: var(--btcpay-space-l) var(--btcpay-space-m);
}
/* gradually try to set better but less supported values and units */
.min-vh-100,
.public-page-wrap {
min-height: -webkit-fill-available !important;
min-height: 100dvh !important;
}
@media (max-width: 400px) {
.public-page-wrap {
padding-left: 0;
padding-right: 0;
}
}
.store-header {
display: flex;
flex-direction: column;
align-items: center;
gap: var(--btcpay-space-s);
}
.store-logo {
--logo-size: 3rem;
--logo-bg: transparent;
--logo-radius: 50%;
width: var(--logo-size);
height: var(--logo-size);
background: var(--logo-bg);
border-radius: var(--logo-radius);
}
.store-name {
font-size: 1.3rem;
}
.store-footer {
display: flex;
flex-direction: column;
align-items: center;
gap: var(--btcpay-space-m);
margin-top: auto;
color: var(--btcpay-body-text-muted);
padding: 1.5rem 1.5rem 0;
}
.store-footer,
.store-footer a {
color: var(--btcpay-body-text-muted);
}
.store-footer a {
transition-duration: unset;
}
.store-footer a svg {
height: 2rem;
width: 4rem;
}
.store-footer a:hover {
color: var(--btcpay-body-text-hover);
}
.store-footer a:hover .logo-brand-light {
color: var(--btcpay-brand-secondary);
}
.store-footer a:hover .logo-brand-medium {
color: var(--btcpay-brand-primary);
}
.store-footer a:hover .logo-brand-dark {
color: var(--btcpay-brand-tertiary);
}
/* Tom Select */
.ts-wrapper.form-control .ts-control {
padding: .5rem .75rem .2rem .5rem !important;
}
.ts-wrapper.form-control .ts-control > .item {
margin: 0 .3rem .3rem 0 !important;
}
.ts-wrapper.form-control .ts-control > input {
margin: 0 0 .3rem .5rem !important;
}
.form-floating .ts-wrapper {
margin-top: 1.85rem;
}
/* Payment Box */
.payment-box {
--qr-size: 256px;
--icon-size: 64px;
--icon-border-size: var(--btcpay-space-xs);
--icon-border-color: var(--btcpay-white);
max-width: 320px;
min-width: var(--qr-size);
margin: 0 auto;
text-align: center;
}
.payment-box .qr-container {
display: flex;
align-items: center;
justify-content: center;
position: relative;
min-height: var(--qr-size);
}
.payment-box .qr-container svg,
.payment-box .qr-container img.qr-code {
border-radius: var(--btcpay-border-radius);
background: var(--btcpay-white);
width: 100%;
}
.payment-box .qr-container svg {
padding: var(--btcpay-space-s);
}
.payment-box .qr-container img.qr-icon {
box-sizing: content-box;
position: absolute;
width: var(--icon-size);
border-radius: 50%;
padding: var(--icon-border-size);
background: var(--icon-border-color);
}
.payment-box .qr-container small {
display: none;
}
.payment-box .input-group {
align-items: flex-end;
}
.payment-box .input-group .form-control-plaintext {
padding-left: 3px;
padding-bottom: 0;
font-weight: var(--btcpay-font-weight-semibold);
}
.payment-box .input-group label {
padding-left: 0;
text-transform: uppercase;
letter-spacing: .1rem;
font-weight: var(--btcpay-font-weight-semibold);
}
.payment-box .input-group button {
padding: var(--btcpay-space-xs) 0;
font-weight: var(--btcpay-font-weight-semibold);
}