1
0
mirror of https://github.com/bitwarden/desktop.git synced 2024-09-27 03:53:00 +02:00
bitwarden-desktop/src/scss/styles.scss

878 lines
20 KiB
SCSS
Raw Normal View History

2018-01-22 19:27:57 +01:00
$fa-font-path: "~font-awesome/fonts";
@import "~font-awesome/scss/font-awesome.scss";
$font-family-sans-serif: 'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;
2018-01-25 05:26:40 +01:00
$font-family-monospace: Menlo, Monaco, Consolas, "Courier New", monospace;
2018-01-22 19:27:57 +01:00
$font-size-base: 14px;
$font-size-large: 18px;
$font-size-small: 12px;
$text-color: #000000;
$background-color: #efeff4;
$border-color: #f0f0f0;
$border-color-dark: #ddd;
$list-item-hover: #fbfbfb;
$list-icon-color: #c7c7cd;
2018-01-25 03:31:27 +01:00
$border-radius: 3px;
2018-01-22 19:27:57 +01:00
$gray: #555;
$gray-light: #777;
$text-muted: $gray-light;
$brand-primary: #3c8dbc;
$brand-danger: #dd4b39;
$brand-success: #00a65a;
$brand-info: #555555;
$brand-warning: #f39c12;
$brand-primary-accent: #286090;
$background-color: white;
$background-color-alt: #f9fafc;
2018-01-24 02:27:17 +01:00
$background-color-alt2: #ecf0f5;
2018-01-22 19:27:57 +01:00
2018-01-25 03:31:27 +01:00
$box-background-color: $background-color;
$box-background-hover-color: $background-color-alt;
$box-border-color: $border-color;
2018-01-25 23:45:21 +01:00
$button-border-color: darken($border-color-dark, 12%);
$button-backgound-color: white;
$button-color: lighten($text-color, 40%);
$button-color-primary: darken($brand-primary, 8%);
$button-color-danger: darken($brand-danger, 10%);
2018-01-22 19:27:57 +01:00
* {
2018-01-21 05:45:22 +01:00
box-sizing: border-box;
}
2018-01-22 19:27:57 +01:00
div::-webkit-scrollbar {
2018-01-21 05:45:22 +01:00
width: 10px;
height: 10px;
2018-01-23 23:06:47 +01:00
}
div::-webkit-scrollbar-track {
background-color: transparent;
2018-01-21 05:45:22 +01:00
}
2018-01-22 19:27:57 +01:00
div::-webkit-scrollbar-thumb {
2018-01-23 23:06:47 +01:00
background-color: rgba(100,100,100,.2);
border-radius: 10px;
margin-right: 1px;
2018-01-24 04:21:14 +01:00
&:hover {
background-color: rgba(100,100,100,.4);
}
2018-01-21 05:45:22 +01:00
}
html, body {
2018-01-21 03:09:04 +01:00
margin: 0;
padding: 0;
height: 100%;
2018-01-22 19:27:57 +01:00
background-color: $background-color;
2018-01-21 05:47:47 +01:00
overflow: hidden;
2018-01-22 19:27:57 +01:00
font-family: $font-family-sans-serif;
font-size: $font-size-base;
color: $text-color;
2018-01-26 04:54:09 +01:00
line-height: 1.42857143;
2018-01-22 19:27:57 +01:00
}
2018-01-24 02:27:17 +01:00
body {
border-top: 1px solid $border-color-dark;
}
2018-01-22 19:27:57 +01:00
h1, h2, h3, h4, h5, h6 {
font-family: $font-family-sans-serif;
margin: 0;
padding: 0;
}
a {
color: $brand-primary;
text-decoration: none;
2018-01-21 05:45:22 +01:00
}
2018-01-25 05:26:40 +01:00
.monospaced {
font-family: $font-family-monospace;
}
2018-01-26 04:54:09 +01:00
.sr-only {
position: absolute !important;
width: 1px !important;
height: 1px !important;
padding: 0 !important;
margin: -1px !important;
overflow: hidden !important;
clip: rect(0, 0, 0, 0) !important;
border: 0 !important;
}
input, select, textarea, button {
font-size: $font-size-base;
}
2018-01-26 04:59:41 +01:00
textarea {
resize: vertical;
}
2018-01-21 05:45:22 +01:00
#vault {
height: 100vh;
display: flex;
2018-01-24 05:05:23 +01:00
#groupings {
2018-01-22 19:27:57 +01:00
background-color: $background-color-alt;
2018-01-21 05:45:22 +01:00
width: 15%;
min-width: 175px;
max-width: 250px;
2018-01-22 19:27:57 +01:00
border-right: 1px solid $border-color-dark;
2018-01-23 23:39:37 +01:00
2018-01-22 19:27:57 +01:00
h2 {
font-size: $font-size-base;
font-weight: bold;
margin-bottom: 5px;
}
2018-01-24 02:27:17 +01:00
ul:not(.fa-ul) {
2018-01-22 19:27:57 +01:00
li {
margin: 0;
padding: 0;
2018-01-23 23:39:37 +01:00
list-style: none;
2018-01-24 02:27:17 +01:00
}
}
ul.fa-ul {
li {
.fa-li {
left: -11px;
top: 8px;
}
2018-01-21 05:45:22 +01:00
2018-01-24 02:27:17 +01:00
a {
padding-left: 12px;
}
}
}
ul {
padding: 0;
margin: 0 0 15px 0;
li {
2018-01-22 19:27:57 +01:00
a {
display: block;
padding: 5px 0;
color: $text-color;
}
}
2018-01-21 05:45:22 +01:00
}
}
#items {
2018-01-22 19:27:57 +01:00
background-color: $background-color;
2018-01-21 05:45:22 +01:00
width: 25%;
min-width: 200px;
max-width: 350px;
2018-01-22 19:27:57 +01:00
border-right: 1px solid $border-color-dark;
2018-01-21 05:45:22 +01:00
}
#details {
2018-01-24 02:27:17 +01:00
background-color: $background-color-alt2;
2018-01-21 05:45:22 +01:00
flex: 1;
min-width: 400px;
}
2018-01-24 05:05:23 +01:00
#groupings, #items, #details {
2018-01-21 05:45:22 +01:00
display: flex;
flex-direction: column;
2018-01-24 04:57:24 +01:00
.inner-content {
padding: 10px 15px;
}
2018-01-21 05:45:22 +01:00
}
.header {
2018-01-22 19:27:57 +01:00
min-height: 44px;
max-height: 44px;
background-color: $brand-primary;
color: white;
text-align: center;
overflow: hidden;
2018-01-21 05:45:22 +01:00
flex: 0 0 auto;
2018-01-22 19:27:57 +01:00
a, button {
color: white !important;
text-decoration: none;
background: none;
&:hover, &:focus {
background-color: rgba(255, 255, 255, 0.1);
}
&:hover {
text-decoration: none;
}
&:focus {
text-decoration: underline;
}
}
.title {
font-weight: bold;
display: block;
padding: 12px 0;
text-align: center;
}
.left {
display: block;
position: absolute;
left: 0;
text-align: left;
a, button {
padding: 12px 10px;
display: block;
float: left;
}
.fa-spinner {
padding: 15px;
display: block;
float: left;
}
}
.right {
display: block;
right: 0;
position: absolute;
z-index: 99999;
a, button {
padding: 12px 10px;
display: block;
float: right;
}
.fa-spinner {
padding: 15px;
display: block;
float: right;
}
}
&.header-search {
.left, .right, .search {
display: table-cell;
position: relative;
}
.search {
padding: 0 7px;
width: 100%;
text-align: left;
position: relative;
.fa-search {
position: absolute;
top: 15px;
left: 15px;
color: lighten($brand-primary, 30%);
}
input {
width: 100%;
margin: 0;
float: none;
background: darken($brand-primary, 8%);
border: none;
color: white;
padding: 5px 10px 5px 30px;
2018-01-25 03:31:27 +01:00
border-radius: $border-radius;
2018-01-22 19:27:57 +01:00
&:focus {
2018-01-25 03:31:27 +01:00
border-radius: $border-radius;
2018-01-22 19:27:57 +01:00
outline: none;
background: darken($brand-primary, 10%);
}
&::-webkit-input-placeholder {
color: lighten($brand-primary, 35%);
}
}
}
a {
white-space: nowrap;
float: none;
}
}
2018-01-21 05:45:22 +01:00
}
.content {
flex: 1 1 auto;
position: relative;
2018-01-21 05:47:47 +01:00
overflow: auto;
2018-01-21 05:45:22 +01:00
}
.footer {
height: 50px;
2018-01-22 19:27:57 +01:00
background-color: $background-color-alt;
2018-01-21 05:45:22 +01:00
flex: 0 0 auto;
2018-01-22 19:27:57 +01:00
border-top: 1px solid $border-color-dark;
2018-01-25 23:45:21 +01:00
display: flex;
align-items: center;
padding: 0 15px;
button {
background-color: $button-backgound-color;
border-radius: $border-radius;
padding: 7px 15px;
border: 1px solid $button-border-color;
2018-01-26 00:00:03 +01:00
margin-right: 10px;
2018-01-25 23:45:21 +01:00
font-size: $font-size-base;
color: $button-color;
2018-01-26 00:00:03 +01:00
&:hover {
cursor: pointer;
background-color: darken($button-backgound-color, 1.5%);
}
2018-01-25 23:45:21 +01:00
&.primary {
color: $button-color-primary;
}
&.danger {
color: $button-color-danger;
}
&.block {
display: block;
width: 100%;
}
&.right {
margin-left: auto;
}
&:last-child {
margin-right: 0;
}
}
2018-01-22 19:27:57 +01:00
}
}
.list {
.list-grouped {
.list-grouped-header {
background-color: transparent;
padding: 10px 10px;
color: $gray-light;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
small {
float: right;
}
}
}
.list-section {
padding-bottom: 10px;
&:first-child {
padding-top: 10px;
}
.list-section-header {
background-color: transparent;
padding: 5px 10px;
color: $gray-light;
text-transform: uppercase;
font-size: ($font-size-base - 1);
label {
font-weight: normal;
}
span {
float: right;
}
}
.list-section-items {
border-top: 1px solid $border-color-dark;
border-bottom: 1px solid $border-color-dark;
}
.list-section-footer {
padding: 5px 10px;
font-size: $font-size-small;
color: $gray-light;
}
}
.list-grouped-item, .list-section-item {
display: block;
padding: 10px 10px;
background-color: white;
text-decoration: none;
color: $text-color;
position: relative;
z-index: 1;
&:not(.pre) {
&:after {
content: "";
display: table;
clear: both;
}
}
&.text-primary {
color: $brand-primary !important;
}
&.text-danger {
color: $brand-danger !important;
}
&:not(.wrap) {
.text, .detail {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
&:before {
content: "";
position: absolute;
right: 0;
bottom: 0;
height: 1px;
width: calc(100% - 10px);
border-bottom: 1px solid $border-color;
}
&:last-child {
&:before {
border: none;
height: 0;
}
}
&:hover, &:focus, &.active {
background-color: $list-item-hover;
}
&:not(:hover):focus {
border-left: 5px solid $brand-primary;
padding-left: 5px;
}
.leading-icon {
font-size: 35px;
float: left;
display: inline-block;
margin: 0 8px 5px 0;
}
.text {
display: block;
color: $text-color;
}
.detail {
font-size: $font-size-small;
color: $gray-light;
display: block;
}
.item-label {
font-size: $font-size-small;
color: $gray-light;
display: block;
width: 100%;
font-weight: normal;
margin-bottom: 5px;
}
&.list-section-item-table {
display: table;
width: 100%;
}
.action-button {
padding: 8px 10px 8px 5px;
display: table-cell;
width: 20px;
vertical-align: middle;
&.text-danger {
color: $brand-danger !important;
}
}
.action-button-content {
display: table-cell;
vertical-align: middle;
}
.field-type {
margin: 5px 0 0 27px;
width: calc(100% - 27px);
}
.icon {
display: flex;
justify-content: center;
align-items: center;
float: left;
height: 36px;
width: 34px;
margin-left: -5px;
color: $text-muted;
img {
2018-01-25 03:31:27 +01:00
border-radius: $border-radius;
2018-01-22 19:27:57 +01:00
max-height: 20px;
max-width: 20px;
}
&.single-line {
height: initial;
display: block;
text-align: center;
}
}
.action-buttons {
float: right;
.btn-list {
float: left;
cursor: pointer;
padding: 10px 8px;
background: none;
border: none;
color: $brand-primary;
&:hover, &:focus {
color: darken($brand-primary, 10%);
}
&.disabled {
color: $list-icon-color;
&:hover {
color: $list-icon-color;
}
}
&:last-child {
padding-right: 2px !important;
}
}
}
.fa-chevron-right, .right-icon {
float: right;
margin-top: 4px;
color: $list-icon-color;
}
.item-sub-label {
float: right;
display: block;
margin-right: 15px;
color: $gray-light;
}
small.item-sub-label {
margin-top: 2px;
}
&.condensed {
padding: 3px 10px;
.action-buttons {
.btn-list {
padding: 8px 5px;
}
}
&:not(:hover):focus {
padding-left: 5px;
}
}
&.wrap {
overflow-wrap: break-word;
}
&.flex {
display: flex;
}
.flex-grow {
flex-grow: 1;
}
}
}
.list-no-selection {
.list-grouped-item:not(.list-allow-selection), .list-section-item:not(.list-allow-selection) {
&:hover {
background-color: white;
}
2018-01-21 05:45:22 +01:00
}
2018-01-21 03:09:04 +01:00
}
2018-01-24 04:57:24 +01:00
.box {
min-width: 400px;
max-width: 550px;
width: 100%;
2018-01-25 05:26:40 +01:00
margin: 30px auto 0 auto;
&:first-child {
margin-top: 10px;
}
2018-01-24 04:57:24 +01:00
2018-01-26 04:54:09 +01:00
&:last-child {
margin-bottom: 30px;
}
2018-01-24 04:57:24 +01:00
.box-header {
margin: 0 10px 5px 10px;
color: $gray-light;
text-transform: uppercase;
}
.box-content {
2018-01-25 03:31:27 +01:00
background: $box-background-color;
border-radius: $border-radius;
2018-01-25 05:26:40 +01:00
box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14), 0 3px 1px -2px rgba(0,0,0,0.12), 0 1px 5px 0 rgba(0,0,0,0.2);
2018-01-24 04:57:24 +01:00
.box-content-row {
padding: 10px 15px;
position: relative;
z-index: 1;
2018-01-25 20:25:44 +01:00
display: block;
color: $text-color;
overflow-wrap: break-word;
2018-01-24 04:57:24 +01:00
&:before {
content: "";
position: absolute;
right: 0;
bottom: 0;
height: 1px;
width: calc(100% - 10px);
2018-01-25 03:31:27 +01:00
border-bottom: 1px solid $box-border-color;
}
&:first-child, &:last-child {
border-radius: $border-radius;
2018-01-24 04:57:24 +01:00
}
&:last-child {
&:before {
border: none;
height: 0;
}
}
&:after {
content: "";
display: table;
clear: both;
}
&:hover, &:focus, &.active {
2018-01-25 03:31:27 +01:00
background-color: $box-background-hover-color;
2018-01-24 04:57:24 +01:00
}
2018-01-25 05:26:40 +01:00
&.pre {
white-space: pre;
overflow-x: auto;
}
2018-01-25 20:25:44 +01:00
.no-wrap {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
2018-01-26 04:54:09 +01:00
&.box-content-row-cf {
display: flex;
align-items: center;
width: 100%;
> a {
padding: 8px 10px 8px 5px;
color: $brand-danger;
}
> div {
width: 100%;
}
}
2018-01-25 22:15:47 +01:00
.row-label, label {
2018-01-24 04:57:24 +01:00
font-size: $font-size-small;
color: $text-muted;
display: block;
width: 100%;
margin-bottom: 5px;
}
2018-01-26 04:54:09 +01:00
&.box-content-row-checkbox, &.box-content-row-input, &.box-content-row-slider {
label, .row-label {
font-size: $font-size-base;
color: $text-color;
display: inline;
width: initial;
margin-bottom: 0;
float: left;
}
input.row-label {
width: calc(100% - 40px);
}
}
2018-01-25 22:15:47 +01:00
input:not([type="checkbox"]), select, textarea {
border: none;
width: 100%;
background-color: transparent;
&::-webkit-input-placeholder {
color: lighten($gray-light, 35%);
}
&:focus {
outline: none;
}
}
input[type="checkbox"] {
float: right;
display: inline-block;
2018-01-24 04:57:24 +01:00
}
2018-01-25 05:26:40 +01:00
.action-buttons {
float: right;
.row-btn {
float: left;
cursor: pointer;
padding: 10px 8px;
background: none;
border: none;
color: $brand-primary;
&:hover, &:focus {
color: darken($brand-primary, 10%);
}
&.disabled {
color: $list-icon-color;
&:hover {
color: $list-icon-color;
}
}
&:last-child {
padding-right: 2px !important;
}
}
}
2018-01-25 20:25:44 +01:00
2018-01-26 04:54:09 +01:00
select.field-type {
margin: 5px 0 0 25px;
width: calc(100% - 25px);
}
2018-01-26 04:59:41 +01:00
.right-icon, .fa-chevron-right {
2018-01-25 20:25:44 +01:00
float: right;
margin-top: 4px;
color: $list-icon-color;
}
.row-sub-label {
float: right;
display: block;
margin-right: 15px;
color: $gray-light;
}
small.row-sub-label {
margin-top: 2px;
}
2018-01-24 04:57:24 +01:00
}
}
.box-footer {
margin: 5px 10px;
font-size: $font-size-small;
color: $text-muted;
}
}
2018-01-25 05:26:40 +01:00
.totp {
.totp-code {
font-family: $font-family-monospace;
font-size: 1.1em;
}
.totp-countdown {
margin: 3px 3px 0 0;
display: block;
user-select: none;
float: right;
.totp-sec {
font-size: 0.85em;
position: absolute;
line-height: 32px;
width: 32px;
text-align: center;
}
svg {
width: 32px;
height: 32px;
transform: rotate(-90deg);
}
.totp-circle {
stroke: $brand-primary;
fill: none;
&.inner {
stroke-width: 3;
stroke-dasharray: 78.6;
stroke-dashoffset: 0;
}
&.outer {
stroke-width: 2;
stroke-dasharray: 88;
stroke-dashoffset: 0;
}
}
}
&.low {
.totp-sec, .totp-code {
color: $brand-danger;
}
.totp-circle {
stroke: $brand-danger;
}
}
}