Merge pull request #431 from bitjson/feature/settings-polish

Design: settings polish
This commit is contained in:
Gustavo Maximiliano Cortez 2016-10-13 10:32:34 -03:00 committed by GitHub
commit b836e3b9ab
41 changed files with 422 additions and 368 deletions

View file

@ -1,18 +1,4 @@
.gravatar { .gravatar {
border-radius: 50%; border-radius: 50%;
} display: inline-block;
.gravatar-content {
position: relative;
height: 70px;
border-color: #172565;
background-color: #1e3186;
background-image: linear-gradient(0deg, #172565, #172565 0%, transparent 0%);
color: #fff;
margin-bottom: 50px;
.gravatar {
position: absolute;
bottom: -30px;
left: 41%;
}
} }

View file

@ -1,13 +1,20 @@
.icon.bp-arrow-right { .icon.bp-arrow-right {
@extend .ion-ios-arrow-right; @extend .ion-ios-arrow-right;
@extend .just-a-hint;
} }
.icon.bp-arrow-down { .icon.bp-arrow-down {
@extend .ion-ios-arrow-down; @extend .ion-ios-arrow-down;
@extend .just-a-hint;
} }
.icon.bp-arrow-up { .icon.bp-arrow-up {
@extend .ion-ios-arrow-up; @extend .ion-ios-arrow-up;
@extend .just-a-hint;
}
.just-a-hint {
opacity: 0.2;
} }
.item.item-big-icon-left { .item.item-big-icon-left {

View file

@ -15,19 +15,6 @@ ion-tabs.ion-tabs-transparent {
background: none transparent; background: none transparent;
} }
// Some overrides for the card class which can't be set by variable
.card, .list {
.icon {
color: $light-gray;
}
& > .item-heading {
font-weight: 700;
.icon {
color: $mid-gray;
}
}
}
// .placeholder-icon padding cannot be modified by a variable // .placeholder-icon padding cannot be modified by a variable
$placeholder-icon-padding: 10px; $placeholder-icon-padding: 10px;
.placeholder-icon { .placeholder-icon {
@ -38,3 +25,8 @@ $placeholder-icon-padding: 10px;
padding-left: $placeholder-icon-padding; padding-left: $placeholder-icon-padding;
} }
} }
// .item-input-wrapper background cannot be modified by a variable
.item-input-wrapper {
background: none transparent;
}

View file

@ -2,7 +2,7 @@
$royal: #1e3186; $royal: #1e3186;
$soft-blue: #647ce8; $soft-blue: #647ce8;
$fill-blue: #D5DFFF; $fill-blue: #D5DFFF;
$subtle-gray: #f7f7f7; $subtle-gray: darken(#fff, 5%);
$roboto: "Roboto", sans-serif; $roboto: "Roboto", sans-serif;
$roboto-light: "Roboto-Light", sans-serif-light; $roboto-light: "Roboto-Light", sans-serif-light;
$success-green: #17ae8c; $success-green: #17ae8c;
@ -10,7 +10,7 @@ $warning-orange: #ffa500;
$dark-gray: #445; $dark-gray: #445;
$mid-gray: #667; $mid-gray: #667;
$light-gray: #9b9bab; $light-gray: #9b9bab;
$subtle-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.25); $subtle-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);
$hovering-box-shadow: 0px 6px 12px 0px rgba(0, 0, 0, 0.3); $hovering-box-shadow: 0px 6px 12px 0px rgba(0, 0, 0, 0.3);
$subtle-radius: 3px; $subtle-radius: 3px;
$visible-radius: 6px; $visible-radius: 6px;
@ -18,21 +18,34 @@ $unmistakable-radius: 12px;
/* Set ionic variables */ /* Set ionic variables */
$positive: $soft-blue; $positive: $soft-blue;
$font-size-base: 16px; $font-size-base: 16px;
$font-size-small: 12px; $font-size-small: 12px;
$font-family-sans-serif: $roboto; $font-family-sans-serif: $roboto;
$font-family-light-sans-serif: $roboto-light; $font-family-light-sans-serif: $roboto-light;
$button-border-radius: $visible-radius; $button-border-radius: $visible-radius;
$button-height: 52px; $button-height: 52px;
$button-padding: 16px; $button-padding: 16px;
$base-background-color: $subtle-gray; $base-background-color: $subtle-gray;
$item-default-active-bg: $subtle-gray; $item-default-active-bg: $subtle-gray;
$item-icon-font-size: 24px; $item-icon-font-size: 24px;
$input-color: $dark-gray;
$input-border: $light-gray;
$input-label-color: $mid-gray;
$input-color-placeholder: lighten($dark-gray, 40%);
$item-default-bg: #ffffff;
$item-default-border: $subtle-gray;
$item-default-text: $dark-gray;
$item-default-active-bg: darken(#ffffff, 7%);
$item-default-active-border: darken($subtle-gray, 7%);
$bar-default-border: $subtle-gray;
$tabs-icon-size: 22px; $tabs-icon-size: 22px;

View file

@ -12,6 +12,9 @@
margin-top: 25px; margin-top: 25px;
} }
} }
.add-type {
color: $dark-gray;
}
.bg{ .bg{
background-color:rgb(100,124,232); background-color:rgb(100,124,232);
height: 50px; height: 50px;

View file

@ -1,22 +1,15 @@
#add-address{ #add-address {
.list{ .zero-state-cta {
background: #ffffff; padding-bottom: 3vh;
}
.list {
background-color: #fff;
} }
} }
#view-address-book { #view-address-book {
.scroll{ .scroll {
height:100%; height:100%;
} }
#add-contact{
min-width: 300px;
img{
width: 10rem;
display: inline-block;
}
a{
text-decoration: none;
}
}
.list { .list {
.item { .item {
color: #444; color: #444;
@ -67,4 +60,26 @@
} }
} }
} }
} }
#address-book-view {
.bar.bar-royal {
border: 0 transparent;
}
.gravatar-content {
position: relative;
height: 70px;
border-color: $royal;
background-color: $royal;
padding-top: 20px;
margin-bottom: 50px;
text-align: center;
}
.address-book-field-label {
text-transform: uppercase;
font-weight: bold;
font-size: 12px;
display: block;
color: $mid-gray;
}
}

View file

@ -1,17 +1,6 @@
.settings {
.item {
color: #444;
border-color: rgba(221, 221, 221, 0.3);
}
}
#advanced-settings { #advanced-settings {
.list { .list {
.item { .item {
color: #444;
border-top: none;
padding-top: 1.5rem;
padding-bottom: 1.5rem;
&:before { &:before {
display: block; display: block;
position: absolute; position: absolute;
@ -23,31 +12,19 @@
content: ''; content: '';
} }
&.item-divider { &.item-divider {
color: rgba(74, 74, 74, .8); color: $dark-gray;
}
&.item-heading {
&:before {
top: 99%
}
}
&:nth-child(2) {
&:before {
width: 0;
}
} }
.item-note { .item-note {
color: rgb(58, 58, 58); color: $dark-gray;
} }
} }
.has-comment {
border-bottom: 0 none;
}
.comment { .comment {
padding: 15px; padding: 15px;
background-color: #fff; background-color: #fff;
color: rgba(74, 74, 74, 0.8); color: $mid-gray;
}
.divider-comment {
padding: 15px;
color: rgba(74, 74, 74, 0.8);
font-size: 15px;
} }
} }
} }

View file

