Merge branch 'master' into develop
BIN
src/gui/qt-daemon/html/OpenSans-Bold.ttf
Normal file
BIN
src/gui/qt-daemon/html/OpenSans-ExtraBold.ttf
Normal file
BIN
src/gui/qt-daemon/html/OpenSans-Light.ttf
Normal file
BIN
src/gui/qt-daemon/html/OpenSans-Regular.ttf
Normal file
BIN
src/gui/qt-daemon/html/OpenSans-SemiBold.ttf
Normal file
BIN
src/gui/qt-daemon/html/assets/fonts/OpenSans-Bold.ttf
Normal file
BIN
src/gui/qt-daemon/html/assets/fonts/OpenSans-ExtraBold.ttf
Normal file
BIN
src/gui/qt-daemon/html/assets/fonts/OpenSans-Light.ttf
Normal file
BIN
src/gui/qt-daemon/html/assets/fonts/OpenSans-Regular.ttf
Normal file
BIN
src/gui/qt-daemon/html/assets/fonts/OpenSans-SemiBold.ttf
Normal file
|
|
@ -3,7 +3,8 @@
|
|||
"SETUP_MASTER_PASS": "Setup master password",
|
||||
"SETUP_CONFIRM_PASS": "Confirm the password",
|
||||
"MASTER_PASS": "Master password",
|
||||
"BUTTON_NEXT": "Next"
|
||||
"BUTTON_NEXT": "Next",
|
||||
"INCORRECT_PASSWORD": "Invalid password"
|
||||
},
|
||||
"COMMON": {
|
||||
"BACK": "Go back"
|
||||
|
|
@ -24,7 +25,8 @@
|
|||
"ADD_NEW": "+ Add new",
|
||||
"ACCOUNT": {
|
||||
"STAKING": "Staking",
|
||||
"MESSAGES": "New offers/Messages"
|
||||
"MESSAGES": "New offers/Messages",
|
||||
"SYNCING": "Syncing wallet"
|
||||
},
|
||||
"SETTINGS": "Settings",
|
||||
"LOG_OUT": "Log out",
|
||||
|
|
@ -42,19 +44,26 @@
|
|||
"BUTTON_NEW_WALLET": "Create new wallet",
|
||||
"BUTTON_OPEN_WALLET": "Open existing wallet",
|
||||
"BUTTON_RESTORE_BACKUP": "Restore from backup",
|
||||
"HELP": "How to create wallet?"
|
||||
"HELP": "How to create wallet?",
|
||||
"CHOOSE_PATH": "Please choose a path"
|
||||
},
|
||||
"CREATE_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Set wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet"
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"TITLE_SAVE": "Save the wallet file.",
|
||||
"ERROR_CANNOT_SAVE_TOP": "You cannot record a file on top of another file",
|
||||
"ERROR_CANNOT_SAVE_SYSTEM": "You cannot save a safe file to the system partition"
|
||||
},
|
||||
"OPEN_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Wallet password",
|
||||
"BUTTON": "Open wallet"
|
||||
"BUTTON": "Open wallet",
|
||||
"WITH_ADDRESS_ALREADY_OPEN": "A wallet with this account is already open",
|
||||
"SAFE_FILE_NOT_FOUND1": "Safe file not found",
|
||||
"SAFE_FILE_NOT_FOUND2": "<br/><br/> It might have been renamed or moved. <br/> To open it, use the \"Open safe\" button."
|
||||
},
|
||||
"RESTORE_WALLET": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
|
|
@ -62,7 +71,9 @@
|
|||
"PASS": "Wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet"
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"NOT_CORRECT_FILE_OR_PASSWORD": "Invalid safe file or password does not match",
|
||||
"CHOOSE_PATH": "Please choose a path"
|
||||
},
|
||||
"SEED_PHRASE": {
|
||||
"TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your account.",
|
||||
|
|
@ -109,7 +120,8 @@
|
|||
"DETAILS": "Additional details",
|
||||
"MIXIN": "Mixin",
|
||||
"FEE": "Fee",
|
||||
"BUTTON": "Send"
|
||||
"BUTTON": "Send",
|
||||
"SUCCESS_SENT": "The payment will be received within 20 minutes"
|
||||
},
|
||||
"HISTORY": {
|
||||
"STATUS": "Status",
|
||||
|
|
@ -162,13 +174,38 @@
|
|||
"PROGRESS_RECEIVE": "Reply received",
|
||||
"PROGRESS_COMPLETE": "Completed",
|
||||
"FEE": "Fee",
|
||||
"PAYMENT": "Payment ID"
|
||||
|
||||
"PAYMENT": "Payment ID",
|
||||
"ACCEPT_STATE_WAIT_BIG": "You have accepted the contract proposal. Please wait for the pledges to be made",
|
||||
"IGNORED_ACCEPT": "You have ignored the contract proposal",
|
||||
"BURN_PROPOSAL": "The pledges have been nullified.",
|
||||
"SUCCESS_FINISH_PROPOSAL": "The contract is complete. The payment has been sent.",
|
||||
"SEND_CANCEL_PROPOSAL": "Proposal to cancel contract sent to seller",
|
||||
"IGNORED_CANCEL": "You have ignored the proposal to cancel the contract",
|
||||
"DEALS_CANCELED_WAIT": "The contract is being cancelled. Please wait for the pledge to be returned",
|
||||
"WAITING_TIME": "Time until response"
|
||||
},
|
||||
"MESSAGES": {
|
||||
"ADDRESS": "Address",
|
||||
"MESSAGE": "Message",
|
||||
"SEND_PLACEHOLDER": "Type a message...",
|
||||
"SEND_BUTTON": "Send"
|
||||
},
|
||||
"ERRORS": {
|
||||
"NOT_ENOUGH_MONEY": "Insufficient funds in account",
|
||||
"CORE_BUSY": "Internal error (core is busy)",
|
||||
"DAEMON_BUSY": "Internal error: deamon is busy",
|
||||
"NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your safe",
|
||||
"NOT_ENOUGH_OUTPUTS_TO_MIX": "For the sake of security, mixed transaction will take several days",
|
||||
"TRANSACTION_IS_TO_BIG": "This transaction is large and was therefore denied by the network. Try sending the required amount in parts.",
|
||||
"TRANSFER_ATTEMPT": "There is no connection to the Zano network",
|
||||
"ACCESS_DENIED": "Access denied",
|
||||
"TRANSACTION_ERROR": "Error. Payment not completed.",
|
||||
"BAD_ARG": "Invalid argument",
|
||||
"WALLET_WRONG_ID": "Invalid wallet ID",
|
||||
"WRONG_PASSWORD": "Invalid password",
|
||||
"FILE_RESTORED": "The safe file was corrupted somehow. We have recovered the keys and safe from the blockchain.",
|
||||
"FILE_NOT_FOUND": "File not found",
|
||||
"FILE_EXIST": "A file with that name already exists. Enter another name to save the file under",
|
||||
"FILE_NOT_SAVED": "You cannot save a safe file in this folder. Please choose another folder."
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 644 B After Width: | Height: | Size: 644 B |
31
src/gui/qt-daemon/html/assets/icons/logo.svg
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 23.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 1024 1024" style="enable-background:new 0 0 1024 1024;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:url(#SVGID_1_);}
|
||||
.st1{fill:url(#SVGID_2_);}
|
||||
.st2{fill:url(#SVGID_3_);}
|
||||
</style>
|
||||
<g>
|
||||
|
||||
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="512.55" y1="984.3" x2="512.55" y2="39.3" gradientTransform="matrix(1 0 0 -1 0 1024)">
|
||||
<stop offset="0" style="stop-color:#1ECED0"/>
|
||||
<stop offset="0.5" style="stop-color:#8AA9F4"/>
|
||||
<stop offset="1" style="stop-color:#6A44FB"/>
|
||||
</linearGradient>
|
||||
<polygon class="st0" points="679.6,984.7 193.5,305.1 344.4,39.7 831.6,715.3 "/>
|
||||
|
||||
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="217.75" y1="700.86" x2="217.75" y2="382.2152" gradientTransform="matrix(1 0 0 -1 0 1024)">
|
||||
<stop offset="0" style="stop-color:#57B7E3"/>
|
||||
<stop offset="1" style="stop-color:#7E8AF4;stop-opacity:0"/>
|
||||
</linearGradient>
|
||||
<polygon class="st1" points="193.5,305.1 435.5,643.4 0,643.4 "/>
|
||||
|
||||
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="807.25" y1="332.3745" x2="807.25" y2="641.9303" gradientTransform="matrix(1 0 0 -1 0 1024)">
|
||||
<stop offset="0" style="stop-color:#7C83F4"/>
|
||||
<stop offset="1" style="stop-color:#68B0E9;stop-opacity:0"/>
|
||||
</linearGradient>
|
||||
<polygon class="st2" points="831.6,715.3 590.5,381 1024,381 "/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 708 B After Width: | Height: | Size: 708 B |
|
Before Width: | Height: | Size: 1 KiB After Width: | Height: | Size: 1 KiB |
|
Before Width: | Height: | Size: 931 B After Width: | Height: | Size: 931 B |
|
|
@ -1,6 +1,6 @@
|
|||
button {
|
||||
border: none;
|
||||
font-family: 'Open Sans', sans-serif;
|
||||
font-family: OpenSans, sans-serif;
|
||||
font-size: 1.5rem;
|
||||
font-weight: 600;
|
||||
outline: none;
|
||||
|
|
@ -116,7 +116,7 @@ button {
|
|||
}
|
||||
}
|
||||
|
||||
input[type='text'], input[type='password'] {
|
||||
input[type='text'], input[type='password'], select {
|
||||
border: none;
|
||||
font-size: 1.4rem;
|
||||
outline: none;
|
||||
|
|
@ -134,7 +134,7 @@ button {
|
|||
height: auto;
|
||||
|
||||
textarea {
|
||||
font-family: 'Open Sans', sans-serif;
|
||||
font-family: OpenSans, sans-serif;
|
||||
border: none;
|
||||
font-size: 1.4rem;
|
||||
outline: none;
|
||||
|
|
@ -273,6 +273,30 @@ input[type='checkbox'].style-checkbox {
|
|||
}
|
||||
}
|
||||
|
||||
.switch {
|
||||
|
||||
@include themify($themes) {
|
||||
background-color: themed(switchBackgroundColor);
|
||||
}
|
||||
|
||||
.circle {
|
||||
|
||||
&.on {
|
||||
|
||||
@include themify($themes) {
|
||||
background-color: themed(blueTextColor);
|
||||
}
|
||||
}
|
||||
|
||||
&.off {
|
||||
|
||||
@include themify($themes) {
|
||||
background-color: themed(optionalTextColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.error-block {
|
||||
font-size: 1.2rem;
|
||||
text-align: right;
|
||||
|
|
@ -364,12 +388,32 @@ input[type='checkbox'].style-checkbox {
|
|||
.modal {
|
||||
|
||||
@include themify($themes) {
|
||||
background: themed(tooltipBackgroundColor);
|
||||
background: themed(modalBackground);
|
||||
color: themed(mainTextColor);
|
||||
}
|
||||
|
||||
.content {
|
||||
|
||||
.icon.error {
|
||||
|
||||
@include themify($themes) {
|
||||
background-color: themed(redTextColor);
|
||||
}
|
||||
}
|
||||
|
||||
.icon.success {
|
||||
|
||||
@include themify($themes) {
|
||||
background-color: themed(greenTextColor);
|
||||
}
|
||||
}
|
||||
|
||||
.icon.info {
|
||||
|
||||
@include themify($themes) {
|
||||
background-color: themed(blueTextColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.action-button {
|
||||
|
|
@ -379,4 +423,52 @@ input[type='checkbox'].style-checkbox {
|
|||
color: themed(alternativeTextColor);
|
||||
}
|
||||
}
|
||||
|
||||
.close-button {
|
||||
|
||||
.icon {
|
||||
|
||||
@include themify($themes) {
|
||||
background-color: themed(closeButtonColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.ngx-contextmenu {
|
||||
|
||||
.dropdown-menu {
|
||||
border: none;
|
||||
padding: 0;
|
||||
|
||||
@include themify($themes) {
|
||||
background-color: themed(chartOptionsBackgroundColor);
|
||||
box-shadow: themed(tooltipShadow);
|
||||
}
|
||||
}
|
||||
|
||||
li {
|
||||
display: block;
|
||||
font-family: OpenSans, sans-serif;
|
||||
font-size: 1.3rem;
|
||||
text-transform: uppercase;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
a {
|
||||
display: block;
|
||||
padding: 0.5em 1em;
|
||||
|
||||
@include themify($themes) {
|
||||
color: themed(mainTextColor);
|
||||
}
|
||||
|
||||
&:hover {
|
||||
|
||||
@include themify($themes) {
|
||||
background-color: themed(chartOptionsHoverColor);
|
||||
color: themed(mainTextColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,7 +10,8 @@ $themes: (
|
|||
alternativeTextColor: #111921,
|
||||
optionalTextColor: #556576,
|
||||
blueTextColor: #4db1ff,
|
||||
redTextColor: #ff5252,
|
||||
greenTextColor: #5cda9d,
|
||||
redTextColor: #fe5252,
|
||||
blueButtonBackgroundColor: #4db1ff,
|
||||
blueButtonHoverColor: #60b9ff,
|
||||
disabledButtonBackgroundColor: #90a4ae,
|
||||
|
|
@ -38,7 +39,9 @@ $themes: (
|
|||
chartOptionsBackgroundColor: #2b3644,
|
||||
chartOptionsHoverColor: #556576,
|
||||
tooltipBackgroundColor: #42505f,
|
||||
tooltipShadow: 0 0 1rem rgba(0, 0, 0, 0.5)
|
||||
tooltipShadow: 0 0 1rem rgba(0, 0, 0, 0.5),
|
||||
modalBackground: url(~src/assets/images/background-dark.png),
|
||||
closeButtonColor: #556576
|
||||
),
|
||||
gray: (
|
||||
bodyBackgroundColor: #101417,
|
||||
|
|
@ -51,7 +54,8 @@ $themes: (
|
|||
alternativeTextColor: #1a1a1a,
|
||||
optionalTextColor: #565c62,
|
||||
blueTextColor: #42a5f5,
|
||||
redTextColor: #ff5252,
|
||||
greenTextColor: #47cf8d,
|
||||
redTextColor: #fe5252,
|
||||
blueButtonBackgroundColor: #42a5f5,
|
||||
blueButtonHoverColor: #4dafff,
|
||||
disabledButtonBackgroundColor: #79848f,
|
||||
|
|
@ -79,7 +83,9 @@ $themes: (
|
|||
chartOptionsBackgroundColor: #292d31,
|
||||
chartOptionsHoverColor: #515960,
|
||||
tooltipBackgroundColor: #3e464c,
|
||||
tooltipShadow: 0 0 1rem rgba(0, 0, 0, 0.5)
|
||||
tooltipShadow: 0 0 1rem rgba(0, 0, 0, 0.5),
|
||||
modalBackground: url(~src/assets/images/background-gray.png),
|
||||
closeButtonColor: #515960
|
||||
),
|
||||
white: (
|
||||
bodyBackgroundColor: #eeeeee,
|
||||
|
|
@ -92,6 +98,7 @@ $themes: (
|
|||
alternativeTextColor: #fefefe,
|
||||
optionalTextColor: #a0a5ab,
|
||||
blueTextColor: #2c95f1,
|
||||
greenTextColor: #46c172,
|
||||
redTextColor: #ff5252,
|
||||
blueButtonBackgroundColor: #2c95f1,
|
||||
blueButtonHoverColor: #379ffa,
|
||||
|
|
@ -120,7 +127,9 @@ $themes: (
|
|||
chartOptionsBackgroundColor: #e0e0e0,
|
||||
chartOptionsHoverColor: #ffffff,
|
||||
tooltipBackgroundColor: #ffffff,
|
||||
tooltipShadow: 0 0 1rem rgba(120, 120, 120, 0.5)
|
||||
tooltipShadow: 0 0 1rem rgba(120, 120, 120, 0.5),
|
||||
modalBackground: url(~src/assets/images/background-white.png),
|
||||
closeButtonColor: #43454b
|
||||
)
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -81,27 +81,3 @@ app-settings {
|
|||
app-login {
|
||||
min-width: inherit;
|
||||
}
|
||||
|
||||
.switch {
|
||||
|
||||
@include themify($themes) {
|
||||
background-color: themed(switchBackgroundColor);
|
||||
}
|
||||
|
||||
.circle {
|
||||
|
||||
&.on {
|
||||
|
||||
@include themify($themes) {
|
||||
background-color: themed(blueTextColor);
|
||||
}
|
||||
}
|
||||
|
||||
&.off {
|
||||
|
||||
@include themify($themes) {
|
||||
background-color: themed(optionalTextColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
|
||||
&:not(:last-child) {
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
margin-right: 20px;
|
||||
|
||||
&:after {
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 644 B After Width: | Height: | Size: 644 B |
|
Before Width: | Height: | Size: 140 KiB After Width: | Height: | Size: 142 KiB |
|
|
@ -7,7 +7,6 @@
|
|||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="icon" type="image/x-icon" href="favicon.ico">
|
||||
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i,800,800i" rel="stylesheet">
|
||||
<script type="text/javascript" src="qrc:///qtwebchannel/qwebchannel.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
|
|
|||
|
|
@ -1,474 +0,0 @@
|
|||
@import "../variables";
|
||||
@import "mixins";
|
||||
|
||||
#contacts {
|
||||
padding: 2.5rem 8rem;
|
||||
|
||||
.main-options-wrapper {
|
||||
|
||||
.contacts-options {
|
||||
.flex-container-direction(row);
|
||||
.flex-container-alignment(center, space-between);
|
||||
margin-bottom: 7rem;
|
||||
|
||||
.contacts-options-left {
|
||||
.flex-container-direction(row);
|
||||
|
||||
.contacts-groups {
|
||||
|
||||
.dropdown-toggle {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, space-between);
|
||||
background-color: white !important;
|
||||
border: 1px solid @contacts-groups-border-color;
|
||||
border-radius: 4rem;
|
||||
box-shadow: none;
|
||||
color: @program-dark-color;
|
||||
font-size: 3.75rem;
|
||||
height: 8.25rem;
|
||||
padding: 0 4rem;
|
||||
outline-style: none !important;
|
||||
width: 62.5rem;
|
||||
z-index: 0;
|
||||
|
||||
.filter-option {
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.caret {
|
||||
position: relative;
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown-menu.open {
|
||||
top: 10.5rem;
|
||||
border-radius: 2rem;
|
||||
box-shadow: @box-shadow;
|
||||
margin: 0;
|
||||
|
||||
li {
|
||||
|
||||
a {
|
||||
min-height: 8.25rem;
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
&.divider {
|
||||
display: block;
|
||||
background-color: @program-divider-color;
|
||||
margin: 0 auto;
|
||||
width: 90%;
|
||||
}
|
||||
|
||||
.edit-groups-item {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, flex-start);
|
||||
|
||||
.base-icon {
|
||||
.icon-sizing(5rem, 5rem, -3.5rem, -4.5rem);
|
||||
margin-right: 1.5rem;
|
||||
flex-shrink: 0;
|
||||
|
||||
&:before {
|
||||
content: '#';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.contacts-search {
|
||||
margin-left: 3.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
.contacts-buttons {
|
||||
.flex-container;
|
||||
|
||||
.main-options-btn {
|
||||
|
||||
.add-contact-icon {
|
||||
.icon-sizing(4rem, 4rem, -4rem, -5rem);
|
||||
margin-right: 2rem;
|
||||
}
|
||||
|
||||
&:not(:first-child) {
|
||||
margin-left: 6rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.contacts-table {
|
||||
margin-bottom: 3rem;
|
||||
|
||||
.contacts-name {
|
||||
display: inline-flex;
|
||||
min-width: 22rem;
|
||||
.flex-container-alignment(center, flex-start);
|
||||
font-size: 3.75rem;
|
||||
word-break: break-word;
|
||||
|
||||
.base-icon {
|
||||
.icon-sizing(4rem, 4rem, -4rem, -5rem);
|
||||
color: @program-table-icon-color;
|
||||
margin-right: 1rem;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
color: @program-hover-color;
|
||||
cursor: pointer;
|
||||
|
||||
.base-icon {
|
||||
color: @program-hover-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.contacts-account {
|
||||
.flex-container;
|
||||
|
||||
.safe-address {
|
||||
font-size: 3.25rem;
|
||||
margin-top: 0.75rem;
|
||||
margin-bottom: 0.75rem;
|
||||
|
||||
.safe-address-wrap {
|
||||
width: 40rem;
|
||||
}
|
||||
|
||||
.safe-address-inner {
|
||||
left: inherit;
|
||||
right: 0;
|
||||
width: 150%;
|
||||
|
||||
.contact-address {
|
||||
|
||||
.safe-address-inner-additional {
|
||||
.flex-container-direction(row-reverse);
|
||||
.flex-container-alignment(flex-start, space-between);
|
||||
margin-top: 2rem;
|
||||
|
||||
.copy-icon {
|
||||
cursor: pointer;
|
||||
float: none;
|
||||
margin-right: -1rem;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
|
||||
&:hover, &.hovered {
|
||||
color: @program-exuding-color;
|
||||
}
|
||||
|
||||
&.hovered:before {
|
||||
content: 'A';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&:not(:first-child) {
|
||||
border-top: 1px solid @program-divider-color;
|
||||
margin-top: 4rem;
|
||||
padding-top: 3rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
alias-display:not(.safe-address-inner-alias) {
|
||||
display: inline-flex;
|
||||
|
||||
.safe-alias {
|
||||
margin-top: 0.75rem;
|
||||
margin-bottom: 0.75rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.contacts-location, .contacts-groups {
|
||||
max-width: 32.5rem;
|
||||
}
|
||||
|
||||
.contacts-communication-method {
|
||||
max-width: 43rem;
|
||||
}
|
||||
|
||||
.contacts-note {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, flex-start);
|
||||
position: relative;
|
||||
|
||||
.base-icon {
|
||||
.icon-sizing(4rem, 4rem, -4rem, -5rem);
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
.contacts-menu {
|
||||
line-height: 0;
|
||||
visibility: hidden;
|
||||
|
||||
.contacts-menu-btn {
|
||||
background: transparent;
|
||||
border: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
|
||||
.base-icon {
|
||||
.icon-sizing(4rem, 4rem, -4rem, -5rem);
|
||||
}
|
||||
}
|
||||
|
||||
.contacts-menu-list {
|
||||
.menu-list(-10.5rem, inherit, -3rem, 38rem);
|
||||
}
|
||||
}
|
||||
|
||||
tr {
|
||||
font-size: 3.25rem;
|
||||
|
||||
.table-long-item-wrapper {
|
||||
|
||||
.table-long-item {
|
||||
|
||||
.table-long-item-text {
|
||||
font-size: 3.25rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
th:last-child, td:last-child {
|
||||
width: 10rem;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
|
||||
.contacts-menu {
|
||||
visibility: visible;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.export-import-contacts-wrapper {
|
||||
.flex-container;
|
||||
color: @export-import-contacts-text-color;
|
||||
|
||||
.export-import-contacts-btn {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, center);
|
||||
background-color: fade(white, 20%);
|
||||
border: 1px solid @export-import-contacts-border-color;
|
||||
font-size: 3.5rem;
|
||||
height: 6rem;
|
||||
padding: 0;
|
||||
|
||||
.base-icon {
|
||||
.icon-sizing(4rem, 4rem, -4rem, -5rem);
|
||||
}
|
||||
|
||||
&.left-btn {
|
||||
border-radius: 3rem 0 0 3rem;
|
||||
border-right: none;
|
||||
width: 32.5rem;
|
||||
}
|
||||
|
||||
&.right-btn {
|
||||
border-radius: 0 3rem 3rem 0;
|
||||
width: 8.5rem;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background-color: fade(white, 40%);
|
||||
color: @program-dark-color;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
.export-import-contacts-menu{
|
||||
.menu-list(-1rem, inherit, 0, 42.5rem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#contact-details {
|
||||
padding: 2.5rem 8rem;
|
||||
|
||||
.contact-details-options {
|
||||
.flex-container-direction(row);
|
||||
.flex-container-alignment(center, space-between);
|
||||
margin-bottom: 5.5rem;
|
||||
|
||||
.back-btn {
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
.contact-name {
|
||||
color: @program-dark-color;
|
||||
font-size: 7.75rem;
|
||||
font-weight: 300;
|
||||
line-height: 7.5rem;
|
||||
margin-top: 0;
|
||||
margin-bottom: 5.5rem;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.contacts-data {
|
||||
margin-top: 11rem;
|
||||
margin-bottom: 5rem;
|
||||
|
||||
.adaptive-form-field-group {
|
||||
padding-bottom: 7.5rem;
|
||||
|
||||
.field-group-label {
|
||||
min-width: 42rem;
|
||||
max-width: 42rem;
|
||||
}
|
||||
|
||||
.safe-address-wrapper {
|
||||
width: 100%;
|
||||
|
||||
.general-input-wrapper {
|
||||
|
||||
.contact-option-icon {
|
||||
.icon-sizing(4rem, 4rem, -4rem, -5rem);
|
||||
min-width: 4rem;
|
||||
visibility: hidden;
|
||||
align-self: flex-end;
|
||||
margin: 1.5rem 0 1.5rem 2rem;
|
||||
|
||||
&:hover {
|
||||
color: @program-hover-color;
|
||||
}
|
||||
|
||||
&.hovered:before {
|
||||
content: 'A';
|
||||
}
|
||||
}
|
||||
|
||||
&:hover {
|
||||
|
||||
.contact-option-icon {
|
||||
cursor: pointer;
|
||||
visibility: visible;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.safe-alias-modal {
|
||||
margin-top: 4rem;
|
||||
}
|
||||
|
||||
.contacts-data-btn-wrapper {
|
||||
.flex-container;
|
||||
flex-wrap: wrap;
|
||||
|
||||
.contacts-data-btn {
|
||||
.flex-container-direction(row);
|
||||
.flex-container-alignment(center, center);
|
||||
background: transparent;
|
||||
border: none;
|
||||
color: @contacts-accounts-btn-text-color;
|
||||
font-size: 3rem;
|
||||
margin: 3rem 13rem 0 0;
|
||||
padding: 0;
|
||||
|
||||
.base-icon {
|
||||
.icon-sizing(6rem, 6rem, -3rem, -4rem);
|
||||
margin-right: 1.5rem;
|
||||
margin-left: -0.5rem;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
color: @program-hover-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.contact-connection-wrapper {
|
||||
.flex-container;
|
||||
width: 100%;
|
||||
|
||||
.messenger-type, angucomplete-alt {
|
||||
margin-right: 6.5rem;
|
||||
min-width: 37%;
|
||||
width: 37%;
|
||||
}
|
||||
}
|
||||
|
||||
.add-contact-btn {
|
||||
.flex-container-direction(row);
|
||||
.flex-container-alignment(center, center);
|
||||
background: transparent;
|
||||
border: none;
|
||||
color: @contacts-accounts-btn-text-color;
|
||||
font-size: 3rem;
|
||||
line-height: 7rem;
|
||||
margin: 0 0 0.25rem;
|
||||
padding: 0;
|
||||
|
||||
.base-icon {
|
||||
.icon-sizing(6rem, 6rem, -3rem, -4rem);
|
||||
margin-right: 1.5rem;
|
||||
margin-left: -0.5rem;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
color: @program-hover-color;
|
||||
}
|
||||
}
|
||||
|
||||
.edit-groups-field {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, flex-start);
|
||||
|
||||
.edit-groups-icon {
|
||||
.icon-sizing(5rem, 5rem, -3.5rem, -4.5rem);
|
||||
margin-right: 1.5rem;
|
||||
flex-shrink: 0;
|
||||
|
||||
&:before {
|
||||
content: '#';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.contact-payment-history {
|
||||
padding: 7rem 2.5rem 6rem;
|
||||
}
|
||||
|
||||
.contact-empty-payments {
|
||||
color: @program-empty-color;
|
||||
font-size: 3.75rem;
|
||||
line-height: 5.5rem;
|
||||
padding: 12.5rem 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.delete-contact-btn {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, center);
|
||||
background: transparent;
|
||||
border: none;
|
||||
color: @program-dark-color;
|
||||
font-size: 4.25rem;
|
||||
margin: 1rem auto 0;
|
||||
padding: 0;
|
||||
|
||||
.base-icon {
|
||||
.icon-sizing(5rem, 4rem, -3.5rem, -5rem);
|
||||
margin-right: 3rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,221 +0,0 @@
|
|||
@import "../variables";
|
||||
@import "mixins";
|
||||
|
||||
#dashboard {
|
||||
padding: 0 8rem 2.5rem;
|
||||
|
||||
.main-options-wrapper {
|
||||
|
||||
.dashboard-options {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, space-between);
|
||||
margin-bottom: 7rem;
|
||||
|
||||
.top-options-list {
|
||||
.flex-container;
|
||||
justify-content: space-between;
|
||||
flex-grow: 1;
|
||||
|
||||
.top-options-item {
|
||||
background: rgba(255, 255, 255, 0.4);
|
||||
padding: 2.5rem 0;
|
||||
flex-basis: 25%;
|
||||
|
||||
.top-options-link {
|
||||
.flex-container-direction(row);
|
||||
.flex-container-alignment(center, center);
|
||||
height: 12rem;
|
||||
color: @dashboard-indicator-text-color;
|
||||
cursor: pointer;
|
||||
|
||||
.base-icon {
|
||||
.icon-sizing(12rem, 12rem, 0, -1rem);
|
||||
color: @dashboard-indicator-icon-color;
|
||||
margin-right: 1rem;
|
||||
}
|
||||
|
||||
.top-options-number {
|
||||
font-size: 8rem;
|
||||
font-weight: 200;
|
||||
line-height: 6rem;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
color: @program-main-color;
|
||||
|
||||
.base-icon {
|
||||
color: @program-main-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&:first-child {
|
||||
border-radius: 3rem 0 0 3rem;
|
||||
|
||||
.top-options-link {
|
||||
border-radius: 2.75rem 0 0 2.75rem;
|
||||
}
|
||||
}
|
||||
|
||||
&:not(:first-child) {
|
||||
border-left: none;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
border-radius: 0 3rem 3rem 0;
|
||||
|
||||
.top-options-link {
|
||||
border-radius: 0 2.75rem 2.75rem 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.dashboard-buttons {
|
||||
margin-top: 3rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.dashboard-slider-wrapper {
|
||||
margin: 0 -3.5rem;
|
||||
overflow: hidden;
|
||||
|
||||
.dashboard-slider {
|
||||
.flex-container;
|
||||
padding-top: 3rem;
|
||||
width: 200%;
|
||||
transition: 1s;
|
||||
|
||||
.dashboard-slider-item {
|
||||
max-width: 25%;
|
||||
min-width: 25%;
|
||||
padding: 0 3.5rem;
|
||||
transition: 1s;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.slider-control-wrapper {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, space-between);
|
||||
padding-top: 2.75rem;
|
||||
|
||||
.slider-control-btn {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, center);
|
||||
background: rgba(255, 255, 255, 0.7);
|
||||
border: 1px solid @dashboard-slider-border-color;
|
||||
border-radius: 100%;
|
||||
color: @dashboard-slider-icon-color;
|
||||
padding: 0;
|
||||
height: 7rem;
|
||||
width: 7rem;
|
||||
|
||||
.base-icon {
|
||||
.icon-sizing(4rem, 4rem, -3rem, -3.75rem);
|
||||
font-size: 12rem;
|
||||
}
|
||||
|
||||
&.prev-btn {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: white;
|
||||
color: @program-main-color;
|
||||
}
|
||||
}
|
||||
|
||||
.slider-status-wrapper {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, center);
|
||||
line-height: 0;
|
||||
list-style-type: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
|
||||
li {
|
||||
|
||||
.slider-status-btn {
|
||||
background: rgba(255, 255, 255, 0.5);
|
||||
border: none;
|
||||
border-radius: 100%;
|
||||
margin: 0 1rem;
|
||||
padding: 0;
|
||||
height: 2rem;
|
||||
width: 2rem;
|
||||
}
|
||||
|
||||
&.active-slide {
|
||||
|
||||
.slider-status-btn{
|
||||
background: white;
|
||||
border: 1px solid @dashboard-slider-border-color;
|
||||
height: 2.5rem;
|
||||
width: 2.5rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.add-widget-btn-wrapper {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, center);
|
||||
margin: 5rem auto;
|
||||
|
||||
.add-widget-btn {
|
||||
position: relative;
|
||||
|
||||
button {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, center);
|
||||
background: transparent;
|
||||
border: none;
|
||||
color: @program-dark-color;
|
||||
font-size: 4.25rem;
|
||||
padding: 0;
|
||||
|
||||
.base-icon {
|
||||
.icon-sizing(4rem, 4rem, -4rem, -5rem);
|
||||
margin-top: 0.5rem;
|
||||
margin-right: 1.5rem;
|
||||
z-index: -1;
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
.menu-list(inherit, 50%, inherit, 88rem);
|
||||
.flex-container-direction(row);
|
||||
flex-wrap: wrap;
|
||||
bottom: 0;
|
||||
transform: translateX(-50%) translateY(-2em);
|
||||
|
||||
li {
|
||||
flex-basis: 50%;
|
||||
flex-shrink: 0;
|
||||
|
||||
button {
|
||||
border-radius: 0 !important;
|
||||
}
|
||||
|
||||
&.last-element {
|
||||
flex-basis: 100%;
|
||||
|
||||
button {
|
||||
-webkit-justify-content: center;
|
||||
justify-content: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.open {
|
||||
.dropdown-menu {
|
||||
transform: translateX(-50%) translateY(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,134 +0,0 @@
|
|||
@import "../variables";
|
||||
|
||||
.datepicker {
|
||||
border: none !important;
|
||||
border-radius: 2.5rem !important;
|
||||
-webkit-box-shadow: @box-shadow !important;
|
||||
box-shadow: @box-shadow !important;
|
||||
font-family: 'Titillium Web', 'AgoraSansPro', sans-serif;
|
||||
width: 65rem !important;
|
||||
|
||||
.datepicker--pointer {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.datepicker--nav {
|
||||
border-bottom: none;
|
||||
|
||||
.datepicker--nav-action {
|
||||
|
||||
path {
|
||||
stroke: @datepicker-nav-action-color;
|
||||
stroke-width: 1px;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: none;
|
||||
}
|
||||
}
|
||||
|
||||
.datepicker--nav-title {
|
||||
color: @datepicker-nav-title-color;
|
||||
font-size: 4rem;
|
||||
text-transform: uppercase;
|
||||
font-style: normal !important;
|
||||
|
||||
i {
|
||||
color: @datepicker-nav-title-color;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.datepicker--content {
|
||||
color: @program-dark-color;
|
||||
font-size: 3.25rem;
|
||||
|
||||
.datepicker--body {
|
||||
|
||||
.datepicker--days-names {
|
||||
|
||||
.datepicker--day-name {
|
||||
color: @datepicker-day-name-color;
|
||||
font-size: 3.25rem;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
}
|
||||
|
||||
.datepicker--cells {
|
||||
justify-content: space-between;
|
||||
|
||||
.datepicker--cell {
|
||||
height: 7rem !important;
|
||||
width: 7rem !important;
|
||||
margin: 0.5rem;
|
||||
|
||||
&.-selected- {
|
||||
color: @program-dark-color;
|
||||
border-radius: 100%;
|
||||
background: @datepicker-cell-selected-color;
|
||||
|
||||
&:hover {
|
||||
color: @program-dark-color;
|
||||
background: @datepicker-cell-selected-color;
|
||||
}
|
||||
}
|
||||
|
||||
&.-focus- {
|
||||
border-radius: 100%;
|
||||
border: 1px solid @datepicker-cell-border-color;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
&.-disabled- {
|
||||
color: @program-dark-color;
|
||||
|
||||
&:hover {
|
||||
border: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
&.-other-month- {
|
||||
color: @datepicker-day-other-month-color;
|
||||
|
||||
&.-selected- {
|
||||
|
||||
&:hover {
|
||||
color: @datepicker-day-other-month-color;
|
||||
}
|
||||
}
|
||||
|
||||
&:hover {
|
||||
border-radius: 100%;
|
||||
border: 1px solid @datepicker-cell-border-color;
|
||||
}
|
||||
}
|
||||
|
||||
&.-current- {
|
||||
color: @program-dark-color;
|
||||
border-radius: 100%;
|
||||
border: 1px solid @datepicker-cell-border-color;
|
||||
|
||||
&.-selected- {
|
||||
|
||||
&:hover {
|
||||
color: @program-dark-color;
|
||||
background: @datepicker-cell-selected-color;
|
||||
}
|
||||
}
|
||||
|
||||
&:hover {
|
||||
border-radius: 100%;
|
||||
border: 1px solid @datepicker-cell-border-color;
|
||||
color: @program-dark-color;
|
||||
background: transparent;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,177 +0,0 @@
|
|||
@import "../variables";
|
||||
@import "mixins";
|
||||
|
||||
header {
|
||||
min-height: 36.5rem;
|
||||
min-width: @min-width;
|
||||
padding: 0 8rem 5.5rem;
|
||||
|
||||
.header-top-wrapper {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, space-between);
|
||||
min-height: 22rem;
|
||||
max-height: 22rem;
|
||||
|
||||
.header-options-wrapper {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, flex-start);
|
||||
height: 6rem;
|
||||
|
||||
.header-lock-btn {
|
||||
.icon-sizing(5rem, 8rem, -3.5rem, -3rem);
|
||||
color: @program-dark-color;
|
||||
cursor: pointer;
|
||||
margin-right: 10.5rem;
|
||||
}
|
||||
|
||||
.header-test-network {
|
||||
color: @program-light-color;
|
||||
font-size: 3.5rem;
|
||||
font-weight: 300;
|
||||
line-height: 6rem;
|
||||
margin-right: 9.5rem;
|
||||
.base-icon {
|
||||
color: @program-light-color;
|
||||
}
|
||||
}
|
||||
|
||||
.header-status {
|
||||
font-size: 3.5rem;
|
||||
font-weight: 300;
|
||||
line-height: 6rem;
|
||||
|
||||
&.online {
|
||||
color: @program-online-color;
|
||||
}
|
||||
|
||||
&.offline {
|
||||
color: @program-offline-color;
|
||||
}
|
||||
|
||||
&.loading {
|
||||
color: @program-light-color;
|
||||
}
|
||||
|
||||
&.sync-wrapper {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, center);
|
||||
color: @program-online-color;
|
||||
|
||||
.sync {
|
||||
padding-right: 4rem;
|
||||
}
|
||||
|
||||
progress[value] {
|
||||
-webkit-appearance: none;
|
||||
appearance: none;
|
||||
width: 36.5rem;
|
||||
height: 0.75rem;
|
||||
|
||||
&::-webkit-progress-bar{
|
||||
background-color: @program-progress-bar-bg-color;
|
||||
border-radius: 1rem;
|
||||
}
|
||||
|
||||
&::-webkit-progress-value{
|
||||
background-color: @program-progress-bar-fill-color;
|
||||
border-radius: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
.sync-percent {
|
||||
padding-left: 2.5rem;
|
||||
opacity: 0.5;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.header-logo-wrapper {
|
||||
|
||||
.header-logo {
|
||||
display: block;
|
||||
background: url("../img/logo.svg") center no-repeat;
|
||||
background-size: 100%;
|
||||
height: 7.5rem;
|
||||
width: 50rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.header-nav-wrapper {
|
||||
.flex-container;
|
||||
min-height: 10rem;
|
||||
max-height: 10rem;
|
||||
|
||||
.sidebar-nav {
|
||||
.flex-container;
|
||||
flex-grow: 1;
|
||||
|
||||
.nav-item {
|
||||
border-top: 1px solid @program-header-border-color;
|
||||
border-bottom: 1px solid @program-header-border-color;
|
||||
border-right: 1px solid @program-header-border-color;
|
||||
flex-grow: 1;
|
||||
text-align: center;
|
||||
height: 9rem;
|
||||
box-sizing: content-box;
|
||||
|
||||
.nav-item-link {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
background: white;
|
||||
border: none;
|
||||
color: @program-header-text-color;
|
||||
margin: 0;
|
||||
padding: 1.5rem 0;
|
||||
font-size: 4.25rem;
|
||||
line-height: 6rem;
|
||||
width: 100%;
|
||||
|
||||
.indicator-number {
|
||||
border-color: @program-header-indicator-border-color;
|
||||
color: @program-header-indicator-text-color;
|
||||
margin-left: 2.5rem;
|
||||
margin-right: -2rem;
|
||||
}
|
||||
|
||||
&:disabled {
|
||||
color: @program-header-text-blocked-color;
|
||||
}
|
||||
}
|
||||
|
||||
&:first-child {
|
||||
border-left: 1px solid @program-header-border-color;
|
||||
border-radius: 10rem 0 0 10rem;
|
||||
|
||||
.nav-item-link {
|
||||
border-radius: 9.75rem 0 0 9.75rem;
|
||||
}
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
border-radius: 0 10rem 10rem 0;
|
||||
|
||||
.nav-item-link {
|
||||
border-radius: 0 9.75rem 9.75rem 0;
|
||||
}
|
||||
}
|
||||
|
||||
&:hover:not(.active) {
|
||||
|
||||
.nav-item-link:not(:disabled) {
|
||||
background: @program-header-bg-hover-color;
|
||||
}
|
||||
}
|
||||
|
||||
&.active {
|
||||
|
||||
.nav-item-link {
|
||||
background: @program-header-bg-active-color;
|
||||
border-color: @program-header-bg-active-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,83 +0,0 @@
|
|||
@import "../variables";
|
||||
|
||||
.highcharts-container{
|
||||
width: 100%!important;
|
||||
}
|
||||
|
||||
.highcharts-background {
|
||||
fill-opacity: 0;
|
||||
}
|
||||
|
||||
.highcharts-tooltip {
|
||||
|
||||
span {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
|
||||
b {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.highcharts-input-group {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.highcharts-range-selector-buttons {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.highcharts-scrollbar-thumb{
|
||||
opacity: 1;
|
||||
stroke: @highcharts-scrollbar-color;
|
||||
}
|
||||
|
||||
.highcharts-scrollbar-arrow{
|
||||
display: none;
|
||||
}
|
||||
|
||||
.highcharts-scrollbar-rifles{
|
||||
stroke: @highcharts-scrollbar-color;
|
||||
}
|
||||
|
||||
.highcharts-axis.highcharts-xaxis {
|
||||
stroke: @highcharts-axis-line-color;
|
||||
|
||||
.highcharts-tick {
|
||||
stroke: @highcharts-axis-line-color;
|
||||
}
|
||||
|
||||
.highcharts-axis-line {
|
||||
stroke: @highcharts-axis-line-color;
|
||||
}
|
||||
}
|
||||
|
||||
.highcharts-grid.highcharts-xaxis-grid.highcharts-navigator-xaxis{
|
||||
stroke-opacity: 0;
|
||||
}
|
||||
|
||||
.highcharts-label-box.highcharts-tooltip-box {
|
||||
filter: url("#dropShadow");
|
||||
|
||||
&:nth-child(1) {
|
||||
fill-opacity: 0;
|
||||
stroke-opacity: 0;
|
||||
}
|
||||
|
||||
&:nth-child(2) {
|
||||
fill-opacity: 0;
|
||||
stroke-opacity: 0;
|
||||
}
|
||||
|
||||
&:nth-child(3) {
|
||||
fill-opacity: 0;
|
||||
stroke-opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
feFlood {
|
||||
flood-color: #1f360b;
|
||||
}
|
||||
|
|
@ -1,239 +0,0 @@
|
|||
@import "../variables";
|
||||
@import "mixins";
|
||||
|
||||
#history {
|
||||
padding: 2.5rem 8rem;
|
||||
}
|
||||
|
||||
.history-options {
|
||||
.flex-container-direction(row);
|
||||
.flex-container-alignment(center, flex-start);
|
||||
position: relative;
|
||||
margin-bottom: 7rem;
|
||||
|
||||
.history-search {
|
||||
margin-left: 3.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
.history-table {
|
||||
margin-bottom: 3rem;
|
||||
|
||||
table {
|
||||
|
||||
thead {
|
||||
|
||||
tr {
|
||||
font-size: 3.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
tr {
|
||||
|
||||
th:first-child {
|
||||
padding-left: 0;
|
||||
padding-right: 10rem;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
td:first-child {
|
||||
position: relative;
|
||||
padding-left: 0;
|
||||
padding-right: 10rem;
|
||||
|
||||
&::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
&.history-marker::after {
|
||||
border-left: 1rem solid @marker-light-green;
|
||||
}
|
||||
}
|
||||
|
||||
td:last-child {
|
||||
width: 14rem;
|
||||
}
|
||||
|
||||
&.transaction-blocked {
|
||||
background-color: @history-transaction-blocked-border-color !important;
|
||||
color: @history-transaction-blocked-text-color;
|
||||
|
||||
.transaction-status-indicator {
|
||||
|
||||
.status-graph {
|
||||
|
||||
&.income {
|
||||
stroke: @history-transaction-blocked-status-income-color !important;
|
||||
}
|
||||
|
||||
&.outgoing {
|
||||
stroke: @history-transaction-blocked-status-outgoing-color !important;
|
||||
}
|
||||
}
|
||||
|
||||
.status-inner {
|
||||
|
||||
.base-icon.income {
|
||||
color: @history-transaction-blocked-status-income-color !important;
|
||||
}
|
||||
|
||||
.base-icon.outgoing {
|
||||
color: @history-transaction-blocked-status-outgoing-color !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.safe-address {
|
||||
|
||||
.safe-address-wrap {
|
||||
color: @history-transaction-blocked-text-color;
|
||||
|
||||
.safe-address-text {
|
||||
background: -webkit-linear-gradient(left, @history-transaction-blocked-text-color 0, @history-transaction-blocked-text-color 75%, transparent 100%);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.safe-alias {
|
||||
|
||||
.safe-alias-btn {
|
||||
background-color: fade(@history-transaction-blocked-text-color, 20%);
|
||||
border-color: @history-transaction-blocked-alias-color;
|
||||
color: @history-transaction-blocked-text-color;
|
||||
}
|
||||
}
|
||||
|
||||
.history-date {
|
||||
|
||||
&:hover {
|
||||
color: @history-transaction-blocked-hover-color;
|
||||
|
||||
.base-icon {
|
||||
color: @history-transaction-blocked-hover-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.history-safe {
|
||||
|
||||
&:hover {
|
||||
color: @history-transaction-blocked-hover-color;
|
||||
}
|
||||
}
|
||||
|
||||
&:hover {
|
||||
|
||||
.history-date {
|
||||
|
||||
.base-icon {
|
||||
opacity: 0.6;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&:hover {
|
||||
|
||||
.history-date {
|
||||
|
||||
.base-icon {
|
||||
opacity: 0.3;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.transaction-status-indicator {
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.history-safe {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, flex-start);
|
||||
|
||||
.history-anonym-icon {
|
||||
.icon-sizing(4rem, 5rem, -4rem, -4.5rem);
|
||||
margin-right: 2rem;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
color: @program-hover-color;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
.history-date {
|
||||
.flex-container-alignment(center, flex-start);
|
||||
display: inline-flex;
|
||||
|
||||
.base-icon {
|
||||
.icon-sizing(5rem, 5rem, -3.5rem, -4.5rem);
|
||||
margin-left: 2rem;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
color: @program-hover-color;
|
||||
cursor: pointer;
|
||||
|
||||
.base-icon {
|
||||
color: @program-hover-color;
|
||||
opacity: 0.3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.history-counterparty {
|
||||
.flex-container-direction(column);
|
||||
max-width: 75rem;
|
||||
|
||||
.safe-address {
|
||||
font-size: 3.25rem;
|
||||
margin-top: 0.75rem;
|
||||
margin-bottom: 0.75rem;
|
||||
|
||||
.safe-address-wrap {
|
||||
width: 40rem;
|
||||
}
|
||||
|
||||
.safe-address-inner {
|
||||
left: inherit;
|
||||
right: 0;
|
||||
width: 150%;
|
||||
}
|
||||
}
|
||||
|
||||
alias-display:not(.safe-address-inner-alias) {
|
||||
display: inline-flex;
|
||||
|
||||
.safe-alias {
|
||||
margin-top: 0.75rem;
|
||||
margin-bottom: 0.75rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.history-comment-wrapper {
|
||||
.flex-container;
|
||||
|
||||
.base-icon {
|
||||
.icon-sizing(4rem, 4rem, -4rem, -5rem);
|
||||
|
||||
&:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.contact-btn {
|
||||
margin-top: 1.5rem;
|
||||
padding: 0 1rem;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,296 +0,0 @@
|
|||
@import "../variables";
|
||||
@import "mixins";
|
||||
|
||||
#mining {
|
||||
padding: 2.5rem 8rem;
|
||||
|
||||
.main-options-wrapper {
|
||||
|
||||
.mining-options {
|
||||
margin-bottom: 8rem;
|
||||
}
|
||||
}
|
||||
|
||||
.calculate-options {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, space-between);
|
||||
color: @program-main-color;
|
||||
height: 30.5rem;
|
||||
padding: 2.5rem 11rem 0;
|
||||
|
||||
.calculate-tile {
|
||||
.flex-container;
|
||||
font-size: 3.5rem;
|
||||
|
||||
label {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, flex-end);
|
||||
font-weight: 600;
|
||||
height: 7rem;
|
||||
line-height: 4.5rem;
|
||||
margin-bottom: 0;
|
||||
max-width: 45rem;
|
||||
padding-right: 3rem;
|
||||
text-align: end;
|
||||
}
|
||||
|
||||
.general-input-wrapper {
|
||||
width: 42rem;
|
||||
}
|
||||
|
||||
.calculate-mining-btn {
|
||||
border: 1px solid @mining-range-border-color;
|
||||
height: 8rem;
|
||||
width: 44rem;
|
||||
font-size: 4rem;
|
||||
margin-left: 3rem;
|
||||
}
|
||||
|
||||
&:hover, &.focused-line {
|
||||
|
||||
label {
|
||||
color: @program-hover-color;
|
||||
}
|
||||
|
||||
.general-input-wrapper {
|
||||
border-bottom-color: @program-hover-color;
|
||||
|
||||
.general-input {
|
||||
color: @program-hover-color;
|
||||
}
|
||||
|
||||
::-webkit-input-placeholder {
|
||||
color: @program-input-placeholder-hover-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.chart-wrapper {
|
||||
padding-top: 1rem;
|
||||
padding-bottom: 5rem;
|
||||
transition: all 0.5s linear;
|
||||
overflow: hidden;
|
||||
|
||||
.chart-label {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, center);
|
||||
position: relative;
|
||||
color: @program-dark-color;
|
||||
font-size: 5rem;
|
||||
font-style: italic;
|
||||
font-weight: 300;
|
||||
padding-top: 5rem;
|
||||
padding-bottom: 1rem;
|
||||
|
||||
.base-icon {
|
||||
.icon-sizing(4rem, 4rem, -4rem, -5rem);
|
||||
top: -1rem;
|
||||
right: -1rem;
|
||||
color: @program-label-info-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.mining-select-wrapper {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, space-between);
|
||||
flex-grow: 1;
|
||||
|
||||
.mining-select {
|
||||
.flex-container;
|
||||
|
||||
.dropdown-toggle {
|
||||
border-bottom: none;
|
||||
color: @program-hover-color;
|
||||
font-size: 5rem;
|
||||
line-height: 6rem;
|
||||
padding: 0 3rem 0 0;
|
||||
|
||||
.caret {
|
||||
color: @program-hover-color;
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
border-radius: 2rem;
|
||||
min-width: 44rem;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
&.mining-safe {
|
||||
padding-left: 5rem;
|
||||
}
|
||||
|
||||
&.mining-view {
|
||||
padding-left: 5rem;
|
||||
padding-right: 6rem;
|
||||
|
||||
.dropdown-menu {
|
||||
right: 0;
|
||||
left: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.mined-empty {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, center);
|
||||
color: @program-empty-color;
|
||||
font-size: 3.75rem;
|
||||
height: 35rem;
|
||||
}
|
||||
|
||||
.mined-statistics {
|
||||
padding: 3rem 0;
|
||||
|
||||
.mined-statistics-options {
|
||||
.flex-container;
|
||||
.flex-container-alignment(flex-start, space-between);
|
||||
padding: 7rem 7rem 0;
|
||||
|
||||
.chart-range-wrapper {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, space-between);
|
||||
margin-top: 1rem;
|
||||
|
||||
.chart-range-group {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, center);
|
||||
color: @program-dark-color;
|
||||
font-size: 3rem;
|
||||
|
||||
.chart-range-selector {
|
||||
.flex-container;
|
||||
margin: 0 2.5rem;
|
||||
padding: 0;
|
||||
|
||||
li {
|
||||
border: 1px solid @mining-range-border-color;
|
||||
color: @mining-range-text-color;
|
||||
line-height: 5.5rem;
|
||||
height: 6rem;
|
||||
width: 13rem;
|
||||
text-align: center;
|
||||
list-style-type: none;
|
||||
|
||||
&:first-child {
|
||||
border-radius: 3rem 0 0 3rem;
|
||||
width: 13.5rem;
|
||||
}
|
||||
|
||||
&:not(:first-child) {
|
||||
border-left: none;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
border-radius: 0 3rem 3rem 0;
|
||||
width: 13.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
.active {
|
||||
background: white;
|
||||
color: @program-dark-color;
|
||||
}
|
||||
}
|
||||
|
||||
&:first-child {
|
||||
margin-right: 8.5rem;
|
||||
|
||||
@media screen and (max-width: 1150px) {
|
||||
margin-right: 2.5rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.total-mined-chart {
|
||||
color: @program-dark-color;
|
||||
font-size: 5rem;
|
||||
font-style: italic;
|
||||
font-weight: 300;
|
||||
line-height: 7rem;
|
||||
white-space: nowrap;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.total-mined-table {
|
||||
color: @program-dark-color;
|
||||
font-size: 5rem;
|
||||
font-style: italic;
|
||||
font-weight: 300;
|
||||
line-height: 7rem;
|
||||
text-align: right;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.statistics-table {
|
||||
margin: 8rem 2.5rem 2.5rem;
|
||||
overflow: hidden;
|
||||
transition: height 1s;
|
||||
|
||||
table {
|
||||
|
||||
tbody {
|
||||
|
||||
tr {
|
||||
|
||||
td {
|
||||
width: 33.33%;
|
||||
|
||||
.order-icon {
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
&:first-child {
|
||||
position: relative;
|
||||
padding-left: 8rem;
|
||||
|
||||
&::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
border-left: 1rem solid @marker-light-green;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.pagination-wrapper {
|
||||
margin: 5rem 2.5rem 3rem;
|
||||
|
||||
.pagination {
|
||||
|
||||
.pages {
|
||||
color: @program-pagination-text-inactive-color;
|
||||
}
|
||||
|
||||
.next-page, .prev-page {
|
||||
background-color: transparent;
|
||||
border-color: @program-main-color;
|
||||
color: @program-main-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#chart-calculate {
|
||||
width: 100%;
|
||||
height: 70rem;
|
||||
}
|
||||
|
||||
#chart-statistics{
|
||||
width: 100%;
|
||||
height: 142rem;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,113 +0,0 @@
|
|||
@import "../variables";
|
||||
|
||||
.flex-container {
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.flex-container-direction(@direction) {
|
||||
.flex-container;
|
||||
-webkit-flex-direction: @direction;
|
||||
flex-direction: @direction;
|
||||
}
|
||||
|
||||
.flex-container-alignment(@align-items, @justify-content) {
|
||||
-webkit-align-items: @align-items;
|
||||
align-items: @align-items;
|
||||
-webkit-justify-content: @justify-content;
|
||||
justify-content: @justify-content;
|
||||
}
|
||||
|
||||
.general-button(@width, @height) {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, center);
|
||||
background: fade(white, 40%);
|
||||
border: none;
|
||||
border-radius: 10rem;
|
||||
padding: 0 3rem;
|
||||
height: @height;
|
||||
width: @width;
|
||||
|
||||
&:hover {
|
||||
background: fade(white, 55%);
|
||||
}
|
||||
|
||||
&:active {
|
||||
background: fade(white, 55%);
|
||||
}
|
||||
}
|
||||
|
||||
.icon-sizing(@height, @width, @top, @left) {
|
||||
width: @width;
|
||||
height: @height;
|
||||
|
||||
&:before {
|
||||
top: @top;
|
||||
left: @left;
|
||||
}
|
||||
}
|
||||
|
||||
.menu-list(@top, @left, @right, @width) {
|
||||
position: absolute;
|
||||
top: @top;
|
||||
left: @left;
|
||||
right: @right;
|
||||
min-width: @width;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: none;
|
||||
box-shadow: @box-shadow;
|
||||
border-radius: 2rem;
|
||||
overflow: hidden;
|
||||
|
||||
li {
|
||||
width: 100%;
|
||||
|
||||
button {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, flex-start);
|
||||
background: transparent;
|
||||
border: none;
|
||||
color: @program-exuding-color;
|
||||
font-size: 3.5rem;
|
||||
height: 8.25rem;
|
||||
padding-left: 3rem;
|
||||
text-align: left;
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
|
||||
&:disabled {
|
||||
color: @program-light-color;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
|
||||
&:not(:disabled) {
|
||||
background: @program-select-hover-color;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&:first-child {
|
||||
|
||||
button {
|
||||
border-top-left-radius: 2rem;
|
||||
border-top-right-radius: 2rem;
|
||||
}
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
|
||||
button {
|
||||
border-bottom-left-radius: 2rem;
|
||||
border-bottom-right-radius: 2rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.menu-divider {
|
||||
border-top: 1px solid @program-divider-color;
|
||||
margin: 0 3.5rem;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,125 +0,0 @@
|
|||
@import "../variables";
|
||||
@import "mixins";
|
||||
|
||||
.page-empty {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, center);
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
z-index: -1;
|
||||
color: @program-exuding-color;
|
||||
text-align: center;
|
||||
min-height: 150rem;
|
||||
|
||||
.one-block {
|
||||
display: inline-block;
|
||||
width: 112rem;
|
||||
|
||||
&.wider-block {
|
||||
width: 140rem;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 10.75rem;
|
||||
font-weight: 200;
|
||||
margin-top:6.5rem;
|
||||
}
|
||||
|
||||
span {
|
||||
font-size: 6.25rem;
|
||||
margin-top: 5.5rem;
|
||||
font-weight: 200;
|
||||
line-height: 9.5rem;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.dashboard-empty {
|
||||
z-index: 0;
|
||||
margin: 18rem 8rem;
|
||||
min-height: 100rem;
|
||||
|
||||
.main-block {
|
||||
display: block;
|
||||
height: 100%;
|
||||
padding: 0 30rem;
|
||||
overflow: hidden;
|
||||
|
||||
.main-block-row {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, space-between);
|
||||
width: 155rem;
|
||||
height: 100%;
|
||||
transition: transform 0.5s ease-in-out;
|
||||
|
||||
.main-block-col {
|
||||
.flex-container-direction(column);
|
||||
.flex-container-alignment(center, center);
|
||||
position: relative;
|
||||
margin-bottom: 0;
|
||||
width: 55rem;
|
||||
transition: all 0.2s ease-in-out;
|
||||
|
||||
.main-block-icon {
|
||||
|
||||
&.dashboard-create-safe {
|
||||
background: url('../img/createsafe.svg') no-repeat center;
|
||||
background-size: 100%;
|
||||
width: 50rem;
|
||||
height: 16rem;
|
||||
}
|
||||
|
||||
&.dashboard-open-safe {
|
||||
background: url('../img/opensafe.svg') no-repeat center;
|
||||
background-size: 100%;
|
||||
width: 50rem;
|
||||
height: 20rem;
|
||||
margin-top: -4rem;
|
||||
}
|
||||
|
||||
&.dashboard-open-file-safe {
|
||||
background: url('../img/openfilesafe.svg') no-repeat center;
|
||||
background-size: 100%;
|
||||
width: 50rem;
|
||||
height: 16rem;
|
||||
margin-top: -1.5rem;
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
&.dashboard-open-smartsafe {
|
||||
background: url('../img/opensmartsafe.svg') no-repeat center;
|
||||
background-size: 100%;
|
||||
width: 50rem;
|
||||
height: 16rem;
|
||||
margin-top: -1.5rem;
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
.main-block-title {
|
||||
font-size: 9.5rem;
|
||||
font-weight: 200;
|
||||
line-height: 24rem;
|
||||
margin-bottom: 3rem;
|
||||
white-space: nowrap;
|
||||
|
||||
&.smaller-size {
|
||||
font-size: 8rem;
|
||||
}
|
||||
}
|
||||
|
||||
&:hover {
|
||||
margin-top: -3rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.slide-up {
|
||||
transform: translateY(-100%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,118 +0,0 @@
|
|||
@import "../variables";
|
||||
@import "mixins";
|
||||
|
||||
.main-options-wrapper {
|
||||
|
||||
.page-title {
|
||||
color: @program-dark-color;
|
||||
font-size: 8rem;
|
||||
font-weight: 300;
|
||||
line-height: 9rem;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.back-btn {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, center);
|
||||
background: transparent;
|
||||
border: none;
|
||||
color: @program-dark-color;
|
||||
font-size: 3.75rem;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
|
||||
.base-icon {
|
||||
.icon-sizing(3rem, 2rem, -4.5rem, -6rem);
|
||||
margin-right: 2rem;
|
||||
margin-bottom: -0.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
.main-options-btn {
|
||||
.general-button(auto, 8.25rem);
|
||||
color: @program-button-text-color;
|
||||
font-size: 4.25rem;
|
||||
min-width: 45rem;
|
||||
|
||||
&.disabled {
|
||||
color: @program-light-color;
|
||||
cursor: default;
|
||||
|
||||
&:hover {
|
||||
background: fade(white, 55%);
|
||||
}
|
||||
|
||||
&:active {
|
||||
background: fade(white, 55%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.main-options-btn-group {
|
||||
.flex-container-direction(row);
|
||||
border-radius: 10rem;
|
||||
|
||||
.main-options-btn {
|
||||
border-radius: 0;
|
||||
min-width: 33rem;
|
||||
|
||||
&.button-in-group {
|
||||
border-right: 1px solid @program-button-divider-color;
|
||||
|
||||
&:first-child {
|
||||
border-top-left-radius: 10rem;
|
||||
border-bottom-left-radius: 10rem;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
border-top-right-radius: 10rem;
|
||||
border-bottom-right-radius: 10rem;
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&.button-in-dropdown {
|
||||
border-top-right-radius: 10rem;
|
||||
border-bottom-right-radius: 10rem;
|
||||
|
||||
.base-icon {
|
||||
.icon-sizing(2rem, 2rem, -4rem, -5rem);
|
||||
margin-top: 0.5rem;
|
||||
margin-left: 2rem;
|
||||
font-size: 12rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown.open {
|
||||
|
||||
.button-in-dropdown {
|
||||
background: rgba(255, 255, 255, 0.55)!important;
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
.menu-list(10.5rem, inherit, -0.75rem, 47rem);
|
||||
border-radius: 3rem;
|
||||
|
||||
li {
|
||||
height: auto;
|
||||
|
||||
button {
|
||||
font-size: 3.75rem;
|
||||
padding: 1.5rem 4rem;
|
||||
}
|
||||
|
||||
&:first-child {
|
||||
border-top-left-radius: 3rem;
|
||||
border-top-right-radius: 3rem;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
border-bottom-left-radius: 3rem;
|
||||
border-bottom-right-radius: 3rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,119 +0,0 @@
|
|||
@import "../variables";
|
||||
@import "mixins";
|
||||
|
||||
.pagination-wrapper {
|
||||
.flex-container-direction(row);
|
||||
.flex-container-alignment(center, space-between);
|
||||
|
||||
.display {
|
||||
.flex-container-direction(row);
|
||||
.flex-container-alignment(center, space-between);
|
||||
font-size: 3.75rem;
|
||||
|
||||
.display-text {
|
||||
color: @program-pagination-text-color;
|
||||
margin-right: 2rem;
|
||||
}
|
||||
|
||||
.display-values {
|
||||
.flex-container-direction(row);
|
||||
color: @program-pagination-text-inactive-color;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
|
||||
li {
|
||||
display: inline-block;
|
||||
margin: 0 2rem;
|
||||
width: 4rem;
|
||||
|
||||
&:hover {
|
||||
color: @program-pagination-text-color;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
&.active {
|
||||
color: @program-pagination-text-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.show-all {
|
||||
.flex-container;
|
||||
color: @program-pagination-text-color;
|
||||
cursor: pointer;
|
||||
|
||||
.base-icon {
|
||||
.icon-sizing(6rem, 6rem, -3rem, -4rem);
|
||||
margin-right: 2rem;
|
||||
|
||||
&.rotate-icon {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
}
|
||||
|
||||
.show-all-text {
|
||||
font-size: 3.75rem;
|
||||
line-height: 6rem;
|
||||
}
|
||||
}
|
||||
|
||||
.pagination {
|
||||
.flex-container-direction(row);
|
||||
.flex-container-alignment(center, space-between);
|
||||
margin: 0;
|
||||
|
||||
.prev-page, .next-page {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, center);
|
||||
background-color: fade(white, 30%);
|
||||
border: 1px solid @program-pagination-border-color;
|
||||
border-radius: 3rem;
|
||||
color: white;
|
||||
height: 6rem;
|
||||
width: 7.5rem;
|
||||
|
||||
.pagination-arrow {
|
||||
.icon-sizing(4rem, 4rem, -3rem, -3.75rem);
|
||||
font-size: 12rem;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background-color: fade(white, 45%);
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
.prev-page {
|
||||
|
||||
.pagination-arrow {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
}
|
||||
|
||||
.pages {
|
||||
|
||||
.flex-container;
|
||||
|
||||
color: @program-pagination-pages-color;
|
||||
font-size: 3.75rem;
|
||||
margin: 0 2.5rem;
|
||||
|
||||
span {
|
||||
margin: 0 0.5rem;
|
||||
}
|
||||
|
||||
.active-page {
|
||||
width: 6rem;
|
||||
|
||||
.general-input{
|
||||
border-bottom: none;
|
||||
color: white;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,212 +0,0 @@
|
|||
@import "../variables";
|
||||
@import "mixins";
|
||||
|
||||
.general-panel {
|
||||
background: @program-panel-bg-color;
|
||||
border: 1px solid @program-panel-border-color;
|
||||
border-radius: 3rem;
|
||||
margin-bottom: 6rem;
|
||||
|
||||
.general-panel-header {
|
||||
.flex-container-direction(row);
|
||||
.flex-container-alignment(center, flex-start);
|
||||
background-color: @program-panel-header-bg-color;
|
||||
border-top-left-radius: 2.75rem;
|
||||
border-top-right-radius: 2.75rem;
|
||||
color: @program-dark-color;
|
||||
font-size: 5rem;
|
||||
height: 13rem;
|
||||
padding-left: 4rem;
|
||||
|
||||
.general-panel-header-arrow {
|
||||
.icon-sizing(2rem, 2rem, -5rem, -6rem);
|
||||
cursor: pointer;
|
||||
margin-left: 2rem;
|
||||
}
|
||||
|
||||
&.closed-panel {
|
||||
border-bottom: none;
|
||||
border-bottom-left-radius: 2.75rem;
|
||||
border-bottom-right-radius: 2.75rem;
|
||||
|
||||
.general-panel-header-arrow {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.general-panel-body {
|
||||
border-bottom-left-radius: 2.75rem;
|
||||
border-bottom-right-radius: 2.75rem;
|
||||
|
||||
.adaptive-form {
|
||||
.flex-container-direction(column);
|
||||
color: @program-exuding-color;
|
||||
padding-left: 32rem;
|
||||
padding-right: 37rem;
|
||||
|
||||
i {
|
||||
display: flex;
|
||||
|
||||
&.option-icon {
|
||||
align-self: flex-end;
|
||||
margin: 1.5rem 0 1.5rem 2rem;
|
||||
}
|
||||
}
|
||||
|
||||
.adaptive-form-column {
|
||||
width: 100%;
|
||||
|
||||
.adaptive-form-field-group {
|
||||
.flex-container-direction(row);
|
||||
|
||||
.field-group-label {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, flex-end);
|
||||
position: relative;
|
||||
color: @program-label-color;
|
||||
font-size: 3.5rem;
|
||||
font-weight: 600;
|
||||
line-height: 3.5rem;
|
||||
height: 7rem;
|
||||
padding-right: 2.5rem;
|
||||
margin: 0;
|
||||
min-width: 31rem;
|
||||
max-width: 31rem;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.field-group-error-wrapper {
|
||||
.flex-container-direction(column);
|
||||
width: 100%;
|
||||
|
||||
.field-group-error {
|
||||
display: block;
|
||||
color: @error-color;
|
||||
font-size: 3.25rem;
|
||||
line-height: 2.75rem;
|
||||
font-style: italic;
|
||||
margin-top: 1.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
.general-input {
|
||||
|
||||
&:hover, &:focus, &:active {
|
||||
|
||||
&:read-only:not(.no-hover) {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&:hover, &.focused-line {
|
||||
|
||||
&:not(.no-hover) {
|
||||
color: @program-hover-color;
|
||||
|
||||
.general-input {
|
||||
border-bottom-color: @program-hover-color;
|
||||
color: @program-hover-color;
|
||||
|
||||
&::-webkit-input-placeholder {
|
||||
color: @program-input-placeholder-hover-color;
|
||||
}
|
||||
}
|
||||
|
||||
.general-input-wrapper {
|
||||
border-bottom-color: @program-hover-color;
|
||||
color: @program-hover-color;
|
||||
|
||||
::-webkit-input-placeholder {
|
||||
color: @program-input-placeholder-hover-color;
|
||||
}
|
||||
}
|
||||
|
||||
.general-textarea {
|
||||
border-bottom-color: @program-hover-color;
|
||||
color: @program-hover-color;
|
||||
|
||||
&::-webkit-input-placeholder {
|
||||
color: @program-input-placeholder-hover-color;
|
||||
}
|
||||
}
|
||||
|
||||
.general-select {
|
||||
|
||||
.dropdown-toggle {
|
||||
color: @program-hover-color;
|
||||
border-bottom-color: @program-hover-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.option-icon {
|
||||
cursor: pointer;
|
||||
visibility: visible;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 1085px) and (max-width: 1164px) {
|
||||
padding-left: 47rem;
|
||||
padding-right: 52rem;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 1165px) and (max-width: 1334px) {
|
||||
.flex-container-direction(row);
|
||||
padding-left: 9.5rem;
|
||||
padding-right: 21.5rem;
|
||||
|
||||
.adaptive-form-column {
|
||||
width: 50%;
|
||||
|
||||
&:first-child {
|
||||
margin-right: 9.5rem;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
margin-left: 9.5rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 1335px) and (max-width: 1614px) {
|
||||
.flex-container-direction(row);
|
||||
padding-left: 16.5rem;
|
||||
padding-right: 23.5rem;
|
||||
|
||||
.adaptive-form-column {
|
||||
width: 50%;
|
||||
|
||||
&:first-child {
|
||||
margin-right: 9.5rem;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
margin-left: 9.5rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 1615px) {
|
||||
.flex-container-direction(row);
|
||||
padding-left: 25rem;
|
||||
padding-right: 31rem;
|
||||
|
||||
.adaptive-form-column {
|
||||
width: 50%;
|
||||
|
||||
&:first-child {
|
||||
margin-right: 9.5rem;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
margin-left: 9.5rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,84 +0,0 @@
|
|||
@import "../variables";
|
||||
@import "mixins";
|
||||
|
||||
#settings {
|
||||
padding: 2.5rem 8rem;
|
||||
|
||||
.main-options-wrapper {
|
||||
|
||||
.settings-options {
|
||||
.flex-container-direction(row);
|
||||
.flex-container-alignment(center, space-between);
|
||||
}
|
||||
}
|
||||
|
||||
.settings-panel {
|
||||
background: @program-panel-bg-color;
|
||||
border: 1px solid @program-panel-border-color;
|
||||
border-radius: 3rem;
|
||||
width: 100%;
|
||||
|
||||
.settings-panel-header {
|
||||
background-color: fade(@program-panel-border-color, 30%);
|
||||
border-top-left-radius: 2.75rem;
|
||||
border-top-right-radius: 2.75rem;
|
||||
color: @program-dark-color;
|
||||
height: 21rem;
|
||||
padding-left: 6rem;
|
||||
|
||||
h3 {
|
||||
font-size: 5rem;
|
||||
line-height: 21rem;
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.settings-panel-body {
|
||||
|
||||
.settings-panel-body-item {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, space-between);
|
||||
color: @program-main-color;
|
||||
font-size: 4rem;
|
||||
height: 21rem;
|
||||
padding-left: 6rem;
|
||||
padding-right: 7rem;
|
||||
|
||||
.general-select {
|
||||
max-width: 51.5rem;
|
||||
.dropdown-menu {
|
||||
&.open {
|
||||
max-height: 32rem !important;
|
||||
.inner{
|
||||
max-height: inherit !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.general-range-wrapper {
|
||||
width: 76rem;
|
||||
}
|
||||
|
||||
.settings-btn {
|
||||
font-size: 4rem;
|
||||
height: 8.5rem;
|
||||
width: 32rem;
|
||||
}
|
||||
|
||||
&:nth-child(even) {
|
||||
background-color: fade(@program-panel-border-color, 30%);
|
||||
}
|
||||
|
||||
&:first-child {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
border-bottom-left-radius: 2.75rem;
|
||||
border-bottom-right-radius: 2.75rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,228 +0,0 @@
|
|||
@import "../variables";
|
||||
@import "mixins";
|
||||
|
||||
.table-wrapper {
|
||||
background: @program-table-bg-color;
|
||||
border: 1px solid @program-table-border-color;
|
||||
border-radius: 3rem;
|
||||
-webkit-transform: translateZ(0);
|
||||
transform: translateZ(0);
|
||||
|
||||
table {
|
||||
border-radius: 3rem;
|
||||
width: 100%;
|
||||
|
||||
thead {
|
||||
|
||||
tr {
|
||||
background-color: @program-table-header-bg-color;
|
||||
border: none;
|
||||
border-top-left-radius: 2.75rem;
|
||||
border-top-right-radius: 2.75rem;
|
||||
color: @program-exuding-color;
|
||||
font-size: 3.5rem;
|
||||
height: 18rem;
|
||||
|
||||
th {
|
||||
font-weight: 400;
|
||||
padding: 0 1rem;
|
||||
text-transform: uppercase;
|
||||
white-space: nowrap;
|
||||
|
||||
.ordered-cell {
|
||||
.flex-container-direction(row);
|
||||
.flex-container-alignment(center, flex-start);
|
||||
|
||||
.order-icon {
|
||||
.icon-sizing(2rem, 2rem, -5rem, -6rem);
|
||||
color: @program-light-color;
|
||||
cursor: pointer;
|
||||
margin-left: 2rem;
|
||||
|
||||
&.rotate-icon {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
&.active {
|
||||
color: @program-exuding-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&:first-child {
|
||||
border-top-left-radius: 2.75rem;
|
||||
padding-left: 4rem;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
border-top-right-radius: 2.75rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tbody {
|
||||
|
||||
tr {
|
||||
border: none;
|
||||
color: @program-main-color;
|
||||
font-size: 3.5rem;
|
||||
height: 18rem;
|
||||
overflow: hidden;
|
||||
|
||||
td {
|
||||
padding: 3rem 1rem;
|
||||
|
||||
safe-address-copy {
|
||||
align-self: flex-start;
|
||||
}
|
||||
|
||||
&:first-child {
|
||||
padding-left: 4rem;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
&:nth-child(even) {
|
||||
background-color: @program-table-header-bg-color;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
border-bottom: none;
|
||||
border-bottom-left-radius: 2.75rem;
|
||||
border-bottom-right-radius: 2.75rem;
|
||||
|
||||
td:first-child {
|
||||
border-bottom-left-radius: 2.75rem;
|
||||
}
|
||||
|
||||
td:last-child {
|
||||
border-bottom-right-radius: 2.75rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.table-long-item-wrapper {
|
||||
display: inline-block;
|
||||
color: @program-main-color;
|
||||
max-width: 100%;
|
||||
position: relative;
|
||||
|
||||
.table-long-item {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, center);
|
||||
cursor: pointer;
|
||||
|
||||
.table-long-item-text {
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
background: -webkit-linear-gradient(left, @program-main-color 0, @program-main-color 75%, transparent 100%);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
font-size: 3.5rem;
|
||||
height: 4.5rem;
|
||||
line-height: 4.5rem;
|
||||
}
|
||||
|
||||
.separator {
|
||||
color: #a1b2a2;
|
||||
}
|
||||
|
||||
.base-icon {
|
||||
.icon-sizing(4rem, 4rem, -4rem, -5rem);
|
||||
min-width: 4rem;
|
||||
min-height: 4rem;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
color: @program-hover-color;
|
||||
|
||||
.table-long-item-text {
|
||||
background: -webkit-linear-gradient(left, @program-hover-color 0, @program-hover-color 75%, transparent 100%);
|
||||
-webkit-background-clip: text;
|
||||
}
|
||||
|
||||
.separator {
|
||||
color: #cdb495;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.open {
|
||||
color: @program-hover-color;
|
||||
|
||||
.table-long-item-text {
|
||||
background: -webkit-linear-gradient(left, @program-hover-color 0, @program-hover-color 75%, transparent 100%);
|
||||
-webkit-background-clip: text;
|
||||
|
||||
span {
|
||||
color: #cdb495;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.table-long-item-inner {
|
||||
position: absolute;
|
||||
top: 6.5rem;
|
||||
left: 0;
|
||||
background-color: white;
|
||||
border: none;
|
||||
border-radius: 2rem;
|
||||
-webkit-box-shadow: @table-item-shadow;
|
||||
box-shadow: @table-item-shadow;
|
||||
color: @program-exuding-color;
|
||||
font-size: 3.25rem;
|
||||
padding: 0 3rem;
|
||||
margin-left: -3rem;
|
||||
margin-top: 0;
|
||||
max-height: 90vh;
|
||||
white-space: nowrap;
|
||||
z-index: 1;
|
||||
outline: none;
|
||||
overflow-y: auto;
|
||||
|
||||
|
||||
|
||||
|
||||
display: none;
|
||||
visibility: hidden;
|
||||
opacity: 0;
|
||||
transform: translateY(-2em);
|
||||
transition: all 0.3s ease-in-out 0s, visibility 0s linear 0.3s, z-index 0s linear 0.01s;
|
||||
|
||||
&.open {
|
||||
visibility: visible;
|
||||
max-height: 90vh;
|
||||
opacity: 1;
|
||||
transform: translateY(0%);
|
||||
transition-delay: 0s, 0s, 0.3s;
|
||||
}
|
||||
|
||||
div {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, space-between);
|
||||
height: 8rem;
|
||||
|
||||
&:not(:last-child) {
|
||||
border-bottom: 1px solid #f3f5f4;
|
||||
}
|
||||
}
|
||||
|
||||
.copy-icon {
|
||||
.icon-sizing(4rem, 4rem, -4rem, -5rem);
|
||||
color: @program-copy-icon-color;
|
||||
cursor: pointer;
|
||||
margin-left: 5rem;
|
||||
|
||||
&:hover, &.hovered {
|
||||
color: @program-exuding-color;
|
||||
}
|
||||
|
||||
&.hovered:before {
|
||||
content: 'A';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,85 +0,0 @@
|
|||
@import "../variables";
|
||||
@import "mixins";
|
||||
|
||||
.general-tabs {
|
||||
.flex-container;
|
||||
margin: 7.5rem auto 5rem;
|
||||
padding: 0;
|
||||
|
||||
.general-tab {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, space-between);
|
||||
flex: 1 0 0;
|
||||
background-color: @program-tab-bg-color;
|
||||
border: 1px solid @program-tab-border-color;
|
||||
font-size: 6rem;
|
||||
font-weight: 200;
|
||||
line-height: 10rem;
|
||||
|
||||
button {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, center);
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
color: @program-tab-text-color;
|
||||
height: 17rem;
|
||||
line-height: 6rem;
|
||||
margin: 0;
|
||||
padding: 0 2rem;
|
||||
width: 100%;
|
||||
|
||||
.base-icon {
|
||||
.icon-sizing(8rem, 8rem, -2rem, -3rem);
|
||||
margin-right: 2rem;
|
||||
|
||||
&.bigger-indent {
|
||||
margin-right: 3rem;
|
||||
}
|
||||
|
||||
&.wider-icon {
|
||||
.icon-sizing(8rem, 10rem, -2rem, -2rem);
|
||||
}
|
||||
}
|
||||
|
||||
.indicator-number {
|
||||
font-weight: 400;
|
||||
margin-top: 1rem;
|
||||
margin-left: 2.5rem;
|
||||
}
|
||||
|
||||
&:hover, &:active {
|
||||
background-color: @program-tab-hover-bg-color;
|
||||
color: @program-dark-color;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
&:first-child {
|
||||
border-radius: 2rem 0 0 2rem;
|
||||
|
||||
button {
|
||||
border-radius: 1.75rem 0 0 1.75rem;
|
||||
}
|
||||
}
|
||||
|
||||
&:not(:last-child) {
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
border-radius: 0 2rem 2rem 0;
|
||||
|
||||
button {
|
||||
border-radius: 0 1.75rem 1.75rem 0;
|
||||
}
|
||||
}
|
||||
|
||||
&.tab-active {
|
||||
|
||||
button {
|
||||
background-color: @program-tab-hover-bg-color;
|
||||
color: @program-dark-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,466 +0,0 @@
|
|||
@import "../variables";
|
||||
@import "mixins";
|
||||
|
||||
.widgets {
|
||||
.flex-container;
|
||||
flex-wrap: wrap;
|
||||
margin: 3.5rem -3.5rem 3.5rem;
|
||||
|
||||
.widget-wrapper {
|
||||
//padding: 0 3.5rem 7rem;
|
||||
//-webkit-transform: translateZ(0);
|
||||
//transform: translateZ(0);
|
||||
padding: 3.5rem 3.5rem;
|
||||
transition: 0.1s;
|
||||
|
||||
.widget-block {
|
||||
background: fade(white, 60%);
|
||||
border: 1px solid @program-panel-border-color;
|
||||
border-radius: 3rem;
|
||||
|
||||
.widget-header {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, space-between);
|
||||
height: 13rem;
|
||||
padding: 0 5rem;
|
||||
|
||||
h3 {
|
||||
color: @program-exuding-color;
|
||||
font-size: 5.75rem;
|
||||
font-weight: 300;
|
||||
margin: 0;
|
||||
|
||||
&.widget-select-wrapper {
|
||||
.flex-container;
|
||||
line-height: 6rem;
|
||||
|
||||
.widget-select {
|
||||
.flex-container;
|
||||
margin-left: 5rem;
|
||||
|
||||
.dropdown-toggle {
|
||||
border-bottom: none;
|
||||
color: @program-hover-color;
|
||||
font-size: 5rem;
|
||||
line-height: 6rem;
|
||||
margin-bottom: -1rem;
|
||||
padding: 0 3rem 0 0;
|
||||
|
||||
.caret {
|
||||
color: @program-input-placeholder-hover-color;
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
min-width: 44rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.widget-menu {
|
||||
|
||||
.widget-menu-btn {
|
||||
.flex-container;
|
||||
background: transparent;
|
||||
border: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
|
||||
.base-icon {
|
||||
.icon-sizing(4rem, 4rem, -4rem, -5rem);
|
||||
color: @program-main-color;
|
||||
}
|
||||
}
|
||||
|
||||
.widget-menu-list {
|
||||
.menu-list(6.5rem, inherit, -2rem, 46rem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.widget-body-wrapper {
|
||||
-webkit-transform: translateZ(0);
|
||||
transform: translateZ(0);
|
||||
border-bottom-left-radius: 3rem;
|
||||
border-bottom-right-radius: 3rem;
|
||||
overflow: hidden;
|
||||
|
||||
.widget-body {
|
||||
border-bottom-left-radius: 3rem;
|
||||
border-bottom-right-radius: 3rem;
|
||||
height: 53rem;
|
||||
overflow-y: auto;
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
|
||||
thead {
|
||||
|
||||
tr {
|
||||
background-color: fade(white, 40%);
|
||||
color: @program-exuding-color;
|
||||
font-size: 3.5rem;
|
||||
height: 9rem;
|
||||
|
||||
th {
|
||||
font-weight: 400;
|
||||
padding: 0 1rem;
|
||||
text-transform: uppercase;
|
||||
white-space: nowrap;
|
||||
|
||||
.ordered-cell {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, flex-start);
|
||||
|
||||
.order-icon {
|
||||
.icon-sizing(2rem, 2rem, -5rem, -6rem);
|
||||
color: @program-light-color;
|
||||
cursor: pointer;
|
||||
margin-left: 2rem;
|
||||
margin-top: 0.25rem;
|
||||
|
||||
&.active {
|
||||
color: @program-exuding-color;
|
||||
}
|
||||
|
||||
&.rotate-icon {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&:first-child {
|
||||
padding-left: 5rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tbody {
|
||||
|
||||
tr {
|
||||
color: @program-main-color;
|
||||
font-size: 3.25rem;
|
||||
height: 9rem;
|
||||
|
||||
td {
|
||||
padding: 0 1rem;
|
||||
|
||||
.empty-table {
|
||||
color: @program-empty-color;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
&:first-child {
|
||||
padding-left: 5rem;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
&:nth-child(even) {
|
||||
background-color: fade(white, 40%);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.widget-loading {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, center);
|
||||
color: @program-empty-color;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.widget-small {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
&.widget-big {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
&.drag-not-possible {
|
||||
|
||||
.widget-block {
|
||||
box-shadow: 0 0 10px 3px rgb(255, 95, 95);
|
||||
background-color: rgba(255, 95, 95, 0.6);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.widget-long-item-wrapper {
|
||||
max-width: 32rem;
|
||||
|
||||
.table-long-item {
|
||||
|
||||
.table-long-item-text {
|
||||
font-size: 3.25rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
.payments-widget {
|
||||
|
||||
tr.transaction-blocked {
|
||||
background-color: @history-transaction-blocked-border-color !important;
|
||||
color: @history-transaction-blocked-text-color !important;
|
||||
|
||||
.transaction-status-indicator {
|
||||
|
||||
.status-graph {
|
||||
|
||||
&.income {
|
||||
stroke: @history-transaction-blocked-status-income-color !important;
|
||||
}
|
||||
|
||||
&.outgoing {
|
||||
stroke: @history-transaction-blocked-status-outgoing-color !important;
|
||||
}
|
||||
}
|
||||
|
||||
.status-inner {
|
||||
|
||||
.base-icon.income {
|
||||
color: @history-transaction-blocked-status-income-color !important;
|
||||
}
|
||||
|
||||
.base-icon.outgoing {
|
||||
color: @history-transaction-blocked-status-outgoing-color !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.payments-marker {
|
||||
|
||||
&::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
border-left: 1rem solid @marker-light-green;
|
||||
}
|
||||
}
|
||||
|
||||
.transaction-status-indicator {
|
||||
|
||||
.mined-icon {
|
||||
font-size: 11rem;
|
||||
|
||||
&:before {
|
||||
top: -2.5rem;
|
||||
left: -3.5rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.payments-comment-wrapper {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, flex-start);
|
||||
max-width: 9rem;
|
||||
|
||||
.base-icon {
|
||||
.icon-sizing(5rem, 5rem, -3.5rem, -4.5rem);
|
||||
|
||||
&:hover {
|
||||
color: @program-hover-color;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.contacts-widget {
|
||||
|
||||
tr {
|
||||
|
||||
td:last-child {
|
||||
width: 20rem;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
|
||||
.contact-options-btn-wrapper {
|
||||
visibility: visible;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.contact-name {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, flex-start);
|
||||
font-size: 3.25rem;
|
||||
white-space: nowrap;
|
||||
|
||||
.base-icon {
|
||||
.icon-sizing(4rem, 4rem, -4rem, -5rem);
|
||||
color: @program-table-icon-color;
|
||||
margin-right: 1rem;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
color: @program-hover-color;
|
||||
cursor: pointer;
|
||||
|
||||
.base-icon {
|
||||
color: @program-hover-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.contact-connections {
|
||||
max-width: 36rem;
|
||||
}
|
||||
|
||||
.contact-options-btn-wrapper {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, space-between);
|
||||
visibility: hidden;
|
||||
|
||||
.contact-options-btn {
|
||||
.flex-container;
|
||||
background: transparent;
|
||||
border: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
color: @program-main-color;
|
||||
|
||||
.send-money-icon {
|
||||
.icon-sizing(5rem, 5rem, -3.5rem, -4.5rem);
|
||||
}
|
||||
|
||||
.payments-icon {
|
||||
.icon-sizing(5rem, 5rem, -3.5rem, -4.5rem);
|
||||
}
|
||||
|
||||
.delete-icon {
|
||||
.icon-sizing(5rem, 5rem, -3.5rem, -4.5rem);
|
||||
}
|
||||
|
||||
&:disabled {
|
||||
color: @program-light-color;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
|
||||
&:not(:disabled) {
|
||||
color: @program-hover-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.network-info-widget {
|
||||
|
||||
.network-text-wrapper {
|
||||
display: inline-block;
|
||||
|
||||
.base-icon {
|
||||
.icon-sizing(2rem, 2rem, -5rem, -6rem);
|
||||
margin-left: 1rem;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
color: @program-hover-color;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.mining-widget {
|
||||
border-top: none !important;
|
||||
height: 58rem !important;
|
||||
|
||||
.mining-widget-empty {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, center);
|
||||
color: @program-empty-color;
|
||||
font-size: 3.75rem;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.mining-widget-chart {
|
||||
|
||||
.chart-range-wrapper {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, space-between);
|
||||
padding: 2.5rem 7rem;
|
||||
|
||||
.chart-range-group {
|
||||
.flex-container;
|
||||
.flex-container-alignment(center, center);
|
||||
color: @program-dark-color;
|
||||
font-size: 3rem;
|
||||
|
||||
.chart-range-selector {
|
||||
.flex-container;
|
||||
margin: 0 2.5rem;
|
||||
padding: 0;
|
||||
|
||||
li {
|
||||
border: 1px solid @mining-range-border-color;
|
||||
color: @mining-range-text-color;
|
||||
line-height: 5.5rem;
|
||||
height: 6rem;
|
||||
width: 14rem;
|
||||
text-align: center;
|
||||
list-style-type: none;
|
||||
|
||||
&:first-child {
|
||||
border-radius: 3rem 0 0 3rem;
|
||||
width: 14.5rem;
|
||||
}
|
||||
|
||||
&:not(:first-child) {
|
||||
border-left: none;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
border-radius: 0 3rem 3rem 0;
|
||||
width: 14.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
.active {
|
||||
background: white;
|
||||
color: @program-dark-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.chart-graph {
|
||||
height: 47rem;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//TODO active line when tooltip clicked
|
||||
/*.active-widget-tr {
|
||||
background: #dce4d3 !important;
|
||||
color: #062f1b !important;
|
||||
|
||||
.comment {
|
||||
.icon {
|
||||
color: #062f1b !important;
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
.red-row{
|
||||
background-color: #e95145 !important;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1,173 +0,0 @@
|
|||
@xs: ~"(max-width: 767px)";
|
||||
@sm: ~"(min-width: 768px)";
|
||||
@md: ~"(min-width: 992px)";
|
||||
@lg: ~"(min-width: 1200px)";
|
||||
|
||||
@min-width: 250rem;
|
||||
|
||||
@background-image: url('../img/bg_blue.jpg');
|
||||
@program-online-color: #5d6c78;
|
||||
@program-offline-color: #cd5044;
|
||||
@scroll-light-color: fade(white, 70%);
|
||||
@scroll-dark-color: #7b919e;
|
||||
@error-color: #e9301d;
|
||||
@success-color: #1d9f5f;
|
||||
@box-shadow: 0 0.5rem 1.5rem rgba(0, 0, 0, 0.25);
|
||||
@modal-form-shadow: 0 0.5rem 0.75rem 0 rgba(0, 0, 0, 0.15);
|
||||
@table-item-shadow: 0 1.5rem 3rem rgba(0, 0, 0, 0.175);
|
||||
@market-details-shadow: 0 2.5rem 6rem 0 rgba(0, 0, 0, 0.45);
|
||||
|
||||
@program-header-text-color: #004d73;
|
||||
@program-header-text-blocked-color: #aaafb4;
|
||||
@program-header-border-color: #edf2f4;
|
||||
@program-header-bg-hover-color: #f4f9fb;
|
||||
@program-header-bg-active-color: #d5e6f0;
|
||||
@program-header-indicator-text-color: #b83a2d;
|
||||
@program-header-indicator-border-color: #d48279;
|
||||
|
||||
@program-table-bg-color: fade(white, 60%);
|
||||
@program-table-header-bg-color: fade(white, 40%);
|
||||
@program-table-border-color: #e1e8eb;
|
||||
@program-table-icon-color: #5a7388;
|
||||
@program-table-button-border-color: #adbbbe;
|
||||
@program-table-button-border-hover-color: #b3ac90;
|
||||
@program-table-button-icon-hover-color: #7d5d1f;
|
||||
|
||||
@program-tab-bg-color: fade(white, 50%);
|
||||
@program-tab-hover-bg-color: white;
|
||||
@program-tab-border-color: #e1e8eb;
|
||||
@program-tab-text-color: #4d7a92;
|
||||
|
||||
@program-filter-button-border-color: #e1e8eb;
|
||||
@program-options-bg-hover-color: #f1f6f9;
|
||||
|
||||
@program-panel-bg-color: fade(white, 60%);
|
||||
@program-panel-header-bg-color: #d5e6ef;
|
||||
@program-panel-border-color: #e1e8eb;
|
||||
@program-panel-divider-color: #e1e8eb;
|
||||
|
||||
@program-pagination-text-color: #1f415d;
|
||||
@program-pagination-text-inactive-color: #83919d;
|
||||
@program-pagination-border-color: #e3eaec;
|
||||
@program-pagination-pages-color: #a2bac9;
|
||||
|
||||
@marker-red: #f1b2b2;
|
||||
@marker-yellow: #fce493;
|
||||
@marker-grey: #aaafb4;
|
||||
@marker-escrow: #65a9de;
|
||||
@marker-light-green: #a7c790;
|
||||
|
||||
@program-exuding-color: #142839;
|
||||
@program-main-color: #1f415d;
|
||||
@program-dark-color: #004d73;
|
||||
@program-light-color: #929ca4;
|
||||
@program-empty-color: #7190a1;
|
||||
@program-hover-color: #74520f;
|
||||
@program-label-color: #004d73;
|
||||
@program-label-subtext-color: #417b96;
|
||||
@program-label-info-color: #548ca8;
|
||||
|
||||
@program-modal-header-color: #d5e6ef;
|
||||
@program-modal-header-close-color: #88a1b5;
|
||||
@program-modal-divider-color: #dae1e2;
|
||||
@program-modal-active-line-color: #61de11;
|
||||
|
||||
@program-select-hover-color: #eef3f6;
|
||||
@program-select-selected-color: #e3ecf1;
|
||||
@program-input-text-color: #142839;
|
||||
@program-input-border-color: #828d97;
|
||||
@program-input-placeholder-color: #aaafb4;
|
||||
@program-input-placeholder-hover-color: #bca577;
|
||||
@program-input-icon-color: #787f86;
|
||||
@program-checkbox-border-color: #718ea7;
|
||||
@program-switch-text-color: #5888a1;
|
||||
@program-range-border-color: #a2b9c5;
|
||||
@program-range-selected-color: #4d7a92;
|
||||
@program-button-bg-color: white;
|
||||
@program-button-hover-bg-color: #f5f8f9;
|
||||
@program-button-active-bg-color: #f1f6f9;
|
||||
@program-button-text-color: #004d73;
|
||||
@program-button-border-color: #e2eaed;
|
||||
@program-button-border-hover-color: #e1e2d9;
|
||||
@program-button-divider-color: #c3ced4;
|
||||
@program-button-done-icon-color: #60d22d;
|
||||
@program-button-subtext-color: #709bb1;
|
||||
@program-clear-button-color: #a64833;
|
||||
@program-clear-button-hover-color: #a64833;
|
||||
@program-progress-bar-bg-color: #e1e3e4;
|
||||
@program-progress-bar-fill-color: #95a2ac;
|
||||
@program-mined-icon-color: #81be55;
|
||||
@program-payments-income-color: #67aa3b;
|
||||
@program-payments-outgoing-color: #e27078;
|
||||
@program-transaction-status-inner-color: #b4bcc1;
|
||||
@program-transaction-status-pending-inner-color: #57b85f;
|
||||
@program-transaction-status-sending-inner-color: #e47661;
|
||||
@program-copy-icon-color: fade(@program-exuding-color, 50%);
|
||||
@program-divider-color: #f3f5f4;
|
||||
@program-selection-bg-color: #e8cca8;
|
||||
|
||||
@dashboard-indicator-text-color: #004d73;
|
||||
@dashboard-indicator-icon-color: #004d73;
|
||||
@dashboard-slider-border-color: #c6d4dc;
|
||||
@dashboard-slider-icon-color: #578aa2;
|
||||
@dashboard-alias-border-color: #c9d4d9;
|
||||
@safes-indicator-color: #3c7592;
|
||||
@safes-block-text-color: #8b96a0;
|
||||
@safes-block-text-open-color: #1f415d;
|
||||
@safes-block-mined-bg-color: #95b5c7;
|
||||
@safes-block-mined-icon-color: #ecf1f2;
|
||||
@safes-alias-border-color: #adbbbe;
|
||||
@safes-alias-border-hover-color: #d5cab9;
|
||||
@safes-balance-text-color: #8b96a0;
|
||||
@safe-pages-switch-bg-color: white;
|
||||
@safe-pages-switch-bg-hover-color: #f1f6f9;
|
||||
@safe-pages-switch-border-color: #e9eef2;
|
||||
@safe-pages-switch-text-color: #9ab1c4;
|
||||
@safe-pages-switch-text-hover-color: #1f415d;
|
||||
@safe-balance-indicator-color: #f5b81b;
|
||||
@safe-mined-indicator-color: #aab5ba;
|
||||
@safe-mined-completed-indicator-color: #539f42;
|
||||
@safe-button-border-hover-color: #97835c;
|
||||
@safe-alias-icon-color: #87929b;
|
||||
@safe-alias-icon-hover-color: #828d97;
|
||||
@safe-button-bg-color: fade(white, 80%);
|
||||
@market-header-icon-color: #6a9cb6;
|
||||
@market-favorite-color: #cd5044;
|
||||
@market-detail-divider-color: #ebeeec;
|
||||
@escrow-transaction-status-color: #338dd4;
|
||||
@history-transaction-blocked-border-color: #e95145;
|
||||
@history-transaction-blocked-text-color: #fbe3e2;
|
||||
@history-transaction-blocked-status-income-color: #a2be7e;
|
||||
@history-transaction-blocked-status-outgoing-color: #c51616;
|
||||
@history-transaction-blocked-alias-color: #f2a09b;
|
||||
@history-transaction-blocked-hover-color: #e7c48e;
|
||||
@contacts-groups-border-color: #e9eef2;
|
||||
@contacts-accounts-btn-text-color: #7e858c;
|
||||
@export-import-contacts-text-color: #004d73;
|
||||
@export-import-contacts-border-color: #e1e8eb;
|
||||
@mining-range-text-color: #7190a1;
|
||||
@mining-range-border-color: #e0e7ed;
|
||||
@bug-report-button-color: white;
|
||||
|
||||
@send-money-contacts-hover-color: #f4f0d7;
|
||||
@send-money-contacts-icon-hover-color: #97835c;
|
||||
@send-money-contacts-address-hover-color: #bca577;
|
||||
|
||||
@create-safe-progress-bar-step-color: #95b5c7;
|
||||
@create-safe-progress-bar-bg-color: fade(@create-safe-progress-bar-step-color, 25%);
|
||||
@create-safe-progress-bar-fill-color: #89b0c6;
|
||||
|
||||
@modal-update-text-color: #f4f6e9;
|
||||
@modal-update-green-color: #61a75b;
|
||||
@modal-update-yellow-color: #cdb912;
|
||||
@modal-update-red-color: #e95145;
|
||||
|
||||
@datepicker-nav-action-color: #004d73;
|
||||
@datepicker-nav-title-color: #142839;
|
||||
@datepicker-day-name-color: #a8b2b9;
|
||||
@datepicker-day-other-month-color: #5888a1;
|
||||
@datepicker-cell-border-color: #83a7b9;
|
||||
@datepicker-cell-selected-color: #d5e6f0;
|
||||
|
||||
@highcharts-scrollbar-color: #a5adb5;
|
||||
@highcharts-axis-line-color: fade(#a5adb5, 75%);
|
||||
|
Before Width: | Height: | Size: 5.3 KiB |
31
src/gui/qt-daemon/html/logo.svg
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 23.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 1024 1024" style="enable-background:new 0 0 1024 1024;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:url(#SVGID_1_);}
|
||||
.st1{fill:url(#SVGID_2_);}
|
||||
.st2{fill:url(#SVGID_3_);}
|
||||
</style>
|
||||
<g>
|
||||
|
||||
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="512.55" y1="984.3" x2="512.55" y2="39.3" gradientTransform="matrix(1 0 0 -1 0 1024)">
|
||||
<stop offset="0" style="stop-color:#1ECED0"/>
|
||||
<stop offset="0.5" style="stop-color:#8AA9F4"/>
|
||||
<stop offset="1" style="stop-color:#6A44FB"/>
|
||||
</linearGradient>
|
||||
<polygon class="st0" points="679.6,984.7 193.5,305.1 344.4,39.7 831.6,715.3 "/>
|
||||
|
||||
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="217.75" y1="700.86" x2="217.75" y2="382.2152" gradientTransform="matrix(1 0 0 -1 0 1024)">
|
||||
<stop offset="0" style="stop-color:#57B7E3"/>
|
||||
<stop offset="1" style="stop-color:#7E8AF4;stop-opacity:0"/>
|
||||
</linearGradient>
|
||||
<polygon class="st1" points="193.5,305.1 435.5,643.4 0,643.4 "/>
|
||||
|
||||
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="807.25" y1="332.3745" x2="807.25" y2="641.9303" gradientTransform="matrix(1 0 0 -1 0 1024)">
|
||||
<stop offset="0" style="stop-color:#7C83F4"/>
|
||||
<stop offset="1" style="stop-color:#68B0E9;stop-opacity:0"/>
|
||||
</linearGradient>
|
||||
<polygon class="st2" points="831.6,715.3 590.5,381 1024,381 "/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 708 B After Width: | Height: | Size: 708 B |
|
Before Width: | Height: | Size: 1 KiB After Width: | Height: | Size: 1 KiB |
|
Before Width: | Height: | Size: 931 B After Width: | Height: | Size: 931 B |
1
src/gui/qt-daemon/html_source/.gitignore
vendored
|
|
@ -38,3 +38,4 @@ testem.log
|
|||
.DS_Store
|
||||
Thumbs.db
|
||||
/package.json
|
||||
/package-lock.json
|
||||
|
|
|
|||
|
|
@ -24,7 +24,8 @@
|
|||
"tsConfig": "src/tsconfig.app.json",
|
||||
"assets": [
|
||||
"src/favicon.ico",
|
||||
"src/assets"
|
||||
"src/assets",
|
||||
"src/files"
|
||||
],
|
||||
"styles": [
|
||||
"src/styles.scss"
|
||||
|
|
|
|||
10375
src/gui/qt-daemon/html_source/package-lock.json
generated
|
|
@ -1,11 +1,11 @@
|
|||
<div class="modal">
|
||||
<div class="content">
|
||||
<i class="icon"></i>
|
||||
<div class="message">
|
||||
<span>Success</span>
|
||||
<span>Successfully</span>
|
||||
<i class="icon" [class.error]="type === 'error'" [class.success]="type === 'success'" [class.info]="type === 'info'"></i>
|
||||
<div class="message-container">
|
||||
<span class="title">{{title}}</span>
|
||||
<span class="message">{{message}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<button type="button" class="action-button" (click)="false">OK</button>
|
||||
<button type="button" class="close-button" (click)="false"><i class="icon close"></i></button>
|
||||
<button type="button" class="action-button" (click)="onClose()" #btn>OK</button>
|
||||
<button type="button" class="close-button" (click)="onClose()"><i class="icon close"></i></button>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -13,28 +13,53 @@
|
|||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
background-position: center;
|
||||
background-size: 200%;
|
||||
padding: 2rem;
|
||||
width: 34rem;
|
||||
background: #1a1a1a;
|
||||
|
||||
.content {
|
||||
display: flex;
|
||||
margin: 1.2rem 0;
|
||||
|
||||
.icon {
|
||||
flex: 0 0 auto;
|
||||
width: 4.4rem;
|
||||
height: 4.4rem;
|
||||
|
||||
&.error {
|
||||
mask: url(~src/assets/icons/modal-alert.svg) no-repeat center;
|
||||
}
|
||||
|
||||
&.success {
|
||||
mask: url(~src/assets/icons/modal-success.svg) no-repeat center;
|
||||
}
|
||||
|
||||
&.info {
|
||||
mask: url(~src/assets/icons/modal-info.svg) no-repeat center;
|
||||
}
|
||||
}
|
||||
|
||||
.message {
|
||||
.message-container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin-left: 2rem;
|
||||
|
||||
.title {
|
||||
font-size: 1.8rem;
|
||||
font-weight: 600;
|
||||
line-height: 2.2rem;
|
||||
}
|
||||
|
||||
.message {
|
||||
font-size: 1.3rem;
|
||||
line-height: 1.8rem;
|
||||
margin-top: 0.4rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.action-button {
|
||||
background: #2c95f1;
|
||||
margin: 1.2rem auto 0.6rem;
|
||||
width: 10rem;
|
||||
height: 2.4rem;
|
||||
|
|
@ -42,15 +67,21 @@
|
|||
|
||||
.close-button {
|
||||
position: absolute;
|
||||
top: 0.5rem;
|
||||
right: 0.5rem;
|
||||
top: 0;
|
||||
right: 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background: transparent;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
width: 2.4rem;
|
||||
height: 2.4rem;
|
||||
|
||||
.icon {
|
||||
mask: url(~src/assets/icons/close.svg) no-repeat center;
|
||||
width: 2.4rem;
|
||||
height: 2.4rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { Component, OnInit } from '@angular/core';
|
||||
import {Component, OnInit, Input, Output, EventEmitter, ViewChild, ElementRef} from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'app-modal-container',
|
||||
|
|
@ -7,9 +7,25 @@ import { Component, OnInit } from '@angular/core';
|
|||
})
|
||||
export class ModalContainerComponent implements OnInit {
|
||||
|
||||
constructor() { }
|
||||
public title: string;
|
||||
@Input() type: string;
|
||||
@Input() message: string;
|
||||
@Output() close = new EventEmitter<boolean>();
|
||||
@ViewChild('btn') button: ElementRef;
|
||||
|
||||
constructor() {}
|
||||
|
||||
ngOnInit() {
|
||||
this.button.nativeElement.focus();
|
||||
switch (this.type) {
|
||||
case 'error': this.title = 'Wrong'; break;
|
||||
case 'success': this.title = 'Success'; break;
|
||||
case 'info': this.title = 'Information'; break;
|
||||
default: this.title = 'Unexpected'; break;
|
||||
}
|
||||
}
|
||||
|
||||
onClose() {
|
||||
this.close.emit();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,11 +13,9 @@ export class StakingSwitchComponent implements OnInit {
|
|||
@Input() staking: boolean;
|
||||
@Output() stakingChange = new EventEmitter<boolean>();
|
||||
|
||||
constructor(private backend: BackendService, private variablesService: VariablesService) {
|
||||
}
|
||||
constructor(private backend: BackendService, private variablesService: VariablesService) {}
|
||||
|
||||
ngOnInit() {
|
||||
}
|
||||
ngOnInit() {}
|
||||
|
||||
toggleStaking() {
|
||||
const wallet = this.variablesService.getWallet(this.wallet_id);
|
||||
|
|
|
|||
|
|
@ -1,28 +1,36 @@
|
|||
import {Directive, Input, ElementRef, HostListener, Renderer2} from '@angular/core';
|
||||
import {Directive, Input, ElementRef, HostListener, Renderer2, HostBinding} from '@angular/core';
|
||||
|
||||
@Directive({
|
||||
selector: '[tooltip]',
|
||||
host: {
|
||||
'[style.cursor]': '"pointer"'
|
||||
}
|
||||
selector: '[tooltip]'
|
||||
})
|
||||
|
||||
export class TooltipDirective {
|
||||
|
||||
@HostBinding('style.cursor') cursor = 'pointer';
|
||||
|
||||
@Input('tooltip') tooltipTitle: string;
|
||||
@Input() placement: string;
|
||||
@Input() tooltipClass: string;
|
||||
@Input() delay: number;
|
||||
tooltip: HTMLElement;
|
||||
offset = 10;
|
||||
|
||||
constructor(private el: ElementRef, private renderer: Renderer2) {}
|
||||
removeTooltipTimeout;
|
||||
|
||||
constructor(private el: ElementRef, private renderer: Renderer2) {
|
||||
}
|
||||
|
||||
@HostListener('mouseenter') onMouseEnter() {
|
||||
if (!this.tooltip) { this.show(); }
|
||||
if (!this.tooltip) {
|
||||
this.show();
|
||||
} else {
|
||||
this.cancelHide();
|
||||
}
|
||||
}
|
||||
|
||||
@HostListener('mouseleave') onMouseLeave() {
|
||||
if (this.tooltip) { this.hide(); }
|
||||
if (this.tooltip) {
|
||||
this.hide();
|
||||
}
|
||||
}
|
||||
|
||||
show() {
|
||||
|
|
@ -32,12 +40,17 @@ export class TooltipDirective {
|
|||
|
||||
hide() {
|
||||
this.renderer.setStyle(this.tooltip, 'opacity', '0');
|
||||
window.setTimeout(() => {
|
||||
this.removeTooltipTimeout = setTimeout(() => {
|
||||
this.renderer.removeChild(document.body, this.tooltip);
|
||||
this.tooltip = null;
|
||||
}, this.delay);
|
||||
}
|
||||
|
||||
cancelHide() {
|
||||
clearTimeout(this.removeTooltipTimeout);
|
||||
this.renderer.setStyle(this.tooltip, 'opacity', '1');
|
||||
}
|
||||
|
||||
create() {
|
||||
this.tooltip = this.renderer.createElement('span');
|
||||
this.renderer.appendChild(this.tooltip, this.renderer.createText(this.tooltipTitle));
|
||||
|
|
@ -76,8 +89,15 @@ export class TooltipDirective {
|
|||
}
|
||||
|
||||
if (this.placement === 'bottom') {
|
||||
this.renderer.setStyle(this.tooltip, 'top', hostPos.bottom + 'px');
|
||||
this.renderer.setStyle(this.tooltip, 'left', hostPos.left + 'px');
|
||||
if (window.innerHeight < hostPos.bottom + this.tooltip.offsetHeight + parseInt(getComputedStyle(this.tooltip).marginTop, 10)) {
|
||||
this.renderer.removeClass(this.tooltip, 'ng-tooltip-bottom');
|
||||
this.renderer.addClass(this.tooltip, 'ng-tooltip-top');
|
||||
this.renderer.setStyle(this.tooltip, 'top', hostPos.top - tooltipPos.height + 'px');
|
||||
this.renderer.setStyle(this.tooltip, 'left', hostPos.left + 'px');
|
||||
} else {
|
||||
this.renderer.setStyle(this.tooltip, 'top', hostPos.bottom + 'px');
|
||||
this.renderer.setStyle(this.tooltip, 'left', hostPos.left + 'px');
|
||||
}
|
||||
}
|
||||
|
||||
if (this.placement === 'left') {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
import {Injectable} from '@angular/core';
|
||||
import {Observable} from 'rxjs';
|
||||
import {TranslateService} from '@ngx-translate/core';
|
||||
import {VariablesService} from './variables.service';
|
||||
import {ModalService} from './modal.service';
|
||||
import {MoneyToIntPipe} from '../pipes/money-to-int.pipe';
|
||||
|
||||
@Injectable()
|
||||
|
|
@ -9,9 +11,7 @@ export class BackendService {
|
|||
backendObject: any;
|
||||
backendLoaded = false;
|
||||
|
||||
constructor(private variablesService: VariablesService, private moneyToIntPipe: MoneyToIntPipe) {
|
||||
}
|
||||
|
||||
constructor(private translate: TranslateService, private variablesService: VariablesService, private modalService: ModalService, private moneyToIntPipe: MoneyToIntPipe) {}
|
||||
|
||||
private Debug(type, message) {
|
||||
switch (type) {
|
||||
|
|
@ -35,11 +35,11 @@ export class BackendService {
|
|||
|
||||
switch (error) {
|
||||
case 'NOT_ENOUGH_MONEY':
|
||||
error_translate = 'ERROR.NOT_ENOUGH_MONEY';
|
||||
error_translate = 'ERRORS.NOT_ENOUGH_MONEY';
|
||||
break;
|
||||
case 'CORE_BUSY':
|
||||
if (command !== 'get_all_aliases') {
|
||||
error_translate = 'INFORMER.CORE_BUSY';
|
||||
error_translate = 'ERRORS.CORE_BUSY';
|
||||
}
|
||||
break;
|
||||
case 'OVERFLOW':
|
||||
|
|
@ -48,62 +48,62 @@ export class BackendService {
|
|||
}
|
||||
break;
|
||||
case 'INTERNAL_ERROR:daemon is busy':
|
||||
error_translate = 'INFORMER.DAEMON_BUSY';
|
||||
error_translate = 'ERRORS.DAEMON_BUSY';
|
||||
break;
|
||||
case 'INTERNAL_ERROR:not enough money':
|
||||
case 'INTERNAL_ERROR:NOT_ENOUGH_MONEY':
|
||||
if (command === 'cancel_offer') {
|
||||
// error_translate = $filter('translate')('INFORMER.NO_MONEY_REMOVE_OFFER', {
|
||||
// 'fee': CONFIG.standart_fee,
|
||||
// 'currency': CONFIG.currency_symbol
|
||||
// });
|
||||
error_translate = this.translate.instant('ERRORS.NO_MONEY_REMOVE_OFFER', {
|
||||
'fee': '0.01',
|
||||
'currency': 'ZAN'
|
||||
});
|
||||
} else {
|
||||
error_translate = 'INFORMER.NO_MONEY';
|
||||
}
|
||||
break;
|
||||
case 'INTERNAL_ERROR:not enough outputs to mix':
|
||||
error_translate = 'MESSAGE.NOT_ENOUGH_OUTPUTS_TO_MIX';
|
||||
error_translate = 'ERRORS.NOT_ENOUGH_OUTPUTS_TO_MIX';
|
||||
break;
|
||||
case 'INTERNAL_ERROR:transaction is too big':
|
||||
error_translate = 'MESSAGE.TRANSACTION_IS_TO_BIG';
|
||||
error_translate = 'ERRORS.TRANSACTION_IS_TO_BIG';
|
||||
break;
|
||||
case 'INTERNAL_ERROR:Transfer attempt while daemon offline':
|
||||
error_translate = 'MESSAGE.TRANSFER_ATTEMPT';
|
||||
error_translate = 'ERRORS.TRANSFER_ATTEMPT';
|
||||
break;
|
||||
case 'ACCESS_DENIED':
|
||||
error_translate = 'INFORMER.ACCESS_DENIED';
|
||||
error_translate = 'ERRORS.ACCESS_DENIED';
|
||||
break;
|
||||
case 'INTERNAL_ERROR:transaction was rejected by daemon':
|
||||
if (command === 'request_alias_registration') {
|
||||
error_translate = 'INFORMER.ALIAS_IN_REGISTER';
|
||||
} else {
|
||||
error_translate = 'INFORMER.TRANSACTION_ERROR';
|
||||
}
|
||||
// if (command === 'request_alias_registration') {
|
||||
// error_translate = 'INFORMER.ALIAS_IN_REGISTER';
|
||||
// } else {
|
||||
error_translate = 'ERRORS.TRANSACTION_ERROR';
|
||||
// }
|
||||
break;
|
||||
case 'INTERNAL_ERROR':
|
||||
error_translate = 'INFORMER.TRANSACTION_ERROR';
|
||||
error_translate = 'ERRORS.TRANSACTION_ERROR';
|
||||
break;
|
||||
case 'BAD_ARG':
|
||||
error_translate = 'INFORMER.BAD_ARG';
|
||||
error_translate = 'ERRORS.BAD_ARG';
|
||||
break;
|
||||
case 'WALLET_WRONG_ID':
|
||||
error_translate = 'INFORMER.WALLET_WRONG_ID';
|
||||
error_translate = 'ERRORS.WALLET_WRONG_ID';
|
||||
break;
|
||||
case 'WRONG_PASSWORD':
|
||||
case 'WRONG_PASSWORD:invalid password':
|
||||
params = JSON.parse(params);
|
||||
if (!params.testEmpty) {
|
||||
error_translate = 'INFORMER.WRONG_PASSWORD';
|
||||
error_translate = 'ERRORS.WRONG_PASSWORD';
|
||||
}
|
||||
break;
|
||||
case 'FILE_RESTORED':
|
||||
if (command === 'open_wallet') {
|
||||
// error_translate = $filter('translate')('INFORMER.FILE_RESTORED');
|
||||
error_translate = 'ERRORS.FILE_RESTORED';
|
||||
}
|
||||
break;
|
||||
case 'FILE_NOT_FOUND':
|
||||
if (command !== 'open_wallet' && command !== 'get_alias_info_by_name' && command !== 'get_alias_info_by_address') {
|
||||
// error_translate = $filter('translate')('INFORMER.FILE_NOT_FOUND');
|
||||
error_translate = this.translate.instant('ERRORS.FILE_NOT_FOUND');
|
||||
params = JSON.parse(params);
|
||||
if (params.path) {
|
||||
error_translate += ': ' + params.path;
|
||||
|
|
@ -119,16 +119,16 @@ export class BackendService {
|
|||
}
|
||||
break;
|
||||
case 'ALREADY_EXISTS':
|
||||
error_translate = 'INFORMER.FILE_EXIST';
|
||||
error_translate = 'ERRORS.FILE_EXIST';
|
||||
break;
|
||||
default:
|
||||
error_translate = error;
|
||||
}
|
||||
if (error.indexOf('FAIL:failed to save file') > -1) {
|
||||
error_translate = 'INFORMER.FILE_NOT_SAVED';
|
||||
error_translate = 'ERRORS.FILE_NOT_SAVED';
|
||||
}
|
||||
if (error_translate !== '') {
|
||||
alert(error_translate);
|
||||
this.modalService.prepareModal('error', error_translate);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -272,7 +272,7 @@ export class BackendService {
|
|||
}
|
||||
|
||||
storeSecureAppData(callback) {
|
||||
if ( this.variablesService.appPass === '' ) {
|
||||
if (this.variablesService.appPass === '') {
|
||||
return callback(false);
|
||||
}
|
||||
const wallets = [];
|
||||
|
|
@ -461,6 +461,10 @@ export class BackendService {
|
|||
this.runCommand('stop_pos_mining', {wallet_id: parseInt(wallet_id, 10)}, callback);
|
||||
}
|
||||
|
||||
openUrlInBrowser(url, callback?) {
|
||||
this.runCommand('open_url_in_browser', url, callback);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -653,9 +657,7 @@ export class BackendService {
|
|||
return this.runCommand('print_log', {msg: msg, log_level: log_level});
|
||||
},
|
||||
|
||||
openUrlInBrowser: function (url, callback) {
|
||||
return this.runCommand('open_url_in_browser', url, callback);
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,12 @@
|
|||
import { TestBed } from '@angular/core/testing';
|
||||
|
||||
import { ModalService } from './modal.service';
|
||||
|
||||
describe('ModalService', () => {
|
||||
beforeEach(() => TestBed.configureTestingModule({}));
|
||||
|
||||
it('should be created', () => {
|
||||
const service: ModalService = TestBed.get(ModalService);
|
||||
expect(service).toBeTruthy();
|
||||
});
|
||||
});
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
import {Injectable, Injector, ComponentFactoryResolver, EmbeddedViewRef, ApplicationRef, NgZone} from '@angular/core';
|
||||
import {TranslateService} from '@ngx-translate/core';
|
||||
import {ModalContainerComponent} from '../directives/modal-container/modal-container.component';
|
||||
|
||||
@Injectable()
|
||||
export class ModalService {
|
||||
|
||||
private components: any[] = [];
|
||||
|
||||
constructor(
|
||||
private componentFactoryResolver: ComponentFactoryResolver,
|
||||
private appRef: ApplicationRef,
|
||||
private injector: Injector,
|
||||
private ngZone: NgZone,
|
||||
private translate: TranslateService
|
||||
) {}
|
||||
|
||||
prepareModal(type, message) {
|
||||
const length = this.components.push(
|
||||
this.componentFactoryResolver.resolveComponentFactory(ModalContainerComponent).create(this.injector)
|
||||
);
|
||||
|
||||
this.components[length - 1].instance['type'] = type;
|
||||
this.components[length - 1].instance['message'] = this.translate.instant(message);
|
||||
this.components[length - 1].instance['close'].subscribe(() => {
|
||||
this.removeModal(length - 1);
|
||||
});
|
||||
|
||||
this.ngZone.run(() => {
|
||||
this.appendModal(length - 1);
|
||||
});
|
||||
}
|
||||
|
||||
appendModal(index) {
|
||||
this.appRef.attachView(this.components[index].hostView);
|
||||
const domElem = (this.components[index].hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;
|
||||
document.body.appendChild(domElem);
|
||||
}
|
||||
|
||||
removeModal(index) {
|
||||
if (this.components[index]) {
|
||||
this.appRef.detachView(this.components[index].hostView);
|
||||
this.components[index].destroy();
|
||||
this.components.splice(index, 1);
|
||||
} else {
|
||||
const last = this.components.length - 1;
|
||||
this.appRef.detachView(this.components[last].hostView);
|
||||
this.components[last].destroy();
|
||||
this.components.splice(last, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -82,7 +82,7 @@ export class VariablesService {
|
|||
}
|
||||
|
||||
startCountdown() {
|
||||
this.idle.restart();
|
||||
this.idle.start();
|
||||
}
|
||||
|
||||
stopCountdown() {
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ const routes: Routes = [
|
|||
},
|
||||
{
|
||||
path: '',
|
||||
redirectTo: 'send',
|
||||
redirectTo: 'history',
|
||||
pathMatch: 'full'
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -385,7 +385,6 @@ export class AppComponent implements OnInit, OnDestroy {
|
|||
}
|
||||
|
||||
getMoneyEquivalent() {
|
||||
// todo now start only once, need check daemon state and re-init
|
||||
this.http.get('https://api.coinmarketcap.com/v2/ticker/2').subscribe(
|
||||
result => {
|
||||
if (result.hasOwnProperty('data')) {
|
||||
|
|
@ -393,6 +392,9 @@ export class AppComponent implements OnInit, OnDestroy {
|
|||
}
|
||||
},
|
||||
error => {
|
||||
setTimeout(() => {
|
||||
this.getMoneyEquivalent();
|
||||
}, 60000);
|
||||
console.warn('Error coinmarketcap', error);
|
||||
}
|
||||
);
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|||
import { TypingMessageComponent } from './typing-message/typing-message.component';
|
||||
|
||||
import { BackendService } from './_helpers/services/backend.service';
|
||||
import { ModalService } from './_helpers/services/modal.service';
|
||||
import { MoneyToIntPipe } from './_helpers/pipes/money-to-int.pipe';
|
||||
import { IntToMoneyPipe } from './_helpers/pipes/int-to-money.pipe';
|
||||
import { StakingSwitchComponent } from './_helpers/directives/staking-switch/staking-switch.component';
|
||||
|
|
@ -105,10 +106,14 @@ Highcharts.setOptions({
|
|||
],
|
||||
providers: [
|
||||
BackendService,
|
||||
ModalService,
|
||||
MoneyToIntPipe,
|
||||
IntToMoneyPipe,
|
||||
// {provide: HIGHCHARTS_MODULES, useFactory: () => [ highstock, more, exporting ] }
|
||||
],
|
||||
entryComponents: [
|
||||
ModalContainerComponent
|
||||
],
|
||||
bootstrap: [AppComponent]
|
||||
})
|
||||
export class AppModule { }
|
||||
|
|
|
|||
|
|
@ -10,60 +10,71 @@
|
|||
margin: -3rem -3rem 0 -3rem;
|
||||
overflow-x: auto;
|
||||
|
||||
.contract {
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
table {
|
||||
|
||||
.icon {
|
||||
flex-shrink: 0;
|
||||
tbody {
|
||||
|
||||
&.new, &.alert {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
}
|
||||
tr {
|
||||
cursor: pointer;
|
||||
outline: none !important;
|
||||
|
||||
&.new {
|
||||
left: -2.3rem;
|
||||
mask: url(../../assets/icons/new.svg) no-repeat center;
|
||||
width: 1.7rem;
|
||||
height: 1.7rem;
|
||||
}
|
||||
.contract {
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
&.alert {
|
||||
top: 0.2rem;
|
||||
left: -2.1rem;
|
||||
mask: url(../../assets/icons/alert.svg) no-repeat center;
|
||||
width: 1.2rem;
|
||||
height: 1.2rem;
|
||||
}
|
||||
.icon {
|
||||
flex-shrink: 0;
|
||||
|
||||
&.purchase, &.sell {
|
||||
margin-right: 1rem;
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
}
|
||||
&.new, &.alert {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
&.purchase {
|
||||
mask: url(../../assets/icons/purchase.svg) no-repeat center;
|
||||
}
|
||||
&.new {
|
||||
left: -2.3rem;
|
||||
mask: url(../../assets/icons/new.svg) no-repeat center;
|
||||
width: 1.7rem;
|
||||
height: 1.7rem;
|
||||
}
|
||||
|
||||
&.sell {
|
||||
mask: url(../../assets/icons/sell.svg) no-repeat center;
|
||||
&.alert {
|
||||
top: 0.2rem;
|
||||
left: -2.1rem;
|
||||
mask: url(../../assets/icons/alert.svg) no-repeat center;
|
||||
width: 1.2rem;
|
||||
height: 1.2rem;
|
||||
}
|
||||
|
||||
&.purchase, &.sell {
|
||||
margin-right: 1rem;
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
}
|
||||
|
||||
&.purchase {
|
||||
mask: url(../../assets/icons/purchase.svg) no-repeat center;
|
||||
}
|
||||
|
||||
&.sell {
|
||||
mask: url(../../assets/icons/sell.svg) no-repeat center;
|
||||
}
|
||||
}
|
||||
|
||||
span {
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
max-width: 20vw;
|
||||
}
|
||||
}
|
||||
|
||||
.status, .comment {
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
max-width: 20vw;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
span {
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
max-width: 20vw;
|
||||
}
|
||||
}
|
||||
|
||||
.status, .comment {
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
max-width: 20vw;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,8 @@ export class ContractsComponent implements OnInit, OnDestroy {
|
|||
private route: ActivatedRoute,
|
||||
private router: Router,
|
||||
private variablesService: VariablesService
|
||||
) {}
|
||||
) {
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
this.parentRouting = this.route.parent.params.subscribe(params => {
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
<div class="head">
|
||||
<div class="breadcrumbs">
|
||||
<span>{{ 'BREADCRUMBS.ADD_WALLET' | translate }}</span>
|
||||
<span [routerLink]="['/main']">{{ 'BREADCRUMBS.ADD_WALLET' | translate }}</span>
|
||||
<span>{{ 'BREADCRUMBS.CREATE_WALLET' | translate }}</span>
|
||||
</div>
|
||||
<a class="back-btn" [routerLink]="['/main']">
|
||||
|
|
|
|||
|
|
@ -2,8 +2,10 @@ import {Component, NgZone, OnInit} from '@angular/core';
|
|||
import {FormGroup, FormControl, Validators} from '@angular/forms';
|
||||
import {BackendService} from '../_helpers/services/backend.service';
|
||||
import {VariablesService} from '../_helpers/services/variables.service';
|
||||
import {ModalService} from '../_helpers/services/modal.service';
|
||||
import {Router} from '@angular/router';
|
||||
import {Wallet} from '../_helpers/models/wallet.model';
|
||||
import {TranslateService} from '@ngx-translate/core';
|
||||
|
||||
@Component({
|
||||
selector: 'app-create-wallet',
|
||||
|
|
@ -37,7 +39,9 @@ export class CreateWalletComponent implements OnInit {
|
|||
private router: Router,
|
||||
private backend: BackendService,
|
||||
private variablesService: VariablesService,
|
||||
private ngZone: NgZone
|
||||
private modalService: ModalService,
|
||||
private ngZone: NgZone,
|
||||
private translate: TranslateService
|
||||
) {
|
||||
}
|
||||
|
||||
|
|
@ -50,7 +54,7 @@ export class CreateWalletComponent implements OnInit {
|
|||
|
||||
saveWallet() {
|
||||
if (this.createForm.valid) {
|
||||
this.backend.saveFileDialog('Save the wallet file.', '*', this.variablesService.settings.default_path, (file_status, file_data) => {
|
||||
this.backend.saveFileDialog(this.translate.instant('CREATE_WALLET.TITLE_SAVE'), '*', this.variablesService.settings.default_path, (file_status, file_data) => {
|
||||
if (file_status) {
|
||||
this.variablesService.settings.default_path = file_data.path.substr(0, file_data.path.lastIndexOf('/'));
|
||||
this.backend.generateWallet(file_data.path, this.createForm.get('password').value, (generate_status, generate_data, errorCode) => {
|
||||
|
|
@ -72,9 +76,9 @@ export class CreateWalletComponent implements OnInit {
|
|||
});
|
||||
} else {
|
||||
if (errorCode && errorCode === 'ALREADY_EXISTS') {
|
||||
alert('You cannot record a file on top of another file');
|
||||
this.modalService.prepareModal('error', 'CREATE_WALLET.ERROR_CANNOT_SAVE_TOP');
|
||||
} else {
|
||||
alert('You cannot save a safe file to the system partition');
|
||||
this.modalService.prepareModal('error', 'CREATE_WALLET.ERROR_CANNOT_SAVE_SYSTEM');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -13,15 +13,19 @@
|
|||
<tr *ngFor="let item of variablesService.currentWallet.history">
|
||||
<td>
|
||||
<div class="status" [class.send]="!item.is_income" [class.received]="item.is_income">
|
||||
<div class="confirmation" tooltip="{{ 'HISTORY.STATUS_TOOLTIP' | translate : {'current': getHeight(item)/10, 'total': 10} }}" placement="bottom" tooltipClass="history-tooltip" delay="500">
|
||||
<div class="fill" [style.height]="getHeight(item) + '%'"></div>
|
||||
</div>
|
||||
<ng-container *ngIf="variablesService.height_app - item.height <= 10 || item.height === 0 || (item.is_mining && item.height === 0)">
|
||||
<div class="confirmation" tooltip="{{ 'HISTORY.STATUS_TOOLTIP' | translate : {'current': getHeight(item)/10, 'total': 10} }}" placement="bottom" tooltipClass="history-tooltip" delay="500">
|
||||
<div class="fill" [style.height]="getHeight(item) + '%'"></div>
|
||||
</div>
|
||||
</ng-container>
|
||||
<i class="icon"></i>
|
||||
<span>{{ (item.is_income ? 'HISTORY.RECEIVED' : 'HISTORY.SEND') | translate }}</span>
|
||||
</div>
|
||||
</td>
|
||||
<td>{{item.timestamp * 1000 | date : 'dd-MM-yyyy HH:mm'}}</td>
|
||||
<td>{{item.sortAmount | intToMoney}} {{variablesService.defaultCurrency}}</td>
|
||||
<td>
|
||||
<span *ngIf="item.sortAmount">{{item.sortAmount | intToMoney}} {{variablesService.defaultCurrency}}</span>
|
||||
</td>
|
||||
<td>
|
||||
<span *ngIf="item.sortFee">{{item.sortFee | intToMoney}} {{variablesService.defaultCurrency}}</span>
|
||||
</td>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,4 @@
|
|||
import {Component, OnInit, OnDestroy} from '@angular/core';
|
||||
import {ActivatedRoute} from '@angular/router';
|
||||
import {BackendService} from '../_helpers/services/backend.service';
|
||||
import {VariablesService} from '../_helpers/services/variables.service';
|
||||
|
||||
@Component({
|
||||
|
|
@ -9,19 +7,11 @@ import {VariablesService} from '../_helpers/services/variables.service';
|
|||
styleUrls: ['./history.component.scss']
|
||||
})
|
||||
export class HistoryComponent implements OnInit, OnDestroy {
|
||||
parentRouting;
|
||||
|
||||
constructor(
|
||||
private route: ActivatedRoute,
|
||||
private backend: BackendService,
|
||||
private variablesService: VariablesService
|
||||
) {
|
||||
constructor(private variablesService: VariablesService) {
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
this.parentRouting = this.route.parent.params.subscribe(() => {
|
||||
console.log(this.variablesService.currentWallet.history);
|
||||
});
|
||||
}
|
||||
|
||||
getHeight(item) {
|
||||
|
|
@ -37,7 +27,6 @@ export class HistoryComponent implements OnInit, OnDestroy {
|
|||
}
|
||||
|
||||
ngOnDestroy() {
|
||||
this.parentRouting.unsubscribe();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,9 +14,9 @@
|
|||
max-width: 40rem;
|
||||
|
||||
.logo {
|
||||
background: url("../../assets/images/logo.png") no-repeat center top;
|
||||
background: url(../../assets/icons/logo.svg) no-repeat center;
|
||||
width: 100%;
|
||||
height: 14rem;
|
||||
height: 20rem;
|
||||
}
|
||||
|
||||
.form-login {
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
import {Component, NgZone, OnInit} from '@angular/core';
|
||||
import {Component, NgZone, OnInit, OnDestroy} from '@angular/core';
|
||||
import {FormGroup, FormControl, Validators} from '@angular/forms';
|
||||
import {ActivatedRoute, Router} from '@angular/router';
|
||||
import {BackendService} from '../_helpers/services/backend.service';
|
||||
import {VariablesService} from '../_helpers/services/variables.service';
|
||||
import {ModalService} from '../_helpers/services/modal.service';
|
||||
import {Wallet} from '../_helpers/models/wallet.model';
|
||||
|
||||
@Component({
|
||||
|
|
@ -10,7 +11,9 @@ import {Wallet} from '../_helpers/models/wallet.model';
|
|||
templateUrl: './login.component.html',
|
||||
styleUrls: ['./login.component.scss']
|
||||
})
|
||||
export class LoginComponent implements OnInit {
|
||||
export class LoginComponent implements OnInit, OnDestroy {
|
||||
|
||||
queryRouting;
|
||||
|
||||
regForm = new FormGroup({
|
||||
password: new FormControl('', Validators.required),
|
||||
|
|
@ -30,12 +33,13 @@ export class LoginComponent implements OnInit {
|
|||
private router: Router,
|
||||
private backend: BackendService,
|
||||
private variablesService: VariablesService,
|
||||
private modalService: ModalService,
|
||||
private ngZone: NgZone
|
||||
) {
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
this.route.queryParams.subscribe(params => {
|
||||
this.queryRouting = this.route.queryParams.subscribe(params => {
|
||||
if (params.type) {
|
||||
this.type = params.type;
|
||||
}
|
||||
|
|
@ -51,7 +55,6 @@ export class LoginComponent implements OnInit {
|
|||
this.router.navigate(['/']);
|
||||
});
|
||||
} else {
|
||||
// TODO error sign in
|
||||
console.log(data['error_code']);
|
||||
}
|
||||
});
|
||||
|
|
@ -62,10 +65,7 @@ export class LoginComponent implements OnInit {
|
|||
if (this.authForm.valid) {
|
||||
const appPass = this.authForm.get('password').value;
|
||||
this.backend.getSecureAppData({pass: appPass}, (status, data) => {
|
||||
if (data.error_code && data.error_code === 'WRONG_PASSWORD') {
|
||||
// TODO error log in informer.error('MESSAGE.INCORRECT_PASSWORD');
|
||||
console.log('WRONG_PASSWORD');
|
||||
} else {
|
||||
if (!data.error_code) {
|
||||
this.variablesService.startCountdown();
|
||||
this.variablesService.appPass = appPass;
|
||||
if (this.variablesService.wallets.length) {
|
||||
|
|
@ -139,4 +139,10 @@ export class LoginComponent implements OnInit {
|
|||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ngOnDestroy() {
|
||||
this.queryRouting.unsubscribe();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<button type="button" class="blue-button" (click)="openWallet()">{{ 'MAIN.BUTTON_OPEN_WALLET' | translate }}</button>
|
||||
<button type="button" class="blue-button" [routerLink]="['/restore']">{{ 'MAIN.BUTTON_RESTORE_BACKUP' | translate }}</button>
|
||||
</div>
|
||||
<div class="add-wallet-help">
|
||||
<div class="add-wallet-help" (click)="openInBrowser()">
|
||||
<i class="icon"></i><span>{{ 'MAIN.HELP' | translate }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
.add-wallet-help {
|
||||
display: flex;
|
||||
cursor: pointer;
|
||||
font-size: 1.3rem;
|
||||
line-height: 1.4rem;
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ import {Component, NgZone, OnInit} from '@angular/core';
|
|||
import {BackendService} from '../_helpers/services/backend.service';
|
||||
import {VariablesService} from '../_helpers/services/variables.service';
|
||||
import {Router} from '@angular/router';
|
||||
import {TranslateService} from '@ngx-translate/core';
|
||||
|
||||
@Component({
|
||||
selector: 'app-main',
|
||||
|
|
@ -14,13 +15,14 @@ export class MainComponent implements OnInit {
|
|||
private router: Router,
|
||||
private backend: BackendService,
|
||||
private variablesService: VariablesService,
|
||||
private ngZone: NgZone
|
||||
private ngZone: NgZone,
|
||||
private translate: TranslateService
|
||||
) {}
|
||||
|
||||
ngOnInit() {}
|
||||
|
||||
openWallet() {
|
||||
this.backend.openFileDialog('Open the wallet file.', '*', this.variablesService.settings.default_path, (file_status, file_data) => {
|
||||
this.backend.openFileDialog(this.translate.instant('MAIN.CHOOSE_PATH'), '*', this.variablesService.settings.default_path, (file_status, file_data) => {
|
||||
if (file_status) {
|
||||
this.variablesService.settings.default_path = file_data.path.substr(0, file_data.path.lastIndexOf('/'));
|
||||
this.ngZone.run(() => {
|
||||
|
|
@ -32,4 +34,8 @@ export class MainComponent implements OnInit {
|
|||
});
|
||||
}
|
||||
|
||||
openInBrowser() {
|
||||
this.backend.openUrlInBrowser('zano.org');
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
<div class="head">
|
||||
<div class="breadcrumbs">
|
||||
<span>{{ 'BREADCRUMBS.ADD_WALLET' | translate }}</span>
|
||||
<span [routerLink]="['/main']">{{ 'BREADCRUMBS.ADD_WALLET' | translate }}</span>
|
||||
<span>{{ 'BREADCRUMBS.OPEN_WALLET' | translate }}</span>
|
||||
</div>
|
||||
<a class="back-btn" [routerLink]="['/main']">
|
||||
|
|
|
|||
|
|
@ -1,17 +1,20 @@
|
|||
import {Component, NgZone, OnInit} from '@angular/core';
|
||||
import {Component, NgZone, OnDestroy, OnInit} from '@angular/core';
|
||||
import {FormGroup, FormControl, Validators} from '@angular/forms';
|
||||
import {BackendService} from '../_helpers/services/backend.service';
|
||||
import {VariablesService} from '../_helpers/services/variables.service';
|
||||
import {ModalService} from '../_helpers/services/modal.service';
|
||||
import {ActivatedRoute, Router} from '@angular/router';
|
||||
import {Wallet} from '../_helpers/models/wallet.model';
|
||||
import {TranslateService} from '@ngx-translate/core';
|
||||
|
||||
@Component({
|
||||
selector: 'app-open-wallet',
|
||||
templateUrl: './open-wallet.component.html',
|
||||
styleUrls: ['./open-wallet.component.scss']
|
||||
})
|
||||
export class OpenWalletComponent implements OnInit {
|
||||
export class OpenWalletComponent implements OnInit, OnDestroy {
|
||||
|
||||
queryRouting;
|
||||
filePath: string;
|
||||
|
||||
openForm = new FormGroup({
|
||||
|
|
@ -31,12 +34,14 @@ export class OpenWalletComponent implements OnInit {
|
|||
private router: Router,
|
||||
private backend: BackendService,
|
||||
private variablesService: VariablesService,
|
||||
private ngZone: NgZone
|
||||
private modalService: ModalService,
|
||||
private ngZone: NgZone,
|
||||
private translate: TranslateService
|
||||
) {
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
this.route.queryParams.subscribe(params => {
|
||||
this.queryRouting = this.route.queryParams.subscribe(params => {
|
||||
if (params.path) {
|
||||
this.filePath = params.path;
|
||||
let filename = '';
|
||||
|
|
@ -57,11 +62,11 @@ export class OpenWalletComponent implements OnInit {
|
|||
if (this.openForm.valid) {
|
||||
this.backend.openWallet(this.filePath, this.openForm.get('password').value, false, (open_status, open_data, open_error) => {
|
||||
if (open_error && open_error === 'FILE_NOT_FOUND') {
|
||||
// var error_translate = $filter('translate')('INFORMER.SAFE_FILE_NOT_FOUND1');
|
||||
let error_translate = this.translate.instant('OPEN_WALLET.SAFE_FILE_NOT_FOUND1');
|
||||
// error_translate += ':<br>' + $scope.safe.path;
|
||||
// error_translate += $filter('translate')('INFORMER.SAFE_FILE_NOT_FOUND2');
|
||||
// informer.fileNotFound(error_translate);
|
||||
alert('FILE_NOT_FOUND');
|
||||
error_translate += ':<br>' + this.filePath;
|
||||
error_translate += this.translate.instant('OPEN_WALLET.SAFE_FILE_NOT_FOUND2');
|
||||
this.modalService.prepareModal('error', error_translate);
|
||||
} else {
|
||||
if (open_status || open_error === 'FILE_RESTORED') {
|
||||
|
||||
|
|
@ -73,9 +78,8 @@ export class OpenWalletComponent implements OnInit {
|
|||
});
|
||||
|
||||
if (exists) {
|
||||
alert('SAFES.WITH_ADDRESS_ALREADY_OPEN');
|
||||
this.modalService.prepareModal('error', 'OPEN_WALLET.WITH_ADDRESS_ALREADY_OPEN');
|
||||
this.backend.closeWallet(open_data.wallet_id, (close_status, close_data) => {
|
||||
console.log(close_status, close_data);
|
||||
this.ngZone.run(() => {
|
||||
this.router.navigate(['/']);
|
||||
});
|
||||
|
|
@ -122,4 +126,8 @@ export class OpenWalletComponent implements OnInit {
|
|||
}
|
||||
}
|
||||
|
||||
ngOnDestroy() {
|
||||
this.queryRouting.unsubscribe();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<div class="head">
|
||||
<div class="breadcrumbs">
|
||||
<span>{{ 'BREADCRUMBS.CONTRACTS' | translate }}</span>
|
||||
<span [routerLink]="'/wallet/' + currentWalletId + '/contracts'">{{ 'BREADCRUMBS.CONTRACTS' | translate }}</span>
|
||||
<span *ngIf="newPurchase">{{ 'BREADCRUMBS.NEW_PURCHASE' | translate }}</span>
|
||||
<span *ngIf="!newPurchase">{{ 'BREADCRUMBS.OLD_PURCHASE' | translate }}</span>
|
||||
</div>
|
||||
|
|
@ -78,7 +78,7 @@
|
|||
|
||||
<div class="input-block">
|
||||
<label for="purchase-comment">{{ 'PURCHASE.COMMENT' | translate }}</label>
|
||||
<input type="text" id="purchase-comment" formControlName="comment" (contextmenu)="variablesService.onContextMenu($event)">
|
||||
<input type="text" id="purchase-comment" formControlName="comment" [readonly]="!newPurchase" (contextmenu)="variablesService.onContextMenu($event)">
|
||||
</div>
|
||||
|
||||
<button type="button" class="purchase-select" (click)="toggleOptions()">
|
||||
|
|
@ -90,6 +90,14 @@
|
|||
<label for="purchase-fee">{{ 'PURCHASE.FEE' | translate }}</label>
|
||||
<input type="text" id="purchase-fee" formControlName="fee" readonly>
|
||||
</div>
|
||||
<div class="input-block" *ngIf="newPurchase">
|
||||
<label for="purchase-time">{{ 'PURCHASE.WAITING_TIME' | translate }}</label>
|
||||
<select id="purchase-time" formControlName="time">
|
||||
<option *ngFor="let title of [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]" [value]="title">
|
||||
{{title}}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="input-block">
|
||||
<label for="purchase-payment">{{ 'PURCHASE.PAYMENT' | translate }}</label>
|
||||
<input type="text" id="purchase-payment" formControlName="payment" [readonly]="!newPurchase" (contextmenu)="variablesService.onContextMenu($event)">
|
||||
|
|
@ -105,7 +113,7 @@
|
|||
</ng-container>
|
||||
|
||||
<ng-container *ngIf="currentContract.is_a">
|
||||
<span *ngIf="currentContract.state == 1">{{ 'DEALS.CUSTOMER_WAITING_ANSWER' | translate }}</span>
|
||||
<span *ngIf="currentContract.state == 1">{{ 'Waiting for seller respond to contract proposal' | translate }}</span>
|
||||
<!--<span *ngIf="currentContract.state == 1" ng-bind="'(' + (currentContract.expiration_time | buyingTime : 0) + ')'"></span>-->
|
||||
|
||||
<span *ngIf="currentContract.state == 110">{{ 'The seller ignored your contract proposal' | translate }}</span>
|
||||
|
|
@ -167,8 +175,9 @@
|
|||
</ng-container>
|
||||
|
||||
<ng-container *ngIf="currentContract.state == 201 || currentContract.state == 601">
|
||||
<span *ngIf="(variablesService.height_app - currentContract.height) < 10">{{variablesService.height_app - currentContract.height}}/10</span>
|
||||
<span *ngIf="historyBlock && historyBlock.sortAmount">{{(historyBlock.is_income ? '+' : '') + (historyBlock.sortAmount | intToMoney)}}</span>
|
||||
<span *ngIf="currentContract.height === 0">0/10</span>
|
||||
<span *ngIf="currentContract.height !== 0 && (variablesService.height_app - currentContract.height) < 10">{{variablesService.height_app - currentContract.height}}/10</span>
|
||||
<span *ngIf="historyBlock && historyBlock.sortAmount">{{(historyBlock.is_income ? '+' : '') + (historyBlock.sortAmount | intToMoney)}} {{variablesService.defaultCurrency}}</span>
|
||||
</ng-container>
|
||||
|
||||
</div>
|
||||
|
|
@ -204,6 +213,17 @@
|
|||
|
||||
</div>
|
||||
|
||||
<div style="display: flex; justify-content: center;" *ngIf="!newPurchase && currentContract.is_a && (currentContract.state == 201 || currentContract.state == 2 || currentContract.state == 120 || currentContract.state == 130)">
|
||||
<div class="input-block">
|
||||
<label for="purchase-timeCancel">{{ 'PURCHASE.WAITING_TIME' | translate }}</label>
|
||||
<select id="purchase-timeCancel" formControlName="timeCancel">
|
||||
<option *ngFor="let title of [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]" [value]="title">
|
||||
{{title}}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
<div class="progress-bar-container">
|
||||
|
|
|
|||
|
|
@ -3,8 +3,10 @@ import {ActivatedRoute} from '@angular/router';
|
|||
import {FormControl, FormGroup, Validators} from '@angular/forms';
|
||||
import {BackendService} from '../_helpers/services/backend.service';
|
||||
import {VariablesService} from '../_helpers/services/variables.service';
|
||||
import {ModalService} from '../_helpers/services/modal.service';
|
||||
import {Location} from '@angular/common';
|
||||
import {IntToMoneyPipe} from '../_helpers/pipes/int-to-money.pipe';
|
||||
import {TranslateService} from '@ngx-translate/core';
|
||||
|
||||
@Component({
|
||||
selector: 'app-purchase',
|
||||
|
|
@ -15,6 +17,7 @@ export class PurchaseComponent implements OnInit, OnDestroy {
|
|||
currentWalletId;
|
||||
newPurchase = false;
|
||||
parentRouting;
|
||||
subRouting;
|
||||
historyBlock;
|
||||
|
||||
purchaseForm = new FormGroup({
|
||||
|
|
@ -26,19 +29,24 @@ export class PurchaseComponent implements OnInit, OnDestroy {
|
|||
sameAmount: new FormControl(false),
|
||||
comment: new FormControl(''),
|
||||
fee: new FormControl('0.01'),
|
||||
time: new FormControl({value: '12', disabled: false}),
|
||||
timeCancel: new FormControl('12'),
|
||||
payment: new FormControl('')
|
||||
});
|
||||
|
||||
additionalOptions = false;
|
||||
currentContract = null;
|
||||
heightAppEvent;
|
||||
|
||||
constructor(
|
||||
private route: ActivatedRoute,
|
||||
private backend: BackendService,
|
||||
private variablesService: VariablesService,
|
||||
private modalService: ModalService,
|
||||
private ngZone: NgZone,
|
||||
private location: Location,
|
||||
private intToMoneyPipe: IntToMoneyPipe
|
||||
private intToMoneyPipe: IntToMoneyPipe,
|
||||
private translate: TranslateService
|
||||
) {
|
||||
}
|
||||
|
||||
|
|
@ -54,7 +62,7 @@ export class PurchaseComponent implements OnInit, OnDestroy {
|
|||
this.parentRouting = this.route.parent.params.subscribe(params => {
|
||||
this.currentWalletId = params['id'];
|
||||
});
|
||||
this.route.params.subscribe(params => {
|
||||
this.subRouting = this.route.params.subscribe(params => {
|
||||
if (params.hasOwnProperty('id')) {
|
||||
this.currentContract = this.variablesService.currentWallet.getContract(params['id']);
|
||||
this.purchaseForm.setValue({
|
||||
|
|
@ -66,23 +74,12 @@ export class PurchaseComponent implements OnInit, OnDestroy {
|
|||
sameAmount: false,
|
||||
comment: this.currentContract.private_detailes.c,
|
||||
fee: '0.01',
|
||||
time: '12',
|
||||
timeCancel: '12',
|
||||
payment: this.currentContract.payment_id
|
||||
});
|
||||
this.newPurchase = false;
|
||||
|
||||
|
||||
// todo original code watch height_v
|
||||
if (this.currentContract.state === 201 && this.currentContract.height !== 0 && (this.variablesService.height_app - this.currentContract.height) >= 10) {
|
||||
this.currentContract.state = 2;
|
||||
this.currentContract.is_new = true;
|
||||
this.variablesService.currentWallet.recountNewContracts();
|
||||
} else if (this.currentContract.state === 601 && this.currentContract.height !== 0 && (this.variablesService.height_app - this.currentContract.height) >= 10) {
|
||||
this.currentContract.state = 6;
|
||||
this.currentContract.is_new = true;
|
||||
this.variablesService.currentWallet.recountNewContracts();
|
||||
}
|
||||
|
||||
|
||||
if (this.currentContract.is_new) {
|
||||
if (this.currentContract.is_a && this.currentContract.state === 2) {
|
||||
this.currentContract.state = 120;
|
||||
|
|
@ -109,19 +106,27 @@ export class PurchaseComponent implements OnInit, OnDestroy {
|
|||
}
|
||||
this.currentContract.is_new = false;
|
||||
|
||||
// todo need remove timeout
|
||||
setTimeout(() => {
|
||||
this.variablesService.currentWallet.recountNewContracts();
|
||||
}, 0);
|
||||
|
||||
this.checkAndChangeHistory();
|
||||
|
||||
}
|
||||
this.checkAndChangeHistory();
|
||||
|
||||
} else {
|
||||
this.newPurchase = true;
|
||||
}
|
||||
});
|
||||
this.heightAppEvent = this.variablesService.getHeightAppEvent.subscribe((newHeight: number) => {
|
||||
if (this.currentContract && this.currentContract.state === 201 && this.currentContract.height !== 0 && (newHeight - this.currentContract.height) >= 10) {
|
||||
this.currentContract.state = 2;
|
||||
this.currentContract.is_new = true;
|
||||
this.variablesService.currentWallet.recountNewContracts();
|
||||
} else if (this.currentContract && this.currentContract.state === 601 && this.currentContract.height !== 0 && (newHeight - this.currentContract.height) >= 10) {
|
||||
this.currentContract.state = 6;
|
||||
this.currentContract.is_new = true;
|
||||
this.variablesService.currentWallet.recountNewContracts();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
toggleOptions() {
|
||||
|
|
@ -129,11 +134,17 @@ export class PurchaseComponent implements OnInit, OnDestroy {
|
|||
}
|
||||
|
||||
getProgressBarWidth() {
|
||||
if (this.newPurchase) {
|
||||
return '9rem';
|
||||
} else {
|
||||
return '50%';
|
||||
let progress = '9rem';
|
||||
if (!this.newPurchase) {
|
||||
if (this.currentContract) {
|
||||
if ([110, 3, 4, 6, 140].indexOf(this.currentContract.state) !== -1) {
|
||||
progress = '100%';
|
||||
} else {
|
||||
progress = '50%';
|
||||
}
|
||||
}
|
||||
}
|
||||
return progress;
|
||||
}
|
||||
|
||||
sameAmountChange() {
|
||||
|
|
@ -172,10 +183,12 @@ export class PurchaseComponent implements OnInit, OnDestroy {
|
|||
this.purchaseForm.get('amount').value,
|
||||
this.purchaseForm.get('yourDeposit').value,
|
||||
this.purchaseForm.get('sellerDeposit').value,
|
||||
12,
|
||||
this.purchaseForm.get('time').value,
|
||||
this.purchaseForm.get('payment').value,
|
||||
() => {
|
||||
this.back();
|
||||
(create_status) => {
|
||||
if (create_status) {
|
||||
this.back();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -187,7 +200,7 @@ export class PurchaseComponent implements OnInit, OnDestroy {
|
|||
acceptState() {
|
||||
this.backend.acceptProposal(this.currentWalletId, this.currentContract.contract_id, (accept_status) => {
|
||||
if (accept_status) {
|
||||
alert('You have accepted the contract proposal. Please wait for the pledges to be made');
|
||||
this.modalService.prepareModal('info', 'PURCHASE.ACCEPT_STATE_WAIT_BIG');
|
||||
this.back();
|
||||
}
|
||||
});
|
||||
|
|
@ -217,7 +230,7 @@ export class PurchaseComponent implements OnInit, OnDestroy {
|
|||
this.currentContract.time = this.currentContract.expiration_time;
|
||||
|
||||
this.variablesService.currentWallet.recountNewContracts();
|
||||
alert('You have ignored the contract proposal');
|
||||
this.modalService.prepareModal('info', 'PURCHASE.IGNORED_ACCEPT');
|
||||
this.back();
|
||||
}
|
||||
|
||||
|
|
@ -225,7 +238,7 @@ export class PurchaseComponent implements OnInit, OnDestroy {
|
|||
productNotGot() {
|
||||
this.backend.releaseProposal(this.currentWalletId, this.currentContract.contract_id, 'REL_B', (release_status) => {
|
||||
if (release_status) {
|
||||
alert('The pledges have been nullified.');
|
||||
this.modalService.prepareModal('info', 'PURCHASE.BURN_PROPOSAL');
|
||||
this.back();
|
||||
}
|
||||
});
|
||||
|
|
@ -234,16 +247,16 @@ export class PurchaseComponent implements OnInit, OnDestroy {
|
|||
dealsDetailsFinish() {
|
||||
this.backend.releaseProposal(this.currentWalletId, this.currentContract.contract_id, 'REL_N', (release_status) => {
|
||||
if (release_status) {
|
||||
alert('The contract is complete. The payment has been sent.');
|
||||
this.modalService.prepareModal('success', 'PURCHASE.SUCCESS_FINISH_PROPOSAL');
|
||||
this.back();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
dealsDetailsCancel() {
|
||||
this.backend.requestCancelContract(this.currentWalletId, this.currentContract.contract_id, 12, (cancel_status) => {
|
||||
this.backend.requestCancelContract(this.currentWalletId, this.currentContract.contract_id, this.purchaseForm.get('timeCancel').value, (cancel_status) => {
|
||||
if (cancel_status) {
|
||||
alert('Proposal to cancel contract sent to seller');
|
||||
this.modalService.prepareModal('info', 'PURCHASE.SEND_CANCEL_PROPOSAL');
|
||||
this.back();
|
||||
}
|
||||
});
|
||||
|
|
@ -273,14 +286,14 @@ export class PurchaseComponent implements OnInit, OnDestroy {
|
|||
this.currentContract.time = this.currentContract.cancel_expiration_time;
|
||||
|
||||
this.variablesService.currentWallet.recountNewContracts();
|
||||
alert('You have ignored the proposal to cancel the contract');
|
||||
this.modalService.prepareModal('info', 'PURCHASE.IGNORED_CANCEL');
|
||||
this.back();
|
||||
}
|
||||
|
||||
dealsDetailsSellerCancel() {
|
||||
this.backend.acceptCancelContract(this.currentWalletId, this.currentContract.contract_id, (accept_status) => {
|
||||
if (accept_status) {
|
||||
alert('The contract is being cancelled. Please wait for the pledge to be returned');
|
||||
this.modalService.prepareModal('info', 'PURCHASE.DEALS_CANCELED_WAIT');
|
||||
this.back();
|
||||
}
|
||||
});
|
||||
|
|
@ -288,6 +301,8 @@ export class PurchaseComponent implements OnInit, OnDestroy {
|
|||
|
||||
ngOnDestroy() {
|
||||
this.parentRouting.unsubscribe();
|
||||
this.subRouting.unsubscribe();
|
||||
this.heightAppEvent.unsubscribe();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<div class="content">
|
||||
<div class="head">
|
||||
<div class="breadcrumbs">
|
||||
<span>{{ 'BREADCRUMBS.ADD_WALLET' | translate }}</span>
|
||||
<span [routerLink]="['/main']">{{ 'BREADCRUMBS.ADD_WALLET' | translate }}</span>
|
||||
<span>{{ 'BREADCRUMBS.RESTORE_WALLET' | translate }}</span>
|
||||
</div>
|
||||
<a class="back-btn" [routerLink]="['/main']">
|
||||
|
|
|
|||
|
|
@ -3,7 +3,9 @@ import {FormGroup, FormControl, Validators} from '@angular/forms';
|
|||
import {Router} from '@angular/router';
|
||||
import {BackendService} from '../_helpers/services/backend.service';
|
||||
import {VariablesService} from '../_helpers/services/variables.service';
|
||||
import {ModalService} from '../_helpers/services/modal.service';
|
||||
import {Wallet} from '../_helpers/models/wallet.model';
|
||||
import {TranslateService} from '@ngx-translate/core';
|
||||
|
||||
@Component({
|
||||
selector: 'app-restore-wallet',
|
||||
|
|
@ -38,7 +40,9 @@ export class RestoreWalletComponent implements OnInit {
|
|||
private router: Router,
|
||||
private backend: BackendService,
|
||||
private variablesService: VariablesService,
|
||||
private ngZone: NgZone
|
||||
private modalService: ModalService,
|
||||
private ngZone: NgZone,
|
||||
private translate: TranslateService
|
||||
) {
|
||||
}
|
||||
|
||||
|
|
@ -59,7 +63,7 @@ export class RestoreWalletComponent implements OnInit {
|
|||
this.restoreForm.get('key').setErrors({key_not_valid: true});
|
||||
});
|
||||
} else {
|
||||
this.backend.saveFileDialog('Save the wallet file.', '*', this.variablesService.settings.default_path, (save_status, save_data) => {
|
||||
this.backend.saveFileDialog(this.translate.instant('RESTORE_WALLET.CHOOSE_PATH'), '*', this.variablesService.settings.default_path, (save_status, save_data) => {
|
||||
if (save_status) {
|
||||
this.variablesService.settings.default_path = save_data.path.substr(0, save_data.path.lastIndexOf('/'));
|
||||
this.backend.restoreWallet(save_data.path, this.restoreForm.get('password').value, this.restoreForm.get('key').value, (restore_status, restore_data) => {
|
||||
|
|
@ -90,7 +94,7 @@ export class RestoreWalletComponent implements OnInit {
|
|||
this.walletSaved = true;
|
||||
});
|
||||
} else {
|
||||
alert('SAFES.NOT_CORRECT_FILE_OR_PASSWORD');
|
||||
this.modalService.prepareModal('error', 'RESTORE_WALLET.NOT_CORRECT_FILE_OR_PASSWORD');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<div class="content">
|
||||
<div class="head">
|
||||
<div class="breadcrumbs">
|
||||
<span>{{ 'BREADCRUMBS.ADD_WALLET' | translate }}</span>
|
||||
<span [routerLink]="['/main']">{{ 'BREADCRUMBS.ADD_WALLET' | translate }}</span>
|
||||
<span>{{ 'BREADCRUMBS.SAVE_PHRASE' | translate }}</span>
|
||||
</div>
|
||||
<a class="back-btn" [routerLink]="['/main']">
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import {Component, NgZone, OnInit} from '@angular/core';
|
||||
import {Component, NgZone, OnDestroy, OnInit} from '@angular/core';
|
||||
import {BackendService} from '../_helpers/services/backend.service';
|
||||
import {ActivatedRoute, Router} from '@angular/router';
|
||||
import {VariablesService} from '../_helpers/services/variables.service';
|
||||
|
|
@ -8,8 +8,9 @@ import {VariablesService} from '../_helpers/services/variables.service';
|
|||
templateUrl: './seed-phrase.component.html',
|
||||
styleUrls: ['./seed-phrase.component.scss']
|
||||
})
|
||||
export class SeedPhraseComponent implements OnInit {
|
||||
export class SeedPhraseComponent implements OnInit, OnDestroy {
|
||||
|
||||
queryRouting;
|
||||
seedPhrase = '';
|
||||
wallet_id: number;
|
||||
|
||||
|
|
@ -22,7 +23,7 @@ export class SeedPhraseComponent implements OnInit {
|
|||
) {}
|
||||
|
||||
ngOnInit() {
|
||||
this.route.queryParams.subscribe(params => {
|
||||
this.queryRouting = this.route.queryParams.subscribe(params => {
|
||||
if (params.wallet_id) {
|
||||
this.wallet_id = params.wallet_id;
|
||||
this.backend.getSmartSafeInfo(params.wallet_id, (status, data) => {
|
||||
|
|
@ -56,9 +57,6 @@ export class SeedPhraseComponent implements OnInit {
|
|||
} else {
|
||||
console.log(run_data['error_code']);
|
||||
}
|
||||
// $rootScope.reloadCounters();
|
||||
// $rootScope.$broadcast('NEED_REFRESH_HISTORY');
|
||||
// $rootScope.saveSecureData();
|
||||
});
|
||||
} else {
|
||||
this.variablesService.opening_wallet = null;
|
||||
|
|
@ -71,4 +69,8 @@ export class SeedPhraseComponent implements OnInit {
|
|||
}
|
||||
}
|
||||
|
||||
ngOnDestroy() {
|
||||
this.queryRouting.unsubscribe();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import {FormGroup, FormControl, Validators} from '@angular/forms';
|
|||
import {ActivatedRoute} from '@angular/router';
|
||||
import {BackendService} from '../_helpers/services/backend.service';
|
||||
import {VariablesService} from '../_helpers/services/variables.service';
|
||||
import {ModalService} from '../_helpers/services/modal.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-send',
|
||||
|
|
@ -26,6 +27,7 @@ export class SendComponent implements OnInit, OnDestroy {
|
|||
private route: ActivatedRoute,
|
||||
private backend: BackendService,
|
||||
private variablesService: VariablesService,
|
||||
private modalService: ModalService,
|
||||
private ngZone: NgZone
|
||||
) {}
|
||||
|
||||
|
|
@ -65,7 +67,7 @@ export class SendComponent implements OnInit, OnDestroy {
|
|||
this.sendForm.get('comment').value,
|
||||
(send_status, send_data) => {
|
||||
if (send_status) {
|
||||
alert('SEND_MONEY.SUCCESS_SENT');
|
||||
this.modalService.prepareModal('success', 'SEND.SUCCESS_SENT');
|
||||
this.sendForm.reset({address: '', amount: null, comment: '', mixin: 0, fee: '0.01'});
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
<h3>{{ 'SIDEBAR.TITLE' | translate }}</h3><button [routerLink]="['main']">{{ 'SIDEBAR.ADD_NEW' | translate }}</button>
|
||||
</div>
|
||||
<div class="sidebar-accounts-list scrolled-content">
|
||||
<div class="sidebar-account" *ngFor="let wallet of variablesService.wallets" [class.active]="wallet?.wallet_id === walletActive" [routerLink]="['/wallet/' + wallet.wallet_id + '/' + walletActiveSubDirectory]">
|
||||
<div class="sidebar-account" *ngFor="let wallet of variablesService.wallets" [class.active]="wallet?.wallet_id === walletActive" [routerLink]="['/wallet/' + wallet.wallet_id + '/history']">
|
||||
<div class="sidebar-account-row account-title-balance">
|
||||
<span class="title">{{wallet.name}}</span>
|
||||
<span class="balance">{{wallet.unlocked_balance | intToMoney}} {{variablesService.defaultCurrency}}</span>
|
||||
|
|
@ -21,7 +21,7 @@
|
|||
<span class="indicator">{{wallet.new_contracts}}</span>
|
||||
</div>
|
||||
<div class="sidebar-account-row account-synchronization" *ngIf="!wallet.loaded && variablesService.daemon_state === 2">
|
||||
<span class="status">{{ 'SIDEBAR.SYNCHRONIZATION.SYNCING' | translate }}</span>
|
||||
<span class="status">{{ 'SIDEBAR.ACCOUNT.SYNCING' | translate }}</span>
|
||||
<div class="progress-bar-container">
|
||||
<div class="progress-bar">
|
||||
<div class="fill" [style.width]="wallet.progress + '%'"></div>
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ import {VariablesService} from '../_helpers/services/variables.service';
|
|||
styleUrls: ['./sidebar.component.scss']
|
||||
})
|
||||
export class SidebarComponent implements OnInit, OnDestroy {
|
||||
walletActiveSubDirectory = '';
|
||||
walletSubRouting;
|
||||
|
||||
walletActive: number;
|
||||
|
|
@ -26,9 +25,6 @@ export class SidebarComponent implements OnInit, OnDestroy {
|
|||
if (localPathArr.length >= 3) {
|
||||
this.walletActive = parseInt(localPathArr[2], 10);
|
||||
}
|
||||
if (localPathArr.length >= 4) {
|
||||
this.walletActiveSubDirectory = localPathArr[3];
|
||||
}
|
||||
} else if (this.router.url.indexOf('/details') !== -1) {
|
||||
this.walletActive = this.variablesService.currentWallet.wallet_id;
|
||||
} else {
|
||||
|
|
@ -42,12 +38,6 @@ export class SidebarComponent implements OnInit, OnDestroy {
|
|||
if (localPathArr.length >= 3) {
|
||||
this.walletActive = parseInt(localPathArr[2], 10);
|
||||
}
|
||||
if (localPathArr.length >= 4) {
|
||||
this.walletActiveSubDirectory = localPathArr[3];
|
||||
if (this.walletActiveSubDirectory === 'purchase') {
|
||||
this.walletActiveSubDirectory = 'contracts';
|
||||
}
|
||||
}
|
||||
} else if (event.url.indexOf('/details') !== -1) {
|
||||
this.walletActive = this.variablesService.currentWallet.wallet_id;
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<div class="content">
|
||||
<div class="head">
|
||||
<div class="breadcrumbs">
|
||||
<span>{{variablesService.currentWallet.name}}</span>
|
||||
<span (click)="back()">{{variablesService.currentWallet.name}}</span>
|
||||
<span>{{ 'BREADCRUMBS.WALLET_DETAILS' | translate }}</span>
|
||||
</div>
|
||||
<button type="button" class="back-btn" (click)="back()">
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<div class="header">
|
||||
<div>
|
||||
<h3>{{variablesService.currentWallet.name}}</h3>
|
||||
<button>
|
||||
<button (click)="openInBrowser()">
|
||||
<i class="icon account"></i>
|
||||
<span>{{ 'WALLET.REGISTER_ALIAS' | translate }}</span>
|
||||
</button>
|
||||
|
|
|
|||
|
|
@ -12,12 +12,19 @@ export class WalletComponent implements OnInit, OnDestroy {
|
|||
subRouting;
|
||||
walletID;
|
||||
tabs = [
|
||||
{
|
||||
title: 'WALLET.TABS.HISTORY',
|
||||
icon: 'history',
|
||||
link: '/history',
|
||||
indicator: false,
|
||||
active: true
|
||||
},
|
||||
{
|
||||
title: 'WALLET.TABS.SEND',
|
||||
icon: 'send',
|
||||
link: '/send',
|
||||
indicator: false,
|
||||
active: true
|
||||
active: false
|
||||
},
|
||||
{
|
||||
title: 'WALLET.TABS.RECEIVE',
|
||||
|
|
@ -26,13 +33,6 @@ export class WalletComponent implements OnInit, OnDestroy {
|
|||
indicator: false,
|
||||
active: false
|
||||
},
|
||||
{
|
||||
title: 'WALLET.TABS.HISTORY',
|
||||
icon: 'history',
|
||||
link: '/history',
|
||||
indicator: false,
|
||||
active: false
|
||||
},
|
||||
{
|
||||
title: 'WALLET.TABS.CONTRACTS',
|
||||
icon: 'contracts',
|
||||
|
|
@ -40,13 +40,13 @@ export class WalletComponent implements OnInit, OnDestroy {
|
|||
indicator: 1,
|
||||
active: false
|
||||
},
|
||||
{
|
||||
/*{
|
||||
title: 'WALLET.TABS.MESSAGES',
|
||||
icon: 'messages',
|
||||
link: '/messages',
|
||||
indicator: 32,
|
||||
active: false
|
||||
},
|
||||
},*/
|
||||
{
|
||||
title: 'WALLET.TABS.STAKING',
|
||||
icon: 'staking',
|
||||
|
|
@ -90,20 +90,9 @@ export class WalletComponent implements OnInit, OnDestroy {
|
|||
this.backend.setClipboard(this.variablesService.currentWallet.address);
|
||||
}
|
||||
|
||||
/*closeWallet() {
|
||||
this.backend.closeWallet(this.walletID, () => {
|
||||
for (let i = this.variablesService.wallets.length - 1; i >= 0; i--) {
|
||||
if (this.variablesService.wallets[i].wallet_id === this.walletID) {
|
||||
this.variablesService.wallets.splice(i, 1);
|
||||
}
|
||||
}
|
||||
this.backend.storeSecureAppData(() => {
|
||||
this.ngZone.run(() => {
|
||||
this.router.navigate(['/']);
|
||||
});
|
||||
});
|
||||
});
|
||||
}*/
|
||||
openInBrowser() {
|
||||
this.backend.openUrlInBrowser('zano.org');
|
||||
}
|
||||
|
||||
ngOnDestroy() {
|
||||
this.subRouting.unsubscribe();
|
||||
|
|
|
|||
BIN
src/gui/qt-daemon/html_source/src/assets/fonts/OpenSans-Bold.ttf
Normal file
|
|
@ -3,7 +3,8 @@
|
|||
"SETUP_MASTER_PASS": "Setup master password",
|
||||
"SETUP_CONFIRM_PASS": "Confirm the password",
|
||||
"MASTER_PASS": "Master password",
|
||||
"BUTTON_NEXT": "Next"
|
||||
"BUTTON_NEXT": "Next",
|
||||
"INCORRECT_PASSWORD": "Invalid password"
|
||||
},
|
||||
"COMMON": {
|
||||
"BACK": "Go back"
|
||||
|
|
@ -24,7 +25,8 @@
|
|||
"ADD_NEW": "+ Add new",
|
||||
"ACCOUNT": {
|
||||
"STAKING": "Staking",
|
||||
"MESSAGES": "New offers/Messages"
|
||||
"MESSAGES": "New offers/Messages",
|
||||
"SYNCING": "Syncing wallet"
|
||||
},
|
||||
"SETTINGS": "Settings",
|
||||
"LOG_OUT": "Log out",
|
||||
|
|
@ -42,19 +44,26 @@
|
|||
"BUTTON_NEW_WALLET": "Create new wallet",
|
||||
"BUTTON_OPEN_WALLET": "Open existing wallet",
|
||||
"BUTTON_RESTORE_BACKUP": "Restore from backup",
|
||||
"HELP": "How to create wallet?"
|
||||
"HELP": "How to create wallet?",
|
||||
"CHOOSE_PATH": "Please choose a path"
|
||||
},
|
||||
"CREATE_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Set wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet"
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"TITLE_SAVE": "Save the wallet file.",
|
||||
"ERROR_CANNOT_SAVE_TOP": "You cannot record a file on top of another file",
|
||||
"ERROR_CANNOT_SAVE_SYSTEM": "You cannot save a safe file to the system partition"
|
||||
},
|
||||
"OPEN_WALLET": {
|
||||
"NAME": "Wallet name",
|
||||
"PASS": "Wallet password",
|
||||
"BUTTON": "Open wallet"
|
||||
"BUTTON": "Open wallet",
|
||||
"WITH_ADDRESS_ALREADY_OPEN": "A wallet with this account is already open",
|
||||
"SAFE_FILE_NOT_FOUND1": "Safe file not found",
|
||||
"SAFE_FILE_NOT_FOUND2": "<br/><br/> It might have been renamed or moved. <br/> To open it, use the \"Open safe\" button."
|
||||
},
|
||||
"RESTORE_WALLET": {
|
||||
"LABEL_NAME": "Wallet name",
|
||||
|
|
@ -62,7 +71,9 @@
|
|||
"PASS": "Wallet password",
|
||||
"CONFIRM": "Confirm wallet password",
|
||||
"BUTTON_SELECT": "Select wallet location",
|
||||
"BUTTON_CREATE": "Create wallet"
|
||||
"BUTTON_CREATE": "Create wallet",
|
||||
"NOT_CORRECT_FILE_OR_PASSWORD": "Invalid safe file or password does not match",
|
||||
"CHOOSE_PATH": "Please choose a path"
|
||||
},
|
||||
"SEED_PHRASE": {
|
||||
"TITLE": "Make sure to keep your seed phrase in a safe place. If you forget your seed phrase you will not be able to recover your account.",
|
||||
|
|
@ -109,7 +120,8 @@
|
|||
"DETAILS": "Additional details",
|
||||
"MIXIN": "Mixin",
|
||||
"FEE": "Fee",
|
||||
"BUTTON": "Send"
|
||||
"BUTTON": "Send",
|
||||
"SUCCESS_SENT": "The payment will be received within 20 minutes"
|
||||
},
|
||||
"HISTORY": {
|
||||
"STATUS": "Status",
|
||||
|
|
@ -162,13 +174,38 @@
|
|||
"PROGRESS_RECEIVE": "Reply received",
|
||||
"PROGRESS_COMPLETE": "Completed",
|
||||
"FEE": "Fee",
|
||||
"PAYMENT": "Payment ID"
|
||||
|
||||
"PAYMENT": "Payment ID",
|
||||
"ACCEPT_STATE_WAIT_BIG": "You have accepted the contract proposal. Please wait for the pledges to be made",
|
||||
"IGNORED_ACCEPT": "You have ignored the contract proposal",
|
||||
"BURN_PROPOSAL": "The pledges have been nullified.",
|
||||
"SUCCESS_FINISH_PROPOSAL": "The contract is complete. The payment has been sent.",
|
||||
"SEND_CANCEL_PROPOSAL": "Proposal to cancel contract sent to seller",
|
||||
"IGNORED_CANCEL": "You have ignored the proposal to cancel the contract",
|
||||
"DEALS_CANCELED_WAIT": "The contract is being cancelled. Please wait for the pledge to be returned",
|
||||
"WAITING_TIME": "Time until response"
|
||||
},
|
||||
"MESSAGES": {
|
||||
"ADDRESS": "Address",
|
||||
"MESSAGE": "Message",
|
||||
"SEND_PLACEHOLDER": "Type a message...",
|
||||
"SEND_BUTTON": "Send"
|
||||
},
|
||||
"ERRORS": {
|
||||
"NOT_ENOUGH_MONEY": "Insufficient funds in account",
|
||||
"CORE_BUSY": "Internal error (core is busy)",
|
||||
"DAEMON_BUSY": "Internal error: deamon is busy",
|
||||
"NO_MONEY_REMOVE_OFFER": "There is no fee for deleting an offer, but in order to protect the network against flood transactions you need to have at least {{fee}} {{currency}} in your safe",
|
||||
"NOT_ENOUGH_OUTPUTS_TO_MIX": "For the sake of security, mixed transaction will take several days",
|
||||
"TRANSACTION_IS_TO_BIG": "This transaction is large and was therefore denied by the network. Try sending the required amount in parts.",
|
||||
"TRANSFER_ATTEMPT": "There is no connection to the Zano network",
|
||||
"ACCESS_DENIED": "Access denied",
|
||||
"TRANSACTION_ERROR": "Error. Payment not completed.",
|
||||
"BAD_ARG": "Invalid argument",
|
||||
"WALLET_WRONG_ID": "Invalid wallet ID",
|
||||
"WRONG_PASSWORD": "Invalid password",
|
||||
"FILE_RESTORED": "The safe file was corrupted somehow. We have recovered the keys and safe from the blockchain.",
|
||||
"FILE_NOT_FOUND": "File not found",
|
||||
"FILE_EXIST": "A file with that name already exists. Enter another name to save the file under",
|
||||
"FILE_NOT_SAVED": "You cannot save a safe file in this folder. Please choose another folder."
|
||||
}
|
||||
}
|
||||
|
|
|
|||
18
src/gui/qt-daemon/html_source/src/assets/icons/close.svg
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 23.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 384 384" style="enable-background:new 0 0 384 384;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#FFFFFF;}
|
||||
</style>
|
||||
<g id="Layer_1">
|
||||
</g>
|
||||
<g id="Layer_1_copy">
|
||||
</g>
|
||||
<g id="Layer_4">
|
||||
<polygon class="st0" points="300,105.1 278.9,84 192,170.9 105.1,84 84,105.1 170.9,192 84,278.9 105.1,300 192,213.1 278.9,300
|
||||
300,278.9 213.1,192 "/>
|
||||
</g>
|
||||
<g id="Layer_2">
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 644 B |