diff --git a/.gitignore b/.gitignore index ee2f7a253..000866d94 100644 --- a/.gitignore +++ b/.gitignore @@ -19,7 +19,6 @@ npm-debug.log* ## App /desktop -/chrome-app /config.xml /ionic.config.json diff --git a/app-template/apply.js b/app-template/apply.js index b6a6b90e8..17b721d9f 100755 --- a/app-template/apply.js +++ b/app-template/apply.js @@ -11,8 +11,7 @@ var templates = { 'manifest.ionic-template.json': 'src/', '.desktop': 'desktop/', 'setup-win.iss': 'desktop/', - 'build-macos.sh': 'desktop/', - 'manifest-template.json': 'chrome-app/' + 'build-macos.sh': 'desktop/' }; var configDir = process.argv[2] || 'copay'; var JSONheader = ' { ' + "\n" + ' "//":"Changes to this file will be overwritten",' + "\n" + ' "//":" Modify it in the app-template directory", ' + "\n"; @@ -75,7 +74,6 @@ Object.keys(templates).forEach(function(k) { ///////////////// console.log('Copying ' + configDir + '/appConfig.json' + ' to assets'); -configBlob = configBlob.replace('{', JSONheader); fs.writeFileSync('../src/assets/appConfig.json', configBlob, 'utf8'); //////////////// diff --git a/app-template/bitpay/appConfig.json b/app-template/bitpay/appConfig.json index 2da1677da..cd1b2c57b 100644 --- a/app-template/bitpay/appConfig.json +++ b/app-template/bitpay/appConfig.json @@ -2,7 +2,7 @@ "packageName": "bitpay", "packageDescription": "Secure Bitcoin Wallet", "packageNameId": "com.bitpay.wallet", - "statusBarColor": "#1e3186", + "themeColor": "#1e3186", "userVisibleName": "BitPay", "purposeLine": "Secure Bitcoin Wallet", "bundleName": "wallet", diff --git a/app-template/bitpay/img/logo.png b/app-template/bitpay/img/logo.png new file mode 100644 index 000000000..b90d58b82 Binary files /dev/null and b/app-template/bitpay/img/logo.png differ diff --git a/app-template/bitpay/sass/overrides.scss b/app-template/bitpay/sass/overrides.scss index e69de29bb..41240bd9a 100644 --- a/app-template/bitpay/sass/overrides.scss +++ b/app-template/bitpay/sass/overrides.scss @@ -0,0 +1,21 @@ +/* + * BitPay Distribution SCSS overrides + */ + +// Named Color Variables +// -------------------------------------------------- +// Named colors makes it easy to reuse colors on various components. +// It's highly recommended to change the default colors +// to match your app's branding. Ionic uses a Sass map of +// colors so you can add, rename and remove colors as needed. +// The "primary" color is the only required color in the map. + +$colors: ( + primary: #1e3186, + secondary: #111b49, + danger: #ffa500, + light: #f4f4f4, + dark: #222 +); + +$text-color: #1e3186; diff --git a/app-template/config-template.xml b/app-template/config-template.xml index cf8ab8f56..4abdcde4c 100644 --- a/app-template/config-template.xml +++ b/app-template/config-template.xml @@ -18,7 +18,7 @@ - + diff --git a/app-template/copay/appConfig.json b/app-template/copay/appConfig.json index 7ae0dd688..33662aecf 100644 --- a/app-template/copay/appConfig.json +++ b/app-template/copay/appConfig.json @@ -2,7 +2,7 @@ "packageName": "copay", "packageDescription": "Copay Bitcoin Wallet", "packageNameId": "com.bitpay.copay", - "statusBarColor": "#192c3a", + "themeColor": "#192c3a", "userVisibleName": "Copay", "purposeLine": "Copay Bitcoin Wallet", "bundleName": "copay", diff --git a/app-template/copay/img/logo.png b/app-template/copay/img/logo.png index 01fe6c0bd..e0557c721 100644 Binary files a/app-template/copay/img/logo.png and b/app-template/copay/img/logo.png differ diff --git a/app-template/copay/sass/overrides.scss b/app-template/copay/sass/overrides.scss index 109541cc6..b9451dc08 100644 --- a/app-template/copay/sass/overrides.scss +++ b/app-template/copay/sass/overrides.scss @@ -2,74 +2,21 @@ * Copay Distribution SCSS overrides */ -/* Colors */ -$v-primary-color: #192c3a; -$v-secondary-color: #31465b; -$v-accent-color: #1abb9b; +// Named Color Variables +// -------------------------------------------------- +// Named colors makes it easy to reuse colors on various components. +// It's highly recommended to change the default colors +// to match your app's branding. Ionic uses a Sass map of +// colors so you can add, rename and remove colors as needed. +// The "primary" color is the only required color in the map. -$v-text-primary-color: #192c3a; -$v-text-secondary-color: #c2c9d1; -$v-text-accent-color: #1abb9b; +$colors: ( + primary: #192c3a, + secondary: #31465b, + danger: #bb331a, + light: #f4f4f4, + dark: #222 +); -$v-success-color: #1abb9b; -$v-warning-color: #bb331a; +$text-color: #192c3a; -/* Theme */ -$v-default-wallet-color-index: 6; -$v-top-tabs-color: $v-accent-color; -$v-wallet-backup-phrase-color: $v-text-primary-color; -$v-wallet-backup-select-phrase-color: $v-secondary-color; -$v-wallet-backup-select-word-bg: $v-accent-color; -$v-wallet-backup-select-word-color: $v-text-primary-color; -$v-wallet-backup-select-word-disabled-color: $v-accent-color; -$v-tou-bg: $v-secondary-color; -$v-tou-color: $v-text-secondary-color; -$v-icon-border-radius: 3px; -$v-bitcoin-icon: url('../img/app/icon-bitcoin.svg'); - -$v-button-primary-outline-active-color: $v-text-primary-color; - -$v-button-secondary-bg: $v-secondary-color; -$v-button-secondary-color: $v-accent-color; -$v-button-secondary-active-bg: darken($v-secondary-color, 10%); -$v-button-secondary-clear-color: $v-accent-color; -$v-button-secondary-outline-border: $v-accent-color; -$v-button-secondary-outline-color: $v-accent-color; -$v-button-secondary-outline-active-bg: darken($v-accent-color, 10%); -$v-button-secondary-outline-active-color: $v-accent-color; - -/* Slide */ - -$v-slide-bg-color: $v-accent-color; -$v-slider-bg-color: #069074; -$v-slide-text-color: #FFFFFF; - -/* Onboarding */ -$v-onboarding-welcome-bg: none; -$v-onboarding-color: $v-text-secondary-color; -$v-onboarding-bar-header-color: $v-text-primary-color; -$v-onboarding-bar-header-button-color: $v-accent-color; - -$v-onboarding-tour-phone-bg: url(../img/app/onboarding/tour-phone.svg); -$v-onboarding-tour-currency-bg: url(../img/app/onboarding/tour-currency.svg); -$v-onboarding-tour-control-bg: url(../img/app/onboarding/tour-control.svg); -$v-onboarding-push-notification-bg: url(../img/app/onboarding/push-notifications.svg); -$v-onboarding-backup-warning-bg: url(../img/app/backup-warning.svg); - -$v-onboarding-button-back-color: $v-accent-color; - -$v-onboarding-button-secondary-bg: $v-secondary-color; -$v-onboarding-button-secondary-color: $v-accent-color; -$v-onboarding-button-secondary-active-bg: darken($v-secondary-color, 10%); -$v-onboarding-button-secondary-clear-color: $v-accent-color; -$v-onboarding-button-secondary-outline-border: $v-accent-color; -$v-onboarding-button-secondary-outline-color: $v-accent-color; -$v-onboarding-button-secondary-outline-active-bg: darken($v-accent-color, 10%); -$v-onboarding-button-secondary-outline-active-color: $v-accent-color; - -/* Main tabs */ -$v-tab-home-selected-icon: url('../img/app/tab-icons/ico-home-selected.svg'); -$v-tab-receive-selected-icon: url('../img/app/tab-icons/ico-receive-selected.svg'); -$v-tab-settings-selected-icon: url('../img/app/tab-icons/ico-settings-selected.svg'); -$v-tab-scan-selected-icon: url('../img/app/tab-icons/ico-scan-selected.svg'); -$v-tab-send-selected-icon: url('../img/app/tab-icons/ico-send-selected.svg'); diff --git a/app-template/index-template.html b/app-template/index-template.html index 392be5584..689248c67 100644 --- a/app-template/index-template.html +++ b/app-template/index-template.html @@ -9,7 +9,7 @@ - + @@ -28,14 +28,6 @@ - -
- -
- diff --git a/app-template/manifest-template.json b/app-template/manifest-template.json deleted file mode 100644 index 42bb59f81..000000000 --- a/app-template/manifest-template.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "manifest_version": 2, - "name": "*PACKAGENAME*", - "description": "*DESCRIPTION*", - "version": "*VERSION*", - "permissions": [ - "storage", - "unlimitedStorage", - "notifications", - "videoCapture", - "webview" - ], - "app": { - "background": { - "scripts": ["initial.js"] - } - }, - "icons": { - "128": "assets/img/icon-chrome-128.png" - } -} diff --git a/app-template/manifest.ionic-template.json b/app-template/manifest.ionic-template.json index bf135e6f0..347672ad3 100644 --- a/app-template/manifest.ionic-template.json +++ b/app-template/manifest.ionic-template.json @@ -5,9 +5,9 @@ "display": "standalone", "icons": [{ "src": "assets/img/app/logo.png", - "sizes": "512x512", + "sizes": "150x65", "type": "image/png" }], - "background_color": "#4e8ef7", - "theme_color": "#4e8ef7" + "background_color": "*THEMECOLOR*", + "theme_color": "*THEMECOLOR*" } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index a875781a7..e39d64d93 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -152,7 +152,7 @@ let providers: any = [ useFactory: persistenceProviderFactory, deps: [PlatformProvider, Logger], multi: false - }, + } ]; export function declarationsComponents() { diff --git a/src/providers/app/app.ts b/src/providers/app/app.ts index a95404b39..8a375c49b 100644 --- a/src/providers/app/app.ts +++ b/src/providers/app/app.ts @@ -8,39 +8,35 @@ import { ConfigProvider } from '../../providers/config/config'; import { TouchIdProvider } from '../../providers/touchid/touchid'; interface App { - WindowsStoreDisplayName: string; - WindowsStoreIdentityName: string; - androidVersion: string; - appDescription: string; - appUri: string; + packageName: string; + packageDescription: string; + packageNameId: string; + themeColor: string; + userVisibleName: string; + purposeLine: string; bundleName: string; - commitHash: string; - description: string; - disclaimerUrl: string; - gitHubRepoBugs: string; - gitHubRepoName: string; - gitHubRepoUrl: string; + appUri: string; name: string; + nameNoSpace: string; nameCase: string; nameCaseNoSpace: string; - nameNoSpace: string; - packageDescription: string; - packageName: string; - packageNameId: string; - purposeLine: string; - pushSenderId: string; - statusBarColor: string; + gitHubRepoName: string; + gitHubRepoUrl: string; + gitHubRepoBugs: string; + disclaimerUrl: string; url: string; - userVisibleName: string; - version: string; + appDescription: string; winAppName: string; + WindowsStoreIdentityName: string; + WindowsStoreDisplayName: string; windowsAppId: string; - _enabledExtensions: { - amazon: boolean; - coinbase: boolean; - glidera: boolean; - } + pushSenderId: string; + description: string; + version: string; + androidVersion: string; + commitHash: string; _extraCSS: string; + _enabledExtensions: object; } @Injectable() @@ -60,23 +56,21 @@ export class AppProvider { public load() { return new Promise((resolve, reject) => { - this.config.load().then((config) => { - // storage -> config -> language -> unit -> app - // Everything ok - this.language.init(config); + this.config.load().then(() => { + this.language.load(); this.touchid.init(); this.getInfo().subscribe((info) => { this.info = info; - resolve(true); + resolve(); }); }).catch((err) => { - // Something may be wrong - reject(err); + this.logger.error(err); + reject(); }); }); } - getInfo() { + private getInfo() { return this.http.get(this.jsonPath) .map((res: Response) => res.json()); } diff --git a/src/providers/config/config.ts b/src/providers/config/config.ts index 1c75ee4a6..96520d830 100644 --- a/src/providers/config/config.ts +++ b/src/providers/config/config.ts @@ -2,106 +2,193 @@ import { Injectable } from '@angular/core'; import { Logger } from '@nsalaun/ng-logger'; import { Events } from 'ionic-angular'; import { PersistenceProvider } from '../persistence/persistence'; -import { PlatformProvider } from '../platform/platform'; import * as _ from "lodash"; -@Injectable() -export class ConfigProvider { - private configCache: object; - private configDefault: object = { - // wallet limits - limits: { - totalCopayers: 6, - mPlusN: 100 - }, +interface Config { + limits: { + totalCopayers: number; + mPlusN: number; + }; - // wallet default config - wallet: { - requiredCopayers: 2, - totalCopayers: 3, - spendUnconfirmed: false, - reconnectDelay: 5000, - idleDurationMin: 4, + wallet: { + requiredCopayers: number; + totalCopayers: number; + spendUnconfirmed: boolean; + reconnectDelay: number; + idleDurationMin: number; settings: { - unitName: 'BTC', - unitToSatoshi: 100000000, - unitDecimals: 8, - unitCode: 'btc', - alternativeName: 'US Dollar', - alternativeIsoCode: 'USD' - } - }, + unitName: string; + unitToSatoshi: number; + unitDecimals: number; + unitCode: string; + alternativeName: string; + alternativeIsoCode: string; + defaultLanguage: string; + }; + }; - // Bitcore wallet service URL - bws: { - url: 'https://bws.bitpay.com/bws/api' - }, + bws: { + url: string; + }; - download: { - bitpay: { - url: 'https://bitpay.com/wallet' - }, - copay: { - url: 'https://copay.io/#download' - } - }, - - rateApp: { - bitpay: { - ios: 'http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=1149581638&pageNumber=0&sortOrdering=2&type=Purple+Software&mt=8', - android: 'https://play.google.com/store/apps/details?id=com.bitpay.wallet', - wp: '' - }, - copay: { - ios: 'http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=951330296&pageNumber=0&sortOrdering=2&type=Purple+Software&mt=8', - android: 'https://play.google.com/store/apps/details?id=com.bitpay.copay', - wp: '' - } - }, - - lock: { - method: null, - value: null, - bannedUntil: null - }, - - // External services - recentTransactions: { - enabled: true - }, - - hideNextSteps: { - enabled: this.platform.isWP ? true : false - }, - - rates: { - url: 'https://insight.bitpay.com:443/api/rates' - }, - - release: { - url: 'https://api.github.com/repos/bitpay/copay/releases/latest' - }, - - pushNotificationsEnabled: true, - - confirmedTxsNotifications: { - enabled: true - }, - - emailNotifications: { - enabled: false - }, - - log: { - filter: 'debug' + download: { + bitpay: { + url: string; + }; + copay: { + url: string; } }; + rateApp: { + bitpay: { + ios: string; + android: string; + wp: string; + }; + copay: { + ios: string; + android: string; + wp: string; + }; + }; + + lock: { + method: any; + value: any; + bannedUntil: any; + }; + + recentTransactions: { + enabled: boolean; + }; + + hideNextSteps: { + enabled: boolean; + }; + + rates: { + url: string; + }; + + release: { + url: string; + }; + + pushNotificationsEnabled: boolean; + + confirmedTxsNotifications: { + enabled: boolean; + }; + + emailNotifications: { + enabled: boolean; + }; + + log: { + filter: string; + }; +}; + +const configDefault: Config = { + // wallet limits + limits: { + totalCopayers: 6, + mPlusN: 100 + }, + + // wallet default config + wallet: { + requiredCopayers: 2, + totalCopayers: 3, + spendUnconfirmed: false, + reconnectDelay: 5000, + idleDurationMin: 4, + settings: { + unitName: 'BTC', + unitToSatoshi: 100000000, + unitDecimals: 8, + unitCode: 'btc', + alternativeName: 'US Dollar', + alternativeIsoCode: 'USD', + defaultLanguage: '' + } + }, + + // Bitcore wallet service URL + bws: { + url: 'https://bws.bitpay.com/bws/api' + }, + + download: { + bitpay: { + url: 'https://bitpay.com/wallet' + }, + copay: { + url: 'https://copay.io/#download' + } + }, + + rateApp: { + bitpay: { + ios: 'http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=1149581638&pageNumber=0&sortOrdering=2&type=Purple+Software&mt=8', + android: 'https://play.google.com/store/apps/details?id=com.bitpay.wallet', + wp: '' + }, + copay: { + ios: 'http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=951330296&pageNumber=0&sortOrdering=2&type=Purple+Software&mt=8', + android: 'https://play.google.com/store/apps/details?id=com.bitpay.copay', + wp: '' + } + }, + + lock: { + method: null, + value: null, + bannedUntil: null + }, + + // External services + recentTransactions: { + enabled: true + }, + + hideNextSteps: { + enabled: false + }, + + rates: { + url: 'https://insight.bitpay.com:443/api/rates' + }, + + release: { + url: 'https://api.github.com/repos/bitpay/copay/releases/latest' + }, + + pushNotificationsEnabled: true, + + confirmedTxsNotifications: { + enabled: true + }, + + emailNotifications: { + enabled: false + }, + + log: { + filter: 'debug' + } +}; + +@Injectable() +export class ConfigProvider { + private configCache: Config; + + constructor( private logger: Logger, private events: Events, - private platform: PlatformProvider, private persistence: PersistenceProvider ) { this.logger.debug('ConfigProvider initialized.'); @@ -109,16 +196,19 @@ export class ConfigProvider { public load() { return new Promise((resolve, reject) => { - this.persistence.getConfig().then((config: object) => { + this.persistence.getConfig().then((config: Config) => { if (!_.isEmpty(config)) this.configCache = _.clone(config); - else this.configCache = _.clone(this.configDefault); - resolve(this.configCache); + else this.configCache = _.clone(configDefault); + resolve(); + }).catch((err) => { + this.logger.error(err); + reject(); }); }); } public set(newOpts: object) { - let config = _.cloneDeep(this.configDefault); + let config = _.cloneDeep(configDefault); if (_.isString(newOpts)) { newOpts = JSON.parse(newOpts); @@ -132,12 +222,12 @@ export class ConfigProvider { }); } - public get(): Object { + public get(): Config { return this.configCache; } - public getDefaults(): Object { - return this.configDefault; + public getDefaults(): Config { + return configDefault; } } diff --git a/src/providers/language/language.ts b/src/providers/language/language.ts index f273384a4..2e3f0a1c5 100644 --- a/src/providers/language/language.ts +++ b/src/providers/language/language.ts @@ -56,14 +56,13 @@ export class LanguageProvider { }); } - init(config: object) { - // Get from browser - let browserLang = this.translate.getBrowserLang(); - let validBrowserLang = this.getName(browserLang) ? true : false; - - let configLanguage = config['wallet']['settings']['defaultLanguage']; // TODO - if (configLanguage) this.current = configLanguage; + public load() { + let lang = this.config.get().wallet.settings.defaultLanguage; + if (!_.isEmpty(lang)) this.current = lang; else { + // Get from browser + let browserLang = this.translate.getBrowserLang(); + let validBrowserLang = this.getName(browserLang) ? true : false; if (validBrowserLang) this.current = browserLang; else this.current = this.getDefault(); } diff --git a/src/providers/persistence/persistence.spec.ts b/src/providers/persistence/persistence.spec.ts index dbf073747..fdc9fe971 100644 --- a/src/providers/persistence/persistence.spec.ts +++ b/src/providers/persistence/persistence.spec.ts @@ -7,7 +7,6 @@ import { PersistenceProvider } from './persistence'; import { IStorage, ISTORAGE } from './storage/istorage'; import { RamStorage } from './storage/ram-storage'; import { LocalStorage } from './storage/local-storage'; -import { ChromeStorage } from './storage/chrome-storage'; import { FileStorage } from './storage/file-storage'; describe('Storage Service', () => { diff --git a/src/providers/persistence/persistence.ts b/src/providers/persistence/persistence.ts index 567d9b6b0..2368367ce 100644 --- a/src/providers/persistence/persistence.ts +++ b/src/providers/persistence/persistence.ts @@ -1,12 +1,11 @@ import { Injectable } from '@angular/core'; -import { InjectionToken, Inject } from '@angular/core'; +import { Inject } from '@angular/core'; import { Logger } from '@nsalaun/ng-logger'; import * as _ from 'lodash'; import { IStorage, ISTORAGE } from './storage/istorage'; import { PlatformProvider } from '../platform/platform'; import { LocalStorage } from './storage/local-storage'; -import { ChromeStorage } from './storage/chrome-storage'; import { FileStorage } from './storage/file-storage'; import { RamStorage } from './storage/ram-storage'; diff --git a/src/providers/persistence/storage/chrome-storage.ts b/src/providers/persistence/storage/chrome-storage.ts deleted file mode 100644 index ce0cf0d6a..000000000 --- a/src/providers/persistence/storage/chrome-storage.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { Injectable } from '@angular/core'; -import { Logger } from '@nsalaun/ng-logger'; -import * as _ from 'lodash'; - -import { IStorage, KeyAlreadyExistsError } from './istorage'; - -@Injectable() -export class ChromeStorage implements IStorage { - ls: chrome.storage.StorageArea; - constructor(private log: Logger) { - let chrome: any; - if (!chrome.storage || !chrome.storage.local) throw new Error('Chrome storage not supported'); - this.ls = chrome.storage.local; - } - - get(k: string): Promise { - return new Promise(resolve => { - let v = this.ls.get(k, (v) => { - if (!v) return resolve(null); - if (!_.isString(v)) return resolve(v); - let parsed: any; - try { - parsed = JSON.parse(v); - } catch (e) { - } - resolve(parsed || v); - }); - }); - } - - set(k: string, v: any): Promise { - if (_.isObject(v)) { - v = JSON.stringify(v); - } - if (v && !_.isString(v)) { - v = v.toString(); - } - - let obj = {}; - obj[k] = v; - return new Promise(resolve => { - this.ls.set(obj, resolve); - }); - } - - remove(k: string): Promise { - return new Promise(resolve => { - this.ls.remove(k, resolve); - }); - } - - create(k: string, v: any): Promise { - return this.get(k).then((data) => { - if (data) throw new KeyAlreadyExistsError(); - this.set(k, v); - }); - } -} diff --git a/src/providers/tx-format/tx-format.ts b/src/providers/tx-format/tx-format.ts index 499dc6595..213e16a56 100644 --- a/src/providers/tx-format/tx-format.ts +++ b/src/providers/tx-format/tx-format.ts @@ -21,11 +21,10 @@ export class TxFormatProvider { private filter: Filter ) { console.log('Hello TxFormatProvider Provider'); - console.log("configProvider", this.config.get()); } formatAmount(satoshis: number, fullPrecision?: boolean) { - let settings = this.config.get()['wallet']['settings']; // TODO + let settings = this.config.get().wallet.settings; if (settings.unitCode == 'sat') return satoshis; @@ -64,7 +63,7 @@ export class TxFormatProvider { formatAlternativeStr(coin: string, satoshis: number) { return new Promise((resolve, reject) => { if (isNaN(satoshis)) resolve(); - let settings = this.config.get()['wallet']['settings']; // TODO + let settings = this.config.get().wallet.settings; var v1 = parseFloat((this.rate.toFiat(satoshis, settings.alternativeIsoCode, coin)).toFixed(2)); var v1FormatFiat = this.filter.formatFiatAmount(v1); diff --git a/src/theme/variables.scss b/src/theme/variables.scss index 433c1698a..1900ce3e6 100644 --- a/src/theme/variables.scss +++ b/src/theme/variables.scss @@ -19,23 +19,6 @@ $app-direction: ltr; // To view all the possible Ionic variables, see: // http://ionicframework.com/docs/theming/overriding-ionic-variables/ - -// Named Color Variables -// -------------------------------------------------- -// Named colors makes it easy to reuse colors on various components. -// It's highly recommended to change the default colors -// to match your app's branding. Ionic uses a Sass map of -// colors so you can add, rename and remove colors as needed. -// The "primary" color is the only required color in the map. - -$colors: ( - primary: #488aff, - secondary: #32db64, - danger: #f53d3d, - light: #f4f4f4, - dark: #222 -); - // TODO: Custom variables (backward compatibilities). Will be REMOVED $v-primary-color: #192c3a; @@ -67,12 +50,12 @@ $v-visible-radius: 6px !default; - // App Material Design Variables // -------------------------------------------------- // Material Design only Sass variables can go here + // App Windows Variables // -------------------------------------------------- // Windows only Sass variables can go here