@ -66,7 +66,7 @@
input:checked + .checkbox-icon:after { input:checked + .checkbox-icon:after {
border-color: rgb(19, 229, 182); border-color: rgb(19, 229, 182);
top: 4px; top: 4px;
left: 5px; left: 3px;
} }
.item-content { .item-content {
width: 90%; width: 90%;

View file

@ -22,6 +22,18 @@
border-top:none; border-top:none;
padding-bottom: 1.5rem; padding-bottom: 1.5rem;
padding-top:1.5rem; padding-top:1.5rem;
&.wallet{
.big-icon-svg{
& > .bg{
padding: .25rem
}
}
}
}
.item-sub {
&:first-child:before {
width: 100%
}
&:before { &:before {
display: block; display: block;
position: absolute; position: absolute;
@ -37,29 +49,6 @@
} }
} }
} }
&.item-heading{
&:before{
width:100% !important;
top:99%
}
}
&:nth-child(1){
&:before{
width:0;
}
}
&:nth-child(2):last-child{
&:before{
width:0;
}
}
&.wallet{
.big-icon-svg{
& > .bg{
padding: .25rem
}
}
}
} }
} }
.next-step.item { .next-step.item {

View file

@ -1,17 +1,60 @@
.settings { .settings {
.item { .item {
color: #444; color: $dark-gray;
border-color: rgba(221, 221, 221, 0.3); border-color: rgba(221, 221, 221, 0.3);
} }
&-explaination, &-button-group {
padding: 0 1rem;
margin: 1rem 0;
}
&-heading {
font-size: 17px;
color: $dark-gray;
margin: 1rem 0;
}
&-description {
font-size: 15px;
color: $mid-gray;
margin: 1rem 0;
}
.setting-title, .setting-value {
display: block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.setting-value {
color: $light-gray;
font-size: 14px;
}
.settings-input-group {
background-color: #fff;
.item-stacked-label {
padding: 1rem;
}
.input-label {
text-transform: uppercase;
font-size: 12px;
font-weight: bold;
}
}
.settings-list {
.item {
color: $dark-gray;
padding-top: 1.3rem;
padding-bottom: 1.3rem;
&.item-divider {
color: $mid-gray;
padding-bottom: .5rem;
font-size: .9rem;
}
}
}
} }
#tab-settings { #tab-settings {
.list { .list {
.item { .item {
color: #444;
border-top: none;
padding-top: 1.3rem;
padding-bottom: 1.3rem;
.big-icon-svg { .big-icon-svg {
& > .bg{ & > .bg{
width:20px; width:20px;
@ -23,9 +66,10 @@
left:8px; left:8px;
.bg { .bg {
border-radius: 50%; border-radius: 50%;
width:30px; width: 25px;
height:30px; height: 25px;
padding:.1rem; padding:.1rem;
box-shadow: 0px 1px 5px rgba($mid-gray, .1);
} }
} }
} }
@ -39,11 +83,6 @@
right: 0; right: 0;
content: ''; content: '';
} }
&.item-divider {
color: $mid-gray;
padding-bottom: .5rem;
font-size: .9rem;
}
&.item-heading { &.item-heading {
&:before { &:before {
top: 99% top: 99%
@ -54,12 +93,43 @@
width: 0; width: 0;
} }
} }
.item-note {
color: $light-gray;
}
} }
} }
.item-radio .radio-icon { .item-radio .radio-icon {
font-size: 18px; font-size: 18px;
} }
} }
#settings-fee {
.estimates {
font-size: 15px;
color: $dark-gray;
}
.fee-minutes, .fee-rate {
font-weight: bold;
display: block;
margin-bottom: .5rem;
}
.fee-policies {
border-color: #fff;
border-width: 2px 0;
border-style: solid;
}
}
.settings-color-name {
margin-left: 1rem;
}
.settings-color-block {
display: inline-block;
width: 24px;
height: 24px;
border-radius: 50%;
box-shadow: 0px 0px 10px;
float: left; // we don't want these indicators to affect their container's sizing
}
#settings-tos {
p {
margin-bottom: 1rem;
}
}

View file

@ -35,3 +35,17 @@
} }
} }
} }
#tab-home, #tab-send {
.card, .list {
.icon {
color: $light-gray;
}
& > .item-heading {
font-weight: 700;
.icon {
color: $mid-gray;
}
}
}
}

View file

@ -14,7 +14,6 @@
@import "bitpayCard"; @import "bitpayCard";
@import "address-book"; @import "address-book";
@import "wallet-backup-phrase"; @import "wallet-backup-phrase";
@import "address-book";
@import "zero-state"; @import "zero-state";
@import "onboarding/onboarding"; @import "onboarding/onboarding";
@import "includes/walletActivity"; @import "includes/walletActivity";

View file

