diff --git a/.babelrc b/.babelrc index 5ccd6b58..6c4a0cff 100644 --- a/.babelrc +++ b/.babelrc @@ -1,25 +1,30 @@ { - "plugins": [ - [ - "transform-runtime", { - "helpers": false, - "polyfill": false, - "regenerator": true, - "moduleName": "babel-runtime" - } - ], - ["module-resolver", { - "root": ["./common"], - "alias": { - "underscore": "lodash" - }, - "cwd": "babelrc" - }], - "react-hot-loader/babel"], - "presets": ["es2015", "react", "stage-0", "flow"], - "env": { - "production": { - "presets": ["react-optimize"] + "plugins": [ + [ + "transform-runtime", + { + "helpers": false, + "polyfill": false, + "regenerator": true, + "moduleName": "babel-runtime" } + ], + [ + "module-resolver", + { + "root": ["./common"], + "alias": { + "underscore": "lodash" + }, + "cwd": "babelrc" + } + ], + "react-hot-loader/babel" + ], + "presets": ["es2015", "react", "stage-0", "flow"], + "env": { + "production": { + "presets": ["react-optimize"] } + } } diff --git a/.gitignore b/.gitignore index 6293abfa..d11b3f9b 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,8 @@ jspm_packages # Optional REPL history .node_repl_history + +# VScode workspace settings +.vscode/ +static/dll.vendor.js +dll \ No newline at end of file diff --git a/common/actions/deterministicWallets.js b/common/actions/deterministicWallets.js index c6f277f2..ee30d31c 100644 --- a/common/actions/deterministicWallets.js +++ b/common/actions/deterministicWallets.js @@ -14,18 +14,20 @@ export type DeterministicWalletData = { export type GetDeterministicWalletsAction = { type: 'DW_GET_WALLETS', payload: { + seed: ?string, dPath: string, - publicKey: string, - chainCode: string, + publicKey: ?string, + chainCode: ?string, limit: number, offset: number } }; export type GetDeterministicWalletsArgs = { + seed: ?string, dPath: string, - publicKey: string, - chainCode: string, + publicKey: ?string, + chainCode: ?string, limit?: number, offset?: number }; @@ -33,10 +35,11 @@ export type GetDeterministicWalletsArgs = { export function getDeterministicWallets( args: GetDeterministicWalletsArgs ): GetDeterministicWalletsAction { - const { dPath, publicKey, chainCode, limit, offset } = args; + const { seed, dPath, publicKey, chainCode, limit, offset } = args; return { type: 'DW_GET_WALLETS', payload: { + seed, dPath, publicKey, chainCode, diff --git a/common/actions/notifications.js b/common/actions/notifications.js index 8b6bb993..5c0cee61 100644 --- a/common/actions/notifications.js +++ b/common/actions/notifications.js @@ -20,7 +20,7 @@ export type ShowNotificationAction = { export function showNotification( level: NOTIFICATION_LEVEL = 'info', msg: Element<*> | string, - duration?: number + duration?: number | INFINITY ): ShowNotificationAction { return { type: 'SHOW_NOTIFICATION', diff --git a/common/actions/rates.js b/common/actions/rates.js index fd62b6d0..2255c832 100644 --- a/common/actions/rates.js +++ b/common/actions/rates.js @@ -1,17 +1,29 @@ // @flow +export type FiatRequestedRatesAction = { + type: 'RATES_FIAT_REQUESTED' +}; + +export function fiatRequestedRates() { + return { + type: 'RATES_FIAT_REQUESTED' + }; +} + /*** Set rates ***/ -export type SetRatesAction = { - type: 'RATES_SET', +export type FiatSucceededRatesAction = { + type: 'RATES_FIAT_SUCCEEDED', payload: { [string]: number } }; -export function setRates(payload: { [string]: number }): SetRatesAction { +export function fiatSucceededRates(payload: { + [string]: number +}): FiatSucceededRatesAction { return { - type: 'RATES_SET', + type: 'RATES_FIAT_SUCCEEDED', payload }; } /*** Union Type ***/ -export type RatesAction = SetRatesAction; +export type RatesAction = FiatSucceededRatesAction | FiatRequestedRatesAction; diff --git a/common/actions/wallet.js b/common/actions/wallet.js index aa6ca64f..aafe9131 100644 --- a/common/actions/wallet.js +++ b/common/actions/wallet.js @@ -1,6 +1,7 @@ // @flow -import BaseWallet from 'libs/wallet/base'; +import type { IWallet } from 'libs/wallet/IWallet'; import Big from 'bignumber.js'; +import { Wei } from 'libs/units'; /*** Unlock Private Key ***/ export type PrivateKeyUnlockParams = { @@ -42,13 +43,35 @@ export function unlockKeystore( }; } +/*** Unlock Mnemonic ***/ +export type MnemonicUnlockParams = { + phrase: string, + pass: string, + path: string, + address: string +}; + +export type UnlockMnemonicAction = { + type: 'WALLET_UNLOCK_MNEMONIC', + payload: MnemonicUnlockParams +}; + +export function unlockMnemonic( + value: MnemonicUnlockParams +): UnlockMnemonicAction { + return { + type: 'WALLET_UNLOCK_MNEMONIC', + payload: value + }; +} + /*** Set Wallet ***/ export type SetWalletAction = { type: 'WALLET_SET', - payload: BaseWallet + payload: IWallet }; -export function setWallet(value: BaseWallet): SetWalletAction { +export function setWallet(value: IWallet): SetWalletAction { return { type: 'WALLET_SET', payload: value @@ -58,10 +81,10 @@ export function setWallet(value: BaseWallet): SetWalletAction { /*** Set Balance ***/ export type SetBalanceAction = { type: 'WALLET_SET_BALANCE', - payload: Big + payload: Wei }; -export function setBalance(value: Big): SetBalanceAction { +export function setBalance(value: Wei): SetBalanceAction { return { type: 'WALLET_SET_BALANCE', payload: value diff --git a/common/api/bity.js b/common/api/bity.js index 84f8e8fe..06b49204 100644 --- a/common/api/bity.js +++ b/common/api/bity.js @@ -57,7 +57,7 @@ export function getOrderStatus(orderid: string) { } function _getAllRates() { - return fetch(`${bityConfig.bityAPI}/v1/rate2/`) + return fetch(`${bityConfig.bityURL}/v1/rate2/`) .then(checkHttpStatus) .then(parseJSON); } diff --git a/common/assets/images/icon-help-2.svg b/common/assets/images/icon-help-2.svg new file mode 100644 index 00000000..04d35cc9 --- /dev/null +++ b/common/assets/images/icon-help-2.svg @@ -0,0 +1 @@ + diff --git a/common/assets/images/logo-coinbase.svg b/common/assets/images/logo-coinbase.svg new file mode 100644 index 00000000..486a5a40 --- /dev/null +++ b/common/assets/images/logo-coinbase.svg @@ -0,0 +1 @@ + diff --git a/common/assets/images/logo-ledger.svg b/common/assets/images/logo-ledger.svg new file mode 100644 index 00000000..b17fe522 --- /dev/null +++ b/common/assets/images/logo-ledger.svg @@ -0,0 +1 @@ + diff --git a/common/assets/images/logo-trezor.svg b/common/assets/images/logo-trezor.svg new file mode 100644 index 00000000..76efb7f3 --- /dev/null +++ b/common/assets/images/logo-trezor.svg @@ -0,0 +1 @@ + diff --git a/common/assets/styles/bootstrap/alerts.less b/common/assets/styles/bootstrap/alerts.less deleted file mode 100755 index c14f459b..00000000 --- a/common/assets/styles/bootstrap/alerts.less +++ /dev/null @@ -1,159 +0,0 @@ -// Alerts -.alert { - padding: @space-sm @space; - margin: @space 0; - border-radius: @alert-border-radius; - font-weight: 300; - font-size: @font-size-bump; - h4 { - margin-top: 0; - color: inherit; - } - - &*:first-child { - margin-top: 0; - } - &*:last-child { - margin-bottom: 0; - } - - .alert-link { - font-weight: @alert-link-font-weight; - } - - > p, > ul { - margin-bottom: 0; - } - - > p + p { - margin-top: 5px; - } - - a { - color: white; - text-decoration: underline; - } - a:hover { - opacity: .8 - } - a:active, a:focus { - opacity: 1 - } - svg { - vertical-align: bottom; - } -} - -.alerts-container { - position: fixed; - bottom: 0; - left: 0; - right: 0; -} - -.alert.popup { - position: relative; - border-radius: 0; - padding: @space 0; - box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.33); - transition: @transition; - z-index: @zindex-alerts; - margin: 0; - .container { - position: relative; - @media screen and (max-width: @screen-xs) { - padding: @space*2 2% 0 15%; - } - &:after { - content: ''; - background-position: 50%; - background-repeat: no-repeat; - background-size: contain; - display: block; - color: white; - position: absolute; - top: 0; - bottom: 0; - left: 1%; - width: @space*2; - @media screen and (max-width: @screen-sm) { - left: 3%; - } - @media screen and (max-width: @screen-xs) { - left: 1%; - } - } - } - .icon-close { - background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2232%22%20height%3D%2232%22%20viewBox%3D%220%200%20348.333%20348.334%22%3E%3Cpath%20d%3D%22M336.559%2068.611L231.016%20174.165l105.543%20105.549c15.699%2015.705%2015.699%2041.145%200%2056.85-7.844%207.844-18.128%2011.769-28.407%2011.769-10.296%200-20.581-3.919-28.419-11.769L174.167%20231.003%2068.609%20336.563c-7.843%207.844-18.128%2011.769-28.416%2011.769-10.285%200-20.563-3.919-28.413-11.769-15.699-15.698-15.699-41.139%200-56.85l105.54-105.549L11.774%2068.611c-15.699-15.699-15.699-41.145%200-56.844%2015.696-15.687%2041.127-15.687%2056.829%200l105.563%20105.554L279.721%2011.767c15.705-15.687%2041.139-15.687%2056.832%200%2015.705%2015.699%2015.705%2041.145.006%2056.844z%22%20fill%3D%22%23FFF%22/%3E%3C/svg%3E); - background-position: 50%; - background-repeat: no-repeat; - background-size: 1rem; - cursor: pointer; - opacity: .7; - position: absolute; - top: 0; - right: 0; - width: @cont-padding; - bottom: 0; - border-left: 1px solid rgba(255, 255, 255, .7); - transition: @transition; - @media screen and (max-width: @screen-sm) { - width: @cont-padding-lg; - } - @media screen and (max-width: @screen-xs) { - width: 100%; - height: @space*2.5; - left: 0; - right: 0; - top: 0; - bottom: auto; - border-left: 0; - border-bottom: 1px solid rgba(255, 255, 255, .7); - } - &:hover { - transition: @transition; - background-color: rgba(0, 0, 0, 0.1); - border-color: rgba(255, 255, 255, .5); - } - &:active { - transition: @transition; - background-color: rgba(0, 0, 0, 0.1); - border-color: rgba(255, 255, 255, .7); - opacity: 1; - } - } - &.ng-hide { - bottom: -20%; - transition: @transition; - } -} - -// Alternate styles -.alert, .alert-info { - .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text); - .container:after { - background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20x%3D%2230%22%20y%3D%2230%22%20viewBox%3D%220%200%2065%2065%22%20width%3D%22512%22%20height%3D%22512%22%3E%3Cpath%20d%3D%22M32.5%200C14.58%200%200%2014.579%200%2032.5S14.58%2065%2032.5%2065%2065%2050.421%2065%2032.5%2050.42%200%2032.5%200zm0%2061C16.785%2061%204%2048.215%204%2032.5S16.785%204%2032.5%204%2061%2016.785%2061%2032.5%2048.215%2061%2032.5%2061z%22%20fill%3D%22%23FFF%22/%3E%3Ccircle%20cx%3D%2233.018%22%20cy%3D%2219.541%22%20r%3D%223.345%22%20fill%3D%22%23FFF%22/%3E%3Cpath%20d%3D%22M32.137%2028.342a2%202%200%200%200-2%202v17a2%202%200%200%200%204%200v-17a2%202%200%200%200-2-2z%22%20fill%3D%22%23FFF%22/%3E%3C/svg%3E); - } -} - -.alert-success { - .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text); - .container:after { - background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20478.2%20478.2%22%20width%3D%2232%22%20height%3D%2232%22%3E%3Cpath%20d%3D%22M457.575%20325.1c9.8-12.5%2014.5-25.9%2013.9-39.7-.6-15.2-7.4-27.1-13-34.4%206.5-16.2%209-41.7-12.7-61.5-15.9-14.5-42.9-21-80.3-19.2-26.3%201.2-48.3%206.1-49.2%206.3h-.1c-5%20.9-10.3%202-15.7%203.2-.4-6.4.7-22.3%2012.5-58.1%2014-42.6%2013.2-75.2-2.6-97-16.6-22.9-43.1-24.7-50.9-24.7-7.5%200-14.4%203.1-19.3%208.8-11.1%2012.9-9.8%2036.7-8.4%2047.7-13.2%2035.4-50.2%20122.2-81.5%20146.3-.6.4-1.1.9-1.6%201.4-9.2%209.7-15.4%2020.2-19.6%2029.4-5.9-3.2-12.6-5-19.8-5h-61c-23%200-41.6%2018.7-41.6%2041.6v162.5c0%2023%2018.7%2041.6%2041.6%2041.6h61c8.9%200%2017.2-2.8%2024-7.6l23.5%202.8c3.6.5%2067.6%208.6%20133.3%207.3%2011.9.9%2023.1%201.4%2033.5%201.4%2017.9%200%2033.5-1.4%2046.5-4.2%2030.6-6.5%2051.5-19.5%2062.1-38.6%208.1-14.6%208.1-29.1%206.8-38.3%2019.9-18%2023.4-37.9%2022.7-51.9-.4-8.1-2.2-15-4.1-20.1zm-409.3%20122.2c-8.1%200-14.6-6.6-14.6-14.6V270.1c0-8.1%206.6-14.6%2014.6-14.6h61c8.1%200%2014.6%206.6%2014.6%2014.6v162.5c0%208.1-6.6%2014.6-14.6%2014.6h-61v.1zm383.7-133.9c-4.2%204.4-5%2011.1-1.8%2016.3%200%20.1%204.1%207.1%204.6%2016.7.7%2013.1-5.6%2024.7-18.8%2034.6-4.7%203.6-6.6%209.8-4.6%2015.4%200%20.1%204.3%2013.3-2.7%2025.8-6.7%2012-21.6%2020.6-44.2%2025.4-18.1%203.9-42.7%204.6-72.9%202.2h-1.4c-64.3%201.4-129.3-7-130-7.1h-.1l-10.1-1.2c.6-2.8.9-5.8.9-8.8V270.1c0-4.3-.7-8.5-1.9-12.4%201.8-6.7%206.8-21.6%2018.6-34.3%2044.9-35.6%2088.8-155.7%2090.7-160.9.8-2.1%201-4.4.6-6.7-1.7-11.2-1.1-24.9%201.3-29%205.3.1%2019.6%201.6%2028.2%2013.5%2010.2%2014.1%209.8%2039.3-1.2%2072.7-16.8%2050.9-18.2%2077.7-4.9%2089.5%206.6%205.9%2015.4%206.2%2021.8%203.9%206.1-1.4%2011.9-2.6%2017.4-3.5.4-.1.9-.2%201.3-.3%2030.7-6.7%2085.7-10.8%20104.8%206.6%2016.2%2014.8%204.7%2034.4%203.4%2036.5-3.7%205.6-2.6%2012.9%202.4%2017.4.1.1%2010.6%2010%2011.1%2023.3.4%208.9-3.8%2018-12.5%2027z%22%20fill%3D%22%23FFF%22/%3E%3C/svg%3E); - } -} - -.alert-warning { - .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text); - .container:after { - background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20512%20512%22%20width%3D%2232%22%20height%3D%2232%22%3E%3Cpath%20d%3D%22M505.403%20406.394L295.389%2058.102c-8.274-13.721-23.367-22.245-39.39-22.245s-31.116%208.524-39.391%2022.246L6.595%20406.394c-8.551%2014.182-8.804%2031.95-.661%2046.37%208.145%2014.42%2023.491%2023.378%2040.051%2023.378h420.028c16.56%200%2031.907-8.958%2040.052-23.379%208.143-14.421%207.89-32.189-.662-46.369zm-28.364%2029.978a12.684%2012.684%200%200%201-11.026%206.436H45.985a12.68%2012.68%200%200%201-11.025-6.435%2012.683%2012.683%200%200%201%20.181-12.765L245.156%2075.316A12.732%2012.732%200%200%201%20256%2069.192c4.41%200%208.565%202.347%2010.843%206.124l210.013%20348.292a12.677%2012.677%200%200%201%20.183%2012.764z%22%20fill%3D%22%23FFF%22/%3E%3Cpath%20d%3D%22M256.154%20173.005c-12.68%200-22.576%206.804-22.576%2018.866%200%2036.802%204.329%2089.686%204.329%20126.489.001%209.587%208.352%2013.607%2018.248%2013.607%207.422%200%2017.937-4.02%2017.937-13.607%200-36.802%204.329-89.686%204.329-126.489%200-12.061-10.205-18.866-22.267-18.866zM256.465%20353.306c-13.607%200-23.814%2010.824-23.814%2023.814%200%2012.68%2010.206%2023.814%2023.814%2023.814%2012.68%200%2023.505-11.134%2023.505-23.814%200-12.99-10.826-23.814-23.505-23.814z%22%20fill%3D%22%23FFF%22/%3E%3C/svg%3E); - } -} - -.alert-danger { - .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text); - .container:after { - background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%20512%20512%22%20width%3D%2232%22%20height%3D%2232%22%3E%3Cpath%20d%3D%22M505.403%20406.394L295.389%2058.102c-8.274-13.721-23.367-22.245-39.39-22.245s-31.116%208.524-39.391%2022.246L6.595%20406.394c-8.551%2014.182-8.804%2031.95-.661%2046.37%208.145%2014.42%2023.491%2023.378%2040.051%2023.378h420.028c16.56%200%2031.907-8.958%2040.052-23.379%208.143-14.421%207.89-32.189-.662-46.369zm-28.364%2029.978a12.684%2012.684%200%200%201-11.026%206.436H45.985a12.68%2012.68%200%200%201-11.025-6.435%2012.683%2012.683%200%200%201%20.181-12.765L245.156%2075.316A12.732%2012.732%200%200%201%20256%2069.192c4.41%200%208.565%202.347%2010.843%206.124l210.013%20348.292a12.677%2012.677%200%200%201%20.183%2012.764z%22%20fill%3D%22%23FFF%22/%3E%3Cpath%20d%3D%22M256.154%20173.005c-12.68%200-22.576%206.804-22.576%2018.866%200%2036.802%204.329%2089.686%204.329%20126.489.001%209.587%208.352%2013.607%2018.248%2013.607%207.422%200%2017.937-4.02%2017.937-13.607%200-36.802%204.329-89.686%204.329-126.489%200-12.061-10.205-18.866-22.267-18.866zM256.465%20353.306c-13.607%200-23.814%2010.824-23.814%2023.814%200%2012.68%2010.206%2023.814%2023.814%2023.814%2012.68%200%2023.505-11.134%2023.505-23.814%200-12.99-10.826-23.814-23.505-23.814z%22%20fill%3D%22%23FFF%22/%3E%3C/svg%3E); - } -} diff --git a/common/assets/styles/bootstrap/badges.less b/common/assets/styles/bootstrap/badges.less deleted file mode 100755 index 39d80e81..00000000 --- a/common/assets/styles/bootstrap/badges.less +++ /dev/null @@ -1,65 +0,0 @@ -// -// Badges -// -------------------------------------------------- - -// Base class -.badge { - display: inline-block; - min-width: 10px; - padding: 3px 7px; - font-size: @font-size-small; - font-weight: @badge-font-weight; - color: @badge-color; - line-height: @badge-line-height; - vertical-align: middle; - white-space: nowrap; - text-align: center; - background-color: @badge-bg; - border-radius: @badge-border-radius; - - // Empty badges collapse automatically (not available in IE8) - &:empty { - display: none; - } - - // Quick fix for badges in buttons - .btn & { - position: relative; - top: -1px; - } - - .btn-xs &, - .btn-group-xs > .btn & { - top: 0; - padding: 1px 5px; - } - - // Hover state, but only for links - a& { - &:hover, - &:focus { - color: @badge-link-hover-color; - text-decoration: none; - cursor: pointer; - } - } - - // Account for badges in navs - .list-group-item.active > &, - .nav-pills > .active > a > & { - color: @badge-active-color; - background-color: @badge-active-bg; - } - - .list-group-item > & { - float: right; - } - - .list-group-item > & + & { - margin-right: 5px; - } - - .nav-pills > li > a > & { - margin-left: 3px; - } -} diff --git a/common/assets/styles/bootstrap/breadcrumbs.less b/common/assets/styles/bootstrap/breadcrumbs.less deleted file mode 100755 index a75795ce..00000000 --- a/common/assets/styles/bootstrap/breadcrumbs.less +++ /dev/null @@ -1,25 +0,0 @@ -// -// Breadcrumbs -// -------------------------------------------------- - -.breadcrumb { - padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal; - margin-bottom: @line-height-computed; - list-style: none; - background-color: @breadcrumb-bg; - border-radius: @border-radius; - - > li { - display: inline-block; - - + li:before { - content: "@{breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space - padding: 0 5px; - color: @breadcrumb-color; - } - } - - > .active { - color: @breadcrumb-active-color; - } -} diff --git a/common/assets/styles/bootstrap/button-groups.less b/common/assets/styles/bootstrap/button-groups.less deleted file mode 100755 index bfe55a6c..00000000 --- a/common/assets/styles/bootstrap/button-groups.less +++ /dev/null @@ -1,249 +0,0 @@ -// -// Button groups -// -------------------------------------------------- - -// Make the div behave like a button -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-block; - vertical-align: middle; // match .btn alignment given font-size hack above - margin-bottom: 5px; - > .btn { - position: relative; - float: left; - // Bring the "active" button to the front - &:hover, - &:focus, - &:active, - &.active { - z-index: 2; - } - } -} - -// Prevent double borders when buttons are next to each other -.btn-group { - .btn + .btn, - .btn + .btn-group, - .btn-group + .btn, - .btn-group + .btn-group { - margin-left: -1px; - } -} - -// Optional: Group multiple button groups together for a toolbar -.btn-toolbar { - margin-left: -5px; // Offset the first child's margin - &:extend(.clearfix all); - - .btn, - .btn-group, - .input-group { - float: left; - } - > .btn, - > .btn-group, - > .input-group { - margin-left: 5px; - } -} - -.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { - border-radius: 0; -} - -// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match -.btn-group > .btn:first-child { - margin-left: 0; - &:not(:last-child):not(.dropdown-toggle) { - .border-right-radius(0); - } -} - -// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it -.btn-group > .btn:last-child:not(:first-child), -.btn-group > .dropdown-toggle:not(:first-child) { - .border-left-radius(0); -} - -// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group) -.btn-group > .btn-group { - float: left; -} - -.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} - -.btn-group > .btn-group:first-child:not(:last-child) { - > .btn:last-child, - > .dropdown-toggle { - .border-right-radius(0); - } -} - -.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { - .border-left-radius(0); -} - -// On active and open, don't show outline -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; -} - -// Sizing -// -// Remix the default button sizing classes into new ones for easier manipulation. - -.btn-group-xs > .btn { &:extend(.btn-xs); -} - -.btn-group-sm > .btn { &:extend(.btn-sm); -} - -.btn-group-lg > .btn { &:extend(.btn-lg); -} - -// Split button dropdowns -// ---------------------- - -// Give the line between buttons some depth -.btn-group > .btn + .dropdown-toggle { - padding-left: 8px; - padding-right: 8px; -} - -.btn-group > .btn-lg + .dropdown-toggle { - padding-left: 12px; - padding-right: 12px; -} - -// The clickable button for toggling the menu -// Remove the gradient and set the same inset shadow as the :active state -.btn-group.open .dropdown-toggle { - .box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125)); - - // Show no shadow for `.btn-link` since it has no other button styles. - &.btn-link { - .box-shadow(none); - } -} - -// Carets in other button sizes -.btn-lg .caret { - border-width: @caret-width-large @caret-width-large 0; - border-bottom-width: 0; -} - -// Upside down carets for .dropup -.dropup .btn-lg .caret { - border-width: 0 @caret-width-large @caret-width-large; -} - -// Vertical button groups -// ---------------------- - -.btn-group-vertical { - > .btn, - > .btn-group, - > .btn-group > .btn { - display: block; - float: none; - width: 100%; - max-width: 100%; - } - - // Clear floats so dropdown menus can be properly placed - > .btn-group { - &:extend(.clearfix all); - > .btn { - float: none; - } - } - - > .btn + .btn, - > .btn + .btn-group, - > .btn-group + .btn, - > .btn-group + .btn-group { - margin-top: -1px; - margin-left: 0; - } -} - -.btn-group-vertical > .btn { - &:not(:first-child):not(:last-child) { - border-radius: 0; - } - &:first-child:not(:last-child) { - border-top-right-radius: @border-radius; - .border-bottom-radius(0); - } - &:last-child:not(:first-child) { - border-bottom-left-radius: @border-radius; - .border-top-radius(0); - } -} - -.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} - -.btn-group-vertical > .btn-group:first-child:not(:last-child) { - > .btn:last-child, - > .dropdown-toggle { - .border-bottom-radius(0); - } -} - -.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { - .border-top-radius(0); -} - -// Justified button groups -// ---------------------- - -.btn-group-justified { - display: table; - width: 100%; - table-layout: fixed; - border-collapse: separate; - > .btn, - > .btn-group { - float: none; - display: table-cell; - width: 1%; - } - > .btn-group .btn { - width: 100%; - } - - > .btn-group .dropdown-menu { - left: auto; - } -} - -// Checkbox and radio options -// -// In order to support the browser's form validation feedback, powered by the -// `required` attribute, we have to "hide" the inputs via `clip`. We cannot use -// `display: none;` or `visibility: hidden;` as that also hides the popover. -// Simply visually hiding the inputs via `opacity` would leave them clickable in -// certain cases which is prevented by using `clip` and `pointer-events`. -// This way, we ensure a DOM element is visible to position the popover from. -// -// See https://github.com/twbs/bootstrap/pull/12794 and -// https://github.com/twbs/bootstrap/pull/14559 for more information. - -[data-toggle="buttons"] { - > .btn, - > .btn-group > .btn { - input[type="radio"], - input[type="checkbox"] { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none; - } - } -} diff --git a/common/assets/styles/bootstrap/buttons.less b/common/assets/styles/bootstrap/buttons.less deleted file mode 100755 index 2b8af74d..00000000 --- a/common/assets/styles/bootstrap/buttons.less +++ /dev/null @@ -1,215 +0,0 @@ -.btn { - background-image: none; - border: 1px solid transparent; - box-shadow: inset 2px 2px 2px rgba(200, 200, 200, .1); - cursor: pointer; - display: inline-block; - font-weight: @btn-font-weight; - letter-spacing: .05em; - margin-top: @space-sm; - margin-bottom: 0; - text-align: center; - touch-action: manipulation; - vertical-align: middle; - white-space: nowrap; - .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @border-radius); - .user-select(none); - - &, - &:active, - &.active { - &:focus, - &.focus { - .tab-focus(); - } - } - - &:hover, - &:focus, - &.focus { - color: @btn-default-color; - text-decoration: none; - border-bottom-color: transparent; - box-shadow: inset 3px 3px 3px rgba(200, 200, 200, .1); - } - - &:active, - &.active { - outline: 0; - background-image: none; - .box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125)); - } - - &.disabled, - &[disabled], - fieldset[disabled] & { - cursor: @cursor-disabled; - .opacity(.65); - .box-shadow(none); - } - - a& { - &.disabled, - fieldset[disabled] & { - pointer-events: none; // Future-proof disabling of clicks on `` elements - } - } -} - -.alert .btn-info { - background-color: white; - text-decoration: none; - color: @brand-info; - &:hover, - &:focus, - &.focus { - color: white; - text-decoration: none; - opacity: 1; - } - &.disabled { - background-color: white; - text-decoration: none; - color: @brand-info; - opacity: .6; - } -} - -// Alternate buttons -// -------------------------------------------------- - -.btn-default { - .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border); -} - -.btn-primary { - .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border); -} - -// Success appears as green -.btn-success { - .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border); -} - -// Info appears as blue-green -.btn-info { - .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border); -} - -// Warning appears as orange -.btn-warning { - .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border); -} - -// Danger and error appear as red -.btn-danger { - .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border); -} - -.btn-group .btn-default { - border-bottom-width: 1px; - &.active { - border: 1px solid @brand-primary; - color: @brand-primary; - background: #F5F5F5; - } -} - -// Link buttons -// ------------------------- - -// Make a button look and behave like a link -.btn-link { - color: @link-color; - font-weight: normal; - border-radius: 0; - - &, - &:active, - &.active, - &[disabled], - fieldset[disabled] & { - background-color: transparent; - .box-shadow(none); - } - &, - &:hover, - &:focus, - &:active { - border-color: transparent; - } - &:hover, - &:focus { - color: @link-hover-color; - text-decoration: @link-hover-decoration; - background-color: transparent; - } - &[disabled], - fieldset[disabled] & { - &:hover, - &:focus { - color: @btn-link-disabled-color; - text-decoration: none; - } - } -} - -// Button Sizes -// -------------------------------------------------- - -.btn-lg { - // line-height: ensure even-numbered height of button next to large input - .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-bump-more; @line-height-large; @border-radius); -} - -.btn-sm { - // line-height: ensure proper height of button next to small input - .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius); - padding: 0.1rem .5rem .2rem; -} - -.btn-xs { - .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @border-radius); -} - -// Block button -// -------------------------------------------------- - -.btn-block { - display: block; - width: 100%; -} - -// Vertically space out multiple block buttons -.btn-block + .btn-block { - margin-top: 5px; -} - -// Specificity overrides -input[type="submit"], -input[type="reset"], -input[type="button"] { - &.btn-block { - width: 100%; - } -} - -.btn-file { - position: relative; - overflow: hidden; -} - -.btn-file input[type=file] { - position: absolute; - top: 0; - right: 0; - min-width: 100%; - min-height: 100%; - font-size: 100px; - text-align: right; - filter: alpha(opacity=0); - opacity: 0; - background: red; - cursor: inherit; - display: block; -} diff --git a/common/assets/styles/bootstrap/carousel.less b/common/assets/styles/bootstrap/carousel.less deleted file mode 100755 index f28ef789..00000000 --- a/common/assets/styles/bootstrap/carousel.less +++ /dev/null @@ -1,256 +0,0 @@ -// -// Carousel -// -------------------------------------------------- - -// Wrapper for the slide container and indicators -.carousel { - position: relative; -} - -.carousel-inner { - position: relative; - overflow: hidden; - width: 100%; - - > .item { - display: none; - position: relative; - .transition(.6s ease-in-out left); - - // Account for jankitude on images - > img, - > a > img { - &:extend(.img-responsive); - line-height: 1; - } - - // WebKit CSS3 transforms for supported devices - @media all and (transform-3d), (-webkit-transform-3d) { - .transition-transform(~'0.6s ease-in-out'); - .backface-visibility(~'hidden'); - .perspective(1000px); - - &.next, - &.active.right { - .translate3d(100%, 0, 0); - left: 0; - } - - &.prev, - &.active.left { - .translate3d(-100%, 0, 0); - left: 0; - } - - &.next.left, - &.prev.right, - &.active { - .translate3d(0, 0, 0); - left: 0; - } - } - } - - > .active, - > .next, - > .prev { - display: block; - } - - > .active { - left: 0; - } - - > .next, - > .prev { - position: absolute; - top: 0; - width: 100%; - } - - > .next { - left: 100%; - } - > .prev { - left: -100%; - } - > .next.left, - > .prev.right { - left: 0; - } - - > .active.left { - left: -100%; - } - > .active.right { - left: 100%; - } - -} - -// Left/right controls for nav -// --------------------------- - -.carousel-control { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: @carousel-control-width; - .opacity(@carousel-control-opacity); - font-size: @carousel-control-font-size; - color: @carousel-control-color; - text-align: center; - text-shadow: @carousel-text-shadow; - // We can't have this transition here because WebKit cancels the carousel - // animation if you trip this while in the middle of another animation. - - // Set gradients for backgrounds - &.left { - #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001)); - } - &.right { - left: auto; - right: 0; - #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5)); - } - - // Hover/focus state - &:hover, - &:focus { - outline: 0; - color: @carousel-control-color; - text-decoration: none; - .opacity(.9); - } - - // Toggles - .icon-prev, - .icon-next, - .glyphicon-chevron-left, - .glyphicon-chevron-right { - position: absolute; - top: 50%; - margin-top: -10px; - z-index: 5; - display: inline-block; - } - .icon-prev, - .glyphicon-chevron-left { - left: 50%; - margin-left: -10px; - } - .icon-next, - .glyphicon-chevron-right { - right: 50%; - margin-right: -10px; - } - .icon-prev, - .icon-next { - width: 20px; - height: 20px; - line-height: 1; - font-family: serif; - } - - .icon-prev { - &:before { - content: '\2039'; // SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039) - } - } - .icon-next { - &:before { - content: '\203a'; // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A) - } - } -} - -// Optional indicator pips -// -// Add an unordered list with the following class and add a list item for each -// slide your carousel holds. - -.carousel-indicators { - position: absolute; - bottom: 10px; - left: 50%; - z-index: 15; - width: 60%; - margin-left: -30%; - padding-left: 0; - list-style: none; - text-align: center; - - li { - display: inline-block; - width: 10px; - height: 10px; - margin: 1px; - text-indent: -999px; - border: 1px solid @carousel-indicator-border-color; - border-radius: 10px; - cursor: pointer; - } - .active { - margin: 0; - width: 12px; - height: 12px; - background-color: @carousel-indicator-active-bg; - } -} - -// Optional captions -// ----------------------------- -// Hidden by default for smaller viewports -.carousel-caption { - position: absolute; - left: 15%; - right: 15%; - bottom: 20px; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: @carousel-caption-color; - text-align: center; - text-shadow: @carousel-text-shadow; - & .btn { - text-shadow: none; // No shadow for button elements in carousel-caption - } -} - -// Scale up controls for tablets and up -@media screen and (min-width: @screen-sm-min) { - - // Scale up the controls a smidge - .carousel-control { - .glyphicon-chevron-left, - .glyphicon-chevron-right, - .icon-prev, - .icon-next { - width: 30px; - height: 30px; - margin-top: -15px; - font-size: 30px; - } - .glyphicon-chevron-left, - .icon-prev { - margin-left: -15px; - } - .glyphicon-chevron-right, - .icon-next { - margin-right: -15px; - } - } - - // Show and left align the captions - .carousel-caption { - left: 20%; - right: 20%; - padding-bottom: 30px; - } - - // Move up the indicators - .carousel-indicators { - bottom: 20px; - } -} diff --git a/common/assets/styles/bootstrap/close.less b/common/assets/styles/bootstrap/close.less deleted file mode 100755 index 76671b12..00000000 --- a/common/assets/styles/bootstrap/close.less +++ /dev/null @@ -1,33 +0,0 @@ -// -// Close icons -// -------------------------------------------------- - -.close { - float: right; - font-size: (@font-size-base * 1.5); - font-weight: @close-font-weight; - line-height: 1; - color: @close-color; - text-shadow: @close-text-shadow; - .opacity(.2); - - &:hover, - &:focus { - color: @close-color; - text-decoration: none; - cursor: pointer; - .opacity(.5); - } - - // Additional properties for button version - // iOS requires the button element instead of an anchor tag. - // If you want the anchor version, it requires `href="#"`. - // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile - button& { - padding: 0; - cursor: pointer; - background: transparent; - border: 0; - -webkit-appearance: none; - } -} diff --git a/common/assets/styles/bootstrap/code.less b/common/assets/styles/bootstrap/code.less deleted file mode 100755 index 329ef56a..00000000 --- a/common/assets/styles/bootstrap/code.less +++ /dev/null @@ -1,68 +0,0 @@ -// -// Code (inline and block) -// -------------------------------------------------- - -// Inline and block code styles -code, -kbd, -pre, -samp { - font-family: @font-family-monospace; -} - -// Inline code -code { - padding: 2px 4px; - font-size: 90%; - color: @code-color; - background-color: @code-bg; - border-radius: @border-radius; -} - -// User input typically entered via keyboard -kbd { - padding: 2px 4px; - font-size: 90%; - color: @kbd-color; - background-color: @kbd-bg; - border-radius: @border-radius; - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); - - kbd { - padding: 0; - font-size: 100%; - font-weight: bold; - box-shadow: none; - } -} - -// Blocks of code -pre { - display: block; - padding: ((@line-height-computed - 1) / 2); - margin: 0 0 (@line-height-computed / 2); - font-size: (@font-size-base - 1); // 14px to 13px - line-height: @line-height-base; - word-break: break-all; - word-wrap: break-word; - color: @pre-color; - background-color: @pre-bg; - border: 1px solid @pre-border-color; - border-radius: @border-radius; - - // Account for some code outputs that place code tags in pre tags - code { - padding: 0; - font-size: inherit; - color: inherit; - white-space: pre-wrap; - background-color: transparent; - border-radius: 0; - } -} - -// Enable scrollable blocks of code -.pre-scrollable { - max-height: @pre-scrollable-max-height; - overflow-y: scroll; -} diff --git a/common/assets/styles/bootstrap/component-animations.less b/common/assets/styles/bootstrap/component-animations.less deleted file mode 100755 index 97ca8e57..00000000 --- a/common/assets/styles/bootstrap/component-animations.less +++ /dev/null @@ -1,44 +0,0 @@ -// -// Component animations -// -------------------------------------------------- - -// Heads up! -// -// We don't use the `.opacity()` mixin here since it causes a bug with text -// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552. - -/* uncss:ignore */ -.fade { - opacity: 0; - .transition(opacity .15s linear); -} - -/* uncss:ignore */ -.fade.in { - opacity: 1; -} - -/* uncss:ignore */ -.collapse { - display: none; - - &.in { - display: block; - } - tr&.in { - display: table-row; - } - tbody&.in { - display: table-row-group; - } -} - -/* uncss:ignore */ -.collapsing { - position: relative; - height: 0; - overflow: hidden; - .transition-property(~"height, visibility"); - .transition-duration(.35s); - .transition-timing-function(ease); -} diff --git a/common/assets/styles/bootstrap/dropdowns.less b/common/assets/styles/bootstrap/dropdowns.less deleted file mode 100755 index ef88227e..00000000 --- a/common/assets/styles/bootstrap/dropdowns.less +++ /dev/null @@ -1,219 +0,0 @@ -// -// Dropdown menus -// -------------------------------------------------- - -// Dropdown arrow/caret -.caret { - display: inline-block; - width: 0; - height: 0; - margin-left: @space-sm; - vertical-align: middle; - border-top: @caret-width-base dashed; - border-right: @caret-width-base solid transparent; - border-left: @caret-width-base solid transparent; -} - -// The dropdown wrapper (div) -.dropup, -.dropdown { - position: relative; -} - -// Prevent the focus on the dropdown toggle when closing dropdowns -.dropdown-toggle { - margin-top: 0; -} - -.dropdown:hover { - .dropdown-menu { - display: block; - } -} - -// The dropdown menu (ul) -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: @zindex-dropdown; - float: left; - min-width: 160px; - padding: 4px 0; - margin: 2px 0 0; // override default ul - list-style: none; - font-size: @font-size-base; - text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer) - background-color: @dropdown-bg; - border-radius: @border-radius; - .box-shadow(0 6px 10px rgba(0, 0, 0, .175)); - background-clip: padding-box; - - // Aligns the dropdown menu to right - // - // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]` - &.pull-right { - right: 0; - left: auto; - } - - // Dividers (basically an hr) within the dropdown - .divider { - .nav-divider(@dropdown-divider-bg); - } - - > li { - margin: 0; - } - // Links within the dropdown menu - > li > a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: 300; - line-height: @line-height-base; - color: @dropdown-link-color; - white-space: nowrap; // prevent links from randomly breaking onto new lines - } -} - -// Hover/Focus state -.dropdown-menu > li > a { - &:hover, - &:focus { - text-decoration: none; - color: @dropdown-link-hover-color; - background-color: @dropdown-link-hover-bg; - } -} - -// Active state -.dropdown-menu > .active > a { - &, - &:hover, - &:focus { - color: @dropdown-link-active-color; - text-decoration: none; - outline: 0; - background-color: @dropdown-link-active-bg; - } -} - -// Disabled state -// -// Gray out text and ensure the hover/focus state remains gray - -.dropdown-menu > .disabled > a { - &, - &:hover, - &:focus { - color: @dropdown-link-disabled-color; - } - - // Nuke hover/focus effects - &:hover, - &:focus { - text-decoration: none; - background-color: transparent; - background-image: none; // Remove CSS gradient - .reset-filter(); - cursor: @cursor-disabled; - } -} - -// Open state for the dropdown -.open { - // Show the menu - > .dropdown-menu { - display: block; - } - - // Remove the outline when :focus is triggered - > a { - outline: 0; - } -} - -// Menu positioning -// -// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown -// menu with the parent. -.dropdown-menu-right { - left: auto; // Reset the default from `.dropdown-menu` - right: 0; -} - -// With v3, we enabled auto-flipping if you have a dropdown within a right -// aligned nav component. To enable the undoing of that, we provide an override -// to restore the default dropdown menu alignment. -// -// This is only for left-aligning a dropdown menu within a `.navbar-right` or -// `.pull-right` nav component. -.dropdown-menu-left { - left: 0; - right: auto; -} - -// Dropdown section headers -.dropdown-header { - display: block; - padding: 3px 20px; - font-size: @font-size-small; - line-height: @line-height-base; - color: @dropdown-header-color; - white-space: nowrap; // as with > li > a -} - -// Backdrop to catch body clicks on mobile, etc. -.dropdown-backdrop { - position: fixed; - left: 0; - right: 0; - bottom: 0; - top: 0; - z-index: (@zindex-dropdown - 10); -} - -// Right aligned dropdowns -.pull-right > .dropdown-menu { - right: 0; - left: auto; -} - -// Allow for dropdowns to go bottom up (aka, dropup-menu) -// -// Just add .dropup after the standard .dropdown class and you're set, bro. -// TODO: abstract this so that the navbar fixed styles are not placed here? - -.dropup, -.navbar-fixed-bottom .dropdown { - // Reverse the caret - .caret { - border-top: 0; - border-bottom: @caret-width-base solid; - content: ""; - } - // Different positioning for bottom up menu - .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 2px; - } -} - -// Component alignment -// -// Reiterate per navbar.less and the modified component alignment there. - -@media (min-width: @grid-float-breakpoint) { - .navbar-right { - .dropdown-menu { - .dropdown-menu-right(); - } - // Necessary for overrides of the default right aligned menu. - // Will remove come v4 in all likelihood. - .dropdown-menu-left { - .dropdown-menu-left(); - } - } -} diff --git a/common/assets/styles/bootstrap/forms.less b/common/assets/styles/bootstrap/forms.less deleted file mode 100755 index d5102f62..00000000 --- a/common/assets/styles/bootstrap/forms.less +++ /dev/null @@ -1,387 +0,0 @@ -// -// Forms -// -------------------------------------------------- - -// Normalize non-controls -// -// Restyle and baseline non-control form elements. - -fieldset { - padding: 0; - margin: 0; - border: 0; - // Chrome and Firefox set a `min-width: min-content;` on fieldsets, - // so we reset that to ensure it behaves more like a standard block element. - // See https://github.com/twbs/bootstrap/issues/12359. - min-width: 0; -} - -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: @line-height-computed; - font-size: (@font-size-base * 1.5); - line-height: inherit; - color: @legend-color; - border: 0; - border-bottom: 1px solid @legend-border-color; -} - -label { - display: inline-block; - margin-top: @space-sm; - margin-bottom: @space-xs; - font-weight: 500; - font-size: @font-size-bump; - small { - font-weight: 300; - font-size: 1em; - } -} - -// Normalize form controls -// -// While most of our form styles require extra classes, some basic normalization -// is required to ensure optimum display with or without those classes to better -// address browser inconsistencies. - -// Override content-box in Normalize (* isn't specific enough) -input[type="search"] { - .box-sizing(border-box); -} - -// Position radios and checkboxes better -input[type="radio"], -input[type="checkbox"] { - margin: 3px 0 0; - line-height: normal; -} - -input[type="file"] { - display: block; -} - -// Make range inputs behave like textual form controls -input[type="range"] { - display: block; - width: 100%; -} - -// Make multiple select elements height not fixed -select[multiple], -select[size] { - height: auto; -} - -// Focus for file, radio, and checkbox -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus { - .tab-focus(); -} - -// Adjust output element -output { - display: block; - padding-top: (@padding-base-vertical + 1); - font-size: @font-size-base; - line-height: @line-height-base; - color: @input-color; -} - -// Common form controls -label + .form-control, -label + input, -label + textarea, -.account-help-icon + .btn, -.account-help-icon + textarea, -.account-help-icon + input { - margin-top: 0; -} - -.form-control { - display: block; - width: 100%; - height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border) - padding: @padding-base-vertical @padding-base-horizontal; - font-size: @font-size-base; - line-height: @line-height-base; - color: @input-color; - background-color: @input-bg; - background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 - border: 1px solid @input-border; - border-radius: @border-radius; // Note: This has no effect on s in CSS. - margin-top: .5rem; - margin-bottom: .5rem; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - transition: @transition; - - &:focus { - border-color: @input-border-focus; - outline: 0; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 2px fadeout(@brand-primary, 50%); - } - - // Placeholder - .placeholder(); - - // Disabled and read-only inputs - // - // HTML5 says that controls under a fieldset > legend:first-child won't be - // disabled if the fieldset is disabled. Due to implementation difficulty, we - // don't honor that edge case; we style them as disabled anyway. - &[disabled], - &[readonly], - fieldset[disabled] & { - background-color: #efefef; - opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655 - cursor: text !important; - } - - &[disabled], - fieldset[disabled] & { - cursor: @cursor-disabled; - } - - // Reset height for `textarea`s - textarea& { - height: auto; - } -} - -input[readonly] { - background-color: #efefef; - cursor: text !important; -} - -// Search inputs in iOS -// -// This overrides the extra rounded corners on search inputs in iOS so that our -// `.form-control` class can properly style them. Note that this cannot simply -// be added to `.form-control` as it's not specific enough. For details, see -// https://github.com/twbs/bootstrap/issues/11586. - -input[type="search"] { - -webkit-appearance: none; -} - -// Special styles for iOS temporal inputs -// -// In Mobile Safari, setting `display: block` on temporal inputs causes the -// text within the input to become vertically misaligned. As a workaround, we -// set a pixel line-height that matches the given height of the input, but only -// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848 -// -// Note that as of 8.3, iOS doesn't support `datetime` or `week`. - -@media screen and (-webkit-min-device-pixel-ratio: 0) { - input[type="date"], - input[type="time"], - input[type="datetime-local"], - input[type="month"] { - &.form-control { - line-height: @input-height-base; - } - - &.input-sm, - .input-group-sm & { - line-height: @input-height-small; - } - - &.input-lg, - .input-group-lg & { - line-height: @input-height-large; - } - } -} - -// Form groups -// -// Designed to help with the organization and spacing of vertical forms. For -// horizontal forms, use the predefined grid classes. - -.form-group { - margin-top: @form-group-margin-bottom; - margin-bottom: @form-group-margin-bottom; - display: block; -} - -// Checkboxes and radios -// -// Indent the labels to position radios/checkboxes as hanging controls. - -.radio, -.checkbox { - position: relative; - display: block; - margin: 15px 0; - - label { - min-height: @line-height-computed; // Ensure the input doesn't jump when there is no text - padding-left: 20px; - padding-right: 15px; - margin-bottom: 0; - font-weight: normal; - cursor: pointer; - } -} - -.radio input[type="radio"], -.radio-inline input[type="radio"], -.checkbox input[type="checkbox"], -.checkbox-inline input[type="checkbox"] { - margin-left: -20px; -} - -input[type=radio] { - margin-right: 5px; -} - -// Radios and checkboxes on same line -.radio-inline, -.checkbox-inline { - position: relative; - display: inline-block; - padding-left: 20px; - margin-bottom: 0; - vertical-align: middle; - font-weight: normal; - cursor: pointer; -} - -.radio-inline + .radio-inline, -.checkbox-inline + .checkbox-inline { - margin-top: 0; - margin-left: 10px; // space out consecutive inline controls -} - -// Apply same disabled cursor tweak as for inputs -// Some special care is needed because Star - -// Import the fonts -@font-face { - font-family: 'Glyphicons Halflings'; - src: url('@{icon-font-path}@{icon-font-name}.eot'); - src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'), - url('@{icon-font-path}@{icon-font-name}.woff2') format('woff2'), - url('@{icon-font-path}@{icon-font-name}.woff') format('woff'), - url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'), - url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg'); -} - -// Catchall baseclass -.glyphicon { - position: relative; - top: 1px; - display: inline-block; - font-family: 'Glyphicons Halflings'; - font-style: normal; - font-weight: normal; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -// Individual icons -.glyphicon-asterisk { - &:before { - content: "\2a"; - } -} - -.glyphicon-plus { - &:before { - content: "\2b"; - } -} - -.glyphicon-euro, -.glyphicon-eur { - &:before { - content: "\20ac"; - } -} - -.glyphicon-minus { - &:before { - content: "\2212"; - } -} - -.glyphicon-cloud { - &:before { - content: "\2601"; - } -} - -.glyphicon-envelope { - &:before { - content: "\2709"; - } -} - -.glyphicon-pencil { - &:before { - content: "\270f"; - } -} - -.glyphicon-glass { - &:before { - content: "\e001"; - } -} - -.glyphicon-music { - &:before { - content: "\e002"; - } -} - -.glyphicon-search { - &:before { - content: "\e003"; - } -} - -.glyphicon-heart { - &:before { - content: "\e005"; - } -} - -.glyphicon-star { - &:before { - content: "\e006"; - } -} - -.glyphicon-star-empty { - &:before { - content: "\e007"; - } -} - -.glyphicon-user { - &:before { - content: "\e008"; - } -} - -.glyphicon-film { - &:before { - content: "\e009"; - } -} - -.glyphicon-th-large { - &:before { - content: "\e010"; - } -} - -.glyphicon-th { - &:before { - content: "\e011"; - } -} - -.glyphicon-th-list { - &:before { - content: "\e012"; - } -} - -.glyphicon-ok { - &:before { - content: "\e013"; - } -} - -.glyphicon-remove { - &:before { - content: "\e014"; - } -} - -.glyphicon-zoom-in { - &:before { - content: "\e015"; - } -} - -.glyphicon-zoom-out { - &:before { - content: "\e016"; - } -} - -.glyphicon-off { - &:before { - content: "\e017"; - } -} - -.glyphicon-signal { - &:before { - content: "\e018"; - } -} - -.glyphicon-cog { - &:before { - content: "\e019"; - } -} - -.glyphicon-trash { - &:before { - content: "\e020"; - } -} - -.glyphicon-home { - &:before { - content: "\e021"; - } -} - -.glyphicon-file { - &:before { - content: "\e022"; - } -} - -.glyphicon-time { - &:before { - content: "\e023"; - } -} - -.glyphicon-road { - &:before { - content: "\e024"; - } -} - -.glyphicon-download-alt { - &:before { - content: "\e025"; - } -} - -.glyphicon-download { - &:before { - content: "\e026"; - } -} - -.glyphicon-upload { - &:before { - content: "\e027"; - } -} - -.glyphicon-inbox { - &:before { - content: "\e028"; - } -} - -.glyphicon-play-circle { - &:before { - content: "\e029"; - } -} - -.glyphicon-repeat { - &:before { - content: "\e030"; - } -} - -.glyphicon-refresh { - &:before { - content: "\e031"; - } -} - -.glyphicon-list-alt { - &:before { - content: "\e032"; - } -} - -.glyphicon-lock { - &:before { - content: "\e033"; - } -} - -.glyphicon-flag { - &:before { - content: "\e034"; - } -} - -.glyphicon-headphones { - &:before { - content: "\e035"; - } -} - -.glyphicon-volume-off { - &:before { - content: "\e036"; - } -} - -.glyphicon-volume-down { - &:before { - content: "\e037"; - } -} - -.glyphicon-volume-up { - &:before { - content: "\e038"; - } -} - -.glyphicon-qrcode { - &:before { - content: "\e039"; - } -} - -.glyphicon-barcode { - &:before { - content: "\e040"; - } -} - -.glyphicon-tag { - &:before { - content: "\e041"; - } -} - -.glyphicon-tags { - &:before { - content: "\e042"; - } -} - -.glyphicon-book { - &:before { - content: "\e043"; - } -} - -.glyphicon-bookmark { - &:before { - content: "\e044"; - } -} - -.glyphicon-print { - &:before { - content: "\e045"; - } -} - -.glyphicon-camera { - &:before { - content: "\e046"; - } -} - -.glyphicon-font { - &:before { - content: "\e047"; - } -} - -.glyphicon-bold { - &:before { - content: "\e048"; - } -} - -.glyphicon-italic { - &:before { - content: "\e049"; - } -} - -.glyphicon-text-height { - &:before { - content: "\e050"; - } -} - -.glyphicon-text-width { - &:before { - content: "\e051"; - } -} - -.glyphicon-align-left { - &:before { - content: "\e052"; - } -} - -.glyphicon-align-center { - &:before { - content: "\e053"; - } -} - -.glyphicon-align-right { - &:before { - content: "\e054"; - } -} - -.glyphicon-align-justify { - &:before { - content: "\e055"; - } -} - -.glyphicon-list { - &:before { - content: "\e056"; - } -} - -.glyphicon-indent-left { - &:before { - content: "\e057"; - } -} - -.glyphicon-indent-right { - &:before { - content: "\e058"; - } -} - -.glyphicon-facetime-video { - &:before { - content: "\e059"; - } -} - -.glyphicon-picture { - &:before { - content: "\e060"; - } -} - -.glyphicon-map-marker { - &:before { - content: "\e062"; - } -} - -.glyphicon-adjust { - &:before { - content: "\e063"; - } -} - -.glyphicon-tint { - &:before { - content: "\e064"; - } -} - -.glyphicon-edit { - &:before { - content: "\e065"; - } -} - -.glyphicon-share { - &:before { - content: "\e066"; - } -} - -.glyphicon-check { - &:before { - content: "\e067"; - } -} - -.glyphicon-move { - &:before { - content: "\e068"; - } -} - -.glyphicon-step-backward { - &:before { - content: "\e069"; - } -} - -.glyphicon-fast-backward { - &:before { - content: "\e070"; - } -} - -.glyphicon-backward { - &:before { - content: "\e071"; - } -} - -.glyphicon-play { - &:before { - content: "\e072"; - } -} - -.glyphicon-pause { - &:before { - content: "\e073"; - } -} - -.glyphicon-stop { - &:before { - content: "\e074"; - } -} - -.glyphicon-forward { - &:before { - content: "\e075"; - } -} - -.glyphicon-fast-forward { - &:before { - content: "\e076"; - } -} - -.glyphicon-step-forward { - &:before { - content: "\e077"; - } -} - -.glyphicon-eject { - &:before { - content: "\e078"; - } -} - -.glyphicon-chevron-left { - &:before { - content: "\e079"; - } -} - -.glyphicon-chevron-right { - &:before { - content: "\e080"; - } -} - -.glyphicon-plus-sign { - &:before { - content: "\e081"; - } -} - -.glyphicon-minus-sign { - &:before { - content: "\e082"; - } -} - -.glyphicon-remove-sign { - &:before { - content: "\e083"; - } -} - -.glyphicon-ok-sign { - &:before { - content: "\e084"; - } -} - -.glyphicon-question-sign { - &:before { - content: "\e085"; - } -} - -.glyphicon-info-sign { - &:before { - content: "\e086"; - } -} - -.glyphicon-screenshot { - &:before { - content: "\e087"; - } -} - -.glyphicon-remove-circle { - &:before { - content: "\e088"; - } -} - -.glyphicon-ok-circle { - &:before { - content: "\e089"; - } -} - -.glyphicon-ban-circle { - &:before { - content: "\e090"; - } -} - -.glyphicon-arrow-left { - &:before { - content: "\e091"; - } -} - -.glyphicon-arrow-right { - &:before { - content: "\e092"; - } -} - -.glyphicon-arrow-up { - &:before { - content: "\e093"; - } -} - -.glyphicon-arrow-down { - &:before { - content: "\e094"; - } -} - -.glyphicon-share-alt { - &:before { - content: "\e095"; - } -} - -.glyphicon-resize-full { - &:before { - content: "\e096"; - } -} - -.glyphicon-resize-small { - &:before { - content: "\e097"; - } -} - -.glyphicon-exclamation-sign { - &:before { - content: "\e101"; - } -} - -.glyphicon-gift { - &:before { - content: "\e102"; - } -} - -.glyphicon-leaf { - &:before { - content: "\e103"; - } -} - -.glyphicon-fire { - &:before { - content: "\e104"; - } -} - -.glyphicon-eye-open { - &:before { - content: "\e105"; - } -} - -.glyphicon-eye-close { - &:before { - content: "\e106"; - } -} - -.glyphicon-warning-sign { - &:before { - content: "\e107"; - } -} - -.glyphicon-plane { - &:before { - content: "\e108"; - } -} - -.glyphicon-calendar { - &:before { - content: "\e109"; - } -} - -.glyphicon-random { - &:before { - content: "\e110"; - } -} - -.glyphicon-comment { - &:before { - content: "\e111"; - } -} - -.glyphicon-magnet { - &:before { - content: "\e112"; - } -} - -.glyphicon-chevron-up { - &:before { - content: "\e113"; - } -} - -.glyphicon-chevron-down { - &:before { - content: "\e114"; - } -} - -.glyphicon-retweet { - &:before { - content: "\e115"; - } -} - -.glyphicon-shopping-cart { - &:before { - content: "\e116"; - } -} - -.glyphicon-folder-close { - &:before { - content: "\e117"; - } -} - -.glyphicon-folder-open { - &:before { - content: "\e118"; - } -} - -.glyphicon-resize-vertical { - &:before { - content: "\e119"; - } -} - -.glyphicon-resize-horizontal { - &:before { - content: "\e120"; - } -} - -.glyphicon-hdd { - &:before { - content: "\e121"; - } -} - -.glyphicon-bullhorn { - &:before { - content: "\e122"; - } -} - -.glyphicon-bell { - &:before { - content: "\e123"; - } -} - -.glyphicon-certificate { - &:before { - content: "\e124"; - } -} - -.glyphicon-thumbs-up { - &:before { - content: "\e125"; - } -} - -.glyphicon-thumbs-down { - &:before { - content: "\e126"; - } -} - -.glyphicon-hand-right { - &:before { - content: "\e127"; - } -} - -.glyphicon-hand-left { - &:before { - content: "\e128"; - } -} - -.glyphicon-hand-up { - &:before { - content: "\e129"; - } -} - -.glyphicon-hand-down { - &:before { - content: "\e130"; - } -} - -.glyphicon-circle-arrow-right { - &:before { - content: "\e131"; - } -} - -.glyphicon-circle-arrow-left { - &:before { - content: "\e132"; - } -} - -.glyphicon-circle-arrow-up { - &:before { - content: "\e133"; - } -} - -.glyphicon-circle-arrow-down { - &:before { - content: "\e134"; - } -} - -.glyphicon-globe { - &:before { - content: "\e135"; - } -} - -.glyphicon-wrench { - &:before { - content: "\e136"; - } -} - -.glyphicon-tasks { - &:before { - content: "\e137"; - } -} - -.glyphicon-filter { - &:before { - content: "\e138"; - } -} - -.glyphicon-briefcase { - &:before { - content: "\e139"; - } -} - -.glyphicon-fullscreen { - &:before { - content: "\e140"; - } -} - -.glyphicon-dashboard { - &:before { - content: "\e141"; - } -} - -.glyphicon-paperclip { - &:before { - content: "\e142"; - } -} - -.glyphicon-heart-empty { - &:before { - content: "\e143"; - } -} - -.glyphicon-link { - &:before { - content: "\e144"; - } -} - -.glyphicon-phone { - &:before { - content: "\e145"; - } -} - -.glyphicon-pushpin { - &:before { - content: "\e146"; - } -} - -.glyphicon-usd { - &:before { - content: "\e148"; - } -} - -.glyphicon-gbp { - &:before { - content: "\e149"; - } -} - -.glyphicon-sort { - &:before { - content: "\e150"; - } -} - -.glyphicon-sort-by-alphabet { - &:before { - content: "\e151"; - } -} - -.glyphicon-sort-by-alphabet-alt { - &:before { - content: "\e152"; - } -} - -.glyphicon-sort-by-order { - &:before { - content: "\e153"; - } -} - -.glyphicon-sort-by-order-alt { - &:before { - content: "\e154"; - } -} - -.glyphicon-sort-by-attributes { - &:before { - content: "\e155"; - } -} - -.glyphicon-sort-by-attributes-alt { - &:before { - content: "\e156"; - } -} - -.glyphicon-unchecked { - &:before { - content: "\e157"; - } -} - -.glyphicon-expand { - &:before { - content: "\e158"; - } -} - -.glyphicon-collapse-down { - &:before { - content: "\e159"; - } -} - -.glyphicon-collapse-up { - &:before { - content: "\e160"; - } -} - -.glyphicon-log-in { - &:before { - content: "\e161"; - } -} - -.glyphicon-flash { - &:before { - content: "\e162"; - } -} - -.glyphicon-log-out { - &:before { - content: "\e163"; - } -} - -.glyphicon-new-window { - &:before { - content: "\e164"; - } -} - -.glyphicon-record { - &:before { - content: "\e165"; - } -} - -.glyphicon-save { - &:before { - content: "\e166"; - } -} - -.glyphicon-open { - &:before { - content: "\e167"; - } -} - -.glyphicon-saved { - &:before { - content: "\e168"; - } -} - -.glyphicon-import { - &:before { - content: "\e169"; - } -} - -.glyphicon-export { - &:before { - content: "\e170"; - } -} - -.glyphicon-send { - &:before { - content: "\e171"; - } -} - -.glyphicon-floppy-disk { - &:before { - content: "\e172"; - } -} - -.glyphicon-floppy-saved { - &:before { - content: "\e173"; - } -} - -.glyphicon-floppy-remove { - &:before { - content: "\e174"; - } -} - -.glyphicon-floppy-save { - &:before { - content: "\e175"; - } -} - -.glyphicon-floppy-open { - &:before { - content: "\e176"; - } -} - -.glyphicon-credit-card { - &:before { - content: "\e177"; - } -} - -.glyphicon-transfer { - &:before { - content: "\e178"; - } -} - -.glyphicon-cutlery { - &:before { - content: "\e179"; - } -} - -.glyphicon-header { - &:before { - content: "\e180"; - } -} - -.glyphicon-compressed { - &:before { - content: "\e181"; - } -} - -.glyphicon-earphone { - &:before { - content: "\e182"; - } -} - -.glyphicon-phone-alt { - &:before { - content: "\e183"; - } -} - -.glyphicon-tower { - &:before { - content: "\e184"; - } -} - -.glyphicon-stats { - &:before { - content: "\e185"; - } -} - -.glyphicon-sd-video { - &:before { - content: "\e186"; - } -} - -.glyphicon-hd-video { - &:before { - content: "\e187"; - } -} - -.glyphicon-subtitles { - &:before { - content: "\e188"; - } -} - -.glyphicon-sound-stereo { - &:before { - content: "\e189"; - } -} - -.glyphicon-sound-dolby { - &:before { - content: "\e190"; - } -} - -.glyphicon-sound-5-1 { - &:before { - content: "\e191"; - } -} - -.glyphicon-sound-6-1 { - &:before { - content: "\e192"; - } -} - -.glyphicon-sound-7-1 { - &:before { - content: "\e193"; - } -} - -.glyphicon-copyright-mark { - &:before { - content: "\e194"; - } -} - -.glyphicon-registration-mark { - &:before { - content: "\e195"; - } -} - -.glyphicon-cloud-download { - &:before { - content: "\e197"; - } -} - -.glyphicon-cloud-upload { - &:before { - content: "\e198"; - } -} - -.glyphicon-tree-conifer { - &:before { - content: "\e199"; - } -} - -.glyphicon-tree-deciduous { - &:before { - content: "\e200"; - } -} - -.glyphicon-cd { - &:before { - content: "\e201"; - } -} - -.glyphicon-save-file { - &:before { - content: "\e202"; - } -} - -.glyphicon-open-file { - &:before { - content: "\e203"; - } -} - -.glyphicon-level-up { - &:before { - content: "\e204"; - } -} - -.glyphicon-copy { - &:before { - content: "\e205"; - } -} - -.glyphicon-paste { - &:before { - content: "\e206"; - } -} - -// The following 2 Glyphicons are omitted for the time being because -// they currently use Unicode codepoints that are outside the -// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle -// non-BMP codepoints in CSS string escapes, and thus can't display these two icons. -// Notably, the bug affects some older versions of the Android Browser. -// More info: https://github.com/twbs/bootstrap/issues/10106 -// .glyphicon-door { &:before { content: "\1f6aa"; } } -// .glyphicon-key { &:before { content: "\1f511"; } } -.glyphicon-alert { - &:before { - content: "\e209"; - } -} - -.glyphicon-equalizer { - &:before { - content: "\e210"; - } -} - -.glyphicon-king { - &:before { - content: "\e211"; - } -} - -.glyphicon-queen { - &:before { - content: "\e212"; - } -} - -.glyphicon-pawn { - &:before { - content: "\e213"; - } -} - -.glyphicon-bishop { - &:before { - content: "\e214"; - } -} - -.glyphicon-knight { - &:before { - content: "\e215"; - } -} - -.glyphicon-baby-formula { - &:before { - content: "\e216"; - } -} - -.glyphicon-tent { - &:before { - content: "\26fa"; - } -} - -.glyphicon-blackboard { - &:before { - content: "\e218"; - } -} - -.glyphicon-bed { - &:before { - content: "\e219"; - } -} - -.glyphicon-apple { - &:before { - content: "\f8ff"; - } -} - -.glyphicon-erase { - &:before { - content: "\e221"; - } -} - -.glyphicon-hourglass { - &:before { - content: "\231b"; - } -} - -.glyphicon-lamp { - &:before { - content: "\e223"; - } -} - -.glyphicon-duplicate { - &:before { - content: "\e224"; - } -} - -.glyphicon-piggy-bank { - &:before { - content: "\e225"; - } -} - -.glyphicon-scissors { - &:before { - content: "\e226"; - } -} - -.glyphicon-bitcoin { - &:before { - content: "\e227"; - } -} - -.glyphicon-btc { - &:before { - content: "\e227"; - } -} - -.glyphicon-xbt { - &:before { - content: "\e227"; - } -} - -.glyphicon-yen { - &:before { - content: "\00a5"; - } -} - -.glyphicon-jpy { - &:before { - content: "\00a5"; - } -} - -.glyphicon-ruble { - &:before { - content: "\20bd"; - } -} - -.glyphicon-rub { - &:before { - content: "\20bd"; - } -} - -.glyphicon-scale { - &:before { - content: "\e230"; - } -} - -.glyphicon-ice-lolly { - &:before { - content: "\e231"; - } -} - -.glyphicon-ice-lolly-tasted { - &:before { - content: "\e232"; - } -} - -.glyphicon-education { - &:before { - content: "\e233"; - } -} - -.glyphicon-option-horizontal { - &:before { - content: "\e234"; - } -} - -.glyphicon-option-vertical { - &:before { - content: "\e235"; - } -} - -.glyphicon-menu-hamburger { - &:before { - content: "\e236"; - } -} - -.glyphicon-modal-window { - &:before { - content: "\e237"; - } -} - -.glyphicon-oil { - &:before { - content: "\e238"; - } -} - -.glyphicon-grain { - &:before { - content: "\e239"; - } -} - -.glyphicon-sunglasses { - &:before { - content: "\e240"; - } -} - -.glyphicon-text-size { - &:before { - content: "\e241"; - } -} - -.glyphicon-text-color { - &:before { - content: "\e242"; - } -} - -.glyphicon-text-background { - &:before { - content: "\e243"; - } -} - -.glyphicon-object-align-top { - &:before { - content: "\e244"; - } -} - -.glyphicon-object-align-bottom { - &:before { - content: "\e245"; - } -} - -.glyphicon-object-align-horizontal { - &:before { - content: "\e246"; - } -} - -.glyphicon-object-align-left { - &:before { - content: "\e247"; - } -} - -.glyphicon-object-align-vertical { - &:before { - content: "\e248"; - } -} - -.glyphicon-object-align-right { - &:before { - content: "\e249"; - } -} - -.glyphicon-triangle-right { - &:before { - content: "\e250"; - } -} - -.glyphicon-triangle-left { - &:before { - content: "\e251"; - } -} - -.glyphicon-triangle-bottom { - &:before { - content: "\e252"; - } -} - -.glyphicon-triangle-top { - &:before { - content: "\e253"; - } -} - -.glyphicon-console { - &:before { - content: "\e254"; - } -} - -.glyphicon-superscript { - &:before { - content: "\e255"; - } -} - -.glyphicon-subscript { - &:before { - content: "\e256"; - } -} - -.glyphicon-menu-left { - &:before { - content: "\e257"; - } -} - -.glyphicon-menu-right { - &:before { - content: "\e258"; - } -} - -.glyphicon-menu-down { - &:before { - content: "\e259"; - } -} - -.glyphicon-menu-up { - &:before { - content: "\e260"; - } -} diff --git a/common/assets/styles/bootstrap/grid.less b/common/assets/styles/bootstrap/grid.less deleted file mode 100755 index d0c2a7cc..00000000 --- a/common/assets/styles/bootstrap/grid.less +++ /dev/null @@ -1,76 +0,0 @@ -// -// Grid system -// -------------------------------------------------- - -// Container widths -// -// Set the container width, and override it for fixed navbars in media queries. - -.container { - width: 100%; - max-width: 1400px; - margin-right: auto; - margin-left: auto; - padding-left: @cont-padding; - padding-right: @cont-padding; - &:extend(.clearfix all); - @media (min-width: @screen-sm-min) { - padding-left: @cont-padding-lg; - padding-right: @cont-padding-lg; - } -} - -// Fluid container -// -// Utilizes the mixin meant for fixed width containers, but without any defined -// width for fluid, full width layouts. - -.container-fluid { - .container-fixed(); -} - -// Row -// -// Rows contain and clear the floats of your columns. - -.row { - .make-row(); -} - -// Columns -// -// Common styles for small and large grid columns - -.make-grid-columns(); - -// Extra small grid -// -// Columns, offsets, pushes, and pulls for extra small devices like -// smartphones. - -.make-grid(xs); - -// Small grid -// -// Columns, offsets, pushes, and pulls for the small device range, from phones -// to tablets. - -@media (min-width: @screen-sm-min) { - .make-grid(sm); -} - -// Medium grid -// -// Columns, offsets, pushes, and pulls for the desktop device range. - -@media (min-width: @screen-md-min) { - .make-grid(md); -} - -// Large grid -// -// Columns, offsets, pushes, and pulls for the large desktop device range. - -@media (min-width: @screen-lg-min) { - .make-grid(lg); -} diff --git a/common/assets/styles/bootstrap/input-groups.less b/common/assets/styles/bootstrap/input-groups.less deleted file mode 100755 index aa66515e..00000000 --- a/common/assets/styles/bootstrap/input-groups.less +++ /dev/null @@ -1,167 +0,0 @@ -// -// Input groups -// -------------------------------------------------- - -// Base styles -// ------------------------- -.input-group { - position: relative; - display: table; - border-collapse: separate; - > * { - margin-bottom: 0; - margin-top: 0; - } - - &[class*="col-"] { - float: none; - padding-left: 0; - padding-right: 0; - } - - .form-control { - position: relative; - z-index: 2; - float: left; - width: 100%; - } - .dropdown-toggle { - padding-right: 20px; - padding-left: 20px; - } -} - -// Sizing options - -.input-group-lg > .form-control, -.input-group-lg > .input-group-addon, -.input-group-lg > .input-group-btn > .btn { - .input-lg(); -} - -.input-group-sm > .form-control, -.input-group-sm > .input-group-addon, -.input-group-sm > .input-group-btn > .btn { - .input-sm(); -} - -// Display as table-cell -// ------------------------- -.input-group-addon, -.input-group-btn, -.input-group .form-control { - display: table-cell; - - &:not(:first-child):not(:last-child) { - border-radius: 0; - } -} - -// Addon and addon wrapper for buttons -.input-group-addon, -.input-group-btn { - width: 1%; - white-space: nowrap; - vertical-align: middle; // Match the inputs -} - -// Text input groups -// ------------------------- -.input-group-addon { - padding: @padding-base-vertical @padding-base-horizontal; - font-size: @font-size-base; - font-weight: normal; - line-height: 1; - color: @input-color; - text-align: center; - background-color: @input-group-addon-bg; - border: 1px solid @input-group-addon-border-color; - border-radius: @border-radius; - - // Sizing - &.input-sm { - padding: @padding-small-vertical @padding-small-horizontal; - font-size: @font-size-small; - border-radius: @border-radius; - } - &.input-lg { - padding: @padding-large-vertical @padding-large-horizontal; - font-size: @font-size-large; - border-radius: @border-radius; - } - - // Nuke default margins from checkboxes and radios to vertically center within. - input[type="radio"], - input[type="checkbox"] { - margin-top: 0; - } -} - -// Reset rounded corners -.input-group .form-control:first-child, -.input-group-addon:first-child, -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group > .btn, -.input-group-btn:first-child > .dropdown-toggle, -.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), -.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { - .border-right-radius(0); -} - -.input-group-addon:first-child { - border-right: 0; -} - -.input-group .form-control:last-child, -.input-group-addon:last-child, -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group > .btn, -.input-group-btn:last-child > .dropdown-toggle, -.input-group-btn:first-child > .btn:not(:first-child), -.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { - .border-left-radius(0); -} - -.input-group-addon:last-child { - border-left: 0; -} - -// Button input groups -// ------------------------- -.input-group-btn { - position: relative; - font-size: 0; - white-space: nowrap; - - // Negative margin for spacing, position for bringing hovered/focused/actived - // element above the siblings. - > .btn { - position: relative; - margin-bottom: 0; - margin-top: 0; - + .btn { - margin-left: -1px; - } - // Bring the "active" button to the front - &:hover, - &:focus, - &:active { - z-index: 2; - } - } - - // Negative margin to only have a 1px border between the two - &:first-child { - > .btn, - > .btn-group { - margin-right: -1px; - } - } - &:last-child { - > .btn, - > .btn-group { - z-index: 2; - margin-left: -1px; - } - } -} diff --git a/common/assets/styles/bootstrap/jumbotron.less b/common/assets/styles/bootstrap/jumbotron.less deleted file mode 100755 index 565b511d..00000000 --- a/common/assets/styles/bootstrap/jumbotron.less +++ /dev/null @@ -1,51 +0,0 @@ -// -// Jumbotron -// -------------------------------------------------- - -.jumbotron { - padding-top: @jumbotron-padding; - padding-bottom: @jumbotron-padding; - margin-bottom: @jumbotron-padding; - color: @jumbotron-color; - background-color: @jumbotron-bg; - - h1, - .h1 { - color: @jumbotron-heading-color; - } - - p { - margin-bottom: (@jumbotron-padding / 2); - font-size: @jumbotron-font-size; - font-weight: 200; - } - - > hr { - border-top-color: darken(@jumbotron-bg, 10%); - } - - .container &, - .container-fluid & { - border-radius: @border-radius; // Only round corners at higher resolutions if contained in a container - } - - .container { - max-width: 100%; - } - - @media screen and (min-width: @screen-sm-min) { - padding-top: (@jumbotron-padding * 1.6); - padding-bottom: (@jumbotron-padding * 1.6); - - .container &, - .container-fluid & { - padding-left: (@jumbotron-padding * 2); - padding-right: (@jumbotron-padding * 2); - } - - h1, - .h1 { - font-size: @jumbotron-heading-font-size; - } - } -} diff --git a/common/assets/styles/bootstrap/list-group.less b/common/assets/styles/bootstrap/list-group.less deleted file mode 100755 index f11b586e..00000000 --- a/common/assets/styles/bootstrap/list-group.less +++ /dev/null @@ -1,126 +0,0 @@ -// -// List groups -// -------------------------------------------------- - -// Base class -// -// Easily usable on