@ -1,27 +1,13 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="utf-8"?>
<svg width="128px" height="128px" viewBox="0 0 128 128" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Generator: Adobe Illustrator 20.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!-- Generator: sketchtool 40.1 (33804) - http://www.bohemiancoding.com/sketch --> <svg version="1.1" id="Add_Contact" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
<title>CF22B02A-463B-4798-B448-F6A878730EDC</title> y="0px" viewBox="0 0 128 128" style="enable-background:new 0 0 128 128;" xml:space="preserve">
<desc>Created with sketchtool.</desc> <style type="text/css">
<defs> .st0{fill:none;stroke:#647CE8;stroke-width:2;}
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-1"> </style>
<stop stop-color="#EFF2FF" offset="0%"></stop> <path class="st0" d="M53.3,67.7c-16.7,0-29.2,3.7-38.9,7c-7.2,2.4-12,9.1-12,16.7v23.3h59.2"/>
<stop stop-color="#F7F7F7" offset="100%"></stop> <path class="st0" d="M67.7,72.8L67.7,72.8c-16.4,0-29.6-19-29.6-35.2v-5.9c0-16.2,13.3-29.4,29.6-29.4l0,0
</linearGradient> c16.4,0,29.6,13.1,29.6,29.4v5.9C97.4,53.8,84.1,72.8,67.7,72.8L67.7,72.8z"/>
</defs> <path class="st0" d="M106.3,90.4v35.2"/>
<g id="Settings" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <path class="st0" d="M90.1,106.3h35.5"/>
<g id="1.7.4---Address-book-(Empty)" transform="translate(-122.000000, -125.000000)"> </svg>
<g id="Header/Jumbo-W-Text/Light" transform="translate(0.000000, 70.000000)">
<g id="users-24px-outline-2_a-add" transform="translate(64.000000, 41.000000)">
<g id="Group" transform="translate(58.000000, 14.000000)">
<circle id="Oval-2" fill="url(#linearGradient-1)" cx="64" cy="64" r="64"></circle>
<path d="M59.8058824,65.8235294 C51.3947922,65.8235294 43.9338216,67.7071485 39.0313235,69.3457199 C35.4125294,70.5591485 33,73.9396246 33,77.7275294 L33,89.442577 L62.7843137,89.442577" id="Shape" stroke="#647CE8" stroke-width="2"></path>
<path d="M65.8843137,68.4285714 L65.8843137,68.4285714 C57.6608647,68.4285714 50.9921569,58.8658095 50.9921569,50.7142857 L50.9921569,47.7619048 C50.9921569,39.610381 57.6608647,33 65.8843137,33 L65.8843137,33 C74.1077627,33 80.7764706,39.610381 80.7764706,47.7619048 L80.7764706,50.7142857 C80.7764706,58.8658095 74.1077627,68.4285714 65.8843137,68.4285714 L65.8843137,68.4285714 Z" id="Shape" stroke="#647CE8" stroke-width="2"></path>
<path d="M85.2745098,77.2857143 L85.2745098,95" id="Shape" stroke="#647CE8" stroke-width="2"></path>
<path d="M77.1294118,85.2745098 L95,85.2745098" id="Shape" stroke="#647CE8" stroke-width="2"></path>
</g>
</g>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 797 B

Before After
Before After

View file

@ -5,7 +5,7 @@
<desc>Created with sketchtool.</desc> <desc>Created with sketchtool.</desc>
<defs></defs> <defs></defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Icons" transform="translate(-712.000000, -769.000000)" stroke="#8F8F90"> <g id="Icons" transform="translate(-712.000000, -769.000000)" stroke="#666677">
<g id="ui-24px-outline-2_link-69" transform="translate(713.384615, 770.000000)"> <g id="ui-24px-outline-2_link-69" transform="translate(713.384615, 770.000000)">
<g id="Group"> <g id="Group">
<path d="M8.1,3.6 L10.35,1.35 C12.06,-0.36 14.94,-0.36 16.65,1.35 L16.65,1.35 C18.36,3.06 18.36,5.94 16.65,7.65 L14.4,9.9" id="Shape"></path> <path d="M8.1,3.6 L10.35,1.35 C12.06,-0.36 14.94,-0.36 16.65,1.35 L16.65,1.35 C18.36,3.06 18.36,5.94 16.65,7.65 L14.4,9.9" id="Shape"></path>
@ -15,4 +15,4 @@
</g> </g>
</g> </g>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before After
Before After

View file

@ -11,7 +11,7 @@
<i class="icon big-icon-svg"> <i class="icon big-icon-svg">
<img src="img/icon-wallet.svg" class="bg"/> <img src="img/icon-wallet.svg" class="bg"/>
</i> </i>
<h2 translate>New Personal Wallet</h2> <span class="add-type" translate>New Personal Wallet</h2>
<i class="icon bp-arrow-right"></i> <i class="icon bp-arrow-right"></i>
</a> </a>
@ -19,7 +19,7 @@
<i class="icon big-icon-svg"> <i class="icon big-icon-svg">
<img src="img/icon-wallet.svg" class="bg"/> <img src="img/icon-wallet.svg" class="bg"/>
</i> </i>
<h2 translate>Create Shared Wallet</h2> <span class="add-type" translate>Create Shared Wallet</h2>
<i class="icon bp-arrow-right"></i> <i class="icon bp-arrow-right"></i>
</a> </a>
@ -27,7 +27,7 @@
<i class="icon big-icon-svg"> <i class="icon big-icon-svg">
<img src="img/item-ico-addwallet.svg" class="bg join"/> <img src="img/item-ico-addwallet.svg" class="bg join"/>
</i> </i>
<h2 translate>Join shared wallet</h2> <span class="add-type" translate>Join shared wallet</h2>
<i class="icon bp-arrow-right"></i> <i class="icon bp-arrow-right"></i>
</a> </a>
@ -35,7 +35,7 @@
<i class="icon big-icon-svg"> <i class="icon big-icon-svg">
<img src="img/item-ico-import.svg" class="bg"/> <img src="img/item-ico-import.svg" class="bg"/>
</i> </i>
<h2 translate>Import wallet</h2> <span class="add-type" translate>Import wallet</h2>
<i class="icon bp-arrow-right"></i> <i class="icon bp-arrow-right"></i>
</a> </a>
</ion-list> </ion-list>

View file

@ -3,7 +3,7 @@
<ion-nav-back-button> <ion-nav-back-button>
</ion-nav-back-button> </ion-nav-back-button>
<ion-nav-title> <ion-nav-title>
<span translate>Addressbook</span> <span translate>Address Book</span>
</ion-nav-title> </ion-nav-title>
<ion-nav-buttons side="secondary"> <ion-nav-buttons side="secondary">
<button class="button button-back button-clear" ng-show="!isEmptyList" ui-sref="tabs.addressbook.add"> <button class="button button-back button-clear" ng-show="!isEmptyList" ui-sref="tabs.addressbook.add">
@ -11,9 +11,19 @@
</button> </button>
</ion-nav-buttons> </ion-nav-buttons>
</ion-nav-bar> </ion-nav-bar>
<ion-content scroll="false" id="add-address" class="ng-hide" ng-show="isEmptyList">
<ion-content> <div class="zero-state">
<i class="icon zero-state-icon">
<img src="img/address-book-add.svg"/>
</i>
<div class="zero-state-heading" translate>No contacts yet</div>
<div class="zero-state-description" translate>You havent added any contacts to your address book yet. Get started by adding your first one.</div>
<div class="zero-state-cta">
<button class="button button-standard button-primary" ui-sref="tabs.addressbook.add" translate>Add Contact</button>
</div>
</div>
</ion-content>
<ion-content class="ng-hide" ng-show="!isEmptyList">
<div class="bar bar-header item-input-inset" ng-show="!isEmptyList"> <div class="bar bar-header item-input-inset" ng-show="!isEmptyList">
<label class="item-input-wrapper"> <label class="item-input-wrapper">
<i class="icon ion-ios-search placeholder-icon"></i> <i class="icon ion-ios-search placeholder-icon"></i>
@ -23,7 +33,6 @@
ng-change="findAddressbook(addrSearch)" ng-model-onblur> ng-change="findAddressbook(addrSearch)" ng-model-onblur>
</label> </label>
</div> </div>
<ion-list> <ion-list>
<ion-item ng-repeat="addrEntry in addressbook" <ion-item ng-repeat="addrEntry in addressbook"
class="item-icon-right item-avatar" class="item-icon-right item-avatar"
@ -32,28 +41,10 @@
<h2>{{addrEntry.name}}</h2> <h2>{{addrEntry.name}}</h2>
<p>{{addrEntry.address}}</p> <p>{{addrEntry.address}}</p>
<i class="icon bp-arrow-right"></i> <i class="icon bp-arrow-right"></i>
<ion-option-button class="button-assertive" ng-click="remove(addrEntry.address)"> <ion-option-button class="button-assertive" ng-click="remove(addrEntry.address)">
<i class="icon ion-minus-circled"></i> <i class="icon ion-minus-circled"></i>
</ion-option-button> </ion-option-button>
</ion-item> </ion-item>
</ion-list> </ion-list>
<div class="text-center absolute-center" ng-show="isEmptyList">
<div id="add-contact" class="col col-80 center-block">
<div class="row">
<img class="col col-60 center-block" src="img/address-book-add.svg">
</div>
<div class="row text-center">
<h2 class="col" translate>No contacts yet</h2>
</div>
<div class="row">
<p class="text-center" translate>
You havent added any contacts to your address book yet. Get started by adding your first one.
</p>
</div>
<button class="button button-standard button-primary" ui-sref="tabs.addressbook.add" translate>Add Contact</button>
</div>
</div>
</ion-content> </ion-content>
</ion-view> </ion-view>

View file

@ -1,37 +1,31 @@
<ion-view> <ion-view id="address-book-view">
<ion-nav-bar class="bar-royal"> <ion-nav-bar class="bar-royal">
<ion-nav-back-button> <ion-nav-back-button>
</ion-nav-back-button> </ion-nav-back-button>
<ion-nav-title> <ion-nav-title>
<span translate>Addressbook</span> <span>{{addressbookEntry.name}}</span>
</ion-nav-title> </ion-nav-title>
</ion-nav-bar> </ion-nav-bar>
<ion-content scroll="false">
<ion-content>
<div class="gravatar-content"> <div class="gravatar-content">
<gravatar name="{{addressbookEntry.name}}" width="80" email="{{addressbookEntry.email}}"></gravatar> <gravatar name="{{addressbookEntry.name}}" width="80" email="{{addressbookEntry.email}}"></gravatar>
</div> </div>
<div class="list">
<div class="card">
<div class="item item-text-wrap"> <div class="item item-text-wrap">
<h3 translate>Name</h3> <span class="address-book-field-label" translate>Name</span>
<strong>{{addressbookEntry.name}}</strong> <span>{{addressbookEntry.name}}</span>
</div> </div>
<div class="item item-text-wrap" ng-show="addressbookEntry.email"> <div class="item item-text-wrap" ng-show="addressbookEntry.email">
<h3 translate>Email</h3> <span class="address-book-field-label" translate>Email</span>
<strong>{{addressbookEntry.email}}</strong> <span>{{addressbookEntry.email}}</span>
</div> </div>
<div class="item item-text-wrap"> <div class="item item-text-wrap">
<h3 translate>Address</h3> <span class="address-book-field-label" translate>Address</span>
<strong>{{addressbookEntry.address}}</strong> <span>{{addressbookEntry.address}}</span>
</div> </div>
</div> </div>
<button class="button button-standard button-primary" ng-click="sendTo()" translate>
<button class="button button-standard button-primary"
ng-click="sendTo()" translate>
Send Money Send Money
</button> </button>
</ion-content> </ion-content>
</ion-view> </ion-view>

View file

@ -6,7 +6,7 @@
</ion-nav-bar> </ion-nav-bar>
<ion-content> <ion-content>
<div class="list"> <div class="settings-list list">
<div class="item item-divider" translate>Enabled Integrations</div> <div class="item item-divider" translate>Enabled Integrations</div>
<ion-toggle ng-show="!isWP" ng-model="bitpayCardEnabled.value" toggle-class="toggle-balanced" ng-change="bitpayCardChange()"> <ion-toggle ng-show="!isWP" ng-model="bitpayCardEnabled.value" toggle-class="toggle-balanced" ng-change="bitpayCardChange()">
@ -30,7 +30,7 @@
<div class="item item-divider" translate>Wallet Operation</div> <div class="item item-divider" translate>Wallet Operation</div>
<ion-toggle ng-model="spendUnconfirmed.value" toggle-class="toggle-balanced" ng-change="spendUnconfirmedChange()"> <ion-toggle class="has-comment" ng-model="spendUnconfirmed.value" toggle-class="toggle-balanced" ng-change="spendUnconfirmedChange()">
<span class="toggle-label" translate>Use Unconfirmed Funds</span> <span class="toggle-label" translate>Use Unconfirmed Funds</span>
</ion-toggle> </ion-toggle>
<div class="comment"> <div class="comment">
@ -38,11 +38,13 @@
</div> </div>
<div class="item item-divider" translate>Experimental Features</div> <div class="item item-divider" translate>Experimental Features</div>
<div class="divider-comment"> <div class="settings-explaination">
<span translate>These features aren't quite ready for primetime. They may change, stop working, or disappear at any time.</span> <div class="settings-description" translate>
These features aren't quite ready for primetime. They may change, stop working, or disappear at any time.
</div>
</div> </div>
<ion-toggle ng-show="!isWP" ng-model="recentTransactionsEnabled.value" toggle-class="toggle-balanced" ng-change="recentTransactionsChange()"> <ion-toggle class="has-comment" ng-show="!isWP" ng-model="recentTransactionsEnabled.value" toggle-class="toggle-balanced" ng-change="recentTransactionsChange()">
<span class="toggle-label" translate>Recent Transaction Card</span> <span class="toggle-label" translate>Recent Transaction Card</span>
</ion-toggle> </ion-toggle>
<div class="comment"> <div class="comment">

View file

@ -1,4 +1,4 @@
<ion-view ng-controller="tabsController" ng-init="importInit()"> <ion-view ng-controller="tabsController" ng-init="importInit()" class="settings">
<ion-nav-bar class="bar-royal"> <ion-nav-bar class="bar-royal">
<ion-nav-title>{{'Import Wallet' | translate}}</ion-nav-title> <ion-nav-title>{{'Import Wallet' | translate}}</ion-nav-title>
<ion-nav-back-button> <ion-nav-back-button>

View file

@ -1,11 +1,11 @@
<p translate> <p translate>
The software you are about to use functions as a free, open source, and multi-signature digital wallet. The software does not constitute an account where BitPay or other third parties serve as financial intermediaries or custodians of your bitcoin. This software functions as a free, open source, and multi-signature digital wallet. The software does not constitute an account where BitPay or other third parties serve as financial intermediaries or custodians of your bitcoin.
</p> </p>
<p translate> <p translate>
While the software has undergone beta testing and continues to be improved by feedback from the open-source user and developer community, we cannot guarantee that there will be no bugs in the software. You acknowledge that your use of this software is at your own discretion and in compliance with all applicable laws. You are responsible for safekeeping your passwords, private key pairs, PINs and any other codes you use to access the software. While the software has undergone beta testing and continues to be improved by feedback from the open-source user and developer community, we cannot guarantee that there will be no bugs in the software. You acknowledge that your use of this software is at your own discretion and in compliance with all applicable laws. You are responsible for safekeeping your passwords, private key pairs, PINs, and any other codes you use to access the software.
</p> </p>
<p translate> <p translate>
IF YOU LOSE ACCESS TO YOUR BITCOIN WALLET OR YOUR ENCRYPTED PRIVATE KEYS AND YOU HAVE NOT SEPARATELY STORED A BACKUP OF YOUR WALLET AND CORRESPONDING PASSWORD, YOU ACKNOWLEDGE AND AGREE THAT ANY BITCOIN YOU HAVE ASSOCIATED WITH THAT WALLET WILL BECOME INACCESSIBLE. All transaction requests are irreversible. The authors of the software, employees and affiliates of Bitpay, copyright holders, and BitPay, Inc. cannot retrieve your private keys or passwords if you lose or forget them and cannot guarantee transaction confirmation as they do not have control over the Bitcoin network. IF YOU LOSE ACCESS TO YOUR BITCOIN WALLET OR YOUR ENCRYPTED PRIVATE KEYS AND YOU HAVE NOT SEPARATELY STORED A BACKUP OF YOUR WALLET AND CORRESPONDING PASSWORD, YOU ACKNOWLEDGE AND AGREE THAT ANY BITCOIN YOU HAVE ASSOCIATED WITH THAT WALLET WILL BECOME INACCESSIBLE. All transaction requests are irreversible. The authors of the software, employees and affiliates of BitPay, copyright holders, and BitPay, Inc. cannot retrieve your private keys or passwords if you lose or forget them and cannot guarantee transaction confirmation as they do not have control over the Bitcoin network.
</p> </p>
<p translate> <p translate>
To the fullest extent permitted by law, this software is provided “as is” and no representations or warranties can be made of any kind, express or implied, including but not limited to the warranties of merchantability, fitness or a particular purpose and noninfringement. You assume any and all risks associated with the use of the software. In no event shall the authors of the software, employees and affiliates of Bitpay, copyright holders, or BitPay, Inc. be held liable for any claim, damages or other liability, whether in an action of contract, tort, or otherwise, arising from, out of or in connection with the software. We reserve the right to modify this disclaimer from time to time. To the fullest extent permitted by law, this software is provided “as is” and no representations or warranties can be made of any kind, express or implied, including but not limited to the warranties of merchantability, fitness or a particular purpose and noninfringement. You assume any and all risks associated with the use of the software. In no event shall the authors of the software, employees and affiliates of Bitpay, copyright holders, or BitPay, Inc. be held liable for any claim, damages or other liability, whether in an action of contract, tort, or otherwise, arising from, out of or in connection with the software. We reserve the right to modify this disclaimer from time to time.

View file

@ -1,4 +1,4 @@
<ion-view> <ion-view class="settings">
<ion-nav-bar class="bar-royal"> <ion-nav-bar class="bar-royal">
<ion-nav-back-button> <ion-nav-back-button>
</ion-nav-back-button> </ion-nav-back-button>
@ -10,7 +10,7 @@
<form name="joinForm" ng-submit="join.join(joinForm)" novalidate> <form name="joinForm" ng-submit="join.join(joinForm)" novalidate>
<div class="card list"> <div class="list settings-list settings-input-group">
<label class="item item-input item-stacked-label no-border"> <label class="item item-input item-stacked-label no-border">
<span class="input-label" translate>Your nickname</span> <span class="input-label" translate>Your nickname</span>

View file

@ -6,21 +6,13 @@
</ion-nav-bar> </ion-nav-bar>
<ion-content> <ion-content>
<div class="row" ng-show="needsBackup"> <div class="settings" class="row" ng-show="needsBackup">
<div class="columns"> <div class="settings-explaination">
<h4></h4> <div class="settings-heading" translate>Backup Needed</div>
<div class="size-14 text-warning m20b"> <div class="settings-description" translate>
<i class="fi-alert size-12"></i> Before receiving funds, you must backup your wallet. If this device is lost, it is impossible to access your funds without a backup.
<span class="text-warning" translate>Backup Needed</span>.
<span translate>
Before receiving funds, you must backup your wallet. If this device is lost, it is impossible to access your funds without a backup.
</span>
</div>
<div class="text-center m20t">
<a class="button outline round dark-gray" href ui-sref="tabs.preferences.preferencesAdvanced">
<span translate>Preferences</span>
</a>
</div> </div>
<a class="button button-standard button-primary" href ui-sref="tabs.preferences.preferencesAdvanced" translate>Preferences</a>
</div> </div>
</div> </div>

View file

@ -1,13 +1,13 @@
<ion-view class="settings"> <ion-view class="settings">
<ion-nav-bar class="bar-royal"> <ion-nav-bar class="bar-royal">
<ion-nav-title> <ion-nav-title>
{{'Wallet Preferences'|translate}} {{'Wallet Settings'|translate}}
</ion-nav-title> </ion-nav-title>
<ion-nav-back-button> <ion-nav-back-button>
</ion-nav-back-button> </ion-nav-back-button>
</ion-nav-bar> </ion-nav-bar>
<ion-content> <ion-content>
<div class="list"> <div class="list settings-list">
<div class="item item-divider"></div> <div class="item item-divider"></div>
<a class="item item-icon-right" ui-sref="tabs.preferences.preferencesAlias"> <a class="item item-icon-right" ui-sref="tabs.preferences.preferencesAlias">
<span translate>Name</span> <span translate>Name</span>
@ -21,17 +21,17 @@
<span class="item-note"> <span class="item-note">
{{externalSource}} {{externalSource}}
</span> </span>
</div> </a>
<a class="item item-icon-right" ui-sref="tabs.preferences.preferencesColor"> <a class="item item-icon-right" ui-sref="tabs.preferences.preferencesColor">
<span translate>Color</span> <span translate>Color</span>
<span class="item-note" ng-style="{'color': wallet.color}"> <span class="item-note">
&block; <span class="settings-color-block" ng-style="{'background-color': wallet.color, 'color': wallet.color}"></span>
</span> </span>
<i class="icon bp-arrow-right"></i> <i class="icon bp-arrow-right"></i>
</a> </a>
<a class="item item-icon-right" ui-sref="tabs.preferences.preferencesEmail"> <a class="item item-icon-right" ui-sref="tabs.preferences.preferencesEmail">
<span translate>Email Notifications</span> <span class="setting-title" translate>Email Notifications</span>
<span class="item-note"> <span class="setting-value">
<span ng-if="!wallet.email" translate>Disabled</span> <span ng-if="!wallet.email" translate>Disabled</span>
<span ng-if="wallet.email">{{wallet.email}}</span> <span ng-if="wallet.email">{{wallet.email}}</span>
</span> </span>
@ -56,7 +56,7 @@
</div> </div>
<div class="item item-divider"></div> <div class="item item-divider"></div>
<a class="item item-icon-right" ui-sref="tabs.preferences.preferencesAdvanced"> <a class="item item-icon-right" ui-sref="tabs.preferences.preferencesAdvanced">
<span translate>Advanced</span> <span translate>More Options</span>
<i class="icon bp-arrow-right"></i> <i class="icon bp-arrow-right"></i>
</a> </a>
</div> </div>

View file

@ -1,11 +1,11 @@
<ion-view> <ion-view class="settings">
<ion-nav-bar class="bar-royal"> <ion-nav-bar class="bar-royal">
<ion-nav-title>{{title}}</ion-nav-title> <ion-nav-title>{{title}}</ion-nav-title>
<ion-nav-back-button> <ion-nav-back-button>
</ion-nav-back-button> </ion-nav-back-button>
</ion-nav-bar> </ion-nav-bar>
<ion-content> <ion-content>
<div class="list"> <div class="list settings-list">
<div class="item item-divider" translate> <div class="item item-divider" translate>
Release information Release information
</div> </div>

View file

@ -1,6 +1,6 @@
<ion-view class="settings"> <ion-view class="settings">
<ion-nav-bar class="bar-royal"> <ion-nav-bar class="bar-royal">
<ion-nav-title>{{'Advanced Preferences' | translate}}</ion-nav-title> <ion-nav-title>{{'More Options' | translate}}</ion-nav-title>
<ion-nav-back-button> <ion-nav-back-button>
</ion-nav-back-button> </ion-nav-back-button>
</ion-nav-bar> </ion-nav-bar>

View file

@ -1,17 +1,21 @@
<ion-view> <ion-view class="settings">
<ion-nav-bar class="bar-royal"> <ion-nav-bar class="bar-royal">
<ion-nav-title> <ion-nav-title>
{{'Alias'|translate}} {{'Wallet Name'|translate}}
</ion-nav-title> </ion-nav-title>
<ion-nav-back-button> <ion-nav-back-button>
</ion-nav-back-button> </ion-nav-back-button>
</ion-nav-bar> </ion-nav-bar>
<ion-content> <ion-content>
<div class="settings-explaination">
<div class="settings-heading" translate>What do you call this wallet?</div>
<div class="settings-description" translate>When this wallet was created, it was called &ldquo;{{walletName}}&rdquo;. You can change the name displayed on this device below.</div>
</div>
<form name="aliasForm" ng-submit="save(aliasForm)" novalidate> <form name="aliasForm" ng-submit="save(aliasForm)" novalidate>
<div class="card list"> <div class="list settings-input-group">
<label class="item item-input item-stacked-label"> <label class="item item-input item-stacked-label">
<span class="input-label" transalate>Alias for {{walletName}}</span> <span class="input-label" translate>Name</span>
<input type="text" id="alias" name="alias" ng-model="alias.value" placeholder="John" required> <input type="text" id="alias" name="alias" ng-model="alias.value" placeholder="Personal Wallet" required>
</label> </label>
</div> </div>
<button type="submit" <button type="submit"
@ -20,6 +24,5 @@
Save Save
</button> </button>
</form> </form>
<div class="text-center" translate>Changing wallet alias only affects the local wallet name.</div>
</ion-content> </ion-content>
</ion-view> </ion-view>

View file

@ -1,15 +1,15 @@
<ion-view> <ion-view id="settings-color" class="settings">
<ion-nav-bar class="bar-royal"> <ion-nav-bar class="bar-royal">
<ion-nav-title> <ion-nav-title>
{{'Color'|translate}} {{'Wallet Color'|translate}}
</ion-nav-title> </ion-nav-title>
<ion-nav-back-button> <ion-nav-back-button>
</ion-nav-back-button> </ion-nav-back-button>
</ion-nav-bar> </ion-nav-bar>
<ion-content> <ion-content>
<ion-radio ng-repeat="c in colorList" ng-value="c" ng-model="currentColor" ng-click="save(c.color)"> <ion-radio ng-repeat="c in colorList" ng-value="c" ng-model="currentColor" ng-click="save(c.color)">
<span ng-style="{'color': c.color}">&block;</span> <span ng-style="{'background-color': c.color, 'color' : c.color}" class="settings-color-block"></span>
<span> {{c.name}}</span> <span class="settings-color-name"> {{c.name}}</span>
</ion-radio> </ion-radio>
</ion-content> </ion-content>
</ion-view> </ion-view>

View file

@ -1,4 +1,4 @@
<ion-view> <ion-view class="settings">
<ion-nav-bar class="bar-royal"> <ion-nav-bar class="bar-royal">
<ion-nav-title> <ion-nav-title>
{{'Email Notifications'|translate}} {{'Email Notifications'|translate}}
@ -7,10 +7,15 @@
</ion-nav-back-button> </ion-nav-back-button>
</ion-nav-bar> </ion-nav-bar>
<ion-content> <ion-content>
<div class="settings-explaination">
<div class="settings-description" translate>
You'll receive email notifications about payments sent and received from this wallet.
</div>
</div>
<form name="emailForm" ng-submit="save(emailForm)" novalidate> <form name="emailForm" ng-submit="save(emailForm)" novalidate>
<div class="card list"> <div class="list settings-input-group">
<label class="item item-input item-stacked-label"> <label class="item item-input item-stacked-label">
<span class="input-label" transalate>Email for wallet notifications</span> <span class="input-label" translate>Email Address</span>
<input type="email" id="email" name="email" ng-model="email.value" required></input> <input type="email" id="email" name="email" ng-model="email.value" required></input>
</label> </label>
</div> </div>

View file

@ -1,4 +1,4 @@
<ion-view class="settings"> <ion-view id="settings-fee" class="settings">
<ion-nav-bar class="bar-royal"> <ion-nav-bar class="bar-royal">
<ion-nav-title> <ion-nav-title>
{{'Bitcoin Network Fee Policy'|translate}} {{'Bitcoin Network Fee Policy'|translate}}
@ -6,19 +6,21 @@
<ion-nav-back-button> <ion-nav-back-button>
</ion-nav-back-button> </ion-nav-back-button>
</ion-nav-bar> </ion-nav-bar>
<ion-content> <ion-content>
<ion-radio ng-repeat="fee in feeLevels.livenet" ng-value="fee.level" ng-model="currentFeeLevel" ng-click="save(fee)"> <div class="settings-explaination">
{{feeOpts[fee.level]|translate}} <div class="settings-heading" translate>Bitcoin transactions include a fee collected by miners on the network.</div>
</ion-radio> <div class="settings-description" translate>The higher the fee, the greater the incentive a miner has to include that transaction in a block. Current fees are determined based on network load and the selected policy.</div>
<div class="padding text-center positive" ng-repeat="fee in feeLevels.livenet" ng-if="fee.level == currentFeeLevel"> <div class="estimates" ng-repeat="fee in feeLevels.livenet" ng-if="fee.level == currentFeeLevel">
<div ng-show="fee.nbBlocks"> <div ng-show="fee.nbBlocks">
<span translate>Average confirmation time: {{fee.nbBlocks * 10}} minutes</span>. <span translate>Average confirmation time: <span class="fee-minutes">{{fee.nbBlocks * 10}} minutes</span></span>
</div>
<span translate>Current fee rate for this policy: <span class="fee-rate">{{fee.feePerKBUnit}}/kiB</span></span>
</div> </div>
<span translate>Current fee rate for this policy: {{fee.feePerKBUnit}}/kiB</span>
</div> </div>
<div class="padding" translate> <div class="fee-policies">
Bitcoin transactions may include a fee collected by miners on the network. The higher the fee, the greater the incentive a miner has to include that transaction in a block. Current fees are determined based on network load and the selected policy. <ion-radio ng-repeat="fee in feeLevels.livenet" ng-value="fee.level" ng-model="currentFeeLevel" ng-click="save(fee)">
{{feeOpts[fee.level]|translate}}
</ion-radio>
</div> </div>
</ion-content> </ion-content>
</ion-view> </ion-view>

View file

@ -88,15 +88,21 @@
<div ng-show="addrs"> <div ng-show="addrs">
<div class="item item-divider" translate> <div class="item item-divider" translate>
Last Wallet Addresses Latest Wallet Addresses
</div>
<div class="settings-explaination">
<div class="settings-description" translate>
Only &ldquo;main&rdquo; addresses are shown below. This excludes &ldquo;change&rdquo; address.
</div>
</div> </div>
<div class="item" ng-repeat="a in addrs" class="oh" copy-to-clipboard="a.address"> <div class="item" ng-repeat="a in addrs" class="oh" copy-to-clipboard="a.address">
<span>{{a.address}}</span> <span>{{a.address}}</span>
<span class="item-note">{{a.path}} &middot; {{a.createdOn *1000 | amDateFormat:'MMMM Do YYYY, h:mm a' }}</span> <span class="item-note">{{a.path}} &middot; {{a.createdOn *1000 | amDateFormat:'MMMM Do YYYY, h:mm a' }}</span>
</div> </div>
<div class="padding text-center" translate> <div class="settings-explaination">
Only Main (not change) addresses are shown. The addresses on this list were not verified locally at this time. <div class="settings-description" translate>
Please note: due to resource constraints, this list of addresses is not verified locally. A compromised BWS node could return addresses which are not controlled by this wallet.
</div>
</div> </div>
<button class="button button-standard button-primary" ng-click="scan()" translate> <button class="button button-standard button-primary" ng-click="scan()" translate>
Scan addresses for funds Scan addresses for funds

View file

@ -1,19 +1,21 @@
<ion-view> <ion-view class="settings">
<ion-nav-bar class="bar-royal"> <ion-nav-bar class="bar-royal">
<ion-nav-title>{{'Session Log' | translate}}</ion-nav-title> <ion-nav-title>{{'Session Log' | translate}}</ion-nav-title>
<ion-nav-back-button> <ion-nav-back-button>
</ion-nav-back-button> </ion-nav-back-button>
</ion-nav-bar> </ion-nav-bar>
<ion-content> <ion-content>
<button class="button button-standard button-primary" style="margin-top: 1rem" copy-to-clipboard="prepare()"> <div class="settings-button-group">
<i class="icon ion-clipboard"></i> <button class="button button-standard button-primary" style="margin-top: 1rem" copy-to-clipboard="prepare()">
<span translate>Copy to clipboard</span> <i class="icon ion-clipboard"></i>
</button> <span translate>Copy to clipboard</span>
<button class="button button-standard button-secondary" ng-show="isCordova" ng-click="sendLogs()"> </button>
<i class="icon ion-ios-email-outline"></i> <button class="button button-standard button-secondary" ng-show="isCordova" ng-click="sendLogs()">
<span translate>Send by email</span> <i class="icon ion-ios-email-outline"></i>
</button> <span translate>Send by email</span>
<div class="card"> </button>
</div>
<div class="list">
<div class="item item-text-wrap"> <div class="item item-text-wrap">
<ul> <ul>
<li ng-repeat="l in logs"> <li ng-repeat="l in logs">

View file

@ -1,4 +1,4 @@
<ion-view> <ion-view class="settings">
<ion-nav-bar class="bar-royal"> <ion-nav-bar class="bar-royal">
<ion-nav-title>{{'Create Personal Wallet' | translate}}</ion-nav-title> <ion-nav-title>{{'Create Personal Wallet' | translate}}</ion-nav-title>
<ion-nav-back-button> <ion-nav-back-button>
@ -7,7 +7,7 @@
<ion-content ng-controller="createController" ng-init="init(1);"> <ion-content ng-controller="createController" ng-init="init(1);">
<form name="setupForm" ng-submit="create(setupForm)" novalidate> <form name="setupForm" ng-submit="create(setupForm)" novalidate>
<div class="card list"> <div class="list settings-list settings-input-group">
<label class="item item-input item-stacked-label"> <label class="item item-input item-stacked-label">
<span class="input-label" translate>Wallet name</span> <span class="input-label" translate>Wallet name</span>
<input type="text" <input type="text"

View file

@ -1,4 +1,4 @@
<ion-view> <ion-view class="settings">
<ion-nav-bar class="bar-royal"> <ion-nav-bar class="bar-royal">
<ion-nav-title>{{'Create Shared Wallet' | translate}}</ion-nav-title> <ion-nav-title>{{'Create Shared Wallet' | translate}}</ion-nav-title>
<ion-nav-back-button> <ion-nav-back-button>
@ -7,7 +7,7 @@
<ion-content ng-controller="createController" ng-init="init(3);"> <ion-content ng-controller="createController" ng-init="init(3);">
<form name="setupForm" ng-submit="create(setupForm)" novalidate> <form name="setupForm" ng-submit="create(setupForm)" novalidate>
<div class="card list"> <div class="list settings-list settings-input-group">
<label class="item item-input item-stacked-label"> <label class="item item-input item-stacked-label">
<span class="input-label" translate>Wallet name</span> <span class="input-label" translate>Wallet name</span>
<input type="text" <input type="text"
@ -19,9 +19,9 @@
</label> </label>
<label class="item item-input item-stacked-label"> <label class="item item-input item-stacked-label">
<span class="input-label" translate>Your nickname</span> <span class="input-label" translate>Your name</span>
<input type="text" <input type="text"
placeholder="{{'John'|translate}}" placeholder="{{'Satoshi'|translate}}"
ng-model="formData.myName" ng-model="formData.myName"
ng-required="formData.totalCopayers != 1" ng-required="formData.totalCopayers != 1"
ng-disabled="formData.totalCopayers == 1" ng-disabled="formData.totalCopayers == 1"

View file

@ -7,12 +7,12 @@
<form name="exportForm" novalidate> <form name="exportForm" novalidate>
<div class="card"> <div class="card">
<label class="item item-input item-stacked-label"> <label class="item item-input item-stacked-label">
<span class="input-label" transalate>Set up a password</span> <span class="input-label" translate>Set up a password</span>
<input type="password" placeholder="{{'Your password'|translate}}" ng-model="formData.password"> <input type="password" placeholder="{{'Your password'|translate}}" ng-model="formData.password">
</label> </label>
<label class="item item-input item-stacked-label"> <label class="item item-input item-stacked-label">
<span class="input-label" transalate>Repeat the password</span> <span class="input-label" translate>Repeat the password</span>
<input type="password" placeholder="{{'Repeat password'|translate}}" ng-model="formData.repeatpassword"> <input type="password" placeholder="{{'Repeat password'|translate}}" ng-model="formData.repeatpassword">
</label> </label>
</div> </div>

View file

@ -34,7 +34,7 @@
<span class="badge badge-assertive m5t m10r" ng-show="txpsN>3"> {{txpsN}}</span> <span class="badge badge-assertive m5t m10r" ng-show="txpsN>3"> {{txpsN}}</span>
</a> </a>
<a ng-repeat="tx in txps" class="item" ng-click="openTxpModal(tx)"> <a ng-repeat="tx in txps" class="item item-sub" ng-click="openTxpModal(tx)">
<span ng-include="'views/includes/txp.html'"></span> <span ng-include="'views/includes/txp.html'"></span>
</a> </a>
</div> </div>
@ -48,7 +48,7 @@
<ion-spinner icon="lines"></ion-spinner> <ion-spinner icon="lines"></ion-spinner>
<div translate>Updating activity...</div> <div translate>Updating activity...</div>
</span> </span>
<a class="item activity" ng-repeat="notification in notifications" ng-click="openNotificationModal(notification)"> <a class="item item-sub activity" ng-repeat="notification in notifications" ng-click="openNotificationModal(notification)">
<span ng-include="'views/includes/walletActivity.html'"></span> <span ng-include="'views/includes/walletActivity.html'"></span>
</a> </a>
</div> </div>
@ -58,57 +58,59 @@
<span translate>Wallets</span> <span translate>Wallets</span>
<a ui-sref="tabs.add" ng-if="wallets[0]"><i class="icon ion-ios-plus-empty list-add-button"></i></a> <a ui-sref="tabs.add" ng-if="wallets[0]"><i class="icon ion-ios-plus-empty list-add-button"></i></a>
</div> </div>
<a ng-hide="wallets[0]" ui-sref="tabs.add" class="item item-icon-left item-big-icon-left item-icon-right next-step ng-hide"> <div>
<i class="icon big-icon-svg"> <a ng-if="!wallets[0]" ui-sref="tabs.add" class="item item-icon-left item-big-icon-left item-icon-right next-step ng-hide">
<div class="bg icon-create-wallet"></div> <i class="icon big-icon-svg">
</i> <div class="bg icon-create-wallet"></div>
<span translate>Create a bitcoin wallet</span> </i>
<i class="icon bp-arrow-right"></i> <span translate>Create a bitcoin wallet</span>
</a> <i class="icon bp-arrow-right"></i>
<a ng-repeat="wallet in wallets track by $index" </a>
class="item item-icon-left item-big-icon-left item-icon-right wallet" <a ng-repeat="wallet in wallets track by $index"
ng-click="openWallet(wallet)"> class="item item-sub item-icon-left item-big-icon-left item-icon-right wallet"
<i class="icon big-icon-svg"> ng-click="openWallet(wallet)">
<img src="img/icon-wallet.svg" ng-style="{'background-color': wallet.color}" class="bg"/> <i class="icon big-icon-svg">
</i> <img src="img/icon-wallet.svg" ng-style="{'background-color': wallet.color}" class="bg"/>
<span> </i>
{{wallet.name || wallet.id}} <span>
<span class="size-12 text-light" ng-if="wallet.n > 1"> {{wallet.name || wallet.id}}
{{wallet.m}}-of-{{wallet.n}} <span class="size-12 text-light" ng-if="wallet.n > 1">
{{wallet.m}}-of-{{wallet.n}}
</span>
</span> </span>
</span>
<p> <p>
<span ng-if="!wallet.isComplete()" class="assertive" translate> <span ng-if="!wallet.isComplete()" class="assertive" translate>
Incomplete Incomplete
</span> </span>
<span ng-if="wallet.isComplete()"> <span ng-if="wallet.isComplete()">
<span ng-if="!wallet.balanceHidden">{{wallet.status.availableBalanceStr}}</span> <span ng-if="!wallet.balanceHidden">{{wallet.status.availableBalanceStr}}</span>
<span ng-if="wallet.balanceHidden" translate>[Balance Hidden]</span> <span ng-if="wallet.balanceHidden" translate>[Balance Hidden]</span>
</span> </span>
&nbsp; &nbsp;
</p> </p>
<i class="icon bp-arrow-right"></i> <i class="icon bp-arrow-right"></i>
</a> </a>
<a ui-sref="tabs.bitpayCard" <a ui-sref="tabs.bitpayCard"
ng-if="wallets[0] && externalServices.BitpayCard && bitpayCardEnabled" ng-if="wallets[0] && externalServices.BitpayCard && bitpayCardEnabled"
class="item item-icon-left item-big-icon-left item-icon-right"> class="item item-sub item-icon-left item-big-icon-left item-icon-right">
<i class="icon big-icon-svg"> <i class="icon big-icon-svg">
<div class="bg icon-bitpay-card"></div> <div class="bg icon-bitpay-card"></div>
</i> </i>
<h2>BitPay Card</h2> <h2>BitPay Card</h2>
<p ng-if="!bitpayCard" translate>Add funds to get started</p> <p ng-if="!bitpayCard" translate>Add funds to get started</p>
<span ng-if="bitpayCard">${{bitpayCard.balance}}</span> <span ng-if="bitpayCard">${{bitpayCard.balance}}</span>
<i class="icon bp-arrow-right"></i> <i class="icon bp-arrow-right"></i>
</a> </a>
</div>
</div> </div>
<div class="list card" ng-if="wallets[0] && externalServices.BuyAndSell && (glideraEnabled || coinbaseEnabled)"> <div class="list card" ng-if="wallets[0] && externalServices.BuyAndSell && (glideraEnabled || coinbaseEnabled)">
<div class="item item-icon-right item-heading" translate> <div class="item item-sub item-icon-right item-heading" translate>
Buy &amp; Sell Bitcoin Buy &amp; Sell Bitcoin
<a ui-sref="tabs.buyandsell"><i class="icon ion-ios-plus-empty list-add-button"></i></a> <a ui-sref="tabs.buyandsell"><i class="icon ion-ios-plus-empty list-add-button"></i></a>
</div> </div>
<a ng-if="glideraEnabled" ui-sref="tabs.buyandsell.glidera" class="item item-icon-right"> <a ng-if="glideraEnabled" ui-sref="tabs.buyandsell.glidera" class="item item-sub item-icon-right">
<img src="img/glidera-logo.png" width="90"/> <img src="img/glidera-logo.png" width="90"/>
<i class="icon bp-arrow-right"></i> <i class="icon bp-arrow-right"></i>
</a> </a>
@ -119,7 +121,7 @@
</div> </div>
<div class="list card" ng-if="wallets[0] && externalServices.AmazonGiftCards && amazonEnabled"> <div class="list card" ng-if="wallets[0] && externalServices.AmazonGiftCards && amazonEnabled">
<a class="item item-icon-left item-icon-right item-big-icon-left" ui-sref="tabs.giftcards.amazon"> <a class="item item-sub item-icon-left item-icon-right item-big-icon-left" ui-sref="tabs.giftcards.amazon">
<i class="icon big-icon-svg"> <i class="icon big-icon-svg">
<div class="bg icon-amazon"></div> <div class="bg icon-amazon"></div>
</i> </i>
@ -136,21 +138,21 @@
<i class="icon bp-arrow-down" ng-show="hideNextSteps"></i> <i class="icon bp-arrow-down" ng-show="hideNextSteps"></i>
</div> </div>
<div ng-show="!hideNextSteps"> <div ng-show="!hideNextSteps">
<a ui-sref="tabs.bitpayCard" ng-show="!externalServices.BitpayCard && bitpayCardEnabled" class="item item-icon-left item-big-icon-left item-icon-right next-step"> <a ui-sref="tabs.bitpayCard" ng-if="!externalServices.BitpayCard && bitpayCardEnabled" class="item item-sub item-icon-left item-big-icon-left item-icon-right next-step">
<i class="icon big-icon-svg"> <i class="icon big-icon-svg">
<div class="bg icon-bitpay-card"></div> <div class="bg icon-bitpay-card"></div>
</i> </i>
<span translate>Add BitPay Visa&reg; Card</span> <span translate>Add BitPay Visa&reg; Card</span>
<i class="icon bp-arrow-right"></i> <i class="icon bp-arrow-right"></i>
</a> </a>
<a ng-show="!externalServices.BuyAndSell && (coinbaseEnabled || glideraEnabled)" ui-sref="tabs.buyandsell.glidera" class="item item-icon-left item-big-icon-left item-icon-right next-step"> <a ng-if="!externalServices.BuyAndSell && (coinbaseEnabled || glideraEnabled)" ui-sref="tabs.buyandsell.glidera" class="item item-sub item-icon-left item-big-icon-left item-icon-right next-step">
<i class="icon big-icon-svg"> <i class="icon big-icon-svg">
<div class="bg icon-buy-bitcoin"></div> <div class="bg icon-buy-bitcoin"></div>
</i> </i>
<span translate>Buy or Sell Bitcoin</span> <span translate>Buy or Sell Bitcoin</span>
<i class="icon bp-arrow-right"></i> <i class="icon bp-arrow-right"></i>
</a> </a>
<a ui-sref="tabs.giftcards.amazon" ng-show="!externalServices.AmazonGiftCards && amazonEnabled" class="item item-icon-left item-big-icon-left item-icon-right next-step"> <a ui-sref="tabs.giftcards.amazon" ng-if="!externalServices.AmazonGiftCards && amazonEnabled" class="item item-sub item-icon-left item-big-icon-left item-icon-right next-step">
<i class="icon big-icon-svg"> <i class="icon big-icon-svg">
<div class="bg icon-amazon"></div> <div class="bg icon-amazon"></div>
</i> </i>

View file

@ -1,5 +1,5 @@
<form name="importForm" ng-submit="importBlob(importForm)" novalidate> <form name="importForm" ng-submit="importBlob(importForm)" novalidate>
<div class="list card"> <div class="list settings-list settings-input-group">
<label class="item item-input item-stacked-label no-border" ng-show="!isSafari && !isCordova"> <label class="item item-input item-stacked-label no-border" ng-show="!isSafari && !isCordova">
<div class="input-label" translate>Choose a backup file from your computer</div> <div class="input-label" translate>Choose a backup file from your computer</div>
<div> <div>

View file

@ -6,7 +6,7 @@
</div> </div>
<div ng-show="seedOptions[0]"> <div ng-show="seedOptions[0]">
<div class="card list"> <div class="list settings-list settings-input-group">
<label class="item item-input item-select"> <label class="item item-input item-select">
<div class="input-label" translate> <div class="input-label" translate>
Wallet Type Wallet Type

View file

@ -11,7 +11,7 @@
</div> </div>
<form name="importForm12" ng-submit="importMnemonic(importForm12)" novalidate> <form name="importForm12" ng-submit="importMnemonic(importForm12)" novalidate>
<div class="list card"> <div class="list settings-list settings-input-group">
<div class="row"> <div class="row">
<div class="col col-90"> <div class="col col-90">
<label class="item item-input item-stacked-label no-border"> <label class="item item-input item-stacked-label no-border">

View file

@ -11,9 +11,9 @@
<div class="zero-state-description" ng-show="hasWallets" translate>To get started, buy bitcoin or share your address. You can receive bitcoin from any wallet or service.</div> <div class="zero-state-description" ng-show="hasWallets" translate>To get started, buy bitcoin or share your address. You can receive bitcoin from any wallet or service.</div>
<div class="zero-state-description" ng-show="!hasWallets" translate>To get started, you'll need to create a bitcoin wallet and get some bitcoin.</div> <div class="zero-state-description" ng-show="!hasWallets" translate>To get started, you'll need to create a bitcoin wallet and get some bitcoin.</div>
<div class="zero-state-cta"> <div class="zero-state-cta">
<button class="button button-standard button-primary" ng-click="buyBitcoin()" ng-show="hasWallets">Buy Bitcoin</button> <button class="button button-standard button-primary" ng-click="buyBitcoin()" ng-show="hasWallets" translate>Buy Bitcoin</button>
<button class="button button-standard button-primary" ng-click="createWallet()" ng-show="!hasWallets">Create bitcoin wallet</button> <button class="button button-standard button-primary" ng-click="createWallet()" ng-show="!hasWallets" translate>Create bitcoin wallet</button>
<button class="button button-standard button-secondary" ui-sref="tabs.receive" ng-show="hasWallets">Show bitcoin address</button> <button class="button button-standard button-secondary" ui-sref="tabs.receive" ng-show="hasWallets" translate>Show bitcoin address</button>
</div> </div>
</div> </div>
</ion-content> </ion-content>

View file

@ -1,12 +1,12 @@
<ion-view id="tab-settings" class="settings"> <ion-view id="tab-settings" class="settings">
<ion-nav-bar class="bar-royal"> <ion-nav-bar class="bar-royal">
<ion-nav-title>{{'Global Settings' | translate}}</ion-nav-title> <ion-nav-title>{{'Settings' | translate}}</ion-nav-title>
</ion-nav-bar> </ion-nav-bar>
<ion-content> <ion-content>
<div class="list"> <div class="settings-list list">
<div class="item item-divider"></div> <div class="item item-divider"></div>
<a class="item item-icon-left item-icon-right" ng-hide="true"> <a class="ng-hide item item-icon-left item-icon-right" ng-hide="true">
<i class="icon big-icon-svg"> <i class="icon big-icon-svg">
<img src="img/icon-exchange.svg" class="bg"/> <img src="img/icon-exchange.svg" class="bg"/>
</i> </i>
@ -20,7 +20,16 @@
<span translate>Address Book</span> <span translate>Address Book</span>
<i class="icon bp-arrow-right"></i> <i class="icon bp-arrow-right"></i>
</a> </a>
<a class="item item-icon-left item-icon-right" ng-hide="true"> <a class="item item-icon-left item-icon-right" ng-click=openExternalLink("https://help.bitpay.com")>
<i class="icon big-icon-svg">
<img src="img/icon-help-support.svg" class="bg"/>
</i>
<span translate>Help &amp; Support</span>
<i class="icon big-icon-svg">
<img src="img/icon-link.svg" class="bg just-a-hint"/>
</i>
</a>
<a class="ng-hide item item-icon-left item-icon-right" ng-hide="true">
<i class="icon big-icon-svg"> <i class="icon big-icon-svg">
<img src="img/icon-send-feedback.svg" class="bg"/> <img src="img/icon-send-feedback.svg" class="bg"/>
</i> </i>
@ -53,8 +62,8 @@
<i class="icon big-icon-svg"> <i class="icon big-icon-svg">
<img src="img/icon-unit.svg" class="bg"/> <img src="img/icon-unit.svg" class="bg"/>
</i> </i>
<span translate>Unit</span> <span class="setting-title" translate>Bitcoin Unit</span>
<span class="item-note"> <span class="setting-value">
{{unitName}} {{unitName}}
</span> </span>
<i class="icon bp-arrow-right"></i> <i class="icon bp-arrow-right"></i>
@ -64,8 +73,8 @@
<i class="icon big-icon-svg"> <i class="icon big-icon-svg">
<img src="img/icon-alternative-currency.svg" class="bg"/> <img src="img/icon-alternative-currency.svg" class="bg"/>
</i> </i>
<span translate>Alternative Currency</span> <span class="setting-title" translate>Alternative Currency</span>
<span class="item-note"> <span class="setting-value">
{{selectedAlternative.name}} {{selectedAlternative.name}}
</span> </span>
<i class="icon bp-arrow-right"></i> <i class="icon bp-arrow-right"></i>
@ -75,21 +84,15 @@
<i class="icon big-icon-svg"> <i class="icon big-icon-svg">
<img src="img/icon-network.svg" class="bg"/> <img src="img/icon-network.svg" class="bg"/>
</i> </i>
<span translate>Bitcoin Network Fee Policy</span> <span class="setting-title" translate>Bitcoin Network Fee Policy</span>
<span class="item-note"> <span class="setting-value">
{{feeOpts[currentFeeLevel]|translate}} {{feeOpts[currentFeeLevel]|translate}}
</span> </span>
<i class="icon bp-arrow-right"></i> <i class="icon bp-arrow-right"></i>
</a> </a>
<a class="item item-icon-right item-icon-left" href ui-sref="tabs.advanced">
<i class="icon big-icon-svg">
<img src="img/icon-advanced.svg" class="bg"/>
</i>
<span translate>Advanced</span>
<i class="icon bp-arrow-right"></i>
</a>
<div class="item item-divider" ng-show="wallets[0]" translate>Wallets &amp; Integrations</div> <div class="item item-divider" ng-show="wallets[0]" translate>Wallets &amp; Integrations</div>
<a class="item item-icon-left item-icon-right" href <a class="item item-icon-left item-icon-right" href
ui-sref="tabs.preferences({'walletId': item.id})" ui-sref="tabs.preferences({'walletId': item.id})"
ng-repeat="item in wallets track by $index"> ng-repeat="item in wallets track by $index">
@ -107,14 +110,8 @@
</a> </a>
<div class="item item-divider"></div> <div class="item item-divider"></div>
<a class="item item-icon-left item-icon-right" href ui-sref="tabs.about">
<i class="icon big-icon-svg"> <a class="ng-hide item item-icon-left item-icon-right" href ng-hide="true">
<img src="img/icon-about.svg" class="bg"/>
</i>
<span translate>About</span> {{appName}}
<i class="icon bp-arrow-right"></i>
</a>
<a class="item item-icon-left item-icon-right" href ng-hide="true">
<i class="icon big-icon-svg"> <i class="icon big-icon-svg">
<img src="img/icon-heart.svg" class="bg"/> <img src="img/icon-heart.svg" class="bg"/>
</i> </i>
@ -122,16 +119,23 @@
<i class="icon bp-arrow-right"></i> <i class="icon bp-arrow-right"></i>
</a> </a>
<div class="item item-divider"></div> <div class="ng-hide item item-divider" ng-hide="true"></div>
<a class="item item-icon-left item-icon-right" ng-click=openExternalLink("https://help.bitpay.com")>
<a class="item item-icon-right item-icon-left" href ui-sref="tabs.advanced">
<i class="icon big-icon-svg"> <i class="icon big-icon-svg">
<img src="img/icon-help-support.svg" class="bg"/> <img src="img/icon-advanced.svg" class="bg"/>
</i>
<span translate>Help &amp; Support</span>
<i class="icon big-icon-svg">
<img src="img/icon-link.svg" class="bg"/>
</i> </i>
<span translate>Advanced</span>
<i class="icon bp-arrow-right"></i>
</a> </a>
<a class="item item-icon-left item-icon-right" href ui-sref="tabs.about">
<i class="icon big-icon-svg">
<img src="img/icon-about.svg" class="bg"/>
</i>
<span translate>About</span> {{appName}}
<i class="icon bp-arrow-right"></i>
</a>
<div class="item item-divider"></div> <div class="item item-divider"></div>
</div> </div>
</ion-content> </ion-content>

View file

@ -5,9 +5,9 @@
</ion-nav-back-button> </ion-nav-back-button>
</ion-nav-bar> </ion-nav-bar>
<ion-content class="padding"> <ion-content>
<div class="card"> <div class="list">
<div class="item item-text-wrap" ng-include="'views/includes/terms.html'"></div> <div class="item item-text-wrap" id="settings-tos" ng-include="'views/includes/terms.html'"></div>
</div> </div>
<button class="button button-standard button-primary" <button class="button button-standard button-primary"
ng-show="lang != 'en'" ng-show="lang != 'en'"